Built motion from commit 5a2cfaad.|2.6.10
authorsupport <support@xcally.com>
Mon, 23 May 2022 07:17:54 +0000 (07:17 +0000)
committersupport <support@xcally.com>
Mon, 23 May 2022 07:17:54 +0000 (07:17 +0000)
1229 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/app/toolbar/i18n/en.json
public/app/toolbar/i18n/it.json
public/index.html
public/scripts/app.df55334b.js [moved from public/scripts/app.4f52941f.js with 55% similarity]
public/styles/app.6414467d.css [moved from public/styles/app.d45f5a7f.css with 98% 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 eb02baa..975e7a9 100644 (file)
@@ -17,7 +17,7 @@ define({
   "apidoc": "0.3.0",
   "generator": {
     "name": "apidoc",
-    "time": "2022-05-19T14:42:01.202Z",
+    "time": "2022-05-23T07:10:01.853Z",
     "url": "http://apidocjs.com",
     "version": "0.24.0"
   }
index 0bd9b32..9d59925 100644 (file)
@@ -17,7 +17,7 @@
   "apidoc": "0.3.0",
   "generator": {
     "name": "apidoc",
-    "time": "2022-05-19T14:42:01.202Z",
+    "time": "2022-05-23T07:10:01.853Z",
     "url": "http://apidocjs.com",
     "version": "0.24.0"
   }
index b061703..729f936 100644 (file)
@@ -1,8 +1,8 @@
 {
   "ERROR404": {
     "CODE": "404",
-    "MESSAGE": "Sorry but we couldn’t find the page you are looking for",
-    "SEARCH": "Search for anything",
-    "GO_BACK": "Go back to dashboard"
+    "MESSAGE": "Vabandame, otsitud lehekülge ei leitud",
+    "SEARCH": "Otsi mida tahes",
+    "GO_BACK": "Mine tagasi töölauale"
   }
 }
index b218b70..eb1d0e2 100644 (file)
@@ -1,11 +1,11 @@
 {
   "ERROR500": {
     "CODE": "500",
-    "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"
+    "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"
   }
 }
index 8a47415..ee6d003 100644 (file)
@@ -1,6 +1,6 @@
 {
   "FOOTER": {
-    "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>.",
+    "COOKIE_LAW": "Kasutame küpsiseid, et pakkuda Sulle parimat kogemust. Loe meie <a target=\"_blank\" href=\"https://wiki.xcallymotion.com/display/XMV/Cookie+Policy\" class=\"blue-fg\">cookie policy</a>.",
     "ERRORS": {}
   }
 }
index be7b81a..dc70b81 100644 (file)
@@ -1,15 +1,15 @@
 {
   "FORGOTPASSWORD": {
-    "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",
+    "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",
     "ERRORS": {
-      "EMAIL_REQUIRED": "Mandatory field",
-      "EMAIL_MUST_VALID": "Wrong format"
+      "EMAIL_REQUIRED": "Kohustuslik väli",
+      "EMAIL_MUST_VALID": "Vale formaat"
     }
   }
 }
index f78785b..1f1d597 100644 (file)
@@ -1,6 +1,6 @@
 {
   "HEADER": {
-    "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.",
+    "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.",
     "ERRORS": {}
   }
 }
index e371b06..4eb3084 100644 (file)
@@ -1,26 +1,26 @@
 {
   "LOGIN": {
-    "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",
+    "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",
     "ERRORS": {
-      "EMAIL_REQUIRED": "Mandatory field",
-      "EMAIL_MUST_VALID": "Wrong format",
-      "PASSWORD_REQUIRED": "Mandatory field",
-      "USERNAME_REQUIRED": "Mandatory field"
+      "EMAIL_REQUIRED": "Kohustuslik väli",
+      "EMAIL_MUST_VALID": "Vale formaat",
+      "PASSWORD_REQUIRED": "Kohustuslik väli",
+      "USERNAME_REQUIRED": "Kohustuslik väli"
     },
-    "WITH_AD": "Logige sisse Active Directoryga"
+    "WITH_AD": "Logi sisse Active Directory kontoga"
   }
 }
index 6d01d84..8d3f3e2 100644 (file)
@@ -1,88 +1,88 @@
 {
   "ANALYTICS": {
-    "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",
+    "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",
     "ERRORS": {
-      "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"
+      "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"
     },
-    "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",
+    "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",
     "OF": "of",
     "WEB_REPORT": "Veebiaruanne"
   }
index 8b74f11..2389db1 100644 (file)
 {
   "CALLYSQUARE": {
-    "ACCOUNT_ID": "Account",
-    "ADDUSER_PROJECTS": "Add Users to Project",
-    "ADD_ODBC": "Add ODBC",
-    "ADD_PROJECT": "Add Project",
-    "ADD_VARIABLE": "Add Variable",
-    "AGENTS": "Agents",
+    "ACCOUNT_ID": "Konto",
+    "ADDUSER_PROJECTS": "Lisa Kasutajad Projekti",
+    "ADD_ODBC": "Lisa ODBC",
+    "ADD_PROJECT": "Lisa Projekt",
+    "ADD_VARIABLE": "Lisa Muutuja",
+    "AGENTS": "Agendid",
     "AGI": "AGI",
-    "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",
+    "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",
     "AUDIO": "Audio",
     "AUDIOENCODING": "Heli kodeerimine",
     "AWSLEX": "Amazon Lex",
-    "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",
+    "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",
     "BCC": "BCC",
-    "BEEP": "Beep",
+    "BEEP": "Piiks",
     "BODY": "Keha",
-    "CALLBACK": "Callback",
-    "CALLBACK_PRIORITY": "Priority",
+    "CALLBACK": "Tagasihelistamine",
+    "CALLBACK_PRIORITY": "Prioriteet",
     "CALLYSQUARE": "Cally Square",
-    "CC": "CC",
-    "CHOOSE_ATTACHMENT": "Choose Attachment",
-    "CLOSE": "Close",
-    "COMMAND": "Command",
+    "CC": "Koop",
+    "CHOOSE_ATTACHMENT": "Vali Manus",
+    "CLOSE": "Sule",
+    "COMMAND": "Käsk",
     "COMPUTEDVARIABLES": "Arvutatud muutujate skripti tee",
-    "CONDITION": "Condition",
-    "CONTEXT": "Context",
-    "COPY": "Copy",
-    "COPY_PROJECT": "Copy Project",
-    "CREATED_AT": "Created At",
+    "CONDITION": "Tingimus",
+    "CONTEXT": "Kontekst",
+    "COPY": "Koopia",
+    "COPY_PROJECT": "Kopeeri Projekt",
+    "CREATED_AT": "Loomisaeg",
     "CUSTOM_ACTION": "Kohandatud toiming",
     "CUSTOM_ACTION_DATA": "Kohandatud toimingu andmed",
-    "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",
+    "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",
     "DSN": "DSN",
-    "EDIT": "Edit",
-    "EDIT_ODBC": "Edit ODBC",
-    "EDIT_PROJECT": "Edit Project",
-    "EDIT_SQUARERECORDING": "Edit Square Recording",
-    "EDIT_XML": "Edit XML",
-    "END": "End",
+    "EDIT": "Redigeeri",
+    "EDIT_ODBC": "Redigeeri ODBC",
+    "EDIT_PROJECT": "Redigeeri Projekti",
+    "EDIT_SQUARERECORDING": "Redigeeri Ruutformaadis Salvestust",
+    "EDIT_XML": "Redigeeri XMLi",
+    "END": "Lõpeta",
     "ERRORS": {
-      "DSN_REQUIRED": "Mandatory field",
-      "FIELD_REQUIRED": "Mandatory field",
-      "NAME_REQUIRED": "Mandatory field",
-      "PROJECT_REQUIRED": "Mandatory field",
+      "DSN_REQUIRED": "Kohustuslik väli",
+      "FIELD_REQUIRED": "Kohustuslik väli",
+      "NAME_REQUIRED": "Kohustuslik väli",
+      "PROJECT_REQUIRED": "Kohustuslik väli",
       "URL_REQUIRED": "Kohustuslik väli"
     },
-    "ESCAPE_DIGITS": "Escape Digits",
+
+    "ESCAPE_DIGITS": "Väldi numbrimärke",
     "EXTEN": "Exten",
-    "EXTENSION": "Extension",
-    "EXT_DIAL": "External Dial",
-    "FILE": "Filename",
-    "FILENAME": "Filename",
+    "EXTENSION": "Laiendus",
+    "EXT_DIAL": "Väline Helistamine",
+    "FILE": "Faili nimi",
+    "FILENAME": "Faili nimi",
     "FILE_ID": "Audio",
     "FINALLY": "Finally",
-    "FINDBY": "Find By",
-    "GETDIGITS": "Get Digits",
-    "GETSECRETDIGITS": "Get Secret Digits",
-    "GOAL": "Goal",
-    "GOALNAME": "Goal Name",
+    "FINDBY": "Otsitav",
+    "GETDIGITS": "Hangi Numbrimärgid",
+    "GETSECRETDIGITS": "Hangi Salanumbrid",
+    "GOAL": "Eesmärk",
+    "GOALNAME": "Eesmärgi Nimi",
     "GOOGLEASR": "GoogleASR",
-    "GOOGLE_ASR_LANGUAGE": "Language",
+    "GOOGLE_ASR_LANGUAGE": "Keel",
     "GOOGLE_CLOUD_TTS": "Google Cloud TTS",
     "GOOGLE_CLOUD_TTS_TEXT_TYPE": "Teksti tüüp",
-    "GOOGLE_TTS_LANGUAGE": "Language",
+    "GOOGLE_TTS_LANGUAGE": "Keel",
     "GOSUB": "GoSub",
     "GOTOC": "GoTo",
     "GOTOIF": "GoToIf",
     "GOTOIFTIME": "GoToIfTime",
-    "GO_TO_PROJECTS": "Go to projects",
-    "GRAMMAR": "Grammar",
-    "HANGUP": "Hangup",
+    "GO_TO_PROJECTS": "Mine projektide juurde",
+    "GRAMMAR": "Grammatika",
+    "HANGUP": "Lõpeta kõne",
     "HEADERS": "Päised",
     "HELP": {
-      "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",
+      "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",
       "MAILBOX": "mailbox@context",
       "MAX_TEXT_TTS": "Toetatavate tähemärkide maksimaalne arv on 200",
-      "TO": "You can add multiple addresses separated by commas (e.g. john.doe@xcally.com, jane.miller@xcally.com)"
+      "TO": "Saad lisada mitu aadressi komadega eraldatult (näiteks john.doe@xcally.com, jane.miller@xcally.com)"
     },
-    "HIDDENDIGITSNUM": "Hiddden Digits Number",
-    "HIDDENDIGITSPOS": "hidden Digits Position",
-    "ID": "Id",
-    "IMPORT": "Import",
-    "IMPORT_XML": "Import XML",
-    "INTERVAL_ID": "Interval",
-    "INTKEY": "Interrupt Key",
+    "HIDDENDIGITSNUM": "Peidetud Numbrimärkide Arv",
+    "HIDDENDIGITSPOS": "Peidetud Numbrimärkide Asukoht",
+    "ID": "ID",
+    "IMPORT": "Impordi",
+    "IMPORT_XML": "Impordi XML",
+    "INTERVAL_ID": "Intervall",
+    "INTKEY": "Katkestusklahv",
     "ISPEECHASR": "iSpeech ASR",
     "ISPEECHTTS": "iSpeech Text-To-Speech",
-    "ISPEECH_ASR_LANGUAGE": "Language",
-    "ISPEECH_TTS_LANGUAGE": "Language",
-    "KEY": "Key",
-    "LABEL": "Label",
+    "ISPEECH_ASR_LANGUAGE": "Keel",
+    "ISPEECH_TTS_LANGUAGE": "Keel",
+    "KEY": "Võti",
+    "LABEL": "Sedel",
     "LANGUAGECODE": "Keelekood",
-    "LASTNAME": "Last Name",
-    "LIST_ID": "List",
-    "LOGIN": "Login",
-    "LOGOUT": "Logout",
+    "LASTNAME": "Perekonnanimi",
+    "LIST_ID": "Loend",
+    "LOGIN": "Logi sissse",
+    "LOGOUT": "Logi välja",
     "LUMENVOXASR": "Lumenvox ASR",
     "LUMENVOXTTS": "Lumenvox Text-To-Speech",
-    "MACRO": "Macro",
-    "MAILBOX": "Mailbox",
-    "MATH": "Math",
-    "MAXDIGIT": "Maximum Digits",
-    "MENU": "Menu",
+    "MACRO": "Makro",
+    "MAILBOX": "Postkast",
+    "MATH": "Matemaatika",
+    "MAXDIGIT": "Maks. numbrimärke",
+    "MENU": "Manüü",
     "METHOD": "Meetod",
-    "MINDIGIT": "Minimum Digits",
-    "MODEL": "Model",
+    "MINDIGIT": "Min. numbrimärke",
+    "MODEL": "Mudel",
     "MRCPRECOG": "MRCPRecog",
-    "MRCPSYNTH": "MRCPSünth",
-    "NAME": "Name",
+    "MRCPSYNTH": "MRCPSynth",
+    "NAME": "Nimi",
     "NDAACTIVITY_TYPE": "Tegevuse tüüp",
     "NDAGENERATE_AUDIO": "Loo helifail",
-    "NDASSISTANT_URL": "NDASSISTANT URL",
+    "NDASSISTANT_URL": "NDASSISTANTi URL",
     "NDAUTH_URL": "NDAUTHi URL",
-    "NEW": "New",
-    "NEW_ODBC": "New ODBC connection",
-    "NEW_PROJECT": "New Project",
-    "NEW_VARIABLE": "New Variable",
+    "NEW": "Uus",
+    "NEW_ODBC": "Uus ODBC ühendus",
+    "NEW_PROJECT": "Uus Projekt",
+    "NEW_VARIABLE": "Uus Muutuja",
     "NOOP": "NoOp",
-    "NOTES": "Notes",
-    "NO_AVAILABLE_INFO": "No available info",
+    "NOTES": "Märkmed",
+    "NO_AVAILABLE_INFO": "Teave pole saadaval",
     "NUMBER": "Number",
     "ODBC": "ODBC",
-    "ODBC_ID": "ODBC Connection",
+    "ODBC_ID": "ODBC Ühendus",
     "OF": "of",
-    "OPEN": "Open",
-    "OPEN_NEW_WINDOW": "Open in a new window",
-    "OPEN_PROJECT": "Open Project",
-    "OPERATION": "Operation",
-    "OPTIONS": "Options",
-    "OPTS": "Options",
-    "OUTPUT": "Output",
-    "PAGE": "Page",
+    "OPEN": "Ava",
+    "OPEN_NEW_WINDOW": "Ava uues aknas",
+    "OPEN_PROJECT": "Ava Projekt",
+    "OPERATION": "Toiming",
+    "OPTIONS": "Suvandid",
+    "OPTS": "Suvandid",
+    "OUTPUT": "Väljund",
+    "PAGE": "Lehekülg",
     "PASSWORD": "Parool",
-    "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",
+    "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",
     "RAWBODY": "Keha",
     "RAWHEADERS": "Päised",
-    "RECORD": "Record",
-    "RECORDINGFORMAT": "Recording Format",
-    "RESPONSE": "Response Timeout",
+    "RECORD": "Salvestamine",
+    "RECORDINGFORMAT": "Salvestuse formaat",
+    "RESPONSE": "Reaktsiooniaja Aegumine",
     "RESTAPI": "Puhkuse API",
-    "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",
+    "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",
     "SESTEKASR": "Sestek ASR",
     "SESTEKNDA": "Sestek NDA",
     "SESTEKTTS": "Sestek TTS",
-    "SET": "Set",
+    "SET": "Hulk",
     "SIP_ID": "SIP",
-    "SMS_ACCOUNT_ID": "Account",
-    "SMS_TEXT": "Text",
-    "SPEED": "Speed",
-    "SQUARERECORDINGS": "Recordings",
+    "SMS_ACCOUNT_ID": "Konto",
+    "SMS_TEXT": "Tekst",
+    "SPEED": "Kiirus",
+    "SQUARERECORDINGS": "Salvestused",
     "SSMLGENDER": "Sugu",
     "START": "Start",
-    "SUBJECT": "Subject",
-    "SUBPROJECT": "Sub Project",
-    "SYSTEM": "System",
-    "TELEPHONES": "Telephones",
-    "TEMPLATE_ID": "Template",
+    "SUBJECT": "Subjekt",
+    "SUBPROJECT": "Alamprojekt",
+    "SYSTEM": "Süsteem",
+    "TELEPHONES": "Telefonid",
+    "TEMPLATE_ID": "Mall",
     "TEST_ODBC": "Test ODBC",
-    "TEXT": "Text",
+    "TEXT": "Tekst",
     "TILDEASR": "Tilde ASR",
-    "TIMEOUT": "Timeout",
-    "TO": "To",
-    "TRUNK_NAME": "Trunk",
+    "TIMEOUT": "Aegumine",
+    "TO": "Kellele",
+    "TRUNK_NAME": "Magistraal",
     "TTS": "Google Text-To-Speech",
-    "UNIQUEID": "Unique ID",
-    "UNPAUSE": "End Pause",
-    "UPDATE_DESCRIPTION": "Update Description",
-    "UPDATE_INFO": "Update Info",
+    "UNIQUEID": "Unikaalne ID",
+    "UNPAUSE": "Lõpeta Paus",
+    "UPDATE_DESCRIPTION": "Uuenda Kirjeldust",
+    "UPDATE_INFO": "Uuenda Infot",
     "URI": "URI",
     "URL": "URL",
     "USERNAME": "Kasutajanimi",
-    "USERS": "Users",
-    "VARIABLE_ID": "Variable",
-    "VARIABLE_VALUE": "Value",
-    "VOICEMAIL": "Voicemail",
-    "VSWITCH": "Variable Switch",
+    "USERS": "Kasutajad",
+    "VARIABLE_ID": "Muutuja",
+    "VARIABLE_VALUE": "Väärtus",
+    "VOICEMAIL": "Kõnepost",
+    "VSWITCH": "Muutuja Vahetus",
     "CLIENT_EMAIL": "Kliendi e-post",
-    "DIALOGFLOWV2": "DialoogivoogV2",
+    "DIALOGFLOWV2": "Dialoogivoog V2",
     "DIALOGFLOWV2_LANGUAGE": "Keel",
     "DIALOGFLOWV2_PROJECT_ID": "Projekti ID",
     "PRIVATE_KEY": "Privaatne võti",
index 2f3b48e..5dc84d3 100644 (file)
 {
   "CHAT": {
-    "EDIT_AMAZONLEX": "Edit Amazon Lex",
+    "EDIT_AMAZONLEX": "Redigeeri Amazon Lexi",
     "AMAZONLEX": "Amazon Lex",
-    "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",
+    "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",
     "ALIAS": "Alias",
-    "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",
+    "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",
     "ERRORS": {
-      "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",
+      "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",
       "MOTIONADDRESS_MUST_VALID_URL": "Wrong format",
-      "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",
+      "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",
       "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": "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",
+    "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",
     "AGENT": "Agent",
     "GOTO": "Goto",
     "GOTOIF": "GotoIf",
     "NOOP": "Noop",
-    "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",
+    "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",
     "LOGO": "Logo",
-    "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",
+    "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",
     "HELP": {
-      "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"
+      "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"
     },
-    "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",
+    "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",
     "OF": "of",
-    "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",
+    "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",
     "FILTER": "Filter",
-    "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",
+    "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",
     "GOTOP": "Gotop",
-    "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",
+    "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",
     "ENABLESENDBUTTON": "Luba nupp Saada",
     "FEEDBACKTITLE": "Tagasiside pealkiri",
     "LASTMESSAGE": "Viimane teade",
-    "MANDATORYDISPOSITION": "Kohustuslik käsutamine",
-    "MANDATORYDISPOSITIONPAUSEID": "Kasutamise peatamine, kui kohustuslik käsutamine on lubatud",
-    "TEAMS_ASSOCIATION": "Võistkondade liit",
+    "MANDATORYDISPOSITION": "Kohustuslik kasutamine",
+    "MANDATORYDISPOSITIONPAUSEID": "Kasutamise peatamine, kui kohustuslik kasutamine on lubatud",
+    "TEAMS_ASSOCIATION": "Tiimide 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": "Konserveeritud vastuseid ei leitud",
-    "NOTE": "Märge",
+    "CANNED_ANSWER_NOT_FOUND": "Salvestatud vastuseid ei leitud",
+    "NOTE": "Märkus",
     "VIDAOOMETADATA": "Vidaoo metaandmed",
     "VIDAOONOTE": "Vidaoo märkus",
     "VIDAOOTOPIC": "Vidaoo teema",
     "CHANNELID": "Kanali ID",
-    "EDIT_TVOX": "Muutke TVoxi",
+    "EDIT_TVOX": "Muuda 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 2592ba3..494d629 100644 (file)
 {
   "CONTACTMANAGER": {
-    "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",
+    "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",
     "HOPPER": "Hopper",
-    "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",
+    "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",
     "ERRORS": {
-      "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",
+      "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",
       "ACTIONTYPE_REQUIRED": "Kohustuslik väli",
       "CLICKTOACTION_REQUIRED": "Kohustuslik väli"
     },
-    "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",
+    "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",
     "ALIAS": "Alias",
-    "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",
+    "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",
     "JSCRIPTY": "Jscripty",
-    "SESSIONS": "Sessions",
+    "SESSIONS": "Sessioonid",
     "AGENT": "Agent",
-    "PROJECT": "Project",
-    "SELECT_LIST": "Select a list",
-    "SELECT_COMPANY": "Select a company",
-    "SELECT_TAGS": "Select one or more tags",
+    "PROJECT": "Projekt",
+    "SELECT_LIST": "Vali loend",
+    "SELECT_COMPANY": "Vali ettevõte",
+    "SELECT_TAGS": "Vali üks või enam silte",
     "HELP": {
-      "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"
+      "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"
     },
-    "PAGE": "Page",
-    "ROWSPERPAGE": "Rows per page",
+    "PAGE": "Lehekülg",
+    "ROWSPERPAGE": "Ridu leheküljel",
     "OF": "of",
-    "SOCIAL": "Social",
-    "ROW": "Row",
-    "EXPORT_ERRORS": "Export Errors",
-    "UPLOAD_COMPLETED": "Upload Completed",
-    "STOP": "Stop",
-    "SELECT_FILE": "Select File",
+    "SOCIAL": "Sotsiaalne",
+    "ROW": "Rida",
+    "EXPORT_ERRORS": "Ekspordi Vead",
+    "UPLOAD_COMPLETED": "Üleslaadimine Lõpetatud",
+    "STOP": "Peata",
+    "SELECT_FILE": "Vali Fail",
     "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",
-    "MOVE_DOWN": "Liigu alla",
-    "MOVE_UP": "Üles liikuma"
+    "TIMEZONE": "Vali ajavöönd"
   }
 }
index 0a5b7eb..739750c 100644 (file)
 {
   "DASHBOARDS": {
-    "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",
+    "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",
     "AUGUST": "August",
     "SEPTEMBER": "September",
-    "OCTOBER": "October",
+    "OCTOBER": "Oktoober",
     "NOVEMBER": "November",
-    "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",
+    "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",
     "AGENT": "Agent",
-    "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",
+    "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",
     "HELP": {
-      "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",
+      "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",
       "EXACT_MATCH_FILTER": "Täpse vaste otsimine",
       "LIKE_FILTER": "Otsige määratud mustrit",
-      "MANDATORY_DISPOSITION_ENABLED": "Selle konto jaoks on kohustuslik dispositsioon lubatud"
+      "MANDATORY_DISPOSITION_ENABLED": "Selle konto jaoks on kohustuslik suhtlus lubatud"
     },
     "ERRORS": {
-      "FIRSTNAME_REQUIRED": "Mandatory field",
-      "PHONE_REQUIRED": "Mandatory field",
-      "DISPOSITION_REQUIRED": "Mandatory field",
-      "AGENT_REQUIRED": "Mandatory field",
-      "QUEUE_REQUIRED": "Mandatory field",
+      "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",
       "CAMPAIGN_REQUIRED": "Kohustuslik väli",
       "FAILED_INITIALIZATION": "Viga lähtestamisel"
     },
-    "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",
+    "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",
     "OF": "of",
-    "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",
+    "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",
     "ACCOUNTINGDOC": "Raamatupidamine",
     "ADD_PRODUCTPRICELIST": "LISA TOODE",
     "ADVANCED_SEARCH": "Täpsem otsing",
     "BALANCE": "TASAKAAL",
     "BY": "Kõrval",
     "CANCEL": "Tühista",
-    "CHAT_INTERACTIONS": "Vestluse interaktsioonid",
+    "CHAT_INTERACTIONS": "Vestluse suhtlused",
     "CHOOSE": "Valige",
     "CLONEPROFORMA": "Kloon",
     "COMPANIES": "Ettevõtted",
     "DOSSIERNOTES": "Märge",
     "DOSSIERS": "Toimikud",
     "DOSSIER_INFO": "Teave",
-    "DOWNLOAD_WITHOUT_ATTACHMENTS": "Laadige alla ilma manusteta",
-    "DOWNLOAD_WITH_ATTACHMENTS": "Laadige alla koos manustega",
+    "DOWNLOAD_WITHOUT_ATTACHMENTS": "Laadi alla ilma manusteta",
+    "DOWNLOAD_WITH_ATTACHMENTS": "Laadi alla koos manustega",
     "DRAFT": "Mustand",
-    "DRAFT_SAVE_WARNING_MESSAGE": "Selle interaktsiooni jaoks on juba mustand salvestatud. Kas soovite selle kindlasti üle kirjutada?",
+    "DRAFT_SAVE_WARNING_MESSAGE": "Selle suhtluse jaoks on juba mustand salvestatud. Kas soovid 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 interaktsioonid",
+    "FAX_INTERACTIONS": "Faksi suhtlused",
     "FROM": "Alates",
     "GRAPHINVOICES": "Arve heitkoguste tabel",
-    "ID": "Id",
+    "ID": "ID",
     "INASSET": "Vara",
-    "INTERACTION_CLOSED": "Koostoime on korralikult suletud",
-    "INTERACTION_CLOSED_DISPOSED": "Koostoime on korralikult suletud ja hävitatud",
-    "INTERACTION_DISPOSED": "Koostoime on korralikult paigutatud",
+    "INTERACTION_CLOSED": "Suhtlus on korralikult suletud",
+    "INTERACTION_CLOSED_DISPOSED": "Suhtlus on korralikult suletud ja eemaldatud",
+    "INTERACTION_DISPOSED": "Suhtlus on korralikult eemaldatud",
     "INVOICE": "ARV",
     "INVOICEDETAILS": "ARVETE ÜKSIKASJAD",
     "INVOICEDISCOUNT": "Soodustus",
-    "INVOICEEMITED": "Välja antud",
+    "INVOICEEMITED": "Väljastatud",
     "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ähem kui",
+    "IS_LESS_THAN": "On väiksem 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 interaktsioonid",
+    "MAIL_INTERACTIONS": "E-posti suhtlused",
     "MANAGESALES": "Tellimused",
-    "MEET_ALL_CONDITIONS": "Täitke kõik tingimused",
-    "MEET_ANY_CONDITIONS": "Täitke vähemalt üks tingimus",
+    "MEET_ALL_CONDITIONS": "Täida kõik tingimused",
+    "MEET_ANY_CONDITIONS": "Täida vähemalt üks tingimus",
     "MOVEASSET": "VARA",
-    "MOVECREDITNOTE": "VÕI KREDIIDI MÄRKUS",
+    "MOVECREDITNOTE": "TEISALDA 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": "Pole saadaval interaktsiooni",
+    "NO_AVAILABLE_INTERACTION": "Suhtlus pole saadaval",
     "NO_PRODUCTINVOICE_AVAILABLE": "Pole toodet",
     "NO_PRODUCTPRICELIST_AVAILABLE": "Andmed puuduvad",
     "NO_PRODUCTPROFORMA_AVAILABLE": "Andmed puuduvad",
     "NUMBER": "Arv",
-    "OPENCHANNEL_INTERACTIONS": "Avage kanalite interaktsioonid",
+    "OPENCHANNEL_INTERACTIONS": "Avage kanalite suhtlused",
     "OPENDATE": "Avamiskuupäev",
     "ORDER": "Telli",
     "ORDERCLIENTCODE": "Kliendikood",
     "ORDERNOTES": "Märge",
     "ORDERSTATUS": "Osariik",
     "ORDER_INFO": "Telli",
-    "OVERWRITE": "Üle kirjutada",
+    "OVERWRITE": "Kirjuta üle",
     "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": "Valige ettevõte",
-    "SELECT_FIELD": "Valige väli",
+    "SELECT_COMPANY": "Vali ettevõte",
+    "SELECT_FIELD": "Vali väli",
     "SELECT_OPERATOR": "Valige operaator",
-    "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",
+    "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",
     "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-pistik",
-    "WHATSAPP_INTERACTIONS": "WhatsApi pistikühendused",
+    "WHATSAPP": "WhatsApp-ühendus",
+    "WHATSAPP_INTERACTIONS": "WhatsAppi suhtlused",
     "WORKFLOW": "Valige Töövoog",
-    "YEARS": "Aastaid",
+    "YEARS": "Aastad",
     "LAST_UPDATED": "Viimati uuendatud",
     "MATCHING_FIELD": "Vastav väli",
     "MULTIPLE_CONTACTS_FOUND": "Numbri jaoks leiti mitu kontakti",
-    "SELECT": "Valige",
-    "SELECT_CONTACT": "Valige kontakt",
-    "WHICH_ONE_TO_USE": "Kumba soovite kasutada?",
-    "NO_WHATSAPP_ACCOUNTS_AVAILABLE": "Whatsappi konto pole saadaval",
+    "SELECT": "Vali",
+    "SELECT_CONTACT": "Vali kontakt",
+    "WHICH_ONE_TO_USE": "Kumba soovid 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": "Teie litsents on aegumas! Võtke ühendust oma administraatoriga",
+    "LICENSE_EXPIRE_REMAINING_DAYS": "Sinu litsents on aegumas! Võta ü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 kogemine. Palun kontrollige oma Interneti-ühendust.",
+    "LOST_CONNECTION": "Võrguühendusprobleemide ilmnemine. Palun kontrolli oma internetiühendust.",
     "NO_RESULTS_AVAILABLE": "Tulemusi pole saadaval",
-    "AUTOCLOSE": "Pärast utiliseerimist sulgege kontaktikaart automaatselt",
+    "AUTOCLOSE": "Pärast eemaldamist sulgege kontaktikaart automaatselt",
     "AGENT_PRESENCE": "Agendi kohalolek",
-    "SELECT_TEAM": "Valige Meeskond",
+    "SELECT_TEAM": "Valige Tiim",
     "AVAILABLE": "Saadaval",
-    "CONFIRM": "Kinnitage",
+    "CONFIRM": "Kinnita",
     "FILTERS": "Filtrid",
     "FILTER_CHAT_WEBSITES": "Filtreeri vestluse veebisaite",
-    "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",
+    "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",
     "DIAL_TIMEZONE": "Vali ajavöönd",
     "LIMIT_TABS_REACHED": "Avatud vahelehtede maksimaalne arv on täis",
     "LIST_NAME": "Loendi nimi",
     "PREVIEW_CALL": "Kõne eelvaade",
-    "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"
+    "PREVIEW_CALL_FOR": "Tulevane eelvaatekutse",
+    "SCHEDULED_AT": "kavas kl",
+    "SYSTEM_TIME": "Süsteemi aeg"
   }
 }
index 7e03440..fd6d9b8 100644 (file)
 {
   "FAX": {
-    "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",
+    "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",
     "GOTOIF": "GotoIf",
     "GOTOP": "GotoP",
     "NOOP": "Noop",
     "AGENT": "Agent",
-    "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",
+    "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",
     "ERRORS": {
-      "QUEUETRANSFERTIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "The value must be less than or equal to",
-      "QUEUETRANSFERTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
-      "QUEUETRANSFERTIMEOUT_REQUIRED": "Mandatory Field",
-      "AGENTTRANSFERTIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "The value must be less than or equal to",
-      "AGENTTRANSFERTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
-      "AGENTTRANSFERTIMEOUT_REQUIRED": "Mandatory Field",
-      "TAG_REQUIRED": "Mandatory Field",
-      "WAITFORTHEASSIGNEDAGENT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "The value must be less than or equal to",
-      "WAITFORTHEASSIGNEDAGENT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
-      "WAITFORTHEASSIGNEDAGENT_REQUIRED": "Mandatory Field",
-      "AGENT_TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "The value must be less than or equal to",
-      "TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "The value must be less than or equal to",
-      "AGENT_TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
-      "NAME_MUST_VALID_PATTERN": "Wrong format",
-      "COMMAND_REQUIRED": "Mandatory Field",
-      "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"
+      "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"
     },
-    "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",
+    "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",
     "HELP": {
-      "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"
+      "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"
     },
-    "ADVANCED": "Advanced",
+    "ADVANCED": "Täpsem",
     "ECM": "ECM",
-    "MINRATE": "Min Rate",
-    "MAXRATE": "Max Rate",
+    "MINRATE": "Min Määr",
+    "MAXRATE": "Maks Määr",
     "MODEM": "Modem",
-    "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",
+    "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",
     "OF": "of",
-    "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",
+    "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",
     "LASTMESSAGE": "Viimane teade",
-    "MANDATORYDISPOSITION": "Kohustuslik käsutamine",
-    "MANDATORYDISPOSITIONPAUSEID": "Peatage olek kohustusliku dispositsiooni korral",
-    "TEAMS_ASSOCIATION": "Võistkondade liit",
+    "MANDATORYDISPOSITION": "Kohustuslik kasutamine",
+    "MANDATORYDISPOSITIONPAUSEID": "Peatage olek kohustusliku kasutamise korral",
+    "TEAMS_ASSOCIATION": "Tiimide liit",
     "TOOLTIP_SCREENRECORDING_OFF": "Ekraanisalvestus on saadaval",
     "TOOLTIP_SCREENRECORDING_ON": "Ekraanisalvestus pooleli"
   }
index 4c1be43..b43fb9a 100644 (file)
@@ -1,8 +1,8 @@
 {
   "HELP": {
-    "ABOUT": "About",
-    "CONTACT_US": "Contact us",
-    "HELP": "Help",
-    "USEFUL_LINKS": "Useful links"
+    "ABOUT": "Kohta",
+    "CONTACT_US": "Võta meiega ühendust",
+    "HELP": "Abi",
+    "USEFUL_LINKS": "Kasulikud lingid"
   }
 }
index 0a98fe6..7444e6b 100644 (file)
@@ -1,54 +1,54 @@
 {
   "INTEGRATIONS": {
-    "ADVANCED": "Advanced",
-    "MODULE_SEARCH": "Module Search",
-    "MODULE_CREATE": "Module Create",
-    "INTEGRATIONS": "Integrations",
-    "ZENDESKACCOUNTS": "Zendesk Accounts",
-    "ID": "Id",
-    "NAME": "Name",
-    "USERNAME": "Username",
+    "ADVANCED": "Täpsem",
+    "MODULE_SEARCH": "Mooduli Otsing",
+    "MODULE_CREATE": "Mooduli Loomine",
+    "INTEGRATIONS": "Integreerimised",
+    "ZENDESKACCOUNTS": "Zendesk Kontod",
+    "ID": "ID",
+    "NAME": "Nimi",
+    "USERNAME": "Kasutajanimi",
     "URI": "URL",
-    "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",
+    "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",
     "ERRORS": {
-      "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",
+      "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",
       "CODE_REQUIRED": "Kohustuslik väli",
       "EMAIL_REQUIRED": "Kohustuslik väli",
       "TENANTID_REQUIRED": "Kohustuslik väli",
       "MODULECREATE_REQUIRED": "Kohustuslik väli"
     },
     "HELP": {
-      "MOTIONPROXYADDRESS": "Motion (Proxy) Address: it is reqired if you want to fill the ticket body with Recording URL. Enter the address in the following format: <protocol> : //<ipaddress>[:<port>]. Example: https://X.Y.Z.W",
+      "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",
       "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": "Valige domeenipõhiste Zoho-kontode aktiveerimiseks oma geograafiline tsoon (USA, AU, EL, IN, CN)",
+      "ZONE": "Vali 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",
-      "MODERN_AUTHENTICATION": "Lülitage sisse, et lubada kaasaegne autentimine"
+      "LEADID": "Välja ja juhtumi objektide linkimiseks kasutatav välja nimi"
     },
-    "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",
+    "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",
     "HOST": "Host",
-    "DELETE_ZOHOCONFIGURATION": "Delete Zoho Configuration",
-    "PAGE": "Page",
-    "ROWSPERPAGE": "Rows per page",
+    "DELETE_ZOHOCONFIGURATION": "Kustuta Zoho Konfiguratsioon",
+    "PAGE": "Lehekülg",
+    "ROWSPERPAGE": "Ridu lehekülje kohta",
     "OF": "of",
-    "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",
+    "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",
     "CASE": "Juhtum",
     "CODE": "Arendaja konsooli kood",
-    "CONTACTS": "Võtke ühendust",
-    "DELETE_DYNAMICS365ACCOUNT": "Kustutage Dynamics365 konto",
-    "DELETE_DYNAMICS365CONFIGURATION": "Kustutage Dynamics365 konfiguratsioon",
+    "CONTACTS": "Võta ühendust",
+    "DELETE_DYNAMICS365ACCOUNT": "Kustuta Dynamics365 konto",
+    "DELETE_DYNAMICS365CONFIGURATION": "Kustuta Dynamics365 konfiguratsioon",
     "DELETE_FRESHSALESACCOUNT": "Kustuta värskenduste konto",
-    "DELETE_FRESHSALESCONFIGURATION": "Kustutage värskenduste konfiguratsioon",
+    "DELETE_FRESHSALESCONFIGURATION": "Kustuta värskenduste konfiguratsioon",
     "DELETE_SERVICENOWACCOUNT": "Kustuta ServiceNow konto",
-    "DELETE_SERVICENOWCONFIGURATION": "Kustutage teenuseNow konfiguratsioon",
+    "DELETE_SERVICENOWCONFIGURATION": "Kustuta ServiceNow konfiguratsioon",
     "DYNAMICS365ACCOUNTS": "Dynamics365 kontod",
-    "EDIT_DYNAMICS365ACCOUNT": "Muutke rakenduse Dynamics365 kontot",
-    "EDIT_FRESHSALESACCOUNT": "Redigeeri värskenduste kontot",
-    "EDIT_FRESHSALESCONFIGURATION": "Redigeeri värskenduste konfiguratsiooni",
-    "EDIT_SERVICENOWACCOUNT": "Teenuse ServiceNow konto muutmine",
+    "EDIT_DYNAMICS365ACCOUNT": "Muuda rakenduse Dynamics365 kontot",
+    "EDIT_FRESHSALESACCOUNT": "Redigeeri Freshsales kontot",
+    "EDIT_FRESHSALESCONFIGURATION": "Redigeeri Freshsales konfiguratsiooni",
+    "EDIT_SERVICENOWACCOUNT": "Redigeeri ServiceNow kontot",
     "EMAIL": "E-post",
-    "FRESHSALESACCOUNTS": "Värske müügi kontod",
-    "LEADS": "Plii",
+    "FRESHSALESACCOUNTS": "Freshsales kontod",
+    "LEADS": "Vihjed",
     "MODULECREATE": "Mooduli loomine",
     "NEW_DYNAMICS365ACCOUNT": "Uus Dynamics365 konto",
-    "NEW_DYNAMICS365CONFIGURATION": "Looge Dynamics365 konfiguratsioon",
-    "NEW_FRESHSALESACCOUNT": "Uus värskete müügi konto",
-    "NEW_FRESHSALESCONFIGURATION": "Uus värskenduste konfiguratsioon",
+    "NEW_DYNAMICS365CONFIGURATION": "Loo Dynamics365 konfiguratsioon",
+    "NEW_FRESHSALESACCOUNT": "Uus Freshsales konto",
+    "NEW_FRESHSALESCONFIGURATION": "Uus Freshsales konfiguratsioon",
     "NEW_SERVICENOWACCOUNT": "Uus ServiceNow konto",
-    "NEW_SERVICENOWCONFIGURATION": "Looge teenuseNow konfiguratsioon",
-    "NO_FRESHSALESCONFIGURATION_AVAILABLE": "Värske müügi konfiguratsioone pole saadaval",
+    "NEW_SERVICENOWCONFIGURATION": "Loo ServiceNow konfiguratsioon",
+    "NO_FRESHSALESCONFIGURATION_AVAILABLE": "Freshsales konfiguratsioonid pole saadaval",
     "PHONECALL": "Telefonikõne",
-    "REFRESHTOKEN": "Värskenda luba (loodud)",
+    "REFRESHTOKEN": "Värskenda luba",
     "SERVICENOWACCOUNTS": "ServiceNow kontod",
     "TASK": "Ülesanne",
-    "TENANTID": "Üürniku ID",
-    "TEST_DYNAMICS365ACCOUNT": "Testige Dynamics365 kontot",
-    "TEST_FRESHSALESACCOUNT": "Testige värskenduste kontot",
-    "TEST_SERVICENOWACCOUNT": "Test ServiceNow konto testimine",
+    "TENANTID": "Rentniku ID",
+    "TEST_DYNAMICS365ACCOUNT": "Testi Dynamics365 kontot",
+    "TEST_FRESHSALESACCOUNT": "Testi Freshsales kontot",
+    "TEST_SERVICENOWACCOUNT": "Testi ServiceNow kontot",
     "TICKETTYPE": "Pileti tüüp",
     "ZONE": "Tsoon",
     "ADDITIONALSEARCHACCOUNT": "Täiendav otsingukonto",
     "ADDITIONALSEARCHCONTACT": "Täiendav otsingu kontakt",
-    "ADDITIONALSEARCHLEAD": "Täiendav otsingujuht",
-    "LEADID": "Plii ID",
-    "DYNAMIC365CONTACT": "Võtke ühendust",
-    "DYNAMIC365NOTHING": "Mitte midagi",
-    "MODERN_AUTHENTICATION": "Kaasaegne autentimine",
-    "OPENNEWTAB": "Ava uus vaheleht"
+    "ADDITIONALSEARCHLEAD": "Täiendav otsinguvihje",
+    "LEADID": "Vihje ID"
   }
 }
index 054f558..0aa355b 100644 (file)
 {
   "JSCRIPTY": {
-    "CLONE_PROJECT": "Clone Project",
-    "NAME": "Name",
-    "SEARCH_FOR_ANYONE": "Search",
-    "BACK": "Back",
-    "SELECTED": "Selected",
-    "SELECT_ALL": "Select All",
-    "SELECT_NONE": "Select None",
-    "DESCRIPTION": "Description",
+    "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",
     "ERRORS": {
-      "NAME_REQUIRED": "Mandatory field",
-      "PROJECT_REQUIRED": "Mandatory field",
-      "FIELD_REQUIRED": "Mandatory field",
-      "NAME_MUST_VALID_PATTERN": "Wrong format"
+      "NAME_REQUIRED": "Kohustuslik väli",
+      "PROJECT_REQUIRED": "Kohustuslik väli",
+      "FIELD_REQUIRED": "Kohustuslik väli",
+      "NAME_MUST_VALID_PATTERN": "Vale formaat"
     },
-    "SAVE": "Save",
-    "PROJECTS": "Projects",
-    "ADD_PROJECT": "Add Project",
-    "EDIT_PROJECT": "Edit Project",
-    "DELETE_PROJECT": "Delete Project",
+    "SAVE": "Salvesta",
+    "PROJECTS": "Projektid",
+    "ADD_PROJECT": "Lisa Projekt",
+    "EDIT_PROJECT": "Redigeeri Projekti",
+    "DELETE_PROJECT": "Kustuta Projekt",
     "JSCRIPTY": "Jscripty",
-    "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",
+    "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",
     "HELP": {
-      "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"
+      "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"
     },
-    "PAGE": "Page",
-    "ROWSPERPAGE": "Rows per page",
+    "PAGE": "Lehekülg",
+    "ROWSPERPAGE": "Ridu lehekülje kohta",
     "OF": "of",
-    "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"
+    "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"
   },
   "mwForm": {
     "form": {
-      "name": "Title",
-      "name.placeholder": "Form title",
-      "description": "Description"
+      "name": "Pealkiri",
+      "name.placeholder": "Vormi pealkiri",
+      "description": "Kirjeldus"
     },
     "buttons": {
-      "addPage": "Add page",
-      "moveDown": "Move down",
-      "moveUp": "Move up",
-      "removePage": "Remove page",
-      "remove": "Remove",
-      "addElement": "Add element",
-      "questionReady": "Ready",
-      "next": "Next",
-      "back": "Back",
-      "submit": "Submit",
-      "begin": "Begin",
-      "fold": "Fold",
-      "unfold": "Unfold",
-      "edit": "Edit",
-      "clone": "Clone",
-      "view": "View"
+      "addPage": "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"
     },
     "page": {
       "tab": {
-        "heading": "Page {{page}} of {{allPages}}"
+        "heading": "Lehekülg {{lehekülg}} {{kõikidest Lehekülgedest}}"
       },
       "elements": {
-        "empty": "Empty page"
+        "empty": "Tühi lehekülg"
       },
-      "pageWithNameCheckbox": "named",
-      "name": "Page name"
+      "pageWithNameCheckbox": "nimetatud",
+      "name": "Lehekülje nimi"
     },
     "pageFlow": {
-      "afterPage": "After page {{page}}:",
-      "afterQuestionAnswer": "Go to page based on answer",
-      "goToPage": "Go to page {{page.number}}",
-      "goToNextPage": "Continue to next page",
-      "submitForm": "Submit form"
+      "afterPage": "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"
     },
     "elements": {
-      "question": "Question",
-      "image": "Image",
-      "paragraph": "Paragraph"
+      "question": "Küsimus",
+      "image": "Pilt",
+      "paragraph": "Lõik"
     },
     "question": {
       "types": {
         "text": {
-          "name": "Short text"
+          "name": "Lühike tekst"
         },
         "textarea": {
-          "name": "Long text"
+          "name": "Pikk tekst"
         },
         "radio": {
-          "name": "Radio"
+          "name": "Raadio"
         },
         "select": {
-          "name": "Select"
+          "name": "Vali"
         },
         "checkbox": {
-          "name": "Checkboxes"
+          "name": "Märkeruudud"
         },
         "grid": {
-          "name": "Grid"
+          "name": "Ruudustik"
         },
         "priority": {
-          "name": "Priority"
+          "name": "Prioriteet"
         },
         "division": {
-          "name": "Division"
+          "name": "Jaotus"
         },
         "number": {
           "name": "Number"
         },
         "date": {
-          "name": "Date"
+          "name": "Kuupäev"
         },
         "datetime": {
-          "name": "Datetime"
+          "name": "Kuupäev ja kellaaeg"
         },
         "time": {
-          "name": "Time"
+          "name": "Kellaaeg"
         },
         "email": {
-          "name": "Email"
+          "name": "E-post"
         },
         "range": {
-          "name": "Range"
+          "name": "Vahemik"
         },
         "url": {
           "name": "URL"
         }
       },
-      "text": "Question text",
-      "type": "Question type",
-      "required": "Required",
+      "text": "Küsimuse tekst",
+      "type": "Küsimuse tüüp",
+      "required": "Nõutud",
       "preview": {
-        "text": "Short answer text",
-        "textarea": "Long answer text",
-        "otherAnswer": "Other"
+        "text": "Lühivastuse tekst",
+        "textarea": "Pika vastuse tekst",
+        "otherAnswer": "Muu"
       },
       "division": {
-        "quantity": "Quantity",
-        "unit": "Unit label",
-        "assignedSumLabel": "Assigned",
-        "fromRequiredLabel": "from required"
+        "quantity": "Kogus",
+        "unit": "Ühiku sedel",
+        "assignedSumLabel": "Määratud",
+        "fromRequiredLabel": "alates nõutavast"
       },
       "priority": {
-        "sorted": "Sorted",
-        "available": "Available",
-        "clickToAddItem": "Click to add item"
+        "sorted": "Sorditud",
+        "available": "Saadaval",
+        "clickToAddItem": "Kliki üksuse lisamiseks"
       },
       "grid": {
-        "cellInputType": "Cell input type",
+        "cellInputType": "Lahtri sisendi tüüp",
         "cellInputTypes": {
-          "radio": "Radio",
-          "checkbox": "Checkbox",
-          "text": "Text",
+          "radio": "Raadio",
+          "checkbox": "Märkeruut",
+          "text": "Tekst",
           "number": "Number",
-          "date": "Date",
-          "time": "Time"
+          "date": "Kuupäev",
+          "time": "Kellaaeg"
         },
-        "rowLabel": "Row {{row}}",
-        "clickToAddRow": "Click to add row",
-        "columnLabel": "Column {{col}}",
-        "clickToAddColumn": "Click to add column"
+        "rowLabel": "Rida {{rida}}",
+        "clickToAddRow": "Kliki rea lisamiseks",
+        "columnLabel": "Veerg {{veerg}}",
+        "clickToAddColumn": "Kliki veeru lisamiseks"
       },
       "range": {
-        "from": "Range from",
-        "to": "to"
+        "from": "Vahemik alates",
+        "to": "kuni"
       },
       "number": {
         "min": "Min",
-        "max": "Max"
+        "max": "Maks"
       },
-      "orLabel": "or ",
-      "otherLabel": "Other: ",
-      "userAnswer": "User answer",
+      "orLabel": "või ",
+      "otherLabel": "Muu: ",
+      "userAnswer": "Kasutaja vastus",
       "buttons": {
-        "addOption": "Click to add option",
-        "addOther": "Add 'Other'"
+        "addOption": "Kliki valiku lisamiseks",
+        "addOther": "Lisa 'Muu'"
       }
     },
     "image": {
-      "selectImageButton": "Select image",
-      "caption": "Image caption"
+      "selectImageButton": "Vali pilt",
+      "caption": "Pildi pealdis"
     },
     "paragraph": {
-      "placeholder": "Enter paragraph text"
+      "placeholder": "Sisesta lõigu tekst"
     },
     "confirmationPage": {
-      "title": "Confirmation page",
-      "customMessage": "Custom confirmation message",
-      "defaultMessage": "Your response has been saved",
-      "errorMessage": "Error! Your response has not been saved",
-      "pendingMessage": "Your response is being saved"
+      "title": "Kinnituse lehekülg",
+      "customMessage": "Kohandatud kinnitussõnum",
+      "defaultMessage": "Sinu vastus on salvestatud",
+      "errorMessage": "Viga! Sinu vastust ei salvestatud",
+      "pendingMessage": "Sinu vastust salvestatakse"
     }
   }
 }
index 6a860d9..9c16790 100644 (file)
 {
   "MAIL": {
-    "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",
+    "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",
     "ERRORS": {
-      "QUEUETRANSFERTIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "The value must be less than or equal to",
-      "QUEUETRANSFERTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
-      "QUEUETRANSFERTIMEOUT_REQUIRED": "Mandatory Field",
-      "AGENTTRANSFERTIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "The value must be less than or equal to",
-      "AGENTTRANSFERTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
-      "AGENTTRANSFERTIMEOUT_REQUIRED": "Mandatory Field",
-      "TAG_REQUIRED": "Mandatory Field",
-      "WAITFORTHEASSIGNEDAGENT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "The value must be less than or equal to",
-      "WAITFORTHEASSIGNEDAGENT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
-      "WAITFORTHEASSIGNEDAGENT_REQUIRED": "Mandatory Field",
-      "AGENT_TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "The value must be less than or equal to",
-      "TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "The value must be less than or equal to",
-      "AGENT_TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
-      "NAME_MUST_VALID_PATTERN": "Wrong format",
-      "COMMAND_REQUIRED": "Mandatory Field",
-      "FONT_SIZE_REQUIRED": "Mandatory Field",
-      "FONT_SIZE_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
-      "FONT_SIZE_MUST_BE_LESS_THAN_OR_EQUAL_TO": "The value must be less than or equal to",
-      "TEXT_MAX_LENGTH": "The value must have a maximum length equal to {{max}}",
-      "VALUE_REQUIRED": "Mandatory Field",
-      "TEXT_REQUIRED": "Mandatory Field",
-      "NAME_REQUIRED": "Mandatory Field",
-      "AGENT_TIMEOUT_REQUIRED": "Mandatory Field",
-      "EMAIL_ADDRESS_REQUIRED": "Mandatory Field",
-      "EMAIL_ADDRESS_MUST_VALID": "Wrong format",
-      "HOST_REQUIRED": "Mandatory Field",
-      "USERNAME_REQUIRED": "Mandatory Field",
-      "PORT_REQUIRED": "Mandatory Field",
-      "CONNTIMEOUT_REQUIRED": "Mandatory Field",
-      "AUTHTIMEOUT_REQUIRED": "Mandatory Field",
-      "ACCEPTURL_MUST_VALID_URL": "Wrong format",
-      "TIMEOUT_REQUIRED": "Mandatory Field",
-      "REJECTURL_MUST_VALID_URL": "Wrong format",
-      "CLOSEURL_MUST_VALID_URL": "Wrong format",
-      "AGENT_REQUIRED": "Mandatory Field",
-      "TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
-      "DISPOSITION_REQUIRED": "Mandatory Field",
-      "CONDITION_REQUIRED": "Mandatory Field",
-      "TRUEPRIORITY_REQUIRED": "Mandatory Field",
-      "FALSEPRIORITY_REQUIRED": "Mandatory Field",
-      "TRUEPRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
-      "FALSEPRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
-      "PRIORITY_REQUIRED": "Mandatory Field",
-      "PRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
-      "QUEUE_REQUIRED": "Mandatory Field",
-      "LIST_REQUIRED": "Mandatory Field",
-      "PASSWORD_REQUIRED": "Mandatory Field",
-      "SERVICE_REQUIRED": "Mandatory Field",
-      "IMAP_HOST_REQUIRED": "Mandatory Field",
-      "IMAP_PORT_REQUIRED": "Mandatory Field",
-      "SMTP_HOST_REQUIRED": "Mandatory Field",
-      "SMTP_PORT_REQUIRED": "Mandatory Field",
-      "CONFIRM_NOT_MATCH": "The passwords inserted don't match",
-      "KEY_MAX_LENGTH": "Key must have a maximum length equal to {{max}}",
-      "KEY_REQUIRED": "Mandatory Field",
+      "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",
       "MANDATORYDISPOSITIONPAUSEID_REQUIRED": "Kohustuslik väli",
       "REPLY_TYPE_REQUIRED": "Kohustuslik väli",
       "FIELD_REQUIRED": "Kohustuslik väli"
     },
-    "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",
+    "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",
     "IMAP": "IMAP",
     "HOST": "Host",
-    "USERNAME": "Username",
+    "USERNAME": "Kasutajanimi",
     "PORT": "Port",
-    "MAILBOX": "Mailbox",
-    "FILTER": "Filter",
-    "CONNTIMEOUT": "Connection Timeout [sec]",
-    "AUTHTIMEOUT": "Authentication Timeout [sec]",
-    "DELETE": "Delete Email From Server",
+    "MAILBOX": "Postkast",
+    "FILTER": "Filtreerimine",
+    "CONNTIMEOUT": "Ühenduse Aegumine [sec]",
+    "AUTHTIMEOUT": "Autentimise Aegumine [sec]",
+    "DELETE": "Kustuta E-mail Serverist",
     "SSL": "SSL",
     "KEEPALIVE": "Keepalive",
-    "POLLING": "Polling",
+    "POLLING": "Küsitlemine",
     "SMTP": "SMTP",
-    "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",
+    "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",
     "HELP": {
-      "FONT_FAMILY": "Default Font Family",
-      "FONT_SIZE": "Default Font Size",
-      "NAME": "Only numbers, letters and specific characters (._) are supported",
-      "USERNAME": "Username used for authentication",
-      "PASSWORD": "Password used for authentication",
-      "SECURE": "If true, the connection will use TLS when connecting to server",
-      "MARK_AS_UNREAD": "Enable/Disable agent to mark as unread the last message of an interaction",
-      "MANDATORYDISPOSITION": "Kohustuslik käsutamine",
-      "MANDATORYDISPOSITIONPAUSEID": "Kasutamise peatamine, kui kohustuslik käsutamine on lubatud",
+      "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",
       "CLOUD_PROVIDER": "Autentimiseks kasutatakse pilvepakkujat"
     },
-    "PAGE": "Page",
-    "ROWSPERPAGE": "Rows per page",
+    "PAGE": "Lehekülg",
+    "ROWSPERPAGE": "Ridu lehekülje kohta",
     "OF": "of",
-    "TEAMADD_MAILQUEUE": "Add Team to Email Queue",
-    "AGENTADD_MAILQUEUE": "Add Agent to Email Queue",
-    "ALL_AGENTS": "All Agents",
-    "SELECTED_AGENTS": "Selected Agents",
+    "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",
     "AGENT": "Agent",
-    "EDIT_AGENT": "Edit Agent",
-    "EDIT_CLOSE": "Edit Close",
-    "DISPOSITION": "Disposition",
+    "EDIT_AGENT": "Redigeeri Agenti",
+    "EDIT_CLOSE": "Redigeeri Sulgemist",
+    "DISPOSITION": "Kasutamine",
     "GOTOIF": "GotoIf",
-    "EDIT_GOTOIF": "Edit GotoIf",
-    "CONDITION": "Condition",
-    "TRUEPRIORITY": "True Priority",
-    "FALSEPRIORITY": "False Priority",
+    "EDIT_GOTOIF": "Redigeeri GotoIf",
+    "CONDITION": "Tingimus",
+    "TRUEPRIORITY": "Tõene Prioriteet",
+    "FALSEPRIORITY": "Vale Prioriteet",
     "GOTOP": "GotoP",
-    "EDIT_GOTOP": "Edit GotoP",
-    "PRIORITY": "Priority",
+    "EDIT_GOTOP": "Redigeeri GotoP",
+    "PRIORITY": "Prioriteet",
     "NOOP": "Noop",
-    "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",
+    "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",
     "SMTP_HOST": "SMTP Host",
     "SMTP_PORT": "SMTP Port",
     "IMAP_HOST": "IMAP Host",
     "IMAP_PORT": "IMAP Port",
-    "CONFIRM_PASSWORD": "Confirm Password",
-    "SELECT_STATUS": "Select Status",
-    "OPENED": "Open",
-    "CLOSED": "Closed",
-    "ALL": "All",
-    "SELECT_ACCOUNT": "Select Account",
-    "STATUS": "Status",
-    "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",
+    "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",
     "LASTMESSAGE": "Viimane teade",
-    "MANDATORYDISPOSITION": "Kohustuslik käsutamine",
-    "MANDATORYDISPOSITIONPAUSEID": "Kasutamise peatamine, kui kohustuslik käsutamine on lubatud",
-    "TEAMS_ASSOCIATION": "Võistkondade liit",
+    "MANDATORYDISPOSITION": "Kohustuslik kasutamine",
+    "MANDATORYDISPOSITIONPAUSEID": "Kasutamise peatamine, kui kohustuslik kasutamine on lubatud",
+    "TEAMS_ASSOCIATION": "Tiimide liit",
     "TOOLTIP_SCREENRECORDING_OFF": "Ekraanisalvestus on saadaval",
     "TOOLTIP_SCREENRECORDING_ON": "Ekraanisalvestus pooleli",
-    "REPLY_TYPE": "Vasta tüüp",
+    "REPLY_TYPE": "Vastamise tüüp",
     "CLOUD_PROVIDER": "Pilvepakkuja",
     "CREDENTIALS": "Mandaat",
-    "CUSTOM": "Kohandatud",
-    "MODERN_AUTHENTICATION": "Kaasaegne autentimine"
+    "CUSTOM": "Kohandatud"
   }
 }
index e80fbe2..779913f 100644 (file)
@@ -1,51 +1,51 @@
 {
   "MARKETPLACE": {
-    "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",
+    "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",
     "ERRORS": {
-      "URL_REQUIRED": "Mandatory field"
+      "URL_REQUIRED": "Kohustuslik väli"
     },
     "HELP": {},
-    "PAGE": "Page",
-    "ROWSPERPAGE": "Rows per page",
+    "PAGE": "Lehekülg",
+    "ROWSPERPAGE": "Ridu lehekülje kohta",
     "OF": "of"
   }
 }
index 96861de..db6abd5 100644 (file)
 {
   "MOTIONDIALER": {
-    "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",
+    "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",
     "ASC": "ASC",
     "DESC": "DESC",
-    "RECALLAGENT": "Recall Agent",
-    "DIALRECALLINQUEUE": "Recall In Queue",
-    "DIALRECALLMETIMEOUT": "Recall Me Timeout [min]",
-    "RECALLME": "Recall Me",
-    "RECALLFAILEDTIMEOUT": "Recall Failed",
-    "PREVIEW_CAMPAIGN": "Preview Campaigns",
-    "PREVIEW_CAMPAIGNS": "Preview Campaigns",
-    "AMD": "Asterisk Answering Machine Detection (AMD)",
-    "AMDTOTALANALYSISTIME": "Total Analysis Time",
+    "RECALLAGENT": "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",
     "AMDACTIVE": "AMD",
-    "AMDINITIALSILENCE": "Initial Silence",
-    "AMDGREETING": "Greeting",
-    "AMDAFTERGREETINGSILENCE": "Silence after Greeting",
-    "AMDSILENCETHRESHOLD": "Silence Threshold",
-    "AMDMINWORDLENGTH": "Min Word Length",
-    "AMDBETWEENWORDSSILENCE": "Silence Between Words",
-    "AMDMAXIMUMWORDLENGTH": "Maximum Word Length",
-    "AMDMAXIMUMNUMBEROFWORDS": "Maximum Number Of Words",
-    "GOTO_QUEUECAMPAIGN": "Go To Realtime Queue Campaigns",
-    "GOTOREALTIME_QUEUECAMPAIGN": "Go To Realtime Queue Campaigns",
-    "GOTO_IVRCAMPAIGN": "Go To Realtime IVR Campaigns",
-    "GOTOREALTIME_IVRCAMPAIGN": "Go To Realtime IVR Campaigns",
-    "LOGOUT": "Logout",
-    "EDIT_CAMPAIGN": "Edit Campaign",
-    "LIMITED": "Limited",
-    "IVR_CAMPAIGNS": "IVR Campaigns",
+    "AMDINITIALSILENCE": "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",
     "MOTIONDIALER": "Motion Bull",
-    "QUEUECAMPAIGNS": "Queue Campaigns",
-    "IVRCAMPAIGNS": "IVR Campaigns",
-    "MANAGED": "Managed",
-    "AVAILABLE_CONTACTS_FINISHED": "Available contacts finished",
-    "HISTORY": "History",
-    "SCHEDULEDAT": "Scheduled At",
-    "HOPPERBLACKS": "Hopper Blacklist",
-    "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",
+    "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",
     "HOPPERS": "Hopper",
-    "NO_HOPPER_AVAILABLE": "No items available",
-    "EDIT_HOPPER": "Edit Hopper",
-    "DELETE_HOPPER": "Delete Hopper",
-    "FINAL": "Final",
-    "BLACKLIST": "Blacklist",
-    "NAME": "Name",
-    "VOICEQUEUES": "Voice Queues",
-    "SEARCH_FOR_ANYONE": "Search",
-    "BACK": "Back",
-    "SELECTED": "Selected",
-    "SELECT_ALL": "Select All",
-    "SELECT_NONE": "Select None",
-    "DELETE_VOICEDISPOSITION": "Delete Voice Disposition",
-    "EDIT_VOICEDISPOSITION": "Edit Voice Disposition",
-    "EDIT_VOICEQUEUE": "Edit Voice Queue",
-    "DELETE_VOICEQUEUE": "Delete Voice Queue",
+    "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",
     "MOHSOUNDS": "Moh Sounds",
-    "STRATEGY": "Strategy",
-    "DESCRIPTION": "Description",
-    "INTERVAL": "Time Interval",
-    "ADD_VOICEQUEUE": "Add Voice Queue",
-    "NEW_QUEUECAMPAIGN": "New Queue Campaign",
-    "ACTIVE": "Active",
-    "METHOD": "Method",
-    "POWERLEVEL": "Power Level",
-    "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",
+    "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",
     "LEGEND": {
-      "CUSTOM_APPLICATION": "(*) - Custom application."
+      "CUSTOM_APPLICATION": "(*) - Kohandatud Avaldus."
     },
     "ERRORS": {
-      "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",
+      "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",
       "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",
-      "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"
+      "NOSUCHNUMBERRETRYTIME_REQUIRED": "Kohustuslik väli"
     },
-    "GENERAL": "General",
-    "AGENTTIMEOUT": "Agent Timeout",
-    "MAXLENGTH": "Maximum Length",
-    "RETRY": "Retry",
-    "WRAPUPTIME": "Wrapup Time",
-    "WEIGHT": "Weight",
-    "JOINWHENEMPTY": "Join when empty",
-    "LEAVEWHENEMPTY": "Leave when empty",
+    "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",
     "HELP": {
-      "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",
+      "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",
       "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": "Music On Hold",
-    "ANNOUNCETOAGENT": "Announce To Agent",
-    "ANNOUNCEMENTS": "Announcements",
-    "ADVANCEDPREVIEW": "Advanced",
-    "ADVANCED": "Advanced",
-    "ADVANCE": "Advanced",
-    "ANNOUNCEFREQUENCY": "Announce Frequency",
-    "MINANNOUNCEFREQUENCY": "Minimum Announce Frequency",
-    "PERIODICANNOUNCEFREQUENCY": "Periodic Announce Frequency",
-    "RANDOMPERIODICANNOUNCE": "Random Periodic Announce",
-    "ANNOUNCEHOLDTIME": "Announce Hold Time",
-    "ANNOUNCECALLERPOSITION": "Announce Caller Position",
-    "ANNOUNCEPOSITIONLIMIT": "Announce Position Limit",
-    "REPORTHOLDTIMEAGENT": "Report Agent Hold Time",
-    "PERIODICANNOUNCE": "Periodic Announce",
-    "HOLDTIMEANNOUNCE": "Hold Time Announce",
-    "YOUARENEXTANNOUNCE": "'You are next' Announce",
-    "THEREAREANNOUNCE": "'There are' Announce",
-    "WAITINGCALLSANNOUNCE": "Waiting Calls Announce",
-    "ESTIMATEDHOLDTIMEANNOUNCE": "Estimated Hold Time Announce",
-    "MINUTESANNOUNCE": "Minutes Announce",
-    "MINUTEANNOUNCE": "Minute Announce",
-    "SECONDSANNOUNCE": "Seconds Announce",
-    "THANKYOUANNOUNCE": "'Thank You' Announce",
-    "AUTOPAUSE": "Auto Pause",
-    "AFTERCALLWORK": "After Call Work",
-    "AFTERCALLWORKDURATION": "After Call Work Duration",
-    "RINGINUSE": "Ring In Use",
-    "MEMBERDELAY": "Member Delay",
-    "TIMEOUTRESTART": "Timeout Restart",
-    "MONITORFORMAT": "Recording Format",
-    "SETINTERFACEVARIABLES": "Set Interface Variables",
-    "SETQUEUEVARIABLES": "Set Queue Variables",
-    "SETQUEUEENTRYVARIABLES": "Set Queue Entry Variables",
-    "CONTEXT": "Context",
-    "SAVE": "Save",
-    "SETTINGS": "Settings",
-    "INBOUNDROUTES": "Inbound Routes",
-    "PHONENUMBER": "Phone Number",
-    "ADD_INBOUNDROUTE": "Add Inbound Route",
-    "EDIT_INBOUNDROUTE": "Edit Inbound Route",
-    "DELETE_INBOUNDROUTE": "Delete Inbound Route",
-    "ACTIONS": "Actions",
-    "OUTBOUNDROUTES": "Outbound Routes",
-    "DESTINATIONPATTERN": "Destination Pattern",
-    "ADD_OUTBOUNDROUTE": "Add Outbound Route",
-    "EDIT_OUTBOUNDROUTE": "Edit Outbound Route",
-    "DELETE_OUTBOUNDROUTE": "Delete Outbound Route",
-    "CUTDIGITS": "Cut Digits",
-    "RECORDING": "Recording",
-    "RECORDINGFORMAT": "Recording format",
-    "INTERNALROUTES": "Internal Routes",
-    "ADD_INTERNALROUTE": "Add Internal Route",
-    "EDIT_INTERNALROUTE": "Edit Internal Route",
-    "DELETE_INTERNALROUTE": "Delete Internal Route",
-    "CONTEXTS": "Contexts",
-    "ADD_CONTEXT": "Add Context",
-    "EDIT_CONTEXT": "Edit Context",
-    "DELETE_CONTEXT": "Delete Context",
-    "VOICEMAILS": "Voicemails",
-    "ADD_VOICEMAIL": "Add Voicemail",
-    "EDIT_VOICEMAIL": "Edit Voicemail",
-    "DELETE_VOICEMAIL": "Delete Voicemail",
-    "FULLNAME": "Full Name",
-    "EMAIL": "Email",
-    "MAILBOX": "Mailbox",
-    "PASSWORD": "Password",
-    "CONFIRM_PASSWORD": "Confirm Password",
-    "TIMEZONE": "Timezone",
-    "ATTACH": "Attach",
-    "ENVELOPE": "Envelope",
-    "DELETE": "Delete",
-    "EMAILBODY": "Email Body",
-    "EMAILSUBJECT": "Email Subject",
-    "MAXSECONDS": "Max Seconds",
-    "MAXMESSAGES": "Max Messages",
-    "MESSAGES": "Messages",
-    "SORT": "Sort",
-    "ADD_MUSICONHOLD": "Add Music On Hold",
-    "MUSICONHOLDS": "Music On Hold",
-    "EDIT_MUSICONHOLD": "Edit Music On Hold",
-    "DELETE_MUSICONHOLD": "Delete Music On Hold",
-    "DIRECTORY": "Directory",
-    "AUDIOFILES": "Audio Files",
-    "RECORDINGS": "Recordings",
+    "MUSICONHOLD": "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",
     "CHANSPY": "ChanSpy",
-    "PREFIX": "Prefix",
-    "OPTIONS": "Options",
+    "PREFIX": "Eesliide",
+    "OPTIONS": "Suvandid",
     "AUTH": "Auth",
-    "ADD_CHANSPY": "Add ChanSpy",
-    "EDIT_CHANSPY": "Edit ChanSpy",
-    "DELETE_CHANSPY": "Delete ChanSpy",
-    "AGENTS": "Agents",
-    "TELEPHONES": "Telephones",
-    "QUEUES": "Queues",
-    "QUEUE_CALLS": "Queue Calls",
-    "QUEUE_PARAMETERS": "Queue Parameters",
-    "ABANDONED_CALLS": "Abandoned Calls",
-    "OUTBOUND_CALLS": "Outbound Calls",
+    "ADD_CHANSPY": "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",
     "AGI": "AGI",
-    "DIAL": "Dial",
-    "INTERNALDIAL": "Internal Dial",
-    "EXTERNALDIAL": "External Dial",
-    "RINGGROUP": "Ring Group",
-    "PLAYBACK": "Playback",
-    "QUEUE": "Queue",
-    "SET": "Set",
-    "VOICEMAIL": "Voicemail",
+    "DIAL": "Valimine",
+    "INTERNALDIAL": "Sisemine Valimine",
+    "EXTERNALDIAL": "Väline Valimine",
+    "RINGGROUP": "Helista Grupile",
+    "PLAYBACK": "Taasesitus",
+    "QUEUE": "Järjekord",
+    "SET": "Määra",
+    "VOICEMAIL": "Kõnepost",
     "GOTO": "GoTo",
-    "HANGUP": "Hangup",
-    "CUSTOM": "Custom",
-    "PROJECT": "Cally-Square Project",
-    "TECHNOLOGY/RESOURCE": "Technology/Resource",
+    "HANGUP": "Lõpeta kõne",
+    "CUSTOM": "Kohandatus",
+    "PROJECT": "Cally-Square Projekt",
+    "TECHNOLOGY/RESOURCE": "Tehnoloogia/Resurss",
     "URL": "URL",
-    "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",
+    "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",
     "GOSUB": "GoSub",
-    "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",
+    "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",
     "CHANSPIES": "ChanSpy",
-    "VOICE": "Voice",
-    "REALTIME": "Realtime",
-    "ID": "Id",
-    "VOICEMAIL_CONTEXT": "Context",
-    "NO_MOHSOUND_AVAILABLE": "No Music On Hold available",
-    "FILE": "File",
-    "ADD_MOHSOUND": "Add Music On Hold sound",
-    "DOWNLOAD_MOHSOUND": "Download Music On Hold sound",
-    "DELETE_MOHSOUND": "Delete Music On Hold sound",
-    "UNIQUEID": "Unique ID",
+    "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",
     "AGENT": "Agent",
-    "TYPE": "Type",
-    "RATING": "Rating",
+    "TYPE": "Tüüp",
+    "RATING": "Hinnang",
     "AUDIO": "Audio",
-    "DATE": "Date",
-    "NEW_VOICEQUEUE": "New Voice Queue",
-    "NEW_INBOUNDROUTE": "New Inbound Route",
-    "NEW_OUTBOUNDROUTE": "New Outbound Route",
-    "NEW_INTERNALROUTE": "New Internal Route",
-    "NEW_CONTEXT": "New Context",
-    "NEW_VOICEMAIL": "New Voicemail",
-    "NEW_MUSICONHOLD": "New Music On Hold",
-    "NEW_CHANSPY": "New ChanSpy",
-    "PENALTY": "Penalty",
-    "ADD_TEAM_TO_VOICEQUEUE": "Add Team to Voice Queue",
-    "ADD_AGENT_TO_VOICEQUEUE": "Add Agent to Voice Queue",
-    "EDIT_DIAL": "Edit Dial",
-    "EDIT_AGI": "Edit AGI",
-    "EDIT_INTERNALDIAL": "Edit Internal Dial",
-    "EDIT_EXTERNALDIAL": "Edit External Dial",
-    "EDIT_RINGGROUP": "Edit Ring Group",
-    "EDIT_PLAYBACK": "Edit Playback",
-    "EDIT_QUEUE": "Edit Queue",
-    "EDIT_SET": "Edit Set",
-    "EDIT_GOTO": "Edit GoTo",
-    "EDIT_HANGUP": "Edit Hangup",
-    "EDIT_CUSTOM": "Edit Custom",
-    "DURATION": "Duration",
-    "RECEIVED_AT": "Received At",
-    "YES": "Yes",
-    "NO": "No",
-    "HANGUPCAUSE_1": "1 = Unallocated number",
-    "HANGUPCAUSE_16": "16 = Normal call clearing",
-    "HANGUPCAUSE_17": "17 = User busy",
-    "HANGUPCAUSE_18": "18 = No user responding (telehone device not connected)",
-    "HANGUPCAUSE_21": "21 = Call rejected",
-    "HANGUPCAUSE_22": "22 = Number changed",
-    "HANGUPCAUSE_27": "27 = Destination out of order",
-    "HANGUPCAUSE_38": "38 = Network out of order",
-    "HANGUPCAUSE_41": "41 = Temporary failure",
-    "RANDOM": "Random",
-    "ALPHABETICAL": "Alphabetical",
-    "NO_APPS_AVAILABLE": "No applications available",
-    "DOWNLOAD_VOICERECORDING": "Download Voice Recording",
-    "DELETE_VOICERECORDING": "Delete Voice Recording",
-    "INTERNAL": "Internal",
-    "PHONE_STATE": "Phone State",
-    "PHONE_STATUS": "Phone Status",
-    "REGISTERED": "Registered",
-    "UNREGISTERED": "Unregistered",
-    "LAGGED": "Lagged",
-    "REACHABLE": "Reachable",
-    "UNREACHABLE": "Unreachable",
-    "UNKNOWN": "Unknown",
-    "NOT_INUSE": "Not in use",
-    "INUSE": "In Use",
-    "BUSY": "Busy",
-    "INVALID": "Invalid",
-    "UNAVAILABLE": "Unavailable",
-    "RINGING": "Ringing",
-    "ONHOLD": "On Hold",
-    "RING": "Ring",
-    "UP": "Up",
+    "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",
     "INFO": "Info",
-    "TRUNKS": "Trunks",
-    "REGISTRY": "Registry",
-    "NO_REGISTRY": "No registry",
-    "LOGGED_IN": "Logged in (SIP connected)",
-    "PAUSED": "Paused",
-    "DISPOSITION": "Disposition",
-    "WAITING": "Waiting",
-    "TALKING": "Talking",
+    "TRUNKS": "Magistraalid",
+    "REGISTRY": "Register",
+    "NO_REGISTRY": "Register puudub",
+    "LOGGED_IN": "Sisse logitud (SIP ühendusega)",
+    "PAUSED": "Pausil",
+    "DISPOSITION": "Kasutamine",
+    "WAITING": "Ootamine",
+    "TALKING": "Rääkimine",
     "DID": "DID",
-    "CALLER": "Caller",
-    "TOTAL": "Total",
-    "ANSWERED": "Answered",
-    "ABANDONED": "Abandoned",
-    "UNMANAGED": "Unmanaged",
-    "REDIRECT_TO_NUMBER": "Redirect to a number",
-    "REDIRECT_TO_AGENT": "Redirect to an agent",
-    "CLOSING": "Closing",
-    "AVG_HOLD_TIME": "Avg Hold Time",
-    "AVG_DURATION": "Avg Duration",
-    "AVG_BILLABLE": "Avg Billable",
-    "SOURCE": "Source",
-    "DESTINATION": "Destination",
-    "REJECTED": "Rejected",
-    "FAILED": "Failed",
-    "CALLED": "Called",
-    "CONNECTED": "Connected",
-    "NO_RATING": "No rating",
-    "EDIT_VOICERECORDING": "Edit Voice Recording",
-    "APPLICATION_NAME": "Application Name",
-    "ARGUMENTS": "Arguments",
-    "EDIT_QUEUECAMPAIGN": "Edit Campaign",
-    "LISTADD_QUEUECAMPAIGN": "Add List",
-    "BLACKLISTADD_QUEUECAMPAIGN": "Add Blacklist",
-    "TEAMADD_QUEUECAMPAIGN": "Add Team",
-    "AGENTADD_QUEUECAMPAIGN": "Add Agent",
-    "DELETE_QUEUECAMPAIGN": "Delete Campaign",
-    "DELETE_IVRCAMPAIGN": "Delete Campaign",
-    "EDIT_IVRCAMPAIGN": "Edit Campaign",
-    "NEW_IVRCAMPAIGN": "New IVR Campaign",
-    "ADD_IVRCAMPAIGN": "Add IVR Campaign",
-    "LISTADD_IVRCAMPAIGN": "Add List",
-    "BLACKLISTADD_IVRCAMPAIGN": "Add Blacklist",
-    "ENABLED": "Enabled",
-    "READY": "Ready",
-    "PAUSE": "Pause",
-    "UNPAUSE": "End Pause",
-    "DEFAULT_PAUSE": "Default Pause",
-    "AGENTADD_QUEUE": "Add Agent to queue campaign",
-    "AGENTSADD_QUEUE": "Add Agents to queue campaign",
-    "ALL_TEAMS": "All Teams",
-    "SELECTED_TEAMS": "Selected Teams",
-    "ALL_LISTS": "All Lists",
-    "SELECTED_LISTS": "Selected Lists",
-    "ALL_AGENTS": "All Agents",
-    "SELECTED_AGENTS": "Selected Agents",
-    "WAITING_FOR_AGENT": "Waiting for Agent",
-    "TOTAL_OFFERED": "Total Offered",
-    "RUNNING": "Running",
-    "TRUNK_IS_NOT_REACHABLE": "Trunk is Not Reachable",
-    "AGENTS_NOT_LOGGED": "Agent not logged",
-    "NOT_ACTIVE": "Not Active",
-    "IS_DISACTIVED": "Deactivated",
-    "BACKUPTRUNK": "Backup Trunk",
-    "GLOBALINTERVAL": "Global Interval",
-    "RESCHEDULED_CONTACTS": "Rescheduled contacts",
-    "INTERVAL_IS_OVERTIME": "Out of Interval",
-    "GLOBAL_INTERVAL_IS_OVERTIME": "Out of Interval (Global)",
-    "INTERVAL_IS_NULL": "Interval is Null",
-    "TIMEZONE_UNKNOW": "Timezone Unknow",
-    "INTERVAL_IS_EMPTY": "Interval is Empty",
-    "TOTAL_MANAGED": "Total Managed",
-    "OPEN": "Open",
-    "FRESH": "Fresh",
-    "CLOSED": "Closed",
-    "ALWAYS": "Always",
-    "NEVER": "Never",
-    "ONLY_IF_OPEN": "Only If Open",
-    "CHECKDUPLICATE": "Check Duplicate",
-    "PAGE": "Page",
-    "ROWSPERPAGE": "Rows per page",
+    "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",
     "OF": "of",
-    "CHAT": "Chat",
-    "MAIL": "Email",
-    "SMS": "SMS",
-    "OPENCHANNEL": "Open Channel",
-    "FAX": "Fax",
+    "CHAT": "Vestlus",
+    "MAIL": "E-mail",
+    "SMS": "SÕnum",
+    "OPENCHANNEL": "Avatud Kanal",
+    "FAX": "Faks",
     "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 käsutamine",
+    "MANDATORYDISPOSITION": "Kohustuslik kasutamine",
     "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": "Valige kampaania",
-    "SELECT_DATE": "Valige kuupäev",
-    "SELECT_TYPE": "Valige Tüüp",
+    "SELECT_CAMPAIGN": "Vali kampaania",
+    "SELECT_DATE": "Vali kuupäev",
+    "SELECT_TYPE": "Vali Tüüp",
     "SHOW_PREDICTIVE_QUEUE_CAMPAIGN_INFO": "Kuva ennustavat teavet",
-    "TEAMS_ASSOCIATION": "Võistkondade liit",
+    "TEAMS_ASSOCIATION": "Tiimide liit",
     "THRESHOLDS": "Künnised",
     "TOOLTIP_SCREENRECORDING_OFF": "Ekraanisalvestus on saadaval",
     "TOOLTIP_SCREENRECORDING_ON": "Ekraanisalvestus pooleli",
     "TOTAL_CALLS": "Kõnesid kokku",
-    "ABANDONEDMAXRETRY": "Max proovib uuesti",
+    "ABANDONEDMAXRETRY": "Maks uued katsed",
     "ABANDONEDRETRYTIME": "Uuesti proovimise aeg [min]",
-    "AGENTREJECT": "Agent Keeldu",
-    "AGENTREJECTMAXRETRY": "Max proovib uuesti",
+    "AGENTREJECT": "Agendi Keeldumine",
+    "AGENTREJECTMAXRETRY": "Maks uued katsed",
     "AGENTREJECTRETRYTIME": "Uuesti proovimise aeg [min]",
-    "DROP": "Tilk",
-    "DROPMAXRETRY": "Max proovib uuesti",
+    "DROP": "Katkestamine",
+    "DROPMAXRETRY": "Maks uued katsed",
     "DROPRETRYTIME": "Uuesti proovimise aeg [min]",
-    "MACHINE": "Masin",
-    "MACHINEMAXRETRY": "Max proovib uuesti",
+    "MACHINE": "Seade",
+    "MACHINEMAXRETRY": "Maks uued katsed",
     "MACHINERETRYTIME": "Uuesti proovimise aeg [min]",
     "NOSUCHNUMBER": "Sellist numbrit pole",
-    "NOSUCHNUMBERMAXRETRY": "Max proovib uuesti",
+    "NOSUCHNUMBERMAXRETRY": "Maks uued katsed",
     "NOSUCHNUMBERRETRYTIME": "Uuesti proovimise aeg [min]",
-    "SECOND_LEVEL_DISPOSITION": "Teise taseme korraldus",
-    "THIRD_LEVEL_DISPOSITION": "Kolmanda taseme korraldus",
-    "ADDITIONALPHONES": "Täiendavad telefonid",
-    "CALLADDITIONALPHONEAFTERMIN": "Helistage täiendavale telefonile pärast [min]",
+    "SECOND_LEVEL_DISPOSITION": "Teise taseme kasutamine",
+    "THIRD_LEVEL_DISPOSITION": "Kolmanda taseme kasutamine",
     "PREVIEW_AUTO_RECALL_ME": "Automatiseerige Call Me kõned",
     "PREVIEW_RECALL_ME_REMINDER": "Tuleta mulle meelde"
   }
index 23ab65b..c07979f 100644 (file)
@@ -1,97 +1,97 @@
 {
   "OPENCHANNEL": {
-    "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",
+    "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",
     "ERRORS": {
-      "QUEUETRANSFERTIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "The value must be less than or equal to",
-      "QUEUETRANSFERTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
-      "QUEUETRANSFERTIMEOUT_REQUIRED": "Mandatory Field",
-      "AGENTTRANSFERTIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "The value must be less than or equal to",
-      "AGENTTRANSFERTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
-      "AGENTTRANSFERTIMEOUT_REQUIRED": "Mandatory Field",
-      "TAG_REQUIRED": "Mandatory Field",
-      "WAITFORTHEASSIGNEDAGENT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "The value must be less than or equal to",
-      "WAITFORTHEASSIGNEDAGENT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
-      "WAITFORTHEASSIGNEDAGENT_REQUIRED": "Mandatory Field",
-      "AGENT_TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "The value must be less than or equal to",
-      "TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "The value must be less than or equal to",
-      "AGENT_TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
-      "NAME_MUST_VALID_PATTERN": "Wrong format",
-      "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}}",
+      "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}}",
       "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": "Strategy",
+    "STRATEGY": "Strateegia",
     "AGENT": "Agent",
     "GOTO": "Goto",
     "GOTOIF": "Gotoif",
     "NOOP": "Noop",
-    "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",
+    "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",
     "API": "API",
-    "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",
+    "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",
     "HELP": {
-      "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."
+      "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."
     },
-    "PAGE": "Page",
-    "ROWSPERPAGE": "Rows per page",
+    "PAGE": "Lehekülg",
+    "ROWSPERPAGE": "Ridu lehekülje kohta",
     "OF": "of",
-    "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",
+    "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",
     "FILTER": "Filter",
-    "FILTERS": "Filters",
-    "CLOSEDAT": "Closed At",
-    "DISPOSITION": "Disposition",
-    "NOTES": "Notes",
-    "NO_INTERACTION_AVAILABLE": "No interactions available",
-    "SELECT_ACCOUNT": "Select an account",
+    "FILTERS": "Filtrid",
+    "CLOSEDAT": "Sulgemisaeg",
+    "DISPOSITION": "Kasutus",
+    "NOTES": "Märkmed",
+    "NO_INTERACTION_AVAILABLE": "Suhtlused pole saadaval",
+    "SELECT_ACCOUNT": "Vali konto",
     "GOTOP": "Gotop",
-    "EDIT_GOTOP": "Edit Gotop",
-    "EDIT_CLOSE": "Edit Close",
+    "EDIT_GOTOP": "Redigeeri Gotop",
+    "EDIT_CLOSE": "Redigeeri Sule",
     "INFO": "Info",
-    "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",
+    "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",
     "ACCESSKEYID": "Juurdepääsukoodi ID",
     "AMAZONLEX": "AmazonLex",
     "BOTNAME": "Boti nimi",
     "DIALOGFLOW": "Dialoogivoog",
-    "DOWNLOAD_WITHOUT_ATTACHMENTS": "Laadige alla ilma manusteta",
-    "DOWNLOAD_WITH_ATTACHMENTS": "Laadige alla koos manustega",
+    "DOWNLOAD_WITHOUT_ATTACHMENTS": "Laadi alla ilma manusteta",
+    "DOWNLOAD_WITH_ATTACHMENTS": "Laadi alla koos manustega",
     "EDIT_AMAZONLEX": "Redigeeri Lexi konfiguratsiooni",
     "EDIT_DIALOGFLOW": "Redigeeri Dialogflow konfiguratsiooni",
     "LANGUAGE": "Keel",
     "LASTMESSAGE": "Viimane teade",
     "LEXREGION": "Piirkond",
-    "MANDATORYDISPOSITION": "Kohustuslik käsutamine",
-    "MANDATORYDISPOSITIONPAUSEID": "Kasutamise peatamine, kui kohustuslik käsutamine on lubatud",
+    "MANDATORYDISPOSITION": "Kohustuslik kasutamine",
+    "MANDATORYDISPOSITIONPAUSEID": "Kasutamise peatamine, kui kohustuslik kasutamine on lubatud",
     "SECRETACCESSKEY": "Juurdepääsu võtme saladus",
     "TEAMS_ASSOCIATION": "Võistkondade liit",
     "TOOLTIP_SCREENRECORDING_OFF": "Ekraanisalvestus on saadaval",
index be8be0f..90c89fb 100644 (file)
@@ -1,6 +1,6 @@
 {
   "PLUGINS": {
-    "PLUGINS": "Plugins",
+    "PLUGINS": "Lisandmoodul",
     "ERRORS": {},
     "HELP": {}
   }
index 054b0d7..3fc4dff 100644 (file)
 {
   "SETTINGS": {
-    "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",
+    "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",
     "JAWS": "Jaws",
-    "MOTIONBAR": "Motionbar",
-    "MOTIONBARAUTOUPDATER": "Auto Updater",
-    "MOTIONBARAUTOUPDATERURL": "Auto Updater URL",
+    "MOTIONBAR": "Liikumisriba",
+    "MOTIONBARAUTOUPDATER": "Automaatne Värskendaja",
+    "MOTIONBARAUTOUPDATERURL": "Automaatse Värskendaja URL",
     "SMTP_SSL": "SMTP SSL",
-    "CALL_RECORDING_ENCRYPTION": "Voice Recording Encryption",
-    "TURNADDR": "TURN Address",
-    "TURN_USERNAME": "TURN Username",
-    "TURN_PASSWORD": "TURN Password",
+    "CALL_RECORDING_ENCRYPTION": "Häälsalvestuse Krüptimine",
+    "TURNADDR": "TURN Aadress",
+    "TURN_USERNAME": "TURN Kasutajanimi",
+    "TURN_PASSWORD": "TURN Parool",
     "WEBRTC": "WebRTC",
     "CALLYSQUARE": "Cally Square",
-    "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",
+    "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",
     "AVG_LOAD": "AVG Load",
-    "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",
+    "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",
     "JSCRIPTY": "Jscripty",
-    "CUSTOM": "Customization",
-    "UPDATE": "Update",
-    "OTHERS": "Others",
-    "SETTINGS": "Settings",
-    "GENERAL": "General",
+    "CUSTOM": "Kohandamine",
+    "UPDATE": "Värskenda",
+    "OTHERS": "Teised",
+    "SETTINGS": "Sätted",
+    "GENERAL": "Üldine",
     "SMTP": "SMTP",
-    "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",
+    "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",
     "LOGO": "Logo",
-    "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",
+    "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",
     "SMTP_HOST": "Host",
-    "SMTP_USERNAME": "Username",
-    "DESCRIPTION": "Description",
-    "SMTP_PASSWORD": "Password",
+    "SMTP_USERNAME": "Kasutajanimi",
+    "DESCRIPTION": "Kirjeldus",
+    "SMTP_PASSWORD": "Parool",
     "SMTP_PORT": "Port",
-    "SMTP_SECURE": "Secure",
-    "TYPE": "Type",
-    "ADDRESS": "Address",
-    "NEW_NETWORK": "New Network",
-    "ADD_NETWORK": "Add Network",
+    "SMTP_SECURE": "Turvaline",
+    "TYPE": "Tüüp",
+    "ADDRESS": "Aadress",
+    "NEW_NETWORK": "Uus Võrk",
+    "ADD_NETWORK": "Lisa Võrk",
     "HELP": {
-      "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",
+      "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",
       "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ärskendus)",
+      "INTERACTIONS_RELOAD_TIMEOUT": "Ajavahemik sekundites, mille järel interaktsioonid laaditakse uuesti (0 = reaalajas väskendus)",
       "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": "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",
+      "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",
       "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",
-      "PREVIEW_RECALLME_REMINDER_INTERVAL_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Väärtus peab olema suurem või võrdne sellega"
+      "WRONG_FORMAT": "Vale formaat"
     },
-    "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",
+    "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",
     "CHANGELOG": "Changelog",
-    "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",
+    "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",
     "OF": "of",
-    "PAGE_TITLE": "Page Title",
-    "DEFAULT_PAGE_TITLE": "Default Page Title",
-    "PERPETUAL": "Perpetual",
-    "SECURITY_SUITE": "Security Suite",
-    "ANNUALLY": "Annually",
-    "AGENTOMNIDESKTOPINTERFACE": "Agent Omni Desktop Interface",
-    "MESSAGESALIGNMENT": "Messages Alignment",
-    "ENTER_LICENSE": "Enter your license",
-    "UPDATE_LICENSE_MANUALLY": "Do you want to update your license manually?",
+    "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?",
     "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": "Ämber",
+    "BUCKET": "Salv",
     "DEFAULTSCREENRECORDINGPATH": "Ekraani salvestustee",
     "DEFAULT_FAVICON": "Vaikimisi Favicon",
     "DEFAULT_PREFERRED": "Eelistatud vaikimisi logo",
     "TRANSCRIBEREGION": "Transkribeeritav piirkond",
     "USERNAME": "Kasutajanimi",
     "VIDEO": "Video",
-    "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",
+    "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",
     "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 ülekande salvestamine",
+    "STOP_RECORDING_ON_VOICE_CALL_TRANSFER": "Lõpeta häälkõne edastamise salvestamine",
     "AD_SSO_ENABLED": "Active Directory SSO lubatud",
     "APPLICATION_ID": "Rakenduse ID",
     "AUTHENTICATE": "Autentimine",
index 9d0b322..2645fe3 100644 (file)
 {
   "SMS": {
-    "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",
+    "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",
     "ERRORS": {
-      "QUEUETRANSFERTIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "The value must be less than or equal to",
-      "QUEUETRANSFERTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
-      "QUEUETRANSFERTIMEOUT_REQUIRED": "Mandatory Field",
-      "AGENTTRANSFERTIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "The value must be less than or equal to",
-      "AGENTTRANSFERTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
-      "AGENTTRANSFERTIMEOUT_REQUIRED": "Mandatory Field",
-      "TAG_REQUIRED": "Mandatory Field",
-      "WAITFORTHEASSIGNEDAGENT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "The value must be less than or equal to",
-      "WAITFORTHEASSIGNEDAGENT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
-      "WAITFORTHEASSIGNEDAGENT_REQUIRED": "Mandatory Field",
-      "AGENT_TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "The value must be less than or equal to",
-      "TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "The value must be less than or equal to",
-      "AGENT_TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
-      "NAME_MUST_VALID_PATTERN": "Wrong format",
-      "COMMAND_REQUIRED": "Mandatory Field",
-      "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",
+      "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",
       "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": "Agent Timeout",
-    "DESCRIPTION": "Description",
-    "ADD_SMSQUEUE": "Add SMS Queue",
-    "EDIT_SMSQUEUE": "Edit SMS Queue",
-    "DELETE_SMSQUEUE": "Delete SMS Queue",
-    "SETTINGS": "Settings",
-    "GENERAL": "General",
-    "CREATED_AT": "Created At",
-    "SAVE": "Save",
-    "SMSACCOUNTS": "SMS Accounts",
-    "TYPE": "Type",
-    "PHONE": "Phone",
+    "AGENT_TIMEOUT": "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",
     "SID": "SID",
-    "TOKEN": "Token",
-    "SMSTYPE": "SMS Type",
-    "USERNAME": "Username",
-    "PASSWORD": "Password",
-    "MOTIONADDRESS": "Motion Address",
-    "ADD_SMSACCOUNT": "Add SMS Account",
-    "EDIT_SMSACCOUNT": "Edit SMS Account",
-    "DELETE_SMSACCOUNT": "Delete SMS Account",
-    "LIST": "List",
-    "FIDELITY": "Fidelity",
+    "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",
     "API": "API",
-    "DISPOSITIONS": "Dispositions",
-    "WEBHOOKS": "WebHooks",
-    "ACTIONS": "Actions",
-    "ACCEPT": "Accept",
-    "ACCEPTMETHOD": "Accept Method",
-    "ACCEPTURL": "Accept URL",
-    "REJECT": "Reject",
-    "REJECTMETHOD": "Reject Method",
-    "REJECTURL": "Reject URL",
-    "CLOSE": "Close",
-    "CLOSEMETHOD": "Close Method",
-    "CLOSEURL": "Close URL",
-    "SELECTED": "Selected",
-    "SELECT_ALL": "Select All",
-    "SELECT_NONE": "Select None",
-    "BACK": "Back",
+    "DISPOSITIONS": "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",
     "SMS": "SMS",
-    "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",
+    "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",
     "HELP": {
-      "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",
+      "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",
       "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 käsutamine",
-      "MANDATORYDISPOSITIONPAUSEID": "Kasutamise peatamine, kui kohustuslik käsutamine on lubatud",
-      "WELCOMEMESSAGE": "See on esimene vastussõnum, mis saadetakse uutele interaktsioonidele"
+      "MANDATORYDISPOSITION": "Kohustuslik kasutamine",
+      "MANDATORYDISPOSITIONPAUSEID": "Kasutamise peatamine, kui kohustuslik kasutamine on lubatud",
+      "WELCOMEMESSAGE": "See on esimene vastussõnum, mis saadetakse uutele sihtlustele"
     },
-    "PAGE": "Page",
-    "ROWSPERPAGE": "Rows per page",
+    "PAGE": "Lehekülg",
+    "ROWSPERPAGE": "Ridu Lehekülje kohta",
     "OF": "of",
-    "TEAMADD_SMSQUEUE": "Add Team To SMS Queue",
-    "AGENTADD_SMSQUEUE": "Add Agent To SMS Queue",
-    "ALL_AGENTS": "All Agents",
-    "SELECTED_AGENTS": "Selected Agents",
-    "RECEIVEURL": "Receive URL",
-    "INTERACTION": "Interaction",
-    "INTERACTIONS": "Interactions",
-    "NO_INTERACTION_AVAILABLE": "No interactions available",
-    "CONTACT": "Contact",
-    "STARTEDAT": "Started At",
+    "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",
     "AGENT": "Agent",
-    "CLOSEDAT": "Closed At",
-    "DISPOSITION": "Disposition",
-    "NOTES": "Notes",
+    "CLOSEDAT": "Sulgemisaeg",
+    "DISPOSITION": "Kasutus",
+    "NOTES": "Märkmed",
     "GOTO": "Goto",
     "GOTOIF": "Gotoif",
     "NOOP": "Noop",
-    "QUEUE": "Queue",
-    "TIMEOUT": "Timeout",
-    "VALUE": "Value",
-    "EDIT_AGENT": "Edit Agent",
-    "EDIT_GOTO": "Edit Goto",
-    "EDIT_NOOP": "Edit Noop",
-    "EDIT_GOTOIF": "Edit Gotoif",
-    "EDIT_QUEUE": "Edit Queue",
-    "CONDITION": "Condition",
-    "TRUEPRIORITY": "True Priority",
-    "FALSEPRIORITY": "False Priority",
-    "PRIORITY": "Priority",
+    "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",
     "GOTOP": "Gotop",
-    "EDIT_GOTOP": "Edit Gotop",
-    "EDIT_CLOSE": "Edit Close",
-    "FILTER": "Filter",
-    "SELECT_STATUS": "Select a status",
-    "ALL": "All",
-    "SELECT_ACCOUNT": "Select an account",
-    "OPENED": "Open",
-    "CLOSED": "Closed",
-    "STATUS": "Status",
-    "ACCOUNT": "Account",
-    "OPEN": "Open",
-    "INFO": "Info",
-    "ACCOUNTSID": "Account SID",
-    "AUTHTOKEN": "Auth Token",
-    "UNKNOWN": "Unknown",
-    "UNREGISTERED": "Unregistered",
-    "UNAVAILABLE": "Unavailable",
-    "NOT_INUSE": "Not in use",
-    "REACHABLE": "Reachable",
-    "IN_USE": "In use",
-    "AGENTS": "Agents",
-    "QUEUES": "Queues",
-    "FULLNAME": "Fullname",
-    "INTERNAL": "Internal",
-    "PHONE_STATE": "Phone State",
-    "PHONE_STATUS": "Phone Status",
-    "PAUSE": "Pause",
-    "LOGOUT": "Logout",
-    "AGENTADD_QUEUE": "Add agent to SMS queue",
-    "UNPAUSE": "End Pause",
-    "DEFAULT_PAUSE": "Default pause",
-    "LOGGED_IN": "Logged in",
-    "PAUSED": "Paused",
-    "READY": "Ready",
-    "WAITING": "Waiting",
-    "VOICE": "Voice",
-    "CHAT": "Chat",
-    "MAIL": "Email",
-    "OPENCHANNEL": "Open channel",
-    "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",
+    "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",
     "ACCESSKEYID": "Juurdepääsukoodi ID",
     "AMAZONLEX": "AmazonLex",
     "APIKEY": "ApiKey",
     "BASEURL": "Baas-URL",
     "BOTNAME": "Boti nimi",
     "DIALOGFLOW": "DialogFlow",
-    "DOWNLOAD_WITHOUT_ATTACHMENT": "Laadige alla ilma manuseta",
-    "DOWNLOAD_WITH_ATTACHMENT": "Laadige alla koos manusega",
+    "DOWNLOAD_WITHOUT_ATTACHMENT": "Laadi alla ilma manuseta",
+    "DOWNLOAD_WITH_ATTACHMENT": "Laadi alla koos manusega",
     "EDIT_AMAZONLEX": "Redigeeri Lexi konfiguratsiooni",
     "EDIT_DIALOGFLOW": "Redigeeri DialogFlow konfiguratsiooni",
     "LANGUAGE": "Keel",
     "LASTMESSAGE": "Viimane teade",
     "LEXREGION": "Piirkond",
-    "MANDATORYDISPOSITION": "Kohustuslik käsutamine",
-    "MANDATORYDISPOSITIONPAUSEID": "Kasutamise peatamine, kui kohustuslik käsutamine on lubatud",
+    "MANDATORYDISPOSITION": "Kohustuslik kasutamine",
+    "MANDATORYDISPOSITIONPAUSEID": "Kasutamise peatamine, kui kohustuslik kasutamine on lubatud",
     "SECRETACCESSKEY": "Juurdepääsu võtme saladus",
     "TEAMS_ASSOCIATION": "Võistkondade liit",
     "WELCOMEMESSAGE": "Tervitussõnum",
index 0d93402..75fb8d9 100644 (file)
 {
   "STAFF": {
-    "HOTDESK": "Hot desk",
-    "ENABLEVIDEORECORDING": "Enable Video Recording",
-    "OLD_PASSWORD": "Old Password",
-    "ENABLEJAWSINTEGRATION": "Enable Jaws Integration",
+    "HOTDESK": "Hostseade",
+    "ENABLEVIDEORECORDING": "Luba Videosalvestus",
+    "OLD_PASSWORD": "Vana Parool",
+    "ENABLEJAWSINTEGRATION": "Luba Jaws Integreerimine",
     "ALIAS": "Alias",
-    "NO_PASSWORD_CHANGE": "No Password Change",
-    "SECURITY_SUITE": "Security Suite",
-    "LAST_PASSWORD_RESET_AT": "Last Password Reset At",
+    "NO_PASSWORD_CHANGE": "Parooli Muutmine puudub",
+    "SECURITY_SUITE": "Turvapakett",
+    "LAST_PASSWORD_RESET_AT": "Viimase Parooli Lähtestamise aeg",
     "SIP_WEBRTC": "Sip",
-    "SETTINGS_WEBRTC": "Settings",
+    "SETTINGS_WEBRTC": "Sätted",
     "WEBRTC": "WebRTC",
-    "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",
+    "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",
     "ERRORS": {
-      "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 ~!?*@#$%^&-_=+[{]}.",
+      "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 ~!?*@#$%^&-_=+[{]}.",
       "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": "Account",
-    "VOICE": "Voice",
-    "CREATED_AT": "Created At",
-    "ROLE": "Role",
-    "PERSONAL_INFO": "Personal Info",
-    "DESCRIPTION": "Description",
-    "CHANGE_AVATAR": "Change Avatar",
-    "GENERAL": "General",
-    "INTERNAL": "Internal",
+    "ACCOUNT": "Konto",
+    "VOICE": "Hääl",
+    "CREATED_AT": "Loomisaeg",
+    "ROLE": "Roll",
+    "PERSONAL_INFO": "Isiklik Teave",
+    "DESCRIPTION": "Kirjeldus",
+    "CHANGE_AVATAR": "Muuda Avatari",
+    "GENERAL": "Üldine",
+    "INTERNAL": "Sisemine",
     "TRANSPORT": "Transport",
-    "ALLOWCODECS": "Allowed Codecs",
+    "ALLOWCODECS": "Lubatud Koodeks",
     "HELP": {
-      "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”",
+      "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ā€¯",
       "BLOCKED": "Juurdepääsu lukustamine / avamine",
       "CUSTOM_DASHBOARDS_PERMISSIONS": "Kohandatud juhtpaneelide õigusi hallatakse moodulis Tööriistad",
-      "DISABLED": "valige uuesti deaktiveerimiseks deaktiveerimine / tühistamine",
+      "DISABLED": "Vali 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": "New Password",
-    "CONFIRM_PASSWORD": "Confirm Password",
-    "CHANGE_PASSWORD": "Change Password",
-    "CHANGEPASSWORD_AGENT": "Change Password",
-    "CHANGEPASSWORD_USER": "Change Password",
-    "CHANGEPASSWORD_TELEPHONE": "Change Password",
-    "LOGININPAUSE": "Login In Pause",
+    "NEW_PASSWORD": "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",
     "HOST": "Host",
     "NAT": "NAT",
     "CHANSPY": "ChanSpy",
-    "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",
+    "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",
     "SIP": "SIP",
-    "SIPEXPIRES": "SIP Expires [sec]",
+    "SIPEXPIRES": "SIP aegub [sek]",
     "SIPPORT": "SIP Port",
-    "PENALTY": "Penalty",
-    "ACCOUNTNAME": "Account Name",
-    "ADD_TELEPHONE": "Add Telephone",
-    "EDIT_TELEPHONE": "Edit Telephone",
-    "DELETE_TELEPHONE": "Delete Telephone",
-    "TEAMS": "Teams",
-    "DELETE_TEAM": "Delete Team",
-    "AGENTADD_TEAM": "Add Agents to Team",
-    "EDIT_TEAM": "Edit Team",
-    "TYPE": "Type",
-    "TELEPHONES": "Telephones",
-    "CALLERID": "Caller ID",
-    "ENABLERECORDING": "Enable Recording",
-    "STAFF": "Staff",
-    "ID": "Id",
-    "NEW_USER": "New User",
-    "NEW_AGENT": "New Agent",
-    "NEW_TELEPHONE": "New Telephone",
-    "NEW_TEAM": "New Team",
-    "ADD_TEAM": "Add Team",
-    "JOIN_QUEUE": "Join Queue",
-    "CAPACITY": "Capacity",
-    "AUTOINTERNAL": "Auto generate internal number",
-    "ADD_AGENT_TO_TEAM": "Add Agent to Team",
-    "TEAMADD_AGENT": "Add Agent to Team",
-    "NO_AVAILABLE_INFO": "No available info",
-    "PERMISSIONS": "Permissions",
-    "ADD_AGENT_TO_QUEUE": "Add Agent to Queue",
-    "ALL_MODULES_AVAILABLE": "All modules available",
-    "CALLGROUP": "Call Group",
-    "PICKUPGROUP": "Pickup Group",
-    "ADD_AGENT_TO_QUEUE_CAMPAIGNS": "Add Agent to Queue Campaigns",
-    "ADD_AGENT_TO_VOICE_QUEUES": "Add Agent to Voice Queues",
-    "ADD_AGENT_TO_CHAT_QUEUES": "Add Agent to Chat Queues",
-    "ADD_AGENT_TO_MAIL_QUEUES": "Add Agent to Email Queues",
-    "ADD_AGENT_TO_SMS_QUEUES": "Add Agent to SMS Queues",
-    "ADD_AGENT_TO_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",
+    "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",
     "OF": "of",
-    "CALLFORWARDING": "Call Forwarding",
-    "DND": "Do not disturb during pause",
-    "UNANSWEREDCALLBADGE": "Show unanswered call badge",
-    "ENABLEDTMFTONE": "Enable Dtmf tones",
-    "AUTOANSWERDELAY": "Auto Answer Delay [s]",
-    "ENCRYPTION": "Encryption",
-    "CHANNELS": "Channels",
-    "CHAT": "Chat",
-    "SMS": "Sms",
-    "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",
+    "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",
     "ALL_WHATSAPPACCOUNTS": "Kõik WhatsApi kontod",
-    "ALL_WHATSAPPQUEUES": "Kõik Whataspi järjekorrad",
+    "ALL_WHATSAPPQUEUES": "Kõik Whataspi jäjekorrad",
     "APIKEY": "API-võti",
     "APIKEYMANAGER_USER": "API võtmehaldur",
     "BLOCKED": "Lukustatud",
     "CANCEL": "Tühista",
     "CLONE_USERPROFILE": "Kloonide kasutaja profiil",
-    "CLOSE": "Sulge",
-    "CONFIRM": "Kinnitage",
+    "CLOSE": "Sule",
+    "CONFIRM": "Kinnita",
     "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": "Genereerima",
+    "GENERATE": "Genereeri",
     "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": "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_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_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?",
-    "ADD_AGENT_TO_WHATSAPP_QUEUES": "Lisage agent WhatsApp'i järjekorda",
-    "QUEUEADD_USER_WHATSAPP_INBOUND": "Lisage kasutaja WhatsApp'i järjekorda",
+    "QUEUEADD_AGENT_WHATSAPP_INBOUND": "Lisage agent WhatsAppi järjekorda",
+    "QUEUEADD_USER_WHATSAPP_INBOUND": "Lisage kasutaja WhatsAppi järjekorda",
     "QUEUES_ASSOCIATION": "{{channel}} Järjekordade liit",
     "READ_PERMISSION": "Loe",
-    "REGENERATE": "Regenereerige",
+    "REGENERATE": "Regenereeri",
     "REMOVE": "Eemalda",
     "REPORT_TYPE": "Aruande tüüp",
     "SECTIONS": "Sektsioonid",
-    "SELECTED_WHATSAPP_QUEUES": "Valitud WhatsApi järjekorrad",
+    "SELECTED_QUEUES_WHATSAPP_INBOUND": "Valitud WhatsApi järjekorrad",
     "SELECTED_WHATSAPPACCOUNTS": "Valitud WhatsApi kontod",
     "SELECTED_WHATSAPPQUEUES": "Valitud WhatsApi järjekorrad",
     "SUMMARY": "Kokkuvõte",
-    "TEAMS_ASSOCIATION": "Võistkondade liit",
-    "USERADD_WHATSAPPACCOUNTS": "Lisage kasutajale WhatsApi konto",
-    "USERADD_WHATSAPPQUEUES": "Lisage kasutajale Whataspp Queue",
+    "TEAMS_ASSOCIATION": "Tiimidee liit",
+    "USERADD_WHATSAPPACCOUNTS": "Lisa kasutajale WhatsApi konto",
+    "USERADD_WHATSAPPQUEUES": "Lisa kasutajale WhatasApi Järjekord",
     "USERPROFILE": "Kasutajaprofiil",
     "USERPROFILES": "Kasutajaprofiilid",
     "VIDEOSUPPORT": "Video tugi",
-    "WHATSAPP": "WhatsApp-pistik",
-    "WHATSAPPCAPACITY": "WhatsApp-pistiku maht",
-    "MASK_SENSITIVE_DATA": "Maski tundlikud andmed",
+    "WHATSAPP": "WhatsApp ühendus",
+    "WHATSAPPCAPACITY": "WhatsApp ühenduse maht",
+    "MASK_SENSITIVE_DATA": "Maskeeri tundlikud andmed",
     "WSS_PORT": "WSS-port",
     "ATTACHMENTS": "Manused",
     "CALLYSQUARE_RECORDINGS": "Cally Square salvestused",
-    "CONTACT_MANAGER_LISTS": "Kontaktihalduri loendid",
+    "CONTACT_MANAGER_LISTS": "Kontakti Halduri loendid",
     "DOWNLOADS": "Allalaadimised",
     "DOWNLOAD_PERMISSIONS": "Allalaadimisõigused",
     "JSCRIPTY_SESSIONS": "Jscripty seansid",
-    "OMNICHANNEL_INTERACTIONS": "Omikanalilised koostoimed",
+    "OMNICHANNEL_INTERACTIONS": "Mitme kanaliga suhtlused",
     "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",
-    "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]"
+    "CLIENT_LOGS_ENABLED_MSG": "Teie kasutaja jaoks on kliendilogid lubatud"
   }
 }
index 48b85d3..e2ccdbf 100644 (file)
 {
   "TOOLS": {
-    "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",
+    "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",
     "LINK": "Link [https://]",
-    "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",
+    "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",
     "T38PT_UDPTL": "T38pt Udptl",
-    "CALL": "Call",
-    "NAME": "Name",
-    "TRUNKS": "Trunks",
-    "SEARCH_FOR_ANYONE": "Search",
+    "CALL": "Kõne",
+    "NAME": "Nimi",
+    "TRUNKS": "Magistraalid",
+    "SEARCH_FOR_ANYONE": "Otsi",
     "ERRORS": {
-      "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",
+      "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",
       "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": "Secret",
-    "DEFAULTUSER": "Default User",
-    "DESCRIPTION": "Description",
-    "ADD_TRUNK": "Add Trunk",
+    "SECRET": "Saladus",
+    "DEFAULTUSER": "Vaikimisi Kasutaja",
+    "DESCRIPTION": "Kirjeldus",
+    "ADD_TRUNK": "Lisa Magistraal",
     "HELP": {
-      "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",
+      "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",
       "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": "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.",
+      "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.",
       "MANAGED": "Lõpetatud interaktsioonide koguarv",
       "OPENED": "Aktiivsete interaktsioonide koguarv"
     },
-    "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",
+    "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",
     "NAT": "NAT",
-    "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",
+    "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",
     "PORT": "Port",
     "TRANSPORT": "Transport",
-    "SAVE": "Save",
-    "VARIABLES": "Variables",
-    "ADD_VARIABLE": "Add Variable",
-    "EDIT_VARIABLE": "Edit Variable",
-    "DELETE_VARIABLE": "Delete Variable",
-    "SELECTED": "Selected",
-    "SELECT_ALL": "Select All",
-    "SELECT_NONE": "Select None",
-    "TAGS": "Tags",
-    "ADD_TAG": "Add Tag",
-    "EDIT_TAG": "Edit Tag",
-    "DELETE_TAG": "Delete Tag",
-    "PAUSES": "Pauses",
-    "ADD_PAUSE": "Add Pause",
-    "EDIT_PAUSE": "Edit Pause",
-    "DELETE_PAUSE": "Delete Pause",
-    "CANNEDANSWERS": "Canned Answers",
-    "ADD_CANNEDANSWER": "Add Canned Answer",
-    "EDIT_CANNEDANSWER": "Edit Canned Answer",
-    "DELETE_CANNEDANSWER": "Delete Canned Answer",
-    "KEY": "Key",
-    "VALUE": "Value",
-    "SOUNDS": "Sounds",
-    "EDIT_SOUND": "Edit Sound",
-    "DELETE_SOUND": "Delete Sound",
-    "CANCEL": "Cancel",
-    "FINISH": "Finish",
-    "DROP_TO_UPLOAD": "Drop To Upload",
-    "UPLOADING": "Uploading",
-    "TRIGGERS": "Triggers",
-    "EDIT_TRIGGER": "Edit Trigger",
-    "DELETE_TRIGGER": "Delete Trigger",
-    "ADD_TRIGGER": "Add Trigger",
-    "DELETE": "Delete",
-    "AUTOMATIONS": "Automations",
-    "EDIT_AUTOMATION": "Edit Automation",
-    "DELETE_AUTOMATION": "Delete Automation",
-    "ADD_AUTOMATION": "Add Automation",
-    "INTERVALS": "Intervals",
-    "EDIT_INTERVAL": "Edit Interval",
-    "DELETE_INTERVAL": "Delete Interval",
-    "ADD_INTERVAL": "Add Interval",
-    "TOOLS": "Tools",
-    "ID": "Id",
+    "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",
     "AUDIO": "Audio",
-    "DOWNLOAD_SOUND": "Download Sound",
-    "UPLOAD_SOUND": "Tools",
-    "CHANNEL": "Channel",
-    "NEW_TRIGGER": "New Trigger",
-    "GENERAL": "General",
-    "STATUS": "Status",
-    "CONDITIONS&ACTIONS": "Conditions & Actions",
-    "ALLCONDITIONS": "Meet all these conditions:",
-    "ANYCONDITIONS": "Meet any of these conditions:",
-    "ACTIONS": "Actions:",
-    "NEW_AUTOMATION": "New Automation",
-    "TIMEOUT": "Timeout",
-    "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",
+    "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",
     "AUG": "August",
     "SEP": "September",
-    "OCT": "October",
+    "OCT": "Oktober",
     "NOV": "November",
-    "DEC": "December",
-    "PASSWORD": "Password",
-    "CUSTOMDASHBOARDS": "Custom Dashboards",
-    "NEW_CUSTOMDASHBOARD": "New Custom Dashboard",
-    "ADD_CUSTOMDASHBOARD": "Add Custom Dashboard",
-    "EDIT_CUSTOMDASHBOARD": "Edit Custom Dashboard",
-    "DELETE_CUSTOMDASHBOARD": "Delete Custom Dashboard",
-    "SCHEDULER": "Scheduler",
-    "NEW_SCHEDULE": "New Schedule",
-    "ADD_SCHEDULE": "Add Schedule",
-    "EDIT_SCHEDULE": "Edit Schedule",
-    "DELETE_SCHEDULE": "Delete Schedule",
-    "SENDMAIL": "Send Email",
-    "CONFIGURATION": "Configuration",
-    "MAIL": "Email",
-    "REPORTTYPE": "Report Type",
-    "REPORT": "Report",
-    "OUTPUT": "Output",
-    "EXECUTEON": "Execute On",
-    "REPORTRANGE": "Report Range",
-    "VALIDITYSTART": "Start Time",
-    "VALIDITYEND": "End Time",
-    "EXECUTEEVERY": "Execute every",
-    "ACCOUNT": "Account",
-    "EMAILADDRESS": "Email Address",
-    "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",
+    "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",
     "CSV": "CSV",
     "PDF": "PDF",
-    "15MIN": "15 minutes",
-    "30MIN": "30 minutes",
-    "1H": "1 hour",
-    "VOICE": "Voice",
-    "CHAT": "Chat",
+    "15MIN": "15 minutit",
+    "30MIN": "30 minutit",
+    "1H": "1 tund",
+    "VOICE": "Hääl",
+    "CHAT": "Vestlus",
     "SMS": "SMS",
-    "OPENCHANNEL": "Open Channel",
-    "TEMPLATES": "Templates",
-    "EDIT_TEMPLATE": "Edit Template",
-    "DELETE_TEMPLATE": "Delete Template",
-    "NEW_TEMPLATE": "New Template",
-    "ADD_TEMPLATE": "Add Template",
-    "CONTENT": "Content",
-    "FIELD": "Field",
-    "NO_ANYCONDITION_AVAILABLE": "No Conditions available",
-    "NO_ALLCONDITION_AVAILABLE": "No Conditions available",
-    "NO_ACTION_AVAILABLE": "No Actions available",
-    "ACTION": "Action",
-    "EDIT_ANYCONDITION": "Edit Condition",
-    "DELETE_ANYCONDITION": "Delete Condition",
-    "NEW_ANYCONDITION": "New Condition",
-    "ADD_ANYCONDITION": "Add Condition",
-    "EDIT_ALLCONDITION": "Edit Condition",
-    "DELETE_ALLCONDITION": "Delete Condition",
-    "NEW_ALLCONDITION": "New Condition",
-    "ADD_ALLCONDITION": "Add Condition",
-    "EDIT_ACTION": "Edit Action",
-    "DELETE_ACTION": "Delete Action",
-    "NEW_ACTION": "New Action",
-    "ADD_ACTION": "Add Action",
-    "QUEUE": "Queue",
-    "CALL_STATUS": "Call Status",
-    "OUTBOUNDROUTE": "Outbound Route",
-    "EQUALS": "Equals",
-    "NOT_EQUALS": "Not Equals",
-    "CONTACT_MANAGER": "Contacts Manager",
-    "INTEGRATIONS": "Integrations",
-    "MOTIONBAR": "Motion Bar",
+    "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",
     "JSCRIPTY": "Jscripty",
-    "URL_FORWARD": "URL Forward",
-    "WEB_POPUP": "Web Popup",
-    "LIST": "List",
-    "INTEGRATION": "Integration",
-    "TEMPLATE": "Template",
+    "URL_FORWARD": "URL Edastamine",
+    "WEB_POPUP": "Veebi Hüpik",
+    "LIST": "Loend",
+    "INTEGRATION": "Integratsioon",
+    "TEMPLATE": "Mall",
     "URL": "URL",
-    "APPLICATION": "Application",
+    "APPLICATION": "Rakendus",
     "ARGUMENTS": "Arguments",
-    "NO_APPS_AVAILABLE": "No applications available",
-    "NEW_INTERVAL": "New Interval",
-    "OPERATOR": "Operator",
-    "NO_INTERVALS_AVAILABLE": "No intervals available",
-    "YES": "Yes",
-    "NO": "No",
-    "SUBJECT": "Subject",
-    "NO_AVAILABLE_INFO": "No available info",
-    "BROWSER": "Browser",
-    "INTERVAL": "Interval",
+    "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",
     "INFO": "Info",
-    "TIME_RANGE": "Time Range",
-    "WEEK_DAYS": "Week Days",
-    "MONTH_DAYS": "Month Days",
-    "MONTHS": "Months",
-    "DROP_TO_UPLOAD_MESSAGE": "Drop audio files here to upload. Only MP3, WAV, GSM - Max. 15MB",
-    "POLLING_INTERVAL": "Polling Interval (seconds)",
-    "DASHBOARD": "Dashboard",
-    "NEW_DASHBOARDITEM": "New Dashboard Widget",
-    "COUNTER": "Counter",
+    "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",
     "IFRAME": "IFrame",
-    "CLOCK": "Clock",
-    "ADD_DASHBOARDITEM": "Add Dashboard Widget",
-    "EDIT_WIDGET": "Edit Widget",
-    "DELETE_WIDGET": "Delete Widget",
-    "FLIP_WIDGET": "Flip Widget",
-    "TITLE": "Title",
-    "UPDATE": "Update",
-    "LAYOUT": "Layout",
-    "BACKGROUND_COLOR": "Background Color",
-    "FOREGROUND_COLOR": "Foreground Color",
-    "FOREGROUND_TITLE_COLOR": "Foreground Title Color",
-    "THEME": "Theme",
-    "LIGHT": "Light",
-    "DARK": "Dark",
-    "TIMEZONE": "TimeZone",
-    "DIGITAL_FORMAT": "Digital Date Format",
-    "TOOLS_QUERY": "Query",
-    "SELECT": "Select",
-    "WHERE": "Where",
-    "BACK": "Back",
-    "PROJECT": "Project",
-    "GOTOREALTIME_TRUNK": "Go To Realtime Trunk",
-    "GOTO_TRUNK": "Go To Trunk",
+    "CLOCK": "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",
     "CRON": "Cron",
-    "MINUTES": "Minutes",
-    "HOURLY": "Hourly",
-    "YEARLY": "Yearly",
-    "EVERY": "Every",
-    "MINUTE": "Minute",
-    "ON_SECOND": "On second",
-    "HOUR_ON_MINUTE": "Hour on minute",
-    "AND_SECOND": "And second",
+    "MINUTES": "Minutid",
+    "HOURLY": "Igatunnine",
+    "YEARLY": "Iga-aastane",
+    "EVERY": "Iga",
+    "MINUTE": "Minut",
+    "ON_SECOND": "Teisel",
+    "HOUR_ON_MINUTE": "Tund minutil",
+    "AND_SECOND": "Ja teine",
     "DAY_AT": "Day at",
-    "START_TIME": "Start Time",
+    "START_TIME": "Algusaeg",
     "ON_THE": "On the",
     "OF_EVERY": "Of every",
     "MONTH_AT": "Month at",
     "AT": "At",
-    "LAST": "Last",
-    "LASTUNIT": "Unit",
-    "MAILACCOUNT": "Email Account",
+    "LAST": "Eelmine",
+    "LASTUNIT": "Üksus",
+    "MAILACCOUNT": "E-maili Konto",
     "OF": "of",
-    "PAST_THE_HOUR": "Past the hour",
-    "DAY": "Day",
-    "WEEK": "Week",
-    "YEAR": "Year",
+    "PAST_THE_HOUR": "Üle täistunni",
+    "DAY": "Päev",
+    "WEEK": "Nädal",
+    "YEAR": "Aasta",
     "ON": "On",
-    "PAI": "P-Asserted-Identity",
-    "PAGE": "Page",
-    "ROWSPERPAGE": "Rows per page",
-    "EVENTVARIABLES": "Event Variables",
-    "AUTOCREATECONTACT": "Create contact automatically",
-    "LOCATION": "Location",
-    "NEW_TAB": "New Tab",
-    "NEW_WINDOW": "New Window",
-    "WINDOWWIDTH": "Window Width(px)",
-    "WINDOWHEIGHT": "Window Height(px)",
-    "BODY": "Body",
-    "REPORTFOLDER": "Report Folder",
-    "REPORTSUBFOLDER": "Report Subfolder",
+    "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",
     "AGENT": "Agent",
     "HEADERS": "Päised",
     "MOTION_TAB": "Uus esindaja juhtpaneeli vahekaart",
     "SCRIPT_INFO": "Info",
     "SCRIPT_TYPE": "Tüüp",
     "VIDEOSUPPORT": "Video tugi",
-    "WHATSAPP": "WhatsApp-pistik",
+    "WHATSAPP": "WhatsApp-ühendus",
     "AUTOCREATE_FIELD": "Automaatne välja loomine",
-    "GLOBALS": "Globaalid",
+    "GLOBALS": "Üldised",
     "SEARCH_FIELDS": "Otsinguväljad",
     "STANDARD": "Standard",
-    "MOTION_BAR": "Motion Bar",
+    "MOTION_BAR": "Liikumisriba",
     "ALL": "Kõik",
-    "ALL_DISPOSITIONS": "Kõik dispositsioonid",
-    "FIRST_LEVEL_DISPOSITION": "Esimese taseme käsutus",
+    "ALL_DISPOSITIONS": "Kõik kasutused",
+    "FIRST_LEVEL_DISPOSITION": "Esimese taseme kasutus",
     "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",
-    "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!"
+    "OFFLINE_MESSAGE": "Võrguühenduseta sõnum"
   }
 }
index 116fbad..3b220a5 100644 (file)
     "CLOSEDAT": "Salvestage lõpuaeg",
     "CREATEDAT": "Loodud kell",
     "DELETE": "Kustuta",
-    "DELETE_SCREENRECORDING": "Kustutage ekraanisalvestus",
-    "DOWNLOAD_SCREENRECORDING": "Laadige alla ekraanisalvestus",
+    "DELETE_SCREENRECORDING": "Kustuta ekraanisalvestus",
+    "DOWNLOAD_SCREENRECORDING": "Laadi alla ekraanisalvestus",
     "DURATION": "Kestus",
     "EDIT_SCREENRECORDING": "Hinda ekraani salvestust",
     "FILE_NOT_FOUND": "Faili ei leitud",
     "FORMAT": "Vorming",
-    "ID": "Id",
-    "INTERACTIONID": "Koostoime ID",
-    "NO_AVAILABLE_INFO": "Pole saadaval teavet",
+    "ID": "ID",
+    "INTERACTIONID": "Suhtluse ID",
+    "NO_AVAILABLE_INFO": "Teave pole saadaval",
     "NO_RATING": "Hinnang puudub",
-    "OF": "kohta",
-    "PAGE": "Leht",
+    "OF": "of",
+    "PAGE": "Lehekülg",
     "PLAY_SCREENRECORDING": "Esita ekraanisalvestus",
-    "PROPERTIES": "Omadused",
+    "PROPERTIES": "Atribuudid",
     "RATING": "Hinnang",
-    "RECORDENDTIME": "Salvestage lõpuaeg",
-    "RECORDSTARTTIME": "Salvestage algusaeg",
-    "ROWSPERPAGE": "Ridasid lehel",
+    "RECORDENDTIME": "Salvesta lõpuaeg",
+    "RECORDSTARTTIME": "Salvesta algusaeg",
+    "ROWSPERPAGE": "Ridu lehekülje kohta",
     "SAVE": "Salvesta",
     "SCREENRECORDINGS": "Ekraanisalvestused",
     "SEARCH_FOR_ANYONE": "Otsing",
-    "STARTEDAT": "Salvestage algusaeg",
+    "STARTEDAT": "Salvesta algusaeg",
     "UPDATEDAT": "Viimane uuendus",
     "VIDEO": "Video",
     "WRONG_EXTENSION": "Failis on vale laiend"
index e8fc04a..fe28adb 100644 (file)
 {
   "VOICE": {
-    "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",
+    "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",
     "LEGEND": {
-      "CUSTOM_APPLICATION": "(*) - Custom application"
+      "CUSTOM_APPLICATION": "(*) - Kohandatud rakendus"
     },
     "ERRORS": {
-      "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",
+      "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",
       "CONFIRM_NOT_MATCH": "The passwords don't match",
-      "TIMEZONE_REQUIRED": "Mandatory field",
-      "PREFIX_REQUIRED": "Mandatory field",
-      "OPTIONS_REQUIRED": "Mandatory field",
-      "AFTERCALLWORKDURATION_REQUIRED": "Mandatory field",
-      "TECHNOLOGY/RESOURCE_REQUIRED": "Mandatory field",
-      "PHONE_REQUIRED": "Mandatory field",
-      "VALUE_REQUIRED": "Mandatory field",
-      "EXTENSION_REQUIRED": "Mandatory field",
-      "PRIORITY_REQUIRED": "Mandatory field",
-      "APPLICATION_REQUIRED": "Mandatory field",
-      "OUTBOUNDROUTE_REQUIRED": "Mandatory field",
-      "TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
-      "MAXLENGTH_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
-      "RETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
-      "WRAPUPTIME_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
-      "WEIGHT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
-      "ANNOUNCEFREQUENCY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
-      "MINANNOUNCEFREQUENCY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
-      "PERIODICANNOUNCEFREQUENCY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
-      "AFTERCALLWORKDURATION_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
-      "MEMBERDELAY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
-      "POSITION_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
-      "CUTDIGITS_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
-      "MAXSECONDS_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
-      "MAXMESSAGES_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
-      "MAXMESSAGES_MUST_BE_LESS_THAN_OR_EQUAL_TO": "The value must be less than or equal to",
-      "NAME_MUST_VALID_PATTERN": "Wrong format",
-      "CALLERIDALL_MUST_VALID_PATTERN": "Wrong format",
-      "CALLER_ID_MUST_VALID_PATTERN": "Wrong format",
+      "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",
       "MANDATORYDISPOSITIONPAUSEID_REQUIRED": "Kohustuslik väli",
       "PROJECT_REQUIRED": "Kohustuslik väli",
-      "PENALTY_REQUIRED": "Peate määrama karistuse väärtuse"
+      "PENALTY_REQUIRED": "Tuleb määrata karistuse väärtus"
     },
-    "GENERAL": "General",
-    "TIMEOUT": "Timeout",
-    "MAXLENGTH": "Maximum Length",
-    "RETRY": "Retry",
-    "WRAPUPTIME": "Wrapup Time",
-    "WEIGHT": "Weight",
-    "JOINWHENEMPTY": "Join when empty",
-    "LEAVEWHENEMPTY": "Leave when empty",
+    "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",
     "HELP": {
-      "TIMEOUT": "How many seconds to ring a device",
-      "MAXLENGTH": "Maximum number of callers allowed to wait in a queue: zero means unlimited",
-      "RETRY": "Time in seconds to wait before calling the next agent in queue when the timeout is expired",
-      "WRAPUPTIME": "Time in seconds to keep a queue member unavailable after completing a call",
-      "WEIGHT": "Weight of a queue in order to define priority if members are associated with multiple queues",
-      "JOINWHENEMPTY": "Used to control whether a caller is passed to a queue when no members are available",
-      "LEAVEWHENEMPTY": "Used to control whether callers are made leave the queue when no members are available to take calls",
-      "ANNOUNCEFREQUENCY": "How often to announce the caller’s position and/or estimated hold time in the queue (zero to disable)",
-      "MINANNOUNCEFREQUENCY": "Minimum announcement frequency (useful when the caller’s position changes frequently)",
-      "PERIODICANNOUNCEFREQUENCY": "Frequency of periodic announcements to the caller",
-      "ANNOUNCEPOSITIONLIMIT": "Used if announce-position is defined as either 'limit' or 'more'",
-      "AFTERCALLWORKDURATION": "Pause length triggered by the After Call Work option",
-      "MEMBERDELAY": "Inserts a delay prior to the caller and agent in queue get connected",
-      "MUSICONHOLD": "Sets the music class to use for a particular queue",
-      "ANNOUNCETOAGENT": "Play an announcement to the agent answering the call (typically to let him know what queue the caller is coming from)",
-      "RANDOMPERIODICANNOUNCE": "If yes, the defined periodic announcements will be played random",
-      "ANNOUNCEHOLDTIME": "Plays the estimated hold time along with the periodic announcements (Yes/No/Once)",
-      "ANNOUNCECALLERPOSITION": "Used to define if the caller’s position in the queue should be announced: No=never; Yes=always; Limit=only if it is within the limit defined by announce-position-limit; More= only if it is beyond the value defined by announce-position-limit",
-      "REPORTHOLDTIMEAGENT": "Enables reporting caller’s hold time to the agent in queue prior to connection",
-      "PERIODICANNOUNCE": "Set of periodic announcements to be played (in the order)",
-      "HOLDTIMEANNOUNCE": "Choose a Sound defined in Tools. Default=“Hold time”. Undefined=no announcement",
-      "YOUARENEXTANNOUNCE": "Choose a Sound defined in Tools. Default=“You are now first in line”. Undefined=no announcement",
-      "THEREAREANNOUNCE": "Choose a Sound defined in Tools. Default=“There are”. Undefined=no announcement",
-      "WAITINGCALLSANNOUNCE": "Choose a Sound defined in Tools. Default=“calls waiting”. Undefined=no announcement",
-      "ESTIMATEDHOLDTIMEANNOUNCE": "Choose a Sound defined in Tools. Default=“The current estimated hold time is”. Undefined=no announcement",
-      "MINUTESANNOUNCE": "Choose a Sound defined in Tools. Default=“minutes”. Undefined=no announcement",
-      "MINUTEANNOUNCE": "Choose a Sound defined in Tools. Default=“minute”. Undefined=no announcement",
-      "SECONDSANNOUNCE": "Choose a Sound defined in Tools. Default=“seconds”. Undefined=no announcement",
-      "THANKYOUANNOUNCE": "Choose a Sound defined in Tools. Default=“Thank you for your patience”. Undefined=no announcement",
-      "AFTERCALLWORK": "If enabled, the agent will be set on Pause after completing a call",
-      "AUTOPAUSE": "Enables/disables the automatic pause of agents who fail to answer a call. If enabled it causes the agent to be paused in all queues he belongs to",
-      "RINGINUSE": "To avoid/allow sending calls to members whose status is In Use",
-      "TIMEOUTRESTART": "If yes, this resets the timeout for an agent to answer when either a BUSY or CONGESTION status is received from the channel",
-      "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",
+      "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",
       "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": "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",
+    "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",
     "CHANSPY": "ChanSpy",
-    "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",
+    "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",
     "AGI": "Agi",
-    "DIAL": "Dial",
+    "DIAL": "Valimine",
     "CALLYSQUARE": "CallySquare",
-    "INTERNALDIAL": "Internal Dial",
-    "EXTERNALDIAL": "External Dial",
-    "RINGGROUP": "Ring Group",
-    "PLAYBACK": "Playback",
-    "QUEUE": "Queue",
-    "SET": "Set",
-    "VOICEMAIL": "Voicemail",
+    "INTERNALDIAL": "Sisemine Valimine",
+    "EXTERNALDIAL": "Välimine Valimine",
+    "RINGGROUP": "Helistamise Grupp",
+    "PLAYBACK": "Taasesitus",
+    "QUEUE": "Järjekord",
+    "SET": "Määra",
+    "VOICEMAIL": "Häälkõne",
     "GOTO": "GoTo",
-    "HANGUP": "Hangup",
-    "CUSTOM": "Custom",
-    "PROJECT": "Cally-Square Project",
-    "TECHNOLOGY/RESOURCE": "Technology/Resource",
+    "HANGUP": "Katkestamine",
+    "CUSTOM": "Kohandatud",
+    "PROJECT": "Cally-Square Projekt",
+    "TECHNOLOGY/RESOURCE": "Tehnoloogia/Ressurss",
     "URL": "URL",
-    "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",
+    "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",
     "GOSUB": "GoSub",
-    "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",
+    "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",
     "CHANSPIES": "ChanSpy",
-    "VOICE": "Voice",
-    "REALTIME": "Realtime",
-    "ID": "Id",
-    "VOICEMAIL_CONTEXT": "Context",
-    "NO_MOHSOUND_AVAILABLE": "No Music On Hold available",
-    "FILE": "File",
-    "ADD_MOHSOUND": "Add Music On Hold sound",
-    "DOWNLOAD_MOHSOUND": "Download Music On Hold sound",
-    "DELETE_MOHSOUND": "Delete Music On Hold sound",
-    "UNIQUEID": "Unique ID",
+    "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",
     "AGENT": "Agent",
-    "TYPE": "Type",
-    "RATING": "Rating",
+    "TYPE": "Tüüp",
+    "RATING": "Hinnang",
     "AUDIO": "Audio",
-    "DATE": "Date",
-    "NEW_VOICEQUEUE": "New Voice Queue",
-    "NEW_INBOUNDROUTE": "New Inbound Route",
-    "NEW_OUTBOUNDROUTE": "New Outbound Route",
-    "NEW_INTERNALROUTE": "New Internal Route",
-    "NEW_CONTEXT": "New Context",
-    "NEW_VOICEMAIL": "New Voicemail",
-    "NEW_MUSICONHOLD": "New Music On Hold",
-    "NEW_CHANSPY": "New ChanSpy",
-    "PENALTY": "Penalty",
-    "ADD_TEAM_TO_VOICEQUEUE": "Add Team to Voice Queue",
-    "ADD_AGENT_TO_VOICEQUEUE": "Add Agent to Voice Queue",
-    "EDIT_DIAL": "Edit Dial",
-    "EDIT_AGI": "Edit AGI",
-    "EDIT_INTERNALDIAL": "Edit Internal Dial",
-    "EDIT_EXTERNALDIAL": "Edit External Dial",
-    "EDIT_RINGGROUP": "Edit Ring Group",
-    "EDIT_PLAYBACK": "Edit Playback",
-    "EDIT_QUEUE": "Edit Queue",
-    "EDIT_SET": "Edit Set",
-    "EDIT_GOTO": "Edit GoTo",
-    "EDIT_HANGUP": "Edit Hangup",
-    "EDIT_CUSTOM": "Edit Custom",
-    "DURATION": "Duration",
-    "RECEIVED_AT": "Received At",
-    "YES": "Yes",
-    "NO": "No",
-    "HANGUPCAUSE_1": "1 = Unallocated number",
-    "HANGUPCAUSE_16": "16 = Normal call clearing",
-    "HANGUPCAUSE_17": "17 = User busy",
-    "HANGUPCAUSE_18": "18 = No user responding (telehone device not connected)",
-    "HANGUPCAUSE_21": "21 = Call rejected",
-    "HANGUPCAUSE_22": "22 = Number changed",
-    "HANGUPCAUSE_27": "27 = Destination out of order",
-    "HANGUPCAUSE_38": "38 = Network out of order",
-    "HANGUPCAUSE_41": "41 = Temporary failure",
-    "RANDOM": "Random",
-    "ALPHABETICAL": "Alphabetical",
-    "NO_APPS_AVAILABLE": "No applications available",
-    "DOWNLOAD_VOICERECORDING": "Download Voice Recording",
-    "DELETE_VOICERECORDING": "Delete Voice Recording",
-    "INTERNAL": "Internal",
-    "PHONE_STATE": "Phone State",
-    "PHONE_STATUS": "Phone Status",
-    "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",
+    "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",
     "INFO": "Info",
-    "TRUNKS": "Trunks",
-    "REGISTRY": "Registry",
-    "NO_REGISTRY": "No Registry",
-    "LOGGED_IN": "Logged In (SIP Connected)",
-    "PAUSED": "Paused",
-    "WAITING": "Waiting",
-    "TALKING": "Talking",
+    "TRUNKS": "Magistraalid",
+    "REGISTRY": "Register",
+    "NO_REGISTRY": "Register puudub",
+    "LOGGED_IN": "Sisse logitud (SIP Ühendusega)",
+    "PAUSED": "Pausil",
+    "WAITING": "OOtel",
+    "TALKING": "Rääkimine",
     "DID": "DID",
-    "CALLER": "Caller",
-    "TOTAL": "Total",
-    "ANSWERED": "Answered",
-    "ABANDONED": "Abandoned",
-    "UNMANAGED": "Unmanaged",
-    "AVG_HOLD_TIME": "Avg Hold Time",
-    "AVG_DURATION": "Av Duration",
-    "AVG_BILLABLE": "Avg Billable",
-    "SOURCE": "Source",
-    "DESTINATION": "Destination",
-    "REJECTED": "Rejected",
-    "FAILED": "Failed",
-    "CALLED": "Called",
-    "CONNECTED": "Connected",
-    "NO_RATING": "No rating",
-    "EDIT_VOICERECORDING": "Edit Voice Recording",
-    "APPLICATION_NAME": "Application Name",
-    "ARGUMENTS": "Arguments",
-    "NO_AVAILABLE_INFO": "No Available Info",
-    "ADD_AGENT_TO_QUEUE": "Add Agent To Queue",
-    "DEFAULT_PAUSE": "DEFAULT PAUSE",
-    "PAUSE": "Pause",
-    "UNPAUSE": "End Pause",
-    "REDIRECT_TO_NUMBER": "Redirect To Number",
-    "REDIRECT_TO_AGENT": "Redirect To Agent",
-    "AGENTADD_VOICEQUEUE": "Add Agent To Voice Queue",
-    "APPLICATION": "Application",
-    "FILES": "Files",
-    "FORMAT": "Format",
-    "MODE": "Mode",
-    "RECORD": "Record",
-    "TEAMADD_VOICEQUEUE": "Add Team To Voice Queue",
-    "NEW_MOHSOUND": "New Music On Hold sound",
-    "DOWNLOAD_MESSAGE": "Download",
-    "DELETE_MESSAGE": "Delete",
-    "QUEUE_PARAMS": "Queue Parameters",
-    "TOTAL_OFFERED": "Total Offered",
-    "READY": "Ready",
-    "AGENTADD_QUEUE": "Add Agent To Voice Queue",
-    "AGENTSADD_QUEUE": "Add Agents To Voice Queue",
-    "ALL_TEAMS": "All Teams",
-    "SELECTED_TEAMS": "Selected Teams",
-    "ALL_AGENTS": "All Agents",
-    "SELECTED_AGENTS": "Selected Agents",
-    "CLOSING": "Closing",
-    "TAGS": "Tags",
-    "WAITING_FOR_AGENT": "Waiting For Agents",
-    "EDIT_OUTBOUNDDIAL": "Edit Outbound Dial",
-    "ACCOUNTNAME": "Account Name",
-    "PAGE": "Page",
-    "ROWSPERPAGE": "Rows per page",
+    "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",
     "OF": "of",
-    "DISPOSITION": "Disposition",
-    "CHAT": "Chat",
-    "MAIL": "Email",
+    "DISPOSITION": "Kasutus",
+    "CHAT": "Vestlus",
+    "MAIL": "E-mail",
     "SMS": "SMS",
-    "OPENCHANNEL": "Open Channel",
-    "FAX": "Fax",
-    "CLEAR": "Clear",
-    "CALLS": "Calls",
-    "STARTEDAT": "Started At",
-    "ENDEDAT": "Ended At",
-    "TAG": "Tag",
-    "DETAILS": "Details",
-    "BILLABLESECONDS": "Billable seconds",
-    "ANSWEREDAT": "Answered At",
-    "NOTE": "Note",
-    "CLOSE": "Close",
-    "SELECT_DATE": "Select Start Date",
-    "SELECT_TYPE": "Select Type",
-    "VOICEPREFIXES": "Out Prefixes",
-    "NEW_VOICEPREFIX": "New Prefix",
-    "ADD_VOICEPREFIX": "Add Prefix",
-    "EDIT_VOICEPREFIX": "Edit Prefix",
-    "AGENTADD_VOICEPREFIX": "Add Agent to Prefix",
-    "DELETE_VOICEPREFIX": "Delete Prefix",
-    "OUTBOUNDROUTE": "Outbound Route",
-    "CALLERIDALL": "Caller Id",
+    "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",
     "CANT_DOWNLOAD_THIS_FILE": "Seda faili ei saa alla laadida",
     "DIALER": "Helistaja",
-    "DOWNLOADTRANSCRIBE_VOICERECORDING": "Laadige ärakiri alla",
+    "DOWNLOADTRANSCRIBE_VOICERECORDING": "Laadi alla transkriptsiooni häälsalvestus",
     "FAILUREREASON": "Rikke põhjus",
     "FILE_NOT_FOUND": "Faili ei leitud",
     "INBOUND": "Sissetulev",
-    "MANDATORYDISPOSITION": "Kohustuslik käsutamine",
-    "MANDATORYDISPOSITIONPAUSEID": "Kohustusliku dispositsiooni pausi olek",
+    "MANDATORYDISPOSITION": "Kohustuslik kasutamine",
+    "MANDATORYDISPOSITIONPAUSEID": "Kohustusliku kasutamise pausi olek",
     "OUTBOUND": "Väljaminev",
-    "RUNSENTIMENT_VOICERECORDING": "Run Sentiment",
-    "RUNTRANSCRIBESENTIMENT_VOICERECORDING": "Käivitage transkriptsioon ja meeleolu",
-    "RUNTRANSCRIBE_VOICERECORDING": "Käivitage transkriptsioon",
+    "RUNSENTIMENT_VOICERECORDING": "Käivita Arvamus",
+    "RUNTRANSCRIBESENTIMENT_VOICERECORDING": "Käivita transkriptsioon ja häälsalvestus",
+    "RUNTRANSCRIBE_VOICERECORDING": "Käivita transkriptsioon",
     "SCREENRECORDING": "Halda ekraanisalvestust",
-    "SENTIMENT": "Tunne",
-    "SENTIMENTANALYSIS": "Sentimentide analüüs",
-    "SENTIMENT_MIXED": "Segatud",
+    "SENTIMENT": "Arvamus",
+    "SENTIMENTANALYSIS": "Arvamuste analüüs",
+    "SENTIMENT_MIXED": "Kombineeritud",
     "SENTIMENT_NEGATIVE": "Negatiivne",
     "SENTIMENT_NEUTRAL": "Neutraalne",
     "SENTIMENT_POSITIVE": "Positiivne",
     "START_SCREENRECORDING": "Alusta ekraani salvestamist",
     "STOP_SCREENRECORDING": "Peata ekraanil salvestamine",
-    "TEAMS_ASSOCIATION": "Võistkondade liit",
+    "TEAMS_ASSOCIATION": "iimide liit",
     "TEXT": "Tekst",
     "TOOLTIP_SCREENRECORDING_OFF": "Ekraanisalvestus on saadaval",
     "TOOLTIP_SCREENRECORDING_ON": "Ekraanisalvestus pooleli",
-    "TRANSCRIBE": "Transkribeerida",
+    "TRANSCRIBE": "Transkribeeri",
     "TRANSCRIBESTATUS_COMPLETED": "Lõpetatud",
-    "TRANSCRIBESTATUS_FAILED": "Ebaõnnestus",
+    "TRANSCRIBESTATUS_FAILED": "Nurjunud",
     "TRANSCRIBESTATUS_IN_PROGRESS": "Pooleli",
     "TRANSCRIBESTATUS_NEW": "Uus",
-    "TRANSCRIPT": "Ärakiri",
-    "TRANSCRIPTANALYSIS": "Ärakiri ja analüüs",
+    "TRANSCRIPT": "Transkriptsioon",
+    "TRANSCRIPTANALYSIS": "Transkriptsioon 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",
-    "MAXCAPACITY": "Maksimaalne mahutavus",
-    "WORKING": "Töötab"
+    "ALIAS": "Teise nimega"
   }
 }
index 7c8316a..e8c6282 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 kui",
-      "AGENTTRANSFERTIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Väärtus peab olema väiksem või võrdne kui",
+      "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_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 kui",
+      "FALSEPRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Väärtus peab olema suurem või võrdne",
       "FALSEPRIORITY_REQUIRED": "Kohustuslik väli",
-      "KEY_MAX_LENGTH": "Väärtuse maksimaalne pikkus peab olema võrdne {{max}}",
+      "KEY_MAX_LENGTH": "Väärtuse maksimaalne pikkus peab olema võrdne {{maks}}",
       "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 kui",
+      "PRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Väärtus peab olema suurem või võrdne",
       "PRIORITY_REQUIRED": "Kohustuslik väli",
-      "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_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_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 kui",
-      "TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Väärtus peab olema väiksem või võrdne kui",
+      "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_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 kui",
+      "TRUEPRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Väärtus peab olema suurem või võrdne",
       "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 kui",
-      "WAITFORTHEASSIGNEDAGENT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Väärtus peab olema väiksem või võrdne kui",
+      "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_REQUIRED": "Kohustuslik väli",
-      "WELCOMEMESSAGE_MAX_LENGTH": "Väärtuse maksimaalne pikkus peab olema võrdne {{max}}",
+      "WELCOMEMESSAGE_MAX_LENGTH": "Väärtuse maksimaalne pikkus peab olema võrdne {{maks}}",
       "WELCOMEMESSAGE_REQUIRED": "Kohustuslik väli",
       "CLIENTEMAIL_REQUIRED": "Kohustuslik väli",
       "PRIVATEKEY_REQUIRED": "Kohustuslik väli",
-      "PROJECTID_REQUIRED": "Kohustuslik väli",
-      "BASEURL_REQUIRED": "Kohustuslik väli"
+      "PROJECTID_REQUIRED": "Kohustuslik väli"
     },
     "HELP": {
       "LIST": "Kontaktide halduri loend, mida kasutatakse kontaktide seostamiseks",
-      "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"
+      "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"
     },
     "ACCESSKEYID": "Juurdepääsukoodi ID",
     "ACCOUNTSID": "Konto SID",
     "ACTIONS": "Tegevused",
-    "ADD_NOTE": "Lisada märkus",
-    "ADD_WHATSAPPACCOUNT": "Lisama",
-    "ADD_WHATSAPPCANNEDANSWER": "Lisage konserveeritud vastus",
-    "ADD_WHATSAPPDISPOSITION": "Lisage WhatsApp Disposition",
-    "ADD_WHATSAPPQUEUE": "Lisage järjekord WhatsApp",
+    "ADD_NOTE": "Lisa märkus",
+    "ADD_WHATSAPPACCOUNT": "Lisa",
+    "ADD_WHATSAPPCANNEDANSWER": "Lisa salvestatud vastus",
+    "ADD_WHATSAPPDISPOSITION": "Lisa WhatsAppi Kasutus",
+    "ADD_WHATSAPPQUEUE": "Lisa WhatsAppi järjekord",
     "ADVANCED": "Täpsemad",
     "AGENT": "Agent",
-    "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",
+    "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",
     "ALL": "Kõik",
     "ALL_AGENTS": "Kõik esindajad",
-    "ALL_TEAMS": "Kõik võistkonnad",
+    "ALL_TEAMS": "Kõik tiimid",
     "AMAZONLEX": "AmazonLex",
-    "AUTHTOKEN": "Autentimismärk",
+    "AUTHTOKEN": "Autentimisluba",
     "AUTOREPLY": "Automaatne vastus",
     "BACK": "tagasi",
     "BOTNAME": "Boti nimi",
     "BUSY": "Hõivatud",
-    "CANNEDANSWERS": "Konserveeritud vastused",
-    "CANNED_ANSWER_NOT_FOUND": "Konserveeritud vastuseid ei leitud",
-    "CANNED_ANSWER_SEARCH": "Sisestage tekst konserveeritud vastusest otsimiseks",
+    "CANNEDANSWERS": "Salvestatud vastused",
+    "CANNED_ANSWER_NOT_FOUND": "Salvestatud vastuseid ei leitud",
+    "CANNED_ANSWER_SEARCH": "Sisesta tekst salvestatud vastusest otsimiseks",
     "CAPACITY": "Maht",
-    "CLOSE": "Sulge",
+    "CLOSE": "Sule",
     "CLOSED": "Suletud",
     "CLOSEMETHOD": "Sule meetod",
-    "CLOSEURL": "Sulge URL",
+    "CLOSEURL": "Suge URL",
     "COMMAND": "Käsk",
     "CONDITION": "Seisund",
     "CONTACT": "Võtke ühendust",
-    "CREATED_AT": "Loodud kell",
+    "CREATED_AT": "Loomisaeg",
     "DEFAULT_PAUSE": "Vaikimisi paus",
     "DELETE": "Kustuta",
-    "DELETE_INTERACTION": "Kustuta interaktsioon",
+    "DELETE_INTERACTION": "Kustuta suhtlus",
     "DELETE_SELECTED": "Kustuta valitud",
-    "DELETE_WHATSAPPACCOUNT": "Kustutage WhatsApi konto",
+    "DELETE_WHATSAPPACCOUNT": "Kustuta WhatsAppi konto",
     "DELETE_WHATSAPPCANNEDANSWER": "Kustutatud",
-    "DELETE_WHATSAPPDISPOSITION": "Kustutage WhatsApp Disposition",
-    "DELETE_WHATSAPPQUEUE": "Kustutage WhatsApp Queue",
+    "DELETE_WHATSAPPDISPOSITION": "Kustuta WhatsAppi Kasutus",
+    "DELETE_WHATSAPPQUEUE": "Kustuta WhatsAppi Järjekord",
     "DESCRIPTION": "Kirjeldus",
-    "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",
+    "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",
     "EDIT_AMAZONLEX": "Redigeeri Lexi konfiguratsiooni",
     "EDIT_AUTOREPLY": "Redigeeri automaatvastust",
-    "EDIT_CLOSE": "Redigeerimine Sulge",
-    "EDIT_DIALOGFLOW": "Redigeeri DialogFlow konfiguratsiooni",
-    "EDIT_GOTOIF": "Redigeeri Gotoifi",
+    "EDIT_CLOSE": "Redigeerimine Sulgemine",
+    "EDIT_DIALOGFLOW": "Redigeeri Dialoogivoo konfiguratsiooni",
+    "EDIT_GOTOIF": "Redigeeri Gotoif",
     "EDIT_GOTOP": "Redigeeri Gotopit",
-    "EDIT_NOOP": "Redigeeri Noopi",
+    "EDIT_NOOP": "Redigeeri Noop",
     "EDIT_QUEUE": "Redigeeri järjekorda",
     "EDIT_SYSTEM": "Redigeeri süsteemi",
     "EDIT_TAG": "Redigeeri silti",
-    "EDIT_WHATSAPPACCOUNT": "Muutke WhatsApi kontot",
+    "EDIT_WHATSAPPACCOUNT": "Muuda WhatsAppi kontot",
     "EDIT_WHATSAPPCANNEDANSWER": "Redigeeri",
-    "EDIT_WHATSAPPDISPOSITION": "Muutke WhatsApi dispositsiooni",
-    "EDIT_WHATSAPPQUEUE": "Redigeeri WhatsApi järjekorda",
+    "EDIT_WHATSAPPDISPOSITION": "Muuda WhatsAppi kasutust",
+    "EDIT_WHATSAPPQUEUE": "Redigeeri WhatsAppi järjekorda",
     "FALSEPRIORITY": "Vale prioriteet",
     "GENERAL": "Kindral",
     "GOTOIF": "Gotoif",
     "GOTOP": "Gotop",
-    "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",
+    "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",
     "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 käsutamine",
-    "MANDATORYDISPOSITIONPAUSEID": "Kasutamise peatamine, kui kohustuslik käsutamine on lubatud",
+    "MANDATORYDISPOSITION": "Kohustuslik kasutamine",
+    "MANDATORYDISPOSITIONPAUSEID": "Kasutamise peatamine, kui kohustuslik kasutamine on lubatud",
     "MORE": "Veel",
     "MOTIONPROXY": "Puhverserver või liikumisdomeen",
     "MULTI_SELECT_TOGGLE": "Mitme valiku lülitamine",
     "NAME": "Nimi",
-    "NEW_WHATSAPPACCOUNT": "Uus WhatsApi konto",
-    "NEW_WHATSAPPCANNEDANSWER": "Uus vastus WhatsAppile",
-    "NEW_WHATSAPPDISPOSITION": "Uus seade WhatsApp",
-    "NEW_WHATSAPPQUEUE": "Uus WhatsApi järjekord",
+    "NEW_WHATSAPPACCOUNT": "Uus WhatsAppi konto",
+    "NEW_WHATSAPPCANNEDANSWER": "Uus WhatsAppi salvestatud vastus",
+    "NEW_WHATSAPPDISPOSITION": "Uus WhatsAppi kasutus",
+    "NEW_WHATSAPPQUEUE": "Uus WhatsAppi järjekord",
     "NOOP": "Noop",
     "NOTE": "Märge",
     "NOTIFICATION": "Teatamine",
-    "NOTIFICATIONSHAKE": "Raputama",
+    "NOTIFICATIONSHAKE": "Raputus",
     "NOTIFICATIONSOUND": "Heli",
     "NOTIFICATIONTEMPLATE": "Mall",
-    "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",
+    "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",
     "OPENED": "Avatud",
     "PAGE": "Leht",
     "PARTIALPAUSE": "Osaline paus",
     "PROXY": "Puhverserver",
     "QUEUE": "Järjekord",
     "QUEUES": "Järjekorrad",
-    "QUEUETRANSFER": "Järjekorra ülekandmine",
-    "QUEUETRANSFERTIMEOUT": "Järjekorra ülekandmise ajalõpp",
+    "QUEUETRANSFER": "Järjekorra edastamine",
+    "QUEUETRANSFERTIMEOUT": "Järjekorra edastamise aegumine",
     "READY": "Valmis",
     "REALTIME": "Reaalajas",
-    "RECEIVEURL": "Saate URL-i",
-    "REFRESH_INTERACTIONS": "Värskenda interaktsioone",
-    "REMOTE": "Kaugjuhtimispult",
-    "ROWSPERPAGE": "Ridasid lehel",
+    "RECEIVEURL": "URL-i vastuvõtmine",
+    "REFRESH_INTERACTIONS": "Värskenda suhtlusi",
+    "REMOTE": "Kaugjuhtimine",
+    "ROWSPERPAGE": "Ridu lehekülje kohta",
     "SAVE": "Salvesta",
     "SCREENRECORDING": "Halda ekraanisalvestust",
     "SEARCH_FOR_ANYONE": "Otsing",
     "SECRETACCESSKEY": "Juurdepääsu võtme saladus",
     "SELECTED": "Valitud",
-    "SELECTED_AGENTS": "Valitud esindajad",
-    "SELECTED_TEAMS": "Valitud meeskonnad",
+    "SELECTED_AGENTS": "Valitud agendid",
+    "SELECTED_TEAMS": "Valitud tiimid",
     "SELECT_ALL": "Vali kõik",
-    "SELECT_NONE": "Valige ükski",
+    "SELECT_NONE": "Ärge valige ühtegi",
     "SEND": "Saada",
-    "SETTINGS": "Seadistused",
-    "SPYINTERACTION": "Spioonide interaktsioon",
-    "STARTEDAT": "Alustati kell",
+    "SETTINGS": "Sätted",
+    "SPYINTERACTION": "Spiooni suhtlus",
+    "STARTEDAT": "Alustatud kell",
     "START_SCREENRECORDING": "Alusta ekraani salvestamist",
     "STATUS": "Olek",
     "STOP_SCREENRECORDING": "Peata ekraanil salvestamine",
     "SYSTEM": "Süsteem",
     "TAG": "Silt",
     "TAGS": "Sildid",
-    "TEAMADD_WHATSAPPQUEUE": "Lisage meeskond WhatsApp'i järjekorda",
-    "TEAMS_ASSOCIATION": "Võistkondade liit",
+    "TEAMADD_WHATSAPPQUEUE": "Lisage meeskond WhatsAppi järjekorda",
+    "TEAMS_ASSOCIATION": "Tiimide liit",
     "TEXT": "Tekst",
     "TIMEOUT": "Aeg maha",
     "TIMER": "Taimer",
     "TIMES": "Ajad",
-    "TO": "Et",
+    "TO": "Kellele",
     "TOKEN": "Märk",
     "TOOLTIP_SCREENRECORDING_OFF": "Ekraanisalvestus on saadaval",
     "TOOLTIP_SCREENRECORDING_ON": "Ekraanisalvestus pooleli",
     "TRANSFER": "Ülekanne",
-    "TRUEPRIORITY": "Tõeline prioriteet",
+    "TRUEPRIORITY": "Tõene prioriteet",
     "TYPE": "Tüüp",
     "UNPAUSE": "Lõpeta paus",
     "VALUE": "Väärtus",
-    "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",
+    "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",
     "DIALOGFLOWV2": "Dialoogivoog V2",
     "EDIT_DIALOGFLOWV2": "Redigeerimise dialoogivoog V2",
     "PRIVATEKEY": "Privaatne võti",
-    "PROJECTID": "Projekti ID",
-    "BASEURL": "Baas-URL",
-    "DELIVERYREPORTURL": "Edastamisaruande URL"
+    "PROJECTID": "Projekti ID"
   }
 }
index fd2a755..f98da63 100644 (file)
@@ -1,73 +1,73 @@
 {
   "QUICKPANEL": {
-    "EXPIRATION_GRAY_PERIOD": "Expiration Gray Period",
-    "NO_AVAILABLE_GROUPS": "No Available Groups",
-    "SAVE": "Save",
+    "EXPIRATION_GRAY_PERIOD": "Halli Perioodi Aegumine",
+    "NO_AVAILABLE_GROUPS": "Vabu Gruppe pole",
+    "SAVE": "Salvesta",
     "INFO": "Info",
-    "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",
+    "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",
     "AUGUST": "August",
     "SEPTEMBER": "September",
-    "OCTOBER": "October",
+    "OCTOBER": "Oktoober",
     "NOVEMBER": "November",
-    "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",
+    "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",
     "RETRO_THRUSTERS": "Retro Thrusters",
-    "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",
+    "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",
     "ERRORS": {
-      "NAME_REQUIRED": "Mandatory Field"
+      "NAME_REQUIRED": "Kohustuslik Väli"
     }
   }
 }
index c3cf8da..c0ce982 100644 (file)
@@ -1,20 +1,20 @@
 {
   "RESETPASSWORD": {
-    "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",
+    "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",
     "ERRORS": {
-      "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 ~!?*@#$%^&-_=+[{]}."
+      "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 ~!?*@#$%^&-_=+[{]}."
     }
   }
 }
index 7bb2214..05c0e62 100644 (file)
@@ -30,6 +30,7 @@
     "OPENCHANNEL": "Openchannel",
     "FAX": "Fax",
     "WHATSAPP": "Whatsapp connector",
+    "WAITINGQUEUECALLS": "Waiting queue calls",
     "WEBRTCSUPPORT": "WebRTC Support",
     "REGISTERED": "Registered",
     "NOT_REGISTERED": "Not registered",
index 7e3c26d..5470b3d 100644 (file)
@@ -12,6 +12,7 @@
     "REQUIREMENTS": "Requisiti",
     "LICENSE": "Licenza",
     "HTTPS": "HTTPS",
+    "WAITINGQUEUECALLS": "Chiamate in attesa",
     "WEBRTCSUPPORT": "Supporto WebRTC",
     "REGISTERED": "Registrato",
     "NOT_REGISTERED": "Non Registrato",
index 42e6dc6..e8d8e1f 100644 (file)
@@ -16,7 +16,7 @@
 
   <link rel="stylesheet" href="styles/vendor.57a94b79.css">
 
-  <link rel="stylesheet" href="styles/app.d45f5a7f.css">
+  <link rel="stylesheet" href="styles/app.6414467d.css">
 
   <!-- <link href='//fonts.googleapis.com/css?family=Roboto:400,100,100italic,300,300italic,400italic,500,500italic,700italic,700,900,900italic'
               rel='stylesheet' type='text/css'> -->
@@ -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.4f52941f.js"></script>
+  <script src="scripts/app.df55334b.js"></script>
 
   <!-- CKEDITOR -->
   <script src="assets/plugins/ckeditor/ckeditor.js"></script>
similarity index 55%
rename from public/scripts/app.4f52941f.js
rename to public/scripts/app.df55334b.js
index be97267..80546ad 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 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
+!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")}),n.onbeforeunload=function(){E.sessions.forEach(function(e){E.terminate(e)})}}e.$inject=["$scope","$document","$timeout","$interval","$mdDialog","$mdToast","$window","$translate","$http","$q","toasty","api","motNotification","Auth","socket","privacyManager","ClientSideLoggingService"],angular.module("app.core").controller("MsPhonebarController",e).directive("msPhonebar",function(){return{restrict:"E",scope:{conf:"=",sessions:"=",registered:"="},require:"msPhonebar",controller:"MsPhonebarController",controllerAs:"vm_pb",bindToController:!0,templateUrl:"assets/ms-phonebar/ms-phonebar.html"}})}(),function(){"use strict";function e(n,e,t){var a=this;a.prefixes=e,a.required=t,a.closeDialog=function(e){n.hide(e)},a.keyPress=function(e){13===e.keyCode&&this.call()},a.call=function(){n.hide(a.prefix)}}e.$inject=["$mdDialog","prefixes","required"],angular.module("app.core").controller("PrefixDialogController",e)}(),function(){"use strict";function e(i){return{restrict:"C",controller:["$scope","$element",function(e,n){function t(){n.css("display","inline"),i(a,1e3)}function a(){n.css("display","none"),i(t,1e3)}t()}],replace:!0}}function n(n,i,s,e,t){var o=this;function a(n,e){console.log("startMonitor");var t=i.defer(),a=(e||n.filename.replace(/^.*[\\\/]/,"")).split(".")[0];return s.rpc.startMonitor({uniqueid:o.session.uniqueid,filename:a,format:"wav"}).$promise.then(function(e){n.filename=a+".wav",n.mixmonitorid=e.mixmonitorid,n.status="rec",o.session.monitor=!0,t.resolve(n)}).catch(function(e){t.reject(e)}),t.promise}o.title="Record",o.sessions=e,o.session=t,o.closeDialog=function(){n.hide()},o.addRecording=function(){var e=n.prompt({skipHide:!0}).title("Start new recording").textContent("Type the file name.").placeholder("File name").ariaLabel("File name").initialValue(function(){function e(){return Math.floor(65536*(1+Math.random())).toString(16).substring(1)}return e()+e()+"-"+e()+"-"+e()+"-"+e()+"-"+e()+e()+e()}()).ok("Start").cancel("Cancel");n.show(e).then(function(e){return a({},e)}).then(function(e){o.session.monitors.push(e)})},o.stop=function(n){return console.log("stopMonitor"),s.rpc.stopMonitor({uniqueid:o.session.uniqueid,mixmonitorid:n.mixmonitorid}).$promise.then(function(e){n.status="pause",o.session.monitor=_.includes(o.session.monitors,{status:"rec"})}).catch(function(e){console.error(e)})},o.start=a}e.$inject=["$timeout"],n.$inject=["$mdDialog","$q","api","sessions","session"],angular.module("app.core").directive("msBlink",e).controller("RecordDialogController",n)}(),function(){"use strict";function e(n,s,a,i,e){var o=this;function r(e,n,t,a,i){return console.debug("onTransferCallback -> session, textContent, position, delay",e,n,t,a),function(){s.show(s.simple().textContent(n).position(t).hideDelay(a)),e.terminate(),jabra&&i&&jabra.onHook(),l()}}function l(e){n.hide(e)}o.title="Refer Attended",o.sessions=a,o.session=i,o.isJabraEnabled=e,o.sessionTarget=null,a.length&&(o.target=a[0].user),o.closeDialog=l,o.transfer=function(){var e,n,t=_.find(a,function(e){if(e.user===o.target)return e});n=t.outgoing?(e=t,o.session):(e=o.session,t);n.refer(e.user,{replaces:e,eventHandlers:{requestSucceeded:r(i,"requestSucceeded","top right",3e3,o.isJabraEnabled),requestFailed:r(i,"requestFailed","top right",3e3,o.isJabraEnabled)}})}}e.$inject=["$mdDialog","$mdToast","sessions","session","isJabraEnabled"],angular.module("app.core").controller("ReferAttendedDialogController",e)}(),function(){"use strict";function e(e,s,n,t){var a=this;function i(e,n,t){var a;if(s[t]){if(a=_.find(e,function(e){return e.deviceId===s[t]}))return a.deviceId;var i=_.findIndex(e,function(e){return e.kind===n});if(0<=i)return e[i].deviceId}else(a=_.find(e,function(e){return e.kind===n}))&&(s[t]=a.deviceId);return s[t]||null}_.remove(n,function(e){return"audioinput"===e.kind&&("default"===e.deviceId||"communications"===e.deviceId)||"audiooutput"===e.kind&&("default"===e.deviceId||"communications"===e.deviceId)}),s.ringingId=i(n,"audiooutput","ringingId"),s.speakerId=i(n,"audiooutput","speakerId"),s.microphoneId=i(n,"audioinput","microphoneId"),s.ringingVolume=s.ringingVolume||.5,s.speakerVolume=s.speakerVolume||.5,s.microphoneVolume=s.microphoneVolume||1,s.ringingMute=s.ringingMute||!1,s.speakerMute=s.speakerMute||!1,s.microphoneMute=s.microphoneMute||!1,a.conf=angular.copy(s),a.devices=n,a.activeSessions=t,a.saveSettings=function(){e.hide(a.conf)},a.closeDialog=function(){e.hide()},a.isCompatibleBrowser=function(){return"chrome"===a.conf.browserName.toLowerCase()||"opera"===a.conf.browserName.toLowerCase()||"safari"===a.conf.browserName.toLowerCase()}}e.$inject=["$mdDialog","conf","devices","activeSessions"],angular.module("app.toolbar").controller("SettingsController",e)}(),function(){"use strict";function e(e,t,a){var i=this;function s(e,n,t){r(e).then(function(){n&&!1!==t&&i.search()})}function o(e){var n=e.key;i.pickerModels[n].dateStart?!0===e.useFromToKeys?i.query[n]={from:moment(i.pickerModels[n].dateStart).utcOffset(0,!0).format(),to:moment(i.pickerModels[n].dateEnd).utcOffset(0,!0).add(23,"hours").add(59,"minutes").add(59,"seconds").format()}:i.query[n]={$gte:moment(i.pickerModels[n].dateStart).utcOffset(0,!0).format(),$lte:moment(i.pickerModels[n].dateEnd).utcOffset(0,!0).add(23,"hours").add(59,"minutes").add(59,"seconds").format()}:i.query[n]=void 0,i.search()}function r(e){var n=e.key,t={param:i.query[n],resources:e.options,placeholder:e.placeholder,ngValue:e.ngValue};return a.setPlaceholder(t).then(function(e){i.placeholders[n]=e})}i.pickerModels={},i.placeholders={},i.localizationMap=t.localizationMap,i.onMultiselectInit=function(e){r(e)},i.onDateRangeInit=function(e){var n=e.key;i.query[n]?i.pickerModels[n]=t.setSelectedDate(i.query[n]):i.pickerModels[n]={dateStart:null}},i.onMultiselectSelection=s,i.onDateRangeSelection=o,i.clearDate=function(e){var n=e.key;i.pickerModels[n]={dateStart:null},delete i.query[n],i.search()},i.clearSelection=function(e){var n=e.key,t=e.ngValue||"id";i.query[n]=!1===e.clearAll?[_.head(e.options)[t]]:[],r(e).then(function(){i.search()})},i.selectAll=function(e){var n=e.key,t=e.ngValue||"id";i.query[n]=_.map(e.options,t),r(e).then(function(){i.search()})},e.$on("ms-quick-filter:update",function(e,t){t.filters.forEach(function(e){var n=_.find(i.filters,["name",e]);if(n)switch(n.type){case"date":o(n);break;case"multiselect":s(n,!0,t.update);break;case"select":i.search()}})})}e.$inject=["$scope","dateRangeManager","quickFilterManager"],angular.module("app.core").directive("msQuickFilter",function(){return{restrict:"E",scope:{query:"=",filters:"=",search:"&"},controller:e,controllerAs:"vm",bindToController:!0,templateUrl:"app/core/directives/ms-quick-filter/ms-quick-filter.html"}})}(),function(){"use strict";angular.module("app.core").directive("msRandomClass",function(){return{restrict:"A",scope:{msRandomClass:"="},link:function(e,n){var t=e.msRandomClass[Math.floor(Math.random()*e.msRandomClass.length)];n.addClass(t)}}})}(),function(){"use strict";function e(i){return{restrict:"E",scope:{id:"=",model:"=",download:"="},replace:!0,link:function(n,e){var t=!1,a=document.createElement("audio");n.download||a.setAttribute("controlsList","nodownload"),a.setAttribute("preload","none"),a.setAttribute("controls",""),a.setAttribute("style","width: 265px;"),a.setAttribute("src"," "),a.onplay=function(e){t||(t=!0,e.preventDefault(),i[n.model||"voiceRecording"].download({id:n.id}).$promise.then(function(e){var n=[e.buffer],t=new Blob(n,{type:e.type});a.setAttribute("type",e.type),a.setAttribute("src",URL.createObjectURL(t)),a.play()}).catch(function(e){console.error(e)}))},e.append(a)}}}e.$inject=["api"],angular.module("app.core").directive("msRecording",e)}(),function(){"use strict";angular.module("app.core").directive("msResponsiveTable",function(){return{restrict:"A",link:function(e,n){var t=angular.element('<div class="ms-responsive-table-wrapper"></div>');n.after(t),t.append(n)}}})}(),function(){"use strict";function e(n,i,s,e){var o=this;function t(){angular.isArray(o.onSearch)?a(o.onSearch):o.onResultClick?(o.resultsLoading=!0,n.$parent.$eval("vm.search(query)",{query:o.query.filter}).then(function(e){a(e)}).catch(function(){a([])}).finally(function(){o.resultsLoading=!1})):o.onSearch()}function a(e){o.expanded&&(void 0===e||angular.isArray(e)||null===e)&&(o.selectedResultIndex=0,o.results=e)}function r(){o.expanded=!0,o.displayOn=!0,n.expand()}function l(e){!1!==e&&(o.query.filter=void 0,o.onResultClick?a(null):t()),o.expanded=!1,n.collapse()}function d(e){o.onResultClick&&o.onResultClick({item:e}),l()}function c(){var e=i.find(".ms-search-bar-results"),n=angular.element(e.find(".result")[o.selectedResultIndex]);if(e&&n){var t=n.position().top-8,a=n.position().top+n.outerHeight()+8;o.ignoreMouseEvents=!0,s.cancel(o.mouseEventIgnoreTimeout),o.mouseEventIgnoreTimeout=s(function(){o.ignoreMouseEvents=!1},250),e.scrollTop()>t&&e.scrollTop(t),a>e.height()+e.scrollTop()&&e.scrollTop(a-e.height())}}o.queryOptions={debounce:o.debounce||0},o.searchOnEnterKey=e.get().searchOnEnterKey||!1,o.resultsLoading=!1,o.results=null,o.selectedResultIndex=0,o.ignoreMouseEvents=!1,o.expandBar=r,o.collapseBar=l,o.blurCollapse=function(){if(!o.collapseOnBlur)return;l()},o.onKeyDown=function(e){var n=e.keyCode;-1<[27,38,40].indexOf(n)&&e.preventDefault();switch(n){case 13:if(!o.onResultClick)return t();if(!o.results)return;d(o.results[o.selectedResultIndex]);break;case 27:l();break;case 38:0<=o.selectedResultIndex-1&&(o.selectedResultIndex--,c());break;case 40:if(!o.results)return;o.selectedResultIndex+1<o.results.length&&(o.selectedResultIndex++,c())}},o.absorbEvent=function(e){e.preventDefault()},o.handleMouseenter=function(e){if(o.ignoreMouseEvents)return;o.selectedResultIndex=e},o.handleResultClick=d,n.$watch("vm.displayOn",function(e){angular.isUndefined(e)||(!0!==e||o.expanded?e||!1===o.expanded||l(!1):r())}),n.$watch("vm.query.filter",function(e,n){if(!angular.isUndefined(e)&&0!==e.length&&!angular.equals(e,n)&&!1!==o.displayOn){if(o.expanded){if(!0===o.searchOnEnterKey&&!o.onResultClick)return;if(o.minChars&&o.minChars>e.length)return}else r();t()}})}function n(a){return{restrict:"E",scope:{query:"=?",debounce:"=?",direction:"@",iconColor:"@",onSearch:"&",onResultClick:"&?",onExpand:"&?",onCollapse:"&?",collapseOnBlur:"<?",minChars:"<?",displayOn:"=?"},controller:e,controllerAs:"vm",bindToController:!0,templateUrl:"app/core/directives/ms-search-bar/ms-search-bar.html",compile:function(e){return e.addClass("ms-search-bar"),{post:function(n,t){n.collapse=function(){if(t.removeClass("expanded"),"down"===n.vm.direction){t.removeClass("down");var e=t.closest("md-toolbar");e&&e.removeClass("h-128")}a.find("body").removeClass("ms-search-bar-expanded")},n.expand=function(){if(t.addClass("expanded"),"down"===n.vm.direction){t.addClass("down");var e=t.closest("md-toolbar");e&&e.addClass("h-128")}a.find("body").addClass("ms-search-bar-expanded")}}}}}}e.$inject=["$scope","$element","$timeout","settingsManager"],n.$inject=["$document"],angular.module("app.core").controller("MsSearchBarController",e).directive("msSearchBar",n)}(),function(){"use strict";function e(e,t,i,o,r,l){var d=this;d.query="",d.queryOptions={debounce:300},d.resultsLoading=!1,d.selectedResultIndex=0,d.ignoreMouseEvents=!1,d.mobileBarActive=!1,d.results=null,d.shortcuts=[],d.sortableOptions={ghostClass:"ghost",forceFallback:!0,fallbackClass:"dragging",onSort:function(){d.saveShortcuts()}},d.populateResults=function(){for(var e=[],n=l.getFlatNavigation(),t=r.defer(),a=0;a<n.length;a++)n[a].uisref&&e.push(n[a]);if(d.query){e=e.filter(function(e){if(-1<angular.lowercase(e.title).search(angular.lowercase(d.query)))return!0});for(var i=0;i<e.length;i++){e[i].hasShortcut=!1;for(var s=0;s<d.shortcuts.length;s++)if(d.shortcuts[s]._id===e[i]._id){e[i].hasShortcut=!0;break}}}else 0<d.shortcuts.length&&(e=d.shortcuts);return d.selectedResultIndex=0,o(function(){t.resolve(e)},250),t.promise},d.loadShortcuts=function(){var e=r.defer(),n=angular.fromJson(t.get("motion.shortcuts"));angular.isUndefined(n)&&(n=[{title:"Agents",icon:"icon-account-multiple",state:"app.staff.agents",weight:5,children:[],uisref:"app.staff.agents",hasShortcut:!0},{title:"License",icon:"icon-cog",state:"app.settings.license",weight:10,children:[],uisref:"app.settings.license",hasShortcut:!0}],t.put("motion.shortcuts",angular.toJson(n)));return e.resolve(n),e.promise},d.saveShortcuts=function(){var e=r.defer();return t.put("motion.shortcuts",angular.toJson(d.shortcuts)),o(function(){e.resolve({success:!0})},250),e.promise},d.addShortcut=function(e){e.hasShortcut=!0,d.shortcuts.push(e),d.saveShortcuts()},d.removeShortcut=function(e){e.hasShortcut=!1;for(var n=0;n<d.shortcuts.length;n++)d.shortcuts[n]._id===e._id&&(d.shortcuts.splice(n,1),d.query||(0===d.shortcuts.length?d.results=null:n>=d.shortcuts.length&&(d.selectedResultIndex=d.shortcuts.length-1)));d.saveShortcuts()},d.handleResultClick=function(e){e.hasShortcut?d.removeShortcut(e):d.addShortcut(e)},d.absorbEvent=function(e){e.preventDefault()},d.handleKeydown=function(e){var n=e.keyCode;-1<[38,40].indexOf(n)&&e.preventDefault();switch(n){case 13:d.handleResultClick(d.results[d.selectedResultIndex]);break;case 38:0<=d.selectedResultIndex-1&&(d.selectedResultIndex--,d.ensureSelectedResultIsVisible());break;case 40:d.selectedResultIndex+1<d.results.length&&(d.selectedResultIndex++,d.ensureSelectedResultIsVisible())}},d.handleMouseenter=function(e){if(d.ignoreMouseEvents)return;d.selectedResultIndex=e},d.temporarilyIgnoreMouseEvents=function(){d.ignoreMouseEvents=!0,o.cancel(d.mouseEventIgnoreTimeout),d.mouseEventIgnoreTimeout=o(function(){d.ignoreMouseEvents=!1},250)},d.ensureSelectedResultIsVisible=function(){var e=i.find("#ms-shortcut-add-menu").find(".results"),n=angular.element(e.find(".result")[d.selectedResultIndex]);if(e&&n){var t=n.position().top-8,a=n.position().top+n.outerHeight()+8;d.temporarilyIgnoreMouseEvents(),e.scrollTop()>t&&e.scrollTop(t),a>e.height()+e.scrollTop()&&e.scrollTop(a-e.height())}},d.toggleMobileBar=function(){d.mobileBarActive=!d.mobileBarActive},d.loadShortcuts().then(function(e){d.shortcuts=e,0<d.shortcuts.length&&(d.results=e)}),e.$watch("MsShortcuts.query",function(e,n){angular.isUndefined(e)||angular.equals(e,n)||(d.resultsLoading=!0,d.populateResults().then(function(e){d.results=e},function(){d.results=[]}).finally(function(){d.resultsLoading=!1}))})}e.$inject=["$scope","$cookies","$document","$timeout","$q","msNavigationService"],angular.module("app.core").controller("MsShortcutsController",e).directive("msShortcuts",function(){return{restrict:"E",scope:{},require:"msShortcuts",controller:"MsShortcutsController as MsShortcuts",bindToController:{},templateUrl:"app/core/directives/ms-shortcuts/ms-shortcuts.html",compile:function(e){return e.addClass("ms-shortcuts"),function(e,n){}}}})}(),function(){"use strict";angular.module("app.core").directive("msSidenavHelper",function(){return{restrict:"A",require:"^mdSidenav",link:function(e,n,t,a){e.$watch(function(){return a.isOpen()&&!a.isLockedOpen()},function(e){angular.isUndefined(e)||(n.parent().toggleClass("full-height",e),angular.element("html").toggleClass("sidenav-open",e))})}}})}(),function(){"use strict";function e(a){return{restrict:"E",link:function(e,n){var t=e.$on("msSplashScreen::remove",function(){a.leave(n).then(function(){t(),e=n=null})})}}}e.$inject=["$animate"],angular.module("app.core").directive("msSplashScreen",e)}(),function(){"use strict";function e(e){var i=this;function n(){i.setCurrentStep(1)}function t(e){return o(e)?i.steps[e-1].scope.optionalStep:null}function a(e){return o(e)?!!i.steps[e-1].scope.hideStep:null}function s(e){return o(e)?!!t(e)||i.steps[e-1].form.$valid:null}function o(e){return!(angular.isUndefined(e)||e<1||e>i.steps.length)}i.mainForm=void 0,i.orientation="horizontal",i.steps=[],i.currentStep=void 0,i.currentStepNumber=1,i.setOrientation=function(e){i.orientation=e||"horizontal"},i.registerMainForm=function(e){i.mainForm=e},i.registerStep=function(e,n,t){var a={element:e,scope:n,form:t,stepNumber:n.step||i.steps.length+1,stepTitle:n.stepTitle,stepTitleTranslate:n.stepTitleTranslate};return i.steps.push(a),i.steps.sort(function(e,n){return e.stepNumber-n.stepNumber}),a},i.setupSteps=function(){i.setCurrentStep(i.currentStepNumber)},i.resetForm=function(){e(function(){for(var e=0;e<i.steps.length;e++)i.steps[e].form.$setPristine(),i.steps[e].form.$setUntouched();i.mainForm.$setPristine(),i.mainForm.$setUntouched(),n()})},i.setCurrentStep=function(e){if(!o(e))return;if(i.currentStepNumber=e,"horizontal"===i.orientation){for(var n=0;n<i.steps.length;n++)i.steps[n].element.hide();i.steps[i.currentStepNumber-1].element.show()}else if("vertical"===i.orientation){for(var t=0;t<i.steps.length;t++)i.steps[t].element.find(".ms-stepper-step-content").hide();i.steps[i.currentStepNumber-1].element.find(".ms-stepper-step-content").show()}},i.gotoStep=function(e){if(a(e))return;i.setCurrentStep(e)},i.gotoPreviousStep=function(){for(var e=i.currentStepNumber-1,n=e;1<=n;n--)if(!a(n)){e=n;break}i.setCurrentStep(e)},i.gotoNextStep=function(){for(var e=i.currentStepNumber+1,n=e;n<=i.steps.length;n++)if(!a(n)){e=n;break}i.setCurrentStep(e)},i.gotoFirstStep=n,i.gotoLastStep=function(){i.setCurrentStep(i.steps.length)},i.isFirstStep=function(){return 1===i.currentStepNumber},i.isLastStep=function(){return i.currentStepNumber===i.steps.length},i.isStepCurrent=function(e){return o(e)?i.currentStepNumber===e:null},i.isStepDisabled=function(e){if(!o(e))return null;for(var n=!1,t=1;t<e;t++)if(!s(t)){n=!0;break}return n},i.isStepOptional=t,i.isStepHidden=a,i.filterHiddenStep=function(e){return!a(e.stepNumber)},i.isStepValid=s,i.isStepNumberValid=o,i.isFormValid=function(){return i.mainForm.$valid}}function n(o){return{restrict:"A",scope:{},require:["form","msVerticalStepper"],priority:1001,controller:"MsStepperController as MsStepper",bindToController:{model:"=ngModel"},transclude:!0,templateUrl:"app/core/directives/ms-stepper/templates/vertical/vertical.html",compile:function(e){return e.addClass("ms-stepper"),function(e,n,t,a){var i=a[0],s=a[1];o(function(){s.setOrientation("vertical"),s.registerMainForm(i),s.setupSteps()})}}}}e.$inject=["$timeout"],n.$inject=["$timeout"],angular.module("app.core").controller("MsStepperController",e).directive("msHorizontalStepper",function(){return{restrict:"A",scope:{},require:["form","msHorizontalStepper"],priority:1001,controller:"MsStepperController as MsStepper",bindToController:{model:"=ngModel"},transclude:!0,templateUrl:"app/core/directives/ms-stepper/templates/horizontal/horizontal.html",compile:function(e){return e.addClass("ms-stepper"),function(e,n,t,a){var i=a[0],s=a[1];s.setOrientation("horizontal"),s.registerMainForm(i),s.setupSteps()}}}}).directive("msHorizontalStepperStep",function(){return{restrict:"E",require:["form","^msHorizontalStepper"],priority:1e3,scope:{step:"=?",stepTitle:"=?",stepTitleTranslate:"=?",optionalStep:"=?",hideStep:"=?"},compile:function(e){return e.addClass("ms-stepper-step"),function(e,n,t,a){var i=a[0],s=a[1];e.optionalStep=angular.isDefined(t.optionalStep),s.registerStep(n,e,i),n.hide()}}}}).directive("msVerticalStepper",n).directive("msVerticalStepperStep",function(){return{restrict:"E",require:["form","^msVerticalStepper"],priority:1e3,scope:{step:"=?",stepTitle:"=?",stepTitleTranslate:"=?",optionalStep:"=?",hideStep:"=?"},transclude:!0,templateUrl:"app/core/directives/ms-stepper/templates/vertical/step/vertical-step.html",compile:function(e){return e.addClass("ms-stepper-step"),function(e,n,t,a){var i=a[0],s=a[1];e.optionalStep=angular.isDefined(t.optionalStep),e.stepInfo=s.registerStep(n,e,i),e.MsStepper=s,n.find(".ms-stepper-step-content").hide()}}}})}(),function(){"use strict";function e(e){return{restrict:"E",scope:{},transclude:!0,controller:"MsTabScrollController",controllerAs:"vm",bindToController:!0,templateUrl:"app/core/directives/ms-tab-scroll/ms-tab-scroll.html",compile:function(e){return e.addClass("ms-tab-scroll"),function(e,n){}}}}e.$inject=["$document"],angular.module("app.core").controller("MsTabScrollController",function(){function n(){var e=document.getElementById("bar-container"),n=document.getElementById("tab-container");return n.scrollWidth>e.scrollWidth&&0==e.scrollLeft&&0==n.scrollLeft?"right":n.scrollWidth>e.scrollWidth&&n.scrollLeft>e.scrollLeft&&e.scrollWidth+n.scrollLeft>=n.scrollWidth?"left":n.scrollWidth>e.scrollWidth&&n.scrollLeft>e.scrollLeft&&e.scrollWidth+n.scrollLeft<n.scrollWidth?"both":"none"}this.onTabScroll=function(e){"left"==e?$("#tab-container").stop().animate({scrollLeft:"-=400"},1e3):$("#tab-container").stop().animate({scrollLeft:"+=400"},1e3)},this.canScroll=function(e){switch(n()){case"both":return!0;case"left":return"left"==e;case"right":return"right"==e;case"none":default:return!1}}}).directive("msTabScroll",e)}(),function(){"use strict";function e(m,u){return{scope:!0,require:"^msTimeline",compile:function(e){return e.addClass("ms-timeline-item").addClass("hidden"),function(e,t,n,a){var i=72,s=!1,o=!1,r=a.getScrollEl();!function(){t.find("ms-card")?e.$on("msCard::cardTemplateLoaded",function(e,n){var t=angular.element(n[0]);d(t).then(function(){m(function(){s=!0})})}):d(t).then(function(){m(function(){s=!0})});r.on("scroll",c),c()}();var l=e.$watch(function(){return s&&o},function(e,n){angular.equals(e,n)||e&&(t.removeClass("hidden").addClass("animate"),l())},!0);function d(e){var n=u.defer(),t=e.find("img");return 0<t.length?t.on("load",function(){n.resolve("Image is loaded")}):n.resolve("No images"),n.promise}function c(){r.scrollTop()+r.height()>t.position().top+i&&(m(function(){o=!0}),r.off("scroll",c))}}}}}e.$inject=["$timeout","$q"],angular.module("app.core").controller("MsTimelineController",function(){var n=this;n.scrollEl=void 0,n.setScrollEl=function(e){n.scrollEl=e},n.getScrollEl=function(){return n.scrollEl}}).directive("msTimeline",function(){return{scope:{msTimeline:"=?",loadMore:"&?msTimelineLoadMore"},controller:"MsTimelineController",compile:function(e){return e.addClass("ms-timeline"),function(e,n,t,a){var i=angular.element('<div class="ms-timeline-loader md-accent-bg md-whiteframe-4dp"><span class="spinner"></span></div>');n.append(i);var s={scrollEl:"#content"};s=angular.extend(s,e.msTimeline,{});var o=angular.element(s.scrollEl);a.setScrollEl(o);var r=144;function l(){o.scrollTop()+o.height()+r>i.position().top&&(i.addClass("show"),c(),e.loadMore&&e.loadMore().then(function(){i.removeClass("show"),d()},function(){i.remove()}))}function d(){o.on("scroll",l)}function c(){o.off("scroll",l)}d(),e.$on("$destroy",function(){c()})}}}}).directive("msTimelineItem",e)}(),function(){"use strict";function e(e,n,t,a,i){var r=this;function s(){!function(){r.millis=l().diff(moment(r.startingTime));var e=moment.duration(r.millis),n=e.seconds(),t=e.minutes(),a=e.hours(),i=e.days(),s=e.months(),o=e.years();r.seconds=n<10?"0"+n:n,r.minutes=t<10?"0"+t:t,r.hours=a<10?"0"+a:a,r.days=i<10?"0"+i:i,r.months=s<10?"0"+s:s,r.years=o<10?"0"+o:o,r.timer=0<r.days?r.days+"d ":r.hours+":"+r.minutes+":"+r.seconds}(),r.timeoutId=setTimeout(function(){s(),e.$digest()},r.interval)}function l(e){var n=(e||moment()).utcOffset(r.utcOffset).format("YYYY-MM-DD HH:mm:ss");return moment(n)}function o(){t.resolve().then(function(){return null===r.utcOffset||void 0===r.utcOffset?i.getUTCOffset():r.utcOffset}).then(function(e){return r.utcOffset=e,l()}).catch(function(e){throw e}).then(function(e){var n=r.startTime?moment(r.startTime):void 0;r.startTime?n.isAfter(e,"hour")||n.isBefore(e,"hour")?r.startingTime=l(n):r.startingTime=n:r.startingTime=e,s()}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.setting.getDate",msg:e.data?JSON.stringify(e.data.message):e.toString()})})}o(),e.$watch("vm.startTime",function(e,n){angular.isUndefined(e)||0!==e.length&&(angular.equals(e,n)||o())}),e.$on("timer-start",function(){r.startTime=void 0,o()}),n.bind("$destroy",function(){r.timeoutId&&clearTimeout(r.timeoutId)})}e.$inject=["$scope","$element","$q","toasty","settingsManager"],angular.module("app.core").directive("timer",function(){return{restrict:"EA",replace:!1,scope:{startTime:"=?",interval:"=?",utcOffset:"=?"},template:"<span ng-cloak>{{ vm.timer }}</span>",compile:function(){return{pre:function(e,n,t){e.interval=t.interval||1e3}}},controller:e,controllerAs:"vm",bindToController:!0}})}(),function(){"use strict";angular.module("app.core").directive("msTimezone",function(){return{restrict:"E",scope:{ngModel:"=",ngChange:"&"},controller:["$scope",function(e){e.timezone=[{name:"Europe/Andorra",utcOffset:60,offsetStr:"+01:00",countries:["AD"]},{name:"Asia/Dubai",utcOffset:240,offsetStr:"+04:00",countries:["AE","OM"]},{name:"Asia/Kabul",utcOffset:270,offsetStr:"+04:30",countries:["AF"]},{name:"Europe/Tirane",utcOffset:60,offsetStr:"+01:00",countries:["AL"]},{name:"Asia/Yerevan",utcOffset:240,offsetStr:"+04:00",countries:["AM"]},{name:"Antarctica/Rothera",utcOffset:-180,offsetStr:"-03:00",countries:["AQ"]},{name:"Antarctica/Palmer",utcOffset:-180,offsetStr:"-03:00",countries:["AQ"]},{name:"Antarctica/Mawson",utcOffset:300,offsetStr:"+05:00",countries:["AQ"]},{name:"Antarctica/Davis",utcOffset:420,offsetStr:"+07:00",countries:["AQ"]},{name:"Antarctica/Casey",utcOffset:480,offsetStr:"+08:00",countries:["AQ"]},{name:"Antarctica/Vostok",utcOffset:360,offsetStr:"+06:00",countries:["AQ"]},{name:"Antarctica/DumontDUrville",utcOffset:600,offsetStr:"+10:00",countries:["AQ"]},{name:"Antarctica/Syowa",utcOffset:180,offsetStr:"+03:00",countries:["AQ"]},{name:"Antarctica/Troll",utcOffset:0,offsetStr:"+00:00",countries:["AQ"]},{name:"America/Argentina/Buenos_Aires",utcOffset:-180,offsetStr:"-03:00",countries:["AR"]},{name:"America/Argentina/Cordoba",utcOffset:-180,offsetStr:"-03:00",countries:["AR"]},{name:"America/Argentina/Salta",utcOffset:-180,offsetStr:"-03:00",countries:["AR"]},{name:"America/Argentina/Jujuy",utcOffset:-180,offsetStr:"-03:00",countries:["AR"]},{name:"America/Argentina/Tucuman",utcOffset:-180,offsetStr:"-03:00",countries:["AR"]},{name:"America/Argentina/Catamarca",utcOffset:-180,offsetStr:"-03:00",countries:["AR"]},{name:"America/Argentina/La_Rioja",utcOffset:-180,offsetStr:"-03:00",countries:["AR"]},{name:"America/Argentina/San_Juan",utcOffset:-180,offsetStr:"-03:00",countries:["AR"]},{name:"America/Argentina/Mendoza",utcOffset:-180,offsetStr:"-03:00",countries:["AR"]},{name:"America/Argentina/San_Luis",utcOffset:-180,offsetStr:"-03:00",countries:["AR"]},{name:"America/Argentina/Rio_Gallegos",utcOffset:-180,offsetStr:"-03:00",countries:["AR"]},{name:"America/Argentina/Ushuaia",utcOffset:-180,offsetStr:"-03:00",countries:["AR"]},{name:"Pacific/Pago_Pago",utcOffset:-660,offsetStr:"-11:00",countries:["AS","UM"]},{name:"Europe/Vienna",utcOffset:60,offsetStr:"+01:00",countries:["AT"]},{name:"Australia/Lord_Howe",utcOffset:660,offsetStr:"+11:00",countries:["AU"]},{name:"Antarctica/Macquarie",utcOffset:660,offsetStr:"+11:00",countries:["AU"]},{name:"Australia/Hobart",utcOffset:660,offsetStr:"+11:00",countries:["AU"]},{name:"Australia/Currie",utcOffset:660,offsetStr:"+11:00",countries:["AU"]},{name:"Australia/Melbourne",utcOffset:660,offsetStr:"+11:00",countries:["AU"]},{name:"Australia/Sydney",utcOffset:660,offsetStr:"+11:00",countries:["AU"]},{name:"Australia/Broken_Hill",utcOffset:630,offsetStr:"+10:30",countries:["AU"]},{name:"Australia/Brisbane",utcOffset:600,offsetStr:"+10:00",countries:["AU"]},{name:"Australia/Lindeman",utcOffset:600,offsetStr:"+10:00",countries:["AU"]},{name:"Australia/Adelaide",utcOffset:630,offsetStr:"+10:30",countries:["AU"]},{name:"Australia/Darwin",utcOffset:570,offsetStr:"+09:30",countries:["AU"]},{name:"Australia/Perth",utcOffset:480,offsetStr:"+08:00",countries:["AU"]},{name:"Australia/Eucla",utcOffset:525,offsetStr:"+08:45",countries:["AU"]},{name:"Asia/Baku",utcOffset:240,offsetStr:"+04:00",countries:["AZ"]},{name:"America/Barbados",utcOffset:-240,offsetStr:"-04:00",countries:["BB"]},{name:"Asia/Dhaka",utcOffset:360,offsetStr:"+06:00",countries:["BD"]},{name:"Europe/Brussels",utcOffset:60,offsetStr:"+01:00",countries:["BE"]},{name:"Europe/Sofia",utcOffset:120,offsetStr:"+02:00",countries:["BG"]},{name:"Atlantic/Bermuda",utcOffset:-240,offsetStr:"-04:00",countries:["BM"]},{name:"Asia/Brunei",utcOffset:480,offsetStr:"+08:00",countries:["BN"]},{name:"America/La_Paz",utcOffset:-240,offsetStr:"-04:00",countries:["BO"]},{name:"America/Noronha",utcOffset:-120,offsetStr:"-02:00",countries:["BR"]},{name:"America/Belem",utcOffset:-180,offsetStr:"-03:00",countries:["BR"]},{name:"America/Fortaleza",utcOffset:-180,offsetStr:"-03:00",countries:["BR"]},{name:"America/Recife",utcOffset:-180,offsetStr:"-03:00",countries:["BR"]},{name:"America/Araguaina",utcOffset:-180,offsetStr:"-03:00",countries:["BR"]},{name:"America/Maceio",utcOffset:-180,offsetStr:"-03:00",countries:["BR"]},{name:"America/Bahia",utcOffset:-180,offsetStr:"-03:00",countries:["BR"]},{name:"America/Sao_Paulo",utcOffset:-120,offsetStr:"-02:00",countries:["BR"]},{name:"America/Campo_Grande",utcOffset:-180,offsetStr:"-03:00",countries:["BR"]},{name:"America/Cuiaba",utcOffset:-180,offsetStr:"-03:00",countries:["BR"]},{name:"America/Santarem",utcOffset:-180,offsetStr:"-03:00",countries:["BR"]},{name:"America/Porto_Velho",utcOffset:-240,offsetStr:"-04:00",countries:["BR"]},{name:"America/Boa_Vista",utcOffset:-240,offsetStr:"-04:00",countries:["BR"]},{name:"America/Manaus",utcOffset:-240,offsetStr:"-04:00",countries:["BR"]},{name:"America/Eirunepe",utcOffset:-300,offsetStr:"-05:00",countries:["BR"]},{name:"America/Rio_Branco",utcOffset:-300,offsetStr:"-05:00",countries:["BR"]},{name:"America/Nassau",utcOffset:-300,offsetStr:"-05:00",countries:["BS"]},{name:"Asia/Thimphu",utcOffset:360,offsetStr:"+06:00",countries:["BT"]},{name:"Europe/Minsk",utcOffset:180,offsetStr:"+03:00",countries:["BY"]},{name:"America/Belize",utcOffset:-360,offsetStr:"-06:00",countries:["BZ"]},{name:"America/St_Johns",utcOffset:-210,offsetStr:"-03:30",countries:["CA"]},{name:"America/Halifax",utcOffset:-240,offsetStr:"-04:00",countries:["CA"]},{name:"America/Glace_Bay",utcOffset:-240,offsetStr:"-04:00",countries:["CA"]},{name:"America/Moncton",utcOffset:-240,offsetStr:"-04:00",countries:["CA"]},{name:"America/Goose_Bay",utcOffset:-240,offsetStr:"-04:00",countries:["CA"]},{name:"America/Blanc-Sablon",utcOffset:-240,offsetStr:"-04:00",countries:["CA"]},{name:"America/Toronto",utcOffset:-300,offsetStr:"-05:00",countries:["CA"]},{name:"America/Nipigon",utcOffset:-300,offsetStr:"-05:00",countries:["CA"]},{name:"America/Thunder_Bay",utcOffset:-300,offsetStr:"-05:00",countries:["CA"]},{name:"America/Iqaluit",utcOffset:-300,offsetStr:"-05:00",countries:["CA"]},{name:"America/Pangnirtung",utcOffset:-300,offsetStr:"-05:00",countries:["CA"]},{name:"America/Resolute",utcOffset:-360,offsetStr:"-06:00",countries:["CA"]},{name:"America/Atikokan",utcOffset:-300,offsetStr:"-05:00",countries:["CA"]},{name:"America/Rankin_Inlet",utcOffset:-360,offsetStr:"-06:00",countries:["CA"]},{name:"America/Winnipeg",utcOffset:-360,offsetStr:"-06:00",countries:["CA"]},{name:"America/Rainy_River",utcOffset:-360,offsetStr:"-06:00",countries:["CA"]},{name:"America/Regina",utcOffset:-360,offsetStr:"-06:00",countries:["CA"]},{name:"America/Swift_Current",utcOffset:-360,offsetStr:"-06:00",countries:["CA"]},{name:"America/Edmonton",utcOffset:-420,offsetStr:"-07:00",countries:["CA"]},{name:"America/Cambridge_Bay",utcOffset:-420,offsetStr:"-07:00",countries:["CA"]},{name:"America/Yellowknife",utcOffset:-420,offsetStr:"-07:00",countries:["CA"]},{name:"America/Inuvik",utcOffset:-420,offsetStr:"-07:00",countries:["CA"]},{name:"America/Creston",utcOffset:-420,offsetStr:"-07:00",countries:["CA"]},{name:"America/Dawson_Creek",utcOffset:-420,offsetStr:"-07:00",countries:["CA"]},{name:"America/Fort_Nelson",utcOffset:-420,offsetStr:"-07:00",countries:["CA"]},{name:"America/Vancouver",utcOffset:-480,offsetStr:"-08:00",countries:["CA"]},{name:"America/Whitehorse",utcOffset:-480,offsetStr:"-08:00",countries:["CA"]},{name:"America/Dawson",utcOffset:-480,offsetStr:"-08:00",countries:["CA"]},{name:"Indian/Cocos",utcOffset:390,offsetStr:"+06:30",countries:["CC"]},{name:"Europe/Zurich",utcOffset:60,offsetStr:"+01:00",countries:["CH","DE","LI"]},{name:"Africa/Abidjan",utcOffset:0,offsetStr:"+00:00",countries:["CI","BF","GM","GN","ML","MR","SH","SL","SN","ST","TG"]},{name:"Pacific/Rarotonga",utcOffset:-600,offsetStr:"-10:00",countries:["CK"]},{name:"America/Santiago",utcOffset:-180,offsetStr:"-03:00",countries:["CL"]},{name:"Pacific/Easter",utcOffset:-300,offsetStr:"-05:00",countries:["CL"]},{name:"Asia/Shanghai",utcOffset:480,offsetStr:"+08:00",countries:["CN"]},{name:"Asia/Urumqi",utcOffset:360,offsetStr:"+06:00",countries:["CN"]},{name:"America/Bogota",utcOffset:-300,offsetStr:"-05:00",countries:["CO"]},{name:"America/Costa_Rica",utcOffset:-360,offsetStr:"-06:00",countries:["CR"]},{name:"America/Havana",utcOffset:-300,offsetStr:"-05:00",countries:["CU"]},{name:"Atlantic/Cape_Verde",utcOffset:-60,offsetStr:"-01:00",countries:["CV"]},{name:"America/Curacao",utcOffset:-240,offsetStr:"-04:00",countries:["CW","AW","BQ","SX"]},{name:"Indian/Christmas",utcOffset:420,offsetStr:"+07:00",countries:["CX"]},{name:"Asia/Nicosia",utcOffset:120,offsetStr:"+02:00",countries:["CY"]},{name:"Europe/Prague",utcOffset:60,offsetStr:"+01:00",countries:["CZ","SK"]},{name:"Europe/Berlin",utcOffset:60,offsetStr:"+01:00",countries:["DE"]},{name:"Europe/Copenhagen",utcOffset:60,offsetStr:"+01:00",countries:["DK"]},{name:"America/Santo_Domingo",utcOffset:-240,offsetStr:"-04:00",countries:["DO"]},{name:"Africa/Algiers",utcOffset:60,offsetStr:"+01:00",countries:["DZ"]},{name:"America/Guayaquil",utcOffset:-300,offsetStr:"-05:00",countries:["EC"]},{name:"Pacific/Galapagos",utcOffset:-360,offsetStr:"-06:00",countries:["EC"]},{name:"Europe/Tallinn",utcOffset:120,offsetStr:"+02:00",countries:["EE"]},{name:"Africa/Cairo",utcOffset:120,offsetStr:"+02:00",countries:["EG"]},{name:"Africa/El_Aaiun",utcOffset:0,offsetStr:"+00:00",countries:["EH"]},{name:"Europe/Madrid",utcOffset:60,offsetStr:"+01:00",countries:["ES"]},{name:"Africa/Ceuta",utcOffset:60,offsetStr:"+01:00",countries:["ES"]},{name:"Atlantic/Canary",utcOffset:0,offsetStr:"+00:00",countries:["ES"]},{name:"Europe/Helsinki",utcOffset:120,offsetStr:"+02:00",countries:["FI","AX"]},{name:"Pacific/Fiji",utcOffset:720,offsetStr:"+12:00",countries:["FJ"]},{name:"Atlantic/Stanley",utcOffset:-180,offsetStr:"-03:00",countries:["FK"]},{name:"Pacific/Chuuk",utcOffset:600,offsetStr:"+10:00",countries:["FM"]},{name:"Pacific/Pohnpei",utcOffset:660,offsetStr:"+11:00",countries:["FM"]},{name:"Pacific/Kosrae",utcOffset:660,offsetStr:"+11:00",countries:["FM"]},{name:"Atlantic/Faroe",utcOffset:0,offsetStr:"+00:00",countries:["FO"]},{name:"Europe/Paris",utcOffset:60,offsetStr:"+01:00",countries:["FR"]},{name:"Europe/London",utcOffset:0,offsetStr:"+00:00",countries:["GB","GG","IM","JE"]},{name:"Asia/Tbilisi",utcOffset:240,offsetStr:"+04:00",countries:["GE"]},{name:"America/Cayenne",utcOffset:-180,offsetStr:"-03:00",countries:["GF"]},{name:"Africa/Accra",utcOffset:0,offsetStr:"+00:00",countries:["GH"]},{name:"Europe/Gibraltar",utcOffset:60,offsetStr:"+01:00",countries:["GI"]},{name:"America/Godthab",utcOffset:-180,offsetStr:"-03:00",countries:["GL"]},{name:"America/Danmarkshavn",utcOffset:0,offsetStr:"+00:00",countries:["GL"]},{name:"America/Scoresbysund",utcOffset:-60,offsetStr:"-01:00",countries:["GL"]},{name:"America/Thule",utcOffset:-240,offsetStr:"-04:00",countries:["GL"]},{name:"Europe/Athens",utcOffset:120,offsetStr:"+02:00",countries:["GR"]},{name:"Atlantic/South_Georgia",utcOffset:-120,offsetStr:"-02:00",countries:["GS"]},{name:"America/Guatemala",utcOffset:-360,offsetStr:"-06:00",countries:["GT"]},{name:"Pacific/Guam",utcOffset:600,offsetStr:"+10:00",countries:["GU","MP"]},{name:"Africa/Bissau",utcOffset:0,offsetStr:"+00:00",countries:["GW"]},{name:"America/Guyana",utcOffset:-240,offsetStr:"-04:00",countries:["GY"]},{name:"Asia/Hong_Kong",utcOffset:480,offsetStr:"+08:00",countries:["HK"]},{name:"America/Tegucigalpa",utcOffset:-360,offsetStr:"-06:00",countries:["HN"]},{name:"America/Port-au-Prince",utcOffset:-300,offsetStr:"-05:00",countries:["HT"]},{name:"Europe/Budapest",utcOffset:60,offsetStr:"+01:00",countries:["HU"]},{name:"Asia/Jakarta",utcOffset:420,offsetStr:"+07:00",countries:["ID"]},{name:"Asia/Pontianak",utcOffset:420,offsetStr:"+07:00",countries:["ID"]},{name:"Asia/Makassar",utcOffset:480,offsetStr:"+08:00",countries:["ID"]},{name:"Asia/Jayapura",utcOffset:540,offsetStr:"+09:00",countries:["ID"]},{name:"Europe/Dublin",utcOffset:0,offsetStr:"+00:00",countries:["IE"]},{name:"Asia/Jerusalem",utcOffset:120,offsetStr:"+02:00",countries:["IL"]},{name:"Asia/Kolkata",utcOffset:330,offsetStr:"+05:30",countries:["IN"]},{name:"Indian/Chagos",utcOffset:360,offsetStr:"+06:00",countries:["IO"]},{name:"Asia/Baghdad",utcOffset:180,offsetStr:"+03:00",countries:["IQ"]},{name:"Asia/Tehran",utcOffset:210,offsetStr:"+03:30",countries:["IR"]},{name:"Atlantic/Reykjavik",utcOffset:0,offsetStr:"+00:00",countries:["IS"]},{name:"Europe/Rome",utcOffset:60,offsetStr:"+01:00",countries:["IT","SM","VA"]},{name:"America/Jamaica",utcOffset:-300,offsetStr:"-05:00",countries:["JM"]},{name:"Asia/Amman",utcOffset:120,offsetStr:"+02:00",countries:["JO"]},{name:"Asia/Tokyo",utcOffset:540,offsetStr:"+09:00",countries:["JP"]},{name:"Africa/Nairobi",utcOffset:180,offsetStr:"+03:00",countries:["KE","DJ","ER","ET","KM","MG","SO","TZ","UG","YT"]},{name:"Asia/Bishkek",utcOffset:360,offsetStr:"+06:00",countries:["KG"]},{name:"Pacific/Tarawa",utcOffset:720,offsetStr:"+12:00",countries:["KI"]},{name:"Pacific/Enderbury",utcOffset:780,offsetStr:"+13:00",countries:["KI"]},{name:"Pacific/Kiritimati",utcOffset:840,offsetStr:"+14:00",countries:["KI"]},{name:"Asia/Pyongyang",utcOffset:510,offsetStr:"+08:30",countries:["KP"]},{name:"Asia/Seoul",utcOffset:540,offsetStr:"+09:00",countries:["KR"]},{name:"America/Cayman",utcOffset:-300,offsetStr:"-05:00",countries:["KY"]},{name:"Asia/Almaty",utcOffset:360,offsetStr:"+06:00",countries:["KZ"]},{name:"Asia/Qyzylorda",utcOffset:360,offsetStr:"+06:00",countries:["KZ"]},{name:"Asia/Aqtobe",utcOffset:300,offsetStr:"+05:00",countries:["KZ"]},{name:"Asia/Aqtau",utcOffset:300,offsetStr:"+05:00",countries:["KZ"]},{name:"Asia/Oral",utcOffset:300,offsetStr:"+05:00",countries:["KZ"]},{name:"Asia/Beirut",utcOffset:120,offsetStr:"+02:00",countries:["LB"]},{name:"Asia/Colombo",utcOffset:330,offsetStr:"+05:30",countries:["LK"]},{name:"Africa/Monrovia",utcOffset:0,offsetStr:"+00:00",countries:["LR"]},{name:"Europe/Vilnius",utcOffset:120,offsetStr:"+02:00",countries:["LT"]},{name:"Europe/Luxembourg",utcOffset:60,offsetStr:"+01:00",countries:["LU"]},{name:"Europe/Riga",utcOffset:120,offsetStr:"+02:00",countries:["LV"]},{name:"Africa/Tripoli",utcOffset:120,offsetStr:"+02:00",countries:["LY"]},{name:"Africa/Casablanca",utcOffset:0,offsetStr:"+00:00",countries:["MA"]},{name:"Europe/Monaco",utcOffset:60,offsetStr:"+01:00",countries:["MC"]},{name:"Europe/Chisinau",utcOffset:120,offsetStr:"+02:00",countries:["MD"]},{name:"Pacific/Majuro",utcOffset:720,offsetStr:"+12:00",countries:["MH"]},{name:"Pacific/Kwajalein",utcOffset:720,offsetStr:"+12:00",countries:["MH"]},{name:"Asia/Rangoon",utcOffset:390,offsetStr:"+06:30",countries:["MM"]},{name:"Asia/Ulaanbaatar",utcOffset:480,offsetStr:"+08:00",countries:["MN"]},{name:"Asia/Hovd",utcOffset:420,offsetStr:"+07:00",countries:["MN"]},{name:"Asia/Choibalsan",utcOffset:480,offsetStr:"+08:00",countries:["MN"]},{name:"Asia/Macau",utcOffset:480,offsetStr:"+08:00",countries:["MO"]},{name:"America/Martinique",utcOffset:-240,offsetStr:"-04:00",countries:["MQ"]},{name:"Europe/Malta",utcOffset:60,offsetStr:"+01:00",countries:["MT"]},{name:"Indian/Mauritius",utcOffset:240,offsetStr:"+04:00",countries:["MU"]},{name:"Indian/Maldives",utcOffset:300,offsetStr:"+05:00",countries:["MV"]},{name:"America/Mexico_City",utcOffset:-360,offsetStr:"-06:00",countries:["MX"]},{name:"America/Cancun",utcOffset:-300,offsetStr:"-05:00",countries:["MX"]},{name:"America/Merida",utcOffset:-360,offsetStr:"-06:00",countries:["MX"]},{name:"America/Monterrey",utcOffset:-360,offsetStr:"-06:00",countries:["MX"]},{name:"America/Matamoros",utcOffset:-360,offsetStr:"-06:00",countries:["MX"]},{name:"America/Mazatlan",utcOffset:-420,offsetStr:"-07:00",countries:["MX"]},{name:"America/Chihuahua",utcOffset:-420,offsetStr:"-07:00",countries:["MX"]},{name:"America/Ojinaga",utcOffset:-420,offsetStr:"-07:00",countries:["MX"]},{name:"America/Hermosillo",utcOffset:-420,offsetStr:"-07:00",countries:["MX"]},{name:"America/Tijuana",utcOffset:-480,offsetStr:"-08:00",countries:["MX"]},{name:"America/Santa_Isabel",utcOffset:-480,offsetStr:"-08:00",countries:["MX"]},{name:"America/Bahia_Banderas",utcOffset:-360,offsetStr:"-06:00",countries:["MX"]},{name:"Asia/Kuala_Lumpur",utcOffset:480,offsetStr:"+08:00",countries:["MY"]},{name:"Asia/Kuching",utcOffset:480,offsetStr:"+08:00",countries:["MY"]},{name:"Africa/Maputo",utcOffset:120,offsetStr:"+02:00",countries:["MZ","BI","BW","CD","MW","RW","ZM","ZW"]},{name:"Africa/Windhoek",utcOffset:120,offsetStr:"+02:00",countries:["NA"]},{name:"Pacific/Noumea",utcOffset:660,offsetStr:"+11:00",countries:["NC"]},{name:"Pacific/Norfolk",utcOffset:660,offsetStr:"+11:00",countries:["NF"]},{name:"Africa/Lagos",utcOffset:60,offsetStr:"+01:00",countries:["NG","AO","BJ","CD","CF","CG","CM","GA","GQ","NE"]},{name:"America/Managua",utcOffset:-360,offsetStr:"-06:00",countries:["NI"]},{name:"Europe/Amsterdam",utcOffset:60,offsetStr:"+01:00",countries:["NL"]},{name:"Europe/Oslo",utcOffset:60,offsetStr:"+01:00",countries:["NO","SJ"]},{name:"Asia/Kathmandu",utcOffset:345,offsetStr:"+05:45",countries:["NP"]},{name:"Pacific/Nauru",utcOffset:720,offsetStr:"+12:00",countries:["NR"]},{name:"Pacific/Niue",utcOffset:-660,offsetStr:"-11:00",countries:["NU"]},{name:"Pacific/Auckland",utcOffset:780,offsetStr:"+13:00",countries:["NZ","AQ"]},{name:"Pacific/Chatham",utcOffset:825,offsetStr:"+13:45",countries:["NZ"]},{name:"America/Panama",utcOffset:-300,offsetStr:"-05:00",countries:["PA"]},{name:"America/Lima",utcOffset:-300,offsetStr:"-05:00",countries:["PE"]},{name:"Pacific/Tahiti",utcOffset:-600,offsetStr:"-10:00",countries:["PF"]},{name:"Pacific/Marquesas",utcOffset:-570,offsetStr:"-09:30",countries:["PF"]},{name:"Pacific/Gambier",utcOffset:-540,offsetStr:"-09:00",countries:["PF"]},{name:"Pacific/Port_Moresby",utcOffset:600,offsetStr:"+10:00",countries:["PG"]},{name:"Pacific/Bougainville",utcOffset:660,offsetStr:"+11:00",countries:["PG"]},{name:"Asia/Manila",utcOffset:480,offsetStr:"+08:00",countries:["PH"]},{name:"Asia/Karachi",utcOffset:300,offsetStr:"+05:00",countries:["PK"]},{name:"Europe/Warsaw",utcOffset:60,offsetStr:"+01:00",countries:["PL"]},{name:"America/Miquelon",utcOffset:-180,offsetStr:"-03:00",countries:["PM"]},{name:"Pacific/Pitcairn",utcOffset:-480,offsetStr:"-08:00",countries:["PN"]},{name:"America/Puerto_Rico",utcOffset:-240,offsetStr:"-04:00",countries:["PR"]},{name:"Asia/Gaza",utcOffset:120,offsetStr:"+02:00",countries:["PS"]},{name:"Asia/Hebron",utcOffset:120,offsetStr:"+02:00",countries:["PS"]},{name:"Europe/Lisbon",utcOffset:0,offsetStr:"+00:00",countries:["PT"]},{name:"Atlantic/Madeira",utcOffset:0,offsetStr:"+00:00",countries:["PT"]},{name:"Atlantic/Azores",utcOffset:-60,offsetStr:"-01:00",countries:["PT"]},{name:"Pacific/Palau",utcOffset:540,offsetStr:"+09:00",countries:["PW"]},{name:"America/Asuncion",utcOffset:-180,offsetStr:"-03:00",countries:["PY"]},{name:"Asia/Qatar",utcOffset:180,offsetStr:"+03:00",countries:["QA","BH"]},{name:"Indian/Reunion",utcOffset:240,offsetStr:"+04:00",countries:["RE","TF"]},{name:"Europe/Bucharest",utcOffset:120,offsetStr:"+02:00",countries:["RO"]},{name:"Europe/Belgrade",utcOffset:60,offsetStr:"+01:00",countries:["RS","BA","HR","ME","MK","SI"]},{name:"Europe/Kaliningrad",utcOffset:120,offsetStr:"+02:00",countries:["RU"]},{name:"Europe/Moscow",utcOffset:180,offsetStr:"+03:00",countries:["RU"]},{name:"Europe/Simferopol",utcOffset:180,offsetStr:"+03:00",countries:["RU"]},{name:"Europe/Volgograd",utcOffset:180,offsetStr:"+03:00",countries:["RU"]},{name:"Europe/Samara",utcOffset:240,offsetStr:"+04:00",countries:["RU"]},{name:"Asia/Yekaterinburg",utcOffset:300,offsetStr:"+05:00",countries:["RU"]},{name:"Asia/Omsk",utcOffset:360,offsetStr:"+06:00",countries:["RU"]},{name:"Asia/Novosibirsk",utcOffset:360,offsetStr:"+06:00",countries:["RU"]},{name:"Asia/Novokuznetsk",utcOffset:420,offsetStr:"+07:00",countries:["RU"]},{name:"Asia/Krasnoyarsk",utcOffset:420,offsetStr:"+07:00",countries:["RU"]},{name:"Asia/Irkutsk",utcOffset:480,offsetStr:"+08:00",countries:["RU"]},{name:"Asia/Chita",utcOffset:480,offsetStr:"+08:00",countries:["RU"]},{name:"Asia/Yakutsk",utcOffset:540,offsetStr:"+09:00",countries:["RU"]},{name:"Asia/Khandyga",utcOffset:540,offsetStr:"+09:00",countries:["RU"]},{name:"Asia/Vladivostok",utcOffset:600,offsetStr:"+10:00",countries:["RU"]},{name:"Asia/Sakhalin",utcOffset:600,offsetStr:"+10:00",countries:["RU"]},{name:"Asia/Ust-Nera",utcOffset:600,offsetStr:"+10:00",countries:["RU"]},{name:"Asia/Magadan",utcOffset:600,offsetStr:"+10:00",countries:["RU"]},{name:"Asia/Srednekolymsk",utcOffset:660,offsetStr:"+11:00",countries:["RU"]},{name:"Asia/Kamchatka",utcOffset:720,offsetStr:"+12:00",countries:["RU"]},{name:"Asia/Anadyr",utcOffset:720,offsetStr:"+12:00",countries:["RU"]},{name:"Asia/Riyadh",utcOffset:180,offsetStr:"+03:00",countries:["SA","KW","YE"]},{name:"Pacific/Guadalcanal",utcOffset:660,offsetStr:"+11:00",countries:["SB"]},{name:"Indian/Mahe",utcOffset:240,offsetStr:"+04:00",countries:["SC"]},{name:"Africa/Khartoum",utcOffset:180,offsetStr:"+03:00",countries:["SD","SS"]},{name:"Europe/Stockholm",utcOffset:60,offsetStr:"+01:00",countries:["SE"]},{name:"Asia/Singapore",utcOffset:480,offsetStr:"+08:00",countries:["SG"]},{name:"America/Paramaribo",utcOffset:-180,offsetStr:"-03:00",countries:["SR"]},{name:"America/El_Salvador",utcOffset:-360,offsetStr:"-06:00",countries:["SV"]},{name:"Asia/Damascus",utcOffset:120,offsetStr:"+02:00",countries:["SY"]},{name:"America/Grand_Turk",utcOffset:-240,offsetStr:"-04:00",countries:["TC"]},{name:"Africa/Ndjamena",utcOffset:60,offsetStr:"+01:00",countries:["TD"]},{name:"Indian/Kerguelen",utcOffset:300,offsetStr:"+05:00",countries:["TF"]},{name:"Asia/Bangkok",utcOffset:420,offsetStr:"+07:00",countries:["TH","KH","LA","VN"]},{name:"Asia/Dushanbe",utcOffset:300,offsetStr:"+05:00",countries:["TJ"]},{name:"Pacific/Fakaofo",utcOffset:780,offsetStr:"+13:00",countries:["TK"]},{name:"Asia/Dili",utcOffset:540,offsetStr:"+09:00",countries:["TL"]},{name:"Asia/Ashgabat",utcOffset:300,offsetStr:"+05:00",countries:["TM"]},{name:"Africa/Tunis",utcOffset:60,offsetStr:"+01:00",countries:["TN"]},{name:"Pacific/Tongatapu",utcOffset:780,offsetStr:"+13:00",countries:["TO"]},{name:"Europe/Istanbul",utcOffset:120,offsetStr:"+02:00",countries:["TR"]},{name:"America/Port_of_Spain",utcOffset:-240,offsetStr:"-04:00",countries:["TT","AG","AI","BL","DM","GD","GP","KN","LC","MF","MS","VC","VG","VI"]},{name:"Pacific/Funafuti",utcOffset:720,offsetStr:"+12:00",countries:["TV"]},{name:"Asia/Taipei",utcOffset:480,offsetStr:"+08:00",countries:["TW"]},{name:"Europe/Kiev",utcOffset:120,offsetStr:"+02:00",countries:["UA"]},{name:"Europe/Uzhgorod",utcOffset:120,offsetStr:"+02:00",countries:["UA"]},{name:"Europe/Zaporozhye",utcOffset:120,offsetStr:"+02:00",countries:["UA"]},{name:"Pacific/Wake",utcOffset:720,offsetStr:"+12:00",countries:["UM"]},{name:"America/New_York",utcOffset:-300,offsetStr:"-05:00",countries:["US"]},{name:"America/Detroit",utcOffset:-300,offsetStr:"-05:00",countries:["US"]},{name:"America/Kentucky/Louisville",utcOffset:-300,offsetStr:"-05:00",countries:["US"]},{name:"America/Kentucky/Monticello",utcOffset:-300,offsetStr:"-05:00",countries:["US"]},{name:"America/Indiana/Indianapolis",utcOffset:-300,offsetStr:"-05:00",countries:["US"]},{name:"America/Indiana/Vincennes",utcOffset:-300,offsetStr:"-05:00",countries:["US"]},{name:"America/Indiana/Winamac",utcOffset:-300,offsetStr:"-05:00",countries:["US"]},{name:"America/Indiana/Marengo",utcOffset:-300,offsetStr:"-05:00",countries:["US"]},{name:"America/Indiana/Petersburg",utcOffset:-300,offsetStr:"-05:00",countries:["US"]},{name:"America/Indiana/Vevay",utcOffset:-300,offsetStr:"-05:00",countries:["US"]},{name:"America/Chicago",utcOffset:-360,offsetStr:"-06:00",countries:["US"]},{name:"America/Indiana/Tell_City",utcOffset:-360,offsetStr:"-06:00",countries:["US"]},{name:"America/Indiana/Knox",utcOffset:-360,offsetStr:"-06:00",countries:["US"]},{name:"America/Menominee",utcOffset:-360,offsetStr:"-06:00",countries:["US"]},{name:"America/North_Dakota/Center",utcOffset:-360,offsetStr:"-06:00",countries:["US"]},{name:"America/North_Dakota/New_Salem",utcOffset:-360,offsetStr:"-06:00",countries:["US"]},{name:"America/North_Dakota/Beulah",utcOffset:-360,offsetStr:"-06:00",countries:["US"]},{name:"America/Denver",utcOffset:-420,offsetStr:"-07:00",countries:["US"]},{name:"America/Boise",utcOffset:-420,offsetStr:"-07:00",countries:["US"]},{name:"America/Phoenix",utcOffset:-420,offsetStr:"-07:00",countries:["US"]},{name:"America/Los_Angeles",utcOffset:-480,offsetStr:"-08:00",countries:["US"]},{name:"America/Metlakatla",utcOffset:-480,offsetStr:"-08:00",countries:["US"]},{name:"America/Anchorage",utcOffset:-540,offsetStr:"-09:00",countries:["US"]},{name:"America/Juneau",utcOffset:-540,offsetStr:"-09:00",countries:["US"]},{name:"America/Sitka",utcOffset:-540,offsetStr:"-09:00",countries:["US"]},{name:"America/Yakutat",utcOffset:-540,offsetStr:"-09:00",countries:["US"]},{name:"America/Nome",utcOffset:-540,offsetStr:"-09:00",countries:["US"]},{name:"America/Adak",utcOffset:-600,offsetStr:"-10:00",countries:["US"]},{name:"Pacific/Honolulu",utcOffset:-600,offsetStr:"-10:00",countries:["US","UM"]},{name:"America/Montevideo",utcOffset:-180,offsetStr:"-03:00",countries:["UY"]},{name:"Asia/Samarkand",utcOffset:300,offsetStr:"+05:00",countries:["UZ"]},{name:"Asia/Tashkent",utcOffset:300,offsetStr:"+05:00",countries:["UZ"]},{name:"America/Caracas",utcOffset:-270,offsetStr:"-04:30",countries:["VE"]},{name:"Asia/Ho_Chi_Minh",utcOffset:420,offsetStr:"+07:00",countries:["VN"]},{name:"Pacific/Efate",utcOffset:660,offsetStr:"+11:00",countries:["VU"]},{name:"Pacific/Wallis",utcOffset:720,offsetStr:"+12:00",countries:["WF"]},{name:"Pacific/Apia",utcOffset:840,offsetStr:"+14:00",countries:["WS"]},{name:"Africa/Johannesburg",utcOffset:120,offsetStr:"+02:00",countries:["ZA","LS","SZ"]}]}],link:function(e,n,t,a){e.updateModel=function(e){a.$setViewValue(e)}},templateUrl:"app/core/directives/ms-timezone/ms-timezone.html"}})}(),function(){"use strict";angular.module("app.core").controller("MsWidgetEngineCounterController",function(){var i=this;i.filter=[],i.filtered=!1,i.fontSize=20,i.label="",i.getCount=function(e){var n=0;if(e){i.fontSize=e.attrs[r]&&e.attrs[r].value?parseInt(e.attrs[r].value)-parseInt(e.attrs[r].value)%2:20;var t=e.attrs.find(function(e){return"attrChannel"===e.name});if(t||e.attrs.push({name:"attrChannel",value:"voice"}),"voice"!==e.attrs[l].value?"talking"===e.attrs[s].value?i.label="Opened":"answered"===e.attrs[s].value?i.label="Managed":i.label=e.attrs[s].value:i.label=e.attrs[s].value,e.attrs[l].value.toLowerCase().includes("voice")){e.attrs[o].value&&e.attrs[o].value.length?(i.filtered=!0,i.filter=_.intersection(e.voiceQueuesSelected,e.attrs[o].value)):(i.filtered=!1,i.filter=e.voiceQueuesSelected);for(var a=0;a<e.voiceQueues.rows.length;a+=1)_.includes(i.filter,e.voiceQueues.rows[a].id)&&(n+=e.voiceQueues.rows[a][e.attrs[s].value]?parseInt(e.voiceQueues.rows[a][e.attrs[s].value]):0)}else if(e.attrs[l].value.toLowerCase().includes("chat")){e.attrs[g].value&&e.attrs[g].value.length?(i.filtered=!0,i.filter=_.intersection(e.chatWebsitesSelected,e.attrs[g].value)):(i.filtered=!1,i.filter=e.chatWebsitesSelected);for(var a=0;a<e.chatWebsites.rows.length;a+=1)_.includes(i.filter,e.chatWebsites.rows[a].id)&&(n+=e.chatWebsites.rows[a][e.attrs[s].value]?parseInt(e.chatWebsites.rows[a][e.attrs[s].value]):0)}else if(e.attrs[l].value.toLowerCase().includes("fax")){e.attrs[c].value&&e.attrs[c].value.length?(i.filtered=!0,i.filter=_.intersection(e.faxAccountsSelected,e.attrs[c].value)):(i.filtered=!1,i.filter=e.faxAccountsSelected);for(var a=0;a<e.faxAccounts.rows.length;a+=1)_.includes(i.filter,e.faxAccounts.rows[a].id)&&(n+=e.faxAccounts.rows[a][e.attrs[s].value]?parseInt(e.faxAccounts.rows[a][e.attrs[s].value]):0)}else if(e.attrs[l].value.toLowerCase().includes("mail")){e.attrs[d].value&&e.attrs[d].value.length?(i.filtered=!0,i.filter=_.intersection(e.mailAccountsSelected,e.attrs[d].value)):(i.filtered=!1,i.filter=e.mailAccountsSelected);for(var a=0;a<e.mailAccounts.rows.length;a+=1)_.includes(i.filter,e.mailAccounts.rows[a].id)&&(n+=e.mailAccounts.rows[a][e.attrs[s].value]?parseInt(e.mailAccounts.rows[a][e.attrs[s].value]):0)}else if(e.attrs[l].value.toLowerCase().includes("openchannel")){e.attrs[u].value&&e.attrs[u].value.length?(i.filtered=!0,i.filter=_.intersection(e.openchannelAccountsSelected,e.attrs[u].value)):(i.filtered=!1,i.filter=e.openchannelAccountsSelected);for(var a=0;a<e.openchannelAccounts.rows.length;a+=1)_.includes(i.filter,e.openchannelAccounts.rows[a].id)&&(n+=e.openchannelAccounts.rows[a][e.attrs[s].value]?parseInt(e.openchannelAccounts.rows[a][e.attrs[s].value]):0)}else if(e.attrs[l].value.toLowerCase().includes("whatsapp")){e.attrs[p].value&&e.attrs[p].value.length?(i.filtered=!0,i.filter=_.intersection(e.whatsappAccountsSelected,e.attrs[p].value)):(i.filtered=!1,i.filter=e.whatsappAccountsSelected);for(var a=0;a<e.whatsappAccounts.rows.length;a+=1)_.includes(i.filter,e.whatsappAccounts.rows[a].id)&&(n+=e.whatsappAccounts.rows[a][e.attrs[s].value]?parseInt(e.whatsappAccounts.rows[a][e.attrs[s].value]):0)}else if(e.attrs[l].value.toLowerCase().includes("sms")){e.attrs[m].value&&e.attrs[m].value.length?(i.filtered=!0,i.filter=_.intersection(e.smsAccountsSelected,e.attrs[m].value)):(i.filtered=!1,i.filter=e.smsAccountsSelected);for(var a=0;a<e.smsAccounts.rows.length;a+=1)_.includes(i.filter,e.smsAccounts.rows[a].id)&&(n+=e.smsAccounts.rows[a][e.attrs[s].value]?parseInt(e.smsAccounts.rows[a][e.attrs[s].value]):0)}}return n};var s=0,o=1,r=2,l=3,d=4,c=5,m=6,u=7,p=8,g=9})}(),function(){"use strict";function e(r,e){var l=this;l.filter=[],l.filtered=!1,l.properties=[],l.multiBarChart={labels:["QUEUE_NAME"],series:["TOTAL"],data:[[50]],options:{responsive:!0,legend:{display:!0,fontColor:"#2196f3"},scales:{xAxes:[{gridLines:{display:!0},ticks:{fontColor:"#2196f3",stepSize:1,beginAtZero:!0}}],yAxes:[{gridLines:{display:!1},ticks:{fontColor:"#2196f3"}}]}}},l.getMultiBarChart=function(e){e&&(e.attrs&&function(e){switch(l.properties=_.map(_.filter(e.attrs,function(e){return e.name&&0<=e.name.indexOf("attrSerie")&&e.value&&"null"!==e.value}),"value"),e.attrs[4].value){case"voice":e.attrs[3].value&&e.attrs[3].value.length?(l.filtered=!0,l.filter=_.intersection(e.voiceQueuesSelected,e.attrs[3].value)):(l.filtered=!1,l.filter=e.voiceQueuesSelected);break;case"sms":e.attrs[7].value&&e.attrs[7].value.length?(l.filtered=!0,l.filter=_.intersection(e.smsAccountsSelected,e.attrs[7].value)):(l.filtered=!1,l.filter=e.smsAccountsSelected);break;case"mail":e.attrs[5].value&&e.attrs[5].value.length?(l.filtered=!0,l.filter=_.intersection(e.mailAccountsSelected,e.attrs[5].value)):(l.filtered=!1,l.filter=e.mailAccountsSelected);break;case"chat":e.attrs[10].value&&e.attrs[10].value.length?(l.filtered=!0,l.filter=_.intersection(e.chatWebsitesSelected,e.attrs[10].value)):(l.filtered=!1,l.filter=e.chatWebsitesSelected);break;case"fax":e.attrs[6].value&&e.attrs[6].value.length?(l.filtered=!0,l.filter=_.intersection(e.faxAccountsSelected,e.attrs[6].value)):(l.filtered=!1,l.filter=e.faxAccountsSelected);break;case"openchannel":e.attrs[8].value&&e.attrs[8].value.length?(l.filtered=!0,l.filter=_.intersection(e.openchannelAccountsSelected,e.attrs[8].value)):(l.filtered=!1,l.filter=e.openchannelAccountsSelected);break;case"whatsapp":e.attrs[9].value&&e.attrs[9].value.length?(l.filtered=!0,l.filter=_.intersection(e.whatsappAccountsSelected,e.attrs[9].value)):(l.filtered=!1,l.filter=e.whatsappAccountsSelected);break;default:e.attrs[3].value&&e.attrs[3].value.length?(l.filtered=!0,l.filter=_.intersection(e.voiceQueuesSelected,e.attrs[3].value)):(l.filtered=!1,l.filter=e.voiceQueuesSelected)}if(l.multiBarChart.series.length>l.properties.length){var n=l.multiBarChart.series.length-l.properties.length;l.multiBarChart.series.splice(0,n),l.multiBarChart.data.splice(0,n)}for(var t=0;t<l.properties.length;t+=1){var a="";if(a="voice"!==e.attrs[4].value?"talking"===l.properties[t]?"Opened":"answered"===l.properties[t]?"Managed":l.properties[t]:l.properties[t],l.multiBarChart.series[t]=r.instant("TOOLS."+a.toUpperCase()),_.isNil(l.multiBarChart.data[t])&&(l.multiBarChart.data[t]=[]),l.multiBarChart.labels.length>l.filter.length){var i=l.multiBarChart.labels.length-l.filter.length;l.multiBarChart.labels.splice(0,i),l.multiBarChart.data[t].splice(0,i)}switch(e.attrs[4].value){case"voice":for(var s=0,o=0;s<e.voiceQueues.rows.length;s+=1)_.includes(l.filter,e.voiceQueues.rows[s].id)&&(l.multiBarChart.labels[o]=e.voiceQueues.rows[s].name,l.multiBarChart.data[t][o]=e.voiceQueues.rows[s][l.properties[t]]?parseInt(e.voiceQueues.rows[s][l.properties[t]]):0,o+=1);break;case"sms":for(var s=0,o=0;s<e.smsAccounts.rows.length;s+=1)_.includes(l.filter,e.smsAccounts.rows[s].id)&&(l.multiBarChart.labels[o]=e.smsAccounts.rows[s].name,l.multiBarChart.data[t][o]=e.smsAccounts.rows[s][l.properties[t]]?parseInt(e.smsAccounts.rows[s][l.properties[t]]):0,o+=1);break;case"chat":for(var s=0,o=0;s<e.chatWebsites.rows.length;s+=1)_.includes(l.filter,e.chatWebsites.rows[s].id)&&(l.multiBarChart.labels[o]=e.chatWebsites.rows[s].name,l.multiBarChart.data[t][o]=e.chatWebsites.rows[s][l.properties[t]]?parseInt(e.chatWebsites.rows[s][l.properties[t]]):0,o+=1);break;case"fax":for(var s=0,o=0;s<e.faxAccounts.rows.length;s+=1)_.includes(l.filter,e.faxAccounts.rows[s].id)&&(l.multiBarChart.labels[o]=e.faxAccounts.rows[s].name,l.multiBarChart.data[t][o]=e.faxAccounts.rows[s][l.properties[t]]?parseInt(e.faxAccounts.rows[s][l.properties[t]]):0,o+=1);break;case"mail":for(var s=0,o=0;s<e.mailAccounts.rows.length;s+=1)_.includes(l.filter,e.mailAccounts.rows[s].id)&&(l.multiBarChart.labels[o]=e.mailAccounts.rows[s].name,l.multiBarChart.data[t][o]=e.mailAccounts.rows[s][l.properties[t]]?parseInt(e.mailAccounts.rows[s][l.properties[t]]):0,o+=1);break;case"openchannel":for(var s=0,o=0;s<e.openchannelAccounts.rows.length;s+=1)_.includes(l.filter,e.openchannelAccounts.rows[s].id)&&(l.multiBarChart.labels[o]=e.openchannelAccounts.rows[s].name,l.multiBarChart.data[t][o]=e.openchannelAccounts.rows[s][l.properties[t]]?parseInt(e.openchannelAccounts.rows[s][l.properties[t]]):0,o+=1);break;case"whatsapp":for(var s=0,o=0;s<e.whatsappAccounts.rows.length;s+=1)_.includes(l.filter,e.whatsappAccounts.rows[s].id)&&(l.multiBarChart.labels[o]=e.whatsappAccounts.rows[s].name,l.multiBarChart.data[t][o]=e.whatsappAccounts.rows[s][l.properties[t]]?parseInt(e.whatsappAccounts.rows[s][l.properties[t]]):0,o+=1);break;default:for(var s=0,o=0;s<e.voiceQueues.rows.length;s+=1)_.includes(l.filter,e.voiceQueues.rows[s].id)&&(l.multiBarChart.labels[o]=e.voiceQueues.rows[s].name,l.multiBarChart.data[t][o]=e.voiceQueues.rows[s][l.properties[t]]?parseInt(e.voiceQueues.rows[s][l.properties[t]]):0,o+=1)}}}(e),e.foreground&&function(e){l.multiBarChart.options.legend.fontColor=e.foreground;for(var n=0;n<l.multiBarChart.options.scales.xAxes.length;n+=1)l.multiBarChart.options.scales.xAxes[n].ticks.fontColor=e.foreground;for(var t=0;t<l.multiBarChart.options.scales.yAxes.length;t+=1)l.multiBarChart.options.scales.yAxes[t].ticks.fontColor=e.foreground}(e))}}e.$inject=["$translate","socket"],angular.module("app.core").controller("MsWidgetEngineMultibarChartController",e)}(),function(){"use strict";function e(s){var o=this;o.filter=[],o.filtered=!1,o.properties=[],o.pieChart={labels:["ANSWERED"],data:[30],options:{responsive:!0,legend:{display:!0}}},o.getPieChart=function(e){e&&(e.attrs&&function(e){switch(o.properties=_.map(_.filter(e.attrs,function(e){return e.name&&0<=e.name.indexOf("attrSerie")&&e.value&&"null"!==e.value}),"value"),e.attrs[4].value){case"voice":e.attrs[3].value&&e.attrs[3].value.length?(o.filtered=!0,o.filter=_.intersection(e.voiceQueuesSelected,e.attrs[3].value)):(o.filtered=!1,o.filter=e.voiceQueuesSelected);break;case"sms":e.attrs[7].value&&e.attrs[7].value.length?(o.filtered=!0,o.filter=_.intersection(e.smsAccountsSelected,e.attrs[7].value)):(o.filtered=!1,o.filter=e.smsAccountsSelected);break;case"mail":e.attrs[5].value&&e.attrs[5].value.length?(o.filtered=!0,o.filter=_.intersection(e.mailAccountsSelected,e.attrs[5].value)):(o.filtered=!1,o.filter=e.mailAccountsSelected);break;case"chat":e.attrs[10].value&&e.attrs[10].value.length?(o.filtered=!0,o.filter=_.intersection(e.chatWebsitesSelected,e.attrs[10].value)):(o.filtered=!1,o.filter=e.chatWebsitesSelected);break;case"fax":e.attrs[6].value&&e.attrs[6].value.length?(o.filtered=!0,o.filter=_.intersection(e.faxAccountsSelected,e.attrs[6].value)):(o.filtered=!1,o.filter=e.faxAccountsSelected);break;case"openchannel":e.attrs[8].value&&e.attrs[8].value.length?(o.filtered=!0,o.filter=_.intersection(e.openchannelAccountsSelected,e.attrs[8].value)):(o.filtered=!1,o.filter=e.openchannelAccountsSelected);break;case"whatsapp":e.attrs[9].value&&e.attrs[9].value.length?(o.filtered=!0,o.filter=_.intersection(e.whatsappAccountsSelected,e.attrs[9].value)):(o.filtered=!1,o.filter=e.whatsappAccountsSelected);break;default:e.attrs[3].value&&e.attrs[3].value.length?(o.filtered=!0,o.filter=_.intersection(e.voiceQueuesSelected,e.attrs[3].value)):(o.filtered=!1,o.filter=e.voiceQueuesSelected)}if(o.pieChart.labels.length>o.properties.length){var n=o.pieChart.labels.length-o.properties.length;o.pieChart.labels.splice(0,n),o.pieChart.data.splice(0,n)}for(var t=0,a=0;t<o.properties.length;t+=1){switch("voice"!==e.attrs[4].value?"talking"===o.properties[t]?o.pieChart.labels[t]=s.instant("TOOLS.OPENED"):"answered"===o.properties[t]?o.pieChart.labels[t]=s.instant("TOOLS.MANAGED"):o.pieChart.labels[t]=s.instant("TOOLS."+o.properties[t].toUpperCase()):o.pieChart.labels[t]=s.instant("TOOLS."+o.properties[t].toUpperCase()),e.attrs[4].value){case"voice":for(var i=0;i<e.voiceQueues.rows.length;i+=1)_.includes(o.filter,e.voiceQueues.rows[i].id)&&(a+=e.voiceQueues.rows[i][o.properties[t]]?parseInt(e.voiceQueues.rows[i][o.properties[t]]):0);break;case"sms":for(var i=0;i<e.smsAccounts.rows.length;i+=1)_.includes(o.filter,e.smsAccounts.rows[i].id)&&(a+=e.smsAccounts.rows[i][o.properties[t]]?parseInt(e.smsAccounts.rows[i][o.properties[t]]):0);break;case"chat":for(var i=0;i<e.chatWebsites.rows.length;i+=1)_.includes(o.filter,e.chatWebsites.rows[i].id)&&(a+=e.chatWebsites.rows[i][o.properties[t]]?parseInt(e.chatWebsites.rows[i][o.properties[t]]):0);break;case"fax":for(var i=0;i<e.faxAccounts.rows.length;i+=1)_.includes(o.filter,e.faxAccounts.rows[i].id)&&(a+=e.faxAccounts.rows[i][o.properties[t]]?parseInt(e.faxAccounts.rows[i][o.properties[t]]):0);break;case"mail":for(var i=0;i<e.mailAccounts.rows.length;i+=1)_.includes(o.filter,e.mailAccounts.rows[i].id)&&(a+=e.mailAccounts.rows[i][o.properties[t]]?parseInt(e.mailAccounts.rows[i][o.properties[t]]):0);break;case"openchannel":for(var i=0;i<e.openchannelAccounts.rows.length;i+=1)_.includes(o.filter,e.openchannelAccounts.rows[i].id)&&(a+=e.openchannelAccounts.rows[i][o.properties[t]]?parseInt(e.openchannelAccounts.rows[i][o.properties[t]]):0);break;case"whatsapp":for(var i=0;i<e.whatsappAccounts.rows.length;i+=1)_.includes(o.filter,e.whatsappAccounts.rows[i].id)&&(a+=e.whatsappAccounts.rows[i][o.properties[t]]?parseInt(e.whatsappAccounts.rows[i][o.properties[t]]):0);break;default:for(var i=0;i<e.voiceQueues.rows.length;i+=1)_.includes(o.filter,e.voiceQueues.rows[i].id)&&(a+=e.voiceQueues.rows[i][o.properties[t]]?parseInt(e.voiceQueues.rows[i][o.properties[t]]):0)}o.pieChart.data[t]=a,a=0}}(e),e.foreground&&(n=e,o.pieChart.options.legend.fontColor=n.foreground));var n}}e.$inject=["$translate"],angular.module("app.core").controller("MsWidgetEnginePieChartController",e)}(),function(){"use strict";function e(e,t,a,i){var s=this;function n(e){s.results=e||{count:0,rows:[]}}function o(){s.query.offset=(s.query.page-1)*s.query.limit,s.promise=i[s.reportRoute].run(s.query,n).$promise}s.countDown=0,s.refresh=0,s.title="",s.columns=[],s.results={rows:[],count:0},s.query={limit:10,page:1,startDate:moment().startOf("day").format("YYYY-MM-DD HH:mm:ss"),endDate:moment().endOf("day").format("YYYY-MM-DD HH:mm:ss"),output:"web"},s.onInit=function e(n){n&&n.attrs&&(n.attrs[0]&&n.attrs[0].value&&(s.query.id=n.attrs[0].value,i.analyticFieldReport.get({fields:"field,alias",nolimit:!0,DefaultReportId:"default"===n.attrs[0].type?n.attrs[0].value:void 0,CustomReportId:"custom"===n.attrs[0].type?n.attrs[0].value:void 0}).$promise.then(function(e){switch(e&&e.rows&&(s.columns=e.rows),n.attrs[0].type){case"default":s.reportRoute="analyticDefaultReport";break;case"custom":s.reportRoute="analyticCustomReport"}return i[s.reportRoute].get({id:n.attrs[0].value,fields:"id,name"}).$promise}).then(function(e){e&&e.name&&(s.title=e.name),o()}).catch(function(e){console.log(e)})),n.attrs[1]&&n.attrs[1].value&&(s.refresh=parseInt(n.attrs[1].value),!_.isNaN(s.refresh)&&0<s.refresh?(s.countDown=parseInt(n.attrs[1].value),s.interval=a(function(){s.countDown-=1},1e3,0),s.timeout=t(function(){s.interval&&a.cancel(s.interval),e(n)},1e3*s.refresh)):(s.interval&&a.cancel(s.interval),s.timeout&&t.cancel(s.timeout))))},s.getResults=o,s.valueReplacer=function(e,n){moment(n,"YYYY-MM-DDTHH:mm:ssZ",!0).isValid()&&(n=moment(n,"").format("YYYY-MM-DD HH:mm:ss"));return n},e.$on("$destroy",function(){s.interval&&a.cancel(s.interval),s.timeout&&t.cancel(s.timeout)})}e.$inject=["$scope","$timeout","$interval","api"],angular.module("app.core").controller("MsWidgetEngineWebReportController",e)}(),function(){"use strict";function e(e,n){this.getTrustedURL=function(e){return n.trustAsResourceUrl(e)}}function n(e){return{restrict:"E",scope:{config:"=?",onEdit:"&?",onDelete:"&?"},require:"msWidgetEngine",controller:"MsWidgetEngineController",controllerAs:"vm",bindToController:!0,templateUrl:"app/core/directives/ms-widget-engine/ms-widget-engine.html"}}e.$inject=["$mdDialog","$sce"],n.$inject=["$document"],angular.module("app.core").controller("MsWidgetEngineController",e).directive("msWidgetEngine",n)}(),function(){"use strict";function e(e,n){var t=this;t.flipped=!1,t.flip=function(){if(!angular.isDefined(e.flippable)||!0!==e.flippable)return;t.flipped=!t.flipped,n.toggleClass("flipped",t.flipped)}}e.$inject=["$scope","$element"],angular.module("app.core").controller("MsWidgetController",e).directive("msWidget",function(){return{restrict:"E",scope:{flippable:"=?"},controller:"MsWidgetController",transclude:!0,compile:function(e){return e.addClass("ms-widget"),function(e,n,t,a,i){i(function(e){n.empty(),n.append(e)})}}}}).directive("msWidgetFront",function(){return{restrict:"E",require:"^msWidget",transclude:!0,compile:function(e){return e.addClass("ms-widget-front"),function(e,n,t,a,i){i(function(e){n.empty(),n.append(e)}),e.flipWidget=a.flip}}}}).directive("msWidgetBack",function(){return{restrict:"E",require:"^msWidget",transclude:!0,compile:function(e){return e.addClass("ms-widget-back"),function(e,n,t,a,i){i(function(e){n.empty(),n.append(e)}),e.flipWidget=a.flip}}}})}(),function(){"use strict";function e(s,n,o,r){return{restrict:"A",require:"?ngModel",link:function(t,a,e,i){o.isAdmin()||o.isTelephone()||(""!==e.privacy||o.getCurrentUser().privacyEnabled)&&!1!==t.$eval(e.privacy)&&(i?(i.$formatters.push(function(e){if(!e)return e;var n=r.mask(e);return i.$setViewValue(n),i.$render(),i.$viewValue}),i.$parsers.push(function(){return i.$modelValue}),a[0].disabled=!0):n(function(){s(a.contents())(t);var e=a.text();if(e){var n=r.mask(e);a.text(n)}}))}}}e.$inject=["$compile","$timeout","Auth","privacyManager"],angular.module("app.core").directive("privacy",e)}(),function(){"use strict";function e(d,c,t,h){function f(e,n){return"motion2.home."+e+":"+n}function b(e){return _.capitalize(e)+("chat"===e?"Website":"Account")+"Id"}function A(e){return"chat"===e?"Website":"Account"}function E(e,n,t){var a=f(n,t);h.set(a,e)}return{addAccount:function(r,e){var l=e.accounts,d=e.accountId,c=e.filters,m=e.query,u=e.userId,n="get"+_.capitalize(r)+("chat"===r?"Websites":"Accounts"),p=b(r),g=A(r),v=l.rows.length===m[p].length;return t.user[n]({id:u,nolimit:!0}).$promise.then(function(e){var n,t,a,i,s;if(l.rows=e.rows,l.count=e.count,_.find(c,["name",g]).options=l.rows,v){var o=(t=d,a=f(n=r,u),i=b(n),(s=h.get(a)).query&&s.query[i]&&s.query[i].push(t),s);o&&E(o,r,u),m[p].push(d)}return v})},removeAccount:function(t,e){var n=e.accounts,a=e.accountId,i=e.filters,s=e.query,o=e.userId,r=b(t),l=s[r].includes(a);return c.resolve().then(function(){var e=function(e,n,t){var a=f(e,n),i=b(e),s=h.get(a);if(s.query&&s.query[i]){var o=s.query[i].indexOf(t);-1<o&&s.query[i].splice(o,1)}return s}(t,o,a);e||(e=s),s[r]=e.query[r],_.remove(n.rows,function(e){return e.id===a}),n.count=n.rows.length,_.find(i,function(e){var n=A(t);return e.name===n}).options=n.rows,1===n.count&&(e.query[r]=[n.rows[0].id],s[r]=[n.rows[0].id]),E(e,t,o)}).then(function(){var e=A(t);d.$broadcast("ms-quick-filter:update",{filters:[e],update:l})})}}}e.$inject=["$rootScope","$q","api","localStorageManager"],angular.module("app.core").factory("agentAccountAssociationManager",e)}(),function(){"use strict";function e(o,r,i,l,d){var e={get:function(s,a){return o(function(n,t){0===a.offset&&(s=void 0);var e=_.merge({},a);i.cmContact.getJourney(e).$promise.then(function(e){var a,n=_(e.rows).uniqBy(function(e){return e.channel}).map("channel").value();return(a=n,o(function(e,n){var t=a.map(function(n){if("voice"!==n){var e="get"+_.startCase(n)+("chat"===n?"Websites":"Accounts");return i.user[e]({id:l.getCurrentUser().id,attributes:["id","name"],nolimit:!0}).$promise.then(function(e){c[n]=e.rows})}});return o.all(t).then(function(){e()}).catch(function(e){n(e)})})).then(function(){return e.rows.forEach(function(e){var n;e.canOpen=function(e){switch(e.channel){case"chat":return!!c.chat&&_.some(c.chat,["id",e.ChatWebsiteId]);case"fax":return!!c.fax&&_.some(c.fax,["id",e.FaxAccountId]);case"mail":return!!c.mail&&_.some(c.mail,["id",e.MailAccountId]);case"openchannel":return!!c.openchannel&&_.some(c.openchannel,["id",e.OpenchannelAccountId]);case"sms":return!!c.sms&&_.some(c.sms,["id",e.SmsAccountId]);case"voice":return!0;case"whatsapp":return!!c.whatsapp&&_.some(c.whatsapp,["id",e.WhatsappAccountId]);default:return!1}}(e),e.dispositionsValues=(n=e).disposition?"("+_.compact([n.disposition,n.secondDisposition,n.thirdDisposition]).join(" - ")+")":"("+r.instant("DASHBOARDS.NO_DISPOSITION_SET")+")",e.style=function(e){switch(e.channel){case"chat":return{color:"green-A700",icon:"icon-hangouts"};case"fax":return{color:"blue-grey-A200",icon:"icon-deskphone"};case"mail":return{color:"teal",icon:"icon-email"};case"openchannel":return{color:"amber-A200",icon:"icon-google-earth"};case"sms":return{color:"orange",icon:"icon-message-text"};case"voice":return{color:"blue-A700",icon:"icon-phone"};case"whatsapp":return{color:"lime-A700",icon:"icon-whatsapp"}}}(e)}),a=s,i=e,o(function(e,n){try{var t={journey:a?_.union(a,i.rows):i.rows};t.loadMore=0<i.count-t.journey.length,e(t)}catch(e){n(e)}});var a,i})}).then(function(e){n(e)}).catch(function(e){d.error({title:r.instant("CONTACTMANAGER.CUSTOMER_JOURNEY"),msg:r.instant("CONTACTMANAGER.NOTIFICATIONS.NO_DATA_ERROR")}),t(e)})})},getQuery:function(){return{range:{from:moment().subtract(3,"M").startOf("month").format("YYYY-MM-DD HH:mm:ss"),to:moment().endOf("month").format("YYYY-MM-DD HH:mm:ss")},limit:10,offset:0}},getQuickFilters:function(){return[{name:"Channel",key:"channel",type:"select",label:"INTEGRATIONS.CHANNEL",customOptions:[{value:void 0,translate:"DASHBOARDS.ALL"},{value:"voice",translate:"DASHBOARDS.VOICE"},{value:"chat",translate:"DASHBOARDS.CHAT"},{value:"mail",translate:"DASHBOARDS.MAIL"},{value:"sms",translate:"DASHBOARDS.SMS"},{value:"fax",translate:"DASHBOARDS.FAX"},{value:"openchannel",translate:"DASHBOARDS.OPENCHANNEL"},{value:"whatsapp",translate:"DASHBOARDS.WHATSAPP"}]},{name:"Start Date",key:"range",type:"date",label:"DASHBOARDS.SELECT_DATE",useFromToKeys:!0}]}},c={};return e}e.$inject=["$q","$translate","api","Auth","toasty"],angular.module("app.core").factory("customerJourneyManager",e)}(),function(){"use strict";function e(p,e){var g={localizationMap:e,setSelectedDate:function(e){var n=e.$gte?new Date(moment.utc(e.$gte).format("YYYY-MM-DD")):new Date(moment.utc(e.from).format("YYYY-MM-DD")),t=e.$lte?new Date(moment.utc(e.$lte).format("YYYY-MM-DD")):new Date(moment.utc(e.to).format("YYYY-MM-DD")),a={dateStart:new Date(n.getFullYear(),n.getMonth(),n.getDate()),dateEnd:new Date(t.getFullYear(),t.getMonth(),t.getDate())};return a.selectedTemplateName=(i=a,moment(i.dateStart).isSame(i.dateEnd)?(u=i,moment().startOf("day").isSame(u.dateStart)?g.localizationMap.Today:(m=i,moment().subtract(1,"days").startOf("day").isSame(m.dateStart)?g.localizationMap.Yesterday:p("date")(i.dateStart,"dd MMM yyyy"))):(c=i,moment().startOf("isoWeek").isSame(c.dateStart,"day")&&moment().endOf("isoWeek").isSame(c.dateEnd,"day")?g.localizationMap["This Week"]:(d=i,moment().subtract(1,"weeks").startOf("isoWeek").isSame(d.dateStart,"day")&&moment().subtract(1,"weeks").endOf("isoWeek").isSame(d.dateEnd,"day")?g.localizationMap["Last Week"]:(l=i,moment().startOf("month").isSame(l.dateStart,"day")&&moment().endOf("month").isSame(l.dateEnd,"day")?g.localizationMap["This Month"]:(r=i,moment().subtract(1,"months").startOf("month").isSame(r.dateStart,"day")&&moment().subtract(1,"months").endOf("month").isSame(r.dateEnd,"day")?g.localizationMap["Last Month"]:(o=i,moment().startOf("year").isSame(o.dateStart,"day")&&moment().endOf("year").isSame(o.dateEnd,"day")?g.localizationMap["This Year"]:(s=i,moment().subtract(1,"years").startOf("year").isSame(s.dateStart,"day")&&moment().subtract(1,"years").endOf("year").isSame(s.dateEnd,"day")?g.localizationMap["Last Year"]:p("date")(i.dateStart,"dd"+(i.dateStart.getMonth()!==i.dateEnd.getMonth()||i.dateStart.getFullYear()!==i.dateEnd.getFullYear()?" MMM":"")+(i.dateStart.getFullYear()!==i.dateEnd.getFullYear()?" yyyy":""))+" - "+p("date")(i.dateEnd,"dd MMM yyyy")))))))),a;var i,s,o,r,l,d,c,m,u}};return g}e.$inject=["$filter","dateFilterLocalizationFactory"],angular.module("app.core").factory("dateRangeManager",e)}(),function(){"use strict";function e(t,a,n,i,s){var o={},r={},l={},d={};function c(){r=i.getCurrentUser();var e=n.localStorage.getItem("motion2.home:"+r.id);if(l=e?JSON.parse(e).currentSidebarTab:"dashboard",d=n.localStorage.getItem("motion2.home."+l+":"+r.id)){var a=JSON.parse(d);a.drafts?r.privacyEnabled&&Object.keys(a.drafts).forEach(function(e){var n=a.drafts[e].title,t=n.split(/-(.+)/)[1].trim();a.drafts[e].title=n.replace(t,s.mask(t))}):a.drafts={},d=a}else d={drafts:{}};return d.drafts}function m(){_.isEmpty(o.drafts)?delete d.drafts:d.drafts=o.drafts,n.localStorage.setItem("motion2.home."+l+":"+r.id,JSON.stringify(d))}return o.init=function(){o.drafts=c()},o.getByInteraction=function(n){return o.drafts=c(),_.find(_.values(o.drafts),function(e){return e.interaction&&e.interaction.id===n})},o.removeByInteraction=function(n){o.drafts=c();var e=_.find(_.values(o.drafts),function(e){return e.interaction&&e.interaction.id===n});e&&(delete o.drafts[e.id],m())},o.add=function(e){o.drafts=c();var n=a.instant("DASHBOARDS.UNTITLED");e.contact?n=e.contact.firstName||e.contact.email:_.isEmpty(e.message.subject)||(n=e.message.subject);var t={type:"draft",title:e.account.key+" - "+n,channel:e.channel,content:e.message,account:e.account,interaction:e.interaction,id:_.random(1e10),openedAt:new Date,saved:!1};o.drafts[t.id]=t,m()},o.update=function(e){o.drafts=c();var n=o.drafts[e.id];n&&(n.content=e.message,o.drafts[e.id]=n,m())},o.open=function(e){o.drafts=c();var n=o.drafts[e];n&&t.$broadcast("open"+_.startCase(l)+"Draft",n)},o.remove=function(e){o.drafts=c(),o.drafts[e]&&(delete o.drafts[e],m())},o}e.$inject=["$rootScope","$translate","$window","Auth","privacyManager"],angular.module("app.core").factory("draftManager",e)}(),function(){"use strict";function e(s){var o=[];return function(n,e){e||(e="global-exception");var t,a=s.get("ClientSideLoggingService").getLogger("global-exception"),i=o.findIndex(function(e){return e===n});-1<i?(t=i,o.splice(t,1)):(!function(e){if(100<=o.length){var n=o.length-100+1;o.splice(0,n)}o.push(e)}(n),a.error(e,n))}}e.$inject=["$injector"],angular.module("app.core").factory("$exceptionHandler",e)}(),function(){"use strict";function e(o,i){function r(e,n){var t=i.localStorage.getItem(e),a=t?JSON.parse(t):{};return n?a[n]:a}function s(e,n){return i.localStorage.setItem(e,JSON.stringify(n))}return{get:r,parseInteractionsKey:function(e,n,t,a){var i="motion2.home."+e+":"+t,s=_.capitalize(e)+("chat"===e?"Website":"Account")+"Id";return o.resolve().then(function(){var e=r(i,"query");return e?((n=_.merge(n,e)).sort&&0<=n.sort.indexOf("lastMessage")&&(n=_.omit(n,"sort")),n.includeAll=!0):n.createdAt={$gte:moment().startOf("month").utcOffset(0,!0).format(),$lte:moment().endOf("month").utcOffset(0,!0).format()},1===a.length?n[s]=[a[0].id]:0===a.length&&(n[s]=[]),n}).catch(function(e){throw e})},set:s,update:function(e,n,t){var a=r(e);t?a[t]=n:a=n;return s(e,a)}}}e.$inject=["$q","$window"],angular.module("app.core").factory("localStorageManager",e)}(),function(){"use strict";function e(i){function s(e,n){var t=i.get(),a=0;if(t)switch(n){case"email":a=t.privacyPolicyEmail;break;case"number":a=t.privacyPolicyNumber;break;default:a=t.privacyPolicyName}return _.isNil(a)?e:0===a||a>e.length?e.replace(/./g,"*"):e.substring(0,e.length-a).padEnd(e.length,"*")}function o(e){return _.startsWith(e,"<")&&_.endsWith(e,">")&&(e=e.substring(1,e.length-1)),/^[^\s@]+@[^\s@]+\.[^\s@]+$/.test(e)}function r(e){if(_.startsWith(e,"<")&&_.endsWith(e,">")){var n=!0;e=e.substring(1,e.length-1)}var t=e.split("@")[0],a=e.split("@")[1],i="";return n&&(i+="<"),i+=s(t,"email"),i+="@",i+=s(a,"email"),n&&(i+=">"),i}return{mask:function n(e){t=e,e=t.replace(/\s\s+/g," ").trim();var t;{if(o(e))return r(e);if(/^[+]?[0-9|.|\-|\s]*$/.test(e))return s(e,"number");var a=[],i=e.split(" ");return 1===i.length?s(e):(i.forEach(function(e){a.push(n(e))}),a.join(" "))}}}}e.$inject=["settingsManager"],angular.module("app.core").factory("privacyManager",e)}(),function(){"use strict";function e(n,i){return{setPlaceholder:function(a){var e;return n(function(n){try{if(_.isEmpty(a.resources))e=i.instant("DASHBOARDS.NONE");else if(_.isEmpty(a.param))e=a.placeholder?i.instant(a.placeholder):i.instant("DASHBOARDS.CHOOSE");else if(a.param.length===a.resources.length)e=i.instant("DASHBOARDS.ALL");else{var t=a.ngValue||"id";e=_(a.resources).filter(function(e){return _.includes(a.param,e[t])}).map("name").value().join(", ")}n(e)}catch(e){n(null)}})}}}e.$inject=["$q","$translate"],angular.module("app.core").factory("quickFilterManager",e)}(),function(){"use strict";function e(t,e){var 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",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){var d=this,c=["type","waiting","dialMethod","dialActive"];function m(e){d.voiceQueuesTotal=e.count?e.count:0,d.voiceQueues=e?_.keyBy(e.rows?e.rows:[],"id"):{},_.forIn(d.voiceQueues,function(e,n){d.rpcVoiceQueues[n]&&(d.voiceQueues[n].waiting=d.rpcVoiceQueues[n].waiting||0)})}d.voiceQueues={},d.voiceQueuesTotal=0,d.rpcVoiceQueues={},d.getVoiceQueues={},d.rpcVoiceQueuesChannels={},d.addVoiceQueuesChannels={},d.deleteVoiceQueuesChannels=[],d.load=!0,d.query={id:r.getCurrentUser().id,fields:"id,name,type,dialMethod,dialActive",channel:"voice",type:"inbound",limit:10,page:1},d.queryChannels={limit:10,page:1},d.success=m,d.getVoiceQueues=function(){d.query.offset=(d.query.page-1)*d.query.limit,d.promise=o.user.getQueues(d.query,m).$promise},d.getSize=function(e){return _.size(e)},d.onSaveQueue=function(e){d.voiceQueues[e.id]&&d.rpcVoiceQueues[e.id]&&(d.rpcVoiceQueues[e.id]=e,_.merge(d.voiceQueues[e.id],_.pick(e,c)))},d.onSaveChannel=function(e){"inbound"===e.type&&(e.queuecallerleaveAt?(delete d.rpcVoiceQueuesChannels[e.uniqueid],d.load&&d.deleteVoiceQueuesChannels.push(e.uniqueid)):(d.rpcVoiceQueuesChannels[e.uniqueid]=e,d.load&&(d.addVoiceQueuesChannels[e.uniqueid]=e)))},d.onUserVoiceQueue=function(e){_.toInteger(e.UserId)===r.getCurrentUser().id&&d.getVoiceQueues()},d.onSaveVoiceQueue=function(e){_.isNil(e)||(d.rpcVoiceQueues[e.id]=_.pick(e,c))},d.onUpdateVoiceQueue=function(e){_.isNil(e)||(d.rpcVoiceQueues[e.id]&&_.merge(d.rpcVoiceQueues[e.id],_.pick(e,c)),d.voiceQueues[e.id]&&_.merge(d.voiceQueues[e.id],_.pick(e,c)))},d.onRemoveVoiceQueue=function(e){_.isNil(e)||(delete d.rpcVoiceQueues[e.id],delete d.voiceQueues[e.id])},l.onWithoutApply("voice_queue:save",d.onSaveQueue),l.onWithoutApply("voice_queue_channel:save",d.onSaveChannel),l.onWithoutApply("voice_queue_channel:remove",function(e){"inbound"===e.type&&delete d.rpcVoiceQueuesChannels[e.uniqueid]}),l.onWithoutApply("userVoiceQueue:save",d.onUserVoiceQueue),l.onWithoutApply("userVoiceQueue:remove",d.onUserVoiceQueue),l.onWithoutApply("voiceQueue:save",d.onSaveVoiceQueue),l.onWithoutApply("voiceQueue:remove",d.onRemoveVoiceQueue),l.onWithoutApply("voiceQueue:update",d.onUpdateVoiceQueue),o.user.getQueues(d.query).$promise.then(function(e){return d.myQueues=e,o.rpc.getVoiceQueues().$promise}).then(function(e){for(var n=e.rows,t=_.keyBy(n,"id"),a=0;a<d.myQueues.count;a++){var i=d.myQueues.rows[a];d.rpcVoiceQueues[i.id]=t[i.id]}return o.rpc.getVoiceQueuesChannels().$promise}).then(function(e){d.rpcVoiceQueuesChannels=e?_.keyBy(e.rows?_.filter(e.rows,function(e){return!("inbound"!==e.type||e.queuecallerleaveAt||!_.find(d.myQueues.rows,{name:e.queue}))}):[],"uniqueid"):{}}).catch(function(e){console.error(e)}).finally(function(){_.merge(d.rpcVoiceQueuesChannels,d.addVoiceQueuesChannels);for(var e=0;e<d.deleteVoiceQueuesChannels.length;e+=1)delete d.rpcVoiceQueuesChannels[d.deleteVoiceQueuesChannels[e]];d.load=!1,d.addVoiceQueuesChannels={},d.deleteVoiceQueuesChannels=[],d.getVoiceQueues()});var u=!0,p=1;e.$watch("vm_dc.query.filter",function(e,n){u?t(function(){u=!1}):(n||(p=d.query.page),e!==n&&(d.query.page=1),e||(d.query.page=p),d.getVoiceQueues())}),e.$on("$destroy",function(){l.removeAllListeners("voice_queue:save"),l.removeAllListeners("voice_queue_channel:save"),l.removeAllListeners("userVoiceQueue:save"),l.removeAllListeners("userVoiceQueue:remove"),l.removeAllListeners("voiceQueue:save"),l.removeAllListeners("voiceQueue:update"),l.removeAllListeners("voiceQueue:remove")})}e.$inject=["$scope","$timeout","$mdDialog","$document","$window","$translate","api","Auth","socket"],angular.module("app.dashboards").controller("AgentHomeDashboardVoiceController",e)}(),function(){"use strict";function e(e,t,n,a,i,s,o,r,l,d){var c=this,m=["id","name","mapAgentsId","waiting"],u=!0;function p(){var e=(c.queryChannels.page-1)*c.queryChannels.limit;c.paginatedInteractions=_.orderBy(c.rpcWhatsappQueuesWaitingInteractions,["joinAt"],["desc"]),c.interactions=_.drop(c.paginatedInteractions,e).slice(0,c.queryChannels.limit)}function g(e){c.whatsappQueuesTotal=e.count?e.count:0,c.whatsappQueues=e?_.keyBy(e.rows?e.rows:[],"id"):{},_.forIn(c.whatsappQueues,function(e,n){c.rpcWhatsappQueues[n]&&(c.whatsappQueues[n].waiting=c.rpcWhatsappQueues[n].waiting||0)})}function v(){c.query.offset=(c.query.page-1)*c.query.limit,c.promise=o.user.getQueues(c.query,g).$promise}c.whatsappQueues={},c.whatsappQueuesTotal=0,c.rpcWhatsappQueues={},c.paginatedInteractions=[],c.deleteWhatsappQueuesWaitingInteractions=[],c.rpcWhatsappQueuesWaitingInteractions={},c.query={id:r.getCurrentUser().id,channel:"whatsapp",fields:"id,name,mapAgentsId,waiting",limit:10,page:1},c.queryChannels={limit:10,page:1},c.success=g,c.getWhatsappQueues=v,c.getSize=function(e){return _.size(e)},c.getColorByChannel=function(e){switch(e){case"chat":return"green-A700-bg";case"mail":return"teal-bg";case"sms":return"orange-bg";case"whatsapp":return"lime-A700-bg";case"openchannel":return"amber-A200-bg";case"fax":return"blue-grey-A200-bg";default:return"white-bg"}},c.paginate=p,c.onSaveQueue=function(e){c.whatsappQueues[e.id]&&c.rpcWhatsappQueues[e.id]&&(_.merge(c.rpcWhatsappQueues[e.id],_.pick(e,m)),_.merge(c.whatsappQueues[e.id],_.pick(e,m)))},c.onSaveWhatsappQueue=function(e){_.isNil(e)||(c.rpcWhatsappQueues[e.id]=_.pick(e,m))},c.onUpdateWhatsappQueue=function(e){_.isNil(e)||(c.rpcWhatsappQueues[e.id]&&_.merge(c.rpcWhatsappQueues[e.id],_.pick(e,m)),c.whatsappQueues[e.id]&&_.merge(c.whatsappQueues[e.id],_.pick(e,m)))},c.onRemoveWhatsappQueue=function(e){_.isNil(e)||(delete c.rpcWhatsappQueues[e.id],delete c.whatsappQueues[e.id])},c.onSaveUserWhatsappQueue=function(e){_.toInteger(e.UserId)===r.getCurrentUser().id&&c.getWhatsappQueues()},c.onRemoveUserWhatsappQueue=function(e){_.toInteger(e.UserId)===r.getCurrentUser().id&&c.getWhatsappQueues()},c.onSaveWhatsappQueueChannel=function(e){c.whatsappQueues[e.queue_id]&&(c.rpcWhatsappQueuesWaitingInteractions[e.id]=e,p())},c.onRemoveWhatsappQueueChannel=function(e){delete c.rpcWhatsappQueuesWaitingInteractions[e.id],u&&c.deleteWhatsappQueuesWaitingInteractions.push(e.id);p()},l.onWithoutApply("whatsapp_queue:save",c.onSaveQueue),l.onWithoutApply("whatsappQueue:save",c.onSaveWhatsappQueue),l.onWithoutApply("whatsappQueue:update",c.onUpdateWhatsappQueue),l.onWithoutApply("whatsappQueue:remove",c.onRemoveWhatsappQueue),l.onWithoutApply("userWhatsappQueue:save",c.onSaveUserWhatsappQueue),l.onWithoutApply("userWhatsappQueue:remove",c.onRemoveUserWhatsappQueue),l.onWithoutApply("whatsapp_queue_waiting_interaction:save",c.onSaveWhatsappQueueChannel),l.onWithoutApply("whatsapp_queue_waiting_interaction:remove",c.onRemoveWhatsappQueueChannel),o.rpc.getWhatsappQueues().$promise.then(function(e){c.rpcWhatsappQueues=e?_.keyBy(e.rows?e.rows:[],"id"):{}}).then(function(e){return o.user.getQueues({id:r.getCurrentUser().id,channel:"whatsapp"}).$promise}).then(function(e){return c.myQueues=e.rows,o.rpc.getWhatsappQueuesWaitingInteractions().$promise}).then(function(e){var n=_.filter(e.rows,function(e){return _.find(c.myQueues,{id:e.queue_id})});e.rows=n,e.count=n.length,_.merge(c.rpcWhatsappQueuesWaitingInteractions,e?_.keyBy(e.rows?e.rows:[],"id"):{})}).catch(function(e){console.error(e)}).finally(function(){for(var e=0;e<c.deleteWhatsappQueuesWaitingInteractions.length;e+=1)delete c.rpcWhatsappQueuesWaitingInteractions[c.deleteWhatsappQueuesWaitingInteractions[e]];u=!1,c.deleteWhatsappQueuesWaitingInteractions=[],v(),p()});var h=!0,f=1;e.$watch("vm_dc.query.filter",function(e,n){h?t(function(){h=!1}):(n||(f=c.query.page),e!==n&&(c.query.page=1),e||(c.query.page=f),c.getWhatsappQueues())}),e.$on("$destroy",function(){l.removeAllListeners("whatsapp_queue:save"),l.removeAllListeners("whatsappQueue:save"),l.removeAllListeners("whatsappQueue:update"),l.removeAllListeners("whatsappQueue:remove"),l.removeAllListeners("userWhatsappQueue:save"),l.removeAllListeners("userWhatsappQueue:remove"),l.removeAllListeners("whatsapp_queue_waiting_interaction:save"),l.removeAllListeners("whatsapp_queue_waiting_interaction:remove")})}e.$inject=["$scope","$timeout","$mdDialog","$document","$window","$translate","api","Auth","socket","toasty"],angular.module("app.dashboards").controller("AgentHomeDashboardMultiChannelWhatsappController",e)}(),function(){"use strict";function e(a,t,i,s,o,n,e,r,l,d,c,m,u,p){var g=this;g.user=l.getCurrentUser(),g.license={},g.setting={},g.tags={count:0,rows:[]},g.faxInteractions={count:0,rows:[]},g.query={includeAll:!0,sort:"-updatedAt",limit:10,page:1,read:null,closed:null,FaxAccountId:[]},g.sectionColor="blue-grey",g.onInit=function(e,n){return g.license=e,g.setting=n,r.user.getFaxAccounts({id:g.user.id,nolimit:!0}).$promise.then(function(e){return g.faxAccounts=e||{count:0,rows:[]},r.tag.get({sort:"name"}).$promise}).then(function(e){g.tags=e||{count:0,rows:[]}}).then(function(){g.quickFilters=[{name:"Start Date",key:"createdAt",type:"date",label:"DASHBOARDS.SELECT_DATE"},{name:"Messages",key:"read",type:"select",label:"DASHBOARDS.SELECT_READ_UNREAD",customOptions:[{value:0,translate:"DASHBOARDS.UNREAD"},{value:1,translate:"DASHBOARDS.READ"},{value:null,translate:"DASHBOARDS.ALL"}]},{name:"Status",key:"closed",type:"select",label:"DASHBOARDS.SELECT_STATUS",customOptions:[{value:0,translate:"DASHBOARDS.OPENED"},{value:1,translate:"DASHBOARDS.CLOSED"},{value:null,translate:"DASHBOARDS.ALL"}]},{name:"Account",key:"FaxAccountId",type:"multiselect",label:"DASHBOARDS.SELECT_ACCOUNT",options:g.faxAccounts.rows,clearAll:!1},{name:"Agent",key:"UserId",type:"select",label:"DASHBOARDS.SELECT_AGENT",customOptions:[{value:g.user.id,translate:"DASHBOARDS.ME"},{value:"null",translate:"DASHBOARDS.NOT_ASSIGNED"},{value:void 0,translate:"DASHBOARDS.ALL"}]},{name:"Tag",key:"tag",type:"multiselect",label:"DASHBOARDS.SELECT_TAG",options:g.tags.rows,placeholder:"DASHBOARDS.TAGS"}],g.advancedSearch={fields:[{name:"Id",column:"id",type:"number"},{name:"Contact",column:"Contact",type:"autocomplete",options:{searchFields:["firstName","lastName","email"],route:{model:"cmContact",action:"get",params:{fields:"id,firstName,lastName,email",Contact:"@autocomplete",nolimit:!0}},extraOperators:["$substring"],excludedOperators:["$ne"]}},{name:"Body",column:"body",type:"text",options:{excludedOperators:["$eq","$ne"]}},{name:"Status",column:"closed",type:"select",values:[{id:0,translate:"DASHBOARDS.OPENED"},{id:1,translate:"DASHBOARDS.CLOSED"}],options:{excludedOperators:["$ne"]}},{name:"Agent",column:"User",type:"autocomplete",options:{table:"i",route:{model:"user",action:"get",params:{role:"agent",fields:"id,name,fullname",nolimit:!0}},searchFields:["fullname","name"],extraOperators:["$substring"],excludedOperators:["$ne"]}},{name:"Account",column:"FaxAccountId",type:"multiselect",options:{route:{model:"user",action:"getFaxAccounts",params:{id:g.user.id,nolimit:!0}}}},{name:"Tags",column:"Tag",type:"multiselect",options:{route:{model:"tag",action:"get",params:{nolimit:!0}},excludedOperators:["$notIn"]}},{name:"Start Date",column:"createdAt",type:"date",options:{excludedOperators:["$ne"]}},{name:"Read",column:"unreadMessages",type:"select",values:[{id:1,translate:"DASHBOARDS.READ"},{id:0,translate:"DASHBOARDS.UNREAD"}],options:{excludedOperators:["$ne"]}},{name:"Disposition",column:"disposition",type:"multiselect",options:{routes:A("first")}},{name:"Second Disposition",column:"secondDisposition",type:"multiselect",options:{routes:A("second")}},{name:"Third Disposition",column:"thirdDisposition",type:"multiselect",options:{routes:A("third")}}]}}).catch(function(e){v.error(e)}).finally(function(){m.parseInteractionsKey("fax",g.query,g.user.id,g.faxAccounts.rows).then(function(){g.isSearchBarVisible=!(g.query.search||!g.query.filter),y(g.query.page)}),d.on("faxInteraction:save",O),d.on("faxInteraction:update",O),d.on("faxInteractionTags:save",C),d.on("faxMessage:save",w),d.on("faxMessage:update",w),d.on("user_has_fax_interactions:save",T),d.on("user_has_fax_interactions:remove",I),d.on("userFaxAccount:save",f),d.on("userFaxAccount:remove",b)})},g.success=E,g.getFaxInteractions=y,g.showFaxInteraction=function(e,n){a.$parent.vm.addInteractionTab("fax",n)},g.downloadFaxInteraction=function(e,s,n){r.faxInteraction.download({id:s.id,attachments:n}).$promise.then(function(e){var n=[e.buffer],t="fax-interaction"+s.id+".zip",a=new Blob(n,{type:e.type}),i=window.document.createElement("a");i.setAttribute("href",URL.createObjectURL(a)),i.setAttribute("download",t),document.body.appendChild(i),i.click()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n+=1)c.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else c.error({title:e.status?"API:"+e.status+" - "+e.statusText:"downloadFaxInteraction",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.disposeInteraction=function(e,n){var t=g.user.voicePause||g.user.chatPause||g.user.mailPause||g.user.openchannelPause||g.user.faxPause,a=!n.Account.mandatoryDisposition;i.show({controller:"DisposeInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/dispose/dialog.html",parent:angular.element(s.body),clickOutsideToClose:a,escapeToClose:a,onRemoving:function(){g.user&&n.Account.mandatoryDisposition&&!t&&r.user.unpause({id:g.user.id}).$promise.catch(function(e){v.error(e)})},locals:{user:g.user,channel:"fax",interaction:n}})},g.getContactLabel=S,g.getAgentLabel=function(e){if(e.UserId)return e.UserId===g.user.id?n.instant("DASHBOARDS.ME"):e.Owner.fullname+" <"+e.Owner.internal+">";return n.instant("DASHBOARDS.NOT_ASSIGNED")},g.getFaxAccountLabel=function(e){if(e.Account)return e.Account.key;return n.instant("DASHBOARDS.UNKNOWN")},g.composeFaxInteraction=function(e,t){i.show({controller:"ComposeFaxInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/compose/fax/dialog.html",parent:angular.element(s.body),clickOutsideToClose:!1,locals:{account:t,message:{},type:"new",interaction:{}},fullscreen:!0}).then(function(e){if(e){var n=e;return r.faxAccount.send({id:t.id},n).$promise.then(function(e){c.success({title:"Message properly sent!",msg:"Message has been sent!"}),a.$parent.vm.addInteractionTab("fax",e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n++)c.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else c.error({title:"FAX:SEND",msg:e.data?JSON.stringify(e.data):e.message||e.toString()})})}})},g.openAdvancedSearch=function(){i.show({controller:"AdvancedSearchController",controllerAs:"vm",templateUrl:"app/core/dialogs/advanced-search/dialog.html",parent:angular.element(s.body),clickOutsideToClose:!1,locals:{color:g.sectionColor,fields:g.advancedSearch.fields,storagePath:"home.fax"},fullscreen:!0}).then(function(e){g.isSearchBarVisible=!(e.value||!g.query.filter),e.apply&&(g.query.search=e.value,y())}).catch(function(e){c.error({title:"ERROR",msg:e.data?JSON.stringify(e.data.message):e.toString()})})};var v=p.getLogger("agent.general.fax");function h(e){return{accounts:g.faxAccounts,accountId:e,filters:g.quickFilters,query:g.query,userId:g.user.id}}function f(e){if(e.UserId===g.user.id){var n=h(e.FaxAccountId);u.addAccount("fax",n).then(function(e){e&&y()}).catch(function(e){v.error(e)})}}function b(e){if(e.UserId===g.user.id){var n=h(e.FaxAccountId);u.removeAccount("fax",n).catch(function(e){v.error(e)})}}function A(n){var e=[{model:"disposition",action:"get",field:"name",params:{field:"name,level",level:n,MailAccountId:"null",SmsAccountId:"null",ChatWebsiteId:"null",OpenchannelAccountId:"null",WhatsappAccountId:"null",FaxAccountId:"null",ListId:"null",nolimit:!0}}],t=_.map(g.faxAccounts.rows,function(e){return{model:"faxAccount",action:"getDispositions",field:"name",params:{id:e.id,field:"name,level",level:n,nolimit:!0}}});return _.concat(t,e)}function E(e){!g.reloadingInteractions&&0<g.setting.faxInteractionsReloadTimeout&&function(e){e&&g.interactionsInterval&&t.cancel(g.interactionsInterval);g.interactionsInterval=t(function(){g.reloadingInteractions=!0,g.searchInProgress||y()},1e3*g.setting.faxInteractionsReloadTimeout)}(!0),g.searchInProgress=!1,g.reloadingInteractions=!1,g.faxInteractions=e||{count:0,rows:[]};for(var n=0;n<g.faxInteractions.rows.length;n+=1)S(g.faxInteractions.rows[n])}function y(e){g.searchInProgress=!0,e||(g.query.page=1),g.query.offset=(g.query.page-1)*g.query.limit;var n=o.localStorage.getItem("motion2.home.fax:"+g.user.id);(n=n?JSON.parse(n):{}).query=g.query,o.localStorage.setItem("motion2.home.fax:"+g.user.id,JSON.stringify(n)),g.promise=r.faxInteraction.get(g.query,E).$promise}function S(e){e.contactInfo=e.Contact?e.Contact.fax:void 0,"Unknown"===e.contactName&&(e.contactName=n.instant("DASHBOARDS.UNKNOWN"))}function T(e){var n=_.find(g.faxInteractions.rows,{id:e.FaxInteractionId});n&&n.Users&&(_.find(n.Users,{id:e.UserId})||n.Users.push({id:e.UserId}))}function I(e){var n=_.find(g.faxInteractions.rows,{id:e.FaxInteractionId});n&&n.Users&&_.remove(n.Users,{id:e.UserId})}function O(e){if(e){var n=_.find(g.faxInteractions.rows,{id:e.id});if(n){if(n.Users=[],e.closed&&(n.unreadMessages=0),g.query.sort){var t=_.startsWith(g.query.sort,"-")?"desc":"asc";g.faxInteractions.rows=_.orderBy(g.faxInteractions.rows,_.trimStart(g.query.sort,"-"),t)}_.merge(n,_.pick(e,_.keys(n)))}else y(g.query.page)}}function C(e){if(e){var n=_.find(g.faxInteractions.rows,{id:e.id});n&&(n.Tags=e.tags||[],_.merge(n,_.pick(e,_.keys(n))))}}function w(e){if(e&&!e.secret){var n=_.find(g.faxInteractions.rows,{id:e.FaxInteractionId});if(n){var t=_.find(n.Messages,{id:e.id});t?_.merge(t,_.pick(e,_.keys(t))):(_.isNil(n.Messages)&&(n.Messages={count:0}),e.read||(n.Messages.count+=1))}}}a.$on("$destroy",function(){d.removeAllListeners("faxMessage:save"),d.removeAllListeners("faxMessage:update"),d.removeAllListeners("faxInteraction:save"),d.removeAllListeners("faxInteractionTags:save"),d.removeAllListeners("faxInteraction:update"),d.removeAllListeners("user_has_fax_interactions:save"),d.removeAllListeners("user_has_fax_interactions:remove"),g.interactionsInterval&&t.cancel(g.interactionsInterval)})}e.$inject=["$scope","$interval","$mdDialog","$document","$window","$translate","$q","api","Auth","socket","toasty","localStorageManager","agentAccountAssociationManager","ClientSideLoggingService"],angular.module("app.dashboards").controller("AgentHomeFaxController",e)}(),function(){"use strict";function e(o,n,r,l,m,t,e,d,a,i,c,u,s,p,g){var v=this;v.user=a.getCurrentUser(),v.license={},v.setting={},v.tags={count:0,rows:[]},v.mailInteractions={count:0,rows:[]},v.query={includeAll:!0,sort:"-updatedAt",limit:10,page:1,read:null,closed:null,MailAccountId:[]},v.sectionColor="teal",v.onInit=function(e,n){return v.license=e,v.setting=n,d.user.getMailAccounts({id:v.user.id,nolimit:!0}).$promise.then(function(e){return v.mailAccounts=e||{count:0,rows:[]},d.tag.get({sort:"name"}).$promise}).then(function(e){v.tags=e||{count:0,rows:[]}}).then(function(){return d.mailSubstatus.get({nolimit:!0}).$promise}).then(function(e){v.subStatuses=e||{count:0,rows:[]}}).then(function(){v.quickFilters=[{name:"Start Date",key:"createdAt",type:"date",label:"DASHBOARDS.SELECT_DATE"},{name:"Messages",key:"read",type:"select",label:"DASHBOARDS.SELECT_READ_UNREAD",customOptions:[{value:0,translate:"DASHBOARDS.UNREAD"},{value:1,translate:"DASHBOARDS.READ"},{value:null,translate:"DASHBOARDS.ALL"}]},{name:"Status",key:"closed",type:"select",label:"DASHBOARDS.SELECT_STATUS",customOptions:[{value:0,translate:"DASHBOARDS.OPENED"},{value:1,translate:"DASHBOARDS.CLOSED"},{value:null,translate:"DASHBOARDS.ALL"}]},{name:"Substatus",key:"substatus",type:"select",label:"DASHBOARDS.SELECT_SUBSTATUS",options:v.subStatuses.rows,customOptions:[{value:"null",translate:"DASHBOARDS.NONE"},{value:void 0,translate:"DASHBOARDS.ALL"}],ngValue:"name",ngIf:"closed === 0"},{name:"Account",key:"MailAccountId",type:"multiselect",label:"DASHBOARDS.SELECT_ACCOUNT",options:v.mailAccounts.rows,clearAll:!1},{name:"Agent",key:"UserId",type:"select",label:"DASHBOARDS.SELECT_AGENT",customOptions:[{value:v.user.id,translate:"DASHBOARDS.ME"},{value:"null",translate:"DASHBOARDS.NOT_ASSIGNED"},{value:void 0,translate:"DASHBOARDS.ALL"}]},{name:"Tag",key:"tag",type:"multiselect",label:"DASHBOARDS.SELECT_TAG",options:v.tags.rows,placeholder:"DASHBOARDS.TAGS"}],v.advancedSearch={fields:[{name:"Id",column:"id",type:"number"},{name:"Contact",column:"Contact",type:"autocomplete",options:{searchFields:["firstName","lastName","email"],route:{model:"cmContact",action:"get",params:{fields:"id,firstName,lastName,email",Contact:"@autocomplete",nolimit:!0}},extraOperators:["$substring"],excludedOperators:["$ne"]}},{name:"Subject",column:"subject",type:"text",options:{excludedOperators:["$eq","$ne"]}},{name:"Body",column:"plainBody",type:"text",options:{excludedOperators:["$eq","$ne"]}},{name:"Status",column:"closed",type:"select",values:[{id:0,translate:"DASHBOARDS.OPENED"},{id:1,translate:"DASHBOARDS.CLOSED"}],options:{excludedOperators:["$ne"]}},{name:"Substatus",column:"substatus",type:"multiselect",options:{field:"name",route:{model:"mailSubstatus",action:"get",params:{nolimit:!0}},excludedOperators:["$notIn"]}},{name:"Agent",column:"User",type:"autocomplete",options:{table:"i",route:{model:"user",action:"get",params:{role:"agent",fields:"id,name,fullname",nolimit:!0}},searchFields:["fullname","name"],extraOperators:["$substring"],excludedOperators:["$ne"]}},{name:"Account",column:"MailAccountId",type:"multiselect",options:{route:{model:"user",action:"getMailAccounts",params:{id:v.user.id,nolimit:!0}}}},{name:"Tags",column:"Tag",type:"multiselect",options:{route:{model:"tag",action:"get",params:{nolimit:!0}},excludedOperators:["$notIn"]}},{name:"Start Date",column:"createdAt",type:"date",options:{excludedOperators:["$ne"]}},{name:"Read",column:"unreadMessages",type:"select",values:[{id:1,translate:"DASHBOARDS.READ"},{id:0,translate:"DASHBOARDS.UNREAD"}],options:{excludedOperators:["$ne"]}},{name:"Disposition",column:"disposition",type:"multiselect",options:{routes:E("first")}},{name:"Second Disposition",column:"secondDisposition",type:"multiselect",options:{routes:E("second")}},{name:"Third Disposition",column:"thirdDisposition",type:"multiselect",options:{routes:E("third")}}]}}).catch(function(e){h.error(e)}).finally(function(){s.parseInteractionsKey("mail",v.query,v.user.id,v.mailAccounts.rows).then(function(){v.isSearchBarVisible=!(v.query.search||!v.query.filter),S(v.query.page)}),i.on("mailInteraction:save",w),i.on("mailInteraction:update",w),i.on("mailInteractionTags:save",R),i.on("mailMessage:save",x),i.on("mailMessage:update",x),i.on("user_has_mail_interactions:save",O),i.on("user_has_mail_interactions:remove",C),i.on("userMailAccount:save",b),i.on("userMailAccount:remove",A),0<v.setting.mailInteractionsReloadTimeout&&N()})},v.success=y,v.getMailInteractions=S,v.showMailInteraction=T,v.downloadMailInteraction=function(e,s,n){d.mailInteraction.download({id:s.id,attachments:n}).$promise.then(function(e){var n=[e.buffer],t="mail-interaction"+s.id+".zip",a=new Blob(n,{type:e.type}),i=window.document.createElement("a");i.setAttribute("href",URL.createObjectURL(a)),i.setAttribute("download",t),document.body.appendChild(i),i.click()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n+=1)c.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else c.error({title:e.status?"API:"+e.status+" - "+e.statusText:"downloadMailInteraction",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},v.disposeInteraction=function(e,n){var t=v.user.voicePause||v.user.chatPause||v.user.mailPause||v.user.openchannelPause||v.user.faxPause,a=!n.Account.mandatoryDisposition;r.show({controller:"DisposeInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/dispose/dialog.html",parent:angular.element(l.body),clickOutsideToClose:a,escapeToClose:a,onRemoving:function(){v.user&&n.Account.mandatoryDisposition&&!t&&d.user.unpause({id:v.user.id}).$promise.catch(function(e){h.error(e)})},locals:{user:v.user,channel:"mail",interaction:n}})},v.getContactLabel=I,v.getAgentLabel=function(e){if(e.UserId)return e.UserId===v.user.id?t.instant("DASHBOARDS.ME"):e.Owner.fullname+" <"+e.Owner.internal+">";return t.instant("DASHBOARDS.NOT_ASSIGNED")},v.getMailAccountLabel=function(e){if(e.Account)return e.Account.key;return t.instant("DASHBOARDS.UNKNOWN")},v.composeMailInteraction=function(e,s){r.show({controller:"ComposeMailInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/compose/mail/dialog.html",parent:angular.element(l.body),clickOutsideToClose:!1,locals:{account:s,message:{},type:"new",interaction:{}},fullscreen:!0}).then(function(e){if(e){if(!e.message||!e.message.savedAsDraft){var i=e;return d.mailAccount.send({id:s.id},i).$promise.then(function(e){if(e&&e.Messages&&e.Messages.length){if(i.attachments&&i.attachments.length)for(var n=0;n<i.attachments.length;n+=1)d.attachment.update({id:i.attachments[n].id},{MailMessageId:_.head(e.Messages).id});if(c.success({title:"Message properly sent!",msg:"Message has been sent!"}),e.closed){e.disposition=null;var t=!s.mandatoryDisposition,a=v.user.voicePause||v.user.chatPause||v.user.mailPause||v.user.openchannelPause||v.user.faxPause;r.show({controller:"DisposeInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/dispose/dialog.html",parent:angular.element(l.body),onRemoving:function(){v.user&&s.mandatoryDisposition&&!a&&d.user.unpause({id:v.user.id}).$promise.catch(function(e){h.error(e)})},clickOutsideToClose:t,escapeToClose:t,locals:{user:v.user,channel:"mail",interaction:e}})}else o.$parent.vm.addInteractionTab("mail",e)}}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n++)c.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else c.error({title:e.status?"API:"+e.status+" - "+e.statusText:"MAILACCOUNT:SEND",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}var n={channel:"mail",account:s,message:e.message,contact:e.contact};u.add(n)}})},v.openAdvancedSearch=function(){r.show({controller:"AdvancedSearchController",controllerAs:"vm",templateUrl:"app/core/dialogs/advanced-search/dialog.html",parent:angular.element(l.body),clickOutsideToClose:!1,locals:{color:v.sectionColor,fields:v.advancedSearch.fields,storagePath:"home.mail"},fullscreen:!0}).then(function(e){v.isSearchBarVisible=!(e.value||!v.query.filter),e.apply&&(v.query.search=e.value,S())}).catch(function(e){c.error({title:"ERROR",msg:e.data?JSON.stringify(e.data.message):e.toString()})})};var h=g.getLogger("agent.general.mail");function f(e){return{accounts:v.mailAccounts,accountId:e,filters:v.quickFilters,query:v.query,userId:v.user.id}}function b(e){if(e.UserId===v.user.id){var n=f(e.MailAccountId);p.addAccount("mail",n).then(function(e){e&&S()}).catch(function(e){h.error(e)})}}function A(e){if(e.UserId===v.user.id){var n=f(e.MailAccountId);p.removeAccount("mail",n).catch(function(e){h.error(e)})}}function E(n){var e=[{model:"disposition",action:"get",field:"name",params:{field:"name,level",level:n,MailAccountId:"null",SmsAccountId:"null",ChatWebsiteId:"null",OpenchannelAccountId:"null",WhatsappAccountId:"null",FaxAccountId:"null",ListId:"null",nolimit:!0}}],t=_.map(v.mailAccounts.rows,function(e){return{model:"mailAccount",action:"getDispositions",field:"name",params:{id:e.id,field:"name,level",level:n,nolimit:!0}}});return _.concat(t,e)}function y(e){!v.reloadingInteractions&&0<v.setting.mailInteractionsReloadTimeout&&N(!0),v.searchInProgress=!1,v.reloadingInteractions=!1,v.mailInteractions=e||{count:0,rows:[]};for(var n=0;n<v.mailInteractions.rows.length;n+=1)I(v.mailInteractions.rows[n])}function S(e){v.searchInProgress=!0,e||(v.query.page=1),(void 0===v.query.closed||null===v.query.closed||v.query.closed)&&delete v.query.substatus,v.query.offset=(v.query.page-1)*v.query.limit;var n=m.localStorage.getItem("motion2.home.mail:"+v.user.id);(n=n?JSON.parse(n):{}).query=v.query,m.localStorage.setItem("motion2.home.mail:"+v.user.id,JSON.stringify(n)),v.promise=d.mailInteraction.get(v.query,y).$promise}function T(e,n){o.$parent.vm.addInteractionTab("mail",n)}function I(e){_.isEmpty(e.to)||!e.Account||_.includes(e.to,e.Account.email)?e.contactInfo=e.Contact?e.Contact.email:void 0:e.contactInfo=e.to.split("<").pop().split(">")[0],"Unknown"===e.contactName&&(e.contactName=t.instant("DASHBOARDS.UNKNOWN"))}function O(e){var n=_.find(v.mailInteractions.rows,{id:e.MailInteractionId});n&&n.Users&&(_.find(n.Users,{id:e.UserId})||n.Users.push({id:e.UserId}))}function C(e){var n=_.find(v.mailInteractions.rows,{id:e.MailInteractionId});n&&n.Users&&_.remove(n.Users,{id:e.UserId})}function w(e){if(e){var n=_.find(v.mailInteractions.rows,{id:e.id});if(n){if(n.Users=[],e.closed&&(n.unreadMessages=0),v.query.sort){var t=_.startsWith(v.query.sort,"-")?"desc":"asc";v.mailInteractions.rows=_.orderBy(v.mailInteractions.rows,_.trimStart(v.query.sort,"-"),t)}_.merge(n,_.pick(e,_.keys(n)))}else 0===v.setting.mailInteractionsReloadTimeout&&S(v.query.page)}}function R(e){if(e){var n=_.find(v.mailInteractions.rows,{id:e.id});n&&(n.Tags=e.tags||[],_.merge(n,_.pick(e,_.keys(n))))}}function x(e){if(e&&!e.secret){var n=_.find(v.mailInteractions.rows,{id:e.MailInteractionId});if(n){var t=_.find(n.Messages,{id:e.id});t?_.merge(t,_.pick(e,_.keys(t))):(_.isNil(n.Messages)&&(n.Messages={count:0}),e.read||(n.Messages.count+=1))}}}function N(e){e&&v.interactionsInterval&&n.cancel(v.interactionsInterval),v.interactionsInterval=n(function(){v.reloadingInteractions=!0,v.searchInProgress||S()},1e3*v.setting.mailInteractionsReloadTimeout)}o.$on("openMailDraft",function(e,s){s.interaction?(s.interaction.isDraft=!0,T(null,s.interaction)):r.show({controller:"ComposeMailInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/compose/mail/dialog.html",parent:angular.element(l.body),clickOutsideToClose:!1,locals:{account:s.account,message:s.content,type:"draft",interaction:{}},fullscreen:!0}).then(function(e){if(e){if(!e.message||!e.message.savedAsDraft){var i=e;return d.mailAccount.send({id:s.account.id},i).$promise.then(function(e){if(u.remove(s.id),e&&e.Messages&&e.Messages.length){if(i.attachments&&i.attachments.length)for(var n=0;n<i.attachments.length;n+=1)d.attachment.update({id:i.attachments[n].id},{MailMessageId:_.head(e.Messages).id});if(c.success({title:"Message properly sent!",msg:"Message has been sent!"}),e.closed){e.disposition=null;var t=!s.account.mandatoryDisposition,a=v.user.voicePause||v.user.chatPause||v.user.mailPause||v.user.openchannelPause||v.user.faxPause;r.show({controller:"DisposeInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/dispose/dialog.html",parent:angular.element(l.body),onRemoving:function(){v.user&&s.account.mandatoryDisposition&&!a&&d.user.unpause({id:v.user.id}).$promise.catch(function(e){h.error(e)})},clickOutsideToClose:t,escapeToClose:t,locals:{user:v.user,channel:"mail",interaction:e}})}else o.$parent.vm.addInteractionTab("mail",e)}}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n++)c.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else c.error({title:e.status?"API:"+e.status+" - "+e.statusText:"MAILACCOUNT:SEND",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}var n={id:s.id,channel:"mail",account:e.account,message:e.message};u.update(n)}})}),v.resetTooltipPosition=function(e){var n=angular.element(e.currentTarget).children()[1],t=angular.element(n);t.css("top",""),t.css("left",""),t.css("bottom","")},v.adjustTooltipPosition=function(e){var n=angular.element(e.currentTarget).children(),t=n[0],a=n[1],i=angular.element(t),s=angular.element(a),o=m.innerHeight,r=i.offset(),l=r.top,d=r.left,c=o<216+l;s.css("left",d),c?(s.css("top",""),s.css("bottom",o-l)):(s.css("bottom",""),s.css("top",l))},o.$on("$destroy",function(){i.removeAllListeners("mailMessage:save"),i.removeAllListeners("mailMessage:update"),i.removeAllListeners("mailInteraction:save"),i.removeAllListeners("mailInteractionTags:save"),i.removeAllListeners("mailInteraction:update"),i.removeAllListeners("user_has_mail_interactions:save"),i.removeAllListeners("user_has_mail_interactions:remove"),v.interactionsInterval&&n.cancel(v.interactionsInterval)})}e.$inject=["$scope","$interval","$mdDialog","$document","$window","$translate","$q","api","Auth","socket","toasty","draftManager","localStorageManager","agentAccountAssociationManager","ClientSideLoggingService"],angular.module("app.dashboards").controller("AgentHomeMailController",e)}(),function(){"use strict";function e(t,a,e,i,n,s,o,r){var l=this;function d(e){l.searchInProgress=!1,l.contacts=e||{count:0,rows:[]}}function c(e,n){l.searchInProgress=!0,s.cmContact.describe({id:l.query.ListId}).$promise.then(function(e){return _(e.toJSON()).omit("UserId").values().map(function(e){return function(e){var n={name:_.startCase(e.displayName),column:e.columnName,options:{}};if(e.custom)switch(e.custom.type){case"text":n.type="text";break;case"select":n.type="multiselect",n.values=_.map(JSON.parse(e.custom.values),function(e,n){return{id:n,name:e.value,value:e.value}}),n.options.field="name";break;case"switch":n.type="select",n.values=[{id:1,translate:"DASHBOARDS.ENABLED"},{id:0,translate:"DASHBOARDS.DISABLED"}],n.options.excludedOperators=["$ne"];break;case"number":n.type="number";break;case"datetime":n.type="date"}else switch(e.columnName){case"dateOfBirth":n.type="date";break;case"CompanyId":n.name="Company",n.type="autocomplete",n.options.route={model:"cmCompany",action:"get",params:{fields:"id,name",nolimit:!0}},n.options.searchFields=["name"],n.options.excludedOperators=["$ne"];break;case"ListId":n.name="List",n.type="autocomplete",n.options.route={model:"user",action:"getLists",params:{id:l.currentUser.id,fields:"id,name",nolimit:!0}},n.options.searchFields=["name"],n.options.excludedOperators=["$ne"];break;default:_.includes(e.type.toLowerCase(),"int")?n.type="number":_.includes(e.type.toLowerCase(),"date")?n.type="date":n.type="text"}return n}(e)}).value()}).then(function(e){l.advancedSearch.fields=e;var n=_.findIndex(e,function(e){return _.startsWith(e.column,"cf_")})||e.length-1;n<0&&(n=e.length),l.advancedSearch.fields.splice(n,0,{name:"Tags",column:"Tag",type:"multiselect",options:{route:{model:"tag",action:"get",params:{nolimit:!0}},excludedOperators:["$notIn"]}})}).catch(function(e){r.error({title:e.status?"API:"+e.status+" - "+e.statusText:"DESCRIBE_CM_CONTACTS",msg:e.data?JSON.stringify(e.data.message):e.toString()})}),e||(l.query.page=1),l.query.offset=(l.query.page-1)*l.query.limit;var t=o.localStorage.getItem("motion2.home.mycontacts:"+l.currentUser.id);(t=t?JSON.parse(t):{}).query=l.query,o.localStorage.setItem("motion2.home.mycontacts:"+l.currentUser.id,JSON.stringify(t)),l.query.search&&(l.advancedQuery=_.omit(l.query,"id")),l.promise=l.query.search?s.cmContact.get(l.advancedQuery,d).$promise:s.user.getContacts(l.query,d).$promise}l.currentUser=n.getCurrentUser(),l.lists={},l.contacts={count:0,rows:[]},l.tags={count:0,rows:[]},l.query={includeAll:!0,id:l.currentUser.id,sort:"-updatedAt",limit:10,page:1},l.advancedSearch={fields:[]},l.sectionColor="red",l.getContacts=c,l.refreshContacts=function(){c()},l.mergeContact=function(e,n){i.show({controller:"MergeContactDialogController",controllerAs:"vm",templateUrl:"app/main/apps/contactmanager/views/contacts/merge/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,resolve:{contact:["apiResolver",function(e){return e.resolve("cmContact@get",{id:n.id})}],lists:["apiResolver",function(e){return e.resolve("user@getLists",{id:l.currentUser.id,fields:"id,name"})}]},locals:{contacts:l.contacts.rows}})},l.duplicateContact=function(e,n){i.show({controller:"DuplicateContactDialogController",controllerAs:"vm",templateUrl:"app/main/apps/contactmanager/views/contacts/duplicate/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,resolve:{contact:["apiResolver",function(e){return e.resolve("cmContact@get",{id:n.id})}],lists:["apiResolver",function(e){return e.resolve("user@getLists",{id:l.currentUser.id,fields:"id,name"})}]},locals:{contacts:l.contacts.rows}})},l.openContact=function(e,n){a.$parent.vm.addContactTab(n)},l.call=a.$parent.vm.call,l.onInit=function(){s.cmList.get({fields:"id,name,dialPrefix",sort:"name",nolimit:!0}).$promise.then(function(e){return l.lists=e||{count:0,rows:[]},l.listsMap=_.keyBy(l.lists.rows,"id"),s.tag.get({sort:"name"}).$promise}).then(function(e){l.tags=e||{count:0,rows:[]}}).then(function(){l.quickFilters=[{name:"List",key:"ListId",type:"multiselect",label:"CONTACTMANAGER.SELECT_LIST",options:l.lists.rows,clearAll:!1},{name:"Tag",key:"tag",type:"multiselect",label:"DASHBOARDS.SELECT_TAG",options:l.tags.rows,placeholder:"DASHBOARDS.TAGS"}]}).catch(function(e){console.error(e)}).finally(function(){var e=o.localStorage.getItem("motion2.home.mycontacts:"+l.currentUser.id);if(e)try{(e=JSON.parse(e)).query&&(l.query=_.merge(l.query,e.query),_.isEmpty(l.lists.rows)?l.query.ListId=[]:_.isEmpty(l.query.ListId)&&(l.query.ListId=_(l.lists.rows).map("id").take().value()))}catch(e){console.error(e)}else l.query.ListId=_.map(l.lists.rows,"id");l.isSearchBarVisible=!(l.query.search||!l.query.filter),c()})},l.openAdvancedSearch=function(){i.show({controller:"AdvancedSearchController",controllerAs:"vm",templateUrl:"app/core/dialogs/advanced-search/dialog.html",parent:angular.element(t.body),clickOutsideToClose:!1,locals:{color:l.sectionColor,fields:l.advancedSearch.fields,storagePath:"home.mycontacts"},fullscreen:!0}).then(function(e){l.isSearchBarVisible=!(e.value||!l.query.filter),e.apply&&(l.query.search=e.value?e.value+="||User:=$eq["+l.currentUser.id+"]":e.value,c())}).catch(function(e){r.error({title:"ERROR",msg:e.data?JSON.stringify(e.data.message):e.toString()})})}}e.$inject=["$document","$scope","$timeout","$mdDialog","Auth","api","$window","toasty"],angular.module("app.dashboards").controller("AgentHomeMyContactsController",e)}(),function(){"use strict";function e(a,n,i,s,t,o,e,r,l,d,c,m,u,p){var g=this;g.user=l.getCurrentUser(),g.license={},g.setting={},g.tags={count:0,rows:[]},g.openchannelInteractions={count:0,rows:[]},g.query={includeAll:!0,sort:"-updatedAt",limit:10,page:1,read:null,closed:null,OpenchannelAccountId:[]},g.sectionColor="amber",g.onInit=function(e,n){return g.license=e,g.setting=n,r.user.getOpenchannelAccounts({id:g.user.id,nolimit:!0}).$promise.then(function(e){return g.openchannelAccounts=e||{count:0,rows:[]},r.tag.get({sort:"name"}).$promise}).then(function(e){g.tags=e||{count:0,rows:[]}}).then(function(){g.quickFilters=[{name:"Start Date",key:"createdAt",type:"date",label:"DASHBOARDS.SELECT_DATE"},{name:"Messages",key:"read",type:"select",label:"DASHBOARDS.SELECT_READ_UNREAD",customOptions:[{value:0,translate:"DASHBOARDS.UNREAD"},{value:1,translate:"DASHBOARDS.READ"},{value:null,translate:"DASHBOARDS.ALL"}]},{name:"Status",key:"closed",type:"select",label:"DASHBOARDS.SELECT_STATUS",customOptions:[{value:0,translate:"DASHBOARDS.OPENED"},{value:1,translate:"DASHBOARDS.CLOSED"},{value:null,translate:"DASHBOARDS.ALL"}]},{name:"Account",key:"OpenchannelAccountId",type:"multiselect",label:"DASHBOARDS.SELECT_ACCOUNT",options:g.openchannelAccounts.rows,clearAll:!1},{name:"Agent",key:"UserId",type:"select",label:"DASHBOARDS.SELECT_AGENT",customOptions:[{value:g.user.id,translate:"DASHBOARDS.ME"},{value:"null",translate:"DASHBOARDS.NOT_ASSIGNED"},{value:void 0,translate:"DASHBOARDS.ALL"}]},{name:"Tag",key:"tag",type:"multiselect",label:"DASHBOARDS.SELECT_TAG",options:g.tags.rows,placeholder:"DASHBOARDS.TAGS"}],g.advancedSearch={fields:[{name:"Id",column:"id",type:"number"},{name:"Contact",column:"Contact",type:"autocomplete",options:{searchFields:["firstName","lastName","email"],route:{model:"cmContact",action:"get",params:{fields:"id,firstName,lastName,email",Contact:"@autocomplete",nolimit:!0}},extraOperators:["$substring"],excludedOperators:["$ne"]}},{name:"Body",column:"body",type:"text",options:{excludedOperators:["$eq","$ne"]}},{name:"Status",column:"closed",type:"select",values:[{id:0,translate:"DASHBOARDS.OPENED"},{id:1,translate:"DASHBOARDS.CLOSED"}],options:{excludedOperators:["$ne"]}},{name:"Agent",column:"User",type:"autocomplete",options:{table:"i",route:{model:"user",action:"get",params:{role:"agent",fields:"id,name,fullname",nolimit:!0}},searchFields:["fullname","name"],extraOperators:["$substring"],excludedOperators:["$ne"]}},{name:"Account",column:"OpenchannelAccountId",type:"multiselect",options:{route:{model:"user",action:"getOpenchannelAccounts",params:{id:g.user.id,nolimit:!0}}}},{name:"Tags",column:"Tag",type:"multiselect",options:{route:{model:"tag",action:"get",params:{nolimit:!0}},excludedOperators:["$notIn"]}},{name:"Start Date",column:"createdAt",type:"date",options:{excludedOperators:["$ne"]}},{name:"Read",column:"unreadMessages",type:"select",values:[{id:1,translate:"DASHBOARDS.READ"},{id:0,translate:"DASHBOARDS.UNREAD"}],options:{excludedOperators:["$ne"]}},{name:"Disposition",column:"disposition",type:"multiselect",options:{routes:A("first")}},{name:"Second Disposition",column:"secondDisposition",type:"multiselect",options:{routes:A("second")}},{name:"Third Disposition",column:"thirdDisposition",type:"multiselect",options:{routes:A("third")}}]}}).catch(function(e){v.error(e)}).finally(function(){m.parseInteractionsKey("openchannel",g.query,g.user.id,g.openchannelAccounts.rows).then(function(){g.isSearchBarVisible=!(g.query.search||!g.query.filter),y(g.query.page)}),d.on("openchannelInteraction:save",O),d.on("openchannelInteraction:update",O),d.on("openchannelInteractionTags:save",C),d.on("openchannelMessage:save",w),d.on("openchannelMessage:update",w),d.on("user_has_openchannel_interactions:save",T),d.on("user_has_openchannel_interactions:remove",I),d.on("userOpenchannelAccount:save",f),d.on("userOpenchannelAccount:remove",b),0<g.setting.openchannelInteractionsReloadTimeout&&R()})},g.success=E,g.getOpenchannelInteractions=y,g.showOpenchannelInteraction=function(e,n){a.$parent.vm.addInteractionTab("openchannel",n)},g.downloadOpenchannelInteraction=function(e,s,n){r.openchannelInteraction.download({id:s.id,attachments:n}).$promise.then(function(e){var n=[e.buffer],t="openchannel-interaction"+s.id+".zip",a=new Blob(n,{type:e.type}),i=window.document.createElement("a");i.setAttribute("href",URL.createObjectURL(a)),i.setAttribute("download",t),document.body.appendChild(i),i.click()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n+=1)c.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else c.error({title:e.status?"API:"+e.status+" - "+e.statusText:"downloadOpenchannelInteraction",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.disposeInteraction=function(e,n){var t=g.user.voicePause||g.user.chatPause||g.user.mailPause||g.user.openchannelPause||g.user.faxPause,a=!n.Account.mandatoryDisposition;i.show({controller:"DisposeInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/dispose/dialog.html",parent:angular.element(s.body),clickOutsideToClose:a,escapeToClose:a,onRemoving:function(){g.user&&n.Account.mandatoryDisposition&&!t&&r.user.unpause({id:g.user.id}).$promise.catch(function(e){v.error(e)})},locals:{user:g.user,channel:"openchannel",interaction:n}})},g.getContactLabel=S,g.getAgentLabel=function(e){if(e.UserId)return e.UserId===g.user.id?o.instant("DASHBOARDS.ME"):e.Owner.fullname+" <"+e.Owner.internal+">";return o.instant("DASHBOARDS.NOT_ASSIGNED")},g.getOpenchannelAccountLabel=function(e){if(e.Account)return e.Account.key;return o.instant("DASHBOARDS.UNKNOWN")},g.composeOpenchannelInteraction=function(e,t){i.show({controller:"ComposeOpenchannelInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/compose/openchannel/dialog.html",parent:angular.element(s.body),clickOutsideToClose:!1,locals:{account:t,message:{},type:"new",interaction:{}},fullscreen:!0}).then(function(e){if(e){var n=e;return r.openchannelAccount.send({id:t.id},n).$promise.then(function(e){c.success({title:"Message properly sent!",msg:"Message has been sent!"}),a.$parent.vm.addInteractionTab("openchannel",e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n++)c.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else c.error({title:e.status?"API:"+e.status+" - "+e.statusText:"OPENCHANNELACCOUNT:SEND",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}})},g.openAdvancedSearch=function(){i.show({controller:"AdvancedSearchController",controllerAs:"vm",templateUrl:"app/core/dialogs/advanced-search/dialog.html",parent:angular.element(s.body),clickOutsideToClose:!1,locals:{color:g.sectionColor,fields:g.advancedSearch.fields,storagePath:"home.openchannel"},fullscreen:!0}).then(function(e){g.isSearchBarVisible=!(e.value||!g.query.filter),e.apply&&(g.query.search=e.value,y())}).catch(function(e){c.error({title:"ERROR",msg:e.data?JSON.stringify(e.data.message):e.toString()})})};var v=p.getLogger("agent.general.openchannel");function h(e){return{accounts:g.openchannelAccounts,accountId:e,filters:g.quickFilters,query:g.query,userId:g.user.id}}function f(e){if(e.UserId===g.user.id){var n=h(e.OpenchannelAccountId);u.addAccount("openchannel",n).then(function(e){e&&y()}).catch(function(e){v.error(e)})}}function b(e){if(e.UserId===g.user.id){var n=h(e.OpenchannelAccountId);u.removeAccount("openchannel",n).catch(function(e){v.error(e)})}}function A(n){var e=[{model:"disposition",action:"get",field:"name",params:{field:"name,level",level:n,MailAccountId:"null",SmsAccountId:"null",ChatWebsiteId:"null",OpenchannelAccountId:"null",WhatsappAccountId:"null",FaxAccountId:"null",ListId:"null",nolimit:!0}}],t=_.map(g.openchannelAccounts.rows,function(e){return{model:"openchannelAccount",action:"getDispositions",field:"name",params:{id:e.id,field:"name,level",level:n,nolimit:!0}}});return _.concat(t,e)}function E(e){!g.reloadingInteractions&&0<g.setting.openchannelInteractionsReloadTimeout&&R(!0),g.searchInProgress=!1,g.reloadingInteractions=!1,g.openchannelInteractions=e||{count:0,rows:[]};for(var n=0;n<g.openchannelInteractions.rows.length;n+=1)S(g.openchannelInteractions.rows[n])}function y(e){g.searchInProgress=!0,e||(g.query.page=1),g.query.offset=(g.query.page-1)*g.query.limit;var n=t.localStorage.getItem("motion2.home.openchannel:"+g.user.id);(n=n?JSON.parse(n):{}).query=g.query,t.localStorage.setItem("motion2.home.openchannel:"+g.user.id,JSON.stringify(n)),g.promise=r.openchannelInteraction.get(g.query,E).$promise}function S(e){"Unknown"===e.contactName&&(e.contactName=o.instant("DASHBOARDS.UNKNOWN"))}function T(e){var n=_.find(g.openchannelInteractions.rows,{id:e.OpenchannelInteractionId});n&&n.Users&&(_.find(n.Users,{id:e.UserId})||n.Users.push({id:e.UserId}))}function I(e){var n=_.find(g.openchannelInteractions.rows,{id:e.OpenchannelInteractionId});n&&n.Users&&_.remove(n.Users,{id:e.UserId})}function O(e){if(e){var n=_.find(g.openchannelInteractions.rows,{id:e.id});if(n){if(n.Users=[],e.closed&&(n.unreadMessages=0),g.query.sort){var t=_.startsWith(g.query.sort,"-")?"desc":"asc";g.openchannelInteractions.rows=_.orderBy(g.openchannelInteractions.rows,_.trimStart(g.query.sort,"-"),t)}_.merge(n,_.pick(e,_.keys(n)))}else 0===g.setting.openchannelInteractionsReloadTimeout&&y(g.query.page)}}function C(e){if(e){var n=_.find(g.openchannelInteractions.rows,{id:e.id});n&&(n.Tags=e.tags||[],_.merge(n,_.pick(e,_.keys(n))))}}function w(e){if(e&&!e.secret){var n=_.find(g.openchannelInteractions.rows,{id:e.OpenchannelInteractionId});if(n){var t=_.find(n.Messages,{id:e.id});t?_.merge(t,_.pick(e,_.keys(t))):(_.isNil(n.Messages)&&(n.Messages={count:0}),e.read||(n.Messages.count+=1))}}}function R(e){e&&g.interactionsInterval&&n.cancel(g.interactionsInterval),g.interactionsInterval=n(function(){g.reloadingInteractions=!0,g.searchInProgress||y()},1e3*g.setting.openchannelInteractionsReloadTimeout)}a.$on("$destroy",function(){d.removeAllListeners("openchannelMessage:save"),d.removeAllListeners("openchannelMessage:update"),d.removeAllListeners("openchannelInteraction:save"),d.removeAllListeners("openchannelInteractionTags:save"),d.removeAllListeners("openchannelInteraction:update"),d.removeAllListeners("user_has_openchannel_interactions:save"),d.removeAllListeners("user_has_openchannel_interactions:remove"),g.interactionsInterval&&n.cancel(g.interactionsInterval)})}e.$inject=["$scope","$interval","$mdDialog","$document","$window","$translate","$q","api","Auth","socket","toasty","localStorageManager","agentAccountAssociationManager","ClientSideLoggingService"],angular.module("app.dashboards").controller("AgentHomeOpenchannelController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l){var d=this;function c(e,n,t){d.license=e,d.setting=n,d.plugin=t}d.currentUser=o.getCurrentUser(),d.plugin={},d.onInit=c,d.getTrustedURL=function(){return s.trustAsResourceUrl(d.plugin.agentUrl)},c(),n.$on("pluginUpdated",function(e,n){d.plugin=n.plugin})}e.$inject=["$document","$scope","$timeout","$mdDialog","$stateParams","$sce","Auth","api","$window"],angular.module("app.dashboards").controller("AgentHomePluginsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l){var d=this;function c(){d.agentsQuery.offset=(d.agentsQuery.page-1)*d.agentsQuery.limit,l.update("motion2.home.presence.agents:"+d.currentUser.id,d.agentsQuery,"query"),i.user.getPresence(d.agentsQuery).$promise.then(function(e){d.agents={count:e.count,rows:_.filter(e.rows,function(e){return e.id!==d.currentUser.id})}}).catch(function(){r.error({title:t.instant("DASHBOARDS.AGENT_PRESENCE"),msg:t.instant("CONTACTMANAGER.NOTIFICATIONS.NO_DATA_ERROR")})})}function m(){d.queuesQuery.offset=(d.queuesQuery.page-1)*d.queuesQuery.limit,l.update("motion2.home.presence.queues:"+d.currentUser.id,d.queuesQuery,"query"),i.voiceQueue.get(d.queuesQuery).$promise.then(function(e){return d.voiceQueues=e||{rows:[],count:0},i.rpc.getVoiceQueuesChannels().$promise.then(function(e){e.rows.forEach(function(e){var n=_.find(d.voiceQueues.rows,["name",e.name]);n&&(n.calls||(n.calls=[]),n.calls.push(e))})})}).catch(function(){r.error({title:t.instant("VOICE.VOICEQUEUES"),msg:t.instant("CONTACTMANAGER.NOTIFICATIONS.NO_DATA_ERROR")})})}function u(e){return 0===d.selectedTab?e:"xcallyQueueExtension"+e}function p(e,n,t,a){var i=_.find(d.agents.rows,["id",e]);i&&(i.status=!1===n?"offline":a?"pause":"unavailable"===t?t:_.includes(["idle","unknown","ringing",null,void 0],t)?"online":"busy")}function g(e){e.id!==d.currentUser.id&&p(e.id,e.online,e.voiceStatus,e.voicePause)}d.currentUser=s.getCurrentUser(),d.agents={count:0,rows:[]},d.agentsQuery={fields:"id,name,internal,online",role:"agent",sort:"name",limit:10,page:1},d.queuesQuery={fields:"id,name",type:"inbound",sort:"name",limit:10,page:1},d.onAgentsTabSelection=function(){if(d.agentsQuery.filter||d.agentsQuery.teams||d.agentsQuery.queues)return;_.merge(d.agentsQuery,l.get("motion2.home.presence.agents:"+d.currentUser.id,"query")),d.isSearchBarVisible=!!d.agentsQuery.filter,a.all([a(function(n,e){i.team.get({fields:"id,name",sort:"name",nolimit:!0}).$promise.then(function(e){d.teams=e||{rows:[],count:0},n()}).catch(function(){r.error({title:t.instant("STAFF.TEAMS"),msg:t.instant("CONTACTMANAGER.NOTIFICATIONS.NO_DATA_ERROR")}),e()})}),a(function(n,e){i.voiceQueue.get({fields:"id,name",type:"inbound",sort:"name",nolimit:!0}).$promise.then(function(e){d.queues=e||{rows:[],count:0},n()}).catch(function(){r.error({title:t.instant("VOICE.VOICEQUEUES"),msg:t.instant("CONTACTMANAGER.NOTIFICATIONS.NO_DATA_ERROR")}),e()})})]).then(function(){d.quickFilters=[{name:"Team",key:"teams",type:"multiselect",label:"DASHBOARDS.SELECT_TEAM",options:d.teams.rows},{name:"Queue",key:"queues",type:"multiselect",label:"DASHBOARDS.SELECT_QUEUE",options:d.queues.rows}],c()}).catch(function(){r.error({title:t.instant("DASHBOARDS.AGENT_PRESENCE"),msg:t.instant("DASHBOARDS.ERRORS.FAILED_INITIALIZATION")})})},d.onQueuesTabSelection=function(){if(d.queuesQuery.filter)return;_.merge(d.queuesQuery,l.get("motion2.home.presence.queues:"+d.currentUser.id,"query")),d.isSearchBarVisible=!!d.queuesQuery.filter,m()},d.getAgents=c,d.getVoiceQueues=m,d.originateCall=function(e){n.$broadcast("webrtc::call",{target:u(e)})},d.transferCall=function(e){n.$broadcast("webrtc::transfer",{target:u(e)})},o.on("user:presence",function(e){if(e.id===d.currentUser.id)return;p(e.id,e.online,e.voiceStatus,e.voicePause)}),o.on("user:update",g),o.on("voice_queue_presence:save",function(e){if(!d.voiceQueues&&d.voiceQueues.rows)return;var n=_.find(d.voiceQueues.rows,["name",e.name]);if(!n)return;n.calls||(n.calls=[]);if(_.some(n.calls,["uniqueid",e.uniqueid]))return;n.calls.push(e)}),o.on("voice_queue_presence:remove",function(e){var n=_.find(d.voiceQueues.rows,["name",e.name]);if(!n)return;_.remove(n.calls,["uniqueid",e.uniqueid])}),e.$on("$destroy",function(){o.removeListener("user:update",g),o.removeAllListeners("user:presence"),o.removeAllListeners("voice_queue_presence:save"),o.removeAllListeners("voice_queue_presence:remove")})}e.$inject=["$scope","$rootScope","$translate","$q","api","Auth","socket","toasty","localStorageManager"],angular.module("app.dashboards").controller("AgentHomePresenceController",e)}(),function(){"use strict";function e(e,t,n,a,o,i){var s=this;function r(e){s.searchInProgress=!1,s.voiceRecordings=e||{count:0,rows:[]}}function l(){s.searchInProgress=!0,s.query.offset=(s.query.page-1)*s.query.limit;var e={query:s.query};t.localStorage.setItem("motion2.home.recordings:"+s.currentUser.id,JSON.stringify(e)),s.promise=a.voiceRecording.get(s.query,r).$promise}s.currentUser=i.getCurrentUser(),s.voiceRecordings={},s.table="voiceRecordings",s.query={UserId:s.currentUser.id,fields:"createdAt,updatedAt,id,format,value,type,uniqueid,calleridnum,exten,connectedlinenum,queue,rating,audio,transcribeStatus,UserId",sort:"-updatedAt",limit:10,page:1,type:null},s.downloadfile=function(i,e){return a.voiceRecording.download({id:i.id,exists:!0}).$promise.then(function(e){var n=[e.buffer],t=new Blob(n,{type:e.type}),a=window.document.createElement("a");a.setAttribute("href",URL.createObjectURL(t)),a.setAttribute("download",i.uniqueid+i.format),a.click()}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvoiceRecording",msg:e.data?JSON.stringify(e.data):e.toString()})})},s.downloadtranscribe=function(s,e){return a.voiceRecording.downloadTranscribe({id:s.id}).$promise.then(function(e){var n=[e.buffer],t="download",a=new Blob(n,{type:e.type});t=s.uniqueid;var i=window.document.createElement("a");i.setAttribute("href",URL.createObjectURL(a)),i.setAttribute("download",t),document.body.appendChild(i),i.click()}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvoiceRecording",msg:e.data?JSON.stringify(e.data):e.toString()})})},s.success=r,s.getVoiceRecordings=l,s.onInit=function(){s.quickFilters=[{name:"Start Date",key:"createdAt",type:"date",label:"DASHBOARDS.SELECT_DATE"},{name:"Type",key:"type",type:"select",label:"VOICE.SELECT_TYPE",customOptions:[{value:"internal",translate:"VOICE.INTERNAL"},{value:"inbound",translate:"VOICE.INBOUND"},{value:"outbound",translate:"VOICE.OUTBOUND"},{value:"dialer",translate:"VOICE.DIALER"},{value:null,translate:"VOICE.ALL"}]}];var e=t.localStorage.getItem("motion2.home.recordings:"+s.currentUser.id);if(e)try{(e=JSON.parse(e)).query&&(s.query=_.merge(s.query,e.query))}catch(e){console.error(e)}else{var n={$gte:moment().startOf("month").utcOffset(0,!0).format(),$lte:moment().endOf("month").utcOffset(0,!0).format()};s.query.createdAt=n}s.isSearchBarVisible=!!s.query.filter,l()}}e.$inject=["$scope","$window","$timeout","api","toasty","Auth"],angular.module("app.dashboards").controller("AgentHomeRecordingsController",e)}(),function(){"use strict";function e(e,t,a,i,s,o,r,n){var l=this;function d(e){l.searchInProgress=!1,l.scheduledCalls=e||{count:0,rows:[]}}l.currentUser=n.getCurrentUser(),l.priorities=["Lowest","Low","Medium","High","Highest"],l.crudPermissions={readOnly:!1,canEdit:!0,canDelete:!0},l.scheduledCalls={},l.query={id:l.currentUser.id,fields:"id,phone,scheduledat,recallme,priority,UserId,OwnerId,dialTimezone",sort:"scheduledat",limit:10,page:1},l.queueCampaigns={rows:[],count:0},l.success=d,l.getScheduledCalls=function(){l.searchInProgress=!0,l.query.id=l.currentUser.id,l.query.includeAll=!0,l.query.offset=(l.query.page-1)*l.query.limit,l.query.fields="id,phone,scheduledat,recallme,priority,UserId,OwnerId,dialTimezone";var e={query:l.query};t.localStorage.setItem("motion2.home.scheduled:"+l.currentUser.id,JSON.stringify(e)),l.promise=r.user.getScheduledCalls(l.query,d).$promise},l.onInit=function(){r.user.getQueues({id:n.getCurrentUser().id,fields:"id,name",channel:"voice",type:"outbound",nolimit:!0}).$promise.then(function(e){l.queueCampaigns=e||{count:0,rows:[]}}).then(function(){l.quickFilters=[{name:"Start Date",key:"scheduledat",type:"date",label:"DASHBOARDS.SELECT_DATE"},{name:"Campaigns",key:"VoiceQueueId",type:"multiselect",label:"MOTIONDIALER.SELECT_CAMPAIGN",options:l.queueCampaigns.rows}]}).catch(function(e){console.error(e)}).finally(function(){var e=t.localStorage.getItem("motion2.home.scheduled:"+l.currentUser.id);if(e)try{(e=JSON.parse(e)).query&&(l.query=_.omit(e.query,["filter"]))}catch(e){console.error(e)}else{var n={$gte:moment().startOf("month").utcOffset(0,!0).format(),$lte:moment().endOf("month").utcOffset(0,!0).format()};l.query.scheduledat=n}l.getScheduledCalls()})},l.isDateBeforeToday=function(e){return moment(e).isBefore(moment())},l.createOrEditQueueCampaignHopper=function(e,n){i.show({controller:"CreateOrEditHopperVoiceQueueIdDialogController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/queueCampaigns/edit/hoppers/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{queueCampaign:null,hopper:n,hoppers:l.scheduledCalls.rows,license:null,setting:null,crudPermissions:l.crudPermissions}})},l.deleteConfirm=function(n,e){var t=i.confirm().title("Are you sure want to delete the scheduled call?").htmlContent("<b>Scheduled call</b> will be deleted.").ariaLabel("delete scheduled call").targetEvent(e).ok("OK").cancel("CANCEL");i.show(t).then(function(){var e;e=n,r.cmHopper.delete({id:e.id}).$promise.then(function(){_.remove(l.scheduledCalls.rows,{id:e.id}),l.scheduledCalls.count-=1,l.scheduledCalls.rows.length||l.getScheduledCalls(),o.success({title:"Scheduled call deleted!",msg:e.name?"Scheduled call has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){l.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETE_HOPPER"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETE_HOPPER",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){console.log("CANCEL")})};var c=!0,m=1;e.$watch("vm.query.filter",function(e,n){c?a(function(){c=!1}):(n||(m=l.query.page),e!==n&&(l.query.page=1),e||(l.query.page=m),l.getScheduledCalls())})}e.$inject=["$scope","$window","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.dashboards").controller("AgentHomeScheduledCallsController",e)}(),function(){"use strict";function e(a,n,i,s,t,o,e,r,l,d,c,m,u,p){var g=this;g.user=l.getCurrentUser(),g.license={},g.setting={},g.tags={count:0,rows:[]},g.smsInteractions={count:0,rows:[]},g.query={includeAll:!0,sort:"-updatedAt",limit:10,page:1,read:null,closed:null,SmsAccountId:[]},g.sectionColor="orange",g.onInit=function(e,n){return g.license=e,g.setting=n,r.user.getSmsAccounts({id:g.user.id,nolimit:!0}).$promise.then(function(e){return g.smsAccounts=e||{count:0,rows:[]},r.tag.get({sort:"name"}).$promise}).then(function(e){g.tags=e||{count:0,rows:[]}}).then(function(){g.quickFilters=[{name:"Start Date",key:"createdAt",type:"date",label:"DASHBOARDS.SELECT_DATE"},{name:"Messages",key:"read",type:"select",label:"DASHBOARDS.SELECT_READ_UNREAD",customOptions:[{value:0,translate:"DASHBOARDS.UNREAD"},{value:1,translate:"DASHBOARDS.READ"},{value:null,translate:"DASHBOARDS.ALL"}]},{name:"Status",key:"closed",type:"select",label:"DASHBOARDS.SELECT_STATUS",customOptions:[{value:0,translate:"DASHBOARDS.OPENED"},{value:1,translate:"DASHBOARDS.CLOSED"},{value:null,translate:"DASHBOARDS.ALL"}]},{name:"Account",key:"SmsAccountId",type:"multiselect",label:"DASHBOARDS.SELECT_ACCOUNT",options:g.smsAccounts.rows,clearAll:!1},{name:"Agent",key:"UserId",type:"select",label:"DASHBOARDS.SELECT_AGENT",customOptions:[{value:g.user.id,translate:"DASHBOARDS.ME"},{value:"null",translate:"DASHBOARDS.NOT_ASSIGNED"},{value:void 0,translate:"DASHBOARDS.ALL"}]},{name:"Tag",key:"tag",type:"multiselect",label:"DASHBOARDS.SELECT_TAG",options:g.tags.rows,placeholder:"DASHBOARDS.TAGS"}],g.advancedSearch={fields:[{name:"Id",column:"id",type:"number"},{name:"Contact",column:"Contact",type:"autocomplete",options:{searchFields:["firstName","lastName","email"],route:{model:"cmContact",action:"get",params:{fields:"id,firstName,lastName,email",Contact:"@autocomplete",nolimit:!0}},extraOperators:["$substring"],excludedOperators:["$ne"]}},{name:"Body",column:"body",type:"text",options:{excludedOperators:["$eq","$ne"]}},{name:"Status",column:"closed",type:"select",values:[{id:0,translate:"DASHBOARDS.OPENED"},{id:1,translate:"DASHBOARDS.CLOSED"}],options:{excludedOperators:["$ne"]}},{name:"Agent",column:"User",type:"autocomplete",options:{table:"i",route:{model:"user",action:"get",params:{role:"agent",fields:"id,name,fullname",nolimit:!0}},searchFields:["fullname","name"],extraOperators:["$substring"],excludedOperators:["$ne"]}},{name:"Account",column:"SmsAccountId",type:"multiselect",options:{route:{model:"user",action:"getSmsAccounts",params:{id:g.user.id,nolimit:!0}}}},{name:"Tags",column:"Tag",type:"multiselect",options:{route:{model:"tag",action:"get",params:{nolimit:!0}},excludedOperators:["$notIn"]}},{name:"Start Date",column:"createdAt",type:"date",options:{excludedOperators:["$ne"]}},{name:"Read",column:"unreadMessages",type:"select",values:[{id:1,translate:"DASHBOARDS.READ"},{id:0,translate:"DASHBOARDS.UNREAD"}],options:{excludedOperators:["$ne"]}},{name:"Disposition",column:"disposition",type:"multiselect",options:{routes:A("first")}},{name:"Second Disposition",column:"secondDisposition",type:"multiselect",options:{routes:A("second")}},{name:"Third Disposition",column:"thirdDisposition",type:"multiselect",options:{routes:A("third")}}]}}).catch(function(e){v.error(e)}).finally(function(){m.parseInteractionsKey("sms",g.query,g.user.id,g.smsAccounts.rows).then(function(){g.isSearchBarVisible=!(g.query.search||!g.query.filter),y(g.query.page)}),d.on("smsInteraction:save",O),d.on("smsInteraction:update",O),d.on("smsInteractionTags:save",C),d.on("smsMessage:save",w),d.on("smsMessage:update",w),d.on("user_has_sms_interactions:save",T),d.on("user_has_sms_interactions:remove",I),d.on("userSmsAccount:save",f),d.on("userSmsAccount:remove",b),0<g.setting.smsInteractionsReloadTimeout&&R()})},g.success=E,g.getSmsInteractions=y,g.showSmsInteraction=function(e,n){a.$parent.vm.addInteractionTab("sms",n)},g.downloadSmsInteraction=function(e,s,n){r.smsInteraction.download({id:s.id,attachments:n}).$promise.then(function(e){var n=[e.buffer],t="sms-interaction"+s.id+".zip",a=new Blob(n,{type:e.type}),i=window.document.createElement("a");i.setAttribute("href",URL.createObjectURL(a)),i.setAttribute("download",t),document.body.appendChild(i),i.click()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n+=1)c.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else c.error({title:e.status?"API:"+e.status+" - "+e.statusText:"downloadSmsInteraction",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.disposeInteraction=function(e,n){var t=g.user.voicePause||g.user.chatPause||g.user.mailPause||g.user.openchannelPause||g.user.faxPause,a=!n.Account.mandatoryDisposition;i.show({controller:"DisposeInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/dispose/dialog.html",parent:angular.element(s.body),clickOutsideToClose:a,escapeToClose:a,onRemoving:function(){g.user&&n.Account.mandatoryDisposition&&!t&&r.user.unpause({id:g.user.id}).$promise.catch(function(e){v.error(e)})},locals:{user:g.user,channel:"sms",interaction:n}})},g.getContactLabel=S,g.getAgentLabel=function(e){if(e.UserId)return e.UserId===g.user.id?o.instant("DASHBOARDS.ME"):e.Owner.fullname+" <"+e.Owner.internal+">";return o.instant("DASHBOARDS.NOT_ASSIGNED")},g.getSmsAccountLabel=function(e){if(e.Account)return e.Account.key;return o.instant("DASHBOARDS.UNKNOWN")},g.composeSmsInteraction=function(e,t){i.show({controller:"ComposeSmsInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/compose/sms/dialog.html",parent:angular.element(s.body),clickOutsideToClose:!1,locals:{account:t,message:{},type:"new",interaction:{}},fullscreen:!0}).then(function(e){if(e){var n=e;return r.smsAccount.send({id:t.id},n).$promise.then(function(e){c.success({title:"Message properly sent!",msg:"Message has been sent!"}),a.$parent.vm.addInteractionTab("sms",e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n++)c.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else c.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SMSACCOUNT:SEND",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}})},g.openAdvancedSearch=function(){i.show({controller:"AdvancedSearchController",controllerAs:"vm",templateUrl:"app/core/dialogs/advanced-search/dialog.html",parent:angular.element(s.body),clickOutsideToClose:!1,locals:{color:g.sectionColor,fields:g.advancedSearch.fields,storagePath:"home.sms"},fullscreen:!0}).then(function(e){g.isSearchBarVisible=!(e.value||!g.query.filter),e.apply&&(g.query.search=e.value,y())}).catch(function(e){c.error({title:"ERROR",msg:e.data?JSON.stringify(e.data.message):e.toString()})})};var v=p.getLogger("agent.general.sms");function h(e){return{accounts:g.smsAccounts,accountId:e,filters:g.quickFilters,query:g.query,userId:g.user.id}}function f(e){if(e.UserId===g.user.id){var n=h(e.SmsAccountId);u.addAccount("sms",n).then(function(e){e&&y()}).catch(function(e){v.error(e)})}}function b(e){if(e.UserId===g.user.id){var n=h(e.SmsAccountId);u.removeAccount("sms",n).catch(function(e){v.error(e)})}}function A(n){var e=[{model:"disposition",action:"get",field:"name",params:{field:"name,level",level:n,MailAccountId:"null",SmsAccountId:"null",ChatWebsiteId:"null",OpenchannelAccountId:"null",WhatsappAccountId:"null",FaxAccountId:"null",ListId:"null",nolimit:!0}}],t=_.map(g.smsAccounts.rows,function(e){return{model:"smsAccount",action:"getDispositions",field:"name",params:{id:e.id,field:"name,level",level:n,nolimit:!0}}});return _.concat(t,e)}function E(e){!g.reloadingInteractions&&0<g.setting.smsInteractionsReloadTimeout&&R(!0),g.searchInProgress=!1,g.reloadingInteractions=!1,g.smsInteractions=e||{count:0,rows:[]};for(var n=0;n<g.smsInteractions.rows.length;n+=1)S(g.smsInteractions.rows[n])}function y(e){g.searchInProgress=!0,e||(g.query.page=1),g.query.offset=(g.query.page-1)*g.query.limit;var n=t.localStorage.getItem("motion2.home.sms:"+g.user.id);(n=n?JSON.parse(n):{}).query=g.query,t.localStorage.setItem("motion2.home.sms:"+g.user.id,JSON.stringify(n)),g.promise=r.smsInteraction.get(g.query,E).$promise}function S(e){e.contactInfo=e.Contact?e.Contact.mobile:void 0,"Unknown"===e.contactName&&(e.contactName=o.instant("DASHBOARDS.UNKNOWN"))}function T(e){var n=_.find(g.smsInteractions.rows,{id:e.SmsInteractionId});n&&n.Users&&(_.find(n.Users,{id:e.UserId})||n.Users.push({id:e.UserId}))}function I(e){var n=_.find(g.smsInteractions.rows,{id:e.SmsInteractionId});n&&n.Users&&_.remove(n.Users,{id:e.UserId})}function O(e){if(e){var n=_.find(g.smsInteractions.rows,{id:e.id});if(n){if(n.Users=[],e.closed&&(n.unreadMessages=0),g.query.sort){var t=_.startsWith(g.query.sort,"-")?"desc":"asc";g.smsInteractions.rows=_.orderBy(g.smsInteractions.rows,_.trimStart(g.query.sort,"-"),t)}_.merge(n,_.pick(e,_.keys(n)))}else 0===g.setting.smsInteractionsReloadTimeout&&y(g.query.page)}}function C(e){if(e){var n=_.find(g.smsInteractions.rows,{id:e.id});n&&(n.Tags=e.tags||[],_.merge(n,_.pick(e,_.keys(n))))}}function w(e){if(e&&!e.secret){var n=_.find(g.smsInteractions.rows,{id:e.SmsInteractionId});if(n){var t=_.find(n.Messages,{id:e.id});t?_.merge(t,_.pick(e,_.keys(t))):(_.isNil(n.Messages)&&(n.Messages={count:0}),e.read||(n.Messages.count+=1))}}}function R(e){e&&g.interactionsInterval&&n.cancel(g.interactionsInterval),g.interactionsInterval=n(function(){g.reloadingInteractions=!0,g.searchInProgress||y()},1e3*g.setting.smsInteractionsReloadTimeout)}a.$on("$destroy",function(){d.removeAllListeners("smsMessage:save"),d.removeAllListeners("smsMessage:update"),d.removeAllListeners("smsInteraction:save"),d.removeAllListeners("smsInteractionTags:save"),d.removeAllListeners("smsInteraction:update"),d.removeAllListeners("user_has_sms_interactions:save"),d.removeAllListeners("user_has_sms_interactions:remove"),g.interactionsInterval&&n.cancel(g.interactionsInterval)})}e.$inject=["$scope","$interval","$mdDialog","$document","$window","$translate","$q","api","Auth","socket","toasty","localStorageManager","agentAccountAssociationManager","ClientSideLoggingService"],angular.module("app.dashboards").controller("AgentHomeSmsController",e)}(),function(){"use strict";function e(n,t,a,i,e,s,o,r){var l=this;function d(e){l.searchInProgress=!1,l.voiceCalls=e||{count:0,rows:[]}}function c(){l.searchInProgress=!0,l.query.offset=(l.query.page-1)*l.query.limit;var e={query:l.query};s.localStorage.setItem("motion2.home.voice:"+l.currentUser.id,JSON.stringify(e)),l.promise=a.voiceCallReport.get(l.query,d).$promise}l.currentUser=e.getCurrentUser(),l.voiceCalls={},l.table="voiceCalls",l.query={UserId:l.currentUser.id,fields:"id,type,uniqueid,tag,starttime,endtime,source,destination,userDisposition,userSecondDisposition,userThirdDisposition,note,duration,billableseconds,answertime",sort:"-updatedAt",limit:10,page:1,type:null},l.success=d,l.getVoiceCalls=c,l.onInit=function(){return a.tag.get({sort:"name"}).$promise.then(function(e){l.tags=e||{count:0,rows:[]}}).then(function(){l.quickFilters=[{name:"Start Date",key:"createdAt",type:"date",label:"DASHBOARDS.SELECT_DATE"},{name:"Type",key:"type",type:"select",label:"VOICE.SELECT_TYPE",customOptions:[{value:"internal",translate:"VOICE.INTERNAL"},{value:"inbound",translate:"VOICE.INBOUND"},{value:"outbound",translate:"VOICE.OUTBOUND"},{value:"dialer",translate:"VOICE.DIALER"},{value:null,translate:"VOICE.ALL"}]}]}).catch(function(e){i.error({title:"Init error",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()}),l.tags={count:0,rows:[]}}).finally(function(){var e=s.localStorage.getItem("motion2.home.voice:"+l.currentUser.id);if(e)try{(e=JSON.parse(e)).query&&(l.query=_.merge(l.query,e.query))}catch(e){console.error(e)}else{var n={$gte:moment().startOf("month").utcOffset(0,!0).format(),$lte:moment().endOf("month").utcOffset(0,!0).format()};l.query.createdAt=n}l.isSearchBarVisible=!!l.query.filter,c()})},l.showDetails=function(e){n.show({controller:"AgentHomeVoiceDetailsController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/home/voice/details/dialog.html",parent:angular.element(t.body),clickOutsideToClose:!0,locals:{call:e}})}}e.$inject=["$mdDialog","$document","api","toasty","Auth","$window","$scope","$timeout"],angular.module("app.dashboards").controller("AgentHomeVoiceController",e)}(),function(){"use strict";function e(e,n){this.call=n,this.closeDialog=function(){e.hide()}}e.$inject=["$mdDialog","call"],angular.module("app.dashboards").controller("AgentHomeVoiceDetailsController",e)}(),function(){"use strict";function e(a,n,i,s,t,o,e,r,l,d,c,m,u,p){var g=this;g.user=l.getCurrentUser(),g.license={},g.setting={},g.tags={count:0,rows:[]},g.whatsappInteractions={count:0,rows:[]},g.query={includeAll:!0,sort:"-updatedAt",limit:10,page:1,read:null,closed:null,WhatsappAccountId:[]},g.sectionColor="lime-A700",g.onInit=function(e,n){return g.license=e,g.setting=n,r.user.getWhatsappAccounts({id:g.user.id,nolimit:!0}).$promise.then(function(e){return g.whatsappAccounts=e||{count:0,rows:[]},r.tag.get({sort:"name"}).$promise}).then(function(e){g.tags=e||{count:0,rows:[]}}).then(function(){g.quickFilters=[{name:"Start Date",key:"createdAt",type:"date",label:"DASHBOARDS.SELECT_DATE"},{name:"Messages",key:"read",type:"select",label:"DASHBOARDS.SELECT_READ_UNREAD",customOptions:[{value:0,translate:"DASHBOARDS.UNREAD"},{value:1,translate:"DASHBOARDS.READ"},{value:null,translate:"DASHBOARDS.ALL"}]},{name:"Status",key:"closed",type:"select",label:"DASHBOARDS.SELECT_STATUS",customOptions:[{value:0,translate:"DASHBOARDS.OPENED"},{value:1,translate:"DASHBOARDS.CLOSED"},{value:null,translate:"DASHBOARDS.ALL"}]},{name:"Account",key:"WhatsappAccountId",type:"multiselect",label:"DASHBOARDS.SELECT_ACCOUNT",options:g.whatsappAccounts.rows,clearAll:!1},{name:"Agent",key:"UserId",type:"select",label:"DASHBOARDS.SELECT_AGENT",customOptions:[{value:g.user.id,translate:"DASHBOARDS.ME"},{value:"null",translate:"DASHBOARDS.NOT_ASSIGNED"},{value:void 0,translate:"DASHBOARDS.ALL"}]},{name:"Tag",key:"tag",type:"multiselect",label:"DASHBOARDS.SELECT_TAG",options:g.tags.rows,placeholder:"DASHBOARDS.TAGS"}],g.advancedSearch={fields:[{name:"Id",column:"id",type:"number"},{name:"Contact",column:"Contact",type:"autocomplete",options:{searchFields:["firstName","lastName","email"],route:{model:"cmContact",action:"get",params:{fields:"id,firstName,lastName,email",Contact:"@autocomplete",nolimit:!0}},extraOperators:["$substring"],excludedOperators:["$ne"]}},{name:"Body",column:"body",type:"text",options:{excludedOperators:["$eq","$ne"]}},{name:"Status",column:"closed",type:"select",values:[{id:0,translate:"DASHBOARDS.OPENED"},{id:1,translate:"DASHBOARDS.CLOSED"}],options:{excludedOperators:["$ne"]}},{name:"Agent",column:"User",type:"autocomplete",options:{table:"i",route:{model:"user",action:"get",params:{role:"agent",fields:"id,name,fullname",nolimit:!0}},searchFields:["fullname","name"],extraOperators:["$substring"],excludedOperators:["$ne"]}},{name:"Account",column:"WhatsappAccountId",type:"multiselect",options:{route:{model:"user",action:"getWhatsappAccounts",params:{id:g.user.id,nolimit:!0}}}},{name:"Tags",column:"Tag",type:"multiselect",options:{route:{model:"tag",action:"get",params:{nolimit:!0}},excludedOperators:["$notIn"]}},{name:"Start Date",column:"createdAt",type:"date",options:{excludedOperators:["$ne"]}},{name:"Read",column:"unreadMessages",type:"select",values:[{id:1,translate:"DASHBOARDS.READ"},{id:0,translate:"DASHBOARDS.UNREAD"}],options:{excludedOperators:["$ne"]}},{name:"Disposition",column:"disposition",type:"multiselect",options:{routes:A("first")}},{name:"Second Disposition",column:"secondDisposition",type:"multiselect",options:{routes:A("second")}},{name:"Third Disposition",column:"thirdDisposition",type:"multiselect",options:{routes:A("third")}}]}}).catch(function(e){v.error(e)}).finally(function(){m.parseInteractionsKey("whatsapp",g.query,g.user.id,g.whatsappAccounts.rows).then(function(){g.isSearchBarVisible=!(g.query.search||!g.query.filter),y(g.query.page)}),d.on("whatsappInteraction:save",O),d.on("whatsappInteraction:update",O),d.on("whatsappInteractionTags:save",C),d.on("whatsappMessage:save",w),d.on("whatsappMessage:update",w),d.on("user_has_whatsapp_interactions:save",T),d.on("user_has_whatsapp_interactions:remove",I),d.on("userWhatsappAccount:save",f),d.on("userWhatsappAccount:remove",b),0<g.setting.whatsappInteractionsReloadTimeout&&R()})},g.success=E,g.getWhatsappInteractions=y,g.showWhatsappInteraction=function(e,n){a.$parent.vm.addInteractionTab("whatsapp",n)},g.downloadWhatsappInteraction=function(e,s,n){r.whatsappInteraction.download({id:s.id,attachments:n}).$promise.then(function(e){var n=[e.buffer],t="whatsapp-interaction"+s.id+".zip",a=new Blob(n,{type:e.type}),i=window.document.createElement("a");i.setAttribute("href",URL.createObjectURL(a)),i.setAttribute("download",t),document.body.appendChild(i),i.click()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n+=1)c.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else c.error({title:e.status?"API:"+e.status+" - "+e.statusText:"downloadWhatsappInteraction",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.disposeInteraction=function(e,n){var t=g.user.voicePause||g.user.chatPause||g.user.mailPause||g.user.openchannelPause||g.user.faxPause,a=!n.Account.mandatoryDisposition;i.show({controller:"DisposeInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/dispose/dialog.html",parent:angular.element(s.body),clickOutsideToClose:a,escapeToClose:a,onRemoving:function(){g.user&&n.Account.mandatoryDisposition&&!t&&r.user.unpause({id:g.user.id}).$promise.catch(function(e){v.error(e)})},locals:{user:g.user,channel:"whatsapp",interaction:n}})},g.getContactLabel=S,g.getAgentLabel=function(e){if(e.UserId)return e.UserId===g.user.id?o.instant("DASHBOARDS.ME"):e.Owner.fullname+" <"+e.Owner.internal+">";return o.instant("DASHBOARDS.NOT_ASSIGNED")},g.getWhatsappAccountLabel=function(e){if(e.Account)return e.Account.key;return o.instant("DASHBOARDS.UNKNOWN")},g.composeWhatsappInteraction=function(e,t){i.show({controller:"ComposeWhatsappInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/compose/whatsapp/dialog.html",parent:angular.element(s.body),clickOutsideToClose:!1,locals:{account:t,message:{},type:"new",interaction:{}},fullscreen:!0}).then(function(e){if(e){var n=e;return r.whatsappAccount.send({id:t.id},n).$promise.then(function(e){c.success({title:"Message properly sent!",msg:"Message has been sent!"}),a.$parent.vm.addInteractionTab("whatsapp",e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n++)c.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else c.error({title:e.status?"API:"+e.status+" - "+e.statusText:"WHATSAPPACCOUNT:SEND",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}})},g.openAdvancedSearch=function(){i.show({controller:"AdvancedSearchController",controllerAs:"vm",templateUrl:"app/core/dialogs/advanced-search/dialog.html",parent:angular.element(s.body),clickOutsideToClose:!1,locals:{color:g.sectionColor,fields:g.advancedSearch.fields,storagePath:"home.whatsapp"},fullscreen:!0}).then(function(e){g.isSearchBarVisible=!(e.value||!g.query.filter),e.apply&&(g.query.search=e.value,y())}).catch(function(e){c.error({title:"ERROR",msg:e.data?JSON.stringify(e.data.message):e.toString()})})};var v=p.getLogger("agent.general.whatsapp");function h(e){return{accounts:g.whatsappAccounts,accountId:e,filters:g.quickFilters,query:g.query,userId:g.user.id}}function f(e){if(e.UserId===g.user.id){var n=h(e.WhatsappAccountId);u.addAccount("whatsapp",n).then(function(e){e&&y()}).catch(function(e){v.error(e)})}}function b(e){if(e.UserId===g.user.id){var n=h(e.WhatsappAccountId);u.removeAccount("whatsapp",n).catch(function(e){v.error(e)})}}function A(n){var e=[{model:"disposition",action:"get",field:"name",params:{field:"name,level",level:n,MailAccountId:"null",SmsAccountId:"null",ChatWebsiteId:"null",OpenchannelAccountId:"null",WhatsappAccountId:"null",FaxAccountId:"null",ListId:"null",nolimit:!0}}],t=_.map(g.whatsappAccounts.rows,function(e){return{model:"whatsappAccount",action:"getDispositions",field:"name",params:{id:e.id,field:"name,level",level:n,nolimit:!0}}});return _.concat(t,e)}function E(e){!g.reloadingInteractions&&0<g.setting.whatsappInteractionsReloadTimeout&&R(!0),g.searchInProgress=!1,g.reloadingInteractions=!1,g.whatsappInteractions=e||{count:0,rows:[]};for(var n=0;n<g.whatsappInteractions.rows.length;n+=1)S(g.whatsappInteractions.rows[n])}function y(e){g.searchInProgress=!0,e||(g.query.page=1),g.query.offset=(g.query.page-1)*g.query.limit;var n=t.localStorage.getItem("motion2.home.whatsapp:"+g.user.id);(n=n?JSON.parse(n):{}).query=g.query,t.localStorage.setItem("motion2.home.whatsapp:"+g.user.id,JSON.stringify(n)),g.promise=r.whatsappInteraction.get(g.query,E).$promise}function S(e){e.contactInfo=e.Contact?e.Contact.mobile:void 0,"Unknown"===e.contactName&&(e.contactName=o.instant("DASHBOARDS.UNKNOWN"))}function T(e){var n=_.find(g.whatsappInteractions.rows,{id:e.WhatsappInteractionId});n&&n.Users&&(_.find(n.Users,{id:e.UserId})||n.Users.push({id:e.UserId}))}function I(e){var n=_.find(g.whatsappInteractions.rows,{id:e.WhatsappInteractionId});n&&n.Users&&_.remove(n.Users,{id:e.UserId})}function O(e){if(e){var n=_.find(g.whatsappInteractions.rows,{id:e.id});if(n){if(n.Users=[],e.closed&&(n.unreadMessages=0),g.query.sort){var t=_.startsWith(g.query.sort,"-")?"desc":"asc";g.whatsappInteractions.rows=_.orderBy(g.whatsappInteractions.rows,_.trimStart(g.query.sort,"-"),t)}_.merge(n,_.pick(e,_.keys(n)))}else 0===g.setting.whatsappInteractionsReloadTimeout&&y(g.query.page)}}function C(e){if(e){var n=_.find(g.whatsappInteractions.rows,{id:e.id});n&&(n.Tags=e.tags||[],_.merge(n,_.pick(e,_.keys(n))))}}function w(e){if(e&&!e.secret){var n=_.find(g.whatsappInteractions.rows,{id:e.WhatsappInteractionId});if(n){var t=_.find(n.Messages,{id:e.id});t?_.merge(t,_.pick(e,_.keys(t))):(_.isNil(n.Messages)&&(n.Messages={count:0}),e.read||(n.Messages.count+=1))}}}function R(e){e&&g.interactionsInterval&&n.cancel(g.interactionsInterval),g.interactionsInterval=n(function(){g.reloadingInteractions=!0,g.searchInProgress||y()},1e3*g.setting.whatsappInteractionsReloadTimeout)}a.$on("$destroy",function(){d.removeAllListeners("whatsappMessage:save"),d.removeAllListeners("whatsappMessage:update"),d.removeAllListeners("whatsappInteraction:save"),d.removeAllListeners("whatsappInteractionTags:save"),d.removeAllListeners("whatsappInteraction:update"),d.removeAllListeners("user_has_whatsapp_interactions:save"),d.removeAllListeners("user_has_whatsapp_interactions:remove"),g.interactionsInterval&&n.cancel(g.interactionsInterval)})}e.$inject=["$scope","$interval","$mdDialog","$document","$window","$translate","$q","api","Auth","socket","toasty","localStorageManager","agentAccountAssociationManager","ClientSideLoggingService"],angular.module("app.dashboards").controller("AgentHomeWhatsappController",e)}(),function(){"use strict";function e(e,n){var t=this;t.setting={},t.messages={count:0,rows:[]},t.showInteraction=!1,t.init=function(e,n){t.setting=n,t.tab=e,t.tab.saved=!0},t.getTrustedURL=function(){return n.trustAsResourceUrl(t.tab.src)}}e.$inject=["$scope","$sce"],angular.module("app.dashboards").controller("AgentGeneralIframeController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v){var h=this,f=25,b=1024*f*1024;function A(){var e=h.user.voicePause||h.user.chatPause||h.user.mailPause||h.user.openchannelPause||h.user.faxPause,n=!h.tab.interaction.Account.mandatoryDisposition;i.show({controller:"DisposeInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/dispose/dialog.html",parent:angular.element(t.body),clickOutsideToClose:n,escapeToClose:n,onRemoving:function(){h.user&&h.interaction.Account.mandatoryDisposition&&!e&&l.user.unpause({id:h.user.id}).$promise.catch(function(e){d.error(e.data?e.data.message:e.toString())})},locals:{user:h.user,channel:h.tab.channel,interaction:h.tab.interaction}}).then(function(e){h.tab.saved=Boolean(e),e&&a.$parent.$parent.$parent.vm.closeTab(h.tab)})}function E(e,n){h.tab.message=n,i.show({controller:"ComposeMailInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/compose/mail/dialog.html",parent:angular.element(t.body),clickOutsideToClose:!1,locals:{account:h.account,message:h.tab.message,type:e,interaction:h.interaction},fullscreen:!0,skipHide:Boolean(h.tab.spy)}).then(function(e){if(e)if(e.message&&e.message.savedAsDraft)h.draft?p.update({id:h.draft.id,channel:"mail",account:h.account,message:e.message,contact:h.contact,interaction:h.interaction}):p.add({channel:"mail",account:h.account,message:e.message,contact:h.contact,interaction:h.interaction}),h.draft=p.getByInteraction(h.tab.interaction.id);else{var n=e;n&&S(n),n.Interaction&&h.interaction&&h.interaction.id&&(n.Interaction.id=h.interaction.id,l.mailInteraction.update(n.Interaction).$promise.then(function(e){e&&e.closed?(h.tab.saved=!0,h.interaction.closed=!0,A()):null!==n.Interaction.substatus&&(h.tab.saved=!0,h.tab.interaction.substatus=n.Interaction.substatus,a.$parent.$parent.$parent.vm.closeTab(h.tab))}).catch(function(e){d.error(e.data?e.data.message:e.toString())}))}}).finally(function(){h.tab.isDraft=!1})}function y(){"mail"!==h.tab.channel&&n(function(){var e=angular.element(t.find("md-content[name*='interaction-content-"+h.tab.id+"']"));e&&e[0]&&(e[0].scrollTop=e[0].scrollHeight)},0)}function S(i){if(i)return i["chat"===h.tab.channel?"ChatWebsiteId":_.capitalize(h.tab.channel)+"AccountId"]=h.interaction["chat"===h.tab.channel?"ChatWebsiteId":_.capitalize(h.tab.channel)+"AccountId"],i[_.capitalize(h.tab.channel)+"InteractionId"]=h.interaction.id,i.UserId=h.user.id,i.ContactId=h.interaction.ContactId,i.direction="out",i.secret=Boolean(h.tab.spy||i.secret),l[h.tab.channel+"Message"].save(i).$promise.then(function(e){if(e&&e.id&&!_.isEmpty(i.attachments)){for(var n=[],t=0;t<i.attachments.length;t++){var a=i.attachments[t];a.MailMessageId?n.push(l.attachment.clone({id:a.id},{name:a.name,basename:a.basename,type:a.type,MailMessageId:e.id}).$promise):n.push(l.attachment.update({id:a.id},{MailMessageId:e.id}).$promise)}return s.all(n)}}).catch(function(e){d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:SENDMESSAGE",msg:e.data?JSON.stringify(e.data):e.toString()})}).finally(function(){"mail"===h.tab.channel&&i.isDraft&&(p.removeByInteraction(h.interaction.id),h.draft=null),h.tab.areaText="",y()})}function T(e){switch(h.tab.channel){case"mail":h.draft.content.originalMessage=e?_.find(h.interaction.Messages,["id",e]):h.interaction.Messages[h.interaction.Messages.length-1],E(h.draft.type,h.draft.content)}}function I(e){h.journeyIsLoading=!0;var n=_.merge(h.journeyOptions,{id:h.contact.id,offset:e||0});return g.get(h.journey,n).then(function(e){h.journey=e.journey,h.canLoadMoreJourney=e.loadMore}).finally(function(){h.journeyIsLoading=!1})}h.showFooter=!1,h.BTNLoadMore=0,h.showInteraction=!1,h.user=c.getCurrentUser(),h.detectBrowser=u.detectBrowser(),h.journey=[],h.acceptedMessages=[],h.ngFlowOptions={target:"api/attachments",singleFile:!0,maxChunkRetries:1,chunkSize:b,simultaneousUploads:1,testChunks:!1,progressCallbacksInterval:1e3,allowDuplicateUploads:!0},h.ngFlow={flow:{}},h.selectedMailShowDetails={},h.selectedMailShowSystemMessage={},h.setting={},h.ctrlMethods={},h.embedOptions={fontSmiley:!0,sanitizeHtml:!0,emoji:!0,link:!0,linkTarget:"_blank"},h.journeyOptions=g.getQuery(),h.quickFilters=g.getQuickFilters(),h.init=function(e,n){h.tab=e,h.tab.saved=!0,h.tab.badges=0,h.setting=n||{},h.tab&&h.tab.channel&&h.tab.interaction&&(h.interaction=h.tab.interaction,l[h.tab.channel+"Interaction"].get({id:h.tab.interaction.id,includeAll:!0}).$promise.then(function(e){return e&&(h.interaction=e,h.tab.interaction=e),h.tab.saved=h.interaction.closed,h.queryMessage={id:h.interaction.id,includeAll:!0},"mail"===h.tab.channel?(h.queryMessage.sort="-id",h.queryMessage.offset=0,h.queryMessage.limit=3,h.queryMessage.inlineCss=!0):(h.queryMessage.sort="id",h.queryMessage.nolimit=!0),l[h.tab.channel+"Interaction"].getMessages(h.queryMessage).$promise}).then(function(e){return e&&(h.BTNLoadMore=e.count-h.queryMessage.limit),h.messages=e||{count:0,rows:[]},l["chat"===h.tab.channel?"chatWebsite":h.tab.channel+"Account"].get({id:h.interaction["chat"===h.tab.channel?"ChatWebsiteId":_.capitalize(h.tab.channel)+"AccountId"]}).$promise}).then(function(e){if(h.account=e,h.tab.title=h.account.key||h.account.name,h.interaction.ContactId)return l.cmContact.get({id:h.interaction.ContactId}).$promise}).then(function(e){return e&&(h.contact=e),h.showInteraction=!0,h.contact?h.tab.title+=" - "+(h.user.privacyEnabled?v.mask(h.contact.firstName):h.contact.firstName):h.tab.title+=" - "+r.instant(h.tab.channel.toUpperCase()+".UNKNOWN"),l.user.get({fields:"id,fullname",nolimit:!0}).$promise}).then(function(e){h.users=e||{count:0,rows:[]},h.usersMap=_.mapValues(_.keyBy(h.users.rows,"id"),"fullname")}).then(function(){if(h.tab.channel&&h.interaction)return l.user["add"+_.upperFirst(h.tab.channel)+"Interactions"]({id:h.user.id,ids:[h.interaction.id]})}).then(function(){return l.mailSubstatus.get({sort:"name",nolimit:!0}).$promise}).then(function(e){h.subStatuses=e||{count:0,rows:[]}}).catch(function(){h.showInteraction=!0}).finally(function(){h.contact&&I(),function(){switch(h.user.role){case"admin":return h.downloadPermissions={attachments:!0,interactions:!0};case"agent":return h.downloadPermissions={attachments:h.user.downloadAttachments,interactions:h.user.downloadOmnichannelInteractions};case"user":l.userProfile.get({id:h.user.userProfileId,fields:"downloadAttachments,downloadOmnichannelInteractions"}).$promise.then(function(e){h.downloadPermissions={attachments:e.downloadAttachments,interactions:e.downloadOmnichannelInteractions}}).catch(function(){h.downloadPermissions={attachments:!1,interactions:!1}})}}(),function(){if(!h.tab.spy&&!h.interaction.closed){var t=[];if(h.messages.rows.forEach(function(e){if("in"===e.direction&&!e.read){var n=0===t.length;t.push(l[h.tab.channel+"Message"].accept({id:e.id,UserId:h.user.id,manual:n}).$promise),h.acceptedMessages.push(e.id)}}),"mail"===h.tab.channel){var e=_(h.interaction.Messages).filter({read:!1,direction:"in"}).differenceBy(h.messages.rows,"id").value();e.forEach(function(e){t.push(l.mailMessage.accept({id:e.id,UserId:h.user.id}).$promise),h.acceptedMessages.push(e.id)})}s.all(t)}}(),y(),m.on(h.tab.channel+"Message:save",h.onMessageSave),m.on(h.tab.channel+"Message:update",h.onMessageSave),m.on(h.tab.channel+"Interaction:save",h.onInteractionSave),m.on(h.tab.channel+"Interaction:update",h.onInteractionSave),m.on("user_has_"+h.tab.channel+"_interactions:save",h.onInteractionOpen),m.on("user_has_"+h.tab.channel+"_interactions:remove",h.onInteractionClose),h.tab.areaText=h.tab.areaText?h.tab.areaText:"",h.showFooter=!0,"mail"===h.tab.channel&&(h.draft=p.getByInteraction(h.tab.interaction.id),h.tab.isDraft&&(h.tab.interaction.closed?(p.removeByInteraction(h.tab.interaction.id),h.draft=null):T()))}))},h.getLabelByMessage=function(e){var n="loading...";if(e)return"in"===e.direction?e.Contact?e.Contact.firstName||"Anonymous":n:e.UserId?h.usersMap?h.usersMap[e.UserId]:n:"System"},h.openContact=function(e,n){try{h.tab&&!h.tab.spy&&a.$parent.$parent.$parent.vm.addContactTab(n||h.contact)}catch(e){d.error({title:"ERROR OPEN CONTACT",msg:"Unable to open the contact"})}},h.openInteraction=function(e){try{if(e.MailAccountId)return a.$parent.$parent.$parent.vm.addInteractionTab("mail",e);if(e.ChatWebsiteId)return a.$parent.$parent.$parent.vm.addInteractionTab("chat",e);if(e.SmsAccountId)return a.$parent.$parent.$parent.vm.addInteractionTab("sms",e);if(e.WhatsappAccountId)return a.$parent.$parent.$parent.vm.addInteractionTab("whatsapp",e);if(e.OpenchannelAccountId)return a.$parent.$parent.$parent.vm.addInteractionTab("openchannel",e);if(e.FaxAccountId)return a.$parent.$parent.$parent.vm.addInteractionTab("fax",e)}catch(e){d.error({title:"ERROR OPEN INTERACTION",msg:"Customer Journey can't open the interaction"})}},h.disposeInteraction=A,h.tagInteraction=function(){i.show({controller:"TagInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/tag/dialog.html",parent:angular.element(t.body),clickOutsideToClose:!0,skipHide:Boolean(h.tab.spy),resolve:{tags:["apiResolver",function(e){return e.resolve("tag@get",{sort:"name",nolimit:!0,fields:"id,name,color"})}]},locals:{channel:h.tab.channel,interaction:h.tab.interaction}})},h.composeMailInteraction=function(n,e){if(e.inReplyTo){var t=_.find(h.messages.rows,{messageId:e.inReplyTo});if(!t)return l.mailMessage.get({messageId:e.inReplyTo}).$promise.then(function(e){E(n,e&&e.count?e.rows[0]:void 0)}).catch(function(e){d.error(e.data?e.data.message:e.toString()),E(n,void 0)});E(n,t)}else E(n,e)},h.composeFaxInteraction=function(e){var n={to:[]};n.to.push(h.contact.fax),i.show({controller:"ComposeFaxInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/compose/fax/dialog.html",parent:angular.element(t.body),clickOutsideToClose:!1,locals:{account:h.account,message:n,type:e},fullscreen:!0}).then(function(e){return l.faxAccount.send({id:h.account.id},e).$promise.then(function(e){d.success({title:"Message properly sent!",msg:"Message has been sent!"}),a.$parent.vm.addInteractionTab("fax",e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n++)d.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else d.error({title:"FAX:SEND",msg:e.data?JSON.stringify(e.data):e.message||e.toString()})})})},h.composeSmsInteraction=function(e,n){i.show({controller:"ComposeSmsInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/compose/sms/dialog.html",parent:angular.element(t.body),clickOutsideToClose:!1,locals:{account:h.account,message:n,type:e},fullscreen:!0,skipHide:Boolean(h.tab.spy)}).then(function(e){e&&S(e)})},h.composeWhatsappInteraction=function(e,n){i.show({controller:"ComposeWhatsappInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/compose/whatsapp/dialog.html",parent:angular.element(t.body),clickOutsideToClose:!1,locals:{account:h.account,message:n,type:e},fullscreen:!0,skipHide:Boolean(h.tab.spy)}).then(function(e){e&&S(e)})},h.composeChatInteraction=function(e,n){i.show({controller:"ComposeChatInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/compose/chat/dialog.html",parent:angular.element(t.body),clickOutsideToClose:!1,locals:{account:h.account,message:n,type:e},fullscreen:!0,skipHide:Boolean(h.tab.spy)}).then(function(e){e&&S(e)})},h.composeOpenchannelInteraction=function(e,n){i.show({controller:"ComposeOpenchannelInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/compose/openchannel/dialog.html",parent:angular.element(t.body),clickOutsideToClose:!1,locals:{account:h.account,message:n,type:e},fullscreen:!0,skipHide:Boolean(h.tab.spy)}).then(function(e){e&&S(e)})},h.transferLastMessage=function(){if(h.interaction){var e=_.findLast(h.messages.rows,function(e){return"in"===e.direction});e?i.show({controller:"TransferMessageDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/transfer/dialog.html",parent:angular.element(t.body),clickOutsideToClose:!1,locals:{account:h.account,interaction:h.interaction,message:e,channel:h.tab.channel},resolve:{agents:["apiResolver",function(e){var n={fields:"id,name",$id:{ne:h.user.id},role:"agent",online:!0,sort:"name",nolimit:!0};return n[h.tab.channel+"Pause"]=!1,e.resolve("user@get",n)}],queues:["apiResolver",function(e){return e.resolve(h.tab.channel+"Queue@get",{fields:"id,name",sort:"name",nolimit:!0})}]}}).then(function(e){h.tab.saved=Boolean(e),e&&a.$parent.$parent.$parent.vm.closeTab(h.tab)}):d.error({title:"Invalid transfer",msg:"Message not found!"})}},h.downloadMessage=function(s,e){h.tab.channel&&s.id&&l[h.tab.channel+"Message"].download({id:s.id,attachments:e}).$promise.then(function(e){var n=[e.buffer],t="download",a=new Blob(n,{type:e.type});t=h.tab.channel+"-message"+s.id+".eml";var i=window.document.createElement("a");i.setAttribute("href",URL.createObjectURL(a)),i.setAttribute("download",t),document.body.appendChild(i),i.click()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n+=1)d.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.downloadMessage.get",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},h.downloadInteraction=function(s,e){h.tab.channel&&s.id&&l[h.tab.channel+"Interaction"].download({id:s.id,attachments:e}).$promise.then(function(e){var n=[e.buffer],t=h.tab.channel+"-interaction"+s.id+".zip",a=new Blob(n,{type:e.type}),i=window.document.createElement("a");i.setAttribute("href",URL.createObjectURL(a)),i.setAttribute("download",t),document.body.appendChild(i),i.click()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n+=1)d.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.inteactionMessage.get",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},h.openDraft=T,h.createVidaooSession=function(e){var n={id:e.id,account:e.Account,contact:e.Contact};return l.chatInteraction.createVidaooSession(n).$promise.then(function(){d.success({title:"Start Video Call",msg:"Session properly created."})}).catch(function(){d.error({title:"Start Video Call",msg:"Unable to create session!"})})},h.reply=function(e,n){if(e&&13===e.keyCode&&e.shiftKey)return;if(e&&13!==e.keyCode)return;if(""===n.trim())return;S(function(e){var n={},t="chat"===h.tab.channel?"ChatWebsiteId":_.capitalize(h.tab.channel)+"AccountId";n[t]=h.interaction[t].toString(),n[_.capitalize(h.tab.channel)+"InteractionId"]=h.interaction.id,("sms"===h.tab.channel||"whatsapp"===h.tab.channel)&&(n.phone=h.interaction.phone);e&&(n.UserId=h.user.id,n.ContactId=h.interaction.ContactId,n.body=e);return n}(n.trim()))},h.upload=function(){h.ngFlow.flow.opts.headers={"X-Requested-With":"XMLHttpRequest",Authorization:"Bearer "+e.get("motion.token")},h.ngFlow.flow.upload()},h.fileAdded=function(e){if(e.size>b)return d.error({title:"File too big",msg:"The max allowed size is "+f+"MB"}),!1;return!0},h.fileSuccess=function(e,n){var t=JSON.parse(n),a=t.name;"chat"===h.tab.channel&&(a='<a href="'+(h.account.remote?h.account.remote:o.protocol()+"://"+o.host())+"/api/chat/interactions/"+h.interaction.id+"/attachment_download?attachId="+t.id+"&token="+h.account.token+'" target="_self">'+t.name+"</a>");S({body:a,AttachmentId:t.id})},h.onMessageSave=function(e){if(e&&h.interaction.id!=e[_.capitalize(h.tab.channel)+"InteractionId"])return;var n=!1;h.messages?n=_.find(h.messages.rows,{id:e.id}):h.messages={rows:[],count:0};n?_.merge(n,e):("mail"===h.tab.channel?h.messages.rows.unshift(e):h.messages.rows.push(e),y())},h.onInteractionSave=function(e){if(e&&h.interaction.id!==e.id)return;e.closed&&(h.tab.saved=!0);_.merge(h.interaction,e)},h.searchTextChange=function(n){var t=s.defer(),a=[],e={},i="chat"===h.tab.channel?"ChatWebsiteId":_.capitalize(h.tab.channel)+"AccountId";return e.filter=n,e[i]=h.account.id,l.cannedAnswer.get(e).$promise.then(function(e){return a=_.concat(a,e.rows),l.cannedAnswer.get({filter:n}).$promise}).then(function(e){a=_.concat(a,_.filter(e.rows,function(e){return!(e.MailAccountId||e.FaxAccountId||e.SmsAccountId||e.WhatsappAccountId||e.OpenchannelAccountId||e.ChatWebsiteId)})),t.resolve(a)}).catch(function(e){t.reject(e)}),t.promise},h.selectedItemChange=function(n){if(n){try{_.templateSettings.interpolate=/{{([\s\S]+?)}}/g;var e=_.template(n.value),t={user:h.user,account:h.account,interaction:h.interaction,contact:h.interaction&&h.interaction.Contact?h.interaction.Contact:{}};""!==h.tab.areaText&&(h.tab.areaText+=" "),h.tab.areaText+=e(t),h.ctrlMethods.setText(h.tab.areaText)}catch(e){""!==h.tab.areaText&&(h.tab.areaText+=" "),h.tab.areaText+=n.value,h.ctrlMethods.setText(h.tab.areaText)}h.selectedItem=null,h.changeDisplayCannedAnswerInputValue()}},h.getMessagesAlignment=function(e){if(e.secret&&h.user.id!=e.UserId)return"in";switch(h.setting.messagesAlignment){case"left":return"in"==e.direction?e.direction:"out-left-aligned";case"right":return"in"==e.direction?"in-right-aligned":e.direction;default:return e.direction}},h.displayCannedAnswerInput=!1,h.changeDisplayCannedAnswerInputValue=function(){h.displayCannedAnswerInput=!h.displayCannedAnswerInput},h.setAs=function(e){h.tab.channel&&h.interaction&&h.interaction.id&&l[h.tab.channel+"Interaction"].update({id:h.interaction.id,substatus:e}).$promise.catch(function(e){d.error(e.data?e.data.message:e.toString())})},h.markAsUnread=function(){if(h.tab.channel&&h.interaction&&h.interaction.id)if(h.acceptedMessages.length)for(var e=0;e<h.acceptedMessages.length;e+=1)l[h.tab.channel+"Message"].update({id:h.acceptedMessages[e],read:!1,UserId:null});else for(var n=0;n<h.messages.rows.length;n+=1)if("in"===h.messages.rows[n].direction){h.messages.rows[n].UserId===h.user.id?l[h.tab.channel+"Message"].update({id:h.messages.rows[n].id,read:!1,UserId:null}):d.error({title:"You can't mark as unread",msg:"You are not the owner of the last message!"});break}h.tab.saved=!0,a.$parent.$parent.$parent.vm.closeTab(h.tab)},h.getAttachments=function(n){return l.attachment.get({MailMessageId:n.id}).$promise.then(function(e){e&&e.rows&&(n.attachments=e.rows)}).catch(function(e){d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"ATTACHMENTS:GET",msg:e.data?JSON.stringify(e.data):e.toString()})})},h.getAttachment=function(i){return l.attachment.download({id:i.id}).$promise.then(function(e){if(e){var n=new Blob([e.buffer],{type:e.type}),t=document.createElement("a"),a=window.URL.createObjectURL(n);t.href=a,t.target="_self",t.download=i.name,document.body.appendChild(t),t.click(),setTimeout(function(){document.body.removeChild(t),window.URL.revokeObjectURL(a)},100)}}).catch(function(e){d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"ATTACHMENTS:GET",msg:e.data?JSON.stringify(e.data):e.toString()})})},h.htmlToPlaintext=function(e){return e?String(e).replace(/<[^>]+>/gm,""):""},h.onInteractionOpen=function(e){var n;h.interaction.id==e[_.upperFirst(h.tab.channel)+"InteractionId"]&&(h.interaction.Users&&(n=_.find(h.interaction.Users,{id:e.UserId})),n||h.interaction.Users.push({id:e.UserId}))},h.onInteractionClose=function(e){h.interaction.id==e[_.upperFirst(h.tab.channel)+"InteractionId"]&&h.interaction.Users&&_.remove(h.interaction.Users,{id:e.UserId})},h.getCustomerJourney=I,h.loadNextPage=function(){var t=s.defer();if(h.queryMessage)return h.queryMessage.offset=h.messages.rows.length,l[h.tab.channel+"Interaction"].getMessages(h.queryMessage).$promise.then(function(e){for(var n=0;n<e.rows.length;n+=1)h.messages.rows.push(e.rows[n]),h.interaction.closed||"in"!==e.rows[n].direction||e.rows[n].read||(l[h.tab.channel+"Message"].accept({id:e.rows[n].id,UserId:h.user.id}),h.acceptedMessages.push(e.rows[n].id));return 0<e.rows.length&&(h.BTNLoadMore=h.BTNLoadMore-e.rows.length),t.resolve(e)}).catch(function(e){return t.reject(e)});return t.reject()},h.interactionTimelineOptions={scrollEl:"#interaction-content"},h.loadMoreJourney=function(){return s(function(e){var n=h.journey.length;return e(I(n))})},h.journeyTimelineOptions={scrollEl:"#journey-content"},a.$on("$destroy",function(){m.removeAllListeners(h.tab.channel+"Message:save"),m.removeAllListeners(h.tab.channel+"Message:update"),m.removeAllListeners(h.tab.channel+"Interaction:save"),m.removeAllListeners(h.tab.channel+"Interaction:update"),m.removeAllListeners("user_has_"+h.tab.channel+"_interactions:save"),m.removeAllListeners("user_has_"+h.tab.channel+"_interactions:remove")})}function n(a){return{scope:{ngBindHtmlUnsafe:"="},template:"<div ng-bind-html='trustedHtml'></div>",link:function(t){t.updateView=function(){var e,n=_.replace(t.ngBindHtmlUnsafe,'<div id="xm-mail-content"','<a style="cursor:pointer" class="toggle-details md-accent-color" onclick="document.getElementById(\''+(e="xm-mail-content-"+Math.floor(9999*Math.random()+1))+"').style.display='block'; this.parentNode.removeChild(this)\">See More</a><div id=\""+e+'" style="display:none"');t.trustedHtml=a.trustAsHtml(n)},t.$watch("ngBindHtmlUnsafe",function(e){t.updateView(e)})}}}e.$inject=["$cookies","$timeout","$document","$scope","$mdDialog","$q","$location","$translate","api","toasty","Auth","socket","msUtils","draftManager","customerJourneyManager","privacyManager"],n.$inject=["$sce"],angular.module("app.dashboards").directive("ngBindHtmlUnsafe",n).controller("AgentGeneralInteractionController",e)}(),function(){"use strict";angular.module("app.dashboards").factory("Emojis",function(){return{watchEmbedData:!1,sanitizeHtml:!1,fontSmiley:!1,emoji:!0,link:!0,linkTarget:"_blank",pdf:{embed:!0},image:{embed:!0},audio:{embed:!0},basicVideo:!1,gdevAuth:"xxxxxxxx",video:{embed:!1,width:null,height:null,ytTheme:"dark",details:!1,thumbnailQuality:"medium",autoPlay:!0},twitchtvEmbed:!0,dailymotionEmbed:!0,tedEmbed:!0,dotsubEmbed:!0,liveleakEmbed:!0,ustreamEmbed:!0,soundCloudEmbed:!0,soundCloudOptions:{height:160,themeColor:"f50000",autoPlay:!1,hideRelated:!1,showComments:!0,showUser:!0,showReposts:!1,visual:!1,download:!1},spotifyEmbed:!0,tweetEmbed:!0,tweetOptions:{maxWidth:550,hideMedia:!1,hideThread:!1,align:"none",lang:"en"},code:{highlight:!0,lineNumbers:!1},codepenEmbed:!0,codepenHeight:300,jsfiddleEmbed:!0,jsfiddleHeight:300,jsbinEmbed:!0,jsbinHeight:300,plunkerEmbed:!0,githubgistEmbed:!0,ideoneEmbed:!0,ideoneHeight:300}})}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u){var p=this;switch(p.currentUser=u.getCurrentUser(),p.errors=[],p.separatorKeys=[i.KEY_CODE.ENTER,i.KEY_CODE.COMMA,i.KEY_CODE.TAB],p.searchTextChange=function(n){var t=c.defer(),a=[];return l.cannedAnswer.get({filter:n,ChatAccountId:s.id}).$promise.then(function(e){return a=_.concat(a,e.rows),l.cannedAnswer.get({filter:n}).$promise}).then(function(e){a=_.concat(a,_.filter(e.rows,function(e){return!(e.MailAccountId||e.FaxAccountId||e.SmsAccountId||e.WhatsappAccountId||e.OpenchannelAccountId||e.ChatWebsiteId)})),t.resolve(a)}).catch(function(e){t.reject(e)}),t.promise},p.selectedItemChange=function(n){if(n){try{_.templateSettings.interpolate=/{{([\s\S]+?)}}/g;var e=_.template(n.value),t={user:p.currentUser,account:s};p.message.body+=" "+e(t),p.ctrlMethods.setText(p.message.body)}catch(e){p.message.body+=" "+n.value,p.ctrlMethods.setText(p.message.body)}p.selectedItem=null}},p.note=function(){p.secret=!0},p.addNote=function(){p.message.body&&a.hide({secret:!0,body:p.message.body})},p.ctrlMethods={},p.message={from:s.phone,to:_.isNil(o.to)||_.isEmpty(o.to)?[]:o.to,body:""},p.send=function(e){p.message.to&&p.message.body&&(p.message.to.length?(n=p.message.body,a.hide({to:p.message.to.join(","),body:n})):d.error("To is mandatory"));var n},p.getContact=function(e){var n="";e.firstName&&e.firstName!==e.mobile&&(n+=e.firstName+" ");e.lastName&&e.lastName!==e.mobile&&(n+=e.lastName+" ");return n+="<"+e.mobile+">"},p.closeDialog=function(){a.cancel()},p.contactSearch=function(e){if(s&&s.ListId)return l.cmContact.get({ListId:s.ListId,nolimit:!0,filter:e,fields:"firstName,lastName,mobile"}).$promise.then(function(e){return e.rows});return[]},p.transformContact=function(e){var n=e;if(_.isObject(n))return e.mobile;if(t=n,/^(\+|\d)[0-9]{7,16}$/.test(t))return n;var t;return d.error("Mobile "+n+" is not valid"),null},r){case"note":p.note()}}e.$inject=["$cookies","$timeout","$window","$mdDialog","$mdConstant","account","message","type","api","toasty","$q","$translate","Auth"],angular.module("app.dashboards").controller("ComposeChatInteractionDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d){var c=this,m=25,u=1024*m*1024;c.separatorKeys=[a.KEY_CODE.ENTER,a.KEY_CODE.COMMA,a.KEY_CODE.TAB],c.message={from:i.localstationid,to:_.isNil(s.to)||_.isEmpty(s.to)?[]:s.to,attachments:[]},c.ngFlowOptions={target:"api/attachments",singleFile:!0,maxChunkRetries:1,chunkSize:u,simultaneousUploads:1,testChunks:!1,progressCallbacksInterval:1e3,allowDuplicateUploads:!0},c.ngFlow={flow:{}},c.send=function(e){1===c.message.attachments.length?c.message.to.length?(s.draft=void 0,t.hide({from:c.message.from,to:c.message.to,attach:c.message.attachments.length,attachments:c.message.attachments})):l.error("To is mandatory"):l.error("Attachment is mandatory")},c.upload=function(){c.ngFlow.flow.opts.headers={"X-Requested-With":"XMLHttpRequest",Authorization:"Bearer "+e.get("motion.token")},c.ngFlow.flow.upload()},c.fileSuccess=function(e,n){try{(n=JSON.parse(n)).size=e.size,c.message.attachments.push(n)}catch(e){console.error(e)}},c.fileAdded=function(e){var n=["pdf","tif"];if(!_.includes(n,e.getExtension()))return l.error({title:"Invalid extension: "+e.getExtension(),msg:"Supported extensions: "+n.join()}),!1;if(e.size>u)return l.error({title:"File too big",msg:"The max allowed size is "+m+"MB"}),!1;return!0},c.getContact=function(e){var n="";e.firstName&&e.firstName!==e.fax&&(n+=e.firstName+" ");e.lastName&&e.lastName!==e.fax&&(n+=e.lastName+" ");return n+="<"+e.fax+">"},c.contactSearch=function(e){return i&&i.ListId?r.cmContact.get({ListId:i.ListId,nolimit:!0,filter:e,fields:"firstName,lastName,fax"}).$promise.then(function(e){return e.rows}):[]},c.transformContact=function(e){var n=e;if(_.isObject(e))return e.fax;if(t=n,!/[&\/\\#,()$~%.'":;*?<>{}\s\\|a-zA-Z\pS!òàùè…_§°çéì-]/.test(t))return n;var t;return l.error("Fax "+n+" is not valid"),null},c.closeDialog=function(){s.draft=c.message,t.cancel()}}e.$inject=["$cookies","$window","$mdDialog","$mdConstant","account","message","type","api","toasty","$q"],angular.module("app.dashboards").controller("ComposeFaxInteractionDialogController",e)}(),function(){"use strict";function e(n,e,i,t,a,s,o,r,l,d,c,m,u,p){var g=this,v=25,h=1024*v*1024;g.currentUser=m.getCurrentUser(),g.secret="note"===r,g.hiddenCC=!0,g.hiddenBCC=!0,g.verifySmtp=!0,g.errors=[],g.separatorKeys=[t.KEY_CODE.ENTER,t.KEY_CODE.COMMA,t.KEY_CODE.TAB],g.searchTextChange=function(n){var t=c.defer(),a=[];return l.cannedAnswer.get({filter:n,MailAccountId:s.id}).$promise.then(function(e){return a=_.concat(a,e.rows),l.cannedAnswer.get({filter:n}).$promise}).then(function(e){a=_.concat(a,_.filter(e.rows,function(e){return!(e.MailAccountId||e.FaxAccountId||e.SmsAccountId||e.WhatsappAccountId||e.OpenchannelAccountId||e.ChatWebsiteId)})),t.resolve(a)}).catch(function(e){t.reject(e)}),t.promise},g.selectedItemChange=function(n){if(n&&n.value&&g.ckEditorInstance)try{var e=_.template(n.value),t={user:g.currentUser,account:s,interaction:u,contact:u&&u.Contact?u.Contact:{}};g.ckEditorInstance.insertHtml(e(t))}catch(e){console.error(e),g.ckEditorInstance.insertHtml(n.value)}document.getElementById("html-area").focus(),g.selectedItem=null},g.onReadyEditor=function(e){try{g.ckEditorInstance=CKEDITOR.instances["html-area"]}catch(e){console.error("Unable to get Html Editor instance",e)}},_.templateSettings.interpolate=/{{([\s\S]+?)}}/g,g.fromTemplate=_.template("{{ name }} <{{ email }}>"),g.replyTemplate=_.template("On {{ date }}, at {{ time }}, {{ from }} wrote:"),g.forwardTemplate=_.template("Begin forwarded message:<br><br><strong>From:</strong> {{ from }}<br><strong>Subject:</strong> {{ subject }}<br><strong>Date:</strong> {{ date }}, at {{ time }}<br><strong>To:</strong> {{ to }}"),g.message={from:g.fromTemplate({name:s.name,email:s.email||s.Smtp.user}),to:[],cc:[],bcc:[],body:S(),type:r,attachments:[],showLastMessage:!0},g.draft=null,g.ckeditor={skin:"office2013",startupFocus:!0,language:"en",allowedContent:!0,extraPlugins:"font,colorbutton,autogrow,autoembed,autocorrect,googlethisterm,pastebase64",toolbarGroups:[{name:"styles",groups:["styles"]},{name:"clipboard",groups:["undo"]},{name:"colors",groups:["colors"]},{name:"basicstyles",groups:["basicstyles"]},{name:"paragraph",groups:["list","indent","align"]}],autoGrow_onStartup:!0,autoGrow_minHeight:g.secret?160:300,autoGrow_maxHeight:e.innerHeight-400,autocorrect_enabled:!0,disableNativeSpellChecker:!1,enterMode:CKEDITOR.ENTER_BR,font_defaultLabel:s.fontFamily?s.fontFamily.split(",")[0]:"Arial",fontSize_defaultLabel:s.fontSize||"12",removePlugins:"magicline"};for(var f=[],b=8;b<=72;b++)f.push(b+"/"+b+"pt");g.ckeditor.fontSize_sizes=f.join(";"),g.ngFlowOptions={target:"api/attachments",singleFile:!0,maxChunkRetries:1,chunkSize:h,simultaneousUploads:1,testChunks:!1,progressCallbacksInterval:1e3,allowDuplicateUploads:!0},g.ngFlow={flow:{}},g.reply=function(e){angular.isDefined(o)&&(g.message.type="reply",g.message.to="in"===o.direction?o.from.split(","):o.to.split(","),g.message.subject=_.startsWith(o.subject,"Re:")?o.subject:"Re: "+o.subject,g.message.inReplyTo=o.messageId,g.message.body=S(),g.message.attachments=[],e&&o.cc&&(g.hiddenCC=!1,g.message.cc=o.cc.split(",")),g.message.showLastMessage=!1)},g.newMail=function(){angular.isDefined(o)&&(g.message.type="new",g.message.to=o.to?o.to.split(","):[])},g.forward=function(){if(angular.isDefined(o)){if(g.message.type="forward",g.message.subject=_.startsWith(o.subject,"Fwd:")?o.subject:"Fwd: "+o.subject,g.message.body=S(),o.Attachments&&o.Attachments.length)for(var e=0;e<o.Attachments.length;e++)g.message.attachments.push(o.Attachments[e]);g.message.showLastMessage=!1}},g.editDraft=function(){g.isDraft=!0,angular.isDefined(o)&&(o.savedAsDraft=!1,g.message=angular.copy(o),_.isEmpty(g.message.cc)||(g.hiddenCC=!1),_.isEmpty(g.message.bcc)||(g.hiddenBCC=!1))},g.send=function(e,n,t){if(!A&&g.message.to&&g.message.body)if(g.message.to.length)if(_.isEmpty(g.message.subject)){var a=i.confirm({skipHide:!0}).title("Warning").textContent("This message has no subject. Are you sure you want to send it?").ariaLabel("Warning").targetEvent(e).ok("Send Anyway").cancel("Cancel");i.show(a).then(function(){E(n,t)})}else E(n,t);else d.error("To is mandatory");A=!1},g.note=function(){g.type="note",g.secret=!0,g.message.body='<div style="font-family:'+s.fontFamily+";font-size:"+s.fontSize+'pt"><p></p></div>'},g.addNote=function(){g.message.body&&i.hide({secret:!0,body:g.message.body,attach:g.message.attachments.length,attachments:g.message.attachments})},g.upload=function(e){g.ngFlow.flow.opts.headers={"X-Requested-With":"XMLHttpRequest",Authorization:"Bearer "+n.get("motion.token")},g.ngFlow.flow.upload()},g.fileSuccess=function(e,n){try{(n=JSON.parse(n)).size=e.size,g.message.attachments.push(n)}catch(e){console.error(e)}},g.removeAttachment=function(e){g.message.attachments=_.reject(g.message.attachments,{id:e.id}),e.MailMessageId||l.attachment.delete({id:e.id}).$promise.catch(function(e){d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.attachment.delete",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.fileAdded=function(e){if(e.size>h)return d.error({title:"File too big",msg:"The max allowed size is "+v+"MB"}),!1;return!0},g.getContact=function(e){var n="";e.firstName&&e.firstName!==e.email&&(n+=e.firstName+" ");e.lastName&&e.lastName!==e.email&&(n+=e.lastName+" ");return n+="<"+e.email+">"},g.contactSearch=function(e){return s&&s.ListId?l.cmContact.get({ListId:s.ListId,nolimit:!0,filter:e,fields:"firstName,lastName,email"}).$promise.then(function(e){return e.rows}):[]},g.transformContact=function(e,n){if(_.isObject(e))return(g.contact=e).email;if(_.isString(e)){if(y(e))return g.contact={email:e},e;for(var t=e.split(","),a=0;a<t.length;a+=1)y(t[a])?_.isArray(n)&&_.indexOf(n,t[a])<0&&n.push(t[a]):d.error("Email "+t[a]+" is not valid");return g.contact={email:e.split(",")[0]},null}return d.error("Email field is not valid"),null},g.saveDraft=function(){g.message.savedAsDraft=!0,g.draft=p.getByInteraction(u.id);var e={account:s,message:g.message,contact:g.contact,interaction:u};if(g.draft&&!g.isDraft){var n=i.confirm({skipHide:!0}).title(a.instant("DASHBOARDS.DRAFT_SAVE_WARNING_TITLE")).content(a.instant("DASHBOARDS.DRAFT_SAVE_WARNING_MESSAGE")).ariaLabel("Save draft").ok(a.instant("DASHBOARDS.OVERWRITE")).cancel(a.instant("DASHBOARDS.CANCEL"));i.show(n).then(function(){i.hide(e)})}else i.hide(e)},g.closeDialog=function(){i.cancel()},g.loadLastMessage=function(){g.message.body+=T(g.message.type)};var A=!(g.keyPress=function(e){13===e.keyCode&&(A=!0)});switch(r){case"reply":g.reply(!1);break;case"replyAll":g.reply(!0);break;case"forward":g.forward();break;case"draft":g.editDraft();break;case"new":g.newMail();break;case"note":g.note()}function E(e,n){var t={from:g.message.from,to:g.message.to.join(","),cc:g.message.cc.join(","),bcc:g.message.bcc.join(","),subject:g.message.subject,body:g.message.showLastMessage?g.message.body:g.message.body+T(g.message.type),inReplyTo:g.message.inReplyTo,attach:g.message.attachments.length,attachments:g.message.attachments,Interaction:{lastMsgDirection:"out",substatus:n},isDraft:g.isDraft};t.html='<div id="xm-mail-content">'+_.replace(t.body,'<div id="xm-mail-content"',"<div")+"</div>",e&&(t.Interaction.closed=!0),i.hide(t)}function y(e){return/^(([^<>()\[\]\\.,;:\s@"]+(\.[^<>()\[\]\\.,;:\s@"]+)*)|(".+"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/.test(e)}function S(){return'<div style="font-family:'+s.fontFamily+";font-size:"+s.fontSize+'pt">'+function(){if(_.isNil(s.template))return"";try{return _.template(s.template)({user:g.currentUser,account:s,interaction:u,contact:u&&u.Contact?u.Contact:{}})}catch(e){return console.error(e),""}}()+"</div>"}function T(e){var n='<div id="xm-mail-content"><blockquote type="cite">';switch(e){case"reply":case"replyAll":n+=g.replyTemplate({date:moment(o.createdAt).format("D MMM YYYY")||"",time:moment(o.createdAt).format("HH:mm")||"",from:_.escape(o.from)||""});break;case"forward":n+=g.forwardTemplate({date:moment(o.createdAt).format("D MMM YYYY")||"",time:moment(o.createdAt).format("HH:mm")||"",from:_.escape(o.from)||"",to:_.escape(o.to)||"",subject:_.escape(o.subject)||""})}var t,a,i=g.message.showLastMessage&&o.originalMessage||g.isDraft?o.originalMessage.body:o.body;return n+="<br><br>",n+=(t=i?_.replace(i,'<div id="xm-mail-content"',"<div"):"",(a=t.match(/\<body[^>]*\>([^]*)\<\/body/m))?a[1]:t),n+="</blockquote></div>",e?n:""}l.mailSubstatus.get({nolimit:!0}).$promise.then(function(e){g.subStatuses=e||{count:0,rows:[]}}).catch(function(e){console.error(e)}),g.secret||l.mailAccount.verifySmtp({id:s.id}).$promise.catch(function(e){g.verifySmtp=!1,g.errors.push({message:e.data,type:e.status}),g.errors.push({message:"You can't reply or send an email. Please contact the administrator!",type:"500"})})}e.$inject=["$cookies","$window","$mdDialog","$mdConstant","$translate","account","message","type","api","toasty","$q","Auth","interaction","draftManager"],angular.module("app.dashboards").controller("ComposeMailInteractionDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u){var p=this;switch(p.currentUser=u.getCurrentUser(),p.errors=[],p.separatorKeys=[i.KEY_CODE.ENTER,i.KEY_CODE.COMMA,i.KEY_CODE.TAB],p.searchTextChange=function(n){var t=c.defer(),a=[];return l.cannedAnswer.get({filter:n,OpenchannelAccountId:s.id}).$promise.then(function(e){return a=_.concat(a,e.rows),l.cannedAnswer.get({filter:n}).$promise}).then(function(e){a=_.concat(a,_.filter(e.rows,function(e){return!(e.MailAccountId||e.FaxAccountId||e.SmsAccountId||e.WhatsappAccountId||e.OpenchannelAccountId||e.ChatWebsiteId)})),t.resolve(a)}).catch(function(e){t.reject(e)}),t.promise},p.selectedItemChange=function(n){if(n){try{_.templateSettings.interpolate=/{{([\s\S]+?)}}/g;var e=_.template(n.value),t={user:p.currentUser,account:s};p.message.body+=""===p.message.body.trim()?e(t):" "+e(t),p.ctrlMethods.setText(p.message.body)}catch(e){p.message.body+=""===p.message.body.trim()?n.value:" "+n.value,p.ctrlMethods.setText(p.message.body)}p.selectedItem=null}},p.note=function(){p.secret=!0},p.addNote=function(){p.message.body&&a.hide({secret:!0,body:p.message.body})},p.ctrlMethods={},p.message={from:s.phone,to:_.isNil(o.to)||_.isEmpty(o.to)?[]:o.to,body:""},p.send=function(e){p.message.to&&p.message.body&&(p.message.to.length?(n=p.message.body,a.hide({to:p.message.to.join(","),body:n})):d.error("To is mandatory"));var n},p.getContact=function(e){var n="";e.firstName&&e.firstName!==e[s.mapKey]&&(n+=e.firstName+" ");e.lastName&&e.lastName!==e[s.mapKey]&&(n+=e.lastName+" ");return n+="<"+e[s.mapKey]+">"},p.closeDialog=function(){a.cancel()},p.contactSearch=function(e){if(s&&s.ListId){var n="firstName,lastName,phone,mobile";return s.mapKey&&(n+=","+s.mapKey),l.cmContact.get({ListId:s.ListId,nolimit:!0,filter:e,fields:n}).$promise.then(function(e){return e.rows})}return[]},p.transformContact=function(e){var n=e;if(_.isObject(n))return e[s.mapKey];return n},r){case"note":p.note()}}e.$inject=["$cookies","$timeout","$window","$mdDialog","$mdConstant","account","message","type","api","toasty","$q","$translate","Auth"],angular.module("app.dashboards").controller("ComposeOpenchannelInteractionDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u){var p=this;switch(p.currentUser=u.getCurrentUser(),p.errors=[],p.separatorKeys=[i.KEY_CODE.ENTER,i.KEY_CODE.COMMA,i.KEY_CODE.TAB],p.searchTextChange=function(n){var t=c.defer(),a=[];return l.cannedAnswer.get({filter:n,SmsAccountId:s.id}).$promise.then(function(e){return a=_.concat(a,e.rows),l.cannedAnswer.get({filter:n}).$promise}).then(function(e){a=_.concat(a,_.filter(e.rows,function(e){return!(e.MailAccountId||e.FaxAccountId||e.SmsAccountId||e.WhatsappAccountId||e.OpenchannelAccountId||e.ChatWebsiteId)})),t.resolve(a)}).catch(function(e){t.reject(e)}),t.promise},p.selectedItemChange=function(n){if(n){try{_.templateSettings.interpolate=/{{([\s\S]+?)}}/g;var e=_.template(n.value),t={user:p.currentUser,account:s};p.message.body+=""===p.message.body.trim()?e(t):" "+e(t),p.ctrlMethods.setText(p.message.body)}catch(e){p.message.body+=""===p.message.body.trim()?n.value:" "+n.value,p.ctrlMethods.setText(p.message.body)}p.selectedItem=null}},p.note=function(){p.secret=!0},p.addNote=function(){p.message.body&&a.hide({secret:!0,body:p.message.body})},p.ctrlMethods={},p.message={from:s.phone,to:_.isNil(o.to)||_.isEmpty(o.to)?[]:o.to,body:""},p.send=function(e){p.message.to&&p.message.body&&(p.message.to.length?(n=p.message.body,a.hide({to:p.message.to.join(","),body:n})):d.error("To is mandatory"));var n},p.getContact=function(e){var n="";e.firstName&&e.firstName!==e.mobile&&(n+=e.firstName+" ");e.lastName&&e.lastName!==e.mobile&&(n+=e.lastName+" ");return n+="<"+e.mobile+">"},p.closeDialog=function(){a.cancel()},p.contactSearch=function(e){if(s&&s.ListId)return l.cmContact.get({ListId:s.ListId,nolimit:!0,filter:e,fields:"firstName,lastName,mobile"}).$promise.then(function(e){return e.rows});return[]},p.transformContact=function(e){var n=e;if(_.isObject(n))return e.mobile;if(t=n,/^(\+|\d)[0-9]{7,16}$/.test(t))return n;var t;return d.error("Mobile "+n+" is not valid"),null},r){case"note":p.note()}}e.$inject=["$cookies","$timeout","$window","$mdDialog","$mdConstant","account","message","type","api","toasty","$q","$translate","Auth"],angular.module("app.dashboards").controller("ComposeSmsInteractionDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u){var p=this;switch(p.currentUser=u.getCurrentUser(),p.errors=[],p.separatorKeys=[i.KEY_CODE.ENTER,i.KEY_CODE.COMMA,i.KEY_CODE.TAB],p.searchTextChange=function(n){var t=c.defer(),a=[];return l.cannedAnswer.get({filter:n,WhatsappAccountId:s.id}).$promise.then(function(e){return a=_.concat(a,e.rows),l.cannedAnswer.get({filter:n}).$promise}).then(function(e){a=_.concat(a,_.filter(e.rows,function(e){return!(e.MailAccountId||e.FaxAccountId||e.SmsAccountId||e.WhatsappAccountId||e.OpenchannelAccountId||e.ChatWebsiteId)})),t.resolve(a)}).catch(function(e){t.reject(e)}),t.promise},p.selectedItemChange=function(n){if(n){try{_.templateSettings.interpolate=/{{([\s\S]+?)}}/g;var e=_.template(n.value),t={user:p.currentUser,account:s};p.message.body+=""===p.message.body.trim()?e(t):" "+e(t),p.ctrlMethods.setText(p.message.body)}catch(e){p.message.body+=""===p.message.body.trim()?n.value:" "+n.value,p.ctrlMethods.setText(p.message.body)}p.selectedItem=null}},p.note=function(){p.secret=!0},p.addNote=function(){p.message.body&&a.hide({secret:!0,body:p.message.body})},p.ctrlMethods={},p.message={from:s.phone,to:_.isNil(o.to)||_.isEmpty(o.to)?[]:o.to,body:""},p.send=function(e){p.message.to&&p.message.body&&(p.message.to.length?(n=p.message.body,a.hide({to:p.message.to.join(","),body:n})):d.error("To is mandatory"));var n},p.getContact=function(e){var n="";e.firstName&&e.firstName!==e.mobile&&(n+=e.firstName+" ");e.lastName&&e.lastName!==e.mobile&&(n+=e.lastName+" ");return n+="<"+e.mobile+">"},p.closeDialog=function(){a.cancel()},p.contactSearch=function(e){if(s&&s.ListId)return l.cmContact.get({ListId:s.ListId,nolimit:!0,filter:e,fields:"firstName,lastName,mobile"}).$promise.then(function(e){return e.rows});return[]},p.transformContact=function(e){var n=e;if(_.isObject(n))return e.mobile;if(t=n,/^(\+|\d)[0-9]{7,16}$/.test(t))return n;var t;return d.error("Mobile "+n+" is not valid"),null},r){case"note":p.note()}}e.$inject=["$cookies","$timeout","$window","$mdDialog","$mdConstant","account","message","type","api","toasty","$q","$translate","Auth"],angular.module("app.dashboards").controller("ComposeWhatsappInteractionDialogController",e)}(),function(){"use strict";function e(n,t,a,e,i,s,o){var r=this;function l(e){n.hide(e)}r.errors=[],r.dispositions=[],r.interaction=angular.copy(e),r.interaction.disposition||(r.interaction.disposition=null),r.channel=i,r.apiRoute=r.channel+"Interaction",r.apiAccountRoute=r.channel+("chat"===r.channel?"Website":"Account"),r.accountProperty=_.capitalize(r.channel)+("chat"===r.channel?"Website":"Account")+"Id",r.firstLevelDisposition=null,r.mandatoryDisposition=!1,r.mandatoryDispositionPause="",r.wasUserInPause=s.voicePause||s.chatPause||s.mailPause||s.openchannelPause||s.faxPause,r.onInit=function(){var n=[],t={fields:"id,name,level,ParentId",sort:"name",nolimit:!0};t[r.accountProperty]=e[r.accountProperty],a[r.apiAccountRoute].get({id:e[r.accountProperty]}).$promise.then(function(e){return r.mandatoryDisposition=e.mandatoryDisposition,r.mandatoryDisposition&&(r.mandatoryDispositionPause=e.mandatoryDispositionPause.name),a.disposition.get(t).$promise}).then(function(e){return e.rows.length&&(n=_.concat(n,e.rows)),a.disposition.get({MailAccountId:"null",FaxAccountId:"null",SmsAccountId:"null",WhatsappAccountId:"null",OpenchannelAccountId:"null",ChatWebsiteId:"null",ListId:"null",nolimit:!0}).$promise}).then(function(e){e.rows.length&&(n=_.concat(n,e.rows))}).catch(function(e){console.error(e)}).finally(function(){r.dispositions=_.orderBy(n,["name"],["asc"]),r.mandatoryDisposition&&!r.wasUserInPause&&a.user.pause({id:s.id,type:r.mandatoryDispositionPause||"DEFAULT PAUSE"}).$promise.then(function(e){}).catch(function(e){console.error(e)})})},r.onDispositionChange=function(e){"first"===e?(r.anySecondLevelDisposition=!!r.firstLevelDisposition&&_.some(r.dispositions,["ParentId",r.firstLevelDisposition.id]),r.firstLevelDisposition||(r.secondLevelDisposition=void 0)):"second"===e&&(r.anyThirdLevelDisposition=_.some(r.dispositions,["ParentId",r.secondLevelDisposition.id]))},r.clearDispositionSelection=function(e){"second"===e?(r.secondLevelDisposition=void 0,r.thirdLevelDisposition=void 0):"third"===e&&(r.thirdLevelDisposition=void 0)},r.saveDisposition=function(){r.errors=[],r.interaction.UserId=s.id,r.interaction.closed=!0,r.interaction.closeReason="agent",r.interaction.disposition=r.firstLevelDisposition?r.firstLevelDisposition.name:null,r.interaction.secondDisposition=r.secondLevelDisposition?r.secondLevelDisposition.name:void 0,r.interaction.thirdDisposition=r.thirdLevelDisposition?r.thirdLevelDisposition.name:void 0,a[r.apiRoute]?a[r.apiRoute].update(_.pick(r.interaction,["MailAccountId","FaxAccountId","SmsAccountId","WhatsappAccountId","ChatWebsiteId","OpenchannelAccountId","closed","closeReason","disposition","secondDisposition","thirdDisposition","id","note","UserId"])).$promise.then(function(e){r.interaction=e,"mail"===r.channel&&o.removeByInteraction(r.interaction.id),t.success({title:"Interaction properly closed!",msg:"Interaction has been closed!"})}).then(function(){l(!0)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){r.errors=e.data.errors||[{message:e.toString(),type:"api.variable.update"}];for(var n=0;n<e.data.errors.length;n++)t.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.variable.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})}):l(!1)},r.closeDialog=l}e.$inject=["$mdDialog","toasty","api","interaction","channel","user","draftManager"],angular.module("app.dashboards").controller("DisposeInteractionDialogController",e)}(),function(){"use strict";function e(n,t,e,a,i,s){var o=this;function r(e){n.hide(e)}o.errors=[],o.tags=s,o.interaction=angular.copy(a),o.interaction.Tags=_.map(o.interaction.Tags,function(e){return{id:e.id,name:e.name,color:e.color}}),o.channel=i,o.autocompleteRequireMatch=!0,o.saveTag=function(){{if(o.errors=[],e[o.apiRoute])return e[o.apiRoute].addTags({id:o.interaction.id,ids:_.map(o.interaction.Tags,"id")}).$promise.then(function(){t.success({title:"Interaction properly tagged!",msg:"Interaction has been tagged!"}),a.Tags=o.interaction.Tags,r(!0)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n+=1)t.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.variable.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})});r(!1)}},o.closeDialog=r,o.apiRoute=o.channel+"Interaction"}e.$inject=["$mdDialog","toasty","api","interaction","channel","tags"],angular.module("app.dashboards").controller("TagInteractionDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r,l,d){var c=this;function m(e){n.hide(e)}c.channel=s.toLowerCase(),c.message=o,c.account=r,c.agents=l,c.queues=d,c.transfer={id:0,type:c.account.queueTransfer?"queue":"agent"},c.onTransfer=function(){m(!0),e(function(){var e="agent"===c.transfer.type?"agentNotify":c.channel+"QueueNotify";return a.rpc[e]({id:c.transfer.id,messageId:c.message.id,channel:c.channel}).$promise.then(function(){i.success({title:t.instant("DASHBOARDS.INFO"),msg:"queue"===c.transfer.type?t.instant("DASHBOARDS.NOTIFICATIONS.TRANSFER_QUEUE_EXECUTED"):t.instant("DASHBOARDS.NOTIFICATIONS.TRANSFER_AGENT_EXECUTED")})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){c.errors=e.data.errors||[{message:e.toString(),type:"api.rpc.notify"}];for(var n=0;n<e.data.errors.length;n++)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.rpc.notify",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},5e3)},c.closeDialog=m}e.$inject=["$mdDialog","$timeout","$translate","api","toasty","channel","message","account","agents","queues"],angular.module("app.dashboards").controller("TransferMessageDialogController",e)}(),function(){"use strict";function e(i,m,s,e,u,o,r,t,n,a,l){var p=this;function d(){try{i.$parent.$parent.$parent.vm.updateLocalStorage()}catch(e){o.error({title:"ERROR UPDATE LOCAL TABS",msg:"Error updating locally stored tabs"})}}function c(t,e){var n,a,l=[],d=[],c=r.getCurrentUser();(n=c,a=m.defer(),p.project.sendUnpauseOnSubmit?u.user.unpause({id:n.id}).$promise.then(function(e){a.resolve()}).catch(function(e){console.log("err"),a.resolve()}):a.resolve(),a.promise).then(function(){return u.jscriptySessionReport.save({starttime:p.starttime,membername:p.call&&p.call.membername?p.call.membername:c.name,calleridname:p.call&&p.call.calleridname?p.call.calleridname:void 0,calleridnum:p.call&&p.call.calleridnum?p.call.calleridnum:void 0,queue:p.call&&p.call.queue?p.call.queue:void 0,uniqueid:p.call&&p.call.uniqueid?p.call.uniqueid:void 0,VoiceQueueId:p.call&&p.call["xmd-voicequeueid"]?p.call["xmd-voicequeueid"]:void 0,ProjectId:p.project&&p.project.id?p.project.id:void 0,projectname:p.project&&p.project.name?p.project.name:void 0,ContactId:p.contact&&p.contact.id?p.contact.id:void 0,completed:e}).$promise}).then(function(e){if(e)for(var n=p.getResponseSheetHeaders(),t=p.getResponseSheetRow(),a=p.getQuestionWithResponseList(),i=0;i<n.length;i+=1)if(!_.isEmpty(String(t[i]))){try{l.push(u.jscriptyQuestionReport.save({question:n[i],answer:"date"===a[i].type?moment(String(t[i])).format("YYYY-MM-DD"):"time"===a[i].type?moment(String(t[i])).format("HH:mm"):String(t[i]),questionId:a[i].id,membername:p.call&&p.call.membername?p.call.membername:c.name,calleridname:p.call&&p.call.calleridname?p.call.calleridname:void 0,calleridnum:p.call&&p.call.calleridnum?p.call.calleridnum:void 0,queue:p.call&&p.call.queue?p.call.queue:void 0,uniqueid:p.call&&p.call.uniqueid?p.call.uniqueid:void 0,SessionId:e.id,ProjectId:p.project.id,projectname:p.project.name}))}catch(e){console.error("Unable to convert question",e)}for(var s=String(t[i]).split(";"),o=0;o<s.length;o+=1){var r=s[o].trim();try{d.push(u.jscriptyAnswerReport.save({question:n[i],questionId:a[i].id,answer:"date"===a[i].type?moment(r).format("YYYY-MM-DD"):"time"===a[i].type?moment(r).format("HH:mm"):r,membername:p.call&&p.call.membername?p.call.membername:c.name,calleridname:p.call&&p.call.calleridname?p.call.calleridname:void 0,calleridnum:p.call&&p.call.calleridnum?p.call.calleridnum:void 0,queue:p.call&&p.call.queue?p.call.queue:void 0,uniqueid:p.call&&p.call.uniqueid?p.call.uniqueid:void 0,SessionId:e.id,ProjectId:p.project.id,projectname:p.project.name}))}catch(e){console.error("Unable to convert answer",e)}}}return m.all(l).then(function(){return m.all(d).then(function(){return e})})}).then(function(e){e?t.resolve(!0):t.reject()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){p.errors=e.data.errors||[{message:e.toString(),type:"api.contact.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.contact.save",msg:e.data?JSON.stringify(e.data.message):e.toString()});t.reject()})}p.formViewer={},p.showResetButton=!0,p.showIncompleteSubmitButton=!1,p.detectBrowser=l.detectBrowser(),p.onSubmit=function(e,n){var t=m.defer();if(n){var a=s.confirm().title("Would you like to save your survey?").textContent("").ariaLabel("survey").targetEvent(e).ok("YES").cancel("NO");s.show(a).then(function(){c(t,!1)},function(){t.resolve()})}else c(t,!0);return t.promise.then(function(e){e&&(o.success({title:"Session saved",msg:"Your survey session has been properly saved!"}),function(e){try{i.$parent.$parent.$parent.vm.removeTab(e)}catch(e){o.error({title:"ERROR REMOVE TAB",msg:"Error while removing tab"})}}(p.tab))}).catch(function(e){o.error({title:"Session save error",msg:"There has been an error while trying to save your survey session!"})})},p.openContact=function(e,n){try{i.$parent.$parent.$parent.vm.addContactTab(n)}catch(e){o.error({title:"ERROR OPEN CONTACT",msg:"Jscripty can't open the contact"})}},p.isJsonString=function(e){if(_.isNil(e))return!1;try{JSON.parse(e)}catch(e){return!1}return!0},p.getResponseSheet=function(){return e.getResponseSheet(p.project.formData,p.project.responseData,!1)},p.getResponseSheetRow=function(){return e.getResponseSheetRow(p.project.formData,p.project.responseData)},p.getResponseSheetHeaders=function(){return e.getResponseSheetHeaders(p.project.formData,!1)},p.getQuestionWithResponseList=function(){return e.getQuestionWithResponseList(p.project.formData,p.project.responseData)},p.init=function(e){p.tab=e,p.tab&&(p.call=p.tab.call,p.starttime=p.tab.openedAt,p.contact=p.tab.contact,p.project=p.tab.project,p.project&&(_.isObjectLike(p.project.formData)?p.project.formData=p.project.formData:p.isJsonString(p.project.formData)?p.project.formData=JSON.parse(p.project.formData):p.project.formData=void 0,p.project.responseData=p.project.responseData||{},void 0!==p.project.currentPage&&a(function(){n.$broadcast("mwForm.pageEvents.changePage",{page:p.project.currentPage})}),i.$on("mwForm.pageEvents.pageCurrentChanged",function(e,n){if(n.currentPage&&(p.project.currentPage=n.currentPage.number-1,d(),p.project.enableUncompleteSave&&(1<=n.currentPage.number&&n.currentPage.number<p.project.formData.pages.length?p.showIncompleteSubmitButton=!0:p.showIncompleteSubmitButton=!1),p.project.formData&&p.project.formData.pages))for(var t=0,a=p.project.formData.pages.length;t<a;t++)if(n.currentPage.number<t+1&&p.project.formData.pages[t].elements)for(var i=0,s=p.project.formData.pages[t].elements.length;i<s;i++)"question"===p.project.formData.pages[t].elements[i].type&&p.project.formData.pages[t].elements[i].question&&delete p.project.responseData[p.project.formData.pages[t].elements[i].question.id]})))},p.resetViewer=function(e){if(p.formViewer.reset){var n=s.confirm().title(t.instant("JSCRIPTY.DO_YOU_WANT_TO_RESET_SESSION")).content(t.instant("JSCRIPTY.ALL_SURVEY_DATA_WILL_BE_LOST")).textContent("").ariaLabel("survey").targetEvent(e).ok(t.instant("JSCRIPTY.YES")).cancel(t.instant("JSCRIPTY.NO"));s.show(n).then(function(){p.showIncompleteSubmitButton=!1,p.project.currentPage=void 0,d(),p.formViewer.reset()})}}}e.$inject=["$scope","$q","$mdDialog","mwFormResponseUtils","api","toasty","Auth","$translate","$rootScope","$timeout","msUtils"],angular.module("app.dashboards").controller("AgentGeneralJscriptyController",e)}(),function(){"use strict";function e(t,a,e,n,i){var s=this;function o(){return function(e){if(404===e.status)a.info({title:t.instant("DASHBOARDS.ATTENTION"),msg:t.instant("DASHBOARDS.ACCEPT_ELSEWHERE")});else if(e.data&&e.data.errors&&e.data.errors.length){s.errors=e.data.errors||[{message:e.toString(),type:"api.openchannelMessage.accept"}];for(var n=0;n<e.data.errors.length;n+=1)a.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.openchannelMessage.accept",msg:e.data?JSON.stringify(e.data.message):e.toString()})}}s.notification=e,s.user=i.getCurrentUser(),s.accept=function(e){{if(n[s.notification.channel+"Message"])return n[s.notification.channel+"Message"].accept({id:s.notification.id,UserId:s.user.id,manual:!0}).$promise.then(function(e){a.success({title:"Message properly accepted!",msg:"Message has been accepted!"})}).catch(o());a.error({title:"API:ERROR",msg:"API accept message not found: "+s.notification.channel+"Message"})}},s.reject=function(e){{if(n[s.notification.channel+"Message"])return n[s.notification.channel+"Message"].reject({id:s.notification.id,UserId:s.user.id}).$promise.then(function(e){a.success({title:"Message properly rejected!",msg:"Message has been rejected!"})}).catch(o());a.error({title:"API:ERROR",msg:"API reject message not found: "+s.notification.channel+"Message"})}}}e.$inject=["$translate","toasty","notification","api","Auth"],angular.module("app.dashboards").controller("NotificationController",e)}(),function(){"use strict";angular.module("app.dashboards").controller("AgentGeneralPopupController",function(){var n=this;n.init=function(e){n.tab=e,n.tab&&(n.tab.saved=!0,n.html=n.tab.html)}})}(),function(){"use strict";function e(e,n,t,a){var i=this,s=[];function o(e,n){e.closed||e.UserId||!n||(i.inbound.waiting+=1),e.closed||!e.UserId||_.includes(s,e.id)||(i.inbound.talking+=1,s.push(e.id),!n&&i.inbound.waiting&&(i.inbound.waiting-=1)),e.closed&&"abandoned"===e.disposition?(i.inbound.abandoned+=1,!n&&i.inbound.waiting&&(i.inbound.waiting-=1)):e.closed&&!e.UserId&&e.disposition?(i.inbound.unmanaged+=1,!n&&i.inbound.waiting&&(i.inbound.waiting-=1)):e.closed&&e.UserId&&(i.inbound.sumBillable+=moment(e.closedAt).diff(moment(e.read1stAt),i.config.unit),i.inbound.sumHoldTime+=moment(e.read1stAt).diff(moment(e.createdAt),i.config.unit),i.inbound.answered+=1,!n&&i.inbound.talking&&(i.inbound.talking-=1)),n&&(i.inbound.total+=1)}function r(){i.inbound.abandonRate=Math.round((i.inbound.abandoned+i.inbound.unmanaged)/(i.inbound.total-i.inbound.talking-i.inbound.waiting)*100,-2),i.inbound.answerRate=Math.round(i.inbound.answered/(i.inbound.total-i.inbound.talking-i.inbound.waiting)*100,-2),i.inbound.avgHoldTime=moment.duration(Math.round(i.inbound.sumHoldTime/i.inbound.answered),i.config.unit).format(i.config.format,i.config),i.inbound.avgTalkTime=moment.duration(Math.round(i.inbound.sumBillable/i.inbound.answered),i.config.unit).format(i.config.format,i.config)}function l(e){return!!_.some(i.chatWebsites,{id:_.toNumber(e.ChatWebsiteId)})}function d(e){var n=moment().utcOffset(0,!0).startOf("day"),t=moment().utcOffset(0,!0).endOf("day");return moment(e).utcOffset(0,!0).isBetween(n,t)}i.config={format:"hh:mm:ss",unit:"seconds",trim:!1},i.inbound={waiting:0,talking:0,answered:0,abandoned:0,unmanaged:0,sumHoldTime:0,sumBillable:0,total:0,avgHoldTime:"00:00:00",avgTalkTime:"00:00:00",answerRate:0,abandonRate:0},i.chatWebsites=a?_.keyBy(a.rows?a.rows:[],"id"):{},i.onSaveChatInteraction=function(e){l(e)&&d(e.createdAt)&&(o(e,!0),r())},i.onUpdateChatInteraction=function(e){l(e)&&d(e.createdAt)&&(o(e,!1),r())},n.on("chatInteraction:save",i.onSaveChatInteraction),n.on("chatInteraction:update",i.onUpdateChatInteraction),function(){if(0<Object.keys(i.chatWebsites).length)for(var e=0;e<t.rows.length;e+=1)if(l(t.rows[e])){var n=t.rows[e];o(n,!0),r()}}(),e.$on("$destroy",function(){n.removeAllListeners("chatInteraction:save"),n.removeAllListeners("chatInteraction:update")})}e.$inject=["$scope","socket","chatInteractions","chatWebsites"],angular.module("app.dashboards").controller("UserChatDashboardGeneralController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r){var l=this;function d(){s({queues:l.outboundQueues,rpcQueues:l.rpcQueues}).then(function(e){l.inbound=e})}function c(){o({rpcCampaigns:l.rpcCampaigns}).then(function(e){l.ivr=e})}l.outboundQueues=a?_.keyBy(a.rows?a.rows:[],"id"):{},l.rpcQueues=i?_.keyBy(i.rows?i.rows:[],"id"):{},l.rpcCampaigns=r?_.keyBy(r.rows?r.rows:[],"id"):{},l.ivr={originated:0,limitCalls:0},l.inbound={waiting:0,talking:0,pTalking:0,answered:0,abandoned:0,unmanaged:0,sumHoldTime:0,sumBillable:0,total:0,avgHoldTime:"00:00:00",avgTalkTime:"00:00:00",answerRate:0,abandonRate:0,outboundDropCallsDayCallersExit:0,outboundDropCallsDayTimeout:0},l.onSaveQueue=function(e){l.outboundQueues[e.id]&&l.rpcQueues[e.id]&&(l.rpcQueues[e.id]=e)},l.onSaveCampaign=function(e){l.rpcCampaigns[e.id]&&(l.rpcCampaigns[e.id]=e)},t.onWithoutApply("voice_queue:save",l.onSaveQueue),l.interval=n(function(){d(),c()},999),t.onWithoutApply("campaign:save",l.onSaveCampaign),d(),c(),e.$on("$destroy",function(){t.removeListener("voice_queue:save",l.onSaveQueue),t.removeAllListeners("campaign:save"),l.interval&&n.cancel(l.interval)})}e.$inject=["$scope","$interval","socket","outboundQueues","rpcQueues","initializeRealtimeQueue","initializeRealtimeCampaign","rpcCampaigns"],angular.module("app.dashboards").controller("UserVoiceDashboardDialerController",e)}(),function(){"use strict";function e(e,n,t,a){var i=this,s=[];function o(e,n){e.closed||e.UserId||!n||(i.inbound.waiting+=1),e.closed||!e.UserId||_.includes(s,e.id)||(i.inbound.talking+=1,s.push(e.id),!n&&i.inbound.waiting&&(i.inbound.waiting-=1)),e.closed&&e.UserId&&(i.inbound.sumBillable+=moment(e.closedAt).diff(moment(e.read1stAt),i.config.unit),i.inbound.sumHoldTime+=moment(e.read1stAt).diff(moment(e.createdAt),i.config.unit),i.inbound.answered+=1,!n&&i.inbound.talking&&(i.inbound.talking-=1)),e.closed&&!e.UserId&&(i.inbound.unmanaged+=1,!n&&i.inbound.waiting&&(i.inbound.waiting-=1)),n&&(i.inbound.total+=1)}function r(){i.inbound.abandonRate=Math.round((i.inbound.abandoned+i.inbound.unmanaged)/(i.inbound.total-i.inbound.talking-i.inbound.waiting)*100,-2),i.inbound.answerRate=Math.round(i.inbound.answered/(i.inbound.total-i.inbound.talking-i.inbound.waiting)*100,-2),i.inbound.avgHoldTime=moment.duration(Math.round(i.inbound.sumHoldTime/i.inbound.answered),i.config.unit).format(i.config.format,i.config),i.inbound.avgTalkTime=moment.duration(Math.round(i.inbound.sumBillable/i.inbound.answered),i.config.unit).format(i.config.format,i.config)}function l(e){return!!_.some(i.faxAccounts,{id:_.toNumber(e.FaxAccountId)})}function d(e){var n=moment().utcOffset(0,!0).startOf("day"),t=moment().utcOffset(0,!0).endOf("day");return moment(e).utcOffset(0,!0).isBetween(n,t)}i.config={format:"hh:mm:ss",unit:"seconds",trim:!1},i.inbound={waiting:0,talking:0,answered:0,abandoned:0,unmanaged:0,sumHoldTime:0,sumBillable:0,total:0,avgHoldTime:"00:00:00",avgTalkTime:"00:00:00",answerRate:0,abandonRate:0},i.faxAccounts=a?_.keyBy(a.rows?a.rows:[],"id"):{},i.onSaveFaxInteraction=function(e){l(e)&&d(e.createdAt)&&(o(e,!0),r())},i.onUpdateFaxInteraction=function(e){l(e)&&d(e.createdAt)&&(o(e,!1),r())},n.on("faxInteraction:save",i.onSaveFaxInteraction),n.on("faxInteraction:update",i.onUpdateFaxInteraction),function(){if(0<Object.keys(i.faxAccounts).length)for(var e=0;e<t.rows.length;e+=1)if(l(t.rows[e])){var n=t.rows[e];o(n,!0),r()}}(),e.$on("$destroy",function(){n.removeAllListeners("faxInteraction:save"),n.removeAllListeners("faxInteraction:update")})}e.$inject=["$scope","socket","faxInteractions","faxAccounts"],angular.module("app.dashboards").controller("UserFaxDashboardGeneralController",e)}(),function(){"use strict";function e(e,n,t,a){var i=this,s=[];function o(e,n){e.closed||e.UserId||!n||(i.inbound.waiting+=1),e.closed||!e.UserId||_.includes(s,e.id)||(i.inbound.talking+=1,s.push(e.id),!n&&i.inbound.waiting&&(i.inbound.waiting-=1)),e.closed&&e.UserId&&(i.inbound.sumBillable+=moment(e.closedAt).diff(moment(e.read1stAt),i.config.unit),i.inbound.sumHoldTime+=moment(e.read1stAt).diff(moment(e.createdAt),i.config.unit),i.inbound.answered+=1,!n&&i.inbound.talking&&(i.inbound.talking-=1)),e.closed&&!e.UserId&&(i.inbound.unmanaged+=1,!n&&i.inbound.waiting&&(i.inbound.waiting-=1)),n&&(i.inbound.total+=1)}function r(){i.inbound.abandonRate=Math.round((i.inbound.abandoned+i.inbound.unmanaged)/(i.inbound.total-i.inbound.talking-i.inbound.waiting)*100,-2),i.inbound.answerRate=Math.round(i.inbound.answered/(i.inbound.total-i.inbound.talking-i.inbound.waiting)*100,-2),i.inbound.avgHoldTime=moment.duration(Math.round(i.inbound.sumHoldTime/i.inbound.answered),i.config.unit).format(i.config.format,i.config),i.inbound.avgTalkTime=moment.duration(Math.round(i.inbound.sumBillable/i.inbound.answered),i.config.unit).format(i.config.format,i.config)}function l(e){return!!_.some(i.mailAccounts,{id:_.toNumber(e.MailAccountId)})}function d(e){var n=moment().utcOffset(0,!0).startOf("day"),t=moment().utcOffset(0,!0).endOf("day");return moment(e).utcOffset(0,!0).isBetween(n,t)}i.config={format:"hh:mm:ss",unit:"seconds",trim:!1},i.inbound={waiting:0,talking:0,answered:0,abandoned:0,unmanaged:0,sumHoldTime:0,sumBillable:0,total:0,avgHoldTime:"00:00:00",avgTalkTime:"00:00:00",answerRate:0,abandonRate:0},i.mailAccounts=a?_.keyBy(a.rows?a.rows:[],"id"):{},i.onSaveMailInteraction=function(e){l(e)&&d(e.createdAt)&&(o(e,!0),r())},i.onUpdateMailInteraction=function(e){l(e)&&d(e.createdAt)&&(o(e,!1),r())},n.on("mailInteraction:save",i.onSaveMailInteraction),n.on("mailInteraction:update",i.onUpdateMailInteraction),function(){if(0<Object.keys(i.mailAccounts).length)for(var e=0;e<t.rows.length;e+=1)if(l(t.rows[e])){var n=t.rows[e];o(n,!0),r()}}(),e.$on("$destroy",function(){n.removeAllListeners("mailInteraction:save"),n.removeAllListeners("mailInteraction:update")})}e.$inject=["$scope","socket","mailInteractions","mailAccounts"],angular.module("app.dashboards").controller("UserMailDashboardGeneralController",e)}(),function(){"use strict";function e(e,n,t,a){var i=this,s=[];function o(e,n){e.closed||e.UserId||!n||(i.inbound.waiting+=1),e.closed||!e.UserId||_.includes(s,e.id)||(i.inbound.talking+=1,s.push(e.id),!n&&i.inbound.waiting&&(i.inbound.waiting-=1)),e.closed&&e.UserId&&(i.inbound.sumBillable+=moment(e.closedAt).diff(moment(e.read1stAt),i.config.unit),i.inbound.sumHoldTime+=moment(e.read1stAt).diff(moment(e.createdAt),i.config.unit),i.inbound.answered+=1,!n&&i.inbound.talking&&(i.inbound.talking-=1)),e.closed&&!e.UserId&&(i.inbound.unmanaged+=1,!n&&i.inbound.waiting&&(i.inbound.waiting-=1)),n&&(i.inbound.total+=1)}function r(){i.inbound.abandonRate=Math.round((i.inbound.abandoned+i.inbound.unmanaged)/(i.inbound.total-i.inbound.talking-i.inbound.waiting)*100,-2),i.inbound.answerRate=Math.round(i.inbound.answered/(i.inbound.total-i.inbound.talking-i.inbound.waiting)*100,-2),i.inbound.avgHoldTime=moment.duration(Math.round(i.inbound.sumHoldTime/i.inbound.answered),i.config.unit).format(i.config.format,i.config),i.inbound.avgTalkTime=moment.duration(Math.round(i.inbound.sumBillable/i.inbound.answered),i.config.unit).format(i.config.format,i.config)}function l(e){return!!_.some(i.openchannelAccounts,{id:_.toNumber(e.OpenchannelAccountId)})}function d(e){var n=moment().utcOffset(0,!0).startOf("day"),t=moment().utcOffset(0,!0).endOf("day");return moment(e).utcOffset(0,!0).isBetween(n,t)}i.config={format:"hh:mm:ss",unit:"seconds",trim:!1},i.inbound={waiting:0,talking:0,answered:0,abandoned:0,unmanaged:0,sumHoldTime:0,sumBillable:0,total:0,avgHoldTime:"00:00:00",avgTalkTime:"00:00:00",answerRate:0,abandonRate:0},i.openchannelAccounts=a?_.keyBy(a.rows?a.rows:[],"id"):{},i.onSaveOpenchannelInteraction=function(e){l(e)&&d(e.createdAt)&&(o(e,!0),r())},i.onUpdateOpenchannelInteraction=function(e){l(e)&&d(e.createdAt)&&(o(e,!1),r())},n.on("openchannelInteraction:save",i.onSaveOpenchannelInteraction),n.on("openchannelInteraction:update",i.onUpdateOpenchannelInteraction),function(){if(0<Object.keys(i.openchannelAccounts).length)for(var e=0;e<t.rows.length;e+=1)if(l(t.rows[e])){var n=t.rows[e];o(n,!0),r()}}(),e.$on("$destroy",function(){n.removeAllListeners("openchannelInteraction:save"),n.removeAllListeners("openchannelInteraction:update")})}e.$inject=["$scope","socket","openchannelInteractions","openchannelAccounts"],angular.module("app.dashboards").controller("UserOpenchannelDashboardGeneralController",e)}(),function(){"use strict";function e(e,n,t,a){var i=this,s=[];function o(e,n){e.closed||e.UserId||!n||(i.inbound.waiting+=1),e.closed||!e.UserId||_.includes(s,e.id)||(i.inbound.talking+=1,s.push(e.id),!n&&i.inbound.waiting&&(i.inbound.waiting-=1)),e.closed&&e.UserId&&(i.inbound.sumBillable+=moment(e.closedAt).diff(moment(e.read1stAt),i.config.unit),i.inbound.sumHoldTime+=moment(e.read1stAt).diff(moment(e.createdAt),i.config.unit),i.inbound.answered+=1,!n&&i.inbound.talking&&(i.inbound.talking-=1)),e.closed&&!e.UserId&&(i.inbound.unmanaged+=1,!n&&i.inbound.waiting&&(i.inbound.waiting-=1)),n&&(i.inbound.total+=1)}function r(){i.inbound.abandonRate=Math.round((i.inbound.abandoned+i.inbound.unmanaged)/(i.inbound.total-i.inbound.talking-i.inbound.waiting)*100,-2),i.inbound.answerRate=Math.round(i.inbound.answered/(i.inbound.total-i.inbound.talking-i.inbound.waiting)*100,-2),i.inbound.avgHoldTime=moment.duration(Math.round(i.inbound.sumHoldTime/i.inbound.answered),i.config.unit).format(i.config.format,i.config),i.inbound.avgTalkTime=moment.duration(Math.round(i.inbound.sumBillable/i.inbound.answered),i.config.unit).format(i.config.format,i.config)}function l(e){return!!_.some(i.smsAccounts,{id:_.toNumber(e.SmsAccountId)})}function d(e){var n=moment().utcOffset(0,!0).startOf("day"),t=moment().utcOffset(0,!0).endOf("day");return moment(e).utcOffset(0,!0).isBetween(n,t)}i.config={format:"hh:mm:ss",unit:"seconds",trim:!1},i.inbound={waiting:0,talking:0,answered:0,abandoned:0,unmanaged:0,sumHoldTime:0,sumBillable:0,total:0,avgHoldTime:"00:00:00",avgTalkTime:"00:00:00",answerRate:0,abandonRate:0},i.smsAccounts=a?_.keyBy(a.rows?a.rows:[],"id"):{},i.onSaveSmsInteraction=function(e){l(e)&&d(e.createdAt)&&(o(e,!0),r())},i.onUpdateSmsInteraction=function(e){l(e)&&d(e.createdAt)&&(o(e,!1),r())},n.on("smsInteraction:save",i.onSaveSmsInteraction),n.on("smsInteraction:update",i.onUpdateSmsInteraction),function(){if(0<Object.keys(i.smsAccounts).length)for(var e=0;e<t.rows.length;e+=1)if(l(t.rows[e])){var n=t.rows[e];o(n,!0),r()}}(),e.$on("$destroy",function(){n.removeAllListeners("smsInteraction:save"),n.removeAllListeners("smsInteraction:update")})}e.$inject=["$scope","socket","smsInteractions","smsAccounts"],angular.module("app.dashboards").controller("UserSmsDashboardGeneralController",e)}(),function(){"use strict";function e(t){var i=[],s=function(){var t=i[0],a={waiting:0,talking:0,pTalking:0,answered:0,abandoned:0,unmanaged:0,sumHoldTime:0,sumBillable:0,total:0,avgHoldTime:"00:00:00",avgTalkTime:"00:00:00",answerRate:0,abandonRate:0,originated:0,outboundDropCallsDayCallersExit:0,outboundDropCallsDayTimeout:0};_.forIn(t.queues,function(e,n){t.rpcQueues[n]&&(a.waiting+=t.rpcQueues[n].waiting||0,a.talking+=(t.rpcQueues[n].talking||0)+(t.rpcQueues[n].pTalking||0),a.answered+=t.rpcQueues[n].answered||0,a.abandoned+=t.rpcQueues[n].abandoned||0,a.sumHoldTime+=t.rpcQueues[n].sumHoldTime||0,a.sumBillable+=t.rpcQueues[n].sumBillable||0,a.total+=t.rpcQueues[n].total||0,a.originated+=t.rpcQueues[n].originated||0,a.outboundDropCallsDayCallersExit+=t.rpcQueues[n].outboundDropCallsDayCallersExit||0,a.outboundDropCallsDayTimeout+=t.rpcQueues[n].outboundDropCallsDayTimeout||0)});var e=a.total-a.answered-a.abandoned;a.unmanaged=0<e?e:0,a.avgHoldTime=Math.round(0<a.total?a.sumHoldTime/a.total:0),a.avgHoldTime=new Date(1e3*a.avgHoldTime).toISOString().substr(11,8),a.avgTalkTime=Math.round(0<a.answered?a.sumBillable/a.answered:0),a.avgTalkTime=new Date(1e3*a.avgTalkTime).toISOString().substr(11,8),a.answerRate=Math.round((0<a.total?a.answered/a.total*100:0)*Math.pow(10,1))/Math.pow(10,1),a.abandonRate=Math.round((0<a.total?a.abandoned/a.total*100:0)*Math.pow(10,1))/Math.pow(10,1),a.outboundDropRate=Math.round((0<a.total?a.outboundDropCallsDayTimeout/a.total*100:0)*Math.pow(10,1))/Math.pow(10,1),a.outboundAbandonRate=Math.round((0<a.total?a.outboundDropCallsDayCallersExit/a.total*100:0)*Math.pow(10,1))/Math.pow(10,1),a.outboundanswerRate=0<100-a.outboundDropRate-a.outboundAbandonRate&&a.total?100-a.outboundDropRate-a.outboundAbandonRate:0,i.shift(),t.defer.resolve(a),0<i.length&&s()};return function(e){var n=t.defer();return i.push({queues:e.queues,rpcQueues:e.rpcQueues,defer:n}),1===i.length&&s(),n.promise}}function n(t){var i=[],s=function(){var t=i[0],a={originated:0,limitCalls:0};_.forIn(t.rpcCampaigns,function(e,n){t.rpcCampaigns[n]&&(a.originated+=t.rpcCampaigns[n].originated||0,a.limitCalls+=t.rpcCampaigns[n].limitCalls||0)}),i.shift(),t.defer.resolve(a),0<i.length&&s()};return function(e){var n=t.defer();return i.push({rpcCampaigns:e.rpcCampaigns,defer:n}),1===i.length&&s(),n.promise}}function t(t,a,e){var i=this;i.license=e,i.onInit=function(){if(i.hasDashboardPermissions=!a.hasRole("user")||a.hasPermission(101),i.hasDashboardPermissions){var e=t.current.name;switch(e){case"app.dashboards.general":n=[],i.license.voice&&n.push("app.dashboards.general.voice"),i.license.dialer&&n.push("app.dashboards.general.dialer"),i.license.chat&&n.push("app.dashboards.general.chat"),i.license.mail&&n.push("app.dashboards.general.mail"),i.license.messaging&&n.push("app.dashboards.general.sms"),i.license.openchannel&&n.push("app.dashboards.general.openchannel"),i.license.fax&&n.push("app.dashboards.general.fax"),i.license.whatsapp&&n.push("app.dashboards.general.whatsapp"),0<n.length&&t.go(_.first(n));break;case"app.dashboards.general.voice":i.selectedTab=0;break;case"app.dashboards.general.dialer":i.selectedTab=1;break;case"app.dashboards.general.chat":i.selectedTab=2;break;case"app.dashboards.general.mail":i.selectedTab=3;break;case"app.dashboards.general.sms":i.selectedTab=4;break;case"app.dashboards.general.openchannel":i.selectedTab=5;break;case"app.dashboards.general.fax":i.selectedTab=6;break;case"app.dashboards.general.whatsapp":i.selectedTab=7}}var n}}e.$inject=["$q"],n.$inject=["$q"],t.$inject=["$state","Auth","license"],angular.module("app.dashboards").factory("initializeRealtimeQueue",e).factory("initializeRealtimeCampaign",n).controller("UserDashboardGeneralController",t)}(),function(){"use strict";function e(e,n,t,a,i,s){var o=this;function r(){s({queues:o.inboundQueues,rpcQueues:o.rpcQueues}).then(function(e){o.inbound=e})}o.inboundQueues=t?_.keyBy(t.rows?t.rows:[],"id"):{},o.rpcQueues=a?_.keyBy(a.rows?a.rows:[],"id"):{},o.inbound={waiting:0,talking:0,answered:0,abandoned:0,unmanaged:0,sumHoldTime:0,sumBillable:0,total:0,avgHoldTime:"00:00:00",avgTalkTime:"00:00:00",answerRate:0,abandonRate:0},o.outbound=i||{answered:0,sumBillable:0,sumDuration:0,sumHoldTime:0,total:0},o.onSaveQueue=function(e){o.inboundQueues[e.id]&&o.rpcQueues[e.id]&&(o.rpcQueues[e.id]=e,r())},o.onSaveOutbound=function(e){o.outbound=e},n.on("voice_queue:save",o.onSaveQueue),n.on("voice_outbound:save",o.onSaveOutbound),r(),e.$on("$destroy",function(){n.removeListener("voice_queue:save",o.onSaveQueue),n.removeAllListeners("voice_outbound:save")})}e.$inject=["$scope","socket","inboundQueues","rpcQueues","outbound","initializeRealtimeQueue"],angular.module("app.dashboards").controller("UserVoiceDashboardGeneralController",e)}(),function(){"use strict";function e(e,n,t,a){var i=this,s=[];function o(e,n){e.closed||e.UserId||!n||(i.inbound.waiting+=1),e.closed||!e.UserId||_.includes(s,e.id)||(i.inbound.talking+=1,s.push(e.id),!n&&i.inbound.waiting&&(i.inbound.waiting-=1)),e.closed&&e.UserId&&(i.inbound.sumBillable+=moment(e.closedAt).diff(moment(e.read1stAt),i.config.unit),i.inbound.sumHoldTime+=moment(e.read1stAt).diff(moment(e.createdAt),i.config.unit),i.inbound.answered+=1,!n&&i.inbound.talking&&(i.inbound.talking-=1)),e.closed&&!e.UserId&&(i.inbound.unmanaged+=1,!n&&i.inbound.waiting&&(i.inbound.waiting-=1)),n&&(i.inbound.total+=1)}function r(){i.inbound.abandonRate=Math.round((i.inbound.abandoned+i.inbound.unmanaged)/(i.inbound.total-i.inbound.talking-i.inbound.waiting)*100,-2),i.inbound.answerRate=Math.round(i.inbound.answered/(i.inbound.total-i.inbound.talking-i.inbound.waiting)*100,-2),i.inbound.avgHoldTime=moment.duration(Math.round(i.inbound.sumHoldTime/i.inbound.answered),i.config.unit).format(i.config.format,i.config),i.inbound.avgTalkTime=moment.duration(Math.round(i.inbound.sumBillable/i.inbound.answered),i.config.unit).format(i.config.format,i.config)}function l(e){return!!_.some(i.whatsappAccounts,{id:_.toNumber(e.WhatsappAccountId)})}function d(e){var n=moment().utcOffset(0,!0).startOf("day"),t=moment().utcOffset(0,!0).endOf("day");return moment(e).utcOffset(0,!0).isBetween(n,t)}i.config={format:"hh:mm:ss",unit:"seconds",trim:!1},i.inbound={waiting:0,talking:0,answered:0,abandoned:0,unmanaged:0,sumHoldTime:0,sumBillable:0,total:0,avgHoldTime:"00:00:00",avgTalkTime:"00:00:00",answerRate:0,abandonRate:0},i.whatsappAccounts=a?_.keyBy(a.rows?a.rows:[],"id"):{},i.onSaveWhatsappInteraction=function(e){l(e)&&d(e.createdAt)&&(o(e,!0),r())},i.onUpdateWhatsappInteraction=function(e){l(e)&&d(e.createdAt)&&(o(e,!1),r())},n.on("whatsappInteraction:save",i.onSaveWhatsappInteraction),n.on("whatsappInteraction:update",i.onUpdateWhatsappInteraction),function(){if(0<Object.keys(i.whatsappAccounts).length)for(var e=0;e<t.rows.length;e+=1)if(l(t.rows[e])){var n=t.rows[e];o(n,!0),r()}}(),e.$on("$destroy",function(){n.removeAllListeners("whatsappInteraction:save"),n.removeAllListeners("whatsappInteraction:update")})}e.$inject=["$scope","socket","whatsappInteractions","whatsappAccounts"],angular.module("app.dashboards").controller("UserWhatsappDashboardGeneralController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="FAX.EDIT_FAXACCOUNT",g.faxAccount=angular.copy(l),g.faxAccounts=r,g.newFaxAccount=!1,g.faxAccount||(g.faxAccount={waitForTheAssignedAgent:10,notificationSound:!0,queueTransferTimeout:300,agentTransferTimeout:300},g.title="FAX.NEW_FAXACCOUNT",g.newFaxAccount=!0),n.params.id&&(g.faxAccount.FaxAccountId=n.params.id),g.addNewFaxAccount=function(){g.errors=[],d.faxAccount.addAccountApplications(g.faxAccount).$promise.then(function(e){g.faxAccounts.unshift(e.toJSON()),o.success({title:"FaxAccount properly created",msg:g.faxAccount.name?g.faxAccount.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.faxAccount.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.faxAccount.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveFaxAccount=function(){g.errors=[],d.faxAccount.updateAccountApplications(g.faxAccount).$promise.then(function(e){var n=_.find(g.faxAccounts,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"FaxAccount properly saved!",msg:g.faxAccount.name?g.faxAccount.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.faxAccount.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.faxAccount.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteFaxAccount=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The faxAccount will be deleted.").ariaLabel("Delete FaxAccount").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.faxAccount.delete({id:g.faxAccount.id}).$promise.then(function(){_.remove(g.faxAccounts,{id:g.faxAccount.id}),o.success({title:"FaxAccount properly deleted!",msg:(g.faxAccount.name||"faxAccount")+" has been deleted!"}),v(g.faxAccount)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.faxAccount.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.faxAccount.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v,c.hasRole("admin")?d.trunk.get({fields:"id,name",sort:"name"}).$promise.then(function(e){g.trunks=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TRUNKS",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.trunk.get({fields:"id,name",sort:"name"}).$promise.then(function(e){g.trunks=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:g.currentUser.userProfileId,sectionId:1011}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(g.trunks,{id:e.resourceId})}),t=null;if(g.faxAccount&&(t=_.find(g.trunks,{id:Number(g.faxAccount.TrunkId)})),t&&!_.some(n,["id",t.id])){var a=_.find(g.trunks,{id:t.id});a.canSelect=!1,n.push(a)}g.trunks=n})}else{var t=[],a=null;g.faxAccount&&(a=_.find(g.trunks,{id:Number(g.faxAccount.TrunkId)}));for(var i=0;i<g.trunks.length;i++)a&&g.trunks[i].id===a.id&&(g.trunks[i].canSelect=!1,t.push(g.trunks[i]));g.trunks=t}}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETtrunks",msg:e.data?JSON.stringify(e.data):e.toString()})}),c.hasRole("admin")?d.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){g.lists=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_LISTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){g.lists=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:g.currentUser.userProfileId,sectionId:301}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(g.lists,{id:e.resourceId})}),t=null;if(g.faxAccount&&(t=_.find(g.lists,{id:Number(g.faxAccount.ListId)})),t&&!_.some(n,["id",t.id])){var a=_.find(g.lists,{id:t.id});a.canSelect=!1,n.push(a)}g.lists=n})}else{var t=[],a=null;g.faxAccount&&(a=_.find(g.lists,{id:Number(g.faxAccount.ListId)}));for(var i=0;i<g.lists.length;i++)a&&g.lists[i].id===a.id&&(g.lists[i].canSelect=!1,t.push(g.lists[i]));g.lists=t}}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETlists",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","faxAccounts","faxAccount","api","Auth","license","setting","crudPermissions"],angular.module("app.fax").controller("CreateOrEditFaxAccountDialogController",e)}(),function(){"use strict";function e(o,i,a,s,e){var r=this;function n(e,n){if(r.faxAccountApps.rows.length){var t=r.faxAccountApps.rows[n]?r.faxAccountApps.rows[n]:r.faxAccountApps.rows[0];i.show({controller:"EditFaxAccountApp"+(t.appType||t.app).toLowerCase()+"DialogController",controllerAs:"vm",templateUrl:"app/main/apps/fax/views/faxAccounts/edit/apps/"+(t.appType||t.app).toLowerCase()+"/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{faxAccountApp:t,faxAccount:r.faxAccount,crudPermissions:r.crudPermissions}}).then(function(e){e&&(e.id?r.faxAccountApps.rows[n]=e:r.faxAccountApps.rows.splice(n,0,e),l())}).catch(function(e){e&&s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:EDITMODALSHOW",msg:e.data?JSON.stringify(e.data):e.toString()})})}}function l(){for(var e=1,n=[],t=0;t<r.faxAccountApps.rows.length;t++,0){var a=r.faxAccountApps.rows[t],i=[],s=[];a.intervals="*,*,*,*"!==a.interval?[a.interval]:a.IntervalId?_.map(_.filter(r.intervals.rows,{IntervalId:a.IntervalId}),"interval"):[],a.context=r.faxAccount.context,a.exten=r.faxAccount.exten,a.type&&(a.type=a.type.toLowerCase()),a.priority=i.length?_.last(i).priority+1:e,e=(s.length?_.last(s).priority:a.priority)+1,n=_.concat(n,i,[a],s)}o.faxAccount.addApplications({id:r.faxAccount.id},_.sortBy(n,"priority")).$promise.then(function(e){r.faxAccountApps.rows=e.rows}).catch(function(e){console.error(e)})}function t(e){r.faxAccountApps=e||{count:0,rows:[]}}r.currentUser=e.getCurrentUser(),r.faxAccount={},r.faxAccountApps={count:0,rows:[]},r.selectedFaxAccountApps=[],r.crudPermissions,r.query={sort:"priority"},r.apps=_.reject(_.sortBy([{app:"Interval",appType:"interval",types:["always","custom","list"],fields:[],isApp:!1},{app:"noop",appType:"noop",type:"noop",icon:"icon-apps",interval:"*,*,*,*",required:!0,isApp:!0,fields:[{title:"Value",name:"value",type:"text",param:0}]},{app:"system",appType:"system",type:"system",icon:"icon-apps",interval:"*,*,*,*",required:!0,isApp:!0,extraApi:[{name:"variables",field:{name:"variable",key:"name"},route:"variable",filters:{fields:"id,name",sort:"name",nolimit:!0},permissions:{section:1012}}],fields:[{title:"Command",name:"command",type:"text",required:!0,param:0},{title:"Variable",name:"variable",type:"apiselect",values:"variables",value:"variable.name",option:"variable.name",defaultValues:[{value:"''",option:"None"}],defaultValue:"''",param:1}]},{app:"gotop",appType:"gotop",type:"goto",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"Priority",name:"priority",type:"number",required:!0,min:0,param:0}]},{app:"gotoif",appType:"gotoif",type:"gotoif",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"Condition",name:"condition",type:"text",required:!0,param:0},{title:"truepriority",name:"truepriority",type:"number",min:1,required:!0,param:1},{title:"falsepriority",name:"falsepriority",type:"number",min:1,required:!0,param:2}]},{app:"queue",appType:"queue",foreignKey:"FaxQueueId",type:"queue",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,extraApi:[{name:"queues",field:{name:"queue",key:"name"},route:"faxQueue",filters:{fields:"id,name,type",sort:"name",nolimit:!0},permissions:{section:901}}],fields:[{title:"Queue",name:"queue",type:"apiselect",values:"queues",value:"queue.name",option:"queue.name",defaultValue:300,required:!0,param:0},{title:"Timeout",name:"timeout",type:"number",max:2147483,min:0,defaultValue:300,required:!0,param:1}]},{app:"agent",appType:"agent",type:"agent",foreignKey:"UserId",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,extraApi:[{name:"agents",field:{name:"agent",key:"name"},route:"user",filters:{fields:"id,name",sort:"name",role:"agent",nolimit:!0},permissions:{section:202}}],fields:[{title:"Agent",name:"agent",type:"apiselect",values:"agents",value:"agent.name",option:"agent.name",required:!0,param:0},{title:"Timeout",name:"timeout",type:"number",max:2147483,min:0,required:!0,defaultValue:30,param:1}]},{app:"close",appType:"close",type:"close",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"Disposition",name:"disposition",type:"text",required:!0,param:0}]},{app:"tag",appType:"tag",type:"tag",foreignKey:"TagId",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,extraApi:[{name:"tags",field:{name:"tag",key:"name"},route:"tag",filters:{fields:"id,name",sort:"name",nolimit:!0},permissions:{section:1008}}],fields:[{title:"Tag",name:"tag",type:"apiselect",values:"tags",value:"tag.name",option:"tag.name",required:!0,param:0}]}],["app"]),{isApp:!1}),r.list={group:{name:"opt1",pull:"clone"},animation:100,sort:!1},r.applications={group:{name:"opt2",put:"opt1"},animation:100,onAdd:function(e){n(e,e.newIndex)},onSort:function(e){l()}},r.init=function(e,n){r.faxAccount=e,r.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},r.applications.disabled=!r.crudPermissions.canEdit,r.query.id=e.id,r.query.isApp=!0,r.query.nolimit=!0,r.getFaxAccountApps(),r.getIntervals()},r.deleteConfirm=function(e,n,t){var a=i.confirm().title("Are you sure want to delete the application?").htmlContent("<b>"+e.app+"</b> will be deleted.").ariaLabel("delete application").targetEvent(t).ok("OK").cancel("CANCEL");i.show(a).then(function(){r.faxAccountApps.rows.splice(n,1),l()},function(){console.log("CANCEL")})},r.getFaxAccountApps=function(){r.promise=o.faxAccount.getApplications(r.query,t).$promise},r.editFaxAccountApp=n,r.editInterval=function(e,n){if(r.faxAccountApps.rows.length){var t=r.faxAccountApps.rows[n]?r.faxAccountApps.rows[n]:r.faxAccountApps.rows[0];i.show({controller:"EditFaxAccountAppintervalDialogController",controllerAs:"vm",templateUrl:"app/main/apps/fax/views/faxAccounts/edit/apps/interval/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{interval:{interval:t.interval,IntervalId:t.IntervalId,application:!0},intervals:[],crudPermissions:r.crudPermissions}}).then(function(e){e&&(t.interval=e.interval||"*,*,*,*",t.IntervalId=e.IntervalId||null,l())})}},r.deleteFaxAccountApp=function(e){_.remove(r.faxAccountApps.rows,{id:e.id}),l(),s.success({title:"App deleted!",msg:e.app?e.app+" has been deleted!":""})},r.deleteSelectedFaxAccountApps=function(e){var n=i.confirm().title("Are you sure want to delete the selected applications?").htmlContent("<b>"+r.selectedFaxAccountApps.length+" selected</b> will be deleted.").ariaLabel("delete applications").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){r.selectedFaxAccountApps.forEach(function(e){_.remove(r.faxAccountApps.rows,{id:e.id})}),r.selectedFaxAccountApps=[],l()})},r.rewriteRouting=l,r.getIntervals=function(){return o.interval.get({fields:"id,interval,IntervalId"}).$promise.then(function(e){r.intervals=e}).catch(function(e){console.error(e)})}}e.$inject=["api","$mdDialog","$document","toasty","Auth"],angular.module("app.fax").controller("FaxAccountActionsController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r,l,d){var c=this;function m(){return a(function(t,n){return a(function(n,t){return s.user.get({fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return c.items=e.rows?e.rows:[],l.hasRole("admin")?e:c.section?c.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:c.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return c.allowedItems=_.map(n,function(e){return _.find(c.items,{id:l.hasRole("admin")||c.section.autoAssociation?e.id:e.resourceId})}),c.startingAllowedItems=angular.copy(c.allowedItems),c.items.forEach(function(e){var n=_.find(c.allowedItems,{id:e.id});l.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s.faxAccount.getAgents({id:c.faxAccount.id,fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];c.selectedItems=_.map(n,function(e){var n=_.find(c.items,{id:e.id});return n.penalty=e.UserFaxAccount?"penalty "+e.UserFaxAccount.penalty:"",n.internal=e.hasOwnProperty("internal")?"<"+e.internal+">":"",n}),c.startingSelectedItems=angular.copy(c.selectedItems),c.dualMultiselectOptions.selectedItems=c.selectedItems,c.dualMultiselectOptions.items=_.differenceBy(c.allowedItems,c.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}c.currentUser=l.getCurrentUser(),c.faxAccount=n,c.crudPermissions=d,c.realtime=o,c.items=[],c.allowedItems=[],c.selectedItems=[],c.startingAllowedItems=[],c.startingSelectedItems=[],c.pendingChanges=!1,c.onInit=function(){return l.hasRole("admin")?m().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:c.currentUser.userProfileId,name:"Agents"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return c.section=e,m()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})})},c.saveAgents=function(){var e=_.differenceBy(c.startingSelectedItems,c.selectedItems,"id"),n=_.differenceBy(c.selectedItems,c.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s.faxAccount.removeAgents({id:c.faxAccount.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s.faxAccount.addAgents({id:c.faxAccount.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){c.pendingChanges=!1,c.startingAllowedItems=angular.copy(c.allowedItems),c.startingSelectedItems=angular.copy(c.selectedItems),i.success({title:"SUCCESS",msg:"Agents association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},c.closeDialog=function(){e.hide()},c.dualMultiselectOptions={items:[],selectedItems:[],orderBy:"name",line1:"fullname",line2:["name","internal"],line3:"",labelAll:r.instant("FAX.ALL_AGENTS"),labelSelected:r.instant("FAX.SELECTED_AGENTS"),transferCallback:function(e,n){var t=_.xorBy(c.startingSelectedItems,c.selectedItems,"id");c.pendingChanges=!_.isEmpty(t)}}}e.$inject=["$mdDialog","$q","toasty","api","faxAccount","faxAccounts","realtime","$translate","Auth","crudPermissions"],angular.module("app.fax").controller("FaxAccountagentaddController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="FAX.EDIT_"+(a.appType||a.app).toUpperCase(),l.agent=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.agent.appdata)switch(l.agent.appType?l.agent.appType.toLowerCase():l.agent.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.agent.appdata.split(",");l.agent.key=d[0],l.agent.language=d[1],l.agent.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.agent.appdata.split(",");l.agent.projectId=d[0],l.agent.clientEmail=d[1],l.agent.privateKey=d[2],l.agent.language=d[3],l.agent.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.agent.appdata.split(",");l.agent.accesskeyid=d[0],l.agent.secretaccesskey=d[1],l.agent.lexregion=d[2],l.agent.botname=d[3],l.agent.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.agent.appdata.split(",");l.agent.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.agent.text=d.slice(1,d.length).join(",");break;case"message":l.agent.text=l.agent.appdata;break;case"set":l.agent.name=l.agent.appdata.split("=")[0],l.agent.value=l.agent.appdata.split("=")[1];break;case"agi":l.agent.project=l.agent.appdata;break;default:var c=l.agent.appdata.split(",");l.agent.agent=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.agent.timeout=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10)}else l.agent.timeout=30;function m(e){n.hide(e)}l.agent.type&&"outbound"===l.agent.type.toLowerCase()&&"outbounddial"===l.agent.appType.toLowerCase()&&(l.agent.prefix=l.agent.phone?l.agent.phone.split("$")[0]:void 0,l.agent.callerId=l.agent.callerID?"CALLERID(all)="+l.agent.callerID:void 0),l.saveFaxAccountApp=function(){l.errors=[];var e=[];l.agent.type&&"outbound"===l.agent.type.toLowerCase()&&"outboundDial"===l.agent.appType&&(l.agent.phone=i.cutdigits?(l.agent.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.agent.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.agent.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.agent.options+="U(xcally-mixmonitor-context)"):l.agent.options=l.agent.options.replace("U(xcally-mixmonitor-context)",""));var n=_.find(l.agents,{name:l.agent.agent});n&&(l.agent.UserId=n.id);if(l.agent.appType&&"custom"===l.agent.appType);else switch((l.agent.app||l.agent.appType).toLowerCase()){case"set":l.agent.appdata=l.agent.name+"="+l.agent.value;break;case"custom":break;default:e[0]=l.agent.agent,e[1]=l.agent.timeout,l.agent.appdata=e.join(",")}m(l.agent)},l.closeDialog=m,o.hasRole("admin")?s.user.get({fields:"id,name",sort:"name",role:"agent",nolimit:"true"}).$promise.then(function(e){l.agents=e.rows||[]}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):s.user.get({fields:"id,name",sort:"name",role:"agent",nolimit:"true"}).$promise.then(function(e){l.agents=e.rows||[]}).then(function(){return s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:202}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return s.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(l.agents,{id:e.resourceId})}),t=null;if(l.agent&&(t=_.find(l.agents,{name:l.agent.agent})),t&&!_.some(n,["id",t.id])){var a=_.find(l.agents,{id:t.id});a.canSelect=!1,n.push(a)}l.agents=n})}else{var t=[],a=null;l.agent&&(a=_.find(l.agents,{name:l.agent.agent}));for(var i=0;i<l.agents.length;i++)a&&l.agents[i].id===a.id&&(l.agents[i].canSelect=!1,t.push(l.agents[i]));l.agents=t}}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETagents",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$mdDialog","$q","toasty","faxAccountApp","faxAccount","api","Auth","crudPermissions"],angular.module("app.fax").controller("EditFaxAccountAppagentDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="FAX.EDIT_"+(a.appType||a.app).toUpperCase(),l.close=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.close.appdata)switch(l.close.appType?l.close.appType.toLowerCase():l.close.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.close.appdata.split(",");l.close.key=d[0],l.close.language=d[1],l.close.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.close.appdata.split(",");l.close.projectId=d[0],l.close.clientEmail=d[1],l.close.privateKey=d[2],l.close.language=d[3],l.close.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.close.appdata.split(",");l.close.accesskeyid=d[0],l.close.secretaccesskey=d[1],l.close.lexregion=d[2],l.close.botname=d[3],l.close.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.close.appdata.split(",");l.close.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.close.text=d.slice(1,d.length).join(",");break;case"message":l.close.text=l.close.appdata;break;case"set":l.close.name=l.close.appdata.split("=")[0],l.close.value=l.close.appdata.split("=")[1];break;case"agi":l.close.project=l.close.appdata;break;default:var c=l.close.appdata.split(",");l.close.disposition=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10)}function m(e){n.hide(e)}l.close.type&&"outbound"===l.close.type.toLowerCase()&&"outbounddial"===l.close.appType.toLowerCase()&&(l.close.prefix=l.close.phone?l.close.phone.split("$")[0]:void 0,l.close.callerId=l.close.callerID?"CALLERID(all)="+l.close.callerID:void 0),l.saveFaxAccountApp=function(){l.errors=[];var e=[];l.close.type&&"outbound"===l.close.type.toLowerCase()&&"outboundDial"===l.close.appType&&(l.close.phone=i.cutdigits?(l.close.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.close.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.close.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.close.options+="U(xcally-mixmonitor-context)"):l.close.options=l.close.options.replace("U(xcally-mixmonitor-context)",""));if(l.close.appType&&"custom"===l.close.appType);else switch((l.close.app||l.close.appType).toLowerCase()){case"set":l.close.appdata=l.close.name+"="+l.close.value;break;case"custom":break;default:e[0]=l.close.disposition,l.close.appdata=e.join(",")}m(l.close)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","faxAccountApp","faxAccount","api","Auth","crudPermissions"],angular.module("app.fax").controller("EditFaxAccountAppcloseDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="FAX.EDIT_"+(a.appType||a.app).toUpperCase(),l.gotoif=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.gotoif.appdata)switch(l.gotoif.appType?l.gotoif.appType.toLowerCase():l.gotoif.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.gotoif.appdata.split(",");l.gotoif.key=d[0],l.gotoif.language=d[1],l.gotoif.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.gotoif.appdata.split(",");l.gotoif.projectId=d[0],l.gotoif.clientEmail=d[1],l.gotoif.privateKey=d[2],l.gotoif.language=d[3],l.gotoif.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.gotoif.appdata.split(",");l.gotoif.accesskeyid=d[0],l.gotoif.secretaccesskey=d[1],l.gotoif.lexregion=d[2],l.gotoif.botname=d[3],l.gotoif.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.gotoif.appdata.split(",");l.gotoif.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.gotoif.text=d.slice(1,d.length).join(",");break;case"message":l.gotoif.text=l.gotoif.appdata;break;case"set":l.gotoif.name=l.gotoif.appdata.split("=")[0],l.gotoif.value=l.gotoif.appdata.split("=")[1];break;case"agi":l.gotoif.project=l.gotoif.appdata;break;default:var c=l.gotoif.appdata.split(",");l.gotoif.condition=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.gotoif.truepriority=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10),l.gotoif.falsepriority=_.isEmpty(c[2])?c[2]:isNaN(c[2])?c[2]:parseInt(c[2],10)}function m(e){n.hide(e)}l.gotoif.type&&"outbound"===l.gotoif.type.toLowerCase()&&"outbounddial"===l.gotoif.appType.toLowerCase()&&(l.gotoif.prefix=l.gotoif.phone?l.gotoif.phone.split("$")[0]:void 0,l.gotoif.callerId=l.gotoif.callerID?"CALLERID(all)="+l.gotoif.callerID:void 0),l.saveFaxAccountApp=function(){l.errors=[];var e=[];l.gotoif.type&&"outbound"===l.gotoif.type.toLowerCase()&&"outboundDial"===l.gotoif.appType&&(l.gotoif.phone=i.cutdigits?(l.gotoif.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.gotoif.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.gotoif.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.gotoif.options+="U(xcally-mixmonitor-context)"):l.gotoif.options=l.gotoif.options.replace("U(xcally-mixmonitor-context)",""));if(l.gotoif.appType&&"custom"===l.gotoif.appType);else switch((l.gotoif.app||l.gotoif.appType).toLowerCase()){case"set":l.gotoif.appdata=l.gotoif.name+"="+l.gotoif.value;break;case"custom":break;default:e[0]=l.gotoif.condition,e[1]=l.gotoif.truepriority,e[2]=l.gotoif.falsepriority,l.gotoif.appdata=e.join(",")}m(l.gotoif)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","faxAccountApp","faxAccount","api","Auth","crudPermissions"],angular.module("app.fax").controller("EditFaxAccountAppgotoifDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="FAX.EDIT_"+(a.appType||a.app).toUpperCase(),l.gotop=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.gotop.appdata)switch(l.gotop.appType?l.gotop.appType.toLowerCase():l.gotop.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.gotop.appdata.split(",");l.gotop.key=d[0],l.gotop.language=d[1],l.gotop.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.gotop.appdata.split(",");l.gotop.projectId=d[0],l.gotop.clientEmail=d[1],l.gotop.privateKey=d[2],l.gotop.language=d[3],l.gotop.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.gotop.appdata.split(",");l.gotop.accesskeyid=d[0],l.gotop.secretaccesskey=d[1],l.gotop.lexregion=d[2],l.gotop.botname=d[3],l.gotop.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.gotop.appdata.split(",");l.gotop.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.gotop.text=d.slice(1,d.length).join(",");break;case"message":l.gotop.text=l.gotop.appdata;break;case"set":l.gotop.name=l.gotop.appdata.split("=")[0],l.gotop.value=l.gotop.appdata.split("=")[1];break;case"agi":l.gotop.project=l.gotop.appdata;break;default:var c=l.gotop.appdata.split(",");l.gotop.priority=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10)}function m(e){n.hide(e)}l.gotop.type&&"outbound"===l.gotop.type.toLowerCase()&&"outbounddial"===l.gotop.appType.toLowerCase()&&(l.gotop.prefix=l.gotop.phone?l.gotop.phone.split("$")[0]:void 0,l.gotop.callerId=l.gotop.callerID?"CALLERID(all)="+l.gotop.callerID:void 0),l.saveFaxAccountApp=function(){l.errors=[];var e=[];l.gotop.type&&"outbound"===l.gotop.type.toLowerCase()&&"outboundDial"===l.gotop.appType&&(l.gotop.phone=i.cutdigits?(l.gotop.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.gotop.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.gotop.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.gotop.options+="U(xcally-mixmonitor-context)"):l.gotop.options=l.gotop.options.replace("U(xcally-mixmonitor-context)",""));if(l.gotop.appType&&"custom"===l.gotop.appType);else switch((l.gotop.app||l.gotop.appType).toLowerCase()){case"set":l.gotop.appdata=l.gotop.name+"="+l.gotop.value;break;case"custom":break;default:e[0]=l.gotop.priority,l.gotop.appdata=e.join(",")}m(l.gotop)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","faxAccountApp","faxAccount","api","Auth","crudPermissions"],angular.module("app.fax").controller("EditFaxAccountAppgotopDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d){var c=this;if(c.currentUser=l.getCurrentUser(),c.errors=[],c.title="TOOLS.EDIT_INTERVAL",c.interval=angular.copy(i),c.intervals=s,c.newInterval=!1,c.types=["always","custom","list"],c.crudPermissions=d,c.daysOfWeek=a.getDaysOfWeek(),c.monthNumber=a.getMonthNumber(),c.monthName=a.getMonthName(),c.daysOfMonth=a.getDaysOfMonth(),c.interval)if("*,*,*,*"!==c.interval.interval){c.type="custom";var m=c.interval.interval.split(","),u=m[0],p=m[1],g=m[2],v=m[3];if("*"!==u){var h,f=u.split("-")[0],b=u.split("-")[1];(h=new Date).setHours(Number(f.split(":")[0])),h.setMinutes(Number(f.split(":")[1])),c.timeRangeFrom=h,(h=new Date).setHours(Number(b.split(":")[0])),h.setMinutes(Number(b.split(":")[1])),c.timeRangeTo=h}"*"!==p&&(c.dayOfWeekFrom=p.split("-")[0],c.dayOfWeekTo=p.split("-")[1]),"*"!==g&&(c.monthDayFrom=g.split("-")[0],c.monthDayTo=g.split("-")[1]),"*"!==v&&(c.monthFrom=v.split("-")[0],c.monthTo=v.split("-")[1])}else c.type="always";else c.interval={interval:"*,*,*,*"},c.type="always",c.title="TOOLS.NEW_INTERVAL",c.newInterval=!0;function A(){switch(c.type){case"always":case"list":return"*,*,*,*";case"custom":var e=[];if("*"!==c.timeRangeFrom&&c.timeRangeFrom&&c.timeRangeTo){var n=(c.timeRangeFrom.getHours()<10?"0":"")+c.timeRangeFrom.getHours()+":"+(c.timeRangeFrom.getMinutes()<10?"0":"")+c.timeRangeFrom.getMinutes(),t=(c.timeRangeTo.getHours()<10?"0":"")+c.timeRangeTo.getHours()+":"+(c.timeRangeTo.getMinutes()<10?"0":"")+c.timeRangeTo.getMinutes();e.push(n+"-"+t)}else e.push("*");return c.dayOfWeekFrom?c.dayOfWeekTo?e.push(c.dayOfWeekFrom+"-"+c.dayOfWeekTo):e.push(c.dayOfWeekFrom):e.push("*"),c.monthDayFrom?c.monthDayTo?e.push(c.monthDayFrom+"-"+c.monthDayTo):e.push(c.monthDayFrom):e.push("*"),c.monthFrom?c.monthTo?e.push(c.monthFrom+"-"+c.monthTo):e.push(c.monthFrom):e.push("*"),e.join()}}function E(e){n.hide(e)}e.params.id&&!c.interval.application&&(c.interval.IntervalId=e.params.id),c.interval.IntervalId&&c.interval.application&&(c.type="list"),c.addNewInterval=function(){c.errors=[],c.interval.interval=A(),r.interval.save(c.interval).$promise.then(function(e){c.intervals.push(e),o.success({title:"Interval properly created",msg:c.interval.name?c.interval.name+" has been created!":""}),E()}).catch(function(e){console.error(e),c.errors=e.data.errors||[{message:e.toString(),type:"api.interval.save"}]})},c.saveInterval=function(){c.errors=[],c.interval.interval=A(),c.interval.application?("list"!==c.type&&(c.interval.IntervalId=null),E(c.interval)):r.interval.update({id:c.interval.id},c.interval).$promise.then(function(e){var n=_.find(c.intervals,{id:e.id});n&&_.merge(n,e),o.success({title:"Interval properly saved!",msg:"Interval has been saved!"}),E()}).catch(function(e){console.error(e),c.errors=e.data.errors||[{message:e.toString(),type:"api.interval.update"}]})},c.closeDialog=E,c.interval.application&&(l.hasRole("admin")?r.interval.get({fields:"id,name,interval,IntervalId",IntervalId:"null",nolimit:!0}).$promise.then(function(e){c.intervals=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_INTERVALS",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.interval.get({fields:"id,name,interval,IntervalId",IntervalId:"null",nolimit:!0}).$promise.then(function(e){c.intervals=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:c.currentUser.userProfileId,sectionId:1004}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=e&&e.rows?e.rows:[],t=[],a=null;c.interval&&(a=_.find(c.intervals,{name:c.interval.IntervalId})),a&&!_.some(n,["resourceId",a.id])&&c.intervals.forEach(function(e){e.id===a.id&&(e.canSelect=!1,t.push(e))}),c.intervals=t})}else c.intervals=[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_INTERVALS",msg:e.data?JSON.stringify(e.data):e.toString()})}))}e.$inject=["$state","$mdDialog","$mdToast","IndexFactory","interval","intervals","toasty","api","Auth","crudPermissions"],angular.module("app.voice").controller("EditFaxAccountAppintervalDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="FAX.EDIT_"+(a.appType||a.app).toUpperCase(),l.noop=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.noop.appdata)switch(l.noop.appType?l.noop.appType.toLowerCase():l.noop.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.noop.appdata.split(",");l.noop.key=d[0],l.noop.language=d[1],l.noop.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.noop.appdata.split(",");l.noop.projectId=d[0],l.noop.clientEmail=d[1],l.noop.privateKey=d[2],l.noop.language=d[3],l.noop.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.noop.appdata.split(",");l.noop.accesskeyid=d[0],l.noop.secretaccesskey=d[1],l.noop.lexregion=d[2],l.noop.botname=d[3],l.noop.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.noop.appdata.split(",");l.noop.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.noop.text=d.slice(1,d.length).join(",");break;case"message":l.noop.text=l.noop.appdata;break;case"set":l.noop.name=l.noop.appdata.split("=")[0],l.noop.value=l.noop.appdata.split("=")[1];break;case"agi":l.noop.project=l.noop.appdata;break;default:var c=l.noop.appdata.split(",");l.noop.value=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10)}function m(e){n.hide(e)}l.noop.type&&"outbound"===l.noop.type.toLowerCase()&&"outbounddial"===l.noop.appType.toLowerCase()&&(l.noop.prefix=l.noop.phone?l.noop.phone.split("$")[0]:void 0,l.noop.callerId=l.noop.callerID?"CALLERID(all)="+l.noop.callerID:void 0),l.saveFaxAccountApp=function(){l.errors=[];var e=[];l.noop.type&&"outbound"===l.noop.type.toLowerCase()&&"outboundDial"===l.noop.appType&&(l.noop.phone=i.cutdigits?(l.noop.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.noop.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.noop.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.noop.options+="U(xcally-mixmonitor-context)"):l.noop.options=l.noop.options.replace("U(xcally-mixmonitor-context)",""));if(l.noop.appType&&"custom"===l.noop.appType);else switch((l.noop.app||l.noop.appType).toLowerCase()){case"set":l.noop.appdata=l.noop.name+"="+l.noop.value;break;case"custom":break;default:e[0]=l.noop.value,l.noop.appdata=e.join(",")}m(l.noop)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","faxAccountApp","faxAccount","api","Auth","crudPermissions"],angular.module("app.fax").controller("EditFaxAccountAppnoopDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="FAX.EDIT_"+(a.appType||a.app).toUpperCase(),l.queue=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.queue.appdata)switch(l.queue.appType?l.queue.appType.toLowerCase():l.queue.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.queue.appdata.split(",");l.queue.key=d[0],l.queue.language=d[1],l.queue.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.queue.appdata.split(",");l.queue.projectId=d[0],l.queue.clientEmail=d[1],l.queue.privateKey=d[2],l.queue.language=d[3],l.queue.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.queue.appdata.split(",");l.queue.accesskeyid=d[0],l.queue.secretaccesskey=d[1],l.queue.lexregion=d[2],l.queue.botname=d[3],l.queue.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.queue.appdata.split(",");l.queue.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.queue.text=d.slice(1,d.length).join(",");break;case"message":l.queue.text=l.queue.appdata;break;case"set":l.queue.name=l.queue.appdata.split("=")[0],l.queue.value=l.queue.appdata.split("=")[1];break;case"agi":l.queue.project=l.queue.appdata;break;default:var c=l.queue.appdata.split(",");l.queue.queue=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.queue.timeout=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10)}else l.queue.queue=300,l.queue.timeout=300;function m(e){n.hide(e)}l.queue.type&&"outbound"===l.queue.type.toLowerCase()&&"outbounddial"===l.queue.appType.toLowerCase()&&(l.queue.prefix=l.queue.phone?l.queue.phone.split("$")[0]:void 0,l.queue.callerId=l.queue.callerID?"CALLERID(all)="+l.queue.callerID:void 0),l.saveFaxAccountApp=function(){l.errors=[];var e=[];l.queue.type&&"outbound"===l.queue.type.toLowerCase()&&"outboundDial"===l.queue.appType&&(l.queue.phone=i.cutdigits?(l.queue.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.queue.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.queue.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.queue.options+="U(xcally-mixmonitor-context)"):l.queue.options=l.queue.options.replace("U(xcally-mixmonitor-context)",""));var n=_.find(l.queues,{name:l.queue.queue});n&&(l.queue[_.capitalize("fax")+"QueueId"]=n.id);if(l.queue.appType&&"custom"===l.queue.appType);else switch((l.queue.app||l.queue.appType).toLowerCase()){case"set":l.queue.appdata=l.queue.name+"="+l.queue.value;break;case"custom":break;default:e[0]=l.queue.queue,e[1]=l.queue.timeout,l.queue.appdata=e.join(",")}m(l.queue)},l.closeDialog=m,o.hasRole("admin")?s.faxQueue.get({fields:"id,name,type",sort:"name",nolimit:"true"}).$promise.then(function(e){l.queues=e.rows||[]}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_QUEUES",msg:e.data?JSON.stringify(e.data):e.toString()})}):s.faxQueue.get({fields:"id,name,type",sort:"name",nolimit:"true"}).$promise.then(function(e){l.queues=e.rows||[]}).then(function(){return s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:901}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return s.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(l.queues,{id:e.resourceId})}),t=null;if(l.queue&&(t=_.find(l.queues,{name:l.queue.queue})),t&&!_.some(n,["id",t.id])){var a=_.find(l.queues,{id:t.id});a.canSelect=!1,n.push(a)}l.queues=n})}else{var t=[],a=null;l.queue&&(a=_.find(l.queues,{name:l.queue.queue}));for(var i=0;i<l.queues.length;i++)a&&l.queues[i].id===a.id&&(l.queues[i].canSelect=!1,t.push(l.queues[i]));l.queues=t}}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETqueues",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$mdDialog","$q","toasty","faxAccountApp","faxAccount","api","Auth","crudPermissions"],angular.module("app.fax").controller("EditFaxAccountAppqueueDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="FAX.EDIT_"+(a.appType||a.app).toUpperCase(),l.system=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.system.appdata)switch(l.system.appType?l.system.appType.toLowerCase():l.system.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.system.appdata.split(",");l.system.key=d[0],l.system.language=d[1],l.system.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.system.appdata.split(",");l.system.projectId=d[0],l.system.clientEmail=d[1],l.system.privateKey=d[2],l.system.language=d[3],l.system.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.system.appdata.split(",");l.system.accesskeyid=d[0],l.system.secretaccesskey=d[1],l.system.lexregion=d[2],l.system.botname=d[3],l.system.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.system.appdata.split(",");l.system.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.system.text=d.slice(1,d.length).join(",");break;case"message":l.system.text=l.system.appdata;break;case"set":l.system.name=l.system.appdata.split("=")[0],l.system.value=l.system.appdata.split("=")[1];break;case"agi":l.system.project=l.system.appdata;break;default:var c=l.system.appdata.split(",");l.system.command=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.system.variable=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10)}else l.system.variable="";function m(e){n.hide(e)}l.system.type&&"outbound"===l.system.type.toLowerCase()&&"outbounddial"===l.system.appType.toLowerCase()&&(l.system.prefix=l.system.phone?l.system.phone.split("$")[0]:void 0,l.system.callerId=l.system.callerID?"CALLERID(all)="+l.system.callerID:void 0),l.saveFaxAccountApp=function(){l.errors=[];var e=[];l.system.type&&"outbound"===l.system.type.toLowerCase()&&"outboundDial"===l.system.appType&&(l.system.phone=i.cutdigits?(l.system.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.system.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.system.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.system.options+="U(xcally-mixmonitor-context)"):l.system.options=l.system.options.replace("U(xcally-mixmonitor-context)",""));if(l.system.appType&&"custom"===l.system.appType);else switch((l.system.app||l.system.appType).toLowerCase()){case"set":l.system.appdata=l.system.name+"="+l.system.value;break;case"custom":break;default:e[0]=l.system.command,e[1]=l.system.variable,l.system.appdata=e.join(",")}m(l.system)},l.closeDialog=m,o.hasRole("admin")?s.variable.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.variables=e.rows||[]}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_VARIABLES",msg:e.data?JSON.stringify(e.data):e.toString()})}):s.variable.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.variables=e.rows||[]}).then(function(){return s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:1012}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return s.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(l.variables,{id:e.resourceId})}),t=null;if(l.system&&(t=_.find(l.variables,{name:l.system.variable})),t&&!_.some(n,["id",t.id])){var a=_.find(l.variables,{id:t.id});a.canSelect=!1,n.push(a)}l.variables=n})}else{var t=[],a=null;l.system&&(a=_.find(l.variables,{name:l.system.variable}));for(var i=0;i<l.variables.length;i++)a&&l.variables[i].id===a.id&&(l.variables[i].canSelect=!1,t.push(l.variables[i]));l.variables=t}}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvariables",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$mdDialog","$q","toasty","faxAccountApp","faxAccount","api","Auth","crudPermissions"],angular.module("app.fax").controller("EditFaxAccountAppsystemDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="FAX.EDIT_"+(a.appType||a.app).toUpperCase(),l.tag=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.tag.appdata)switch(l.tag.appType?l.tag.appType.toLowerCase():l.tag.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.tag.appdata.split(",");l.tag.key=d[0],l.tag.language=d[1],l.tag.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.tag.appdata.split(",");l.tag.projectId=d[0],l.tag.clientEmail=d[1],l.tag.privateKey=d[2],l.tag.language=d[3],l.tag.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.tag.appdata.split(",");l.tag.accesskeyid=d[0],l.tag.secretaccesskey=d[1],l.tag.lexregion=d[2],l.tag.botname=d[3],l.tag.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.tag.appdata.split(",");l.tag.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.tag.text=d.slice(1,d.length).join(",");break;case"message":l.tag.text=l.tag.appdata;break;case"set":l.tag.name=l.tag.appdata.split("=")[0],l.tag.value=l.tag.appdata.split("=")[1];break;case"agi":l.tag.project=l.tag.appdata;break;default:var c=l.tag.appdata.split(",");l.tag.tag=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10)}function m(e){n.hide(e)}l.tag.type&&"outbound"===l.tag.type.toLowerCase()&&"outbounddial"===l.tag.appType.toLowerCase()&&(l.tag.prefix=l.tag.phone?l.tag.phone.split("$")[0]:void 0,l.tag.callerId=l.tag.callerID?"CALLERID(all)="+l.tag.callerID:void 0),l.saveFaxAccountApp=function(){l.errors=[];var e=[];l.tag.type&&"outbound"===l.tag.type.toLowerCase()&&"outboundDial"===l.tag.appType&&(l.tag.phone=i.cutdigits?(l.tag.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.tag.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.tag.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.tag.options+="U(xcally-mixmonitor-context)"):l.tag.options=l.tag.options.replace("U(xcally-mixmonitor-context)",""));var n=_.find(l.tags,{name:l.tag.tag});n&&(l.tag.TagId=n.id);if(l.tag.appType&&"custom"===l.tag.appType);else switch((l.tag.app||l.tag.appType).toLowerCase()){case"set":l.tag.appdata=l.tag.name+"="+l.tag.value;break;case"custom":break;default:e[0]=l.tag.tag,l.tag.appdata=e.join(",")}m(l.tag)},l.closeDialog=m,o.hasRole("admin")?s.tag.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.tags=e.rows||[]}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TAGS",msg:e.data?JSON.stringify(e.data):e.toString()})}):s.tag.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.tags=e.rows||[]}).then(function(){return s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:1008}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return s.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(l.tags,{id:e.resourceId})}),t=null;if(l.tag&&(t=_.find(l.tags,{name:l.tag.tag})),t&&!_.some(n,["id",t.id])){var a=_.find(l.tags,{id:t.id});a.canSelect=!1,n.push(a)}l.tags=n})}else{var t=[],a=null;l.tag&&(a=_.find(l.tags,{name:l.tag.tag}));for(var i=0;i<l.tags.length;i++)a&&l.tags[i].id===a.id&&(l.tags[i].canSelect=!1,t.push(l.tags[i]));l.tags=t}}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETtags",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$mdDialog","$q","toasty","faxAccountApp","faxAccount","api","Auth","crudPermissions"],angular.module("app.fax").controller("EditFaxAccountApptagDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(e){m.dispositions=e||{count:0,rows:[]}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=l.faxAccount.getDispositions(m.query,u).$promise}function g(e){l.disposition.delete({id:e.id}).$promise.then(function(){p(),d.success({title:r.instant("TOOLS.NOTIFICATIONS.DISPOSITION_DELETED_SUCCESS_TITLE")})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEdisposition"}];for(var n=0;n<e.data.errors.length;n++)d.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEdisposition",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}m.currentUser=c.getCurrentUser(),m.dispositions={count:0,rows:[]},m.selectedDispositions=[],m.crudPermissions,m.levels={first:"1st",second:"2nd",third:"3rd"},m.query={fields:"id,level,name,description,ParentId,createdAt,updatedAt",sort:"-updatedAt",limit:10,page:1},m.init=function(e,n){m.faxAccount=e||{},m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.query.FaxAccountId=m.faxAccount.id,m.query.id=m.faxAccount.id,p()},m.deleteConfirm=function(e,n){var t=_.some(m.dispositions.rows,["ParentId",e.id]),a=i.confirm().title(r.instant("TOOLS.NOTIFICATIONS.DISPOSITION_DELETE_TITLE")).content(r.instant("TOOLS.NOTIFICATIONS."+(t?"DISPOSITION_DELETE_MESSAGE_CHILDREN":"DISPOSITION_DELETE_MESSAGE"),{name:e.name})).ariaLabel("Delete disposition").targetEvent(n).ok("OK").cancel(r.instant("TOOLS.CANCEL"));i.show(a).then(function(){g(e)})},m.success=u,m.getDispositions=p,m.createOrEditDisposition=function(e,n){i.show({controller:"CreateOrEditDispositionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/dispositions/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{disposition:n,model:{id:m.faxAccount.id,field:"FaxAccountId",route:"faxAccount"},license:null,setting:null,crudPermissions:m.crudPermissions}}).then(function(e){e&&p()})},m.deleteDisposition=g,m.exportSelectedDispositions=function(){var e=angular.copy(m.selectedDispositions);return m.selectedDispositions=[],e},m.deleteSelectedDispositions=function(e){var n=i.confirm().title(r.instant("TOOLS.NOTIFICATIONS.DISPOSITIONS_DELETE_TITLE")).content(r.instant("TOOLS.NOTIFICATIONS.DISPOSITIONS_DELETE_MESSAGE",{total:m.selectedDispositions.length})).ariaLabel("Delete dispositions").targetEvent(e).ok("OK").cancel(r.instant("TOOLS.CANCEL"));i.show(n).then(function(){m.selectedDispositions.forEach(function(e){g(e)}),m.selectedDispositions=[]})},m.deselectDispositions=function(){m.selectedDispositions=[]},m.selectAllDispositions=function(){m.selectedDispositions=m.dispositions.rows};var v=!0,h=1;e.$watch("vm_dc.query.filter",function(e,n){v?o(function(){v=!1}):(n||(h=m.query.page),e!==n&&(m.query.page=1),e||(m.query.page=h),p())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","api","toasty","Auth"],angular.module("app.fax").controller("FaxAccountDispositionsController",e)}(),function(){"use strict";function e(e,a,n,t,i,s,o,r,l,d,c){var m=this;function u(e){var n=[{model:"disposition",action:"get",field:"name",params:{field:"name,level",level:e,MailAccountId:"null",SmsAccountId:"null",ChatWebsiteId:"null",OpenchannelAccountId:"null",WhatsappAccountId:"null",FaxAccountId:"null",ListId:"null",nolimit:!0}}],t=[{model:"faxAccount",action:"getDispositions",field:"name",params:{id:m.faxAccount.id,field:"name,level",level:e,nolimit:!0}}];return _.concat(t,n)}function p(e){m.faxAccountInteractions=e||{count:0,rows:[]};for(var n=0;n<m.faxAccountInteractions.rows.length;n+=1){var t=m.faxAccountInteractions.rows[n];h(t),t.Owner.name=f(t)}}function g(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=d.faxInteraction.get(m.query,p).$promise}function v(e){d.faxInteraction.delete({id:e.id}).$promise.then(function(){_.remove(m.faxAccountInteractions.rows,{id:e.id}),m.faxAccountInteractions.count-=1,m.faxAccountInteractions.rows.length||g(),l.success({title:"Interaction deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETfaxAccount"}];for(var n=0;n<e.data.errors.length;n++)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETfaxAccount",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}function h(e){e.Contact?(e.contactName=(e.Contact.firstName||"")+" "+(e.Contact.lastName||""),e.contactInfo=e.Contact.fax):e.contactName=i.instant("DASHBOARDS.UNKNOWN")}function f(e){return e.UserId?e.UserId===m.currentUser.id?i.instant("DASHBOARDS.ME"):e.Owner.fullname+" <"+e.Owner.internal+">":i.instant("DASHBOARDS.NOT_ASSIGNED")}m.currentUser=c.getCurrentUser(),m.faxAccount={},m.faxAccountInteractions={count:0,rows:[]},m.selectedFaxAccountInteractions=[],m.crudPermissions,m.query={read:"null",closed:"null",sort:"-createdAt",includeAll:"true",limit:10,page:1},m.init=function(e,n,t){m.faxAccount=e,m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.userProfile=t,m.query.FaxAccountId=m.faxAccount.id,m.advancedSearch={fields:[{name:"Id",column:"id",type:"number"},{name:"Contact",column:"Contact",type:"autocomplete",options:{searchFields:["firstName","lastName","email"],route:{model:"cmContact",action:"get",params:{fields:"id,firstName,lastName,email",Contact:"@autocomplete",nolimit:!0}},extraOperators:["$substring"],excludedOperators:["$ne"]}},{name:"Subject",column:"subject",type:"text",options:{excludedOperators:["$eq","$ne"]}},{name:"Body",column:"body",type:"text",options:{excludedOperators:["$eq","$ne"]}},{name:"Status",column:"closed",type:"select",values:[{id:0,translate:"DASHBOARDS.OPENED"},{id:1,translate:"DASHBOARDS.CLOSED"}],options:{excludedOperators:["$ne"]}},{name:"Agent",column:"User",type:"autocomplete",options:{table:"i",route:{model:"user",action:"get",params:{role:"agent",fields:"id,name,fullname",nolimit:!0}},searchFields:["fullname","name"],extraOperators:["$substring"],excludedOperators:["$ne"]}},{name:"Tags",column:"Tag",type:"multiselect",options:{route:{model:"tag",action:"get",params:{nolimit:!0}},excludedOperators:["$notIn"]}},{name:"Start Date",column:"createdAt",type:"date",options:{excludedOperators:["$ne"]}},{name:"Read",column:"unreadMessages",type:"select",values:[{id:1,translate:"DASHBOARDS.READ"},{id:0,translate:"DASHBOARDS.UNREAD"}],options:{excludedOperators:["$ne"]}},{name:"Disposition",column:"disposition",type:"multiselect",options:{routes:u("first")}},{name:"Second Disposition",column:"secondDisposition",type:"multiselect",options:{routes:u("second")}},{name:"Third Disposition",column:"thirdDisposition",type:"multiselect",options:{routes:u("third")}}]},d.tag.get({sort:"name"}).$promise.then(function(e){m.tags=e||{count:0,rows:[]}}).then(function(){m.quickFilters=[{name:"Start Date",key:"createdAt",type:"date",label:"DASHBOARDS.SELECT_DATE"},{name:"Messages",key:"read",type:"select",label:"DASHBOARDS.SELECT_READ_UNREAD",customOptions:[{value:0,translate:"DASHBOARDS.UNREAD"},{value:1,translate:"DASHBOARDS.READ"},{value:null,translate:"DASHBOARDS.ALL"}]},{name:"Status",key:"closed",type:"select",label:"DASHBOARDS.SELECT_STATUS",customOptions:[{value:0,translate:"DASHBOARDS.OPENED"},{value:1,translate:"DASHBOARDS.CLOSED"},{value:null,translate:"DASHBOARDS.ALL"}]},{name:"Agent",key:"UserId",type:"select",label:"DASHBOARDS.SELECT_AGENT",customOptions:[{value:"null",translate:"DASHBOARDS.NOT_ASSIGNED"},{value:void 0,translate:"DASHBOARDS.ALL"}]},{name:"Tag",key:"tag",type:"multiselect",label:"DASHBOARDS.SELECT_TAG",options:m.tags.rows,placeholder:"DASHBOARDS.TAGS"}]})},m.deleteConfirm=function(e,n){var t=o.confirm().title("Are you sure want to delete the interaction?").htmlContent("<b>"+(e.name||e.id&&_.upperFirst("interaction #")+e.id||"interaction")+"</b> will be deleted.").ariaLabel("delete interaction").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){v(e)},function(){console.log("CANCEL")})},m.faxInteractionDownload=function(s,e,n){return d.faxInteraction.download({id:s.id,exists:!0,attachments:n}).$promise.then(function(e){var n=[e.buffer],t="interaction"+s.id,a=new Blob(n,{type:e.type});t="fax-interaction"+s.id+".zip";var i=window.document.createElement("a");i.setAttribute("href",URL.createObjectURL(a)),i.setAttribute("download",t),document.body.appendChild(i),i.click()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n+=1)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.faxAccount.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},m.success=p,m.getFaxAccountInteractions=g,m.createOrEditFaxAccountInteraction=function(e,n){o.show({controller:"CreateOrEditInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/fax/views/faxAccounts/edit/interactions/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,locals:{faxAccount:m.faxAccount,interaction:n,interactions:m.faxAccountInteractions.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.spyfaxInteraction=function(e,t){o.show({controller:"AgentGeneralInteractionController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/agent.general.interaction.dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,onShowing:function(e,n){e.vm.init({id:1,channel:"fax",interaction:t,spy:!0},a.$parent.vm.setting)}})},m.openAdvancedSearch=function(){o.show({controller:"AdvancedSearchController",controllerAs:"vm",templateUrl:"app/core/dialogs/advanced-search/dialog.html",parent:angular.element(r.body),clickOutsideToClose:!1,locals:{fields:m.advancedSearch.fields,color:void 0,storagePath:"fax.faxAccounts"},fullscreen:!0}).then(function(e){if(m.isSearchBarVisible=!(e.value||!m.query.filter),e.apply){var n="";n+="||FaxAccountId:=$eq["+m.faxAccount.id+"]",m.query.search=e.value?e.value+=n:e.value,g()}}).catch(function(e){l.error({title:"ERROR",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},m.exportSelectedFaxAccountInteractions=function(){var e=angular.copy(m.selectedFaxAccountInteractions);return m.selectedFaxAccountInteractions=[],e},m.deleteFaxAccountInteraction=v,m.deleteSelectedFaxAccountInteractions=function(e){var n=o.confirm().title("Are you sure want to delete the selected interactions?").htmlContent("<b>"+m.selectedFaxAccountInteractions.length+" selected</b> will be deleted.").ariaLabel("delete interactions").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedFaxAccountInteractions.forEach(function(e){v(e)}),m.selectedFaxAccountInteractions=[]})}}e.$inject=["$cookies","$scope","$state","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.fax").controller("FaxAccountInteractionsController",e)}(),function(){"use strict";function e(t,e,a,i,s,n,o,r,l,d,c,m,u){var p=this;p.currentUser=d.getCurrentUser(),p.license=n,p.setting=o,p.passwordPattern=p.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",p.location=e.protocol()+"://"+e.host(),p.faxAccount=c||t.params.faxAccount||{},p.userProfile=m,p.userProfileSection=u&&1==u.count?u.rows[0]:null,p.crudPermissions=d.parseCrudPermissions(p.userProfileSection?p.userProfileSection.crudPermissions:null),p.hasModulePermissions={},p.selectedTab=t.params.tab||0,p.gotogoto=function(e,n){{if(!d.hasRole("admin"))return r.userProfileSection.get({userProfileId:d.getCurrentUser().userProfileId,sectionId:910}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;n&&n.enabled?t.go("app.fax.realtime.accounts",{}):l.info({title:s.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_TITLE"),msg:s.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_MESSAGE")})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"USERPROFILE:GET_SECTION",msg:e.status?JSON.stringify(e.data):e.toString()})});t.go("app.fax.realtime.accounts",{})}},p.agentadddialog=function(e,n){a.show({controller:"FaxAccountagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/fax/views/faxAccounts/edit/agentadd/agentadd.html",parent:angular.element(i.body),targetEvent:n,clickOutsideToClose:!0,locals:{faxAccount:e,faxAccounts:p.faxAccounts?p.faxAccounts.rows:[],crudPermissions:p.crudPermissions,realtime:!1}})},p.alert=l.info,p.gotoFaxAccounts=function(){t.go("app.fax.faxAccounts",{},{reload:"app.fax.faxAccounts"})},p.saveFaxAccount=function(){r.faxAccount.updateAccountApplications(p.faxAccount).$promise.then(function(){l.success({title:"FaxAccount updated!",msg:p.faxAccount.name?p.faxAccount.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETfaxAccount",msg:e.data?JSON.stringify(e.data):e.toString()})})},d.hasRole("admin")?r.trunk.get({fields:"id,name",sort:"name"}).$promise.then(function(e){p.trunks=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TRUNKS",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.trunk.get({fields:"id,name",sort:"name"}).$promise.then(function(e){p.trunks=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:p.currentUser.userProfileId,sectionId:1011}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(p.trunks,{id:e.resourceId})}),t=null;if(p.faxAccount&&(t=_.find(p.trunks,{id:Number(p.faxAccount.TrunkId)})),t&&!_.some(n,["id",t.id])){var a=_.find(p.trunks,{id:t.id});a.canSelect=!1,n.push(a)}p.trunks=n})}else{var t=[],a=null;p.faxAccount&&(a=_.find(p.trunks,{id:Number(p.faxAccount.TrunkId)}));for(var i=0;i<p.trunks.length;i++)a&&p.trunks[i].id===a.id&&(p.trunks[i].canSelect=!1,t.push(p.trunks[i]));p.trunks=t}}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETtrunks",msg:e.data?JSON.stringify(e.data):e.toString()})}),d.hasRole("admin")?r.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){p.lists=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_LISTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){p.lists=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:p.currentUser.userProfileId,sectionId:301}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(p.lists,{id:e.resourceId})}),t=null;if(p.faxAccount&&(t=_.find(p.lists,{id:Number(p.faxAccount.ListId)})),t&&!_.some(n,["id",t.id])){var a=_.find(p.lists,{id:t.id});a.canSelect=!1,n.push(a)}p.lists=n})}else{var t=[],a=null;p.faxAccount&&(a=_.find(p.lists,{id:Number(p.faxAccount.ListId)}));for(var i=0;i<p.lists.length;i++)a&&p.lists[i].id===a.id&&(p.lists[i].canSelect=!1,t.push(p.lists[i]));p.lists=t}}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETlists",msg:e.data?JSON.stringify(e.data):e.toString()})}),d.hasRole("admin")?r.pause.get({fields:"name,id",sort:"name",nolimit:"true"}).$promise.then(function(e){p.pauses=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_PAUSES",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.pause.get({fields:"name,id",sort:"name",nolimit:"true"}).$promise.then(function(e){p.pauses=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:p.currentUser.userProfileId,sectionId:1005}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(p.pauses,{id:e.resourceId})});p.pauses.forEach(function(e){_.some(n,["id",e.id])||(e.canSelect=!1),n.push(e)}),p.pauses=n})}else p.pauses=[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETpauses",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","faxAccount","userProfile","userProfileSection"],angular.module("app.fax").controller("FaxAccountController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.faxAccounts=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="faxAccounts",f.listOrder="",f.listOrderAsc=null,f.selectedFaxAccounts=[],f.query={fields:"createdAt,updatedAt,id,name,key,headerinfo,TrunkId,localstationid,ListId,waitForTheAssignedAgent,mandatoryDisposition,mandatoryDispositionPauseId,description,ecm,minrate,maxrate,modem,gateway,faxdetect,t38timeout,tech,notificationSound,notificationShake,notificationTemplate,queueTransfer,queueTransferTimeout,agentTransfer,agentTransferTimeout",sort:"-updatedAt",limit:10,page:1},f.arrayecm=_.keyBy([{option:"yes",value:"'yes'"},{option:"no",value:"'no'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayminrate=_.keyBy([{option:"2400",value:"'2400'"},{option:"4800",value:"'4800'"},{option:"7200",value:"'7200'"},{option:"9600",value:"'9600'"},{option:"12000",value:"'12000'"},{option:"14400",value:"'14400'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraymaxrate=_.keyBy([{option:"2400",value:"'2400'"},{option:"4800",value:"'4800'"},{option:"7200",value:"'7200'"},{option:"9600",value:"'9600'"},{option:"12000",value:"'12000'"},{option:"14400",value:"'14400'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraytech=_.keyBy([{option:"SIP",value:"'SIP'"},{option:"IAX",value:"'IAX'"},{option:"DADHI",value:"'DADHI'"},{option:"KHOMP",value:"'KHOMP'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editstate=function(e,n){t.go("app.fax.faxAccounts.edit",{id:e.id,faxAccount:e,crudPermissions:f.crudPermissions})},f.interactionsgoto=function(e,n){t.go("app.fax.faxAccounts.edit",{id:e.id,tab:5})},f.gotorealtimegoto=function(e,n){{if(!g.hasRole("admin"))return m.userProfileSection.get({userProfileId:g.getCurrentUser().userProfileId,sectionId:910}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;n&&n.enabled?t.go("app.fax.realtime.accounts",{}):p.info({title:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_TITLE"),msg:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_MESSAGE")})}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"USERPROFILE:GET_SECTION",msg:e.status?JSON.stringify(e.data):e.toString()})});t.go("app.fax.realtime.accounts",{})}},f.agentadddialog=function(e,n){i.show({controller:"FaxAccountagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/fax/views/faxAccounts/edit/agentadd/agentadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{faxAccount:e,faxAccounts:f.faxAccounts?f.faxAccounts.rows:[],crudPermissions:f.crudPermissions,realtime:!1}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("faxAccount")+"?").htmlContent("<b>"+(e.name||"faxAccount")+"</b> will be deleted.").ariaLabel("delete faxAccount").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getFaxAccounts=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.faxAccount.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="FaxAccounts",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditFaxAccount=function(e,n){i.show({controller:"CreateOrEditFaxAccountDialogController",controllerAs:"vm",templateUrl:"app/main/apps/fax/views/faxAccounts/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{faxAccount:n,faxAccounts:f.faxAccounts.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteFaxAccount=y,f.exportSelectedFaxAccounts=function(){var e=angular.copy(f.selectedFaxAccounts);return f.selectedFaxAccounts=[],e},f.deleteSelectedFaxAccounts=function(e){var n=i.confirm().title("Are you sure want to delete the selected faxAccounts?").htmlContent("<b>"+f.selectedFaxAccounts.length+" selected</b> will be deleted.").ariaLabel("delete FaxAccounts").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedFaxAccounts.forEach(function(e){y(e)}),f.selectedFaxAccounts=[]})},f.deselectFaxAccounts=function(){f.selectedFaxAccounts=[]},f.selectAllFaxAccounts=function(){f.selectedFaxAccounts=f.faxAccounts.rows},g.hasRole("admin")?m.trunk.get({fields:"id,name",sort:"name"}).$promise.then(function(e){f.trunks=e.rows||[]}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TRUNKS",msg:e.data?JSON.stringify(e.data):e.toString()})}):m.trunk.get({fields:"id,name",sort:"name"}).$promise.then(function(e){f.trunks=e.rows||[]}).then(function(){return m.userProfileSection.get({userProfileId:f.currentUser.userProfileId,sectionId:1011}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return m.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var t=_.map(e.rows,function(e){return _.find(f.trunks,{id:e.resourceId})}),a=null;a=[],f.faxAccounts.rows.forEach(function(e){var n=_.find(f.trunks,{id:Number(e.TrunkId)});a.push(n)}),_.isEmpty(a)||a.forEach(function(e){if(!_.some(t,["id",e.id])){var n=_.find(f.trunks,{id:e.id});n.canSelect=!1,t.push(n)}}),f.trunks=t})}else{var t=[],a=[];f.faxAccounts.rows.forEach(function(e){var n=_.find(f.trunks,{id:Number(e.TrunkId)});a.push(n)});for(var i=0;i<f.trunks.length;i++){_.some(a,{id:f.trunks[i].id})&&(f.trunks[i].canSelect=!1,t.push(f.trunks[i]))}f.trunks=t}}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETtrunks",msg:e.data?JSON.stringify(e.data):e.toString()})}),g.hasRole("admin")?m.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){f.lists=e.rows||[]}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_LISTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):m.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){f.lists=e.rows||[]}).then(function(){return m.userProfileSection.get({userProfileId:f.currentUser.userProfileId,sectionId:301}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return m.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(f.lists,{id:e.resourceId})}),t=null;if(f.faxAccount&&(t=_.find(f.lists,{id:Number(f.faxAccount.ListId)})),t&&!_.some(n,["id",t.id])){var a=_.find(f.lists,{id:t.id});a.canSelect=!1,n.push(a)}f.lists=n})}else{var t=[],a=null;f.faxAccount&&(a=_.find(f.lists,{id:Number(f.faxAccount.ListId)}));for(var i=0;i<f.lists.length;i++)a&&f.lists[i].id===a.id&&(f.lists[i].canSelect=!1,t.push(f.lists[i]));f.lists=t}}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETlists",msg:e.data?JSON.stringify(e.data):e.toString()})});var b=!0,A=1;function E(e){f.faxAccounts=e||{count:0,rows:[]}}function y(e){m.faxAccount.delete({id:e.id}).$promise.then(function(){_.remove(f.faxAccounts.rows,{id:e.id}),f.faxAccounts.count-=1,f.faxAccounts.rows.length||f.getFaxAccounts(),p.success({title:_.startCase("FaxAccount")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEfaxAccount"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEfaxAccount",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getFaxAccounts())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","faxAccounts","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.fax").controller("FaxAccountsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,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.userStatusOptions=[{title:"Online",icon:"icon-checkbox-marked-circle",color:"#4CAF50"},{title:"Away",icon:"icon-clock",color:"#FFC107"},{title:"Do not Disturb",icon:"icon-minus-circle",color:"#F44336"},{title:"Invisible",icon:"icon-checkbox-blank-circle-outline",color:"#BDBDBD"},{title:"Offline",icon:"icon-checkbox-blank-circle-outline",color:"#616161"}],I.languages={ar:{title:"Arabic",translation:"TOOLBAR.ARABIC",code:"ar",flag:"ar"},cs:{title:"Czech",translation:"TOOLBAR.CZECH",code:"cs",flag:"cs"},da:{title:"Danish",translation:"TOOLBAR.DANISH",code:"da",flag:"da"},de:{title:"German",translation:"TOOLBAR.GERMAN",code:"de",flag:"de"},en:{title:"English",translation:"TOOLBAR.ENGLISH",code:"en",flag:"us"},es:{title:"Spanish",translation:"TOOLBAR.SPANISH",code:"es",flag:"es"},et:{title:"Estonian",translation:"TOOLBAR.ESTONIAN",code:"et",flag:"et"},fa:{title:"Persian",translation:"TOOLBAR.PERSIAN",code:"fa",flag:"fa"},fi:{title:"Finnish",translation:"TOOLBAR.FINNISH",code:"fi",flag:"fi"},fr:{title:"French",translation:"TOOLBAR.FRENCH",code:"fr",flag:"fr"},he:{title:"Hebrew",translation:"TOOLBAR.HEBREW",code:"he",flag:"he"},hi:{title:"Hindi",translation:"TOOLBAR.HINDI",code:"hi",flag:"hi"},hu:{title:"Hungarian",translation:"TOOLBAR.HUNGARIAN",code:"hu",flag:"hu"},id:{title:"Indonesian",translation:"TOOLBAR.INDONESIAN",code:"id",flag:"id"},it:{title:"Italian",translation:"TOOLBAR.ITALIAN",code:"it",flag:"it"},ja:{title:"Japanese",translation:"TOOLBAR.JAPANESE",code:"ja",flag:"ja"},ko:{title:"Korean",translation:"TOOLBAR.KOREAN",code:"ko",flag:"ko"},lv:{title:"Latvian",translation:"TOOLBAR.LATVIAN",code:"lv",flag:"lv"},nl:{title:"Dutch",translation:"TOOLBAR.DUTCH",code:"nl",flag:"nl"},no:{title:"Norwegian",translation:"TOOLBAR.NORWEGIAN",code:"no",flag:"no"},pl:{title:"Polish",translation:"TOOLBAR.POLISH",code:"pl",flag:"pl"},"pt-BR":{title:"Brazilian",translation:"TOOLBAR.BRAZILIAN",code:"pt-BR",flag:"pt-BR"},"pt-PT":{title:"Portuguese",translation:"TOOLBAR.PORTUGUESE",code:"pt-PT",flag:"pt-PT"},ru:{title:"Russian",translation:"TOOLBAR.RUSSIAN",code:"ru",flag:"ru"},sv:{title:"Swedish",translation:"TOOLBAR.SWEDISH",code:"sv",flag:"sv"},tr:{title:"Turkish",translation:"TOOLBAR.TURKISH",code:"tr",flag:"tr"},"zh-CN":{title:"ChineseSimplified",translation:"TOOLBAR.CHINESESIMPLIFIED",code:"zh-CN",flag:"zh-CN"},"zh-TW":{title:"ChineseTraditional",translation:"TOOLBAR.CHINESETRADITIONAL",code:"zh-TW",flag:"zh-TW"}},I.isWebRTCBarRegistered=!1;var O=["ar","fa","he"],C=S.getLogger("toolbar");function w(n){n.queuecallerleaveAt?I.waitingQueueCalls=_.filter(I.waitingQueueCalls,function(e){return e!==n.uniqueid}):I.waitingQueueCalls.push(n.uniqueid)}function R(e){w(e)}function x(e){"inbound"===e.type&&w(e)}function N(){h.connect(),h.on("user:update",H),h.on("user:called",V),h.on("chatInternalMessage:save",F),h.on("chatInternalMessage:update",$),h.on("userVoiceQueue:save",k),h.on("voiceQueue:save",L),h.on("userVoiceQueue:remove",k),h.on("voiceQueue:remove",L),h.on("voiceQueue:update",L),h.on("user:forcelogout",B),h.on("userNotification:send",Q),h.on("userNotification:recalc:"+I.user.id,W),h.onWithoutApply("voice_queue_channel:save",x),h.onWithoutApply("voice_queue_channel:remove",R)}function D(){h.disconnect("logout")}function P(){var e={id:v.getCurrentUser().id,fields:"id,name,type,dialMethod,dialActive",channel:"voice",nolimit:!0};return f.user.getQueues(e).$promise.then(function(e){I.voiceQueues=e.rows})}function L(){P()}function k(e){_.toInteger(e.UserId)===v.getCurrentUser().id&&P()}function M(e,n,t){n||(n=!1),t||(t={type:"click",target:"button.preview-button"}),c.show({controller:"PreviewDialogController",controllerAs:"vm",templateUrl:"app/toolbar/preview/dialog.html",parent:angular.element(m.body),targetEvent:t,clickOutsideToClose:!0,locals:{preview:e,currentUser:I.currentUser,isRecallNotification:n},resolve:{customFields:["apiResolver",function(e){return e.resolve("cmCustomField@get",{nolimit:!0})}]}})}function U(){return I.license.chat&&(I.hasPermission(105)||I.currentUser.chatAutoanswer)||I.license.mail&&I.hasPermission(106)||I.currentUser.emailAutoanswer||I.license.messaging&&I.hasPermission(107)||I.currentUser.smsAutoanswer||I.license.openchannel&&I.hasPermission(108)||I.currentUser.openchannelAutoanswer||I.license.fax&&I.hasPermission(109)||I.currentUser.faxAutoanswer||I.license.whatsapp&&(I.hasPermission(114)||I.currentUser.whatsappAutoanswer)}function F(e){e.ToId!==I.currentUser.id||e.ChatGroupId||(I.unreadTotalMessages+=1),e.ToId===I.currentUser.id&&e.FromId!==I.currentUser.id&&!e.read&&e.ChatGroupId&&I.unreadTotalGroupMessages++}function $(e){e.ToId===I.currentUser.id&&e.read&&0<I.unreadTotalMessages&&!e.ChatGroupId&&(I.unreadTotalMessages-=1),e.ToId===I.currentUser.id&&e.read&&e.ChatGroupId&&0<I.unreadTotalGroupMessages&&I.unreadTotalGroupMessages--}function q(e){return D(),s.resolve().then(function(){if(!v.isTelephone())return S.flush()}).then(function(){return v.logout(e)}).then(function(){return t.$broadcast("webrtc::logout"),a.go("app.login")}).catch(function(e){C.error(e)})}function G(e,n){c.show({controller:"ChangePasswordController",controllerAs:"vm",templateUrl:"app/toolbar/changepassword/changepassword.html",parent:angular.element(m.body),targetEvent:e,clickOutsideToClose:!n,escapeToClose:!n,locals:{user:I.user,setting:A,reset:n}})}function H(e){if(e.id===I.user.id)if("agent"===e.role&&_.isBoolean(e.online)&&!e.online)if(0!==I.user.showWebBar){var n;D();var t=c.confirm({title:r.instant("TOOLBAR.WARNING")+"!",htmlContent:"<span>"+r.instant("TOOLBAR.SOMEONE_LOGGED_YOU_OUT")+"</span><br><span>"+r.instant("TOOLBAR.SESSION_TIMEOUT")+"</span>",ariaLabel:r.instant("TOOLBAR.WARNING")+"!",ok:r.instant("TOOLBAR.STAY_LOGGED"),cancel:r.instant("TOOLBAR.LOGOUT"),onComplete:function(){n=setTimeout(function(){c.cancel()},6e4)}});c.show(t).then(function(){return clearTimeout(n),v.queueLogin().then(function(){N(),_.merge(I.user,e),v.setCurrentUser(I.user)})}).catch(function(){clearTimeout(n),q(!0)})}else q(!0);else _.merge(I.user,e),v.setCurrentUser(I.user)}function V(e){if(I.isWebRTCBarRegistered&&2===I.currentUser.showWebBar&&"agent"===I.currentUser.role){var n=I.currentUser.privacyEnabled?y.mask(e.calleridnum):e.calleridnum;p.info({title:"WebRTC Popup",msg:"<div>            <span>Call from: "+n+"</span><br>            <span>Queue: "+e.queue+"</span><br>            <span>Extra: "+(e.variables.extravar?e.variables.extravar:"Not defined")+"</span><br>            </div>",showClose:!0,timeout:1e4,html:!0})}}function B(e){if(C.debug("onForceLogout -> data",e),e.user.id===I.user.id&&0!==I.user.showWebBar)return D(),s.resolve().then(function(){if(!v.isTelephone())return S.flush()}).then(function(){return v.logout(!0)}).then(function(){t.$broadcast("webrtc::logout"),c.show(c.alert().parent(angular.element(m.body)).clickOutsideToClose(!1).escapeToClose(!1).title(r.instant("TOOLBAR.WARNING")).textContent(r.instant("TOOLBAR.USER_FORCE_LOGOUT",{ip:e.ip})).ok("OK")).then(function(){return a.go("app.login")})}).catch(function(e){C.error(e)})}function Q(e){var n=e;if(I.currentUser.id===n.recipient){var t=r.instant("TOOLBAR.NOTIFICATION_TITLE",{sender:n.sender}),a=n.description?r.instant("TOOLBAR.NOTIFICATION_TITLE_RECIPIENT",{recipient:n.description}):null;p.wait({title:a?t+" "+a:t,msg:n.content,clickToClose:!1,timeout:!1,sound:n.beep,html:!0})}}function W(e){f.user.get({id:I.currentUser.id}).$promise.then(function(e){I.currentUser.permissions=e.permissions,I.autoanswerIconColor=U()?"green-700-fg":"gray-700-fg"})}I.toggleSidenav=function(e){i(e).toggle()},I.logout=q,I.changeLanguage=function(e){if(!I.languages.hasOwnProperty(e.code)){return void l.show({template:'<md-toast id="language-message" layout="column" layout-align="center start"><div class="md-toast-content">Motion supports multiple translations through angular-translate module, but currently we do not support the selected language. If you want to help us, send us a message.</div></md-toast>',hideDelay:7e3,position:"top right",parent:"#content"})}I.selectedLanguage=e,u.put("motion.language",e.code),r.use(e.code),"app.callysquare.projects.edit"===a.current.name&&d.location.reload();0<=O.indexOf(e.code)?p.info({title:r.instant("TOOLBAR.CHANGE_LANGUAGE_TITLE"),msg:r.instant("TOOLBAR.CHANGE_LANGUAGE_MESSAGE")}):n.$parent.$parent.vm.direction="ltr"},I.setUserStatus=function(e){I.userStatus=e},I.toggleHorizontalMobileMenu=function(){I.bodyEl.toggleClass("ms-navigation-horizontal-mobile-menu-active")},I.toggleMsNavigationFolded=function(){g.toggleFolded()},I.search=function(n){for(var e=[],t=g.getFlatNavigation(),a=s.defer(),i=0;i<t.length;i++)t[i].uisref&&e.push(t[i]);n&&(e=e.filter(function(e){if(-1<angular.lowercase(e.title).search(angular.lowercase(n)))return!0}));return o(function(){a.resolve(e)},1e3),a.promise},I.searchResultClick=function(e){e.uisref&&(e.stateParams?a.go(e.state,e.stateParams):a.go(e.state))},I.openSettings=function(){t.$broadcast("webrtc::settings")},I.changePassword=G,I.isAgent=function(){return v.getCurrentUser()&&v.hasRole("agent")},I.pause=function(e){var n=e||"DEFAULT PAUSE";_.some(I.webRTCSessions,["confirmed",!0])&&(n="#"+n);return f.user.pause({id:I.user.id,type:n}).$promise.catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:PAUSEUSER",msg:e.status?JSON.stringify(e.data):e.toString()})})},I.unpause=function(){return f.user.unpause({id:I.user.id}).$promise.catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:UNPAUSEUSER",msg:e.status?JSON.stringify(e.data):e.toString()})})},I.preview=function(n){return I.disable=!0,f.cmHopper.getPreview().$promise.then(function(e){_.isNil(e)||_.isNil(e.Queue)||!e.Queue.dialActive?p.info({title:"PREVIEW",msg:"CAMPAIGN NOT ACTIVE"}):M(e,!1,n)}).catch(function(e){if(404===e.status)p.info({title:"PREVIEW",msg:"CONTACT NOT AVAILABLE"});else if(e.data&&e.data.errors&&e.data.errors.length){I.errors=e.data.errors||[{message:e.toString(),type:"api.openchannelMessage.accept"}];for(var n=0;n<e.data.errors.length;n+=1)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.openchannelMessage.accept",msg:e.data?JSON.stringify(e.data.message):e.toString()})}).finally(function(){I.disable=!1})},I.autoAnswerNotificationsDialog=function(e){if(U()){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.hasPermission=function(e){return _.includes(I.currentUser.permissions,e)},I.waitingQueueCalls=[],function(){I.user=v.getCurrentUser(),P().then(function(){return f.rpc.getVoiceQueuesChannels().$promise}).then(function(e){e.rows.forEach(function(n){if("inbound"===n.type&&!n.queuecallerleaveAt){var e=_.find(I.voiceQueues,function(e){return e.name===n.queue});e&&I.waitingQueueCalls.push(n.uniqueid)}})}),I.conf.ha1=I.user.md5secret,I.conf.id=I.user.id,I.conf.name=I.user.name,I.conf.fullname=I.user.fullname,I.conf.internal=I.user.internal,I.conf.recording=I.user.phoneBarEnableRecording,I.conf.autoAnswer=I.user.phoneBarAutoAnswer,I.conf.enableSettings=I.user.phoneBarEnableSettings,I.conf.enableDtmfTone=I.user.phoneBarEnableDtmfTone,I.conf.autoAnswerDelay=I.user.phoneBarAutoAnswerDelay,I.userStatus=I.userStatusOptions[0];var e=u.get("motion.language");e&&I.languages.hasOwnProperty(e)?I.selectedLanguage=I.languages[e]:I.selectedLanguage=I.languages[r.preferredLanguage()];if(f.pause.get({fields:"name",nolimit:!0}).$promise.then(function(e){I.pauses=e.rows?e.rows:[]}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETPAUSES",msg:e.status?JSON.stringify(e.data):e.toString()})}),"LOCAL_LOGIN"==v.getAuthenticationType()&&I.setting.securePassword)if(I.user.passwordResetAt){var n=moment(I.user.passwordResetAt).add(I.setting.passwordExpiresDays||90,"day");moment().isAfter(n)?G(null,!0):moment().add(15,"day").isAfter(n)&&p.warning({title:r.instant("TOOLBAR.WARNING")+"!",msg:r.instant("TOOLBAR.PASSWORD_EXPIRE_REMAINING_DAYS")+": "+Math.ceil(n.diff(moment(),"days",!0)),timeout:2e4})}else G(null,!0);W()}(),N(),I.openPreviewDialog=M,f.chatInternalMessage.get({fields:"FromId",ToId:I.currentUser.id,read:!1,nolimit:!0}).$promise.then(function(e){I.unreadTotalMessages=e.rows.length}),n.$on("$destroy",function(){h.removeAllListeners("user:called"),h.removeAllListeners("user:update"),h.removeAllListeners("chatInternalMessage:save"),h.removeAllListeners("chatInternalMessage:update"),h.removeAllListeners("userVoiceQueue:save"),h.removeAllListeners("voiceQueue:save"),h.removeAllListeners("userVoiceQueue:remove"),h.removeAllListeners("voiceQueue:remove"),h.removeAllListeners("voiceQueue:update"),h.removeAllListeners("user:forcelogout"),h.removeAllListeners("userNotification:send"),h.removeAllListeners("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\')" 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 badge-count">{{vm.contacts > 99 ? \'99+\' : vm.contacts}}</div>\n      <md-icon md-font-icon="icon-fire" class="icon red-900-fg"></md-icon>\n      <md-tooltip><span translate="TOOLBAR.PREVIEW">Preview</span></md-tooltip>\n    </md-button>\n    <md-button ng-if="vm.user.role === \'agent\' && vm.license.voice && vm.user.permissions.includes(110)" class="preview-button no-margin" ng-disabled="vm.disable" aria-label="Language" md-menu-origin md-menu-align-target>\n      <div ng-if="vm.waitingQueueCalls.length > 0" class="md-accent-bg queues-call-count badge-count">{{vm.waitingQueueCalls.length}}</div>\n      <md-icon md-font-icon="icon-phone-incoming blue-fg" class="icon"></md-icon>\n      <md-tooltip><span translate="TOOLBAR.WAITINGQUEUECALLS">Waiting Queues Calls</span></md-tooltip>\n    </md-button>\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
similarity index 98%
rename from public/styles/app.d45f5a7f.css
rename to public/styles/app.6414467d.css
index aa6b231..147ae28 100644 (file)
@@ -1 +1 @@
-[data-ng-click],[ng-click],[x-ng-click]{cursor:pointer}.ms-container{width:100%!important}.dark-lime-fg{color:#575b2e!important}.dark-red-fg{color:#9e3333!important}.iron-fg{color:#555865!important}.light-brown-fg{color:#645733!important}.ms-container .ms-list{height:380px!important}.ms-container .ms-selectable li.ms-elem-selectable,.ms-container .ms-selection li.ms-elem-selection{padding:6px 12px!important;height:34px!important}md-input-container:not(.md-input-has-value) input:not(:focus){color:inherit!important}.ms-container .ms-search{height:34px;margin-bottom:5px;border:solid 1px #e5e5e5;background-color:#fff;box-shadow:none;width:100%;padding-left:6px}.ms-container .ms-footer{text-align:center}.no-border{border:none!important}.left .motion-spinner{border-top-color:#00d7cc!important;border-left-color:#00d7cc!important}.right .motion-spinner{border-top-color:#00d7cc!important;border-right-color:#00d7cc!important}.md-option-info-text{font-size:10px}md-pagination-wrapper{width:auto!important}md-autocomplete.no-container-margin md-autocomplete-wrap md-input-container{margin:0!important}md-dialog.report-selection-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}md-dialog.advanced-search-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}.md-dialog-action-center{justify-content:center!important}.flag-24{height:24px}button.auto-width{min-width:auto!important}button.size-8{transform:scale(.8)}md-icon.auto-size{height:auto!important;width:auto!important}md-switch.auto-height{height:auto!important}.hidden{visibility:hidden}.user-profile-section-help{background:#fcf20f0f;border:1px solid rgba(0,0,0,.12);padding:5px}.email-preview-message{display:-webkit-box;margin:0 auto;display:block;height:200px;line-height:1.4;-webkit-line-clamp:10;-webkit-box-orient:vertical;overflow:hidden;text-overflow:ellipsis;word-break:break-all}button.advanced-search.md-accent-bg.md-button.md-default-theme:not([disabled]).md-icon-button:hover{background-color:#0091ea}.blink{animation:blink 2s ease-in infinite}.no-click{pointer-events:none}.spinner-overlay{position:absolute;top:0;right:0;bottom:0;left:0;z-index:2;background:rgba(43,43,43,.5)}ms-quick-filter[disabled]{pointer-events:none;opacity:.7}ms-search-bar[disabled]{pointer-events:none;opacity:.7}@keyframes blink{from,to{opacity:1}50%{opacity:0}}textarea.api-key-area{background:0 0;resize:none}.badge{min-width:20px;height:20px;line-height:20px;padding:0 7px;font-size:11px;font-weight:700;border-radius:20px;transition:opacity .2s ease-in-out .1s}md-tooltip.multiline div.md-content{height:auto!important}.auto-margin{margin:auto}md-menu-item md-menu.no-margin button{display:inline-block;border-radius:0;margin:auto 0;font-size:15px;text-transform:none;font-weight:400;height:100%;padding-left:16px;padding-right:16px;width:100%}md-date-range md-menu span.md-select-value{border-bottom-color:rgba(0,0,0,.12)}.keep-on-top{z-index:9999!important}.margin-auto{margin:auto}.xenialab-violet-light-bg{background-color:#9c4fd3!important}.xenialab-violet-light-fg{color:#9c4fd3!important}.no-margin-top{margin-top:0!important}.no-margin-bottom{margin-bottom:0!important}.disabled-button{display:inline-block;position:relative;cursor:default;min-height:36px;min-width:88px;line-height:36px;vertical-align:middle;align-items:center;text-align:center;border-radius:3px;box-sizing:border-box;user-select:none;outline:0;border:0;padding:0 6px;margin:6px 8px;background:rgba(0,0,0,.12);color:rgba(0,0,0,.38);white-space:nowrap;text-transform:uppercase;font-weight:500;font-size:14px;font-style:inherit;font-variant:inherit;font-family:inherit;text-decoration:none;overflow:hidden}.word-break-all{word-break:break-all}.mw-150{max-width:150px!important}@supports (-ms-ime-align:auto){md-tabs{display:inline!important}}@supports (-ms-accelerator:true){md-tabs{display:inline!important}}@supports (-moz-transform:translate(0,0)){md-tabs{display:inline!important}}body[dir=rtl] table.md-table td.md-cell,body[dir=rtl] table.md-table th.md-column{text-align:right!important}body[dir=rtl] table.md-table td.md-cell md-checkbox,body[dir=rtl] table.md-table th.md-column md-checkbox{margin-right:12px!important}body[dir=rtl] .ms-navigation .ms-navigation-node .ms-navigation-item>.ms-navigation-button .icon{margin:0 0 0 16px!important}body[dir=rtl] .ms-navigation .ms-navigation-node .ms-navigation-item>a.ms-navigation-button{padding-right:45px}body[dir=rtl] .md-table-pagination>.buttons{direction:ltr}body[dir=rtl] .md-table-pagination>.buttons>.label{direction:rtl}body[dir=rtl] .header .logo .logo-icon{margin:5px 0 0 15px!important}body[dir=rtl] md-switch .md-container{margin-right:inherit!important}#toasty.toasty-position-top-right{top:64px}.preview_cancel{padding:5px;float:left;background-color:red}.preview_open{padding:5px;float:right;background-color:green}.hover-token{cursor:pointer}body,html{height:100%;position:relative}body{margin:0;padding:0}[tabindex='-1']:focus{outline:0}.inset{padding:10px}a.md-no-style,button.md-no-style{font-weight:400;background-color:inherit;text-align:left;border:none;padding:0;margin:0}button,input,select,textarea{vertical-align:baseline}button,html input[type=button],input[type=reset],input[type=submit]{cursor:pointer;-webkit-appearance:button}button[disabled],html input[type=button][disabled],input[type=reset][disabled],input[type=submit][disabled]{cursor:default}textarea{vertical-align:top;overflow:auto}input[type=search]{-webkit-appearance:textfield;box-sizing:content-box;-webkit-box-sizing:content-box}input[type=search]::-webkit-search-cancel-button,input[type=search]::-webkit-search-decoration{-webkit-appearance:none}input:-webkit-autofill{text-shadow:none}.md-visually-hidden{border:0;clip:rect(0 0 0 0);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;text-transform:none;width:1px}.md-shadow{position:absolute;top:0;left:0;bottom:0;right:0;border-radius:inherit;pointer-events:none}.md-shadow-bottom-z-1{box-shadow:0 2px 5px 0 rgba(0,0,0,.26)}.md-shadow-bottom-z-2{box-shadow:0 4px 8px 0 rgba(0,0,0,.4)}.md-shadow-animated.md-shadow{transition:box-shadow .28s cubic-bezier(.4,0,.2,1)}.md-ripple-container{pointer-events:none;position:absolute;overflow:hidden;left:0;top:0;width:100%;height:100%;transition:all .55s cubic-bezier(.25,.8,.25,1)}.md-ripple{position:absolute;transform:translate(-50%,-50%) scale(0);transform-origin:50% 50%;opacity:0;border-radius:50%}.md-ripple.md-ripple-placed{transition:margin .9s cubic-bezier(.25,.8,.25,1),border .9s cubic-bezier(.25,.8,.25,1),width .9s cubic-bezier(.25,.8,.25,1),height .9s cubic-bezier(.25,.8,.25,1),opacity .9s cubic-bezier(.25,.8,.25,1),transform .9s cubic-bezier(.25,.8,.25,1)}.md-ripple.md-ripple-scaled{transform:translate(-50%,-50%) scale(1)}.md-ripple.md-ripple-active,.md-ripple.md-ripple-full,.md-ripple.md-ripple-visible{opacity:.2}.md-ripple.md-ripple-remove{animation:md-remove-ripple .9s cubic-bezier(.25,.8,.25,1)}@keyframes md-remove-ripple{0%{opacity:.15}100%{opacity:0}}.md-padding{padding:8px}.md-margin{margin:8px}.md-scroll-mask{position:absolute;background-color:transparent;top:0;right:0;bottom:0;left:0;z-index:50}.md-scroll-mask>.md-scroll-mask-bar{display:block;position:absolute;background-color:#fafafa;right:0;top:0;bottom:0;z-index:65;box-shadow:inset 0 0 1px rgba(0,0,0,.3)}.md-no-momentum{-webkit-overflow-scrolling:auto}.md-no-flicker{-webkit-filter:blur(0)}@media (min-width:960px){.md-padding{padding:16px}}body[dir=ltr],body[dir=rtl],html[dir=ltr],html[dir=rtl]{unicode-bidi:embed}bdo[dir=rtl]{direction:rtl;unicode-bidi:bidi-override}bdo[dir=ltr]{direction:ltr;unicode-bidi:bidi-override}body,html{-webkit-tap-highlight-color:transparent;-webkit-touch-callout:none;min-height:100%;-webkit-text-size-adjust:100%;-ms-text-size-adjust:100%;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.md-display-4{font-size:112px;font-weight:300;letter-spacing:-.010em;line-height:112px}.md-display-3{font-size:56px;font-weight:400;letter-spacing:-.005em;line-height:56px}.md-display-2{font-size:45px;font-weight:400;line-height:64px}.md-display-1{font-size:34px;font-weight:400;line-height:40px}.md-headline{font-size:24px;font-weight:400;line-height:32px}.md-title{font-size:20px;font-weight:500;letter-spacing:.005em}.md-subhead{font-size:16px;font-weight:400;letter-spacing:.010em;line-height:24px}.md-body-1{font-size:14px;font-weight:400;letter-spacing:.010em;line-height:20px}.md-body-2{font-size:14px;font-weight:500;letter-spacing:.010em;line-height:24px}.md-caption{font-size:12px;letter-spacing:.020em}.md-button{letter-spacing:.010em}button,html,input,select,textarea{font-family:Roboto,"Helvetica Neue",sans-serif}button,input,select,textarea{font-size:100%}@keyframes md-autocomplete-list-out{0%{animation-timing-function:linear}50%{opacity:0;height:40px;animation-timing-function:ease-in}100%{height:0;opacity:0}}@keyframes md-autocomplete-list-in{0%{opacity:0;height:0;animation-timing-function:ease-out}50%{opacity:0;height:40px}100%{opacity:1;height:40px}}md-autocomplete{border-radius:2px;display:block;height:40px;position:relative;overflow:visible;min-width:190px}md-autocomplete[disabled] input{cursor:default}md-autocomplete[md-floating-label]{border-radius:0;background:0 0;height:auto}md-autocomplete[md-floating-label] md-input-container{padding-bottom:0}md-autocomplete[md-floating-label] md-autocomplete-wrap{height:auto}md-autocomplete[md-floating-label] button{position:absolute;top:auto;bottom:0;right:0;width:30px;height:30px}md-autocomplete md-autocomplete-wrap{display:flex;flex-direction:row;box-sizing:border-box;position:relative;overflow:visible;height:40px}md-autocomplete md-autocomplete-wrap.md-menu-showing{z-index:51}md-autocomplete md-autocomplete-wrap input,md-autocomplete md-autocomplete-wrap md-input-container{flex:1 1 0%;box-sizing:border-box;min-width:0}md-autocomplete md-autocomplete-wrap md-progress-linear{position:absolute;bottom:-2px;left:0}md-autocomplete md-autocomplete-wrap md-progress-linear.md-inline{bottom:40px;right:2px;left:2px;width:auto}md-autocomplete md-autocomplete-wrap md-progress-linear .md-mode-indeterminate{position:absolute;top:0;left:0;width:100%;height:3px;transition:none}md-autocomplete md-autocomplete-wrap md-progress-linear .md-mode-indeterminate .md-container{transition:none;height:3px}md-autocomplete md-autocomplete-wrap md-progress-linear .md-mode-indeterminate.ng-enter{transition:opacity .15s linear}md-autocomplete md-autocomplete-wrap md-progress-linear .md-mode-indeterminate.ng-enter.ng-enter-active{opacity:1}md-autocomplete md-autocomplete-wrap md-progress-linear .md-mode-indeterminate.ng-leave{transition:opacity .15s linear}md-autocomplete md-autocomplete-wrap md-progress-linear .md-mode-indeterminate.ng-leave.ng-leave-active{opacity:0}md-autocomplete input:not(.md-input){font-size:14px;box-sizing:border-box;border:none;box-shadow:none;outline:0;background:0 0;width:100%;padding:0 15px;line-height:40px;height:40px}md-autocomplete input:not(.md-input)::-ms-clear{display:none}md-autocomplete button{position:relative;line-height:20px;text-align:center;width:30px;height:30px;cursor:pointer;border:none;border-radius:50%;padding:0;font-size:12px;background:0 0;margin:auto 5px}md-autocomplete button:after{content:'';position:absolute;top:-6px;right:-6px;bottom:-6px;left:-6px;border-radius:50%;transform:scale(0);opacity:0;transition:all .4s cubic-bezier(.25,.8,.25,1)}md-autocomplete button:focus{outline:0}md-autocomplete button:focus:after{transform:scale(1);opacity:1}md-autocomplete button md-icon{position:absolute;top:50%;left:50%;transform:translate3d(-50%,-50%,0) scale(.9)}md-autocomplete button md-icon path{stroke-width:0}md-autocomplete button.ng-enter{transform:scale(0);transition:transform .15s ease-out}md-autocomplete button.ng-enter.ng-enter-active{transform:scale(1)}md-autocomplete button.ng-leave{transition:transform .15s ease-out}md-autocomplete button.ng-leave.ng-leave-active{transform:scale(0)}@media screen and (-ms-high-contrast:active){md-autocomplete input{border:1px solid #fff}md-autocomplete li:focus{color:#fff}}.md-virtual-repeat-container.md-autocomplete-suggestions-container{position:absolute;box-shadow:0 2px 5px rgba(0,0,0,.25);height:225.5px;max-height:225.5px;z-index:100}.md-virtual-repeat-container.md-not-found{height:48px}.md-autocomplete-suggestions{margin:0;list-style:none;padding:0}.md-autocomplete-suggestions li{font-size:14px;overflow:hidden;padding:0 15px;line-height:48px;height:48px;transition:background .15s linear;margin:0;white-space:nowrap;text-overflow:ellipsis}.md-autocomplete-suggestions li:focus{outline:0}.md-autocomplete-suggestions li:not(.md-not-found-wrapper){cursor:pointer}@media screen and (-ms-high-contrast:active){.md-autocomplete-suggestions,md-autocomplete{border:1px solid #fff}}md-backdrop{transition:opacity 450ms;position:absolute;top:0;bottom:0;left:0;right:0;z-index:50}md-backdrop.md-menu-backdrop{position:fixed!important;z-index:99}md-backdrop.md-select-backdrop{z-index:81;transition-duration:0}md-backdrop.md-dialog-backdrop{z-index:79}md-backdrop.md-bottom-sheet-backdrop{z-index:69}md-backdrop.md-sidenav-backdrop{z-index:59}md-backdrop.md-click-catcher{position:absolute}md-backdrop.md-opaque{opacity:.48}md-backdrop.md-opaque.ng-enter{opacity:0}md-backdrop.md-opaque.ng-enter.md-opaque.ng-enter-active{opacity:.48}md-backdrop.md-opaque.ng-leave{opacity:.48;transition:opacity .4s}md-backdrop.md-opaque.ng-leave.md-opaque.ng-leave-active{opacity:0}md-bottom-sheet{position:absolute;left:0;right:0;bottom:0;padding:8px 16px 88px 16px;z-index:70;border-top-width:1px;border-top-style:solid;transform:translate3d(0,80px,0);transition:all .4s cubic-bezier(.25,.8,.25,1);transition-property:transform}md-bottom-sheet.md-has-header{padding-top:0}md-bottom-sheet.ng-enter{opacity:0;transform:translate3d(0,100%,0)}md-bottom-sheet.ng-enter-active{opacity:1;display:block;transform:translate3d(0,80px,0)!important}md-bottom-sheet.ng-leave-active{transform:translate3d(0,100%,0)!important;transition:all .3s cubic-bezier(.55,0,.55,.2)}md-bottom-sheet .md-subheader{background-color:transparent;font-family:Roboto,"Helvetica Neue",sans-serif;line-height:56px;padding:0;white-space:nowrap}md-bottom-sheet md-inline-icon{display:inline-block;height:24px;width:24px;fill:#444}md-bottom-sheet md-list-item{display:flex;outline:0}md-bottom-sheet md-list-item:hover{cursor:pointer}md-bottom-sheet.md-list md-list-item{padding:0;align-items:center;height:48px}md-bottom-sheet.md-grid{padding-left:24px;padding-right:24px;padding-top:0}md-bottom-sheet.md-grid md-list{display:flex;flex-direction:row;flex-wrap:wrap;transition:all .5s;align-items:center}md-bottom-sheet.md-grid md-list-item{flex-direction:column;align-items:center;transition:all .5s;height:96px;margin-top:8px;margin-bottom:8px}@media (max-width:960px){md-bottom-sheet.md-grid md-list-item{flex:1 1 33.3333333333%;max-width:33.3333333333%}md-bottom-sheet.md-grid md-list-item:nth-of-type(3n+1){align-items:flex-start}md-bottom-sheet.md-grid md-list-item:nth-of-type(3n){align-items:flex-end}}@media (min-width:960px) and (max-width:1279px){md-bottom-sheet.md-grid md-list-item{flex:1 1 25%;max-width:25%}}@media (min-width:1280px) and (max-width:1919px){md-bottom-sheet.md-grid md-list-item{flex:1 1 16.6666666667%;max-width:16.6666666667%}}@media (min-width:1920px){md-bottom-sheet.md-grid md-list-item{flex:1 1 14.2857142857%;max-width:14.2857142857%}}md-bottom-sheet.md-grid md-list-item::before{display:none}md-bottom-sheet.md-grid md-list-item .md-list-item-content{display:flex;flex-direction:column;align-items:center;width:48px;padding-bottom:16px}md-bottom-sheet.md-grid md-list-item .md-grid-item-content{border:1px solid transparent;display:flex;flex-direction:column;align-items:center;width:80px}md-bottom-sheet.md-grid md-list-item .md-grid-text{font-weight:400;line-height:16px;font-size:13px;margin:0;white-space:nowrap;width:64px;text-align:center;text-transform:none;padding-top:8px}@media screen and (-ms-high-contrast:active){md-bottom-sheet{border:1px solid #fff}}button.md-button::-moz-focus-inner{border:0}.md-button{display:inline-block;position:relative;cursor:pointer;min-height:36px;min-width:88px;line-height:36px;vertical-align:middle;align-items:center;text-align:center;border-radius:3px;box-sizing:border-box;user-select:none;outline:0;border:0;padding:0 6px;margin:6px 8px;background:0 0;color:currentColor;white-space:nowrap;text-transform:uppercase;font-weight:500;font-size:14px;font-style:inherit;font-variant:inherit;font-family:inherit;text-decoration:none;overflow:hidden;transition:box-shadow .4s cubic-bezier(.25,.8,.25,1),background-color .4s cubic-bezier(.25,.8,.25,1)}.md-button:focus{outline:0}.md-button:focus,.md-button:hover{text-decoration:none}.md-button.ng-hide,.md-button.ng-leave{transition:none}.md-button.md-cornered{border-radius:0}.md-button.md-icon{padding:0;background:0 0}.md-button.md-raised:not([disabled]){box-shadow:0 2px 5px 0 rgba(0,0,0,.26)}.md-button.md-icon-button{margin:0 6px;height:40px;min-width:0;line-height:24px;padding:8px;width:40px;border-radius:50%}.md-button.md-icon-button .md-ripple-container{border-radius:50%;background-clip:padding-box;overflow:hidden;-webkit-mask-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAIAAACQd1PeAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAA5JREFUeNpiYGBgAAgwAAAEAAGbA+oJAAAAAElFTkSuQmCC)}.md-button.md-fab{z-index:20;line-height:56px;min-width:0;width:56px;height:56px;vertical-align:middle;box-shadow:0 2px 5px 0 rgba(0,0,0,.26);border-radius:50%;background-clip:padding-box;overflow:hidden;transition:all .3s cubic-bezier(.55,0,.55,.2);transition-property:background-color,box-shadow,transform}.md-button.md-fab.md-fab-bottom-right{top:auto;right:20px;bottom:20px;left:auto;position:absolute}.md-button.md-fab.md-fab-bottom-left{top:auto;right:auto;bottom:20px;left:20px;position:absolute}.md-button.md-fab.md-fab-top-right{top:20px;right:20px;bottom:auto;left:auto;position:absolute}.md-button.md-fab.md-fab-top-left{top:20px;right:auto;bottom:auto;left:20px;position:absolute}.md-button.md-fab .md-ripple-container{border-radius:50%;background-clip:padding-box;overflow:hidden;-webkit-mask-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAIAAACQd1PeAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAA5JREFUeNpiYGBgAAgwAAAEAAGbA+oJAAAAAElFTkSuQmCC)}.md-button.md-fab.md-mini{line-height:40px;width:40px;height:40px}.md-button.md-fab.ng-hide,.md-button.md-fab.ng-leave{transition:none}.md-button:not([disabled]).md-fab.md-focused,.md-button:not([disabled]).md-raised.md-focused{box-shadow:0 2px 5px 0 rgba(0,0,0,.26)}.md-button:not([disabled]).md-fab:active,.md-button:not([disabled]).md-raised:active{box-shadow:0 4px 8px 0 rgba(0,0,0,.4)}.md-button .md-ripple-container{border-radius:3px;background-clip:padding-box;overflow:hidden;-webkit-mask-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAIAAACQd1PeAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAA5JREFUeNpiYGBgAAgwAAAEAAGbA+oJAAAAAElFTkSuQmCC)}.md-button.md-icon-button md-icon,button.md-button.md-fab md-icon{display:block}.md-toast-open-top .md-button.md-fab-top-left,.md-toast-open-top .md-button.md-fab-top-right{transition:all .4s cubic-bezier(.25,.8,.25,1);transform:translate3d(0,42px,0)}.md-toast-open-top .md-button.md-fab-top-left:not([disabled]).md-focused,.md-toast-open-top .md-button.md-fab-top-left:not([disabled]):hover,.md-toast-open-top .md-button.md-fab-top-right:not([disabled]).md-focused,.md-toast-open-top .md-button.md-fab-top-right:not([disabled]):hover{transform:translate3d(0,41px,0)}.md-toast-open-bottom .md-button.md-fab-bottom-left,.md-toast-open-bottom .md-button.md-fab-bottom-right{transition:all .4s cubic-bezier(.25,.8,.25,1);transform:translate3d(0,-42px,0)}.md-toast-open-bottom .md-button.md-fab-bottom-left:not([disabled]).md-focused,.md-toast-open-bottom .md-button.md-fab-bottom-left:not([disabled]):hover,.md-toast-open-bottom .md-button.md-fab-bottom-right:not([disabled]).md-focused,.md-toast-open-bottom .md-button.md-fab-bottom-right:not([disabled]):hover{transform:translate3d(0,-43px,0)}.md-button-group{display:flex;flex:1;width:100%}.md-button-group>.md-button{flex:1;display:block;overflow:hidden;width:0;border-width:1px 0 1px 1px;border-radius:0;text-align:center;text-overflow:ellipsis;white-space:nowrap}.md-button-group>.md-button:first-child{border-radius:2px 0 0 2px}.md-button-group>.md-button:last-child{border-right-width:1px;border-radius:0 2px 2px 0}@media screen and (-ms-high-contrast:active){.md-button.md-fab,.md-button.md-raised{border:1px solid #fff}}md-card{box-sizing:border-box;display:flex;flex-direction:column;margin:8px;box-shadow:0 1px 3px 0 rgba(0,0,0,.2),0 1px 1px 0 rgba(0,0,0,.14),0 2px 1px -1px rgba(0,0,0,.12)}md-card md-card-header{padding:16px;display:flex;flex-direction:row}md-card md-card-header:first-child md-card-avatar{margin-right:12px}[dir=rtl] md-card md-card-header:first-child md-card-avatar{margin-right:auto;margin-left:12px}md-card md-card-header:last-child md-card-avatar{margin-left:12px}[dir=rtl] md-card md-card-header:last-child md-card-avatar{margin-left:auto;margin-right:12px}md-card md-card-header md-card-avatar{width:40px;height:40px}md-card md-card-header md-card-avatar .md-user-avatar,md-card md-card-header md-card-avatar md-icon{border-radius:50%}md-card md-card-header md-card-avatar md-icon{padding:8px}md-card md-card-header md-card-avatar+md-card-header-text{max-height:40px}md-card md-card-header md-card-avatar+md-card-header-text .md-title{font-size:14px}md-card md-card-header md-card-header-text{display:flex;flex:1;flex-direction:column}md-card md-card-header md-card-header-text .md-subhead{font-size:14px}md-card md-card-title-media img,md-card>img,md-card>md-card-header img{box-sizing:border-box;display:flex;flex:0 0 auto;width:100%;height:auto}md-card md-card-title{padding:24px 16px 16px;display:flex;flex:1 1 auto;flex-direction:row}md-card md-card-title+md-card-content{padding-top:0}md-card md-card-title md-card-title-text{flex:1;flex-direction:column;display:flex}md-card md-card-title md-card-title-text .md-subhead{padding-top:0;font-size:14px}md-card md-card-title md-card-title-text:only-child .md-subhead{padding-top:12px}md-card md-card-title md-card-title-media{margin-top:-8px}md-card md-card-title md-card-title-media .md-media-sm{height:80px;width:80px}md-card md-card-title md-card-title-media .md-media-md{height:112px;width:112px}md-card md-card-title md-card-title-media .md-media-lg{height:152px;width:152px}md-card md-card-content{display:block;padding:16px}md-card md-card-content>p:first-child{margin-top:0}md-card md-card-content>p:last-child{margin-bottom:0}md-card md-card-content .md-media-xl{height:240px;width:240px}md-card .md-actions,md-card md-card-actions{margin:8px}md-card .md-actions.layout-column .md-button:not(.md-icon-button),md-card md-card-actions.layout-column .md-button:not(.md-icon-button){margin:2px 0}md-card .md-actions.layout-column .md-button:not(.md-icon-button):first-of-type,md-card md-card-actions.layout-column .md-button:not(.md-icon-button):first-of-type{margin-top:0}md-card .md-actions.layout-column .md-button:not(.md-icon-button):last-of-type,md-card md-card-actions.layout-column .md-button:not(.md-icon-button):last-of-type{margin-bottom:0}md-card .md-actions.layout-column .md-button.md-icon-button,md-card md-card-actions.layout-column .md-button.md-icon-button{margin-top:6px;margin-bottom:6px}md-card .md-actions md-card-icon-actions,md-card md-card-actions md-card-icon-actions{flex:1;justify-content:flex-start;display:flex;flex-direction:row}md-card .md-actions:not(.layout-column) .md-button:not(.md-icon-button),md-card md-card-actions:not(.layout-column) .md-button:not(.md-icon-button){margin:0 4px}md-card .md-actions:not(.layout-column) .md-button:not(.md-icon-button):first-of-type,md-card md-card-actions:not(.layout-column) .md-button:not(.md-icon-button):first-of-type{margin-left:0}[dir=rtl] md-card .md-actions:not(.layout-column) .md-button:not(.md-icon-button):first-of-type,[dir=rtl] md-card md-card-actions:not(.layout-column) .md-button:not(.md-icon-button):first-of-type{margin-left:auto;margin-right:0}md-card .md-actions:not(.layout-column) .md-button:not(.md-icon-button):last-of-type,md-card md-card-actions:not(.layout-column) .md-button:not(.md-icon-button):last-of-type{margin-right:0}[dir=rtl] md-card .md-actions:not(.layout-column) .md-button:not(.md-icon-button):last-of-type,[dir=rtl] md-card md-card-actions:not(.layout-column) .md-button:not(.md-icon-button):last-of-type{margin-right:auto;margin-left:0}md-card .md-actions:not(.layout-column) .md-button.md-icon-button,md-card md-card-actions:not(.layout-column) .md-button.md-icon-button{margin-left:6px;margin-right:6px}md-card .md-actions:not(.layout-column) .md-button.md-icon-button:first-of-type,md-card md-card-actions:not(.layout-column) .md-button.md-icon-button:first-of-type{margin-left:12px}[dir=rtl] md-card .md-actions:not(.layout-column) .md-button.md-icon-button:first-of-type,[dir=rtl] md-card md-card-actions:not(.layout-column) .md-button.md-icon-button:first-of-type{margin-left:auto;margin-right:12px}md-card .md-actions:not(.layout-column) .md-button.md-icon-button:last-of-type,md-card md-card-actions:not(.layout-column) .md-button.md-icon-button:last-of-type{margin-right:12px}[dir=rtl] md-card .md-actions:not(.layout-column) .md-button.md-icon-button:last-of-type,[dir=rtl] md-card md-card-actions:not(.layout-column) .md-button.md-icon-button:last-of-type{margin-right:auto;margin-left:12px}md-card .md-actions:not(.layout-column) .md-button+md-card-icon-actions,md-card md-card-actions:not(.layout-column) .md-button+md-card-icon-actions{flex:1;justify-content:flex-end;display:flex;flex-direction:row}md-card md-card-footer{margin-top:auto;padding:16px}@media screen and (-ms-high-contrast:active){md-card{border:1px solid #fff}}.md-image-no-fill>img{width:auto;height:auto}.md-contact-chips .md-chips md-chip{padding:0 25px 0 0}[dir=rtl] .md-contact-chips .md-chips md-chip{padding:0 0 0 25px}.md-contact-chips .md-chips md-chip .md-contact-avatar{float:left}[dir=rtl] .md-contact-chips .md-chips md-chip .md-contact-avatar{float:right}.md-contact-chips .md-chips md-chip .md-contact-avatar img{height:32px;border-radius:16px}.md-contact-chips .md-chips md-chip .md-contact-name{display:inline-block;height:32px;margin-left:8px}[dir=rtl] .md-contact-chips .md-chips md-chip .md-contact-name{margin-left:auto;margin-right:8px}.md-contact-suggestion{height:56px}.md-contact-suggestion img{height:40px;border-radius:20px;margin-top:8px}.md-contact-suggestion .md-contact-name{margin-left:8px;width:120px}[dir=rtl] .md-contact-suggestion .md-contact-name{margin-left:auto;margin-right:8px}.md-contact-suggestion .md-contact-email,.md-contact-suggestion .md-contact-name{display:inline-block;overflow:hidden;text-overflow:ellipsis}.md-contact-chips-suggestions li{height:100%}.md-chips{display:block;font-family:Roboto,"Helvetica Neue",sans-serif;font-size:16px;padding:0 0 8px 3px;vertical-align:middle}.md-chips:after{content:'';display:table;clear:both}[dir=rtl] .md-chips{padding:0 3px 8px 0}.md-chips.md-readonly .md-chip-input-container{min-height:32px}.md-chips:not(.md-readonly){cursor:text}.md-chips.md-removable md-chip{padding-right:22px}[dir=rtl] .md-chips.md-removable md-chip{padding-right:0;padding-left:22px}.md-chips.md-removable md-chip .md-chip-content{padding-right:4px}[dir=rtl] .md-chips.md-removable md-chip .md-chip-content{padding-right:0;padding-left:4px}.md-chips md-chip{cursor:default;border-radius:16px;display:block;height:32px;line-height:32px;margin:8px 8px 0 0;padding:0 12px 0 12px;float:left;box-sizing:border-box;max-width:100%;position:relative}[dir=rtl] .md-chips md-chip{margin:8px 0 0 8px}[dir=rtl] .md-chips md-chip{float:right}.md-chips md-chip .md-chip-content{display:block;float:left;white-space:nowrap;max-width:100%;overflow:hidden;text-overflow:ellipsis}[dir=rtl] .md-chips md-chip .md-chip-content{float:right}.md-chips md-chip .md-chip-content:focus{outline:0}.md-chips md-chip._md-chip-content-edit-is-enabled{-webkit-user-select:none;-moz-user-select:none;-khtml-user-select:none;-ms-user-select:none}.md-chips md-chip .md-chip-remove-container{position:absolute;right:0;line-height:22px}[dir=rtl] .md-chips md-chip .md-chip-remove-container{right:auto;left:0}.md-chips md-chip .md-chip-remove{text-align:center;width:32px;height:32px;min-width:0;padding:0;background:0 0;border:none;box-shadow:none;margin:0;position:relative}.md-chips md-chip .md-chip-remove md-icon{height:18px;width:18px;position:absolute;top:50%;left:50%;transform:translate3d(-50%,-50%,0)}.md-chips .md-chip-input-container{display:block;line-height:32px;margin:8px 8px 0 0;padding:0;float:left}[dir=rtl] .md-chips .md-chip-input-container{margin:8px 0 0 8px}[dir=rtl] .md-chips .md-chip-input-container{float:right}.md-chips .md-chip-input-container input:not([type]),.md-chips .md-chip-input-container input[type=email],.md-chips .md-chip-input-container input[type=number],.md-chips .md-chip-input-container input[type=tel],.md-chips .md-chip-input-container input[type=text],.md-chips .md-chip-input-container input[type=url]{border:0;height:32px;line-height:32px;padding:0}.md-chips .md-chip-input-container input:not([type]):focus,.md-chips .md-chip-input-container input[type=email]:focus,.md-chips .md-chip-input-container input[type=number]:focus,.md-chips .md-chip-input-container input[type=tel]:focus,.md-chips .md-chip-input-container input[type=text]:focus,.md-chips .md-chip-input-container input[type=url]:focus{outline:0}.md-chips .md-chip-input-container md-autocomplete,.md-chips .md-chip-input-container md-autocomplete-wrap{background:0 0;height:32px}.md-chips .md-chip-input-container md-autocomplete md-autocomplete-wrap{box-shadow:none}.md-chips .md-chip-input-container md-autocomplete input{position:relative}.md-chips .md-chip-input-container input{border:0;height:32px;line-height:32px;padding:0}.md-chips .md-chip-input-container input:focus{outline:0}.md-chips .md-chip-input-container md-autocomplete,.md-chips .md-chip-input-container md-autocomplete-wrap{height:32px}.md-chips .md-chip-input-container md-autocomplete{box-shadow:none}.md-chips .md-chip-input-container md-autocomplete input{position:relative}.md-chips .md-chip-input-container:not(:first-child){margin:8px 8px 0 0}[dir=rtl] .md-chips .md-chip-input-container:not(:first-child){margin:8px 0 0 8px}.md-chips .md-chip-input-container input{background:0 0;border-width:0}.md-chips md-autocomplete button{display:none}@media screen and (-ms-high-contrast:active){.md-chip-input-container,md-chip{border:1px solid #fff}.md-chip-input-container md-autocomplete{border:none}}.md-inline-form md-checkbox{margin:19px 0 18px}md-checkbox{box-sizing:border-box;display:inline-block;margin-bottom:16px;white-space:nowrap;cursor:pointer;outline:0;user-select:none;position:relative;min-width:20px;min-height:20px;margin-left:0;margin-right:16px}[dir=rtl] md-checkbox{margin-left:16px}[dir=rtl] md-checkbox{margin-right:0}md-checkbox:last-of-type{margin-left:0;margin-right:0}md-checkbox.md-focused:not([disabled]) .md-container:before{left:-8px;top:-8px;right:-8px;bottom:-8px}md-checkbox.md-focused:not([disabled]):not(.md-checked) .md-container:before{background-color:rgba(0,0,0,.12)}md-checkbox.md-align-top-left>div.md-container{top:12px}md-checkbox .md-container{position:absolute;top:50%;transform:translateY(-50%);box-sizing:border-box;display:inline-block;width:20px;height:20px;left:0;right:auto}[dir=rtl] md-checkbox .md-container{left:auto}[dir=rtl] md-checkbox .md-container{right:0}md-checkbox .md-container:before{box-sizing:border-box;background-color:transparent;border-radius:50%;content:'';position:absolute;display:block;height:auto;left:0;top:0;right:0;bottom:0;transition:all .5s;width:auto}md-checkbox .md-container:after{box-sizing:border-box;content:'';position:absolute;top:-10px;right:-10px;bottom:-10px;left:-10px}md-checkbox .md-container .md-ripple-container{position:absolute;display:block;width:auto;height:auto;left:-15px;top:-15px;right:-15px;bottom:-15px}md-checkbox .md-icon{box-sizing:border-box;transition:240ms;position:absolute;top:0;left:0;width:20px;height:20px;border-width:2px;border-style:solid;border-radius:2px}md-checkbox.md-checked .md-icon{border-color:transparent}md-checkbox.md-checked .md-icon:after{box-sizing:border-box;transform:rotate(45deg);position:absolute;left:4.6666666667px;top:.2222222222px;display:table;width:6.6666666667px;height:13.3333333333px;border-width:2px;border-style:solid;border-top:0;border-left:0;content:''}md-checkbox[disabled]{cursor:default}md-checkbox.md-indeterminate .md-icon:after{box-sizing:border-box;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);display:table;width:12px;height:2px;border-width:2px;border-style:solid;border-top:0;border-left:0;content:''}md-checkbox .md-label{box-sizing:border-box;position:relative;display:inline-block;vertical-align:middle;white-space:normal;user-select:text;margin-left:30px;margin-right:0}[dir=rtl] md-checkbox .md-label{margin-left:0}[dir=rtl] md-checkbox .md-label{margin-right:30px}md-content{display:block;position:relative;overflow:auto;-webkit-overflow-scrolling:touch}md-content[md-scroll-y]{overflow-y:auto;overflow-x:hidden}md-content[md-scroll-x]{overflow-x:auto;overflow-y:hidden}@media print{md-content{overflow:visible!important}}md-calendar{font-size:13px;user-select:none}.md-calendar-scroll-mask{display:inline-block;overflow:hidden;height:308px}.md-calendar-scroll-mask .md-virtual-repeat-scroller{overflow-y:scroll;-webkit-overflow-scrolling:touch}.md-calendar-scroll-mask .md-virtual-repeat-scroller::-webkit-scrollbar{display:none}.md-calendar-scroll-mask .md-virtual-repeat-offsetter{width:100%}.md-calendar-scroll-container{box-shadow:inset -3px 3px 6px rgba(0,0,0,.2);display:inline-block;height:308px;width:346px}.md-calendar-date{height:44px;width:44px;text-align:center;padding:0;border:none;box-sizing:content-box}.md-calendar-date:first-child{padding-left:16px}[dir=rtl] .md-calendar-date:first-child{padding-left:0;padding-right:16px}.md-calendar-date:last-child{padding-right:16px}[dir=rtl] .md-calendar-date:last-child{padding-right:0;padding-left:16px}.md-calendar-date.md-calendar-date-disabled{cursor:default}.md-calendar-date-selection-indicator{transition:background-color,color .4s cubic-bezier(.25,.8,.25,1);border-radius:50%;display:inline-block;width:40px;height:40px;line-height:40px}.md-calendar-date:not(.md-disabled) .md-calendar-date-selection-indicator{cursor:pointer}.md-calendar-month-label{height:44px;font-size:14px;font-weight:500;padding:0 0 0 24px}[dir=rtl] .md-calendar-month-label{padding:0 24px 0 0}md-calendar-month .md-calendar-month-label:not(.md-calendar-month-label-disabled){cursor:pointer}.md-calendar-month-label md-icon{transform:rotate(180deg)}[dir=rtl] .md-calendar-month-label md-icon{transform:none}.md-calendar-month-label span{vertical-align:middle}.md-calendar-day-header{table-layout:fixed;border-spacing:0;border-collapse:collapse}.md-calendar-day-header th{height:40px;width:44px;text-align:center;padding:0;border:none;box-sizing:content-box;font-weight:400}.md-calendar-day-header th:first-child{padding-left:16px}[dir=rtl] .md-calendar-day-header th:first-child{padding-left:0;padding-right:16px}.md-calendar-day-header th:last-child{padding-right:16px}[dir=rtl] .md-calendar-day-header th:last-child{padding-right:0;padding-left:16px}.md-calendar{table-layout:fixed;border-spacing:0;border-collapse:collapse}.md-calendar tr:last-child td{border-bottom-width:1px;border-bottom-style:solid}.md-calendar:first-child{border-top:1px solid transparent}.md-calendar tbody,.md-calendar td,.md-calendar tr{vertical-align:middle;box-sizing:content-box}md-datepicker{white-space:nowrap;overflow:hidden;padding-right:18px;margin-right:-18px;vertical-align:middle}[dir=rtl] md-datepicker{padding-right:0;padding-left:18px}[dir=rtl] md-datepicker{margin-right:auto;margin-left:-18px}.md-inline-form md-datepicker{margin-top:12px}.md-datepicker-button{display:inline-block;box-sizing:border-box;background:0 0;vertical-align:middle;position:relative}.md-datepicker-button:before{top:0;left:0;bottom:0;right:0;position:absolute;content:'';speak:none}.md-datepicker-input{font-size:14px;box-sizing:border-box;border:none;box-shadow:none;outline:0;background:0 0;min-width:120px;max-width:328px;padding:0 0 5px}.md-datepicker-input::-ms-clear{display:none}._md-datepicker-floating-label>md-datepicker{overflow:visible}._md-datepicker-floating-label>md-datepicker .md-datepicker-input-container{border:none}._md-datepicker-floating-label>md-datepicker .md-datepicker-button{float:left;margin-top:-2.5px}[dir=rtl] ._md-datepicker-floating-label>md-datepicker .md-datepicker-button{float:right}._md-datepicker-floating-label._md-datepicker-has-calendar-icon>label:not(.md-no-float):not(.md-container-ignore){right:18px;left:auto;width:calc(100% - 84px)}[dir=rtl] ._md-datepicker-floating-label._md-datepicker-has-calendar-icon>label:not(.md-no-float):not(.md-container-ignore){right:auto}[dir=rtl] ._md-datepicker-floating-label._md-datepicker-has-calendar-icon>label:not(.md-no-float):not(.md-container-ignore){left:18px}._md-datepicker-floating-label._md-datepicker-has-calendar-icon .md-input-message-animation{margin-left:64px}[dir=rtl] ._md-datepicker-floating-label._md-datepicker-has-calendar-icon .md-input-message-animation{margin-left:auto;margin-right:64px}.md-datepicker-input-container{position:relative;border-bottom-width:1px;border-bottom-style:solid;display:inline-block;width:auto}.md-icon-button+.md-datepicker-input-container{margin-left:12px}[dir=rtl] .md-icon-button+.md-datepicker-input-container{margin-left:auto;margin-right:12px}.md-datepicker-input-container.md-datepicker-focused{border-bottom-width:2px}.md-datepicker-is-showing .md-scroll-mask{z-index:99}.md-datepicker-calendar-pane{position:absolute;top:0;left:-100%;z-index:100;border-width:1px;border-style:solid;background:0 0;transform:scale(0);transform-origin:0 0;transition:transform .2s cubic-bezier(.25,.8,.25,1)}.md-datepicker-calendar-pane.md-pane-open{transform:scale(1)}.md-datepicker-input-mask{height:40px;width:340px;position:relative;overflow:hidden;background:0 0;pointer-events:none;cursor:text}.md-datepicker-calendar{opacity:0;transition:opacity .2s cubic-bezier(.5,0,.25,1)}.md-pane-open .md-datepicker-calendar{opacity:1}.md-datepicker-calendar md-calendar:focus{outline:0}.md-datepicker-expand-triangle{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);width:0;height:0;border-left:5px solid transparent;border-right:5px solid transparent;border-top:5px solid}.md-datepicker-triangle-button{position:absolute;right:0;top:5px;transform:translateY(-25%) translateX(45%)}[dir=rtl] .md-datepicker-triangle-button{right:auto;left:0}[dir=rtl] .md-datepicker-triangle-button{transform:translateY(-25%) translateX(-45%)}.md-datepicker-triangle-button.md-button.md-icon-button{height:36px;width:36px;position:absolute;padding:8px}md-datepicker[disabled] .md-datepicker-input-container{border-bottom-color:transparent}md-datepicker[disabled] .md-datepicker-triangle-button{display:none}.md-datepicker-open{overflow:hidden}.md-datepicker-open .md-datepicker-input-container,.md-datepicker-open input.md-input{border-bottom-color:transparent}.md-datepicker-open .md-datepicker-triangle-button,.md-datepicker-open.md-input-has-placeholder>label,.md-datepicker-open.md-input-has-value>label{display:none}.md-datepicker-pos-adjusted .md-datepicker-input-mask{display:none}.md-datepicker-calendar-pane .md-calendar{transform:translateY(-85px);transition:transform .65s cubic-bezier(.25,.8,.25,1);transition-delay:125ms}.md-datepicker-calendar-pane.md-pane-open .md-calendar{transform:translateY(0)}.md-dialog-is-showing{max-height:100%}.md-dialog-container{display:flex;justify-content:center;align-items:center;position:absolute;top:0;left:0;width:100%;height:100%;z-index:80;overflow:hidden}md-dialog{opacity:0;min-width:240px;max-width:80%;max-height:80%;position:relative;overflow:auto;box-shadow:0 7px 8px -4px rgba(0,0,0,.2),0 13px 19px 2px rgba(0,0,0,.14),0 5px 24px 4px rgba(0,0,0,.12);display:flex;flex-direction:column}md-dialog.md-transition-in{opacity:1;transition:all .4s cubic-bezier(.25,.8,.25,1);transform:translate(0,0) scale(1)}md-dialog.md-transition-out{opacity:0;transition:all .4s cubic-bezier(.25,.8,.25,1);transform:translate(0,100%) scale(.2)}md-dialog>form{display:flex;flex-direction:column;overflow:auto}md-dialog .md-dialog-content{padding:24px}md-dialog md-dialog-content{order:1;flex-direction:column;overflow:auto;-webkit-overflow-scrolling:touch}md-dialog md-dialog-content:not([layout=row])>:first-child:not(.md-subheader){margin-top:0}md-dialog md-dialog-content:focus{outline:0}md-dialog md-dialog-content .md-subheader{margin:0}md-dialog md-dialog-content .md-dialog-content-body{width:100%}md-dialog md-dialog-content .md-prompt-input-container{width:100%;box-sizing:border-box}md-dialog .md-actions,md-dialog md-dialog-actions{display:flex;order:2;box-sizing:border-box;align-items:center;justify-content:flex-end;margin-bottom:0;padding-right:8px;padding-left:16px;min-height:52px;overflow:hidden}[dir=rtl] md-dialog .md-actions,[dir=rtl] md-dialog md-dialog-actions{padding-right:16px}[dir=rtl] md-dialog .md-actions,[dir=rtl] md-dialog md-dialog-actions{padding-left:8px}md-dialog .md-actions .md-button,md-dialog md-dialog-actions .md-button{margin-bottom:8px;margin-left:8px;margin-right:0;margin-top:8px}[dir=rtl] md-dialog .md-actions .md-button,[dir=rtl] md-dialog md-dialog-actions .md-button{margin-left:0}[dir=rtl] md-dialog .md-actions .md-button,[dir=rtl] md-dialog md-dialog-actions .md-button{margin-right:8px}md-dialog.md-content-overflow .md-actions,md-dialog.md-content-overflow md-dialog-actions{border-top-width:1px;border-top-style:solid}@media screen and (-ms-high-contrast:active){md-dialog{border:1px solid #fff}}@media (max-width:959px){md-dialog.md-dialog-fullscreen{min-height:100%;min-width:100%;border-radius:0}}md-divider{display:block;border-top-width:1px;border-top-style:solid;margin:0}md-divider[md-inset]{margin-left:80px}[dir=rtl] md-divider[md-inset]{margin-left:auto;margin-right:80px}.layout-gt-lg-row>md-divider,.layout-gt-md-row>md-divider,.layout-gt-sm-row>md-divider,.layout-gt-xs-row>md-divider,.layout-lg-row>md-divider,.layout-md-row>md-divider,.layout-row>md-divider,.layout-sm-row>md-divider,.layout-xl-row>md-divider,.layout-xs-row>md-divider{border-top-width:0;border-right-width:1px;border-right-style:solid}md-fab-speed-dial{position:relative;display:flex;align-items:center;z-index:20}md-fab-speed-dial.md-fab-bottom-right{top:auto;right:20px;bottom:20px;left:auto;position:absolute}md-fab-speed-dial.md-fab-bottom-left{top:auto;right:auto;bottom:20px;left:20px;position:absolute}md-fab-speed-dial.md-fab-top-right{top:20px;right:20px;bottom:auto;left:auto;position:absolute}md-fab-speed-dial.md-fab-top-left{top:20px;right:auto;bottom:auto;left:20px;position:absolute}md-fab-speed-dial:not(.md-hover-full){pointer-events:none}md-fab-speed-dial:not(.md-hover-full) .md-fab-action-item,md-fab-speed-dial:not(.md-hover-full) md-fab-trigger{pointer-events:auto}md-fab-speed-dial:not(.md-hover-full).md-is-open{pointer-events:auto}md-fab-speed-dial ._md-css-variables{z-index:20}md-fab-speed-dial.md-is-open .md-fab-action-item{align-items:center}md-fab-speed-dial md-fab-actions{display:flex;height:auto}md-fab-speed-dial md-fab-actions .md-fab-action-item{transition:all .3s cubic-bezier(.55,0,.55,.2)}md-fab-speed-dial.md-down{flex-direction:column}md-fab-speed-dial.md-down md-fab-trigger{order:1}md-fab-speed-dial.md-down md-fab-actions{flex-direction:column;order:2}md-fab-speed-dial.md-up{flex-direction:column}md-fab-speed-dial.md-up md-fab-trigger{order:2}md-fab-speed-dial.md-up md-fab-actions{flex-direction:column-reverse;order:1}md-fab-speed-dial.md-left{flex-direction:row}md-fab-speed-dial.md-left md-fab-trigger{order:2}md-fab-speed-dial.md-left md-fab-actions{flex-direction:row-reverse;order:1}md-fab-speed-dial.md-left md-fab-actions .md-fab-action-item{transition:all .3s cubic-bezier(.55,0,.55,.2)}md-fab-speed-dial.md-right{flex-direction:row}md-fab-speed-dial.md-right md-fab-trigger{order:1}md-fab-speed-dial.md-right md-fab-actions{flex-direction:row;order:2}md-fab-speed-dial.md-right md-fab-actions .md-fab-action-item{transition:all .3s cubic-bezier(.55,0,.55,.2)}md-fab-speed-dial.md-fling-remove .md-fab-action-item>*,md-fab-speed-dial.md-scale-remove .md-fab-action-item>*{visibility:hidden}md-fab-speed-dial.md-fling .md-fab-action-item{opacity:1}md-fab-speed-dial.md-fling.md-animations-waiting .md-fab-action-item{opacity:0;transition-duration:0s}md-fab-speed-dial.md-scale .md-fab-action-item{transform:scale(0);transition:all .3s cubic-bezier(.55,0,.55,.2);transition-duration:.1428571429s}md-fab-toolbar{display:block}md-fab-toolbar.md-fab-bottom-right{top:auto;right:20px;bottom:20px;left:auto;position:absolute}md-fab-toolbar.md-fab-bottom-left{top:auto;right:auto;bottom:20px;left:20px;position:absolute}md-fab-toolbar.md-fab-top-right{top:20px;right:20px;bottom:auto;left:auto;position:absolute}md-fab-toolbar.md-fab-top-left{top:20px;right:auto;bottom:auto;left:20px;position:absolute}md-fab-toolbar .md-fab-toolbar-wrapper{display:block;position:relative;overflow:hidden;height:68px}md-fab-toolbar md-fab-trigger{position:absolute;z-index:20}md-fab-toolbar md-fab-trigger button{overflow:visible!important}md-fab-toolbar md-fab-trigger .md-fab-toolbar-background{display:block;position:absolute;z-index:21;opacity:1;transition:all .3s cubic-bezier(.55,0,.55,.2)}md-fab-toolbar md-fab-trigger md-icon{position:relative;z-index:22;opacity:1;transition:all .2s ease-in}md-fab-toolbar.md-left md-fab-trigger{right:0}[dir=rtl] md-fab-toolbar.md-left md-fab-trigger{right:auto;left:0}md-fab-toolbar.md-left .md-toolbar-tools{flex-direction:row-reverse}md-fab-toolbar.md-left .md-toolbar-tools>.md-button:first-child{margin-right:.6rem}[dir=rtl] md-fab-toolbar.md-left .md-toolbar-tools>.md-button:first-child{margin-right:auto;margin-left:.6rem}md-fab-toolbar.md-left .md-toolbar-tools>.md-button:first-child{margin-left:-.8rem}[dir=rtl] md-fab-toolbar.md-left .md-toolbar-tools>.md-button:first-child{margin-left:auto;margin-right:-.8rem}md-fab-toolbar.md-left .md-toolbar-tools>.md-button:last-child{margin-right:8px}[dir=rtl] md-fab-toolbar.md-left .md-toolbar-tools>.md-button:last-child{margin-right:auto;margin-left:8px}md-fab-toolbar.md-right md-fab-trigger{left:0}[dir=rtl] md-fab-toolbar.md-right md-fab-trigger{left:auto;right:0}md-fab-toolbar.md-right .md-toolbar-tools{flex-direction:row}md-fab-toolbar md-toolbar{background-color:transparent!important;pointer-events:none;z-index:23}md-fab-toolbar md-toolbar .md-toolbar-tools{padding:0 20px;margin-top:3px}md-fab-toolbar md-toolbar .md-fab-action-item{opacity:0;transform:scale(0);transition:all .3s cubic-bezier(.55,0,.55,.2);transition-duration:.15s}md-fab-toolbar.md-is-open md-fab-trigger>button{box-shadow:none}md-fab-toolbar.md-is-open md-fab-trigger>button md-icon{opacity:0}md-fab-toolbar.md-is-open .md-fab-action-item{opacity:1;transform:scale(1)}md-grid-list{box-sizing:border-box;display:block;position:relative}md-grid-list md-grid-tile,md-grid-list md-grid-tile-footer,md-grid-list md-grid-tile-header,md-grid-list md-grid-tile>figure{box-sizing:border-box}md-grid-list md-grid-tile{display:block;position:absolute}md-grid-list md-grid-tile figure{display:flex;align-items:center;justify-content:center;height:100%;position:absolute;top:0;right:0;bottom:0;left:0;padding:0;margin:0}md-grid-list md-grid-tile md-grid-tile-footer,md-grid-list md-grid-tile md-grid-tile-header{display:flex;flex-direction:row;align-items:center;height:48px;color:#fff;background:rgba(0,0,0,.18);overflow:hidden;position:absolute;left:0;right:0}md-grid-list md-grid-tile md-grid-tile-footer h3,md-grid-list md-grid-tile md-grid-tile-footer h4,md-grid-list md-grid-tile md-grid-tile-header h3,md-grid-list md-grid-tile md-grid-tile-header h4{font-weight:400;margin:0 0 0 16px}md-grid-list md-grid-tile md-grid-tile-footer h3,md-grid-list md-grid-tile md-grid-tile-header h3{font-size:14px}md-grid-list md-grid-tile md-grid-tile-footer h4,md-grid-list md-grid-tile md-grid-tile-header h4{font-size:12px}md-grid-list md-grid-tile md-grid-tile-header{top:0}md-grid-list md-grid-tile md-grid-tile-footer{bottom:0}@media screen and (-ms-high-contrast:active){md-grid-tile{border:1px solid #fff}md-grid-tile-footer{border-top:1px solid #fff}}md-icon{margin:auto;background-repeat:no-repeat no-repeat;display:inline-block;vertical-align:middle;fill:currentColor;height:24px;width:24px;min-height:24px;min-width:24px}md-icon svg{pointer-events:none;display:block}md-icon[md-font-icon]{line-height:24px;width:auto}md-input-container{display:inline-block;position:relative;padding:2px;margin:18px 0;vertical-align:middle}md-input-container:after{content:'';display:table;clear:both}md-input-container.md-block{display:block}md-input-container .md-errors-spacer{float:right;min-height:24px;min-width:1px}[dir=rtl] md-input-container .md-errors-spacer{float:left}md-input-container>md-icon{position:absolute;top:8px;left:2px;right:auto}[dir=rtl] md-input-container>md-icon{left:auto}[dir=rtl] md-input-container>md-icon{right:2px}md-input-container input[type=color],md-input-container input[type=date],md-input-container input[type=datetime-local],md-input-container input[type=datetime],md-input-container input[type=email],md-input-container input[type=month],md-input-container input[type=number],md-input-container input[type=password],md-input-container input[type=search],md-input-container input[type=tel],md-input-container input[type=text],md-input-container input[type=time],md-input-container input[type=url],md-input-container input[type=week],md-input-container textarea{-moz-appearance:none;-webkit-appearance:none}md-input-container input[type=date],md-input-container input[type=datetime-local],md-input-container input[type=month],md-input-container input[type=time],md-input-container input[type=week]{min-height:26px}md-input-container textarea{resize:none;overflow:hidden}md-input-container textarea.md-input{min-height:26px;-ms-flex-preferred-size:auto}md-input-container textarea[md-no-autogrow]{height:auto;overflow:auto}md-input-container label:not(.md-container-ignore){position:absolute;bottom:100%;left:0;right:auto}[dir=rtl] md-input-container label:not(.md-container-ignore){left:auto}[dir=rtl] md-input-container label:not(.md-container-ignore){right:0}md-input-container label:not(.md-container-ignore).md-required:after{content:' *';font-size:13px;vertical-align:top}md-input-container .md-placeholder,md-input-container label:not(.md-no-float):not(.md-container-ignore){overflow:hidden;text-overflow:ellipsis;white-space:nowrap;width:100%;order:1;pointer-events:none;-webkit-font-smoothing:antialiased;padding-left:3px;padding-right:0;z-index:1;transform:translate3d(0,28px,0) scale(1);transition:transform .4s cubic-bezier(.25,.8,.25,1);max-width:100%;transform-origin:left top}[dir=rtl] md-input-container .md-placeholder,[dir=rtl] md-input-container label:not(.md-no-float):not(.md-container-ignore){padding-left:0}[dir=rtl] md-input-container .md-placeholder,[dir=rtl] md-input-container label:not(.md-no-float):not(.md-container-ignore){padding-right:3px}[dir=rtl] md-input-container .md-placeholder,[dir=rtl] md-input-container label:not(.md-no-float):not(.md-container-ignore){transform-origin:right top}md-input-container .md-placeholder{position:absolute;top:0;opacity:0;transition-property:opacity,transform;transform:translate3d(0,30px,0)}md-input-container.md-input-focused .md-placeholder{opacity:1;transform:translate3d(0,24px,0)}md-input-container.md-input-has-value .md-placeholder{transition:none;opacity:0}md-input-container:not(.md-input-has-value) input:not(:focus),md-input-container:not(.md-input-has-value) input:not(:focus)::-webkit-datetime-edit-ampm-field,md-input-container:not(.md-input-has-value) input:not(:focus)::-webkit-datetime-edit-day-field,md-input-container:not(.md-input-has-value) input:not(:focus)::-webkit-datetime-edit-hour-field,md-input-container:not(.md-input-has-value) input:not(:focus)::-webkit-datetime-edit-millisecond-field,md-input-container:not(.md-input-has-value) input:not(:focus)::-webkit-datetime-edit-minute-field,md-input-container:not(.md-input-has-value) input:not(:focus)::-webkit-datetime-edit-month-field,md-input-container:not(.md-input-has-value) input:not(:focus)::-webkit-datetime-edit-second-field,md-input-container:not(.md-input-has-value) input:not(:focus)::-webkit-datetime-edit-text,md-input-container:not(.md-input-has-value) input:not(:focus)::-webkit-datetime-edit-week-field,md-input-container:not(.md-input-has-value) input:not(:focus)::-webkit-datetime-edit-year-field{color:transparent}md-input-container .md-input{order:2;display:block;margin-top:0;background:0 0;padding-top:2px;padding-bottom:1px;padding-left:2px;padding-right:2px;border-width:0 0 1px 0;line-height:26px;height:30px;-ms-flex-preferred-size:26px;border-radius:0;border-style:solid;width:100%;box-sizing:border-box;float:left}[dir=rtl] md-input-container .md-input{float:right}md-input-container .md-input:focus{outline:0}md-input-container .md-input:invalid{outline:0;box-shadow:none}md-input-container .md-input.md-no-flex{flex:none!important}md-input-container .md-char-counter{text-align:right;padding-right:2px;padding-left:0}[dir=rtl] md-input-container .md-char-counter{text-align:left}[dir=rtl] md-input-container .md-char-counter{padding-right:0}[dir=rtl] md-input-container .md-char-counter{padding-left:2px}md-input-container .md-input-messages-animation{position:relative;order:4;overflow:hidden;clear:left}[dir=rtl] md-input-container .md-input-messages-animation{clear:right}md-input-container .md-input-messages-animation.ng-enter .md-input-message-animation{opacity:0;margin-top:-100px}md-input-container .md-char-counter,md-input-container .md-input-message-animation{font-size:12px;line-height:14px;overflow:hidden;transition:all .3s cubic-bezier(.55,0,.55,.2);opacity:1;margin-top:0;padding-top:5px}md-input-container .md-char-counter:not(.md-char-counter),md-input-container .md-input-message-animation:not(.md-char-counter){padding-right:5px;padding-left:0}[dir=rtl] md-input-container .md-char-counter:not(.md-char-counter),[dir=rtl] md-input-container .md-input-message-animation:not(.md-char-counter){padding-right:0}[dir=rtl] md-input-container .md-char-counter:not(.md-char-counter),[dir=rtl] md-input-container .md-input-message-animation:not(.md-char-counter){padding-left:5px}md-input-container:not(.md-input-invalid) .md-auto-hide .md-input-message-animation{opacity:0;margin-top:-100px}md-input-container .md-input-message-animation:not(.ng-animate){opacity:0;margin-top:-100px}md-input-container .md-input-message-animation.ng-enter{opacity:0;margin-top:-100px}md-input-container.md-input-focused label:not(.md-no-float),md-input-container.md-input-has-placeholder label:not(.md-no-float),md-input-container.md-input-has-value label:not(.md-no-float){transform:translate3d(0,6px,0) scale(.75);transition:transform cubic-bezier(.25,.8,.25,1) .4s,width cubic-bezier(.25,.8,.25,1) .4s}md-input-container.md-input-has-value label{transition:none}md-input-container .md-input.ng-invalid.ng-dirty,md-input-container.md-input-focused .md-input,md-input-container.md-input-resized .md-input{padding-bottom:0;border-width:0 0 2px 0}[disabled] md-input-container .md-input,md-input-container .md-input[disabled]{background-position:bottom -1px left 0;background-size:4px 1px;background-repeat:repeat-x}md-input-container.md-icon-float{transition:margin-top .4s cubic-bezier(.25,.8,.25,1)}md-input-container.md-icon-float>label{pointer-events:none;position:absolute}md-input-container.md-icon-float>md-icon{top:8px;left:2px;right:auto}[dir=rtl] md-input-container.md-icon-float>md-icon{left:auto}[dir=rtl] md-input-container.md-icon-float>md-icon{right:2px}md-input-container.md-icon-left>label .md-placeholder,md-input-container.md-icon-left>label:not(.md-no-float):not(.md-container-ignore),md-input-container.md-icon-right>label .md-placeholder,md-input-container.md-icon-right>label:not(.md-no-float):not(.md-container-ignore){width:calc(100% - 36px - 18px)}md-input-container.md-icon-left{padding-left:36px;padding-right:0}[dir=rtl] md-input-container.md-icon-left{padding-left:0}[dir=rtl] md-input-container.md-icon-left{padding-right:36px}md-input-container.md-icon-left>label{left:36px;right:auto}[dir=rtl] md-input-container.md-icon-left>label{left:auto}[dir=rtl] md-input-container.md-icon-left>label{right:36px}md-input-container.md-icon-right{padding-left:0;padding-right:36px}[dir=rtl] md-input-container.md-icon-right{padding-left:36px}[dir=rtl] md-input-container.md-icon-right{padding-right:0}md-input-container.md-icon-right>md-icon:last-of-type{margin:0;right:2px;left:auto}[dir=rtl] md-input-container.md-icon-right>md-icon:last-of-type{right:auto}[dir=rtl] md-input-container.md-icon-right>md-icon:last-of-type{left:2px}md-input-container.md-icon-left.md-icon-right{padding-left:36px;padding-right:36px}md-input-container.md-icon-left.md-icon-right>label .md-placeholder,md-input-container.md-icon-left.md-icon-right>label:not(.md-no-float):not(.md-container-ignore){width:calc(100% - (36px * 2))}.md-resize-wrapper{position:relative}.md-resize-wrapper:after{content:'';display:table;clear:both}.md-resize-handle{position:absolute;bottom:-5px;left:0;height:10px;background:0 0;width:100%;cursor:ns-resize}@media screen and (-ms-high-contrast:active){md-input-container.md-default-theme>md-icon{fill:#fff}}md-list{display:block;padding:8px 0 8px 0}md-list .md-subheader{font-size:14px;font-weight:500;letter-spacing:.010em;line-height:1.2em}md-list.md-dense md-list-item,md-list.md-dense md-list-item .md-list-item-inner{min-height:48px}md-list.md-dense md-list-item .md-list-item-inner::before,md-list.md-dense md-list-item::before{content:'';min-height:48px;visibility:hidden;display:inline-block}md-list.md-dense md-list-item .md-list-item-inner md-icon:first-child,md-list.md-dense md-list-item md-icon:first-child{width:20px;height:20px}md-list.md-dense md-list-item .md-list-item-inner>md-icon:first-child:not(.md-avatar-icon),md-list.md-dense md-list-item>md-icon:first-child:not(.md-avatar-icon){margin-right:36px}[dir=rtl] md-list.md-dense md-list-item .md-list-item-inner>md-icon:first-child:not(.md-avatar-icon),[dir=rtl] md-list.md-dense md-list-item>md-icon:first-child:not(.md-avatar-icon){margin-right:auto;margin-left:36px}md-list.md-dense md-list-item .md-avatar,md-list.md-dense md-list-item .md-avatar-icon,md-list.md-dense md-list-item .md-list-item-inner .md-avatar,md-list.md-dense md-list-item .md-list-item-inner .md-avatar-icon{margin-right:20px}[dir=rtl] md-list.md-dense md-list-item .md-avatar,[dir=rtl] md-list.md-dense md-list-item .md-avatar-icon,[dir=rtl] md-list.md-dense md-list-item .md-list-item-inner .md-avatar,[dir=rtl] md-list.md-dense md-list-item .md-list-item-inner .md-avatar-icon{margin-right:auto;margin-left:20px}md-list.md-dense md-list-item .md-avatar,md-list.md-dense md-list-item .md-list-item-inner .md-avatar{flex:none;width:36px;height:36px}md-list.md-dense md-list-item.md-2-line .md-list-item-text.md-offset,md-list.md-dense md-list-item.md-2-line>.md-no-style .md-list-item-text.md-offset,md-list.md-dense md-list-item.md-3-line .md-list-item-text.md-offset,md-list.md-dense md-list-item.md-3-line>.md-no-style .md-list-item-text.md-offset{margin-left:56px}[dir=rtl] md-list.md-dense md-list-item.md-2-line .md-list-item-text.md-offset,[dir=rtl] md-list.md-dense md-list-item.md-2-line>.md-no-style .md-list-item-text.md-offset,[dir=rtl] md-list.md-dense md-list-item.md-3-line .md-list-item-text.md-offset,[dir=rtl] md-list.md-dense md-list-item.md-3-line>.md-no-style .md-list-item-text.md-offset{margin-left:auto;margin-right:56px}md-list.md-dense md-list-item.md-2-line .md-list-item-text h3,md-list.md-dense md-list-item.md-2-line .md-list-item-text h4,md-list.md-dense md-list-item.md-2-line .md-list-item-text p,md-list.md-dense md-list-item.md-2-line>.md-no-style .md-list-item-text h3,md-list.md-dense md-list-item.md-2-line>.md-no-style .md-list-item-text h4,md-list.md-dense md-list-item.md-2-line>.md-no-style .md-list-item-text p,md-list.md-dense md-list-item.md-3-line .md-list-item-text h3,md-list.md-dense md-list-item.md-3-line .md-list-item-text h4,md-list.md-dense md-list-item.md-3-line .md-list-item-text p,md-list.md-dense md-list-item.md-3-line>.md-no-style .md-list-item-text h3,md-list.md-dense md-list-item.md-3-line>.md-no-style .md-list-item-text h4,md-list.md-dense md-list-item.md-3-line>.md-no-style .md-list-item-text p{line-height:1.05;font-size:12px}md-list.md-dense md-list-item.md-2-line .md-list-item-text h3,md-list.md-dense md-list-item.md-2-line>.md-no-style .md-list-item-text h3,md-list.md-dense md-list-item.md-3-line .md-list-item-text h3,md-list.md-dense md-list-item.md-3-line>.md-no-style .md-list-item-text h3{font-size:13px}md-list.md-dense md-list-item.md-2-line,md-list.md-dense md-list-item.md-2-line>.md-no-style{min-height:60px}md-list.md-dense md-list-item.md-2-line::before,md-list.md-dense md-list-item.md-2-line>.md-no-style::before{content:'';min-height:60px;visibility:hidden;display:inline-block}md-list.md-dense md-list-item.md-2-line .md-avatar-icon,md-list.md-dense md-list-item.md-2-line>.md-avatar,md-list.md-dense md-list-item.md-2-line>.md-no-style .md-avatar-icon,md-list.md-dense md-list-item.md-2-line>.md-no-style>.md-avatar{margin-top:12px}md-list.md-dense md-list-item.md-3-line,md-list.md-dense md-list-item.md-3-line>.md-no-style{min-height:76px}md-list.md-dense md-list-item.md-3-line::before,md-list.md-dense md-list-item.md-3-line>.md-no-style::before{content:'';min-height:76px;visibility:hidden;display:inline-block}md-list.md-dense md-list-item.md-3-line>.md-avatar,md-list.md-dense md-list-item.md-3-line>.md-no-style>.md-avatar,md-list.md-dense md-list-item.md-3-line>.md-no-style>md-icon:first-child,md-list.md-dense md-list-item.md-3-line>md-icon:first-child{margin-top:16px}md-list-item{position:relative}md-list-item.md-proxy-focus.md-focused .md-no-style{transition:background-color .15s linear}md-list-item._md-button-wrap{position:relative}md-list-item._md-button-wrap>div.md-button:first-child{display:flex;align-items:center;justify-content:flex-start;padding:0 16px;margin:0;font-weight:400;text-align:left;border:medium none}[dir=rtl] md-list-item._md-button-wrap>div.md-button:first-child{text-align:right}md-list-item._md-button-wrap>div.md-button:first-child>.md-button:first-child{position:absolute;top:0;left:0;height:100%;margin:0;padding:0}md-list-item._md-button-wrap>div.md-button:first-child .md-list-item-inner{width:100%;min-height:inherit}md-list-item .md-no-style,md-list-item.md-no-proxy{position:relative;padding:0 16px;flex:1 1 auto}md-list-item .md-no-style.md-button,md-list-item.md-no-proxy.md-button{font-size:inherit;height:inherit;text-align:left;text-transform:none;width:100%;white-space:normal;flex-direction:inherit;align-items:inherit;border-radius:0;margin:0}[dir=rtl] md-list-item .md-no-style.md-button,[dir=rtl] md-list-item.md-no-proxy.md-button{text-align:right}md-list-item .md-no-style.md-button>.md-ripple-container,md-list-item.md-no-proxy.md-button>.md-ripple-container{border-radius:0}md-list-item .md-no-style:focus,md-list-item.md-no-proxy:focus{outline:0}md-list-item.md-clickable:hover{cursor:pointer}md-list-item md-divider{position:absolute;bottom:0;left:0;width:100%}[dir=rtl] md-list-item md-divider{left:auto;right:0}md-list-item md-divider[md-inset]{left:72px;width:calc(100% - 72px);margin:0!important}[dir=rtl] md-list-item md-divider[md-inset]{left:auto;right:72px}md-list-item,md-list-item .md-list-item-inner{display:flex;justify-content:flex-start;align-items:center;min-height:48px;height:auto}md-list-item .md-list-item-inner::before,md-list-item::before{content:'';min-height:48px;visibility:hidden;display:inline-block}md-list-item .md-list-item-inner>div.md-primary>md-icon:not(.md-avatar-icon),md-list-item .md-list-item-inner>div.md-secondary>md-icon:not(.md-avatar-icon),md-list-item .md-list-item-inner>md-icon.md-secondary:not(.md-avatar-icon),md-list-item .md-list-item-inner>md-icon:first-child:not(.md-avatar-icon),md-list-item>div.md-primary>md-icon:not(.md-avatar-icon),md-list-item>div.md-secondary>md-icon:not(.md-avatar-icon),md-list-item>md-icon.md-secondary:not(.md-avatar-icon),md-list-item>md-icon:first-child:not(.md-avatar-icon){width:24px;margin-top:16px;margin-bottom:12px;box-sizing:content-box}md-list-item .md-list-item-inner md-checkbox.md-secondary,md-list-item .md-list-item-inner>div.md-primary>md-checkbox,md-list-item .md-list-item-inner>div.md-secondary>md-checkbox,md-list-item .md-list-item-inner>md-checkbox,md-list-item md-checkbox.md-secondary,md-list-item>div.md-primary>md-checkbox,md-list-item>div.md-secondary>md-checkbox,md-list-item>md-checkbox{align-self:center}md-list-item .md-list-item-inner md-checkbox.md-secondary .md-label,md-list-item .md-list-item-inner>div.md-primary>md-checkbox .md-label,md-list-item .md-list-item-inner>div.md-secondary>md-checkbox .md-label,md-list-item .md-list-item-inner>md-checkbox .md-label,md-list-item md-checkbox.md-secondary .md-label,md-list-item>div.md-primary>md-checkbox .md-label,md-list-item>div.md-secondary>md-checkbox .md-label,md-list-item>md-checkbox .md-label{display:none}md-list-item .md-list-item-inner>md-icon:first-child:not(.md-avatar-icon),md-list-item>md-icon:first-child:not(.md-avatar-icon){margin-right:32px}[dir=rtl] md-list-item .md-list-item-inner>md-icon:first-child:not(.md-avatar-icon),[dir=rtl] md-list-item>md-icon:first-child:not(.md-avatar-icon){margin-right:auto;margin-left:32px}md-list-item .md-avatar,md-list-item .md-avatar-icon,md-list-item .md-list-item-inner .md-avatar,md-list-item .md-list-item-inner .md-avatar-icon{margin-top:8px;margin-bottom:8px;margin-right:16px;border-radius:50%;box-sizing:content-box}[dir=rtl] md-list-item .md-avatar,[dir=rtl] md-list-item .md-avatar-icon,[dir=rtl] md-list-item .md-list-item-inner .md-avatar,[dir=rtl] md-list-item .md-list-item-inner .md-avatar-icon{margin-right:auto;margin-left:16px}md-list-item .md-avatar,md-list-item .md-list-item-inner .md-avatar{flex:none;width:40px;height:40px}md-list-item .md-avatar-icon,md-list-item .md-list-item-inner .md-avatar-icon{padding:8px}md-list-item .md-avatar-icon svg,md-list-item .md-list-item-inner .md-avatar-icon svg{width:24px;height:24px}md-list-item .md-list-item-inner>md-checkbox,md-list-item>md-checkbox{width:24px;margin-left:3px;margin-right:29px;margin-top:16px}[dir=rtl] md-list-item .md-list-item-inner>md-checkbox,[dir=rtl] md-list-item>md-checkbox{margin-left:29px}[dir=rtl] md-list-item .md-list-item-inner>md-checkbox,[dir=rtl] md-list-item>md-checkbox{margin-right:3px}md-list-item .md-list-item-inner .md-secondary-container,md-list-item .md-secondary-container{display:flex;align-items:center;flex-shrink:0;margin:auto;margin-right:0;margin-left:auto}[dir=rtl] md-list-item .md-list-item-inner .md-secondary-container,[dir=rtl] md-list-item .md-secondary-container{margin-right:auto}[dir=rtl] md-list-item .md-list-item-inner .md-secondary-container,[dir=rtl] md-list-item .md-secondary-container{margin-left:0}md-list-item .md-list-item-inner .md-secondary-container .md-button:last-of-type,md-list-item .md-list-item-inner .md-secondary-container .md-icon-button:last-of-type,md-list-item .md-secondary-container .md-button:last-of-type,md-list-item .md-secondary-container .md-icon-button:last-of-type{margin-right:0}[dir=rtl] md-list-item .md-list-item-inner .md-secondary-container .md-button:last-of-type,[dir=rtl] md-list-item .md-list-item-inner .md-secondary-container .md-icon-button:last-of-type,[dir=rtl] md-list-item .md-secondary-container .md-button:last-of-type,[dir=rtl] md-list-item .md-secondary-container .md-icon-button:last-of-type{margin-right:auto;margin-left:0}md-list-item .md-list-item-inner .md-secondary-container md-checkbox,md-list-item .md-secondary-container md-checkbox{margin-top:0;margin-bottom:0}md-list-item .md-list-item-inner .md-secondary-container md-checkbox:last-child,md-list-item .md-secondary-container md-checkbox:last-child{width:24px;margin-right:0}[dir=rtl] md-list-item .md-list-item-inner .md-secondary-container md-checkbox:last-child,[dir=rtl] md-list-item .md-secondary-container md-checkbox:last-child{margin-right:auto;margin-left:0}md-list-item .md-list-item-inner .md-secondary-container md-switch,md-list-item .md-secondary-container md-switch{margin-top:0;margin-bottom:0;margin-right:-6px}[dir=rtl] md-list-item .md-list-item-inner .md-secondary-container md-switch,[dir=rtl] md-list-item .md-secondary-container md-switch{margin-right:auto;margin-left:-6px}md-list-item .md-list-item-inner>.md-list-item-inner>p,md-list-item .md-list-item-inner>p,md-list-item>.md-list-item-inner>p,md-list-item>p{flex:1 1 auto;margin:0}md-list-item.md-2-line,md-list-item.md-2-line>.md-no-style,md-list-item.md-3-line,md-list-item.md-3-line>.md-no-style{align-items:flex-start;justify-content:center}md-list-item.md-2-line.md-long-text,md-list-item.md-2-line>.md-no-style.md-long-text,md-list-item.md-3-line.md-long-text,md-list-item.md-3-line>.md-no-style.md-long-text{margin-top:8px;margin-bottom:8px}md-list-item.md-2-line .md-list-item-text,md-list-item.md-2-line>.md-no-style .md-list-item-text,md-list-item.md-3-line .md-list-item-text,md-list-item.md-3-line>.md-no-style .md-list-item-text{flex:1 1 auto;margin:auto;text-overflow:ellipsis;overflow:hidden}md-list-item.md-2-line .md-list-item-text.md-offset,md-list-item.md-2-line>.md-no-style .md-list-item-text.md-offset,md-list-item.md-3-line .md-list-item-text.md-offset,md-list-item.md-3-line>.md-no-style .md-list-item-text.md-offset{margin-left:56px}[dir=rtl] md-list-item.md-2-line .md-list-item-text.md-offset,[dir=rtl] md-list-item.md-2-line>.md-no-style .md-list-item-text.md-offset,[dir=rtl] md-list-item.md-3-line .md-list-item-text.md-offset,[dir=rtl] md-list-item.md-3-line>.md-no-style .md-list-item-text.md-offset{margin-left:auto;margin-right:56px}md-list-item.md-2-line .md-list-item-text h3,md-list-item.md-2-line>.md-no-style .md-list-item-text h3,md-list-item.md-3-line .md-list-item-text h3,md-list-item.md-3-line>.md-no-style .md-list-item-text h3{font-size:16px;font-weight:400;letter-spacing:.010em;margin:0;line-height:1.2em;overflow:hidden;white-space:nowrap;text-overflow:ellipsis}md-list-item.md-2-line .md-list-item-text h4,md-list-item.md-2-line>.md-no-style .md-list-item-text h4,md-list-item.md-3-line .md-list-item-text h4,md-list-item.md-3-line>.md-no-style .md-list-item-text h4{font-size:14px;letter-spacing:.010em;margin:3px 0 1px 0;font-weight:400;line-height:1.2em;overflow:hidden;white-space:nowrap;text-overflow:ellipsis}md-list-item.md-2-line .md-list-item-text p,md-list-item.md-2-line>.md-no-style .md-list-item-text p,md-list-item.md-3-line .md-list-item-text p,md-list-item.md-3-line>.md-no-style .md-list-item-text p{font-size:14px;font-weight:500;letter-spacing:.010em;margin:0;line-height:1.6em}md-list-item.md-2-line,md-list-item.md-2-line>.md-no-style{height:auto;min-height:72px}md-list-item.md-2-line::before,md-list-item.md-2-line>.md-no-style::before{content:'';min-height:72px;visibility:hidden;display:inline-block}md-list-item.md-2-line .md-avatar-icon,md-list-item.md-2-line>.md-avatar,md-list-item.md-2-line>.md-no-style .md-avatar-icon,md-list-item.md-2-line>.md-no-style>.md-avatar{margin-top:12px}md-list-item.md-2-line>.md-no-style>md-icon:first-child,md-list-item.md-2-line>md-icon:first-child{align-self:flex-start}md-list-item.md-2-line .md-list-item-text,md-list-item.md-2-line>.md-no-style .md-list-item-text{flex:1 1 auto}md-list-item.md-3-line,md-list-item.md-3-line>.md-no-style{height:auto;min-height:88px}md-list-item.md-3-line::before,md-list-item.md-3-line>.md-no-style::before{content:'';min-height:88px;visibility:hidden;display:inline-block}md-list-item.md-3-line>.md-avatar,md-list-item.md-3-line>.md-no-style>.md-avatar,md-list-item.md-3-line>.md-no-style>md-icon:first-child,md-list-item.md-3-line>md-icon:first-child{margin-top:16px}.md-open-menu-container{position:fixed;left:0;top:0;z-index:100;opacity:0;border-radius:2px}.md-open-menu-container md-menu-divider{margin-top:4px;margin-bottom:4px;height:1px;min-height:1px;max-height:1px;width:100%}.md-open-menu-container md-menu-content>*{opacity:0}.md-open-menu-container:not(.md-clickable){pointer-events:none}.md-open-menu-container.md-active{opacity:1;transition:all .4s cubic-bezier(.25,.8,.25,1);transition-duration:.2s}.md-open-menu-container.md-active>md-menu-content>*{opacity:1;transition:all .3s cubic-bezier(.55,0,.55,.2);transition-duration:.2s;transition-delay:.1s}.md-open-menu-container.md-leave{opacity:0;transition:all .3s cubic-bezier(.55,0,.55,.2);transition-duration:250ms}md-menu-content{display:flex;flex-direction:column;padding:8px 0;max-height:304px;overflow-y:auto}md-menu-content.md-dense{max-height:208px}md-menu-content.md-dense md-menu-item{height:32px;min-height:0}md-menu-item{display:flex;flex-direction:row;min-height:48px;height:48px;align-content:center;justify-content:flex-start}md-menu-item>*{width:100%;margin:auto 0;padding-left:16px;padding-right:16px}md-menu-item>a.md-button{padding-top:5px}md-menu-item>.md-button{text-align:left;display:inline-block;border-radius:0;margin:auto 0;font-size:15px;text-transform:none;font-weight:400;height:100%;padding-left:16px;padding-right:16px;width:100%}md-menu-item>.md-button::-moz-focus-inner{padding:0;border:0}[dir=rtl] md-menu-item>.md-button{text-align:right}md-menu-item>.md-button md-icon{margin:auto 16px auto 0}[dir=rtl] md-menu-item>.md-button md-icon{margin:auto 0 auto 16px}md-menu-item>.md-button p{display:inline-block;margin:auto}md-menu-item>.md-button span{margin-top:auto;margin-bottom:auto}md-menu-item>.md-button .md-ripple-container{border-radius:inherit}md-toolbar .md-menu{height:auto;margin:auto;padding:0}@media (max-width:959px){md-menu-content{min-width:112px}md-menu-content[width="3"]{min-width:168px}md-menu-content[width="4"]{min-width:224px}md-menu-content[width="5"]{min-width:280px}md-menu-content[width="6"]{min-width:336px}md-menu-content[width="7"]{min-width:392px}}@media (min-width:960px){md-menu-content{min-width:96px}md-menu-content[width="3"]{min-width:192px}md-menu-content[width="4"]{min-width:256px}md-menu-content[width="5"]{min-width:320px}md-menu-content[width="6"]{min-width:384px}md-menu-content[width="7"]{min-width:448px}}md-toolbar.md-menu-toolbar h2.md-toolbar-tools{line-height:1rem;height:auto;padding:28px;padding-bottom:12px}md-toolbar.md-has-open-menu{position:relative;z-index:100}md-menu-bar{padding:0 20px;display:block;position:relative;z-index:2}md-menu-bar .md-menu{display:inline-block;padding:0;position:relative}md-menu-bar button{font-size:14px;padding:0 10px;margin:0;border:0;background-color:transparent;height:40px}md-menu-bar md-backdrop.md-menu-backdrop{z-index:-2}md-menu-content.md-menu-bar-menu.md-dense{max-height:none;padding:16px 0}md-menu-content.md-menu-bar-menu.md-dense md-menu-item.md-indent{position:relative}md-menu-content.md-menu-bar-menu.md-dense md-menu-item.md-indent>md-icon{position:absolute;padding:0;width:24px;top:6px;left:24px}[dir=rtl] md-menu-content.md-menu-bar-menu.md-dense md-menu-item.md-indent>md-icon{left:auto;right:24px}md-menu-content.md-menu-bar-menu.md-dense md-menu-item.md-indent .md-menu>.md-button,md-menu-content.md-menu-bar-menu.md-dense md-menu-item.md-indent>.md-button{padding:0 32px 0 64px}[dir=rtl] md-menu-content.md-menu-bar-menu.md-dense md-menu-item.md-indent .md-menu>.md-button,[dir=rtl] md-menu-content.md-menu-bar-menu.md-dense md-menu-item.md-indent>.md-button{padding:0 64px 0 32px}md-menu-content.md-menu-bar-menu.md-dense .md-button{min-height:0;height:32px;display:flex}md-menu-content.md-menu-bar-menu.md-dense .md-button span{flex-grow:1}md-menu-content.md-menu-bar-menu.md-dense .md-button span.md-alt-text{flex-grow:0;align-self:flex-end;margin:0 8px}md-menu-content.md-menu-bar-menu.md-dense md-menu-divider{margin:8px 0}md-menu-content.md-menu-bar-menu.md-dense .md-menu>.md-button,md-menu-content.md-menu-bar-menu.md-dense md-menu-item>.md-button{text-align:left}[dir=rtl] md-menu-content.md-menu-bar-menu.md-dense .md-menu>.md-button,[dir=rtl] md-menu-content.md-menu-bar-menu.md-dense md-menu-item>.md-button{text-align:right}md-menu-content.md-menu-bar-menu.md-dense .md-menu{padding:0}md-menu-content.md-menu-bar-menu.md-dense .md-menu>.md-button{position:relative;margin:0;width:100%;text-transform:none;font-weight:400;border-radius:0;padding-left:16px}[dir=rtl] md-menu-content.md-menu-bar-menu.md-dense .md-menu>.md-button{padding-left:0;padding-right:16px}md-menu-content.md-menu-bar-menu.md-dense .md-menu>.md-button:after{display:block;content:'\25BC';position:absolute;top:0;speak:none;transform:rotate(270deg) scaleY(.45) scaleX(.9);right:28px}[dir=rtl] md-menu-content.md-menu-bar-menu.md-dense .md-menu>.md-button:after{transform:rotate(90deg) scaleY(.45) scaleX(.9)}[dir=rtl] md-menu-content.md-menu-bar-menu.md-dense .md-menu>.md-button:after{right:auto;left:28px}.md-nav-bar{border-style:solid;border-width:0 0 1px;height:48px;position:relative}._md-nav-bar-list{outline:0;list-style:none;margin:0;padding:0;box-sizing:border-box;display:flex;flex-direction:row}.md-nav-item:first-of-type{margin-left:8px}.md-button._md-nav-button{line-height:24px;margin:0 4px;padding:12px 16px;transition:background-color .35s cubic-bezier(.35,0,.25,1)}.md-button._md-nav-button:focus{outline:0}.md-button._md-nav-button:hover{background-color:inherit}md-nav-ink-bar{bottom:0;height:2px;left:auto;position:absolute;right:auto;background-color:#000}md-nav-ink-bar._md-left{transition:left 125ms cubic-bezier(.35,0,.25,1),right .25s cubic-bezier(.35,0,.25,1)}md-nav-ink-bar._md-right{transition:left .25s cubic-bezier(.35,0,.25,1),right 125ms cubic-bezier(.35,0,.25,1)}md-nav-extra-content{min-height:48px;padding-right:12px}.md-panel-outer-wrapper{height:100%;left:0;position:absolute;top:0;width:100%}._md-panel-hidden{display:none}._md-panel-fullscreen{border-radius:0;left:0;min-height:100%;min-width:100%;position:fixed;top:0}._md-panel-shown .md-panel{opacity:1;transition:none}.md-panel{opacity:0;position:fixed}.md-panel._md-panel-shown{opacity:1;transition:none}.md-panel._md-panel-animate-enter{opacity:1;transition:all .3s cubic-bezier(0,0,.2,1)}.md-panel._md-panel-animate-leave{opacity:1;transition:all .3s cubic-bezier(.4,0,1,1)}.md-panel._md-panel-animate-fade-out,.md-panel._md-panel-animate-scale-out{opacity:0}.md-panel._md-panel-backdrop{height:100%;position:absolute;width:100%}.md-panel._md-opaque-enter{opacity:.48;transition:opacity .3s cubic-bezier(0,0,.2,1)}.md-panel._md-opaque-leave{transition:opacity .3s cubic-bezier(.4,0,1,1)}@keyframes indeterminate-rotate{0%{transform:rotate(0)}100%{transform:rotate(360deg)}}md-progress-circular{position:relative;display:block}md-progress-circular._md-progress-circular-disabled{visibility:hidden}md-progress-circular.md-mode-indeterminate svg{animation:indeterminate-rotate 2.9s linear infinite}md-progress-circular svg{position:absolute;overflow:visible;top:0;left:0}md-progress-linear{display:block;position:relative;width:100%;height:5px;padding-top:0!important;margin-bottom:0!important}md-progress-linear._md-progress-linear-disabled{visibility:hidden}md-progress-linear .md-container{display:block;position:relative;overflow:hidden;width:100%;height:5px;transform:translate(0,0) scale(1,1)}md-progress-linear .md-container .md-bar{position:absolute;left:0;top:0;bottom:0;width:100%;height:5px}md-progress-linear .md-container .md-dashed:before{content:"";display:none;position:absolute;margin-top:0;height:5px;width:100%;background-color:transparent;background-size:10px 10px!important;background-position:0 -23px}md-progress-linear .md-container .md-bar1,md-progress-linear .md-container .md-bar2{transition:transform .2s linear}md-progress-linear .md-container.md-mode-query .md-bar1{display:none}md-progress-linear .md-container.md-mode-query .md-bar2{transition:all .2s linear;animation:query .8s infinite cubic-bezier(.39,.575,.565,1)}md-progress-linear .md-container.md-mode-determinate .md-bar1{display:none}md-progress-linear .md-container.md-mode-indeterminate .md-bar1{animation:md-progress-linear-indeterminate-scale-1 4s infinite,md-progress-linear-indeterminate-1 4s infinite}md-progress-linear .md-container.md-mode-indeterminate .md-bar2{animation:md-progress-linear-indeterminate-scale-2 4s infinite,md-progress-linear-indeterminate-2 4s infinite}md-progress-linear .md-container.ng-hide ._md-progress-linear-disabled md-progress-linear .md-container{animation:none}md-progress-linear .md-container.ng-hide ._md-progress-linear-disabled md-progress-linear .md-container .md-bar1{animation-name:none}md-progress-linear .md-container.ng-hide ._md-progress-linear-disabled md-progress-linear .md-container .md-bar2{animation-name:none}md-progress-linear .md-container.md-mode-buffer{background-color:transparent!important;transition:all .2s linear}md-progress-linear .md-container.md-mode-buffer .md-dashed:before{display:block;animation:buffer 3s infinite linear}@keyframes query{0%{opacity:1;transform:translateX(35%) scale(.3,1)}100%{opacity:0;transform:translateX(-50%) scale(0,1)}}@keyframes buffer{0%{opacity:1;background-position:0 -23px}50%{opacity:0}100%{opacity:1;background-position:-200px -23px}}@keyframes md-progress-linear-indeterminate-scale-1{0%{transform:scaleX(.1);animation-timing-function:linear}36.6%{transform:scaleX(.1);animation-timing-function:cubic-bezier(.334731432,.124819821,.785843996,1)}69.15%{transform:scaleX(.83);animation-timing-function:cubic-bezier(.225732004,0,.233648906,1.3709798)}100%{transform:scaleX(.1)}}@keyframes md-progress-linear-indeterminate-1{0%{left:-105.166666667%;animation-timing-function:linear}20%{left:-105.166666667%;animation-timing-function:cubic-bezier(.5,0,.701732,.495818703)}69.15%{left:21.5%;animation-timing-function:cubic-bezier(.302435,.38135197,.55,.956352125)}100%{left:95.4444444444%}}@keyframes md-progress-linear-indeterminate-scale-2{0%{transform:scaleX(.1);animation-timing-function:cubic-bezier(.205028172,.057050836,.57660995,.453970841)}19.15%{transform:scaleX(.57);animation-timing-function:cubic-bezier(.152312994,.196431957,.648373778,1.00431535)}44.15%{transform:scaleX(.91);animation-timing-function:cubic-bezier(.25775882,-.003163357,.211761916,1.38178961)}100%{transform:scaleX(.1)}}@keyframes md-progress-linear-indeterminate-2{0%{left:-54.8888888889%;animation-timing-function:cubic-bezier(.15,0,.5150584,.409684966)}25%{left:-17.25%;animation-timing-function:cubic-bezier(.3103299,.284057684,.8,.733718979)}48.35%{left:29.5%;animation-timing-function:cubic-bezier(.4,.627034903,.6,.902025796)}100%{left:117.388888889%}}md-radio-button{box-sizing:border-box;display:block;margin-bottom:16px;white-space:nowrap;cursor:pointer;position:relative}md-radio-button[disabled]{cursor:default}md-radio-button[disabled] .md-container{cursor:default}md-radio-button .md-container{position:absolute;top:50%;transform:translateY(-50%);box-sizing:border-box;display:inline-block;width:20px;height:20px;cursor:pointer;left:0;right:auto}[dir=rtl] md-radio-button .md-container{left:auto}[dir=rtl] md-radio-button .md-container{right:0}md-radio-button .md-container .md-ripple-container{position:absolute;display:block;width:auto;height:auto;left:-15px;top:-15px;right:-15px;bottom:-15px}md-radio-button .md-container:before{box-sizing:border-box;background-color:transparent;border-radius:50%;content:'';position:absolute;display:block;height:auto;left:0;top:0;right:0;bottom:0;transition:all .5s;width:auto}md-radio-button.md-align-top-left>div.md-container{top:12px}md-radio-button .md-off{box-sizing:border-box;position:absolute;top:0;left:0;width:20px;height:20px;border-style:solid;border-width:2px;border-radius:50%;transition:border-color ease .28s}md-radio-button .md-on{box-sizing:border-box;position:absolute;top:0;left:0;width:20px;height:20px;border-radius:50%;transition:transform ease .28s;transform:scale(0)}md-radio-button.md-checked .md-on{transform:scale(.5)}md-radio-button .md-label{box-sizing:border-box;position:relative;display:inline-block;margin-left:30px;margin-right:0;vertical-align:middle;white-space:normal;pointer-events:none;width:auto}[dir=rtl] md-radio-button .md-label{margin-left:0}[dir=rtl] md-radio-button .md-label{margin-right:30px}md-radio-group.layout-column md-radio-button,md-radio-group.layout-gt-lg-column md-radio-button,md-radio-group.layout-gt-md-column md-radio-button,md-radio-group.layout-gt-sm-column md-radio-button,md-radio-group.layout-gt-xs-column md-radio-button,md-radio-group.layout-lg-column md-radio-button,md-radio-group.layout-md-column md-radio-button,md-radio-group.layout-sm-column md-radio-button,md-radio-group.layout-xl-column md-radio-button,md-radio-group.layout-xs-column md-radio-button{margin-bottom:16px}md-radio-group.layout-gt-lg-row md-radio-button,md-radio-group.layout-gt-md-row md-radio-button,md-radio-group.layout-gt-sm-row md-radio-button,md-radio-group.layout-gt-xs-row md-radio-button,md-radio-group.layout-lg-row md-radio-button,md-radio-group.layout-md-row md-radio-button,md-radio-group.layout-row md-radio-button,md-radio-group.layout-sm-row md-radio-button,md-radio-group.layout-xl-row md-radio-button,md-radio-group.layout-xs-row md-radio-button{margin-top:0;margin-bottom:0;margin-left:0;margin-right:16px}[dir=rtl] md-radio-group.layout-gt-lg-row md-radio-button,[dir=rtl] md-radio-group.layout-gt-md-row md-radio-button,[dir=rtl] md-radio-group.layout-gt-sm-row md-radio-button,[dir=rtl] md-radio-group.layout-gt-xs-row md-radio-button,[dir=rtl] md-radio-group.layout-lg-row md-radio-button,[dir=rtl] md-radio-group.layout-md-row md-radio-button,[dir=rtl] md-radio-group.layout-row md-radio-button,[dir=rtl] md-radio-group.layout-sm-row md-radio-button,[dir=rtl] md-radio-group.layout-xl-row md-radio-button,[dir=rtl] md-radio-group.layout-xs-row md-radio-button{margin-left:16px}[dir=rtl] md-radio-group.layout-gt-lg-row md-radio-button,[dir=rtl] md-radio-group.layout-gt-md-row md-radio-button,[dir=rtl] md-radio-group.layout-gt-sm-row md-radio-button,[dir=rtl] md-radio-group.layout-gt-xs-row md-radio-button,[dir=rtl] md-radio-group.layout-lg-row md-radio-button,[dir=rtl] md-radio-group.layout-md-row md-radio-button,[dir=rtl] md-radio-group.layout-row md-radio-button,[dir=rtl] md-radio-group.layout-sm-row md-radio-button,[dir=rtl] md-radio-group.layout-xl-row md-radio-button,[dir=rtl] md-radio-group.layout-xs-row md-radio-button{margin-right:0}md-radio-group.layout-gt-lg-row md-radio-button:last-of-type,md-radio-group.layout-gt-md-row md-radio-button:last-of-type,md-radio-group.layout-gt-sm-row md-radio-button:last-of-type,md-radio-group.layout-gt-xs-row md-radio-button:last-of-type,md-radio-group.layout-lg-row md-radio-button:last-of-type,md-radio-group.layout-md-row md-radio-button:last-of-type,md-radio-group.layout-row md-radio-button:last-of-type,md-radio-group.layout-sm-row md-radio-button:last-of-type,md-radio-group.layout-xl-row md-radio-button:last-of-type,md-radio-group.layout-xs-row md-radio-button:last-of-type{margin-left:0;margin-right:0}md-radio-group:focus{outline:0}md-radio-group.md-focused .md-checked .md-container:before{left:-8px;top:-8px;right:-8px;bottom:-8px}md-radio-group[disabled] md-radio-button{cursor:default}md-radio-group[disabled] md-radio-button .md-container{cursor:default}.md-inline-form md-radio-group{margin:18px 0 19px}.md-inline-form md-radio-group md-radio-button{display:inline-block;height:30px;padding:2px;box-sizing:border-box;margin-top:0;margin-bottom:0}@media screen and (-ms-high-contrast:active){md-radio-button.md-default-theme .md-on{background-color:#fff}}md-input-container:not([md-no-float]) .md-select-placeholder span:first-child{transition:transform .4s cubic-bezier(.25,.8,.25,1);transform-origin:left top}[dir=rtl] md-input-container:not([md-no-float]) .md-select-placeholder span:first-child{transform-origin:right top}md-input-container.md-input-focused:not([md-no-float]) .md-select-placeholder span:first-child{transform:translateY(-22px) translateX(-2px) scale(.75)}.md-select-menu-container{position:fixed;left:0;top:0;z-index:90;opacity:0;display:none;transform:translateY(-1px)}.md-select-menu-container:not(.md-clickable){pointer-events:none}.md-select-menu-container md-progress-circular{display:table;margin:24px auto!important}.md-select-menu-container.md-active{display:block;opacity:1}.md-select-menu-container.md-active md-select-menu{transition:all .4s cubic-bezier(.25,.8,.25,1);transition-duration:150ms}.md-select-menu-container.md-active md-select-menu>*{opacity:1;transition:all .3s cubic-bezier(.55,0,.55,.2);transition-duration:150ms;transition-delay:.1s}.md-select-menu-container.md-leave{opacity:0;transition:all .3s cubic-bezier(.55,0,.55,.2);transition-duration:250ms}md-input-container>md-select{margin:0;order:2}md-input-container:not(.md-input-has-value) md-select.ng-required:not(.md-no-asterisk) .md-select-value span:first-child:after,md-input-container:not(.md-input-has-value) md-select[required]:not(.md-no-asterisk) .md-select-value span:first-child:after{content:' *';font-size:13px;vertical-align:top}md-input-container.md-input-invalid md-select .md-select-value{border-bottom-style:solid;padding-bottom:1px}md-select{display:flex;margin:20px 0 26px 0}md-select.ng-required.ng-invalid:not(.md-no-asterisk) .md-select-value span:first-child:after,md-select[required].ng-invalid:not(.md-no-asterisk) .md-select-value span:first-child:after{content:' *';font-size:13px;vertical-align:top}md-select[disabled] .md-select-value{background-position:0 bottom;background-size:4px 1px;background-repeat:repeat-x;margin-bottom:-1px}md-select:focus{outline:0}md-select[disabled]:hover{cursor:default}md-select:not([disabled]):hover{cursor:pointer}md-select:not([disabled]).ng-invalid.ng-touched .md-select-value{border-bottom-style:solid;padding-bottom:1px}md-select:not([disabled]):focus .md-select-value{border-bottom-width:2px;border-bottom-style:solid;padding-bottom:0}md-select:not([disabled]):focus.ng-invalid.ng-touched .md-select-value{padding-bottom:0}md-input-container.md-input-has-value .md-select-value>span:not(.md-select-icon){transform:translate3d(0,1px,0)}.md-select-value{display:flex;align-items:center;padding:2px 2px 1px;border-bottom-width:1px;border-bottom-style:solid;background-color:transparent;position:relative;box-sizing:content-box;min-width:64px;min-height:26px;flex-grow:1}.md-select-value>span:not(.md-select-icon){max-width:100%;flex:1 1 auto;text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.md-select-value>span:not(.md-select-icon) .md-text{display:inline}.md-select-value .md-select-icon{display:block;align-items:flex-end;text-align:end;width:24px;margin:0 4px;transform:translate3d(0,-2px,0);font-size:1.2rem}.md-select-value .md-select-icon:after{display:block;content:'\25BC';position:relative;top:2px;speak:none;font-size:13px;transform:scaleY(.5) scaleX(1)}.md-select-value.md-select-placeholder{display:flex;order:1;pointer-events:none;-webkit-font-smoothing:antialiased;padding-left:2px;z-index:1}md-select-menu{display:flex;flex-direction:column;box-shadow:0 1px 3px 0 rgba(0,0,0,.2),0 1px 1px 0 rgba(0,0,0,.14),0 2px 1px -1px rgba(0,0,0,.12);max-height:256px;min-height:48px;overflow-y:hidden;transform-origin:left top;transform:scale(1)}md-select-menu.md-reverse{flex-direction:column-reverse}md-select-menu:not(.md-overflow) md-content{padding-top:8px;padding-bottom:8px}[dir=rtl] md-select-menu{transform-origin:right top}md-select-menu md-content{min-width:136px;min-height:48px;max-height:256px;overflow-y:auto}md-select-menu>*{opacity:0}md-option{cursor:pointer;position:relative;display:flex;align-items:center;width:auto;transition:background .15s linear;padding:0 16px 0 16px;height:48px}md-option[disabled]{cursor:default}md-option:focus{outline:0}md-option .md-text{-webkit-touch-callout:none;-webkit-user-select:none;-khtml-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;width:auto;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}md-optgroup{display:block}md-optgroup label{display:block;font-size:14px;text-transform:uppercase;padding:16px;font-weight:500}md-optgroup md-option{padding-left:32px;padding-right:32px}@media screen and (-ms-high-contrast:active){.md-select-backdrop{background-color:transparent}md-select-menu{border:1px solid #fff}}md-select-menu[multiple] md-option.md-checkbox-enabled{padding-left:40px;padding-right:16px}[dir=rtl] md-select-menu[multiple] md-option.md-checkbox-enabled{padding-left:16px}[dir=rtl] md-select-menu[multiple] md-option.md-checkbox-enabled{padding-right:40px}md-select-menu[multiple] md-option.md-checkbox-enabled .md-container{position:absolute;top:50%;transform:translateY(-50%);box-sizing:border-box;display:inline-block;width:20px;height:20px;left:0;right:auto}[dir=rtl] md-select-menu[multiple] md-option.md-checkbox-enabled .md-container{left:auto}[dir=rtl] md-select-menu[multiple] md-option.md-checkbox-enabled .md-container{right:0}md-select-menu[multiple] md-option.md-checkbox-enabled .md-container:before{box-sizing:border-box;background-color:transparent;border-radius:50%;content:'';position:absolute;display:block;height:auto;left:0;top:0;right:0;bottom:0;transition:all .5s;width:auto}md-select-menu[multiple] md-option.md-checkbox-enabled .md-container:after{box-sizing:border-box;content:'';position:absolute;top:-10px;right:-10px;bottom:-10px;left:-10px}md-select-menu[multiple] md-option.md-checkbox-enabled .md-container .md-ripple-container{position:absolute;display:block;width:auto;height:auto;left:-15px;top:-15px;right:-15px;bottom:-15px}md-select-menu[multiple] md-option.md-checkbox-enabled .md-icon{box-sizing:border-box;transition:240ms;position:absolute;top:0;left:0;width:20px;height:20px;border-width:2px;border-style:solid;border-radius:2px}md-select-menu[multiple] md-option.md-checkbox-enabled[selected] .md-icon{border-color:transparent}md-select-menu[multiple] md-option.md-checkbox-enabled[selected] .md-icon:after{box-sizing:border-box;transform:rotate(45deg);position:absolute;left:4.6666666667px;top:.2222222222px;display:table;width:6.6666666667px;height:13.3333333333px;border-width:2px;border-style:solid;border-top:0;border-left:0;content:''}md-select-menu[multiple] md-option.md-checkbox-enabled[disabled]{cursor:default}md-select-menu[multiple] md-option.md-checkbox-enabled.md-indeterminate .md-icon:after{box-sizing:border-box;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);display:table;width:12px;height:2px;border-width:2px;border-style:solid;border-top:0;border-left:0;content:''}md-select-menu[multiple] md-option.md-checkbox-enabled .md-container{margin-left:10.6666666667px;margin-right:auto}[dir=rtl] md-select-menu[multiple] md-option.md-checkbox-enabled .md-container{margin-left:auto}[dir=rtl] md-select-menu[multiple] md-option.md-checkbox-enabled .md-container{margin-right:10.6666666667px}md-sidenav{box-sizing:border-box;position:absolute;flex-direction:column;z-index:60;width:320px;max-width:320px;bottom:0;overflow:auto;-webkit-overflow-scrolling:touch}md-sidenav ul{list-style:none}md-sidenav.md-closed{display:none}md-sidenav.md-closed-add,md-sidenav.md-closed-remove{display:flex;transition:.2s ease-in all}md-sidenav.md-closed-add.md-closed-add-active,md-sidenav.md-closed-remove.md-closed-remove-active{transition:all .4s cubic-bezier(.25,.8,.25,1)}md-sidenav.md-locked-open-add,md-sidenav.md-locked-open-remove{position:static;display:flex;transform:translate3d(0,0,0)}md-sidenav.md-locked-open,md-sidenav.md-locked-open-remove.md-closed,md-sidenav.md-locked-open.md-closed,md-sidenav.md-locked-open.md-closed.md-sidenav-left,md-sidenav.md-locked-open.md-closed.md-sidenav-right{position:static;display:flex;transform:translate3d(0,0,0)}md-sidenav.md-locked-open-remove-active{transition:width .3s cubic-bezier(.55,0,.55,.2),min-width .3s cubic-bezier(.55,0,.55,.2);width:0!important;min-width:0!important}md-sidenav.md-closed.md-locked-open-add{width:0!important;min-width:0!important;transform:translate3d(0,0,0)}md-sidenav.md-closed.md-locked-open-add-active{transition:width .3s cubic-bezier(.55,0,.55,.2),min-width .3s cubic-bezier(.55,0,.55,.2);width:320px;min-width:320px;transform:translate3d(0,0,0)}.md-sidenav-backdrop.md-locked-open{display:none}.md-sidenav-left,md-sidenav{left:0;top:0;transform:translate3d(0,0,0)}.md-sidenav-left.md-closed,md-sidenav.md-closed{transform:translate3d(-100%,0,0)}.md-sidenav-right{left:100%;top:0;transform:translate(-100%,0)}.md-sidenav-right.md-closed{transform:translate(0,0)}@media (min-width:600px){md-sidenav{max-width:400px}}@media (max-width:456px){md-sidenav{width:calc(100% - 56px);min-width:calc(100% - 56px);max-width:calc(100% - 56px)}}@media screen and (-ms-high-contrast:active){.md-sidenav-left,md-sidenav{border-right:1px solid #fff}.md-sidenav-right{border-left:1px solid #fff}}@keyframes sliderFocusThumb{0%{transform:scale(.7)}30%{transform:scale(1)}100%{transform:scale(.7)}}@keyframes sliderDiscreteFocusThumb{0%{transform:scale(.7)}50%{transform:scale(.8)}100%{transform:scale(0)}}@keyframes sliderDiscreteFocusRing{0%{transform:scale(.7);opacity:0}50%{transform:scale(1);opacity:1}100%{transform:scale(0)}}md-slider{height:48px;min-width:128px;position:relative;margin-left:4px;margin-right:4px;padding:0;display:block;flex-direction:row}md-slider *,md-slider :after{box-sizing:border-box}md-slider .md-slider-wrapper{outline:0;width:100%;height:100%}md-slider .md-slider-content{position:relative}md-slider .md-track-container{width:100%;position:absolute;top:23px;height:2px}md-slider .md-track{position:absolute;left:0;right:0;height:100%}md-slider .md-track-fill{transition:all .4s cubic-bezier(.25,.8,.25,1);transition-property:width,height}md-slider .md-track-ticks{position:absolute;left:0;right:0;height:100%}md-slider .md-track-ticks canvas{width:100%;height:100%}md-slider .md-thumb-container{position:absolute;left:0;top:50%;transform:translate3d(-50%,-50%,0);transition:all .4s cubic-bezier(.25,.8,.25,1);transition-property:left,right,bottom}[dir=rtl] md-slider .md-thumb-container{left:auto;right:0}md-slider .md-thumb{z-index:1;position:absolute;left:-10px;top:14px;width:20px;height:20px;border-radius:20px;transform:scale(.7);transition:all .4s cubic-bezier(.25,.8,.25,1)}[dir=rtl] md-slider .md-thumb{left:auto;right:-10px}md-slider .md-thumb:after{content:'';position:absolute;width:20px;height:20px;border-radius:20px;border-width:3px;border-style:solid;transition:inherit}md-slider .md-sign{display:flex;align-items:center;justify-content:center;position:absolute;left:-14px;top:-17px;width:28px;height:28px;border-radius:28px;transform:scale(.4) translate3d(0,67.5px,0);transition:all .3s cubic-bezier(.35,0,.25,1)}md-slider .md-sign:after{position:absolute;content:'';left:0;border-radius:16px;top:19px;border-left:14px solid transparent;border-right:14px solid transparent;border-top-width:16px;border-top-style:solid;opacity:0;transform:translate3d(0,-8px,0);transition:all .2s cubic-bezier(.35,0,.25,1)}[dir=rtl] md-slider .md-sign:after{left:auto;right:0}md-slider .md-sign .md-thumb-text{z-index:1;font-size:12px;font-weight:700}md-slider .md-focus-ring{position:absolute;left:-17px;top:7px;width:34px;height:34px;border-radius:34px;transform:scale(.7);opacity:0;transition:all .35s cubic-bezier(.35,0,.25,1)}[dir=rtl] md-slider .md-focus-ring{left:auto;right:-17px}md-slider .md-disabled-thumb{position:absolute;left:-14px;top:10px;width:28px;height:28px;border-radius:28px;transform:scale(.5);border-width:4px;border-style:solid;display:none}[dir=rtl] md-slider .md-disabled-thumb{left:auto;right:-14px}md-slider.md-min .md-sign{opacity:0}md-slider:focus{outline:0}md-slider.md-dragging .md-thumb-container,md-slider.md-dragging .md-track-fill{transition:none}md-slider:not([md-discrete]) .md-sign,md-slider:not([md-discrete]) .md-track-ticks{display:none}md-slider:not([md-discrete]):not([disabled]) .md-slider-wrapper .md-thumb:hover{transform:scale(.8)}md-slider:not([md-discrete]):not([disabled]) .md-slider-wrapper.md-focused .md-focus-ring{transform:scale(1);opacity:1}md-slider:not([md-discrete]):not([disabled]) .md-slider-wrapper.md-focused .md-thumb{animation:sliderFocusThumb .7s cubic-bezier(.35,0,.25,1)}md-slider:not([md-discrete]):not([disabled]).md-active .md-slider-wrapper .md-thumb{transform:scale(1)}md-slider[md-discrete]:not([disabled]) .md-slider-wrapper.md-focused .md-focus-ring{transform:scale(0);animation:sliderDiscreteFocusRing .5s cubic-bezier(.35,0,.25,1)}md-slider[md-discrete]:not([disabled]) .md-slider-wrapper.md-focused .md-thumb{animation:sliderDiscreteFocusThumb .5s cubic-bezier(.35,0,.25,1)}md-slider[md-discrete]:not([disabled]) .md-slider-wrapper.md-focused .md-thumb,md-slider[md-discrete]:not([disabled]).md-active .md-thumb{transform:scale(0)}md-slider[md-discrete]:not([disabled]) .md-slider-wrapper.md-focused .md-sign,md-slider[md-discrete]:not([disabled]) .md-slider-wrapper.md-focused .md-sign:after,md-slider[md-discrete]:not([disabled]).md-active .md-sign,md-slider[md-discrete]:not([disabled]).md-active .md-sign:after{opacity:1;transform:translate3d(0,0,0) scale(1)}md-slider[md-discrete][disabled][readonly] .md-thumb{transform:scale(0)}md-slider[md-discrete][disabled][readonly] .md-sign,md-slider[md-discrete][disabled][readonly] .md-sign:after{opacity:1;transform:translate3d(0,0,0) scale(1)}md-slider[disabled] .md-track-fill{display:none}md-slider[disabled] .md-track-ticks{opacity:0}md-slider[disabled]:not([readonly]) .md-sign{opacity:0}md-slider[disabled] .md-thumb{transform:scale(.5)}md-slider[disabled] .md-disabled-thumb{display:block}md-slider[md-vertical]{flex-direction:column;min-height:128px;min-width:0}md-slider[md-vertical] .md-slider-wrapper{flex:1;padding-top:12px;padding-bottom:12px;width:48px;align-self:center;display:flex;justify-content:center}md-slider[md-vertical] .md-track-container{height:100%;width:2px;top:0;left:calc(50% - (2px / 2))}md-slider[md-vertical] .md-thumb-container{top:auto;margin-bottom:23px;left:calc(50% - 1px);bottom:0}md-slider[md-vertical] .md-thumb-container .md-thumb:after{left:1px}md-slider[md-vertical] .md-thumb-container .md-focus-ring{left:-16px}md-slider[md-vertical] .md-track-fill{bottom:0}md-slider[md-vertical][md-discrete] .md-sign{left:-40px;top:9.5px;transform:scale(.4) translate3d(67.5px,0,0)}md-slider[md-vertical][md-discrete] .md-sign:after{top:9.5px;left:19px;border-top:14px solid transparent;border-right:0;border-bottom:14px solid transparent;border-left-width:16px;border-left-style:solid;opacity:0;transform:translate3d(0,-8px,0);transition:all .2s ease-in-out}md-slider[md-vertical][md-discrete] .md-sign .md-thumb-text{z-index:1;font-size:12px;font-weight:700}md-slider[md-vertical][md-discrete] .md-focused .md-sign:after,md-slider[md-vertical][md-discrete].md-active .md-sign:after,md-slider[md-vertical][md-discrete][disabled][readonly] .md-sign:after{top:0}md-slider[md-vertical][disabled][readonly] .md-thumb{transform:scale(0)}md-slider[md-vertical][disabled][readonly] .md-sign,md-slider[md-vertical][disabled][readonly] .md-sign:after{opacity:1;transform:translate3d(0,0,0) scale(1)}md-slider[md-invert]:not([md-vertical]) .md-track-fill{left:auto;right:0}[dir=rtl] md-slider[md-invert]:not([md-vertical]) .md-track-fill{left:0}[dir=rtl] md-slider[md-invert]:not([md-vertical]) .md-track-fill{right:auto}md-slider[md-invert][md-vertical] .md-track-fill{bottom:auto;top:0}md-slider-container{display:flex;align-items:center;flex-direction:row}md-slider-container>:first-child:not(md-slider),md-slider-container>:last-child:not(md-slider){min-width:25px;max-width:42px;height:25px;transition:all .4s cubic-bezier(.25,.8,.25,1);transition-property:color,max-width}md-slider-container>:first-child:not(md-slider){margin-right:16px}[dir=rtl] md-slider-container>:first-child:not(md-slider){margin-right:auto;margin-left:16px}md-slider-container>:last-child:not(md-slider){margin-left:16px}[dir=rtl] md-slider-container>:last-child:not(md-slider){margin-left:auto;margin-right:16px}md-slider-container[md-vertical]{flex-direction:column}md-slider-container[md-vertical]>:first-child:not(md-slider),md-slider-container[md-vertical]>:last-child:not(md-slider){margin-right:0;margin-left:0;text-align:center}md-slider-container md-input-container input[type=number]{text-align:center;padding-left:15px;height:50px;margin-top:-25px}[dir=rtl] md-slider-container md-input-container input[type=number]{padding-left:0;padding-right:15px}@media screen and (-ms-high-contrast:active){md-slider.md-default-theme .md-track{border-bottom:1px solid #fff}}.md-sticky-clone{z-index:2;top:0;left:0;right:0;position:absolute!important;transform:translate3d(-9999px,-9999px,0)}.md-sticky-clone[sticky-state=active]{transform:translate3d(0,0,0)}.md-sticky-clone[sticky-state=active]:not(.md-sticky-no-effect) .md-subheader-inner{animation:subheaderStickyHoverIn .3s ease-out both}@keyframes subheaderStickyHoverIn{0%{box-shadow:0 0 0 0 transparent}100%{box-shadow:0 2px 4px 0 rgba(0,0,0,.16)}}@keyframes subheaderStickyHoverOut{0%{box-shadow:0 2px 4px 0 rgba(0,0,0,.16)}100%{box-shadow:0 0 0 0 transparent}}.md-subheader-wrapper:not(.md-sticky-no-effect){transition:.2s ease-out margin}.md-subheader-wrapper:not(.md-sticky-no-effect) .md-subheader{margin:0}.md-subheader-wrapper:not(.md-sticky-no-effect).md-sticky-clone{z-index:2}.md-subheader-wrapper:not(.md-sticky-no-effect)[sticky-state=active]{margin-top:-2px}.md-subheader-wrapper:not(.md-sticky-no-effect):not(.md-sticky-clone)[sticky-prev-state=active] .md-subheader-inner:after{animation:subheaderStickyHoverOut .3s ease-out both}.md-subheader{display:block;font-size:14px;font-weight:500;line-height:1em;margin:0;position:relative}.md-subheader .md-subheader-inner{display:block;padding:16px}.md-subheader .md-subheader-content{display:block;z-index:1;position:relative}.md-inline-form md-switch{margin-top:18px;margin-bottom:19px}md-switch{margin:16px 0;white-space:nowrap;cursor:pointer;outline:0;user-select:none;height:30px;line-height:28px;align-items:center;display:flex;margin-left:inherit;margin-right:16px}[dir=rtl] md-switch{margin-left:16px}[dir=rtl] md-switch{margin-right:inherit}md-switch:last-of-type{margin-left:inherit;margin-right:0}[dir=rtl] md-switch:last-of-type{margin-left:0}[dir=rtl] md-switch:last-of-type{margin-right:inherit}md-switch[disabled]{cursor:default}md-switch[disabled] .md-container{cursor:default}md-switch .md-container{cursor:grab;width:36px;height:24px;position:relative;user-select:none;margin-right:8px;float:left}[dir=rtl] md-switch .md-container{margin-right:auto;margin-left:8px}md-switch:not([disabled]) .md-dragging,md-switch:not([disabled]).md-dragging .md-container{cursor:grabbing}md-switch.md-focused:not([disabled]) .md-thumb:before{left:-8px;top:-8px;right:-8px;bottom:-8px}md-switch.md-focused:not([disabled]):not(.md-checked) .md-thumb:before{background-color:rgba(0,0,0,.12)}md-switch .md-label{border-color:transparent;border-width:0;float:left}md-switch .md-bar{left:1px;width:34px;top:5px;height:14px;border-radius:8px;position:absolute}md-switch .md-thumb-container{top:2px;left:0;width:16px;position:absolute;transform:translate3d(0,0,0);z-index:1}md-switch.md-checked .md-thumb-container{transform:translate3d(100%,0,0)}md-switch .md-thumb{position:absolute;margin:0;left:0;top:0;outline:0;height:20px;width:20px;border-radius:50%;box-shadow:0 1px 3px 0 rgba(0,0,0,.2),0 1px 1px 0 rgba(0,0,0,.14),0 2px 1px -1px rgba(0,0,0,.12)}md-switch .md-thumb:before{background-color:transparent;border-radius:50%;content:'';position:absolute;display:block;height:auto;left:0;top:0;right:0;bottom:0;transition:all .5s;width:auto}md-switch .md-thumb .md-ripple-container{position:absolute;display:block;width:auto;height:auto;left:-20px;top:-20px;right:-20px;bottom:-20px}md-switch:not(.md-dragging) .md-bar,md-switch:not(.md-dragging) .md-thumb,md-switch:not(.md-dragging) .md-thumb-container{transition:all 80ms linear;transition-property:transform,background-color}md-switch:not(.md-dragging) .md-bar,md-switch:not(.md-dragging) .md-thumb{transition-delay:50ms}@media screen and (-ms-high-contrast:active){md-switch.md-default-theme .md-bar{background-color:#666}md-switch.md-default-theme.md-checked .md-bar{background-color:#9e9e9e}md-switch.md-default-theme .md-thumb{background-color:#fff}}@keyframes md-tab-content-hide{0%{opacity:1}50%{opacity:1}100%{opacity:0}}md-tab-data{position:absolute;top:0;left:0;right:0;bottom:0;z-index:-1;opacity:0}md-tabs{display:block;margin:0;border-radius:2px;overflow:hidden;position:relative;flex-shrink:0}md-tabs:not(.md-no-tab-content):not(.md-dynamic-height){min-height:248px}md-tabs[md-align-tabs=bottom]{padding-bottom:48px}md-tabs[md-align-tabs=bottom] md-tabs-wrapper{position:absolute;bottom:0;left:0;right:0;height:48px;z-index:2}md-tabs[md-align-tabs=bottom] md-tabs-content-wrapper{top:0;bottom:48px}md-tabs.md-dynamic-height md-tabs-content-wrapper{min-height:0;position:relative;top:auto;left:auto;right:auto;bottom:auto;overflow:visible}md-tabs.md-dynamic-height md-tab-content.md-active{position:relative}md-tabs[md-border-bottom] md-tabs-wrapper{border-width:0 0 1px;border-style:solid}md-tabs[md-border-bottom]:not(.md-dynamic-height) md-tabs-content-wrapper{top:49px}md-tabs-wrapper{display:block;position:relative;transform:translate3d(0,0,0)}md-tabs-wrapper md-next-button,md-tabs-wrapper md-prev-button{height:100%;width:32px;position:absolute;top:50%;transform:translateY(-50%);line-height:1em;z-index:2;cursor:pointer;font-size:16px;background:transparent no-repeat center center;transition:all .5s cubic-bezier(.35,0,.25,1)}md-tabs-wrapper md-next-button:focus,md-tabs-wrapper md-prev-button:focus{outline:0}md-tabs-wrapper md-next-button.md-disabled,md-tabs-wrapper md-prev-button.md-disabled{opacity:.25;cursor:default}md-tabs-wrapper md-next-button.ng-leave,md-tabs-wrapper md-prev-button.ng-leave{transition:none}md-tabs-wrapper md-next-button md-icon,md-tabs-wrapper md-prev-button md-icon{position:absolute;top:50%;left:50%;transform:translate3d(-50%,-50%,0)}md-tabs-wrapper md-prev-button{left:0;background-image:url(data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4gPCEtLSBHZW5lcmF0b3I6IEFkb2JlIElsbHVzdHJhdG9yIDE3LjEuMCwgU1ZHIEV4cG9ydCBQbHVnLUluIC4gU1ZHIFZlcnNpb246IDYuMDAgQnVpbGQgMCkgIC0tPiA8IURPQ1RZUEUgc3ZnIFBVQkxJQyAiLS8vVzNDLy9EVEQgU1ZHIDEuMS8vRU4iICJodHRwOi8vd3d3LnczLm9yZy9HcmFwaGljcy9TVkcvMS4xL0RURC9zdmcxMS5kdGQiPiA8c3ZnIHZlcnNpb249IjEuMSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayIgeD0iMHB4IiB5PSIwcHgiIHdpZHRoPSIyNHB4IiBoZWlnaHQ9IjI0cHgiIHZpZXdCb3g9IjAgMCAyNCAyNCIgZW5hYmxlLWJhY2tncm91bmQ9Im5ldyAwIDAgMjQgMjQiIHhtbDpzcGFjZT0icHJlc2VydmUiPiA8ZyBpZD0iSGVhZGVyIj4gPGc+IDxyZWN0IHg9Ii02MTgiIHk9Ii0xMjA4IiBmaWxsPSJub25lIiB3aWR0aD0iMTQwMCIgaGVpZ2h0PSIzNjAwIi8+IDwvZz4gPC9nPiA8ZyBpZD0iTGFiZWwiPiA8L2c+IDxnIGlkPSJJY29uIj4gPGc+IDxwb2x5Z29uIHBvaW50cz0iMTUuNCw3LjQgMTQsNiA4LDEyIDE0LDE4IDE1LjQsMTYuNiAxMC44LDEyIAkJIiBzdHlsZT0iZmlsbDp3aGl0ZTsiLz4gPHJlY3QgZmlsbD0ibm9uZSIgd2lkdGg9IjI0IiBoZWlnaHQ9IjI0Ii8+IDwvZz4gPC9nPiA8ZyBpZD0iR3JpZCIgZGlzcGxheT0ibm9uZSI+IDxnIGRpc3BsYXk9ImlubGluZSI+IDwvZz4gPC9nPiA8L3N2Zz4NCg==)}[dir=rtl] md-tabs-wrapper md-prev-button{left:auto;right:0}md-tabs-wrapper md-next-button{right:0;background-image:url(data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4gPCEtLSBHZW5lcmF0b3I6IEFkb2JlIElsbHVzdHJhdG9yIDE3LjEuMCwgU1ZHIEV4cG9ydCBQbHVnLUluIC4gU1ZHIFZlcnNpb246IDYuMDAgQnVpbGQgMCkgIC0tPiA8IURPQ1RZUEUgc3ZnIFBVQkxJQyAiLS8vVzNDLy9EVEQgU1ZHIDEuMS8vRU4iICJodHRwOi8vd3d3LnczLm9yZy9HcmFwaGljcy9TVkcvMS4xL0RURC9zdmcxMS5kdGQiPiA8c3ZnIHZlcnNpb249IjEuMSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayIgeD0iMHB4IiB5PSIwcHgiIHdpZHRoPSIyNHB4IiBoZWlnaHQ9IjI0cHgiIHZpZXdCb3g9IjAgMCAyNCAyNCIgZW5hYmxlLWJhY2tncm91bmQ9Im5ldyAwIDAgMjQgMjQiIHhtbDpzcGFjZT0icHJlc2VydmUiPiA8ZyBpZD0iSGVhZGVyIj4gPGc+IDxyZWN0IHg9Ii02MTgiIHk9Ii0xMzM2IiBmaWxsPSJub25lIiB3aWR0aD0iMTQwMCIgaGVpZ2h0PSIzNjAwIi8+IDwvZz4gPC9nPiA8ZyBpZD0iTGFiZWwiPiA8L2c+IDxnIGlkPSJJY29uIj4gPGc+IDxwb2x5Z29uIHBvaW50cz0iMTAsNiA4LjYsNy40IDEzLjIsMTIgOC42LDE2LjYgMTAsMTggMTYsMTIgCQkiIHN0eWxlPSJmaWxsOndoaXRlOyIvPiA8cmVjdCBmaWxsPSJub25lIiB3aWR0aD0iMjQiIGhlaWdodD0iMjQiLz4gPC9nPiA8L2c+IDxnIGlkPSJHcmlkIiBkaXNwbGF5PSJub25lIj4gPGcgZGlzcGxheT0iaW5saW5lIj4gPC9nPiA8L2c+IDwvc3ZnPg0K)}[dir=rtl] md-tabs-wrapper md-next-button{right:auto;left:0}md-tabs-wrapper md-next-button md-icon{transform:translate3d(-50%,-50%,0) rotate(180deg)}md-tabs-wrapper.md-stretch-tabs md-pagination-wrapper{width:100%;display:flex;flex-direction:row}md-tabs-wrapper.md-stretch-tabs md-pagination-wrapper md-tab-item{flex-grow:1}md-tabs-canvas{position:relative;overflow:hidden;display:block;height:48px}md-tabs-canvas:after{content:'';display:table;clear:both}md-tabs-canvas .md-dummy-wrapper{position:absolute;top:0;left:0}[dir=rtl] md-tabs-canvas .md-dummy-wrapper{left:auto;right:0}md-tabs-canvas.md-paginated{margin:0 32px}md-tabs-canvas.md-center-tabs{display:flex;flex-direction:column;text-align:center}md-tabs-canvas.md-center-tabs .md-tab{float:none;display:inline-block}md-pagination-wrapper{height:48px;display:block;transition:transform .5s cubic-bezier(.35,0,.25,1);position:absolute;width:999999px;left:0;transform:translate3d(0,0,0)}md-pagination-wrapper:after{content:'';display:table;clear:both}[dir=rtl] md-pagination-wrapper{left:auto;right:0}md-pagination-wrapper.md-center-tabs{position:relative;width:auto;margin:0 auto}md-tabs-content-wrapper{display:block;position:absolute;top:48px;left:0;right:0;bottom:0;overflow:hidden}md-tab-content{display:block;position:absolute;top:0;left:0;right:0;bottom:0;transition:transform .5s cubic-bezier(.35,0,.25,1);overflow:auto;transform:translate3d(0,0,0)}md-tab-content.md-no-scroll{bottom:auto;overflow:hidden}md-tab-content.md-no-transition,md-tab-content.ng-leave{transition:none}md-tab-content.md-left:not(.md-active){transform:translateX(-100%);animation:1s md-tab-content-hide;opacity:0}[dir=rtl] md-tab-content.md-left:not(.md-active){transform:translateX(100%)}md-tab-content.md-left:not(.md-active) *{transition:visibility 0s linear;transition-delay:.5s;visibility:hidden}md-tab-content.md-right:not(.md-active){transform:translateX(100%);animation:1s md-tab-content-hide;opacity:0}[dir=rtl] md-tab-content.md-right:not(.md-active){transform:translateX(-100%)}md-tab-content.md-right:not(.md-active) *{transition:visibility 0s linear;transition-delay:.5s;visibility:hidden}md-tab-content>div.ng-leave{animation:1s md-tab-content-hide}md-ink-bar{position:absolute;left:auto;right:auto;bottom:0;height:2px}md-ink-bar.md-left{transition:left 125ms cubic-bezier(.35,0,.25,1),right .25s cubic-bezier(.35,0,.25,1)}md-ink-bar.md-right{transition:left .25s cubic-bezier(.35,0,.25,1),right 125ms cubic-bezier(.35,0,.25,1)}md-tab{position:absolute;z-index:-1;left:-9999px}.md-tab{font-size:14px;text-align:center;line-height:24px;padding:12px 24px;transition:background-color .35s cubic-bezier(.35,0,.25,1);cursor:pointer;white-space:nowrap;position:relative;text-transform:uppercase;float:left;font-weight:500;box-sizing:border-box;overflow:hidden;text-overflow:ellipsis}[dir=rtl] .md-tab{float:right}.md-tab.md-focused{box-shadow:none;outline:0}.md-tab.md-active{cursor:default}.md-tab.md-disabled{pointer-events:none;touch-action:pan-y;user-select:none;-webkit-user-drag:none;opacity:.5;cursor:default}.md-tab.ng-leave{transition:none}md-toolbar+md-tabs{border-top-left-radius:0;border-top-right-radius:0}.md-toast-text{padding:0 6px}md-toast{position:absolute;z-index:105;box-sizing:border-box;cursor:default;overflow:hidden;padding:8px;opacity:1;transition:all .4s cubic-bezier(.25,.8,.25,1)}md-toast .md-toast-content{display:flex;direction:row;align-items:center;max-height:168px;max-width:100%;min-height:48px;padding:0 18px;box-shadow:0 2px 5px 0 rgba(0,0,0,.26);border-radius:2px;font-size:14px;overflow:hidden;transform:translate3d(0,0,0) rotateZ(0);transition:all .4s cubic-bezier(.25,.8,.25,1);justify-content:flex-start}md-toast .md-toast-content::before{content:'';min-height:48px;visibility:hidden;display:inline-block}[dir=rtl] md-toast .md-toast-content{justify-content:flex-end}md-toast .md-toast-content span{flex:1 1 0%;box-sizing:border-box;min-width:0}md-toast.md-capsule{border-radius:24px}md-toast.md-capsule .md-toast-content{border-radius:24px}md-toast.ng-leave-active .md-toast-content{transition:all .3s cubic-bezier(.55,0,.55,.2)}md-toast.md-swipedown .md-toast-content,md-toast.md-swipeleft .md-toast-content,md-toast.md-swiperight .md-toast-content,md-toast.md-swipeup .md-toast-content{transition:all .4s cubic-bezier(.25,.8,.25,1)}md-toast.ng-enter{opacity:0}md-toast.ng-enter .md-toast-content{transform:translate3d(0,100%,0)}md-toast.ng-enter.md-top .md-toast-content{transform:translate3d(0,-100%,0)}md-toast.ng-enter.ng-enter-active{opacity:1}md-toast.ng-enter.ng-enter-active .md-toast-content{transform:translate3d(0,0,0)}md-toast.ng-leave.ng-leave-active .md-toast-content{opacity:0;transform:translate3d(0,100%,0)}md-toast.ng-leave.ng-leave-active.md-swipeup .md-toast-content{transform:translate3d(0,-50%,0)}md-toast.ng-leave.ng-leave-active.md-swipedown .md-toast-content{transform:translate3d(0,50%,0)}md-toast.ng-leave.ng-leave-active.md-top .md-toast-content{transform:translate3d(0,-100%,0)}md-toast .md-action{line-height:19px;margin-left:24px;margin-right:0;cursor:pointer;text-transform:uppercase;float:right}md-toast .md-button{min-width:0;margin-right:0;margin-left:12px}[dir=rtl] md-toast .md-button{margin-right:12px}[dir=rtl] md-toast .md-button{margin-left:0}@media (max-width:959px){md-toast{left:0;right:0;width:100%;max-width:100%;min-width:0;border-radius:0;bottom:0;padding:0}md-toast.ng-leave.ng-leave-active.md-swipeup .md-toast-content{transform:translate3d(0,-50%,0)}md-toast.ng-leave.ng-leave-active.md-swipedown .md-toast-content{transform:translate3d(0,50%,0)}}@media (min-width:960px){md-toast{min-width:304px}md-toast.md-bottom{bottom:0}md-toast.md-left{left:0}md-toast.md-right{right:0}md-toast.md-top{top:0}md-toast._md-start{left:0}[dir=rtl] md-toast._md-start{left:auto;right:0}md-toast._md-end{right:0}[dir=rtl] md-toast._md-end{right:auto;left:0}md-toast.ng-leave.ng-leave-active.md-swipeleft .md-toast-content{transform:translate3d(-50%,0,0)}md-toast.ng-leave.ng-leave-active.md-swiperight .md-toast-content{transform:translate3d(50%,0,0)}}@media (min-width:1920px){md-toast .md-toast-content{max-width:568px}}@media screen and (-ms-high-contrast:active){md-toast{border:1px solid #fff}}.md-toast-animating{overflow:hidden!important}md-toolbar{box-sizing:border-box;display:flex;flex-direction:column;position:relative;z-index:2;font-size:20px;min-height:64px;width:100%}md-toolbar._md-toolbar-transitions{transition-duration:.5s;transition-timing-function:cubic-bezier(.35,0,.25,1);transition-property:background-color,fill,color}md-toolbar.md-whiteframe-z1-add,md-toolbar.md-whiteframe-z1-remove{transition:box-shadow .5s linear}md-toolbar md-toolbar-filler{width:72px}md-toolbar *,md-toolbar :after,md-toolbar :before{box-sizing:border-box}md-toolbar.ng-animate{transition:none}md-toolbar.md-tall{height:128px;min-height:128px;max-height:128px}md-toolbar.md-medium-tall{height:88px;min-height:88px;max-height:88px}md-toolbar.md-medium-tall .md-toolbar-tools{height:48px;min-height:48px;max-height:48px}md-toolbar>.md-indent{margin-left:64px}[dir=rtl] md-toolbar>.md-indent{margin-left:auto;margin-right:64px}md-toolbar~md-content>md-list{padding:0}md-toolbar~md-content>md-list md-list-item:last-child md-divider{display:none}.md-toolbar-tools{font-size:20px;letter-spacing:.005em;box-sizing:border-box;font-weight:400;display:flex;align-items:center;flex-direction:row;width:100%;height:64px;max-height:64px;padding:0 16px;margin:0}.md-toolbar-tools h1,.md-toolbar-tools h2,.md-toolbar-tools h3{font-size:inherit;font-weight:inherit;margin:inherit}.md-toolbar-tools a{color:inherit;text-decoration:none}.md-toolbar-tools .fill-height{display:flex;align-items:center}.md-toolbar-tools .md-button{margin-top:0;margin-bottom:0}.md-toolbar-tools .md-button,.md-toolbar-tools .md-button.md-icon-button md-icon{transition-duration:.5s;transition-timing-function:cubic-bezier(.35,0,.25,1);transition-property:background-color,fill,color}.md-toolbar-tools .md-button.md-icon-button md-icon.ng-animate,.md-toolbar-tools .md-button.ng-animate{transition:none}.md-toolbar-tools>.md-button:first-child{margin-left:-8px}[dir=rtl] .md-toolbar-tools>.md-button:first-child{margin-left:auto;margin-right:-8px}.md-toolbar-tools>.md-button:last-child{margin-right:-8px}[dir=rtl] .md-toolbar-tools>.md-button:last-child{margin-right:auto;margin-left:-8px}.md-toolbar-tools>md-menu:last-child{margin-right:-8px}[dir=rtl] .md-toolbar-tools>md-menu:last-child{margin-right:auto;margin-left:-8px}.md-toolbar-tools>md-menu:last-child>.md-button{margin-right:0}[dir=rtl] .md-toolbar-tools>md-menu:last-child>.md-button{margin-right:auto;margin-left:0}@media screen and (-ms-high-contrast:active){.md-toolbar-tools{border-bottom:1px solid #fff}}@media (min-width:0) and (max-width:959px) and (orientation:portrait){md-toolbar{min-height:56px}.md-toolbar-tools{height:56px;max-height:56px}}@media (min-width:0) and (max-width:959px) and (orientation:landscape){md-toolbar{min-height:48px}.md-toolbar-tools{height:48px;max-height:48px}}md-tooltip{position:absolute;z-index:100;overflow:hidden;pointer-events:none;border-radius:4px;font-weight:500;font-size:14px}@media (min-width:960px){md-tooltip{font-size:10px}}md-tooltip .md-content{position:relative;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;transform-origin:center top;transform:scale(0);opacity:0;height:32px;line-height:32px;padding-left:16px;padding-right:16px}@media (min-width:960px){md-tooltip .md-content{height:22px;line-height:22px;padding-left:8px;padding-right:8px}}md-tooltip .md-content.md-show-add{transition:all .4s cubic-bezier(.25,.8,.25,1);transition-duration:.2s;transform:scale(0);opacity:0}md-tooltip .md-content.md-show,md-tooltip .md-content.md-show-add-active{transform:scale(1);opacity:.9;transform-origin:center top}md-tooltip .md-content.md-show-remove{transition:all .4s cubic-bezier(.25,.8,.25,1);transition-duration:.2s}md-tooltip .md-content.md-show-remove.md-show-remove-active{transform:scale(0);opacity:0}md-tooltip.md-hide{transition:all .3s cubic-bezier(.55,0,.55,.2)}md-tooltip.md-show{transition:all .4s cubic-bezier(.25,.8,.25,1);pointer-events:auto}.md-virtual-repeat-container{box-sizing:border-box;display:block;margin:0;overflow:hidden;padding:0;position:relative}.md-virtual-repeat-container .md-virtual-repeat-scroller{bottom:0;box-sizing:border-box;left:0;margin:0;overflow-x:hidden;padding:0;position:absolute;right:0;top:0;-webkit-overflow-scrolling:touch}.md-virtual-repeat-container .md-virtual-repeat-sizer{box-sizing:border-box;height:1px;display:block;margin:0;padding:0;width:1px}.md-virtual-repeat-container .md-virtual-repeat-offsetter{box-sizing:border-box;left:0;margin:0;padding:0;position:absolute;right:0;top:0}.md-virtual-repeat-container.md-orient-horizontal .md-virtual-repeat-scroller{overflow-x:auto;overflow-y:hidden}.md-virtual-repeat-container.md-orient-horizontal .md-virtual-repeat-offsetter{bottom:16px;right:auto;white-space:nowrap}[dir=rtl] .md-virtual-repeat-container.md-orient-horizontal .md-virtual-repeat-offsetter{right:auto;left:auto}.md-whiteframe-1dp,.md-whiteframe-z1{box-shadow:0 1px 3px 0 rgba(0,0,0,.2),0 1px 1px 0 rgba(0,0,0,.14),0 2px 1px -1px rgba(0,0,0,.12)}.md-whiteframe-2dp{box-shadow:0 1px 5px 0 rgba(0,0,0,.2),0 2px 2px 0 rgba(0,0,0,.14),0 3px 1px -2px rgba(0,0,0,.12)}.md-whiteframe-3dp{box-shadow:0 1px 8px 0 rgba(0,0,0,.2),0 3px 4px 0 rgba(0,0,0,.14),0 3px 3px -2px rgba(0,0,0,.12)}.md-whiteframe-4dp,.md-whiteframe-z2{box-shadow:0 2px 4px -1px rgba(0,0,0,.2),0 4px 5px 0 rgba(0,0,0,.14),0 1px 10px 0 rgba(0,0,0,.12)}.md-whiteframe-5dp{box-shadow:0 3px 5px -1px rgba(0,0,0,.2),0 5px 8px 0 rgba(0,0,0,.14),0 1px 14px 0 rgba(0,0,0,.12)}.md-whiteframe-6dp{box-shadow:0 3px 5px -1px rgba(0,0,0,.2),0 6px 10px 0 rgba(0,0,0,.14),0 1px 18px 0 rgba(0,0,0,.12)}.md-whiteframe-7dp,.md-whiteframe-z3{box-shadow:0 4px 5px -2px rgba(0,0,0,.2),0 7px 10px 1px rgba(0,0,0,.14),0 2px 16px 1px rgba(0,0,0,.12)}.md-whiteframe-8dp{box-shadow:0 5px 5px -3px rgba(0,0,0,.2),0 8px 10px 1px rgba(0,0,0,.14),0 3px 14px 2px rgba(0,0,0,.12)}.md-whiteframe-9dp{box-shadow:0 5px 6px -3px rgba(0,0,0,.2),0 9px 12px 1px rgba(0,0,0,.14),0 3px 16px 2px rgba(0,0,0,.12)}.md-whiteframe-10dp,.md-whiteframe-z4{box-shadow:0 6px 6px -3px rgba(0,0,0,.2),0 10px 14px 1px rgba(0,0,0,.14),0 4px 18px 3px rgba(0,0,0,.12)}.md-whiteframe-11dp{box-shadow:0 6px 7px -4px rgba(0,0,0,.2),0 11px 15px 1px rgba(0,0,0,.14),0 4px 20px 3px rgba(0,0,0,.12)}.md-whiteframe-12dp{box-shadow:0 7px 8px -4px rgba(0,0,0,.2),0 12px 17px 2px rgba(0,0,0,.14),0 5px 22px 4px rgba(0,0,0,.12)}.md-whiteframe-13dp,.md-whiteframe-z5{box-shadow:0 7px 8px -4px rgba(0,0,0,.2),0 13px 19px 2px rgba(0,0,0,.14),0 5px 24px 4px rgba(0,0,0,.12)}.md-whiteframe-14dp{box-shadow:0 7px 9px -4px rgba(0,0,0,.2),0 14px 21px 2px rgba(0,0,0,.14),0 5px 26px 4px rgba(0,0,0,.12)}.md-whiteframe-15dp{box-shadow:0 8px 9px -5px rgba(0,0,0,.2),0 15px 22px 2px rgba(0,0,0,.14),0 6px 28px 5px rgba(0,0,0,.12)}.md-whiteframe-16dp{box-shadow:0 8px 10px -5px rgba(0,0,0,.2),0 16px 24px 2px rgba(0,0,0,.14),0 6px 30px 5px rgba(0,0,0,.12)}.md-whiteframe-17dp{box-shadow:0 8px 11px -5px rgba(0,0,0,.2),0 17px 26px 2px rgba(0,0,0,.14),0 6px 32px 5px rgba(0,0,0,.12)}.md-whiteframe-18dp{box-shadow:0 9px 11px -5px rgba(0,0,0,.2),0 18px 28px 2px rgba(0,0,0,.14),0 7px 34px 6px rgba(0,0,0,.12)}.md-whiteframe-19dp{box-shadow:0 9px 12px -6px rgba(0,0,0,.2),0 19px 29px 2px rgba(0,0,0,.14),0 7px 36px 6px rgba(0,0,0,.12)}.md-whiteframe-20dp{box-shadow:0 10px 13px -6px rgba(0,0,0,.2),0 20px 31px 3px rgba(0,0,0,.14),0 8px 38px 7px rgba(0,0,0,.12)}.md-whiteframe-21dp{box-shadow:0 10px 13px -6px rgba(0,0,0,.2),0 21px 33px 3px rgba(0,0,0,.14),0 8px 40px 7px rgba(0,0,0,.12)}.md-whiteframe-22dp{box-shadow:0 10px 14px -6px rgba(0,0,0,.2),0 22px 35px 3px rgba(0,0,0,.14),0 8px 42px 7px rgba(0,0,0,.12)}.md-whiteframe-23dp{box-shadow:0 11px 14px -7px rgba(0,0,0,.2),0 23px 36px 3px rgba(0,0,0,.14),0 9px 44px 8px rgba(0,0,0,.12)}.md-whiteframe-24dp{box-shadow:0 11px 15px -7px rgba(0,0,0,.2),0 24px 38px 3px rgba(0,0,0,.14),0 9px 46px 8px rgba(0,0,0,.12)}@media screen and (-ms-high-contrast:active){md-whiteframe{border:1px solid #fff}}@media print{[md-whiteframe],md-whiteframe{background-color:#fff}}.ng-cloak,.x-ng-cloak,[data-ng-cloak],[ng-cloak],[ng\:cloak],[x-ng-cloak]{display:none!important}@-moz-document url-prefix(){.layout-fill{margin:0;width:100%;min-height:100%;height:100%}}.flex-order{order:0}.flex-order--20{order:-20}.flex-order--19{order:-19}.flex-order--18{order:-18}.flex-order--17{order:-17}.flex-order--16{order:-16}.flex-order--15{order:-15}.flex-order--14{order:-14}.flex-order--13{order:-13}.flex-order--12{order:-12}.flex-order--11{order:-11}.flex-order--10{order:-10}.flex-order--9{order:-9}.flex-order--8{order:-8}.flex-order--7{order:-7}.flex-order--6{order:-6}.flex-order--5{order:-5}.flex-order--4{order:-4}.flex-order--3{order:-3}.flex-order--2{order:-2}.flex-order--1{order:-1}.flex-order-0{order:0}.flex-order-1{order:1}.flex-order-2{order:2}.flex-order-3{order:3}.flex-order-4{order:4}.flex-order-5{order:5}.flex-order-6{order:6}.flex-order-7{order:7}.flex-order-8{order:8}.flex-order-9{order:9}.flex-order-10{order:10}.flex-order-11{order:11}.flex-order-12{order:12}.flex-order-13{order:13}.flex-order-14{order:14}.flex-order-15{order:15}.flex-order-16{order:16}.flex-order-17{order:17}.flex-order-18{order:18}.flex-order-19{order:19}.flex-order-20{order:20}.flex-offset-0,.offset-0{margin-left:0}[dir=rtl] .flex-offset-0,[dir=rtl] .offset-0{margin-left:auto;margin-right:0}.flex-offset-5,.offset-5{margin-left:5%}[dir=rtl] .flex-offset-5,[dir=rtl] .offset-5{margin-left:auto;margin-right:5%}.flex-offset-10,.offset-10{margin-left:10%}[dir=rtl] .flex-offset-10,[dir=rtl] .offset-10{margin-left:auto;margin-right:10%}.flex-offset-15,.offset-15{margin-left:15%}[dir=rtl] .flex-offset-15,[dir=rtl] .offset-15{margin-left:auto;margin-right:15%}.flex-offset-20,.offset-20{margin-left:20%}[dir=rtl] .flex-offset-20,[dir=rtl] .offset-20{margin-left:auto;margin-right:20%}.flex-offset-25,.offset-25{margin-left:25%}[dir=rtl] .flex-offset-25,[dir=rtl] .offset-25{margin-left:auto;margin-right:25%}.flex-offset-30,.offset-30{margin-left:30%}[dir=rtl] .flex-offset-30,[dir=rtl] .offset-30{margin-left:auto;margin-right:30%}.flex-offset-35,.offset-35{margin-left:35%}[dir=rtl] .flex-offset-35,[dir=rtl] .offset-35{margin-left:auto;margin-right:35%}.flex-offset-40,.offset-40{margin-left:40%}[dir=rtl] .flex-offset-40,[dir=rtl] .offset-40{margin-left:auto;margin-right:40%}.flex-offset-45,.offset-45{margin-left:45%}[dir=rtl] .flex-offset-45,[dir=rtl] .offset-45{margin-left:auto;margin-right:45%}.flex-offset-50,.offset-50{margin-left:50%}[dir=rtl] .flex-offset-50,[dir=rtl] .offset-50{margin-left:auto;margin-right:50%}.flex-offset-55,.offset-55{margin-left:55%}[dir=rtl] .flex-offset-55,[dir=rtl] .offset-55{margin-left:auto;margin-right:55%}.flex-offset-60,.offset-60{margin-left:60%}[dir=rtl] .flex-offset-60,[dir=rtl] .offset-60{margin-left:auto;margin-right:60%}.flex-offset-65,.offset-65{margin-left:65%}[dir=rtl] .flex-offset-65,[dir=rtl] .offset-65{margin-left:auto;margin-right:65%}.flex-offset-70,.offset-70{margin-left:70%}[dir=rtl] .flex-offset-70,[dir=rtl] .offset-70{margin-left:auto;margin-right:70%}.flex-offset-75,.offset-75{margin-left:75%}[dir=rtl] .flex-offset-75,[dir=rtl] .offset-75{margin-left:auto;margin-right:75%}.flex-offset-80,.offset-80{margin-left:80%}[dir=rtl] .flex-offset-80,[dir=rtl] .offset-80{margin-left:auto;margin-right:80%}.flex-offset-85,.offset-85{margin-left:85%}[dir=rtl] .flex-offset-85,[dir=rtl] .offset-85{margin-left:auto;margin-right:85%}.flex-offset-90,.offset-90{margin-left:90%}[dir=rtl] .flex-offset-90,[dir=rtl] .offset-90{margin-left:auto;margin-right:90%}.flex-offset-95,.offset-95{margin-left:95%}[dir=rtl] .flex-offset-95,[dir=rtl] .offset-95{margin-left:auto;margin-right:95%}.flex-offset-33,.offset-33{margin-left:calc(100% / 3)}.flex-offset-66,.offset-66{margin-left:calc(200% / 3)}[dir=rtl] .flex-offset-66,[dir=rtl] .offset-66{margin-left:auto;margin-right:calc(200% / 3)}.layout-align,.layout-align-start-stretch{justify-content:flex-start;align-content:stretch;align-items:stretch}.layout-align-start,.layout-align-start-center,.layout-align-start-end,.layout-align-start-start,.layout-align-start-stretch{justify-content:flex-start}.layout-align-center,.layout-align-center-center,.layout-align-center-end,.layout-align-center-start,.layout-align-center-stretch{justify-content:center}.layout-align-end,.layout-align-end-center,.layout-align-end-end,.layout-align-end-start,.layout-align-end-stretch{justify-content:flex-end}.layout-align-space-around,.layout-align-space-around-center,.layout-align-space-around-end,.layout-align-space-around-start,.layout-align-space-around-stretch{justify-content:space-around}.layout-align-space-between,.layout-align-space-between-center,.layout-align-space-between-end,.layout-align-space-between-start,.layout-align-space-between-stretch{justify-content:space-between}.layout-align-center-start,.layout-align-end-start,.layout-align-space-around-start,.layout-align-space-between-start,.layout-align-start-start{align-items:flex-start;align-content:flex-start}.layout-align-center-center,.layout-align-end-center,.layout-align-space-around-center,.layout-align-space-between-center,.layout-align-start-center{align-items:center;align-content:center;max-width:100%}.layout-align-center-center>*,.layout-align-end-center>*,.layout-align-space-around-center>*,.layout-align-space-between-center>*,.layout-align-start-center>*{max-width:100%;box-sizing:border-box}.layout-align-center-end,.layout-align-end-end,.layout-align-space-around-end,.layout-align-space-between-end,.layout-align-start-end{align-items:flex-end;align-content:flex-end}.layout-align-center-stretch,.layout-align-end-stretch,.layout-align-space-around-stretch,.layout-align-space-between-stretch,.layout-align-start-stretch{align-items:stretch;align-content:stretch}.flex{flex:1;box-sizing:border-box}.flex-grow{flex:1 1 100%;box-sizing:border-box}.flex-initial{flex:0 1 auto;box-sizing:border-box}.flex-auto{flex:1 1 auto;box-sizing:border-box}.flex-none{flex:0 0 auto;box-sizing:border-box}.flex-noshrink{flex:1 0 auto;box-sizing:border-box}.flex-nogrow{flex:0 1 auto;box-sizing:border-box}.flex-0{flex:1 1 0%;max-width:0%;max-height:100%;box-sizing:border-box}.layout-row>.flex-0{flex:1 1 0%;max-width:0%;max-height:100%;box-sizing:border-box;min-width:0}.layout-column>.flex-0{flex:1 1 0%;max-width:100%;max-height:0%;box-sizing:border-box}.layout-row>.flex-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-row>.flex-0{flex:1 1 0%;max-width:0%;max-height:100%;box-sizing:border-box;min-width:0}.layout-column>.flex-0{flex:1 1 0%;max-width:100%;max-height:0%;box-sizing:border-box;min-height:0}.flex-5{flex:1 1 5%;max-width:5%;max-height:100%;box-sizing:border-box}.layout-row>.flex-5{flex:1 1 5%;max-width:5%;max-height:100%;box-sizing:border-box}.layout-column>.flex-5{flex:1 1 5%;max-width:100%;max-height:5%;box-sizing:border-box}.layout-row>.flex-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-row>.flex-5{flex:1 1 5%;max-width:5%;max-height:100%;box-sizing:border-box}.layout-column>.flex-5{flex:1 1 5%;max-width:100%;max-height:5%;box-sizing:border-box}.flex-10{flex:1 1 10%;max-width:10%;max-height:100%;box-sizing:border-box}.layout-row>.flex-10{flex:1 1 10%;max-width:10%;max-height:100%;box-sizing:border-box}.layout-column>.flex-10{flex:1 1 10%;max-width:100%;max-height:10%;box-sizing:border-box}.layout-row>.flex-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-row>.flex-10{flex:1 1 10%;max-width:10%;max-height:100%;box-sizing:border-box}.layout-column>.flex-10{flex:1 1 10%;max-width:100%;max-height:10%;box-sizing:border-box}.flex-15{flex:1 1 15%;max-width:15%;max-height:100%;box-sizing:border-box}.layout-row>.flex-15{flex:1 1 15%;max-width:15%;max-height:100%;box-sizing:border-box}.layout-column>.flex-15{flex:1 1 15%;max-width:100%;max-height:15%;box-sizing:border-box}.layout-row>.flex-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-row>.flex-15{flex:1 1 15%;max-width:15%;max-height:100%;box-sizing:border-box}.layout-column>.flex-15{flex:1 1 15%;max-width:100%;max-height:15%;box-sizing:border-box}.flex-20{flex:1 1 20%;max-width:20%;max-height:100%;box-sizing:border-box}.layout-row>.flex-20{flex:1 1 20%;max-width:20%;max-height:100%;box-sizing:border-box}.layout-column>.flex-20{flex:1 1 20%;max-width:100%;max-height:20%;box-sizing:border-box}.layout-row>.flex-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-row>.flex-20{flex:1 1 20%;max-width:20%;max-height:100%;box-sizing:border-box}.layout-column>.flex-20{flex:1 1 20%;max-width:100%;max-height:20%;box-sizing:border-box}.flex-25{flex:1 1 25%;max-width:25%;max-height:100%;box-sizing:border-box}.layout-row>.flex-25{flex:1 1 25%;max-width:25%;max-height:100%;box-sizing:border-box}.layout-column>.flex-25{flex:1 1 25%;max-width:100%;max-height:25%;box-sizing:border-box}.layout-row>.flex-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-row>.flex-25{flex:1 1 25%;max-width:25%;max-height:100%;box-sizing:border-box}.layout-column>.flex-25{flex:1 1 25%;max-width:100%;max-height:25%;box-sizing:border-box}.flex-30{flex:1 1 30%;max-width:30%;max-height:100%;box-sizing:border-box}.layout-row>.flex-30{flex:1 1 30%;max-width:30%;max-height:100%;box-sizing:border-box}.layout-column>.flex-30{flex:1 1 30%;max-width:100%;max-height:30%;box-sizing:border-box}.layout-row>.flex-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-row>.flex-30{flex:1 1 30%;max-width:30%;max-height:100%;box-sizing:border-box}.layout-column>.flex-30{flex:1 1 30%;max-width:100%;max-height:30%;box-sizing:border-box}.flex-35{flex:1 1 35%;max-width:35%;max-height:100%;box-sizing:border-box}.layout-row>.flex-35{flex:1 1 35%;max-width:35%;max-height:100%;box-sizing:border-box}.layout-column>.flex-35{flex:1 1 35%;max-width:100%;max-height:35%;box-sizing:border-box}.layout-row>.flex-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-row>.flex-35{flex:1 1 35%;max-width:35%;max-height:100%;box-sizing:border-box}.layout-column>.flex-35{flex:1 1 35%;max-width:100%;max-height:35%;box-sizing:border-box}.flex-40{flex:1 1 40%;max-width:40%;max-height:100%;box-sizing:border-box}.layout-row>.flex-40{flex:1 1 40%;max-width:40%;max-height:100%;box-sizing:border-box}.layout-column>.flex-40{flex:1 1 40%;max-width:100%;max-height:40%;box-sizing:border-box}.layout-row>.flex-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-row>.flex-40{flex:1 1 40%;max-width:40%;max-height:100%;box-sizing:border-box}.layout-column>.flex-40{flex:1 1 40%;max-width:100%;max-height:40%;box-sizing:border-box}.flex-45{flex:1 1 45%;max-width:45%;max-height:100%;box-sizing:border-box}.layout-row>.flex-45{flex:1 1 45%;max-width:45%;max-height:100%;box-sizing:border-box}.layout-column>.flex-45{flex:1 1 45%;max-width:100%;max-height:45%;box-sizing:border-box}.layout-row>.flex-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-row>.flex-45{flex:1 1 45%;max-width:45%;max-height:100%;box-sizing:border-box}.layout-column>.flex-45{flex:1 1 45%;max-width:100%;max-height:45%;box-sizing:border-box}.flex-50{flex:1 1 50%;max-width:50%;max-height:100%;box-sizing:border-box}.layout-row>.flex-50{flex:1 1 50%;max-width:50%;max-height:100%;box-sizing:border-box}.layout-column>.flex-50{flex:1 1 50%;max-width:100%;max-height:50%;box-sizing:border-box}.layout-row>.flex-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-row>.flex-50{flex:1 1 50%;max-width:50%;max-height:100%;box-sizing:border-box}.layout-column>.flex-50{flex:1 1 50%;max-width:100%;max-height:50%;box-sizing:border-box}.flex-55{flex:1 1 55%;max-width:55%;max-height:100%;box-sizing:border-box}.layout-row>.flex-55{flex:1 1 55%;max-width:55%;max-height:100%;box-sizing:border-box}.layout-column>.flex-55{flex:1 1 55%;max-width:100%;max-height:55%;box-sizing:border-box}.layout-row>.flex-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-row>.flex-55{flex:1 1 55%;max-width:55%;max-height:100%;box-sizing:border-box}.layout-column>.flex-55{flex:1 1 55%;max-width:100%;max-height:55%;box-sizing:border-box}.flex-60{flex:1 1 60%;max-width:60%;max-height:100%;box-sizing:border-box}.layout-row>.flex-60{flex:1 1 60%;max-width:60%;max-height:100%;box-sizing:border-box}.layout-column>.flex-60{flex:1 1 60%;max-width:100%;max-height:60%;box-sizing:border-box}.layout-row>.flex-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-row>.flex-60{flex:1 1 60%;max-width:60%;max-height:100%;box-sizing:border-box}.layout-column>.flex-60{flex:1 1 60%;max-width:100%;max-height:60%;box-sizing:border-box}.flex-65{flex:1 1 65%;max-width:65%;max-height:100%;box-sizing:border-box}.layout-row>.flex-65{flex:1 1 65%;max-width:65%;max-height:100%;box-sizing:border-box}.layout-column>.flex-65{flex:1 1 65%;max-width:100%;max-height:65%;box-sizing:border-box}.layout-row>.flex-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-row>.flex-65{flex:1 1 65%;max-width:65%;max-height:100%;box-sizing:border-box}.layout-column>.flex-65{flex:1 1 65%;max-width:100%;max-height:65%;box-sizing:border-box}.flex-70{flex:1 1 70%;max-width:70%;max-height:100%;box-sizing:border-box}.layout-row>.flex-70{flex:1 1 70%;max-width:70%;max-height:100%;box-sizing:border-box}.layout-column>.flex-70{flex:1 1 70%;max-width:100%;max-height:70%;box-sizing:border-box}.layout-row>.flex-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-row>.flex-70{flex:1 1 70%;max-width:70%;max-height:100%;box-sizing:border-box}.layout-column>.flex-70{flex:1 1 70%;max-width:100%;max-height:70%;box-sizing:border-box}.flex-75{flex:1 1 75%;max-width:75%;max-height:100%;box-sizing:border-box}.layout-row>.flex-75{flex:1 1 75%;max-width:75%;max-height:100%;box-sizing:border-box}.layout-column>.flex-75{flex:1 1 75%;max-width:100%;max-height:75%;box-sizing:border-box}.layout-row>.flex-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-row>.flex-75{flex:1 1 75%;max-width:75%;max-height:100%;box-sizing:border-box}.layout-column>.flex-75{flex:1 1 75%;max-width:100%;max-height:75%;box-sizing:border-box}.flex-80{flex:1 1 80%;max-width:80%;max-height:100%;box-sizing:border-box}.layout-row>.flex-80{flex:1 1 80%;max-width:80%;max-height:100%;box-sizing:border-box}.layout-column>.flex-80{flex:1 1 80%;max-width:100%;max-height:80%;box-sizing:border-box}.layout-row>.flex-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-row>.flex-80{flex:1 1 80%;max-width:80%;max-height:100%;box-sizing:border-box}.layout-column>.flex-80{flex:1 1 80%;max-width:100%;max-height:80%;box-sizing:border-box}.flex-85{flex:1 1 85%;max-width:85%;max-height:100%;box-sizing:border-box}.layout-row>.flex-85{flex:1 1 85%;max-width:85%;max-height:100%;box-sizing:border-box}.layout-column>.flex-85{flex:1 1 85%;max-width:100%;max-height:85%;box-sizing:border-box}.layout-row>.flex-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-row>.flex-85{flex:1 1 85%;max-width:85%;max-height:100%;box-sizing:border-box}.layout-column>.flex-85{flex:1 1 85%;max-width:100%;max-height:85%;box-sizing:border-box}.flex-90{flex:1 1 90%;max-width:90%;max-height:100%;box-sizing:border-box}.layout-row>.flex-90{flex:1 1 90%;max-width:90%;max-height:100%;box-sizing:border-box}.layout-column>.flex-90{flex:1 1 90%;max-width:100%;max-height:90%;box-sizing:border-box}.layout-row>.flex-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-row>.flex-90{flex:1 1 90%;max-width:90%;max-height:100%;box-sizing:border-box}.layout-column>.flex-90{flex:1 1 90%;max-width:100%;max-height:90%;box-sizing:border-box}.flex-95{flex:1 1 95%;max-width:95%;max-height:100%;box-sizing:border-box}.layout-row>.flex-95{flex:1 1 95%;max-width:95%;max-height:100%;box-sizing:border-box}.layout-column>.flex-95{flex:1 1 95%;max-width:100%;max-height:95%;box-sizing:border-box}.layout-row>.flex-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-row>.flex-95{flex:1 1 95%;max-width:95%;max-height:100%;box-sizing:border-box}.layout-column>.flex-95{flex:1 1 95%;max-width:100%;max-height:95%;box-sizing:border-box}.flex-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-row>.flex-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-column>.flex-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-row>.flex-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-row>.flex-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-column>.flex-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-row>.flex-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-row>.flex{min-width:0}.layout-column>.flex-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-column>.flex{min-height:0}.layout,.layout-column,.layout-row{box-sizing:border-box;display:-webkit-box;display:-webkit-flex;display:-moz-box;display:-ms-flexbox;display:flex}.layout-column{flex-direction:column}.layout-row{flex-direction:row}.layout-padding-sm>*,.layout-padding>.flex-sm{padding:4px}.layout-padding,.layout-padding-gt-sm,.layout-padding-gt-sm>*,.layout-padding-md,.layout-padding-md>*,.layout-padding>*,.layout-padding>.flex,.layout-padding>.flex-gt-sm,.layout-padding>.flex-md{padding:8px}.layout-padding-gt-lg>*,.layout-padding-gt-md>*,.layout-padding-lg>*,.layout-padding>.flex-gt-lg,.layout-padding>.flex-gt-md,.layout-padding>.flex-lg{padding:16px}.layout-margin-sm>*,.layout-margin>.flex-sm{margin:4px}.layout-margin,.layout-margin-gt-sm,.layout-margin-gt-sm>*,.layout-margin-md,.layout-margin-md>*,.layout-margin>*,.layout-margin>.flex,.layout-margin>.flex-gt-sm,.layout-margin>.flex-md{margin:8px}.layout-margin-gt-lg>*,.layout-margin-gt-md>*,.layout-margin-lg>*,.layout-margin>.flex-gt-lg,.layout-margin>.flex-gt-md,.layout-margin>.flex-lg{margin:16px}.layout-wrap{flex-wrap:wrap}.layout-nowrap{flex-wrap:nowrap}.layout-fill{margin:0;width:100%;min-height:100%;height:100%}@media (max-width:599px){.hide-xs:not(.show-xs):not(.show),.hide:not(.show-xs):not(.show){display:none}.flex-order-xs--20{order:-20}.flex-order-xs--19{order:-19}.flex-order-xs--18{order:-18}.flex-order-xs--17{order:-17}.flex-order-xs--16{order:-16}.flex-order-xs--15{order:-15}.flex-order-xs--14{order:-14}.flex-order-xs--13{order:-13}.flex-order-xs--12{order:-12}.flex-order-xs--11{order:-11}.flex-order-xs--10{order:-10}.flex-order-xs--9{order:-9}.flex-order-xs--8{order:-8}.flex-order-xs--7{order:-7}.flex-order-xs--6{order:-6}.flex-order-xs--5{order:-5}.flex-order-xs--4{order:-4}.flex-order-xs--3{order:-3}.flex-order-xs--2{order:-2}.flex-order-xs--1{order:-1}.flex-order-xs-0{order:0}.flex-order-xs-1{order:1}.flex-order-xs-2{order:2}.flex-order-xs-3{order:3}.flex-order-xs-4{order:4}.flex-order-xs-5{order:5}.flex-order-xs-6{order:6}.flex-order-xs-7{order:7}.flex-order-xs-8{order:8}.flex-order-xs-9{order:9}.flex-order-xs-10{order:10}.flex-order-xs-11{order:11}.flex-order-xs-12{order:12}.flex-order-xs-13{order:13}.flex-order-xs-14{order:14}.flex-order-xs-15{order:15}.flex-order-xs-16{order:16}.flex-order-xs-17{order:17}.flex-order-xs-18{order:18}.flex-order-xs-19{order:19}.flex-order-xs-20{order:20}.flex-offset-xs-0,.offset-xs-0{margin-left:0}[dir=rtl] .flex-offset-xs-0,[dir=rtl] .offset-xs-0{margin-left:auto;margin-right:0}.flex-offset-xs-5,.offset-xs-5{margin-left:5%}[dir=rtl] .flex-offset-xs-5,[dir=rtl] .offset-xs-5{margin-left:auto;margin-right:5%}.flex-offset-xs-10,.offset-xs-10{margin-left:10%}[dir=rtl] .flex-offset-xs-10,[dir=rtl] .offset-xs-10{margin-left:auto;margin-right:10%}.flex-offset-xs-15,.offset-xs-15{margin-left:15%}[dir=rtl] .flex-offset-xs-15,[dir=rtl] .offset-xs-15{margin-left:auto;margin-right:15%}.flex-offset-xs-20,.offset-xs-20{margin-left:20%}[dir=rtl] .flex-offset-xs-20,[dir=rtl] .offset-xs-20{margin-left:auto;margin-right:20%}.flex-offset-xs-25,.offset-xs-25{margin-left:25%}[dir=rtl] .flex-offset-xs-25,[dir=rtl] .offset-xs-25{margin-left:auto;margin-right:25%}.flex-offset-xs-30,.offset-xs-30{margin-left:30%}[dir=rtl] .flex-offset-xs-30,[dir=rtl] .offset-xs-30{margin-left:auto;margin-right:30%}.flex-offset-xs-35,.offset-xs-35{margin-left:35%}[dir=rtl] .flex-offset-xs-35,[dir=rtl] .offset-xs-35{margin-left:auto;margin-right:35%}.flex-offset-xs-40,.offset-xs-40{margin-left:40%}[dir=rtl] .flex-offset-xs-40,[dir=rtl] .offset-xs-40{margin-left:auto;margin-right:40%}.flex-offset-xs-45,.offset-xs-45{margin-left:45%}[dir=rtl] .flex-offset-xs-45,[dir=rtl] .offset-xs-45{margin-left:auto;margin-right:45%}.flex-offset-xs-50,.offset-xs-50{margin-left:50%}[dir=rtl] .flex-offset-xs-50,[dir=rtl] .offset-xs-50{margin-left:auto;margin-right:50%}.flex-offset-xs-55,.offset-xs-55{margin-left:55%}[dir=rtl] .flex-offset-xs-55,[dir=rtl] .offset-xs-55{margin-left:auto;margin-right:55%}.flex-offset-xs-60,.offset-xs-60{margin-left:60%}[dir=rtl] .flex-offset-xs-60,[dir=rtl] .offset-xs-60{margin-left:auto;margin-right:60%}.flex-offset-xs-65,.offset-xs-65{margin-left:65%}[dir=rtl] .flex-offset-xs-65,[dir=rtl] .offset-xs-65{margin-left:auto;margin-right:65%}.flex-offset-xs-70,.offset-xs-70{margin-left:70%}[dir=rtl] .flex-offset-xs-70,[dir=rtl] .offset-xs-70{margin-left:auto;margin-right:70%}.flex-offset-xs-75,.offset-xs-75{margin-left:75%}[dir=rtl] .flex-offset-xs-75,[dir=rtl] .offset-xs-75{margin-left:auto;margin-right:75%}.flex-offset-xs-80,.offset-xs-80{margin-left:80%}[dir=rtl] .flex-offset-xs-80,[dir=rtl] .offset-xs-80{margin-left:auto;margin-right:80%}.flex-offset-xs-85,.offset-xs-85{margin-left:85%}[dir=rtl] .flex-offset-xs-85,[dir=rtl] .offset-xs-85{margin-left:auto;margin-right:85%}.flex-offset-xs-90,.offset-xs-90{margin-left:90%}[dir=rtl] .flex-offset-xs-90,[dir=rtl] .offset-xs-90{margin-left:auto;margin-right:90%}.flex-offset-xs-95,.offset-xs-95{margin-left:95%}[dir=rtl] .flex-offset-xs-95,[dir=rtl] .offset-xs-95{margin-left:auto;margin-right:95%}.flex-offset-xs-33,.offset-xs-33{margin-left:calc(100% / 3)}.flex-offset-xs-66,.offset-xs-66{margin-left:calc(200% / 3)}[dir=rtl] .flex-offset-xs-66,[dir=rtl] .offset-xs-66{margin-left:auto;margin-right:calc(200% / 3)}.layout-align-xs,.layout-align-xs-start-stretch{justify-content:flex-start;align-content:stretch;align-items:stretch}.layout-align-xs-start,.layout-align-xs-start-center,.layout-align-xs-start-end,.layout-align-xs-start-start,.layout-align-xs-start-stretch{justify-content:flex-start}.layout-align-xs-center,.layout-align-xs-center-center,.layout-align-xs-center-end,.layout-align-xs-center-start,.layout-align-xs-center-stretch{justify-content:center}.layout-align-xs-end,.layout-align-xs-end-center,.layout-align-xs-end-end,.layout-align-xs-end-start,.layout-align-xs-end-stretch{justify-content:flex-end}.layout-align-xs-space-around,.layout-align-xs-space-around-center,.layout-align-xs-space-around-end,.layout-align-xs-space-around-start,.layout-align-xs-space-around-stretch{justify-content:space-around}.layout-align-xs-space-between,.layout-align-xs-space-between-center,.layout-align-xs-space-between-end,.layout-align-xs-space-between-start,.layout-align-xs-space-between-stretch{justify-content:space-between}.layout-align-xs-center-start,.layout-align-xs-end-start,.layout-align-xs-space-around-start,.layout-align-xs-space-between-start,.layout-align-xs-start-start{align-items:flex-start;align-content:flex-start}.layout-align-xs-center-center,.layout-align-xs-end-center,.layout-align-xs-space-around-center,.layout-align-xs-space-between-center,.layout-align-xs-start-center{align-items:center;align-content:center;max-width:100%}.layout-align-xs-center-center>*,.layout-align-xs-end-center>*,.layout-align-xs-space-around-center>*,.layout-align-xs-space-between-center>*,.layout-align-xs-start-center>*{max-width:100%;box-sizing:border-box}.layout-align-xs-center-end,.layout-align-xs-end-end,.layout-align-xs-space-around-end,.layout-align-xs-space-between-end,.layout-align-xs-start-end{align-items:flex-end;align-content:flex-end}.layout-align-xs-center-stretch,.layout-align-xs-end-stretch,.layout-align-xs-space-around-stretch,.layout-align-xs-space-between-stretch,.layout-align-xs-start-stretch{align-items:stretch;align-content:stretch}.flex-xs{flex:1;box-sizing:border-box}.flex-xs-grow{flex:1 1 100%;box-sizing:border-box}.flex-xs-initial{flex:0 1 auto;box-sizing:border-box}.flex-xs-auto{flex:1 1 auto;box-sizing:border-box}.flex-xs-none{flex:0 0 auto;box-sizing:border-box}.flex-xs-noshrink{flex:1 0 auto;box-sizing:border-box}.flex-xs-nogrow{flex:0 1 auto;box-sizing:border-box}.flex-xs-0{flex:1 1 0%;max-width:0%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-0{flex:1 1 0%;max-width:0%;max-height:100%;box-sizing:border-box;min-width:0}.layout-column>.flex-xs-0{flex:1 1 0%;max-width:100%;max-height:0%;box-sizing:border-box}.layout-row>.flex-xs-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xs-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-xs-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-xs-row>.flex-xs-0{flex:1 1 0%;max-width:0%;max-height:100%;box-sizing:border-box;min-width:0}.layout-xs-column>.flex-xs-0{flex:1 1 0%;max-width:100%;max-height:0%;box-sizing:border-box;min-height:0}.flex-xs-5{flex:1 1 5%;max-width:5%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-5{flex:1 1 5%;max-width:5%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xs-5{flex:1 1 5%;max-width:100%;max-height:5%;box-sizing:border-box}.layout-row>.flex-xs-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xs-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-xs-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-xs-row>.flex-xs-5{flex:1 1 5%;max-width:5%;max-height:100%;box-sizing:border-box}.layout-xs-column>.flex-xs-5{flex:1 1 5%;max-width:100%;max-height:5%;box-sizing:border-box}.flex-xs-10{flex:1 1 10%;max-width:10%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-10{flex:1 1 10%;max-width:10%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xs-10{flex:1 1 10%;max-width:100%;max-height:10%;box-sizing:border-box}.layout-row>.flex-xs-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xs-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-xs-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-xs-row>.flex-xs-10{flex:1 1 10%;max-width:10%;max-height:100%;box-sizing:border-box}.layout-xs-column>.flex-xs-10{flex:1 1 10%;max-width:100%;max-height:10%;box-sizing:border-box}.flex-xs-15{flex:1 1 15%;max-width:15%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-15{flex:1 1 15%;max-width:15%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xs-15{flex:1 1 15%;max-width:100%;max-height:15%;box-sizing:border-box}.layout-row>.flex-xs-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xs-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-xs-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-xs-row>.flex-xs-15{flex:1 1 15%;max-width:15%;max-height:100%;box-sizing:border-box}.layout-xs-column>.flex-xs-15{flex:1 1 15%;max-width:100%;max-height:15%;box-sizing:border-box}.flex-xs-20{flex:1 1 20%;max-width:20%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-20{flex:1 1 20%;max-width:20%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xs-20{flex:1 1 20%;max-width:100%;max-height:20%;box-sizing:border-box}.layout-row>.flex-xs-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xs-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-xs-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-xs-row>.flex-xs-20{flex:1 1 20%;max-width:20%;max-height:100%;box-sizing:border-box}.layout-xs-column>.flex-xs-20{flex:1 1 20%;max-width:100%;max-height:20%;box-sizing:border-box}.flex-xs-25{flex:1 1 25%;max-width:25%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-25{flex:1 1 25%;max-width:25%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xs-25{flex:1 1 25%;max-width:100%;max-height:25%;box-sizing:border-box}.layout-row>.flex-xs-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xs-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-xs-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-xs-row>.flex-xs-25{flex:1 1 25%;max-width:25%;max-height:100%;box-sizing:border-box}.layout-xs-column>.flex-xs-25{flex:1 1 25%;max-width:100%;max-height:25%;box-sizing:border-box}.flex-xs-30{flex:1 1 30%;max-width:30%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-30{flex:1 1 30%;max-width:30%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xs-30{flex:1 1 30%;max-width:100%;max-height:30%;box-sizing:border-box}.layout-row>.flex-xs-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xs-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-xs-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-xs-row>.flex-xs-30{flex:1 1 30%;max-width:30%;max-height:100%;box-sizing:border-box}.layout-xs-column>.flex-xs-30{flex:1 1 30%;max-width:100%;max-height:30%;box-sizing:border-box}.flex-xs-35{flex:1 1 35%;max-width:35%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-35{flex:1 1 35%;max-width:35%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xs-35{flex:1 1 35%;max-width:100%;max-height:35%;box-sizing:border-box}.layout-row>.flex-xs-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xs-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-xs-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-xs-row>.flex-xs-35{flex:1 1 35%;max-width:35%;max-height:100%;box-sizing:border-box}.layout-xs-column>.flex-xs-35{flex:1 1 35%;max-width:100%;max-height:35%;box-sizing:border-box}.flex-xs-40{flex:1 1 40%;max-width:40%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-40{flex:1 1 40%;max-width:40%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xs-40{flex:1 1 40%;max-width:100%;max-height:40%;box-sizing:border-box}.layout-row>.flex-xs-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xs-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-xs-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-xs-row>.flex-xs-40{flex:1 1 40%;max-width:40%;max-height:100%;box-sizing:border-box}.layout-xs-column>.flex-xs-40{flex:1 1 40%;max-width:100%;max-height:40%;box-sizing:border-box}.flex-xs-45{flex:1 1 45%;max-width:45%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-45{flex:1 1 45%;max-width:45%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xs-45{flex:1 1 45%;max-width:100%;max-height:45%;box-sizing:border-box}.layout-row>.flex-xs-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xs-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-xs-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-xs-row>.flex-xs-45{flex:1 1 45%;max-width:45%;max-height:100%;box-sizing:border-box}.layout-xs-column>.flex-xs-45{flex:1 1 45%;max-width:100%;max-height:45%;box-sizing:border-box}.flex-xs-50{flex:1 1 50%;max-width:50%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-50{flex:1 1 50%;max-width:50%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xs-50{flex:1 1 50%;max-width:100%;max-height:50%;box-sizing:border-box}.layout-row>.flex-xs-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xs-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-xs-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-xs-row>.flex-xs-50{flex:1 1 50%;max-width:50%;max-height:100%;box-sizing:border-box}.layout-xs-column>.flex-xs-50{flex:1 1 50%;max-width:100%;max-height:50%;box-sizing:border-box}.flex-xs-55{flex:1 1 55%;max-width:55%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-55{flex:1 1 55%;max-width:55%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xs-55{flex:1 1 55%;max-width:100%;max-height:55%;box-sizing:border-box}.layout-row>.flex-xs-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xs-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-xs-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-xs-row>.flex-xs-55{flex:1 1 55%;max-width:55%;max-height:100%;box-sizing:border-box}.layout-xs-column>.flex-xs-55{flex:1 1 55%;max-width:100%;max-height:55%;box-sizing:border-box}.flex-xs-60{flex:1 1 60%;max-width:60%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-60{flex:1 1 60%;max-width:60%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xs-60{flex:1 1 60%;max-width:100%;max-height:60%;box-sizing:border-box}.layout-row>.flex-xs-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xs-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-xs-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-xs-row>.flex-xs-60{flex:1 1 60%;max-width:60%;max-height:100%;box-sizing:border-box}.layout-xs-column>.flex-xs-60{flex:1 1 60%;max-width:100%;max-height:60%;box-sizing:border-box}.flex-xs-65{flex:1 1 65%;max-width:65%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-65{flex:1 1 65%;max-width:65%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xs-65{flex:1 1 65%;max-width:100%;max-height:65%;box-sizing:border-box}.layout-row>.flex-xs-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xs-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-xs-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-xs-row>.flex-xs-65{flex:1 1 65%;max-width:65%;max-height:100%;box-sizing:border-box}.layout-xs-column>.flex-xs-65{flex:1 1 65%;max-width:100%;max-height:65%;box-sizing:border-box}.flex-xs-70{flex:1 1 70%;max-width:70%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-70{flex:1 1 70%;max-width:70%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xs-70{flex:1 1 70%;max-width:100%;max-height:70%;box-sizing:border-box}.layout-row>.flex-xs-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xs-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-xs-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-xs-row>.flex-xs-70{flex:1 1 70%;max-width:70%;max-height:100%;box-sizing:border-box}.layout-xs-column>.flex-xs-70{flex:1 1 70%;max-width:100%;max-height:70%;box-sizing:border-box}.flex-xs-75{flex:1 1 75%;max-width:75%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-75{flex:1 1 75%;max-width:75%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xs-75{flex:1 1 75%;max-width:100%;max-height:75%;box-sizing:border-box}.layout-row>.flex-xs-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xs-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-xs-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-xs-row>.flex-xs-75{flex:1 1 75%;max-width:75%;max-height:100%;box-sizing:border-box}.layout-xs-column>.flex-xs-75{flex:1 1 75%;max-width:100%;max-height:75%;box-sizing:border-box}.flex-xs-80{flex:1 1 80%;max-width:80%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-80{flex:1 1 80%;max-width:80%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xs-80{flex:1 1 80%;max-width:100%;max-height:80%;box-sizing:border-box}.layout-row>.flex-xs-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xs-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-xs-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-xs-row>.flex-xs-80{flex:1 1 80%;max-width:80%;max-height:100%;box-sizing:border-box}.layout-xs-column>.flex-xs-80{flex:1 1 80%;max-width:100%;max-height:80%;box-sizing:border-box}.flex-xs-85{flex:1 1 85%;max-width:85%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-85{flex:1 1 85%;max-width:85%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xs-85{flex:1 1 85%;max-width:100%;max-height:85%;box-sizing:border-box}.layout-row>.flex-xs-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xs-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-xs-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-xs-row>.flex-xs-85{flex:1 1 85%;max-width:85%;max-height:100%;box-sizing:border-box}.layout-xs-column>.flex-xs-85{flex:1 1 85%;max-width:100%;max-height:85%;box-sizing:border-box}.flex-xs-90{flex:1 1 90%;max-width:90%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-90{flex:1 1 90%;max-width:90%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xs-90{flex:1 1 90%;max-width:100%;max-height:90%;box-sizing:border-box}.layout-row>.flex-xs-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xs-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-xs-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-xs-row>.flex-xs-90{flex:1 1 90%;max-width:90%;max-height:100%;box-sizing:border-box}.layout-xs-column>.flex-xs-90{flex:1 1 90%;max-width:100%;max-height:90%;box-sizing:border-box}.flex-xs-95{flex:1 1 95%;max-width:95%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-95{flex:1 1 95%;max-width:95%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xs-95{flex:1 1 95%;max-width:100%;max-height:95%;box-sizing:border-box}.layout-row>.flex-xs-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xs-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-xs-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-xs-row>.flex-xs-95{flex:1 1 95%;max-width:95%;max-height:100%;box-sizing:border-box}.layout-xs-column>.flex-xs-95{flex:1 1 95%;max-width:100%;max-height:95%;box-sizing:border-box}.flex-xs-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xs-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xs-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-xs-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-xs-row>.flex-xs-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-xs-column>.flex-xs-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-xs-row>.flex-xs-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-xs-row>.flex-xs-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-xs-row>.flex{min-width:0}.layout-xs-column>.flex-xs-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-xs-column>.flex-xs-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-xs-column>.flex{min-height:0}.layout-xs,.layout-xs-column,.layout-xs-row{box-sizing:border-box;display:-webkit-box;display:-webkit-flex;display:-moz-box;display:-ms-flexbox;display:flex}.layout-xs-column{flex-direction:column}.layout-xs-row{flex-direction:row}}@media (min-width:600px){.flex-order-gt-xs--20{order:-20}.flex-order-gt-xs--19{order:-19}.flex-order-gt-xs--18{order:-18}.flex-order-gt-xs--17{order:-17}.flex-order-gt-xs--16{order:-16}.flex-order-gt-xs--15{order:-15}.flex-order-gt-xs--14{order:-14}.flex-order-gt-xs--13{order:-13}.flex-order-gt-xs--12{order:-12}.flex-order-gt-xs--11{order:-11}.flex-order-gt-xs--10{order:-10}.flex-order-gt-xs--9{order:-9}.flex-order-gt-xs--8{order:-8}.flex-order-gt-xs--7{order:-7}.flex-order-gt-xs--6{order:-6}.flex-order-gt-xs--5{order:-5}.flex-order-gt-xs--4{order:-4}.flex-order-gt-xs--3{order:-3}.flex-order-gt-xs--2{order:-2}.flex-order-gt-xs--1{order:-1}.flex-order-gt-xs-0{order:0}.flex-order-gt-xs-1{order:1}.flex-order-gt-xs-2{order:2}.flex-order-gt-xs-3{order:3}.flex-order-gt-xs-4{order:4}.flex-order-gt-xs-5{order:5}.flex-order-gt-xs-6{order:6}.flex-order-gt-xs-7{order:7}.flex-order-gt-xs-8{order:8}.flex-order-gt-xs-9{order:9}.flex-order-gt-xs-10{order:10}.flex-order-gt-xs-11{order:11}.flex-order-gt-xs-12{order:12}.flex-order-gt-xs-13{order:13}.flex-order-gt-xs-14{order:14}.flex-order-gt-xs-15{order:15}.flex-order-gt-xs-16{order:16}.flex-order-gt-xs-17{order:17}.flex-order-gt-xs-18{order:18}.flex-order-gt-xs-19{order:19}.flex-order-gt-xs-20{order:20}.flex-offset-gt-xs-0,.offset-gt-xs-0{margin-left:0}[dir=rtl] .flex-offset-gt-xs-0,[dir=rtl] .offset-gt-xs-0{margin-left:auto;margin-right:0}.flex-offset-gt-xs-5,.offset-gt-xs-5{margin-left:5%}[dir=rtl] .flex-offset-gt-xs-5,[dir=rtl] .offset-gt-xs-5{margin-left:auto;margin-right:5%}.flex-offset-gt-xs-10,.offset-gt-xs-10{margin-left:10%}[dir=rtl] .flex-offset-gt-xs-10,[dir=rtl] .offset-gt-xs-10{margin-left:auto;margin-right:10%}.flex-offset-gt-xs-15,.offset-gt-xs-15{margin-left:15%}[dir=rtl] .flex-offset-gt-xs-15,[dir=rtl] .offset-gt-xs-15{margin-left:auto;margin-right:15%}.flex-offset-gt-xs-20,.offset-gt-xs-20{margin-left:20%}[dir=rtl] .flex-offset-gt-xs-20,[dir=rtl] .offset-gt-xs-20{margin-left:auto;margin-right:20%}.flex-offset-gt-xs-25,.offset-gt-xs-25{margin-left:25%}[dir=rtl] .flex-offset-gt-xs-25,[dir=rtl] .offset-gt-xs-25{margin-left:auto;margin-right:25%}.flex-offset-gt-xs-30,.offset-gt-xs-30{margin-left:30%}[dir=rtl] .flex-offset-gt-xs-30,[dir=rtl] .offset-gt-xs-30{margin-left:auto;margin-right:30%}.flex-offset-gt-xs-35,.offset-gt-xs-35{margin-left:35%}[dir=rtl] .flex-offset-gt-xs-35,[dir=rtl] .offset-gt-xs-35{margin-left:auto;margin-right:35%}.flex-offset-gt-xs-40,.offset-gt-xs-40{margin-left:40%}[dir=rtl] .flex-offset-gt-xs-40,[dir=rtl] .offset-gt-xs-40{margin-left:auto;margin-right:40%}.flex-offset-gt-xs-45,.offset-gt-xs-45{margin-left:45%}[dir=rtl] .flex-offset-gt-xs-45,[dir=rtl] .offset-gt-xs-45{margin-left:auto;margin-right:45%}.flex-offset-gt-xs-50,.offset-gt-xs-50{margin-left:50%}[dir=rtl] .flex-offset-gt-xs-50,[dir=rtl] .offset-gt-xs-50{margin-left:auto;margin-right:50%}.flex-offset-gt-xs-55,.offset-gt-xs-55{margin-left:55%}[dir=rtl] .flex-offset-gt-xs-55,[dir=rtl] .offset-gt-xs-55{margin-left:auto;margin-right:55%}.flex-offset-gt-xs-60,.offset-gt-xs-60{margin-left:60%}[dir=rtl] .flex-offset-gt-xs-60,[dir=rtl] .offset-gt-xs-60{margin-left:auto;margin-right:60%}.flex-offset-gt-xs-65,.offset-gt-xs-65{margin-left:65%}[dir=rtl] .flex-offset-gt-xs-65,[dir=rtl] .offset-gt-xs-65{margin-left:auto;margin-right:65%}.flex-offset-gt-xs-70,.offset-gt-xs-70{margin-left:70%}[dir=rtl] .flex-offset-gt-xs-70,[dir=rtl] .offset-gt-xs-70{margin-left:auto;margin-right:70%}.flex-offset-gt-xs-75,.offset-gt-xs-75{margin-left:75%}[dir=rtl] .flex-offset-gt-xs-75,[dir=rtl] .offset-gt-xs-75{margin-left:auto;margin-right:75%}.flex-offset-gt-xs-80,.offset-gt-xs-80{margin-left:80%}[dir=rtl] .flex-offset-gt-xs-80,[dir=rtl] .offset-gt-xs-80{margin-left:auto;margin-right:80%}.flex-offset-gt-xs-85,.offset-gt-xs-85{margin-left:85%}[dir=rtl] .flex-offset-gt-xs-85,[dir=rtl] .offset-gt-xs-85{margin-left:auto;margin-right:85%}.flex-offset-gt-xs-90,.offset-gt-xs-90{margin-left:90%}[dir=rtl] .flex-offset-gt-xs-90,[dir=rtl] .offset-gt-xs-90{margin-left:auto;margin-right:90%}.flex-offset-gt-xs-95,.offset-gt-xs-95{margin-left:95%}[dir=rtl] .flex-offset-gt-xs-95,[dir=rtl] .offset-gt-xs-95{margin-left:auto;margin-right:95%}.flex-offset-gt-xs-33,.offset-gt-xs-33{margin-left:calc(100% / 3)}.flex-offset-gt-xs-66,.offset-gt-xs-66{margin-left:calc(200% / 3)}[dir=rtl] .flex-offset-gt-xs-66,[dir=rtl] .offset-gt-xs-66{margin-left:auto;margin-right:calc(200% / 3)}.layout-align-gt-xs,.layout-align-gt-xs-start-stretch{justify-content:flex-start;align-content:stretch;align-items:stretch}.layout-align-gt-xs-start,.layout-align-gt-xs-start-center,.layout-align-gt-xs-start-end,.layout-align-gt-xs-start-start,.layout-align-gt-xs-start-stretch{justify-content:flex-start}.layout-align-gt-xs-center,.layout-align-gt-xs-center-center,.layout-align-gt-xs-center-end,.layout-align-gt-xs-center-start,.layout-align-gt-xs-center-stretch{justify-content:center}.layout-align-gt-xs-end,.layout-align-gt-xs-end-center,.layout-align-gt-xs-end-end,.layout-align-gt-xs-end-start,.layout-align-gt-xs-end-stretch{justify-content:flex-end}.layout-align-gt-xs-space-around,.layout-align-gt-xs-space-around-center,.layout-align-gt-xs-space-around-end,.layout-align-gt-xs-space-around-start,.layout-align-gt-xs-space-around-stretch{justify-content:space-around}.layout-align-gt-xs-space-between,.layout-align-gt-xs-space-between-center,.layout-align-gt-xs-space-between-end,.layout-align-gt-xs-space-between-start,.layout-align-gt-xs-space-between-stretch{justify-content:space-between}.layout-align-gt-xs-center-start,.layout-align-gt-xs-end-start,.layout-align-gt-xs-space-around-start,.layout-align-gt-xs-space-between-start,.layout-align-gt-xs-start-start{align-items:flex-start;align-content:flex-start}.layout-align-gt-xs-center-center,.layout-align-gt-xs-end-center,.layout-align-gt-xs-space-around-center,.layout-align-gt-xs-space-between-center,.layout-align-gt-xs-start-center{align-items:center;align-content:center;max-width:100%}.layout-align-gt-xs-center-center>*,.layout-align-gt-xs-end-center>*,.layout-align-gt-xs-space-around-center>*,.layout-align-gt-xs-space-between-center>*,.layout-align-gt-xs-start-center>*{max-width:100%;box-sizing:border-box}.layout-align-gt-xs-center-end,.layout-align-gt-xs-end-end,.layout-align-gt-xs-space-around-end,.layout-align-gt-xs-space-between-end,.layout-align-gt-xs-start-end{align-items:flex-end;align-content:flex-end}.layout-align-gt-xs-center-stretch,.layout-align-gt-xs-end-stretch,.layout-align-gt-xs-space-around-stretch,.layout-align-gt-xs-space-between-stretch,.layout-align-gt-xs-start-stretch{align-items:stretch;align-content:stretch}.flex-gt-xs{flex:1;box-sizing:border-box}.flex-gt-xs-grow{flex:1 1 100%;box-sizing:border-box}.flex-gt-xs-initial{flex:0 1 auto;box-sizing:border-box}.flex-gt-xs-auto{flex:1 1 auto;box-sizing:border-box}.flex-gt-xs-none{flex:0 0 auto;box-sizing:border-box}.flex-gt-xs-noshrink{flex:1 0 auto;box-sizing:border-box}.flex-gt-xs-nogrow{flex:0 1 auto;box-sizing:border-box}.flex-gt-xs-0{flex:1 1 0%;max-width:0%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-0{flex:1 1 0%;max-width:0%;max-height:100%;box-sizing:border-box;min-width:0}.layout-column>.flex-gt-xs-0{flex:1 1 0%;max-width:100%;max-height:0%;box-sizing:border-box}.layout-row>.flex-gt-xs-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-xs-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-xs-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-xs-row>.flex-gt-xs-0{flex:1 1 0%;max-width:0%;max-height:100%;box-sizing:border-box;min-width:0}.layout-gt-xs-column>.flex-gt-xs-0{flex:1 1 0%;max-width:100%;max-height:0%;box-sizing:border-box;min-height:0}.flex-gt-xs-5{flex:1 1 5%;max-width:5%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-5{flex:1 1 5%;max-width:5%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-xs-5{flex:1 1 5%;max-width:100%;max-height:5%;box-sizing:border-box}.layout-row>.flex-gt-xs-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-xs-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-xs-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-xs-row>.flex-gt-xs-5{flex:1 1 5%;max-width:5%;max-height:100%;box-sizing:border-box}.layout-gt-xs-column>.flex-gt-xs-5{flex:1 1 5%;max-width:100%;max-height:5%;box-sizing:border-box}.flex-gt-xs-10{flex:1 1 10%;max-width:10%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-10{flex:1 1 10%;max-width:10%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-xs-10{flex:1 1 10%;max-width:100%;max-height:10%;box-sizing:border-box}.layout-row>.flex-gt-xs-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-xs-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-xs-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-xs-row>.flex-gt-xs-10{flex:1 1 10%;max-width:10%;max-height:100%;box-sizing:border-box}.layout-gt-xs-column>.flex-gt-xs-10{flex:1 1 10%;max-width:100%;max-height:10%;box-sizing:border-box}.flex-gt-xs-15{flex:1 1 15%;max-width:15%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-15{flex:1 1 15%;max-width:15%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-xs-15{flex:1 1 15%;max-width:100%;max-height:15%;box-sizing:border-box}.layout-row>.flex-gt-xs-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-xs-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-xs-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-xs-row>.flex-gt-xs-15{flex:1 1 15%;max-width:15%;max-height:100%;box-sizing:border-box}.layout-gt-xs-column>.flex-gt-xs-15{flex:1 1 15%;max-width:100%;max-height:15%;box-sizing:border-box}.flex-gt-xs-20{flex:1 1 20%;max-width:20%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-20{flex:1 1 20%;max-width:20%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-xs-20{flex:1 1 20%;max-width:100%;max-height:20%;box-sizing:border-box}.layout-row>.flex-gt-xs-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-xs-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-xs-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-xs-row>.flex-gt-xs-20{flex:1 1 20%;max-width:20%;max-height:100%;box-sizing:border-box}.layout-gt-xs-column>.flex-gt-xs-20{flex:1 1 20%;max-width:100%;max-height:20%;box-sizing:border-box}.flex-gt-xs-25{flex:1 1 25%;max-width:25%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-25{flex:1 1 25%;max-width:25%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-xs-25{flex:1 1 25%;max-width:100%;max-height:25%;box-sizing:border-box}.layout-row>.flex-gt-xs-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-xs-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-xs-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-xs-row>.flex-gt-xs-25{flex:1 1 25%;max-width:25%;max-height:100%;box-sizing:border-box}.layout-gt-xs-column>.flex-gt-xs-25{flex:1 1 25%;max-width:100%;max-height:25%;box-sizing:border-box}.flex-gt-xs-30{flex:1 1 30%;max-width:30%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-30{flex:1 1 30%;max-width:30%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-xs-30{flex:1 1 30%;max-width:100%;max-height:30%;box-sizing:border-box}.layout-row>.flex-gt-xs-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-xs-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-xs-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-xs-row>.flex-gt-xs-30{flex:1 1 30%;max-width:30%;max-height:100%;box-sizing:border-box}.layout-gt-xs-column>.flex-gt-xs-30{flex:1 1 30%;max-width:100%;max-height:30%;box-sizing:border-box}.flex-gt-xs-35{flex:1 1 35%;max-width:35%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-35{flex:1 1 35%;max-width:35%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-xs-35{flex:1 1 35%;max-width:100%;max-height:35%;box-sizing:border-box}.layout-row>.flex-gt-xs-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-xs-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-xs-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-xs-row>.flex-gt-xs-35{flex:1 1 35%;max-width:35%;max-height:100%;box-sizing:border-box}.layout-gt-xs-column>.flex-gt-xs-35{flex:1 1 35%;max-width:100%;max-height:35%;box-sizing:border-box}.flex-gt-xs-40{flex:1 1 40%;max-width:40%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-40{flex:1 1 40%;max-width:40%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-xs-40{flex:1 1 40%;max-width:100%;max-height:40%;box-sizing:border-box}.layout-row>.flex-gt-xs-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-xs-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-xs-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-xs-row>.flex-gt-xs-40{flex:1 1 40%;max-width:40%;max-height:100%;box-sizing:border-box}.layout-gt-xs-column>.flex-gt-xs-40{flex:1 1 40%;max-width:100%;max-height:40%;box-sizing:border-box}.flex-gt-xs-45{flex:1 1 45%;max-width:45%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-45{flex:1 1 45%;max-width:45%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-xs-45{flex:1 1 45%;max-width:100%;max-height:45%;box-sizing:border-box}.layout-row>.flex-gt-xs-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-xs-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-xs-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-xs-row>.flex-gt-xs-45{flex:1 1 45%;max-width:45%;max-height:100%;box-sizing:border-box}.layout-gt-xs-column>.flex-gt-xs-45{flex:1 1 45%;max-width:100%;max-height:45%;box-sizing:border-box}.flex-gt-xs-50{flex:1 1 50%;max-width:50%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-50{flex:1 1 50%;max-width:50%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-xs-50{flex:1 1 50%;max-width:100%;max-height:50%;box-sizing:border-box}.layout-row>.flex-gt-xs-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-xs-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-xs-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-xs-row>.flex-gt-xs-50{flex:1 1 50%;max-width:50%;max-height:100%;box-sizing:border-box}.layout-gt-xs-column>.flex-gt-xs-50{flex:1 1 50%;max-width:100%;max-height:50%;box-sizing:border-box}.flex-gt-xs-55{flex:1 1 55%;max-width:55%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-55{flex:1 1 55%;max-width:55%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-xs-55{flex:1 1 55%;max-width:100%;max-height:55%;box-sizing:border-box}.layout-row>.flex-gt-xs-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-xs-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-xs-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-xs-row>.flex-gt-xs-55{flex:1 1 55%;max-width:55%;max-height:100%;box-sizing:border-box}.layout-gt-xs-column>.flex-gt-xs-55{flex:1 1 55%;max-width:100%;max-height:55%;box-sizing:border-box}.flex-gt-xs-60{flex:1 1 60%;max-width:60%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-60{flex:1 1 60%;max-width:60%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-xs-60{flex:1 1 60%;max-width:100%;max-height:60%;box-sizing:border-box}.layout-row>.flex-gt-xs-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-xs-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-xs-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-xs-row>.flex-gt-xs-60{flex:1 1 60%;max-width:60%;max-height:100%;box-sizing:border-box}.layout-gt-xs-column>.flex-gt-xs-60{flex:1 1 60%;max-width:100%;max-height:60%;box-sizing:border-box}.flex-gt-xs-65{flex:1 1 65%;max-width:65%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-65{flex:1 1 65%;max-width:65%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-xs-65{flex:1 1 65%;max-width:100%;max-height:65%;box-sizing:border-box}.layout-row>.flex-gt-xs-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-xs-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-xs-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-xs-row>.flex-gt-xs-65{flex:1 1 65%;max-width:65%;max-height:100%;box-sizing:border-box}.layout-gt-xs-column>.flex-gt-xs-65{flex:1 1 65%;max-width:100%;max-height:65%;box-sizing:border-box}.flex-gt-xs-70{flex:1 1 70%;max-width:70%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-70{flex:1 1 70%;max-width:70%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-xs-70{flex:1 1 70%;max-width:100%;max-height:70%;box-sizing:border-box}.layout-row>.flex-gt-xs-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-xs-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-xs-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-xs-row>.flex-gt-xs-70{flex:1 1 70%;max-width:70%;max-height:100%;box-sizing:border-box}.layout-gt-xs-column>.flex-gt-xs-70{flex:1 1 70%;max-width:100%;max-height:70%;box-sizing:border-box}.flex-gt-xs-75{flex:1 1 75%;max-width:75%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-75{flex:1 1 75%;max-width:75%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-xs-75{flex:1 1 75%;max-width:100%;max-height:75%;box-sizing:border-box}.layout-row>.flex-gt-xs-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-xs-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-xs-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-xs-row>.flex-gt-xs-75{flex:1 1 75%;max-width:75%;max-height:100%;box-sizing:border-box}.layout-gt-xs-column>.flex-gt-xs-75{flex:1 1 75%;max-width:100%;max-height:75%;box-sizing:border-box}.flex-gt-xs-80{flex:1 1 80%;max-width:80%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-80{flex:1 1 80%;max-width:80%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-xs-80{flex:1 1 80%;max-width:100%;max-height:80%;box-sizing:border-box}.layout-row>.flex-gt-xs-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-xs-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-xs-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-xs-row>.flex-gt-xs-80{flex:1 1 80%;max-width:80%;max-height:100%;box-sizing:border-box}.layout-gt-xs-column>.flex-gt-xs-80{flex:1 1 80%;max-width:100%;max-height:80%;box-sizing:border-box}.flex-gt-xs-85{flex:1 1 85%;max-width:85%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-85{flex:1 1 85%;max-width:85%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-xs-85{flex:1 1 85%;max-width:100%;max-height:85%;box-sizing:border-box}.layout-row>.flex-gt-xs-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-xs-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-xs-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-xs-row>.flex-gt-xs-85{flex:1 1 85%;max-width:85%;max-height:100%;box-sizing:border-box}.layout-gt-xs-column>.flex-gt-xs-85{flex:1 1 85%;max-width:100%;max-height:85%;box-sizing:border-box}.flex-gt-xs-90{flex:1 1 90%;max-width:90%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-90{flex:1 1 90%;max-width:90%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-xs-90{flex:1 1 90%;max-width:100%;max-height:90%;box-sizing:border-box}.layout-row>.flex-gt-xs-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-xs-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-xs-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-xs-row>.flex-gt-xs-90{flex:1 1 90%;max-width:90%;max-height:100%;box-sizing:border-box}.layout-gt-xs-column>.flex-gt-xs-90{flex:1 1 90%;max-width:100%;max-height:90%;box-sizing:border-box}.flex-gt-xs-95{flex:1 1 95%;max-width:95%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-95{flex:1 1 95%;max-width:95%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-xs-95{flex:1 1 95%;max-width:100%;max-height:95%;box-sizing:border-box}.layout-row>.flex-gt-xs-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-xs-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-xs-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-xs-row>.flex-gt-xs-95{flex:1 1 95%;max-width:95%;max-height:100%;box-sizing:border-box}.layout-gt-xs-column>.flex-gt-xs-95{flex:1 1 95%;max-width:100%;max-height:95%;box-sizing:border-box}.flex-gt-xs-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-xs-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-xs-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-xs-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-xs-row>.flex-gt-xs-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-gt-xs-column>.flex-gt-xs-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-gt-xs-row>.flex-gt-xs-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-gt-xs-row>.flex-gt-xs-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-gt-xs-row>.flex{min-width:0}.layout-gt-xs-column>.flex-gt-xs-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-gt-xs-column>.flex-gt-xs-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-xs-column>.flex{min-height:0}.layout-gt-xs,.layout-gt-xs-column,.layout-gt-xs-row{box-sizing:border-box;display:-webkit-box;display:-webkit-flex;display:-moz-box;display:-ms-flexbox;display:flex}.layout-gt-xs-column{flex-direction:column}.layout-gt-xs-row{flex-direction:row}}@media (min-width:600px) and (max-width:959px){.hide-gt-xs:not(.show-gt-xs):not(.show-sm):not(.show),.hide:not(.show-gt-xs):not(.show-sm):not(.show){display:none}.hide-sm:not(.show-gt-xs):not(.show-sm):not(.show){display:none}.flex-order-sm--20{order:-20}.flex-order-sm--19{order:-19}.flex-order-sm--18{order:-18}.flex-order-sm--17{order:-17}.flex-order-sm--16{order:-16}.flex-order-sm--15{order:-15}.flex-order-sm--14{order:-14}.flex-order-sm--13{order:-13}.flex-order-sm--12{order:-12}.flex-order-sm--11{order:-11}.flex-order-sm--10{order:-10}.flex-order-sm--9{order:-9}.flex-order-sm--8{order:-8}.flex-order-sm--7{order:-7}.flex-order-sm--6{order:-6}.flex-order-sm--5{order:-5}.flex-order-sm--4{order:-4}.flex-order-sm--3{order:-3}.flex-order-sm--2{order:-2}.flex-order-sm--1{order:-1}.flex-order-sm-0{order:0}.flex-order-sm-1{order:1}.flex-order-sm-2{order:2}.flex-order-sm-3{order:3}.flex-order-sm-4{order:4}.flex-order-sm-5{order:5}.flex-order-sm-6{order:6}.flex-order-sm-7{order:7}.flex-order-sm-8{order:8}.flex-order-sm-9{order:9}.flex-order-sm-10{order:10}.flex-order-sm-11{order:11}.flex-order-sm-12{order:12}.flex-order-sm-13{order:13}.flex-order-sm-14{order:14}.flex-order-sm-15{order:15}.flex-order-sm-16{order:16}.flex-order-sm-17{order:17}.flex-order-sm-18{order:18}.flex-order-sm-19{order:19}.flex-order-sm-20{order:20}.flex-offset-sm-0,.offset-sm-0{margin-left:0}[dir=rtl] .flex-offset-sm-0,[dir=rtl] .offset-sm-0{margin-left:auto;margin-right:0}.flex-offset-sm-5,.offset-sm-5{margin-left:5%}[dir=rtl] .flex-offset-sm-5,[dir=rtl] .offset-sm-5{margin-left:auto;margin-right:5%}.flex-offset-sm-10,.offset-sm-10{margin-left:10%}[dir=rtl] .flex-offset-sm-10,[dir=rtl] .offset-sm-10{margin-left:auto;margin-right:10%}.flex-offset-sm-15,.offset-sm-15{margin-left:15%}[dir=rtl] .flex-offset-sm-15,[dir=rtl] .offset-sm-15{margin-left:auto;margin-right:15%}.flex-offset-sm-20,.offset-sm-20{margin-left:20%}[dir=rtl] .flex-offset-sm-20,[dir=rtl] .offset-sm-20{margin-left:auto;margin-right:20%}.flex-offset-sm-25,.offset-sm-25{margin-left:25%}[dir=rtl] .flex-offset-sm-25,[dir=rtl] .offset-sm-25{margin-left:auto;margin-right:25%}.flex-offset-sm-30,.offset-sm-30{margin-left:30%}[dir=rtl] .flex-offset-sm-30,[dir=rtl] .offset-sm-30{margin-left:auto;margin-right:30%}.flex-offset-sm-35,.offset-sm-35{margin-left:35%}[dir=rtl] .flex-offset-sm-35,[dir=rtl] .offset-sm-35{margin-left:auto;margin-right:35%}.flex-offset-sm-40,.offset-sm-40{margin-left:40%}[dir=rtl] .flex-offset-sm-40,[dir=rtl] .offset-sm-40{margin-left:auto;margin-right:40%}.flex-offset-sm-45,.offset-sm-45{margin-left:45%}[dir=rtl] .flex-offset-sm-45,[dir=rtl] .offset-sm-45{margin-left:auto;margin-right:45%}.flex-offset-sm-50,.offset-sm-50{margin-left:50%}[dir=rtl] .flex-offset-sm-50,[dir=rtl] .offset-sm-50{margin-left:auto;margin-right:50%}.flex-offset-sm-55,.offset-sm-55{margin-left:55%}[dir=rtl] .flex-offset-sm-55,[dir=rtl] .offset-sm-55{margin-left:auto;margin-right:55%}.flex-offset-sm-60,.offset-sm-60{margin-left:60%}[dir=rtl] .flex-offset-sm-60,[dir=rtl] .offset-sm-60{margin-left:auto;margin-right:60%}.flex-offset-sm-65,.offset-sm-65{margin-left:65%}[dir=rtl] .flex-offset-sm-65,[dir=rtl] .offset-sm-65{margin-left:auto;margin-right:65%}.flex-offset-sm-70,.offset-sm-70{margin-left:70%}[dir=rtl] .flex-offset-sm-70,[dir=rtl] .offset-sm-70{margin-left:auto;margin-right:70%}.flex-offset-sm-75,.offset-sm-75{margin-left:75%}[dir=rtl] .flex-offset-sm-75,[dir=rtl] .offset-sm-75{margin-left:auto;margin-right:75%}.flex-offset-sm-80,.offset-sm-80{margin-left:80%}[dir=rtl] .flex-offset-sm-80,[dir=rtl] .offset-sm-80{margin-left:auto;margin-right:80%}.flex-offset-sm-85,.offset-sm-85{margin-left:85%}[dir=rtl] .flex-offset-sm-85,[dir=rtl] .offset-sm-85{margin-left:auto;margin-right:85%}.flex-offset-sm-90,.offset-sm-90{margin-left:90%}[dir=rtl] .flex-offset-sm-90,[dir=rtl] .offset-sm-90{margin-left:auto;margin-right:90%}.flex-offset-sm-95,.offset-sm-95{margin-left:95%}[dir=rtl] .flex-offset-sm-95,[dir=rtl] .offset-sm-95{margin-left:auto;margin-right:95%}.flex-offset-sm-33,.offset-sm-33{margin-left:calc(100% / 3)}.flex-offset-sm-66,.offset-sm-66{margin-left:calc(200% / 3)}[dir=rtl] .flex-offset-sm-66,[dir=rtl] .offset-sm-66{margin-left:auto;margin-right:calc(200% / 3)}.layout-align-sm,.layout-align-sm-start-stretch{justify-content:flex-start;align-content:stretch;align-items:stretch}.layout-align-sm-start,.layout-align-sm-start-center,.layout-align-sm-start-end,.layout-align-sm-start-start,.layout-align-sm-start-stretch{justify-content:flex-start}.layout-align-sm-center,.layout-align-sm-center-center,.layout-align-sm-center-end,.layout-align-sm-center-start,.layout-align-sm-center-stretch{justify-content:center}.layout-align-sm-end,.layout-align-sm-end-center,.layout-align-sm-end-end,.layout-align-sm-end-start,.layout-align-sm-end-stretch{justify-content:flex-end}.layout-align-sm-space-around,.layout-align-sm-space-around-center,.layout-align-sm-space-around-end,.layout-align-sm-space-around-start,.layout-align-sm-space-around-stretch{justify-content:space-around}.layout-align-sm-space-between,.layout-align-sm-space-between-center,.layout-align-sm-space-between-end,.layout-align-sm-space-between-start,.layout-align-sm-space-between-stretch{justify-content:space-between}.layout-align-sm-center-start,.layout-align-sm-end-start,.layout-align-sm-space-around-start,.layout-align-sm-space-between-start,.layout-align-sm-start-start{align-items:flex-start;align-content:flex-start}.layout-align-sm-center-center,.layout-align-sm-end-center,.layout-align-sm-space-around-center,.layout-align-sm-space-between-center,.layout-align-sm-start-center{align-items:center;align-content:center;max-width:100%}.layout-align-sm-center-center>*,.layout-align-sm-end-center>*,.layout-align-sm-space-around-center>*,.layout-align-sm-space-between-center>*,.layout-align-sm-start-center>*{max-width:100%;box-sizing:border-box}.layout-align-sm-center-end,.layout-align-sm-end-end,.layout-align-sm-space-around-end,.layout-align-sm-space-between-end,.layout-align-sm-start-end{align-items:flex-end;align-content:flex-end}.layout-align-sm-center-stretch,.layout-align-sm-end-stretch,.layout-align-sm-space-around-stretch,.layout-align-sm-space-between-stretch,.layout-align-sm-start-stretch{align-items:stretch;align-content:stretch}.flex-sm{flex:1;box-sizing:border-box}.flex-sm-grow{flex:1 1 100%;box-sizing:border-box}.flex-sm-initial{flex:0 1 auto;box-sizing:border-box}.flex-sm-auto{flex:1 1 auto;box-sizing:border-box}.flex-sm-none{flex:0 0 auto;box-sizing:border-box}.flex-sm-noshrink{flex:1 0 auto;box-sizing:border-box}.flex-sm-nogrow{flex:0 1 auto;box-sizing:border-box}.flex-sm-0{flex:1 1 0%;max-width:0%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-0{flex:1 1 0%;max-width:0%;max-height:100%;box-sizing:border-box;min-width:0}.layout-column>.flex-sm-0{flex:1 1 0%;max-width:100%;max-height:0%;box-sizing:border-box}.layout-row>.flex-sm-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-sm-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-sm-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-sm-row>.flex-sm-0{flex:1 1 0%;max-width:0%;max-height:100%;box-sizing:border-box;min-width:0}.layout-sm-column>.flex-sm-0{flex:1 1 0%;max-width:100%;max-height:0%;box-sizing:border-box;min-height:0}.flex-sm-5{flex:1 1 5%;max-width:5%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-5{flex:1 1 5%;max-width:5%;max-height:100%;box-sizing:border-box}.layout-column>.flex-sm-5{flex:1 1 5%;max-width:100%;max-height:5%;box-sizing:border-box}.layout-row>.flex-sm-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-sm-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-sm-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-sm-row>.flex-sm-5{flex:1 1 5%;max-width:5%;max-height:100%;box-sizing:border-box}.layout-sm-column>.flex-sm-5{flex:1 1 5%;max-width:100%;max-height:5%;box-sizing:border-box}.flex-sm-10{flex:1 1 10%;max-width:10%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-10{flex:1 1 10%;max-width:10%;max-height:100%;box-sizing:border-box}.layout-column>.flex-sm-10{flex:1 1 10%;max-width:100%;max-height:10%;box-sizing:border-box}.layout-row>.flex-sm-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-sm-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-sm-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-sm-row>.flex-sm-10{flex:1 1 10%;max-width:10%;max-height:100%;box-sizing:border-box}.layout-sm-column>.flex-sm-10{flex:1 1 10%;max-width:100%;max-height:10%;box-sizing:border-box}.flex-sm-15{flex:1 1 15%;max-width:15%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-15{flex:1 1 15%;max-width:15%;max-height:100%;box-sizing:border-box}.layout-column>.flex-sm-15{flex:1 1 15%;max-width:100%;max-height:15%;box-sizing:border-box}.layout-row>.flex-sm-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-sm-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-sm-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-sm-row>.flex-sm-15{flex:1 1 15%;max-width:15%;max-height:100%;box-sizing:border-box}.layout-sm-column>.flex-sm-15{flex:1 1 15%;max-width:100%;max-height:15%;box-sizing:border-box}.flex-sm-20{flex:1 1 20%;max-width:20%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-20{flex:1 1 20%;max-width:20%;max-height:100%;box-sizing:border-box}.layout-column>.flex-sm-20{flex:1 1 20%;max-width:100%;max-height:20%;box-sizing:border-box}.layout-row>.flex-sm-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-sm-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-sm-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-sm-row>.flex-sm-20{flex:1 1 20%;max-width:20%;max-height:100%;box-sizing:border-box}.layout-sm-column>.flex-sm-20{flex:1 1 20%;max-width:100%;max-height:20%;box-sizing:border-box}.flex-sm-25{flex:1 1 25%;max-width:25%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-25{flex:1 1 25%;max-width:25%;max-height:100%;box-sizing:border-box}.layout-column>.flex-sm-25{flex:1 1 25%;max-width:100%;max-height:25%;box-sizing:border-box}.layout-row>.flex-sm-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-sm-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-sm-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-sm-row>.flex-sm-25{flex:1 1 25%;max-width:25%;max-height:100%;box-sizing:border-box}.layout-sm-column>.flex-sm-25{flex:1 1 25%;max-width:100%;max-height:25%;box-sizing:border-box}.flex-sm-30{flex:1 1 30%;max-width:30%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-30{flex:1 1 30%;max-width:30%;max-height:100%;box-sizing:border-box}.layout-column>.flex-sm-30{flex:1 1 30%;max-width:100%;max-height:30%;box-sizing:border-box}.layout-row>.flex-sm-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-sm-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-sm-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-sm-row>.flex-sm-30{flex:1 1 30%;max-width:30%;max-height:100%;box-sizing:border-box}.layout-sm-column>.flex-sm-30{flex:1 1 30%;max-width:100%;max-height:30%;box-sizing:border-box}.flex-sm-35{flex:1 1 35%;max-width:35%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-35{flex:1 1 35%;max-width:35%;max-height:100%;box-sizing:border-box}.layout-column>.flex-sm-35{flex:1 1 35%;max-width:100%;max-height:35%;box-sizing:border-box}.layout-row>.flex-sm-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-sm-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-sm-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-sm-row>.flex-sm-35{flex:1 1 35%;max-width:35%;max-height:100%;box-sizing:border-box}.layout-sm-column>.flex-sm-35{flex:1 1 35%;max-width:100%;max-height:35%;box-sizing:border-box}.flex-sm-40{flex:1 1 40%;max-width:40%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-40{flex:1 1 40%;max-width:40%;max-height:100%;box-sizing:border-box}.layout-column>.flex-sm-40{flex:1 1 40%;max-width:100%;max-height:40%;box-sizing:border-box}.layout-row>.flex-sm-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-sm-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-sm-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-sm-row>.flex-sm-40{flex:1 1 40%;max-width:40%;max-height:100%;box-sizing:border-box}.layout-sm-column>.flex-sm-40{flex:1 1 40%;max-width:100%;max-height:40%;box-sizing:border-box}.flex-sm-45{flex:1 1 45%;max-width:45%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-45{flex:1 1 45%;max-width:45%;max-height:100%;box-sizing:border-box}.layout-column>.flex-sm-45{flex:1 1 45%;max-width:100%;max-height:45%;box-sizing:border-box}.layout-row>.flex-sm-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-sm-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-sm-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-sm-row>.flex-sm-45{flex:1 1 45%;max-width:45%;max-height:100%;box-sizing:border-box}.layout-sm-column>.flex-sm-45{flex:1 1 45%;max-width:100%;max-height:45%;box-sizing:border-box}.flex-sm-50{flex:1 1 50%;max-width:50%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-50{flex:1 1 50%;max-width:50%;max-height:100%;box-sizing:border-box}.layout-column>.flex-sm-50{flex:1 1 50%;max-width:100%;max-height:50%;box-sizing:border-box}.layout-row>.flex-sm-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-sm-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-sm-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-sm-row>.flex-sm-50{flex:1 1 50%;max-width:50%;max-height:100%;box-sizing:border-box}.layout-sm-column>.flex-sm-50{flex:1 1 50%;max-width:100%;max-height:50%;box-sizing:border-box}.flex-sm-55{flex:1 1 55%;max-width:55%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-55{flex:1 1 55%;max-width:55%;max-height:100%;box-sizing:border-box}.layout-column>.flex-sm-55{flex:1 1 55%;max-width:100%;max-height:55%;box-sizing:border-box}.layout-row>.flex-sm-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-sm-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-sm-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-sm-row>.flex-sm-55{flex:1 1 55%;max-width:55%;max-height:100%;box-sizing:border-box}.layout-sm-column>.flex-sm-55{flex:1 1 55%;max-width:100%;max-height:55%;box-sizing:border-box}.flex-sm-60{flex:1 1 60%;max-width:60%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-60{flex:1 1 60%;max-width:60%;max-height:100%;box-sizing:border-box}.layout-column>.flex-sm-60{flex:1 1 60%;max-width:100%;max-height:60%;box-sizing:border-box}.layout-row>.flex-sm-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-sm-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-sm-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-sm-row>.flex-sm-60{flex:1 1 60%;max-width:60%;max-height:100%;box-sizing:border-box}.layout-sm-column>.flex-sm-60{flex:1 1 60%;max-width:100%;max-height:60%;box-sizing:border-box}.flex-sm-65{flex:1 1 65%;max-width:65%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-65{flex:1 1 65%;max-width:65%;max-height:100%;box-sizing:border-box}.layout-column>.flex-sm-65{flex:1 1 65%;max-width:100%;max-height:65%;box-sizing:border-box}.layout-row>.flex-sm-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-sm-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-sm-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-sm-row>.flex-sm-65{flex:1 1 65%;max-width:65%;max-height:100%;box-sizing:border-box}.layout-sm-column>.flex-sm-65{flex:1 1 65%;max-width:100%;max-height:65%;box-sizing:border-box}.flex-sm-70{flex:1 1 70%;max-width:70%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-70{flex:1 1 70%;max-width:70%;max-height:100%;box-sizing:border-box}.layout-column>.flex-sm-70{flex:1 1 70%;max-width:100%;max-height:70%;box-sizing:border-box}.layout-row>.flex-sm-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-sm-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-sm-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-sm-row>.flex-sm-70{flex:1 1 70%;max-width:70%;max-height:100%;box-sizing:border-box}.layout-sm-column>.flex-sm-70{flex:1 1 70%;max-width:100%;max-height:70%;box-sizing:border-box}.flex-sm-75{flex:1 1 75%;max-width:75%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-75{flex:1 1 75%;max-width:75%;max-height:100%;box-sizing:border-box}.layout-column>.flex-sm-75{flex:1 1 75%;max-width:100%;max-height:75%;box-sizing:border-box}.layout-row>.flex-sm-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-sm-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-sm-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-sm-row>.flex-sm-75{flex:1 1 75%;max-width:75%;max-height:100%;box-sizing:border-box}.layout-sm-column>.flex-sm-75{flex:1 1 75%;max-width:100%;max-height:75%;box-sizing:border-box}.flex-sm-80{flex:1 1 80%;max-width:80%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-80{flex:1 1 80%;max-width:80%;max-height:100%;box-sizing:border-box}.layout-column>.flex-sm-80{flex:1 1 80%;max-width:100%;max-height:80%;box-sizing:border-box}.layout-row>.flex-sm-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-sm-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-sm-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-sm-row>.flex-sm-80{flex:1 1 80%;max-width:80%;max-height:100%;box-sizing:border-box}.layout-sm-column>.flex-sm-80{flex:1 1 80%;max-width:100%;max-height:80%;box-sizing:border-box}.flex-sm-85{flex:1 1 85%;max-width:85%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-85{flex:1 1 85%;max-width:85%;max-height:100%;box-sizing:border-box}.layout-column>.flex-sm-85{flex:1 1 85%;max-width:100%;max-height:85%;box-sizing:border-box}.layout-row>.flex-sm-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-sm-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-sm-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-sm-row>.flex-sm-85{flex:1 1 85%;max-width:85%;max-height:100%;box-sizing:border-box}.layout-sm-column>.flex-sm-85{flex:1 1 85%;max-width:100%;max-height:85%;box-sizing:border-box}.flex-sm-90{flex:1 1 90%;max-width:90%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-90{flex:1 1 90%;max-width:90%;max-height:100%;box-sizing:border-box}.layout-column>.flex-sm-90{flex:1 1 90%;max-width:100%;max-height:90%;box-sizing:border-box}.layout-row>.flex-sm-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-sm-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-sm-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-sm-row>.flex-sm-90{flex:1 1 90%;max-width:90%;max-height:100%;box-sizing:border-box}.layout-sm-column>.flex-sm-90{flex:1 1 90%;max-width:100%;max-height:90%;box-sizing:border-box}.flex-sm-95{flex:1 1 95%;max-width:95%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-95{flex:1 1 95%;max-width:95%;max-height:100%;box-sizing:border-box}.layout-column>.flex-sm-95{flex:1 1 95%;max-width:100%;max-height:95%;box-sizing:border-box}.layout-row>.flex-sm-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-sm-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-sm-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-sm-row>.flex-sm-95{flex:1 1 95%;max-width:95%;max-height:100%;box-sizing:border-box}.layout-sm-column>.flex-sm-95{flex:1 1 95%;max-width:100%;max-height:95%;box-sizing:border-box}.flex-sm-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-column>.flex-sm-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-sm-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-sm-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-sm-row>.flex-sm-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-sm-column>.flex-sm-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-sm-row>.flex-sm-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-sm-row>.flex-sm-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-sm-row>.flex{min-width:0}.layout-sm-column>.flex-sm-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-sm-column>.flex-sm-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-sm-column>.flex{min-height:0}.layout-sm,.layout-sm-column,.layout-sm-row{box-sizing:border-box;display:-webkit-box;display:-webkit-flex;display:-moz-box;display:-ms-flexbox;display:flex}.layout-sm-column{flex-direction:column}.layout-sm-row{flex-direction:row}}@media (min-width:960px){.flex-order-gt-sm--20{order:-20}.flex-order-gt-sm--19{order:-19}.flex-order-gt-sm--18{order:-18}.flex-order-gt-sm--17{order:-17}.flex-order-gt-sm--16{order:-16}.flex-order-gt-sm--15{order:-15}.flex-order-gt-sm--14{order:-14}.flex-order-gt-sm--13{order:-13}.flex-order-gt-sm--12{order:-12}.flex-order-gt-sm--11{order:-11}.flex-order-gt-sm--10{order:-10}.flex-order-gt-sm--9{order:-9}.flex-order-gt-sm--8{order:-8}.flex-order-gt-sm--7{order:-7}.flex-order-gt-sm--6{order:-6}.flex-order-gt-sm--5{order:-5}.flex-order-gt-sm--4{order:-4}.flex-order-gt-sm--3{order:-3}.flex-order-gt-sm--2{order:-2}.flex-order-gt-sm--1{order:-1}.flex-order-gt-sm-0{order:0}.flex-order-gt-sm-1{order:1}.flex-order-gt-sm-2{order:2}.flex-order-gt-sm-3{order:3}.flex-order-gt-sm-4{order:4}.flex-order-gt-sm-5{order:5}.flex-order-gt-sm-6{order:6}.flex-order-gt-sm-7{order:7}.flex-order-gt-sm-8{order:8}.flex-order-gt-sm-9{order:9}.flex-order-gt-sm-10{order:10}.flex-order-gt-sm-11{order:11}.flex-order-gt-sm-12{order:12}.flex-order-gt-sm-13{order:13}.flex-order-gt-sm-14{order:14}.flex-order-gt-sm-15{order:15}.flex-order-gt-sm-16{order:16}.flex-order-gt-sm-17{order:17}.flex-order-gt-sm-18{order:18}.flex-order-gt-sm-19{order:19}.flex-order-gt-sm-20{order:20}.flex-offset-gt-sm-0,.offset-gt-sm-0{margin-left:0}[dir=rtl] .flex-offset-gt-sm-0,[dir=rtl] .offset-gt-sm-0{margin-left:auto;margin-right:0}.flex-offset-gt-sm-5,.offset-gt-sm-5{margin-left:5%}[dir=rtl] .flex-offset-gt-sm-5,[dir=rtl] .offset-gt-sm-5{margin-left:auto;margin-right:5%}.flex-offset-gt-sm-10,.offset-gt-sm-10{margin-left:10%}[dir=rtl] .flex-offset-gt-sm-10,[dir=rtl] .offset-gt-sm-10{margin-left:auto;margin-right:10%}.flex-offset-gt-sm-15,.offset-gt-sm-15{margin-left:15%}[dir=rtl] .flex-offset-gt-sm-15,[dir=rtl] .offset-gt-sm-15{margin-left:auto;margin-right:15%}.flex-offset-gt-sm-20,.offset-gt-sm-20{margin-left:20%}[dir=rtl] .flex-offset-gt-sm-20,[dir=rtl] .offset-gt-sm-20{margin-left:auto;margin-right:20%}.flex-offset-gt-sm-25,.offset-gt-sm-25{margin-left:25%}[dir=rtl] .flex-offset-gt-sm-25,[dir=rtl] .offset-gt-sm-25{margin-left:auto;margin-right:25%}.flex-offset-gt-sm-30,.offset-gt-sm-30{margin-left:30%}[dir=rtl] .flex-offset-gt-sm-30,[dir=rtl] .offset-gt-sm-30{margin-left:auto;margin-right:30%}.flex-offset-gt-sm-35,.offset-gt-sm-35{margin-left:35%}[dir=rtl] .flex-offset-gt-sm-35,[dir=rtl] .offset-gt-sm-35{margin-left:auto;margin-right:35%}.flex-offset-gt-sm-40,.offset-gt-sm-40{margin-left:40%}[dir=rtl] .flex-offset-gt-sm-40,[dir=rtl] .offset-gt-sm-40{margin-left:auto;margin-right:40%}.flex-offset-gt-sm-45,.offset-gt-sm-45{margin-left:45%}[dir=rtl] .flex-offset-gt-sm-45,[dir=rtl] .offset-gt-sm-45{margin-left:auto;margin-right:45%}.flex-offset-gt-sm-50,.offset-gt-sm-50{margin-left:50%}[dir=rtl] .flex-offset-gt-sm-50,[dir=rtl] .offset-gt-sm-50{margin-left:auto;margin-right:50%}.flex-offset-gt-sm-55,.offset-gt-sm-55{margin-left:55%}[dir=rtl] .flex-offset-gt-sm-55,[dir=rtl] .offset-gt-sm-55{margin-left:auto;margin-right:55%}.flex-offset-gt-sm-60,.offset-gt-sm-60{margin-left:60%}[dir=rtl] .flex-offset-gt-sm-60,[dir=rtl] .offset-gt-sm-60{margin-left:auto;margin-right:60%}.flex-offset-gt-sm-65,.offset-gt-sm-65{margin-left:65%}[dir=rtl] .flex-offset-gt-sm-65,[dir=rtl] .offset-gt-sm-65{margin-left:auto;margin-right:65%}.flex-offset-gt-sm-70,.offset-gt-sm-70{margin-left:70%}[dir=rtl] .flex-offset-gt-sm-70,[dir=rtl] .offset-gt-sm-70{margin-left:auto;margin-right:70%}.flex-offset-gt-sm-75,.offset-gt-sm-75{margin-left:75%}[dir=rtl] .flex-offset-gt-sm-75,[dir=rtl] .offset-gt-sm-75{margin-left:auto;margin-right:75%}.flex-offset-gt-sm-80,.offset-gt-sm-80{margin-left:80%}[dir=rtl] .flex-offset-gt-sm-80,[dir=rtl] .offset-gt-sm-80{margin-left:auto;margin-right:80%}.flex-offset-gt-sm-85,.offset-gt-sm-85{margin-left:85%}[dir=rtl] .flex-offset-gt-sm-85,[dir=rtl] .offset-gt-sm-85{margin-left:auto;margin-right:85%}.flex-offset-gt-sm-90,.offset-gt-sm-90{margin-left:90%}[dir=rtl] .flex-offset-gt-sm-90,[dir=rtl] .offset-gt-sm-90{margin-left:auto;margin-right:90%}.flex-offset-gt-sm-95,.offset-gt-sm-95{margin-left:95%}[dir=rtl] .flex-offset-gt-sm-95,[dir=rtl] .offset-gt-sm-95{margin-left:auto;margin-right:95%}.flex-offset-gt-sm-33,.offset-gt-sm-33{margin-left:calc(100% / 3)}.flex-offset-gt-sm-66,.offset-gt-sm-66{margin-left:calc(200% / 3)}[dir=rtl] .flex-offset-gt-sm-66,[dir=rtl] .offset-gt-sm-66{margin-left:auto;margin-right:calc(200% / 3)}.layout-align-gt-sm,.layout-align-gt-sm-start-stretch{justify-content:flex-start;align-content:stretch;align-items:stretch}.layout-align-gt-sm-start,.layout-align-gt-sm-start-center,.layout-align-gt-sm-start-end,.layout-align-gt-sm-start-start,.layout-align-gt-sm-start-stretch{justify-content:flex-start}.layout-align-gt-sm-center,.layout-align-gt-sm-center-center,.layout-align-gt-sm-center-end,.layout-align-gt-sm-center-start,.layout-align-gt-sm-center-stretch{justify-content:center}.layout-align-gt-sm-end,.layout-align-gt-sm-end-center,.layout-align-gt-sm-end-end,.layout-align-gt-sm-end-start,.layout-align-gt-sm-end-stretch{justify-content:flex-end}.layout-align-gt-sm-space-around,.layout-align-gt-sm-space-around-center,.layout-align-gt-sm-space-around-end,.layout-align-gt-sm-space-around-start,.layout-align-gt-sm-space-around-stretch{justify-content:space-around}.layout-align-gt-sm-space-between,.layout-align-gt-sm-space-between-center,.layout-align-gt-sm-space-between-end,.layout-align-gt-sm-space-between-start,.layout-align-gt-sm-space-between-stretch{justify-content:space-between}.layout-align-gt-sm-center-start,.layout-align-gt-sm-end-start,.layout-align-gt-sm-space-around-start,.layout-align-gt-sm-space-between-start,.layout-align-gt-sm-start-start{align-items:flex-start;align-content:flex-start}.layout-align-gt-sm-center-center,.layout-align-gt-sm-end-center,.layout-align-gt-sm-space-around-center,.layout-align-gt-sm-space-between-center,.layout-align-gt-sm-start-center{align-items:center;align-content:center;max-width:100%}.layout-align-gt-sm-center-center>*,.layout-align-gt-sm-end-center>*,.layout-align-gt-sm-space-around-center>*,.layout-align-gt-sm-space-between-center>*,.layout-align-gt-sm-start-center>*{max-width:100%;box-sizing:border-box}.layout-align-gt-sm-center-end,.layout-align-gt-sm-end-end,.layout-align-gt-sm-space-around-end,.layout-align-gt-sm-space-between-end,.layout-align-gt-sm-start-end{align-items:flex-end;align-content:flex-end}.layout-align-gt-sm-center-stretch,.layout-align-gt-sm-end-stretch,.layout-align-gt-sm-space-around-stretch,.layout-align-gt-sm-space-between-stretch,.layout-align-gt-sm-start-stretch{align-items:stretch;align-content:stretch}.flex-gt-sm{flex:1;box-sizing:border-box}.flex-gt-sm-grow{flex:1 1 100%;box-sizing:border-box}.flex-gt-sm-initial{flex:0 1 auto;box-sizing:border-box}.flex-gt-sm-auto{flex:1 1 auto;box-sizing:border-box}.flex-gt-sm-none{flex:0 0 auto;box-sizing:border-box}.flex-gt-sm-noshrink{flex:1 0 auto;box-sizing:border-box}.flex-gt-sm-nogrow{flex:0 1 auto;box-sizing:border-box}.flex-gt-sm-0{flex:1 1 0%;max-width:0%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-0{flex:1 1 0%;max-width:0%;max-height:100%;box-sizing:border-box;min-width:0}.layout-column>.flex-gt-sm-0{flex:1 1 0%;max-width:100%;max-height:0%;box-sizing:border-box}.layout-row>.flex-gt-sm-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-sm-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-sm-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-sm-row>.flex-gt-sm-0{flex:1 1 0%;max-width:0%;max-height:100%;box-sizing:border-box;min-width:0}.layout-gt-sm-column>.flex-gt-sm-0{flex:1 1 0%;max-width:100%;max-height:0%;box-sizing:border-box;min-height:0}.flex-gt-sm-5{flex:1 1 5%;max-width:5%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-5{flex:1 1 5%;max-width:5%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-sm-5{flex:1 1 5%;max-width:100%;max-height:5%;box-sizing:border-box}.layout-row>.flex-gt-sm-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-sm-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-sm-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-sm-row>.flex-gt-sm-5{flex:1 1 5%;max-width:5%;max-height:100%;box-sizing:border-box}.layout-gt-sm-column>.flex-gt-sm-5{flex:1 1 5%;max-width:100%;max-height:5%;box-sizing:border-box}.flex-gt-sm-10{flex:1 1 10%;max-width:10%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-10{flex:1 1 10%;max-width:10%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-sm-10{flex:1 1 10%;max-width:100%;max-height:10%;box-sizing:border-box}.layout-row>.flex-gt-sm-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-sm-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-sm-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-sm-row>.flex-gt-sm-10{flex:1 1 10%;max-width:10%;max-height:100%;box-sizing:border-box}.layout-gt-sm-column>.flex-gt-sm-10{flex:1 1 10%;max-width:100%;max-height:10%;box-sizing:border-box}.flex-gt-sm-15{flex:1 1 15%;max-width:15%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-15{flex:1 1 15%;max-width:15%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-sm-15{flex:1 1 15%;max-width:100%;max-height:15%;box-sizing:border-box}.layout-row>.flex-gt-sm-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-sm-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-sm-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-sm-row>.flex-gt-sm-15{flex:1 1 15%;max-width:15%;max-height:100%;box-sizing:border-box}.layout-gt-sm-column>.flex-gt-sm-15{flex:1 1 15%;max-width:100%;max-height:15%;box-sizing:border-box}.flex-gt-sm-20{flex:1 1 20%;max-width:20%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-20{flex:1 1 20%;max-width:20%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-sm-20{flex:1 1 20%;max-width:100%;max-height:20%;box-sizing:border-box}.layout-row>.flex-gt-sm-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-sm-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-sm-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-sm-row>.flex-gt-sm-20{flex:1 1 20%;max-width:20%;max-height:100%;box-sizing:border-box}.layout-gt-sm-column>.flex-gt-sm-20{flex:1 1 20%;max-width:100%;max-height:20%;box-sizing:border-box}.flex-gt-sm-25{flex:1 1 25%;max-width:25%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-25{flex:1 1 25%;max-width:25%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-sm-25{flex:1 1 25%;max-width:100%;max-height:25%;box-sizing:border-box}.layout-row>.flex-gt-sm-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-sm-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-sm-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-sm-row>.flex-gt-sm-25{flex:1 1 25%;max-width:25%;max-height:100%;box-sizing:border-box}.layout-gt-sm-column>.flex-gt-sm-25{flex:1 1 25%;max-width:100%;max-height:25%;box-sizing:border-box}.flex-gt-sm-30{flex:1 1 30%;max-width:30%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-30{flex:1 1 30%;max-width:30%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-sm-30{flex:1 1 30%;max-width:100%;max-height:30%;box-sizing:border-box}.layout-row>.flex-gt-sm-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-sm-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-sm-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-sm-row>.flex-gt-sm-30{flex:1 1 30%;max-width:30%;max-height:100%;box-sizing:border-box}.layout-gt-sm-column>.flex-gt-sm-30{flex:1 1 30%;max-width:100%;max-height:30%;box-sizing:border-box}.flex-gt-sm-35{flex:1 1 35%;max-width:35%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-35{flex:1 1 35%;max-width:35%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-sm-35{flex:1 1 35%;max-width:100%;max-height:35%;box-sizing:border-box}.layout-row>.flex-gt-sm-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-sm-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-sm-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-sm-row>.flex-gt-sm-35{flex:1 1 35%;max-width:35%;max-height:100%;box-sizing:border-box}.layout-gt-sm-column>.flex-gt-sm-35{flex:1 1 35%;max-width:100%;max-height:35%;box-sizing:border-box}.flex-gt-sm-40{flex:1 1 40%;max-width:40%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-40{flex:1 1 40%;max-width:40%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-sm-40{flex:1 1 40%;max-width:100%;max-height:40%;box-sizing:border-box}.layout-row>.flex-gt-sm-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-sm-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-sm-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-sm-row>.flex-gt-sm-40{flex:1 1 40%;max-width:40%;max-height:100%;box-sizing:border-box}.layout-gt-sm-column>.flex-gt-sm-40{flex:1 1 40%;max-width:100%;max-height:40%;box-sizing:border-box}.flex-gt-sm-45{flex:1 1 45%;max-width:45%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-45{flex:1 1 45%;max-width:45%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-sm-45{flex:1 1 45%;max-width:100%;max-height:45%;box-sizing:border-box}.layout-row>.flex-gt-sm-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-sm-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-sm-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-sm-row>.flex-gt-sm-45{flex:1 1 45%;max-width:45%;max-height:100%;box-sizing:border-box}.layout-gt-sm-column>.flex-gt-sm-45{flex:1 1 45%;max-width:100%;max-height:45%;box-sizing:border-box}.flex-gt-sm-50{flex:1 1 50%;max-width:50%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-50{flex:1 1 50%;max-width:50%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-sm-50{flex:1 1 50%;max-width:100%;max-height:50%;box-sizing:border-box}.layout-row>.flex-gt-sm-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-sm-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-sm-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-sm-row>.flex-gt-sm-50{flex:1 1 50%;max-width:50%;max-height:100%;box-sizing:border-box}.layout-gt-sm-column>.flex-gt-sm-50{flex:1 1 50%;max-width:100%;max-height:50%;box-sizing:border-box}.flex-gt-sm-55{flex:1 1 55%;max-width:55%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-55{flex:1 1 55%;max-width:55%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-sm-55{flex:1 1 55%;max-width:100%;max-height:55%;box-sizing:border-box}.layout-row>.flex-gt-sm-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-sm-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-sm-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-sm-row>.flex-gt-sm-55{flex:1 1 55%;max-width:55%;max-height:100%;box-sizing:border-box}.layout-gt-sm-column>.flex-gt-sm-55{flex:1 1 55%;max-width:100%;max-height:55%;box-sizing:border-box}.flex-gt-sm-60{flex:1 1 60%;max-width:60%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-60{flex:1 1 60%;max-width:60%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-sm-60{flex:1 1 60%;max-width:100%;max-height:60%;box-sizing:border-box}.layout-row>.flex-gt-sm-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-sm-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-sm-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-sm-row>.flex-gt-sm-60{flex:1 1 60%;max-width:60%;max-height:100%;box-sizing:border-box}.layout-gt-sm-column>.flex-gt-sm-60{flex:1 1 60%;max-width:100%;max-height:60%;box-sizing:border-box}.flex-gt-sm-65{flex:1 1 65%;max-width:65%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-65{flex:1 1 65%;max-width:65%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-sm-65{flex:1 1 65%;max-width:100%;max-height:65%;box-sizing:border-box}.layout-row>.flex-gt-sm-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-sm-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-sm-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-sm-row>.flex-gt-sm-65{flex:1 1 65%;max-width:65%;max-height:100%;box-sizing:border-box}.layout-gt-sm-column>.flex-gt-sm-65{flex:1 1 65%;max-width:100%;max-height:65%;box-sizing:border-box}.flex-gt-sm-70{flex:1 1 70%;max-width:70%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-70{flex:1 1 70%;max-width:70%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-sm-70{flex:1 1 70%;max-width:100%;max-height:70%;box-sizing:border-box}.layout-row>.flex-gt-sm-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-sm-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-sm-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-sm-row>.flex-gt-sm-70{flex:1 1 70%;max-width:70%;max-height:100%;box-sizing:border-box}.layout-gt-sm-column>.flex-gt-sm-70{flex:1 1 70%;max-width:100%;max-height:70%;box-sizing:border-box}.flex-gt-sm-75{flex:1 1 75%;max-width:75%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-75{flex:1 1 75%;max-width:75%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-sm-75{flex:1 1 75%;max-width:100%;max-height:75%;box-sizing:border-box}.layout-row>.flex-gt-sm-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-sm-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-sm-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-sm-row>.flex-gt-sm-75{flex:1 1 75%;max-width:75%;max-height:100%;box-sizing:border-box}.layout-gt-sm-column>.flex-gt-sm-75{flex:1 1 75%;max-width:100%;max-height:75%;box-sizing:border-box}.flex-gt-sm-80{flex:1 1 80%;max-width:80%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-80{flex:1 1 80%;max-width:80%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-sm-80{flex:1 1 80%;max-width:100%;max-height:80%;box-sizing:border-box}.layout-row>.flex-gt-sm-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-sm-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-sm-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-sm-row>.flex-gt-sm-80{flex:1 1 80%;max-width:80%;max-height:100%;box-sizing:border-box}.layout-gt-sm-column>.flex-gt-sm-80{flex:1 1 80%;max-width:100%;max-height:80%;box-sizing:border-box}.flex-gt-sm-85{flex:1 1 85%;max-width:85%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-85{flex:1 1 85%;max-width:85%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-sm-85{flex:1 1 85%;max-width:100%;max-height:85%;box-sizing:border-box}.layout-row>.flex-gt-sm-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-sm-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-sm-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-sm-row>.flex-gt-sm-85{flex:1 1 85%;max-width:85%;max-height:100%;box-sizing:border-box}.layout-gt-sm-column>.flex-gt-sm-85{flex:1 1 85%;max-width:100%;max-height:85%;box-sizing:border-box}.flex-gt-sm-90{flex:1 1 90%;max-width:90%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-90{flex:1 1 90%;max-width:90%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-sm-90{flex:1 1 90%;max-width:100%;max-height:90%;box-sizing:border-box}.layout-row>.flex-gt-sm-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-sm-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-sm-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-sm-row>.flex-gt-sm-90{flex:1 1 90%;max-width:90%;max-height:100%;box-sizing:border-box}.layout-gt-sm-column>.flex-gt-sm-90{flex:1 1 90%;max-width:100%;max-height:90%;box-sizing:border-box}.flex-gt-sm-95{flex:1 1 95%;max-width:95%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-95{flex:1 1 95%;max-width:95%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-sm-95{flex:1 1 95%;max-width:100%;max-height:95%;box-sizing:border-box}.layout-row>.flex-gt-sm-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-sm-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-sm-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-sm-row>.flex-gt-sm-95{flex:1 1 95%;max-width:95%;max-height:100%;box-sizing:border-box}.layout-gt-sm-column>.flex-gt-sm-95{flex:1 1 95%;max-width:100%;max-height:95%;box-sizing:border-box}.flex-gt-sm-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-sm-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-sm-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-sm-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-sm-row>.flex-gt-sm-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-gt-sm-column>.flex-gt-sm-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-gt-sm-row>.flex-gt-sm-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-gt-sm-row>.flex-gt-sm-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-gt-sm-row>.flex{min-width:0}.layout-gt-sm-column>.flex-gt-sm-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-gt-sm-column>.flex-gt-sm-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-sm-column>.flex{min-height:0}.layout-gt-sm,.layout-gt-sm-column,.layout-gt-sm-row{box-sizing:border-box;display:-webkit-box;display:-webkit-flex;display:-moz-box;display:-ms-flexbox;display:flex}.layout-gt-sm-column{flex-direction:column}.layout-gt-sm-row{flex-direction:row}}@media (min-width:960px) and (max-width:1279px){.hide-gt-sm:not(.show-gt-xs):not(.show-gt-sm):not(.show-md):not(.show),.hide-gt-xs:not(.show-gt-xs):not(.show-gt-sm):not(.show-md):not(.show),.hide:not(.show-gt-xs):not(.show-gt-sm):not(.show-md):not(.show){display:none}.hide-md:not(.show-md):not(.show-gt-sm):not(.show-gt-xs):not(.show){display:none}.flex-order-md--20{order:-20}.flex-order-md--19{order:-19}.flex-order-md--18{order:-18}.flex-order-md--17{order:-17}.flex-order-md--16{order:-16}.flex-order-md--15{order:-15}.flex-order-md--14{order:-14}.flex-order-md--13{order:-13}.flex-order-md--12{order:-12}.flex-order-md--11{order:-11}.flex-order-md--10{order:-10}.flex-order-md--9{order:-9}.flex-order-md--8{order:-8}.flex-order-md--7{order:-7}.flex-order-md--6{order:-6}.flex-order-md--5{order:-5}.flex-order-md--4{order:-4}.flex-order-md--3{order:-3}.flex-order-md--2{order:-2}.flex-order-md--1{order:-1}.flex-order-md-0{order:0}.flex-order-md-1{order:1}.flex-order-md-2{order:2}.flex-order-md-3{order:3}.flex-order-md-4{order:4}.flex-order-md-5{order:5}.flex-order-md-6{order:6}.flex-order-md-7{order:7}.flex-order-md-8{order:8}.flex-order-md-9{order:9}.flex-order-md-10{order:10}.flex-order-md-11{order:11}.flex-order-md-12{order:12}.flex-order-md-13{order:13}.flex-order-md-14{order:14}.flex-order-md-15{order:15}.flex-order-md-16{order:16}.flex-order-md-17{order:17}.flex-order-md-18{order:18}.flex-order-md-19{order:19}.flex-order-md-20{order:20}.flex-offset-md-0,.offset-md-0{margin-left:0}[dir=rtl] .flex-offset-md-0,[dir=rtl] .offset-md-0{margin-left:auto;margin-right:0}.flex-offset-md-5,.offset-md-5{margin-left:5%}[dir=rtl] .flex-offset-md-5,[dir=rtl] .offset-md-5{margin-left:auto;margin-right:5%}.flex-offset-md-10,.offset-md-10{margin-left:10%}[dir=rtl] .flex-offset-md-10,[dir=rtl] .offset-md-10{margin-left:auto;margin-right:10%}.flex-offset-md-15,.offset-md-15{margin-left:15%}[dir=rtl] .flex-offset-md-15,[dir=rtl] .offset-md-15{margin-left:auto;margin-right:15%}.flex-offset-md-20,.offset-md-20{margin-left:20%}[dir=rtl] .flex-offset-md-20,[dir=rtl] .offset-md-20{margin-left:auto;margin-right:20%}.flex-offset-md-25,.offset-md-25{margin-left:25%}[dir=rtl] .flex-offset-md-25,[dir=rtl] .offset-md-25{margin-left:auto;margin-right:25%}.flex-offset-md-30,.offset-md-30{margin-left:30%}[dir=rtl] .flex-offset-md-30,[dir=rtl] .offset-md-30{margin-left:auto;margin-right:30%}.flex-offset-md-35,.offset-md-35{margin-left:35%}[dir=rtl] .flex-offset-md-35,[dir=rtl] .offset-md-35{margin-left:auto;margin-right:35%}.flex-offset-md-40,.offset-md-40{margin-left:40%}[dir=rtl] .flex-offset-md-40,[dir=rtl] .offset-md-40{margin-left:auto;margin-right:40%}.flex-offset-md-45,.offset-md-45{margin-left:45%}[dir=rtl] .flex-offset-md-45,[dir=rtl] .offset-md-45{margin-left:auto;margin-right:45%}.flex-offset-md-50,.offset-md-50{margin-left:50%}[dir=rtl] .flex-offset-md-50,[dir=rtl] .offset-md-50{margin-left:auto;margin-right:50%}.flex-offset-md-55,.offset-md-55{margin-left:55%}[dir=rtl] .flex-offset-md-55,[dir=rtl] .offset-md-55{margin-left:auto;margin-right:55%}.flex-offset-md-60,.offset-md-60{margin-left:60%}[dir=rtl] .flex-offset-md-60,[dir=rtl] .offset-md-60{margin-left:auto;margin-right:60%}.flex-offset-md-65,.offset-md-65{margin-left:65%}[dir=rtl] .flex-offset-md-65,[dir=rtl] .offset-md-65{margin-left:auto;margin-right:65%}.flex-offset-md-70,.offset-md-70{margin-left:70%}[dir=rtl] .flex-offset-md-70,[dir=rtl] .offset-md-70{margin-left:auto;margin-right:70%}.flex-offset-md-75,.offset-md-75{margin-left:75%}[dir=rtl] .flex-offset-md-75,[dir=rtl] .offset-md-75{margin-left:auto;margin-right:75%}.flex-offset-md-80,.offset-md-80{margin-left:80%}[dir=rtl] .flex-offset-md-80,[dir=rtl] .offset-md-80{margin-left:auto;margin-right:80%}.flex-offset-md-85,.offset-md-85{margin-left:85%}[dir=rtl] .flex-offset-md-85,[dir=rtl] .offset-md-85{margin-left:auto;margin-right:85%}.flex-offset-md-90,.offset-md-90{margin-left:90%}[dir=rtl] .flex-offset-md-90,[dir=rtl] .offset-md-90{margin-left:auto;margin-right:90%}.flex-offset-md-95,.offset-md-95{margin-left:95%}[dir=rtl] .flex-offset-md-95,[dir=rtl] .offset-md-95{margin-left:auto;margin-right:95%}.flex-offset-md-33,.offset-md-33{margin-left:calc(100% / 3)}.flex-offset-md-66,.offset-md-66{margin-left:calc(200% / 3)}[dir=rtl] .flex-offset-md-66,[dir=rtl] .offset-md-66{margin-left:auto;margin-right:calc(200% / 3)}.layout-align-md,.layout-align-md-start-stretch{justify-content:flex-start;align-content:stretch;align-items:stretch}.layout-align-md-start,.layout-align-md-start-center,.layout-align-md-start-end,.layout-align-md-start-start,.layout-align-md-start-stretch{justify-content:flex-start}.layout-align-md-center,.layout-align-md-center-center,.layout-align-md-center-end,.layout-align-md-center-start,.layout-align-md-center-stretch{justify-content:center}.layout-align-md-end,.layout-align-md-end-center,.layout-align-md-end-end,.layout-align-md-end-start,.layout-align-md-end-stretch{justify-content:flex-end}.layout-align-md-space-around,.layout-align-md-space-around-center,.layout-align-md-space-around-end,.layout-align-md-space-around-start,.layout-align-md-space-around-stretch{justify-content:space-around}.layout-align-md-space-between,.layout-align-md-space-between-center,.layout-align-md-space-between-end,.layout-align-md-space-between-start,.layout-align-md-space-between-stretch{justify-content:space-between}.layout-align-md-center-start,.layout-align-md-end-start,.layout-align-md-space-around-start,.layout-align-md-space-between-start,.layout-align-md-start-start{align-items:flex-start;align-content:flex-start}.layout-align-md-center-center,.layout-align-md-end-center,.layout-align-md-space-around-center,.layout-align-md-space-between-center,.layout-align-md-start-center{align-items:center;align-content:center;max-width:100%}.layout-align-md-center-center>*,.layout-align-md-end-center>*,.layout-align-md-space-around-center>*,.layout-align-md-space-between-center>*,.layout-align-md-start-center>*{max-width:100%;box-sizing:border-box}.layout-align-md-center-end,.layout-align-md-end-end,.layout-align-md-space-around-end,.layout-align-md-space-between-end,.layout-align-md-start-end{align-items:flex-end;align-content:flex-end}.layout-align-md-center-stretch,.layout-align-md-end-stretch,.layout-align-md-space-around-stretch,.layout-align-md-space-between-stretch,.layout-align-md-start-stretch{align-items:stretch;align-content:stretch}.flex-md{flex:1;box-sizing:border-box}.flex-md-grow{flex:1 1 100%;box-sizing:border-box}.flex-md-initial{flex:0 1 auto;box-sizing:border-box}.flex-md-auto{flex:1 1 auto;box-sizing:border-box}.flex-md-none{flex:0 0 auto;box-sizing:border-box}.flex-md-noshrink{flex:1 0 auto;box-sizing:border-box}.flex-md-nogrow{flex:0 1 auto;box-sizing:border-box}.flex-md-0{flex:1 1 0%;max-width:0%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-0{flex:1 1 0%;max-width:0%;max-height:100%;box-sizing:border-box;min-width:0}.layout-column>.flex-md-0{flex:1 1 0%;max-width:100%;max-height:0%;box-sizing:border-box}.layout-row>.flex-md-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-md-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-md-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-md-row>.flex-md-0{flex:1 1 0%;max-width:0%;max-height:100%;box-sizing:border-box;min-width:0}.layout-md-column>.flex-md-0{flex:1 1 0%;max-width:100%;max-height:0%;box-sizing:border-box;min-height:0}.flex-md-5{flex:1 1 5%;max-width:5%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-5{flex:1 1 5%;max-width:5%;max-height:100%;box-sizing:border-box}.layout-column>.flex-md-5{flex:1 1 5%;max-width:100%;max-height:5%;box-sizing:border-box}.layout-row>.flex-md-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-md-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-md-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-md-row>.flex-md-5{flex:1 1 5%;max-width:5%;max-height:100%;box-sizing:border-box}.layout-md-column>.flex-md-5{flex:1 1 5%;max-width:100%;max-height:5%;box-sizing:border-box}.flex-md-10{flex:1 1 10%;max-width:10%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-10{flex:1 1 10%;max-width:10%;max-height:100%;box-sizing:border-box}.layout-column>.flex-md-10{flex:1 1 10%;max-width:100%;max-height:10%;box-sizing:border-box}.layout-row>.flex-md-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-md-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-md-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-md-row>.flex-md-10{flex:1 1 10%;max-width:10%;max-height:100%;box-sizing:border-box}.layout-md-column>.flex-md-10{flex:1 1 10%;max-width:100%;max-height:10%;box-sizing:border-box}.flex-md-15{flex:1 1 15%;max-width:15%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-15{flex:1 1 15%;max-width:15%;max-height:100%;box-sizing:border-box}.layout-column>.flex-md-15{flex:1 1 15%;max-width:100%;max-height:15%;box-sizing:border-box}.layout-row>.flex-md-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-md-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-md-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-md-row>.flex-md-15{flex:1 1 15%;max-width:15%;max-height:100%;box-sizing:border-box}.layout-md-column>.flex-md-15{flex:1 1 15%;max-width:100%;max-height:15%;box-sizing:border-box}.flex-md-20{flex:1 1 20%;max-width:20%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-20{flex:1 1 20%;max-width:20%;max-height:100%;box-sizing:border-box}.layout-column>.flex-md-20{flex:1 1 20%;max-width:100%;max-height:20%;box-sizing:border-box}.layout-row>.flex-md-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-md-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-md-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-md-row>.flex-md-20{flex:1 1 20%;max-width:20%;max-height:100%;box-sizing:border-box}.layout-md-column>.flex-md-20{flex:1 1 20%;max-width:100%;max-height:20%;box-sizing:border-box}.flex-md-25{flex:1 1 25%;max-width:25%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-25{flex:1 1 25%;max-width:25%;max-height:100%;box-sizing:border-box}.layout-column>.flex-md-25{flex:1 1 25%;max-width:100%;max-height:25%;box-sizing:border-box}.layout-row>.flex-md-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-md-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-md-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-md-row>.flex-md-25{flex:1 1 25%;max-width:25%;max-height:100%;box-sizing:border-box}.layout-md-column>.flex-md-25{flex:1 1 25%;max-width:100%;max-height:25%;box-sizing:border-box}.flex-md-30{flex:1 1 30%;max-width:30%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-30{flex:1 1 30%;max-width:30%;max-height:100%;box-sizing:border-box}.layout-column>.flex-md-30{flex:1 1 30%;max-width:100%;max-height:30%;box-sizing:border-box}.layout-row>.flex-md-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-md-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-md-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-md-row>.flex-md-30{flex:1 1 30%;max-width:30%;max-height:100%;box-sizing:border-box}.layout-md-column>.flex-md-30{flex:1 1 30%;max-width:100%;max-height:30%;box-sizing:border-box}.flex-md-35{flex:1 1 35%;max-width:35%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-35{flex:1 1 35%;max-width:35%;max-height:100%;box-sizing:border-box}.layout-column>.flex-md-35{flex:1 1 35%;max-width:100%;max-height:35%;box-sizing:border-box}.layout-row>.flex-md-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-md-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-md-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-md-row>.flex-md-35{flex:1 1 35%;max-width:35%;max-height:100%;box-sizing:border-box}.layout-md-column>.flex-md-35{flex:1 1 35%;max-width:100%;max-height:35%;box-sizing:border-box}.flex-md-40{flex:1 1 40%;max-width:40%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-40{flex:1 1 40%;max-width:40%;max-height:100%;box-sizing:border-box}.layout-column>.flex-md-40{flex:1 1 40%;max-width:100%;max-height:40%;box-sizing:border-box}.layout-row>.flex-md-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-md-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-md-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-md-row>.flex-md-40{flex:1 1 40%;max-width:40%;max-height:100%;box-sizing:border-box}.layout-md-column>.flex-md-40{flex:1 1 40%;max-width:100%;max-height:40%;box-sizing:border-box}.flex-md-45{flex:1 1 45%;max-width:45%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-45{flex:1 1 45%;max-width:45%;max-height:100%;box-sizing:border-box}.layout-column>.flex-md-45{flex:1 1 45%;max-width:100%;max-height:45%;box-sizing:border-box}.layout-row>.flex-md-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-md-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-md-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-md-row>.flex-md-45{flex:1 1 45%;max-width:45%;max-height:100%;box-sizing:border-box}.layout-md-column>.flex-md-45{flex:1 1 45%;max-width:100%;max-height:45%;box-sizing:border-box}.flex-md-50{flex:1 1 50%;max-width:50%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-50{flex:1 1 50%;max-width:50%;max-height:100%;box-sizing:border-box}.layout-column>.flex-md-50{flex:1 1 50%;max-width:100%;max-height:50%;box-sizing:border-box}.layout-row>.flex-md-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-md-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-md-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-md-row>.flex-md-50{flex:1 1 50%;max-width:50%;max-height:100%;box-sizing:border-box}.layout-md-column>.flex-md-50{flex:1 1 50%;max-width:100%;max-height:50%;box-sizing:border-box}.flex-md-55{flex:1 1 55%;max-width:55%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-55{flex:1 1 55%;max-width:55%;max-height:100%;box-sizing:border-box}.layout-column>.flex-md-55{flex:1 1 55%;max-width:100%;max-height:55%;box-sizing:border-box}.layout-row>.flex-md-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-md-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-md-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-md-row>.flex-md-55{flex:1 1 55%;max-width:55%;max-height:100%;box-sizing:border-box}.layout-md-column>.flex-md-55{flex:1 1 55%;max-width:100%;max-height:55%;box-sizing:border-box}.flex-md-60{flex:1 1 60%;max-width:60%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-60{flex:1 1 60%;max-width:60%;max-height:100%;box-sizing:border-box}.layout-column>.flex-md-60{flex:1 1 60%;max-width:100%;max-height:60%;box-sizing:border-box}.layout-row>.flex-md-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-md-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-md-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-md-row>.flex-md-60{flex:1 1 60%;max-width:60%;max-height:100%;box-sizing:border-box}.layout-md-column>.flex-md-60{flex:1 1 60%;max-width:100%;max-height:60%;box-sizing:border-box}.flex-md-65{flex:1 1 65%;max-width:65%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-65{flex:1 1 65%;max-width:65%;max-height:100%;box-sizing:border-box}.layout-column>.flex-md-65{flex:1 1 65%;max-width:100%;max-height:65%;box-sizing:border-box}.layout-row>.flex-md-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-md-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-md-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-md-row>.flex-md-65{flex:1 1 65%;max-width:65%;max-height:100%;box-sizing:border-box}.layout-md-column>.flex-md-65{flex:1 1 65%;max-width:100%;max-height:65%;box-sizing:border-box}.flex-md-70{flex:1 1 70%;max-width:70%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-70{flex:1 1 70%;max-width:70%;max-height:100%;box-sizing:border-box}.layout-column>.flex-md-70{flex:1 1 70%;max-width:100%;max-height:70%;box-sizing:border-box}.layout-row>.flex-md-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-md-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-md-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-md-row>.flex-md-70{flex:1 1 70%;max-width:70%;max-height:100%;box-sizing:border-box}.layout-md-column>.flex-md-70{flex:1 1 70%;max-width:100%;max-height:70%;box-sizing:border-box}.flex-md-75{flex:1 1 75%;max-width:75%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-75{flex:1 1 75%;max-width:75%;max-height:100%;box-sizing:border-box}.layout-column>.flex-md-75{flex:1 1 75%;max-width:100%;max-height:75%;box-sizing:border-box}.layout-row>.flex-md-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-md-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-md-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-md-row>.flex-md-75{flex:1 1 75%;max-width:75%;max-height:100%;box-sizing:border-box}.layout-md-column>.flex-md-75{flex:1 1 75%;max-width:100%;max-height:75%;box-sizing:border-box}.flex-md-80{flex:1 1 80%;max-width:80%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-80{flex:1 1 80%;max-width:80%;max-height:100%;box-sizing:border-box}.layout-column>.flex-md-80{flex:1 1 80%;max-width:100%;max-height:80%;box-sizing:border-box}.layout-row>.flex-md-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-md-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-md-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-md-row>.flex-md-80{flex:1 1 80%;max-width:80%;max-height:100%;box-sizing:border-box}.layout-md-column>.flex-md-80{flex:1 1 80%;max-width:100%;max-height:80%;box-sizing:border-box}.flex-md-85{flex:1 1 85%;max-width:85%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-85{flex:1 1 85%;max-width:85%;max-height:100%;box-sizing:border-box}.layout-column>.flex-md-85{flex:1 1 85%;max-width:100%;max-height:85%;box-sizing:border-box}.layout-row>.flex-md-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-md-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-md-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-md-row>.flex-md-85{flex:1 1 85%;max-width:85%;max-height:100%;box-sizing:border-box}.layout-md-column>.flex-md-85{flex:1 1 85%;max-width:100%;max-height:85%;box-sizing:border-box}.flex-md-90{flex:1 1 90%;max-width:90%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-90{flex:1 1 90%;max-width:90%;max-height:100%;box-sizing:border-box}.layout-column>.flex-md-90{flex:1 1 90%;max-width:100%;max-height:90%;box-sizing:border-box}.layout-row>.flex-md-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-md-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-md-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-md-row>.flex-md-90{flex:1 1 90%;max-width:90%;max-height:100%;box-sizing:border-box}.layout-md-column>.flex-md-90{flex:1 1 90%;max-width:100%;max-height:90%;box-sizing:border-box}.flex-md-95{flex:1 1 95%;max-width:95%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-95{flex:1 1 95%;max-width:95%;max-height:100%;box-sizing:border-box}.layout-column>.flex-md-95{flex:1 1 95%;max-width:100%;max-height:95%;box-sizing:border-box}.layout-row>.flex-md-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-md-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-md-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-md-row>.flex-md-95{flex:1 1 95%;max-width:95%;max-height:100%;box-sizing:border-box}.layout-md-column>.flex-md-95{flex:1 1 95%;max-width:100%;max-height:95%;box-sizing:border-box}.flex-md-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-column>.flex-md-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-md-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-md-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-md-row>.flex-md-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-md-column>.flex-md-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-md-row>.flex-md-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-md-row>.flex-md-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-md-row>.flex{min-width:0}.layout-md-column>.flex-md-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-md-column>.flex-md-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-md-column>.flex{min-height:0}.layout-md,.layout-md-column,.layout-md-row{box-sizing:border-box;display:-webkit-box;display:-webkit-flex;display:-moz-box;display:-ms-flexbox;display:flex}.layout-md-column{flex-direction:column}.layout-md-row{flex-direction:row}}@media (min-width:1280px){.flex-order-gt-md--20{order:-20}.flex-order-gt-md--19{order:-19}.flex-order-gt-md--18{order:-18}.flex-order-gt-md--17{order:-17}.flex-order-gt-md--16{order:-16}.flex-order-gt-md--15{order:-15}.flex-order-gt-md--14{order:-14}.flex-order-gt-md--13{order:-13}.flex-order-gt-md--12{order:-12}.flex-order-gt-md--11{order:-11}.flex-order-gt-md--10{order:-10}.flex-order-gt-md--9{order:-9}.flex-order-gt-md--8{order:-8}.flex-order-gt-md--7{order:-7}.flex-order-gt-md--6{order:-6}.flex-order-gt-md--5{order:-5}.flex-order-gt-md--4{order:-4}.flex-order-gt-md--3{order:-3}.flex-order-gt-md--2{order:-2}.flex-order-gt-md--1{order:-1}.flex-order-gt-md-0{order:0}.flex-order-gt-md-1{order:1}.flex-order-gt-md-2{order:2}.flex-order-gt-md-3{order:3}.flex-order-gt-md-4{order:4}.flex-order-gt-md-5{order:5}.flex-order-gt-md-6{order:6}.flex-order-gt-md-7{order:7}.flex-order-gt-md-8{order:8}.flex-order-gt-md-9{order:9}.flex-order-gt-md-10{order:10}.flex-order-gt-md-11{order:11}.flex-order-gt-md-12{order:12}.flex-order-gt-md-13{order:13}.flex-order-gt-md-14{order:14}.flex-order-gt-md-15{order:15}.flex-order-gt-md-16{order:16}.flex-order-gt-md-17{order:17}.flex-order-gt-md-18{order:18}.flex-order-gt-md-19{order:19}.flex-order-gt-md-20{order:20}.flex-offset-gt-md-0,.offset-gt-md-0{margin-left:0}[dir=rtl] .flex-offset-gt-md-0,[dir=rtl] .offset-gt-md-0{margin-left:auto;margin-right:0}.flex-offset-gt-md-5,.offset-gt-md-5{margin-left:5%}[dir=rtl] .flex-offset-gt-md-5,[dir=rtl] .offset-gt-md-5{margin-left:auto;margin-right:5%}.flex-offset-gt-md-10,.offset-gt-md-10{margin-left:10%}[dir=rtl] .flex-offset-gt-md-10,[dir=rtl] .offset-gt-md-10{margin-left:auto;margin-right:10%}.flex-offset-gt-md-15,.offset-gt-md-15{margin-left:15%}[dir=rtl] .flex-offset-gt-md-15,[dir=rtl] .offset-gt-md-15{margin-left:auto;margin-right:15%}.flex-offset-gt-md-20,.offset-gt-md-20{margin-left:20%}[dir=rtl] .flex-offset-gt-md-20,[dir=rtl] .offset-gt-md-20{margin-left:auto;margin-right:20%}.flex-offset-gt-md-25,.offset-gt-md-25{margin-left:25%}[dir=rtl] .flex-offset-gt-md-25,[dir=rtl] .offset-gt-md-25{margin-left:auto;margin-right:25%}.flex-offset-gt-md-30,.offset-gt-md-30{margin-left:30%}[dir=rtl] .flex-offset-gt-md-30,[dir=rtl] .offset-gt-md-30{margin-left:auto;margin-right:30%}.flex-offset-gt-md-35,.offset-gt-md-35{margin-left:35%}[dir=rtl] .flex-offset-gt-md-35,[dir=rtl] .offset-gt-md-35{margin-left:auto;margin-right:35%}.flex-offset-gt-md-40,.offset-gt-md-40{margin-left:40%}[dir=rtl] .flex-offset-gt-md-40,[dir=rtl] .offset-gt-md-40{margin-left:auto;margin-right:40%}.flex-offset-gt-md-45,.offset-gt-md-45{margin-left:45%}[dir=rtl] .flex-offset-gt-md-45,[dir=rtl] .offset-gt-md-45{margin-left:auto;margin-right:45%}.flex-offset-gt-md-50,.offset-gt-md-50{margin-left:50%}[dir=rtl] .flex-offset-gt-md-50,[dir=rtl] .offset-gt-md-50{margin-left:auto;margin-right:50%}.flex-offset-gt-md-55,.offset-gt-md-55{margin-left:55%}[dir=rtl] .flex-offset-gt-md-55,[dir=rtl] .offset-gt-md-55{margin-left:auto;margin-right:55%}.flex-offset-gt-md-60,.offset-gt-md-60{margin-left:60%}[dir=rtl] .flex-offset-gt-md-60,[dir=rtl] .offset-gt-md-60{margin-left:auto;margin-right:60%}.flex-offset-gt-md-65,.offset-gt-md-65{margin-left:65%}[dir=rtl] .flex-offset-gt-md-65,[dir=rtl] .offset-gt-md-65{margin-left:auto;margin-right:65%}.flex-offset-gt-md-70,.offset-gt-md-70{margin-left:70%}[dir=rtl] .flex-offset-gt-md-70,[dir=rtl] .offset-gt-md-70{margin-left:auto;margin-right:70%}.flex-offset-gt-md-75,.offset-gt-md-75{margin-left:75%}[dir=rtl] .flex-offset-gt-md-75,[dir=rtl] .offset-gt-md-75{margin-left:auto;margin-right:75%}.flex-offset-gt-md-80,.offset-gt-md-80{margin-left:80%}[dir=rtl] .flex-offset-gt-md-80,[dir=rtl] .offset-gt-md-80{margin-left:auto;margin-right:80%}.flex-offset-gt-md-85,.offset-gt-md-85{margin-left:85%}[dir=rtl] .flex-offset-gt-md-85,[dir=rtl] .offset-gt-md-85{margin-left:auto;margin-right:85%}.flex-offset-gt-md-90,.offset-gt-md-90{margin-left:90%}[dir=rtl] .flex-offset-gt-md-90,[dir=rtl] .offset-gt-md-90{margin-left:auto;margin-right:90%}.flex-offset-gt-md-95,.offset-gt-md-95{margin-left:95%}[dir=rtl] .flex-offset-gt-md-95,[dir=rtl] .offset-gt-md-95{margin-left:auto;margin-right:95%}.flex-offset-gt-md-33,.offset-gt-md-33{margin-left:calc(100% / 3)}.flex-offset-gt-md-66,.offset-gt-md-66{margin-left:calc(200% / 3)}[dir=rtl] .flex-offset-gt-md-66,[dir=rtl] .offset-gt-md-66{margin-left:auto;margin-right:calc(200% / 3)}.layout-align-gt-md,.layout-align-gt-md-start-stretch{justify-content:flex-start;align-content:stretch;align-items:stretch}.layout-align-gt-md-start,.layout-align-gt-md-start-center,.layout-align-gt-md-start-end,.layout-align-gt-md-start-start,.layout-align-gt-md-start-stretch{justify-content:flex-start}.layout-align-gt-md-center,.layout-align-gt-md-center-center,.layout-align-gt-md-center-end,.layout-align-gt-md-center-start,.layout-align-gt-md-center-stretch{justify-content:center}.layout-align-gt-md-end,.layout-align-gt-md-end-center,.layout-align-gt-md-end-end,.layout-align-gt-md-end-start,.layout-align-gt-md-end-stretch{justify-content:flex-end}.layout-align-gt-md-space-around,.layout-align-gt-md-space-around-center,.layout-align-gt-md-space-around-end,.layout-align-gt-md-space-around-start,.layout-align-gt-md-space-around-stretch{justify-content:space-around}.layout-align-gt-md-space-between,.layout-align-gt-md-space-between-center,.layout-align-gt-md-space-between-end,.layout-align-gt-md-space-between-start,.layout-align-gt-md-space-between-stretch{justify-content:space-between}.layout-align-gt-md-center-start,.layout-align-gt-md-end-start,.layout-align-gt-md-space-around-start,.layout-align-gt-md-space-between-start,.layout-align-gt-md-start-start{align-items:flex-start;align-content:flex-start}.layout-align-gt-md-center-center,.layout-align-gt-md-end-center,.layout-align-gt-md-space-around-center,.layout-align-gt-md-space-between-center,.layout-align-gt-md-start-center{align-items:center;align-content:center;max-width:100%}.layout-align-gt-md-center-center>*,.layout-align-gt-md-end-center>*,.layout-align-gt-md-space-around-center>*,.layout-align-gt-md-space-between-center>*,.layout-align-gt-md-start-center>*{max-width:100%;box-sizing:border-box}.layout-align-gt-md-center-end,.layout-align-gt-md-end-end,.layout-align-gt-md-space-around-end,.layout-align-gt-md-space-between-end,.layout-align-gt-md-start-end{align-items:flex-end;align-content:flex-end}.layout-align-gt-md-center-stretch,.layout-align-gt-md-end-stretch,.layout-align-gt-md-space-around-stretch,.layout-align-gt-md-space-between-stretch,.layout-align-gt-md-start-stretch{align-items:stretch;align-content:stretch}.flex-gt-md{flex:1;box-sizing:border-box}.flex-gt-md-grow{flex:1 1 100%;box-sizing:border-box}.flex-gt-md-initial{flex:0 1 auto;box-sizing:border-box}.flex-gt-md-auto{flex:1 1 auto;box-sizing:border-box}.flex-gt-md-none{flex:0 0 auto;box-sizing:border-box}.flex-gt-md-noshrink{flex:1 0 auto;box-sizing:border-box}.flex-gt-md-nogrow{flex:0 1 auto;box-sizing:border-box}.flex-gt-md-0{flex:1 1 0%;max-width:0%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-0{flex:1 1 0%;max-width:0%;max-height:100%;box-sizing:border-box;min-width:0}.layout-column>.flex-gt-md-0{flex:1 1 0%;max-width:100%;max-height:0%;box-sizing:border-box}.layout-row>.flex-gt-md-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-md-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-md-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-md-row>.flex-gt-md-0{flex:1 1 0%;max-width:0%;max-height:100%;box-sizing:border-box;min-width:0}.layout-gt-md-column>.flex-gt-md-0{flex:1 1 0%;max-width:100%;max-height:0%;box-sizing:border-box;min-height:0}.flex-gt-md-5{flex:1 1 5%;max-width:5%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-5{flex:1 1 5%;max-width:5%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-md-5{flex:1 1 5%;max-width:100%;max-height:5%;box-sizing:border-box}.layout-row>.flex-gt-md-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-md-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-md-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-md-row>.flex-gt-md-5{flex:1 1 5%;max-width:5%;max-height:100%;box-sizing:border-box}.layout-gt-md-column>.flex-gt-md-5{flex:1 1 5%;max-width:100%;max-height:5%;box-sizing:border-box}.flex-gt-md-10{flex:1 1 10%;max-width:10%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-10{flex:1 1 10%;max-width:10%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-md-10{flex:1 1 10%;max-width:100%;max-height:10%;box-sizing:border-box}.layout-row>.flex-gt-md-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-md-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-md-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-md-row>.flex-gt-md-10{flex:1 1 10%;max-width:10%;max-height:100%;box-sizing:border-box}.layout-gt-md-column>.flex-gt-md-10{flex:1 1 10%;max-width:100%;max-height:10%;box-sizing:border-box}.flex-gt-md-15{flex:1 1 15%;max-width:15%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-15{flex:1 1 15%;max-width:15%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-md-15{flex:1 1 15%;max-width:100%;max-height:15%;box-sizing:border-box}.layout-row>.flex-gt-md-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-md-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-md-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-md-row>.flex-gt-md-15{flex:1 1 15%;max-width:15%;max-height:100%;box-sizing:border-box}.layout-gt-md-column>.flex-gt-md-15{flex:1 1 15%;max-width:100%;max-height:15%;box-sizing:border-box}.flex-gt-md-20{flex:1 1 20%;max-width:20%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-20{flex:1 1 20%;max-width:20%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-md-20{flex:1 1 20%;max-width:100%;max-height:20%;box-sizing:border-box}.layout-row>.flex-gt-md-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-md-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-md-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-md-row>.flex-gt-md-20{flex:1 1 20%;max-width:20%;max-height:100%;box-sizing:border-box}.layout-gt-md-column>.flex-gt-md-20{flex:1 1 20%;max-width:100%;max-height:20%;box-sizing:border-box}.flex-gt-md-25{flex:1 1 25%;max-width:25%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-25{flex:1 1 25%;max-width:25%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-md-25{flex:1 1 25%;max-width:100%;max-height:25%;box-sizing:border-box}.layout-row>.flex-gt-md-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-md-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-md-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-md-row>.flex-gt-md-25{flex:1 1 25%;max-width:25%;max-height:100%;box-sizing:border-box}.layout-gt-md-column>.flex-gt-md-25{flex:1 1 25%;max-width:100%;max-height:25%;box-sizing:border-box}.flex-gt-md-30{flex:1 1 30%;max-width:30%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-30{flex:1 1 30%;max-width:30%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-md-30{flex:1 1 30%;max-width:100%;max-height:30%;box-sizing:border-box}.layout-row>.flex-gt-md-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-md-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-md-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-md-row>.flex-gt-md-30{flex:1 1 30%;max-width:30%;max-height:100%;box-sizing:border-box}.layout-gt-md-column>.flex-gt-md-30{flex:1 1 30%;max-width:100%;max-height:30%;box-sizing:border-box}.flex-gt-md-35{flex:1 1 35%;max-width:35%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-35{flex:1 1 35%;max-width:35%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-md-35{flex:1 1 35%;max-width:100%;max-height:35%;box-sizing:border-box}.layout-row>.flex-gt-md-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-md-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-md-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-md-row>.flex-gt-md-35{flex:1 1 35%;max-width:35%;max-height:100%;box-sizing:border-box}.layout-gt-md-column>.flex-gt-md-35{flex:1 1 35%;max-width:100%;max-height:35%;box-sizing:border-box}.flex-gt-md-40{flex:1 1 40%;max-width:40%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-40{flex:1 1 40%;max-width:40%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-md-40{flex:1 1 40%;max-width:100%;max-height:40%;box-sizing:border-box}.layout-row>.flex-gt-md-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-md-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-md-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-md-row>.flex-gt-md-40{flex:1 1 40%;max-width:40%;max-height:100%;box-sizing:border-box}.layout-gt-md-column>.flex-gt-md-40{flex:1 1 40%;max-width:100%;max-height:40%;box-sizing:border-box}.flex-gt-md-45{flex:1 1 45%;max-width:45%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-45{flex:1 1 45%;max-width:45%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-md-45{flex:1 1 45%;max-width:100%;max-height:45%;box-sizing:border-box}.layout-row>.flex-gt-md-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-md-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-md-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-md-row>.flex-gt-md-45{flex:1 1 45%;max-width:45%;max-height:100%;box-sizing:border-box}.layout-gt-md-column>.flex-gt-md-45{flex:1 1 45%;max-width:100%;max-height:45%;box-sizing:border-box}.flex-gt-md-50{flex:1 1 50%;max-width:50%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-50{flex:1 1 50%;max-width:50%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-md-50{flex:1 1 50%;max-width:100%;max-height:50%;box-sizing:border-box}.layout-row>.flex-gt-md-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-md-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-md-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-md-row>.flex-gt-md-50{flex:1 1 50%;max-width:50%;max-height:100%;box-sizing:border-box}.layout-gt-md-column>.flex-gt-md-50{flex:1 1 50%;max-width:100%;max-height:50%;box-sizing:border-box}.flex-gt-md-55{flex:1 1 55%;max-width:55%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-55{flex:1 1 55%;max-width:55%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-md-55{flex:1 1 55%;max-width:100%;max-height:55%;box-sizing:border-box}.layout-row>.flex-gt-md-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-md-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-md-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-md-row>.flex-gt-md-55{flex:1 1 55%;max-width:55%;max-height:100%;box-sizing:border-box}.layout-gt-md-column>.flex-gt-md-55{flex:1 1 55%;max-width:100%;max-height:55%;box-sizing:border-box}.flex-gt-md-60{flex:1 1 60%;max-width:60%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-60{flex:1 1 60%;max-width:60%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-md-60{flex:1 1 60%;max-width:100%;max-height:60%;box-sizing:border-box}.layout-row>.flex-gt-md-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-md-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-md-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-md-row>.flex-gt-md-60{flex:1 1 60%;max-width:60%;max-height:100%;box-sizing:border-box}.layout-gt-md-column>.flex-gt-md-60{flex:1 1 60%;max-width:100%;max-height:60%;box-sizing:border-box}.flex-gt-md-65{flex:1 1 65%;max-width:65%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-65{flex:1 1 65%;max-width:65%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-md-65{flex:1 1 65%;max-width:100%;max-height:65%;box-sizing:border-box}.layout-row>.flex-gt-md-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-md-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-md-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-md-row>.flex-gt-md-65{flex:1 1 65%;max-width:65%;max-height:100%;box-sizing:border-box}.layout-gt-md-column>.flex-gt-md-65{flex:1 1 65%;max-width:100%;max-height:65%;box-sizing:border-box}.flex-gt-md-70{flex:1 1 70%;max-width:70%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-70{flex:1 1 70%;max-width:70%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-md-70{flex:1 1 70%;max-width:100%;max-height:70%;box-sizing:border-box}.layout-row>.flex-gt-md-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-md-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-md-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-md-row>.flex-gt-md-70{flex:1 1 70%;max-width:70%;max-height:100%;box-sizing:border-box}.layout-gt-md-column>.flex-gt-md-70{flex:1 1 70%;max-width:100%;max-height:70%;box-sizing:border-box}.flex-gt-md-75{flex:1 1 75%;max-width:75%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-75{flex:1 1 75%;max-width:75%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-md-75{flex:1 1 75%;max-width:100%;max-height:75%;box-sizing:border-box}.layout-row>.flex-gt-md-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-md-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-md-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-md-row>.flex-gt-md-75{flex:1 1 75%;max-width:75%;max-height:100%;box-sizing:border-box}.layout-gt-md-column>.flex-gt-md-75{flex:1 1 75%;max-width:100%;max-height:75%;box-sizing:border-box}.flex-gt-md-80{flex:1 1 80%;max-width:80%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-80{flex:1 1 80%;max-width:80%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-md-80{flex:1 1 80%;max-width:100%;max-height:80%;box-sizing:border-box}.layout-row>.flex-gt-md-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-md-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-md-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-md-row>.flex-gt-md-80{flex:1 1 80%;max-width:80%;max-height:100%;box-sizing:border-box}.layout-gt-md-column>.flex-gt-md-80{flex:1 1 80%;max-width:100%;max-height:80%;box-sizing:border-box}.flex-gt-md-85{flex:1 1 85%;max-width:85%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-85{flex:1 1 85%;max-width:85%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-md-85{flex:1 1 85%;max-width:100%;max-height:85%;box-sizing:border-box}.layout-row>.flex-gt-md-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-md-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-md-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-md-row>.flex-gt-md-85{flex:1 1 85%;max-width:85%;max-height:100%;box-sizing:border-box}.layout-gt-md-column>.flex-gt-md-85{flex:1 1 85%;max-width:100%;max-height:85%;box-sizing:border-box}.flex-gt-md-90{flex:1 1 90%;max-width:90%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-90{flex:1 1 90%;max-width:90%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-md-90{flex:1 1 90%;max-width:100%;max-height:90%;box-sizing:border-box}.layout-row>.flex-gt-md-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-md-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-md-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-md-row>.flex-gt-md-90{flex:1 1 90%;max-width:90%;max-height:100%;box-sizing:border-box}.layout-gt-md-column>.flex-gt-md-90{flex:1 1 90%;max-width:100%;max-height:90%;box-sizing:border-box}.flex-gt-md-95{flex:1 1 95%;max-width:95%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-95{flex:1 1 95%;max-width:95%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-md-95{flex:1 1 95%;max-width:100%;max-height:95%;box-sizing:border-box}.layout-row>.flex-gt-md-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-md-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-md-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-md-row>.flex-gt-md-95{flex:1 1 95%;max-width:95%;max-height:100%;box-sizing:border-box}.layout-gt-md-column>.flex-gt-md-95{flex:1 1 95%;max-width:100%;max-height:95%;box-sizing:border-box}.flex-gt-md-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-md-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-md-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-md-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-md-row>.flex-gt-md-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-gt-md-column>.flex-gt-md-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-gt-md-row>.flex-gt-md-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-gt-md-row>.flex-gt-md-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-gt-md-row>.flex{min-width:0}.layout-gt-md-column>.flex-gt-md-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-gt-md-column>.flex-gt-md-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-md-column>.flex{min-height:0}.layout-gt-md,.layout-gt-md-column,.layout-gt-md-row{box-sizing:border-box;display:-webkit-box;display:-webkit-flex;display:-moz-box;display:-ms-flexbox;display:flex}.layout-gt-md-column{flex-direction:column}.layout-gt-md-row{flex-direction:row}}@media (min-width:1280px) and (max-width:1919px){.hide-gt-md:not(.show-gt-xs):not(.show-gt-sm):not(.show-gt-md):not(.show-lg):not(.show),.hide-gt-sm:not(.show-gt-xs):not(.show-gt-sm):not(.show-gt-md):not(.show-lg):not(.show),.hide-gt-xs:not(.show-gt-xs):not(.show-gt-sm):not(.show-gt-md):not(.show-lg):not(.show),.hide:not(.show-gt-xs):not(.show-gt-sm):not(.show-gt-md):not(.show-lg):not(.show){display:none}.hide-lg:not(.show-lg):not(.show-gt-md):not(.show-gt-sm):not(.show-gt-xs):not(.show){display:none}.flex-order-lg--20{order:-20}.flex-order-lg--19{order:-19}.flex-order-lg--18{order:-18}.flex-order-lg--17{order:-17}.flex-order-lg--16{order:-16}.flex-order-lg--15{order:-15}.flex-order-lg--14{order:-14}.flex-order-lg--13{order:-13}.flex-order-lg--12{order:-12}.flex-order-lg--11{order:-11}.flex-order-lg--10{order:-10}.flex-order-lg--9{order:-9}.flex-order-lg--8{order:-8}.flex-order-lg--7{order:-7}.flex-order-lg--6{order:-6}.flex-order-lg--5{order:-5}.flex-order-lg--4{order:-4}.flex-order-lg--3{order:-3}.flex-order-lg--2{order:-2}.flex-order-lg--1{order:-1}.flex-order-lg-0{order:0}.flex-order-lg-1{order:1}.flex-order-lg-2{order:2}.flex-order-lg-3{order:3}.flex-order-lg-4{order:4}.flex-order-lg-5{order:5}.flex-order-lg-6{order:6}.flex-order-lg-7{order:7}.flex-order-lg-8{order:8}.flex-order-lg-9{order:9}.flex-order-lg-10{order:10}.flex-order-lg-11{order:11}.flex-order-lg-12{order:12}.flex-order-lg-13{order:13}.flex-order-lg-14{order:14}.flex-order-lg-15{order:15}.flex-order-lg-16{order:16}.flex-order-lg-17{order:17}.flex-order-lg-18{order:18}.flex-order-lg-19{order:19}.flex-order-lg-20{order:20}.flex-offset-lg-0,.offset-lg-0{margin-left:0}[dir=rtl] .flex-offset-lg-0,[dir=rtl] .offset-lg-0{margin-left:auto;margin-right:0}.flex-offset-lg-5,.offset-lg-5{margin-left:5%}[dir=rtl] .flex-offset-lg-5,[dir=rtl] .offset-lg-5{margin-left:auto;margin-right:5%}.flex-offset-lg-10,.offset-lg-10{margin-left:10%}[dir=rtl] .flex-offset-lg-10,[dir=rtl] .offset-lg-10{margin-left:auto;margin-right:10%}.flex-offset-lg-15,.offset-lg-15{margin-left:15%}[dir=rtl] .flex-offset-lg-15,[dir=rtl] .offset-lg-15{margin-left:auto;margin-right:15%}.flex-offset-lg-20,.offset-lg-20{margin-left:20%}[dir=rtl] .flex-offset-lg-20,[dir=rtl] .offset-lg-20{margin-left:auto;margin-right:20%}.flex-offset-lg-25,.offset-lg-25{margin-left:25%}[dir=rtl] .flex-offset-lg-25,[dir=rtl] .offset-lg-25{margin-left:auto;margin-right:25%}.flex-offset-lg-30,.offset-lg-30{margin-left:30%}[dir=rtl] .flex-offset-lg-30,[dir=rtl] .offset-lg-30{margin-left:auto;margin-right:30%}.flex-offset-lg-35,.offset-lg-35{margin-left:35%}[dir=rtl] .flex-offset-lg-35,[dir=rtl] .offset-lg-35{margin-left:auto;margin-right:35%}.flex-offset-lg-40,.offset-lg-40{margin-left:40%}[dir=rtl] .flex-offset-lg-40,[dir=rtl] .offset-lg-40{margin-left:auto;margin-right:40%}.flex-offset-lg-45,.offset-lg-45{margin-left:45%}[dir=rtl] .flex-offset-lg-45,[dir=rtl] .offset-lg-45{margin-left:auto;margin-right:45%}.flex-offset-lg-50,.offset-lg-50{margin-left:50%}[dir=rtl] .flex-offset-lg-50,[dir=rtl] .offset-lg-50{margin-left:auto;margin-right:50%}.flex-offset-lg-55,.offset-lg-55{margin-left:55%}[dir=rtl] .flex-offset-lg-55,[dir=rtl] .offset-lg-55{margin-left:auto;margin-right:55%}.flex-offset-lg-60,.offset-lg-60{margin-left:60%}[dir=rtl] .flex-offset-lg-60,[dir=rtl] .offset-lg-60{margin-left:auto;margin-right:60%}.flex-offset-lg-65,.offset-lg-65{margin-left:65%}[dir=rtl] .flex-offset-lg-65,[dir=rtl] .offset-lg-65{margin-left:auto;margin-right:65%}.flex-offset-lg-70,.offset-lg-70{margin-left:70%}[dir=rtl] .flex-offset-lg-70,[dir=rtl] .offset-lg-70{margin-left:auto;margin-right:70%}.flex-offset-lg-75,.offset-lg-75{margin-left:75%}[dir=rtl] .flex-offset-lg-75,[dir=rtl] .offset-lg-75{margin-left:auto;margin-right:75%}.flex-offset-lg-80,.offset-lg-80{margin-left:80%}[dir=rtl] .flex-offset-lg-80,[dir=rtl] .offset-lg-80{margin-left:auto;margin-right:80%}.flex-offset-lg-85,.offset-lg-85{margin-left:85%}[dir=rtl] .flex-offset-lg-85,[dir=rtl] .offset-lg-85{margin-left:auto;margin-right:85%}.flex-offset-lg-90,.offset-lg-90{margin-left:90%}[dir=rtl] .flex-offset-lg-90,[dir=rtl] .offset-lg-90{margin-left:auto;margin-right:90%}.flex-offset-lg-95,.offset-lg-95{margin-left:95%}[dir=rtl] .flex-offset-lg-95,[dir=rtl] .offset-lg-95{margin-left:auto;margin-right:95%}.flex-offset-lg-33,.offset-lg-33{margin-left:calc(100% / 3)}.flex-offset-lg-66,.offset-lg-66{margin-left:calc(200% / 3)}[dir=rtl] .flex-offset-lg-66,[dir=rtl] .offset-lg-66{margin-left:auto;margin-right:calc(200% / 3)}.layout-align-lg,.layout-align-lg-start-stretch{justify-content:flex-start;align-content:stretch;align-items:stretch}.layout-align-lg-start,.layout-align-lg-start-center,.layout-align-lg-start-end,.layout-align-lg-start-start,.layout-align-lg-start-stretch{justify-content:flex-start}.layout-align-lg-center,.layout-align-lg-center-center,.layout-align-lg-center-end,.layout-align-lg-center-start,.layout-align-lg-center-stretch{justify-content:center}.layout-align-lg-end,.layout-align-lg-end-center,.layout-align-lg-end-end,.layout-align-lg-end-start,.layout-align-lg-end-stretch{justify-content:flex-end}.layout-align-lg-space-around,.layout-align-lg-space-around-center,.layout-align-lg-space-around-end,.layout-align-lg-space-around-start,.layout-align-lg-space-around-stretch{justify-content:space-around}.layout-align-lg-space-between,.layout-align-lg-space-between-center,.layout-align-lg-space-between-end,.layout-align-lg-space-between-start,.layout-align-lg-space-between-stretch{justify-content:space-between}.layout-align-lg-center-start,.layout-align-lg-end-start,.layout-align-lg-space-around-start,.layout-align-lg-space-between-start,.layout-align-lg-start-start{align-items:flex-start;align-content:flex-start}.layout-align-lg-center-center,.layout-align-lg-end-center,.layout-align-lg-space-around-center,.layout-align-lg-space-between-center,.layout-align-lg-start-center{align-items:center;align-content:center;max-width:100%}.layout-align-lg-center-center>*,.layout-align-lg-end-center>*,.layout-align-lg-space-around-center>*,.layout-align-lg-space-between-center>*,.layout-align-lg-start-center>*{max-width:100%;box-sizing:border-box}.layout-align-lg-center-end,.layout-align-lg-end-end,.layout-align-lg-space-around-end,.layout-align-lg-space-between-end,.layout-align-lg-start-end{align-items:flex-end;align-content:flex-end}.layout-align-lg-center-stretch,.layout-align-lg-end-stretch,.layout-align-lg-space-around-stretch,.layout-align-lg-space-between-stretch,.layout-align-lg-start-stretch{align-items:stretch;align-content:stretch}.flex-lg{flex:1;box-sizing:border-box}.flex-lg-grow{flex:1 1 100%;box-sizing:border-box}.flex-lg-initial{flex:0 1 auto;box-sizing:border-box}.flex-lg-auto{flex:1 1 auto;box-sizing:border-box}.flex-lg-none{flex:0 0 auto;box-sizing:border-box}.flex-lg-noshrink{flex:1 0 auto;box-sizing:border-box}.flex-lg-nogrow{flex:0 1 auto;box-sizing:border-box}.flex-lg-0{flex:1 1 0%;max-width:0%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-0{flex:1 1 0%;max-width:0%;max-height:100%;box-sizing:border-box;min-width:0}.layout-column>.flex-lg-0{flex:1 1 0%;max-width:100%;max-height:0%;box-sizing:border-box}.layout-row>.flex-lg-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-lg-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-lg-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-lg-row>.flex-lg-0{flex:1 1 0%;max-width:0%;max-height:100%;box-sizing:border-box;min-width:0}.layout-lg-column>.flex-lg-0{flex:1 1 0%;max-width:100%;max-height:0%;box-sizing:border-box;min-height:0}.flex-lg-5{flex:1 1 5%;max-width:5%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-5{flex:1 1 5%;max-width:5%;max-height:100%;box-sizing:border-box}.layout-column>.flex-lg-5{flex:1 1 5%;max-width:100%;max-height:5%;box-sizing:border-box}.layout-row>.flex-lg-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-lg-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-lg-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-lg-row>.flex-lg-5{flex:1 1 5%;max-width:5%;max-height:100%;box-sizing:border-box}.layout-lg-column>.flex-lg-5{flex:1 1 5%;max-width:100%;max-height:5%;box-sizing:border-box}.flex-lg-10{flex:1 1 10%;max-width:10%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-10{flex:1 1 10%;max-width:10%;max-height:100%;box-sizing:border-box}.layout-column>.flex-lg-10{flex:1 1 10%;max-width:100%;max-height:10%;box-sizing:border-box}.layout-row>.flex-lg-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-lg-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-lg-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-lg-row>.flex-lg-10{flex:1 1 10%;max-width:10%;max-height:100%;box-sizing:border-box}.layout-lg-column>.flex-lg-10{flex:1 1 10%;max-width:100%;max-height:10%;box-sizing:border-box}.flex-lg-15{flex:1 1 15%;max-width:15%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-15{flex:1 1 15%;max-width:15%;max-height:100%;box-sizing:border-box}.layout-column>.flex-lg-15{flex:1 1 15%;max-width:100%;max-height:15%;box-sizing:border-box}.layout-row>.flex-lg-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-lg-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-lg-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-lg-row>.flex-lg-15{flex:1 1 15%;max-width:15%;max-height:100%;box-sizing:border-box}.layout-lg-column>.flex-lg-15{flex:1 1 15%;max-width:100%;max-height:15%;box-sizing:border-box}.flex-lg-20{flex:1 1 20%;max-width:20%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-20{flex:1 1 20%;max-width:20%;max-height:100%;box-sizing:border-box}.layout-column>.flex-lg-20{flex:1 1 20%;max-width:100%;max-height:20%;box-sizing:border-box}.layout-row>.flex-lg-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-lg-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-lg-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-lg-row>.flex-lg-20{flex:1 1 20%;max-width:20%;max-height:100%;box-sizing:border-box}.layout-lg-column>.flex-lg-20{flex:1 1 20%;max-width:100%;max-height:20%;box-sizing:border-box}.flex-lg-25{flex:1 1 25%;max-width:25%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-25{flex:1 1 25%;max-width:25%;max-height:100%;box-sizing:border-box}.layout-column>.flex-lg-25{flex:1 1 25%;max-width:100%;max-height:25%;box-sizing:border-box}.layout-row>.flex-lg-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-lg-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-lg-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-lg-row>.flex-lg-25{flex:1 1 25%;max-width:25%;max-height:100%;box-sizing:border-box}.layout-lg-column>.flex-lg-25{flex:1 1 25%;max-width:100%;max-height:25%;box-sizing:border-box}.flex-lg-30{flex:1 1 30%;max-width:30%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-30{flex:1 1 30%;max-width:30%;max-height:100%;box-sizing:border-box}.layout-column>.flex-lg-30{flex:1 1 30%;max-width:100%;max-height:30%;box-sizing:border-box}.layout-row>.flex-lg-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-lg-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-lg-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-lg-row>.flex-lg-30{flex:1 1 30%;max-width:30%;max-height:100%;box-sizing:border-box}.layout-lg-column>.flex-lg-30{flex:1 1 30%;max-width:100%;max-height:30%;box-sizing:border-box}.flex-lg-35{flex:1 1 35%;max-width:35%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-35{flex:1 1 35%;max-width:35%;max-height:100%;box-sizing:border-box}.layout-column>.flex-lg-35{flex:1 1 35%;max-width:100%;max-height:35%;box-sizing:border-box}.layout-row>.flex-lg-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-lg-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-lg-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-lg-row>.flex-lg-35{flex:1 1 35%;max-width:35%;max-height:100%;box-sizing:border-box}.layout-lg-column>.flex-lg-35{flex:1 1 35%;max-width:100%;max-height:35%;box-sizing:border-box}.flex-lg-40{flex:1 1 40%;max-width:40%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-40{flex:1 1 40%;max-width:40%;max-height:100%;box-sizing:border-box}.layout-column>.flex-lg-40{flex:1 1 40%;max-width:100%;max-height:40%;box-sizing:border-box}.layout-row>.flex-lg-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-lg-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-lg-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-lg-row>.flex-lg-40{flex:1 1 40%;max-width:40%;max-height:100%;box-sizing:border-box}.layout-lg-column>.flex-lg-40{flex:1 1 40%;max-width:100%;max-height:40%;box-sizing:border-box}.flex-lg-45{flex:1 1 45%;max-width:45%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-45{flex:1 1 45%;max-width:45%;max-height:100%;box-sizing:border-box}.layout-column>.flex-lg-45{flex:1 1 45%;max-width:100%;max-height:45%;box-sizing:border-box}.layout-row>.flex-lg-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-lg-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-lg-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-lg-row>.flex-lg-45{flex:1 1 45%;max-width:45%;max-height:100%;box-sizing:border-box}.layout-lg-column>.flex-lg-45{flex:1 1 45%;max-width:100%;max-height:45%;box-sizing:border-box}.flex-lg-50{flex:1 1 50%;max-width:50%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-50{flex:1 1 50%;max-width:50%;max-height:100%;box-sizing:border-box}.layout-column>.flex-lg-50{flex:1 1 50%;max-width:100%;max-height:50%;box-sizing:border-box}.layout-row>.flex-lg-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-lg-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-lg-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-lg-row>.flex-lg-50{flex:1 1 50%;max-width:50%;max-height:100%;box-sizing:border-box}.layout-lg-column>.flex-lg-50{flex:1 1 50%;max-width:100%;max-height:50%;box-sizing:border-box}.flex-lg-55{flex:1 1 55%;max-width:55%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-55{flex:1 1 55%;max-width:55%;max-height:100%;box-sizing:border-box}.layout-column>.flex-lg-55{flex:1 1 55%;max-width:100%;max-height:55%;box-sizing:border-box}.layout-row>.flex-lg-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-lg-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-lg-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-lg-row>.flex-lg-55{flex:1 1 55%;max-width:55%;max-height:100%;box-sizing:border-box}.layout-lg-column>.flex-lg-55{flex:1 1 55%;max-width:100%;max-height:55%;box-sizing:border-box}.flex-lg-60{flex:1 1 60%;max-width:60%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-60{flex:1 1 60%;max-width:60%;max-height:100%;box-sizing:border-box}.layout-column>.flex-lg-60{flex:1 1 60%;max-width:100%;max-height:60%;box-sizing:border-box}.layout-row>.flex-lg-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-lg-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-lg-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-lg-row>.flex-lg-60{flex:1 1 60%;max-width:60%;max-height:100%;box-sizing:border-box}.layout-lg-column>.flex-lg-60{flex:1 1 60%;max-width:100%;max-height:60%;box-sizing:border-box}.flex-lg-65{flex:1 1 65%;max-width:65%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-65{flex:1 1 65%;max-width:65%;max-height:100%;box-sizing:border-box}.layout-column>.flex-lg-65{flex:1 1 65%;max-width:100%;max-height:65%;box-sizing:border-box}.layout-row>.flex-lg-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-lg-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-lg-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-lg-row>.flex-lg-65{flex:1 1 65%;max-width:65%;max-height:100%;box-sizing:border-box}.layout-lg-column>.flex-lg-65{flex:1 1 65%;max-width:100%;max-height:65%;box-sizing:border-box}.flex-lg-70{flex:1 1 70%;max-width:70%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-70{flex:1 1 70%;max-width:70%;max-height:100%;box-sizing:border-box}.layout-column>.flex-lg-70{flex:1 1 70%;max-width:100%;max-height:70%;box-sizing:border-box}.layout-row>.flex-lg-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-lg-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-lg-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-lg-row>.flex-lg-70{flex:1 1 70%;max-width:70%;max-height:100%;box-sizing:border-box}.layout-lg-column>.flex-lg-70{flex:1 1 70%;max-width:100%;max-height:70%;box-sizing:border-box}.flex-lg-75{flex:1 1 75%;max-width:75%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-75{flex:1 1 75%;max-width:75%;max-height:100%;box-sizing:border-box}.layout-column>.flex-lg-75{flex:1 1 75%;max-width:100%;max-height:75%;box-sizing:border-box}.layout-row>.flex-lg-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-lg-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-lg-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-lg-row>.flex-lg-75{flex:1 1 75%;max-width:75%;max-height:100%;box-sizing:border-box}.layout-lg-column>.flex-lg-75{flex:1 1 75%;max-width:100%;max-height:75%;box-sizing:border-box}.flex-lg-80{flex:1 1 80%;max-width:80%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-80{flex:1 1 80%;max-width:80%;max-height:100%;box-sizing:border-box}.layout-column>.flex-lg-80{flex:1 1 80%;max-width:100%;max-height:80%;box-sizing:border-box}.layout-row>.flex-lg-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-lg-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-lg-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-lg-row>.flex-lg-80{flex:1 1 80%;max-width:80%;max-height:100%;box-sizing:border-box}.layout-lg-column>.flex-lg-80{flex:1 1 80%;max-width:100%;max-height:80%;box-sizing:border-box}.flex-lg-85{flex:1 1 85%;max-width:85%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-85{flex:1 1 85%;max-width:85%;max-height:100%;box-sizing:border-box}.layout-column>.flex-lg-85{flex:1 1 85%;max-width:100%;max-height:85%;box-sizing:border-box}.layout-row>.flex-lg-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-lg-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-lg-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-lg-row>.flex-lg-85{flex:1 1 85%;max-width:85%;max-height:100%;box-sizing:border-box}.layout-lg-column>.flex-lg-85{flex:1 1 85%;max-width:100%;max-height:85%;box-sizing:border-box}.flex-lg-90{flex:1 1 90%;max-width:90%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-90{flex:1 1 90%;max-width:90%;max-height:100%;box-sizing:border-box}.layout-column>.flex-lg-90{flex:1 1 90%;max-width:100%;max-height:90%;box-sizing:border-box}.layout-row>.flex-lg-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-lg-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-lg-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-lg-row>.flex-lg-90{flex:1 1 90%;max-width:90%;max-height:100%;box-sizing:border-box}.layout-lg-column>.flex-lg-90{flex:1 1 90%;max-width:100%;max-height:90%;box-sizing:border-box}.flex-lg-95{flex:1 1 95%;max-width:95%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-95{flex:1 1 95%;max-width:95%;max-height:100%;box-sizing:border-box}.layout-column>.flex-lg-95{flex:1 1 95%;max-width:100%;max-height:95%;box-sizing:border-box}.layout-row>.flex-lg-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-lg-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-lg-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-lg-row>.flex-lg-95{flex:1 1 95%;max-width:95%;max-height:100%;box-sizing:border-box}.layout-lg-column>.flex-lg-95{flex:1 1 95%;max-width:100%;max-height:95%;box-sizing:border-box}.flex-lg-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-column>.flex-lg-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-lg-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-lg-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-lg-row>.flex-lg-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-lg-column>.flex-lg-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-lg-row>.flex-lg-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-lg-row>.flex-lg-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-lg-row>.flex{min-width:0}.layout-lg-column>.flex-lg-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-lg-column>.flex-lg-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-lg-column>.flex{min-height:0}.layout-lg,.layout-lg-column,.layout-lg-row{box-sizing:border-box;display:-webkit-box;display:-webkit-flex;display:-moz-box;display:-ms-flexbox;display:flex}.layout-lg-column{flex-direction:column}.layout-lg-row{flex-direction:row}}@media (min-width:1920px){.flex-order-gt-lg--20{order:-20}.flex-order-gt-lg--19{order:-19}.flex-order-gt-lg--18{order:-18}.flex-order-gt-lg--17{order:-17}.flex-order-gt-lg--16{order:-16}.flex-order-gt-lg--15{order:-15}.flex-order-gt-lg--14{order:-14}.flex-order-gt-lg--13{order:-13}.flex-order-gt-lg--12{order:-12}.flex-order-gt-lg--11{order:-11}.flex-order-gt-lg--10{order:-10}.flex-order-gt-lg--9{order:-9}.flex-order-gt-lg--8{order:-8}.flex-order-gt-lg--7{order:-7}.flex-order-gt-lg--6{order:-6}.flex-order-gt-lg--5{order:-5}.flex-order-gt-lg--4{order:-4}.flex-order-gt-lg--3{order:-3}.flex-order-gt-lg--2{order:-2}.flex-order-gt-lg--1{order:-1}.flex-order-gt-lg-0{order:0}.flex-order-gt-lg-1{order:1}.flex-order-gt-lg-2{order:2}.flex-order-gt-lg-3{order:3}.flex-order-gt-lg-4{order:4}.flex-order-gt-lg-5{order:5}.flex-order-gt-lg-6{order:6}.flex-order-gt-lg-7{order:7}.flex-order-gt-lg-8{order:8}.flex-order-gt-lg-9{order:9}.flex-order-gt-lg-10{order:10}.flex-order-gt-lg-11{order:11}.flex-order-gt-lg-12{order:12}.flex-order-gt-lg-13{order:13}.flex-order-gt-lg-14{order:14}.flex-order-gt-lg-15{order:15}.flex-order-gt-lg-16{order:16}.flex-order-gt-lg-17{order:17}.flex-order-gt-lg-18{order:18}.flex-order-gt-lg-19{order:19}.flex-order-gt-lg-20{order:20}.flex-offset-gt-lg-0,.offset-gt-lg-0{margin-left:0}[dir=rtl] .flex-offset-gt-lg-0,[dir=rtl] .offset-gt-lg-0{margin-left:auto;margin-right:0}.flex-offset-gt-lg-5,.offset-gt-lg-5{margin-left:5%}[dir=rtl] .flex-offset-gt-lg-5,[dir=rtl] .offset-gt-lg-5{margin-left:auto;margin-right:5%}.flex-offset-gt-lg-10,.offset-gt-lg-10{margin-left:10%}[dir=rtl] .flex-offset-gt-lg-10,[dir=rtl] .offset-gt-lg-10{margin-left:auto;margin-right:10%}.flex-offset-gt-lg-15,.offset-gt-lg-15{margin-left:15%}[dir=rtl] .flex-offset-gt-lg-15,[dir=rtl] .offset-gt-lg-15{margin-left:auto;margin-right:15%}.flex-offset-gt-lg-20,.offset-gt-lg-20{margin-left:20%}[dir=rtl] .flex-offset-gt-lg-20,[dir=rtl] .offset-gt-lg-20{margin-left:auto;margin-right:20%}.flex-offset-gt-lg-25,.offset-gt-lg-25{margin-left:25%}[dir=rtl] .flex-offset-gt-lg-25,[dir=rtl] .offset-gt-lg-25{margin-left:auto;margin-right:25%}.flex-offset-gt-lg-30,.offset-gt-lg-30{margin-left:30%}[dir=rtl] .flex-offset-gt-lg-30,[dir=rtl] .offset-gt-lg-30{margin-left:auto;margin-right:30%}.flex-offset-gt-lg-35,.offset-gt-lg-35{margin-left:35%}[dir=rtl] .flex-offset-gt-lg-35,[dir=rtl] .offset-gt-lg-35{margin-left:auto;margin-right:35%}.flex-offset-gt-lg-40,.offset-gt-lg-40{margin-left:40%}[dir=rtl] .flex-offset-gt-lg-40,[dir=rtl] .offset-gt-lg-40{margin-left:auto;margin-right:40%}.flex-offset-gt-lg-45,.offset-gt-lg-45{margin-left:45%}[dir=rtl] .flex-offset-gt-lg-45,[dir=rtl] .offset-gt-lg-45{margin-left:auto;margin-right:45%}.flex-offset-gt-lg-50,.offset-gt-lg-50{margin-left:50%}[dir=rtl] .flex-offset-gt-lg-50,[dir=rtl] .offset-gt-lg-50{margin-left:auto;margin-right:50%}.flex-offset-gt-lg-55,.offset-gt-lg-55{margin-left:55%}[dir=rtl] .flex-offset-gt-lg-55,[dir=rtl] .offset-gt-lg-55{margin-left:auto;margin-right:55%}.flex-offset-gt-lg-60,.offset-gt-lg-60{margin-left:60%}[dir=rtl] .flex-offset-gt-lg-60,[dir=rtl] .offset-gt-lg-60{margin-left:auto;margin-right:60%}.flex-offset-gt-lg-65,.offset-gt-lg-65{margin-left:65%}[dir=rtl] .flex-offset-gt-lg-65,[dir=rtl] .offset-gt-lg-65{margin-left:auto;margin-right:65%}.flex-offset-gt-lg-70,.offset-gt-lg-70{margin-left:70%}[dir=rtl] .flex-offset-gt-lg-70,[dir=rtl] .offset-gt-lg-70{margin-left:auto;margin-right:70%}.flex-offset-gt-lg-75,.offset-gt-lg-75{margin-left:75%}[dir=rtl] .flex-offset-gt-lg-75,[dir=rtl] .offset-gt-lg-75{margin-left:auto;margin-right:75%}.flex-offset-gt-lg-80,.offset-gt-lg-80{margin-left:80%}[dir=rtl] .flex-offset-gt-lg-80,[dir=rtl] .offset-gt-lg-80{margin-left:auto;margin-right:80%}.flex-offset-gt-lg-85,.offset-gt-lg-85{margin-left:85%}[dir=rtl] .flex-offset-gt-lg-85,[dir=rtl] .offset-gt-lg-85{margin-left:auto;margin-right:85%}.flex-offset-gt-lg-90,.offset-gt-lg-90{margin-left:90%}[dir=rtl] .flex-offset-gt-lg-90,[dir=rtl] .offset-gt-lg-90{margin-left:auto;margin-right:90%}.flex-offset-gt-lg-95,.offset-gt-lg-95{margin-left:95%}[dir=rtl] .flex-offset-gt-lg-95,[dir=rtl] .offset-gt-lg-95{margin-left:auto;margin-right:95%}.flex-offset-gt-lg-33,.offset-gt-lg-33{margin-left:calc(100% / 3)}.flex-offset-gt-lg-66,.offset-gt-lg-66{margin-left:calc(200% / 3)}[dir=rtl] .flex-offset-gt-lg-66,[dir=rtl] .offset-gt-lg-66{margin-left:auto;margin-right:calc(200% / 3)}.layout-align-gt-lg,.layout-align-gt-lg-start-stretch{justify-content:flex-start;align-content:stretch;align-items:stretch}.layout-align-gt-lg-start,.layout-align-gt-lg-start-center,.layout-align-gt-lg-start-end,.layout-align-gt-lg-start-start,.layout-align-gt-lg-start-stretch{justify-content:flex-start}.layout-align-gt-lg-center,.layout-align-gt-lg-center-center,.layout-align-gt-lg-center-end,.layout-align-gt-lg-center-start,.layout-align-gt-lg-center-stretch{justify-content:center}.layout-align-gt-lg-end,.layout-align-gt-lg-end-center,.layout-align-gt-lg-end-end,.layout-align-gt-lg-end-start,.layout-align-gt-lg-end-stretch{justify-content:flex-end}.layout-align-gt-lg-space-around,.layout-align-gt-lg-space-around-center,.layout-align-gt-lg-space-around-end,.layout-align-gt-lg-space-around-start,.layout-align-gt-lg-space-around-stretch{justify-content:space-around}.layout-align-gt-lg-space-between,.layout-align-gt-lg-space-between-center,.layout-align-gt-lg-space-between-end,.layout-align-gt-lg-space-between-start,.layout-align-gt-lg-space-between-stretch{justify-content:space-between}.layout-align-gt-lg-center-start,.layout-align-gt-lg-end-start,.layout-align-gt-lg-space-around-start,.layout-align-gt-lg-space-between-start,.layout-align-gt-lg-start-start{align-items:flex-start;align-content:flex-start}.layout-align-gt-lg-center-center,.layout-align-gt-lg-end-center,.layout-align-gt-lg-space-around-center,.layout-align-gt-lg-space-between-center,.layout-align-gt-lg-start-center{align-items:center;align-content:center;max-width:100%}.layout-align-gt-lg-center-center>*,.layout-align-gt-lg-end-center>*,.layout-align-gt-lg-space-around-center>*,.layout-align-gt-lg-space-between-center>*,.layout-align-gt-lg-start-center>*{max-width:100%;box-sizing:border-box}.layout-align-gt-lg-center-end,.layout-align-gt-lg-end-end,.layout-align-gt-lg-space-around-end,.layout-align-gt-lg-space-between-end,.layout-align-gt-lg-start-end{align-items:flex-end;align-content:flex-end}.layout-align-gt-lg-center-stretch,.layout-align-gt-lg-end-stretch,.layout-align-gt-lg-space-around-stretch,.layout-align-gt-lg-space-between-stretch,.layout-align-gt-lg-start-stretch{align-items:stretch;align-content:stretch}.flex-gt-lg{flex:1;box-sizing:border-box}.flex-gt-lg-grow{flex:1 1 100%;box-sizing:border-box}.flex-gt-lg-initial{flex:0 1 auto;box-sizing:border-box}.flex-gt-lg-auto{flex:1 1 auto;box-sizing:border-box}.flex-gt-lg-none{flex:0 0 auto;box-sizing:border-box}.flex-gt-lg-noshrink{flex:1 0 auto;box-sizing:border-box}.flex-gt-lg-nogrow{flex:0 1 auto;box-sizing:border-box}.flex-gt-lg-0{flex:1 1 0%;max-width:0%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-0{flex:1 1 0%;max-width:0%;max-height:100%;box-sizing:border-box;min-width:0}.layout-column>.flex-gt-lg-0{flex:1 1 0%;max-width:100%;max-height:0%;box-sizing:border-box}.layout-row>.flex-gt-lg-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-lg-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-lg-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-lg-row>.flex-gt-lg-0{flex:1 1 0%;max-width:0%;max-height:100%;box-sizing:border-box;min-width:0}.layout-gt-lg-column>.flex-gt-lg-0{flex:1 1 0%;max-width:100%;max-height:0%;box-sizing:border-box;min-height:0}.flex-gt-lg-5{flex:1 1 5%;max-width:5%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-5{flex:1 1 5%;max-width:5%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-lg-5{flex:1 1 5%;max-width:100%;max-height:5%;box-sizing:border-box}.layout-row>.flex-gt-lg-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-lg-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-lg-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-lg-row>.flex-gt-lg-5{flex:1 1 5%;max-width:5%;max-height:100%;box-sizing:border-box}.layout-gt-lg-column>.flex-gt-lg-5{flex:1 1 5%;max-width:100%;max-height:5%;box-sizing:border-box}.flex-gt-lg-10{flex:1 1 10%;max-width:10%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-10{flex:1 1 10%;max-width:10%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-lg-10{flex:1 1 10%;max-width:100%;max-height:10%;box-sizing:border-box}.layout-row>.flex-gt-lg-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-lg-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-lg-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-lg-row>.flex-gt-lg-10{flex:1 1 10%;max-width:10%;max-height:100%;box-sizing:border-box}.layout-gt-lg-column>.flex-gt-lg-10{flex:1 1 10%;max-width:100%;max-height:10%;box-sizing:border-box}.flex-gt-lg-15{flex:1 1 15%;max-width:15%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-15{flex:1 1 15%;max-width:15%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-lg-15{flex:1 1 15%;max-width:100%;max-height:15%;box-sizing:border-box}.layout-row>.flex-gt-lg-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-lg-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-lg-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-lg-row>.flex-gt-lg-15{flex:1 1 15%;max-width:15%;max-height:100%;box-sizing:border-box}.layout-gt-lg-column>.flex-gt-lg-15{flex:1 1 15%;max-width:100%;max-height:15%;box-sizing:border-box}.flex-gt-lg-20{flex:1 1 20%;max-width:20%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-20{flex:1 1 20%;max-width:20%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-lg-20{flex:1 1 20%;max-width:100%;max-height:20%;box-sizing:border-box}.layout-row>.flex-gt-lg-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-lg-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-lg-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-lg-row>.flex-gt-lg-20{flex:1 1 20%;max-width:20%;max-height:100%;box-sizing:border-box}.layout-gt-lg-column>.flex-gt-lg-20{flex:1 1 20%;max-width:100%;max-height:20%;box-sizing:border-box}.flex-gt-lg-25{flex:1 1 25%;max-width:25%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-25{flex:1 1 25%;max-width:25%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-lg-25{flex:1 1 25%;max-width:100%;max-height:25%;box-sizing:border-box}.layout-row>.flex-gt-lg-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-lg-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-lg-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-lg-row>.flex-gt-lg-25{flex:1 1 25%;max-width:25%;max-height:100%;box-sizing:border-box}.layout-gt-lg-column>.flex-gt-lg-25{flex:1 1 25%;max-width:100%;max-height:25%;box-sizing:border-box}.flex-gt-lg-30{flex:1 1 30%;max-width:30%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-30{flex:1 1 30%;max-width:30%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-lg-30{flex:1 1 30%;max-width:100%;max-height:30%;box-sizing:border-box}.layout-row>.flex-gt-lg-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-lg-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-lg-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-lg-row>.flex-gt-lg-30{flex:1 1 30%;max-width:30%;max-height:100%;box-sizing:border-box}.layout-gt-lg-column>.flex-gt-lg-30{flex:1 1 30%;max-width:100%;max-height:30%;box-sizing:border-box}.flex-gt-lg-35{flex:1 1 35%;max-width:35%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-35{flex:1 1 35%;max-width:35%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-lg-35{flex:1 1 35%;max-width:100%;max-height:35%;box-sizing:border-box}.layout-row>.flex-gt-lg-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-lg-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-lg-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-lg-row>.flex-gt-lg-35{flex:1 1 35%;max-width:35%;max-height:100%;box-sizing:border-box}.layout-gt-lg-column>.flex-gt-lg-35{flex:1 1 35%;max-width:100%;max-height:35%;box-sizing:border-box}.flex-gt-lg-40{flex:1 1 40%;max-width:40%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-40{flex:1 1 40%;max-width:40%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-lg-40{flex:1 1 40%;max-width:100%;max-height:40%;box-sizing:border-box}.layout-row>.flex-gt-lg-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-lg-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-lg-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-lg-row>.flex-gt-lg-40{flex:1 1 40%;max-width:40%;max-height:100%;box-sizing:border-box}.layout-gt-lg-column>.flex-gt-lg-40{flex:1 1 40%;max-width:100%;max-height:40%;box-sizing:border-box}.flex-gt-lg-45{flex:1 1 45%;max-width:45%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-45{flex:1 1 45%;max-width:45%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-lg-45{flex:1 1 45%;max-width:100%;max-height:45%;box-sizing:border-box}.layout-row>.flex-gt-lg-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-lg-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-lg-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-lg-row>.flex-gt-lg-45{flex:1 1 45%;max-width:45%;max-height:100%;box-sizing:border-box}.layout-gt-lg-column>.flex-gt-lg-45{flex:1 1 45%;max-width:100%;max-height:45%;box-sizing:border-box}.flex-gt-lg-50{flex:1 1 50%;max-width:50%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-50{flex:1 1 50%;max-width:50%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-lg-50{flex:1 1 50%;max-width:100%;max-height:50%;box-sizing:border-box}.layout-row>.flex-gt-lg-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-lg-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-lg-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-lg-row>.flex-gt-lg-50{flex:1 1 50%;max-width:50%;max-height:100%;box-sizing:border-box}.layout-gt-lg-column>.flex-gt-lg-50{flex:1 1 50%;max-width:100%;max-height:50%;box-sizing:border-box}.flex-gt-lg-55{flex:1 1 55%;max-width:55%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-55{flex:1 1 55%;max-width:55%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-lg-55{flex:1 1 55%;max-width:100%;max-height:55%;box-sizing:border-box}.layout-row>.flex-gt-lg-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-lg-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-lg-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-lg-row>.flex-gt-lg-55{flex:1 1 55%;max-width:55%;max-height:100%;box-sizing:border-box}.layout-gt-lg-column>.flex-gt-lg-55{flex:1 1 55%;max-width:100%;max-height:55%;box-sizing:border-box}.flex-gt-lg-60{flex:1 1 60%;max-width:60%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-60{flex:1 1 60%;max-width:60%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-lg-60{flex:1 1 60%;max-width:100%;max-height:60%;box-sizing:border-box}.layout-row>.flex-gt-lg-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-lg-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-lg-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-lg-row>.flex-gt-lg-60{flex:1 1 60%;max-width:60%;max-height:100%;box-sizing:border-box}.layout-gt-lg-column>.flex-gt-lg-60{flex:1 1 60%;max-width:100%;max-height:60%;box-sizing:border-box}.flex-gt-lg-65{flex:1 1 65%;max-width:65%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-65{flex:1 1 65%;max-width:65%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-lg-65{flex:1 1 65%;max-width:100%;max-height:65%;box-sizing:border-box}.layout-row>.flex-gt-lg-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-lg-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-lg-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-lg-row>.flex-gt-lg-65{flex:1 1 65%;max-width:65%;max-height:100%;box-sizing:border-box}.layout-gt-lg-column>.flex-gt-lg-65{flex:1 1 65%;max-width:100%;max-height:65%;box-sizing:border-box}.flex-gt-lg-70{flex:1 1 70%;max-width:70%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-70{flex:1 1 70%;max-width:70%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-lg-70{flex:1 1 70%;max-width:100%;max-height:70%;box-sizing:border-box}.layout-row>.flex-gt-lg-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-lg-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-lg-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-lg-row>.flex-gt-lg-70{flex:1 1 70%;max-width:70%;max-height:100%;box-sizing:border-box}.layout-gt-lg-column>.flex-gt-lg-70{flex:1 1 70%;max-width:100%;max-height:70%;box-sizing:border-box}.flex-gt-lg-75{flex:1 1 75%;max-width:75%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-75{flex:1 1 75%;max-width:75%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-lg-75{flex:1 1 75%;max-width:100%;max-height:75%;box-sizing:border-box}.layout-row>.flex-gt-lg-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-lg-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-lg-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-lg-row>.flex-gt-lg-75{flex:1 1 75%;max-width:75%;max-height:100%;box-sizing:border-box}.layout-gt-lg-column>.flex-gt-lg-75{flex:1 1 75%;max-width:100%;max-height:75%;box-sizing:border-box}.flex-gt-lg-80{flex:1 1 80%;max-width:80%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-80{flex:1 1 80%;max-width:80%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-lg-80{flex:1 1 80%;max-width:100%;max-height:80%;box-sizing:border-box}.layout-row>.flex-gt-lg-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-lg-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-lg-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-lg-row>.flex-gt-lg-80{flex:1 1 80%;max-width:80%;max-height:100%;box-sizing:border-box}.layout-gt-lg-column>.flex-gt-lg-80{flex:1 1 80%;max-width:100%;max-height:80%;box-sizing:border-box}.flex-gt-lg-85{flex:1 1 85%;max-width:85%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-85{flex:1 1 85%;max-width:85%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-lg-85{flex:1 1 85%;max-width:100%;max-height:85%;box-sizing:border-box}.layout-row>.flex-gt-lg-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-lg-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-lg-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-lg-row>.flex-gt-lg-85{flex:1 1 85%;max-width:85%;max-height:100%;box-sizing:border-box}.layout-gt-lg-column>.flex-gt-lg-85{flex:1 1 85%;max-width:100%;max-height:85%;box-sizing:border-box}.flex-gt-lg-90{flex:1 1 90%;max-width:90%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-90{flex:1 1 90%;max-width:90%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-lg-90{flex:1 1 90%;max-width:100%;max-height:90%;box-sizing:border-box}.layout-row>.flex-gt-lg-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-lg-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-lg-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-lg-row>.flex-gt-lg-90{flex:1 1 90%;max-width:90%;max-height:100%;box-sizing:border-box}.layout-gt-lg-column>.flex-gt-lg-90{flex:1 1 90%;max-width:100%;max-height:90%;box-sizing:border-box}.flex-gt-lg-95{flex:1 1 95%;max-width:95%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-95{flex:1 1 95%;max-width:95%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-lg-95{flex:1 1 95%;max-width:100%;max-height:95%;box-sizing:border-box}.layout-row>.flex-gt-lg-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-lg-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-lg-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-lg-row>.flex-gt-lg-95{flex:1 1 95%;max-width:95%;max-height:100%;box-sizing:border-box}.layout-gt-lg-column>.flex-gt-lg-95{flex:1 1 95%;max-width:100%;max-height:95%;box-sizing:border-box}.flex-gt-lg-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-lg-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-lg-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-lg-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-lg-row>.flex-gt-lg-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-gt-lg-column>.flex-gt-lg-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-gt-lg-row>.flex-gt-lg-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-gt-lg-row>.flex-gt-lg-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-gt-lg-row>.flex{min-width:0}.layout-gt-lg-column>.flex-gt-lg-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-gt-lg-column>.flex-gt-lg-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-lg-column>.flex{min-height:0}.layout-gt-lg,.layout-gt-lg-column,.layout-gt-lg-row{box-sizing:border-box;display:-webkit-box;display:-webkit-flex;display:-moz-box;display:-ms-flexbox;display:flex}.layout-gt-lg-column{flex-direction:column}.layout-gt-lg-row{flex-direction:row}.flex-order-xl--20{order:-20}.flex-order-xl--19{order:-19}.flex-order-xl--18{order:-18}.flex-order-xl--17{order:-17}.flex-order-xl--16{order:-16}.flex-order-xl--15{order:-15}.flex-order-xl--14{order:-14}.flex-order-xl--13{order:-13}.flex-order-xl--12{order:-12}.flex-order-xl--11{order:-11}.flex-order-xl--10{order:-10}.flex-order-xl--9{order:-9}.flex-order-xl--8{order:-8}.flex-order-xl--7{order:-7}.flex-order-xl--6{order:-6}.flex-order-xl--5{order:-5}.flex-order-xl--4{order:-4}.flex-order-xl--3{order:-3}.flex-order-xl--2{order:-2}.flex-order-xl--1{order:-1}.flex-order-xl-0{order:0}.flex-order-xl-1{order:1}.flex-order-xl-2{order:2}.flex-order-xl-3{order:3}.flex-order-xl-4{order:4}.flex-order-xl-5{order:5}.flex-order-xl-6{order:6}.flex-order-xl-7{order:7}.flex-order-xl-8{order:8}.flex-order-xl-9{order:9}.flex-order-xl-10{order:10}.flex-order-xl-11{order:11}.flex-order-xl-12{order:12}.flex-order-xl-13{order:13}.flex-order-xl-14{order:14}.flex-order-xl-15{order:15}.flex-order-xl-16{order:16}.flex-order-xl-17{order:17}.flex-order-xl-18{order:18}.flex-order-xl-19{order:19}.flex-order-xl-20{order:20}.flex-offset-xl-0,.offset-xl-0{margin-left:0}[dir=rtl] .flex-offset-xl-0,[dir=rtl] .offset-xl-0{margin-left:auto;margin-right:0}.flex-offset-xl-5,.offset-xl-5{margin-left:5%}[dir=rtl] .flex-offset-xl-5,[dir=rtl] .offset-xl-5{margin-left:auto;margin-right:5%}.flex-offset-xl-10,.offset-xl-10{margin-left:10%}[dir=rtl] .flex-offset-xl-10,[dir=rtl] .offset-xl-10{margin-left:auto;margin-right:10%}.flex-offset-xl-15,.offset-xl-15{margin-left:15%}[dir=rtl] .flex-offset-xl-15,[dir=rtl] .offset-xl-15{margin-left:auto;margin-right:15%}.flex-offset-xl-20,.offset-xl-20{margin-left:20%}[dir=rtl] .flex-offset-xl-20,[dir=rtl] .offset-xl-20{margin-left:auto;margin-right:20%}.flex-offset-xl-25,.offset-xl-25{margin-left:25%}[dir=rtl] .flex-offset-xl-25,[dir=rtl] .offset-xl-25{margin-left:auto;margin-right:25%}.flex-offset-xl-30,.offset-xl-30{margin-left:30%}[dir=rtl] .flex-offset-xl-30,[dir=rtl] .offset-xl-30{margin-left:auto;margin-right:30%}.flex-offset-xl-35,.offset-xl-35{margin-left:35%}[dir=rtl] .flex-offset-xl-35,[dir=rtl] .offset-xl-35{margin-left:auto;margin-right:35%}.flex-offset-xl-40,.offset-xl-40{margin-left:40%}[dir=rtl] .flex-offset-xl-40,[dir=rtl] .offset-xl-40{margin-left:auto;margin-right:40%}.flex-offset-xl-45,.offset-xl-45{margin-left:45%}[dir=rtl] .flex-offset-xl-45,[dir=rtl] .offset-xl-45{margin-left:auto;margin-right:45%}.flex-offset-xl-50,.offset-xl-50{margin-left:50%}[dir=rtl] .flex-offset-xl-50,[dir=rtl] .offset-xl-50{margin-left:auto;margin-right:50%}.flex-offset-xl-55,.offset-xl-55{margin-left:55%}[dir=rtl] .flex-offset-xl-55,[dir=rtl] .offset-xl-55{margin-left:auto;margin-right:55%}.flex-offset-xl-60,.offset-xl-60{margin-left:60%}[dir=rtl] .flex-offset-xl-60,[dir=rtl] .offset-xl-60{margin-left:auto;margin-right:60%}.flex-offset-xl-65,.offset-xl-65{margin-left:65%}[dir=rtl] .flex-offset-xl-65,[dir=rtl] .offset-xl-65{margin-left:auto;margin-right:65%}.flex-offset-xl-70,.offset-xl-70{margin-left:70%}[dir=rtl] .flex-offset-xl-70,[dir=rtl] .offset-xl-70{margin-left:auto;margin-right:70%}.flex-offset-xl-75,.offset-xl-75{margin-left:75%}[dir=rtl] .flex-offset-xl-75,[dir=rtl] .offset-xl-75{margin-left:auto;margin-right:75%}.flex-offset-xl-80,.offset-xl-80{margin-left:80%}[dir=rtl] .flex-offset-xl-80,[dir=rtl] .offset-xl-80{margin-left:auto;margin-right:80%}.flex-offset-xl-85,.offset-xl-85{margin-left:85%}[dir=rtl] .flex-offset-xl-85,[dir=rtl] .offset-xl-85{margin-left:auto;margin-right:85%}.flex-offset-xl-90,.offset-xl-90{margin-left:90%}[dir=rtl] .flex-offset-xl-90,[dir=rtl] .offset-xl-90{margin-left:auto;margin-right:90%}.flex-offset-xl-95,.offset-xl-95{margin-left:95%}[dir=rtl] .flex-offset-xl-95,[dir=rtl] .offset-xl-95{margin-left:auto;margin-right:95%}.flex-offset-xl-33,.offset-xl-33{margin-left:calc(100% / 3)}.flex-offset-xl-66,.offset-xl-66{margin-left:calc(200% / 3)}[dir=rtl] .flex-offset-xl-66,[dir=rtl] .offset-xl-66{margin-left:auto;margin-right:calc(200% / 3)}.layout-align-xl,.layout-align-xl-start-stretch{justify-content:flex-start;align-content:stretch;align-items:stretch}.layout-align-xl-start,.layout-align-xl-start-center,.layout-align-xl-start-end,.layout-align-xl-start-start,.layout-align-xl-start-stretch{justify-content:flex-start}.layout-align-xl-center,.layout-align-xl-center-center,.layout-align-xl-center-end,.layout-align-xl-center-start,.layout-align-xl-center-stretch{justify-content:center}.layout-align-xl-end,.layout-align-xl-end-center,.layout-align-xl-end-end,.layout-align-xl-end-start,.layout-align-xl-end-stretch{justify-content:flex-end}.layout-align-xl-space-around,.layout-align-xl-space-around-center,.layout-align-xl-space-around-end,.layout-align-xl-space-around-start,.layout-align-xl-space-around-stretch{justify-content:space-around}.layout-align-xl-space-between,.layout-align-xl-space-between-center,.layout-align-xl-space-between-end,.layout-align-xl-space-between-start,.layout-align-xl-space-between-stretch{justify-content:space-between}.layout-align-xl-center-start,.layout-align-xl-end-start,.layout-align-xl-space-around-start,.layout-align-xl-space-between-start,.layout-align-xl-start-start{align-items:flex-start;align-content:flex-start}.layout-align-xl-center-center,.layout-align-xl-end-center,.layout-align-xl-space-around-center,.layout-align-xl-space-between-center,.layout-align-xl-start-center{align-items:center;align-content:center;max-width:100%}.layout-align-xl-center-center>*,.layout-align-xl-end-center>*,.layout-align-xl-space-around-center>*,.layout-align-xl-space-between-center>*,.layout-align-xl-start-center>*{max-width:100%;box-sizing:border-box}.layout-align-xl-center-end,.layout-align-xl-end-end,.layout-align-xl-space-around-end,.layout-align-xl-space-between-end,.layout-align-xl-start-end{align-items:flex-end;align-content:flex-end}.layout-align-xl-center-stretch,.layout-align-xl-end-stretch,.layout-align-xl-space-around-stretch,.layout-align-xl-space-between-stretch,.layout-align-xl-start-stretch{align-items:stretch;align-content:stretch}.flex-xl{flex:1;box-sizing:border-box}.flex-xl-grow{flex:1 1 100%;box-sizing:border-box}.flex-xl-initial{flex:0 1 auto;box-sizing:border-box}.flex-xl-auto{flex:1 1 auto;box-sizing:border-box}.flex-xl-none{flex:0 0 auto;box-sizing:border-box}.flex-xl-noshrink{flex:1 0 auto;box-sizing:border-box}.flex-xl-nogrow{flex:0 1 auto;box-sizing:border-box}.flex-xl-0{flex:1 1 0%;max-width:0%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-0{flex:1 1 0%;max-width:0%;max-height:100%;box-sizing:border-box;min-width:0}.layout-column>.flex-xl-0{flex:1 1 0%;max-width:100%;max-height:0%;box-sizing:border-box}.layout-row>.flex-xl-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xl-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-xl-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-xl-row>.flex-xl-0{flex:1 1 0%;max-width:0%;max-height:100%;box-sizing:border-box;min-width:0}.layout-xl-column>.flex-xl-0{flex:1 1 0%;max-width:100%;max-height:0%;box-sizing:border-box;min-height:0}.flex-xl-5{flex:1 1 5%;max-width:5%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-5{flex:1 1 5%;max-width:5%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xl-5{flex:1 1 5%;max-width:100%;max-height:5%;box-sizing:border-box}.layout-row>.flex-xl-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xl-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-xl-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-xl-row>.flex-xl-5{flex:1 1 5%;max-width:5%;max-height:100%;box-sizing:border-box}.layout-xl-column>.flex-xl-5{flex:1 1 5%;max-width:100%;max-height:5%;box-sizing:border-box}.flex-xl-10{flex:1 1 10%;max-width:10%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-10{flex:1 1 10%;max-width:10%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xl-10{flex:1 1 10%;max-width:100%;max-height:10%;box-sizing:border-box}.layout-row>.flex-xl-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xl-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-xl-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-xl-row>.flex-xl-10{flex:1 1 10%;max-width:10%;max-height:100%;box-sizing:border-box}.layout-xl-column>.flex-xl-10{flex:1 1 10%;max-width:100%;max-height:10%;box-sizing:border-box}.flex-xl-15{flex:1 1 15%;max-width:15%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-15{flex:1 1 15%;max-width:15%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xl-15{flex:1 1 15%;max-width:100%;max-height:15%;box-sizing:border-box}.layout-row>.flex-xl-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xl-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-xl-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-xl-row>.flex-xl-15{flex:1 1 15%;max-width:15%;max-height:100%;box-sizing:border-box}.layout-xl-column>.flex-xl-15{flex:1 1 15%;max-width:100%;max-height:15%;box-sizing:border-box}.flex-xl-20{flex:1 1 20%;max-width:20%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-20{flex:1 1 20%;max-width:20%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xl-20{flex:1 1 20%;max-width:100%;max-height:20%;box-sizing:border-box}.layout-row>.flex-xl-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xl-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-xl-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-xl-row>.flex-xl-20{flex:1 1 20%;max-width:20%;max-height:100%;box-sizing:border-box}.layout-xl-column>.flex-xl-20{flex:1 1 20%;max-width:100%;max-height:20%;box-sizing:border-box}.flex-xl-25{flex:1 1 25%;max-width:25%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-25{flex:1 1 25%;max-width:25%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xl-25{flex:1 1 25%;max-width:100%;max-height:25%;box-sizing:border-box}.layout-row>.flex-xl-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xl-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-xl-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-xl-row>.flex-xl-25{flex:1 1 25%;max-width:25%;max-height:100%;box-sizing:border-box}.layout-xl-column>.flex-xl-25{flex:1 1 25%;max-width:100%;max-height:25%;box-sizing:border-box}.flex-xl-30{flex:1 1 30%;max-width:30%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-30{flex:1 1 30%;max-width:30%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xl-30{flex:1 1 30%;max-width:100%;max-height:30%;box-sizing:border-box}.layout-row>.flex-xl-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xl-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-xl-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-xl-row>.flex-xl-30{flex:1 1 30%;max-width:30%;max-height:100%;box-sizing:border-box}.layout-xl-column>.flex-xl-30{flex:1 1 30%;max-width:100%;max-height:30%;box-sizing:border-box}.flex-xl-35{flex:1 1 35%;max-width:35%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-35{flex:1 1 35%;max-width:35%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xl-35{flex:1 1 35%;max-width:100%;max-height:35%;box-sizing:border-box}.layout-row>.flex-xl-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xl-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-xl-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-xl-row>.flex-xl-35{flex:1 1 35%;max-width:35%;max-height:100%;box-sizing:border-box}.layout-xl-column>.flex-xl-35{flex:1 1 35%;max-width:100%;max-height:35%;box-sizing:border-box}.flex-xl-40{flex:1 1 40%;max-width:40%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-40{flex:1 1 40%;max-width:40%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xl-40{flex:1 1 40%;max-width:100%;max-height:40%;box-sizing:border-box}.layout-row>.flex-xl-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xl-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-xl-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-xl-row>.flex-xl-40{flex:1 1 40%;max-width:40%;max-height:100%;box-sizing:border-box}.layout-xl-column>.flex-xl-40{flex:1 1 40%;max-width:100%;max-height:40%;box-sizing:border-box}.flex-xl-45{flex:1 1 45%;max-width:45%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-45{flex:1 1 45%;max-width:45%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xl-45{flex:1 1 45%;max-width:100%;max-height:45%;box-sizing:border-box}.layout-row>.flex-xl-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xl-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-xl-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-xl-row>.flex-xl-45{flex:1 1 45%;max-width:45%;max-height:100%;box-sizing:border-box}.layout-xl-column>.flex-xl-45{flex:1 1 45%;max-width:100%;max-height:45%;box-sizing:border-box}.flex-xl-50{flex:1 1 50%;max-width:50%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-50{flex:1 1 50%;max-width:50%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xl-50{flex:1 1 50%;max-width:100%;max-height:50%;box-sizing:border-box}.layout-row>.flex-xl-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xl-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-xl-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-xl-row>.flex-xl-50{flex:1 1 50%;max-width:50%;max-height:100%;box-sizing:border-box}.layout-xl-column>.flex-xl-50{flex:1 1 50%;max-width:100%;max-height:50%;box-sizing:border-box}.flex-xl-55{flex:1 1 55%;max-width:55%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-55{flex:1 1 55%;max-width:55%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xl-55{flex:1 1 55%;max-width:100%;max-height:55%;box-sizing:border-box}.layout-row>.flex-xl-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xl-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-xl-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-xl-row>.flex-xl-55{flex:1 1 55%;max-width:55%;max-height:100%;box-sizing:border-box}.layout-xl-column>.flex-xl-55{flex:1 1 55%;max-width:100%;max-height:55%;box-sizing:border-box}.flex-xl-60{flex:1 1 60%;max-width:60%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-60{flex:1 1 60%;max-width:60%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xl-60{flex:1 1 60%;max-width:100%;max-height:60%;box-sizing:border-box}.layout-row>.flex-xl-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xl-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-xl-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-xl-row>.flex-xl-60{flex:1 1 60%;max-width:60%;max-height:100%;box-sizing:border-box}.layout-xl-column>.flex-xl-60{flex:1 1 60%;max-width:100%;max-height:60%;box-sizing:border-box}.flex-xl-65{flex:1 1 65%;max-width:65%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-65{flex:1 1 65%;max-width:65%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xl-65{flex:1 1 65%;max-width:100%;max-height:65%;box-sizing:border-box}.layout-row>.flex-xl-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xl-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-xl-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-xl-row>.flex-xl-65{flex:1 1 65%;max-width:65%;max-height:100%;box-sizing:border-box}.layout-xl-column>.flex-xl-65{flex:1 1 65%;max-width:100%;max-height:65%;box-sizing:border-box}.flex-xl-70{flex:1 1 70%;max-width:70%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-70{flex:1 1 70%;max-width:70%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xl-70{flex:1 1 70%;max-width:100%;max-height:70%;box-sizing:border-box}.layout-row>.flex-xl-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xl-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-xl-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-xl-row>.flex-xl-70{flex:1 1 70%;max-width:70%;max-height:100%;box-sizing:border-box}.layout-xl-column>.flex-xl-70{flex:1 1 70%;max-width:100%;max-height:70%;box-sizing:border-box}.flex-xl-75{flex:1 1 75%;max-width:75%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-75{flex:1 1 75%;max-width:75%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xl-75{flex:1 1 75%;max-width:100%;max-height:75%;box-sizing:border-box}.layout-row>.flex-xl-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xl-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-xl-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-xl-row>.flex-xl-75{flex:1 1 75%;max-width:75%;max-height:100%;box-sizing:border-box}.layout-xl-column>.flex-xl-75{flex:1 1 75%;max-width:100%;max-height:75%;box-sizing:border-box}.flex-xl-80{flex:1 1 80%;max-width:80%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-80{flex:1 1 80%;max-width:80%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xl-80{flex:1 1 80%;max-width:100%;max-height:80%;box-sizing:border-box}.layout-row>.flex-xl-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xl-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-xl-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-xl-row>.flex-xl-80{flex:1 1 80%;max-width:80%;max-height:100%;box-sizing:border-box}.layout-xl-column>.flex-xl-80{flex:1 1 80%;max-width:100%;max-height:80%;box-sizing:border-box}.flex-xl-85{flex:1 1 85%;max-width:85%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-85{flex:1 1 85%;max-width:85%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xl-85{flex:1 1 85%;max-width:100%;max-height:85%;box-sizing:border-box}.layout-row>.flex-xl-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xl-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-xl-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-xl-row>.flex-xl-85{flex:1 1 85%;max-width:85%;max-height:100%;box-sizing:border-box}.layout-xl-column>.flex-xl-85{flex:1 1 85%;max-width:100%;max-height:85%;box-sizing:border-box}.flex-xl-90{flex:1 1 90%;max-width:90%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-90{flex:1 1 90%;max-width:90%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xl-90{flex:1 1 90%;max-width:100%;max-height:90%;box-sizing:border-box}.layout-row>.flex-xl-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xl-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-xl-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-xl-row>.flex-xl-90{flex:1 1 90%;max-width:90%;max-height:100%;box-sizing:border-box}.layout-xl-column>.flex-xl-90{flex:1 1 90%;max-width:100%;max-height:90%;box-sizing:border-box}.flex-xl-95{flex:1 1 95%;max-width:95%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-95{flex:1 1 95%;max-width:95%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xl-95{flex:1 1 95%;max-width:100%;max-height:95%;box-sizing:border-box}.layout-row>.flex-xl-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xl-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-xl-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-xl-row>.flex-xl-95{flex:1 1 95%;max-width:95%;max-height:100%;box-sizing:border-box}.layout-xl-column>.flex-xl-95{flex:1 1 95%;max-width:100%;max-height:95%;box-sizing:border-box}.flex-xl-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xl-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xl-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-xl-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-xl-row>.flex-xl-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-xl-column>.flex-xl-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-xl-row>.flex-xl-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-xl-row>.flex-xl-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-xl-row>.flex{min-width:0}.layout-xl-column>.flex-xl-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-xl-column>.flex-xl-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-xl-column>.flex{min-height:0}.layout-xl,.layout-xl-column,.layout-xl-row{box-sizing:border-box;display:-webkit-box;display:-webkit-flex;display:-moz-box;display:-ms-flexbox;display:flex}.layout-xl-column{flex-direction:column}.layout-xl-row{flex-direction:row}.hide-gt-lg:not(.show-gt-xs):not(.show-gt-sm):not(.show-gt-md):not(.show-gt-lg):not(.show-xl):not(.show),.hide-gt-md:not(.show-gt-xs):not(.show-gt-sm):not(.show-gt-md):not(.show-gt-lg):not(.show-xl):not(.show),.hide-gt-sm:not(.show-gt-xs):not(.show-gt-sm):not(.show-gt-md):not(.show-gt-lg):not(.show-xl):not(.show),.hide-gt-xs:not(.show-gt-xs):not(.show-gt-sm):not(.show-gt-md):not(.show-gt-lg):not(.show-xl):not(.show),.hide:not(.show-gt-xs):not(.show-gt-sm):not(.show-gt-md):not(.show-gt-lg):not(.show-xl):not(.show){display:none}.hide-xl:not(.show-xl):not(.show-gt-lg):not(.show-gt-md):not(.show-gt-sm):not(.show-gt-xs):not(.show){display:none}}@media print{.hide-print:not(.show-print):not(.show){display:none!important}}md-menu[md-nest-level='1']{margin:0}md-menu[md-nest-level='1'] .md-button{display:inline-block;border-radius:0;margin:auto 0;font-size:15px;text-transform:none;font-weight:400;height:100%;padding-left:16px;padding-right:16px;width:100%}*{text-rendering:optimizeLegibility;-o-text-rendering:optimizeLegibility;-ms-text-rendering:optimizeLegibility;-moz-text-rendering:optimizeLegibility;-webkit-text-rendering:optimizeLegibility;-webkit-tap-highlight-color:transparent;box-sizing:border-box}:after,:before{box-sizing:border-box}:focus{outline:0}:not(md-input-container)>button,:not(md-input-container)>input[type=button],:not(md-input-container)>input[type=email],:not(md-input-container)>input[type=image],:not(md-input-container)>input[type=password],:not(md-input-container)>input[type=search],:not(md-input-container)>input[type=submit],:not(md-input-container)>input[type=tel],:not(md-input-container)>input[type=text],:not(md-input-container)>textarea{-webkit-border-radius:0;-moz-border-radius:0;border-radius:0;appearance:none;-moz-appearance:none;-webkit-appearance:none;border:none;padding:0;margin:0}:not(md-input-container)>button,:not(md-input-container)>input[type=button],:not(md-input-container)>input[type=submit]{background:0 0}button{border-radius:0;font-family:inherit;font-size:inherit;padding:0;margin:0;appearance:none;-moz-appearance:none;-webkit-appearance:none}[layout]>*{min-height:auto;min-height:initial}md-card>:not(md-card-content) img,md-card>img{height:inherit;height:initial}.md-datepicker-calendar-pane *{box-sizing:initial}md-autocomplete-wrap>input[type=search]{background:#fff;padding:0 15px!important}md-backdrop.md-opaque{background-color:rgba(33,33,33,.48)!important}md-card md-card-header md-card-avatar md-icon{width:40px;height:40px}md-checkbox.no-label{margin:0}md-chip .md-chip-remove md-icon{margin-left:2px}md-chip .md-chip-remove md-icon svg{width:18px;height:18px;max-width:18px;max-height:18px;margin:4px}md-datepicker .md-datepicker-button{padding:0!important;margin:0!important;vertical-align:middle}md-datepicker .md-datepicker-input-container{margin-left:0}.md-inline-form md-datepicker{margin-top:14px}md-dialog md-dialog-content{padding:32px 24px 24px 24px}md-dialog md-dialog-actions{min-height:64px;padding-top:8px;padding-bottom:8px}md-dialog md-dialog-actions .md-button{margin:0 8px}md-input-container.no-errors-spacer .md-errors-spacer{display:none}md-input-container .input-hint{position:absolute;right:auto;bottom:7px;left:2px;font-size:12px;line-height:14px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-input-container.md-icon-left .input-hint{left:38px}md-list-item .md-list-item-text p{font-size:13px!important}.md-menu,md-menu{padding:0}md-menu-content.md-menu-bar-menu.md-dense{padding:8px 0}md-menu-content.md-menu-bar-menu.md-dense .md-button,md-menu-content.md-menu-bar-menu.md-dense md-menu-item{height:40px;line-height:40px}md-menu-content.md-menu-bar-menu.md-dense .md-button.md-indent>md-icon,md-menu-content.md-menu-bar-menu.md-dense md-menu-item.md-indent>md-icon{top:8px}.md-open-menu-container md-menu-content md-menu-item.selected{opacity:.4}md-menu-content md-menu-item .md-button{text-align:left}md-select.simplified{margin:0 8px}md-select.simplified .md-select-value{border:none!important;box-sizing:border-box;padding:0}md-select.simplified .md-select-value :first-child{transform:none;height:auto}md-select.simplified .md-select-value .md-select-icon{transform:none;font-size:16px}md-select.simplified .md-select-value .md-select-icon:after{top:1px}md-select[multiple] md-select-value>:first-child{display:flex}md-select[multiple] md-select-value>:first-child>:first-child{flex:0}md-select[multiple] md-select-value>:first-child .md-container{padding-right:6px}md-select[multiple] md-select-value>:first-child .md-container:first-of-type{padding-right:0}md-select-menu md-select-header{position:relative;display:flex;align-items:center;width:auto;height:48px;padding-left:10.667px;box-shadow:0 1px 0 0 rgba(0,0,0,.1),0 0 0 0 rgba(0,0,0,.14),0 0 0 0 rgba(0,0,0,.12);cursor:pointer}md-select-menu md-select-header input[type=search]{border:none;outline:0;height:100%;width:100%;padding:0}md-sidenav{-webkit-overflow-scrolling:touch}md-toolbar.colored-toolbar{color:rgba(255,255,255,.87)}md-toolbar.colored-toolbar md-menu-bar md-menu._md-open>button{background:rgba(0,0,0,.12)}md-toolbar.colored-toolbar md-menu._md-open>button{background:rgba(0,0,0,.12)}md-toolbar.colored-toolbar input{color:rgba(255,255,255,.87)!important}md-progress-circular[disabled]{visibility:hidden}body,html{overflow:hidden!important}#main{position:fixed;top:0;left:0;width:100vw;height:100vh}body.boxed{background:#3f4450}body.boxed #main{overflow:hidden!important;width:100%;max-width:1280px;margin:0 auto;box-shadow:0 0 12px rgba(0,0,0,.45)}#layout-content-only{position:relative;height:100%;max-height:100%}#layout-content-only #content{position:absolute;top:0;right:0;bottom:0;left:0}#layout-content-with-toolbar{position:relative;height:100%;max-height:100%}#layout-content-with-toolbar #content{position:absolute;top:64px;right:0;bottom:0;left:0}#layout-vertical-navigation{width:100%;height:100%;max-height:100%}#layout-vertical-navigation #content-container{position:relative;overflow:hidden;width:100%;height:100%}#layout-vertical-navigation #content-container #content{width:100%;height:100%;overflow:auto}#layout-vertical-navigation-fullwidth-toolbar{height:100%;max-height:100%}#layout-vertical-navigation-fullwidth-toolbar #main-container{position:relative}#layout-vertical-navigation-fullwidth-toolbar #main-container #content-container{position:relative;overflow:hidden}#layout-vertical-navigation-fullwidth-toolbar #main-container #content-container #content{position:absolute;top:0;right:0;bottom:0;left:0}#layout-vertical-navigation-fullwidth-toolbar-2{height:100%;max-height:100%}#layout-vertical-navigation-fullwidth-toolbar-2 #main-container{position:relative}#layout-vertical-navigation-fullwidth-toolbar-2 #main-container #content-container{position:relative;overflow:hidden}#layout-vertical-navigation-fullwidth-toolbar-2 #main-container #content-container #content{position:absolute;top:0;right:0;bottom:0;left:0}#layout-horizontal-navigation{height:100%;max-height:100%}#layout-horizontal-navigation #content-container{position:relative;overflow:hidden}#layout-horizontal-navigation #content-container #content{position:absolute;top:0;right:0;bottom:0;left:0}.page-layout{position:relative;overflow:hidden}.page-layout .top-bg{position:absolute;z-index:1;top:0;right:0;left:0;height:200px;background-image:url(/assets/images/backgrounds/header-bg.png);background-size:cover}.page-layout md-backdrop{z-index:50}.page-layout>.header .breadcrumb{margin-bottom:16px;font-weight:500;color:rgba(0,0,0,.54)}.page-layout>.header .breadcrumb md-icon{margin:0}.page-layout>.header .breadcrumb .separator{margin:0 8px}.page-layout>.header .title{font-size:34px}.page-layout.carded{min-height:100%;height:100%}.page-layout.carded.fullwidth.single-scroll{height:auto}.page-layout.carded.fullwidth.single-scroll>.center .content-card .content{overflow:hidden}.page-layout.carded.fullwidth>.center{position:relative;z-index:2;margin-left:32px;margin-right:32px}.page-layout.carded.fullwidth>.center .header{height:136px;min-height:136px;max-height:136px;padding:24px}.page-layout.carded.fullwidth>.center .content-card{background:#fff;box-shadow:0 4px 5px -2px rgba(0,0,0,.2),0 7px 10px 1px rgba(0,0,0,.14),0 2px 16px 1px rgba(0,0,0,.12);overflow:hidden}.page-layout.carded.fullwidth>.center .content-card .toolbar{padding:8px 24px;height:64px;min-height:64px;max-height:64px;border-bottom:1px solid rgba(0,0,0,.12)}.page-layout.carded.fullwidth>.center .content-card .content{padding:24px;background:#fff}.page-layout.carded.left-sidenav.single-scroll{height:auto}.page-layout.carded.left-sidenav.single-scroll>.center .content-card .content{overflow:hidden}.page-layout.carded.left-sidenav>.sidenav{width:240px;min-width:240px;max-width:240px;box-shadow:0 4px 5px -2px rgba(0,0,0,.2),0 7px 10px 1px rgba(0,0,0,.14),0 2px 16px 1px rgba(0,0,0,.12);z-index:51}.page-layout.carded.left-sidenav>.sidenav .header{height:200px;min-height:200px;max-height:200px;padding:24px}.page-layout.carded.left-sidenav>.sidenav .content{background:0 0;padding:24px}.page-layout.carded.left-sidenav>.sidenav.md-locked-open{width:220px;min-width:220px;max-width:220px;z-index:2;background:0 0;box-shadow:none}.page-layout.carded.left-sidenav>.sidenav.md-locked-open+.center{margin-left:0}.page-layout.carded.left-sidenav>.sidenav:not(.md-locked-open) .header{border-bottom:1px solid rgba(0,0,0,.12)}.page-layout.carded.left-sidenav>.sidenav:not(.md-locked-open) .content{overflow:hidden}.page-layout.carded.left-sidenav>.center{position:relative;z-index:2;margin-left:32px;margin-right:32px}.page-layout.carded.left-sidenav>.center .header{height:136px;min-height:136px;max-height:136px;padding:24px}.page-layout.carded.left-sidenav>.center .content-card{background:#fff;box-shadow:0 4px 5px -2px rgba(0,0,0,.2),0 7px 10px 1px rgba(0,0,0,.14),0 2px 16px 1px rgba(0,0,0,.12);overflow:hidden}.page-layout.carded.left-sidenav>.center .content-card .toolbar{padding:8px 24px;height:64px;min-height:64px;max-height:64px;border-bottom:1px solid rgba(0,0,0,.12)}.page-layout.carded.left-sidenav>.center .content-card .toolbar .sidenav-toggle{margin:0 8px 0 0!important;padding:0!important;border-radius:0}.page-layout.carded.left-sidenav>.center .content-card .content{padding:24px;background:#fff}.page-layout.carded.right-sidenav.single-scroll{height:auto}.page-layout.carded.right-sidenav.single-scroll>.center .content-card .content{overflow:hidden}.page-layout.carded.right-sidenav>.sidenav{width:240px;min-width:240px;max-width:240px;box-shadow:0 4px 5px -2px rgba(0,0,0,.2),0 7px 10px 1px rgba(0,0,0,.14),0 2px 16px 1px rgba(0,0,0,.12);z-index:51}.page-layout.carded.right-sidenav>.sidenav .header{height:200px;min-height:200px;max-height:200px;padding:24px 24px 24px 0}.page-layout.carded.right-sidenav>.sidenav .content{background:0 0;padding:24px 24px 24px 0}.page-layout.carded.right-sidenav>.sidenav.md-locked-open{width:196px;min-width:196px;max-width:196px;z-index:2;background:0 0;box-shadow:none}.page-layout.carded.right-sidenav>.sidenav:not(.md-locked-open) .header{padding:24px;border-bottom:1px solid rgba(0,0,0,.12)}.page-layout.carded.right-sidenav>.sidenav:not(.md-locked-open) .content{overflow:hidden;padding:24px}.page-layout.carded.right-sidenav>.center{position:relative;z-index:2;margin-left:32px;margin-right:32px}.page-layout.carded.right-sidenav>.center .header{height:136px;min-height:136px;max-height:136px;padding:24px}.page-layout.carded.right-sidenav>.center .content-card{background:#fff;box-shadow:0 4px 5px -2px rgba(0,0,0,.2),0 7px 10px 1px rgba(0,0,0,.14),0 2px 16px 1px rgba(0,0,0,.12);overflow:hidden}.page-layout.carded.right-sidenav>.center .content-card .toolbar{padding:8px 24px;height:64px;min-height:64px;max-height:64px;border-bottom:1px solid rgba(0,0,0,.12)}.page-layout.carded.right-sidenav>.center .content-card .toolbar .sidenav-toggle{margin:0 0 0 8px!important;padding:0!important;border-radius:0}.page-layout.carded.right-sidenav>.center .content-card .content{padding:24px;background:#fff}.page-layout.simple.fullwidth,.page-layout.simple.inner-sidenav{min-height:100%}.page-layout.simple.fullwidth>.header,.page-layout.simple.inner-sidenav>.header{height:200px;min-height:200px;max-height:200px;padding:24px;background-image:url(/assets/images/backgrounds/header-bg.png);background-size:cover}.page-layout.simple.fullwidth>.content,.page-layout.simple.inner-sidenav>.content{padding:24px}.page-layout.simple.left-sidenav{min-height:100%;height:100%}.page-layout.simple.left-sidenav.single-scroll{height:auto}.page-layout.simple.left-sidenav.single-scroll>.center{overflow:hidden}.page-layout.simple.left-sidenav.inner-sidenav>.content>md-sidenav{margin-right:24px}.page-layout.simple.left-sidenav .sidenav{width:240px;min-width:240px;max-width:240px;padding:24px;z-index:51;box-shadow:0 4px 5px -2px rgba(0,0,0,.2),0 7px 10px 1px rgba(0,0,0,.14),0 2px 16px 1px rgba(0,0,0,.12)}.page-layout.simple.left-sidenav .sidenav.md-locked-open{width:220px;min-width:220px;max-width:220px;z-index:2;box-shadow:none;background:0 0}.page-layout.simple.left-sidenav>.center{position:relative;overflow:auto;z-index:3;box-shadow:0 4px 5px -2px rgba(0,0,0,.2),0 7px 10px 1px rgba(0,0,0,.14),0 2px 16px 1px rgba(0,0,0,.12)}.page-layout.simple.left-sidenav>.center .header{height:200px;min-height:200px;max-height:200px;padding:24px;background-image:url(/assets/images/backgrounds/header-bg.png);background-size:cover}.page-layout.simple.left-sidenav>.center .content{padding:24px;background:#fff}.page-layout.simple.right-sidenav{min-height:100%;height:100%}.page-layout.simple.right-sidenav.single-scroll{height:auto}.page-layout.simple.right-sidenav.single-scroll>.center{overflow:hidden}.page-layout.simple.right-sidenav.inner-sidenav>.content>md-sidenav{margin-left:24px}.page-layout.simple.right-sidenav .sidenav{width:240px;min-width:240px;max-width:240px;padding:24px;z-index:51;box-shadow:0 4px 5px -2px rgba(0,0,0,.2),0 7px 10px 1px rgba(0,0,0,.14),0 2px 16px 1px rgba(0,0,0,.12)}.page-layout.simple.right-sidenav .sidenav.md-locked-open{width:220px;min-width:220px;max-width:220px;z-index:2;box-shadow:none;background:0 0}.page-layout.simple.right-sidenav>.center{position:relative;overflow:auto;z-index:3;box-shadow:0 4px 5px -2px rgba(0,0,0,.2),0 7px 10px 1px rgba(0,0,0,.14),0 2px 16px 1px rgba(0,0,0,.12)}.page-layout.simple.right-sidenav>.center .header{height:200px;min-height:200px;max-height:200px;padding:24px;background-image:url(/assets/images/backgrounds/header-bg.png);background-size:cover}.page-layout.simple.right-sidenav>.center .content{padding:24px;background:#fff}.page-layout.simple.inner-sidenav{height:auto}.page-layout.simple.inner-sidenav>.content>md-sidenav.md-locked-open{padding:0}.page-layout.simple.tabbed{width:100%;height:100%;min-height:100%}.page-layout.simple.tabbed>.header{height:200px;min-height:200px;max-height:200px;padding:24px;background-image:url(/assets/images/backgrounds/header-bg.png);background-size:cover}.page-layout.simple.tabbed>.content{width:100%;height:100%;overflow:hidden}.page-layout.simple.tabbed>.content>md-tabs>md-tabs-wrapper{background:#fff;box-shadow:0 1px 3px 0 rgba(0,0,0,.2),0 1px 1px 0 rgba(0,0,0,.14),0 2px 1px -1px rgba(0,0,0,.12);padding:0 24px}.page-layout.simple.tabbed>.content>md-tabs>md-tabs-wrapper md-tabs-canvas{height:56px}.page-layout.simple.tabbed>.content>md-tabs>md-tabs-wrapper md-tabs-canvas md-pagination-wrapper{height:56px}.page-layout.simple.tabbed>.content>md-tabs>md-tabs-wrapper md-tabs-canvas .md-tab{padding:16px 24px;text-transform:none}.page-layout.simple.tabbed>.content>md-tabs:not(.md-dynamic-height) md-tabs-content-wrapper{top:56px}.page-layout.simple.tabbed>.content>md-tabs>md-tabs-content-wrapper{width:100%;height:calc(100% - 56px)}.page-layout.simple.tabbed>.content>md-tabs>md-tabs-content-wrapper>md-tab-content.md-active{padding:24px;box-sizing:border-box;overflow:auto;width:100%;height:100%;display:block}.page-layout.simple.tabbed>.content>md-nav-bar .md-nav-bar{background:#fff;box-shadow:0 1px 3px 0 rgba(0,0,0,.2),0 1px 1px 0 rgba(0,0,0,.14),0 2px 1px -1px rgba(0,0,0,.12);border:none;height:56px}.page-layout.simple.tabbed>.content>md-nav-bar .md-nav-bar nav{margin:0 12px}.page-layout.simple.tabbed>.content>md-nav-bar .md-nav-bar nav .md-nav-item{height:56px}.page-layout.simple.tabbed>.content>md-nav-bar .md-nav-bar nav .md-nav-item ._md-nav-button{height:56px;line-height:32px}.page-layout.simple.tabbed>.content>md-nav-bar .md-nav-bar nav .md-nav-item ._md-nav-button-text{text-transform:none}.page-layout.blank{min-height:100%;padding:24px}.single-scroll .carded.fullwidth{height:auto}.single-scroll .carded.fullwidth>.center .content-card .content{overflow:hidden}.single-scroll .carded.left-sidenav{height:auto}.single-scroll .carded.left-sidenav>.center .content-card .content{overflow:hidden}.single-scroll .carded.right-sidenav{height:auto}.single-scroll .carded.right-sidenav>.center .content-card .content{overflow:hidden}.single-scroll .simple.left-sidenav{height:auto}.single-scroll .simple.left-sidenav>.center{overflow:hidden}.single-scroll .simple.right-sidenav{height:auto}.single-scroll .simple.right-sidenav>.center{overflow:hidden}@media screen and (max-width:1280px){.page-layout.simple.inner-sidenav.left-sidenav>.content,.page-layout.simple.inner-sidenav.right-sidenav>.content{height:auto!important}.page-layout.simple.inner-sidenav.left-sidenav>.content>md-sidenav,.page-layout.simple.inner-sidenav.right-sidenav>.content>md-sidenav{margin-left:0;margin-right:0}.sidenav-open .page-layout.simple.inner-sidenav{height:100%}}@media screen and (max-width:600px){.page-layout .top-bg{height:160px}.page-layout.carded.fullwidth>.center,.page-layout.carded.left-sidenav>.center,.page-layout.carded.right-sidenav>.center{margin-left:16px;margin-right:16px}.page-layout.carded.fullwidth>.center .header,.page-layout.carded.left-sidenav>.center .header,.page-layout.carded.right-sidenav>.center .header{height:96px;min-height:96px;max-height:96px;padding:16px}.page-layout.carded.fullwidth{height:auto}.page-layout.carded.fullwidth>.center .content-card .content{overflow:hidden}.page-layout.carded.left-sidenav,.page-layout.carded.right-sidenav{height:auto}.page-layout.carded.left-sidenav>.center .content-card .content,.page-layout.carded.right-sidenav>.center .content-card .content{overflow:hidden}.page-layout.simple.fullwidth>.header,.page-layout.simple.inner-sidenav>.header{height:160px;min-height:160px;max-height:160px;padding:16px}.page-layout.simple.left-sidenav>.center .header,.page-layout.simple.right-sidenav>.center .header{height:160px;min-height:160px;max-height:160px;padding:16px}.page-layout.simple.left-sidenav,.page-layout.simple.right-sidenav{height:auto}.page-layout.simple.left-sidenav>.center,.page-layout.simple.right-sidenav>.center{overflow:hidden}}.black-fg,.black-text{color:rgba(0,0,0,.87)!important}.black-fg .icon,.black-fg .secondary-text,.black-fg.icon,.black-fg.secondary-text,.black-text .icon,.black-text .secondary-text,.black-text.icon,.black-text.secondary-text{color:rgba(0,0,0,.54)!important}.black-fg .disabled-text,.black-fg .hint-text,.black-fg.disabled-text,.black-fg.hint-text,.black-text .disabled-text,.black-text .hint-text,.black-text.disabled-text,.black-text.hint-text{color:rgba(0,0,0,.26)!important}.black-fg .divider,.black-fg .faint-text,.black-fg.divider,.black-fg.faint-text,.black-text .divider,.black-text .faint-text,.black-text.divider,.black-text.faint-text{color:rgba(0,0,0,.12)!important}.white-fg,.white-text{color:#fff!important}.white-fg .icon,.white-fg .secondary-text,.white-fg.icon,.white-fg.secondary-text,.white-text .icon,.white-text .secondary-text,.white-text.icon,.white-text.secondary-text{color:rgba(255,255,255,.7)!important}.white-fg .disabled-text,.white-fg .hint-text,.white-fg.disabled-text,.white-fg.hint-text,.white-text .disabled-text,.white-text .hint-text,.white-text.disabled-text,.white-text.hint-text{color:rgba(255,255,255,.3)!important}.white-fg .divider,.white-fg .faint-text,.white-fg.divider,.white-fg.faint-text,.white-text .divider,.white-text .faint-text,.white-text.divider,.white-text.faint-text{color:rgba(255,255,255,.12)!important}.white-fg md-icon,.white-text md-icon{color:#fff}.white-fg md-progress-linear .md-container,.white-text md-progress-linear .md-container{background:rgba(255,255,255,.3)}.white-fg md-progress-linear .md-bar,.white-text md-progress-linear .md-bar{background:rgba(255,255,255,.7)}.red-50-bg{background-color:#ffebee!important}.md-red-50-bg{background-color:#ffebee!important;color:rgba(0,0,0,.87)}.red-50-fg{color:#ffebee!important}.red-50-border{border-color:#ffebee!important}.red-50-border-top{border-top-color:#ffebee!important}.red-50-border-right{border-right-color:#ffebee!important}.red-50-border-bottom{border-bottom-color:#ffebee!important}.red-50-border-left{border-left-color:#ffebee!important}.red-100-bg{background-color:#ffcdd2!important}.md-red-100-bg{background-color:#ffcdd2!important;color:rgba(0,0,0,.87)}.red-100-fg{color:#ffcdd2!important}.red-100-border{border-color:#ffcdd2!important}.red-100-border-top{border-top-color:#ffcdd2!important}.red-100-border-right{border-right-color:#ffcdd2!important}.red-100-border-bottom{border-bottom-color:#ffcdd2!important}.red-100-border-left{border-left-color:#ffcdd2!important}.red-200-bg{background-color:#ef9a9a!important}.md-red-200-bg{background-color:#ef9a9a!important;color:rgba(0,0,0,.87)}.red-200-fg{color:#ef9a9a!important}.red-200-border{border-color:#ef9a9a!important}.red-200-border-top{border-top-color:#ef9a9a!important}.red-200-border-right{border-right-color:#ef9a9a!important}.red-200-border-bottom{border-bottom-color:#ef9a9a!important}.red-200-border-left{border-left-color:#ef9a9a!important}.red-300-bg{background-color:#e57373!important}.md-red-300-bg{background-color:#e57373!important;color:rgba(0,0,0,.87)}.red-300-fg{color:#e57373!important}.red-300-border{border-color:#e57373!important}.red-300-border-top{border-top-color:#e57373!important}.red-300-border-right{border-right-color:#e57373!important}.red-300-border-bottom{border-bottom-color:#e57373!important}.red-300-border-left{border-left-color:#e57373!important}.red-400-bg{background-color:#ef5350!important}.md-red-400-bg{background-color:#ef5350!important;color:#fff}.red-400-fg{color:#ef5350!important}.red-400-border{border-color:#ef5350!important}.red-400-border-top{border-top-color:#ef5350!important}.red-400-border-right{border-right-color:#ef5350!important}.red-400-border-bottom{border-bottom-color:#ef5350!important}.red-400-border-left{border-left-color:#ef5350!important}.red-500-bg{background-color:#f44336!important}.md-red-500-bg{background-color:#f44336!important;color:#fff}.red-500-fg{color:#f44336!important}.red-500-border{border-color:#f44336!important}.red-500-border-top{border-top-color:#f44336!important}.red-500-border-right{border-right-color:#f44336!important}.red-500-border-bottom{border-bottom-color:#f44336!important}.red-500-border-left{border-left-color:#f44336!important}.md-red-bg{background-color:#f44336!important;color:#fff}.red-bg{background-color:#f44336!important}.red-fg{color:#f44336!important}.red-border{border-color:#f44336!important}.red-border-top{border-top-color:#f44336!important}.red-border-right{border-right-color:#f44336!important}.red-border-bottom{border-bottom-color:#f44336!important}.red-border-left{border-left-color:#f44336!important}.red-600-bg{background-color:#e53935!important}.md-red-600-bg{background-color:#e53935!important;color:#fff}.red-600-fg{color:#e53935!important}.red-600-border{border-color:#e53935!important}.red-600-border-top{border-top-color:#e53935!important}.red-600-border-right{border-right-color:#e53935!important}.red-600-border-bottom{border-bottom-color:#e53935!important}.red-600-border-left{border-left-color:#e53935!important}.red-700-bg{background-color:#d32f2f!important}.md-red-700-bg{background-color:#d32f2f!important;color:#fff}.red-700-fg{color:#d32f2f!important}.red-700-border{border-color:#d32f2f!important}.red-700-border-top{border-top-color:#d32f2f!important}.red-700-border-right{border-right-color:#d32f2f!important}.red-700-border-bottom{border-bottom-color:#d32f2f!important}.red-700-border-left{border-left-color:#d32f2f!important}.red-800-bg{background-color:#c62828!important}.md-red-800-bg{background-color:#c62828!important;color:rgba(255,255,255,.87)}.red-800-fg{color:#c62828!important}.red-800-border{border-color:#c62828!important}.red-800-border-top{border-top-color:#c62828!important}.red-800-border-right{border-right-color:#c62828!important}.red-800-border-bottom{border-bottom-color:#c62828!important}.red-800-border-left{border-left-color:#c62828!important}.red-900-bg{background-color:#b71c1c!important}.md-red-900-bg{background-color:#b71c1c!important;color:rgba(255,255,255,.87)}.red-900-fg{color:#b71c1c!important}.red-900-border{border-color:#b71c1c!important}.red-900-border-top{border-top-color:#b71c1c!important}.red-900-border-right{border-right-color:#b71c1c!important}.red-900-border-bottom{border-bottom-color:#b71c1c!important}.red-900-border-left{border-left-color:#b71c1c!important}.red-A100-bg{background-color:#ff8a80!important}.md-red-A100-bg{background-color:#ff8a80!important;color:rgba(0,0,0,.87)}.red-A100-fg{color:#ff8a80!important}.red-A100-border{border-color:#ff8a80!important}.red-A100-border-top{border-top-color:#ff8a80!important}.red-A100-border-right{border-right-color:#ff8a80!important}.red-A100-border-bottom{border-bottom-color:#ff8a80!important}.red-A100-border-left{border-left-color:#ff8a80!important}.red-A200-bg{background-color:#ff5252!important}.md-red-A200-bg{background-color:#ff5252!important;color:#fff}.red-A200-fg{color:#ff5252!important}.red-A200-border{border-color:#ff5252!important}.red-A200-border-top{border-top-color:#ff5252!important}.red-A200-border-right{border-right-color:#ff5252!important}.red-A200-border-bottom{border-bottom-color:#ff5252!important}.red-A200-border-left{border-left-color:#ff5252!important}.red-A400-bg{background-color:#ff1744!important}.md-red-A400-bg{background-color:#ff1744!important;color:#fff}.red-A400-fg{color:#ff1744!important}.red-A400-border{border-color:#ff1744!important}.red-A400-border-top{border-top-color:#ff1744!important}.red-A400-border-right{border-right-color:#ff1744!important}.red-A400-border-bottom{border-bottom-color:#ff1744!important}.red-A400-border-left{border-left-color:#ff1744!important}.red-A700-bg{background-color:#d50000!important}.md-red-A700-bg{background-color:#d50000!important;color:#fff}.red-A700-fg{color:#d50000!important}.red-A700-border{border-color:#d50000!important}.red-A700-border-top{border-top-color:#d50000!important}.red-A700-border-right{border-right-color:#d50000!important}.red-A700-border-bottom{border-bottom-color:#d50000!important}.red-A700-border-left{border-left-color:#d50000!important}.pink-50-bg{background-color:#fce4ec!important}.md-pink-50-bg{background-color:#fce4ec!important;color:rgba(0,0,0,.87)}.pink-50-fg{color:#fce4ec!important}.pink-50-border{border-color:#fce4ec!important}.pink-50-border-top{border-top-color:#fce4ec!important}.pink-50-border-right{border-right-color:#fce4ec!important}.pink-50-border-bottom{border-bottom-color:#fce4ec!important}.pink-50-border-left{border-left-color:#fce4ec!important}.pink-100-bg{background-color:#f8bbd0!important}.md-pink-100-bg{background-color:#f8bbd0!important;color:rgba(0,0,0,.87)}.pink-100-fg{color:#f8bbd0!important}.pink-100-border{border-color:#f8bbd0!important}.pink-100-border-top{border-top-color:#f8bbd0!important}.pink-100-border-right{border-right-color:#f8bbd0!important}.pink-100-border-bottom{border-bottom-color:#f8bbd0!important}.pink-100-border-left{border-left-color:#f8bbd0!important}.pink-200-bg{background-color:#f48fb1!important}.md-pink-200-bg{background-color:#f48fb1!important;color:rgba(0,0,0,.87)}.pink-200-fg{color:#f48fb1!important}.pink-200-border{border-color:#f48fb1!important}.pink-200-border-top{border-top-color:#f48fb1!important}.pink-200-border-right{border-right-color:#f48fb1!important}.pink-200-border-bottom{border-bottom-color:#f48fb1!important}.pink-200-border-left{border-left-color:#f48fb1!important}.pink-300-bg{background-color:#f06292!important}.md-pink-300-bg{background-color:#f06292!important;color:rgba(255,255,255,.87)}.pink-300-fg{color:#f06292!important}.pink-300-border{border-color:#f06292!important}.pink-300-border-top{border-top-color:#f06292!important}.pink-300-border-right{border-right-color:#f06292!important}.pink-300-border-bottom{border-bottom-color:#f06292!important}.pink-300-border-left{border-left-color:#f06292!important}.pink-400-bg{background-color:#ec407a!important}.md-pink-400-bg{background-color:#ec407a!important;color:rgba(255,255,255,.87)}.pink-400-fg{color:#ec407a!important}.pink-400-border{border-color:#ec407a!important}.pink-400-border-top{border-top-color:#ec407a!important}.pink-400-border-right{border-right-color:#ec407a!important}.pink-400-border-bottom{border-bottom-color:#ec407a!important}.pink-400-border-left{border-left-color:#ec407a!important}.pink-500-bg{background-color:#e91e63!important}.md-pink-500-bg{background-color:#e91e63!important;color:#fff}.pink-500-fg{color:#e91e63!important}.pink-500-border{border-color:#e91e63!important}.pink-500-border-top{border-top-color:#e91e63!important}.pink-500-border-right{border-right-color:#e91e63!important}.pink-500-border-bottom{border-bottom-color:#e91e63!important}.pink-500-border-left{border-left-color:#e91e63!important}.md-pink-bg{background-color:#e91e63!important;color:#fff}.pink-bg{background-color:#e91e63!important}.pink-fg{color:#e91e63!important}.pink-border{border-color:#e91e63!important}.pink-border-top{border-top-color:#e91e63!important}.pink-border-right{border-right-color:#e91e63!important}.pink-border-bottom{border-bottom-color:#e91e63!important}.pink-border-left{border-left-color:#e91e63!important}.pink-600-bg{background-color:#d81b60!important}.md-pink-600-bg{background-color:#d81b60!important;color:#fff}.pink-600-fg{color:#d81b60!important}.pink-600-border{border-color:#d81b60!important}.pink-600-border-top{border-top-color:#d81b60!important}.pink-600-border-right{border-right-color:#d81b60!important}.pink-600-border-bottom{border-bottom-color:#d81b60!important}.pink-600-border-left{border-left-color:#d81b60!important}.pink-700-bg{background-color:#c2185b!important}.md-pink-700-bg{background-color:#c2185b!important;color:rgba(255,255,255,.87)}.pink-700-fg{color:#c2185b!important}.pink-700-border{border-color:#c2185b!important}.pink-700-border-top{border-top-color:#c2185b!important}.pink-700-border-right{border-right-color:#c2185b!important}.pink-700-border-bottom{border-bottom-color:#c2185b!important}.pink-700-border-left{border-left-color:#c2185b!important}.pink-800-bg{background-color:#ad1457!important}.md-pink-800-bg{background-color:#ad1457!important;color:rgba(255,255,255,.87)}.pink-800-fg{color:#ad1457!important}.pink-800-border{border-color:#ad1457!important}.pink-800-border-top{border-top-color:#ad1457!important}.pink-800-border-right{border-right-color:#ad1457!important}.pink-800-border-bottom{border-bottom-color:#ad1457!important}.pink-800-border-left{border-left-color:#ad1457!important}.pink-900-bg{background-color:#880e4f!important}.md-pink-900-bg{background-color:#880e4f!important;color:rgba(255,255,255,.87)}.pink-900-fg{color:#880e4f!important}.pink-900-border{border-color:#880e4f!important}.pink-900-border-top{border-top-color:#880e4f!important}.pink-900-border-right{border-right-color:#880e4f!important}.pink-900-border-bottom{border-bottom-color:#880e4f!important}.pink-900-border-left{border-left-color:#880e4f!important}.pink-A100-bg{background-color:#ff80ab!important}.md-pink-A100-bg{background-color:#ff80ab!important;color:rgba(0,0,0,.87)}.pink-A100-fg{color:#ff80ab!important}.pink-A100-border{border-color:#ff80ab!important}.pink-A100-border-top{border-top-color:#ff80ab!important}.pink-A100-border-right{border-right-color:#ff80ab!important}.pink-A100-border-bottom{border-bottom-color:#ff80ab!important}.pink-A100-border-left{border-left-color:#ff80ab!important}.pink-A200-bg{background-color:#ff4081!important}.md-pink-A200-bg{background-color:#ff4081!important;color:#fff}.pink-A200-fg{color:#ff4081!important}.pink-A200-border{border-color:#ff4081!important}.pink-A200-border-top{border-top-color:#ff4081!important}.pink-A200-border-right{border-right-color:#ff4081!important}.pink-A200-border-bottom{border-bottom-color:#ff4081!important}.pink-A200-border-left{border-left-color:#ff4081!important}.pink-A400-bg{background-color:#f50057!important}.md-pink-A400-bg{background-color:#f50057!important;color:#fff}.pink-A400-fg{color:#f50057!important}.pink-A400-border{border-color:#f50057!important}.pink-A400-border-top{border-top-color:#f50057!important}.pink-A400-border-right{border-right-color:#f50057!important}.pink-A400-border-bottom{border-bottom-color:#f50057!important}.pink-A400-border-left{border-left-color:#f50057!important}.pink-A700-bg{background-color:#c51162!important}.md-pink-A700-bg{background-color:#c51162!important;color:#fff}.pink-A700-fg{color:#c51162!important}.pink-A700-border{border-color:#c51162!important}.pink-A700-border-top{border-top-color:#c51162!important}.pink-A700-border-right{border-right-color:#c51162!important}.pink-A700-border-bottom{border-bottom-color:#c51162!important}.pink-A700-border-left{border-left-color:#c51162!important}.purple-50-bg{background-color:#f3e5f5!important}.md-purple-50-bg{background-color:#f3e5f5!important;color:rgba(0,0,0,.87)}.purple-50-fg{color:#f3e5f5!important}.purple-50-border{border-color:#f3e5f5!important}.purple-50-border-top{border-top-color:#f3e5f5!important}.purple-50-border-right{border-right-color:#f3e5f5!important}.purple-50-border-bottom{border-bottom-color:#f3e5f5!important}.purple-50-border-left{border-left-color:#f3e5f5!important}.purple-100-bg{background-color:#e1bee7!important}.md-purple-100-bg{background-color:#e1bee7!important;color:rgba(0,0,0,.87)}.purple-100-fg{color:#e1bee7!important}.purple-100-border{border-color:#e1bee7!important}.purple-100-border-top{border-top-color:#e1bee7!important}.purple-100-border-right{border-right-color:#e1bee7!important}.purple-100-border-bottom{border-bottom-color:#e1bee7!important}.purple-100-border-left{border-left-color:#e1bee7!important}.purple-200-bg{background-color:#ce93d8!important}.md-purple-200-bg{background-color:#ce93d8!important;color:rgba(0,0,0,.87)}.purple-200-fg{color:#ce93d8!important}.purple-200-border{border-color:#ce93d8!important}.purple-200-border-top{border-top-color:#ce93d8!important}.purple-200-border-right{border-right-color:#ce93d8!important}.purple-200-border-bottom{border-bottom-color:#ce93d8!important}.purple-200-border-left{border-left-color:#ce93d8!important}.purple-300-bg{background-color:#ba68c8!important}.md-purple-300-bg{background-color:#ba68c8!important;color:#fff}.purple-300-fg{color:#ba68c8!important}.purple-300-border{border-color:#ba68c8!important}.purple-300-border-top{border-top-color:#ba68c8!important}.purple-300-border-right{border-right-color:#ba68c8!important}.purple-300-border-bottom{border-bottom-color:#ba68c8!important}.purple-300-border-left{border-left-color:#ba68c8!important}.purple-400-bg{background-color:#ab47bc!important}.md-purple-400-bg{background-color:#ab47bc!important;color:#fff}.purple-400-fg{color:#ab47bc!important}.purple-400-border{border-color:#ab47bc!important}.purple-400-border-top{border-top-color:#ab47bc!important}.purple-400-border-right{border-right-color:#ab47bc!important}.purple-400-border-bottom{border-bottom-color:#ab47bc!important}.purple-400-border-left{border-left-color:#ab47bc!important}.purple-500-bg{background-color:#9c27b0!important}.md-purple-500-bg{background-color:#9c27b0!important;color:rgba(255,255,255,.87)}.purple-500-fg{color:#9c27b0!important}.purple-500-border{border-color:#9c27b0!important}.purple-500-border-top{border-top-color:#9c27b0!important}.purple-500-border-right{border-right-color:#9c27b0!important}.purple-500-border-bottom{border-bottom-color:#9c27b0!important}.purple-500-border-left{border-left-color:#9c27b0!important}.md-purple-bg{background-color:#9c27b0!important;color:rgba(255,255,255,.87)}.purple-bg{background-color:#9c27b0!important}.purple-fg{color:#9c27b0!important}.purple-border{border-color:#9c27b0!important}.purple-border-top{border-top-color:#9c27b0!important}.purple-border-right{border-right-color:#9c27b0!important}.purple-border-bottom{border-bottom-color:#9c27b0!important}.purple-border-left{border-left-color:#9c27b0!important}.purple-600-bg{background-color:#8e24aa!important}.md-purple-600-bg{background-color:#8e24aa!important;color:rgba(255,255,255,.87)}.purple-600-fg{color:#8e24aa!important}.purple-600-border{border-color:#8e24aa!important}.purple-600-border-top{border-top-color:#8e24aa!important}.purple-600-border-right{border-right-color:#8e24aa!important}.purple-600-border-bottom{border-bottom-color:#8e24aa!important}.purple-600-border-left{border-left-color:#8e24aa!important}.purple-700-bg{background-color:#7b1fa2!important}.md-purple-700-bg{background-color:#7b1fa2!important;color:rgba(255,255,255,.87)}.purple-700-fg{color:#7b1fa2!important}.purple-700-border{border-color:#7b1fa2!important}.purple-700-border-top{border-top-color:#7b1fa2!important}.purple-700-border-right{border-right-color:#7b1fa2!important}.purple-700-border-bottom{border-bottom-color:#7b1fa2!important}.purple-700-border-left{border-left-color:#7b1fa2!important}.purple-800-bg{background-color:#6a1b9a!important}.md-purple-800-bg{background-color:#6a1b9a!important;color:rgba(255,255,255,.87)}.purple-800-fg{color:#6a1b9a!important}.purple-800-border{border-color:#6a1b9a!important}.purple-800-border-top{border-top-color:#6a1b9a!important}.purple-800-border-right{border-right-color:#6a1b9a!important}.purple-800-border-bottom{border-bottom-color:#6a1b9a!important}.purple-800-border-left{border-left-color:#6a1b9a!important}.purple-900-bg{background-color:#4a148c!important}.md-purple-900-bg{background-color:#4a148c!important;color:rgba(255,255,255,.87)}.purple-900-fg{color:#4a148c!important}.purple-900-border{border-color:#4a148c!important}.purple-900-border-top{border-top-color:#4a148c!important}.purple-900-border-right{border-right-color:#4a148c!important}.purple-900-border-bottom{border-bottom-color:#4a148c!important}.purple-900-border-left{border-left-color:#4a148c!important}.purple-A100-bg{background-color:#ea80fc!important}.md-purple-A100-bg{background-color:#ea80fc!important;color:rgba(0,0,0,.87)}.purple-A100-fg{color:#ea80fc!important}.purple-A100-border{border-color:#ea80fc!important}.purple-A100-border-top{border-top-color:#ea80fc!important}.purple-A100-border-right{border-right-color:#ea80fc!important}.purple-A100-border-bottom{border-bottom-color:#ea80fc!important}.purple-A100-border-left{border-left-color:#ea80fc!important}.purple-A200-bg{background-color:#e040fb!important}.md-purple-A200-bg{background-color:#e040fb!important;color:#fff}.purple-A200-fg{color:#e040fb!important}.purple-A200-border{border-color:#e040fb!important}.purple-A200-border-top{border-top-color:#e040fb!important}.purple-A200-border-right{border-right-color:#e040fb!important}.purple-A200-border-bottom{border-bottom-color:#e040fb!important}.purple-A200-border-left{border-left-color:#e040fb!important}.purple-A400-bg{background-color:#d500f9!important}.md-purple-A400-bg{background-color:#d500f9!important;color:#fff}.purple-A400-fg{color:#d500f9!important}.purple-A400-border{border-color:#d500f9!important}.purple-A400-border-top{border-top-color:#d500f9!important}.purple-A400-border-right{border-right-color:#d500f9!important}.purple-A400-border-bottom{border-bottom-color:#d500f9!important}.purple-A400-border-left{border-left-color:#d500f9!important}.purple-A700-bg{background-color:#a0f!important}.md-purple-A700-bg{background-color:#a0f!important;color:#fff}.purple-A700-fg{color:#a0f!important}.purple-A700-border{border-color:#a0f!important}.purple-A700-border-top{border-top-color:#a0f!important}.purple-A700-border-right{border-right-color:#a0f!important}.purple-A700-border-bottom{border-bottom-color:#a0f!important}.purple-A700-border-left{border-left-color:#a0f!important}.deep-purple-50-bg{background-color:#ede7f6!important}.md-deep-purple-50-bg{background-color:#ede7f6!important;color:rgba(0,0,0,.87)}.deep-purple-50-fg{color:#ede7f6!important}.deep-purple-50-border{border-color:#ede7f6!important}.deep-purple-50-border-top{border-top-color:#ede7f6!important}.deep-purple-50-border-right{border-right-color:#ede7f6!important}.deep-purple-50-border-bottom{border-bottom-color:#ede7f6!important}.deep-purple-50-border-left{border-left-color:#ede7f6!important}.deep-purple-100-bg{background-color:#d1c4e9!important}.md-deep-purple-100-bg{background-color:#d1c4e9!important;color:rgba(0,0,0,.87)}.deep-purple-100-fg{color:#d1c4e9!important}.deep-purple-100-border{border-color:#d1c4e9!important}.deep-purple-100-border-top{border-top-color:#d1c4e9!important}.deep-purple-100-border-right{border-right-color:#d1c4e9!important}.deep-purple-100-border-bottom{border-bottom-color:#d1c4e9!important}.deep-purple-100-border-left{border-left-color:#d1c4e9!important}.deep-purple-200-bg{background-color:#b39ddb!important}.md-deep-purple-200-bg{background-color:#b39ddb!important;color:rgba(0,0,0,.87)}.deep-purple-200-fg{color:#b39ddb!important}.deep-purple-200-border{border-color:#b39ddb!important}.deep-purple-200-border-top{border-top-color:#b39ddb!important}.deep-purple-200-border-right{border-right-color:#b39ddb!important}.deep-purple-200-border-bottom{border-bottom-color:#b39ddb!important}.deep-purple-200-border-left{border-left-color:#b39ddb!important}.deep-purple-300-bg{background-color:#9575cd!important}.md-deep-purple-300-bg{background-color:#9575cd!important;color:#fff}.deep-purple-300-fg{color:#9575cd!important}.deep-purple-300-border{border-color:#9575cd!important}.deep-purple-300-border-top{border-top-color:#9575cd!important}.deep-purple-300-border-right{border-right-color:#9575cd!important}.deep-purple-300-border-bottom{border-bottom-color:#9575cd!important}.deep-purple-300-border-left{border-left-color:#9575cd!important}.deep-purple-400-bg{background-color:#7e57c2!important}.md-deep-purple-400-bg{background-color:#7e57c2!important;color:#fff}.deep-purple-400-fg{color:#7e57c2!important}.deep-purple-400-border{border-color:#7e57c2!important}.deep-purple-400-border-top{border-top-color:#7e57c2!important}.deep-purple-400-border-right{border-right-color:#7e57c2!important}.deep-purple-400-border-bottom{border-bottom-color:#7e57c2!important}.deep-purple-400-border-left{border-left-color:#7e57c2!important}.deep-purple-500-bg{background-color:#673ab7!important}.md-deep-purple-500-bg{background-color:#673ab7!important;color:rgba(255,255,255,.87)}.deep-purple-500-fg{color:#673ab7!important}.deep-purple-500-border{border-color:#673ab7!important}.deep-purple-500-border-top{border-top-color:#673ab7!important}.deep-purple-500-border-right{border-right-color:#673ab7!important}.deep-purple-500-border-bottom{border-bottom-color:#673ab7!important}.deep-purple-500-border-left{border-left-color:#673ab7!important}.md-deep-purple-bg{background-color:#673ab7!important;color:rgba(255,255,255,.87)}.deep-purple-bg{background-color:#673ab7!important}.deep-purple-fg{color:#673ab7!important}.deep-purple-border{border-color:#673ab7!important}.deep-purple-border-top{border-top-color:#673ab7!important}.deep-purple-border-right{border-right-color:#673ab7!important}.deep-purple-border-bottom{border-bottom-color:#673ab7!important}.deep-purple-border-left{border-left-color:#673ab7!important}.deep-purple-600-bg{background-color:#5e35b1!important}.md-deep-purple-600-bg{background-color:#5e35b1!important;color:rgba(255,255,255,.87)}.deep-purple-600-fg{color:#5e35b1!important}.deep-purple-600-border{border-color:#5e35b1!important}.deep-purple-600-border-top{border-top-color:#5e35b1!important}.deep-purple-600-border-right{border-right-color:#5e35b1!important}.deep-purple-600-border-bottom{border-bottom-color:#5e35b1!important}.deep-purple-600-border-left{border-left-color:#5e35b1!important}.deep-purple-700-bg{background-color:#512da8!important}.md-deep-purple-700-bg{background-color:#512da8!important;color:rgba(255,255,255,.87)}.deep-purple-700-fg{color:#512da8!important}.deep-purple-700-border{border-color:#512da8!important}.deep-purple-700-border-top{border-top-color:#512da8!important}.deep-purple-700-border-right{border-right-color:#512da8!important}.deep-purple-700-border-bottom{border-bottom-color:#512da8!important}.deep-purple-700-border-left{border-left-color:#512da8!important}.deep-purple-800-bg{background-color:#4527a0!important}.md-deep-purple-800-bg{background-color:#4527a0!important;color:rgba(255,255,255,.87)}.deep-purple-800-fg{color:#4527a0!important}.deep-purple-800-border{border-color:#4527a0!important}.deep-purple-800-border-top{border-top-color:#4527a0!important}.deep-purple-800-border-right{border-right-color:#4527a0!important}.deep-purple-800-border-bottom{border-bottom-color:#4527a0!important}.deep-purple-800-border-left{border-left-color:#4527a0!important}.deep-purple-900-bg{background-color:#311b92!important}.md-deep-purple-900-bg{background-color:#311b92!important;color:rgba(255,255,255,.87)}.deep-purple-900-fg{color:#311b92!important}.deep-purple-900-border{border-color:#311b92!important}.deep-purple-900-border-top{border-top-color:#311b92!important}.deep-purple-900-border-right{border-right-color:#311b92!important}.deep-purple-900-border-bottom{border-bottom-color:#311b92!important}.deep-purple-900-border-left{border-left-color:#311b92!important}.deep-purple-A100-bg{background-color:#b388ff!important}.md-deep-purple-A100-bg{background-color:#b388ff!important;color:rgba(0,0,0,.87)}.deep-purple-A100-fg{color:#b388ff!important}.deep-purple-A100-border{border-color:#b388ff!important}.deep-purple-A100-border-top{border-top-color:#b388ff!important}.deep-purple-A100-border-right{border-right-color:#b388ff!important}.deep-purple-A100-border-bottom{border-bottom-color:#b388ff!important}.deep-purple-A100-border-left{border-left-color:#b388ff!important}.deep-purple-A200-bg{background-color:#7c4dff!important}.md-deep-purple-A200-bg{background-color:#7c4dff!important;color:#fff}.deep-purple-A200-fg{color:#7c4dff!important}.deep-purple-A200-border{border-color:#7c4dff!important}.deep-purple-A200-border-top{border-top-color:#7c4dff!important}.deep-purple-A200-border-right{border-right-color:#7c4dff!important}.deep-purple-A200-border-bottom{border-bottom-color:#7c4dff!important}.deep-purple-A200-border-left{border-left-color:#7c4dff!important}.deep-purple-A400-bg{background-color:#651fff!important}.md-deep-purple-A400-bg{background-color:#651fff!important;color:rgba(255,255,255,.87)}.deep-purple-A400-fg{color:#651fff!important}.deep-purple-A400-border{border-color:#651fff!important}.deep-purple-A400-border-top{border-top-color:#651fff!important}.deep-purple-A400-border-right{border-right-color:#651fff!important}.deep-purple-A400-border-bottom{border-bottom-color:#651fff!important}.deep-purple-A400-border-left{border-left-color:#651fff!important}.deep-purple-A700-bg{background-color:#6200ea!important}.md-deep-purple-A700-bg{background-color:#6200ea!important;color:rgba(255,255,255,.87)}.deep-purple-A700-fg{color:#6200ea!important}.deep-purple-A700-border{border-color:#6200ea!important}.deep-purple-A700-border-top{border-top-color:#6200ea!important}.deep-purple-A700-border-right{border-right-color:#6200ea!important}.deep-purple-A700-border-bottom{border-bottom-color:#6200ea!important}.deep-purple-A700-border-left{border-left-color:#6200ea!important}.indigo-50-bg{background-color:#e8eaf6!important}.md-indigo-50-bg{background-color:#e8eaf6!important;color:rgba(0,0,0,.87)}.indigo-50-fg{color:#e8eaf6!important}.indigo-50-border{border-color:#e8eaf6!important}.indigo-50-border-top{border-top-color:#e8eaf6!important}.indigo-50-border-right{border-right-color:#e8eaf6!important}.indigo-50-border-bottom{border-bottom-color:#e8eaf6!important}.indigo-50-border-left{border-left-color:#e8eaf6!important}.indigo-100-bg{background-color:#c5cae9!important}.md-indigo-100-bg{background-color:#c5cae9!important;color:rgba(0,0,0,.87)}.indigo-100-fg{color:#c5cae9!important}.indigo-100-border{border-color:#c5cae9!important}.indigo-100-border-top{border-top-color:#c5cae9!important}.indigo-100-border-right{border-right-color:#c5cae9!important}.indigo-100-border-bottom{border-bottom-color:#c5cae9!important}.indigo-100-border-left{border-left-color:#c5cae9!important}.indigo-200-bg{background-color:#9fa8da!important}.md-indigo-200-bg{background-color:#9fa8da!important;color:rgba(0,0,0,.87)}.indigo-200-fg{color:#9fa8da!important}.indigo-200-border{border-color:#9fa8da!important}.indigo-200-border-top{border-top-color:#9fa8da!important}.indigo-200-border-right{border-right-color:#9fa8da!important}.indigo-200-border-bottom{border-bottom-color:#9fa8da!important}.indigo-200-border-left{border-left-color:#9fa8da!important}.indigo-300-bg{background-color:#7986cb!important}.md-indigo-300-bg{background-color:#7986cb!important;color:#fff}.indigo-300-fg{color:#7986cb!important}.indigo-300-border{border-color:#7986cb!important}.indigo-300-border-top{border-top-color:#7986cb!important}.indigo-300-border-right{border-right-color:#7986cb!important}.indigo-300-border-bottom{border-bottom-color:#7986cb!important}.indigo-300-border-left{border-left-color:#7986cb!important}.indigo-400-bg{background-color:#5c6bc0!important}.md-indigo-400-bg{background-color:#5c6bc0!important;color:#fff}.indigo-400-fg{color:#5c6bc0!important}.indigo-400-border{border-color:#5c6bc0!important}.indigo-400-border-top{border-top-color:#5c6bc0!important}.indigo-400-border-right{border-right-color:#5c6bc0!important}.indigo-400-border-bottom{border-bottom-color:#5c6bc0!important}.indigo-400-border-left{border-left-color:#5c6bc0!important}.indigo-500-bg{background-color:#3f51b5!important}.md-indigo-500-bg{background-color:#3f51b5!important;color:rgba(255,255,255,.87)}.indigo-500-fg{color:#3f51b5!important}.indigo-500-border{border-color:#3f51b5!important}.indigo-500-border-top{border-top-color:#3f51b5!important}.indigo-500-border-right{border-right-color:#3f51b5!important}.indigo-500-border-bottom{border-bottom-color:#3f51b5!important}.indigo-500-border-left{border-left-color:#3f51b5!important}.md-indigo-bg{background-color:#3f51b5!important;color:rgba(255,255,255,.87)}.indigo-bg{background-color:#3f51b5!important}.indigo-fg{color:#3f51b5!important}.indigo-border{border-color:#3f51b5!important}.indigo-border-top{border-top-color:#3f51b5!important}.indigo-border-right{border-right-color:#3f51b5!important}.indigo-border-bottom{border-bottom-color:#3f51b5!important}.indigo-border-left{border-left-color:#3f51b5!important}.indigo-600-bg{background-color:#3949ab!important}.md-indigo-600-bg{background-color:#3949ab!important;color:rgba(255,255,255,.87)}.indigo-600-fg{color:#3949ab!important}.indigo-600-border{border-color:#3949ab!important}.indigo-600-border-top{border-top-color:#3949ab!important}.indigo-600-border-right{border-right-color:#3949ab!important}.indigo-600-border-bottom{border-bottom-color:#3949ab!important}.indigo-600-border-left{border-left-color:#3949ab!important}.indigo-700-bg{background-color:#303f9f!important}.md-indigo-700-bg{background-color:#303f9f!important;color:rgba(255,255,255,.87)}.indigo-700-fg{color:#303f9f!important}.indigo-700-border{border-color:#303f9f!important}.indigo-700-border-top{border-top-color:#303f9f!important}.indigo-700-border-right{border-right-color:#303f9f!important}.indigo-700-border-bottom{border-bottom-color:#303f9f!important}.indigo-700-border-left{border-left-color:#303f9f!important}.indigo-800-bg{background-color:#283593!important}.md-indigo-800-bg{background-color:#283593!important;color:rgba(255,255,255,.87)}.indigo-800-fg{color:#283593!important}.indigo-800-border{border-color:#283593!important}.indigo-800-border-top{border-top-color:#283593!important}.indigo-800-border-right{border-right-color:#283593!important}.indigo-800-border-bottom{border-bottom-color:#283593!important}.indigo-800-border-left{border-left-color:#283593!important}.indigo-900-bg{background-color:#1a237e!important}.md-indigo-900-bg{background-color:#1a237e!important;color:rgba(255,255,255,.87)}.indigo-900-fg{color:#1a237e!important}.indigo-900-border{border-color:#1a237e!important}.indigo-900-border-top{border-top-color:#1a237e!important}.indigo-900-border-right{border-right-color:#1a237e!important}.indigo-900-border-bottom{border-bottom-color:#1a237e!important}.indigo-900-border-left{border-left-color:#1a237e!important}.indigo-A100-bg{background-color:#8c9eff!important}.md-indigo-A100-bg{background-color:#8c9eff!important;color:rgba(0,0,0,.87)}.indigo-A100-fg{color:#8c9eff!important}.indigo-A100-border{border-color:#8c9eff!important}.indigo-A100-border-top{border-top-color:#8c9eff!important}.indigo-A100-border-right{border-right-color:#8c9eff!important}.indigo-A100-border-bottom{border-bottom-color:#8c9eff!important}.indigo-A100-border-left{border-left-color:#8c9eff!important}.indigo-A200-bg{background-color:#536dfe!important}.md-indigo-A200-bg{background-color:#536dfe!important;color:#fff}.indigo-A200-fg{color:#536dfe!important}.indigo-A200-border{border-color:#536dfe!important}.indigo-A200-border-top{border-top-color:#536dfe!important}.indigo-A200-border-right{border-right-color:#536dfe!important}.indigo-A200-border-bottom{border-bottom-color:#536dfe!important}.indigo-A200-border-left{border-left-color:#536dfe!important}.indigo-A400-bg{background-color:#3d5afe!important}.md-indigo-A400-bg{background-color:#3d5afe!important;color:#fff}.indigo-A400-fg{color:#3d5afe!important}.indigo-A400-border{border-color:#3d5afe!important}.indigo-A400-border-top{border-top-color:#3d5afe!important}.indigo-A400-border-right{border-right-color:#3d5afe!important}.indigo-A400-border-bottom{border-bottom-color:#3d5afe!important}.indigo-A400-border-left{border-left-color:#3d5afe!important}.indigo-A700-bg{background-color:#304ffe!important}.md-indigo-A700-bg{background-color:#304ffe!important;color:rgba(255,255,255,.87)}.indigo-A700-fg{color:#304ffe!important}.indigo-A700-border{border-color:#304ffe!important}.indigo-A700-border-top{border-top-color:#304ffe!important}.indigo-A700-border-right{border-right-color:#304ffe!important}.indigo-A700-border-bottom{border-bottom-color:#304ffe!important}.indigo-A700-border-left{border-left-color:#304ffe!important}.blue-50-bg{background-color:#e3f2fd!important}.md-blue-50-bg{background-color:#e3f2fd!important;color:rgba(0,0,0,.87)}.blue-50-fg{color:#e3f2fd!important}.blue-50-border{border-color:#e3f2fd!important}.blue-50-border-top{border-top-color:#e3f2fd!important}.blue-50-border-right{border-right-color:#e3f2fd!important}.blue-50-border-bottom{border-bottom-color:#e3f2fd!important}.blue-50-border-left{border-left-color:#e3f2fd!important}.blue-100-bg{background-color:#bbdefb!important}.md-blue-100-bg{background-color:#bbdefb!important;color:rgba(0,0,0,.87)}.blue-100-fg{color:#bbdefb!important}.blue-100-border{border-color:#bbdefb!important}.blue-100-border-top{border-top-color:#bbdefb!important}.blue-100-border-right{border-right-color:#bbdefb!important}.blue-100-border-bottom{border-bottom-color:#bbdefb!important}.blue-100-border-left{border-left-color:#bbdefb!important}.blue-200-bg{background-color:#90caf9!important}.md-blue-200-bg{background-color:#90caf9!important;color:rgba(0,0,0,.87)}.blue-200-fg{color:#90caf9!important}.blue-200-border{border-color:#90caf9!important}.blue-200-border-top{border-top-color:#90caf9!important}.blue-200-border-right{border-right-color:#90caf9!important}.blue-200-border-bottom{border-bottom-color:#90caf9!important}.blue-200-border-left{border-left-color:#90caf9!important}.blue-300-bg{background-color:#64b5f6!important}.md-blue-300-bg{background-color:#64b5f6!important;color:rgba(0,0,0,.87)}.blue-300-fg{color:#64b5f6!important}.blue-300-border{border-color:#64b5f6!important}.blue-300-border-top{border-top-color:#64b5f6!important}.blue-300-border-right{border-right-color:#64b5f6!important}.blue-300-border-bottom{border-bottom-color:#64b5f6!important}.blue-300-border-left{border-left-color:#64b5f6!important}.blue-400-bg{background-color:#42a5f5!important}.md-blue-400-bg{background-color:#42a5f5!important;color:rgba(0,0,0,.87)}.blue-400-fg{color:#42a5f5!important}.blue-400-border{border-color:#42a5f5!important}.blue-400-border-top{border-top-color:#42a5f5!important}.blue-400-border-right{border-right-color:#42a5f5!important}.blue-400-border-bottom{border-bottom-color:#42a5f5!important}.blue-400-border-left{border-left-color:#42a5f5!important}.blue-500-bg{background-color:#2196f3!important}.md-blue-500-bg{background-color:#2196f3!important;color:#fff}.blue-500-fg{color:#2196f3!important}.blue-500-border{border-color:#2196f3!important}.blue-500-border-top{border-top-color:#2196f3!important}.blue-500-border-right{border-right-color:#2196f3!important}.blue-500-border-bottom{border-bottom-color:#2196f3!important}.blue-500-border-left{border-left-color:#2196f3!important}.md-blue-bg{background-color:#2196f3!important;color:#fff}.blue-bg{background-color:#2196f3!important}.blue-fg{color:#2196f3!important}.blue-border{border-color:#2196f3!important}.blue-border-top{border-top-color:#2196f3!important}.blue-border-right{border-right-color:#2196f3!important}.blue-border-bottom{border-bottom-color:#2196f3!important}.blue-border-left{border-left-color:#2196f3!important}.blue-600-bg{background-color:#1e88e5!important}.md-blue-600-bg{background-color:#1e88e5!important;color:#fff}.blue-600-fg{color:#1e88e5!important}.blue-600-border{border-color:#1e88e5!important}.blue-600-border-top{border-top-color:#1e88e5!important}.blue-600-border-right{border-right-color:#1e88e5!important}.blue-600-border-bottom{border-bottom-color:#1e88e5!important}.blue-600-border-left{border-left-color:#1e88e5!important}.blue-700-bg{background-color:#1976d2!important}.md-blue-700-bg{background-color:#1976d2!important;color:#fff}.blue-700-fg{color:#1976d2!important}.blue-700-border{border-color:#1976d2!important}.blue-700-border-top{border-top-color:#1976d2!important}.blue-700-border-right{border-right-color:#1976d2!important}.blue-700-border-bottom{border-bottom-color:#1976d2!important}.blue-700-border-left{border-left-color:#1976d2!important}.blue-800-bg{background-color:#1565c0!important}.md-blue-800-bg{background-color:#1565c0!important;color:rgba(255,255,255,.87)}.blue-800-fg{color:#1565c0!important}.blue-800-border{border-color:#1565c0!important}.blue-800-border-top{border-top-color:#1565c0!important}.blue-800-border-right{border-right-color:#1565c0!important}.blue-800-border-bottom{border-bottom-color:#1565c0!important}.blue-800-border-left{border-left-color:#1565c0!important}.blue-900-bg{background-color:#0d47a1!important}.md-blue-900-bg{background-color:#0d47a1!important;color:rgba(255,255,255,.87)}.blue-900-fg{color:#0d47a1!important}.blue-900-border{border-color:#0d47a1!important}.blue-900-border-top{border-top-color:#0d47a1!important}.blue-900-border-right{border-right-color:#0d47a1!important}.blue-900-border-bottom{border-bottom-color:#0d47a1!important}.blue-900-border-left{border-left-color:#0d47a1!important}.blue-A100-bg{background-color:#82b1ff!important}.md-blue-A100-bg{background-color:#82b1ff!important;color:rgba(0,0,0,.87)}.blue-A100-fg{color:#82b1ff!important}.blue-A100-border{border-color:#82b1ff!important}.blue-A100-border-top{border-top-color:#82b1ff!important}.blue-A100-border-right{border-right-color:#82b1ff!important}.blue-A100-border-bottom{border-bottom-color:#82b1ff!important}.blue-A100-border-left{border-left-color:#82b1ff!important}.blue-A200-bg{background-color:#448aff!important}.md-blue-A200-bg{background-color:#448aff!important;color:#fff}.blue-A200-fg{color:#448aff!important}.blue-A200-border{border-color:#448aff!important}.blue-A200-border-top{border-top-color:#448aff!important}.blue-A200-border-right{border-right-color:#448aff!important}.blue-A200-border-bottom{border-bottom-color:#448aff!important}.blue-A200-border-left{border-left-color:#448aff!important}.blue-A400-bg{background-color:#2979ff!important}.md-blue-A400-bg{background-color:#2979ff!important;color:#fff}.blue-A400-fg{color:#2979ff!important}.blue-A400-border{border-color:#2979ff!important}.blue-A400-border-top{border-top-color:#2979ff!important}.blue-A400-border-right{border-right-color:#2979ff!important}.blue-A400-border-bottom{border-bottom-color:#2979ff!important}.blue-A400-border-left{border-left-color:#2979ff!important}.blue-A700-bg{background-color:#2962ff!important}.md-blue-A700-bg{background-color:#2962ff!important;color:#fff}.blue-A700-fg{color:#2962ff!important}.blue-A700-border{border-color:#2962ff!important}.blue-A700-border-top{border-top-color:#2962ff!important}.blue-A700-border-right{border-right-color:#2962ff!important}.blue-A700-border-bottom{border-bottom-color:#2962ff!important}.blue-A700-border-left{border-left-color:#2962ff!important}.light-blue-50-bg{background-color:#e1f5fe!important}.md-light-blue-50-bg{background-color:#e1f5fe!important;color:rgba(0,0,0,.87)}.light-blue-50-fg{color:#e1f5fe!important}.light-blue-50-border{border-color:#e1f5fe!important}.light-blue-50-border-top{border-top-color:#e1f5fe!important}.light-blue-50-border-right{border-right-color:#e1f5fe!important}.light-blue-50-border-bottom{border-bottom-color:#e1f5fe!important}.light-blue-50-border-left{border-left-color:#e1f5fe!important}.light-blue-100-bg{background-color:#b3e5fc!important}.md-light-blue-100-bg{background-color:#b3e5fc!important;color:rgba(0,0,0,.87)}.light-blue-100-fg{color:#b3e5fc!important}.light-blue-100-border{border-color:#b3e5fc!important}.light-blue-100-border-top{border-top-color:#b3e5fc!important}.light-blue-100-border-right{border-right-color:#b3e5fc!important}.light-blue-100-border-bottom{border-bottom-color:#b3e5fc!important}.light-blue-100-border-left{border-left-color:#b3e5fc!important}.light-blue-200-bg{background-color:#81d4fa!important}.md-light-blue-200-bg{background-color:#81d4fa!important;color:rgba(0,0,0,.87)}.light-blue-200-fg{color:#81d4fa!important}.light-blue-200-border{border-color:#81d4fa!important}.light-blue-200-border-top{border-top-color:#81d4fa!important}.light-blue-200-border-right{border-right-color:#81d4fa!important}.light-blue-200-border-bottom{border-bottom-color:#81d4fa!important}.light-blue-200-border-left{border-left-color:#81d4fa!important}.light-blue-300-bg{background-color:#4fc3f7!important}.md-light-blue-300-bg{background-color:#4fc3f7!important;color:rgba(0,0,0,.87)}.light-blue-300-fg{color:#4fc3f7!important}.light-blue-300-border{border-color:#4fc3f7!important}.light-blue-300-border-top{border-top-color:#4fc3f7!important}.light-blue-300-border-right{border-right-color:#4fc3f7!important}.light-blue-300-border-bottom{border-bottom-color:#4fc3f7!important}.light-blue-300-border-left{border-left-color:#4fc3f7!important}.light-blue-400-bg{background-color:#29b6f6!important}.md-light-blue-400-bg{background-color:#29b6f6!important;color:rgba(0,0,0,.87)}.light-blue-400-fg{color:#29b6f6!important}.light-blue-400-border{border-color:#29b6f6!important}.light-blue-400-border-top{border-top-color:#29b6f6!important}.light-blue-400-border-right{border-right-color:#29b6f6!important}.light-blue-400-border-bottom{border-bottom-color:#29b6f6!important}.light-blue-400-border-left{border-left-color:#29b6f6!important}.light-blue-500-bg{background-color:#03a9f4!important}.md-light-blue-500-bg{background-color:#03a9f4!important;color:rgba(0,0,0,.87)}.light-blue-500-fg{color:#03a9f4!important}.light-blue-500-border{border-color:#03a9f4!important}.light-blue-500-border-top{border-top-color:#03a9f4!important}.light-blue-500-border-right{border-right-color:#03a9f4!important}.light-blue-500-border-bottom{border-bottom-color:#03a9f4!important}.light-blue-500-border-left{border-left-color:#03a9f4!important}.md-light-blue-bg{background-color:#03a9f4!important;color:rgba(0,0,0,.87)}.light-blue-bg{background-color:#03a9f4!important}.light-blue-fg{color:#03a9f4!important}.light-blue-border{border-color:#03a9f4!important}.light-blue-border-top{border-top-color:#03a9f4!important}.light-blue-border-right{border-right-color:#03a9f4!important}.light-blue-border-bottom{border-bottom-color:#03a9f4!important}.light-blue-border-left{border-left-color:#03a9f4!important}.light-blue-600-bg{background-color:#039be5!important}.md-light-blue-600-bg{background-color:#039be5!important;color:#fff}.light-blue-600-fg{color:#039be5!important}.light-blue-600-border{border-color:#039be5!important}.light-blue-600-border-top{border-top-color:#039be5!important}.light-blue-600-border-right{border-right-color:#039be5!important}.light-blue-600-border-bottom{border-bottom-color:#039be5!important}.light-blue-600-border-left{border-left-color:#039be5!important}.light-blue-700-bg{background-color:#0288d1!important}.md-light-blue-700-bg{background-color:#0288d1!important;color:#fff}.light-blue-700-fg{color:#0288d1!important}.light-blue-700-border{border-color:#0288d1!important}.light-blue-700-border-top{border-top-color:#0288d1!important}.light-blue-700-border-right{border-right-color:#0288d1!important}.light-blue-700-border-bottom{border-bottom-color:#0288d1!important}.light-blue-700-border-left{border-left-color:#0288d1!important}.light-blue-800-bg{background-color:#0277bd!important}.md-light-blue-800-bg{background-color:#0277bd!important;color:#fff}.light-blue-800-fg{color:#0277bd!important}.light-blue-800-border{border-color:#0277bd!important}.light-blue-800-border-top{border-top-color:#0277bd!important}.light-blue-800-border-right{border-right-color:#0277bd!important}.light-blue-800-border-bottom{border-bottom-color:#0277bd!important}.light-blue-800-border-left{border-left-color:#0277bd!important}.light-blue-900-bg{background-color:#01579b!important}.md-light-blue-900-bg{background-color:#01579b!important;color:#fff}.light-blue-900-fg{color:#01579b!important}.light-blue-900-border{border-color:#01579b!important}.light-blue-900-border-top{border-top-color:#01579b!important}.light-blue-900-border-right{border-right-color:#01579b!important}.light-blue-900-border-bottom{border-bottom-color:#01579b!important}.light-blue-900-border-left{border-left-color:#01579b!important}.light-blue-A100-bg{background-color:#80d8ff!important}.md-light-blue-A100-bg{background-color:#80d8ff!important;color:rgba(0,0,0,.87)}.light-blue-A100-fg{color:#80d8ff!important}.light-blue-A100-border{border-color:#80d8ff!important}.light-blue-A100-border-top{border-top-color:#80d8ff!important}.light-blue-A100-border-right{border-right-color:#80d8ff!important}.light-blue-A100-border-bottom{border-bottom-color:#80d8ff!important}.light-blue-A100-border-left{border-left-color:#80d8ff!important}.light-blue-A200-bg{background-color:#40c4ff!important}.md-light-blue-A200-bg{background-color:#40c4ff!important;color:rgba(0,0,0,.87)}.light-blue-A200-fg{color:#40c4ff!important}.light-blue-A200-border{border-color:#40c4ff!important}.light-blue-A200-border-top{border-top-color:#40c4ff!important}.light-blue-A200-border-right{border-right-color:#40c4ff!important}.light-blue-A200-border-bottom{border-bottom-color:#40c4ff!important}.light-blue-A200-border-left{border-left-color:#40c4ff!important}.light-blue-A400-bg{background-color:#00b0ff!important}.md-light-blue-A400-bg{background-color:#00b0ff!important;color:rgba(0,0,0,.87)}.light-blue-A400-fg{color:#00b0ff!important}.light-blue-A400-border{border-color:#00b0ff!important}.light-blue-A400-border-top{border-top-color:#00b0ff!important}.light-blue-A400-border-right{border-right-color:#00b0ff!important}.light-blue-A400-border-bottom{border-bottom-color:#00b0ff!important}.light-blue-A400-border-left{border-left-color:#00b0ff!important}.light-blue-A700-bg{background-color:#0091ea!important}.md-light-blue-A700-bg{background-color:#0091ea!important;color:#fff}.light-blue-A700-fg{color:#0091ea!important}.light-blue-A700-border{border-color:#0091ea!important}.light-blue-A700-border-top{border-top-color:#0091ea!important}.light-blue-A700-border-right{border-right-color:#0091ea!important}.light-blue-A700-border-bottom{border-bottom-color:#0091ea!important}.light-blue-A700-border-left{border-left-color:#0091ea!important}.cyan-50-bg{background-color:#e0f7fa!important}.md-cyan-50-bg{background-color:#e0f7fa!important;color:rgba(0,0,0,.87)}.cyan-50-fg{color:#e0f7fa!important}.cyan-50-border{border-color:#e0f7fa!important}.cyan-50-border-top{border-top-color:#e0f7fa!important}.cyan-50-border-right{border-right-color:#e0f7fa!important}.cyan-50-border-bottom{border-bottom-color:#e0f7fa!important}.cyan-50-border-left{border-left-color:#e0f7fa!important}.cyan-100-bg{background-color:#b2ebf2!important}.md-cyan-100-bg{background-color:#b2ebf2!important;color:rgba(0,0,0,.87)}.cyan-100-fg{color:#b2ebf2!important}.cyan-100-border{border-color:#b2ebf2!important}.cyan-100-border-top{border-top-color:#b2ebf2!important}.cyan-100-border-right{border-right-color:#b2ebf2!important}.cyan-100-border-bottom{border-bottom-color:#b2ebf2!important}.cyan-100-border-left{border-left-color:#b2ebf2!important}.cyan-200-bg{background-color:#80deea!important}.md-cyan-200-bg{background-color:#80deea!important;color:rgba(0,0,0,.87)}.cyan-200-fg{color:#80deea!important}.cyan-200-border{border-color:#80deea!important}.cyan-200-border-top{border-top-color:#80deea!important}.cyan-200-border-right{border-right-color:#80deea!important}.cyan-200-border-bottom{border-bottom-color:#80deea!important}.cyan-200-border-left{border-left-color:#80deea!important}.cyan-300-bg{background-color:#4dd0e1!important}.md-cyan-300-bg{background-color:#4dd0e1!important;color:rgba(0,0,0,.87)}.cyan-300-fg{color:#4dd0e1!important}.cyan-300-border{border-color:#4dd0e1!important}.cyan-300-border-top{border-top-color:#4dd0e1!important}.cyan-300-border-right{border-right-color:#4dd0e1!important}.cyan-300-border-bottom{border-bottom-color:#4dd0e1!important}.cyan-300-border-left{border-left-color:#4dd0e1!important}.cyan-400-bg{background-color:#26c6da!important}.md-cyan-400-bg{background-color:#26c6da!important;color:rgba(0,0,0,.87)}.cyan-400-fg{color:#26c6da!important}.cyan-400-border{border-color:#26c6da!important}.cyan-400-border-top{border-top-color:#26c6da!important}.cyan-400-border-right{border-right-color:#26c6da!important}.cyan-400-border-bottom{border-bottom-color:#26c6da!important}.cyan-400-border-left{border-left-color:#26c6da!important}.cyan-500-bg{background-color:#00bcd4!important}.md-cyan-500-bg{background-color:#00bcd4!important;color:rgba(0,0,0,.87)}.cyan-500-fg{color:#00bcd4!important}.cyan-500-border{border-color:#00bcd4!important}.cyan-500-border-top{border-top-color:#00bcd4!important}.cyan-500-border-right{border-right-color:#00bcd4!important}.cyan-500-border-bottom{border-bottom-color:#00bcd4!important}.cyan-500-border-left{border-left-color:#00bcd4!important}.md-cyan-bg{background-color:#00bcd4!important;color:rgba(0,0,0,.87)}.cyan-bg{background-color:#00bcd4!important}.cyan-fg{color:#00bcd4!important}.cyan-border{border-color:#00bcd4!important}.cyan-border-top{border-top-color:#00bcd4!important}.cyan-border-right{border-right-color:#00bcd4!important}.cyan-border-bottom{border-bottom-color:#00bcd4!important}.cyan-border-left{border-left-color:#00bcd4!important}.cyan-600-bg{background-color:#00acc1!important}.md-cyan-600-bg{background-color:#00acc1!important;color:rgba(0,0,0,.87)}.cyan-600-fg{color:#00acc1!important}.cyan-600-border{border-color:#00acc1!important}.cyan-600-border-top{border-top-color:#00acc1!important}.cyan-600-border-right{border-right-color:#00acc1!important}.cyan-600-border-bottom{border-bottom-color:#00acc1!important}.cyan-600-border-left{border-left-color:#00acc1!important}.cyan-700-bg{background-color:#0097a7!important}.md-cyan-700-bg{background-color:#0097a7!important;color:#fff}.cyan-700-fg{color:#0097a7!important}.cyan-700-border{border-color:#0097a7!important}.cyan-700-border-top{border-top-color:#0097a7!important}.cyan-700-border-right{border-right-color:#0097a7!important}.cyan-700-border-bottom{border-bottom-color:#0097a7!important}.cyan-700-border-left{border-left-color:#0097a7!important}.cyan-800-bg{background-color:#00838f!important}.md-cyan-800-bg{background-color:#00838f!important;color:#fff}.cyan-800-fg{color:#00838f!important}.cyan-800-border{border-color:#00838f!important}.cyan-800-border-top{border-top-color:#00838f!important}.cyan-800-border-right{border-right-color:#00838f!important}.cyan-800-border-bottom{border-bottom-color:#00838f!important}.cyan-800-border-left{border-left-color:#00838f!important}.cyan-900-bg{background-color:#006064!important}.md-cyan-900-bg{background-color:#006064!important;color:#fff}.cyan-900-fg{color:#006064!important}.cyan-900-border{border-color:#006064!important}.cyan-900-border-top{border-top-color:#006064!important}.cyan-900-border-right{border-right-color:#006064!important}.cyan-900-border-bottom{border-bottom-color:#006064!important}.cyan-900-border-left{border-left-color:#006064!important}.cyan-A100-bg{background-color:#84ffff!important}.md-cyan-A100-bg{background-color:#84ffff!important;color:rgba(0,0,0,.87)}.cyan-A100-fg{color:#84ffff!important}.cyan-A100-border{border-color:#84ffff!important}.cyan-A100-border-top{border-top-color:#84ffff!important}.cyan-A100-border-right{border-right-color:#84ffff!important}.cyan-A100-border-bottom{border-bottom-color:#84ffff!important}.cyan-A100-border-left{border-left-color:#84ffff!important}.cyan-A200-bg{background-color:#18ffff!important}.md-cyan-A200-bg{background-color:#18ffff!important;color:rgba(0,0,0,.87)}.cyan-A200-fg{color:#18ffff!important}.cyan-A200-border{border-color:#18ffff!important}.cyan-A200-border-top{border-top-color:#18ffff!important}.cyan-A200-border-right{border-right-color:#18ffff!important}.cyan-A200-border-bottom{border-bottom-color:#18ffff!important}.cyan-A200-border-left{border-left-color:#18ffff!important}.cyan-A400-bg{background-color:#00e5ff!important}.md-cyan-A400-bg{background-color:#00e5ff!important;color:rgba(0,0,0,.87)}.cyan-A400-fg{color:#00e5ff!important}.cyan-A400-border{border-color:#00e5ff!important}.cyan-A400-border-top{border-top-color:#00e5ff!important}.cyan-A400-border-right{border-right-color:#00e5ff!important}.cyan-A400-border-bottom{border-bottom-color:#00e5ff!important}.cyan-A400-border-left{border-left-color:#00e5ff!important}.cyan-A700-bg{background-color:#00b8d4!important}.md-cyan-A700-bg{background-color:#00b8d4!important;color:rgba(0,0,0,.87)}.cyan-A700-fg{color:#00b8d4!important}.cyan-A700-border{border-color:#00b8d4!important}.cyan-A700-border-top{border-top-color:#00b8d4!important}.cyan-A700-border-right{border-right-color:#00b8d4!important}.cyan-A700-border-bottom{border-bottom-color:#00b8d4!important}.cyan-A700-border-left{border-left-color:#00b8d4!important}.teal-50-bg{background-color:#e0f2f1!important}.md-teal-50-bg{background-color:#e0f2f1!important;color:rgba(0,0,0,.87)}.teal-50-fg{color:#e0f2f1!important}.teal-50-border{border-color:#e0f2f1!important}.teal-50-border-top{border-top-color:#e0f2f1!important}.teal-50-border-right{border-right-color:#e0f2f1!important}.teal-50-border-bottom{border-bottom-color:#e0f2f1!important}.teal-50-border-left{border-left-color:#e0f2f1!important}.teal-100-bg{background-color:#b2dfdb!important}.md-teal-100-bg{background-color:#b2dfdb!important;color:rgba(0,0,0,.87)}.teal-100-fg{color:#b2dfdb!important}.teal-100-border{border-color:#b2dfdb!important}.teal-100-border-top{border-top-color:#b2dfdb!important}.teal-100-border-right{border-right-color:#b2dfdb!important}.teal-100-border-bottom{border-bottom-color:#b2dfdb!important}.teal-100-border-left{border-left-color:#b2dfdb!important}.teal-200-bg{background-color:#80cbc4!important}.md-teal-200-bg{background-color:#80cbc4!important;color:rgba(0,0,0,.87)}.teal-200-fg{color:#80cbc4!important}.teal-200-border{border-color:#80cbc4!important}.teal-200-border-top{border-top-color:#80cbc4!important}.teal-200-border-right{border-right-color:#80cbc4!important}.teal-200-border-bottom{border-bottom-color:#80cbc4!important}.teal-200-border-left{border-left-color:#80cbc4!important}.teal-300-bg{background-color:#4db6ac!important}.md-teal-300-bg{background-color:#4db6ac!important;color:rgba(0,0,0,.87)}.teal-300-fg{color:#4db6ac!important}.teal-300-border{border-color:#4db6ac!important}.teal-300-border-top{border-top-color:#4db6ac!important}.teal-300-border-right{border-right-color:#4db6ac!important}.teal-300-border-bottom{border-bottom-color:#4db6ac!important}.teal-300-border-left{border-left-color:#4db6ac!important}.teal-400-bg{background-color:#26a69a!important}.md-teal-400-bg{background-color:#26a69a!important;color:rgba(0,0,0,.87)}.teal-400-fg{color:#26a69a!important}.teal-400-border{border-color:#26a69a!important}.teal-400-border-top{border-top-color:#26a69a!important}.teal-400-border-right{border-right-color:#26a69a!important}.teal-400-border-bottom{border-bottom-color:#26a69a!important}.teal-400-border-left{border-left-color:#26a69a!important}.teal-500-bg{background-color:#009688!important}.md-teal-500-bg{background-color:#009688!important;color:#fff}.teal-500-fg{color:#009688!important}.teal-500-border{border-color:#009688!important}.teal-500-border-top{border-top-color:#009688!important}.teal-500-border-right{border-right-color:#009688!important}.teal-500-border-bottom{border-bottom-color:#009688!important}.teal-500-border-left{border-left-color:#009688!important}.md-teal-bg{background-color:#009688!important;color:#fff}.teal-bg{background-color:#009688!important}.teal-fg{color:#009688!important}.teal-border{border-color:#009688!important}.teal-border-top{border-top-color:#009688!important}.teal-border-right{border-right-color:#009688!important}.teal-border-bottom{border-bottom-color:#009688!important}.teal-border-left{border-left-color:#009688!important}.teal-600-bg{background-color:#00897b!important}.md-teal-600-bg{background-color:#00897b!important;color:#fff}.teal-600-fg{color:#00897b!important}.teal-600-border{border-color:#00897b!important}.teal-600-border-top{border-top-color:#00897b!important}.teal-600-border-right{border-right-color:#00897b!important}.teal-600-border-bottom{border-bottom-color:#00897b!important}.teal-600-border-left{border-left-color:#00897b!important}.teal-700-bg{background-color:#00796b!important}.md-teal-700-bg{background-color:#00796b!important;color:#fff}.teal-700-fg{color:#00796b!important}.teal-700-border{border-color:#00796b!important}.teal-700-border-top{border-top-color:#00796b!important}.teal-700-border-right{border-right-color:#00796b!important}.teal-700-border-bottom{border-bottom-color:#00796b!important}.teal-700-border-left{border-left-color:#00796b!important}.teal-800-bg{background-color:#00695c!important}.md-teal-800-bg{background-color:#00695c!important;color:rgba(255,255,255,.87)}.teal-800-fg{color:#00695c!important}.teal-800-border{border-color:#00695c!important}.teal-800-border-top{border-top-color:#00695c!important}.teal-800-border-right{border-right-color:#00695c!important}.teal-800-border-bottom{border-bottom-color:#00695c!important}.teal-800-border-left{border-left-color:#00695c!important}.teal-900-bg{background-color:#004d40!important}.md-teal-900-bg{background-color:#004d40!important;color:rgba(255,255,255,.87)}.teal-900-fg{color:#004d40!important}.teal-900-border{border-color:#004d40!important}.teal-900-border-top{border-top-color:#004d40!important}.teal-900-border-right{border-right-color:#004d40!important}.teal-900-border-bottom{border-bottom-color:#004d40!important}.teal-900-border-left{border-left-color:#004d40!important}.teal-A100-bg{background-color:#a7ffeb!important}.md-teal-A100-bg{background-color:#a7ffeb!important;color:rgba(0,0,0,.87)}.teal-A100-fg{color:#a7ffeb!important}.teal-A100-border{border-color:#a7ffeb!important}.teal-A100-border-top{border-top-color:#a7ffeb!important}.teal-A100-border-right{border-right-color:#a7ffeb!important}.teal-A100-border-bottom{border-bottom-color:#a7ffeb!important}.teal-A100-border-left{border-left-color:#a7ffeb!important}.teal-A200-bg{background-color:#64ffda!important}.md-teal-A200-bg{background-color:#64ffda!important;color:rgba(0,0,0,.87)}.teal-A200-fg{color:#64ffda!important}.teal-A200-border{border-color:#64ffda!important}.teal-A200-border-top{border-top-color:#64ffda!important}.teal-A200-border-right{border-right-color:#64ffda!important}.teal-A200-border-bottom{border-bottom-color:#64ffda!important}.teal-A200-border-left{border-left-color:#64ffda!important}.teal-A400-bg{background-color:#1de9b6!important}.md-teal-A400-bg{background-color:#1de9b6!important;color:rgba(0,0,0,.87)}.teal-A400-fg{color:#1de9b6!important}.teal-A400-border{border-color:#1de9b6!important}.teal-A400-border-top{border-top-color:#1de9b6!important}.teal-A400-border-right{border-right-color:#1de9b6!important}.teal-A400-border-bottom{border-bottom-color:#1de9b6!important}.teal-A400-border-left{border-left-color:#1de9b6!important}.teal-A700-bg{background-color:#00bfa5!important}.md-teal-A700-bg{background-color:#00bfa5!important;color:rgba(0,0,0,.87)}.teal-A700-fg{color:#00bfa5!important}.teal-A700-border{border-color:#00bfa5!important}.teal-A700-border-top{border-top-color:#00bfa5!important}.teal-A700-border-right{border-right-color:#00bfa5!important}.teal-A700-border-bottom{border-bottom-color:#00bfa5!important}.teal-A700-border-left{border-left-color:#00bfa5!important}.green-50-bg{background-color:#e8f5e9!important}.md-green-50-bg{background-color:#e8f5e9!important;color:rgba(0,0,0,.87)}.green-50-fg{color:#e8f5e9!important}.green-50-border{border-color:#e8f5e9!important}.green-50-border-top{border-top-color:#e8f5e9!important}.green-50-border-right{border-right-color:#e8f5e9!important}.green-50-border-bottom{border-bottom-color:#e8f5e9!important}.green-50-border-left{border-left-color:#e8f5e9!important}.green-100-bg{background-color:#c8e6c9!important}.md-green-100-bg{background-color:#c8e6c9!important;color:rgba(0,0,0,.87)}.green-100-fg{color:#c8e6c9!important}.green-100-border{border-color:#c8e6c9!important}.green-100-border-top{border-top-color:#c8e6c9!important}.green-100-border-right{border-right-color:#c8e6c9!important}.green-100-border-bottom{border-bottom-color:#c8e6c9!important}.green-100-border-left{border-left-color:#c8e6c9!important}.green-200-bg{background-color:#a5d6a7!important}.md-green-200-bg{background-color:#a5d6a7!important;color:rgba(0,0,0,.87)}.green-200-fg{color:#a5d6a7!important}.green-200-border{border-color:#a5d6a7!important}.green-200-border-top{border-top-color:#a5d6a7!important}.green-200-border-right{border-right-color:#a5d6a7!important}.green-200-border-bottom{border-bottom-color:#a5d6a7!important}.green-200-border-left{border-left-color:#a5d6a7!important}.green-300-bg{background-color:#81c784!important}.md-green-300-bg{background-color:#81c784!important;color:rgba(0,0,0,.87)}.green-300-fg{color:#81c784!important}.green-300-border{border-color:#81c784!important}.green-300-border-top{border-top-color:#81c784!important}.green-300-border-right{border-right-color:#81c784!important}.green-300-border-bottom{border-bottom-color:#81c784!important}.green-300-border-left{border-left-color:#81c784!important}.green-400-bg{background-color:#66bb6a!important}.md-green-400-bg{background-color:#66bb6a!important;color:rgba(0,0,0,.87)}.green-400-fg{color:#66bb6a!important}.green-400-border{border-color:#66bb6a!important}.green-400-border-top{border-top-color:#66bb6a!important}.green-400-border-right{border-right-color:#66bb6a!important}.green-400-border-bottom{border-bottom-color:#66bb6a!important}.green-400-border-left{border-left-color:#66bb6a!important}.green-500-bg{background-color:#4caf50!important}.md-green-500-bg{background-color:#4caf50!important;color:rgba(0,0,0,.87)}.green-500-fg{color:#4caf50!important}.green-500-border{border-color:#4caf50!important}.green-500-border-top{border-top-color:#4caf50!important}.green-500-border-right{border-right-color:#4caf50!important}.green-500-border-bottom{border-bottom-color:#4caf50!important}.green-500-border-left{border-left-color:#4caf50!important}.md-green-bg{background-color:#4caf50!important;color:rgba(0,0,0,.87)}.green-bg{background-color:#4caf50!important}.green-fg{color:#4caf50!important}.green-border{border-color:#4caf50!important}.green-border-top{border-top-color:#4caf50!important}.green-border-right{border-right-color:#4caf50!important}.green-border-bottom{border-bottom-color:#4caf50!important}.green-border-left{border-left-color:#4caf50!important}.green-600-bg{background-color:#43a047!important}.md-green-600-bg{background-color:#43a047!important;color:#fff}.green-600-fg{color:#43a047!important}.green-600-border{border-color:#43a047!important}.green-600-border-top{border-top-color:#43a047!important}.green-600-border-right{border-right-color:#43a047!important}.green-600-border-bottom{border-bottom-color:#43a047!important}.green-600-border-left{border-left-color:#43a047!important}.green-700-bg{background-color:#388e3c!important}.md-green-700-bg{background-color:#388e3c!important;color:#fff}.green-700-fg{color:#388e3c!important}.green-700-border{border-color:#388e3c!important}.green-700-border-top{border-top-color:#388e3c!important}.green-700-border-right{border-right-color:#388e3c!important}.green-700-border-bottom{border-bottom-color:#388e3c!important}.green-700-border-left{border-left-color:#388e3c!important}.green-800-bg{background-color:#2e7d32!important}.md-green-800-bg{background-color:#2e7d32!important;color:rgba(255,255,255,.87)}.green-800-fg{color:#2e7d32!important}.green-800-border{border-color:#2e7d32!important}.green-800-border-top{border-top-color:#2e7d32!important}.green-800-border-right{border-right-color:#2e7d32!important}.green-800-border-bottom{border-bottom-color:#2e7d32!important}.green-800-border-left{border-left-color:#2e7d32!important}.green-900-bg{background-color:#1b5e20!important}.md-green-900-bg{background-color:#1b5e20!important;color:rgba(255,255,255,.87)}.green-900-fg{color:#1b5e20!important}.green-900-border{border-color:#1b5e20!important}.green-900-border-top{border-top-color:#1b5e20!important}.green-900-border-right{border-right-color:#1b5e20!important}.green-900-border-bottom{border-bottom-color:#1b5e20!important}.green-900-border-left{border-left-color:#1b5e20!important}.green-A100-bg{background-color:#b9f6ca!important}.md-green-A100-bg{background-color:#b9f6ca!important;color:rgba(0,0,0,.87)}.green-A100-fg{color:#b9f6ca!important}.green-A100-border{border-color:#b9f6ca!important}.green-A100-border-top{border-top-color:#b9f6ca!important}.green-A100-border-right{border-right-color:#b9f6ca!important}.green-A100-border-bottom{border-bottom-color:#b9f6ca!important}.green-A100-border-left{border-left-color:#b9f6ca!important}.green-A200-bg{background-color:#69f0ae!important}.md-green-A200-bg{background-color:#69f0ae!important;color:rgba(0,0,0,.87)}.green-A200-fg{color:#69f0ae!important}.green-A200-border{border-color:#69f0ae!important}.green-A200-border-top{border-top-color:#69f0ae!important}.green-A200-border-right{border-right-color:#69f0ae!important}.green-A200-border-bottom{border-bottom-color:#69f0ae!important}.green-A200-border-left{border-left-color:#69f0ae!important}.green-A400-bg{background-color:#00e676!important}.md-green-A400-bg{background-color:#00e676!important;color:rgba(0,0,0,.87)}.green-A400-fg{color:#00e676!important}.green-A400-border{border-color:#00e676!important}.green-A400-border-top{border-top-color:#00e676!important}.green-A400-border-right{border-right-color:#00e676!important}.green-A400-border-bottom{border-bottom-color:#00e676!important}.green-A400-border-left{border-left-color:#00e676!important}.green-A700-bg{background-color:#00c853!important}.md-green-A700-bg{background-color:#00c853!important;color:rgba(0,0,0,.87)}.green-A700-fg{color:#00c853!important}.green-A700-border{border-color:#00c853!important}.green-A700-border-top{border-top-color:#00c853!important}.green-A700-border-right{border-right-color:#00c853!important}.green-A700-border-bottom{border-bottom-color:#00c853!important}.green-A700-border-left{border-left-color:#00c853!important}.light-green-50-bg{background-color:#f1f8e9!important}.md-light-green-50-bg{background-color:#f1f8e9!important;color:rgba(0,0,0,.87)}.light-green-50-fg{color:#f1f8e9!important}.light-green-50-border{border-color:#f1f8e9!important}.light-green-50-border-top{border-top-color:#f1f8e9!important}.light-green-50-border-right{border-right-color:#f1f8e9!important}.light-green-50-border-bottom{border-bottom-color:#f1f8e9!important}.light-green-50-border-left{border-left-color:#f1f8e9!important}.light-green-100-bg{background-color:#dcedc8!important}.md-light-green-100-bg{background-color:#dcedc8!important;color:rgba(0,0,0,.87)}.light-green-100-fg{color:#dcedc8!important}.light-green-100-border{border-color:#dcedc8!important}.light-green-100-border-top{border-top-color:#dcedc8!important}.light-green-100-border-right{border-right-color:#dcedc8!important}.light-green-100-border-bottom{border-bottom-color:#dcedc8!important}.light-green-100-border-left{border-left-color:#dcedc8!important}.light-green-200-bg{background-color:#c5e1a5!important}.md-light-green-200-bg{background-color:#c5e1a5!important;color:rgba(0,0,0,.87)}.light-green-200-fg{color:#c5e1a5!important}.light-green-200-border{border-color:#c5e1a5!important}.light-green-200-border-top{border-top-color:#c5e1a5!important}.light-green-200-border-right{border-right-color:#c5e1a5!important}.light-green-200-border-bottom{border-bottom-color:#c5e1a5!important}.light-green-200-border-left{border-left-color:#c5e1a5!important}.light-green-300-bg{background-color:#aed581!important}.md-light-green-300-bg{background-color:#aed581!important;color:rgba(0,0,0,.87)}.light-green-300-fg{color:#aed581!important}.light-green-300-border{border-color:#aed581!important}.light-green-300-border-top{border-top-color:#aed581!important}.light-green-300-border-right{border-right-color:#aed581!important}.light-green-300-border-bottom{border-bottom-color:#aed581!important}.light-green-300-border-left{border-left-color:#aed581!important}.light-green-400-bg{background-color:#9ccc65!important}.md-light-green-400-bg{background-color:#9ccc65!important;color:rgba(0,0,0,.87)}.light-green-400-fg{color:#9ccc65!important}.light-green-400-border{border-color:#9ccc65!important}.light-green-400-border-top{border-top-color:#9ccc65!important}.light-green-400-border-right{border-right-color:#9ccc65!important}.light-green-400-border-bottom{border-bottom-color:#9ccc65!important}.light-green-400-border-left{border-left-color:#9ccc65!important}.light-green-500-bg{background-color:#8bc34a!important}.md-light-green-500-bg{background-color:#8bc34a!important;color:rgba(0,0,0,.87)}.light-green-500-fg{color:#8bc34a!important}.light-green-500-border{border-color:#8bc34a!important}.light-green-500-border-top{border-top-color:#8bc34a!important}.light-green-500-border-right{border-right-color:#8bc34a!important}.light-green-500-border-bottom{border-bottom-color:#8bc34a!important}.light-green-500-border-left{border-left-color:#8bc34a!important}.md-light-green-bg{background-color:#8bc34a!important;color:rgba(0,0,0,.87)}.light-green-bg{background-color:#8bc34a!important}.light-green-fg{color:#8bc34a!important}.light-green-border{border-color:#8bc34a!important}.light-green-border-top{border-top-color:#8bc34a!important}.light-green-border-right{border-right-color:#8bc34a!important}.light-green-border-bottom{border-bottom-color:#8bc34a!important}.light-green-border-left{border-left-color:#8bc34a!important}.light-green-600-bg{background-color:#7cb342!important}.md-light-green-600-bg{background-color:#7cb342!important;color:rgba(0,0,0,.87)}.light-green-600-fg{color:#7cb342!important}.light-green-600-border{border-color:#7cb342!important}.light-green-600-border-top{border-top-color:#7cb342!important}.light-green-600-border-right{border-right-color:#7cb342!important}.light-green-600-border-bottom{border-bottom-color:#7cb342!important}.light-green-600-border-left{border-left-color:#7cb342!important}.light-green-700-bg{background-color:#689f38!important}.md-light-green-700-bg{background-color:#689f38!important;color:#fff}.light-green-700-fg{color:#689f38!important}.light-green-700-border{border-color:#689f38!important}.light-green-700-border-top{border-top-color:#689f38!important}.light-green-700-border-right{border-right-color:#689f38!important}.light-green-700-border-bottom{border-bottom-color:#689f38!important}.light-green-700-border-left{border-left-color:#689f38!important}.light-green-800-bg{background-color:#558b2f!important}.md-light-green-800-bg{background-color:#558b2f!important;color:#fff}.light-green-800-fg{color:#558b2f!important}.light-green-800-border{border-color:#558b2f!important}.light-green-800-border-top{border-top-color:#558b2f!important}.light-green-800-border-right{border-right-color:#558b2f!important}.light-green-800-border-bottom{border-bottom-color:#558b2f!important}.light-green-800-border-left{border-left-color:#558b2f!important}.light-green-900-bg{background-color:#33691e!important}.md-light-green-900-bg{background-color:#33691e!important;color:#fff}.light-green-900-fg{color:#33691e!important}.light-green-900-border{border-color:#33691e!important}.light-green-900-border-top{border-top-color:#33691e!important}.light-green-900-border-right{border-right-color:#33691e!important}.light-green-900-border-bottom{border-bottom-color:#33691e!important}.light-green-900-border-left{border-left-color:#33691e!important}.light-green-A100-bg{background-color:#ccff90!important}.md-light-green-A100-bg{background-color:#ccff90!important;color:rgba(0,0,0,.87)}.light-green-A100-fg{color:#ccff90!important}.light-green-A100-border{border-color:#ccff90!important}.light-green-A100-border-top{border-top-color:#ccff90!important}.light-green-A100-border-right{border-right-color:#ccff90!important}.light-green-A100-border-bottom{border-bottom-color:#ccff90!important}.light-green-A100-border-left{border-left-color:#ccff90!important}.light-green-A200-bg{background-color:#b2ff59!important}.md-light-green-A200-bg{background-color:#b2ff59!important;color:rgba(0,0,0,.87)}.light-green-A200-fg{color:#b2ff59!important}.light-green-A200-border{border-color:#b2ff59!important}.light-green-A200-border-top{border-top-color:#b2ff59!important}.light-green-A200-border-right{border-right-color:#b2ff59!important}.light-green-A200-border-bottom{border-bottom-color:#b2ff59!important}.light-green-A200-border-left{border-left-color:#b2ff59!important}.light-green-A400-bg{background-color:#76ff03!important}.md-light-green-A400-bg{background-color:#76ff03!important;color:rgba(0,0,0,.87)}.light-green-A400-fg{color:#76ff03!important}.light-green-A400-border{border-color:#76ff03!important}.light-green-A400-border-top{border-top-color:#76ff03!important}.light-green-A400-border-right{border-right-color:#76ff03!important}.light-green-A400-border-bottom{border-bottom-color:#76ff03!important}.light-green-A400-border-left{border-left-color:#76ff03!important}.light-green-A700-bg{background-color:#64dd17!important}.md-light-green-A700-bg{background-color:#64dd17!important;color:rgba(0,0,0,.87)}.light-green-A700-fg{color:#64dd17!important}.light-green-A700-border{border-color:#64dd17!important}.light-green-A700-border-top{border-top-color:#64dd17!important}.light-green-A700-border-right{border-right-color:#64dd17!important}.light-green-A700-border-bottom{border-bottom-color:#64dd17!important}.light-green-A700-border-left{border-left-color:#64dd17!important}.lime-50-bg{background-color:#f9fbe7!important}.md-lime-50-bg{background-color:#f9fbe7!important;color:rgba(0,0,0,.87)}.lime-50-fg{color:#f9fbe7!important}.lime-50-border{border-color:#f9fbe7!important}.lime-50-border-top{border-top-color:#f9fbe7!important}.lime-50-border-right{border-right-color:#f9fbe7!important}.lime-50-border-bottom{border-bottom-color:#f9fbe7!important}.lime-50-border-left{border-left-color:#f9fbe7!important}.lime-100-bg{background-color:#f0f4c3!important}.md-lime-100-bg{background-color:#f0f4c3!important;color:rgba(0,0,0,.87)}.lime-100-fg{color:#f0f4c3!important}.lime-100-border{border-color:#f0f4c3!important}.lime-100-border-top{border-top-color:#f0f4c3!important}.lime-100-border-right{border-right-color:#f0f4c3!important}.lime-100-border-bottom{border-bottom-color:#f0f4c3!important}.lime-100-border-left{border-left-color:#f0f4c3!important}.lime-200-bg{background-color:#e6ee9c!important}.md-lime-200-bg{background-color:#e6ee9c!important;color:rgba(0,0,0,.87)}.lime-200-fg{color:#e6ee9c!important}.lime-200-border{border-color:#e6ee9c!important}.lime-200-border-top{border-top-color:#e6ee9c!important}.lime-200-border-right{border-right-color:#e6ee9c!important}.lime-200-border-bottom{border-bottom-color:#e6ee9c!important}.lime-200-border-left{border-left-color:#e6ee9c!important}.lime-300-bg{background-color:#dce775!important}.md-lime-300-bg{background-color:#dce775!important;color:rgba(0,0,0,.87)}.lime-300-fg{color:#dce775!important}.lime-300-border{border-color:#dce775!important}.lime-300-border-top{border-top-color:#dce775!important}.lime-300-border-right{border-right-color:#dce775!important}.lime-300-border-bottom{border-bottom-color:#dce775!important}.lime-300-border-left{border-left-color:#dce775!important}.lime-400-bg{background-color:#d4e157!important}.md-lime-400-bg{background-color:#d4e157!important;color:rgba(0,0,0,.87)}.lime-400-fg{color:#d4e157!important}.lime-400-border{border-color:#d4e157!important}.lime-400-border-top{border-top-color:#d4e157!important}.lime-400-border-right{border-right-color:#d4e157!important}.lime-400-border-bottom{border-bottom-color:#d4e157!important}.lime-400-border-left{border-left-color:#d4e157!important}.lime-500-bg{background-color:#cddc39!important}.md-lime-500-bg{background-color:#cddc39!important;color:rgba(0,0,0,.87)}.lime-500-fg{color:#cddc39!important}.lime-500-border{border-color:#cddc39!important}.lime-500-border-top{border-top-color:#cddc39!important}.lime-500-border-right{border-right-color:#cddc39!important}.lime-500-border-bottom{border-bottom-color:#cddc39!important}.lime-500-border-left{border-left-color:#cddc39!important}.md-lime-bg{background-color:#cddc39!important;color:rgba(0,0,0,.87)}.lime-bg{background-color:#cddc39!important}.lime-fg{color:#cddc39!important}.lime-border{border-color:#cddc39!important}.lime-border-top{border-top-color:#cddc39!important}.lime-border-right{border-right-color:#cddc39!important}.lime-border-bottom{border-bottom-color:#cddc39!important}.lime-border-left{border-left-color:#cddc39!important}.lime-600-bg{background-color:#c0ca33!important}.md-lime-600-bg{background-color:#c0ca33!important;color:rgba(0,0,0,.87)}.lime-600-fg{color:#c0ca33!important}.lime-600-border{border-color:#c0ca33!important}.lime-600-border-top{border-top-color:#c0ca33!important}.lime-600-border-right{border-right-color:#c0ca33!important}.lime-600-border-bottom{border-bottom-color:#c0ca33!important}.lime-600-border-left{border-left-color:#c0ca33!important}.lime-700-bg{background-color:#afb42b!important}.md-lime-700-bg{background-color:#afb42b!important;color:rgba(0,0,0,.87)}.lime-700-fg{color:#afb42b!important}.lime-700-border{border-color:#afb42b!important}.lime-700-border-top{border-top-color:#afb42b!important}.lime-700-border-right{border-right-color:#afb42b!important}.lime-700-border-bottom{border-bottom-color:#afb42b!important}.lime-700-border-left{border-left-color:#afb42b!important}.lime-800-bg{background-color:#9e9d24!important}.md-lime-800-bg{background-color:#9e9d24!important;color:rgba(0,0,0,.87)}.lime-800-fg{color:#9e9d24!important}.lime-800-border{border-color:#9e9d24!important}.lime-800-border-top{border-top-color:#9e9d24!important}.lime-800-border-right{border-right-color:#9e9d24!important}.lime-800-border-bottom{border-bottom-color:#9e9d24!important}.lime-800-border-left{border-left-color:#9e9d24!important}.lime-900-bg{background-color:#827717!important}.md-lime-900-bg{background-color:#827717!important;color:#fff}.lime-900-fg{color:#827717!important}.lime-900-border{border-color:#827717!important}.lime-900-border-top{border-top-color:#827717!important}.lime-900-border-right{border-right-color:#827717!important}.lime-900-border-bottom{border-bottom-color:#827717!important}.lime-900-border-left{border-left-color:#827717!important}.lime-A100-bg{background-color:#f4ff81!important}.md-lime-A100-bg{background-color:#f4ff81!important;color:rgba(0,0,0,.87)}.lime-A100-fg{color:#f4ff81!important}.lime-A100-border{border-color:#f4ff81!important}.lime-A100-border-top{border-top-color:#f4ff81!important}.lime-A100-border-right{border-right-color:#f4ff81!important}.lime-A100-border-bottom{border-bottom-color:#f4ff81!important}.lime-A100-border-left{border-left-color:#f4ff81!important}.lime-A200-bg{background-color:#eeff41!important}.md-lime-A200-bg{background-color:#eeff41!important;color:rgba(0,0,0,.87)}.lime-A200-fg{color:#eeff41!important}.lime-A200-border{border-color:#eeff41!important}.lime-A200-border-top{border-top-color:#eeff41!important}.lime-A200-border-right{border-right-color:#eeff41!important}.lime-A200-border-bottom{border-bottom-color:#eeff41!important}.lime-A200-border-left{border-left-color:#eeff41!important}.lime-A400-bg{background-color:#c6ff00!important}.md-lime-A400-bg{background-color:#c6ff00!important;color:rgba(0,0,0,.87)}.lime-A400-fg{color:#c6ff00!important}.lime-A400-border{border-color:#c6ff00!important}.lime-A400-border-top{border-top-color:#c6ff00!important}.lime-A400-border-right{border-right-color:#c6ff00!important}.lime-A400-border-bottom{border-bottom-color:#c6ff00!important}.lime-A400-border-left{border-left-color:#c6ff00!important}.lime-A700-bg{background-color:#aeea00!important}.md-lime-A700-bg{background-color:#aeea00!important;color:rgba(0,0,0,.87)}.lime-A700-fg{color:#aeea00!important}.lime-A700-border{border-color:#aeea00!important}.lime-A700-border-top{border-top-color:#aeea00!important}.lime-A700-border-right{border-right-color:#aeea00!important}.lime-A700-border-bottom{border-bottom-color:#aeea00!important}.lime-A700-border-left{border-left-color:#aeea00!important}.yellow-50-bg{background-color:#fffde7!important}.md-yellow-50-bg{background-color:#fffde7!important;color:rgba(0,0,0,.87)}.yellow-50-fg{color:#fffde7!important}.yellow-50-border{border-color:#fffde7!important}.yellow-50-border-top{border-top-color:#fffde7!important}.yellow-50-border-right{border-right-color:#fffde7!important}.yellow-50-border-bottom{border-bottom-color:#fffde7!important}.yellow-50-border-left{border-left-color:#fffde7!important}.yellow-100-bg{background-color:#fff9c4!important}.md-yellow-100-bg{background-color:#fff9c4!important;color:rgba(0,0,0,.87)}.yellow-100-fg{color:#fff9c4!important}.yellow-100-border{border-color:#fff9c4!important}.yellow-100-border-top{border-top-color:#fff9c4!important}.yellow-100-border-right{border-right-color:#fff9c4!important}.yellow-100-border-bottom{border-bottom-color:#fff9c4!important}.yellow-100-border-left{border-left-color:#fff9c4!important}.yellow-200-bg{background-color:#fff59d!important}.md-yellow-200-bg{background-color:#fff59d!important;color:rgba(0,0,0,.87)}.yellow-200-fg{color:#fff59d!important}.yellow-200-border{border-color:#fff59d!important}.yellow-200-border-top{border-top-color:#fff59d!important}.yellow-200-border-right{border-right-color:#fff59d!important}.yellow-200-border-bottom{border-bottom-color:#fff59d!important}.yellow-200-border-left{border-left-color:#fff59d!important}.yellow-300-bg{background-color:#fff176!important}.md-yellow-300-bg{background-color:#fff176!important;color:rgba(0,0,0,.87)}.yellow-300-fg{color:#fff176!important}.yellow-300-border{border-color:#fff176!important}.yellow-300-border-top{border-top-color:#fff176!important}.yellow-300-border-right{border-right-color:#fff176!important}.yellow-300-border-bottom{border-bottom-color:#fff176!important}.yellow-300-border-left{border-left-color:#fff176!important}.yellow-400-bg{background-color:#ffee58!important}.md-yellow-400-bg{background-color:#ffee58!important;color:rgba(0,0,0,.87)}.yellow-400-fg{color:#ffee58!important}.yellow-400-border{border-color:#ffee58!important}.yellow-400-border-top{border-top-color:#ffee58!important}.yellow-400-border-right{border-right-color:#ffee58!important}.yellow-400-border-bottom{border-bottom-color:#ffee58!important}.yellow-400-border-left{border-left-color:#ffee58!important}.yellow-500-bg{background-color:#ffeb3b!important}.md-yellow-500-bg{background-color:#ffeb3b!important;color:rgba(0,0,0,.87)}.yellow-500-fg{color:#ffeb3b!important}.yellow-500-border{border-color:#ffeb3b!important}.yellow-500-border-top{border-top-color:#ffeb3b!important}.yellow-500-border-right{border-right-color:#ffeb3b!important}.yellow-500-border-bottom{border-bottom-color:#ffeb3b!important}.yellow-500-border-left{border-left-color:#ffeb3b!important}.md-yellow-bg{background-color:#ffeb3b!important;color:rgba(0,0,0,.87)}.yellow-bg{background-color:#ffeb3b!important}.yellow-fg{color:#ffeb3b!important}.yellow-border{border-color:#ffeb3b!important}.yellow-border-top{border-top-color:#ffeb3b!important}.yellow-border-right{border-right-color:#ffeb3b!important}.yellow-border-bottom{border-bottom-color:#ffeb3b!important}.yellow-border-left{border-left-color:#ffeb3b!important}.yellow-600-bg{background-color:#fdd835!important}.md-yellow-600-bg{background-color:#fdd835!important;color:rgba(0,0,0,.87)}.yellow-600-fg{color:#fdd835!important}.yellow-600-border{border-color:#fdd835!important}.yellow-600-border-top{border-top-color:#fdd835!important}.yellow-600-border-right{border-right-color:#fdd835!important}.yellow-600-border-bottom{border-bottom-color:#fdd835!important}.yellow-600-border-left{border-left-color:#fdd835!important}.yellow-700-bg{background-color:#fbc02d!important}.md-yellow-700-bg{background-color:#fbc02d!important;color:rgba(0,0,0,.87)}.yellow-700-fg{color:#fbc02d!important}.yellow-700-border{border-color:#fbc02d!important}.yellow-700-border-top{border-top-color:#fbc02d!important}.yellow-700-border-right{border-right-color:#fbc02d!important}.yellow-700-border-bottom{border-bottom-color:#fbc02d!important}.yellow-700-border-left{border-left-color:#fbc02d!important}.yellow-800-bg{background-color:#f9a825!important}.md-yellow-800-bg{background-color:#f9a825!important;color:rgba(0,0,0,.87)}.yellow-800-fg{color:#f9a825!important}.yellow-800-border{border-color:#f9a825!important}.yellow-800-border-top{border-top-color:#f9a825!important}.yellow-800-border-right{border-right-color:#f9a825!important}.yellow-800-border-bottom{border-bottom-color:#f9a825!important}.yellow-800-border-left{border-left-color:#f9a825!important}.yellow-900-bg{background-color:#f57f17!important}.md-yellow-900-bg{background-color:#f57f17!important;color:rgba(0,0,0,.87)}.yellow-900-fg{color:#f57f17!important}.yellow-900-border{border-color:#f57f17!important}.yellow-900-border-top{border-top-color:#f57f17!important}.yellow-900-border-right{border-right-color:#f57f17!important}.yellow-900-border-bottom{border-bottom-color:#f57f17!important}.yellow-900-border-left{border-left-color:#f57f17!important}.yellow-A100-bg{background-color:#ffff8d!important}.md-yellow-A100-bg{background-color:#ffff8d!important;color:rgba(0,0,0,.87)}.yellow-A100-fg{color:#ffff8d!important}.yellow-A100-border{border-color:#ffff8d!important}.yellow-A100-border-top{border-top-color:#ffff8d!important}.yellow-A100-border-right{border-right-color:#ffff8d!important}.yellow-A100-border-bottom{border-bottom-color:#ffff8d!important}.yellow-A100-border-left{border-left-color:#ffff8d!important}.yellow-A200-bg{background-color:#ff0!important}.md-yellow-A200-bg{background-color:#ff0!important;color:rgba(0,0,0,.87)}.yellow-A200-fg{color:#ff0!important}.yellow-A200-border{border-color:#ff0!important}.yellow-A200-border-top{border-top-color:#ff0!important}.yellow-A200-border-right{border-right-color:#ff0!important}.yellow-A200-border-bottom{border-bottom-color:#ff0!important}.yellow-A200-border-left{border-left-color:#ff0!important}.yellow-A400-bg{background-color:#ffea00!important}.md-yellow-A400-bg{background-color:#ffea00!important;color:rgba(0,0,0,.87)}.yellow-A400-fg{color:#ffea00!important}.yellow-A400-border{border-color:#ffea00!important}.yellow-A400-border-top{border-top-color:#ffea00!important}.yellow-A400-border-right{border-right-color:#ffea00!important}.yellow-A400-border-bottom{border-bottom-color:#ffea00!important}.yellow-A400-border-left{border-left-color:#ffea00!important}.yellow-A700-bg{background-color:#ffd600!important}.md-yellow-A700-bg{background-color:#ffd600!important;color:rgba(0,0,0,.87)}.yellow-A700-fg{color:#ffd600!important}.yellow-A700-border{border-color:#ffd600!important}.yellow-A700-border-top{border-top-color:#ffd600!important}.yellow-A700-border-right{border-right-color:#ffd600!important}.yellow-A700-border-bottom{border-bottom-color:#ffd600!important}.yellow-A700-border-left{border-left-color:#ffd600!important}.amber-50-bg{background-color:#fff8e1!important}.md-amber-50-bg{background-color:#fff8e1!important;color:rgba(0,0,0,.87)}.amber-50-fg{color:#fff8e1!important}.amber-50-border{border-color:#fff8e1!important}.amber-50-border-top{border-top-color:#fff8e1!important}.amber-50-border-right{border-right-color:#fff8e1!important}.amber-50-border-bottom{border-bottom-color:#fff8e1!important}.amber-50-border-left{border-left-color:#fff8e1!important}.amber-100-bg{background-color:#ffecb3!important}.md-amber-100-bg{background-color:#ffecb3!important;color:rgba(0,0,0,.87)}.amber-100-fg{color:#ffecb3!important}.amber-100-border{border-color:#ffecb3!important}.amber-100-border-top{border-top-color:#ffecb3!important}.amber-100-border-right{border-right-color:#ffecb3!important}.amber-100-border-bottom{border-bottom-color:#ffecb3!important}.amber-100-border-left{border-left-color:#ffecb3!important}.amber-200-bg{background-color:#ffe082!important}.md-amber-200-bg{background-color:#ffe082!important;color:rgba(0,0,0,.87)}.amber-200-fg{color:#ffe082!important}.amber-200-border{border-color:#ffe082!important}.amber-200-border-top{border-top-color:#ffe082!important}.amber-200-border-right{border-right-color:#ffe082!important}.amber-200-border-bottom{border-bottom-color:#ffe082!important}.amber-200-border-left{border-left-color:#ffe082!important}.amber-300-bg{background-color:#ffd54f!important}.md-amber-300-bg{background-color:#ffd54f!important;color:rgba(0,0,0,.87)}.amber-300-fg{color:#ffd54f!important}.amber-300-border{border-color:#ffd54f!important}.amber-300-border-top{border-top-color:#ffd54f!important}.amber-300-border-right{border-right-color:#ffd54f!important}.amber-300-border-bottom{border-bottom-color:#ffd54f!important}.amber-300-border-left{border-left-color:#ffd54f!important}.amber-400-bg{background-color:#ffca28!important}.md-amber-400-bg{background-color:#ffca28!important;color:rgba(0,0,0,.87)}.amber-400-fg{color:#ffca28!important}.amber-400-border{border-color:#ffca28!important}.amber-400-border-top{border-top-color:#ffca28!important}.amber-400-border-right{border-right-color:#ffca28!important}.amber-400-border-bottom{border-bottom-color:#ffca28!important}.amber-400-border-left{border-left-color:#ffca28!important}.amber-500-bg{background-color:#ffc107!important}.md-amber-500-bg{background-color:#ffc107!important;color:rgba(0,0,0,.87)}.amber-500-fg{color:#ffc107!important}.amber-500-border{border-color:#ffc107!important}.amber-500-border-top{border-top-color:#ffc107!important}.amber-500-border-right{border-right-color:#ffc107!important}.amber-500-border-bottom{border-bottom-color:#ffc107!important}.amber-500-border-left{border-left-color:#ffc107!important}.md-amber-bg{background-color:#ffc107!important;color:rgba(0,0,0,.87)}.amber-bg{background-color:#ffc107!important}.amber-fg{color:#ffc107!important}.amber-border{border-color:#ffc107!important}.amber-border-top{border-top-color:#ffc107!important}.amber-border-right{border-right-color:#ffc107!important}.amber-border-bottom{border-bottom-color:#ffc107!important}.amber-border-left{border-left-color:#ffc107!important}.amber-600-bg{background-color:#ffb300!important}.md-amber-600-bg{background-color:#ffb300!important;color:rgba(0,0,0,.87)}.amber-600-fg{color:#ffb300!important}.amber-600-border{border-color:#ffb300!important}.amber-600-border-top{border-top-color:#ffb300!important}.amber-600-border-right{border-right-color:#ffb300!important}.amber-600-border-bottom{border-bottom-color:#ffb300!important}.amber-600-border-left{border-left-color:#ffb300!important}.amber-700-bg{background-color:#ffa000!important}.md-amber-700-bg{background-color:#ffa000!important;color:rgba(0,0,0,.87)}.amber-700-fg{color:#ffa000!important}.amber-700-border{border-color:#ffa000!important}.amber-700-border-top{border-top-color:#ffa000!important}.amber-700-border-right{border-right-color:#ffa000!important}.amber-700-border-bottom{border-bottom-color:#ffa000!important}.amber-700-border-left{border-left-color:#ffa000!important}.amber-800-bg{background-color:#ff8f00!important}.md-amber-800-bg{background-color:#ff8f00!important;color:rgba(0,0,0,.87)}.amber-800-fg{color:#ff8f00!important}.amber-800-border{border-color:#ff8f00!important}.amber-800-border-top{border-top-color:#ff8f00!important}.amber-800-border-right{border-right-color:#ff8f00!important}.amber-800-border-bottom{border-bottom-color:#ff8f00!important}.amber-800-border-left{border-left-color:#ff8f00!important}.amber-900-bg{background-color:#ff6f00!important}.md-amber-900-bg{background-color:#ff6f00!important;color:rgba(0,0,0,.87)}.amber-900-fg{color:#ff6f00!important}.amber-900-border{border-color:#ff6f00!important}.amber-900-border-top{border-top-color:#ff6f00!important}.amber-900-border-right{border-right-color:#ff6f00!important}.amber-900-border-bottom{border-bottom-color:#ff6f00!important}.amber-900-border-left{border-left-color:#ff6f00!important}.amber-A100-bg{background-color:#ffe57f!important}.md-amber-A100-bg{background-color:#ffe57f!important;color:rgba(0,0,0,.87)}.amber-A100-fg{color:#ffe57f!important}.amber-A100-border{border-color:#ffe57f!important}.amber-A100-border-top{border-top-color:#ffe57f!important}.amber-A100-border-right{border-right-color:#ffe57f!important}.amber-A100-border-bottom{border-bottom-color:#ffe57f!important}.amber-A100-border-left{border-left-color:#ffe57f!important}.amber-A200-bg{background-color:#ffd740!important}.md-amber-A200-bg{background-color:#ffd740!important;color:rgba(0,0,0,.87)}.amber-A200-fg{color:#ffd740!important}.amber-A200-border{border-color:#ffd740!important}.amber-A200-border-top{border-top-color:#ffd740!important}.amber-A200-border-right{border-right-color:#ffd740!important}.amber-A200-border-bottom{border-bottom-color:#ffd740!important}.amber-A200-border-left{border-left-color:#ffd740!important}.amber-A400-bg{background-color:#ffc400!important}.md-amber-A400-bg{background-color:#ffc400!important;color:rgba(0,0,0,.87)}.amber-A400-fg{color:#ffc400!important}.amber-A400-border{border-color:#ffc400!important}.amber-A400-border-top{border-top-color:#ffc400!important}.amber-A400-border-right{border-right-color:#ffc400!important}.amber-A400-border-bottom{border-bottom-color:#ffc400!important}.amber-A400-border-left{border-left-color:#ffc400!important}.amber-A700-bg{background-color:#ffab00!important}.md-amber-A700-bg{background-color:#ffab00!important;color:rgba(0,0,0,.87)}.amber-A700-fg{color:#ffab00!important}.amber-A700-border{border-color:#ffab00!important}.amber-A700-border-top{border-top-color:#ffab00!important}.amber-A700-border-right{border-right-color:#ffab00!important}.amber-A700-border-bottom{border-bottom-color:#ffab00!important}.amber-A700-border-left{border-left-color:#ffab00!important}.orange-50-bg{background-color:#fff3e0!important}.md-orange-50-bg{background-color:#fff3e0!important;color:rgba(0,0,0,.87)}.orange-50-fg{color:#fff3e0!important}.orange-50-border{border-color:#fff3e0!important}.orange-50-border-top{border-top-color:#fff3e0!important}.orange-50-border-right{border-right-color:#fff3e0!important}.orange-50-border-bottom{border-bottom-color:#fff3e0!important}.orange-50-border-left{border-left-color:#fff3e0!important}.orange-100-bg{background-color:#ffe0b2!important}.md-orange-100-bg{background-color:#ffe0b2!important;color:rgba(0,0,0,.87)}.orange-100-fg{color:#ffe0b2!important}.orange-100-border{border-color:#ffe0b2!important}.orange-100-border-top{border-top-color:#ffe0b2!important}.orange-100-border-right{border-right-color:#ffe0b2!important}.orange-100-border-bottom{border-bottom-color:#ffe0b2!important}.orange-100-border-left{border-left-color:#ffe0b2!important}.orange-200-bg{background-color:#ffcc80!important}.md-orange-200-bg{background-color:#ffcc80!important;color:rgba(0,0,0,.87)}.orange-200-fg{color:#ffcc80!important}.orange-200-border{border-color:#ffcc80!important}.orange-200-border-top{border-top-color:#ffcc80!important}.orange-200-border-right{border-right-color:#ffcc80!important}.orange-200-border-bottom{border-bottom-color:#ffcc80!important}.orange-200-border-left{border-left-color:#ffcc80!important}.orange-300-bg{background-color:#ffb74d!important}.md-orange-300-bg{background-color:#ffb74d!important;color:rgba(0,0,0,.87)}.orange-300-fg{color:#ffb74d!important}.orange-300-border{border-color:#ffb74d!important}.orange-300-border-top{border-top-color:#ffb74d!important}.orange-300-border-right{border-right-color:#ffb74d!important}.orange-300-border-bottom{border-bottom-color:#ffb74d!important}.orange-300-border-left{border-left-color:#ffb74d!important}.orange-400-bg{background-color:#ffa726!important}.md-orange-400-bg{background-color:#ffa726!important;color:rgba(0,0,0,.87)}.orange-400-fg{color:#ffa726!important}.orange-400-border{border-color:#ffa726!important}.orange-400-border-top{border-top-color:#ffa726!important}.orange-400-border-right{border-right-color:#ffa726!important}.orange-400-border-bottom{border-bottom-color:#ffa726!important}.orange-400-border-left{border-left-color:#ffa726!important}.orange-500-bg{background-color:#ff9800!important}.md-orange-500-bg{background-color:#ff9800!important;color:rgba(0,0,0,.87)}.orange-500-fg{color:#ff9800!important}.orange-500-border{border-color:#ff9800!important}.orange-500-border-top{border-top-color:#ff9800!important}.orange-500-border-right{border-right-color:#ff9800!important}.orange-500-border-bottom{border-bottom-color:#ff9800!important}.orange-500-border-left{border-left-color:#ff9800!important}.md-orange-bg{background-color:#ff9800!important;color:rgba(0,0,0,.87)}.orange-bg{background-color:#ff9800!important}.orange-fg{color:#ff9800!important}.orange-border{border-color:#ff9800!important}.orange-border-top{border-top-color:#ff9800!important}.orange-border-right{border-right-color:#ff9800!important}.orange-border-bottom{border-bottom-color:#ff9800!important}.orange-border-left{border-left-color:#ff9800!important}.orange-600-bg{background-color:#fb8c00!important}.md-orange-600-bg{background-color:#fb8c00!important;color:rgba(0,0,0,.87)}.orange-600-fg{color:#fb8c00!important}.orange-600-border{border-color:#fb8c00!important}.orange-600-border-top{border-top-color:#fb8c00!important}.orange-600-border-right{border-right-color:#fb8c00!important}.orange-600-border-bottom{border-bottom-color:#fb8c00!important}.orange-600-border-left{border-left-color:#fb8c00!important}.orange-700-bg{background-color:#f57c00!important}.md-orange-700-bg{background-color:#f57c00!important;color:rgba(0,0,0,.87)}.orange-700-fg{color:#f57c00!important}.orange-700-border{border-color:#f57c00!important}.orange-700-border-top{border-top-color:#f57c00!important}.orange-700-border-right{border-right-color:#f57c00!important}.orange-700-border-bottom{border-bottom-color:#f57c00!important}.orange-700-border-left{border-left-color:#f57c00!important}.orange-800-bg{background-color:#ef6c00!important}.md-orange-800-bg{background-color:#ef6c00!important;color:#fff}.orange-800-fg{color:#ef6c00!important}.orange-800-border{border-color:#ef6c00!important}.orange-800-border-top{border-top-color:#ef6c00!important}.orange-800-border-right{border-right-color:#ef6c00!important}.orange-800-border-bottom{border-bottom-color:#ef6c00!important}.orange-800-border-left{border-left-color:#ef6c00!important}.orange-900-bg{background-color:#e65100!important}.md-orange-900-bg{background-color:#e65100!important;color:#fff}.orange-900-fg{color:#e65100!important}.orange-900-border{border-color:#e65100!important}.orange-900-border-top{border-top-color:#e65100!important}.orange-900-border-right{border-right-color:#e65100!important}.orange-900-border-bottom{border-bottom-color:#e65100!important}.orange-900-border-left{border-left-color:#e65100!important}.orange-A100-bg{background-color:#ffd180!important}.md-orange-A100-bg{background-color:#ffd180!important;color:rgba(0,0,0,.87)}.orange-A100-fg{color:#ffd180!important}.orange-A100-border{border-color:#ffd180!important}.orange-A100-border-top{border-top-color:#ffd180!important}.orange-A100-border-right{border-right-color:#ffd180!important}.orange-A100-border-bottom{border-bottom-color:#ffd180!important}.orange-A100-border-left{border-left-color:#ffd180!important}.orange-A200-bg{background-color:#ffab40!important}.md-orange-A200-bg{background-color:#ffab40!important;color:rgba(0,0,0,.87)}.orange-A200-fg{color:#ffab40!important}.orange-A200-border{border-color:#ffab40!important}.orange-A200-border-top{border-top-color:#ffab40!important}.orange-A200-border-right{border-right-color:#ffab40!important}.orange-A200-border-bottom{border-bottom-color:#ffab40!important}.orange-A200-border-left{border-left-color:#ffab40!important}.orange-A400-bg{background-color:#ff9100!important}.md-orange-A400-bg{background-color:#ff9100!important;color:rgba(0,0,0,.87)}.orange-A400-fg{color:#ff9100!important}.orange-A400-border{border-color:#ff9100!important}.orange-A400-border-top{border-top-color:#ff9100!important}.orange-A400-border-right{border-right-color:#ff9100!important}.orange-A400-border-bottom{border-bottom-color:#ff9100!important}.orange-A400-border-left{border-left-color:#ff9100!important}.orange-A700-bg{background-color:#ff6d00!important}.md-orange-A700-bg{background-color:#ff6d00!important;color:rgba(0,0,0,.87)}.orange-A700-fg{color:#ff6d00!important}.orange-A700-border{border-color:#ff6d00!important}.orange-A700-border-top{border-top-color:#ff6d00!important}.orange-A700-border-right{border-right-color:#ff6d00!important}.orange-A700-border-bottom{border-bottom-color:#ff6d00!important}.orange-A700-border-left{border-left-color:#ff6d00!important}.deep-orange-50-bg{background-color:#fbe9e7!important}.md-deep-orange-50-bg{background-color:#fbe9e7!important;color:rgba(0,0,0,.87)}.deep-orange-50-fg{color:#fbe9e7!important}.deep-orange-50-border{border-color:#fbe9e7!important}.deep-orange-50-border-top{border-top-color:#fbe9e7!important}.deep-orange-50-border-right{border-right-color:#fbe9e7!important}.deep-orange-50-border-bottom{border-bottom-color:#fbe9e7!important}.deep-orange-50-border-left{border-left-color:#fbe9e7!important}.deep-orange-100-bg{background-color:#ffccbc!important}.md-deep-orange-100-bg{background-color:#ffccbc!important;color:rgba(0,0,0,.87)}.deep-orange-100-fg{color:#ffccbc!important}.deep-orange-100-border{border-color:#ffccbc!important}.deep-orange-100-border-top{border-top-color:#ffccbc!important}.deep-orange-100-border-right{border-right-color:#ffccbc!important}.deep-orange-100-border-bottom{border-bottom-color:#ffccbc!important}.deep-orange-100-border-left{border-left-color:#ffccbc!important}.deep-orange-200-bg{background-color:#ffab91!important}.md-deep-orange-200-bg{background-color:#ffab91!important;color:rgba(0,0,0,.87)}.deep-orange-200-fg{color:#ffab91!important}.deep-orange-200-border{border-color:#ffab91!important}.deep-orange-200-border-top{border-top-color:#ffab91!important}.deep-orange-200-border-right{border-right-color:#ffab91!important}.deep-orange-200-border-bottom{border-bottom-color:#ffab91!important}.deep-orange-200-border-left{border-left-color:#ffab91!important}.deep-orange-300-bg{background-color:#ff8a65!important}.md-deep-orange-300-bg{background-color:#ff8a65!important;color:rgba(0,0,0,.87)}.deep-orange-300-fg{color:#ff8a65!important}.deep-orange-300-border{border-color:#ff8a65!important}.deep-orange-300-border-top{border-top-color:#ff8a65!important}.deep-orange-300-border-right{border-right-color:#ff8a65!important}.deep-orange-300-border-bottom{border-bottom-color:#ff8a65!important}.deep-orange-300-border-left{border-left-color:#ff8a65!important}.deep-orange-400-bg{background-color:#ff7043!important}.md-deep-orange-400-bg{background-color:#ff7043!important;color:rgba(0,0,0,.87)}.deep-orange-400-fg{color:#ff7043!important}.deep-orange-400-border{border-color:#ff7043!important}.deep-orange-400-border-top{border-top-color:#ff7043!important}.deep-orange-400-border-right{border-right-color:#ff7043!important}.deep-orange-400-border-bottom{border-bottom-color:#ff7043!important}.deep-orange-400-border-left{border-left-color:#ff7043!important}.deep-orange-500-bg{background-color:#ff5722!important}.md-deep-orange-500-bg{background-color:#ff5722!important;color:#fff}.deep-orange-500-fg{color:#ff5722!important}.deep-orange-500-border{border-color:#ff5722!important}.deep-orange-500-border-top{border-top-color:#ff5722!important}.deep-orange-500-border-right{border-right-color:#ff5722!important}.deep-orange-500-border-bottom{border-bottom-color:#ff5722!important}.deep-orange-500-border-left{border-left-color:#ff5722!important}.md-deep-orange-bg{background-color:#ff5722!important;color:#fff}.deep-orange-bg{background-color:#ff5722!important}.deep-orange-fg{color:#ff5722!important}.deep-orange-border{border-color:#ff5722!important}.deep-orange-border-top{border-top-color:#ff5722!important}.deep-orange-border-right{border-right-color:#ff5722!important}.deep-orange-border-bottom{border-bottom-color:#ff5722!important}.deep-orange-border-left{border-left-color:#ff5722!important}.deep-orange-600-bg{background-color:#f4511e!important}.md-deep-orange-600-bg{background-color:#f4511e!important;color:#fff}.deep-orange-600-fg{color:#f4511e!important}.deep-orange-600-border{border-color:#f4511e!important}.deep-orange-600-border-top{border-top-color:#f4511e!important}.deep-orange-600-border-right{border-right-color:#f4511e!important}.deep-orange-600-border-bottom{border-bottom-color:#f4511e!important}.deep-orange-600-border-left{border-left-color:#f4511e!important}.deep-orange-700-bg{background-color:#e64a19!important}.md-deep-orange-700-bg{background-color:#e64a19!important;color:#fff}.deep-orange-700-fg{color:#e64a19!important}.deep-orange-700-border{border-color:#e64a19!important}.deep-orange-700-border-top{border-top-color:#e64a19!important}.deep-orange-700-border-right{border-right-color:#e64a19!important}.deep-orange-700-border-bottom{border-bottom-color:#e64a19!important}.deep-orange-700-border-left{border-left-color:#e64a19!important}.deep-orange-800-bg{background-color:#d84315!important}.md-deep-orange-800-bg{background-color:#d84315!important;color:#fff}.deep-orange-800-fg{color:#d84315!important}.deep-orange-800-border{border-color:#d84315!important}.deep-orange-800-border-top{border-top-color:#d84315!important}.deep-orange-800-border-right{border-right-color:#d84315!important}.deep-orange-800-border-bottom{border-bottom-color:#d84315!important}.deep-orange-800-border-left{border-left-color:#d84315!important}.deep-orange-900-bg{background-color:#bf360c!important}.md-deep-orange-900-bg{background-color:#bf360c!important;color:#fff}.deep-orange-900-fg{color:#bf360c!important}.deep-orange-900-border{border-color:#bf360c!important}.deep-orange-900-border-top{border-top-color:#bf360c!important}.deep-orange-900-border-right{border-right-color:#bf360c!important}.deep-orange-900-border-bottom{border-bottom-color:#bf360c!important}.deep-orange-900-border-left{border-left-color:#bf360c!important}.deep-orange-A100-bg{background-color:#ff9e80!important}.md-deep-orange-A100-bg{background-color:#ff9e80!important;color:rgba(0,0,0,.87)}.deep-orange-A100-fg{color:#ff9e80!important}.deep-orange-A100-border{border-color:#ff9e80!important}.deep-orange-A100-border-top{border-top-color:#ff9e80!important}.deep-orange-A100-border-right{border-right-color:#ff9e80!important}.deep-orange-A100-border-bottom{border-bottom-color:#ff9e80!important}.deep-orange-A100-border-left{border-left-color:#ff9e80!important}.deep-orange-A200-bg{background-color:#ff6e40!important}.md-deep-orange-A200-bg{background-color:#ff6e40!important;color:rgba(0,0,0,.87)}.deep-orange-A200-fg{color:#ff6e40!important}.deep-orange-A200-border{border-color:#ff6e40!important}.deep-orange-A200-border-top{border-top-color:#ff6e40!important}.deep-orange-A200-border-right{border-right-color:#ff6e40!important}.deep-orange-A200-border-bottom{border-bottom-color:#ff6e40!important}.deep-orange-A200-border-left{border-left-color:#ff6e40!important}.deep-orange-A400-bg{background-color:#ff3d00!important}.md-deep-orange-A400-bg{background-color:#ff3d00!important;color:#fff}.deep-orange-A400-fg{color:#ff3d00!important}.deep-orange-A400-border{border-color:#ff3d00!important}.deep-orange-A400-border-top{border-top-color:#ff3d00!important}.deep-orange-A400-border-right{border-right-color:#ff3d00!important}.deep-orange-A400-border-bottom{border-bottom-color:#ff3d00!important}.deep-orange-A400-border-left{border-left-color:#ff3d00!important}.deep-orange-A700-bg{background-color:#dd2c00!important}.md-deep-orange-A700-bg{background-color:#dd2c00!important;color:#fff}.deep-orange-A700-fg{color:#dd2c00!important}.deep-orange-A700-border{border-color:#dd2c00!important}.deep-orange-A700-border-top{border-top-color:#dd2c00!important}.deep-orange-A700-border-right{border-right-color:#dd2c00!important}.deep-orange-A700-border-bottom{border-bottom-color:#dd2c00!important}.deep-orange-A700-border-left{border-left-color:#dd2c00!important}.brown-50-bg{background-color:#efebe9!important}.md-brown-50-bg{background-color:#efebe9!important;color:rgba(0,0,0,.87)}.brown-50-fg{color:#efebe9!important}.brown-50-border{border-color:#efebe9!important}.brown-50-border-top{border-top-color:#efebe9!important}.brown-50-border-right{border-right-color:#efebe9!important}.brown-50-border-bottom{border-bottom-color:#efebe9!important}.brown-50-border-left{border-left-color:#efebe9!important}.brown-100-bg{background-color:#d7ccc8!important}.md-brown-100-bg{background-color:#d7ccc8!important;color:rgba(0,0,0,.87)}.brown-100-fg{color:#d7ccc8!important}.brown-100-border{border-color:#d7ccc8!important}.brown-100-border-top{border-top-color:#d7ccc8!important}.brown-100-border-right{border-right-color:#d7ccc8!important}.brown-100-border-bottom{border-bottom-color:#d7ccc8!important}.brown-100-border-left{border-left-color:#d7ccc8!important}.brown-200-bg{background-color:#bcaaa4!important}.md-brown-200-bg{background-color:#bcaaa4!important;color:rgba(0,0,0,.87)}.brown-200-fg{color:#bcaaa4!important}.brown-200-border{border-color:#bcaaa4!important}.brown-200-border-top{border-top-color:#bcaaa4!important}.brown-200-border-right{border-right-color:#bcaaa4!important}.brown-200-border-bottom{border-bottom-color:#bcaaa4!important}.brown-200-border-left{border-left-color:#bcaaa4!important}.brown-300-bg{background-color:#a1887f!important}.md-brown-300-bg{background-color:#a1887f!important;color:#fff}.brown-300-fg{color:#a1887f!important}.brown-300-border{border-color:#a1887f!important}.brown-300-border-top{border-top-color:#a1887f!important}.brown-300-border-right{border-right-color:#a1887f!important}.brown-300-border-bottom{border-bottom-color:#a1887f!important}.brown-300-border-left{border-left-color:#a1887f!important}.brown-400-bg{background-color:#8d6e63!important}.md-brown-400-bg{background-color:#8d6e63!important;color:#fff}.brown-400-fg{color:#8d6e63!important}.brown-400-border{border-color:#8d6e63!important}.brown-400-border-top{border-top-color:#8d6e63!important}.brown-400-border-right{border-right-color:#8d6e63!important}.brown-400-border-bottom{border-bottom-color:#8d6e63!important}.brown-400-border-left{border-left-color:#8d6e63!important}.brown-500-bg{background-color:#795548!important}.md-brown-500-bg{background-color:#795548!important;color:rgba(255,255,255,.87)}.brown-500-fg{color:#795548!important}.brown-500-border{border-color:#795548!important}.brown-500-border-top{border-top-color:#795548!important}.brown-500-border-right{border-right-color:#795548!important}.brown-500-border-bottom{border-bottom-color:#795548!important}.brown-500-border-left{border-left-color:#795548!important}.md-brown-bg{background-color:#795548!important;color:rgba(255,255,255,.87)}.brown-bg{background-color:#795548!important}.brown-fg{color:#795548!important}.brown-border{border-color:#795548!important}.brown-border-top{border-top-color:#795548!important}.brown-border-right{border-right-color:#795548!important}.brown-border-bottom{border-bottom-color:#795548!important}.brown-border-left{border-left-color:#795548!important}.brown-600-bg{background-color:#6d4c41!important}.md-brown-600-bg{background-color:#6d4c41!important;color:rgba(255,255,255,.87)}.brown-600-fg{color:#6d4c41!important}.brown-600-border{border-color:#6d4c41!important}.brown-600-border-top{border-top-color:#6d4c41!important}.brown-600-border-right{border-right-color:#6d4c41!important}.brown-600-border-bottom{border-bottom-color:#6d4c41!important}.brown-600-border-left{border-left-color:#6d4c41!important}.brown-700-bg{background-color:#5d4037!important}.md-brown-700-bg{background-color:#5d4037!important;color:rgba(255,255,255,.87)}.brown-700-fg{color:#5d4037!important}.brown-700-border{border-color:#5d4037!important}.brown-700-border-top{border-top-color:#5d4037!important}.brown-700-border-right{border-right-color:#5d4037!important}.brown-700-border-bottom{border-bottom-color:#5d4037!important}.brown-700-border-left{border-left-color:#5d4037!important}.brown-800-bg{background-color:#4e342e!important}.md-brown-800-bg{background-color:#4e342e!important;color:rgba(255,255,255,.87)}.brown-800-fg{color:#4e342e!important}.brown-800-border{border-color:#4e342e!important}.brown-800-border-top{border-top-color:#4e342e!important}.brown-800-border-right{border-right-color:#4e342e!important}.brown-800-border-bottom{border-bottom-color:#4e342e!important}.brown-800-border-left{border-left-color:#4e342e!important}.brown-900-bg{background-color:#3e2723!important}.md-brown-900-bg{background-color:#3e2723!important;color:rgba(255,255,255,.87)}.brown-900-fg{color:#3e2723!important}.brown-900-border{border-color:#3e2723!important}.brown-900-border-top{border-top-color:#3e2723!important}.brown-900-border-right{border-right-color:#3e2723!important}.brown-900-border-bottom{border-bottom-color:#3e2723!important}.brown-900-border-left{border-left-color:#3e2723!important}.brown-A100-bg{background-color:#d7ccc8!important}.md-brown-A100-bg{background-color:#d7ccc8!important;color:rgba(255,255,255,.87)}.brown-A100-fg{color:#d7ccc8!important}.brown-A100-border{border-color:#d7ccc8!important}.brown-A100-border-top{border-top-color:#d7ccc8!important}.brown-A100-border-right{border-right-color:#d7ccc8!important}.brown-A100-border-bottom{border-bottom-color:#d7ccc8!important}.brown-A100-border-left{border-left-color:#d7ccc8!important}.brown-A200-bg{background-color:#bcaaa4!important}.md-brown-A200-bg{background-color:#bcaaa4!important;color:rgba(255,255,255,.87)}.brown-A200-fg{color:#bcaaa4!important}.brown-A200-border{border-color:#bcaaa4!important}.brown-A200-border-top{border-top-color:#bcaaa4!important}.brown-A200-border-right{border-right-color:#bcaaa4!important}.brown-A200-border-bottom{border-bottom-color:#bcaaa4!important}.brown-A200-border-left{border-left-color:#bcaaa4!important}.brown-A400-bg{background-color:#8d6e63!important}.md-brown-A400-bg{background-color:#8d6e63!important;color:rgba(255,255,255,.87)}.brown-A400-fg{color:#8d6e63!important}.brown-A400-border{border-color:#8d6e63!important}.brown-A400-border-top{border-top-color:#8d6e63!important}.brown-A400-border-right{border-right-color:#8d6e63!important}.brown-A400-border-bottom{border-bottom-color:#8d6e63!important}.brown-A400-border-left{border-left-color:#8d6e63!important}.brown-A700-bg{background-color:#5d4037!important}.md-brown-A700-bg{background-color:#5d4037!important;color:rgba(255,255,255,.87)}.brown-A700-fg{color:#5d4037!important}.brown-A700-border{border-color:#5d4037!important}.brown-A700-border-top{border-top-color:#5d4037!important}.brown-A700-border-right{border-right-color:#5d4037!important}.brown-A700-border-bottom{border-bottom-color:#5d4037!important}.brown-A700-border-left{border-left-color:#5d4037!important}.grey-50-bg{background-color:#fafafa!important}.md-grey-50-bg{background-color:#fafafa!important;color:rgba(0,0,0,.87)}.grey-50-fg{color:#fafafa!important}.grey-50-border{border-color:#fafafa!important}.grey-50-border-top{border-top-color:#fafafa!important}.grey-50-border-right{border-right-color:#fafafa!important}.grey-50-border-bottom{border-bottom-color:#fafafa!important}.grey-50-border-left{border-left-color:#fafafa!important}.grey-100-bg{background-color:#f5f5f5!important}.md-grey-100-bg{background-color:#f5f5f5!important;color:rgba(0,0,0,.87)}.grey-100-fg{color:#f5f5f5!important}.grey-100-border{border-color:#f5f5f5!important}.grey-100-border-top{border-top-color:#f5f5f5!important}.grey-100-border-right{border-right-color:#f5f5f5!important}.grey-100-border-bottom{border-bottom-color:#f5f5f5!important}.grey-100-border-left{border-left-color:#f5f5f5!important}.grey-200-bg{background-color:#eee!important}.md-grey-200-bg{background-color:#eee!important;color:rgba(0,0,0,.87)}.grey-200-fg{color:#eee!important}.grey-200-border{border-color:#eee!important}.grey-200-border-top{border-top-color:#eee!important}.grey-200-border-right{border-right-color:#eee!important}.grey-200-border-bottom{border-bottom-color:#eee!important}.grey-200-border-left{border-left-color:#eee!important}.grey-300-bg{background-color:#e0e0e0!important}.md-grey-300-bg{background-color:#e0e0e0!important;color:rgba(0,0,0,.87)}.grey-300-fg{color:#e0e0e0!important}.grey-300-border{border-color:#e0e0e0!important}.grey-300-border-top{border-top-color:#e0e0e0!important}.grey-300-border-right{border-right-color:#e0e0e0!important}.grey-300-border-bottom{border-bottom-color:#e0e0e0!important}.grey-300-border-left{border-left-color:#e0e0e0!important}.grey-400-bg{background-color:#bdbdbd!important}.md-grey-400-bg{background-color:#bdbdbd!important;color:rgba(0,0,0,.87)}.grey-400-fg{color:#bdbdbd!important}.grey-400-border{border-color:#bdbdbd!important}.grey-400-border-top{border-top-color:#bdbdbd!important}.grey-400-border-right{border-right-color:#bdbdbd!important}.grey-400-border-bottom{border-bottom-color:#bdbdbd!important}.grey-400-border-left{border-left-color:#bdbdbd!important}.grey-500-bg{background-color:#9e9e9e!important}.md-grey-500-bg{background-color:#9e9e9e!important;color:rgba(0,0,0,.87)}.grey-500-fg{color:#9e9e9e!important}.grey-500-border{border-color:#9e9e9e!important}.grey-500-border-top{border-top-color:#9e9e9e!important}.grey-500-border-right{border-right-color:#9e9e9e!important}.grey-500-border-bottom{border-bottom-color:#9e9e9e!important}.grey-500-border-left{border-left-color:#9e9e9e!important}.md-grey-bg{background-color:#9e9e9e!important;color:rgba(0,0,0,.87)}.grey-bg{background-color:#9e9e9e!important}.grey-fg{color:#9e9e9e!important}.grey-border{border-color:#9e9e9e!important}.grey-border-top{border-top-color:#9e9e9e!important}.grey-border-right{border-right-color:#9e9e9e!important}.grey-border-bottom{border-bottom-color:#9e9e9e!important}.grey-border-left{border-left-color:#9e9e9e!important}.grey-600-bg{background-color:#757575!important}.md-grey-600-bg{background-color:#757575!important;color:rgba(255,255,255,.87)}.grey-600-fg{color:#757575!important}.grey-600-border{border-color:#757575!important}.grey-600-border-top{border-top-color:#757575!important}.grey-600-border-right{border-right-color:#757575!important}.grey-600-border-bottom{border-bottom-color:#757575!important}.grey-600-border-left{border-left-color:#757575!important}.grey-700-bg{background-color:#616161!important}.md-grey-700-bg{background-color:#616161!important;color:rgba(255,255,255,.87)}.grey-700-fg{color:#616161!important}.grey-700-border{border-color:#616161!important}.grey-700-border-top{border-top-color:#616161!important}.grey-700-border-right{border-right-color:#616161!important}.grey-700-border-bottom{border-bottom-color:#616161!important}.grey-700-border-left{border-left-color:#616161!important}.grey-800-bg{background-color:#424242!important}.md-grey-800-bg{background-color:#424242!important;color:rgba(255,255,255,.87)}.grey-800-fg{color:#424242!important}.grey-800-border{border-color:#424242!important}.grey-800-border-top{border-top-color:#424242!important}.grey-800-border-right{border-right-color:#424242!important}.grey-800-border-bottom{border-bottom-color:#424242!important}.grey-800-border-left{border-left-color:#424242!important}.grey-900-bg{background-color:#212121!important}.md-grey-900-bg{background-color:#212121!important;color:rgba(255,255,255,.87)}.grey-900-fg{color:#212121!important}.grey-900-border{border-color:#212121!important}.grey-900-border-top{border-top-color:#212121!important}.grey-900-border-right{border-right-color:#212121!important}.grey-900-border-bottom{border-bottom-color:#212121!important}.grey-900-border-left{border-left-color:#212121!important}.grey-1000-bg{background-color:#000!important}.md-grey-1000-bg{background-color:#000!important}.grey-1000-fg{color:#000!important}.grey-1000-border{border-color:#000!important}.grey-1000-border-top{border-top-color:#000!important}.grey-1000-border-right{border-right-color:#000!important}.grey-1000-border-bottom{border-bottom-color:#000!important}.grey-1000-border-left{border-left-color:#000!important}.grey-A100-bg{background-color:#fff!important}.md-grey-A100-bg{background-color:#fff!important;color:rgba(0,0,0,.87)}.grey-A100-fg{color:#fff!important}.grey-A100-border{border-color:#fff!important}.grey-A100-border-top{border-top-color:#fff!important}.grey-A100-border-right{border-right-color:#fff!important}.grey-A100-border-bottom{border-bottom-color:#fff!important}.grey-A100-border-left{border-left-color:#fff!important}.grey-A200-bg{background-color:#eee!important}.md-grey-A200-bg{background-color:#eee!important;color:rgba(0,0,0,.87)}.grey-A200-fg{color:#eee!important}.grey-A200-border{border-color:#eee!important}.grey-A200-border-top{border-top-color:#eee!important}.grey-A200-border-right{border-right-color:#eee!important}.grey-A200-border-bottom{border-bottom-color:#eee!important}.grey-A200-border-left{border-left-color:#eee!important}.grey-A400-bg{background-color:#bdbdbd!important}.md-grey-A400-bg{background-color:#bdbdbd!important;color:rgba(0,0,0,.87)}.grey-A400-fg{color:#bdbdbd!important}.grey-A400-border{border-color:#bdbdbd!important}.grey-A400-border-top{border-top-color:#bdbdbd!important}.grey-A400-border-right{border-right-color:#bdbdbd!important}.grey-A400-border-bottom{border-bottom-color:#bdbdbd!important}.grey-A400-border-left{border-left-color:#bdbdbd!important}.grey-A700-bg{background-color:#616161!important}.md-grey-A700-bg{background-color:#616161!important;color:rgba(0,0,0,.87)}.grey-A700-fg{color:#616161!important}.grey-A700-border{border-color:#616161!important}.grey-A700-border-top{border-top-color:#616161!important}.grey-A700-border-right{border-right-color:#616161!important}.grey-A700-border-bottom{border-bottom-color:#616161!important}.grey-A700-border-left{border-left-color:#616161!important}.blue-grey-50-bg{background-color:#eceff1!important}.md-blue-grey-50-bg{background-color:#eceff1!important;color:rgba(0,0,0,.87)}.blue-grey-50-fg{color:#eceff1!important}.blue-grey-50-border{border-color:#eceff1!important}.blue-grey-50-border-top{border-top-color:#eceff1!important}.blue-grey-50-border-right{border-right-color:#eceff1!important}.blue-grey-50-border-bottom{border-bottom-color:#eceff1!important}.blue-grey-50-border-left{border-left-color:#eceff1!important}.blue-grey-100-bg{background-color:#cfd8dc!important}.md-blue-grey-100-bg{background-color:#cfd8dc!important;color:rgba(0,0,0,.87)}.blue-grey-100-fg{color:#cfd8dc!important}.blue-grey-100-border{border-color:#cfd8dc!important}.blue-grey-100-border-top{border-top-color:#cfd8dc!important}.blue-grey-100-border-right{border-right-color:#cfd8dc!important}.blue-grey-100-border-bottom{border-bottom-color:#cfd8dc!important}.blue-grey-100-border-left{border-left-color:#cfd8dc!important}.blue-grey-200-bg{background-color:#b0bec5!important}.md-blue-grey-200-bg{background-color:#b0bec5!important;color:rgba(0,0,0,.87)}.blue-grey-200-fg{color:#b0bec5!important}.blue-grey-200-border{border-color:#b0bec5!important}.blue-grey-200-border-top{border-top-color:#b0bec5!important}.blue-grey-200-border-right{border-right-color:#b0bec5!important}.blue-grey-200-border-bottom{border-bottom-color:#b0bec5!important}.blue-grey-200-border-left{border-left-color:#b0bec5!important}.blue-grey-300-bg{background-color:#90a4ae!important}.md-blue-grey-300-bg{background-color:#90a4ae!important;color:rgba(0,0,0,.87)}.blue-grey-300-fg{color:#90a4ae!important}.blue-grey-300-border{border-color:#90a4ae!important}.blue-grey-300-border-top{border-top-color:#90a4ae!important}.blue-grey-300-border-right{border-right-color:#90a4ae!important}.blue-grey-300-border-bottom{border-bottom-color:#90a4ae!important}.blue-grey-300-border-left{border-left-color:#90a4ae!important}.blue-grey-400-bg{background-color:#78909c!important}.md-blue-grey-400-bg{background-color:#78909c!important;color:#fff}.blue-grey-400-fg{color:#78909c!important}.blue-grey-400-border{border-color:#78909c!important}.blue-grey-400-border-top{border-top-color:#78909c!important}.blue-grey-400-border-right{border-right-color:#78909c!important}.blue-grey-400-border-bottom{border-bottom-color:#78909c!important}.blue-grey-400-border-left{border-left-color:#78909c!important}.blue-grey-500-bg{background-color:#607d8b!important}.md-blue-grey-500-bg{background-color:#607d8b!important;color:#fff}.blue-grey-500-fg{color:#607d8b!important}.blue-grey-500-border{border-color:#607d8b!important}.blue-grey-500-border-top{border-top-color:#607d8b!important}.blue-grey-500-border-right{border-right-color:#607d8b!important}.blue-grey-500-border-bottom{border-bottom-color:#607d8b!important}.blue-grey-500-border-left{border-left-color:#607d8b!important}.md-blue-grey-bg{background-color:#607d8b!important;color:#fff}.blue-grey-bg{background-color:#607d8b!important}.blue-grey-fg{color:#607d8b!important}.blue-grey-border{border-color:#607d8b!important}.blue-grey-border-top{border-top-color:#607d8b!important}.blue-grey-border-right{border-right-color:#607d8b!important}.blue-grey-border-bottom{border-bottom-color:#607d8b!important}.blue-grey-border-left{border-left-color:#607d8b!important}.blue-grey-600-bg{background-color:#546e7a!important}.md-blue-grey-600-bg{background-color:#546e7a!important;color:rgba(255,255,255,.87)}.blue-grey-600-fg{color:#546e7a!important}.blue-grey-600-border{border-color:#546e7a!important}.blue-grey-600-border-top{border-top-color:#546e7a!important}.blue-grey-600-border-right{border-right-color:#546e7a!important}.blue-grey-600-border-bottom{border-bottom-color:#546e7a!important}.blue-grey-600-border-left{border-left-color:#546e7a!important}.blue-grey-700-bg{background-color:#455a64!important}.md-blue-grey-700-bg{background-color:#455a64!important;color:rgba(255,255,255,.87)}.blue-grey-700-fg{color:#455a64!important}.blue-grey-700-border{border-color:#455a64!important}.blue-grey-700-border-top{border-top-color:#455a64!important}.blue-grey-700-border-right{border-right-color:#455a64!important}.blue-grey-700-border-bottom{border-bottom-color:#455a64!important}.blue-grey-700-border-left{border-left-color:#455a64!important}.blue-grey-800-bg{background-color:#37474f!important}.md-blue-grey-800-bg{background-color:#37474f!important;color:rgba(255,255,255,.87)}.blue-grey-800-fg{color:#37474f!important}.blue-grey-800-border{border-color:#37474f!important}.blue-grey-800-border-top{border-top-color:#37474f!important}.blue-grey-800-border-right{border-right-color:#37474f!important}.blue-grey-800-border-bottom{border-bottom-color:#37474f!important}.blue-grey-800-border-left{border-left-color:#37474f!important}.blue-grey-900-bg{background-color:#263238!important}.md-blue-grey-900-bg{background-color:#263238!important;color:rgba(255,255,255,.87)}.blue-grey-900-fg{color:#263238!important}.blue-grey-900-border{border-color:#263238!important}.blue-grey-900-border-top{border-top-color:#263238!important}.blue-grey-900-border-right{border-right-color:#263238!important}.blue-grey-900-border-bottom{border-bottom-color:#263238!important}.blue-grey-900-border-left{border-left-color:#263238!important}.blue-grey-A100-bg{background-color:#cfd8dc!important}.md-blue-grey-A100-bg{background-color:#cfd8dc!important;color:rgba(255,255,255,.87)}.blue-grey-A100-fg{color:#cfd8dc!important}.blue-grey-A100-border{border-color:#cfd8dc!important}.blue-grey-A100-border-top{border-top-color:#cfd8dc!important}.blue-grey-A100-border-right{border-right-color:#cfd8dc!important}.blue-grey-A100-border-bottom{border-bottom-color:#cfd8dc!important}.blue-grey-A100-border-left{border-left-color:#cfd8dc!important}.blue-grey-A200-bg{background-color:#b0bec5!important}.md-blue-grey-A200-bg{background-color:#b0bec5!important;color:rgba(255,255,255,.87)}.blue-grey-A200-fg{color:#b0bec5!important}.blue-grey-A200-border{border-color:#b0bec5!important}.blue-grey-A200-border-top{border-top-color:#b0bec5!important}.blue-grey-A200-border-right{border-right-color:#b0bec5!important}.blue-grey-A200-border-bottom{border-bottom-color:#b0bec5!important}.blue-grey-A200-border-left{border-left-color:#b0bec5!important}.blue-grey-A400-bg{background-color:#78909c!important}.md-blue-grey-A400-bg{background-color:#78909c!important;color:rgba(255,255,255,.87)}.blue-grey-A400-fg{color:#78909c!important}.blue-grey-A400-border{border-color:#78909c!important}.blue-grey-A400-border-top{border-top-color:#78909c!important}.blue-grey-A400-border-right{border-right-color:#78909c!important}.blue-grey-A400-border-bottom{border-bottom-color:#78909c!important}.blue-grey-A400-border-left{border-left-color:#78909c!important}.blue-grey-A700-bg{background-color:#455a64!important}.md-blue-grey-A700-bg{background-color:#455a64!important;color:rgba(255,255,255,.87)}.blue-grey-A700-fg{color:#455a64!important}.blue-grey-A700-border{border-color:#455a64!important}.blue-grey-A700-border-top{border-top-color:#455a64!important}.blue-grey-A700-border-right{border-right-color:#455a64!important}.blue-grey-A700-border-bottom{border-bottom-color:#455a64!important}.blue-grey-A700-border-left{border-left-color:#455a64!important}.white-500-bg{background-color:#fff!important}.md-white-500-bg{background-color:#fff!important;color:rgba(0,0,0,.87)}.white-500-fg{color:#fff!important}.white-500-border{border-color:#fff!important}.white-500-border-top{border-top-color:#fff!important}.white-500-border-right{border-right-color:#fff!important}.white-500-border-bottom{border-bottom-color:#fff!important}.white-500-border-left{border-left-color:#fff!important}.md-white-bg{background-color:#fff!important;color:rgba(0,0,0,.87)}.white-bg{background-color:#fff!important}.white-fg{color:#fff!important}.white-border{border-color:#fff!important}.white-border-top{border-top-color:#fff!important}.white-border-right{border-right-color:#fff!important}.white-border-bottom{border-bottom-color:#fff!important}.white-border-left{border-left-color:#fff!important}.black-500-bg{background-color:#000!important}.md-black-500-bg{background-color:#000!important;color:rgba(255,255,255,.87)}.black-500-fg{color:#000!important}.black-500-border{border-color:#000!important}.black-500-border-top{border-top-color:#000!important}.black-500-border-right{border-right-color:#000!important}.black-500-border-bottom{border-bottom-color:#000!important}.black-500-border-left{border-left-color:#000!important}.md-black-bg{background-color:#000!important;color:rgba(255,255,255,.87)}.black-bg{background-color:#000!important}.black-fg{color:#000!important}.black-border{border-color:#000!important}.black-border-top{border-top-color:#000!important}.black-border-right{border-right-color:#000!important}.black-border-bottom{border-bottom-color:#000!important}.black-border-left{border-left-color:#000!important}i,md-icon[md-font-icon]{font-size:24px;width:24px;height:24px;min-width:24px;min-height:24px;line-height:24px}i.s4,md-icon[md-font-icon].s4{font-size:4px!important;width:4px!important;height:4px!important;min-width:4px!important;min-height:4px!important;line-height:4px!important}i.s6,md-icon[md-font-icon].s6{font-size:6px!important;width:6px!important;height:6px!important;min-width:6px!important;min-height:6px!important;line-height:6px!important}i.s8,md-icon[md-font-icon].s8{font-size:8px!important;width:8px!important;height:8px!important;min-width:8px!important;min-height:8px!important;line-height:8px!important}i.s10,md-icon[md-font-icon].s10{font-size:10px!important;width:10px!important;height:10px!important;min-width:10px!important;min-height:10px!important;line-height:10px!important}i.s12,md-icon[md-font-icon].s12{font-size:12px!important;width:12px!important;height:12px!important;min-width:12px!important;min-height:12px!important;line-height:12px!important}i.s14,md-icon[md-font-icon].s14{font-size:14px!important;width:14px!important;height:14px!important;min-width:14px!important;min-height:14px!important;line-height:14px!important}i.s16,md-icon[md-font-icon].s16{font-size:16px!important;width:16px!important;height:16px!important;min-width:16px!important;min-height:16px!important;line-height:16px!important}i.s18,md-icon[md-font-icon].s18{font-size:18px!important;width:18px!important;height:18px!important;min-width:18px!important;min-height:18px!important;line-height:18px!important}i.s20,md-icon[md-font-icon].s20{font-size:20px!important;width:20px!important;height:20px!important;min-width:20px!important;min-height:20px!important;line-height:20px!important}i.s22,md-icon[md-font-icon].s22{font-size:22px!important;width:22px!important;height:22px!important;min-width:22px!important;min-height:22px!important;line-height:22px!important}i.s24,md-icon[md-font-icon].s24{font-size:24px!important;width:24px!important;height:24px!important;min-width:24px!important;min-height:24px!important;line-height:24px!important}i.s26,md-icon[md-font-icon].s26{font-size:26px!important;width:26px!important;height:26px!important;min-width:26px!important;min-height:26px!important;line-height:26px!important}i.s28,md-icon[md-font-icon].s28{font-size:28px!important;width:28px!important;height:28px!important;min-width:28px!important;min-height:28px!important;line-height:28px!important}i.s30,md-icon[md-font-icon].s30{font-size:30px!important;width:30px!important;height:30px!important;min-width:30px!important;min-height:30px!important;line-height:30px!important}i.s32,md-icon[md-font-icon].s32{font-size:32px!important;width:32px!important;height:32px!important;min-width:32px!important;min-height:32px!important;line-height:32px!important}i.s34,md-icon[md-font-icon].s34{font-size:34px!important;width:34px!important;height:34px!important;min-width:34px!important;min-height:34px!important;line-height:34px!important}i.s36,md-icon[md-font-icon].s36{font-size:36px!important;width:36px!important;height:36px!important;min-width:36px!important;min-height:36px!important;line-height:36px!important}i.s38,md-icon[md-font-icon].s38{font-size:38px!important;width:38px!important;height:38px!important;min-width:38px!important;min-height:38px!important;line-height:38px!important}i.s40,md-icon[md-font-icon].s40{font-size:40px!important;width:40px!important;height:40px!important;min-width:40px!important;min-height:40px!important;line-height:40px!important}i.s42,md-icon[md-font-icon].s42{font-size:42px!important;width:42px!important;height:42px!important;min-width:42px!important;min-height:42px!important;line-height:42px!important}i.s44,md-icon[md-font-icon].s44{font-size:44px!important;width:44px!important;height:44px!important;min-width:44px!important;min-height:44px!important;line-height:44px!important}i.s46,md-icon[md-font-icon].s46{font-size:46px!important;width:46px!important;height:46px!important;min-width:46px!important;min-height:46px!important;line-height:46px!important}i.s48,md-icon[md-font-icon].s48{font-size:48px!important;width:48px!important;height:48px!important;min-width:48px!important;min-height:48px!important;line-height:48px!important}i.s50,md-icon[md-font-icon].s50{font-size:50px!important;width:50px!important;height:50px!important;min-width:50px!important;min-height:50px!important;line-height:50px!important}i.s52,md-icon[md-font-icon].s52{font-size:52px!important;width:52px!important;height:52px!important;min-width:52px!important;min-height:52px!important;line-height:52px!important}i.s54,md-icon[md-font-icon].s54{font-size:54px!important;width:54px!important;height:54px!important;min-width:54px!important;min-height:54px!important;line-height:54px!important}i.s56,md-icon[md-font-icon].s56{font-size:56px!important;width:56px!important;height:56px!important;min-width:56px!important;min-height:56px!important;line-height:56px!important}i.s58,md-icon[md-font-icon].s58{font-size:58px!important;width:58px!important;height:58px!important;min-width:58px!important;min-height:58px!important;line-height:58px!important}i.s60,md-icon[md-font-icon].s60{font-size:60px!important;width:60px!important;height:60px!important;min-width:60px!important;min-height:60px!important;line-height:60px!important}i.s62,md-icon[md-font-icon].s62{font-size:62px!important;width:62px!important;height:62px!important;min-width:62px!important;min-height:62px!important;line-height:62px!important}i.s64,md-icon[md-font-icon].s64{font-size:64px!important;width:64px!important;height:64px!important;min-width:64px!important;min-height:64px!important;line-height:64px!important}i.s66,md-icon[md-font-icon].s66{font-size:66px!important;width:66px!important;height:66px!important;min-width:66px!important;min-height:66px!important;line-height:66px!important}i.s68,md-icon[md-font-icon].s68{font-size:68px!important;width:68px!important;height:68px!important;min-width:68px!important;min-height:68px!important;line-height:68px!important}i.s70,md-icon[md-font-icon].s70{font-size:70px!important;width:70px!important;height:70px!important;min-width:70px!important;min-height:70px!important;line-height:70px!important}i.s72,md-icon[md-font-icon].s72{font-size:72px!important;width:72px!important;height:72px!important;min-width:72px!important;min-height:72px!important;line-height:72px!important}i.s74,md-icon[md-font-icon].s74{font-size:74px!important;width:74px!important;height:74px!important;min-width:74px!important;min-height:74px!important;line-height:74px!important}i.s76,md-icon[md-font-icon].s76{font-size:76px!important;width:76px!important;height:76px!important;min-width:76px!important;min-height:76px!important;line-height:76px!important}i.s78,md-icon[md-font-icon].s78{font-size:78px!important;width:78px!important;height:78px!important;min-width:78px!important;min-height:78px!important;line-height:78px!important}i.s80,md-icon[md-font-icon].s80{font-size:80px!important;width:80px!important;height:80px!important;min-width:80px!important;min-height:80px!important;line-height:80px!important}i.s82,md-icon[md-font-icon].s82{font-size:82px!important;width:82px!important;height:82px!important;min-width:82px!important;min-height:82px!important;line-height:82px!important}i.s84,md-icon[md-font-icon].s84{font-size:84px!important;width:84px!important;height:84px!important;min-width:84px!important;min-height:84px!important;line-height:84px!important}i.s86,md-icon[md-font-icon].s86{font-size:86px!important;width:86px!important;height:86px!important;min-width:86px!important;min-height:86px!important;line-height:86px!important}i.s88,md-icon[md-font-icon].s88{font-size:88px!important;width:88px!important;height:88px!important;min-width:88px!important;min-height:88px!important;line-height:88px!important}i.s90,md-icon[md-font-icon].s90{font-size:90px!important;width:90px!important;height:90px!important;min-width:90px!important;min-height:90px!important;line-height:90px!important}i.s92,md-icon[md-font-icon].s92{font-size:92px!important;width:92px!important;height:92px!important;min-width:92px!important;min-height:92px!important;line-height:92px!important}i.s94,md-icon[md-font-icon].s94{font-size:94px!important;width:94px!important;height:94px!important;min-width:94px!important;min-height:94px!important;line-height:94px!important}i.s96,md-icon[md-font-icon].s96{font-size:96px!important;width:96px!important;height:96px!important;min-width:96px!important;min-height:96px!important;line-height:96px!important}i.s98,md-icon[md-font-icon].s98{font-size:98px!important;width:98px!important;height:98px!important;min-width:98px!important;min-height:98px!important;line-height:98px!important}i.s100,md-icon[md-font-icon].s100{font-size:100px!important;width:100px!important;height:100px!important;min-width:100px!important;min-height:100px!important;line-height:100px!important}i.s102,md-icon[md-font-icon].s102{font-size:102px!important;width:102px!important;height:102px!important;min-width:102px!important;min-height:102px!important;line-height:102px!important}i.s104,md-icon[md-font-icon].s104{font-size:104px!important;width:104px!important;height:104px!important;min-width:104px!important;min-height:104px!important;line-height:104px!important}i.s106,md-icon[md-font-icon].s106{font-size:106px!important;width:106px!important;height:106px!important;min-width:106px!important;min-height:106px!important;line-height:106px!important}i.s108,md-icon[md-font-icon].s108{font-size:108px!important;width:108px!important;height:108px!important;min-width:108px!important;min-height:108px!important;line-height:108px!important}i.s110,md-icon[md-font-icon].s110{font-size:110px!important;width:110px!important;height:110px!important;min-width:110px!important;min-height:110px!important;line-height:110px!important}i.s112,md-icon[md-font-icon].s112{font-size:112px!important;width:112px!important;height:112px!important;min-width:112px!important;min-height:112px!important;line-height:112px!important}i.s114,md-icon[md-font-icon].s114{font-size:114px!important;width:114px!important;height:114px!important;min-width:114px!important;min-height:114px!important;line-height:114px!important}i.s116,md-icon[md-font-icon].s116{font-size:116px!important;width:116px!important;height:116px!important;min-width:116px!important;min-height:116px!important;line-height:116px!important}i.s118,md-icon[md-font-icon].s118{font-size:118px!important;width:118px!important;height:118px!important;min-width:118px!important;min-height:118px!important;line-height:118px!important}i.s120,md-icon[md-font-icon].s120{font-size:120px!important;width:120px!important;height:120px!important;min-width:120px!important;min-height:120px!important;line-height:120px!important}i.s122,md-icon[md-font-icon].s122{font-size:122px!important;width:122px!important;height:122px!important;min-width:122px!important;min-height:122px!important;line-height:122px!important}i.s124,md-icon[md-font-icon].s124{font-size:124px!important;width:124px!important;height:124px!important;min-width:124px!important;min-height:124px!important;line-height:124px!important}i.s126,md-icon[md-font-icon].s126{font-size:126px!important;width:126px!important;height:126px!important;min-width:126px!important;min-height:126px!important;line-height:126px!important}i.s128,md-icon[md-font-icon].s128{font-size:128px!important;width:128px!important;height:128px!important;min-width:128px!important;min-height:128px!important;line-height:128px!important}i.s130,md-icon[md-font-icon].s130{font-size:130px!important;width:130px!important;height:130px!important;min-width:130px!important;min-height:130px!important;line-height:130px!important}i.s132,md-icon[md-font-icon].s132{font-size:132px!important;width:132px!important;height:132px!important;min-width:132px!important;min-height:132px!important;line-height:132px!important}i.s134,md-icon[md-font-icon].s134{font-size:134px!important;width:134px!important;height:134px!important;min-width:134px!important;min-height:134px!important;line-height:134px!important}i.s136,md-icon[md-font-icon].s136{font-size:136px!important;width:136px!important;height:136px!important;min-width:136px!important;min-height:136px!important;line-height:136px!important}i.s138,md-icon[md-font-icon].s138{font-size:138px!important;width:138px!important;height:138px!important;min-width:138px!important;min-height:138px!important;line-height:138px!important}i.s140,md-icon[md-font-icon].s140{font-size:140px!important;width:140px!important;height:140px!important;min-width:140px!important;min-height:140px!important;line-height:140px!important}i.s142,md-icon[md-font-icon].s142{font-size:142px!important;width:142px!important;height:142px!important;min-width:142px!important;min-height:142px!important;line-height:142px!important}i.s144,md-icon[md-font-icon].s144{font-size:144px!important;width:144px!important;height:144px!important;min-width:144px!important;min-height:144px!important;line-height:144px!important}i.s146,md-icon[md-font-icon].s146{font-size:146px!important;width:146px!important;height:146px!important;min-width:146px!important;min-height:146px!important;line-height:146px!important}i.s148,md-icon[md-font-icon].s148{font-size:148px!important;width:148px!important;height:148px!important;min-width:148px!important;min-height:148px!important;line-height:148px!important}i.s150,md-icon[md-font-icon].s150{font-size:150px!important;width:150px!important;height:150px!important;min-width:150px!important;min-height:150px!important;line-height:150px!important}i.s152,md-icon[md-font-icon].s152{font-size:152px!important;width:152px!important;height:152px!important;min-width:152px!important;min-height:152px!important;line-height:152px!important}i.s154,md-icon[md-font-icon].s154{font-size:154px!important;width:154px!important;height:154px!important;min-width:154px!important;min-height:154px!important;line-height:154px!important}i.s156,md-icon[md-font-icon].s156{font-size:156px!important;width:156px!important;height:156px!important;min-width:156px!important;min-height:156px!important;line-height:156px!important}i.s158,md-icon[md-font-icon].s158{font-size:158px!important;width:158px!important;height:158px!important;min-width:158px!important;min-height:158px!important;line-height:158px!important}i.s160,md-icon[md-font-icon].s160{font-size:160px!important;width:160px!important;height:160px!important;min-width:160px!important;min-height:160px!important;line-height:160px!important}i.s162,md-icon[md-font-icon].s162{font-size:162px!important;width:162px!important;height:162px!important;min-width:162px!important;min-height:162px!important;line-height:162px!important}i.s164,md-icon[md-font-icon].s164{font-size:164px!important;width:164px!important;height:164px!important;min-width:164px!important;min-height:164px!important;line-height:164px!important}i.s166,md-icon[md-font-icon].s166{font-size:166px!important;width:166px!important;height:166px!important;min-width:166px!important;min-height:166px!important;line-height:166px!important}i.s168,md-icon[md-font-icon].s168{font-size:168px!important;width:168px!important;height:168px!important;min-width:168px!important;min-height:168px!important;line-height:168px!important}i.s170,md-icon[md-font-icon].s170{font-size:170px!important;width:170px!important;height:170px!important;min-width:170px!important;min-height:170px!important;line-height:170px!important}i.s172,md-icon[md-font-icon].s172{font-size:172px!important;width:172px!important;height:172px!important;min-width:172px!important;min-height:172px!important;line-height:172px!important}i.s174,md-icon[md-font-icon].s174{font-size:174px!important;width:174px!important;height:174px!important;min-width:174px!important;min-height:174px!important;line-height:174px!important}i.s176,md-icon[md-font-icon].s176{font-size:176px!important;width:176px!important;height:176px!important;min-width:176px!important;min-height:176px!important;line-height:176px!important}i.s178,md-icon[md-font-icon].s178{font-size:178px!important;width:178px!important;height:178px!important;min-width:178px!important;min-height:178px!important;line-height:178px!important}i.s180,md-icon[md-font-icon].s180{font-size:180px!important;width:180px!important;height:180px!important;min-width:180px!important;min-height:180px!important;line-height:180px!important}i.s182,md-icon[md-font-icon].s182{font-size:182px!important;width:182px!important;height:182px!important;min-width:182px!important;min-height:182px!important;line-height:182px!important}i.s184,md-icon[md-font-icon].s184{font-size:184px!important;width:184px!important;height:184px!important;min-width:184px!important;min-height:184px!important;line-height:184px!important}i.s186,md-icon[md-font-icon].s186{font-size:186px!important;width:186px!important;height:186px!important;min-width:186px!important;min-height:186px!important;line-height:186px!important}i.s188,md-icon[md-font-icon].s188{font-size:188px!important;width:188px!important;height:188px!important;min-width:188px!important;min-height:188px!important;line-height:188px!important}i.s190,md-icon[md-font-icon].s190{font-size:190px!important;width:190px!important;height:190px!important;min-width:190px!important;min-height:190px!important;line-height:190px!important}i.s192,md-icon[md-font-icon].s192{font-size:192px!important;width:192px!important;height:192px!important;min-width:192px!important;min-height:192px!important;line-height:192px!important}i.s194,md-icon[md-font-icon].s194{font-size:194px!important;width:194px!important;height:194px!important;min-width:194px!important;min-height:194px!important;line-height:194px!important}i.s196,md-icon[md-font-icon].s196{font-size:196px!important;width:196px!important;height:196px!important;min-width:196px!important;min-height:196px!important;line-height:196px!important}i.s198,md-icon[md-font-icon].s198{font-size:198px!important;width:198px!important;height:198px!important;min-width:198px!important;min-height:198px!important;line-height:198px!important}i.s200,md-icon[md-font-icon].s200{font-size:200px!important;width:200px!important;height:200px!important;min-width:200px!important;min-height:200px!important;line-height:200px!important}i.s202,md-icon[md-font-icon].s202{font-size:202px!important;width:202px!important;height:202px!important;min-width:202px!important;min-height:202px!important;line-height:202px!important}i.s204,md-icon[md-font-icon].s204{font-size:204px!important;width:204px!important;height:204px!important;min-width:204px!important;min-height:204px!important;line-height:204px!important}i.s206,md-icon[md-font-icon].s206{font-size:206px!important;width:206px!important;height:206px!important;min-width:206px!important;min-height:206px!important;line-height:206px!important}i.s208,md-icon[md-font-icon].s208{font-size:208px!important;width:208px!important;height:208px!important;min-width:208px!important;min-height:208px!important;line-height:208px!important}i.s210,md-icon[md-font-icon].s210{font-size:210px!important;width:210px!important;height:210px!important;min-width:210px!important;min-height:210px!important;line-height:210px!important}i.s212,md-icon[md-font-icon].s212{font-size:212px!important;width:212px!important;height:212px!important;min-width:212px!important;min-height:212px!important;line-height:212px!important}i.s214,md-icon[md-font-icon].s214{font-size:214px!important;width:214px!important;height:214px!important;min-width:214px!important;min-height:214px!important;line-height:214px!important}i.s216,md-icon[md-font-icon].s216{font-size:216px!important;width:216px!important;height:216px!important;min-width:216px!important;min-height:216px!important;line-height:216px!important}i.s218,md-icon[md-font-icon].s218{font-size:218px!important;width:218px!important;height:218px!important;min-width:218px!important;min-height:218px!important;line-height:218px!important}i.s220,md-icon[md-font-icon].s220{font-size:220px!important;width:220px!important;height:220px!important;min-width:220px!important;min-height:220px!important;line-height:220px!important}i.s222,md-icon[md-font-icon].s222{font-size:222px!important;width:222px!important;height:222px!important;min-width:222px!important;min-height:222px!important;line-height:222px!important}i.s224,md-icon[md-font-icon].s224{font-size:224px!important;width:224px!important;height:224px!important;min-width:224px!important;min-height:224px!important;line-height:224px!important}i.s226,md-icon[md-font-icon].s226{font-size:226px!important;width:226px!important;height:226px!important;min-width:226px!important;min-height:226px!important;line-height:226px!important}i.s228,md-icon[md-font-icon].s228{font-size:228px!important;width:228px!important;height:228px!important;min-width:228px!important;min-height:228px!important;line-height:228px!important}i.s230,md-icon[md-font-icon].s230{font-size:230px!important;width:230px!important;height:230px!important;min-width:230px!important;min-height:230px!important;line-height:230px!important}i.s232,md-icon[md-font-icon].s232{font-size:232px!important;width:232px!important;height:232px!important;min-width:232px!important;min-height:232px!important;line-height:232px!important}i.s234,md-icon[md-font-icon].s234{font-size:234px!important;width:234px!important;height:234px!important;min-width:234px!important;min-height:234px!important;line-height:234px!important}i.s236,md-icon[md-font-icon].s236{font-size:236px!important;width:236px!important;height:236px!important;min-width:236px!important;min-height:236px!important;line-height:236px!important}i.s238,md-icon[md-font-icon].s238{font-size:238px!important;width:238px!important;height:238px!important;min-width:238px!important;min-height:238px!important;line-height:238px!important}i.s240,md-icon[md-font-icon].s240{font-size:240px!important;width:240px!important;height:240px!important;min-width:240px!important;min-height:240px!important;line-height:240px!important}i.s242,md-icon[md-font-icon].s242{font-size:242px!important;width:242px!important;height:242px!important;min-width:242px!important;min-height:242px!important;line-height:242px!important}i.s244,md-icon[md-font-icon].s244{font-size:244px!important;width:244px!important;height:244px!important;min-width:244px!important;min-height:244px!important;line-height:244px!important}i.s246,md-icon[md-font-icon].s246{font-size:246px!important;width:246px!important;height:246px!important;min-width:246px!important;min-height:246px!important;line-height:246px!important}i.s248,md-icon[md-font-icon].s248{font-size:248px!important;width:248px!important;height:248px!important;min-width:248px!important;min-height:248px!important;line-height:248px!important}i.s250,md-icon[md-font-icon].s250{font-size:250px!important;width:250px!important;height:250px!important;min-width:250px!important;min-height:250px!important;line-height:250px!important}i.s252,md-icon[md-font-icon].s252{font-size:252px!important;width:252px!important;height:252px!important;min-width:252px!important;min-height:252px!important;line-height:252px!important}i.s254,md-icon[md-font-icon].s254{font-size:254px!important;width:254px!important;height:254px!important;min-width:254px!important;min-height:254px!important;line-height:254px!important}i.s256,md-icon[md-font-icon].s256{font-size:256px!important;width:256px!important;height:256px!important;min-width:256px!important;min-height:256px!important;line-height:256px!important}@font-face{font-family:icomoon;src:url(../assets/icons/fonts/icomoon.eot?5km1tg);src:url(../assets/icons/fonts/icomoon.eot?#iefix5km1tg) format("embedded-opentype"),url(../assets/icons/fonts/icomoon.ttf?5km1tg) format("truetype"),url(../assets/icons/fonts/icomoon.woff?5km1tg) format("woff"),url(../assets/icons/fonts/icomoon.svg?5km1tg#icomoon) format("svg");font-weight:400;font-style:normal}[class*=' icon-'],[class^=icon-]{font-family:icomoon;speak:none;font-style:normal;font-weight:400;font-variant:normal;text-transform:none;line-height:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.icon-account-alert:before{content:'\e600'}.icon-account-box-outline:before{content:'\e601'}.icon-account-box:before{content:'\e602'}.icon-account-check:before{content:'\e603'}.icon-account-circle:before{content:'\e604'}.icon-account-key:before{content:'\e605'}.icon-account-location:before{content:'\e606'}.icon-account-minus:before{content:'\e607'}.icon-account-multiple-outline:before{content:'\e608'}.icon-account-multiple-plus:before{content:'\e609'}.icon-account-multiple:before{content:'\e60a'}.icon-account-network:before{content:'\e60b'}.icon-account-outline:before{content:'\e60c'}.icon-account-plus:before{content:'\e60d'}.icon-account-remove:before{content:'\e60e'}.icon-account-search:before{content:'\e60f'}.icon-account-switch:before{content:'\e610'}.icon-account:before{content:'\e611'}.icon-airballoon:before{content:'\e612'}.icon-airplane-off:before{content:'\e613'}.icon-airplane:before{content:'\e614'}.icon-alarm-check:before{content:'\e615'}.icon-alarm-multiple:before{content:'\e616'}.icon-alarm-off:before{content:'\e617'}.icon-alarm-plus:before{content:'\e618'}.icon-alarm:before{content:'\e619'}.icon-album:before{content:'\e61a'}.icon-alert-box:before{content:'\e61b'}.icon-alert-circle:before{content:'\e61c'}.icon-alert-octagon:before{content:'\e61d'}.icon-alert:before{content:'\e61e'}.icon-alpha:before{content:'\e61f'}.icon-alphabetical:before{content:'\e620'}.icon-amazon-clouddrive:before{content:'\e621'}.icon-amazon:before{content:'\e622'}.icon-ambulance:before{content:'\e623'}.icon-android-debug-bridge:before{content:'\e624'}.icon-android-studio:before{content:'\e625'}.icon-android:before{content:'\e626'}.icon-apple-finder:before{content:'\e627'}.icon-apple-ios:before{content:'\e628'}.icon-apple-mobileme:before{content:'\e629'}.icon-apple-safari:before{content:'\e62a'}.icon-apple:before{content:'\e62b'}.icon-appnet:before{content:'\e62c'}.icon-apps:before{content:'\e62d'}.icon-archive:before{content:'\e62e'}.icon-arrange-bring-forward:before{content:'\e62f'}.icon-arrange-bring-to-front:before{content:'\e630'}.icon-arrange-send-backward:before{content:'\e631'}.icon-arrange-send-to-back:before{content:'\e632'}.icon-arrow-all:before{content:'\e633'}.icon-arrow-bottom-left:before{content:'\e634'}.icon-arrow-bottom-right:before{content:'\e635'}.icon-arrow-collapse:before{content:'\e636'}.icon-arrow-down-bold-circle-outline:before{content:'\e637'}.icon-arrow-down-bold-circle:before{content:'\e638'}.icon-arrow-down-bold-hexagon-outline:before{content:'\e639'}.icon-arrow-down-bold:before{content:'\e63a'}.icon-arrow-down:before{content:'\e63b'}.icon-arrow-expand:before{content:'\e63c'}.icon-arrow-left-bold-circle-outline:before{content:'\e63d'}.icon-arrow-left-bold-circle:before{content:'\e63e'}.icon-arrow-left-bold-hexagon-outline:before{content:'\e63f'}.icon-arrow-left-bold:before{content:'\e640'}.icon-arrow-left:before{content:'\e641'}.icon-arrow-right-bold-circle-outline:before{content:'\e642'}.icon-arrow-right-bold-circle:before{content:'\e643'}.icon-arrow-right-bold-hexagon-outline:before{content:'\e644'}.icon-arrow-right-bold:before{content:'\e645'}.icon-arrow-right:before{content:'\e646'}.icon-arrow-top-left:before{content:'\e647'}.icon-arrow-top-right:before{content:'\e648'}.icon-arrow-up-bold-circle-outline:before{content:'\e649'}.icon-arrow-up-bold-circle:before{content:'\e64a'}.icon-arrow-up-bold-hexagon-outline:before{content:'\e64b'}.icon-arrow-up-bold:before{content:'\e64c'}.icon-arrow-up:before{content:'\e64d'}.icon-at:before{content:'\e64e'}.icon-attachment:before{content:'\e64f'}.icon-audiobook:before{content:'\e650'}.icon-auto-fix:before{content:'\e651'}.icon-auto-upload:before{content:'\e652'}.icon-baby:before{content:'\e653'}.icon-backburger:before{content:'\e654'}.icon-backup-restore:before{content:'\e655'}.icon-bank:before{content:'\e656'}.icon-barcode:before{content:'\e657'}.icon-barley:before{content:'\e658'}.icon-barrel:before{content:'\e659'}.icon-basecamp:before{content:'\e65a'}.icon-basket-fill:before{content:'\e65b'}.icon-basket-unfill:before{content:'\e65c'}.icon-basket:before{content:'\e65d'}.icon-battery-10:before{content:'\e65e'}.icon-battery-20:before{content:'\e65f'}.icon-battery-30:before{content:'\e660'}.icon-battery-40:before{content:'\e661'}.icon-battery-50:before{content:'\e662'}.icon-battery-60:before{content:'\e663'}.icon-battery-70:before{content:'\e664'}.icon-battery-80:before{content:'\e665'}.icon-battery-90:before{content:'\e666'}.icon-battery-alert:before{content:'\e667'}.icon-battery-charging-20:before{content:'\e668'}.icon-battery-charging-30:before{content:'\e669'}.icon-battery-charging-40:before{content:'\e66a'}.icon-battery-charging-60:before{content:'\e66b'}.icon-battery-charging-80:before{content:'\e66c'}.icon-battery-charging-90:before{content:'\e66d'}.icon-battery-charging-100:before{content:'\e66e'}.icon-battery-minus:before{content:'\e66f'}.icon-battery-negative:before{content:'\e670'}.icon-battery-outline:before{content:'\e671'}.icon-battery-plus:before{content:'\e672'}.icon-battery-positive:before{content:'\e673'}.icon-battery-standard:before{content:'\e674'}.icon-battery-unknown:before{content:'\e675'}.icon-battery:before{content:'\e676'}.icon-beach:before{content:'\e677'}.icon-beaker-empty-outline:before{content:'\e678'}.icon-beaker-empty:before{content:'\e679'}.icon-beaker-outline:before{content:'\e67a'}.icon-beaker:before{content:'\e67b'}.icon-beats:before{content:'\e67c'}.icon-beer:before{content:'\e67d'}.icon-behance:before{content:'\e67e'}.icon-bell-off:before{content:'\e67f'}.icon-bell-outline:before{content:'\e680'}.icon-bell-ring-outline:before{content:'\e681'}.icon-bell-ring:before{content:'\e682'}.icon-bell-sleep:before{content:'\e683'}.icon-bell:before{content:'\e684'}.icon-beta:before{content:'\e685'}.icon-bike:before{content:'\e686'}.icon-bing:before{content:'\e687'}.icon-binoculars:before{content:'\e688'}.icon-bio:before{content:'\e689'}.icon-bitbucket:before{content:'\e68a'}.icon-black-mesa:before{content:'\e68b'}.icon-blackberry:before{content:'\e68c'}.icon-blinds:before{content:'\e68d'}.icon-block-helper:before{content:'\e68e'}.icon-blogger:before{content:'\e68f'}.icon-bluetooth-audio:before{content:'\e690'}.icon-bluetooth-connect:before{content:'\e691'}.icon-bluetooth-settings:before{content:'\e692'}.icon-bluetooth-transfer:before{content:'\e693'}.icon-bluetooth:before{content:'\e694'}.icon-blur-linear:before{content:'\e695'}.icon-blur-off:before{content:'\e696'}.icon-blur-radial:before{content:'\e697'}.icon-blur:before{content:'\e698'}.icon-bone:before{content:'\e699'}.icon-book-multiple-variant:before{content:'\e69a'}.icon-book-multiple:before{content:'\e69b'}.icon-book-open:before{content:'\e69c'}.icon-book-variant:before{content:'\e69d'}.icon-book:before{content:'\e69e'}.icon-bookmark-check:before{content:'\e69f'}.icon-bookmark-music:before{content:'\e6a0'}.icon-bookmark-outline-plus:before{content:'\e6a1'}.icon-bookmark-outline:before{content:'\e6a2'}.icon-bookmark-plus:before{content:'\e6a3'}.icon-bookmark-remove:before{content:'\e6a4'}.icon-bookmark:before{content:'\e6a5'}.icon-border-all:before{content:'\e6a6'}.icon-border-bottom:before{content:'\e6a7'}.icon-border-color:before{content:'\e6a8'}.icon-border-horizontal:before{content:'\e6a9'}.icon-border-inside:before{content:'\e6aa'}.icon-border-left:before{content:'\e6ab'}.icon-border-none:before{content:'\e6ac'}.icon-border-outside:before{content:'\e6ad'}.icon-border-right:before{content:'\e6ae'}.icon-border-top:before{content:'\e6af'}.icon-border-vertical:before{content:'\e6b0'}.icon-bowling:before{content:'\e6b1'}.icon-box-download:before{content:'\e6b2'}.icon-box-upload:before{content:'\e6b3'}.icon-box:before{content:'\e6b4'}.icon-briefcase-checked:before{content:'\e6b5'}.icon-briefcase-download:before{content:'\e6b6'}.icon-briefcase-upload:before{content:'\e6b7'}.icon-briefcase:before{content:'\e6b8'}.icon-brightness-1:before{content:'\e6b9'}.icon-brightness-2:before{content:'\e6ba'}.icon-brightness-3:before{content:'\e6bb'}.icon-brightness-4:before{content:'\e6bc'}.icon-brightness-5:before{content:'\e6bd'}.icon-brightness-6:before{content:'\e6be'}.icon-brightness-7:before{content:'\e6bf'}.icon-brightness-auto:before{content:'\e6c0'}.icon-brightness:before{content:'\e6c1'}.icon-broom:before{content:'\e6c2'}.icon-brush:before{content:'\e6c3'}.icon-bug:before{content:'\e6c4'}.icon-bulletin-board:before{content:'\e6c5'}.icon-bullhorn:before{content:'\e6c6'}.icon-bus:before{content:'\e6c7'}.icon-cake-variant:before{content:'\e6c8'}.icon-cake:before{content:'\e6c9'}.icon-calculator:before{content:'\e6ca'}.icon-calendar-blank:before{content:'\e6cb'}.icon-calendar-check-multiple:before{content:'\e6cc'}.icon-calendar-check:before{content:'\e6cd'}.icon-calendar-clock:before{content:'\e6ce'}.icon-calendar-multiple:before{content:'\e6cf'}.icon-calendar-plus:before{content:'\e6d0'}.icon-calendar-remove:before{content:'\e6d1'}.icon-calendar-select:before{content:'\e6d2'}.icon-calendar-text:before{content:'\e6d3'}.icon-calendar-today:before{content:'\e6d4'}.icon-calendar:before{content:'\e6d5'}.icon-camcorder-box-off:before{content:'\e6d6'}.icon-camcorder-box:before{content:'\e6d7'}.icon-camcorder-off:before{content:'\e6d8'}.icon-camcorder:before{content:'\e6d9'}.icon-camera-front-variant:before{content:'\e6da'}.icon-camera-front:before{content:'\e6db'}.icon-camera-iris:before{content:'\e6dc'}.icon-camera-party-mode:before{content:'\e6dd'}.icon-camera-rear-variant:before{content:'\e6de'}.icon-camera-rear:before{content:'\e6df'}.icon-camera-switch:before{content:'\e6e0'}.icon-camera-timer:before{content:'\e6e1'}.icon-camera:before{content:'\e6e2'}.icon-cancel:before{content:'\e6e3'}.icon-candycane:before{content:'\e6e4'}.icon-car-wash:before{content:'\e6e5'}.icon-car:before{content:'\e6e6'}.icon-carrot:before{content:'\e6e7'}.icon-cart-outline:before{content:'\e6e8'}.icon-cart:before{content:'\e6e9'}.icon-cash-100:before{content:'\e6ea'}.icon-cash-multiple:before{content:'\e6eb'}.icon-cash-usd:before{content:'\e6ec'}.icon-cash:before{content:'\e6ed'}.icon-cast-connected:before{content:'\e6ee'}.icon-cast:before{content:'\e6ef'}.icon-castle:before{content:'\e6f0'}.icon-cat:before{content:'\e6f1'}.icon-cellphone-android:before{content:'\e6f2'}.icon-cellphone-dock:before{content:'\e6f3'}.icon-cellphone-iphone:before{content:'\e6f4'}.icon-cellphone-link-off:before{content:'\e6f5'}.icon-cellphone-link:before{content:'\e6f6'}.icon-cellphone-settings:before{content:'\e6f7'}.icon-cellphone:before{content:'\e6f8'}.icon-chair-school:before{content:'\e6f9'}.icon-chart-arc:before{content:'\e6fa'}.icon-chart-areaspline:before{content:'\e6fb'}.icon-chart-bar:before{content:'\e6fc'}.icon-chart-histogram:before{content:'\e6fd'}.icon-chart-line:before{content:'\e6fe'}.icon-chart-pie:before{content:'\e6ff'}.icon-check-all:before{content:'\e700'}.icon-check-bookmark:before{content:'\e701'}.icon-check-circle:before{content:'\e702'}.icon-check:before{content:'\e703'}.icon-checkbox-blank-circle-outline:before{content:'\e704'}.icon-checkbox-blank-circle:before{content:'\e705'}.icon-checkbox-blank-outline:before{content:'\e706'}.icon-checkbox-blank:before{content:'\e707'}.icon-checkbox-marked-circle-outline:before{content:'\e708'}.icon-checkbox-marked-circle:before{content:'\e709'}.icon-checkbox-marked-outline:before{content:'\e70a'}.icon-checkbox-marked:before{content:'\e70b'}.icon-checkbox-multiple-blank-outline:before{content:'\e70c'}.icon-checkbox-multiple-blank:before{content:'\e70d'}.icon-checkbox-multiple-marked-outline:before{content:'\e70e'}.icon-checkbox-multiple-marked:before{content:'\e70f'}.icon-checkerboard:before{content:'\e710'}.icon-chevron-double-down:before{content:'\e711'}.icon-chevron-double-left:before{content:'\e712'}.icon-chevron-double-right:before{content:'\e713'}.icon-chevron-double-up:before{content:'\e714'}.icon-chevron-down:before{content:'\e715'}.icon-chevron-left:before{content:'\e716'}.icon-chevron-right:before{content:'\e717'}.icon-chevron-up:before{content:'\e718'}.icon-church:before{content:'\e719'}.icon-cisco-webex:before{content:'\e71a'}.icon-city:before{content:'\e71b'}.icon-clapperboard:before{content:'\e71c'}.icon-clipboard-account:before{content:'\e71d'}.icon-clipboard-alert:before{content:'\e71e'}.icon-clipboard-arrow-down:before{content:'\e71f'}.icon-clipboard-arrow-left:before{content:'\e720'}.icon-clipboard-check:before{content:'\e721'}.icon-clipboard-outline:before{content:'\e722'}.icon-clipboard-text:before{content:'\e723'}.icon-clipboard:before{content:'\e724'}.icon-clippy:before{content:'\e725'}.icon-clock-fast:before{content:'\e726'}.icon-clock:before{content:'\e727'}.icon-close-circle-outline:before{content:'\e728'}.icon-close-circle:before{content:'\e729'}.icon-close-network:before{content:'\e72a'}.icon-close:before{content:'\e72b'}.icon-closed-caption:before{content:'\e72c'}.icon-cloud-check:before{content:'\e72d'}.icon-cloud-circle:before{content:'\e72e'}.icon-cloud-download:before{content:'\e72f'}.icon-cloud-outline-off:before{content:'\e730'}.icon-cloud-outline:before{content:'\e731'}.icon-cloud-upload:before{content:'\e732'}.icon-cloud:before{content:'\e733'}.icon-code-array:before{content:'\e734'}.icon-code-braces:before{content:'\e735'}.icon-code-equal:before{content:'\e736'}.icon-code-greater-than-or-equal:before{content:'\e737'}.icon-code-greater-than:before{content:'\e738'}.icon-code-less-than-or-equal:before{content:'\e739'}.icon-code-less-than:before{content:'\e73a'}.icon-code-not-equal-variant:before{content:'\e73b'}.icon-code-not-equal:before{content:'\e73c'}.icon-code-string:before{content:'\e73d'}.icon-code-tags:before{content:'\e73e'}.icon-codepen:before{content:'\e73f'}.icon-coffee-to-go:before{content:'\e740'}.icon-coffee:before{content:'\e741'}.icon-cog-box:before{content:'\e742'}.icon-cog:before{content:'\e743'}.icon-coin:before{content:'\e744'}.icon-color-helper:before{content:'\e745'}.icon-comment-account-outline:before{content:'\e746'}.icon-comment-account:before{content:'\e747'}.icon-comment-alert-outline:before{content:'\e748'}.icon-comment-alert:before{content:'\e749'}.icon-comment-check-outline:before{content:'\e74a'}.icon-comment-check:before{content:'\e74b'}.icon-comment-multipe-outline:before{content:'\e74c'}.icon-comment-outline:before{content:'\e74d'}.icon-comment-plus-outline:before{content:'\e74e'}.icon-comment-processing-outline:before{content:'\e74f'}.icon-comment-processing:before{content:'\e750'}.icon-comment-remove-outline:before{content:'\e751'}.icon-comment-text-outline:before{content:'\e752'}.icon-comment-text:before{content:'\e753'}.icon-comment:before{content:'\e754'}.icon-compare:before{content:'\e755'}.icon-compass-outline:before{content:'\e756'}.icon-compass:before{content:'\e757'}.icon-console:before{content:'\e758'}.icon-content-copy:before{content:'\e759'}.icon-content-cut:before{content:'\e75a'}.icon-content-duplicate:before{content:'\e75b'}.icon-content-paste:before{content:'\e75c'}.icon-content-save-all:before{content:'\e75d'}.icon-content-save:before{content:'\e75e'}.icon-contrast-box:before{content:'\e75f'}.icon-contrast-circle:before{content:'\e760'}.icon-contrast:before{content:'\e761'}.icon-controller-xbox:before{content:'\e762'}.icon-cow:before{content:'\e763'}.icon-credit-card-multiple:before{content:'\e764'}.icon-credit-card:before{content:'\e765'}.icon-crop-free:before{content:'\e766'}.icon-crop-landscape:before{content:'\e767'}.icon-crop-portrait:before{content:'\e768'}.icon-crop-square:before{content:'\e769'}.icon-crop:before{content:'\e76a'}.icon-crosshairs-gps:before{content:'\e76b'}.icon-crosshairs:before{content:'\e76c'}.icon-crown:before{content:'\e76d'}.icon-cube-outline:before{content:'\e76e'}.icon-cube-unfolded:before{content:'\e76f'}.icon-cube:before{content:'\e770'}.icon-cup-water:before{content:'\e771'}.icon-cup:before{content:'\e772'}.icon-currency-btc:before{content:'\e773'}.icon-currency-eur:before{content:'\e774'}.icon-currency-gbp:before{content:'\e775'}.icon-currency-inr:before{content:'\e776'}.icon-currency-rub:before{content:'\e777'}.icon-currency-try:before{content:'\e778'}.icon-currency-usd:before{content:'\e779'}.icon-cursor-default-outline:before{content:'\e77a'}.icon-cursor-default:before{content:'\e77b'}.icon-cursor-move:before{content:'\e77c'}.icon-cursor-pointer:before{content:'\e77d'}.icon-data:before{content:'\e77e'}.icon-debug-step-into:before{content:'\e77f'}.icon-debug-step-out:before{content:'\e780'}.icon-debug-step-over:before{content:'\e781'}.icon-decimal-decrease:before{content:'\e782'}.icon-decimal-increase:before{content:'\e783'}.icon-delete-variant:before{content:'\e784'}.icon-delete:before{content:'\e785'}.icon-deskphone:before{content:'\e786'}.icon-desktop-mac:before{content:'\e787'}.icon-desktop-tower:before{content:'\e788'}.icon-details:before{content:'\e789'}.icon-deviantart:before{content:'\e78a'}.icon-diamond:before{content:'\e78b'}.icon-dice-1:before{content:'\e78c'}.icon-dice-2:before{content:'\e78d'}.icon-dice-3:before{content:'\e78e'}.icon-dice-4:before{content:'\e78f'}.icon-dice-5:before{content:'\e790'}.icon-dice-6:before{content:'\e791'}.icon-dice:before{content:'\e792'}.icon-directions:before{content:'\e793'}.icon-disk-alert:before{content:'\e794'}.icon-disqus-outline:before{content:'\e795'}.icon-disqus:before{content:'\e796'}.icon-division-box:before{content:'\e797'}.icon-division:before{content:'\e798'}.icon-dns:before{content:'\e799'}.icon-document:before{content:'\e79a'}.icon-domain:before{content:'\e79b'}.icon-dots-horizontal:before{content:'\e79c'}.icon-dots-vertical:before{content:'\e79d'}.icon-download:before{content:'\e79e'}.icon-drag-horizontal:before{content:'\e79f'}.icon-drag-vertical:before{content:'\e7a0'}.icon-drag:before{content:'\e7a1'}.icon-drawing-box:before{content:'\e7a2'}.icon-drawing:before{content:'\e7a3'}.icon-dribbble-box:before{content:'\e7a4'}.icon-dribbble:before{content:'\e7a5'}.icon-drone:before{content:'\e7a6'}.icon-dropbox:before{content:'\e7a7'}.icon-drupal:before{content:'\e7a8'}.icon-duck:before{content:'\e7a9'}.icon-dumbbell:before{content:'\e7aa'}.icon-earth-off:before{content:'\e7ab'}.icon-earth:before{content:'\e7ac'}.icon-ebay:before{content:'\e7ad'}.icon-edge:before{content:'\e7ae'}.icon-eject:before{content:'\e7af'}.icon-elevation-decline:before{content:'\e7b0'}.icon-elevation-rise:before{content:'\e7b1'}.icon-elevator:before{content:'\e7b2'}.icon-email-open:before{content:'\e7b3'}.icon-email-secure:before{content:'\e7b4'}.icon-email:before{content:'\e7b5'}.icon-emoticon-cool:before{content:'\e7b6'}.icon-emoticon-devil:before{content:'\e7b7'}.icon-emoticon-happy:before{content:'\e7b8'}.icon-emoticon-neutral:before{content:'\e7b9'}.icon-emoticon-poop:before{content:'\e7ba'}.icon-emoticon-sad:before{content:'\e7bb'}.icon-emoticon-tongue:before{content:'\e7bc'}.icon-emoticon:before{content:'\e7bd'}.icon-engine-outline:before{content:'\e7be'}.icon-engine:before{content:'\e7bf'}.icon-equal-box:before{content:'\e7c0'}.icon-equal:before{content:'\e7c1'}.icon-eraser:before{content:'\e7c2'}.icon-escalator:before{content:'\e7c3'}.icon-etsy:before{content:'\e7c4'}.icon-evernote:before{content:'\e7c5'}.icon-exclamation:before{content:'\e7c6'}.icon-exit-to-app:before{content:'\e7c7'}.icon-export:before{content:'\e7c8'}.icon-eye-off:before{content:'\e7c9'}.icon-eye:before{content:'\e7ca'}.icon-eyedropper-variant:before{content:'\e7cb'}.icon-eyedropper:before{content:'\e7cc'}.icon-facebook-box:before{content:'\e7cd'}.icon-facebook:before{content:'\e7ce'}.icon-factory:before{content:'\e7cf'}.icon-fan:before{content:'\e7d0'}.icon-fast-forward:before{content:'\e7d1'}.icon-ferry:before{content:'\e7d2'}.icon-file-cloud:before{content:'\e7d3'}.icon-file-delimited:before{content:'\e7d4'}.icon-file-document-box:before{content:'\e7d5'}.icon-file-document:before{content:'\e7d6'}.icon-file-excel-box:before{content:'\e7d7'}.icon-file-excel:before{content:'\e7d8'}.icon-file-find:before{content:'\e7d9'}.icon-file-hidden:before{content:'\e7da'}.icon-file-image-box:before{content:'\e7db'}.icon-file-image:before{content:'\e7dc'}.icon-file-multiple:before{content:'\e7dd'}.icon-file-music:before{content:'\e7de'}.icon-file-outline:before{content:'\e7df'}.icon-file-pdf-box:before{content:'\e7e0'}.icon-file-pdf:before{content:'\e7e1'}.icon-file-powerpoint-box:before{content:'\e7e2'}.icon-file-powerpoint:before{content:'\e7e3'}.icon-file-presentation-box:before{content:'\e7e4'}.icon-file-video:before{content:'\e7e5'}.icon-file-word-box:before{content:'\e7e6'}.icon-file-word:before{content:'\e7e7'}.icon-file-xml:before{content:'\e7e8'}.icon-file:before{content:'\e7e9'}.icon-fill:before{content:'\e7ea'}.icon-film:before{content:'\e7eb'}.icon-filmstrip-off:before{content:'\e7ec'}.icon-filmstrip:before{content:'\e7ed'}.icon-filter-outline:before{content:'\e7ee'}.icon-filter-remove-outline:before{content:'\e7ef'}.icon-filter-remove:before{content:'\e7f0'}.icon-filter-variant:before{content:'\e7f1'}.icon-filter:before{content:'\e7f2'}.icon-fire:before{content:'\e7f3'}.icon-fish:before{content:'\e7f4'}.icon-flag-checkered-variant:before{content:'\e7f5'}.icon-flag-checkered:before{content:'\e7f6'}.icon-flag-outline-variant:before{content:'\e7f7'}.icon-flag-outline:before{content:'\e7f8'}.icon-flag-triangle:before{content:'\e7f9'}.icon-flag-variant:before{content:'\e7fa'}.icon-flag:before{content:'\e7fb'}.icon-flash-auto:before{content:'\e7fc'}.icon-flash-off:before{content:'\e7fd'}.icon-flash:before{content:'\e7fe'}.icon-flashlight-off:before{content:'\e7ff'}.icon-flashlight:before{content:'\e800'}.icon-flattr:before{content:'\e801'}.icon-flickr-after:before{content:'\e802'}.icon-flickr-before:before{content:'\e803'}.icon-flip-to-back:before{content:'\e804'}.icon-flip-to-front:before{content:'\e805'}.icon-floppy:before{content:'\e806'}.icon-flower:before{content:'\e807'}.icon-folder-account:before{content:'\e808'}.icon-folder-download:before{content:'\e809'}.icon-folder-google-drive:before{content:'\e80a'}.icon-folder-image:before{content:'\e80b'}.icon-folder-lock-open:before{content:'\e80c'}.icon-folder-lock:before{content:'\e80d'}.icon-folder-move:before{content:'\e80e'}.icon-folder-multiple-image:before{content:'\e80f'}.icon-folder-multiple-outline:before{content:'\e810'}.icon-folder-multiple:before{content:'\e811'}.icon-folder-outline-lock:before{content:'\e812'}.icon-folder-outline:before{content:'\e813'}.icon-folder-plus:before{content:'\e814'}.icon-folder-remove:before{content:'\e815'}.icon-folder-upload:before{content:'\e816'}.icon-folder:before{content:'\e817'}.icon-food-apple:before{content:'\e818'}.icon-food-variant:before{content:'\e819'}.icon-food:before{content:'\e81a'}.icon-football-helmet:before{content:'\e81b'}.icon-football:before{content:'\e81c'}.icon-format-align-center:before{content:'\e81d'}.icon-format-align-justify:before{content:'\e81e'}.icon-format-align-left:before{content:'\e81f'}.icon-format-align-right:before{content:'\e820'}.icon-format-bold:before{content:'\e821'}.icon-format-clear:before{content:'\e822'}.icon-format-color-fill:before{content:'\e823'}.icon-format-color:before{content:'\e824'}.icon-format-float-center:before{content:'\e825'}.icon-format-float-left:before{content:'\e826'}.icon-format-float-none:before{content:'\e827'}.icon-format-float-right:before{content:'\e828'}.icon-format-header-1:before{content:'\e829'}.icon-format-header-2:before{content:'\e82a'}.icon-format-header-3:before{content:'\e82b'}.icon-format-header-4:before{content:'\e82c'}.icon-format-header-5:before{content:'\e82d'}.icon-format-header-6:before{content:'\e82e'}.icon-format-header-decrease:before{content:'\e82f'}.icon-format-header-down:before{content:'\e830'}.icon-format-header-equal:before{content:'\e831'}.icon-format-header-increase:before{content:'\e832'}.icon-format-header-pound:before{content:'\e833'}.icon-format-header-up:before{content:'\e834'}.icon-format-indent-decrease:before{content:'\e835'}.icon-format-indent-increase:before{content:'\e836'}.icon-format-italic:before{content:'\e837'}.icon-format-line-spacing:before{content:'\e838'}.icon-format-list-bulleted:before{content:'\e839'}.icon-format-list-numbers:before{content:'\e83a'}.icon-format-object-inline:before{content:'\e83b'}.icon-format-object-square:before{content:'\e83c'}.icon-format-object-tight:before{content:'\e83d'}.icon-format-object-top-bottom:before{content:'\e83e'}.icon-format-paint:before{content:'\e83f'}.icon-format-paragraph:before{content:'\e840'}.icon-format-quote:before{content:'\e841'}.icon-format-size:before{content:'\e842'}.icon-format-strikethrough:before{content:'\e843'}.icon-format-subscript:before{content:'\e844'}.icon-format-superscript:before{content:'\e845'}.icon-format-text:before{content:'\e846'}.icon-format-textdirection-l-to-r:before{content:'\e847'}.icon-format-textdirection-r-to-l:before{content:'\e848'}.icon-format-underline:before{content:'\e849'}.icon-forum:before{content:'\e84a'}.icon-forward:before{content:'\e84b'}.icon-foursquare:before{content:'\e84c'}.icon-fridge:before{content:'\e84d'}.icon-fullscreen-exit:before{content:'\e84e'}.icon-fullscreen:before{content:'\e84f'}.icon-function:before{content:'\e850'}.icon-gamepad-variant:before{content:'\e851'}.icon-gamepad:before{content:'\e852'}.icon-gas-station:before{content:'\e853'}.icon-gavel:before{content:'\e854'}.icon-gender-female:before{content:'\e855'}.icon-gender-male-female:before{content:'\e856'}.icon-gender-male:before{content:'\e857'}.icon-gender-transgender:before{content:'\e858'}.icon-gift:before{content:'\e859'}.icon-git:before{content:'\e85a'}.icon-github-box:before{content:'\e85b'}.icon-github:before{content:'\e85c'}.icon-glass-flute:before{content:'\e85d'}.icon-glass-mug:before{content:'\e85e'}.icon-glass-stange:before{content:'\e85f'}.icon-glass-tulip:before{content:'\e860'}.icon-glasses:before{content:'\e861'}.icon-gmail:before{content:'\e862'}.icon-google-chrome:before{content:'\e863'}.icon-google-circles-communities:before{content:'\e864'}.icon-google-circles-extended:before{content:'\e865'}.icon-google-circles-invite:before{content:'\e866'}.icon-google-circles:before{content:'\e867'}.icon-google-controller-off:before{content:'\e868'}.icon-google-controller:before{content:'\e869'}.icon-google-drive:before{content:'\e86a'}.icon-google-earth:before{content:'\e86b'}.icon-google-glass:before{content:'\e86c'}.icon-google-maps:before{content:'\e86d'}.icon-google-pages:before{content:'\e86e'}.icon-google-play:before{content:'\e86f'}.icon-google-plus-box:before{content:'\e870'}.icon-google-plus:before{content:'\e871'}.icon-google:before{content:'\e872'}.icon-grid-off:before{content:'\e873'}.icon-grid:before{content:'\e874'}.icon-group:before{content:'\e875'}.icon-hand-pointing-right:before{content:'\e876'}.icon-hanger:before{content:'\e877'}.icon-hangouts:before{content:'\e878'}.icon-harddisk:before{content:'\e879'}.icon-headphones-box:before{content:'\e87a'}.icon-headphones-dots:before{content:'\e87b'}.icon-headphones:before{content:'\e87c'}.icon-headset-dock:before{content:'\e87d'}.icon-headset-off:before{content:'\e87e'}.icon-headset:before{content:'\e87f'}.icon-heart-box-outline:before{content:'\e880'}.icon-heart-box:before{content:'\e881'}.icon-heart-broken:before{content:'\e882'}.icon-heart-outline:before{content:'\e883'}.icon-heart:before{content:'\e884'}.icon-help-circle:before{content:'\e885'}.icon-help:before{content:'\e886'}.icon-hexagon-outline:before{content:'\e887'}.icon-hexagon:before{content:'\e888'}.icon-history:before{content:'\e889'}.icon-hololens:before{content:'\e88a'}.icon-home-modern:before{content:'\e88b'}.icon-home-variant:before{content:'\e88c'}.icon-home:before{content:'\e88d'}.icon-hops:before{content:'\e88e'}.icon-hospital-building:before{content:'\e88f'}.icon-hospital-marker:before{content:'\e890'}.icon-hospital:before{content:'\e891'}.icon-hotel:before{content:'\e892'}.icon-houzz-box:before{content:'\e893'}.icon-human-child:before{content:'\e894'}.icon-human-male-female:before{content:'\e895'}.icon-human:before{content:'\e896'}.icon-image-album:before{content:'\e897'}.icon-image-area-close:before{content:'\e898'}.icon-image-area:before{content:'\e899'}.icon-image-broken:before{content:'\e89a'}.icon-image-filter-black-white:before{content:'\e89b'}.icon-image-filter-center-focus:before{content:'\e89c'}.icon-image-filter-drama:before{content:'\e89d'}.icon-image-filter-frames:before{content:'\e89e'}.icon-image-filter-hdr:before{content:'\e89f'}.icon-image-filter-none:before{content:'\e8a0'}.icon-image-filter-tilt-shift:before{content:'\e8a1'}.icon-image-filter-vintage:before{content:'\e8a2'}.icon-image-filter:before{content:'\e8a3'}.icon-image:before{content:'\e8a4'}.icon-import:before{content:'\e8a5'}.icon-inbox:before{content:'\e8a6'}.icon-indent:before{content:'\e8a7'}.icon-information-outline:before{content:'\e8a8'}.icon-information:before{content:'\e8a9'}.icon-instagram:before{content:'\e8aa'}.icon-instapaper:before{content:'\e8ab'}.icon-internet-explorer:before{content:'\e8ac'}.icon-invert-colors:before{content:'\e8ad'}.icon-jira:before{content:'\e8ae'}.icon-jsfiddle:before{content:'\e8af'}.icon-keg:before{content:'\e8b0'}.icon-key-change:before{content:'\e8b1'}.icon-key-minus:before{content:'\e8b2'}.icon-key-plus:before{content:'\e8b3'}.icon-key-remove:before{content:'\e8b4'}.icon-key-variant:before{content:'\e8b5'}.icon-key:before{content:'\e8b6'}.icon-keyboard-backspace:before{content:'\e8b7'}.icon-keyboard-caps:before{content:'\e8b8'}.icon-keyboard-close:before{content:'\e8b9'}.icon-keyboard-off:before{content:'\e8ba'}.icon-keyboard-return:before{content:'\e8bb'}.icon-keyboard-tab:before{content:'\e8bc'}.icon-keyboard-variant:before{content:'\e8bd'}.icon-keyboard:before{content:'\e8be'}.icon-label-outline:before{content:'\e8bf'}.icon-label:before{content:'\e8c0'}.icon-language-csharp:before{content:'\e8c1'}.icon-language-css3:before{content:'\e8c2'}.icon-language-html5:before{content:'\e8c3'}.icon-language-javascript:before{content:'\e8c4'}.icon-language-python-text:before{content:'\e8c5'}.icon-language-python:before{content:'\e8c6'}.icon-laptop-chromebook:before{content:'\e8c7'}.icon-laptop-mac:before{content:'\e8c8'}.icon-laptop-windows:before{content:'\e8c9'}.icon-laptop:before{content:'\e8ca'}.icon-lastfm:before{content:'\e8cb'}.icon-launch:before{content:'\e8cc'}.icon-layers-off:before{content:'\e8cd'}.icon-layers:before{content:'\e8ce'}.icon-leaf:before{content:'\e8cf'}.icon-library-books:before{content:'\e8d0'}.icon-library-music:before{content:'\e8d1'}.icon-library-plus:before{content:'\e8d2'}.icon-library:before{content:'\e8d3'}.icon-lightbulb-outline:before{content:'\e8d4'}.icon-lightbulb:before{content:'\e8d5'}.icon-link-off:before{content:'\e8d6'}.icon-link-variant-off:before{content:'\e8d7'}.icon-link-variant:before{content:'\e8d8'}.icon-link:before{content:'\e8d9'}.icon-linkedin-box:before{content:'\e8da'}.icon-linkedin:before{content:'\e8db'}.icon-linode:before{content:'\e8dc'}.icon-linux:before{content:'\e8dd'}.icon-lock-outline:before{content:'\e8de'}.icon-lock-unlocked-outline:before{content:'\e8df'}.icon-lock-unlocked:before{content:'\e8e0'}.icon-lock:before{content:'\e8e1'}.icon-login:before{content:'\e8e2'}.icon-logout:before{content:'\e8e3'}.icon-looks:before{content:'\e8e4'}.icon-loupe:before{content:'\e8e5'}.icon-lumx:before{content:'\e8e6'}.icon-magnet-on:before{content:'\e8e7'}.icon-magnet:before{content:'\e8e8'}.icon-magnify-minus:before{content:'\e8e9'}.icon-magnify-plus:before{content:'\e8ea'}.icon-magnify:before{content:'\e8eb'}.icon-mail-ru:before{content:'\e8ec'}.icon-map-marker-circle:before{content:'\e8ed'}.icon-map-marker-multiple:before{content:'\e8ee'}.icon-map-marker-off:before{content:'\e8ef'}.icon-map-marker-radius:before{content:'\e8f0'}.icon-map-marker:before{content:'\e8f1'}.icon-map:before{content:'\e8f2'}.icon-margin:before{content:'\e8f3'}.icon-markdown:before{content:'\e8f4'}.icon-marker-check:before{content:'\e8f5'}.icon-martini:before{content:'\e8f6'}.icon-material-ui:before{content:'\e8f7'}.icon-maxcdn:before{content:'\e8f8'}.icon-medium:before{content:'\e8f9'}.icon-memory:before{content:'\e8fa'}.icon-menu-down:before{content:'\e8fb'}.icon-menu-left:before{content:'\e8fc'}.icon-menu-right:before{content:'\e8fd'}.icon-menu-up:before{content:'\e8fe'}.icon-menu:before{content:'\e8ff'}.icon-message-alert:before{content:'\e900'}.icon-message-draw:before{content:'\e901'}.icon-message-image:before{content:'\e902'}.icon-message-processing:before{content:'\e903'}.icon-message-reply:before{content:'\e904'}.icon-message-text-outline:before{content:'\e905'}.icon-message-text:before{content:'\e906'}.icon-message-video:before{content:'\e907'}.icon-message:before{content:'\e908'}.icon-microphone-dots:before{content:'\e909'}.icon-microphone-off:before{content:'\e90a'}.icon-microphone-outline:before{content:'\e90b'}.icon-microphone-settings:before{content:'\e90c'}.icon-microphone-variant-off:before{content:'\e90d'}.icon-microphone-variant:before{content:'\e90e'}.icon-microphone:before{content:'\e90f'}.icon-minus-box:before{content:'\e910'}.icon-minus-circle-outline:before{content:'\e911'}.icon-minus-circle:before{content:'\e912'}.icon-minus-network:before{content:'\e913'}.icon-minus:before{content:'\e914'}.icon-monitor-multiple:before{content:'\e915'}.icon-monitor:before{content:'\e916'}.icon-more:before{content:'\e917'}.icon-mouse-off:before{content:'\e918'}.icon-mouse-variant-off:before{content:'\e919'}.icon-mouse-variant:before{content:'\e91a'}.icon-mouse:before{content:'\e91b'}.icon-movie:before{content:'\e91c'}.icon-multiplication-box:before{content:'\e91d'}.icon-multiplication:before{content:'\e91e'}.icon-music-box-outline:before{content:'\e91f'}.icon-music-box:before{content:'\e920'}.icon-music-circle:before{content:'\e921'}.icon-music-note-eighth:before{content:'\e922'}.icon-music-note-half:before{content:'\e923'}.icon-music-note-off:before{content:'\e924'}.icon-music-note-quarter:before{content:'\e925'}.icon-music-note-sixteenth:before{content:'\e926'}.icon-music-note-whole:before{content:'\e927'}.icon-music-note:before{content:'\e928'}.icon-nature-people:before{content:'\e929'}.icon-nature:before{content:'\e92a'}.icon-navigation:before{content:'\e92b'}.icon-needle:before{content:'\e92c'}.icon-nest-protect:before{content:'\e92d'}.icon-nest-thermostat:before{content:'\e92e'}.icon-newspaper:before{content:'\e92f'}.icon-nfc-tap:before{content:'\e930'}.icon-nfc-variant:before{content:'\e931'}.icon-nfc:before{content:'\e932'}.icon-no:before{content:'\e933'}.icon-not-equal:before{content:'\e934'}.icon-note-outline:before{content:'\e935'}.icon-note-text:before{content:'\e936'}.icon-note:before{content:'\e937'}.icon-numeric-0-box-multiple-outline:before{content:'\e938'}.icon-numeric-0-box-outline:before{content:'\e939'}.icon-numeric-0-box:before{content:'\e93a'}.icon-numeric-1-box-multiple-outline:before{content:'\e93b'}.icon-numeric-1-box-outline:before{content:'\e93c'}.icon-numeric-1-box:before{content:'\e93d'}.icon-numeric-2-box-multiple-outline:before{content:'\e93e'}.icon-numeric-2-box-outline:before{content:'\e93f'}.icon-numeric-2-box:before{content:'\e940'}.icon-numeric-3-box-multiple-outline:before{content:'\e941'}.icon-numeric-3-box-outline:before{content:'\e942'}.icon-numeric-3-box:before{content:'\e943'}.icon-numeric-4-box-multiple-outline:before{content:'\e944'}.icon-numeric-4-box-outline:before{content:'\e945'}.icon-numeric-4-box:before{content:'\e946'}.icon-numeric-5-box-multiple-outline:before{content:'\e947'}.icon-numeric-5-box-outline:before{content:'\e948'}.icon-numeric-5-box:before{content:'\e949'}.icon-numeric-6-box-multiple-outline:before{content:'\e94a'}.icon-numeric-6-box-outline:before{content:'\e94b'}.icon-numeric-6-box:before{content:'\e94c'}.icon-numeric-7-box-multiple-outline:before{content:'\e94d'}.icon-numeric-7-box-outline:before{content:'\e94e'}.icon-numeric-7-box:before{content:'\e94f'}.icon-numeric-8-box-multiple-outline:before{content:'\e950'}.icon-numeric-8-box-outline:before{content:'\e951'}.icon-numeric-8-box:before{content:'\e952'}.icon-numeric-9-box-multiple-outline:before{content:'\e953'}.icon-numeric-9-box-outline:before{content:'\e954'}.icon-numeric-9-box:before{content:'\e955'}.icon-numeric-9-plus-box-multiple-outline:before{content:'\e956'}.icon-numeric-9-plus-box-outline:before{content:'\e957'}.icon-numeric-9-plus-box:before{content:'\e958'}.icon-numeric:before{content:'\e959'}.icon-nutriton:before{content:'\e95a'}.icon-odnoklassniki:before{content:'\e95b'}.icon-office:before{content:'\e95c'}.icon-oil:before{content:'\e95d'}.icon-omega:before{content:'\e95e'}.icon-onedrive:before{content:'\e95f'}.icon-open-in-app:before{content:'\e960'}.icon-open-in-new:before{content:'\e961'}.icon-ornament-variant:before{content:'\e962'}.icon-ornament:before{content:'\e963'}.icon-outbox:before{content:'\e964'}.icon-outdent:before{content:'\e965'}.icon-owl:before{content:'\e966'}.icon-package-down:before{content:'\e967'}.icon-package-up:before{content:'\e968'}.icon-package-variant-closed:before{content:'\e969'}.icon-package-variant:before{content:'\e96a'}.icon-package:before{content:'\e96b'}.icon-palette-advanced:before{content:'\e96c'}.icon-palette:before{content:'\e96d'}.icon-panda:before{content:'\e96e'}.icon-pandora:before{content:'\e96f'}.icon-panorama-fisheye:before{content:'\e970'}.icon-panorama-horizontal:before{content:'\e971'}.icon-panorama-vertical:before{content:'\e972'}.icon-panorama-wide-angle:before{content:'\e973'}.icon-panorama:before{content:'\e974'}.icon-paper-cut-vertical:before{content:'\e975'}.icon-paperclip:before{content:'\e976'}.icon-parking:before{content:'\e977'}.icon-pause-circle-outline:before{content:'\e978'}.icon-pause-circle:before{content:'\e979'}.icon-pause-octagon-outline:before{content:'\e97a'}.icon-pause-octagon:before{content:'\e97b'}.icon-pause:before{content:'\e97c'}.icon-paw:before{content:'\e97d'}.icon-pen:before{content:'\e97e'}.icon-pencil-box-outline:before{content:'\e97f'}.icon-pencil-box:before{content:'\e980'}.icon-pencil:before{content:'\e981'}.icon-people:before{content:'\e982'}.icon-percent:before{content:'\e983'}.icon-person-box:before{content:'\e984'}.icon-person-minus:before{content:'\e985'}.icon-person-plus:before{content:'\e986'}.icon-pharmacy:before{content:'\e987'}.icon-phone-bluetooth:before{content:'\e988'}.icon-phone-dots:before{content:'\e989'}.icon-phone-forward:before{content:'\e98a'}.icon-phone-hangup:before{content:'\e98b'}.icon-phone-in-talk:before{content:'\e98c'}.icon-phone-incoming:before{content:'\e98d'}.icon-phone-locked:before{content:'\e98e'}.icon-phone-log:before{content:'\e98f'}.icon-phone-missed:before{content:'\e990'}.icon-phone-outgoing:before{content:'\e991'}.icon-phone-paused:before{content:'\e992'}.icon-phone:before{content:'\e993'}.icon-picture:before{content:'\e994'}.icon-pig:before{content:'\e995'}.icon-pill:before{content:'\e996'}.icon-pin-off:before{content:'\e997'}.icon-pin:before{content:'\e998'}.icon-pine-tree-box:before{content:'\e999'}.icon-pine-tree:before{content:'\e99a'}.icon-pinterest-box:before{content:'\e99b'}.icon-pinterest:before{content:'\e99c'}.icon-pizza:before{content:'\e99d'}.icon-plane:before{content:'\e99e'}.icon-play-box-outline:before{content:'\e99f'}.icon-play-circle-outline:before{content:'\e9a0'}.icon-play-circle:before{content:'\e9a1'}.icon-play:before{content:'\e9a2'}.icon-playlist-minus:before{content:'\e9a3'}.icon-playlist-plus:before{content:'\e9a4'}.icon-playstation:before{content:'\e9a5'}.icon-plus-box:before{content:'\e9a6'}.icon-plus-circle-outline:before{content:'\e9a7'}.icon-plus-circle:before{content:'\e9a8'}.icon-plus-network:before{content:'\e9a9'}.icon-plus-one:before{content:'\e9aa'}.icon-plus:before{content:'\e9ab'}.icon-pocket:before{content:'\e9ac'}.icon-poll-box:before{content:'\e9ad'}.icon-poll:before{content:'\e9ae'}.icon-polymer:before{content:'\e9af'}.icon-popcorn:before{content:'\e9b0'}.icon-pound-box:before{content:'\e9b1'}.icon-pound:before{content:'\e9b2'}.icon-power-settings:before{content:'\e9b3'}.icon-power-socket:before{content:'\e9b4'}.icon-power:before{content:'\e9b5'}.icon-presentation-play:before{content:'\e9b6'}.icon-presentation:before{content:'\e9b7'}.icon-printer-3d:before{content:'\e9b8'}.icon-printer:before{content:'\e9b9'}.icon-pulse:before{content:'\e9ba'}.icon-puzzle:before{content:'\e9bb'}.icon-qrcode:before{content:'\e9bc'}.icon-quadcopter:before{content:'\e9bd'}.icon-quality-high:before{content:'\e9be'}.icon-question-mark-circle:before{content:'\e9bf'}.icon-quick-reply:before{content:'\e9c0'}.icon-quicktime:before{content:'\e9c1'}.icon-rabbit:before{content:'\e9c2'}.icon-radiator:before{content:'\e9c3'}.icon-radio-tower:before{content:'\e9c4'}.icon-radio:before{content:'\e9c5'}.icon-radioactive:before{content:'\e9c6'}.icon-radiobox-blank:before{content:'\e9c7'}.icon-radiobox-marked:before{content:'\e9c8'}.icon-raspberrypi:before{content:'\e9c9'}.icon-rdio:before{content:'\e9ca'}.icon-read:before{content:'\e9cb'}.icon-readability:before{content:'\e9cc'}.icon-receipt:before{content:'\e9cd'}.icon-recycle:before{content:'\e9ce'}.icon-reddit:before{content:'\e9cf'}.icon-redo-variant:before{content:'\e9d0'}.icon-redo:before{content:'\e9d1'}.icon-refresh:before{content:'\e9d2'}.icon-relative-scale:before{content:'\e9d3'}.icon-reload:before{content:'\e9d4'}.icon-remote:before{content:'\e9d5'}.icon-rename-box:before{content:'\e9d6'}.icon-repeat-off:before{content:'\e9d7'}.icon-repeat-once:before{content:'\e9d8'}.icon-repeat:before{content:'\e9d9'}.icon-replay:before{content:'\e9da'}.icon-reply-all:before{content:'\e9db'}.icon-reply:before{content:'\e9dc'}.icon-reproduction:before{content:'\e9dd'}.icon-resize-bottom-right:before{content:'\e9de'}.icon-responsive:before{content:'\e9df'}.icon-restore:before{content:'\e9e0'}.icon-rewind:before{content:'\e9e1'}.icon-ribbon:before{content:'\e9e2'}.icon-road:before{content:'\e9e3'}.icon-rocket:before{content:'\e9e4'}.icon-rotate-3d:before{content:'\e9e5'}.icon-rotate-left-variant:before{content:'\e9e6'}.icon-rotate-left:before{content:'\e9e7'}.icon-rotate-right-variant:before{content:'\e9e8'}.icon-rotate-right:before{content:'\e9e9'}.icon-routes:before{content:'\e9ea'}.icon-rss-box:before{content:'\e9eb'}.icon-ruler:before{content:'\e9ec'}.icon-run:before{content:'\e9ed'}.icon-sale:before{content:'\e9ee'}.icon-satellite-variant:before{content:'\e9ef'}.icon-satellite:before{content:'\e9f0'}.icon-scale-bathroom:before{content:'\e9f1'}.icon-scale:before{content:'\e9f2'}.icon-school:before{content:'\e9f3'}.icon-screen-rotation-lock:before{content:'\e9f4'}.icon-screen-rotation:before{content:'\e9f5'}.icon-script:before{content:'\e9f6'}.icon-security-network:before{content:'\e9f7'}.icon-security:before{content:'\e9f8'}.icon-select-all:before{content:'\e9f9'}.icon-select-inverse:before{content:'\e9fa'}.icon-select-off:before{content:'\e9fb'}.icon-select:before{content:'\e9fc'}.icon-send:before{content:'\e9fd'}.icon-server-minus:before{content:'\e9fe'}.icon-server-network-off:before{content:'\e9ff'}.icon-server-network:before{content:'\ea00'}.icon-server-off:before{content:'\ea01'}.icon-server-plus:before{content:'\ea02'}.icon-server-remove:before{content:'\ea03'}.icon-server-security:before{content:'\ea04'}.icon-server:before{content:'\ea05'}.icon-shape-plus:before{content:'\ea06'}.icon-share-variant:before{content:'\ea07'}.icon-share:before{content:'\ea08'}.icon-shield-outline:before{content:'\ea09'}.icon-shield:before{content:'\ea0a'}.icon-shopping-music:before{content:'\ea0b'}.icon-shopping:before{content:'\ea0c'}.icon-shuffle:before{content:'\ea0d'}.icon-sigma:before{content:'\ea0e'}.icon-sign-caution:before{content:'\ea0f'}.icon-signal:before{content:'\ea10'}.icon-silverware-fork:before{content:'\ea11'}.icon-silverware-spoon:before{content:'\ea12'}.icon-silverware-variant:before{content:'\ea13'}.icon-silverware:before{content:'\ea14'}.icon-sim-alert:before{content:'\ea15'}.icon-sim:before{content:'\ea16'}.icon-sitemap:before{content:'\ea17'}.icon-skip-next:before{content:'\ea18'}.icon-skip-previous:before{content:'\ea19'}.icon-skype-business:before{content:'\ea1a'}.icon-skype:before{content:'\ea1b'}.icon-sleep-off:before{content:'\ea1c'}.icon-sleep:before{content:'\ea1d'}.icon-smoking-off:before{content:'\ea1e'}.icon-smoking:before{content:'\ea1f'}.icon-snapchat:before{content:'\ea20'}.icon-snowman:before{content:'\ea21'}.icon-sofa:before{content:'\ea22'}.icon-sort-alphabetical:before{content:'\ea23'}.icon-sort-ascending:before{content:'\ea24'}.icon-sort-descending:before{content:'\ea25'}.icon-sort-numeric:before{content:'\ea26'}.icon-sort-variant:before{content:'\ea27'}.icon-sort:before{content:'\ea28'}.icon-soundcloud:before{content:'\ea29'}.icon-source-fork:before{content:'\ea2a'}.icon-source-pull:before{content:'\ea2b'}.icon-speaker-off:before{content:'\ea2c'}.icon-speaker:before{content:'\ea2d'}.icon-speedometer:before{content:'\ea2e'}.icon-spellcheck:before{content:'\ea2f'}.icon-spotify:before{content:'\ea30'}.icon-spotlight-beam:before{content:'\ea31'}.icon-spotlight:before{content:'\ea32'}.icon-spreadsheet:before{content:'\ea33'}.icon-square-inc-cash:before{content:'\ea34'}.icon-square-inc:before{content:'\ea35'}.icon-stackoverflow:before{content:'\ea36'}.icon-star-circle:before{content:'\ea37'}.icon-star-half:before{content:'\ea38'}.icon-star-of-david:before{content:'\ea39'}.icon-star-outline:before{content:'\ea3a'}.icon-star:before{content:'\ea3b'}.icon-steam:before{content:'\ea3c'}.icon-stethoscope:before{content:'\ea3d'}.icon-stocking:before{content:'\ea3e'}.icon-stop:before{content:'\ea3f'}.icon-store-24-hour:before{content:'\ea40'}.icon-store:before{content:'\ea41'}.icon-stove:before{content:'\ea42'}.icon-subway:before{content:'\ea43'}.icon-sunglasses:before{content:'\ea44'}.icon-swap-horizontal:before{content:'\ea45'}.icon-swap-vertical:before{content:'\ea46'}.icon-swim:before{content:'\ea47'}.icon-sword:before{content:'\ea48'}.icon-sync-alert:before{content:'\ea49'}.icon-sync-off:before{content:'\ea4a'}.icon-sync:before{content:'\ea4b'}.icon-tab-unselected:before{content:'\ea4c'}.icon-tab:before{content:'\ea4d'}.icon-table-column-plus-after:before{content:'\ea4e'}.icon-table-column-plus-before:before{content:'\ea4f'}.icon-table-column-remove:before{content:'\ea50'}.icon-table-column-width:before{content:'\ea51'}.icon-table-edit:before{content:'\ea52'}.icon-table-large:before{content:'\ea53'}.icon-table-row-height:before{content:'\ea54'}.icon-table-row-plus-after:before{content:'\ea55'}.icon-table-row-plus-before:before{content:'\ea56'}.icon-table-row-remove:before{content:'\ea57'}.icon-table:before{content:'\ea58'}.icon-tablet-android:before{content:'\ea59'}.icon-tablet-ipad:before{content:'\ea5a'}.icon-tablet:before{content:'\ea5b'}.icon-tag-faces:before{content:'\ea5c'}.icon-tag-multiple:before{content:'\ea5d'}.icon-tag-outline:before{content:'\ea5e'}.icon-tag-text-outline:before{content:'\ea5f'}.icon-tag:before{content:'\ea60'}.icon-taxi:before{content:'\ea61'}.icon-teamviewer:before{content:'\ea62'}.icon-telegram:before{content:'\ea63'}.icon-television-guide:before{content:'\ea64'}.icon-television:before{content:'\ea65'}.icon-temperature-celsius:before{content:'\ea66'}.icon-temperature-fahrenheit:before{content:'\ea67'}.icon-temperature-kelvin:before{content:'\ea68'}.icon-tennis:before{content:'\ea69'}.icon-tent:before{content:'\ea6a'}.icon-terrain:before{content:'\ea6b'}.icon-text-to-speech-off:before{content:'\ea6c'}.icon-text-to-speech:before{content:'\ea6d'}.icon-texture:before{content:'\ea6e'}.icon-theater:before{content:'\ea6f'}.icon-theme-light-dark:before{content:'\ea70'}.icon-thermometer-lines:before{content:'\ea71'}.icon-thermometer:before{content:'\ea72'}.icon-thumb-down-outline:before{content:'\ea73'}.icon-thumb-down:before{content:'\ea74'}.icon-thumb-up-outline:before{content:'\ea75'}.icon-thumb-up:before{content:'\ea76'}.icon-thumbs-up-down:before{content:'\ea77'}.icon-ticket-account:before{content:'\ea78'}.icon-ticket:before{content:'\ea79'}.icon-tie:before{content:'\ea7a'}.icon-tile-four:before{content:'\ea7b'}.icon-timelapse:before{content:'\ea7c'}.icon-timer-3:before{content:'\ea7d'}.icon-timer-10:before{content:'\ea7e'}.icon-timer-off:before{content:'\ea7f'}.icon-timer-sand:before{content:'\ea80'}.icon-timer:before{content:'\ea81'}.icon-timetable:before{content:'\ea82'}.icon-toggle-switch-off:before{content:'\ea83'}.icon-toggle-switch-on:before{content:'\ea84'}.icon-tooltip-edit:before{content:'\ea85'}.icon-tooltip-image:before{content:'\ea86'}.icon-tooltip-outline-plus:before{content:'\ea87'}.icon-tooltip-outline:before{content:'\ea88'}.icon-tooltip-text:before{content:'\ea89'}.icon-tooltip:before{content:'\ea8a'}.icon-tor:before{content:'\ea8b'}.icon-traffic-light:before{content:'\ea8c'}.icon-train:before{content:'\ea8d'}.icon-tram:before{content:'\ea8e'}.icon-transcribe-close:before{content:'\ea8f'}.icon-transcribe:before{content:'\ea90'}.icon-transfer:before{content:'\ea91'}.icon-trash:before{content:'\ea92'}.icon-tree:before{content:'\ea93'}.icon-trello:before{content:'\ea94'}.icon-trending-down:before{content:'\ea95'}.icon-trending-neutral:before{content:'\ea96'}.icon-trending-up:before{content:'\ea97'}.icon-truck:before{content:'\ea98'}.icon-tshirt-crew:before{content:'\ea99'}.icon-tshirt-v:before{content:'\ea9a'}.icon-tumblr-reblog:before{content:'\ea9b'}.icon-tumblr:before{content:'\ea9c'}.icon-twitch:before{content:'\ea9d'}.icon-twitter-box:before{content:'\ea9e'}.icon-twitter-circle:before{content:'\ea9f'}.icon-twitter-retweet:before{content:'\eaa0'}.icon-twitter:before{content:'\eaa1'}.icon-ubuntu:before{content:'\eaa2'}.icon-umbrella-outline:before{content:'\eaa3'}.icon-umbrella:before{content:'\eaa4'}.icon-undo-variant:before{content:'\eaa5'}.icon-undo:before{content:'\eaa6'}.icon-unfold-less:before{content:'\eaa7'}.icon-unfold-more:before{content:'\eaa8'}.icon-ungroup:before{content:'\eaa9'}.icon-untappd:before{content:'\eaaa'}.icon-upload:before{content:'\eaab'}.icon-usb:before{content:'\eaac'}.icon-vector-curve:before{content:'\eaad'}.icon-vector-point:before{content:'\eaae'}.icon-vector-square:before{content:'\eaaf'}.icon-verified:before{content:'\eab0'}.icon-vibration:before{content:'\eab1'}.icon-video-off:before{content:'\eab2'}.icon-video-switch:before{content:'\eab3'}.icon-video:before{content:'\eab4'}.icon-view-agenda:before{content:'\eab5'}.icon-view-array:before{content:'\eab6'}.icon-view-carousel:before{content:'\eab7'}.icon-view-column:before{content:'\eab8'}.icon-view-dashboard:before{content:'\eab9'}.icon-view-day:before{content:'\eaba'}.icon-view-headline:before{content:'\eabb'}.icon-view-list:before{content:'\eabc'}.icon-view-module:before{content:'\eabd'}.icon-view-quilt:before{content:'\eabe'}.icon-view-stream:before{content:'\eabf'}.icon-view-week:before{content:'\eac0'}.icon-vimeo:before{content:'\eac1'}.icon-vine:before{content:'\eac2'}.icon-vk-box:before{content:'\eac3'}.icon-vk-circle:before{content:'\eac4'}.icon-vk:before{content:'\eac5'}.icon-voicemail:before{content:'\eac6'}.icon-volume-high:before{content:'\eac7'}.icon-volume-low:before{content:'\eac8'}.icon-volume-medium:before{content:'\eac9'}.icon-volume-off:before{content:'\eaca'}.icon-volume:before{content:'\eacb'}.icon-vpn:before{content:'\eacc'}.icon-walk:before{content:'\eacd'}.icon-wallet-giftcard:before{content:'\eace'}.icon-wallet-membership:before{content:'\eacf'}.icon-wallet-travel:before{content:'\ead0'}.icon-wallet:before{content:'\ead1'}.icon-washing-machine:before{content:'\ead2'}.icon-watch-export:before{content:'\ead3'}.icon-watch-import:before{content:'\ead4'}.icon-watch:before{content:'\ead5'}.icon-water-off:before{content:'\ead6'}.icon-water-pump:before{content:'\ead7'}.icon-water:before{content:'\ead8'}.icon-weather-cloudy:before{content:'\ead9'}.icon-weather-fog:before{content:'\eada'}.icon-weather-hail:before{content:'\eadb'}.icon-weather-lightning:before{content:'\eadc'}.icon-weather-night:before{content:'\eadd'}.icon-weather-partlycloudy:before{content:'\eade'}.icon-weather-pouring:before{content:'\eadf'}.icon-weather-rainy:before{content:'\eae0'}.icon-weather-snowy:before{content:'\eae1'}.icon-weather-sunny:before{content:'\eae2'}.icon-weather-sunset-down:before{content:'\eae3'}.icon-weather-sunset-up:before{content:'\eae4'}.icon-weather-sunset:before{content:'\eae5'}.icon-weather-windy-variant:before{content:'\eae6'}.icon-weather-windy:before{content:'\eae7'}.icon-web:before{content:'\eae8'}.icon-webcam:before{content:'\eae9'}.icon-weight-kilogram:before{content:'\eaea'}.icon-weight:before{content:'\eaeb'}.icon-whatsapp:before{content:'\eaec'}.icon-wheelchair-accessibility:before{content:'\eaed'}.icon-white-balance-auto:before{content:'\eaee'}.icon-white-balance-incandescent:before{content:'\eaef'}.icon-white-balance-irradescent:before{content:'\eaf0'}.icon-white-balance-sunny:before{content:'\eaf1'}.icon-wifi:before{content:'\eaf2'}.icon-wii:before{content:'\eaf3'}.icon-wikipedia:before{content:'\eaf4'}.icon-window-close:before{content:'\eaf5'}.icon-window-closed:before{content:'\eaf6'}.icon-window-maximize:before{content:'\eaf7'}.icon-window-minimize:before{content:'\eaf8'}.icon-window-open:before{content:'\eaf9'}.icon-window-restore:before{content:'\eafa'}.icon-windows:before{content:'\eafb'}.icon-wordpress:before{content:'\eafc'}.icon-worker:before{content:'\eafd'}.icon-wunderlist:before{content:'\eafe'}.icon-xbox-controller-off:before{content:'\eaff'}.icon-xbox-controller:before{content:'\eb00'}.icon-xbox:before{content:'\eb01'}.icon-xda:before{content:'\eb02'}.icon-xml:before{content:'\eb03'}.icon-yeast:before{content:'\eb04'}.icon-yelp:before{content:'\eb05'}.icon-youtube-play:before{content:'\eb06'}.icon-youtube:before{content:'\eb07'}.icon-zip-box:before{content:'\eb08'}.avatar{width:40px;min-width:40px;height:40px;line-height:40px;margin:0 8px 0 0;border-radius:50%;font-size:17px;font-weight:500;text-align:center;color:#fff}.avatar.square{border-radius:0}.avatar.small{width:20px;min-width:20px;height:20px;line-height:20px}.avatar.big{width:72px;min-width:72px;height:72px;line-height:72px}.avatar.huge{width:96px;min-width:96px;height:96px;line-height:96px}.form-wrapper{background:#fff;padding:16px}.form-wrapper .form-title{font-size:21px;padding:8px 0}.navigation-simple .item{position:relative;cursor:pointer;text-align:left;margin:0;padding:0 24px;text-transform:none;line-height:48px;max-height:48px;height:48px}.navigation-simple .item md-icon{margin:0 16px 0 0}.navigation-simple .item .title{font-size:13px;font-weight:500;line-height:1}.navigation-simple .item.selected{background-color:rgba(0,0,0,.06)}.navigation-simple .subheader{font-size:13px;border-top:1px solid rgba(0,0,0,.12);font-weight:500;margin-top:8px}.navigation-simple .subheader.light{border-top:1px solid rgba(255,255,255,.12)}.navigation-simple md-divider{margin:8px 0}.simple-pagination{position:relative;display:inline-flex;flex-direction:row;box-shadow:0 1px 3px 0 rgba(0,0,0,.2),0 1px 1px 0 rgba(0,0,0,.14),0 2px 1px -1px rgba(0,0,0,.12);background-color:#fff;padding:0 8px}.simple-pagination .pagination-item{min-width:48px;min-height:56px;line-height:56px;border-radius:0;margin:0;font-weight:400;color:rgba(0,0,0,.54)}.simple-pagination .pagination-item:hover{color:rgba(0,0,0,.87)}.simple-pagination .pagination-item.active{cursor:default;color:rgba(0,0,0,.87)}.simple-pagination .pagination-item.disabled{cursor:default;color:rgba(0,0,0,.26)}.price-tables .price-table{position:relative;background-color:#fff;width:280px;border-radius:2px;margin:24px 24px 0 0;overflow:hidden}.price-tables .price-table.style-1 .package-type{font-size:17px;padding:16px 24px}.price-tables .price-table.style-1 .package-type .sale{font-size:13px;font-weight:600}.price-tables .price-table.style-1 .price{padding:32px 32px 16px 32px}.price-tables .price-table.style-1 .price .currency{padding-right:4px;font-size:24px;font-weight:500;color:rgba(0,0,0,.54)}.price-tables .price-table.style-1 .price .value{font-size:72px;font-weight:300;line-height:1}.price-tables .price-table.style-1 .price .period{padding:0 0 5px 4px;font-size:17px;color:rgba(0,0,0,.54)}.price-tables .price-table.style-1 md-divider{margin:16px 32px}.price-tables .price-table.style-1 .terms{padding:16px 32px;font-size:15px}.price-tables .price-table.style-1 .cta-button{margin:16px auto 32px auto;width:128px}.price-tables .price-table.style-2 .badge{position:absolute;top:0;left:50%;transform:translateX(-50%);font-size:11px;font-weight:500;padding:6px 8px}.price-tables .price-table.style-2 .package-type{padding:48px 32px 24px 32px;font-size:20px;font-weight:500;text-align:center}.price-tables .price-table.style-2 .price{padding:0 32px 8px 32px}.price-tables .price-table.style-2 .price .currency{padding-right:4px;font-size:24px;font-weight:500;color:rgba(0,0,0,.54)}.price-tables .price-table.style-2 .price .value{font-size:56px;font-weight:300;line-height:1}.price-tables .price-table.style-2 .period{padding:0 32px;font-size:15px;font-weight:500;color:rgba(0,0,0,.54);text-align:center}.price-tables .price-table.style-2 .terms{padding:32px;font-size:15px}.price-tables .price-table.style-2 .terms .term{padding-bottom:8px}.price-tables .price-table.style-2 .terms .term:last-child{padding-bottom:0}.price-tables .price-table.style-2 .cta-button{margin:8px auto 32px auto;width:128px}.price-tables .price-table.style-3 .package-type{padding:32px;text-align:center}.price-tables .price-table.style-3 .package-type .title{font-size:34px}.price-tables .price-table.style-3 .package-type .subtitle{font-size:17px;color:rgba(0,0,0,.54);font-weight:500}.price-tables .price-table.style-3 .price{padding:16px 32px}.price-tables .price-table.style-3 .price .currency{padding-right:4px;font-size:15px;font-weight:500}.price-tables .price-table.style-3 .price .value{font-size:34px;font-weight:300;line-height:1}.price-tables .price-table.style-3 .price .period{padding-left:4px;text-align:center}.price-tables .price-table.style-3 .terms{margin:32px;font-size:15px;color:rgba(0,0,0,.54)}.price-tables .price-table.style-3 .terms .term{padding-bottom:16px}.price-tables .price-table.style-3 .terms .term:last-child{padding-bottom:0}.price-tables .price-table.style-3 .cta-button{margin:8px 32px}.price-tables .price-table.style-3 .note{padding:8px 32px 16px 32px;text-align:center;color:rgba(0,0,0,.54)}.simple-table-container{background:#fff}.simple-table-container .table-title{font-size:20px;padding:24px}table.simple{width:100%;border:none;border-spacing:0;text-align:left}table.simple thead tr th{padding:16px 8px;font-weight:500;color:rgba(0,0,0,.54);border-bottom:1px solid rgba(0,0,0,.12);white-space:nowrap;min-width:120px}table.simple thead tr th:first-child{padding-left:24px}table.simple thead tr th:last-child{padding-right:24px}table.simple tbody tr td{padding:16px 8px;border-bottom:1px solid rgba(0,0,0,.12)}table.simple tbody tr td:first-child{padding-left:24px}table.simple tbody tr td:last-child{padding-right:24px}table.simple tbody tr:last-child td{border-bottom:none}table.simple.clickable tbody tr{cursor:pointer}table.simple.clickable tbody tr:hover{background:rgba(0,0,0,.03)}html{font-size:62.5%;font-family:Roboto,"Helvetica Neue",Arial,sans-serif;line-height:1.4;letter-spacing:-.1px}body{font-size:1.3rem}body,html{-webkit-font-smoothing:auto;-moz-osx-font-smoothing:auto}form{font-size:1.6rem}.h1,.h2,.h3,.h4,.h5,.h6,h1,h2,h3,h4,h5,h6{font-weight:400}.h1,h1{font-size:2.4rem}.h2,h2{font-size:2rem}.h3,h3{font-size:1.6rem}.h4,h4{font-size:1.4rem}.h5,h5{font-size:1.3rem}.h6,h6{font-size:1.2rem}a{text-decoration:none}a:active,a:hover{text-decoration:underline}abbr{cursor:help;border-bottom:1px dotted rgba(0,0,0,.54)}blockquote{border-left:3px solid rgba(0,0,0,.12);font-style:italic;margin:1em 0;padding-left:16px}blockquote footer{font-style:normal}blockquote footer:before{content:'\2014 \00A0'}blockquote.reverse{border-left:none;border-right:3px solid rgba(0,0,0,.12);text-align:right;padding-left:0;padding-right:16px}blockquote.reverse footer:before{content:''}blockquote.reverse footer:after{content:'\2014 \00A0'}code{font-family:Monaco,Menlo,Consolas,"Ubuntu Mono",monospace}code:not(.highlight){background:rgba(0,0,0,.065);color:#106cc8;margin:0 1px;padding:2px 3px;border-radius:2px}dl dt{font-weight:700}dl dd{margin:4px 0 16px 0}mark{background:#f7f49a}pre{line-height:1.6;margin:8px 16px;white-space:pre-wrap}small{font-size:80%}table thead tr th{text-align:left}.text-italic{font-style:italic}.text-semibold{font-weight:600}.text-bold,strong{font-weight:700}.text-strike{text-decoration:line-through}.text-super{vertical-align:super}.text-sub{vertical-align:sub}.text-capitalize{text-transform:capitalize}.text-lowercase{text-transform:lowercase}.text-uppercase{text-transform:uppercase}.text-left{text-align:left}.text-center{text-align:center}.text-right{text-align:right}.font-weight-100{font-weight:100}.font-weight-200{font-weight:200}.font-weight-300{font-weight:300}.font-weight-400{font-weight:400}.font-weight-500{font-weight:500}.font-weight-600{font-weight:600}.font-weight-700{font-weight:700}.font-weight-800{font-weight:800}.font-weight-900{font-weight:900}.font-size-2{font-size:2px}.font-size-4{font-size:4px}.font-size-6{font-size:6px}.font-size-8{font-size:8px}.font-size-10{font-size:10px}.font-size-12{font-size:12px}.font-size-14{font-size:14px}.font-size-16{font-size:16px}.font-size-18{font-size:18px}.font-size-20{font-size:20px}.font-size-22{font-size:22px}.font-size-24{font-size:24px}.font-size-26{font-size:26px}.font-size-28{font-size:28px}.font-size-30{font-size:30px}.font-size-32{font-size:32px}.font-size-34{font-size:34px}.font-size-36{font-size:36px}.font-size-38{font-size:38px}.font-size-40{font-size:40px}.font-size-42{font-size:42px}.font-size-44{font-size:44px}.font-size-46{font-size:46px}.font-size-48{font-size:48px}.font-size-50{font-size:50px}.font-size-52{font-size:52px}.font-size-54{font-size:54px}.font-size-56{font-size:56px}.font-size-58{font-size:58px}.font-size-60{font-size:60px}.font-size-62{font-size:62px}.font-size-64{font-size:64px}.font-size-66{font-size:66px}.font-size-68{font-size:68px}.font-size-70{font-size:70px}.font-size-72{font-size:72px}.font-size-74{font-size:74px}.font-size-76{font-size:76px}.font-size-78{font-size:78px}.font-size-80{font-size:80px}.font-size-82{font-size:82px}.font-size-84{font-size:84px}.font-size-86{font-size:86px}.font-size-88{font-size:88px}.font-size-90{font-size:90px}.font-size-92{font-size:92px}.font-size-94{font-size:94px}.font-size-96{font-size:96px}.font-size-98{font-size:98px}.font-size-100{font-size:100px}.font-size-102{font-size:102px}.font-size-104{font-size:104px}.font-size-106{font-size:106px}.font-size-108{font-size:108px}.font-size-110{font-size:110px}.font-size-112{font-size:112px}.font-size-114{font-size:114px}.font-size-116{font-size:116px}.font-size-118{font-size:118px}.font-size-120{font-size:120px}.line-height-2{line-height:2px}.line-height-4{line-height:4px}.line-height-6{line-height:6px}.line-height-8{line-height:8px}.line-height-10{line-height:10px}.line-height-12{line-height:12px}.line-height-14{line-height:14px}.line-height-16{line-height:16px}.line-height-18{line-height:18px}.line-height-20{line-height:20px}.line-height-22{line-height:22px}.line-height-24{line-height:24px}.line-height-26{line-height:26px}.line-height-28{line-height:28px}.line-height-30{line-height:30px}.line-height-32{line-height:32px}.line-height-34{line-height:34px}.line-height-36{line-height:36px}.line-height-38{line-height:38px}.line-height-40{line-height:40px}.line-height-42{line-height:42px}.line-height-44{line-height:44px}.line-height-46{line-height:46px}.line-height-48{line-height:48px}.line-height-50{line-height:50px}.line-height-52{line-height:52px}.line-height-54{line-height:54px}.line-height-56{line-height:56px}.line-height-58{line-height:58px}.line-height-60{line-height:60px}.line-height-62{line-height:62px}.line-height-64{line-height:64px}.line-height-66{line-height:66px}.line-height-68{line-height:68px}.line-height-70{line-height:70px}.line-height-72{line-height:72px}.line-height-74{line-height:74px}.line-height-76{line-height:76px}.line-height-78{line-height:78px}.line-height-80{line-height:80px}.line-height-82{line-height:82px}.line-height-84{line-height:84px}.line-height-86{line-height:86px}.line-height-88{line-height:88px}.line-height-90{line-height:90px}.line-height-92{line-height:92px}.line-height-94{line-height:94px}.line-height-96{line-height:96px}.line-height-98{line-height:98px}.line-height-100{line-height:100px}.line-height-102{line-height:102px}.line-height-104{line-height:104px}.line-height-106{line-height:106px}.line-height-108{line-height:108px}.line-height-110{line-height:110px}.line-height-112{line-height:112px}.line-height-114{line-height:114px}.line-height-116{line-height:116px}.line-height-118{line-height:118px}.line-height-120{line-height:120px}.text-boxed,.text-boxed-light{border-radius:2px;padding:4px 8px;margin:0 8px;font-size:11px;font-weight:500;color:rgba(0,0,0,.54);background-color:rgba(0,0,0,.12);white-space:nowrap}.text-boxed-light{background-color:rgba(255,255,255,.7)}.text-truncate{display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.text-nowrap{white-space:nowrap}html,html *{scrollbar-width:thin;scrollbar-color:rgba(128,128,128,.25) rgba(128,128,128,.25)}::-webkit-scrollbar{width:8px;height:8px;background-color:transparent;box-shadow:none}::-webkit-scrollbar:hover{background-color:transparent}::-webkit-scrollbar-thumb{min-height:8px;min-width:8px;background-color:rgba(128,128,128,.25);box-shadow:none}::-webkit-scrollbar-thumb:hover{background-color:rgba(128,128,128,.125)}::-webkit-scrollbar-thumb:active{background-color:rgba(128,128,128,.15)}.angular-google-map-container{height:400px}.moment-picker .moment-picker-container{width:296px;border:none;border-radius:2px;box-shadow:0 2px 4px -1px rgba(0,0,0,.2),0 4px 5px 0 rgba(0,0,0,.14),0 1px 10px 0 rgba(0,0,0,.12);margin-left:0;padding:8px}.moment-picker .moment-picker-container td,.moment-picker .moment-picker-container th{min-width:0;width:40px;height:40px;padding:8px;text-shadow:none;border-radius:35px}.moment-picker .moment-picker-container td:hover,.moment-picker .moment-picker-container th:hover{background:#f5f5f5;background-image:none}.moment-picker .moment-picker-container td.selected{background:#03a9f4;background-image:none}.moment-picker .moment-picker-container .header-view th{border-radius:0;white-space:nowrap;width:auto}.moment-picker .moment-picker-container .header-view th:first-child,.moment-picker .moment-picker-container .header-view th:last-child{width:20%}.c3{transition:all .3s ease}.c3 svg{font:12px RobotoDraft,Roboto,'Helvetica Neue',sans-serif}.c3 line,.c3 path{fill:none;stroke:#000}.c3 text{font-family:Roboto,"Helvetica Neue",Arial,sans-serif;user-select:none}.c3 .c3-bars path,.c3 .c3-event-rect,.c3 .c3-legend-item-tile,.c3 .c3-xgrid-focus,.c3 .c3-ygrid{shape-rendering:crispEdges}.c3 .c3-chart-line{transition:all .3s ease}.c3 .c3-line{stroke-width:1px}.c3.stroke-3 .c3-line{stroke-width:3px}.c3.stroke-2 .c3-line{stroke-width:2px}.c3 .c3-circle{transition:all .3s ease;stroke:#fff;stroke-width:2}.c3 .c3-circle._expanded_{stroke-width:3;stroke:#fff}.c3 .c3-chart-arc path{stroke:#fff}.c3 .c3-chart-arc text{fill:#fff;font-size:13px}.c3 .c3-grid line{stroke:rgba(0,0,0,.04);stroke-width:1px;stroke-dasharray:0}.c3 .c3-grid text{fill:#aaa}.c3 .c3-axis .tick{stroke-width:0}.c3 .c3-axis text{fill:rgba(0,0,0,.33)}.c3 .c3-axis line,.c3 .c3-axis path{stroke:rgba(0,0,0,.04)}.c3 .c3-xgrid,.c3 .c3-ygrid{stroke-dasharray:0 0}.c3 .c3-text.c3-empty{fill:grey;font-size:2em}.c3 .c3-bar{stroke-width:0}.c3 .c3-bar._expanded_{fill-opacity:.75}.c3 .c3-target.c3-focused{opacity:1}.c3 .c3-target.c3-focused .c3-target.c3-focused path.c3-step,.c3 .c3-target.c3-focused path.c3-line{stroke-width:3px;transition:all .3s ease}.c3 .c3-target.c3-defocused{opacity:.3!important}.c3 .c3-region{fill:#4682b4;fill-opacity:.1}.c3 .c3-brush .extent{fill-opacity:.1}.c3 .c3-legend-item{font-size:12px}.c3 .c3-legend-item-hidden{opacity:.15}.c3 .c3-legend-background{opacity:.75;fill:#fff;stroke:#d3d3d3;stroke-width:1}.c3 .c3-tooltip-container{z-index:10}.c3 .c3-tooltip{border-collapse:collapse;border-spacing:0;background-color:#fff;empty-cells:show;box-shadow:0 2px 4px -1px rgba(0,0,0,.14),0 4px 5px 0 rgba(0,0,0,.098),0 1px 10px 0 rgba(0,0,0,.084);opacity:1;border-radius:2px;overflow:hidden;padding:4px 0}.c3 .c3-tooltip tr{border:none}.c3 .c3-tooltip th{background-color:transparent;font-size:14px;font-weight:400;padding:8px 12px;text-align:left;color:rgba(0,0,0,.54)}.c3 .c3-tooltip td{font-size:13px;padding:4px 12px!important;background-color:#fff;border-left:none;color:rgba(0,0,0,.84)}.c3 .c3-tooltip td>span{display:inline-block;width:10px;height:10px;margin-right:6px}.c3 .c3-tooltip td.value{font-size:14px!important;text-align:right;color:rgba(0,0,0,.84)}.c3 .c3-area{stroke-width:0;opacity:.2}.c3 .c3-chart-arcs-title{dominant-baseline:middle;font-size:1.3em}.c3 .c3-chart-arcs .c3-chart-arcs-background{fill:#e0e0e0;stroke:none}.c3 .c3-chart-arcs .c3-chart-arcs-gauge-unit{fill:#000;font-size:16px}.c3 .c3-chart-arcs .c3-chart-arcs-gauge-max{fill:#777}.c3 .c3-chart-arcs .c3-chart-arcs-gauge-min{fill:#777}.c3 .c3-chart-arc .c3-gauge-value{fill:#000}.ct-label{font-size:13px}.ct-chart-donut .ct-label,.ct-chart-pie .ct-label{font-size:13px}.bar-legend,.chart-legend,.doughnut-legend,.line-legend,.pie-legend,.polararea-legend,.radar-legend{margin-top:15px}table.dataTable{width:100%;margin:0 auto;clear:both;border-spacing:0}table.dataTable thead tr{background:#fff}table.dataTable thead th{text-align:left;vertical-align:middle;border-bottom:1px solid rgba(0,0,0,.12);padding:16px 8px}table.dataTable thead th:first-child{padding-left:24px}table.dataTable thead th:last-child{border-right:none;padding-right:24px}table.dataTable thead th:active{outline:0}table.dataTable thead th.dt-head-left{text-align:left}table.dataTable thead th.dt-head-center{text-align:center}table.dataTable thead th.dt-head-right{text-align:right}table.dataTable thead th.dt-head-justify{text-align:justify}table.dataTable thead th.dt-head-nowrap{white-space:nowrap}table.dataTable thead th .table-header .column-title{display:block;font-weight:600;white-space:nowrap}table.dataTable thead th .table-header .selectize-control{margin-top:15px}table.dataTable thead th .table-header .selectize-control.single .selectize-input{padding:7px 10px}table.dataTable thead th .table-header .selectize-control.single .selectize-input:after{right:10px;border-width:5px 4px 0 4px;border-color:rgba(0,0,0,.12) transparent transparent transparent}table.dataTable thead th .table-header .column-search-input{display:inline-block;margin-top:15px;width:100%;height:33px}table.dataTable thead td{padding:15px;vertical-align:middle}table.dataTable thead td:active{outline:0}table.dataTable thead td.dt-head-left{text-align:left}table.dataTable thead td.dt-head-center{text-align:center}table.dataTable thead td.dt-head-right{text-align:right}table.dataTable thead td.dt-head-justify{text-align:justify}table.dataTable thead td.dt-head-nowrap{white-space:nowrap}table.dataTable thead .sorting,table.dataTable thead .sorting_asc,table.dataTable thead .sorting_desc{background:0 0}table.dataTable thead .sorting .table-header .column-title,table.dataTable thead .sorting_asc .table-header .column-title,table.dataTable thead .sorting_desc .table-header .column-title{cursor:pointer}table.dataTable thead .sorting .table-header .column-title:after,table.dataTable thead .sorting_asc .table-header .column-title:after,table.dataTable thead .sorting_desc .table-header .column-title:after{position:relative;font-family:icomoon;font-weight:400;margin-left:10px;top:2px;font-size:16px;color:rgba(0,0,0,.54)}table.dataTable thead .sorting .table-header .column-title:after{content:'\eaa8'}table.dataTable thead .sorting_asc .table-header .column-title:after{content:'\e718'}table.dataTable thead .sorting_desc .table-header .column-title:after{content:'\e715'}table.dataTable tfoot th{font-weight:600;text-align:left;padding:10px 18px 6px 18px;border-top:1px solid #111}table.dataTable tfoot th.dt-head-left{text-align:left}table.dataTable tfoot th.dt-head-center{text-align:center}table.dataTable tfoot th.dt-head-right{text-align:right}table.dataTable tfoot th.dt-head-justify{text-align:justify}table.dataTable tfoot th.dt-head-nowrap{white-space:nowrap}table.dataTable tfoot td{padding:10px 18px 6px 18px;border-top:1px solid #111}table.dataTable tfoot td.dt-head-left{text-align:left}table.dataTable tfoot td.dt-head-center{text-align:center}table.dataTable tfoot td.dt-head-right{text-align:right}table.dataTable tfoot td.dt-head-justify{text-align:justify}table.dataTable tfoot td.dt-head-nowrap{white-space:nowrap}table.dataTable tbody tr{background-color:#fff}table.dataTable tbody tr.selected{background-color:#b0bed9}table.dataTable tbody tr.details-open td.detail-column i{background:#fff}table.dataTable tbody tr.details-row.odd tr{background:#fff}table.dataTable tbody tr.details-row>td{padding:0}table.dataTable tbody th{padding:14px 15px;vertical-align:middle}table.dataTable tbody th.dt-body-left{text-align:left}table.dataTable tbody th.dt-body-center{text-align:center}table.dataTable tbody th.dt-body-right{text-align:right}table.dataTable tbody th.dt-body-justify{text-align:justify}table.dataTable tbody th.dt-body-nowrap{white-space:nowrap}table.dataTable tbody td{padding:16px 8px;vertical-align:middle}table.dataTable tbody td:first-child{padding-left:24px}table.dataTable tbody td:last-child{padding-right:24px}table.dataTable tbody td.dt-body-left{text-align:left}table.dataTable tbody td.dt-body-center{text-align:center}table.dataTable tbody td.dt-body-right{text-align:right}table.dataTable tbody td.dt-body-justify{text-align:justify}table.dataTable tbody td.dt-body-nowrap{white-space:nowrap}table.dataTable th.dt-left{text-align:left}table.dataTable th.dt-center{text-align:center}table.dataTable th.dt-right{text-align:right}table.dataTable th.dt-justify{text-align:justify}table.dataTable th.dt-nowrap{white-space:nowrap}table.dataTable td.dt-left{text-align:left}table.dataTable td.dt-center{text-align:center}table.dataTable td.dataTables_empty{height:51px;text-align:center}table.dataTable td.dt-right{text-align:right}table.dataTable td.dt-justify{text-align:justify}table.dataTable td.dt-nowrap{white-space:nowrap}table.dataTable.row-border thead{border-bottom:1px solid rgba(0,0,0,.12)}table.dataTable.row-border tbody tr:first-child th{border-top:none}table.dataTable.row-border tbody tr:first-child td{border-top:none}table.dataTable.row-border tbody tr:last-child td{border-bottom:1px solid rgba(0,0,0,.12)}table.dataTable.row-border tbody th{border-top:1px solid rgba(0,0,0,.12)}table.dataTable.row-border tbody td{border-top:1px solid rgba(0,0,0,.12)}table.dataTable.cell-border tbody tr:first-child th{border-top:none}table.dataTable.cell-border tbody tr:first-child td{border-top:none}table.dataTable.cell-border tbody th{border-top:1px solid rgba(0,0,0,.12);border-right:1px solid rgba(0,0,0,.12)}table.dataTable.cell-border tbody th:last-child{border-right:none}table.dataTable.cell-border tbody td{border-top:1px solid rgba(0,0,0,.12);border-right:1px solid rgba(0,0,0,.12)}table.dataTable.cell-border tbody td:last-child{border-right:none}table.dataTable.stripe tbody tr.odd{background-color:#fff}table.dataTable.stripe tbody tr.odd.selected{background-color:#abb9d3}table.dataTable.hover tbody tr:hover{background-color:#f5f5f5}table.dataTable.hover tbody tr:hover.selected{background-color:#a9b7d1}table.dataTable.hover tbody tr.odd:hover{background-color:#f5f5f5}table.dataTable.hover tbody tr.odd:hover.selected{background-color:#a9b7d1}table.dataTable.hover tbody tr.even:hover{background-color:#f5f5f5}table.dataTable.hover tbody tr.even:hover.selected{background-color:#a9b7d1}table.dataTable.order-column tbody tr>.sorting_1{background-color:#f9f9f9}table.dataTable.order-column tbody tr>.sorting_2{background-color:#f9f9f9}table.dataTable.order-column tbody tr>.sorting_3{background-color:#f9f9f9}table.dataTable.order-column tbody tr.selected>.sorting_1{background-color:#acbad4}table.dataTable.order-column tbody tr.selected>.sorting_2{background-color:#acbad4}table.dataTable.order-column tbody tr.selected>.sorting_3{background-color:#acbad4}table.dataTable.order-column.stripe tbody tr.odd>.sorting_1{background-color:#f1f1f1}table.dataTable.order-column.stripe tbody tr.odd>.sorting_2{background-color:#f3f3f3}table.dataTable.order-column.stripe tbody tr.odd>.sorting_3{background-color:#f5f5f5}table.dataTable.order-column.stripe tbody tr.odd.selected>.sorting_1{background-color:#a6b3cd}table.dataTable.order-column.stripe tbody tr.odd.selected>.sorting_2{background-color:#a7b5ce}table.dataTable.order-column.stripe tbody tr.odd.selected>.sorting_3{background-color:#a9b6d0}table.dataTable.order-column.stripe tbody tr.even>.sorting_1{background-color:#f9f9f9}table.dataTable.order-column.stripe tbody tr.even>.sorting_2{background-color:#fbfbfb}table.dataTable.order-column.stripe tbody tr.even>.sorting_3{background-color:#fdfdfd}table.dataTable.order-column.stripe tbody tr.even.selected>.sorting_1{background-color:#acbad4}table.dataTable.order-column.stripe tbody tr.even.selected>.sorting_2{background-color:#adbbd6}table.dataTable.order-column.stripe tbody tr.even.selected>.sorting_3{background-color:#afbdd8}table.dataTable.order-column.hover tbody tr:hover>.sorting_1{background-color:#eaeaea}table.dataTable.order-column.hover tbody tr:hover>.sorting_2{background-color:#ebebeb}table.dataTable.order-column.hover tbody tr:hover>.sorting_3{background-color:#eee}table.dataTable.order-column.hover tbody tr:hover.selected>.sorting_1{background-color:#a1aec7}table.dataTable.order-column.hover tbody tr:hover.selected>.sorting_2{background-color:#a2afc8}table.dataTable.order-column.hover tbody tr:hover.selected>.sorting_3{background-color:#a4b2cb}table.dataTable.order-column.hover tbody tr.odd:hover>.sorting_1{background-color:#eaeaea}table.dataTable.order-column.hover tbody tr.odd:hover>.sorting_2{background-color:#ebebeb}table.dataTable.order-column.hover tbody tr.odd:hover>.sorting_3{background-color:#eee}table.dataTable.order-column.hover tbody tr.odd:hover.selected>.sorting_1{background-color:#a1aec7}table.dataTable.order-column.hover tbody tr.odd:hover.selected>.sorting_2{background-color:#a2afc8}table.dataTable.order-column.hover tbody tr.odd:hover.selected>.sorting_3{background-color:#a4b2cb}table.dataTable.order-column.hover tbody tr.even:hover>.sorting_1{background-color:#eaeaea}table.dataTable.order-column.hover tbody tr.even:hover>.sorting_2{background-color:#ebebeb}table.dataTable.order-column.hover tbody tr.even:hover>.sorting_3{background-color:#eee}table.dataTable.order-column.hover tbody tr.even:hover.selected>.sorting_1{background-color:#a1aec7}table.dataTable.order-column.hover tbody tr.even:hover.selected>.sorting_2{background-color:#a2afc8}table.dataTable.order-column.hover tbody tr.even:hover.selected>.sorting_3{background-color:#a4b2cb}table.dataTable.no-footer{border-bottom:none}table.dataTable.nowrap th{white-space:nowrap}table.dataTable.nowrap td{white-space:nowrap}table.dataTable.compact thead th{padding:5px 9px}table.dataTable.compact thead td{padding:5px 9px}table.dataTable.compact tfoot th{padding:5px 9px 3px 9px}table.dataTable.compact tfoot td{padding:5px 9px 3px 9px}table.dataTable.compact tbody th{padding:4px 5px}table.dataTable.compact tbody td{padding:4px 5px}.dataTables_wrapper{display:flex;flex:1 0 auto;flex-direction:column;min-height:0}.dataTables_wrapper .top{padding:16px 24px}.dataTables_wrapper .bottom{display:flex;min-height:64px;justify-content:space-between;padding:16px 8px;border-top:1px solid rgba(0,0,0,.12)}.dataTables_wrapper .bottom .left{display:flex;flex:0 0 50%;max-width:50%;align-self:center;padding:0 8px}.dataTables_wrapper .bottom .left .length{display:block}.dataTables_wrapper .bottom .right{display:flex;flex:0 0 50%;max-width:50%;align-self:center;justify-content:flex-end;padding:0 8px}.dataTables_wrapper .bottom .right .info{display:block;align-self:center}.dataTables_wrapper .bottom .right .info .dataTables_info{padding:0 8px;font-weight:600}.dataTables_wrapper .bottom .right .pagination{display:block;align-self:center;white-space:nowrap}.dataTables_wrapper .bottom .right .pagination .dataTables_paginate{padding:0;margin:0!important}.dataTables_wrapper .dataTables_filter{float:right}.dataTables_wrapper .dataTables_filter input{margin-left:.5em;border:1px solid rgba(0,0,0,.12);height:24px;padding:4px 8px}.dataTables_wrapper .dataTables_paginate .paginate_button{background:#fff;color:rgba(0,0,0,.87);border:1px solid rgba(0,0,0,.12);padding:9px 12px;border-radius:2px;cursor:pointer;user-select:none;margin:0 2px}.dataTables_wrapper .dataTables_paginate .paginate_button:hover{box-shadow:inset 999em 0 0 0 rgba(0,0,0,.05);color:rgba(0,0,0,.87)!important;border:1px solid rgba(0,0,0,.12)!important;background:0 0}.dataTables_wrapper .dataTables_paginate .paginate_button:active{box-shadow:inset 999em 0 0 0 rgba(0,0,0,.08),inset 0 1px 3px 0 rgba(0,0,0,.1),0 1px 0 0 rgba(255,255,255,.35)}.dataTables_wrapper .dataTables_paginate .paginate_button.current,.dataTables_wrapper .dataTables_paginate .paginate_button.disabled,.dataTables_wrapper .dataTables_paginate .paginate_button.disabled:active,.dataTables_wrapper .dataTables_paginate .paginate_button.disabled:hover{color:rgba(0,0,0,.54)!important;border-color:rgba(0,0,0,.12)!important;background:#fff!important;box-shadow:none!important;cursor:default}.dataTables_wrapper .dataTables_processing{position:absolute;top:50%;left:50%;width:100%;height:40px;margin-left:-50%;margin-top:-25px;padding-top:20px;text-align:center;font-size:1.2em;background-color:#fff;background:-webkit-gradient(linear,left top,right top,color-stop(0,rgba(255,255,255,0)),color-stop(25%,rgba(255,255,255,.9)),color-stop(75%,rgba(255,255,255,.9)),color-stop(100%,rgba(255,255,255,0)));background:-webkit-linear-gradient(left,rgba(255,255,255,0) 0,rgba(255,255,255,.9) 25%,rgba(255,255,255,.9) 75%,rgba(255,255,255,0) 100%);background:-moz-linear-gradient(left,rgba(255,255,255,0) 0,rgba(255,255,255,.9) 25%,rgba(255,255,255,.9) 75%,rgba(255,255,255,0) 100%);background:-ms-linear-gradient(left,rgba(255,255,255,0) 0,rgba(255,255,255,.9) 25%,rgba(255,255,255,.9) 75%,rgba(255,255,255,0) 100%);background:-o-linear-gradient(left,rgba(255,255,255,0) 0,rgba(255,255,255,.9) 25%,rgba(255,255,255,.9) 75%,rgba(255,255,255,0) 100%);background:linear-gradient(to right,rgba(255,255,255,0) 0,rgba(255,255,255,.9) 25%,rgba(255,255,255,.9) 75%,rgba(255,255,255,0) 100%)}.dataTables_wrapper .dataTables_scroll{display:flex;flex:1 1 0;flex-direction:column;clear:both;min-height:0}.dataTables_wrapper .dataTables_scroll table.dataTable{box-shadow:none}.dataTables_wrapper .dataTables_scroll table.dataTable.row-border thead{border:none}.dataTables_wrapper .dataTables_scroll .dataTables_scrollHead{display:flex;min-height:56px;box-shadow:0 0 0 1px rgba(0,0,0,.095),0 1px 1px 0 rgba(0,0,0,.1),0 2px 1px 0 rgba(0,0,0,.05);background:#fff;overflow:visible!important}.dataTables_wrapper .dataTables_scroll .dataTables_scrollHead tr th:last-child .table-header .column-title{position:relative;left:7px}.dataTables_wrapper .dataTables_scroll .dataTables_scrollBody{display:flex;overflow-x:hidden!important;overflow-y:scroll!important;-webkit-overflow-scrolling:touch}.dataTables_wrapper .dataTables_scroll .dataTables_scrollBody th>.dataTables_sizing{height:0;overflow:hidden;margin:0!important;padding:0!important}.dataTables_wrapper .dataTables_scroll .dataTables_scrollBody td>.dataTables_sizing{height:0;overflow:hidden;margin:0!important;padding:0!important}.dataTables_wrapper.no-footer .dataTables_scrollBody{border-bottom:none}.dataTables_wrapper.no-footer .dataTables_scrollBody table,.dataTables_wrapper.no-footer .dataTables_scrollHead table{border-bottom:none}.dataTables_wrapper:after{visibility:hidden;display:block;content:'';clear:both;height:0}table.dataTable .show-details{padding:5px 10px;font-weight:700}table.dataTable .action-buttons{display:flex;justify-content:center}table.dataTable .action-buttons .button{padding:8px}.fullpage-datatable .dataTables_wrapper{height:100%;max-height:100%}.explorer-11 .fullpage-datatable .dataTables_scroll{flex:1}table.dataTable.dtr-inline.collapsed.dtr-inline.collapsed>tbody>tr>td:first-child,table.dataTable.dtr-inline.collapsed.dtr-inline.collapsed>tbody>tr>th:first-child{padding-left:40px}table.dataTable.dtr-inline.collapsed.dtr-inline.collapsed>tbody>tr>td:first-child:before,table.dataTable.dtr-inline.collapsed.dtr-inline.collapsed>tbody>tr>th:first-child:before{content:'+';width:15px;height:15px;line-height:15px;top:50%;margin-top:-7px;left:8px;color:rgba(0,0,0,.54);background:0 0;border:none;box-shadow:0 0 0 2px rgba(0,0,0,.54);font-weight:700}table.dataTable.dtr-inline.collapsed.dtr-inline.collapsed>tbody>tr.parent>td:first-child:before,table.dataTable.dtr-inline.collapsed.dtr-inline.collapsed>tbody>tr.parent>th:first-child:before{background:0 0}table.dataTable.dtr-inline.collapsed>tbody>tr.child ul{display:block}table.dataTable.dtr-inline.collapsed>tbody>tr.child ul li{display:flex;flex-direction:row;align-items:center;justify-content:flex-start;border-bottom:1px solid rgba(0,0,0,.12);padding:8px 0}table.dataTable.dtr-inline.collapsed>tbody>tr.child ul li:first-child{padding-top:0}table.dataTable.dtr-inline.collapsed>tbody>tr.child ul li:last-child{border-bottom:none;padding-bottom:0}table.dataTable.dtr-inline.collapsed>tbody>tr.child ul li .dtr-title{margin-right:8px}[hljs],hljs{display:block;overflow-x:auto;color:#333;background:#f8f8f8;-webkit-text-size-adjust:none}.diff .hljs-header,.hljs-comment{color:#998;font-style:italic}.css .rule .hljs-keyword,.hljs-keyword,.hljs-request,.hljs-status,.hljs-subst,.hljs-winutils,.nginx .hljs-title{color:#333;font-weight:700}.hljs-hexcolor,.hljs-number,.ruby .hljs-constant{color:teal}.hljs-doctag,.hljs-string,.hljs-tag .hljs-value,.tex .hljs-formula{color:#d14}.hljs-id,.hljs-title,.scss .hljs-preprocessor{color:#900;font-weight:700}.hljs-list .hljs-keyword,.hljs-subst{font-weight:400}.hljs-class .hljs-title,.hljs-type,.tex .hljs-command,.vhdl .hljs-literal{color:#458;font-weight:700}.django .hljs-tag .hljs-keyword,.hljs-rule .hljs-property,.hljs-tag,.hljs-tag .hljs-title{color:navy;font-weight:400}.hljs-attribute,.hljs-name,.hljs-variable,.lisp .hljs-body{color:teal}.hljs-regexp{color:#009926}.clojure .hljs-keyword,.hljs-prompt,.hljs-symbol,.lisp .hljs-keyword,.ruby .hljs-symbol .hljs-string,.scheme .hljs-keyword,.tex .hljs-special{color:#990073}.hljs-built_in{color:#0086b3}.hljs-cdata,.hljs-doctype,.hljs-pi,.hljs-pragma,.hljs-preprocessor,.hljs-shebang{color:#999;font-weight:700}.hljs-deletion{background:#fdd}.hljs-addition{background:#dfd}.diff .hljs-change{background:#0086b3}.hljs-chunk{color:#aaa}nvd3{display:block;width:100%;height:100%}nvd3.remove-x-lines .nv-x .tick line{display:none}nvd3.remove-y-lines .nv-y .tick line{display:none}nvd3.remove-line-stroke .nv-groups path.nv-line{stroke-width:0!important}nvd3.remove-opacity .nv-groups .nv-group{fill-opacity:1!important}nvd3.show-line-points .nv-line .nv-scatter .nv-groups .nv-point{fill-opacity:1!important;stroke-opacity:1!important}.nvd3 text{font-family:Roboto,"Helvetica Neue",Arial,sans-serif}.nvd3 line.nv-guideline{stroke:rgba(0,0,0,.54)}.nvd3 .nv-groups .nv-point.hover{stroke-width:3px!important;fill-opacity:1!important;stroke-opacity:1!important}.nvtooltip{background:0 0;color:#fff;padding:0;border:none}.nvtooltip.gravity-n:after{display:block;position:absolute;content:'';width:0;height:0;left:50%;bottom:100%;margin-left:-5px;border:5px solid transparent;border-bottom-color:rgba(0,0,0,.87)}.nvtooltip.gravity-s:after{display:block;position:absolute;content:'';width:0;height:0;top:100%;left:50%;margin-left:-5px;border:5px solid transparent;border-top-color:rgba(0,0,0,.87)}.nvtooltip.gravity-e:after{display:block;position:absolute;content:'';width:0;height:0;top:50%;right:0;margin-top:-6px;margin-right:-11px;border:6px solid transparent;border-left-color:rgba(0,0,0,.87)}.nvtooltip.gravity-w:after{display:block;position:absolute;content:'';width:0;height:0;top:50%;margin-top:-6px;margin-left:-11px;border:6px solid transparent;border-right-color:rgba(0,0,0,.87)}.nvtooltip table{background:rgba(0,0,0,.87);padding:8px 12px;margin:0;border-radius:2px}.nvtooltip table tbody tr td.legend-color-guide div{border:none}.nvtooltip table tbody tr td:last-child{padding-right:0}.ta-root{display:block}.ta-root .ta-scroll-window.form-control{border:1px solid rgba(0,0,0,.12)}.ta-root.focussed>.ta-scroll-window.form-control{outline:0 solid transparent;border:1px solid rgba(0,0,0,.12);box-shadow:none}.ta-root textarea.ta-editor.ta-html{resize:vertical;width:100%!important;border:1px solid rgba(0,0,0,.12);padding:16px}.ta-root .ta-toolbar{border:1px solid rgba(0,0,0,.12);border-bottom:none;background:#f5f5f5}.ta-root .ta-toolbar .ta-group{display:flex;align-items:center;align-content:center;flex-wrap:wrap}.ta-root .ta-toolbar .ta-group #toolbarCC,.ta-root .ta-toolbar .ta-group #toolbarWC{display:inline-block!important;line-height:24px}.ta-root .ta-toolbar .ta-group .md-button{width:40px;min-width:40px;line-height:14px;height:36px;min-height:36px;padding:6px;margin:4px 0}.ta-root .ta-toolbar .ta-group .md-button i{font-size:20px;width:20px;height:20px;line-height:20px}.ng-cloak,.x-ng-cloak,[data-ng-cloak],[ng-cloak],[ng\:cloak],[x-ng-cloak]{display:none!important}.no-padding{padding:0!important}.no-margin{margin:0!important}.no-radius{border-radius:0}.divider-vertical{background:rgba(0,0,0,.12);height:24px;width:1px;margin:0 8px}.hidden{visibility:hidden;opacity:0}[fill-width]{min-width:100%}[fill-height]{min-height:100%}.full-height{height:100%!important}a img{display:block;outline:0}img{max-width:100%;height:auto;vertical-align:top;border:none}.scrollable{display:block;position:relative;overflow-x:auto;overflow-y:auto;-webkit-overflow-scrolling:touch}.scrollable.only-x{overflow-x:auto;overflow-y:hidden}.scrollable.only-y{overflow-x:hidden;overflow-y:auto}.flex-scrollable{position:relative;overflow-x:auto;overflow-y:auto;-webkit-overflow-scrolling:touch}.flex-scrollable.only-x{overflow-x:auto;overflow-y:hidden}.flex-scrollable.only-y{overflow-x:hidden;overflow-y:auto}.background-image-center{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);z-index:-1}.align-vertical:before{display:inline-block;height:100%;content:'';vertical-align:middle}.align-vertical .align-vertical-bottom,.align-vertical .align-vertical-middle,.align-vertical .align-vertical-top{display:inline-block}.align-vertical .align-vertical-top{vertical-align:top}.align-vertical .align-vertical-middle{vertical-align:middle}.align-vertical .align-vertical-bottom{vertical-align:bottom}.p-0,.padding-0{padding:0}.padding-top-0,.pt-0{padding-top:0}.padding-right-0,.pr-0{padding-right:0}.padding-bottom-0,.pb-0{padding-bottom:0}.padding-left-0,.pl-0{padding-left:0}.padding-horizontal-0,.ph-0{padding-left:0;padding-right:0}.padding-vertical-0,.pv-0{padding-top:0;padding-bottom:0}.p-5,.padding-5{padding:5px}.padding-top-5,.pt-5{padding-top:5px}.padding-right-5,.pr-5{padding-right:5px}.padding-bottom-5,.pb-5{padding-bottom:5px}.padding-left-5,.pl-5{padding-left:5px}.padding-horizontal-5,.ph-5{padding-left:5px;padding-right:5px}.padding-vertical-5,.pv-5{padding-top:5px;padding-bottom:5px}.p-10,.padding-10{padding:10px}.padding-top-10,.pt-10{padding-top:10px}.padding-right-10,.pr-10{padding-right:10px}.padding-bottom-10,.pb-10{padding-bottom:10px}.padding-left-10,.pl-10{padding-left:10px}.padding-horizontal-10,.ph-10{padding-left:10px;padding-right:10px}.padding-vertical-10,.pv-10{padding-top:10px;padding-bottom:10px}.p-15,.padding-15{padding:15px}.padding-top-15,.pt-15{padding-top:15px}.padding-right-15,.pr-15{padding-right:15px}.padding-bottom-15,.pb-15{padding-bottom:15px}.padding-left-15,.pl-15{padding-left:15px}.padding-horizontal-15,.ph-15{padding-left:15px;padding-right:15px}.padding-vertical-15,.pv-15{padding-top:15px;padding-bottom:15px}.p-20,.padding-20{padding:20px}.padding-top-20,.pt-20{padding-top:20px}.padding-right-20,.pr-20{padding-right:20px}.padding-bottom-20,.pb-20{padding-bottom:20px}.padding-left-20,.pl-20{padding-left:20px}.padding-horizontal-20,.ph-20{padding-left:20px;padding-right:20px}.padding-vertical-20,.pv-20{padding-top:20px;padding-bottom:20px}.p-25,.padding-25{padding:25px}.padding-top-25,.pt-25{padding-top:25px}.padding-right-25,.pr-25{padding-right:25px}.padding-bottom-25,.pb-25{padding-bottom:25px}.padding-left-25,.pl-25{padding-left:25px}.padding-horizontal-25,.ph-25{padding-left:25px;padding-right:25px}.padding-vertical-25,.pv-25{padding-top:25px;padding-bottom:25px}.p-30,.padding-30{padding:30px}.padding-top-30,.pt-30{padding-top:30px}.padding-right-30,.pr-30{padding-right:30px}.padding-bottom-30,.pb-30{padding-bottom:30px}.padding-left-30,.pl-30{padding-left:30px}.padding-horizontal-30,.ph-30{padding-left:30px;padding-right:30px}.padding-vertical-30,.pv-30{padding-top:30px;padding-bottom:30px}.p-35,.padding-35{padding:35px}.padding-top-35,.pt-35{padding-top:35px}.padding-right-35,.pr-35{padding-right:35px}.padding-bottom-35,.pb-35{padding-bottom:35px}.padding-left-35,.pl-35{padding-left:35px}.padding-horizontal-35,.ph-35{padding-left:35px;padding-right:35px}.padding-vertical-35,.pv-35{padding-top:35px;padding-bottom:35px}.p-40,.padding-40{padding:40px}.padding-top-40,.pt-40{padding-top:40px}.padding-right-40,.pr-40{padding-right:40px}.padding-bottom-40,.pb-40{padding-bottom:40px}.padding-left-40,.pl-40{padding-left:40px}.padding-horizontal-40,.ph-40{padding-left:40px;padding-right:40px}.padding-vertical-40,.pv-40{padding-top:40px;padding-bottom:40px}.p-45,.padding-45{padding:45px}.padding-top-45,.pt-45{padding-top:45px}.padding-right-45,.pr-45{padding-right:45px}.padding-bottom-45,.pb-45{padding-bottom:45px}.padding-left-45,.pl-45{padding-left:45px}.padding-horizontal-45,.ph-45{padding-left:45px;padding-right:45px}.padding-vertical-45,.pv-45{padding-top:45px;padding-bottom:45px}.p-50,.padding-50{padding:50px}.padding-top-50,.pt-50{padding-top:50px}.padding-right-50,.pr-50{padding-right:50px}.padding-bottom-50,.pb-50{padding-bottom:50px}.padding-left-50,.pl-50{padding-left:50px}.padding-horizontal-50,.ph-50{padding-left:50px;padding-right:50px}.padding-vertical-50,.pv-50{padding-top:50px;padding-bottom:50px}.p-55,.padding-55{padding:55px}.padding-top-55,.pt-55{padding-top:55px}.padding-right-55,.pr-55{padding-right:55px}.padding-bottom-55,.pb-55{padding-bottom:55px}.padding-left-55,.pl-55{padding-left:55px}.padding-horizontal-55,.ph-55{padding-left:55px;padding-right:55px}.padding-vertical-55,.pv-55{padding-top:55px;padding-bottom:55px}.p-60,.padding-60{padding:60px}.padding-top-60,.pt-60{padding-top:60px}.padding-right-60,.pr-60{padding-right:60px}.padding-bottom-60,.pb-60{padding-bottom:60px}.padding-left-60,.pl-60{padding-left:60px}.padding-horizontal-60,.ph-60{padding-left:60px;padding-right:60px}.padding-vertical-60,.pv-60{padding-top:60px;padding-bottom:60px}.p-65,.padding-65{padding:65px}.padding-top-65,.pt-65{padding-top:65px}.padding-right-65,.pr-65{padding-right:65px}.padding-bottom-65,.pb-65{padding-bottom:65px}.padding-left-65,.pl-65{padding-left:65px}.padding-horizontal-65,.ph-65{padding-left:65px;padding-right:65px}.padding-vertical-65,.pv-65{padding-top:65px;padding-bottom:65px}.p-70,.padding-70{padding:70px}.padding-top-70,.pt-70{padding-top:70px}.padding-right-70,.pr-70{padding-right:70px}.padding-bottom-70,.pb-70{padding-bottom:70px}.padding-left-70,.pl-70{padding-left:70px}.padding-horizontal-70,.ph-70{padding-left:70px;padding-right:70px}.padding-vertical-70,.pv-70{padding-top:70px;padding-bottom:70px}.p-75,.padding-75{padding:75px}.padding-top-75,.pt-75{padding-top:75px}.padding-right-75,.pr-75{padding-right:75px}.padding-bottom-75,.pb-75{padding-bottom:75px}.padding-left-75,.pl-75{padding-left:75px}.padding-horizontal-75,.ph-75{padding-left:75px;padding-right:75px}.padding-vertical-75,.pv-75{padding-top:75px;padding-bottom:75px}.p-80,.padding-80{padding:80px}.padding-top-80,.pt-80{padding-top:80px}.padding-right-80,.pr-80{padding-right:80px}.padding-bottom-80,.pb-80{padding-bottom:80px}.padding-left-80,.pl-80{padding-left:80px}.padding-horizontal-80,.ph-80{padding-left:80px;padding-right:80px}.padding-vertical-80,.pv-80{padding-top:80px;padding-bottom:80px}.p-85,.padding-85{padding:85px}.padding-top-85,.pt-85{padding-top:85px}.padding-right-85,.pr-85{padding-right:85px}.padding-bottom-85,.pb-85{padding-bottom:85px}.padding-left-85,.pl-85{padding-left:85px}.padding-horizontal-85,.ph-85{padding-left:85px;padding-right:85px}.padding-vertical-85,.pv-85{padding-top:85px;padding-bottom:85px}.p-90,.padding-90{padding:90px}.padding-top-90,.pt-90{padding-top:90px}.padding-right-90,.pr-90{padding-right:90px}.padding-bottom-90,.pb-90{padding-bottom:90px}.padding-left-90,.pl-90{padding-left:90px}.padding-horizontal-90,.ph-90{padding-left:90px;padding-right:90px}.padding-vertical-90,.pv-90{padding-top:90px;padding-bottom:90px}.p-95,.padding-95{padding:95px}.padding-top-95,.pt-95{padding-top:95px}.padding-right-95,.pr-95{padding-right:95px}.padding-bottom-95,.pb-95{padding-bottom:95px}.padding-left-95,.pl-95{padding-left:95px}.padding-horizontal-95,.ph-95{padding-left:95px;padding-right:95px}.padding-vertical-95,.pv-95{padding-top:95px;padding-bottom:95px}.p-100,.padding-100{padding:100px}.padding-top-100,.pt-100{padding-top:100px}.padding-right-100,.pr-100{padding-right:100px}.padding-bottom-100,.pb-100{padding-bottom:100px}.padding-left-100,.pl-100{padding-left:100px}.padding-horizontal-100,.ph-100{padding-left:100px;padding-right:100px}.padding-vertical-100,.pv-100{padding-top:100px;padding-bottom:100px}.p-8,.padding-8{padding:8px}.padding-top-8,.pt-8{padding-top:8px}.padding-right-8,.pr-8{padding-right:8px}.padding-bottom-8,.pb-8{padding-bottom:8px}.padding-left-8,.pl-8{padding-left:8px}.padding-horizontal-8,.ph-8{padding-left:8px;padding-right:8px}.padding-vertical-8,.pv-8{padding-top:8px;padding-bottom:8px}.p-16,.padding-16{padding:16px}.padding-top-16,.pt-16{padding-top:16px}.padding-right-16,.pr-16{padding-right:16px}.padding-bottom-16,.pb-16{padding-bottom:16px}.padding-left-16,.pl-16{padding-left:16px}.padding-horizontal-16,.ph-16{padding-left:16px;padding-right:16px}.padding-vertical-16,.pv-16{padding-top:16px;padding-bottom:16px}.p-24,.padding-24{padding:24px}.padding-top-24,.pt-24{padding-top:24px}.padding-right-24,.pr-24{padding-right:24px}.padding-bottom-24,.pb-24{padding-bottom:24px}.padding-left-24,.pl-24{padding-left:24px}.padding-horizontal-24,.ph-24{padding-left:24px;padding-right:24px}.padding-vertical-24,.pv-24{padding-top:24px;padding-bottom:24px}.p-32,.padding-32{padding:32px}.padding-top-32,.pt-32{padding-top:32px}.padding-right-32,.pr-32{padding-right:32px}.padding-bottom-32,.pb-32{padding-bottom:32px}.padding-left-32,.pl-32{padding-left:32px}.padding-horizontal-32,.ph-32{padding-left:32px;padding-right:32px}.padding-vertical-32,.pv-32{padding-top:32px;padding-bottom:32px}.p-48,.padding-48{padding:48px}.padding-top-48,.pt-48{padding-top:48px}.padding-right-48,.pr-48{padding-right:48px}.padding-bottom-48,.pb-48{padding-bottom:48px}.padding-left-48,.pl-48{padding-left:48px}.padding-horizontal-48,.ph-48{padding-left:48px;padding-right:48px}.padding-vertical-48,.pv-48{padding-top:48px;padding-bottom:48px}.p-56,.padding-56{padding:56px}.padding-top-56,.pt-56{padding-top:56px}.padding-right-56,.pr-56{padding-right:56px}.padding-bottom-56,.pb-56{padding-bottom:56px}.padding-left-56,.pl-56{padding-left:56px}.padding-horizontal-56,.ph-56{padding-left:56px;padding-right:56px}.padding-vertical-56,.pv-56{padding-top:56px;padding-bottom:56px}.p-64,.padding-64{padding:64px}.padding-top-64,.pt-64{padding-top:64px}.padding-right-64,.pr-64{padding-right:64px}.padding-bottom-64,.pb-64{padding-bottom:64px}.padding-left-64,.pl-64{padding-left:64px}.padding-horizontal-64,.ph-64{padding-left:64px;padding-right:64px}.padding-vertical-64,.pv-64{padding-top:64px;padding-bottom:64px}.p-72,.padding-72{padding:72px}.padding-top-72,.pt-72{padding-top:72px}.padding-right-72,.pr-72{padding-right:72px}.padding-bottom-72,.pb-72{padding-bottom:72px}.padding-left-72,.pl-72{padding-left:72px}.padding-horizontal-72,.ph-72{padding-left:72px;padding-right:72px}.padding-vertical-72,.pv-72{padding-top:72px;padding-bottom:72px}.p-88,.padding-88{padding:88px}.padding-top-88,.pt-88{padding-top:88px}.padding-right-88,.pr-88{padding-right:88px}.padding-bottom-88,.pb-88{padding-bottom:88px}.padding-left-88,.pl-88{padding-left:88px}.padding-horizontal-88,.ph-88{padding-left:88px;padding-right:88px}.padding-vertical-88,.pv-88{padding-top:88px;padding-bottom:88px}.p-96,.padding-96{padding:96px}.padding-top-96,.pt-96{padding-top:96px}.padding-right-96,.pr-96{padding-right:96px}.padding-bottom-96,.pb-96{padding-bottom:96px}.padding-left-96,.pl-96{padding-left:96px}.padding-horizontal-96,.ph-96{padding-left:96px;padding-right:96px}.padding-vertical-96,.pv-96{padding-top:96px;padding-bottom:96px}.m-0,.margin-0{margin:0}.margin-top-0,.mt-0{margin-top:0}.margin-right-0,.mr-0{margin-right:0}.margin-bottom-0,.mb-0{margin-bottom:0}.margin-left-0,.ml-0{margin-left:0}.margin-horizontal-0,.mh-0{margin-left:0;margin-right:0}.margin-vertical-0,.mv-0{margin-top:0;margin-bottom:0}.m-5,.margin-5{margin:5px}.margin-top-5,.mt-5{margin-top:5px}.margin-right-5,.mr-5{margin-right:5px}.margin-bottom-5,.mb-5{margin-bottom:5px}.margin-left-5,.ml-5{margin-left:5px}.margin-horizontal-5,.mh-5{margin-left:5px;margin-right:5px}.margin-vertical-5,.mv-5{margin-top:5px;margin-bottom:5px}.m-10,.margin-10{margin:10px}.margin-top-10,.mt-10{margin-top:10px}.margin-right-10,.mr-10{margin-right:10px}.margin-bottom-10,.mb-10{margin-bottom:10px}.margin-left-10,.ml-10{margin-left:10px}.margin-horizontal-10,.mh-10{margin-left:10px;margin-right:10px}.margin-vertical-10,.mv-10{margin-top:10px;margin-bottom:10px}.m-15,.margin-15{margin:15px}.margin-top-15,.mt-15{margin-top:15px}.margin-right-15,.mr-15{margin-right:15px}.margin-bottom-15,.mb-15{margin-bottom:15px}.margin-left-15,.ml-15{margin-left:15px}.margin-horizontal-15,.mh-15{margin-left:15px;margin-right:15px}.margin-vertical-15,.mv-15{margin-top:15px;margin-bottom:15px}.m-20,.margin-20{margin:20px}.margin-top-20,.mt-20{margin-top:20px}.margin-right-20,.mr-20{margin-right:20px}.margin-bottom-20,.mb-20{margin-bottom:20px}.margin-left-20,.ml-20{margin-left:20px}.margin-horizontal-20,.mh-20{margin-left:20px;margin-right:20px}.margin-vertical-20,.mv-20{margin-top:20px;margin-bottom:20px}.m-25,.margin-25{margin:25px}.margin-top-25,.mt-25{margin-top:25px}.margin-right-25,.mr-25{margin-right:25px}.margin-bottom-25,.mb-25{margin-bottom:25px}.margin-left-25,.ml-25{margin-left:25px}.margin-horizontal-25,.mh-25{margin-left:25px;margin-right:25px}.margin-vertical-25,.mv-25{margin-top:25px;margin-bottom:25px}.m-30,.margin-30{margin:30px}.margin-top-30,.mt-30{margin-top:30px}.margin-right-30,.mr-30{margin-right:30px}.margin-bottom-30,.mb-30{margin-bottom:30px}.margin-left-30,.ml-30{margin-left:30px}.margin-horizontal-30,.mh-30{margin-left:30px;margin-right:30px}.margin-vertical-30,.mv-30{margin-top:30px;margin-bottom:30px}.m-35,.margin-35{margin:35px}.margin-top-35,.mt-35{margin-top:35px}.margin-right-35,.mr-35{margin-right:35px}.margin-bottom-35,.mb-35{margin-bottom:35px}.margin-left-35,.ml-35{margin-left:35px}.margin-horizontal-35,.mh-35{margin-left:35px;margin-right:35px}.margin-vertical-35,.mv-35{margin-top:35px;margin-bottom:35px}.m-40,.margin-40{margin:40px}.margin-top-40,.mt-40{margin-top:40px}.margin-right-40,.mr-40{margin-right:40px}.margin-bottom-40,.mb-40{margin-bottom:40px}.margin-left-40,.ml-40{margin-left:40px}.margin-horizontal-40,.mh-40{margin-left:40px;margin-right:40px}.margin-vertical-40,.mv-40{margin-top:40px;margin-bottom:40px}.m-45,.margin-45{margin:45px}.margin-top-45,.mt-45{margin-top:45px}.margin-right-45,.mr-45{margin-right:45px}.margin-bottom-45,.mb-45{margin-bottom:45px}.margin-left-45,.ml-45{margin-left:45px}.margin-horizontal-45,.mh-45{margin-left:45px;margin-right:45px}.margin-vertical-45,.mv-45{margin-top:45px;margin-bottom:45px}.m-50,.margin-50{margin:50px}.margin-top-50,.mt-50{margin-top:50px}.margin-right-50,.mr-50{margin-right:50px}.margin-bottom-50,.mb-50{margin-bottom:50px}.margin-left-50,.ml-50{margin-left:50px}.margin-horizontal-50,.mh-50{margin-left:50px;margin-right:50px}.margin-vertical-50,.mv-50{margin-top:50px;margin-bottom:50px}.m-55,.margin-55{margin:55px}.margin-top-55,.mt-55{margin-top:55px}.margin-right-55,.mr-55{margin-right:55px}.margin-bottom-55,.mb-55{margin-bottom:55px}.margin-left-55,.ml-55{margin-left:55px}.margin-horizontal-55,.mh-55{margin-left:55px;margin-right:55px}.margin-vertical-55,.mv-55{margin-top:55px;margin-bottom:55px}.m-60,.margin-60{margin:60px}.margin-top-60,.mt-60{margin-top:60px}.margin-right-60,.mr-60{margin-right:60px}.margin-bottom-60,.mb-60{margin-bottom:60px}.margin-left-60,.ml-60{margin-left:60px}.margin-horizontal-60,.mh-60{margin-left:60px;margin-right:60px}.margin-vertical-60,.mv-60{margin-top:60px;margin-bottom:60px}.m-65,.margin-65{margin:65px}.margin-top-65,.mt-65{margin-top:65px}.margin-right-65,.mr-65{margin-right:65px}.margin-bottom-65,.mb-65{margin-bottom:65px}.margin-left-65,.ml-65{margin-left:65px}.margin-horizontal-65,.mh-65{margin-left:65px;margin-right:65px}.margin-vertical-65,.mv-65{margin-top:65px;margin-bottom:65px}.m-70,.margin-70{margin:70px}.margin-top-70,.mt-70{margin-top:70px}.margin-right-70,.mr-70{margin-right:70px}.margin-bottom-70,.mb-70{margin-bottom:70px}.margin-left-70,.ml-70{margin-left:70px}.margin-horizontal-70,.mh-70{margin-left:70px;margin-right:70px}.margin-vertical-70,.mv-70{margin-top:70px;margin-bottom:70px}.m-75,.margin-75{margin:75px}.margin-top-75,.mt-75{margin-top:75px}.margin-right-75,.mr-75{margin-right:75px}.margin-bottom-75,.mb-75{margin-bottom:75px}.margin-left-75,.ml-75{margin-left:75px}.margin-horizontal-75,.mh-75{margin-left:75px;margin-right:75px}.margin-vertical-75,.mv-75{margin-top:75px;margin-bottom:75px}.m-80,.margin-80{margin:80px}.margin-top-80,.mt-80{margin-top:80px}.margin-right-80,.mr-80{margin-right:80px}.margin-bottom-80,.mb-80{margin-bottom:80px}.margin-left-80,.ml-80{margin-left:80px}.margin-horizontal-80,.mh-80{margin-left:80px;margin-right:80px}.margin-vertical-80,.mv-80{margin-top:80px;margin-bottom:80px}.m-85,.margin-85{margin:85px}.margin-top-85,.mt-85{margin-top:85px}.margin-right-85,.mr-85{margin-right:85px}.margin-bottom-85,.mb-85{margin-bottom:85px}.margin-left-85,.ml-85{margin-left:85px}.margin-horizontal-85,.mh-85{margin-left:85px;margin-right:85px}.margin-vertical-85,.mv-85{margin-top:85px;margin-bottom:85px}.m-90,.margin-90{margin:90px}.margin-top-90,.mt-90{margin-top:90px}.margin-right-90,.mr-90{margin-right:90px}.margin-bottom-90,.mb-90{margin-bottom:90px}.margin-left-90,.ml-90{margin-left:90px}.margin-horizontal-90,.mh-90{margin-left:90px;margin-right:90px}.margin-vertical-90,.mv-90{margin-top:90px;margin-bottom:90px}.m-95,.margin-95{margin:95px}.margin-top-95,.mt-95{margin-top:95px}.margin-right-95,.mr-95{margin-right:95px}.margin-bottom-95,.mb-95{margin-bottom:95px}.margin-left-95,.ml-95{margin-left:95px}.margin-horizontal-95,.mh-95{margin-left:95px;margin-right:95px}.margin-vertical-95,.mv-95{margin-top:95px;margin-bottom:95px}.m-100,.margin-100{margin:100px}.margin-top-100,.mt-100{margin-top:100px}.margin-right-100,.mr-100{margin-right:100px}.margin-bottom-100,.mb-100{margin-bottom:100px}.margin-left-100,.ml-100{margin-left:100px}.margin-horizontal-100,.mh-100{margin-left:100px;margin-right:100px}.margin-vertical-100,.mv-100{margin-top:100px;margin-bottom:100px}.m-8,.margin-8{margin:8px}.margin-top-8,.mt-8{margin-top:8px}.margin-right-8,.mr-8{margin-right:8px}.margin-bottom-8,.mb-8{margin-bottom:8px}.margin-left-8,.ml-8{margin-left:8px}.margin-horizontal-8,.mh-8{margin-left:8px;margin-right:8px}.margin-vertical-8,.mv-8{margin-top:8px;margin-bottom:8px}.m-16,.margin-16{margin:16px}.margin-top-16,.mt-16{margin-top:16px}.margin-right-16,.mr-16{margin-right:16px}.margin-bottom-16,.mb-16{margin-bottom:16px}.margin-left-16,.ml-16{margin-left:16px}.margin-horizontal-16,.mh-16{margin-left:16px;margin-right:16px}.margin-vertical-16,.mv-16{margin-top:16px;margin-bottom:16px}.m-24,.margin-24{margin:24px}.margin-top-24,.mt-24{margin-top:24px}.margin-right-24,.mr-24{margin-right:24px}.margin-bottom-24,.mb-24{margin-bottom:24px}.margin-left-24,.ml-24{margin-left:24px}.margin-horizontal-24,.mh-24{margin-left:24px;margin-right:24px}.margin-vertical-24,.mv-24{margin-top:24px;margin-bottom:24px}.m-32,.margin-32{margin:32px}.margin-top-32,.mt-32{margin-top:32px}.margin-right-32,.mr-32{margin-right:32px}.margin-bottom-32,.mb-32{margin-bottom:32px}.margin-left-32,.ml-32{margin-left:32px}.margin-horizontal-32,.mh-32{margin-left:32px;margin-right:32px}.margin-vertical-32,.mv-32{margin-top:32px;margin-bottom:32px}.m-48,.margin-48{margin:48px}.margin-top-48,.mt-48{margin-top:48px}.margin-right-48,.mr-48{margin-right:48px}.margin-bottom-48,.mb-48{margin-bottom:48px}.margin-left-48,.ml-48{margin-left:48px}.margin-horizontal-48,.mh-48{margin-left:48px;margin-right:48px}.margin-vertical-48,.mv-48{margin-top:48px;margin-bottom:48px}.m-56,.margin-56{margin:56px}.margin-top-56,.mt-56{margin-top:56px}.margin-right-56,.mr-56{margin-right:56px}.margin-bottom-56,.mb-56{margin-bottom:56px}.margin-left-56,.ml-56{margin-left:56px}.margin-horizontal-56,.mh-56{margin-left:56px;margin-right:56px}.margin-vertical-56,.mv-56{margin-top:56px;margin-bottom:56px}.m-64,.margin-64{margin:64px}.margin-top-64,.mt-64{margin-top:64px}.margin-right-64,.mr-64{margin-right:64px}.margin-bottom-64,.mb-64{margin-bottom:64px}.margin-left-64,.ml-64{margin-left:64px}.margin-horizontal-64,.mh-64{margin-left:64px;margin-right:64px}.margin-vertical-64,.mv-64{margin-top:64px;margin-bottom:64px}.m-72,.margin-72{margin:72px}.margin-top-72,.mt-72{margin-top:72px}.margin-right-72,.mr-72{margin-right:72px}.margin-bottom-72,.mb-72{margin-bottom:72px}.margin-left-72,.ml-72{margin-left:72px}.margin-horizontal-72,.mh-72{margin-left:72px;margin-right:72px}.margin-vertical-72,.mv-72{margin-top:72px;margin-bottom:72px}.m-88,.margin-88{margin:88px}.margin-top-88,.mt-88{margin-top:88px}.margin-right-88,.mr-88{margin-right:88px}.margin-bottom-88,.mb-88{margin-bottom:88px}.margin-left-88,.ml-88{margin-left:88px}.margin-horizontal-88,.mh-88{margin-left:88px;margin-right:88px}.margin-vertical-88,.mv-88{margin-top:88px;margin-bottom:88px}.m-96,.margin-96{margin:96px}.margin-top-96,.mt-96{margin-top:96px}.margin-right-96,.mr-96{margin-right:96px}.margin-bottom-96,.mb-96{margin-bottom:96px}.margin-left-96,.ml-96{margin-left:96px}.margin-horizontal-96,.mh-96{margin-left:96px;margin-right:96px}.margin-vertical-96,.mv-96{margin-top:96px;margin-bottom:96px}.h-0,.height-0{height:0!important;min-height:0!important;max-height:0!important}.w-0,.width-0{width:0!important;min-width:0!important;max-width:0!important}.h-5,.height-5{height:5px!important;min-height:5px!important;max-height:5px!important}.w-5,.width-5{width:5px!important;min-width:5px!important;max-width:5px!important}.h-10,.height-10{height:10px!important;min-height:10px!important;max-height:10px!important}.w-10,.width-10{width:10px!important;min-width:10px!important;max-width:10px!important}.h-15,.height-15{height:15px!important;min-height:15px!important;max-height:15px!important}.w-15,.width-15{width:15px!important;min-width:15px!important;max-width:15px!important}.h-20,.height-20{height:20px!important;min-height:20px!important;max-height:20px!important}.w-20,.width-20{width:20px!important;min-width:20px!important;max-width:20px!important}.h-25,.height-25{height:25px!important;min-height:25px!important;max-height:25px!important}.w-25,.width-25{width:25px!important;min-width:25px!important;max-width:25px!important}.h-30,.height-30{height:30px!important;min-height:30px!important;max-height:30px!important}.w-30,.width-30{width:30px!important;min-width:30px!important;max-width:30px!important}.h-35,.height-35{height:35px!important;min-height:35px!important;max-height:35px!important}.w-35,.width-35{width:35px!important;min-width:35px!important;max-width:35px!important}.h-40,.height-40{height:40px!important;min-height:40px!important;max-height:40px!important}.w-40,.width-40{width:40px!important;min-width:40px!important;max-width:40px!important}.h-45,.height-45{height:45px!important;min-height:45px!important;max-height:45px!important}.w-45,.width-45{width:45px!important;min-width:45px!important;max-width:45px!important}.h-50,.height-50{height:50px!important;min-height:50px!important;max-height:50px!important}.w-50,.width-50{width:50px!important;min-width:50px!important;max-width:50px!important}.h-55,.height-55{height:55px!important;min-height:55px!important;max-height:55px!important}.w-55,.width-55{width:55px!important;min-width:55px!important;max-width:55px!important}.h-60,.height-60{height:60px!important;min-height:60px!important;max-height:60px!important}.w-60,.width-60{width:60px!important;min-width:60px!important;max-width:60px!important}.h-65,.height-65{height:65px!important;min-height:65px!important;max-height:65px!important}.w-65,.width-65{width:65px!important;min-width:65px!important;max-width:65px!important}.h-70,.height-70{height:70px!important;min-height:70px!important;max-height:70px!important}.w-70,.width-70{width:70px!important;min-width:70px!important;max-width:70px!important}.h-75,.height-75{height:75px!important;min-height:75px!important;max-height:75px!important}.w-75,.width-75{width:75px!important;min-width:75px!important;max-width:75px!important}.h-80,.height-80{height:80px!important;min-height:80px!important;max-height:80px!important}.w-80,.width-80{width:80px!important;min-width:80px!important;max-width:80px!important}.h-85,.height-85{height:85px!important;min-height:85px!important;max-height:85px!important}.w-85,.width-85{width:85px!important;min-width:85px!important;max-width:85px!important}.h-90,.height-90{height:90px!important;min-height:90px!important;max-height:90px!important}.w-90,.width-90{width:90px!important;min-width:90px!important;max-width:90px!important}.h-95,.height-95{height:95px!important;min-height:95px!important;max-height:95px!important}.w-95,.width-95{width:95px!important;min-width:95px!important;max-width:95px!important}.h-100,.height-100{height:100px!important;min-height:100px!important;max-height:100px!important}.w-100,.width-100{width:100px!important;min-width:100px!important;max-width:100px!important}.h-105,.height-105{height:105px!important;min-height:105px!important;max-height:105px!important}.w-105,.width-105{width:105px!important;min-width:105px!important;max-width:105px!important}.h-110,.height-110{height:110px!important;min-height:110px!important;max-height:110px!important}.w-110,.width-110{width:110px!important;min-width:110px!important;max-width:110px!important}.h-115,.height-115{height:115px!important;min-height:115px!important;max-height:115px!important}.w-115,.width-115{width:115px!important;min-width:115px!important;max-width:115px!important}.h-120,.height-120{height:120px!important;min-height:120px!important;max-height:120px!important}.w-120,.width-120{width:120px!important;min-width:120px!important;max-width:120px!important}.h-125,.height-125{height:125px!important;min-height:125px!important;max-height:125px!important}.w-125,.width-125{width:125px!important;min-width:125px!important;max-width:125px!important}.h-130,.height-130{height:130px!important;min-height:130px!important;max-height:130px!important}.w-130,.width-130{width:130px!important;min-width:130px!important;max-width:130px!important}.h-135,.height-135{height:135px!important;min-height:135px!important;max-height:135px!important}.w-135,.width-135{width:135px!important;min-width:135px!important;max-width:135px!important}.h-140,.height-140{height:140px!important;min-height:140px!important;max-height:140px!important}.w-140,.width-140{width:140px!important;min-width:140px!important;max-width:140px!important}.h-145,.height-145{height:145px!important;min-height:145px!important;max-height:145px!important}.w-145,.width-145{width:145px!important;min-width:145px!important;max-width:145px!important}.h-150,.height-150{height:150px!important;min-height:150px!important;max-height:150px!important}.w-150,.width-150{width:150px!important;min-width:150px!important;max-width:150px!important}.h-155,.height-155{height:155px!important;min-height:155px!important;max-height:155px!important}.w-155,.width-155{width:155px!important;min-width:155px!important;max-width:155px!important}.h-160,.height-160{height:160px!important;min-height:160px!important;max-height:160px!important}.w-160,.width-160{width:160px!important;min-width:160px!important;max-width:160px!important}.h-165,.height-165{height:165px!important;min-height:165px!important;max-height:165px!important}.w-165,.width-165{width:165px!important;min-width:165px!important;max-width:165px!important}.h-170,.height-170{height:170px!important;min-height:170px!important;max-height:170px!important}.w-170,.width-170{width:170px!important;min-width:170px!important;max-width:170px!important}.h-175,.height-175{height:175px!important;min-height:175px!important;max-height:175px!important}.w-175,.width-175{width:175px!important;min-width:175px!important;max-width:175px!important}.h-180,.height-180{height:180px!important;min-height:180px!important;max-height:180px!important}.w-180,.width-180{width:180px!important;min-width:180px!important;max-width:180px!important}.h-185,.height-185{height:185px!important;min-height:185px!important;max-height:185px!important}.w-185,.width-185{width:185px!important;min-width:185px!important;max-width:185px!important}.h-190,.height-190{height:190px!important;min-height:190px!important;max-height:190px!important}.w-190,.width-190{width:190px!important;min-width:190px!important;max-width:190px!important}.h-195,.height-195{height:195px!important;min-height:195px!important;max-height:195px!important}.w-195,.width-195{width:195px!important;min-width:195px!important;max-width:195px!important}.h-200,.height-200{height:200px!important;min-height:200px!important;max-height:200px!important}.w-200,.width-200{width:200px!important;min-width:200px!important;max-width:200px!important}.h-205,.height-205{height:205px!important;min-height:205px!important;max-height:205px!important}.w-205,.width-205{width:205px!important;min-width:205px!important;max-width:205px!important}.h-210,.height-210{height:210px!important;min-height:210px!important;max-height:210px!important}.w-210,.width-210{width:210px!important;min-width:210px!important;max-width:210px!important}.h-215,.height-215{height:215px!important;min-height:215px!important;max-height:215px!important}.w-215,.width-215{width:215px!important;min-width:215px!important;max-width:215px!important}.h-220,.height-220{height:220px!important;min-height:220px!important;max-height:220px!important}.w-220,.width-220{width:220px!important;min-width:220px!important;max-width:220px!important}.h-225,.height-225{height:225px!important;min-height:225px!important;max-height:225px!important}.w-225,.width-225{width:225px!important;min-width:225px!important;max-width:225px!important}.h-230,.height-230{height:230px!important;min-height:230px!important;max-height:230px!important}.w-230,.width-230{width:230px!important;min-width:230px!important;max-width:230px!important}.h-235,.height-235{height:235px!important;min-height:235px!important;max-height:235px!important}.w-235,.width-235{width:235px!important;min-width:235px!important;max-width:235px!important}.h-240,.height-240{height:240px!important;min-height:240px!important;max-height:240px!important}.w-240,.width-240{width:240px!important;min-width:240px!important;max-width:240px!important}.h-245,.height-245{height:245px!important;min-height:245px!important;max-height:245px!important}.w-245,.width-245{width:245px!important;min-width:245px!important;max-width:245px!important}.h-250,.height-250{height:250px!important;min-height:250px!important;max-height:250px!important}.w-250,.width-250{width:250px!important;min-width:250px!important;max-width:250px!important}.h-255,.height-255{height:255px!important;min-height:255px!important;max-height:255px!important}.w-255,.width-255{width:255px!important;min-width:255px!important;max-width:255px!important}.h-260,.height-260{height:260px!important;min-height:260px!important;max-height:260px!important}.w-260,.width-260{width:260px!important;min-width:260px!important;max-width:260px!important}.h-265,.height-265{height:265px!important;min-height:265px!important;max-height:265px!important}.w-265,.width-265{width:265px!important;min-width:265px!important;max-width:265px!important}.h-270,.height-270{height:270px!important;min-height:270px!important;max-height:270px!important}.w-270,.width-270{width:270px!important;min-width:270px!important;max-width:270px!important}.h-275,.height-275{height:275px!important;min-height:275px!important;max-height:275px!important}.w-275,.width-275{width:275px!important;min-width:275px!important;max-width:275px!important}.h-280,.height-280{height:280px!important;min-height:280px!important;max-height:280px!important}.w-280,.width-280{width:280px!important;min-width:280px!important;max-width:280px!important}.h-285,.height-285{height:285px!important;min-height:285px!important;max-height:285px!important}.w-285,.width-285{width:285px!important;min-width:285px!important;max-width:285px!important}.h-290,.height-290{height:290px!important;min-height:290px!important;max-height:290px!important}.w-290,.width-290{width:290px!important;min-width:290px!important;max-width:290px!important}.h-295,.height-295{height:295px!important;min-height:295px!important;max-height:295px!important}.w-295,.width-295{width:295px!important;min-width:295px!important;max-width:295px!important}.h-300,.height-300{height:300px!important;min-height:300px!important;max-height:300px!important}.w-300,.width-300{width:300px!important;min-width:300px!important;max-width:300px!important}.h-305,.height-305{height:305px!important;min-height:305px!important;max-height:305px!important}.w-305,.width-305{width:305px!important;min-width:305px!important;max-width:305px!important}.h-310,.height-310{height:310px!important;min-height:310px!important;max-height:310px!important}.w-310,.width-310{width:310px!important;min-width:310px!important;max-width:310px!important}.h-315,.height-315{height:315px!important;min-height:315px!important;max-height:315px!important}.w-315,.width-315{width:315px!important;min-width:315px!important;max-width:315px!important}.h-320,.height-320{height:320px!important;min-height:320px!important;max-height:320px!important}.w-320,.width-320{width:320px!important;min-width:320px!important;max-width:320px!important}.h-325,.height-325{height:325px!important;min-height:325px!important;max-height:325px!important}.w-325,.width-325{width:325px!important;min-width:325px!important;max-width:325px!important}.h-330,.height-330{height:330px!important;min-height:330px!important;max-height:330px!important}.w-330,.width-330{width:330px!important;min-width:330px!important;max-width:330px!important}.h-335,.height-335{height:335px!important;min-height:335px!important;max-height:335px!important}.w-335,.width-335{width:335px!important;min-width:335px!important;max-width:335px!important}.h-340,.height-340{height:340px!important;min-height:340px!important;max-height:340px!important}.w-340,.width-340{width:340px!important;min-width:340px!important;max-width:340px!important}.h-345,.height-345{height:345px!important;min-height:345px!important;max-height:345px!important}.w-345,.width-345{width:345px!important;min-width:345px!important;max-width:345px!important}.h-350,.height-350{height:350px!important;min-height:350px!important;max-height:350px!important}.w-350,.width-350{width:350px!important;min-width:350px!important;max-width:350px!important}.h-355,.height-355{height:355px!important;min-height:355px!important;max-height:355px!important}.w-355,.width-355{width:355px!important;min-width:355px!important;max-width:355px!important}.h-360,.height-360{height:360px!important;min-height:360px!important;max-height:360px!important}.w-360,.width-360{width:360px!important;min-width:360px!important;max-width:360px!important}.h-365,.height-365{height:365px!important;min-height:365px!important;max-height:365px!important}.w-365,.width-365{width:365px!important;min-width:365px!important;max-width:365px!important}.h-370,.height-370{height:370px!important;min-height:370px!important;max-height:370px!important}.w-370,.width-370{width:370px!important;min-width:370px!important;max-width:370px!important}.h-375,.height-375{height:375px!important;min-height:375px!important;max-height:375px!important}.w-375,.width-375{width:375px!important;min-width:375px!important;max-width:375px!important}.h-380,.height-380{height:380px!important;min-height:380px!important;max-height:380px!important}.w-380,.width-380{width:380px!important;min-width:380px!important;max-width:380px!important}.h-385,.height-385{height:385px!important;min-height:385px!important;max-height:385px!important}.w-385,.width-385{width:385px!important;min-width:385px!important;max-width:385px!important}.h-390,.height-390{height:390px!important;min-height:390px!important;max-height:390px!important}.w-390,.width-390{width:390px!important;min-width:390px!important;max-width:390px!important}.h-395,.height-395{height:395px!important;min-height:395px!important;max-height:395px!important}.w-395,.width-395{width:395px!important;min-width:395px!important;max-width:395px!important}.h-400,.height-400{height:400px!important;min-height:400px!important;max-height:400px!important}.w-400,.width-400{width:400px!important;min-width:400px!important;max-width:400px!important}.h-405,.height-405{height:405px!important;min-height:405px!important;max-height:405px!important}.w-405,.width-405{width:405px!important;min-width:405px!important;max-width:405px!important}.h-410,.height-410{height:410px!important;min-height:410px!important;max-height:410px!important}.w-410,.width-410{width:410px!important;min-width:410px!important;max-width:410px!important}.h-415,.height-415{height:415px!important;min-height:415px!important;max-height:415px!important}.w-415,.width-415{width:415px!important;min-width:415px!important;max-width:415px!important}.h-420,.height-420{height:420px!important;min-height:420px!important;max-height:420px!important}.w-420,.width-420{width:420px!important;min-width:420px!important;max-width:420px!important}.h-425,.height-425{height:425px!important;min-height:425px!important;max-height:425px!important}.w-425,.width-425{width:425px!important;min-width:425px!important;max-width:425px!important}.h-430,.height-430{height:430px!important;min-height:430px!important;max-height:430px!important}.w-430,.width-430{width:430px!important;min-width:430px!important;max-width:430px!important}.h-435,.height-435{height:435px!important;min-height:435px!important;max-height:435px!important}.w-435,.width-435{width:435px!important;min-width:435px!important;max-width:435px!important}.h-440,.height-440{height:440px!important;min-height:440px!important;max-height:440px!important}.w-440,.width-440{width:440px!important;min-width:440px!important;max-width:440px!important}.h-445,.height-445{height:445px!important;min-height:445px!important;max-height:445px!important}.w-445,.width-445{width:445px!important;min-width:445px!important;max-width:445px!important}.h-450,.height-450{height:450px!important;min-height:450px!important;max-height:450px!important}.w-450,.width-450{width:450px!important;min-width:450px!important;max-width:450px!important}.h-455,.height-455{height:455px!important;min-height:455px!important;max-height:455px!important}.w-455,.width-455{width:455px!important;min-width:455px!important;max-width:455px!important}.h-460,.height-460{height:460px!important;min-height:460px!important;max-height:460px!important}.w-460,.width-460{width:460px!important;min-width:460px!important;max-width:460px!important}.h-465,.height-465{height:465px!important;min-height:465px!important;max-height:465px!important}.w-465,.width-465{width:465px!important;min-width:465px!important;max-width:465px!important}.h-470,.height-470{height:470px!important;min-height:470px!important;max-height:470px!important}.w-470,.width-470{width:470px!important;min-width:470px!important;max-width:470px!important}.h-475,.height-475{height:475px!important;min-height:475px!important;max-height:475px!important}.w-475,.width-475{width:475px!important;min-width:475px!important;max-width:475px!important}.h-480,.height-480{height:480px!important;min-height:480px!important;max-height:480px!important}.w-480,.width-480{width:480px!important;min-width:480px!important;max-width:480px!important}.h-485,.height-485{height:485px!important;min-height:485px!important;max-height:485px!important}.w-485,.width-485{width:485px!important;min-width:485px!important;max-width:485px!important}.h-490,.height-490{height:490px!important;min-height:490px!important;max-height:490px!important}.w-490,.width-490{width:490px!important;min-width:490px!important;max-width:490px!important}.h-495,.height-495{height:495px!important;min-height:495px!important;max-height:495px!important}.w-495,.width-495{width:495px!important;min-width:495px!important;max-width:495px!important}.h-500,.height-500{height:500px!important;min-height:500px!important;max-height:500px!important}.w-500,.width-500{width:500px!important;min-width:500px!important;max-width:500px!important}.h-8,.height-8{height:8px!important;min-height:8px!important;max-height:8px!important}.w-8,.width-8{width:8px!important;min-width:8px!important;max-width:8px!important}.h-16,.height-16{height:16px!important;min-height:16px!important;max-height:16px!important}.w-16,.width-16{width:16px!important;min-width:16px!important;max-width:16px!important}.h-24,.height-24{height:24px!important;min-height:24px!important;max-height:24px!important}.w-24,.width-24{width:24px!important;min-width:24px!important;max-width:24px!important}.h-32,.height-32{height:32px!important;min-height:32px!important;max-height:32px!important}.w-32,.width-32{width:32px!important;min-width:32px!important;max-width:32px!important}.h-48,.height-48{height:48px!important;min-height:48px!important;max-height:48px!important}.w-48,.width-48{width:48px!important;min-width:48px!important;max-width:48px!important}.h-56,.height-56{height:56px!important;min-height:56px!important;max-height:56px!important}.w-56,.width-56{width:56px!important;min-width:56px!important;max-width:56px!important}.h-64,.height-64{height:64px!important;min-height:64px!important;max-height:64px!important}.w-64,.width-64{width:64px!important;min-width:64px!important;max-width:64px!important}.h-72,.height-72{height:72px!important;min-height:72px!important;max-height:72px!important}.w-72,.width-72{width:72px!important;min-width:72px!important;max-width:72px!important}.h-88,.height-88{height:88px!important;min-height:88px!important;max-height:88px!important}.w-88,.width-88{width:88px!important;min-width:88px!important;max-width:88px!important}.h-96,.height-96{height:96px!important;min-height:96px!important;max-height:96px!important}.w-96,.width-96{width:96px!important;min-width:96px!important;max-width:96px!important}.h-104,.height-104{height:104px!important;min-height:104px!important;max-height:104px!important}.w-104,.width-104{width:104px!important;min-width:104px!important;max-width:104px!important}.h-112,.height-112{height:112px!important;min-height:112px!important;max-height:112px!important}.w-112,.width-112{width:112px!important;min-width:112px!important;max-width:112px!important}.h-128,.height-128{height:128px!important;min-height:128px!important;max-height:128px!important}.w-128,.width-128{width:128px!important;min-width:128px!important;max-width:128px!important}.h-136,.height-136{height:136px!important;min-height:136px!important;max-height:136px!important}.w-136,.width-136{width:136px!important;min-width:136px!important;max-width:136px!important}.h-144,.height-144{height:144px!important;min-height:144px!important;max-height:144px!important}.w-144,.width-144{width:144px!important;min-width:144px!important;max-width:144px!important}.h-152,.height-152{height:152px!important;min-height:152px!important;max-height:152px!important}.w-152,.width-152{width:152px!important;min-width:152px!important;max-width:152px!important}.h-168,.height-168{height:168px!important;min-height:168px!important;max-height:168px!important}.w-168,.width-168{width:168px!important;min-width:168px!important;max-width:168px!important}.h-176,.height-176{height:176px!important;min-height:176px!important;max-height:176px!important}.w-176,.width-176{width:176px!important;min-width:176px!important;max-width:176px!important}.h-184,.height-184{height:184px!important;min-height:184px!important;max-height:184px!important}.w-184,.width-184{width:184px!important;min-width:184px!important;max-width:184px!important}.h-192,.height-192{height:192px!important;min-height:192px!important;max-height:192px!important}.w-192,.width-192{width:192px!important;min-width:192px!important;max-width:192px!important}.h-208,.height-208{height:208px!important;min-height:208px!important;max-height:208px!important}.w-208,.width-208{width:208px!important;min-width:208px!important;max-width:208px!important}.h-216,.height-216{height:216px!important;min-height:216px!important;max-height:216px!important}.w-216,.width-216{width:216px!important;min-width:216px!important;max-width:216px!important}.h-224,.height-224{height:224px!important;min-height:224px!important;max-height:224px!important}.w-224,.width-224{width:224px!important;min-width:224px!important;max-width:224px!important}.h-232,.height-232{height:232px!important;min-height:232px!important;max-height:232px!important}.w-232,.width-232{width:232px!important;min-width:232px!important;max-width:232px!important}.h-248,.height-248{height:248px!important;min-height:248px!important;max-height:248px!important}.w-248,.width-248{width:248px!important;min-width:248px!important;max-width:248px!important}.h-256,.height-256{height:256px!important;min-height:256px!important;max-height:256px!important}.w-256,.width-256{width:256px!important;min-width:256px!important;max-width:256px!important}.h-264,.height-264{height:264px!important;min-height:264px!important;max-height:264px!important}.w-264,.width-264{width:264px!important;min-width:264px!important;max-width:264px!important}.h-272,.height-272{height:272px!important;min-height:272px!important;max-height:272px!important}.w-272,.width-272{width:272px!important;min-width:272px!important;max-width:272px!important}.h-288,.height-288{height:288px!important;min-height:288px!important;max-height:288px!important}.w-288,.width-288{width:288px!important;min-width:288px!important;max-width:288px!important}.h-296,.height-296{height:296px!important;min-height:296px!important;max-height:296px!important}.w-296,.width-296{width:296px!important;min-width:296px!important;max-width:296px!important}.h-304,.height-304{height:304px!important;min-height:304px!important;max-height:304px!important}.w-304,.width-304{width:304px!important;min-width:304px!important;max-width:304px!important}.h-312,.height-312{height:312px!important;min-height:312px!important;max-height:312px!important}.w-312,.width-312{width:312px!important;min-width:312px!important;max-width:312px!important}.h-328,.height-328{height:328px!important;min-height:328px!important;max-height:328px!important}.w-328,.width-328{width:328px!important;min-width:328px!important;max-width:328px!important}.h-336,.height-336{height:336px!important;min-height:336px!important;max-height:336px!important}.w-336,.width-336{width:336px!important;min-width:336px!important;max-width:336px!important}.h-344,.height-344{height:344px!important;min-height:344px!important;max-height:344px!important}.w-344,.width-344{width:344px!important;min-width:344px!important;max-width:344px!important}.h-352,.height-352{height:352px!important;min-height:352px!important;max-height:352px!important}.w-352,.width-352{width:352px!important;min-width:352px!important;max-width:352px!important}.h-368,.height-368{height:368px!important;min-height:368px!important;max-height:368px!important}.w-368,.width-368{width:368px!important;min-width:368px!important;max-width:368px!important}.h-376,.height-376{height:376px!important;min-height:376px!important;max-height:376px!important}.w-376,.width-376{width:376px!important;min-width:376px!important;max-width:376px!important}.h-384,.height-384{height:384px!important;min-height:384px!important;max-height:384px!important}.w-384,.width-384{width:384px!important;min-width:384px!important;max-width:384px!important}.h-392,.height-392{height:392px!important;min-height:392px!important;max-height:392px!important}.w-392,.width-392{width:392px!important;min-width:392px!important;max-width:392px!important}.h-408,.height-408{height:408px!important;min-height:408px!important;max-height:408px!important}.w-408,.width-408{width:408px!important;min-width:408px!important;max-width:408px!important}.h-416,.height-416{height:416px!important;min-height:416px!important;max-height:416px!important}.w-416,.width-416{width:416px!important;min-width:416px!important;max-width:416px!important}.h-424,.height-424{height:424px!important;min-height:424px!important;max-height:424px!important}.w-424,.width-424{width:424px!important;min-width:424px!important;max-width:424px!important}.h-432,.height-432{height:432px!important;min-height:432px!important;max-height:432px!important}.w-432,.width-432{width:432px!important;min-width:432px!important;max-width:432px!important}.h-448,.height-448{height:448px!important;min-height:448px!important;max-height:448px!important}.w-448,.width-448{width:448px!important;min-width:448px!important;max-width:448px!important}.h-456,.height-456{height:456px!important;min-height:456px!important;max-height:456px!important}.w-456,.width-456{width:456px!important;min-width:456px!important;max-width:456px!important}.h-464,.height-464{height:464px!important;min-height:464px!important;max-height:464px!important}.w-464,.width-464{width:464px!important;min-width:464px!important;max-width:464px!important}.h-472,.height-472{height:472px!important;min-height:472px!important;max-height:472px!important}.w-472,.width-472{width:472px!important;min-width:472px!important;max-width:472px!important}.h-488,.height-488{height:488px!important;min-height:488px!important;max-height:488px!important}.w-488,.width-488{width:488px!important;min-width:488px!important;max-width:488px!important}.h-496,.height-496{height:496px!important;min-height:496px!important;max-height:496px!important}.w-496,.width-496{width:496px!important;min-width:496px!important;max-width:496px!important}.h-504,.height-504{height:504px!important;min-height:504px!important;max-height:504px!important}.w-504,.width-504{width:504px!important;min-width:504px!important;max-width:504px!important}.h-512,.height-512{height:512px!important;min-height:512px!important;max-height:512px!important}.w-512,.width-512{width:512px!important;min-width:512px!important;max-width:512px!important}.h-528,.height-528{height:528px!important;min-height:528px!important;max-height:528px!important}.w-528,.width-528{width:528px!important;min-width:528px!important;max-width:528px!important}.h-536,.height-536{height:536px!important;min-height:536px!important;max-height:536px!important}.w-536,.width-536{width:536px!important;min-width:536px!important;max-width:536px!important}.h-544,.height-544{height:544px!important;min-height:544px!important;max-height:544px!important}.w-544,.width-544{width:544px!important;min-width:544px!important;max-width:544px!important}.h-552,.height-552{height:552px!important;min-height:552px!important;max-height:552px!important}.w-552,.width-552{width:552px!important;min-width:552px!important;max-width:552px!important}.h-568,.height-568{height:568px!important;min-height:568px!important;max-height:568px!important}.w-568,.width-568{width:568px!important;min-width:568px!important;max-width:568px!important}.h-576,.height-576{height:576px!important;min-height:576px!important;max-height:576px!important}.w-576,.width-576{width:576px!important;min-width:576px!important;max-width:576px!important}.h-584,.height-584{height:584px!important;min-height:584px!important;max-height:584px!important}.w-584,.width-584{width:584px!important;min-width:584px!important;max-width:584px!important}.h-592,.height-592{height:592px!important;min-height:592px!important;max-height:592px!important}.w-592,.width-592{width:592px!important;min-width:592px!important;max-width:592px!important}.h-608,.height-608{height:608px!important;min-height:608px!important;max-height:608px!important}.w-608,.width-608{width:608px!important;min-width:608px!important;max-width:608px!important}.h-616,.height-616{height:616px!important;min-height:616px!important;max-height:616px!important}.w-616,.width-616{width:616px!important;min-width:616px!important;max-width:616px!important}.h-624,.height-624{height:624px!important;min-height:624px!important;max-height:624px!important}.w-624,.width-624{width:624px!important;min-width:624px!important;max-width:624px!important}.h-632,.height-632{height:632px!important;min-height:632px!important;max-height:632px!important}.w-632,.width-632{width:632px!important;min-width:632px!important;max-width:632px!important}.h-648,.height-648{height:648px!important;min-height:648px!important;max-height:648px!important}.w-648,.width-648{width:648px!important;min-width:648px!important;max-width:648px!important}.h-656,.height-656{height:656px!important;min-height:656px!important;max-height:656px!important}.w-656,.width-656{width:656px!important;min-width:656px!important;max-width:656px!important}.h-664,.height-664{height:664px!important;min-height:664px!important;max-height:664px!important}.w-664,.width-664{width:664px!important;min-width:664px!important;max-width:664px!important}.h-672,.height-672{height:672px!important;min-height:672px!important;max-height:672px!important}.w-672,.width-672{width:672px!important;min-width:672px!important;max-width:672px!important}.h-688,.height-688{height:688px!important;min-height:688px!important;max-height:688px!important}.w-688,.width-688{width:688px!important;min-width:688px!important;max-width:688px!important}.h-696,.height-696{height:696px!important;min-height:696px!important;max-height:696px!important}.w-696,.width-696{width:696px!important;min-width:696px!important;max-width:696px!important}.h-704,.height-704{height:704px!important;min-height:704px!important;max-height:704px!important}.w-704,.width-704{width:704px!important;min-width:704px!important;max-width:704px!important}.h-712,.height-712{height:712px!important;min-height:712px!important;max-height:712px!important}.w-712,.width-712{width:712px!important;min-width:712px!important;max-width:712px!important}.h-728,.height-728{height:728px!important;min-height:728px!important;max-height:728px!important}.w-728,.width-728{width:728px!important;min-width:728px!important;max-width:728px!important}.h-736,.height-736{height:736px!important;min-height:736px!important;max-height:736px!important}.w-736,.width-736{width:736px!important;min-width:736px!important;max-width:736px!important}.h-744,.height-744{height:744px!important;min-height:744px!important;max-height:744px!important}.w-744,.width-744{width:744px!important;min-width:744px!important;max-width:744px!important}.h-752,.height-752{height:752px!important;min-height:752px!important;max-height:752px!important}.w-752,.width-752{width:752px!important;min-width:752px!important;max-width:752px!important}.h-768,.height-768{height:768px!important;min-height:768px!important;max-height:768px!important}.w-768,.width-768{width:768px!important;min-width:768px!important;max-width:768px!important}.h-776,.height-776{height:776px!important;min-height:776px!important;max-height:776px!important}.w-776,.width-776{width:776px!important;min-width:776px!important;max-width:776px!important}.h-784,.height-784{height:784px!important;min-height:784px!important;max-height:784px!important}.w-784,.width-784{width:784px!important;min-width:784px!important;max-width:784px!important}.h-792,.height-792{height:792px!important;min-height:792px!important;max-height:792px!important}.w-792,.width-792{width:792px!important;min-width:792px!important;max-width:792px!important}.b,.border{border:1px solid rgba(0,0,0,.12)}.border-top,.bt{border-top:1px solid rgba(0,0,0,.12)}.border-right,.br{border-right:1px solid rgba(0,0,0,.12)}.bb,.border-bottom{border-bottom:1px solid rgba(0,0,0,.12)}.bl,.border-left{border-left:1px solid rgba(0,0,0,.12)}.bh,.border-horizontal{border-left:1px solid rgba(0,0,0,.12);border-right:1px solid rgba(0,0,0,.12)}.border-vertical,.bv{border-top:1px solid rgba(0,0,0,.12);border-bottom:1px solid rgba(0,0,0,.12)}.brad-1{border-radius:1px}.brad-2{border-radius:2px}.brad-3{border-radius:3px}.brad-4{border-radius:4px}.brad-5{border-radius:5px}.brad-6{border-radius:6px}.brad-7{border-radius:7px}.brad-8{border-radius:8px}.brad-9{border-radius:9px}.brad-10{border-radius:10px}.brad-11{border-radius:11px}.brad-12{border-radius:12px}@media all{.page-break{display:none}}@media print{.page-break{display:block;break-after:always;page-break-after:always}#main #vertical-navigation{display:none}#main #toolbar{display:none}#main #quick-panel{display:none}#main #content{position:relative!important;top:0!important;right:0!important;bottom:0!important;left:0!important;background:0 0!important}ms-theme-options{display:none}.ps-scrollbar-x-rail,.ps-scrollbar-y-rail{display:none!important}.printable{overflow:visible!important}.printable .template-layout{display:inline!important}}.advanced-search-container{border-bottom:1px rgba(0,0,0,.12) solid}.advanced-search-conditions{border-bottom:1px rgba(0,0,0,.12) solid;padding:4px 0}.advanced-search-conditions .errors{font-size:12px;color:#dd2c00;margin-top:10px}.advanced-search-conditions .advanced-search-chips md-chips-wrap{box-shadow:none}.advanced-search-conditions .advanced-search-chips md-chip{position:relative}.advanced-search-conditions .advanced-search-chips md-chip .md-chip-content md-chip-template span p.filter-text{display:inline-block;margin:0}.advanced-search-conditions .advanced-search-chips md-chip .md-chip-remove-container{position:absolute;right:4px;top:4px;margin-right:0;height:24px}.advanced-search-conditions .advanced-search-chips md-chip .md-chip-remove-container button.remove-filter{position:relative;height:24px;width:24px;line-height:30px;text-align:center;border-radius:50%;border:none;box-shadow:none;padding:0;margin:0;transition:background .15s linear;display:block}.advanced-search-conditions .advanced-search-chips md-chip .md-chip-remove-container button.remove-filter md-icon{position:absolute;top:50%;left:50%;transform:translate3d(-50%,-50%,0);color:#616161}.advanced-search-conditions .advanced-search-chips md-chip .md-chip-remove-container button.remove-filter md-icon:focus,.advanced-search-conditions .advanced-search-chips md-chip .md-chip-remove-container button.remove-filter md-icon:hover{color:rgba(255,0,0,.8)}.advanced-search-conditions .advanced-search-chips md-chips-wrap.md-removable md-chip md-chip-template{padding-right:5px}.advanced-search-bar{padding:10px 0}.advanced-search-bar md-input-container.no-errors{font-size:12px;transition:0s none;-webkit-transition:0s none;animation:0s none;-webkit-animation:0s none}.advanced-search-bar md-input-container.no-errors input{font-family:Arial Unicode MS,Arial,Helvetica}.advanced-search-bar md-input-container.no-errors .md-errors-spacer{min-height:0}md-option div div.operators-list{display:table}md-option div div.operators-list span{display:table-cell}md-option div div.operators-list span.operator-symbol{display:table-cell;font-size:14px;width:30px}.advanced-search-bar mdp-date-picker button{margin:0!important}.advanced-search-bar mdp-date-picker md-input-container{flex:1;margin:0}.advanced-search-bar mdp-date-picker md-input-container label{font-size:12px}.advanced-search-bar mdp-date-picker md-input-container .md-errors-spacer{min-height:0}.advanced-search-bar div md-date-range{font-size:12px;margin-left:10px}.advanced-search-bar div.autocomplete-input md-icon{margin:8px 8px 8px 0}.advanced-search-bar div.autocomplete-input md-autocomplete{font-size:12px!important}.advanced-search-bar div.autocomplete-input md-autocomplete md-autocomplete-wrap{height:0}.advanced-search-bar div.autocomplete-input md-autocomplete md-autocomplete-wrap md-input-container{margin:0}.advanced-search-bar div.autocomplete-input md-autocomplete md-autocomplete-wrap md-input-container input[type=search]{padding:0!important}.advanced-search-bar div.autocomplete-input md-autocomplete md-autocomplete-wrap md-input-container div.md-errors-spacer{min-height:0}md-toolbar.advanced-search-dialog-header{background-image:url(/assets/images/backgrounds/header-bg.png);background-position:top}.md-autocomplete-suggestions-container li .highlight,.md-autocomplete-suggestions-container.md-default-theme li .highlight{color:#ca1d1d;font-weight:700}.chip-disabled{opacity:.4}.ms-card{display:flex;flex-direction:row;padding:8px}.ms-card .ms-card-content-wrapper{position:relative;overflow:hidden;width:100%;max-width:400px;border-radius:2px;background:#fff;box-shadow:0 3px 1px -2px rgba(0,0,0,.14),0 2px 2px 0 rgba(0,0,0,.098),0 1px 5px 0 rgba(0,0,0,.084)}.ms-card .template-1 .media .image{width:100%;border-radius:2px 2px 0 0}.ms-card .template-10 .media{width:80px;min-width:80px;max-width:80px}.ms-card .template-2 .header .avatar .image{display:block;width:40px;height:40px;border-radius:20px}.ms-card .template-2 .media .image{width:100%}.ms-card .template-4 .info{position:absolute;right:0;bottom:0;left:0;z-index:2;background:rgba(0,0,0,.54)}.ms-card .template-4 .media{z-index:1}.ms-card .template-4 .media .image{width:100%}.ms-card .template-5 .media{width:80px;min-width:80px;max-width:80px}.ms-card .template-5 .info,.ms-card .template-5 .media{-ms-flex:0 1 auto}.ms-card .template-8 .media .image{width:100%;border-radius:2px 2px 0 0}.ms-card .template-9 .header .avatar .image{display:block;width:40px;height:40px;border-radius:20px}.ms-card .template-9 .media .image{width:100%}md-tooltip.client-side-logging-tooltip div.md-content{height:auto;max-width:200px;white-space:normal;text-align:center}md-list-item .md-list-item-text p.ms-dual-multiselect-line-xs{font-size:10px!important;padding-top:5px}md-list-item md-icon.hidden{visibility:hidden}md-icon.add-disabled{cursor:default!important;opacity:.4}md-list-item.read-only-mode{cursor:none!important}.ms-form-wizard{background:#fff;box-shadow:0 1px 3px 0 rgba(0,0,0,.2),0 1px 1px 0 rgba(0,0,0,.14),0 2px 1px -1px rgba(0,0,0,.12)}.ms-form-wizard md-tabs md-tabs-wrapper{box-shadow:0 1px 3px 0 rgba(0,0,0,.2),0 1px 1px 0 rgba(0,0,0,.14),0 2px 1px -1px rgba(0,0,0,.12)}.ms-form-wizard md-tabs md-tabs-wrapper md-tabs-canvas{height:72px}.ms-form-wizard md-tabs md-tabs-wrapper md-tabs-canvas md-pagination-wrapper{height:72px}.ms-form-wizard md-tabs md-tabs-wrapper md-tabs-canvas md-pagination-wrapper md-tab-item{opacity:1!important;padding:24px}.ms-form-wizard md-tabs md-tabs-wrapper md-tabs-canvas md-pagination-wrapper md-tab-item:before{content:'';display:block;position:absolute;top:50%;left:0;right:50%;border-bottom:1px solid rgba(0,0,0,.12);z-index:8}.ms-form-wizard md-tabs md-tabs-wrapper md-tabs-canvas md-pagination-wrapper md-tab-item:after{content:'';display:block;position:absolute;top:50%;left:50%;right:0;border-bottom:1px solid rgba(0,0,0,.12);z-index:8}.ms-form-wizard md-tabs md-tabs-wrapper md-tabs-canvas md-pagination-wrapper md-tab-item:first-of-type:before{display:none}.ms-form-wizard md-tabs md-tabs-wrapper md-tabs-canvas md-pagination-wrapper md-tab-item:last-of-type:after{display:none}.ms-form-wizard md-tabs md-tabs-wrapper md-tabs-canvas md-pagination-wrapper md-tab-item.md-disabled .ms-form-wizard-step-label .ms-form-wizard-step-number{background:rgba(0,0,0,.12)!important}.ms-form-wizard md-tabs md-tabs-wrapper md-tabs-canvas md-pagination-wrapper md-tab-item .md-ripple-container{z-index:11}.ms-form-wizard md-tabs md-tabs-wrapper md-tabs-canvas md-ink-bar{display:none!important}.ms-form-wizard .ms-form-wizard-step-label{display:inline-block;position:relative;background:#fff;z-index:10;padding:0 16px;line-height:24px}.ms-form-wizard .ms-form-wizard-step-label .ms-form-wizard-step-number{display:inline-block;vertical-align:middle;width:24px;height:24px;line-height:24px;font-size:14px;margin-right:12px;border-radius:50%;color:#fff!important}.ms-form-wizard .ms-form-wizard-step-label .ms-form-wizard-step-number i{line-height:24px!important}.ms-form-wizard .ms-form-wizard-step-label .ms-form-wizard-step-text{display:inline-block;vertical-align:middle;position:relative;line-height:24px}.ms-form-wizard .ms-form-wizard-form{padding:24px 16px}.ms-form-wizard .navigation{padding:16px}.ms-form-wizard .navigation .steps{display:flex;align-items:center;justify-content:center;padding:0 16px}.ms-form-wizard .navigation .steps span{width:5px;height:5px;margin:0 4px;border-radius:50%}.ms-form-wizard .navigation .steps span:not(.md-accent-bg){background:rgba(0,0,0,.12)}.ms-form-wizard .navigation .steps span.selected{width:8px;height:8px}ms-info-bar{display:block;position:relative;width:100%;height:44px;background-color:#e91e63;z-index:99998;box-shadow:0 1px 5px 0 rgba(0,0,0,.2),0 2px 2px 0 rgba(0,0,0,.14),0 3px 1px -2px rgba(0,0,0,.12)}ms-info-bar #ms-info-bar-message{padding:8px 16px;line-height:28px;font-size:14px}ms-info-bar #ms-info-bar-message a{overflow:hidden;height:48px;color:#fff}ms-masonry{width:100%;display:block}ms-masonry [ms-masonry-item],ms-masonry ms-masonry-item{transition:transform .3s ease;position:absolute;transform:translate3d(50vw,100vh,0)}ms-material-color-picker md-menu .md-button{font-size:12px}md-menu-content.ms-material-color-picker-menu-content{width:208px;max-width:208px;min-width:208px;padding:0;overflow:hidden}md-menu-content.ms-material-color-picker-menu-content header{height:48px;text-transform:uppercase}md-menu-content.ms-material-color-picker-menu-content header .md-button{display:flex;margin:0}md-menu-content.ms-material-color-picker-menu-content header>span{line-height:13px}md-menu-content.ms-material-color-picker-menu-content .colors{position:relative;width:208px;min-height:258px;height:258px;padding:4px}md-menu-content.ms-material-color-picker-menu-content .colors .color{position:relative;width:46px;height:46px;margin:2px;border-radius:0;cursor:pointer}md-menu-content.ms-material-color-picker-menu-content .colors .color .label{padding:2px;font-size:10px}md-menu-content.ms-material-color-picker-menu-content .colors .color .icon-check{position:absolute;top:2px;right:2px;font-size:16px;opacity:.7}ms-nav{display:block;position:relative;color:rgba(255,255,255,.7);user-select:none;z-index:70}ms-nav ms-nav-item{display:block;position:relative;line-height:48px}ms-nav ms-nav-item.ms-nav-title{line-height:32px;font-size:12px;font-weight:500;margin-top:8px;padding:0 24px;width:100%;color:rgba(255,255,255,.3);text-transform:uppercase;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}ms-nav ms-nav-item .ms-nav-button{display:flex;align-self:flex-start;align-items:center;position:relative;cursor:pointer;padding:0 48px 0 24px;color:rgba(255,255,255,.7);text-decoration:none}ms-nav ms-nav-item .ms-nav-button:not(.active):hover{background:rgba(0,0,0,.1);text-decoration:none}ms-nav ms-nav-item .ms-nav-button .ms-nav-label{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;transition:opacity .2s ease-in-out .1s}ms-nav ms-nav-item .ms-nav-button .arrow{position:absolute;top:16px;right:24px;margin:0;transition:transform .3s ease-in-out,opacity .2s ease-in-out .1s}ms-nav ms-nav-item .ms-nav-button .ms-nav-badge{position:absolute;top:50%;right:24px;min-width:20px;height:20px;line-height:20px;padding:0 7px;font-size:11px;font-weight:700;border-radius:20px;transform:translateY(-50%);transition:opacity .2s ease-in-out .1s}ms-nav ms-nav-item .ms-nav-button.active{color:#fff!important}ms-nav ms-nav-item .ms-nav-button.active .ms-nav-badge{background:#fff!important;color:rgba(0,0,0,.87)!important}ms-nav ms-nav-item .ms-nav-button.active i{color:#fff}ms-nav ms-nav-item i{color:rgba(255,255,255,.7);margin:0 16px 0 0}ms-nav .ms-nav-toggle ms-nav-toggle-items{display:none;overflow:hidden}ms-nav .ms-nav-toggle ms-nav-toggle-items.expand-animation{transition:height .35s cubic-bezier(.25,.46,.45,.94)}ms-nav .ms-nav-toggle ms-nav-toggle-items.collapse-animation{transition:height .35s cubic-bezier(.25,.46,.45,.94)}ms-nav .ms-nav-toggle ms-nav-toggle-items ms-nav-item .ms-nav-button{padding-left:58px}ms-nav .ms-nav-toggle ms-nav-toggle-items ms-nav-item ms-nav-toggle-items ms-nav-item .ms-nav-button{padding-left:68px}ms-nav .ms-nav-toggle ms-nav-toggle-items ms-nav-item ms-nav-toggle-items ms-nav-item ms-nav-toggle-items ms-nav-item .ms-nav-button{padding-left:78px}ms-nav .ms-nav-toggle ms-nav-toggle-items ms-nav-item ms-nav-toggle-items ms-nav-item ms-nav-toggle-items ms-nav-item ms-nav-toggle-items ms-nav-item .ms-nav-button{padding-left:88px}ms-nav .ms-nav-toggle ms-nav-toggle-items ms-nav-item ms-nav-toggle-items ms-nav-item ms-nav-toggle-items ms-nav-item ms-nav-toggle-items ms-nav-item ms-nav-toggle-items ms-nav-item .ms-nav-button{padding-left:98px}ms-nav .ms-nav-toggle.active>.ms-nav-button{color:#fff}ms-nav .ms-nav-toggle.active>.ms-nav-button a,ms-nav .ms-nav-toggle.active>.ms-nav-button md-icon{color:#fff}ms-nav .ms-nav-toggle[collapsed=false]>.ms-nav-button>.arrow{transform:rotate(90deg)}ms-nav>.ms-nav-toggle[collapsed=false]{background-color:rgba(0,0,0,.12)}@media only screen and (min-width:1280px){.ms-nav-folded #ms-nav-fold-close-overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:0 0;z-index:998}.ms-nav-folded #ms-nav-fold-open-overlay{position:absolute;top:0;right:0;bottom:0;left:0;z-index:999}.ms-nav-folded:not(.ms-nav-folded-open) ms-nav ms-nav-item.ms-nav-title{height:32px}.ms-nav-folded:not(.ms-nav-folded-open) ms-nav ms-nav-item.ms-nav-title:before{content:'';display:block;position:relative;top:12px;width:16px;border-top:1px solid rgba(255,255,255,.12)}.ms-nav-folded:not(.ms-nav-folded-open) ms-nav ms-nav-item.ms-nav-title span{display:none}.ms-nav-folded:not(.ms-nav-folded-open) ms-nav ms-nav-item .ms-nav-button{height:48px}.ms-nav-folded:not(.ms-nav-folded-open) ms-nav ms-nav-item .ms-nav-button>.arrow,.ms-nav-folded:not(.ms-nav-folded-open) ms-nav ms-nav-item .ms-nav-button>.ms-nav-badge,.ms-nav-folded:not(.ms-nav-folded-open) ms-nav ms-nav-item .ms-nav-button>.ms-nav-label{opacity:0;visibility:hidden}}.ms-navigation{display:block;position:relative;color:rgba(255,255,255,.7);user-select:none}.ms-navigation li,.ms-navigation ul{padding:0;margin:0}.ms-navigation ul{display:block;overflow:hidden}.ms-navigation ul li{position:relative}.ms-navigation ul li.collapsed ul{display:none}.ms-navigation .animate-height{transition:height .25s cubic-bezier(.25,.46,.45,.94)}.ms-navigation .ms-navigation-node .ms-navigation-item{display:block;position:relative;cursor:pointer;color:rgba(255,255,255,.7)}.ms-navigation .ms-navigation-node .ms-navigation-item:hover{background:rgba(0,0,0,.1)}.ms-navigation .ms-navigation-node .ms-navigation-item>.ms-navigation-button{display:flex;position:relative;width:100%;height:48px;line-height:48px;flex-direction:row;justify-content:flex-start;align-items:center;padding-right:16px;color:rgba(255,255,255,.7);text-decoration:none;white-space:nowrap;overflow:hidden}.ms-navigation .ms-navigation-node .ms-navigation-item>.ms-navigation-button .icon{color:rgba(255,255,255,.7);margin:0 16px 0 0}.ms-navigation .ms-navigation-node .ms-navigation-item>.ms-navigation-button span{white-space:nowrap;overflow:hidden;opacity:1;transition:opacity .25s ease-in-out .1s}.ms-navigation .ms-navigation-node .ms-navigation-item>.ms-navigation-button a{white-space:nowrap;overflow:hidden;opacity:1;transition:opacity .25s ease-in-out .1s}.ms-navigation .ms-navigation-node .ms-navigation-item>.ms-navigation-button .arrow{margin:0;opacity:1;transition:transform .3s ease-in-out,opacity .25s ease-in-out .1s}.ms-navigation .ms-navigation-node .ms-navigation-item>.ms-navigation-button .badge{position:absolute;top:50%;right:16px;min-width:20px;height:20px;line-height:20px;padding:0 7px;font-size:11px;font-weight:700;border-radius:20px;transform:translateY(-50%);transition:opacity .2s ease-in-out .1s}.ms-navigation .ms-navigation-node .ms-navigation-item>.ms-navigation-button.active{color:#fff}.ms-navigation .ms-navigation-node .ms-navigation-item>.ms-navigation-button.active .icon{color:#fff}.ms-navigation .ms-navigation-node .ms-navigation-item>.ms-navigation-button.active .badge{background:#fff!important;color:rgba(0,0,0,.87)!important}.ms-navigation .ms-navigation-node:not(.collapsed)>.ms-navigation-item>.ms-navigation-button .arrow{transform:rotate(90deg)}.ms-navigation .ms-navigation-node.group>.ms-navigation-item{font-size:12px;font-weight:500;margin-top:8px;cursor:auto;background:0 0!important;text-transform:uppercase;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.ms-navigation .ms-navigation-node.group>.ms-navigation-item>.ms-navigation-button{height:32px;line-height:32px;color:rgba(255,255,255,.3)}.ms-navigation .ms-navigation-node:not(.group).has-children:not(.collapsed){background-color:rgba(0,0,0,.12)}.ms-navigation .ms-navigation-node:not(.group).has-children.collapsing{background-color:rgba(0,0,0,.12)}.ms-navigation .ms-navigation-node:not(.group).has-children .has-children:not(.collapsed){background:0 0}.ms-navigation li .ms-navigation-button{padding-left:24px}.ms-navigation li li .ms-navigation-button{padding-left:56px}.ms-navigation li li li .ms-navigation-button{padding-left:72px}.ms-navigation li li li li .ms-navigation-button{padding-left:88px}.ms-navigation li li li li li .ms-navigation-button{padding-left:104px}.ms-navigation li.group .ms-navigation-button{padding-left:24px}.ms-navigation li.group li .ms-navigation-button{padding-left:24px}.ms-navigation li.group li li .ms-navigation-button{padding-left:56px}.ms-navigation li.group li li li .ms-navigation-button{padding-left:72px}.ms-navigation li.group li li li li .ms-navigation-button{padding-left:88px}#horizontal-navigation{height:64px;min-height:64px;max-height:64px;background:#fff;z-index:54}#horizontal-navigation .ms-navigation-horizontal{display:flex;position:relative;user-select:none}#horizontal-navigation .ms-navigation-horizontal li,#horizontal-navigation .ms-navigation-horizontal ul{padding:0;margin:0;list-style:none}#horizontal-navigation .ms-navigation-horizontal .horizontal{display:flex;flex:1}#horizontal-navigation .ms-navigation-horizontal .horizontal li{position:relative;cursor:pointer}#horizontal-navigation .ms-navigation-horizontal .horizontal li:not(.active):hover{background:rgba(0,0,0,.12)}#horizontal-navigation .ms-navigation-horizontal .horizontal>li>.ms-navigation-horizontal-item>.ms-navigation-horizontal-button{display:block;float:left;padding:12px 14px}#horizontal-navigation .ms-navigation-horizontal .horizontal>li>.ms-navigation-horizontal-item>.ms-navigation-horizontal-button .arrow{display:none}#horizontal-navigation .ms-navigation-horizontal .horizontal>li>.ms-navigation-horizontal-item>.ms-navigation-horizontal-button.active{background:0 0;border-bottom:2px solid}#horizontal-navigation .ms-navigation-horizontal .horizontal>li:last-child{margin-right:0}#horizontal-navigation .ms-navigation-horizontal .horizontal>li li .ms-navigation-horizontal-item .ms-navigation-horizontal-button.active{color:#fff!important}#horizontal-navigation .ms-navigation-horizontal .horizontal .has-children ul{display:none;position:absolute;background:#fff;z-index:999;min-width:200px;box-shadow:0 5px 5px -3px rgba(0,0,0,.2),0 8px 10px 1px rgba(0,0,0,.14),0 3px 14px 2px rgba(0,0,0,.12);top:0;left:100%}#horizontal-navigation .ms-navigation-horizontal .horizontal .has-children:hover>ul{display:block}#horizontal-navigation .ms-navigation-horizontal .horizontal>.has-children>ul{top:100%;left:0}#horizontal-navigation .ms-navigation-horizontal .horizontal .ms-navigation-horizontal-item .ms-navigation-horizontal-button{display:flex;align-items:center;width:100%;color:rgba(0,0,0,.87);white-space:nowrap;padding:14px 16px;text-decoration:none}#horizontal-navigation .ms-navigation-horizontal .horizontal .ms-navigation-horizontal-item .ms-navigation-horizontal-button .icon{color:rgba(0,0,0,.54);margin-right:8px}#horizontal-navigation .ms-navigation-horizontal .horizontal .ms-navigation-horizontal-item .ms-navigation-horizontal-button .badge{min-width:20px;height:20px;line-height:20px;padding:0 7px;font-size:11px;font-weight:700;border-radius:20px;transition:opacity .2s ease-in-out .1s}#horizontal-navigation .ms-navigation-horizontal .horizontal .ms-navigation-horizontal-item .ms-navigation-horizontal-button .arrow{margin-left:8px}#horizontal-navigation .ms-navigation-horizontal .horizontal .ms-navigation-horizontal-item .ms-navigation-horizontal-button.active .badge{background:#fff!important;color:rgba(0,0,0,.87)!important}#horizontal-navigation .ms-navigation-horizontal .horizontal .ms-navigation-horizontal-item .ms-navigation-horizontal-button.active .icon{color:#fff}@media only screen and (min-width:960px){body.ms-navigation-folded:not(.ms-navigation-folded-open) .ms-navigation .animate-height{transition:none}body.ms-navigation-folded:not(.ms-navigation-folded-open) .ms-navigation .ms-navigation-node .ms-navigation-item .ms-navigation-button .icon{margin:0}body.ms-navigation-folded:not(.ms-navigation-folded-open) .ms-navigation .ms-navigation-node .ms-navigation-item .ms-navigation-button .arrow,body.ms-navigation-folded:not(.ms-navigation-folded-open) .ms-navigation .ms-navigation-node .ms-navigation-item .ms-navigation-button .badge,body.ms-navigation-folded:not(.ms-navigation-folded-open) .ms-navigation .ms-navigation-node .ms-navigation-item .ms-navigation-button .title{opacity:0;visibility:hidden}body.ms-navigation-folded:not(.ms-navigation-folded-open) .ms-navigation .ms-navigation-node.group>.ms-navigation-item .ms-navigation-button:before{content:'';display:block;position:relative;width:16px;border-top:1px solid rgba(255,255,255,.12)}body.ms-navigation-folded:not(.ms-navigation-folded-open) #ms-navigation-fold-expander{position:absolute;top:0;right:0;bottom:0;left:0;z-index:999}body.ms-navigation-folded #ms-navigation-fold-collapser{position:absolute;top:0;right:0;bottom:0;left:0;z-index:59}}@media only screen and (max-width:960px){body.ms-navigation-horizontal-mobile-menu-active #horizontal-navigation .navigation-toggle{height:64px;margin-right:16px}body.ms-navigation-horizontal-mobile-menu-active #horizontal-navigation .navigation-toggle .md-button{margin:0;width:64px;height:64px}body.ms-navigation-horizontal-mobile-menu-active #horizontal-navigation .ms-navigation-horizontal{display:block!important;background:#fff}#horizontal-navigation{z-index:60}#horizontal-navigation .ms-navigation-horizontal{position:absolute;display:none;top:0;right:0;bottom:0;left:0;padding:0 0 16px 0;z-index:9998;overflow-x:hidden;overflow-y:scroll}#horizontal-navigation .ms-navigation-horizontal .horizontal{flex-direction:column;min-height:100%;width:100%}#horizontal-navigation .ms-navigation-horizontal .horizontal li:not(.active):hover{background:0 0}#horizontal-navigation .ms-navigation-horizontal .horizontal li:not(.active) .ms-navigation-horizontal-item{margin:4px}#horizontal-navigation .ms-navigation-horizontal .horizontal li:not(.active) .ms-navigation-horizontal-item:hover{background:rgba(0,0,0,.12)}#horizontal-navigation .ms-navigation-horizontal .horizontal>li{padding:0 12px}#horizontal-navigation .ms-navigation-horizontal .horizontal>li>.ms-navigation-horizontal-item>.ms-navigation-horizontal-button{display:flex;float:none}#horizontal-navigation .ms-navigation-horizontal .horizontal>li>.ms-navigation-horizontal-item>.ms-navigation-horizontal-button .arrow{display:block}#horizontal-navigation .ms-navigation-horizontal .horizontal .has-children ul{position:relative;top:0;left:0;box-shadow:none}#horizontal-navigation .ms-navigation-horizontal .horizontal .has-children:hover>ul{display:none}#horizontal-navigation .ms-navigation-horizontal .horizontal .has-children .expanded>.ms-navigation-horizontal-button .arrow{transform:rotate(90deg)}#horizontal-navigation .ms-navigation-horizontal .horizontal .has-children .expanded+ul{display:block;margin-left:16px}#horizontal-navigation .ms-navigation-horizontal .horizontal .ms-navigation-horizontal-item{min-height:48px;height:48px}}md-dialog.md-phonebar-dialog{max-width:720px;width:720px}md-dialog.md-phonebar-dialog md-dialog-content{display:block;position:relative;height:500px}md-dialog.md-phonebar-dialog md-toolbar .title{font-size:17px}md-dialog.md-phonebar-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.md-phonebar-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}md-dialog.md-phonebar-dialog md-tabs{position:static}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}.ms-phonebar{height:64px;font-size:13px}.ms-phonebar .phonebar-container{height:64px;padding:0}.ms-phonebar .phonebar-container .quantity-indicator{display:inline-block;vertical-align:middle;width:8px;height:8px;border-radius:4px;margin-right:5px;margin-left:5px}.ms-phonebar .phonebar-container .sessions{overflow-x:auto}.ms-phonebar .phonebar-container .session{border-radius:3px;border:1px solid #dcdcdc;margin-left:3px;cursor:pointer}.ms-phonebar .phonebar-container .session-info{padding-left:3px;padding-right:3px;color:grey}.ms-phonebar .phonebar-container .session-button{border:1px solid grey;margin:3px}.ms-phonebar .phonebar-container .button-bar{border:1px solid grey}.ms-phonebar .phonebar-container .num-pad{position:fixed;border-radius:3px;border:1px solid #9e9e9e;top:80px;left:80px}.ms-phonebar .phonebar-container .num-pad-logo{height:40px;width:42px}.ms-phonebar .phonebar-container p{margin:0;padding:0 0 10px 0;line-height:10px;font-size:10px}.ms-phonebar .phonebar-container .span4{width:50px;float:left;margin:8px}.ms-phonebar .phonebar-container .num{border:1px solid #9e9e9e;-webkit-border-radius:5px;-moz-border-radius:5px;border-radius:5px;height:50px;background-color:#fff;color:#333;cursor:pointer}.ms-phonebar .phonebar-container .num:hover{background-color:#9e9e9e;color:#fff;transition-property:background-color .2s linear 0s;-moz-transition:background-color .2s linear 0s;-webkit-transition:background-color .2s linear 0s;-o-transition:background-color .2s linear 0s}.ms-phonebar .phonebar-container .txt{font-size:20px;text-align:center;margin-top:3px;font-family:Lato,sans-serif;color:#333}.ms-phonebar .phonebar-container .small{font-size:15px}.ms-phonebar .phonebar-container .angucomplete-dropdown{top:45px;overflow-y:auto;max-height:200px}.ms-phonebar .phonebar-container .highlight{color:red}.ms-phonebar .phonebar-container .input-number{margin-left:5px;padding:8px;border:1px solid #ccc;border-radius:3px;box-sizing:border-box}.ms-phonebar .phonebar-container .phonebar{position:relative}.ms-phonebar .phonebar-container .phonebar>div{height:64px;min-width:44px}.ms-phonebar .phonebar-container .phonebar>div.dragging{cursor:grabbing}.ms-phonebar .phonebar-container .phonebar>div.dragging .md-ripple-container{display:none}.ms-phonebar .phonebar-container .phonebar>div.ghost .shortcut{opacity:.27}.ms-phonebar .phonebar-container.mobile-bar-active{position:absolute;top:0;right:0;bottom:0;left:0;background:#fff;z-index:99;max-width:none!important}.ms-phonebar .phonebar-container.mobile-bar-active .phonebar,.ms-phonebar .phonebar-container.mobile-bar-active .toggle-mobile-menu{display:flex!important}.ms-phonebar .phonebar-container.mobile-bar-active .toggle-mobile-menu{margin-left:14px}.ms-phonebar .phonebar-container.mobile-bar-active>div{border-right:1px solid rgba(0,0,0,.12)}.quick-filter-container md-select .md-select-value.md-select-placeholder{color:inherit}.quick-filter-container md-select[multiple] md-select-value>:first-child{max-width:250px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;display:block}.ms-responsive-table-wrapper{overflow-x:auto;overflow-y:hidden}.ms-search-bar{height:64px;font-size:13px}.ms-search-bar .ms-search-bar-collapser,.ms-search-bar .ms-search-bar-expander{cursor:pointer;padding:0 20px;margin:0;width:64px!important;height:64px!important;line-height:64px!important}.ms-search-bar .ms-search-bar-loader{width:64px!important;height:64px!important;line-height:64px!important}.ms-search-bar .ms-search-button-expanded{pointer-events:none}.ms-search-bar .ms-search-bar-collapser{display:none}.ms-search-bar input{background-color:transparent;font-size:16px}.ms-search-bar .ms-search-bar-results{position:absolute;top:64px;left:0;right:0;overflow-x:hidden;overflow-y:scroll;background:#fff;max-height:300px;box-shadow:0 1px 8px 0 rgba(0,0,0,.2),0 3px 4px 0 rgba(0,0,0,.14),0 3px 3px -2px rgba(0,0,0,.12)}.ms-search-bar .ms-search-bar-results .no-results{font-size:18px;padding:16px;color:rgba(0,0,0,.54)}.ms-search-bar .ms-search-bar-results .result{position:relative;height:56px;min-height:56px;max-height:56px;padding:16px;cursor:pointer}.ms-search-bar .ms-search-bar-results .result.selected{background:rgba(0,0,0,.07)}.ms-search-bar .ms-search-bar-results .result .icon-container{min-width:32px;margin-right:8px}.ms-search-bar .ms-search-bar-results .result .icon-container .square{width:6px;height:6px}.ms-search-bar .ms-search-bar-results .result .title{font-size:16px}.ms-search-bar .ms-search-bar-results .result .description{padding-top:6px;font-size:14px}.ms-search-bar.expanded{position:absolute;top:0;right:0;bottom:0;left:0;background:#fff;z-index:10}.ms-search-bar.expanded #ms-search-bar-input{display:block}.ms-search-bar.expanded .ms-search-bar-collapser{display:block}.ms-search-bar.down{top:64px;border-bottom:1px rgba(0,0,0,.12) solid}.ms-search-bar[disabled] input{pointer-events:none}body.ms-search-bar-expanded #toolbar{z-index:999!important}@media screen and (max-width:960px){.ms-search-bar-label{padding:0 8px 0 12px}}.ms-shortcuts{height:64px;font-size:13px}.ms-shortcuts .shortcuts-container{height:64px;padding:0 8px;max-width:400px}.ms-shortcuts .shortcuts-container .shortcuts{position:relative;overflow-x:scroll}.ms-shortcuts .shortcuts-container .shortcuts>div{height:64px;min-width:44px}.ms-shortcuts .shortcuts-container .shortcuts>div.dragging{cursor:grabbing}.ms-shortcuts .shortcuts-container .shortcuts>div.dragging .md-ripple-container{display:none}.ms-shortcuts .shortcuts-container .shortcuts>div.ghost .shortcut{opacity:.27}.ms-shortcuts .shortcuts-container .shortcuts>div .shortcut{margin:2px}.ms-shortcuts .shortcuts-container .shortcuts>div .shortcut .first-letter{display:inline-block;vertical-align:middle;font-size:20px;text-transform:uppercase;color:rgba(0,0,0,.54)}.ms-shortcuts .shortcuts-container .shortcut-menu{margin:0}.ms-shortcuts .shortcuts-container.mobile-bar-active{position:absolute;top:0;right:0;bottom:0;left:0;background:#fff;z-index:99;max-width:none!important}.ms-shortcuts .shortcuts-container.mobile-bar-active .shortcut-menu,.ms-shortcuts .shortcuts-container.mobile-bar-active .shortcuts,.ms-shortcuts .shortcuts-container.mobile-bar-active .toggle-mobile-menu{display:flex!important}.ms-shortcuts .shortcuts-container.mobile-bar-active .toggle-mobile-menu{margin-left:14px}.ms-shortcuts .shortcuts-container.mobile-bar-active>div{border-right:1px solid rgba(0,0,0,.12)}#ms-shortcut-add-menu{position:relative;width:240px;min-width:240px;max-width:240px}#ms-shortcut-add-menu .add-shortcut-button{width:48px;height:48px;padding:0 12px;margin:0}#ms-shortcut-add-menu .shortcut-search{height:45px;padding:0 8px}#ms-shortcut-add-menu .shortcut-search .search-icon{width:40px;height:40px;line-height:48px}#ms-shortcut-add-menu .shortcut-search .shortcut-loader{padding:10px}#ms-shortcut-add-menu .shortcut-search input{padding:8px}#ms-shortcut-add-menu .results{position:relative;overflow-y:scroll;max-height:233px;margin-top:8px;padding-top:8px;border-top:1px solid rgba(0,0,0,.12)}#ms-shortcut-add-menu .results .no-results{font-size:18px;padding:16px;color:rgba(0,0,0,.54)}#ms-shortcut-add-menu .results .result{position:relative;min-height:56px;padding:16px;cursor:pointer}#ms-shortcut-add-menu .results .result.selected{background:rgba(0,0,0,.07)}#ms-shortcut-add-menu .results .result .icon-container{min-width:32px;margin-right:8px}#ms-shortcut-add-menu .results .result .icon-container .square{width:6px;height:6px}#ms-shortcut-add-menu .results .result .title{font-size:16px}#ms-shortcut-add-menu .results .result .description{padding-top:6px;font-size:14px}#splash-screen{display:block;position:absolute;top:0;left:0;right:0;bottom:0;background-color:#3c4252;z-index:99999}#splash-screen.ng-leave{opacity:1;transition:all linear .2s}#splash-screen.ng-leave-active{opacity:0}#splash-screen .center{display:block;width:100%;position:absolute;top:50%;transform:translateY(-50%)}#splash-screen .logo{width:96px;height:96px;line-height:96px;margin:0 auto;font-family:Helvetica Neue,Helvetica,Arial,sans-serif;font-size:56px;text-align:center;border-radius:2px;background-color:#039be5;color:#fff;box-shadow:0 2px 14px 0 rgba(0,0,0,.22)}#splash-screen .spinner-wrapper{display:block;position:relative;width:100%;min-height:100px;height:100px}#splash-screen .spinner-wrapper .spinner{position:absolute;overflow:hidden;left:50%;margin-left:-50px;animation:outer-rotate 2.91667s linear infinite}#splash-screen .spinner-wrapper .spinner .inner{width:100px;height:100px;position:relative;animation:sporadic-rotate 5.25s cubic-bezier(.35,0,.25,1) infinite}#splash-screen .spinner-wrapper .spinner .inner .gap{position:absolute;left:49px;right:49px;top:0;bottom:0;border-top:10px solid;box-sizing:border-box}#splash-screen .spinner-wrapper .spinner .inner .left,#splash-screen .spinner-wrapper .spinner .inner .right{position:absolute;top:0;height:100px;width:50px;overflow:hidden}#splash-screen .spinner-wrapper .spinner .inner .left .half-circle,#splash-screen .spinner-wrapper .spinner .inner .right .half-circle{position:absolute;top:0;width:100px;height:100px;box-sizing:border-box;border:10px solid #4285f4;border-bottom-color:transparent;border-radius:50%}#splash-screen .spinner-wrapper .spinner .inner .left{left:0}#splash-screen .spinner-wrapper .spinner .inner .left .half-circle{left:0;border-right-color:transparent;animation:left-wobble 1.3125s cubic-bezier(.35,0,.25,1) infinite;-webkit-animation:left-wobble 1.3125s cubic-bezier(.35,0,.25,1) infinite}#splash-screen .spinner-wrapper .spinner .inner .right{right:0}#splash-screen .spinner-wrapper .spinner .inner .right .half-circle{right:0;border-left-color:transparent;animation:right-wobble 1.3125s cubic-bezier(.35,0,.25,1) infinite;-webkit-animation:right-wobble 1.3125s cubic-bezier(.35,0,.25,1) infinite}@keyframes outer-rotate{0%{transform:rotate(0) scale(.5)}100%{transform:rotate(360deg) scale(.5)}}@keyframes left-wobble{0%,100%{transform:rotate(130deg)}50%{transform:rotate(-5deg)}}@keyframes right-wobble{0%,100%{transform:rotate(-130deg)}50%{transform:rotate(5deg)}}@keyframes sporadic-rotate{12.5%{transform:rotate(135deg)}25%{transform:rotate(270deg)}37.5%{transform:rotate(405deg)}50%{transform:rotate(540deg)}62.5%{transform:rotate(675deg)}75%{transform:rotate(810deg)}87.5%{transform:rotate(945deg)}100%{transform:rotate(1080deg)}}.ms-stepper .ms-stepper-horizontal{background:#fff;box-shadow:0 1px 3px 0 rgba(0,0,0,.2),0 1px 1px 0 rgba(0,0,0,.14),0 2px 1px -1px rgba(0,0,0,.12)}.ms-stepper .ms-stepper-horizontal .ms-stepper-navigation-wrapper .ms-stepper-navigation{height:72px;min-height:72px;max-height:72px;background:#fff;box-shadow:0 1px 3px 0 rgba(0,0,0,.2),0 1px 1px 0 rgba(0,0,0,.14),0 2px 1px -1px rgba(0,0,0,.12)}.ms-stepper .ms-stepper-horizontal .ms-stepper-navigation-wrapper .ms-stepper-navigation .ms-stepper-navigation-item{display:flex;flex-direction:row;align-items:center;position:relative;height:72px;min-height:72px;max-height:72px;line-height:24px;margin:0;padding:24px;border-radius:0;cursor:pointer;font-size:14px;text-transform:none}.ms-stepper .ms-stepper-horizontal .ms-stepper-navigation-wrapper .ms-stepper-navigation .ms-stepper-navigation-item:after,.ms-stepper .ms-stepper-horizontal .ms-stepper-navigation-wrapper .ms-stepper-navigation .ms-stepper-navigation-item:before{content:'';display:block;position:absolute;top:50%;width:24px;border-bottom:1px solid rgba(0,0,0,.12)}.ms-stepper .ms-stepper-horizontal .ms-stepper-navigation-wrapper .ms-stepper-navigation .ms-stepper-navigation-item:before{left:0}.ms-stepper .ms-stepper-horizontal .ms-stepper-navigation-wrapper .ms-stepper-navigation .ms-stepper-navigation-item:after{right:0}.ms-stepper .ms-stepper-horizontal .ms-stepper-navigation-wrapper .ms-stepper-navigation .ms-stepper-navigation-item:first-child:before{display:none}.ms-stepper .ms-stepper-horizontal .ms-stepper-navigation-wrapper .ms-stepper-navigation .ms-stepper-navigation-item:last-child:after{display:none}.ms-stepper .ms-stepper-horizontal .ms-stepper-navigation-wrapper .ms-stepper-navigation .ms-stepper-navigation-item.current .title{font-weight:600;color:rgba(0,0,0,.87)}.ms-stepper .ms-stepper-horizontal .ms-stepper-navigation-wrapper .ms-stepper-navigation .ms-stepper-navigation-item.disabled{cursor:default}.ms-stepper .ms-stepper-horizontal .ms-stepper-navigation-wrapper .ms-stepper-navigation .ms-stepper-navigation-item.disabled .step{background:rgba(0,0,0,.12)}.ms-stepper .ms-stepper-horizontal .ms-stepper-navigation-wrapper .ms-stepper-navigation .ms-stepper-navigation-item.disabled .title{color:rgba(0,0,0,.27)}.ms-stepper .ms-stepper-horizontal .ms-stepper-navigation-wrapper .ms-stepper-navigation .ms-stepper-navigation-item.disabled .subtitle{color:rgba(0,0,0,.27)}.ms-stepper .ms-stepper-horizontal .ms-stepper-navigation-wrapper .ms-stepper-navigation .ms-stepper-navigation-item.optional{padding:16px 24px}.ms-stepper .ms-stepper-horizontal .ms-stepper-navigation-wrapper .ms-stepper-navigation .ms-stepper-navigation-item .step{width:24px;min-width:24px;height:24px;border-radius:50%;margin:0 8px 0 16px;color:#fff}.ms-stepper .ms-stepper-horizontal .ms-stepper-navigation-wrapper .ms-stepper-navigation .ms-stepper-navigation-item .step .icon{color:#fff;font-weight:700;line-height:24px!important}.ms-stepper .ms-stepper-horizontal .ms-stepper-navigation-wrapper .ms-stepper-navigation .ms-stepper-navigation-item .title{padding-right:16px;color:rgba(0,0,0,.54)}.ms-stepper .ms-stepper-horizontal .ms-stepper-navigation-wrapper .ms-stepper-navigation .ms-stepper-navigation-item .subtitle{font-size:12px;padding-right:16px;color:rgba(0,0,0,.54);line-height:1}.ms-stepper .ms-stepper-horizontal .ms-stepper-steps{padding:24px 16px}.ms-stepper .ms-stepper-horizontal .ms-stepper-controls{padding:0 16px 16px 16px}.ms-stepper .ms-stepper-horizontal .ms-stepper-controls .ms-stepper-dots{display:none;align-items:center;justify-content:center;padding:0 16px}.ms-stepper .ms-stepper-horizontal .ms-stepper-controls .ms-stepper-dots span{width:5px;height:5px;margin:0 4px;border-radius:50%}.ms-stepper .ms-stepper-horizontal .ms-stepper-controls .ms-stepper-dots span:not(.md-accent-bg){background:rgba(0,0,0,.12)}.ms-stepper .ms-stepper-horizontal .ms-stepper-controls .ms-stepper-dots span.selected{width:8px;height:8px}@media screen and (max-width:600px){.ms-stepper .ms-stepper-horizontal .ms-stepper-navigation-wrapper .ms-stepper-navigation{display:none}.ms-stepper .ms-stepper-horizontal .ms-stepper-controls .ms-stepper-dots{display:flex}}.ms-stepper .ms-stepper-vertical{position:relative;background:#fff;box-shadow:0 1px 3px 0 rgba(0,0,0,.2),0 1px 1px 0 rgba(0,0,0,.14),0 2px 1px -1px rgba(0,0,0,.12)}.ms-stepper .ms-stepper-vertical .ms-stepper-vertical-line{display:block;position:absolute;width:1px;top:32px;bottom:32px;left:43px;border-left:1px solid rgba(0,0,0,.12)}.ms-stepper .ms-stepper-vertical .ms-stepper-steps{padding:8px 0}.ms-stepper .ms-stepper-vertical .ms-stepper-steps .ms-stepper-step{display:block}.ms-stepper .ms-stepper-vertical .ms-stepper-steps .ms-stepper-step .ms-stepper-navigation-item{display:flex;flex-direction:row;align-items:center;position:relative;width:100%;height:72px;min-height:72px;max-height:72px;line-height:24px;margin:0;padding:0 24px;border-radius:0;cursor:pointer;font-size:14px;text-transform:none}.ms-stepper .ms-stepper-vertical .ms-stepper-steps .ms-stepper-step .ms-stepper-navigation-item:first-child:before{display:none}.ms-stepper .ms-stepper-vertical .ms-stepper-steps .ms-stepper-step .ms-stepper-navigation-item:last-child:after{display:none}.ms-stepper .ms-stepper-vertical .ms-stepper-steps .ms-stepper-step .ms-stepper-navigation-item:hover:not(.disabled) .step{background-color:#ececec;border-color:#ececec}.ms-stepper .ms-stepper-vertical .ms-stepper-steps .ms-stepper-step .ms-stepper-navigation-item.current .title{font-weight:600;color:rgba(0,0,0,.87)}.ms-stepper .ms-stepper-vertical .ms-stepper-steps .ms-stepper-step .ms-stepper-navigation-item.disabled{cursor:default}.ms-stepper .ms-stepper-vertical .ms-stepper-steps .ms-stepper-step .ms-stepper-navigation-item.disabled .title{color:rgba(0,0,0,.27)}.ms-stepper .ms-stepper-vertical .ms-stepper-steps .ms-stepper-step .ms-stepper-navigation-item.disabled .subtitle{color:rgba(0,0,0,.27)}.ms-stepper .ms-stepper-vertical .ms-stepper-steps .ms-stepper-step .ms-stepper-navigation-item.optional{padding:16px 24px}.ms-stepper .ms-stepper-vertical .ms-stepper-steps .ms-stepper-step .ms-stepper-navigation-item .step{width:40px;min-width:40px;height:40px;margin:0 16px 0 0;border-radius:50%;background:#fff;border:8px solid #fff;color:#fff;transition:border-color .4s cubic-bezier(.25,.8,.25,1),background-color .4s cubic-bezier(.25,.8,.25,1)}.ms-stepper .ms-stepper-vertical .ms-stepper-steps .ms-stepper-step .ms-stepper-navigation-item .step .icon{font-weight:700;line-height:28px!important}.ms-stepper .ms-stepper-vertical .ms-stepper-steps .ms-stepper-step .ms-stepper-navigation-item .title{padding-right:16px;color:rgba(0,0,0,.54)}.ms-stepper .ms-stepper-vertical .ms-stepper-steps .ms-stepper-step .ms-stepper-navigation-item .subtitle{font-size:12px;padding-right:16px;color:rgba(0,0,0,.54);line-height:1}.ms-stepper .ms-stepper-vertical .ms-stepper-steps .ms-stepper-step .ms-stepper-step-content{padding:0 24px 16px 64px}.ms-stepper .ms-stepper-vertical .ms-stepper-steps .ms-stepper-step .ms-stepper-controls{padding:0 16px 16px 56px}.ms-tab-scroll .scroll-arrow{height:inherit;padding:0}.ms-tab-scroll .bar-container{overflow:hidden}.ms-tab-scroll .scroll-container{overflow-x:hidden;overflow-y:hidden;transition:transform .2s ease-in-out}.ms-timeline .ms-timeline-loader{position:relative;display:flex;align-items:center;justify-content:center;width:56px;height:56px;margin:0 auto;background:#fff;font-weight:500;opacity:0;z-index:11;border-radius:50%}.ms-timeline .ms-timeline-loader.show{opacity:1}.ms-timeline .ms-timeline-loader .spinner{width:24px;height:24px;border:3px solid rgba(255,255,255,.35);border-top-color:#fff;border-radius:50%}.ms-widget .ms-widget-front{box-shadow:0 1px 3px 0 rgba(0,0,0,.2),0 1px 1px 0 rgba(0,0,0,.14),0 2px 1px -1px rgba(0,0,0,.12)}.ms-widget .ms-widget-back{box-shadow:0 1px 3px 0 rgba(0,0,0,.2),0 1px 1px 0 rgba(0,0,0,.14),0 2px 1px -1px rgba(0,0,0,.12)}.ms-widget.sidenav-widget .ms-widget-back,.ms-widget.sidenav-widget .ms-widget-front{box-shadow:none}.ms-widget .flip-to-front{position:absolute;top:0;right:0}.ms-widget .c3{height:100%}.ms-widget .chart-fill-8{margin:0 -8px -8px -8px}.ms-widget .chart-fill-16{margin:0 -16px -16px -16px}.ms-widget .chart-fill-24{margin:0 -24px -24px -24px}.ms-widget .chart-fill-32{margin:0 -32px -32px -32px}.ms-widget .chart-fill-40{margin:0 -40px -40px -40px}.ms-widget .chart-fill-48{margin:0 -48px -48px -48px}.ms-widget .chart-fill-56{margin:0 -56px -56px -56px}.ms-widget .chart-fill-64{margin:0 -64px -64px -64px}.ms-widget .chart-fill-72{margin:0 -72px -72px -72px}.ms-widget .chart-fill-80{margin:0 -80px -80px -80px}.ms-widget{position:relative;font-size:1.3rem;perspective:3000px;padding:12px}.ms-widget .ms-widget-front{display:flex;flex-direction:column;flex:1 1 auto;position:relative;overflow:hidden;visibility:visible;width:100%;opacity:1;z-index:10;border-radius:2px;transition:transform .5s ease-out 0s,visibility 0s ease-in .2s,opacity 0s ease-in .2s;transform:rotateY(0);backface-visibility:hidden}.ms-widget .ms-widget-back{display:block;position:absolute;overflow:hidden;visibility:hidden;opacity:0;z-index:10;top:12px;right:12px;bottom:12px;left:12px;border-radius:2px;transition:transform .5s ease-out 0s,visibility 0s ease-in .2s,opacity 0s ease-in .2s;transform:rotateY(180deg);backface-visibility:hidden}.ms-widget .md-button{margin:0}.ms-widget .md-button.md-icon-button{margin:0}.ms-widget.flipped .ms-widget-front{visibility:hidden;opacity:0;transform:rotateY(180deg)}.ms-widget.flipped .ms-widget-back{display:block;visibility:visible;opacity:1;transform:rotateY(360deg)}.ms-widget.sidenav-widget{padding:0}.ms-widget.ar-2-1 .widget{padding:0;position:relative}.ms-widget.ar-2-1 .widget:before{display:block;content:'';width:100%;padding-top:50%}.ms-widget.ar-2-1 .widget>.widget{position:absolute;top:8px;left:8px;right:8px;bottom:8px}.ms-widget.ar-1-1 .widget{padding:0;position:relative}.ms-widget.ar-1-1 .widget:before{display:block;content:'';width:100%;padding-top:100%}.ms-widget.ar-1-1 .widget>.widget{position:absolute;top:8px;left:8px;right:8px;bottom:8px}.ms-theme-options .ms-theme-options-button{position:absolute;top:160px;right:0;z-index:50;box-shadow:0 2px 4px -1px rgba(0,0,0,.2),0 4px 5px 0 rgba(0,0,0,.14),0 1px 10px 0 rgba(0,0,0,.12);width:48px;height:48px;line-height:48px;text-align:center;cursor:pointer;border-radius:0;margin:0;pointer-events:auto;opacity:.75}.ms-theme-options .ms-theme-options-button:hover{opacity:1}.ms-theme-options md-sidenav{width:384px;min-width:384px;max-width:384px}.ms-theme-options md-sidenav .ms-theme-options-list{background:#fff;z-index:12;pointer-events:auto}.ms-theme-options md-sidenav .ms-theme-options-list .theme-option{padding:16px}.ms-theme-options md-sidenav .ms-theme-options-list .theme-option.layout-options md-radio-button{width:160px;max-width:160px;margin:8px 8px 16px 8px}.ms-theme-options md-sidenav .ms-theme-options-list .theme-option.layout-options md-radio-button.md-checked ._md-label img,.ms-theme-options md-sidenav .ms-theme-options-list .theme-option.layout-options md-radio-button:hover ._md-label img{opacity:1;box-shadow:0 5px 5px -3px rgba(0,0,0,.2),0 8px 10px 1px rgba(0,0,0,.14),0 3px 14px 2px rgba(0,0,0,.12)}.ms-theme-options md-sidenav .ms-theme-options-list .theme-option.layout-options md-radio-button ._md-container{display:none}.ms-theme-options md-sidenav .ms-theme-options-list .theme-option.layout-options md-radio-button ._md-label{margin-left:0}.ms-theme-options md-sidenav .ms-theme-options-list .theme-option.layout-options md-radio-button ._md-label img{opacity:.8;margin-bottom:8px}.ms-theme-options md-sidenav .ms-theme-options-list .theme-option.color-palettes md-menu-item{max-width:192px}.ms-theme-options md-sidenav .ms-theme-options-list .theme-option.color-palettes .theme-button{border-bottom:16px solid;text-align:left;width:101px;height:88px;box-shadow:none;opacity:.8}.ms-theme-options md-sidenav .ms-theme-options-list .theme-option.color-palettes .theme-button.active,.ms-theme-options md-sidenav .ms-theme-options-list .theme-option.color-palettes .theme-button:hover{opacity:1;box-shadow:0 5px 5px -3px rgba(0,0,0,.2),0 8px 10px 1px rgba(0,0,0,.14),0 3px 14px 2px rgba(0,0,0,.12)}.ms-theme-options md-sidenav .ms-theme-options-list .theme-option md-radio-button{margin:8px}.ms-theme-options md-sidenav .ms-theme-options-list .theme-option .option-title{font-size:14px;font-weight:500;padding:0 8px 12px 8px}#error-404 .content{width:90%;max-width:512px;margin-top:128px}#error-404 .content .error-code{font-size:112px;text-align:center;line-height:1;margin-bottom:16px;font-weight:500}#error-404 .content .message{font-size:24px;text-align:center;color:rgba(0,0,0,.54)}#error-404 .content .search{width:100%;height:56px;line-height:56px;margin:48px auto 16px auto;padding:16px;background:#fff}#error-404 .content .search input{padding:0 0 0 16px}#error-404 .content .back-link{font-size:15px;text-align:center}#error-500 .content{width:90%;max-width:512px;margin-top:128px}#error-500 .content .error-code{font-size:112px;line-height:1;text-align:center;margin-bottom:16px;font-weight:500}#error-500 .content .message{font-size:24px;text-align:center;color:rgba(0,0,0,.54)}#error-500 .content .sub-message{font-size:17px;text-align:center;color:rgba(0,0,0,.54);margin:16px auto 48px auto}#error-500 .content .report-link{text-align:center;font-size:15px}#forgot-password{height:100%;background:url(/assets/images/backgrounds/tech.png) no-repeat;background-size:cover}#forgot-password #forgot-password-form-wrapper{flex:1 0 auto;padding:32px}#forgot-password #forgot-password-form-wrapper #forgot-password-form{width:384px;max-width:384px;padding:32px;text-align:center;background:#fff}#forgot-password #forgot-password-form-wrapper #forgot-password-form .logo{width:128px;height:128px;line-height:128px;font-size:86px;font-weight:500;margin:32px auto;color:#fff;border-radius:2px}#forgot-password #forgot-password-form-wrapper #forgot-password-form .title{font-size:17px;margin:16px 0 32px 0}#forgot-password #forgot-password-form-wrapper #forgot-password-form .logo_login{max-height:200px}#forgot-password #forgot-password-form-wrapper #forgot-password-form form{width:100%;text-align:left}#forgot-password #forgot-password-form-wrapper #forgot-password-form form .submit-button{width:220px;margin:16px auto;display:block}#forgot-password #forgot-password-form-wrapper #forgot-password-form .login{margin:32px auto 24px auto;width:250px;font-weight:500}#forgot-password #forgot-password-form-wrapper #forgot-password-form .login .text{margin-right:8px}@media screen and (max-width:600px){#forgot-password #forgot-password-form-wrapper{padding:16px}#forgot-password #forgot-password-form-wrapper #forgot-password-form{padding:24px;width:100%}#forgot-password #forgot-password-form-wrapper #forgot-password-form form .md-button{width:90%}}#login{height:100%;background:url(/assets/images/backgrounds/tech.png) no-repeat;background-size:cover}#login #login-form-wrapper{flex:1 0 auto;padding:32px}#login #login-form-wrapper #login-form{width:384px;max-width:384px;padding:32px;background:#fff;text-align:center}#login #login-form-wrapper #login-form .logo{width:128px;height:128px;line-height:128px;font-size:86px;font-weight:500;margin:32px auto;color:#fff;border-radius:2px}#login #login-form-wrapper #login-form .title{font-size:17px;margin:16px 0 32px 0}#login #login-form-wrapper #login-form .logo_login{max-height:200px}#login #login-form-wrapper #login-form form{width:100%;text-align:left}#login #login-form-wrapper #login-form form md-checkbox{margin:0}#login #login-form-wrapper #login-form form .remember-forgot-password{font-size:13px;margin-top:8px}#login #login-form-wrapper #login-form form .remember-forgot-password .remember-me{margin-bottom:16px}#login #login-form-wrapper #login-form form .remember-forgot-password .forgot-password{font-size:13px;font-weight:500;margin-bottom:16px}#login #login-form-wrapper #login-form form .submit-button{width:220px;margin:16px auto;display:block}#login #login-form-wrapper #login-form .register{margin:32px auto 24px auto;width:250px;font-weight:500}#login #login-form-wrapper #login-form .register .text{margin-right:8px}#login #login-form-wrapper #login-form .separator{font-size:15px;font-weight:600;margin:24px auto 16px auto;position:relative;overflow:hidden;width:100px;color:rgba(0,0,0,.54)}#login #login-form-wrapper #login-form .separator .text{display:inline-block;vertical-align:baseline;position:relative;padding:0 8px;z-index:9999}#login #login-form-wrapper #login-form .separator .text:after,#login #login-form-wrapper #login-form .separator .text:before{content:'';display:block;width:30px;position:absolute;top:10px;border-top:1px solid rgba(0,0,0,.12)}#login #login-form-wrapper #login-form .separator .text:before{right:100%}#login #login-form-wrapper #login-form .separator .text:after{left:100%}#login #login-form-wrapper #login-form .md-button.facebook,#login #login-form-wrapper #login-form .md-button.google{width:192px;text-transform:none;color:#fff;font-size:13px}#login #login-form-wrapper #login-form .md-button.facebook md-icon,#login #login-form-wrapper #login-form .md-button.google md-icon{color:#fff;margin:0 8px 0 0}#login #login-form-wrapper #login-form .md-button.google{background-color:#d73d32}#login #login-form-wrapper #login-form .md-button.facebook{background-color:#3f5c9a}@media screen and (max-width:600px){#login #login-form-wrapper{padding:16px}#login #login-form-wrapper #login-form{padding:24px;width:100%}#login #login-form-wrapper #login-form form .md-button{width:90%}#login #login-form-wrapper #login-form .md-button.facebook,#login #login-form-wrapper #login-form .md-button.google{width:80%}}md-dialog.extractedReport-dialog{max-width:720px;width:720px}md-dialog.extractedReport-dialog md-dialog-content{display:block;position:relative}md-dialog.extractedReport-dialog md-toolbar .title{font-size:17px}md-dialog.extractedReport-dialog md-input-container textarea{min-height:150px}md-dialog.extractedReport-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.extractedReport-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.extractedReport-dialog .date-container{padding:16px 0 24px 0}md-dialog.extractedReport-dialog .error-list{font-size:13px}md-dialog.extractedReport-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.extractedReport-dialog .error-list .error .message{font-weight:500}md-dialog.extractedReport-dialog .error-list .error .md-button{margin:0}md-dialog.extractedReport-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.extractedReport-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#extractedReports{position:relative}#extractedReports>.header{height:76px;min-height:76px;max-height:76px}#extractedReports>.header .logo .logo-icon{margin:0 16px 0 0}#extractedReports>.header .logo .logo-text{font-size:24px}#extractedReports>.header md-icon{color:#fff}#extractedReports>.header .search-input-wrapper{position:relative}#extractedReports>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#extractedReports>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#extractedReports>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#extractedReports>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#extractedReports>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#extractedReports>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#extractedReports>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#extractedReports>.header.selected-bar .close-button-wrapper{width:244px}#extractedReports>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#extractedReports>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#extractedReports>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#extractedReports #add-extractedReport-button{position:fixed;bottom:8px;right:8px;padding:0}#extractedReports #upload-extractedReport-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.metric-dialog{max-width:720px;width:720px}md-dialog.metric-dialog md-dialog-content{display:block;position:relative}md-dialog.metric-dialog md-toolbar .title{font-size:17px}md-dialog.metric-dialog md-input-container textarea{min-height:150px}md-dialog.metric-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.metric-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.metric-dialog .date-container{padding:16px 0 24px 0}md-dialog.metric-dialog .error-list{font-size:13px}md-dialog.metric-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.metric-dialog .error-list .error .message{font-weight:500}md-dialog.metric-dialog .error-list .error .md-button{margin:0}md-dialog.metric-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.metric-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#metrics{position:relative}#metrics>.header{height:76px;min-height:76px;max-height:76px}#metrics>.header .logo .logo-icon{margin:0 16px 0 0}#metrics>.header .logo .logo-text{font-size:24px}#metrics>.header md-icon{color:#fff}#metrics>.header .search-input-wrapper{position:relative}#metrics>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#metrics>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#metrics>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#metrics>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#metrics>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#metrics>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#metrics>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#metrics>.header.selected-bar .close-button-wrapper{width:244px}#metrics>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#metrics>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#metrics>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#metrics #add-metric-button{position:fixed;bottom:8px;right:8px;padding:0}#metrics #upload-metric-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.report-dialog{max-width:720px;width:720px}md-dialog.report-dialog md-dialog-content{display:block;position:relative}md-dialog.report-dialog md-toolbar .title{font-size:17px}md-dialog.report-dialog md-input-container textarea{min-height:150px}md-dialog.report-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.report-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.report-dialog .date-container{padding:16px 0 24px 0}md-dialog.report-dialog .error-list{font-size:13px}md-dialog.report-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.report-dialog .error-list .error .message{font-weight:500}md-dialog.report-dialog .error-list .error .md-button{margin:0}md-dialog.report-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.report-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.report-dialog{max-width:720px;width:720px}md-dialog.report-dialog md-dialog-content{display:block;position:relative}md-dialog.report-dialog md-toolbar .title{font-size:17px}md-dialog.report-dialog md-input-container textarea{min-height:150px}md-dialog.report-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.report-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.report-dialog .date-container{padding:16px 0 24px 0}md-dialog.report-dialog .error-list{font-size:13px}md-dialog.report-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.report-dialog .error-list .error .message{font-weight:500}md-dialog.report-dialog .error-list .error .md-button{margin:0}md-dialog.report-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.report-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.reportField-dialog{max-width:720px;width:720px}md-dialog.reportField-dialog md-dialog-content{display:block;position:relative}md-dialog.reportField-dialog md-toolbar .title{font-size:17px}md-dialog.reportField-dialog md-input-container textarea{min-height:150px}md-dialog.reportField-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.reportField-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.reportField-dialog .date-container{padding:16px 0 24px 0}md-dialog.reportField-dialog .error-list{font-size:13px}md-dialog.reportField-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.reportField-dialog .error-list .error .message{font-weight:500}md-dialog.reportField-dialog .error-list .error .md-button{margin:0}md-dialog.reportField-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.reportField-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#analytics-report .header{height:76px;min-height:76px;max-height:76px}#analytics-report .header .goto-reports-button{margin-right:16px}#analytics-report .header .report-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#analytics-report .header .report-image img{height:100%;width:auto;max-width:none}#analytics-report .header .subtitle{margin:6px 0 0 0}#analytics-report .report-detail-form-container{padding:24px;margin-bottom:24px}#analytics-report .report-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#analytics-report .report-detail-form-container .handle{cursor:move}#analytics-report .report-detail-form-container md-input-container md-switch{margin:0!important}#analytics-report .report-detail-form-container #report-image-uploader{position:relative}#analytics-report .report-detail-form-container #report-image-uploader.dropping .drop-text{display:flex}#analytics-report .report-detail-form-container #report-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#analytics-report .report-detail-form-container #report-image-uploader .upload-button{margin-bottom:16px}#analytics-report .report-detail-form-container #report-image-uploader .report-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#analytics-report .report-detail-form-container #report-image-uploader .report-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#analytics-report .report-detail-form-container #report-image-uploader .report-image .media{max-height:100%}md-dialog.report-dialog{max-width:720px;width:720px}md-dialog.report-dialog md-dialog-content{display:block;position:relative}md-dialog.report-dialog md-toolbar .title{font-size:17px}md-dialog.report-dialog md-input-container textarea{min-height:150px}md-dialog.report-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.report-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.report-dialog .date-container{padding:16px 0 24px 0}md-dialog.report-dialog .error-list{font-size:13px}md-dialog.report-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.report-dialog .error-list .error .message{font-weight:500}md-dialog.report-dialog .error-list .error .md-button{margin:0}md-dialog.report-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.report-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#reports{position:relative}#reports>.header{height:76px;min-height:76px;max-height:76px}#reports>.header .logo .logo-icon{margin:0 16px 0 0}#reports>.header .logo .logo-text{font-size:24px}#reports>.header md-icon{color:#fff}#reports>.header .search-input-wrapper{position:relative}#reports>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#reports>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#reports>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#reports>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#reports>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#reports>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#reports>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#reports>.header.selected-bar .close-button-wrapper{width:244px}#reports>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#reports>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#reports>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}md-dialog.report-dialog{max-width:720px;width:720px}md-dialog.report-dialog md-dialog-content{display:block;position:relative}md-dialog.report-dialog md-toolbar .title{font-size:17px}md-dialog.report-dialog md-input-container textarea{min-height:150px}md-dialog.report-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.report-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.report-dialog .date-container{padding:16px 0 24px 0}md-dialog.report-dialog .error-list{font-size:13px}md-dialog.report-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.report-dialog .error-list .error .message{font-weight:500}md-dialog.report-dialog .error-list .error .md-button{margin:0}md-dialog.report-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.report-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.web-dialog md-dialog-content{display:block;position:relative}md-dialog.web-dialog md-toolbar .title{font-size:17px}md-dialog.web-dialog md-input-container textarea{min-height:150px}md-dialog.web-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.web-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.web-dialog .date-container{padding:16px 0 24px 0}md-dialog.web-dialog .error-list{font-size:13px}md-dialog.web-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.web-dialog .error-list .error .message{font-weight:500}md-dialog.web-dialog .error-list .error .md-button{margin:0}md-dialog.web-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.web-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.odbc-dialog{max-width:720px;width:720px}md-dialog.odbc-dialog md-dialog-content{display:block;position:relative}md-dialog.odbc-dialog md-toolbar .title{font-size:17px}md-dialog.odbc-dialog md-input-container textarea{min-height:150px}md-dialog.odbc-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.odbc-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.odbc-dialog .date-container{padding:16px 0 24px 0}md-dialog.odbc-dialog .error-list{font-size:13px}md-dialog.odbc-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.odbc-dialog .error-list .error .message{font-weight:500}md-dialog.odbc-dialog .error-list .error .md-button{margin:0}md-dialog.odbc-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.odbc-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#odbcs{position:relative}#odbcs>.header{height:76px;min-height:76px;max-height:76px}#odbcs>.header .logo .logo-icon{margin:0 16px 0 0}#odbcs>.header .logo .logo-text{font-size:24px}#odbcs>.header md-icon{color:#fff}#odbcs>.header .search-input-wrapper{position:relative}#odbcs>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#odbcs>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#odbcs>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#odbcs>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#odbcs>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#odbcs>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#odbcs>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#odbcs>.header.selected-bar .close-button-wrapper{width:244px}#odbcs>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#odbcs>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#odbcs>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#odbcs #add-odbc-button{position:fixed;bottom:8px;right:8px;padding:0}#odbcs #upload-odbc-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.project-dialog{max-width:720px;width:720px}md-dialog.project-dialog md-dialog-content{display:block;position:relative}md-dialog.project-dialog md-toolbar .title{font-size:17px}md-dialog.project-dialog md-input-container textarea{min-height:150px}md-dialog.project-dialog .date-container{padding:16px 0 24px 0}md-dialog.project-dialog .error-list{font-size:13px}md-dialog.project-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.project-dialog .error-list .error .message{font-weight:500}md-dialog.project-dialog .error-list .error .md-button{margin:0}md-dialog.project-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.project-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}md-dialog.project-dialog .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#callysquare-project .header{height:76px;min-height:76px;max-height:76px}#callysquare-project .header .goto-projects-button{margin-right:16px}#callysquare-project .header .project-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#callysquare-project .header .project-image img{height:100%;width:auto;max-width:none}#callysquare-project .header .subtitle{margin:6px 0 0 0}#callysquare-project .project-detail-form-container{padding:24px;margin-bottom:24px}#callysquare-project .project-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#callysquare-project .project-detail-form-container #project-image-uploader{position:relative}#callysquare-project .project-detail-form-container #project-image-uploader.dropping .drop-text{display:flex}#callysquare-project .project-detail-form-container #project-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#callysquare-project .project-detail-form-container #project-image-uploader .upload-button{margin-bottom:16px}#callysquare-project .project-detail-form-container #project-image-uploader .project-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#callysquare-project .project-detail-form-container #project-image-uploader .project-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#callysquare-project .project-detail-form-container #project-image-uploader .project-image .media{max-height:100%}#callysquare-project>.callysquare-content{position:absolute;top:76px;bottom:0;left:0;right:0}#projects{position:relative}#projects>.header{height:76px;min-height:76px;max-height:76px}#projects>.header .logo .logo-icon{margin:0 16px 0 0}#projects>.header .logo .logo-text{font-size:24px}#projects>.header md-icon{color:#fff}#projects>.header .search-input-wrapper{position:relative}#projects>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#projects>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#projects>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#projects>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#projects>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#projects>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#projects>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#projects>.header.selected-bar .close-button-wrapper{width:244px}#projects>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#projects>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#projects>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#projects #add-project-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.squareRecording-dialog{max-width:720px;width:720px}md-dialog.squareRecording-dialog md-dialog-content{display:block;position:relative}md-dialog.squareRecording-dialog md-toolbar .title{font-size:17px}md-dialog.squareRecording-dialog md-input-container textarea{min-height:150px}md-dialog.squareRecording-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.squareRecording-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.squareRecording-dialog .date-container{padding:16px 0 24px 0}md-dialog.squareRecording-dialog .error-list{font-size:13px}md-dialog.squareRecording-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.squareRecording-dialog .error-list .error .message{font-weight:500}md-dialog.squareRecording-dialog .error-list .error .md-button{margin:0}md-dialog.squareRecording-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.squareRecording-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#squareRecordings{position:relative}#squareRecordings>.header{height:76px;min-height:76px;max-height:76px}#squareRecordings>.header .logo .logo-icon{margin:0 16px 0 0}#squareRecordings>.header .logo .logo-text{font-size:24px}#squareRecordings>.header md-icon{color:#fff}#squareRecordings>.header .search-input-wrapper{position:relative}#squareRecordings>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#squareRecordings>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#squareRecordings>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#squareRecordings>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#squareRecordings>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#squareRecordings>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#squareRecordings>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#squareRecordings>.header.selected-bar .close-button-wrapper{width:244px}#squareRecordings>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#squareRecordings>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#squareRecordings>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#squareRecordings #add-squareRecording-button{position:fixed;bottom:8px;right:8px;padding:0}#squareRecordings #upload-squareRecording-button{position:fixed;bottom:8px;right:8px;padding:0}#chatQueues{position:relative}#chatQueues>.header{height:76px;min-height:76px;max-height:76px}#chatQueues>.header .logo .logo-icon{margin:0 16px 0 0}#chatQueues>.header .logo .logo-text{font-size:24px}#chatQueues>.header md-icon{color:#fff}#chatQueues>.header .search-input-wrapper{position:relative}#chatQueues>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#chatQueues>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#chatQueues>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#chatQueues>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#chatQueues>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#chatQueues>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#chatQueues>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#chatQueues>.header.selected-bar .close-button-wrapper{width:244px}#chatQueues>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#chatQueues>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#chatQueues>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#chatQueues #add-chatQueue-button{position:fixed;bottom:8px;right:8px;padding:0}#chatQueues #upload-chatQueue-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.chatQueue-dialog{max-width:720px;width:720px}md-dialog.chatQueue-dialog md-dialog-content{display:block;position:relative}md-dialog.chatQueue-dialog md-toolbar .title{font-size:17px}md-dialog.chatQueue-dialog md-input-container textarea{min-height:150px}md-dialog.chatQueue-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.chatQueue-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.chatQueue-dialog .date-container{padding:16px 0 24px 0}md-dialog.chatQueue-dialog .error-list{font-size:13px}md-dialog.chatQueue-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.chatQueue-dialog .error-list .error .message{font-weight:500}md-dialog.chatQueue-dialog .error-list .error .md-button{margin:0}md-dialog.chatQueue-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.chatQueue-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#chat-chatQueue .header{height:76px;min-height:76px;max-height:76px}#chat-chatQueue .header .goto-chatQueues-button{margin-right:16px}#chat-chatQueue .header .chatQueue-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#chat-chatQueue .header .chatQueue-image img{height:100%;width:auto;max-width:none}#chat-chatQueue .header .subtitle{margin:6px 0 0 0}#chat-chatQueue .chatQueue-detail-form-container{padding:24px;margin-bottom:24px}#chat-chatQueue .chatQueue-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#chat-chatQueue .chatQueue-detail-form-container .handle{cursor:move}#chat-chatQueue .chatQueue-detail-form-container md-input-container md-switch{margin:0!important}#chat-chatQueue .chatQueue-detail-form-container #chatQueue-image-uploader{position:relative}#chat-chatQueue .chatQueue-detail-form-container #chatQueue-image-uploader.dropping .drop-text{display:flex}#chat-chatQueue .chatQueue-detail-form-container #chatQueue-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#chat-chatQueue .chatQueue-detail-form-container #chatQueue-image-uploader .upload-button{margin-bottom:16px}#chat-chatQueue .chatQueue-detail-form-container #chatQueue-image-uploader .chatQueue-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#chat-chatQueue .chatQueue-detail-form-container #chatQueue-image-uploader .chatQueue-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#chat-chatQueue .chatQueue-detail-form-container #chatQueue-image-uploader .chatQueue-image .media{max-height:100%}#chat-chatQueue md-table-container thead tr th:not(:first-child):not(.no-padding){padding:0 20px 0 0!important}#chat-chatQueue md-table-container thead th.md-checkbox-column:not(.no-padding){padding:0 24px!important}#chat-chatQueue md-table-container tbody tr td:not(:first-child):not(.no-padding):not(.actions-padding){padding:0 20px 0 0!important}#chat-chatQueue md-table-container.font-size-12 td.md-cell{font-size:12px!important}#chatWebsites{position:relative}#chatWebsites>.header{height:76px;min-height:76px;max-height:76px}#chatWebsites>.header .logo .logo-icon{margin:0 16px 0 0}#chatWebsites>.header .logo .logo-text{font-size:24px}#chatWebsites>.header md-icon{color:#fff}#chatWebsites>.header .search-input-wrapper{position:relative}#chatWebsites>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#chatWebsites>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#chatWebsites>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#chatWebsites>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#chatWebsites>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#chatWebsites>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#chatWebsites>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#chatWebsites>.header.selected-bar .close-button-wrapper{width:244px}#chatWebsites>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#chatWebsites>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#chatWebsites>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#chatWebsites #add-chatWebsite-button{position:fixed;bottom:8px;right:8px;padding:0}#chatWebsites #upload-chatWebsite-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.chatWebsite-dialog{max-width:720px;width:720px}md-dialog.chatWebsite-dialog md-dialog-content{display:block;position:relative}md-dialog.chatWebsite-dialog md-toolbar .title{font-size:17px}md-dialog.chatWebsite-dialog md-input-container textarea{min-height:150px}md-dialog.chatWebsite-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.chatWebsite-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.chatWebsite-dialog .date-container{padding:16px 0 24px 0}md-dialog.chatWebsite-dialog .error-list{font-size:13px}md-dialog.chatWebsite-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.chatWebsite-dialog .error-list .error .message{font-weight:500}md-dialog.chatWebsite-dialog .error-list .error .md-button{margin:0}md-dialog.chatWebsite-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.chatWebsite-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.chatWebsite-dialog{max-width:720px;width:720px}md-dialog.chatWebsite-dialog md-dialog-content{display:block;position:relative}md-dialog.chatWebsite-dialog md-toolbar .title{font-size:17px}md-dialog.chatWebsite-dialog md-input-container textarea{min-height:150px}md-dialog.chatWebsite-dialog .date-container{padding:16px 0 24px 0}md-dialog.chatWebsite-dialog .error-list{font-size:13px}md-dialog.chatWebsite-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.chatWebsite-dialog .error-list .error .message{font-weight:500}md-dialog.chatWebsite-dialog .error-list .error .md-button{margin:0}md-dialog.chatWebsite-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.chatWebsite-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.chatWebsite-dialog{max-width:720px;width:720px}md-dialog.chatWebsite-dialog md-dialog-content{display:block;position:relative}md-dialog.chatWebsite-dialog md-toolbar .title{font-size:17px}md-dialog.chatWebsite-dialog md-input-container textarea{min-height:150px}md-dialog.chatWebsite-dialog .date-container{padding:16px 0 24px 0}md-dialog.chatWebsite-dialog .error-list{font-size:13px}md-dialog.chatWebsite-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.chatWebsite-dialog .error-list .error .message{font-weight:500}md-dialog.chatWebsite-dialog .error-list .error .md-button{margin:0}md-dialog.chatWebsite-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.chatWebsite-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.chatWebsite-dialog{max-width:720px;width:720px}md-dialog.chatWebsite-dialog md-dialog-content{display:block;position:relative}md-dialog.chatWebsite-dialog md-toolbar .title{font-size:17px}md-dialog.chatWebsite-dialog md-input-container textarea{min-height:150px}md-dialog.chatWebsite-dialog .date-container{padding:16px 0 24px 0}md-dialog.chatWebsite-dialog .error-list{font-size:13px}md-dialog.chatWebsite-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.chatWebsite-dialog .error-list .error .message{font-weight:500}md-dialog.chatWebsite-dialog .error-list .error .md-button{margin:0}md-dialog.chatWebsite-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.chatWebsite-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.chatWebsite-dialog{max-width:720px;width:720px}md-dialog.chatWebsite-dialog md-dialog-content{display:block;position:relative}md-dialog.chatWebsite-dialog md-toolbar .title{font-size:17px}md-dialog.chatWebsite-dialog md-input-container textarea{min-height:150px}md-dialog.chatWebsite-dialog .date-container{padding:16px 0 24px 0}md-dialog.chatWebsite-dialog .error-list{font-size:13px}md-dialog.chatWebsite-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.chatWebsite-dialog .error-list .error .message{font-weight:500}md-dialog.chatWebsite-dialog .error-list .error .md-button{margin:0}md-dialog.chatWebsite-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.chatWebsite-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.chatWebsite-dialog{max-width:720px;width:720px}md-dialog.chatWebsite-dialog md-dialog-content{display:block;position:relative}md-dialog.chatWebsite-dialog md-toolbar .title{font-size:17px}md-dialog.chatWebsite-dialog md-input-container textarea{min-height:150px}md-dialog.chatWebsite-dialog .date-container{padding:16px 0 24px 0}md-dialog.chatWebsite-dialog .error-list{font-size:13px}md-dialog.chatWebsite-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.chatWebsite-dialog .error-list .error .message{font-weight:500}md-dialog.chatWebsite-dialog .error-list .error .md-button{margin:0}md-dialog.chatWebsite-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.chatWebsite-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.chatWebsite-dialog{max-width:720px;width:720px}md-dialog.chatWebsite-dialog md-dialog-content{display:block;position:relative}md-dialog.chatWebsite-dialog md-toolbar .title{font-size:17px}md-dialog.chatWebsite-dialog md-input-container textarea{min-height:150px}md-dialog.chatWebsite-dialog .date-container{padding:16px 0 24px 0}md-dialog.chatWebsite-dialog .error-list{font-size:13px}md-dialog.chatWebsite-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.chatWebsite-dialog .error-list .error .message{font-weight:500}md-dialog.chatWebsite-dialog .error-list .error .md-button{margin:0}md-dialog.chatWebsite-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.chatWebsite-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.chatWebsite-dialog{max-width:720px;width:720px}md-dialog.chatWebsite-dialog md-dialog-content{display:block;position:relative}md-dialog.chatWebsite-dialog md-toolbar .title{font-size:17px}md-dialog.chatWebsite-dialog md-input-container textarea{min-height:150px}md-dialog.chatWebsite-dialog .date-container{padding:16px 0 24px 0}md-dialog.chatWebsite-dialog .error-list{font-size:13px}md-dialog.chatWebsite-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.chatWebsite-dialog .error-list .error .message{font-weight:500}md-dialog.chatWebsite-dialog .error-list .error .md-button{margin:0}md-dialog.chatWebsite-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.chatWebsite-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.chatWebsite-dialog{max-width:720px;width:720px}md-dialog.chatWebsite-dialog md-dialog-content{display:block;position:relative}md-dialog.chatWebsite-dialog md-toolbar .title{font-size:17px}md-dialog.chatWebsite-dialog md-input-container textarea{min-height:150px}md-dialog.chatWebsite-dialog .date-container{padding:16px 0 24px 0}md-dialog.chatWebsite-dialog .error-list{font-size:13px}md-dialog.chatWebsite-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.chatWebsite-dialog .error-list .error .message{font-weight:500}md-dialog.chatWebsite-dialog .error-list .error .md-button{margin:0}md-dialog.chatWebsite-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.chatWebsite-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.chatWebsite-dialog{max-width:720px;width:720px}md-dialog.chatWebsite-dialog md-dialog-content{display:block;position:relative}md-dialog.chatWebsite-dialog md-toolbar .title{font-size:17px}md-dialog.chatWebsite-dialog md-input-container textarea{min-height:150px}md-dialog.chatWebsite-dialog .date-container{padding:16px 0 24px 0}md-dialog.chatWebsite-dialog .error-list{font-size:13px}md-dialog.chatWebsite-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.chatWebsite-dialog .error-list .error .message{font-weight:500}md-dialog.chatWebsite-dialog .error-list .error .md-button{margin:0}md-dialog.chatWebsite-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.chatWebsite-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.chatWebsite-dialog{max-width:720px;width:720px}md-dialog.chatWebsite-dialog md-dialog-content{display:block;position:relative}md-dialog.chatWebsite-dialog md-toolbar .title{font-size:17px}md-dialog.chatWebsite-dialog md-input-container textarea{min-height:150px}md-dialog.chatWebsite-dialog .date-container{padding:16px 0 24px 0}md-dialog.chatWebsite-dialog .error-list{font-size:13px}md-dialog.chatWebsite-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.chatWebsite-dialog .error-list .error .message{font-weight:500}md-dialog.chatWebsite-dialog .error-list .error .md-button{margin:0}md-dialog.chatWebsite-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.chatWebsite-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.chatWebsite-dialog{max-width:720px;width:720px}md-dialog.chatWebsite-dialog md-dialog-content{display:block;position:relative}md-dialog.chatWebsite-dialog md-toolbar .title{font-size:17px}md-dialog.chatWebsite-dialog md-input-container textarea{min-height:150px}md-dialog.chatWebsite-dialog .date-container{padding:16px 0 24px 0}md-dialog.chatWebsite-dialog .error-list{font-size:13px}md-dialog.chatWebsite-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.chatWebsite-dialog .error-list .error .message{font-weight:500}md-dialog.chatWebsite-dialog .error-list .error .md-button{margin:0}md-dialog.chatWebsite-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.chatWebsite-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.chatWebsite-dialog{max-width:720px;width:720px}md-dialog.chatWebsite-dialog md-dialog-content{display:block;position:relative}md-dialog.chatWebsite-dialog md-toolbar .title{font-size:17px}md-dialog.chatWebsite-dialog md-input-container textarea{min-height:150px}md-dialog.chatWebsite-dialog .date-container{padding:16px 0 24px 0}md-dialog.chatWebsite-dialog .error-list{font-size:13px}md-dialog.chatWebsite-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.chatWebsite-dialog .error-list .error .message{font-weight:500}md-dialog.chatWebsite-dialog .error-list .error .md-button{margin:0}md-dialog.chatWebsite-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.chatWebsite-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.chatWebsite-dialog{max-width:720px;width:720px}md-dialog.chatWebsite-dialog md-dialog-content{display:block;position:relative}md-dialog.chatWebsite-dialog md-toolbar .title{font-size:17px}md-dialog.chatWebsite-dialog md-input-container textarea{min-height:150px}md-dialog.chatWebsite-dialog .date-container{padding:16px 0 24px 0}md-dialog.chatWebsite-dialog .error-list{font-size:13px}md-dialog.chatWebsite-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.chatWebsite-dialog .error-list .error .message{font-weight:500}md-dialog.chatWebsite-dialog .error-list .error .md-button{margin:0}md-dialog.chatWebsite-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.chatWebsite-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.chatWebsite-dialog{max-width:720px;width:720px}md-dialog.chatWebsite-dialog md-dialog-content{display:block;position:relative}md-dialog.chatWebsite-dialog md-toolbar .title{font-size:17px}md-dialog.chatWebsite-dialog md-input-container textarea{min-height:150px}md-dialog.chatWebsite-dialog .date-container{padding:16px 0 24px 0}md-dialog.chatWebsite-dialog .error-list{font-size:13px}md-dialog.chatWebsite-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.chatWebsite-dialog .error-list .error .message{font-weight:500}md-dialog.chatWebsite-dialog .error-list .error .md-button{margin:0}md-dialog.chatWebsite-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.chatWebsite-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.chatCannedAnswer-dialog{max-width:720px;width:720px}md-dialog.chatCannedAnswer-dialog md-dialog-content{display:block;position:relative}md-dialog.chatCannedAnswer-dialog md-toolbar .title{font-size:17px}md-dialog.chatCannedAnswer-dialog md-input-container textarea{min-height:150px}md-dialog.chatCannedAnswer-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.chatCannedAnswer-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.chatCannedAnswer-dialog .date-container{padding:16px 0 24px 0}md-dialog.chatCannedAnswer-dialog .error-list{font-size:13px}md-dialog.chatCannedAnswer-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.chatCannedAnswer-dialog .error-list .error .message{font-weight:500}md-dialog.chatCannedAnswer-dialog .error-list .error .md-button{margin:0}md-dialog.chatCannedAnswer-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.chatCannedAnswer-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.offlineMessage-dialog{max-width:720px;width:720px}md-dialog.offlineMessage-dialog md-dialog-content{display:block;position:relative}md-dialog.offlineMessage-dialog md-toolbar .title{font-size:17px}md-dialog.offlineMessage-dialog md-input-container textarea{min-height:150px}md-dialog.offlineMessage-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.offlineMessage-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.offlineMessage-dialog .date-container{padding:16px 0 24px 0}md-dialog.offlineMessage-dialog .error-list{font-size:13px}md-dialog.offlineMessage-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.offlineMessage-dialog .error-list .error .message{font-weight:500}md-dialog.offlineMessage-dialog .error-list .error .md-button{margin:0}md-dialog.offlineMessage-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.offlineMessage-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.chatProactiveAction-dialog{max-width:720px;width:720px}md-dialog.chatProactiveAction-dialog md-dialog-content{display:block;position:relative}md-dialog.chatProactiveAction-dialog md-toolbar .title{font-size:17px}md-dialog.chatProactiveAction-dialog md-input-container textarea{min-height:150px}md-dialog.chatProactiveAction-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.chatProactiveAction-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.chatProactiveAction-dialog .date-container{padding:16px 0 24px 0}md-dialog.chatProactiveAction-dialog .error-list{font-size:13px}md-dialog.chatProactiveAction-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.chatProactiveAction-dialog .error-list .error .message{font-weight:500}md-dialog.chatProactiveAction-dialog .error-list .error .md-button{margin:0}md-dialog.chatProactiveAction-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.chatProactiveAction-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#chat-chatWebsite .header{height:76px;min-height:76px;max-height:76px}#chat-chatWebsite .header .goto-chatWebsites-button{margin-right:16px}#chat-chatWebsite .header .chatWebsite-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#chat-chatWebsite .header .chatWebsite-image img{height:100%;width:auto;max-width:none}#chat-chatWebsite .header .subtitle{margin:6px 0 0 0}#chat-chatWebsite .chatWebsite-detail-form-container{padding:24px;margin-bottom:24px}#chat-chatWebsite .chatWebsite-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#chat-chatWebsite .chatWebsite-detail-form-container .handle{cursor:move}#chat-chatWebsite .chatWebsite-detail-form-container md-input-container md-switch{margin:0!important}#chat-chatWebsite .chatWebsite-detail-form-container #chatWebsite-image-uploader{position:relative}#chat-chatWebsite .chatWebsite-detail-form-container #chatWebsite-image-uploader.dropping .drop-text{display:flex}#chat-chatWebsite .chatWebsite-detail-form-container #chatWebsite-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#chat-chatWebsite .chatWebsite-detail-form-container #chatWebsite-image-uploader .upload-button{margin-bottom:16px}#chat-chatWebsite .chatWebsite-detail-form-container #chatWebsite-image-uploader .chatWebsite-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#chat-chatWebsite .chatWebsite-detail-form-container #chatWebsite-image-uploader .chatWebsite-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#chat-chatWebsite .chatWebsite-detail-form-container #chatWebsite-image-uploader .chatWebsite-image .media{max-height:100%}#chat-chatWebsite md-table-container thead tr th:not(:first-child):not(.no-padding){padding:0 20px 0 0!important}#chat-chatWebsite md-table-container thead th.md-checkbox-column:not(.no-padding){padding:0 24px!important}#chat-chatWebsite md-table-container tbody tr td:not(:first-child):not(.no-padding):not(.actions-padding){padding:0 20px 0 0!important}#chat-chatWebsite md-table-container.font-size-12 td.md-cell{font-size:12px!important}@media screen and (min-width:1921px){#chat-chatWebsite .actionAppData{width:800px!important}}@media screen and (max-width:1920px){#chat-chatWebsite .actionAppData{width:700px!important}}@media screen and (min-width:1751px) and (max-width:1919px){#chat-chatWebsite .actionAppData{width:600px!important}}@media screen and (min-width:1601px) and (max-width:1750px){#chat-chatWebsite .actionAppData{width:500px!important}}@media screen and (min-width:1537px) and (max-width:1600px){#chat-chatWebsite .actionAppData{width:450px!important}}@media screen and (min-width:1281px) and (max-width:1536px){#chat-chatWebsite .actionAppData{width:300px!important}}@media screen and (max-width:1280px){#chat-chatWebsite .actionAppData{width:150px!important}}@media screen and (max-width:960px){#chat-chatWebsite .actionAppData{width:80px!important}}#realtime{height:auto}#realtime>.content .blink{animation:blinker 2s linear infinite}#realtime>.content .avatar-wrapper{position:relative}#realtime>.content .avatar-wrapper .status{position:absolute;bottom:-3px;right:5px}#realtime>.content .search-input-wrapper{position:relative;margin-left:20px}#realtime>.content .search-input-wrapper label{padding:6px;cursor:pointer}#realtime>.content .search-input-wrapper md-input-container{padding-top:20px}#realtime>.content .main .labels{padding:8px 16px}#realtime>.content .main .labels .label{margin:0 0 2px 4px;padding:2px 5px;font-size:11px;white-space:nowrap;border-radius:2px}#realtime>.content .main .status{position:absolute;bottom:-3px;right:5px}#realtime>.content .main .avatar-wrapper{position:relative}#realtime>.content .main .avatar-wrapper .status{position:absolute;bottom:-3px;right:5px}#realtime>.content .custom-column{padding:0 24px!important}@keyframes blinker{50%{opacity:0}}#companies{position:relative}#companies>.header{height:76px;min-height:76px;max-height:76px}#companies>.header .logo .logo-icon{margin:0 16px 0 0}#companies>.header .logo .logo-text{font-size:24px}#companies>.header md-icon{color:#fff}#companies>.header .search-input-wrapper{position:relative}#companies>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#companies>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#companies>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#companies>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#companies>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#companies>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#companies>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#companies>.header.selected-bar .close-button-wrapper{width:244px}#companies>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#companies>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#companies>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#companies #add-company-button{position:fixed;bottom:8px;right:8px;padding:0}#companies #upload-company-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.company-dialog{max-width:720px;width:720px}md-dialog.company-dialog md-dialog-content{display:block;position:relative}md-dialog.company-dialog md-toolbar .title{font-size:17px}md-dialog.company-dialog md-input-container textarea{min-height:150px}md-dialog.company-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.company-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.company-dialog .date-container{padding:16px 0 24px 0}md-dialog.company-dialog .error-list{font-size:13px}md-dialog.company-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.company-dialog .error-list .error .message{font-weight:500}md-dialog.company-dialog .error-list .error .md-button{margin:0}md-dialog.company-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.company-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#contactmanager-company .header{height:76px;min-height:76px;max-height:76px}#contactmanager-company .header .goto-companies-button{margin-right:16px}#contactmanager-company .header .company-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#contactmanager-company .header .company-image img{height:100%;width:auto;max-width:none}#contactmanager-company .header .subtitle{margin:6px 0 0 0}#contactmanager-company .company-detail-form-container{padding:24px;margin-bottom:24px}#contactmanager-company .company-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#contactmanager-company .company-detail-form-container .handle{cursor:move}#contactmanager-company .company-detail-form-container md-input-container md-switch{margin:0!important}#contactmanager-company .company-detail-form-container #company-image-uploader{position:relative}#contactmanager-company .company-detail-form-container #company-image-uploader.dropping .drop-text{display:flex}#contactmanager-company .company-detail-form-container #company-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#contactmanager-company .company-detail-form-container #company-image-uploader .upload-button{margin-bottom:16px}#contactmanager-company .company-detail-form-container #company-image-uploader .company-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#contactmanager-company .company-detail-form-container #company-image-uploader .company-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#contactmanager-company .company-detail-form-container #company-image-uploader .company-image .media{max-height:100%}#contactmanager-company md-table-container thead tr th:not(:first-child):not(.no-padding){padding:0 20px 0 0!important}#contactmanager-company md-table-container thead th.md-checkbox-column:not(.no-padding){padding:0 24px!important}#contactmanager-company md-table-container tbody tr td:not(:first-child):not(.no-padding):not(.actions-padding){padding:0 20px 0 0!important}#contactmanager-company md-table-container.font-size-12 td.md-cell{font-size:12px!important}#contacts{position:relative}#contacts>.header{height:76px;min-height:76px;max-height:76px}#contacts>.header .logo .logo-icon{margin:0 16px 0 0}#contacts>.header .logo .logo-text{font-size:24px}#contacts>.header md-icon{color:#fff}#contacts>.header .search-input-wrapper{position:relative}#contacts>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#contacts>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#contacts>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#contacts>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#contacts>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#contacts>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#contacts>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#contacts>.header.selected-bar .close-button-wrapper{width:244px}#contacts>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#contacts>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#contacts>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#contacts #add-contact-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.cm-contact-dialog{max-width:720px;width:720px}md-dialog.cm-contact-dialog md-dialog-content{display:block;position:relative}md-dialog.cm-contact-dialog md-toolbar .title{font-size:17px}md-dialog.cm-contact-dialog md-input-container textarea{min-height:150px}md-dialog.cm-contact-dialog .date-container{padding:16px 0 24px 0}md-dialog.cm-contact-dialog .error-list{font-size:13px}md-dialog.cm-contact-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.cm-contact-dialog .error-list .error .message{font-weight:500}md-dialog.cm-contact-dialog .error-list .error .md-button{margin:0}md-dialog.cm-contact-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.cm-contact-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.cm-contact-dialog{max-width:720px;width:720px}md-dialog.cm-contact-dialog md-dialog-content{display:block;position:relative}md-dialog.cm-contact-dialog md-toolbar .title{font-size:17px}md-dialog.cm-contact-dialog md-input-container textarea{min-height:150px}md-dialog.cm-contact-dialog .date-container{padding:16px 0 24px 0}md-dialog.cm-contact-dialog .error-list{font-size:13px}md-dialog.cm-contact-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.cm-contact-dialog .error-list .error .message{font-weight:500}md-dialog.cm-contact-dialog .error-list .error .md-button{margin:0}md-dialog.cm-contact-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.cm-contact-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.hopper-dialog{max-width:720px;width:720px}md-dialog.hopper-dialog md-dialog-content{display:block;position:relative}md-dialog.hopper-dialog md-toolbar .title{font-size:17px}md-dialog.hopper-dialog md-input-container textarea{min-height:150px}md-dialog.hopper-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.hopper-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.hopper-dialog .date-container{padding:16px 0 24px 0}md-dialog.hopper-dialog .error-list{font-size:13px}md-dialog.hopper-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.hopper-dialog .error-list .error .message{font-weight:500}md-dialog.hopper-dialog .error-list .error .md-button{margin:0}md-dialog.hopper-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.hopper-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#cm-contact .pointer{cursor:pointer}#cm-contact .header{height:76px;min-height:76px;max-height:76px}#cm-contact .header .goto-contacts-button{margin-right:16px}#cm-contact .header .contact-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#cm-contact .header .contact-image img{height:100%;width:auto;max-width:none}#cm-contact .header .subtitle{margin:6px 0 0 0}#cm-contact .contact-detail-form-container{padding:24px;margin-bottom:24px}#cm-contact .contact-detail-form-container md-input-container:not(.md-input-invalid)>md-icon.email{color:green}#cm-contact .contact-detail-form-container md-input-container:not(.md-input-invalid)>md-icon.firstname{color:#1e90ff}#cm-contact .contact-detail-form-container md-input-container.md-input-invalid>md-icon.email,#cm-contact .contact-detail-form-container md-input-container.md-input-invalid>md-icon.firstname{color:red}#cm-contact .contact-detail-form-container .hint{position:absolute;left:2px;right:auto;bottom:7px;font-size:10px;line-height:14px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.import-dialog{max-width:720px;width:720px}md-dialog.import-dialog md-dialog-content{display:block;position:relative}md-dialog.import-dialog md-toolbar .title{font-size:17px}md-dialog.import-dialog md-input-container textarea{min-height:150px}md-dialog.import-dialog .date-container{padding:16px 0 24px 0}md-dialog.import-dialog .error-list{font-size:13px}md-dialog.import-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.import-dialog .error-list .error .message{font-weight:500}md-dialog.import-dialog .error-list .error .md-button{margin:0}md-dialog.import-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.import-dialog .error-list .info{background-color:rgba(24,160,135,.08);border:1px solid rgba(24,160,135,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.import-dialog .error-list .info .message{font-weight:500}md-dialog.import-dialog .error-list .info .md-button{margin:0}md-dialog.import-dialog .error-list .info:last-child{margin-bottom:30px}md-dialog.import-dialog .contact-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}md-dialog.import-dialog .contact-image img{height:100%;width:auto;max-width:none}md-dialog.import-dialog .contact-image .media{max-height:100%}md-dialog.import-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.cm-contact-dialog{max-width:720px;width:720px}md-dialog.cm-contact-dialog md-dialog-content{display:block;position:relative}md-dialog.cm-contact-dialog md-toolbar .title{font-size:17px}md-dialog.cm-contact-dialog md-input-container textarea{min-height:150px}md-dialog.cm-contact-dialog .date-container{padding:16px 0 24px 0}md-dialog.cm-contact-dialog .error-list{font-size:13px}md-dialog.cm-contact-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.cm-contact-dialog .error-list .error .message{font-weight:500}md-dialog.cm-contact-dialog .error-list .error .md-button{margin:0}md-dialog.cm-contact-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.cm-contact-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.globalCustomField-dialog{max-width:720px;width:720px}md-dialog.globalCustomField-dialog md-dialog-content{display:block;position:relative}md-dialog.globalCustomField-dialog md-toolbar .title{font-size:17px}md-dialog.globalCustomField-dialog md-input-container textarea{min-height:150px}md-dialog.globalCustomField-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.globalCustomField-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.globalCustomField-dialog .date-container{padding:16px 0 24px 0}md-dialog.globalCustomField-dialog .error-list{font-size:13px}md-dialog.globalCustomField-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.globalCustomField-dialog .error-list .error .message{font-weight:500}md-dialog.globalCustomField-dialog .error-list .error .md-button{margin:0}md-dialog.globalCustomField-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.globalCustomField-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#globalCustomFields{position:relative}#globalCustomFields>.header{height:76px;min-height:76px;max-height:76px}#globalCustomFields>.header .logo .logo-icon{margin:0 16px 0 0}#globalCustomFields>.header .logo .logo-text{font-size:24px}#globalCustomFields>.header md-icon{color:#fff}#globalCustomFields>.header .search-input-wrapper{position:relative}#globalCustomFields>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#globalCustomFields>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#globalCustomFields>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#globalCustomFields>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#globalCustomFields>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#globalCustomFields>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#globalCustomFields>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#globalCustomFields>.header.selected-bar .close-button-wrapper{width:244px}#globalCustomFields>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#globalCustomFields>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#globalCustomFields>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#globalCustomFields #add-globalCustomField-button{position:fixed;bottom:8px;right:8px;padding:0}#globalCustomFields #upload-globalCustomField-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.list-dialog{max-width:720px;width:720px}md-dialog.list-dialog md-dialog-content{display:block;position:relative}md-dialog.list-dialog md-toolbar .title{font-size:17px}md-dialog.list-dialog md-input-container textarea{min-height:150px}md-dialog.list-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.list-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.list-dialog .date-container{padding:16px 0 24px 0}md-dialog.list-dialog .error-list{font-size:13px}md-dialog.list-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.list-dialog .error-list .error .message{font-weight:500}md-dialog.list-dialog .error-list .error .md-button{margin:0}md-dialog.list-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.list-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.customField-dialog{max-width:720px;width:720px}md-dialog.customField-dialog md-dialog-content{display:block;position:relative}md-dialog.customField-dialog md-toolbar .title{font-size:17px}md-dialog.customField-dialog md-input-container textarea{min-height:150px}md-dialog.customField-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.customField-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.customField-dialog .date-container{padding:16px 0 24px 0}md-dialog.customField-dialog .error-list{font-size:13px}md-dialog.customField-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.customField-dialog .error-list .error .message{font-weight:500}md-dialog.customField-dialog .error-list .error .md-button{margin:0}md-dialog.customField-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.customField-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#contactmanager-list .header{height:76px;min-height:76px;max-height:76px}#contactmanager-list .header .goto-lists-button{margin-right:16px}#contactmanager-list .header .list-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#contactmanager-list .header .list-image img{height:100%;width:auto;max-width:none}#contactmanager-list .header .subtitle{margin:6px 0 0 0}#contactmanager-list .list-detail-form-container{padding:24px;margin-bottom:24px}#contactmanager-list .list-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#contactmanager-list .list-detail-form-container .handle{cursor:move}#contactmanager-list .list-detail-form-container md-input-container md-switch{margin:0!important}#contactmanager-list .list-detail-form-container #list-image-uploader{position:relative}#contactmanager-list .list-detail-form-container #list-image-uploader.dropping .drop-text{display:flex}#contactmanager-list .list-detail-form-container #list-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#contactmanager-list .list-detail-form-container #list-image-uploader .upload-button{margin-bottom:16px}#contactmanager-list .list-detail-form-container #list-image-uploader .list-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#contactmanager-list .list-detail-form-container #list-image-uploader .list-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#contactmanager-list .list-detail-form-container #list-image-uploader .list-image .media{max-height:100%}#contactmanager-list md-table-container thead tr th:not(:first-child):not(.no-padding){padding:0 20px 0 0!important}#contactmanager-list md-table-container thead th.md-checkbox-column:not(.no-padding){padding:0 24px!important}#contactmanager-list md-table-container tbody tr td:not(:first-child):not(.no-padding):not(.actions-padding){padding:0 20px 0 0!important}#contactmanager-list md-table-container.font-size-12 td.md-cell{font-size:12px!important}#lists{position:relative}#lists>.header{height:76px;min-height:76px;max-height:76px}#lists>.header .logo .logo-icon{margin:0 16px 0 0}#lists>.header .logo .logo-text{font-size:24px}#lists>.header md-icon{color:#fff}#lists>.header .search-input-wrapper{position:relative}#lists>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#lists>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#lists>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#lists>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#lists>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#lists>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#lists>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#lists>.header.selected-bar .close-button-wrapper{width:244px}#lists>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#lists>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#lists>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#lists #add-list-button{position:fixed;bottom:8px;right:8px;padding:0}#lists #upload-list-button{position:fixed;bottom:8px;right:8px;padding:0}#dashboard-custom .filter-header{background-image:url(/assets/images/backgrounds/header-bg.png);color:#fff}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#agent-general{width:100%;height:100%;overflow:hidden}#agent-general .agent-content{width:100%;height:100%;overflow:auto}#agent-general .agent-content.overflow-hidden{overflow:hidden}#agent-general .agent-content md-tabs{width:100%;height:100%}#agent-general .agent-content md-tabs md-tabs-content-wrapper{width:100%;height:calc(100% - 48px)}#agent-general .agent-content md-tabs md-tabs-content-wrapper md-tab-content.md-active{width:100%;height:100%;overflow:auto}#agent-general .agent-general-home-navbar{flex-grow:1;overflow-y:auto;overflow-x:hidden}#agent-general .agent-general-home-navbar::-webkit-scrollbar{width:0;background:0 0}#agent-general .agent-general-home-navbar::-webkit-scrollbar-thumb{background:0 0;border-radius:0}#agent-general .agent-general-home-sections{width:100%;height:100%;overflow:auto}#agent-general .badge{min-width:20px;height:20px;line-height:20px;padding:0 7px;font-size:11px;font-weight:700;border-radius:20px;transition:opacity .2s ease-in-out .1s}#agent-general .table-header{background-image:url(/assets/images/backgrounds/header-bg.png);color:#fff;overflow-x:auto}#agent-general .table-header::-webkit-scrollbar-thumb{background-color:rgba(0,0,0,.2)}#agent-general .table-header .md-toolbar-tools div md-select .md-select-value.md-select-placeholder{color:#fff}#agent-general .table-header .md-toolbar-tools div md-select[disabled] .md-select-value.md-select-placeholder{color:#fff}#agent-general .table-header .md-toolbar-tools div md-select[disabled] .md-select-value.md-select-placeholder .md-select-icon{display:none}#agent-general .table-header ms-quick-filter .quick-filter-date-clear-button{color:#fff}#agent-general .tooltip-preview{position:relative;display:inline-block;text-decoration:underline}#agent-general .tooltip-preview .tooltip-preview-text{display:none;opacity:0;width:500px;height:216px;position:fixed;white-space:pre-line;z-index:99999999;overflow:hidden;transition:opacity cubic-bezier(.075,.82,.165,1)}#agent-general .tooltip-preview .tooltip-preview-text .tooltip-preview-text-container{width:100%;height:100%;overflow:hidden}#agent-general .tooltip-preview .tooltip-preview-text .tooltip-preview-text-container .email-preview-message{display:block;display:-webkit-box;margin:0 auto;width:100%;height:100%;line-height:1.4;-webkit-line-clamp:10;-webkit-box-orient:vertical;overflow:hidden;text-overflow:ellipsis;word-break:break-all}#agent-general .tooltip-preview:hover .tooltip-preview-text{display:block;opacity:1}#agent-general .reload-list md-icon{color:#fff}#agent-general .advanced-search md-icon{color:#fff}#agent-general .create-new md-icon{color:#fff}#agent-general div.draft-manager-bar{background-color:#f5f5f5;position:sticky;height:34px;bottom:0;border-top:1px solid #e0e0e0}#agent-general div.draft-manager-bar ms-tab-scroll{overflow:hidden}#agent-general div.draft-manager-bar ms-tab-scroll div.draft-manager-tab{height:34px;border-right:1px solid #e0e0e0}#agent-general td.width-5,#agent-general th.width-5{width:5px!important;min-width:auto!important;max-width:none!important}#agent-general td.width-10,#agent-general th.width-10{width:10px!important;min-width:auto!important;max-width:none!important}#agent-general td.width-15,#agent-general th.width-15{width:15px!important;min-width:auto!important;max-width:none!important}#agent-general td.no-padding,#agent-general th.no-padding{padding:0!important}#agent-general span.contact-text{width:100px!important}#agent-general span.subject-text{width:300px!important}#agent-general span.no-margin-bottom{margin-bottom:0!important}#agent-general span.no-margin-top{margin-top:0!important}#agent-general md-table-container.interactions-list thead tr th:not(.no-padding):not(.id-header){padding:0 20px 0 0!important}#agent-general md-table-container.interactions-list tbody tr td:not(.no-padding):not(.actions-padding):not(.id){padding:0 20px 0 0!important}#agent-general td.actions-padding{padding:0 8px 0 0!important}#agent-general md-toolbar.md-table-toolbar[disabled]{pointer-events:none}#agent-general md-toolbar.md-table-toolbar[disabled] ms-search-bar{opacity:.7}#agent-general md-toolbar.md-table-toolbar[disabled] ms-quick-filter{opacity:.7}#agent-general md-toolbar.md-table-toolbar[disabled] button.advanced-search,#agent-general md-toolbar.md-table-toolbar[disabled] button.interaction-reload{opacity:.7}#agent-general md-card.call-info-card{min-width:220px}#agent-general md-card.call-info-card md-card-content,#agent-general md-card.call-info-card md-card-header{padding:10px!important}#agent-general md-card.call-info-card button.reload-button{padding:0;height:22px;width:auto}@media screen and (max-width:1280px){#agent-general span.contact-text{width:100px!important}}@media screen and (max-width:1920px){#agent-general span.contact-text{width:150px!important}}#agent-general-dialog{position:fixed;width:100%;height:100%}#agent-general-dialog .agent-content{position:fixed;top:0;bottom:0;left:0;right:0}body .md-select-menu-container{z-index:110}.md-toolbar-tools{font-size:12px}div.toolbar-quick-filter[disabled]{pointer-events:none;opacity:.7}md-dialog.agent-dialog{max-width:720px;width:720px}md-dialog.agent-dialog md-dialog-content{display:block;position:relative}md-dialog.agent-dialog md-toolbar .title{font-size:17px}md-dialog.agent-dialog md-input-container textarea{min-height:150px}md-dialog.agent-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.agent-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.agent-dialog .date-container{padding:16px 0 24px 0}md-dialog.agent-dialog .error-list{font-size:13px}md-dialog.agent-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.agent-dialog .error-list .error .message{font-weight:500}md-dialog.agent-dialog .error-list .error .md-button{margin:0}md-dialog.agent-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.agent-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.agent-dialog{max-width:720px;width:720px}md-dialog.agent-dialog md-dialog-content{display:block;position:relative}md-dialog.agent-dialog md-toolbar .title{font-size:17px}md-dialog.agent-dialog md-input-container textarea{min-height:150px}md-dialog.agent-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.agent-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.agent-dialog .date-container{padding:16px 0 24px 0}md-dialog.agent-dialog .error-list{font-size:13px}md-dialog.agent-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.agent-dialog .error-list .error .message{font-weight:500}md-dialog.agent-dialog .error-list .error .md-button{margin:0}md-dialog.agent-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.agent-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.contact-trigger-dialog{max-width:720px;width:720px}md-dialog.contact-trigger-dialog md-dialog-content{display:block;position:relative;max-height:400px;height:400px}md-dialog.contact-trigger-dialog md-toolbar{background-image:url(/assets/images/backgrounds/header-bg.png);background-position:top}md-dialog.contact-trigger-dialog md-toolbar .title{font-size:17px}md-dialog.contact-trigger-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}md-dialog.contact-trigger-dialog md-dialog-actions button.select-button{position:absolute;right:0;margin-right:16px}md-dialog md-grid-list.one-row-layout{height:150px;max-height:150px}md-dialog md-grid-list.two-rows-layout{height:300px;max-height:300px}md-dialog md-card.contact-info:hover{background-color:#e9eef1ad}@media screen and (max-width:1280px){md-dialog.contact-trigger-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.contact-trigger-dialog{width:90%}}md-dialog.agent-dialog{max-width:720px;width:720px}md-dialog.agent-dialog md-dialog-content{display:block;position:relative}md-dialog.agent-dialog md-toolbar .title{font-size:17px}md-dialog.agent-dialog md-input-container textarea{min-height:150px}md-dialog.agent-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.agent-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.agent-dialog .date-container{padding:16px 0 24px 0}md-dialog.agent-dialog .error-list{font-size:13px}md-dialog.agent-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.agent-dialog .error-list .error .message{font-weight:500}md-dialog.agent-dialog .error-list .error .md-button{margin:0}md-dialog.agent-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.agent-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.details-dialog{max-width:500px;width:500px}md-dialog.details-dialog md-dialog-content{display:block;position:relative}md-dialog.details-dialog md-toolbar .title{font-size:17px}md-dialog.details-dialog md-input-container textarea{min-height:150px}md-dialog.details-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.details-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.details-dialog .date-container{padding:16px 0 24px 0}md-dialog.details-dialog .error-list{font-size:13px}md-dialog.details-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.details-dialog .error-list .error .message{font-weight:500}md-dialog.details-dialog .error-list .error .md-button{margin:0}md-dialog.details-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.details-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#interaction-app .tags{font-size:12px}#interaction-app .tags .tag{border-radius:2px;padding:3px 8px;background-color:rgba(0,0,0,.08)}#interaction-app .tags .tag .tag-color{width:8px;height:8px;margin-right:8px;border-radius:50%}#interaction-app .content-card{position:relative;height:100%}#interaction-app .content-card .interaction{background:linear-gradient(to bottom,rgba(255,255,255,.8) 0,rgba(255,255,255,.6) 20%,rgba(255,255,255,.8))}#interaction-app .content-card .interaction .avatar-small{width:30px;min-width:30px;height:30px;line-height:30px;margin:0 8px 0 0;border-radius:50%;font-size:17px;font-weight:500;text-align:center;color:#fff}#interaction-app .content-card .interaction .interaction-agents{min-height:40px;background-color:#f3f4f5;color:rgba(0,0,0,.87);border-bottom:1px solid rgba(0,0,0,.08)}#interaction-app .content-card .interaction .interaction-agents .responsive-interactions-button{padding:0}#interaction-app .content-card .interaction .interaction-agents .interaction-contact{cursor:pointer}#interaction-app .content-card .interaction .interaction-agents .interaction-contact .avatar{margin-right:16px}#interaction-app .content-card .interaction .interaction-toolbar{min-height:64px;background-color:#f3f4f5;color:rgba(0,0,0,.87);border-bottom:1px solid rgba(0,0,0,.08)}#interaction-app .content-card .interaction .interaction-toolbar md-icon{color:rgba(0,0,0,.87)}#interaction-app .content-card .interaction .interaction-toolbar .responsive-interactions-button{padding:0}#interaction-app .content-card .interaction .interaction-toolbar .interaction-contact{cursor:pointer}#interaction-app .content-card .interaction .interaction-toolbar .interaction-contact .avatar{margin-right:16px}#interaction-app .content-card .interaction .cannedarea{margin-right:7px;font-size:14px;border:1px solid #ccc;border-radius:3px;align-self:stretch}#interaction-app .content-card .interaction .cannedarea md-autocomplete-wrap{padding:0 1em}#interaction-app .content-card .interaction .emojionearea{margin-right:7px}#interaction-app .content-card .interaction #interaction-content{background:url(/assets/images/patterns/circles-light.png) repeat}#interaction-app .content-card .interaction #interaction-content .message-row .mail-content{padding:24px 0}#interaction-app .content-card .interaction #interaction-content .message-row .mail-content .subject{color:rgba(0,0,0,.54)}#interaction-app .content-card .interaction #interaction-content .message-row .mail-content .subject .subject-text{margin-right:4px;text-transform:lowercase}#interaction-app .content-card .interaction #interaction-content .message-row .mail-content .info{padding-bottom:16px}#interaction-app .content-card .interaction #interaction-content .message-row .mail-content .info .avatar{margin-right:16px}#interaction-app .content-card .interaction #interaction-content .message-row .mail-content .info .name{margin-right:8px;font-weight:500}#interaction-app .content-card .interaction #interaction-content .message-row .mail-content .info .toggle-details{padding-top:16px;cursor:pointer;font-weight:500}#interaction-app .content-card .interaction #interaction-content .message-row .mail-content .info .details{padding-top:8px}#interaction-app .content-card .interaction #interaction-content .message-row .mail-content .info .details .title{font-weight:500;margin-right:6px}#interaction-app .content-card .interaction #interaction-content .message-row .mail-content .info .details .detail{color:rgba(0,0,0,.54)}#interaction-app .content-card .interaction #interaction-content .message-row .bubble{position:relative;padding:6px 7px 8px 9px;background-color:#fff;border:1px solid #dcdfe1;border-radius:6px;word-break:break-word}#interaction-app .content-card .interaction #interaction-content .message-row .bubble:after,#interaction-app .content-card .interaction #interaction-content .message-row .bubble:before{content:' ';position:absolute;width:0;height:0}#interaction-app .content-card .interaction #interaction-content .message-row .bubble:after{left:-7px;right:auto;top:0;bottom:auto;border:11px solid;border-color:#fff transparent transparent transparent}#interaction-app .content-card .interaction #interaction-content .message-row .bubble:before{left:-9px;right:auto;top:-1px;bottom:auto;border:8px solid;border-color:#dcdfe1 transparent transparent transparent}#interaction-app .content-card .interaction #interaction-content .message-row .bubble .time{font-size:11px;margin-top:0;text-align:right}#interaction-app .content-card .interaction #interaction-content .message-row .bubble .message{white-space:pre-wrap}#interaction-app .content-card .interaction #interaction-content .message-row .bubble .message span{word-break:break-all}#interaction-app .content-card .interaction #interaction-content .message-row.in{padding:5px}#interaction-app .content-card .interaction #interaction-content .message-row.in .avatar{margin:0 16px 0 0}#interaction-app .content-card .interaction #interaction-content .message-row.in-right-aligned{padding:5px;align-items:flex-end}#interaction-app .content-card .interaction #interaction-content .message-row.in-right-aligned .avatar{order:2;margin:0 0 0 16px}#interaction-app .content-card .interaction #interaction-content .message-row.in-right-aligned .bubble{margin-left:auto;order:1}#interaction-app .content-card .interaction #interaction-content .message-row.in-right-aligned .bubble:after{right:-9px;left:auto;top:auto;bottom:0;border-color:transparent transparent #e8f5e9 transparent}#interaction-app .content-card .interaction #interaction-content .message-row.in-right-aligned .bubble:before{right:-11px;left:auto;-moz-transform:scaleX(-1);-o-transform:scaleX(-1);-webkit-transform:scaleX(-1);transform:scaleX(-1)}#interaction-app .content-card .interaction #interaction-content .message-row.out{padding:5px;align-items:flex-end}#interaction-app .content-card .interaction #interaction-content .message-row.out .avatar{order:2;margin:0 0 0 16px}#interaction-app .content-card .interaction #interaction-content .message-row.out .bubble{margin-left:auto;background-color:#e8f5e9;border:1px solid #dfebe0;order:1}#interaction-app .content-card .interaction #interaction-content .message-row.out .bubble:after{right:-7px;left:auto;top:auto;bottom:0;border-color:transparent transparent #e8f5e9 transparent}#interaction-app .content-card .interaction #interaction-content .message-row.out .bubble:before{right:-9px;left:auto;top:auto;bottom:-1px;border-color:transparent transparent #dfebe0 transparent}#interaction-app .content-card .interaction #interaction-content .message-row.out-left-aligned{padding:5px}#interaction-app .content-card .interaction #interaction-content .message-row.out-left-aligned .avatar{order:1;margin:0 16px 0 0}#interaction-app .content-card .interaction #interaction-content .message-row.out-left-aligned .bubble{background-color:#e8f5e9;border:1px solid #dfebe0;order:2}#interaction-app .content-card .interaction #interaction-content .message-row.out-left-aligned .bubble:after{right:-7px;left:auto;top:auto;bottom:0;border-color:transparent transparent #e8f5e9 transparent}#interaction-app .content-card .interaction #interaction-content .message-row.out-left-aligned .bubble:before{right:-9px;left:auto;top:auto;bottom:-1px;border-color:transparent transparent #dfebe0 transparent}#interaction-app .content-card .interaction .interaction-footer{min-height:64px;max-height:180px;background-color:#f3f4f5;color:rgba(0,0,0,.87);border-top:1px solid rgba(0,0,0,.08);padding:8px 8px 8px 16px}#interaction-app .content-card .interaction .interaction-footer .reply-form md-input-container{margin:0;padding-right:16px}#interaction-app .content-card .interaction .interaction-footer .reply-form md-input-container textarea{overflow:auto;max-height:80px;transition:height .2s ease}#interaction-app .content-card .interaction .interaction-footer .reply-form md-input-container textarea.grow{height:80px}#interaction-app .content-card .interaction .interaction-footer .reply-form md-input-container .md-errors-spacer{display:none}#interaction-app .content-card .interaction .interaction-footer .reply-form .md-button{margin:0}#interaction-app .content-card .info md-list-item{min-height:40px;height:52px}#interaction-app .content-card .start-point{background:linear-gradient(to bottom,rgba(255,255,255,.8) 0,rgba(255,255,255,.6) 20%,rgba(255,255,255,.8))}#interaction-app .content-card .start-point .big-circle{background:linear-gradient(to bottom,rgba(255,255,255,.8) 0,rgba(255,255,255,.6) 20%,rgba(255,255,255,.8));border-radius:50%;width:300px;height:300px;line-height:300px;text-align:center}#interaction-app .content-card .start-point .app-title{font-weight:500;font-size:32px;margin:12px 0}#interaction-app .content-card .start-point .secondary-text{font-size:16px}#interaction-app .content-card .sidenav md-toolbar{border-bottom:1px solid rgba(0,0,0,.08)}#interaction-app .content-card .sidenav md-toolbar .md-toolbar-tools-bottom .search{height:36px;line-height:36px;padding:8px;background:#fff;font-size:13px}#interaction-app .content-card .sidenav md-toolbar .md-toolbar-tools-bottom .search .icon{margin:0;color:rgba(0,0,0,.54)}#interaction-app .content-card .sidenav md-toolbar .md-toolbar-tools-bottom .search input{padding-left:12px;height:36px;color:rgba(0,0,0,.54)}#interaction-app .content-card .sidenav md-list.contact-list,#interaction-app .content-card .sidenav md-list.interaction-list{position:relative;transition:all .2s ease-out}#interaction-app .content-card .sidenav md-list.contact-list .subheader,#interaction-app .content-card .sidenav md-list.contact-list md-list-item,#interaction-app .content-card .sidenav md-list.interaction-list .subheader,#interaction-app .content-card .sidenav md-list.interaction-list md-list-item{position:absolute;right:0;left:0;width:100%;transition:transform .2s ease-out;background:#fff;will-change:transform}#interaction-app .content-card .sidenav md-list.contact-list .subheader.ng-leave,#interaction-app .content-card .sidenav md-list.contact-list md-list-item.ng-leave,#interaction-app .content-card .sidenav md-list.interaction-list .subheader.ng-leave,#interaction-app .content-card .sidenav md-list.interaction-list md-list-item.ng-leave{transform:translateY(0);display:none}#interaction-app .content-card .sidenav md-list.contact-list .subheader.ng-leave.ng-leave-active,#interaction-app .content-card .sidenav md-list.contact-list md-list-item.ng-leave.ng-leave-active,#interaction-app .content-card .sidenav md-list.interaction-list .subheader.ng-leave.ng-leave-active,#interaction-app .content-card .sidenav md-list.interaction-list md-list-item.ng-leave.ng-leave-active{transform:translateY(-100%)}#interaction-app .content-card .sidenav md-list.contact-list .subheader.ng-hide,#interaction-app .content-card .sidenav md-list.contact-list md-list-item.ng-hide,#interaction-app .content-card .sidenav md-list.interaction-list .subheader.ng-hide,#interaction-app .content-card .sidenav md-list.interaction-list md-list-item.ng-hide{display:none}#interaction-app .content-card .sidenav md-list.contact-list .subheader.ng-hide-add-active,#interaction-app .content-card .sidenav md-list.contact-list .subheader.ng-hide-remove-active,#interaction-app .content-card .sidenav md-list.contact-list md-list-item.ng-hide-add-active,#interaction-app .content-card .sidenav md-list.contact-list md-list-item.ng-hide-remove-active,#interaction-app .content-card .sidenav md-list.interaction-list .subheader.ng-hide-add-active,#interaction-app .content-card .sidenav md-list.interaction-list .subheader.ng-hide-remove-active,#interaction-app .content-card .sidenav md-list.interaction-list md-list-item.ng-hide-add-active,#interaction-app .content-card .sidenav md-list.interaction-list md-list-item.ng-hide-remove-active{display:block;transition-property:all}#interaction-app .content-card .sidenav md-list.contact-list .subheader,#interaction-app .content-card .sidenav md-list.interaction-list .subheader{padding-left:16px;font-size:20px;font-weight:300;height:88px;line-height:88px}#interaction-app .content-card .sidenav .no-results-message{position:absolute;width:100%;height:88px;padding:16px;background:#fff;font-size:15px;font-weight:400}#interaction-app .avatar-wrapper{position:relative}#interaction-app .avatar-wrapper .avatar{margin-top:0;margin-bottom:0}#interaction-app .status{position:absolute;top:28px;left:28px;border-radius:50%}#interaction-app .status.online{color:#4caf50}#interaction-app .status.online:before{content:'\e709'}#interaction-app .status.do-not-disturb{color:#f44336}#interaction-app .status.do-not-disturb:before{content:'\e912'}#interaction-app .status.away{background-color:#ffc107;color:#fff}#interaction-app .status.away:before{content:'\e727'}#interaction-app .status.offline{color:#4caf50;background-color:#fff}#interaction-app .status.offline:before{content:'\e704'}#interaction-app .editable-wrap{position:relative}#interaction-app .editable-wrap .editable-controls{display:flex;flex-direction:row;align-items:center;width:100%}#interaction-app .editable-wrap .editable-controls .editable-input{width:inherit;background-color:#fff;padding:8px;border:1px solid rgba(0,0,0,.12)}#interaction-app .editable-wrap .editable-controls .editable-buttons{display:inherit}#interaction-app .editable-wrap .editable-controls .editable-buttons .md-button{margin:0}#interaction-app .editable-wrap .editable-controls .editable-buttons .md-button:first-of-type{padding-right:0}#interaction-app .editable-wrap .editable-controls .editable-buttons .md-button .icon-cancel{color:rgba(0,0,0,.32)}#interaction-app .editable-click{cursor:pointer;text-decoration:none;color:inherit;border-bottom:none}#interaction-app .emoji-picker-icon{right:5px;cursor:pointer}#interaction-app .input-show-hide{transition:all linear .5s}#interaction-app .input-show-hide.ng-hide{opacity:0}#interaction-app div.interaction-reply-button-container{display:inline;padding-bottom:14px}#timeline{position:relative;height:auto;padding-bottom:30px}#timeline:before{display:block;position:absolute;z-index:10;content:'';width:2px;background:rgba(0,0,0,.08);top:0;left:50%;bottom:0;margin-left:-1px}#timeline .ms-timeline-item{overflow:hidden;position:relative;z-index:20;width:100%;margin:0 auto;max-width:1200px}#timeline .ms-timeline-item .timeline-card{order:1}#timeline .ms-timeline-item .timeline-card .interaction .header .avatar .image{display:block;width:40px;height:40px;border-radius:20px}#timeline .ms-timeline-item .timeline-card .interaction .media .image{width:100%}#timeline .ms-timeline-item .timeline-point{position:absolute;width:40px;height:40px;line-height:40px;text-align:center;border-radius:50%;left:50%;margin:16px 0 0 -28px;order:2}#timeline .ms-timeline-item .timeline-point md-icon{color:#fff}#timeline .ms-timeline-item .timeline-detail{flex:50% 0 0;padding-top:28px;order:3}#timeline .ms-timeline-item .timeline-detail .time{font-size:15px;padding-left:68px}#timeline .ms-timeline-item .timeline-detail .event{color:rgba(0,0,0,.54);padding-left:68px}#timeline .ms-timeline-item:nth-child(odd) .timeline-card{flex-direction:row-reverse}#timeline .ms-timeline-item:nth-child(even) .timeline-card{order:3;padding-right:0}#timeline .ms-timeline-item:nth-child(even) .timeline-card ms-card{padding-left:84px}#timeline .ms-timeline-item:nth-child(even) .timeline-detail{order:1;padding-left:0;text-align:right}#timeline .ms-timeline-item:nth-child(even) .timeline-detail .event,#timeline .ms-timeline-item:nth-child(even) .timeline-detail .time{padding-right:68px}#timeline .ms-timeline-item:first-child{padding-top:15px}#timeline .ms-timeline-item.animate .timeline-card{animation:slide-in-left .4s}#timeline .ms-timeline-item.animate .timeline-point{animation:slide-in-bottom .4s}#timeline .ms-timeline-item.animate .timeline-detail{animation:slide-in-right .4s}#timeline .ms-timeline-item:nth-child(even).animate .timeline-card{animation:slide-in-right .4s}#timeline .ms-timeline-item:nth-child(even).animate .timeline-detail{animation:slide-in-left .4s}#timeline.timeline-left .ms-timeline-item .timeline-card{order:1}#timeline.timeline-left .ms-timeline-item .timeline-card ms-card{padding-right:68px;padding-left:0;margin-left:auto}#timeline.timeline-left .ms-timeline-item .timeline-detail{order:3;text-align:left}#timeline.timeline-left .ms-timeline-item.animate .timeline-card{animation:slide-in-left .4s}#timeline.timeline-left .ms-timeline-item.animate .timeline-detail{animation:slide-in-right .4s}#timeline.timeline-right .ms-timeline-item .timeline-card{order:3}#timeline.timeline-right .ms-timeline-item .timeline-card ms-card{padding-left:68px;padding-right:0;margin-right:auto}#timeline.timeline-right .ms-timeline-item .timeline-detail{order:1;text-align:right}#timeline.timeline-right .ms-timeline-item .timeline-detail .event,#timeline.timeline-right .ms-timeline-item .timeline-detail .time{padding-right:68px;padding-left:0}#timeline.timeline-right .ms-timeline-item.animate .timeline-card{animation:slide-in-right .4s}#timeline.timeline-right .ms-timeline-item.animate .timeline-detail{animation:slide-in-left .4s}@media screen and (max-width:1280px){#timeline .ms-timeline-item,#timeline.timeline-left .ms-timeline-item,#timeline.timeline-right .ms-timeline-item{display:block}#timeline .ms-timeline-item .timeline-point,#timeline.timeline-left .ms-timeline-item .timeline-point,#timeline.timeline-right .ms-timeline-item .timeline-point{position:relative;left:auto;margin:0 auto 16px auto;padding:0}#timeline .ms-timeline-item .timeline-detail,#timeline.timeline-left .ms-timeline-item .timeline-detail,#timeline.timeline-right .ms-timeline-item .timeline-detail{padding:2px;margin-bottom:16px}#timeline .ms-timeline-item .timeline-detail .event,#timeline .ms-timeline-item .timeline-detail .time,#timeline.timeline-left .ms-timeline-item .timeline-detail .event,#timeline.timeline-left .ms-timeline-item .timeline-detail .time,#timeline.timeline-right .ms-timeline-item .timeline-detail .event,#timeline.timeline-right .ms-timeline-item .timeline-detail .time{padding-right:0;padding-left:0;text-align:center}#timeline .ms-timeline-item .timeline-card ms-card,#timeline.timeline-left .ms-timeline-item .timeline-card ms-card,#timeline.timeline-right .ms-timeline-item .timeline-card ms-card{margin:0 auto;padding:0}#timeline .ms-timeline-item:nth-child(even) .timeline-point,#timeline.timeline-left .ms-timeline-item:nth-child(even) .timeline-point,#timeline.timeline-right .ms-timeline-item:nth-child(even) .timeline-point{position:relative;left:auto;margin:0 auto 16px auto;padding:0}#timeline .ms-timeline-item:nth-child(even) .timeline-detail,#timeline.timeline-left .ms-timeline-item:nth-child(even) .timeline-detail,#timeline.timeline-right .ms-timeline-item:nth-child(even) .timeline-detail{padding:2px;margin-bottom:16px}#timeline .ms-timeline-item:nth-child(even) .timeline-detail .event,#timeline .ms-timeline-item:nth-child(even) .timeline-detail .time,#timeline.timeline-left .ms-timeline-item:nth-child(even) .timeline-detail .event,#timeline.timeline-left .ms-timeline-item:nth-child(even) .timeline-detail .time,#timeline.timeline-right .ms-timeline-item:nth-child(even) .timeline-detail .event,#timeline.timeline-right .ms-timeline-item:nth-child(even) .timeline-detail .time{padding-right:0;padding-left:0;text-align:center}#timeline .ms-timeline-item:nth-child(even) .timeline-card ms-card,#timeline.timeline-left .ms-timeline-item:nth-child(even) .timeline-card ms-card,#timeline.timeline-right .ms-timeline-item:nth-child(even) .timeline-card ms-card{margin:0 auto;padding:0}}md-dialog.compose-dialog{max-width:720px;width:720px}md-dialog.compose-dialog.mail-no-secret{max-height:97%;max-width:90%!important;width:100%!important}md-dialog.compose-dialog md-dialog-content{display:block;position:relative}md-dialog.compose-dialog md-toolbar .title{font-size:17px}md-dialog.compose-dialog md-toolbar .vertical-divider{position:absolute;border-right-width:.5px;border-right-style:solid;height:100%}md-dialog.compose-dialog md-chips md-chip{font-size:12px}md-dialog.compose-dialog md-chips .md-chip-input-container{width:100%}md-dialog.compose-dialog .to{position:relative}md-dialog.compose-dialog .to.hidden-cc input{padding-right:32px}md-dialog.compose-dialog .to.hidden-cc.hidden-bcc input{padding-right:56px}md-dialog.compose-dialog .to.hidden-bcc input{padding-right:32px}md-dialog.compose-dialog .to .cc-bcc{position:absolute;bottom:8px;right:0}md-dialog.compose-dialog .to .cc-bcc .show-bcc,md-dialog.compose-dialog .to .cc-bcc .show-cc{cursor:pointer;font-size:12px}md-dialog.compose-dialog .to .cc-bcc .show-bcc{margin-left:8px}md-dialog.compose-dialog .attachment-list{font-size:13px}md-dialog.compose-dialog .attachment-list .attachment{background-color:rgba(0,0,0,.08);border:1px solid rgba(0,0,0,.16);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.compose-dialog .attachment-list .attachment .filename{font-weight:500}md-dialog.compose-dialog .attachment-list .attachment .md-button{margin:0}md-dialog.compose-dialog .attachment-list .attachment:last-child{margin-bottom:0}md-dialog.compose-dialog .error-list{font-size:13px}md-dialog.compose-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.compose-dialog .error-list .error .message{font-weight:500}md-dialog.compose-dialog .error-list .error .md-button{margin:0}md-dialog.compose-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.compose-dialog .emojionearea{max-width:700px;min-height:300px}md-dialog.compose-dialog md-dialog-actions{position:relative;justify-content:space-between;border-top:1px solid rgba(0,0,0,.12);background-color:rgba(0,0,0,.03)}@media screen and (max-width:960px){md-dialog.compose-dialog{width:80%}}@media screen and (max-width:600px){md-dialog.compose-dialog{width:90%}}md-dialog.disposition-dialog{max-width:720px;width:720px}md-dialog.disposition-dialog md-dialog-content{display:block;position:relative}md-dialog.disposition-dialog md-toolbar .title{font-size:17px}md-dialog.disposition-dialog md-input-container textarea{min-height:150px}md-dialog.disposition-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.disposition-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.disposition-dialog .date-container{padding:16px 0 24px 0}md-dialog.disposition-dialog .error-list{font-size:13px}md-dialog.disposition-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.disposition-dialog .error-list .error .message{font-weight:500}md-dialog.disposition-dialog .error-list .error .md-button{margin:0}md-dialog.disposition-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.disposition-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.disposition-dialog{max-width:720px;width:720px}md-dialog.disposition-dialog md-dialog-content{display:block;position:relative}md-dialog.disposition-dialog md-toolbar .title{font-size:17px}md-dialog.disposition-dialog md-input-container textarea{min-height:150px}md-dialog.disposition-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.disposition-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.disposition-dialog .date-container{padding:16px 0 24px 0}md-dialog.disposition-dialog .error-list{font-size:13px}md-dialog.disposition-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.disposition-dialog .error-list .error .message{font-weight:500}md-dialog.disposition-dialog .error-list .error .md-button{margin:0}md-dialog.disposition-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.disposition-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.disposition-dialog{max-width:720px;width:720px}md-dialog.disposition-dialog md-dialog-content{display:block;position:relative}md-dialog.disposition-dialog md-toolbar .title{font-size:17px}md-dialog.disposition-dialog md-input-container textarea{min-height:150px}md-dialog.disposition-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.disposition-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.disposition-dialog .date-container{padding:16px 0 24px 0}md-dialog.disposition-dialog .error-list{font-size:13px}md-dialog.disposition-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.disposition-dialog .error-list .error .message{font-weight:500}md-dialog.disposition-dialog .error-list .error .md-button{margin:0}md-dialog.disposition-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.disposition-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#dashboard-general>.center>.header{height:160px;min-height:160px;max-height:160px;padding-bottom:0}#dashboard-general>.center>.header .selected-general{background:rgba(0,0,0,.12);color:#fff;padding:8px 16px;height:40px;line-height:24px;font-size:16px}#dashboard-general>.center>.header .general-selector{margin-left:1px;border-radius:0;background:rgba(0,0,0,.12)}#dashboard-general>.center>.header .general-selector md-icon{color:#fff}#dashboard-general>.center>.content{background:0 0;padding:0}#dashboard-general>.center>.content>md-tabs>md-tabs-wrapper{background:#fff;box-shadow:0 1px 3px 0 rgba(0,0,0,.2),0 1px 1px 0 rgba(0,0,0,.14),0 2px 1px -1px rgba(0,0,0,.12);padding:0 24px}#dashboard-general>.center>.content>md-tabs>md-tabs-wrapper md-tabs-canvas{height:56px}#dashboard-general>.center>.content>md-tabs>md-tabs-wrapper md-tabs-canvas md-pagination-wrapper{height:56px}#dashboard-general>.center>.content>md-tabs>md-tabs-wrapper md-tabs-canvas .md-tab{padding:16px 24px;text-transform:none}#dashboard-general>.center>.content>md-tabs:not(.md-dynamic-height) md-tabs-content-wrapper{top:56px}#dashboard-general>.center>.content>md-tabs>md-tabs-content-wrapper md-tab-content{padding:12px}#dashboard-general>.sidenav{width:330px;min-width:330px;max-width:330px;padding:0;z-index:51;box-shadow:0 5px 5px -3px rgba(0,0,0,.2),0 8px 10px 1px rgba(0,0,0,.14),0 3px 14px 2px rgba(0,0,0,.12)}#dashboard-general>.sidenav.md-locked-open{width:250px;min-width:250px;max-width:250px;z-index:2;box-shadow:none;background:#eee}#dashboard-general .dashboard-container{padding:24px;margin-bottom:24px}#dashboard-general .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.faxAccount-dialog{max-width:720px;width:720px}md-dialog.faxAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.faxAccount-dialog md-toolbar .title{font-size:17px}md-dialog.faxAccount-dialog md-input-container textarea{min-height:150px}md-dialog.faxAccount-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.faxAccount-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.faxAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.faxAccount-dialog .error-list{font-size:13px}md-dialog.faxAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.faxAccount-dialog .error-list .error .message{font-weight:500}md-dialog.faxAccount-dialog .error-list .error .md-button{margin:0}md-dialog.faxAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.faxAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.faxAccount-dialog{max-width:720px;width:720px}md-dialog.faxAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.faxAccount-dialog md-toolbar .title{font-size:17px}md-dialog.faxAccount-dialog md-input-container textarea{min-height:150px}md-dialog.faxAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.faxAccount-dialog .error-list{font-size:13px}md-dialog.faxAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.faxAccount-dialog .error-list .error .message{font-weight:500}md-dialog.faxAccount-dialog .error-list .error .md-button{margin:0}md-dialog.faxAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.faxAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.faxAccount-dialog{max-width:720px;width:720px}md-dialog.faxAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.faxAccount-dialog md-toolbar .title{font-size:17px}md-dialog.faxAccount-dialog md-input-container textarea{min-height:150px}md-dialog.faxAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.faxAccount-dialog .error-list{font-size:13px}md-dialog.faxAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.faxAccount-dialog .error-list .error .message{font-weight:500}md-dialog.faxAccount-dialog .error-list .error .md-button{margin:0}md-dialog.faxAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.faxAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.faxAccount-dialog{max-width:720px;width:720px}md-dialog.faxAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.faxAccount-dialog md-toolbar .title{font-size:17px}md-dialog.faxAccount-dialog md-input-container textarea{min-height:150px}md-dialog.faxAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.faxAccount-dialog .error-list{font-size:13px}md-dialog.faxAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.faxAccount-dialog .error-list .error .message{font-weight:500}md-dialog.faxAccount-dialog .error-list .error .md-button{margin:0}md-dialog.faxAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.faxAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.faxAccount-dialog{max-width:720px;width:720px}md-dialog.faxAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.faxAccount-dialog md-toolbar .title{font-size:17px}md-dialog.faxAccount-dialog md-input-container textarea{min-height:150px}md-dialog.faxAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.faxAccount-dialog .error-list{font-size:13px}md-dialog.faxAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.faxAccount-dialog .error-list .error .message{font-weight:500}md-dialog.faxAccount-dialog .error-list .error .md-button{margin:0}md-dialog.faxAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.faxAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.faxAccount-dialog{max-width:720px;width:720px}md-dialog.faxAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.faxAccount-dialog md-toolbar .title{font-size:17px}md-dialog.faxAccount-dialog md-input-container textarea{min-height:150px}md-dialog.faxAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.faxAccount-dialog .error-list{font-size:13px}md-dialog.faxAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.faxAccount-dialog .error-list .error .message{font-weight:500}md-dialog.faxAccount-dialog .error-list .error .md-button{margin:0}md-dialog.faxAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.faxAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.faxAccount-dialog{max-width:720px;width:720px}md-dialog.faxAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.faxAccount-dialog md-toolbar .title{font-size:17px}md-dialog.faxAccount-dialog md-input-container textarea{min-height:150px}md-dialog.faxAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.faxAccount-dialog .error-list{font-size:13px}md-dialog.faxAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.faxAccount-dialog .error-list .error .message{font-weight:500}md-dialog.faxAccount-dialog .error-list .error .md-button{margin:0}md-dialog.faxAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.faxAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.faxAccount-dialog{max-width:720px;width:720px}md-dialog.faxAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.faxAccount-dialog md-toolbar .title{font-size:17px}md-dialog.faxAccount-dialog md-input-container textarea{min-height:150px}md-dialog.faxAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.faxAccount-dialog .error-list{font-size:13px}md-dialog.faxAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.faxAccount-dialog .error-list .error .message{font-weight:500}md-dialog.faxAccount-dialog .error-list .error .md-button{margin:0}md-dialog.faxAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.faxAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.faxAccount-dialog{max-width:720px;width:720px}md-dialog.faxAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.faxAccount-dialog md-toolbar .title{font-size:17px}md-dialog.faxAccount-dialog md-input-container textarea{min-height:150px}md-dialog.faxAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.faxAccount-dialog .error-list{font-size:13px}md-dialog.faxAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.faxAccount-dialog .error-list .error .message{font-weight:500}md-dialog.faxAccount-dialog .error-list .error .md-button{margin:0}md-dialog.faxAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.faxAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.faxAccount-dialog{max-width:720px;width:720px}md-dialog.faxAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.faxAccount-dialog md-toolbar .title{font-size:17px}md-dialog.faxAccount-dialog md-input-container textarea{min-height:150px}md-dialog.faxAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.faxAccount-dialog .error-list{font-size:13px}md-dialog.faxAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.faxAccount-dialog .error-list .error .message{font-weight:500}md-dialog.faxAccount-dialog .error-list .error .md-button{margin:0}md-dialog.faxAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.faxAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#fax-faxAccount .header{height:76px;min-height:76px;max-height:76px}#fax-faxAccount .header .goto-faxAccounts-button{margin-right:16px}#fax-faxAccount .header .faxAccount-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#fax-faxAccount .header .faxAccount-image img{height:100%;width:auto;max-width:none}#fax-faxAccount .header .subtitle{margin:6px 0 0 0}#fax-faxAccount .faxAccount-detail-form-container{padding:24px;margin-bottom:24px}#fax-faxAccount .faxAccount-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#fax-faxAccount .faxAccount-detail-form-container .handle{cursor:move}#fax-faxAccount .faxAccount-detail-form-container md-input-container md-switch{margin:0!important}#fax-faxAccount .faxAccount-detail-form-container #faxAccount-image-uploader{position:relative}#fax-faxAccount .faxAccount-detail-form-container #faxAccount-image-uploader.dropping .drop-text{display:flex}#fax-faxAccount .faxAccount-detail-form-container #faxAccount-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#fax-faxAccount .faxAccount-detail-form-container #faxAccount-image-uploader .upload-button{margin-bottom:16px}#fax-faxAccount .faxAccount-detail-form-container #faxAccount-image-uploader .faxAccount-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#fax-faxAccount .faxAccount-detail-form-container #faxAccount-image-uploader .faxAccount-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#fax-faxAccount .faxAccount-detail-form-container #faxAccount-image-uploader .faxAccount-image .media{max-height:100%}#fax-faxAccount md-table-container thead tr th:not(:first-child):not(.no-padding){padding:0 20px 0 0!important}#fax-faxAccount md-table-container thead th.md-checkbox-column:not(.no-padding){padding:0 24px!important}#fax-faxAccount md-table-container tbody tr td:not(:first-child):not(.no-padding):not(.actions-padding){padding:0 20px 0 0!important}#fax-faxAccount md-table-container.font-size-12 td.md-cell{font-size:12px!important}@media screen and (min-width:1921px){#fax-faxAccount .actionAppData{width:800px!important}}@media screen and (max-width:1920px){#fax-faxAccount .actionAppData{width:700px!important}}@media screen and (min-width:1751px) and (max-width:1919px){#fax-faxAccount .actionAppData{width:600px!important}}@media screen and (min-width:1601px) and (max-width:1750px){#fax-faxAccount .actionAppData{width:500px!important}}@media screen and (min-width:1537px) and (max-width:1600px){#fax-faxAccount .actionAppData{width:450px!important}}@media screen and (min-width:1281px) and (max-width:1536px){#fax-faxAccount .actionAppData{width:300px!important}}@media screen and (max-width:1280px){#fax-faxAccount .actionAppData{width:150px!important}}@media screen and (max-width:960px){#fax-faxAccount .actionAppData{width:80px!important}}#faxAccounts{position:relative}#faxAccounts>.header{height:76px;min-height:76px;max-height:76px}#faxAccounts>.header .logo .logo-icon{margin:0 16px 0 0}#faxAccounts>.header .logo .logo-text{font-size:24px}#faxAccounts>.header md-icon{color:#fff}#faxAccounts>.header .search-input-wrapper{position:relative}#faxAccounts>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#faxAccounts>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#faxAccounts>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#faxAccounts>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#faxAccounts>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#faxAccounts>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#faxAccounts>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#faxAccounts>.header.selected-bar .close-button-wrapper{width:244px}#faxAccounts>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#faxAccounts>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#faxAccounts>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#faxAccounts #add-faxAccount-button{position:fixed;bottom:8px;right:8px;padding:0}#faxAccounts #upload-faxAccount-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.faxQueue-dialog{max-width:720px;width:720px}md-dialog.faxQueue-dialog md-dialog-content{display:block;position:relative}md-dialog.faxQueue-dialog md-toolbar .title{font-size:17px}md-dialog.faxQueue-dialog md-input-container textarea{min-height:150px}md-dialog.faxQueue-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.faxQueue-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.faxQueue-dialog .date-container{padding:16px 0 24px 0}md-dialog.faxQueue-dialog .error-list{font-size:13px}md-dialog.faxQueue-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.faxQueue-dialog .error-list .error .message{font-weight:500}md-dialog.faxQueue-dialog .error-list .error .md-button{margin:0}md-dialog.faxQueue-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.faxQueue-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#fax-faxQueue .header{height:76px;min-height:76px;max-height:76px}#fax-faxQueue .header .goto-faxQueues-button{margin-right:16px}#fax-faxQueue .header .faxQueue-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#fax-faxQueue .header .faxQueue-image img{height:100%;width:auto;max-width:none}#fax-faxQueue .header .subtitle{margin:6px 0 0 0}#fax-faxQueue .faxQueue-detail-form-container{padding:24px;margin-bottom:24px}#fax-faxQueue .faxQueue-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#fax-faxQueue .faxQueue-detail-form-container .handle{cursor:move}#fax-faxQueue .faxQueue-detail-form-container md-input-container md-switch{margin:0!important}#fax-faxQueue .faxQueue-detail-form-container #faxQueue-image-uploader{position:relative}#fax-faxQueue .faxQueue-detail-form-container #faxQueue-image-uploader.dropping .drop-text{display:flex}#fax-faxQueue .faxQueue-detail-form-container #faxQueue-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#fax-faxQueue .faxQueue-detail-form-container #faxQueue-image-uploader .upload-button{margin-bottom:16px}#fax-faxQueue .faxQueue-detail-form-container #faxQueue-image-uploader .faxQueue-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#fax-faxQueue .faxQueue-detail-form-container #faxQueue-image-uploader .faxQueue-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#fax-faxQueue .faxQueue-detail-form-container #faxQueue-image-uploader .faxQueue-image .media{max-height:100%}#fax-faxQueue md-table-container thead tr th:not(:first-child):not(.no-padding){padding:0 20px 0 0!important}#fax-faxQueue md-table-container thead th.md-checkbox-column:not(.no-padding){padding:0 24px!important}#fax-faxQueue md-table-container tbody tr td:not(:first-child):not(.no-padding):not(.actions-padding){padding:0 20px 0 0!important}#fax-faxQueue md-table-container.font-size-12 td.md-cell{font-size:12px!important}#faxQueues{position:relative}#faxQueues>.header{height:76px;min-height:76px;max-height:76px}#faxQueues>.header .logo .logo-icon{margin:0 16px 0 0}#faxQueues>.header .logo .logo-text{font-size:24px}#faxQueues>.header md-icon{color:#fff}#faxQueues>.header .search-input-wrapper{position:relative}#faxQueues>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#faxQueues>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#faxQueues>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#faxQueues>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#faxQueues>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#faxQueues>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#faxQueues>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#faxQueues>.header.selected-bar .close-button-wrapper{width:244px}#faxQueues>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#faxQueues>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#faxQueues>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#faxQueues #add-faxQueue-button{position:fixed;bottom:8px;right:8px;padding:0}#faxQueues #upload-faxQueue-button{position:fixed;bottom:8px;right:8px;padding:0}#realtime{height:auto}#realtime>.content .blink{animation:blinker 2s linear infinite}#realtime>.content .avatar-wrapper{position:relative}#realtime>.content .avatar-wrapper .status{position:absolute;bottom:-3px;right:5px}#realtime>.content .search-input-wrapper{position:relative;margin-left:20px}#realtime>.content .search-input-wrapper label{padding:6px;cursor:pointer}#realtime>.content .search-input-wrapper md-input-container{padding-top:20px}#realtime>.content .main .labels{padding:8px 16px}#realtime>.content .main .labels .label{margin:0 0 2px 4px;padding:2px 5px;font-size:11px;white-space:nowrap;border-radius:2px}#realtime>.content .main .status{position:absolute;bottom:-3px;right:5px}#realtime>.content .main .avatar-wrapper{position:relative}#realtime>.content .main .avatar-wrapper .status{position:absolute;bottom:-3px;right:5px}#realtime>.content .custom-column{padding:0 24px!important}@keyframes blinker{50%{opacity:0}}#profile .about-tab{max-width:1200px}#profile .about-tab .about{padding:8px}#profile .about-tab .about .general .location md-icon{line-height:13px!important}#profile .about-tab .about .work .job .company{padding:0 16px 0 0;font-weight:500}#profile .about-tab .about .work .job .date{color:rgba(0,0,0,.54)}#profile .about-tab .about-sidebar{padding:8px 8px 8px 32px}#profile .about-tab .about-sidebar .friends .content .friend{padding:4px}#profile .about-tab .about-sidebar .groups .content .group{margin-bottom:16px}#profile .about-tab .about-sidebar .groups .content .group:last-child{margin-bottom:0}#profile .about-tab .about-sidebar .groups .content .group .logo{border:1px solid rgba(0,0,0,.12);margin-right:16px}#profile .about-tab .about-sidebar .groups .content .group .name{font-weight:500;font-size:15px}#profile .about-tab .about-sidebar .groups .content .group .category,#profile .about-tab .about-sidebar .groups .content .group .members{color:rgba(0,0,0,.54)}#profile .about-tab .about-sidebar .groups .content .group .members{margin-top:16px}@media screen and (max-width:960px){#profile .about-tab .about-sidebar{padding:8px}}#maintenance{height:100%;background:url(/assets/images/backgrounds/tech.png) no-repeat;background-size:cover}#maintenance #maintenance-form-wrapper{flex:1 0 auto;padding:32px}#maintenance #maintenance-form-wrapper #maintenance-form{max-width:384px;padding:32px;background:#fff;text-align:center}#maintenance #maintenance-form-wrapper #maintenance-form .logo{width:128px;height:128px;line-height:128px;font-size:86px;font-weight:500;margin:32px auto;color:#fff;border-radius:2px}#maintenance #maintenance-form-wrapper #maintenance-form .title{font-size:17px;margin-top:16px}#maintenance #maintenance-form-wrapper #maintenance-form .subtitle{margin:16px 0;max-width:300px;color:rgba(0,0,0,.54);font-size:15px}@media screen and (max-width:600px){#maintenance #maintenance-form-wrapper{padding:16px}#maintenance #maintenance-form-wrapper #maintenance-form{padding:24px;width:100%}}md-dialog.deskAccount-dialog{max-width:720px;width:720px}md-dialog.deskAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.deskAccount-dialog md-toolbar .title{font-size:17px}md-dialog.deskAccount-dialog md-input-container textarea{min-height:150px}md-dialog.deskAccount-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.deskAccount-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.deskAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.deskAccount-dialog .error-list{font-size:13px}md-dialog.deskAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.deskAccount-dialog .error-list .error .message{font-weight:500}md-dialog.deskAccount-dialog .error-list .error .md-button{margin:0}md-dialog.deskAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.deskAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#deskAccounts{position:relative}#deskAccounts>.header{height:76px;min-height:76px;max-height:76px}#deskAccounts>.header .logo .logo-icon{margin:0 16px 0 0}#deskAccounts>.header .logo .logo-text{font-size:24px}#deskAccounts>.header md-icon{color:#fff}#deskAccounts>.header .search-input-wrapper{position:relative}#deskAccounts>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#deskAccounts>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#deskAccounts>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#deskAccounts>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#deskAccounts>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#deskAccounts>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#deskAccounts>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#deskAccounts>.header.selected-bar .close-button-wrapper{width:244px}#deskAccounts>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#deskAccounts>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#deskAccounts>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#deskAccounts #add-deskAccount-button{position:fixed;bottom:8px;right:8px;padding:0}#deskAccounts #upload-deskAccount-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.deskConfiguration-dialog{max-width:720px;width:720px}md-dialog.deskConfiguration-dialog md-dialog-content{display:block;position:relative}md-dialog.deskConfiguration-dialog md-toolbar .title{font-size:17px}md-dialog.deskConfiguration-dialog md-input-container textarea{min-height:150px}md-dialog.deskConfiguration-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.deskConfiguration-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.deskConfiguration-dialog .date-container{padding:16px 0 24px 0}md-dialog.deskConfiguration-dialog .error-list{font-size:13px}md-dialog.deskConfiguration-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.deskConfiguration-dialog .error-list .error .message{font-weight:500}md-dialog.deskConfiguration-dialog .error-list .error .md-button{margin:0}md-dialog.deskConfiguration-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.deskConfiguration-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.deskAccount-item-dialog{max-width:720px;width:720px}md-dialog.deskAccount-item-dialog md-dialog-content{display:block;position:relative}md-dialog.deskAccount-item-dialog md-toolbar .title{font-size:17px}md-dialog.deskAccount-item-dialog md-input-container textarea{min-height:150px}md-dialog.deskAccount-item-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.deskAccount-item-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.deskAccount-item-dialog .date-container{padding:16px 0 24px 0}md-dialog.deskAccount-item-dialog .error-list{font-size:13px}md-dialog.deskAccount-item-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.deskAccount-item-dialog .error-list .error .message{font-weight:500}md-dialog.deskAccount-item-dialog .error-list .error .md-button{margin:0}md-dialog.deskAccount-item-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.deskAccount-item-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#integrations-deskAccount .header{height:76px;min-height:76px;max-height:76px}#integrations-deskAccount .header .goto-deskAccounts-button{margin-right:16px}#integrations-deskAccount .header .deskAccount-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#integrations-deskAccount .header .deskAccount-image img{height:100%;width:auto;max-width:none}#integrations-deskAccount .header .subtitle{margin:6px 0 0 0}#integrations-deskAccount .deskAccount-detail-form-container{padding:24px;margin-bottom:24px}#integrations-deskAccount .deskAccount-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#integrations-deskAccount .deskAccount-detail-form-container .handle{cursor:move}#integrations-deskAccount .deskAccount-detail-form-container md-input-container md-switch{margin:0!important}#integrations-deskAccount .deskAccount-detail-form-container #deskAccount-image-uploader{position:relative}#integrations-deskAccount .deskAccount-detail-form-container #deskAccount-image-uploader.dropping .drop-text{display:flex}#integrations-deskAccount .deskAccount-detail-form-container #deskAccount-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#integrations-deskAccount .deskAccount-detail-form-container #deskAccount-image-uploader .upload-button{margin-bottom:16px}#integrations-deskAccount .deskAccount-detail-form-container #deskAccount-image-uploader .deskAccount-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#integrations-deskAccount .deskAccount-detail-form-container #deskAccount-image-uploader .deskAccount-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#integrations-deskAccount .deskAccount-detail-form-container #deskAccount-image-uploader .deskAccount-image .media{max-height:100%}#integrations-deskAccount md-table-container thead tr th:not(:first-child):not(.no-padding){padding:0 20px 0 0!important}#integrations-deskAccount md-table-container thead th.md-checkbox-column:not(.no-padding){padding:0 24px!important}#integrations-deskAccount md-table-container tbody tr td:not(:first-child):not(.no-padding):not(.actions-padding){padding:0 20px 0 0!important}#integrations-deskAccount md-table-container.font-size-12 td.md-cell{font-size:12px!important}md-dialog.dynamics365Account-dialog{max-width:720px;width:720px}md-dialog.dynamics365Account-dialog md-dialog-content{display:block;position:relative}md-dialog.dynamics365Account-dialog md-toolbar .title{font-size:17px}md-dialog.dynamics365Account-dialog md-input-container textarea{min-height:150px}md-dialog.dynamics365Account-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.dynamics365Account-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.dynamics365Account-dialog .date-container{padding:16px 0 24px 0}md-dialog.dynamics365Account-dialog .error-list{font-size:13px}md-dialog.dynamics365Account-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.dynamics365Account-dialog .error-list .error .message{font-weight:500}md-dialog.dynamics365Account-dialog .error-list .error .md-button{margin:0}md-dialog.dynamics365Account-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.dynamics365Account-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#dynamics365Accounts{position:relative}#dynamics365Accounts>.header{height:76px;min-height:76px;max-height:76px}#dynamics365Accounts>.header .logo .logo-icon{margin:0 16px 0 0}#dynamics365Accounts>.header .logo .logo-text{font-size:24px}#dynamics365Accounts>.header md-icon{color:#fff}#dynamics365Accounts>.header .search-input-wrapper{position:relative}#dynamics365Accounts>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#dynamics365Accounts>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#dynamics365Accounts>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#dynamics365Accounts>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#dynamics365Accounts>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#dynamics365Accounts>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#dynamics365Accounts>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#dynamics365Accounts>.header.selected-bar .close-button-wrapper{width:244px}#dynamics365Accounts>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#dynamics365Accounts>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#dynamics365Accounts>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#dynamics365Accounts #add-dynamics365Account-button{position:fixed;bottom:8px;right:8px;padding:0}#dynamics365Accounts #upload-dynamics365Account-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.dynamics365Configuration-dialog{max-width:720px;width:720px}md-dialog.dynamics365Configuration-dialog md-dialog-content{display:block;position:relative}md-dialog.dynamics365Configuration-dialog md-toolbar .title{font-size:17px}md-dialog.dynamics365Configuration-dialog md-input-container textarea{min-height:150px}md-dialog.dynamics365Configuration-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.dynamics365Configuration-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.dynamics365Configuration-dialog .date-container{padding:16px 0 24px 0}md-dialog.dynamics365Configuration-dialog .error-list{font-size:13px}md-dialog.dynamics365Configuration-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.dynamics365Configuration-dialog .error-list .error .message{font-weight:500}md-dialog.dynamics365Configuration-dialog .error-list .error .md-button{margin:0}md-dialog.dynamics365Configuration-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.dynamics365Configuration-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.dynamics365Account-item-dialog{max-width:720px;width:720px}md-dialog.dynamics365Account-item-dialog md-dialog-content{display:block;position:relative}md-dialog.dynamics365Account-item-dialog md-toolbar .title{font-size:17px}md-dialog.dynamics365Account-item-dialog md-input-container textarea{min-height:150px}md-dialog.dynamics365Account-item-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.dynamics365Account-item-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.dynamics365Account-item-dialog .date-container{padding:16px 0 24px 0}md-dialog.dynamics365Account-item-dialog .error-list{font-size:13px}md-dialog.dynamics365Account-item-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.dynamics365Account-item-dialog .error-list .error .message{font-weight:500}md-dialog.dynamics365Account-item-dialog .error-list .error .md-button{margin:0}md-dialog.dynamics365Account-item-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.dynamics365Account-item-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#integrations-dynamics365Account .header{height:76px;min-height:76px;max-height:76px}#integrations-dynamics365Account .header .goto-dynamics365Accounts-button{margin-right:16px}#integrations-dynamics365Account .header .dynamics365Account-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#integrations-dynamics365Account .header .dynamics365Account-image img{height:100%;width:auto;max-width:none}#integrations-dynamics365Account .header .subtitle{margin:6px 0 0 0}#integrations-dynamics365Account .dynamics365Account-detail-form-container{padding:24px;margin-bottom:24px}#integrations-dynamics365Account .dynamics365Account-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#integrations-dynamics365Account .dynamics365Account-detail-form-container .handle{cursor:move}#integrations-dynamics365Account .dynamics365Account-detail-form-container md-input-container md-switch{margin:0!important}#integrations-dynamics365Account .dynamics365Account-detail-form-container #dynamics365Account-image-uploader{position:relative}#integrations-dynamics365Account .dynamics365Account-detail-form-container #dynamics365Account-image-uploader.dropping .drop-text{display:flex}#integrations-dynamics365Account .dynamics365Account-detail-form-container #dynamics365Account-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#integrations-dynamics365Account .dynamics365Account-detail-form-container #dynamics365Account-image-uploader .upload-button{margin-bottom:16px}#integrations-dynamics365Account .dynamics365Account-detail-form-container #dynamics365Account-image-uploader .dynamics365Account-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#integrations-dynamics365Account .dynamics365Account-detail-form-container #dynamics365Account-image-uploader .dynamics365Account-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#integrations-dynamics365Account .dynamics365Account-detail-form-container #dynamics365Account-image-uploader .dynamics365Account-image .media{max-height:100%}#integrations-dynamics365Account md-table-container thead tr th:not(:first-child):not(.no-padding){padding:0 20px 0 0!important}#integrations-dynamics365Account md-table-container thead th.md-checkbox-column:not(.no-padding){padding:0 24px!important}#integrations-dynamics365Account md-table-container tbody tr td:not(:first-child):not(.no-padding):not(.actions-padding){padding:0 20px 0 0!important}#integrations-dynamics365Account md-table-container.font-size-12 td.md-cell{font-size:12px!important}md-dialog.freshdeskAccount-dialog{max-width:720px;width:720px}md-dialog.freshdeskAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.freshdeskAccount-dialog md-toolbar .title{font-size:17px}md-dialog.freshdeskAccount-dialog md-input-container textarea{min-height:150px}md-dialog.freshdeskAccount-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.freshdeskAccount-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.freshdeskAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.freshdeskAccount-dialog .error-list{font-size:13px}md-dialog.freshdeskAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.freshdeskAccount-dialog .error-list .error .message{font-weight:500}md-dialog.freshdeskAccount-dialog .error-list .error .md-button{margin:0}md-dialog.freshdeskAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.freshdeskAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.freshdeskConfiguration-dialog{max-width:720px;width:720px}md-dialog.freshdeskConfiguration-dialog md-dialog-content{display:block;position:relative}md-dialog.freshdeskConfiguration-dialog md-toolbar .title{font-size:17px}md-dialog.freshdeskConfiguration-dialog md-input-container textarea{min-height:150px}md-dialog.freshdeskConfiguration-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.freshdeskConfiguration-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.freshdeskConfiguration-dialog .date-container{padding:16px 0 24px 0}md-dialog.freshdeskConfiguration-dialog .error-list{font-size:13px}md-dialog.freshdeskConfiguration-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.freshdeskConfiguration-dialog .error-list .error .message{font-weight:500}md-dialog.freshdeskConfiguration-dialog .error-list .error .md-button{margin:0}md-dialog.freshdeskConfiguration-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.freshdeskConfiguration-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.freshdeskAccount-item-dialog{max-width:720px;width:720px}md-dialog.freshdeskAccount-item-dialog md-dialog-content{display:block;position:relative}md-dialog.freshdeskAccount-item-dialog md-toolbar .title{font-size:17px}md-dialog.freshdeskAccount-item-dialog md-input-container textarea{min-height:150px}md-dialog.freshdeskAccount-item-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.freshdeskAccount-item-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.freshdeskAccount-item-dialog .date-container{padding:16px 0 24px 0}md-dialog.freshdeskAccount-item-dialog .error-list{font-size:13px}md-dialog.freshdeskAccount-item-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.freshdeskAccount-item-dialog .error-list .error .message{font-weight:500}md-dialog.freshdeskAccount-item-dialog .error-list .error .md-button{margin:0}md-dialog.freshdeskAccount-item-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.freshdeskAccount-item-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#integrations-freshdeskAccount .header{height:76px;min-height:76px;max-height:76px}#integrations-freshdeskAccount .header .goto-freshdeskAccounts-button{margin-right:16px}#integrations-freshdeskAccount .header .freshdeskAccount-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#integrations-freshdeskAccount .header .freshdeskAccount-image img{height:100%;width:auto;max-width:none}#integrations-freshdeskAccount .header .subtitle{margin:6px 0 0 0}#integrations-freshdeskAccount .freshdeskAccount-detail-form-container{padding:24px;margin-bottom:24px}#integrations-freshdeskAccount .freshdeskAccount-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#integrations-freshdeskAccount .freshdeskAccount-detail-form-container .handle{cursor:move}#integrations-freshdeskAccount .freshdeskAccount-detail-form-container md-input-container md-switch{margin:0!important}#integrations-freshdeskAccount .freshdeskAccount-detail-form-container #freshdeskAccount-image-uploader{position:relative}#integrations-freshdeskAccount .freshdeskAccount-detail-form-container #freshdeskAccount-image-uploader.dropping .drop-text{display:flex}#integrations-freshdeskAccount .freshdeskAccount-detail-form-container #freshdeskAccount-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#integrations-freshdeskAccount .freshdeskAccount-detail-form-container #freshdeskAccount-image-uploader .upload-button{margin-bottom:16px}#integrations-freshdeskAccount .freshdeskAccount-detail-form-container #freshdeskAccount-image-uploader .freshdeskAccount-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#integrations-freshdeskAccount .freshdeskAccount-detail-form-container #freshdeskAccount-image-uploader .freshdeskAccount-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#integrations-freshdeskAccount .freshdeskAccount-detail-form-container #freshdeskAccount-image-uploader .freshdeskAccount-image .media{max-height:100%}#integrations-freshdeskAccount md-table-container thead tr th:not(:first-child):not(.no-padding){padding:0 20px 0 0!important}#integrations-freshdeskAccount md-table-container thead th.md-checkbox-column:not(.no-padding){padding:0 24px!important}#integrations-freshdeskAccount md-table-container tbody tr td:not(:first-child):not(.no-padding):not(.actions-padding){padding:0 20px 0 0!important}#integrations-freshdeskAccount md-table-container.font-size-12 td.md-cell{font-size:12px!important}#freshdeskAccounts{position:relative}#freshdeskAccounts>.header{height:76px;min-height:76px;max-height:76px}#freshdeskAccounts>.header .logo .logo-icon{margin:0 16px 0 0}#freshdeskAccounts>.header .logo .logo-text{font-size:24px}#freshdeskAccounts>.header md-icon{color:#fff}#freshdeskAccounts>.header .search-input-wrapper{position:relative}#freshdeskAccounts>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#freshdeskAccounts>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#freshdeskAccounts>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#freshdeskAccounts>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#freshdeskAccounts>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#freshdeskAccounts>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#freshdeskAccounts>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#freshdeskAccounts>.header.selected-bar .close-button-wrapper{width:244px}#freshdeskAccounts>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#freshdeskAccounts>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#freshdeskAccounts>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#freshdeskAccounts #add-freshdeskAccount-button{position:fixed;bottom:8px;right:8px;padding:0}#freshdeskAccounts #upload-freshdeskAccount-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.freshsalesAccount-dialog{max-width:720px;width:720px}md-dialog.freshsalesAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.freshsalesAccount-dialog md-toolbar .title{font-size:17px}md-dialog.freshsalesAccount-dialog md-input-container textarea{min-height:150px}md-dialog.freshsalesAccount-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.freshsalesAccount-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.freshsalesAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.freshsalesAccount-dialog .error-list{font-size:13px}md-dialog.freshsalesAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.freshsalesAccount-dialog .error-list .error .message{font-weight:500}md-dialog.freshsalesAccount-dialog .error-list .error .md-button{margin:0}md-dialog.freshsalesAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.freshsalesAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.freshsalesConfiguration-dialog{max-width:720px;width:720px}md-dialog.freshsalesConfiguration-dialog md-dialog-content{display:block;position:relative}md-dialog.freshsalesConfiguration-dialog md-toolbar .title{font-size:17px}md-dialog.freshsalesConfiguration-dialog md-input-container textarea{min-height:150px}md-dialog.freshsalesConfiguration-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.freshsalesConfiguration-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.freshsalesConfiguration-dialog .date-container{padding:16px 0 24px 0}md-dialog.freshsalesConfiguration-dialog .error-list{font-size:13px}md-dialog.freshsalesConfiguration-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.freshsalesConfiguration-dialog .error-list .error .message{font-weight:500}md-dialog.freshsalesConfiguration-dialog .error-list .error .md-button{margin:0}md-dialog.freshsalesConfiguration-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.freshsalesConfiguration-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.freshsalesAccount-item-dialog{max-width:720px;width:720px}md-dialog.freshsalesAccount-item-dialog md-dialog-content{display:block;position:relative}md-dialog.freshsalesAccount-item-dialog md-toolbar .title{font-size:17px}md-dialog.freshsalesAccount-item-dialog md-input-container textarea{min-height:150px}md-dialog.freshsalesAccount-item-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.freshsalesAccount-item-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.freshsalesAccount-item-dialog .date-container{padding:16px 0 24px 0}md-dialog.freshsalesAccount-item-dialog .error-list{font-size:13px}md-dialog.freshsalesAccount-item-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.freshsalesAccount-item-dialog .error-list .error .message{font-weight:500}md-dialog.freshsalesAccount-item-dialog .error-list .error .md-button{margin:0}md-dialog.freshsalesAccount-item-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.freshsalesAccount-item-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#integrations-freshsalesAccount .header{height:76px;min-height:76px;max-height:76px}#integrations-freshsalesAccount .header .goto-freshsalesAccounts-button{margin-right:16px}#integrations-freshsalesAccount .header .freshsalesAccount-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#integrations-freshsalesAccount .header .freshsalesAccount-image img{height:100%;width:auto;max-width:none}#integrations-freshsalesAccount .header .subtitle{margin:6px 0 0 0}#integrations-freshsalesAccount .freshsalesAccount-detail-form-container{padding:24px;margin-bottom:24px}#integrations-freshsalesAccount .freshsalesAccount-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#integrations-freshsalesAccount .freshsalesAccount-detail-form-container .handle{cursor:move}#integrations-freshsalesAccount .freshsalesAccount-detail-form-container md-input-container md-switch{margin:0!important}#integrations-freshsalesAccount .freshsalesAccount-detail-form-container #freshsalesAccount-image-uploader{position:relative}#integrations-freshsalesAccount .freshsalesAccount-detail-form-container #freshsalesAccount-image-uploader.dropping .drop-text{display:flex}#integrations-freshsalesAccount .freshsalesAccount-detail-form-container #freshsalesAccount-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#integrations-freshsalesAccount .freshsalesAccount-detail-form-container #freshsalesAccount-image-uploader .upload-button{margin-bottom:16px}#integrations-freshsalesAccount .freshsalesAccount-detail-form-container #freshsalesAccount-image-uploader .freshsalesAccount-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#integrations-freshsalesAccount .freshsalesAccount-detail-form-container #freshsalesAccount-image-uploader .freshsalesAccount-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#integrations-freshsalesAccount .freshsalesAccount-detail-form-container #freshsalesAccount-image-uploader .freshsalesAccount-image .media{max-height:100%}#integrations-freshsalesAccount md-table-container thead tr th:not(:first-child):not(.no-padding){padding:0 20px 0 0!important}#integrations-freshsalesAccount md-table-container thead th.md-checkbox-column:not(.no-padding){padding:0 24px!important}#integrations-freshsalesAccount md-table-container tbody tr td:not(:first-child):not(.no-padding):not(.actions-padding){padding:0 20px 0 0!important}#integrations-freshsalesAccount md-table-container.font-size-12 td.md-cell{font-size:12px!important}#freshsalesAccounts{position:relative}#freshsalesAccounts>.header{height:76px;min-height:76px;max-height:76px}#freshsalesAccounts>.header .logo .logo-icon{margin:0 16px 0 0}#freshsalesAccounts>.header .logo .logo-text{font-size:24px}#freshsalesAccounts>.header md-icon{color:#fff}#freshsalesAccounts>.header .search-input-wrapper{position:relative}#freshsalesAccounts>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#freshsalesAccounts>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#freshsalesAccounts>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#freshsalesAccounts>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#freshsalesAccounts>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#freshsalesAccounts>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#freshsalesAccounts>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#freshsalesAccounts>.header.selected-bar .close-button-wrapper{width:244px}#freshsalesAccounts>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#freshsalesAccounts>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#freshsalesAccounts>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#freshsalesAccounts #add-freshsalesAccount-button{position:fixed;bottom:8px;right:8px;padding:0}#freshsalesAccounts #upload-freshsalesAccount-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.salesforceAccount-dialog{max-width:720px;width:720px}md-dialog.salesforceAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.salesforceAccount-dialog md-toolbar .title{font-size:17px}md-dialog.salesforceAccount-dialog md-input-container textarea{min-height:150px}md-dialog.salesforceAccount-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.salesforceAccount-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.salesforceAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.salesforceAccount-dialog .error-list{font-size:13px}md-dialog.salesforceAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.salesforceAccount-dialog .error-list .error .message{font-weight:500}md-dialog.salesforceAccount-dialog .error-list .error .md-button{margin:0}md-dialog.salesforceAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.salesforceAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.salesforceConfiguration-dialog{max-width:720px;width:720px}md-dialog.salesforceConfiguration-dialog md-dialog-content{display:block;position:relative}md-dialog.salesforceConfiguration-dialog md-toolbar .title{font-size:17px}md-dialog.salesforceConfiguration-dialog md-input-container textarea{min-height:150px}md-dialog.salesforceConfiguration-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.salesforceConfiguration-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.salesforceConfiguration-dialog .date-container{padding:16px 0 24px 0}md-dialog.salesforceConfiguration-dialog .error-list{font-size:13px}md-dialog.salesforceConfiguration-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.salesforceConfiguration-dialog .error-list .error .message{font-weight:500}md-dialog.salesforceConfiguration-dialog .error-list .error .md-button{margin:0}md-dialog.salesforceConfiguration-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.salesforceConfiguration-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.salesforceAccount-item-dialog{max-width:720px;width:720px}md-dialog.salesforceAccount-item-dialog md-dialog-content{display:block;position:relative}md-dialog.salesforceAccount-item-dialog md-toolbar .title{font-size:17px}md-dialog.salesforceAccount-item-dialog md-input-container textarea{min-height:150px}md-dialog.salesforceAccount-item-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.salesforceAccount-item-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.salesforceAccount-item-dialog .date-container{padding:16px 0 24px 0}md-dialog.salesforceAccount-item-dialog .error-list{font-size:13px}md-dialog.salesforceAccount-item-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.salesforceAccount-item-dialog .error-list .error .message{font-weight:500}md-dialog.salesforceAccount-item-dialog .error-list .error .md-button{margin:0}md-dialog.salesforceAccount-item-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.salesforceAccount-item-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#integrations-salesforceAccount .header{height:76px;min-height:76px;max-height:76px}#integrations-salesforceAccount .header .goto-salesforceAccounts-button{margin-right:16px}#integrations-salesforceAccount .header .salesforceAccount-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#integrations-salesforceAccount .header .salesforceAccount-image img{height:100%;width:auto;max-width:none}#integrations-salesforceAccount .header .subtitle{margin:6px 0 0 0}#integrations-salesforceAccount .salesforceAccount-detail-form-container{padding:24px;margin-bottom:24px}#integrations-salesforceAccount .salesforceAccount-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#integrations-salesforceAccount .salesforceAccount-detail-form-container .handle{cursor:move}#integrations-salesforceAccount .salesforceAccount-detail-form-container md-input-container md-switch{margin:0!important}#integrations-salesforceAccount .salesforceAccount-detail-form-container #salesforceAccount-image-uploader{position:relative}#integrations-salesforceAccount .salesforceAccount-detail-form-container #salesforceAccount-image-uploader.dropping .drop-text{display:flex}#integrations-salesforceAccount .salesforceAccount-detail-form-container #salesforceAccount-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#integrations-salesforceAccount .salesforceAccount-detail-form-container #salesforceAccount-image-uploader .upload-button{margin-bottom:16px}#integrations-salesforceAccount .salesforceAccount-detail-form-container #salesforceAccount-image-uploader .salesforceAccount-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#integrations-salesforceAccount .salesforceAccount-detail-form-container #salesforceAccount-image-uploader .salesforceAccount-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#integrations-salesforceAccount .salesforceAccount-detail-form-container #salesforceAccount-image-uploader .salesforceAccount-image .media{max-height:100%}#integrations-salesforceAccount md-table-container thead tr th:not(:first-child):not(.no-padding){padding:0 20px 0 0!important}#integrations-salesforceAccount md-table-container thead th.md-checkbox-column:not(.no-padding){padding:0 24px!important}#integrations-salesforceAccount md-table-container tbody tr td:not(:first-child):not(.no-padding):not(.actions-padding){padding:0 20px 0 0!important}#integrations-salesforceAccount md-table-container.font-size-12 td.md-cell{font-size:12px!important}#salesforceAccounts{position:relative}#salesforceAccounts>.header{height:76px;min-height:76px;max-height:76px}#salesforceAccounts>.header .logo .logo-icon{margin:0 16px 0 0}#salesforceAccounts>.header .logo .logo-text{font-size:24px}#salesforceAccounts>.header md-icon{color:#fff}#salesforceAccounts>.header .search-input-wrapper{position:relative}#salesforceAccounts>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#salesforceAccounts>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#salesforceAccounts>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#salesforceAccounts>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#salesforceAccounts>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#salesforceAccounts>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#salesforceAccounts>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#salesforceAccounts>.header.selected-bar .close-button-wrapper{width:244px}#salesforceAccounts>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#salesforceAccounts>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#salesforceAccounts>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#salesforceAccounts #add-salesforceAccount-button{position:fixed;bottom:8px;right:8px;padding:0}#salesforceAccounts #upload-salesforceAccount-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.servicenowAccount-dialog{max-width:720px;width:720px}md-dialog.servicenowAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.servicenowAccount-dialog md-toolbar .title{font-size:17px}md-dialog.servicenowAccount-dialog md-input-container textarea{min-height:150px}md-dialog.servicenowAccount-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.servicenowAccount-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.servicenowAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.servicenowAccount-dialog .error-list{font-size:13px}md-dialog.servicenowAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.servicenowAccount-dialog .error-list .error .message{font-weight:500}md-dialog.servicenowAccount-dialog .error-list .error .md-button{margin:0}md-dialog.servicenowAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.servicenowAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.servicenowConfiguration-dialog{max-width:720px;width:720px}md-dialog.servicenowConfiguration-dialog md-dialog-content{display:block;position:relative}md-dialog.servicenowConfiguration-dialog md-toolbar .title{font-size:17px}md-dialog.servicenowConfiguration-dialog md-input-container textarea{min-height:150px}md-dialog.servicenowConfiguration-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.servicenowConfiguration-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.servicenowConfiguration-dialog .date-container{padding:16px 0 24px 0}md-dialog.servicenowConfiguration-dialog .error-list{font-size:13px}md-dialog.servicenowConfiguration-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.servicenowConfiguration-dialog .error-list .error .message{font-weight:500}md-dialog.servicenowConfiguration-dialog .error-list .error .md-button{margin:0}md-dialog.servicenowConfiguration-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.servicenowConfiguration-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.servicenowAccount-item-dialog{max-width:720px;width:720px}md-dialog.servicenowAccount-item-dialog md-dialog-content{display:block;position:relative}md-dialog.servicenowAccount-item-dialog md-toolbar .title{font-size:17px}md-dialog.servicenowAccount-item-dialog md-input-container textarea{min-height:150px}md-dialog.servicenowAccount-item-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.servicenowAccount-item-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.servicenowAccount-item-dialog .date-container{padding:16px 0 24px 0}md-dialog.servicenowAccount-item-dialog .error-list{font-size:13px}md-dialog.servicenowAccount-item-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.servicenowAccount-item-dialog .error-list .error .message{font-weight:500}md-dialog.servicenowAccount-item-dialog .error-list .error .md-button{margin:0}md-dialog.servicenowAccount-item-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.servicenowAccount-item-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#integrations-servicenowAccount .header{height:76px;min-height:76px;max-height:76px}#integrations-servicenowAccount .header .goto-servicenowAccounts-button{margin-right:16px}#integrations-servicenowAccount .header .servicenowAccount-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#integrations-servicenowAccount .header .servicenowAccount-image img{height:100%;width:auto;max-width:none}#integrations-servicenowAccount .header .subtitle{margin:6px 0 0 0}#integrations-servicenowAccount .servicenowAccount-detail-form-container{padding:24px;margin-bottom:24px}#integrations-servicenowAccount .servicenowAccount-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#integrations-servicenowAccount .servicenowAccount-detail-form-container .handle{cursor:move}#integrations-servicenowAccount .servicenowAccount-detail-form-container md-input-container md-switch{margin:0!important}#integrations-servicenowAccount .servicenowAccount-detail-form-container #servicenowAccount-image-uploader{position:relative}#integrations-servicenowAccount .servicenowAccount-detail-form-container #servicenowAccount-image-uploader.dropping .drop-text{display:flex}#integrations-servicenowAccount .servicenowAccount-detail-form-container #servicenowAccount-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#integrations-servicenowAccount .servicenowAccount-detail-form-container #servicenowAccount-image-uploader .upload-button{margin-bottom:16px}#integrations-servicenowAccount .servicenowAccount-detail-form-container #servicenowAccount-image-uploader .servicenowAccount-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#integrations-servicenowAccount .servicenowAccount-detail-form-container #servicenowAccount-image-uploader .servicenowAccount-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#integrations-servicenowAccount .servicenowAccount-detail-form-container #servicenowAccount-image-uploader .servicenowAccount-image .media{max-height:100%}#integrations-servicenowAccount md-table-container thead tr th:not(:first-child):not(.no-padding){padding:0 20px 0 0!important}#integrations-servicenowAccount md-table-container thead th.md-checkbox-column:not(.no-padding){padding:0 24px!important}#integrations-servicenowAccount md-table-container tbody tr td:not(:first-child):not(.no-padding):not(.actions-padding){padding:0 20px 0 0!important}#integrations-servicenowAccount md-table-container.font-size-12 td.md-cell{font-size:12px!important}#servicenowAccounts{position:relative}#servicenowAccounts>.header{height:76px;min-height:76px;max-height:76px}#servicenowAccounts>.header .logo .logo-icon{margin:0 16px 0 0}#servicenowAccounts>.header .logo .logo-text{font-size:24px}#servicenowAccounts>.header md-icon{color:#fff}#servicenowAccounts>.header .search-input-wrapper{position:relative}#servicenowAccounts>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#servicenowAccounts>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#servicenowAccounts>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#servicenowAccounts>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#servicenowAccounts>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#servicenowAccounts>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#servicenowAccounts>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#servicenowAccounts>.header.selected-bar .close-button-wrapper{width:244px}#servicenowAccounts>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#servicenowAccounts>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#servicenowAccounts>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#servicenowAccounts #add-servicenowAccount-button{position:fixed;bottom:8px;right:8px;padding:0}#servicenowAccounts #upload-servicenowAccount-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.sugarcrmAccount-dialog{max-width:720px;width:720px}md-dialog.sugarcrmAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.sugarcrmAccount-dialog md-toolbar .title{font-size:17px}md-dialog.sugarcrmAccount-dialog md-input-container textarea{min-height:150px}md-dialog.sugarcrmAccount-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.sugarcrmAccount-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.sugarcrmAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.sugarcrmAccount-dialog .error-list{font-size:13px}md-dialog.sugarcrmAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.sugarcrmAccount-dialog .error-list .error .message{font-weight:500}md-dialog.sugarcrmAccount-dialog .error-list .error .md-button{margin:0}md-dialog.sugarcrmAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.sugarcrmAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.sugarcrmConfiguration-dialog{max-width:720px;width:720px}md-dialog.sugarcrmConfiguration-dialog md-dialog-content{display:block;position:relative}md-dialog.sugarcrmConfiguration-dialog md-toolbar .title{font-size:17px}md-dialog.sugarcrmConfiguration-dialog md-input-container textarea{min-height:150px}md-dialog.sugarcrmConfiguration-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.sugarcrmConfiguration-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.sugarcrmConfiguration-dialog .date-container{padding:16px 0 24px 0}md-dialog.sugarcrmConfiguration-dialog .error-list{font-size:13px}md-dialog.sugarcrmConfiguration-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.sugarcrmConfiguration-dialog .error-list .error .message{font-weight:500}md-dialog.sugarcrmConfiguration-dialog .error-list .error .md-button{margin:0}md-dialog.sugarcrmConfiguration-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.sugarcrmConfiguration-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.sugarcrmAccount-item-dialog{max-width:720px;width:720px}md-dialog.sugarcrmAccount-item-dialog md-dialog-content{display:block;position:relative}md-dialog.sugarcrmAccount-item-dialog md-toolbar .title{font-size:17px}md-dialog.sugarcrmAccount-item-dialog md-input-container textarea{min-height:150px}md-dialog.sugarcrmAccount-item-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.sugarcrmAccount-item-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.sugarcrmAccount-item-dialog .date-container{padding:16px 0 24px 0}md-dialog.sugarcrmAccount-item-dialog .error-list{font-size:13px}md-dialog.sugarcrmAccount-item-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.sugarcrmAccount-item-dialog .error-list .error .message{font-weight:500}md-dialog.sugarcrmAccount-item-dialog .error-list .error .md-button{margin:0}md-dialog.sugarcrmAccount-item-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.sugarcrmAccount-item-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#integrations-sugarcrmAccount .header{height:76px;min-height:76px;max-height:76px}#integrations-sugarcrmAccount .header .goto-sugarcrmAccounts-button{margin-right:16px}#integrations-sugarcrmAccount .header .sugarcrmAccount-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#integrations-sugarcrmAccount .header .sugarcrmAccount-image img{height:100%;width:auto;max-width:none}#integrations-sugarcrmAccount .header .subtitle{margin:6px 0 0 0}#integrations-sugarcrmAccount .sugarcrmAccount-detail-form-container{padding:24px;margin-bottom:24px}#integrations-sugarcrmAccount .sugarcrmAccount-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#integrations-sugarcrmAccount .sugarcrmAccount-detail-form-container .handle{cursor:move}#integrations-sugarcrmAccount .sugarcrmAccount-detail-form-container md-input-container md-switch{margin:0!important}#integrations-sugarcrmAccount .sugarcrmAccount-detail-form-container #sugarcrmAccount-image-uploader{position:relative}#integrations-sugarcrmAccount .sugarcrmAccount-detail-form-container #sugarcrmAccount-image-uploader.dropping .drop-text{display:flex}#integrations-sugarcrmAccount .sugarcrmAccount-detail-form-container #sugarcrmAccount-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#integrations-sugarcrmAccount .sugarcrmAccount-detail-form-container #sugarcrmAccount-image-uploader .upload-button{margin-bottom:16px}#integrations-sugarcrmAccount .sugarcrmAccount-detail-form-container #sugarcrmAccount-image-uploader .sugarcrmAccount-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#integrations-sugarcrmAccount .sugarcrmAccount-detail-form-container #sugarcrmAccount-image-uploader .sugarcrmAccount-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#integrations-sugarcrmAccount .sugarcrmAccount-detail-form-container #sugarcrmAccount-image-uploader .sugarcrmAccount-image .media{max-height:100%}#integrations-sugarcrmAccount md-table-container thead tr th:not(:first-child):not(.no-padding){padding:0 20px 0 0!important}#integrations-sugarcrmAccount md-table-container thead th.md-checkbox-column:not(.no-padding){padding:0 24px!important}#integrations-sugarcrmAccount md-table-container tbody tr td:not(:first-child):not(.no-padding):not(.actions-padding){padding:0 20px 0 0!important}#integrations-sugarcrmAccount md-table-container.font-size-12 td.md-cell{font-size:12px!important}#sugarcrmAccounts{position:relative}#sugarcrmAccounts>.header{height:76px;min-height:76px;max-height:76px}#sugarcrmAccounts>.header .logo .logo-icon{margin:0 16px 0 0}#sugarcrmAccounts>.header .logo .logo-text{font-size:24px}#sugarcrmAccounts>.header md-icon{color:#fff}#sugarcrmAccounts>.header .search-input-wrapper{position:relative}#sugarcrmAccounts>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#sugarcrmAccounts>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#sugarcrmAccounts>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#sugarcrmAccounts>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#sugarcrmAccounts>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#sugarcrmAccounts>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#sugarcrmAccounts>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#sugarcrmAccounts>.header.selected-bar .close-button-wrapper{width:244px}#sugarcrmAccounts>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#sugarcrmAccounts>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#sugarcrmAccounts>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#sugarcrmAccounts #add-sugarcrmAccount-button{position:fixed;bottom:8px;right:8px;padding:0}#sugarcrmAccounts #upload-sugarcrmAccount-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.vtigerAccount-dialog{max-width:720px;width:720px}md-dialog.vtigerAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.vtigerAccount-dialog md-toolbar .title{font-size:17px}md-dialog.vtigerAccount-dialog md-input-container textarea{min-height:150px}md-dialog.vtigerAccount-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.vtigerAccount-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.vtigerAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.vtigerAccount-dialog .error-list{font-size:13px}md-dialog.vtigerAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.vtigerAccount-dialog .error-list .error .message{font-weight:500}md-dialog.vtigerAccount-dialog .error-list .error .md-button{margin:0}md-dialog.vtigerAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.vtigerAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.vtigerConfiguration-dialog{max-width:720px;width:720px}md-dialog.vtigerConfiguration-dialog md-dialog-content{display:block;position:relative}md-dialog.vtigerConfiguration-dialog md-toolbar .title{font-size:17px}md-dialog.vtigerConfiguration-dialog md-input-container textarea{min-height:150px}md-dialog.vtigerConfiguration-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.vtigerConfiguration-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.vtigerConfiguration-dialog .date-container{padding:16px 0 24px 0}md-dialog.vtigerConfiguration-dialog .error-list{font-size:13px}md-dialog.vtigerConfiguration-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.vtigerConfiguration-dialog .error-list .error .message{font-weight:500}md-dialog.vtigerConfiguration-dialog .error-list .error .md-button{margin:0}md-dialog.vtigerConfiguration-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.vtigerConfiguration-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.vtigerAccount-item-dialog{max-width:720px;width:720px}md-dialog.vtigerAccount-item-dialog md-dialog-content{display:block;position:relative}md-dialog.vtigerAccount-item-dialog md-toolbar .title{font-size:17px}md-dialog.vtigerAccount-item-dialog md-input-container textarea{min-height:150px}md-dialog.vtigerAccount-item-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.vtigerAccount-item-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.vtigerAccount-item-dialog .date-container{padding:16px 0 24px 0}md-dialog.vtigerAccount-item-dialog .error-list{font-size:13px}md-dialog.vtigerAccount-item-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.vtigerAccount-item-dialog .error-list .error .message{font-weight:500}md-dialog.vtigerAccount-item-dialog .error-list .error .md-button{margin:0}md-dialog.vtigerAccount-item-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.vtigerAccount-item-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#integrations-vtigerAccount .header{height:76px;min-height:76px;max-height:76px}#integrations-vtigerAccount .header .goto-vtigerAccounts-button{margin-right:16px}#integrations-vtigerAccount .header .vtigerAccount-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#integrations-vtigerAccount .header .vtigerAccount-image img{height:100%;width:auto;max-width:none}#integrations-vtigerAccount .header .subtitle{margin:6px 0 0 0}#integrations-vtigerAccount .vtigerAccount-detail-form-container{padding:24px;margin-bottom:24px}#integrations-vtigerAccount .vtigerAccount-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#integrations-vtigerAccount .vtigerAccount-detail-form-container .handle{cursor:move}#integrations-vtigerAccount .vtigerAccount-detail-form-container md-input-container md-switch{margin:0!important}#integrations-vtigerAccount .vtigerAccount-detail-form-container #vtigerAccount-image-uploader{position:relative}#integrations-vtigerAccount .vtigerAccount-detail-form-container #vtigerAccount-image-uploader.dropping .drop-text{display:flex}#integrations-vtigerAccount .vtigerAccount-detail-form-container #vtigerAccount-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#integrations-vtigerAccount .vtigerAccount-detail-form-container #vtigerAccount-image-uploader .upload-button{margin-bottom:16px}#integrations-vtigerAccount .vtigerAccount-detail-form-container #vtigerAccount-image-uploader .vtigerAccount-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#integrations-vtigerAccount .vtigerAccount-detail-form-container #vtigerAccount-image-uploader .vtigerAccount-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#integrations-vtigerAccount .vtigerAccount-detail-form-container #vtigerAccount-image-uploader .vtigerAccount-image .media{max-height:100%}#integrations-vtigerAccount md-table-container thead tr th:not(:first-child):not(.no-padding){padding:0 20px 0 0!important}#integrations-vtigerAccount md-table-container thead th.md-checkbox-column:not(.no-padding){padding:0 24px!important}#integrations-vtigerAccount md-table-container tbody tr td:not(:first-child):not(.no-padding):not(.actions-padding){padding:0 20px 0 0!important}#integrations-vtigerAccount md-table-container.font-size-12 td.md-cell{font-size:12px!important}#vtigerAccounts{position:relative}#vtigerAccounts>.header{height:76px;min-height:76px;max-height:76px}#vtigerAccounts>.header .logo .logo-icon{margin:0 16px 0 0}#vtigerAccounts>.header .logo .logo-text{font-size:24px}#vtigerAccounts>.header md-icon{color:#fff}#vtigerAccounts>.header .search-input-wrapper{position:relative}#vtigerAccounts>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#vtigerAccounts>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#vtigerAccounts>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#vtigerAccounts>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#vtigerAccounts>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#vtigerAccounts>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#vtigerAccounts>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#vtigerAccounts>.header.selected-bar .close-button-wrapper{width:244px}#vtigerAccounts>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#vtigerAccounts>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#vtigerAccounts>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#vtigerAccounts #add-vtigerAccount-button{position:fixed;bottom:8px;right:8px;padding:0}#vtigerAccounts #upload-vtigerAccount-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.zendeskAccount-dialog{max-width:720px;width:720px}md-dialog.zendeskAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.zendeskAccount-dialog md-toolbar .title{font-size:17px}md-dialog.zendeskAccount-dialog md-input-container textarea{min-height:150px}md-dialog.zendeskAccount-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.zendeskAccount-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.zendeskAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.zendeskAccount-dialog .error-list{font-size:13px}md-dialog.zendeskAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.zendeskAccount-dialog .error-list .error .message{font-weight:500}md-dialog.zendeskAccount-dialog .error-list .error .md-button{margin:0}md-dialog.zendeskAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.zendeskAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.zendeskAccount-item-dialog{max-width:720px;width:720px}md-dialog.zendeskAccount-item-dialog md-dialog-content{display:block;position:relative}md-dialog.zendeskAccount-item-dialog md-toolbar .title{font-size:17px}md-dialog.zendeskAccount-item-dialog md-input-container textarea{min-height:150px}md-dialog.zendeskAccount-item-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.zendeskAccount-item-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.zendeskAccount-item-dialog .date-container{padding:16px 0 24px 0}md-dialog.zendeskAccount-item-dialog .error-list{font-size:13px}md-dialog.zendeskAccount-item-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.zendeskAccount-item-dialog .error-list .error .message{font-weight:500}md-dialog.zendeskAccount-item-dialog .error-list .error .md-button{margin:0}md-dialog.zendeskAccount-item-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.zendeskAccount-item-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#integrations-zendeskAccount .header{height:76px;min-height:76px;max-height:76px}#integrations-zendeskAccount .header .goto-zendeskAccounts-button{margin-right:16px}#integrations-zendeskAccount .header .zendeskAccount-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#integrations-zendeskAccount .header .zendeskAccount-image img{height:100%;width:auto;max-width:none}#integrations-zendeskAccount .header .subtitle{margin:6px 0 0 0}#integrations-zendeskAccount .zendeskAccount-detail-form-container{padding:24px;margin-bottom:24px}#integrations-zendeskAccount .zendeskAccount-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#integrations-zendeskAccount .zendeskAccount-detail-form-container .handle{cursor:move}#integrations-zendeskAccount .zendeskAccount-detail-form-container md-input-container md-switch{margin:0!important}#integrations-zendeskAccount .zendeskAccount-detail-form-container #zendeskAccount-image-uploader{position:relative}#integrations-zendeskAccount .zendeskAccount-detail-form-container #zendeskAccount-image-uploader.dropping .drop-text{display:flex}#integrations-zendeskAccount .zendeskAccount-detail-form-container #zendeskAccount-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#integrations-zendeskAccount .zendeskAccount-detail-form-container #zendeskAccount-image-uploader .upload-button{margin-bottom:16px}#integrations-zendeskAccount .zendeskAccount-detail-form-container #zendeskAccount-image-uploader .zendeskAccount-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#integrations-zendeskAccount .zendeskAccount-detail-form-container #zendeskAccount-image-uploader .zendeskAccount-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#integrations-zendeskAccount .zendeskAccount-detail-form-container #zendeskAccount-image-uploader .zendeskAccount-image .media{max-height:100%}#integrations-zendeskAccount md-table-container thead tr th:not(:first-child):not(.no-padding){padding:0 20px 0 0!important}#integrations-zendeskAccount md-table-container thead th.md-checkbox-column:not(.no-padding){padding:0 24px!important}#integrations-zendeskAccount md-table-container tbody tr td:not(:first-child):not(.no-padding):not(.actions-padding){padding:0 20px 0 0!important}#integrations-zendeskAccount md-table-container.font-size-12 td.md-cell{font-size:12px!important}md-dialog.zendeskConfiguration-dialog{max-width:720px;width:720px}md-dialog.zendeskConfiguration-dialog md-dialog-content{display:block;position:relative}md-dialog.zendeskConfiguration-dialog md-toolbar .title{font-size:17px}md-dialog.zendeskConfiguration-dialog md-input-container textarea{min-height:150px}md-dialog.zendeskConfiguration-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.zendeskConfiguration-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.zendeskConfiguration-dialog .date-container{padding:16px 0 24px 0}md-dialog.zendeskConfiguration-dialog .error-list{font-size:13px}md-dialog.zendeskConfiguration-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.zendeskConfiguration-dialog .error-list .error .message{font-weight:500}md-dialog.zendeskConfiguration-dialog .error-list .error .md-button{margin:0}md-dialog.zendeskConfiguration-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.zendeskConfiguration-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#zendeskAccounts{position:relative}#zendeskAccounts>.header{height:76px;min-height:76px;max-height:76px}#zendeskAccounts>.header .logo .logo-icon{margin:0 16px 0 0}#zendeskAccounts>.header .logo .logo-text{font-size:24px}#zendeskAccounts>.header md-icon{color:#fff}#zendeskAccounts>.header .search-input-wrapper{position:relative}#zendeskAccounts>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#zendeskAccounts>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#zendeskAccounts>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#zendeskAccounts>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#zendeskAccounts>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#zendeskAccounts>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#zendeskAccounts>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#zendeskAccounts>.header.selected-bar .close-button-wrapper{width:244px}#zendeskAccounts>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#zendeskAccounts>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#zendeskAccounts>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#zendeskAccounts #add-zendeskAccount-button{position:fixed;bottom:8px;right:8px;padding:0}#zendeskAccounts #upload-zendeskAccount-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.zohoAccount-dialog{max-width:720px;width:720px}md-dialog.zohoAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.zohoAccount-dialog md-toolbar .title{font-size:17px}md-dialog.zohoAccount-dialog md-input-container textarea{min-height:150px}md-dialog.zohoAccount-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.zohoAccount-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.zohoAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.zohoAccount-dialog .error-list{font-size:13px}md-dialog.zohoAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.zohoAccount-dialog .error-list .error .message{font-weight:500}md-dialog.zohoAccount-dialog .error-list .error .md-button{margin:0}md-dialog.zohoAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.zohoAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.zohoConfiguration-dialog{max-width:720px;width:720px}md-dialog.zohoConfiguration-dialog md-dialog-content{display:block;position:relative}md-dialog.zohoConfiguration-dialog md-toolbar .title{font-size:17px}md-dialog.zohoConfiguration-dialog md-input-container textarea{min-height:150px}md-dialog.zohoConfiguration-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.zohoConfiguration-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.zohoConfiguration-dialog .date-container{padding:16px 0 24px 0}md-dialog.zohoConfiguration-dialog .error-list{font-size:13px}md-dialog.zohoConfiguration-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.zohoConfiguration-dialog .error-list .error .message{font-weight:500}md-dialog.zohoConfiguration-dialog .error-list .error .md-button{margin:0}md-dialog.zohoConfiguration-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.zohoConfiguration-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.zohoAccount-item-dialog{max-width:720px;width:720px}md-dialog.zohoAccount-item-dialog md-dialog-content{display:block;position:relative}md-dialog.zohoAccount-item-dialog md-toolbar .title{font-size:17px}md-dialog.zohoAccount-item-dialog md-input-container textarea{min-height:150px}md-dialog.zohoAccount-item-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.zohoAccount-item-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.zohoAccount-item-dialog .date-container{padding:16px 0 24px 0}md-dialog.zohoAccount-item-dialog .error-list{font-size:13px}md-dialog.zohoAccount-item-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.zohoAccount-item-dialog .error-list .error .message{font-weight:500}md-dialog.zohoAccount-item-dialog .error-list .error .md-button{margin:0}md-dialog.zohoAccount-item-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.zohoAccount-item-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#integrations-zohoAccount .header{height:76px;min-height:76px;max-height:76px}#integrations-zohoAccount .header .goto-zohoAccounts-button{margin-right:16px}#integrations-zohoAccount .header .zohoAccount-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#integrations-zohoAccount .header .zohoAccount-image img{height:100%;width:auto;max-width:none}#integrations-zohoAccount .header .subtitle{margin:6px 0 0 0}#integrations-zohoAccount .zohoAccount-detail-form-container{padding:24px;margin-bottom:24px}#integrations-zohoAccount .zohoAccount-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#integrations-zohoAccount .zohoAccount-detail-form-container .handle{cursor:move}#integrations-zohoAccount .zohoAccount-detail-form-container md-input-container md-switch{margin:0!important}#integrations-zohoAccount .zohoAccount-detail-form-container #zohoAccount-image-uploader{position:relative}#integrations-zohoAccount .zohoAccount-detail-form-container #zohoAccount-image-uploader.dropping .drop-text{display:flex}#integrations-zohoAccount .zohoAccount-detail-form-container #zohoAccount-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#integrations-zohoAccount .zohoAccount-detail-form-container #zohoAccount-image-uploader .upload-button{margin-bottom:16px}#integrations-zohoAccount .zohoAccount-detail-form-container #zohoAccount-image-uploader .zohoAccount-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#integrations-zohoAccount .zohoAccount-detail-form-container #zohoAccount-image-uploader .zohoAccount-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#integrations-zohoAccount .zohoAccount-detail-form-container #zohoAccount-image-uploader .zohoAccount-image .media{max-height:100%}#integrations-zohoAccount md-table-container thead tr th:not(:first-child):not(.no-padding){padding:0 20px 0 0!important}#integrations-zohoAccount md-table-container thead th.md-checkbox-column:not(.no-padding){padding:0 24px!important}#integrations-zohoAccount md-table-container tbody tr td:not(:first-child):not(.no-padding):not(.actions-padding){padding:0 20px 0 0!important}#integrations-zohoAccount md-table-container.font-size-12 td.md-cell{font-size:12px!important}#zohoAccounts{position:relative}#zohoAccounts>.header{height:76px;min-height:76px;max-height:76px}#zohoAccounts>.header .logo .logo-icon{margin:0 16px 0 0}#zohoAccounts>.header .logo .logo-text{font-size:24px}#zohoAccounts>.header md-icon{color:#fff}#zohoAccounts>.header .search-input-wrapper{position:relative}#zohoAccounts>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#zohoAccounts>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#zohoAccounts>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#zohoAccounts>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#zohoAccounts>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#zohoAccounts>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#zohoAccounts>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#zohoAccounts>.header.selected-bar .close-button-wrapper{width:244px}#zohoAccounts>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#zohoAccounts>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#zohoAccounts>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#zohoAccounts #add-zohoAccount-button{position:fixed;bottom:8px;right:8px;padding:0}#zohoAccounts #upload-zohoAccount-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.project-dialog{max-width:720px;width:720px}md-dialog.project-dialog md-dialog-content{display:block;position:relative}md-dialog.project-dialog md-toolbar .title{font-size:17px}md-dialog.project-dialog md-input-container textarea{min-height:150px}md-dialog.project-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.project-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.project-dialog .date-container{padding:16px 0 24px 0}md-dialog.project-dialog .error-list{font-size:13px}md-dialog.project-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.project-dialog .error-list .error .message{font-weight:500}md-dialog.project-dialog .error-list .error .md-button{margin:0}md-dialog.project-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.project-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.session-dialog{max-width:720px;width:720px}md-dialog.session-dialog md-dialog-content{display:block;position:relative}md-dialog.session-dialog md-toolbar .title{font-size:17px}md-dialog.session-dialog md-input-container textarea{min-height:150px}md-dialog.session-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.session-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.session-dialog .date-container{padding:16px 0 24px 0}md-dialog.session-dialog .error-list{font-size:13px}md-dialog.session-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.session-dialog .error-list .error .message{font-weight:500}md-dialog.session-dialog .error-list .error .md-button{margin:0}md-dialog.session-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.session-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#jscripty-project .header{height:76px;min-height:76px;max-height:76px}#jscripty-project .header .goto-projects-button{margin-right:16px}#jscripty-project .header .project-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#jscripty-project .header .project-image img{height:100%;width:auto;max-width:none}#jscripty-project .header .subtitle{margin:6px 0 0 0}#jscripty-project .project-detail-form-container{padding:24px;margin-bottom:24px}#jscripty-project .project-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#jscripty-project .project-detail-form-container .handle{cursor:move}#jscripty-project .project-detail-form-container md-input-container md-switch{margin:0!important}#jscripty-project .project-detail-form-container #project-image-uploader{position:relative}#jscripty-project .project-detail-form-container #project-image-uploader.dropping .drop-text{display:flex}#jscripty-project .project-detail-form-container #project-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#jscripty-project .project-detail-form-container #project-image-uploader .upload-button{margin-bottom:16px}#jscripty-project .project-detail-form-container #project-image-uploader .project-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#jscripty-project .project-detail-form-container #project-image-uploader .project-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#jscripty-project .project-detail-form-container #project-image-uploader .project-image .media{max-height:100%}#jscripty-project md-table-container thead tr th:not(:first-child):not(.no-padding){padding:0 20px 0 0!important}#jscripty-project md-table-container thead th.md-checkbox-column:not(.no-padding){padding:0 24px!important}#jscripty-project md-table-container tbody tr td:not(:first-child):not(.no-padding):not(.actions-padding){padding:0 20px 0 0!important}#jscripty-project md-table-container.font-size-12 td.md-cell{font-size:12px!important}#projects{position:relative}#projects>.header{height:76px;min-height:76px;max-height:76px}#projects>.header .logo .logo-icon{margin:0 16px 0 0}#projects>.header .logo .logo-text{font-size:24px}#projects>.header md-icon{color:#fff}#projects>.header .search-input-wrapper{position:relative}#projects>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#projects>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#projects>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#projects>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#projects>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#projects>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#projects>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#projects>.header.selected-bar .close-button-wrapper{width:244px}#projects>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#projects>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#projects>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#projects #add-project-button{position:fixed;bottom:8px;right:8px;padding:0}#projects #upload-project-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.mailAccount-dialog{max-width:720px;width:720px}md-dialog.mailAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.mailAccount-dialog md-toolbar .title{font-size:17px}md-dialog.mailAccount-dialog md-input-container textarea{min-height:150px}md-dialog.mailAccount-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.mailAccount-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.mailAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.mailAccount-dialog .error-list{font-size:13px}md-dialog.mailAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.mailAccount-dialog .error-list .error .message{font-weight:500}md-dialog.mailAccount-dialog .error-list .error .md-button{margin:0}md-dialog.mailAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.mailAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.mailAccount-dialog{max-width:720px;width:720px}md-dialog.mailAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.mailAccount-dialog md-toolbar .title{font-size:17px}md-dialog.mailAccount-dialog md-input-container textarea{min-height:150px}md-dialog.mailAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.mailAccount-dialog .error-list{font-size:13px}md-dialog.mailAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.mailAccount-dialog .error-list .error .message{font-weight:500}md-dialog.mailAccount-dialog .error-list .error .md-button{margin:0}md-dialog.mailAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.mailAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.mailAccount-dialog{max-width:720px;width:720px}md-dialog.mailAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.mailAccount-dialog md-toolbar .title{font-size:17px}md-dialog.mailAccount-dialog md-input-container textarea{min-height:150px}md-dialog.mailAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.mailAccount-dialog .error-list{font-size:13px}md-dialog.mailAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.mailAccount-dialog .error-list .error .message{font-weight:500}md-dialog.mailAccount-dialog .error-list .error .md-button{margin:0}md-dialog.mailAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.mailAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.mailAccount-dialog{max-width:720px;width:720px}md-dialog.mailAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.mailAccount-dialog md-toolbar .title{font-size:17px}md-dialog.mailAccount-dialog md-input-container textarea{min-height:150px}md-dialog.mailAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.mailAccount-dialog .error-list{font-size:13px}md-dialog.mailAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.mailAccount-dialog .error-list .error .message{font-weight:500}md-dialog.mailAccount-dialog .error-list .error .md-button{margin:0}md-dialog.mailAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.mailAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.mailAccount-dialog{max-width:720px;width:720px}md-dialog.mailAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.mailAccount-dialog md-toolbar .title{font-size:17px}md-dialog.mailAccount-dialog md-input-container textarea{min-height:150px}md-dialog.mailAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.mailAccount-dialog .error-list{font-size:13px}md-dialog.mailAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.mailAccount-dialog .error-list .error .message{font-weight:500}md-dialog.mailAccount-dialog .error-list .error .md-button{margin:0}md-dialog.mailAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.mailAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.mailAccount-dialog{max-width:720px;width:720px}md-dialog.mailAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.mailAccount-dialog md-toolbar .title{font-size:17px}md-dialog.mailAccount-dialog md-input-container textarea{min-height:150px}md-dialog.mailAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.mailAccount-dialog .error-list{font-size:13px}md-dialog.mailAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.mailAccount-dialog .error-list .error .message{font-weight:500}md-dialog.mailAccount-dialog .error-list .error .md-button{margin:0}md-dialog.mailAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.mailAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.mailAccount-dialog{max-width:720px;width:720px}md-dialog.mailAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.mailAccount-dialog md-toolbar .title{font-size:17px}md-dialog.mailAccount-dialog md-input-container textarea{min-height:150px}md-dialog.mailAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.mailAccount-dialog .error-list{font-size:13px}md-dialog.mailAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.mailAccount-dialog .error-list .error .message{font-weight:500}md-dialog.mailAccount-dialog .error-list .error .md-button{margin:0}md-dialog.mailAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.mailAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.mailAccount-dialog{max-width:720px;width:720px}md-dialog.mailAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.mailAccount-dialog md-toolbar .title{font-size:17px}md-dialog.mailAccount-dialog md-input-container textarea{min-height:150px}md-dialog.mailAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.mailAccount-dialog .error-list{font-size:13px}md-dialog.mailAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.mailAccount-dialog .error-list .error .message{font-weight:500}md-dialog.mailAccount-dialog .error-list .error .md-button{margin:0}md-dialog.mailAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.mailAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.mailAccount-dialog{max-width:720px;width:720px}md-dialog.mailAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.mailAccount-dialog md-toolbar .title{font-size:17px}md-dialog.mailAccount-dialog md-input-container textarea{min-height:150px}md-dialog.mailAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.mailAccount-dialog .error-list{font-size:13px}md-dialog.mailAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.mailAccount-dialog .error-list .error .message{font-weight:500}md-dialog.mailAccount-dialog .error-list .error .md-button{margin:0}md-dialog.mailAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.mailAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.mailAccount-dialog{max-width:720px;width:720px}md-dialog.mailAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.mailAccount-dialog md-toolbar .title{font-size:17px}md-dialog.mailAccount-dialog md-input-container textarea{min-height:150px}md-dialog.mailAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.mailAccount-dialog .error-list{font-size:13px}md-dialog.mailAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.mailAccount-dialog .error-list .error .message{font-weight:500}md-dialog.mailAccount-dialog .error-list .error .md-button{margin:0}md-dialog.mailAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.mailAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.mailAccount-dialog{max-width:720px;width:720px}md-dialog.mailAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.mailAccount-dialog md-toolbar .title{font-size:17px}md-dialog.mailAccount-dialog md-input-container textarea{min-height:150px}md-dialog.mailAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.mailAccount-dialog .error-list{font-size:13px}md-dialog.mailAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.mailAccount-dialog .error-list .error .message{font-weight:500}md-dialog.mailAccount-dialog .error-list .error .md-button{margin:0}md-dialog.mailAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.mailAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.mailCannedAnswer-dialog{max-width:720px;width:720px}md-dialog.mailCannedAnswer-dialog md-dialog-content{display:block;position:relative}md-dialog.mailCannedAnswer-dialog md-toolbar .title{font-size:17px}md-dialog.mailCannedAnswer-dialog md-input-container textarea{min-height:150px}md-dialog.mailCannedAnswer-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.mailCannedAnswer-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.mailCannedAnswer-dialog .date-container{padding:16px 0 24px 0}md-dialog.mailCannedAnswer-dialog .error-list{font-size:13px}md-dialog.mailCannedAnswer-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.mailCannedAnswer-dialog .error-list .error .message{font-weight:500}md-dialog.mailCannedAnswer-dialog .error-list .error .md-button{margin:0}md-dialog.mailCannedAnswer-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.mailCannedAnswer-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#mail-mailAccount .header{height:76px;min-height:76px;max-height:76px}#mail-mailAccount .header .goto-mailAccounts-button{margin-right:16px}#mail-mailAccount .header .mailAccount-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#mail-mailAccount .header .mailAccount-image img{height:100%;width:auto;max-width:none}#mail-mailAccount .header .subtitle{margin:6px 0 0 0}#mail-mailAccount .mailAccount-detail-form-container{padding:24px;margin-bottom:24px}#mail-mailAccount .mailAccount-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#mail-mailAccount .mailAccount-detail-form-container .handle{cursor:move}#mail-mailAccount .mailAccount-detail-form-container md-input-container md-switch{margin:0!important}#mail-mailAccount .mailAccount-detail-form-container #mailAccount-image-uploader{position:relative}#mail-mailAccount .mailAccount-detail-form-container #mailAccount-image-uploader.dropping .drop-text{display:flex}#mail-mailAccount .mailAccount-detail-form-container #mailAccount-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#mail-mailAccount .mailAccount-detail-form-container #mailAccount-image-uploader .upload-button{margin-bottom:16px}#mail-mailAccount .mailAccount-detail-form-container #mailAccount-image-uploader .mailAccount-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#mail-mailAccount .mailAccount-detail-form-container #mailAccount-image-uploader .mailAccount-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#mail-mailAccount .mailAccount-detail-form-container #mailAccount-image-uploader .mailAccount-image .media{max-height:100%}#mail-mailAccount md-table-container thead tr th:not(:first-child):not(.no-padding){padding:0 20px 0 0!important}#mail-mailAccount md-table-container thead th.md-checkbox-column:not(.no-padding){padding:0 24px!important}#mail-mailAccount md-table-container tbody tr td:not(:first-child):not(.no-padding):not(.actions-padding){padding:0 20px 0 0!important}#mail-mailAccount md-table-container.font-size-12 td.md-cell{font-size:12px!important}@media screen and (min-width:1921px){#mail-mailAccount .actionAppData{width:800px!important}}@media screen and (max-width:1920px){#mail-mailAccount .actionAppData{width:700px!important}}@media screen and (min-width:1751px) and (max-width:1919px){#mail-mailAccount .actionAppData{width:600px!important}}@media screen and (min-width:1601px) and (max-width:1750px){#mail-mailAccount .actionAppData{width:500px!important}}@media screen and (min-width:1537px) and (max-width:1600px){#mail-mailAccount .actionAppData{width:450px!important}}@media screen and (min-width:1281px) and (max-width:1536px){#mail-mailAccount .actionAppData{width:300px!important}}@media screen and (max-width:1280px){#mail-mailAccount .actionAppData{width:150px!important}}@media screen and (max-width:960px){#mail-mailAccount .actionAppData{width:80px!important}}#mailAccounts{position:relative}#mailAccounts>.header{height:76px;min-height:76px;max-height:76px}#mailAccounts>.header .logo .logo-icon{margin:0 16px 0 0}#mailAccounts>.header .logo .logo-text{font-size:24px}#mailAccounts>.header md-icon{color:#fff}#mailAccounts>.header .search-input-wrapper{position:relative}#mailAccounts>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#mailAccounts>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#mailAccounts>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#mailAccounts>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#mailAccounts>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#mailAccounts>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#mailAccounts>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#mailAccounts>.header.selected-bar .close-button-wrapper{width:244px}#mailAccounts>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#mailAccounts>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#mailAccounts>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#mailAccounts #add-mailAccount-button{position:fixed;bottom:8px;right:8px;padding:0}#mailAccounts #upload-mailAccount-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.mailQueue-dialog{max-width:720px;width:720px}md-dialog.mailQueue-dialog md-dialog-content{display:block;position:relative}md-dialog.mailQueue-dialog md-toolbar .title{font-size:17px}md-dialog.mailQueue-dialog md-input-container textarea{min-height:150px}md-dialog.mailQueue-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.mailQueue-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.mailQueue-dialog .date-container{padding:16px 0 24px 0}md-dialog.mailQueue-dialog .error-list{font-size:13px}md-dialog.mailQueue-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.mailQueue-dialog .error-list .error .message{font-weight:500}md-dialog.mailQueue-dialog .error-list .error .md-button{margin:0}md-dialog.mailQueue-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.mailQueue-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#mail-mailQueue .header{height:76px;min-height:76px;max-height:76px}#mail-mailQueue .header .goto-mailQueues-button{margin-right:16px}#mail-mailQueue .header .mailQueue-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#mail-mailQueue .header .mailQueue-image img{height:100%;width:auto;max-width:none}#mail-mailQueue .header .subtitle{margin:6px 0 0 0}#mail-mailQueue .mailQueue-detail-form-container{padding:24px;margin-bottom:24px}#mail-mailQueue .mailQueue-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#mail-mailQueue .mailQueue-detail-form-container .handle{cursor:move}#mail-mailQueue .mailQueue-detail-form-container md-input-container md-switch{margin:0!important}#mail-mailQueue .mailQueue-detail-form-container #mailQueue-image-uploader{position:relative}#mail-mailQueue .mailQueue-detail-form-container #mailQueue-image-uploader.dropping .drop-text{display:flex}#mail-mailQueue .mailQueue-detail-form-container #mailQueue-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#mail-mailQueue .mailQueue-detail-form-container #mailQueue-image-uploader .upload-button{margin-bottom:16px}#mail-mailQueue .mailQueue-detail-form-container #mailQueue-image-uploader .mailQueue-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#mail-mailQueue .mailQueue-detail-form-container #mailQueue-image-uploader .mailQueue-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#mail-mailQueue .mailQueue-detail-form-container #mailQueue-image-uploader .mailQueue-image .media{max-height:100%}#mail-mailQueue md-table-container thead tr th:not(:first-child):not(.no-padding){padding:0 20px 0 0!important}#mail-mailQueue md-table-container thead th.md-checkbox-column:not(.no-padding){padding:0 24px!important}#mail-mailQueue md-table-container tbody tr td:not(:first-child):not(.no-padding):not(.actions-padding){padding:0 20px 0 0!important}#mail-mailQueue md-table-container.font-size-12 td.md-cell{font-size:12px!important}#mailQueues{position:relative}#mailQueues>.header{height:76px;min-height:76px;max-height:76px}#mailQueues>.header .logo .logo-icon{margin:0 16px 0 0}#mailQueues>.header .logo .logo-text{font-size:24px}#mailQueues>.header md-icon{color:#fff}#mailQueues>.header .search-input-wrapper{position:relative}#mailQueues>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#mailQueues>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#mailQueues>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#mailQueues>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#mailQueues>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#mailQueues>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#mailQueues>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#mailQueues>.header.selected-bar .close-button-wrapper{width:244px}#mailQueues>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#mailQueues>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#mailQueues>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#mailQueues #add-mailQueue-button{position:fixed;bottom:8px;right:8px;padding:0}#mailQueues #upload-mailQueue-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.mailSubstatus-dialog{max-width:720px;width:720px}md-dialog.mailSubstatus-dialog md-dialog-content{display:block;position:relative}md-dialog.mailSubstatus-dialog md-toolbar .title{font-size:17px}md-dialog.mailSubstatus-dialog md-input-container textarea{min-height:150px}md-dialog.mailSubstatus-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.mailSubstatus-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.mailSubstatus-dialog .date-container{padding:16px 0 24px 0}md-dialog.mailSubstatus-dialog .error-list{font-size:13px}md-dialog.mailSubstatus-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.mailSubstatus-dialog .error-list .error .message{font-weight:500}md-dialog.mailSubstatus-dialog .error-list .error .md-button{margin:0}md-dialog.mailSubstatus-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.mailSubstatus-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#mailSubtatuses{position:relative}#mailSubtatuses>.header{height:76px;min-height:76px;max-height:76px}#mailSubtatuses>.header .logo .logo-icon{margin:0 16px 0 0}#mailSubtatuses>.header .logo .logo-text{font-size:24px}#mailSubtatuses>.header md-icon{color:#fff}#mailSubtatuses>.header .search-input-wrapper{position:relative}#mailSubtatuses>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#mailSubtatuses>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#mailSubtatuses>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#mailSubtatuses>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#mailSubtatuses>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#mailSubtatuses>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#mailSubtatuses>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#mailSubtatuses>.header.selected-bar .close-button-wrapper{width:244px}#mailSubtatuses>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#mailSubtatuses>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#mailSubtatuses>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#mailSubtatuses #add-mailSubstatus-button{position:fixed;bottom:8px;right:8px;padding:0}#mailSubtatuses #upload-mailSubstatus-button{position:fixed;bottom:8px;right:8px;padding:0}#realtime{height:auto}#realtime>.content .blink{animation:blinker 2s linear infinite}#realtime>.content .avatar-wrapper{position:relative}#realtime>.content .avatar-wrapper .status{position:absolute;bottom:-3px;right:5px}#realtime>.content .search-input-wrapper{position:relative;margin-left:20px}#realtime>.content .search-input-wrapper label{padding:6px;cursor:pointer}#realtime>.content .search-input-wrapper md-input-container{padding-top:20px}#realtime>.content .main .labels{padding:8px 16px}#realtime>.content .main .labels .label{margin:0 0 2px 4px;padding:2px 5px;font-size:11px;white-space:nowrap;border-radius:2px}#realtime>.content .main .status{position:absolute;bottom:-3px;right:5px}#realtime>.content .main .avatar-wrapper{position:relative}#realtime>.content .main .avatar-wrapper .status{position:absolute;bottom:-3px;right:5px}#realtime>.content .custom-column{padding:0 24px!important}@keyframes blinker{50%{opacity:0}}md-dialog.plugin-dialog{max-width:720px;width:720px}md-dialog.plugin-dialog md-dialog-content{display:block;position:relative}md-dialog.plugin-dialog md-toolbar .title{font-size:17px}md-dialog.plugin-dialog md-input-container textarea{min-height:150px}md-dialog.plugin-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.plugin-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.plugin-dialog .date-container{padding:16px 0 24px 0}md-dialog.plugin-dialog .error-list{font-size:13px}md-dialog.plugin-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.plugin-dialog .error-list .error .message{font-weight:500}md-dialog.plugin-dialog .error-list .error .md-button{margin:0}md-dialog.plugin-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.plugin-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#marketplace-plugin .header{height:76px;min-height:76px;max-height:76px}#marketplace-plugin .header .goto-plugins-button{margin-right:16px}#marketplace-plugin .header .plugin-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#marketplace-plugin .header .plugin-image img{height:100%;width:auto;max-width:none}#marketplace-plugin .header .subtitle{margin:6px 0 0 0}#marketplace-plugin .plugin-detail-form-container{padding:24px;margin-bottom:24px}#marketplace-plugin .plugin-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#marketplace-plugin .plugin-detail-form-container .handle{cursor:move}#marketplace-plugin .plugin-detail-form-container md-input-container md-switch{margin:0!important}#marketplace-plugin .plugin-detail-form-container #plugin-image-uploader{position:relative}#marketplace-plugin .plugin-detail-form-container #plugin-image-uploader.dropping .drop-text{display:flex}#marketplace-plugin .plugin-detail-form-container #plugin-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#marketplace-plugin .plugin-detail-form-container #plugin-image-uploader .upload-button{margin-bottom:16px}#marketplace-plugin .plugin-detail-form-container #plugin-image-uploader .plugin-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#marketplace-plugin .plugin-detail-form-container #plugin-image-uploader .plugin-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#marketplace-plugin .plugin-detail-form-container #plugin-image-uploader .plugin-image .media{max-height:100%}#marketplace-plugin md-table-container thead tr th:not(:first-child):not(.no-padding){padding:0 20px 0 0!important}#marketplace-plugin md-table-container thead th.md-checkbox-column:not(.no-padding){padding:0 24px!important}#marketplace-plugin md-table-container tbody tr td:not(:first-child):not(.no-padding):not(.actions-padding){padding:0 20px 0 0!important}#marketplace-plugin md-table-container.font-size-12 td.md-cell{font-size:12px!important}#plugins{position:relative}#plugins>.header{height:76px;min-height:76px;max-height:76px}#plugins>.header .logo .logo-icon{margin:0 16px 0 0}#plugins>.header .logo .logo-text{font-size:24px}#plugins>.header md-icon{color:#fff}#plugins>.header .search-input-wrapper{position:relative}#plugins>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#plugins>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#plugins>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#plugins>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#plugins>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#plugins>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#plugins>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#plugins>.header.selected-bar .close-button-wrapper{width:244px}#plugins>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#plugins>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#plugins>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#plugins #add-plugin-button{position:fixed;bottom:8px;right:8px;padding:0}#plugins #upload-plugin-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.upload-dialog{max-width:720px;width:720px}md-dialog.upload-dialog md-dialog-content{display:block;position:relative}md-dialog.upload-dialog md-toolbar .title{font-size:17px}md-dialog.upload-dialog md-input-container textarea{min-height:150px}md-dialog.upload-dialog md-progress-linear{padding-top:16px!important}md-dialog.upload-dialog .date-container{padding:16px 0 24px 0}md-dialog.upload-dialog .error-list{font-size:13px}md-dialog.upload-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.upload-dialog .error-list .error .message{font-weight:500}md-dialog.upload-dialog .error-list .error .md-button{margin:0}md-dialog.upload-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.upload-dialog .plugin-image{overflow:hidden;max-width:148px;margin-right:16px;border:3px solid rgba(0,0,0,.12);padding:10px}md-dialog.upload-dialog .plugin-image img{width:auto;max-width:none}md-dialog.upload-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.ivrCampaign-dialog{max-width:720px;width:720px}md-dialog.ivrCampaign-dialog md-dialog-content{display:block;position:relative}md-dialog.ivrCampaign-dialog md-toolbar .title{font-size:17px}md-dialog.ivrCampaign-dialog md-input-container textarea{min-height:150px}md-dialog.ivrCampaign-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.ivrCampaign-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.ivrCampaign-dialog .date-container{padding:16px 0 24px 0}md-dialog.ivrCampaign-dialog .error-list{font-size:13px}md-dialog.ivrCampaign-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.ivrCampaign-dialog .error-list .error .message{font-weight:500}md-dialog.ivrCampaign-dialog .error-list .error .md-button{margin:0}md-dialog.ivrCampaign-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.ivrCampaign-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.hopper-dialog{max-width:720px;width:720px}md-dialog.hopper-dialog md-dialog-content{display:block;position:relative}md-dialog.hopper-dialog md-toolbar .title{font-size:17px}md-dialog.hopper-dialog md-input-container textarea{min-height:150px}md-dialog.hopper-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.hopper-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.hopper-dialog .date-container{padding:16px 0 24px 0}md-dialog.hopper-dialog .error-list{font-size:13px}md-dialog.hopper-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.hopper-dialog .error-list .error .message{font-weight:500}md-dialog.hopper-dialog .error-list .error .md-button{margin:0}md-dialog.hopper-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.hopper-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#motiondialer-ivrCampaign .header{height:76px;min-height:76px;max-height:76px}#motiondialer-ivrCampaign .header .goto-ivrCampaigns-button{margin-right:16px}#motiondialer-ivrCampaign .header .ivrCampaign-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#motiondialer-ivrCampaign .header .ivrCampaign-image img{height:100%;width:auto;max-width:none}#motiondialer-ivrCampaign .header .subtitle{margin:6px 0 0 0}#motiondialer-ivrCampaign .ivrCampaign-detail-form-container{padding:24px;margin-bottom:24px}#motiondialer-ivrCampaign .ivrCampaign-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#motiondialer-ivrCampaign .ivrCampaign-detail-form-container .handle{cursor:move}#motiondialer-ivrCampaign .ivrCampaign-detail-form-container md-input-container md-switch{margin:0!important}#motiondialer-ivrCampaign .ivrCampaign-detail-form-container #ivrCampaign-image-uploader{position:relative}#motiondialer-ivrCampaign .ivrCampaign-detail-form-container #ivrCampaign-image-uploader.dropping .drop-text{display:flex}#motiondialer-ivrCampaign .ivrCampaign-detail-form-container #ivrCampaign-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#motiondialer-ivrCampaign .ivrCampaign-detail-form-container #ivrCampaign-image-uploader .upload-button{margin-bottom:16px}#motiondialer-ivrCampaign .ivrCampaign-detail-form-container #ivrCampaign-image-uploader .ivrCampaign-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#motiondialer-ivrCampaign .ivrCampaign-detail-form-container #ivrCampaign-image-uploader .ivrCampaign-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#motiondialer-ivrCampaign .ivrCampaign-detail-form-container #ivrCampaign-image-uploader .ivrCampaign-image .media{max-height:100%}#motiondialer-ivrCampaign md-table-container thead tr th:not(:first-child):not(.no-padding){padding:0 20px 0 0!important}#motiondialer-ivrCampaign md-table-container thead th.md-checkbox-column:not(.no-padding){padding:0 24px!important}#motiondialer-ivrCampaign md-table-container tbody tr td:not(:first-child):not(.no-padding):not(.actions-padding){padding:0 20px 0 0!important}#motiondialer-ivrCampaign md-table-container.font-size-12 td.md-cell{font-size:12px!important}#ivrCampaigns{position:relative}#ivrCampaigns>.header{height:76px;min-height:76px;max-height:76px}#ivrCampaigns>.header .logo .logo-icon{margin:0 16px 0 0}#ivrCampaigns>.header .logo .logo-text{font-size:24px}#ivrCampaigns>.header md-icon{color:#fff}#ivrCampaigns>.header .search-input-wrapper{position:relative}#ivrCampaigns>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#ivrCampaigns>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#ivrCampaigns>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#ivrCampaigns>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#ivrCampaigns>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#ivrCampaigns>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#ivrCampaigns>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#ivrCampaigns>.header.selected-bar .close-button-wrapper{width:244px}#ivrCampaigns>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#ivrCampaigns>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#ivrCampaigns>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#ivrCampaigns #add-ivrCampaign-button{position:fixed;bottom:8px;right:8px;padding:0}#ivrCampaigns #upload-ivrCampaign-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.queueCampaign-dialog{max-width:720px;width:720px}md-dialog.queueCampaign-dialog md-dialog-content{display:block;position:relative}md-dialog.queueCampaign-dialog md-toolbar .title{font-size:17px}md-dialog.queueCampaign-dialog md-input-container textarea{min-height:150px}md-dialog.queueCampaign-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.queueCampaign-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.queueCampaign-dialog .date-container{padding:16px 0 24px 0}md-dialog.queueCampaign-dialog .error-list{font-size:13px}md-dialog.queueCampaign-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.queueCampaign-dialog .error-list .error .message{font-weight:500}md-dialog.queueCampaign-dialog .error-list .error .md-button{margin:0}md-dialog.queueCampaign-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.queueCampaign-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.hopper-dialog{max-width:720px;width:720px}md-dialog.hopper-dialog md-dialog-content{display:block;position:relative}md-dialog.hopper-dialog md-toolbar .title{font-size:17px}md-dialog.hopper-dialog md-input-container textarea{min-height:150px}md-dialog.hopper-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.hopper-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.hopper-dialog .date-container{padding:16px 0 24px 0}md-dialog.hopper-dialog .error-list{font-size:13px}md-dialog.hopper-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.hopper-dialog .error-list .error .message{font-weight:500}md-dialog.hopper-dialog .error-list .error .md-button{margin:0}md-dialog.hopper-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.hopper-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#motiondialer-queueCampaign .header{height:76px;min-height:76px;max-height:76px}#motiondialer-queueCampaign .header .goto-queueCampaigns-button{margin-right:16px}#motiondialer-queueCampaign .header .queueCampaign-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#motiondialer-queueCampaign .header .queueCampaign-image img{height:100%;width:auto;max-width:none}#motiondialer-queueCampaign .header .subtitle{margin:6px 0 0 0}#motiondialer-queueCampaign .queueCampaign-detail-form-container{padding:24px;margin-bottom:24px}#motiondialer-queueCampaign .queueCampaign-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#motiondialer-queueCampaign .queueCampaign-detail-form-container .handle{cursor:move}#motiondialer-queueCampaign .queueCampaign-detail-form-container md-input-container md-switch{margin:0!important}#motiondialer-queueCampaign .queueCampaign-detail-form-container #queueCampaign-image-uploader{position:relative}#motiondialer-queueCampaign .queueCampaign-detail-form-container #queueCampaign-image-uploader.dropping .drop-text{display:flex}#motiondialer-queueCampaign .queueCampaign-detail-form-container #queueCampaign-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#motiondialer-queueCampaign .queueCampaign-detail-form-container #queueCampaign-image-uploader .upload-button{margin-bottom:16px}#motiondialer-queueCampaign .queueCampaign-detail-form-container #queueCampaign-image-uploader .queueCampaign-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#motiondialer-queueCampaign .queueCampaign-detail-form-container #queueCampaign-image-uploader .queueCampaign-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#motiondialer-queueCampaign .queueCampaign-detail-form-container #queueCampaign-image-uploader .queueCampaign-image .media{max-height:100%}#motiondialer-queueCampaign md-table-container thead tr th:not(:first-child):not(.no-padding){padding:0 20px 0 0!important}#motiondialer-queueCampaign md-table-container thead th.md-checkbox-column:not(.no-padding){padding:0 24px!important}#motiondialer-queueCampaign md-table-container tbody tr td:not(:first-child):not(.no-padding):not(.actions-padding){padding:0 20px 0 0!important}#motiondialer-queueCampaign md-table-container.font-size-12 td.md-cell{font-size:12px!important}#queueCampaigns{position:relative}#queueCampaigns>.header{height:76px;min-height:76px;max-height:76px}#queueCampaigns>.header .logo .logo-icon{margin:0 16px 0 0}#queueCampaigns>.header .logo .logo-text{font-size:24px}#queueCampaigns>.header md-icon{color:#fff}#queueCampaigns>.header .search-input-wrapper{position:relative}#queueCampaigns>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#queueCampaigns>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#queueCampaigns>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#queueCampaigns>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#queueCampaigns>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#queueCampaigns>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#queueCampaigns>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#queueCampaigns>.header.selected-bar .close-button-wrapper{width:244px}#queueCampaigns>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#queueCampaigns>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#queueCampaigns>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#queueCampaigns #add-queueCampaign-button{position:fixed;bottom:8px;right:8px;padding:0}#queueCampaigns #upload-queueCampaign-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.predictive-dialog{max-width:720px;width:720px}md-dialog.predictive-dialog md-dialog-content{display:block;position:relative}md-dialog.predictive-dialog md-toolbar .title{font-size:17px}md-dialog.predictive-dialog md-input-container textarea{min-height:150px}md-dialog.predictive-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.predictive-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.predictive-dialog .date-container{padding:16px 0 24px 0}md-dialog.predictive-dialog .error-list{font-size:13px}md-dialog.predictive-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.predictive-dialog .error-list .error .message{font-weight:500}md-dialog.predictive-dialog .error-list .error .md-button{margin:0}md-dialog.predictive-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.predictive-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#realtime{height:auto}#realtime>.content .blink{animation:blinker 2s linear infinite}#realtime>.content .avatar-wrapper{position:relative}#realtime>.content .avatar-wrapper .status{position:absolute;bottom:-3px;right:5px}#realtime>.content .search-input-wrapper{position:relative;margin-left:20px}#realtime>.content .search-input-wrapper label{padding:6px;cursor:pointer}#realtime>.content .search-input-wrapper md-input-container{padding-top:20px}#realtime>.content .main .labels{padding:8px 16px}#realtime>.content .main .labels .label{margin:0 0 2px 4px;padding:2px 5px;font-size:11px;white-space:nowrap;border-radius:2px}#realtime>.content .main .status{position:absolute;bottom:-3px;right:5px}#realtime>.content .main .avatar-wrapper{position:relative}#realtime>.content .main .avatar-wrapper .status{position:absolute;bottom:-3px;right:5px}#realtime>.content .custom-column{padding:0 24px!important}@keyframes blinker{50%{opacity:0}}md-dialog.openchannelAccount-dialog{max-width:720px;width:720px}md-dialog.openchannelAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.openchannelAccount-dialog md-toolbar .title{font-size:17px}md-dialog.openchannelAccount-dialog md-input-container textarea{min-height:150px}md-dialog.openchannelAccount-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.openchannelAccount-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.openchannelAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.openchannelAccount-dialog .error-list{font-size:13px}md-dialog.openchannelAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.openchannelAccount-dialog .error-list .error .message{font-weight:500}md-dialog.openchannelAccount-dialog .error-list .error .md-button{margin:0}md-dialog.openchannelAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.openchannelAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.openchannelAccount-dialog{max-width:720px;width:720px}md-dialog.openchannelAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.openchannelAccount-dialog md-toolbar .title{font-size:17px}md-dialog.openchannelAccount-dialog md-input-container textarea{min-height:150px}md-dialog.openchannelAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.openchannelAccount-dialog .error-list{font-size:13px}md-dialog.openchannelAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.openchannelAccount-dialog .error-list .error .message{font-weight:500}md-dialog.openchannelAccount-dialog .error-list .error .md-button{margin:0}md-dialog.openchannelAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.openchannelAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.openchannelAccount-dialog{max-width:720px;width:720px}md-dialog.openchannelAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.openchannelAccount-dialog md-toolbar .title{font-size:17px}md-dialog.openchannelAccount-dialog md-input-container textarea{min-height:150px}md-dialog.openchannelAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.openchannelAccount-dialog .error-list{font-size:13px}md-dialog.openchannelAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.openchannelAccount-dialog .error-list .error .message{font-weight:500}md-dialog.openchannelAccount-dialog .error-list .error .md-button{margin:0}md-dialog.openchannelAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.openchannelAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.openchannelAccount-dialog{max-width:720px;width:720px}md-dialog.openchannelAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.openchannelAccount-dialog md-toolbar .title{font-size:17px}md-dialog.openchannelAccount-dialog md-input-container textarea{min-height:150px}md-dialog.openchannelAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.openchannelAccount-dialog .error-list{font-size:13px}md-dialog.openchannelAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.openchannelAccount-dialog .error-list .error .message{font-weight:500}md-dialog.openchannelAccount-dialog .error-list .error .md-button{margin:0}md-dialog.openchannelAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.openchannelAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.openchannelAccount-dialog{max-width:720px;width:720px}md-dialog.openchannelAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.openchannelAccount-dialog md-toolbar .title{font-size:17px}md-dialog.openchannelAccount-dialog md-input-container textarea{min-height:150px}md-dialog.openchannelAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.openchannelAccount-dialog .error-list{font-size:13px}md-dialog.openchannelAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.openchannelAccount-dialog .error-list .error .message{font-weight:500}md-dialog.openchannelAccount-dialog .error-list .error .md-button{margin:0}md-dialog.openchannelAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.openchannelAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.openchannelAccount-dialog{max-width:720px;width:720px}md-dialog.openchannelAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.openchannelAccount-dialog md-toolbar .title{font-size:17px}md-dialog.openchannelAccount-dialog md-input-container textarea{min-height:150px}md-dialog.openchannelAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.openchannelAccount-dialog .error-list{font-size:13px}md-dialog.openchannelAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.openchannelAccount-dialog .error-list .error .message{font-weight:500}md-dialog.openchannelAccount-dialog .error-list .error .md-button{margin:0}md-dialog.openchannelAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.openchannelAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.openchannelAccount-dialog{max-width:720px;width:720px}md-dialog.openchannelAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.openchannelAccount-dialog md-toolbar .title{font-size:17px}md-dialog.openchannelAccount-dialog md-input-container textarea{min-height:150px}md-dialog.openchannelAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.openchannelAccount-dialog .error-list{font-size:13px}md-dialog.openchannelAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.openchannelAccount-dialog .error-list .error .message{font-weight:500}md-dialog.openchannelAccount-dialog .error-list .error .md-button{margin:0}md-dialog.openchannelAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.openchannelAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.openchannelAccount-dialog{max-width:720px;width:720px}md-dialog.openchannelAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.openchannelAccount-dialog md-toolbar .title{font-size:17px}md-dialog.openchannelAccount-dialog md-input-container textarea{min-height:150px}md-dialog.openchannelAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.openchannelAccount-dialog .error-list{font-size:13px}md-dialog.openchannelAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.openchannelAccount-dialog .error-list .error .message{font-weight:500}md-dialog.openchannelAccount-dialog .error-list .error .md-button{margin:0}md-dialog.openchannelAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.openchannelAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.openchannelAccount-dialog{max-width:720px;width:720px}md-dialog.openchannelAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.openchannelAccount-dialog md-toolbar .title{font-size:17px}md-dialog.openchannelAccount-dialog md-input-container textarea{min-height:150px}md-dialog.openchannelAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.openchannelAccount-dialog .error-list{font-size:13px}md-dialog.openchannelAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.openchannelAccount-dialog .error-list .error .message{font-weight:500}md-dialog.openchannelAccount-dialog .error-list .error .md-button{margin:0}md-dialog.openchannelAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.openchannelAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.openchannelAccount-dialog{max-width:720px;width:720px}md-dialog.openchannelAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.openchannelAccount-dialog md-toolbar .title{font-size:17px}md-dialog.openchannelAccount-dialog md-input-container textarea{min-height:150px}md-dialog.openchannelAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.openchannelAccount-dialog .error-list{font-size:13px}md-dialog.openchannelAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.openchannelAccount-dialog .error-list .error .message{font-weight:500}md-dialog.openchannelAccount-dialog .error-list .error .md-button{margin:0}md-dialog.openchannelAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.openchannelAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.openchannelAccount-dialog{max-width:720px;width:720px}md-dialog.openchannelAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.openchannelAccount-dialog md-toolbar .title{font-size:17px}md-dialog.openchannelAccount-dialog md-input-container textarea{min-height:150px}md-dialog.openchannelAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.openchannelAccount-dialog .error-list{font-size:13px}md-dialog.openchannelAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.openchannelAccount-dialog .error-list .error .message{font-weight:500}md-dialog.openchannelAccount-dialog .error-list .error .md-button{margin:0}md-dialog.openchannelAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.openchannelAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.openchannelAccount-dialog{max-width:720px;width:720px}md-dialog.openchannelAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.openchannelAccount-dialog md-toolbar .title{font-size:17px}md-dialog.openchannelAccount-dialog md-input-container textarea{min-height:150px}md-dialog.openchannelAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.openchannelAccount-dialog .error-list{font-size:13px}md-dialog.openchannelAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.openchannelAccount-dialog .error-list .error .message{font-weight:500}md-dialog.openchannelAccount-dialog .error-list .error .md-button{margin:0}md-dialog.openchannelAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.openchannelAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.openchannelAccount-dialog{max-width:720px;width:720px}md-dialog.openchannelAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.openchannelAccount-dialog md-toolbar .title{font-size:17px}md-dialog.openchannelAccount-dialog md-input-container textarea{min-height:150px}md-dialog.openchannelAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.openchannelAccount-dialog .error-list{font-size:13px}md-dialog.openchannelAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.openchannelAccount-dialog .error-list .error .message{font-weight:500}md-dialog.openchannelAccount-dialog .error-list .error .md-button{margin:0}md-dialog.openchannelAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.openchannelAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.openchannelAccount-dialog{max-width:720px;width:720px}md-dialog.openchannelAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.openchannelAccount-dialog md-toolbar .title{font-size:17px}md-dialog.openchannelAccount-dialog md-input-container textarea{min-height:150px}md-dialog.openchannelAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.openchannelAccount-dialog .error-list{font-size:13px}md-dialog.openchannelAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.openchannelAccount-dialog .error-list .error .message{font-weight:500}md-dialog.openchannelAccount-dialog .error-list .error .md-button{margin:0}md-dialog.openchannelAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.openchannelAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.openchannelCannedAnswer-dialog{max-width:720px;width:720px}md-dialog.openchannelCannedAnswer-dialog md-dialog-content{display:block;position:relative}md-dialog.openchannelCannedAnswer-dialog md-toolbar .title{font-size:17px}md-dialog.openchannelCannedAnswer-dialog md-input-container textarea{min-height:150px}md-dialog.openchannelCannedAnswer-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.openchannelCannedAnswer-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.openchannelCannedAnswer-dialog .date-container{padding:16px 0 24px 0}md-dialog.openchannelCannedAnswer-dialog .error-list{font-size:13px}md-dialog.openchannelCannedAnswer-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.openchannelCannedAnswer-dialog .error-list .error .message{font-weight:500}md-dialog.openchannelCannedAnswer-dialog .error-list .error .md-button{margin:0}md-dialog.openchannelCannedAnswer-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.openchannelCannedAnswer-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#openchannel-openchannelAccount .header{height:76px;min-height:76px;max-height:76px}#openchannel-openchannelAccount .header .goto-openchannelAccounts-button{margin-right:16px}#openchannel-openchannelAccount .header .openchannelAccount-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#openchannel-openchannelAccount .header .openchannelAccount-image img{height:100%;width:auto;max-width:none}#openchannel-openchannelAccount .header .subtitle{margin:6px 0 0 0}#openchannel-openchannelAccount .openchannelAccount-detail-form-container{padding:24px;margin-bottom:24px}#openchannel-openchannelAccount .openchannelAccount-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#openchannel-openchannelAccount .openchannelAccount-detail-form-container .handle{cursor:move}#openchannel-openchannelAccount .openchannelAccount-detail-form-container md-input-container md-switch{margin:0!important}#openchannel-openchannelAccount .openchannelAccount-detail-form-container #openchannelAccount-image-uploader{position:relative}#openchannel-openchannelAccount .openchannelAccount-detail-form-container #openchannelAccount-image-uploader.dropping .drop-text{display:flex}#openchannel-openchannelAccount .openchannelAccount-detail-form-container #openchannelAccount-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#openchannel-openchannelAccount .openchannelAccount-detail-form-container #openchannelAccount-image-uploader .upload-button{margin-bottom:16px}#openchannel-openchannelAccount .openchannelAccount-detail-form-container #openchannelAccount-image-uploader .openchannelAccount-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#openchannel-openchannelAccount .openchannelAccount-detail-form-container #openchannelAccount-image-uploader .openchannelAccount-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#openchannel-openchannelAccount .openchannelAccount-detail-form-container #openchannelAccount-image-uploader .openchannelAccount-image .media{max-height:100%}#openchannel-openchannelAccount md-table-container thead tr th:not(:first-child):not(.no-padding){padding:0 20px 0 0!important}#openchannel-openchannelAccount md-table-container thead th.md-checkbox-column:not(.no-padding){padding:0 24px!important}#openchannel-openchannelAccount md-table-container tbody tr td:not(:first-child):not(.no-padding):not(.actions-padding){padding:0 20px 0 0!important}#openchannel-openchannelAccount md-table-container.font-size-12 td.md-cell{font-size:12px!important}@media screen and (min-width:1921px){#openchannel-openchannelAccount .actionAppData{width:800px!important}}@media screen and (max-width:1920px){#openchannel-openchannelAccount .actionAppData{width:700px!important}}@media screen and (min-width:1751px) and (max-width:1919px){#openchannel-openchannelAccount .actionAppData{width:600px!important}}@media screen and (min-width:1601px) and (max-width:1750px){#openchannel-openchannelAccount .actionAppData{width:500px!important}}@media screen and (min-width:1537px) and (max-width:1600px){#openchannel-openchannelAccount .actionAppData{width:450px!important}}@media screen and (min-width:1281px) and (max-width:1536px){#openchannel-openchannelAccount .actionAppData{width:300px!important}}@media screen and (max-width:1280px){#openchannel-openchannelAccount .actionAppData{width:150px!important}}@media screen and (max-width:960px){#openchannel-openchannelAccount .actionAppData{width:80px!important}}#openchannelAccounts{position:relative}#openchannelAccounts>.header{height:76px;min-height:76px;max-height:76px}#openchannelAccounts>.header .logo .logo-icon{margin:0 16px 0 0}#openchannelAccounts>.header .logo .logo-text{font-size:24px}#openchannelAccounts>.header md-icon{color:#fff}#openchannelAccounts>.header .search-input-wrapper{position:relative}#openchannelAccounts>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#openchannelAccounts>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#openchannelAccounts>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#openchannelAccounts>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#openchannelAccounts>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#openchannelAccounts>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#openchannelAccounts>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#openchannelAccounts>.header.selected-bar .close-button-wrapper{width:244px}#openchannelAccounts>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#openchannelAccounts>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#openchannelAccounts>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#openchannelAccounts #add-openchannelAccount-button{position:fixed;bottom:8px;right:8px;padding:0}#openchannelAccounts #upload-openchannelAccount-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.openchannelQueue-dialog{max-width:720px;width:720px}md-dialog.openchannelQueue-dialog md-dialog-content{display:block;position:relative}md-dialog.openchannelQueue-dialog md-toolbar .title{font-size:17px}md-dialog.openchannelQueue-dialog md-input-container textarea{min-height:150px}md-dialog.openchannelQueue-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.openchannelQueue-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.openchannelQueue-dialog .date-container{padding:16px 0 24px 0}md-dialog.openchannelQueue-dialog .error-list{font-size:13px}md-dialog.openchannelQueue-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.openchannelQueue-dialog .error-list .error .message{font-weight:500}md-dialog.openchannelQueue-dialog .error-list .error .md-button{margin:0}md-dialog.openchannelQueue-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.openchannelQueue-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#openchannel-openchannelQueue .header{height:76px;min-height:76px;max-height:76px}#openchannel-openchannelQueue .header .goto-openchannelQueues-button{margin-right:16px}#openchannel-openchannelQueue .header .openchannelQueue-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#openchannel-openchannelQueue .header .openchannelQueue-image img{height:100%;width:auto;max-width:none}#openchannel-openchannelQueue .header .subtitle{margin:6px 0 0 0}#openchannel-openchannelQueue .openchannelQueue-detail-form-container{padding:24px;margin-bottom:24px}#openchannel-openchannelQueue .openchannelQueue-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#openchannel-openchannelQueue .openchannelQueue-detail-form-container .handle{cursor:move}#openchannel-openchannelQueue .openchannelQueue-detail-form-container md-input-container md-switch{margin:0!important}#openchannel-openchannelQueue .openchannelQueue-detail-form-container #openchannelQueue-image-uploader{position:relative}#openchannel-openchannelQueue .openchannelQueue-detail-form-container #openchannelQueue-image-uploader.dropping .drop-text{display:flex}#openchannel-openchannelQueue .openchannelQueue-detail-form-container #openchannelQueue-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#openchannel-openchannelQueue .openchannelQueue-detail-form-container #openchannelQueue-image-uploader .upload-button{margin-bottom:16px}#openchannel-openchannelQueue .openchannelQueue-detail-form-container #openchannelQueue-image-uploader .openchannelQueue-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#openchannel-openchannelQueue .openchannelQueue-detail-form-container #openchannelQueue-image-uploader .openchannelQueue-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#openchannel-openchannelQueue .openchannelQueue-detail-form-container #openchannelQueue-image-uploader .openchannelQueue-image .media{max-height:100%}#openchannel-openchannelQueue md-table-container thead tr th:not(:first-child):not(.no-padding){padding:0 20px 0 0!important}#openchannel-openchannelQueue md-table-container thead th.md-checkbox-column:not(.no-padding){padding:0 24px!important}#openchannel-openchannelQueue md-table-container tbody tr td:not(:first-child):not(.no-padding):not(.actions-padding){padding:0 20px 0 0!important}#openchannel-openchannelQueue md-table-container.font-size-12 td.md-cell{font-size:12px!important}#openchannelQueues{position:relative}#openchannelQueues>.header{height:76px;min-height:76px;max-height:76px}#openchannelQueues>.header .logo .logo-icon{margin:0 16px 0 0}#openchannelQueues>.header .logo .logo-text{font-size:24px}#openchannelQueues>.header md-icon{color:#fff}#openchannelQueues>.header .search-input-wrapper{position:relative}#openchannelQueues>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#openchannelQueues>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#openchannelQueues>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#openchannelQueues>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#openchannelQueues>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#openchannelQueues>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#openchannelQueues>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#openchannelQueues>.header.selected-bar .close-button-wrapper{width:244px}#openchannelQueues>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#openchannelQueues>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#openchannelQueues>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#openchannelQueues #add-openchannelQueue-button{position:fixed;bottom:8px;right:8px;padding:0}#openchannelQueues #upload-openchannelQueue-button{position:fixed;bottom:8px;right:8px;padding:0}#realtime{height:auto}#realtime>.content .blink{animation:blinker 2s linear infinite}#realtime>.content .avatar-wrapper{position:relative}#realtime>.content .avatar-wrapper .status{position:absolute;bottom:-3px;right:5px}#realtime>.content .search-input-wrapper{position:relative;margin-left:20px}#realtime>.content .search-input-wrapper label{padding:6px;cursor:pointer}#realtime>.content .search-input-wrapper md-input-container{padding-top:20px}#realtime>.content .main .labels{padding:8px 16px}#realtime>.content .main .labels .label{margin:0 0 2px 4px;padding:2px 5px;font-size:11px;white-space:nowrap;border-radius:2px}#realtime>.content .main .status{position:absolute;bottom:-3px;right:5px}#realtime>.content .main .avatar-wrapper{position:relative}#realtime>.content .main .avatar-wrapper .status{position:absolute;bottom:-3px;right:5px}#realtime>.content .custom-column{padding:0 24px!important}@keyframes blinker{50%{opacity:0}}#plugin .filter-header{background-image:url(/assets/images/backgrounds/header-bg.png);color:#fff}#cloudProviders{position:relative}#cloudProviders>.header{height:76px;min-height:76px;max-height:76px}#cloudProviders>.header .logo .logo-icon{margin:0 16px 0 0}#cloudProviders>.header .logo .logo-text{font-size:24px}#cloudProviders>.header md-icon{color:#fff}#cloudProviders>.header .search-input-wrapper{position:relative}#cloudProviders>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#cloudProviders>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#cloudProviders>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#cloudProviders>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#cloudProviders>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#cloudProviders>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#cloudProviders>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#cloudProviders>.header.selected-bar .close-button-wrapper{width:244px}#cloudProviders>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#cloudProviders>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#cloudProviders>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#cloudProviders #add-cloudProvider-button{position:fixed;bottom:8px;right:8px;padding:0}#cloudProviders #upload-cloudProvider-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.cloudProvider-dialog{max-width:720px;width:720px}md-dialog.cloudProvider-dialog md-dialog-content{display:block;position:relative}md-dialog.cloudProvider-dialog md-toolbar .title{font-size:17px}md-dialog.cloudProvider-dialog md-input-container textarea{min-height:150px}md-dialog.cloudProvider-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.cloudProvider-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.cloudProvider-dialog .date-container{padding:16px 0 24px 0}md-dialog.cloudProvider-dialog .error-list{font-size:13px}md-dialog.cloudProvider-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.cloudProvider-dialog .error-list .error .message{font-weight:500}md-dialog.cloudProvider-dialog .error-list .error .md-button{margin:0}md-dialog.cloudProvider-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.cloudProvider-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.customization-dialog{max-width:720px;width:720px}md-dialog.customization-dialog md-dialog-content{display:block;position:relative}md-dialog.customization-dialog md-toolbar .title{font-size:17px}md-dialog.customization-dialog md-input-container textarea{min-height:150px}md-dialog.customization-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.customization-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.customization-dialog .date-container{padding:16px 0 24px 0}md-dialog.customization-dialog .error-list{font-size:13px}md-dialog.customization-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.customization-dialog .error-list .error .message{font-weight:500}md-dialog.customization-dialog .error-list .error .md-button{margin:0}md-dialog.customization-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.customization-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#customizations{position:relative}#customizations>.header{height:76px;min-height:76px;max-height:76px}#customizations>.header .logo .logo-icon{margin:0 16px 0 0}#customizations>.header .logo .logo-text{font-size:24px}#customizations>.header md-icon{color:#fff}#customizations>.header .search-input-wrapper{position:relative}#customizations>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#customizations>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#customizations>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#customizations>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#customizations>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#customizations>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#customizations>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#customizations>.header.selected-bar .close-button-wrapper{width:244px}#customizations>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#customizations>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#customizations>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#customizations>.content .customization-detail-form-container{padding:24px;margin-bottom:24px}#customizations>.content .customization-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#customizations>.content .customization-detail-form-container .handle{cursor:move}#customizations>.content .customization-detail-form-container md-input-container md-switch{margin:0!important}#customizations>.content .customization-detail-form-container #customization-image-uploader{position:relative}#customizations>.content .customization-detail-form-container #customization-image-uploader.dropping .drop-text{display:flex}#customizations>.content .customization-detail-form-container #customization-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#customizations>.content .customization-detail-form-container #customization-image-uploader .upload-button{margin-bottom:16px}#customizations>.content .customization-detail-form-container #customization-image-uploader .customization-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#customizations>.content .customization-detail-form-container #customization-image-uploader .customization-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#customizations>.content .customization-detail-form-container #customization-image-uploader .customization-image .media{max-height:100%}#customizations #add-customization-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.general-dialog{max-width:720px;width:720px}md-dialog.general-dialog md-dialog-content{display:block;position:relative}md-dialog.general-dialog md-toolbar .title{font-size:17px}md-dialog.general-dialog md-input-container textarea{min-height:150px}md-dialog.general-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.general-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.general-dialog .date-container{padding:16px 0 24px 0}md-dialog.general-dialog .error-list{font-size:13px}md-dialog.general-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.general-dialog .error-list .error .message{font-weight:500}md-dialog.general-dialog .error-list .error .md-button{margin:0}md-dialog.general-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.general-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#generals{position:relative}#generals>.header{height:76px;min-height:76px;max-height:76px}#generals>.header .logo .logo-icon{margin:0 16px 0 0}#generals>.header .logo .logo-text{font-size:24px}#generals>.header md-icon{color:#fff}#generals>.header .search-input-wrapper{position:relative}#generals>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#generals>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#generals>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#generals>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#generals>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#generals>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#generals>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#generals>.header.selected-bar .close-button-wrapper{width:244px}#generals>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#generals>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#generals>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#generals>.content .general-detail-form-container{padding:24px;margin-bottom:24px}#generals>.content .general-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#generals>.content .general-detail-form-container .handle{cursor:move}#generals>.content .general-detail-form-container md-input-container md-switch{margin:0!important}#generals>.content .general-detail-form-container #general-image-uploader{position:relative}#generals>.content .general-detail-form-container #general-image-uploader.dropping .drop-text{display:flex}#generals>.content .general-detail-form-container #general-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#generals>.content .general-detail-form-container #general-image-uploader .upload-button{margin-bottom:16px}#generals>.content .general-detail-form-container #general-image-uploader .general-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#generals>.content .general-detail-form-container #general-image-uploader .general-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#generals>.content .general-detail-form-container #general-image-uploader .general-image .media{max-height:100%}#generals #add-general-button{position:fixed;bottom:8px;right:8px;padding:0}#license{position:relative}#license .blink{animation:blinker 2s linear infinite}#license>.header{height:76px;min-height:76px;max-height:76px}#license>.header .logo .logo-icon{margin:0 16px 0 0}#license>.header .logo .logo-text{font-size:24px}#license>.header md-icon{color:#fff}#license>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#license>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#license>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#license>.content .badge{position:absolute;top:0;left:50%;-webkit-transform:translateX(-50%);transform:translateX(-50%);font-size:11px;font-weight:500;padding:6px 8px}md-dialog.request-dialog{max-width:720px;width:720px}md-dialog.request-dialog md-dialog-content{display:block;position:relative}md-dialog.request-dialog md-toolbar .title{font-size:17px}md-dialog.request-dialog md-input-container textarea{min-height:150px}md-dialog.request-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.request-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.request-dialog .date-container{padding:16px 0 24px 0}md-dialog.request-dialog .error-list{font-size:13px}md-dialog.request-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.request-dialog .error-list .error .message{font-weight:500}md-dialog.request-dialog .error-list .error .md-button{margin:0}md-dialog.request-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.request-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.update-dialog{max-width:720px;width:720px}md-dialog.update-dialog md-dialog-content{display:block;position:relative}md-dialog.update-dialog md-toolbar .title{font-size:17px}md-dialog.update-dialog md-input-container textarea{min-height:60px}md-dialog.update-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.update-dialog .error-list{font-size:13px}md-dialog.update-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.update-dialog .error-list .error .message{font-weight:500}md-dialog.update-dialog .error-list .error .md-button{margin:0}md-dialog.update-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.update-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.network-dialog{max-width:720px;width:720px}md-dialog.network-dialog md-dialog-content{display:block;position:relative}md-dialog.network-dialog md-toolbar .title{font-size:17px}md-dialog.network-dialog md-input-container textarea{min-height:150px}md-dialog.network-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.network-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.network-dialog .date-container{padding:16px 0 24px 0}md-dialog.network-dialog .error-list{font-size:13px}md-dialog.network-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.network-dialog .error-list .error .message{font-weight:500}md-dialog.network-dialog .error-list .error .md-button{margin:0}md-dialog.network-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.network-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#networks{position:relative}#networks>.header{height:76px;min-height:76px;max-height:76px}#networks>.header .logo .logo-icon{margin:0 16px 0 0}#networks>.header .logo .logo-text{font-size:24px}#networks>.header md-icon{color:#fff}#networks>.header .search-input-wrapper{position:relative}#networks>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#networks>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#networks>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#networks>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#networks>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#networks>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#networks>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#networks>.header.selected-bar .close-button-wrapper{width:244px}#networks>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#networks>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#networks>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#networks #add-network-button{position:fixed;bottom:8px;right:8px;padding:0}#networks #upload-network-button{position:fixed;bottom:8px;right:8px;padding:0}#smtps{position:relative}#smtps>.header{height:76px;min-height:76px;max-height:76px}#smtps>.header .logo .logo-icon{margin:0 16px 0 0}#smtps>.header .logo .logo-text{font-size:24px}#smtps>.header md-icon{color:#fff}#smtps>.header .search-input-wrapper{position:relative}#smtps>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#smtps>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#smtps>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#smtps>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#smtps>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#smtps>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#smtps>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#smtps>.header.selected-bar .close-button-wrapper{width:244px}#smtps>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#smtps>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#smtps>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#smtps>.content .smtp-detail-form-container{padding:24px;margin-bottom:24px}#smtps>.content .smtp-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#smtps>.content .smtp-detail-form-container .handle{cursor:move}#smtps>.content .smtp-detail-form-container md-input-container md-switch{margin:0!important}#smtps>.content .smtp-detail-form-container #smtp-image-uploader{position:relative}#smtps>.content .smtp-detail-form-container #smtp-image-uploader.dropping .drop-text{display:flex}#smtps>.content .smtp-detail-form-container #smtp-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#smtps>.content .smtp-detail-form-container #smtp-image-uploader .upload-button{margin-bottom:16px}#smtps>.content .smtp-detail-form-container #smtp-image-uploader .smtp-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#smtps>.content .smtp-detail-form-container #smtp-image-uploader .smtp-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#smtps>.content .smtp-detail-form-container #smtp-image-uploader .smtp-image .media{max-height:100%}#smtps #add-smtp-button{position:fixed;bottom:8px;right:8px;padding:0}#system>.header{height:76px;min-height:76px;max-height:76px}#system>.header .logo .logo-icon{margin:0 16px 0 0}#system>.header .logo .logo-text{font-size:24px}#system>.header md-icon{color:#fff}#system .system-detail-form-container{padding:24px;margin-bottom:24px}#system .system-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#system .system-detail-form-container .handle{cursor:move}#system .system-detail-form-container md-input-container md-switch{margin:0!important}#system .system-detail-form-container #system-image-uploader{position:relative}#system .system-detail-form-container #system-image-uploader.dropping .drop-text{display:flex}#system .system-detail-form-container #system-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#system .system-detail-form-container #system-image-uploader .upload-button{margin-bottom:16px}#system .system-detail-form-container #system-image-uploader .system-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#system .system-detail-form-container #system-image-uploader .system-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#system .system-detail-form-container #system-image-uploader .system-image .media{max-height:100%}#updates{position:relative}#updates>.header{height:76px;min-height:76px;max-height:76px}#updates>.header .logo .logo-icon{margin:0 16px 0 0}#updates>.header .logo .logo-text{font-size:24px}#updates>.header md-icon{color:#fff}#updates>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#updates>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#updates>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#realtime{height:auto}#realtime>.content .blink{animation:blinker 2s linear infinite}#realtime>.content .avatar-wrapper{position:relative}#realtime>.content .avatar-wrapper .status{position:absolute;bottom:-3px;right:5px}#realtime>.content .search-input-wrapper{position:relative;margin-left:20px}#realtime>.content .search-input-wrapper label{padding:6px;cursor:pointer}#realtime>.content .search-input-wrapper md-input-container{padding-top:20px}#realtime>.content .main .labels{padding:8px 16px}#realtime>.content .main .labels .label{margin:0 0 2px 4px;padding:2px 5px;font-size:11px;white-space:nowrap;border-radius:2px}#realtime>.content .main .status{position:absolute;bottom:-3px;right:5px}#realtime>.content .main .avatar-wrapper{position:relative}#realtime>.content .main .avatar-wrapper .status{position:absolute;bottom:-3px;right:5px}#realtime>.content .custom-column{padding:0 24px!important}@keyframes blinker{50%{opacity:0}}md-dialog.smsAccount-dialog{max-width:720px;width:720px}md-dialog.smsAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.smsAccount-dialog md-toolbar .title{font-size:17px}md-dialog.smsAccount-dialog md-input-container textarea{min-height:150px}md-dialog.smsAccount-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.smsAccount-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.smsAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.smsAccount-dialog .error-list{font-size:13px}md-dialog.smsAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.smsAccount-dialog .error-list .error .message{font-weight:500}md-dialog.smsAccount-dialog .error-list .error .md-button{margin:0}md-dialog.smsAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.smsAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.smsAccount-dialog{max-width:720px;width:720px}md-dialog.smsAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.smsAccount-dialog md-toolbar .title{font-size:17px}md-dialog.smsAccount-dialog md-input-container textarea{min-height:150px}md-dialog.smsAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.smsAccount-dialog .error-list{font-size:13px}md-dialog.smsAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.smsAccount-dialog .error-list .error .message{font-weight:500}md-dialog.smsAccount-dialog .error-list .error .md-button{margin:0}md-dialog.smsAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.smsAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.smsAccount-dialog{max-width:720px;width:720px}md-dialog.smsAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.smsAccount-dialog md-toolbar .title{font-size:17px}md-dialog.smsAccount-dialog md-input-container textarea{min-height:150px}md-dialog.smsAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.smsAccount-dialog .error-list{font-size:13px}md-dialog.smsAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.smsAccount-dialog .error-list .error .message{font-weight:500}md-dialog.smsAccount-dialog .error-list .error .md-button{margin:0}md-dialog.smsAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.smsAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.smsAccount-dialog{max-width:720px;width:720px}md-dialog.smsAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.smsAccount-dialog md-toolbar .title{font-size:17px}md-dialog.smsAccount-dialog md-input-container textarea{min-height:150px}md-dialog.smsAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.smsAccount-dialog .error-list{font-size:13px}md-dialog.smsAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.smsAccount-dialog .error-list .error .message{font-weight:500}md-dialog.smsAccount-dialog .error-list .error .md-button{margin:0}md-dialog.smsAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.smsAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.smsAccount-dialog{max-width:720px;width:720px}md-dialog.smsAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.smsAccount-dialog md-toolbar .title{font-size:17px}md-dialog.smsAccount-dialog md-input-container textarea{min-height:150px}md-dialog.smsAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.smsAccount-dialog .error-list{font-size:13px}md-dialog.smsAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.smsAccount-dialog .error-list .error .message{font-weight:500}md-dialog.smsAccount-dialog .error-list .error .md-button{margin:0}md-dialog.smsAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.smsAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.smsAccount-dialog{max-width:720px;width:720px}md-dialog.smsAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.smsAccount-dialog md-toolbar .title{font-size:17px}md-dialog.smsAccount-dialog md-input-container textarea{min-height:150px}md-dialog.smsAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.smsAccount-dialog .error-list{font-size:13px}md-dialog.smsAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.smsAccount-dialog .error-list .error .message{font-weight:500}md-dialog.smsAccount-dialog .error-list .error .md-button{margin:0}md-dialog.smsAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.smsAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.smsAccount-dialog{max-width:720px;width:720px}md-dialog.smsAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.smsAccount-dialog md-toolbar .title{font-size:17px}md-dialog.smsAccount-dialog md-input-container textarea{min-height:150px}md-dialog.smsAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.smsAccount-dialog .error-list{font-size:13px}md-dialog.smsAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.smsAccount-dialog .error-list .error .message{font-weight:500}md-dialog.smsAccount-dialog .error-list .error .md-button{margin:0}md-dialog.smsAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.smsAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.smsAccount-dialog{max-width:720px;width:720px}md-dialog.smsAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.smsAccount-dialog md-toolbar .title{font-size:17px}md-dialog.smsAccount-dialog md-input-container textarea{min-height:150px}md-dialog.smsAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.smsAccount-dialog .error-list{font-size:13px}md-dialog.smsAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.smsAccount-dialog .error-list .error .message{font-weight:500}md-dialog.smsAccount-dialog .error-list .error .md-button{margin:0}md-dialog.smsAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.smsAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.smsAccount-dialog{max-width:720px;width:720px}md-dialog.smsAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.smsAccount-dialog md-toolbar .title{font-size:17px}md-dialog.smsAccount-dialog md-input-container textarea{min-height:150px}md-dialog.smsAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.smsAccount-dialog .error-list{font-size:13px}md-dialog.smsAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.smsAccount-dialog .error-list .error .message{font-weight:500}md-dialog.smsAccount-dialog .error-list .error .md-button{margin:0}md-dialog.smsAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.smsAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.smsAccount-dialog{max-width:720px;width:720px}md-dialog.smsAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.smsAccount-dialog md-toolbar .title{font-size:17px}md-dialog.smsAccount-dialog md-input-container textarea{min-height:150px}md-dialog.smsAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.smsAccount-dialog .error-list{font-size:13px}md-dialog.smsAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.smsAccount-dialog .error-list .error .message{font-weight:500}md-dialog.smsAccount-dialog .error-list .error .md-button{margin:0}md-dialog.smsAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.smsAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.smsAccount-dialog{max-width:720px;width:720px}md-dialog.smsAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.smsAccount-dialog md-toolbar .title{font-size:17px}md-dialog.smsAccount-dialog md-input-container textarea{min-height:150px}md-dialog.smsAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.smsAccount-dialog .error-list{font-size:13px}md-dialog.smsAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.smsAccount-dialog .error-list .error .message{font-weight:500}md-dialog.smsAccount-dialog .error-list .error .md-button{margin:0}md-dialog.smsAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.smsAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.smsAccount-dialog{max-width:720px;width:720px}md-dialog.smsAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.smsAccount-dialog md-toolbar .title{font-size:17px}md-dialog.smsAccount-dialog md-input-container textarea{min-height:150px}md-dialog.smsAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.smsAccount-dialog .error-list{font-size:13px}md-dialog.smsAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.smsAccount-dialog .error-list .error .message{font-weight:500}md-dialog.smsAccount-dialog .error-list .error .md-button{margin:0}md-dialog.smsAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.smsAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.smsAccount-dialog{max-width:720px;width:720px}md-dialog.smsAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.smsAccount-dialog md-toolbar .title{font-size:17px}md-dialog.smsAccount-dialog md-input-container textarea{min-height:150px}md-dialog.smsAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.smsAccount-dialog .error-list{font-size:13px}md-dialog.smsAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.smsAccount-dialog .error-list .error .message{font-weight:500}md-dialog.smsAccount-dialog .error-list .error .md-button{margin:0}md-dialog.smsAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.smsAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.smsAccount-dialog{max-width:720px;width:720px}md-dialog.smsAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.smsAccount-dialog md-toolbar .title{font-size:17px}md-dialog.smsAccount-dialog md-input-container textarea{min-height:150px}md-dialog.smsAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.smsAccount-dialog .error-list{font-size:13px}md-dialog.smsAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.smsAccount-dialog .error-list .error .message{font-weight:500}md-dialog.smsAccount-dialog .error-list .error .md-button{margin:0}md-dialog.smsAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.smsAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.smsCannedAnswer-dialog{max-width:720px;width:720px}md-dialog.smsCannedAnswer-dialog md-dialog-content{display:block;position:relative}md-dialog.smsCannedAnswer-dialog md-toolbar .title{font-size:17px}md-dialog.smsCannedAnswer-dialog md-input-container textarea{min-height:150px}md-dialog.smsCannedAnswer-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.smsCannedAnswer-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.smsCannedAnswer-dialog .date-container{padding:16px 0 24px 0}md-dialog.smsCannedAnswer-dialog .error-list{font-size:13px}md-dialog.smsCannedAnswer-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.smsCannedAnswer-dialog .error-list .error .message{font-weight:500}md-dialog.smsCannedAnswer-dialog .error-list .error .md-button{margin:0}md-dialog.smsCannedAnswer-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.smsCannedAnswer-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#sms-smsAccount .header{height:76px;min-height:76px;max-height:76px}#sms-smsAccount .header .goto-smsAccounts-button{margin-right:16px}#sms-smsAccount .header .smsAccount-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#sms-smsAccount .header .smsAccount-image img{height:100%;width:auto;max-width:none}#sms-smsAccount .header .subtitle{margin:6px 0 0 0}#sms-smsAccount .smsAccount-detail-form-container{padding:24px;margin-bottom:24px}#sms-smsAccount .smsAccount-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#sms-smsAccount .smsAccount-detail-form-container .handle{cursor:move}#sms-smsAccount .smsAccount-detail-form-container md-input-container md-switch{margin:0!important}#sms-smsAccount .smsAccount-detail-form-container #smsAccount-image-uploader{position:relative}#sms-smsAccount .smsAccount-detail-form-container #smsAccount-image-uploader.dropping .drop-text{display:flex}#sms-smsAccount .smsAccount-detail-form-container #smsAccount-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#sms-smsAccount .smsAccount-detail-form-container #smsAccount-image-uploader .upload-button{margin-bottom:16px}#sms-smsAccount .smsAccount-detail-form-container #smsAccount-image-uploader .smsAccount-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#sms-smsAccount .smsAccount-detail-form-container #smsAccount-image-uploader .smsAccount-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#sms-smsAccount .smsAccount-detail-form-container #smsAccount-image-uploader .smsAccount-image .media{max-height:100%}#sms-smsAccount md-table-container thead tr th:not(:first-child):not(.no-padding){padding:0 20px 0 0!important}#sms-smsAccount md-table-container thead th.md-checkbox-column:not(.no-padding){padding:0 24px!important}#sms-smsAccount md-table-container tbody tr td:not(:first-child):not(.no-padding):not(.actions-padding){padding:0 20px 0 0!important}#sms-smsAccount md-table-container.font-size-12 td.md-cell{font-size:12px!important}@media screen and (min-width:1921px){#sms-smsAccount .actionAppData{width:800px!important}}@media screen and (max-width:1920px){#sms-smsAccount .actionAppData{width:700px!important}}@media screen and (min-width:1751px) and (max-width:1919px){#sms-smsAccount .actionAppData{width:600px!important}}@media screen and (min-width:1601px) and (max-width:1750px){#sms-smsAccount .actionAppData{width:500px!important}}@media screen and (min-width:1537px) and (max-width:1600px){#sms-smsAccount .actionAppData{width:450px!important}}@media screen and (min-width:1281px) and (max-width:1536px){#sms-smsAccount .actionAppData{width:300px!important}}@media screen and (max-width:1280px){#sms-smsAccount .actionAppData{width:150px!important}}@media screen and (max-width:960px){#sms-smsAccount .actionAppData{width:80px!important}}#smsAccounts{position:relative}#smsAccounts>.header{height:76px;min-height:76px;max-height:76px}#smsAccounts>.header .logo .logo-icon{margin:0 16px 0 0}#smsAccounts>.header .logo .logo-text{font-size:24px}#smsAccounts>.header md-icon{color:#fff}#smsAccounts>.header .search-input-wrapper{position:relative}#smsAccounts>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#smsAccounts>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#smsAccounts>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#smsAccounts>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#smsAccounts>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#smsAccounts>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#smsAccounts>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#smsAccounts>.header.selected-bar .close-button-wrapper{width:244px}#smsAccounts>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#smsAccounts>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#smsAccounts>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#smsAccounts #add-smsAccount-button{position:fixed;bottom:8px;right:8px;padding:0}#smsAccounts #upload-smsAccount-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.smsQueue-dialog{max-width:720px;width:720px}md-dialog.smsQueue-dialog md-dialog-content{display:block;position:relative}md-dialog.smsQueue-dialog md-toolbar .title{font-size:17px}md-dialog.smsQueue-dialog md-input-container textarea{min-height:150px}md-dialog.smsQueue-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.smsQueue-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.smsQueue-dialog .date-container{padding:16px 0 24px 0}md-dialog.smsQueue-dialog .error-list{font-size:13px}md-dialog.smsQueue-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.smsQueue-dialog .error-list .error .message{font-weight:500}md-dialog.smsQueue-dialog .error-list .error .md-button{margin:0}md-dialog.smsQueue-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.smsQueue-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#sms-smsQueue .header{height:76px;min-height:76px;max-height:76px}#sms-smsQueue .header .goto-smsQueues-button{margin-right:16px}#sms-smsQueue .header .smsQueue-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#sms-smsQueue .header .smsQueue-image img{height:100%;width:auto;max-width:none}#sms-smsQueue .header .subtitle{margin:6px 0 0 0}#sms-smsQueue .smsQueue-detail-form-container{padding:24px;margin-bottom:24px}#sms-smsQueue .smsQueue-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#sms-smsQueue .smsQueue-detail-form-container .handle{cursor:move}#sms-smsQueue .smsQueue-detail-form-container md-input-container md-switch{margin:0!important}#sms-smsQueue .smsQueue-detail-form-container #smsQueue-image-uploader{position:relative}#sms-smsQueue .smsQueue-detail-form-container #smsQueue-image-uploader.dropping .drop-text{display:flex}#sms-smsQueue .smsQueue-detail-form-container #smsQueue-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#sms-smsQueue .smsQueue-detail-form-container #smsQueue-image-uploader .upload-button{margin-bottom:16px}#sms-smsQueue .smsQueue-detail-form-container #smsQueue-image-uploader .smsQueue-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#sms-smsQueue .smsQueue-detail-form-container #smsQueue-image-uploader .smsQueue-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#sms-smsQueue .smsQueue-detail-form-container #smsQueue-image-uploader .smsQueue-image .media{max-height:100%}#sms-smsQueue md-table-container thead tr th:not(:first-child):not(.no-padding){padding:0 20px 0 0!important}#sms-smsQueue md-table-container thead th.md-checkbox-column:not(.no-padding){padding:0 24px!important}#sms-smsQueue md-table-container tbody tr td:not(:first-child):not(.no-padding):not(.actions-padding){padding:0 20px 0 0!important}#sms-smsQueue md-table-container.font-size-12 td.md-cell{font-size:12px!important}#smsQueues{position:relative}#smsQueues>.header{height:76px;min-height:76px;max-height:76px}#smsQueues>.header .logo .logo-icon{margin:0 16px 0 0}#smsQueues>.header .logo .logo-text{font-size:24px}#smsQueues>.header md-icon{color:#fff}#smsQueues>.header .search-input-wrapper{position:relative}#smsQueues>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#smsQueues>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#smsQueues>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#smsQueues>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#smsQueues>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#smsQueues>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#smsQueues>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#smsQueues>.header.selected-bar .close-button-wrapper{width:244px}#smsQueues>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#smsQueues>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#smsQueues>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#smsQueues #add-smsQueue-button{position:fixed;bottom:8px;right:8px;padding:0}#smsQueues #upload-smsQueue-button{position:fixed;bottom:8px;right:8px;padding:0}#agents{position:relative}#agents>.header{height:76px;min-height:76px;max-height:76px}#agents>.header .logo .logo-icon{margin:0 16px 0 0}#agents>.header .logo .logo-text{font-size:24px}#agents>.header md-icon{color:#fff}#agents>.header .search-input-wrapper{position:relative}#agents>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#agents>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#agents>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#agents>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#agents>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#agents>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#agents>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#agents>.header.selected-bar .close-button-wrapper{width:244px}#agents>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#agents>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#agents>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#agents #add-agent-button{position:fixed;bottom:8px;right:8px;padding:0}#agents #upload-agent-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.agent-dialog{max-width:720px;width:720px}md-dialog.agent-dialog md-dialog-content{display:block;position:relative}md-dialog.agent-dialog md-toolbar .title{font-size:17px}md-dialog.agent-dialog md-input-container textarea{min-height:150px}md-dialog.agent-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.agent-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.agent-dialog .date-container{padding:16px 0 24px 0}md-dialog.agent-dialog .error-list{font-size:13px}md-dialog.agent-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.agent-dialog .error-list .error .message{font-weight:500}md-dialog.agent-dialog .error-list .error .md-button{margin:0}md-dialog.agent-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.agent-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#staff-agent .header{height:76px;min-height:76px;max-height:76px}#staff-agent .header .goto-agents-button{margin-right:16px}#staff-agent .header .agent-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#staff-agent .header .agent-image img{height:100%;width:auto;max-width:none}#staff-agent .header .subtitle{margin:6px 0 0 0}#staff-agent .agent-detail-form-container{padding:24px;margin-bottom:24px}#staff-agent .agent-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#staff-agent .agent-detail-form-container .handle{cursor:move}#staff-agent .agent-detail-form-container md-input-container md-switch{margin:0!important}#staff-agent .agent-detail-form-container #agent-image-uploader{position:relative}#staff-agent .agent-detail-form-container #agent-image-uploader.dropping .drop-text{display:flex}#staff-agent .agent-detail-form-container #agent-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#staff-agent .agent-detail-form-container #agent-image-uploader .upload-button{margin-bottom:16px}#staff-agent .agent-detail-form-container #agent-image-uploader .agent-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#staff-agent .agent-detail-form-container #agent-image-uploader .agent-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#staff-agent .agent-detail-form-container #agent-image-uploader .agent-image .media{max-height:100%}#staff-agent md-table-container thead tr th:not(:first-child):not(.no-padding){padding:0 20px 0 0!important}#staff-agent md-table-container thead th.md-checkbox-column:not(.no-padding){padding:0 24px!important}#staff-agent md-table-container tbody tr td:not(:first-child):not(.no-padding):not(.actions-padding){padding:0 20px 0 0!important}#staff-agent md-table-container.font-size-12 td.md-cell{font-size:12px!important}md-dialog.team-dialog{max-width:720px;width:720px}md-dialog.team-dialog md-dialog-content{display:block;position:relative}md-dialog.team-dialog md-toolbar .title{font-size:17px}md-dialog.team-dialog md-input-container textarea{min-height:150px}md-dialog.team-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.team-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.team-dialog .date-container{padding:16px 0 24px 0}md-dialog.team-dialog .error-list{font-size:13px}md-dialog.team-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.team-dialog .error-list .error .message{font-weight:500}md-dialog.team-dialog .error-list .error .md-button{margin:0}md-dialog.team-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.team-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#teams{position:relative}#teams>.header{height:76px;min-height:76px;max-height:76px}#teams>.header .logo .logo-icon{margin:0 16px 0 0}#teams>.header .logo .logo-text{font-size:24px}#teams>.header md-icon{color:#fff}#teams>.header .search-input-wrapper{position:relative}#teams>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#teams>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#teams>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#teams>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#teams>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#teams>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#teams>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#teams>.header.selected-bar .close-button-wrapper{width:244px}#teams>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#teams>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#teams>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#teams #add-team-button{position:fixed;bottom:8px;right:8px;padding:0}#teams #upload-team-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.telephone-dialog{max-width:720px;width:720px}md-dialog.telephone-dialog md-dialog-content{display:block;position:relative}md-dialog.telephone-dialog md-toolbar .title{font-size:17px}md-dialog.telephone-dialog md-input-container textarea{min-height:150px}md-dialog.telephone-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.telephone-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.telephone-dialog .date-container{padding:16px 0 24px 0}md-dialog.telephone-dialog .error-list{font-size:13px}md-dialog.telephone-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.telephone-dialog .error-list .error .message{font-weight:500}md-dialog.telephone-dialog .error-list .error .md-button{margin:0}md-dialog.telephone-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.telephone-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#staff-telephone .header{height:76px;min-height:76px;max-height:76px}#staff-telephone .header .goto-telephones-button{margin-right:16px}#staff-telephone .header .telephone-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#staff-telephone .header .telephone-image img{height:100%;width:auto;max-width:none}#staff-telephone .header .subtitle{margin:6px 0 0 0}#staff-telephone .telephone-detail-form-container{padding:24px;margin-bottom:24px}#staff-telephone .telephone-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#staff-telephone .telephone-detail-form-container .handle{cursor:move}#staff-telephone .telephone-detail-form-container md-input-container md-switch{margin:0!important}#staff-telephone .telephone-detail-form-container #telephone-image-uploader{position:relative}#staff-telephone .telephone-detail-form-container #telephone-image-uploader.dropping .drop-text{display:flex}#staff-telephone .telephone-detail-form-container #telephone-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#staff-telephone .telephone-detail-form-container #telephone-image-uploader .upload-button{margin-bottom:16px}#staff-telephone .telephone-detail-form-container #telephone-image-uploader .telephone-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#staff-telephone .telephone-detail-form-container #telephone-image-uploader .telephone-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#staff-telephone .telephone-detail-form-container #telephone-image-uploader .telephone-image .media{max-height:100%}#staff-telephone md-table-container thead tr th:not(:first-child):not(.no-padding){padding:0 20px 0 0!important}#staff-telephone md-table-container thead th.md-checkbox-column:not(.no-padding){padding:0 24px!important}#staff-telephone md-table-container tbody tr td:not(:first-child):not(.no-padding):not(.actions-padding){padding:0 20px 0 0!important}#staff-telephone md-table-container.font-size-12 td.md-cell{font-size:12px!important}#telephones{position:relative}#telephones>.header{height:76px;min-height:76px;max-height:76px}#telephones>.header .logo .logo-icon{margin:0 16px 0 0}#telephones>.header .logo .logo-text{font-size:24px}#telephones>.header md-icon{color:#fff}#telephones>.header .search-input-wrapper{position:relative}#telephones>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#telephones>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#telephones>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#telephones>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#telephones>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#telephones>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#telephones>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#telephones>.header.selected-bar .close-button-wrapper{width:244px}#telephones>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#telephones>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#telephones>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#telephones #add-telephone-button{position:fixed;bottom:8px;right:8px;padding:0}#telephones #upload-telephone-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.userProfile-dialog{max-width:720px;width:720px}md-dialog.userProfile-dialog md-dialog-content{display:block;position:relative}md-dialog.userProfile-dialog md-toolbar .title{font-size:17px}md-dialog.userProfile-dialog md-input-container textarea{min-height:150px}md-dialog.userProfile-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.userProfile-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.userProfile-dialog .date-container{padding:16px 0 24px 0}md-dialog.userProfile-dialog .error-list{font-size:13px}md-dialog.userProfile-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.userProfile-dialog .error-list .error .message{font-weight:500}md-dialog.userProfile-dialog .error-list .error .md-button{margin:0}md-dialog.userProfile-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.userProfile-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#staff-userProfile .header{height:76px;min-height:76px;max-height:76px}#staff-userProfile .header .goto-userProfiles-button{margin-right:16px}#staff-userProfile .header .userProfile-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#staff-userProfile .header .userProfile-image img{height:100%;width:auto;max-width:none}#staff-userProfile .header .subtitle{margin:6px 0 0 0}#staff-userProfile .userProfile-detail-form-container{padding:24px;margin-bottom:24px}#staff-userProfile .userProfile-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#staff-userProfile .userProfile-detail-form-container .handle{cursor:move}#staff-userProfile .userProfile-detail-form-container md-input-container md-switch{margin:0!important}#staff-userProfile .userProfile-detail-form-container #userProfile-image-uploader{position:relative}#staff-userProfile .userProfile-detail-form-container #userProfile-image-uploader.dropping .drop-text{display:flex}#staff-userProfile .userProfile-detail-form-container #userProfile-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#staff-userProfile .userProfile-detail-form-container #userProfile-image-uploader .upload-button{margin-bottom:16px}#staff-userProfile .userProfile-detail-form-container #userProfile-image-uploader .userProfile-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#staff-userProfile .userProfile-detail-form-container #userProfile-image-uploader .userProfile-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#staff-userProfile .userProfile-detail-form-container #userProfile-image-uploader .userProfile-image .media{max-height:100%}#staff-userProfile md-table-container thead tr th:not(:first-child):not(.no-padding){padding:0 20px 0 0!important}#staff-userProfile md-table-container thead th.md-checkbox-column:not(.no-padding){padding:0 24px!important}#staff-userProfile md-table-container tbody tr td:not(:first-child):not(.no-padding):not(.actions-padding){padding:0 20px 0 0!important}#staff-userProfile md-table-container.font-size-12 td.md-cell{font-size:12px!important}#userProfiles{position:relative}#userProfiles>.header{height:76px;min-height:76px;max-height:76px}#userProfiles>.header .logo .logo-icon{margin:0 16px 0 0}#userProfiles>.header .logo .logo-text{font-size:24px}#userProfiles>.header md-icon{color:#fff}#userProfiles>.header .search-input-wrapper{position:relative}#userProfiles>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#userProfiles>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#userProfiles>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#userProfiles>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#userProfiles>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#userProfiles>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#userProfiles>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#userProfiles>.header.selected-bar .close-button-wrapper{width:244px}#userProfiles>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#userProfiles>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#userProfiles>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#userProfiles #add-userProfile-button{position:fixed;bottom:8px;right:8px;padding:0}#userProfiles #upload-userProfile-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.user-dialog{max-width:720px;width:720px}md-dialog.user-dialog md-dialog-content{display:block;position:relative}md-dialog.user-dialog md-toolbar .title{font-size:17px}md-dialog.user-dialog md-input-container textarea{min-height:150px}md-dialog.user-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.user-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.user-dialog .date-container{padding:16px 0 24px 0}md-dialog.user-dialog .error-list{font-size:13px}md-dialog.user-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.user-dialog .error-list .error .message{font-weight:500}md-dialog.user-dialog .error-list .error .md-button{margin:0}md-dialog.user-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.user-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#staff-user .header{height:76px;min-height:76px;max-height:76px}#staff-user .header .goto-users-button{margin-right:16px}#staff-user .header .user-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#staff-user .header .user-image img{height:100%;width:auto;max-width:none}#staff-user .header .subtitle{margin:6px 0 0 0}#staff-user .user-detail-form-container{padding:24px;margin-bottom:24px}#staff-user .user-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#staff-user .user-detail-form-container .handle{cursor:move}#staff-user .user-detail-form-container md-input-container md-switch{margin:0!important}#staff-user .user-detail-form-container #user-image-uploader{position:relative}#staff-user .user-detail-form-container #user-image-uploader.dropping .drop-text{display:flex}#staff-user .user-detail-form-container #user-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#staff-user .user-detail-form-container #user-image-uploader .upload-button{margin-bottom:16px}#staff-user .user-detail-form-container #user-image-uploader .user-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#staff-user .user-detail-form-container #user-image-uploader .user-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#staff-user .user-detail-form-container #user-image-uploader .user-image .media{max-height:100%}#staff-user md-table-container thead tr th:not(:first-child):not(.no-padding){padding:0 20px 0 0!important}#staff-user md-table-container thead th.md-checkbox-column:not(.no-padding){padding:0 24px!important}#staff-user md-table-container tbody tr td:not(:first-child):not(.no-padding):not(.actions-padding){padding:0 20px 0 0!important}#staff-user md-table-container.font-size-12 td.md-cell{font-size:12px!important}#users{position:relative}#users>.header{height:76px;min-height:76px;max-height:76px}#users>.header .logo .logo-icon{margin:0 16px 0 0}#users>.header .logo .logo-text{font-size:24px}#users>.header md-icon{color:#fff}#users>.header .search-input-wrapper{position:relative}#users>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#users>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#users>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#users>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#users>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#users>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#users>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#users>.header.selected-bar .close-button-wrapper{width:244px}#users>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#users>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#users>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#users #add-user-button{position:fixed;bottom:8px;right:8px;padding:0}#users #upload-user-button{position:fixed;bottom:8px;right:8px;padding:0}#cannedAnswers{position:relative}#cannedAnswers>.header{height:76px;min-height:76px;max-height:76px}#cannedAnswers>.header .logo .logo-icon{margin:0 16px 0 0}#cannedAnswers>.header .logo .logo-text{font-size:24px}#cannedAnswers>.header md-icon{color:#fff}#cannedAnswers>.header .search-input-wrapper{position:relative}#cannedAnswers>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#cannedAnswers>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#cannedAnswers>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#cannedAnswers>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#cannedAnswers>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#cannedAnswers>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#cannedAnswers>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#cannedAnswers>.header.selected-bar .close-button-wrapper{width:244px}#cannedAnswers>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#cannedAnswers>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#cannedAnswers>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#cannedAnswers #add-cannedAnswer-button{position:fixed;bottom:8px;right:8px;padding:0}#cannedAnswers #upload-cannedAnswer-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.cannedAnswer-dialog{max-width:720px;width:720px}md-dialog.cannedAnswer-dialog md-dialog-content{display:block;position:relative}md-dialog.cannedAnswer-dialog md-toolbar .title{font-size:17px}md-dialog.cannedAnswer-dialog md-input-container textarea{min-height:150px}md-dialog.cannedAnswer-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.cannedAnswer-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.cannedAnswer-dialog .date-container{padding:16px 0 24px 0}md-dialog.cannedAnswer-dialog .error-list{font-size:13px}md-dialog.cannedAnswer-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.cannedAnswer-dialog .error-list .error .message{font-weight:500}md-dialog.cannedAnswer-dialog .error-list .error .md-button{margin:0}md-dialog.cannedAnswer-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.cannedAnswer-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#contact_item_types{position:relative}#contact_item_types>.header{height:76px;min-height:76px;max-height:76px}#contact_item_types>.header .logo .logo-icon{margin:0 16px 0 0}#contact_item_types>.header .logo .logo-text{font-size:24px}#contact_item_types>.header md-icon{color:#fff}#contact_item_types>.header .search-input-wrapper{position:relative}#contact_item_types>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#contact_item_types>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#contact_item_types>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#contact_item_types>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#contact_item_types>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#contact_item_types>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#contact_item_types>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#contact_item_types>.header.selected-bar .close-button-wrapper{width:244px}#contact_item_types>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#contact_item_types>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#contact_item_types>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#contact_item_types #add-contactItemType-button{position:fixed;bottom:8px;right:8px;padding:0}#contact_item_types #upload-contactItemType-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.contactItemType-dialog{max-width:720px;width:720px}md-dialog.contactItemType-dialog md-dialog-content{display:block;position:relative}md-dialog.contactItemType-dialog md-toolbar .title{font-size:17px}md-dialog.contactItemType-dialog md-input-container textarea{min-height:150px}md-dialog.contactItemType-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.contactItemType-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.contactItemType-dialog .date-container{padding:16px 0 24px 0}md-dialog.contactItemType-dialog .error-list{font-size:13px}md-dialog.contactItemType-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.contactItemType-dialog .error-list .error .message{font-weight:500}md-dialog.contactItemType-dialog .error-list .error .md-button{margin:0}md-dialog.contactItemType-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.contactItemType-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.customDashboard-dialog{max-width:720px;width:720px}md-dialog.customDashboard-dialog md-dialog-content{display:block;position:relative}md-dialog.customDashboard-dialog md-toolbar .title{font-size:17px}md-dialog.customDashboard-dialog md-input-container textarea{min-height:150px}md-dialog.customDashboard-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.customDashboard-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.customDashboard-dialog .date-container{padding:16px 0 24px 0}md-dialog.customDashboard-dialog .error-list{font-size:13px}md-dialog.customDashboard-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.customDashboard-dialog .error-list .error .message{font-weight:500}md-dialog.customDashboard-dialog .error-list .error .md-button{margin:0}md-dialog.customDashboard-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.customDashboard-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#customDashboards{position:relative}#customDashboards>.header{height:76px;min-height:76px;max-height:76px}#customDashboards>.header .logo .logo-icon{margin:0 16px 0 0}#customDashboards>.header .logo .logo-text{font-size:24px}#customDashboards>.header md-icon{color:#fff}#customDashboards>.header .search-input-wrapper{position:relative}#customDashboards>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#customDashboards>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#customDashboards>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#customDashboards>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#customDashboards>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#customDashboards>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#customDashboards>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#customDashboards>.header.selected-bar .close-button-wrapper{width:244px}#customDashboards>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#customDashboards>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#customDashboards>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#customDashboards #add-customDashboard-button{position:fixed;bottom:8px;right:8px;padding:0}#customDashboards #upload-customDashboard-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.dashboarditem-dialog{max-width:720px;width:720px}md-dialog.dashboarditem-dialog md-dialog-content{display:block;position:relative}md-dialog.dashboarditem-dialog md-toolbar .title{font-size:17px}md-dialog.dashboarditem-dialog md-input-container textarea{min-height:150px}md-dialog.dashboarditem-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.dashboarditem-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.dashboarditem-dialog .date-container{padding:16px 0 24px 0}md-dialog.dashboarditem-dialog .error-list{font-size:13px}md-dialog.dashboarditem-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.dashboarditem-dialog .error-list .error .message{font-weight:500}md-dialog.dashboarditem-dialog .error-list .error .md-button{margin:0}md-dialog.dashboarditem-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.dashboarditem-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#tools-customDashboard .header{height:76px;min-height:76px;max-height:76px}#tools-customDashboard .header .goto-customDashboards-button{margin-right:16px}#tools-customDashboard .header .customDashboard-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#tools-customDashboard .header .customDashboard-image img{height:100%;width:auto;max-width:none}#tools-customDashboard .header .subtitle{margin:6px 0 0 0}#tools-customDashboard .customDashboard-detail-form-container{padding:24px;margin-bottom:24px}#tools-customDashboard .customDashboard-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#tools-customDashboard .customDashboard-detail-form-container .handle{cursor:move}#tools-customDashboard .customDashboard-detail-form-container md-input-container md-switch{margin:0!important}#tools-customDashboard .customDashboard-detail-form-container #customDashboard-image-uploader{position:relative}#tools-customDashboard .customDashboard-detail-form-container #customDashboard-image-uploader.dropping .drop-text{display:flex}#tools-customDashboard .customDashboard-detail-form-container #customDashboard-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#tools-customDashboard .customDashboard-detail-form-container #customDashboard-image-uploader .upload-button{margin-bottom:16px}#tools-customDashboard .customDashboard-detail-form-container #customDashboard-image-uploader .customDashboard-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#tools-customDashboard .customDashboard-detail-form-container #customDashboard-image-uploader .customDashboard-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#tools-customDashboard .customDashboard-detail-form-container #customDashboard-image-uploader .customDashboard-image .media{max-height:100%}#tools-customDashboard md-table-container thead tr th:not(:first-child):not(.no-padding){padding:0 20px 0 0!important}#tools-customDashboard md-table-container thead th.md-checkbox-column:not(.no-padding){padding:0 24px!important}#tools-customDashboard md-table-container tbody tr td:not(:first-child):not(.no-padding):not(.actions-padding){padding:0 20px 0 0!important}#tools-customDashboard md-table-container.font-size-12 td.md-cell{font-size:12px!important}md-dialog.disposition-dialog{max-width:720px;width:720px}md-dialog.disposition-dialog md-dialog-content{display:block;position:relative}md-dialog.disposition-dialog md-toolbar .title{font-size:17px}md-dialog.disposition-dialog md-input-container textarea{min-height:150px}md-dialog.disposition-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.disposition-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.disposition-dialog .date-container{padding:16px 0 24px 0}md-dialog.disposition-dialog .error-list{font-size:13px}md-dialog.disposition-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.disposition-dialog .error-list .error .message{font-weight:500}md-dialog.disposition-dialog .error-list .error .md-button{margin:0}md-dialog.disposition-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.disposition-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#dispositions{position:relative}#dispositions>.header{height:76px;min-height:76px;max-height:76px}#dispositions>.header .logo .logo-icon{margin:0 16px 0 0}#dispositions>.header .logo .logo-text{font-size:24px}#dispositions>.header md-icon{color:#fff}#dispositions>.header .search-input-wrapper{position:relative}#dispositions>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#dispositions>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#dispositions>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#dispositions>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#dispositions>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#dispositions>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#dispositions>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#dispositions>.header.selected-bar .close-button-wrapper{width:244px}#dispositions>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#dispositions>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#dispositions>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#dispositions #add-disposition-button{position:fixed;bottom:8px;right:8px;padding:0}#dispositions #upload-disposition-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.interval-dialog{max-width:720px;width:720px}md-dialog.interval-dialog md-dialog-content{display:block;position:relative}md-dialog.interval-dialog md-toolbar .title{font-size:17px}md-dialog.interval-dialog md-input-container textarea{min-height:150px}md-dialog.interval-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.interval-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.interval-dialog .date-container{padding:16px 0 24px 0}md-dialog.interval-dialog .error-list{font-size:13px}md-dialog.interval-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.interval-dialog .error-list .error .message{font-weight:500}md-dialog.interval-dialog .error-list .error .md-button{margin:0}md-dialog.interval-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.interval-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.interval-dialog{max-width:720px;width:720px}md-dialog.interval-dialog md-dialog-content{display:block;position:relative}md-dialog.interval-dialog md-toolbar .title{font-size:17px}md-dialog.interval-dialog md-input-container textarea{min-height:150px}md-dialog.interval-dialog .date-container{padding:16px 0 24px 0}md-dialog.interval-dialog .error-list{font-size:13px}md-dialog.interval-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.interval-dialog .error-list .error .message{font-weight:500}md-dialog.interval-dialog .error-list .error .md-button{margin:0}md-dialog.interval-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.interval-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.interval-dialog{max-width:720px;width:720px}md-dialog.interval-dialog md-dialog-content{display:block;position:relative}md-dialog.interval-dialog md-toolbar .title{font-size:17px}md-dialog.interval-dialog md-input-container textarea{min-height:150px}md-dialog.interval-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.interval-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.interval-dialog .date-container{padding:16px 0 24px 0}md-dialog.interval-dialog .error-list{font-size:13px}md-dialog.interval-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.interval-dialog .error-list .error .message{font-weight:500}md-dialog.interval-dialog .error-list .error .md-button{margin:0}md-dialog.interval-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.interval-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#tools-interval .header{height:76px;min-height:76px;max-height:76px}#tools-interval .header .goto-intervals-button{margin-right:16px}#tools-interval .header .interval-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#tools-interval .header .interval-image img{height:100%;width:auto;max-width:none}#tools-interval .header .subtitle{margin:6px 0 0 0}#tools-interval .interval-detail-form-container{padding:24px;margin-bottom:24px}#tools-interval .interval-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#tools-interval .interval-detail-form-container .handle{cursor:move}#tools-interval .interval-detail-form-container md-input-container md-switch{margin:0!important}#tools-interval .interval-detail-form-container #interval-image-uploader{position:relative}#tools-interval .interval-detail-form-container #interval-image-uploader.dropping .drop-text{display:flex}#tools-interval .interval-detail-form-container #interval-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#tools-interval .interval-detail-form-container #interval-image-uploader .upload-button{margin-bottom:16px}#tools-interval .interval-detail-form-container #interval-image-uploader .interval-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#tools-interval .interval-detail-form-container #interval-image-uploader .interval-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#tools-interval .interval-detail-form-container #interval-image-uploader .interval-image .media{max-height:100%}#tools-interval md-table-container thead tr th:not(:first-child):not(.no-padding){padding:0 20px 0 0!important}#tools-interval md-table-container thead th.md-checkbox-column:not(.no-padding){padding:0 24px!important}#tools-interval md-table-container tbody tr td:not(:first-child):not(.no-padding):not(.actions-padding){padding:0 20px 0 0!important}#tools-interval md-table-container.font-size-12 td.md-cell{font-size:12px!important}#intervals{position:relative}#intervals>.header{height:76px;min-height:76px;max-height:76px}#intervals>.header .logo .logo-icon{margin:0 16px 0 0}#intervals>.header .logo .logo-text{font-size:24px}#intervals>.header md-icon{color:#fff}#intervals>.header .search-input-wrapper{position:relative}#intervals>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#intervals>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#intervals>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#intervals>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#intervals>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#intervals>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#intervals>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#intervals>.header.selected-bar .close-button-wrapper{width:244px}#intervals>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#intervals>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#intervals>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#intervals #add-interval-button{position:fixed;bottom:8px;right:8px;padding:0}#intervals #upload-interval-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.pause-dialog{max-width:720px;width:720px}md-dialog.pause-dialog md-dialog-content{display:block;position:relative}md-dialog.pause-dialog md-toolbar .title{font-size:17px}md-dialog.pause-dialog md-input-container textarea{min-height:150px}md-dialog.pause-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.pause-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.pause-dialog .date-container{padding:16px 0 24px 0}md-dialog.pause-dialog .error-list{font-size:13px}md-dialog.pause-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.pause-dialog .error-list .error .message{font-weight:500}md-dialog.pause-dialog .error-list .error .md-button{margin:0}md-dialog.pause-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.pause-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#pauses{position:relative}#pauses>.header{height:76px;min-height:76px;max-height:76px}#pauses>.header .logo .logo-icon{margin:0 16px 0 0}#pauses>.header .logo .logo-text{font-size:24px}#pauses>.header md-icon{color:#fff}#pauses>.header .search-input-wrapper{position:relative}#pauses>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#pauses>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#pauses>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#pauses>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#pauses>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#pauses>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#pauses>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#pauses>.header.selected-bar .close-button-wrapper{width:244px}#pauses>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#pauses>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#pauses>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#pauses #add-pause-button{position:fixed;bottom:8px;right:8px;padding:0}#pauses #upload-pause-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.schedule-dialog{max-width:720px;width:720px}md-dialog.schedule-dialog md-dialog-content{display:block;position:relative}md-dialog.schedule-dialog md-toolbar .title{font-size:17px}md-dialog.schedule-dialog md-input-container textarea{min-height:150px}md-dialog.schedule-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.schedule-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.schedule-dialog .date-container{padding:16px 0 24px 0}md-dialog.schedule-dialog .error-list{font-size:13px}md-dialog.schedule-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.schedule-dialog .error-list .error .message{font-weight:500}md-dialog.schedule-dialog .error-list .error .md-button{margin:0}md-dialog.schedule-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.schedule-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#schedules{position:relative}#schedules>.header{height:76px;min-height:76px;max-height:76px}#schedules>.header .logo .logo-icon{margin:0 16px 0 0}#schedules>.header .logo .logo-text{font-size:24px}#schedules>.header md-icon{color:#fff}#schedules>.header .search-input-wrapper{position:relative}#schedules>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#schedules>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#schedules>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#schedules>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#schedules>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#schedules>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#schedules>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#schedules>.header.selected-bar .close-button-wrapper{width:244px}#schedules>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#schedules>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#schedules>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#schedules #add-schedule-button{position:fixed;bottom:8px;right:8px;padding:0}#schedules #upload-schedule-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.sound-dialog{max-width:720px;width:720px}md-dialog.sound-dialog md-dialog-content{display:block;position:relative}md-dialog.sound-dialog md-toolbar .title{font-size:17px}md-dialog.sound-dialog md-input-container textarea{min-height:150px}md-dialog.sound-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.sound-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.sound-dialog .date-container{padding:16px 0 24px 0}md-dialog.sound-dialog .error-list{font-size:13px}md-dialog.sound-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.sound-dialog .error-list .error .message{font-weight:500}md-dialog.sound-dialog .error-list .error .md-button{margin:0}md-dialog.sound-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.sound-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#sounds{position:relative}#sounds>.header{height:76px;min-height:76px;max-height:76px}#sounds>.header .logo .logo-icon{margin:0 16px 0 0}#sounds>.header .logo .logo-text{font-size:24px}#sounds>.header md-icon{color:#fff}#sounds>.header .search-input-wrapper{position:relative}#sounds>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#sounds>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#sounds>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#sounds>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#sounds>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#sounds>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#sounds>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#sounds>.header.selected-bar .close-button-wrapper{width:244px}#sounds>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#sounds>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#sounds>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#sounds #add-sound-button{position:fixed;bottom:8px;right:8px;padding:0}#sounds #upload-sound-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.upload-dialog{max-width:720px;width:720px}md-dialog.upload-dialog md-dialog-content{display:block;position:relative}md-dialog.upload-dialog md-toolbar .title{font-size:17px}md-dialog.upload-dialog md-input-container textarea{min-height:150px}md-dialog.upload-dialog md-progress-linear{padding-top:16px!important}md-dialog.upload-dialog .date-container{padding:16px 0 24px 0}md-dialog.upload-dialog .error-list{font-size:13px}md-dialog.upload-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.upload-dialog .error-list .error .message{font-weight:500}md-dialog.upload-dialog .error-list .error .md-button{margin:0}md-dialog.upload-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.upload-dialog .sound-image{overflow:hidden;max-width:148px;margin-right:16px;border:3px solid rgba(0,0,0,.12);padding:10px}md-dialog.upload-dialog .sound-image img{width:auto;max-width:none}md-dialog.upload-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.tag-dialog{max-width:720px;width:720px}md-dialog.tag-dialog md-dialog-content{display:block;position:relative}md-dialog.tag-dialog md-toolbar .title{font-size:17px}md-dialog.tag-dialog md-input-container textarea{min-height:150px}md-dialog.tag-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.tag-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.tag-dialog .date-container{padding:16px 0 24px 0}md-dialog.tag-dialog .error-list{font-size:13px}md-dialog.tag-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.tag-dialog .error-list .error .message{font-weight:500}md-dialog.tag-dialog .error-list .error .md-button{margin:0}md-dialog.tag-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.tag-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#tags{position:relative}#tags>.header{height:76px;min-height:76px;max-height:76px}#tags>.header .logo .logo-icon{margin:0 16px 0 0}#tags>.header .logo .logo-text{font-size:24px}#tags>.header md-icon{color:#fff}#tags>.header .search-input-wrapper{position:relative}#tags>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#tags>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#tags>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#tags>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#tags>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#tags>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#tags>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#tags>.header.selected-bar .close-button-wrapper{width:244px}#tags>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#tags>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#tags>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#tags #add-tag-button{position:fixed;bottom:8px;right:8px;padding:0}#tags #upload-tag-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.template-dialog{max-width:720px;width:720px}md-dialog.template-dialog md-dialog-content{display:block;position:relative}md-dialog.template-dialog md-toolbar .title{font-size:17px}md-dialog.template-dialog md-input-container textarea{min-height:150px}md-dialog.template-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.template-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.template-dialog .date-container{padding:16px 0 24px 0}md-dialog.template-dialog .error-list{font-size:13px}md-dialog.template-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.template-dialog .error-list .error .message{font-weight:500}md-dialog.template-dialog .error-list .error .md-button{margin:0}md-dialog.template-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.template-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#templates{position:relative}#templates>.header{height:76px;min-height:76px;max-height:76px}#templates>.header .logo .logo-icon{margin:0 16px 0 0}#templates>.header .logo .logo-text{font-size:24px}#templates>.header md-icon{color:#fff}#templates>.header .search-input-wrapper{position:relative}#templates>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#templates>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#templates>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#templates>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#templates>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#templates>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#templates>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#templates>.header.selected-bar .close-button-wrapper{width:244px}#templates>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#templates>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#templates>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#templates #add-template-button{position:fixed;bottom:8px;right:8px;padding:0}#templates #upload-template-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.trigger-dialog{max-width:720px;width:720px}md-dialog.trigger-dialog md-dialog-content{display:block;position:relative}md-dialog.trigger-dialog md-toolbar .title{font-size:17px}md-dialog.trigger-dialog md-input-container textarea{min-height:150px}md-dialog.trigger-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.trigger-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.trigger-dialog .date-container{padding:16px 0 24px 0}md-dialog.trigger-dialog .error-list{font-size:13px}md-dialog.trigger-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.trigger-dialog .error-list .error .message{font-weight:500}md-dialog.trigger-dialog .error-list .error .md-button{margin:0}md-dialog.trigger-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.trigger-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.action-dialog{max-width:720px;width:720px}md-dialog.action-dialog md-dialog-content{display:block;position:relative}md-dialog.action-dialog md-toolbar .title{font-size:17px}md-dialog.action-dialog md-input-container textarea{min-height:150px}md-dialog.action-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.action-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.action-dialog .date-container{padding:16px 0 24px 0}md-dialog.action-dialog .error-list{font-size:13px}md-dialog.action-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.action-dialog .error-list .error .message{font-weight:500}md-dialog.action-dialog .error-list .error .md-button{margin:0}md-dialog.action-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.action-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.allCondition-dialog{max-width:720px;width:720px}md-dialog.allCondition-dialog md-dialog-content{display:block;position:relative}md-dialog.allCondition-dialog md-toolbar .title{font-size:17px}md-dialog.allCondition-dialog md-input-container textarea{min-height:150px}md-dialog.allCondition-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.allCondition-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.allCondition-dialog .date-container{padding:16px 0 24px 0}md-dialog.allCondition-dialog .error-list{font-size:13px}md-dialog.allCondition-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.allCondition-dialog .error-list .error .message{font-weight:500}md-dialog.allCondition-dialog .error-list .error .md-button{margin:0}md-dialog.allCondition-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.allCondition-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.anyCondition-dialog{max-width:720px;width:720px}md-dialog.anyCondition-dialog md-dialog-content{display:block;position:relative}md-dialog.anyCondition-dialog md-toolbar .title{font-size:17px}md-dialog.anyCondition-dialog md-input-container textarea{min-height:150px}md-dialog.anyCondition-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.anyCondition-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.anyCondition-dialog .date-container{padding:16px 0 24px 0}md-dialog.anyCondition-dialog .error-list{font-size:13px}md-dialog.anyCondition-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.anyCondition-dialog .error-list .error .message{font-weight:500}md-dialog.anyCondition-dialog .error-list .error .md-button{margin:0}md-dialog.anyCondition-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.anyCondition-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#tools-trigger .header{height:76px;min-height:76px;max-height:76px}#tools-trigger .header .goto-triggers-button{margin-right:16px}#tools-trigger .header .trigger-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#tools-trigger .header .trigger-image img{height:100%;width:auto;max-width:none}#tools-trigger .header .subtitle{margin:6px 0 0 0}#tools-trigger .trigger-detail-form-container{padding:24px;margin-bottom:24px}#tools-trigger .trigger-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#tools-trigger .trigger-detail-form-container .handle{cursor:move}#tools-trigger .trigger-detail-form-container md-input-container md-switch{margin:0!important}#tools-trigger .trigger-detail-form-container #trigger-image-uploader{position:relative}#tools-trigger .trigger-detail-form-container #trigger-image-uploader.dropping .drop-text{display:flex}#tools-trigger .trigger-detail-form-container #trigger-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#tools-trigger .trigger-detail-form-container #trigger-image-uploader .upload-button{margin-bottom:16px}#tools-trigger .trigger-detail-form-container #trigger-image-uploader .trigger-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#tools-trigger .trigger-detail-form-container #trigger-image-uploader .trigger-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#tools-trigger .trigger-detail-form-container #trigger-image-uploader .trigger-image .media{max-height:100%}#tools-trigger md-table-container thead tr th:not(:first-child):not(.no-padding){padding:0 20px 0 0!important}#tools-trigger md-table-container thead th.md-checkbox-column:not(.no-padding){padding:0 24px!important}#tools-trigger md-table-container tbody tr td:not(:first-child):not(.no-padding):not(.actions-padding){padding:0 20px 0 0!important}#tools-trigger md-table-container.font-size-12 td.md-cell{font-size:12px!important}#triggers{position:relative}#triggers>.header{height:76px;min-height:76px;max-height:76px}#triggers>.header .logo .logo-icon{margin:0 16px 0 0}#triggers>.header .logo .logo-text{font-size:24px}#triggers>.header md-icon{color:#fff}#triggers>.header .search-input-wrapper{position:relative}#triggers>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#triggers>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#triggers>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#triggers>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#triggers>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#triggers>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#triggers>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#triggers>.header.selected-bar .close-button-wrapper{width:244px}#triggers>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#triggers>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#triggers>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#triggers #add-trigger-button{position:fixed;bottom:8px;right:8px;padding:0}#triggers #upload-trigger-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.trunk-dialog{max-width:720px;width:720px}md-dialog.trunk-dialog md-dialog-content{display:block;position:relative}md-dialog.trunk-dialog md-toolbar .title{font-size:17px}md-dialog.trunk-dialog md-input-container textarea{min-height:150px}md-dialog.trunk-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.trunk-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.trunk-dialog .date-container{padding:16px 0 24px 0}md-dialog.trunk-dialog .error-list{font-size:13px}md-dialog.trunk-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.trunk-dialog .error-list .error .message{font-weight:500}md-dialog.trunk-dialog .error-list .error .md-button{margin:0}md-dialog.trunk-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.trunk-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#tools-trunk .header{height:76px;min-height:76px;max-height:76px}#tools-trunk .header .goto-trunks-button{margin-right:16px}#tools-trunk .header .trunk-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#tools-trunk .header .trunk-image img{height:100%;width:auto;max-width:none}#tools-trunk .header .subtitle{margin:6px 0 0 0}#tools-trunk .trunk-detail-form-container{padding:24px;margin-bottom:24px}#tools-trunk .trunk-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#tools-trunk .trunk-detail-form-container .handle{cursor:move}#tools-trunk .trunk-detail-form-container md-input-container md-switch{margin:0!important}#tools-trunk .trunk-detail-form-container #trunk-image-uploader{position:relative}#tools-trunk .trunk-detail-form-container #trunk-image-uploader.dropping .drop-text{display:flex}#tools-trunk .trunk-detail-form-container #trunk-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#tools-trunk .trunk-detail-form-container #trunk-image-uploader .upload-button{margin-bottom:16px}#tools-trunk .trunk-detail-form-container #trunk-image-uploader .trunk-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#tools-trunk .trunk-detail-form-container #trunk-image-uploader .trunk-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#tools-trunk .trunk-detail-form-container #trunk-image-uploader .trunk-image .media{max-height:100%}#tools-trunk md-table-container thead tr th:not(:first-child):not(.no-padding){padding:0 20px 0 0!important}#tools-trunk md-table-container thead th.md-checkbox-column:not(.no-padding){padding:0 24px!important}#tools-trunk md-table-container tbody tr td:not(:first-child):not(.no-padding):not(.actions-padding){padding:0 20px 0 0!important}#tools-trunk md-table-container.font-size-12 td.md-cell{font-size:12px!important}#trunks{position:relative}#trunks>.header{height:76px;min-height:76px;max-height:76px}#trunks>.header .logo .logo-icon{margin:0 16px 0 0}#trunks>.header .logo .logo-text{font-size:24px}#trunks>.header md-icon{color:#fff}#trunks>.header .search-input-wrapper{position:relative}#trunks>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#trunks>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#trunks>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#trunks>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#trunks>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#trunks>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#trunks>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#trunks>.header.selected-bar .close-button-wrapper{width:244px}#trunks>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#trunks>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#trunks>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#trunks #add-trunk-button{position:fixed;bottom:8px;right:8px;padding:0}#trunks #upload-trunk-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.variable-dialog{max-width:720px;width:720px}md-dialog.variable-dialog md-dialog-content{display:block;position:relative}md-dialog.variable-dialog md-toolbar .title{font-size:17px}md-dialog.variable-dialog md-input-container textarea{min-height:150px}md-dialog.variable-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.variable-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.variable-dialog .date-container{padding:16px 0 24px 0}md-dialog.variable-dialog .error-list{font-size:13px}md-dialog.variable-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.variable-dialog .error-list .error .message{font-weight:500}md-dialog.variable-dialog .error-list .error .md-button{margin:0}md-dialog.variable-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.variable-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#variables{position:relative}#variables>.header{height:76px;min-height:76px;max-height:76px}#variables>.header .logo .logo-icon{margin:0 16px 0 0}#variables>.header .logo .logo-text{font-size:24px}#variables>.header md-icon{color:#fff}#variables>.header .search-input-wrapper{position:relative}#variables>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#variables>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#variables>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#variables>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#variables>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#variables>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#variables>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#variables>.header.selected-bar .close-button-wrapper{width:244px}#variables>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#variables>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#variables>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#variables #add-variable-button{position:fixed;bottom:8px;right:8px;padding:0}#variables #upload-variable-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.screenRecording-dialog{max-width:720px;width:720px}md-dialog.screenRecording-dialog md-dialog-content{display:block;position:relative}md-dialog.screenRecording-dialog md-toolbar .title{font-size:17px}md-dialog.screenRecording-dialog md-input-container textarea{min-height:150px}md-dialog.screenRecording-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.screenRecording-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.screenRecording-dialog .date-container{padding:16px 0 24px 0}md-dialog.screenRecording-dialog .error-list{font-size:13px}md-dialog.screenRecording-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.screenRecording-dialog .error-list .error .message{font-weight:500}md-dialog.screenRecording-dialog .error-list .error .md-button{margin:0}md-dialog.screenRecording-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.screenRecording-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#screenRecordings{position:relative}#screenRecordings>.header{height:76px;min-height:76px;max-height:76px}#screenRecordings>.header .logo .logo-icon{margin:0 16px 0 0}#screenRecordings>.header .logo .logo-text{font-size:24px}#screenRecordings>.header md-icon{color:#fff}#screenRecordings>.header .search-input-wrapper{position:relative}#screenRecordings>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#screenRecordings>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#screenRecordings>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#screenRecordings>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#screenRecordings>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#screenRecordings>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#screenRecordings>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#screenRecordings>.header.selected-bar .close-button-wrapper{width:244px}#screenRecordings>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#screenRecordings>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#screenRecordings>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#screenRecordings #add-screenRecording-button{position:fixed;bottom:8px;right:8px;padding:0}#screenRecordings #upload-screenRecording-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.voice-routing-dialog{max-width:720px;width:720px}md-dialog.voice-routing-dialog md-dialog-content{display:block;position:relative}md-dialog.voice-routing-dialog md-toolbar .title{font-size:17px}md-dialog.voice-routing-dialog md-input-container textarea{min-height:150px}md-dialog.voice-routing-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.voice-routing-dialog .date-container{padding:16px 0 24px 0}md-dialog.voice-routing-dialog .error-list{font-size:13px}md-dialog.voice-routing-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.voice-routing-dialog .error-list .error .message{font-weight:500}md-dialog.voice-routing-dialog .error-list .error .md-button{margin:0}md-dialog.voice-routing-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.voice-routing-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.interval-dialog{max-width:720px;width:720px}md-dialog.interval-dialog md-dialog-content{display:block;position:relative}md-dialog.interval-dialog md-toolbar .title{font-size:17px}md-dialog.interval-dialog md-input-container textarea{min-height:150px}md-dialog.interval-dialog .date-container{padding:16px 0 24px 0}md-dialog.interval-dialog .error-list{font-size:13px}md-dialog.interval-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.interval-dialog .error-list .error .message{font-weight:500}md-dialog.interval-dialog .error-list .error .md-button{margin:0}md-dialog.interval-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.interval-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#chanSpies{position:relative}#chanSpies>.header{height:76px;min-height:76px;max-height:76px}#chanSpies>.header .logo .logo-icon{margin:0 16px 0 0}#chanSpies>.header .logo .logo-text{font-size:24px}#chanSpies>.header md-icon{color:#fff}#chanSpies>.header .search-input-wrapper{position:relative}#chanSpies>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#chanSpies>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#chanSpies>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#chanSpies>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#chanSpies>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#chanSpies>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#chanSpies>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#chanSpies>.header.selected-bar .close-button-wrapper{width:244px}#chanSpies>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#chanSpies>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#chanSpies>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#chanSpies #add-chanSpy-button{position:fixed;bottom:8px;right:8px;padding:0}#chanSpies #upload-chanSpy-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.chanSpy-dialog{max-width:720px;width:720px}md-dialog.chanSpy-dialog md-dialog-content{display:block;position:relative}md-dialog.chanSpy-dialog md-toolbar .title{font-size:17px}md-dialog.chanSpy-dialog md-input-container textarea{min-height:150px}md-dialog.chanSpy-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.chanSpy-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.chanSpy-dialog .date-container{padding:16px 0 24px 0}md-dialog.chanSpy-dialog .error-list{font-size:13px}md-dialog.chanSpy-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.chanSpy-dialog .error-list .error .message{font-weight:500}md-dialog.chanSpy-dialog .error-list .error .md-button{margin:0}md-dialog.chanSpy-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.chanSpy-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#contexts{position:relative}#contexts>.header{height:76px;min-height:76px;max-height:76px}#contexts>.header .logo .logo-icon{margin:0 16px 0 0}#contexts>.header .logo .logo-text{font-size:24px}#contexts>.header md-icon{color:#fff}#contexts>.header .search-input-wrapper{position:relative}#contexts>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#contexts>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#contexts>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#contexts>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#contexts>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#contexts>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#contexts>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#contexts>.header.selected-bar .close-button-wrapper{width:244px}#contexts>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#contexts>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#contexts>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#contexts #add-context-button{position:fixed;bottom:8px;right:8px;padding:0}#contexts #upload-context-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.context-dialog{max-width:720px;width:720px}md-dialog.context-dialog md-dialog-content{display:block;position:relative}md-dialog.context-dialog md-toolbar .title{font-size:17px}md-dialog.context-dialog md-input-container textarea{min-height:150px}md-dialog.context-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.context-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.context-dialog .date-container{padding:16px 0 24px 0}md-dialog.context-dialog .error-list{font-size:13px}md-dialog.context-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.context-dialog .error-list .error .message{font-weight:500}md-dialog.context-dialog .error-list .error .md-button{margin:0}md-dialog.context-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.context-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.inbound-route-dialog{max-width:720px;width:720px}md-dialog.inbound-route-dialog md-dialog-content{display:block;position:relative}md-dialog.inbound-route-dialog md-toolbar .title{font-size:17px}md-dialog.inbound-route-dialog md-input-container textarea{min-height:150px}md-dialog.inbound-route-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.inbound-route-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.inbound-route-dialog .date-container{padding:16px 0 24px 0}md-dialog.inbound-route-dialog .error-list{font-size:13px}md-dialog.inbound-route-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.inbound-route-dialog .error-list .error .message{font-weight:500}md-dialog.inbound-route-dialog .error-list .error .md-button{margin:0}md-dialog.inbound-route-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.inbound-route-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#voice-inbound-route .header{height:76px;min-height:76px;max-height:76px}#voice-inbound-route .header .goto-inbound-routes-button{margin-right:16px}#voice-inbound-route .header .inbound-route-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#voice-inbound-route .header .inbound-route-image img{height:100%;width:auto;max-width:none}#voice-inbound-route .header .subtitle{margin:6px 0 0 0}#voice-inbound-route .inbound-route-detail-form-container{padding:24px;margin-bottom:24px}#voice-inbound-route .inbound-route-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#voice-inbound-route .inbound-route-detail-form-container .handle{cursor:move}#voice-inbound-route .inbound-route-detail-form-container md-input-container md-switch{margin:0!important}#voice-inbound-route md-table-container thead tr th:not(:first-child):not(.no-padding){padding:0 20px 0 0!important}#voice-inbound-route md-table-container thead th.md-checkbox-column:not(.no-padding){padding:0 24px!important}#voice-inbound-route md-table-container tbody tr td:not(:first-child):not(.no-padding):not(.actions-padding){padding:0 20px 0 0!important}#voice-inbound-route md-table-container.font-size-12 td.md-cell{font-size:12px!important}@media screen and (min-width:1921px){#voice-inbound-route .actionAppData{width:800px!important}}@media screen and (max-width:1920px){#voice-inbound-route .actionAppData{width:700px!important}}@media screen and (min-width:1751px) and (max-width:1919px){#voice-inbound-route .actionAppData{width:600px!important}}@media screen and (min-width:1601px) and (max-width:1750px){#voice-inbound-route .actionAppData{width:500px!important}}@media screen and (min-width:1537px) and (max-width:1600px){#voice-inbound-route .actionAppData{width:450px!important}}@media screen and (min-width:1281px) and (max-width:1536px){#voice-inbound-route .actionAppData{width:300px!important}}@media screen and (max-width:1280px){#voice-inbound-route .actionAppData{width:150px!important}}@media screen and (max-width:960px){#voice-inbound-route .actionAppData{width:80px!important}}#inbound-routes{position:relative}#inbound-routes>.header{height:76px;min-height:76px;max-height:76px}#inbound-routes>.header .logo .logo-icon{margin:0 16px 0 0}#inbound-routes>.header .logo .logo-text{font-size:24px}#inbound-routes>.header md-icon{color:#fff}#inbound-routes>.header .search-input-wrapper{position:relative}#inbound-routes>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#inbound-routes>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#inbound-routes>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#inbound-routes>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#inbound-routes>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#inbound-routes>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#inbound-routes>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#inbound-routes>.header.selected-bar .close-button-wrapper{width:244px}#inbound-routes>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#inbound-routes>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#inbound-routes>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#inbound-routes #add-inbound-route-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.internal-route-dialog{max-width:720px;width:720px}md-dialog.internal-route-dialog md-dialog-content{display:block;position:relative}md-dialog.internal-route-dialog md-toolbar .title{font-size:17px}md-dialog.internal-route-dialog md-input-container textarea{min-height:150px}md-dialog.internal-route-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.internal-route-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.internal-route-dialog .date-container{padding:16px 0 24px 0}md-dialog.internal-route-dialog .error-list{font-size:13px}md-dialog.internal-route-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.internal-route-dialog .error-list .error .message{font-weight:500}md-dialog.internal-route-dialog .error-list .error .md-button{margin:0}md-dialog.internal-route-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.internal-route-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#voice-internal-route .header{height:76px;min-height:76px;max-height:76px}#voice-internal-route .header .goto-internal-routes-button{margin-right:16px}#voice-internal-route .header .internal-route-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#voice-internal-route .header .internal-route-image img{height:100%;width:auto;max-width:none}#voice-internal-route .header .subtitle{margin:6px 0 0 0}#voice-internal-route .internal-route-detail-form-container{padding:24px;margin-bottom:24px}#voice-internal-route .internal-route-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#voice-internal-route .internal-route-detail-form-container .handle{cursor:move}#voice-internal-route .internal-route-detail-form-container md-input-container md-switch{margin:0!important}#voice-internal-route md-table-container thead tr th:not(:first-child):not(.no-padding){padding:0 20px 0 0!important}#voice-internal-route md-table-container thead th.md-checkbox-column:not(.no-padding){padding:0 24px!important}#voice-internal-route md-table-container tbody tr td:not(:first-child):not(.no-padding):not(.actions-padding){padding:0 20px 0 0!important}#voice-internal-route md-table-container.font-size-12 td.md-cell{font-size:12px!important}@media screen and (min-width:1921px){#voice-internal-route .actionAppData{width:800px!important}}@media screen and (max-width:1920px){#voice-internal-route .actionAppData{width:700px!important}}@media screen and (min-width:1751px) and (max-width:1919px){#voice-internal-route .actionAppData{width:600px!important}}@media screen and (min-width:1601px) and (max-width:1750px){#voice-internal-route .actionAppData{width:500px!important}}@media screen and (min-width:1537px) and (max-width:1600px){#voice-internal-route .actionAppData{width:450px!important}}@media screen and (min-width:1281px) and (max-width:1536px){#voice-internal-route .actionAppData{width:300px!important}}@media screen and (max-width:1280px){#voice-internal-route .actionAppData{width:150px!important}}@media screen and (max-width:960px){#voice-internal-route .actionAppData{width:80px!important}}#internal-routes{position:relative}#internal-routes>.header{height:76px;min-height:76px;max-height:76px}#internal-routes>.header .logo .logo-icon{margin:0 16px 0 0}#internal-routes>.header .logo .logo-text{font-size:24px}#internal-routes>.header md-icon{color:#fff}#internal-routes>.header .search-input-wrapper{position:relative}#internal-routes>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#internal-routes>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#internal-routes>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#internal-routes>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#internal-routes>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#internal-routes>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#internal-routes>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#internal-routes>.header.selected-bar .close-button-wrapper{width:244px}#internal-routes>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#internal-routes>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#internal-routes>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#internal-routes #add-internal-route-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.musiconhold-dialog{max-width:720px;width:720px}md-dialog.musiconhold-dialog md-dialog-content{display:block;position:relative}md-dialog.musiconhold-dialog md-toolbar .title{font-size:17px}md-dialog.musiconhold-dialog md-input-container textarea{min-height:150px}md-dialog.musiconhold-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.musiconhold-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.musiconhold-dialog .date-container{padding:16px 0 24px 0}md-dialog.musiconhold-dialog .error-list{font-size:13px}md-dialog.musiconhold-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.musiconhold-dialog .error-list .error .message{font-weight:500}md-dialog.musiconhold-dialog .error-list .error .md-button{margin:0}md-dialog.musiconhold-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.musiconhold-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.mohSound-dialog{max-width:720px;width:720px}md-dialog.mohSound-dialog md-dialog-content{display:block;position:relative}md-dialog.mohSound-dialog md-toolbar .title{font-size:17px}md-dialog.mohSound-dialog md-input-container textarea{min-height:150px}md-dialog.mohSound-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.mohSound-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.mohSound-dialog .date-container{padding:16px 0 24px 0}md-dialog.mohSound-dialog .error-list{font-size:13px}md-dialog.mohSound-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.mohSound-dialog .error-list .error .message{font-weight:500}md-dialog.mohSound-dialog .error-list .error .md-button{margin:0}md-dialog.mohSound-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.mohSound-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#voice-musiconhold .header{height:76px;min-height:76px;max-height:76px}#voice-musiconhold .header .goto-musiconholds-button{margin-right:16px}#voice-musiconhold .header .musiconhold-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#voice-musiconhold .header .musiconhold-image img{height:100%;width:auto;max-width:none}#voice-musiconhold .header .subtitle{margin:6px 0 0 0}#voice-musiconhold .musiconhold-detail-form-container{padding:24px;margin-bottom:24px}#voice-musiconhold .musiconhold-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#voice-musiconhold .musiconhold-detail-form-container .handle{cursor:move}#voice-musiconhold .musiconhold-detail-form-container md-input-container md-switch{margin:0!important}#voice-musiconhold .musiconhold-detail-form-container #musiconhold-image-uploader{position:relative}#voice-musiconhold .musiconhold-detail-form-container #musiconhold-image-uploader.dropping .drop-text{display:flex}#voice-musiconhold .musiconhold-detail-form-container #musiconhold-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#voice-musiconhold .musiconhold-detail-form-container #musiconhold-image-uploader .upload-button{margin-bottom:16px}#voice-musiconhold .musiconhold-detail-form-container #musiconhold-image-uploader .musiconhold-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#voice-musiconhold .musiconhold-detail-form-container #musiconhold-image-uploader .musiconhold-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#voice-musiconhold .musiconhold-detail-form-container #musiconhold-image-uploader .musiconhold-image .media{max-height:100%}#voice-musiconhold md-table-container thead tr th:not(:first-child):not(.no-padding){padding:0 20px 0 0!important}#voice-musiconhold md-table-container thead th.md-checkbox-column:not(.no-padding){padding:0 24px!important}#voice-musiconhold md-table-container tbody tr td:not(:first-child):not(.no-padding):not(.actions-padding){padding:0 20px 0 0!important}#voice-musiconhold md-table-container.font-size-12 td.md-cell{font-size:12px!important}#musiconholds{position:relative}#musiconholds>.header{height:76px;min-height:76px;max-height:76px}#musiconholds>.header .logo .logo-icon{margin:0 16px 0 0}#musiconholds>.header .logo .logo-text{font-size:24px}#musiconholds>.header md-icon{color:#fff}#musiconholds>.header .search-input-wrapper{position:relative}#musiconholds>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#musiconholds>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#musiconholds>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#musiconholds>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#musiconholds>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#musiconholds>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#musiconholds>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#musiconholds>.header.selected-bar .close-button-wrapper{width:244px}#musiconholds>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#musiconholds>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#musiconholds>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#musiconholds #add-musiconhold-button{position:fixed;bottom:8px;right:8px;padding:0}#musiconholds #upload-musiconhold-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.outbound-route-dialog{max-width:720px;width:720px}md-dialog.outbound-route-dialog md-dialog-content{display:block;position:relative}md-dialog.outbound-route-dialog md-toolbar .title{font-size:17px}md-dialog.outbound-route-dialog md-input-container textarea{min-height:150px}md-dialog.outbound-route-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.outbound-route-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.outbound-route-dialog .date-container{padding:16px 0 24px 0}md-dialog.outbound-route-dialog .error-list{font-size:13px}md-dialog.outbound-route-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.outbound-route-dialog .error-list .error .message{font-weight:500}md-dialog.outbound-route-dialog .error-list .error .md-button{margin:0}md-dialog.outbound-route-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.outbound-route-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#voice-outbound-route .header{height:76px;min-height:76px;max-height:76px}#voice-outbound-route .header .goto-outbound-routes-button{margin-right:16px}#voice-outbound-route .header .outbound-route-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#voice-outbound-route .header .outbound-route-image img{height:100%;width:auto;max-width:none}#voice-outbound-route .header .subtitle{margin:6px 0 0 0}#voice-outbound-route .outbound-route-detail-form-container{padding:24px;margin-bottom:24px}#voice-outbound-route .outbound-route-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#voice-outbound-route .outbound-route-detail-form-container .handle{cursor:move}#voice-outbound-route .outbound-route-detail-form-container md-input-container md-switch{margin:0!important}#voice-outbound-route md-table-container thead tr th:not(:first-child):not(.no-padding){padding:0 20px 0 0!important}#voice-outbound-route md-table-container thead th.md-checkbox-column:not(.no-padding){padding:0 24px!important}#voice-outbound-route md-table-container tbody tr td:not(:first-child):not(.no-padding):not(.actions-padding){padding:0 20px 0 0!important}#voice-outbound-route md-table-container.font-size-12 td.md-cell{font-size:12px!important}@media screen and (min-width:1921px){#voice-outbound-route .actionAppData{width:800px!important}}@media screen and (max-width:1920px){#voice-outbound-route .actionAppData{width:700px!important}}@media screen and (min-width:1751px) and (max-width:1919px){#voice-outbound-route .actionAppData{width:600px!important}}@media screen and (min-width:1601px) and (max-width:1750px){#voice-outbound-route .actionAppData{width:500px!important}}@media screen and (min-width:1537px) and (max-width:1600px){#voice-outbound-route .actionAppData{width:450px!important}}@media screen and (min-width:1281px) and (max-width:1536px){#voice-outbound-route .actionAppData{width:300px!important}}@media screen and (max-width:1280px){#voice-outbound-route .actionAppData{width:150px!important}}@media screen and (max-width:960px){#voice-outbound-route .actionAppData{width:80px!important}}#outbound-routes{position:relative}#outbound-routes>.header{height:76px;min-height:76px;max-height:76px}#outbound-routes>.header .logo .logo-icon{margin:0 16px 0 0}#outbound-routes>.header .logo .logo-text{font-size:24px}#outbound-routes>.header md-icon{color:#fff}#outbound-routes>.header .search-input-wrapper{position:relative}#outbound-routes>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#outbound-routes>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#outbound-routes>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#outbound-routes>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#outbound-routes>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#outbound-routes>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#outbound-routes>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#outbound-routes>.header.selected-bar .close-button-wrapper{width:244px}#outbound-routes>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#outbound-routes>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#outbound-routes>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#outbound-routes #add-outbound-route-button{position:fixed;bottom:8px;right:8px;padding:0}#realtime{height:auto}#realtime>.content .blink{animation:blinker 2s linear infinite}#realtime>.content .avatar-wrapper{position:relative}#realtime>.content .avatar-wrapper .status{position:absolute;bottom:-3px;right:5px}#realtime>.content .search-input-wrapper{position:relative;margin-left:20px}#realtime>.content .search-input-wrapper label{padding:6px;cursor:pointer}#realtime>.content .search-input-wrapper md-input-container{padding-top:20px}#realtime>.content .main .labels{padding:8px 16px}#realtime>.content .main .labels .label{margin:0 0 2px 4px;padding:2px 5px;font-size:11px;white-space:nowrap;border-radius:2px}#realtime>.content .main .status{position:absolute;bottom:-3px;right:5px}#realtime>.content .main .avatar-wrapper{position:relative}#realtime>.content .main .avatar-wrapper .status{position:absolute;bottom:-3px;right:5px}#realtime>.content .custom-column{padding:0 24px!important}#realtime>.content td.text-center span.text-boxed,#realtime>.content td.text-center span.text-boxed-light{display:block}@keyframes blinker{50%{opacity:0}}md-dialog.voicemail-dialog{max-width:720px;width:720px}md-dialog.voicemail-dialog md-dialog-content{display:block;position:relative}md-dialog.voicemail-dialog md-toolbar .title{font-size:17px}md-dialog.voicemail-dialog md-input-container textarea{min-height:150px}md-dialog.voicemail-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.voicemail-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.voicemail-dialog .date-container{padding:16px 0 24px 0}md-dialog.voicemail-dialog .error-list{font-size:13px}md-dialog.voicemail-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.voicemail-dialog .error-list .error .message{font-weight:500}md-dialog.voicemail-dialog .error-list .error .md-button{margin:0}md-dialog.voicemail-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.voicemail-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#voice-voicemail .header{height:76px;min-height:76px;max-height:76px}#voice-voicemail .header .goto-voicemails-button{margin-right:16px}#voice-voicemail .header .voicemail-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#voice-voicemail .header .voicemail-image img{height:100%;width:auto;max-width:none}#voice-voicemail .header .subtitle{margin:6px 0 0 0}#voice-voicemail .voicemail-detail-form-container{padding:24px;margin-bottom:24px}#voice-voicemail .voicemail-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#voice-voicemail .voicemail-detail-form-container .handle{cursor:move}#voice-voicemail .voicemail-detail-form-container md-input-container md-switch{margin:0!important}#voice-voicemail .voicemail-detail-form-container #voicemail-image-uploader{position:relative}#voice-voicemail .voicemail-detail-form-container #voicemail-image-uploader.dropping .drop-text{display:flex}#voice-voicemail .voicemail-detail-form-container #voicemail-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#voice-voicemail .voicemail-detail-form-container #voicemail-image-uploader .upload-button{margin-bottom:16px}#voice-voicemail .voicemail-detail-form-container #voicemail-image-uploader .voicemail-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#voice-voicemail .voicemail-detail-form-container #voicemail-image-uploader .voicemail-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#voice-voicemail .voicemail-detail-form-container #voicemail-image-uploader .voicemail-image .media{max-height:100%}#voice-voicemail md-table-container thead tr th:not(:first-child):not(.no-padding){padding:0 20px 0 0!important}#voice-voicemail md-table-container thead th.md-checkbox-column:not(.no-padding){padding:0 24px!important}#voice-voicemail md-table-container tbody tr td:not(:first-child):not(.no-padding):not(.actions-padding){padding:0 20px 0 0!important}#voice-voicemail md-table-container.font-size-12 td.md-cell{font-size:12px!important}#voicemails{position:relative}#voicemails>.header{height:76px;min-height:76px;max-height:76px}#voicemails>.header .logo .logo-icon{margin:0 16px 0 0}#voicemails>.header .logo .logo-text{font-size:24px}#voicemails>.header md-icon{color:#fff}#voicemails>.header .search-input-wrapper{position:relative}#voicemails>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#voicemails>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#voicemails>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#voicemails>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#voicemails>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#voicemails>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#voicemails>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#voicemails>.header.selected-bar .close-button-wrapper{width:244px}#voicemails>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#voicemails>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#voicemails>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#voicemails #add-voicemail-button{position:fixed;bottom:8px;right:8px;padding:0}#voicemails #upload-voicemail-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.voicePrefix-dialog{max-width:720px;width:720px}md-dialog.voicePrefix-dialog md-dialog-content{display:block;position:relative}md-dialog.voicePrefix-dialog md-toolbar .title{font-size:17px}md-dialog.voicePrefix-dialog md-input-container textarea{min-height:150px}md-dialog.voicePrefix-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.voicePrefix-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.voicePrefix-dialog .date-container{padding:16px 0 24px 0}md-dialog.voicePrefix-dialog .error-list{font-size:13px}md-dialog.voicePrefix-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.voicePrefix-dialog .error-list .error .message{font-weight:500}md-dialog.voicePrefix-dialog .error-list .error .md-button{margin:0}md-dialog.voicePrefix-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.voicePrefix-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#voicePrefixes{position:relative}#voicePrefixes>.header{height:76px;min-height:76px;max-height:76px}#voicePrefixes>.header .logo .logo-icon{margin:0 16px 0 0}#voicePrefixes>.header .logo .logo-text{font-size:24px}#voicePrefixes>.header md-icon{color:#fff}#voicePrefixes>.header .search-input-wrapper{position:relative}#voicePrefixes>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#voicePrefixes>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#voicePrefixes>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#voicePrefixes>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#voicePrefixes>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#voicePrefixes>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#voicePrefixes>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#voicePrefixes>.header.selected-bar .close-button-wrapper{width:244px}#voicePrefixes>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#voicePrefixes>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#voicePrefixes>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#voicePrefixes #add-voicePrefix-button{position:fixed;bottom:8px;right:8px;padding:0}#voicePrefixes #upload-voicePrefix-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.voiceQueue-dialog{max-width:720px;width:720px}md-dialog.voiceQueue-dialog md-dialog-content{display:block;position:relative}md-dialog.voiceQueue-dialog md-toolbar .title{font-size:17px}md-dialog.voiceQueue-dialog md-input-container textarea{min-height:150px}md-dialog.voiceQueue-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.voiceQueue-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.voiceQueue-dialog .date-container{padding:16px 0 24px 0}md-dialog.voiceQueue-dialog .error-list{font-size:13px}md-dialog.voiceQueue-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.voiceQueue-dialog .error-list .error .message{font-weight:500}md-dialog.voiceQueue-dialog .error-list .error .md-button{margin:0}md-dialog.voiceQueue-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.voiceQueue-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#voice-voiceQueue .header{height:76px;min-height:76px;max-height:76px}#voice-voiceQueue .header .goto-voiceQueues-button{margin-right:16px}#voice-voiceQueue .header .voiceQueue-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#voice-voiceQueue .header .voiceQueue-image img{height:100%;width:auto;max-width:none}#voice-voiceQueue .header .subtitle{margin:6px 0 0 0}#voice-voiceQueue .voiceQueue-detail-form-container{padding:24px;margin-bottom:24px}#voice-voiceQueue .voiceQueue-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#voice-voiceQueue .voiceQueue-detail-form-container .handle{cursor:move}#voice-voiceQueue .voiceQueue-detail-form-container md-input-container md-switch{margin:0!important}#voice-voiceQueue .voiceQueue-detail-form-container #voiceQueue-image-uploader{position:relative}#voice-voiceQueue .voiceQueue-detail-form-container #voiceQueue-image-uploader.dropping .drop-text{display:flex}#voice-voiceQueue .voiceQueue-detail-form-container #voiceQueue-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#voice-voiceQueue .voiceQueue-detail-form-container #voiceQueue-image-uploader .upload-button{margin-bottom:16px}#voice-voiceQueue .voiceQueue-detail-form-container #voiceQueue-image-uploader .voiceQueue-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#voice-voiceQueue .voiceQueue-detail-form-container #voiceQueue-image-uploader .voiceQueue-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#voice-voiceQueue .voiceQueue-detail-form-container #voiceQueue-image-uploader .voiceQueue-image .media{max-height:100%}#voice-voiceQueue md-table-container thead tr th:not(:first-child):not(.no-padding){padding:0 20px 0 0!important}#voice-voiceQueue md-table-container thead th.md-checkbox-column:not(.no-padding){padding:0 24px!important}#voice-voiceQueue md-table-container tbody tr td:not(:first-child):not(.no-padding):not(.actions-padding){padding:0 20px 0 0!important}#voice-voiceQueue md-table-container.font-size-12 td.md-cell{font-size:12px!important}#voiceQueues{position:relative}#voiceQueues>.header{height:76px;min-height:76px;max-height:76px}#voiceQueues>.header .logo .logo-icon{margin:0 16px 0 0}#voiceQueues>.header .logo .logo-text{font-size:24px}#voiceQueues>.header md-icon{color:#fff}#voiceQueues>.header .search-input-wrapper{position:relative}#voiceQueues>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#voiceQueues>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#voiceQueues>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#voiceQueues>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#voiceQueues>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#voiceQueues>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#voiceQueues>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#voiceQueues>.header.selected-bar .close-button-wrapper{width:244px}#voiceQueues>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#voiceQueues>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#voiceQueues>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#voiceQueues #add-voiceQueue-button{position:fixed;bottom:8px;right:8px;padding:0}#voiceQueues #upload-voiceQueue-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.voiceRecording-dialog{max-width:720px;width:720px}md-dialog.voiceRecording-dialog md-dialog-content{display:block;position:relative}md-dialog.voiceRecording-dialog md-toolbar .title{font-size:17px}md-dialog.voiceRecording-dialog md-input-container textarea{min-height:150px}md-dialog.voiceRecording-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.voiceRecording-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.voiceRecording-dialog .date-container{padding:16px 0 24px 0}md-dialog.voiceRecording-dialog .error-list{font-size:13px}md-dialog.voiceRecording-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.voiceRecording-dialog .error-list .error .message{font-weight:500}md-dialog.voiceRecording-dialog .error-list .error .md-button{margin:0}md-dialog.voiceRecording-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.voiceRecording-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#voice-voiceRecording .header{height:76px;min-height:76px;max-height:76px}#voice-voiceRecording .header .goto-voiceRecordings-button{margin-right:16px}#voice-voiceRecording .header .voiceRecording-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#voice-voiceRecording .header .voiceRecording-image img{height:100%;width:auto;max-width:none}#voice-voiceRecording .header .subtitle{margin:6px 0 0 0}#voice-voiceRecording .voiceRecording-detail-form-container{padding:24px;margin-bottom:24px}#voice-voiceRecording .voiceRecording-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#voice-voiceRecording .voiceRecording-detail-form-container .handle{cursor:move}#voice-voiceRecording .voiceRecording-detail-form-container md-input-container md-switch{margin:0!important}#voice-voiceRecording .voiceRecording-detail-form-container #voiceRecording-image-uploader{position:relative}#voice-voiceRecording .voiceRecording-detail-form-container #voiceRecording-image-uploader.dropping .drop-text{display:flex}#voice-voiceRecording .voiceRecording-detail-form-container #voiceRecording-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#voice-voiceRecording .voiceRecording-detail-form-container #voiceRecording-image-uploader .upload-button{margin-bottom:16px}#voice-voiceRecording .voiceRecording-detail-form-container #voiceRecording-image-uploader .voiceRecording-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#voice-voiceRecording .voiceRecording-detail-form-container #voiceRecording-image-uploader .voiceRecording-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#voice-voiceRecording .voiceRecording-detail-form-container #voiceRecording-image-uploader .voiceRecording-image .media{max-height:100%}#voice-voiceRecording md-table-container thead tr th:not(:first-child):not(.no-padding){padding:0 20px 0 0!important}#voice-voiceRecording md-table-container thead th.md-checkbox-column:not(.no-padding){padding:0 24px!important}#voice-voiceRecording md-table-container tbody tr td:not(:first-child):not(.no-padding):not(.actions-padding){padding:0 20px 0 0!important}#voice-voiceRecording md-table-container.font-size-12 td.md-cell{font-size:12px!important}#voice-voiceRecording .sentiment.POSITIVE{color:#4caf50;font-size:25px}#voice-voiceRecording .sentiment.NEGATIVE{color:#f40505;font-size:30px}#voice-voiceRecording .sentiment.NEUTRAL{color:#03a9f4;font-size:30px}#voice-voiceRecording .sentiment.MIXED{color:#9c27b0;font-size:30px}#voiceRecordings{position:relative}#voiceRecordings>.header{height:76px;min-height:76px;max-height:76px}#voiceRecordings>.header .logo .logo-icon{margin:0 16px 0 0}#voiceRecordings>.header .logo .logo-text{font-size:24px}#voiceRecordings>.header md-icon{color:#fff}#voiceRecordings>.header .search-input-wrapper{position:relative}#voiceRecordings>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#voiceRecordings>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#voiceRecordings>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#voiceRecordings>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#voiceRecordings>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#voiceRecordings>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#voiceRecordings>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#voiceRecordings>.header.selected-bar .close-button-wrapper{width:244px}#voiceRecordings>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#voiceRecordings>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#voiceRecordings>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#voiceRecordings #add-voiceRecording-button{position:fixed;bottom:8px;right:8px;padding:0}#voiceRecordings #upload-voiceRecording-button{position:fixed;bottom:8px;right:8px;padding:0}#realtime{height:auto}#realtime>.content .blink{animation:blinker 2s linear infinite}#realtime>.content .avatar-wrapper{position:relative}#realtime>.content .avatar-wrapper .status{position:absolute;bottom:-3px;right:5px}#realtime>.content .search-input-wrapper{position:relative;margin-left:20px}#realtime>.content .search-input-wrapper label{padding:6px;cursor:pointer}#realtime>.content .search-input-wrapper md-input-container{padding-top:20px}#realtime>.content .main .labels{padding:8px 16px}#realtime>.content .main .labels .label{margin:0 0 2px 4px;padding:2px 5px;font-size:11px;white-space:nowrap;border-radius:2px}#realtime>.content .main .status{position:absolute;bottom:-3px;right:5px}#realtime>.content .main .avatar-wrapper{position:relative}#realtime>.content .main .avatar-wrapper .status{position:absolute;bottom:-3px;right:5px}#realtime>.content .custom-column{padding:0 24px!important}@keyframes blinker{50%{opacity:0}}md-dialog.whatsappAccount-dialog{max-width:720px;width:720px}md-dialog.whatsappAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.whatsappAccount-dialog md-toolbar .title{font-size:17px}md-dialog.whatsappAccount-dialog md-input-container textarea{min-height:150px}md-dialog.whatsappAccount-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.whatsappAccount-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.whatsappAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.whatsappAccount-dialog .error-list{font-size:13px}md-dialog.whatsappAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.whatsappAccount-dialog .error-list .error .message{font-weight:500}md-dialog.whatsappAccount-dialog .error-list .error .md-button{margin:0}md-dialog.whatsappAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.whatsappAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.whatsappAccount-dialog{max-width:720px;width:720px}md-dialog.whatsappAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.whatsappAccount-dialog md-toolbar .title{font-size:17px}md-dialog.whatsappAccount-dialog md-input-container textarea{min-height:150px}md-dialog.whatsappAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.whatsappAccount-dialog .error-list{font-size:13px}md-dialog.whatsappAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.whatsappAccount-dialog .error-list .error .message{font-weight:500}md-dialog.whatsappAccount-dialog .error-list .error .md-button{margin:0}md-dialog.whatsappAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.whatsappAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.whatsappAccount-dialog{max-width:720px;width:720px}md-dialog.whatsappAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.whatsappAccount-dialog md-toolbar .title{font-size:17px}md-dialog.whatsappAccount-dialog md-input-container textarea{min-height:150px}md-dialog.whatsappAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.whatsappAccount-dialog .error-list{font-size:13px}md-dialog.whatsappAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.whatsappAccount-dialog .error-list .error .message{font-weight:500}md-dialog.whatsappAccount-dialog .error-list .error .md-button{margin:0}md-dialog.whatsappAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.whatsappAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.whatsappAccount-dialog{max-width:720px;width:720px}md-dialog.whatsappAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.whatsappAccount-dialog md-toolbar .title{font-size:17px}md-dialog.whatsappAccount-dialog md-input-container textarea{min-height:150px}md-dialog.whatsappAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.whatsappAccount-dialog .error-list{font-size:13px}md-dialog.whatsappAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.whatsappAccount-dialog .error-list .error .message{font-weight:500}md-dialog.whatsappAccount-dialog .error-list .error .md-button{margin:0}md-dialog.whatsappAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.whatsappAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.whatsappAccount-dialog{max-width:720px;width:720px}md-dialog.whatsappAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.whatsappAccount-dialog md-toolbar .title{font-size:17px}md-dialog.whatsappAccount-dialog md-input-container textarea{min-height:150px}md-dialog.whatsappAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.whatsappAccount-dialog .error-list{font-size:13px}md-dialog.whatsappAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.whatsappAccount-dialog .error-list .error .message{font-weight:500}md-dialog.whatsappAccount-dialog .error-list .error .md-button{margin:0}md-dialog.whatsappAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.whatsappAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.whatsappAccount-dialog{max-width:720px;width:720px}md-dialog.whatsappAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.whatsappAccount-dialog md-toolbar .title{font-size:17px}md-dialog.whatsappAccount-dialog md-input-container textarea{min-height:150px}md-dialog.whatsappAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.whatsappAccount-dialog .error-list{font-size:13px}md-dialog.whatsappAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.whatsappAccount-dialog .error-list .error .message{font-weight:500}md-dialog.whatsappAccount-dialog .error-list .error .md-button{margin:0}md-dialog.whatsappAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.whatsappAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.whatsappAccount-dialog{max-width:720px;width:720px}md-dialog.whatsappAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.whatsappAccount-dialog md-toolbar .title{font-size:17px}md-dialog.whatsappAccount-dialog md-input-container textarea{min-height:150px}md-dialog.whatsappAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.whatsappAccount-dialog .error-list{font-size:13px}md-dialog.whatsappAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.whatsappAccount-dialog .error-list .error .message{font-weight:500}md-dialog.whatsappAccount-dialog .error-list .error .md-button{margin:0}md-dialog.whatsappAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.whatsappAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.whatsappAccount-dialog{max-width:720px;width:720px}md-dialog.whatsappAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.whatsappAccount-dialog md-toolbar .title{font-size:17px}md-dialog.whatsappAccount-dialog md-input-container textarea{min-height:150px}md-dialog.whatsappAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.whatsappAccount-dialog .error-list{font-size:13px}md-dialog.whatsappAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.whatsappAccount-dialog .error-list .error .message{font-weight:500}md-dialog.whatsappAccount-dialog .error-list .error .md-button{margin:0}md-dialog.whatsappAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.whatsappAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.whatsappAccount-dialog{max-width:720px;width:720px}md-dialog.whatsappAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.whatsappAccount-dialog md-toolbar .title{font-size:17px}md-dialog.whatsappAccount-dialog md-input-container textarea{min-height:150px}md-dialog.whatsappAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.whatsappAccount-dialog .error-list{font-size:13px}md-dialog.whatsappAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.whatsappAccount-dialog .error-list .error .message{font-weight:500}md-dialog.whatsappAccount-dialog .error-list .error .md-button{margin:0}md-dialog.whatsappAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.whatsappAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.whatsappAccount-dialog{max-width:720px;width:720px}md-dialog.whatsappAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.whatsappAccount-dialog md-toolbar .title{font-size:17px}md-dialog.whatsappAccount-dialog md-input-container textarea{min-height:150px}md-dialog.whatsappAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.whatsappAccount-dialog .error-list{font-size:13px}md-dialog.whatsappAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.whatsappAccount-dialog .error-list .error .message{font-weight:500}md-dialog.whatsappAccount-dialog .error-list .error .md-button{margin:0}md-dialog.whatsappAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.whatsappAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.whatsappAccount-dialog{max-width:720px;width:720px}md-dialog.whatsappAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.whatsappAccount-dialog md-toolbar .title{font-size:17px}md-dialog.whatsappAccount-dialog md-input-container textarea{min-height:150px}md-dialog.whatsappAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.whatsappAccount-dialog .error-list{font-size:13px}md-dialog.whatsappAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.whatsappAccount-dialog .error-list .error .message{font-weight:500}md-dialog.whatsappAccount-dialog .error-list .error .md-button{margin:0}md-dialog.whatsappAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.whatsappAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.whatsappAccount-dialog{max-width:720px;width:720px}md-dialog.whatsappAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.whatsappAccount-dialog md-toolbar .title{font-size:17px}md-dialog.whatsappAccount-dialog md-input-container textarea{min-height:150px}md-dialog.whatsappAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.whatsappAccount-dialog .error-list{font-size:13px}md-dialog.whatsappAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.whatsappAccount-dialog .error-list .error .message{font-weight:500}md-dialog.whatsappAccount-dialog .error-list .error .md-button{margin:0}md-dialog.whatsappAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.whatsappAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.whatsappAccount-dialog{max-width:720px;width:720px}md-dialog.whatsappAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.whatsappAccount-dialog md-toolbar .title{font-size:17px}md-dialog.whatsappAccount-dialog md-input-container textarea{min-height:150px}md-dialog.whatsappAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.whatsappAccount-dialog .error-list{font-size:13px}md-dialog.whatsappAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.whatsappAccount-dialog .error-list .error .message{font-weight:500}md-dialog.whatsappAccount-dialog .error-list .error .md-button{margin:0}md-dialog.whatsappAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.whatsappAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.whatsappAccount-dialog{max-width:720px;width:720px}md-dialog.whatsappAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.whatsappAccount-dialog md-toolbar .title{font-size:17px}md-dialog.whatsappAccount-dialog md-input-container textarea{min-height:150px}md-dialog.whatsappAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.whatsappAccount-dialog .error-list{font-size:13px}md-dialog.whatsappAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.whatsappAccount-dialog .error-list .error .message{font-weight:500}md-dialog.whatsappAccount-dialog .error-list .error .md-button{margin:0}md-dialog.whatsappAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.whatsappAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#whatsapp-whatsappAccount .header{height:76px;min-height:76px;max-height:76px}#whatsapp-whatsappAccount .header .goto-whatsappAccounts-button{margin-right:16px}#whatsapp-whatsappAccount .header .whatsappAccount-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#whatsapp-whatsappAccount .header .whatsappAccount-image img{height:100%;width:auto;max-width:none}#whatsapp-whatsappAccount .header .subtitle{margin:6px 0 0 0}#whatsapp-whatsappAccount .whatsappAccount-detail-form-container{padding:24px;margin-bottom:24px}#whatsapp-whatsappAccount .whatsappAccount-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#whatsapp-whatsappAccount .whatsappAccount-detail-form-container .handle{cursor:move}#whatsapp-whatsappAccount .whatsappAccount-detail-form-container md-input-container md-switch{margin:0!important}#whatsapp-whatsappAccount .whatsappAccount-detail-form-container #whatsappAccount-image-uploader{position:relative}#whatsapp-whatsappAccount .whatsappAccount-detail-form-container #whatsappAccount-image-uploader.dropping .drop-text{display:flex}#whatsapp-whatsappAccount .whatsappAccount-detail-form-container #whatsappAccount-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#whatsapp-whatsappAccount .whatsappAccount-detail-form-container #whatsappAccount-image-uploader .upload-button{margin-bottom:16px}#whatsapp-whatsappAccount .whatsappAccount-detail-form-container #whatsappAccount-image-uploader .whatsappAccount-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#whatsapp-whatsappAccount .whatsappAccount-detail-form-container #whatsappAccount-image-uploader .whatsappAccount-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#whatsapp-whatsappAccount .whatsappAccount-detail-form-container #whatsappAccount-image-uploader .whatsappAccount-image .media{max-height:100%}#whatsapp-whatsappAccount md-table-container thead tr th:not(:first-child):not(.no-padding){padding:0 20px 0 0!important}#whatsapp-whatsappAccount md-table-container thead th.md-checkbox-column:not(.no-padding){padding:0 24px!important}#whatsapp-whatsappAccount md-table-container tbody tr td:not(:first-child):not(.no-padding):not(.actions-padding){padding:0 20px 0 0!important}#whatsapp-whatsappAccount md-table-container.font-size-12 td.md-cell{font-size:12px!important}@media screen and (min-width:1921px){#whatsapp-whatsappAccount .actionAppData{width:800px!important}}@media screen and (max-width:1920px){#whatsapp-whatsappAccount .actionAppData{width:700px!important}}@media screen and (min-width:1751px) and (max-width:1919px){#whatsapp-whatsappAccount .actionAppData{width:600px!important}}@media screen and (min-width:1601px) and (max-width:1750px){#whatsapp-whatsappAccount .actionAppData{width:500px!important}}@media screen and (min-width:1537px) and (max-width:1600px){#whatsapp-whatsappAccount .actionAppData{width:450px!important}}@media screen and (min-width:1281px) and (max-width:1536px){#whatsapp-whatsappAccount .actionAppData{width:300px!important}}@media screen and (max-width:1280px){#whatsapp-whatsappAccount .actionAppData{width:150px!important}}@media screen and (max-width:960px){#whatsapp-whatsappAccount .actionAppData{width:80px!important}}md-dialog.whatsappCannedAnswer-dialog{max-width:720px;width:720px}md-dialog.whatsappCannedAnswer-dialog md-dialog-content{display:block;position:relative}md-dialog.whatsappCannedAnswer-dialog md-toolbar .title{font-size:17px}md-dialog.whatsappCannedAnswer-dialog md-input-container textarea{min-height:150px}md-dialog.whatsappCannedAnswer-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.whatsappCannedAnswer-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.whatsappCannedAnswer-dialog .date-container{padding:16px 0 24px 0}md-dialog.whatsappCannedAnswer-dialog .error-list{font-size:13px}md-dialog.whatsappCannedAnswer-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.whatsappCannedAnswer-dialog .error-list .error .message{font-weight:500}md-dialog.whatsappCannedAnswer-dialog .error-list .error .md-button{margin:0}md-dialog.whatsappCannedAnswer-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.whatsappCannedAnswer-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#whatsappAccounts{position:relative}#whatsappAccounts>.header{height:76px;min-height:76px;max-height:76px}#whatsappAccounts>.header .logo .logo-icon{margin:0 16px 0 0}#whatsappAccounts>.header .logo .logo-text{font-size:24px}#whatsappAccounts>.header md-icon{color:#fff}#whatsappAccounts>.header .search-input-wrapper{position:relative}#whatsappAccounts>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#whatsappAccounts>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#whatsappAccounts>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#whatsappAccounts>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#whatsappAccounts>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#whatsappAccounts>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#whatsappAccounts>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#whatsappAccounts>.header.selected-bar .close-button-wrapper{width:244px}#whatsappAccounts>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#whatsappAccounts>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#whatsappAccounts>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#whatsappAccounts #add-whatsappAccount-button{position:fixed;bottom:8px;right:8px;padding:0}#whatsappAccounts #upload-whatsappAccount-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.whatsappQueue-dialog{max-width:720px;width:720px}md-dialog.whatsappQueue-dialog md-dialog-content{display:block;position:relative}md-dialog.whatsappQueue-dialog md-toolbar .title{font-size:17px}md-dialog.whatsappQueue-dialog md-input-container textarea{min-height:150px}md-dialog.whatsappQueue-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.whatsappQueue-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.whatsappQueue-dialog .date-container{padding:16px 0 24px 0}md-dialog.whatsappQueue-dialog .error-list{font-size:13px}md-dialog.whatsappQueue-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.whatsappQueue-dialog .error-list .error .message{font-weight:500}md-dialog.whatsappQueue-dialog .error-list .error .md-button{margin:0}md-dialog.whatsappQueue-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.whatsappQueue-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#whatsapp-whatsappQueue .header{height:76px;min-height:76px;max-height:76px}#whatsapp-whatsappQueue .header .goto-whatsappQueues-button{margin-right:16px}#whatsapp-whatsappQueue .header .whatsappQueue-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#whatsapp-whatsappQueue .header .whatsappQueue-image img{height:100%;width:auto;max-width:none}#whatsapp-whatsappQueue .header .subtitle{margin:6px 0 0 0}#whatsapp-whatsappQueue .whatsappQueue-detail-form-container{padding:24px;margin-bottom:24px}#whatsapp-whatsappQueue .whatsappQueue-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#whatsapp-whatsappQueue .whatsappQueue-detail-form-container .handle{cursor:move}#whatsapp-whatsappQueue .whatsappQueue-detail-form-container md-input-container md-switch{margin:0!important}#whatsapp-whatsappQueue .whatsappQueue-detail-form-container #whatsappQueue-image-uploader{position:relative}#whatsapp-whatsappQueue .whatsappQueue-detail-form-container #whatsappQueue-image-uploader.dropping .drop-text{display:flex}#whatsapp-whatsappQueue .whatsappQueue-detail-form-container #whatsappQueue-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#whatsapp-whatsappQueue .whatsappQueue-detail-form-container #whatsappQueue-image-uploader .upload-button{margin-bottom:16px}#whatsapp-whatsappQueue .whatsappQueue-detail-form-container #whatsappQueue-image-uploader .whatsappQueue-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#whatsapp-whatsappQueue .whatsappQueue-detail-form-container #whatsappQueue-image-uploader .whatsappQueue-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#whatsapp-whatsappQueue .whatsappQueue-detail-form-container #whatsappQueue-image-uploader .whatsappQueue-image .media{max-height:100%}#whatsapp-whatsappQueue md-table-container thead tr th:not(:first-child):not(.no-padding){padding:0 20px 0 0!important}#whatsapp-whatsappQueue md-table-container thead th.md-checkbox-column:not(.no-padding){padding:0 24px!important}#whatsapp-whatsappQueue md-table-container tbody tr td:not(:first-child):not(.no-padding):not(.actions-padding){padding:0 20px 0 0!important}#whatsapp-whatsappQueue md-table-container.font-size-12 td.md-cell{font-size:12px!important}#whatsappQueues{position:relative}#whatsappQueues>.header{height:76px;min-height:76px;max-height:76px}#whatsappQueues>.header .logo .logo-icon{margin:0 16px 0 0}#whatsappQueues>.header .logo .logo-text{font-size:24px}#whatsappQueues>.header md-icon{color:#fff}#whatsappQueues>.header .search-input-wrapper{position:relative}#whatsappQueues>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#whatsappQueues>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#whatsappQueues>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#whatsappQueues>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#whatsappQueues>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#whatsappQueues>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#whatsappQueues>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#whatsappQueues>.header.selected-bar .close-button-wrapper{width:244px}#whatsappQueues>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#whatsappQueues>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#whatsappQueues>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#whatsappQueues #add-whatsappQueue-button{position:fixed;bottom:8px;right:8px;padding:0}#whatsappQueues #upload-whatsappQueue-button{position:fixed;bottom:8px;right:8px;padding:0}#layout-vertical-navigation-fullwidth-toolbar-2 #vertical-navigation{width:240px;min-width:240px;max-width:240px;overflow-x:hidden;transition:all .3s cubic-bezier(.55,0,.55,.2),width .1s linear,min-width .1s linear,max-width .1s linear;box-shadow:0 3px 5px -1px rgba(0,0,0,.2),0 6px 10px 0 rgba(0,0,0,.14),0 1px 18px 0 rgba(0,0,0,.12)}#layout-vertical-navigation-fullwidth-toolbar-2 #vertical-navigation .navigation-header{height:64px;min-height:64px;background-color:rgba(255,255,255,.05);padding:0 16px 0 24px}#layout-vertical-navigation-fullwidth-toolbar-2 #vertical-navigation:not(._md-locked-open){box-shadow:0 5px 5px -3px rgba(0,0,0,.2),0 8px 10px 1px rgba(0,0,0,.14),0 3px 14px 2px rgba(0,0,0,.12)}@media only screen and (min-width:960px){.ms-navigation-folded #content-container{margin-left:64px}.ms-navigation-folded #layout-vertical-navigation-fullwidth-toolbar-2 #vertical-navigation{position:absolute}.ms-navigation-folded:not(.ms-navigation-folded-open) #layout-vertical-navigation-fullwidth-toolbar-2 #vertical-navigation{position:absolute;width:64px;min-width:64px;max-width:64px}.ms-navigation-folded:not(.ms-navigation-folded-open) #layout-vertical-navigation-fullwidth-toolbar-2 #vertical-navigation .navigation-header{padding:0 16px}.ms-navigation-folded:not(.ms-navigation-folded-open) #layout-vertical-navigation-fullwidth-toolbar-2 #vertical-navigation .navigation-header .logo-text{display:none}}#vertical-navigation{width:240px;min-width:240px;max-width:240px;overflow-x:hidden;transition:all .3s cubic-bezier(.55,0,.55,.2),width .1s linear,min-width .1s linear,max-width .1s linear;box-shadow:0 3px 5px -1px rgba(0,0,0,.2),0 6px 10px 0 rgba(0,0,0,.14),0 1px 18px 0 rgba(0,0,0,.12)}#vertical-navigation .navigation-header{height:64px;min-height:64px;background-color:rgba(255,255,255,.05);padding:0 16px 0 24px}#vertical-navigation .navigation-header .logo .logo-image{display:block;width:32px;min-width:32px;height:32px;line-height:32px;text-align:center;font-size:16px;font-weight:500;color:#fff;border-radius:2px}#vertical-navigation .navigation-header .logo .logo-text{color:#fff;margin-left:16px;font-size:16px}#vertical-navigation .navigation-header .fold-toggle{transition:transform .3s ease-in-out .1s;transform:rotate(0);margin:0;padding:8px;width:34px!important;height:34px!important;cursor:pointer}#vertical-navigation:not(._md-locked-open){box-shadow:0 5px 5px -3px rgba(0,0,0,.2),0 8px 10px 1px rgba(0,0,0,.14),0 3px 14px 2px rgba(0,0,0,.12)}@media only screen and (min-width:960px){.ms-navigation-folded #content-container{margin-left:64px}.ms-navigation-folded #vertical-navigation{position:absolute}.ms-navigation-folded #vertical-navigation .navigation-header .fold-toggle{transform:rotate(180deg);opacity:0}.ms-navigation-folded.ms-navigation-folded-open #vertical-navigation .navigation-header .fold-toggle{transition:transform .3s ease-in-out .1s,opacity .3s ease-in-out .2s;opacity:1}.ms-navigation-folded:not(.ms-navigation-folded-open) #vertical-navigation{position:absolute;width:64px;min-width:64px;max-width:64px}.ms-navigation-folded:not(.ms-navigation-folded-open) #vertical-navigation .navigation-header{padding:0 16px}.ms-navigation-folded:not(.ms-navigation-folded-open) #vertical-navigation .navigation-header .logo-text{display:none}}#quick-panel{width:330px;min-width:330px;max-width:330px;z-index:99}#quick-panel md-content{height:100%}#quick-panel md-content md-tabs{position:static;height:100%}#quick-panel md-content md-tabs md-tabs-wrapper{background-color:rgba(0,0,0,.03);border-bottom:1px solid rgba(0,0,0,.06)}#quick-panel md-content md-tabs md-tabs-wrapper .md-tab{max-width:none!important}#quick-panel md-content md-tabs md-tabs-content-wrapper md-tab-content{height:100%;overflow:hidden}#quick-panel md-content md-tabs md-tabs-content-wrapper md-tab-content>div{overflow:hidden;height:100%}.unread-message-count-chat{position:absolute;top:5px;left:10px;width:18px;height:18px;z-index:10;border-radius:50%;text-align:center;line-height:18px;font-size:10px}@media screen and (max-width:600px){#quick-panel{width:80%;min-width:80%;max-width:80%}}#quick-panel .activity-tab .friends .friend{position:relative}#quick-panel .activity-tab .friends .friend .status{position:absolute;top:8px;left:44px;width:18px;height:18px;z-index:10;border-radius:50%;border:3px solid #fff}#quick-panel .activity-tab .friends .friend .status.online{background-color:#00c853}#quick-panel .activity-tab .friends .friend .status.offline{background-color:#d50000}#quick-panel .activity-tab .friends .friend .status.away{background-color:#ff6d00}#quick-panel .activity-tab .friends .friend .unread-message-count{position:absolute;left:16px;bottom:16px;width:18px;height:18px;z-index:10;border-radius:50%;text-align:center;line-height:18px;font-size:11px}#quick-panel .activity-tab .servers .server .status{margin:24px 20px 28px 8px}#quick-panel .activity-tab .servers .server .status.normal{color:#00c853}#quick-panel .activity-tab .servers .server .status.warn{color:#d50000}#quick-panel .activity-tab .servers .server .status.error{color:#ff6d00}#quick-panel .activity-tab .stat md-progress-linear.normal .md-bar{background-color:#00c853}#quick-panel .activity-tab .stat md-progress-linear.normal .md-container{background-color:rgba(0,200,83,.3)}#quick-panel .activity-tab .stat md-progress-linear.warn .md-bar{background-color:#ff6d00}#quick-panel .activity-tab .stat md-progress-linear.warn .md-container{background-color:rgba(255,109,0,.3)}#quick-panel .activity-tab .stat md-progress-linear.alert .md-bar{background-color:#d50000}#quick-panel .activity-tab .stat md-progress-linear.alert .md-container{background-color:rgba(213,0,0,.3)}#quick-panel .chat-tab .chat,#quick-panel .chat-tab .main{position:absolute;width:100%;top:0;bottom:0}#quick-panel .chat-tab .main .contact{position:relative}#quick-panel .chat-tab .main .contact .status{position:absolute;top:8px;left:44px;width:18px;height:18px;border:3px solid #fff;border-radius:50%;z-index:10}#quick-panel .chat-tab .main .contact .status.online{background-color:#00c853}#quick-panel .chat-tab .main .contact .status.offline{background-color:#d50000}#quick-panel .chat-tab .main .contact .status.away{background-color:#ff6d00}#quick-panel .chat-tab .main .contact .unread-message-count{position:absolute;left:16px;bottom:16px;width:18px;height:18px;z-index:10;border-radius:50%;text-align:center;line-height:18px;font-size:11px}#quick-panel .chat-tab .main .recent .contact .status{top:18px}#quick-panel .chat-tab .chat{max-height:100%;overflow:hidden}#quick-panel .chat-tab .chat .message-row .bubble{position:relative;padding:8px;background-color:#eceff1;border:1px solid #dcdfe1}#quick-panel .chat-tab .chat .message-row .bubble:after,#quick-panel .chat-tab .chat .message-row .bubble:before{content:' ';position:absolute;width:0;height:0}#quick-panel .chat-tab .chat .message-row .bubble:after{left:-7px;right:auto;top:0;bottom:auto;border:11px solid;border-color:#eceff1 transparent transparent transparent}#quick-panel .chat-tab .chat .message-row .bubble:before{left:-9px;right:auto;top:-1px;bottom:auto;border:8px solid;border-color:#dcdfe1 transparent transparent transparent}#quick-panel .chat-tab .chat .message-row .bubble .time{font-size:11px;margin-top:8px}#quick-panel .chat-tab .chat .message-row .bubble .message{word-wrap:break-word}#quick-panel .chat-tab .chat .message-row.contact .avatar{margin:0 16px 0 0}#quick-panel .chat-tab .chat .message-row.user{align-items:flex-end}#quick-panel .chat-tab .chat .message-row.user .avatar{order:2;margin:0 0 0 16px}#quick-panel .chat-tab .chat .message-row.user .bubble{background-color:#e8f5e9;border:1px solid #dfebe0;order:1}#quick-panel .chat-tab .chat .message-row.user .bubble:after{right:-7px;left:auto;top:auto;bottom:0;border-color:transparent transparent #e8f5e9 transparent}#quick-panel .chat-tab .chat .message-row.user .bubble:before{right:-9px;left:auto;top:auto;bottom:-1px;border-color:transparent transparent #dfebe0 transparent}#quick-panel .chat-tab .chat .reply{border-top:1px solid rgba(0,0,0,.12)}#quick-panel .chat-tab .chat .reply textarea{margin:8px;resize:none;padding:8px 16px 8px 8px}#timeline{position:relative;height:auto;padding-bottom:30px}#timeline:before{display:block;position:absolute;z-index:10;content:'';width:2px;background:rgba(0,0,0,.08);top:0;left:50%;bottom:0;margin-left:-1px}#timeline .ms-timeline-item{overflow:hidden;position:relative;z-index:20;width:100%;margin:0 auto;max-width:1200px}#timeline .ms-timeline-item .timeline-card{order:1}#timeline .ms-timeline-item .timeline-card .interaction .header .avatar .image{display:block;width:40px;height:40px;border-radius:20px}#timeline .ms-timeline-item .timeline-card .interaction .media .image{width:100%}#timeline .ms-timeline-item .timeline-point{position:absolute;width:40px;height:40px;line-height:40px;text-align:center;border-radius:50%;left:50%;margin:16px 0 0 -28px;order:2}#timeline .ms-timeline-item .timeline-point md-icon{color:#fff}#timeline .ms-timeline-item .timeline-detail{flex:50% 0 0;padding-top:28px;order:3}#timeline .ms-timeline-item .timeline-detail .time{font-size:15px;padding-left:68px}#timeline .ms-timeline-item .timeline-detail .event{color:rgba(0,0,0,.54);padding-left:68px}#timeline .ms-timeline-item:nth-child(odd) .timeline-card{flex-direction:row-reverse}#timeline .ms-timeline-item:nth-child(even) .timeline-card{order:3;padding-right:0}#timeline .ms-timeline-item:nth-child(even) .timeline-card ms-card{padding-left:84px}#timeline .ms-timeline-item:nth-child(even) .timeline-detail{order:1;padding-left:0;text-align:right}#timeline .ms-timeline-item:nth-child(even) .timeline-detail .event,#timeline .ms-timeline-item:nth-child(even) .timeline-detail .time{padding-right:68px}#timeline .ms-timeline-item:first-child{padding-top:15px}#timeline .ms-timeline-item.animate .timeline-card{animation:slide-in-left .4s}#timeline .ms-timeline-item.animate .timeline-point{animation:slide-in-bottom .4s}#timeline .ms-timeline-item.animate .timeline-detail{animation:slide-in-right .4s}#timeline .ms-timeline-item:nth-child(even).animate .timeline-card{animation:slide-in-right .4s}#timeline .ms-timeline-item:nth-child(even).animate .timeline-detail{animation:slide-in-left .4s}#timeline.timeline-left .ms-timeline-item .timeline-card{order:1}#timeline.timeline-left .ms-timeline-item .timeline-card ms-card{padding-right:68px;padding-left:0;margin-left:auto}#timeline.timeline-left .ms-timeline-item .timeline-detail{order:3;text-align:left}#timeline.timeline-left .ms-timeline-item.animate .timeline-card{animation:slide-in-left .4s}#timeline.timeline-left .ms-timeline-item.animate .timeline-detail{animation:slide-in-right .4s}#timeline.timeline-right .ms-timeline-item .timeline-card{order:3}#timeline.timeline-right .ms-timeline-item .timeline-card ms-card{padding-left:68px;padding-right:0;margin-right:auto}#timeline.timeline-right .ms-timeline-item .timeline-detail{order:1;text-align:right}#timeline.timeline-right .ms-timeline-item .timeline-detail .event,#timeline.timeline-right .ms-timeline-item .timeline-detail .time{padding-right:68px;padding-left:0}#timeline.timeline-right .ms-timeline-item.animate .timeline-card{animation:slide-in-right .4s}#timeline.timeline-right .ms-timeline-item.animate .timeline-detail{animation:slide-in-left .4s}md-dialog.group-dialog{max-width:720px;width:720px}md-dialog.group-dialog md-dialog-content{display:block;position:relative}md-dialog.group-dialog md-toolbar .title{font-size:17px}md-dialog.group-dialog md-input-container textarea{min-height:150px}md-dialog.group-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.group-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.group-dialog .date-container{padding:16px 0 24px 0}md-dialog.group-dialog .error-list{font-size:13px}md-dialog.group-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.group-dialog .error-list .error .message{font-weight:500}md-dialog.group-dialog .error-list .error .md-button{margin:0}md-dialog.group-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.group-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#quick-panel .group-tab .chat,#quick-panel .group-tab .main{position:absolute;width:100%;top:0;bottom:0}#quick-panel .group-tab .main .contact{position:relative}#quick-panel .group-tab .main .contact .status{position:absolute;top:8px;left:44px;width:18px;height:18px;border:3px solid #fff;border-radius:50%;z-index:10}#quick-panel .group-tab .main .contact .status.online{background-color:#00c853}#quick-panel .group-tab .main .contact .status.offline{background-color:#d50000}#quick-panel .group-tab .main .contact .status.away{background-color:#ff6d00}#quick-panel .group-tab .main .contact .unread-message-count{position:absolute;left:16px;bottom:16px;width:18px;height:18px;z-index:10;border-radius:50%;text-align:center;line-height:18px;font-size:11px}#quick-panel .group-tab .main .recent .contact .status{top:18px}#quick-panel .group-tab .chat{max-height:100%;overflow:hidden}#quick-panel .group-tab .chat .message-row{padding:8px}#quick-panel .group-tab .chat .message-row .bubble{position:relative;padding:8px;background-color:#eceff1;border:1px solid #dcdfe1}#quick-panel .group-tab .chat .message-row .bubble:after,#quick-panel .group-tab .chat .message-row .bubble:before{content:' ';position:absolute;width:0;height:0}#quick-panel .group-tab .chat .message-row .bubble:after{left:-7px;right:auto;top:0;bottom:auto;border:11px solid;border-color:#eceff1 transparent transparent transparent}#quick-panel .group-tab .chat .message-row .bubble:before{left:-9px;right:auto;top:-1px;bottom:auto;border:8px solid;border-color:#dcdfe1 transparent transparent transparent}#quick-panel .group-tab .chat .message-row .bubble .time{font-size:11px;margin-top:8px}#quick-panel .group-tab .chat .message-row .bubble .message{word-wrap:break-word}#quick-panel .group-tab .chat .message-row.contact .avatar{margin:0 16px 0 0}#quick-panel .group-tab .chat .message-row.user{align-items:flex-end}#quick-panel .group-tab .chat .message-row.user .avatar{order:2;margin:0 0 0 16px}#quick-panel .group-tab .chat .message-row.user .bubble{background-color:#e8f5e9;border:1px solid #dfebe0;order:1}#quick-panel .group-tab .chat .message-row.user .bubble:after{right:-7px;left:auto;top:auto;bottom:0;border-color:transparent transparent #e8f5e9 transparent}#quick-panel .group-tab .chat .message-row.user .bubble:before{right:-9px;left:auto;top:auto;bottom:-1px;border-color:transparent transparent #dfebe0 transparent}#quick-panel .group-tab .chat .reply{border-top:1px solid rgba(0,0,0,.12)}#quick-panel .group-tab .chat .reply textarea{margin:8px;resize:none;padding:8px 16px 8px 8px}md-dialog.group-dialog{max-width:720px;width:720px}md-dialog.group-dialog md-dialog-content{display:block;position:relative}md-dialog.group-dialog md-toolbar .title{font-size:17px}md-dialog.group-dialog md-input-container textarea{min-height:150px}md-dialog.group-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.group-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.group-dialog .date-container{padding:16px 0 24px 0}md-dialog.group-dialog .error-list{font-size:13px}md-dialog.group-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.group-dialog .error-list .error .message{font-weight:500}md-dialog.group-dialog .error-list .error .md-button{margin:0}md-dialog.group-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.group-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#reset-password{height:100%;background:url(/assets/images/backgrounds/tech.png) no-repeat;background-size:cover}#reset-password #reset-password-form-wrapper{flex:1 0 auto;padding:32px}#reset-password #reset-password-form-wrapper #reset-password-form{width:384px;max-width:384px;padding:32px;text-align:center;background:#fff}#reset-password #reset-password-form-wrapper #reset-password-form .logo{width:128px;height:128px;line-height:128px;font-size:86px;font-weight:500;margin:32px auto;color:#fff;border-radius:2px}#reset-password #reset-password-form-wrapper #reset-password-form .title{font-size:17px;margin:16px 0 32px 0}#reset-password #reset-password-form-wrapper #reset-password-form .logo_login{max-height:200px}#reset-password #reset-password-form-wrapper #reset-password-form form{width:100%;text-align:left}#reset-password #reset-password-form-wrapper #reset-password-form form .submit-button{width:220px;margin:16px auto;display:block}#reset-password #reset-password-form-wrapper #reset-password-form .login{margin:32px auto 24px auto;width:250px;font-weight:500}#reset-password #reset-password-form-wrapper #reset-password-form .login .text{margin-right:8px}@media screen and (max-width:600px){#reset-password #reset-password-form-wrapper{padding:16px}#reset-password #reset-password-form-wrapper #reset-password-form{padding:24px;width:100%}#reset-password #reset-password-form-wrapper #reset-password-form form .md-button{width:90%}}md-dialog.preview-dialog{max-width:1020px;width:1020px}md-dialog.preview-dialog md-dialog-content{display:block;position:relative;padding:0}md-dialog.preview-dialog md-dialog-content .recall-me-info{position:relative;overflow-y:hidden;overflow-x:auto;background-color:rgba(0,0,0,.03);border-bottom:1px solid rgba(0,0,0,.12);min-height:64px;padding:8px 8px 8px 16px}md-dialog.preview-dialog md-toolbar .title{font-size:17px}md-dialog.preview-dialog md-input-container textarea{min-height:150px}md-dialog.preview-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.preview-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.preview-dialog .date-container{padding:16px 0 24px 0}md-dialog.preview-dialog .error-list{font-size:13px}md-dialog.preview-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.preview-dialog .error-list .error .message{font-weight:500}md-dialog.preview-dialog .error-list .error .md-button{margin:0}md-dialog.preview-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.preview-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#toolbar{width:100%;height:64px;min-height:64px;max-height:64px;z-index:55!important}#toolbar .blink{animation:blinker 2s linear infinite}#toolbar #navigation-toggle{width:64px;min-width:64px;height:64px;margin:0;border-right:1px solid rgba(0,0,0,.12);border-radius:0}#toolbar .logo-image{display:block;width:32px;min-width:32px;height:32px;line-height:32px;text-align:center;font-size:16px;font-weight:500;color:#fff;border-radius:2px;margin-left:10px;margin-right:8px}#toolbar #user-menu{height:64px;padding:0}#toolbar #user-menu md-menu-item .md-button{font-size:15px}#toolbar #user-menu md-menu-item .md-button md-icon{margin:auto 16px auto 0}#toolbar #user-menu .user-button{margin:0;padding:0 16px;height:64px;text-transform:none}#toolbar #user-menu .user-button .avatar-wrapper{position:relative}#toolbar #user-menu .user-button .avatar-wrapper .status{position:absolute;bottom:-3px;right:5px}#toolbar #user-menu .user-button .username{margin:0 12px 0 8px}#toolbar #language-menu{height:64px}#toolbar #language-menu .language-button{min-width:64px;height:64px;margin:0;padding:0 16px;border-radius:0}#toolbar #language-menu .language-button .iso{text-transform:uppercase}#toolbar #language-menu .language-button .flag{margin-right:8px}#toolbar #quick-panel-toggle{width:64px;height:64px;margin:0;border-radius:0}#toolbar #quick-panel-toggle .unread-message-count{position:absolute;top:8px;left:38px;width:18px;height:18px;z-index:10;border-radius:50%;text-align:center;line-height:18px;font-size:10px}#toolbar .toolbar-separator{height:64px;width:1px;background:rgba(0,0,0,.12)}#language-menu-content md-menu-item .flag{margin-right:16px}#language-message{min-height:88px;max-width:600px}#language-message .md-toast-content{height:90px}.open-contact-count{position:absolute;top:1px;left:25px;width:18px;height:18px;z-index:10;border-radius:50%;text-align:center;line-height:18px;font-size:10px}.md-button.preview-button{min-width:46px;min-height:50px}@media screen and (max-width:600px){#toolbar #user-menu .user-button{min-width:64px;padding:0 2px 0 10px}}.geEditor{font-family:Helvetica Neue,Helvetica,Arial Unicode MS,Arial;font-size:10pt;overflow:hidden;height:100%}.geMenubarContainer .geItem,.geSidebarContainer .geTitle,.geToolbar .geButton,.geToolbar .geLabel{cursor:pointer!important}.geContentEditable div,.geContentEditable table,.geContentEditable table td{border:1px dashed #d3d3d3}.geBackgroundPage{-webkit-box-shadow:0 0 3px 0 #d9d9d9;-moz-box-shadow:0 0 3px 0 #d9d9d9;box-shadow:0 0 3px 0 #d9d9d9}.geMenubarContainer a,.geSidebarContainer a,.geToolbar a{color:#000!important;text-decoration:none}.geDiagramContainer,.geFooterContainer,.geHsplit,.geMenubarContainer,.geOutlineContainer,.geSidebarContainer,.geToolbarContainer,.geVsplit{overflow:hidden;position:absolute;cursor:default}.geDiagramContainer,.geOutlineContainer{background-color:#fff;outline:0}.geMenubar,.geToolbar{white-space:nowrap;display:block;width:100%}.geMenubarContainer .geItem,.geSidebar,.geSidebar .geItem,.geSidebarContainer .geTitle,.geToolbar .geButton,.geToolbar .geLabel,.mxPopupMenuItem{-webkit-transition:all .1s ease-in-out;-moz-transition:all .1s ease-in-out;-o-transition:all .1s ease-in-out;-ms-transition:all .1s ease-in-out;transition:all .1s ease-in-out}.geHint{background-color:#fff;border:1px solid gray;padding:4px 16px 4px 16px;border-radius:3px;-webkit-box-shadow:1px 1px 2px 0 #ddd;-moz-box-shadow:1px 1px 2px 0 #ddd;box-shadow:1px 1px 2px 0 #ddd;opacity:.8}.geStatusAlert{white-space:nowrap;margin-top:-5px;font-size:12px;padding:4px 6px 4px 6px;background-color:#f2dede;border:1px solid #ebccd1;color:#a94442!important;border-radius:3px}.geStatusAlert:hover{background-color:#f1d8d8;border-color:#d6b2b8}.geStatusMessage{white-space:nowrap;margin-top:-5px;padding:4px 6px 4px 6px;font-size:12px;background-image:-webkit-linear-gradient(top,#dff0d8 0,#c8e5bc 100%);background-image:-o-linear-gradient(top,#dff0d8 0,#c8e5bc 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#dff0d8),to(#c8e5bc));background-image:linear-gradient(to bottom,#dff0d8 0,#c8e5bc 100%);background-repeat:repeat-x;border:1px solid #b2dba1;border-radius:3px;color:#3c763d!important}.geStatusMessage:hover{background:#c8e5bc;border-color:#b2dba1}.geAlert{position:absolute;white-space:nowrap;padding:14px;background-color:#f2dede;border:1px solid #ebccd1;color:#a94442;border-radius:3px;-webkit-box-shadow:2px 2px 3px 0 #ddd;-moz-box-shadow:2px 2px 3px 0 #ddd;box-shadow:2px 2px 3px 0 #ddd}.geBtn{background-color:#f5f5f5;border-radius:2px;border:1px solid #d8d8d8;color:#333;cursor:default;font-size:11px;font-weight:700;height:29px;line-height:27px;margin:0 0 0 8px;min-width:72px;outline:0;padding:0 8px;cursor:pointer}.geBtn:hover{-webkit-box-shadow:0 1px 1px rgba(0,0,0,.1);-moz-box-shadow:0 1px 1px rgba(0,0,0,.1);box-shadow:0 1px 1px rgba(0,0,0,.1);border:1px solid #c6c6c6;background-color:#f8f8f8;background-image:linear-gradient(#f8f8f8 0,#f1f1f1 100%);color:#111}.geBtn:disabled{opacity:.5}.geBtnUp{background-image:url(data:image/gif;base64,R0lGODlhCgAGAJECAGZmZtXV1f///wAAACH/C1hNUCBEYXRhWE1QPD94cGFja2V0IGJlZ2luPSLvu78iIGlkPSJXNU0wTXBDZWhpSHpyZVN6TlRjemtjOWQiPz4gPHg6eG1wbWV0YSB4bWxuczp4PSJhZG9iZTpuczptZXRhLyIgeDp4bXB0az0iQWRvYmUgWE1QIENvcmUgNS4wLWMwNjAgNjEuMTM0Nzc3LCAyMDEwLzAyLzEyLTE3OjMyOjAwICAgICAgICAiPiA8cmRmOlJERiB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiPiA8cmRmOkRlc2NyaXB0aW9uIHJkZjphYm91dD0iIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtbG5zOnhtcE1NPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvbW0vIiB4bWxuczpzdFJlZj0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL3NUeXBlL1Jlc291cmNlUmVmIyIgeG1wOkNyZWF0b3JUb29sPSJBZG9iZSBQaG90b3Nob3AgQ1M1IE1hY2ludG9zaCIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDo0QzM3ODJERjg4NUQxMUU0OTFEQ0E2MzRGQzcwNUY3NCIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDo0QzM3ODJFMDg4NUQxMUU0OTFEQ0E2MzRGQzcwNUY3NCI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOjRDMzc4MkREODg1RDExRTQ5MURDQTYzNEZDNzA1Rjc0IiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOjRDMzc4MkRFODg1RDExRTQ5MURDQTYzNEZDNzA1Rjc0Ii8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+Af/+/fz7+vn49/b19PPy8fDv7u3s6+rp6Ofm5eTj4uHg397d3Nva2djX1tXU09LR0M/OzczLysnIx8bFxMPCwcC/vr28u7q5uLe2tbSzsrGwr66trKuqqainpqWko6KhoJ+enZybmpmYl5aVlJOSkZCPjo2Mi4qJiIeGhYSDgoGAf359fHt6eXh3dnV0c3JxcG9ubWxramloZ2ZlZGNiYWBfXl1cW1pZWFdWVVRTUlFQT05NTEtKSUhHRkVEQ0JBQD8+PTw7Ojk4NzY1NDMyMTAvLi0sKyopKCcmJSQjIiEgHx4dHBsaGRgXFhUUExIREA8ODQwLCgkIBwYFBAMCAQAAIfkEAQAAAgAsAAAAAAoABgAAAg6UjwiQBhGYglCKhXFLBQA7);background-position:center center;background-repeat:no-repeat}.geBtnUp:active{background-color:#4d90fe;background-image:linear-gradient(#4d90fe 0,#357ae8 100%)}.geBtnDown{background-image:url(data:image/gif;base64,R0lGODlhCgAGAJECANXV1WZmZv///wAAACH/C1hNUCBEYXRhWE1QPD94cGFja2V0IGJlZ2luPSLvu78iIGlkPSJXNU0wTXBDZWhpSHpyZVN6TlRjemtjOWQiPz4gPHg6eG1wbWV0YSB4bWxuczp4PSJhZG9iZTpuczptZXRhLyIgeDp4bXB0az0iQWRvYmUgWE1QIENvcmUgNS4wLWMwNjAgNjEuMTM0Nzc3LCAyMDEwLzAyLzEyLTE3OjMyOjAwICAgICAgICAiPiA8cmRmOlJERiB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiPiA8cmRmOkRlc2NyaXB0aW9uIHJkZjphYm91dD0iIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtbG5zOnhtcE1NPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvbW0vIiB4bWxuczpzdFJlZj0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL3NUeXBlL1Jlc291cmNlUmVmIyIgeG1wOkNyZWF0b3JUb29sPSJBZG9iZSBQaG90b3Nob3AgQ1M1IE1hY2ludG9zaCIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDo0QzM3ODJEQjg4NUQxMUU0OTFEQ0E2MzRGQzcwNUY3NCIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDo0QzM3ODJEQzg4NUQxMUU0OTFEQ0E2MzRGQzcwNUY3NCI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOjRDMzc4MkQ5ODg1RDExRTQ5MURDQTYzNEZDNzA1Rjc0IiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOjRDMzc4MkRBODg1RDExRTQ5MURDQTYzNEZDNzA1Rjc0Ii8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+Af/+/fz7+vn49/b19PPy8fDv7u3s6+rp6Ofm5eTj4uHg397d3Nva2djX1tXU09LR0M/OzczLysnIx8bFxMPCwcC/vr28u7q5uLe2tbSzsrGwr66trKuqqainpqWko6KhoJ+enZybmpmYl5aVlJOSkZCPjo2Mi4qJiIeGhYSDgoGAf359fHt6eXh3dnV0c3JxcG9ubWxramloZ2ZlZGNiYWBfXl1cW1pZWFdWVVRTUlFQT05NTEtKSUhHRkVEQ0JBQD8+PTw7Ojk4NzY1NDMyMTAvLi0sKyopKCcmJSQjIiEgHx4dHBsaGRgXFhUUExIREA8ODQwLCgkIBwYFBAMCAQAAIfkEAQAAAgAsAAAAAAoABgAAAg6UjxLLewEiCAnOZBzeBQA7);background-position:center center;background-repeat:no-repeat}.geBtnDown:active{background-color:#4d90fe;background-image:linear-gradient(#4d90fe 0,#357ae8 100%)}.geColorBtn{background-color:#f5f5f5;background-image:linear-gradient(#f5f5f5 0,#e1e1e1 100%);border-radius:4px;border:1px solid rgba(0,0,0,.5);color:#333;cursor:default;margin:0;outline:0;padding:0;cursor:pointer}.geColorBtn:hover{-webkit-box-shadow:0 1px 1px rgba(0,0,0,.1);-moz-box-shadow:0 1px 1px rgba(0,0,0,.1);box-shadow:0 1px 1px rgba(0,0,0,.1);border:1px solid rgba(0,0,0,.7)}.geColorBtn:active{background-color:#4d90fe;background-image:linear-gradient(#4d90fe 0,#357ae8 100%);border:1px solid #2f5bb7;color:#fff}.geColorBtn:disabled{opacity:.5}.gePrimaryBtn{background-color:#4d90fe;background-image:linear-gradient(#4d90fe 0,#4787ed 100%);border:1px solid #3079ed;color:#fff}.gePrimaryBtn:hover{background-color:#357ae8;background-image:linear-gradient(#4d90fe 0,#357ae8 100%);border:1px solid #2f5bb7;color:#fff}.gePrimaryBtn:disabled{opacity:.5}.geAlertLink{color:#843534;font-weight:700;text-decoration:none}.geMenubarContainer{background-color:#fff}.geMenubar{padding:0 2px 0 2px;vertical-align:middle}.geMenubarContainer .geItem,.geToolbar .geItem{padding:6px 8px 6px 8px;cursor:default}.geMenubarContainer .geItem:hover,.geToolbarContainer .geItem:hover{background:#eee}.mxDisabled:hover{background:inherit!important}.geMenubar a.geStatus{color:#b3b3b3;padding-left:6px;display:inline-block;cursor:default!important}.geMenubar a.geStatus:hover{background:0 0}.geMenubarMenu{border:1px solid #d5d5d5!important}.geToolbarContainer{background:#f5f5f5;border-bottom:1px solid #e0e0e0}.geSidebarContainer .geToolbarContainer{background:0 0;border-bottom:none}.geSidebarContainer button{text-overflow:ellipsis;overflow:hidden}.geToolbar{padding:1px 0 0 6px;border-top:1px solid #e0e0e0;-webkit-box-shadow:inset 0 1px 0 0 #fff;-moz-box-shadow:inset 0 1px 0 0 #fff;box-shadow:inset 0 1px 0 0 #fff}.geToolbarContainer .geSeparator{float:left;width:1px;height:34px;background:#e5e5e5;margin-left:6px;margin-right:6px;margin-top:-2px}.geToolbarContainer .geButton{float:left;width:20px;height:20px;padding:0 2px 4px 2px;margin:2px;border:1px solid transparent;cursor:pointer;opacity:.6}.geToolbarContainer .geButton:hover{border:1px solid gray;border-radius:2px;opacity:1;filter:none!important}.geToolbarContainer .geButton:active{border:1px solid #000}div.mxWindow .geButton{margin:-1px 2px 2px 2px;padding:1px 2px 2px 1px}.geToolbarContainer .geLabel{float:left;margin:2px;cursor:pointer;padding:3px 5px 3px 5px;border:1px solid transparent;opacity:.6}.geToolbarContainer .geLabel:hover{border:1px solid gray;border-radius:2px;opacity:.9}.geToolbarContainer .geLabel:active{border:1px solid #000;opacity:1;filter:none!important}.geToolbarContainer .mxDisabled:hover{border:1px solid transparent!important;opacity:.2!important}.geToolbarMenu{border:3px solid #e0e0e0!important;-webkit-box-shadow:none!important;-moz-box-shadow:none!important;box-shadow:none!important;filter:none!important}.geDiagramBackdrop{background-color:#ebebeb;border-style:solid;border-color:#e5e5e5;border-width:1px 0 0 1px}.geSidebarContainer{background:#fff;overflow:hidden;position:absolute;border-top:1px solid #e5e5e5;overflow:auto}.geSidebar{background:#f5f5f5;border-bottom:1px solid #e5e5e5;padding:5px;padding-bottom:12px;overflow:hidden}.geSidebarContainer .geTitle{display:block;font-size:9pt;border-bottom:1px solid #e5e5e5;font-weight:400;padding:6px 0 6px 14px;margin:0;cursor:default;background:#eee;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;line-height:1.4em}.geSidebarContainer .geTitle:hover{background:#e5e5e5}.geTitle img{opacity:.5}.geTitle img:hover{opacity:1}.geSidebar .geItem{display:inline-block;background-repeat:no-repeat;background-position:50% 50%;border:1px solid transparent;border-radius:2px;cursor:move}.geSidebar .geItem:hover{border:1px solid gray!important}.geItem{vertical-align:top;display:inline-block}.geSidebarTooltip{position:absolute;background:#fff;overflow:hidden;border:1px solid gray;border-radius:8px;-webkit-box-shadow:0 0 2px 2px #d5d5d5;-moz-box-shadow:0 0 2px 2px #d5d5d5;box-shadow:0 0 2px 2px #d5d5d5}.geFooterContainer{background:#e5e5e5;border-top:1px solid silver}.geFooterContainer a{font-size:14px;color:#235695;font-weight:700;text-decoration:none}.geFooterContainer table{border-collapse:collapse;margin:0 auto}.geFooterContainer td{border-left:1px solid silver;border-right:1px solid silver}.geFooterContainer td:hover{background-color:#b3b3b3}.geFooterContainer a{display:block;box-sizing:border-box;width:100%;height:100%;padding:11px 42px 11px 42px;white-space:nowrap}.geHsplit{cursor:col-resize;background-color:#e5e5e5;background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAQAAAAHBAMAAADdS/HjAAAAGFBMVEUzMzP///9tbW1QUFCKiopBQUF8fHxfX1/IXlmXAAAAHUlEQVQImWMQEGAQFWUQFmYQF2cQEmIQE2MQEQEACy4BF67hpEwAAAAASUVORK5CYII=);background-repeat:no-repeat;background-position:center center}.geVsplit{font-size:1pt;cursor:row-resize;background-color:#e5e5e5;background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAcAAAAEBAMAAACw6DhOAAAAGFBMVEUzMzP///9tbW1QUFCKiopBQUF8fHxfX1/IXlmXAAAAFElEQVQImWNgNVdzYBAUFBRggLMAEzYBy29kEPgAAAAASUVORK5CYII=);background-repeat:no-repeat;background-position:center center}.geHsplit:hover,.geVsplit:hover{background-color:#d5d5d5}.geDialog{position:absolute;background:#fff;overflow:hidden;padding:30px;border:1px solid #acacac;-webkit-box-shadow:0 0 2px 2px #d5d5d5;-moz-box-shadow:0 0 2px 2px #d5d5d5;box-shadow:0 0 2px 2px #d5d5d5;z-index:2}.geDialogClose{position:absolute;width:9px;height:9px;opacity:.5;cursor:pointer}.geDialogClose:hover{opacity:1}.geDialogTitle{box-sizing:border-box;white-space:nowrap;background:#e5e5e5;border-bottom:1px solid silver;font-size:15px;font-weight:700;text-align:center;color:#235695}.geDialogFooter{background:#f5f5f5;white-space:nowrap;text-align:right;box-sizing:border-box;border-top:1px solid #e5e5e5;color:#a9a9a9}.geSprite{background:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABUAAAk/CAYAAACauMYVAAAABGdBTUEAALGPC/xhBQAAACBjSFJNAAB6JgAAgIQAAPoAAACA6AAAdTAAAOpgAAA6mAAAF3CculE8AAAACXBIWXMAAAsTAAALEwEAmpwYAAABWWlUWHRYTUw6Y29tLmFkb2JlLnhtcAAAAAAAPHg6eG1wbWV0YSB4bWxuczp4PSJhZG9iZTpuczptZXRhLyIgeDp4bXB0az0iWE1QIENvcmUgNS40LjAiPgogICA8cmRmOlJERiB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiPgogICAgICA8cmRmOkRlc2NyaXB0aW9uIHJkZjphYm91dD0iIgogICAgICAgICAgICB4bWxuczp0aWZmPSJodHRwOi8vbnMuYWRvYmUuY29tL3RpZmYvMS4wLyI+CiAgICAgICAgIDx0aWZmOk9yaWVudGF0aW9uPjE8L3RpZmY6T3JpZW50YXRpb24+CiAgICAgIDwvcmRmOkRlc2NyaXB0aW9uPgogICA8L3JkZjpSREY+CjwveDp4bXBtZXRhPgpMwidZAAAWn0lEQVR4Ae2dW4gdxdbHO0aJYjzxTtR4EhSDSNB84kPEQOL9CB/Ex4igg8iAGCSgiIIQH1SOqJAnn4N4wBdvYBRBcYTIp0+OF0SDYoJRgyAmeA1e5lv/PrM6q6urqqu7a2/3ZP4NPVVdtda/Vv2qZ9Nrd++9i2IE2xJoHn/88XOq/ccff5RtepxSuv7HqxPE0GkNtC+lVH/YjiTSKoi+EaqA9T9OG3OW4xNdu3btHPZY9DGbRqRtYhiozaYhunfvXu95aoVCNjqzhqh2uGWbkLVPFrWRWgFfvSFqnW3dOtt2W7c2Zd2evI3OhAbr34g0wb/VZOGIjuRVagG+nrYuKQ1IgARIgARIgARIgARIoEbAm93BwmYb1mP58uXFoUOHgn6wTUok8K4Ddgj+9NNPxamnnhpNhpNENdL169eXVQj32jB93VUAEaJNxKORBtmEmGIAoNCBfGXS9C1TiLRF6huobNOp24g3b97cQBIU8HX4RJVp2+oH2dgI7aAp56m1Z50ESIAESIAESIAESIAESGCREtBMJXX6SclZqpjaUVRJ5CuPEabI623ii3rvXN/SVeFsgioO4SwRquDElNU7E3ZB+kTX9g5QH036kAAJkAAJkAAJkAAJkMDEEqiupBFh36vpsVxF1yJVnqkRjyVCDaoWaWqE6qzlWCKuRaojp0Y8lgg1qFqkqRGqs5ZjibgWqY6cGvFYItSgWJIACZAACZAACZAACZDAJBHwXknbAENX1bGr6IZoSMQO5KvbQUZyi9M36OC2xvRVMRWDnbb6jmT6FFW8+UoyzcdSlUbCVMVZkgAJkAAJkAAJkAAJTCqB1Pypc/yu8Jo1a6KfhE0eAMI7duyYS/04aJIwBCGsUeL507bPmbYKQwCCFsUgYQjaJ2MHC7uCvim1RVxLzSHY5YPUq1atKvbt21fTQBC9sxN8ltcnCNHGKCnR2g8HP/TQQ+U5/Mgjj1RajUjxiXc4hTYrCJtff/213K19pW4bUfdF7Aree++9tf+0p556qtRrRKribsSuoNr1KhEx9pAzonUjDtmynQRIgARIgARIgARIgASOGQLlNbrN6Hy3LNtm6/ovwC+qtVNom66v3/p7Ux4YuLsrZLNst686tiO5grZPHdCmbzCgzdp4I1VHX6kDou/AgQOFFW7Y25HU0ZauA/ps0mb9O0eq4uvWrWv9OrgaE3XsUmaJNDZgdPp29JiI2xcVdY1Tj72iOLE1SpRJJ7pvRBXRPpwuaLOnjfb5Ste/tPE1Rk9sR9n68/XUgcNDEiABEiABEiABEjgmCTTunMkl4Z65ublVbbM97rjj3v3999+3+uyqLFo7Ifjqq6+ulq1YsqQxJr6huXj77beLe+65Z5/6uGVDFAZysVtcdNFFXlGJrpDfPSp13nrrLczouauvvnpj2TD/x3vNjz5flOooUy8uvPDCDV9//fX/yb3ADc8///we7UMZFEXnn3/+WbzwwgvF559/XiBCbCeccEJx/fXXF4899tiyxx9/fNXpp5++VO4K19bAO/3SW/4goquuuqp4+OGHi08//bQ8vuyyy4rbb7+9ePTRR4svvvjioAyy9a+//jqiPt5y6dKl+z777DNZr6Pb+++/P3fHHXfMSd/cGWecMXf55Zcjc3lfBDZ4RdxGnyjkZ2Zm5q655ppSGOIiOuP66nGUKYx++eWX4pVXXilXfGpqqnjppZcKuZNbyDjrzzvvvJk33njjORXTMioqrIoPPvigPDdxmm3cuLG49tpri5tvvrm47bbbVkj/pp9//vlfL7744nYVRBldKBgsW7asEIbFWWedVZx00kkFBvrtt9/QVZ520r/ihx9+gOjOslH+REWx+hC0G04zWcjimWee2X/OOefsWrFiRfHtt98esjZeUTji39H3D4B29EvfPnkP5eErr7zS6pV1r+h7771XfPXVV0HRjz76qCFkGxqvGHIyPycru9Ia+eoS6az8l9UWyGfHNhIgARIgARIgARIgARLoQKBxfer6fvLJJ899/PHHZb506aWXvnvxxRdvdW3c48aV9O7du/eIUZUW3nXXXStvvPHGZbhUf/rpp1dK/z4VQUp5ySWXHJAHhuMJ75133rlKcqfVJ5988mpJJFYfPnx42ZNPPlk88cQTuPu4DG3og83999+/WjKTKgAdrJFHfffdd8Xs7OxWcd4sD//Ofvnll4UIlzvqDz74YCGPkIvJ7Nbvv/++TCpULFgijZTO1TK1nVI/hJTR3edTyNXnn3/+nIjDvrY1mGqvJAm7pP6iHjvlYee4dhgUffPNN9dLzrQG1sjyZJu56aabZlCZ31ZrxS2DoiI0Jcab4IDMT7bNr7/++gwqSMxuuOGGt1D3bY2F8hnNt22S/Goq0l91BSOtLI5W3paId0mEu+abuk8fGR1OeIlOme4Spip4dChPLRjpdddd1ztF7MLUE5O/aSSioek3/p89MZU2YO5uDVFZnAPyb/kf19B3LIL7pf2Ar49tJEACJEACJEACJEAC/Qh4c1O5sfWhXHz9MyK5Rx51/N9Qf+OqD4abNm36hxQrQk5XXHHFvyQz/PDss8++1GfjFf3xxx+RHm595513tp944ollBq3Octfs3YMHD+6US87/iPAeEd6ofVp6Rec7D956662N+6FHjhz5Hxl055lnnrlUbnduEFR75F5qTTgmWj5d/OyzzxYbNtSCXSaDrsSTx7fccstSYd+46o6KIuKVK1cWuIPeZWsVhZjcyC6++eYbPExcyLQLyZ6jYySJ4pamvFlQ3vPDImKXvCAo3CnlQSaCtzgQKcrQ1kkU2TQ+y3vKKafkiRR5KkSBAnxjWzDSBx54YEpuYJfLftpppxUXXHBBsWbNmkLOzZhe2ecVlYh2Crf9El352iBPG+BxhlIY4ueee24lLJxXvPbaaw9UDVLxrr68f7Lz7rvvxim0Wd548Z6k8q9a6sg7GKdKBaL/Lhvkj1dUOyXQ2fvuu08PG6Xc4C5PM7Hr+ZvkDUk2kAAJkAAJkAAJkAAJkAAJLFYC3vdQXBiS+jRvj4mR3AFO8nf1quPt27d3+qho5RirINpQxK6fN410jTZv3lxOH19Rlm3rEiUGbY1UMucySjzNnW3rGmVrpPqh4G3btnUK0nuehVZ58HnZKTQakwAJkAAJkAAJkAAJkAAJZCBQu+YPXeu3jTOWXKBXpGOJzMXTK1JXZCyR94p0LJG5OHpF6oqMJfJekY4lMhcHj0mABEiABEiABEiABEhgnkDXe1Ktd876kKVomJr9ZmFYYcF6f7uwHUaFswmqOISzRKiCE1NWGV/f9090JsdwFph99bOfp1ZQX/6yna8qqCvdVvKlr40Q+0mABEiABEiABEiABBY8gSqP8s2kLbcK5U4juZL2BTi4rTH9timHRrQoBk3fCtnBBomGZjVI1EZn69EPBsMwNMVQlPAZSaQQDm6xaGJ9I4m0lWksouAU2UECJEACJEACJEACJEACJEACWQnITzuVP5mLDEX3Qff4VCRUWnHYtM4GRvpZaDXGJ7j1B391IHusdt5SPwzs7ZRGDKaitgzZF4gm2Gk65JeuGsKmu55F4wemUjb50a+oWeM9lKi1dAKP/Fhawyz0vkDDkA0kQAIkQAIkQAIkQAIkQAILnkAtkUBe1GdGY0kiapG6UaZGPv5IUyNzZzT+SN0IUiMff6SpkbkzGn+kbgSpkY8lUjc4HpMACZAACZAACZAACZAACaQQaOSmqdf5Vty95h/vQ63u6DYyrYdmlSXS6enpOew6WBZRFdOSokoiXxl8Tjp0uqQMPZKFakRqT3p77qVEqDYjiVTFWZIACZAACZAACZAACZDARBKQa/0P5XeLD0lwbT8Z9E/Ywd6dSONKWn5XV38qO/yLyP9VQQa+Yt6+ptsQrfX2PFjkoo08SjHKyk7JzwtfrceeEovkaY5/2nhKnFb7vNAu+3ZfH9qCkaJTfjB9lxSHZcdT2ftl3yc7tk2YCSq+rXX15eTeKQIzUk75BHxtraI+p7a2hqgszgFx+lMd5Ri/Nr1fSvzrJm0NppJFb5Sp7pGFwI+aHZFfud4KJeFrBfEb8mCMH6FGENxIgARIgARIgARIgARIYHERQNJabnL17E+K1KCltPexWkwXWjc+WWw/XTw4foiBN/YswlYwqzCmqoKp025kfKmOMTuKxuj061s4TPvNj14kQAIkQAIkQAIkQAIkQAIBAqEsL9RuZRZOIsFI7bodra9ahdumRbFjx47qXSCta99R63qtegup3vzfI5w+vva2t4uiCwVnGxXqbYK+ILK0eacfmrY74t8WtRsIj0mABEiABEiABEiABEiABBYBAffWMb6lGd/dnTx1+63Xrpi+eWDLJGE4QBi7dcax+63Y+rXarcJWSOvuF4C7InZ2bl95rEJa4ru4vYZOozuLaMLb9l3cqu1+t3ctN0WEaqjl8uXLi0OHDtXstI8lCZAACZAACZAACZAACZAACTQIuFkfjhtGnoZg1uHLVNS/7Y6ZN49SwW3btpU3CiGCHcfYtF8HaS11yjaLW7t2bTVttEM0FUU5IBzcSKwojHw2NtoGUxXEdF0xOO7du3eJtbFiwbovClfcZ2MFGwu1bt26st8ytQ7arna2L1rXSFRAjXWRdPranlyqcKjstPp2VD29VFiFtF2Prc+g+tiFG6vfJfzZ2dklOAsk6i5utCUBEiABEiABEiABEiCBySGgl+DuNX9bhI2MTx0gpHW3nNws2kaqCVqndEf5WSG33mbT+H4pK+AmuuhDFm1tkuptUUCkzaaRR2l27Ca7GpG2q522t5YaiQqogy4S+rWtU6nCobLT6tuRQ/9R2t5b2A5i62MXbqy+jaatziy6jRD7SYAESIAESIAESOBYJtA9ffHQsDkAUsxoHmX9raNt13opNp9gJIvCOZToarKhAySXbZFaoUGX51bI1ilqaeSpk2kejlZlkTMtX6Xsi0Xolcgya6tXL336emgHaHMO9Zev/FYoR6ShwdhOAiRAAiRAAiRAAscYgZFk0dmupO2FXTZRe+WYbTWtaLZIbXQUtTTy1KvsxK5eHmlRySnK1c+2LJXQSJiOJDetIrWvh9U8elYq0Zznac9Y6EYCJEACJEACJEACC43AIsqid+/eXT41m+2qEYIQU+HBa0/BwQgLMiTDHgSynjZ4UdA924uDvmxp2WOSNRdm0TUcPCABEiABEiABEiCBTgQmK4vWa1m9Uhx870UF9VpWr211gE6s1BjOKqhtg0qNcpCI68woXSL9jnVxsq44F6ffYvi8Jo8lItIdEWc5hSAIMRVGOeScHMldcwTIjQRIgARIgARIgAQWAYHJyqJd4DaLru6duEZdj/VytKtf1N6KZovUjkhRSyNPnUzzcLQqi5wpPxdtTwbWSYAESIAESIAESOBYJTCSLLr6vGlXajYXhS+yaG0bdHkOIU3JVbBrcDX7mMigSGujmAOKGhiZqsHzNLa6vcceIsrV74096DgSpiPJoqtI7UvYkNMJTHgvOnhmsIMESIAESIAESIAESIAESCBEoPYW0tCsRDOc0GBsJwESIAESIAESIAESIAESIAESmFQCyAiHfGYyOC8Ij0RchbOLW2FXfLKy6FikwQWJdVjBLGeDCmYRQ+TugsRmwz4SIAESIAESIAESIAESIAESGD2B7GmPhnxsCE9WFj0yttkXa/IFlSVLEiABEiABEiABEiABEiABEuhEIHu6g9FVFGXWu5LZha2g1m3Ek5NFa3S2tJF2WnU1tmKoDxYc+epniVCnz5IESIAESIAESIAESIAESIAEJoMAUh2boA1OfVxBFbfCtYQ3hQNEQnb6Eebat4vFHEJCvvaRRFp9v5RvRF/byy+/7GsuQu1eY1+ju1h2kXz2bCMBEiABEiABEiABEiABEiCBBUYglh12zvgwdyuo+ahl0lnUCqqQK9xJ1CfoE66JxpzUOVZqxDXRmAP6YoOqIOw6iYaErWAvUVfYFUR/7y2GorcoHUmABEiABEiABEiABEiABEjg7yNg70IOvgNpxZA/2d0n3ppGpiZhNvOriaYKhBZAhWuiPuPUgVQQGq33omEcu8+MPivoCyzaZhfMt0BRZ3aSAAmQAAmQAAmQAAmQAAmQwGQTQKI2klQHwiMRV+Hs4iqoA1gstYQXBl1WVXNS9dPjLho121ikNcPUA52yCqf6Be1U0DIMGqd0ZIssZTDakAAJkAAJkAAJkAAJkAAJkEArgexpD0ZU0awpEMSseJZETUVDwr2zaJsx6yC2DQN22lQETqhjH4xARbMJ2uiyRKiMskaooixJgARIgARIgARIgARIgARIYDIIILvTtMeXS7U+fexOA4L6xDFyUew4HpRGIjJ3IBzb9pF8u5hv0GibjcgahtqtTbAOdtPT0zUEOB7EFKNBAJHpPlgwOAV2kAAJkAAJkAAJkAAJkAAJkMDfQmBQMuaLGIKaS/n6O7epIByzCFtBjaZVGE6xPZQutgprBL6yV6Q+IbfNCg+KMCSMAdy+QcfZBQdFQ2cSIAESIAESIAESIAESIAESyEIAqU5bulN7Tjo2qgrpt2Jt2bKlNO/1bDRutELQl+xqGunenK0Fp1NzS5+gOiYJq7GWfSL9e5hqxFoqGj1mSQIkQAIkQAIkQAIkQAIkQAILmIBmdFmmoGLImwYLWrHBgq7YEMEqNx0iAjzevD9npI01cMUbBkMarPgQHa+vins72UgCJEACJEACJEACJEACJEACIyWgGcnQLLAKcnEJji+LrgDnqGRfJA1q4Qlr5CxJgARIgARIgARIgARIgARIIIlA9rTHCmZJzV3BwaI+wb6i48uiEaHuSSsbM/IhiNkn97nCyY5thla4zZb9JEACJEACJEACJEACJEACJLBACNhUBxkfjgeF7gpqGtlHOCnh9T5YHZlCkmjEv+qyA9e++LuycCrWwenyHlbfe66fIXetQu2uXfDYXaw+ixQUZwcJkAAJkAAJkAAJkAAJkAAJTA4B5KZ9o6nSSCtgBbtme9BpiFpBHaircE3UJ9hHuBKNCapwrLSzqUThEBO2TjFx9NVE0eAT7iLoFXWFuwrCP7j5Ig4as4MESIAESIAESIAESIAESIAEFhYBe2dy8F1JK4Zcyu6p4rU0MjUha8sCK9FUwdAi2oEqURinClsB3yDVvWh0wjh27xl9bYK+Qao2u2CpC1Q5s0ICJEACJEACJEACJEACJEACC4OApj5ZolWx1CwwOqgVGyxoxbQeHT3SWSW8GpXmnnoc8a11qV+tUaODmNZrBkMOVBDiXaNtHdeKtxp3NVDxrn60JwESIAESIAESIAESIAESIIHhBDQjyZZHWcEsolYQ8x0s6goOEQ1m0V1FW7NoCGIbPH2IuAiyiLrC2URdYRxzIwESIAESIAESIAESIAESIIFjgIBNzpBD4bjPtKqnjyGgTxcjz8SO477CZTCh7C7UHptB0heBpQjbLDpJ1DrEImz0gd309HRtYXA8iClGgQCmqvtgwUbobCABEiABEiABEiABEiABEiCBiSCQkuV1ChSCmlN1cgwZqyD6swhbQR10kLBP0BWGTWhX20bpEx4UqY5ghbMIusIYQNuylNkFs0RFERIgARIgARIgARIgARIgARLIRgBpT5/Up3pO2kaiQvqtWFu2bCm7e92Uxc1XCCJ9tIOgrimle8PWtasdxwTVUIUViy3VplHGhFUwJdLRM3VD1+m57TwmgTCB/wdigVA7yGo0NAAAAABJRU5ErkJggg==) no-repeat top left;width:21px;height:21px}.geSprite-actualsize{background-position:0 0}.geSprite-bold{background-position:0 -46px}.geSprite-bottom{background-position:0 -92px}.geSprite-center{background-position:0 -138px}.geSprite-delete{background-position:0 -184px}.geSprite-fillcolor{background-position:0 -230px}.geSprite-fit{background-position:0 -276px}.geSprite-fontcolor{background-position:0 -322px}.geSprite-gradientcolor{background-position:0 -368px}.geSprite-image{background-position:0 -414px}.geSprite-italic{background-position:0 -460px}.geSprite-left{background-position:0 -506px}.geSprite-middle{background-position:0 -552px}.geSprite-print{background-position:0 -598px}.geSprite-redo{background-position:0 -644px}.geSprite-right{background-position:0 -690px}.geSprite-shadow{background-position:0 -736px}.geSprite-strokecolor{background-position:0 -782px}.geSprite-top{background-position:0 -828px}.geSprite-underline{background-position:0 -874px}.geSprite-undo{background-position:0 -920px}.geSprite-zoomin{background-position:0 -966px}.geSprite-zoomout{background-position:0 -1012px}.geSprite-helbow{background-position:0 -1058px}.geSprite-velbow{background-position:0 -1104px}.geSprite-straight{background-position:0 -1150px}.geSprite-entity{background-position:0 -1196px}.geSprite-segment{background-position:0 -1242px}.geSprite-orthogonal{background-position:0 -1288px}.geSprite-noarrow{background-position:0 -1334px}.geSprite-endclassic{background-position:0 -1380px}.geSprite-endopen{background-position:0 -1426px}.geSprite-endblock{background-position:0 -1472px}.geSprite-endoval{background-position:0 -1518px}.geSprite-enddiamond{background-position:0 -1564px}.geSprite-endthindiamond{background-position:0 -1610px}.geSprite-endclassictrans{background-position:0 -1656px}.geSprite-endblocktrans{background-position:0 -1702px}.geSprite-endovaltrans{background-position:0 -1748px}.geSprite-enddiamondtrans{background-position:0 -1794px}.geSprite-endthindiamondtrans{background-position:0 -1840px}.geSprite-startclassic{background-position:0 -1886px}.geSprite-startopen{background-position:0 -1932px}.geSprite-startblock{background-position:0 -1978px}.geSprite-startoval{background-position:0 -2024px}.geSprite-startdiamond{background-position:0 -2070px}.geSprite-startthindiamond{background-position:0 -2116px}.geSprite-startclassictrans{background-position:0 -2162px}.geSprite-startblocktrans{background-position:0 -2208px}.geSprite-startovaltrans{background-position:0 -2254px}.geSprite-startdiamondtrans{background-position:0 -2300px}.geSprite-startthindiamondtrans{background-position:0 -2346px}.geSprite-copy{background-position:0 -410px}.geSprite-cut{background-position:0 -320px}.geSprite-paste{background-position:0 -367px}.geSprite-duplicate{background-position:0 -736px}.geSprite-save{background-position:0 -782px}.geSprite-publish{background-position:0 -92px}.geBaseButton{padding:10px;border-radius:6px;border:1px solid silver;cursor:pointer;background-color:#ececec;background-image:linear-gradient(#ececec 0,#fcfcfc 100%)}.geBaseButton:hover{background:#ececec}.geBigButton{color:#fff;border:none;padding:10px;font-size:14pt;white-space:nowrap;border-radius:6px;text-shadow:#295989 0 1px 0;background-color:#428bca;background-image:linear-gradient(#4687ce 0,#3068a2 100%);-webkit-box-shadow:rgba(255,255,255,.0980392) 0 1px 0 0 inset,rgba(0,0,0,.2) 0 1px 1px 0;-moz-box-shadow:rgba(255,255,255,.0980392) 0 1px 0 0 inset,rgba(0,0,0,.2) 0 1px 1px 0;box-shadow:rgba(255,255,255,.0980392) 0 1px 0 0 inset,rgba(0,0,0,.2) 0 1px 1px 0}.geBigButton:hover{background-color:#2d6ca2;background-image:linear-gradient(#5a94d3 0,#3673b5 100%)}.geBigButton:active{background-color:#3673b5;background-image:none}@media print{div.geNoPrint{display:none!important}}html div.mxRubberband{border-color:#00d;background:#9cf}td.mxPopupMenuIcon div{width:16px;height:16px}html div.mxPopupMenu{-webkit-box-shadow:2px 2px 3px #d5d5d5;-moz-box-shadow:2px 2px 3px #d5d5d5;box-shadow:2px 2px 3px #d5d5d5;background:#fff;position:absolute;border:3px solid #e7e7e7;padding:3px}html table.mxPopupMenu{border-collapse:collapse;margin:0}html td.mxPopupMenuItem{padding:7px 30px 7px 30px;font-family:Helvetica Neue,Helvetica,Arial Unicode MS,Arial;font-size:10pt}html td.mxPopupMenuIcon{background-color:#fff;padding:0}td.mxPopupMenuIcon .geIcon{padding:2px;padding-bottom:4px;margin:2px;border:1px solid transparent;opacity:.5}td.mxPopupMenuIcon .geIcon:hover{border:1px solid gray;border-radius:2px;opacity:1}html tr.mxPopupMenuItemHover{background-color:#eee;color:#000}table.mxPopupMenu hr{color:#ccc;background-color:#ccc;border:none;height:1px}table.mxPopupMenu tr{font-size:4pt}html td.mxWindowTitle{font-family:Helvetica Neue,Helvetica,Arial Unicode MS,Arial;text-align:left;font-size:12px;color:#707070;padding:4px}div.mxTooltip{-webkit-box-shadow:3px 3px 12px silver;-moz-box-shadow:3px 3px 12px silver;box-shadow:3px 3px 12px silver;background:#ffc;border-style:solid;border-width:1px;border-color:#000;font-family:Arial;font-size:8pt;position:absolute;cursor:default;padding:4px;color:#000}body{font-family:Arial Unicode MS,Arial,Helvetica;font-size:10pt}
\ No newline at end of file
+[data-ng-click],[ng-click],[x-ng-click]{cursor:pointer}.ms-container{width:100%!important}.dark-lime-fg{color:#575b2e!important}.dark-red-fg{color:#9e3333!important}.iron-fg{color:#555865!important}.light-brown-fg{color:#645733!important}.ms-container .ms-list{height:380px!important}.ms-container .ms-selectable li.ms-elem-selectable,.ms-container .ms-selection li.ms-elem-selection{padding:6px 12px!important;height:34px!important}md-input-container:not(.md-input-has-value) input:not(:focus){color:inherit!important}.ms-container .ms-search{height:34px;margin-bottom:5px;border:solid 1px #e5e5e5;background-color:#fff;box-shadow:none;width:100%;padding-left:6px}.ms-container .ms-footer{text-align:center}.no-border{border:none!important}.left .motion-spinner{border-top-color:#00d7cc!important;border-left-color:#00d7cc!important}.right .motion-spinner{border-top-color:#00d7cc!important;border-right-color:#00d7cc!important}.md-option-info-text{font-size:10px}md-pagination-wrapper{width:auto!important}md-autocomplete.no-container-margin md-autocomplete-wrap md-input-container{margin:0!important}md-dialog.report-selection-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}md-dialog.advanced-search-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}.md-dialog-action-center{justify-content:center!important}.flag-24{height:24px}button.auto-width{min-width:auto!important}button.size-8{transform:scale(.8)}md-icon.auto-size{height:auto!important;width:auto!important}md-switch.auto-height{height:auto!important}.hidden{visibility:hidden}.user-profile-section-help{background:#fcf20f0f;border:1px solid rgba(0,0,0,.12);padding:5px}.email-preview-message{display:-webkit-box;margin:0 auto;display:block;height:200px;line-height:1.4;-webkit-line-clamp:10;-webkit-box-orient:vertical;overflow:hidden;text-overflow:ellipsis;word-break:break-all}button.advanced-search.md-accent-bg.md-button.md-default-theme:not([disabled]).md-icon-button:hover{background-color:#0091ea}.blink{animation:blink 2s ease-in infinite}.no-click{pointer-events:none}.spinner-overlay{position:absolute;top:0;right:0;bottom:0;left:0;z-index:2;background:rgba(43,43,43,.5)}ms-quick-filter[disabled]{pointer-events:none;opacity:.7}ms-search-bar[disabled]{pointer-events:none;opacity:.7}@keyframes blink{from,to{opacity:1}50%{opacity:0}}textarea.api-key-area{background:0 0;resize:none}.badge{min-width:20px;height:20px;line-height:20px;padding:0 7px;font-size:11px;font-weight:700;border-radius:20px;transition:opacity .2s ease-in-out .1s}md-tooltip.multiline div.md-content{height:auto!important}.auto-margin{margin:auto}md-menu-item md-menu.no-margin button{display:inline-block;border-radius:0;margin:auto 0;font-size:15px;text-transform:none;font-weight:400;height:100%;padding-left:16px;padding-right:16px;width:100%}md-date-range md-menu span.md-select-value{border-bottom-color:rgba(0,0,0,.12)}.keep-on-top{z-index:9999!important}.margin-auto{margin:auto}.xenialab-violet-light-bg{background-color:#9c4fd3!important}.xenialab-violet-light-fg{color:#9c4fd3!important}.no-margin-top{margin-top:0!important}.no-margin-bottom{margin-bottom:0!important}.disabled-button{display:inline-block;position:relative;cursor:default;min-height:36px;min-width:88px;line-height:36px;vertical-align:middle;align-items:center;text-align:center;border-radius:3px;box-sizing:border-box;user-select:none;outline:0;border:0;padding:0 6px;margin:6px 8px;background:rgba(0,0,0,.12);color:rgba(0,0,0,.38);white-space:nowrap;text-transform:uppercase;font-weight:500;font-size:14px;font-style:inherit;font-variant:inherit;font-family:inherit;text-decoration:none;overflow:hidden}.word-break-all{word-break:break-all}.mw-150{max-width:150px!important}@supports (-ms-ime-align:auto){md-tabs{display:inline!important}}@supports (-ms-accelerator:true){md-tabs{display:inline!important}}@supports (-moz-transform:translate(0,0)){md-tabs{display:inline!important}}body[dir=rtl] table.md-table td.md-cell,body[dir=rtl] table.md-table th.md-column{text-align:right!important}body[dir=rtl] table.md-table td.md-cell md-checkbox,body[dir=rtl] table.md-table th.md-column md-checkbox{margin-right:12px!important}body[dir=rtl] .ms-navigation .ms-navigation-node .ms-navigation-item>.ms-navigation-button .icon{margin:0 0 0 16px!important}body[dir=rtl] .ms-navigation .ms-navigation-node .ms-navigation-item>a.ms-navigation-button{padding-right:45px}body[dir=rtl] .md-table-pagination>.buttons{direction:ltr}body[dir=rtl] .md-table-pagination>.buttons>.label{direction:rtl}body[dir=rtl] .header .logo .logo-icon{margin:5px 0 0 15px!important}body[dir=rtl] md-switch .md-container{margin-right:inherit!important}#toasty.toasty-position-top-right{top:64px}.preview_cancel{padding:5px;float:left;background-color:red}.preview_open{padding:5px;float:right;background-color:green}.hover-token{cursor:pointer}body,html{height:100%;position:relative}body{margin:0;padding:0}[tabindex='-1']:focus{outline:0}.inset{padding:10px}a.md-no-style,button.md-no-style{font-weight:400;background-color:inherit;text-align:left;border:none;padding:0;margin:0}button,input,select,textarea{vertical-align:baseline}button,html input[type=button],input[type=reset],input[type=submit]{cursor:pointer;-webkit-appearance:button}button[disabled],html input[type=button][disabled],input[type=reset][disabled],input[type=submit][disabled]{cursor:default}textarea{vertical-align:top;overflow:auto}input[type=search]{-webkit-appearance:textfield;box-sizing:content-box;-webkit-box-sizing:content-box}input[type=search]::-webkit-search-cancel-button,input[type=search]::-webkit-search-decoration{-webkit-appearance:none}input:-webkit-autofill{text-shadow:none}.md-visually-hidden{border:0;clip:rect(0 0 0 0);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;text-transform:none;width:1px}.md-shadow{position:absolute;top:0;left:0;bottom:0;right:0;border-radius:inherit;pointer-events:none}.md-shadow-bottom-z-1{box-shadow:0 2px 5px 0 rgba(0,0,0,.26)}.md-shadow-bottom-z-2{box-shadow:0 4px 8px 0 rgba(0,0,0,.4)}.md-shadow-animated.md-shadow{transition:box-shadow .28s cubic-bezier(.4,0,.2,1)}.md-ripple-container{pointer-events:none;position:absolute;overflow:hidden;left:0;top:0;width:100%;height:100%;transition:all .55s cubic-bezier(.25,.8,.25,1)}.md-ripple{position:absolute;transform:translate(-50%,-50%) scale(0);transform-origin:50% 50%;opacity:0;border-radius:50%}.md-ripple.md-ripple-placed{transition:margin .9s cubic-bezier(.25,.8,.25,1),border .9s cubic-bezier(.25,.8,.25,1),width .9s cubic-bezier(.25,.8,.25,1),height .9s cubic-bezier(.25,.8,.25,1),opacity .9s cubic-bezier(.25,.8,.25,1),transform .9s cubic-bezier(.25,.8,.25,1)}.md-ripple.md-ripple-scaled{transform:translate(-50%,-50%) scale(1)}.md-ripple.md-ripple-active,.md-ripple.md-ripple-full,.md-ripple.md-ripple-visible{opacity:.2}.md-ripple.md-ripple-remove{animation:md-remove-ripple .9s cubic-bezier(.25,.8,.25,1)}@keyframes md-remove-ripple{0%{opacity:.15}100%{opacity:0}}.md-padding{padding:8px}.md-margin{margin:8px}.md-scroll-mask{position:absolute;background-color:transparent;top:0;right:0;bottom:0;left:0;z-index:50}.md-scroll-mask>.md-scroll-mask-bar{display:block;position:absolute;background-color:#fafafa;right:0;top:0;bottom:0;z-index:65;box-shadow:inset 0 0 1px rgba(0,0,0,.3)}.md-no-momentum{-webkit-overflow-scrolling:auto}.md-no-flicker{-webkit-filter:blur(0)}@media (min-width:960px){.md-padding{padding:16px}}body[dir=ltr],body[dir=rtl],html[dir=ltr],html[dir=rtl]{unicode-bidi:embed}bdo[dir=rtl]{direction:rtl;unicode-bidi:bidi-override}bdo[dir=ltr]{direction:ltr;unicode-bidi:bidi-override}body,html{-webkit-tap-highlight-color:transparent;-webkit-touch-callout:none;min-height:100%;-webkit-text-size-adjust:100%;-ms-text-size-adjust:100%;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.md-display-4{font-size:112px;font-weight:300;letter-spacing:-.010em;line-height:112px}.md-display-3{font-size:56px;font-weight:400;letter-spacing:-.005em;line-height:56px}.md-display-2{font-size:45px;font-weight:400;line-height:64px}.md-display-1{font-size:34px;font-weight:400;line-height:40px}.md-headline{font-size:24px;font-weight:400;line-height:32px}.md-title{font-size:20px;font-weight:500;letter-spacing:.005em}.md-subhead{font-size:16px;font-weight:400;letter-spacing:.010em;line-height:24px}.md-body-1{font-size:14px;font-weight:400;letter-spacing:.010em;line-height:20px}.md-body-2{font-size:14px;font-weight:500;letter-spacing:.010em;line-height:24px}.md-caption{font-size:12px;letter-spacing:.020em}.md-button{letter-spacing:.010em}button,html,input,select,textarea{font-family:Roboto,"Helvetica Neue",sans-serif}button,input,select,textarea{font-size:100%}@keyframes md-autocomplete-list-out{0%{animation-timing-function:linear}50%{opacity:0;height:40px;animation-timing-function:ease-in}100%{height:0;opacity:0}}@keyframes md-autocomplete-list-in{0%{opacity:0;height:0;animation-timing-function:ease-out}50%{opacity:0;height:40px}100%{opacity:1;height:40px}}md-autocomplete{border-radius:2px;display:block;height:40px;position:relative;overflow:visible;min-width:190px}md-autocomplete[disabled] input{cursor:default}md-autocomplete[md-floating-label]{border-radius:0;background:0 0;height:auto}md-autocomplete[md-floating-label] md-input-container{padding-bottom:0}md-autocomplete[md-floating-label] md-autocomplete-wrap{height:auto}md-autocomplete[md-floating-label] button{position:absolute;top:auto;bottom:0;right:0;width:30px;height:30px}md-autocomplete md-autocomplete-wrap{display:flex;flex-direction:row;box-sizing:border-box;position:relative;overflow:visible;height:40px}md-autocomplete md-autocomplete-wrap.md-menu-showing{z-index:51}md-autocomplete md-autocomplete-wrap input,md-autocomplete md-autocomplete-wrap md-input-container{flex:1 1 0%;box-sizing:border-box;min-width:0}md-autocomplete md-autocomplete-wrap md-progress-linear{position:absolute;bottom:-2px;left:0}md-autocomplete md-autocomplete-wrap md-progress-linear.md-inline{bottom:40px;right:2px;left:2px;width:auto}md-autocomplete md-autocomplete-wrap md-progress-linear .md-mode-indeterminate{position:absolute;top:0;left:0;width:100%;height:3px;transition:none}md-autocomplete md-autocomplete-wrap md-progress-linear .md-mode-indeterminate .md-container{transition:none;height:3px}md-autocomplete md-autocomplete-wrap md-progress-linear .md-mode-indeterminate.ng-enter{transition:opacity .15s linear}md-autocomplete md-autocomplete-wrap md-progress-linear .md-mode-indeterminate.ng-enter.ng-enter-active{opacity:1}md-autocomplete md-autocomplete-wrap md-progress-linear .md-mode-indeterminate.ng-leave{transition:opacity .15s linear}md-autocomplete md-autocomplete-wrap md-progress-linear .md-mode-indeterminate.ng-leave.ng-leave-active{opacity:0}md-autocomplete input:not(.md-input){font-size:14px;box-sizing:border-box;border:none;box-shadow:none;outline:0;background:0 0;width:100%;padding:0 15px;line-height:40px;height:40px}md-autocomplete input:not(.md-input)::-ms-clear{display:none}md-autocomplete button{position:relative;line-height:20px;text-align:center;width:30px;height:30px;cursor:pointer;border:none;border-radius:50%;padding:0;font-size:12px;background:0 0;margin:auto 5px}md-autocomplete button:after{content:'';position:absolute;top:-6px;right:-6px;bottom:-6px;left:-6px;border-radius:50%;transform:scale(0);opacity:0;transition:all .4s cubic-bezier(.25,.8,.25,1)}md-autocomplete button:focus{outline:0}md-autocomplete button:focus:after{transform:scale(1);opacity:1}md-autocomplete button md-icon{position:absolute;top:50%;left:50%;transform:translate3d(-50%,-50%,0) scale(.9)}md-autocomplete button md-icon path{stroke-width:0}md-autocomplete button.ng-enter{transform:scale(0);transition:transform .15s ease-out}md-autocomplete button.ng-enter.ng-enter-active{transform:scale(1)}md-autocomplete button.ng-leave{transition:transform .15s ease-out}md-autocomplete button.ng-leave.ng-leave-active{transform:scale(0)}@media screen and (-ms-high-contrast:active){md-autocomplete input{border:1px solid #fff}md-autocomplete li:focus{color:#fff}}.md-virtual-repeat-container.md-autocomplete-suggestions-container{position:absolute;box-shadow:0 2px 5px rgba(0,0,0,.25);height:225.5px;max-height:225.5px;z-index:100}.md-virtual-repeat-container.md-not-found{height:48px}.md-autocomplete-suggestions{margin:0;list-style:none;padding:0}.md-autocomplete-suggestions li{font-size:14px;overflow:hidden;padding:0 15px;line-height:48px;height:48px;transition:background .15s linear;margin:0;white-space:nowrap;text-overflow:ellipsis}.md-autocomplete-suggestions li:focus{outline:0}.md-autocomplete-suggestions li:not(.md-not-found-wrapper){cursor:pointer}@media screen and (-ms-high-contrast:active){.md-autocomplete-suggestions,md-autocomplete{border:1px solid #fff}}md-backdrop{transition:opacity 450ms;position:absolute;top:0;bottom:0;left:0;right:0;z-index:50}md-backdrop.md-menu-backdrop{position:fixed!important;z-index:99}md-backdrop.md-select-backdrop{z-index:81;transition-duration:0}md-backdrop.md-dialog-backdrop{z-index:79}md-backdrop.md-bottom-sheet-backdrop{z-index:69}md-backdrop.md-sidenav-backdrop{z-index:59}md-backdrop.md-click-catcher{position:absolute}md-backdrop.md-opaque{opacity:.48}md-backdrop.md-opaque.ng-enter{opacity:0}md-backdrop.md-opaque.ng-enter.md-opaque.ng-enter-active{opacity:.48}md-backdrop.md-opaque.ng-leave{opacity:.48;transition:opacity .4s}md-backdrop.md-opaque.ng-leave.md-opaque.ng-leave-active{opacity:0}md-bottom-sheet{position:absolute;left:0;right:0;bottom:0;padding:8px 16px 88px 16px;z-index:70;border-top-width:1px;border-top-style:solid;transform:translate3d(0,80px,0);transition:all .4s cubic-bezier(.25,.8,.25,1);transition-property:transform}md-bottom-sheet.md-has-header{padding-top:0}md-bottom-sheet.ng-enter{opacity:0;transform:translate3d(0,100%,0)}md-bottom-sheet.ng-enter-active{opacity:1;display:block;transform:translate3d(0,80px,0)!important}md-bottom-sheet.ng-leave-active{transform:translate3d(0,100%,0)!important;transition:all .3s cubic-bezier(.55,0,.55,.2)}md-bottom-sheet .md-subheader{background-color:transparent;font-family:Roboto,"Helvetica Neue",sans-serif;line-height:56px;padding:0;white-space:nowrap}md-bottom-sheet md-inline-icon{display:inline-block;height:24px;width:24px;fill:#444}md-bottom-sheet md-list-item{display:flex;outline:0}md-bottom-sheet md-list-item:hover{cursor:pointer}md-bottom-sheet.md-list md-list-item{padding:0;align-items:center;height:48px}md-bottom-sheet.md-grid{padding-left:24px;padding-right:24px;padding-top:0}md-bottom-sheet.md-grid md-list{display:flex;flex-direction:row;flex-wrap:wrap;transition:all .5s;align-items:center}md-bottom-sheet.md-grid md-list-item{flex-direction:column;align-items:center;transition:all .5s;height:96px;margin-top:8px;margin-bottom:8px}@media (max-width:960px){md-bottom-sheet.md-grid md-list-item{flex:1 1 33.3333333333%;max-width:33.3333333333%}md-bottom-sheet.md-grid md-list-item:nth-of-type(3n+1){align-items:flex-start}md-bottom-sheet.md-grid md-list-item:nth-of-type(3n){align-items:flex-end}}@media (min-width:960px) and (max-width:1279px){md-bottom-sheet.md-grid md-list-item{flex:1 1 25%;max-width:25%}}@media (min-width:1280px) and (max-width:1919px){md-bottom-sheet.md-grid md-list-item{flex:1 1 16.6666666667%;max-width:16.6666666667%}}@media (min-width:1920px){md-bottom-sheet.md-grid md-list-item{flex:1 1 14.2857142857%;max-width:14.2857142857%}}md-bottom-sheet.md-grid md-list-item::before{display:none}md-bottom-sheet.md-grid md-list-item .md-list-item-content{display:flex;flex-direction:column;align-items:center;width:48px;padding-bottom:16px}md-bottom-sheet.md-grid md-list-item .md-grid-item-content{border:1px solid transparent;display:flex;flex-direction:column;align-items:center;width:80px}md-bottom-sheet.md-grid md-list-item .md-grid-text{font-weight:400;line-height:16px;font-size:13px;margin:0;white-space:nowrap;width:64px;text-align:center;text-transform:none;padding-top:8px}@media screen and (-ms-high-contrast:active){md-bottom-sheet{border:1px solid #fff}}button.md-button::-moz-focus-inner{border:0}.md-button{display:inline-block;position:relative;cursor:pointer;min-height:36px;min-width:88px;line-height:36px;vertical-align:middle;align-items:center;text-align:center;border-radius:3px;box-sizing:border-box;user-select:none;outline:0;border:0;padding:0 6px;margin:6px 8px;background:0 0;color:currentColor;white-space:nowrap;text-transform:uppercase;font-weight:500;font-size:14px;font-style:inherit;font-variant:inherit;font-family:inherit;text-decoration:none;overflow:hidden;transition:box-shadow .4s cubic-bezier(.25,.8,.25,1),background-color .4s cubic-bezier(.25,.8,.25,1)}.md-button:focus{outline:0}.md-button:focus,.md-button:hover{text-decoration:none}.md-button.ng-hide,.md-button.ng-leave{transition:none}.md-button.md-cornered{border-radius:0}.md-button.md-icon{padding:0;background:0 0}.md-button.md-raised:not([disabled]){box-shadow:0 2px 5px 0 rgba(0,0,0,.26)}.md-button.md-icon-button{margin:0 6px;height:40px;min-width:0;line-height:24px;padding:8px;width:40px;border-radius:50%}.md-button.md-icon-button .md-ripple-container{border-radius:50%;background-clip:padding-box;overflow:hidden;-webkit-mask-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAIAAACQd1PeAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAA5JREFUeNpiYGBgAAgwAAAEAAGbA+oJAAAAAElFTkSuQmCC)}.md-button.md-fab{z-index:20;line-height:56px;min-width:0;width:56px;height:56px;vertical-align:middle;box-shadow:0 2px 5px 0 rgba(0,0,0,.26);border-radius:50%;background-clip:padding-box;overflow:hidden;transition:all .3s cubic-bezier(.55,0,.55,.2);transition-property:background-color,box-shadow,transform}.md-button.md-fab.md-fab-bottom-right{top:auto;right:20px;bottom:20px;left:auto;position:absolute}.md-button.md-fab.md-fab-bottom-left{top:auto;right:auto;bottom:20px;left:20px;position:absolute}.md-button.md-fab.md-fab-top-right{top:20px;right:20px;bottom:auto;left:auto;position:absolute}.md-button.md-fab.md-fab-top-left{top:20px;right:auto;bottom:auto;left:20px;position:absolute}.md-button.md-fab .md-ripple-container{border-radius:50%;background-clip:padding-box;overflow:hidden;-webkit-mask-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAIAAACQd1PeAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAA5JREFUeNpiYGBgAAgwAAAEAAGbA+oJAAAAAElFTkSuQmCC)}.md-button.md-fab.md-mini{line-height:40px;width:40px;height:40px}.md-button.md-fab.ng-hide,.md-button.md-fab.ng-leave{transition:none}.md-button:not([disabled]).md-fab.md-focused,.md-button:not([disabled]).md-raised.md-focused{box-shadow:0 2px 5px 0 rgba(0,0,0,.26)}.md-button:not([disabled]).md-fab:active,.md-button:not([disabled]).md-raised:active{box-shadow:0 4px 8px 0 rgba(0,0,0,.4)}.md-button .md-ripple-container{border-radius:3px;background-clip:padding-box;overflow:hidden;-webkit-mask-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAIAAACQd1PeAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAA5JREFUeNpiYGBgAAgwAAAEAAGbA+oJAAAAAElFTkSuQmCC)}.md-button.md-icon-button md-icon,button.md-button.md-fab md-icon{display:block}.md-toast-open-top .md-button.md-fab-top-left,.md-toast-open-top .md-button.md-fab-top-right{transition:all .4s cubic-bezier(.25,.8,.25,1);transform:translate3d(0,42px,0)}.md-toast-open-top .md-button.md-fab-top-left:not([disabled]).md-focused,.md-toast-open-top .md-button.md-fab-top-left:not([disabled]):hover,.md-toast-open-top .md-button.md-fab-top-right:not([disabled]).md-focused,.md-toast-open-top .md-button.md-fab-top-right:not([disabled]):hover{transform:translate3d(0,41px,0)}.md-toast-open-bottom .md-button.md-fab-bottom-left,.md-toast-open-bottom .md-button.md-fab-bottom-right{transition:all .4s cubic-bezier(.25,.8,.25,1);transform:translate3d(0,-42px,0)}.md-toast-open-bottom .md-button.md-fab-bottom-left:not([disabled]).md-focused,.md-toast-open-bottom .md-button.md-fab-bottom-left:not([disabled]):hover,.md-toast-open-bottom .md-button.md-fab-bottom-right:not([disabled]).md-focused,.md-toast-open-bottom .md-button.md-fab-bottom-right:not([disabled]):hover{transform:translate3d(0,-43px,0)}.md-button-group{display:flex;flex:1;width:100%}.md-button-group>.md-button{flex:1;display:block;overflow:hidden;width:0;border-width:1px 0 1px 1px;border-radius:0;text-align:center;text-overflow:ellipsis;white-space:nowrap}.md-button-group>.md-button:first-child{border-radius:2px 0 0 2px}.md-button-group>.md-button:last-child{border-right-width:1px;border-radius:0 2px 2px 0}@media screen and (-ms-high-contrast:active){.md-button.md-fab,.md-button.md-raised{border:1px solid #fff}}md-card{box-sizing:border-box;display:flex;flex-direction:column;margin:8px;box-shadow:0 1px 3px 0 rgba(0,0,0,.2),0 1px 1px 0 rgba(0,0,0,.14),0 2px 1px -1px rgba(0,0,0,.12)}md-card md-card-header{padding:16px;display:flex;flex-direction:row}md-card md-card-header:first-child md-card-avatar{margin-right:12px}[dir=rtl] md-card md-card-header:first-child md-card-avatar{margin-right:auto;margin-left:12px}md-card md-card-header:last-child md-card-avatar{margin-left:12px}[dir=rtl] md-card md-card-header:last-child md-card-avatar{margin-left:auto;margin-right:12px}md-card md-card-header md-card-avatar{width:40px;height:40px}md-card md-card-header md-card-avatar .md-user-avatar,md-card md-card-header md-card-avatar md-icon{border-radius:50%}md-card md-card-header md-card-avatar md-icon{padding:8px}md-card md-card-header md-card-avatar+md-card-header-text{max-height:40px}md-card md-card-header md-card-avatar+md-card-header-text .md-title{font-size:14px}md-card md-card-header md-card-header-text{display:flex;flex:1;flex-direction:column}md-card md-card-header md-card-header-text .md-subhead{font-size:14px}md-card md-card-title-media img,md-card>img,md-card>md-card-header img{box-sizing:border-box;display:flex;flex:0 0 auto;width:100%;height:auto}md-card md-card-title{padding:24px 16px 16px;display:flex;flex:1 1 auto;flex-direction:row}md-card md-card-title+md-card-content{padding-top:0}md-card md-card-title md-card-title-text{flex:1;flex-direction:column;display:flex}md-card md-card-title md-card-title-text .md-subhead{padding-top:0;font-size:14px}md-card md-card-title md-card-title-text:only-child .md-subhead{padding-top:12px}md-card md-card-title md-card-title-media{margin-top:-8px}md-card md-card-title md-card-title-media .md-media-sm{height:80px;width:80px}md-card md-card-title md-card-title-media .md-media-md{height:112px;width:112px}md-card md-card-title md-card-title-media .md-media-lg{height:152px;width:152px}md-card md-card-content{display:block;padding:16px}md-card md-card-content>p:first-child{margin-top:0}md-card md-card-content>p:last-child{margin-bottom:0}md-card md-card-content .md-media-xl{height:240px;width:240px}md-card .md-actions,md-card md-card-actions{margin:8px}md-card .md-actions.layout-column .md-button:not(.md-icon-button),md-card md-card-actions.layout-column .md-button:not(.md-icon-button){margin:2px 0}md-card .md-actions.layout-column .md-button:not(.md-icon-button):first-of-type,md-card md-card-actions.layout-column .md-button:not(.md-icon-button):first-of-type{margin-top:0}md-card .md-actions.layout-column .md-button:not(.md-icon-button):last-of-type,md-card md-card-actions.layout-column .md-button:not(.md-icon-button):last-of-type{margin-bottom:0}md-card .md-actions.layout-column .md-button.md-icon-button,md-card md-card-actions.layout-column .md-button.md-icon-button{margin-top:6px;margin-bottom:6px}md-card .md-actions md-card-icon-actions,md-card md-card-actions md-card-icon-actions{flex:1;justify-content:flex-start;display:flex;flex-direction:row}md-card .md-actions:not(.layout-column) .md-button:not(.md-icon-button),md-card md-card-actions:not(.layout-column) .md-button:not(.md-icon-button){margin:0 4px}md-card .md-actions:not(.layout-column) .md-button:not(.md-icon-button):first-of-type,md-card md-card-actions:not(.layout-column) .md-button:not(.md-icon-button):first-of-type{margin-left:0}[dir=rtl] md-card .md-actions:not(.layout-column) .md-button:not(.md-icon-button):first-of-type,[dir=rtl] md-card md-card-actions:not(.layout-column) .md-button:not(.md-icon-button):first-of-type{margin-left:auto;margin-right:0}md-card .md-actions:not(.layout-column) .md-button:not(.md-icon-button):last-of-type,md-card md-card-actions:not(.layout-column) .md-button:not(.md-icon-button):last-of-type{margin-right:0}[dir=rtl] md-card .md-actions:not(.layout-column) .md-button:not(.md-icon-button):last-of-type,[dir=rtl] md-card md-card-actions:not(.layout-column) .md-button:not(.md-icon-button):last-of-type{margin-right:auto;margin-left:0}md-card .md-actions:not(.layout-column) .md-button.md-icon-button,md-card md-card-actions:not(.layout-column) .md-button.md-icon-button{margin-left:6px;margin-right:6px}md-card .md-actions:not(.layout-column) .md-button.md-icon-button:first-of-type,md-card md-card-actions:not(.layout-column) .md-button.md-icon-button:first-of-type{margin-left:12px}[dir=rtl] md-card .md-actions:not(.layout-column) .md-button.md-icon-button:first-of-type,[dir=rtl] md-card md-card-actions:not(.layout-column) .md-button.md-icon-button:first-of-type{margin-left:auto;margin-right:12px}md-card .md-actions:not(.layout-column) .md-button.md-icon-button:last-of-type,md-card md-card-actions:not(.layout-column) .md-button.md-icon-button:last-of-type{margin-right:12px}[dir=rtl] md-card .md-actions:not(.layout-column) .md-button.md-icon-button:last-of-type,[dir=rtl] md-card md-card-actions:not(.layout-column) .md-button.md-icon-button:last-of-type{margin-right:auto;margin-left:12px}md-card .md-actions:not(.layout-column) .md-button+md-card-icon-actions,md-card md-card-actions:not(.layout-column) .md-button+md-card-icon-actions{flex:1;justify-content:flex-end;display:flex;flex-direction:row}md-card md-card-footer{margin-top:auto;padding:16px}@media screen and (-ms-high-contrast:active){md-card{border:1px solid #fff}}.md-image-no-fill>img{width:auto;height:auto}.md-contact-chips .md-chips md-chip{padding:0 25px 0 0}[dir=rtl] .md-contact-chips .md-chips md-chip{padding:0 0 0 25px}.md-contact-chips .md-chips md-chip .md-contact-avatar{float:left}[dir=rtl] .md-contact-chips .md-chips md-chip .md-contact-avatar{float:right}.md-contact-chips .md-chips md-chip .md-contact-avatar img{height:32px;border-radius:16px}.md-contact-chips .md-chips md-chip .md-contact-name{display:inline-block;height:32px;margin-left:8px}[dir=rtl] .md-contact-chips .md-chips md-chip .md-contact-name{margin-left:auto;margin-right:8px}.md-contact-suggestion{height:56px}.md-contact-suggestion img{height:40px;border-radius:20px;margin-top:8px}.md-contact-suggestion .md-contact-name{margin-left:8px;width:120px}[dir=rtl] .md-contact-suggestion .md-contact-name{margin-left:auto;margin-right:8px}.md-contact-suggestion .md-contact-email,.md-contact-suggestion .md-contact-name{display:inline-block;overflow:hidden;text-overflow:ellipsis}.md-contact-chips-suggestions li{height:100%}.md-chips{display:block;font-family:Roboto,"Helvetica Neue",sans-serif;font-size:16px;padding:0 0 8px 3px;vertical-align:middle}.md-chips:after{content:'';display:table;clear:both}[dir=rtl] .md-chips{padding:0 3px 8px 0}.md-chips.md-readonly .md-chip-input-container{min-height:32px}.md-chips:not(.md-readonly){cursor:text}.md-chips.md-removable md-chip{padding-right:22px}[dir=rtl] .md-chips.md-removable md-chip{padding-right:0;padding-left:22px}.md-chips.md-removable md-chip .md-chip-content{padding-right:4px}[dir=rtl] .md-chips.md-removable md-chip .md-chip-content{padding-right:0;padding-left:4px}.md-chips md-chip{cursor:default;border-radius:16px;display:block;height:32px;line-height:32px;margin:8px 8px 0 0;padding:0 12px 0 12px;float:left;box-sizing:border-box;max-width:100%;position:relative}[dir=rtl] .md-chips md-chip{margin:8px 0 0 8px}[dir=rtl] .md-chips md-chip{float:right}.md-chips md-chip .md-chip-content{display:block;float:left;white-space:nowrap;max-width:100%;overflow:hidden;text-overflow:ellipsis}[dir=rtl] .md-chips md-chip .md-chip-content{float:right}.md-chips md-chip .md-chip-content:focus{outline:0}.md-chips md-chip._md-chip-content-edit-is-enabled{-webkit-user-select:none;-moz-user-select:none;-khtml-user-select:none;-ms-user-select:none}.md-chips md-chip .md-chip-remove-container{position:absolute;right:0;line-height:22px}[dir=rtl] .md-chips md-chip .md-chip-remove-container{right:auto;left:0}.md-chips md-chip .md-chip-remove{text-align:center;width:32px;height:32px;min-width:0;padding:0;background:0 0;border:none;box-shadow:none;margin:0;position:relative}.md-chips md-chip .md-chip-remove md-icon{height:18px;width:18px;position:absolute;top:50%;left:50%;transform:translate3d(-50%,-50%,0)}.md-chips .md-chip-input-container{display:block;line-height:32px;margin:8px 8px 0 0;padding:0;float:left}[dir=rtl] .md-chips .md-chip-input-container{margin:8px 0 0 8px}[dir=rtl] .md-chips .md-chip-input-container{float:right}.md-chips .md-chip-input-container input:not([type]),.md-chips .md-chip-input-container input[type=email],.md-chips .md-chip-input-container input[type=number],.md-chips .md-chip-input-container input[type=tel],.md-chips .md-chip-input-container input[type=text],.md-chips .md-chip-input-container input[type=url]{border:0;height:32px;line-height:32px;padding:0}.md-chips .md-chip-input-container input:not([type]):focus,.md-chips .md-chip-input-container input[type=email]:focus,.md-chips .md-chip-input-container input[type=number]:focus,.md-chips .md-chip-input-container input[type=tel]:focus,.md-chips .md-chip-input-container input[type=text]:focus,.md-chips .md-chip-input-container input[type=url]:focus{outline:0}.md-chips .md-chip-input-container md-autocomplete,.md-chips .md-chip-input-container md-autocomplete-wrap{background:0 0;height:32px}.md-chips .md-chip-input-container md-autocomplete md-autocomplete-wrap{box-shadow:none}.md-chips .md-chip-input-container md-autocomplete input{position:relative}.md-chips .md-chip-input-container input{border:0;height:32px;line-height:32px;padding:0}.md-chips .md-chip-input-container input:focus{outline:0}.md-chips .md-chip-input-container md-autocomplete,.md-chips .md-chip-input-container md-autocomplete-wrap{height:32px}.md-chips .md-chip-input-container md-autocomplete{box-shadow:none}.md-chips .md-chip-input-container md-autocomplete input{position:relative}.md-chips .md-chip-input-container:not(:first-child){margin:8px 8px 0 0}[dir=rtl] .md-chips .md-chip-input-container:not(:first-child){margin:8px 0 0 8px}.md-chips .md-chip-input-container input{background:0 0;border-width:0}.md-chips md-autocomplete button{display:none}@media screen and (-ms-high-contrast:active){.md-chip-input-container,md-chip{border:1px solid #fff}.md-chip-input-container md-autocomplete{border:none}}.md-inline-form md-checkbox{margin:19px 0 18px}md-checkbox{box-sizing:border-box;display:inline-block;margin-bottom:16px;white-space:nowrap;cursor:pointer;outline:0;user-select:none;position:relative;min-width:20px;min-height:20px;margin-left:0;margin-right:16px}[dir=rtl] md-checkbox{margin-left:16px}[dir=rtl] md-checkbox{margin-right:0}md-checkbox:last-of-type{margin-left:0;margin-right:0}md-checkbox.md-focused:not([disabled]) .md-container:before{left:-8px;top:-8px;right:-8px;bottom:-8px}md-checkbox.md-focused:not([disabled]):not(.md-checked) .md-container:before{background-color:rgba(0,0,0,.12)}md-checkbox.md-align-top-left>div.md-container{top:12px}md-checkbox .md-container{position:absolute;top:50%;transform:translateY(-50%);box-sizing:border-box;display:inline-block;width:20px;height:20px;left:0;right:auto}[dir=rtl] md-checkbox .md-container{left:auto}[dir=rtl] md-checkbox .md-container{right:0}md-checkbox .md-container:before{box-sizing:border-box;background-color:transparent;border-radius:50%;content:'';position:absolute;display:block;height:auto;left:0;top:0;right:0;bottom:0;transition:all .5s;width:auto}md-checkbox .md-container:after{box-sizing:border-box;content:'';position:absolute;top:-10px;right:-10px;bottom:-10px;left:-10px}md-checkbox .md-container .md-ripple-container{position:absolute;display:block;width:auto;height:auto;left:-15px;top:-15px;right:-15px;bottom:-15px}md-checkbox .md-icon{box-sizing:border-box;transition:240ms;position:absolute;top:0;left:0;width:20px;height:20px;border-width:2px;border-style:solid;border-radius:2px}md-checkbox.md-checked .md-icon{border-color:transparent}md-checkbox.md-checked .md-icon:after{box-sizing:border-box;transform:rotate(45deg);position:absolute;left:4.6666666667px;top:.2222222222px;display:table;width:6.6666666667px;height:13.3333333333px;border-width:2px;border-style:solid;border-top:0;border-left:0;content:''}md-checkbox[disabled]{cursor:default}md-checkbox.md-indeterminate .md-icon:after{box-sizing:border-box;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);display:table;width:12px;height:2px;border-width:2px;border-style:solid;border-top:0;border-left:0;content:''}md-checkbox .md-label{box-sizing:border-box;position:relative;display:inline-block;vertical-align:middle;white-space:normal;user-select:text;margin-left:30px;margin-right:0}[dir=rtl] md-checkbox .md-label{margin-left:0}[dir=rtl] md-checkbox .md-label{margin-right:30px}md-content{display:block;position:relative;overflow:auto;-webkit-overflow-scrolling:touch}md-content[md-scroll-y]{overflow-y:auto;overflow-x:hidden}md-content[md-scroll-x]{overflow-x:auto;overflow-y:hidden}@media print{md-content{overflow:visible!important}}md-calendar{font-size:13px;user-select:none}.md-calendar-scroll-mask{display:inline-block;overflow:hidden;height:308px}.md-calendar-scroll-mask .md-virtual-repeat-scroller{overflow-y:scroll;-webkit-overflow-scrolling:touch}.md-calendar-scroll-mask .md-virtual-repeat-scroller::-webkit-scrollbar{display:none}.md-calendar-scroll-mask .md-virtual-repeat-offsetter{width:100%}.md-calendar-scroll-container{box-shadow:inset -3px 3px 6px rgba(0,0,0,.2);display:inline-block;height:308px;width:346px}.md-calendar-date{height:44px;width:44px;text-align:center;padding:0;border:none;box-sizing:content-box}.md-calendar-date:first-child{padding-left:16px}[dir=rtl] .md-calendar-date:first-child{padding-left:0;padding-right:16px}.md-calendar-date:last-child{padding-right:16px}[dir=rtl] .md-calendar-date:last-child{padding-right:0;padding-left:16px}.md-calendar-date.md-calendar-date-disabled{cursor:default}.md-calendar-date-selection-indicator{transition:background-color,color .4s cubic-bezier(.25,.8,.25,1);border-radius:50%;display:inline-block;width:40px;height:40px;line-height:40px}.md-calendar-date:not(.md-disabled) .md-calendar-date-selection-indicator{cursor:pointer}.md-calendar-month-label{height:44px;font-size:14px;font-weight:500;padding:0 0 0 24px}[dir=rtl] .md-calendar-month-label{padding:0 24px 0 0}md-calendar-month .md-calendar-month-label:not(.md-calendar-month-label-disabled){cursor:pointer}.md-calendar-month-label md-icon{transform:rotate(180deg)}[dir=rtl] .md-calendar-month-label md-icon{transform:none}.md-calendar-month-label span{vertical-align:middle}.md-calendar-day-header{table-layout:fixed;border-spacing:0;border-collapse:collapse}.md-calendar-day-header th{height:40px;width:44px;text-align:center;padding:0;border:none;box-sizing:content-box;font-weight:400}.md-calendar-day-header th:first-child{padding-left:16px}[dir=rtl] .md-calendar-day-header th:first-child{padding-left:0;padding-right:16px}.md-calendar-day-header th:last-child{padding-right:16px}[dir=rtl] .md-calendar-day-header th:last-child{padding-right:0;padding-left:16px}.md-calendar{table-layout:fixed;border-spacing:0;border-collapse:collapse}.md-calendar tr:last-child td{border-bottom-width:1px;border-bottom-style:solid}.md-calendar:first-child{border-top:1px solid transparent}.md-calendar tbody,.md-calendar td,.md-calendar tr{vertical-align:middle;box-sizing:content-box}md-datepicker{white-space:nowrap;overflow:hidden;padding-right:18px;margin-right:-18px;vertical-align:middle}[dir=rtl] md-datepicker{padding-right:0;padding-left:18px}[dir=rtl] md-datepicker{margin-right:auto;margin-left:-18px}.md-inline-form md-datepicker{margin-top:12px}.md-datepicker-button{display:inline-block;box-sizing:border-box;background:0 0;vertical-align:middle;position:relative}.md-datepicker-button:before{top:0;left:0;bottom:0;right:0;position:absolute;content:'';speak:none}.md-datepicker-input{font-size:14px;box-sizing:border-box;border:none;box-shadow:none;outline:0;background:0 0;min-width:120px;max-width:328px;padding:0 0 5px}.md-datepicker-input::-ms-clear{display:none}._md-datepicker-floating-label>md-datepicker{overflow:visible}._md-datepicker-floating-label>md-datepicker .md-datepicker-input-container{border:none}._md-datepicker-floating-label>md-datepicker .md-datepicker-button{float:left;margin-top:-2.5px}[dir=rtl] ._md-datepicker-floating-label>md-datepicker .md-datepicker-button{float:right}._md-datepicker-floating-label._md-datepicker-has-calendar-icon>label:not(.md-no-float):not(.md-container-ignore){right:18px;left:auto;width:calc(100% - 84px)}[dir=rtl] ._md-datepicker-floating-label._md-datepicker-has-calendar-icon>label:not(.md-no-float):not(.md-container-ignore){right:auto}[dir=rtl] ._md-datepicker-floating-label._md-datepicker-has-calendar-icon>label:not(.md-no-float):not(.md-container-ignore){left:18px}._md-datepicker-floating-label._md-datepicker-has-calendar-icon .md-input-message-animation{margin-left:64px}[dir=rtl] ._md-datepicker-floating-label._md-datepicker-has-calendar-icon .md-input-message-animation{margin-left:auto;margin-right:64px}.md-datepicker-input-container{position:relative;border-bottom-width:1px;border-bottom-style:solid;display:inline-block;width:auto}.md-icon-button+.md-datepicker-input-container{margin-left:12px}[dir=rtl] .md-icon-button+.md-datepicker-input-container{margin-left:auto;margin-right:12px}.md-datepicker-input-container.md-datepicker-focused{border-bottom-width:2px}.md-datepicker-is-showing .md-scroll-mask{z-index:99}.md-datepicker-calendar-pane{position:absolute;top:0;left:-100%;z-index:100;border-width:1px;border-style:solid;background:0 0;transform:scale(0);transform-origin:0 0;transition:transform .2s cubic-bezier(.25,.8,.25,1)}.md-datepicker-calendar-pane.md-pane-open{transform:scale(1)}.md-datepicker-input-mask{height:40px;width:340px;position:relative;overflow:hidden;background:0 0;pointer-events:none;cursor:text}.md-datepicker-calendar{opacity:0;transition:opacity .2s cubic-bezier(.5,0,.25,1)}.md-pane-open .md-datepicker-calendar{opacity:1}.md-datepicker-calendar md-calendar:focus{outline:0}.md-datepicker-expand-triangle{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);width:0;height:0;border-left:5px solid transparent;border-right:5px solid transparent;border-top:5px solid}.md-datepicker-triangle-button{position:absolute;right:0;top:5px;transform:translateY(-25%) translateX(45%)}[dir=rtl] .md-datepicker-triangle-button{right:auto;left:0}[dir=rtl] .md-datepicker-triangle-button{transform:translateY(-25%) translateX(-45%)}.md-datepicker-triangle-button.md-button.md-icon-button{height:36px;width:36px;position:absolute;padding:8px}md-datepicker[disabled] .md-datepicker-input-container{border-bottom-color:transparent}md-datepicker[disabled] .md-datepicker-triangle-button{display:none}.md-datepicker-open{overflow:hidden}.md-datepicker-open .md-datepicker-input-container,.md-datepicker-open input.md-input{border-bottom-color:transparent}.md-datepicker-open .md-datepicker-triangle-button,.md-datepicker-open.md-input-has-placeholder>label,.md-datepicker-open.md-input-has-value>label{display:none}.md-datepicker-pos-adjusted .md-datepicker-input-mask{display:none}.md-datepicker-calendar-pane .md-calendar{transform:translateY(-85px);transition:transform .65s cubic-bezier(.25,.8,.25,1);transition-delay:125ms}.md-datepicker-calendar-pane.md-pane-open .md-calendar{transform:translateY(0)}.md-dialog-is-showing{max-height:100%}.md-dialog-container{display:flex;justify-content:center;align-items:center;position:absolute;top:0;left:0;width:100%;height:100%;z-index:80;overflow:hidden}md-dialog{opacity:0;min-width:240px;max-width:80%;max-height:80%;position:relative;overflow:auto;box-shadow:0 7px 8px -4px rgba(0,0,0,.2),0 13px 19px 2px rgba(0,0,0,.14),0 5px 24px 4px rgba(0,0,0,.12);display:flex;flex-direction:column}md-dialog.md-transition-in{opacity:1;transition:all .4s cubic-bezier(.25,.8,.25,1);transform:translate(0,0) scale(1)}md-dialog.md-transition-out{opacity:0;transition:all .4s cubic-bezier(.25,.8,.25,1);transform:translate(0,100%) scale(.2)}md-dialog>form{display:flex;flex-direction:column;overflow:auto}md-dialog .md-dialog-content{padding:24px}md-dialog md-dialog-content{order:1;flex-direction:column;overflow:auto;-webkit-overflow-scrolling:touch}md-dialog md-dialog-content:not([layout=row])>:first-child:not(.md-subheader){margin-top:0}md-dialog md-dialog-content:focus{outline:0}md-dialog md-dialog-content .md-subheader{margin:0}md-dialog md-dialog-content .md-dialog-content-body{width:100%}md-dialog md-dialog-content .md-prompt-input-container{width:100%;box-sizing:border-box}md-dialog .md-actions,md-dialog md-dialog-actions{display:flex;order:2;box-sizing:border-box;align-items:center;justify-content:flex-end;margin-bottom:0;padding-right:8px;padding-left:16px;min-height:52px;overflow:hidden}[dir=rtl] md-dialog .md-actions,[dir=rtl] md-dialog md-dialog-actions{padding-right:16px}[dir=rtl] md-dialog .md-actions,[dir=rtl] md-dialog md-dialog-actions{padding-left:8px}md-dialog .md-actions .md-button,md-dialog md-dialog-actions .md-button{margin-bottom:8px;margin-left:8px;margin-right:0;margin-top:8px}[dir=rtl] md-dialog .md-actions .md-button,[dir=rtl] md-dialog md-dialog-actions .md-button{margin-left:0}[dir=rtl] md-dialog .md-actions .md-button,[dir=rtl] md-dialog md-dialog-actions .md-button{margin-right:8px}md-dialog.md-content-overflow .md-actions,md-dialog.md-content-overflow md-dialog-actions{border-top-width:1px;border-top-style:solid}@media screen and (-ms-high-contrast:active){md-dialog{border:1px solid #fff}}@media (max-width:959px){md-dialog.md-dialog-fullscreen{min-height:100%;min-width:100%;border-radius:0}}md-divider{display:block;border-top-width:1px;border-top-style:solid;margin:0}md-divider[md-inset]{margin-left:80px}[dir=rtl] md-divider[md-inset]{margin-left:auto;margin-right:80px}.layout-gt-lg-row>md-divider,.layout-gt-md-row>md-divider,.layout-gt-sm-row>md-divider,.layout-gt-xs-row>md-divider,.layout-lg-row>md-divider,.layout-md-row>md-divider,.layout-row>md-divider,.layout-sm-row>md-divider,.layout-xl-row>md-divider,.layout-xs-row>md-divider{border-top-width:0;border-right-width:1px;border-right-style:solid}md-fab-speed-dial{position:relative;display:flex;align-items:center;z-index:20}md-fab-speed-dial.md-fab-bottom-right{top:auto;right:20px;bottom:20px;left:auto;position:absolute}md-fab-speed-dial.md-fab-bottom-left{top:auto;right:auto;bottom:20px;left:20px;position:absolute}md-fab-speed-dial.md-fab-top-right{top:20px;right:20px;bottom:auto;left:auto;position:absolute}md-fab-speed-dial.md-fab-top-left{top:20px;right:auto;bottom:auto;left:20px;position:absolute}md-fab-speed-dial:not(.md-hover-full){pointer-events:none}md-fab-speed-dial:not(.md-hover-full) .md-fab-action-item,md-fab-speed-dial:not(.md-hover-full) md-fab-trigger{pointer-events:auto}md-fab-speed-dial:not(.md-hover-full).md-is-open{pointer-events:auto}md-fab-speed-dial ._md-css-variables{z-index:20}md-fab-speed-dial.md-is-open .md-fab-action-item{align-items:center}md-fab-speed-dial md-fab-actions{display:flex;height:auto}md-fab-speed-dial md-fab-actions .md-fab-action-item{transition:all .3s cubic-bezier(.55,0,.55,.2)}md-fab-speed-dial.md-down{flex-direction:column}md-fab-speed-dial.md-down md-fab-trigger{order:1}md-fab-speed-dial.md-down md-fab-actions{flex-direction:column;order:2}md-fab-speed-dial.md-up{flex-direction:column}md-fab-speed-dial.md-up md-fab-trigger{order:2}md-fab-speed-dial.md-up md-fab-actions{flex-direction:column-reverse;order:1}md-fab-speed-dial.md-left{flex-direction:row}md-fab-speed-dial.md-left md-fab-trigger{order:2}md-fab-speed-dial.md-left md-fab-actions{flex-direction:row-reverse;order:1}md-fab-speed-dial.md-left md-fab-actions .md-fab-action-item{transition:all .3s cubic-bezier(.55,0,.55,.2)}md-fab-speed-dial.md-right{flex-direction:row}md-fab-speed-dial.md-right md-fab-trigger{order:1}md-fab-speed-dial.md-right md-fab-actions{flex-direction:row;order:2}md-fab-speed-dial.md-right md-fab-actions .md-fab-action-item{transition:all .3s cubic-bezier(.55,0,.55,.2)}md-fab-speed-dial.md-fling-remove .md-fab-action-item>*,md-fab-speed-dial.md-scale-remove .md-fab-action-item>*{visibility:hidden}md-fab-speed-dial.md-fling .md-fab-action-item{opacity:1}md-fab-speed-dial.md-fling.md-animations-waiting .md-fab-action-item{opacity:0;transition-duration:0s}md-fab-speed-dial.md-scale .md-fab-action-item{transform:scale(0);transition:all .3s cubic-bezier(.55,0,.55,.2);transition-duration:.1428571429s}md-fab-toolbar{display:block}md-fab-toolbar.md-fab-bottom-right{top:auto;right:20px;bottom:20px;left:auto;position:absolute}md-fab-toolbar.md-fab-bottom-left{top:auto;right:auto;bottom:20px;left:20px;position:absolute}md-fab-toolbar.md-fab-top-right{top:20px;right:20px;bottom:auto;left:auto;position:absolute}md-fab-toolbar.md-fab-top-left{top:20px;right:auto;bottom:auto;left:20px;position:absolute}md-fab-toolbar .md-fab-toolbar-wrapper{display:block;position:relative;overflow:hidden;height:68px}md-fab-toolbar md-fab-trigger{position:absolute;z-index:20}md-fab-toolbar md-fab-trigger button{overflow:visible!important}md-fab-toolbar md-fab-trigger .md-fab-toolbar-background{display:block;position:absolute;z-index:21;opacity:1;transition:all .3s cubic-bezier(.55,0,.55,.2)}md-fab-toolbar md-fab-trigger md-icon{position:relative;z-index:22;opacity:1;transition:all .2s ease-in}md-fab-toolbar.md-left md-fab-trigger{right:0}[dir=rtl] md-fab-toolbar.md-left md-fab-trigger{right:auto;left:0}md-fab-toolbar.md-left .md-toolbar-tools{flex-direction:row-reverse}md-fab-toolbar.md-left .md-toolbar-tools>.md-button:first-child{margin-right:.6rem}[dir=rtl] md-fab-toolbar.md-left .md-toolbar-tools>.md-button:first-child{margin-right:auto;margin-left:.6rem}md-fab-toolbar.md-left .md-toolbar-tools>.md-button:first-child{margin-left:-.8rem}[dir=rtl] md-fab-toolbar.md-left .md-toolbar-tools>.md-button:first-child{margin-left:auto;margin-right:-.8rem}md-fab-toolbar.md-left .md-toolbar-tools>.md-button:last-child{margin-right:8px}[dir=rtl] md-fab-toolbar.md-left .md-toolbar-tools>.md-button:last-child{margin-right:auto;margin-left:8px}md-fab-toolbar.md-right md-fab-trigger{left:0}[dir=rtl] md-fab-toolbar.md-right md-fab-trigger{left:auto;right:0}md-fab-toolbar.md-right .md-toolbar-tools{flex-direction:row}md-fab-toolbar md-toolbar{background-color:transparent!important;pointer-events:none;z-index:23}md-fab-toolbar md-toolbar .md-toolbar-tools{padding:0 20px;margin-top:3px}md-fab-toolbar md-toolbar .md-fab-action-item{opacity:0;transform:scale(0);transition:all .3s cubic-bezier(.55,0,.55,.2);transition-duration:.15s}md-fab-toolbar.md-is-open md-fab-trigger>button{box-shadow:none}md-fab-toolbar.md-is-open md-fab-trigger>button md-icon{opacity:0}md-fab-toolbar.md-is-open .md-fab-action-item{opacity:1;transform:scale(1)}md-grid-list{box-sizing:border-box;display:block;position:relative}md-grid-list md-grid-tile,md-grid-list md-grid-tile-footer,md-grid-list md-grid-tile-header,md-grid-list md-grid-tile>figure{box-sizing:border-box}md-grid-list md-grid-tile{display:block;position:absolute}md-grid-list md-grid-tile figure{display:flex;align-items:center;justify-content:center;height:100%;position:absolute;top:0;right:0;bottom:0;left:0;padding:0;margin:0}md-grid-list md-grid-tile md-grid-tile-footer,md-grid-list md-grid-tile md-grid-tile-header{display:flex;flex-direction:row;align-items:center;height:48px;color:#fff;background:rgba(0,0,0,.18);overflow:hidden;position:absolute;left:0;right:0}md-grid-list md-grid-tile md-grid-tile-footer h3,md-grid-list md-grid-tile md-grid-tile-footer h4,md-grid-list md-grid-tile md-grid-tile-header h3,md-grid-list md-grid-tile md-grid-tile-header h4{font-weight:400;margin:0 0 0 16px}md-grid-list md-grid-tile md-grid-tile-footer h3,md-grid-list md-grid-tile md-grid-tile-header h3{font-size:14px}md-grid-list md-grid-tile md-grid-tile-footer h4,md-grid-list md-grid-tile md-grid-tile-header h4{font-size:12px}md-grid-list md-grid-tile md-grid-tile-header{top:0}md-grid-list md-grid-tile md-grid-tile-footer{bottom:0}@media screen and (-ms-high-contrast:active){md-grid-tile{border:1px solid #fff}md-grid-tile-footer{border-top:1px solid #fff}}md-icon{margin:auto;background-repeat:no-repeat no-repeat;display:inline-block;vertical-align:middle;fill:currentColor;height:24px;width:24px;min-height:24px;min-width:24px}md-icon svg{pointer-events:none;display:block}md-icon[md-font-icon]{line-height:24px;width:auto}md-input-container{display:inline-block;position:relative;padding:2px;margin:18px 0;vertical-align:middle}md-input-container:after{content:'';display:table;clear:both}md-input-container.md-block{display:block}md-input-container .md-errors-spacer{float:right;min-height:24px;min-width:1px}[dir=rtl] md-input-container .md-errors-spacer{float:left}md-input-container>md-icon{position:absolute;top:8px;left:2px;right:auto}[dir=rtl] md-input-container>md-icon{left:auto}[dir=rtl] md-input-container>md-icon{right:2px}md-input-container input[type=color],md-input-container input[type=date],md-input-container input[type=datetime-local],md-input-container input[type=datetime],md-input-container input[type=email],md-input-container input[type=month],md-input-container input[type=number],md-input-container input[type=password],md-input-container input[type=search],md-input-container input[type=tel],md-input-container input[type=text],md-input-container input[type=time],md-input-container input[type=url],md-input-container input[type=week],md-input-container textarea{-moz-appearance:none;-webkit-appearance:none}md-input-container input[type=date],md-input-container input[type=datetime-local],md-input-container input[type=month],md-input-container input[type=time],md-input-container input[type=week]{min-height:26px}md-input-container textarea{resize:none;overflow:hidden}md-input-container textarea.md-input{min-height:26px;-ms-flex-preferred-size:auto}md-input-container textarea[md-no-autogrow]{height:auto;overflow:auto}md-input-container label:not(.md-container-ignore){position:absolute;bottom:100%;left:0;right:auto}[dir=rtl] md-input-container label:not(.md-container-ignore){left:auto}[dir=rtl] md-input-container label:not(.md-container-ignore){right:0}md-input-container label:not(.md-container-ignore).md-required:after{content:' *';font-size:13px;vertical-align:top}md-input-container .md-placeholder,md-input-container label:not(.md-no-float):not(.md-container-ignore){overflow:hidden;text-overflow:ellipsis;white-space:nowrap;width:100%;order:1;pointer-events:none;-webkit-font-smoothing:antialiased;padding-left:3px;padding-right:0;z-index:1;transform:translate3d(0,28px,0) scale(1);transition:transform .4s cubic-bezier(.25,.8,.25,1);max-width:100%;transform-origin:left top}[dir=rtl] md-input-container .md-placeholder,[dir=rtl] md-input-container label:not(.md-no-float):not(.md-container-ignore){padding-left:0}[dir=rtl] md-input-container .md-placeholder,[dir=rtl] md-input-container label:not(.md-no-float):not(.md-container-ignore){padding-right:3px}[dir=rtl] md-input-container .md-placeholder,[dir=rtl] md-input-container label:not(.md-no-float):not(.md-container-ignore){transform-origin:right top}md-input-container .md-placeholder{position:absolute;top:0;opacity:0;transition-property:opacity,transform;transform:translate3d(0,30px,0)}md-input-container.md-input-focused .md-placeholder{opacity:1;transform:translate3d(0,24px,0)}md-input-container.md-input-has-value .md-placeholder{transition:none;opacity:0}md-input-container:not(.md-input-has-value) input:not(:focus),md-input-container:not(.md-input-has-value) input:not(:focus)::-webkit-datetime-edit-ampm-field,md-input-container:not(.md-input-has-value) input:not(:focus)::-webkit-datetime-edit-day-field,md-input-container:not(.md-input-has-value) input:not(:focus)::-webkit-datetime-edit-hour-field,md-input-container:not(.md-input-has-value) input:not(:focus)::-webkit-datetime-edit-millisecond-field,md-input-container:not(.md-input-has-value) input:not(:focus)::-webkit-datetime-edit-minute-field,md-input-container:not(.md-input-has-value) input:not(:focus)::-webkit-datetime-edit-month-field,md-input-container:not(.md-input-has-value) input:not(:focus)::-webkit-datetime-edit-second-field,md-input-container:not(.md-input-has-value) input:not(:focus)::-webkit-datetime-edit-text,md-input-container:not(.md-input-has-value) input:not(:focus)::-webkit-datetime-edit-week-field,md-input-container:not(.md-input-has-value) input:not(:focus)::-webkit-datetime-edit-year-field{color:transparent}md-input-container .md-input{order:2;display:block;margin-top:0;background:0 0;padding-top:2px;padding-bottom:1px;padding-left:2px;padding-right:2px;border-width:0 0 1px 0;line-height:26px;height:30px;-ms-flex-preferred-size:26px;border-radius:0;border-style:solid;width:100%;box-sizing:border-box;float:left}[dir=rtl] md-input-container .md-input{float:right}md-input-container .md-input:focus{outline:0}md-input-container .md-input:invalid{outline:0;box-shadow:none}md-input-container .md-input.md-no-flex{flex:none!important}md-input-container .md-char-counter{text-align:right;padding-right:2px;padding-left:0}[dir=rtl] md-input-container .md-char-counter{text-align:left}[dir=rtl] md-input-container .md-char-counter{padding-right:0}[dir=rtl] md-input-container .md-char-counter{padding-left:2px}md-input-container .md-input-messages-animation{position:relative;order:4;overflow:hidden;clear:left}[dir=rtl] md-input-container .md-input-messages-animation{clear:right}md-input-container .md-input-messages-animation.ng-enter .md-input-message-animation{opacity:0;margin-top:-100px}md-input-container .md-char-counter,md-input-container .md-input-message-animation{font-size:12px;line-height:14px;overflow:hidden;transition:all .3s cubic-bezier(.55,0,.55,.2);opacity:1;margin-top:0;padding-top:5px}md-input-container .md-char-counter:not(.md-char-counter),md-input-container .md-input-message-animation:not(.md-char-counter){padding-right:5px;padding-left:0}[dir=rtl] md-input-container .md-char-counter:not(.md-char-counter),[dir=rtl] md-input-container .md-input-message-animation:not(.md-char-counter){padding-right:0}[dir=rtl] md-input-container .md-char-counter:not(.md-char-counter),[dir=rtl] md-input-container .md-input-message-animation:not(.md-char-counter){padding-left:5px}md-input-container:not(.md-input-invalid) .md-auto-hide .md-input-message-animation{opacity:0;margin-top:-100px}md-input-container .md-input-message-animation:not(.ng-animate){opacity:0;margin-top:-100px}md-input-container .md-input-message-animation.ng-enter{opacity:0;margin-top:-100px}md-input-container.md-input-focused label:not(.md-no-float),md-input-container.md-input-has-placeholder label:not(.md-no-float),md-input-container.md-input-has-value label:not(.md-no-float){transform:translate3d(0,6px,0) scale(.75);transition:transform cubic-bezier(.25,.8,.25,1) .4s,width cubic-bezier(.25,.8,.25,1) .4s}md-input-container.md-input-has-value label{transition:none}md-input-container .md-input.ng-invalid.ng-dirty,md-input-container.md-input-focused .md-input,md-input-container.md-input-resized .md-input{padding-bottom:0;border-width:0 0 2px 0}[disabled] md-input-container .md-input,md-input-container .md-input[disabled]{background-position:bottom -1px left 0;background-size:4px 1px;background-repeat:repeat-x}md-input-container.md-icon-float{transition:margin-top .4s cubic-bezier(.25,.8,.25,1)}md-input-container.md-icon-float>label{pointer-events:none;position:absolute}md-input-container.md-icon-float>md-icon{top:8px;left:2px;right:auto}[dir=rtl] md-input-container.md-icon-float>md-icon{left:auto}[dir=rtl] md-input-container.md-icon-float>md-icon{right:2px}md-input-container.md-icon-left>label .md-placeholder,md-input-container.md-icon-left>label:not(.md-no-float):not(.md-container-ignore),md-input-container.md-icon-right>label .md-placeholder,md-input-container.md-icon-right>label:not(.md-no-float):not(.md-container-ignore){width:calc(100% - 36px - 18px)}md-input-container.md-icon-left{padding-left:36px;padding-right:0}[dir=rtl] md-input-container.md-icon-left{padding-left:0}[dir=rtl] md-input-container.md-icon-left{padding-right:36px}md-input-container.md-icon-left>label{left:36px;right:auto}[dir=rtl] md-input-container.md-icon-left>label{left:auto}[dir=rtl] md-input-container.md-icon-left>label{right:36px}md-input-container.md-icon-right{padding-left:0;padding-right:36px}[dir=rtl] md-input-container.md-icon-right{padding-left:36px}[dir=rtl] md-input-container.md-icon-right{padding-right:0}md-input-container.md-icon-right>md-icon:last-of-type{margin:0;right:2px;left:auto}[dir=rtl] md-input-container.md-icon-right>md-icon:last-of-type{right:auto}[dir=rtl] md-input-container.md-icon-right>md-icon:last-of-type{left:2px}md-input-container.md-icon-left.md-icon-right{padding-left:36px;padding-right:36px}md-input-container.md-icon-left.md-icon-right>label .md-placeholder,md-input-container.md-icon-left.md-icon-right>label:not(.md-no-float):not(.md-container-ignore){width:calc(100% - (36px * 2))}.md-resize-wrapper{position:relative}.md-resize-wrapper:after{content:'';display:table;clear:both}.md-resize-handle{position:absolute;bottom:-5px;left:0;height:10px;background:0 0;width:100%;cursor:ns-resize}@media screen and (-ms-high-contrast:active){md-input-container.md-default-theme>md-icon{fill:#fff}}md-list{display:block;padding:8px 0 8px 0}md-list .md-subheader{font-size:14px;font-weight:500;letter-spacing:.010em;line-height:1.2em}md-list.md-dense md-list-item,md-list.md-dense md-list-item .md-list-item-inner{min-height:48px}md-list.md-dense md-list-item .md-list-item-inner::before,md-list.md-dense md-list-item::before{content:'';min-height:48px;visibility:hidden;display:inline-block}md-list.md-dense md-list-item .md-list-item-inner md-icon:first-child,md-list.md-dense md-list-item md-icon:first-child{width:20px;height:20px}md-list.md-dense md-list-item .md-list-item-inner>md-icon:first-child:not(.md-avatar-icon),md-list.md-dense md-list-item>md-icon:first-child:not(.md-avatar-icon){margin-right:36px}[dir=rtl] md-list.md-dense md-list-item .md-list-item-inner>md-icon:first-child:not(.md-avatar-icon),[dir=rtl] md-list.md-dense md-list-item>md-icon:first-child:not(.md-avatar-icon){margin-right:auto;margin-left:36px}md-list.md-dense md-list-item .md-avatar,md-list.md-dense md-list-item .md-avatar-icon,md-list.md-dense md-list-item .md-list-item-inner .md-avatar,md-list.md-dense md-list-item .md-list-item-inner .md-avatar-icon{margin-right:20px}[dir=rtl] md-list.md-dense md-list-item .md-avatar,[dir=rtl] md-list.md-dense md-list-item .md-avatar-icon,[dir=rtl] md-list.md-dense md-list-item .md-list-item-inner .md-avatar,[dir=rtl] md-list.md-dense md-list-item .md-list-item-inner .md-avatar-icon{margin-right:auto;margin-left:20px}md-list.md-dense md-list-item .md-avatar,md-list.md-dense md-list-item .md-list-item-inner .md-avatar{flex:none;width:36px;height:36px}md-list.md-dense md-list-item.md-2-line .md-list-item-text.md-offset,md-list.md-dense md-list-item.md-2-line>.md-no-style .md-list-item-text.md-offset,md-list.md-dense md-list-item.md-3-line .md-list-item-text.md-offset,md-list.md-dense md-list-item.md-3-line>.md-no-style .md-list-item-text.md-offset{margin-left:56px}[dir=rtl] md-list.md-dense md-list-item.md-2-line .md-list-item-text.md-offset,[dir=rtl] md-list.md-dense md-list-item.md-2-line>.md-no-style .md-list-item-text.md-offset,[dir=rtl] md-list.md-dense md-list-item.md-3-line .md-list-item-text.md-offset,[dir=rtl] md-list.md-dense md-list-item.md-3-line>.md-no-style .md-list-item-text.md-offset{margin-left:auto;margin-right:56px}md-list.md-dense md-list-item.md-2-line .md-list-item-text h3,md-list.md-dense md-list-item.md-2-line .md-list-item-text h4,md-list.md-dense md-list-item.md-2-line .md-list-item-text p,md-list.md-dense md-list-item.md-2-line>.md-no-style .md-list-item-text h3,md-list.md-dense md-list-item.md-2-line>.md-no-style .md-list-item-text h4,md-list.md-dense md-list-item.md-2-line>.md-no-style .md-list-item-text p,md-list.md-dense md-list-item.md-3-line .md-list-item-text h3,md-list.md-dense md-list-item.md-3-line .md-list-item-text h4,md-list.md-dense md-list-item.md-3-line .md-list-item-text p,md-list.md-dense md-list-item.md-3-line>.md-no-style .md-list-item-text h3,md-list.md-dense md-list-item.md-3-line>.md-no-style .md-list-item-text h4,md-list.md-dense md-list-item.md-3-line>.md-no-style .md-list-item-text p{line-height:1.05;font-size:12px}md-list.md-dense md-list-item.md-2-line .md-list-item-text h3,md-list.md-dense md-list-item.md-2-line>.md-no-style .md-list-item-text h3,md-list.md-dense md-list-item.md-3-line .md-list-item-text h3,md-list.md-dense md-list-item.md-3-line>.md-no-style .md-list-item-text h3{font-size:13px}md-list.md-dense md-list-item.md-2-line,md-list.md-dense md-list-item.md-2-line>.md-no-style{min-height:60px}md-list.md-dense md-list-item.md-2-line::before,md-list.md-dense md-list-item.md-2-line>.md-no-style::before{content:'';min-height:60px;visibility:hidden;display:inline-block}md-list.md-dense md-list-item.md-2-line .md-avatar-icon,md-list.md-dense md-list-item.md-2-line>.md-avatar,md-list.md-dense md-list-item.md-2-line>.md-no-style .md-avatar-icon,md-list.md-dense md-list-item.md-2-line>.md-no-style>.md-avatar{margin-top:12px}md-list.md-dense md-list-item.md-3-line,md-list.md-dense md-list-item.md-3-line>.md-no-style{min-height:76px}md-list.md-dense md-list-item.md-3-line::before,md-list.md-dense md-list-item.md-3-line>.md-no-style::before{content:'';min-height:76px;visibility:hidden;display:inline-block}md-list.md-dense md-list-item.md-3-line>.md-avatar,md-list.md-dense md-list-item.md-3-line>.md-no-style>.md-avatar,md-list.md-dense md-list-item.md-3-line>.md-no-style>md-icon:first-child,md-list.md-dense md-list-item.md-3-line>md-icon:first-child{margin-top:16px}md-list-item{position:relative}md-list-item.md-proxy-focus.md-focused .md-no-style{transition:background-color .15s linear}md-list-item._md-button-wrap{position:relative}md-list-item._md-button-wrap>div.md-button:first-child{display:flex;align-items:center;justify-content:flex-start;padding:0 16px;margin:0;font-weight:400;text-align:left;border:medium none}[dir=rtl] md-list-item._md-button-wrap>div.md-button:first-child{text-align:right}md-list-item._md-button-wrap>div.md-button:first-child>.md-button:first-child{position:absolute;top:0;left:0;height:100%;margin:0;padding:0}md-list-item._md-button-wrap>div.md-button:first-child .md-list-item-inner{width:100%;min-height:inherit}md-list-item .md-no-style,md-list-item.md-no-proxy{position:relative;padding:0 16px;flex:1 1 auto}md-list-item .md-no-style.md-button,md-list-item.md-no-proxy.md-button{font-size:inherit;height:inherit;text-align:left;text-transform:none;width:100%;white-space:normal;flex-direction:inherit;align-items:inherit;border-radius:0;margin:0}[dir=rtl] md-list-item .md-no-style.md-button,[dir=rtl] md-list-item.md-no-proxy.md-button{text-align:right}md-list-item .md-no-style.md-button>.md-ripple-container,md-list-item.md-no-proxy.md-button>.md-ripple-container{border-radius:0}md-list-item .md-no-style:focus,md-list-item.md-no-proxy:focus{outline:0}md-list-item.md-clickable:hover{cursor:pointer}md-list-item md-divider{position:absolute;bottom:0;left:0;width:100%}[dir=rtl] md-list-item md-divider{left:auto;right:0}md-list-item md-divider[md-inset]{left:72px;width:calc(100% - 72px);margin:0!important}[dir=rtl] md-list-item md-divider[md-inset]{left:auto;right:72px}md-list-item,md-list-item .md-list-item-inner{display:flex;justify-content:flex-start;align-items:center;min-height:48px;height:auto}md-list-item .md-list-item-inner::before,md-list-item::before{content:'';min-height:48px;visibility:hidden;display:inline-block}md-list-item .md-list-item-inner>div.md-primary>md-icon:not(.md-avatar-icon),md-list-item .md-list-item-inner>div.md-secondary>md-icon:not(.md-avatar-icon),md-list-item .md-list-item-inner>md-icon.md-secondary:not(.md-avatar-icon),md-list-item .md-list-item-inner>md-icon:first-child:not(.md-avatar-icon),md-list-item>div.md-primary>md-icon:not(.md-avatar-icon),md-list-item>div.md-secondary>md-icon:not(.md-avatar-icon),md-list-item>md-icon.md-secondary:not(.md-avatar-icon),md-list-item>md-icon:first-child:not(.md-avatar-icon){width:24px;margin-top:16px;margin-bottom:12px;box-sizing:content-box}md-list-item .md-list-item-inner md-checkbox.md-secondary,md-list-item .md-list-item-inner>div.md-primary>md-checkbox,md-list-item .md-list-item-inner>div.md-secondary>md-checkbox,md-list-item .md-list-item-inner>md-checkbox,md-list-item md-checkbox.md-secondary,md-list-item>div.md-primary>md-checkbox,md-list-item>div.md-secondary>md-checkbox,md-list-item>md-checkbox{align-self:center}md-list-item .md-list-item-inner md-checkbox.md-secondary .md-label,md-list-item .md-list-item-inner>div.md-primary>md-checkbox .md-label,md-list-item .md-list-item-inner>div.md-secondary>md-checkbox .md-label,md-list-item .md-list-item-inner>md-checkbox .md-label,md-list-item md-checkbox.md-secondary .md-label,md-list-item>div.md-primary>md-checkbox .md-label,md-list-item>div.md-secondary>md-checkbox .md-label,md-list-item>md-checkbox .md-label{display:none}md-list-item .md-list-item-inner>md-icon:first-child:not(.md-avatar-icon),md-list-item>md-icon:first-child:not(.md-avatar-icon){margin-right:32px}[dir=rtl] md-list-item .md-list-item-inner>md-icon:first-child:not(.md-avatar-icon),[dir=rtl] md-list-item>md-icon:first-child:not(.md-avatar-icon){margin-right:auto;margin-left:32px}md-list-item .md-avatar,md-list-item .md-avatar-icon,md-list-item .md-list-item-inner .md-avatar,md-list-item .md-list-item-inner .md-avatar-icon{margin-top:8px;margin-bottom:8px;margin-right:16px;border-radius:50%;box-sizing:content-box}[dir=rtl] md-list-item .md-avatar,[dir=rtl] md-list-item .md-avatar-icon,[dir=rtl] md-list-item .md-list-item-inner .md-avatar,[dir=rtl] md-list-item .md-list-item-inner .md-avatar-icon{margin-right:auto;margin-left:16px}md-list-item .md-avatar,md-list-item .md-list-item-inner .md-avatar{flex:none;width:40px;height:40px}md-list-item .md-avatar-icon,md-list-item .md-list-item-inner .md-avatar-icon{padding:8px}md-list-item .md-avatar-icon svg,md-list-item .md-list-item-inner .md-avatar-icon svg{width:24px;height:24px}md-list-item .md-list-item-inner>md-checkbox,md-list-item>md-checkbox{width:24px;margin-left:3px;margin-right:29px;margin-top:16px}[dir=rtl] md-list-item .md-list-item-inner>md-checkbox,[dir=rtl] md-list-item>md-checkbox{margin-left:29px}[dir=rtl] md-list-item .md-list-item-inner>md-checkbox,[dir=rtl] md-list-item>md-checkbox{margin-right:3px}md-list-item .md-list-item-inner .md-secondary-container,md-list-item .md-secondary-container{display:flex;align-items:center;flex-shrink:0;margin:auto;margin-right:0;margin-left:auto}[dir=rtl] md-list-item .md-list-item-inner .md-secondary-container,[dir=rtl] md-list-item .md-secondary-container{margin-right:auto}[dir=rtl] md-list-item .md-list-item-inner .md-secondary-container,[dir=rtl] md-list-item .md-secondary-container{margin-left:0}md-list-item .md-list-item-inner .md-secondary-container .md-button:last-of-type,md-list-item .md-list-item-inner .md-secondary-container .md-icon-button:last-of-type,md-list-item .md-secondary-container .md-button:last-of-type,md-list-item .md-secondary-container .md-icon-button:last-of-type{margin-right:0}[dir=rtl] md-list-item .md-list-item-inner .md-secondary-container .md-button:last-of-type,[dir=rtl] md-list-item .md-list-item-inner .md-secondary-container .md-icon-button:last-of-type,[dir=rtl] md-list-item .md-secondary-container .md-button:last-of-type,[dir=rtl] md-list-item .md-secondary-container .md-icon-button:last-of-type{margin-right:auto;margin-left:0}md-list-item .md-list-item-inner .md-secondary-container md-checkbox,md-list-item .md-secondary-container md-checkbox{margin-top:0;margin-bottom:0}md-list-item .md-list-item-inner .md-secondary-container md-checkbox:last-child,md-list-item .md-secondary-container md-checkbox:last-child{width:24px;margin-right:0}[dir=rtl] md-list-item .md-list-item-inner .md-secondary-container md-checkbox:last-child,[dir=rtl] md-list-item .md-secondary-container md-checkbox:last-child{margin-right:auto;margin-left:0}md-list-item .md-list-item-inner .md-secondary-container md-switch,md-list-item .md-secondary-container md-switch{margin-top:0;margin-bottom:0;margin-right:-6px}[dir=rtl] md-list-item .md-list-item-inner .md-secondary-container md-switch,[dir=rtl] md-list-item .md-secondary-container md-switch{margin-right:auto;margin-left:-6px}md-list-item .md-list-item-inner>.md-list-item-inner>p,md-list-item .md-list-item-inner>p,md-list-item>.md-list-item-inner>p,md-list-item>p{flex:1 1 auto;margin:0}md-list-item.md-2-line,md-list-item.md-2-line>.md-no-style,md-list-item.md-3-line,md-list-item.md-3-line>.md-no-style{align-items:flex-start;justify-content:center}md-list-item.md-2-line.md-long-text,md-list-item.md-2-line>.md-no-style.md-long-text,md-list-item.md-3-line.md-long-text,md-list-item.md-3-line>.md-no-style.md-long-text{margin-top:8px;margin-bottom:8px}md-list-item.md-2-line .md-list-item-text,md-list-item.md-2-line>.md-no-style .md-list-item-text,md-list-item.md-3-line .md-list-item-text,md-list-item.md-3-line>.md-no-style .md-list-item-text{flex:1 1 auto;margin:auto;text-overflow:ellipsis;overflow:hidden}md-list-item.md-2-line .md-list-item-text.md-offset,md-list-item.md-2-line>.md-no-style .md-list-item-text.md-offset,md-list-item.md-3-line .md-list-item-text.md-offset,md-list-item.md-3-line>.md-no-style .md-list-item-text.md-offset{margin-left:56px}[dir=rtl] md-list-item.md-2-line .md-list-item-text.md-offset,[dir=rtl] md-list-item.md-2-line>.md-no-style .md-list-item-text.md-offset,[dir=rtl] md-list-item.md-3-line .md-list-item-text.md-offset,[dir=rtl] md-list-item.md-3-line>.md-no-style .md-list-item-text.md-offset{margin-left:auto;margin-right:56px}md-list-item.md-2-line .md-list-item-text h3,md-list-item.md-2-line>.md-no-style .md-list-item-text h3,md-list-item.md-3-line .md-list-item-text h3,md-list-item.md-3-line>.md-no-style .md-list-item-text h3{font-size:16px;font-weight:400;letter-spacing:.010em;margin:0;line-height:1.2em;overflow:hidden;white-space:nowrap;text-overflow:ellipsis}md-list-item.md-2-line .md-list-item-text h4,md-list-item.md-2-line>.md-no-style .md-list-item-text h4,md-list-item.md-3-line .md-list-item-text h4,md-list-item.md-3-line>.md-no-style .md-list-item-text h4{font-size:14px;letter-spacing:.010em;margin:3px 0 1px 0;font-weight:400;line-height:1.2em;overflow:hidden;white-space:nowrap;text-overflow:ellipsis}md-list-item.md-2-line .md-list-item-text p,md-list-item.md-2-line>.md-no-style .md-list-item-text p,md-list-item.md-3-line .md-list-item-text p,md-list-item.md-3-line>.md-no-style .md-list-item-text p{font-size:14px;font-weight:500;letter-spacing:.010em;margin:0;line-height:1.6em}md-list-item.md-2-line,md-list-item.md-2-line>.md-no-style{height:auto;min-height:72px}md-list-item.md-2-line::before,md-list-item.md-2-line>.md-no-style::before{content:'';min-height:72px;visibility:hidden;display:inline-block}md-list-item.md-2-line .md-avatar-icon,md-list-item.md-2-line>.md-avatar,md-list-item.md-2-line>.md-no-style .md-avatar-icon,md-list-item.md-2-line>.md-no-style>.md-avatar{margin-top:12px}md-list-item.md-2-line>.md-no-style>md-icon:first-child,md-list-item.md-2-line>md-icon:first-child{align-self:flex-start}md-list-item.md-2-line .md-list-item-text,md-list-item.md-2-line>.md-no-style .md-list-item-text{flex:1 1 auto}md-list-item.md-3-line,md-list-item.md-3-line>.md-no-style{height:auto;min-height:88px}md-list-item.md-3-line::before,md-list-item.md-3-line>.md-no-style::before{content:'';min-height:88px;visibility:hidden;display:inline-block}md-list-item.md-3-line>.md-avatar,md-list-item.md-3-line>.md-no-style>.md-avatar,md-list-item.md-3-line>.md-no-style>md-icon:first-child,md-list-item.md-3-line>md-icon:first-child{margin-top:16px}.md-open-menu-container{position:fixed;left:0;top:0;z-index:100;opacity:0;border-radius:2px}.md-open-menu-container md-menu-divider{margin-top:4px;margin-bottom:4px;height:1px;min-height:1px;max-height:1px;width:100%}.md-open-menu-container md-menu-content>*{opacity:0}.md-open-menu-container:not(.md-clickable){pointer-events:none}.md-open-menu-container.md-active{opacity:1;transition:all .4s cubic-bezier(.25,.8,.25,1);transition-duration:.2s}.md-open-menu-container.md-active>md-menu-content>*{opacity:1;transition:all .3s cubic-bezier(.55,0,.55,.2);transition-duration:.2s;transition-delay:.1s}.md-open-menu-container.md-leave{opacity:0;transition:all .3s cubic-bezier(.55,0,.55,.2);transition-duration:250ms}md-menu-content{display:flex;flex-direction:column;padding:8px 0;max-height:304px;overflow-y:auto}md-menu-content.md-dense{max-height:208px}md-menu-content.md-dense md-menu-item{height:32px;min-height:0}md-menu-item{display:flex;flex-direction:row;min-height:48px;height:48px;align-content:center;justify-content:flex-start}md-menu-item>*{width:100%;margin:auto 0;padding-left:16px;padding-right:16px}md-menu-item>a.md-button{padding-top:5px}md-menu-item>.md-button{text-align:left;display:inline-block;border-radius:0;margin:auto 0;font-size:15px;text-transform:none;font-weight:400;height:100%;padding-left:16px;padding-right:16px;width:100%}md-menu-item>.md-button::-moz-focus-inner{padding:0;border:0}[dir=rtl] md-menu-item>.md-button{text-align:right}md-menu-item>.md-button md-icon{margin:auto 16px auto 0}[dir=rtl] md-menu-item>.md-button md-icon{margin:auto 0 auto 16px}md-menu-item>.md-button p{display:inline-block;margin:auto}md-menu-item>.md-button span{margin-top:auto;margin-bottom:auto}md-menu-item>.md-button .md-ripple-container{border-radius:inherit}md-toolbar .md-menu{height:auto;margin:auto;padding:0}@media (max-width:959px){md-menu-content{min-width:112px}md-menu-content[width="3"]{min-width:168px}md-menu-content[width="4"]{min-width:224px}md-menu-content[width="5"]{min-width:280px}md-menu-content[width="6"]{min-width:336px}md-menu-content[width="7"]{min-width:392px}}@media (min-width:960px){md-menu-content{min-width:96px}md-menu-content[width="3"]{min-width:192px}md-menu-content[width="4"]{min-width:256px}md-menu-content[width="5"]{min-width:320px}md-menu-content[width="6"]{min-width:384px}md-menu-content[width="7"]{min-width:448px}}md-toolbar.md-menu-toolbar h2.md-toolbar-tools{line-height:1rem;height:auto;padding:28px;padding-bottom:12px}md-toolbar.md-has-open-menu{position:relative;z-index:100}md-menu-bar{padding:0 20px;display:block;position:relative;z-index:2}md-menu-bar .md-menu{display:inline-block;padding:0;position:relative}md-menu-bar button{font-size:14px;padding:0 10px;margin:0;border:0;background-color:transparent;height:40px}md-menu-bar md-backdrop.md-menu-backdrop{z-index:-2}md-menu-content.md-menu-bar-menu.md-dense{max-height:none;padding:16px 0}md-menu-content.md-menu-bar-menu.md-dense md-menu-item.md-indent{position:relative}md-menu-content.md-menu-bar-menu.md-dense md-menu-item.md-indent>md-icon{position:absolute;padding:0;width:24px;top:6px;left:24px}[dir=rtl] md-menu-content.md-menu-bar-menu.md-dense md-menu-item.md-indent>md-icon{left:auto;right:24px}md-menu-content.md-menu-bar-menu.md-dense md-menu-item.md-indent .md-menu>.md-button,md-menu-content.md-menu-bar-menu.md-dense md-menu-item.md-indent>.md-button{padding:0 32px 0 64px}[dir=rtl] md-menu-content.md-menu-bar-menu.md-dense md-menu-item.md-indent .md-menu>.md-button,[dir=rtl] md-menu-content.md-menu-bar-menu.md-dense md-menu-item.md-indent>.md-button{padding:0 64px 0 32px}md-menu-content.md-menu-bar-menu.md-dense .md-button{min-height:0;height:32px;display:flex}md-menu-content.md-menu-bar-menu.md-dense .md-button span{flex-grow:1}md-menu-content.md-menu-bar-menu.md-dense .md-button span.md-alt-text{flex-grow:0;align-self:flex-end;margin:0 8px}md-menu-content.md-menu-bar-menu.md-dense md-menu-divider{margin:8px 0}md-menu-content.md-menu-bar-menu.md-dense .md-menu>.md-button,md-menu-content.md-menu-bar-menu.md-dense md-menu-item>.md-button{text-align:left}[dir=rtl] md-menu-content.md-menu-bar-menu.md-dense .md-menu>.md-button,[dir=rtl] md-menu-content.md-menu-bar-menu.md-dense md-menu-item>.md-button{text-align:right}md-menu-content.md-menu-bar-menu.md-dense .md-menu{padding:0}md-menu-content.md-menu-bar-menu.md-dense .md-menu>.md-button{position:relative;margin:0;width:100%;text-transform:none;font-weight:400;border-radius:0;padding-left:16px}[dir=rtl] md-menu-content.md-menu-bar-menu.md-dense .md-menu>.md-button{padding-left:0;padding-right:16px}md-menu-content.md-menu-bar-menu.md-dense .md-menu>.md-button:after{display:block;content:'\25BC';position:absolute;top:0;speak:none;transform:rotate(270deg) scaleY(.45) scaleX(.9);right:28px}[dir=rtl] md-menu-content.md-menu-bar-menu.md-dense .md-menu>.md-button:after{transform:rotate(90deg) scaleY(.45) scaleX(.9)}[dir=rtl] md-menu-content.md-menu-bar-menu.md-dense .md-menu>.md-button:after{right:auto;left:28px}.md-nav-bar{border-style:solid;border-width:0 0 1px;height:48px;position:relative}._md-nav-bar-list{outline:0;list-style:none;margin:0;padding:0;box-sizing:border-box;display:flex;flex-direction:row}.md-nav-item:first-of-type{margin-left:8px}.md-button._md-nav-button{line-height:24px;margin:0 4px;padding:12px 16px;transition:background-color .35s cubic-bezier(.35,0,.25,1)}.md-button._md-nav-button:focus{outline:0}.md-button._md-nav-button:hover{background-color:inherit}md-nav-ink-bar{bottom:0;height:2px;left:auto;position:absolute;right:auto;background-color:#000}md-nav-ink-bar._md-left{transition:left 125ms cubic-bezier(.35,0,.25,1),right .25s cubic-bezier(.35,0,.25,1)}md-nav-ink-bar._md-right{transition:left .25s cubic-bezier(.35,0,.25,1),right 125ms cubic-bezier(.35,0,.25,1)}md-nav-extra-content{min-height:48px;padding-right:12px}.md-panel-outer-wrapper{height:100%;left:0;position:absolute;top:0;width:100%}._md-panel-hidden{display:none}._md-panel-fullscreen{border-radius:0;left:0;min-height:100%;min-width:100%;position:fixed;top:0}._md-panel-shown .md-panel{opacity:1;transition:none}.md-panel{opacity:0;position:fixed}.md-panel._md-panel-shown{opacity:1;transition:none}.md-panel._md-panel-animate-enter{opacity:1;transition:all .3s cubic-bezier(0,0,.2,1)}.md-panel._md-panel-animate-leave{opacity:1;transition:all .3s cubic-bezier(.4,0,1,1)}.md-panel._md-panel-animate-fade-out,.md-panel._md-panel-animate-scale-out{opacity:0}.md-panel._md-panel-backdrop{height:100%;position:absolute;width:100%}.md-panel._md-opaque-enter{opacity:.48;transition:opacity .3s cubic-bezier(0,0,.2,1)}.md-panel._md-opaque-leave{transition:opacity .3s cubic-bezier(.4,0,1,1)}@keyframes indeterminate-rotate{0%{transform:rotate(0)}100%{transform:rotate(360deg)}}md-progress-circular{position:relative;display:block}md-progress-circular._md-progress-circular-disabled{visibility:hidden}md-progress-circular.md-mode-indeterminate svg{animation:indeterminate-rotate 2.9s linear infinite}md-progress-circular svg{position:absolute;overflow:visible;top:0;left:0}md-progress-linear{display:block;position:relative;width:100%;height:5px;padding-top:0!important;margin-bottom:0!important}md-progress-linear._md-progress-linear-disabled{visibility:hidden}md-progress-linear .md-container{display:block;position:relative;overflow:hidden;width:100%;height:5px;transform:translate(0,0) scale(1,1)}md-progress-linear .md-container .md-bar{position:absolute;left:0;top:0;bottom:0;width:100%;height:5px}md-progress-linear .md-container .md-dashed:before{content:"";display:none;position:absolute;margin-top:0;height:5px;width:100%;background-color:transparent;background-size:10px 10px!important;background-position:0 -23px}md-progress-linear .md-container .md-bar1,md-progress-linear .md-container .md-bar2{transition:transform .2s linear}md-progress-linear .md-container.md-mode-query .md-bar1{display:none}md-progress-linear .md-container.md-mode-query .md-bar2{transition:all .2s linear;animation:query .8s infinite cubic-bezier(.39,.575,.565,1)}md-progress-linear .md-container.md-mode-determinate .md-bar1{display:none}md-progress-linear .md-container.md-mode-indeterminate .md-bar1{animation:md-progress-linear-indeterminate-scale-1 4s infinite,md-progress-linear-indeterminate-1 4s infinite}md-progress-linear .md-container.md-mode-indeterminate .md-bar2{animation:md-progress-linear-indeterminate-scale-2 4s infinite,md-progress-linear-indeterminate-2 4s infinite}md-progress-linear .md-container.ng-hide ._md-progress-linear-disabled md-progress-linear .md-container{animation:none}md-progress-linear .md-container.ng-hide ._md-progress-linear-disabled md-progress-linear .md-container .md-bar1{animation-name:none}md-progress-linear .md-container.ng-hide ._md-progress-linear-disabled md-progress-linear .md-container .md-bar2{animation-name:none}md-progress-linear .md-container.md-mode-buffer{background-color:transparent!important;transition:all .2s linear}md-progress-linear .md-container.md-mode-buffer .md-dashed:before{display:block;animation:buffer 3s infinite linear}@keyframes query{0%{opacity:1;transform:translateX(35%) scale(.3,1)}100%{opacity:0;transform:translateX(-50%) scale(0,1)}}@keyframes buffer{0%{opacity:1;background-position:0 -23px}50%{opacity:0}100%{opacity:1;background-position:-200px -23px}}@keyframes md-progress-linear-indeterminate-scale-1{0%{transform:scaleX(.1);animation-timing-function:linear}36.6%{transform:scaleX(.1);animation-timing-function:cubic-bezier(.334731432,.124819821,.785843996,1)}69.15%{transform:scaleX(.83);animation-timing-function:cubic-bezier(.225732004,0,.233648906,1.3709798)}100%{transform:scaleX(.1)}}@keyframes md-progress-linear-indeterminate-1{0%{left:-105.166666667%;animation-timing-function:linear}20%{left:-105.166666667%;animation-timing-function:cubic-bezier(.5,0,.701732,.495818703)}69.15%{left:21.5%;animation-timing-function:cubic-bezier(.302435,.38135197,.55,.956352125)}100%{left:95.4444444444%}}@keyframes md-progress-linear-indeterminate-scale-2{0%{transform:scaleX(.1);animation-timing-function:cubic-bezier(.205028172,.057050836,.57660995,.453970841)}19.15%{transform:scaleX(.57);animation-timing-function:cubic-bezier(.152312994,.196431957,.648373778,1.00431535)}44.15%{transform:scaleX(.91);animation-timing-function:cubic-bezier(.25775882,-.003163357,.211761916,1.38178961)}100%{transform:scaleX(.1)}}@keyframes md-progress-linear-indeterminate-2{0%{left:-54.8888888889%;animation-timing-function:cubic-bezier(.15,0,.5150584,.409684966)}25%{left:-17.25%;animation-timing-function:cubic-bezier(.3103299,.284057684,.8,.733718979)}48.35%{left:29.5%;animation-timing-function:cubic-bezier(.4,.627034903,.6,.902025796)}100%{left:117.388888889%}}md-radio-button{box-sizing:border-box;display:block;margin-bottom:16px;white-space:nowrap;cursor:pointer;position:relative}md-radio-button[disabled]{cursor:default}md-radio-button[disabled] .md-container{cursor:default}md-radio-button .md-container{position:absolute;top:50%;transform:translateY(-50%);box-sizing:border-box;display:inline-block;width:20px;height:20px;cursor:pointer;left:0;right:auto}[dir=rtl] md-radio-button .md-container{left:auto}[dir=rtl] md-radio-button .md-container{right:0}md-radio-button .md-container .md-ripple-container{position:absolute;display:block;width:auto;height:auto;left:-15px;top:-15px;right:-15px;bottom:-15px}md-radio-button .md-container:before{box-sizing:border-box;background-color:transparent;border-radius:50%;content:'';position:absolute;display:block;height:auto;left:0;top:0;right:0;bottom:0;transition:all .5s;width:auto}md-radio-button.md-align-top-left>div.md-container{top:12px}md-radio-button .md-off{box-sizing:border-box;position:absolute;top:0;left:0;width:20px;height:20px;border-style:solid;border-width:2px;border-radius:50%;transition:border-color ease .28s}md-radio-button .md-on{box-sizing:border-box;position:absolute;top:0;left:0;width:20px;height:20px;border-radius:50%;transition:transform ease .28s;transform:scale(0)}md-radio-button.md-checked .md-on{transform:scale(.5)}md-radio-button .md-label{box-sizing:border-box;position:relative;display:inline-block;margin-left:30px;margin-right:0;vertical-align:middle;white-space:normal;pointer-events:none;width:auto}[dir=rtl] md-radio-button .md-label{margin-left:0}[dir=rtl] md-radio-button .md-label{margin-right:30px}md-radio-group.layout-column md-radio-button,md-radio-group.layout-gt-lg-column md-radio-button,md-radio-group.layout-gt-md-column md-radio-button,md-radio-group.layout-gt-sm-column md-radio-button,md-radio-group.layout-gt-xs-column md-radio-button,md-radio-group.layout-lg-column md-radio-button,md-radio-group.layout-md-column md-radio-button,md-radio-group.layout-sm-column md-radio-button,md-radio-group.layout-xl-column md-radio-button,md-radio-group.layout-xs-column md-radio-button{margin-bottom:16px}md-radio-group.layout-gt-lg-row md-radio-button,md-radio-group.layout-gt-md-row md-radio-button,md-radio-group.layout-gt-sm-row md-radio-button,md-radio-group.layout-gt-xs-row md-radio-button,md-radio-group.layout-lg-row md-radio-button,md-radio-group.layout-md-row md-radio-button,md-radio-group.layout-row md-radio-button,md-radio-group.layout-sm-row md-radio-button,md-radio-group.layout-xl-row md-radio-button,md-radio-group.layout-xs-row md-radio-button{margin-top:0;margin-bottom:0;margin-left:0;margin-right:16px}[dir=rtl] md-radio-group.layout-gt-lg-row md-radio-button,[dir=rtl] md-radio-group.layout-gt-md-row md-radio-button,[dir=rtl] md-radio-group.layout-gt-sm-row md-radio-button,[dir=rtl] md-radio-group.layout-gt-xs-row md-radio-button,[dir=rtl] md-radio-group.layout-lg-row md-radio-button,[dir=rtl] md-radio-group.layout-md-row md-radio-button,[dir=rtl] md-radio-group.layout-row md-radio-button,[dir=rtl] md-radio-group.layout-sm-row md-radio-button,[dir=rtl] md-radio-group.layout-xl-row md-radio-button,[dir=rtl] md-radio-group.layout-xs-row md-radio-button{margin-left:16px}[dir=rtl] md-radio-group.layout-gt-lg-row md-radio-button,[dir=rtl] md-radio-group.layout-gt-md-row md-radio-button,[dir=rtl] md-radio-group.layout-gt-sm-row md-radio-button,[dir=rtl] md-radio-group.layout-gt-xs-row md-radio-button,[dir=rtl] md-radio-group.layout-lg-row md-radio-button,[dir=rtl] md-radio-group.layout-md-row md-radio-button,[dir=rtl] md-radio-group.layout-row md-radio-button,[dir=rtl] md-radio-group.layout-sm-row md-radio-button,[dir=rtl] md-radio-group.layout-xl-row md-radio-button,[dir=rtl] md-radio-group.layout-xs-row md-radio-button{margin-right:0}md-radio-group.layout-gt-lg-row md-radio-button:last-of-type,md-radio-group.layout-gt-md-row md-radio-button:last-of-type,md-radio-group.layout-gt-sm-row md-radio-button:last-of-type,md-radio-group.layout-gt-xs-row md-radio-button:last-of-type,md-radio-group.layout-lg-row md-radio-button:last-of-type,md-radio-group.layout-md-row md-radio-button:last-of-type,md-radio-group.layout-row md-radio-button:last-of-type,md-radio-group.layout-sm-row md-radio-button:last-of-type,md-radio-group.layout-xl-row md-radio-button:last-of-type,md-radio-group.layout-xs-row md-radio-button:last-of-type{margin-left:0;margin-right:0}md-radio-group:focus{outline:0}md-radio-group.md-focused .md-checked .md-container:before{left:-8px;top:-8px;right:-8px;bottom:-8px}md-radio-group[disabled] md-radio-button{cursor:default}md-radio-group[disabled] md-radio-button .md-container{cursor:default}.md-inline-form md-radio-group{margin:18px 0 19px}.md-inline-form md-radio-group md-radio-button{display:inline-block;height:30px;padding:2px;box-sizing:border-box;margin-top:0;margin-bottom:0}@media screen and (-ms-high-contrast:active){md-radio-button.md-default-theme .md-on{background-color:#fff}}md-input-container:not([md-no-float]) .md-select-placeholder span:first-child{transition:transform .4s cubic-bezier(.25,.8,.25,1);transform-origin:left top}[dir=rtl] md-input-container:not([md-no-float]) .md-select-placeholder span:first-child{transform-origin:right top}md-input-container.md-input-focused:not([md-no-float]) .md-select-placeholder span:first-child{transform:translateY(-22px) translateX(-2px) scale(.75)}.md-select-menu-container{position:fixed;left:0;top:0;z-index:90;opacity:0;display:none;transform:translateY(-1px)}.md-select-menu-container:not(.md-clickable){pointer-events:none}.md-select-menu-container md-progress-circular{display:table;margin:24px auto!important}.md-select-menu-container.md-active{display:block;opacity:1}.md-select-menu-container.md-active md-select-menu{transition:all .4s cubic-bezier(.25,.8,.25,1);transition-duration:150ms}.md-select-menu-container.md-active md-select-menu>*{opacity:1;transition:all .3s cubic-bezier(.55,0,.55,.2);transition-duration:150ms;transition-delay:.1s}.md-select-menu-container.md-leave{opacity:0;transition:all .3s cubic-bezier(.55,0,.55,.2);transition-duration:250ms}md-input-container>md-select{margin:0;order:2}md-input-container:not(.md-input-has-value) md-select.ng-required:not(.md-no-asterisk) .md-select-value span:first-child:after,md-input-container:not(.md-input-has-value) md-select[required]:not(.md-no-asterisk) .md-select-value span:first-child:after{content:' *';font-size:13px;vertical-align:top}md-input-container.md-input-invalid md-select .md-select-value{border-bottom-style:solid;padding-bottom:1px}md-select{display:flex;margin:20px 0 26px 0}md-select.ng-required.ng-invalid:not(.md-no-asterisk) .md-select-value span:first-child:after,md-select[required].ng-invalid:not(.md-no-asterisk) .md-select-value span:first-child:after{content:' *';font-size:13px;vertical-align:top}md-select[disabled] .md-select-value{background-position:0 bottom;background-size:4px 1px;background-repeat:repeat-x;margin-bottom:-1px}md-select:focus{outline:0}md-select[disabled]:hover{cursor:default}md-select:not([disabled]):hover{cursor:pointer}md-select:not([disabled]).ng-invalid.ng-touched .md-select-value{border-bottom-style:solid;padding-bottom:1px}md-select:not([disabled]):focus .md-select-value{border-bottom-width:2px;border-bottom-style:solid;padding-bottom:0}md-select:not([disabled]):focus.ng-invalid.ng-touched .md-select-value{padding-bottom:0}md-input-container.md-input-has-value .md-select-value>span:not(.md-select-icon){transform:translate3d(0,1px,0)}.md-select-value{display:flex;align-items:center;padding:2px 2px 1px;border-bottom-width:1px;border-bottom-style:solid;background-color:transparent;position:relative;box-sizing:content-box;min-width:64px;min-height:26px;flex-grow:1}.md-select-value>span:not(.md-select-icon){max-width:100%;flex:1 1 auto;text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.md-select-value>span:not(.md-select-icon) .md-text{display:inline}.md-select-value .md-select-icon{display:block;align-items:flex-end;text-align:end;width:24px;margin:0 4px;transform:translate3d(0,-2px,0);font-size:1.2rem}.md-select-value .md-select-icon:after{display:block;content:'\25BC';position:relative;top:2px;speak:none;font-size:13px;transform:scaleY(.5) scaleX(1)}.md-select-value.md-select-placeholder{display:flex;order:1;pointer-events:none;-webkit-font-smoothing:antialiased;padding-left:2px;z-index:1}md-select-menu{display:flex;flex-direction:column;box-shadow:0 1px 3px 0 rgba(0,0,0,.2),0 1px 1px 0 rgba(0,0,0,.14),0 2px 1px -1px rgba(0,0,0,.12);max-height:256px;min-height:48px;overflow-y:hidden;transform-origin:left top;transform:scale(1)}md-select-menu.md-reverse{flex-direction:column-reverse}md-select-menu:not(.md-overflow) md-content{padding-top:8px;padding-bottom:8px}[dir=rtl] md-select-menu{transform-origin:right top}md-select-menu md-content{min-width:136px;min-height:48px;max-height:256px;overflow-y:auto}md-select-menu>*{opacity:0}md-option{cursor:pointer;position:relative;display:flex;align-items:center;width:auto;transition:background .15s linear;padding:0 16px 0 16px;height:48px}md-option[disabled]{cursor:default}md-option:focus{outline:0}md-option .md-text{-webkit-touch-callout:none;-webkit-user-select:none;-khtml-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;width:auto;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}md-optgroup{display:block}md-optgroup label{display:block;font-size:14px;text-transform:uppercase;padding:16px;font-weight:500}md-optgroup md-option{padding-left:32px;padding-right:32px}@media screen and (-ms-high-contrast:active){.md-select-backdrop{background-color:transparent}md-select-menu{border:1px solid #fff}}md-select-menu[multiple] md-option.md-checkbox-enabled{padding-left:40px;padding-right:16px}[dir=rtl] md-select-menu[multiple] md-option.md-checkbox-enabled{padding-left:16px}[dir=rtl] md-select-menu[multiple] md-option.md-checkbox-enabled{padding-right:40px}md-select-menu[multiple] md-option.md-checkbox-enabled .md-container{position:absolute;top:50%;transform:translateY(-50%);box-sizing:border-box;display:inline-block;width:20px;height:20px;left:0;right:auto}[dir=rtl] md-select-menu[multiple] md-option.md-checkbox-enabled .md-container{left:auto}[dir=rtl] md-select-menu[multiple] md-option.md-checkbox-enabled .md-container{right:0}md-select-menu[multiple] md-option.md-checkbox-enabled .md-container:before{box-sizing:border-box;background-color:transparent;border-radius:50%;content:'';position:absolute;display:block;height:auto;left:0;top:0;right:0;bottom:0;transition:all .5s;width:auto}md-select-menu[multiple] md-option.md-checkbox-enabled .md-container:after{box-sizing:border-box;content:'';position:absolute;top:-10px;right:-10px;bottom:-10px;left:-10px}md-select-menu[multiple] md-option.md-checkbox-enabled .md-container .md-ripple-container{position:absolute;display:block;width:auto;height:auto;left:-15px;top:-15px;right:-15px;bottom:-15px}md-select-menu[multiple] md-option.md-checkbox-enabled .md-icon{box-sizing:border-box;transition:240ms;position:absolute;top:0;left:0;width:20px;height:20px;border-width:2px;border-style:solid;border-radius:2px}md-select-menu[multiple] md-option.md-checkbox-enabled[selected] .md-icon{border-color:transparent}md-select-menu[multiple] md-option.md-checkbox-enabled[selected] .md-icon:after{box-sizing:border-box;transform:rotate(45deg);position:absolute;left:4.6666666667px;top:.2222222222px;display:table;width:6.6666666667px;height:13.3333333333px;border-width:2px;border-style:solid;border-top:0;border-left:0;content:''}md-select-menu[multiple] md-option.md-checkbox-enabled[disabled]{cursor:default}md-select-menu[multiple] md-option.md-checkbox-enabled.md-indeterminate .md-icon:after{box-sizing:border-box;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);display:table;width:12px;height:2px;border-width:2px;border-style:solid;border-top:0;border-left:0;content:''}md-select-menu[multiple] md-option.md-checkbox-enabled .md-container{margin-left:10.6666666667px;margin-right:auto}[dir=rtl] md-select-menu[multiple] md-option.md-checkbox-enabled .md-container{margin-left:auto}[dir=rtl] md-select-menu[multiple] md-option.md-checkbox-enabled .md-container{margin-right:10.6666666667px}md-sidenav{box-sizing:border-box;position:absolute;flex-direction:column;z-index:60;width:320px;max-width:320px;bottom:0;overflow:auto;-webkit-overflow-scrolling:touch}md-sidenav ul{list-style:none}md-sidenav.md-closed{display:none}md-sidenav.md-closed-add,md-sidenav.md-closed-remove{display:flex;transition:.2s ease-in all}md-sidenav.md-closed-add.md-closed-add-active,md-sidenav.md-closed-remove.md-closed-remove-active{transition:all .4s cubic-bezier(.25,.8,.25,1)}md-sidenav.md-locked-open-add,md-sidenav.md-locked-open-remove{position:static;display:flex;transform:translate3d(0,0,0)}md-sidenav.md-locked-open,md-sidenav.md-locked-open-remove.md-closed,md-sidenav.md-locked-open.md-closed,md-sidenav.md-locked-open.md-closed.md-sidenav-left,md-sidenav.md-locked-open.md-closed.md-sidenav-right{position:static;display:flex;transform:translate3d(0,0,0)}md-sidenav.md-locked-open-remove-active{transition:width .3s cubic-bezier(.55,0,.55,.2),min-width .3s cubic-bezier(.55,0,.55,.2);width:0!important;min-width:0!important}md-sidenav.md-closed.md-locked-open-add{width:0!important;min-width:0!important;transform:translate3d(0,0,0)}md-sidenav.md-closed.md-locked-open-add-active{transition:width .3s cubic-bezier(.55,0,.55,.2),min-width .3s cubic-bezier(.55,0,.55,.2);width:320px;min-width:320px;transform:translate3d(0,0,0)}.md-sidenav-backdrop.md-locked-open{display:none}.md-sidenav-left,md-sidenav{left:0;top:0;transform:translate3d(0,0,0)}.md-sidenav-left.md-closed,md-sidenav.md-closed{transform:translate3d(-100%,0,0)}.md-sidenav-right{left:100%;top:0;transform:translate(-100%,0)}.md-sidenav-right.md-closed{transform:translate(0,0)}@media (min-width:600px){md-sidenav{max-width:400px}}@media (max-width:456px){md-sidenav{width:calc(100% - 56px);min-width:calc(100% - 56px);max-width:calc(100% - 56px)}}@media screen and (-ms-high-contrast:active){.md-sidenav-left,md-sidenav{border-right:1px solid #fff}.md-sidenav-right{border-left:1px solid #fff}}@keyframes sliderFocusThumb{0%{transform:scale(.7)}30%{transform:scale(1)}100%{transform:scale(.7)}}@keyframes sliderDiscreteFocusThumb{0%{transform:scale(.7)}50%{transform:scale(.8)}100%{transform:scale(0)}}@keyframes sliderDiscreteFocusRing{0%{transform:scale(.7);opacity:0}50%{transform:scale(1);opacity:1}100%{transform:scale(0)}}md-slider{height:48px;min-width:128px;position:relative;margin-left:4px;margin-right:4px;padding:0;display:block;flex-direction:row}md-slider *,md-slider :after{box-sizing:border-box}md-slider .md-slider-wrapper{outline:0;width:100%;height:100%}md-slider .md-slider-content{position:relative}md-slider .md-track-container{width:100%;position:absolute;top:23px;height:2px}md-slider .md-track{position:absolute;left:0;right:0;height:100%}md-slider .md-track-fill{transition:all .4s cubic-bezier(.25,.8,.25,1);transition-property:width,height}md-slider .md-track-ticks{position:absolute;left:0;right:0;height:100%}md-slider .md-track-ticks canvas{width:100%;height:100%}md-slider .md-thumb-container{position:absolute;left:0;top:50%;transform:translate3d(-50%,-50%,0);transition:all .4s cubic-bezier(.25,.8,.25,1);transition-property:left,right,bottom}[dir=rtl] md-slider .md-thumb-container{left:auto;right:0}md-slider .md-thumb{z-index:1;position:absolute;left:-10px;top:14px;width:20px;height:20px;border-radius:20px;transform:scale(.7);transition:all .4s cubic-bezier(.25,.8,.25,1)}[dir=rtl] md-slider .md-thumb{left:auto;right:-10px}md-slider .md-thumb:after{content:'';position:absolute;width:20px;height:20px;border-radius:20px;border-width:3px;border-style:solid;transition:inherit}md-slider .md-sign{display:flex;align-items:center;justify-content:center;position:absolute;left:-14px;top:-17px;width:28px;height:28px;border-radius:28px;transform:scale(.4) translate3d(0,67.5px,0);transition:all .3s cubic-bezier(.35,0,.25,1)}md-slider .md-sign:after{position:absolute;content:'';left:0;border-radius:16px;top:19px;border-left:14px solid transparent;border-right:14px solid transparent;border-top-width:16px;border-top-style:solid;opacity:0;transform:translate3d(0,-8px,0);transition:all .2s cubic-bezier(.35,0,.25,1)}[dir=rtl] md-slider .md-sign:after{left:auto;right:0}md-slider .md-sign .md-thumb-text{z-index:1;font-size:12px;font-weight:700}md-slider .md-focus-ring{position:absolute;left:-17px;top:7px;width:34px;height:34px;border-radius:34px;transform:scale(.7);opacity:0;transition:all .35s cubic-bezier(.35,0,.25,1)}[dir=rtl] md-slider .md-focus-ring{left:auto;right:-17px}md-slider .md-disabled-thumb{position:absolute;left:-14px;top:10px;width:28px;height:28px;border-radius:28px;transform:scale(.5);border-width:4px;border-style:solid;display:none}[dir=rtl] md-slider .md-disabled-thumb{left:auto;right:-14px}md-slider.md-min .md-sign{opacity:0}md-slider:focus{outline:0}md-slider.md-dragging .md-thumb-container,md-slider.md-dragging .md-track-fill{transition:none}md-slider:not([md-discrete]) .md-sign,md-slider:not([md-discrete]) .md-track-ticks{display:none}md-slider:not([md-discrete]):not([disabled]) .md-slider-wrapper .md-thumb:hover{transform:scale(.8)}md-slider:not([md-discrete]):not([disabled]) .md-slider-wrapper.md-focused .md-focus-ring{transform:scale(1);opacity:1}md-slider:not([md-discrete]):not([disabled]) .md-slider-wrapper.md-focused .md-thumb{animation:sliderFocusThumb .7s cubic-bezier(.35,0,.25,1)}md-slider:not([md-discrete]):not([disabled]).md-active .md-slider-wrapper .md-thumb{transform:scale(1)}md-slider[md-discrete]:not([disabled]) .md-slider-wrapper.md-focused .md-focus-ring{transform:scale(0);animation:sliderDiscreteFocusRing .5s cubic-bezier(.35,0,.25,1)}md-slider[md-discrete]:not([disabled]) .md-slider-wrapper.md-focused .md-thumb{animation:sliderDiscreteFocusThumb .5s cubic-bezier(.35,0,.25,1)}md-slider[md-discrete]:not([disabled]) .md-slider-wrapper.md-focused .md-thumb,md-slider[md-discrete]:not([disabled]).md-active .md-thumb{transform:scale(0)}md-slider[md-discrete]:not([disabled]) .md-slider-wrapper.md-focused .md-sign,md-slider[md-discrete]:not([disabled]) .md-slider-wrapper.md-focused .md-sign:after,md-slider[md-discrete]:not([disabled]).md-active .md-sign,md-slider[md-discrete]:not([disabled]).md-active .md-sign:after{opacity:1;transform:translate3d(0,0,0) scale(1)}md-slider[md-discrete][disabled][readonly] .md-thumb{transform:scale(0)}md-slider[md-discrete][disabled][readonly] .md-sign,md-slider[md-discrete][disabled][readonly] .md-sign:after{opacity:1;transform:translate3d(0,0,0) scale(1)}md-slider[disabled] .md-track-fill{display:none}md-slider[disabled] .md-track-ticks{opacity:0}md-slider[disabled]:not([readonly]) .md-sign{opacity:0}md-slider[disabled] .md-thumb{transform:scale(.5)}md-slider[disabled] .md-disabled-thumb{display:block}md-slider[md-vertical]{flex-direction:column;min-height:128px;min-width:0}md-slider[md-vertical] .md-slider-wrapper{flex:1;padding-top:12px;padding-bottom:12px;width:48px;align-self:center;display:flex;justify-content:center}md-slider[md-vertical] .md-track-container{height:100%;width:2px;top:0;left:calc(50% - (2px / 2))}md-slider[md-vertical] .md-thumb-container{top:auto;margin-bottom:23px;left:calc(50% - 1px);bottom:0}md-slider[md-vertical] .md-thumb-container .md-thumb:after{left:1px}md-slider[md-vertical] .md-thumb-container .md-focus-ring{left:-16px}md-slider[md-vertical] .md-track-fill{bottom:0}md-slider[md-vertical][md-discrete] .md-sign{left:-40px;top:9.5px;transform:scale(.4) translate3d(67.5px,0,0)}md-slider[md-vertical][md-discrete] .md-sign:after{top:9.5px;left:19px;border-top:14px solid transparent;border-right:0;border-bottom:14px solid transparent;border-left-width:16px;border-left-style:solid;opacity:0;transform:translate3d(0,-8px,0);transition:all .2s ease-in-out}md-slider[md-vertical][md-discrete] .md-sign .md-thumb-text{z-index:1;font-size:12px;font-weight:700}md-slider[md-vertical][md-discrete] .md-focused .md-sign:after,md-slider[md-vertical][md-discrete].md-active .md-sign:after,md-slider[md-vertical][md-discrete][disabled][readonly] .md-sign:after{top:0}md-slider[md-vertical][disabled][readonly] .md-thumb{transform:scale(0)}md-slider[md-vertical][disabled][readonly] .md-sign,md-slider[md-vertical][disabled][readonly] .md-sign:after{opacity:1;transform:translate3d(0,0,0) scale(1)}md-slider[md-invert]:not([md-vertical]) .md-track-fill{left:auto;right:0}[dir=rtl] md-slider[md-invert]:not([md-vertical]) .md-track-fill{left:0}[dir=rtl] md-slider[md-invert]:not([md-vertical]) .md-track-fill{right:auto}md-slider[md-invert][md-vertical] .md-track-fill{bottom:auto;top:0}md-slider-container{display:flex;align-items:center;flex-direction:row}md-slider-container>:first-child:not(md-slider),md-slider-container>:last-child:not(md-slider){min-width:25px;max-width:42px;height:25px;transition:all .4s cubic-bezier(.25,.8,.25,1);transition-property:color,max-width}md-slider-container>:first-child:not(md-slider){margin-right:16px}[dir=rtl] md-slider-container>:first-child:not(md-slider){margin-right:auto;margin-left:16px}md-slider-container>:last-child:not(md-slider){margin-left:16px}[dir=rtl] md-slider-container>:last-child:not(md-slider){margin-left:auto;margin-right:16px}md-slider-container[md-vertical]{flex-direction:column}md-slider-container[md-vertical]>:first-child:not(md-slider),md-slider-container[md-vertical]>:last-child:not(md-slider){margin-right:0;margin-left:0;text-align:center}md-slider-container md-input-container input[type=number]{text-align:center;padding-left:15px;height:50px;margin-top:-25px}[dir=rtl] md-slider-container md-input-container input[type=number]{padding-left:0;padding-right:15px}@media screen and (-ms-high-contrast:active){md-slider.md-default-theme .md-track{border-bottom:1px solid #fff}}.md-sticky-clone{z-index:2;top:0;left:0;right:0;position:absolute!important;transform:translate3d(-9999px,-9999px,0)}.md-sticky-clone[sticky-state=active]{transform:translate3d(0,0,0)}.md-sticky-clone[sticky-state=active]:not(.md-sticky-no-effect) .md-subheader-inner{animation:subheaderStickyHoverIn .3s ease-out both}@keyframes subheaderStickyHoverIn{0%{box-shadow:0 0 0 0 transparent}100%{box-shadow:0 2px 4px 0 rgba(0,0,0,.16)}}@keyframes subheaderStickyHoverOut{0%{box-shadow:0 2px 4px 0 rgba(0,0,0,.16)}100%{box-shadow:0 0 0 0 transparent}}.md-subheader-wrapper:not(.md-sticky-no-effect){transition:.2s ease-out margin}.md-subheader-wrapper:not(.md-sticky-no-effect) .md-subheader{margin:0}.md-subheader-wrapper:not(.md-sticky-no-effect).md-sticky-clone{z-index:2}.md-subheader-wrapper:not(.md-sticky-no-effect)[sticky-state=active]{margin-top:-2px}.md-subheader-wrapper:not(.md-sticky-no-effect):not(.md-sticky-clone)[sticky-prev-state=active] .md-subheader-inner:after{animation:subheaderStickyHoverOut .3s ease-out both}.md-subheader{display:block;font-size:14px;font-weight:500;line-height:1em;margin:0;position:relative}.md-subheader .md-subheader-inner{display:block;padding:16px}.md-subheader .md-subheader-content{display:block;z-index:1;position:relative}.md-inline-form md-switch{margin-top:18px;margin-bottom:19px}md-switch{margin:16px 0;white-space:nowrap;cursor:pointer;outline:0;user-select:none;height:30px;line-height:28px;align-items:center;display:flex;margin-left:inherit;margin-right:16px}[dir=rtl] md-switch{margin-left:16px}[dir=rtl] md-switch{margin-right:inherit}md-switch:last-of-type{margin-left:inherit;margin-right:0}[dir=rtl] md-switch:last-of-type{margin-left:0}[dir=rtl] md-switch:last-of-type{margin-right:inherit}md-switch[disabled]{cursor:default}md-switch[disabled] .md-container{cursor:default}md-switch .md-container{cursor:grab;width:36px;height:24px;position:relative;user-select:none;margin-right:8px;float:left}[dir=rtl] md-switch .md-container{margin-right:auto;margin-left:8px}md-switch:not([disabled]) .md-dragging,md-switch:not([disabled]).md-dragging .md-container{cursor:grabbing}md-switch.md-focused:not([disabled]) .md-thumb:before{left:-8px;top:-8px;right:-8px;bottom:-8px}md-switch.md-focused:not([disabled]):not(.md-checked) .md-thumb:before{background-color:rgba(0,0,0,.12)}md-switch .md-label{border-color:transparent;border-width:0;float:left}md-switch .md-bar{left:1px;width:34px;top:5px;height:14px;border-radius:8px;position:absolute}md-switch .md-thumb-container{top:2px;left:0;width:16px;position:absolute;transform:translate3d(0,0,0);z-index:1}md-switch.md-checked .md-thumb-container{transform:translate3d(100%,0,0)}md-switch .md-thumb{position:absolute;margin:0;left:0;top:0;outline:0;height:20px;width:20px;border-radius:50%;box-shadow:0 1px 3px 0 rgba(0,0,0,.2),0 1px 1px 0 rgba(0,0,0,.14),0 2px 1px -1px rgba(0,0,0,.12)}md-switch .md-thumb:before{background-color:transparent;border-radius:50%;content:'';position:absolute;display:block;height:auto;left:0;top:0;right:0;bottom:0;transition:all .5s;width:auto}md-switch .md-thumb .md-ripple-container{position:absolute;display:block;width:auto;height:auto;left:-20px;top:-20px;right:-20px;bottom:-20px}md-switch:not(.md-dragging) .md-bar,md-switch:not(.md-dragging) .md-thumb,md-switch:not(.md-dragging) .md-thumb-container{transition:all 80ms linear;transition-property:transform,background-color}md-switch:not(.md-dragging) .md-bar,md-switch:not(.md-dragging) .md-thumb{transition-delay:50ms}@media screen and (-ms-high-contrast:active){md-switch.md-default-theme .md-bar{background-color:#666}md-switch.md-default-theme.md-checked .md-bar{background-color:#9e9e9e}md-switch.md-default-theme .md-thumb{background-color:#fff}}@keyframes md-tab-content-hide{0%{opacity:1}50%{opacity:1}100%{opacity:0}}md-tab-data{position:absolute;top:0;left:0;right:0;bottom:0;z-index:-1;opacity:0}md-tabs{display:block;margin:0;border-radius:2px;overflow:hidden;position:relative;flex-shrink:0}md-tabs:not(.md-no-tab-content):not(.md-dynamic-height){min-height:248px}md-tabs[md-align-tabs=bottom]{padding-bottom:48px}md-tabs[md-align-tabs=bottom] md-tabs-wrapper{position:absolute;bottom:0;left:0;right:0;height:48px;z-index:2}md-tabs[md-align-tabs=bottom] md-tabs-content-wrapper{top:0;bottom:48px}md-tabs.md-dynamic-height md-tabs-content-wrapper{min-height:0;position:relative;top:auto;left:auto;right:auto;bottom:auto;overflow:visible}md-tabs.md-dynamic-height md-tab-content.md-active{position:relative}md-tabs[md-border-bottom] md-tabs-wrapper{border-width:0 0 1px;border-style:solid}md-tabs[md-border-bottom]:not(.md-dynamic-height) md-tabs-content-wrapper{top:49px}md-tabs-wrapper{display:block;position:relative;transform:translate3d(0,0,0)}md-tabs-wrapper md-next-button,md-tabs-wrapper md-prev-button{height:100%;width:32px;position:absolute;top:50%;transform:translateY(-50%);line-height:1em;z-index:2;cursor:pointer;font-size:16px;background:transparent no-repeat center center;transition:all .5s cubic-bezier(.35,0,.25,1)}md-tabs-wrapper md-next-button:focus,md-tabs-wrapper md-prev-button:focus{outline:0}md-tabs-wrapper md-next-button.md-disabled,md-tabs-wrapper md-prev-button.md-disabled{opacity:.25;cursor:default}md-tabs-wrapper md-next-button.ng-leave,md-tabs-wrapper md-prev-button.ng-leave{transition:none}md-tabs-wrapper md-next-button md-icon,md-tabs-wrapper md-prev-button md-icon{position:absolute;top:50%;left:50%;transform:translate3d(-50%,-50%,0)}md-tabs-wrapper md-prev-button{left:0;background-image:url(data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4gPCEtLSBHZW5lcmF0b3I6IEFkb2JlIElsbHVzdHJhdG9yIDE3LjEuMCwgU1ZHIEV4cG9ydCBQbHVnLUluIC4gU1ZHIFZlcnNpb246IDYuMDAgQnVpbGQgMCkgIC0tPiA8IURPQ1RZUEUgc3ZnIFBVQkxJQyAiLS8vVzNDLy9EVEQgU1ZHIDEuMS8vRU4iICJodHRwOi8vd3d3LnczLm9yZy9HcmFwaGljcy9TVkcvMS4xL0RURC9zdmcxMS5kdGQiPiA8c3ZnIHZlcnNpb249IjEuMSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayIgeD0iMHB4IiB5PSIwcHgiIHdpZHRoPSIyNHB4IiBoZWlnaHQ9IjI0cHgiIHZpZXdCb3g9IjAgMCAyNCAyNCIgZW5hYmxlLWJhY2tncm91bmQ9Im5ldyAwIDAgMjQgMjQiIHhtbDpzcGFjZT0icHJlc2VydmUiPiA8ZyBpZD0iSGVhZGVyIj4gPGc+IDxyZWN0IHg9Ii02MTgiIHk9Ii0xMjA4IiBmaWxsPSJub25lIiB3aWR0aD0iMTQwMCIgaGVpZ2h0PSIzNjAwIi8+IDwvZz4gPC9nPiA8ZyBpZD0iTGFiZWwiPiA8L2c+IDxnIGlkPSJJY29uIj4gPGc+IDxwb2x5Z29uIHBvaW50cz0iMTUuNCw3LjQgMTQsNiA4LDEyIDE0LDE4IDE1LjQsMTYuNiAxMC44LDEyIAkJIiBzdHlsZT0iZmlsbDp3aGl0ZTsiLz4gPHJlY3QgZmlsbD0ibm9uZSIgd2lkdGg9IjI0IiBoZWlnaHQ9IjI0Ii8+IDwvZz4gPC9nPiA8ZyBpZD0iR3JpZCIgZGlzcGxheT0ibm9uZSI+IDxnIGRpc3BsYXk9ImlubGluZSI+IDwvZz4gPC9nPiA8L3N2Zz4NCg==)}[dir=rtl] md-tabs-wrapper md-prev-button{left:auto;right:0}md-tabs-wrapper md-next-button{right:0;background-image:url(data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4gPCEtLSBHZW5lcmF0b3I6IEFkb2JlIElsbHVzdHJhdG9yIDE3LjEuMCwgU1ZHIEV4cG9ydCBQbHVnLUluIC4gU1ZHIFZlcnNpb246IDYuMDAgQnVpbGQgMCkgIC0tPiA8IURPQ1RZUEUgc3ZnIFBVQkxJQyAiLS8vVzNDLy9EVEQgU1ZHIDEuMS8vRU4iICJodHRwOi8vd3d3LnczLm9yZy9HcmFwaGljcy9TVkcvMS4xL0RURC9zdmcxMS5kdGQiPiA8c3ZnIHZlcnNpb249IjEuMSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayIgeD0iMHB4IiB5PSIwcHgiIHdpZHRoPSIyNHB4IiBoZWlnaHQ9IjI0cHgiIHZpZXdCb3g9IjAgMCAyNCAyNCIgZW5hYmxlLWJhY2tncm91bmQ9Im5ldyAwIDAgMjQgMjQiIHhtbDpzcGFjZT0icHJlc2VydmUiPiA8ZyBpZD0iSGVhZGVyIj4gPGc+IDxyZWN0IHg9Ii02MTgiIHk9Ii0xMzM2IiBmaWxsPSJub25lIiB3aWR0aD0iMTQwMCIgaGVpZ2h0PSIzNjAwIi8+IDwvZz4gPC9nPiA8ZyBpZD0iTGFiZWwiPiA8L2c+IDxnIGlkPSJJY29uIj4gPGc+IDxwb2x5Z29uIHBvaW50cz0iMTAsNiA4LjYsNy40IDEzLjIsMTIgOC42LDE2LjYgMTAsMTggMTYsMTIgCQkiIHN0eWxlPSJmaWxsOndoaXRlOyIvPiA8cmVjdCBmaWxsPSJub25lIiB3aWR0aD0iMjQiIGhlaWdodD0iMjQiLz4gPC9nPiA8L2c+IDxnIGlkPSJHcmlkIiBkaXNwbGF5PSJub25lIj4gPGcgZGlzcGxheT0iaW5saW5lIj4gPC9nPiA8L2c+IDwvc3ZnPg0K)}[dir=rtl] md-tabs-wrapper md-next-button{right:auto;left:0}md-tabs-wrapper md-next-button md-icon{transform:translate3d(-50%,-50%,0) rotate(180deg)}md-tabs-wrapper.md-stretch-tabs md-pagination-wrapper{width:100%;display:flex;flex-direction:row}md-tabs-wrapper.md-stretch-tabs md-pagination-wrapper md-tab-item{flex-grow:1}md-tabs-canvas{position:relative;overflow:hidden;display:block;height:48px}md-tabs-canvas:after{content:'';display:table;clear:both}md-tabs-canvas .md-dummy-wrapper{position:absolute;top:0;left:0}[dir=rtl] md-tabs-canvas .md-dummy-wrapper{left:auto;right:0}md-tabs-canvas.md-paginated{margin:0 32px}md-tabs-canvas.md-center-tabs{display:flex;flex-direction:column;text-align:center}md-tabs-canvas.md-center-tabs .md-tab{float:none;display:inline-block}md-pagination-wrapper{height:48px;display:block;transition:transform .5s cubic-bezier(.35,0,.25,1);position:absolute;width:999999px;left:0;transform:translate3d(0,0,0)}md-pagination-wrapper:after{content:'';display:table;clear:both}[dir=rtl] md-pagination-wrapper{left:auto;right:0}md-pagination-wrapper.md-center-tabs{position:relative;width:auto;margin:0 auto}md-tabs-content-wrapper{display:block;position:absolute;top:48px;left:0;right:0;bottom:0;overflow:hidden}md-tab-content{display:block;position:absolute;top:0;left:0;right:0;bottom:0;transition:transform .5s cubic-bezier(.35,0,.25,1);overflow:auto;transform:translate3d(0,0,0)}md-tab-content.md-no-scroll{bottom:auto;overflow:hidden}md-tab-content.md-no-transition,md-tab-content.ng-leave{transition:none}md-tab-content.md-left:not(.md-active){transform:translateX(-100%);animation:1s md-tab-content-hide;opacity:0}[dir=rtl] md-tab-content.md-left:not(.md-active){transform:translateX(100%)}md-tab-content.md-left:not(.md-active) *{transition:visibility 0s linear;transition-delay:.5s;visibility:hidden}md-tab-content.md-right:not(.md-active){transform:translateX(100%);animation:1s md-tab-content-hide;opacity:0}[dir=rtl] md-tab-content.md-right:not(.md-active){transform:translateX(-100%)}md-tab-content.md-right:not(.md-active) *{transition:visibility 0s linear;transition-delay:.5s;visibility:hidden}md-tab-content>div.ng-leave{animation:1s md-tab-content-hide}md-ink-bar{position:absolute;left:auto;right:auto;bottom:0;height:2px}md-ink-bar.md-left{transition:left 125ms cubic-bezier(.35,0,.25,1),right .25s cubic-bezier(.35,0,.25,1)}md-ink-bar.md-right{transition:left .25s cubic-bezier(.35,0,.25,1),right 125ms cubic-bezier(.35,0,.25,1)}md-tab{position:absolute;z-index:-1;left:-9999px}.md-tab{font-size:14px;text-align:center;line-height:24px;padding:12px 24px;transition:background-color .35s cubic-bezier(.35,0,.25,1);cursor:pointer;white-space:nowrap;position:relative;text-transform:uppercase;float:left;font-weight:500;box-sizing:border-box;overflow:hidden;text-overflow:ellipsis}[dir=rtl] .md-tab{float:right}.md-tab.md-focused{box-shadow:none;outline:0}.md-tab.md-active{cursor:default}.md-tab.md-disabled{pointer-events:none;touch-action:pan-y;user-select:none;-webkit-user-drag:none;opacity:.5;cursor:default}.md-tab.ng-leave{transition:none}md-toolbar+md-tabs{border-top-left-radius:0;border-top-right-radius:0}.md-toast-text{padding:0 6px}md-toast{position:absolute;z-index:105;box-sizing:border-box;cursor:default;overflow:hidden;padding:8px;opacity:1;transition:all .4s cubic-bezier(.25,.8,.25,1)}md-toast .md-toast-content{display:flex;direction:row;align-items:center;max-height:168px;max-width:100%;min-height:48px;padding:0 18px;box-shadow:0 2px 5px 0 rgba(0,0,0,.26);border-radius:2px;font-size:14px;overflow:hidden;transform:translate3d(0,0,0) rotateZ(0);transition:all .4s cubic-bezier(.25,.8,.25,1);justify-content:flex-start}md-toast .md-toast-content::before{content:'';min-height:48px;visibility:hidden;display:inline-block}[dir=rtl] md-toast .md-toast-content{justify-content:flex-end}md-toast .md-toast-content span{flex:1 1 0%;box-sizing:border-box;min-width:0}md-toast.md-capsule{border-radius:24px}md-toast.md-capsule .md-toast-content{border-radius:24px}md-toast.ng-leave-active .md-toast-content{transition:all .3s cubic-bezier(.55,0,.55,.2)}md-toast.md-swipedown .md-toast-content,md-toast.md-swipeleft .md-toast-content,md-toast.md-swiperight .md-toast-content,md-toast.md-swipeup .md-toast-content{transition:all .4s cubic-bezier(.25,.8,.25,1)}md-toast.ng-enter{opacity:0}md-toast.ng-enter .md-toast-content{transform:translate3d(0,100%,0)}md-toast.ng-enter.md-top .md-toast-content{transform:translate3d(0,-100%,0)}md-toast.ng-enter.ng-enter-active{opacity:1}md-toast.ng-enter.ng-enter-active .md-toast-content{transform:translate3d(0,0,0)}md-toast.ng-leave.ng-leave-active .md-toast-content{opacity:0;transform:translate3d(0,100%,0)}md-toast.ng-leave.ng-leave-active.md-swipeup .md-toast-content{transform:translate3d(0,-50%,0)}md-toast.ng-leave.ng-leave-active.md-swipedown .md-toast-content{transform:translate3d(0,50%,0)}md-toast.ng-leave.ng-leave-active.md-top .md-toast-content{transform:translate3d(0,-100%,0)}md-toast .md-action{line-height:19px;margin-left:24px;margin-right:0;cursor:pointer;text-transform:uppercase;float:right}md-toast .md-button{min-width:0;margin-right:0;margin-left:12px}[dir=rtl] md-toast .md-button{margin-right:12px}[dir=rtl] md-toast .md-button{margin-left:0}@media (max-width:959px){md-toast{left:0;right:0;width:100%;max-width:100%;min-width:0;border-radius:0;bottom:0;padding:0}md-toast.ng-leave.ng-leave-active.md-swipeup .md-toast-content{transform:translate3d(0,-50%,0)}md-toast.ng-leave.ng-leave-active.md-swipedown .md-toast-content{transform:translate3d(0,50%,0)}}@media (min-width:960px){md-toast{min-width:304px}md-toast.md-bottom{bottom:0}md-toast.md-left{left:0}md-toast.md-right{right:0}md-toast.md-top{top:0}md-toast._md-start{left:0}[dir=rtl] md-toast._md-start{left:auto;right:0}md-toast._md-end{right:0}[dir=rtl] md-toast._md-end{right:auto;left:0}md-toast.ng-leave.ng-leave-active.md-swipeleft .md-toast-content{transform:translate3d(-50%,0,0)}md-toast.ng-leave.ng-leave-active.md-swiperight .md-toast-content{transform:translate3d(50%,0,0)}}@media (min-width:1920px){md-toast .md-toast-content{max-width:568px}}@media screen and (-ms-high-contrast:active){md-toast{border:1px solid #fff}}.md-toast-animating{overflow:hidden!important}md-toolbar{box-sizing:border-box;display:flex;flex-direction:column;position:relative;z-index:2;font-size:20px;min-height:64px;width:100%}md-toolbar._md-toolbar-transitions{transition-duration:.5s;transition-timing-function:cubic-bezier(.35,0,.25,1);transition-property:background-color,fill,color}md-toolbar.md-whiteframe-z1-add,md-toolbar.md-whiteframe-z1-remove{transition:box-shadow .5s linear}md-toolbar md-toolbar-filler{width:72px}md-toolbar *,md-toolbar :after,md-toolbar :before{box-sizing:border-box}md-toolbar.ng-animate{transition:none}md-toolbar.md-tall{height:128px;min-height:128px;max-height:128px}md-toolbar.md-medium-tall{height:88px;min-height:88px;max-height:88px}md-toolbar.md-medium-tall .md-toolbar-tools{height:48px;min-height:48px;max-height:48px}md-toolbar>.md-indent{margin-left:64px}[dir=rtl] md-toolbar>.md-indent{margin-left:auto;margin-right:64px}md-toolbar~md-content>md-list{padding:0}md-toolbar~md-content>md-list md-list-item:last-child md-divider{display:none}.md-toolbar-tools{font-size:20px;letter-spacing:.005em;box-sizing:border-box;font-weight:400;display:flex;align-items:center;flex-direction:row;width:100%;height:64px;max-height:64px;padding:0 16px;margin:0}.md-toolbar-tools h1,.md-toolbar-tools h2,.md-toolbar-tools h3{font-size:inherit;font-weight:inherit;margin:inherit}.md-toolbar-tools a{color:inherit;text-decoration:none}.md-toolbar-tools .fill-height{display:flex;align-items:center}.md-toolbar-tools .md-button{margin-top:0;margin-bottom:0}.md-toolbar-tools .md-button,.md-toolbar-tools .md-button.md-icon-button md-icon{transition-duration:.5s;transition-timing-function:cubic-bezier(.35,0,.25,1);transition-property:background-color,fill,color}.md-toolbar-tools .md-button.md-icon-button md-icon.ng-animate,.md-toolbar-tools .md-button.ng-animate{transition:none}.md-toolbar-tools>.md-button:first-child{margin-left:-8px}[dir=rtl] .md-toolbar-tools>.md-button:first-child{margin-left:auto;margin-right:-8px}.md-toolbar-tools>.md-button:last-child{margin-right:-8px}[dir=rtl] .md-toolbar-tools>.md-button:last-child{margin-right:auto;margin-left:-8px}.md-toolbar-tools>md-menu:last-child{margin-right:-8px}[dir=rtl] .md-toolbar-tools>md-menu:last-child{margin-right:auto;margin-left:-8px}.md-toolbar-tools>md-menu:last-child>.md-button{margin-right:0}[dir=rtl] .md-toolbar-tools>md-menu:last-child>.md-button{margin-right:auto;margin-left:0}@media screen and (-ms-high-contrast:active){.md-toolbar-tools{border-bottom:1px solid #fff}}@media (min-width:0) and (max-width:959px) and (orientation:portrait){md-toolbar{min-height:56px}.md-toolbar-tools{height:56px;max-height:56px}}@media (min-width:0) and (max-width:959px) and (orientation:landscape){md-toolbar{min-height:48px}.md-toolbar-tools{height:48px;max-height:48px}}md-tooltip{position:absolute;z-index:100;overflow:hidden;pointer-events:none;border-radius:4px;font-weight:500;font-size:14px}@media (min-width:960px){md-tooltip{font-size:10px}}md-tooltip .md-content{position:relative;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;transform-origin:center top;transform:scale(0);opacity:0;height:32px;line-height:32px;padding-left:16px;padding-right:16px}@media (min-width:960px){md-tooltip .md-content{height:22px;line-height:22px;padding-left:8px;padding-right:8px}}md-tooltip .md-content.md-show-add{transition:all .4s cubic-bezier(.25,.8,.25,1);transition-duration:.2s;transform:scale(0);opacity:0}md-tooltip .md-content.md-show,md-tooltip .md-content.md-show-add-active{transform:scale(1);opacity:.9;transform-origin:center top}md-tooltip .md-content.md-show-remove{transition:all .4s cubic-bezier(.25,.8,.25,1);transition-duration:.2s}md-tooltip .md-content.md-show-remove.md-show-remove-active{transform:scale(0);opacity:0}md-tooltip.md-hide{transition:all .3s cubic-bezier(.55,0,.55,.2)}md-tooltip.md-show{transition:all .4s cubic-bezier(.25,.8,.25,1);pointer-events:auto}.md-virtual-repeat-container{box-sizing:border-box;display:block;margin:0;overflow:hidden;padding:0;position:relative}.md-virtual-repeat-container .md-virtual-repeat-scroller{bottom:0;box-sizing:border-box;left:0;margin:0;overflow-x:hidden;padding:0;position:absolute;right:0;top:0;-webkit-overflow-scrolling:touch}.md-virtual-repeat-container .md-virtual-repeat-sizer{box-sizing:border-box;height:1px;display:block;margin:0;padding:0;width:1px}.md-virtual-repeat-container .md-virtual-repeat-offsetter{box-sizing:border-box;left:0;margin:0;padding:0;position:absolute;right:0;top:0}.md-virtual-repeat-container.md-orient-horizontal .md-virtual-repeat-scroller{overflow-x:auto;overflow-y:hidden}.md-virtual-repeat-container.md-orient-horizontal .md-virtual-repeat-offsetter{bottom:16px;right:auto;white-space:nowrap}[dir=rtl] .md-virtual-repeat-container.md-orient-horizontal .md-virtual-repeat-offsetter{right:auto;left:auto}.md-whiteframe-1dp,.md-whiteframe-z1{box-shadow:0 1px 3px 0 rgba(0,0,0,.2),0 1px 1px 0 rgba(0,0,0,.14),0 2px 1px -1px rgba(0,0,0,.12)}.md-whiteframe-2dp{box-shadow:0 1px 5px 0 rgba(0,0,0,.2),0 2px 2px 0 rgba(0,0,0,.14),0 3px 1px -2px rgba(0,0,0,.12)}.md-whiteframe-3dp{box-shadow:0 1px 8px 0 rgba(0,0,0,.2),0 3px 4px 0 rgba(0,0,0,.14),0 3px 3px -2px rgba(0,0,0,.12)}.md-whiteframe-4dp,.md-whiteframe-z2{box-shadow:0 2px 4px -1px rgba(0,0,0,.2),0 4px 5px 0 rgba(0,0,0,.14),0 1px 10px 0 rgba(0,0,0,.12)}.md-whiteframe-5dp{box-shadow:0 3px 5px -1px rgba(0,0,0,.2),0 5px 8px 0 rgba(0,0,0,.14),0 1px 14px 0 rgba(0,0,0,.12)}.md-whiteframe-6dp{box-shadow:0 3px 5px -1px rgba(0,0,0,.2),0 6px 10px 0 rgba(0,0,0,.14),0 1px 18px 0 rgba(0,0,0,.12)}.md-whiteframe-7dp,.md-whiteframe-z3{box-shadow:0 4px 5px -2px rgba(0,0,0,.2),0 7px 10px 1px rgba(0,0,0,.14),0 2px 16px 1px rgba(0,0,0,.12)}.md-whiteframe-8dp{box-shadow:0 5px 5px -3px rgba(0,0,0,.2),0 8px 10px 1px rgba(0,0,0,.14),0 3px 14px 2px rgba(0,0,0,.12)}.md-whiteframe-9dp{box-shadow:0 5px 6px -3px rgba(0,0,0,.2),0 9px 12px 1px rgba(0,0,0,.14),0 3px 16px 2px rgba(0,0,0,.12)}.md-whiteframe-10dp,.md-whiteframe-z4{box-shadow:0 6px 6px -3px rgba(0,0,0,.2),0 10px 14px 1px rgba(0,0,0,.14),0 4px 18px 3px rgba(0,0,0,.12)}.md-whiteframe-11dp{box-shadow:0 6px 7px -4px rgba(0,0,0,.2),0 11px 15px 1px rgba(0,0,0,.14),0 4px 20px 3px rgba(0,0,0,.12)}.md-whiteframe-12dp{box-shadow:0 7px 8px -4px rgba(0,0,0,.2),0 12px 17px 2px rgba(0,0,0,.14),0 5px 22px 4px rgba(0,0,0,.12)}.md-whiteframe-13dp,.md-whiteframe-z5{box-shadow:0 7px 8px -4px rgba(0,0,0,.2),0 13px 19px 2px rgba(0,0,0,.14),0 5px 24px 4px rgba(0,0,0,.12)}.md-whiteframe-14dp{box-shadow:0 7px 9px -4px rgba(0,0,0,.2),0 14px 21px 2px rgba(0,0,0,.14),0 5px 26px 4px rgba(0,0,0,.12)}.md-whiteframe-15dp{box-shadow:0 8px 9px -5px rgba(0,0,0,.2),0 15px 22px 2px rgba(0,0,0,.14),0 6px 28px 5px rgba(0,0,0,.12)}.md-whiteframe-16dp{box-shadow:0 8px 10px -5px rgba(0,0,0,.2),0 16px 24px 2px rgba(0,0,0,.14),0 6px 30px 5px rgba(0,0,0,.12)}.md-whiteframe-17dp{box-shadow:0 8px 11px -5px rgba(0,0,0,.2),0 17px 26px 2px rgba(0,0,0,.14),0 6px 32px 5px rgba(0,0,0,.12)}.md-whiteframe-18dp{box-shadow:0 9px 11px -5px rgba(0,0,0,.2),0 18px 28px 2px rgba(0,0,0,.14),0 7px 34px 6px rgba(0,0,0,.12)}.md-whiteframe-19dp{box-shadow:0 9px 12px -6px rgba(0,0,0,.2),0 19px 29px 2px rgba(0,0,0,.14),0 7px 36px 6px rgba(0,0,0,.12)}.md-whiteframe-20dp{box-shadow:0 10px 13px -6px rgba(0,0,0,.2),0 20px 31px 3px rgba(0,0,0,.14),0 8px 38px 7px rgba(0,0,0,.12)}.md-whiteframe-21dp{box-shadow:0 10px 13px -6px rgba(0,0,0,.2),0 21px 33px 3px rgba(0,0,0,.14),0 8px 40px 7px rgba(0,0,0,.12)}.md-whiteframe-22dp{box-shadow:0 10px 14px -6px rgba(0,0,0,.2),0 22px 35px 3px rgba(0,0,0,.14),0 8px 42px 7px rgba(0,0,0,.12)}.md-whiteframe-23dp{box-shadow:0 11px 14px -7px rgba(0,0,0,.2),0 23px 36px 3px rgba(0,0,0,.14),0 9px 44px 8px rgba(0,0,0,.12)}.md-whiteframe-24dp{box-shadow:0 11px 15px -7px rgba(0,0,0,.2),0 24px 38px 3px rgba(0,0,0,.14),0 9px 46px 8px rgba(0,0,0,.12)}@media screen and (-ms-high-contrast:active){md-whiteframe{border:1px solid #fff}}@media print{[md-whiteframe],md-whiteframe{background-color:#fff}}.ng-cloak,.x-ng-cloak,[data-ng-cloak],[ng-cloak],[ng\:cloak],[x-ng-cloak]{display:none!important}@-moz-document url-prefix(){.layout-fill{margin:0;width:100%;min-height:100%;height:100%}}.flex-order{order:0}.flex-order--20{order:-20}.flex-order--19{order:-19}.flex-order--18{order:-18}.flex-order--17{order:-17}.flex-order--16{order:-16}.flex-order--15{order:-15}.flex-order--14{order:-14}.flex-order--13{order:-13}.flex-order--12{order:-12}.flex-order--11{order:-11}.flex-order--10{order:-10}.flex-order--9{order:-9}.flex-order--8{order:-8}.flex-order--7{order:-7}.flex-order--6{order:-6}.flex-order--5{order:-5}.flex-order--4{order:-4}.flex-order--3{order:-3}.flex-order--2{order:-2}.flex-order--1{order:-1}.flex-order-0{order:0}.flex-order-1{order:1}.flex-order-2{order:2}.flex-order-3{order:3}.flex-order-4{order:4}.flex-order-5{order:5}.flex-order-6{order:6}.flex-order-7{order:7}.flex-order-8{order:8}.flex-order-9{order:9}.flex-order-10{order:10}.flex-order-11{order:11}.flex-order-12{order:12}.flex-order-13{order:13}.flex-order-14{order:14}.flex-order-15{order:15}.flex-order-16{order:16}.flex-order-17{order:17}.flex-order-18{order:18}.flex-order-19{order:19}.flex-order-20{order:20}.flex-offset-0,.offset-0{margin-left:0}[dir=rtl] .flex-offset-0,[dir=rtl] .offset-0{margin-left:auto;margin-right:0}.flex-offset-5,.offset-5{margin-left:5%}[dir=rtl] .flex-offset-5,[dir=rtl] .offset-5{margin-left:auto;margin-right:5%}.flex-offset-10,.offset-10{margin-left:10%}[dir=rtl] .flex-offset-10,[dir=rtl] .offset-10{margin-left:auto;margin-right:10%}.flex-offset-15,.offset-15{margin-left:15%}[dir=rtl] .flex-offset-15,[dir=rtl] .offset-15{margin-left:auto;margin-right:15%}.flex-offset-20,.offset-20{margin-left:20%}[dir=rtl] .flex-offset-20,[dir=rtl] .offset-20{margin-left:auto;margin-right:20%}.flex-offset-25,.offset-25{margin-left:25%}[dir=rtl] .flex-offset-25,[dir=rtl] .offset-25{margin-left:auto;margin-right:25%}.flex-offset-30,.offset-30{margin-left:30%}[dir=rtl] .flex-offset-30,[dir=rtl] .offset-30{margin-left:auto;margin-right:30%}.flex-offset-35,.offset-35{margin-left:35%}[dir=rtl] .flex-offset-35,[dir=rtl] .offset-35{margin-left:auto;margin-right:35%}.flex-offset-40,.offset-40{margin-left:40%}[dir=rtl] .flex-offset-40,[dir=rtl] .offset-40{margin-left:auto;margin-right:40%}.flex-offset-45,.offset-45{margin-left:45%}[dir=rtl] .flex-offset-45,[dir=rtl] .offset-45{margin-left:auto;margin-right:45%}.flex-offset-50,.offset-50{margin-left:50%}[dir=rtl] .flex-offset-50,[dir=rtl] .offset-50{margin-left:auto;margin-right:50%}.flex-offset-55,.offset-55{margin-left:55%}[dir=rtl] .flex-offset-55,[dir=rtl] .offset-55{margin-left:auto;margin-right:55%}.flex-offset-60,.offset-60{margin-left:60%}[dir=rtl] .flex-offset-60,[dir=rtl] .offset-60{margin-left:auto;margin-right:60%}.flex-offset-65,.offset-65{margin-left:65%}[dir=rtl] .flex-offset-65,[dir=rtl] .offset-65{margin-left:auto;margin-right:65%}.flex-offset-70,.offset-70{margin-left:70%}[dir=rtl] .flex-offset-70,[dir=rtl] .offset-70{margin-left:auto;margin-right:70%}.flex-offset-75,.offset-75{margin-left:75%}[dir=rtl] .flex-offset-75,[dir=rtl] .offset-75{margin-left:auto;margin-right:75%}.flex-offset-80,.offset-80{margin-left:80%}[dir=rtl] .flex-offset-80,[dir=rtl] .offset-80{margin-left:auto;margin-right:80%}.flex-offset-85,.offset-85{margin-left:85%}[dir=rtl] .flex-offset-85,[dir=rtl] .offset-85{margin-left:auto;margin-right:85%}.flex-offset-90,.offset-90{margin-left:90%}[dir=rtl] .flex-offset-90,[dir=rtl] .offset-90{margin-left:auto;margin-right:90%}.flex-offset-95,.offset-95{margin-left:95%}[dir=rtl] .flex-offset-95,[dir=rtl] .offset-95{margin-left:auto;margin-right:95%}.flex-offset-33,.offset-33{margin-left:calc(100% / 3)}.flex-offset-66,.offset-66{margin-left:calc(200% / 3)}[dir=rtl] .flex-offset-66,[dir=rtl] .offset-66{margin-left:auto;margin-right:calc(200% / 3)}.layout-align,.layout-align-start-stretch{justify-content:flex-start;align-content:stretch;align-items:stretch}.layout-align-start,.layout-align-start-center,.layout-align-start-end,.layout-align-start-start,.layout-align-start-stretch{justify-content:flex-start}.layout-align-center,.layout-align-center-center,.layout-align-center-end,.layout-align-center-start,.layout-align-center-stretch{justify-content:center}.layout-align-end,.layout-align-end-center,.layout-align-end-end,.layout-align-end-start,.layout-align-end-stretch{justify-content:flex-end}.layout-align-space-around,.layout-align-space-around-center,.layout-align-space-around-end,.layout-align-space-around-start,.layout-align-space-around-stretch{justify-content:space-around}.layout-align-space-between,.layout-align-space-between-center,.layout-align-space-between-end,.layout-align-space-between-start,.layout-align-space-between-stretch{justify-content:space-between}.layout-align-center-start,.layout-align-end-start,.layout-align-space-around-start,.layout-align-space-between-start,.layout-align-start-start{align-items:flex-start;align-content:flex-start}.layout-align-center-center,.layout-align-end-center,.layout-align-space-around-center,.layout-align-space-between-center,.layout-align-start-center{align-items:center;align-content:center;max-width:100%}.layout-align-center-center>*,.layout-align-end-center>*,.layout-align-space-around-center>*,.layout-align-space-between-center>*,.layout-align-start-center>*{max-width:100%;box-sizing:border-box}.layout-align-center-end,.layout-align-end-end,.layout-align-space-around-end,.layout-align-space-between-end,.layout-align-start-end{align-items:flex-end;align-content:flex-end}.layout-align-center-stretch,.layout-align-end-stretch,.layout-align-space-around-stretch,.layout-align-space-between-stretch,.layout-align-start-stretch{align-items:stretch;align-content:stretch}.flex{flex:1;box-sizing:border-box}.flex-grow{flex:1 1 100%;box-sizing:border-box}.flex-initial{flex:0 1 auto;box-sizing:border-box}.flex-auto{flex:1 1 auto;box-sizing:border-box}.flex-none{flex:0 0 auto;box-sizing:border-box}.flex-noshrink{flex:1 0 auto;box-sizing:border-box}.flex-nogrow{flex:0 1 auto;box-sizing:border-box}.flex-0{flex:1 1 0%;max-width:0%;max-height:100%;box-sizing:border-box}.layout-row>.flex-0{flex:1 1 0%;max-width:0%;max-height:100%;box-sizing:border-box;min-width:0}.layout-column>.flex-0{flex:1 1 0%;max-width:100%;max-height:0%;box-sizing:border-box}.layout-row>.flex-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-row>.flex-0{flex:1 1 0%;max-width:0%;max-height:100%;box-sizing:border-box;min-width:0}.layout-column>.flex-0{flex:1 1 0%;max-width:100%;max-height:0%;box-sizing:border-box;min-height:0}.flex-5{flex:1 1 5%;max-width:5%;max-height:100%;box-sizing:border-box}.layout-row>.flex-5{flex:1 1 5%;max-width:5%;max-height:100%;box-sizing:border-box}.layout-column>.flex-5{flex:1 1 5%;max-width:100%;max-height:5%;box-sizing:border-box}.layout-row>.flex-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-row>.flex-5{flex:1 1 5%;max-width:5%;max-height:100%;box-sizing:border-box}.layout-column>.flex-5{flex:1 1 5%;max-width:100%;max-height:5%;box-sizing:border-box}.flex-10{flex:1 1 10%;max-width:10%;max-height:100%;box-sizing:border-box}.layout-row>.flex-10{flex:1 1 10%;max-width:10%;max-height:100%;box-sizing:border-box}.layout-column>.flex-10{flex:1 1 10%;max-width:100%;max-height:10%;box-sizing:border-box}.layout-row>.flex-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-row>.flex-10{flex:1 1 10%;max-width:10%;max-height:100%;box-sizing:border-box}.layout-column>.flex-10{flex:1 1 10%;max-width:100%;max-height:10%;box-sizing:border-box}.flex-15{flex:1 1 15%;max-width:15%;max-height:100%;box-sizing:border-box}.layout-row>.flex-15{flex:1 1 15%;max-width:15%;max-height:100%;box-sizing:border-box}.layout-column>.flex-15{flex:1 1 15%;max-width:100%;max-height:15%;box-sizing:border-box}.layout-row>.flex-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-row>.flex-15{flex:1 1 15%;max-width:15%;max-height:100%;box-sizing:border-box}.layout-column>.flex-15{flex:1 1 15%;max-width:100%;max-height:15%;box-sizing:border-box}.flex-20{flex:1 1 20%;max-width:20%;max-height:100%;box-sizing:border-box}.layout-row>.flex-20{flex:1 1 20%;max-width:20%;max-height:100%;box-sizing:border-box}.layout-column>.flex-20{flex:1 1 20%;max-width:100%;max-height:20%;box-sizing:border-box}.layout-row>.flex-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-row>.flex-20{flex:1 1 20%;max-width:20%;max-height:100%;box-sizing:border-box}.layout-column>.flex-20{flex:1 1 20%;max-width:100%;max-height:20%;box-sizing:border-box}.flex-25{flex:1 1 25%;max-width:25%;max-height:100%;box-sizing:border-box}.layout-row>.flex-25{flex:1 1 25%;max-width:25%;max-height:100%;box-sizing:border-box}.layout-column>.flex-25{flex:1 1 25%;max-width:100%;max-height:25%;box-sizing:border-box}.layout-row>.flex-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-row>.flex-25{flex:1 1 25%;max-width:25%;max-height:100%;box-sizing:border-box}.layout-column>.flex-25{flex:1 1 25%;max-width:100%;max-height:25%;box-sizing:border-box}.flex-30{flex:1 1 30%;max-width:30%;max-height:100%;box-sizing:border-box}.layout-row>.flex-30{flex:1 1 30%;max-width:30%;max-height:100%;box-sizing:border-box}.layout-column>.flex-30{flex:1 1 30%;max-width:100%;max-height:30%;box-sizing:border-box}.layout-row>.flex-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-row>.flex-30{flex:1 1 30%;max-width:30%;max-height:100%;box-sizing:border-box}.layout-column>.flex-30{flex:1 1 30%;max-width:100%;max-height:30%;box-sizing:border-box}.flex-35{flex:1 1 35%;max-width:35%;max-height:100%;box-sizing:border-box}.layout-row>.flex-35{flex:1 1 35%;max-width:35%;max-height:100%;box-sizing:border-box}.layout-column>.flex-35{flex:1 1 35%;max-width:100%;max-height:35%;box-sizing:border-box}.layout-row>.flex-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-row>.flex-35{flex:1 1 35%;max-width:35%;max-height:100%;box-sizing:border-box}.layout-column>.flex-35{flex:1 1 35%;max-width:100%;max-height:35%;box-sizing:border-box}.flex-40{flex:1 1 40%;max-width:40%;max-height:100%;box-sizing:border-box}.layout-row>.flex-40{flex:1 1 40%;max-width:40%;max-height:100%;box-sizing:border-box}.layout-column>.flex-40{flex:1 1 40%;max-width:100%;max-height:40%;box-sizing:border-box}.layout-row>.flex-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-row>.flex-40{flex:1 1 40%;max-width:40%;max-height:100%;box-sizing:border-box}.layout-column>.flex-40{flex:1 1 40%;max-width:100%;max-height:40%;box-sizing:border-box}.flex-45{flex:1 1 45%;max-width:45%;max-height:100%;box-sizing:border-box}.layout-row>.flex-45{flex:1 1 45%;max-width:45%;max-height:100%;box-sizing:border-box}.layout-column>.flex-45{flex:1 1 45%;max-width:100%;max-height:45%;box-sizing:border-box}.layout-row>.flex-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-row>.flex-45{flex:1 1 45%;max-width:45%;max-height:100%;box-sizing:border-box}.layout-column>.flex-45{flex:1 1 45%;max-width:100%;max-height:45%;box-sizing:border-box}.flex-50{flex:1 1 50%;max-width:50%;max-height:100%;box-sizing:border-box}.layout-row>.flex-50{flex:1 1 50%;max-width:50%;max-height:100%;box-sizing:border-box}.layout-column>.flex-50{flex:1 1 50%;max-width:100%;max-height:50%;box-sizing:border-box}.layout-row>.flex-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-row>.flex-50{flex:1 1 50%;max-width:50%;max-height:100%;box-sizing:border-box}.layout-column>.flex-50{flex:1 1 50%;max-width:100%;max-height:50%;box-sizing:border-box}.flex-55{flex:1 1 55%;max-width:55%;max-height:100%;box-sizing:border-box}.layout-row>.flex-55{flex:1 1 55%;max-width:55%;max-height:100%;box-sizing:border-box}.layout-column>.flex-55{flex:1 1 55%;max-width:100%;max-height:55%;box-sizing:border-box}.layout-row>.flex-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-row>.flex-55{flex:1 1 55%;max-width:55%;max-height:100%;box-sizing:border-box}.layout-column>.flex-55{flex:1 1 55%;max-width:100%;max-height:55%;box-sizing:border-box}.flex-60{flex:1 1 60%;max-width:60%;max-height:100%;box-sizing:border-box}.layout-row>.flex-60{flex:1 1 60%;max-width:60%;max-height:100%;box-sizing:border-box}.layout-column>.flex-60{flex:1 1 60%;max-width:100%;max-height:60%;box-sizing:border-box}.layout-row>.flex-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-row>.flex-60{flex:1 1 60%;max-width:60%;max-height:100%;box-sizing:border-box}.layout-column>.flex-60{flex:1 1 60%;max-width:100%;max-height:60%;box-sizing:border-box}.flex-65{flex:1 1 65%;max-width:65%;max-height:100%;box-sizing:border-box}.layout-row>.flex-65{flex:1 1 65%;max-width:65%;max-height:100%;box-sizing:border-box}.layout-column>.flex-65{flex:1 1 65%;max-width:100%;max-height:65%;box-sizing:border-box}.layout-row>.flex-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-row>.flex-65{flex:1 1 65%;max-width:65%;max-height:100%;box-sizing:border-box}.layout-column>.flex-65{flex:1 1 65%;max-width:100%;max-height:65%;box-sizing:border-box}.flex-70{flex:1 1 70%;max-width:70%;max-height:100%;box-sizing:border-box}.layout-row>.flex-70{flex:1 1 70%;max-width:70%;max-height:100%;box-sizing:border-box}.layout-column>.flex-70{flex:1 1 70%;max-width:100%;max-height:70%;box-sizing:border-box}.layout-row>.flex-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-row>.flex-70{flex:1 1 70%;max-width:70%;max-height:100%;box-sizing:border-box}.layout-column>.flex-70{flex:1 1 70%;max-width:100%;max-height:70%;box-sizing:border-box}.flex-75{flex:1 1 75%;max-width:75%;max-height:100%;box-sizing:border-box}.layout-row>.flex-75{flex:1 1 75%;max-width:75%;max-height:100%;box-sizing:border-box}.layout-column>.flex-75{flex:1 1 75%;max-width:100%;max-height:75%;box-sizing:border-box}.layout-row>.flex-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-row>.flex-75{flex:1 1 75%;max-width:75%;max-height:100%;box-sizing:border-box}.layout-column>.flex-75{flex:1 1 75%;max-width:100%;max-height:75%;box-sizing:border-box}.flex-80{flex:1 1 80%;max-width:80%;max-height:100%;box-sizing:border-box}.layout-row>.flex-80{flex:1 1 80%;max-width:80%;max-height:100%;box-sizing:border-box}.layout-column>.flex-80{flex:1 1 80%;max-width:100%;max-height:80%;box-sizing:border-box}.layout-row>.flex-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-row>.flex-80{flex:1 1 80%;max-width:80%;max-height:100%;box-sizing:border-box}.layout-column>.flex-80{flex:1 1 80%;max-width:100%;max-height:80%;box-sizing:border-box}.flex-85{flex:1 1 85%;max-width:85%;max-height:100%;box-sizing:border-box}.layout-row>.flex-85{flex:1 1 85%;max-width:85%;max-height:100%;box-sizing:border-box}.layout-column>.flex-85{flex:1 1 85%;max-width:100%;max-height:85%;box-sizing:border-box}.layout-row>.flex-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-row>.flex-85{flex:1 1 85%;max-width:85%;max-height:100%;box-sizing:border-box}.layout-column>.flex-85{flex:1 1 85%;max-width:100%;max-height:85%;box-sizing:border-box}.flex-90{flex:1 1 90%;max-width:90%;max-height:100%;box-sizing:border-box}.layout-row>.flex-90{flex:1 1 90%;max-width:90%;max-height:100%;box-sizing:border-box}.layout-column>.flex-90{flex:1 1 90%;max-width:100%;max-height:90%;box-sizing:border-box}.layout-row>.flex-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-row>.flex-90{flex:1 1 90%;max-width:90%;max-height:100%;box-sizing:border-box}.layout-column>.flex-90{flex:1 1 90%;max-width:100%;max-height:90%;box-sizing:border-box}.flex-95{flex:1 1 95%;max-width:95%;max-height:100%;box-sizing:border-box}.layout-row>.flex-95{flex:1 1 95%;max-width:95%;max-height:100%;box-sizing:border-box}.layout-column>.flex-95{flex:1 1 95%;max-width:100%;max-height:95%;box-sizing:border-box}.layout-row>.flex-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-row>.flex-95{flex:1 1 95%;max-width:95%;max-height:100%;box-sizing:border-box}.layout-column>.flex-95{flex:1 1 95%;max-width:100%;max-height:95%;box-sizing:border-box}.flex-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-row>.flex-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-column>.flex-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-row>.flex-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-row>.flex-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-column>.flex-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-row>.flex-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-row>.flex{min-width:0}.layout-column>.flex-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-column>.flex{min-height:0}.layout,.layout-column,.layout-row{box-sizing:border-box;display:-webkit-box;display:-webkit-flex;display:-moz-box;display:-ms-flexbox;display:flex}.layout-column{flex-direction:column}.layout-row{flex-direction:row}.layout-padding-sm>*,.layout-padding>.flex-sm{padding:4px}.layout-padding,.layout-padding-gt-sm,.layout-padding-gt-sm>*,.layout-padding-md,.layout-padding-md>*,.layout-padding>*,.layout-padding>.flex,.layout-padding>.flex-gt-sm,.layout-padding>.flex-md{padding:8px}.layout-padding-gt-lg>*,.layout-padding-gt-md>*,.layout-padding-lg>*,.layout-padding>.flex-gt-lg,.layout-padding>.flex-gt-md,.layout-padding>.flex-lg{padding:16px}.layout-margin-sm>*,.layout-margin>.flex-sm{margin:4px}.layout-margin,.layout-margin-gt-sm,.layout-margin-gt-sm>*,.layout-margin-md,.layout-margin-md>*,.layout-margin>*,.layout-margin>.flex,.layout-margin>.flex-gt-sm,.layout-margin>.flex-md{margin:8px}.layout-margin-gt-lg>*,.layout-margin-gt-md>*,.layout-margin-lg>*,.layout-margin>.flex-gt-lg,.layout-margin>.flex-gt-md,.layout-margin>.flex-lg{margin:16px}.layout-wrap{flex-wrap:wrap}.layout-nowrap{flex-wrap:nowrap}.layout-fill{margin:0;width:100%;min-height:100%;height:100%}@media (max-width:599px){.hide-xs:not(.show-xs):not(.show),.hide:not(.show-xs):not(.show){display:none}.flex-order-xs--20{order:-20}.flex-order-xs--19{order:-19}.flex-order-xs--18{order:-18}.flex-order-xs--17{order:-17}.flex-order-xs--16{order:-16}.flex-order-xs--15{order:-15}.flex-order-xs--14{order:-14}.flex-order-xs--13{order:-13}.flex-order-xs--12{order:-12}.flex-order-xs--11{order:-11}.flex-order-xs--10{order:-10}.flex-order-xs--9{order:-9}.flex-order-xs--8{order:-8}.flex-order-xs--7{order:-7}.flex-order-xs--6{order:-6}.flex-order-xs--5{order:-5}.flex-order-xs--4{order:-4}.flex-order-xs--3{order:-3}.flex-order-xs--2{order:-2}.flex-order-xs--1{order:-1}.flex-order-xs-0{order:0}.flex-order-xs-1{order:1}.flex-order-xs-2{order:2}.flex-order-xs-3{order:3}.flex-order-xs-4{order:4}.flex-order-xs-5{order:5}.flex-order-xs-6{order:6}.flex-order-xs-7{order:7}.flex-order-xs-8{order:8}.flex-order-xs-9{order:9}.flex-order-xs-10{order:10}.flex-order-xs-11{order:11}.flex-order-xs-12{order:12}.flex-order-xs-13{order:13}.flex-order-xs-14{order:14}.flex-order-xs-15{order:15}.flex-order-xs-16{order:16}.flex-order-xs-17{order:17}.flex-order-xs-18{order:18}.flex-order-xs-19{order:19}.flex-order-xs-20{order:20}.flex-offset-xs-0,.offset-xs-0{margin-left:0}[dir=rtl] .flex-offset-xs-0,[dir=rtl] .offset-xs-0{margin-left:auto;margin-right:0}.flex-offset-xs-5,.offset-xs-5{margin-left:5%}[dir=rtl] .flex-offset-xs-5,[dir=rtl] .offset-xs-5{margin-left:auto;margin-right:5%}.flex-offset-xs-10,.offset-xs-10{margin-left:10%}[dir=rtl] .flex-offset-xs-10,[dir=rtl] .offset-xs-10{margin-left:auto;margin-right:10%}.flex-offset-xs-15,.offset-xs-15{margin-left:15%}[dir=rtl] .flex-offset-xs-15,[dir=rtl] .offset-xs-15{margin-left:auto;margin-right:15%}.flex-offset-xs-20,.offset-xs-20{margin-left:20%}[dir=rtl] .flex-offset-xs-20,[dir=rtl] .offset-xs-20{margin-left:auto;margin-right:20%}.flex-offset-xs-25,.offset-xs-25{margin-left:25%}[dir=rtl] .flex-offset-xs-25,[dir=rtl] .offset-xs-25{margin-left:auto;margin-right:25%}.flex-offset-xs-30,.offset-xs-30{margin-left:30%}[dir=rtl] .flex-offset-xs-30,[dir=rtl] .offset-xs-30{margin-left:auto;margin-right:30%}.flex-offset-xs-35,.offset-xs-35{margin-left:35%}[dir=rtl] .flex-offset-xs-35,[dir=rtl] .offset-xs-35{margin-left:auto;margin-right:35%}.flex-offset-xs-40,.offset-xs-40{margin-left:40%}[dir=rtl] .flex-offset-xs-40,[dir=rtl] .offset-xs-40{margin-left:auto;margin-right:40%}.flex-offset-xs-45,.offset-xs-45{margin-left:45%}[dir=rtl] .flex-offset-xs-45,[dir=rtl] .offset-xs-45{margin-left:auto;margin-right:45%}.flex-offset-xs-50,.offset-xs-50{margin-left:50%}[dir=rtl] .flex-offset-xs-50,[dir=rtl] .offset-xs-50{margin-left:auto;margin-right:50%}.flex-offset-xs-55,.offset-xs-55{margin-left:55%}[dir=rtl] .flex-offset-xs-55,[dir=rtl] .offset-xs-55{margin-left:auto;margin-right:55%}.flex-offset-xs-60,.offset-xs-60{margin-left:60%}[dir=rtl] .flex-offset-xs-60,[dir=rtl] .offset-xs-60{margin-left:auto;margin-right:60%}.flex-offset-xs-65,.offset-xs-65{margin-left:65%}[dir=rtl] .flex-offset-xs-65,[dir=rtl] .offset-xs-65{margin-left:auto;margin-right:65%}.flex-offset-xs-70,.offset-xs-70{margin-left:70%}[dir=rtl] .flex-offset-xs-70,[dir=rtl] .offset-xs-70{margin-left:auto;margin-right:70%}.flex-offset-xs-75,.offset-xs-75{margin-left:75%}[dir=rtl] .flex-offset-xs-75,[dir=rtl] .offset-xs-75{margin-left:auto;margin-right:75%}.flex-offset-xs-80,.offset-xs-80{margin-left:80%}[dir=rtl] .flex-offset-xs-80,[dir=rtl] .offset-xs-80{margin-left:auto;margin-right:80%}.flex-offset-xs-85,.offset-xs-85{margin-left:85%}[dir=rtl] .flex-offset-xs-85,[dir=rtl] .offset-xs-85{margin-left:auto;margin-right:85%}.flex-offset-xs-90,.offset-xs-90{margin-left:90%}[dir=rtl] .flex-offset-xs-90,[dir=rtl] .offset-xs-90{margin-left:auto;margin-right:90%}.flex-offset-xs-95,.offset-xs-95{margin-left:95%}[dir=rtl] .flex-offset-xs-95,[dir=rtl] .offset-xs-95{margin-left:auto;margin-right:95%}.flex-offset-xs-33,.offset-xs-33{margin-left:calc(100% / 3)}.flex-offset-xs-66,.offset-xs-66{margin-left:calc(200% / 3)}[dir=rtl] .flex-offset-xs-66,[dir=rtl] .offset-xs-66{margin-left:auto;margin-right:calc(200% / 3)}.layout-align-xs,.layout-align-xs-start-stretch{justify-content:flex-start;align-content:stretch;align-items:stretch}.layout-align-xs-start,.layout-align-xs-start-center,.layout-align-xs-start-end,.layout-align-xs-start-start,.layout-align-xs-start-stretch{justify-content:flex-start}.layout-align-xs-center,.layout-align-xs-center-center,.layout-align-xs-center-end,.layout-align-xs-center-start,.layout-align-xs-center-stretch{justify-content:center}.layout-align-xs-end,.layout-align-xs-end-center,.layout-align-xs-end-end,.layout-align-xs-end-start,.layout-align-xs-end-stretch{justify-content:flex-end}.layout-align-xs-space-around,.layout-align-xs-space-around-center,.layout-align-xs-space-around-end,.layout-align-xs-space-around-start,.layout-align-xs-space-around-stretch{justify-content:space-around}.layout-align-xs-space-between,.layout-align-xs-space-between-center,.layout-align-xs-space-between-end,.layout-align-xs-space-between-start,.layout-align-xs-space-between-stretch{justify-content:space-between}.layout-align-xs-center-start,.layout-align-xs-end-start,.layout-align-xs-space-around-start,.layout-align-xs-space-between-start,.layout-align-xs-start-start{align-items:flex-start;align-content:flex-start}.layout-align-xs-center-center,.layout-align-xs-end-center,.layout-align-xs-space-around-center,.layout-align-xs-space-between-center,.layout-align-xs-start-center{align-items:center;align-content:center;max-width:100%}.layout-align-xs-center-center>*,.layout-align-xs-end-center>*,.layout-align-xs-space-around-center>*,.layout-align-xs-space-between-center>*,.layout-align-xs-start-center>*{max-width:100%;box-sizing:border-box}.layout-align-xs-center-end,.layout-align-xs-end-end,.layout-align-xs-space-around-end,.layout-align-xs-space-between-end,.layout-align-xs-start-end{align-items:flex-end;align-content:flex-end}.layout-align-xs-center-stretch,.layout-align-xs-end-stretch,.layout-align-xs-space-around-stretch,.layout-align-xs-space-between-stretch,.layout-align-xs-start-stretch{align-items:stretch;align-content:stretch}.flex-xs{flex:1;box-sizing:border-box}.flex-xs-grow{flex:1 1 100%;box-sizing:border-box}.flex-xs-initial{flex:0 1 auto;box-sizing:border-box}.flex-xs-auto{flex:1 1 auto;box-sizing:border-box}.flex-xs-none{flex:0 0 auto;box-sizing:border-box}.flex-xs-noshrink{flex:1 0 auto;box-sizing:border-box}.flex-xs-nogrow{flex:0 1 auto;box-sizing:border-box}.flex-xs-0{flex:1 1 0%;max-width:0%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-0{flex:1 1 0%;max-width:0%;max-height:100%;box-sizing:border-box;min-width:0}.layout-column>.flex-xs-0{flex:1 1 0%;max-width:100%;max-height:0%;box-sizing:border-box}.layout-row>.flex-xs-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xs-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-xs-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-xs-row>.flex-xs-0{flex:1 1 0%;max-width:0%;max-height:100%;box-sizing:border-box;min-width:0}.layout-xs-column>.flex-xs-0{flex:1 1 0%;max-width:100%;max-height:0%;box-sizing:border-box;min-height:0}.flex-xs-5{flex:1 1 5%;max-width:5%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-5{flex:1 1 5%;max-width:5%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xs-5{flex:1 1 5%;max-width:100%;max-height:5%;box-sizing:border-box}.layout-row>.flex-xs-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xs-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-xs-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-xs-row>.flex-xs-5{flex:1 1 5%;max-width:5%;max-height:100%;box-sizing:border-box}.layout-xs-column>.flex-xs-5{flex:1 1 5%;max-width:100%;max-height:5%;box-sizing:border-box}.flex-xs-10{flex:1 1 10%;max-width:10%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-10{flex:1 1 10%;max-width:10%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xs-10{flex:1 1 10%;max-width:100%;max-height:10%;box-sizing:border-box}.layout-row>.flex-xs-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xs-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-xs-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-xs-row>.flex-xs-10{flex:1 1 10%;max-width:10%;max-height:100%;box-sizing:border-box}.layout-xs-column>.flex-xs-10{flex:1 1 10%;max-width:100%;max-height:10%;box-sizing:border-box}.flex-xs-15{flex:1 1 15%;max-width:15%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-15{flex:1 1 15%;max-width:15%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xs-15{flex:1 1 15%;max-width:100%;max-height:15%;box-sizing:border-box}.layout-row>.flex-xs-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xs-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-xs-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-xs-row>.flex-xs-15{flex:1 1 15%;max-width:15%;max-height:100%;box-sizing:border-box}.layout-xs-column>.flex-xs-15{flex:1 1 15%;max-width:100%;max-height:15%;box-sizing:border-box}.flex-xs-20{flex:1 1 20%;max-width:20%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-20{flex:1 1 20%;max-width:20%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xs-20{flex:1 1 20%;max-width:100%;max-height:20%;box-sizing:border-box}.layout-row>.flex-xs-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xs-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-xs-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-xs-row>.flex-xs-20{flex:1 1 20%;max-width:20%;max-height:100%;box-sizing:border-box}.layout-xs-column>.flex-xs-20{flex:1 1 20%;max-width:100%;max-height:20%;box-sizing:border-box}.flex-xs-25{flex:1 1 25%;max-width:25%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-25{flex:1 1 25%;max-width:25%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xs-25{flex:1 1 25%;max-width:100%;max-height:25%;box-sizing:border-box}.layout-row>.flex-xs-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xs-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-xs-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-xs-row>.flex-xs-25{flex:1 1 25%;max-width:25%;max-height:100%;box-sizing:border-box}.layout-xs-column>.flex-xs-25{flex:1 1 25%;max-width:100%;max-height:25%;box-sizing:border-box}.flex-xs-30{flex:1 1 30%;max-width:30%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-30{flex:1 1 30%;max-width:30%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xs-30{flex:1 1 30%;max-width:100%;max-height:30%;box-sizing:border-box}.layout-row>.flex-xs-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xs-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-xs-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-xs-row>.flex-xs-30{flex:1 1 30%;max-width:30%;max-height:100%;box-sizing:border-box}.layout-xs-column>.flex-xs-30{flex:1 1 30%;max-width:100%;max-height:30%;box-sizing:border-box}.flex-xs-35{flex:1 1 35%;max-width:35%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-35{flex:1 1 35%;max-width:35%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xs-35{flex:1 1 35%;max-width:100%;max-height:35%;box-sizing:border-box}.layout-row>.flex-xs-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xs-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-xs-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-xs-row>.flex-xs-35{flex:1 1 35%;max-width:35%;max-height:100%;box-sizing:border-box}.layout-xs-column>.flex-xs-35{flex:1 1 35%;max-width:100%;max-height:35%;box-sizing:border-box}.flex-xs-40{flex:1 1 40%;max-width:40%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-40{flex:1 1 40%;max-width:40%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xs-40{flex:1 1 40%;max-width:100%;max-height:40%;box-sizing:border-box}.layout-row>.flex-xs-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xs-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-xs-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-xs-row>.flex-xs-40{flex:1 1 40%;max-width:40%;max-height:100%;box-sizing:border-box}.layout-xs-column>.flex-xs-40{flex:1 1 40%;max-width:100%;max-height:40%;box-sizing:border-box}.flex-xs-45{flex:1 1 45%;max-width:45%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-45{flex:1 1 45%;max-width:45%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xs-45{flex:1 1 45%;max-width:100%;max-height:45%;box-sizing:border-box}.layout-row>.flex-xs-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xs-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-xs-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-xs-row>.flex-xs-45{flex:1 1 45%;max-width:45%;max-height:100%;box-sizing:border-box}.layout-xs-column>.flex-xs-45{flex:1 1 45%;max-width:100%;max-height:45%;box-sizing:border-box}.flex-xs-50{flex:1 1 50%;max-width:50%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-50{flex:1 1 50%;max-width:50%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xs-50{flex:1 1 50%;max-width:100%;max-height:50%;box-sizing:border-box}.layout-row>.flex-xs-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xs-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-xs-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-xs-row>.flex-xs-50{flex:1 1 50%;max-width:50%;max-height:100%;box-sizing:border-box}.layout-xs-column>.flex-xs-50{flex:1 1 50%;max-width:100%;max-height:50%;box-sizing:border-box}.flex-xs-55{flex:1 1 55%;max-width:55%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-55{flex:1 1 55%;max-width:55%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xs-55{flex:1 1 55%;max-width:100%;max-height:55%;box-sizing:border-box}.layout-row>.flex-xs-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xs-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-xs-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-xs-row>.flex-xs-55{flex:1 1 55%;max-width:55%;max-height:100%;box-sizing:border-box}.layout-xs-column>.flex-xs-55{flex:1 1 55%;max-width:100%;max-height:55%;box-sizing:border-box}.flex-xs-60{flex:1 1 60%;max-width:60%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-60{flex:1 1 60%;max-width:60%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xs-60{flex:1 1 60%;max-width:100%;max-height:60%;box-sizing:border-box}.layout-row>.flex-xs-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xs-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-xs-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-xs-row>.flex-xs-60{flex:1 1 60%;max-width:60%;max-height:100%;box-sizing:border-box}.layout-xs-column>.flex-xs-60{flex:1 1 60%;max-width:100%;max-height:60%;box-sizing:border-box}.flex-xs-65{flex:1 1 65%;max-width:65%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-65{flex:1 1 65%;max-width:65%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xs-65{flex:1 1 65%;max-width:100%;max-height:65%;box-sizing:border-box}.layout-row>.flex-xs-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xs-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-xs-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-xs-row>.flex-xs-65{flex:1 1 65%;max-width:65%;max-height:100%;box-sizing:border-box}.layout-xs-column>.flex-xs-65{flex:1 1 65%;max-width:100%;max-height:65%;box-sizing:border-box}.flex-xs-70{flex:1 1 70%;max-width:70%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-70{flex:1 1 70%;max-width:70%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xs-70{flex:1 1 70%;max-width:100%;max-height:70%;box-sizing:border-box}.layout-row>.flex-xs-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xs-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-xs-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-xs-row>.flex-xs-70{flex:1 1 70%;max-width:70%;max-height:100%;box-sizing:border-box}.layout-xs-column>.flex-xs-70{flex:1 1 70%;max-width:100%;max-height:70%;box-sizing:border-box}.flex-xs-75{flex:1 1 75%;max-width:75%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-75{flex:1 1 75%;max-width:75%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xs-75{flex:1 1 75%;max-width:100%;max-height:75%;box-sizing:border-box}.layout-row>.flex-xs-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xs-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-xs-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-xs-row>.flex-xs-75{flex:1 1 75%;max-width:75%;max-height:100%;box-sizing:border-box}.layout-xs-column>.flex-xs-75{flex:1 1 75%;max-width:100%;max-height:75%;box-sizing:border-box}.flex-xs-80{flex:1 1 80%;max-width:80%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-80{flex:1 1 80%;max-width:80%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xs-80{flex:1 1 80%;max-width:100%;max-height:80%;box-sizing:border-box}.layout-row>.flex-xs-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xs-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-xs-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-xs-row>.flex-xs-80{flex:1 1 80%;max-width:80%;max-height:100%;box-sizing:border-box}.layout-xs-column>.flex-xs-80{flex:1 1 80%;max-width:100%;max-height:80%;box-sizing:border-box}.flex-xs-85{flex:1 1 85%;max-width:85%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-85{flex:1 1 85%;max-width:85%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xs-85{flex:1 1 85%;max-width:100%;max-height:85%;box-sizing:border-box}.layout-row>.flex-xs-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xs-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-xs-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-xs-row>.flex-xs-85{flex:1 1 85%;max-width:85%;max-height:100%;box-sizing:border-box}.layout-xs-column>.flex-xs-85{flex:1 1 85%;max-width:100%;max-height:85%;box-sizing:border-box}.flex-xs-90{flex:1 1 90%;max-width:90%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-90{flex:1 1 90%;max-width:90%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xs-90{flex:1 1 90%;max-width:100%;max-height:90%;box-sizing:border-box}.layout-row>.flex-xs-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xs-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-xs-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-xs-row>.flex-xs-90{flex:1 1 90%;max-width:90%;max-height:100%;box-sizing:border-box}.layout-xs-column>.flex-xs-90{flex:1 1 90%;max-width:100%;max-height:90%;box-sizing:border-box}.flex-xs-95{flex:1 1 95%;max-width:95%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-95{flex:1 1 95%;max-width:95%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xs-95{flex:1 1 95%;max-width:100%;max-height:95%;box-sizing:border-box}.layout-row>.flex-xs-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xs-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-xs-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-xs-row>.flex-xs-95{flex:1 1 95%;max-width:95%;max-height:100%;box-sizing:border-box}.layout-xs-column>.flex-xs-95{flex:1 1 95%;max-width:100%;max-height:95%;box-sizing:border-box}.flex-xs-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xs-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xs-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-xs-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-xs-row>.flex-xs-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-xs-column>.flex-xs-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-xs-row>.flex-xs-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-xs-row>.flex-xs-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-xs-row>.flex{min-width:0}.layout-xs-column>.flex-xs-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-xs-column>.flex-xs-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-xs-column>.flex{min-height:0}.layout-xs,.layout-xs-column,.layout-xs-row{box-sizing:border-box;display:-webkit-box;display:-webkit-flex;display:-moz-box;display:-ms-flexbox;display:flex}.layout-xs-column{flex-direction:column}.layout-xs-row{flex-direction:row}}@media (min-width:600px){.flex-order-gt-xs--20{order:-20}.flex-order-gt-xs--19{order:-19}.flex-order-gt-xs--18{order:-18}.flex-order-gt-xs--17{order:-17}.flex-order-gt-xs--16{order:-16}.flex-order-gt-xs--15{order:-15}.flex-order-gt-xs--14{order:-14}.flex-order-gt-xs--13{order:-13}.flex-order-gt-xs--12{order:-12}.flex-order-gt-xs--11{order:-11}.flex-order-gt-xs--10{order:-10}.flex-order-gt-xs--9{order:-9}.flex-order-gt-xs--8{order:-8}.flex-order-gt-xs--7{order:-7}.flex-order-gt-xs--6{order:-6}.flex-order-gt-xs--5{order:-5}.flex-order-gt-xs--4{order:-4}.flex-order-gt-xs--3{order:-3}.flex-order-gt-xs--2{order:-2}.flex-order-gt-xs--1{order:-1}.flex-order-gt-xs-0{order:0}.flex-order-gt-xs-1{order:1}.flex-order-gt-xs-2{order:2}.flex-order-gt-xs-3{order:3}.flex-order-gt-xs-4{order:4}.flex-order-gt-xs-5{order:5}.flex-order-gt-xs-6{order:6}.flex-order-gt-xs-7{order:7}.flex-order-gt-xs-8{order:8}.flex-order-gt-xs-9{order:9}.flex-order-gt-xs-10{order:10}.flex-order-gt-xs-11{order:11}.flex-order-gt-xs-12{order:12}.flex-order-gt-xs-13{order:13}.flex-order-gt-xs-14{order:14}.flex-order-gt-xs-15{order:15}.flex-order-gt-xs-16{order:16}.flex-order-gt-xs-17{order:17}.flex-order-gt-xs-18{order:18}.flex-order-gt-xs-19{order:19}.flex-order-gt-xs-20{order:20}.flex-offset-gt-xs-0,.offset-gt-xs-0{margin-left:0}[dir=rtl] .flex-offset-gt-xs-0,[dir=rtl] .offset-gt-xs-0{margin-left:auto;margin-right:0}.flex-offset-gt-xs-5,.offset-gt-xs-5{margin-left:5%}[dir=rtl] .flex-offset-gt-xs-5,[dir=rtl] .offset-gt-xs-5{margin-left:auto;margin-right:5%}.flex-offset-gt-xs-10,.offset-gt-xs-10{margin-left:10%}[dir=rtl] .flex-offset-gt-xs-10,[dir=rtl] .offset-gt-xs-10{margin-left:auto;margin-right:10%}.flex-offset-gt-xs-15,.offset-gt-xs-15{margin-left:15%}[dir=rtl] .flex-offset-gt-xs-15,[dir=rtl] .offset-gt-xs-15{margin-left:auto;margin-right:15%}.flex-offset-gt-xs-20,.offset-gt-xs-20{margin-left:20%}[dir=rtl] .flex-offset-gt-xs-20,[dir=rtl] .offset-gt-xs-20{margin-left:auto;margin-right:20%}.flex-offset-gt-xs-25,.offset-gt-xs-25{margin-left:25%}[dir=rtl] .flex-offset-gt-xs-25,[dir=rtl] .offset-gt-xs-25{margin-left:auto;margin-right:25%}.flex-offset-gt-xs-30,.offset-gt-xs-30{margin-left:30%}[dir=rtl] .flex-offset-gt-xs-30,[dir=rtl] .offset-gt-xs-30{margin-left:auto;margin-right:30%}.flex-offset-gt-xs-35,.offset-gt-xs-35{margin-left:35%}[dir=rtl] .flex-offset-gt-xs-35,[dir=rtl] .offset-gt-xs-35{margin-left:auto;margin-right:35%}.flex-offset-gt-xs-40,.offset-gt-xs-40{margin-left:40%}[dir=rtl] .flex-offset-gt-xs-40,[dir=rtl] .offset-gt-xs-40{margin-left:auto;margin-right:40%}.flex-offset-gt-xs-45,.offset-gt-xs-45{margin-left:45%}[dir=rtl] .flex-offset-gt-xs-45,[dir=rtl] .offset-gt-xs-45{margin-left:auto;margin-right:45%}.flex-offset-gt-xs-50,.offset-gt-xs-50{margin-left:50%}[dir=rtl] .flex-offset-gt-xs-50,[dir=rtl] .offset-gt-xs-50{margin-left:auto;margin-right:50%}.flex-offset-gt-xs-55,.offset-gt-xs-55{margin-left:55%}[dir=rtl] .flex-offset-gt-xs-55,[dir=rtl] .offset-gt-xs-55{margin-left:auto;margin-right:55%}.flex-offset-gt-xs-60,.offset-gt-xs-60{margin-left:60%}[dir=rtl] .flex-offset-gt-xs-60,[dir=rtl] .offset-gt-xs-60{margin-left:auto;margin-right:60%}.flex-offset-gt-xs-65,.offset-gt-xs-65{margin-left:65%}[dir=rtl] .flex-offset-gt-xs-65,[dir=rtl] .offset-gt-xs-65{margin-left:auto;margin-right:65%}.flex-offset-gt-xs-70,.offset-gt-xs-70{margin-left:70%}[dir=rtl] .flex-offset-gt-xs-70,[dir=rtl] .offset-gt-xs-70{margin-left:auto;margin-right:70%}.flex-offset-gt-xs-75,.offset-gt-xs-75{margin-left:75%}[dir=rtl] .flex-offset-gt-xs-75,[dir=rtl] .offset-gt-xs-75{margin-left:auto;margin-right:75%}.flex-offset-gt-xs-80,.offset-gt-xs-80{margin-left:80%}[dir=rtl] .flex-offset-gt-xs-80,[dir=rtl] .offset-gt-xs-80{margin-left:auto;margin-right:80%}.flex-offset-gt-xs-85,.offset-gt-xs-85{margin-left:85%}[dir=rtl] .flex-offset-gt-xs-85,[dir=rtl] .offset-gt-xs-85{margin-left:auto;margin-right:85%}.flex-offset-gt-xs-90,.offset-gt-xs-90{margin-left:90%}[dir=rtl] .flex-offset-gt-xs-90,[dir=rtl] .offset-gt-xs-90{margin-left:auto;margin-right:90%}.flex-offset-gt-xs-95,.offset-gt-xs-95{margin-left:95%}[dir=rtl] .flex-offset-gt-xs-95,[dir=rtl] .offset-gt-xs-95{margin-left:auto;margin-right:95%}.flex-offset-gt-xs-33,.offset-gt-xs-33{margin-left:calc(100% / 3)}.flex-offset-gt-xs-66,.offset-gt-xs-66{margin-left:calc(200% / 3)}[dir=rtl] .flex-offset-gt-xs-66,[dir=rtl] .offset-gt-xs-66{margin-left:auto;margin-right:calc(200% / 3)}.layout-align-gt-xs,.layout-align-gt-xs-start-stretch{justify-content:flex-start;align-content:stretch;align-items:stretch}.layout-align-gt-xs-start,.layout-align-gt-xs-start-center,.layout-align-gt-xs-start-end,.layout-align-gt-xs-start-start,.layout-align-gt-xs-start-stretch{justify-content:flex-start}.layout-align-gt-xs-center,.layout-align-gt-xs-center-center,.layout-align-gt-xs-center-end,.layout-align-gt-xs-center-start,.layout-align-gt-xs-center-stretch{justify-content:center}.layout-align-gt-xs-end,.layout-align-gt-xs-end-center,.layout-align-gt-xs-end-end,.layout-align-gt-xs-end-start,.layout-align-gt-xs-end-stretch{justify-content:flex-end}.layout-align-gt-xs-space-around,.layout-align-gt-xs-space-around-center,.layout-align-gt-xs-space-around-end,.layout-align-gt-xs-space-around-start,.layout-align-gt-xs-space-around-stretch{justify-content:space-around}.layout-align-gt-xs-space-between,.layout-align-gt-xs-space-between-center,.layout-align-gt-xs-space-between-end,.layout-align-gt-xs-space-between-start,.layout-align-gt-xs-space-between-stretch{justify-content:space-between}.layout-align-gt-xs-center-start,.layout-align-gt-xs-end-start,.layout-align-gt-xs-space-around-start,.layout-align-gt-xs-space-between-start,.layout-align-gt-xs-start-start{align-items:flex-start;align-content:flex-start}.layout-align-gt-xs-center-center,.layout-align-gt-xs-end-center,.layout-align-gt-xs-space-around-center,.layout-align-gt-xs-space-between-center,.layout-align-gt-xs-start-center{align-items:center;align-content:center;max-width:100%}.layout-align-gt-xs-center-center>*,.layout-align-gt-xs-end-center>*,.layout-align-gt-xs-space-around-center>*,.layout-align-gt-xs-space-between-center>*,.layout-align-gt-xs-start-center>*{max-width:100%;box-sizing:border-box}.layout-align-gt-xs-center-end,.layout-align-gt-xs-end-end,.layout-align-gt-xs-space-around-end,.layout-align-gt-xs-space-between-end,.layout-align-gt-xs-start-end{align-items:flex-end;align-content:flex-end}.layout-align-gt-xs-center-stretch,.layout-align-gt-xs-end-stretch,.layout-align-gt-xs-space-around-stretch,.layout-align-gt-xs-space-between-stretch,.layout-align-gt-xs-start-stretch{align-items:stretch;align-content:stretch}.flex-gt-xs{flex:1;box-sizing:border-box}.flex-gt-xs-grow{flex:1 1 100%;box-sizing:border-box}.flex-gt-xs-initial{flex:0 1 auto;box-sizing:border-box}.flex-gt-xs-auto{flex:1 1 auto;box-sizing:border-box}.flex-gt-xs-none{flex:0 0 auto;box-sizing:border-box}.flex-gt-xs-noshrink{flex:1 0 auto;box-sizing:border-box}.flex-gt-xs-nogrow{flex:0 1 auto;box-sizing:border-box}.flex-gt-xs-0{flex:1 1 0%;max-width:0%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-0{flex:1 1 0%;max-width:0%;max-height:100%;box-sizing:border-box;min-width:0}.layout-column>.flex-gt-xs-0{flex:1 1 0%;max-width:100%;max-height:0%;box-sizing:border-box}.layout-row>.flex-gt-xs-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-xs-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-xs-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-xs-row>.flex-gt-xs-0{flex:1 1 0%;max-width:0%;max-height:100%;box-sizing:border-box;min-width:0}.layout-gt-xs-column>.flex-gt-xs-0{flex:1 1 0%;max-width:100%;max-height:0%;box-sizing:border-box;min-height:0}.flex-gt-xs-5{flex:1 1 5%;max-width:5%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-5{flex:1 1 5%;max-width:5%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-xs-5{flex:1 1 5%;max-width:100%;max-height:5%;box-sizing:border-box}.layout-row>.flex-gt-xs-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-xs-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-xs-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-xs-row>.flex-gt-xs-5{flex:1 1 5%;max-width:5%;max-height:100%;box-sizing:border-box}.layout-gt-xs-column>.flex-gt-xs-5{flex:1 1 5%;max-width:100%;max-height:5%;box-sizing:border-box}.flex-gt-xs-10{flex:1 1 10%;max-width:10%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-10{flex:1 1 10%;max-width:10%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-xs-10{flex:1 1 10%;max-width:100%;max-height:10%;box-sizing:border-box}.layout-row>.flex-gt-xs-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-xs-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-xs-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-xs-row>.flex-gt-xs-10{flex:1 1 10%;max-width:10%;max-height:100%;box-sizing:border-box}.layout-gt-xs-column>.flex-gt-xs-10{flex:1 1 10%;max-width:100%;max-height:10%;box-sizing:border-box}.flex-gt-xs-15{flex:1 1 15%;max-width:15%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-15{flex:1 1 15%;max-width:15%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-xs-15{flex:1 1 15%;max-width:100%;max-height:15%;box-sizing:border-box}.layout-row>.flex-gt-xs-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-xs-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-xs-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-xs-row>.flex-gt-xs-15{flex:1 1 15%;max-width:15%;max-height:100%;box-sizing:border-box}.layout-gt-xs-column>.flex-gt-xs-15{flex:1 1 15%;max-width:100%;max-height:15%;box-sizing:border-box}.flex-gt-xs-20{flex:1 1 20%;max-width:20%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-20{flex:1 1 20%;max-width:20%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-xs-20{flex:1 1 20%;max-width:100%;max-height:20%;box-sizing:border-box}.layout-row>.flex-gt-xs-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-xs-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-xs-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-xs-row>.flex-gt-xs-20{flex:1 1 20%;max-width:20%;max-height:100%;box-sizing:border-box}.layout-gt-xs-column>.flex-gt-xs-20{flex:1 1 20%;max-width:100%;max-height:20%;box-sizing:border-box}.flex-gt-xs-25{flex:1 1 25%;max-width:25%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-25{flex:1 1 25%;max-width:25%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-xs-25{flex:1 1 25%;max-width:100%;max-height:25%;box-sizing:border-box}.layout-row>.flex-gt-xs-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-xs-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-xs-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-xs-row>.flex-gt-xs-25{flex:1 1 25%;max-width:25%;max-height:100%;box-sizing:border-box}.layout-gt-xs-column>.flex-gt-xs-25{flex:1 1 25%;max-width:100%;max-height:25%;box-sizing:border-box}.flex-gt-xs-30{flex:1 1 30%;max-width:30%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-30{flex:1 1 30%;max-width:30%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-xs-30{flex:1 1 30%;max-width:100%;max-height:30%;box-sizing:border-box}.layout-row>.flex-gt-xs-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-xs-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-xs-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-xs-row>.flex-gt-xs-30{flex:1 1 30%;max-width:30%;max-height:100%;box-sizing:border-box}.layout-gt-xs-column>.flex-gt-xs-30{flex:1 1 30%;max-width:100%;max-height:30%;box-sizing:border-box}.flex-gt-xs-35{flex:1 1 35%;max-width:35%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-35{flex:1 1 35%;max-width:35%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-xs-35{flex:1 1 35%;max-width:100%;max-height:35%;box-sizing:border-box}.layout-row>.flex-gt-xs-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-xs-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-xs-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-xs-row>.flex-gt-xs-35{flex:1 1 35%;max-width:35%;max-height:100%;box-sizing:border-box}.layout-gt-xs-column>.flex-gt-xs-35{flex:1 1 35%;max-width:100%;max-height:35%;box-sizing:border-box}.flex-gt-xs-40{flex:1 1 40%;max-width:40%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-40{flex:1 1 40%;max-width:40%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-xs-40{flex:1 1 40%;max-width:100%;max-height:40%;box-sizing:border-box}.layout-row>.flex-gt-xs-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-xs-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-xs-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-xs-row>.flex-gt-xs-40{flex:1 1 40%;max-width:40%;max-height:100%;box-sizing:border-box}.layout-gt-xs-column>.flex-gt-xs-40{flex:1 1 40%;max-width:100%;max-height:40%;box-sizing:border-box}.flex-gt-xs-45{flex:1 1 45%;max-width:45%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-45{flex:1 1 45%;max-width:45%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-xs-45{flex:1 1 45%;max-width:100%;max-height:45%;box-sizing:border-box}.layout-row>.flex-gt-xs-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-xs-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-xs-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-xs-row>.flex-gt-xs-45{flex:1 1 45%;max-width:45%;max-height:100%;box-sizing:border-box}.layout-gt-xs-column>.flex-gt-xs-45{flex:1 1 45%;max-width:100%;max-height:45%;box-sizing:border-box}.flex-gt-xs-50{flex:1 1 50%;max-width:50%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-50{flex:1 1 50%;max-width:50%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-xs-50{flex:1 1 50%;max-width:100%;max-height:50%;box-sizing:border-box}.layout-row>.flex-gt-xs-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-xs-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-xs-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-xs-row>.flex-gt-xs-50{flex:1 1 50%;max-width:50%;max-height:100%;box-sizing:border-box}.layout-gt-xs-column>.flex-gt-xs-50{flex:1 1 50%;max-width:100%;max-height:50%;box-sizing:border-box}.flex-gt-xs-55{flex:1 1 55%;max-width:55%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-55{flex:1 1 55%;max-width:55%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-xs-55{flex:1 1 55%;max-width:100%;max-height:55%;box-sizing:border-box}.layout-row>.flex-gt-xs-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-xs-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-xs-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-xs-row>.flex-gt-xs-55{flex:1 1 55%;max-width:55%;max-height:100%;box-sizing:border-box}.layout-gt-xs-column>.flex-gt-xs-55{flex:1 1 55%;max-width:100%;max-height:55%;box-sizing:border-box}.flex-gt-xs-60{flex:1 1 60%;max-width:60%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-60{flex:1 1 60%;max-width:60%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-xs-60{flex:1 1 60%;max-width:100%;max-height:60%;box-sizing:border-box}.layout-row>.flex-gt-xs-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-xs-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-xs-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-xs-row>.flex-gt-xs-60{flex:1 1 60%;max-width:60%;max-height:100%;box-sizing:border-box}.layout-gt-xs-column>.flex-gt-xs-60{flex:1 1 60%;max-width:100%;max-height:60%;box-sizing:border-box}.flex-gt-xs-65{flex:1 1 65%;max-width:65%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-65{flex:1 1 65%;max-width:65%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-xs-65{flex:1 1 65%;max-width:100%;max-height:65%;box-sizing:border-box}.layout-row>.flex-gt-xs-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-xs-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-xs-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-xs-row>.flex-gt-xs-65{flex:1 1 65%;max-width:65%;max-height:100%;box-sizing:border-box}.layout-gt-xs-column>.flex-gt-xs-65{flex:1 1 65%;max-width:100%;max-height:65%;box-sizing:border-box}.flex-gt-xs-70{flex:1 1 70%;max-width:70%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-70{flex:1 1 70%;max-width:70%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-xs-70{flex:1 1 70%;max-width:100%;max-height:70%;box-sizing:border-box}.layout-row>.flex-gt-xs-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-xs-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-xs-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-xs-row>.flex-gt-xs-70{flex:1 1 70%;max-width:70%;max-height:100%;box-sizing:border-box}.layout-gt-xs-column>.flex-gt-xs-70{flex:1 1 70%;max-width:100%;max-height:70%;box-sizing:border-box}.flex-gt-xs-75{flex:1 1 75%;max-width:75%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-75{flex:1 1 75%;max-width:75%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-xs-75{flex:1 1 75%;max-width:100%;max-height:75%;box-sizing:border-box}.layout-row>.flex-gt-xs-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-xs-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-xs-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-xs-row>.flex-gt-xs-75{flex:1 1 75%;max-width:75%;max-height:100%;box-sizing:border-box}.layout-gt-xs-column>.flex-gt-xs-75{flex:1 1 75%;max-width:100%;max-height:75%;box-sizing:border-box}.flex-gt-xs-80{flex:1 1 80%;max-width:80%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-80{flex:1 1 80%;max-width:80%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-xs-80{flex:1 1 80%;max-width:100%;max-height:80%;box-sizing:border-box}.layout-row>.flex-gt-xs-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-xs-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-xs-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-xs-row>.flex-gt-xs-80{flex:1 1 80%;max-width:80%;max-height:100%;box-sizing:border-box}.layout-gt-xs-column>.flex-gt-xs-80{flex:1 1 80%;max-width:100%;max-height:80%;box-sizing:border-box}.flex-gt-xs-85{flex:1 1 85%;max-width:85%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-85{flex:1 1 85%;max-width:85%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-xs-85{flex:1 1 85%;max-width:100%;max-height:85%;box-sizing:border-box}.layout-row>.flex-gt-xs-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-xs-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-xs-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-xs-row>.flex-gt-xs-85{flex:1 1 85%;max-width:85%;max-height:100%;box-sizing:border-box}.layout-gt-xs-column>.flex-gt-xs-85{flex:1 1 85%;max-width:100%;max-height:85%;box-sizing:border-box}.flex-gt-xs-90{flex:1 1 90%;max-width:90%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-90{flex:1 1 90%;max-width:90%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-xs-90{flex:1 1 90%;max-width:100%;max-height:90%;box-sizing:border-box}.layout-row>.flex-gt-xs-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-xs-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-xs-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-xs-row>.flex-gt-xs-90{flex:1 1 90%;max-width:90%;max-height:100%;box-sizing:border-box}.layout-gt-xs-column>.flex-gt-xs-90{flex:1 1 90%;max-width:100%;max-height:90%;box-sizing:border-box}.flex-gt-xs-95{flex:1 1 95%;max-width:95%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-95{flex:1 1 95%;max-width:95%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-xs-95{flex:1 1 95%;max-width:100%;max-height:95%;box-sizing:border-box}.layout-row>.flex-gt-xs-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-xs-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-xs-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-xs-row>.flex-gt-xs-95{flex:1 1 95%;max-width:95%;max-height:100%;box-sizing:border-box}.layout-gt-xs-column>.flex-gt-xs-95{flex:1 1 95%;max-width:100%;max-height:95%;box-sizing:border-box}.flex-gt-xs-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-xs-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-xs-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-xs-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-xs-row>.flex-gt-xs-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-gt-xs-column>.flex-gt-xs-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-gt-xs-row>.flex-gt-xs-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-gt-xs-row>.flex-gt-xs-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-gt-xs-row>.flex{min-width:0}.layout-gt-xs-column>.flex-gt-xs-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-gt-xs-column>.flex-gt-xs-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-xs-column>.flex{min-height:0}.layout-gt-xs,.layout-gt-xs-column,.layout-gt-xs-row{box-sizing:border-box;display:-webkit-box;display:-webkit-flex;display:-moz-box;display:-ms-flexbox;display:flex}.layout-gt-xs-column{flex-direction:column}.layout-gt-xs-row{flex-direction:row}}@media (min-width:600px) and (max-width:959px){.hide-gt-xs:not(.show-gt-xs):not(.show-sm):not(.show),.hide:not(.show-gt-xs):not(.show-sm):not(.show){display:none}.hide-sm:not(.show-gt-xs):not(.show-sm):not(.show){display:none}.flex-order-sm--20{order:-20}.flex-order-sm--19{order:-19}.flex-order-sm--18{order:-18}.flex-order-sm--17{order:-17}.flex-order-sm--16{order:-16}.flex-order-sm--15{order:-15}.flex-order-sm--14{order:-14}.flex-order-sm--13{order:-13}.flex-order-sm--12{order:-12}.flex-order-sm--11{order:-11}.flex-order-sm--10{order:-10}.flex-order-sm--9{order:-9}.flex-order-sm--8{order:-8}.flex-order-sm--7{order:-7}.flex-order-sm--6{order:-6}.flex-order-sm--5{order:-5}.flex-order-sm--4{order:-4}.flex-order-sm--3{order:-3}.flex-order-sm--2{order:-2}.flex-order-sm--1{order:-1}.flex-order-sm-0{order:0}.flex-order-sm-1{order:1}.flex-order-sm-2{order:2}.flex-order-sm-3{order:3}.flex-order-sm-4{order:4}.flex-order-sm-5{order:5}.flex-order-sm-6{order:6}.flex-order-sm-7{order:7}.flex-order-sm-8{order:8}.flex-order-sm-9{order:9}.flex-order-sm-10{order:10}.flex-order-sm-11{order:11}.flex-order-sm-12{order:12}.flex-order-sm-13{order:13}.flex-order-sm-14{order:14}.flex-order-sm-15{order:15}.flex-order-sm-16{order:16}.flex-order-sm-17{order:17}.flex-order-sm-18{order:18}.flex-order-sm-19{order:19}.flex-order-sm-20{order:20}.flex-offset-sm-0,.offset-sm-0{margin-left:0}[dir=rtl] .flex-offset-sm-0,[dir=rtl] .offset-sm-0{margin-left:auto;margin-right:0}.flex-offset-sm-5,.offset-sm-5{margin-left:5%}[dir=rtl] .flex-offset-sm-5,[dir=rtl] .offset-sm-5{margin-left:auto;margin-right:5%}.flex-offset-sm-10,.offset-sm-10{margin-left:10%}[dir=rtl] .flex-offset-sm-10,[dir=rtl] .offset-sm-10{margin-left:auto;margin-right:10%}.flex-offset-sm-15,.offset-sm-15{margin-left:15%}[dir=rtl] .flex-offset-sm-15,[dir=rtl] .offset-sm-15{margin-left:auto;margin-right:15%}.flex-offset-sm-20,.offset-sm-20{margin-left:20%}[dir=rtl] .flex-offset-sm-20,[dir=rtl] .offset-sm-20{margin-left:auto;margin-right:20%}.flex-offset-sm-25,.offset-sm-25{margin-left:25%}[dir=rtl] .flex-offset-sm-25,[dir=rtl] .offset-sm-25{margin-left:auto;margin-right:25%}.flex-offset-sm-30,.offset-sm-30{margin-left:30%}[dir=rtl] .flex-offset-sm-30,[dir=rtl] .offset-sm-30{margin-left:auto;margin-right:30%}.flex-offset-sm-35,.offset-sm-35{margin-left:35%}[dir=rtl] .flex-offset-sm-35,[dir=rtl] .offset-sm-35{margin-left:auto;margin-right:35%}.flex-offset-sm-40,.offset-sm-40{margin-left:40%}[dir=rtl] .flex-offset-sm-40,[dir=rtl] .offset-sm-40{margin-left:auto;margin-right:40%}.flex-offset-sm-45,.offset-sm-45{margin-left:45%}[dir=rtl] .flex-offset-sm-45,[dir=rtl] .offset-sm-45{margin-left:auto;margin-right:45%}.flex-offset-sm-50,.offset-sm-50{margin-left:50%}[dir=rtl] .flex-offset-sm-50,[dir=rtl] .offset-sm-50{margin-left:auto;margin-right:50%}.flex-offset-sm-55,.offset-sm-55{margin-left:55%}[dir=rtl] .flex-offset-sm-55,[dir=rtl] .offset-sm-55{margin-left:auto;margin-right:55%}.flex-offset-sm-60,.offset-sm-60{margin-left:60%}[dir=rtl] .flex-offset-sm-60,[dir=rtl] .offset-sm-60{margin-left:auto;margin-right:60%}.flex-offset-sm-65,.offset-sm-65{margin-left:65%}[dir=rtl] .flex-offset-sm-65,[dir=rtl] .offset-sm-65{margin-left:auto;margin-right:65%}.flex-offset-sm-70,.offset-sm-70{margin-left:70%}[dir=rtl] .flex-offset-sm-70,[dir=rtl] .offset-sm-70{margin-left:auto;margin-right:70%}.flex-offset-sm-75,.offset-sm-75{margin-left:75%}[dir=rtl] .flex-offset-sm-75,[dir=rtl] .offset-sm-75{margin-left:auto;margin-right:75%}.flex-offset-sm-80,.offset-sm-80{margin-left:80%}[dir=rtl] .flex-offset-sm-80,[dir=rtl] .offset-sm-80{margin-left:auto;margin-right:80%}.flex-offset-sm-85,.offset-sm-85{margin-left:85%}[dir=rtl] .flex-offset-sm-85,[dir=rtl] .offset-sm-85{margin-left:auto;margin-right:85%}.flex-offset-sm-90,.offset-sm-90{margin-left:90%}[dir=rtl] .flex-offset-sm-90,[dir=rtl] .offset-sm-90{margin-left:auto;margin-right:90%}.flex-offset-sm-95,.offset-sm-95{margin-left:95%}[dir=rtl] .flex-offset-sm-95,[dir=rtl] .offset-sm-95{margin-left:auto;margin-right:95%}.flex-offset-sm-33,.offset-sm-33{margin-left:calc(100% / 3)}.flex-offset-sm-66,.offset-sm-66{margin-left:calc(200% / 3)}[dir=rtl] .flex-offset-sm-66,[dir=rtl] .offset-sm-66{margin-left:auto;margin-right:calc(200% / 3)}.layout-align-sm,.layout-align-sm-start-stretch{justify-content:flex-start;align-content:stretch;align-items:stretch}.layout-align-sm-start,.layout-align-sm-start-center,.layout-align-sm-start-end,.layout-align-sm-start-start,.layout-align-sm-start-stretch{justify-content:flex-start}.layout-align-sm-center,.layout-align-sm-center-center,.layout-align-sm-center-end,.layout-align-sm-center-start,.layout-align-sm-center-stretch{justify-content:center}.layout-align-sm-end,.layout-align-sm-end-center,.layout-align-sm-end-end,.layout-align-sm-end-start,.layout-align-sm-end-stretch{justify-content:flex-end}.layout-align-sm-space-around,.layout-align-sm-space-around-center,.layout-align-sm-space-around-end,.layout-align-sm-space-around-start,.layout-align-sm-space-around-stretch{justify-content:space-around}.layout-align-sm-space-between,.layout-align-sm-space-between-center,.layout-align-sm-space-between-end,.layout-align-sm-space-between-start,.layout-align-sm-space-between-stretch{justify-content:space-between}.layout-align-sm-center-start,.layout-align-sm-end-start,.layout-align-sm-space-around-start,.layout-align-sm-space-between-start,.layout-align-sm-start-start{align-items:flex-start;align-content:flex-start}.layout-align-sm-center-center,.layout-align-sm-end-center,.layout-align-sm-space-around-center,.layout-align-sm-space-between-center,.layout-align-sm-start-center{align-items:center;align-content:center;max-width:100%}.layout-align-sm-center-center>*,.layout-align-sm-end-center>*,.layout-align-sm-space-around-center>*,.layout-align-sm-space-between-center>*,.layout-align-sm-start-center>*{max-width:100%;box-sizing:border-box}.layout-align-sm-center-end,.layout-align-sm-end-end,.layout-align-sm-space-around-end,.layout-align-sm-space-between-end,.layout-align-sm-start-end{align-items:flex-end;align-content:flex-end}.layout-align-sm-center-stretch,.layout-align-sm-end-stretch,.layout-align-sm-space-around-stretch,.layout-align-sm-space-between-stretch,.layout-align-sm-start-stretch{align-items:stretch;align-content:stretch}.flex-sm{flex:1;box-sizing:border-box}.flex-sm-grow{flex:1 1 100%;box-sizing:border-box}.flex-sm-initial{flex:0 1 auto;box-sizing:border-box}.flex-sm-auto{flex:1 1 auto;box-sizing:border-box}.flex-sm-none{flex:0 0 auto;box-sizing:border-box}.flex-sm-noshrink{flex:1 0 auto;box-sizing:border-box}.flex-sm-nogrow{flex:0 1 auto;box-sizing:border-box}.flex-sm-0{flex:1 1 0%;max-width:0%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-0{flex:1 1 0%;max-width:0%;max-height:100%;box-sizing:border-box;min-width:0}.layout-column>.flex-sm-0{flex:1 1 0%;max-width:100%;max-height:0%;box-sizing:border-box}.layout-row>.flex-sm-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-sm-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-sm-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-sm-row>.flex-sm-0{flex:1 1 0%;max-width:0%;max-height:100%;box-sizing:border-box;min-width:0}.layout-sm-column>.flex-sm-0{flex:1 1 0%;max-width:100%;max-height:0%;box-sizing:border-box;min-height:0}.flex-sm-5{flex:1 1 5%;max-width:5%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-5{flex:1 1 5%;max-width:5%;max-height:100%;box-sizing:border-box}.layout-column>.flex-sm-5{flex:1 1 5%;max-width:100%;max-height:5%;box-sizing:border-box}.layout-row>.flex-sm-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-sm-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-sm-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-sm-row>.flex-sm-5{flex:1 1 5%;max-width:5%;max-height:100%;box-sizing:border-box}.layout-sm-column>.flex-sm-5{flex:1 1 5%;max-width:100%;max-height:5%;box-sizing:border-box}.flex-sm-10{flex:1 1 10%;max-width:10%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-10{flex:1 1 10%;max-width:10%;max-height:100%;box-sizing:border-box}.layout-column>.flex-sm-10{flex:1 1 10%;max-width:100%;max-height:10%;box-sizing:border-box}.layout-row>.flex-sm-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-sm-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-sm-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-sm-row>.flex-sm-10{flex:1 1 10%;max-width:10%;max-height:100%;box-sizing:border-box}.layout-sm-column>.flex-sm-10{flex:1 1 10%;max-width:100%;max-height:10%;box-sizing:border-box}.flex-sm-15{flex:1 1 15%;max-width:15%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-15{flex:1 1 15%;max-width:15%;max-height:100%;box-sizing:border-box}.layout-column>.flex-sm-15{flex:1 1 15%;max-width:100%;max-height:15%;box-sizing:border-box}.layout-row>.flex-sm-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-sm-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-sm-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-sm-row>.flex-sm-15{flex:1 1 15%;max-width:15%;max-height:100%;box-sizing:border-box}.layout-sm-column>.flex-sm-15{flex:1 1 15%;max-width:100%;max-height:15%;box-sizing:border-box}.flex-sm-20{flex:1 1 20%;max-width:20%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-20{flex:1 1 20%;max-width:20%;max-height:100%;box-sizing:border-box}.layout-column>.flex-sm-20{flex:1 1 20%;max-width:100%;max-height:20%;box-sizing:border-box}.layout-row>.flex-sm-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-sm-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-sm-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-sm-row>.flex-sm-20{flex:1 1 20%;max-width:20%;max-height:100%;box-sizing:border-box}.layout-sm-column>.flex-sm-20{flex:1 1 20%;max-width:100%;max-height:20%;box-sizing:border-box}.flex-sm-25{flex:1 1 25%;max-width:25%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-25{flex:1 1 25%;max-width:25%;max-height:100%;box-sizing:border-box}.layout-column>.flex-sm-25{flex:1 1 25%;max-width:100%;max-height:25%;box-sizing:border-box}.layout-row>.flex-sm-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-sm-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-sm-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-sm-row>.flex-sm-25{flex:1 1 25%;max-width:25%;max-height:100%;box-sizing:border-box}.layout-sm-column>.flex-sm-25{flex:1 1 25%;max-width:100%;max-height:25%;box-sizing:border-box}.flex-sm-30{flex:1 1 30%;max-width:30%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-30{flex:1 1 30%;max-width:30%;max-height:100%;box-sizing:border-box}.layout-column>.flex-sm-30{flex:1 1 30%;max-width:100%;max-height:30%;box-sizing:border-box}.layout-row>.flex-sm-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-sm-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-sm-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-sm-row>.flex-sm-30{flex:1 1 30%;max-width:30%;max-height:100%;box-sizing:border-box}.layout-sm-column>.flex-sm-30{flex:1 1 30%;max-width:100%;max-height:30%;box-sizing:border-box}.flex-sm-35{flex:1 1 35%;max-width:35%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-35{flex:1 1 35%;max-width:35%;max-height:100%;box-sizing:border-box}.layout-column>.flex-sm-35{flex:1 1 35%;max-width:100%;max-height:35%;box-sizing:border-box}.layout-row>.flex-sm-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-sm-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-sm-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-sm-row>.flex-sm-35{flex:1 1 35%;max-width:35%;max-height:100%;box-sizing:border-box}.layout-sm-column>.flex-sm-35{flex:1 1 35%;max-width:100%;max-height:35%;box-sizing:border-box}.flex-sm-40{flex:1 1 40%;max-width:40%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-40{flex:1 1 40%;max-width:40%;max-height:100%;box-sizing:border-box}.layout-column>.flex-sm-40{flex:1 1 40%;max-width:100%;max-height:40%;box-sizing:border-box}.layout-row>.flex-sm-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-sm-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-sm-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-sm-row>.flex-sm-40{flex:1 1 40%;max-width:40%;max-height:100%;box-sizing:border-box}.layout-sm-column>.flex-sm-40{flex:1 1 40%;max-width:100%;max-height:40%;box-sizing:border-box}.flex-sm-45{flex:1 1 45%;max-width:45%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-45{flex:1 1 45%;max-width:45%;max-height:100%;box-sizing:border-box}.layout-column>.flex-sm-45{flex:1 1 45%;max-width:100%;max-height:45%;box-sizing:border-box}.layout-row>.flex-sm-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-sm-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-sm-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-sm-row>.flex-sm-45{flex:1 1 45%;max-width:45%;max-height:100%;box-sizing:border-box}.layout-sm-column>.flex-sm-45{flex:1 1 45%;max-width:100%;max-height:45%;box-sizing:border-box}.flex-sm-50{flex:1 1 50%;max-width:50%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-50{flex:1 1 50%;max-width:50%;max-height:100%;box-sizing:border-box}.layout-column>.flex-sm-50{flex:1 1 50%;max-width:100%;max-height:50%;box-sizing:border-box}.layout-row>.flex-sm-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-sm-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-sm-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-sm-row>.flex-sm-50{flex:1 1 50%;max-width:50%;max-height:100%;box-sizing:border-box}.layout-sm-column>.flex-sm-50{flex:1 1 50%;max-width:100%;max-height:50%;box-sizing:border-box}.flex-sm-55{flex:1 1 55%;max-width:55%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-55{flex:1 1 55%;max-width:55%;max-height:100%;box-sizing:border-box}.layout-column>.flex-sm-55{flex:1 1 55%;max-width:100%;max-height:55%;box-sizing:border-box}.layout-row>.flex-sm-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-sm-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-sm-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-sm-row>.flex-sm-55{flex:1 1 55%;max-width:55%;max-height:100%;box-sizing:border-box}.layout-sm-column>.flex-sm-55{flex:1 1 55%;max-width:100%;max-height:55%;box-sizing:border-box}.flex-sm-60{flex:1 1 60%;max-width:60%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-60{flex:1 1 60%;max-width:60%;max-height:100%;box-sizing:border-box}.layout-column>.flex-sm-60{flex:1 1 60%;max-width:100%;max-height:60%;box-sizing:border-box}.layout-row>.flex-sm-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-sm-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-sm-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-sm-row>.flex-sm-60{flex:1 1 60%;max-width:60%;max-height:100%;box-sizing:border-box}.layout-sm-column>.flex-sm-60{flex:1 1 60%;max-width:100%;max-height:60%;box-sizing:border-box}.flex-sm-65{flex:1 1 65%;max-width:65%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-65{flex:1 1 65%;max-width:65%;max-height:100%;box-sizing:border-box}.layout-column>.flex-sm-65{flex:1 1 65%;max-width:100%;max-height:65%;box-sizing:border-box}.layout-row>.flex-sm-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-sm-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-sm-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-sm-row>.flex-sm-65{flex:1 1 65%;max-width:65%;max-height:100%;box-sizing:border-box}.layout-sm-column>.flex-sm-65{flex:1 1 65%;max-width:100%;max-height:65%;box-sizing:border-box}.flex-sm-70{flex:1 1 70%;max-width:70%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-70{flex:1 1 70%;max-width:70%;max-height:100%;box-sizing:border-box}.layout-column>.flex-sm-70{flex:1 1 70%;max-width:100%;max-height:70%;box-sizing:border-box}.layout-row>.flex-sm-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-sm-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-sm-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-sm-row>.flex-sm-70{flex:1 1 70%;max-width:70%;max-height:100%;box-sizing:border-box}.layout-sm-column>.flex-sm-70{flex:1 1 70%;max-width:100%;max-height:70%;box-sizing:border-box}.flex-sm-75{flex:1 1 75%;max-width:75%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-75{flex:1 1 75%;max-width:75%;max-height:100%;box-sizing:border-box}.layout-column>.flex-sm-75{flex:1 1 75%;max-width:100%;max-height:75%;box-sizing:border-box}.layout-row>.flex-sm-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-sm-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-sm-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-sm-row>.flex-sm-75{flex:1 1 75%;max-width:75%;max-height:100%;box-sizing:border-box}.layout-sm-column>.flex-sm-75{flex:1 1 75%;max-width:100%;max-height:75%;box-sizing:border-box}.flex-sm-80{flex:1 1 80%;max-width:80%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-80{flex:1 1 80%;max-width:80%;max-height:100%;box-sizing:border-box}.layout-column>.flex-sm-80{flex:1 1 80%;max-width:100%;max-height:80%;box-sizing:border-box}.layout-row>.flex-sm-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-sm-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-sm-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-sm-row>.flex-sm-80{flex:1 1 80%;max-width:80%;max-height:100%;box-sizing:border-box}.layout-sm-column>.flex-sm-80{flex:1 1 80%;max-width:100%;max-height:80%;box-sizing:border-box}.flex-sm-85{flex:1 1 85%;max-width:85%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-85{flex:1 1 85%;max-width:85%;max-height:100%;box-sizing:border-box}.layout-column>.flex-sm-85{flex:1 1 85%;max-width:100%;max-height:85%;box-sizing:border-box}.layout-row>.flex-sm-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-sm-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-sm-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-sm-row>.flex-sm-85{flex:1 1 85%;max-width:85%;max-height:100%;box-sizing:border-box}.layout-sm-column>.flex-sm-85{flex:1 1 85%;max-width:100%;max-height:85%;box-sizing:border-box}.flex-sm-90{flex:1 1 90%;max-width:90%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-90{flex:1 1 90%;max-width:90%;max-height:100%;box-sizing:border-box}.layout-column>.flex-sm-90{flex:1 1 90%;max-width:100%;max-height:90%;box-sizing:border-box}.layout-row>.flex-sm-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-sm-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-sm-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-sm-row>.flex-sm-90{flex:1 1 90%;max-width:90%;max-height:100%;box-sizing:border-box}.layout-sm-column>.flex-sm-90{flex:1 1 90%;max-width:100%;max-height:90%;box-sizing:border-box}.flex-sm-95{flex:1 1 95%;max-width:95%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-95{flex:1 1 95%;max-width:95%;max-height:100%;box-sizing:border-box}.layout-column>.flex-sm-95{flex:1 1 95%;max-width:100%;max-height:95%;box-sizing:border-box}.layout-row>.flex-sm-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-sm-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-sm-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-sm-row>.flex-sm-95{flex:1 1 95%;max-width:95%;max-height:100%;box-sizing:border-box}.layout-sm-column>.flex-sm-95{flex:1 1 95%;max-width:100%;max-height:95%;box-sizing:border-box}.flex-sm-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-column>.flex-sm-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-sm-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-sm-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-sm-row>.flex-sm-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-sm-column>.flex-sm-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-sm-row>.flex-sm-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-sm-row>.flex-sm-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-sm-row>.flex{min-width:0}.layout-sm-column>.flex-sm-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-sm-column>.flex-sm-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-sm-column>.flex{min-height:0}.layout-sm,.layout-sm-column,.layout-sm-row{box-sizing:border-box;display:-webkit-box;display:-webkit-flex;display:-moz-box;display:-ms-flexbox;display:flex}.layout-sm-column{flex-direction:column}.layout-sm-row{flex-direction:row}}@media (min-width:960px){.flex-order-gt-sm--20{order:-20}.flex-order-gt-sm--19{order:-19}.flex-order-gt-sm--18{order:-18}.flex-order-gt-sm--17{order:-17}.flex-order-gt-sm--16{order:-16}.flex-order-gt-sm--15{order:-15}.flex-order-gt-sm--14{order:-14}.flex-order-gt-sm--13{order:-13}.flex-order-gt-sm--12{order:-12}.flex-order-gt-sm--11{order:-11}.flex-order-gt-sm--10{order:-10}.flex-order-gt-sm--9{order:-9}.flex-order-gt-sm--8{order:-8}.flex-order-gt-sm--7{order:-7}.flex-order-gt-sm--6{order:-6}.flex-order-gt-sm--5{order:-5}.flex-order-gt-sm--4{order:-4}.flex-order-gt-sm--3{order:-3}.flex-order-gt-sm--2{order:-2}.flex-order-gt-sm--1{order:-1}.flex-order-gt-sm-0{order:0}.flex-order-gt-sm-1{order:1}.flex-order-gt-sm-2{order:2}.flex-order-gt-sm-3{order:3}.flex-order-gt-sm-4{order:4}.flex-order-gt-sm-5{order:5}.flex-order-gt-sm-6{order:6}.flex-order-gt-sm-7{order:7}.flex-order-gt-sm-8{order:8}.flex-order-gt-sm-9{order:9}.flex-order-gt-sm-10{order:10}.flex-order-gt-sm-11{order:11}.flex-order-gt-sm-12{order:12}.flex-order-gt-sm-13{order:13}.flex-order-gt-sm-14{order:14}.flex-order-gt-sm-15{order:15}.flex-order-gt-sm-16{order:16}.flex-order-gt-sm-17{order:17}.flex-order-gt-sm-18{order:18}.flex-order-gt-sm-19{order:19}.flex-order-gt-sm-20{order:20}.flex-offset-gt-sm-0,.offset-gt-sm-0{margin-left:0}[dir=rtl] .flex-offset-gt-sm-0,[dir=rtl] .offset-gt-sm-0{margin-left:auto;margin-right:0}.flex-offset-gt-sm-5,.offset-gt-sm-5{margin-left:5%}[dir=rtl] .flex-offset-gt-sm-5,[dir=rtl] .offset-gt-sm-5{margin-left:auto;margin-right:5%}.flex-offset-gt-sm-10,.offset-gt-sm-10{margin-left:10%}[dir=rtl] .flex-offset-gt-sm-10,[dir=rtl] .offset-gt-sm-10{margin-left:auto;margin-right:10%}.flex-offset-gt-sm-15,.offset-gt-sm-15{margin-left:15%}[dir=rtl] .flex-offset-gt-sm-15,[dir=rtl] .offset-gt-sm-15{margin-left:auto;margin-right:15%}.flex-offset-gt-sm-20,.offset-gt-sm-20{margin-left:20%}[dir=rtl] .flex-offset-gt-sm-20,[dir=rtl] .offset-gt-sm-20{margin-left:auto;margin-right:20%}.flex-offset-gt-sm-25,.offset-gt-sm-25{margin-left:25%}[dir=rtl] .flex-offset-gt-sm-25,[dir=rtl] .offset-gt-sm-25{margin-left:auto;margin-right:25%}.flex-offset-gt-sm-30,.offset-gt-sm-30{margin-left:30%}[dir=rtl] .flex-offset-gt-sm-30,[dir=rtl] .offset-gt-sm-30{margin-left:auto;margin-right:30%}.flex-offset-gt-sm-35,.offset-gt-sm-35{margin-left:35%}[dir=rtl] .flex-offset-gt-sm-35,[dir=rtl] .offset-gt-sm-35{margin-left:auto;margin-right:35%}.flex-offset-gt-sm-40,.offset-gt-sm-40{margin-left:40%}[dir=rtl] .flex-offset-gt-sm-40,[dir=rtl] .offset-gt-sm-40{margin-left:auto;margin-right:40%}.flex-offset-gt-sm-45,.offset-gt-sm-45{margin-left:45%}[dir=rtl] .flex-offset-gt-sm-45,[dir=rtl] .offset-gt-sm-45{margin-left:auto;margin-right:45%}.flex-offset-gt-sm-50,.offset-gt-sm-50{margin-left:50%}[dir=rtl] .flex-offset-gt-sm-50,[dir=rtl] .offset-gt-sm-50{margin-left:auto;margin-right:50%}.flex-offset-gt-sm-55,.offset-gt-sm-55{margin-left:55%}[dir=rtl] .flex-offset-gt-sm-55,[dir=rtl] .offset-gt-sm-55{margin-left:auto;margin-right:55%}.flex-offset-gt-sm-60,.offset-gt-sm-60{margin-left:60%}[dir=rtl] .flex-offset-gt-sm-60,[dir=rtl] .offset-gt-sm-60{margin-left:auto;margin-right:60%}.flex-offset-gt-sm-65,.offset-gt-sm-65{margin-left:65%}[dir=rtl] .flex-offset-gt-sm-65,[dir=rtl] .offset-gt-sm-65{margin-left:auto;margin-right:65%}.flex-offset-gt-sm-70,.offset-gt-sm-70{margin-left:70%}[dir=rtl] .flex-offset-gt-sm-70,[dir=rtl] .offset-gt-sm-70{margin-left:auto;margin-right:70%}.flex-offset-gt-sm-75,.offset-gt-sm-75{margin-left:75%}[dir=rtl] .flex-offset-gt-sm-75,[dir=rtl] .offset-gt-sm-75{margin-left:auto;margin-right:75%}.flex-offset-gt-sm-80,.offset-gt-sm-80{margin-left:80%}[dir=rtl] .flex-offset-gt-sm-80,[dir=rtl] .offset-gt-sm-80{margin-left:auto;margin-right:80%}.flex-offset-gt-sm-85,.offset-gt-sm-85{margin-left:85%}[dir=rtl] .flex-offset-gt-sm-85,[dir=rtl] .offset-gt-sm-85{margin-left:auto;margin-right:85%}.flex-offset-gt-sm-90,.offset-gt-sm-90{margin-left:90%}[dir=rtl] .flex-offset-gt-sm-90,[dir=rtl] .offset-gt-sm-90{margin-left:auto;margin-right:90%}.flex-offset-gt-sm-95,.offset-gt-sm-95{margin-left:95%}[dir=rtl] .flex-offset-gt-sm-95,[dir=rtl] .offset-gt-sm-95{margin-left:auto;margin-right:95%}.flex-offset-gt-sm-33,.offset-gt-sm-33{margin-left:calc(100% / 3)}.flex-offset-gt-sm-66,.offset-gt-sm-66{margin-left:calc(200% / 3)}[dir=rtl] .flex-offset-gt-sm-66,[dir=rtl] .offset-gt-sm-66{margin-left:auto;margin-right:calc(200% / 3)}.layout-align-gt-sm,.layout-align-gt-sm-start-stretch{justify-content:flex-start;align-content:stretch;align-items:stretch}.layout-align-gt-sm-start,.layout-align-gt-sm-start-center,.layout-align-gt-sm-start-end,.layout-align-gt-sm-start-start,.layout-align-gt-sm-start-stretch{justify-content:flex-start}.layout-align-gt-sm-center,.layout-align-gt-sm-center-center,.layout-align-gt-sm-center-end,.layout-align-gt-sm-center-start,.layout-align-gt-sm-center-stretch{justify-content:center}.layout-align-gt-sm-end,.layout-align-gt-sm-end-center,.layout-align-gt-sm-end-end,.layout-align-gt-sm-end-start,.layout-align-gt-sm-end-stretch{justify-content:flex-end}.layout-align-gt-sm-space-around,.layout-align-gt-sm-space-around-center,.layout-align-gt-sm-space-around-end,.layout-align-gt-sm-space-around-start,.layout-align-gt-sm-space-around-stretch{justify-content:space-around}.layout-align-gt-sm-space-between,.layout-align-gt-sm-space-between-center,.layout-align-gt-sm-space-between-end,.layout-align-gt-sm-space-between-start,.layout-align-gt-sm-space-between-stretch{justify-content:space-between}.layout-align-gt-sm-center-start,.layout-align-gt-sm-end-start,.layout-align-gt-sm-space-around-start,.layout-align-gt-sm-space-between-start,.layout-align-gt-sm-start-start{align-items:flex-start;align-content:flex-start}.layout-align-gt-sm-center-center,.layout-align-gt-sm-end-center,.layout-align-gt-sm-space-around-center,.layout-align-gt-sm-space-between-center,.layout-align-gt-sm-start-center{align-items:center;align-content:center;max-width:100%}.layout-align-gt-sm-center-center>*,.layout-align-gt-sm-end-center>*,.layout-align-gt-sm-space-around-center>*,.layout-align-gt-sm-space-between-center>*,.layout-align-gt-sm-start-center>*{max-width:100%;box-sizing:border-box}.layout-align-gt-sm-center-end,.layout-align-gt-sm-end-end,.layout-align-gt-sm-space-around-end,.layout-align-gt-sm-space-between-end,.layout-align-gt-sm-start-end{align-items:flex-end;align-content:flex-end}.layout-align-gt-sm-center-stretch,.layout-align-gt-sm-end-stretch,.layout-align-gt-sm-space-around-stretch,.layout-align-gt-sm-space-between-stretch,.layout-align-gt-sm-start-stretch{align-items:stretch;align-content:stretch}.flex-gt-sm{flex:1;box-sizing:border-box}.flex-gt-sm-grow{flex:1 1 100%;box-sizing:border-box}.flex-gt-sm-initial{flex:0 1 auto;box-sizing:border-box}.flex-gt-sm-auto{flex:1 1 auto;box-sizing:border-box}.flex-gt-sm-none{flex:0 0 auto;box-sizing:border-box}.flex-gt-sm-noshrink{flex:1 0 auto;box-sizing:border-box}.flex-gt-sm-nogrow{flex:0 1 auto;box-sizing:border-box}.flex-gt-sm-0{flex:1 1 0%;max-width:0%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-0{flex:1 1 0%;max-width:0%;max-height:100%;box-sizing:border-box;min-width:0}.layout-column>.flex-gt-sm-0{flex:1 1 0%;max-width:100%;max-height:0%;box-sizing:border-box}.layout-row>.flex-gt-sm-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-sm-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-sm-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-sm-row>.flex-gt-sm-0{flex:1 1 0%;max-width:0%;max-height:100%;box-sizing:border-box;min-width:0}.layout-gt-sm-column>.flex-gt-sm-0{flex:1 1 0%;max-width:100%;max-height:0%;box-sizing:border-box;min-height:0}.flex-gt-sm-5{flex:1 1 5%;max-width:5%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-5{flex:1 1 5%;max-width:5%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-sm-5{flex:1 1 5%;max-width:100%;max-height:5%;box-sizing:border-box}.layout-row>.flex-gt-sm-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-sm-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-sm-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-sm-row>.flex-gt-sm-5{flex:1 1 5%;max-width:5%;max-height:100%;box-sizing:border-box}.layout-gt-sm-column>.flex-gt-sm-5{flex:1 1 5%;max-width:100%;max-height:5%;box-sizing:border-box}.flex-gt-sm-10{flex:1 1 10%;max-width:10%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-10{flex:1 1 10%;max-width:10%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-sm-10{flex:1 1 10%;max-width:100%;max-height:10%;box-sizing:border-box}.layout-row>.flex-gt-sm-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-sm-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-sm-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-sm-row>.flex-gt-sm-10{flex:1 1 10%;max-width:10%;max-height:100%;box-sizing:border-box}.layout-gt-sm-column>.flex-gt-sm-10{flex:1 1 10%;max-width:100%;max-height:10%;box-sizing:border-box}.flex-gt-sm-15{flex:1 1 15%;max-width:15%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-15{flex:1 1 15%;max-width:15%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-sm-15{flex:1 1 15%;max-width:100%;max-height:15%;box-sizing:border-box}.layout-row>.flex-gt-sm-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-sm-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-sm-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-sm-row>.flex-gt-sm-15{flex:1 1 15%;max-width:15%;max-height:100%;box-sizing:border-box}.layout-gt-sm-column>.flex-gt-sm-15{flex:1 1 15%;max-width:100%;max-height:15%;box-sizing:border-box}.flex-gt-sm-20{flex:1 1 20%;max-width:20%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-20{flex:1 1 20%;max-width:20%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-sm-20{flex:1 1 20%;max-width:100%;max-height:20%;box-sizing:border-box}.layout-row>.flex-gt-sm-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-sm-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-sm-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-sm-row>.flex-gt-sm-20{flex:1 1 20%;max-width:20%;max-height:100%;box-sizing:border-box}.layout-gt-sm-column>.flex-gt-sm-20{flex:1 1 20%;max-width:100%;max-height:20%;box-sizing:border-box}.flex-gt-sm-25{flex:1 1 25%;max-width:25%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-25{flex:1 1 25%;max-width:25%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-sm-25{flex:1 1 25%;max-width:100%;max-height:25%;box-sizing:border-box}.layout-row>.flex-gt-sm-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-sm-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-sm-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-sm-row>.flex-gt-sm-25{flex:1 1 25%;max-width:25%;max-height:100%;box-sizing:border-box}.layout-gt-sm-column>.flex-gt-sm-25{flex:1 1 25%;max-width:100%;max-height:25%;box-sizing:border-box}.flex-gt-sm-30{flex:1 1 30%;max-width:30%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-30{flex:1 1 30%;max-width:30%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-sm-30{flex:1 1 30%;max-width:100%;max-height:30%;box-sizing:border-box}.layout-row>.flex-gt-sm-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-sm-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-sm-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-sm-row>.flex-gt-sm-30{flex:1 1 30%;max-width:30%;max-height:100%;box-sizing:border-box}.layout-gt-sm-column>.flex-gt-sm-30{flex:1 1 30%;max-width:100%;max-height:30%;box-sizing:border-box}.flex-gt-sm-35{flex:1 1 35%;max-width:35%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-35{flex:1 1 35%;max-width:35%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-sm-35{flex:1 1 35%;max-width:100%;max-height:35%;box-sizing:border-box}.layout-row>.flex-gt-sm-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-sm-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-sm-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-sm-row>.flex-gt-sm-35{flex:1 1 35%;max-width:35%;max-height:100%;box-sizing:border-box}.layout-gt-sm-column>.flex-gt-sm-35{flex:1 1 35%;max-width:100%;max-height:35%;box-sizing:border-box}.flex-gt-sm-40{flex:1 1 40%;max-width:40%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-40{flex:1 1 40%;max-width:40%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-sm-40{flex:1 1 40%;max-width:100%;max-height:40%;box-sizing:border-box}.layout-row>.flex-gt-sm-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-sm-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-sm-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-sm-row>.flex-gt-sm-40{flex:1 1 40%;max-width:40%;max-height:100%;box-sizing:border-box}.layout-gt-sm-column>.flex-gt-sm-40{flex:1 1 40%;max-width:100%;max-height:40%;box-sizing:border-box}.flex-gt-sm-45{flex:1 1 45%;max-width:45%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-45{flex:1 1 45%;max-width:45%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-sm-45{flex:1 1 45%;max-width:100%;max-height:45%;box-sizing:border-box}.layout-row>.flex-gt-sm-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-sm-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-sm-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-sm-row>.flex-gt-sm-45{flex:1 1 45%;max-width:45%;max-height:100%;box-sizing:border-box}.layout-gt-sm-column>.flex-gt-sm-45{flex:1 1 45%;max-width:100%;max-height:45%;box-sizing:border-box}.flex-gt-sm-50{flex:1 1 50%;max-width:50%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-50{flex:1 1 50%;max-width:50%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-sm-50{flex:1 1 50%;max-width:100%;max-height:50%;box-sizing:border-box}.layout-row>.flex-gt-sm-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-sm-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-sm-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-sm-row>.flex-gt-sm-50{flex:1 1 50%;max-width:50%;max-height:100%;box-sizing:border-box}.layout-gt-sm-column>.flex-gt-sm-50{flex:1 1 50%;max-width:100%;max-height:50%;box-sizing:border-box}.flex-gt-sm-55{flex:1 1 55%;max-width:55%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-55{flex:1 1 55%;max-width:55%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-sm-55{flex:1 1 55%;max-width:100%;max-height:55%;box-sizing:border-box}.layout-row>.flex-gt-sm-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-sm-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-sm-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-sm-row>.flex-gt-sm-55{flex:1 1 55%;max-width:55%;max-height:100%;box-sizing:border-box}.layout-gt-sm-column>.flex-gt-sm-55{flex:1 1 55%;max-width:100%;max-height:55%;box-sizing:border-box}.flex-gt-sm-60{flex:1 1 60%;max-width:60%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-60{flex:1 1 60%;max-width:60%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-sm-60{flex:1 1 60%;max-width:100%;max-height:60%;box-sizing:border-box}.layout-row>.flex-gt-sm-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-sm-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-sm-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-sm-row>.flex-gt-sm-60{flex:1 1 60%;max-width:60%;max-height:100%;box-sizing:border-box}.layout-gt-sm-column>.flex-gt-sm-60{flex:1 1 60%;max-width:100%;max-height:60%;box-sizing:border-box}.flex-gt-sm-65{flex:1 1 65%;max-width:65%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-65{flex:1 1 65%;max-width:65%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-sm-65{flex:1 1 65%;max-width:100%;max-height:65%;box-sizing:border-box}.layout-row>.flex-gt-sm-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-sm-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-sm-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-sm-row>.flex-gt-sm-65{flex:1 1 65%;max-width:65%;max-height:100%;box-sizing:border-box}.layout-gt-sm-column>.flex-gt-sm-65{flex:1 1 65%;max-width:100%;max-height:65%;box-sizing:border-box}.flex-gt-sm-70{flex:1 1 70%;max-width:70%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-70{flex:1 1 70%;max-width:70%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-sm-70{flex:1 1 70%;max-width:100%;max-height:70%;box-sizing:border-box}.layout-row>.flex-gt-sm-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-sm-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-sm-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-sm-row>.flex-gt-sm-70{flex:1 1 70%;max-width:70%;max-height:100%;box-sizing:border-box}.layout-gt-sm-column>.flex-gt-sm-70{flex:1 1 70%;max-width:100%;max-height:70%;box-sizing:border-box}.flex-gt-sm-75{flex:1 1 75%;max-width:75%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-75{flex:1 1 75%;max-width:75%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-sm-75{flex:1 1 75%;max-width:100%;max-height:75%;box-sizing:border-box}.layout-row>.flex-gt-sm-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-sm-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-sm-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-sm-row>.flex-gt-sm-75{flex:1 1 75%;max-width:75%;max-height:100%;box-sizing:border-box}.layout-gt-sm-column>.flex-gt-sm-75{flex:1 1 75%;max-width:100%;max-height:75%;box-sizing:border-box}.flex-gt-sm-80{flex:1 1 80%;max-width:80%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-80{flex:1 1 80%;max-width:80%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-sm-80{flex:1 1 80%;max-width:100%;max-height:80%;box-sizing:border-box}.layout-row>.flex-gt-sm-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-sm-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-sm-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-sm-row>.flex-gt-sm-80{flex:1 1 80%;max-width:80%;max-height:100%;box-sizing:border-box}.layout-gt-sm-column>.flex-gt-sm-80{flex:1 1 80%;max-width:100%;max-height:80%;box-sizing:border-box}.flex-gt-sm-85{flex:1 1 85%;max-width:85%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-85{flex:1 1 85%;max-width:85%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-sm-85{flex:1 1 85%;max-width:100%;max-height:85%;box-sizing:border-box}.layout-row>.flex-gt-sm-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-sm-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-sm-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-sm-row>.flex-gt-sm-85{flex:1 1 85%;max-width:85%;max-height:100%;box-sizing:border-box}.layout-gt-sm-column>.flex-gt-sm-85{flex:1 1 85%;max-width:100%;max-height:85%;box-sizing:border-box}.flex-gt-sm-90{flex:1 1 90%;max-width:90%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-90{flex:1 1 90%;max-width:90%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-sm-90{flex:1 1 90%;max-width:100%;max-height:90%;box-sizing:border-box}.layout-row>.flex-gt-sm-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-sm-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-sm-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-sm-row>.flex-gt-sm-90{flex:1 1 90%;max-width:90%;max-height:100%;box-sizing:border-box}.layout-gt-sm-column>.flex-gt-sm-90{flex:1 1 90%;max-width:100%;max-height:90%;box-sizing:border-box}.flex-gt-sm-95{flex:1 1 95%;max-width:95%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-95{flex:1 1 95%;max-width:95%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-sm-95{flex:1 1 95%;max-width:100%;max-height:95%;box-sizing:border-box}.layout-row>.flex-gt-sm-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-sm-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-sm-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-sm-row>.flex-gt-sm-95{flex:1 1 95%;max-width:95%;max-height:100%;box-sizing:border-box}.layout-gt-sm-column>.flex-gt-sm-95{flex:1 1 95%;max-width:100%;max-height:95%;box-sizing:border-box}.flex-gt-sm-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-sm-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-sm-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-sm-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-sm-row>.flex-gt-sm-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-gt-sm-column>.flex-gt-sm-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-gt-sm-row>.flex-gt-sm-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-gt-sm-row>.flex-gt-sm-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-gt-sm-row>.flex{min-width:0}.layout-gt-sm-column>.flex-gt-sm-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-gt-sm-column>.flex-gt-sm-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-sm-column>.flex{min-height:0}.layout-gt-sm,.layout-gt-sm-column,.layout-gt-sm-row{box-sizing:border-box;display:-webkit-box;display:-webkit-flex;display:-moz-box;display:-ms-flexbox;display:flex}.layout-gt-sm-column{flex-direction:column}.layout-gt-sm-row{flex-direction:row}}@media (min-width:960px) and (max-width:1279px){.hide-gt-sm:not(.show-gt-xs):not(.show-gt-sm):not(.show-md):not(.show),.hide-gt-xs:not(.show-gt-xs):not(.show-gt-sm):not(.show-md):not(.show),.hide:not(.show-gt-xs):not(.show-gt-sm):not(.show-md):not(.show){display:none}.hide-md:not(.show-md):not(.show-gt-sm):not(.show-gt-xs):not(.show){display:none}.flex-order-md--20{order:-20}.flex-order-md--19{order:-19}.flex-order-md--18{order:-18}.flex-order-md--17{order:-17}.flex-order-md--16{order:-16}.flex-order-md--15{order:-15}.flex-order-md--14{order:-14}.flex-order-md--13{order:-13}.flex-order-md--12{order:-12}.flex-order-md--11{order:-11}.flex-order-md--10{order:-10}.flex-order-md--9{order:-9}.flex-order-md--8{order:-8}.flex-order-md--7{order:-7}.flex-order-md--6{order:-6}.flex-order-md--5{order:-5}.flex-order-md--4{order:-4}.flex-order-md--3{order:-3}.flex-order-md--2{order:-2}.flex-order-md--1{order:-1}.flex-order-md-0{order:0}.flex-order-md-1{order:1}.flex-order-md-2{order:2}.flex-order-md-3{order:3}.flex-order-md-4{order:4}.flex-order-md-5{order:5}.flex-order-md-6{order:6}.flex-order-md-7{order:7}.flex-order-md-8{order:8}.flex-order-md-9{order:9}.flex-order-md-10{order:10}.flex-order-md-11{order:11}.flex-order-md-12{order:12}.flex-order-md-13{order:13}.flex-order-md-14{order:14}.flex-order-md-15{order:15}.flex-order-md-16{order:16}.flex-order-md-17{order:17}.flex-order-md-18{order:18}.flex-order-md-19{order:19}.flex-order-md-20{order:20}.flex-offset-md-0,.offset-md-0{margin-left:0}[dir=rtl] .flex-offset-md-0,[dir=rtl] .offset-md-0{margin-left:auto;margin-right:0}.flex-offset-md-5,.offset-md-5{margin-left:5%}[dir=rtl] .flex-offset-md-5,[dir=rtl] .offset-md-5{margin-left:auto;margin-right:5%}.flex-offset-md-10,.offset-md-10{margin-left:10%}[dir=rtl] .flex-offset-md-10,[dir=rtl] .offset-md-10{margin-left:auto;margin-right:10%}.flex-offset-md-15,.offset-md-15{margin-left:15%}[dir=rtl] .flex-offset-md-15,[dir=rtl] .offset-md-15{margin-left:auto;margin-right:15%}.flex-offset-md-20,.offset-md-20{margin-left:20%}[dir=rtl] .flex-offset-md-20,[dir=rtl] .offset-md-20{margin-left:auto;margin-right:20%}.flex-offset-md-25,.offset-md-25{margin-left:25%}[dir=rtl] .flex-offset-md-25,[dir=rtl] .offset-md-25{margin-left:auto;margin-right:25%}.flex-offset-md-30,.offset-md-30{margin-left:30%}[dir=rtl] .flex-offset-md-30,[dir=rtl] .offset-md-30{margin-left:auto;margin-right:30%}.flex-offset-md-35,.offset-md-35{margin-left:35%}[dir=rtl] .flex-offset-md-35,[dir=rtl] .offset-md-35{margin-left:auto;margin-right:35%}.flex-offset-md-40,.offset-md-40{margin-left:40%}[dir=rtl] .flex-offset-md-40,[dir=rtl] .offset-md-40{margin-left:auto;margin-right:40%}.flex-offset-md-45,.offset-md-45{margin-left:45%}[dir=rtl] .flex-offset-md-45,[dir=rtl] .offset-md-45{margin-left:auto;margin-right:45%}.flex-offset-md-50,.offset-md-50{margin-left:50%}[dir=rtl] .flex-offset-md-50,[dir=rtl] .offset-md-50{margin-left:auto;margin-right:50%}.flex-offset-md-55,.offset-md-55{margin-left:55%}[dir=rtl] .flex-offset-md-55,[dir=rtl] .offset-md-55{margin-left:auto;margin-right:55%}.flex-offset-md-60,.offset-md-60{margin-left:60%}[dir=rtl] .flex-offset-md-60,[dir=rtl] .offset-md-60{margin-left:auto;margin-right:60%}.flex-offset-md-65,.offset-md-65{margin-left:65%}[dir=rtl] .flex-offset-md-65,[dir=rtl] .offset-md-65{margin-left:auto;margin-right:65%}.flex-offset-md-70,.offset-md-70{margin-left:70%}[dir=rtl] .flex-offset-md-70,[dir=rtl] .offset-md-70{margin-left:auto;margin-right:70%}.flex-offset-md-75,.offset-md-75{margin-left:75%}[dir=rtl] .flex-offset-md-75,[dir=rtl] .offset-md-75{margin-left:auto;margin-right:75%}.flex-offset-md-80,.offset-md-80{margin-left:80%}[dir=rtl] .flex-offset-md-80,[dir=rtl] .offset-md-80{margin-left:auto;margin-right:80%}.flex-offset-md-85,.offset-md-85{margin-left:85%}[dir=rtl] .flex-offset-md-85,[dir=rtl] .offset-md-85{margin-left:auto;margin-right:85%}.flex-offset-md-90,.offset-md-90{margin-left:90%}[dir=rtl] .flex-offset-md-90,[dir=rtl] .offset-md-90{margin-left:auto;margin-right:90%}.flex-offset-md-95,.offset-md-95{margin-left:95%}[dir=rtl] .flex-offset-md-95,[dir=rtl] .offset-md-95{margin-left:auto;margin-right:95%}.flex-offset-md-33,.offset-md-33{margin-left:calc(100% / 3)}.flex-offset-md-66,.offset-md-66{margin-left:calc(200% / 3)}[dir=rtl] .flex-offset-md-66,[dir=rtl] .offset-md-66{margin-left:auto;margin-right:calc(200% / 3)}.layout-align-md,.layout-align-md-start-stretch{justify-content:flex-start;align-content:stretch;align-items:stretch}.layout-align-md-start,.layout-align-md-start-center,.layout-align-md-start-end,.layout-align-md-start-start,.layout-align-md-start-stretch{justify-content:flex-start}.layout-align-md-center,.layout-align-md-center-center,.layout-align-md-center-end,.layout-align-md-center-start,.layout-align-md-center-stretch{justify-content:center}.layout-align-md-end,.layout-align-md-end-center,.layout-align-md-end-end,.layout-align-md-end-start,.layout-align-md-end-stretch{justify-content:flex-end}.layout-align-md-space-around,.layout-align-md-space-around-center,.layout-align-md-space-around-end,.layout-align-md-space-around-start,.layout-align-md-space-around-stretch{justify-content:space-around}.layout-align-md-space-between,.layout-align-md-space-between-center,.layout-align-md-space-between-end,.layout-align-md-space-between-start,.layout-align-md-space-between-stretch{justify-content:space-between}.layout-align-md-center-start,.layout-align-md-end-start,.layout-align-md-space-around-start,.layout-align-md-space-between-start,.layout-align-md-start-start{align-items:flex-start;align-content:flex-start}.layout-align-md-center-center,.layout-align-md-end-center,.layout-align-md-space-around-center,.layout-align-md-space-between-center,.layout-align-md-start-center{align-items:center;align-content:center;max-width:100%}.layout-align-md-center-center>*,.layout-align-md-end-center>*,.layout-align-md-space-around-center>*,.layout-align-md-space-between-center>*,.layout-align-md-start-center>*{max-width:100%;box-sizing:border-box}.layout-align-md-center-end,.layout-align-md-end-end,.layout-align-md-space-around-end,.layout-align-md-space-between-end,.layout-align-md-start-end{align-items:flex-end;align-content:flex-end}.layout-align-md-center-stretch,.layout-align-md-end-stretch,.layout-align-md-space-around-stretch,.layout-align-md-space-between-stretch,.layout-align-md-start-stretch{align-items:stretch;align-content:stretch}.flex-md{flex:1;box-sizing:border-box}.flex-md-grow{flex:1 1 100%;box-sizing:border-box}.flex-md-initial{flex:0 1 auto;box-sizing:border-box}.flex-md-auto{flex:1 1 auto;box-sizing:border-box}.flex-md-none{flex:0 0 auto;box-sizing:border-box}.flex-md-noshrink{flex:1 0 auto;box-sizing:border-box}.flex-md-nogrow{flex:0 1 auto;box-sizing:border-box}.flex-md-0{flex:1 1 0%;max-width:0%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-0{flex:1 1 0%;max-width:0%;max-height:100%;box-sizing:border-box;min-width:0}.layout-column>.flex-md-0{flex:1 1 0%;max-width:100%;max-height:0%;box-sizing:border-box}.layout-row>.flex-md-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-md-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-md-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-md-row>.flex-md-0{flex:1 1 0%;max-width:0%;max-height:100%;box-sizing:border-box;min-width:0}.layout-md-column>.flex-md-0{flex:1 1 0%;max-width:100%;max-height:0%;box-sizing:border-box;min-height:0}.flex-md-5{flex:1 1 5%;max-width:5%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-5{flex:1 1 5%;max-width:5%;max-height:100%;box-sizing:border-box}.layout-column>.flex-md-5{flex:1 1 5%;max-width:100%;max-height:5%;box-sizing:border-box}.layout-row>.flex-md-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-md-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-md-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-md-row>.flex-md-5{flex:1 1 5%;max-width:5%;max-height:100%;box-sizing:border-box}.layout-md-column>.flex-md-5{flex:1 1 5%;max-width:100%;max-height:5%;box-sizing:border-box}.flex-md-10{flex:1 1 10%;max-width:10%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-10{flex:1 1 10%;max-width:10%;max-height:100%;box-sizing:border-box}.layout-column>.flex-md-10{flex:1 1 10%;max-width:100%;max-height:10%;box-sizing:border-box}.layout-row>.flex-md-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-md-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-md-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-md-row>.flex-md-10{flex:1 1 10%;max-width:10%;max-height:100%;box-sizing:border-box}.layout-md-column>.flex-md-10{flex:1 1 10%;max-width:100%;max-height:10%;box-sizing:border-box}.flex-md-15{flex:1 1 15%;max-width:15%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-15{flex:1 1 15%;max-width:15%;max-height:100%;box-sizing:border-box}.layout-column>.flex-md-15{flex:1 1 15%;max-width:100%;max-height:15%;box-sizing:border-box}.layout-row>.flex-md-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-md-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-md-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-md-row>.flex-md-15{flex:1 1 15%;max-width:15%;max-height:100%;box-sizing:border-box}.layout-md-column>.flex-md-15{flex:1 1 15%;max-width:100%;max-height:15%;box-sizing:border-box}.flex-md-20{flex:1 1 20%;max-width:20%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-20{flex:1 1 20%;max-width:20%;max-height:100%;box-sizing:border-box}.layout-column>.flex-md-20{flex:1 1 20%;max-width:100%;max-height:20%;box-sizing:border-box}.layout-row>.flex-md-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-md-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-md-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-md-row>.flex-md-20{flex:1 1 20%;max-width:20%;max-height:100%;box-sizing:border-box}.layout-md-column>.flex-md-20{flex:1 1 20%;max-width:100%;max-height:20%;box-sizing:border-box}.flex-md-25{flex:1 1 25%;max-width:25%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-25{flex:1 1 25%;max-width:25%;max-height:100%;box-sizing:border-box}.layout-column>.flex-md-25{flex:1 1 25%;max-width:100%;max-height:25%;box-sizing:border-box}.layout-row>.flex-md-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-md-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-md-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-md-row>.flex-md-25{flex:1 1 25%;max-width:25%;max-height:100%;box-sizing:border-box}.layout-md-column>.flex-md-25{flex:1 1 25%;max-width:100%;max-height:25%;box-sizing:border-box}.flex-md-30{flex:1 1 30%;max-width:30%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-30{flex:1 1 30%;max-width:30%;max-height:100%;box-sizing:border-box}.layout-column>.flex-md-30{flex:1 1 30%;max-width:100%;max-height:30%;box-sizing:border-box}.layout-row>.flex-md-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-md-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-md-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-md-row>.flex-md-30{flex:1 1 30%;max-width:30%;max-height:100%;box-sizing:border-box}.layout-md-column>.flex-md-30{flex:1 1 30%;max-width:100%;max-height:30%;box-sizing:border-box}.flex-md-35{flex:1 1 35%;max-width:35%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-35{flex:1 1 35%;max-width:35%;max-height:100%;box-sizing:border-box}.layout-column>.flex-md-35{flex:1 1 35%;max-width:100%;max-height:35%;box-sizing:border-box}.layout-row>.flex-md-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-md-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-md-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-md-row>.flex-md-35{flex:1 1 35%;max-width:35%;max-height:100%;box-sizing:border-box}.layout-md-column>.flex-md-35{flex:1 1 35%;max-width:100%;max-height:35%;box-sizing:border-box}.flex-md-40{flex:1 1 40%;max-width:40%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-40{flex:1 1 40%;max-width:40%;max-height:100%;box-sizing:border-box}.layout-column>.flex-md-40{flex:1 1 40%;max-width:100%;max-height:40%;box-sizing:border-box}.layout-row>.flex-md-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-md-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-md-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-md-row>.flex-md-40{flex:1 1 40%;max-width:40%;max-height:100%;box-sizing:border-box}.layout-md-column>.flex-md-40{flex:1 1 40%;max-width:100%;max-height:40%;box-sizing:border-box}.flex-md-45{flex:1 1 45%;max-width:45%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-45{flex:1 1 45%;max-width:45%;max-height:100%;box-sizing:border-box}.layout-column>.flex-md-45{flex:1 1 45%;max-width:100%;max-height:45%;box-sizing:border-box}.layout-row>.flex-md-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-md-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-md-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-md-row>.flex-md-45{flex:1 1 45%;max-width:45%;max-height:100%;box-sizing:border-box}.layout-md-column>.flex-md-45{flex:1 1 45%;max-width:100%;max-height:45%;box-sizing:border-box}.flex-md-50{flex:1 1 50%;max-width:50%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-50{flex:1 1 50%;max-width:50%;max-height:100%;box-sizing:border-box}.layout-column>.flex-md-50{flex:1 1 50%;max-width:100%;max-height:50%;box-sizing:border-box}.layout-row>.flex-md-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-md-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-md-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-md-row>.flex-md-50{flex:1 1 50%;max-width:50%;max-height:100%;box-sizing:border-box}.layout-md-column>.flex-md-50{flex:1 1 50%;max-width:100%;max-height:50%;box-sizing:border-box}.flex-md-55{flex:1 1 55%;max-width:55%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-55{flex:1 1 55%;max-width:55%;max-height:100%;box-sizing:border-box}.layout-column>.flex-md-55{flex:1 1 55%;max-width:100%;max-height:55%;box-sizing:border-box}.layout-row>.flex-md-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-md-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-md-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-md-row>.flex-md-55{flex:1 1 55%;max-width:55%;max-height:100%;box-sizing:border-box}.layout-md-column>.flex-md-55{flex:1 1 55%;max-width:100%;max-height:55%;box-sizing:border-box}.flex-md-60{flex:1 1 60%;max-width:60%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-60{flex:1 1 60%;max-width:60%;max-height:100%;box-sizing:border-box}.layout-column>.flex-md-60{flex:1 1 60%;max-width:100%;max-height:60%;box-sizing:border-box}.layout-row>.flex-md-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-md-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-md-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-md-row>.flex-md-60{flex:1 1 60%;max-width:60%;max-height:100%;box-sizing:border-box}.layout-md-column>.flex-md-60{flex:1 1 60%;max-width:100%;max-height:60%;box-sizing:border-box}.flex-md-65{flex:1 1 65%;max-width:65%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-65{flex:1 1 65%;max-width:65%;max-height:100%;box-sizing:border-box}.layout-column>.flex-md-65{flex:1 1 65%;max-width:100%;max-height:65%;box-sizing:border-box}.layout-row>.flex-md-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-md-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-md-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-md-row>.flex-md-65{flex:1 1 65%;max-width:65%;max-height:100%;box-sizing:border-box}.layout-md-column>.flex-md-65{flex:1 1 65%;max-width:100%;max-height:65%;box-sizing:border-box}.flex-md-70{flex:1 1 70%;max-width:70%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-70{flex:1 1 70%;max-width:70%;max-height:100%;box-sizing:border-box}.layout-column>.flex-md-70{flex:1 1 70%;max-width:100%;max-height:70%;box-sizing:border-box}.layout-row>.flex-md-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-md-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-md-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-md-row>.flex-md-70{flex:1 1 70%;max-width:70%;max-height:100%;box-sizing:border-box}.layout-md-column>.flex-md-70{flex:1 1 70%;max-width:100%;max-height:70%;box-sizing:border-box}.flex-md-75{flex:1 1 75%;max-width:75%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-75{flex:1 1 75%;max-width:75%;max-height:100%;box-sizing:border-box}.layout-column>.flex-md-75{flex:1 1 75%;max-width:100%;max-height:75%;box-sizing:border-box}.layout-row>.flex-md-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-md-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-md-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-md-row>.flex-md-75{flex:1 1 75%;max-width:75%;max-height:100%;box-sizing:border-box}.layout-md-column>.flex-md-75{flex:1 1 75%;max-width:100%;max-height:75%;box-sizing:border-box}.flex-md-80{flex:1 1 80%;max-width:80%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-80{flex:1 1 80%;max-width:80%;max-height:100%;box-sizing:border-box}.layout-column>.flex-md-80{flex:1 1 80%;max-width:100%;max-height:80%;box-sizing:border-box}.layout-row>.flex-md-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-md-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-md-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-md-row>.flex-md-80{flex:1 1 80%;max-width:80%;max-height:100%;box-sizing:border-box}.layout-md-column>.flex-md-80{flex:1 1 80%;max-width:100%;max-height:80%;box-sizing:border-box}.flex-md-85{flex:1 1 85%;max-width:85%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-85{flex:1 1 85%;max-width:85%;max-height:100%;box-sizing:border-box}.layout-column>.flex-md-85{flex:1 1 85%;max-width:100%;max-height:85%;box-sizing:border-box}.layout-row>.flex-md-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-md-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-md-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-md-row>.flex-md-85{flex:1 1 85%;max-width:85%;max-height:100%;box-sizing:border-box}.layout-md-column>.flex-md-85{flex:1 1 85%;max-width:100%;max-height:85%;box-sizing:border-box}.flex-md-90{flex:1 1 90%;max-width:90%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-90{flex:1 1 90%;max-width:90%;max-height:100%;box-sizing:border-box}.layout-column>.flex-md-90{flex:1 1 90%;max-width:100%;max-height:90%;box-sizing:border-box}.layout-row>.flex-md-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-md-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-md-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-md-row>.flex-md-90{flex:1 1 90%;max-width:90%;max-height:100%;box-sizing:border-box}.layout-md-column>.flex-md-90{flex:1 1 90%;max-width:100%;max-height:90%;box-sizing:border-box}.flex-md-95{flex:1 1 95%;max-width:95%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-95{flex:1 1 95%;max-width:95%;max-height:100%;box-sizing:border-box}.layout-column>.flex-md-95{flex:1 1 95%;max-width:100%;max-height:95%;box-sizing:border-box}.layout-row>.flex-md-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-md-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-md-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-md-row>.flex-md-95{flex:1 1 95%;max-width:95%;max-height:100%;box-sizing:border-box}.layout-md-column>.flex-md-95{flex:1 1 95%;max-width:100%;max-height:95%;box-sizing:border-box}.flex-md-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-column>.flex-md-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-md-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-md-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-md-row>.flex-md-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-md-column>.flex-md-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-md-row>.flex-md-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-md-row>.flex-md-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-md-row>.flex{min-width:0}.layout-md-column>.flex-md-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-md-column>.flex-md-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-md-column>.flex{min-height:0}.layout-md,.layout-md-column,.layout-md-row{box-sizing:border-box;display:-webkit-box;display:-webkit-flex;display:-moz-box;display:-ms-flexbox;display:flex}.layout-md-column{flex-direction:column}.layout-md-row{flex-direction:row}}@media (min-width:1280px){.flex-order-gt-md--20{order:-20}.flex-order-gt-md--19{order:-19}.flex-order-gt-md--18{order:-18}.flex-order-gt-md--17{order:-17}.flex-order-gt-md--16{order:-16}.flex-order-gt-md--15{order:-15}.flex-order-gt-md--14{order:-14}.flex-order-gt-md--13{order:-13}.flex-order-gt-md--12{order:-12}.flex-order-gt-md--11{order:-11}.flex-order-gt-md--10{order:-10}.flex-order-gt-md--9{order:-9}.flex-order-gt-md--8{order:-8}.flex-order-gt-md--7{order:-7}.flex-order-gt-md--6{order:-6}.flex-order-gt-md--5{order:-5}.flex-order-gt-md--4{order:-4}.flex-order-gt-md--3{order:-3}.flex-order-gt-md--2{order:-2}.flex-order-gt-md--1{order:-1}.flex-order-gt-md-0{order:0}.flex-order-gt-md-1{order:1}.flex-order-gt-md-2{order:2}.flex-order-gt-md-3{order:3}.flex-order-gt-md-4{order:4}.flex-order-gt-md-5{order:5}.flex-order-gt-md-6{order:6}.flex-order-gt-md-7{order:7}.flex-order-gt-md-8{order:8}.flex-order-gt-md-9{order:9}.flex-order-gt-md-10{order:10}.flex-order-gt-md-11{order:11}.flex-order-gt-md-12{order:12}.flex-order-gt-md-13{order:13}.flex-order-gt-md-14{order:14}.flex-order-gt-md-15{order:15}.flex-order-gt-md-16{order:16}.flex-order-gt-md-17{order:17}.flex-order-gt-md-18{order:18}.flex-order-gt-md-19{order:19}.flex-order-gt-md-20{order:20}.flex-offset-gt-md-0,.offset-gt-md-0{margin-left:0}[dir=rtl] .flex-offset-gt-md-0,[dir=rtl] .offset-gt-md-0{margin-left:auto;margin-right:0}.flex-offset-gt-md-5,.offset-gt-md-5{margin-left:5%}[dir=rtl] .flex-offset-gt-md-5,[dir=rtl] .offset-gt-md-5{margin-left:auto;margin-right:5%}.flex-offset-gt-md-10,.offset-gt-md-10{margin-left:10%}[dir=rtl] .flex-offset-gt-md-10,[dir=rtl] .offset-gt-md-10{margin-left:auto;margin-right:10%}.flex-offset-gt-md-15,.offset-gt-md-15{margin-left:15%}[dir=rtl] .flex-offset-gt-md-15,[dir=rtl] .offset-gt-md-15{margin-left:auto;margin-right:15%}.flex-offset-gt-md-20,.offset-gt-md-20{margin-left:20%}[dir=rtl] .flex-offset-gt-md-20,[dir=rtl] .offset-gt-md-20{margin-left:auto;margin-right:20%}.flex-offset-gt-md-25,.offset-gt-md-25{margin-left:25%}[dir=rtl] .flex-offset-gt-md-25,[dir=rtl] .offset-gt-md-25{margin-left:auto;margin-right:25%}.flex-offset-gt-md-30,.offset-gt-md-30{margin-left:30%}[dir=rtl] .flex-offset-gt-md-30,[dir=rtl] .offset-gt-md-30{margin-left:auto;margin-right:30%}.flex-offset-gt-md-35,.offset-gt-md-35{margin-left:35%}[dir=rtl] .flex-offset-gt-md-35,[dir=rtl] .offset-gt-md-35{margin-left:auto;margin-right:35%}.flex-offset-gt-md-40,.offset-gt-md-40{margin-left:40%}[dir=rtl] .flex-offset-gt-md-40,[dir=rtl] .offset-gt-md-40{margin-left:auto;margin-right:40%}.flex-offset-gt-md-45,.offset-gt-md-45{margin-left:45%}[dir=rtl] .flex-offset-gt-md-45,[dir=rtl] .offset-gt-md-45{margin-left:auto;margin-right:45%}.flex-offset-gt-md-50,.offset-gt-md-50{margin-left:50%}[dir=rtl] .flex-offset-gt-md-50,[dir=rtl] .offset-gt-md-50{margin-left:auto;margin-right:50%}.flex-offset-gt-md-55,.offset-gt-md-55{margin-left:55%}[dir=rtl] .flex-offset-gt-md-55,[dir=rtl] .offset-gt-md-55{margin-left:auto;margin-right:55%}.flex-offset-gt-md-60,.offset-gt-md-60{margin-left:60%}[dir=rtl] .flex-offset-gt-md-60,[dir=rtl] .offset-gt-md-60{margin-left:auto;margin-right:60%}.flex-offset-gt-md-65,.offset-gt-md-65{margin-left:65%}[dir=rtl] .flex-offset-gt-md-65,[dir=rtl] .offset-gt-md-65{margin-left:auto;margin-right:65%}.flex-offset-gt-md-70,.offset-gt-md-70{margin-left:70%}[dir=rtl] .flex-offset-gt-md-70,[dir=rtl] .offset-gt-md-70{margin-left:auto;margin-right:70%}.flex-offset-gt-md-75,.offset-gt-md-75{margin-left:75%}[dir=rtl] .flex-offset-gt-md-75,[dir=rtl] .offset-gt-md-75{margin-left:auto;margin-right:75%}.flex-offset-gt-md-80,.offset-gt-md-80{margin-left:80%}[dir=rtl] .flex-offset-gt-md-80,[dir=rtl] .offset-gt-md-80{margin-left:auto;margin-right:80%}.flex-offset-gt-md-85,.offset-gt-md-85{margin-left:85%}[dir=rtl] .flex-offset-gt-md-85,[dir=rtl] .offset-gt-md-85{margin-left:auto;margin-right:85%}.flex-offset-gt-md-90,.offset-gt-md-90{margin-left:90%}[dir=rtl] .flex-offset-gt-md-90,[dir=rtl] .offset-gt-md-90{margin-left:auto;margin-right:90%}.flex-offset-gt-md-95,.offset-gt-md-95{margin-left:95%}[dir=rtl] .flex-offset-gt-md-95,[dir=rtl] .offset-gt-md-95{margin-left:auto;margin-right:95%}.flex-offset-gt-md-33,.offset-gt-md-33{margin-left:calc(100% / 3)}.flex-offset-gt-md-66,.offset-gt-md-66{margin-left:calc(200% / 3)}[dir=rtl] .flex-offset-gt-md-66,[dir=rtl] .offset-gt-md-66{margin-left:auto;margin-right:calc(200% / 3)}.layout-align-gt-md,.layout-align-gt-md-start-stretch{justify-content:flex-start;align-content:stretch;align-items:stretch}.layout-align-gt-md-start,.layout-align-gt-md-start-center,.layout-align-gt-md-start-end,.layout-align-gt-md-start-start,.layout-align-gt-md-start-stretch{justify-content:flex-start}.layout-align-gt-md-center,.layout-align-gt-md-center-center,.layout-align-gt-md-center-end,.layout-align-gt-md-center-start,.layout-align-gt-md-center-stretch{justify-content:center}.layout-align-gt-md-end,.layout-align-gt-md-end-center,.layout-align-gt-md-end-end,.layout-align-gt-md-end-start,.layout-align-gt-md-end-stretch{justify-content:flex-end}.layout-align-gt-md-space-around,.layout-align-gt-md-space-around-center,.layout-align-gt-md-space-around-end,.layout-align-gt-md-space-around-start,.layout-align-gt-md-space-around-stretch{justify-content:space-around}.layout-align-gt-md-space-between,.layout-align-gt-md-space-between-center,.layout-align-gt-md-space-between-end,.layout-align-gt-md-space-between-start,.layout-align-gt-md-space-between-stretch{justify-content:space-between}.layout-align-gt-md-center-start,.layout-align-gt-md-end-start,.layout-align-gt-md-space-around-start,.layout-align-gt-md-space-between-start,.layout-align-gt-md-start-start{align-items:flex-start;align-content:flex-start}.layout-align-gt-md-center-center,.layout-align-gt-md-end-center,.layout-align-gt-md-space-around-center,.layout-align-gt-md-space-between-center,.layout-align-gt-md-start-center{align-items:center;align-content:center;max-width:100%}.layout-align-gt-md-center-center>*,.layout-align-gt-md-end-center>*,.layout-align-gt-md-space-around-center>*,.layout-align-gt-md-space-between-center>*,.layout-align-gt-md-start-center>*{max-width:100%;box-sizing:border-box}.layout-align-gt-md-center-end,.layout-align-gt-md-end-end,.layout-align-gt-md-space-around-end,.layout-align-gt-md-space-between-end,.layout-align-gt-md-start-end{align-items:flex-end;align-content:flex-end}.layout-align-gt-md-center-stretch,.layout-align-gt-md-end-stretch,.layout-align-gt-md-space-around-stretch,.layout-align-gt-md-space-between-stretch,.layout-align-gt-md-start-stretch{align-items:stretch;align-content:stretch}.flex-gt-md{flex:1;box-sizing:border-box}.flex-gt-md-grow{flex:1 1 100%;box-sizing:border-box}.flex-gt-md-initial{flex:0 1 auto;box-sizing:border-box}.flex-gt-md-auto{flex:1 1 auto;box-sizing:border-box}.flex-gt-md-none{flex:0 0 auto;box-sizing:border-box}.flex-gt-md-noshrink{flex:1 0 auto;box-sizing:border-box}.flex-gt-md-nogrow{flex:0 1 auto;box-sizing:border-box}.flex-gt-md-0{flex:1 1 0%;max-width:0%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-0{flex:1 1 0%;max-width:0%;max-height:100%;box-sizing:border-box;min-width:0}.layout-column>.flex-gt-md-0{flex:1 1 0%;max-width:100%;max-height:0%;box-sizing:border-box}.layout-row>.flex-gt-md-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-md-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-md-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-md-row>.flex-gt-md-0{flex:1 1 0%;max-width:0%;max-height:100%;box-sizing:border-box;min-width:0}.layout-gt-md-column>.flex-gt-md-0{flex:1 1 0%;max-width:100%;max-height:0%;box-sizing:border-box;min-height:0}.flex-gt-md-5{flex:1 1 5%;max-width:5%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-5{flex:1 1 5%;max-width:5%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-md-5{flex:1 1 5%;max-width:100%;max-height:5%;box-sizing:border-box}.layout-row>.flex-gt-md-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-md-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-md-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-md-row>.flex-gt-md-5{flex:1 1 5%;max-width:5%;max-height:100%;box-sizing:border-box}.layout-gt-md-column>.flex-gt-md-5{flex:1 1 5%;max-width:100%;max-height:5%;box-sizing:border-box}.flex-gt-md-10{flex:1 1 10%;max-width:10%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-10{flex:1 1 10%;max-width:10%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-md-10{flex:1 1 10%;max-width:100%;max-height:10%;box-sizing:border-box}.layout-row>.flex-gt-md-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-md-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-md-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-md-row>.flex-gt-md-10{flex:1 1 10%;max-width:10%;max-height:100%;box-sizing:border-box}.layout-gt-md-column>.flex-gt-md-10{flex:1 1 10%;max-width:100%;max-height:10%;box-sizing:border-box}.flex-gt-md-15{flex:1 1 15%;max-width:15%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-15{flex:1 1 15%;max-width:15%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-md-15{flex:1 1 15%;max-width:100%;max-height:15%;box-sizing:border-box}.layout-row>.flex-gt-md-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-md-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-md-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-md-row>.flex-gt-md-15{flex:1 1 15%;max-width:15%;max-height:100%;box-sizing:border-box}.layout-gt-md-column>.flex-gt-md-15{flex:1 1 15%;max-width:100%;max-height:15%;box-sizing:border-box}.flex-gt-md-20{flex:1 1 20%;max-width:20%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-20{flex:1 1 20%;max-width:20%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-md-20{flex:1 1 20%;max-width:100%;max-height:20%;box-sizing:border-box}.layout-row>.flex-gt-md-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-md-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-md-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-md-row>.flex-gt-md-20{flex:1 1 20%;max-width:20%;max-height:100%;box-sizing:border-box}.layout-gt-md-column>.flex-gt-md-20{flex:1 1 20%;max-width:100%;max-height:20%;box-sizing:border-box}.flex-gt-md-25{flex:1 1 25%;max-width:25%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-25{flex:1 1 25%;max-width:25%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-md-25{flex:1 1 25%;max-width:100%;max-height:25%;box-sizing:border-box}.layout-row>.flex-gt-md-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-md-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-md-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-md-row>.flex-gt-md-25{flex:1 1 25%;max-width:25%;max-height:100%;box-sizing:border-box}.layout-gt-md-column>.flex-gt-md-25{flex:1 1 25%;max-width:100%;max-height:25%;box-sizing:border-box}.flex-gt-md-30{flex:1 1 30%;max-width:30%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-30{flex:1 1 30%;max-width:30%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-md-30{flex:1 1 30%;max-width:100%;max-height:30%;box-sizing:border-box}.layout-row>.flex-gt-md-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-md-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-md-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-md-row>.flex-gt-md-30{flex:1 1 30%;max-width:30%;max-height:100%;box-sizing:border-box}.layout-gt-md-column>.flex-gt-md-30{flex:1 1 30%;max-width:100%;max-height:30%;box-sizing:border-box}.flex-gt-md-35{flex:1 1 35%;max-width:35%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-35{flex:1 1 35%;max-width:35%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-md-35{flex:1 1 35%;max-width:100%;max-height:35%;box-sizing:border-box}.layout-row>.flex-gt-md-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-md-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-md-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-md-row>.flex-gt-md-35{flex:1 1 35%;max-width:35%;max-height:100%;box-sizing:border-box}.layout-gt-md-column>.flex-gt-md-35{flex:1 1 35%;max-width:100%;max-height:35%;box-sizing:border-box}.flex-gt-md-40{flex:1 1 40%;max-width:40%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-40{flex:1 1 40%;max-width:40%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-md-40{flex:1 1 40%;max-width:100%;max-height:40%;box-sizing:border-box}.layout-row>.flex-gt-md-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-md-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-md-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-md-row>.flex-gt-md-40{flex:1 1 40%;max-width:40%;max-height:100%;box-sizing:border-box}.layout-gt-md-column>.flex-gt-md-40{flex:1 1 40%;max-width:100%;max-height:40%;box-sizing:border-box}.flex-gt-md-45{flex:1 1 45%;max-width:45%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-45{flex:1 1 45%;max-width:45%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-md-45{flex:1 1 45%;max-width:100%;max-height:45%;box-sizing:border-box}.layout-row>.flex-gt-md-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-md-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-md-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-md-row>.flex-gt-md-45{flex:1 1 45%;max-width:45%;max-height:100%;box-sizing:border-box}.layout-gt-md-column>.flex-gt-md-45{flex:1 1 45%;max-width:100%;max-height:45%;box-sizing:border-box}.flex-gt-md-50{flex:1 1 50%;max-width:50%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-50{flex:1 1 50%;max-width:50%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-md-50{flex:1 1 50%;max-width:100%;max-height:50%;box-sizing:border-box}.layout-row>.flex-gt-md-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-md-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-md-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-md-row>.flex-gt-md-50{flex:1 1 50%;max-width:50%;max-height:100%;box-sizing:border-box}.layout-gt-md-column>.flex-gt-md-50{flex:1 1 50%;max-width:100%;max-height:50%;box-sizing:border-box}.flex-gt-md-55{flex:1 1 55%;max-width:55%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-55{flex:1 1 55%;max-width:55%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-md-55{flex:1 1 55%;max-width:100%;max-height:55%;box-sizing:border-box}.layout-row>.flex-gt-md-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-md-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-md-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-md-row>.flex-gt-md-55{flex:1 1 55%;max-width:55%;max-height:100%;box-sizing:border-box}.layout-gt-md-column>.flex-gt-md-55{flex:1 1 55%;max-width:100%;max-height:55%;box-sizing:border-box}.flex-gt-md-60{flex:1 1 60%;max-width:60%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-60{flex:1 1 60%;max-width:60%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-md-60{flex:1 1 60%;max-width:100%;max-height:60%;box-sizing:border-box}.layout-row>.flex-gt-md-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-md-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-md-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-md-row>.flex-gt-md-60{flex:1 1 60%;max-width:60%;max-height:100%;box-sizing:border-box}.layout-gt-md-column>.flex-gt-md-60{flex:1 1 60%;max-width:100%;max-height:60%;box-sizing:border-box}.flex-gt-md-65{flex:1 1 65%;max-width:65%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-65{flex:1 1 65%;max-width:65%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-md-65{flex:1 1 65%;max-width:100%;max-height:65%;box-sizing:border-box}.layout-row>.flex-gt-md-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-md-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-md-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-md-row>.flex-gt-md-65{flex:1 1 65%;max-width:65%;max-height:100%;box-sizing:border-box}.layout-gt-md-column>.flex-gt-md-65{flex:1 1 65%;max-width:100%;max-height:65%;box-sizing:border-box}.flex-gt-md-70{flex:1 1 70%;max-width:70%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-70{flex:1 1 70%;max-width:70%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-md-70{flex:1 1 70%;max-width:100%;max-height:70%;box-sizing:border-box}.layout-row>.flex-gt-md-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-md-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-md-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-md-row>.flex-gt-md-70{flex:1 1 70%;max-width:70%;max-height:100%;box-sizing:border-box}.layout-gt-md-column>.flex-gt-md-70{flex:1 1 70%;max-width:100%;max-height:70%;box-sizing:border-box}.flex-gt-md-75{flex:1 1 75%;max-width:75%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-75{flex:1 1 75%;max-width:75%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-md-75{flex:1 1 75%;max-width:100%;max-height:75%;box-sizing:border-box}.layout-row>.flex-gt-md-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-md-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-md-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-md-row>.flex-gt-md-75{flex:1 1 75%;max-width:75%;max-height:100%;box-sizing:border-box}.layout-gt-md-column>.flex-gt-md-75{flex:1 1 75%;max-width:100%;max-height:75%;box-sizing:border-box}.flex-gt-md-80{flex:1 1 80%;max-width:80%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-80{flex:1 1 80%;max-width:80%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-md-80{flex:1 1 80%;max-width:100%;max-height:80%;box-sizing:border-box}.layout-row>.flex-gt-md-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-md-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-md-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-md-row>.flex-gt-md-80{flex:1 1 80%;max-width:80%;max-height:100%;box-sizing:border-box}.layout-gt-md-column>.flex-gt-md-80{flex:1 1 80%;max-width:100%;max-height:80%;box-sizing:border-box}.flex-gt-md-85{flex:1 1 85%;max-width:85%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-85{flex:1 1 85%;max-width:85%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-md-85{flex:1 1 85%;max-width:100%;max-height:85%;box-sizing:border-box}.layout-row>.flex-gt-md-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-md-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-md-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-md-row>.flex-gt-md-85{flex:1 1 85%;max-width:85%;max-height:100%;box-sizing:border-box}.layout-gt-md-column>.flex-gt-md-85{flex:1 1 85%;max-width:100%;max-height:85%;box-sizing:border-box}.flex-gt-md-90{flex:1 1 90%;max-width:90%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-90{flex:1 1 90%;max-width:90%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-md-90{flex:1 1 90%;max-width:100%;max-height:90%;box-sizing:border-box}.layout-row>.flex-gt-md-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-md-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-md-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-md-row>.flex-gt-md-90{flex:1 1 90%;max-width:90%;max-height:100%;box-sizing:border-box}.layout-gt-md-column>.flex-gt-md-90{flex:1 1 90%;max-width:100%;max-height:90%;box-sizing:border-box}.flex-gt-md-95{flex:1 1 95%;max-width:95%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-95{flex:1 1 95%;max-width:95%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-md-95{flex:1 1 95%;max-width:100%;max-height:95%;box-sizing:border-box}.layout-row>.flex-gt-md-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-md-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-md-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-md-row>.flex-gt-md-95{flex:1 1 95%;max-width:95%;max-height:100%;box-sizing:border-box}.layout-gt-md-column>.flex-gt-md-95{flex:1 1 95%;max-width:100%;max-height:95%;box-sizing:border-box}.flex-gt-md-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-md-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-md-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-md-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-md-row>.flex-gt-md-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-gt-md-column>.flex-gt-md-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-gt-md-row>.flex-gt-md-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-gt-md-row>.flex-gt-md-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-gt-md-row>.flex{min-width:0}.layout-gt-md-column>.flex-gt-md-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-gt-md-column>.flex-gt-md-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-md-column>.flex{min-height:0}.layout-gt-md,.layout-gt-md-column,.layout-gt-md-row{box-sizing:border-box;display:-webkit-box;display:-webkit-flex;display:-moz-box;display:-ms-flexbox;display:flex}.layout-gt-md-column{flex-direction:column}.layout-gt-md-row{flex-direction:row}}@media (min-width:1280px) and (max-width:1919px){.hide-gt-md:not(.show-gt-xs):not(.show-gt-sm):not(.show-gt-md):not(.show-lg):not(.show),.hide-gt-sm:not(.show-gt-xs):not(.show-gt-sm):not(.show-gt-md):not(.show-lg):not(.show),.hide-gt-xs:not(.show-gt-xs):not(.show-gt-sm):not(.show-gt-md):not(.show-lg):not(.show),.hide:not(.show-gt-xs):not(.show-gt-sm):not(.show-gt-md):not(.show-lg):not(.show){display:none}.hide-lg:not(.show-lg):not(.show-gt-md):not(.show-gt-sm):not(.show-gt-xs):not(.show){display:none}.flex-order-lg--20{order:-20}.flex-order-lg--19{order:-19}.flex-order-lg--18{order:-18}.flex-order-lg--17{order:-17}.flex-order-lg--16{order:-16}.flex-order-lg--15{order:-15}.flex-order-lg--14{order:-14}.flex-order-lg--13{order:-13}.flex-order-lg--12{order:-12}.flex-order-lg--11{order:-11}.flex-order-lg--10{order:-10}.flex-order-lg--9{order:-9}.flex-order-lg--8{order:-8}.flex-order-lg--7{order:-7}.flex-order-lg--6{order:-6}.flex-order-lg--5{order:-5}.flex-order-lg--4{order:-4}.flex-order-lg--3{order:-3}.flex-order-lg--2{order:-2}.flex-order-lg--1{order:-1}.flex-order-lg-0{order:0}.flex-order-lg-1{order:1}.flex-order-lg-2{order:2}.flex-order-lg-3{order:3}.flex-order-lg-4{order:4}.flex-order-lg-5{order:5}.flex-order-lg-6{order:6}.flex-order-lg-7{order:7}.flex-order-lg-8{order:8}.flex-order-lg-9{order:9}.flex-order-lg-10{order:10}.flex-order-lg-11{order:11}.flex-order-lg-12{order:12}.flex-order-lg-13{order:13}.flex-order-lg-14{order:14}.flex-order-lg-15{order:15}.flex-order-lg-16{order:16}.flex-order-lg-17{order:17}.flex-order-lg-18{order:18}.flex-order-lg-19{order:19}.flex-order-lg-20{order:20}.flex-offset-lg-0,.offset-lg-0{margin-left:0}[dir=rtl] .flex-offset-lg-0,[dir=rtl] .offset-lg-0{margin-left:auto;margin-right:0}.flex-offset-lg-5,.offset-lg-5{margin-left:5%}[dir=rtl] .flex-offset-lg-5,[dir=rtl] .offset-lg-5{margin-left:auto;margin-right:5%}.flex-offset-lg-10,.offset-lg-10{margin-left:10%}[dir=rtl] .flex-offset-lg-10,[dir=rtl] .offset-lg-10{margin-left:auto;margin-right:10%}.flex-offset-lg-15,.offset-lg-15{margin-left:15%}[dir=rtl] .flex-offset-lg-15,[dir=rtl] .offset-lg-15{margin-left:auto;margin-right:15%}.flex-offset-lg-20,.offset-lg-20{margin-left:20%}[dir=rtl] .flex-offset-lg-20,[dir=rtl] .offset-lg-20{margin-left:auto;margin-right:20%}.flex-offset-lg-25,.offset-lg-25{margin-left:25%}[dir=rtl] .flex-offset-lg-25,[dir=rtl] .offset-lg-25{margin-left:auto;margin-right:25%}.flex-offset-lg-30,.offset-lg-30{margin-left:30%}[dir=rtl] .flex-offset-lg-30,[dir=rtl] .offset-lg-30{margin-left:auto;margin-right:30%}.flex-offset-lg-35,.offset-lg-35{margin-left:35%}[dir=rtl] .flex-offset-lg-35,[dir=rtl] .offset-lg-35{margin-left:auto;margin-right:35%}.flex-offset-lg-40,.offset-lg-40{margin-left:40%}[dir=rtl] .flex-offset-lg-40,[dir=rtl] .offset-lg-40{margin-left:auto;margin-right:40%}.flex-offset-lg-45,.offset-lg-45{margin-left:45%}[dir=rtl] .flex-offset-lg-45,[dir=rtl] .offset-lg-45{margin-left:auto;margin-right:45%}.flex-offset-lg-50,.offset-lg-50{margin-left:50%}[dir=rtl] .flex-offset-lg-50,[dir=rtl] .offset-lg-50{margin-left:auto;margin-right:50%}.flex-offset-lg-55,.offset-lg-55{margin-left:55%}[dir=rtl] .flex-offset-lg-55,[dir=rtl] .offset-lg-55{margin-left:auto;margin-right:55%}.flex-offset-lg-60,.offset-lg-60{margin-left:60%}[dir=rtl] .flex-offset-lg-60,[dir=rtl] .offset-lg-60{margin-left:auto;margin-right:60%}.flex-offset-lg-65,.offset-lg-65{margin-left:65%}[dir=rtl] .flex-offset-lg-65,[dir=rtl] .offset-lg-65{margin-left:auto;margin-right:65%}.flex-offset-lg-70,.offset-lg-70{margin-left:70%}[dir=rtl] .flex-offset-lg-70,[dir=rtl] .offset-lg-70{margin-left:auto;margin-right:70%}.flex-offset-lg-75,.offset-lg-75{margin-left:75%}[dir=rtl] .flex-offset-lg-75,[dir=rtl] .offset-lg-75{margin-left:auto;margin-right:75%}.flex-offset-lg-80,.offset-lg-80{margin-left:80%}[dir=rtl] .flex-offset-lg-80,[dir=rtl] .offset-lg-80{margin-left:auto;margin-right:80%}.flex-offset-lg-85,.offset-lg-85{margin-left:85%}[dir=rtl] .flex-offset-lg-85,[dir=rtl] .offset-lg-85{margin-left:auto;margin-right:85%}.flex-offset-lg-90,.offset-lg-90{margin-left:90%}[dir=rtl] .flex-offset-lg-90,[dir=rtl] .offset-lg-90{margin-left:auto;margin-right:90%}.flex-offset-lg-95,.offset-lg-95{margin-left:95%}[dir=rtl] .flex-offset-lg-95,[dir=rtl] .offset-lg-95{margin-left:auto;margin-right:95%}.flex-offset-lg-33,.offset-lg-33{margin-left:calc(100% / 3)}.flex-offset-lg-66,.offset-lg-66{margin-left:calc(200% / 3)}[dir=rtl] .flex-offset-lg-66,[dir=rtl] .offset-lg-66{margin-left:auto;margin-right:calc(200% / 3)}.layout-align-lg,.layout-align-lg-start-stretch{justify-content:flex-start;align-content:stretch;align-items:stretch}.layout-align-lg-start,.layout-align-lg-start-center,.layout-align-lg-start-end,.layout-align-lg-start-start,.layout-align-lg-start-stretch{justify-content:flex-start}.layout-align-lg-center,.layout-align-lg-center-center,.layout-align-lg-center-end,.layout-align-lg-center-start,.layout-align-lg-center-stretch{justify-content:center}.layout-align-lg-end,.layout-align-lg-end-center,.layout-align-lg-end-end,.layout-align-lg-end-start,.layout-align-lg-end-stretch{justify-content:flex-end}.layout-align-lg-space-around,.layout-align-lg-space-around-center,.layout-align-lg-space-around-end,.layout-align-lg-space-around-start,.layout-align-lg-space-around-stretch{justify-content:space-around}.layout-align-lg-space-between,.layout-align-lg-space-between-center,.layout-align-lg-space-between-end,.layout-align-lg-space-between-start,.layout-align-lg-space-between-stretch{justify-content:space-between}.layout-align-lg-center-start,.layout-align-lg-end-start,.layout-align-lg-space-around-start,.layout-align-lg-space-between-start,.layout-align-lg-start-start{align-items:flex-start;align-content:flex-start}.layout-align-lg-center-center,.layout-align-lg-end-center,.layout-align-lg-space-around-center,.layout-align-lg-space-between-center,.layout-align-lg-start-center{align-items:center;align-content:center;max-width:100%}.layout-align-lg-center-center>*,.layout-align-lg-end-center>*,.layout-align-lg-space-around-center>*,.layout-align-lg-space-between-center>*,.layout-align-lg-start-center>*{max-width:100%;box-sizing:border-box}.layout-align-lg-center-end,.layout-align-lg-end-end,.layout-align-lg-space-around-end,.layout-align-lg-space-between-end,.layout-align-lg-start-end{align-items:flex-end;align-content:flex-end}.layout-align-lg-center-stretch,.layout-align-lg-end-stretch,.layout-align-lg-space-around-stretch,.layout-align-lg-space-between-stretch,.layout-align-lg-start-stretch{align-items:stretch;align-content:stretch}.flex-lg{flex:1;box-sizing:border-box}.flex-lg-grow{flex:1 1 100%;box-sizing:border-box}.flex-lg-initial{flex:0 1 auto;box-sizing:border-box}.flex-lg-auto{flex:1 1 auto;box-sizing:border-box}.flex-lg-none{flex:0 0 auto;box-sizing:border-box}.flex-lg-noshrink{flex:1 0 auto;box-sizing:border-box}.flex-lg-nogrow{flex:0 1 auto;box-sizing:border-box}.flex-lg-0{flex:1 1 0%;max-width:0%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-0{flex:1 1 0%;max-width:0%;max-height:100%;box-sizing:border-box;min-width:0}.layout-column>.flex-lg-0{flex:1 1 0%;max-width:100%;max-height:0%;box-sizing:border-box}.layout-row>.flex-lg-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-lg-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-lg-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-lg-row>.flex-lg-0{flex:1 1 0%;max-width:0%;max-height:100%;box-sizing:border-box;min-width:0}.layout-lg-column>.flex-lg-0{flex:1 1 0%;max-width:100%;max-height:0%;box-sizing:border-box;min-height:0}.flex-lg-5{flex:1 1 5%;max-width:5%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-5{flex:1 1 5%;max-width:5%;max-height:100%;box-sizing:border-box}.layout-column>.flex-lg-5{flex:1 1 5%;max-width:100%;max-height:5%;box-sizing:border-box}.layout-row>.flex-lg-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-lg-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-lg-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-lg-row>.flex-lg-5{flex:1 1 5%;max-width:5%;max-height:100%;box-sizing:border-box}.layout-lg-column>.flex-lg-5{flex:1 1 5%;max-width:100%;max-height:5%;box-sizing:border-box}.flex-lg-10{flex:1 1 10%;max-width:10%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-10{flex:1 1 10%;max-width:10%;max-height:100%;box-sizing:border-box}.layout-column>.flex-lg-10{flex:1 1 10%;max-width:100%;max-height:10%;box-sizing:border-box}.layout-row>.flex-lg-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-lg-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-lg-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-lg-row>.flex-lg-10{flex:1 1 10%;max-width:10%;max-height:100%;box-sizing:border-box}.layout-lg-column>.flex-lg-10{flex:1 1 10%;max-width:100%;max-height:10%;box-sizing:border-box}.flex-lg-15{flex:1 1 15%;max-width:15%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-15{flex:1 1 15%;max-width:15%;max-height:100%;box-sizing:border-box}.layout-column>.flex-lg-15{flex:1 1 15%;max-width:100%;max-height:15%;box-sizing:border-box}.layout-row>.flex-lg-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-lg-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-lg-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-lg-row>.flex-lg-15{flex:1 1 15%;max-width:15%;max-height:100%;box-sizing:border-box}.layout-lg-column>.flex-lg-15{flex:1 1 15%;max-width:100%;max-height:15%;box-sizing:border-box}.flex-lg-20{flex:1 1 20%;max-width:20%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-20{flex:1 1 20%;max-width:20%;max-height:100%;box-sizing:border-box}.layout-column>.flex-lg-20{flex:1 1 20%;max-width:100%;max-height:20%;box-sizing:border-box}.layout-row>.flex-lg-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-lg-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-lg-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-lg-row>.flex-lg-20{flex:1 1 20%;max-width:20%;max-height:100%;box-sizing:border-box}.layout-lg-column>.flex-lg-20{flex:1 1 20%;max-width:100%;max-height:20%;box-sizing:border-box}.flex-lg-25{flex:1 1 25%;max-width:25%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-25{flex:1 1 25%;max-width:25%;max-height:100%;box-sizing:border-box}.layout-column>.flex-lg-25{flex:1 1 25%;max-width:100%;max-height:25%;box-sizing:border-box}.layout-row>.flex-lg-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-lg-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-lg-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-lg-row>.flex-lg-25{flex:1 1 25%;max-width:25%;max-height:100%;box-sizing:border-box}.layout-lg-column>.flex-lg-25{flex:1 1 25%;max-width:100%;max-height:25%;box-sizing:border-box}.flex-lg-30{flex:1 1 30%;max-width:30%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-30{flex:1 1 30%;max-width:30%;max-height:100%;box-sizing:border-box}.layout-column>.flex-lg-30{flex:1 1 30%;max-width:100%;max-height:30%;box-sizing:border-box}.layout-row>.flex-lg-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-lg-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-lg-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-lg-row>.flex-lg-30{flex:1 1 30%;max-width:30%;max-height:100%;box-sizing:border-box}.layout-lg-column>.flex-lg-30{flex:1 1 30%;max-width:100%;max-height:30%;box-sizing:border-box}.flex-lg-35{flex:1 1 35%;max-width:35%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-35{flex:1 1 35%;max-width:35%;max-height:100%;box-sizing:border-box}.layout-column>.flex-lg-35{flex:1 1 35%;max-width:100%;max-height:35%;box-sizing:border-box}.layout-row>.flex-lg-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-lg-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-lg-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-lg-row>.flex-lg-35{flex:1 1 35%;max-width:35%;max-height:100%;box-sizing:border-box}.layout-lg-column>.flex-lg-35{flex:1 1 35%;max-width:100%;max-height:35%;box-sizing:border-box}.flex-lg-40{flex:1 1 40%;max-width:40%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-40{flex:1 1 40%;max-width:40%;max-height:100%;box-sizing:border-box}.layout-column>.flex-lg-40{flex:1 1 40%;max-width:100%;max-height:40%;box-sizing:border-box}.layout-row>.flex-lg-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-lg-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-lg-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-lg-row>.flex-lg-40{flex:1 1 40%;max-width:40%;max-height:100%;box-sizing:border-box}.layout-lg-column>.flex-lg-40{flex:1 1 40%;max-width:100%;max-height:40%;box-sizing:border-box}.flex-lg-45{flex:1 1 45%;max-width:45%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-45{flex:1 1 45%;max-width:45%;max-height:100%;box-sizing:border-box}.layout-column>.flex-lg-45{flex:1 1 45%;max-width:100%;max-height:45%;box-sizing:border-box}.layout-row>.flex-lg-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-lg-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-lg-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-lg-row>.flex-lg-45{flex:1 1 45%;max-width:45%;max-height:100%;box-sizing:border-box}.layout-lg-column>.flex-lg-45{flex:1 1 45%;max-width:100%;max-height:45%;box-sizing:border-box}.flex-lg-50{flex:1 1 50%;max-width:50%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-50{flex:1 1 50%;max-width:50%;max-height:100%;box-sizing:border-box}.layout-column>.flex-lg-50{flex:1 1 50%;max-width:100%;max-height:50%;box-sizing:border-box}.layout-row>.flex-lg-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-lg-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-lg-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-lg-row>.flex-lg-50{flex:1 1 50%;max-width:50%;max-height:100%;box-sizing:border-box}.layout-lg-column>.flex-lg-50{flex:1 1 50%;max-width:100%;max-height:50%;box-sizing:border-box}.flex-lg-55{flex:1 1 55%;max-width:55%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-55{flex:1 1 55%;max-width:55%;max-height:100%;box-sizing:border-box}.layout-column>.flex-lg-55{flex:1 1 55%;max-width:100%;max-height:55%;box-sizing:border-box}.layout-row>.flex-lg-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-lg-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-lg-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-lg-row>.flex-lg-55{flex:1 1 55%;max-width:55%;max-height:100%;box-sizing:border-box}.layout-lg-column>.flex-lg-55{flex:1 1 55%;max-width:100%;max-height:55%;box-sizing:border-box}.flex-lg-60{flex:1 1 60%;max-width:60%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-60{flex:1 1 60%;max-width:60%;max-height:100%;box-sizing:border-box}.layout-column>.flex-lg-60{flex:1 1 60%;max-width:100%;max-height:60%;box-sizing:border-box}.layout-row>.flex-lg-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-lg-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-lg-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-lg-row>.flex-lg-60{flex:1 1 60%;max-width:60%;max-height:100%;box-sizing:border-box}.layout-lg-column>.flex-lg-60{flex:1 1 60%;max-width:100%;max-height:60%;box-sizing:border-box}.flex-lg-65{flex:1 1 65%;max-width:65%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-65{flex:1 1 65%;max-width:65%;max-height:100%;box-sizing:border-box}.layout-column>.flex-lg-65{flex:1 1 65%;max-width:100%;max-height:65%;box-sizing:border-box}.layout-row>.flex-lg-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-lg-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-lg-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-lg-row>.flex-lg-65{flex:1 1 65%;max-width:65%;max-height:100%;box-sizing:border-box}.layout-lg-column>.flex-lg-65{flex:1 1 65%;max-width:100%;max-height:65%;box-sizing:border-box}.flex-lg-70{flex:1 1 70%;max-width:70%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-70{flex:1 1 70%;max-width:70%;max-height:100%;box-sizing:border-box}.layout-column>.flex-lg-70{flex:1 1 70%;max-width:100%;max-height:70%;box-sizing:border-box}.layout-row>.flex-lg-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-lg-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-lg-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-lg-row>.flex-lg-70{flex:1 1 70%;max-width:70%;max-height:100%;box-sizing:border-box}.layout-lg-column>.flex-lg-70{flex:1 1 70%;max-width:100%;max-height:70%;box-sizing:border-box}.flex-lg-75{flex:1 1 75%;max-width:75%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-75{flex:1 1 75%;max-width:75%;max-height:100%;box-sizing:border-box}.layout-column>.flex-lg-75{flex:1 1 75%;max-width:100%;max-height:75%;box-sizing:border-box}.layout-row>.flex-lg-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-lg-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-lg-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-lg-row>.flex-lg-75{flex:1 1 75%;max-width:75%;max-height:100%;box-sizing:border-box}.layout-lg-column>.flex-lg-75{flex:1 1 75%;max-width:100%;max-height:75%;box-sizing:border-box}.flex-lg-80{flex:1 1 80%;max-width:80%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-80{flex:1 1 80%;max-width:80%;max-height:100%;box-sizing:border-box}.layout-column>.flex-lg-80{flex:1 1 80%;max-width:100%;max-height:80%;box-sizing:border-box}.layout-row>.flex-lg-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-lg-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-lg-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-lg-row>.flex-lg-80{flex:1 1 80%;max-width:80%;max-height:100%;box-sizing:border-box}.layout-lg-column>.flex-lg-80{flex:1 1 80%;max-width:100%;max-height:80%;box-sizing:border-box}.flex-lg-85{flex:1 1 85%;max-width:85%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-85{flex:1 1 85%;max-width:85%;max-height:100%;box-sizing:border-box}.layout-column>.flex-lg-85{flex:1 1 85%;max-width:100%;max-height:85%;box-sizing:border-box}.layout-row>.flex-lg-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-lg-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-lg-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-lg-row>.flex-lg-85{flex:1 1 85%;max-width:85%;max-height:100%;box-sizing:border-box}.layout-lg-column>.flex-lg-85{flex:1 1 85%;max-width:100%;max-height:85%;box-sizing:border-box}.flex-lg-90{flex:1 1 90%;max-width:90%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-90{flex:1 1 90%;max-width:90%;max-height:100%;box-sizing:border-box}.layout-column>.flex-lg-90{flex:1 1 90%;max-width:100%;max-height:90%;box-sizing:border-box}.layout-row>.flex-lg-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-lg-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-lg-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-lg-row>.flex-lg-90{flex:1 1 90%;max-width:90%;max-height:100%;box-sizing:border-box}.layout-lg-column>.flex-lg-90{flex:1 1 90%;max-width:100%;max-height:90%;box-sizing:border-box}.flex-lg-95{flex:1 1 95%;max-width:95%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-95{flex:1 1 95%;max-width:95%;max-height:100%;box-sizing:border-box}.layout-column>.flex-lg-95{flex:1 1 95%;max-width:100%;max-height:95%;box-sizing:border-box}.layout-row>.flex-lg-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-lg-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-lg-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-lg-row>.flex-lg-95{flex:1 1 95%;max-width:95%;max-height:100%;box-sizing:border-box}.layout-lg-column>.flex-lg-95{flex:1 1 95%;max-width:100%;max-height:95%;box-sizing:border-box}.flex-lg-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-column>.flex-lg-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-lg-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-lg-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-lg-row>.flex-lg-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-lg-column>.flex-lg-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-lg-row>.flex-lg-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-lg-row>.flex-lg-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-lg-row>.flex{min-width:0}.layout-lg-column>.flex-lg-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-lg-column>.flex-lg-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-lg-column>.flex{min-height:0}.layout-lg,.layout-lg-column,.layout-lg-row{box-sizing:border-box;display:-webkit-box;display:-webkit-flex;display:-moz-box;display:-ms-flexbox;display:flex}.layout-lg-column{flex-direction:column}.layout-lg-row{flex-direction:row}}@media (min-width:1920px){.flex-order-gt-lg--20{order:-20}.flex-order-gt-lg--19{order:-19}.flex-order-gt-lg--18{order:-18}.flex-order-gt-lg--17{order:-17}.flex-order-gt-lg--16{order:-16}.flex-order-gt-lg--15{order:-15}.flex-order-gt-lg--14{order:-14}.flex-order-gt-lg--13{order:-13}.flex-order-gt-lg--12{order:-12}.flex-order-gt-lg--11{order:-11}.flex-order-gt-lg--10{order:-10}.flex-order-gt-lg--9{order:-9}.flex-order-gt-lg--8{order:-8}.flex-order-gt-lg--7{order:-7}.flex-order-gt-lg--6{order:-6}.flex-order-gt-lg--5{order:-5}.flex-order-gt-lg--4{order:-4}.flex-order-gt-lg--3{order:-3}.flex-order-gt-lg--2{order:-2}.flex-order-gt-lg--1{order:-1}.flex-order-gt-lg-0{order:0}.flex-order-gt-lg-1{order:1}.flex-order-gt-lg-2{order:2}.flex-order-gt-lg-3{order:3}.flex-order-gt-lg-4{order:4}.flex-order-gt-lg-5{order:5}.flex-order-gt-lg-6{order:6}.flex-order-gt-lg-7{order:7}.flex-order-gt-lg-8{order:8}.flex-order-gt-lg-9{order:9}.flex-order-gt-lg-10{order:10}.flex-order-gt-lg-11{order:11}.flex-order-gt-lg-12{order:12}.flex-order-gt-lg-13{order:13}.flex-order-gt-lg-14{order:14}.flex-order-gt-lg-15{order:15}.flex-order-gt-lg-16{order:16}.flex-order-gt-lg-17{order:17}.flex-order-gt-lg-18{order:18}.flex-order-gt-lg-19{order:19}.flex-order-gt-lg-20{order:20}.flex-offset-gt-lg-0,.offset-gt-lg-0{margin-left:0}[dir=rtl] .flex-offset-gt-lg-0,[dir=rtl] .offset-gt-lg-0{margin-left:auto;margin-right:0}.flex-offset-gt-lg-5,.offset-gt-lg-5{margin-left:5%}[dir=rtl] .flex-offset-gt-lg-5,[dir=rtl] .offset-gt-lg-5{margin-left:auto;margin-right:5%}.flex-offset-gt-lg-10,.offset-gt-lg-10{margin-left:10%}[dir=rtl] .flex-offset-gt-lg-10,[dir=rtl] .offset-gt-lg-10{margin-left:auto;margin-right:10%}.flex-offset-gt-lg-15,.offset-gt-lg-15{margin-left:15%}[dir=rtl] .flex-offset-gt-lg-15,[dir=rtl] .offset-gt-lg-15{margin-left:auto;margin-right:15%}.flex-offset-gt-lg-20,.offset-gt-lg-20{margin-left:20%}[dir=rtl] .flex-offset-gt-lg-20,[dir=rtl] .offset-gt-lg-20{margin-left:auto;margin-right:20%}.flex-offset-gt-lg-25,.offset-gt-lg-25{margin-left:25%}[dir=rtl] .flex-offset-gt-lg-25,[dir=rtl] .offset-gt-lg-25{margin-left:auto;margin-right:25%}.flex-offset-gt-lg-30,.offset-gt-lg-30{margin-left:30%}[dir=rtl] .flex-offset-gt-lg-30,[dir=rtl] .offset-gt-lg-30{margin-left:auto;margin-right:30%}.flex-offset-gt-lg-35,.offset-gt-lg-35{margin-left:35%}[dir=rtl] .flex-offset-gt-lg-35,[dir=rtl] .offset-gt-lg-35{margin-left:auto;margin-right:35%}.flex-offset-gt-lg-40,.offset-gt-lg-40{margin-left:40%}[dir=rtl] .flex-offset-gt-lg-40,[dir=rtl] .offset-gt-lg-40{margin-left:auto;margin-right:40%}.flex-offset-gt-lg-45,.offset-gt-lg-45{margin-left:45%}[dir=rtl] .flex-offset-gt-lg-45,[dir=rtl] .offset-gt-lg-45{margin-left:auto;margin-right:45%}.flex-offset-gt-lg-50,.offset-gt-lg-50{margin-left:50%}[dir=rtl] .flex-offset-gt-lg-50,[dir=rtl] .offset-gt-lg-50{margin-left:auto;margin-right:50%}.flex-offset-gt-lg-55,.offset-gt-lg-55{margin-left:55%}[dir=rtl] .flex-offset-gt-lg-55,[dir=rtl] .offset-gt-lg-55{margin-left:auto;margin-right:55%}.flex-offset-gt-lg-60,.offset-gt-lg-60{margin-left:60%}[dir=rtl] .flex-offset-gt-lg-60,[dir=rtl] .offset-gt-lg-60{margin-left:auto;margin-right:60%}.flex-offset-gt-lg-65,.offset-gt-lg-65{margin-left:65%}[dir=rtl] .flex-offset-gt-lg-65,[dir=rtl] .offset-gt-lg-65{margin-left:auto;margin-right:65%}.flex-offset-gt-lg-70,.offset-gt-lg-70{margin-left:70%}[dir=rtl] .flex-offset-gt-lg-70,[dir=rtl] .offset-gt-lg-70{margin-left:auto;margin-right:70%}.flex-offset-gt-lg-75,.offset-gt-lg-75{margin-left:75%}[dir=rtl] .flex-offset-gt-lg-75,[dir=rtl] .offset-gt-lg-75{margin-left:auto;margin-right:75%}.flex-offset-gt-lg-80,.offset-gt-lg-80{margin-left:80%}[dir=rtl] .flex-offset-gt-lg-80,[dir=rtl] .offset-gt-lg-80{margin-left:auto;margin-right:80%}.flex-offset-gt-lg-85,.offset-gt-lg-85{margin-left:85%}[dir=rtl] .flex-offset-gt-lg-85,[dir=rtl] .offset-gt-lg-85{margin-left:auto;margin-right:85%}.flex-offset-gt-lg-90,.offset-gt-lg-90{margin-left:90%}[dir=rtl] .flex-offset-gt-lg-90,[dir=rtl] .offset-gt-lg-90{margin-left:auto;margin-right:90%}.flex-offset-gt-lg-95,.offset-gt-lg-95{margin-left:95%}[dir=rtl] .flex-offset-gt-lg-95,[dir=rtl] .offset-gt-lg-95{margin-left:auto;margin-right:95%}.flex-offset-gt-lg-33,.offset-gt-lg-33{margin-left:calc(100% / 3)}.flex-offset-gt-lg-66,.offset-gt-lg-66{margin-left:calc(200% / 3)}[dir=rtl] .flex-offset-gt-lg-66,[dir=rtl] .offset-gt-lg-66{margin-left:auto;margin-right:calc(200% / 3)}.layout-align-gt-lg,.layout-align-gt-lg-start-stretch{justify-content:flex-start;align-content:stretch;align-items:stretch}.layout-align-gt-lg-start,.layout-align-gt-lg-start-center,.layout-align-gt-lg-start-end,.layout-align-gt-lg-start-start,.layout-align-gt-lg-start-stretch{justify-content:flex-start}.layout-align-gt-lg-center,.layout-align-gt-lg-center-center,.layout-align-gt-lg-center-end,.layout-align-gt-lg-center-start,.layout-align-gt-lg-center-stretch{justify-content:center}.layout-align-gt-lg-end,.layout-align-gt-lg-end-center,.layout-align-gt-lg-end-end,.layout-align-gt-lg-end-start,.layout-align-gt-lg-end-stretch{justify-content:flex-end}.layout-align-gt-lg-space-around,.layout-align-gt-lg-space-around-center,.layout-align-gt-lg-space-around-end,.layout-align-gt-lg-space-around-start,.layout-align-gt-lg-space-around-stretch{justify-content:space-around}.layout-align-gt-lg-space-between,.layout-align-gt-lg-space-between-center,.layout-align-gt-lg-space-between-end,.layout-align-gt-lg-space-between-start,.layout-align-gt-lg-space-between-stretch{justify-content:space-between}.layout-align-gt-lg-center-start,.layout-align-gt-lg-end-start,.layout-align-gt-lg-space-around-start,.layout-align-gt-lg-space-between-start,.layout-align-gt-lg-start-start{align-items:flex-start;align-content:flex-start}.layout-align-gt-lg-center-center,.layout-align-gt-lg-end-center,.layout-align-gt-lg-space-around-center,.layout-align-gt-lg-space-between-center,.layout-align-gt-lg-start-center{align-items:center;align-content:center;max-width:100%}.layout-align-gt-lg-center-center>*,.layout-align-gt-lg-end-center>*,.layout-align-gt-lg-space-around-center>*,.layout-align-gt-lg-space-between-center>*,.layout-align-gt-lg-start-center>*{max-width:100%;box-sizing:border-box}.layout-align-gt-lg-center-end,.layout-align-gt-lg-end-end,.layout-align-gt-lg-space-around-end,.layout-align-gt-lg-space-between-end,.layout-align-gt-lg-start-end{align-items:flex-end;align-content:flex-end}.layout-align-gt-lg-center-stretch,.layout-align-gt-lg-end-stretch,.layout-align-gt-lg-space-around-stretch,.layout-align-gt-lg-space-between-stretch,.layout-align-gt-lg-start-stretch{align-items:stretch;align-content:stretch}.flex-gt-lg{flex:1;box-sizing:border-box}.flex-gt-lg-grow{flex:1 1 100%;box-sizing:border-box}.flex-gt-lg-initial{flex:0 1 auto;box-sizing:border-box}.flex-gt-lg-auto{flex:1 1 auto;box-sizing:border-box}.flex-gt-lg-none{flex:0 0 auto;box-sizing:border-box}.flex-gt-lg-noshrink{flex:1 0 auto;box-sizing:border-box}.flex-gt-lg-nogrow{flex:0 1 auto;box-sizing:border-box}.flex-gt-lg-0{flex:1 1 0%;max-width:0%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-0{flex:1 1 0%;max-width:0%;max-height:100%;box-sizing:border-box;min-width:0}.layout-column>.flex-gt-lg-0{flex:1 1 0%;max-width:100%;max-height:0%;box-sizing:border-box}.layout-row>.flex-gt-lg-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-lg-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-lg-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-lg-row>.flex-gt-lg-0{flex:1 1 0%;max-width:0%;max-height:100%;box-sizing:border-box;min-width:0}.layout-gt-lg-column>.flex-gt-lg-0{flex:1 1 0%;max-width:100%;max-height:0%;box-sizing:border-box;min-height:0}.flex-gt-lg-5{flex:1 1 5%;max-width:5%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-5{flex:1 1 5%;max-width:5%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-lg-5{flex:1 1 5%;max-width:100%;max-height:5%;box-sizing:border-box}.layout-row>.flex-gt-lg-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-lg-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-lg-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-lg-row>.flex-gt-lg-5{flex:1 1 5%;max-width:5%;max-height:100%;box-sizing:border-box}.layout-gt-lg-column>.flex-gt-lg-5{flex:1 1 5%;max-width:100%;max-height:5%;box-sizing:border-box}.flex-gt-lg-10{flex:1 1 10%;max-width:10%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-10{flex:1 1 10%;max-width:10%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-lg-10{flex:1 1 10%;max-width:100%;max-height:10%;box-sizing:border-box}.layout-row>.flex-gt-lg-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-lg-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-lg-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-lg-row>.flex-gt-lg-10{flex:1 1 10%;max-width:10%;max-height:100%;box-sizing:border-box}.layout-gt-lg-column>.flex-gt-lg-10{flex:1 1 10%;max-width:100%;max-height:10%;box-sizing:border-box}.flex-gt-lg-15{flex:1 1 15%;max-width:15%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-15{flex:1 1 15%;max-width:15%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-lg-15{flex:1 1 15%;max-width:100%;max-height:15%;box-sizing:border-box}.layout-row>.flex-gt-lg-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-lg-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-lg-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-lg-row>.flex-gt-lg-15{flex:1 1 15%;max-width:15%;max-height:100%;box-sizing:border-box}.layout-gt-lg-column>.flex-gt-lg-15{flex:1 1 15%;max-width:100%;max-height:15%;box-sizing:border-box}.flex-gt-lg-20{flex:1 1 20%;max-width:20%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-20{flex:1 1 20%;max-width:20%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-lg-20{flex:1 1 20%;max-width:100%;max-height:20%;box-sizing:border-box}.layout-row>.flex-gt-lg-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-lg-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-lg-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-lg-row>.flex-gt-lg-20{flex:1 1 20%;max-width:20%;max-height:100%;box-sizing:border-box}.layout-gt-lg-column>.flex-gt-lg-20{flex:1 1 20%;max-width:100%;max-height:20%;box-sizing:border-box}.flex-gt-lg-25{flex:1 1 25%;max-width:25%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-25{flex:1 1 25%;max-width:25%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-lg-25{flex:1 1 25%;max-width:100%;max-height:25%;box-sizing:border-box}.layout-row>.flex-gt-lg-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-lg-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-lg-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-lg-row>.flex-gt-lg-25{flex:1 1 25%;max-width:25%;max-height:100%;box-sizing:border-box}.layout-gt-lg-column>.flex-gt-lg-25{flex:1 1 25%;max-width:100%;max-height:25%;box-sizing:border-box}.flex-gt-lg-30{flex:1 1 30%;max-width:30%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-30{flex:1 1 30%;max-width:30%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-lg-30{flex:1 1 30%;max-width:100%;max-height:30%;box-sizing:border-box}.layout-row>.flex-gt-lg-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-lg-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-lg-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-lg-row>.flex-gt-lg-30{flex:1 1 30%;max-width:30%;max-height:100%;box-sizing:border-box}.layout-gt-lg-column>.flex-gt-lg-30{flex:1 1 30%;max-width:100%;max-height:30%;box-sizing:border-box}.flex-gt-lg-35{flex:1 1 35%;max-width:35%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-35{flex:1 1 35%;max-width:35%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-lg-35{flex:1 1 35%;max-width:100%;max-height:35%;box-sizing:border-box}.layout-row>.flex-gt-lg-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-lg-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-lg-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-lg-row>.flex-gt-lg-35{flex:1 1 35%;max-width:35%;max-height:100%;box-sizing:border-box}.layout-gt-lg-column>.flex-gt-lg-35{flex:1 1 35%;max-width:100%;max-height:35%;box-sizing:border-box}.flex-gt-lg-40{flex:1 1 40%;max-width:40%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-40{flex:1 1 40%;max-width:40%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-lg-40{flex:1 1 40%;max-width:100%;max-height:40%;box-sizing:border-box}.layout-row>.flex-gt-lg-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-lg-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-lg-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-lg-row>.flex-gt-lg-40{flex:1 1 40%;max-width:40%;max-height:100%;box-sizing:border-box}.layout-gt-lg-column>.flex-gt-lg-40{flex:1 1 40%;max-width:100%;max-height:40%;box-sizing:border-box}.flex-gt-lg-45{flex:1 1 45%;max-width:45%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-45{flex:1 1 45%;max-width:45%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-lg-45{flex:1 1 45%;max-width:100%;max-height:45%;box-sizing:border-box}.layout-row>.flex-gt-lg-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-lg-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-lg-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-lg-row>.flex-gt-lg-45{flex:1 1 45%;max-width:45%;max-height:100%;box-sizing:border-box}.layout-gt-lg-column>.flex-gt-lg-45{flex:1 1 45%;max-width:100%;max-height:45%;box-sizing:border-box}.flex-gt-lg-50{flex:1 1 50%;max-width:50%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-50{flex:1 1 50%;max-width:50%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-lg-50{flex:1 1 50%;max-width:100%;max-height:50%;box-sizing:border-box}.layout-row>.flex-gt-lg-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-lg-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-lg-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-lg-row>.flex-gt-lg-50{flex:1 1 50%;max-width:50%;max-height:100%;box-sizing:border-box}.layout-gt-lg-column>.flex-gt-lg-50{flex:1 1 50%;max-width:100%;max-height:50%;box-sizing:border-box}.flex-gt-lg-55{flex:1 1 55%;max-width:55%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-55{flex:1 1 55%;max-width:55%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-lg-55{flex:1 1 55%;max-width:100%;max-height:55%;box-sizing:border-box}.layout-row>.flex-gt-lg-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-lg-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-lg-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-lg-row>.flex-gt-lg-55{flex:1 1 55%;max-width:55%;max-height:100%;box-sizing:border-box}.layout-gt-lg-column>.flex-gt-lg-55{flex:1 1 55%;max-width:100%;max-height:55%;box-sizing:border-box}.flex-gt-lg-60{flex:1 1 60%;max-width:60%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-60{flex:1 1 60%;max-width:60%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-lg-60{flex:1 1 60%;max-width:100%;max-height:60%;box-sizing:border-box}.layout-row>.flex-gt-lg-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-lg-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-lg-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-lg-row>.flex-gt-lg-60{flex:1 1 60%;max-width:60%;max-height:100%;box-sizing:border-box}.layout-gt-lg-column>.flex-gt-lg-60{flex:1 1 60%;max-width:100%;max-height:60%;box-sizing:border-box}.flex-gt-lg-65{flex:1 1 65%;max-width:65%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-65{flex:1 1 65%;max-width:65%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-lg-65{flex:1 1 65%;max-width:100%;max-height:65%;box-sizing:border-box}.layout-row>.flex-gt-lg-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-lg-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-lg-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-lg-row>.flex-gt-lg-65{flex:1 1 65%;max-width:65%;max-height:100%;box-sizing:border-box}.layout-gt-lg-column>.flex-gt-lg-65{flex:1 1 65%;max-width:100%;max-height:65%;box-sizing:border-box}.flex-gt-lg-70{flex:1 1 70%;max-width:70%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-70{flex:1 1 70%;max-width:70%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-lg-70{flex:1 1 70%;max-width:100%;max-height:70%;box-sizing:border-box}.layout-row>.flex-gt-lg-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-lg-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-lg-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-lg-row>.flex-gt-lg-70{flex:1 1 70%;max-width:70%;max-height:100%;box-sizing:border-box}.layout-gt-lg-column>.flex-gt-lg-70{flex:1 1 70%;max-width:100%;max-height:70%;box-sizing:border-box}.flex-gt-lg-75{flex:1 1 75%;max-width:75%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-75{flex:1 1 75%;max-width:75%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-lg-75{flex:1 1 75%;max-width:100%;max-height:75%;box-sizing:border-box}.layout-row>.flex-gt-lg-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-lg-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-lg-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-lg-row>.flex-gt-lg-75{flex:1 1 75%;max-width:75%;max-height:100%;box-sizing:border-box}.layout-gt-lg-column>.flex-gt-lg-75{flex:1 1 75%;max-width:100%;max-height:75%;box-sizing:border-box}.flex-gt-lg-80{flex:1 1 80%;max-width:80%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-80{flex:1 1 80%;max-width:80%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-lg-80{flex:1 1 80%;max-width:100%;max-height:80%;box-sizing:border-box}.layout-row>.flex-gt-lg-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-lg-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-lg-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-lg-row>.flex-gt-lg-80{flex:1 1 80%;max-width:80%;max-height:100%;box-sizing:border-box}.layout-gt-lg-column>.flex-gt-lg-80{flex:1 1 80%;max-width:100%;max-height:80%;box-sizing:border-box}.flex-gt-lg-85{flex:1 1 85%;max-width:85%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-85{flex:1 1 85%;max-width:85%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-lg-85{flex:1 1 85%;max-width:100%;max-height:85%;box-sizing:border-box}.layout-row>.flex-gt-lg-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-lg-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-lg-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-lg-row>.flex-gt-lg-85{flex:1 1 85%;max-width:85%;max-height:100%;box-sizing:border-box}.layout-gt-lg-column>.flex-gt-lg-85{flex:1 1 85%;max-width:100%;max-height:85%;box-sizing:border-box}.flex-gt-lg-90{flex:1 1 90%;max-width:90%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-90{flex:1 1 90%;max-width:90%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-lg-90{flex:1 1 90%;max-width:100%;max-height:90%;box-sizing:border-box}.layout-row>.flex-gt-lg-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-lg-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-lg-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-lg-row>.flex-gt-lg-90{flex:1 1 90%;max-width:90%;max-height:100%;box-sizing:border-box}.layout-gt-lg-column>.flex-gt-lg-90{flex:1 1 90%;max-width:100%;max-height:90%;box-sizing:border-box}.flex-gt-lg-95{flex:1 1 95%;max-width:95%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-95{flex:1 1 95%;max-width:95%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-lg-95{flex:1 1 95%;max-width:100%;max-height:95%;box-sizing:border-box}.layout-row>.flex-gt-lg-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-lg-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-lg-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-lg-row>.flex-gt-lg-95{flex:1 1 95%;max-width:95%;max-height:100%;box-sizing:border-box}.layout-gt-lg-column>.flex-gt-lg-95{flex:1 1 95%;max-width:100%;max-height:95%;box-sizing:border-box}.flex-gt-lg-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-lg-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-lg-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-lg-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-lg-row>.flex-gt-lg-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-gt-lg-column>.flex-gt-lg-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-gt-lg-row>.flex-gt-lg-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-gt-lg-row>.flex-gt-lg-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-gt-lg-row>.flex{min-width:0}.layout-gt-lg-column>.flex-gt-lg-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-gt-lg-column>.flex-gt-lg-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-lg-column>.flex{min-height:0}.layout-gt-lg,.layout-gt-lg-column,.layout-gt-lg-row{box-sizing:border-box;display:-webkit-box;display:-webkit-flex;display:-moz-box;display:-ms-flexbox;display:flex}.layout-gt-lg-column{flex-direction:column}.layout-gt-lg-row{flex-direction:row}.flex-order-xl--20{order:-20}.flex-order-xl--19{order:-19}.flex-order-xl--18{order:-18}.flex-order-xl--17{order:-17}.flex-order-xl--16{order:-16}.flex-order-xl--15{order:-15}.flex-order-xl--14{order:-14}.flex-order-xl--13{order:-13}.flex-order-xl--12{order:-12}.flex-order-xl--11{order:-11}.flex-order-xl--10{order:-10}.flex-order-xl--9{order:-9}.flex-order-xl--8{order:-8}.flex-order-xl--7{order:-7}.flex-order-xl--6{order:-6}.flex-order-xl--5{order:-5}.flex-order-xl--4{order:-4}.flex-order-xl--3{order:-3}.flex-order-xl--2{order:-2}.flex-order-xl--1{order:-1}.flex-order-xl-0{order:0}.flex-order-xl-1{order:1}.flex-order-xl-2{order:2}.flex-order-xl-3{order:3}.flex-order-xl-4{order:4}.flex-order-xl-5{order:5}.flex-order-xl-6{order:6}.flex-order-xl-7{order:7}.flex-order-xl-8{order:8}.flex-order-xl-9{order:9}.flex-order-xl-10{order:10}.flex-order-xl-11{order:11}.flex-order-xl-12{order:12}.flex-order-xl-13{order:13}.flex-order-xl-14{order:14}.flex-order-xl-15{order:15}.flex-order-xl-16{order:16}.flex-order-xl-17{order:17}.flex-order-xl-18{order:18}.flex-order-xl-19{order:19}.flex-order-xl-20{order:20}.flex-offset-xl-0,.offset-xl-0{margin-left:0}[dir=rtl] .flex-offset-xl-0,[dir=rtl] .offset-xl-0{margin-left:auto;margin-right:0}.flex-offset-xl-5,.offset-xl-5{margin-left:5%}[dir=rtl] .flex-offset-xl-5,[dir=rtl] .offset-xl-5{margin-left:auto;margin-right:5%}.flex-offset-xl-10,.offset-xl-10{margin-left:10%}[dir=rtl] .flex-offset-xl-10,[dir=rtl] .offset-xl-10{margin-left:auto;margin-right:10%}.flex-offset-xl-15,.offset-xl-15{margin-left:15%}[dir=rtl] .flex-offset-xl-15,[dir=rtl] .offset-xl-15{margin-left:auto;margin-right:15%}.flex-offset-xl-20,.offset-xl-20{margin-left:20%}[dir=rtl] .flex-offset-xl-20,[dir=rtl] .offset-xl-20{margin-left:auto;margin-right:20%}.flex-offset-xl-25,.offset-xl-25{margin-left:25%}[dir=rtl] .flex-offset-xl-25,[dir=rtl] .offset-xl-25{margin-left:auto;margin-right:25%}.flex-offset-xl-30,.offset-xl-30{margin-left:30%}[dir=rtl] .flex-offset-xl-30,[dir=rtl] .offset-xl-30{margin-left:auto;margin-right:30%}.flex-offset-xl-35,.offset-xl-35{margin-left:35%}[dir=rtl] .flex-offset-xl-35,[dir=rtl] .offset-xl-35{margin-left:auto;margin-right:35%}.flex-offset-xl-40,.offset-xl-40{margin-left:40%}[dir=rtl] .flex-offset-xl-40,[dir=rtl] .offset-xl-40{margin-left:auto;margin-right:40%}.flex-offset-xl-45,.offset-xl-45{margin-left:45%}[dir=rtl] .flex-offset-xl-45,[dir=rtl] .offset-xl-45{margin-left:auto;margin-right:45%}.flex-offset-xl-50,.offset-xl-50{margin-left:50%}[dir=rtl] .flex-offset-xl-50,[dir=rtl] .offset-xl-50{margin-left:auto;margin-right:50%}.flex-offset-xl-55,.offset-xl-55{margin-left:55%}[dir=rtl] .flex-offset-xl-55,[dir=rtl] .offset-xl-55{margin-left:auto;margin-right:55%}.flex-offset-xl-60,.offset-xl-60{margin-left:60%}[dir=rtl] .flex-offset-xl-60,[dir=rtl] .offset-xl-60{margin-left:auto;margin-right:60%}.flex-offset-xl-65,.offset-xl-65{margin-left:65%}[dir=rtl] .flex-offset-xl-65,[dir=rtl] .offset-xl-65{margin-left:auto;margin-right:65%}.flex-offset-xl-70,.offset-xl-70{margin-left:70%}[dir=rtl] .flex-offset-xl-70,[dir=rtl] .offset-xl-70{margin-left:auto;margin-right:70%}.flex-offset-xl-75,.offset-xl-75{margin-left:75%}[dir=rtl] .flex-offset-xl-75,[dir=rtl] .offset-xl-75{margin-left:auto;margin-right:75%}.flex-offset-xl-80,.offset-xl-80{margin-left:80%}[dir=rtl] .flex-offset-xl-80,[dir=rtl] .offset-xl-80{margin-left:auto;margin-right:80%}.flex-offset-xl-85,.offset-xl-85{margin-left:85%}[dir=rtl] .flex-offset-xl-85,[dir=rtl] .offset-xl-85{margin-left:auto;margin-right:85%}.flex-offset-xl-90,.offset-xl-90{margin-left:90%}[dir=rtl] .flex-offset-xl-90,[dir=rtl] .offset-xl-90{margin-left:auto;margin-right:90%}.flex-offset-xl-95,.offset-xl-95{margin-left:95%}[dir=rtl] .flex-offset-xl-95,[dir=rtl] .offset-xl-95{margin-left:auto;margin-right:95%}.flex-offset-xl-33,.offset-xl-33{margin-left:calc(100% / 3)}.flex-offset-xl-66,.offset-xl-66{margin-left:calc(200% / 3)}[dir=rtl] .flex-offset-xl-66,[dir=rtl] .offset-xl-66{margin-left:auto;margin-right:calc(200% / 3)}.layout-align-xl,.layout-align-xl-start-stretch{justify-content:flex-start;align-content:stretch;align-items:stretch}.layout-align-xl-start,.layout-align-xl-start-center,.layout-align-xl-start-end,.layout-align-xl-start-start,.layout-align-xl-start-stretch{justify-content:flex-start}.layout-align-xl-center,.layout-align-xl-center-center,.layout-align-xl-center-end,.layout-align-xl-center-start,.layout-align-xl-center-stretch{justify-content:center}.layout-align-xl-end,.layout-align-xl-end-center,.layout-align-xl-end-end,.layout-align-xl-end-start,.layout-align-xl-end-stretch{justify-content:flex-end}.layout-align-xl-space-around,.layout-align-xl-space-around-center,.layout-align-xl-space-around-end,.layout-align-xl-space-around-start,.layout-align-xl-space-around-stretch{justify-content:space-around}.layout-align-xl-space-between,.layout-align-xl-space-between-center,.layout-align-xl-space-between-end,.layout-align-xl-space-between-start,.layout-align-xl-space-between-stretch{justify-content:space-between}.layout-align-xl-center-start,.layout-align-xl-end-start,.layout-align-xl-space-around-start,.layout-align-xl-space-between-start,.layout-align-xl-start-start{align-items:flex-start;align-content:flex-start}.layout-align-xl-center-center,.layout-align-xl-end-center,.layout-align-xl-space-around-center,.layout-align-xl-space-between-center,.layout-align-xl-start-center{align-items:center;align-content:center;max-width:100%}.layout-align-xl-center-center>*,.layout-align-xl-end-center>*,.layout-align-xl-space-around-center>*,.layout-align-xl-space-between-center>*,.layout-align-xl-start-center>*{max-width:100%;box-sizing:border-box}.layout-align-xl-center-end,.layout-align-xl-end-end,.layout-align-xl-space-around-end,.layout-align-xl-space-between-end,.layout-align-xl-start-end{align-items:flex-end;align-content:flex-end}.layout-align-xl-center-stretch,.layout-align-xl-end-stretch,.layout-align-xl-space-around-stretch,.layout-align-xl-space-between-stretch,.layout-align-xl-start-stretch{align-items:stretch;align-content:stretch}.flex-xl{flex:1;box-sizing:border-box}.flex-xl-grow{flex:1 1 100%;box-sizing:border-box}.flex-xl-initial{flex:0 1 auto;box-sizing:border-box}.flex-xl-auto{flex:1 1 auto;box-sizing:border-box}.flex-xl-none{flex:0 0 auto;box-sizing:border-box}.flex-xl-noshrink{flex:1 0 auto;box-sizing:border-box}.flex-xl-nogrow{flex:0 1 auto;box-sizing:border-box}.flex-xl-0{flex:1 1 0%;max-width:0%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-0{flex:1 1 0%;max-width:0%;max-height:100%;box-sizing:border-box;min-width:0}.layout-column>.flex-xl-0{flex:1 1 0%;max-width:100%;max-height:0%;box-sizing:border-box}.layout-row>.flex-xl-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xl-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-xl-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-xl-row>.flex-xl-0{flex:1 1 0%;max-width:0%;max-height:100%;box-sizing:border-box;min-width:0}.layout-xl-column>.flex-xl-0{flex:1 1 0%;max-width:100%;max-height:0%;box-sizing:border-box;min-height:0}.flex-xl-5{flex:1 1 5%;max-width:5%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-5{flex:1 1 5%;max-width:5%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xl-5{flex:1 1 5%;max-width:100%;max-height:5%;box-sizing:border-box}.layout-row>.flex-xl-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xl-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-xl-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-xl-row>.flex-xl-5{flex:1 1 5%;max-width:5%;max-height:100%;box-sizing:border-box}.layout-xl-column>.flex-xl-5{flex:1 1 5%;max-width:100%;max-height:5%;box-sizing:border-box}.flex-xl-10{flex:1 1 10%;max-width:10%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-10{flex:1 1 10%;max-width:10%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xl-10{flex:1 1 10%;max-width:100%;max-height:10%;box-sizing:border-box}.layout-row>.flex-xl-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xl-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-xl-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-xl-row>.flex-xl-10{flex:1 1 10%;max-width:10%;max-height:100%;box-sizing:border-box}.layout-xl-column>.flex-xl-10{flex:1 1 10%;max-width:100%;max-height:10%;box-sizing:border-box}.flex-xl-15{flex:1 1 15%;max-width:15%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-15{flex:1 1 15%;max-width:15%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xl-15{flex:1 1 15%;max-width:100%;max-height:15%;box-sizing:border-box}.layout-row>.flex-xl-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xl-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-xl-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-xl-row>.flex-xl-15{flex:1 1 15%;max-width:15%;max-height:100%;box-sizing:border-box}.layout-xl-column>.flex-xl-15{flex:1 1 15%;max-width:100%;max-height:15%;box-sizing:border-box}.flex-xl-20{flex:1 1 20%;max-width:20%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-20{flex:1 1 20%;max-width:20%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xl-20{flex:1 1 20%;max-width:100%;max-height:20%;box-sizing:border-box}.layout-row>.flex-xl-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xl-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-xl-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-xl-row>.flex-xl-20{flex:1 1 20%;max-width:20%;max-height:100%;box-sizing:border-box}.layout-xl-column>.flex-xl-20{flex:1 1 20%;max-width:100%;max-height:20%;box-sizing:border-box}.flex-xl-25{flex:1 1 25%;max-width:25%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-25{flex:1 1 25%;max-width:25%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xl-25{flex:1 1 25%;max-width:100%;max-height:25%;box-sizing:border-box}.layout-row>.flex-xl-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xl-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-xl-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-xl-row>.flex-xl-25{flex:1 1 25%;max-width:25%;max-height:100%;box-sizing:border-box}.layout-xl-column>.flex-xl-25{flex:1 1 25%;max-width:100%;max-height:25%;box-sizing:border-box}.flex-xl-30{flex:1 1 30%;max-width:30%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-30{flex:1 1 30%;max-width:30%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xl-30{flex:1 1 30%;max-width:100%;max-height:30%;box-sizing:border-box}.layout-row>.flex-xl-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xl-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-xl-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-xl-row>.flex-xl-30{flex:1 1 30%;max-width:30%;max-height:100%;box-sizing:border-box}.layout-xl-column>.flex-xl-30{flex:1 1 30%;max-width:100%;max-height:30%;box-sizing:border-box}.flex-xl-35{flex:1 1 35%;max-width:35%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-35{flex:1 1 35%;max-width:35%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xl-35{flex:1 1 35%;max-width:100%;max-height:35%;box-sizing:border-box}.layout-row>.flex-xl-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xl-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-xl-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-xl-row>.flex-xl-35{flex:1 1 35%;max-width:35%;max-height:100%;box-sizing:border-box}.layout-xl-column>.flex-xl-35{flex:1 1 35%;max-width:100%;max-height:35%;box-sizing:border-box}.flex-xl-40{flex:1 1 40%;max-width:40%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-40{flex:1 1 40%;max-width:40%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xl-40{flex:1 1 40%;max-width:100%;max-height:40%;box-sizing:border-box}.layout-row>.flex-xl-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xl-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-xl-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-xl-row>.flex-xl-40{flex:1 1 40%;max-width:40%;max-height:100%;box-sizing:border-box}.layout-xl-column>.flex-xl-40{flex:1 1 40%;max-width:100%;max-height:40%;box-sizing:border-box}.flex-xl-45{flex:1 1 45%;max-width:45%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-45{flex:1 1 45%;max-width:45%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xl-45{flex:1 1 45%;max-width:100%;max-height:45%;box-sizing:border-box}.layout-row>.flex-xl-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xl-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-xl-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-xl-row>.flex-xl-45{flex:1 1 45%;max-width:45%;max-height:100%;box-sizing:border-box}.layout-xl-column>.flex-xl-45{flex:1 1 45%;max-width:100%;max-height:45%;box-sizing:border-box}.flex-xl-50{flex:1 1 50%;max-width:50%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-50{flex:1 1 50%;max-width:50%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xl-50{flex:1 1 50%;max-width:100%;max-height:50%;box-sizing:border-box}.layout-row>.flex-xl-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xl-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-xl-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-xl-row>.flex-xl-50{flex:1 1 50%;max-width:50%;max-height:100%;box-sizing:border-box}.layout-xl-column>.flex-xl-50{flex:1 1 50%;max-width:100%;max-height:50%;box-sizing:border-box}.flex-xl-55{flex:1 1 55%;max-width:55%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-55{flex:1 1 55%;max-width:55%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xl-55{flex:1 1 55%;max-width:100%;max-height:55%;box-sizing:border-box}.layout-row>.flex-xl-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xl-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-xl-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-xl-row>.flex-xl-55{flex:1 1 55%;max-width:55%;max-height:100%;box-sizing:border-box}.layout-xl-column>.flex-xl-55{flex:1 1 55%;max-width:100%;max-height:55%;box-sizing:border-box}.flex-xl-60{flex:1 1 60%;max-width:60%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-60{flex:1 1 60%;max-width:60%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xl-60{flex:1 1 60%;max-width:100%;max-height:60%;box-sizing:border-box}.layout-row>.flex-xl-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xl-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-xl-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-xl-row>.flex-xl-60{flex:1 1 60%;max-width:60%;max-height:100%;box-sizing:border-box}.layout-xl-column>.flex-xl-60{flex:1 1 60%;max-width:100%;max-height:60%;box-sizing:border-box}.flex-xl-65{flex:1 1 65%;max-width:65%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-65{flex:1 1 65%;max-width:65%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xl-65{flex:1 1 65%;max-width:100%;max-height:65%;box-sizing:border-box}.layout-row>.flex-xl-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xl-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-xl-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-xl-row>.flex-xl-65{flex:1 1 65%;max-width:65%;max-height:100%;box-sizing:border-box}.layout-xl-column>.flex-xl-65{flex:1 1 65%;max-width:100%;max-height:65%;box-sizing:border-box}.flex-xl-70{flex:1 1 70%;max-width:70%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-70{flex:1 1 70%;max-width:70%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xl-70{flex:1 1 70%;max-width:100%;max-height:70%;box-sizing:border-box}.layout-row>.flex-xl-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xl-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-xl-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-xl-row>.flex-xl-70{flex:1 1 70%;max-width:70%;max-height:100%;box-sizing:border-box}.layout-xl-column>.flex-xl-70{flex:1 1 70%;max-width:100%;max-height:70%;box-sizing:border-box}.flex-xl-75{flex:1 1 75%;max-width:75%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-75{flex:1 1 75%;max-width:75%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xl-75{flex:1 1 75%;max-width:100%;max-height:75%;box-sizing:border-box}.layout-row>.flex-xl-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xl-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-xl-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-xl-row>.flex-xl-75{flex:1 1 75%;max-width:75%;max-height:100%;box-sizing:border-box}.layout-xl-column>.flex-xl-75{flex:1 1 75%;max-width:100%;max-height:75%;box-sizing:border-box}.flex-xl-80{flex:1 1 80%;max-width:80%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-80{flex:1 1 80%;max-width:80%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xl-80{flex:1 1 80%;max-width:100%;max-height:80%;box-sizing:border-box}.layout-row>.flex-xl-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xl-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-xl-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-xl-row>.flex-xl-80{flex:1 1 80%;max-width:80%;max-height:100%;box-sizing:border-box}.layout-xl-column>.flex-xl-80{flex:1 1 80%;max-width:100%;max-height:80%;box-sizing:border-box}.flex-xl-85{flex:1 1 85%;max-width:85%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-85{flex:1 1 85%;max-width:85%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xl-85{flex:1 1 85%;max-width:100%;max-height:85%;box-sizing:border-box}.layout-row>.flex-xl-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xl-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-xl-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-xl-row>.flex-xl-85{flex:1 1 85%;max-width:85%;max-height:100%;box-sizing:border-box}.layout-xl-column>.flex-xl-85{flex:1 1 85%;max-width:100%;max-height:85%;box-sizing:border-box}.flex-xl-90{flex:1 1 90%;max-width:90%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-90{flex:1 1 90%;max-width:90%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xl-90{flex:1 1 90%;max-width:100%;max-height:90%;box-sizing:border-box}.layout-row>.flex-xl-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xl-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-xl-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-xl-row>.flex-xl-90{flex:1 1 90%;max-width:90%;max-height:100%;box-sizing:border-box}.layout-xl-column>.flex-xl-90{flex:1 1 90%;max-width:100%;max-height:90%;box-sizing:border-box}.flex-xl-95{flex:1 1 95%;max-width:95%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-95{flex:1 1 95%;max-width:95%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xl-95{flex:1 1 95%;max-width:100%;max-height:95%;box-sizing:border-box}.layout-row>.flex-xl-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xl-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-xl-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-xl-row>.flex-xl-95{flex:1 1 95%;max-width:95%;max-height:100%;box-sizing:border-box}.layout-xl-column>.flex-xl-95{flex:1 1 95%;max-width:100%;max-height:95%;box-sizing:border-box}.flex-xl-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xl-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xl-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-xl-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-xl-row>.flex-xl-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-xl-column>.flex-xl-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-xl-row>.flex-xl-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-xl-row>.flex-xl-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-xl-row>.flex{min-width:0}.layout-xl-column>.flex-xl-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-xl-column>.flex-xl-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-xl-column>.flex{min-height:0}.layout-xl,.layout-xl-column,.layout-xl-row{box-sizing:border-box;display:-webkit-box;display:-webkit-flex;display:-moz-box;display:-ms-flexbox;display:flex}.layout-xl-column{flex-direction:column}.layout-xl-row{flex-direction:row}.hide-gt-lg:not(.show-gt-xs):not(.show-gt-sm):not(.show-gt-md):not(.show-gt-lg):not(.show-xl):not(.show),.hide-gt-md:not(.show-gt-xs):not(.show-gt-sm):not(.show-gt-md):not(.show-gt-lg):not(.show-xl):not(.show),.hide-gt-sm:not(.show-gt-xs):not(.show-gt-sm):not(.show-gt-md):not(.show-gt-lg):not(.show-xl):not(.show),.hide-gt-xs:not(.show-gt-xs):not(.show-gt-sm):not(.show-gt-md):not(.show-gt-lg):not(.show-xl):not(.show),.hide:not(.show-gt-xs):not(.show-gt-sm):not(.show-gt-md):not(.show-gt-lg):not(.show-xl):not(.show){display:none}.hide-xl:not(.show-xl):not(.show-gt-lg):not(.show-gt-md):not(.show-gt-sm):not(.show-gt-xs):not(.show){display:none}}@media print{.hide-print:not(.show-print):not(.show){display:none!important}}md-menu[md-nest-level='1']{margin:0}md-menu[md-nest-level='1'] .md-button{display:inline-block;border-radius:0;margin:auto 0;font-size:15px;text-transform:none;font-weight:400;height:100%;padding-left:16px;padding-right:16px;width:100%}*{text-rendering:optimizeLegibility;-o-text-rendering:optimizeLegibility;-ms-text-rendering:optimizeLegibility;-moz-text-rendering:optimizeLegibility;-webkit-text-rendering:optimizeLegibility;-webkit-tap-highlight-color:transparent;box-sizing:border-box}:after,:before{box-sizing:border-box}:focus{outline:0}:not(md-input-container)>button,:not(md-input-container)>input[type=button],:not(md-input-container)>input[type=email],:not(md-input-container)>input[type=image],:not(md-input-container)>input[type=password],:not(md-input-container)>input[type=search],:not(md-input-container)>input[type=submit],:not(md-input-container)>input[type=tel],:not(md-input-container)>input[type=text],:not(md-input-container)>textarea{-webkit-border-radius:0;-moz-border-radius:0;border-radius:0;appearance:none;-moz-appearance:none;-webkit-appearance:none;border:none;padding:0;margin:0}:not(md-input-container)>button,:not(md-input-container)>input[type=button],:not(md-input-container)>input[type=submit]{background:0 0}button{border-radius:0;font-family:inherit;font-size:inherit;padding:0;margin:0;appearance:none;-moz-appearance:none;-webkit-appearance:none}[layout]>*{min-height:auto;min-height:initial}md-card>:not(md-card-content) img,md-card>img{height:inherit;height:initial}.md-datepicker-calendar-pane *{box-sizing:initial}md-autocomplete-wrap>input[type=search]{background:#fff;padding:0 15px!important}md-backdrop.md-opaque{background-color:rgba(33,33,33,.48)!important}md-card md-card-header md-card-avatar md-icon{width:40px;height:40px}md-checkbox.no-label{margin:0}md-chip .md-chip-remove md-icon{margin-left:2px}md-chip .md-chip-remove md-icon svg{width:18px;height:18px;max-width:18px;max-height:18px;margin:4px}md-datepicker .md-datepicker-button{padding:0!important;margin:0!important;vertical-align:middle}md-datepicker .md-datepicker-input-container{margin-left:0}.md-inline-form md-datepicker{margin-top:14px}md-dialog md-dialog-content{padding:32px 24px 24px 24px}md-dialog md-dialog-actions{min-height:64px;padding-top:8px;padding-bottom:8px}md-dialog md-dialog-actions .md-button{margin:0 8px}md-input-container.no-errors-spacer .md-errors-spacer{display:none}md-input-container .input-hint{position:absolute;right:auto;bottom:7px;left:2px;font-size:12px;line-height:14px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-input-container.md-icon-left .input-hint{left:38px}md-list-item .md-list-item-text p{font-size:13px!important}.md-menu,md-menu{padding:0}md-menu-content.md-menu-bar-menu.md-dense{padding:8px 0}md-menu-content.md-menu-bar-menu.md-dense .md-button,md-menu-content.md-menu-bar-menu.md-dense md-menu-item{height:40px;line-height:40px}md-menu-content.md-menu-bar-menu.md-dense .md-button.md-indent>md-icon,md-menu-content.md-menu-bar-menu.md-dense md-menu-item.md-indent>md-icon{top:8px}.md-open-menu-container md-menu-content md-menu-item.selected{opacity:.4}md-menu-content md-menu-item .md-button{text-align:left}md-select.simplified{margin:0 8px}md-select.simplified .md-select-value{border:none!important;box-sizing:border-box;padding:0}md-select.simplified .md-select-value :first-child{transform:none;height:auto}md-select.simplified .md-select-value .md-select-icon{transform:none;font-size:16px}md-select.simplified .md-select-value .md-select-icon:after{top:1px}md-select[multiple] md-select-value>:first-child{display:flex}md-select[multiple] md-select-value>:first-child>:first-child{flex:0}md-select[multiple] md-select-value>:first-child .md-container{padding-right:6px}md-select[multiple] md-select-value>:first-child .md-container:first-of-type{padding-right:0}md-select-menu md-select-header{position:relative;display:flex;align-items:center;width:auto;height:48px;padding-left:10.667px;box-shadow:0 1px 0 0 rgba(0,0,0,.1),0 0 0 0 rgba(0,0,0,.14),0 0 0 0 rgba(0,0,0,.12);cursor:pointer}md-select-menu md-select-header input[type=search]{border:none;outline:0;height:100%;width:100%;padding:0}md-sidenav{-webkit-overflow-scrolling:touch}md-toolbar.colored-toolbar{color:rgba(255,255,255,.87)}md-toolbar.colored-toolbar md-menu-bar md-menu._md-open>button{background:rgba(0,0,0,.12)}md-toolbar.colored-toolbar md-menu._md-open>button{background:rgba(0,0,0,.12)}md-toolbar.colored-toolbar input{color:rgba(255,255,255,.87)!important}md-progress-circular[disabled]{visibility:hidden}body,html{overflow:hidden!important}#main{position:fixed;top:0;left:0;width:100vw;height:100vh}body.boxed{background:#3f4450}body.boxed #main{overflow:hidden!important;width:100%;max-width:1280px;margin:0 auto;box-shadow:0 0 12px rgba(0,0,0,.45)}#layout-content-only{position:relative;height:100%;max-height:100%}#layout-content-only #content{position:absolute;top:0;right:0;bottom:0;left:0}#layout-content-with-toolbar{position:relative;height:100%;max-height:100%}#layout-content-with-toolbar #content{position:absolute;top:64px;right:0;bottom:0;left:0}#layout-vertical-navigation{width:100%;height:100%;max-height:100%}#layout-vertical-navigation #content-container{position:relative;overflow:hidden;width:100%;height:100%}#layout-vertical-navigation #content-container #content{width:100%;height:100%;overflow:auto}#layout-vertical-navigation-fullwidth-toolbar{height:100%;max-height:100%}#layout-vertical-navigation-fullwidth-toolbar #main-container{position:relative}#layout-vertical-navigation-fullwidth-toolbar #main-container #content-container{position:relative;overflow:hidden}#layout-vertical-navigation-fullwidth-toolbar #main-container #content-container #content{position:absolute;top:0;right:0;bottom:0;left:0}#layout-vertical-navigation-fullwidth-toolbar-2{height:100%;max-height:100%}#layout-vertical-navigation-fullwidth-toolbar-2 #main-container{position:relative}#layout-vertical-navigation-fullwidth-toolbar-2 #main-container #content-container{position:relative;overflow:hidden}#layout-vertical-navigation-fullwidth-toolbar-2 #main-container #content-container #content{position:absolute;top:0;right:0;bottom:0;left:0}#layout-horizontal-navigation{height:100%;max-height:100%}#layout-horizontal-navigation #content-container{position:relative;overflow:hidden}#layout-horizontal-navigation #content-container #content{position:absolute;top:0;right:0;bottom:0;left:0}.page-layout{position:relative;overflow:hidden}.page-layout .top-bg{position:absolute;z-index:1;top:0;right:0;left:0;height:200px;background-image:url(/assets/images/backgrounds/header-bg.png);background-size:cover}.page-layout md-backdrop{z-index:50}.page-layout>.header .breadcrumb{margin-bottom:16px;font-weight:500;color:rgba(0,0,0,.54)}.page-layout>.header .breadcrumb md-icon{margin:0}.page-layout>.header .breadcrumb .separator{margin:0 8px}.page-layout>.header .title{font-size:34px}.page-layout.carded{min-height:100%;height:100%}.page-layout.carded.fullwidth.single-scroll{height:auto}.page-layout.carded.fullwidth.single-scroll>.center .content-card .content{overflow:hidden}.page-layout.carded.fullwidth>.center{position:relative;z-index:2;margin-left:32px;margin-right:32px}.page-layout.carded.fullwidth>.center .header{height:136px;min-height:136px;max-height:136px;padding:24px}.page-layout.carded.fullwidth>.center .content-card{background:#fff;box-shadow:0 4px 5px -2px rgba(0,0,0,.2),0 7px 10px 1px rgba(0,0,0,.14),0 2px 16px 1px rgba(0,0,0,.12);overflow:hidden}.page-layout.carded.fullwidth>.center .content-card .toolbar{padding:8px 24px;height:64px;min-height:64px;max-height:64px;border-bottom:1px solid rgba(0,0,0,.12)}.page-layout.carded.fullwidth>.center .content-card .content{padding:24px;background:#fff}.page-layout.carded.left-sidenav.single-scroll{height:auto}.page-layout.carded.left-sidenav.single-scroll>.center .content-card .content{overflow:hidden}.page-layout.carded.left-sidenav>.sidenav{width:240px;min-width:240px;max-width:240px;box-shadow:0 4px 5px -2px rgba(0,0,0,.2),0 7px 10px 1px rgba(0,0,0,.14),0 2px 16px 1px rgba(0,0,0,.12);z-index:51}.page-layout.carded.left-sidenav>.sidenav .header{height:200px;min-height:200px;max-height:200px;padding:24px}.page-layout.carded.left-sidenav>.sidenav .content{background:0 0;padding:24px}.page-layout.carded.left-sidenav>.sidenav.md-locked-open{width:220px;min-width:220px;max-width:220px;z-index:2;background:0 0;box-shadow:none}.page-layout.carded.left-sidenav>.sidenav.md-locked-open+.center{margin-left:0}.page-layout.carded.left-sidenav>.sidenav:not(.md-locked-open) .header{border-bottom:1px solid rgba(0,0,0,.12)}.page-layout.carded.left-sidenav>.sidenav:not(.md-locked-open) .content{overflow:hidden}.page-layout.carded.left-sidenav>.center{position:relative;z-index:2;margin-left:32px;margin-right:32px}.page-layout.carded.left-sidenav>.center .header{height:136px;min-height:136px;max-height:136px;padding:24px}.page-layout.carded.left-sidenav>.center .content-card{background:#fff;box-shadow:0 4px 5px -2px rgba(0,0,0,.2),0 7px 10px 1px rgba(0,0,0,.14),0 2px 16px 1px rgba(0,0,0,.12);overflow:hidden}.page-layout.carded.left-sidenav>.center .content-card .toolbar{padding:8px 24px;height:64px;min-height:64px;max-height:64px;border-bottom:1px solid rgba(0,0,0,.12)}.page-layout.carded.left-sidenav>.center .content-card .toolbar .sidenav-toggle{margin:0 8px 0 0!important;padding:0!important;border-radius:0}.page-layout.carded.left-sidenav>.center .content-card .content{padding:24px;background:#fff}.page-layout.carded.right-sidenav.single-scroll{height:auto}.page-layout.carded.right-sidenav.single-scroll>.center .content-card .content{overflow:hidden}.page-layout.carded.right-sidenav>.sidenav{width:240px;min-width:240px;max-width:240px;box-shadow:0 4px 5px -2px rgba(0,0,0,.2),0 7px 10px 1px rgba(0,0,0,.14),0 2px 16px 1px rgba(0,0,0,.12);z-index:51}.page-layout.carded.right-sidenav>.sidenav .header{height:200px;min-height:200px;max-height:200px;padding:24px 24px 24px 0}.page-layout.carded.right-sidenav>.sidenav .content{background:0 0;padding:24px 24px 24px 0}.page-layout.carded.right-sidenav>.sidenav.md-locked-open{width:196px;min-width:196px;max-width:196px;z-index:2;background:0 0;box-shadow:none}.page-layout.carded.right-sidenav>.sidenav:not(.md-locked-open) .header{padding:24px;border-bottom:1px solid rgba(0,0,0,.12)}.page-layout.carded.right-sidenav>.sidenav:not(.md-locked-open) .content{overflow:hidden;padding:24px}.page-layout.carded.right-sidenav>.center{position:relative;z-index:2;margin-left:32px;margin-right:32px}.page-layout.carded.right-sidenav>.center .header{height:136px;min-height:136px;max-height:136px;padding:24px}.page-layout.carded.right-sidenav>.center .content-card{background:#fff;box-shadow:0 4px 5px -2px rgba(0,0,0,.2),0 7px 10px 1px rgba(0,0,0,.14),0 2px 16px 1px rgba(0,0,0,.12);overflow:hidden}.page-layout.carded.right-sidenav>.center .content-card .toolbar{padding:8px 24px;height:64px;min-height:64px;max-height:64px;border-bottom:1px solid rgba(0,0,0,.12)}.page-layout.carded.right-sidenav>.center .content-card .toolbar .sidenav-toggle{margin:0 0 0 8px!important;padding:0!important;border-radius:0}.page-layout.carded.right-sidenav>.center .content-card .content{padding:24px;background:#fff}.page-layout.simple.fullwidth,.page-layout.simple.inner-sidenav{min-height:100%}.page-layout.simple.fullwidth>.header,.page-layout.simple.inner-sidenav>.header{height:200px;min-height:200px;max-height:200px;padding:24px;background-image:url(/assets/images/backgrounds/header-bg.png);background-size:cover}.page-layout.simple.fullwidth>.content,.page-layout.simple.inner-sidenav>.content{padding:24px}.page-layout.simple.left-sidenav{min-height:100%;height:100%}.page-layout.simple.left-sidenav.single-scroll{height:auto}.page-layout.simple.left-sidenav.single-scroll>.center{overflow:hidden}.page-layout.simple.left-sidenav.inner-sidenav>.content>md-sidenav{margin-right:24px}.page-layout.simple.left-sidenav .sidenav{width:240px;min-width:240px;max-width:240px;padding:24px;z-index:51;box-shadow:0 4px 5px -2px rgba(0,0,0,.2),0 7px 10px 1px rgba(0,0,0,.14),0 2px 16px 1px rgba(0,0,0,.12)}.page-layout.simple.left-sidenav .sidenav.md-locked-open{width:220px;min-width:220px;max-width:220px;z-index:2;box-shadow:none;background:0 0}.page-layout.simple.left-sidenav>.center{position:relative;overflow:auto;z-index:3;box-shadow:0 4px 5px -2px rgba(0,0,0,.2),0 7px 10px 1px rgba(0,0,0,.14),0 2px 16px 1px rgba(0,0,0,.12)}.page-layout.simple.left-sidenav>.center .header{height:200px;min-height:200px;max-height:200px;padding:24px;background-image:url(/assets/images/backgrounds/header-bg.png);background-size:cover}.page-layout.simple.left-sidenav>.center .content{padding:24px;background:#fff}.page-layout.simple.right-sidenav{min-height:100%;height:100%}.page-layout.simple.right-sidenav.single-scroll{height:auto}.page-layout.simple.right-sidenav.single-scroll>.center{overflow:hidden}.page-layout.simple.right-sidenav.inner-sidenav>.content>md-sidenav{margin-left:24px}.page-layout.simple.right-sidenav .sidenav{width:240px;min-width:240px;max-width:240px;padding:24px;z-index:51;box-shadow:0 4px 5px -2px rgba(0,0,0,.2),0 7px 10px 1px rgba(0,0,0,.14),0 2px 16px 1px rgba(0,0,0,.12)}.page-layout.simple.right-sidenav .sidenav.md-locked-open{width:220px;min-width:220px;max-width:220px;z-index:2;box-shadow:none;background:0 0}.page-layout.simple.right-sidenav>.center{position:relative;overflow:auto;z-index:3;box-shadow:0 4px 5px -2px rgba(0,0,0,.2),0 7px 10px 1px rgba(0,0,0,.14),0 2px 16px 1px rgba(0,0,0,.12)}.page-layout.simple.right-sidenav>.center .header{height:200px;min-height:200px;max-height:200px;padding:24px;background-image:url(/assets/images/backgrounds/header-bg.png);background-size:cover}.page-layout.simple.right-sidenav>.center .content{padding:24px;background:#fff}.page-layout.simple.inner-sidenav{height:auto}.page-layout.simple.inner-sidenav>.content>md-sidenav.md-locked-open{padding:0}.page-layout.simple.tabbed{width:100%;height:100%;min-height:100%}.page-layout.simple.tabbed>.header{height:200px;min-height:200px;max-height:200px;padding:24px;background-image:url(/assets/images/backgrounds/header-bg.png);background-size:cover}.page-layout.simple.tabbed>.content{width:100%;height:100%;overflow:hidden}.page-layout.simple.tabbed>.content>md-tabs>md-tabs-wrapper{background:#fff;box-shadow:0 1px 3px 0 rgba(0,0,0,.2),0 1px 1px 0 rgba(0,0,0,.14),0 2px 1px -1px rgba(0,0,0,.12);padding:0 24px}.page-layout.simple.tabbed>.content>md-tabs>md-tabs-wrapper md-tabs-canvas{height:56px}.page-layout.simple.tabbed>.content>md-tabs>md-tabs-wrapper md-tabs-canvas md-pagination-wrapper{height:56px}.page-layout.simple.tabbed>.content>md-tabs>md-tabs-wrapper md-tabs-canvas .md-tab{padding:16px 24px;text-transform:none}.page-layout.simple.tabbed>.content>md-tabs:not(.md-dynamic-height) md-tabs-content-wrapper{top:56px}.page-layout.simple.tabbed>.content>md-tabs>md-tabs-content-wrapper{width:100%;height:calc(100% - 56px)}.page-layout.simple.tabbed>.content>md-tabs>md-tabs-content-wrapper>md-tab-content.md-active{padding:24px;box-sizing:border-box;overflow:auto;width:100%;height:100%;display:block}.page-layout.simple.tabbed>.content>md-nav-bar .md-nav-bar{background:#fff;box-shadow:0 1px 3px 0 rgba(0,0,0,.2),0 1px 1px 0 rgba(0,0,0,.14),0 2px 1px -1px rgba(0,0,0,.12);border:none;height:56px}.page-layout.simple.tabbed>.content>md-nav-bar .md-nav-bar nav{margin:0 12px}.page-layout.simple.tabbed>.content>md-nav-bar .md-nav-bar nav .md-nav-item{height:56px}.page-layout.simple.tabbed>.content>md-nav-bar .md-nav-bar nav .md-nav-item ._md-nav-button{height:56px;line-height:32px}.page-layout.simple.tabbed>.content>md-nav-bar .md-nav-bar nav .md-nav-item ._md-nav-button-text{text-transform:none}.page-layout.blank{min-height:100%;padding:24px}.single-scroll .carded.fullwidth{height:auto}.single-scroll .carded.fullwidth>.center .content-card .content{overflow:hidden}.single-scroll .carded.left-sidenav{height:auto}.single-scroll .carded.left-sidenav>.center .content-card .content{overflow:hidden}.single-scroll .carded.right-sidenav{height:auto}.single-scroll .carded.right-sidenav>.center .content-card .content{overflow:hidden}.single-scroll .simple.left-sidenav{height:auto}.single-scroll .simple.left-sidenav>.center{overflow:hidden}.single-scroll .simple.right-sidenav{height:auto}.single-scroll .simple.right-sidenav>.center{overflow:hidden}@media screen and (max-width:1280px){.page-layout.simple.inner-sidenav.left-sidenav>.content,.page-layout.simple.inner-sidenav.right-sidenav>.content{height:auto!important}.page-layout.simple.inner-sidenav.left-sidenav>.content>md-sidenav,.page-layout.simple.inner-sidenav.right-sidenav>.content>md-sidenav{margin-left:0;margin-right:0}.sidenav-open .page-layout.simple.inner-sidenav{height:100%}}@media screen and (max-width:600px){.page-layout .top-bg{height:160px}.page-layout.carded.fullwidth>.center,.page-layout.carded.left-sidenav>.center,.page-layout.carded.right-sidenav>.center{margin-left:16px;margin-right:16px}.page-layout.carded.fullwidth>.center .header,.page-layout.carded.left-sidenav>.center .header,.page-layout.carded.right-sidenav>.center .header{height:96px;min-height:96px;max-height:96px;padding:16px}.page-layout.carded.fullwidth{height:auto}.page-layout.carded.fullwidth>.center .content-card .content{overflow:hidden}.page-layout.carded.left-sidenav,.page-layout.carded.right-sidenav{height:auto}.page-layout.carded.left-sidenav>.center .content-card .content,.page-layout.carded.right-sidenav>.center .content-card .content{overflow:hidden}.page-layout.simple.fullwidth>.header,.page-layout.simple.inner-sidenav>.header{height:160px;min-height:160px;max-height:160px;padding:16px}.page-layout.simple.left-sidenav>.center .header,.page-layout.simple.right-sidenav>.center .header{height:160px;min-height:160px;max-height:160px;padding:16px}.page-layout.simple.left-sidenav,.page-layout.simple.right-sidenav{height:auto}.page-layout.simple.left-sidenav>.center,.page-layout.simple.right-sidenav>.center{overflow:hidden}}.black-fg,.black-text{color:rgba(0,0,0,.87)!important}.black-fg .icon,.black-fg .secondary-text,.black-fg.icon,.black-fg.secondary-text,.black-text .icon,.black-text .secondary-text,.black-text.icon,.black-text.secondary-text{color:rgba(0,0,0,.54)!important}.black-fg .disabled-text,.black-fg .hint-text,.black-fg.disabled-text,.black-fg.hint-text,.black-text .disabled-text,.black-text .hint-text,.black-text.disabled-text,.black-text.hint-text{color:rgba(0,0,0,.26)!important}.black-fg .divider,.black-fg .faint-text,.black-fg.divider,.black-fg.faint-text,.black-text .divider,.black-text .faint-text,.black-text.divider,.black-text.faint-text{color:rgba(0,0,0,.12)!important}.white-fg,.white-text{color:#fff!important}.white-fg .icon,.white-fg .secondary-text,.white-fg.icon,.white-fg.secondary-text,.white-text .icon,.white-text .secondary-text,.white-text.icon,.white-text.secondary-text{color:rgba(255,255,255,.7)!important}.white-fg .disabled-text,.white-fg .hint-text,.white-fg.disabled-text,.white-fg.hint-text,.white-text .disabled-text,.white-text .hint-text,.white-text.disabled-text,.white-text.hint-text{color:rgba(255,255,255,.3)!important}.white-fg .divider,.white-fg .faint-text,.white-fg.divider,.white-fg.faint-text,.white-text .divider,.white-text .faint-text,.white-text.divider,.white-text.faint-text{color:rgba(255,255,255,.12)!important}.white-fg md-icon,.white-text md-icon{color:#fff}.white-fg md-progress-linear .md-container,.white-text md-progress-linear .md-container{background:rgba(255,255,255,.3)}.white-fg md-progress-linear .md-bar,.white-text md-progress-linear .md-bar{background:rgba(255,255,255,.7)}.red-50-bg{background-color:#ffebee!important}.md-red-50-bg{background-color:#ffebee!important;color:rgba(0,0,0,.87)}.red-50-fg{color:#ffebee!important}.red-50-border{border-color:#ffebee!important}.red-50-border-top{border-top-color:#ffebee!important}.red-50-border-right{border-right-color:#ffebee!important}.red-50-border-bottom{border-bottom-color:#ffebee!important}.red-50-border-left{border-left-color:#ffebee!important}.red-100-bg{background-color:#ffcdd2!important}.md-red-100-bg{background-color:#ffcdd2!important;color:rgba(0,0,0,.87)}.red-100-fg{color:#ffcdd2!important}.red-100-border{border-color:#ffcdd2!important}.red-100-border-top{border-top-color:#ffcdd2!important}.red-100-border-right{border-right-color:#ffcdd2!important}.red-100-border-bottom{border-bottom-color:#ffcdd2!important}.red-100-border-left{border-left-color:#ffcdd2!important}.red-200-bg{background-color:#ef9a9a!important}.md-red-200-bg{background-color:#ef9a9a!important;color:rgba(0,0,0,.87)}.red-200-fg{color:#ef9a9a!important}.red-200-border{border-color:#ef9a9a!important}.red-200-border-top{border-top-color:#ef9a9a!important}.red-200-border-right{border-right-color:#ef9a9a!important}.red-200-border-bottom{border-bottom-color:#ef9a9a!important}.red-200-border-left{border-left-color:#ef9a9a!important}.red-300-bg{background-color:#e57373!important}.md-red-300-bg{background-color:#e57373!important;color:rgba(0,0,0,.87)}.red-300-fg{color:#e57373!important}.red-300-border{border-color:#e57373!important}.red-300-border-top{border-top-color:#e57373!important}.red-300-border-right{border-right-color:#e57373!important}.red-300-border-bottom{border-bottom-color:#e57373!important}.red-300-border-left{border-left-color:#e57373!important}.red-400-bg{background-color:#ef5350!important}.md-red-400-bg{background-color:#ef5350!important;color:#fff}.red-400-fg{color:#ef5350!important}.red-400-border{border-color:#ef5350!important}.red-400-border-top{border-top-color:#ef5350!important}.red-400-border-right{border-right-color:#ef5350!important}.red-400-border-bottom{border-bottom-color:#ef5350!important}.red-400-border-left{border-left-color:#ef5350!important}.red-500-bg{background-color:#f44336!important}.md-red-500-bg{background-color:#f44336!important;color:#fff}.red-500-fg{color:#f44336!important}.red-500-border{border-color:#f44336!important}.red-500-border-top{border-top-color:#f44336!important}.red-500-border-right{border-right-color:#f44336!important}.red-500-border-bottom{border-bottom-color:#f44336!important}.red-500-border-left{border-left-color:#f44336!important}.md-red-bg{background-color:#f44336!important;color:#fff}.red-bg{background-color:#f44336!important}.red-fg{color:#f44336!important}.red-border{border-color:#f44336!important}.red-border-top{border-top-color:#f44336!important}.red-border-right{border-right-color:#f44336!important}.red-border-bottom{border-bottom-color:#f44336!important}.red-border-left{border-left-color:#f44336!important}.red-600-bg{background-color:#e53935!important}.md-red-600-bg{background-color:#e53935!important;color:#fff}.red-600-fg{color:#e53935!important}.red-600-border{border-color:#e53935!important}.red-600-border-top{border-top-color:#e53935!important}.red-600-border-right{border-right-color:#e53935!important}.red-600-border-bottom{border-bottom-color:#e53935!important}.red-600-border-left{border-left-color:#e53935!important}.red-700-bg{background-color:#d32f2f!important}.md-red-700-bg{background-color:#d32f2f!important;color:#fff}.red-700-fg{color:#d32f2f!important}.red-700-border{border-color:#d32f2f!important}.red-700-border-top{border-top-color:#d32f2f!important}.red-700-border-right{border-right-color:#d32f2f!important}.red-700-border-bottom{border-bottom-color:#d32f2f!important}.red-700-border-left{border-left-color:#d32f2f!important}.red-800-bg{background-color:#c62828!important}.md-red-800-bg{background-color:#c62828!important;color:rgba(255,255,255,.87)}.red-800-fg{color:#c62828!important}.red-800-border{border-color:#c62828!important}.red-800-border-top{border-top-color:#c62828!important}.red-800-border-right{border-right-color:#c62828!important}.red-800-border-bottom{border-bottom-color:#c62828!important}.red-800-border-left{border-left-color:#c62828!important}.red-900-bg{background-color:#b71c1c!important}.md-red-900-bg{background-color:#b71c1c!important;color:rgba(255,255,255,.87)}.red-900-fg{color:#b71c1c!important}.red-900-border{border-color:#b71c1c!important}.red-900-border-top{border-top-color:#b71c1c!important}.red-900-border-right{border-right-color:#b71c1c!important}.red-900-border-bottom{border-bottom-color:#b71c1c!important}.red-900-border-left{border-left-color:#b71c1c!important}.red-A100-bg{background-color:#ff8a80!important}.md-red-A100-bg{background-color:#ff8a80!important;color:rgba(0,0,0,.87)}.red-A100-fg{color:#ff8a80!important}.red-A100-border{border-color:#ff8a80!important}.red-A100-border-top{border-top-color:#ff8a80!important}.red-A100-border-right{border-right-color:#ff8a80!important}.red-A100-border-bottom{border-bottom-color:#ff8a80!important}.red-A100-border-left{border-left-color:#ff8a80!important}.red-A200-bg{background-color:#ff5252!important}.md-red-A200-bg{background-color:#ff5252!important;color:#fff}.red-A200-fg{color:#ff5252!important}.red-A200-border{border-color:#ff5252!important}.red-A200-border-top{border-top-color:#ff5252!important}.red-A200-border-right{border-right-color:#ff5252!important}.red-A200-border-bottom{border-bottom-color:#ff5252!important}.red-A200-border-left{border-left-color:#ff5252!important}.red-A400-bg{background-color:#ff1744!important}.md-red-A400-bg{background-color:#ff1744!important;color:#fff}.red-A400-fg{color:#ff1744!important}.red-A400-border{border-color:#ff1744!important}.red-A400-border-top{border-top-color:#ff1744!important}.red-A400-border-right{border-right-color:#ff1744!important}.red-A400-border-bottom{border-bottom-color:#ff1744!important}.red-A400-border-left{border-left-color:#ff1744!important}.red-A700-bg{background-color:#d50000!important}.md-red-A700-bg{background-color:#d50000!important;color:#fff}.red-A700-fg{color:#d50000!important}.red-A700-border{border-color:#d50000!important}.red-A700-border-top{border-top-color:#d50000!important}.red-A700-border-right{border-right-color:#d50000!important}.red-A700-border-bottom{border-bottom-color:#d50000!important}.red-A700-border-left{border-left-color:#d50000!important}.pink-50-bg{background-color:#fce4ec!important}.md-pink-50-bg{background-color:#fce4ec!important;color:rgba(0,0,0,.87)}.pink-50-fg{color:#fce4ec!important}.pink-50-border{border-color:#fce4ec!important}.pink-50-border-top{border-top-color:#fce4ec!important}.pink-50-border-right{border-right-color:#fce4ec!important}.pink-50-border-bottom{border-bottom-color:#fce4ec!important}.pink-50-border-left{border-left-color:#fce4ec!important}.pink-100-bg{background-color:#f8bbd0!important}.md-pink-100-bg{background-color:#f8bbd0!important;color:rgba(0,0,0,.87)}.pink-100-fg{color:#f8bbd0!important}.pink-100-border{border-color:#f8bbd0!important}.pink-100-border-top{border-top-color:#f8bbd0!important}.pink-100-border-right{border-right-color:#f8bbd0!important}.pink-100-border-bottom{border-bottom-color:#f8bbd0!important}.pink-100-border-left{border-left-color:#f8bbd0!important}.pink-200-bg{background-color:#f48fb1!important}.md-pink-200-bg{background-color:#f48fb1!important;color:rgba(0,0,0,.87)}.pink-200-fg{color:#f48fb1!important}.pink-200-border{border-color:#f48fb1!important}.pink-200-border-top{border-top-color:#f48fb1!important}.pink-200-border-right{border-right-color:#f48fb1!important}.pink-200-border-bottom{border-bottom-color:#f48fb1!important}.pink-200-border-left{border-left-color:#f48fb1!important}.pink-300-bg{background-color:#f06292!important}.md-pink-300-bg{background-color:#f06292!important;color:rgba(255,255,255,.87)}.pink-300-fg{color:#f06292!important}.pink-300-border{border-color:#f06292!important}.pink-300-border-top{border-top-color:#f06292!important}.pink-300-border-right{border-right-color:#f06292!important}.pink-300-border-bottom{border-bottom-color:#f06292!important}.pink-300-border-left{border-left-color:#f06292!important}.pink-400-bg{background-color:#ec407a!important}.md-pink-400-bg{background-color:#ec407a!important;color:rgba(255,255,255,.87)}.pink-400-fg{color:#ec407a!important}.pink-400-border{border-color:#ec407a!important}.pink-400-border-top{border-top-color:#ec407a!important}.pink-400-border-right{border-right-color:#ec407a!important}.pink-400-border-bottom{border-bottom-color:#ec407a!important}.pink-400-border-left{border-left-color:#ec407a!important}.pink-500-bg{background-color:#e91e63!important}.md-pink-500-bg{background-color:#e91e63!important;color:#fff}.pink-500-fg{color:#e91e63!important}.pink-500-border{border-color:#e91e63!important}.pink-500-border-top{border-top-color:#e91e63!important}.pink-500-border-right{border-right-color:#e91e63!important}.pink-500-border-bottom{border-bottom-color:#e91e63!important}.pink-500-border-left{border-left-color:#e91e63!important}.md-pink-bg{background-color:#e91e63!important;color:#fff}.pink-bg{background-color:#e91e63!important}.pink-fg{color:#e91e63!important}.pink-border{border-color:#e91e63!important}.pink-border-top{border-top-color:#e91e63!important}.pink-border-right{border-right-color:#e91e63!important}.pink-border-bottom{border-bottom-color:#e91e63!important}.pink-border-left{border-left-color:#e91e63!important}.pink-600-bg{background-color:#d81b60!important}.md-pink-600-bg{background-color:#d81b60!important;color:#fff}.pink-600-fg{color:#d81b60!important}.pink-600-border{border-color:#d81b60!important}.pink-600-border-top{border-top-color:#d81b60!important}.pink-600-border-right{border-right-color:#d81b60!important}.pink-600-border-bottom{border-bottom-color:#d81b60!important}.pink-600-border-left{border-left-color:#d81b60!important}.pink-700-bg{background-color:#c2185b!important}.md-pink-700-bg{background-color:#c2185b!important;color:rgba(255,255,255,.87)}.pink-700-fg{color:#c2185b!important}.pink-700-border{border-color:#c2185b!important}.pink-700-border-top{border-top-color:#c2185b!important}.pink-700-border-right{border-right-color:#c2185b!important}.pink-700-border-bottom{border-bottom-color:#c2185b!important}.pink-700-border-left{border-left-color:#c2185b!important}.pink-800-bg{background-color:#ad1457!important}.md-pink-800-bg{background-color:#ad1457!important;color:rgba(255,255,255,.87)}.pink-800-fg{color:#ad1457!important}.pink-800-border{border-color:#ad1457!important}.pink-800-border-top{border-top-color:#ad1457!important}.pink-800-border-right{border-right-color:#ad1457!important}.pink-800-border-bottom{border-bottom-color:#ad1457!important}.pink-800-border-left{border-left-color:#ad1457!important}.pink-900-bg{background-color:#880e4f!important}.md-pink-900-bg{background-color:#880e4f!important;color:rgba(255,255,255,.87)}.pink-900-fg{color:#880e4f!important}.pink-900-border{border-color:#880e4f!important}.pink-900-border-top{border-top-color:#880e4f!important}.pink-900-border-right{border-right-color:#880e4f!important}.pink-900-border-bottom{border-bottom-color:#880e4f!important}.pink-900-border-left{border-left-color:#880e4f!important}.pink-A100-bg{background-color:#ff80ab!important}.md-pink-A100-bg{background-color:#ff80ab!important;color:rgba(0,0,0,.87)}.pink-A100-fg{color:#ff80ab!important}.pink-A100-border{border-color:#ff80ab!important}.pink-A100-border-top{border-top-color:#ff80ab!important}.pink-A100-border-right{border-right-color:#ff80ab!important}.pink-A100-border-bottom{border-bottom-color:#ff80ab!important}.pink-A100-border-left{border-left-color:#ff80ab!important}.pink-A200-bg{background-color:#ff4081!important}.md-pink-A200-bg{background-color:#ff4081!important;color:#fff}.pink-A200-fg{color:#ff4081!important}.pink-A200-border{border-color:#ff4081!important}.pink-A200-border-top{border-top-color:#ff4081!important}.pink-A200-border-right{border-right-color:#ff4081!important}.pink-A200-border-bottom{border-bottom-color:#ff4081!important}.pink-A200-border-left{border-left-color:#ff4081!important}.pink-A400-bg{background-color:#f50057!important}.md-pink-A400-bg{background-color:#f50057!important;color:#fff}.pink-A400-fg{color:#f50057!important}.pink-A400-border{border-color:#f50057!important}.pink-A400-border-top{border-top-color:#f50057!important}.pink-A400-border-right{border-right-color:#f50057!important}.pink-A400-border-bottom{border-bottom-color:#f50057!important}.pink-A400-border-left{border-left-color:#f50057!important}.pink-A700-bg{background-color:#c51162!important}.md-pink-A700-bg{background-color:#c51162!important;color:#fff}.pink-A700-fg{color:#c51162!important}.pink-A700-border{border-color:#c51162!important}.pink-A700-border-top{border-top-color:#c51162!important}.pink-A700-border-right{border-right-color:#c51162!important}.pink-A700-border-bottom{border-bottom-color:#c51162!important}.pink-A700-border-left{border-left-color:#c51162!important}.purple-50-bg{background-color:#f3e5f5!important}.md-purple-50-bg{background-color:#f3e5f5!important;color:rgba(0,0,0,.87)}.purple-50-fg{color:#f3e5f5!important}.purple-50-border{border-color:#f3e5f5!important}.purple-50-border-top{border-top-color:#f3e5f5!important}.purple-50-border-right{border-right-color:#f3e5f5!important}.purple-50-border-bottom{border-bottom-color:#f3e5f5!important}.purple-50-border-left{border-left-color:#f3e5f5!important}.purple-100-bg{background-color:#e1bee7!important}.md-purple-100-bg{background-color:#e1bee7!important;color:rgba(0,0,0,.87)}.purple-100-fg{color:#e1bee7!important}.purple-100-border{border-color:#e1bee7!important}.purple-100-border-top{border-top-color:#e1bee7!important}.purple-100-border-right{border-right-color:#e1bee7!important}.purple-100-border-bottom{border-bottom-color:#e1bee7!important}.purple-100-border-left{border-left-color:#e1bee7!important}.purple-200-bg{background-color:#ce93d8!important}.md-purple-200-bg{background-color:#ce93d8!important;color:rgba(0,0,0,.87)}.purple-200-fg{color:#ce93d8!important}.purple-200-border{border-color:#ce93d8!important}.purple-200-border-top{border-top-color:#ce93d8!important}.purple-200-border-right{border-right-color:#ce93d8!important}.purple-200-border-bottom{border-bottom-color:#ce93d8!important}.purple-200-border-left{border-left-color:#ce93d8!important}.purple-300-bg{background-color:#ba68c8!important}.md-purple-300-bg{background-color:#ba68c8!important;color:#fff}.purple-300-fg{color:#ba68c8!important}.purple-300-border{border-color:#ba68c8!important}.purple-300-border-top{border-top-color:#ba68c8!important}.purple-300-border-right{border-right-color:#ba68c8!important}.purple-300-border-bottom{border-bottom-color:#ba68c8!important}.purple-300-border-left{border-left-color:#ba68c8!important}.purple-400-bg{background-color:#ab47bc!important}.md-purple-400-bg{background-color:#ab47bc!important;color:#fff}.purple-400-fg{color:#ab47bc!important}.purple-400-border{border-color:#ab47bc!important}.purple-400-border-top{border-top-color:#ab47bc!important}.purple-400-border-right{border-right-color:#ab47bc!important}.purple-400-border-bottom{border-bottom-color:#ab47bc!important}.purple-400-border-left{border-left-color:#ab47bc!important}.purple-500-bg{background-color:#9c27b0!important}.md-purple-500-bg{background-color:#9c27b0!important;color:rgba(255,255,255,.87)}.purple-500-fg{color:#9c27b0!important}.purple-500-border{border-color:#9c27b0!important}.purple-500-border-top{border-top-color:#9c27b0!important}.purple-500-border-right{border-right-color:#9c27b0!important}.purple-500-border-bottom{border-bottom-color:#9c27b0!important}.purple-500-border-left{border-left-color:#9c27b0!important}.md-purple-bg{background-color:#9c27b0!important;color:rgba(255,255,255,.87)}.purple-bg{background-color:#9c27b0!important}.purple-fg{color:#9c27b0!important}.purple-border{border-color:#9c27b0!important}.purple-border-top{border-top-color:#9c27b0!important}.purple-border-right{border-right-color:#9c27b0!important}.purple-border-bottom{border-bottom-color:#9c27b0!important}.purple-border-left{border-left-color:#9c27b0!important}.purple-600-bg{background-color:#8e24aa!important}.md-purple-600-bg{background-color:#8e24aa!important;color:rgba(255,255,255,.87)}.purple-600-fg{color:#8e24aa!important}.purple-600-border{border-color:#8e24aa!important}.purple-600-border-top{border-top-color:#8e24aa!important}.purple-600-border-right{border-right-color:#8e24aa!important}.purple-600-border-bottom{border-bottom-color:#8e24aa!important}.purple-600-border-left{border-left-color:#8e24aa!important}.purple-700-bg{background-color:#7b1fa2!important}.md-purple-700-bg{background-color:#7b1fa2!important;color:rgba(255,255,255,.87)}.purple-700-fg{color:#7b1fa2!important}.purple-700-border{border-color:#7b1fa2!important}.purple-700-border-top{border-top-color:#7b1fa2!important}.purple-700-border-right{border-right-color:#7b1fa2!important}.purple-700-border-bottom{border-bottom-color:#7b1fa2!important}.purple-700-border-left{border-left-color:#7b1fa2!important}.purple-800-bg{background-color:#6a1b9a!important}.md-purple-800-bg{background-color:#6a1b9a!important;color:rgba(255,255,255,.87)}.purple-800-fg{color:#6a1b9a!important}.purple-800-border{border-color:#6a1b9a!important}.purple-800-border-top{border-top-color:#6a1b9a!important}.purple-800-border-right{border-right-color:#6a1b9a!important}.purple-800-border-bottom{border-bottom-color:#6a1b9a!important}.purple-800-border-left{border-left-color:#6a1b9a!important}.purple-900-bg{background-color:#4a148c!important}.md-purple-900-bg{background-color:#4a148c!important;color:rgba(255,255,255,.87)}.purple-900-fg{color:#4a148c!important}.purple-900-border{border-color:#4a148c!important}.purple-900-border-top{border-top-color:#4a148c!important}.purple-900-border-right{border-right-color:#4a148c!important}.purple-900-border-bottom{border-bottom-color:#4a148c!important}.purple-900-border-left{border-left-color:#4a148c!important}.purple-A100-bg{background-color:#ea80fc!important}.md-purple-A100-bg{background-color:#ea80fc!important;color:rgba(0,0,0,.87)}.purple-A100-fg{color:#ea80fc!important}.purple-A100-border{border-color:#ea80fc!important}.purple-A100-border-top{border-top-color:#ea80fc!important}.purple-A100-border-right{border-right-color:#ea80fc!important}.purple-A100-border-bottom{border-bottom-color:#ea80fc!important}.purple-A100-border-left{border-left-color:#ea80fc!important}.purple-A200-bg{background-color:#e040fb!important}.md-purple-A200-bg{background-color:#e040fb!important;color:#fff}.purple-A200-fg{color:#e040fb!important}.purple-A200-border{border-color:#e040fb!important}.purple-A200-border-top{border-top-color:#e040fb!important}.purple-A200-border-right{border-right-color:#e040fb!important}.purple-A200-border-bottom{border-bottom-color:#e040fb!important}.purple-A200-border-left{border-left-color:#e040fb!important}.purple-A400-bg{background-color:#d500f9!important}.md-purple-A400-bg{background-color:#d500f9!important;color:#fff}.purple-A400-fg{color:#d500f9!important}.purple-A400-border{border-color:#d500f9!important}.purple-A400-border-top{border-top-color:#d500f9!important}.purple-A400-border-right{border-right-color:#d500f9!important}.purple-A400-border-bottom{border-bottom-color:#d500f9!important}.purple-A400-border-left{border-left-color:#d500f9!important}.purple-A700-bg{background-color:#a0f!important}.md-purple-A700-bg{background-color:#a0f!important;color:#fff}.purple-A700-fg{color:#a0f!important}.purple-A700-border{border-color:#a0f!important}.purple-A700-border-top{border-top-color:#a0f!important}.purple-A700-border-right{border-right-color:#a0f!important}.purple-A700-border-bottom{border-bottom-color:#a0f!important}.purple-A700-border-left{border-left-color:#a0f!important}.deep-purple-50-bg{background-color:#ede7f6!important}.md-deep-purple-50-bg{background-color:#ede7f6!important;color:rgba(0,0,0,.87)}.deep-purple-50-fg{color:#ede7f6!important}.deep-purple-50-border{border-color:#ede7f6!important}.deep-purple-50-border-top{border-top-color:#ede7f6!important}.deep-purple-50-border-right{border-right-color:#ede7f6!important}.deep-purple-50-border-bottom{border-bottom-color:#ede7f6!important}.deep-purple-50-border-left{border-left-color:#ede7f6!important}.deep-purple-100-bg{background-color:#d1c4e9!important}.md-deep-purple-100-bg{background-color:#d1c4e9!important;color:rgba(0,0,0,.87)}.deep-purple-100-fg{color:#d1c4e9!important}.deep-purple-100-border{border-color:#d1c4e9!important}.deep-purple-100-border-top{border-top-color:#d1c4e9!important}.deep-purple-100-border-right{border-right-color:#d1c4e9!important}.deep-purple-100-border-bottom{border-bottom-color:#d1c4e9!important}.deep-purple-100-border-left{border-left-color:#d1c4e9!important}.deep-purple-200-bg{background-color:#b39ddb!important}.md-deep-purple-200-bg{background-color:#b39ddb!important;color:rgba(0,0,0,.87)}.deep-purple-200-fg{color:#b39ddb!important}.deep-purple-200-border{border-color:#b39ddb!important}.deep-purple-200-border-top{border-top-color:#b39ddb!important}.deep-purple-200-border-right{border-right-color:#b39ddb!important}.deep-purple-200-border-bottom{border-bottom-color:#b39ddb!important}.deep-purple-200-border-left{border-left-color:#b39ddb!important}.deep-purple-300-bg{background-color:#9575cd!important}.md-deep-purple-300-bg{background-color:#9575cd!important;color:#fff}.deep-purple-300-fg{color:#9575cd!important}.deep-purple-300-border{border-color:#9575cd!important}.deep-purple-300-border-top{border-top-color:#9575cd!important}.deep-purple-300-border-right{border-right-color:#9575cd!important}.deep-purple-300-border-bottom{border-bottom-color:#9575cd!important}.deep-purple-300-border-left{border-left-color:#9575cd!important}.deep-purple-400-bg{background-color:#7e57c2!important}.md-deep-purple-400-bg{background-color:#7e57c2!important;color:#fff}.deep-purple-400-fg{color:#7e57c2!important}.deep-purple-400-border{border-color:#7e57c2!important}.deep-purple-400-border-top{border-top-color:#7e57c2!important}.deep-purple-400-border-right{border-right-color:#7e57c2!important}.deep-purple-400-border-bottom{border-bottom-color:#7e57c2!important}.deep-purple-400-border-left{border-left-color:#7e57c2!important}.deep-purple-500-bg{background-color:#673ab7!important}.md-deep-purple-500-bg{background-color:#673ab7!important;color:rgba(255,255,255,.87)}.deep-purple-500-fg{color:#673ab7!important}.deep-purple-500-border{border-color:#673ab7!important}.deep-purple-500-border-top{border-top-color:#673ab7!important}.deep-purple-500-border-right{border-right-color:#673ab7!important}.deep-purple-500-border-bottom{border-bottom-color:#673ab7!important}.deep-purple-500-border-left{border-left-color:#673ab7!important}.md-deep-purple-bg{background-color:#673ab7!important;color:rgba(255,255,255,.87)}.deep-purple-bg{background-color:#673ab7!important}.deep-purple-fg{color:#673ab7!important}.deep-purple-border{border-color:#673ab7!important}.deep-purple-border-top{border-top-color:#673ab7!important}.deep-purple-border-right{border-right-color:#673ab7!important}.deep-purple-border-bottom{border-bottom-color:#673ab7!important}.deep-purple-border-left{border-left-color:#673ab7!important}.deep-purple-600-bg{background-color:#5e35b1!important}.md-deep-purple-600-bg{background-color:#5e35b1!important;color:rgba(255,255,255,.87)}.deep-purple-600-fg{color:#5e35b1!important}.deep-purple-600-border{border-color:#5e35b1!important}.deep-purple-600-border-top{border-top-color:#5e35b1!important}.deep-purple-600-border-right{border-right-color:#5e35b1!important}.deep-purple-600-border-bottom{border-bottom-color:#5e35b1!important}.deep-purple-600-border-left{border-left-color:#5e35b1!important}.deep-purple-700-bg{background-color:#512da8!important}.md-deep-purple-700-bg{background-color:#512da8!important;color:rgba(255,255,255,.87)}.deep-purple-700-fg{color:#512da8!important}.deep-purple-700-border{border-color:#512da8!important}.deep-purple-700-border-top{border-top-color:#512da8!important}.deep-purple-700-border-right{border-right-color:#512da8!important}.deep-purple-700-border-bottom{border-bottom-color:#512da8!important}.deep-purple-700-border-left{border-left-color:#512da8!important}.deep-purple-800-bg{background-color:#4527a0!important}.md-deep-purple-800-bg{background-color:#4527a0!important;color:rgba(255,255,255,.87)}.deep-purple-800-fg{color:#4527a0!important}.deep-purple-800-border{border-color:#4527a0!important}.deep-purple-800-border-top{border-top-color:#4527a0!important}.deep-purple-800-border-right{border-right-color:#4527a0!important}.deep-purple-800-border-bottom{border-bottom-color:#4527a0!important}.deep-purple-800-border-left{border-left-color:#4527a0!important}.deep-purple-900-bg{background-color:#311b92!important}.md-deep-purple-900-bg{background-color:#311b92!important;color:rgba(255,255,255,.87)}.deep-purple-900-fg{color:#311b92!important}.deep-purple-900-border{border-color:#311b92!important}.deep-purple-900-border-top{border-top-color:#311b92!important}.deep-purple-900-border-right{border-right-color:#311b92!important}.deep-purple-900-border-bottom{border-bottom-color:#311b92!important}.deep-purple-900-border-left{border-left-color:#311b92!important}.deep-purple-A100-bg{background-color:#b388ff!important}.md-deep-purple-A100-bg{background-color:#b388ff!important;color:rgba(0,0,0,.87)}.deep-purple-A100-fg{color:#b388ff!important}.deep-purple-A100-border{border-color:#b388ff!important}.deep-purple-A100-border-top{border-top-color:#b388ff!important}.deep-purple-A100-border-right{border-right-color:#b388ff!important}.deep-purple-A100-border-bottom{border-bottom-color:#b388ff!important}.deep-purple-A100-border-left{border-left-color:#b388ff!important}.deep-purple-A200-bg{background-color:#7c4dff!important}.md-deep-purple-A200-bg{background-color:#7c4dff!important;color:#fff}.deep-purple-A200-fg{color:#7c4dff!important}.deep-purple-A200-border{border-color:#7c4dff!important}.deep-purple-A200-border-top{border-top-color:#7c4dff!important}.deep-purple-A200-border-right{border-right-color:#7c4dff!important}.deep-purple-A200-border-bottom{border-bottom-color:#7c4dff!important}.deep-purple-A200-border-left{border-left-color:#7c4dff!important}.deep-purple-A400-bg{background-color:#651fff!important}.md-deep-purple-A400-bg{background-color:#651fff!important;color:rgba(255,255,255,.87)}.deep-purple-A400-fg{color:#651fff!important}.deep-purple-A400-border{border-color:#651fff!important}.deep-purple-A400-border-top{border-top-color:#651fff!important}.deep-purple-A400-border-right{border-right-color:#651fff!important}.deep-purple-A400-border-bottom{border-bottom-color:#651fff!important}.deep-purple-A400-border-left{border-left-color:#651fff!important}.deep-purple-A700-bg{background-color:#6200ea!important}.md-deep-purple-A700-bg{background-color:#6200ea!important;color:rgba(255,255,255,.87)}.deep-purple-A700-fg{color:#6200ea!important}.deep-purple-A700-border{border-color:#6200ea!important}.deep-purple-A700-border-top{border-top-color:#6200ea!important}.deep-purple-A700-border-right{border-right-color:#6200ea!important}.deep-purple-A700-border-bottom{border-bottom-color:#6200ea!important}.deep-purple-A700-border-left{border-left-color:#6200ea!important}.indigo-50-bg{background-color:#e8eaf6!important}.md-indigo-50-bg{background-color:#e8eaf6!important;color:rgba(0,0,0,.87)}.indigo-50-fg{color:#e8eaf6!important}.indigo-50-border{border-color:#e8eaf6!important}.indigo-50-border-top{border-top-color:#e8eaf6!important}.indigo-50-border-right{border-right-color:#e8eaf6!important}.indigo-50-border-bottom{border-bottom-color:#e8eaf6!important}.indigo-50-border-left{border-left-color:#e8eaf6!important}.indigo-100-bg{background-color:#c5cae9!important}.md-indigo-100-bg{background-color:#c5cae9!important;color:rgba(0,0,0,.87)}.indigo-100-fg{color:#c5cae9!important}.indigo-100-border{border-color:#c5cae9!important}.indigo-100-border-top{border-top-color:#c5cae9!important}.indigo-100-border-right{border-right-color:#c5cae9!important}.indigo-100-border-bottom{border-bottom-color:#c5cae9!important}.indigo-100-border-left{border-left-color:#c5cae9!important}.indigo-200-bg{background-color:#9fa8da!important}.md-indigo-200-bg{background-color:#9fa8da!important;color:rgba(0,0,0,.87)}.indigo-200-fg{color:#9fa8da!important}.indigo-200-border{border-color:#9fa8da!important}.indigo-200-border-top{border-top-color:#9fa8da!important}.indigo-200-border-right{border-right-color:#9fa8da!important}.indigo-200-border-bottom{border-bottom-color:#9fa8da!important}.indigo-200-border-left{border-left-color:#9fa8da!important}.indigo-300-bg{background-color:#7986cb!important}.md-indigo-300-bg{background-color:#7986cb!important;color:#fff}.indigo-300-fg{color:#7986cb!important}.indigo-300-border{border-color:#7986cb!important}.indigo-300-border-top{border-top-color:#7986cb!important}.indigo-300-border-right{border-right-color:#7986cb!important}.indigo-300-border-bottom{border-bottom-color:#7986cb!important}.indigo-300-border-left{border-left-color:#7986cb!important}.indigo-400-bg{background-color:#5c6bc0!important}.md-indigo-400-bg{background-color:#5c6bc0!important;color:#fff}.indigo-400-fg{color:#5c6bc0!important}.indigo-400-border{border-color:#5c6bc0!important}.indigo-400-border-top{border-top-color:#5c6bc0!important}.indigo-400-border-right{border-right-color:#5c6bc0!important}.indigo-400-border-bottom{border-bottom-color:#5c6bc0!important}.indigo-400-border-left{border-left-color:#5c6bc0!important}.indigo-500-bg{background-color:#3f51b5!important}.md-indigo-500-bg{background-color:#3f51b5!important;color:rgba(255,255,255,.87)}.indigo-500-fg{color:#3f51b5!important}.indigo-500-border{border-color:#3f51b5!important}.indigo-500-border-top{border-top-color:#3f51b5!important}.indigo-500-border-right{border-right-color:#3f51b5!important}.indigo-500-border-bottom{border-bottom-color:#3f51b5!important}.indigo-500-border-left{border-left-color:#3f51b5!important}.md-indigo-bg{background-color:#3f51b5!important;color:rgba(255,255,255,.87)}.indigo-bg{background-color:#3f51b5!important}.indigo-fg{color:#3f51b5!important}.indigo-border{border-color:#3f51b5!important}.indigo-border-top{border-top-color:#3f51b5!important}.indigo-border-right{border-right-color:#3f51b5!important}.indigo-border-bottom{border-bottom-color:#3f51b5!important}.indigo-border-left{border-left-color:#3f51b5!important}.indigo-600-bg{background-color:#3949ab!important}.md-indigo-600-bg{background-color:#3949ab!important;color:rgba(255,255,255,.87)}.indigo-600-fg{color:#3949ab!important}.indigo-600-border{border-color:#3949ab!important}.indigo-600-border-top{border-top-color:#3949ab!important}.indigo-600-border-right{border-right-color:#3949ab!important}.indigo-600-border-bottom{border-bottom-color:#3949ab!important}.indigo-600-border-left{border-left-color:#3949ab!important}.indigo-700-bg{background-color:#303f9f!important}.md-indigo-700-bg{background-color:#303f9f!important;color:rgba(255,255,255,.87)}.indigo-700-fg{color:#303f9f!important}.indigo-700-border{border-color:#303f9f!important}.indigo-700-border-top{border-top-color:#303f9f!important}.indigo-700-border-right{border-right-color:#303f9f!important}.indigo-700-border-bottom{border-bottom-color:#303f9f!important}.indigo-700-border-left{border-left-color:#303f9f!important}.indigo-800-bg{background-color:#283593!important}.md-indigo-800-bg{background-color:#283593!important;color:rgba(255,255,255,.87)}.indigo-800-fg{color:#283593!important}.indigo-800-border{border-color:#283593!important}.indigo-800-border-top{border-top-color:#283593!important}.indigo-800-border-right{border-right-color:#283593!important}.indigo-800-border-bottom{border-bottom-color:#283593!important}.indigo-800-border-left{border-left-color:#283593!important}.indigo-900-bg{background-color:#1a237e!important}.md-indigo-900-bg{background-color:#1a237e!important;color:rgba(255,255,255,.87)}.indigo-900-fg{color:#1a237e!important}.indigo-900-border{border-color:#1a237e!important}.indigo-900-border-top{border-top-color:#1a237e!important}.indigo-900-border-right{border-right-color:#1a237e!important}.indigo-900-border-bottom{border-bottom-color:#1a237e!important}.indigo-900-border-left{border-left-color:#1a237e!important}.indigo-A100-bg{background-color:#8c9eff!important}.md-indigo-A100-bg{background-color:#8c9eff!important;color:rgba(0,0,0,.87)}.indigo-A100-fg{color:#8c9eff!important}.indigo-A100-border{border-color:#8c9eff!important}.indigo-A100-border-top{border-top-color:#8c9eff!important}.indigo-A100-border-right{border-right-color:#8c9eff!important}.indigo-A100-border-bottom{border-bottom-color:#8c9eff!important}.indigo-A100-border-left{border-left-color:#8c9eff!important}.indigo-A200-bg{background-color:#536dfe!important}.md-indigo-A200-bg{background-color:#536dfe!important;color:#fff}.indigo-A200-fg{color:#536dfe!important}.indigo-A200-border{border-color:#536dfe!important}.indigo-A200-border-top{border-top-color:#536dfe!important}.indigo-A200-border-right{border-right-color:#536dfe!important}.indigo-A200-border-bottom{border-bottom-color:#536dfe!important}.indigo-A200-border-left{border-left-color:#536dfe!important}.indigo-A400-bg{background-color:#3d5afe!important}.md-indigo-A400-bg{background-color:#3d5afe!important;color:#fff}.indigo-A400-fg{color:#3d5afe!important}.indigo-A400-border{border-color:#3d5afe!important}.indigo-A400-border-top{border-top-color:#3d5afe!important}.indigo-A400-border-right{border-right-color:#3d5afe!important}.indigo-A400-border-bottom{border-bottom-color:#3d5afe!important}.indigo-A400-border-left{border-left-color:#3d5afe!important}.indigo-A700-bg{background-color:#304ffe!important}.md-indigo-A700-bg{background-color:#304ffe!important;color:rgba(255,255,255,.87)}.indigo-A700-fg{color:#304ffe!important}.indigo-A700-border{border-color:#304ffe!important}.indigo-A700-border-top{border-top-color:#304ffe!important}.indigo-A700-border-right{border-right-color:#304ffe!important}.indigo-A700-border-bottom{border-bottom-color:#304ffe!important}.indigo-A700-border-left{border-left-color:#304ffe!important}.blue-50-bg{background-color:#e3f2fd!important}.md-blue-50-bg{background-color:#e3f2fd!important;color:rgba(0,0,0,.87)}.blue-50-fg{color:#e3f2fd!important}.blue-50-border{border-color:#e3f2fd!important}.blue-50-border-top{border-top-color:#e3f2fd!important}.blue-50-border-right{border-right-color:#e3f2fd!important}.blue-50-border-bottom{border-bottom-color:#e3f2fd!important}.blue-50-border-left{border-left-color:#e3f2fd!important}.blue-100-bg{background-color:#bbdefb!important}.md-blue-100-bg{background-color:#bbdefb!important;color:rgba(0,0,0,.87)}.blue-100-fg{color:#bbdefb!important}.blue-100-border{border-color:#bbdefb!important}.blue-100-border-top{border-top-color:#bbdefb!important}.blue-100-border-right{border-right-color:#bbdefb!important}.blue-100-border-bottom{border-bottom-color:#bbdefb!important}.blue-100-border-left{border-left-color:#bbdefb!important}.blue-200-bg{background-color:#90caf9!important}.md-blue-200-bg{background-color:#90caf9!important;color:rgba(0,0,0,.87)}.blue-200-fg{color:#90caf9!important}.blue-200-border{border-color:#90caf9!important}.blue-200-border-top{border-top-color:#90caf9!important}.blue-200-border-right{border-right-color:#90caf9!important}.blue-200-border-bottom{border-bottom-color:#90caf9!important}.blue-200-border-left{border-left-color:#90caf9!important}.blue-300-bg{background-color:#64b5f6!important}.md-blue-300-bg{background-color:#64b5f6!important;color:rgba(0,0,0,.87)}.blue-300-fg{color:#64b5f6!important}.blue-300-border{border-color:#64b5f6!important}.blue-300-border-top{border-top-color:#64b5f6!important}.blue-300-border-right{border-right-color:#64b5f6!important}.blue-300-border-bottom{border-bottom-color:#64b5f6!important}.blue-300-border-left{border-left-color:#64b5f6!important}.blue-400-bg{background-color:#42a5f5!important}.md-blue-400-bg{background-color:#42a5f5!important;color:rgba(0,0,0,.87)}.blue-400-fg{color:#42a5f5!important}.blue-400-border{border-color:#42a5f5!important}.blue-400-border-top{border-top-color:#42a5f5!important}.blue-400-border-right{border-right-color:#42a5f5!important}.blue-400-border-bottom{border-bottom-color:#42a5f5!important}.blue-400-border-left{border-left-color:#42a5f5!important}.blue-500-bg{background-color:#2196f3!important}.md-blue-500-bg{background-color:#2196f3!important;color:#fff}.blue-500-fg{color:#2196f3!important}.blue-500-border{border-color:#2196f3!important}.blue-500-border-top{border-top-color:#2196f3!important}.blue-500-border-right{border-right-color:#2196f3!important}.blue-500-border-bottom{border-bottom-color:#2196f3!important}.blue-500-border-left{border-left-color:#2196f3!important}.md-blue-bg{background-color:#2196f3!important;color:#fff}.blue-bg{background-color:#2196f3!important}.blue-fg{color:#2196f3!important}.blue-border{border-color:#2196f3!important}.blue-border-top{border-top-color:#2196f3!important}.blue-border-right{border-right-color:#2196f3!important}.blue-border-bottom{border-bottom-color:#2196f3!important}.blue-border-left{border-left-color:#2196f3!important}.blue-600-bg{background-color:#1e88e5!important}.md-blue-600-bg{background-color:#1e88e5!important;color:#fff}.blue-600-fg{color:#1e88e5!important}.blue-600-border{border-color:#1e88e5!important}.blue-600-border-top{border-top-color:#1e88e5!important}.blue-600-border-right{border-right-color:#1e88e5!important}.blue-600-border-bottom{border-bottom-color:#1e88e5!important}.blue-600-border-left{border-left-color:#1e88e5!important}.blue-700-bg{background-color:#1976d2!important}.md-blue-700-bg{background-color:#1976d2!important;color:#fff}.blue-700-fg{color:#1976d2!important}.blue-700-border{border-color:#1976d2!important}.blue-700-border-top{border-top-color:#1976d2!important}.blue-700-border-right{border-right-color:#1976d2!important}.blue-700-border-bottom{border-bottom-color:#1976d2!important}.blue-700-border-left{border-left-color:#1976d2!important}.blue-800-bg{background-color:#1565c0!important}.md-blue-800-bg{background-color:#1565c0!important;color:rgba(255,255,255,.87)}.blue-800-fg{color:#1565c0!important}.blue-800-border{border-color:#1565c0!important}.blue-800-border-top{border-top-color:#1565c0!important}.blue-800-border-right{border-right-color:#1565c0!important}.blue-800-border-bottom{border-bottom-color:#1565c0!important}.blue-800-border-left{border-left-color:#1565c0!important}.blue-900-bg{background-color:#0d47a1!important}.md-blue-900-bg{background-color:#0d47a1!important;color:rgba(255,255,255,.87)}.blue-900-fg{color:#0d47a1!important}.blue-900-border{border-color:#0d47a1!important}.blue-900-border-top{border-top-color:#0d47a1!important}.blue-900-border-right{border-right-color:#0d47a1!important}.blue-900-border-bottom{border-bottom-color:#0d47a1!important}.blue-900-border-left{border-left-color:#0d47a1!important}.blue-A100-bg{background-color:#82b1ff!important}.md-blue-A100-bg{background-color:#82b1ff!important;color:rgba(0,0,0,.87)}.blue-A100-fg{color:#82b1ff!important}.blue-A100-border{border-color:#82b1ff!important}.blue-A100-border-top{border-top-color:#82b1ff!important}.blue-A100-border-right{border-right-color:#82b1ff!important}.blue-A100-border-bottom{border-bottom-color:#82b1ff!important}.blue-A100-border-left{border-left-color:#82b1ff!important}.blue-A200-bg{background-color:#448aff!important}.md-blue-A200-bg{background-color:#448aff!important;color:#fff}.blue-A200-fg{color:#448aff!important}.blue-A200-border{border-color:#448aff!important}.blue-A200-border-top{border-top-color:#448aff!important}.blue-A200-border-right{border-right-color:#448aff!important}.blue-A200-border-bottom{border-bottom-color:#448aff!important}.blue-A200-border-left{border-left-color:#448aff!important}.blue-A400-bg{background-color:#2979ff!important}.md-blue-A400-bg{background-color:#2979ff!important;color:#fff}.blue-A400-fg{color:#2979ff!important}.blue-A400-border{border-color:#2979ff!important}.blue-A400-border-top{border-top-color:#2979ff!important}.blue-A400-border-right{border-right-color:#2979ff!important}.blue-A400-border-bottom{border-bottom-color:#2979ff!important}.blue-A400-border-left{border-left-color:#2979ff!important}.blue-A700-bg{background-color:#2962ff!important}.md-blue-A700-bg{background-color:#2962ff!important;color:#fff}.blue-A700-fg{color:#2962ff!important}.blue-A700-border{border-color:#2962ff!important}.blue-A700-border-top{border-top-color:#2962ff!important}.blue-A700-border-right{border-right-color:#2962ff!important}.blue-A700-border-bottom{border-bottom-color:#2962ff!important}.blue-A700-border-left{border-left-color:#2962ff!important}.light-blue-50-bg{background-color:#e1f5fe!important}.md-light-blue-50-bg{background-color:#e1f5fe!important;color:rgba(0,0,0,.87)}.light-blue-50-fg{color:#e1f5fe!important}.light-blue-50-border{border-color:#e1f5fe!important}.light-blue-50-border-top{border-top-color:#e1f5fe!important}.light-blue-50-border-right{border-right-color:#e1f5fe!important}.light-blue-50-border-bottom{border-bottom-color:#e1f5fe!important}.light-blue-50-border-left{border-left-color:#e1f5fe!important}.light-blue-100-bg{background-color:#b3e5fc!important}.md-light-blue-100-bg{background-color:#b3e5fc!important;color:rgba(0,0,0,.87)}.light-blue-100-fg{color:#b3e5fc!important}.light-blue-100-border{border-color:#b3e5fc!important}.light-blue-100-border-top{border-top-color:#b3e5fc!important}.light-blue-100-border-right{border-right-color:#b3e5fc!important}.light-blue-100-border-bottom{border-bottom-color:#b3e5fc!important}.light-blue-100-border-left{border-left-color:#b3e5fc!important}.light-blue-200-bg{background-color:#81d4fa!important}.md-light-blue-200-bg{background-color:#81d4fa!important;color:rgba(0,0,0,.87)}.light-blue-200-fg{color:#81d4fa!important}.light-blue-200-border{border-color:#81d4fa!important}.light-blue-200-border-top{border-top-color:#81d4fa!important}.light-blue-200-border-right{border-right-color:#81d4fa!important}.light-blue-200-border-bottom{border-bottom-color:#81d4fa!important}.light-blue-200-border-left{border-left-color:#81d4fa!important}.light-blue-300-bg{background-color:#4fc3f7!important}.md-light-blue-300-bg{background-color:#4fc3f7!important;color:rgba(0,0,0,.87)}.light-blue-300-fg{color:#4fc3f7!important}.light-blue-300-border{border-color:#4fc3f7!important}.light-blue-300-border-top{border-top-color:#4fc3f7!important}.light-blue-300-border-right{border-right-color:#4fc3f7!important}.light-blue-300-border-bottom{border-bottom-color:#4fc3f7!important}.light-blue-300-border-left{border-left-color:#4fc3f7!important}.light-blue-400-bg{background-color:#29b6f6!important}.md-light-blue-400-bg{background-color:#29b6f6!important;color:rgba(0,0,0,.87)}.light-blue-400-fg{color:#29b6f6!important}.light-blue-400-border{border-color:#29b6f6!important}.light-blue-400-border-top{border-top-color:#29b6f6!important}.light-blue-400-border-right{border-right-color:#29b6f6!important}.light-blue-400-border-bottom{border-bottom-color:#29b6f6!important}.light-blue-400-border-left{border-left-color:#29b6f6!important}.light-blue-500-bg{background-color:#03a9f4!important}.md-light-blue-500-bg{background-color:#03a9f4!important;color:rgba(0,0,0,.87)}.light-blue-500-fg{color:#03a9f4!important}.light-blue-500-border{border-color:#03a9f4!important}.light-blue-500-border-top{border-top-color:#03a9f4!important}.light-blue-500-border-right{border-right-color:#03a9f4!important}.light-blue-500-border-bottom{border-bottom-color:#03a9f4!important}.light-blue-500-border-left{border-left-color:#03a9f4!important}.md-light-blue-bg{background-color:#03a9f4!important;color:rgba(0,0,0,.87)}.light-blue-bg{background-color:#03a9f4!important}.light-blue-fg{color:#03a9f4!important}.light-blue-border{border-color:#03a9f4!important}.light-blue-border-top{border-top-color:#03a9f4!important}.light-blue-border-right{border-right-color:#03a9f4!important}.light-blue-border-bottom{border-bottom-color:#03a9f4!important}.light-blue-border-left{border-left-color:#03a9f4!important}.light-blue-600-bg{background-color:#039be5!important}.md-light-blue-600-bg{background-color:#039be5!important;color:#fff}.light-blue-600-fg{color:#039be5!important}.light-blue-600-border{border-color:#039be5!important}.light-blue-600-border-top{border-top-color:#039be5!important}.light-blue-600-border-right{border-right-color:#039be5!important}.light-blue-600-border-bottom{border-bottom-color:#039be5!important}.light-blue-600-border-left{border-left-color:#039be5!important}.light-blue-700-bg{background-color:#0288d1!important}.md-light-blue-700-bg{background-color:#0288d1!important;color:#fff}.light-blue-700-fg{color:#0288d1!important}.light-blue-700-border{border-color:#0288d1!important}.light-blue-700-border-top{border-top-color:#0288d1!important}.light-blue-700-border-right{border-right-color:#0288d1!important}.light-blue-700-border-bottom{border-bottom-color:#0288d1!important}.light-blue-700-border-left{border-left-color:#0288d1!important}.light-blue-800-bg{background-color:#0277bd!important}.md-light-blue-800-bg{background-color:#0277bd!important;color:#fff}.light-blue-800-fg{color:#0277bd!important}.light-blue-800-border{border-color:#0277bd!important}.light-blue-800-border-top{border-top-color:#0277bd!important}.light-blue-800-border-right{border-right-color:#0277bd!important}.light-blue-800-border-bottom{border-bottom-color:#0277bd!important}.light-blue-800-border-left{border-left-color:#0277bd!important}.light-blue-900-bg{background-color:#01579b!important}.md-light-blue-900-bg{background-color:#01579b!important;color:#fff}.light-blue-900-fg{color:#01579b!important}.light-blue-900-border{border-color:#01579b!important}.light-blue-900-border-top{border-top-color:#01579b!important}.light-blue-900-border-right{border-right-color:#01579b!important}.light-blue-900-border-bottom{border-bottom-color:#01579b!important}.light-blue-900-border-left{border-left-color:#01579b!important}.light-blue-A100-bg{background-color:#80d8ff!important}.md-light-blue-A100-bg{background-color:#80d8ff!important;color:rgba(0,0,0,.87)}.light-blue-A100-fg{color:#80d8ff!important}.light-blue-A100-border{border-color:#80d8ff!important}.light-blue-A100-border-top{border-top-color:#80d8ff!important}.light-blue-A100-border-right{border-right-color:#80d8ff!important}.light-blue-A100-border-bottom{border-bottom-color:#80d8ff!important}.light-blue-A100-border-left{border-left-color:#80d8ff!important}.light-blue-A200-bg{background-color:#40c4ff!important}.md-light-blue-A200-bg{background-color:#40c4ff!important;color:rgba(0,0,0,.87)}.light-blue-A200-fg{color:#40c4ff!important}.light-blue-A200-border{border-color:#40c4ff!important}.light-blue-A200-border-top{border-top-color:#40c4ff!important}.light-blue-A200-border-right{border-right-color:#40c4ff!important}.light-blue-A200-border-bottom{border-bottom-color:#40c4ff!important}.light-blue-A200-border-left{border-left-color:#40c4ff!important}.light-blue-A400-bg{background-color:#00b0ff!important}.md-light-blue-A400-bg{background-color:#00b0ff!important;color:rgba(0,0,0,.87)}.light-blue-A400-fg{color:#00b0ff!important}.light-blue-A400-border{border-color:#00b0ff!important}.light-blue-A400-border-top{border-top-color:#00b0ff!important}.light-blue-A400-border-right{border-right-color:#00b0ff!important}.light-blue-A400-border-bottom{border-bottom-color:#00b0ff!important}.light-blue-A400-border-left{border-left-color:#00b0ff!important}.light-blue-A700-bg{background-color:#0091ea!important}.md-light-blue-A700-bg{background-color:#0091ea!important;color:#fff}.light-blue-A700-fg{color:#0091ea!important}.light-blue-A700-border{border-color:#0091ea!important}.light-blue-A700-border-top{border-top-color:#0091ea!important}.light-blue-A700-border-right{border-right-color:#0091ea!important}.light-blue-A700-border-bottom{border-bottom-color:#0091ea!important}.light-blue-A700-border-left{border-left-color:#0091ea!important}.cyan-50-bg{background-color:#e0f7fa!important}.md-cyan-50-bg{background-color:#e0f7fa!important;color:rgba(0,0,0,.87)}.cyan-50-fg{color:#e0f7fa!important}.cyan-50-border{border-color:#e0f7fa!important}.cyan-50-border-top{border-top-color:#e0f7fa!important}.cyan-50-border-right{border-right-color:#e0f7fa!important}.cyan-50-border-bottom{border-bottom-color:#e0f7fa!important}.cyan-50-border-left{border-left-color:#e0f7fa!important}.cyan-100-bg{background-color:#b2ebf2!important}.md-cyan-100-bg{background-color:#b2ebf2!important;color:rgba(0,0,0,.87)}.cyan-100-fg{color:#b2ebf2!important}.cyan-100-border{border-color:#b2ebf2!important}.cyan-100-border-top{border-top-color:#b2ebf2!important}.cyan-100-border-right{border-right-color:#b2ebf2!important}.cyan-100-border-bottom{border-bottom-color:#b2ebf2!important}.cyan-100-border-left{border-left-color:#b2ebf2!important}.cyan-200-bg{background-color:#80deea!important}.md-cyan-200-bg{background-color:#80deea!important;color:rgba(0,0,0,.87)}.cyan-200-fg{color:#80deea!important}.cyan-200-border{border-color:#80deea!important}.cyan-200-border-top{border-top-color:#80deea!important}.cyan-200-border-right{border-right-color:#80deea!important}.cyan-200-border-bottom{border-bottom-color:#80deea!important}.cyan-200-border-left{border-left-color:#80deea!important}.cyan-300-bg{background-color:#4dd0e1!important}.md-cyan-300-bg{background-color:#4dd0e1!important;color:rgba(0,0,0,.87)}.cyan-300-fg{color:#4dd0e1!important}.cyan-300-border{border-color:#4dd0e1!important}.cyan-300-border-top{border-top-color:#4dd0e1!important}.cyan-300-border-right{border-right-color:#4dd0e1!important}.cyan-300-border-bottom{border-bottom-color:#4dd0e1!important}.cyan-300-border-left{border-left-color:#4dd0e1!important}.cyan-400-bg{background-color:#26c6da!important}.md-cyan-400-bg{background-color:#26c6da!important;color:rgba(0,0,0,.87)}.cyan-400-fg{color:#26c6da!important}.cyan-400-border{border-color:#26c6da!important}.cyan-400-border-top{border-top-color:#26c6da!important}.cyan-400-border-right{border-right-color:#26c6da!important}.cyan-400-border-bottom{border-bottom-color:#26c6da!important}.cyan-400-border-left{border-left-color:#26c6da!important}.cyan-500-bg{background-color:#00bcd4!important}.md-cyan-500-bg{background-color:#00bcd4!important;color:rgba(0,0,0,.87)}.cyan-500-fg{color:#00bcd4!important}.cyan-500-border{border-color:#00bcd4!important}.cyan-500-border-top{border-top-color:#00bcd4!important}.cyan-500-border-right{border-right-color:#00bcd4!important}.cyan-500-border-bottom{border-bottom-color:#00bcd4!important}.cyan-500-border-left{border-left-color:#00bcd4!important}.md-cyan-bg{background-color:#00bcd4!important;color:rgba(0,0,0,.87)}.cyan-bg{background-color:#00bcd4!important}.cyan-fg{color:#00bcd4!important}.cyan-border{border-color:#00bcd4!important}.cyan-border-top{border-top-color:#00bcd4!important}.cyan-border-right{border-right-color:#00bcd4!important}.cyan-border-bottom{border-bottom-color:#00bcd4!important}.cyan-border-left{border-left-color:#00bcd4!important}.cyan-600-bg{background-color:#00acc1!important}.md-cyan-600-bg{background-color:#00acc1!important;color:rgba(0,0,0,.87)}.cyan-600-fg{color:#00acc1!important}.cyan-600-border{border-color:#00acc1!important}.cyan-600-border-top{border-top-color:#00acc1!important}.cyan-600-border-right{border-right-color:#00acc1!important}.cyan-600-border-bottom{border-bottom-color:#00acc1!important}.cyan-600-border-left{border-left-color:#00acc1!important}.cyan-700-bg{background-color:#0097a7!important}.md-cyan-700-bg{background-color:#0097a7!important;color:#fff}.cyan-700-fg{color:#0097a7!important}.cyan-700-border{border-color:#0097a7!important}.cyan-700-border-top{border-top-color:#0097a7!important}.cyan-700-border-right{border-right-color:#0097a7!important}.cyan-700-border-bottom{border-bottom-color:#0097a7!important}.cyan-700-border-left{border-left-color:#0097a7!important}.cyan-800-bg{background-color:#00838f!important}.md-cyan-800-bg{background-color:#00838f!important;color:#fff}.cyan-800-fg{color:#00838f!important}.cyan-800-border{border-color:#00838f!important}.cyan-800-border-top{border-top-color:#00838f!important}.cyan-800-border-right{border-right-color:#00838f!important}.cyan-800-border-bottom{border-bottom-color:#00838f!important}.cyan-800-border-left{border-left-color:#00838f!important}.cyan-900-bg{background-color:#006064!important}.md-cyan-900-bg{background-color:#006064!important;color:#fff}.cyan-900-fg{color:#006064!important}.cyan-900-border{border-color:#006064!important}.cyan-900-border-top{border-top-color:#006064!important}.cyan-900-border-right{border-right-color:#006064!important}.cyan-900-border-bottom{border-bottom-color:#006064!important}.cyan-900-border-left{border-left-color:#006064!important}.cyan-A100-bg{background-color:#84ffff!important}.md-cyan-A100-bg{background-color:#84ffff!important;color:rgba(0,0,0,.87)}.cyan-A100-fg{color:#84ffff!important}.cyan-A100-border{border-color:#84ffff!important}.cyan-A100-border-top{border-top-color:#84ffff!important}.cyan-A100-border-right{border-right-color:#84ffff!important}.cyan-A100-border-bottom{border-bottom-color:#84ffff!important}.cyan-A100-border-left{border-left-color:#84ffff!important}.cyan-A200-bg{background-color:#18ffff!important}.md-cyan-A200-bg{background-color:#18ffff!important;color:rgba(0,0,0,.87)}.cyan-A200-fg{color:#18ffff!important}.cyan-A200-border{border-color:#18ffff!important}.cyan-A200-border-top{border-top-color:#18ffff!important}.cyan-A200-border-right{border-right-color:#18ffff!important}.cyan-A200-border-bottom{border-bottom-color:#18ffff!important}.cyan-A200-border-left{border-left-color:#18ffff!important}.cyan-A400-bg{background-color:#00e5ff!important}.md-cyan-A400-bg{background-color:#00e5ff!important;color:rgba(0,0,0,.87)}.cyan-A400-fg{color:#00e5ff!important}.cyan-A400-border{border-color:#00e5ff!important}.cyan-A400-border-top{border-top-color:#00e5ff!important}.cyan-A400-border-right{border-right-color:#00e5ff!important}.cyan-A400-border-bottom{border-bottom-color:#00e5ff!important}.cyan-A400-border-left{border-left-color:#00e5ff!important}.cyan-A700-bg{background-color:#00b8d4!important}.md-cyan-A700-bg{background-color:#00b8d4!important;color:rgba(0,0,0,.87)}.cyan-A700-fg{color:#00b8d4!important}.cyan-A700-border{border-color:#00b8d4!important}.cyan-A700-border-top{border-top-color:#00b8d4!important}.cyan-A700-border-right{border-right-color:#00b8d4!important}.cyan-A700-border-bottom{border-bottom-color:#00b8d4!important}.cyan-A700-border-left{border-left-color:#00b8d4!important}.teal-50-bg{background-color:#e0f2f1!important}.md-teal-50-bg{background-color:#e0f2f1!important;color:rgba(0,0,0,.87)}.teal-50-fg{color:#e0f2f1!important}.teal-50-border{border-color:#e0f2f1!important}.teal-50-border-top{border-top-color:#e0f2f1!important}.teal-50-border-right{border-right-color:#e0f2f1!important}.teal-50-border-bottom{border-bottom-color:#e0f2f1!important}.teal-50-border-left{border-left-color:#e0f2f1!important}.teal-100-bg{background-color:#b2dfdb!important}.md-teal-100-bg{background-color:#b2dfdb!important;color:rgba(0,0,0,.87)}.teal-100-fg{color:#b2dfdb!important}.teal-100-border{border-color:#b2dfdb!important}.teal-100-border-top{border-top-color:#b2dfdb!important}.teal-100-border-right{border-right-color:#b2dfdb!important}.teal-100-border-bottom{border-bottom-color:#b2dfdb!important}.teal-100-border-left{border-left-color:#b2dfdb!important}.teal-200-bg{background-color:#80cbc4!important}.md-teal-200-bg{background-color:#80cbc4!important;color:rgba(0,0,0,.87)}.teal-200-fg{color:#80cbc4!important}.teal-200-border{border-color:#80cbc4!important}.teal-200-border-top{border-top-color:#80cbc4!important}.teal-200-border-right{border-right-color:#80cbc4!important}.teal-200-border-bottom{border-bottom-color:#80cbc4!important}.teal-200-border-left{border-left-color:#80cbc4!important}.teal-300-bg{background-color:#4db6ac!important}.md-teal-300-bg{background-color:#4db6ac!important;color:rgba(0,0,0,.87)}.teal-300-fg{color:#4db6ac!important}.teal-300-border{border-color:#4db6ac!important}.teal-300-border-top{border-top-color:#4db6ac!important}.teal-300-border-right{border-right-color:#4db6ac!important}.teal-300-border-bottom{border-bottom-color:#4db6ac!important}.teal-300-border-left{border-left-color:#4db6ac!important}.teal-400-bg{background-color:#26a69a!important}.md-teal-400-bg{background-color:#26a69a!important;color:rgba(0,0,0,.87)}.teal-400-fg{color:#26a69a!important}.teal-400-border{border-color:#26a69a!important}.teal-400-border-top{border-top-color:#26a69a!important}.teal-400-border-right{border-right-color:#26a69a!important}.teal-400-border-bottom{border-bottom-color:#26a69a!important}.teal-400-border-left{border-left-color:#26a69a!important}.teal-500-bg{background-color:#009688!important}.md-teal-500-bg{background-color:#009688!important;color:#fff}.teal-500-fg{color:#009688!important}.teal-500-border{border-color:#009688!important}.teal-500-border-top{border-top-color:#009688!important}.teal-500-border-right{border-right-color:#009688!important}.teal-500-border-bottom{border-bottom-color:#009688!important}.teal-500-border-left{border-left-color:#009688!important}.md-teal-bg{background-color:#009688!important;color:#fff}.teal-bg{background-color:#009688!important}.teal-fg{color:#009688!important}.teal-border{border-color:#009688!important}.teal-border-top{border-top-color:#009688!important}.teal-border-right{border-right-color:#009688!important}.teal-border-bottom{border-bottom-color:#009688!important}.teal-border-left{border-left-color:#009688!important}.teal-600-bg{background-color:#00897b!important}.md-teal-600-bg{background-color:#00897b!important;color:#fff}.teal-600-fg{color:#00897b!important}.teal-600-border{border-color:#00897b!important}.teal-600-border-top{border-top-color:#00897b!important}.teal-600-border-right{border-right-color:#00897b!important}.teal-600-border-bottom{border-bottom-color:#00897b!important}.teal-600-border-left{border-left-color:#00897b!important}.teal-700-bg{background-color:#00796b!important}.md-teal-700-bg{background-color:#00796b!important;color:#fff}.teal-700-fg{color:#00796b!important}.teal-700-border{border-color:#00796b!important}.teal-700-border-top{border-top-color:#00796b!important}.teal-700-border-right{border-right-color:#00796b!important}.teal-700-border-bottom{border-bottom-color:#00796b!important}.teal-700-border-left{border-left-color:#00796b!important}.teal-800-bg{background-color:#00695c!important}.md-teal-800-bg{background-color:#00695c!important;color:rgba(255,255,255,.87)}.teal-800-fg{color:#00695c!important}.teal-800-border{border-color:#00695c!important}.teal-800-border-top{border-top-color:#00695c!important}.teal-800-border-right{border-right-color:#00695c!important}.teal-800-border-bottom{border-bottom-color:#00695c!important}.teal-800-border-left{border-left-color:#00695c!important}.teal-900-bg{background-color:#004d40!important}.md-teal-900-bg{background-color:#004d40!important;color:rgba(255,255,255,.87)}.teal-900-fg{color:#004d40!important}.teal-900-border{border-color:#004d40!important}.teal-900-border-top{border-top-color:#004d40!important}.teal-900-border-right{border-right-color:#004d40!important}.teal-900-border-bottom{border-bottom-color:#004d40!important}.teal-900-border-left{border-left-color:#004d40!important}.teal-A100-bg{background-color:#a7ffeb!important}.md-teal-A100-bg{background-color:#a7ffeb!important;color:rgba(0,0,0,.87)}.teal-A100-fg{color:#a7ffeb!important}.teal-A100-border{border-color:#a7ffeb!important}.teal-A100-border-top{border-top-color:#a7ffeb!important}.teal-A100-border-right{border-right-color:#a7ffeb!important}.teal-A100-border-bottom{border-bottom-color:#a7ffeb!important}.teal-A100-border-left{border-left-color:#a7ffeb!important}.teal-A200-bg{background-color:#64ffda!important}.md-teal-A200-bg{background-color:#64ffda!important;color:rgba(0,0,0,.87)}.teal-A200-fg{color:#64ffda!important}.teal-A200-border{border-color:#64ffda!important}.teal-A200-border-top{border-top-color:#64ffda!important}.teal-A200-border-right{border-right-color:#64ffda!important}.teal-A200-border-bottom{border-bottom-color:#64ffda!important}.teal-A200-border-left{border-left-color:#64ffda!important}.teal-A400-bg{background-color:#1de9b6!important}.md-teal-A400-bg{background-color:#1de9b6!important;color:rgba(0,0,0,.87)}.teal-A400-fg{color:#1de9b6!important}.teal-A400-border{border-color:#1de9b6!important}.teal-A400-border-top{border-top-color:#1de9b6!important}.teal-A400-border-right{border-right-color:#1de9b6!important}.teal-A400-border-bottom{border-bottom-color:#1de9b6!important}.teal-A400-border-left{border-left-color:#1de9b6!important}.teal-A700-bg{background-color:#00bfa5!important}.md-teal-A700-bg{background-color:#00bfa5!important;color:rgba(0,0,0,.87)}.teal-A700-fg{color:#00bfa5!important}.teal-A700-border{border-color:#00bfa5!important}.teal-A700-border-top{border-top-color:#00bfa5!important}.teal-A700-border-right{border-right-color:#00bfa5!important}.teal-A700-border-bottom{border-bottom-color:#00bfa5!important}.teal-A700-border-left{border-left-color:#00bfa5!important}.green-50-bg{background-color:#e8f5e9!important}.md-green-50-bg{background-color:#e8f5e9!important;color:rgba(0,0,0,.87)}.green-50-fg{color:#e8f5e9!important}.green-50-border{border-color:#e8f5e9!important}.green-50-border-top{border-top-color:#e8f5e9!important}.green-50-border-right{border-right-color:#e8f5e9!important}.green-50-border-bottom{border-bottom-color:#e8f5e9!important}.green-50-border-left{border-left-color:#e8f5e9!important}.green-100-bg{background-color:#c8e6c9!important}.md-green-100-bg{background-color:#c8e6c9!important;color:rgba(0,0,0,.87)}.green-100-fg{color:#c8e6c9!important}.green-100-border{border-color:#c8e6c9!important}.green-100-border-top{border-top-color:#c8e6c9!important}.green-100-border-right{border-right-color:#c8e6c9!important}.green-100-border-bottom{border-bottom-color:#c8e6c9!important}.green-100-border-left{border-left-color:#c8e6c9!important}.green-200-bg{background-color:#a5d6a7!important}.md-green-200-bg{background-color:#a5d6a7!important;color:rgba(0,0,0,.87)}.green-200-fg{color:#a5d6a7!important}.green-200-border{border-color:#a5d6a7!important}.green-200-border-top{border-top-color:#a5d6a7!important}.green-200-border-right{border-right-color:#a5d6a7!important}.green-200-border-bottom{border-bottom-color:#a5d6a7!important}.green-200-border-left{border-left-color:#a5d6a7!important}.green-300-bg{background-color:#81c784!important}.md-green-300-bg{background-color:#81c784!important;color:rgba(0,0,0,.87)}.green-300-fg{color:#81c784!important}.green-300-border{border-color:#81c784!important}.green-300-border-top{border-top-color:#81c784!important}.green-300-border-right{border-right-color:#81c784!important}.green-300-border-bottom{border-bottom-color:#81c784!important}.green-300-border-left{border-left-color:#81c784!important}.green-400-bg{background-color:#66bb6a!important}.md-green-400-bg{background-color:#66bb6a!important;color:rgba(0,0,0,.87)}.green-400-fg{color:#66bb6a!important}.green-400-border{border-color:#66bb6a!important}.green-400-border-top{border-top-color:#66bb6a!important}.green-400-border-right{border-right-color:#66bb6a!important}.green-400-border-bottom{border-bottom-color:#66bb6a!important}.green-400-border-left{border-left-color:#66bb6a!important}.green-500-bg{background-color:#4caf50!important}.md-green-500-bg{background-color:#4caf50!important;color:rgba(0,0,0,.87)}.green-500-fg{color:#4caf50!important}.green-500-border{border-color:#4caf50!important}.green-500-border-top{border-top-color:#4caf50!important}.green-500-border-right{border-right-color:#4caf50!important}.green-500-border-bottom{border-bottom-color:#4caf50!important}.green-500-border-left{border-left-color:#4caf50!important}.md-green-bg{background-color:#4caf50!important;color:rgba(0,0,0,.87)}.green-bg{background-color:#4caf50!important}.green-fg{color:#4caf50!important}.green-border{border-color:#4caf50!important}.green-border-top{border-top-color:#4caf50!important}.green-border-right{border-right-color:#4caf50!important}.green-border-bottom{border-bottom-color:#4caf50!important}.green-border-left{border-left-color:#4caf50!important}.green-600-bg{background-color:#43a047!important}.md-green-600-bg{background-color:#43a047!important;color:#fff}.green-600-fg{color:#43a047!important}.green-600-border{border-color:#43a047!important}.green-600-border-top{border-top-color:#43a047!important}.green-600-border-right{border-right-color:#43a047!important}.green-600-border-bottom{border-bottom-color:#43a047!important}.green-600-border-left{border-left-color:#43a047!important}.green-700-bg{background-color:#388e3c!important}.md-green-700-bg{background-color:#388e3c!important;color:#fff}.green-700-fg{color:#388e3c!important}.green-700-border{border-color:#388e3c!important}.green-700-border-top{border-top-color:#388e3c!important}.green-700-border-right{border-right-color:#388e3c!important}.green-700-border-bottom{border-bottom-color:#388e3c!important}.green-700-border-left{border-left-color:#388e3c!important}.green-800-bg{background-color:#2e7d32!important}.md-green-800-bg{background-color:#2e7d32!important;color:rgba(255,255,255,.87)}.green-800-fg{color:#2e7d32!important}.green-800-border{border-color:#2e7d32!important}.green-800-border-top{border-top-color:#2e7d32!important}.green-800-border-right{border-right-color:#2e7d32!important}.green-800-border-bottom{border-bottom-color:#2e7d32!important}.green-800-border-left{border-left-color:#2e7d32!important}.green-900-bg{background-color:#1b5e20!important}.md-green-900-bg{background-color:#1b5e20!important;color:rgba(255,255,255,.87)}.green-900-fg{color:#1b5e20!important}.green-900-border{border-color:#1b5e20!important}.green-900-border-top{border-top-color:#1b5e20!important}.green-900-border-right{border-right-color:#1b5e20!important}.green-900-border-bottom{border-bottom-color:#1b5e20!important}.green-900-border-left{border-left-color:#1b5e20!important}.green-A100-bg{background-color:#b9f6ca!important}.md-green-A100-bg{background-color:#b9f6ca!important;color:rgba(0,0,0,.87)}.green-A100-fg{color:#b9f6ca!important}.green-A100-border{border-color:#b9f6ca!important}.green-A100-border-top{border-top-color:#b9f6ca!important}.green-A100-border-right{border-right-color:#b9f6ca!important}.green-A100-border-bottom{border-bottom-color:#b9f6ca!important}.green-A100-border-left{border-left-color:#b9f6ca!important}.green-A200-bg{background-color:#69f0ae!important}.md-green-A200-bg{background-color:#69f0ae!important;color:rgba(0,0,0,.87)}.green-A200-fg{color:#69f0ae!important}.green-A200-border{border-color:#69f0ae!important}.green-A200-border-top{border-top-color:#69f0ae!important}.green-A200-border-right{border-right-color:#69f0ae!important}.green-A200-border-bottom{border-bottom-color:#69f0ae!important}.green-A200-border-left{border-left-color:#69f0ae!important}.green-A400-bg{background-color:#00e676!important}.md-green-A400-bg{background-color:#00e676!important;color:rgba(0,0,0,.87)}.green-A400-fg{color:#00e676!important}.green-A400-border{border-color:#00e676!important}.green-A400-border-top{border-top-color:#00e676!important}.green-A400-border-right{border-right-color:#00e676!important}.green-A400-border-bottom{border-bottom-color:#00e676!important}.green-A400-border-left{border-left-color:#00e676!important}.green-A700-bg{background-color:#00c853!important}.md-green-A700-bg{background-color:#00c853!important;color:rgba(0,0,0,.87)}.green-A700-fg{color:#00c853!important}.green-A700-border{border-color:#00c853!important}.green-A700-border-top{border-top-color:#00c853!important}.green-A700-border-right{border-right-color:#00c853!important}.green-A700-border-bottom{border-bottom-color:#00c853!important}.green-A700-border-left{border-left-color:#00c853!important}.light-green-50-bg{background-color:#f1f8e9!important}.md-light-green-50-bg{background-color:#f1f8e9!important;color:rgba(0,0,0,.87)}.light-green-50-fg{color:#f1f8e9!important}.light-green-50-border{border-color:#f1f8e9!important}.light-green-50-border-top{border-top-color:#f1f8e9!important}.light-green-50-border-right{border-right-color:#f1f8e9!important}.light-green-50-border-bottom{border-bottom-color:#f1f8e9!important}.light-green-50-border-left{border-left-color:#f1f8e9!important}.light-green-100-bg{background-color:#dcedc8!important}.md-light-green-100-bg{background-color:#dcedc8!important;color:rgba(0,0,0,.87)}.light-green-100-fg{color:#dcedc8!important}.light-green-100-border{border-color:#dcedc8!important}.light-green-100-border-top{border-top-color:#dcedc8!important}.light-green-100-border-right{border-right-color:#dcedc8!important}.light-green-100-border-bottom{border-bottom-color:#dcedc8!important}.light-green-100-border-left{border-left-color:#dcedc8!important}.light-green-200-bg{background-color:#c5e1a5!important}.md-light-green-200-bg{background-color:#c5e1a5!important;color:rgba(0,0,0,.87)}.light-green-200-fg{color:#c5e1a5!important}.light-green-200-border{border-color:#c5e1a5!important}.light-green-200-border-top{border-top-color:#c5e1a5!important}.light-green-200-border-right{border-right-color:#c5e1a5!important}.light-green-200-border-bottom{border-bottom-color:#c5e1a5!important}.light-green-200-border-left{border-left-color:#c5e1a5!important}.light-green-300-bg{background-color:#aed581!important}.md-light-green-300-bg{background-color:#aed581!important;color:rgba(0,0,0,.87)}.light-green-300-fg{color:#aed581!important}.light-green-300-border{border-color:#aed581!important}.light-green-300-border-top{border-top-color:#aed581!important}.light-green-300-border-right{border-right-color:#aed581!important}.light-green-300-border-bottom{border-bottom-color:#aed581!important}.light-green-300-border-left{border-left-color:#aed581!important}.light-green-400-bg{background-color:#9ccc65!important}.md-light-green-400-bg{background-color:#9ccc65!important;color:rgba(0,0,0,.87)}.light-green-400-fg{color:#9ccc65!important}.light-green-400-border{border-color:#9ccc65!important}.light-green-400-border-top{border-top-color:#9ccc65!important}.light-green-400-border-right{border-right-color:#9ccc65!important}.light-green-400-border-bottom{border-bottom-color:#9ccc65!important}.light-green-400-border-left{border-left-color:#9ccc65!important}.light-green-500-bg{background-color:#8bc34a!important}.md-light-green-500-bg{background-color:#8bc34a!important;color:rgba(0,0,0,.87)}.light-green-500-fg{color:#8bc34a!important}.light-green-500-border{border-color:#8bc34a!important}.light-green-500-border-top{border-top-color:#8bc34a!important}.light-green-500-border-right{border-right-color:#8bc34a!important}.light-green-500-border-bottom{border-bottom-color:#8bc34a!important}.light-green-500-border-left{border-left-color:#8bc34a!important}.md-light-green-bg{background-color:#8bc34a!important;color:rgba(0,0,0,.87)}.light-green-bg{background-color:#8bc34a!important}.light-green-fg{color:#8bc34a!important}.light-green-border{border-color:#8bc34a!important}.light-green-border-top{border-top-color:#8bc34a!important}.light-green-border-right{border-right-color:#8bc34a!important}.light-green-border-bottom{border-bottom-color:#8bc34a!important}.light-green-border-left{border-left-color:#8bc34a!important}.light-green-600-bg{background-color:#7cb342!important}.md-light-green-600-bg{background-color:#7cb342!important;color:rgba(0,0,0,.87)}.light-green-600-fg{color:#7cb342!important}.light-green-600-border{border-color:#7cb342!important}.light-green-600-border-top{border-top-color:#7cb342!important}.light-green-600-border-right{border-right-color:#7cb342!important}.light-green-600-border-bottom{border-bottom-color:#7cb342!important}.light-green-600-border-left{border-left-color:#7cb342!important}.light-green-700-bg{background-color:#689f38!important}.md-light-green-700-bg{background-color:#689f38!important;color:#fff}.light-green-700-fg{color:#689f38!important}.light-green-700-border{border-color:#689f38!important}.light-green-700-border-top{border-top-color:#689f38!important}.light-green-700-border-right{border-right-color:#689f38!important}.light-green-700-border-bottom{border-bottom-color:#689f38!important}.light-green-700-border-left{border-left-color:#689f38!important}.light-green-800-bg{background-color:#558b2f!important}.md-light-green-800-bg{background-color:#558b2f!important;color:#fff}.light-green-800-fg{color:#558b2f!important}.light-green-800-border{border-color:#558b2f!important}.light-green-800-border-top{border-top-color:#558b2f!important}.light-green-800-border-right{border-right-color:#558b2f!important}.light-green-800-border-bottom{border-bottom-color:#558b2f!important}.light-green-800-border-left{border-left-color:#558b2f!important}.light-green-900-bg{background-color:#33691e!important}.md-light-green-900-bg{background-color:#33691e!important;color:#fff}.light-green-900-fg{color:#33691e!important}.light-green-900-border{border-color:#33691e!important}.light-green-900-border-top{border-top-color:#33691e!important}.light-green-900-border-right{border-right-color:#33691e!important}.light-green-900-border-bottom{border-bottom-color:#33691e!important}.light-green-900-border-left{border-left-color:#33691e!important}.light-green-A100-bg{background-color:#ccff90!important}.md-light-green-A100-bg{background-color:#ccff90!important;color:rgba(0,0,0,.87)}.light-green-A100-fg{color:#ccff90!important}.light-green-A100-border{border-color:#ccff90!important}.light-green-A100-border-top{border-top-color:#ccff90!important}.light-green-A100-border-right{border-right-color:#ccff90!important}.light-green-A100-border-bottom{border-bottom-color:#ccff90!important}.light-green-A100-border-left{border-left-color:#ccff90!important}.light-green-A200-bg{background-color:#b2ff59!important}.md-light-green-A200-bg{background-color:#b2ff59!important;color:rgba(0,0,0,.87)}.light-green-A200-fg{color:#b2ff59!important}.light-green-A200-border{border-color:#b2ff59!important}.light-green-A200-border-top{border-top-color:#b2ff59!important}.light-green-A200-border-right{border-right-color:#b2ff59!important}.light-green-A200-border-bottom{border-bottom-color:#b2ff59!important}.light-green-A200-border-left{border-left-color:#b2ff59!important}.light-green-A400-bg{background-color:#76ff03!important}.md-light-green-A400-bg{background-color:#76ff03!important;color:rgba(0,0,0,.87)}.light-green-A400-fg{color:#76ff03!important}.light-green-A400-border{border-color:#76ff03!important}.light-green-A400-border-top{border-top-color:#76ff03!important}.light-green-A400-border-right{border-right-color:#76ff03!important}.light-green-A400-border-bottom{border-bottom-color:#76ff03!important}.light-green-A400-border-left{border-left-color:#76ff03!important}.light-green-A700-bg{background-color:#64dd17!important}.md-light-green-A700-bg{background-color:#64dd17!important;color:rgba(0,0,0,.87)}.light-green-A700-fg{color:#64dd17!important}.light-green-A700-border{border-color:#64dd17!important}.light-green-A700-border-top{border-top-color:#64dd17!important}.light-green-A700-border-right{border-right-color:#64dd17!important}.light-green-A700-border-bottom{border-bottom-color:#64dd17!important}.light-green-A700-border-left{border-left-color:#64dd17!important}.lime-50-bg{background-color:#f9fbe7!important}.md-lime-50-bg{background-color:#f9fbe7!important;color:rgba(0,0,0,.87)}.lime-50-fg{color:#f9fbe7!important}.lime-50-border{border-color:#f9fbe7!important}.lime-50-border-top{border-top-color:#f9fbe7!important}.lime-50-border-right{border-right-color:#f9fbe7!important}.lime-50-border-bottom{border-bottom-color:#f9fbe7!important}.lime-50-border-left{border-left-color:#f9fbe7!important}.lime-100-bg{background-color:#f0f4c3!important}.md-lime-100-bg{background-color:#f0f4c3!important;color:rgba(0,0,0,.87)}.lime-100-fg{color:#f0f4c3!important}.lime-100-border{border-color:#f0f4c3!important}.lime-100-border-top{border-top-color:#f0f4c3!important}.lime-100-border-right{border-right-color:#f0f4c3!important}.lime-100-border-bottom{border-bottom-color:#f0f4c3!important}.lime-100-border-left{border-left-color:#f0f4c3!important}.lime-200-bg{background-color:#e6ee9c!important}.md-lime-200-bg{background-color:#e6ee9c!important;color:rgba(0,0,0,.87)}.lime-200-fg{color:#e6ee9c!important}.lime-200-border{border-color:#e6ee9c!important}.lime-200-border-top{border-top-color:#e6ee9c!important}.lime-200-border-right{border-right-color:#e6ee9c!important}.lime-200-border-bottom{border-bottom-color:#e6ee9c!important}.lime-200-border-left{border-left-color:#e6ee9c!important}.lime-300-bg{background-color:#dce775!important}.md-lime-300-bg{background-color:#dce775!important;color:rgba(0,0,0,.87)}.lime-300-fg{color:#dce775!important}.lime-300-border{border-color:#dce775!important}.lime-300-border-top{border-top-color:#dce775!important}.lime-300-border-right{border-right-color:#dce775!important}.lime-300-border-bottom{border-bottom-color:#dce775!important}.lime-300-border-left{border-left-color:#dce775!important}.lime-400-bg{background-color:#d4e157!important}.md-lime-400-bg{background-color:#d4e157!important;color:rgba(0,0,0,.87)}.lime-400-fg{color:#d4e157!important}.lime-400-border{border-color:#d4e157!important}.lime-400-border-top{border-top-color:#d4e157!important}.lime-400-border-right{border-right-color:#d4e157!important}.lime-400-border-bottom{border-bottom-color:#d4e157!important}.lime-400-border-left{border-left-color:#d4e157!important}.lime-500-bg{background-color:#cddc39!important}.md-lime-500-bg{background-color:#cddc39!important;color:rgba(0,0,0,.87)}.lime-500-fg{color:#cddc39!important}.lime-500-border{border-color:#cddc39!important}.lime-500-border-top{border-top-color:#cddc39!important}.lime-500-border-right{border-right-color:#cddc39!important}.lime-500-border-bottom{border-bottom-color:#cddc39!important}.lime-500-border-left{border-left-color:#cddc39!important}.md-lime-bg{background-color:#cddc39!important;color:rgba(0,0,0,.87)}.lime-bg{background-color:#cddc39!important}.lime-fg{color:#cddc39!important}.lime-border{border-color:#cddc39!important}.lime-border-top{border-top-color:#cddc39!important}.lime-border-right{border-right-color:#cddc39!important}.lime-border-bottom{border-bottom-color:#cddc39!important}.lime-border-left{border-left-color:#cddc39!important}.lime-600-bg{background-color:#c0ca33!important}.md-lime-600-bg{background-color:#c0ca33!important;color:rgba(0,0,0,.87)}.lime-600-fg{color:#c0ca33!important}.lime-600-border{border-color:#c0ca33!important}.lime-600-border-top{border-top-color:#c0ca33!important}.lime-600-border-right{border-right-color:#c0ca33!important}.lime-600-border-bottom{border-bottom-color:#c0ca33!important}.lime-600-border-left{border-left-color:#c0ca33!important}.lime-700-bg{background-color:#afb42b!important}.md-lime-700-bg{background-color:#afb42b!important;color:rgba(0,0,0,.87)}.lime-700-fg{color:#afb42b!important}.lime-700-border{border-color:#afb42b!important}.lime-700-border-top{border-top-color:#afb42b!important}.lime-700-border-right{border-right-color:#afb42b!important}.lime-700-border-bottom{border-bottom-color:#afb42b!important}.lime-700-border-left{border-left-color:#afb42b!important}.lime-800-bg{background-color:#9e9d24!important}.md-lime-800-bg{background-color:#9e9d24!important;color:rgba(0,0,0,.87)}.lime-800-fg{color:#9e9d24!important}.lime-800-border{border-color:#9e9d24!important}.lime-800-border-top{border-top-color:#9e9d24!important}.lime-800-border-right{border-right-color:#9e9d24!important}.lime-800-border-bottom{border-bottom-color:#9e9d24!important}.lime-800-border-left{border-left-color:#9e9d24!important}.lime-900-bg{background-color:#827717!important}.md-lime-900-bg{background-color:#827717!important;color:#fff}.lime-900-fg{color:#827717!important}.lime-900-border{border-color:#827717!important}.lime-900-border-top{border-top-color:#827717!important}.lime-900-border-right{border-right-color:#827717!important}.lime-900-border-bottom{border-bottom-color:#827717!important}.lime-900-border-left{border-left-color:#827717!important}.lime-A100-bg{background-color:#f4ff81!important}.md-lime-A100-bg{background-color:#f4ff81!important;color:rgba(0,0,0,.87)}.lime-A100-fg{color:#f4ff81!important}.lime-A100-border{border-color:#f4ff81!important}.lime-A100-border-top{border-top-color:#f4ff81!important}.lime-A100-border-right{border-right-color:#f4ff81!important}.lime-A100-border-bottom{border-bottom-color:#f4ff81!important}.lime-A100-border-left{border-left-color:#f4ff81!important}.lime-A200-bg{background-color:#eeff41!important}.md-lime-A200-bg{background-color:#eeff41!important;color:rgba(0,0,0,.87)}.lime-A200-fg{color:#eeff41!important}.lime-A200-border{border-color:#eeff41!important}.lime-A200-border-top{border-top-color:#eeff41!important}.lime-A200-border-right{border-right-color:#eeff41!important}.lime-A200-border-bottom{border-bottom-color:#eeff41!important}.lime-A200-border-left{border-left-color:#eeff41!important}.lime-A400-bg{background-color:#c6ff00!important}.md-lime-A400-bg{background-color:#c6ff00!important;color:rgba(0,0,0,.87)}.lime-A400-fg{color:#c6ff00!important}.lime-A400-border{border-color:#c6ff00!important}.lime-A400-border-top{border-top-color:#c6ff00!important}.lime-A400-border-right{border-right-color:#c6ff00!important}.lime-A400-border-bottom{border-bottom-color:#c6ff00!important}.lime-A400-border-left{border-left-color:#c6ff00!important}.lime-A700-bg{background-color:#aeea00!important}.md-lime-A700-bg{background-color:#aeea00!important;color:rgba(0,0,0,.87)}.lime-A700-fg{color:#aeea00!important}.lime-A700-border{border-color:#aeea00!important}.lime-A700-border-top{border-top-color:#aeea00!important}.lime-A700-border-right{border-right-color:#aeea00!important}.lime-A700-border-bottom{border-bottom-color:#aeea00!important}.lime-A700-border-left{border-left-color:#aeea00!important}.yellow-50-bg{background-color:#fffde7!important}.md-yellow-50-bg{background-color:#fffde7!important;color:rgba(0,0,0,.87)}.yellow-50-fg{color:#fffde7!important}.yellow-50-border{border-color:#fffde7!important}.yellow-50-border-top{border-top-color:#fffde7!important}.yellow-50-border-right{border-right-color:#fffde7!important}.yellow-50-border-bottom{border-bottom-color:#fffde7!important}.yellow-50-border-left{border-left-color:#fffde7!important}.yellow-100-bg{background-color:#fff9c4!important}.md-yellow-100-bg{background-color:#fff9c4!important;color:rgba(0,0,0,.87)}.yellow-100-fg{color:#fff9c4!important}.yellow-100-border{border-color:#fff9c4!important}.yellow-100-border-top{border-top-color:#fff9c4!important}.yellow-100-border-right{border-right-color:#fff9c4!important}.yellow-100-border-bottom{border-bottom-color:#fff9c4!important}.yellow-100-border-left{border-left-color:#fff9c4!important}.yellow-200-bg{background-color:#fff59d!important}.md-yellow-200-bg{background-color:#fff59d!important;color:rgba(0,0,0,.87)}.yellow-200-fg{color:#fff59d!important}.yellow-200-border{border-color:#fff59d!important}.yellow-200-border-top{border-top-color:#fff59d!important}.yellow-200-border-right{border-right-color:#fff59d!important}.yellow-200-border-bottom{border-bottom-color:#fff59d!important}.yellow-200-border-left{border-left-color:#fff59d!important}.yellow-300-bg{background-color:#fff176!important}.md-yellow-300-bg{background-color:#fff176!important;color:rgba(0,0,0,.87)}.yellow-300-fg{color:#fff176!important}.yellow-300-border{border-color:#fff176!important}.yellow-300-border-top{border-top-color:#fff176!important}.yellow-300-border-right{border-right-color:#fff176!important}.yellow-300-border-bottom{border-bottom-color:#fff176!important}.yellow-300-border-left{border-left-color:#fff176!important}.yellow-400-bg{background-color:#ffee58!important}.md-yellow-400-bg{background-color:#ffee58!important;color:rgba(0,0,0,.87)}.yellow-400-fg{color:#ffee58!important}.yellow-400-border{border-color:#ffee58!important}.yellow-400-border-top{border-top-color:#ffee58!important}.yellow-400-border-right{border-right-color:#ffee58!important}.yellow-400-border-bottom{border-bottom-color:#ffee58!important}.yellow-400-border-left{border-left-color:#ffee58!important}.yellow-500-bg{background-color:#ffeb3b!important}.md-yellow-500-bg{background-color:#ffeb3b!important;color:rgba(0,0,0,.87)}.yellow-500-fg{color:#ffeb3b!important}.yellow-500-border{border-color:#ffeb3b!important}.yellow-500-border-top{border-top-color:#ffeb3b!important}.yellow-500-border-right{border-right-color:#ffeb3b!important}.yellow-500-border-bottom{border-bottom-color:#ffeb3b!important}.yellow-500-border-left{border-left-color:#ffeb3b!important}.md-yellow-bg{background-color:#ffeb3b!important;color:rgba(0,0,0,.87)}.yellow-bg{background-color:#ffeb3b!important}.yellow-fg{color:#ffeb3b!important}.yellow-border{border-color:#ffeb3b!important}.yellow-border-top{border-top-color:#ffeb3b!important}.yellow-border-right{border-right-color:#ffeb3b!important}.yellow-border-bottom{border-bottom-color:#ffeb3b!important}.yellow-border-left{border-left-color:#ffeb3b!important}.yellow-600-bg{background-color:#fdd835!important}.md-yellow-600-bg{background-color:#fdd835!important;color:rgba(0,0,0,.87)}.yellow-600-fg{color:#fdd835!important}.yellow-600-border{border-color:#fdd835!important}.yellow-600-border-top{border-top-color:#fdd835!important}.yellow-600-border-right{border-right-color:#fdd835!important}.yellow-600-border-bottom{border-bottom-color:#fdd835!important}.yellow-600-border-left{border-left-color:#fdd835!important}.yellow-700-bg{background-color:#fbc02d!important}.md-yellow-700-bg{background-color:#fbc02d!important;color:rgba(0,0,0,.87)}.yellow-700-fg{color:#fbc02d!important}.yellow-700-border{border-color:#fbc02d!important}.yellow-700-border-top{border-top-color:#fbc02d!important}.yellow-700-border-right{border-right-color:#fbc02d!important}.yellow-700-border-bottom{border-bottom-color:#fbc02d!important}.yellow-700-border-left{border-left-color:#fbc02d!important}.yellow-800-bg{background-color:#f9a825!important}.md-yellow-800-bg{background-color:#f9a825!important;color:rgba(0,0,0,.87)}.yellow-800-fg{color:#f9a825!important}.yellow-800-border{border-color:#f9a825!important}.yellow-800-border-top{border-top-color:#f9a825!important}.yellow-800-border-right{border-right-color:#f9a825!important}.yellow-800-border-bottom{border-bottom-color:#f9a825!important}.yellow-800-border-left{border-left-color:#f9a825!important}.yellow-900-bg{background-color:#f57f17!important}.md-yellow-900-bg{background-color:#f57f17!important;color:rgba(0,0,0,.87)}.yellow-900-fg{color:#f57f17!important}.yellow-900-border{border-color:#f57f17!important}.yellow-900-border-top{border-top-color:#f57f17!important}.yellow-900-border-right{border-right-color:#f57f17!important}.yellow-900-border-bottom{border-bottom-color:#f57f17!important}.yellow-900-border-left{border-left-color:#f57f17!important}.yellow-A100-bg{background-color:#ffff8d!important}.md-yellow-A100-bg{background-color:#ffff8d!important;color:rgba(0,0,0,.87)}.yellow-A100-fg{color:#ffff8d!important}.yellow-A100-border{border-color:#ffff8d!important}.yellow-A100-border-top{border-top-color:#ffff8d!important}.yellow-A100-border-right{border-right-color:#ffff8d!important}.yellow-A100-border-bottom{border-bottom-color:#ffff8d!important}.yellow-A100-border-left{border-left-color:#ffff8d!important}.yellow-A200-bg{background-color:#ff0!important}.md-yellow-A200-bg{background-color:#ff0!important;color:rgba(0,0,0,.87)}.yellow-A200-fg{color:#ff0!important}.yellow-A200-border{border-color:#ff0!important}.yellow-A200-border-top{border-top-color:#ff0!important}.yellow-A200-border-right{border-right-color:#ff0!important}.yellow-A200-border-bottom{border-bottom-color:#ff0!important}.yellow-A200-border-left{border-left-color:#ff0!important}.yellow-A400-bg{background-color:#ffea00!important}.md-yellow-A400-bg{background-color:#ffea00!important;color:rgba(0,0,0,.87)}.yellow-A400-fg{color:#ffea00!important}.yellow-A400-border{border-color:#ffea00!important}.yellow-A400-border-top{border-top-color:#ffea00!important}.yellow-A400-border-right{border-right-color:#ffea00!important}.yellow-A400-border-bottom{border-bottom-color:#ffea00!important}.yellow-A400-border-left{border-left-color:#ffea00!important}.yellow-A700-bg{background-color:#ffd600!important}.md-yellow-A700-bg{background-color:#ffd600!important;color:rgba(0,0,0,.87)}.yellow-A700-fg{color:#ffd600!important}.yellow-A700-border{border-color:#ffd600!important}.yellow-A700-border-top{border-top-color:#ffd600!important}.yellow-A700-border-right{border-right-color:#ffd600!important}.yellow-A700-border-bottom{border-bottom-color:#ffd600!important}.yellow-A700-border-left{border-left-color:#ffd600!important}.amber-50-bg{background-color:#fff8e1!important}.md-amber-50-bg{background-color:#fff8e1!important;color:rgba(0,0,0,.87)}.amber-50-fg{color:#fff8e1!important}.amber-50-border{border-color:#fff8e1!important}.amber-50-border-top{border-top-color:#fff8e1!important}.amber-50-border-right{border-right-color:#fff8e1!important}.amber-50-border-bottom{border-bottom-color:#fff8e1!important}.amber-50-border-left{border-left-color:#fff8e1!important}.amber-100-bg{background-color:#ffecb3!important}.md-amber-100-bg{background-color:#ffecb3!important;color:rgba(0,0,0,.87)}.amber-100-fg{color:#ffecb3!important}.amber-100-border{border-color:#ffecb3!important}.amber-100-border-top{border-top-color:#ffecb3!important}.amber-100-border-right{border-right-color:#ffecb3!important}.amber-100-border-bottom{border-bottom-color:#ffecb3!important}.amber-100-border-left{border-left-color:#ffecb3!important}.amber-200-bg{background-color:#ffe082!important}.md-amber-200-bg{background-color:#ffe082!important;color:rgba(0,0,0,.87)}.amber-200-fg{color:#ffe082!important}.amber-200-border{border-color:#ffe082!important}.amber-200-border-top{border-top-color:#ffe082!important}.amber-200-border-right{border-right-color:#ffe082!important}.amber-200-border-bottom{border-bottom-color:#ffe082!important}.amber-200-border-left{border-left-color:#ffe082!important}.amber-300-bg{background-color:#ffd54f!important}.md-amber-300-bg{background-color:#ffd54f!important;color:rgba(0,0,0,.87)}.amber-300-fg{color:#ffd54f!important}.amber-300-border{border-color:#ffd54f!important}.amber-300-border-top{border-top-color:#ffd54f!important}.amber-300-border-right{border-right-color:#ffd54f!important}.amber-300-border-bottom{border-bottom-color:#ffd54f!important}.amber-300-border-left{border-left-color:#ffd54f!important}.amber-400-bg{background-color:#ffca28!important}.md-amber-400-bg{background-color:#ffca28!important;color:rgba(0,0,0,.87)}.amber-400-fg{color:#ffca28!important}.amber-400-border{border-color:#ffca28!important}.amber-400-border-top{border-top-color:#ffca28!important}.amber-400-border-right{border-right-color:#ffca28!important}.amber-400-border-bottom{border-bottom-color:#ffca28!important}.amber-400-border-left{border-left-color:#ffca28!important}.amber-500-bg{background-color:#ffc107!important}.md-amber-500-bg{background-color:#ffc107!important;color:rgba(0,0,0,.87)}.amber-500-fg{color:#ffc107!important}.amber-500-border{border-color:#ffc107!important}.amber-500-border-top{border-top-color:#ffc107!important}.amber-500-border-right{border-right-color:#ffc107!important}.amber-500-border-bottom{border-bottom-color:#ffc107!important}.amber-500-border-left{border-left-color:#ffc107!important}.md-amber-bg{background-color:#ffc107!important;color:rgba(0,0,0,.87)}.amber-bg{background-color:#ffc107!important}.amber-fg{color:#ffc107!important}.amber-border{border-color:#ffc107!important}.amber-border-top{border-top-color:#ffc107!important}.amber-border-right{border-right-color:#ffc107!important}.amber-border-bottom{border-bottom-color:#ffc107!important}.amber-border-left{border-left-color:#ffc107!important}.amber-600-bg{background-color:#ffb300!important}.md-amber-600-bg{background-color:#ffb300!important;color:rgba(0,0,0,.87)}.amber-600-fg{color:#ffb300!important}.amber-600-border{border-color:#ffb300!important}.amber-600-border-top{border-top-color:#ffb300!important}.amber-600-border-right{border-right-color:#ffb300!important}.amber-600-border-bottom{border-bottom-color:#ffb300!important}.amber-600-border-left{border-left-color:#ffb300!important}.amber-700-bg{background-color:#ffa000!important}.md-amber-700-bg{background-color:#ffa000!important;color:rgba(0,0,0,.87)}.amber-700-fg{color:#ffa000!important}.amber-700-border{border-color:#ffa000!important}.amber-700-border-top{border-top-color:#ffa000!important}.amber-700-border-right{border-right-color:#ffa000!important}.amber-700-border-bottom{border-bottom-color:#ffa000!important}.amber-700-border-left{border-left-color:#ffa000!important}.amber-800-bg{background-color:#ff8f00!important}.md-amber-800-bg{background-color:#ff8f00!important;color:rgba(0,0,0,.87)}.amber-800-fg{color:#ff8f00!important}.amber-800-border{border-color:#ff8f00!important}.amber-800-border-top{border-top-color:#ff8f00!important}.amber-800-border-right{border-right-color:#ff8f00!important}.amber-800-border-bottom{border-bottom-color:#ff8f00!important}.amber-800-border-left{border-left-color:#ff8f00!important}.amber-900-bg{background-color:#ff6f00!important}.md-amber-900-bg{background-color:#ff6f00!important;color:rgba(0,0,0,.87)}.amber-900-fg{color:#ff6f00!important}.amber-900-border{border-color:#ff6f00!important}.amber-900-border-top{border-top-color:#ff6f00!important}.amber-900-border-right{border-right-color:#ff6f00!important}.amber-900-border-bottom{border-bottom-color:#ff6f00!important}.amber-900-border-left{border-left-color:#ff6f00!important}.amber-A100-bg{background-color:#ffe57f!important}.md-amber-A100-bg{background-color:#ffe57f!important;color:rgba(0,0,0,.87)}.amber-A100-fg{color:#ffe57f!important}.amber-A100-border{border-color:#ffe57f!important}.amber-A100-border-top{border-top-color:#ffe57f!important}.amber-A100-border-right{border-right-color:#ffe57f!important}.amber-A100-border-bottom{border-bottom-color:#ffe57f!important}.amber-A100-border-left{border-left-color:#ffe57f!important}.amber-A200-bg{background-color:#ffd740!important}.md-amber-A200-bg{background-color:#ffd740!important;color:rgba(0,0,0,.87)}.amber-A200-fg{color:#ffd740!important}.amber-A200-border{border-color:#ffd740!important}.amber-A200-border-top{border-top-color:#ffd740!important}.amber-A200-border-right{border-right-color:#ffd740!important}.amber-A200-border-bottom{border-bottom-color:#ffd740!important}.amber-A200-border-left{border-left-color:#ffd740!important}.amber-A400-bg{background-color:#ffc400!important}.md-amber-A400-bg{background-color:#ffc400!important;color:rgba(0,0,0,.87)}.amber-A400-fg{color:#ffc400!important}.amber-A400-border{border-color:#ffc400!important}.amber-A400-border-top{border-top-color:#ffc400!important}.amber-A400-border-right{border-right-color:#ffc400!important}.amber-A400-border-bottom{border-bottom-color:#ffc400!important}.amber-A400-border-left{border-left-color:#ffc400!important}.amber-A700-bg{background-color:#ffab00!important}.md-amber-A700-bg{background-color:#ffab00!important;color:rgba(0,0,0,.87)}.amber-A700-fg{color:#ffab00!important}.amber-A700-border{border-color:#ffab00!important}.amber-A700-border-top{border-top-color:#ffab00!important}.amber-A700-border-right{border-right-color:#ffab00!important}.amber-A700-border-bottom{border-bottom-color:#ffab00!important}.amber-A700-border-left{border-left-color:#ffab00!important}.orange-50-bg{background-color:#fff3e0!important}.md-orange-50-bg{background-color:#fff3e0!important;color:rgba(0,0,0,.87)}.orange-50-fg{color:#fff3e0!important}.orange-50-border{border-color:#fff3e0!important}.orange-50-border-top{border-top-color:#fff3e0!important}.orange-50-border-right{border-right-color:#fff3e0!important}.orange-50-border-bottom{border-bottom-color:#fff3e0!important}.orange-50-border-left{border-left-color:#fff3e0!important}.orange-100-bg{background-color:#ffe0b2!important}.md-orange-100-bg{background-color:#ffe0b2!important;color:rgba(0,0,0,.87)}.orange-100-fg{color:#ffe0b2!important}.orange-100-border{border-color:#ffe0b2!important}.orange-100-border-top{border-top-color:#ffe0b2!important}.orange-100-border-right{border-right-color:#ffe0b2!important}.orange-100-border-bottom{border-bottom-color:#ffe0b2!important}.orange-100-border-left{border-left-color:#ffe0b2!important}.orange-200-bg{background-color:#ffcc80!important}.md-orange-200-bg{background-color:#ffcc80!important;color:rgba(0,0,0,.87)}.orange-200-fg{color:#ffcc80!important}.orange-200-border{border-color:#ffcc80!important}.orange-200-border-top{border-top-color:#ffcc80!important}.orange-200-border-right{border-right-color:#ffcc80!important}.orange-200-border-bottom{border-bottom-color:#ffcc80!important}.orange-200-border-left{border-left-color:#ffcc80!important}.orange-300-bg{background-color:#ffb74d!important}.md-orange-300-bg{background-color:#ffb74d!important;color:rgba(0,0,0,.87)}.orange-300-fg{color:#ffb74d!important}.orange-300-border{border-color:#ffb74d!important}.orange-300-border-top{border-top-color:#ffb74d!important}.orange-300-border-right{border-right-color:#ffb74d!important}.orange-300-border-bottom{border-bottom-color:#ffb74d!important}.orange-300-border-left{border-left-color:#ffb74d!important}.orange-400-bg{background-color:#ffa726!important}.md-orange-400-bg{background-color:#ffa726!important;color:rgba(0,0,0,.87)}.orange-400-fg{color:#ffa726!important}.orange-400-border{border-color:#ffa726!important}.orange-400-border-top{border-top-color:#ffa726!important}.orange-400-border-right{border-right-color:#ffa726!important}.orange-400-border-bottom{border-bottom-color:#ffa726!important}.orange-400-border-left{border-left-color:#ffa726!important}.orange-500-bg{background-color:#ff9800!important}.md-orange-500-bg{background-color:#ff9800!important;color:rgba(0,0,0,.87)}.orange-500-fg{color:#ff9800!important}.orange-500-border{border-color:#ff9800!important}.orange-500-border-top{border-top-color:#ff9800!important}.orange-500-border-right{border-right-color:#ff9800!important}.orange-500-border-bottom{border-bottom-color:#ff9800!important}.orange-500-border-left{border-left-color:#ff9800!important}.md-orange-bg{background-color:#ff9800!important;color:rgba(0,0,0,.87)}.orange-bg{background-color:#ff9800!important}.orange-fg{color:#ff9800!important}.orange-border{border-color:#ff9800!important}.orange-border-top{border-top-color:#ff9800!important}.orange-border-right{border-right-color:#ff9800!important}.orange-border-bottom{border-bottom-color:#ff9800!important}.orange-border-left{border-left-color:#ff9800!important}.orange-600-bg{background-color:#fb8c00!important}.md-orange-600-bg{background-color:#fb8c00!important;color:rgba(0,0,0,.87)}.orange-600-fg{color:#fb8c00!important}.orange-600-border{border-color:#fb8c00!important}.orange-600-border-top{border-top-color:#fb8c00!important}.orange-600-border-right{border-right-color:#fb8c00!important}.orange-600-border-bottom{border-bottom-color:#fb8c00!important}.orange-600-border-left{border-left-color:#fb8c00!important}.orange-700-bg{background-color:#f57c00!important}.md-orange-700-bg{background-color:#f57c00!important;color:rgba(0,0,0,.87)}.orange-700-fg{color:#f57c00!important}.orange-700-border{border-color:#f57c00!important}.orange-700-border-top{border-top-color:#f57c00!important}.orange-700-border-right{border-right-color:#f57c00!important}.orange-700-border-bottom{border-bottom-color:#f57c00!important}.orange-700-border-left{border-left-color:#f57c00!important}.orange-800-bg{background-color:#ef6c00!important}.md-orange-800-bg{background-color:#ef6c00!important;color:#fff}.orange-800-fg{color:#ef6c00!important}.orange-800-border{border-color:#ef6c00!important}.orange-800-border-top{border-top-color:#ef6c00!important}.orange-800-border-right{border-right-color:#ef6c00!important}.orange-800-border-bottom{border-bottom-color:#ef6c00!important}.orange-800-border-left{border-left-color:#ef6c00!important}.orange-900-bg{background-color:#e65100!important}.md-orange-900-bg{background-color:#e65100!important;color:#fff}.orange-900-fg{color:#e65100!important}.orange-900-border{border-color:#e65100!important}.orange-900-border-top{border-top-color:#e65100!important}.orange-900-border-right{border-right-color:#e65100!important}.orange-900-border-bottom{border-bottom-color:#e65100!important}.orange-900-border-left{border-left-color:#e65100!important}.orange-A100-bg{background-color:#ffd180!important}.md-orange-A100-bg{background-color:#ffd180!important;color:rgba(0,0,0,.87)}.orange-A100-fg{color:#ffd180!important}.orange-A100-border{border-color:#ffd180!important}.orange-A100-border-top{border-top-color:#ffd180!important}.orange-A100-border-right{border-right-color:#ffd180!important}.orange-A100-border-bottom{border-bottom-color:#ffd180!important}.orange-A100-border-left{border-left-color:#ffd180!important}.orange-A200-bg{background-color:#ffab40!important}.md-orange-A200-bg{background-color:#ffab40!important;color:rgba(0,0,0,.87)}.orange-A200-fg{color:#ffab40!important}.orange-A200-border{border-color:#ffab40!important}.orange-A200-border-top{border-top-color:#ffab40!important}.orange-A200-border-right{border-right-color:#ffab40!important}.orange-A200-border-bottom{border-bottom-color:#ffab40!important}.orange-A200-border-left{border-left-color:#ffab40!important}.orange-A400-bg{background-color:#ff9100!important}.md-orange-A400-bg{background-color:#ff9100!important;color:rgba(0,0,0,.87)}.orange-A400-fg{color:#ff9100!important}.orange-A400-border{border-color:#ff9100!important}.orange-A400-border-top{border-top-color:#ff9100!important}.orange-A400-border-right{border-right-color:#ff9100!important}.orange-A400-border-bottom{border-bottom-color:#ff9100!important}.orange-A400-border-left{border-left-color:#ff9100!important}.orange-A700-bg{background-color:#ff6d00!important}.md-orange-A700-bg{background-color:#ff6d00!important;color:rgba(0,0,0,.87)}.orange-A700-fg{color:#ff6d00!important}.orange-A700-border{border-color:#ff6d00!important}.orange-A700-border-top{border-top-color:#ff6d00!important}.orange-A700-border-right{border-right-color:#ff6d00!important}.orange-A700-border-bottom{border-bottom-color:#ff6d00!important}.orange-A700-border-left{border-left-color:#ff6d00!important}.deep-orange-50-bg{background-color:#fbe9e7!important}.md-deep-orange-50-bg{background-color:#fbe9e7!important;color:rgba(0,0,0,.87)}.deep-orange-50-fg{color:#fbe9e7!important}.deep-orange-50-border{border-color:#fbe9e7!important}.deep-orange-50-border-top{border-top-color:#fbe9e7!important}.deep-orange-50-border-right{border-right-color:#fbe9e7!important}.deep-orange-50-border-bottom{border-bottom-color:#fbe9e7!important}.deep-orange-50-border-left{border-left-color:#fbe9e7!important}.deep-orange-100-bg{background-color:#ffccbc!important}.md-deep-orange-100-bg{background-color:#ffccbc!important;color:rgba(0,0,0,.87)}.deep-orange-100-fg{color:#ffccbc!important}.deep-orange-100-border{border-color:#ffccbc!important}.deep-orange-100-border-top{border-top-color:#ffccbc!important}.deep-orange-100-border-right{border-right-color:#ffccbc!important}.deep-orange-100-border-bottom{border-bottom-color:#ffccbc!important}.deep-orange-100-border-left{border-left-color:#ffccbc!important}.deep-orange-200-bg{background-color:#ffab91!important}.md-deep-orange-200-bg{background-color:#ffab91!important;color:rgba(0,0,0,.87)}.deep-orange-200-fg{color:#ffab91!important}.deep-orange-200-border{border-color:#ffab91!important}.deep-orange-200-border-top{border-top-color:#ffab91!important}.deep-orange-200-border-right{border-right-color:#ffab91!important}.deep-orange-200-border-bottom{border-bottom-color:#ffab91!important}.deep-orange-200-border-left{border-left-color:#ffab91!important}.deep-orange-300-bg{background-color:#ff8a65!important}.md-deep-orange-300-bg{background-color:#ff8a65!important;color:rgba(0,0,0,.87)}.deep-orange-300-fg{color:#ff8a65!important}.deep-orange-300-border{border-color:#ff8a65!important}.deep-orange-300-border-top{border-top-color:#ff8a65!important}.deep-orange-300-border-right{border-right-color:#ff8a65!important}.deep-orange-300-border-bottom{border-bottom-color:#ff8a65!important}.deep-orange-300-border-left{border-left-color:#ff8a65!important}.deep-orange-400-bg{background-color:#ff7043!important}.md-deep-orange-400-bg{background-color:#ff7043!important;color:rgba(0,0,0,.87)}.deep-orange-400-fg{color:#ff7043!important}.deep-orange-400-border{border-color:#ff7043!important}.deep-orange-400-border-top{border-top-color:#ff7043!important}.deep-orange-400-border-right{border-right-color:#ff7043!important}.deep-orange-400-border-bottom{border-bottom-color:#ff7043!important}.deep-orange-400-border-left{border-left-color:#ff7043!important}.deep-orange-500-bg{background-color:#ff5722!important}.md-deep-orange-500-bg{background-color:#ff5722!important;color:#fff}.deep-orange-500-fg{color:#ff5722!important}.deep-orange-500-border{border-color:#ff5722!important}.deep-orange-500-border-top{border-top-color:#ff5722!important}.deep-orange-500-border-right{border-right-color:#ff5722!important}.deep-orange-500-border-bottom{border-bottom-color:#ff5722!important}.deep-orange-500-border-left{border-left-color:#ff5722!important}.md-deep-orange-bg{background-color:#ff5722!important;color:#fff}.deep-orange-bg{background-color:#ff5722!important}.deep-orange-fg{color:#ff5722!important}.deep-orange-border{border-color:#ff5722!important}.deep-orange-border-top{border-top-color:#ff5722!important}.deep-orange-border-right{border-right-color:#ff5722!important}.deep-orange-border-bottom{border-bottom-color:#ff5722!important}.deep-orange-border-left{border-left-color:#ff5722!important}.deep-orange-600-bg{background-color:#f4511e!important}.md-deep-orange-600-bg{background-color:#f4511e!important;color:#fff}.deep-orange-600-fg{color:#f4511e!important}.deep-orange-600-border{border-color:#f4511e!important}.deep-orange-600-border-top{border-top-color:#f4511e!important}.deep-orange-600-border-right{border-right-color:#f4511e!important}.deep-orange-600-border-bottom{border-bottom-color:#f4511e!important}.deep-orange-600-border-left{border-left-color:#f4511e!important}.deep-orange-700-bg{background-color:#e64a19!important}.md-deep-orange-700-bg{background-color:#e64a19!important;color:#fff}.deep-orange-700-fg{color:#e64a19!important}.deep-orange-700-border{border-color:#e64a19!important}.deep-orange-700-border-top{border-top-color:#e64a19!important}.deep-orange-700-border-right{border-right-color:#e64a19!important}.deep-orange-700-border-bottom{border-bottom-color:#e64a19!important}.deep-orange-700-border-left{border-left-color:#e64a19!important}.deep-orange-800-bg{background-color:#d84315!important}.md-deep-orange-800-bg{background-color:#d84315!important;color:#fff}.deep-orange-800-fg{color:#d84315!important}.deep-orange-800-border{border-color:#d84315!important}.deep-orange-800-border-top{border-top-color:#d84315!important}.deep-orange-800-border-right{border-right-color:#d84315!important}.deep-orange-800-border-bottom{border-bottom-color:#d84315!important}.deep-orange-800-border-left{border-left-color:#d84315!important}.deep-orange-900-bg{background-color:#bf360c!important}.md-deep-orange-900-bg{background-color:#bf360c!important;color:#fff}.deep-orange-900-fg{color:#bf360c!important}.deep-orange-900-border{border-color:#bf360c!important}.deep-orange-900-border-top{border-top-color:#bf360c!important}.deep-orange-900-border-right{border-right-color:#bf360c!important}.deep-orange-900-border-bottom{border-bottom-color:#bf360c!important}.deep-orange-900-border-left{border-left-color:#bf360c!important}.deep-orange-A100-bg{background-color:#ff9e80!important}.md-deep-orange-A100-bg{background-color:#ff9e80!important;color:rgba(0,0,0,.87)}.deep-orange-A100-fg{color:#ff9e80!important}.deep-orange-A100-border{border-color:#ff9e80!important}.deep-orange-A100-border-top{border-top-color:#ff9e80!important}.deep-orange-A100-border-right{border-right-color:#ff9e80!important}.deep-orange-A100-border-bottom{border-bottom-color:#ff9e80!important}.deep-orange-A100-border-left{border-left-color:#ff9e80!important}.deep-orange-A200-bg{background-color:#ff6e40!important}.md-deep-orange-A200-bg{background-color:#ff6e40!important;color:rgba(0,0,0,.87)}.deep-orange-A200-fg{color:#ff6e40!important}.deep-orange-A200-border{border-color:#ff6e40!important}.deep-orange-A200-border-top{border-top-color:#ff6e40!important}.deep-orange-A200-border-right{border-right-color:#ff6e40!important}.deep-orange-A200-border-bottom{border-bottom-color:#ff6e40!important}.deep-orange-A200-border-left{border-left-color:#ff6e40!important}.deep-orange-A400-bg{background-color:#ff3d00!important}.md-deep-orange-A400-bg{background-color:#ff3d00!important;color:#fff}.deep-orange-A400-fg{color:#ff3d00!important}.deep-orange-A400-border{border-color:#ff3d00!important}.deep-orange-A400-border-top{border-top-color:#ff3d00!important}.deep-orange-A400-border-right{border-right-color:#ff3d00!important}.deep-orange-A400-border-bottom{border-bottom-color:#ff3d00!important}.deep-orange-A400-border-left{border-left-color:#ff3d00!important}.deep-orange-A700-bg{background-color:#dd2c00!important}.md-deep-orange-A700-bg{background-color:#dd2c00!important;color:#fff}.deep-orange-A700-fg{color:#dd2c00!important}.deep-orange-A700-border{border-color:#dd2c00!important}.deep-orange-A700-border-top{border-top-color:#dd2c00!important}.deep-orange-A700-border-right{border-right-color:#dd2c00!important}.deep-orange-A700-border-bottom{border-bottom-color:#dd2c00!important}.deep-orange-A700-border-left{border-left-color:#dd2c00!important}.brown-50-bg{background-color:#efebe9!important}.md-brown-50-bg{background-color:#efebe9!important;color:rgba(0,0,0,.87)}.brown-50-fg{color:#efebe9!important}.brown-50-border{border-color:#efebe9!important}.brown-50-border-top{border-top-color:#efebe9!important}.brown-50-border-right{border-right-color:#efebe9!important}.brown-50-border-bottom{border-bottom-color:#efebe9!important}.brown-50-border-left{border-left-color:#efebe9!important}.brown-100-bg{background-color:#d7ccc8!important}.md-brown-100-bg{background-color:#d7ccc8!important;color:rgba(0,0,0,.87)}.brown-100-fg{color:#d7ccc8!important}.brown-100-border{border-color:#d7ccc8!important}.brown-100-border-top{border-top-color:#d7ccc8!important}.brown-100-border-right{border-right-color:#d7ccc8!important}.brown-100-border-bottom{border-bottom-color:#d7ccc8!important}.brown-100-border-left{border-left-color:#d7ccc8!important}.brown-200-bg{background-color:#bcaaa4!important}.md-brown-200-bg{background-color:#bcaaa4!important;color:rgba(0,0,0,.87)}.brown-200-fg{color:#bcaaa4!important}.brown-200-border{border-color:#bcaaa4!important}.brown-200-border-top{border-top-color:#bcaaa4!important}.brown-200-border-right{border-right-color:#bcaaa4!important}.brown-200-border-bottom{border-bottom-color:#bcaaa4!important}.brown-200-border-left{border-left-color:#bcaaa4!important}.brown-300-bg{background-color:#a1887f!important}.md-brown-300-bg{background-color:#a1887f!important;color:#fff}.brown-300-fg{color:#a1887f!important}.brown-300-border{border-color:#a1887f!important}.brown-300-border-top{border-top-color:#a1887f!important}.brown-300-border-right{border-right-color:#a1887f!important}.brown-300-border-bottom{border-bottom-color:#a1887f!important}.brown-300-border-left{border-left-color:#a1887f!important}.brown-400-bg{background-color:#8d6e63!important}.md-brown-400-bg{background-color:#8d6e63!important;color:#fff}.brown-400-fg{color:#8d6e63!important}.brown-400-border{border-color:#8d6e63!important}.brown-400-border-top{border-top-color:#8d6e63!important}.brown-400-border-right{border-right-color:#8d6e63!important}.brown-400-border-bottom{border-bottom-color:#8d6e63!important}.brown-400-border-left{border-left-color:#8d6e63!important}.brown-500-bg{background-color:#795548!important}.md-brown-500-bg{background-color:#795548!important;color:rgba(255,255,255,.87)}.brown-500-fg{color:#795548!important}.brown-500-border{border-color:#795548!important}.brown-500-border-top{border-top-color:#795548!important}.brown-500-border-right{border-right-color:#795548!important}.brown-500-border-bottom{border-bottom-color:#795548!important}.brown-500-border-left{border-left-color:#795548!important}.md-brown-bg{background-color:#795548!important;color:rgba(255,255,255,.87)}.brown-bg{background-color:#795548!important}.brown-fg{color:#795548!important}.brown-border{border-color:#795548!important}.brown-border-top{border-top-color:#795548!important}.brown-border-right{border-right-color:#795548!important}.brown-border-bottom{border-bottom-color:#795548!important}.brown-border-left{border-left-color:#795548!important}.brown-600-bg{background-color:#6d4c41!important}.md-brown-600-bg{background-color:#6d4c41!important;color:rgba(255,255,255,.87)}.brown-600-fg{color:#6d4c41!important}.brown-600-border{border-color:#6d4c41!important}.brown-600-border-top{border-top-color:#6d4c41!important}.brown-600-border-right{border-right-color:#6d4c41!important}.brown-600-border-bottom{border-bottom-color:#6d4c41!important}.brown-600-border-left{border-left-color:#6d4c41!important}.brown-700-bg{background-color:#5d4037!important}.md-brown-700-bg{background-color:#5d4037!important;color:rgba(255,255,255,.87)}.brown-700-fg{color:#5d4037!important}.brown-700-border{border-color:#5d4037!important}.brown-700-border-top{border-top-color:#5d4037!important}.brown-700-border-right{border-right-color:#5d4037!important}.brown-700-border-bottom{border-bottom-color:#5d4037!important}.brown-700-border-left{border-left-color:#5d4037!important}.brown-800-bg{background-color:#4e342e!important}.md-brown-800-bg{background-color:#4e342e!important;color:rgba(255,255,255,.87)}.brown-800-fg{color:#4e342e!important}.brown-800-border{border-color:#4e342e!important}.brown-800-border-top{border-top-color:#4e342e!important}.brown-800-border-right{border-right-color:#4e342e!important}.brown-800-border-bottom{border-bottom-color:#4e342e!important}.brown-800-border-left{border-left-color:#4e342e!important}.brown-900-bg{background-color:#3e2723!important}.md-brown-900-bg{background-color:#3e2723!important;color:rgba(255,255,255,.87)}.brown-900-fg{color:#3e2723!important}.brown-900-border{border-color:#3e2723!important}.brown-900-border-top{border-top-color:#3e2723!important}.brown-900-border-right{border-right-color:#3e2723!important}.brown-900-border-bottom{border-bottom-color:#3e2723!important}.brown-900-border-left{border-left-color:#3e2723!important}.brown-A100-bg{background-color:#d7ccc8!important}.md-brown-A100-bg{background-color:#d7ccc8!important;color:rgba(255,255,255,.87)}.brown-A100-fg{color:#d7ccc8!important}.brown-A100-border{border-color:#d7ccc8!important}.brown-A100-border-top{border-top-color:#d7ccc8!important}.brown-A100-border-right{border-right-color:#d7ccc8!important}.brown-A100-border-bottom{border-bottom-color:#d7ccc8!important}.brown-A100-border-left{border-left-color:#d7ccc8!important}.brown-A200-bg{background-color:#bcaaa4!important}.md-brown-A200-bg{background-color:#bcaaa4!important;color:rgba(255,255,255,.87)}.brown-A200-fg{color:#bcaaa4!important}.brown-A200-border{border-color:#bcaaa4!important}.brown-A200-border-top{border-top-color:#bcaaa4!important}.brown-A200-border-right{border-right-color:#bcaaa4!important}.brown-A200-border-bottom{border-bottom-color:#bcaaa4!important}.brown-A200-border-left{border-left-color:#bcaaa4!important}.brown-A400-bg{background-color:#8d6e63!important}.md-brown-A400-bg{background-color:#8d6e63!important;color:rgba(255,255,255,.87)}.brown-A400-fg{color:#8d6e63!important}.brown-A400-border{border-color:#8d6e63!important}.brown-A400-border-top{border-top-color:#8d6e63!important}.brown-A400-border-right{border-right-color:#8d6e63!important}.brown-A400-border-bottom{border-bottom-color:#8d6e63!important}.brown-A400-border-left{border-left-color:#8d6e63!important}.brown-A700-bg{background-color:#5d4037!important}.md-brown-A700-bg{background-color:#5d4037!important;color:rgba(255,255,255,.87)}.brown-A700-fg{color:#5d4037!important}.brown-A700-border{border-color:#5d4037!important}.brown-A700-border-top{border-top-color:#5d4037!important}.brown-A700-border-right{border-right-color:#5d4037!important}.brown-A700-border-bottom{border-bottom-color:#5d4037!important}.brown-A700-border-left{border-left-color:#5d4037!important}.grey-50-bg{background-color:#fafafa!important}.md-grey-50-bg{background-color:#fafafa!important;color:rgba(0,0,0,.87)}.grey-50-fg{color:#fafafa!important}.grey-50-border{border-color:#fafafa!important}.grey-50-border-top{border-top-color:#fafafa!important}.grey-50-border-right{border-right-color:#fafafa!important}.grey-50-border-bottom{border-bottom-color:#fafafa!important}.grey-50-border-left{border-left-color:#fafafa!important}.grey-100-bg{background-color:#f5f5f5!important}.md-grey-100-bg{background-color:#f5f5f5!important;color:rgba(0,0,0,.87)}.grey-100-fg{color:#f5f5f5!important}.grey-100-border{border-color:#f5f5f5!important}.grey-100-border-top{border-top-color:#f5f5f5!important}.grey-100-border-right{border-right-color:#f5f5f5!important}.grey-100-border-bottom{border-bottom-color:#f5f5f5!important}.grey-100-border-left{border-left-color:#f5f5f5!important}.grey-200-bg{background-color:#eee!important}.md-grey-200-bg{background-color:#eee!important;color:rgba(0,0,0,.87)}.grey-200-fg{color:#eee!important}.grey-200-border{border-color:#eee!important}.grey-200-border-top{border-top-color:#eee!important}.grey-200-border-right{border-right-color:#eee!important}.grey-200-border-bottom{border-bottom-color:#eee!important}.grey-200-border-left{border-left-color:#eee!important}.grey-300-bg{background-color:#e0e0e0!important}.md-grey-300-bg{background-color:#e0e0e0!important;color:rgba(0,0,0,.87)}.grey-300-fg{color:#e0e0e0!important}.grey-300-border{border-color:#e0e0e0!important}.grey-300-border-top{border-top-color:#e0e0e0!important}.grey-300-border-right{border-right-color:#e0e0e0!important}.grey-300-border-bottom{border-bottom-color:#e0e0e0!important}.grey-300-border-left{border-left-color:#e0e0e0!important}.grey-400-bg{background-color:#bdbdbd!important}.md-grey-400-bg{background-color:#bdbdbd!important;color:rgba(0,0,0,.87)}.grey-400-fg{color:#bdbdbd!important}.grey-400-border{border-color:#bdbdbd!important}.grey-400-border-top{border-top-color:#bdbdbd!important}.grey-400-border-right{border-right-color:#bdbdbd!important}.grey-400-border-bottom{border-bottom-color:#bdbdbd!important}.grey-400-border-left{border-left-color:#bdbdbd!important}.grey-500-bg{background-color:#9e9e9e!important}.md-grey-500-bg{background-color:#9e9e9e!important;color:rgba(0,0,0,.87)}.grey-500-fg{color:#9e9e9e!important}.grey-500-border{border-color:#9e9e9e!important}.grey-500-border-top{border-top-color:#9e9e9e!important}.grey-500-border-right{border-right-color:#9e9e9e!important}.grey-500-border-bottom{border-bottom-color:#9e9e9e!important}.grey-500-border-left{border-left-color:#9e9e9e!important}.md-grey-bg{background-color:#9e9e9e!important;color:rgba(0,0,0,.87)}.grey-bg{background-color:#9e9e9e!important}.grey-fg{color:#9e9e9e!important}.grey-border{border-color:#9e9e9e!important}.grey-border-top{border-top-color:#9e9e9e!important}.grey-border-right{border-right-color:#9e9e9e!important}.grey-border-bottom{border-bottom-color:#9e9e9e!important}.grey-border-left{border-left-color:#9e9e9e!important}.grey-600-bg{background-color:#757575!important}.md-grey-600-bg{background-color:#757575!important;color:rgba(255,255,255,.87)}.grey-600-fg{color:#757575!important}.grey-600-border{border-color:#757575!important}.grey-600-border-top{border-top-color:#757575!important}.grey-600-border-right{border-right-color:#757575!important}.grey-600-border-bottom{border-bottom-color:#757575!important}.grey-600-border-left{border-left-color:#757575!important}.grey-700-bg{background-color:#616161!important}.md-grey-700-bg{background-color:#616161!important;color:rgba(255,255,255,.87)}.grey-700-fg{color:#616161!important}.grey-700-border{border-color:#616161!important}.grey-700-border-top{border-top-color:#616161!important}.grey-700-border-right{border-right-color:#616161!important}.grey-700-border-bottom{border-bottom-color:#616161!important}.grey-700-border-left{border-left-color:#616161!important}.grey-800-bg{background-color:#424242!important}.md-grey-800-bg{background-color:#424242!important;color:rgba(255,255,255,.87)}.grey-800-fg{color:#424242!important}.grey-800-border{border-color:#424242!important}.grey-800-border-top{border-top-color:#424242!important}.grey-800-border-right{border-right-color:#424242!important}.grey-800-border-bottom{border-bottom-color:#424242!important}.grey-800-border-left{border-left-color:#424242!important}.grey-900-bg{background-color:#212121!important}.md-grey-900-bg{background-color:#212121!important;color:rgba(255,255,255,.87)}.grey-900-fg{color:#212121!important}.grey-900-border{border-color:#212121!important}.grey-900-border-top{border-top-color:#212121!important}.grey-900-border-right{border-right-color:#212121!important}.grey-900-border-bottom{border-bottom-color:#212121!important}.grey-900-border-left{border-left-color:#212121!important}.grey-1000-bg{background-color:#000!important}.md-grey-1000-bg{background-color:#000!important}.grey-1000-fg{color:#000!important}.grey-1000-border{border-color:#000!important}.grey-1000-border-top{border-top-color:#000!important}.grey-1000-border-right{border-right-color:#000!important}.grey-1000-border-bottom{border-bottom-color:#000!important}.grey-1000-border-left{border-left-color:#000!important}.grey-A100-bg{background-color:#fff!important}.md-grey-A100-bg{background-color:#fff!important;color:rgba(0,0,0,.87)}.grey-A100-fg{color:#fff!important}.grey-A100-border{border-color:#fff!important}.grey-A100-border-top{border-top-color:#fff!important}.grey-A100-border-right{border-right-color:#fff!important}.grey-A100-border-bottom{border-bottom-color:#fff!important}.grey-A100-border-left{border-left-color:#fff!important}.grey-A200-bg{background-color:#eee!important}.md-grey-A200-bg{background-color:#eee!important;color:rgba(0,0,0,.87)}.grey-A200-fg{color:#eee!important}.grey-A200-border{border-color:#eee!important}.grey-A200-border-top{border-top-color:#eee!important}.grey-A200-border-right{border-right-color:#eee!important}.grey-A200-border-bottom{border-bottom-color:#eee!important}.grey-A200-border-left{border-left-color:#eee!important}.grey-A400-bg{background-color:#bdbdbd!important}.md-grey-A400-bg{background-color:#bdbdbd!important;color:rgba(0,0,0,.87)}.grey-A400-fg{color:#bdbdbd!important}.grey-A400-border{border-color:#bdbdbd!important}.grey-A400-border-top{border-top-color:#bdbdbd!important}.grey-A400-border-right{border-right-color:#bdbdbd!important}.grey-A400-border-bottom{border-bottom-color:#bdbdbd!important}.grey-A400-border-left{border-left-color:#bdbdbd!important}.grey-A700-bg{background-color:#616161!important}.md-grey-A700-bg{background-color:#616161!important;color:rgba(0,0,0,.87)}.grey-A700-fg{color:#616161!important}.grey-A700-border{border-color:#616161!important}.grey-A700-border-top{border-top-color:#616161!important}.grey-A700-border-right{border-right-color:#616161!important}.grey-A700-border-bottom{border-bottom-color:#616161!important}.grey-A700-border-left{border-left-color:#616161!important}.blue-grey-50-bg{background-color:#eceff1!important}.md-blue-grey-50-bg{background-color:#eceff1!important;color:rgba(0,0,0,.87)}.blue-grey-50-fg{color:#eceff1!important}.blue-grey-50-border{border-color:#eceff1!important}.blue-grey-50-border-top{border-top-color:#eceff1!important}.blue-grey-50-border-right{border-right-color:#eceff1!important}.blue-grey-50-border-bottom{border-bottom-color:#eceff1!important}.blue-grey-50-border-left{border-left-color:#eceff1!important}.blue-grey-100-bg{background-color:#cfd8dc!important}.md-blue-grey-100-bg{background-color:#cfd8dc!important;color:rgba(0,0,0,.87)}.blue-grey-100-fg{color:#cfd8dc!important}.blue-grey-100-border{border-color:#cfd8dc!important}.blue-grey-100-border-top{border-top-color:#cfd8dc!important}.blue-grey-100-border-right{border-right-color:#cfd8dc!important}.blue-grey-100-border-bottom{border-bottom-color:#cfd8dc!important}.blue-grey-100-border-left{border-left-color:#cfd8dc!important}.blue-grey-200-bg{background-color:#b0bec5!important}.md-blue-grey-200-bg{background-color:#b0bec5!important;color:rgba(0,0,0,.87)}.blue-grey-200-fg{color:#b0bec5!important}.blue-grey-200-border{border-color:#b0bec5!important}.blue-grey-200-border-top{border-top-color:#b0bec5!important}.blue-grey-200-border-right{border-right-color:#b0bec5!important}.blue-grey-200-border-bottom{border-bottom-color:#b0bec5!important}.blue-grey-200-border-left{border-left-color:#b0bec5!important}.blue-grey-300-bg{background-color:#90a4ae!important}.md-blue-grey-300-bg{background-color:#90a4ae!important;color:rgba(0,0,0,.87)}.blue-grey-300-fg{color:#90a4ae!important}.blue-grey-300-border{border-color:#90a4ae!important}.blue-grey-300-border-top{border-top-color:#90a4ae!important}.blue-grey-300-border-right{border-right-color:#90a4ae!important}.blue-grey-300-border-bottom{border-bottom-color:#90a4ae!important}.blue-grey-300-border-left{border-left-color:#90a4ae!important}.blue-grey-400-bg{background-color:#78909c!important}.md-blue-grey-400-bg{background-color:#78909c!important;color:#fff}.blue-grey-400-fg{color:#78909c!important}.blue-grey-400-border{border-color:#78909c!important}.blue-grey-400-border-top{border-top-color:#78909c!important}.blue-grey-400-border-right{border-right-color:#78909c!important}.blue-grey-400-border-bottom{border-bottom-color:#78909c!important}.blue-grey-400-border-left{border-left-color:#78909c!important}.blue-grey-500-bg{background-color:#607d8b!important}.md-blue-grey-500-bg{background-color:#607d8b!important;color:#fff}.blue-grey-500-fg{color:#607d8b!important}.blue-grey-500-border{border-color:#607d8b!important}.blue-grey-500-border-top{border-top-color:#607d8b!important}.blue-grey-500-border-right{border-right-color:#607d8b!important}.blue-grey-500-border-bottom{border-bottom-color:#607d8b!important}.blue-grey-500-border-left{border-left-color:#607d8b!important}.md-blue-grey-bg{background-color:#607d8b!important;color:#fff}.blue-grey-bg{background-color:#607d8b!important}.blue-grey-fg{color:#607d8b!important}.blue-grey-border{border-color:#607d8b!important}.blue-grey-border-top{border-top-color:#607d8b!important}.blue-grey-border-right{border-right-color:#607d8b!important}.blue-grey-border-bottom{border-bottom-color:#607d8b!important}.blue-grey-border-left{border-left-color:#607d8b!important}.blue-grey-600-bg{background-color:#546e7a!important}.md-blue-grey-600-bg{background-color:#546e7a!important;color:rgba(255,255,255,.87)}.blue-grey-600-fg{color:#546e7a!important}.blue-grey-600-border{border-color:#546e7a!important}.blue-grey-600-border-top{border-top-color:#546e7a!important}.blue-grey-600-border-right{border-right-color:#546e7a!important}.blue-grey-600-border-bottom{border-bottom-color:#546e7a!important}.blue-grey-600-border-left{border-left-color:#546e7a!important}.blue-grey-700-bg{background-color:#455a64!important}.md-blue-grey-700-bg{background-color:#455a64!important;color:rgba(255,255,255,.87)}.blue-grey-700-fg{color:#455a64!important}.blue-grey-700-border{border-color:#455a64!important}.blue-grey-700-border-top{border-top-color:#455a64!important}.blue-grey-700-border-right{border-right-color:#455a64!important}.blue-grey-700-border-bottom{border-bottom-color:#455a64!important}.blue-grey-700-border-left{border-left-color:#455a64!important}.blue-grey-800-bg{background-color:#37474f!important}.md-blue-grey-800-bg{background-color:#37474f!important;color:rgba(255,255,255,.87)}.blue-grey-800-fg{color:#37474f!important}.blue-grey-800-border{border-color:#37474f!important}.blue-grey-800-border-top{border-top-color:#37474f!important}.blue-grey-800-border-right{border-right-color:#37474f!important}.blue-grey-800-border-bottom{border-bottom-color:#37474f!important}.blue-grey-800-border-left{border-left-color:#37474f!important}.blue-grey-900-bg{background-color:#263238!important}.md-blue-grey-900-bg{background-color:#263238!important;color:rgba(255,255,255,.87)}.blue-grey-900-fg{color:#263238!important}.blue-grey-900-border{border-color:#263238!important}.blue-grey-900-border-top{border-top-color:#263238!important}.blue-grey-900-border-right{border-right-color:#263238!important}.blue-grey-900-border-bottom{border-bottom-color:#263238!important}.blue-grey-900-border-left{border-left-color:#263238!important}.blue-grey-A100-bg{background-color:#cfd8dc!important}.md-blue-grey-A100-bg{background-color:#cfd8dc!important;color:rgba(255,255,255,.87)}.blue-grey-A100-fg{color:#cfd8dc!important}.blue-grey-A100-border{border-color:#cfd8dc!important}.blue-grey-A100-border-top{border-top-color:#cfd8dc!important}.blue-grey-A100-border-right{border-right-color:#cfd8dc!important}.blue-grey-A100-border-bottom{border-bottom-color:#cfd8dc!important}.blue-grey-A100-border-left{border-left-color:#cfd8dc!important}.blue-grey-A200-bg{background-color:#b0bec5!important}.md-blue-grey-A200-bg{background-color:#b0bec5!important;color:rgba(255,255,255,.87)}.blue-grey-A200-fg{color:#b0bec5!important}.blue-grey-A200-border{border-color:#b0bec5!important}.blue-grey-A200-border-top{border-top-color:#b0bec5!important}.blue-grey-A200-border-right{border-right-color:#b0bec5!important}.blue-grey-A200-border-bottom{border-bottom-color:#b0bec5!important}.blue-grey-A200-border-left{border-left-color:#b0bec5!important}.blue-grey-A400-bg{background-color:#78909c!important}.md-blue-grey-A400-bg{background-color:#78909c!important;color:rgba(255,255,255,.87)}.blue-grey-A400-fg{color:#78909c!important}.blue-grey-A400-border{border-color:#78909c!important}.blue-grey-A400-border-top{border-top-color:#78909c!important}.blue-grey-A400-border-right{border-right-color:#78909c!important}.blue-grey-A400-border-bottom{border-bottom-color:#78909c!important}.blue-grey-A400-border-left{border-left-color:#78909c!important}.blue-grey-A700-bg{background-color:#455a64!important}.md-blue-grey-A700-bg{background-color:#455a64!important;color:rgba(255,255,255,.87)}.blue-grey-A700-fg{color:#455a64!important}.blue-grey-A700-border{border-color:#455a64!important}.blue-grey-A700-border-top{border-top-color:#455a64!important}.blue-grey-A700-border-right{border-right-color:#455a64!important}.blue-grey-A700-border-bottom{border-bottom-color:#455a64!important}.blue-grey-A700-border-left{border-left-color:#455a64!important}.white-500-bg{background-color:#fff!important}.md-white-500-bg{background-color:#fff!important;color:rgba(0,0,0,.87)}.white-500-fg{color:#fff!important}.white-500-border{border-color:#fff!important}.white-500-border-top{border-top-color:#fff!important}.white-500-border-right{border-right-color:#fff!important}.white-500-border-bottom{border-bottom-color:#fff!important}.white-500-border-left{border-left-color:#fff!important}.md-white-bg{background-color:#fff!important;color:rgba(0,0,0,.87)}.white-bg{background-color:#fff!important}.white-fg{color:#fff!important}.white-border{border-color:#fff!important}.white-border-top{border-top-color:#fff!important}.white-border-right{border-right-color:#fff!important}.white-border-bottom{border-bottom-color:#fff!important}.white-border-left{border-left-color:#fff!important}.black-500-bg{background-color:#000!important}.md-black-500-bg{background-color:#000!important;color:rgba(255,255,255,.87)}.black-500-fg{color:#000!important}.black-500-border{border-color:#000!important}.black-500-border-top{border-top-color:#000!important}.black-500-border-right{border-right-color:#000!important}.black-500-border-bottom{border-bottom-color:#000!important}.black-500-border-left{border-left-color:#000!important}.md-black-bg{background-color:#000!important;color:rgba(255,255,255,.87)}.black-bg{background-color:#000!important}.black-fg{color:#000!important}.black-border{border-color:#000!important}.black-border-top{border-top-color:#000!important}.black-border-right{border-right-color:#000!important}.black-border-bottom{border-bottom-color:#000!important}.black-border-left{border-left-color:#000!important}i,md-icon[md-font-icon]{font-size:24px;width:24px;height:24px;min-width:24px;min-height:24px;line-height:24px}i.s4,md-icon[md-font-icon].s4{font-size:4px!important;width:4px!important;height:4px!important;min-width:4px!important;min-height:4px!important;line-height:4px!important}i.s6,md-icon[md-font-icon].s6{font-size:6px!important;width:6px!important;height:6px!important;min-width:6px!important;min-height:6px!important;line-height:6px!important}i.s8,md-icon[md-font-icon].s8{font-size:8px!important;width:8px!important;height:8px!important;min-width:8px!important;min-height:8px!important;line-height:8px!important}i.s10,md-icon[md-font-icon].s10{font-size:10px!important;width:10px!important;height:10px!important;min-width:10px!important;min-height:10px!important;line-height:10px!important}i.s12,md-icon[md-font-icon].s12{font-size:12px!important;width:12px!important;height:12px!important;min-width:12px!important;min-height:12px!important;line-height:12px!important}i.s14,md-icon[md-font-icon].s14{font-size:14px!important;width:14px!important;height:14px!important;min-width:14px!important;min-height:14px!important;line-height:14px!important}i.s16,md-icon[md-font-icon].s16{font-size:16px!important;width:16px!important;height:16px!important;min-width:16px!important;min-height:16px!important;line-height:16px!important}i.s18,md-icon[md-font-icon].s18{font-size:18px!important;width:18px!important;height:18px!important;min-width:18px!important;min-height:18px!important;line-height:18px!important}i.s20,md-icon[md-font-icon].s20{font-size:20px!important;width:20px!important;height:20px!important;min-width:20px!important;min-height:20px!important;line-height:20px!important}i.s22,md-icon[md-font-icon].s22{font-size:22px!important;width:22px!important;height:22px!important;min-width:22px!important;min-height:22px!important;line-height:22px!important}i.s24,md-icon[md-font-icon].s24{font-size:24px!important;width:24px!important;height:24px!important;min-width:24px!important;min-height:24px!important;line-height:24px!important}i.s26,md-icon[md-font-icon].s26{font-size:26px!important;width:26px!important;height:26px!important;min-width:26px!important;min-height:26px!important;line-height:26px!important}i.s28,md-icon[md-font-icon].s28{font-size:28px!important;width:28px!important;height:28px!important;min-width:28px!important;min-height:28px!important;line-height:28px!important}i.s30,md-icon[md-font-icon].s30{font-size:30px!important;width:30px!important;height:30px!important;min-width:30px!important;min-height:30px!important;line-height:30px!important}i.s32,md-icon[md-font-icon].s32{font-size:32px!important;width:32px!important;height:32px!important;min-width:32px!important;min-height:32px!important;line-height:32px!important}i.s34,md-icon[md-font-icon].s34{font-size:34px!important;width:34px!important;height:34px!important;min-width:34px!important;min-height:34px!important;line-height:34px!important}i.s36,md-icon[md-font-icon].s36{font-size:36px!important;width:36px!important;height:36px!important;min-width:36px!important;min-height:36px!important;line-height:36px!important}i.s38,md-icon[md-font-icon].s38{font-size:38px!important;width:38px!important;height:38px!important;min-width:38px!important;min-height:38px!important;line-height:38px!important}i.s40,md-icon[md-font-icon].s40{font-size:40px!important;width:40px!important;height:40px!important;min-width:40px!important;min-height:40px!important;line-height:40px!important}i.s42,md-icon[md-font-icon].s42{font-size:42px!important;width:42px!important;height:42px!important;min-width:42px!important;min-height:42px!important;line-height:42px!important}i.s44,md-icon[md-font-icon].s44{font-size:44px!important;width:44px!important;height:44px!important;min-width:44px!important;min-height:44px!important;line-height:44px!important}i.s46,md-icon[md-font-icon].s46{font-size:46px!important;width:46px!important;height:46px!important;min-width:46px!important;min-height:46px!important;line-height:46px!important}i.s48,md-icon[md-font-icon].s48{font-size:48px!important;width:48px!important;height:48px!important;min-width:48px!important;min-height:48px!important;line-height:48px!important}i.s50,md-icon[md-font-icon].s50{font-size:50px!important;width:50px!important;height:50px!important;min-width:50px!important;min-height:50px!important;line-height:50px!important}i.s52,md-icon[md-font-icon].s52{font-size:52px!important;width:52px!important;height:52px!important;min-width:52px!important;min-height:52px!important;line-height:52px!important}i.s54,md-icon[md-font-icon].s54{font-size:54px!important;width:54px!important;height:54px!important;min-width:54px!important;min-height:54px!important;line-height:54px!important}i.s56,md-icon[md-font-icon].s56{font-size:56px!important;width:56px!important;height:56px!important;min-width:56px!important;min-height:56px!important;line-height:56px!important}i.s58,md-icon[md-font-icon].s58{font-size:58px!important;width:58px!important;height:58px!important;min-width:58px!important;min-height:58px!important;line-height:58px!important}i.s60,md-icon[md-font-icon].s60{font-size:60px!important;width:60px!important;height:60px!important;min-width:60px!important;min-height:60px!important;line-height:60px!important}i.s62,md-icon[md-font-icon].s62{font-size:62px!important;width:62px!important;height:62px!important;min-width:62px!important;min-height:62px!important;line-height:62px!important}i.s64,md-icon[md-font-icon].s64{font-size:64px!important;width:64px!important;height:64px!important;min-width:64px!important;min-height:64px!important;line-height:64px!important}i.s66,md-icon[md-font-icon].s66{font-size:66px!important;width:66px!important;height:66px!important;min-width:66px!important;min-height:66px!important;line-height:66px!important}i.s68,md-icon[md-font-icon].s68{font-size:68px!important;width:68px!important;height:68px!important;min-width:68px!important;min-height:68px!important;line-height:68px!important}i.s70,md-icon[md-font-icon].s70{font-size:70px!important;width:70px!important;height:70px!important;min-width:70px!important;min-height:70px!important;line-height:70px!important}i.s72,md-icon[md-font-icon].s72{font-size:72px!important;width:72px!important;height:72px!important;min-width:72px!important;min-height:72px!important;line-height:72px!important}i.s74,md-icon[md-font-icon].s74{font-size:74px!important;width:74px!important;height:74px!important;min-width:74px!important;min-height:74px!important;line-height:74px!important}i.s76,md-icon[md-font-icon].s76{font-size:76px!important;width:76px!important;height:76px!important;min-width:76px!important;min-height:76px!important;line-height:76px!important}i.s78,md-icon[md-font-icon].s78{font-size:78px!important;width:78px!important;height:78px!important;min-width:78px!important;min-height:78px!important;line-height:78px!important}i.s80,md-icon[md-font-icon].s80{font-size:80px!important;width:80px!important;height:80px!important;min-width:80px!important;min-height:80px!important;line-height:80px!important}i.s82,md-icon[md-font-icon].s82{font-size:82px!important;width:82px!important;height:82px!important;min-width:82px!important;min-height:82px!important;line-height:82px!important}i.s84,md-icon[md-font-icon].s84{font-size:84px!important;width:84px!important;height:84px!important;min-width:84px!important;min-height:84px!important;line-height:84px!important}i.s86,md-icon[md-font-icon].s86{font-size:86px!important;width:86px!important;height:86px!important;min-width:86px!important;min-height:86px!important;line-height:86px!important}i.s88,md-icon[md-font-icon].s88{font-size:88px!important;width:88px!important;height:88px!important;min-width:88px!important;min-height:88px!important;line-height:88px!important}i.s90,md-icon[md-font-icon].s90{font-size:90px!important;width:90px!important;height:90px!important;min-width:90px!important;min-height:90px!important;line-height:90px!important}i.s92,md-icon[md-font-icon].s92{font-size:92px!important;width:92px!important;height:92px!important;min-width:92px!important;min-height:92px!important;line-height:92px!important}i.s94,md-icon[md-font-icon].s94{font-size:94px!important;width:94px!important;height:94px!important;min-width:94px!important;min-height:94px!important;line-height:94px!important}i.s96,md-icon[md-font-icon].s96{font-size:96px!important;width:96px!important;height:96px!important;min-width:96px!important;min-height:96px!important;line-height:96px!important}i.s98,md-icon[md-font-icon].s98{font-size:98px!important;width:98px!important;height:98px!important;min-width:98px!important;min-height:98px!important;line-height:98px!important}i.s100,md-icon[md-font-icon].s100{font-size:100px!important;width:100px!important;height:100px!important;min-width:100px!important;min-height:100px!important;line-height:100px!important}i.s102,md-icon[md-font-icon].s102{font-size:102px!important;width:102px!important;height:102px!important;min-width:102px!important;min-height:102px!important;line-height:102px!important}i.s104,md-icon[md-font-icon].s104{font-size:104px!important;width:104px!important;height:104px!important;min-width:104px!important;min-height:104px!important;line-height:104px!important}i.s106,md-icon[md-font-icon].s106{font-size:106px!important;width:106px!important;height:106px!important;min-width:106px!important;min-height:106px!important;line-height:106px!important}i.s108,md-icon[md-font-icon].s108{font-size:108px!important;width:108px!important;height:108px!important;min-width:108px!important;min-height:108px!important;line-height:108px!important}i.s110,md-icon[md-font-icon].s110{font-size:110px!important;width:110px!important;height:110px!important;min-width:110px!important;min-height:110px!important;line-height:110px!important}i.s112,md-icon[md-font-icon].s112{font-size:112px!important;width:112px!important;height:112px!important;min-width:112px!important;min-height:112px!important;line-height:112px!important}i.s114,md-icon[md-font-icon].s114{font-size:114px!important;width:114px!important;height:114px!important;min-width:114px!important;min-height:114px!important;line-height:114px!important}i.s116,md-icon[md-font-icon].s116{font-size:116px!important;width:116px!important;height:116px!important;min-width:116px!important;min-height:116px!important;line-height:116px!important}i.s118,md-icon[md-font-icon].s118{font-size:118px!important;width:118px!important;height:118px!important;min-width:118px!important;min-height:118px!important;line-height:118px!important}i.s120,md-icon[md-font-icon].s120{font-size:120px!important;width:120px!important;height:120px!important;min-width:120px!important;min-height:120px!important;line-height:120px!important}i.s122,md-icon[md-font-icon].s122{font-size:122px!important;width:122px!important;height:122px!important;min-width:122px!important;min-height:122px!important;line-height:122px!important}i.s124,md-icon[md-font-icon].s124{font-size:124px!important;width:124px!important;height:124px!important;min-width:124px!important;min-height:124px!important;line-height:124px!important}i.s126,md-icon[md-font-icon].s126{font-size:126px!important;width:126px!important;height:126px!important;min-width:126px!important;min-height:126px!important;line-height:126px!important}i.s128,md-icon[md-font-icon].s128{font-size:128px!important;width:128px!important;height:128px!important;min-width:128px!important;min-height:128px!important;line-height:128px!important}i.s130,md-icon[md-font-icon].s130{font-size:130px!important;width:130px!important;height:130px!important;min-width:130px!important;min-height:130px!important;line-height:130px!important}i.s132,md-icon[md-font-icon].s132{font-size:132px!important;width:132px!important;height:132px!important;min-width:132px!important;min-height:132px!important;line-height:132px!important}i.s134,md-icon[md-font-icon].s134{font-size:134px!important;width:134px!important;height:134px!important;min-width:134px!important;min-height:134px!important;line-height:134px!important}i.s136,md-icon[md-font-icon].s136{font-size:136px!important;width:136px!important;height:136px!important;min-width:136px!important;min-height:136px!important;line-height:136px!important}i.s138,md-icon[md-font-icon].s138{font-size:138px!important;width:138px!important;height:138px!important;min-width:138px!important;min-height:138px!important;line-height:138px!important}i.s140,md-icon[md-font-icon].s140{font-size:140px!important;width:140px!important;height:140px!important;min-width:140px!important;min-height:140px!important;line-height:140px!important}i.s142,md-icon[md-font-icon].s142{font-size:142px!important;width:142px!important;height:142px!important;min-width:142px!important;min-height:142px!important;line-height:142px!important}i.s144,md-icon[md-font-icon].s144{font-size:144px!important;width:144px!important;height:144px!important;min-width:144px!important;min-height:144px!important;line-height:144px!important}i.s146,md-icon[md-font-icon].s146{font-size:146px!important;width:146px!important;height:146px!important;min-width:146px!important;min-height:146px!important;line-height:146px!important}i.s148,md-icon[md-font-icon].s148{font-size:148px!important;width:148px!important;height:148px!important;min-width:148px!important;min-height:148px!important;line-height:148px!important}i.s150,md-icon[md-font-icon].s150{font-size:150px!important;width:150px!important;height:150px!important;min-width:150px!important;min-height:150px!important;line-height:150px!important}i.s152,md-icon[md-font-icon].s152{font-size:152px!important;width:152px!important;height:152px!important;min-width:152px!important;min-height:152px!important;line-height:152px!important}i.s154,md-icon[md-font-icon].s154{font-size:154px!important;width:154px!important;height:154px!important;min-width:154px!important;min-height:154px!important;line-height:154px!important}i.s156,md-icon[md-font-icon].s156{font-size:156px!important;width:156px!important;height:156px!important;min-width:156px!important;min-height:156px!important;line-height:156px!important}i.s158,md-icon[md-font-icon].s158{font-size:158px!important;width:158px!important;height:158px!important;min-width:158px!important;min-height:158px!important;line-height:158px!important}i.s160,md-icon[md-font-icon].s160{font-size:160px!important;width:160px!important;height:160px!important;min-width:160px!important;min-height:160px!important;line-height:160px!important}i.s162,md-icon[md-font-icon].s162{font-size:162px!important;width:162px!important;height:162px!important;min-width:162px!important;min-height:162px!important;line-height:162px!important}i.s164,md-icon[md-font-icon].s164{font-size:164px!important;width:164px!important;height:164px!important;min-width:164px!important;min-height:164px!important;line-height:164px!important}i.s166,md-icon[md-font-icon].s166{font-size:166px!important;width:166px!important;height:166px!important;min-width:166px!important;min-height:166px!important;line-height:166px!important}i.s168,md-icon[md-font-icon].s168{font-size:168px!important;width:168px!important;height:168px!important;min-width:168px!important;min-height:168px!important;line-height:168px!important}i.s170,md-icon[md-font-icon].s170{font-size:170px!important;width:170px!important;height:170px!important;min-width:170px!important;min-height:170px!important;line-height:170px!important}i.s172,md-icon[md-font-icon].s172{font-size:172px!important;width:172px!important;height:172px!important;min-width:172px!important;min-height:172px!important;line-height:172px!important}i.s174,md-icon[md-font-icon].s174{font-size:174px!important;width:174px!important;height:174px!important;min-width:174px!important;min-height:174px!important;line-height:174px!important}i.s176,md-icon[md-font-icon].s176{font-size:176px!important;width:176px!important;height:176px!important;min-width:176px!important;min-height:176px!important;line-height:176px!important}i.s178,md-icon[md-font-icon].s178{font-size:178px!important;width:178px!important;height:178px!important;min-width:178px!important;min-height:178px!important;line-height:178px!important}i.s180,md-icon[md-font-icon].s180{font-size:180px!important;width:180px!important;height:180px!important;min-width:180px!important;min-height:180px!important;line-height:180px!important}i.s182,md-icon[md-font-icon].s182{font-size:182px!important;width:182px!important;height:182px!important;min-width:182px!important;min-height:182px!important;line-height:182px!important}i.s184,md-icon[md-font-icon].s184{font-size:184px!important;width:184px!important;height:184px!important;min-width:184px!important;min-height:184px!important;line-height:184px!important}i.s186,md-icon[md-font-icon].s186{font-size:186px!important;width:186px!important;height:186px!important;min-width:186px!important;min-height:186px!important;line-height:186px!important}i.s188,md-icon[md-font-icon].s188{font-size:188px!important;width:188px!important;height:188px!important;min-width:188px!important;min-height:188px!important;line-height:188px!important}i.s190,md-icon[md-font-icon].s190{font-size:190px!important;width:190px!important;height:190px!important;min-width:190px!important;min-height:190px!important;line-height:190px!important}i.s192,md-icon[md-font-icon].s192{font-size:192px!important;width:192px!important;height:192px!important;min-width:192px!important;min-height:192px!important;line-height:192px!important}i.s194,md-icon[md-font-icon].s194{font-size:194px!important;width:194px!important;height:194px!important;min-width:194px!important;min-height:194px!important;line-height:194px!important}i.s196,md-icon[md-font-icon].s196{font-size:196px!important;width:196px!important;height:196px!important;min-width:196px!important;min-height:196px!important;line-height:196px!important}i.s198,md-icon[md-font-icon].s198{font-size:198px!important;width:198px!important;height:198px!important;min-width:198px!important;min-height:198px!important;line-height:198px!important}i.s200,md-icon[md-font-icon].s200{font-size:200px!important;width:200px!important;height:200px!important;min-width:200px!important;min-height:200px!important;line-height:200px!important}i.s202,md-icon[md-font-icon].s202{font-size:202px!important;width:202px!important;height:202px!important;min-width:202px!important;min-height:202px!important;line-height:202px!important}i.s204,md-icon[md-font-icon].s204{font-size:204px!important;width:204px!important;height:204px!important;min-width:204px!important;min-height:204px!important;line-height:204px!important}i.s206,md-icon[md-font-icon].s206{font-size:206px!important;width:206px!important;height:206px!important;min-width:206px!important;min-height:206px!important;line-height:206px!important}i.s208,md-icon[md-font-icon].s208{font-size:208px!important;width:208px!important;height:208px!important;min-width:208px!important;min-height:208px!important;line-height:208px!important}i.s210,md-icon[md-font-icon].s210{font-size:210px!important;width:210px!important;height:210px!important;min-width:210px!important;min-height:210px!important;line-height:210px!important}i.s212,md-icon[md-font-icon].s212{font-size:212px!important;width:212px!important;height:212px!important;min-width:212px!important;min-height:212px!important;line-height:212px!important}i.s214,md-icon[md-font-icon].s214{font-size:214px!important;width:214px!important;height:214px!important;min-width:214px!important;min-height:214px!important;line-height:214px!important}i.s216,md-icon[md-font-icon].s216{font-size:216px!important;width:216px!important;height:216px!important;min-width:216px!important;min-height:216px!important;line-height:216px!important}i.s218,md-icon[md-font-icon].s218{font-size:218px!important;width:218px!important;height:218px!important;min-width:218px!important;min-height:218px!important;line-height:218px!important}i.s220,md-icon[md-font-icon].s220{font-size:220px!important;width:220px!important;height:220px!important;min-width:220px!important;min-height:220px!important;line-height:220px!important}i.s222,md-icon[md-font-icon].s222{font-size:222px!important;width:222px!important;height:222px!important;min-width:222px!important;min-height:222px!important;line-height:222px!important}i.s224,md-icon[md-font-icon].s224{font-size:224px!important;width:224px!important;height:224px!important;min-width:224px!important;min-height:224px!important;line-height:224px!important}i.s226,md-icon[md-font-icon].s226{font-size:226px!important;width:226px!important;height:226px!important;min-width:226px!important;min-height:226px!important;line-height:226px!important}i.s228,md-icon[md-font-icon].s228{font-size:228px!important;width:228px!important;height:228px!important;min-width:228px!important;min-height:228px!important;line-height:228px!important}i.s230,md-icon[md-font-icon].s230{font-size:230px!important;width:230px!important;height:230px!important;min-width:230px!important;min-height:230px!important;line-height:230px!important}i.s232,md-icon[md-font-icon].s232{font-size:232px!important;width:232px!important;height:232px!important;min-width:232px!important;min-height:232px!important;line-height:232px!important}i.s234,md-icon[md-font-icon].s234{font-size:234px!important;width:234px!important;height:234px!important;min-width:234px!important;min-height:234px!important;line-height:234px!important}i.s236,md-icon[md-font-icon].s236{font-size:236px!important;width:236px!important;height:236px!important;min-width:236px!important;min-height:236px!important;line-height:236px!important}i.s238,md-icon[md-font-icon].s238{font-size:238px!important;width:238px!important;height:238px!important;min-width:238px!important;min-height:238px!important;line-height:238px!important}i.s240,md-icon[md-font-icon].s240{font-size:240px!important;width:240px!important;height:240px!important;min-width:240px!important;min-height:240px!important;line-height:240px!important}i.s242,md-icon[md-font-icon].s242{font-size:242px!important;width:242px!important;height:242px!important;min-width:242px!important;min-height:242px!important;line-height:242px!important}i.s244,md-icon[md-font-icon].s244{font-size:244px!important;width:244px!important;height:244px!important;min-width:244px!important;min-height:244px!important;line-height:244px!important}i.s246,md-icon[md-font-icon].s246{font-size:246px!important;width:246px!important;height:246px!important;min-width:246px!important;min-height:246px!important;line-height:246px!important}i.s248,md-icon[md-font-icon].s248{font-size:248px!important;width:248px!important;height:248px!important;min-width:248px!important;min-height:248px!important;line-height:248px!important}i.s250,md-icon[md-font-icon].s250{font-size:250px!important;width:250px!important;height:250px!important;min-width:250px!important;min-height:250px!important;line-height:250px!important}i.s252,md-icon[md-font-icon].s252{font-size:252px!important;width:252px!important;height:252px!important;min-width:252px!important;min-height:252px!important;line-height:252px!important}i.s254,md-icon[md-font-icon].s254{font-size:254px!important;width:254px!important;height:254px!important;min-width:254px!important;min-height:254px!important;line-height:254px!important}i.s256,md-icon[md-font-icon].s256{font-size:256px!important;width:256px!important;height:256px!important;min-width:256px!important;min-height:256px!important;line-height:256px!important}@font-face{font-family:icomoon;src:url(../assets/icons/fonts/icomoon.eot?5km1tg);src:url(../assets/icons/fonts/icomoon.eot?#iefix5km1tg) format("embedded-opentype"),url(../assets/icons/fonts/icomoon.ttf?5km1tg) format("truetype"),url(../assets/icons/fonts/icomoon.woff?5km1tg) format("woff"),url(../assets/icons/fonts/icomoon.svg?5km1tg#icomoon) format("svg");font-weight:400;font-style:normal}[class*=' icon-'],[class^=icon-]{font-family:icomoon;speak:none;font-style:normal;font-weight:400;font-variant:normal;text-transform:none;line-height:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.icon-account-alert:before{content:'\e600'}.icon-account-box-outline:before{content:'\e601'}.icon-account-box:before{content:'\e602'}.icon-account-check:before{content:'\e603'}.icon-account-circle:before{content:'\e604'}.icon-account-key:before{content:'\e605'}.icon-account-location:before{content:'\e606'}.icon-account-minus:before{content:'\e607'}.icon-account-multiple-outline:before{content:'\e608'}.icon-account-multiple-plus:before{content:'\e609'}.icon-account-multiple:before{content:'\e60a'}.icon-account-network:before{content:'\e60b'}.icon-account-outline:before{content:'\e60c'}.icon-account-plus:before{content:'\e60d'}.icon-account-remove:before{content:'\e60e'}.icon-account-search:before{content:'\e60f'}.icon-account-switch:before{content:'\e610'}.icon-account:before{content:'\e611'}.icon-airballoon:before{content:'\e612'}.icon-airplane-off:before{content:'\e613'}.icon-airplane:before{content:'\e614'}.icon-alarm-check:before{content:'\e615'}.icon-alarm-multiple:before{content:'\e616'}.icon-alarm-off:before{content:'\e617'}.icon-alarm-plus:before{content:'\e618'}.icon-alarm:before{content:'\e619'}.icon-album:before{content:'\e61a'}.icon-alert-box:before{content:'\e61b'}.icon-alert-circle:before{content:'\e61c'}.icon-alert-octagon:before{content:'\e61d'}.icon-alert:before{content:'\e61e'}.icon-alpha:before{content:'\e61f'}.icon-alphabetical:before{content:'\e620'}.icon-amazon-clouddrive:before{content:'\e621'}.icon-amazon:before{content:'\e622'}.icon-ambulance:before{content:'\e623'}.icon-android-debug-bridge:before{content:'\e624'}.icon-android-studio:before{content:'\e625'}.icon-android:before{content:'\e626'}.icon-apple-finder:before{content:'\e627'}.icon-apple-ios:before{content:'\e628'}.icon-apple-mobileme:before{content:'\e629'}.icon-apple-safari:before{content:'\e62a'}.icon-apple:before{content:'\e62b'}.icon-appnet:before{content:'\e62c'}.icon-apps:before{content:'\e62d'}.icon-archive:before{content:'\e62e'}.icon-arrange-bring-forward:before{content:'\e62f'}.icon-arrange-bring-to-front:before{content:'\e630'}.icon-arrange-send-backward:before{content:'\e631'}.icon-arrange-send-to-back:before{content:'\e632'}.icon-arrow-all:before{content:'\e633'}.icon-arrow-bottom-left:before{content:'\e634'}.icon-arrow-bottom-right:before{content:'\e635'}.icon-arrow-collapse:before{content:'\e636'}.icon-arrow-down-bold-circle-outline:before{content:'\e637'}.icon-arrow-down-bold-circle:before{content:'\e638'}.icon-arrow-down-bold-hexagon-outline:before{content:'\e639'}.icon-arrow-down-bold:before{content:'\e63a'}.icon-arrow-down:before{content:'\e63b'}.icon-arrow-expand:before{content:'\e63c'}.icon-arrow-left-bold-circle-outline:before{content:'\e63d'}.icon-arrow-left-bold-circle:before{content:'\e63e'}.icon-arrow-left-bold-hexagon-outline:before{content:'\e63f'}.icon-arrow-left-bold:before{content:'\e640'}.icon-arrow-left:before{content:'\e641'}.icon-arrow-right-bold-circle-outline:before{content:'\e642'}.icon-arrow-right-bold-circle:before{content:'\e643'}.icon-arrow-right-bold-hexagon-outline:before{content:'\e644'}.icon-arrow-right-bold:before{content:'\e645'}.icon-arrow-right:before{content:'\e646'}.icon-arrow-top-left:before{content:'\e647'}.icon-arrow-top-right:before{content:'\e648'}.icon-arrow-up-bold-circle-outline:before{content:'\e649'}.icon-arrow-up-bold-circle:before{content:'\e64a'}.icon-arrow-up-bold-hexagon-outline:before{content:'\e64b'}.icon-arrow-up-bold:before{content:'\e64c'}.icon-arrow-up:before{content:'\e64d'}.icon-at:before{content:'\e64e'}.icon-attachment:before{content:'\e64f'}.icon-audiobook:before{content:'\e650'}.icon-auto-fix:before{content:'\e651'}.icon-auto-upload:before{content:'\e652'}.icon-baby:before{content:'\e653'}.icon-backburger:before{content:'\e654'}.icon-backup-restore:before{content:'\e655'}.icon-bank:before{content:'\e656'}.icon-barcode:before{content:'\e657'}.icon-barley:before{content:'\e658'}.icon-barrel:before{content:'\e659'}.icon-basecamp:before{content:'\e65a'}.icon-basket-fill:before{content:'\e65b'}.icon-basket-unfill:before{content:'\e65c'}.icon-basket:before{content:'\e65d'}.icon-battery-10:before{content:'\e65e'}.icon-battery-20:before{content:'\e65f'}.icon-battery-30:before{content:'\e660'}.icon-battery-40:before{content:'\e661'}.icon-battery-50:before{content:'\e662'}.icon-battery-60:before{content:'\e663'}.icon-battery-70:before{content:'\e664'}.icon-battery-80:before{content:'\e665'}.icon-battery-90:before{content:'\e666'}.icon-battery-alert:before{content:'\e667'}.icon-battery-charging-20:before{content:'\e668'}.icon-battery-charging-30:before{content:'\e669'}.icon-battery-charging-40:before{content:'\e66a'}.icon-battery-charging-60:before{content:'\e66b'}.icon-battery-charging-80:before{content:'\e66c'}.icon-battery-charging-90:before{content:'\e66d'}.icon-battery-charging-100:before{content:'\e66e'}.icon-battery-minus:before{content:'\e66f'}.icon-battery-negative:before{content:'\e670'}.icon-battery-outline:before{content:'\e671'}.icon-battery-plus:before{content:'\e672'}.icon-battery-positive:before{content:'\e673'}.icon-battery-standard:before{content:'\e674'}.icon-battery-unknown:before{content:'\e675'}.icon-battery:before{content:'\e676'}.icon-beach:before{content:'\e677'}.icon-beaker-empty-outline:before{content:'\e678'}.icon-beaker-empty:before{content:'\e679'}.icon-beaker-outline:before{content:'\e67a'}.icon-beaker:before{content:'\e67b'}.icon-beats:before{content:'\e67c'}.icon-beer:before{content:'\e67d'}.icon-behance:before{content:'\e67e'}.icon-bell-off:before{content:'\e67f'}.icon-bell-outline:before{content:'\e680'}.icon-bell-ring-outline:before{content:'\e681'}.icon-bell-ring:before{content:'\e682'}.icon-bell-sleep:before{content:'\e683'}.icon-bell:before{content:'\e684'}.icon-beta:before{content:'\e685'}.icon-bike:before{content:'\e686'}.icon-bing:before{content:'\e687'}.icon-binoculars:before{content:'\e688'}.icon-bio:before{content:'\e689'}.icon-bitbucket:before{content:'\e68a'}.icon-black-mesa:before{content:'\e68b'}.icon-blackberry:before{content:'\e68c'}.icon-blinds:before{content:'\e68d'}.icon-block-helper:before{content:'\e68e'}.icon-blogger:before{content:'\e68f'}.icon-bluetooth-audio:before{content:'\e690'}.icon-bluetooth-connect:before{content:'\e691'}.icon-bluetooth-settings:before{content:'\e692'}.icon-bluetooth-transfer:before{content:'\e693'}.icon-bluetooth:before{content:'\e694'}.icon-blur-linear:before{content:'\e695'}.icon-blur-off:before{content:'\e696'}.icon-blur-radial:before{content:'\e697'}.icon-blur:before{content:'\e698'}.icon-bone:before{content:'\e699'}.icon-book-multiple-variant:before{content:'\e69a'}.icon-book-multiple:before{content:'\e69b'}.icon-book-open:before{content:'\e69c'}.icon-book-variant:before{content:'\e69d'}.icon-book:before{content:'\e69e'}.icon-bookmark-check:before{content:'\e69f'}.icon-bookmark-music:before{content:'\e6a0'}.icon-bookmark-outline-plus:before{content:'\e6a1'}.icon-bookmark-outline:before{content:'\e6a2'}.icon-bookmark-plus:before{content:'\e6a3'}.icon-bookmark-remove:before{content:'\e6a4'}.icon-bookmark:before{content:'\e6a5'}.icon-border-all:before{content:'\e6a6'}.icon-border-bottom:before{content:'\e6a7'}.icon-border-color:before{content:'\e6a8'}.icon-border-horizontal:before{content:'\e6a9'}.icon-border-inside:before{content:'\e6aa'}.icon-border-left:before{content:'\e6ab'}.icon-border-none:before{content:'\e6ac'}.icon-border-outside:before{content:'\e6ad'}.icon-border-right:before{content:'\e6ae'}.icon-border-top:before{content:'\e6af'}.icon-border-vertical:before{content:'\e6b0'}.icon-bowling:before{content:'\e6b1'}.icon-box-download:before{content:'\e6b2'}.icon-box-upload:before{content:'\e6b3'}.icon-box:before{content:'\e6b4'}.icon-briefcase-checked:before{content:'\e6b5'}.icon-briefcase-download:before{content:'\e6b6'}.icon-briefcase-upload:before{content:'\e6b7'}.icon-briefcase:before{content:'\e6b8'}.icon-brightness-1:before{content:'\e6b9'}.icon-brightness-2:before{content:'\e6ba'}.icon-brightness-3:before{content:'\e6bb'}.icon-brightness-4:before{content:'\e6bc'}.icon-brightness-5:before{content:'\e6bd'}.icon-brightness-6:before{content:'\e6be'}.icon-brightness-7:before{content:'\e6bf'}.icon-brightness-auto:before{content:'\e6c0'}.icon-brightness:before{content:'\e6c1'}.icon-broom:before{content:'\e6c2'}.icon-brush:before{content:'\e6c3'}.icon-bug:before{content:'\e6c4'}.icon-bulletin-board:before{content:'\e6c5'}.icon-bullhorn:before{content:'\e6c6'}.icon-bus:before{content:'\e6c7'}.icon-cake-variant:before{content:'\e6c8'}.icon-cake:before{content:'\e6c9'}.icon-calculator:before{content:'\e6ca'}.icon-calendar-blank:before{content:'\e6cb'}.icon-calendar-check-multiple:before{content:'\e6cc'}.icon-calendar-check:before{content:'\e6cd'}.icon-calendar-clock:before{content:'\e6ce'}.icon-calendar-multiple:before{content:'\e6cf'}.icon-calendar-plus:before{content:'\e6d0'}.icon-calendar-remove:before{content:'\e6d1'}.icon-calendar-select:before{content:'\e6d2'}.icon-calendar-text:before{content:'\e6d3'}.icon-calendar-today:before{content:'\e6d4'}.icon-calendar:before{content:'\e6d5'}.icon-camcorder-box-off:before{content:'\e6d6'}.icon-camcorder-box:before{content:'\e6d7'}.icon-camcorder-off:before{content:'\e6d8'}.icon-camcorder:before{content:'\e6d9'}.icon-camera-front-variant:before{content:'\e6da'}.icon-camera-front:before{content:'\e6db'}.icon-camera-iris:before{content:'\e6dc'}.icon-camera-party-mode:before{content:'\e6dd'}.icon-camera-rear-variant:before{content:'\e6de'}.icon-camera-rear:before{content:'\e6df'}.icon-camera-switch:before{content:'\e6e0'}.icon-camera-timer:before{content:'\e6e1'}.icon-camera:before{content:'\e6e2'}.icon-cancel:before{content:'\e6e3'}.icon-candycane:before{content:'\e6e4'}.icon-car-wash:before{content:'\e6e5'}.icon-car:before{content:'\e6e6'}.icon-carrot:before{content:'\e6e7'}.icon-cart-outline:before{content:'\e6e8'}.icon-cart:before{content:'\e6e9'}.icon-cash-100:before{content:'\e6ea'}.icon-cash-multiple:before{content:'\e6eb'}.icon-cash-usd:before{content:'\e6ec'}.icon-cash:before{content:'\e6ed'}.icon-cast-connected:before{content:'\e6ee'}.icon-cast:before{content:'\e6ef'}.icon-castle:before{content:'\e6f0'}.icon-cat:before{content:'\e6f1'}.icon-cellphone-android:before{content:'\e6f2'}.icon-cellphone-dock:before{content:'\e6f3'}.icon-cellphone-iphone:before{content:'\e6f4'}.icon-cellphone-link-off:before{content:'\e6f5'}.icon-cellphone-link:before{content:'\e6f6'}.icon-cellphone-settings:before{content:'\e6f7'}.icon-cellphone:before{content:'\e6f8'}.icon-chair-school:before{content:'\e6f9'}.icon-chart-arc:before{content:'\e6fa'}.icon-chart-areaspline:before{content:'\e6fb'}.icon-chart-bar:before{content:'\e6fc'}.icon-chart-histogram:before{content:'\e6fd'}.icon-chart-line:before{content:'\e6fe'}.icon-chart-pie:before{content:'\e6ff'}.icon-check-all:before{content:'\e700'}.icon-check-bookmark:before{content:'\e701'}.icon-check-circle:before{content:'\e702'}.icon-check:before{content:'\e703'}.icon-checkbox-blank-circle-outline:before{content:'\e704'}.icon-checkbox-blank-circle:before{content:'\e705'}.icon-checkbox-blank-outline:before{content:'\e706'}.icon-checkbox-blank:before{content:'\e707'}.icon-checkbox-marked-circle-outline:before{content:'\e708'}.icon-checkbox-marked-circle:before{content:'\e709'}.icon-checkbox-marked-outline:before{content:'\e70a'}.icon-checkbox-marked:before{content:'\e70b'}.icon-checkbox-multiple-blank-outline:before{content:'\e70c'}.icon-checkbox-multiple-blank:before{content:'\e70d'}.icon-checkbox-multiple-marked-outline:before{content:'\e70e'}.icon-checkbox-multiple-marked:before{content:'\e70f'}.icon-checkerboard:before{content:'\e710'}.icon-chevron-double-down:before{content:'\e711'}.icon-chevron-double-left:before{content:'\e712'}.icon-chevron-double-right:before{content:'\e713'}.icon-chevron-double-up:before{content:'\e714'}.icon-chevron-down:before{content:'\e715'}.icon-chevron-left:before{content:'\e716'}.icon-chevron-right:before{content:'\e717'}.icon-chevron-up:before{content:'\e718'}.icon-church:before{content:'\e719'}.icon-cisco-webex:before{content:'\e71a'}.icon-city:before{content:'\e71b'}.icon-clapperboard:before{content:'\e71c'}.icon-clipboard-account:before{content:'\e71d'}.icon-clipboard-alert:before{content:'\e71e'}.icon-clipboard-arrow-down:before{content:'\e71f'}.icon-clipboard-arrow-left:before{content:'\e720'}.icon-clipboard-check:before{content:'\e721'}.icon-clipboard-outline:before{content:'\e722'}.icon-clipboard-text:before{content:'\e723'}.icon-clipboard:before{content:'\e724'}.icon-clippy:before{content:'\e725'}.icon-clock-fast:before{content:'\e726'}.icon-clock:before{content:'\e727'}.icon-close-circle-outline:before{content:'\e728'}.icon-close-circle:before{content:'\e729'}.icon-close-network:before{content:'\e72a'}.icon-close:before{content:'\e72b'}.icon-closed-caption:before{content:'\e72c'}.icon-cloud-check:before{content:'\e72d'}.icon-cloud-circle:before{content:'\e72e'}.icon-cloud-download:before{content:'\e72f'}.icon-cloud-outline-off:before{content:'\e730'}.icon-cloud-outline:before{content:'\e731'}.icon-cloud-upload:before{content:'\e732'}.icon-cloud:before{content:'\e733'}.icon-code-array:before{content:'\e734'}.icon-code-braces:before{content:'\e735'}.icon-code-equal:before{content:'\e736'}.icon-code-greater-than-or-equal:before{content:'\e737'}.icon-code-greater-than:before{content:'\e738'}.icon-code-less-than-or-equal:before{content:'\e739'}.icon-code-less-than:before{content:'\e73a'}.icon-code-not-equal-variant:before{content:'\e73b'}.icon-code-not-equal:before{content:'\e73c'}.icon-code-string:before{content:'\e73d'}.icon-code-tags:before{content:'\e73e'}.icon-codepen:before{content:'\e73f'}.icon-coffee-to-go:before{content:'\e740'}.icon-coffee:before{content:'\e741'}.icon-cog-box:before{content:'\e742'}.icon-cog:before{content:'\e743'}.icon-coin:before{content:'\e744'}.icon-color-helper:before{content:'\e745'}.icon-comment-account-outline:before{content:'\e746'}.icon-comment-account:before{content:'\e747'}.icon-comment-alert-outline:before{content:'\e748'}.icon-comment-alert:before{content:'\e749'}.icon-comment-check-outline:before{content:'\e74a'}.icon-comment-check:before{content:'\e74b'}.icon-comment-multipe-outline:before{content:'\e74c'}.icon-comment-outline:before{content:'\e74d'}.icon-comment-plus-outline:before{content:'\e74e'}.icon-comment-processing-outline:before{content:'\e74f'}.icon-comment-processing:before{content:'\e750'}.icon-comment-remove-outline:before{content:'\e751'}.icon-comment-text-outline:before{content:'\e752'}.icon-comment-text:before{content:'\e753'}.icon-comment:before{content:'\e754'}.icon-compare:before{content:'\e755'}.icon-compass-outline:before{content:'\e756'}.icon-compass:before{content:'\e757'}.icon-console:before{content:'\e758'}.icon-content-copy:before{content:'\e759'}.icon-content-cut:before{content:'\e75a'}.icon-content-duplicate:before{content:'\e75b'}.icon-content-paste:before{content:'\e75c'}.icon-content-save-all:before{content:'\e75d'}.icon-content-save:before{content:'\e75e'}.icon-contrast-box:before{content:'\e75f'}.icon-contrast-circle:before{content:'\e760'}.icon-contrast:before{content:'\e761'}.icon-controller-xbox:before{content:'\e762'}.icon-cow:before{content:'\e763'}.icon-credit-card-multiple:before{content:'\e764'}.icon-credit-card:before{content:'\e765'}.icon-crop-free:before{content:'\e766'}.icon-crop-landscape:before{content:'\e767'}.icon-crop-portrait:before{content:'\e768'}.icon-crop-square:before{content:'\e769'}.icon-crop:before{content:'\e76a'}.icon-crosshairs-gps:before{content:'\e76b'}.icon-crosshairs:before{content:'\e76c'}.icon-crown:before{content:'\e76d'}.icon-cube-outline:before{content:'\e76e'}.icon-cube-unfolded:before{content:'\e76f'}.icon-cube:before{content:'\e770'}.icon-cup-water:before{content:'\e771'}.icon-cup:before{content:'\e772'}.icon-currency-btc:before{content:'\e773'}.icon-currency-eur:before{content:'\e774'}.icon-currency-gbp:before{content:'\e775'}.icon-currency-inr:before{content:'\e776'}.icon-currency-rub:before{content:'\e777'}.icon-currency-try:before{content:'\e778'}.icon-currency-usd:before{content:'\e779'}.icon-cursor-default-outline:before{content:'\e77a'}.icon-cursor-default:before{content:'\e77b'}.icon-cursor-move:before{content:'\e77c'}.icon-cursor-pointer:before{content:'\e77d'}.icon-data:before{content:'\e77e'}.icon-debug-step-into:before{content:'\e77f'}.icon-debug-step-out:before{content:'\e780'}.icon-debug-step-over:before{content:'\e781'}.icon-decimal-decrease:before{content:'\e782'}.icon-decimal-increase:before{content:'\e783'}.icon-delete-variant:before{content:'\e784'}.icon-delete:before{content:'\e785'}.icon-deskphone:before{content:'\e786'}.icon-desktop-mac:before{content:'\e787'}.icon-desktop-tower:before{content:'\e788'}.icon-details:before{content:'\e789'}.icon-deviantart:before{content:'\e78a'}.icon-diamond:before{content:'\e78b'}.icon-dice-1:before{content:'\e78c'}.icon-dice-2:before{content:'\e78d'}.icon-dice-3:before{content:'\e78e'}.icon-dice-4:before{content:'\e78f'}.icon-dice-5:before{content:'\e790'}.icon-dice-6:before{content:'\e791'}.icon-dice:before{content:'\e792'}.icon-directions:before{content:'\e793'}.icon-disk-alert:before{content:'\e794'}.icon-disqus-outline:before{content:'\e795'}.icon-disqus:before{content:'\e796'}.icon-division-box:before{content:'\e797'}.icon-division:before{content:'\e798'}.icon-dns:before{content:'\e799'}.icon-document:before{content:'\e79a'}.icon-domain:before{content:'\e79b'}.icon-dots-horizontal:before{content:'\e79c'}.icon-dots-vertical:before{content:'\e79d'}.icon-download:before{content:'\e79e'}.icon-drag-horizontal:before{content:'\e79f'}.icon-drag-vertical:before{content:'\e7a0'}.icon-drag:before{content:'\e7a1'}.icon-drawing-box:before{content:'\e7a2'}.icon-drawing:before{content:'\e7a3'}.icon-dribbble-box:before{content:'\e7a4'}.icon-dribbble:before{content:'\e7a5'}.icon-drone:before{content:'\e7a6'}.icon-dropbox:before{content:'\e7a7'}.icon-drupal:before{content:'\e7a8'}.icon-duck:before{content:'\e7a9'}.icon-dumbbell:before{content:'\e7aa'}.icon-earth-off:before{content:'\e7ab'}.icon-earth:before{content:'\e7ac'}.icon-ebay:before{content:'\e7ad'}.icon-edge:before{content:'\e7ae'}.icon-eject:before{content:'\e7af'}.icon-elevation-decline:before{content:'\e7b0'}.icon-elevation-rise:before{content:'\e7b1'}.icon-elevator:before{content:'\e7b2'}.icon-email-open:before{content:'\e7b3'}.icon-email-secure:before{content:'\e7b4'}.icon-email:before{content:'\e7b5'}.icon-emoticon-cool:before{content:'\e7b6'}.icon-emoticon-devil:before{content:'\e7b7'}.icon-emoticon-happy:before{content:'\e7b8'}.icon-emoticon-neutral:before{content:'\e7b9'}.icon-emoticon-poop:before{content:'\e7ba'}.icon-emoticon-sad:before{content:'\e7bb'}.icon-emoticon-tongue:before{content:'\e7bc'}.icon-emoticon:before{content:'\e7bd'}.icon-engine-outline:before{content:'\e7be'}.icon-engine:before{content:'\e7bf'}.icon-equal-box:before{content:'\e7c0'}.icon-equal:before{content:'\e7c1'}.icon-eraser:before{content:'\e7c2'}.icon-escalator:before{content:'\e7c3'}.icon-etsy:before{content:'\e7c4'}.icon-evernote:before{content:'\e7c5'}.icon-exclamation:before{content:'\e7c6'}.icon-exit-to-app:before{content:'\e7c7'}.icon-export:before{content:'\e7c8'}.icon-eye-off:before{content:'\e7c9'}.icon-eye:before{content:'\e7ca'}.icon-eyedropper-variant:before{content:'\e7cb'}.icon-eyedropper:before{content:'\e7cc'}.icon-facebook-box:before{content:'\e7cd'}.icon-facebook:before{content:'\e7ce'}.icon-factory:before{content:'\e7cf'}.icon-fan:before{content:'\e7d0'}.icon-fast-forward:before{content:'\e7d1'}.icon-ferry:before{content:'\e7d2'}.icon-file-cloud:before{content:'\e7d3'}.icon-file-delimited:before{content:'\e7d4'}.icon-file-document-box:before{content:'\e7d5'}.icon-file-document:before{content:'\e7d6'}.icon-file-excel-box:before{content:'\e7d7'}.icon-file-excel:before{content:'\e7d8'}.icon-file-find:before{content:'\e7d9'}.icon-file-hidden:before{content:'\e7da'}.icon-file-image-box:before{content:'\e7db'}.icon-file-image:before{content:'\e7dc'}.icon-file-multiple:before{content:'\e7dd'}.icon-file-music:before{content:'\e7de'}.icon-file-outline:before{content:'\e7df'}.icon-file-pdf-box:before{content:'\e7e0'}.icon-file-pdf:before{content:'\e7e1'}.icon-file-powerpoint-box:before{content:'\e7e2'}.icon-file-powerpoint:before{content:'\e7e3'}.icon-file-presentation-box:before{content:'\e7e4'}.icon-file-video:before{content:'\e7e5'}.icon-file-word-box:before{content:'\e7e6'}.icon-file-word:before{content:'\e7e7'}.icon-file-xml:before{content:'\e7e8'}.icon-file:before{content:'\e7e9'}.icon-fill:before{content:'\e7ea'}.icon-film:before{content:'\e7eb'}.icon-filmstrip-off:before{content:'\e7ec'}.icon-filmstrip:before{content:'\e7ed'}.icon-filter-outline:before{content:'\e7ee'}.icon-filter-remove-outline:before{content:'\e7ef'}.icon-filter-remove:before{content:'\e7f0'}.icon-filter-variant:before{content:'\e7f1'}.icon-filter:before{content:'\e7f2'}.icon-fire:before{content:'\e7f3'}.icon-fish:before{content:'\e7f4'}.icon-flag-checkered-variant:before{content:'\e7f5'}.icon-flag-checkered:before{content:'\e7f6'}.icon-flag-outline-variant:before{content:'\e7f7'}.icon-flag-outline:before{content:'\e7f8'}.icon-flag-triangle:before{content:'\e7f9'}.icon-flag-variant:before{content:'\e7fa'}.icon-flag:before{content:'\e7fb'}.icon-flash-auto:before{content:'\e7fc'}.icon-flash-off:before{content:'\e7fd'}.icon-flash:before{content:'\e7fe'}.icon-flashlight-off:before{content:'\e7ff'}.icon-flashlight:before{content:'\e800'}.icon-flattr:before{content:'\e801'}.icon-flickr-after:before{content:'\e802'}.icon-flickr-before:before{content:'\e803'}.icon-flip-to-back:before{content:'\e804'}.icon-flip-to-front:before{content:'\e805'}.icon-floppy:before{content:'\e806'}.icon-flower:before{content:'\e807'}.icon-folder-account:before{content:'\e808'}.icon-folder-download:before{content:'\e809'}.icon-folder-google-drive:before{content:'\e80a'}.icon-folder-image:before{content:'\e80b'}.icon-folder-lock-open:before{content:'\e80c'}.icon-folder-lock:before{content:'\e80d'}.icon-folder-move:before{content:'\e80e'}.icon-folder-multiple-image:before{content:'\e80f'}.icon-folder-multiple-outline:before{content:'\e810'}.icon-folder-multiple:before{content:'\e811'}.icon-folder-outline-lock:before{content:'\e812'}.icon-folder-outline:before{content:'\e813'}.icon-folder-plus:before{content:'\e814'}.icon-folder-remove:before{content:'\e815'}.icon-folder-upload:before{content:'\e816'}.icon-folder:before{content:'\e817'}.icon-food-apple:before{content:'\e818'}.icon-food-variant:before{content:'\e819'}.icon-food:before{content:'\e81a'}.icon-football-helmet:before{content:'\e81b'}.icon-football:before{content:'\e81c'}.icon-format-align-center:before{content:'\e81d'}.icon-format-align-justify:before{content:'\e81e'}.icon-format-align-left:before{content:'\e81f'}.icon-format-align-right:before{content:'\e820'}.icon-format-bold:before{content:'\e821'}.icon-format-clear:before{content:'\e822'}.icon-format-color-fill:before{content:'\e823'}.icon-format-color:before{content:'\e824'}.icon-format-float-center:before{content:'\e825'}.icon-format-float-left:before{content:'\e826'}.icon-format-float-none:before{content:'\e827'}.icon-format-float-right:before{content:'\e828'}.icon-format-header-1:before{content:'\e829'}.icon-format-header-2:before{content:'\e82a'}.icon-format-header-3:before{content:'\e82b'}.icon-format-header-4:before{content:'\e82c'}.icon-format-header-5:before{content:'\e82d'}.icon-format-header-6:before{content:'\e82e'}.icon-format-header-decrease:before{content:'\e82f'}.icon-format-header-down:before{content:'\e830'}.icon-format-header-equal:before{content:'\e831'}.icon-format-header-increase:before{content:'\e832'}.icon-format-header-pound:before{content:'\e833'}.icon-format-header-up:before{content:'\e834'}.icon-format-indent-decrease:before{content:'\e835'}.icon-format-indent-increase:before{content:'\e836'}.icon-format-italic:before{content:'\e837'}.icon-format-line-spacing:before{content:'\e838'}.icon-format-list-bulleted:before{content:'\e839'}.icon-format-list-numbers:before{content:'\e83a'}.icon-format-object-inline:before{content:'\e83b'}.icon-format-object-square:before{content:'\e83c'}.icon-format-object-tight:before{content:'\e83d'}.icon-format-object-top-bottom:before{content:'\e83e'}.icon-format-paint:before{content:'\e83f'}.icon-format-paragraph:before{content:'\e840'}.icon-format-quote:before{content:'\e841'}.icon-format-size:before{content:'\e842'}.icon-format-strikethrough:before{content:'\e843'}.icon-format-subscript:before{content:'\e844'}.icon-format-superscript:before{content:'\e845'}.icon-format-text:before{content:'\e846'}.icon-format-textdirection-l-to-r:before{content:'\e847'}.icon-format-textdirection-r-to-l:before{content:'\e848'}.icon-format-underline:before{content:'\e849'}.icon-forum:before{content:'\e84a'}.icon-forward:before{content:'\e84b'}.icon-foursquare:before{content:'\e84c'}.icon-fridge:before{content:'\e84d'}.icon-fullscreen-exit:before{content:'\e84e'}.icon-fullscreen:before{content:'\e84f'}.icon-function:before{content:'\e850'}.icon-gamepad-variant:before{content:'\e851'}.icon-gamepad:before{content:'\e852'}.icon-gas-station:before{content:'\e853'}.icon-gavel:before{content:'\e854'}.icon-gender-female:before{content:'\e855'}.icon-gender-male-female:before{content:'\e856'}.icon-gender-male:before{content:'\e857'}.icon-gender-transgender:before{content:'\e858'}.icon-gift:before{content:'\e859'}.icon-git:before{content:'\e85a'}.icon-github-box:before{content:'\e85b'}.icon-github:before{content:'\e85c'}.icon-glass-flute:before{content:'\e85d'}.icon-glass-mug:before{content:'\e85e'}.icon-glass-stange:before{content:'\e85f'}.icon-glass-tulip:before{content:'\e860'}.icon-glasses:before{content:'\e861'}.icon-gmail:before{content:'\e862'}.icon-google-chrome:before{content:'\e863'}.icon-google-circles-communities:before{content:'\e864'}.icon-google-circles-extended:before{content:'\e865'}.icon-google-circles-invite:before{content:'\e866'}.icon-google-circles:before{content:'\e867'}.icon-google-controller-off:before{content:'\e868'}.icon-google-controller:before{content:'\e869'}.icon-google-drive:before{content:'\e86a'}.icon-google-earth:before{content:'\e86b'}.icon-google-glass:before{content:'\e86c'}.icon-google-maps:before{content:'\e86d'}.icon-google-pages:before{content:'\e86e'}.icon-google-play:before{content:'\e86f'}.icon-google-plus-box:before{content:'\e870'}.icon-google-plus:before{content:'\e871'}.icon-google:before{content:'\e872'}.icon-grid-off:before{content:'\e873'}.icon-grid:before{content:'\e874'}.icon-group:before{content:'\e875'}.icon-hand-pointing-right:before{content:'\e876'}.icon-hanger:before{content:'\e877'}.icon-hangouts:before{content:'\e878'}.icon-harddisk:before{content:'\e879'}.icon-headphones-box:before{content:'\e87a'}.icon-headphones-dots:before{content:'\e87b'}.icon-headphones:before{content:'\e87c'}.icon-headset-dock:before{content:'\e87d'}.icon-headset-off:before{content:'\e87e'}.icon-headset:before{content:'\e87f'}.icon-heart-box-outline:before{content:'\e880'}.icon-heart-box:before{content:'\e881'}.icon-heart-broken:before{content:'\e882'}.icon-heart-outline:before{content:'\e883'}.icon-heart:before{content:'\e884'}.icon-help-circle:before{content:'\e885'}.icon-help:before{content:'\e886'}.icon-hexagon-outline:before{content:'\e887'}.icon-hexagon:before{content:'\e888'}.icon-history:before{content:'\e889'}.icon-hololens:before{content:'\e88a'}.icon-home-modern:before{content:'\e88b'}.icon-home-variant:before{content:'\e88c'}.icon-home:before{content:'\e88d'}.icon-hops:before{content:'\e88e'}.icon-hospital-building:before{content:'\e88f'}.icon-hospital-marker:before{content:'\e890'}.icon-hospital:before{content:'\e891'}.icon-hotel:before{content:'\e892'}.icon-houzz-box:before{content:'\e893'}.icon-human-child:before{content:'\e894'}.icon-human-male-female:before{content:'\e895'}.icon-human:before{content:'\e896'}.icon-image-album:before{content:'\e897'}.icon-image-area-close:before{content:'\e898'}.icon-image-area:before{content:'\e899'}.icon-image-broken:before{content:'\e89a'}.icon-image-filter-black-white:before{content:'\e89b'}.icon-image-filter-center-focus:before{content:'\e89c'}.icon-image-filter-drama:before{content:'\e89d'}.icon-image-filter-frames:before{content:'\e89e'}.icon-image-filter-hdr:before{content:'\e89f'}.icon-image-filter-none:before{content:'\e8a0'}.icon-image-filter-tilt-shift:before{content:'\e8a1'}.icon-image-filter-vintage:before{content:'\e8a2'}.icon-image-filter:before{content:'\e8a3'}.icon-image:before{content:'\e8a4'}.icon-import:before{content:'\e8a5'}.icon-inbox:before{content:'\e8a6'}.icon-indent:before{content:'\e8a7'}.icon-information-outline:before{content:'\e8a8'}.icon-information:before{content:'\e8a9'}.icon-instagram:before{content:'\e8aa'}.icon-instapaper:before{content:'\e8ab'}.icon-internet-explorer:before{content:'\e8ac'}.icon-invert-colors:before{content:'\e8ad'}.icon-jira:before{content:'\e8ae'}.icon-jsfiddle:before{content:'\e8af'}.icon-keg:before{content:'\e8b0'}.icon-key-change:before{content:'\e8b1'}.icon-key-minus:before{content:'\e8b2'}.icon-key-plus:before{content:'\e8b3'}.icon-key-remove:before{content:'\e8b4'}.icon-key-variant:before{content:'\e8b5'}.icon-key:before{content:'\e8b6'}.icon-keyboard-backspace:before{content:'\e8b7'}.icon-keyboard-caps:before{content:'\e8b8'}.icon-keyboard-close:before{content:'\e8b9'}.icon-keyboard-off:before{content:'\e8ba'}.icon-keyboard-return:before{content:'\e8bb'}.icon-keyboard-tab:before{content:'\e8bc'}.icon-keyboard-variant:before{content:'\e8bd'}.icon-keyboard:before{content:'\e8be'}.icon-label-outline:before{content:'\e8bf'}.icon-label:before{content:'\e8c0'}.icon-language-csharp:before{content:'\e8c1'}.icon-language-css3:before{content:'\e8c2'}.icon-language-html5:before{content:'\e8c3'}.icon-language-javascript:before{content:'\e8c4'}.icon-language-python-text:before{content:'\e8c5'}.icon-language-python:before{content:'\e8c6'}.icon-laptop-chromebook:before{content:'\e8c7'}.icon-laptop-mac:before{content:'\e8c8'}.icon-laptop-windows:before{content:'\e8c9'}.icon-laptop:before{content:'\e8ca'}.icon-lastfm:before{content:'\e8cb'}.icon-launch:before{content:'\e8cc'}.icon-layers-off:before{content:'\e8cd'}.icon-layers:before{content:'\e8ce'}.icon-leaf:before{content:'\e8cf'}.icon-library-books:before{content:'\e8d0'}.icon-library-music:before{content:'\e8d1'}.icon-library-plus:before{content:'\e8d2'}.icon-library:before{content:'\e8d3'}.icon-lightbulb-outline:before{content:'\e8d4'}.icon-lightbulb:before{content:'\e8d5'}.icon-link-off:before{content:'\e8d6'}.icon-link-variant-off:before{content:'\e8d7'}.icon-link-variant:before{content:'\e8d8'}.icon-link:before{content:'\e8d9'}.icon-linkedin-box:before{content:'\e8da'}.icon-linkedin:before{content:'\e8db'}.icon-linode:before{content:'\e8dc'}.icon-linux:before{content:'\e8dd'}.icon-lock-outline:before{content:'\e8de'}.icon-lock-unlocked-outline:before{content:'\e8df'}.icon-lock-unlocked:before{content:'\e8e0'}.icon-lock:before{content:'\e8e1'}.icon-login:before{content:'\e8e2'}.icon-logout:before{content:'\e8e3'}.icon-looks:before{content:'\e8e4'}.icon-loupe:before{content:'\e8e5'}.icon-lumx:before{content:'\e8e6'}.icon-magnet-on:before{content:'\e8e7'}.icon-magnet:before{content:'\e8e8'}.icon-magnify-minus:before{content:'\e8e9'}.icon-magnify-plus:before{content:'\e8ea'}.icon-magnify:before{content:'\e8eb'}.icon-mail-ru:before{content:'\e8ec'}.icon-map-marker-circle:before{content:'\e8ed'}.icon-map-marker-multiple:before{content:'\e8ee'}.icon-map-marker-off:before{content:'\e8ef'}.icon-map-marker-radius:before{content:'\e8f0'}.icon-map-marker:before{content:'\e8f1'}.icon-map:before{content:'\e8f2'}.icon-margin:before{content:'\e8f3'}.icon-markdown:before{content:'\e8f4'}.icon-marker-check:before{content:'\e8f5'}.icon-martini:before{content:'\e8f6'}.icon-material-ui:before{content:'\e8f7'}.icon-maxcdn:before{content:'\e8f8'}.icon-medium:before{content:'\e8f9'}.icon-memory:before{content:'\e8fa'}.icon-menu-down:before{content:'\e8fb'}.icon-menu-left:before{content:'\e8fc'}.icon-menu-right:before{content:'\e8fd'}.icon-menu-up:before{content:'\e8fe'}.icon-menu:before{content:'\e8ff'}.icon-message-alert:before{content:'\e900'}.icon-message-draw:before{content:'\e901'}.icon-message-image:before{content:'\e902'}.icon-message-processing:before{content:'\e903'}.icon-message-reply:before{content:'\e904'}.icon-message-text-outline:before{content:'\e905'}.icon-message-text:before{content:'\e906'}.icon-message-video:before{content:'\e907'}.icon-message:before{content:'\e908'}.icon-microphone-dots:before{content:'\e909'}.icon-microphone-off:before{content:'\e90a'}.icon-microphone-outline:before{content:'\e90b'}.icon-microphone-settings:before{content:'\e90c'}.icon-microphone-variant-off:before{content:'\e90d'}.icon-microphone-variant:before{content:'\e90e'}.icon-microphone:before{content:'\e90f'}.icon-minus-box:before{content:'\e910'}.icon-minus-circle-outline:before{content:'\e911'}.icon-minus-circle:before{content:'\e912'}.icon-minus-network:before{content:'\e913'}.icon-minus:before{content:'\e914'}.icon-monitor-multiple:before{content:'\e915'}.icon-monitor:before{content:'\e916'}.icon-more:before{content:'\e917'}.icon-mouse-off:before{content:'\e918'}.icon-mouse-variant-off:before{content:'\e919'}.icon-mouse-variant:before{content:'\e91a'}.icon-mouse:before{content:'\e91b'}.icon-movie:before{content:'\e91c'}.icon-multiplication-box:before{content:'\e91d'}.icon-multiplication:before{content:'\e91e'}.icon-music-box-outline:before{content:'\e91f'}.icon-music-box:before{content:'\e920'}.icon-music-circle:before{content:'\e921'}.icon-music-note-eighth:before{content:'\e922'}.icon-music-note-half:before{content:'\e923'}.icon-music-note-off:before{content:'\e924'}.icon-music-note-quarter:before{content:'\e925'}.icon-music-note-sixteenth:before{content:'\e926'}.icon-music-note-whole:before{content:'\e927'}.icon-music-note:before{content:'\e928'}.icon-nature-people:before{content:'\e929'}.icon-nature:before{content:'\e92a'}.icon-navigation:before{content:'\e92b'}.icon-needle:before{content:'\e92c'}.icon-nest-protect:before{content:'\e92d'}.icon-nest-thermostat:before{content:'\e92e'}.icon-newspaper:before{content:'\e92f'}.icon-nfc-tap:before{content:'\e930'}.icon-nfc-variant:before{content:'\e931'}.icon-nfc:before{content:'\e932'}.icon-no:before{content:'\e933'}.icon-not-equal:before{content:'\e934'}.icon-note-outline:before{content:'\e935'}.icon-note-text:before{content:'\e936'}.icon-note:before{content:'\e937'}.icon-numeric-0-box-multiple-outline:before{content:'\e938'}.icon-numeric-0-box-outline:before{content:'\e939'}.icon-numeric-0-box:before{content:'\e93a'}.icon-numeric-1-box-multiple-outline:before{content:'\e93b'}.icon-numeric-1-box-outline:before{content:'\e93c'}.icon-numeric-1-box:before{content:'\e93d'}.icon-numeric-2-box-multiple-outline:before{content:'\e93e'}.icon-numeric-2-box-outline:before{content:'\e93f'}.icon-numeric-2-box:before{content:'\e940'}.icon-numeric-3-box-multiple-outline:before{content:'\e941'}.icon-numeric-3-box-outline:before{content:'\e942'}.icon-numeric-3-box:before{content:'\e943'}.icon-numeric-4-box-multiple-outline:before{content:'\e944'}.icon-numeric-4-box-outline:before{content:'\e945'}.icon-numeric-4-box:before{content:'\e946'}.icon-numeric-5-box-multiple-outline:before{content:'\e947'}.icon-numeric-5-box-outline:before{content:'\e948'}.icon-numeric-5-box:before{content:'\e949'}.icon-numeric-6-box-multiple-outline:before{content:'\e94a'}.icon-numeric-6-box-outline:before{content:'\e94b'}.icon-numeric-6-box:before{content:'\e94c'}.icon-numeric-7-box-multiple-outline:before{content:'\e94d'}.icon-numeric-7-box-outline:before{content:'\e94e'}.icon-numeric-7-box:before{content:'\e94f'}.icon-numeric-8-box-multiple-outline:before{content:'\e950'}.icon-numeric-8-box-outline:before{content:'\e951'}.icon-numeric-8-box:before{content:'\e952'}.icon-numeric-9-box-multiple-outline:before{content:'\e953'}.icon-numeric-9-box-outline:before{content:'\e954'}.icon-numeric-9-box:before{content:'\e955'}.icon-numeric-9-plus-box-multiple-outline:before{content:'\e956'}.icon-numeric-9-plus-box-outline:before{content:'\e957'}.icon-numeric-9-plus-box:before{content:'\e958'}.icon-numeric:before{content:'\e959'}.icon-nutriton:before{content:'\e95a'}.icon-odnoklassniki:before{content:'\e95b'}.icon-office:before{content:'\e95c'}.icon-oil:before{content:'\e95d'}.icon-omega:before{content:'\e95e'}.icon-onedrive:before{content:'\e95f'}.icon-open-in-app:before{content:'\e960'}.icon-open-in-new:before{content:'\e961'}.icon-ornament-variant:before{content:'\e962'}.icon-ornament:before{content:'\e963'}.icon-outbox:before{content:'\e964'}.icon-outdent:before{content:'\e965'}.icon-owl:before{content:'\e966'}.icon-package-down:before{content:'\e967'}.icon-package-up:before{content:'\e968'}.icon-package-variant-closed:before{content:'\e969'}.icon-package-variant:before{content:'\e96a'}.icon-package:before{content:'\e96b'}.icon-palette-advanced:before{content:'\e96c'}.icon-palette:before{content:'\e96d'}.icon-panda:before{content:'\e96e'}.icon-pandora:before{content:'\e96f'}.icon-panorama-fisheye:before{content:'\e970'}.icon-panorama-horizontal:before{content:'\e971'}.icon-panorama-vertical:before{content:'\e972'}.icon-panorama-wide-angle:before{content:'\e973'}.icon-panorama:before{content:'\e974'}.icon-paper-cut-vertical:before{content:'\e975'}.icon-paperclip:before{content:'\e976'}.icon-parking:before{content:'\e977'}.icon-pause-circle-outline:before{content:'\e978'}.icon-pause-circle:before{content:'\e979'}.icon-pause-octagon-outline:before{content:'\e97a'}.icon-pause-octagon:before{content:'\e97b'}.icon-pause:before{content:'\e97c'}.icon-paw:before{content:'\e97d'}.icon-pen:before{content:'\e97e'}.icon-pencil-box-outline:before{content:'\e97f'}.icon-pencil-box:before{content:'\e980'}.icon-pencil:before{content:'\e981'}.icon-people:before{content:'\e982'}.icon-percent:before{content:'\e983'}.icon-person-box:before{content:'\e984'}.icon-person-minus:before{content:'\e985'}.icon-person-plus:before{content:'\e986'}.icon-pharmacy:before{content:'\e987'}.icon-phone-bluetooth:before{content:'\e988'}.icon-phone-dots:before{content:'\e989'}.icon-phone-forward:before{content:'\e98a'}.icon-phone-hangup:before{content:'\e98b'}.icon-phone-in-talk:before{content:'\e98c'}.icon-phone-incoming:before{content:'\e98d'}.icon-phone-locked:before{content:'\e98e'}.icon-phone-log:before{content:'\e98f'}.icon-phone-missed:before{content:'\e990'}.icon-phone-outgoing:before{content:'\e991'}.icon-phone-paused:before{content:'\e992'}.icon-phone:before{content:'\e993'}.icon-picture:before{content:'\e994'}.icon-pig:before{content:'\e995'}.icon-pill:before{content:'\e996'}.icon-pin-off:before{content:'\e997'}.icon-pin:before{content:'\e998'}.icon-pine-tree-box:before{content:'\e999'}.icon-pine-tree:before{content:'\e99a'}.icon-pinterest-box:before{content:'\e99b'}.icon-pinterest:before{content:'\e99c'}.icon-pizza:before{content:'\e99d'}.icon-plane:before{content:'\e99e'}.icon-play-box-outline:before{content:'\e99f'}.icon-play-circle-outline:before{content:'\e9a0'}.icon-play-circle:before{content:'\e9a1'}.icon-play:before{content:'\e9a2'}.icon-playlist-minus:before{content:'\e9a3'}.icon-playlist-plus:before{content:'\e9a4'}.icon-playstation:before{content:'\e9a5'}.icon-plus-box:before{content:'\e9a6'}.icon-plus-circle-outline:before{content:'\e9a7'}.icon-plus-circle:before{content:'\e9a8'}.icon-plus-network:before{content:'\e9a9'}.icon-plus-one:before{content:'\e9aa'}.icon-plus:before{content:'\e9ab'}.icon-pocket:before{content:'\e9ac'}.icon-poll-box:before{content:'\e9ad'}.icon-poll:before{content:'\e9ae'}.icon-polymer:before{content:'\e9af'}.icon-popcorn:before{content:'\e9b0'}.icon-pound-box:before{content:'\e9b1'}.icon-pound:before{content:'\e9b2'}.icon-power-settings:before{content:'\e9b3'}.icon-power-socket:before{content:'\e9b4'}.icon-power:before{content:'\e9b5'}.icon-presentation-play:before{content:'\e9b6'}.icon-presentation:before{content:'\e9b7'}.icon-printer-3d:before{content:'\e9b8'}.icon-printer:before{content:'\e9b9'}.icon-pulse:before{content:'\e9ba'}.icon-puzzle:before{content:'\e9bb'}.icon-qrcode:before{content:'\e9bc'}.icon-quadcopter:before{content:'\e9bd'}.icon-quality-high:before{content:'\e9be'}.icon-question-mark-circle:before{content:'\e9bf'}.icon-quick-reply:before{content:'\e9c0'}.icon-quicktime:before{content:'\e9c1'}.icon-rabbit:before{content:'\e9c2'}.icon-radiator:before{content:'\e9c3'}.icon-radio-tower:before{content:'\e9c4'}.icon-radio:before{content:'\e9c5'}.icon-radioactive:before{content:'\e9c6'}.icon-radiobox-blank:before{content:'\e9c7'}.icon-radiobox-marked:before{content:'\e9c8'}.icon-raspberrypi:before{content:'\e9c9'}.icon-rdio:before{content:'\e9ca'}.icon-read:before{content:'\e9cb'}.icon-readability:before{content:'\e9cc'}.icon-receipt:before{content:'\e9cd'}.icon-recycle:before{content:'\e9ce'}.icon-reddit:before{content:'\e9cf'}.icon-redo-variant:before{content:'\e9d0'}.icon-redo:before{content:'\e9d1'}.icon-refresh:before{content:'\e9d2'}.icon-relative-scale:before{content:'\e9d3'}.icon-reload:before{content:'\e9d4'}.icon-remote:before{content:'\e9d5'}.icon-rename-box:before{content:'\e9d6'}.icon-repeat-off:before{content:'\e9d7'}.icon-repeat-once:before{content:'\e9d8'}.icon-repeat:before{content:'\e9d9'}.icon-replay:before{content:'\e9da'}.icon-reply-all:before{content:'\e9db'}.icon-reply:before{content:'\e9dc'}.icon-reproduction:before{content:'\e9dd'}.icon-resize-bottom-right:before{content:'\e9de'}.icon-responsive:before{content:'\e9df'}.icon-restore:before{content:'\e9e0'}.icon-rewind:before{content:'\e9e1'}.icon-ribbon:before{content:'\e9e2'}.icon-road:before{content:'\e9e3'}.icon-rocket:before{content:'\e9e4'}.icon-rotate-3d:before{content:'\e9e5'}.icon-rotate-left-variant:before{content:'\e9e6'}.icon-rotate-left:before{content:'\e9e7'}.icon-rotate-right-variant:before{content:'\e9e8'}.icon-rotate-right:before{content:'\e9e9'}.icon-routes:before{content:'\e9ea'}.icon-rss-box:before{content:'\e9eb'}.icon-ruler:before{content:'\e9ec'}.icon-run:before{content:'\e9ed'}.icon-sale:before{content:'\e9ee'}.icon-satellite-variant:before{content:'\e9ef'}.icon-satellite:before{content:'\e9f0'}.icon-scale-bathroom:before{content:'\e9f1'}.icon-scale:before{content:'\e9f2'}.icon-school:before{content:'\e9f3'}.icon-screen-rotation-lock:before{content:'\e9f4'}.icon-screen-rotation:before{content:'\e9f5'}.icon-script:before{content:'\e9f6'}.icon-security-network:before{content:'\e9f7'}.icon-security:before{content:'\e9f8'}.icon-select-all:before{content:'\e9f9'}.icon-select-inverse:before{content:'\e9fa'}.icon-select-off:before{content:'\e9fb'}.icon-select:before{content:'\e9fc'}.icon-send:before{content:'\e9fd'}.icon-server-minus:before{content:'\e9fe'}.icon-server-network-off:before{content:'\e9ff'}.icon-server-network:before{content:'\ea00'}.icon-server-off:before{content:'\ea01'}.icon-server-plus:before{content:'\ea02'}.icon-server-remove:before{content:'\ea03'}.icon-server-security:before{content:'\ea04'}.icon-server:before{content:'\ea05'}.icon-shape-plus:before{content:'\ea06'}.icon-share-variant:before{content:'\ea07'}.icon-share:before{content:'\ea08'}.icon-shield-outline:before{content:'\ea09'}.icon-shield:before{content:'\ea0a'}.icon-shopping-music:before{content:'\ea0b'}.icon-shopping:before{content:'\ea0c'}.icon-shuffle:before{content:'\ea0d'}.icon-sigma:before{content:'\ea0e'}.icon-sign-caution:before{content:'\ea0f'}.icon-signal:before{content:'\ea10'}.icon-silverware-fork:before{content:'\ea11'}.icon-silverware-spoon:before{content:'\ea12'}.icon-silverware-variant:before{content:'\ea13'}.icon-silverware:before{content:'\ea14'}.icon-sim-alert:before{content:'\ea15'}.icon-sim:before{content:'\ea16'}.icon-sitemap:before{content:'\ea17'}.icon-skip-next:before{content:'\ea18'}.icon-skip-previous:before{content:'\ea19'}.icon-skype-business:before{content:'\ea1a'}.icon-skype:before{content:'\ea1b'}.icon-sleep-off:before{content:'\ea1c'}.icon-sleep:before{content:'\ea1d'}.icon-smoking-off:before{content:'\ea1e'}.icon-smoking:before{content:'\ea1f'}.icon-snapchat:before{content:'\ea20'}.icon-snowman:before{content:'\ea21'}.icon-sofa:before{content:'\ea22'}.icon-sort-alphabetical:before{content:'\ea23'}.icon-sort-ascending:before{content:'\ea24'}.icon-sort-descending:before{content:'\ea25'}.icon-sort-numeric:before{content:'\ea26'}.icon-sort-variant:before{content:'\ea27'}.icon-sort:before{content:'\ea28'}.icon-soundcloud:before{content:'\ea29'}.icon-source-fork:before{content:'\ea2a'}.icon-source-pull:before{content:'\ea2b'}.icon-speaker-off:before{content:'\ea2c'}.icon-speaker:before{content:'\ea2d'}.icon-speedometer:before{content:'\ea2e'}.icon-spellcheck:before{content:'\ea2f'}.icon-spotify:before{content:'\ea30'}.icon-spotlight-beam:before{content:'\ea31'}.icon-spotlight:before{content:'\ea32'}.icon-spreadsheet:before{content:'\ea33'}.icon-square-inc-cash:before{content:'\ea34'}.icon-square-inc:before{content:'\ea35'}.icon-stackoverflow:before{content:'\ea36'}.icon-star-circle:before{content:'\ea37'}.icon-star-half:before{content:'\ea38'}.icon-star-of-david:before{content:'\ea39'}.icon-star-outline:before{content:'\ea3a'}.icon-star:before{content:'\ea3b'}.icon-steam:before{content:'\ea3c'}.icon-stethoscope:before{content:'\ea3d'}.icon-stocking:before{content:'\ea3e'}.icon-stop:before{content:'\ea3f'}.icon-store-24-hour:before{content:'\ea40'}.icon-store:before{content:'\ea41'}.icon-stove:before{content:'\ea42'}.icon-subway:before{content:'\ea43'}.icon-sunglasses:before{content:'\ea44'}.icon-swap-horizontal:before{content:'\ea45'}.icon-swap-vertical:before{content:'\ea46'}.icon-swim:before{content:'\ea47'}.icon-sword:before{content:'\ea48'}.icon-sync-alert:before{content:'\ea49'}.icon-sync-off:before{content:'\ea4a'}.icon-sync:before{content:'\ea4b'}.icon-tab-unselected:before{content:'\ea4c'}.icon-tab:before{content:'\ea4d'}.icon-table-column-plus-after:before{content:'\ea4e'}.icon-table-column-plus-before:before{content:'\ea4f'}.icon-table-column-remove:before{content:'\ea50'}.icon-table-column-width:before{content:'\ea51'}.icon-table-edit:before{content:'\ea52'}.icon-table-large:before{content:'\ea53'}.icon-table-row-height:before{content:'\ea54'}.icon-table-row-plus-after:before{content:'\ea55'}.icon-table-row-plus-before:before{content:'\ea56'}.icon-table-row-remove:before{content:'\ea57'}.icon-table:before{content:'\ea58'}.icon-tablet-android:before{content:'\ea59'}.icon-tablet-ipad:before{content:'\ea5a'}.icon-tablet:before{content:'\ea5b'}.icon-tag-faces:before{content:'\ea5c'}.icon-tag-multiple:before{content:'\ea5d'}.icon-tag-outline:before{content:'\ea5e'}.icon-tag-text-outline:before{content:'\ea5f'}.icon-tag:before{content:'\ea60'}.icon-taxi:before{content:'\ea61'}.icon-teamviewer:before{content:'\ea62'}.icon-telegram:before{content:'\ea63'}.icon-television-guide:before{content:'\ea64'}.icon-television:before{content:'\ea65'}.icon-temperature-celsius:before{content:'\ea66'}.icon-temperature-fahrenheit:before{content:'\ea67'}.icon-temperature-kelvin:before{content:'\ea68'}.icon-tennis:before{content:'\ea69'}.icon-tent:before{content:'\ea6a'}.icon-terrain:before{content:'\ea6b'}.icon-text-to-speech-off:before{content:'\ea6c'}.icon-text-to-speech:before{content:'\ea6d'}.icon-texture:before{content:'\ea6e'}.icon-theater:before{content:'\ea6f'}.icon-theme-light-dark:before{content:'\ea70'}.icon-thermometer-lines:before{content:'\ea71'}.icon-thermometer:before{content:'\ea72'}.icon-thumb-down-outline:before{content:'\ea73'}.icon-thumb-down:before{content:'\ea74'}.icon-thumb-up-outline:before{content:'\ea75'}.icon-thumb-up:before{content:'\ea76'}.icon-thumbs-up-down:before{content:'\ea77'}.icon-ticket-account:before{content:'\ea78'}.icon-ticket:before{content:'\ea79'}.icon-tie:before{content:'\ea7a'}.icon-tile-four:before{content:'\ea7b'}.icon-timelapse:before{content:'\ea7c'}.icon-timer-3:before{content:'\ea7d'}.icon-timer-10:before{content:'\ea7e'}.icon-timer-off:before{content:'\ea7f'}.icon-timer-sand:before{content:'\ea80'}.icon-timer:before{content:'\ea81'}.icon-timetable:before{content:'\ea82'}.icon-toggle-switch-off:before{content:'\ea83'}.icon-toggle-switch-on:before{content:'\ea84'}.icon-tooltip-edit:before{content:'\ea85'}.icon-tooltip-image:before{content:'\ea86'}.icon-tooltip-outline-plus:before{content:'\ea87'}.icon-tooltip-outline:before{content:'\ea88'}.icon-tooltip-text:before{content:'\ea89'}.icon-tooltip:before{content:'\ea8a'}.icon-tor:before{content:'\ea8b'}.icon-traffic-light:before{content:'\ea8c'}.icon-train:before{content:'\ea8d'}.icon-tram:before{content:'\ea8e'}.icon-transcribe-close:before{content:'\ea8f'}.icon-transcribe:before{content:'\ea90'}.icon-transfer:before{content:'\ea91'}.icon-trash:before{content:'\ea92'}.icon-tree:before{content:'\ea93'}.icon-trello:before{content:'\ea94'}.icon-trending-down:before{content:'\ea95'}.icon-trending-neutral:before{content:'\ea96'}.icon-trending-up:before{content:'\ea97'}.icon-truck:before{content:'\ea98'}.icon-tshirt-crew:before{content:'\ea99'}.icon-tshirt-v:before{content:'\ea9a'}.icon-tumblr-reblog:before{content:'\ea9b'}.icon-tumblr:before{content:'\ea9c'}.icon-twitch:before{content:'\ea9d'}.icon-twitter-box:before{content:'\ea9e'}.icon-twitter-circle:before{content:'\ea9f'}.icon-twitter-retweet:before{content:'\eaa0'}.icon-twitter:before{content:'\eaa1'}.icon-ubuntu:before{content:'\eaa2'}.icon-umbrella-outline:before{content:'\eaa3'}.icon-umbrella:before{content:'\eaa4'}.icon-undo-variant:before{content:'\eaa5'}.icon-undo:before{content:'\eaa6'}.icon-unfold-less:before{content:'\eaa7'}.icon-unfold-more:before{content:'\eaa8'}.icon-ungroup:before{content:'\eaa9'}.icon-untappd:before{content:'\eaaa'}.icon-upload:before{content:'\eaab'}.icon-usb:before{content:'\eaac'}.icon-vector-curve:before{content:'\eaad'}.icon-vector-point:before{content:'\eaae'}.icon-vector-square:before{content:'\eaaf'}.icon-verified:before{content:'\eab0'}.icon-vibration:before{content:'\eab1'}.icon-video-off:before{content:'\eab2'}.icon-video-switch:before{content:'\eab3'}.icon-video:before{content:'\eab4'}.icon-view-agenda:before{content:'\eab5'}.icon-view-array:before{content:'\eab6'}.icon-view-carousel:before{content:'\eab7'}.icon-view-column:before{content:'\eab8'}.icon-view-dashboard:before{content:'\eab9'}.icon-view-day:before{content:'\eaba'}.icon-view-headline:before{content:'\eabb'}.icon-view-list:before{content:'\eabc'}.icon-view-module:before{content:'\eabd'}.icon-view-quilt:before{content:'\eabe'}.icon-view-stream:before{content:'\eabf'}.icon-view-week:before{content:'\eac0'}.icon-vimeo:before{content:'\eac1'}.icon-vine:before{content:'\eac2'}.icon-vk-box:before{content:'\eac3'}.icon-vk-circle:before{content:'\eac4'}.icon-vk:before{content:'\eac5'}.icon-voicemail:before{content:'\eac6'}.icon-volume-high:before{content:'\eac7'}.icon-volume-low:before{content:'\eac8'}.icon-volume-medium:before{content:'\eac9'}.icon-volume-off:before{content:'\eaca'}.icon-volume:before{content:'\eacb'}.icon-vpn:before{content:'\eacc'}.icon-walk:before{content:'\eacd'}.icon-wallet-giftcard:before{content:'\eace'}.icon-wallet-membership:before{content:'\eacf'}.icon-wallet-travel:before{content:'\ead0'}.icon-wallet:before{content:'\ead1'}.icon-washing-machine:before{content:'\ead2'}.icon-watch-export:before{content:'\ead3'}.icon-watch-import:before{content:'\ead4'}.icon-watch:before{content:'\ead5'}.icon-water-off:before{content:'\ead6'}.icon-water-pump:before{content:'\ead7'}.icon-water:before{content:'\ead8'}.icon-weather-cloudy:before{content:'\ead9'}.icon-weather-fog:before{content:'\eada'}.icon-weather-hail:before{content:'\eadb'}.icon-weather-lightning:before{content:'\eadc'}.icon-weather-night:before{content:'\eadd'}.icon-weather-partlycloudy:before{content:'\eade'}.icon-weather-pouring:before{content:'\eadf'}.icon-weather-rainy:before{content:'\eae0'}.icon-weather-snowy:before{content:'\eae1'}.icon-weather-sunny:before{content:'\eae2'}.icon-weather-sunset-down:before{content:'\eae3'}.icon-weather-sunset-up:before{content:'\eae4'}.icon-weather-sunset:before{content:'\eae5'}.icon-weather-windy-variant:before{content:'\eae6'}.icon-weather-windy:before{content:'\eae7'}.icon-web:before{content:'\eae8'}.icon-webcam:before{content:'\eae9'}.icon-weight-kilogram:before{content:'\eaea'}.icon-weight:before{content:'\eaeb'}.icon-whatsapp:before{content:'\eaec'}.icon-wheelchair-accessibility:before{content:'\eaed'}.icon-white-balance-auto:before{content:'\eaee'}.icon-white-balance-incandescent:before{content:'\eaef'}.icon-white-balance-irradescent:before{content:'\eaf0'}.icon-white-balance-sunny:before{content:'\eaf1'}.icon-wifi:before{content:'\eaf2'}.icon-wii:before{content:'\eaf3'}.icon-wikipedia:before{content:'\eaf4'}.icon-window-close:before{content:'\eaf5'}.icon-window-closed:before{content:'\eaf6'}.icon-window-maximize:before{content:'\eaf7'}.icon-window-minimize:before{content:'\eaf8'}.icon-window-open:before{content:'\eaf9'}.icon-window-restore:before{content:'\eafa'}.icon-windows:before{content:'\eafb'}.icon-wordpress:before{content:'\eafc'}.icon-worker:before{content:'\eafd'}.icon-wunderlist:before{content:'\eafe'}.icon-xbox-controller-off:before{content:'\eaff'}.icon-xbox-controller:before{content:'\eb00'}.icon-xbox:before{content:'\eb01'}.icon-xda:before{content:'\eb02'}.icon-xml:before{content:'\eb03'}.icon-yeast:before{content:'\eb04'}.icon-yelp:before{content:'\eb05'}.icon-youtube-play:before{content:'\eb06'}.icon-youtube:before{content:'\eb07'}.icon-zip-box:before{content:'\eb08'}.avatar{width:40px;min-width:40px;height:40px;line-height:40px;margin:0 8px 0 0;border-radius:50%;font-size:17px;font-weight:500;text-align:center;color:#fff}.avatar.square{border-radius:0}.avatar.small{width:20px;min-width:20px;height:20px;line-height:20px}.avatar.big{width:72px;min-width:72px;height:72px;line-height:72px}.avatar.huge{width:96px;min-width:96px;height:96px;line-height:96px}.form-wrapper{background:#fff;padding:16px}.form-wrapper .form-title{font-size:21px;padding:8px 0}.navigation-simple .item{position:relative;cursor:pointer;text-align:left;margin:0;padding:0 24px;text-transform:none;line-height:48px;max-height:48px;height:48px}.navigation-simple .item md-icon{margin:0 16px 0 0}.navigation-simple .item .title{font-size:13px;font-weight:500;line-height:1}.navigation-simple .item.selected{background-color:rgba(0,0,0,.06)}.navigation-simple .subheader{font-size:13px;border-top:1px solid rgba(0,0,0,.12);font-weight:500;margin-top:8px}.navigation-simple .subheader.light{border-top:1px solid rgba(255,255,255,.12)}.navigation-simple md-divider{margin:8px 0}.simple-pagination{position:relative;display:inline-flex;flex-direction:row;box-shadow:0 1px 3px 0 rgba(0,0,0,.2),0 1px 1px 0 rgba(0,0,0,.14),0 2px 1px -1px rgba(0,0,0,.12);background-color:#fff;padding:0 8px}.simple-pagination .pagination-item{min-width:48px;min-height:56px;line-height:56px;border-radius:0;margin:0;font-weight:400;color:rgba(0,0,0,.54)}.simple-pagination .pagination-item:hover{color:rgba(0,0,0,.87)}.simple-pagination .pagination-item.active{cursor:default;color:rgba(0,0,0,.87)}.simple-pagination .pagination-item.disabled{cursor:default;color:rgba(0,0,0,.26)}.price-tables .price-table{position:relative;background-color:#fff;width:280px;border-radius:2px;margin:24px 24px 0 0;overflow:hidden}.price-tables .price-table.style-1 .package-type{font-size:17px;padding:16px 24px}.price-tables .price-table.style-1 .package-type .sale{font-size:13px;font-weight:600}.price-tables .price-table.style-1 .price{padding:32px 32px 16px 32px}.price-tables .price-table.style-1 .price .currency{padding-right:4px;font-size:24px;font-weight:500;color:rgba(0,0,0,.54)}.price-tables .price-table.style-1 .price .value{font-size:72px;font-weight:300;line-height:1}.price-tables .price-table.style-1 .price .period{padding:0 0 5px 4px;font-size:17px;color:rgba(0,0,0,.54)}.price-tables .price-table.style-1 md-divider{margin:16px 32px}.price-tables .price-table.style-1 .terms{padding:16px 32px;font-size:15px}.price-tables .price-table.style-1 .cta-button{margin:16px auto 32px auto;width:128px}.price-tables .price-table.style-2 .badge{position:absolute;top:0;left:50%;transform:translateX(-50%);font-size:11px;font-weight:500;padding:6px 8px}.price-tables .price-table.style-2 .package-type{padding:48px 32px 24px 32px;font-size:20px;font-weight:500;text-align:center}.price-tables .price-table.style-2 .price{padding:0 32px 8px 32px}.price-tables .price-table.style-2 .price .currency{padding-right:4px;font-size:24px;font-weight:500;color:rgba(0,0,0,.54)}.price-tables .price-table.style-2 .price .value{font-size:56px;font-weight:300;line-height:1}.price-tables .price-table.style-2 .period{padding:0 32px;font-size:15px;font-weight:500;color:rgba(0,0,0,.54);text-align:center}.price-tables .price-table.style-2 .terms{padding:32px;font-size:15px}.price-tables .price-table.style-2 .terms .term{padding-bottom:8px}.price-tables .price-table.style-2 .terms .term:last-child{padding-bottom:0}.price-tables .price-table.style-2 .cta-button{margin:8px auto 32px auto;width:128px}.price-tables .price-table.style-3 .package-type{padding:32px;text-align:center}.price-tables .price-table.style-3 .package-type .title{font-size:34px}.price-tables .price-table.style-3 .package-type .subtitle{font-size:17px;color:rgba(0,0,0,.54);font-weight:500}.price-tables .price-table.style-3 .price{padding:16px 32px}.price-tables .price-table.style-3 .price .currency{padding-right:4px;font-size:15px;font-weight:500}.price-tables .price-table.style-3 .price .value{font-size:34px;font-weight:300;line-height:1}.price-tables .price-table.style-3 .price .period{padding-left:4px;text-align:center}.price-tables .price-table.style-3 .terms{margin:32px;font-size:15px;color:rgba(0,0,0,.54)}.price-tables .price-table.style-3 .terms .term{padding-bottom:16px}.price-tables .price-table.style-3 .terms .term:last-child{padding-bottom:0}.price-tables .price-table.style-3 .cta-button{margin:8px 32px}.price-tables .price-table.style-3 .note{padding:8px 32px 16px 32px;text-align:center;color:rgba(0,0,0,.54)}.simple-table-container{background:#fff}.simple-table-container .table-title{font-size:20px;padding:24px}table.simple{width:100%;border:none;border-spacing:0;text-align:left}table.simple thead tr th{padding:16px 8px;font-weight:500;color:rgba(0,0,0,.54);border-bottom:1px solid rgba(0,0,0,.12);white-space:nowrap;min-width:120px}table.simple thead tr th:first-child{padding-left:24px}table.simple thead tr th:last-child{padding-right:24px}table.simple tbody tr td{padding:16px 8px;border-bottom:1px solid rgba(0,0,0,.12)}table.simple tbody tr td:first-child{padding-left:24px}table.simple tbody tr td:last-child{padding-right:24px}table.simple tbody tr:last-child td{border-bottom:none}table.simple.clickable tbody tr{cursor:pointer}table.simple.clickable tbody tr:hover{background:rgba(0,0,0,.03)}html{font-size:62.5%;font-family:Roboto,"Helvetica Neue",Arial,sans-serif;line-height:1.4;letter-spacing:-.1px}body{font-size:1.3rem}body,html{-webkit-font-smoothing:auto;-moz-osx-font-smoothing:auto}form{font-size:1.6rem}.h1,.h2,.h3,.h4,.h5,.h6,h1,h2,h3,h4,h5,h6{font-weight:400}.h1,h1{font-size:2.4rem}.h2,h2{font-size:2rem}.h3,h3{font-size:1.6rem}.h4,h4{font-size:1.4rem}.h5,h5{font-size:1.3rem}.h6,h6{font-size:1.2rem}a{text-decoration:none}a:active,a:hover{text-decoration:underline}abbr{cursor:help;border-bottom:1px dotted rgba(0,0,0,.54)}blockquote{border-left:3px solid rgba(0,0,0,.12);font-style:italic;margin:1em 0;padding-left:16px}blockquote footer{font-style:normal}blockquote footer:before{content:'\2014 \00A0'}blockquote.reverse{border-left:none;border-right:3px solid rgba(0,0,0,.12);text-align:right;padding-left:0;padding-right:16px}blockquote.reverse footer:before{content:''}blockquote.reverse footer:after{content:'\2014 \00A0'}code{font-family:Monaco,Menlo,Consolas,"Ubuntu Mono",monospace}code:not(.highlight){background:rgba(0,0,0,.065);color:#106cc8;margin:0 1px;padding:2px 3px;border-radius:2px}dl dt{font-weight:700}dl dd{margin:4px 0 16px 0}mark{background:#f7f49a}pre{line-height:1.6;margin:8px 16px;white-space:pre-wrap}small{font-size:80%}table thead tr th{text-align:left}.text-italic{font-style:italic}.text-semibold{font-weight:600}.text-bold,strong{font-weight:700}.text-strike{text-decoration:line-through}.text-super{vertical-align:super}.text-sub{vertical-align:sub}.text-capitalize{text-transform:capitalize}.text-lowercase{text-transform:lowercase}.text-uppercase{text-transform:uppercase}.text-left{text-align:left}.text-center{text-align:center}.text-right{text-align:right}.font-weight-100{font-weight:100}.font-weight-200{font-weight:200}.font-weight-300{font-weight:300}.font-weight-400{font-weight:400}.font-weight-500{font-weight:500}.font-weight-600{font-weight:600}.font-weight-700{font-weight:700}.font-weight-800{font-weight:800}.font-weight-900{font-weight:900}.font-size-2{font-size:2px}.font-size-4{font-size:4px}.font-size-6{font-size:6px}.font-size-8{font-size:8px}.font-size-10{font-size:10px}.font-size-12{font-size:12px}.font-size-14{font-size:14px}.font-size-16{font-size:16px}.font-size-18{font-size:18px}.font-size-20{font-size:20px}.font-size-22{font-size:22px}.font-size-24{font-size:24px}.font-size-26{font-size:26px}.font-size-28{font-size:28px}.font-size-30{font-size:30px}.font-size-32{font-size:32px}.font-size-34{font-size:34px}.font-size-36{font-size:36px}.font-size-38{font-size:38px}.font-size-40{font-size:40px}.font-size-42{font-size:42px}.font-size-44{font-size:44px}.font-size-46{font-size:46px}.font-size-48{font-size:48px}.font-size-50{font-size:50px}.font-size-52{font-size:52px}.font-size-54{font-size:54px}.font-size-56{font-size:56px}.font-size-58{font-size:58px}.font-size-60{font-size:60px}.font-size-62{font-size:62px}.font-size-64{font-size:64px}.font-size-66{font-size:66px}.font-size-68{font-size:68px}.font-size-70{font-size:70px}.font-size-72{font-size:72px}.font-size-74{font-size:74px}.font-size-76{font-size:76px}.font-size-78{font-size:78px}.font-size-80{font-size:80px}.font-size-82{font-size:82px}.font-size-84{font-size:84px}.font-size-86{font-size:86px}.font-size-88{font-size:88px}.font-size-90{font-size:90px}.font-size-92{font-size:92px}.font-size-94{font-size:94px}.font-size-96{font-size:96px}.font-size-98{font-size:98px}.font-size-100{font-size:100px}.font-size-102{font-size:102px}.font-size-104{font-size:104px}.font-size-106{font-size:106px}.font-size-108{font-size:108px}.font-size-110{font-size:110px}.font-size-112{font-size:112px}.font-size-114{font-size:114px}.font-size-116{font-size:116px}.font-size-118{font-size:118px}.font-size-120{font-size:120px}.line-height-2{line-height:2px}.line-height-4{line-height:4px}.line-height-6{line-height:6px}.line-height-8{line-height:8px}.line-height-10{line-height:10px}.line-height-12{line-height:12px}.line-height-14{line-height:14px}.line-height-16{line-height:16px}.line-height-18{line-height:18px}.line-height-20{line-height:20px}.line-height-22{line-height:22px}.line-height-24{line-height:24px}.line-height-26{line-height:26px}.line-height-28{line-height:28px}.line-height-30{line-height:30px}.line-height-32{line-height:32px}.line-height-34{line-height:34px}.line-height-36{line-height:36px}.line-height-38{line-height:38px}.line-height-40{line-height:40px}.line-height-42{line-height:42px}.line-height-44{line-height:44px}.line-height-46{line-height:46px}.line-height-48{line-height:48px}.line-height-50{line-height:50px}.line-height-52{line-height:52px}.line-height-54{line-height:54px}.line-height-56{line-height:56px}.line-height-58{line-height:58px}.line-height-60{line-height:60px}.line-height-62{line-height:62px}.line-height-64{line-height:64px}.line-height-66{line-height:66px}.line-height-68{line-height:68px}.line-height-70{line-height:70px}.line-height-72{line-height:72px}.line-height-74{line-height:74px}.line-height-76{line-height:76px}.line-height-78{line-height:78px}.line-height-80{line-height:80px}.line-height-82{line-height:82px}.line-height-84{line-height:84px}.line-height-86{line-height:86px}.line-height-88{line-height:88px}.line-height-90{line-height:90px}.line-height-92{line-height:92px}.line-height-94{line-height:94px}.line-height-96{line-height:96px}.line-height-98{line-height:98px}.line-height-100{line-height:100px}.line-height-102{line-height:102px}.line-height-104{line-height:104px}.line-height-106{line-height:106px}.line-height-108{line-height:108px}.line-height-110{line-height:110px}.line-height-112{line-height:112px}.line-height-114{line-height:114px}.line-height-116{line-height:116px}.line-height-118{line-height:118px}.line-height-120{line-height:120px}.text-boxed,.text-boxed-light{border-radius:2px;padding:4px 8px;margin:0 8px;font-size:11px;font-weight:500;color:rgba(0,0,0,.54);background-color:rgba(0,0,0,.12);white-space:nowrap}.text-boxed-light{background-color:rgba(255,255,255,.7)}.text-truncate{display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.text-nowrap{white-space:nowrap}html,html *{scrollbar-width:thin;scrollbar-color:rgba(128,128,128,.25) rgba(128,128,128,.25)}::-webkit-scrollbar{width:8px;height:8px;background-color:transparent;box-shadow:none}::-webkit-scrollbar:hover{background-color:transparent}::-webkit-scrollbar-thumb{min-height:8px;min-width:8px;background-color:rgba(128,128,128,.25);box-shadow:none}::-webkit-scrollbar-thumb:hover{background-color:rgba(128,128,128,.125)}::-webkit-scrollbar-thumb:active{background-color:rgba(128,128,128,.15)}.angular-google-map-container{height:400px}.moment-picker .moment-picker-container{width:296px;border:none;border-radius:2px;box-shadow:0 2px 4px -1px rgba(0,0,0,.2),0 4px 5px 0 rgba(0,0,0,.14),0 1px 10px 0 rgba(0,0,0,.12);margin-left:0;padding:8px}.moment-picker .moment-picker-container td,.moment-picker .moment-picker-container th{min-width:0;width:40px;height:40px;padding:8px;text-shadow:none;border-radius:35px}.moment-picker .moment-picker-container td:hover,.moment-picker .moment-picker-container th:hover{background:#f5f5f5;background-image:none}.moment-picker .moment-picker-container td.selected{background:#03a9f4;background-image:none}.moment-picker .moment-picker-container .header-view th{border-radius:0;white-space:nowrap;width:auto}.moment-picker .moment-picker-container .header-view th:first-child,.moment-picker .moment-picker-container .header-view th:last-child{width:20%}.c3{transition:all .3s ease}.c3 svg{font:12px RobotoDraft,Roboto,'Helvetica Neue',sans-serif}.c3 line,.c3 path{fill:none;stroke:#000}.c3 text{font-family:Roboto,"Helvetica Neue",Arial,sans-serif;user-select:none}.c3 .c3-bars path,.c3 .c3-event-rect,.c3 .c3-legend-item-tile,.c3 .c3-xgrid-focus,.c3 .c3-ygrid{shape-rendering:crispEdges}.c3 .c3-chart-line{transition:all .3s ease}.c3 .c3-line{stroke-width:1px}.c3.stroke-3 .c3-line{stroke-width:3px}.c3.stroke-2 .c3-line{stroke-width:2px}.c3 .c3-circle{transition:all .3s ease;stroke:#fff;stroke-width:2}.c3 .c3-circle._expanded_{stroke-width:3;stroke:#fff}.c3 .c3-chart-arc path{stroke:#fff}.c3 .c3-chart-arc text{fill:#fff;font-size:13px}.c3 .c3-grid line{stroke:rgba(0,0,0,.04);stroke-width:1px;stroke-dasharray:0}.c3 .c3-grid text{fill:#aaa}.c3 .c3-axis .tick{stroke-width:0}.c3 .c3-axis text{fill:rgba(0,0,0,.33)}.c3 .c3-axis line,.c3 .c3-axis path{stroke:rgba(0,0,0,.04)}.c3 .c3-xgrid,.c3 .c3-ygrid{stroke-dasharray:0 0}.c3 .c3-text.c3-empty{fill:grey;font-size:2em}.c3 .c3-bar{stroke-width:0}.c3 .c3-bar._expanded_{fill-opacity:.75}.c3 .c3-target.c3-focused{opacity:1}.c3 .c3-target.c3-focused .c3-target.c3-focused path.c3-step,.c3 .c3-target.c3-focused path.c3-line{stroke-width:3px;transition:all .3s ease}.c3 .c3-target.c3-defocused{opacity:.3!important}.c3 .c3-region{fill:#4682b4;fill-opacity:.1}.c3 .c3-brush .extent{fill-opacity:.1}.c3 .c3-legend-item{font-size:12px}.c3 .c3-legend-item-hidden{opacity:.15}.c3 .c3-legend-background{opacity:.75;fill:#fff;stroke:#d3d3d3;stroke-width:1}.c3 .c3-tooltip-container{z-index:10}.c3 .c3-tooltip{border-collapse:collapse;border-spacing:0;background-color:#fff;empty-cells:show;box-shadow:0 2px 4px -1px rgba(0,0,0,.14),0 4px 5px 0 rgba(0,0,0,.098),0 1px 10px 0 rgba(0,0,0,.084);opacity:1;border-radius:2px;overflow:hidden;padding:4px 0}.c3 .c3-tooltip tr{border:none}.c3 .c3-tooltip th{background-color:transparent;font-size:14px;font-weight:400;padding:8px 12px;text-align:left;color:rgba(0,0,0,.54)}.c3 .c3-tooltip td{font-size:13px;padding:4px 12px!important;background-color:#fff;border-left:none;color:rgba(0,0,0,.84)}.c3 .c3-tooltip td>span{display:inline-block;width:10px;height:10px;margin-right:6px}.c3 .c3-tooltip td.value{font-size:14px!important;text-align:right;color:rgba(0,0,0,.84)}.c3 .c3-area{stroke-width:0;opacity:.2}.c3 .c3-chart-arcs-title{dominant-baseline:middle;font-size:1.3em}.c3 .c3-chart-arcs .c3-chart-arcs-background{fill:#e0e0e0;stroke:none}.c3 .c3-chart-arcs .c3-chart-arcs-gauge-unit{fill:#000;font-size:16px}.c3 .c3-chart-arcs .c3-chart-arcs-gauge-max{fill:#777}.c3 .c3-chart-arcs .c3-chart-arcs-gauge-min{fill:#777}.c3 .c3-chart-arc .c3-gauge-value{fill:#000}.ct-label{font-size:13px}.ct-chart-donut .ct-label,.ct-chart-pie .ct-label{font-size:13px}.bar-legend,.chart-legend,.doughnut-legend,.line-legend,.pie-legend,.polararea-legend,.radar-legend{margin-top:15px}table.dataTable{width:100%;margin:0 auto;clear:both;border-spacing:0}table.dataTable thead tr{background:#fff}table.dataTable thead th{text-align:left;vertical-align:middle;border-bottom:1px solid rgba(0,0,0,.12);padding:16px 8px}table.dataTable thead th:first-child{padding-left:24px}table.dataTable thead th:last-child{border-right:none;padding-right:24px}table.dataTable thead th:active{outline:0}table.dataTable thead th.dt-head-left{text-align:left}table.dataTable thead th.dt-head-center{text-align:center}table.dataTable thead th.dt-head-right{text-align:right}table.dataTable thead th.dt-head-justify{text-align:justify}table.dataTable thead th.dt-head-nowrap{white-space:nowrap}table.dataTable thead th .table-header .column-title{display:block;font-weight:600;white-space:nowrap}table.dataTable thead th .table-header .selectize-control{margin-top:15px}table.dataTable thead th .table-header .selectize-control.single .selectize-input{padding:7px 10px}table.dataTable thead th .table-header .selectize-control.single .selectize-input:after{right:10px;border-width:5px 4px 0 4px;border-color:rgba(0,0,0,.12) transparent transparent transparent}table.dataTable thead th .table-header .column-search-input{display:inline-block;margin-top:15px;width:100%;height:33px}table.dataTable thead td{padding:15px;vertical-align:middle}table.dataTable thead td:active{outline:0}table.dataTable thead td.dt-head-left{text-align:left}table.dataTable thead td.dt-head-center{text-align:center}table.dataTable thead td.dt-head-right{text-align:right}table.dataTable thead td.dt-head-justify{text-align:justify}table.dataTable thead td.dt-head-nowrap{white-space:nowrap}table.dataTable thead .sorting,table.dataTable thead .sorting_asc,table.dataTable thead .sorting_desc{background:0 0}table.dataTable thead .sorting .table-header .column-title,table.dataTable thead .sorting_asc .table-header .column-title,table.dataTable thead .sorting_desc .table-header .column-title{cursor:pointer}table.dataTable thead .sorting .table-header .column-title:after,table.dataTable thead .sorting_asc .table-header .column-title:after,table.dataTable thead .sorting_desc .table-header .column-title:after{position:relative;font-family:icomoon;font-weight:400;margin-left:10px;top:2px;font-size:16px;color:rgba(0,0,0,.54)}table.dataTable thead .sorting .table-header .column-title:after{content:'\eaa8'}table.dataTable thead .sorting_asc .table-header .column-title:after{content:'\e718'}table.dataTable thead .sorting_desc .table-header .column-title:after{content:'\e715'}table.dataTable tfoot th{font-weight:600;text-align:left;padding:10px 18px 6px 18px;border-top:1px solid #111}table.dataTable tfoot th.dt-head-left{text-align:left}table.dataTable tfoot th.dt-head-center{text-align:center}table.dataTable tfoot th.dt-head-right{text-align:right}table.dataTable tfoot th.dt-head-justify{text-align:justify}table.dataTable tfoot th.dt-head-nowrap{white-space:nowrap}table.dataTable tfoot td{padding:10px 18px 6px 18px;border-top:1px solid #111}table.dataTable tfoot td.dt-head-left{text-align:left}table.dataTable tfoot td.dt-head-center{text-align:center}table.dataTable tfoot td.dt-head-right{text-align:right}table.dataTable tfoot td.dt-head-justify{text-align:justify}table.dataTable tfoot td.dt-head-nowrap{white-space:nowrap}table.dataTable tbody tr{background-color:#fff}table.dataTable tbody tr.selected{background-color:#b0bed9}table.dataTable tbody tr.details-open td.detail-column i{background:#fff}table.dataTable tbody tr.details-row.odd tr{background:#fff}table.dataTable tbody tr.details-row>td{padding:0}table.dataTable tbody th{padding:14px 15px;vertical-align:middle}table.dataTable tbody th.dt-body-left{text-align:left}table.dataTable tbody th.dt-body-center{text-align:center}table.dataTable tbody th.dt-body-right{text-align:right}table.dataTable tbody th.dt-body-justify{text-align:justify}table.dataTable tbody th.dt-body-nowrap{white-space:nowrap}table.dataTable tbody td{padding:16px 8px;vertical-align:middle}table.dataTable tbody td:first-child{padding-left:24px}table.dataTable tbody td:last-child{padding-right:24px}table.dataTable tbody td.dt-body-left{text-align:left}table.dataTable tbody td.dt-body-center{text-align:center}table.dataTable tbody td.dt-body-right{text-align:right}table.dataTable tbody td.dt-body-justify{text-align:justify}table.dataTable tbody td.dt-body-nowrap{white-space:nowrap}table.dataTable th.dt-left{text-align:left}table.dataTable th.dt-center{text-align:center}table.dataTable th.dt-right{text-align:right}table.dataTable th.dt-justify{text-align:justify}table.dataTable th.dt-nowrap{white-space:nowrap}table.dataTable td.dt-left{text-align:left}table.dataTable td.dt-center{text-align:center}table.dataTable td.dataTables_empty{height:51px;text-align:center}table.dataTable td.dt-right{text-align:right}table.dataTable td.dt-justify{text-align:justify}table.dataTable td.dt-nowrap{white-space:nowrap}table.dataTable.row-border thead{border-bottom:1px solid rgba(0,0,0,.12)}table.dataTable.row-border tbody tr:first-child th{border-top:none}table.dataTable.row-border tbody tr:first-child td{border-top:none}table.dataTable.row-border tbody tr:last-child td{border-bottom:1px solid rgba(0,0,0,.12)}table.dataTable.row-border tbody th{border-top:1px solid rgba(0,0,0,.12)}table.dataTable.row-border tbody td{border-top:1px solid rgba(0,0,0,.12)}table.dataTable.cell-border tbody tr:first-child th{border-top:none}table.dataTable.cell-border tbody tr:first-child td{border-top:none}table.dataTable.cell-border tbody th{border-top:1px solid rgba(0,0,0,.12);border-right:1px solid rgba(0,0,0,.12)}table.dataTable.cell-border tbody th:last-child{border-right:none}table.dataTable.cell-border tbody td{border-top:1px solid rgba(0,0,0,.12);border-right:1px solid rgba(0,0,0,.12)}table.dataTable.cell-border tbody td:last-child{border-right:none}table.dataTable.stripe tbody tr.odd{background-color:#fff}table.dataTable.stripe tbody tr.odd.selected{background-color:#abb9d3}table.dataTable.hover tbody tr:hover{background-color:#f5f5f5}table.dataTable.hover tbody tr:hover.selected{background-color:#a9b7d1}table.dataTable.hover tbody tr.odd:hover{background-color:#f5f5f5}table.dataTable.hover tbody tr.odd:hover.selected{background-color:#a9b7d1}table.dataTable.hover tbody tr.even:hover{background-color:#f5f5f5}table.dataTable.hover tbody tr.even:hover.selected{background-color:#a9b7d1}table.dataTable.order-column tbody tr>.sorting_1{background-color:#f9f9f9}table.dataTable.order-column tbody tr>.sorting_2{background-color:#f9f9f9}table.dataTable.order-column tbody tr>.sorting_3{background-color:#f9f9f9}table.dataTable.order-column tbody tr.selected>.sorting_1{background-color:#acbad4}table.dataTable.order-column tbody tr.selected>.sorting_2{background-color:#acbad4}table.dataTable.order-column tbody tr.selected>.sorting_3{background-color:#acbad4}table.dataTable.order-column.stripe tbody tr.odd>.sorting_1{background-color:#f1f1f1}table.dataTable.order-column.stripe tbody tr.odd>.sorting_2{background-color:#f3f3f3}table.dataTable.order-column.stripe tbody tr.odd>.sorting_3{background-color:#f5f5f5}table.dataTable.order-column.stripe tbody tr.odd.selected>.sorting_1{background-color:#a6b3cd}table.dataTable.order-column.stripe tbody tr.odd.selected>.sorting_2{background-color:#a7b5ce}table.dataTable.order-column.stripe tbody tr.odd.selected>.sorting_3{background-color:#a9b6d0}table.dataTable.order-column.stripe tbody tr.even>.sorting_1{background-color:#f9f9f9}table.dataTable.order-column.stripe tbody tr.even>.sorting_2{background-color:#fbfbfb}table.dataTable.order-column.stripe tbody tr.even>.sorting_3{background-color:#fdfdfd}table.dataTable.order-column.stripe tbody tr.even.selected>.sorting_1{background-color:#acbad4}table.dataTable.order-column.stripe tbody tr.even.selected>.sorting_2{background-color:#adbbd6}table.dataTable.order-column.stripe tbody tr.even.selected>.sorting_3{background-color:#afbdd8}table.dataTable.order-column.hover tbody tr:hover>.sorting_1{background-color:#eaeaea}table.dataTable.order-column.hover tbody tr:hover>.sorting_2{background-color:#ebebeb}table.dataTable.order-column.hover tbody tr:hover>.sorting_3{background-color:#eee}table.dataTable.order-column.hover tbody tr:hover.selected>.sorting_1{background-color:#a1aec7}table.dataTable.order-column.hover tbody tr:hover.selected>.sorting_2{background-color:#a2afc8}table.dataTable.order-column.hover tbody tr:hover.selected>.sorting_3{background-color:#a4b2cb}table.dataTable.order-column.hover tbody tr.odd:hover>.sorting_1{background-color:#eaeaea}table.dataTable.order-column.hover tbody tr.odd:hover>.sorting_2{background-color:#ebebeb}table.dataTable.order-column.hover tbody tr.odd:hover>.sorting_3{background-color:#eee}table.dataTable.order-column.hover tbody tr.odd:hover.selected>.sorting_1{background-color:#a1aec7}table.dataTable.order-column.hover tbody tr.odd:hover.selected>.sorting_2{background-color:#a2afc8}table.dataTable.order-column.hover tbody tr.odd:hover.selected>.sorting_3{background-color:#a4b2cb}table.dataTable.order-column.hover tbody tr.even:hover>.sorting_1{background-color:#eaeaea}table.dataTable.order-column.hover tbody tr.even:hover>.sorting_2{background-color:#ebebeb}table.dataTable.order-column.hover tbody tr.even:hover>.sorting_3{background-color:#eee}table.dataTable.order-column.hover tbody tr.even:hover.selected>.sorting_1{background-color:#a1aec7}table.dataTable.order-column.hover tbody tr.even:hover.selected>.sorting_2{background-color:#a2afc8}table.dataTable.order-column.hover tbody tr.even:hover.selected>.sorting_3{background-color:#a4b2cb}table.dataTable.no-footer{border-bottom:none}table.dataTable.nowrap th{white-space:nowrap}table.dataTable.nowrap td{white-space:nowrap}table.dataTable.compact thead th{padding:5px 9px}table.dataTable.compact thead td{padding:5px 9px}table.dataTable.compact tfoot th{padding:5px 9px 3px 9px}table.dataTable.compact tfoot td{padding:5px 9px 3px 9px}table.dataTable.compact tbody th{padding:4px 5px}table.dataTable.compact tbody td{padding:4px 5px}.dataTables_wrapper{display:flex;flex:1 0 auto;flex-direction:column;min-height:0}.dataTables_wrapper .top{padding:16px 24px}.dataTables_wrapper .bottom{display:flex;min-height:64px;justify-content:space-between;padding:16px 8px;border-top:1px solid rgba(0,0,0,.12)}.dataTables_wrapper .bottom .left{display:flex;flex:0 0 50%;max-width:50%;align-self:center;padding:0 8px}.dataTables_wrapper .bottom .left .length{display:block}.dataTables_wrapper .bottom .right{display:flex;flex:0 0 50%;max-width:50%;align-self:center;justify-content:flex-end;padding:0 8px}.dataTables_wrapper .bottom .right .info{display:block;align-self:center}.dataTables_wrapper .bottom .right .info .dataTables_info{padding:0 8px;font-weight:600}.dataTables_wrapper .bottom .right .pagination{display:block;align-self:center;white-space:nowrap}.dataTables_wrapper .bottom .right .pagination .dataTables_paginate{padding:0;margin:0!important}.dataTables_wrapper .dataTables_filter{float:right}.dataTables_wrapper .dataTables_filter input{margin-left:.5em;border:1px solid rgba(0,0,0,.12);height:24px;padding:4px 8px}.dataTables_wrapper .dataTables_paginate .paginate_button{background:#fff;color:rgba(0,0,0,.87);border:1px solid rgba(0,0,0,.12);padding:9px 12px;border-radius:2px;cursor:pointer;user-select:none;margin:0 2px}.dataTables_wrapper .dataTables_paginate .paginate_button:hover{box-shadow:inset 999em 0 0 0 rgba(0,0,0,.05);color:rgba(0,0,0,.87)!important;border:1px solid rgba(0,0,0,.12)!important;background:0 0}.dataTables_wrapper .dataTables_paginate .paginate_button:active{box-shadow:inset 999em 0 0 0 rgba(0,0,0,.08),inset 0 1px 3px 0 rgba(0,0,0,.1),0 1px 0 0 rgba(255,255,255,.35)}.dataTables_wrapper .dataTables_paginate .paginate_button.current,.dataTables_wrapper .dataTables_paginate .paginate_button.disabled,.dataTables_wrapper .dataTables_paginate .paginate_button.disabled:active,.dataTables_wrapper .dataTables_paginate .paginate_button.disabled:hover{color:rgba(0,0,0,.54)!important;border-color:rgba(0,0,0,.12)!important;background:#fff!important;box-shadow:none!important;cursor:default}.dataTables_wrapper .dataTables_processing{position:absolute;top:50%;left:50%;width:100%;height:40px;margin-left:-50%;margin-top:-25px;padding-top:20px;text-align:center;font-size:1.2em;background-color:#fff;background:-webkit-gradient(linear,left top,right top,color-stop(0,rgba(255,255,255,0)),color-stop(25%,rgba(255,255,255,.9)),color-stop(75%,rgba(255,255,255,.9)),color-stop(100%,rgba(255,255,255,0)));background:-webkit-linear-gradient(left,rgba(255,255,255,0) 0,rgba(255,255,255,.9) 25%,rgba(255,255,255,.9) 75%,rgba(255,255,255,0) 100%);background:-moz-linear-gradient(left,rgba(255,255,255,0) 0,rgba(255,255,255,.9) 25%,rgba(255,255,255,.9) 75%,rgba(255,255,255,0) 100%);background:-ms-linear-gradient(left,rgba(255,255,255,0) 0,rgba(255,255,255,.9) 25%,rgba(255,255,255,.9) 75%,rgba(255,255,255,0) 100%);background:-o-linear-gradient(left,rgba(255,255,255,0) 0,rgba(255,255,255,.9) 25%,rgba(255,255,255,.9) 75%,rgba(255,255,255,0) 100%);background:linear-gradient(to right,rgba(255,255,255,0) 0,rgba(255,255,255,.9) 25%,rgba(255,255,255,.9) 75%,rgba(255,255,255,0) 100%)}.dataTables_wrapper .dataTables_scroll{display:flex;flex:1 1 0;flex-direction:column;clear:both;min-height:0}.dataTables_wrapper .dataTables_scroll table.dataTable{box-shadow:none}.dataTables_wrapper .dataTables_scroll table.dataTable.row-border thead{border:none}.dataTables_wrapper .dataTables_scroll .dataTables_scrollHead{display:flex;min-height:56px;box-shadow:0 0 0 1px rgba(0,0,0,.095),0 1px 1px 0 rgba(0,0,0,.1),0 2px 1px 0 rgba(0,0,0,.05);background:#fff;overflow:visible!important}.dataTables_wrapper .dataTables_scroll .dataTables_scrollHead tr th:last-child .table-header .column-title{position:relative;left:7px}.dataTables_wrapper .dataTables_scroll .dataTables_scrollBody{display:flex;overflow-x:hidden!important;overflow-y:scroll!important;-webkit-overflow-scrolling:touch}.dataTables_wrapper .dataTables_scroll .dataTables_scrollBody th>.dataTables_sizing{height:0;overflow:hidden;margin:0!important;padding:0!important}.dataTables_wrapper .dataTables_scroll .dataTables_scrollBody td>.dataTables_sizing{height:0;overflow:hidden;margin:0!important;padding:0!important}.dataTables_wrapper.no-footer .dataTables_scrollBody{border-bottom:none}.dataTables_wrapper.no-footer .dataTables_scrollBody table,.dataTables_wrapper.no-footer .dataTables_scrollHead table{border-bottom:none}.dataTables_wrapper:after{visibility:hidden;display:block;content:'';clear:both;height:0}table.dataTable .show-details{padding:5px 10px;font-weight:700}table.dataTable .action-buttons{display:flex;justify-content:center}table.dataTable .action-buttons .button{padding:8px}.fullpage-datatable .dataTables_wrapper{height:100%;max-height:100%}.explorer-11 .fullpage-datatable .dataTables_scroll{flex:1}table.dataTable.dtr-inline.collapsed.dtr-inline.collapsed>tbody>tr>td:first-child,table.dataTable.dtr-inline.collapsed.dtr-inline.collapsed>tbody>tr>th:first-child{padding-left:40px}table.dataTable.dtr-inline.collapsed.dtr-inline.collapsed>tbody>tr>td:first-child:before,table.dataTable.dtr-inline.collapsed.dtr-inline.collapsed>tbody>tr>th:first-child:before{content:'+';width:15px;height:15px;line-height:15px;top:50%;margin-top:-7px;left:8px;color:rgba(0,0,0,.54);background:0 0;border:none;box-shadow:0 0 0 2px rgba(0,0,0,.54);font-weight:700}table.dataTable.dtr-inline.collapsed.dtr-inline.collapsed>tbody>tr.parent>td:first-child:before,table.dataTable.dtr-inline.collapsed.dtr-inline.collapsed>tbody>tr.parent>th:first-child:before{background:0 0}table.dataTable.dtr-inline.collapsed>tbody>tr.child ul{display:block}table.dataTable.dtr-inline.collapsed>tbody>tr.child ul li{display:flex;flex-direction:row;align-items:center;justify-content:flex-start;border-bottom:1px solid rgba(0,0,0,.12);padding:8px 0}table.dataTable.dtr-inline.collapsed>tbody>tr.child ul li:first-child{padding-top:0}table.dataTable.dtr-inline.collapsed>tbody>tr.child ul li:last-child{border-bottom:none;padding-bottom:0}table.dataTable.dtr-inline.collapsed>tbody>tr.child ul li .dtr-title{margin-right:8px}[hljs],hljs{display:block;overflow-x:auto;color:#333;background:#f8f8f8;-webkit-text-size-adjust:none}.diff .hljs-header,.hljs-comment{color:#998;font-style:italic}.css .rule .hljs-keyword,.hljs-keyword,.hljs-request,.hljs-status,.hljs-subst,.hljs-winutils,.nginx .hljs-title{color:#333;font-weight:700}.hljs-hexcolor,.hljs-number,.ruby .hljs-constant{color:teal}.hljs-doctag,.hljs-string,.hljs-tag .hljs-value,.tex .hljs-formula{color:#d14}.hljs-id,.hljs-title,.scss .hljs-preprocessor{color:#900;font-weight:700}.hljs-list .hljs-keyword,.hljs-subst{font-weight:400}.hljs-class .hljs-title,.hljs-type,.tex .hljs-command,.vhdl .hljs-literal{color:#458;font-weight:700}.django .hljs-tag .hljs-keyword,.hljs-rule .hljs-property,.hljs-tag,.hljs-tag .hljs-title{color:navy;font-weight:400}.hljs-attribute,.hljs-name,.hljs-variable,.lisp .hljs-body{color:teal}.hljs-regexp{color:#009926}.clojure .hljs-keyword,.hljs-prompt,.hljs-symbol,.lisp .hljs-keyword,.ruby .hljs-symbol .hljs-string,.scheme .hljs-keyword,.tex .hljs-special{color:#990073}.hljs-built_in{color:#0086b3}.hljs-cdata,.hljs-doctype,.hljs-pi,.hljs-pragma,.hljs-preprocessor,.hljs-shebang{color:#999;font-weight:700}.hljs-deletion{background:#fdd}.hljs-addition{background:#dfd}.diff .hljs-change{background:#0086b3}.hljs-chunk{color:#aaa}nvd3{display:block;width:100%;height:100%}nvd3.remove-x-lines .nv-x .tick line{display:none}nvd3.remove-y-lines .nv-y .tick line{display:none}nvd3.remove-line-stroke .nv-groups path.nv-line{stroke-width:0!important}nvd3.remove-opacity .nv-groups .nv-group{fill-opacity:1!important}nvd3.show-line-points .nv-line .nv-scatter .nv-groups .nv-point{fill-opacity:1!important;stroke-opacity:1!important}.nvd3 text{font-family:Roboto,"Helvetica Neue",Arial,sans-serif}.nvd3 line.nv-guideline{stroke:rgba(0,0,0,.54)}.nvd3 .nv-groups .nv-point.hover{stroke-width:3px!important;fill-opacity:1!important;stroke-opacity:1!important}.nvtooltip{background:0 0;color:#fff;padding:0;border:none}.nvtooltip.gravity-n:after{display:block;position:absolute;content:'';width:0;height:0;left:50%;bottom:100%;margin-left:-5px;border:5px solid transparent;border-bottom-color:rgba(0,0,0,.87)}.nvtooltip.gravity-s:after{display:block;position:absolute;content:'';width:0;height:0;top:100%;left:50%;margin-left:-5px;border:5px solid transparent;border-top-color:rgba(0,0,0,.87)}.nvtooltip.gravity-e:after{display:block;position:absolute;content:'';width:0;height:0;top:50%;right:0;margin-top:-6px;margin-right:-11px;border:6px solid transparent;border-left-color:rgba(0,0,0,.87)}.nvtooltip.gravity-w:after{display:block;position:absolute;content:'';width:0;height:0;top:50%;margin-top:-6px;margin-left:-11px;border:6px solid transparent;border-right-color:rgba(0,0,0,.87)}.nvtooltip table{background:rgba(0,0,0,.87);padding:8px 12px;margin:0;border-radius:2px}.nvtooltip table tbody tr td.legend-color-guide div{border:none}.nvtooltip table tbody tr td:last-child{padding-right:0}.ta-root{display:block}.ta-root .ta-scroll-window.form-control{border:1px solid rgba(0,0,0,.12)}.ta-root.focussed>.ta-scroll-window.form-control{outline:0 solid transparent;border:1px solid rgba(0,0,0,.12);box-shadow:none}.ta-root textarea.ta-editor.ta-html{resize:vertical;width:100%!important;border:1px solid rgba(0,0,0,.12);padding:16px}.ta-root .ta-toolbar{border:1px solid rgba(0,0,0,.12);border-bottom:none;background:#f5f5f5}.ta-root .ta-toolbar .ta-group{display:flex;align-items:center;align-content:center;flex-wrap:wrap}.ta-root .ta-toolbar .ta-group #toolbarCC,.ta-root .ta-toolbar .ta-group #toolbarWC{display:inline-block!important;line-height:24px}.ta-root .ta-toolbar .ta-group .md-button{width:40px;min-width:40px;line-height:14px;height:36px;min-height:36px;padding:6px;margin:4px 0}.ta-root .ta-toolbar .ta-group .md-button i{font-size:20px;width:20px;height:20px;line-height:20px}.ng-cloak,.x-ng-cloak,[data-ng-cloak],[ng-cloak],[ng\:cloak],[x-ng-cloak]{display:none!important}.no-padding{padding:0!important}.no-margin{margin:0!important}.no-radius{border-radius:0}.divider-vertical{background:rgba(0,0,0,.12);height:24px;width:1px;margin:0 8px}.hidden{visibility:hidden;opacity:0}[fill-width]{min-width:100%}[fill-height]{min-height:100%}.full-height{height:100%!important}a img{display:block;outline:0}img{max-width:100%;height:auto;vertical-align:top;border:none}.scrollable{display:block;position:relative;overflow-x:auto;overflow-y:auto;-webkit-overflow-scrolling:touch}.scrollable.only-x{overflow-x:auto;overflow-y:hidden}.scrollable.only-y{overflow-x:hidden;overflow-y:auto}.flex-scrollable{position:relative;overflow-x:auto;overflow-y:auto;-webkit-overflow-scrolling:touch}.flex-scrollable.only-x{overflow-x:auto;overflow-y:hidden}.flex-scrollable.only-y{overflow-x:hidden;overflow-y:auto}.background-image-center{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);z-index:-1}.align-vertical:before{display:inline-block;height:100%;content:'';vertical-align:middle}.align-vertical .align-vertical-bottom,.align-vertical .align-vertical-middle,.align-vertical .align-vertical-top{display:inline-block}.align-vertical .align-vertical-top{vertical-align:top}.align-vertical .align-vertical-middle{vertical-align:middle}.align-vertical .align-vertical-bottom{vertical-align:bottom}.p-0,.padding-0{padding:0}.padding-top-0,.pt-0{padding-top:0}.padding-right-0,.pr-0{padding-right:0}.padding-bottom-0,.pb-0{padding-bottom:0}.padding-left-0,.pl-0{padding-left:0}.padding-horizontal-0,.ph-0{padding-left:0;padding-right:0}.padding-vertical-0,.pv-0{padding-top:0;padding-bottom:0}.p-5,.padding-5{padding:5px}.padding-top-5,.pt-5{padding-top:5px}.padding-right-5,.pr-5{padding-right:5px}.padding-bottom-5,.pb-5{padding-bottom:5px}.padding-left-5,.pl-5{padding-left:5px}.padding-horizontal-5,.ph-5{padding-left:5px;padding-right:5px}.padding-vertical-5,.pv-5{padding-top:5px;padding-bottom:5px}.p-10,.padding-10{padding:10px}.padding-top-10,.pt-10{padding-top:10px}.padding-right-10,.pr-10{padding-right:10px}.padding-bottom-10,.pb-10{padding-bottom:10px}.padding-left-10,.pl-10{padding-left:10px}.padding-horizontal-10,.ph-10{padding-left:10px;padding-right:10px}.padding-vertical-10,.pv-10{padding-top:10px;padding-bottom:10px}.p-15,.padding-15{padding:15px}.padding-top-15,.pt-15{padding-top:15px}.padding-right-15,.pr-15{padding-right:15px}.padding-bottom-15,.pb-15{padding-bottom:15px}.padding-left-15,.pl-15{padding-left:15px}.padding-horizontal-15,.ph-15{padding-left:15px;padding-right:15px}.padding-vertical-15,.pv-15{padding-top:15px;padding-bottom:15px}.p-20,.padding-20{padding:20px}.padding-top-20,.pt-20{padding-top:20px}.padding-right-20,.pr-20{padding-right:20px}.padding-bottom-20,.pb-20{padding-bottom:20px}.padding-left-20,.pl-20{padding-left:20px}.padding-horizontal-20,.ph-20{padding-left:20px;padding-right:20px}.padding-vertical-20,.pv-20{padding-top:20px;padding-bottom:20px}.p-25,.padding-25{padding:25px}.padding-top-25,.pt-25{padding-top:25px}.padding-right-25,.pr-25{padding-right:25px}.padding-bottom-25,.pb-25{padding-bottom:25px}.padding-left-25,.pl-25{padding-left:25px}.padding-horizontal-25,.ph-25{padding-left:25px;padding-right:25px}.padding-vertical-25,.pv-25{padding-top:25px;padding-bottom:25px}.p-30,.padding-30{padding:30px}.padding-top-30,.pt-30{padding-top:30px}.padding-right-30,.pr-30{padding-right:30px}.padding-bottom-30,.pb-30{padding-bottom:30px}.padding-left-30,.pl-30{padding-left:30px}.padding-horizontal-30,.ph-30{padding-left:30px;padding-right:30px}.padding-vertical-30,.pv-30{padding-top:30px;padding-bottom:30px}.p-35,.padding-35{padding:35px}.padding-top-35,.pt-35{padding-top:35px}.padding-right-35,.pr-35{padding-right:35px}.padding-bottom-35,.pb-35{padding-bottom:35px}.padding-left-35,.pl-35{padding-left:35px}.padding-horizontal-35,.ph-35{padding-left:35px;padding-right:35px}.padding-vertical-35,.pv-35{padding-top:35px;padding-bottom:35px}.p-40,.padding-40{padding:40px}.padding-top-40,.pt-40{padding-top:40px}.padding-right-40,.pr-40{padding-right:40px}.padding-bottom-40,.pb-40{padding-bottom:40px}.padding-left-40,.pl-40{padding-left:40px}.padding-horizontal-40,.ph-40{padding-left:40px;padding-right:40px}.padding-vertical-40,.pv-40{padding-top:40px;padding-bottom:40px}.p-45,.padding-45{padding:45px}.padding-top-45,.pt-45{padding-top:45px}.padding-right-45,.pr-45{padding-right:45px}.padding-bottom-45,.pb-45{padding-bottom:45px}.padding-left-45,.pl-45{padding-left:45px}.padding-horizontal-45,.ph-45{padding-left:45px;padding-right:45px}.padding-vertical-45,.pv-45{padding-top:45px;padding-bottom:45px}.p-50,.padding-50{padding:50px}.padding-top-50,.pt-50{padding-top:50px}.padding-right-50,.pr-50{padding-right:50px}.padding-bottom-50,.pb-50{padding-bottom:50px}.padding-left-50,.pl-50{padding-left:50px}.padding-horizontal-50,.ph-50{padding-left:50px;padding-right:50px}.padding-vertical-50,.pv-50{padding-top:50px;padding-bottom:50px}.p-55,.padding-55{padding:55px}.padding-top-55,.pt-55{padding-top:55px}.padding-right-55,.pr-55{padding-right:55px}.padding-bottom-55,.pb-55{padding-bottom:55px}.padding-left-55,.pl-55{padding-left:55px}.padding-horizontal-55,.ph-55{padding-left:55px;padding-right:55px}.padding-vertical-55,.pv-55{padding-top:55px;padding-bottom:55px}.p-60,.padding-60{padding:60px}.padding-top-60,.pt-60{padding-top:60px}.padding-right-60,.pr-60{padding-right:60px}.padding-bottom-60,.pb-60{padding-bottom:60px}.padding-left-60,.pl-60{padding-left:60px}.padding-horizontal-60,.ph-60{padding-left:60px;padding-right:60px}.padding-vertical-60,.pv-60{padding-top:60px;padding-bottom:60px}.p-65,.padding-65{padding:65px}.padding-top-65,.pt-65{padding-top:65px}.padding-right-65,.pr-65{padding-right:65px}.padding-bottom-65,.pb-65{padding-bottom:65px}.padding-left-65,.pl-65{padding-left:65px}.padding-horizontal-65,.ph-65{padding-left:65px;padding-right:65px}.padding-vertical-65,.pv-65{padding-top:65px;padding-bottom:65px}.p-70,.padding-70{padding:70px}.padding-top-70,.pt-70{padding-top:70px}.padding-right-70,.pr-70{padding-right:70px}.padding-bottom-70,.pb-70{padding-bottom:70px}.padding-left-70,.pl-70{padding-left:70px}.padding-horizontal-70,.ph-70{padding-left:70px;padding-right:70px}.padding-vertical-70,.pv-70{padding-top:70px;padding-bottom:70px}.p-75,.padding-75{padding:75px}.padding-top-75,.pt-75{padding-top:75px}.padding-right-75,.pr-75{padding-right:75px}.padding-bottom-75,.pb-75{padding-bottom:75px}.padding-left-75,.pl-75{padding-left:75px}.padding-horizontal-75,.ph-75{padding-left:75px;padding-right:75px}.padding-vertical-75,.pv-75{padding-top:75px;padding-bottom:75px}.p-80,.padding-80{padding:80px}.padding-top-80,.pt-80{padding-top:80px}.padding-right-80,.pr-80{padding-right:80px}.padding-bottom-80,.pb-80{padding-bottom:80px}.padding-left-80,.pl-80{padding-left:80px}.padding-horizontal-80,.ph-80{padding-left:80px;padding-right:80px}.padding-vertical-80,.pv-80{padding-top:80px;padding-bottom:80px}.p-85,.padding-85{padding:85px}.padding-top-85,.pt-85{padding-top:85px}.padding-right-85,.pr-85{padding-right:85px}.padding-bottom-85,.pb-85{padding-bottom:85px}.padding-left-85,.pl-85{padding-left:85px}.padding-horizontal-85,.ph-85{padding-left:85px;padding-right:85px}.padding-vertical-85,.pv-85{padding-top:85px;padding-bottom:85px}.p-90,.padding-90{padding:90px}.padding-top-90,.pt-90{padding-top:90px}.padding-right-90,.pr-90{padding-right:90px}.padding-bottom-90,.pb-90{padding-bottom:90px}.padding-left-90,.pl-90{padding-left:90px}.padding-horizontal-90,.ph-90{padding-left:90px;padding-right:90px}.padding-vertical-90,.pv-90{padding-top:90px;padding-bottom:90px}.p-95,.padding-95{padding:95px}.padding-top-95,.pt-95{padding-top:95px}.padding-right-95,.pr-95{padding-right:95px}.padding-bottom-95,.pb-95{padding-bottom:95px}.padding-left-95,.pl-95{padding-left:95px}.padding-horizontal-95,.ph-95{padding-left:95px;padding-right:95px}.padding-vertical-95,.pv-95{padding-top:95px;padding-bottom:95px}.p-100,.padding-100{padding:100px}.padding-top-100,.pt-100{padding-top:100px}.padding-right-100,.pr-100{padding-right:100px}.padding-bottom-100,.pb-100{padding-bottom:100px}.padding-left-100,.pl-100{padding-left:100px}.padding-horizontal-100,.ph-100{padding-left:100px;padding-right:100px}.padding-vertical-100,.pv-100{padding-top:100px;padding-bottom:100px}.p-8,.padding-8{padding:8px}.padding-top-8,.pt-8{padding-top:8px}.padding-right-8,.pr-8{padding-right:8px}.padding-bottom-8,.pb-8{padding-bottom:8px}.padding-left-8,.pl-8{padding-left:8px}.padding-horizontal-8,.ph-8{padding-left:8px;padding-right:8px}.padding-vertical-8,.pv-8{padding-top:8px;padding-bottom:8px}.p-16,.padding-16{padding:16px}.padding-top-16,.pt-16{padding-top:16px}.padding-right-16,.pr-16{padding-right:16px}.padding-bottom-16,.pb-16{padding-bottom:16px}.padding-left-16,.pl-16{padding-left:16px}.padding-horizontal-16,.ph-16{padding-left:16px;padding-right:16px}.padding-vertical-16,.pv-16{padding-top:16px;padding-bottom:16px}.p-24,.padding-24{padding:24px}.padding-top-24,.pt-24{padding-top:24px}.padding-right-24,.pr-24{padding-right:24px}.padding-bottom-24,.pb-24{padding-bottom:24px}.padding-left-24,.pl-24{padding-left:24px}.padding-horizontal-24,.ph-24{padding-left:24px;padding-right:24px}.padding-vertical-24,.pv-24{padding-top:24px;padding-bottom:24px}.p-32,.padding-32{padding:32px}.padding-top-32,.pt-32{padding-top:32px}.padding-right-32,.pr-32{padding-right:32px}.padding-bottom-32,.pb-32{padding-bottom:32px}.padding-left-32,.pl-32{padding-left:32px}.padding-horizontal-32,.ph-32{padding-left:32px;padding-right:32px}.padding-vertical-32,.pv-32{padding-top:32px;padding-bottom:32px}.p-48,.padding-48{padding:48px}.padding-top-48,.pt-48{padding-top:48px}.padding-right-48,.pr-48{padding-right:48px}.padding-bottom-48,.pb-48{padding-bottom:48px}.padding-left-48,.pl-48{padding-left:48px}.padding-horizontal-48,.ph-48{padding-left:48px;padding-right:48px}.padding-vertical-48,.pv-48{padding-top:48px;padding-bottom:48px}.p-56,.padding-56{padding:56px}.padding-top-56,.pt-56{padding-top:56px}.padding-right-56,.pr-56{padding-right:56px}.padding-bottom-56,.pb-56{padding-bottom:56px}.padding-left-56,.pl-56{padding-left:56px}.padding-horizontal-56,.ph-56{padding-left:56px;padding-right:56px}.padding-vertical-56,.pv-56{padding-top:56px;padding-bottom:56px}.p-64,.padding-64{padding:64px}.padding-top-64,.pt-64{padding-top:64px}.padding-right-64,.pr-64{padding-right:64px}.padding-bottom-64,.pb-64{padding-bottom:64px}.padding-left-64,.pl-64{padding-left:64px}.padding-horizontal-64,.ph-64{padding-left:64px;padding-right:64px}.padding-vertical-64,.pv-64{padding-top:64px;padding-bottom:64px}.p-72,.padding-72{padding:72px}.padding-top-72,.pt-72{padding-top:72px}.padding-right-72,.pr-72{padding-right:72px}.padding-bottom-72,.pb-72{padding-bottom:72px}.padding-left-72,.pl-72{padding-left:72px}.padding-horizontal-72,.ph-72{padding-left:72px;padding-right:72px}.padding-vertical-72,.pv-72{padding-top:72px;padding-bottom:72px}.p-88,.padding-88{padding:88px}.padding-top-88,.pt-88{padding-top:88px}.padding-right-88,.pr-88{padding-right:88px}.padding-bottom-88,.pb-88{padding-bottom:88px}.padding-left-88,.pl-88{padding-left:88px}.padding-horizontal-88,.ph-88{padding-left:88px;padding-right:88px}.padding-vertical-88,.pv-88{padding-top:88px;padding-bottom:88px}.p-96,.padding-96{padding:96px}.padding-top-96,.pt-96{padding-top:96px}.padding-right-96,.pr-96{padding-right:96px}.padding-bottom-96,.pb-96{padding-bottom:96px}.padding-left-96,.pl-96{padding-left:96px}.padding-horizontal-96,.ph-96{padding-left:96px;padding-right:96px}.padding-vertical-96,.pv-96{padding-top:96px;padding-bottom:96px}.m-0,.margin-0{margin:0}.margin-top-0,.mt-0{margin-top:0}.margin-right-0,.mr-0{margin-right:0}.margin-bottom-0,.mb-0{margin-bottom:0}.margin-left-0,.ml-0{margin-left:0}.margin-horizontal-0,.mh-0{margin-left:0;margin-right:0}.margin-vertical-0,.mv-0{margin-top:0;margin-bottom:0}.m-5,.margin-5{margin:5px}.margin-top-5,.mt-5{margin-top:5px}.margin-right-5,.mr-5{margin-right:5px}.margin-bottom-5,.mb-5{margin-bottom:5px}.margin-left-5,.ml-5{margin-left:5px}.margin-horizontal-5,.mh-5{margin-left:5px;margin-right:5px}.margin-vertical-5,.mv-5{margin-top:5px;margin-bottom:5px}.m-10,.margin-10{margin:10px}.margin-top-10,.mt-10{margin-top:10px}.margin-right-10,.mr-10{margin-right:10px}.margin-bottom-10,.mb-10{margin-bottom:10px}.margin-left-10,.ml-10{margin-left:10px}.margin-horizontal-10,.mh-10{margin-left:10px;margin-right:10px}.margin-vertical-10,.mv-10{margin-top:10px;margin-bottom:10px}.m-15,.margin-15{margin:15px}.margin-top-15,.mt-15{margin-top:15px}.margin-right-15,.mr-15{margin-right:15px}.margin-bottom-15,.mb-15{margin-bottom:15px}.margin-left-15,.ml-15{margin-left:15px}.margin-horizontal-15,.mh-15{margin-left:15px;margin-right:15px}.margin-vertical-15,.mv-15{margin-top:15px;margin-bottom:15px}.m-20,.margin-20{margin:20px}.margin-top-20,.mt-20{margin-top:20px}.margin-right-20,.mr-20{margin-right:20px}.margin-bottom-20,.mb-20{margin-bottom:20px}.margin-left-20,.ml-20{margin-left:20px}.margin-horizontal-20,.mh-20{margin-left:20px;margin-right:20px}.margin-vertical-20,.mv-20{margin-top:20px;margin-bottom:20px}.m-25,.margin-25{margin:25px}.margin-top-25,.mt-25{margin-top:25px}.margin-right-25,.mr-25{margin-right:25px}.margin-bottom-25,.mb-25{margin-bottom:25px}.margin-left-25,.ml-25{margin-left:25px}.margin-horizontal-25,.mh-25{margin-left:25px;margin-right:25px}.margin-vertical-25,.mv-25{margin-top:25px;margin-bottom:25px}.m-30,.margin-30{margin:30px}.margin-top-30,.mt-30{margin-top:30px}.margin-right-30,.mr-30{margin-right:30px}.margin-bottom-30,.mb-30{margin-bottom:30px}.margin-left-30,.ml-30{margin-left:30px}.margin-horizontal-30,.mh-30{margin-left:30px;margin-right:30px}.margin-vertical-30,.mv-30{margin-top:30px;margin-bottom:30px}.m-35,.margin-35{margin:35px}.margin-top-35,.mt-35{margin-top:35px}.margin-right-35,.mr-35{margin-right:35px}.margin-bottom-35,.mb-35{margin-bottom:35px}.margin-left-35,.ml-35{margin-left:35px}.margin-horizontal-35,.mh-35{margin-left:35px;margin-right:35px}.margin-vertical-35,.mv-35{margin-top:35px;margin-bottom:35px}.m-40,.margin-40{margin:40px}.margin-top-40,.mt-40{margin-top:40px}.margin-right-40,.mr-40{margin-right:40px}.margin-bottom-40,.mb-40{margin-bottom:40px}.margin-left-40,.ml-40{margin-left:40px}.margin-horizontal-40,.mh-40{margin-left:40px;margin-right:40px}.margin-vertical-40,.mv-40{margin-top:40px;margin-bottom:40px}.m-45,.margin-45{margin:45px}.margin-top-45,.mt-45{margin-top:45px}.margin-right-45,.mr-45{margin-right:45px}.margin-bottom-45,.mb-45{margin-bottom:45px}.margin-left-45,.ml-45{margin-left:45px}.margin-horizontal-45,.mh-45{margin-left:45px;margin-right:45px}.margin-vertical-45,.mv-45{margin-top:45px;margin-bottom:45px}.m-50,.margin-50{margin:50px}.margin-top-50,.mt-50{margin-top:50px}.margin-right-50,.mr-50{margin-right:50px}.margin-bottom-50,.mb-50{margin-bottom:50px}.margin-left-50,.ml-50{margin-left:50px}.margin-horizontal-50,.mh-50{margin-left:50px;margin-right:50px}.margin-vertical-50,.mv-50{margin-top:50px;margin-bottom:50px}.m-55,.margin-55{margin:55px}.margin-top-55,.mt-55{margin-top:55px}.margin-right-55,.mr-55{margin-right:55px}.margin-bottom-55,.mb-55{margin-bottom:55px}.margin-left-55,.ml-55{margin-left:55px}.margin-horizontal-55,.mh-55{margin-left:55px;margin-right:55px}.margin-vertical-55,.mv-55{margin-top:55px;margin-bottom:55px}.m-60,.margin-60{margin:60px}.margin-top-60,.mt-60{margin-top:60px}.margin-right-60,.mr-60{margin-right:60px}.margin-bottom-60,.mb-60{margin-bottom:60px}.margin-left-60,.ml-60{margin-left:60px}.margin-horizontal-60,.mh-60{margin-left:60px;margin-right:60px}.margin-vertical-60,.mv-60{margin-top:60px;margin-bottom:60px}.m-65,.margin-65{margin:65px}.margin-top-65,.mt-65{margin-top:65px}.margin-right-65,.mr-65{margin-right:65px}.margin-bottom-65,.mb-65{margin-bottom:65px}.margin-left-65,.ml-65{margin-left:65px}.margin-horizontal-65,.mh-65{margin-left:65px;margin-right:65px}.margin-vertical-65,.mv-65{margin-top:65px;margin-bottom:65px}.m-70,.margin-70{margin:70px}.margin-top-70,.mt-70{margin-top:70px}.margin-right-70,.mr-70{margin-right:70px}.margin-bottom-70,.mb-70{margin-bottom:70px}.margin-left-70,.ml-70{margin-left:70px}.margin-horizontal-70,.mh-70{margin-left:70px;margin-right:70px}.margin-vertical-70,.mv-70{margin-top:70px;margin-bottom:70px}.m-75,.margin-75{margin:75px}.margin-top-75,.mt-75{margin-top:75px}.margin-right-75,.mr-75{margin-right:75px}.margin-bottom-75,.mb-75{margin-bottom:75px}.margin-left-75,.ml-75{margin-left:75px}.margin-horizontal-75,.mh-75{margin-left:75px;margin-right:75px}.margin-vertical-75,.mv-75{margin-top:75px;margin-bottom:75px}.m-80,.margin-80{margin:80px}.margin-top-80,.mt-80{margin-top:80px}.margin-right-80,.mr-80{margin-right:80px}.margin-bottom-80,.mb-80{margin-bottom:80px}.margin-left-80,.ml-80{margin-left:80px}.margin-horizontal-80,.mh-80{margin-left:80px;margin-right:80px}.margin-vertical-80,.mv-80{margin-top:80px;margin-bottom:80px}.m-85,.margin-85{margin:85px}.margin-top-85,.mt-85{margin-top:85px}.margin-right-85,.mr-85{margin-right:85px}.margin-bottom-85,.mb-85{margin-bottom:85px}.margin-left-85,.ml-85{margin-left:85px}.margin-horizontal-85,.mh-85{margin-left:85px;margin-right:85px}.margin-vertical-85,.mv-85{margin-top:85px;margin-bottom:85px}.m-90,.margin-90{margin:90px}.margin-top-90,.mt-90{margin-top:90px}.margin-right-90,.mr-90{margin-right:90px}.margin-bottom-90,.mb-90{margin-bottom:90px}.margin-left-90,.ml-90{margin-left:90px}.margin-horizontal-90,.mh-90{margin-left:90px;margin-right:90px}.margin-vertical-90,.mv-90{margin-top:90px;margin-bottom:90px}.m-95,.margin-95{margin:95px}.margin-top-95,.mt-95{margin-top:95px}.margin-right-95,.mr-95{margin-right:95px}.margin-bottom-95,.mb-95{margin-bottom:95px}.margin-left-95,.ml-95{margin-left:95px}.margin-horizontal-95,.mh-95{margin-left:95px;margin-right:95px}.margin-vertical-95,.mv-95{margin-top:95px;margin-bottom:95px}.m-100,.margin-100{margin:100px}.margin-top-100,.mt-100{margin-top:100px}.margin-right-100,.mr-100{margin-right:100px}.margin-bottom-100,.mb-100{margin-bottom:100px}.margin-left-100,.ml-100{margin-left:100px}.margin-horizontal-100,.mh-100{margin-left:100px;margin-right:100px}.margin-vertical-100,.mv-100{margin-top:100px;margin-bottom:100px}.m-8,.margin-8{margin:8px}.margin-top-8,.mt-8{margin-top:8px}.margin-right-8,.mr-8{margin-right:8px}.margin-bottom-8,.mb-8{margin-bottom:8px}.margin-left-8,.ml-8{margin-left:8px}.margin-horizontal-8,.mh-8{margin-left:8px;margin-right:8px}.margin-vertical-8,.mv-8{margin-top:8px;margin-bottom:8px}.m-16,.margin-16{margin:16px}.margin-top-16,.mt-16{margin-top:16px}.margin-right-16,.mr-16{margin-right:16px}.margin-bottom-16,.mb-16{margin-bottom:16px}.margin-left-16,.ml-16{margin-left:16px}.margin-horizontal-16,.mh-16{margin-left:16px;margin-right:16px}.margin-vertical-16,.mv-16{margin-top:16px;margin-bottom:16px}.m-24,.margin-24{margin:24px}.margin-top-24,.mt-24{margin-top:24px}.margin-right-24,.mr-24{margin-right:24px}.margin-bottom-24,.mb-24{margin-bottom:24px}.margin-left-24,.ml-24{margin-left:24px}.margin-horizontal-24,.mh-24{margin-left:24px;margin-right:24px}.margin-vertical-24,.mv-24{margin-top:24px;margin-bottom:24px}.m-32,.margin-32{margin:32px}.margin-top-32,.mt-32{margin-top:32px}.margin-right-32,.mr-32{margin-right:32px}.margin-bottom-32,.mb-32{margin-bottom:32px}.margin-left-32,.ml-32{margin-left:32px}.margin-horizontal-32,.mh-32{margin-left:32px;margin-right:32px}.margin-vertical-32,.mv-32{margin-top:32px;margin-bottom:32px}.m-48,.margin-48{margin:48px}.margin-top-48,.mt-48{margin-top:48px}.margin-right-48,.mr-48{margin-right:48px}.margin-bottom-48,.mb-48{margin-bottom:48px}.margin-left-48,.ml-48{margin-left:48px}.margin-horizontal-48,.mh-48{margin-left:48px;margin-right:48px}.margin-vertical-48,.mv-48{margin-top:48px;margin-bottom:48px}.m-56,.margin-56{margin:56px}.margin-top-56,.mt-56{margin-top:56px}.margin-right-56,.mr-56{margin-right:56px}.margin-bottom-56,.mb-56{margin-bottom:56px}.margin-left-56,.ml-56{margin-left:56px}.margin-horizontal-56,.mh-56{margin-left:56px;margin-right:56px}.margin-vertical-56,.mv-56{margin-top:56px;margin-bottom:56px}.m-64,.margin-64{margin:64px}.margin-top-64,.mt-64{margin-top:64px}.margin-right-64,.mr-64{margin-right:64px}.margin-bottom-64,.mb-64{margin-bottom:64px}.margin-left-64,.ml-64{margin-left:64px}.margin-horizontal-64,.mh-64{margin-left:64px;margin-right:64px}.margin-vertical-64,.mv-64{margin-top:64px;margin-bottom:64px}.m-72,.margin-72{margin:72px}.margin-top-72,.mt-72{margin-top:72px}.margin-right-72,.mr-72{margin-right:72px}.margin-bottom-72,.mb-72{margin-bottom:72px}.margin-left-72,.ml-72{margin-left:72px}.margin-horizontal-72,.mh-72{margin-left:72px;margin-right:72px}.margin-vertical-72,.mv-72{margin-top:72px;margin-bottom:72px}.m-88,.margin-88{margin:88px}.margin-top-88,.mt-88{margin-top:88px}.margin-right-88,.mr-88{margin-right:88px}.margin-bottom-88,.mb-88{margin-bottom:88px}.margin-left-88,.ml-88{margin-left:88px}.margin-horizontal-88,.mh-88{margin-left:88px;margin-right:88px}.margin-vertical-88,.mv-88{margin-top:88px;margin-bottom:88px}.m-96,.margin-96{margin:96px}.margin-top-96,.mt-96{margin-top:96px}.margin-right-96,.mr-96{margin-right:96px}.margin-bottom-96,.mb-96{margin-bottom:96px}.margin-left-96,.ml-96{margin-left:96px}.margin-horizontal-96,.mh-96{margin-left:96px;margin-right:96px}.margin-vertical-96,.mv-96{margin-top:96px;margin-bottom:96px}.h-0,.height-0{height:0!important;min-height:0!important;max-height:0!important}.w-0,.width-0{width:0!important;min-width:0!important;max-width:0!important}.h-5,.height-5{height:5px!important;min-height:5px!important;max-height:5px!important}.w-5,.width-5{width:5px!important;min-width:5px!important;max-width:5px!important}.h-10,.height-10{height:10px!important;min-height:10px!important;max-height:10px!important}.w-10,.width-10{width:10px!important;min-width:10px!important;max-width:10px!important}.h-15,.height-15{height:15px!important;min-height:15px!important;max-height:15px!important}.w-15,.width-15{width:15px!important;min-width:15px!important;max-width:15px!important}.h-20,.height-20{height:20px!important;min-height:20px!important;max-height:20px!important}.w-20,.width-20{width:20px!important;min-width:20px!important;max-width:20px!important}.h-25,.height-25{height:25px!important;min-height:25px!important;max-height:25px!important}.w-25,.width-25{width:25px!important;min-width:25px!important;max-width:25px!important}.h-30,.height-30{height:30px!important;min-height:30px!important;max-height:30px!important}.w-30,.width-30{width:30px!important;min-width:30px!important;max-width:30px!important}.h-35,.height-35{height:35px!important;min-height:35px!important;max-height:35px!important}.w-35,.width-35{width:35px!important;min-width:35px!important;max-width:35px!important}.h-40,.height-40{height:40px!important;min-height:40px!important;max-height:40px!important}.w-40,.width-40{width:40px!important;min-width:40px!important;max-width:40px!important}.h-45,.height-45{height:45px!important;min-height:45px!important;max-height:45px!important}.w-45,.width-45{width:45px!important;min-width:45px!important;max-width:45px!important}.h-50,.height-50{height:50px!important;min-height:50px!important;max-height:50px!important}.w-50,.width-50{width:50px!important;min-width:50px!important;max-width:50px!important}.h-55,.height-55{height:55px!important;min-height:55px!important;max-height:55px!important}.w-55,.width-55{width:55px!important;min-width:55px!important;max-width:55px!important}.h-60,.height-60{height:60px!important;min-height:60px!important;max-height:60px!important}.w-60,.width-60{width:60px!important;min-width:60px!important;max-width:60px!important}.h-65,.height-65{height:65px!important;min-height:65px!important;max-height:65px!important}.w-65,.width-65{width:65px!important;min-width:65px!important;max-width:65px!important}.h-70,.height-70{height:70px!important;min-height:70px!important;max-height:70px!important}.w-70,.width-70{width:70px!important;min-width:70px!important;max-width:70px!important}.h-75,.height-75{height:75px!important;min-height:75px!important;max-height:75px!important}.w-75,.width-75{width:75px!important;min-width:75px!important;max-width:75px!important}.h-80,.height-80{height:80px!important;min-height:80px!important;max-height:80px!important}.w-80,.width-80{width:80px!important;min-width:80px!important;max-width:80px!important}.h-85,.height-85{height:85px!important;min-height:85px!important;max-height:85px!important}.w-85,.width-85{width:85px!important;min-width:85px!important;max-width:85px!important}.h-90,.height-90{height:90px!important;min-height:90px!important;max-height:90px!important}.w-90,.width-90{width:90px!important;min-width:90px!important;max-width:90px!important}.h-95,.height-95{height:95px!important;min-height:95px!important;max-height:95px!important}.w-95,.width-95{width:95px!important;min-width:95px!important;max-width:95px!important}.h-100,.height-100{height:100px!important;min-height:100px!important;max-height:100px!important}.w-100,.width-100{width:100px!important;min-width:100px!important;max-width:100px!important}.h-105,.height-105{height:105px!important;min-height:105px!important;max-height:105px!important}.w-105,.width-105{width:105px!important;min-width:105px!important;max-width:105px!important}.h-110,.height-110{height:110px!important;min-height:110px!important;max-height:110px!important}.w-110,.width-110{width:110px!important;min-width:110px!important;max-width:110px!important}.h-115,.height-115{height:115px!important;min-height:115px!important;max-height:115px!important}.w-115,.width-115{width:115px!important;min-width:115px!important;max-width:115px!important}.h-120,.height-120{height:120px!important;min-height:120px!important;max-height:120px!important}.w-120,.width-120{width:120px!important;min-width:120px!important;max-width:120px!important}.h-125,.height-125{height:125px!important;min-height:125px!important;max-height:125px!important}.w-125,.width-125{width:125px!important;min-width:125px!important;max-width:125px!important}.h-130,.height-130{height:130px!important;min-height:130px!important;max-height:130px!important}.w-130,.width-130{width:130px!important;min-width:130px!important;max-width:130px!important}.h-135,.height-135{height:135px!important;min-height:135px!important;max-height:135px!important}.w-135,.width-135{width:135px!important;min-width:135px!important;max-width:135px!important}.h-140,.height-140{height:140px!important;min-height:140px!important;max-height:140px!important}.w-140,.width-140{width:140px!important;min-width:140px!important;max-width:140px!important}.h-145,.height-145{height:145px!important;min-height:145px!important;max-height:145px!important}.w-145,.width-145{width:145px!important;min-width:145px!important;max-width:145px!important}.h-150,.height-150{height:150px!important;min-height:150px!important;max-height:150px!important}.w-150,.width-150{width:150px!important;min-width:150px!important;max-width:150px!important}.h-155,.height-155{height:155px!important;min-height:155px!important;max-height:155px!important}.w-155,.width-155{width:155px!important;min-width:155px!important;max-width:155px!important}.h-160,.height-160{height:160px!important;min-height:160px!important;max-height:160px!important}.w-160,.width-160{width:160px!important;min-width:160px!important;max-width:160px!important}.h-165,.height-165{height:165px!important;min-height:165px!important;max-height:165px!important}.w-165,.width-165{width:165px!important;min-width:165px!important;max-width:165px!important}.h-170,.height-170{height:170px!important;min-height:170px!important;max-height:170px!important}.w-170,.width-170{width:170px!important;min-width:170px!important;max-width:170px!important}.h-175,.height-175{height:175px!important;min-height:175px!important;max-height:175px!important}.w-175,.width-175{width:175px!important;min-width:175px!important;max-width:175px!important}.h-180,.height-180{height:180px!important;min-height:180px!important;max-height:180px!important}.w-180,.width-180{width:180px!important;min-width:180px!important;max-width:180px!important}.h-185,.height-185{height:185px!important;min-height:185px!important;max-height:185px!important}.w-185,.width-185{width:185px!important;min-width:185px!important;max-width:185px!important}.h-190,.height-190{height:190px!important;min-height:190px!important;max-height:190px!important}.w-190,.width-190{width:190px!important;min-width:190px!important;max-width:190px!important}.h-195,.height-195{height:195px!important;min-height:195px!important;max-height:195px!important}.w-195,.width-195{width:195px!important;min-width:195px!important;max-width:195px!important}.h-200,.height-200{height:200px!important;min-height:200px!important;max-height:200px!important}.w-200,.width-200{width:200px!important;min-width:200px!important;max-width:200px!important}.h-205,.height-205{height:205px!important;min-height:205px!important;max-height:205px!important}.w-205,.width-205{width:205px!important;min-width:205px!important;max-width:205px!important}.h-210,.height-210{height:210px!important;min-height:210px!important;max-height:210px!important}.w-210,.width-210{width:210px!important;min-width:210px!important;max-width:210px!important}.h-215,.height-215{height:215px!important;min-height:215px!important;max-height:215px!important}.w-215,.width-215{width:215px!important;min-width:215px!important;max-width:215px!important}.h-220,.height-220{height:220px!important;min-height:220px!important;max-height:220px!important}.w-220,.width-220{width:220px!important;min-width:220px!important;max-width:220px!important}.h-225,.height-225{height:225px!important;min-height:225px!important;max-height:225px!important}.w-225,.width-225{width:225px!important;min-width:225px!important;max-width:225px!important}.h-230,.height-230{height:230px!important;min-height:230px!important;max-height:230px!important}.w-230,.width-230{width:230px!important;min-width:230px!important;max-width:230px!important}.h-235,.height-235{height:235px!important;min-height:235px!important;max-height:235px!important}.w-235,.width-235{width:235px!important;min-width:235px!important;max-width:235px!important}.h-240,.height-240{height:240px!important;min-height:240px!important;max-height:240px!important}.w-240,.width-240{width:240px!important;min-width:240px!important;max-width:240px!important}.h-245,.height-245{height:245px!important;min-height:245px!important;max-height:245px!important}.w-245,.width-245{width:245px!important;min-width:245px!important;max-width:245px!important}.h-250,.height-250{height:250px!important;min-height:250px!important;max-height:250px!important}.w-250,.width-250{width:250px!important;min-width:250px!important;max-width:250px!important}.h-255,.height-255{height:255px!important;min-height:255px!important;max-height:255px!important}.w-255,.width-255{width:255px!important;min-width:255px!important;max-width:255px!important}.h-260,.height-260{height:260px!important;min-height:260px!important;max-height:260px!important}.w-260,.width-260{width:260px!important;min-width:260px!important;max-width:260px!important}.h-265,.height-265{height:265px!important;min-height:265px!important;max-height:265px!important}.w-265,.width-265{width:265px!important;min-width:265px!important;max-width:265px!important}.h-270,.height-270{height:270px!important;min-height:270px!important;max-height:270px!important}.w-270,.width-270{width:270px!important;min-width:270px!important;max-width:270px!important}.h-275,.height-275{height:275px!important;min-height:275px!important;max-height:275px!important}.w-275,.width-275{width:275px!important;min-width:275px!important;max-width:275px!important}.h-280,.height-280{height:280px!important;min-height:280px!important;max-height:280px!important}.w-280,.width-280{width:280px!important;min-width:280px!important;max-width:280px!important}.h-285,.height-285{height:285px!important;min-height:285px!important;max-height:285px!important}.w-285,.width-285{width:285px!important;min-width:285px!important;max-width:285px!important}.h-290,.height-290{height:290px!important;min-height:290px!important;max-height:290px!important}.w-290,.width-290{width:290px!important;min-width:290px!important;max-width:290px!important}.h-295,.height-295{height:295px!important;min-height:295px!important;max-height:295px!important}.w-295,.width-295{width:295px!important;min-width:295px!important;max-width:295px!important}.h-300,.height-300{height:300px!important;min-height:300px!important;max-height:300px!important}.w-300,.width-300{width:300px!important;min-width:300px!important;max-width:300px!important}.h-305,.height-305{height:305px!important;min-height:305px!important;max-height:305px!important}.w-305,.width-305{width:305px!important;min-width:305px!important;max-width:305px!important}.h-310,.height-310{height:310px!important;min-height:310px!important;max-height:310px!important}.w-310,.width-310{width:310px!important;min-width:310px!important;max-width:310px!important}.h-315,.height-315{height:315px!important;min-height:315px!important;max-height:315px!important}.w-315,.width-315{width:315px!important;min-width:315px!important;max-width:315px!important}.h-320,.height-320{height:320px!important;min-height:320px!important;max-height:320px!important}.w-320,.width-320{width:320px!important;min-width:320px!important;max-width:320px!important}.h-325,.height-325{height:325px!important;min-height:325px!important;max-height:325px!important}.w-325,.width-325{width:325px!important;min-width:325px!important;max-width:325px!important}.h-330,.height-330{height:330px!important;min-height:330px!important;max-height:330px!important}.w-330,.width-330{width:330px!important;min-width:330px!important;max-width:330px!important}.h-335,.height-335{height:335px!important;min-height:335px!important;max-height:335px!important}.w-335,.width-335{width:335px!important;min-width:335px!important;max-width:335px!important}.h-340,.height-340{height:340px!important;min-height:340px!important;max-height:340px!important}.w-340,.width-340{width:340px!important;min-width:340px!important;max-width:340px!important}.h-345,.height-345{height:345px!important;min-height:345px!important;max-height:345px!important}.w-345,.width-345{width:345px!important;min-width:345px!important;max-width:345px!important}.h-350,.height-350{height:350px!important;min-height:350px!important;max-height:350px!important}.w-350,.width-350{width:350px!important;min-width:350px!important;max-width:350px!important}.h-355,.height-355{height:355px!important;min-height:355px!important;max-height:355px!important}.w-355,.width-355{width:355px!important;min-width:355px!important;max-width:355px!important}.h-360,.height-360{height:360px!important;min-height:360px!important;max-height:360px!important}.w-360,.width-360{width:360px!important;min-width:360px!important;max-width:360px!important}.h-365,.height-365{height:365px!important;min-height:365px!important;max-height:365px!important}.w-365,.width-365{width:365px!important;min-width:365px!important;max-width:365px!important}.h-370,.height-370{height:370px!important;min-height:370px!important;max-height:370px!important}.w-370,.width-370{width:370px!important;min-width:370px!important;max-width:370px!important}.h-375,.height-375{height:375px!important;min-height:375px!important;max-height:375px!important}.w-375,.width-375{width:375px!important;min-width:375px!important;max-width:375px!important}.h-380,.height-380{height:380px!important;min-height:380px!important;max-height:380px!important}.w-380,.width-380{width:380px!important;min-width:380px!important;max-width:380px!important}.h-385,.height-385{height:385px!important;min-height:385px!important;max-height:385px!important}.w-385,.width-385{width:385px!important;min-width:385px!important;max-width:385px!important}.h-390,.height-390{height:390px!important;min-height:390px!important;max-height:390px!important}.w-390,.width-390{width:390px!important;min-width:390px!important;max-width:390px!important}.h-395,.height-395{height:395px!important;min-height:395px!important;max-height:395px!important}.w-395,.width-395{width:395px!important;min-width:395px!important;max-width:395px!important}.h-400,.height-400{height:400px!important;min-height:400px!important;max-height:400px!important}.w-400,.width-400{width:400px!important;min-width:400px!important;max-width:400px!important}.h-405,.height-405{height:405px!important;min-height:405px!important;max-height:405px!important}.w-405,.width-405{width:405px!important;min-width:405px!important;max-width:405px!important}.h-410,.height-410{height:410px!important;min-height:410px!important;max-height:410px!important}.w-410,.width-410{width:410px!important;min-width:410px!important;max-width:410px!important}.h-415,.height-415{height:415px!important;min-height:415px!important;max-height:415px!important}.w-415,.width-415{width:415px!important;min-width:415px!important;max-width:415px!important}.h-420,.height-420{height:420px!important;min-height:420px!important;max-height:420px!important}.w-420,.width-420{width:420px!important;min-width:420px!important;max-width:420px!important}.h-425,.height-425{height:425px!important;min-height:425px!important;max-height:425px!important}.w-425,.width-425{width:425px!important;min-width:425px!important;max-width:425px!important}.h-430,.height-430{height:430px!important;min-height:430px!important;max-height:430px!important}.w-430,.width-430{width:430px!important;min-width:430px!important;max-width:430px!important}.h-435,.height-435{height:435px!important;min-height:435px!important;max-height:435px!important}.w-435,.width-435{width:435px!important;min-width:435px!important;max-width:435px!important}.h-440,.height-440{height:440px!important;min-height:440px!important;max-height:440px!important}.w-440,.width-440{width:440px!important;min-width:440px!important;max-width:440px!important}.h-445,.height-445{height:445px!important;min-height:445px!important;max-height:445px!important}.w-445,.width-445{width:445px!important;min-width:445px!important;max-width:445px!important}.h-450,.height-450{height:450px!important;min-height:450px!important;max-height:450px!important}.w-450,.width-450{width:450px!important;min-width:450px!important;max-width:450px!important}.h-455,.height-455{height:455px!important;min-height:455px!important;max-height:455px!important}.w-455,.width-455{width:455px!important;min-width:455px!important;max-width:455px!important}.h-460,.height-460{height:460px!important;min-height:460px!important;max-height:460px!important}.w-460,.width-460{width:460px!important;min-width:460px!important;max-width:460px!important}.h-465,.height-465{height:465px!important;min-height:465px!important;max-height:465px!important}.w-465,.width-465{width:465px!important;min-width:465px!important;max-width:465px!important}.h-470,.height-470{height:470px!important;min-height:470px!important;max-height:470px!important}.w-470,.width-470{width:470px!important;min-width:470px!important;max-width:470px!important}.h-475,.height-475{height:475px!important;min-height:475px!important;max-height:475px!important}.w-475,.width-475{width:475px!important;min-width:475px!important;max-width:475px!important}.h-480,.height-480{height:480px!important;min-height:480px!important;max-height:480px!important}.w-480,.width-480{width:480px!important;min-width:480px!important;max-width:480px!important}.h-485,.height-485{height:485px!important;min-height:485px!important;max-height:485px!important}.w-485,.width-485{width:485px!important;min-width:485px!important;max-width:485px!important}.h-490,.height-490{height:490px!important;min-height:490px!important;max-height:490px!important}.w-490,.width-490{width:490px!important;min-width:490px!important;max-width:490px!important}.h-495,.height-495{height:495px!important;min-height:495px!important;max-height:495px!important}.w-495,.width-495{width:495px!important;min-width:495px!important;max-width:495px!important}.h-500,.height-500{height:500px!important;min-height:500px!important;max-height:500px!important}.w-500,.width-500{width:500px!important;min-width:500px!important;max-width:500px!important}.h-8,.height-8{height:8px!important;min-height:8px!important;max-height:8px!important}.w-8,.width-8{width:8px!important;min-width:8px!important;max-width:8px!important}.h-16,.height-16{height:16px!important;min-height:16px!important;max-height:16px!important}.w-16,.width-16{width:16px!important;min-width:16px!important;max-width:16px!important}.h-24,.height-24{height:24px!important;min-height:24px!important;max-height:24px!important}.w-24,.width-24{width:24px!important;min-width:24px!important;max-width:24px!important}.h-32,.height-32{height:32px!important;min-height:32px!important;max-height:32px!important}.w-32,.width-32{width:32px!important;min-width:32px!important;max-width:32px!important}.h-48,.height-48{height:48px!important;min-height:48px!important;max-height:48px!important}.w-48,.width-48{width:48px!important;min-width:48px!important;max-width:48px!important}.h-56,.height-56{height:56px!important;min-height:56px!important;max-height:56px!important}.w-56,.width-56{width:56px!important;min-width:56px!important;max-width:56px!important}.h-64,.height-64{height:64px!important;min-height:64px!important;max-height:64px!important}.w-64,.width-64{width:64px!important;min-width:64px!important;max-width:64px!important}.h-72,.height-72{height:72px!important;min-height:72px!important;max-height:72px!important}.w-72,.width-72{width:72px!important;min-width:72px!important;max-width:72px!important}.h-88,.height-88{height:88px!important;min-height:88px!important;max-height:88px!important}.w-88,.width-88{width:88px!important;min-width:88px!important;max-width:88px!important}.h-96,.height-96{height:96px!important;min-height:96px!important;max-height:96px!important}.w-96,.width-96{width:96px!important;min-width:96px!important;max-width:96px!important}.h-104,.height-104{height:104px!important;min-height:104px!important;max-height:104px!important}.w-104,.width-104{width:104px!important;min-width:104px!important;max-width:104px!important}.h-112,.height-112{height:112px!important;min-height:112px!important;max-height:112px!important}.w-112,.width-112{width:112px!important;min-width:112px!important;max-width:112px!important}.h-128,.height-128{height:128px!important;min-height:128px!important;max-height:128px!important}.w-128,.width-128{width:128px!important;min-width:128px!important;max-width:128px!important}.h-136,.height-136{height:136px!important;min-height:136px!important;max-height:136px!important}.w-136,.width-136{width:136px!important;min-width:136px!important;max-width:136px!important}.h-144,.height-144{height:144px!important;min-height:144px!important;max-height:144px!important}.w-144,.width-144{width:144px!important;min-width:144px!important;max-width:144px!important}.h-152,.height-152{height:152px!important;min-height:152px!important;max-height:152px!important}.w-152,.width-152{width:152px!important;min-width:152px!important;max-width:152px!important}.h-168,.height-168{height:168px!important;min-height:168px!important;max-height:168px!important}.w-168,.width-168{width:168px!important;min-width:168px!important;max-width:168px!important}.h-176,.height-176{height:176px!important;min-height:176px!important;max-height:176px!important}.w-176,.width-176{width:176px!important;min-width:176px!important;max-width:176px!important}.h-184,.height-184{height:184px!important;min-height:184px!important;max-height:184px!important}.w-184,.width-184{width:184px!important;min-width:184px!important;max-width:184px!important}.h-192,.height-192{height:192px!important;min-height:192px!important;max-height:192px!important}.w-192,.width-192{width:192px!important;min-width:192px!important;max-width:192px!important}.h-208,.height-208{height:208px!important;min-height:208px!important;max-height:208px!important}.w-208,.width-208{width:208px!important;min-width:208px!important;max-width:208px!important}.h-216,.height-216{height:216px!important;min-height:216px!important;max-height:216px!important}.w-216,.width-216{width:216px!important;min-width:216px!important;max-width:216px!important}.h-224,.height-224{height:224px!important;min-height:224px!important;max-height:224px!important}.w-224,.width-224{width:224px!important;min-width:224px!important;max-width:224px!important}.h-232,.height-232{height:232px!important;min-height:232px!important;max-height:232px!important}.w-232,.width-232{width:232px!important;min-width:232px!important;max-width:232px!important}.h-248,.height-248{height:248px!important;min-height:248px!important;max-height:248px!important}.w-248,.width-248{width:248px!important;min-width:248px!important;max-width:248px!important}.h-256,.height-256{height:256px!important;min-height:256px!important;max-height:256px!important}.w-256,.width-256{width:256px!important;min-width:256px!important;max-width:256px!important}.h-264,.height-264{height:264px!important;min-height:264px!important;max-height:264px!important}.w-264,.width-264{width:264px!important;min-width:264px!important;max-width:264px!important}.h-272,.height-272{height:272px!important;min-height:272px!important;max-height:272px!important}.w-272,.width-272{width:272px!important;min-width:272px!important;max-width:272px!important}.h-288,.height-288{height:288px!important;min-height:288px!important;max-height:288px!important}.w-288,.width-288{width:288px!important;min-width:288px!important;max-width:288px!important}.h-296,.height-296{height:296px!important;min-height:296px!important;max-height:296px!important}.w-296,.width-296{width:296px!important;min-width:296px!important;max-width:296px!important}.h-304,.height-304{height:304px!important;min-height:304px!important;max-height:304px!important}.w-304,.width-304{width:304px!important;min-width:304px!important;max-width:304px!important}.h-312,.height-312{height:312px!important;min-height:312px!important;max-height:312px!important}.w-312,.width-312{width:312px!important;min-width:312px!important;max-width:312px!important}.h-328,.height-328{height:328px!important;min-height:328px!important;max-height:328px!important}.w-328,.width-328{width:328px!important;min-width:328px!important;max-width:328px!important}.h-336,.height-336{height:336px!important;min-height:336px!important;max-height:336px!important}.w-336,.width-336{width:336px!important;min-width:336px!important;max-width:336px!important}.h-344,.height-344{height:344px!important;min-height:344px!important;max-height:344px!important}.w-344,.width-344{width:344px!important;min-width:344px!important;max-width:344px!important}.h-352,.height-352{height:352px!important;min-height:352px!important;max-height:352px!important}.w-352,.width-352{width:352px!important;min-width:352px!important;max-width:352px!important}.h-368,.height-368{height:368px!important;min-height:368px!important;max-height:368px!important}.w-368,.width-368{width:368px!important;min-width:368px!important;max-width:368px!important}.h-376,.height-376{height:376px!important;min-height:376px!important;max-height:376px!important}.w-376,.width-376{width:376px!important;min-width:376px!important;max-width:376px!important}.h-384,.height-384{height:384px!important;min-height:384px!important;max-height:384px!important}.w-384,.width-384{width:384px!important;min-width:384px!important;max-width:384px!important}.h-392,.height-392{height:392px!important;min-height:392px!important;max-height:392px!important}.w-392,.width-392{width:392px!important;min-width:392px!important;max-width:392px!important}.h-408,.height-408{height:408px!important;min-height:408px!important;max-height:408px!important}.w-408,.width-408{width:408px!important;min-width:408px!important;max-width:408px!important}.h-416,.height-416{height:416px!important;min-height:416px!important;max-height:416px!important}.w-416,.width-416{width:416px!important;min-width:416px!important;max-width:416px!important}.h-424,.height-424{height:424px!important;min-height:424px!important;max-height:424px!important}.w-424,.width-424{width:424px!important;min-width:424px!important;max-width:424px!important}.h-432,.height-432{height:432px!important;min-height:432px!important;max-height:432px!important}.w-432,.width-432{width:432px!important;min-width:432px!important;max-width:432px!important}.h-448,.height-448{height:448px!important;min-height:448px!important;max-height:448px!important}.w-448,.width-448{width:448px!important;min-width:448px!important;max-width:448px!important}.h-456,.height-456{height:456px!important;min-height:456px!important;max-height:456px!important}.w-456,.width-456{width:456px!important;min-width:456px!important;max-width:456px!important}.h-464,.height-464{height:464px!important;min-height:464px!important;max-height:464px!important}.w-464,.width-464{width:464px!important;min-width:464px!important;max-width:464px!important}.h-472,.height-472{height:472px!important;min-height:472px!important;max-height:472px!important}.w-472,.width-472{width:472px!important;min-width:472px!important;max-width:472px!important}.h-488,.height-488{height:488px!important;min-height:488px!important;max-height:488px!important}.w-488,.width-488{width:488px!important;min-width:488px!important;max-width:488px!important}.h-496,.height-496{height:496px!important;min-height:496px!important;max-height:496px!important}.w-496,.width-496{width:496px!important;min-width:496px!important;max-width:496px!important}.h-504,.height-504{height:504px!important;min-height:504px!important;max-height:504px!important}.w-504,.width-504{width:504px!important;min-width:504px!important;max-width:504px!important}.h-512,.height-512{height:512px!important;min-height:512px!important;max-height:512px!important}.w-512,.width-512{width:512px!important;min-width:512px!important;max-width:512px!important}.h-528,.height-528{height:528px!important;min-height:528px!important;max-height:528px!important}.w-528,.width-528{width:528px!important;min-width:528px!important;max-width:528px!important}.h-536,.height-536{height:536px!important;min-height:536px!important;max-height:536px!important}.w-536,.width-536{width:536px!important;min-width:536px!important;max-width:536px!important}.h-544,.height-544{height:544px!important;min-height:544px!important;max-height:544px!important}.w-544,.width-544{width:544px!important;min-width:544px!important;max-width:544px!important}.h-552,.height-552{height:552px!important;min-height:552px!important;max-height:552px!important}.w-552,.width-552{width:552px!important;min-width:552px!important;max-width:552px!important}.h-568,.height-568{height:568px!important;min-height:568px!important;max-height:568px!important}.w-568,.width-568{width:568px!important;min-width:568px!important;max-width:568px!important}.h-576,.height-576{height:576px!important;min-height:576px!important;max-height:576px!important}.w-576,.width-576{width:576px!important;min-width:576px!important;max-width:576px!important}.h-584,.height-584{height:584px!important;min-height:584px!important;max-height:584px!important}.w-584,.width-584{width:584px!important;min-width:584px!important;max-width:584px!important}.h-592,.height-592{height:592px!important;min-height:592px!important;max-height:592px!important}.w-592,.width-592{width:592px!important;min-width:592px!important;max-width:592px!important}.h-608,.height-608{height:608px!important;min-height:608px!important;max-height:608px!important}.w-608,.width-608{width:608px!important;min-width:608px!important;max-width:608px!important}.h-616,.height-616{height:616px!important;min-height:616px!important;max-height:616px!important}.w-616,.width-616{width:616px!important;min-width:616px!important;max-width:616px!important}.h-624,.height-624{height:624px!important;min-height:624px!important;max-height:624px!important}.w-624,.width-624{width:624px!important;min-width:624px!important;max-width:624px!important}.h-632,.height-632{height:632px!important;min-height:632px!important;max-height:632px!important}.w-632,.width-632{width:632px!important;min-width:632px!important;max-width:632px!important}.h-648,.height-648{height:648px!important;min-height:648px!important;max-height:648px!important}.w-648,.width-648{width:648px!important;min-width:648px!important;max-width:648px!important}.h-656,.height-656{height:656px!important;min-height:656px!important;max-height:656px!important}.w-656,.width-656{width:656px!important;min-width:656px!important;max-width:656px!important}.h-664,.height-664{height:664px!important;min-height:664px!important;max-height:664px!important}.w-664,.width-664{width:664px!important;min-width:664px!important;max-width:664px!important}.h-672,.height-672{height:672px!important;min-height:672px!important;max-height:672px!important}.w-672,.width-672{width:672px!important;min-width:672px!important;max-width:672px!important}.h-688,.height-688{height:688px!important;min-height:688px!important;max-height:688px!important}.w-688,.width-688{width:688px!important;min-width:688px!important;max-width:688px!important}.h-696,.height-696{height:696px!important;min-height:696px!important;max-height:696px!important}.w-696,.width-696{width:696px!important;min-width:696px!important;max-width:696px!important}.h-704,.height-704{height:704px!important;min-height:704px!important;max-height:704px!important}.w-704,.width-704{width:704px!important;min-width:704px!important;max-width:704px!important}.h-712,.height-712{height:712px!important;min-height:712px!important;max-height:712px!important}.w-712,.width-712{width:712px!important;min-width:712px!important;max-width:712px!important}.h-728,.height-728{height:728px!important;min-height:728px!important;max-height:728px!important}.w-728,.width-728{width:728px!important;min-width:728px!important;max-width:728px!important}.h-736,.height-736{height:736px!important;min-height:736px!important;max-height:736px!important}.w-736,.width-736{width:736px!important;min-width:736px!important;max-width:736px!important}.h-744,.height-744{height:744px!important;min-height:744px!important;max-height:744px!important}.w-744,.width-744{width:744px!important;min-width:744px!important;max-width:744px!important}.h-752,.height-752{height:752px!important;min-height:752px!important;max-height:752px!important}.w-752,.width-752{width:752px!important;min-width:752px!important;max-width:752px!important}.h-768,.height-768{height:768px!important;min-height:768px!important;max-height:768px!important}.w-768,.width-768{width:768px!important;min-width:768px!important;max-width:768px!important}.h-776,.height-776{height:776px!important;min-height:776px!important;max-height:776px!important}.w-776,.width-776{width:776px!important;min-width:776px!important;max-width:776px!important}.h-784,.height-784{height:784px!important;min-height:784px!important;max-height:784px!important}.w-784,.width-784{width:784px!important;min-width:784px!important;max-width:784px!important}.h-792,.height-792{height:792px!important;min-height:792px!important;max-height:792px!important}.w-792,.width-792{width:792px!important;min-width:792px!important;max-width:792px!important}.b,.border{border:1px solid rgba(0,0,0,.12)}.border-top,.bt{border-top:1px solid rgba(0,0,0,.12)}.border-right,.br{border-right:1px solid rgba(0,0,0,.12)}.bb,.border-bottom{border-bottom:1px solid rgba(0,0,0,.12)}.bl,.border-left{border-left:1px solid rgba(0,0,0,.12)}.bh,.border-horizontal{border-left:1px solid rgba(0,0,0,.12);border-right:1px solid rgba(0,0,0,.12)}.border-vertical,.bv{border-top:1px solid rgba(0,0,0,.12);border-bottom:1px solid rgba(0,0,0,.12)}.brad-1{border-radius:1px}.brad-2{border-radius:2px}.brad-3{border-radius:3px}.brad-4{border-radius:4px}.brad-5{border-radius:5px}.brad-6{border-radius:6px}.brad-7{border-radius:7px}.brad-8{border-radius:8px}.brad-9{border-radius:9px}.brad-10{border-radius:10px}.brad-11{border-radius:11px}.brad-12{border-radius:12px}@media all{.page-break{display:none}}@media print{.page-break{display:block;break-after:always;page-break-after:always}#main #vertical-navigation{display:none}#main #toolbar{display:none}#main #quick-panel{display:none}#main #content{position:relative!important;top:0!important;right:0!important;bottom:0!important;left:0!important;background:0 0!important}ms-theme-options{display:none}.ps-scrollbar-x-rail,.ps-scrollbar-y-rail{display:none!important}.printable{overflow:visible!important}.printable .template-layout{display:inline!important}}.advanced-search-container{border-bottom:1px rgba(0,0,0,.12) solid}.advanced-search-conditions{border-bottom:1px rgba(0,0,0,.12) solid;padding:4px 0}.advanced-search-conditions .errors{font-size:12px;color:#dd2c00;margin-top:10px}.advanced-search-conditions .advanced-search-chips md-chips-wrap{box-shadow:none}.advanced-search-conditions .advanced-search-chips md-chip{position:relative}.advanced-search-conditions .advanced-search-chips md-chip .md-chip-content md-chip-template span p.filter-text{display:inline-block;margin:0}.advanced-search-conditions .advanced-search-chips md-chip .md-chip-remove-container{position:absolute;right:4px;top:4px;margin-right:0;height:24px}.advanced-search-conditions .advanced-search-chips md-chip .md-chip-remove-container button.remove-filter{position:relative;height:24px;width:24px;line-height:30px;text-align:center;border-radius:50%;border:none;box-shadow:none;padding:0;margin:0;transition:background .15s linear;display:block}.advanced-search-conditions .advanced-search-chips md-chip .md-chip-remove-container button.remove-filter md-icon{position:absolute;top:50%;left:50%;transform:translate3d(-50%,-50%,0);color:#616161}.advanced-search-conditions .advanced-search-chips md-chip .md-chip-remove-container button.remove-filter md-icon:focus,.advanced-search-conditions .advanced-search-chips md-chip .md-chip-remove-container button.remove-filter md-icon:hover{color:rgba(255,0,0,.8)}.advanced-search-conditions .advanced-search-chips md-chips-wrap.md-removable md-chip md-chip-template{padding-right:5px}.advanced-search-bar{padding:10px 0}.advanced-search-bar md-input-container.no-errors{font-size:12px;transition:0s none;-webkit-transition:0s none;animation:0s none;-webkit-animation:0s none}.advanced-search-bar md-input-container.no-errors input{font-family:Arial Unicode MS,Arial,Helvetica}.advanced-search-bar md-input-container.no-errors .md-errors-spacer{min-height:0}md-option div div.operators-list{display:table}md-option div div.operators-list span{display:table-cell}md-option div div.operators-list span.operator-symbol{display:table-cell;font-size:14px;width:30px}.advanced-search-bar mdp-date-picker button{margin:0!important}.advanced-search-bar mdp-date-picker md-input-container{flex:1;margin:0}.advanced-search-bar mdp-date-picker md-input-container label{font-size:12px}.advanced-search-bar mdp-date-picker md-input-container .md-errors-spacer{min-height:0}.advanced-search-bar div md-date-range{font-size:12px;margin-left:10px}.advanced-search-bar div.autocomplete-input md-icon{margin:8px 8px 8px 0}.advanced-search-bar div.autocomplete-input md-autocomplete{font-size:12px!important}.advanced-search-bar div.autocomplete-input md-autocomplete md-autocomplete-wrap{height:0}.advanced-search-bar div.autocomplete-input md-autocomplete md-autocomplete-wrap md-input-container{margin:0}.advanced-search-bar div.autocomplete-input md-autocomplete md-autocomplete-wrap md-input-container input[type=search]{padding:0!important}.advanced-search-bar div.autocomplete-input md-autocomplete md-autocomplete-wrap md-input-container div.md-errors-spacer{min-height:0}md-toolbar.advanced-search-dialog-header{background-image:url(/assets/images/backgrounds/header-bg.png);background-position:top}.md-autocomplete-suggestions-container li .highlight,.md-autocomplete-suggestions-container.md-default-theme li .highlight{color:#ca1d1d;font-weight:700}.chip-disabled{opacity:.4}.ms-card{display:flex;flex-direction:row;padding:8px}.ms-card .ms-card-content-wrapper{position:relative;overflow:hidden;width:100%;max-width:400px;border-radius:2px;background:#fff;box-shadow:0 3px 1px -2px rgba(0,0,0,.14),0 2px 2px 0 rgba(0,0,0,.098),0 1px 5px 0 rgba(0,0,0,.084)}.ms-card .template-1 .media .image{width:100%;border-radius:2px 2px 0 0}.ms-card .template-10 .media{width:80px;min-width:80px;max-width:80px}.ms-card .template-2 .header .avatar .image{display:block;width:40px;height:40px;border-radius:20px}.ms-card .template-2 .media .image{width:100%}.ms-card .template-4 .info{position:absolute;right:0;bottom:0;left:0;z-index:2;background:rgba(0,0,0,.54)}.ms-card .template-4 .media{z-index:1}.ms-card .template-4 .media .image{width:100%}.ms-card .template-5 .media{width:80px;min-width:80px;max-width:80px}.ms-card .template-5 .info,.ms-card .template-5 .media{-ms-flex:0 1 auto}.ms-card .template-8 .media .image{width:100%;border-radius:2px 2px 0 0}.ms-card .template-9 .header .avatar .image{display:block;width:40px;height:40px;border-radius:20px}.ms-card .template-9 .media .image{width:100%}md-tooltip.client-side-logging-tooltip div.md-content{height:auto;max-width:200px;white-space:normal;text-align:center}md-list-item .md-list-item-text p.ms-dual-multiselect-line-xs{font-size:10px!important;padding-top:5px}md-list-item md-icon.hidden{visibility:hidden}md-icon.add-disabled{cursor:default!important;opacity:.4}md-list-item.read-only-mode{cursor:none!important}.ms-form-wizard{background:#fff;box-shadow:0 1px 3px 0 rgba(0,0,0,.2),0 1px 1px 0 rgba(0,0,0,.14),0 2px 1px -1px rgba(0,0,0,.12)}.ms-form-wizard md-tabs md-tabs-wrapper{box-shadow:0 1px 3px 0 rgba(0,0,0,.2),0 1px 1px 0 rgba(0,0,0,.14),0 2px 1px -1px rgba(0,0,0,.12)}.ms-form-wizard md-tabs md-tabs-wrapper md-tabs-canvas{height:72px}.ms-form-wizard md-tabs md-tabs-wrapper md-tabs-canvas md-pagination-wrapper{height:72px}.ms-form-wizard md-tabs md-tabs-wrapper md-tabs-canvas md-pagination-wrapper md-tab-item{opacity:1!important;padding:24px}.ms-form-wizard md-tabs md-tabs-wrapper md-tabs-canvas md-pagination-wrapper md-tab-item:before{content:'';display:block;position:absolute;top:50%;left:0;right:50%;border-bottom:1px solid rgba(0,0,0,.12);z-index:8}.ms-form-wizard md-tabs md-tabs-wrapper md-tabs-canvas md-pagination-wrapper md-tab-item:after{content:'';display:block;position:absolute;top:50%;left:50%;right:0;border-bottom:1px solid rgba(0,0,0,.12);z-index:8}.ms-form-wizard md-tabs md-tabs-wrapper md-tabs-canvas md-pagination-wrapper md-tab-item:first-of-type:before{display:none}.ms-form-wizard md-tabs md-tabs-wrapper md-tabs-canvas md-pagination-wrapper md-tab-item:last-of-type:after{display:none}.ms-form-wizard md-tabs md-tabs-wrapper md-tabs-canvas md-pagination-wrapper md-tab-item.md-disabled .ms-form-wizard-step-label .ms-form-wizard-step-number{background:rgba(0,0,0,.12)!important}.ms-form-wizard md-tabs md-tabs-wrapper md-tabs-canvas md-pagination-wrapper md-tab-item .md-ripple-container{z-index:11}.ms-form-wizard md-tabs md-tabs-wrapper md-tabs-canvas md-ink-bar{display:none!important}.ms-form-wizard .ms-form-wizard-step-label{display:inline-block;position:relative;background:#fff;z-index:10;padding:0 16px;line-height:24px}.ms-form-wizard .ms-form-wizard-step-label .ms-form-wizard-step-number{display:inline-block;vertical-align:middle;width:24px;height:24px;line-height:24px;font-size:14px;margin-right:12px;border-radius:50%;color:#fff!important}.ms-form-wizard .ms-form-wizard-step-label .ms-form-wizard-step-number i{line-height:24px!important}.ms-form-wizard .ms-form-wizard-step-label .ms-form-wizard-step-text{display:inline-block;vertical-align:middle;position:relative;line-height:24px}.ms-form-wizard .ms-form-wizard-form{padding:24px 16px}.ms-form-wizard .navigation{padding:16px}.ms-form-wizard .navigation .steps{display:flex;align-items:center;justify-content:center;padding:0 16px}.ms-form-wizard .navigation .steps span{width:5px;height:5px;margin:0 4px;border-radius:50%}.ms-form-wizard .navigation .steps span:not(.md-accent-bg){background:rgba(0,0,0,.12)}.ms-form-wizard .navigation .steps span.selected{width:8px;height:8px}ms-info-bar{display:block;position:relative;width:100%;height:44px;background-color:#e91e63;z-index:99998;box-shadow:0 1px 5px 0 rgba(0,0,0,.2),0 2px 2px 0 rgba(0,0,0,.14),0 3px 1px -2px rgba(0,0,0,.12)}ms-info-bar #ms-info-bar-message{padding:8px 16px;line-height:28px;font-size:14px}ms-info-bar #ms-info-bar-message a{overflow:hidden;height:48px;color:#fff}ms-masonry{width:100%;display:block}ms-masonry [ms-masonry-item],ms-masonry ms-masonry-item{transition:transform .3s ease;position:absolute;transform:translate3d(50vw,100vh,0)}ms-material-color-picker md-menu .md-button{font-size:12px}md-menu-content.ms-material-color-picker-menu-content{width:208px;max-width:208px;min-width:208px;padding:0;overflow:hidden}md-menu-content.ms-material-color-picker-menu-content header{height:48px;text-transform:uppercase}md-menu-content.ms-material-color-picker-menu-content header .md-button{display:flex;margin:0}md-menu-content.ms-material-color-picker-menu-content header>span{line-height:13px}md-menu-content.ms-material-color-picker-menu-content .colors{position:relative;width:208px;min-height:258px;height:258px;padding:4px}md-menu-content.ms-material-color-picker-menu-content .colors .color{position:relative;width:46px;height:46px;margin:2px;border-radius:0;cursor:pointer}md-menu-content.ms-material-color-picker-menu-content .colors .color .label{padding:2px;font-size:10px}md-menu-content.ms-material-color-picker-menu-content .colors .color .icon-check{position:absolute;top:2px;right:2px;font-size:16px;opacity:.7}ms-nav{display:block;position:relative;color:rgba(255,255,255,.7);user-select:none;z-index:70}ms-nav ms-nav-item{display:block;position:relative;line-height:48px}ms-nav ms-nav-item.ms-nav-title{line-height:32px;font-size:12px;font-weight:500;margin-top:8px;padding:0 24px;width:100%;color:rgba(255,255,255,.3);text-transform:uppercase;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}ms-nav ms-nav-item .ms-nav-button{display:flex;align-self:flex-start;align-items:center;position:relative;cursor:pointer;padding:0 48px 0 24px;color:rgba(255,255,255,.7);text-decoration:none}ms-nav ms-nav-item .ms-nav-button:not(.active):hover{background:rgba(0,0,0,.1);text-decoration:none}ms-nav ms-nav-item .ms-nav-button .ms-nav-label{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;transition:opacity .2s ease-in-out .1s}ms-nav ms-nav-item .ms-nav-button .arrow{position:absolute;top:16px;right:24px;margin:0;transition:transform .3s ease-in-out,opacity .2s ease-in-out .1s}ms-nav ms-nav-item .ms-nav-button .ms-nav-badge{position:absolute;top:50%;right:24px;min-width:20px;height:20px;line-height:20px;padding:0 7px;font-size:11px;font-weight:700;border-radius:20px;transform:translateY(-50%);transition:opacity .2s ease-in-out .1s}ms-nav ms-nav-item .ms-nav-button.active{color:#fff!important}ms-nav ms-nav-item .ms-nav-button.active .ms-nav-badge{background:#fff!important;color:rgba(0,0,0,.87)!important}ms-nav ms-nav-item .ms-nav-button.active i{color:#fff}ms-nav ms-nav-item i{color:rgba(255,255,255,.7);margin:0 16px 0 0}ms-nav .ms-nav-toggle ms-nav-toggle-items{display:none;overflow:hidden}ms-nav .ms-nav-toggle ms-nav-toggle-items.expand-animation{transition:height .35s cubic-bezier(.25,.46,.45,.94)}ms-nav .ms-nav-toggle ms-nav-toggle-items.collapse-animation{transition:height .35s cubic-bezier(.25,.46,.45,.94)}ms-nav .ms-nav-toggle ms-nav-toggle-items ms-nav-item .ms-nav-button{padding-left:58px}ms-nav .ms-nav-toggle ms-nav-toggle-items ms-nav-item ms-nav-toggle-items ms-nav-item .ms-nav-button{padding-left:68px}ms-nav .ms-nav-toggle ms-nav-toggle-items ms-nav-item ms-nav-toggle-items ms-nav-item ms-nav-toggle-items ms-nav-item .ms-nav-button{padding-left:78px}ms-nav .ms-nav-toggle ms-nav-toggle-items ms-nav-item ms-nav-toggle-items ms-nav-item ms-nav-toggle-items ms-nav-item ms-nav-toggle-items ms-nav-item .ms-nav-button{padding-left:88px}ms-nav .ms-nav-toggle ms-nav-toggle-items ms-nav-item ms-nav-toggle-items ms-nav-item ms-nav-toggle-items ms-nav-item ms-nav-toggle-items ms-nav-item ms-nav-toggle-items ms-nav-item .ms-nav-button{padding-left:98px}ms-nav .ms-nav-toggle.active>.ms-nav-button{color:#fff}ms-nav .ms-nav-toggle.active>.ms-nav-button a,ms-nav .ms-nav-toggle.active>.ms-nav-button md-icon{color:#fff}ms-nav .ms-nav-toggle[collapsed=false]>.ms-nav-button>.arrow{transform:rotate(90deg)}ms-nav>.ms-nav-toggle[collapsed=false]{background-color:rgba(0,0,0,.12)}@media only screen and (min-width:1280px){.ms-nav-folded #ms-nav-fold-close-overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:0 0;z-index:998}.ms-nav-folded #ms-nav-fold-open-overlay{position:absolute;top:0;right:0;bottom:0;left:0;z-index:999}.ms-nav-folded:not(.ms-nav-folded-open) ms-nav ms-nav-item.ms-nav-title{height:32px}.ms-nav-folded:not(.ms-nav-folded-open) ms-nav ms-nav-item.ms-nav-title:before{content:'';display:block;position:relative;top:12px;width:16px;border-top:1px solid rgba(255,255,255,.12)}.ms-nav-folded:not(.ms-nav-folded-open) ms-nav ms-nav-item.ms-nav-title span{display:none}.ms-nav-folded:not(.ms-nav-folded-open) ms-nav ms-nav-item .ms-nav-button{height:48px}.ms-nav-folded:not(.ms-nav-folded-open) ms-nav ms-nav-item .ms-nav-button>.arrow,.ms-nav-folded:not(.ms-nav-folded-open) ms-nav ms-nav-item .ms-nav-button>.ms-nav-badge,.ms-nav-folded:not(.ms-nav-folded-open) ms-nav ms-nav-item .ms-nav-button>.ms-nav-label{opacity:0;visibility:hidden}}.ms-navigation{display:block;position:relative;color:rgba(255,255,255,.7);user-select:none}.ms-navigation li,.ms-navigation ul{padding:0;margin:0}.ms-navigation ul{display:block;overflow:hidden}.ms-navigation ul li{position:relative}.ms-navigation ul li.collapsed ul{display:none}.ms-navigation .animate-height{transition:height .25s cubic-bezier(.25,.46,.45,.94)}.ms-navigation .ms-navigation-node .ms-navigation-item{display:block;position:relative;cursor:pointer;color:rgba(255,255,255,.7)}.ms-navigation .ms-navigation-node .ms-navigation-item:hover{background:rgba(0,0,0,.1)}.ms-navigation .ms-navigation-node .ms-navigation-item>.ms-navigation-button{display:flex;position:relative;width:100%;height:48px;line-height:48px;flex-direction:row;justify-content:flex-start;align-items:center;padding-right:16px;color:rgba(255,255,255,.7);text-decoration:none;white-space:nowrap;overflow:hidden}.ms-navigation .ms-navigation-node .ms-navigation-item>.ms-navigation-button .icon{color:rgba(255,255,255,.7);margin:0 16px 0 0}.ms-navigation .ms-navigation-node .ms-navigation-item>.ms-navigation-button span{white-space:nowrap;overflow:hidden;opacity:1;transition:opacity .25s ease-in-out .1s}.ms-navigation .ms-navigation-node .ms-navigation-item>.ms-navigation-button a{white-space:nowrap;overflow:hidden;opacity:1;transition:opacity .25s ease-in-out .1s}.ms-navigation .ms-navigation-node .ms-navigation-item>.ms-navigation-button .arrow{margin:0;opacity:1;transition:transform .3s ease-in-out,opacity .25s ease-in-out .1s}.ms-navigation .ms-navigation-node .ms-navigation-item>.ms-navigation-button .badge{position:absolute;top:50%;right:16px;min-width:20px;height:20px;line-height:20px;padding:0 7px;font-size:11px;font-weight:700;border-radius:20px;transform:translateY(-50%);transition:opacity .2s ease-in-out .1s}.ms-navigation .ms-navigation-node .ms-navigation-item>.ms-navigation-button.active{color:#fff}.ms-navigation .ms-navigation-node .ms-navigation-item>.ms-navigation-button.active .icon{color:#fff}.ms-navigation .ms-navigation-node .ms-navigation-item>.ms-navigation-button.active .badge{background:#fff!important;color:rgba(0,0,0,.87)!important}.ms-navigation .ms-navigation-node:not(.collapsed)>.ms-navigation-item>.ms-navigation-button .arrow{transform:rotate(90deg)}.ms-navigation .ms-navigation-node.group>.ms-navigation-item{font-size:12px;font-weight:500;margin-top:8px;cursor:auto;background:0 0!important;text-transform:uppercase;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.ms-navigation .ms-navigation-node.group>.ms-navigation-item>.ms-navigation-button{height:32px;line-height:32px;color:rgba(255,255,255,.3)}.ms-navigation .ms-navigation-node:not(.group).has-children:not(.collapsed){background-color:rgba(0,0,0,.12)}.ms-navigation .ms-navigation-node:not(.group).has-children.collapsing{background-color:rgba(0,0,0,.12)}.ms-navigation .ms-navigation-node:not(.group).has-children .has-children:not(.collapsed){background:0 0}.ms-navigation li .ms-navigation-button{padding-left:24px}.ms-navigation li li .ms-navigation-button{padding-left:56px}.ms-navigation li li li .ms-navigation-button{padding-left:72px}.ms-navigation li li li li .ms-navigation-button{padding-left:88px}.ms-navigation li li li li li .ms-navigation-button{padding-left:104px}.ms-navigation li.group .ms-navigation-button{padding-left:24px}.ms-navigation li.group li .ms-navigation-button{padding-left:24px}.ms-navigation li.group li li .ms-navigation-button{padding-left:56px}.ms-navigation li.group li li li .ms-navigation-button{padding-left:72px}.ms-navigation li.group li li li li .ms-navigation-button{padding-left:88px}#horizontal-navigation{height:64px;min-height:64px;max-height:64px;background:#fff;z-index:54}#horizontal-navigation .ms-navigation-horizontal{display:flex;position:relative;user-select:none}#horizontal-navigation .ms-navigation-horizontal li,#horizontal-navigation .ms-navigation-horizontal ul{padding:0;margin:0;list-style:none}#horizontal-navigation .ms-navigation-horizontal .horizontal{display:flex;flex:1}#horizontal-navigation .ms-navigation-horizontal .horizontal li{position:relative;cursor:pointer}#horizontal-navigation .ms-navigation-horizontal .horizontal li:not(.active):hover{background:rgba(0,0,0,.12)}#horizontal-navigation .ms-navigation-horizontal .horizontal>li>.ms-navigation-horizontal-item>.ms-navigation-horizontal-button{display:block;float:left;padding:12px 14px}#horizontal-navigation .ms-navigation-horizontal .horizontal>li>.ms-navigation-horizontal-item>.ms-navigation-horizontal-button .arrow{display:none}#horizontal-navigation .ms-navigation-horizontal .horizontal>li>.ms-navigation-horizontal-item>.ms-navigation-horizontal-button.active{background:0 0;border-bottom:2px solid}#horizontal-navigation .ms-navigation-horizontal .horizontal>li:last-child{margin-right:0}#horizontal-navigation .ms-navigation-horizontal .horizontal>li li .ms-navigation-horizontal-item .ms-navigation-horizontal-button.active{color:#fff!important}#horizontal-navigation .ms-navigation-horizontal .horizontal .has-children ul{display:none;position:absolute;background:#fff;z-index:999;min-width:200px;box-shadow:0 5px 5px -3px rgba(0,0,0,.2),0 8px 10px 1px rgba(0,0,0,.14),0 3px 14px 2px rgba(0,0,0,.12);top:0;left:100%}#horizontal-navigation .ms-navigation-horizontal .horizontal .has-children:hover>ul{display:block}#horizontal-navigation .ms-navigation-horizontal .horizontal>.has-children>ul{top:100%;left:0}#horizontal-navigation .ms-navigation-horizontal .horizontal .ms-navigation-horizontal-item .ms-navigation-horizontal-button{display:flex;align-items:center;width:100%;color:rgba(0,0,0,.87);white-space:nowrap;padding:14px 16px;text-decoration:none}#horizontal-navigation .ms-navigation-horizontal .horizontal .ms-navigation-horizontal-item .ms-navigation-horizontal-button .icon{color:rgba(0,0,0,.54);margin-right:8px}#horizontal-navigation .ms-navigation-horizontal .horizontal .ms-navigation-horizontal-item .ms-navigation-horizontal-button .badge{min-width:20px;height:20px;line-height:20px;padding:0 7px;font-size:11px;font-weight:700;border-radius:20px;transition:opacity .2s ease-in-out .1s}#horizontal-navigation .ms-navigation-horizontal .horizontal .ms-navigation-horizontal-item .ms-navigation-horizontal-button .arrow{margin-left:8px}#horizontal-navigation .ms-navigation-horizontal .horizontal .ms-navigation-horizontal-item .ms-navigation-horizontal-button.active .badge{background:#fff!important;color:rgba(0,0,0,.87)!important}#horizontal-navigation .ms-navigation-horizontal .horizontal .ms-navigation-horizontal-item .ms-navigation-horizontal-button.active .icon{color:#fff}@media only screen and (min-width:960px){body.ms-navigation-folded:not(.ms-navigation-folded-open) .ms-navigation .animate-height{transition:none}body.ms-navigation-folded:not(.ms-navigation-folded-open) .ms-navigation .ms-navigation-node .ms-navigation-item .ms-navigation-button .icon{margin:0}body.ms-navigation-folded:not(.ms-navigation-folded-open) .ms-navigation .ms-navigation-node .ms-navigation-item .ms-navigation-button .arrow,body.ms-navigation-folded:not(.ms-navigation-folded-open) .ms-navigation .ms-navigation-node .ms-navigation-item .ms-navigation-button .badge,body.ms-navigation-folded:not(.ms-navigation-folded-open) .ms-navigation .ms-navigation-node .ms-navigation-item .ms-navigation-button .title{opacity:0;visibility:hidden}body.ms-navigation-folded:not(.ms-navigation-folded-open) .ms-navigation .ms-navigation-node.group>.ms-navigation-item .ms-navigation-button:before{content:'';display:block;position:relative;width:16px;border-top:1px solid rgba(255,255,255,.12)}body.ms-navigation-folded:not(.ms-navigation-folded-open) #ms-navigation-fold-expander{position:absolute;top:0;right:0;bottom:0;left:0;z-index:999}body.ms-navigation-folded #ms-navigation-fold-collapser{position:absolute;top:0;right:0;bottom:0;left:0;z-index:59}}@media only screen and (max-width:960px){body.ms-navigation-horizontal-mobile-menu-active #horizontal-navigation .navigation-toggle{height:64px;margin-right:16px}body.ms-navigation-horizontal-mobile-menu-active #horizontal-navigation .navigation-toggle .md-button{margin:0;width:64px;height:64px}body.ms-navigation-horizontal-mobile-menu-active #horizontal-navigation .ms-navigation-horizontal{display:block!important;background:#fff}#horizontal-navigation{z-index:60}#horizontal-navigation .ms-navigation-horizontal{position:absolute;display:none;top:0;right:0;bottom:0;left:0;padding:0 0 16px 0;z-index:9998;overflow-x:hidden;overflow-y:scroll}#horizontal-navigation .ms-navigation-horizontal .horizontal{flex-direction:column;min-height:100%;width:100%}#horizontal-navigation .ms-navigation-horizontal .horizontal li:not(.active):hover{background:0 0}#horizontal-navigation .ms-navigation-horizontal .horizontal li:not(.active) .ms-navigation-horizontal-item{margin:4px}#horizontal-navigation .ms-navigation-horizontal .horizontal li:not(.active) .ms-navigation-horizontal-item:hover{background:rgba(0,0,0,.12)}#horizontal-navigation .ms-navigation-horizontal .horizontal>li{padding:0 12px}#horizontal-navigation .ms-navigation-horizontal .horizontal>li>.ms-navigation-horizontal-item>.ms-navigation-horizontal-button{display:flex;float:none}#horizontal-navigation .ms-navigation-horizontal .horizontal>li>.ms-navigation-horizontal-item>.ms-navigation-horizontal-button .arrow{display:block}#horizontal-navigation .ms-navigation-horizontal .horizontal .has-children ul{position:relative;top:0;left:0;box-shadow:none}#horizontal-navigation .ms-navigation-horizontal .horizontal .has-children:hover>ul{display:none}#horizontal-navigation .ms-navigation-horizontal .horizontal .has-children .expanded>.ms-navigation-horizontal-button .arrow{transform:rotate(90deg)}#horizontal-navigation .ms-navigation-horizontal .horizontal .has-children .expanded+ul{display:block;margin-left:16px}#horizontal-navigation .ms-navigation-horizontal .horizontal .ms-navigation-horizontal-item{min-height:48px;height:48px}}md-dialog.md-phonebar-dialog{max-width:720px;width:720px}md-dialog.md-phonebar-dialog md-dialog-content{display:block;position:relative;height:500px}md-dialog.md-phonebar-dialog md-toolbar .title{font-size:17px}md-dialog.md-phonebar-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.md-phonebar-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}md-dialog.md-phonebar-dialog md-tabs{position:static}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}.ms-phonebar{height:64px;font-size:13px}.ms-phonebar .phonebar-container{height:64px;padding:0}.ms-phonebar .phonebar-container .quantity-indicator{display:inline-block;vertical-align:middle;width:8px;height:8px;border-radius:4px;margin-right:5px;margin-left:5px}.ms-phonebar .phonebar-container .sessions{overflow-x:auto}.ms-phonebar .phonebar-container .session{border-radius:3px;border:1px solid #dcdcdc;margin-left:3px;cursor:pointer}.ms-phonebar .phonebar-container .session-info{padding-left:3px;padding-right:3px;color:grey}.ms-phonebar .phonebar-container .session-button{border:1px solid grey;margin:3px}.ms-phonebar .phonebar-container .button-bar{border:1px solid grey}.ms-phonebar .phonebar-container .num-pad{position:fixed;border-radius:3px;border:1px solid #9e9e9e;top:80px;left:80px}.ms-phonebar .phonebar-container .num-pad-logo{height:40px;width:42px}.ms-phonebar .phonebar-container p{margin:0;padding:0 0 10px 0;line-height:10px;font-size:10px}.ms-phonebar .phonebar-container .span4{width:50px;float:left;margin:8px}.ms-phonebar .phonebar-container .num{border:1px solid #9e9e9e;-webkit-border-radius:5px;-moz-border-radius:5px;border-radius:5px;height:50px;background-color:#fff;color:#333;cursor:pointer}.ms-phonebar .phonebar-container .num:hover{background-color:#9e9e9e;color:#fff;transition-property:background-color .2s linear 0s;-moz-transition:background-color .2s linear 0s;-webkit-transition:background-color .2s linear 0s;-o-transition:background-color .2s linear 0s}.ms-phonebar .phonebar-container .txt{font-size:20px;text-align:center;margin-top:3px;font-family:Lato,sans-serif;color:#333}.ms-phonebar .phonebar-container .small{font-size:15px}.ms-phonebar .phonebar-container .angucomplete-dropdown{top:45px;overflow-y:auto;max-height:200px}.ms-phonebar .phonebar-container .highlight{color:red}.ms-phonebar .phonebar-container .input-number{margin-left:5px;padding:8px;border:1px solid #ccc;border-radius:3px;box-sizing:border-box}.ms-phonebar .phonebar-container .phonebar{position:relative}.ms-phonebar .phonebar-container .phonebar>div{height:64px;min-width:44px}.ms-phonebar .phonebar-container .phonebar>div.dragging{cursor:grabbing}.ms-phonebar .phonebar-container .phonebar>div.dragging .md-ripple-container{display:none}.ms-phonebar .phonebar-container .phonebar>div.ghost .shortcut{opacity:.27}.ms-phonebar .phonebar-container.mobile-bar-active{position:absolute;top:0;right:0;bottom:0;left:0;background:#fff;z-index:99;max-width:none!important}.ms-phonebar .phonebar-container.mobile-bar-active .phonebar,.ms-phonebar .phonebar-container.mobile-bar-active .toggle-mobile-menu{display:flex!important}.ms-phonebar .phonebar-container.mobile-bar-active .toggle-mobile-menu{margin-left:14px}.ms-phonebar .phonebar-container.mobile-bar-active>div{border-right:1px solid rgba(0,0,0,.12)}.quick-filter-container md-select .md-select-value.md-select-placeholder{color:inherit}.quick-filter-container md-select[multiple] md-select-value>:first-child{max-width:250px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;display:block}.ms-responsive-table-wrapper{overflow-x:auto;overflow-y:hidden}.ms-search-bar{height:64px;font-size:13px}.ms-search-bar .ms-search-bar-collapser,.ms-search-bar .ms-search-bar-expander{cursor:pointer;padding:0 20px;margin:0;width:64px!important;height:64px!important;line-height:64px!important}.ms-search-bar .ms-search-bar-loader{width:64px!important;height:64px!important;line-height:64px!important}.ms-search-bar .ms-search-button-expanded{pointer-events:none}.ms-search-bar .ms-search-bar-collapser{display:none}.ms-search-bar input{background-color:transparent;font-size:16px}.ms-search-bar .ms-search-bar-results{position:absolute;top:64px;left:0;right:0;overflow-x:hidden;overflow-y:scroll;background:#fff;max-height:300px;box-shadow:0 1px 8px 0 rgba(0,0,0,.2),0 3px 4px 0 rgba(0,0,0,.14),0 3px 3px -2px rgba(0,0,0,.12)}.ms-search-bar .ms-search-bar-results .no-results{font-size:18px;padding:16px;color:rgba(0,0,0,.54)}.ms-search-bar .ms-search-bar-results .result{position:relative;height:56px;min-height:56px;max-height:56px;padding:16px;cursor:pointer}.ms-search-bar .ms-search-bar-results .result.selected{background:rgba(0,0,0,.07)}.ms-search-bar .ms-search-bar-results .result .icon-container{min-width:32px;margin-right:8px}.ms-search-bar .ms-search-bar-results .result .icon-container .square{width:6px;height:6px}.ms-search-bar .ms-search-bar-results .result .title{font-size:16px}.ms-search-bar .ms-search-bar-results .result .description{padding-top:6px;font-size:14px}.ms-search-bar.expanded{position:absolute;top:0;right:0;bottom:0;left:0;background:#fff;z-index:10}.ms-search-bar.expanded #ms-search-bar-input{display:block}.ms-search-bar.expanded .ms-search-bar-collapser{display:block}.ms-search-bar.down{top:64px;border-bottom:1px rgba(0,0,0,.12) solid}.ms-search-bar[disabled] input{pointer-events:none}body.ms-search-bar-expanded #toolbar{z-index:999!important}@media screen and (max-width:960px){.ms-search-bar-label{padding:0 8px 0 12px}}.ms-shortcuts{height:64px;font-size:13px}.ms-shortcuts .shortcuts-container{height:64px;padding:0 8px;max-width:400px}.ms-shortcuts .shortcuts-container .shortcuts{position:relative;overflow-x:scroll}.ms-shortcuts .shortcuts-container .shortcuts>div{height:64px;min-width:44px}.ms-shortcuts .shortcuts-container .shortcuts>div.dragging{cursor:grabbing}.ms-shortcuts .shortcuts-container .shortcuts>div.dragging .md-ripple-container{display:none}.ms-shortcuts .shortcuts-container .shortcuts>div.ghost .shortcut{opacity:.27}.ms-shortcuts .shortcuts-container .shortcuts>div .shortcut{margin:2px}.ms-shortcuts .shortcuts-container .shortcuts>div .shortcut .first-letter{display:inline-block;vertical-align:middle;font-size:20px;text-transform:uppercase;color:rgba(0,0,0,.54)}.ms-shortcuts .shortcuts-container .shortcut-menu{margin:0}.ms-shortcuts .shortcuts-container.mobile-bar-active{position:absolute;top:0;right:0;bottom:0;left:0;background:#fff;z-index:99;max-width:none!important}.ms-shortcuts .shortcuts-container.mobile-bar-active .shortcut-menu,.ms-shortcuts .shortcuts-container.mobile-bar-active .shortcuts,.ms-shortcuts .shortcuts-container.mobile-bar-active .toggle-mobile-menu{display:flex!important}.ms-shortcuts .shortcuts-container.mobile-bar-active .toggle-mobile-menu{margin-left:14px}.ms-shortcuts .shortcuts-container.mobile-bar-active>div{border-right:1px solid rgba(0,0,0,.12)}#ms-shortcut-add-menu{position:relative;width:240px;min-width:240px;max-width:240px}#ms-shortcut-add-menu .add-shortcut-button{width:48px;height:48px;padding:0 12px;margin:0}#ms-shortcut-add-menu .shortcut-search{height:45px;padding:0 8px}#ms-shortcut-add-menu .shortcut-search .search-icon{width:40px;height:40px;line-height:48px}#ms-shortcut-add-menu .shortcut-search .shortcut-loader{padding:10px}#ms-shortcut-add-menu .shortcut-search input{padding:8px}#ms-shortcut-add-menu .results{position:relative;overflow-y:scroll;max-height:233px;margin-top:8px;padding-top:8px;border-top:1px solid rgba(0,0,0,.12)}#ms-shortcut-add-menu .results .no-results{font-size:18px;padding:16px;color:rgba(0,0,0,.54)}#ms-shortcut-add-menu .results .result{position:relative;min-height:56px;padding:16px;cursor:pointer}#ms-shortcut-add-menu .results .result.selected{background:rgba(0,0,0,.07)}#ms-shortcut-add-menu .results .result .icon-container{min-width:32px;margin-right:8px}#ms-shortcut-add-menu .results .result .icon-container .square{width:6px;height:6px}#ms-shortcut-add-menu .results .result .title{font-size:16px}#ms-shortcut-add-menu .results .result .description{padding-top:6px;font-size:14px}#splash-screen{display:block;position:absolute;top:0;left:0;right:0;bottom:0;background-color:#3c4252;z-index:99999}#splash-screen.ng-leave{opacity:1;transition:all linear .2s}#splash-screen.ng-leave-active{opacity:0}#splash-screen .center{display:block;width:100%;position:absolute;top:50%;transform:translateY(-50%)}#splash-screen .logo{width:96px;height:96px;line-height:96px;margin:0 auto;font-family:Helvetica Neue,Helvetica,Arial,sans-serif;font-size:56px;text-align:center;border-radius:2px;background-color:#039be5;color:#fff;box-shadow:0 2px 14px 0 rgba(0,0,0,.22)}#splash-screen .spinner-wrapper{display:block;position:relative;width:100%;min-height:100px;height:100px}#splash-screen .spinner-wrapper .spinner{position:absolute;overflow:hidden;left:50%;margin-left:-50px;animation:outer-rotate 2.91667s linear infinite}#splash-screen .spinner-wrapper .spinner .inner{width:100px;height:100px;position:relative;animation:sporadic-rotate 5.25s cubic-bezier(.35,0,.25,1) infinite}#splash-screen .spinner-wrapper .spinner .inner .gap{position:absolute;left:49px;right:49px;top:0;bottom:0;border-top:10px solid;box-sizing:border-box}#splash-screen .spinner-wrapper .spinner .inner .left,#splash-screen .spinner-wrapper .spinner .inner .right{position:absolute;top:0;height:100px;width:50px;overflow:hidden}#splash-screen .spinner-wrapper .spinner .inner .left .half-circle,#splash-screen .spinner-wrapper .spinner .inner .right .half-circle{position:absolute;top:0;width:100px;height:100px;box-sizing:border-box;border:10px solid #4285f4;border-bottom-color:transparent;border-radius:50%}#splash-screen .spinner-wrapper .spinner .inner .left{left:0}#splash-screen .spinner-wrapper .spinner .inner .left .half-circle{left:0;border-right-color:transparent;animation:left-wobble 1.3125s cubic-bezier(.35,0,.25,1) infinite;-webkit-animation:left-wobble 1.3125s cubic-bezier(.35,0,.25,1) infinite}#splash-screen .spinner-wrapper .spinner .inner .right{right:0}#splash-screen .spinner-wrapper .spinner .inner .right .half-circle{right:0;border-left-color:transparent;animation:right-wobble 1.3125s cubic-bezier(.35,0,.25,1) infinite;-webkit-animation:right-wobble 1.3125s cubic-bezier(.35,0,.25,1) infinite}@keyframes outer-rotate{0%{transform:rotate(0) scale(.5)}100%{transform:rotate(360deg) scale(.5)}}@keyframes left-wobble{0%,100%{transform:rotate(130deg)}50%{transform:rotate(-5deg)}}@keyframes right-wobble{0%,100%{transform:rotate(-130deg)}50%{transform:rotate(5deg)}}@keyframes sporadic-rotate{12.5%{transform:rotate(135deg)}25%{transform:rotate(270deg)}37.5%{transform:rotate(405deg)}50%{transform:rotate(540deg)}62.5%{transform:rotate(675deg)}75%{transform:rotate(810deg)}87.5%{transform:rotate(945deg)}100%{transform:rotate(1080deg)}}.ms-stepper .ms-stepper-horizontal{background:#fff;box-shadow:0 1px 3px 0 rgba(0,0,0,.2),0 1px 1px 0 rgba(0,0,0,.14),0 2px 1px -1px rgba(0,0,0,.12)}.ms-stepper .ms-stepper-horizontal .ms-stepper-navigation-wrapper .ms-stepper-navigation{height:72px;min-height:72px;max-height:72px;background:#fff;box-shadow:0 1px 3px 0 rgba(0,0,0,.2),0 1px 1px 0 rgba(0,0,0,.14),0 2px 1px -1px rgba(0,0,0,.12)}.ms-stepper .ms-stepper-horizontal .ms-stepper-navigation-wrapper .ms-stepper-navigation .ms-stepper-navigation-item{display:flex;flex-direction:row;align-items:center;position:relative;height:72px;min-height:72px;max-height:72px;line-height:24px;margin:0;padding:24px;border-radius:0;cursor:pointer;font-size:14px;text-transform:none}.ms-stepper .ms-stepper-horizontal .ms-stepper-navigation-wrapper .ms-stepper-navigation .ms-stepper-navigation-item:after,.ms-stepper .ms-stepper-horizontal .ms-stepper-navigation-wrapper .ms-stepper-navigation .ms-stepper-navigation-item:before{content:'';display:block;position:absolute;top:50%;width:24px;border-bottom:1px solid rgba(0,0,0,.12)}.ms-stepper .ms-stepper-horizontal .ms-stepper-navigation-wrapper .ms-stepper-navigation .ms-stepper-navigation-item:before{left:0}.ms-stepper .ms-stepper-horizontal .ms-stepper-navigation-wrapper .ms-stepper-navigation .ms-stepper-navigation-item:after{right:0}.ms-stepper .ms-stepper-horizontal .ms-stepper-navigation-wrapper .ms-stepper-navigation .ms-stepper-navigation-item:first-child:before{display:none}.ms-stepper .ms-stepper-horizontal .ms-stepper-navigation-wrapper .ms-stepper-navigation .ms-stepper-navigation-item:last-child:after{display:none}.ms-stepper .ms-stepper-horizontal .ms-stepper-navigation-wrapper .ms-stepper-navigation .ms-stepper-navigation-item.current .title{font-weight:600;color:rgba(0,0,0,.87)}.ms-stepper .ms-stepper-horizontal .ms-stepper-navigation-wrapper .ms-stepper-navigation .ms-stepper-navigation-item.disabled{cursor:default}.ms-stepper .ms-stepper-horizontal .ms-stepper-navigation-wrapper .ms-stepper-navigation .ms-stepper-navigation-item.disabled .step{background:rgba(0,0,0,.12)}.ms-stepper .ms-stepper-horizontal .ms-stepper-navigation-wrapper .ms-stepper-navigation .ms-stepper-navigation-item.disabled .title{color:rgba(0,0,0,.27)}.ms-stepper .ms-stepper-horizontal .ms-stepper-navigation-wrapper .ms-stepper-navigation .ms-stepper-navigation-item.disabled .subtitle{color:rgba(0,0,0,.27)}.ms-stepper .ms-stepper-horizontal .ms-stepper-navigation-wrapper .ms-stepper-navigation .ms-stepper-navigation-item.optional{padding:16px 24px}.ms-stepper .ms-stepper-horizontal .ms-stepper-navigation-wrapper .ms-stepper-navigation .ms-stepper-navigation-item .step{width:24px;min-width:24px;height:24px;border-radius:50%;margin:0 8px 0 16px;color:#fff}.ms-stepper .ms-stepper-horizontal .ms-stepper-navigation-wrapper .ms-stepper-navigation .ms-stepper-navigation-item .step .icon{color:#fff;font-weight:700;line-height:24px!important}.ms-stepper .ms-stepper-horizontal .ms-stepper-navigation-wrapper .ms-stepper-navigation .ms-stepper-navigation-item .title{padding-right:16px;color:rgba(0,0,0,.54)}.ms-stepper .ms-stepper-horizontal .ms-stepper-navigation-wrapper .ms-stepper-navigation .ms-stepper-navigation-item .subtitle{font-size:12px;padding-right:16px;color:rgba(0,0,0,.54);line-height:1}.ms-stepper .ms-stepper-horizontal .ms-stepper-steps{padding:24px 16px}.ms-stepper .ms-stepper-horizontal .ms-stepper-controls{padding:0 16px 16px 16px}.ms-stepper .ms-stepper-horizontal .ms-stepper-controls .ms-stepper-dots{display:none;align-items:center;justify-content:center;padding:0 16px}.ms-stepper .ms-stepper-horizontal .ms-stepper-controls .ms-stepper-dots span{width:5px;height:5px;margin:0 4px;border-radius:50%}.ms-stepper .ms-stepper-horizontal .ms-stepper-controls .ms-stepper-dots span:not(.md-accent-bg){background:rgba(0,0,0,.12)}.ms-stepper .ms-stepper-horizontal .ms-stepper-controls .ms-stepper-dots span.selected{width:8px;height:8px}@media screen and (max-width:600px){.ms-stepper .ms-stepper-horizontal .ms-stepper-navigation-wrapper .ms-stepper-navigation{display:none}.ms-stepper .ms-stepper-horizontal .ms-stepper-controls .ms-stepper-dots{display:flex}}.ms-stepper .ms-stepper-vertical{position:relative;background:#fff;box-shadow:0 1px 3px 0 rgba(0,0,0,.2),0 1px 1px 0 rgba(0,0,0,.14),0 2px 1px -1px rgba(0,0,0,.12)}.ms-stepper .ms-stepper-vertical .ms-stepper-vertical-line{display:block;position:absolute;width:1px;top:32px;bottom:32px;left:43px;border-left:1px solid rgba(0,0,0,.12)}.ms-stepper .ms-stepper-vertical .ms-stepper-steps{padding:8px 0}.ms-stepper .ms-stepper-vertical .ms-stepper-steps .ms-stepper-step{display:block}.ms-stepper .ms-stepper-vertical .ms-stepper-steps .ms-stepper-step .ms-stepper-navigation-item{display:flex;flex-direction:row;align-items:center;position:relative;width:100%;height:72px;min-height:72px;max-height:72px;line-height:24px;margin:0;padding:0 24px;border-radius:0;cursor:pointer;font-size:14px;text-transform:none}.ms-stepper .ms-stepper-vertical .ms-stepper-steps .ms-stepper-step .ms-stepper-navigation-item:first-child:before{display:none}.ms-stepper .ms-stepper-vertical .ms-stepper-steps .ms-stepper-step .ms-stepper-navigation-item:last-child:after{display:none}.ms-stepper .ms-stepper-vertical .ms-stepper-steps .ms-stepper-step .ms-stepper-navigation-item:hover:not(.disabled) .step{background-color:#ececec;border-color:#ececec}.ms-stepper .ms-stepper-vertical .ms-stepper-steps .ms-stepper-step .ms-stepper-navigation-item.current .title{font-weight:600;color:rgba(0,0,0,.87)}.ms-stepper .ms-stepper-vertical .ms-stepper-steps .ms-stepper-step .ms-stepper-navigation-item.disabled{cursor:default}.ms-stepper .ms-stepper-vertical .ms-stepper-steps .ms-stepper-step .ms-stepper-navigation-item.disabled .title{color:rgba(0,0,0,.27)}.ms-stepper .ms-stepper-vertical .ms-stepper-steps .ms-stepper-step .ms-stepper-navigation-item.disabled .subtitle{color:rgba(0,0,0,.27)}.ms-stepper .ms-stepper-vertical .ms-stepper-steps .ms-stepper-step .ms-stepper-navigation-item.optional{padding:16px 24px}.ms-stepper .ms-stepper-vertical .ms-stepper-steps .ms-stepper-step .ms-stepper-navigation-item .step{width:40px;min-width:40px;height:40px;margin:0 16px 0 0;border-radius:50%;background:#fff;border:8px solid #fff;color:#fff;transition:border-color .4s cubic-bezier(.25,.8,.25,1),background-color .4s cubic-bezier(.25,.8,.25,1)}.ms-stepper .ms-stepper-vertical .ms-stepper-steps .ms-stepper-step .ms-stepper-navigation-item .step .icon{font-weight:700;line-height:28px!important}.ms-stepper .ms-stepper-vertical .ms-stepper-steps .ms-stepper-step .ms-stepper-navigation-item .title{padding-right:16px;color:rgba(0,0,0,.54)}.ms-stepper .ms-stepper-vertical .ms-stepper-steps .ms-stepper-step .ms-stepper-navigation-item .subtitle{font-size:12px;padding-right:16px;color:rgba(0,0,0,.54);line-height:1}.ms-stepper .ms-stepper-vertical .ms-stepper-steps .ms-stepper-step .ms-stepper-step-content{padding:0 24px 16px 64px}.ms-stepper .ms-stepper-vertical .ms-stepper-steps .ms-stepper-step .ms-stepper-controls{padding:0 16px 16px 56px}.ms-tab-scroll .scroll-arrow{height:inherit;padding:0}.ms-tab-scroll .bar-container{overflow:hidden}.ms-tab-scroll .scroll-container{overflow-x:hidden;overflow-y:hidden;transition:transform .2s ease-in-out}.ms-timeline .ms-timeline-loader{position:relative;display:flex;align-items:center;justify-content:center;width:56px;height:56px;margin:0 auto;background:#fff;font-weight:500;opacity:0;z-index:11;border-radius:50%}.ms-timeline .ms-timeline-loader.show{opacity:1}.ms-timeline .ms-timeline-loader .spinner{width:24px;height:24px;border:3px solid rgba(255,255,255,.35);border-top-color:#fff;border-radius:50%}.ms-widget .ms-widget-front{box-shadow:0 1px 3px 0 rgba(0,0,0,.2),0 1px 1px 0 rgba(0,0,0,.14),0 2px 1px -1px rgba(0,0,0,.12)}.ms-widget .ms-widget-back{box-shadow:0 1px 3px 0 rgba(0,0,0,.2),0 1px 1px 0 rgba(0,0,0,.14),0 2px 1px -1px rgba(0,0,0,.12)}.ms-widget.sidenav-widget .ms-widget-back,.ms-widget.sidenav-widget .ms-widget-front{box-shadow:none}.ms-widget .flip-to-front{position:absolute;top:0;right:0}.ms-widget .c3{height:100%}.ms-widget .chart-fill-8{margin:0 -8px -8px -8px}.ms-widget .chart-fill-16{margin:0 -16px -16px -16px}.ms-widget .chart-fill-24{margin:0 -24px -24px -24px}.ms-widget .chart-fill-32{margin:0 -32px -32px -32px}.ms-widget .chart-fill-40{margin:0 -40px -40px -40px}.ms-widget .chart-fill-48{margin:0 -48px -48px -48px}.ms-widget .chart-fill-56{margin:0 -56px -56px -56px}.ms-widget .chart-fill-64{margin:0 -64px -64px -64px}.ms-widget .chart-fill-72{margin:0 -72px -72px -72px}.ms-widget .chart-fill-80{margin:0 -80px -80px -80px}.ms-widget{position:relative;font-size:1.3rem;perspective:3000px;padding:12px}.ms-widget .ms-widget-front{display:flex;flex-direction:column;flex:1 1 auto;position:relative;overflow:hidden;visibility:visible;width:100%;opacity:1;z-index:10;border-radius:2px;transition:transform .5s ease-out 0s,visibility 0s ease-in .2s,opacity 0s ease-in .2s;transform:rotateY(0);backface-visibility:hidden}.ms-widget .ms-widget-back{display:block;position:absolute;overflow:hidden;visibility:hidden;opacity:0;z-index:10;top:12px;right:12px;bottom:12px;left:12px;border-radius:2px;transition:transform .5s ease-out 0s,visibility 0s ease-in .2s,opacity 0s ease-in .2s;transform:rotateY(180deg);backface-visibility:hidden}.ms-widget .md-button{margin:0}.ms-widget .md-button.md-icon-button{margin:0}.ms-widget.flipped .ms-widget-front{visibility:hidden;opacity:0;transform:rotateY(180deg)}.ms-widget.flipped .ms-widget-back{display:block;visibility:visible;opacity:1;transform:rotateY(360deg)}.ms-widget.sidenav-widget{padding:0}.ms-widget.ar-2-1 .widget{padding:0;position:relative}.ms-widget.ar-2-1 .widget:before{display:block;content:'';width:100%;padding-top:50%}.ms-widget.ar-2-1 .widget>.widget{position:absolute;top:8px;left:8px;right:8px;bottom:8px}.ms-widget.ar-1-1 .widget{padding:0;position:relative}.ms-widget.ar-1-1 .widget:before{display:block;content:'';width:100%;padding-top:100%}.ms-widget.ar-1-1 .widget>.widget{position:absolute;top:8px;left:8px;right:8px;bottom:8px}.ms-theme-options .ms-theme-options-button{position:absolute;top:160px;right:0;z-index:50;box-shadow:0 2px 4px -1px rgba(0,0,0,.2),0 4px 5px 0 rgba(0,0,0,.14),0 1px 10px 0 rgba(0,0,0,.12);width:48px;height:48px;line-height:48px;text-align:center;cursor:pointer;border-radius:0;margin:0;pointer-events:auto;opacity:.75}.ms-theme-options .ms-theme-options-button:hover{opacity:1}.ms-theme-options md-sidenav{width:384px;min-width:384px;max-width:384px}.ms-theme-options md-sidenav .ms-theme-options-list{background:#fff;z-index:12;pointer-events:auto}.ms-theme-options md-sidenav .ms-theme-options-list .theme-option{padding:16px}.ms-theme-options md-sidenav .ms-theme-options-list .theme-option.layout-options md-radio-button{width:160px;max-width:160px;margin:8px 8px 16px 8px}.ms-theme-options md-sidenav .ms-theme-options-list .theme-option.layout-options md-radio-button.md-checked ._md-label img,.ms-theme-options md-sidenav .ms-theme-options-list .theme-option.layout-options md-radio-button:hover ._md-label img{opacity:1;box-shadow:0 5px 5px -3px rgba(0,0,0,.2),0 8px 10px 1px rgba(0,0,0,.14),0 3px 14px 2px rgba(0,0,0,.12)}.ms-theme-options md-sidenav .ms-theme-options-list .theme-option.layout-options md-radio-button ._md-container{display:none}.ms-theme-options md-sidenav .ms-theme-options-list .theme-option.layout-options md-radio-button ._md-label{margin-left:0}.ms-theme-options md-sidenav .ms-theme-options-list .theme-option.layout-options md-radio-button ._md-label img{opacity:.8;margin-bottom:8px}.ms-theme-options md-sidenav .ms-theme-options-list .theme-option.color-palettes md-menu-item{max-width:192px}.ms-theme-options md-sidenav .ms-theme-options-list .theme-option.color-palettes .theme-button{border-bottom:16px solid;text-align:left;width:101px;height:88px;box-shadow:none;opacity:.8}.ms-theme-options md-sidenav .ms-theme-options-list .theme-option.color-palettes .theme-button.active,.ms-theme-options md-sidenav .ms-theme-options-list .theme-option.color-palettes .theme-button:hover{opacity:1;box-shadow:0 5px 5px -3px rgba(0,0,0,.2),0 8px 10px 1px rgba(0,0,0,.14),0 3px 14px 2px rgba(0,0,0,.12)}.ms-theme-options md-sidenav .ms-theme-options-list .theme-option md-radio-button{margin:8px}.ms-theme-options md-sidenav .ms-theme-options-list .theme-option .option-title{font-size:14px;font-weight:500;padding:0 8px 12px 8px}#error-404 .content{width:90%;max-width:512px;margin-top:128px}#error-404 .content .error-code{font-size:112px;text-align:center;line-height:1;margin-bottom:16px;font-weight:500}#error-404 .content .message{font-size:24px;text-align:center;color:rgba(0,0,0,.54)}#error-404 .content .search{width:100%;height:56px;line-height:56px;margin:48px auto 16px auto;padding:16px;background:#fff}#error-404 .content .search input{padding:0 0 0 16px}#error-404 .content .back-link{font-size:15px;text-align:center}#error-500 .content{width:90%;max-width:512px;margin-top:128px}#error-500 .content .error-code{font-size:112px;line-height:1;text-align:center;margin-bottom:16px;font-weight:500}#error-500 .content .message{font-size:24px;text-align:center;color:rgba(0,0,0,.54)}#error-500 .content .sub-message{font-size:17px;text-align:center;color:rgba(0,0,0,.54);margin:16px auto 48px auto}#error-500 .content .report-link{text-align:center;font-size:15px}#forgot-password{height:100%;background:url(/assets/images/backgrounds/tech.png) no-repeat;background-size:cover}#forgot-password #forgot-password-form-wrapper{flex:1 0 auto;padding:32px}#forgot-password #forgot-password-form-wrapper #forgot-password-form{width:384px;max-width:384px;padding:32px;text-align:center;background:#fff}#forgot-password #forgot-password-form-wrapper #forgot-password-form .logo{width:128px;height:128px;line-height:128px;font-size:86px;font-weight:500;margin:32px auto;color:#fff;border-radius:2px}#forgot-password #forgot-password-form-wrapper #forgot-password-form .title{font-size:17px;margin:16px 0 32px 0}#forgot-password #forgot-password-form-wrapper #forgot-password-form .logo_login{max-height:200px}#forgot-password #forgot-password-form-wrapper #forgot-password-form form{width:100%;text-align:left}#forgot-password #forgot-password-form-wrapper #forgot-password-form form .submit-button{width:220px;margin:16px auto;display:block}#forgot-password #forgot-password-form-wrapper #forgot-password-form .login{margin:32px auto 24px auto;width:250px;font-weight:500}#forgot-password #forgot-password-form-wrapper #forgot-password-form .login .text{margin-right:8px}@media screen and (max-width:600px){#forgot-password #forgot-password-form-wrapper{padding:16px}#forgot-password #forgot-password-form-wrapper #forgot-password-form{padding:24px;width:100%}#forgot-password #forgot-password-form-wrapper #forgot-password-form form .md-button{width:90%}}#login{height:100%;background:url(/assets/images/backgrounds/tech.png) no-repeat;background-size:cover}#login #login-form-wrapper{flex:1 0 auto;padding:32px}#login #login-form-wrapper #login-form{width:384px;max-width:384px;padding:32px;background:#fff;text-align:center}#login #login-form-wrapper #login-form .logo{width:128px;height:128px;line-height:128px;font-size:86px;font-weight:500;margin:32px auto;color:#fff;border-radius:2px}#login #login-form-wrapper #login-form .title{font-size:17px;margin:16px 0 32px 0}#login #login-form-wrapper #login-form .logo_login{max-height:200px}#login #login-form-wrapper #login-form form{width:100%;text-align:left}#login #login-form-wrapper #login-form form md-checkbox{margin:0}#login #login-form-wrapper #login-form form .remember-forgot-password{font-size:13px;margin-top:8px}#login #login-form-wrapper #login-form form .remember-forgot-password .remember-me{margin-bottom:16px}#login #login-form-wrapper #login-form form .remember-forgot-password .forgot-password{font-size:13px;font-weight:500;margin-bottom:16px}#login #login-form-wrapper #login-form form .submit-button{width:220px;margin:16px auto;display:block}#login #login-form-wrapper #login-form .register{margin:32px auto 24px auto;width:250px;font-weight:500}#login #login-form-wrapper #login-form .register .text{margin-right:8px}#login #login-form-wrapper #login-form .separator{font-size:15px;font-weight:600;margin:24px auto 16px auto;position:relative;overflow:hidden;width:100px;color:rgba(0,0,0,.54)}#login #login-form-wrapper #login-form .separator .text{display:inline-block;vertical-align:baseline;position:relative;padding:0 8px;z-index:9999}#login #login-form-wrapper #login-form .separator .text:after,#login #login-form-wrapper #login-form .separator .text:before{content:'';display:block;width:30px;position:absolute;top:10px;border-top:1px solid rgba(0,0,0,.12)}#login #login-form-wrapper #login-form .separator .text:before{right:100%}#login #login-form-wrapper #login-form .separator .text:after{left:100%}#login #login-form-wrapper #login-form .md-button.facebook,#login #login-form-wrapper #login-form .md-button.google{width:192px;text-transform:none;color:#fff;font-size:13px}#login #login-form-wrapper #login-form .md-button.facebook md-icon,#login #login-form-wrapper #login-form .md-button.google md-icon{color:#fff;margin:0 8px 0 0}#login #login-form-wrapper #login-form .md-button.google{background-color:#d73d32}#login #login-form-wrapper #login-form .md-button.facebook{background-color:#3f5c9a}@media screen and (max-width:600px){#login #login-form-wrapper{padding:16px}#login #login-form-wrapper #login-form{padding:24px;width:100%}#login #login-form-wrapper #login-form form .md-button{width:90%}#login #login-form-wrapper #login-form .md-button.facebook,#login #login-form-wrapper #login-form .md-button.google{width:80%}}md-dialog.extractedReport-dialog{max-width:720px;width:720px}md-dialog.extractedReport-dialog md-dialog-content{display:block;position:relative}md-dialog.extractedReport-dialog md-toolbar .title{font-size:17px}md-dialog.extractedReport-dialog md-input-container textarea{min-height:150px}md-dialog.extractedReport-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.extractedReport-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.extractedReport-dialog .date-container{padding:16px 0 24px 0}md-dialog.extractedReport-dialog .error-list{font-size:13px}md-dialog.extractedReport-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.extractedReport-dialog .error-list .error .message{font-weight:500}md-dialog.extractedReport-dialog .error-list .error .md-button{margin:0}md-dialog.extractedReport-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.extractedReport-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#extractedReports{position:relative}#extractedReports>.header{height:76px;min-height:76px;max-height:76px}#extractedReports>.header .logo .logo-icon{margin:0 16px 0 0}#extractedReports>.header .logo .logo-text{font-size:24px}#extractedReports>.header md-icon{color:#fff}#extractedReports>.header .search-input-wrapper{position:relative}#extractedReports>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#extractedReports>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#extractedReports>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#extractedReports>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#extractedReports>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#extractedReports>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#extractedReports>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#extractedReports>.header.selected-bar .close-button-wrapper{width:244px}#extractedReports>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#extractedReports>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#extractedReports>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#extractedReports #add-extractedReport-button{position:fixed;bottom:8px;right:8px;padding:0}#extractedReports #upload-extractedReport-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.metric-dialog{max-width:720px;width:720px}md-dialog.metric-dialog md-dialog-content{display:block;position:relative}md-dialog.metric-dialog md-toolbar .title{font-size:17px}md-dialog.metric-dialog md-input-container textarea{min-height:150px}md-dialog.metric-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.metric-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.metric-dialog .date-container{padding:16px 0 24px 0}md-dialog.metric-dialog .error-list{font-size:13px}md-dialog.metric-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.metric-dialog .error-list .error .message{font-weight:500}md-dialog.metric-dialog .error-list .error .md-button{margin:0}md-dialog.metric-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.metric-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#metrics{position:relative}#metrics>.header{height:76px;min-height:76px;max-height:76px}#metrics>.header .logo .logo-icon{margin:0 16px 0 0}#metrics>.header .logo .logo-text{font-size:24px}#metrics>.header md-icon{color:#fff}#metrics>.header .search-input-wrapper{position:relative}#metrics>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#metrics>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#metrics>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#metrics>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#metrics>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#metrics>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#metrics>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#metrics>.header.selected-bar .close-button-wrapper{width:244px}#metrics>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#metrics>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#metrics>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#metrics #add-metric-button{position:fixed;bottom:8px;right:8px;padding:0}#metrics #upload-metric-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.report-dialog{max-width:720px;width:720px}md-dialog.report-dialog md-dialog-content{display:block;position:relative}md-dialog.report-dialog md-toolbar .title{font-size:17px}md-dialog.report-dialog md-input-container textarea{min-height:150px}md-dialog.report-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.report-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.report-dialog .date-container{padding:16px 0 24px 0}md-dialog.report-dialog .error-list{font-size:13px}md-dialog.report-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.report-dialog .error-list .error .message{font-weight:500}md-dialog.report-dialog .error-list .error .md-button{margin:0}md-dialog.report-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.report-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.report-dialog{max-width:720px;width:720px}md-dialog.report-dialog md-dialog-content{display:block;position:relative}md-dialog.report-dialog md-toolbar .title{font-size:17px}md-dialog.report-dialog md-input-container textarea{min-height:150px}md-dialog.report-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.report-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.report-dialog .date-container{padding:16px 0 24px 0}md-dialog.report-dialog .error-list{font-size:13px}md-dialog.report-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.report-dialog .error-list .error .message{font-weight:500}md-dialog.report-dialog .error-list .error .md-button{margin:0}md-dialog.report-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.report-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.reportField-dialog{max-width:720px;width:720px}md-dialog.reportField-dialog md-dialog-content{display:block;position:relative}md-dialog.reportField-dialog md-toolbar .title{font-size:17px}md-dialog.reportField-dialog md-input-container textarea{min-height:150px}md-dialog.reportField-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.reportField-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.reportField-dialog .date-container{padding:16px 0 24px 0}md-dialog.reportField-dialog .error-list{font-size:13px}md-dialog.reportField-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.reportField-dialog .error-list .error .message{font-weight:500}md-dialog.reportField-dialog .error-list .error .md-button{margin:0}md-dialog.reportField-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.reportField-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#analytics-report .header{height:76px;min-height:76px;max-height:76px}#analytics-report .header .goto-reports-button{margin-right:16px}#analytics-report .header .report-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#analytics-report .header .report-image img{height:100%;width:auto;max-width:none}#analytics-report .header .subtitle{margin:6px 0 0 0}#analytics-report .report-detail-form-container{padding:24px;margin-bottom:24px}#analytics-report .report-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#analytics-report .report-detail-form-container .handle{cursor:move}#analytics-report .report-detail-form-container md-input-container md-switch{margin:0!important}#analytics-report .report-detail-form-container #report-image-uploader{position:relative}#analytics-report .report-detail-form-container #report-image-uploader.dropping .drop-text{display:flex}#analytics-report .report-detail-form-container #report-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#analytics-report .report-detail-form-container #report-image-uploader .upload-button{margin-bottom:16px}#analytics-report .report-detail-form-container #report-image-uploader .report-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#analytics-report .report-detail-form-container #report-image-uploader .report-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#analytics-report .report-detail-form-container #report-image-uploader .report-image .media{max-height:100%}md-dialog.report-dialog{max-width:720px;width:720px}md-dialog.report-dialog md-dialog-content{display:block;position:relative}md-dialog.report-dialog md-toolbar .title{font-size:17px}md-dialog.report-dialog md-input-container textarea{min-height:150px}md-dialog.report-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.report-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.report-dialog .date-container{padding:16px 0 24px 0}md-dialog.report-dialog .error-list{font-size:13px}md-dialog.report-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.report-dialog .error-list .error .message{font-weight:500}md-dialog.report-dialog .error-list .error .md-button{margin:0}md-dialog.report-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.report-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#reports{position:relative}#reports>.header{height:76px;min-height:76px;max-height:76px}#reports>.header .logo .logo-icon{margin:0 16px 0 0}#reports>.header .logo .logo-text{font-size:24px}#reports>.header md-icon{color:#fff}#reports>.header .search-input-wrapper{position:relative}#reports>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#reports>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#reports>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#reports>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#reports>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#reports>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#reports>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#reports>.header.selected-bar .close-button-wrapper{width:244px}#reports>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#reports>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#reports>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}md-dialog.report-dialog{max-width:720px;width:720px}md-dialog.report-dialog md-dialog-content{display:block;position:relative}md-dialog.report-dialog md-toolbar .title{font-size:17px}md-dialog.report-dialog md-input-container textarea{min-height:150px}md-dialog.report-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.report-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.report-dialog .date-container{padding:16px 0 24px 0}md-dialog.report-dialog .error-list{font-size:13px}md-dialog.report-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.report-dialog .error-list .error .message{font-weight:500}md-dialog.report-dialog .error-list .error .md-button{margin:0}md-dialog.report-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.report-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.web-dialog md-dialog-content{display:block;position:relative}md-dialog.web-dialog md-toolbar .title{font-size:17px}md-dialog.web-dialog md-input-container textarea{min-height:150px}md-dialog.web-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.web-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.web-dialog .date-container{padding:16px 0 24px 0}md-dialog.web-dialog .error-list{font-size:13px}md-dialog.web-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.web-dialog .error-list .error .message{font-weight:500}md-dialog.web-dialog .error-list .error .md-button{margin:0}md-dialog.web-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.web-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.odbc-dialog{max-width:720px;width:720px}md-dialog.odbc-dialog md-dialog-content{display:block;position:relative}md-dialog.odbc-dialog md-toolbar .title{font-size:17px}md-dialog.odbc-dialog md-input-container textarea{min-height:150px}md-dialog.odbc-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.odbc-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.odbc-dialog .date-container{padding:16px 0 24px 0}md-dialog.odbc-dialog .error-list{font-size:13px}md-dialog.odbc-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.odbc-dialog .error-list .error .message{font-weight:500}md-dialog.odbc-dialog .error-list .error .md-button{margin:0}md-dialog.odbc-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.odbc-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#odbcs{position:relative}#odbcs>.header{height:76px;min-height:76px;max-height:76px}#odbcs>.header .logo .logo-icon{margin:0 16px 0 0}#odbcs>.header .logo .logo-text{font-size:24px}#odbcs>.header md-icon{color:#fff}#odbcs>.header .search-input-wrapper{position:relative}#odbcs>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#odbcs>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#odbcs>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#odbcs>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#odbcs>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#odbcs>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#odbcs>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#odbcs>.header.selected-bar .close-button-wrapper{width:244px}#odbcs>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#odbcs>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#odbcs>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#odbcs #add-odbc-button{position:fixed;bottom:8px;right:8px;padding:0}#odbcs #upload-odbc-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.project-dialog{max-width:720px;width:720px}md-dialog.project-dialog md-dialog-content{display:block;position:relative}md-dialog.project-dialog md-toolbar .title{font-size:17px}md-dialog.project-dialog md-input-container textarea{min-height:150px}md-dialog.project-dialog .date-container{padding:16px 0 24px 0}md-dialog.project-dialog .error-list{font-size:13px}md-dialog.project-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.project-dialog .error-list .error .message{font-weight:500}md-dialog.project-dialog .error-list .error .md-button{margin:0}md-dialog.project-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.project-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}md-dialog.project-dialog .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#callysquare-project .header{height:76px;min-height:76px;max-height:76px}#callysquare-project .header .goto-projects-button{margin-right:16px}#callysquare-project .header .project-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#callysquare-project .header .project-image img{height:100%;width:auto;max-width:none}#callysquare-project .header .subtitle{margin:6px 0 0 0}#callysquare-project .project-detail-form-container{padding:24px;margin-bottom:24px}#callysquare-project .project-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#callysquare-project .project-detail-form-container #project-image-uploader{position:relative}#callysquare-project .project-detail-form-container #project-image-uploader.dropping .drop-text{display:flex}#callysquare-project .project-detail-form-container #project-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#callysquare-project .project-detail-form-container #project-image-uploader .upload-button{margin-bottom:16px}#callysquare-project .project-detail-form-container #project-image-uploader .project-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#callysquare-project .project-detail-form-container #project-image-uploader .project-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#callysquare-project .project-detail-form-container #project-image-uploader .project-image .media{max-height:100%}#callysquare-project>.callysquare-content{position:absolute;top:76px;bottom:0;left:0;right:0}#projects{position:relative}#projects>.header{height:76px;min-height:76px;max-height:76px}#projects>.header .logo .logo-icon{margin:0 16px 0 0}#projects>.header .logo .logo-text{font-size:24px}#projects>.header md-icon{color:#fff}#projects>.header .search-input-wrapper{position:relative}#projects>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#projects>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#projects>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#projects>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#projects>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#projects>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#projects>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#projects>.header.selected-bar .close-button-wrapper{width:244px}#projects>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#projects>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#projects>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#projects #add-project-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.squareRecording-dialog{max-width:720px;width:720px}md-dialog.squareRecording-dialog md-dialog-content{display:block;position:relative}md-dialog.squareRecording-dialog md-toolbar .title{font-size:17px}md-dialog.squareRecording-dialog md-input-container textarea{min-height:150px}md-dialog.squareRecording-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.squareRecording-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.squareRecording-dialog .date-container{padding:16px 0 24px 0}md-dialog.squareRecording-dialog .error-list{font-size:13px}md-dialog.squareRecording-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.squareRecording-dialog .error-list .error .message{font-weight:500}md-dialog.squareRecording-dialog .error-list .error .md-button{margin:0}md-dialog.squareRecording-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.squareRecording-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#squareRecordings{position:relative}#squareRecordings>.header{height:76px;min-height:76px;max-height:76px}#squareRecordings>.header .logo .logo-icon{margin:0 16px 0 0}#squareRecordings>.header .logo .logo-text{font-size:24px}#squareRecordings>.header md-icon{color:#fff}#squareRecordings>.header .search-input-wrapper{position:relative}#squareRecordings>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#squareRecordings>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#squareRecordings>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#squareRecordings>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#squareRecordings>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#squareRecordings>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#squareRecordings>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#squareRecordings>.header.selected-bar .close-button-wrapper{width:244px}#squareRecordings>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#squareRecordings>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#squareRecordings>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#squareRecordings #add-squareRecording-button{position:fixed;bottom:8px;right:8px;padding:0}#squareRecordings #upload-squareRecording-button{position:fixed;bottom:8px;right:8px;padding:0}#chatQueues{position:relative}#chatQueues>.header{height:76px;min-height:76px;max-height:76px}#chatQueues>.header .logo .logo-icon{margin:0 16px 0 0}#chatQueues>.header .logo .logo-text{font-size:24px}#chatQueues>.header md-icon{color:#fff}#chatQueues>.header .search-input-wrapper{position:relative}#chatQueues>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#chatQueues>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#chatQueues>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#chatQueues>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#chatQueues>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#chatQueues>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#chatQueues>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#chatQueues>.header.selected-bar .close-button-wrapper{width:244px}#chatQueues>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#chatQueues>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#chatQueues>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#chatQueues #add-chatQueue-button{position:fixed;bottom:8px;right:8px;padding:0}#chatQueues #upload-chatQueue-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.chatQueue-dialog{max-width:720px;width:720px}md-dialog.chatQueue-dialog md-dialog-content{display:block;position:relative}md-dialog.chatQueue-dialog md-toolbar .title{font-size:17px}md-dialog.chatQueue-dialog md-input-container textarea{min-height:150px}md-dialog.chatQueue-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.chatQueue-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.chatQueue-dialog .date-container{padding:16px 0 24px 0}md-dialog.chatQueue-dialog .error-list{font-size:13px}md-dialog.chatQueue-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.chatQueue-dialog .error-list .error .message{font-weight:500}md-dialog.chatQueue-dialog .error-list .error .md-button{margin:0}md-dialog.chatQueue-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.chatQueue-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#chat-chatQueue .header{height:76px;min-height:76px;max-height:76px}#chat-chatQueue .header .goto-chatQueues-button{margin-right:16px}#chat-chatQueue .header .chatQueue-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#chat-chatQueue .header .chatQueue-image img{height:100%;width:auto;max-width:none}#chat-chatQueue .header .subtitle{margin:6px 0 0 0}#chat-chatQueue .chatQueue-detail-form-container{padding:24px;margin-bottom:24px}#chat-chatQueue .chatQueue-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#chat-chatQueue .chatQueue-detail-form-container .handle{cursor:move}#chat-chatQueue .chatQueue-detail-form-container md-input-container md-switch{margin:0!important}#chat-chatQueue .chatQueue-detail-form-container #chatQueue-image-uploader{position:relative}#chat-chatQueue .chatQueue-detail-form-container #chatQueue-image-uploader.dropping .drop-text{display:flex}#chat-chatQueue .chatQueue-detail-form-container #chatQueue-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#chat-chatQueue .chatQueue-detail-form-container #chatQueue-image-uploader .upload-button{margin-bottom:16px}#chat-chatQueue .chatQueue-detail-form-container #chatQueue-image-uploader .chatQueue-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#chat-chatQueue .chatQueue-detail-form-container #chatQueue-image-uploader .chatQueue-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#chat-chatQueue .chatQueue-detail-form-container #chatQueue-image-uploader .chatQueue-image .media{max-height:100%}#chat-chatQueue md-table-container thead tr th:not(:first-child):not(.no-padding){padding:0 20px 0 0!important}#chat-chatQueue md-table-container thead th.md-checkbox-column:not(.no-padding){padding:0 24px!important}#chat-chatQueue md-table-container tbody tr td:not(:first-child):not(.no-padding):not(.actions-padding){padding:0 20px 0 0!important}#chat-chatQueue md-table-container.font-size-12 td.md-cell{font-size:12px!important}#chatWebsites{position:relative}#chatWebsites>.header{height:76px;min-height:76px;max-height:76px}#chatWebsites>.header .logo .logo-icon{margin:0 16px 0 0}#chatWebsites>.header .logo .logo-text{font-size:24px}#chatWebsites>.header md-icon{color:#fff}#chatWebsites>.header .search-input-wrapper{position:relative}#chatWebsites>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#chatWebsites>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#chatWebsites>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#chatWebsites>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#chatWebsites>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#chatWebsites>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#chatWebsites>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#chatWebsites>.header.selected-bar .close-button-wrapper{width:244px}#chatWebsites>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#chatWebsites>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#chatWebsites>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#chatWebsites #add-chatWebsite-button{position:fixed;bottom:8px;right:8px;padding:0}#chatWebsites #upload-chatWebsite-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.chatWebsite-dialog{max-width:720px;width:720px}md-dialog.chatWebsite-dialog md-dialog-content{display:block;position:relative}md-dialog.chatWebsite-dialog md-toolbar .title{font-size:17px}md-dialog.chatWebsite-dialog md-input-container textarea{min-height:150px}md-dialog.chatWebsite-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.chatWebsite-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.chatWebsite-dialog .date-container{padding:16px 0 24px 0}md-dialog.chatWebsite-dialog .error-list{font-size:13px}md-dialog.chatWebsite-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.chatWebsite-dialog .error-list .error .message{font-weight:500}md-dialog.chatWebsite-dialog .error-list .error .md-button{margin:0}md-dialog.chatWebsite-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.chatWebsite-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.chatWebsite-dialog{max-width:720px;width:720px}md-dialog.chatWebsite-dialog md-dialog-content{display:block;position:relative}md-dialog.chatWebsite-dialog md-toolbar .title{font-size:17px}md-dialog.chatWebsite-dialog md-input-container textarea{min-height:150px}md-dialog.chatWebsite-dialog .date-container{padding:16px 0 24px 0}md-dialog.chatWebsite-dialog .error-list{font-size:13px}md-dialog.chatWebsite-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.chatWebsite-dialog .error-list .error .message{font-weight:500}md-dialog.chatWebsite-dialog .error-list .error .md-button{margin:0}md-dialog.chatWebsite-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.chatWebsite-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.chatWebsite-dialog{max-width:720px;width:720px}md-dialog.chatWebsite-dialog md-dialog-content{display:block;position:relative}md-dialog.chatWebsite-dialog md-toolbar .title{font-size:17px}md-dialog.chatWebsite-dialog md-input-container textarea{min-height:150px}md-dialog.chatWebsite-dialog .date-container{padding:16px 0 24px 0}md-dialog.chatWebsite-dialog .error-list{font-size:13px}md-dialog.chatWebsite-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.chatWebsite-dialog .error-list .error .message{font-weight:500}md-dialog.chatWebsite-dialog .error-list .error .md-button{margin:0}md-dialog.chatWebsite-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.chatWebsite-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.chatWebsite-dialog{max-width:720px;width:720px}md-dialog.chatWebsite-dialog md-dialog-content{display:block;position:relative}md-dialog.chatWebsite-dialog md-toolbar .title{font-size:17px}md-dialog.chatWebsite-dialog md-input-container textarea{min-height:150px}md-dialog.chatWebsite-dialog .date-container{padding:16px 0 24px 0}md-dialog.chatWebsite-dialog .error-list{font-size:13px}md-dialog.chatWebsite-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.chatWebsite-dialog .error-list .error .message{font-weight:500}md-dialog.chatWebsite-dialog .error-list .error .md-button{margin:0}md-dialog.chatWebsite-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.chatWebsite-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.chatWebsite-dialog{max-width:720px;width:720px}md-dialog.chatWebsite-dialog md-dialog-content{display:block;position:relative}md-dialog.chatWebsite-dialog md-toolbar .title{font-size:17px}md-dialog.chatWebsite-dialog md-input-container textarea{min-height:150px}md-dialog.chatWebsite-dialog .date-container{padding:16px 0 24px 0}md-dialog.chatWebsite-dialog .error-list{font-size:13px}md-dialog.chatWebsite-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.chatWebsite-dialog .error-list .error .message{font-weight:500}md-dialog.chatWebsite-dialog .error-list .error .md-button{margin:0}md-dialog.chatWebsite-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.chatWebsite-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.chatWebsite-dialog{max-width:720px;width:720px}md-dialog.chatWebsite-dialog md-dialog-content{display:block;position:relative}md-dialog.chatWebsite-dialog md-toolbar .title{font-size:17px}md-dialog.chatWebsite-dialog md-input-container textarea{min-height:150px}md-dialog.chatWebsite-dialog .date-container{padding:16px 0 24px 0}md-dialog.chatWebsite-dialog .error-list{font-size:13px}md-dialog.chatWebsite-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.chatWebsite-dialog .error-list .error .message{font-weight:500}md-dialog.chatWebsite-dialog .error-list .error .md-button{margin:0}md-dialog.chatWebsite-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.chatWebsite-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.chatWebsite-dialog{max-width:720px;width:720px}md-dialog.chatWebsite-dialog md-dialog-content{display:block;position:relative}md-dialog.chatWebsite-dialog md-toolbar .title{font-size:17px}md-dialog.chatWebsite-dialog md-input-container textarea{min-height:150px}md-dialog.chatWebsite-dialog .date-container{padding:16px 0 24px 0}md-dialog.chatWebsite-dialog .error-list{font-size:13px}md-dialog.chatWebsite-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.chatWebsite-dialog .error-list .error .message{font-weight:500}md-dialog.chatWebsite-dialog .error-list .error .md-button{margin:0}md-dialog.chatWebsite-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.chatWebsite-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.chatWebsite-dialog{max-width:720px;width:720px}md-dialog.chatWebsite-dialog md-dialog-content{display:block;position:relative}md-dialog.chatWebsite-dialog md-toolbar .title{font-size:17px}md-dialog.chatWebsite-dialog md-input-container textarea{min-height:150px}md-dialog.chatWebsite-dialog .date-container{padding:16px 0 24px 0}md-dialog.chatWebsite-dialog .error-list{font-size:13px}md-dialog.chatWebsite-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.chatWebsite-dialog .error-list .error .message{font-weight:500}md-dialog.chatWebsite-dialog .error-list .error .md-button{margin:0}md-dialog.chatWebsite-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.chatWebsite-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.chatWebsite-dialog{max-width:720px;width:720px}md-dialog.chatWebsite-dialog md-dialog-content{display:block;position:relative}md-dialog.chatWebsite-dialog md-toolbar .title{font-size:17px}md-dialog.chatWebsite-dialog md-input-container textarea{min-height:150px}md-dialog.chatWebsite-dialog .date-container{padding:16px 0 24px 0}md-dialog.chatWebsite-dialog .error-list{font-size:13px}md-dialog.chatWebsite-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.chatWebsite-dialog .error-list .error .message{font-weight:500}md-dialog.chatWebsite-dialog .error-list .error .md-button{margin:0}md-dialog.chatWebsite-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.chatWebsite-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.chatWebsite-dialog{max-width:720px;width:720px}md-dialog.chatWebsite-dialog md-dialog-content{display:block;position:relative}md-dialog.chatWebsite-dialog md-toolbar .title{font-size:17px}md-dialog.chatWebsite-dialog md-input-container textarea{min-height:150px}md-dialog.chatWebsite-dialog .date-container{padding:16px 0 24px 0}md-dialog.chatWebsite-dialog .error-list{font-size:13px}md-dialog.chatWebsite-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.chatWebsite-dialog .error-list .error .message{font-weight:500}md-dialog.chatWebsite-dialog .error-list .error .md-button{margin:0}md-dialog.chatWebsite-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.chatWebsite-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.chatWebsite-dialog{max-width:720px;width:720px}md-dialog.chatWebsite-dialog md-dialog-content{display:block;position:relative}md-dialog.chatWebsite-dialog md-toolbar .title{font-size:17px}md-dialog.chatWebsite-dialog md-input-container textarea{min-height:150px}md-dialog.chatWebsite-dialog .date-container{padding:16px 0 24px 0}md-dialog.chatWebsite-dialog .error-list{font-size:13px}md-dialog.chatWebsite-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.chatWebsite-dialog .error-list .error .message{font-weight:500}md-dialog.chatWebsite-dialog .error-list .error .md-button{margin:0}md-dialog.chatWebsite-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.chatWebsite-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.chatWebsite-dialog{max-width:720px;width:720px}md-dialog.chatWebsite-dialog md-dialog-content{display:block;position:relative}md-dialog.chatWebsite-dialog md-toolbar .title{font-size:17px}md-dialog.chatWebsite-dialog md-input-container textarea{min-height:150px}md-dialog.chatWebsite-dialog .date-container{padding:16px 0 24px 0}md-dialog.chatWebsite-dialog .error-list{font-size:13px}md-dialog.chatWebsite-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.chatWebsite-dialog .error-list .error .message{font-weight:500}md-dialog.chatWebsite-dialog .error-list .error .md-button{margin:0}md-dialog.chatWebsite-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.chatWebsite-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.chatWebsite-dialog{max-width:720px;width:720px}md-dialog.chatWebsite-dialog md-dialog-content{display:block;position:relative}md-dialog.chatWebsite-dialog md-toolbar .title{font-size:17px}md-dialog.chatWebsite-dialog md-input-container textarea{min-height:150px}md-dialog.chatWebsite-dialog .date-container{padding:16px 0 24px 0}md-dialog.chatWebsite-dialog .error-list{font-size:13px}md-dialog.chatWebsite-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.chatWebsite-dialog .error-list .error .message{font-weight:500}md-dialog.chatWebsite-dialog .error-list .error .md-button{margin:0}md-dialog.chatWebsite-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.chatWebsite-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.chatWebsite-dialog{max-width:720px;width:720px}md-dialog.chatWebsite-dialog md-dialog-content{display:block;position:relative}md-dialog.chatWebsite-dialog md-toolbar .title{font-size:17px}md-dialog.chatWebsite-dialog md-input-container textarea{min-height:150px}md-dialog.chatWebsite-dialog .date-container{padding:16px 0 24px 0}md-dialog.chatWebsite-dialog .error-list{font-size:13px}md-dialog.chatWebsite-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.chatWebsite-dialog .error-list .error .message{font-weight:500}md-dialog.chatWebsite-dialog .error-list .error .md-button{margin:0}md-dialog.chatWebsite-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.chatWebsite-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.chatWebsite-dialog{max-width:720px;width:720px}md-dialog.chatWebsite-dialog md-dialog-content{display:block;position:relative}md-dialog.chatWebsite-dialog md-toolbar .title{font-size:17px}md-dialog.chatWebsite-dialog md-input-container textarea{min-height:150px}md-dialog.chatWebsite-dialog .date-container{padding:16px 0 24px 0}md-dialog.chatWebsite-dialog .error-list{font-size:13px}md-dialog.chatWebsite-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.chatWebsite-dialog .error-list .error .message{font-weight:500}md-dialog.chatWebsite-dialog .error-list .error .md-button{margin:0}md-dialog.chatWebsite-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.chatWebsite-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.chatCannedAnswer-dialog{max-width:720px;width:720px}md-dialog.chatCannedAnswer-dialog md-dialog-content{display:block;position:relative}md-dialog.chatCannedAnswer-dialog md-toolbar .title{font-size:17px}md-dialog.chatCannedAnswer-dialog md-input-container textarea{min-height:150px}md-dialog.chatCannedAnswer-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.chatCannedAnswer-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.chatCannedAnswer-dialog .date-container{padding:16px 0 24px 0}md-dialog.chatCannedAnswer-dialog .error-list{font-size:13px}md-dialog.chatCannedAnswer-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.chatCannedAnswer-dialog .error-list .error .message{font-weight:500}md-dialog.chatCannedAnswer-dialog .error-list .error .md-button{margin:0}md-dialog.chatCannedAnswer-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.chatCannedAnswer-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.offlineMessage-dialog{max-width:720px;width:720px}md-dialog.offlineMessage-dialog md-dialog-content{display:block;position:relative}md-dialog.offlineMessage-dialog md-toolbar .title{font-size:17px}md-dialog.offlineMessage-dialog md-input-container textarea{min-height:150px}md-dialog.offlineMessage-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.offlineMessage-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.offlineMessage-dialog .date-container{padding:16px 0 24px 0}md-dialog.offlineMessage-dialog .error-list{font-size:13px}md-dialog.offlineMessage-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.offlineMessage-dialog .error-list .error .message{font-weight:500}md-dialog.offlineMessage-dialog .error-list .error .md-button{margin:0}md-dialog.offlineMessage-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.offlineMessage-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.chatProactiveAction-dialog{max-width:720px;width:720px}md-dialog.chatProactiveAction-dialog md-dialog-content{display:block;position:relative}md-dialog.chatProactiveAction-dialog md-toolbar .title{font-size:17px}md-dialog.chatProactiveAction-dialog md-input-container textarea{min-height:150px}md-dialog.chatProactiveAction-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.chatProactiveAction-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.chatProactiveAction-dialog .date-container{padding:16px 0 24px 0}md-dialog.chatProactiveAction-dialog .error-list{font-size:13px}md-dialog.chatProactiveAction-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.chatProactiveAction-dialog .error-list .error .message{font-weight:500}md-dialog.chatProactiveAction-dialog .error-list .error .md-button{margin:0}md-dialog.chatProactiveAction-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.chatProactiveAction-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#chat-chatWebsite .header{height:76px;min-height:76px;max-height:76px}#chat-chatWebsite .header .goto-chatWebsites-button{margin-right:16px}#chat-chatWebsite .header .chatWebsite-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#chat-chatWebsite .header .chatWebsite-image img{height:100%;width:auto;max-width:none}#chat-chatWebsite .header .subtitle{margin:6px 0 0 0}#chat-chatWebsite .chatWebsite-detail-form-container{padding:24px;margin-bottom:24px}#chat-chatWebsite .chatWebsite-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#chat-chatWebsite .chatWebsite-detail-form-container .handle{cursor:move}#chat-chatWebsite .chatWebsite-detail-form-container md-input-container md-switch{margin:0!important}#chat-chatWebsite .chatWebsite-detail-form-container #chatWebsite-image-uploader{position:relative}#chat-chatWebsite .chatWebsite-detail-form-container #chatWebsite-image-uploader.dropping .drop-text{display:flex}#chat-chatWebsite .chatWebsite-detail-form-container #chatWebsite-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#chat-chatWebsite .chatWebsite-detail-form-container #chatWebsite-image-uploader .upload-button{margin-bottom:16px}#chat-chatWebsite .chatWebsite-detail-form-container #chatWebsite-image-uploader .chatWebsite-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#chat-chatWebsite .chatWebsite-detail-form-container #chatWebsite-image-uploader .chatWebsite-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#chat-chatWebsite .chatWebsite-detail-form-container #chatWebsite-image-uploader .chatWebsite-image .media{max-height:100%}#chat-chatWebsite md-table-container thead tr th:not(:first-child):not(.no-padding){padding:0 20px 0 0!important}#chat-chatWebsite md-table-container thead th.md-checkbox-column:not(.no-padding){padding:0 24px!important}#chat-chatWebsite md-table-container tbody tr td:not(:first-child):not(.no-padding):not(.actions-padding){padding:0 20px 0 0!important}#chat-chatWebsite md-table-container.font-size-12 td.md-cell{font-size:12px!important}@media screen and (min-width:1921px){#chat-chatWebsite .actionAppData{width:800px!important}}@media screen and (max-width:1920px){#chat-chatWebsite .actionAppData{width:700px!important}}@media screen and (min-width:1751px) and (max-width:1919px){#chat-chatWebsite .actionAppData{width:600px!important}}@media screen and (min-width:1601px) and (max-width:1750px){#chat-chatWebsite .actionAppData{width:500px!important}}@media screen and (min-width:1537px) and (max-width:1600px){#chat-chatWebsite .actionAppData{width:450px!important}}@media screen and (min-width:1281px) and (max-width:1536px){#chat-chatWebsite .actionAppData{width:300px!important}}@media screen and (max-width:1280px){#chat-chatWebsite .actionAppData{width:150px!important}}@media screen and (max-width:960px){#chat-chatWebsite .actionAppData{width:80px!important}}#realtime{height:auto}#realtime>.content .blink{animation:blinker 2s linear infinite}#realtime>.content .avatar-wrapper{position:relative}#realtime>.content .avatar-wrapper .status{position:absolute;bottom:-3px;right:5px}#realtime>.content .search-input-wrapper{position:relative;margin-left:20px}#realtime>.content .search-input-wrapper label{padding:6px;cursor:pointer}#realtime>.content .search-input-wrapper md-input-container{padding-top:20px}#realtime>.content .main .labels{padding:8px 16px}#realtime>.content .main .labels .label{margin:0 0 2px 4px;padding:2px 5px;font-size:11px;white-space:nowrap;border-radius:2px}#realtime>.content .main .status{position:absolute;bottom:-3px;right:5px}#realtime>.content .main .avatar-wrapper{position:relative}#realtime>.content .main .avatar-wrapper .status{position:absolute;bottom:-3px;right:5px}#realtime>.content .custom-column{padding:0 24px!important}@keyframes blinker{50%{opacity:0}}#companies{position:relative}#companies>.header{height:76px;min-height:76px;max-height:76px}#companies>.header .logo .logo-icon{margin:0 16px 0 0}#companies>.header .logo .logo-text{font-size:24px}#companies>.header md-icon{color:#fff}#companies>.header .search-input-wrapper{position:relative}#companies>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#companies>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#companies>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#companies>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#companies>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#companies>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#companies>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#companies>.header.selected-bar .close-button-wrapper{width:244px}#companies>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#companies>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#companies>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#companies #add-company-button{position:fixed;bottom:8px;right:8px;padding:0}#companies #upload-company-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.company-dialog{max-width:720px;width:720px}md-dialog.company-dialog md-dialog-content{display:block;position:relative}md-dialog.company-dialog md-toolbar .title{font-size:17px}md-dialog.company-dialog md-input-container textarea{min-height:150px}md-dialog.company-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.company-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.company-dialog .date-container{padding:16px 0 24px 0}md-dialog.company-dialog .error-list{font-size:13px}md-dialog.company-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.company-dialog .error-list .error .message{font-weight:500}md-dialog.company-dialog .error-list .error .md-button{margin:0}md-dialog.company-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.company-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#contactmanager-company .header{height:76px;min-height:76px;max-height:76px}#contactmanager-company .header .goto-companies-button{margin-right:16px}#contactmanager-company .header .company-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#contactmanager-company .header .company-image img{height:100%;width:auto;max-width:none}#contactmanager-company .header .subtitle{margin:6px 0 0 0}#contactmanager-company .company-detail-form-container{padding:24px;margin-bottom:24px}#contactmanager-company .company-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#contactmanager-company .company-detail-form-container .handle{cursor:move}#contactmanager-company .company-detail-form-container md-input-container md-switch{margin:0!important}#contactmanager-company .company-detail-form-container #company-image-uploader{position:relative}#contactmanager-company .company-detail-form-container #company-image-uploader.dropping .drop-text{display:flex}#contactmanager-company .company-detail-form-container #company-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#contactmanager-company .company-detail-form-container #company-image-uploader .upload-button{margin-bottom:16px}#contactmanager-company .company-detail-form-container #company-image-uploader .company-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#contactmanager-company .company-detail-form-container #company-image-uploader .company-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#contactmanager-company .company-detail-form-container #company-image-uploader .company-image .media{max-height:100%}#contactmanager-company md-table-container thead tr th:not(:first-child):not(.no-padding){padding:0 20px 0 0!important}#contactmanager-company md-table-container thead th.md-checkbox-column:not(.no-padding){padding:0 24px!important}#contactmanager-company md-table-container tbody tr td:not(:first-child):not(.no-padding):not(.actions-padding){padding:0 20px 0 0!important}#contactmanager-company md-table-container.font-size-12 td.md-cell{font-size:12px!important}#contacts{position:relative}#contacts>.header{height:76px;min-height:76px;max-height:76px}#contacts>.header .logo .logo-icon{margin:0 16px 0 0}#contacts>.header .logo .logo-text{font-size:24px}#contacts>.header md-icon{color:#fff}#contacts>.header .search-input-wrapper{position:relative}#contacts>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#contacts>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#contacts>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#contacts>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#contacts>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#contacts>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#contacts>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#contacts>.header.selected-bar .close-button-wrapper{width:244px}#contacts>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#contacts>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#contacts>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#contacts #add-contact-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.cm-contact-dialog{max-width:720px;width:720px}md-dialog.cm-contact-dialog md-dialog-content{display:block;position:relative}md-dialog.cm-contact-dialog md-toolbar .title{font-size:17px}md-dialog.cm-contact-dialog md-input-container textarea{min-height:150px}md-dialog.cm-contact-dialog .date-container{padding:16px 0 24px 0}md-dialog.cm-contact-dialog .error-list{font-size:13px}md-dialog.cm-contact-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.cm-contact-dialog .error-list .error .message{font-weight:500}md-dialog.cm-contact-dialog .error-list .error .md-button{margin:0}md-dialog.cm-contact-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.cm-contact-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.cm-contact-dialog{max-width:720px;width:720px}md-dialog.cm-contact-dialog md-dialog-content{display:block;position:relative}md-dialog.cm-contact-dialog md-toolbar .title{font-size:17px}md-dialog.cm-contact-dialog md-input-container textarea{min-height:150px}md-dialog.cm-contact-dialog .date-container{padding:16px 0 24px 0}md-dialog.cm-contact-dialog .error-list{font-size:13px}md-dialog.cm-contact-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.cm-contact-dialog .error-list .error .message{font-weight:500}md-dialog.cm-contact-dialog .error-list .error .md-button{margin:0}md-dialog.cm-contact-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.cm-contact-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.hopper-dialog{max-width:720px;width:720px}md-dialog.hopper-dialog md-dialog-content{display:block;position:relative}md-dialog.hopper-dialog md-toolbar .title{font-size:17px}md-dialog.hopper-dialog md-input-container textarea{min-height:150px}md-dialog.hopper-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.hopper-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.hopper-dialog .date-container{padding:16px 0 24px 0}md-dialog.hopper-dialog .error-list{font-size:13px}md-dialog.hopper-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.hopper-dialog .error-list .error .message{font-weight:500}md-dialog.hopper-dialog .error-list .error .md-button{margin:0}md-dialog.hopper-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.hopper-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#cm-contact .pointer{cursor:pointer}#cm-contact .header{height:76px;min-height:76px;max-height:76px}#cm-contact .header .goto-contacts-button{margin-right:16px}#cm-contact .header .contact-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#cm-contact .header .contact-image img{height:100%;width:auto;max-width:none}#cm-contact .header .subtitle{margin:6px 0 0 0}#cm-contact .contact-detail-form-container{padding:24px;margin-bottom:24px}#cm-contact .contact-detail-form-container md-input-container:not(.md-input-invalid)>md-icon.email{color:green}#cm-contact .contact-detail-form-container md-input-container:not(.md-input-invalid)>md-icon.firstname{color:#1e90ff}#cm-contact .contact-detail-form-container md-input-container.md-input-invalid>md-icon.email,#cm-contact .contact-detail-form-container md-input-container.md-input-invalid>md-icon.firstname{color:red}#cm-contact .contact-detail-form-container .hint{position:absolute;left:2px;right:auto;bottom:7px;font-size:10px;line-height:14px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.import-dialog{max-width:720px;width:720px}md-dialog.import-dialog md-dialog-content{display:block;position:relative}md-dialog.import-dialog md-toolbar .title{font-size:17px}md-dialog.import-dialog md-input-container textarea{min-height:150px}md-dialog.import-dialog .date-container{padding:16px 0 24px 0}md-dialog.import-dialog .error-list{font-size:13px}md-dialog.import-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.import-dialog .error-list .error .message{font-weight:500}md-dialog.import-dialog .error-list .error .md-button{margin:0}md-dialog.import-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.import-dialog .error-list .info{background-color:rgba(24,160,135,.08);border:1px solid rgba(24,160,135,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.import-dialog .error-list .info .message{font-weight:500}md-dialog.import-dialog .error-list .info .md-button{margin:0}md-dialog.import-dialog .error-list .info:last-child{margin-bottom:30px}md-dialog.import-dialog .contact-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}md-dialog.import-dialog .contact-image img{height:100%;width:auto;max-width:none}md-dialog.import-dialog .contact-image .media{max-height:100%}md-dialog.import-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.cm-contact-dialog{max-width:720px;width:720px}md-dialog.cm-contact-dialog md-dialog-content{display:block;position:relative}md-dialog.cm-contact-dialog md-toolbar .title{font-size:17px}md-dialog.cm-contact-dialog md-input-container textarea{min-height:150px}md-dialog.cm-contact-dialog .date-container{padding:16px 0 24px 0}md-dialog.cm-contact-dialog .error-list{font-size:13px}md-dialog.cm-contact-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.cm-contact-dialog .error-list .error .message{font-weight:500}md-dialog.cm-contact-dialog .error-list .error .md-button{margin:0}md-dialog.cm-contact-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.cm-contact-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.globalCustomField-dialog{max-width:720px;width:720px}md-dialog.globalCustomField-dialog md-dialog-content{display:block;position:relative}md-dialog.globalCustomField-dialog md-toolbar .title{font-size:17px}md-dialog.globalCustomField-dialog md-input-container textarea{min-height:150px}md-dialog.globalCustomField-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.globalCustomField-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.globalCustomField-dialog .date-container{padding:16px 0 24px 0}md-dialog.globalCustomField-dialog .error-list{font-size:13px}md-dialog.globalCustomField-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.globalCustomField-dialog .error-list .error .message{font-weight:500}md-dialog.globalCustomField-dialog .error-list .error .md-button{margin:0}md-dialog.globalCustomField-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.globalCustomField-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#globalCustomFields{position:relative}#globalCustomFields>.header{height:76px;min-height:76px;max-height:76px}#globalCustomFields>.header .logo .logo-icon{margin:0 16px 0 0}#globalCustomFields>.header .logo .logo-text{font-size:24px}#globalCustomFields>.header md-icon{color:#fff}#globalCustomFields>.header .search-input-wrapper{position:relative}#globalCustomFields>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#globalCustomFields>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#globalCustomFields>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#globalCustomFields>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#globalCustomFields>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#globalCustomFields>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#globalCustomFields>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#globalCustomFields>.header.selected-bar .close-button-wrapper{width:244px}#globalCustomFields>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#globalCustomFields>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#globalCustomFields>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#globalCustomFields #add-globalCustomField-button{position:fixed;bottom:8px;right:8px;padding:0}#globalCustomFields #upload-globalCustomField-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.list-dialog{max-width:720px;width:720px}md-dialog.list-dialog md-dialog-content{display:block;position:relative}md-dialog.list-dialog md-toolbar .title{font-size:17px}md-dialog.list-dialog md-input-container textarea{min-height:150px}md-dialog.list-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.list-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.list-dialog .date-container{padding:16px 0 24px 0}md-dialog.list-dialog .error-list{font-size:13px}md-dialog.list-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.list-dialog .error-list .error .message{font-weight:500}md-dialog.list-dialog .error-list .error .md-button{margin:0}md-dialog.list-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.list-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.customField-dialog{max-width:720px;width:720px}md-dialog.customField-dialog md-dialog-content{display:block;position:relative}md-dialog.customField-dialog md-toolbar .title{font-size:17px}md-dialog.customField-dialog md-input-container textarea{min-height:150px}md-dialog.customField-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.customField-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.customField-dialog .date-container{padding:16px 0 24px 0}md-dialog.customField-dialog .error-list{font-size:13px}md-dialog.customField-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.customField-dialog .error-list .error .message{font-weight:500}md-dialog.customField-dialog .error-list .error .md-button{margin:0}md-dialog.customField-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.customField-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#contactmanager-list .header{height:76px;min-height:76px;max-height:76px}#contactmanager-list .header .goto-lists-button{margin-right:16px}#contactmanager-list .header .list-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#contactmanager-list .header .list-image img{height:100%;width:auto;max-width:none}#contactmanager-list .header .subtitle{margin:6px 0 0 0}#contactmanager-list .list-detail-form-container{padding:24px;margin-bottom:24px}#contactmanager-list .list-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#contactmanager-list .list-detail-form-container .handle{cursor:move}#contactmanager-list .list-detail-form-container md-input-container md-switch{margin:0!important}#contactmanager-list .list-detail-form-container #list-image-uploader{position:relative}#contactmanager-list .list-detail-form-container #list-image-uploader.dropping .drop-text{display:flex}#contactmanager-list .list-detail-form-container #list-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#contactmanager-list .list-detail-form-container #list-image-uploader .upload-button{margin-bottom:16px}#contactmanager-list .list-detail-form-container #list-image-uploader .list-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#contactmanager-list .list-detail-form-container #list-image-uploader .list-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#contactmanager-list .list-detail-form-container #list-image-uploader .list-image .media{max-height:100%}#contactmanager-list md-table-container thead tr th:not(:first-child):not(.no-padding){padding:0 20px 0 0!important}#contactmanager-list md-table-container thead th.md-checkbox-column:not(.no-padding){padding:0 24px!important}#contactmanager-list md-table-container tbody tr td:not(:first-child):not(.no-padding):not(.actions-padding){padding:0 20px 0 0!important}#contactmanager-list md-table-container.font-size-12 td.md-cell{font-size:12px!important}#lists{position:relative}#lists>.header{height:76px;min-height:76px;max-height:76px}#lists>.header .logo .logo-icon{margin:0 16px 0 0}#lists>.header .logo .logo-text{font-size:24px}#lists>.header md-icon{color:#fff}#lists>.header .search-input-wrapper{position:relative}#lists>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#lists>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#lists>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#lists>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#lists>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#lists>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#lists>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#lists>.header.selected-bar .close-button-wrapper{width:244px}#lists>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#lists>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#lists>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#lists #add-list-button{position:fixed;bottom:8px;right:8px;padding:0}#lists #upload-list-button{position:fixed;bottom:8px;right:8px;padding:0}#dashboard-custom .filter-header{background-image:url(/assets/images/backgrounds/header-bg.png);color:#fff}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#agent-general{width:100%;height:100%;overflow:hidden}#agent-general .agent-content{width:100%;height:100%;overflow:auto}#agent-general .agent-content.overflow-hidden{overflow:hidden}#agent-general .agent-content md-tabs{width:100%;height:100%}#agent-general .agent-content md-tabs md-tabs-content-wrapper{width:100%;height:calc(100% - 48px)}#agent-general .agent-content md-tabs md-tabs-content-wrapper md-tab-content.md-active{width:100%;height:100%;overflow:auto}#agent-general .agent-general-home-navbar{flex-grow:1;overflow-y:auto;overflow-x:hidden}#agent-general .agent-general-home-navbar::-webkit-scrollbar{width:0;background:0 0}#agent-general .agent-general-home-navbar::-webkit-scrollbar-thumb{background:0 0;border-radius:0}#agent-general .agent-general-home-sections{width:100%;height:100%;overflow:auto}#agent-general .badge{min-width:20px;height:20px;line-height:20px;padding:0 7px;font-size:11px;font-weight:700;border-radius:20px;transition:opacity .2s ease-in-out .1s}#agent-general .table-header{background-image:url(/assets/images/backgrounds/header-bg.png);color:#fff;overflow-x:auto}#agent-general .table-header::-webkit-scrollbar-thumb{background-color:rgba(0,0,0,.2)}#agent-general .table-header .md-toolbar-tools div md-select .md-select-value.md-select-placeholder{color:#fff}#agent-general .table-header .md-toolbar-tools div md-select[disabled] .md-select-value.md-select-placeholder{color:#fff}#agent-general .table-header .md-toolbar-tools div md-select[disabled] .md-select-value.md-select-placeholder .md-select-icon{display:none}#agent-general .table-header ms-quick-filter .quick-filter-date-clear-button{color:#fff}#agent-general .tooltip-preview{position:relative;display:inline-block;text-decoration:underline}#agent-general .tooltip-preview .tooltip-preview-text{display:none;opacity:0;width:500px;height:216px;position:fixed;white-space:pre-line;z-index:99999999;overflow:hidden;transition:opacity cubic-bezier(.075,.82,.165,1)}#agent-general .tooltip-preview .tooltip-preview-text .tooltip-preview-text-container{width:100%;height:100%;overflow:hidden}#agent-general .tooltip-preview .tooltip-preview-text .tooltip-preview-text-container .email-preview-message{display:block;display:-webkit-box;margin:0 auto;width:100%;height:100%;line-height:1.4;-webkit-line-clamp:10;-webkit-box-orient:vertical;overflow:hidden;text-overflow:ellipsis;word-break:break-all}#agent-general .tooltip-preview:hover .tooltip-preview-text{display:block;opacity:1}#agent-general .reload-list md-icon{color:#fff}#agent-general .advanced-search md-icon{color:#fff}#agent-general .create-new md-icon{color:#fff}#agent-general div.draft-manager-bar{background-color:#f5f5f5;position:sticky;height:34px;bottom:0;border-top:1px solid #e0e0e0}#agent-general div.draft-manager-bar ms-tab-scroll{overflow:hidden}#agent-general div.draft-manager-bar ms-tab-scroll div.draft-manager-tab{height:34px;border-right:1px solid #e0e0e0}#agent-general td.width-5,#agent-general th.width-5{width:5px!important;min-width:auto!important;max-width:none!important}#agent-general td.width-10,#agent-general th.width-10{width:10px!important;min-width:auto!important;max-width:none!important}#agent-general td.width-15,#agent-general th.width-15{width:15px!important;min-width:auto!important;max-width:none!important}#agent-general td.no-padding,#agent-general th.no-padding{padding:0!important}#agent-general span.contact-text{width:100px!important}#agent-general span.subject-text{width:300px!important}#agent-general span.no-margin-bottom{margin-bottom:0!important}#agent-general span.no-margin-top{margin-top:0!important}#agent-general md-table-container.interactions-list thead tr th:not(.no-padding):not(.id-header){padding:0 20px 0 0!important}#agent-general md-table-container.interactions-list tbody tr td:not(.no-padding):not(.actions-padding):not(.id){padding:0 20px 0 0!important}#agent-general td.actions-padding{padding:0 8px 0 0!important}#agent-general md-toolbar.md-table-toolbar[disabled]{pointer-events:none}#agent-general md-toolbar.md-table-toolbar[disabled] ms-search-bar{opacity:.7}#agent-general md-toolbar.md-table-toolbar[disabled] ms-quick-filter{opacity:.7}#agent-general md-toolbar.md-table-toolbar[disabled] button.advanced-search,#agent-general md-toolbar.md-table-toolbar[disabled] button.interaction-reload{opacity:.7}#agent-general md-card.call-info-card{min-width:220px}#agent-general md-card.call-info-card md-card-content,#agent-general md-card.call-info-card md-card-header{padding:10px!important}#agent-general md-card.call-info-card button.reload-button{padding:0;height:22px;width:auto}@media screen and (max-width:1280px){#agent-general span.contact-text{width:100px!important}}@media screen and (max-width:1920px){#agent-general span.contact-text{width:150px!important}}#agent-general-dialog{position:fixed;width:100%;height:100%}#agent-general-dialog .agent-content{position:fixed;top:0;bottom:0;left:0;right:0}body .md-select-menu-container{z-index:110}.md-toolbar-tools{font-size:12px}div.toolbar-quick-filter[disabled]{pointer-events:none;opacity:.7}md-dialog.agent-dialog{max-width:720px;width:720px}md-dialog.agent-dialog md-dialog-content{display:block;position:relative}md-dialog.agent-dialog md-toolbar .title{font-size:17px}md-dialog.agent-dialog md-input-container textarea{min-height:150px}md-dialog.agent-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.agent-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.agent-dialog .date-container{padding:16px 0 24px 0}md-dialog.agent-dialog .error-list{font-size:13px}md-dialog.agent-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.agent-dialog .error-list .error .message{font-weight:500}md-dialog.agent-dialog .error-list .error .md-button{margin:0}md-dialog.agent-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.agent-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.agent-dialog{max-width:720px;width:720px}md-dialog.agent-dialog md-dialog-content{display:block;position:relative}md-dialog.agent-dialog md-toolbar .title{font-size:17px}md-dialog.agent-dialog md-input-container textarea{min-height:150px}md-dialog.agent-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.agent-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.agent-dialog .date-container{padding:16px 0 24px 0}md-dialog.agent-dialog .error-list{font-size:13px}md-dialog.agent-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.agent-dialog .error-list .error .message{font-weight:500}md-dialog.agent-dialog .error-list .error .md-button{margin:0}md-dialog.agent-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.agent-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.contact-trigger-dialog{max-width:720px;width:720px}md-dialog.contact-trigger-dialog md-dialog-content{display:block;position:relative;max-height:400px;height:400px}md-dialog.contact-trigger-dialog md-toolbar{background-image:url(/assets/images/backgrounds/header-bg.png);background-position:top}md-dialog.contact-trigger-dialog md-toolbar .title{font-size:17px}md-dialog.contact-trigger-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}md-dialog.contact-trigger-dialog md-dialog-actions button.select-button{position:absolute;right:0;margin-right:16px}md-dialog md-grid-list.one-row-layout{height:150px;max-height:150px}md-dialog md-grid-list.two-rows-layout{height:300px;max-height:300px}md-dialog md-card.contact-info:hover{background-color:#e9eef1ad}@media screen and (max-width:1280px){md-dialog.contact-trigger-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.contact-trigger-dialog{width:90%}}md-dialog.agent-dialog{max-width:720px;width:720px}md-dialog.agent-dialog md-dialog-content{display:block;position:relative}md-dialog.agent-dialog md-toolbar .title{font-size:17px}md-dialog.agent-dialog md-input-container textarea{min-height:150px}md-dialog.agent-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.agent-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.agent-dialog .date-container{padding:16px 0 24px 0}md-dialog.agent-dialog .error-list{font-size:13px}md-dialog.agent-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.agent-dialog .error-list .error .message{font-weight:500}md-dialog.agent-dialog .error-list .error .md-button{margin:0}md-dialog.agent-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.agent-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.details-dialog{max-width:500px;width:500px}md-dialog.details-dialog md-dialog-content{display:block;position:relative}md-dialog.details-dialog md-toolbar .title{font-size:17px}md-dialog.details-dialog md-input-container textarea{min-height:150px}md-dialog.details-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.details-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.details-dialog .date-container{padding:16px 0 24px 0}md-dialog.details-dialog .error-list{font-size:13px}md-dialog.details-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.details-dialog .error-list .error .message{font-weight:500}md-dialog.details-dialog .error-list .error .md-button{margin:0}md-dialog.details-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.details-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#interaction-app .tags{font-size:12px}#interaction-app .tags .tag{border-radius:2px;padding:3px 8px;background-color:rgba(0,0,0,.08)}#interaction-app .tags .tag .tag-color{width:8px;height:8px;margin-right:8px;border-radius:50%}#interaction-app .content-card{position:relative;height:100%}#interaction-app .content-card .interaction{background:linear-gradient(to bottom,rgba(255,255,255,.8) 0,rgba(255,255,255,.6) 20%,rgba(255,255,255,.8))}#interaction-app .content-card .interaction .avatar-small{width:30px;min-width:30px;height:30px;line-height:30px;margin:0 8px 0 0;border-radius:50%;font-size:17px;font-weight:500;text-align:center;color:#fff}#interaction-app .content-card .interaction .interaction-agents{min-height:40px;background-color:#f3f4f5;color:rgba(0,0,0,.87);border-bottom:1px solid rgba(0,0,0,.08)}#interaction-app .content-card .interaction .interaction-agents .responsive-interactions-button{padding:0}#interaction-app .content-card .interaction .interaction-agents .interaction-contact{cursor:pointer}#interaction-app .content-card .interaction .interaction-agents .interaction-contact .avatar{margin-right:16px}#interaction-app .content-card .interaction .interaction-toolbar{min-height:64px;background-color:#f3f4f5;color:rgba(0,0,0,.87);border-bottom:1px solid rgba(0,0,0,.08)}#interaction-app .content-card .interaction .interaction-toolbar md-icon{color:rgba(0,0,0,.87)}#interaction-app .content-card .interaction .interaction-toolbar .responsive-interactions-button{padding:0}#interaction-app .content-card .interaction .interaction-toolbar .interaction-contact{cursor:pointer}#interaction-app .content-card .interaction .interaction-toolbar .interaction-contact .avatar{margin-right:16px}#interaction-app .content-card .interaction .cannedarea{margin-right:7px;font-size:14px;border:1px solid #ccc;border-radius:3px;align-self:stretch}#interaction-app .content-card .interaction .cannedarea md-autocomplete-wrap{padding:0 1em}#interaction-app .content-card .interaction .emojionearea{margin-right:7px}#interaction-app .content-card .interaction #interaction-content{background:url(/assets/images/patterns/circles-light.png) repeat}#interaction-app .content-card .interaction #interaction-content .message-row .mail-content{padding:24px 0}#interaction-app .content-card .interaction #interaction-content .message-row .mail-content .subject{color:rgba(0,0,0,.54)}#interaction-app .content-card .interaction #interaction-content .message-row .mail-content .subject .subject-text{margin-right:4px;text-transform:lowercase}#interaction-app .content-card .interaction #interaction-content .message-row .mail-content .info{padding-bottom:16px}#interaction-app .content-card .interaction #interaction-content .message-row .mail-content .info .avatar{margin-right:16px}#interaction-app .content-card .interaction #interaction-content .message-row .mail-content .info .name{margin-right:8px;font-weight:500}#interaction-app .content-card .interaction #interaction-content .message-row .mail-content .info .toggle-details{padding-top:16px;cursor:pointer;font-weight:500}#interaction-app .content-card .interaction #interaction-content .message-row .mail-content .info .details{padding-top:8px}#interaction-app .content-card .interaction #interaction-content .message-row .mail-content .info .details .title{font-weight:500;margin-right:6px}#interaction-app .content-card .interaction #interaction-content .message-row .mail-content .info .details .detail{color:rgba(0,0,0,.54)}#interaction-app .content-card .interaction #interaction-content .message-row .bubble{position:relative;padding:6px 7px 8px 9px;background-color:#fff;border:1px solid #dcdfe1;border-radius:6px;word-break:break-word}#interaction-app .content-card .interaction #interaction-content .message-row .bubble:after,#interaction-app .content-card .interaction #interaction-content .message-row .bubble:before{content:' ';position:absolute;width:0;height:0}#interaction-app .content-card .interaction #interaction-content .message-row .bubble:after{left:-7px;right:auto;top:0;bottom:auto;border:11px solid;border-color:#fff transparent transparent transparent}#interaction-app .content-card .interaction #interaction-content .message-row .bubble:before{left:-9px;right:auto;top:-1px;bottom:auto;border:8px solid;border-color:#dcdfe1 transparent transparent transparent}#interaction-app .content-card .interaction #interaction-content .message-row .bubble .time{font-size:11px;margin-top:0;text-align:right}#interaction-app .content-card .interaction #interaction-content .message-row .bubble .message{white-space:pre-wrap}#interaction-app .content-card .interaction #interaction-content .message-row .bubble .message span{word-break:break-all}#interaction-app .content-card .interaction #interaction-content .message-row.in{padding:5px}#interaction-app .content-card .interaction #interaction-content .message-row.in .avatar{margin:0 16px 0 0}#interaction-app .content-card .interaction #interaction-content .message-row.in-right-aligned{padding:5px;align-items:flex-end}#interaction-app .content-card .interaction #interaction-content .message-row.in-right-aligned .avatar{order:2;margin:0 0 0 16px}#interaction-app .content-card .interaction #interaction-content .message-row.in-right-aligned .bubble{margin-left:auto;order:1}#interaction-app .content-card .interaction #interaction-content .message-row.in-right-aligned .bubble:after{right:-9px;left:auto;top:auto;bottom:0;border-color:transparent transparent #e8f5e9 transparent}#interaction-app .content-card .interaction #interaction-content .message-row.in-right-aligned .bubble:before{right:-11px;left:auto;-moz-transform:scaleX(-1);-o-transform:scaleX(-1);-webkit-transform:scaleX(-1);transform:scaleX(-1)}#interaction-app .content-card .interaction #interaction-content .message-row.out{padding:5px;align-items:flex-end}#interaction-app .content-card .interaction #interaction-content .message-row.out .avatar{order:2;margin:0 0 0 16px}#interaction-app .content-card .interaction #interaction-content .message-row.out .bubble{margin-left:auto;background-color:#e8f5e9;border:1px solid #dfebe0;order:1}#interaction-app .content-card .interaction #interaction-content .message-row.out .bubble:after{right:-7px;left:auto;top:auto;bottom:0;border-color:transparent transparent #e8f5e9 transparent}#interaction-app .content-card .interaction #interaction-content .message-row.out .bubble:before{right:-9px;left:auto;top:auto;bottom:-1px;border-color:transparent transparent #dfebe0 transparent}#interaction-app .content-card .interaction #interaction-content .message-row.out-left-aligned{padding:5px}#interaction-app .content-card .interaction #interaction-content .message-row.out-left-aligned .avatar{order:1;margin:0 16px 0 0}#interaction-app .content-card .interaction #interaction-content .message-row.out-left-aligned .bubble{background-color:#e8f5e9;border:1px solid #dfebe0;order:2}#interaction-app .content-card .interaction #interaction-content .message-row.out-left-aligned .bubble:after{right:-7px;left:auto;top:auto;bottom:0;border-color:transparent transparent #e8f5e9 transparent}#interaction-app .content-card .interaction #interaction-content .message-row.out-left-aligned .bubble:before{right:-9px;left:auto;top:auto;bottom:-1px;border-color:transparent transparent #dfebe0 transparent}#interaction-app .content-card .interaction .interaction-footer{min-height:64px;max-height:180px;background-color:#f3f4f5;color:rgba(0,0,0,.87);border-top:1px solid rgba(0,0,0,.08);padding:8px 8px 8px 16px}#interaction-app .content-card .interaction .interaction-footer .reply-form md-input-container{margin:0;padding-right:16px}#interaction-app .content-card .interaction .interaction-footer .reply-form md-input-container textarea{overflow:auto;max-height:80px;transition:height .2s ease}#interaction-app .content-card .interaction .interaction-footer .reply-form md-input-container textarea.grow{height:80px}#interaction-app .content-card .interaction .interaction-footer .reply-form md-input-container .md-errors-spacer{display:none}#interaction-app .content-card .interaction .interaction-footer .reply-form .md-button{margin:0}#interaction-app .content-card .info md-list-item{min-height:40px;height:52px}#interaction-app .content-card .start-point{background:linear-gradient(to bottom,rgba(255,255,255,.8) 0,rgba(255,255,255,.6) 20%,rgba(255,255,255,.8))}#interaction-app .content-card .start-point .big-circle{background:linear-gradient(to bottom,rgba(255,255,255,.8) 0,rgba(255,255,255,.6) 20%,rgba(255,255,255,.8));border-radius:50%;width:300px;height:300px;line-height:300px;text-align:center}#interaction-app .content-card .start-point .app-title{font-weight:500;font-size:32px;margin:12px 0}#interaction-app .content-card .start-point .secondary-text{font-size:16px}#interaction-app .content-card .sidenav md-toolbar{border-bottom:1px solid rgba(0,0,0,.08)}#interaction-app .content-card .sidenav md-toolbar .md-toolbar-tools-bottom .search{height:36px;line-height:36px;padding:8px;background:#fff;font-size:13px}#interaction-app .content-card .sidenav md-toolbar .md-toolbar-tools-bottom .search .icon{margin:0;color:rgba(0,0,0,.54)}#interaction-app .content-card .sidenav md-toolbar .md-toolbar-tools-bottom .search input{padding-left:12px;height:36px;color:rgba(0,0,0,.54)}#interaction-app .content-card .sidenav md-list.contact-list,#interaction-app .content-card .sidenav md-list.interaction-list{position:relative;transition:all .2s ease-out}#interaction-app .content-card .sidenav md-list.contact-list .subheader,#interaction-app .content-card .sidenav md-list.contact-list md-list-item,#interaction-app .content-card .sidenav md-list.interaction-list .subheader,#interaction-app .content-card .sidenav md-list.interaction-list md-list-item{position:absolute;right:0;left:0;width:100%;transition:transform .2s ease-out;background:#fff;will-change:transform}#interaction-app .content-card .sidenav md-list.contact-list .subheader.ng-leave,#interaction-app .content-card .sidenav md-list.contact-list md-list-item.ng-leave,#interaction-app .content-card .sidenav md-list.interaction-list .subheader.ng-leave,#interaction-app .content-card .sidenav md-list.interaction-list md-list-item.ng-leave{transform:translateY(0);display:none}#interaction-app .content-card .sidenav md-list.contact-list .subheader.ng-leave.ng-leave-active,#interaction-app .content-card .sidenav md-list.contact-list md-list-item.ng-leave.ng-leave-active,#interaction-app .content-card .sidenav md-list.interaction-list .subheader.ng-leave.ng-leave-active,#interaction-app .content-card .sidenav md-list.interaction-list md-list-item.ng-leave.ng-leave-active{transform:translateY(-100%)}#interaction-app .content-card .sidenav md-list.contact-list .subheader.ng-hide,#interaction-app .content-card .sidenav md-list.contact-list md-list-item.ng-hide,#interaction-app .content-card .sidenav md-list.interaction-list .subheader.ng-hide,#interaction-app .content-card .sidenav md-list.interaction-list md-list-item.ng-hide{display:none}#interaction-app .content-card .sidenav md-list.contact-list .subheader.ng-hide-add-active,#interaction-app .content-card .sidenav md-list.contact-list .subheader.ng-hide-remove-active,#interaction-app .content-card .sidenav md-list.contact-list md-list-item.ng-hide-add-active,#interaction-app .content-card .sidenav md-list.contact-list md-list-item.ng-hide-remove-active,#interaction-app .content-card .sidenav md-list.interaction-list .subheader.ng-hide-add-active,#interaction-app .content-card .sidenav md-list.interaction-list .subheader.ng-hide-remove-active,#interaction-app .content-card .sidenav md-list.interaction-list md-list-item.ng-hide-add-active,#interaction-app .content-card .sidenav md-list.interaction-list md-list-item.ng-hide-remove-active{display:block;transition-property:all}#interaction-app .content-card .sidenav md-list.contact-list .subheader,#interaction-app .content-card .sidenav md-list.interaction-list .subheader{padding-left:16px;font-size:20px;font-weight:300;height:88px;line-height:88px}#interaction-app .content-card .sidenav .no-results-message{position:absolute;width:100%;height:88px;padding:16px;background:#fff;font-size:15px;font-weight:400}#interaction-app .avatar-wrapper{position:relative}#interaction-app .avatar-wrapper .avatar{margin-top:0;margin-bottom:0}#interaction-app .status{position:absolute;top:28px;left:28px;border-radius:50%}#interaction-app .status.online{color:#4caf50}#interaction-app .status.online:before{content:'\e709'}#interaction-app .status.do-not-disturb{color:#f44336}#interaction-app .status.do-not-disturb:before{content:'\e912'}#interaction-app .status.away{background-color:#ffc107;color:#fff}#interaction-app .status.away:before{content:'\e727'}#interaction-app .status.offline{color:#4caf50;background-color:#fff}#interaction-app .status.offline:before{content:'\e704'}#interaction-app .editable-wrap{position:relative}#interaction-app .editable-wrap .editable-controls{display:flex;flex-direction:row;align-items:center;width:100%}#interaction-app .editable-wrap .editable-controls .editable-input{width:inherit;background-color:#fff;padding:8px;border:1px solid rgba(0,0,0,.12)}#interaction-app .editable-wrap .editable-controls .editable-buttons{display:inherit}#interaction-app .editable-wrap .editable-controls .editable-buttons .md-button{margin:0}#interaction-app .editable-wrap .editable-controls .editable-buttons .md-button:first-of-type{padding-right:0}#interaction-app .editable-wrap .editable-controls .editable-buttons .md-button .icon-cancel{color:rgba(0,0,0,.32)}#interaction-app .editable-click{cursor:pointer;text-decoration:none;color:inherit;border-bottom:none}#interaction-app .emoji-picker-icon{right:5px;cursor:pointer}#interaction-app .input-show-hide{transition:all linear .5s}#interaction-app .input-show-hide.ng-hide{opacity:0}#interaction-app div.interaction-reply-button-container{display:inline;padding-bottom:14px}#timeline{position:relative;height:auto;padding-bottom:30px}#timeline:before{display:block;position:absolute;z-index:10;content:'';width:2px;background:rgba(0,0,0,.08);top:0;left:50%;bottom:0;margin-left:-1px}#timeline .ms-timeline-item{overflow:hidden;position:relative;z-index:20;width:100%;margin:0 auto;max-width:1200px}#timeline .ms-timeline-item .timeline-card{order:1}#timeline .ms-timeline-item .timeline-card .interaction .header .avatar .image{display:block;width:40px;height:40px;border-radius:20px}#timeline .ms-timeline-item .timeline-card .interaction .media .image{width:100%}#timeline .ms-timeline-item .timeline-point{position:absolute;width:40px;height:40px;line-height:40px;text-align:center;border-radius:50%;left:50%;margin:16px 0 0 -28px;order:2}#timeline .ms-timeline-item .timeline-point md-icon{color:#fff}#timeline .ms-timeline-item .timeline-detail{flex:50% 0 0;padding-top:28px;order:3}#timeline .ms-timeline-item .timeline-detail .time{font-size:15px;padding-left:68px}#timeline .ms-timeline-item .timeline-detail .event{color:rgba(0,0,0,.54);padding-left:68px}#timeline .ms-timeline-item:nth-child(odd) .timeline-card{flex-direction:row-reverse}#timeline .ms-timeline-item:nth-child(even) .timeline-card{order:3;padding-right:0}#timeline .ms-timeline-item:nth-child(even) .timeline-card ms-card{padding-left:84px}#timeline .ms-timeline-item:nth-child(even) .timeline-detail{order:1;padding-left:0;text-align:right}#timeline .ms-timeline-item:nth-child(even) .timeline-detail .event,#timeline .ms-timeline-item:nth-child(even) .timeline-detail .time{padding-right:68px}#timeline .ms-timeline-item:first-child{padding-top:15px}#timeline .ms-timeline-item.animate .timeline-card{animation:slide-in-left .4s}#timeline .ms-timeline-item.animate .timeline-point{animation:slide-in-bottom .4s}#timeline .ms-timeline-item.animate .timeline-detail{animation:slide-in-right .4s}#timeline .ms-timeline-item:nth-child(even).animate .timeline-card{animation:slide-in-right .4s}#timeline .ms-timeline-item:nth-child(even).animate .timeline-detail{animation:slide-in-left .4s}#timeline.timeline-left .ms-timeline-item .timeline-card{order:1}#timeline.timeline-left .ms-timeline-item .timeline-card ms-card{padding-right:68px;padding-left:0;margin-left:auto}#timeline.timeline-left .ms-timeline-item .timeline-detail{order:3;text-align:left}#timeline.timeline-left .ms-timeline-item.animate .timeline-card{animation:slide-in-left .4s}#timeline.timeline-left .ms-timeline-item.animate .timeline-detail{animation:slide-in-right .4s}#timeline.timeline-right .ms-timeline-item .timeline-card{order:3}#timeline.timeline-right .ms-timeline-item .timeline-card ms-card{padding-left:68px;padding-right:0;margin-right:auto}#timeline.timeline-right .ms-timeline-item .timeline-detail{order:1;text-align:right}#timeline.timeline-right .ms-timeline-item .timeline-detail .event,#timeline.timeline-right .ms-timeline-item .timeline-detail .time{padding-right:68px;padding-left:0}#timeline.timeline-right .ms-timeline-item.animate .timeline-card{animation:slide-in-right .4s}#timeline.timeline-right .ms-timeline-item.animate .timeline-detail{animation:slide-in-left .4s}@media screen and (max-width:1280px){#timeline .ms-timeline-item,#timeline.timeline-left .ms-timeline-item,#timeline.timeline-right .ms-timeline-item{display:block}#timeline .ms-timeline-item .timeline-point,#timeline.timeline-left .ms-timeline-item .timeline-point,#timeline.timeline-right .ms-timeline-item .timeline-point{position:relative;left:auto;margin:0 auto 16px auto;padding:0}#timeline .ms-timeline-item .timeline-detail,#timeline.timeline-left .ms-timeline-item .timeline-detail,#timeline.timeline-right .ms-timeline-item .timeline-detail{padding:2px;margin-bottom:16px}#timeline .ms-timeline-item .timeline-detail .event,#timeline .ms-timeline-item .timeline-detail .time,#timeline.timeline-left .ms-timeline-item .timeline-detail .event,#timeline.timeline-left .ms-timeline-item .timeline-detail .time,#timeline.timeline-right .ms-timeline-item .timeline-detail .event,#timeline.timeline-right .ms-timeline-item .timeline-detail .time{padding-right:0;padding-left:0;text-align:center}#timeline .ms-timeline-item .timeline-card ms-card,#timeline.timeline-left .ms-timeline-item .timeline-card ms-card,#timeline.timeline-right .ms-timeline-item .timeline-card ms-card{margin:0 auto;padding:0}#timeline .ms-timeline-item:nth-child(even) .timeline-point,#timeline.timeline-left .ms-timeline-item:nth-child(even) .timeline-point,#timeline.timeline-right .ms-timeline-item:nth-child(even) .timeline-point{position:relative;left:auto;margin:0 auto 16px auto;padding:0}#timeline .ms-timeline-item:nth-child(even) .timeline-detail,#timeline.timeline-left .ms-timeline-item:nth-child(even) .timeline-detail,#timeline.timeline-right .ms-timeline-item:nth-child(even) .timeline-detail{padding:2px;margin-bottom:16px}#timeline .ms-timeline-item:nth-child(even) .timeline-detail .event,#timeline .ms-timeline-item:nth-child(even) .timeline-detail .time,#timeline.timeline-left .ms-timeline-item:nth-child(even) .timeline-detail .event,#timeline.timeline-left .ms-timeline-item:nth-child(even) .timeline-detail .time,#timeline.timeline-right .ms-timeline-item:nth-child(even) .timeline-detail .event,#timeline.timeline-right .ms-timeline-item:nth-child(even) .timeline-detail .time{padding-right:0;padding-left:0;text-align:center}#timeline .ms-timeline-item:nth-child(even) .timeline-card ms-card,#timeline.timeline-left .ms-timeline-item:nth-child(even) .timeline-card ms-card,#timeline.timeline-right .ms-timeline-item:nth-child(even) .timeline-card ms-card{margin:0 auto;padding:0}}md-dialog.compose-dialog{max-width:720px;width:720px}md-dialog.compose-dialog.mail-no-secret{max-height:97%;max-width:90%!important;width:100%!important}md-dialog.compose-dialog md-dialog-content{display:block;position:relative}md-dialog.compose-dialog md-toolbar .title{font-size:17px}md-dialog.compose-dialog md-toolbar .vertical-divider{position:absolute;border-right-width:.5px;border-right-style:solid;height:100%}md-dialog.compose-dialog md-chips md-chip{font-size:12px}md-dialog.compose-dialog md-chips .md-chip-input-container{width:100%}md-dialog.compose-dialog .to{position:relative}md-dialog.compose-dialog .to.hidden-cc input{padding-right:32px}md-dialog.compose-dialog .to.hidden-cc.hidden-bcc input{padding-right:56px}md-dialog.compose-dialog .to.hidden-bcc input{padding-right:32px}md-dialog.compose-dialog .to .cc-bcc{position:absolute;bottom:8px;right:0}md-dialog.compose-dialog .to .cc-bcc .show-bcc,md-dialog.compose-dialog .to .cc-bcc .show-cc{cursor:pointer;font-size:12px}md-dialog.compose-dialog .to .cc-bcc .show-bcc{margin-left:8px}md-dialog.compose-dialog .attachment-list{font-size:13px}md-dialog.compose-dialog .attachment-list .attachment{background-color:rgba(0,0,0,.08);border:1px solid rgba(0,0,0,.16);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.compose-dialog .attachment-list .attachment .filename{font-weight:500}md-dialog.compose-dialog .attachment-list .attachment .md-button{margin:0}md-dialog.compose-dialog .attachment-list .attachment:last-child{margin-bottom:0}md-dialog.compose-dialog .error-list{font-size:13px}md-dialog.compose-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.compose-dialog .error-list .error .message{font-weight:500}md-dialog.compose-dialog .error-list .error .md-button{margin:0}md-dialog.compose-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.compose-dialog .emojionearea{max-width:700px;min-height:300px}md-dialog.compose-dialog md-dialog-actions{position:relative;justify-content:space-between;border-top:1px solid rgba(0,0,0,.12);background-color:rgba(0,0,0,.03)}@media screen and (max-width:960px){md-dialog.compose-dialog{width:80%}}@media screen and (max-width:600px){md-dialog.compose-dialog{width:90%}}md-dialog.disposition-dialog{max-width:720px;width:720px}md-dialog.disposition-dialog md-dialog-content{display:block;position:relative}md-dialog.disposition-dialog md-toolbar .title{font-size:17px}md-dialog.disposition-dialog md-input-container textarea{min-height:150px}md-dialog.disposition-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.disposition-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.disposition-dialog .date-container{padding:16px 0 24px 0}md-dialog.disposition-dialog .error-list{font-size:13px}md-dialog.disposition-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.disposition-dialog .error-list .error .message{font-weight:500}md-dialog.disposition-dialog .error-list .error .md-button{margin:0}md-dialog.disposition-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.disposition-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.disposition-dialog{max-width:720px;width:720px}md-dialog.disposition-dialog md-dialog-content{display:block;position:relative}md-dialog.disposition-dialog md-toolbar .title{font-size:17px}md-dialog.disposition-dialog md-input-container textarea{min-height:150px}md-dialog.disposition-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.disposition-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.disposition-dialog .date-container{padding:16px 0 24px 0}md-dialog.disposition-dialog .error-list{font-size:13px}md-dialog.disposition-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.disposition-dialog .error-list .error .message{font-weight:500}md-dialog.disposition-dialog .error-list .error .md-button{margin:0}md-dialog.disposition-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.disposition-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.disposition-dialog{max-width:720px;width:720px}md-dialog.disposition-dialog md-dialog-content{display:block;position:relative}md-dialog.disposition-dialog md-toolbar .title{font-size:17px}md-dialog.disposition-dialog md-input-container textarea{min-height:150px}md-dialog.disposition-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.disposition-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.disposition-dialog .date-container{padding:16px 0 24px 0}md-dialog.disposition-dialog .error-list{font-size:13px}md-dialog.disposition-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.disposition-dialog .error-list .error .message{font-weight:500}md-dialog.disposition-dialog .error-list .error .md-button{margin:0}md-dialog.disposition-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.disposition-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#dashboard-general>.center>.header{height:160px;min-height:160px;max-height:160px;padding-bottom:0}#dashboard-general>.center>.header .selected-general{background:rgba(0,0,0,.12);color:#fff;padding:8px 16px;height:40px;line-height:24px;font-size:16px}#dashboard-general>.center>.header .general-selector{margin-left:1px;border-radius:0;background:rgba(0,0,0,.12)}#dashboard-general>.center>.header .general-selector md-icon{color:#fff}#dashboard-general>.center>.content{background:0 0;padding:0}#dashboard-general>.center>.content>md-tabs>md-tabs-wrapper{background:#fff;box-shadow:0 1px 3px 0 rgba(0,0,0,.2),0 1px 1px 0 rgba(0,0,0,.14),0 2px 1px -1px rgba(0,0,0,.12);padding:0 24px}#dashboard-general>.center>.content>md-tabs>md-tabs-wrapper md-tabs-canvas{height:56px}#dashboard-general>.center>.content>md-tabs>md-tabs-wrapper md-tabs-canvas md-pagination-wrapper{height:56px}#dashboard-general>.center>.content>md-tabs>md-tabs-wrapper md-tabs-canvas .md-tab{padding:16px 24px;text-transform:none}#dashboard-general>.center>.content>md-tabs:not(.md-dynamic-height) md-tabs-content-wrapper{top:56px}#dashboard-general>.center>.content>md-tabs>md-tabs-content-wrapper md-tab-content{padding:12px}#dashboard-general>.sidenav{width:330px;min-width:330px;max-width:330px;padding:0;z-index:51;box-shadow:0 5px 5px -3px rgba(0,0,0,.2),0 8px 10px 1px rgba(0,0,0,.14),0 3px 14px 2px rgba(0,0,0,.12)}#dashboard-general>.sidenav.md-locked-open{width:250px;min-width:250px;max-width:250px;z-index:2;box-shadow:none;background:#eee}#dashboard-general .dashboard-container{padding:24px;margin-bottom:24px}#dashboard-general .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.faxAccount-dialog{max-width:720px;width:720px}md-dialog.faxAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.faxAccount-dialog md-toolbar .title{font-size:17px}md-dialog.faxAccount-dialog md-input-container textarea{min-height:150px}md-dialog.faxAccount-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.faxAccount-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.faxAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.faxAccount-dialog .error-list{font-size:13px}md-dialog.faxAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.faxAccount-dialog .error-list .error .message{font-weight:500}md-dialog.faxAccount-dialog .error-list .error .md-button{margin:0}md-dialog.faxAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.faxAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.faxAccount-dialog{max-width:720px;width:720px}md-dialog.faxAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.faxAccount-dialog md-toolbar .title{font-size:17px}md-dialog.faxAccount-dialog md-input-container textarea{min-height:150px}md-dialog.faxAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.faxAccount-dialog .error-list{font-size:13px}md-dialog.faxAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.faxAccount-dialog .error-list .error .message{font-weight:500}md-dialog.faxAccount-dialog .error-list .error .md-button{margin:0}md-dialog.faxAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.faxAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.faxAccount-dialog{max-width:720px;width:720px}md-dialog.faxAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.faxAccount-dialog md-toolbar .title{font-size:17px}md-dialog.faxAccount-dialog md-input-container textarea{min-height:150px}md-dialog.faxAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.faxAccount-dialog .error-list{font-size:13px}md-dialog.faxAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.faxAccount-dialog .error-list .error .message{font-weight:500}md-dialog.faxAccount-dialog .error-list .error .md-button{margin:0}md-dialog.faxAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.faxAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.faxAccount-dialog{max-width:720px;width:720px}md-dialog.faxAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.faxAccount-dialog md-toolbar .title{font-size:17px}md-dialog.faxAccount-dialog md-input-container textarea{min-height:150px}md-dialog.faxAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.faxAccount-dialog .error-list{font-size:13px}md-dialog.faxAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.faxAccount-dialog .error-list .error .message{font-weight:500}md-dialog.faxAccount-dialog .error-list .error .md-button{margin:0}md-dialog.faxAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.faxAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.faxAccount-dialog{max-width:720px;width:720px}md-dialog.faxAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.faxAccount-dialog md-toolbar .title{font-size:17px}md-dialog.faxAccount-dialog md-input-container textarea{min-height:150px}md-dialog.faxAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.faxAccount-dialog .error-list{font-size:13px}md-dialog.faxAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.faxAccount-dialog .error-list .error .message{font-weight:500}md-dialog.faxAccount-dialog .error-list .error .md-button{margin:0}md-dialog.faxAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.faxAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.faxAccount-dialog{max-width:720px;width:720px}md-dialog.faxAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.faxAccount-dialog md-toolbar .title{font-size:17px}md-dialog.faxAccount-dialog md-input-container textarea{min-height:150px}md-dialog.faxAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.faxAccount-dialog .error-list{font-size:13px}md-dialog.faxAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.faxAccount-dialog .error-list .error .message{font-weight:500}md-dialog.faxAccount-dialog .error-list .error .md-button{margin:0}md-dialog.faxAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.faxAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.faxAccount-dialog{max-width:720px;width:720px}md-dialog.faxAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.faxAccount-dialog md-toolbar .title{font-size:17px}md-dialog.faxAccount-dialog md-input-container textarea{min-height:150px}md-dialog.faxAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.faxAccount-dialog .error-list{font-size:13px}md-dialog.faxAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.faxAccount-dialog .error-list .error .message{font-weight:500}md-dialog.faxAccount-dialog .error-list .error .md-button{margin:0}md-dialog.faxAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.faxAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.faxAccount-dialog{max-width:720px;width:720px}md-dialog.faxAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.faxAccount-dialog md-toolbar .title{font-size:17px}md-dialog.faxAccount-dialog md-input-container textarea{min-height:150px}md-dialog.faxAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.faxAccount-dialog .error-list{font-size:13px}md-dialog.faxAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.faxAccount-dialog .error-list .error .message{font-weight:500}md-dialog.faxAccount-dialog .error-list .error .md-button{margin:0}md-dialog.faxAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.faxAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.faxAccount-dialog{max-width:720px;width:720px}md-dialog.faxAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.faxAccount-dialog md-toolbar .title{font-size:17px}md-dialog.faxAccount-dialog md-input-container textarea{min-height:150px}md-dialog.faxAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.faxAccount-dialog .error-list{font-size:13px}md-dialog.faxAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.faxAccount-dialog .error-list .error .message{font-weight:500}md-dialog.faxAccount-dialog .error-list .error .md-button{margin:0}md-dialog.faxAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.faxAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.faxAccount-dialog{max-width:720px;width:720px}md-dialog.faxAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.faxAccount-dialog md-toolbar .title{font-size:17px}md-dialog.faxAccount-dialog md-input-container textarea{min-height:150px}md-dialog.faxAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.faxAccount-dialog .error-list{font-size:13px}md-dialog.faxAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.faxAccount-dialog .error-list .error .message{font-weight:500}md-dialog.faxAccount-dialog .error-list .error .md-button{margin:0}md-dialog.faxAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.faxAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#fax-faxAccount .header{height:76px;min-height:76px;max-height:76px}#fax-faxAccount .header .goto-faxAccounts-button{margin-right:16px}#fax-faxAccount .header .faxAccount-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#fax-faxAccount .header .faxAccount-image img{height:100%;width:auto;max-width:none}#fax-faxAccount .header .subtitle{margin:6px 0 0 0}#fax-faxAccount .faxAccount-detail-form-container{padding:24px;margin-bottom:24px}#fax-faxAccount .faxAccount-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#fax-faxAccount .faxAccount-detail-form-container .handle{cursor:move}#fax-faxAccount .faxAccount-detail-form-container md-input-container md-switch{margin:0!important}#fax-faxAccount .faxAccount-detail-form-container #faxAccount-image-uploader{position:relative}#fax-faxAccount .faxAccount-detail-form-container #faxAccount-image-uploader.dropping .drop-text{display:flex}#fax-faxAccount .faxAccount-detail-form-container #faxAccount-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#fax-faxAccount .faxAccount-detail-form-container #faxAccount-image-uploader .upload-button{margin-bottom:16px}#fax-faxAccount .faxAccount-detail-form-container #faxAccount-image-uploader .faxAccount-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#fax-faxAccount .faxAccount-detail-form-container #faxAccount-image-uploader .faxAccount-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#fax-faxAccount .faxAccount-detail-form-container #faxAccount-image-uploader .faxAccount-image .media{max-height:100%}#fax-faxAccount md-table-container thead tr th:not(:first-child):not(.no-padding){padding:0 20px 0 0!important}#fax-faxAccount md-table-container thead th.md-checkbox-column:not(.no-padding){padding:0 24px!important}#fax-faxAccount md-table-container tbody tr td:not(:first-child):not(.no-padding):not(.actions-padding){padding:0 20px 0 0!important}#fax-faxAccount md-table-container.font-size-12 td.md-cell{font-size:12px!important}@media screen and (min-width:1921px){#fax-faxAccount .actionAppData{width:800px!important}}@media screen and (max-width:1920px){#fax-faxAccount .actionAppData{width:700px!important}}@media screen and (min-width:1751px) and (max-width:1919px){#fax-faxAccount .actionAppData{width:600px!important}}@media screen and (min-width:1601px) and (max-width:1750px){#fax-faxAccount .actionAppData{width:500px!important}}@media screen and (min-width:1537px) and (max-width:1600px){#fax-faxAccount .actionAppData{width:450px!important}}@media screen and (min-width:1281px) and (max-width:1536px){#fax-faxAccount .actionAppData{width:300px!important}}@media screen and (max-width:1280px){#fax-faxAccount .actionAppData{width:150px!important}}@media screen and (max-width:960px){#fax-faxAccount .actionAppData{width:80px!important}}#faxAccounts{position:relative}#faxAccounts>.header{height:76px;min-height:76px;max-height:76px}#faxAccounts>.header .logo .logo-icon{margin:0 16px 0 0}#faxAccounts>.header .logo .logo-text{font-size:24px}#faxAccounts>.header md-icon{color:#fff}#faxAccounts>.header .search-input-wrapper{position:relative}#faxAccounts>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#faxAccounts>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#faxAccounts>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#faxAccounts>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#faxAccounts>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#faxAccounts>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#faxAccounts>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#faxAccounts>.header.selected-bar .close-button-wrapper{width:244px}#faxAccounts>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#faxAccounts>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#faxAccounts>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#faxAccounts #add-faxAccount-button{position:fixed;bottom:8px;right:8px;padding:0}#faxAccounts #upload-faxAccount-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.faxQueue-dialog{max-width:720px;width:720px}md-dialog.faxQueue-dialog md-dialog-content{display:block;position:relative}md-dialog.faxQueue-dialog md-toolbar .title{font-size:17px}md-dialog.faxQueue-dialog md-input-container textarea{min-height:150px}md-dialog.faxQueue-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.faxQueue-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.faxQueue-dialog .date-container{padding:16px 0 24px 0}md-dialog.faxQueue-dialog .error-list{font-size:13px}md-dialog.faxQueue-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.faxQueue-dialog .error-list .error .message{font-weight:500}md-dialog.faxQueue-dialog .error-list .error .md-button{margin:0}md-dialog.faxQueue-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.faxQueue-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#fax-faxQueue .header{height:76px;min-height:76px;max-height:76px}#fax-faxQueue .header .goto-faxQueues-button{margin-right:16px}#fax-faxQueue .header .faxQueue-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#fax-faxQueue .header .faxQueue-image img{height:100%;width:auto;max-width:none}#fax-faxQueue .header .subtitle{margin:6px 0 0 0}#fax-faxQueue .faxQueue-detail-form-container{padding:24px;margin-bottom:24px}#fax-faxQueue .faxQueue-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#fax-faxQueue .faxQueue-detail-form-container .handle{cursor:move}#fax-faxQueue .faxQueue-detail-form-container md-input-container md-switch{margin:0!important}#fax-faxQueue .faxQueue-detail-form-container #faxQueue-image-uploader{position:relative}#fax-faxQueue .faxQueue-detail-form-container #faxQueue-image-uploader.dropping .drop-text{display:flex}#fax-faxQueue .faxQueue-detail-form-container #faxQueue-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#fax-faxQueue .faxQueue-detail-form-container #faxQueue-image-uploader .upload-button{margin-bottom:16px}#fax-faxQueue .faxQueue-detail-form-container #faxQueue-image-uploader .faxQueue-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#fax-faxQueue .faxQueue-detail-form-container #faxQueue-image-uploader .faxQueue-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#fax-faxQueue .faxQueue-detail-form-container #faxQueue-image-uploader .faxQueue-image .media{max-height:100%}#fax-faxQueue md-table-container thead tr th:not(:first-child):not(.no-padding){padding:0 20px 0 0!important}#fax-faxQueue md-table-container thead th.md-checkbox-column:not(.no-padding){padding:0 24px!important}#fax-faxQueue md-table-container tbody tr td:not(:first-child):not(.no-padding):not(.actions-padding){padding:0 20px 0 0!important}#fax-faxQueue md-table-container.font-size-12 td.md-cell{font-size:12px!important}#faxQueues{position:relative}#faxQueues>.header{height:76px;min-height:76px;max-height:76px}#faxQueues>.header .logo .logo-icon{margin:0 16px 0 0}#faxQueues>.header .logo .logo-text{font-size:24px}#faxQueues>.header md-icon{color:#fff}#faxQueues>.header .search-input-wrapper{position:relative}#faxQueues>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#faxQueues>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#faxQueues>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#faxQueues>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#faxQueues>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#faxQueues>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#faxQueues>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#faxQueues>.header.selected-bar .close-button-wrapper{width:244px}#faxQueues>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#faxQueues>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#faxQueues>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#faxQueues #add-faxQueue-button{position:fixed;bottom:8px;right:8px;padding:0}#faxQueues #upload-faxQueue-button{position:fixed;bottom:8px;right:8px;padding:0}#realtime{height:auto}#realtime>.content .blink{animation:blinker 2s linear infinite}#realtime>.content .avatar-wrapper{position:relative}#realtime>.content .avatar-wrapper .status{position:absolute;bottom:-3px;right:5px}#realtime>.content .search-input-wrapper{position:relative;margin-left:20px}#realtime>.content .search-input-wrapper label{padding:6px;cursor:pointer}#realtime>.content .search-input-wrapper md-input-container{padding-top:20px}#realtime>.content .main .labels{padding:8px 16px}#realtime>.content .main .labels .label{margin:0 0 2px 4px;padding:2px 5px;font-size:11px;white-space:nowrap;border-radius:2px}#realtime>.content .main .status{position:absolute;bottom:-3px;right:5px}#realtime>.content .main .avatar-wrapper{position:relative}#realtime>.content .main .avatar-wrapper .status{position:absolute;bottom:-3px;right:5px}#realtime>.content .custom-column{padding:0 24px!important}@keyframes blinker{50%{opacity:0}}#profile .about-tab{max-width:1200px}#profile .about-tab .about{padding:8px}#profile .about-tab .about .general .location md-icon{line-height:13px!important}#profile .about-tab .about .work .job .company{padding:0 16px 0 0;font-weight:500}#profile .about-tab .about .work .job .date{color:rgba(0,0,0,.54)}#profile .about-tab .about-sidebar{padding:8px 8px 8px 32px}#profile .about-tab .about-sidebar .friends .content .friend{padding:4px}#profile .about-tab .about-sidebar .groups .content .group{margin-bottom:16px}#profile .about-tab .about-sidebar .groups .content .group:last-child{margin-bottom:0}#profile .about-tab .about-sidebar .groups .content .group .logo{border:1px solid rgba(0,0,0,.12);margin-right:16px}#profile .about-tab .about-sidebar .groups .content .group .name{font-weight:500;font-size:15px}#profile .about-tab .about-sidebar .groups .content .group .category,#profile .about-tab .about-sidebar .groups .content .group .members{color:rgba(0,0,0,.54)}#profile .about-tab .about-sidebar .groups .content .group .members{margin-top:16px}@media screen and (max-width:960px){#profile .about-tab .about-sidebar{padding:8px}}#maintenance{height:100%;background:url(/assets/images/backgrounds/tech.png) no-repeat;background-size:cover}#maintenance #maintenance-form-wrapper{flex:1 0 auto;padding:32px}#maintenance #maintenance-form-wrapper #maintenance-form{max-width:384px;padding:32px;background:#fff;text-align:center}#maintenance #maintenance-form-wrapper #maintenance-form .logo{width:128px;height:128px;line-height:128px;font-size:86px;font-weight:500;margin:32px auto;color:#fff;border-radius:2px}#maintenance #maintenance-form-wrapper #maintenance-form .title{font-size:17px;margin-top:16px}#maintenance #maintenance-form-wrapper #maintenance-form .subtitle{margin:16px 0;max-width:300px;color:rgba(0,0,0,.54);font-size:15px}@media screen and (max-width:600px){#maintenance #maintenance-form-wrapper{padding:16px}#maintenance #maintenance-form-wrapper #maintenance-form{padding:24px;width:100%}}md-dialog.deskAccount-dialog{max-width:720px;width:720px}md-dialog.deskAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.deskAccount-dialog md-toolbar .title{font-size:17px}md-dialog.deskAccount-dialog md-input-container textarea{min-height:150px}md-dialog.deskAccount-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.deskAccount-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.deskAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.deskAccount-dialog .error-list{font-size:13px}md-dialog.deskAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.deskAccount-dialog .error-list .error .message{font-weight:500}md-dialog.deskAccount-dialog .error-list .error .md-button{margin:0}md-dialog.deskAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.deskAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#deskAccounts{position:relative}#deskAccounts>.header{height:76px;min-height:76px;max-height:76px}#deskAccounts>.header .logo .logo-icon{margin:0 16px 0 0}#deskAccounts>.header .logo .logo-text{font-size:24px}#deskAccounts>.header md-icon{color:#fff}#deskAccounts>.header .search-input-wrapper{position:relative}#deskAccounts>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#deskAccounts>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#deskAccounts>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#deskAccounts>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#deskAccounts>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#deskAccounts>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#deskAccounts>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#deskAccounts>.header.selected-bar .close-button-wrapper{width:244px}#deskAccounts>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#deskAccounts>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#deskAccounts>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#deskAccounts #add-deskAccount-button{position:fixed;bottom:8px;right:8px;padding:0}#deskAccounts #upload-deskAccount-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.deskConfiguration-dialog{max-width:720px;width:720px}md-dialog.deskConfiguration-dialog md-dialog-content{display:block;position:relative}md-dialog.deskConfiguration-dialog md-toolbar .title{font-size:17px}md-dialog.deskConfiguration-dialog md-input-container textarea{min-height:150px}md-dialog.deskConfiguration-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.deskConfiguration-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.deskConfiguration-dialog .date-container{padding:16px 0 24px 0}md-dialog.deskConfiguration-dialog .error-list{font-size:13px}md-dialog.deskConfiguration-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.deskConfiguration-dialog .error-list .error .message{font-weight:500}md-dialog.deskConfiguration-dialog .error-list .error .md-button{margin:0}md-dialog.deskConfiguration-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.deskConfiguration-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.deskAccount-item-dialog{max-width:720px;width:720px}md-dialog.deskAccount-item-dialog md-dialog-content{display:block;position:relative}md-dialog.deskAccount-item-dialog md-toolbar .title{font-size:17px}md-dialog.deskAccount-item-dialog md-input-container textarea{min-height:150px}md-dialog.deskAccount-item-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.deskAccount-item-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.deskAccount-item-dialog .date-container{padding:16px 0 24px 0}md-dialog.deskAccount-item-dialog .error-list{font-size:13px}md-dialog.deskAccount-item-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.deskAccount-item-dialog .error-list .error .message{font-weight:500}md-dialog.deskAccount-item-dialog .error-list .error .md-button{margin:0}md-dialog.deskAccount-item-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.deskAccount-item-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#integrations-deskAccount .header{height:76px;min-height:76px;max-height:76px}#integrations-deskAccount .header .goto-deskAccounts-button{margin-right:16px}#integrations-deskAccount .header .deskAccount-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#integrations-deskAccount .header .deskAccount-image img{height:100%;width:auto;max-width:none}#integrations-deskAccount .header .subtitle{margin:6px 0 0 0}#integrations-deskAccount .deskAccount-detail-form-container{padding:24px;margin-bottom:24px}#integrations-deskAccount .deskAccount-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#integrations-deskAccount .deskAccount-detail-form-container .handle{cursor:move}#integrations-deskAccount .deskAccount-detail-form-container md-input-container md-switch{margin:0!important}#integrations-deskAccount .deskAccount-detail-form-container #deskAccount-image-uploader{position:relative}#integrations-deskAccount .deskAccount-detail-form-container #deskAccount-image-uploader.dropping .drop-text{display:flex}#integrations-deskAccount .deskAccount-detail-form-container #deskAccount-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#integrations-deskAccount .deskAccount-detail-form-container #deskAccount-image-uploader .upload-button{margin-bottom:16px}#integrations-deskAccount .deskAccount-detail-form-container #deskAccount-image-uploader .deskAccount-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#integrations-deskAccount .deskAccount-detail-form-container #deskAccount-image-uploader .deskAccount-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#integrations-deskAccount .deskAccount-detail-form-container #deskAccount-image-uploader .deskAccount-image .media{max-height:100%}#integrations-deskAccount md-table-container thead tr th:not(:first-child):not(.no-padding){padding:0 20px 0 0!important}#integrations-deskAccount md-table-container thead th.md-checkbox-column:not(.no-padding){padding:0 24px!important}#integrations-deskAccount md-table-container tbody tr td:not(:first-child):not(.no-padding):not(.actions-padding){padding:0 20px 0 0!important}#integrations-deskAccount md-table-container.font-size-12 td.md-cell{font-size:12px!important}md-dialog.dynamics365Account-dialog{max-width:720px;width:720px}md-dialog.dynamics365Account-dialog md-dialog-content{display:block;position:relative}md-dialog.dynamics365Account-dialog md-toolbar .title{font-size:17px}md-dialog.dynamics365Account-dialog md-input-container textarea{min-height:150px}md-dialog.dynamics365Account-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.dynamics365Account-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.dynamics365Account-dialog .date-container{padding:16px 0 24px 0}md-dialog.dynamics365Account-dialog .error-list{font-size:13px}md-dialog.dynamics365Account-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.dynamics365Account-dialog .error-list .error .message{font-weight:500}md-dialog.dynamics365Account-dialog .error-list .error .md-button{margin:0}md-dialog.dynamics365Account-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.dynamics365Account-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#dynamics365Accounts{position:relative}#dynamics365Accounts>.header{height:76px;min-height:76px;max-height:76px}#dynamics365Accounts>.header .logo .logo-icon{margin:0 16px 0 0}#dynamics365Accounts>.header .logo .logo-text{font-size:24px}#dynamics365Accounts>.header md-icon{color:#fff}#dynamics365Accounts>.header .search-input-wrapper{position:relative}#dynamics365Accounts>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#dynamics365Accounts>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#dynamics365Accounts>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#dynamics365Accounts>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#dynamics365Accounts>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#dynamics365Accounts>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#dynamics365Accounts>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#dynamics365Accounts>.header.selected-bar .close-button-wrapper{width:244px}#dynamics365Accounts>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#dynamics365Accounts>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#dynamics365Accounts>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#dynamics365Accounts #add-dynamics365Account-button{position:fixed;bottom:8px;right:8px;padding:0}#dynamics365Accounts #upload-dynamics365Account-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.dynamics365Configuration-dialog{max-width:720px;width:720px}md-dialog.dynamics365Configuration-dialog md-dialog-content{display:block;position:relative}md-dialog.dynamics365Configuration-dialog md-toolbar .title{font-size:17px}md-dialog.dynamics365Configuration-dialog md-input-container textarea{min-height:150px}md-dialog.dynamics365Configuration-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.dynamics365Configuration-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.dynamics365Configuration-dialog .date-container{padding:16px 0 24px 0}md-dialog.dynamics365Configuration-dialog .error-list{font-size:13px}md-dialog.dynamics365Configuration-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.dynamics365Configuration-dialog .error-list .error .message{font-weight:500}md-dialog.dynamics365Configuration-dialog .error-list .error .md-button{margin:0}md-dialog.dynamics365Configuration-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.dynamics365Configuration-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.dynamics365Account-item-dialog{max-width:720px;width:720px}md-dialog.dynamics365Account-item-dialog md-dialog-content{display:block;position:relative}md-dialog.dynamics365Account-item-dialog md-toolbar .title{font-size:17px}md-dialog.dynamics365Account-item-dialog md-input-container textarea{min-height:150px}md-dialog.dynamics365Account-item-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.dynamics365Account-item-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.dynamics365Account-item-dialog .date-container{padding:16px 0 24px 0}md-dialog.dynamics365Account-item-dialog .error-list{font-size:13px}md-dialog.dynamics365Account-item-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.dynamics365Account-item-dialog .error-list .error .message{font-weight:500}md-dialog.dynamics365Account-item-dialog .error-list .error .md-button{margin:0}md-dialog.dynamics365Account-item-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.dynamics365Account-item-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#integrations-dynamics365Account .header{height:76px;min-height:76px;max-height:76px}#integrations-dynamics365Account .header .goto-dynamics365Accounts-button{margin-right:16px}#integrations-dynamics365Account .header .dynamics365Account-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#integrations-dynamics365Account .header .dynamics365Account-image img{height:100%;width:auto;max-width:none}#integrations-dynamics365Account .header .subtitle{margin:6px 0 0 0}#integrations-dynamics365Account .dynamics365Account-detail-form-container{padding:24px;margin-bottom:24px}#integrations-dynamics365Account .dynamics365Account-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#integrations-dynamics365Account .dynamics365Account-detail-form-container .handle{cursor:move}#integrations-dynamics365Account .dynamics365Account-detail-form-container md-input-container md-switch{margin:0!important}#integrations-dynamics365Account .dynamics365Account-detail-form-container #dynamics365Account-image-uploader{position:relative}#integrations-dynamics365Account .dynamics365Account-detail-form-container #dynamics365Account-image-uploader.dropping .drop-text{display:flex}#integrations-dynamics365Account .dynamics365Account-detail-form-container #dynamics365Account-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#integrations-dynamics365Account .dynamics365Account-detail-form-container #dynamics365Account-image-uploader .upload-button{margin-bottom:16px}#integrations-dynamics365Account .dynamics365Account-detail-form-container #dynamics365Account-image-uploader .dynamics365Account-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#integrations-dynamics365Account .dynamics365Account-detail-form-container #dynamics365Account-image-uploader .dynamics365Account-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#integrations-dynamics365Account .dynamics365Account-detail-form-container #dynamics365Account-image-uploader .dynamics365Account-image .media{max-height:100%}#integrations-dynamics365Account md-table-container thead tr th:not(:first-child):not(.no-padding){padding:0 20px 0 0!important}#integrations-dynamics365Account md-table-container thead th.md-checkbox-column:not(.no-padding){padding:0 24px!important}#integrations-dynamics365Account md-table-container tbody tr td:not(:first-child):not(.no-padding):not(.actions-padding){padding:0 20px 0 0!important}#integrations-dynamics365Account md-table-container.font-size-12 td.md-cell{font-size:12px!important}md-dialog.freshdeskAccount-dialog{max-width:720px;width:720px}md-dialog.freshdeskAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.freshdeskAccount-dialog md-toolbar .title{font-size:17px}md-dialog.freshdeskAccount-dialog md-input-container textarea{min-height:150px}md-dialog.freshdeskAccount-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.freshdeskAccount-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.freshdeskAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.freshdeskAccount-dialog .error-list{font-size:13px}md-dialog.freshdeskAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.freshdeskAccount-dialog .error-list .error .message{font-weight:500}md-dialog.freshdeskAccount-dialog .error-list .error .md-button{margin:0}md-dialog.freshdeskAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.freshdeskAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.freshdeskConfiguration-dialog{max-width:720px;width:720px}md-dialog.freshdeskConfiguration-dialog md-dialog-content{display:block;position:relative}md-dialog.freshdeskConfiguration-dialog md-toolbar .title{font-size:17px}md-dialog.freshdeskConfiguration-dialog md-input-container textarea{min-height:150px}md-dialog.freshdeskConfiguration-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.freshdeskConfiguration-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.freshdeskConfiguration-dialog .date-container{padding:16px 0 24px 0}md-dialog.freshdeskConfiguration-dialog .error-list{font-size:13px}md-dialog.freshdeskConfiguration-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.freshdeskConfiguration-dialog .error-list .error .message{font-weight:500}md-dialog.freshdeskConfiguration-dialog .error-list .error .md-button{margin:0}md-dialog.freshdeskConfiguration-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.freshdeskConfiguration-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.freshdeskAccount-item-dialog{max-width:720px;width:720px}md-dialog.freshdeskAccount-item-dialog md-dialog-content{display:block;position:relative}md-dialog.freshdeskAccount-item-dialog md-toolbar .title{font-size:17px}md-dialog.freshdeskAccount-item-dialog md-input-container textarea{min-height:150px}md-dialog.freshdeskAccount-item-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.freshdeskAccount-item-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.freshdeskAccount-item-dialog .date-container{padding:16px 0 24px 0}md-dialog.freshdeskAccount-item-dialog .error-list{font-size:13px}md-dialog.freshdeskAccount-item-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.freshdeskAccount-item-dialog .error-list .error .message{font-weight:500}md-dialog.freshdeskAccount-item-dialog .error-list .error .md-button{margin:0}md-dialog.freshdeskAccount-item-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.freshdeskAccount-item-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#integrations-freshdeskAccount .header{height:76px;min-height:76px;max-height:76px}#integrations-freshdeskAccount .header .goto-freshdeskAccounts-button{margin-right:16px}#integrations-freshdeskAccount .header .freshdeskAccount-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#integrations-freshdeskAccount .header .freshdeskAccount-image img{height:100%;width:auto;max-width:none}#integrations-freshdeskAccount .header .subtitle{margin:6px 0 0 0}#integrations-freshdeskAccount .freshdeskAccount-detail-form-container{padding:24px;margin-bottom:24px}#integrations-freshdeskAccount .freshdeskAccount-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#integrations-freshdeskAccount .freshdeskAccount-detail-form-container .handle{cursor:move}#integrations-freshdeskAccount .freshdeskAccount-detail-form-container md-input-container md-switch{margin:0!important}#integrations-freshdeskAccount .freshdeskAccount-detail-form-container #freshdeskAccount-image-uploader{position:relative}#integrations-freshdeskAccount .freshdeskAccount-detail-form-container #freshdeskAccount-image-uploader.dropping .drop-text{display:flex}#integrations-freshdeskAccount .freshdeskAccount-detail-form-container #freshdeskAccount-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#integrations-freshdeskAccount .freshdeskAccount-detail-form-container #freshdeskAccount-image-uploader .upload-button{margin-bottom:16px}#integrations-freshdeskAccount .freshdeskAccount-detail-form-container #freshdeskAccount-image-uploader .freshdeskAccount-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#integrations-freshdeskAccount .freshdeskAccount-detail-form-container #freshdeskAccount-image-uploader .freshdeskAccount-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#integrations-freshdeskAccount .freshdeskAccount-detail-form-container #freshdeskAccount-image-uploader .freshdeskAccount-image .media{max-height:100%}#integrations-freshdeskAccount md-table-container thead tr th:not(:first-child):not(.no-padding){padding:0 20px 0 0!important}#integrations-freshdeskAccount md-table-container thead th.md-checkbox-column:not(.no-padding){padding:0 24px!important}#integrations-freshdeskAccount md-table-container tbody tr td:not(:first-child):not(.no-padding):not(.actions-padding){padding:0 20px 0 0!important}#integrations-freshdeskAccount md-table-container.font-size-12 td.md-cell{font-size:12px!important}#freshdeskAccounts{position:relative}#freshdeskAccounts>.header{height:76px;min-height:76px;max-height:76px}#freshdeskAccounts>.header .logo .logo-icon{margin:0 16px 0 0}#freshdeskAccounts>.header .logo .logo-text{font-size:24px}#freshdeskAccounts>.header md-icon{color:#fff}#freshdeskAccounts>.header .search-input-wrapper{position:relative}#freshdeskAccounts>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#freshdeskAccounts>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#freshdeskAccounts>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#freshdeskAccounts>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#freshdeskAccounts>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#freshdeskAccounts>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#freshdeskAccounts>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#freshdeskAccounts>.header.selected-bar .close-button-wrapper{width:244px}#freshdeskAccounts>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#freshdeskAccounts>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#freshdeskAccounts>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#freshdeskAccounts #add-freshdeskAccount-button{position:fixed;bottom:8px;right:8px;padding:0}#freshdeskAccounts #upload-freshdeskAccount-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.freshsalesAccount-dialog{max-width:720px;width:720px}md-dialog.freshsalesAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.freshsalesAccount-dialog md-toolbar .title{font-size:17px}md-dialog.freshsalesAccount-dialog md-input-container textarea{min-height:150px}md-dialog.freshsalesAccount-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.freshsalesAccount-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.freshsalesAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.freshsalesAccount-dialog .error-list{font-size:13px}md-dialog.freshsalesAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.freshsalesAccount-dialog .error-list .error .message{font-weight:500}md-dialog.freshsalesAccount-dialog .error-list .error .md-button{margin:0}md-dialog.freshsalesAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.freshsalesAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.freshsalesConfiguration-dialog{max-width:720px;width:720px}md-dialog.freshsalesConfiguration-dialog md-dialog-content{display:block;position:relative}md-dialog.freshsalesConfiguration-dialog md-toolbar .title{font-size:17px}md-dialog.freshsalesConfiguration-dialog md-input-container textarea{min-height:150px}md-dialog.freshsalesConfiguration-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.freshsalesConfiguration-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.freshsalesConfiguration-dialog .date-container{padding:16px 0 24px 0}md-dialog.freshsalesConfiguration-dialog .error-list{font-size:13px}md-dialog.freshsalesConfiguration-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.freshsalesConfiguration-dialog .error-list .error .message{font-weight:500}md-dialog.freshsalesConfiguration-dialog .error-list .error .md-button{margin:0}md-dialog.freshsalesConfiguration-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.freshsalesConfiguration-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.freshsalesAccount-item-dialog{max-width:720px;width:720px}md-dialog.freshsalesAccount-item-dialog md-dialog-content{display:block;position:relative}md-dialog.freshsalesAccount-item-dialog md-toolbar .title{font-size:17px}md-dialog.freshsalesAccount-item-dialog md-input-container textarea{min-height:150px}md-dialog.freshsalesAccount-item-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.freshsalesAccount-item-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.freshsalesAccount-item-dialog .date-container{padding:16px 0 24px 0}md-dialog.freshsalesAccount-item-dialog .error-list{font-size:13px}md-dialog.freshsalesAccount-item-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.freshsalesAccount-item-dialog .error-list .error .message{font-weight:500}md-dialog.freshsalesAccount-item-dialog .error-list .error .md-button{margin:0}md-dialog.freshsalesAccount-item-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.freshsalesAccount-item-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#integrations-freshsalesAccount .header{height:76px;min-height:76px;max-height:76px}#integrations-freshsalesAccount .header .goto-freshsalesAccounts-button{margin-right:16px}#integrations-freshsalesAccount .header .freshsalesAccount-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#integrations-freshsalesAccount .header .freshsalesAccount-image img{height:100%;width:auto;max-width:none}#integrations-freshsalesAccount .header .subtitle{margin:6px 0 0 0}#integrations-freshsalesAccount .freshsalesAccount-detail-form-container{padding:24px;margin-bottom:24px}#integrations-freshsalesAccount .freshsalesAccount-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#integrations-freshsalesAccount .freshsalesAccount-detail-form-container .handle{cursor:move}#integrations-freshsalesAccount .freshsalesAccount-detail-form-container md-input-container md-switch{margin:0!important}#integrations-freshsalesAccount .freshsalesAccount-detail-form-container #freshsalesAccount-image-uploader{position:relative}#integrations-freshsalesAccount .freshsalesAccount-detail-form-container #freshsalesAccount-image-uploader.dropping .drop-text{display:flex}#integrations-freshsalesAccount .freshsalesAccount-detail-form-container #freshsalesAccount-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#integrations-freshsalesAccount .freshsalesAccount-detail-form-container #freshsalesAccount-image-uploader .upload-button{margin-bottom:16px}#integrations-freshsalesAccount .freshsalesAccount-detail-form-container #freshsalesAccount-image-uploader .freshsalesAccount-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#integrations-freshsalesAccount .freshsalesAccount-detail-form-container #freshsalesAccount-image-uploader .freshsalesAccount-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#integrations-freshsalesAccount .freshsalesAccount-detail-form-container #freshsalesAccount-image-uploader .freshsalesAccount-image .media{max-height:100%}#integrations-freshsalesAccount md-table-container thead tr th:not(:first-child):not(.no-padding){padding:0 20px 0 0!important}#integrations-freshsalesAccount md-table-container thead th.md-checkbox-column:not(.no-padding){padding:0 24px!important}#integrations-freshsalesAccount md-table-container tbody tr td:not(:first-child):not(.no-padding):not(.actions-padding){padding:0 20px 0 0!important}#integrations-freshsalesAccount md-table-container.font-size-12 td.md-cell{font-size:12px!important}#freshsalesAccounts{position:relative}#freshsalesAccounts>.header{height:76px;min-height:76px;max-height:76px}#freshsalesAccounts>.header .logo .logo-icon{margin:0 16px 0 0}#freshsalesAccounts>.header .logo .logo-text{font-size:24px}#freshsalesAccounts>.header md-icon{color:#fff}#freshsalesAccounts>.header .search-input-wrapper{position:relative}#freshsalesAccounts>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#freshsalesAccounts>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#freshsalesAccounts>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#freshsalesAccounts>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#freshsalesAccounts>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#freshsalesAccounts>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#freshsalesAccounts>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#freshsalesAccounts>.header.selected-bar .close-button-wrapper{width:244px}#freshsalesAccounts>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#freshsalesAccounts>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#freshsalesAccounts>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#freshsalesAccounts #add-freshsalesAccount-button{position:fixed;bottom:8px;right:8px;padding:0}#freshsalesAccounts #upload-freshsalesAccount-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.salesforceAccount-dialog{max-width:720px;width:720px}md-dialog.salesforceAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.salesforceAccount-dialog md-toolbar .title{font-size:17px}md-dialog.salesforceAccount-dialog md-input-container textarea{min-height:150px}md-dialog.salesforceAccount-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.salesforceAccount-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.salesforceAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.salesforceAccount-dialog .error-list{font-size:13px}md-dialog.salesforceAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.salesforceAccount-dialog .error-list .error .message{font-weight:500}md-dialog.salesforceAccount-dialog .error-list .error .md-button{margin:0}md-dialog.salesforceAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.salesforceAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.salesforceConfiguration-dialog{max-width:720px;width:720px}md-dialog.salesforceConfiguration-dialog md-dialog-content{display:block;position:relative}md-dialog.salesforceConfiguration-dialog md-toolbar .title{font-size:17px}md-dialog.salesforceConfiguration-dialog md-input-container textarea{min-height:150px}md-dialog.salesforceConfiguration-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.salesforceConfiguration-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.salesforceConfiguration-dialog .date-container{padding:16px 0 24px 0}md-dialog.salesforceConfiguration-dialog .error-list{font-size:13px}md-dialog.salesforceConfiguration-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.salesforceConfiguration-dialog .error-list .error .message{font-weight:500}md-dialog.salesforceConfiguration-dialog .error-list .error .md-button{margin:0}md-dialog.salesforceConfiguration-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.salesforceConfiguration-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.salesforceAccount-item-dialog{max-width:720px;width:720px}md-dialog.salesforceAccount-item-dialog md-dialog-content{display:block;position:relative}md-dialog.salesforceAccount-item-dialog md-toolbar .title{font-size:17px}md-dialog.salesforceAccount-item-dialog md-input-container textarea{min-height:150px}md-dialog.salesforceAccount-item-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.salesforceAccount-item-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.salesforceAccount-item-dialog .date-container{padding:16px 0 24px 0}md-dialog.salesforceAccount-item-dialog .error-list{font-size:13px}md-dialog.salesforceAccount-item-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.salesforceAccount-item-dialog .error-list .error .message{font-weight:500}md-dialog.salesforceAccount-item-dialog .error-list .error .md-button{margin:0}md-dialog.salesforceAccount-item-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.salesforceAccount-item-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#integrations-salesforceAccount .header{height:76px;min-height:76px;max-height:76px}#integrations-salesforceAccount .header .goto-salesforceAccounts-button{margin-right:16px}#integrations-salesforceAccount .header .salesforceAccount-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#integrations-salesforceAccount .header .salesforceAccount-image img{height:100%;width:auto;max-width:none}#integrations-salesforceAccount .header .subtitle{margin:6px 0 0 0}#integrations-salesforceAccount .salesforceAccount-detail-form-container{padding:24px;margin-bottom:24px}#integrations-salesforceAccount .salesforceAccount-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#integrations-salesforceAccount .salesforceAccount-detail-form-container .handle{cursor:move}#integrations-salesforceAccount .salesforceAccount-detail-form-container md-input-container md-switch{margin:0!important}#integrations-salesforceAccount .salesforceAccount-detail-form-container #salesforceAccount-image-uploader{position:relative}#integrations-salesforceAccount .salesforceAccount-detail-form-container #salesforceAccount-image-uploader.dropping .drop-text{display:flex}#integrations-salesforceAccount .salesforceAccount-detail-form-container #salesforceAccount-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#integrations-salesforceAccount .salesforceAccount-detail-form-container #salesforceAccount-image-uploader .upload-button{margin-bottom:16px}#integrations-salesforceAccount .salesforceAccount-detail-form-container #salesforceAccount-image-uploader .salesforceAccount-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#integrations-salesforceAccount .salesforceAccount-detail-form-container #salesforceAccount-image-uploader .salesforceAccount-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#integrations-salesforceAccount .salesforceAccount-detail-form-container #salesforceAccount-image-uploader .salesforceAccount-image .media{max-height:100%}#integrations-salesforceAccount md-table-container thead tr th:not(:first-child):not(.no-padding){padding:0 20px 0 0!important}#integrations-salesforceAccount md-table-container thead th.md-checkbox-column:not(.no-padding){padding:0 24px!important}#integrations-salesforceAccount md-table-container tbody tr td:not(:first-child):not(.no-padding):not(.actions-padding){padding:0 20px 0 0!important}#integrations-salesforceAccount md-table-container.font-size-12 td.md-cell{font-size:12px!important}#salesforceAccounts{position:relative}#salesforceAccounts>.header{height:76px;min-height:76px;max-height:76px}#salesforceAccounts>.header .logo .logo-icon{margin:0 16px 0 0}#salesforceAccounts>.header .logo .logo-text{font-size:24px}#salesforceAccounts>.header md-icon{color:#fff}#salesforceAccounts>.header .search-input-wrapper{position:relative}#salesforceAccounts>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#salesforceAccounts>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#salesforceAccounts>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#salesforceAccounts>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#salesforceAccounts>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#salesforceAccounts>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#salesforceAccounts>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#salesforceAccounts>.header.selected-bar .close-button-wrapper{width:244px}#salesforceAccounts>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#salesforceAccounts>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#salesforceAccounts>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#salesforceAccounts #add-salesforceAccount-button{position:fixed;bottom:8px;right:8px;padding:0}#salesforceAccounts #upload-salesforceAccount-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.servicenowAccount-dialog{max-width:720px;width:720px}md-dialog.servicenowAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.servicenowAccount-dialog md-toolbar .title{font-size:17px}md-dialog.servicenowAccount-dialog md-input-container textarea{min-height:150px}md-dialog.servicenowAccount-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.servicenowAccount-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.servicenowAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.servicenowAccount-dialog .error-list{font-size:13px}md-dialog.servicenowAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.servicenowAccount-dialog .error-list .error .message{font-weight:500}md-dialog.servicenowAccount-dialog .error-list .error .md-button{margin:0}md-dialog.servicenowAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.servicenowAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.servicenowConfiguration-dialog{max-width:720px;width:720px}md-dialog.servicenowConfiguration-dialog md-dialog-content{display:block;position:relative}md-dialog.servicenowConfiguration-dialog md-toolbar .title{font-size:17px}md-dialog.servicenowConfiguration-dialog md-input-container textarea{min-height:150px}md-dialog.servicenowConfiguration-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.servicenowConfiguration-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.servicenowConfiguration-dialog .date-container{padding:16px 0 24px 0}md-dialog.servicenowConfiguration-dialog .error-list{font-size:13px}md-dialog.servicenowConfiguration-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.servicenowConfiguration-dialog .error-list .error .message{font-weight:500}md-dialog.servicenowConfiguration-dialog .error-list .error .md-button{margin:0}md-dialog.servicenowConfiguration-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.servicenowConfiguration-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.servicenowAccount-item-dialog{max-width:720px;width:720px}md-dialog.servicenowAccount-item-dialog md-dialog-content{display:block;position:relative}md-dialog.servicenowAccount-item-dialog md-toolbar .title{font-size:17px}md-dialog.servicenowAccount-item-dialog md-input-container textarea{min-height:150px}md-dialog.servicenowAccount-item-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.servicenowAccount-item-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.servicenowAccount-item-dialog .date-container{padding:16px 0 24px 0}md-dialog.servicenowAccount-item-dialog .error-list{font-size:13px}md-dialog.servicenowAccount-item-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.servicenowAccount-item-dialog .error-list .error .message{font-weight:500}md-dialog.servicenowAccount-item-dialog .error-list .error .md-button{margin:0}md-dialog.servicenowAccount-item-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.servicenowAccount-item-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#integrations-servicenowAccount .header{height:76px;min-height:76px;max-height:76px}#integrations-servicenowAccount .header .goto-servicenowAccounts-button{margin-right:16px}#integrations-servicenowAccount .header .servicenowAccount-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#integrations-servicenowAccount .header .servicenowAccount-image img{height:100%;width:auto;max-width:none}#integrations-servicenowAccount .header .subtitle{margin:6px 0 0 0}#integrations-servicenowAccount .servicenowAccount-detail-form-container{padding:24px;margin-bottom:24px}#integrations-servicenowAccount .servicenowAccount-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#integrations-servicenowAccount .servicenowAccount-detail-form-container .handle{cursor:move}#integrations-servicenowAccount .servicenowAccount-detail-form-container md-input-container md-switch{margin:0!important}#integrations-servicenowAccount .servicenowAccount-detail-form-container #servicenowAccount-image-uploader{position:relative}#integrations-servicenowAccount .servicenowAccount-detail-form-container #servicenowAccount-image-uploader.dropping .drop-text{display:flex}#integrations-servicenowAccount .servicenowAccount-detail-form-container #servicenowAccount-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#integrations-servicenowAccount .servicenowAccount-detail-form-container #servicenowAccount-image-uploader .upload-button{margin-bottom:16px}#integrations-servicenowAccount .servicenowAccount-detail-form-container #servicenowAccount-image-uploader .servicenowAccount-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#integrations-servicenowAccount .servicenowAccount-detail-form-container #servicenowAccount-image-uploader .servicenowAccount-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#integrations-servicenowAccount .servicenowAccount-detail-form-container #servicenowAccount-image-uploader .servicenowAccount-image .media{max-height:100%}#integrations-servicenowAccount md-table-container thead tr th:not(:first-child):not(.no-padding){padding:0 20px 0 0!important}#integrations-servicenowAccount md-table-container thead th.md-checkbox-column:not(.no-padding){padding:0 24px!important}#integrations-servicenowAccount md-table-container tbody tr td:not(:first-child):not(.no-padding):not(.actions-padding){padding:0 20px 0 0!important}#integrations-servicenowAccount md-table-container.font-size-12 td.md-cell{font-size:12px!important}#servicenowAccounts{position:relative}#servicenowAccounts>.header{height:76px;min-height:76px;max-height:76px}#servicenowAccounts>.header .logo .logo-icon{margin:0 16px 0 0}#servicenowAccounts>.header .logo .logo-text{font-size:24px}#servicenowAccounts>.header md-icon{color:#fff}#servicenowAccounts>.header .search-input-wrapper{position:relative}#servicenowAccounts>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#servicenowAccounts>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#servicenowAccounts>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#servicenowAccounts>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#servicenowAccounts>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#servicenowAccounts>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#servicenowAccounts>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#servicenowAccounts>.header.selected-bar .close-button-wrapper{width:244px}#servicenowAccounts>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#servicenowAccounts>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#servicenowAccounts>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#servicenowAccounts #add-servicenowAccount-button{position:fixed;bottom:8px;right:8px;padding:0}#servicenowAccounts #upload-servicenowAccount-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.sugarcrmAccount-dialog{max-width:720px;width:720px}md-dialog.sugarcrmAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.sugarcrmAccount-dialog md-toolbar .title{font-size:17px}md-dialog.sugarcrmAccount-dialog md-input-container textarea{min-height:150px}md-dialog.sugarcrmAccount-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.sugarcrmAccount-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.sugarcrmAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.sugarcrmAccount-dialog .error-list{font-size:13px}md-dialog.sugarcrmAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.sugarcrmAccount-dialog .error-list .error .message{font-weight:500}md-dialog.sugarcrmAccount-dialog .error-list .error .md-button{margin:0}md-dialog.sugarcrmAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.sugarcrmAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.sugarcrmConfiguration-dialog{max-width:720px;width:720px}md-dialog.sugarcrmConfiguration-dialog md-dialog-content{display:block;position:relative}md-dialog.sugarcrmConfiguration-dialog md-toolbar .title{font-size:17px}md-dialog.sugarcrmConfiguration-dialog md-input-container textarea{min-height:150px}md-dialog.sugarcrmConfiguration-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.sugarcrmConfiguration-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.sugarcrmConfiguration-dialog .date-container{padding:16px 0 24px 0}md-dialog.sugarcrmConfiguration-dialog .error-list{font-size:13px}md-dialog.sugarcrmConfiguration-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.sugarcrmConfiguration-dialog .error-list .error .message{font-weight:500}md-dialog.sugarcrmConfiguration-dialog .error-list .error .md-button{margin:0}md-dialog.sugarcrmConfiguration-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.sugarcrmConfiguration-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.sugarcrmAccount-item-dialog{max-width:720px;width:720px}md-dialog.sugarcrmAccount-item-dialog md-dialog-content{display:block;position:relative}md-dialog.sugarcrmAccount-item-dialog md-toolbar .title{font-size:17px}md-dialog.sugarcrmAccount-item-dialog md-input-container textarea{min-height:150px}md-dialog.sugarcrmAccount-item-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.sugarcrmAccount-item-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.sugarcrmAccount-item-dialog .date-container{padding:16px 0 24px 0}md-dialog.sugarcrmAccount-item-dialog .error-list{font-size:13px}md-dialog.sugarcrmAccount-item-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.sugarcrmAccount-item-dialog .error-list .error .message{font-weight:500}md-dialog.sugarcrmAccount-item-dialog .error-list .error .md-button{margin:0}md-dialog.sugarcrmAccount-item-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.sugarcrmAccount-item-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#integrations-sugarcrmAccount .header{height:76px;min-height:76px;max-height:76px}#integrations-sugarcrmAccount .header .goto-sugarcrmAccounts-button{margin-right:16px}#integrations-sugarcrmAccount .header .sugarcrmAccount-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#integrations-sugarcrmAccount .header .sugarcrmAccount-image img{height:100%;width:auto;max-width:none}#integrations-sugarcrmAccount .header .subtitle{margin:6px 0 0 0}#integrations-sugarcrmAccount .sugarcrmAccount-detail-form-container{padding:24px;margin-bottom:24px}#integrations-sugarcrmAccount .sugarcrmAccount-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#integrations-sugarcrmAccount .sugarcrmAccount-detail-form-container .handle{cursor:move}#integrations-sugarcrmAccount .sugarcrmAccount-detail-form-container md-input-container md-switch{margin:0!important}#integrations-sugarcrmAccount .sugarcrmAccount-detail-form-container #sugarcrmAccount-image-uploader{position:relative}#integrations-sugarcrmAccount .sugarcrmAccount-detail-form-container #sugarcrmAccount-image-uploader.dropping .drop-text{display:flex}#integrations-sugarcrmAccount .sugarcrmAccount-detail-form-container #sugarcrmAccount-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#integrations-sugarcrmAccount .sugarcrmAccount-detail-form-container #sugarcrmAccount-image-uploader .upload-button{margin-bottom:16px}#integrations-sugarcrmAccount .sugarcrmAccount-detail-form-container #sugarcrmAccount-image-uploader .sugarcrmAccount-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#integrations-sugarcrmAccount .sugarcrmAccount-detail-form-container #sugarcrmAccount-image-uploader .sugarcrmAccount-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#integrations-sugarcrmAccount .sugarcrmAccount-detail-form-container #sugarcrmAccount-image-uploader .sugarcrmAccount-image .media{max-height:100%}#integrations-sugarcrmAccount md-table-container thead tr th:not(:first-child):not(.no-padding){padding:0 20px 0 0!important}#integrations-sugarcrmAccount md-table-container thead th.md-checkbox-column:not(.no-padding){padding:0 24px!important}#integrations-sugarcrmAccount md-table-container tbody tr td:not(:first-child):not(.no-padding):not(.actions-padding){padding:0 20px 0 0!important}#integrations-sugarcrmAccount md-table-container.font-size-12 td.md-cell{font-size:12px!important}#sugarcrmAccounts{position:relative}#sugarcrmAccounts>.header{height:76px;min-height:76px;max-height:76px}#sugarcrmAccounts>.header .logo .logo-icon{margin:0 16px 0 0}#sugarcrmAccounts>.header .logo .logo-text{font-size:24px}#sugarcrmAccounts>.header md-icon{color:#fff}#sugarcrmAccounts>.header .search-input-wrapper{position:relative}#sugarcrmAccounts>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#sugarcrmAccounts>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#sugarcrmAccounts>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#sugarcrmAccounts>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#sugarcrmAccounts>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#sugarcrmAccounts>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#sugarcrmAccounts>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#sugarcrmAccounts>.header.selected-bar .close-button-wrapper{width:244px}#sugarcrmAccounts>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#sugarcrmAccounts>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#sugarcrmAccounts>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#sugarcrmAccounts #add-sugarcrmAccount-button{position:fixed;bottom:8px;right:8px;padding:0}#sugarcrmAccounts #upload-sugarcrmAccount-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.vtigerAccount-dialog{max-width:720px;width:720px}md-dialog.vtigerAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.vtigerAccount-dialog md-toolbar .title{font-size:17px}md-dialog.vtigerAccount-dialog md-input-container textarea{min-height:150px}md-dialog.vtigerAccount-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.vtigerAccount-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.vtigerAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.vtigerAccount-dialog .error-list{font-size:13px}md-dialog.vtigerAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.vtigerAccount-dialog .error-list .error .message{font-weight:500}md-dialog.vtigerAccount-dialog .error-list .error .md-button{margin:0}md-dialog.vtigerAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.vtigerAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.vtigerConfiguration-dialog{max-width:720px;width:720px}md-dialog.vtigerConfiguration-dialog md-dialog-content{display:block;position:relative}md-dialog.vtigerConfiguration-dialog md-toolbar .title{font-size:17px}md-dialog.vtigerConfiguration-dialog md-input-container textarea{min-height:150px}md-dialog.vtigerConfiguration-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.vtigerConfiguration-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.vtigerConfiguration-dialog .date-container{padding:16px 0 24px 0}md-dialog.vtigerConfiguration-dialog .error-list{font-size:13px}md-dialog.vtigerConfiguration-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.vtigerConfiguration-dialog .error-list .error .message{font-weight:500}md-dialog.vtigerConfiguration-dialog .error-list .error .md-button{margin:0}md-dialog.vtigerConfiguration-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.vtigerConfiguration-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.vtigerAccount-item-dialog{max-width:720px;width:720px}md-dialog.vtigerAccount-item-dialog md-dialog-content{display:block;position:relative}md-dialog.vtigerAccount-item-dialog md-toolbar .title{font-size:17px}md-dialog.vtigerAccount-item-dialog md-input-container textarea{min-height:150px}md-dialog.vtigerAccount-item-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.vtigerAccount-item-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.vtigerAccount-item-dialog .date-container{padding:16px 0 24px 0}md-dialog.vtigerAccount-item-dialog .error-list{font-size:13px}md-dialog.vtigerAccount-item-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.vtigerAccount-item-dialog .error-list .error .message{font-weight:500}md-dialog.vtigerAccount-item-dialog .error-list .error .md-button{margin:0}md-dialog.vtigerAccount-item-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.vtigerAccount-item-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#integrations-vtigerAccount .header{height:76px;min-height:76px;max-height:76px}#integrations-vtigerAccount .header .goto-vtigerAccounts-button{margin-right:16px}#integrations-vtigerAccount .header .vtigerAccount-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#integrations-vtigerAccount .header .vtigerAccount-image img{height:100%;width:auto;max-width:none}#integrations-vtigerAccount .header .subtitle{margin:6px 0 0 0}#integrations-vtigerAccount .vtigerAccount-detail-form-container{padding:24px;margin-bottom:24px}#integrations-vtigerAccount .vtigerAccount-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#integrations-vtigerAccount .vtigerAccount-detail-form-container .handle{cursor:move}#integrations-vtigerAccount .vtigerAccount-detail-form-container md-input-container md-switch{margin:0!important}#integrations-vtigerAccount .vtigerAccount-detail-form-container #vtigerAccount-image-uploader{position:relative}#integrations-vtigerAccount .vtigerAccount-detail-form-container #vtigerAccount-image-uploader.dropping .drop-text{display:flex}#integrations-vtigerAccount .vtigerAccount-detail-form-container #vtigerAccount-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#integrations-vtigerAccount .vtigerAccount-detail-form-container #vtigerAccount-image-uploader .upload-button{margin-bottom:16px}#integrations-vtigerAccount .vtigerAccount-detail-form-container #vtigerAccount-image-uploader .vtigerAccount-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#integrations-vtigerAccount .vtigerAccount-detail-form-container #vtigerAccount-image-uploader .vtigerAccount-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#integrations-vtigerAccount .vtigerAccount-detail-form-container #vtigerAccount-image-uploader .vtigerAccount-image .media{max-height:100%}#integrations-vtigerAccount md-table-container thead tr th:not(:first-child):not(.no-padding){padding:0 20px 0 0!important}#integrations-vtigerAccount md-table-container thead th.md-checkbox-column:not(.no-padding){padding:0 24px!important}#integrations-vtigerAccount md-table-container tbody tr td:not(:first-child):not(.no-padding):not(.actions-padding){padding:0 20px 0 0!important}#integrations-vtigerAccount md-table-container.font-size-12 td.md-cell{font-size:12px!important}#vtigerAccounts{position:relative}#vtigerAccounts>.header{height:76px;min-height:76px;max-height:76px}#vtigerAccounts>.header .logo .logo-icon{margin:0 16px 0 0}#vtigerAccounts>.header .logo .logo-text{font-size:24px}#vtigerAccounts>.header md-icon{color:#fff}#vtigerAccounts>.header .search-input-wrapper{position:relative}#vtigerAccounts>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#vtigerAccounts>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#vtigerAccounts>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#vtigerAccounts>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#vtigerAccounts>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#vtigerAccounts>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#vtigerAccounts>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#vtigerAccounts>.header.selected-bar .close-button-wrapper{width:244px}#vtigerAccounts>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#vtigerAccounts>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#vtigerAccounts>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#vtigerAccounts #add-vtigerAccount-button{position:fixed;bottom:8px;right:8px;padding:0}#vtigerAccounts #upload-vtigerAccount-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.zendeskAccount-dialog{max-width:720px;width:720px}md-dialog.zendeskAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.zendeskAccount-dialog md-toolbar .title{font-size:17px}md-dialog.zendeskAccount-dialog md-input-container textarea{min-height:150px}md-dialog.zendeskAccount-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.zendeskAccount-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.zendeskAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.zendeskAccount-dialog .error-list{font-size:13px}md-dialog.zendeskAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.zendeskAccount-dialog .error-list .error .message{font-weight:500}md-dialog.zendeskAccount-dialog .error-list .error .md-button{margin:0}md-dialog.zendeskAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.zendeskAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.zendeskAccount-item-dialog{max-width:720px;width:720px}md-dialog.zendeskAccount-item-dialog md-dialog-content{display:block;position:relative}md-dialog.zendeskAccount-item-dialog md-toolbar .title{font-size:17px}md-dialog.zendeskAccount-item-dialog md-input-container textarea{min-height:150px}md-dialog.zendeskAccount-item-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.zendeskAccount-item-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.zendeskAccount-item-dialog .date-container{padding:16px 0 24px 0}md-dialog.zendeskAccount-item-dialog .error-list{font-size:13px}md-dialog.zendeskAccount-item-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.zendeskAccount-item-dialog .error-list .error .message{font-weight:500}md-dialog.zendeskAccount-item-dialog .error-list .error .md-button{margin:0}md-dialog.zendeskAccount-item-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.zendeskAccount-item-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#integrations-zendeskAccount .header{height:76px;min-height:76px;max-height:76px}#integrations-zendeskAccount .header .goto-zendeskAccounts-button{margin-right:16px}#integrations-zendeskAccount .header .zendeskAccount-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#integrations-zendeskAccount .header .zendeskAccount-image img{height:100%;width:auto;max-width:none}#integrations-zendeskAccount .header .subtitle{margin:6px 0 0 0}#integrations-zendeskAccount .zendeskAccount-detail-form-container{padding:24px;margin-bottom:24px}#integrations-zendeskAccount .zendeskAccount-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#integrations-zendeskAccount .zendeskAccount-detail-form-container .handle{cursor:move}#integrations-zendeskAccount .zendeskAccount-detail-form-container md-input-container md-switch{margin:0!important}#integrations-zendeskAccount .zendeskAccount-detail-form-container #zendeskAccount-image-uploader{position:relative}#integrations-zendeskAccount .zendeskAccount-detail-form-container #zendeskAccount-image-uploader.dropping .drop-text{display:flex}#integrations-zendeskAccount .zendeskAccount-detail-form-container #zendeskAccount-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#integrations-zendeskAccount .zendeskAccount-detail-form-container #zendeskAccount-image-uploader .upload-button{margin-bottom:16px}#integrations-zendeskAccount .zendeskAccount-detail-form-container #zendeskAccount-image-uploader .zendeskAccount-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#integrations-zendeskAccount .zendeskAccount-detail-form-container #zendeskAccount-image-uploader .zendeskAccount-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#integrations-zendeskAccount .zendeskAccount-detail-form-container #zendeskAccount-image-uploader .zendeskAccount-image .media{max-height:100%}#integrations-zendeskAccount md-table-container thead tr th:not(:first-child):not(.no-padding){padding:0 20px 0 0!important}#integrations-zendeskAccount md-table-container thead th.md-checkbox-column:not(.no-padding){padding:0 24px!important}#integrations-zendeskAccount md-table-container tbody tr td:not(:first-child):not(.no-padding):not(.actions-padding){padding:0 20px 0 0!important}#integrations-zendeskAccount md-table-container.font-size-12 td.md-cell{font-size:12px!important}md-dialog.zendeskConfiguration-dialog{max-width:720px;width:720px}md-dialog.zendeskConfiguration-dialog md-dialog-content{display:block;position:relative}md-dialog.zendeskConfiguration-dialog md-toolbar .title{font-size:17px}md-dialog.zendeskConfiguration-dialog md-input-container textarea{min-height:150px}md-dialog.zendeskConfiguration-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.zendeskConfiguration-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.zendeskConfiguration-dialog .date-container{padding:16px 0 24px 0}md-dialog.zendeskConfiguration-dialog .error-list{font-size:13px}md-dialog.zendeskConfiguration-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.zendeskConfiguration-dialog .error-list .error .message{font-weight:500}md-dialog.zendeskConfiguration-dialog .error-list .error .md-button{margin:0}md-dialog.zendeskConfiguration-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.zendeskConfiguration-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#zendeskAccounts{position:relative}#zendeskAccounts>.header{height:76px;min-height:76px;max-height:76px}#zendeskAccounts>.header .logo .logo-icon{margin:0 16px 0 0}#zendeskAccounts>.header .logo .logo-text{font-size:24px}#zendeskAccounts>.header md-icon{color:#fff}#zendeskAccounts>.header .search-input-wrapper{position:relative}#zendeskAccounts>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#zendeskAccounts>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#zendeskAccounts>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#zendeskAccounts>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#zendeskAccounts>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#zendeskAccounts>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#zendeskAccounts>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#zendeskAccounts>.header.selected-bar .close-button-wrapper{width:244px}#zendeskAccounts>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#zendeskAccounts>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#zendeskAccounts>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#zendeskAccounts #add-zendeskAccount-button{position:fixed;bottom:8px;right:8px;padding:0}#zendeskAccounts #upload-zendeskAccount-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.zohoAccount-dialog{max-width:720px;width:720px}md-dialog.zohoAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.zohoAccount-dialog md-toolbar .title{font-size:17px}md-dialog.zohoAccount-dialog md-input-container textarea{min-height:150px}md-dialog.zohoAccount-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.zohoAccount-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.zohoAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.zohoAccount-dialog .error-list{font-size:13px}md-dialog.zohoAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.zohoAccount-dialog .error-list .error .message{font-weight:500}md-dialog.zohoAccount-dialog .error-list .error .md-button{margin:0}md-dialog.zohoAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.zohoAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.zohoConfiguration-dialog{max-width:720px;width:720px}md-dialog.zohoConfiguration-dialog md-dialog-content{display:block;position:relative}md-dialog.zohoConfiguration-dialog md-toolbar .title{font-size:17px}md-dialog.zohoConfiguration-dialog md-input-container textarea{min-height:150px}md-dialog.zohoConfiguration-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.zohoConfiguration-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.zohoConfiguration-dialog .date-container{padding:16px 0 24px 0}md-dialog.zohoConfiguration-dialog .error-list{font-size:13px}md-dialog.zohoConfiguration-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.zohoConfiguration-dialog .error-list .error .message{font-weight:500}md-dialog.zohoConfiguration-dialog .error-list .error .md-button{margin:0}md-dialog.zohoConfiguration-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.zohoConfiguration-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.zohoAccount-item-dialog{max-width:720px;width:720px}md-dialog.zohoAccount-item-dialog md-dialog-content{display:block;position:relative}md-dialog.zohoAccount-item-dialog md-toolbar .title{font-size:17px}md-dialog.zohoAccount-item-dialog md-input-container textarea{min-height:150px}md-dialog.zohoAccount-item-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.zohoAccount-item-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.zohoAccount-item-dialog .date-container{padding:16px 0 24px 0}md-dialog.zohoAccount-item-dialog .error-list{font-size:13px}md-dialog.zohoAccount-item-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.zohoAccount-item-dialog .error-list .error .message{font-weight:500}md-dialog.zohoAccount-item-dialog .error-list .error .md-button{margin:0}md-dialog.zohoAccount-item-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.zohoAccount-item-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#integrations-zohoAccount .header{height:76px;min-height:76px;max-height:76px}#integrations-zohoAccount .header .goto-zohoAccounts-button{margin-right:16px}#integrations-zohoAccount .header .zohoAccount-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#integrations-zohoAccount .header .zohoAccount-image img{height:100%;width:auto;max-width:none}#integrations-zohoAccount .header .subtitle{margin:6px 0 0 0}#integrations-zohoAccount .zohoAccount-detail-form-container{padding:24px;margin-bottom:24px}#integrations-zohoAccount .zohoAccount-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#integrations-zohoAccount .zohoAccount-detail-form-container .handle{cursor:move}#integrations-zohoAccount .zohoAccount-detail-form-container md-input-container md-switch{margin:0!important}#integrations-zohoAccount .zohoAccount-detail-form-container #zohoAccount-image-uploader{position:relative}#integrations-zohoAccount .zohoAccount-detail-form-container #zohoAccount-image-uploader.dropping .drop-text{display:flex}#integrations-zohoAccount .zohoAccount-detail-form-container #zohoAccount-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#integrations-zohoAccount .zohoAccount-detail-form-container #zohoAccount-image-uploader .upload-button{margin-bottom:16px}#integrations-zohoAccount .zohoAccount-detail-form-container #zohoAccount-image-uploader .zohoAccount-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#integrations-zohoAccount .zohoAccount-detail-form-container #zohoAccount-image-uploader .zohoAccount-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#integrations-zohoAccount .zohoAccount-detail-form-container #zohoAccount-image-uploader .zohoAccount-image .media{max-height:100%}#integrations-zohoAccount md-table-container thead tr th:not(:first-child):not(.no-padding){padding:0 20px 0 0!important}#integrations-zohoAccount md-table-container thead th.md-checkbox-column:not(.no-padding){padding:0 24px!important}#integrations-zohoAccount md-table-container tbody tr td:not(:first-child):not(.no-padding):not(.actions-padding){padding:0 20px 0 0!important}#integrations-zohoAccount md-table-container.font-size-12 td.md-cell{font-size:12px!important}#zohoAccounts{position:relative}#zohoAccounts>.header{height:76px;min-height:76px;max-height:76px}#zohoAccounts>.header .logo .logo-icon{margin:0 16px 0 0}#zohoAccounts>.header .logo .logo-text{font-size:24px}#zohoAccounts>.header md-icon{color:#fff}#zohoAccounts>.header .search-input-wrapper{position:relative}#zohoAccounts>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#zohoAccounts>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#zohoAccounts>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#zohoAccounts>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#zohoAccounts>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#zohoAccounts>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#zohoAccounts>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#zohoAccounts>.header.selected-bar .close-button-wrapper{width:244px}#zohoAccounts>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#zohoAccounts>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#zohoAccounts>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#zohoAccounts #add-zohoAccount-button{position:fixed;bottom:8px;right:8px;padding:0}#zohoAccounts #upload-zohoAccount-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.project-dialog{max-width:720px;width:720px}md-dialog.project-dialog md-dialog-content{display:block;position:relative}md-dialog.project-dialog md-toolbar .title{font-size:17px}md-dialog.project-dialog md-input-container textarea{min-height:150px}md-dialog.project-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.project-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.project-dialog .date-container{padding:16px 0 24px 0}md-dialog.project-dialog .error-list{font-size:13px}md-dialog.project-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.project-dialog .error-list .error .message{font-weight:500}md-dialog.project-dialog .error-list .error .md-button{margin:0}md-dialog.project-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.project-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.session-dialog{max-width:720px;width:720px}md-dialog.session-dialog md-dialog-content{display:block;position:relative}md-dialog.session-dialog md-toolbar .title{font-size:17px}md-dialog.session-dialog md-input-container textarea{min-height:150px}md-dialog.session-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.session-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.session-dialog .date-container{padding:16px 0 24px 0}md-dialog.session-dialog .error-list{font-size:13px}md-dialog.session-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.session-dialog .error-list .error .message{font-weight:500}md-dialog.session-dialog .error-list .error .md-button{margin:0}md-dialog.session-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.session-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#jscripty-project .header{height:76px;min-height:76px;max-height:76px}#jscripty-project .header .goto-projects-button{margin-right:16px}#jscripty-project .header .project-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#jscripty-project .header .project-image img{height:100%;width:auto;max-width:none}#jscripty-project .header .subtitle{margin:6px 0 0 0}#jscripty-project .project-detail-form-container{padding:24px;margin-bottom:24px}#jscripty-project .project-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#jscripty-project .project-detail-form-container .handle{cursor:move}#jscripty-project .project-detail-form-container md-input-container md-switch{margin:0!important}#jscripty-project .project-detail-form-container #project-image-uploader{position:relative}#jscripty-project .project-detail-form-container #project-image-uploader.dropping .drop-text{display:flex}#jscripty-project .project-detail-form-container #project-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#jscripty-project .project-detail-form-container #project-image-uploader .upload-button{margin-bottom:16px}#jscripty-project .project-detail-form-container #project-image-uploader .project-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#jscripty-project .project-detail-form-container #project-image-uploader .project-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#jscripty-project .project-detail-form-container #project-image-uploader .project-image .media{max-height:100%}#jscripty-project md-table-container thead tr th:not(:first-child):not(.no-padding){padding:0 20px 0 0!important}#jscripty-project md-table-container thead th.md-checkbox-column:not(.no-padding){padding:0 24px!important}#jscripty-project md-table-container tbody tr td:not(:first-child):not(.no-padding):not(.actions-padding){padding:0 20px 0 0!important}#jscripty-project md-table-container.font-size-12 td.md-cell{font-size:12px!important}#projects{position:relative}#projects>.header{height:76px;min-height:76px;max-height:76px}#projects>.header .logo .logo-icon{margin:0 16px 0 0}#projects>.header .logo .logo-text{font-size:24px}#projects>.header md-icon{color:#fff}#projects>.header .search-input-wrapper{position:relative}#projects>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#projects>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#projects>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#projects>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#projects>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#projects>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#projects>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#projects>.header.selected-bar .close-button-wrapper{width:244px}#projects>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#projects>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#projects>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#projects #add-project-button{position:fixed;bottom:8px;right:8px;padding:0}#projects #upload-project-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.mailAccount-dialog{max-width:720px;width:720px}md-dialog.mailAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.mailAccount-dialog md-toolbar .title{font-size:17px}md-dialog.mailAccount-dialog md-input-container textarea{min-height:150px}md-dialog.mailAccount-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.mailAccount-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.mailAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.mailAccount-dialog .error-list{font-size:13px}md-dialog.mailAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.mailAccount-dialog .error-list .error .message{font-weight:500}md-dialog.mailAccount-dialog .error-list .error .md-button{margin:0}md-dialog.mailAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.mailAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.mailAccount-dialog{max-width:720px;width:720px}md-dialog.mailAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.mailAccount-dialog md-toolbar .title{font-size:17px}md-dialog.mailAccount-dialog md-input-container textarea{min-height:150px}md-dialog.mailAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.mailAccount-dialog .error-list{font-size:13px}md-dialog.mailAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.mailAccount-dialog .error-list .error .message{font-weight:500}md-dialog.mailAccount-dialog .error-list .error .md-button{margin:0}md-dialog.mailAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.mailAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.mailAccount-dialog{max-width:720px;width:720px}md-dialog.mailAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.mailAccount-dialog md-toolbar .title{font-size:17px}md-dialog.mailAccount-dialog md-input-container textarea{min-height:150px}md-dialog.mailAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.mailAccount-dialog .error-list{font-size:13px}md-dialog.mailAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.mailAccount-dialog .error-list .error .message{font-weight:500}md-dialog.mailAccount-dialog .error-list .error .md-button{margin:0}md-dialog.mailAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.mailAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.mailAccount-dialog{max-width:720px;width:720px}md-dialog.mailAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.mailAccount-dialog md-toolbar .title{font-size:17px}md-dialog.mailAccount-dialog md-input-container textarea{min-height:150px}md-dialog.mailAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.mailAccount-dialog .error-list{font-size:13px}md-dialog.mailAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.mailAccount-dialog .error-list .error .message{font-weight:500}md-dialog.mailAccount-dialog .error-list .error .md-button{margin:0}md-dialog.mailAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.mailAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.mailAccount-dialog{max-width:720px;width:720px}md-dialog.mailAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.mailAccount-dialog md-toolbar .title{font-size:17px}md-dialog.mailAccount-dialog md-input-container textarea{min-height:150px}md-dialog.mailAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.mailAccount-dialog .error-list{font-size:13px}md-dialog.mailAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.mailAccount-dialog .error-list .error .message{font-weight:500}md-dialog.mailAccount-dialog .error-list .error .md-button{margin:0}md-dialog.mailAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.mailAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.mailAccount-dialog{max-width:720px;width:720px}md-dialog.mailAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.mailAccount-dialog md-toolbar .title{font-size:17px}md-dialog.mailAccount-dialog md-input-container textarea{min-height:150px}md-dialog.mailAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.mailAccount-dialog .error-list{font-size:13px}md-dialog.mailAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.mailAccount-dialog .error-list .error .message{font-weight:500}md-dialog.mailAccount-dialog .error-list .error .md-button{margin:0}md-dialog.mailAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.mailAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.mailAccount-dialog{max-width:720px;width:720px}md-dialog.mailAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.mailAccount-dialog md-toolbar .title{font-size:17px}md-dialog.mailAccount-dialog md-input-container textarea{min-height:150px}md-dialog.mailAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.mailAccount-dialog .error-list{font-size:13px}md-dialog.mailAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.mailAccount-dialog .error-list .error .message{font-weight:500}md-dialog.mailAccount-dialog .error-list .error .md-button{margin:0}md-dialog.mailAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.mailAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.mailAccount-dialog{max-width:720px;width:720px}md-dialog.mailAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.mailAccount-dialog md-toolbar .title{font-size:17px}md-dialog.mailAccount-dialog md-input-container textarea{min-height:150px}md-dialog.mailAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.mailAccount-dialog .error-list{font-size:13px}md-dialog.mailAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.mailAccount-dialog .error-list .error .message{font-weight:500}md-dialog.mailAccount-dialog .error-list .error .md-button{margin:0}md-dialog.mailAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.mailAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.mailAccount-dialog{max-width:720px;width:720px}md-dialog.mailAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.mailAccount-dialog md-toolbar .title{font-size:17px}md-dialog.mailAccount-dialog md-input-container textarea{min-height:150px}md-dialog.mailAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.mailAccount-dialog .error-list{font-size:13px}md-dialog.mailAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.mailAccount-dialog .error-list .error .message{font-weight:500}md-dialog.mailAccount-dialog .error-list .error .md-button{margin:0}md-dialog.mailAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.mailAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.mailAccount-dialog{max-width:720px;width:720px}md-dialog.mailAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.mailAccount-dialog md-toolbar .title{font-size:17px}md-dialog.mailAccount-dialog md-input-container textarea{min-height:150px}md-dialog.mailAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.mailAccount-dialog .error-list{font-size:13px}md-dialog.mailAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.mailAccount-dialog .error-list .error .message{font-weight:500}md-dialog.mailAccount-dialog .error-list .error .md-button{margin:0}md-dialog.mailAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.mailAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.mailAccount-dialog{max-width:720px;width:720px}md-dialog.mailAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.mailAccount-dialog md-toolbar .title{font-size:17px}md-dialog.mailAccount-dialog md-input-container textarea{min-height:150px}md-dialog.mailAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.mailAccount-dialog .error-list{font-size:13px}md-dialog.mailAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.mailAccount-dialog .error-list .error .message{font-weight:500}md-dialog.mailAccount-dialog .error-list .error .md-button{margin:0}md-dialog.mailAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.mailAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.mailCannedAnswer-dialog{max-width:720px;width:720px}md-dialog.mailCannedAnswer-dialog md-dialog-content{display:block;position:relative}md-dialog.mailCannedAnswer-dialog md-toolbar .title{font-size:17px}md-dialog.mailCannedAnswer-dialog md-input-container textarea{min-height:150px}md-dialog.mailCannedAnswer-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.mailCannedAnswer-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.mailCannedAnswer-dialog .date-container{padding:16px 0 24px 0}md-dialog.mailCannedAnswer-dialog .error-list{font-size:13px}md-dialog.mailCannedAnswer-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.mailCannedAnswer-dialog .error-list .error .message{font-weight:500}md-dialog.mailCannedAnswer-dialog .error-list .error .md-button{margin:0}md-dialog.mailCannedAnswer-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.mailCannedAnswer-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#mail-mailAccount .header{height:76px;min-height:76px;max-height:76px}#mail-mailAccount .header .goto-mailAccounts-button{margin-right:16px}#mail-mailAccount .header .mailAccount-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#mail-mailAccount .header .mailAccount-image img{height:100%;width:auto;max-width:none}#mail-mailAccount .header .subtitle{margin:6px 0 0 0}#mail-mailAccount .mailAccount-detail-form-container{padding:24px;margin-bottom:24px}#mail-mailAccount .mailAccount-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#mail-mailAccount .mailAccount-detail-form-container .handle{cursor:move}#mail-mailAccount .mailAccount-detail-form-container md-input-container md-switch{margin:0!important}#mail-mailAccount .mailAccount-detail-form-container #mailAccount-image-uploader{position:relative}#mail-mailAccount .mailAccount-detail-form-container #mailAccount-image-uploader.dropping .drop-text{display:flex}#mail-mailAccount .mailAccount-detail-form-container #mailAccount-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#mail-mailAccount .mailAccount-detail-form-container #mailAccount-image-uploader .upload-button{margin-bottom:16px}#mail-mailAccount .mailAccount-detail-form-container #mailAccount-image-uploader .mailAccount-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#mail-mailAccount .mailAccount-detail-form-container #mailAccount-image-uploader .mailAccount-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#mail-mailAccount .mailAccount-detail-form-container #mailAccount-image-uploader .mailAccount-image .media{max-height:100%}#mail-mailAccount md-table-container thead tr th:not(:first-child):not(.no-padding){padding:0 20px 0 0!important}#mail-mailAccount md-table-container thead th.md-checkbox-column:not(.no-padding){padding:0 24px!important}#mail-mailAccount md-table-container tbody tr td:not(:first-child):not(.no-padding):not(.actions-padding){padding:0 20px 0 0!important}#mail-mailAccount md-table-container.font-size-12 td.md-cell{font-size:12px!important}@media screen and (min-width:1921px){#mail-mailAccount .actionAppData{width:800px!important}}@media screen and (max-width:1920px){#mail-mailAccount .actionAppData{width:700px!important}}@media screen and (min-width:1751px) and (max-width:1919px){#mail-mailAccount .actionAppData{width:600px!important}}@media screen and (min-width:1601px) and (max-width:1750px){#mail-mailAccount .actionAppData{width:500px!important}}@media screen and (min-width:1537px) and (max-width:1600px){#mail-mailAccount .actionAppData{width:450px!important}}@media screen and (min-width:1281px) and (max-width:1536px){#mail-mailAccount .actionAppData{width:300px!important}}@media screen and (max-width:1280px){#mail-mailAccount .actionAppData{width:150px!important}}@media screen and (max-width:960px){#mail-mailAccount .actionAppData{width:80px!important}}#mailAccounts{position:relative}#mailAccounts>.header{height:76px;min-height:76px;max-height:76px}#mailAccounts>.header .logo .logo-icon{margin:0 16px 0 0}#mailAccounts>.header .logo .logo-text{font-size:24px}#mailAccounts>.header md-icon{color:#fff}#mailAccounts>.header .search-input-wrapper{position:relative}#mailAccounts>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#mailAccounts>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#mailAccounts>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#mailAccounts>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#mailAccounts>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#mailAccounts>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#mailAccounts>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#mailAccounts>.header.selected-bar .close-button-wrapper{width:244px}#mailAccounts>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#mailAccounts>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#mailAccounts>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#mailAccounts #add-mailAccount-button{position:fixed;bottom:8px;right:8px;padding:0}#mailAccounts #upload-mailAccount-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.mailQueue-dialog{max-width:720px;width:720px}md-dialog.mailQueue-dialog md-dialog-content{display:block;position:relative}md-dialog.mailQueue-dialog md-toolbar .title{font-size:17px}md-dialog.mailQueue-dialog md-input-container textarea{min-height:150px}md-dialog.mailQueue-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.mailQueue-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.mailQueue-dialog .date-container{padding:16px 0 24px 0}md-dialog.mailQueue-dialog .error-list{font-size:13px}md-dialog.mailQueue-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.mailQueue-dialog .error-list .error .message{font-weight:500}md-dialog.mailQueue-dialog .error-list .error .md-button{margin:0}md-dialog.mailQueue-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.mailQueue-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#mail-mailQueue .header{height:76px;min-height:76px;max-height:76px}#mail-mailQueue .header .goto-mailQueues-button{margin-right:16px}#mail-mailQueue .header .mailQueue-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#mail-mailQueue .header .mailQueue-image img{height:100%;width:auto;max-width:none}#mail-mailQueue .header .subtitle{margin:6px 0 0 0}#mail-mailQueue .mailQueue-detail-form-container{padding:24px;margin-bottom:24px}#mail-mailQueue .mailQueue-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#mail-mailQueue .mailQueue-detail-form-container .handle{cursor:move}#mail-mailQueue .mailQueue-detail-form-container md-input-container md-switch{margin:0!important}#mail-mailQueue .mailQueue-detail-form-container #mailQueue-image-uploader{position:relative}#mail-mailQueue .mailQueue-detail-form-container #mailQueue-image-uploader.dropping .drop-text{display:flex}#mail-mailQueue .mailQueue-detail-form-container #mailQueue-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#mail-mailQueue .mailQueue-detail-form-container #mailQueue-image-uploader .upload-button{margin-bottom:16px}#mail-mailQueue .mailQueue-detail-form-container #mailQueue-image-uploader .mailQueue-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#mail-mailQueue .mailQueue-detail-form-container #mailQueue-image-uploader .mailQueue-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#mail-mailQueue .mailQueue-detail-form-container #mailQueue-image-uploader .mailQueue-image .media{max-height:100%}#mail-mailQueue md-table-container thead tr th:not(:first-child):not(.no-padding){padding:0 20px 0 0!important}#mail-mailQueue md-table-container thead th.md-checkbox-column:not(.no-padding){padding:0 24px!important}#mail-mailQueue md-table-container tbody tr td:not(:first-child):not(.no-padding):not(.actions-padding){padding:0 20px 0 0!important}#mail-mailQueue md-table-container.font-size-12 td.md-cell{font-size:12px!important}#mailQueues{position:relative}#mailQueues>.header{height:76px;min-height:76px;max-height:76px}#mailQueues>.header .logo .logo-icon{margin:0 16px 0 0}#mailQueues>.header .logo .logo-text{font-size:24px}#mailQueues>.header md-icon{color:#fff}#mailQueues>.header .search-input-wrapper{position:relative}#mailQueues>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#mailQueues>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#mailQueues>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#mailQueues>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#mailQueues>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#mailQueues>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#mailQueues>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#mailQueues>.header.selected-bar .close-button-wrapper{width:244px}#mailQueues>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#mailQueues>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#mailQueues>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#mailQueues #add-mailQueue-button{position:fixed;bottom:8px;right:8px;padding:0}#mailQueues #upload-mailQueue-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.mailSubstatus-dialog{max-width:720px;width:720px}md-dialog.mailSubstatus-dialog md-dialog-content{display:block;position:relative}md-dialog.mailSubstatus-dialog md-toolbar .title{font-size:17px}md-dialog.mailSubstatus-dialog md-input-container textarea{min-height:150px}md-dialog.mailSubstatus-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.mailSubstatus-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.mailSubstatus-dialog .date-container{padding:16px 0 24px 0}md-dialog.mailSubstatus-dialog .error-list{font-size:13px}md-dialog.mailSubstatus-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.mailSubstatus-dialog .error-list .error .message{font-weight:500}md-dialog.mailSubstatus-dialog .error-list .error .md-button{margin:0}md-dialog.mailSubstatus-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.mailSubstatus-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#mailSubtatuses{position:relative}#mailSubtatuses>.header{height:76px;min-height:76px;max-height:76px}#mailSubtatuses>.header .logo .logo-icon{margin:0 16px 0 0}#mailSubtatuses>.header .logo .logo-text{font-size:24px}#mailSubtatuses>.header md-icon{color:#fff}#mailSubtatuses>.header .search-input-wrapper{position:relative}#mailSubtatuses>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#mailSubtatuses>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#mailSubtatuses>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#mailSubtatuses>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#mailSubtatuses>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#mailSubtatuses>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#mailSubtatuses>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#mailSubtatuses>.header.selected-bar .close-button-wrapper{width:244px}#mailSubtatuses>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#mailSubtatuses>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#mailSubtatuses>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#mailSubtatuses #add-mailSubstatus-button{position:fixed;bottom:8px;right:8px;padding:0}#mailSubtatuses #upload-mailSubstatus-button{position:fixed;bottom:8px;right:8px;padding:0}#realtime{height:auto}#realtime>.content .blink{animation:blinker 2s linear infinite}#realtime>.content .avatar-wrapper{position:relative}#realtime>.content .avatar-wrapper .status{position:absolute;bottom:-3px;right:5px}#realtime>.content .search-input-wrapper{position:relative;margin-left:20px}#realtime>.content .search-input-wrapper label{padding:6px;cursor:pointer}#realtime>.content .search-input-wrapper md-input-container{padding-top:20px}#realtime>.content .main .labels{padding:8px 16px}#realtime>.content .main .labels .label{margin:0 0 2px 4px;padding:2px 5px;font-size:11px;white-space:nowrap;border-radius:2px}#realtime>.content .main .status{position:absolute;bottom:-3px;right:5px}#realtime>.content .main .avatar-wrapper{position:relative}#realtime>.content .main .avatar-wrapper .status{position:absolute;bottom:-3px;right:5px}#realtime>.content .custom-column{padding:0 24px!important}@keyframes blinker{50%{opacity:0}}md-dialog.plugin-dialog{max-width:720px;width:720px}md-dialog.plugin-dialog md-dialog-content{display:block;position:relative}md-dialog.plugin-dialog md-toolbar .title{font-size:17px}md-dialog.plugin-dialog md-input-container textarea{min-height:150px}md-dialog.plugin-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.plugin-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.plugin-dialog .date-container{padding:16px 0 24px 0}md-dialog.plugin-dialog .error-list{font-size:13px}md-dialog.plugin-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.plugin-dialog .error-list .error .message{font-weight:500}md-dialog.plugin-dialog .error-list .error .md-button{margin:0}md-dialog.plugin-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.plugin-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#marketplace-plugin .header{height:76px;min-height:76px;max-height:76px}#marketplace-plugin .header .goto-plugins-button{margin-right:16px}#marketplace-plugin .header .plugin-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#marketplace-plugin .header .plugin-image img{height:100%;width:auto;max-width:none}#marketplace-plugin .header .subtitle{margin:6px 0 0 0}#marketplace-plugin .plugin-detail-form-container{padding:24px;margin-bottom:24px}#marketplace-plugin .plugin-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#marketplace-plugin .plugin-detail-form-container .handle{cursor:move}#marketplace-plugin .plugin-detail-form-container md-input-container md-switch{margin:0!important}#marketplace-plugin .plugin-detail-form-container #plugin-image-uploader{position:relative}#marketplace-plugin .plugin-detail-form-container #plugin-image-uploader.dropping .drop-text{display:flex}#marketplace-plugin .plugin-detail-form-container #plugin-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#marketplace-plugin .plugin-detail-form-container #plugin-image-uploader .upload-button{margin-bottom:16px}#marketplace-plugin .plugin-detail-form-container #plugin-image-uploader .plugin-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#marketplace-plugin .plugin-detail-form-container #plugin-image-uploader .plugin-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#marketplace-plugin .plugin-detail-form-container #plugin-image-uploader .plugin-image .media{max-height:100%}#marketplace-plugin md-table-container thead tr th:not(:first-child):not(.no-padding){padding:0 20px 0 0!important}#marketplace-plugin md-table-container thead th.md-checkbox-column:not(.no-padding){padding:0 24px!important}#marketplace-plugin md-table-container tbody tr td:not(:first-child):not(.no-padding):not(.actions-padding){padding:0 20px 0 0!important}#marketplace-plugin md-table-container.font-size-12 td.md-cell{font-size:12px!important}#plugins{position:relative}#plugins>.header{height:76px;min-height:76px;max-height:76px}#plugins>.header .logo .logo-icon{margin:0 16px 0 0}#plugins>.header .logo .logo-text{font-size:24px}#plugins>.header md-icon{color:#fff}#plugins>.header .search-input-wrapper{position:relative}#plugins>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#plugins>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#plugins>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#plugins>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#plugins>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#plugins>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#plugins>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#plugins>.header.selected-bar .close-button-wrapper{width:244px}#plugins>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#plugins>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#plugins>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#plugins #add-plugin-button{position:fixed;bottom:8px;right:8px;padding:0}#plugins #upload-plugin-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.upload-dialog{max-width:720px;width:720px}md-dialog.upload-dialog md-dialog-content{display:block;position:relative}md-dialog.upload-dialog md-toolbar .title{font-size:17px}md-dialog.upload-dialog md-input-container textarea{min-height:150px}md-dialog.upload-dialog md-progress-linear{padding-top:16px!important}md-dialog.upload-dialog .date-container{padding:16px 0 24px 0}md-dialog.upload-dialog .error-list{font-size:13px}md-dialog.upload-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.upload-dialog .error-list .error .message{font-weight:500}md-dialog.upload-dialog .error-list .error .md-button{margin:0}md-dialog.upload-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.upload-dialog .plugin-image{overflow:hidden;max-width:148px;margin-right:16px;border:3px solid rgba(0,0,0,.12);padding:10px}md-dialog.upload-dialog .plugin-image img{width:auto;max-width:none}md-dialog.upload-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.ivrCampaign-dialog{max-width:720px;width:720px}md-dialog.ivrCampaign-dialog md-dialog-content{display:block;position:relative}md-dialog.ivrCampaign-dialog md-toolbar .title{font-size:17px}md-dialog.ivrCampaign-dialog md-input-container textarea{min-height:150px}md-dialog.ivrCampaign-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.ivrCampaign-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.ivrCampaign-dialog .date-container{padding:16px 0 24px 0}md-dialog.ivrCampaign-dialog .error-list{font-size:13px}md-dialog.ivrCampaign-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.ivrCampaign-dialog .error-list .error .message{font-weight:500}md-dialog.ivrCampaign-dialog .error-list .error .md-button{margin:0}md-dialog.ivrCampaign-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.ivrCampaign-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.hopper-dialog{max-width:720px;width:720px}md-dialog.hopper-dialog md-dialog-content{display:block;position:relative}md-dialog.hopper-dialog md-toolbar .title{font-size:17px}md-dialog.hopper-dialog md-input-container textarea{min-height:150px}md-dialog.hopper-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.hopper-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.hopper-dialog .date-container{padding:16px 0 24px 0}md-dialog.hopper-dialog .error-list{font-size:13px}md-dialog.hopper-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.hopper-dialog .error-list .error .message{font-weight:500}md-dialog.hopper-dialog .error-list .error .md-button{margin:0}md-dialog.hopper-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.hopper-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#motiondialer-ivrCampaign .header{height:76px;min-height:76px;max-height:76px}#motiondialer-ivrCampaign .header .goto-ivrCampaigns-button{margin-right:16px}#motiondialer-ivrCampaign .header .ivrCampaign-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#motiondialer-ivrCampaign .header .ivrCampaign-image img{height:100%;width:auto;max-width:none}#motiondialer-ivrCampaign .header .subtitle{margin:6px 0 0 0}#motiondialer-ivrCampaign .ivrCampaign-detail-form-container{padding:24px;margin-bottom:24px}#motiondialer-ivrCampaign .ivrCampaign-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#motiondialer-ivrCampaign .ivrCampaign-detail-form-container .handle{cursor:move}#motiondialer-ivrCampaign .ivrCampaign-detail-form-container md-input-container md-switch{margin:0!important}#motiondialer-ivrCampaign .ivrCampaign-detail-form-container #ivrCampaign-image-uploader{position:relative}#motiondialer-ivrCampaign .ivrCampaign-detail-form-container #ivrCampaign-image-uploader.dropping .drop-text{display:flex}#motiondialer-ivrCampaign .ivrCampaign-detail-form-container #ivrCampaign-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#motiondialer-ivrCampaign .ivrCampaign-detail-form-container #ivrCampaign-image-uploader .upload-button{margin-bottom:16px}#motiondialer-ivrCampaign .ivrCampaign-detail-form-container #ivrCampaign-image-uploader .ivrCampaign-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#motiondialer-ivrCampaign .ivrCampaign-detail-form-container #ivrCampaign-image-uploader .ivrCampaign-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#motiondialer-ivrCampaign .ivrCampaign-detail-form-container #ivrCampaign-image-uploader .ivrCampaign-image .media{max-height:100%}#motiondialer-ivrCampaign md-table-container thead tr th:not(:first-child):not(.no-padding){padding:0 20px 0 0!important}#motiondialer-ivrCampaign md-table-container thead th.md-checkbox-column:not(.no-padding){padding:0 24px!important}#motiondialer-ivrCampaign md-table-container tbody tr td:not(:first-child):not(.no-padding):not(.actions-padding){padding:0 20px 0 0!important}#motiondialer-ivrCampaign md-table-container.font-size-12 td.md-cell{font-size:12px!important}#ivrCampaigns{position:relative}#ivrCampaigns>.header{height:76px;min-height:76px;max-height:76px}#ivrCampaigns>.header .logo .logo-icon{margin:0 16px 0 0}#ivrCampaigns>.header .logo .logo-text{font-size:24px}#ivrCampaigns>.header md-icon{color:#fff}#ivrCampaigns>.header .search-input-wrapper{position:relative}#ivrCampaigns>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#ivrCampaigns>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#ivrCampaigns>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#ivrCampaigns>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#ivrCampaigns>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#ivrCampaigns>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#ivrCampaigns>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#ivrCampaigns>.header.selected-bar .close-button-wrapper{width:244px}#ivrCampaigns>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#ivrCampaigns>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#ivrCampaigns>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#ivrCampaigns #add-ivrCampaign-button{position:fixed;bottom:8px;right:8px;padding:0}#ivrCampaigns #upload-ivrCampaign-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.queueCampaign-dialog{max-width:720px;width:720px}md-dialog.queueCampaign-dialog md-dialog-content{display:block;position:relative}md-dialog.queueCampaign-dialog md-toolbar .title{font-size:17px}md-dialog.queueCampaign-dialog md-input-container textarea{min-height:150px}md-dialog.queueCampaign-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.queueCampaign-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.queueCampaign-dialog .date-container{padding:16px 0 24px 0}md-dialog.queueCampaign-dialog .error-list{font-size:13px}md-dialog.queueCampaign-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.queueCampaign-dialog .error-list .error .message{font-weight:500}md-dialog.queueCampaign-dialog .error-list .error .md-button{margin:0}md-dialog.queueCampaign-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.queueCampaign-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.hopper-dialog{max-width:720px;width:720px}md-dialog.hopper-dialog md-dialog-content{display:block;position:relative}md-dialog.hopper-dialog md-toolbar .title{font-size:17px}md-dialog.hopper-dialog md-input-container textarea{min-height:150px}md-dialog.hopper-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.hopper-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.hopper-dialog .date-container{padding:16px 0 24px 0}md-dialog.hopper-dialog .error-list{font-size:13px}md-dialog.hopper-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.hopper-dialog .error-list .error .message{font-weight:500}md-dialog.hopper-dialog .error-list .error .md-button{margin:0}md-dialog.hopper-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.hopper-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#motiondialer-queueCampaign .header{height:76px;min-height:76px;max-height:76px}#motiondialer-queueCampaign .header .goto-queueCampaigns-button{margin-right:16px}#motiondialer-queueCampaign .header .queueCampaign-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#motiondialer-queueCampaign .header .queueCampaign-image img{height:100%;width:auto;max-width:none}#motiondialer-queueCampaign .header .subtitle{margin:6px 0 0 0}#motiondialer-queueCampaign .queueCampaign-detail-form-container{padding:24px;margin-bottom:24px}#motiondialer-queueCampaign .queueCampaign-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#motiondialer-queueCampaign .queueCampaign-detail-form-container .handle{cursor:move}#motiondialer-queueCampaign .queueCampaign-detail-form-container md-input-container md-switch{margin:0!important}#motiondialer-queueCampaign .queueCampaign-detail-form-container #queueCampaign-image-uploader{position:relative}#motiondialer-queueCampaign .queueCampaign-detail-form-container #queueCampaign-image-uploader.dropping .drop-text{display:flex}#motiondialer-queueCampaign .queueCampaign-detail-form-container #queueCampaign-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#motiondialer-queueCampaign .queueCampaign-detail-form-container #queueCampaign-image-uploader .upload-button{margin-bottom:16px}#motiondialer-queueCampaign .queueCampaign-detail-form-container #queueCampaign-image-uploader .queueCampaign-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#motiondialer-queueCampaign .queueCampaign-detail-form-container #queueCampaign-image-uploader .queueCampaign-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#motiondialer-queueCampaign .queueCampaign-detail-form-container #queueCampaign-image-uploader .queueCampaign-image .media{max-height:100%}#motiondialer-queueCampaign md-table-container thead tr th:not(:first-child):not(.no-padding){padding:0 20px 0 0!important}#motiondialer-queueCampaign md-table-container thead th.md-checkbox-column:not(.no-padding){padding:0 24px!important}#motiondialer-queueCampaign md-table-container tbody tr td:not(:first-child):not(.no-padding):not(.actions-padding){padding:0 20px 0 0!important}#motiondialer-queueCampaign md-table-container.font-size-12 td.md-cell{font-size:12px!important}#queueCampaigns{position:relative}#queueCampaigns>.header{height:76px;min-height:76px;max-height:76px}#queueCampaigns>.header .logo .logo-icon{margin:0 16px 0 0}#queueCampaigns>.header .logo .logo-text{font-size:24px}#queueCampaigns>.header md-icon{color:#fff}#queueCampaigns>.header .search-input-wrapper{position:relative}#queueCampaigns>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#queueCampaigns>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#queueCampaigns>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#queueCampaigns>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#queueCampaigns>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#queueCampaigns>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#queueCampaigns>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#queueCampaigns>.header.selected-bar .close-button-wrapper{width:244px}#queueCampaigns>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#queueCampaigns>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#queueCampaigns>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#queueCampaigns #add-queueCampaign-button{position:fixed;bottom:8px;right:8px;padding:0}#queueCampaigns #upload-queueCampaign-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.predictive-dialog{max-width:720px;width:720px}md-dialog.predictive-dialog md-dialog-content{display:block;position:relative}md-dialog.predictive-dialog md-toolbar .title{font-size:17px}md-dialog.predictive-dialog md-input-container textarea{min-height:150px}md-dialog.predictive-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.predictive-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.predictive-dialog .date-container{padding:16px 0 24px 0}md-dialog.predictive-dialog .error-list{font-size:13px}md-dialog.predictive-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.predictive-dialog .error-list .error .message{font-weight:500}md-dialog.predictive-dialog .error-list .error .md-button{margin:0}md-dialog.predictive-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.predictive-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#realtime{height:auto}#realtime>.content .blink{animation:blinker 2s linear infinite}#realtime>.content .avatar-wrapper{position:relative}#realtime>.content .avatar-wrapper .status{position:absolute;bottom:-3px;right:5px}#realtime>.content .search-input-wrapper{position:relative;margin-left:20px}#realtime>.content .search-input-wrapper label{padding:6px;cursor:pointer}#realtime>.content .search-input-wrapper md-input-container{padding-top:20px}#realtime>.content .main .labels{padding:8px 16px}#realtime>.content .main .labels .label{margin:0 0 2px 4px;padding:2px 5px;font-size:11px;white-space:nowrap;border-radius:2px}#realtime>.content .main .status{position:absolute;bottom:-3px;right:5px}#realtime>.content .main .avatar-wrapper{position:relative}#realtime>.content .main .avatar-wrapper .status{position:absolute;bottom:-3px;right:5px}#realtime>.content .custom-column{padding:0 24px!important}@keyframes blinker{50%{opacity:0}}md-dialog.openchannelAccount-dialog{max-width:720px;width:720px}md-dialog.openchannelAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.openchannelAccount-dialog md-toolbar .title{font-size:17px}md-dialog.openchannelAccount-dialog md-input-container textarea{min-height:150px}md-dialog.openchannelAccount-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.openchannelAccount-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.openchannelAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.openchannelAccount-dialog .error-list{font-size:13px}md-dialog.openchannelAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.openchannelAccount-dialog .error-list .error .message{font-weight:500}md-dialog.openchannelAccount-dialog .error-list .error .md-button{margin:0}md-dialog.openchannelAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.openchannelAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.openchannelAccount-dialog{max-width:720px;width:720px}md-dialog.openchannelAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.openchannelAccount-dialog md-toolbar .title{font-size:17px}md-dialog.openchannelAccount-dialog md-input-container textarea{min-height:150px}md-dialog.openchannelAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.openchannelAccount-dialog .error-list{font-size:13px}md-dialog.openchannelAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.openchannelAccount-dialog .error-list .error .message{font-weight:500}md-dialog.openchannelAccount-dialog .error-list .error .md-button{margin:0}md-dialog.openchannelAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.openchannelAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.openchannelAccount-dialog{max-width:720px;width:720px}md-dialog.openchannelAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.openchannelAccount-dialog md-toolbar .title{font-size:17px}md-dialog.openchannelAccount-dialog md-input-container textarea{min-height:150px}md-dialog.openchannelAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.openchannelAccount-dialog .error-list{font-size:13px}md-dialog.openchannelAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.openchannelAccount-dialog .error-list .error .message{font-weight:500}md-dialog.openchannelAccount-dialog .error-list .error .md-button{margin:0}md-dialog.openchannelAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.openchannelAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.openchannelAccount-dialog{max-width:720px;width:720px}md-dialog.openchannelAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.openchannelAccount-dialog md-toolbar .title{font-size:17px}md-dialog.openchannelAccount-dialog md-input-container textarea{min-height:150px}md-dialog.openchannelAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.openchannelAccount-dialog .error-list{font-size:13px}md-dialog.openchannelAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.openchannelAccount-dialog .error-list .error .message{font-weight:500}md-dialog.openchannelAccount-dialog .error-list .error .md-button{margin:0}md-dialog.openchannelAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.openchannelAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.openchannelAccount-dialog{max-width:720px;width:720px}md-dialog.openchannelAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.openchannelAccount-dialog md-toolbar .title{font-size:17px}md-dialog.openchannelAccount-dialog md-input-container textarea{min-height:150px}md-dialog.openchannelAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.openchannelAccount-dialog .error-list{font-size:13px}md-dialog.openchannelAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.openchannelAccount-dialog .error-list .error .message{font-weight:500}md-dialog.openchannelAccount-dialog .error-list .error .md-button{margin:0}md-dialog.openchannelAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.openchannelAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.openchannelAccount-dialog{max-width:720px;width:720px}md-dialog.openchannelAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.openchannelAccount-dialog md-toolbar .title{font-size:17px}md-dialog.openchannelAccount-dialog md-input-container textarea{min-height:150px}md-dialog.openchannelAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.openchannelAccount-dialog .error-list{font-size:13px}md-dialog.openchannelAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.openchannelAccount-dialog .error-list .error .message{font-weight:500}md-dialog.openchannelAccount-dialog .error-list .error .md-button{margin:0}md-dialog.openchannelAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.openchannelAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.openchannelAccount-dialog{max-width:720px;width:720px}md-dialog.openchannelAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.openchannelAccount-dialog md-toolbar .title{font-size:17px}md-dialog.openchannelAccount-dialog md-input-container textarea{min-height:150px}md-dialog.openchannelAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.openchannelAccount-dialog .error-list{font-size:13px}md-dialog.openchannelAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.openchannelAccount-dialog .error-list .error .message{font-weight:500}md-dialog.openchannelAccount-dialog .error-list .error .md-button{margin:0}md-dialog.openchannelAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.openchannelAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.openchannelAccount-dialog{max-width:720px;width:720px}md-dialog.openchannelAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.openchannelAccount-dialog md-toolbar .title{font-size:17px}md-dialog.openchannelAccount-dialog md-input-container textarea{min-height:150px}md-dialog.openchannelAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.openchannelAccount-dialog .error-list{font-size:13px}md-dialog.openchannelAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.openchannelAccount-dialog .error-list .error .message{font-weight:500}md-dialog.openchannelAccount-dialog .error-list .error .md-button{margin:0}md-dialog.openchannelAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.openchannelAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.openchannelAccount-dialog{max-width:720px;width:720px}md-dialog.openchannelAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.openchannelAccount-dialog md-toolbar .title{font-size:17px}md-dialog.openchannelAccount-dialog md-input-container textarea{min-height:150px}md-dialog.openchannelAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.openchannelAccount-dialog .error-list{font-size:13px}md-dialog.openchannelAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.openchannelAccount-dialog .error-list .error .message{font-weight:500}md-dialog.openchannelAccount-dialog .error-list .error .md-button{margin:0}md-dialog.openchannelAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.openchannelAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.openchannelAccount-dialog{max-width:720px;width:720px}md-dialog.openchannelAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.openchannelAccount-dialog md-toolbar .title{font-size:17px}md-dialog.openchannelAccount-dialog md-input-container textarea{min-height:150px}md-dialog.openchannelAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.openchannelAccount-dialog .error-list{font-size:13px}md-dialog.openchannelAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.openchannelAccount-dialog .error-list .error .message{font-weight:500}md-dialog.openchannelAccount-dialog .error-list .error .md-button{margin:0}md-dialog.openchannelAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.openchannelAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.openchannelAccount-dialog{max-width:720px;width:720px}md-dialog.openchannelAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.openchannelAccount-dialog md-toolbar .title{font-size:17px}md-dialog.openchannelAccount-dialog md-input-container textarea{min-height:150px}md-dialog.openchannelAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.openchannelAccount-dialog .error-list{font-size:13px}md-dialog.openchannelAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.openchannelAccount-dialog .error-list .error .message{font-weight:500}md-dialog.openchannelAccount-dialog .error-list .error .md-button{margin:0}md-dialog.openchannelAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.openchannelAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.openchannelAccount-dialog{max-width:720px;width:720px}md-dialog.openchannelAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.openchannelAccount-dialog md-toolbar .title{font-size:17px}md-dialog.openchannelAccount-dialog md-input-container textarea{min-height:150px}md-dialog.openchannelAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.openchannelAccount-dialog .error-list{font-size:13px}md-dialog.openchannelAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.openchannelAccount-dialog .error-list .error .message{font-weight:500}md-dialog.openchannelAccount-dialog .error-list .error .md-button{margin:0}md-dialog.openchannelAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.openchannelAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.openchannelAccount-dialog{max-width:720px;width:720px}md-dialog.openchannelAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.openchannelAccount-dialog md-toolbar .title{font-size:17px}md-dialog.openchannelAccount-dialog md-input-container textarea{min-height:150px}md-dialog.openchannelAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.openchannelAccount-dialog .error-list{font-size:13px}md-dialog.openchannelAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.openchannelAccount-dialog .error-list .error .message{font-weight:500}md-dialog.openchannelAccount-dialog .error-list .error .md-button{margin:0}md-dialog.openchannelAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.openchannelAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.openchannelAccount-dialog{max-width:720px;width:720px}md-dialog.openchannelAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.openchannelAccount-dialog md-toolbar .title{font-size:17px}md-dialog.openchannelAccount-dialog md-input-container textarea{min-height:150px}md-dialog.openchannelAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.openchannelAccount-dialog .error-list{font-size:13px}md-dialog.openchannelAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.openchannelAccount-dialog .error-list .error .message{font-weight:500}md-dialog.openchannelAccount-dialog .error-list .error .md-button{margin:0}md-dialog.openchannelAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.openchannelAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.openchannelCannedAnswer-dialog{max-width:720px;width:720px}md-dialog.openchannelCannedAnswer-dialog md-dialog-content{display:block;position:relative}md-dialog.openchannelCannedAnswer-dialog md-toolbar .title{font-size:17px}md-dialog.openchannelCannedAnswer-dialog md-input-container textarea{min-height:150px}md-dialog.openchannelCannedAnswer-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.openchannelCannedAnswer-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.openchannelCannedAnswer-dialog .date-container{padding:16px 0 24px 0}md-dialog.openchannelCannedAnswer-dialog .error-list{font-size:13px}md-dialog.openchannelCannedAnswer-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.openchannelCannedAnswer-dialog .error-list .error .message{font-weight:500}md-dialog.openchannelCannedAnswer-dialog .error-list .error .md-button{margin:0}md-dialog.openchannelCannedAnswer-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.openchannelCannedAnswer-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#openchannel-openchannelAccount .header{height:76px;min-height:76px;max-height:76px}#openchannel-openchannelAccount .header .goto-openchannelAccounts-button{margin-right:16px}#openchannel-openchannelAccount .header .openchannelAccount-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#openchannel-openchannelAccount .header .openchannelAccount-image img{height:100%;width:auto;max-width:none}#openchannel-openchannelAccount .header .subtitle{margin:6px 0 0 0}#openchannel-openchannelAccount .openchannelAccount-detail-form-container{padding:24px;margin-bottom:24px}#openchannel-openchannelAccount .openchannelAccount-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#openchannel-openchannelAccount .openchannelAccount-detail-form-container .handle{cursor:move}#openchannel-openchannelAccount .openchannelAccount-detail-form-container md-input-container md-switch{margin:0!important}#openchannel-openchannelAccount .openchannelAccount-detail-form-container #openchannelAccount-image-uploader{position:relative}#openchannel-openchannelAccount .openchannelAccount-detail-form-container #openchannelAccount-image-uploader.dropping .drop-text{display:flex}#openchannel-openchannelAccount .openchannelAccount-detail-form-container #openchannelAccount-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#openchannel-openchannelAccount .openchannelAccount-detail-form-container #openchannelAccount-image-uploader .upload-button{margin-bottom:16px}#openchannel-openchannelAccount .openchannelAccount-detail-form-container #openchannelAccount-image-uploader .openchannelAccount-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#openchannel-openchannelAccount .openchannelAccount-detail-form-container #openchannelAccount-image-uploader .openchannelAccount-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#openchannel-openchannelAccount .openchannelAccount-detail-form-container #openchannelAccount-image-uploader .openchannelAccount-image .media{max-height:100%}#openchannel-openchannelAccount md-table-container thead tr th:not(:first-child):not(.no-padding){padding:0 20px 0 0!important}#openchannel-openchannelAccount md-table-container thead th.md-checkbox-column:not(.no-padding){padding:0 24px!important}#openchannel-openchannelAccount md-table-container tbody tr td:not(:first-child):not(.no-padding):not(.actions-padding){padding:0 20px 0 0!important}#openchannel-openchannelAccount md-table-container.font-size-12 td.md-cell{font-size:12px!important}@media screen and (min-width:1921px){#openchannel-openchannelAccount .actionAppData{width:800px!important}}@media screen and (max-width:1920px){#openchannel-openchannelAccount .actionAppData{width:700px!important}}@media screen and (min-width:1751px) and (max-width:1919px){#openchannel-openchannelAccount .actionAppData{width:600px!important}}@media screen and (min-width:1601px) and (max-width:1750px){#openchannel-openchannelAccount .actionAppData{width:500px!important}}@media screen and (min-width:1537px) and (max-width:1600px){#openchannel-openchannelAccount .actionAppData{width:450px!important}}@media screen and (min-width:1281px) and (max-width:1536px){#openchannel-openchannelAccount .actionAppData{width:300px!important}}@media screen and (max-width:1280px){#openchannel-openchannelAccount .actionAppData{width:150px!important}}@media screen and (max-width:960px){#openchannel-openchannelAccount .actionAppData{width:80px!important}}#openchannelAccounts{position:relative}#openchannelAccounts>.header{height:76px;min-height:76px;max-height:76px}#openchannelAccounts>.header .logo .logo-icon{margin:0 16px 0 0}#openchannelAccounts>.header .logo .logo-text{font-size:24px}#openchannelAccounts>.header md-icon{color:#fff}#openchannelAccounts>.header .search-input-wrapper{position:relative}#openchannelAccounts>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#openchannelAccounts>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#openchannelAccounts>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#openchannelAccounts>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#openchannelAccounts>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#openchannelAccounts>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#openchannelAccounts>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#openchannelAccounts>.header.selected-bar .close-button-wrapper{width:244px}#openchannelAccounts>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#openchannelAccounts>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#openchannelAccounts>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#openchannelAccounts #add-openchannelAccount-button{position:fixed;bottom:8px;right:8px;padding:0}#openchannelAccounts #upload-openchannelAccount-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.openchannelQueue-dialog{max-width:720px;width:720px}md-dialog.openchannelQueue-dialog md-dialog-content{display:block;position:relative}md-dialog.openchannelQueue-dialog md-toolbar .title{font-size:17px}md-dialog.openchannelQueue-dialog md-input-container textarea{min-height:150px}md-dialog.openchannelQueue-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.openchannelQueue-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.openchannelQueue-dialog .date-container{padding:16px 0 24px 0}md-dialog.openchannelQueue-dialog .error-list{font-size:13px}md-dialog.openchannelQueue-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.openchannelQueue-dialog .error-list .error .message{font-weight:500}md-dialog.openchannelQueue-dialog .error-list .error .md-button{margin:0}md-dialog.openchannelQueue-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.openchannelQueue-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#openchannel-openchannelQueue .header{height:76px;min-height:76px;max-height:76px}#openchannel-openchannelQueue .header .goto-openchannelQueues-button{margin-right:16px}#openchannel-openchannelQueue .header .openchannelQueue-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#openchannel-openchannelQueue .header .openchannelQueue-image img{height:100%;width:auto;max-width:none}#openchannel-openchannelQueue .header .subtitle{margin:6px 0 0 0}#openchannel-openchannelQueue .openchannelQueue-detail-form-container{padding:24px;margin-bottom:24px}#openchannel-openchannelQueue .openchannelQueue-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#openchannel-openchannelQueue .openchannelQueue-detail-form-container .handle{cursor:move}#openchannel-openchannelQueue .openchannelQueue-detail-form-container md-input-container md-switch{margin:0!important}#openchannel-openchannelQueue .openchannelQueue-detail-form-container #openchannelQueue-image-uploader{position:relative}#openchannel-openchannelQueue .openchannelQueue-detail-form-container #openchannelQueue-image-uploader.dropping .drop-text{display:flex}#openchannel-openchannelQueue .openchannelQueue-detail-form-container #openchannelQueue-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#openchannel-openchannelQueue .openchannelQueue-detail-form-container #openchannelQueue-image-uploader .upload-button{margin-bottom:16px}#openchannel-openchannelQueue .openchannelQueue-detail-form-container #openchannelQueue-image-uploader .openchannelQueue-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#openchannel-openchannelQueue .openchannelQueue-detail-form-container #openchannelQueue-image-uploader .openchannelQueue-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#openchannel-openchannelQueue .openchannelQueue-detail-form-container #openchannelQueue-image-uploader .openchannelQueue-image .media{max-height:100%}#openchannel-openchannelQueue md-table-container thead tr th:not(:first-child):not(.no-padding){padding:0 20px 0 0!important}#openchannel-openchannelQueue md-table-container thead th.md-checkbox-column:not(.no-padding){padding:0 24px!important}#openchannel-openchannelQueue md-table-container tbody tr td:not(:first-child):not(.no-padding):not(.actions-padding){padding:0 20px 0 0!important}#openchannel-openchannelQueue md-table-container.font-size-12 td.md-cell{font-size:12px!important}#openchannelQueues{position:relative}#openchannelQueues>.header{height:76px;min-height:76px;max-height:76px}#openchannelQueues>.header .logo .logo-icon{margin:0 16px 0 0}#openchannelQueues>.header .logo .logo-text{font-size:24px}#openchannelQueues>.header md-icon{color:#fff}#openchannelQueues>.header .search-input-wrapper{position:relative}#openchannelQueues>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#openchannelQueues>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#openchannelQueues>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#openchannelQueues>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#openchannelQueues>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#openchannelQueues>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#openchannelQueues>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#openchannelQueues>.header.selected-bar .close-button-wrapper{width:244px}#openchannelQueues>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#openchannelQueues>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#openchannelQueues>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#openchannelQueues #add-openchannelQueue-button{position:fixed;bottom:8px;right:8px;padding:0}#openchannelQueues #upload-openchannelQueue-button{position:fixed;bottom:8px;right:8px;padding:0}#realtime{height:auto}#realtime>.content .blink{animation:blinker 2s linear infinite}#realtime>.content .avatar-wrapper{position:relative}#realtime>.content .avatar-wrapper .status{position:absolute;bottom:-3px;right:5px}#realtime>.content .search-input-wrapper{position:relative;margin-left:20px}#realtime>.content .search-input-wrapper label{padding:6px;cursor:pointer}#realtime>.content .search-input-wrapper md-input-container{padding-top:20px}#realtime>.content .main .labels{padding:8px 16px}#realtime>.content .main .labels .label{margin:0 0 2px 4px;padding:2px 5px;font-size:11px;white-space:nowrap;border-radius:2px}#realtime>.content .main .status{position:absolute;bottom:-3px;right:5px}#realtime>.content .main .avatar-wrapper{position:relative}#realtime>.content .main .avatar-wrapper .status{position:absolute;bottom:-3px;right:5px}#realtime>.content .custom-column{padding:0 24px!important}@keyframes blinker{50%{opacity:0}}#plugin .filter-header{background-image:url(/assets/images/backgrounds/header-bg.png);color:#fff}#cloudProviders{position:relative}#cloudProviders>.header{height:76px;min-height:76px;max-height:76px}#cloudProviders>.header .logo .logo-icon{margin:0 16px 0 0}#cloudProviders>.header .logo .logo-text{font-size:24px}#cloudProviders>.header md-icon{color:#fff}#cloudProviders>.header .search-input-wrapper{position:relative}#cloudProviders>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#cloudProviders>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#cloudProviders>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#cloudProviders>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#cloudProviders>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#cloudProviders>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#cloudProviders>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#cloudProviders>.header.selected-bar .close-button-wrapper{width:244px}#cloudProviders>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#cloudProviders>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#cloudProviders>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#cloudProviders #add-cloudProvider-button{position:fixed;bottom:8px;right:8px;padding:0}#cloudProviders #upload-cloudProvider-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.cloudProvider-dialog{max-width:720px;width:720px}md-dialog.cloudProvider-dialog md-dialog-content{display:block;position:relative}md-dialog.cloudProvider-dialog md-toolbar .title{font-size:17px}md-dialog.cloudProvider-dialog md-input-container textarea{min-height:150px}md-dialog.cloudProvider-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.cloudProvider-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.cloudProvider-dialog .date-container{padding:16px 0 24px 0}md-dialog.cloudProvider-dialog .error-list{font-size:13px}md-dialog.cloudProvider-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.cloudProvider-dialog .error-list .error .message{font-weight:500}md-dialog.cloudProvider-dialog .error-list .error .md-button{margin:0}md-dialog.cloudProvider-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.cloudProvider-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.customization-dialog{max-width:720px;width:720px}md-dialog.customization-dialog md-dialog-content{display:block;position:relative}md-dialog.customization-dialog md-toolbar .title{font-size:17px}md-dialog.customization-dialog md-input-container textarea{min-height:150px}md-dialog.customization-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.customization-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.customization-dialog .date-container{padding:16px 0 24px 0}md-dialog.customization-dialog .error-list{font-size:13px}md-dialog.customization-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.customization-dialog .error-list .error .message{font-weight:500}md-dialog.customization-dialog .error-list .error .md-button{margin:0}md-dialog.customization-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.customization-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#customizations{position:relative}#customizations>.header{height:76px;min-height:76px;max-height:76px}#customizations>.header .logo .logo-icon{margin:0 16px 0 0}#customizations>.header .logo .logo-text{font-size:24px}#customizations>.header md-icon{color:#fff}#customizations>.header .search-input-wrapper{position:relative}#customizations>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#customizations>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#customizations>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#customizations>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#customizations>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#customizations>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#customizations>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#customizations>.header.selected-bar .close-button-wrapper{width:244px}#customizations>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#customizations>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#customizations>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#customizations>.content .customization-detail-form-container{padding:24px;margin-bottom:24px}#customizations>.content .customization-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#customizations>.content .customization-detail-form-container .handle{cursor:move}#customizations>.content .customization-detail-form-container md-input-container md-switch{margin:0!important}#customizations>.content .customization-detail-form-container #customization-image-uploader{position:relative}#customizations>.content .customization-detail-form-container #customization-image-uploader.dropping .drop-text{display:flex}#customizations>.content .customization-detail-form-container #customization-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#customizations>.content .customization-detail-form-container #customization-image-uploader .upload-button{margin-bottom:16px}#customizations>.content .customization-detail-form-container #customization-image-uploader .customization-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#customizations>.content .customization-detail-form-container #customization-image-uploader .customization-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#customizations>.content .customization-detail-form-container #customization-image-uploader .customization-image .media{max-height:100%}#customizations #add-customization-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.general-dialog{max-width:720px;width:720px}md-dialog.general-dialog md-dialog-content{display:block;position:relative}md-dialog.general-dialog md-toolbar .title{font-size:17px}md-dialog.general-dialog md-input-container textarea{min-height:150px}md-dialog.general-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.general-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.general-dialog .date-container{padding:16px 0 24px 0}md-dialog.general-dialog .error-list{font-size:13px}md-dialog.general-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.general-dialog .error-list .error .message{font-weight:500}md-dialog.general-dialog .error-list .error .md-button{margin:0}md-dialog.general-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.general-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#generals{position:relative}#generals>.header{height:76px;min-height:76px;max-height:76px}#generals>.header .logo .logo-icon{margin:0 16px 0 0}#generals>.header .logo .logo-text{font-size:24px}#generals>.header md-icon{color:#fff}#generals>.header .search-input-wrapper{position:relative}#generals>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#generals>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#generals>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#generals>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#generals>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#generals>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#generals>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#generals>.header.selected-bar .close-button-wrapper{width:244px}#generals>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#generals>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#generals>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#generals>.content .general-detail-form-container{padding:24px;margin-bottom:24px}#generals>.content .general-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#generals>.content .general-detail-form-container .handle{cursor:move}#generals>.content .general-detail-form-container md-input-container md-switch{margin:0!important}#generals>.content .general-detail-form-container #general-image-uploader{position:relative}#generals>.content .general-detail-form-container #general-image-uploader.dropping .drop-text{display:flex}#generals>.content .general-detail-form-container #general-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#generals>.content .general-detail-form-container #general-image-uploader .upload-button{margin-bottom:16px}#generals>.content .general-detail-form-container #general-image-uploader .general-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#generals>.content .general-detail-form-container #general-image-uploader .general-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#generals>.content .general-detail-form-container #general-image-uploader .general-image .media{max-height:100%}#generals #add-general-button{position:fixed;bottom:8px;right:8px;padding:0}#license{position:relative}#license .blink{animation:blinker 2s linear infinite}#license>.header{height:76px;min-height:76px;max-height:76px}#license>.header .logo .logo-icon{margin:0 16px 0 0}#license>.header .logo .logo-text{font-size:24px}#license>.header md-icon{color:#fff}#license>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#license>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#license>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#license>.content .badge{position:absolute;top:0;left:50%;-webkit-transform:translateX(-50%);transform:translateX(-50%);font-size:11px;font-weight:500;padding:6px 8px}md-dialog.request-dialog{max-width:720px;width:720px}md-dialog.request-dialog md-dialog-content{display:block;position:relative}md-dialog.request-dialog md-toolbar .title{font-size:17px}md-dialog.request-dialog md-input-container textarea{min-height:150px}md-dialog.request-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.request-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.request-dialog .date-container{padding:16px 0 24px 0}md-dialog.request-dialog .error-list{font-size:13px}md-dialog.request-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.request-dialog .error-list .error .message{font-weight:500}md-dialog.request-dialog .error-list .error .md-button{margin:0}md-dialog.request-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.request-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.update-dialog{max-width:720px;width:720px}md-dialog.update-dialog md-dialog-content{display:block;position:relative}md-dialog.update-dialog md-toolbar .title{font-size:17px}md-dialog.update-dialog md-input-container textarea{min-height:60px}md-dialog.update-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.update-dialog .error-list{font-size:13px}md-dialog.update-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.update-dialog .error-list .error .message{font-weight:500}md-dialog.update-dialog .error-list .error .md-button{margin:0}md-dialog.update-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.update-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.network-dialog{max-width:720px;width:720px}md-dialog.network-dialog md-dialog-content{display:block;position:relative}md-dialog.network-dialog md-toolbar .title{font-size:17px}md-dialog.network-dialog md-input-container textarea{min-height:150px}md-dialog.network-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.network-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.network-dialog .date-container{padding:16px 0 24px 0}md-dialog.network-dialog .error-list{font-size:13px}md-dialog.network-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.network-dialog .error-list .error .message{font-weight:500}md-dialog.network-dialog .error-list .error .md-button{margin:0}md-dialog.network-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.network-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#networks{position:relative}#networks>.header{height:76px;min-height:76px;max-height:76px}#networks>.header .logo .logo-icon{margin:0 16px 0 0}#networks>.header .logo .logo-text{font-size:24px}#networks>.header md-icon{color:#fff}#networks>.header .search-input-wrapper{position:relative}#networks>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#networks>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#networks>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#networks>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#networks>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#networks>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#networks>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#networks>.header.selected-bar .close-button-wrapper{width:244px}#networks>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#networks>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#networks>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#networks #add-network-button{position:fixed;bottom:8px;right:8px;padding:0}#networks #upload-network-button{position:fixed;bottom:8px;right:8px;padding:0}#smtps{position:relative}#smtps>.header{height:76px;min-height:76px;max-height:76px}#smtps>.header .logo .logo-icon{margin:0 16px 0 0}#smtps>.header .logo .logo-text{font-size:24px}#smtps>.header md-icon{color:#fff}#smtps>.header .search-input-wrapper{position:relative}#smtps>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#smtps>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#smtps>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#smtps>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#smtps>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#smtps>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#smtps>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#smtps>.header.selected-bar .close-button-wrapper{width:244px}#smtps>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#smtps>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#smtps>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#smtps>.content .smtp-detail-form-container{padding:24px;margin-bottom:24px}#smtps>.content .smtp-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#smtps>.content .smtp-detail-form-container .handle{cursor:move}#smtps>.content .smtp-detail-form-container md-input-container md-switch{margin:0!important}#smtps>.content .smtp-detail-form-container #smtp-image-uploader{position:relative}#smtps>.content .smtp-detail-form-container #smtp-image-uploader.dropping .drop-text{display:flex}#smtps>.content .smtp-detail-form-container #smtp-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#smtps>.content .smtp-detail-form-container #smtp-image-uploader .upload-button{margin-bottom:16px}#smtps>.content .smtp-detail-form-container #smtp-image-uploader .smtp-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#smtps>.content .smtp-detail-form-container #smtp-image-uploader .smtp-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#smtps>.content .smtp-detail-form-container #smtp-image-uploader .smtp-image .media{max-height:100%}#smtps #add-smtp-button{position:fixed;bottom:8px;right:8px;padding:0}#system>.header{height:76px;min-height:76px;max-height:76px}#system>.header .logo .logo-icon{margin:0 16px 0 0}#system>.header .logo .logo-text{font-size:24px}#system>.header md-icon{color:#fff}#system .system-detail-form-container{padding:24px;margin-bottom:24px}#system .system-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#system .system-detail-form-container .handle{cursor:move}#system .system-detail-form-container md-input-container md-switch{margin:0!important}#system .system-detail-form-container #system-image-uploader{position:relative}#system .system-detail-form-container #system-image-uploader.dropping .drop-text{display:flex}#system .system-detail-form-container #system-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#system .system-detail-form-container #system-image-uploader .upload-button{margin-bottom:16px}#system .system-detail-form-container #system-image-uploader .system-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#system .system-detail-form-container #system-image-uploader .system-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#system .system-detail-form-container #system-image-uploader .system-image .media{max-height:100%}#updates{position:relative}#updates>.header{height:76px;min-height:76px;max-height:76px}#updates>.header .logo .logo-icon{margin:0 16px 0 0}#updates>.header .logo .logo-text{font-size:24px}#updates>.header md-icon{color:#fff}#updates>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#updates>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#updates>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#realtime{height:auto}#realtime>.content .blink{animation:blinker 2s linear infinite}#realtime>.content .avatar-wrapper{position:relative}#realtime>.content .avatar-wrapper .status{position:absolute;bottom:-3px;right:5px}#realtime>.content .search-input-wrapper{position:relative;margin-left:20px}#realtime>.content .search-input-wrapper label{padding:6px;cursor:pointer}#realtime>.content .search-input-wrapper md-input-container{padding-top:20px}#realtime>.content .main .labels{padding:8px 16px}#realtime>.content .main .labels .label{margin:0 0 2px 4px;padding:2px 5px;font-size:11px;white-space:nowrap;border-radius:2px}#realtime>.content .main .status{position:absolute;bottom:-3px;right:5px}#realtime>.content .main .avatar-wrapper{position:relative}#realtime>.content .main .avatar-wrapper .status{position:absolute;bottom:-3px;right:5px}#realtime>.content .custom-column{padding:0 24px!important}@keyframes blinker{50%{opacity:0}}md-dialog.smsAccount-dialog{max-width:720px;width:720px}md-dialog.smsAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.smsAccount-dialog md-toolbar .title{font-size:17px}md-dialog.smsAccount-dialog md-input-container textarea{min-height:150px}md-dialog.smsAccount-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.smsAccount-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.smsAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.smsAccount-dialog .error-list{font-size:13px}md-dialog.smsAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.smsAccount-dialog .error-list .error .message{font-weight:500}md-dialog.smsAccount-dialog .error-list .error .md-button{margin:0}md-dialog.smsAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.smsAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.smsAccount-dialog{max-width:720px;width:720px}md-dialog.smsAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.smsAccount-dialog md-toolbar .title{font-size:17px}md-dialog.smsAccount-dialog md-input-container textarea{min-height:150px}md-dialog.smsAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.smsAccount-dialog .error-list{font-size:13px}md-dialog.smsAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.smsAccount-dialog .error-list .error .message{font-weight:500}md-dialog.smsAccount-dialog .error-list .error .md-button{margin:0}md-dialog.smsAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.smsAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.smsAccount-dialog{max-width:720px;width:720px}md-dialog.smsAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.smsAccount-dialog md-toolbar .title{font-size:17px}md-dialog.smsAccount-dialog md-input-container textarea{min-height:150px}md-dialog.smsAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.smsAccount-dialog .error-list{font-size:13px}md-dialog.smsAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.smsAccount-dialog .error-list .error .message{font-weight:500}md-dialog.smsAccount-dialog .error-list .error .md-button{margin:0}md-dialog.smsAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.smsAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.smsAccount-dialog{max-width:720px;width:720px}md-dialog.smsAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.smsAccount-dialog md-toolbar .title{font-size:17px}md-dialog.smsAccount-dialog md-input-container textarea{min-height:150px}md-dialog.smsAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.smsAccount-dialog .error-list{font-size:13px}md-dialog.smsAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.smsAccount-dialog .error-list .error .message{font-weight:500}md-dialog.smsAccount-dialog .error-list .error .md-button{margin:0}md-dialog.smsAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.smsAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.smsAccount-dialog{max-width:720px;width:720px}md-dialog.smsAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.smsAccount-dialog md-toolbar .title{font-size:17px}md-dialog.smsAccount-dialog md-input-container textarea{min-height:150px}md-dialog.smsAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.smsAccount-dialog .error-list{font-size:13px}md-dialog.smsAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.smsAccount-dialog .error-list .error .message{font-weight:500}md-dialog.smsAccount-dialog .error-list .error .md-button{margin:0}md-dialog.smsAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.smsAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.smsAccount-dialog{max-width:720px;width:720px}md-dialog.smsAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.smsAccount-dialog md-toolbar .title{font-size:17px}md-dialog.smsAccount-dialog md-input-container textarea{min-height:150px}md-dialog.smsAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.smsAccount-dialog .error-list{font-size:13px}md-dialog.smsAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.smsAccount-dialog .error-list .error .message{font-weight:500}md-dialog.smsAccount-dialog .error-list .error .md-button{margin:0}md-dialog.smsAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.smsAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.smsAccount-dialog{max-width:720px;width:720px}md-dialog.smsAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.smsAccount-dialog md-toolbar .title{font-size:17px}md-dialog.smsAccount-dialog md-input-container textarea{min-height:150px}md-dialog.smsAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.smsAccount-dialog .error-list{font-size:13px}md-dialog.smsAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.smsAccount-dialog .error-list .error .message{font-weight:500}md-dialog.smsAccount-dialog .error-list .error .md-button{margin:0}md-dialog.smsAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.smsAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.smsAccount-dialog{max-width:720px;width:720px}md-dialog.smsAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.smsAccount-dialog md-toolbar .title{font-size:17px}md-dialog.smsAccount-dialog md-input-container textarea{min-height:150px}md-dialog.smsAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.smsAccount-dialog .error-list{font-size:13px}md-dialog.smsAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.smsAccount-dialog .error-list .error .message{font-weight:500}md-dialog.smsAccount-dialog .error-list .error .md-button{margin:0}md-dialog.smsAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.smsAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.smsAccount-dialog{max-width:720px;width:720px}md-dialog.smsAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.smsAccount-dialog md-toolbar .title{font-size:17px}md-dialog.smsAccount-dialog md-input-container textarea{min-height:150px}md-dialog.smsAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.smsAccount-dialog .error-list{font-size:13px}md-dialog.smsAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.smsAccount-dialog .error-list .error .message{font-weight:500}md-dialog.smsAccount-dialog .error-list .error .md-button{margin:0}md-dialog.smsAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.smsAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.smsAccount-dialog{max-width:720px;width:720px}md-dialog.smsAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.smsAccount-dialog md-toolbar .title{font-size:17px}md-dialog.smsAccount-dialog md-input-container textarea{min-height:150px}md-dialog.smsAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.smsAccount-dialog .error-list{font-size:13px}md-dialog.smsAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.smsAccount-dialog .error-list .error .message{font-weight:500}md-dialog.smsAccount-dialog .error-list .error .md-button{margin:0}md-dialog.smsAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.smsAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.smsAccount-dialog{max-width:720px;width:720px}md-dialog.smsAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.smsAccount-dialog md-toolbar .title{font-size:17px}md-dialog.smsAccount-dialog md-input-container textarea{min-height:150px}md-dialog.smsAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.smsAccount-dialog .error-list{font-size:13px}md-dialog.smsAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.smsAccount-dialog .error-list .error .message{font-weight:500}md-dialog.smsAccount-dialog .error-list .error .md-button{margin:0}md-dialog.smsAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.smsAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.smsAccount-dialog{max-width:720px;width:720px}md-dialog.smsAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.smsAccount-dialog md-toolbar .title{font-size:17px}md-dialog.smsAccount-dialog md-input-container textarea{min-height:150px}md-dialog.smsAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.smsAccount-dialog .error-list{font-size:13px}md-dialog.smsAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.smsAccount-dialog .error-list .error .message{font-weight:500}md-dialog.smsAccount-dialog .error-list .error .md-button{margin:0}md-dialog.smsAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.smsAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.smsAccount-dialog{max-width:720px;width:720px}md-dialog.smsAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.smsAccount-dialog md-toolbar .title{font-size:17px}md-dialog.smsAccount-dialog md-input-container textarea{min-height:150px}md-dialog.smsAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.smsAccount-dialog .error-list{font-size:13px}md-dialog.smsAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.smsAccount-dialog .error-list .error .message{font-weight:500}md-dialog.smsAccount-dialog .error-list .error .md-button{margin:0}md-dialog.smsAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.smsAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.smsAccount-dialog{max-width:720px;width:720px}md-dialog.smsAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.smsAccount-dialog md-toolbar .title{font-size:17px}md-dialog.smsAccount-dialog md-input-container textarea{min-height:150px}md-dialog.smsAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.smsAccount-dialog .error-list{font-size:13px}md-dialog.smsAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.smsAccount-dialog .error-list .error .message{font-weight:500}md-dialog.smsAccount-dialog .error-list .error .md-button{margin:0}md-dialog.smsAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.smsAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.smsCannedAnswer-dialog{max-width:720px;width:720px}md-dialog.smsCannedAnswer-dialog md-dialog-content{display:block;position:relative}md-dialog.smsCannedAnswer-dialog md-toolbar .title{font-size:17px}md-dialog.smsCannedAnswer-dialog md-input-container textarea{min-height:150px}md-dialog.smsCannedAnswer-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.smsCannedAnswer-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.smsCannedAnswer-dialog .date-container{padding:16px 0 24px 0}md-dialog.smsCannedAnswer-dialog .error-list{font-size:13px}md-dialog.smsCannedAnswer-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.smsCannedAnswer-dialog .error-list .error .message{font-weight:500}md-dialog.smsCannedAnswer-dialog .error-list .error .md-button{margin:0}md-dialog.smsCannedAnswer-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.smsCannedAnswer-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#sms-smsAccount .header{height:76px;min-height:76px;max-height:76px}#sms-smsAccount .header .goto-smsAccounts-button{margin-right:16px}#sms-smsAccount .header .smsAccount-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#sms-smsAccount .header .smsAccount-image img{height:100%;width:auto;max-width:none}#sms-smsAccount .header .subtitle{margin:6px 0 0 0}#sms-smsAccount .smsAccount-detail-form-container{padding:24px;margin-bottom:24px}#sms-smsAccount .smsAccount-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#sms-smsAccount .smsAccount-detail-form-container .handle{cursor:move}#sms-smsAccount .smsAccount-detail-form-container md-input-container md-switch{margin:0!important}#sms-smsAccount .smsAccount-detail-form-container #smsAccount-image-uploader{position:relative}#sms-smsAccount .smsAccount-detail-form-container #smsAccount-image-uploader.dropping .drop-text{display:flex}#sms-smsAccount .smsAccount-detail-form-container #smsAccount-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#sms-smsAccount .smsAccount-detail-form-container #smsAccount-image-uploader .upload-button{margin-bottom:16px}#sms-smsAccount .smsAccount-detail-form-container #smsAccount-image-uploader .smsAccount-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#sms-smsAccount .smsAccount-detail-form-container #smsAccount-image-uploader .smsAccount-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#sms-smsAccount .smsAccount-detail-form-container #smsAccount-image-uploader .smsAccount-image .media{max-height:100%}#sms-smsAccount md-table-container thead tr th:not(:first-child):not(.no-padding){padding:0 20px 0 0!important}#sms-smsAccount md-table-container thead th.md-checkbox-column:not(.no-padding){padding:0 24px!important}#sms-smsAccount md-table-container tbody tr td:not(:first-child):not(.no-padding):not(.actions-padding){padding:0 20px 0 0!important}#sms-smsAccount md-table-container.font-size-12 td.md-cell{font-size:12px!important}@media screen and (min-width:1921px){#sms-smsAccount .actionAppData{width:800px!important}}@media screen and (max-width:1920px){#sms-smsAccount .actionAppData{width:700px!important}}@media screen and (min-width:1751px) and (max-width:1919px){#sms-smsAccount .actionAppData{width:600px!important}}@media screen and (min-width:1601px) and (max-width:1750px){#sms-smsAccount .actionAppData{width:500px!important}}@media screen and (min-width:1537px) and (max-width:1600px){#sms-smsAccount .actionAppData{width:450px!important}}@media screen and (min-width:1281px) and (max-width:1536px){#sms-smsAccount .actionAppData{width:300px!important}}@media screen and (max-width:1280px){#sms-smsAccount .actionAppData{width:150px!important}}@media screen and (max-width:960px){#sms-smsAccount .actionAppData{width:80px!important}}#smsAccounts{position:relative}#smsAccounts>.header{height:76px;min-height:76px;max-height:76px}#smsAccounts>.header .logo .logo-icon{margin:0 16px 0 0}#smsAccounts>.header .logo .logo-text{font-size:24px}#smsAccounts>.header md-icon{color:#fff}#smsAccounts>.header .search-input-wrapper{position:relative}#smsAccounts>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#smsAccounts>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#smsAccounts>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#smsAccounts>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#smsAccounts>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#smsAccounts>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#smsAccounts>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#smsAccounts>.header.selected-bar .close-button-wrapper{width:244px}#smsAccounts>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#smsAccounts>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#smsAccounts>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#smsAccounts #add-smsAccount-button{position:fixed;bottom:8px;right:8px;padding:0}#smsAccounts #upload-smsAccount-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.smsQueue-dialog{max-width:720px;width:720px}md-dialog.smsQueue-dialog md-dialog-content{display:block;position:relative}md-dialog.smsQueue-dialog md-toolbar .title{font-size:17px}md-dialog.smsQueue-dialog md-input-container textarea{min-height:150px}md-dialog.smsQueue-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.smsQueue-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.smsQueue-dialog .date-container{padding:16px 0 24px 0}md-dialog.smsQueue-dialog .error-list{font-size:13px}md-dialog.smsQueue-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.smsQueue-dialog .error-list .error .message{font-weight:500}md-dialog.smsQueue-dialog .error-list .error .md-button{margin:0}md-dialog.smsQueue-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.smsQueue-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#sms-smsQueue .header{height:76px;min-height:76px;max-height:76px}#sms-smsQueue .header .goto-smsQueues-button{margin-right:16px}#sms-smsQueue .header .smsQueue-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#sms-smsQueue .header .smsQueue-image img{height:100%;width:auto;max-width:none}#sms-smsQueue .header .subtitle{margin:6px 0 0 0}#sms-smsQueue .smsQueue-detail-form-container{padding:24px;margin-bottom:24px}#sms-smsQueue .smsQueue-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#sms-smsQueue .smsQueue-detail-form-container .handle{cursor:move}#sms-smsQueue .smsQueue-detail-form-container md-input-container md-switch{margin:0!important}#sms-smsQueue .smsQueue-detail-form-container #smsQueue-image-uploader{position:relative}#sms-smsQueue .smsQueue-detail-form-container #smsQueue-image-uploader.dropping .drop-text{display:flex}#sms-smsQueue .smsQueue-detail-form-container #smsQueue-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#sms-smsQueue .smsQueue-detail-form-container #smsQueue-image-uploader .upload-button{margin-bottom:16px}#sms-smsQueue .smsQueue-detail-form-container #smsQueue-image-uploader .smsQueue-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#sms-smsQueue .smsQueue-detail-form-container #smsQueue-image-uploader .smsQueue-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#sms-smsQueue .smsQueue-detail-form-container #smsQueue-image-uploader .smsQueue-image .media{max-height:100%}#sms-smsQueue md-table-container thead tr th:not(:first-child):not(.no-padding){padding:0 20px 0 0!important}#sms-smsQueue md-table-container thead th.md-checkbox-column:not(.no-padding){padding:0 24px!important}#sms-smsQueue md-table-container tbody tr td:not(:first-child):not(.no-padding):not(.actions-padding){padding:0 20px 0 0!important}#sms-smsQueue md-table-container.font-size-12 td.md-cell{font-size:12px!important}#smsQueues{position:relative}#smsQueues>.header{height:76px;min-height:76px;max-height:76px}#smsQueues>.header .logo .logo-icon{margin:0 16px 0 0}#smsQueues>.header .logo .logo-text{font-size:24px}#smsQueues>.header md-icon{color:#fff}#smsQueues>.header .search-input-wrapper{position:relative}#smsQueues>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#smsQueues>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#smsQueues>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#smsQueues>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#smsQueues>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#smsQueues>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#smsQueues>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#smsQueues>.header.selected-bar .close-button-wrapper{width:244px}#smsQueues>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#smsQueues>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#smsQueues>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#smsQueues #add-smsQueue-button{position:fixed;bottom:8px;right:8px;padding:0}#smsQueues #upload-smsQueue-button{position:fixed;bottom:8px;right:8px;padding:0}#agents{position:relative}#agents>.header{height:76px;min-height:76px;max-height:76px}#agents>.header .logo .logo-icon{margin:0 16px 0 0}#agents>.header .logo .logo-text{font-size:24px}#agents>.header md-icon{color:#fff}#agents>.header .search-input-wrapper{position:relative}#agents>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#agents>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#agents>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#agents>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#agents>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#agents>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#agents>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#agents>.header.selected-bar .close-button-wrapper{width:244px}#agents>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#agents>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#agents>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#agents #add-agent-button{position:fixed;bottom:8px;right:8px;padding:0}#agents #upload-agent-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.agent-dialog{max-width:720px;width:720px}md-dialog.agent-dialog md-dialog-content{display:block;position:relative}md-dialog.agent-dialog md-toolbar .title{font-size:17px}md-dialog.agent-dialog md-input-container textarea{min-height:150px}md-dialog.agent-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.agent-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.agent-dialog .date-container{padding:16px 0 24px 0}md-dialog.agent-dialog .error-list{font-size:13px}md-dialog.agent-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.agent-dialog .error-list .error .message{font-weight:500}md-dialog.agent-dialog .error-list .error .md-button{margin:0}md-dialog.agent-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.agent-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#staff-agent .header{height:76px;min-height:76px;max-height:76px}#staff-agent .header .goto-agents-button{margin-right:16px}#staff-agent .header .agent-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#staff-agent .header .agent-image img{height:100%;width:auto;max-width:none}#staff-agent .header .subtitle{margin:6px 0 0 0}#staff-agent .agent-detail-form-container{padding:24px;margin-bottom:24px}#staff-agent .agent-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#staff-agent .agent-detail-form-container .handle{cursor:move}#staff-agent .agent-detail-form-container md-input-container md-switch{margin:0!important}#staff-agent .agent-detail-form-container #agent-image-uploader{position:relative}#staff-agent .agent-detail-form-container #agent-image-uploader.dropping .drop-text{display:flex}#staff-agent .agent-detail-form-container #agent-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#staff-agent .agent-detail-form-container #agent-image-uploader .upload-button{margin-bottom:16px}#staff-agent .agent-detail-form-container #agent-image-uploader .agent-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#staff-agent .agent-detail-form-container #agent-image-uploader .agent-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#staff-agent .agent-detail-form-container #agent-image-uploader .agent-image .media{max-height:100%}#staff-agent md-table-container thead tr th:not(:first-child):not(.no-padding){padding:0 20px 0 0!important}#staff-agent md-table-container thead th.md-checkbox-column:not(.no-padding){padding:0 24px!important}#staff-agent md-table-container tbody tr td:not(:first-child):not(.no-padding):not(.actions-padding){padding:0 20px 0 0!important}#staff-agent md-table-container.font-size-12 td.md-cell{font-size:12px!important}md-dialog.team-dialog{max-width:720px;width:720px}md-dialog.team-dialog md-dialog-content{display:block;position:relative}md-dialog.team-dialog md-toolbar .title{font-size:17px}md-dialog.team-dialog md-input-container textarea{min-height:150px}md-dialog.team-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.team-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.team-dialog .date-container{padding:16px 0 24px 0}md-dialog.team-dialog .error-list{font-size:13px}md-dialog.team-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.team-dialog .error-list .error .message{font-weight:500}md-dialog.team-dialog .error-list .error .md-button{margin:0}md-dialog.team-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.team-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#teams{position:relative}#teams>.header{height:76px;min-height:76px;max-height:76px}#teams>.header .logo .logo-icon{margin:0 16px 0 0}#teams>.header .logo .logo-text{font-size:24px}#teams>.header md-icon{color:#fff}#teams>.header .search-input-wrapper{position:relative}#teams>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#teams>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#teams>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#teams>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#teams>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#teams>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#teams>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#teams>.header.selected-bar .close-button-wrapper{width:244px}#teams>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#teams>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#teams>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#teams #add-team-button{position:fixed;bottom:8px;right:8px;padding:0}#teams #upload-team-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.telephone-dialog{max-width:720px;width:720px}md-dialog.telephone-dialog md-dialog-content{display:block;position:relative}md-dialog.telephone-dialog md-toolbar .title{font-size:17px}md-dialog.telephone-dialog md-input-container textarea{min-height:150px}md-dialog.telephone-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.telephone-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.telephone-dialog .date-container{padding:16px 0 24px 0}md-dialog.telephone-dialog .error-list{font-size:13px}md-dialog.telephone-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.telephone-dialog .error-list .error .message{font-weight:500}md-dialog.telephone-dialog .error-list .error .md-button{margin:0}md-dialog.telephone-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.telephone-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#staff-telephone .header{height:76px;min-height:76px;max-height:76px}#staff-telephone .header .goto-telephones-button{margin-right:16px}#staff-telephone .header .telephone-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#staff-telephone .header .telephone-image img{height:100%;width:auto;max-width:none}#staff-telephone .header .subtitle{margin:6px 0 0 0}#staff-telephone .telephone-detail-form-container{padding:24px;margin-bottom:24px}#staff-telephone .telephone-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#staff-telephone .telephone-detail-form-container .handle{cursor:move}#staff-telephone .telephone-detail-form-container md-input-container md-switch{margin:0!important}#staff-telephone .telephone-detail-form-container #telephone-image-uploader{position:relative}#staff-telephone .telephone-detail-form-container #telephone-image-uploader.dropping .drop-text{display:flex}#staff-telephone .telephone-detail-form-container #telephone-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#staff-telephone .telephone-detail-form-container #telephone-image-uploader .upload-button{margin-bottom:16px}#staff-telephone .telephone-detail-form-container #telephone-image-uploader .telephone-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#staff-telephone .telephone-detail-form-container #telephone-image-uploader .telephone-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#staff-telephone .telephone-detail-form-container #telephone-image-uploader .telephone-image .media{max-height:100%}#staff-telephone md-table-container thead tr th:not(:first-child):not(.no-padding){padding:0 20px 0 0!important}#staff-telephone md-table-container thead th.md-checkbox-column:not(.no-padding){padding:0 24px!important}#staff-telephone md-table-container tbody tr td:not(:first-child):not(.no-padding):not(.actions-padding){padding:0 20px 0 0!important}#staff-telephone md-table-container.font-size-12 td.md-cell{font-size:12px!important}#telephones{position:relative}#telephones>.header{height:76px;min-height:76px;max-height:76px}#telephones>.header .logo .logo-icon{margin:0 16px 0 0}#telephones>.header .logo .logo-text{font-size:24px}#telephones>.header md-icon{color:#fff}#telephones>.header .search-input-wrapper{position:relative}#telephones>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#telephones>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#telephones>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#telephones>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#telephones>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#telephones>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#telephones>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#telephones>.header.selected-bar .close-button-wrapper{width:244px}#telephones>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#telephones>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#telephones>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#telephones #add-telephone-button{position:fixed;bottom:8px;right:8px;padding:0}#telephones #upload-telephone-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.userProfile-dialog{max-width:720px;width:720px}md-dialog.userProfile-dialog md-dialog-content{display:block;position:relative}md-dialog.userProfile-dialog md-toolbar .title{font-size:17px}md-dialog.userProfile-dialog md-input-container textarea{min-height:150px}md-dialog.userProfile-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.userProfile-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.userProfile-dialog .date-container{padding:16px 0 24px 0}md-dialog.userProfile-dialog .error-list{font-size:13px}md-dialog.userProfile-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.userProfile-dialog .error-list .error .message{font-weight:500}md-dialog.userProfile-dialog .error-list .error .md-button{margin:0}md-dialog.userProfile-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.userProfile-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#staff-userProfile .header{height:76px;min-height:76px;max-height:76px}#staff-userProfile .header .goto-userProfiles-button{margin-right:16px}#staff-userProfile .header .userProfile-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#staff-userProfile .header .userProfile-image img{height:100%;width:auto;max-width:none}#staff-userProfile .header .subtitle{margin:6px 0 0 0}#staff-userProfile .userProfile-detail-form-container{padding:24px;margin-bottom:24px}#staff-userProfile .userProfile-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#staff-userProfile .userProfile-detail-form-container .handle{cursor:move}#staff-userProfile .userProfile-detail-form-container md-input-container md-switch{margin:0!important}#staff-userProfile .userProfile-detail-form-container #userProfile-image-uploader{position:relative}#staff-userProfile .userProfile-detail-form-container #userProfile-image-uploader.dropping .drop-text{display:flex}#staff-userProfile .userProfile-detail-form-container #userProfile-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#staff-userProfile .userProfile-detail-form-container #userProfile-image-uploader .upload-button{margin-bottom:16px}#staff-userProfile .userProfile-detail-form-container #userProfile-image-uploader .userProfile-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#staff-userProfile .userProfile-detail-form-container #userProfile-image-uploader .userProfile-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#staff-userProfile .userProfile-detail-form-container #userProfile-image-uploader .userProfile-image .media{max-height:100%}#staff-userProfile md-table-container thead tr th:not(:first-child):not(.no-padding){padding:0 20px 0 0!important}#staff-userProfile md-table-container thead th.md-checkbox-column:not(.no-padding){padding:0 24px!important}#staff-userProfile md-table-container tbody tr td:not(:first-child):not(.no-padding):not(.actions-padding){padding:0 20px 0 0!important}#staff-userProfile md-table-container.font-size-12 td.md-cell{font-size:12px!important}#userProfiles{position:relative}#userProfiles>.header{height:76px;min-height:76px;max-height:76px}#userProfiles>.header .logo .logo-icon{margin:0 16px 0 0}#userProfiles>.header .logo .logo-text{font-size:24px}#userProfiles>.header md-icon{color:#fff}#userProfiles>.header .search-input-wrapper{position:relative}#userProfiles>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#userProfiles>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#userProfiles>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#userProfiles>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#userProfiles>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#userProfiles>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#userProfiles>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#userProfiles>.header.selected-bar .close-button-wrapper{width:244px}#userProfiles>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#userProfiles>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#userProfiles>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#userProfiles #add-userProfile-button{position:fixed;bottom:8px;right:8px;padding:0}#userProfiles #upload-userProfile-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.user-dialog{max-width:720px;width:720px}md-dialog.user-dialog md-dialog-content{display:block;position:relative}md-dialog.user-dialog md-toolbar .title{font-size:17px}md-dialog.user-dialog md-input-container textarea{min-height:150px}md-dialog.user-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.user-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.user-dialog .date-container{padding:16px 0 24px 0}md-dialog.user-dialog .error-list{font-size:13px}md-dialog.user-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.user-dialog .error-list .error .message{font-weight:500}md-dialog.user-dialog .error-list .error .md-button{margin:0}md-dialog.user-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.user-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#staff-user .header{height:76px;min-height:76px;max-height:76px}#staff-user .header .goto-users-button{margin-right:16px}#staff-user .header .user-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#staff-user .header .user-image img{height:100%;width:auto;max-width:none}#staff-user .header .subtitle{margin:6px 0 0 0}#staff-user .user-detail-form-container{padding:24px;margin-bottom:24px}#staff-user .user-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#staff-user .user-detail-form-container .handle{cursor:move}#staff-user .user-detail-form-container md-input-container md-switch{margin:0!important}#staff-user .user-detail-form-container #user-image-uploader{position:relative}#staff-user .user-detail-form-container #user-image-uploader.dropping .drop-text{display:flex}#staff-user .user-detail-form-container #user-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#staff-user .user-detail-form-container #user-image-uploader .upload-button{margin-bottom:16px}#staff-user .user-detail-form-container #user-image-uploader .user-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#staff-user .user-detail-form-container #user-image-uploader .user-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#staff-user .user-detail-form-container #user-image-uploader .user-image .media{max-height:100%}#staff-user md-table-container thead tr th:not(:first-child):not(.no-padding){padding:0 20px 0 0!important}#staff-user md-table-container thead th.md-checkbox-column:not(.no-padding){padding:0 24px!important}#staff-user md-table-container tbody tr td:not(:first-child):not(.no-padding):not(.actions-padding){padding:0 20px 0 0!important}#staff-user md-table-container.font-size-12 td.md-cell{font-size:12px!important}#users{position:relative}#users>.header{height:76px;min-height:76px;max-height:76px}#users>.header .logo .logo-icon{margin:0 16px 0 0}#users>.header .logo .logo-text{font-size:24px}#users>.header md-icon{color:#fff}#users>.header .search-input-wrapper{position:relative}#users>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#users>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#users>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#users>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#users>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#users>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#users>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#users>.header.selected-bar .close-button-wrapper{width:244px}#users>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#users>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#users>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#users #add-user-button{position:fixed;bottom:8px;right:8px;padding:0}#users #upload-user-button{position:fixed;bottom:8px;right:8px;padding:0}#cannedAnswers{position:relative}#cannedAnswers>.header{height:76px;min-height:76px;max-height:76px}#cannedAnswers>.header .logo .logo-icon{margin:0 16px 0 0}#cannedAnswers>.header .logo .logo-text{font-size:24px}#cannedAnswers>.header md-icon{color:#fff}#cannedAnswers>.header .search-input-wrapper{position:relative}#cannedAnswers>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#cannedAnswers>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#cannedAnswers>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#cannedAnswers>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#cannedAnswers>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#cannedAnswers>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#cannedAnswers>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#cannedAnswers>.header.selected-bar .close-button-wrapper{width:244px}#cannedAnswers>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#cannedAnswers>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#cannedAnswers>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#cannedAnswers #add-cannedAnswer-button{position:fixed;bottom:8px;right:8px;padding:0}#cannedAnswers #upload-cannedAnswer-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.cannedAnswer-dialog{max-width:720px;width:720px}md-dialog.cannedAnswer-dialog md-dialog-content{display:block;position:relative}md-dialog.cannedAnswer-dialog md-toolbar .title{font-size:17px}md-dialog.cannedAnswer-dialog md-input-container textarea{min-height:150px}md-dialog.cannedAnswer-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.cannedAnswer-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.cannedAnswer-dialog .date-container{padding:16px 0 24px 0}md-dialog.cannedAnswer-dialog .error-list{font-size:13px}md-dialog.cannedAnswer-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.cannedAnswer-dialog .error-list .error .message{font-weight:500}md-dialog.cannedAnswer-dialog .error-list .error .md-button{margin:0}md-dialog.cannedAnswer-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.cannedAnswer-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#contact_item_types{position:relative}#contact_item_types>.header{height:76px;min-height:76px;max-height:76px}#contact_item_types>.header .logo .logo-icon{margin:0 16px 0 0}#contact_item_types>.header .logo .logo-text{font-size:24px}#contact_item_types>.header md-icon{color:#fff}#contact_item_types>.header .search-input-wrapper{position:relative}#contact_item_types>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#contact_item_types>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#contact_item_types>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#contact_item_types>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#contact_item_types>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#contact_item_types>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#contact_item_types>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#contact_item_types>.header.selected-bar .close-button-wrapper{width:244px}#contact_item_types>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#contact_item_types>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#contact_item_types>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#contact_item_types #add-contactItemType-button{position:fixed;bottom:8px;right:8px;padding:0}#contact_item_types #upload-contactItemType-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.contactItemType-dialog{max-width:720px;width:720px}md-dialog.contactItemType-dialog md-dialog-content{display:block;position:relative}md-dialog.contactItemType-dialog md-toolbar .title{font-size:17px}md-dialog.contactItemType-dialog md-input-container textarea{min-height:150px}md-dialog.contactItemType-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.contactItemType-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.contactItemType-dialog .date-container{padding:16px 0 24px 0}md-dialog.contactItemType-dialog .error-list{font-size:13px}md-dialog.contactItemType-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.contactItemType-dialog .error-list .error .message{font-weight:500}md-dialog.contactItemType-dialog .error-list .error .md-button{margin:0}md-dialog.contactItemType-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.contactItemType-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.customDashboard-dialog{max-width:720px;width:720px}md-dialog.customDashboard-dialog md-dialog-content{display:block;position:relative}md-dialog.customDashboard-dialog md-toolbar .title{font-size:17px}md-dialog.customDashboard-dialog md-input-container textarea{min-height:150px}md-dialog.customDashboard-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.customDashboard-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.customDashboard-dialog .date-container{padding:16px 0 24px 0}md-dialog.customDashboard-dialog .error-list{font-size:13px}md-dialog.customDashboard-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.customDashboard-dialog .error-list .error .message{font-weight:500}md-dialog.customDashboard-dialog .error-list .error .md-button{margin:0}md-dialog.customDashboard-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.customDashboard-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#customDashboards{position:relative}#customDashboards>.header{height:76px;min-height:76px;max-height:76px}#customDashboards>.header .logo .logo-icon{margin:0 16px 0 0}#customDashboards>.header .logo .logo-text{font-size:24px}#customDashboards>.header md-icon{color:#fff}#customDashboards>.header .search-input-wrapper{position:relative}#customDashboards>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#customDashboards>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#customDashboards>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#customDashboards>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#customDashboards>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#customDashboards>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#customDashboards>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#customDashboards>.header.selected-bar .close-button-wrapper{width:244px}#customDashboards>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#customDashboards>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#customDashboards>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#customDashboards #add-customDashboard-button{position:fixed;bottom:8px;right:8px;padding:0}#customDashboards #upload-customDashboard-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.dashboarditem-dialog{max-width:720px;width:720px}md-dialog.dashboarditem-dialog md-dialog-content{display:block;position:relative}md-dialog.dashboarditem-dialog md-toolbar .title{font-size:17px}md-dialog.dashboarditem-dialog md-input-container textarea{min-height:150px}md-dialog.dashboarditem-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.dashboarditem-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.dashboarditem-dialog .date-container{padding:16px 0 24px 0}md-dialog.dashboarditem-dialog .error-list{font-size:13px}md-dialog.dashboarditem-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.dashboarditem-dialog .error-list .error .message{font-weight:500}md-dialog.dashboarditem-dialog .error-list .error .md-button{margin:0}md-dialog.dashboarditem-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.dashboarditem-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#tools-customDashboard .header{height:76px;min-height:76px;max-height:76px}#tools-customDashboard .header .goto-customDashboards-button{margin-right:16px}#tools-customDashboard .header .customDashboard-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#tools-customDashboard .header .customDashboard-image img{height:100%;width:auto;max-width:none}#tools-customDashboard .header .subtitle{margin:6px 0 0 0}#tools-customDashboard .customDashboard-detail-form-container{padding:24px;margin-bottom:24px}#tools-customDashboard .customDashboard-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#tools-customDashboard .customDashboard-detail-form-container .handle{cursor:move}#tools-customDashboard .customDashboard-detail-form-container md-input-container md-switch{margin:0!important}#tools-customDashboard .customDashboard-detail-form-container #customDashboard-image-uploader{position:relative}#tools-customDashboard .customDashboard-detail-form-container #customDashboard-image-uploader.dropping .drop-text{display:flex}#tools-customDashboard .customDashboard-detail-form-container #customDashboard-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#tools-customDashboard .customDashboard-detail-form-container #customDashboard-image-uploader .upload-button{margin-bottom:16px}#tools-customDashboard .customDashboard-detail-form-container #customDashboard-image-uploader .customDashboard-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#tools-customDashboard .customDashboard-detail-form-container #customDashboard-image-uploader .customDashboard-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#tools-customDashboard .customDashboard-detail-form-container #customDashboard-image-uploader .customDashboard-image .media{max-height:100%}#tools-customDashboard md-table-container thead tr th:not(:first-child):not(.no-padding){padding:0 20px 0 0!important}#tools-customDashboard md-table-container thead th.md-checkbox-column:not(.no-padding){padding:0 24px!important}#tools-customDashboard md-table-container tbody tr td:not(:first-child):not(.no-padding):not(.actions-padding){padding:0 20px 0 0!important}#tools-customDashboard md-table-container.font-size-12 td.md-cell{font-size:12px!important}md-dialog.disposition-dialog{max-width:720px;width:720px}md-dialog.disposition-dialog md-dialog-content{display:block;position:relative}md-dialog.disposition-dialog md-toolbar .title{font-size:17px}md-dialog.disposition-dialog md-input-container textarea{min-height:150px}md-dialog.disposition-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.disposition-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.disposition-dialog .date-container{padding:16px 0 24px 0}md-dialog.disposition-dialog .error-list{font-size:13px}md-dialog.disposition-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.disposition-dialog .error-list .error .message{font-weight:500}md-dialog.disposition-dialog .error-list .error .md-button{margin:0}md-dialog.disposition-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.disposition-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#dispositions{position:relative}#dispositions>.header{height:76px;min-height:76px;max-height:76px}#dispositions>.header .logo .logo-icon{margin:0 16px 0 0}#dispositions>.header .logo .logo-text{font-size:24px}#dispositions>.header md-icon{color:#fff}#dispositions>.header .search-input-wrapper{position:relative}#dispositions>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#dispositions>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#dispositions>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#dispositions>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#dispositions>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#dispositions>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#dispositions>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#dispositions>.header.selected-bar .close-button-wrapper{width:244px}#dispositions>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#dispositions>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#dispositions>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#dispositions #add-disposition-button{position:fixed;bottom:8px;right:8px;padding:0}#dispositions #upload-disposition-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.interval-dialog{max-width:720px;width:720px}md-dialog.interval-dialog md-dialog-content{display:block;position:relative}md-dialog.interval-dialog md-toolbar .title{font-size:17px}md-dialog.interval-dialog md-input-container textarea{min-height:150px}md-dialog.interval-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.interval-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.interval-dialog .date-container{padding:16px 0 24px 0}md-dialog.interval-dialog .error-list{font-size:13px}md-dialog.interval-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.interval-dialog .error-list .error .message{font-weight:500}md-dialog.interval-dialog .error-list .error .md-button{margin:0}md-dialog.interval-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.interval-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.interval-dialog{max-width:720px;width:720px}md-dialog.interval-dialog md-dialog-content{display:block;position:relative}md-dialog.interval-dialog md-toolbar .title{font-size:17px}md-dialog.interval-dialog md-input-container textarea{min-height:150px}md-dialog.interval-dialog .date-container{padding:16px 0 24px 0}md-dialog.interval-dialog .error-list{font-size:13px}md-dialog.interval-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.interval-dialog .error-list .error .message{font-weight:500}md-dialog.interval-dialog .error-list .error .md-button{margin:0}md-dialog.interval-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.interval-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.interval-dialog{max-width:720px;width:720px}md-dialog.interval-dialog md-dialog-content{display:block;position:relative}md-dialog.interval-dialog md-toolbar .title{font-size:17px}md-dialog.interval-dialog md-input-container textarea{min-height:150px}md-dialog.interval-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.interval-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.interval-dialog .date-container{padding:16px 0 24px 0}md-dialog.interval-dialog .error-list{font-size:13px}md-dialog.interval-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.interval-dialog .error-list .error .message{font-weight:500}md-dialog.interval-dialog .error-list .error .md-button{margin:0}md-dialog.interval-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.interval-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#tools-interval .header{height:76px;min-height:76px;max-height:76px}#tools-interval .header .goto-intervals-button{margin-right:16px}#tools-interval .header .interval-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#tools-interval .header .interval-image img{height:100%;width:auto;max-width:none}#tools-interval .header .subtitle{margin:6px 0 0 0}#tools-interval .interval-detail-form-container{padding:24px;margin-bottom:24px}#tools-interval .interval-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#tools-interval .interval-detail-form-container .handle{cursor:move}#tools-interval .interval-detail-form-container md-input-container md-switch{margin:0!important}#tools-interval .interval-detail-form-container #interval-image-uploader{position:relative}#tools-interval .interval-detail-form-container #interval-image-uploader.dropping .drop-text{display:flex}#tools-interval .interval-detail-form-container #interval-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#tools-interval .interval-detail-form-container #interval-image-uploader .upload-button{margin-bottom:16px}#tools-interval .interval-detail-form-container #interval-image-uploader .interval-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#tools-interval .interval-detail-form-container #interval-image-uploader .interval-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#tools-interval .interval-detail-form-container #interval-image-uploader .interval-image .media{max-height:100%}#tools-interval md-table-container thead tr th:not(:first-child):not(.no-padding){padding:0 20px 0 0!important}#tools-interval md-table-container thead th.md-checkbox-column:not(.no-padding){padding:0 24px!important}#tools-interval md-table-container tbody tr td:not(:first-child):not(.no-padding):not(.actions-padding){padding:0 20px 0 0!important}#tools-interval md-table-container.font-size-12 td.md-cell{font-size:12px!important}#intervals{position:relative}#intervals>.header{height:76px;min-height:76px;max-height:76px}#intervals>.header .logo .logo-icon{margin:0 16px 0 0}#intervals>.header .logo .logo-text{font-size:24px}#intervals>.header md-icon{color:#fff}#intervals>.header .search-input-wrapper{position:relative}#intervals>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#intervals>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#intervals>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#intervals>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#intervals>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#intervals>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#intervals>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#intervals>.header.selected-bar .close-button-wrapper{width:244px}#intervals>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#intervals>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#intervals>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#intervals #add-interval-button{position:fixed;bottom:8px;right:8px;padding:0}#intervals #upload-interval-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.pause-dialog{max-width:720px;width:720px}md-dialog.pause-dialog md-dialog-content{display:block;position:relative}md-dialog.pause-dialog md-toolbar .title{font-size:17px}md-dialog.pause-dialog md-input-container textarea{min-height:150px}md-dialog.pause-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.pause-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.pause-dialog .date-container{padding:16px 0 24px 0}md-dialog.pause-dialog .error-list{font-size:13px}md-dialog.pause-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.pause-dialog .error-list .error .message{font-weight:500}md-dialog.pause-dialog .error-list .error .md-button{margin:0}md-dialog.pause-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.pause-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#pauses{position:relative}#pauses>.header{height:76px;min-height:76px;max-height:76px}#pauses>.header .logo .logo-icon{margin:0 16px 0 0}#pauses>.header .logo .logo-text{font-size:24px}#pauses>.header md-icon{color:#fff}#pauses>.header .search-input-wrapper{position:relative}#pauses>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#pauses>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#pauses>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#pauses>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#pauses>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#pauses>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#pauses>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#pauses>.header.selected-bar .close-button-wrapper{width:244px}#pauses>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#pauses>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#pauses>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#pauses #add-pause-button{position:fixed;bottom:8px;right:8px;padding:0}#pauses #upload-pause-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.schedule-dialog{max-width:720px;width:720px}md-dialog.schedule-dialog md-dialog-content{display:block;position:relative}md-dialog.schedule-dialog md-toolbar .title{font-size:17px}md-dialog.schedule-dialog md-input-container textarea{min-height:150px}md-dialog.schedule-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.schedule-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.schedule-dialog .date-container{padding:16px 0 24px 0}md-dialog.schedule-dialog .error-list{font-size:13px}md-dialog.schedule-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.schedule-dialog .error-list .error .message{font-weight:500}md-dialog.schedule-dialog .error-list .error .md-button{margin:0}md-dialog.schedule-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.schedule-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#schedules{position:relative}#schedules>.header{height:76px;min-height:76px;max-height:76px}#schedules>.header .logo .logo-icon{margin:0 16px 0 0}#schedules>.header .logo .logo-text{font-size:24px}#schedules>.header md-icon{color:#fff}#schedules>.header .search-input-wrapper{position:relative}#schedules>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#schedules>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#schedules>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#schedules>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#schedules>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#schedules>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#schedules>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#schedules>.header.selected-bar .close-button-wrapper{width:244px}#schedules>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#schedules>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#schedules>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#schedules #add-schedule-button{position:fixed;bottom:8px;right:8px;padding:0}#schedules #upload-schedule-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.sound-dialog{max-width:720px;width:720px}md-dialog.sound-dialog md-dialog-content{display:block;position:relative}md-dialog.sound-dialog md-toolbar .title{font-size:17px}md-dialog.sound-dialog md-input-container textarea{min-height:150px}md-dialog.sound-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.sound-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.sound-dialog .date-container{padding:16px 0 24px 0}md-dialog.sound-dialog .error-list{font-size:13px}md-dialog.sound-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.sound-dialog .error-list .error .message{font-weight:500}md-dialog.sound-dialog .error-list .error .md-button{margin:0}md-dialog.sound-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.sound-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#sounds{position:relative}#sounds>.header{height:76px;min-height:76px;max-height:76px}#sounds>.header .logo .logo-icon{margin:0 16px 0 0}#sounds>.header .logo .logo-text{font-size:24px}#sounds>.header md-icon{color:#fff}#sounds>.header .search-input-wrapper{position:relative}#sounds>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#sounds>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#sounds>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#sounds>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#sounds>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#sounds>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#sounds>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#sounds>.header.selected-bar .close-button-wrapper{width:244px}#sounds>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#sounds>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#sounds>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#sounds #add-sound-button{position:fixed;bottom:8px;right:8px;padding:0}#sounds #upload-sound-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.upload-dialog{max-width:720px;width:720px}md-dialog.upload-dialog md-dialog-content{display:block;position:relative}md-dialog.upload-dialog md-toolbar .title{font-size:17px}md-dialog.upload-dialog md-input-container textarea{min-height:150px}md-dialog.upload-dialog md-progress-linear{padding-top:16px!important}md-dialog.upload-dialog .date-container{padding:16px 0 24px 0}md-dialog.upload-dialog .error-list{font-size:13px}md-dialog.upload-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.upload-dialog .error-list .error .message{font-weight:500}md-dialog.upload-dialog .error-list .error .md-button{margin:0}md-dialog.upload-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.upload-dialog .sound-image{overflow:hidden;max-width:148px;margin-right:16px;border:3px solid rgba(0,0,0,.12);padding:10px}md-dialog.upload-dialog .sound-image img{width:auto;max-width:none}md-dialog.upload-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.tag-dialog{max-width:720px;width:720px}md-dialog.tag-dialog md-dialog-content{display:block;position:relative}md-dialog.tag-dialog md-toolbar .title{font-size:17px}md-dialog.tag-dialog md-input-container textarea{min-height:150px}md-dialog.tag-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.tag-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.tag-dialog .date-container{padding:16px 0 24px 0}md-dialog.tag-dialog .error-list{font-size:13px}md-dialog.tag-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.tag-dialog .error-list .error .message{font-weight:500}md-dialog.tag-dialog .error-list .error .md-button{margin:0}md-dialog.tag-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.tag-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#tags{position:relative}#tags>.header{height:76px;min-height:76px;max-height:76px}#tags>.header .logo .logo-icon{margin:0 16px 0 0}#tags>.header .logo .logo-text{font-size:24px}#tags>.header md-icon{color:#fff}#tags>.header .search-input-wrapper{position:relative}#tags>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#tags>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#tags>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#tags>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#tags>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#tags>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#tags>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#tags>.header.selected-bar .close-button-wrapper{width:244px}#tags>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#tags>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#tags>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#tags #add-tag-button{position:fixed;bottom:8px;right:8px;padding:0}#tags #upload-tag-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.template-dialog{max-width:720px;width:720px}md-dialog.template-dialog md-dialog-content{display:block;position:relative}md-dialog.template-dialog md-toolbar .title{font-size:17px}md-dialog.template-dialog md-input-container textarea{min-height:150px}md-dialog.template-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.template-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.template-dialog .date-container{padding:16px 0 24px 0}md-dialog.template-dialog .error-list{font-size:13px}md-dialog.template-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.template-dialog .error-list .error .message{font-weight:500}md-dialog.template-dialog .error-list .error .md-button{margin:0}md-dialog.template-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.template-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#templates{position:relative}#templates>.header{height:76px;min-height:76px;max-height:76px}#templates>.header .logo .logo-icon{margin:0 16px 0 0}#templates>.header .logo .logo-text{font-size:24px}#templates>.header md-icon{color:#fff}#templates>.header .search-input-wrapper{position:relative}#templates>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#templates>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#templates>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#templates>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#templates>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#templates>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#templates>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#templates>.header.selected-bar .close-button-wrapper{width:244px}#templates>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#templates>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#templates>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#templates #add-template-button{position:fixed;bottom:8px;right:8px;padding:0}#templates #upload-template-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.trigger-dialog{max-width:720px;width:720px}md-dialog.trigger-dialog md-dialog-content{display:block;position:relative}md-dialog.trigger-dialog md-toolbar .title{font-size:17px}md-dialog.trigger-dialog md-input-container textarea{min-height:150px}md-dialog.trigger-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.trigger-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.trigger-dialog .date-container{padding:16px 0 24px 0}md-dialog.trigger-dialog .error-list{font-size:13px}md-dialog.trigger-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.trigger-dialog .error-list .error .message{font-weight:500}md-dialog.trigger-dialog .error-list .error .md-button{margin:0}md-dialog.trigger-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.trigger-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.action-dialog{max-width:720px;width:720px}md-dialog.action-dialog md-dialog-content{display:block;position:relative}md-dialog.action-dialog md-toolbar .title{font-size:17px}md-dialog.action-dialog md-input-container textarea{min-height:150px}md-dialog.action-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.action-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.action-dialog .date-container{padding:16px 0 24px 0}md-dialog.action-dialog .error-list{font-size:13px}md-dialog.action-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.action-dialog .error-list .error .message{font-weight:500}md-dialog.action-dialog .error-list .error .md-button{margin:0}md-dialog.action-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.action-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.allCondition-dialog{max-width:720px;width:720px}md-dialog.allCondition-dialog md-dialog-content{display:block;position:relative}md-dialog.allCondition-dialog md-toolbar .title{font-size:17px}md-dialog.allCondition-dialog md-input-container textarea{min-height:150px}md-dialog.allCondition-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.allCondition-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.allCondition-dialog .date-container{padding:16px 0 24px 0}md-dialog.allCondition-dialog .error-list{font-size:13px}md-dialog.allCondition-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.allCondition-dialog .error-list .error .message{font-weight:500}md-dialog.allCondition-dialog .error-list .error .md-button{margin:0}md-dialog.allCondition-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.allCondition-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.anyCondition-dialog{max-width:720px;width:720px}md-dialog.anyCondition-dialog md-dialog-content{display:block;position:relative}md-dialog.anyCondition-dialog md-toolbar .title{font-size:17px}md-dialog.anyCondition-dialog md-input-container textarea{min-height:150px}md-dialog.anyCondition-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.anyCondition-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.anyCondition-dialog .date-container{padding:16px 0 24px 0}md-dialog.anyCondition-dialog .error-list{font-size:13px}md-dialog.anyCondition-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.anyCondition-dialog .error-list .error .message{font-weight:500}md-dialog.anyCondition-dialog .error-list .error .md-button{margin:0}md-dialog.anyCondition-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.anyCondition-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#tools-trigger .header{height:76px;min-height:76px;max-height:76px}#tools-trigger .header .goto-triggers-button{margin-right:16px}#tools-trigger .header .trigger-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#tools-trigger .header .trigger-image img{height:100%;width:auto;max-width:none}#tools-trigger .header .subtitle{margin:6px 0 0 0}#tools-trigger .trigger-detail-form-container{padding:24px;margin-bottom:24px}#tools-trigger .trigger-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#tools-trigger .trigger-detail-form-container .handle{cursor:move}#tools-trigger .trigger-detail-form-container md-input-container md-switch{margin:0!important}#tools-trigger .trigger-detail-form-container #trigger-image-uploader{position:relative}#tools-trigger .trigger-detail-form-container #trigger-image-uploader.dropping .drop-text{display:flex}#tools-trigger .trigger-detail-form-container #trigger-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#tools-trigger .trigger-detail-form-container #trigger-image-uploader .upload-button{margin-bottom:16px}#tools-trigger .trigger-detail-form-container #trigger-image-uploader .trigger-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#tools-trigger .trigger-detail-form-container #trigger-image-uploader .trigger-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#tools-trigger .trigger-detail-form-container #trigger-image-uploader .trigger-image .media{max-height:100%}#tools-trigger md-table-container thead tr th:not(:first-child):not(.no-padding){padding:0 20px 0 0!important}#tools-trigger md-table-container thead th.md-checkbox-column:not(.no-padding){padding:0 24px!important}#tools-trigger md-table-container tbody tr td:not(:first-child):not(.no-padding):not(.actions-padding){padding:0 20px 0 0!important}#tools-trigger md-table-container.font-size-12 td.md-cell{font-size:12px!important}#triggers{position:relative}#triggers>.header{height:76px;min-height:76px;max-height:76px}#triggers>.header .logo .logo-icon{margin:0 16px 0 0}#triggers>.header .logo .logo-text{font-size:24px}#triggers>.header md-icon{color:#fff}#triggers>.header .search-input-wrapper{position:relative}#triggers>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#triggers>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#triggers>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#triggers>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#triggers>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#triggers>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#triggers>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#triggers>.header.selected-bar .close-button-wrapper{width:244px}#triggers>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#triggers>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#triggers>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#triggers #add-trigger-button{position:fixed;bottom:8px;right:8px;padding:0}#triggers #upload-trigger-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.trunk-dialog{max-width:720px;width:720px}md-dialog.trunk-dialog md-dialog-content{display:block;position:relative}md-dialog.trunk-dialog md-toolbar .title{font-size:17px}md-dialog.trunk-dialog md-input-container textarea{min-height:150px}md-dialog.trunk-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.trunk-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.trunk-dialog .date-container{padding:16px 0 24px 0}md-dialog.trunk-dialog .error-list{font-size:13px}md-dialog.trunk-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.trunk-dialog .error-list .error .message{font-weight:500}md-dialog.trunk-dialog .error-list .error .md-button{margin:0}md-dialog.trunk-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.trunk-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#tools-trunk .header{height:76px;min-height:76px;max-height:76px}#tools-trunk .header .goto-trunks-button{margin-right:16px}#tools-trunk .header .trunk-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#tools-trunk .header .trunk-image img{height:100%;width:auto;max-width:none}#tools-trunk .header .subtitle{margin:6px 0 0 0}#tools-trunk .trunk-detail-form-container{padding:24px;margin-bottom:24px}#tools-trunk .trunk-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#tools-trunk .trunk-detail-form-container .handle{cursor:move}#tools-trunk .trunk-detail-form-container md-input-container md-switch{margin:0!important}#tools-trunk .trunk-detail-form-container #trunk-image-uploader{position:relative}#tools-trunk .trunk-detail-form-container #trunk-image-uploader.dropping .drop-text{display:flex}#tools-trunk .trunk-detail-form-container #trunk-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#tools-trunk .trunk-detail-form-container #trunk-image-uploader .upload-button{margin-bottom:16px}#tools-trunk .trunk-detail-form-container #trunk-image-uploader .trunk-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#tools-trunk .trunk-detail-form-container #trunk-image-uploader .trunk-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#tools-trunk .trunk-detail-form-container #trunk-image-uploader .trunk-image .media{max-height:100%}#tools-trunk md-table-container thead tr th:not(:first-child):not(.no-padding){padding:0 20px 0 0!important}#tools-trunk md-table-container thead th.md-checkbox-column:not(.no-padding){padding:0 24px!important}#tools-trunk md-table-container tbody tr td:not(:first-child):not(.no-padding):not(.actions-padding){padding:0 20px 0 0!important}#tools-trunk md-table-container.font-size-12 td.md-cell{font-size:12px!important}#trunks{position:relative}#trunks>.header{height:76px;min-height:76px;max-height:76px}#trunks>.header .logo .logo-icon{margin:0 16px 0 0}#trunks>.header .logo .logo-text{font-size:24px}#trunks>.header md-icon{color:#fff}#trunks>.header .search-input-wrapper{position:relative}#trunks>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#trunks>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#trunks>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#trunks>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#trunks>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#trunks>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#trunks>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#trunks>.header.selected-bar .close-button-wrapper{width:244px}#trunks>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#trunks>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#trunks>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#trunks #add-trunk-button{position:fixed;bottom:8px;right:8px;padding:0}#trunks #upload-trunk-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.variable-dialog{max-width:720px;width:720px}md-dialog.variable-dialog md-dialog-content{display:block;position:relative}md-dialog.variable-dialog md-toolbar .title{font-size:17px}md-dialog.variable-dialog md-input-container textarea{min-height:150px}md-dialog.variable-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.variable-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.variable-dialog .date-container{padding:16px 0 24px 0}md-dialog.variable-dialog .error-list{font-size:13px}md-dialog.variable-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.variable-dialog .error-list .error .message{font-weight:500}md-dialog.variable-dialog .error-list .error .md-button{margin:0}md-dialog.variable-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.variable-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#variables{position:relative}#variables>.header{height:76px;min-height:76px;max-height:76px}#variables>.header .logo .logo-icon{margin:0 16px 0 0}#variables>.header .logo .logo-text{font-size:24px}#variables>.header md-icon{color:#fff}#variables>.header .search-input-wrapper{position:relative}#variables>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#variables>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#variables>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#variables>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#variables>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#variables>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#variables>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#variables>.header.selected-bar .close-button-wrapper{width:244px}#variables>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#variables>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#variables>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#variables #add-variable-button{position:fixed;bottom:8px;right:8px;padding:0}#variables #upload-variable-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.screenRecording-dialog{max-width:720px;width:720px}md-dialog.screenRecording-dialog md-dialog-content{display:block;position:relative}md-dialog.screenRecording-dialog md-toolbar .title{font-size:17px}md-dialog.screenRecording-dialog md-input-container textarea{min-height:150px}md-dialog.screenRecording-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.screenRecording-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.screenRecording-dialog .date-container{padding:16px 0 24px 0}md-dialog.screenRecording-dialog .error-list{font-size:13px}md-dialog.screenRecording-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.screenRecording-dialog .error-list .error .message{font-weight:500}md-dialog.screenRecording-dialog .error-list .error .md-button{margin:0}md-dialog.screenRecording-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.screenRecording-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#screenRecordings{position:relative}#screenRecordings>.header{height:76px;min-height:76px;max-height:76px}#screenRecordings>.header .logo .logo-icon{margin:0 16px 0 0}#screenRecordings>.header .logo .logo-text{font-size:24px}#screenRecordings>.header md-icon{color:#fff}#screenRecordings>.header .search-input-wrapper{position:relative}#screenRecordings>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#screenRecordings>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#screenRecordings>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#screenRecordings>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#screenRecordings>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#screenRecordings>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#screenRecordings>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#screenRecordings>.header.selected-bar .close-button-wrapper{width:244px}#screenRecordings>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#screenRecordings>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#screenRecordings>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#screenRecordings #add-screenRecording-button{position:fixed;bottom:8px;right:8px;padding:0}#screenRecordings #upload-screenRecording-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.voice-routing-dialog{max-width:720px;width:720px}md-dialog.voice-routing-dialog md-dialog-content{display:block;position:relative}md-dialog.voice-routing-dialog md-toolbar .title{font-size:17px}md-dialog.voice-routing-dialog md-input-container textarea{min-height:150px}md-dialog.voice-routing-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.voice-routing-dialog .date-container{padding:16px 0 24px 0}md-dialog.voice-routing-dialog .error-list{font-size:13px}md-dialog.voice-routing-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.voice-routing-dialog .error-list .error .message{font-weight:500}md-dialog.voice-routing-dialog .error-list .error .md-button{margin:0}md-dialog.voice-routing-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.voice-routing-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.interval-dialog{max-width:720px;width:720px}md-dialog.interval-dialog md-dialog-content{display:block;position:relative}md-dialog.interval-dialog md-toolbar .title{font-size:17px}md-dialog.interval-dialog md-input-container textarea{min-height:150px}md-dialog.interval-dialog .date-container{padding:16px 0 24px 0}md-dialog.interval-dialog .error-list{font-size:13px}md-dialog.interval-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.interval-dialog .error-list .error .message{font-weight:500}md-dialog.interval-dialog .error-list .error .md-button{margin:0}md-dialog.interval-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.interval-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#chanSpies{position:relative}#chanSpies>.header{height:76px;min-height:76px;max-height:76px}#chanSpies>.header .logo .logo-icon{margin:0 16px 0 0}#chanSpies>.header .logo .logo-text{font-size:24px}#chanSpies>.header md-icon{color:#fff}#chanSpies>.header .search-input-wrapper{position:relative}#chanSpies>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#chanSpies>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#chanSpies>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#chanSpies>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#chanSpies>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#chanSpies>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#chanSpies>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#chanSpies>.header.selected-bar .close-button-wrapper{width:244px}#chanSpies>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#chanSpies>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#chanSpies>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#chanSpies #add-chanSpy-button{position:fixed;bottom:8px;right:8px;padding:0}#chanSpies #upload-chanSpy-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.chanSpy-dialog{max-width:720px;width:720px}md-dialog.chanSpy-dialog md-dialog-content{display:block;position:relative}md-dialog.chanSpy-dialog md-toolbar .title{font-size:17px}md-dialog.chanSpy-dialog md-input-container textarea{min-height:150px}md-dialog.chanSpy-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.chanSpy-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.chanSpy-dialog .date-container{padding:16px 0 24px 0}md-dialog.chanSpy-dialog .error-list{font-size:13px}md-dialog.chanSpy-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.chanSpy-dialog .error-list .error .message{font-weight:500}md-dialog.chanSpy-dialog .error-list .error .md-button{margin:0}md-dialog.chanSpy-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.chanSpy-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#contexts{position:relative}#contexts>.header{height:76px;min-height:76px;max-height:76px}#contexts>.header .logo .logo-icon{margin:0 16px 0 0}#contexts>.header .logo .logo-text{font-size:24px}#contexts>.header md-icon{color:#fff}#contexts>.header .search-input-wrapper{position:relative}#contexts>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#contexts>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#contexts>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#contexts>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#contexts>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#contexts>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#contexts>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#contexts>.header.selected-bar .close-button-wrapper{width:244px}#contexts>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#contexts>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#contexts>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#contexts #add-context-button{position:fixed;bottom:8px;right:8px;padding:0}#contexts #upload-context-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.context-dialog{max-width:720px;width:720px}md-dialog.context-dialog md-dialog-content{display:block;position:relative}md-dialog.context-dialog md-toolbar .title{font-size:17px}md-dialog.context-dialog md-input-container textarea{min-height:150px}md-dialog.context-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.context-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.context-dialog .date-container{padding:16px 0 24px 0}md-dialog.context-dialog .error-list{font-size:13px}md-dialog.context-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.context-dialog .error-list .error .message{font-weight:500}md-dialog.context-dialog .error-list .error .md-button{margin:0}md-dialog.context-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.context-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.inbound-route-dialog{max-width:720px;width:720px}md-dialog.inbound-route-dialog md-dialog-content{display:block;position:relative}md-dialog.inbound-route-dialog md-toolbar .title{font-size:17px}md-dialog.inbound-route-dialog md-input-container textarea{min-height:150px}md-dialog.inbound-route-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.inbound-route-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.inbound-route-dialog .date-container{padding:16px 0 24px 0}md-dialog.inbound-route-dialog .error-list{font-size:13px}md-dialog.inbound-route-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.inbound-route-dialog .error-list .error .message{font-weight:500}md-dialog.inbound-route-dialog .error-list .error .md-button{margin:0}md-dialog.inbound-route-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.inbound-route-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#voice-inbound-route .header{height:76px;min-height:76px;max-height:76px}#voice-inbound-route .header .goto-inbound-routes-button{margin-right:16px}#voice-inbound-route .header .inbound-route-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#voice-inbound-route .header .inbound-route-image img{height:100%;width:auto;max-width:none}#voice-inbound-route .header .subtitle{margin:6px 0 0 0}#voice-inbound-route .inbound-route-detail-form-container{padding:24px;margin-bottom:24px}#voice-inbound-route .inbound-route-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#voice-inbound-route .inbound-route-detail-form-container .handle{cursor:move}#voice-inbound-route .inbound-route-detail-form-container md-input-container md-switch{margin:0!important}#voice-inbound-route md-table-container thead tr th:not(:first-child):not(.no-padding){padding:0 20px 0 0!important}#voice-inbound-route md-table-container thead th.md-checkbox-column:not(.no-padding){padding:0 24px!important}#voice-inbound-route md-table-container tbody tr td:not(:first-child):not(.no-padding):not(.actions-padding){padding:0 20px 0 0!important}#voice-inbound-route md-table-container.font-size-12 td.md-cell{font-size:12px!important}@media screen and (min-width:1921px){#voice-inbound-route .actionAppData{width:800px!important}}@media screen and (max-width:1920px){#voice-inbound-route .actionAppData{width:700px!important}}@media screen and (min-width:1751px) and (max-width:1919px){#voice-inbound-route .actionAppData{width:600px!important}}@media screen and (min-width:1601px) and (max-width:1750px){#voice-inbound-route .actionAppData{width:500px!important}}@media screen and (min-width:1537px) and (max-width:1600px){#voice-inbound-route .actionAppData{width:450px!important}}@media screen and (min-width:1281px) and (max-width:1536px){#voice-inbound-route .actionAppData{width:300px!important}}@media screen and (max-width:1280px){#voice-inbound-route .actionAppData{width:150px!important}}@media screen and (max-width:960px){#voice-inbound-route .actionAppData{width:80px!important}}#inbound-routes{position:relative}#inbound-routes>.header{height:76px;min-height:76px;max-height:76px}#inbound-routes>.header .logo .logo-icon{margin:0 16px 0 0}#inbound-routes>.header .logo .logo-text{font-size:24px}#inbound-routes>.header md-icon{color:#fff}#inbound-routes>.header .search-input-wrapper{position:relative}#inbound-routes>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#inbound-routes>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#inbound-routes>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#inbound-routes>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#inbound-routes>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#inbound-routes>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#inbound-routes>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#inbound-routes>.header.selected-bar .close-button-wrapper{width:244px}#inbound-routes>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#inbound-routes>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#inbound-routes>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#inbound-routes #add-inbound-route-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.internal-route-dialog{max-width:720px;width:720px}md-dialog.internal-route-dialog md-dialog-content{display:block;position:relative}md-dialog.internal-route-dialog md-toolbar .title{font-size:17px}md-dialog.internal-route-dialog md-input-container textarea{min-height:150px}md-dialog.internal-route-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.internal-route-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.internal-route-dialog .date-container{padding:16px 0 24px 0}md-dialog.internal-route-dialog .error-list{font-size:13px}md-dialog.internal-route-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.internal-route-dialog .error-list .error .message{font-weight:500}md-dialog.internal-route-dialog .error-list .error .md-button{margin:0}md-dialog.internal-route-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.internal-route-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#voice-internal-route .header{height:76px;min-height:76px;max-height:76px}#voice-internal-route .header .goto-internal-routes-button{margin-right:16px}#voice-internal-route .header .internal-route-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#voice-internal-route .header .internal-route-image img{height:100%;width:auto;max-width:none}#voice-internal-route .header .subtitle{margin:6px 0 0 0}#voice-internal-route .internal-route-detail-form-container{padding:24px;margin-bottom:24px}#voice-internal-route .internal-route-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#voice-internal-route .internal-route-detail-form-container .handle{cursor:move}#voice-internal-route .internal-route-detail-form-container md-input-container md-switch{margin:0!important}#voice-internal-route md-table-container thead tr th:not(:first-child):not(.no-padding){padding:0 20px 0 0!important}#voice-internal-route md-table-container thead th.md-checkbox-column:not(.no-padding){padding:0 24px!important}#voice-internal-route md-table-container tbody tr td:not(:first-child):not(.no-padding):not(.actions-padding){padding:0 20px 0 0!important}#voice-internal-route md-table-container.font-size-12 td.md-cell{font-size:12px!important}@media screen and (min-width:1921px){#voice-internal-route .actionAppData{width:800px!important}}@media screen and (max-width:1920px){#voice-internal-route .actionAppData{width:700px!important}}@media screen and (min-width:1751px) and (max-width:1919px){#voice-internal-route .actionAppData{width:600px!important}}@media screen and (min-width:1601px) and (max-width:1750px){#voice-internal-route .actionAppData{width:500px!important}}@media screen and (min-width:1537px) and (max-width:1600px){#voice-internal-route .actionAppData{width:450px!important}}@media screen and (min-width:1281px) and (max-width:1536px){#voice-internal-route .actionAppData{width:300px!important}}@media screen and (max-width:1280px){#voice-internal-route .actionAppData{width:150px!important}}@media screen and (max-width:960px){#voice-internal-route .actionAppData{width:80px!important}}#internal-routes{position:relative}#internal-routes>.header{height:76px;min-height:76px;max-height:76px}#internal-routes>.header .logo .logo-icon{margin:0 16px 0 0}#internal-routes>.header .logo .logo-text{font-size:24px}#internal-routes>.header md-icon{color:#fff}#internal-routes>.header .search-input-wrapper{position:relative}#internal-routes>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#internal-routes>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#internal-routes>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#internal-routes>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#internal-routes>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#internal-routes>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#internal-routes>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#internal-routes>.header.selected-bar .close-button-wrapper{width:244px}#internal-routes>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#internal-routes>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#internal-routes>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#internal-routes #add-internal-route-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.musiconhold-dialog{max-width:720px;width:720px}md-dialog.musiconhold-dialog md-dialog-content{display:block;position:relative}md-dialog.musiconhold-dialog md-toolbar .title{font-size:17px}md-dialog.musiconhold-dialog md-input-container textarea{min-height:150px}md-dialog.musiconhold-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.musiconhold-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.musiconhold-dialog .date-container{padding:16px 0 24px 0}md-dialog.musiconhold-dialog .error-list{font-size:13px}md-dialog.musiconhold-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.musiconhold-dialog .error-list .error .message{font-weight:500}md-dialog.musiconhold-dialog .error-list .error .md-button{margin:0}md-dialog.musiconhold-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.musiconhold-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.mohSound-dialog{max-width:720px;width:720px}md-dialog.mohSound-dialog md-dialog-content{display:block;position:relative}md-dialog.mohSound-dialog md-toolbar .title{font-size:17px}md-dialog.mohSound-dialog md-input-container textarea{min-height:150px}md-dialog.mohSound-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.mohSound-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.mohSound-dialog .date-container{padding:16px 0 24px 0}md-dialog.mohSound-dialog .error-list{font-size:13px}md-dialog.mohSound-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.mohSound-dialog .error-list .error .message{font-weight:500}md-dialog.mohSound-dialog .error-list .error .md-button{margin:0}md-dialog.mohSound-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.mohSound-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#voice-musiconhold .header{height:76px;min-height:76px;max-height:76px}#voice-musiconhold .header .goto-musiconholds-button{margin-right:16px}#voice-musiconhold .header .musiconhold-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#voice-musiconhold .header .musiconhold-image img{height:100%;width:auto;max-width:none}#voice-musiconhold .header .subtitle{margin:6px 0 0 0}#voice-musiconhold .musiconhold-detail-form-container{padding:24px;margin-bottom:24px}#voice-musiconhold .musiconhold-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#voice-musiconhold .musiconhold-detail-form-container .handle{cursor:move}#voice-musiconhold .musiconhold-detail-form-container md-input-container md-switch{margin:0!important}#voice-musiconhold .musiconhold-detail-form-container #musiconhold-image-uploader{position:relative}#voice-musiconhold .musiconhold-detail-form-container #musiconhold-image-uploader.dropping .drop-text{display:flex}#voice-musiconhold .musiconhold-detail-form-container #musiconhold-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#voice-musiconhold .musiconhold-detail-form-container #musiconhold-image-uploader .upload-button{margin-bottom:16px}#voice-musiconhold .musiconhold-detail-form-container #musiconhold-image-uploader .musiconhold-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#voice-musiconhold .musiconhold-detail-form-container #musiconhold-image-uploader .musiconhold-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#voice-musiconhold .musiconhold-detail-form-container #musiconhold-image-uploader .musiconhold-image .media{max-height:100%}#voice-musiconhold md-table-container thead tr th:not(:first-child):not(.no-padding){padding:0 20px 0 0!important}#voice-musiconhold md-table-container thead th.md-checkbox-column:not(.no-padding){padding:0 24px!important}#voice-musiconhold md-table-container tbody tr td:not(:first-child):not(.no-padding):not(.actions-padding){padding:0 20px 0 0!important}#voice-musiconhold md-table-container.font-size-12 td.md-cell{font-size:12px!important}#musiconholds{position:relative}#musiconholds>.header{height:76px;min-height:76px;max-height:76px}#musiconholds>.header .logo .logo-icon{margin:0 16px 0 0}#musiconholds>.header .logo .logo-text{font-size:24px}#musiconholds>.header md-icon{color:#fff}#musiconholds>.header .search-input-wrapper{position:relative}#musiconholds>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#musiconholds>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#musiconholds>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#musiconholds>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#musiconholds>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#musiconholds>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#musiconholds>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#musiconholds>.header.selected-bar .close-button-wrapper{width:244px}#musiconholds>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#musiconholds>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#musiconholds>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#musiconholds #add-musiconhold-button{position:fixed;bottom:8px;right:8px;padding:0}#musiconholds #upload-musiconhold-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.outbound-route-dialog{max-width:720px;width:720px}md-dialog.outbound-route-dialog md-dialog-content{display:block;position:relative}md-dialog.outbound-route-dialog md-toolbar .title{font-size:17px}md-dialog.outbound-route-dialog md-input-container textarea{min-height:150px}md-dialog.outbound-route-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.outbound-route-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.outbound-route-dialog .date-container{padding:16px 0 24px 0}md-dialog.outbound-route-dialog .error-list{font-size:13px}md-dialog.outbound-route-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.outbound-route-dialog .error-list .error .message{font-weight:500}md-dialog.outbound-route-dialog .error-list .error .md-button{margin:0}md-dialog.outbound-route-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.outbound-route-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#voice-outbound-route .header{height:76px;min-height:76px;max-height:76px}#voice-outbound-route .header .goto-outbound-routes-button{margin-right:16px}#voice-outbound-route .header .outbound-route-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#voice-outbound-route .header .outbound-route-image img{height:100%;width:auto;max-width:none}#voice-outbound-route .header .subtitle{margin:6px 0 0 0}#voice-outbound-route .outbound-route-detail-form-container{padding:24px;margin-bottom:24px}#voice-outbound-route .outbound-route-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#voice-outbound-route .outbound-route-detail-form-container .handle{cursor:move}#voice-outbound-route .outbound-route-detail-form-container md-input-container md-switch{margin:0!important}#voice-outbound-route md-table-container thead tr th:not(:first-child):not(.no-padding){padding:0 20px 0 0!important}#voice-outbound-route md-table-container thead th.md-checkbox-column:not(.no-padding){padding:0 24px!important}#voice-outbound-route md-table-container tbody tr td:not(:first-child):not(.no-padding):not(.actions-padding){padding:0 20px 0 0!important}#voice-outbound-route md-table-container.font-size-12 td.md-cell{font-size:12px!important}@media screen and (min-width:1921px){#voice-outbound-route .actionAppData{width:800px!important}}@media screen and (max-width:1920px){#voice-outbound-route .actionAppData{width:700px!important}}@media screen and (min-width:1751px) and (max-width:1919px){#voice-outbound-route .actionAppData{width:600px!important}}@media screen and (min-width:1601px) and (max-width:1750px){#voice-outbound-route .actionAppData{width:500px!important}}@media screen and (min-width:1537px) and (max-width:1600px){#voice-outbound-route .actionAppData{width:450px!important}}@media screen and (min-width:1281px) and (max-width:1536px){#voice-outbound-route .actionAppData{width:300px!important}}@media screen and (max-width:1280px){#voice-outbound-route .actionAppData{width:150px!important}}@media screen and (max-width:960px){#voice-outbound-route .actionAppData{width:80px!important}}#outbound-routes{position:relative}#outbound-routes>.header{height:76px;min-height:76px;max-height:76px}#outbound-routes>.header .logo .logo-icon{margin:0 16px 0 0}#outbound-routes>.header .logo .logo-text{font-size:24px}#outbound-routes>.header md-icon{color:#fff}#outbound-routes>.header .search-input-wrapper{position:relative}#outbound-routes>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#outbound-routes>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#outbound-routes>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#outbound-routes>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#outbound-routes>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#outbound-routes>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#outbound-routes>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#outbound-routes>.header.selected-bar .close-button-wrapper{width:244px}#outbound-routes>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#outbound-routes>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#outbound-routes>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#outbound-routes #add-outbound-route-button{position:fixed;bottom:8px;right:8px;padding:0}#realtime{height:auto}#realtime>.content .blink{animation:blinker 2s linear infinite}#realtime>.content .avatar-wrapper{position:relative}#realtime>.content .avatar-wrapper .status{position:absolute;bottom:-3px;right:5px}#realtime>.content .search-input-wrapper{position:relative;margin-left:20px}#realtime>.content .search-input-wrapper label{padding:6px;cursor:pointer}#realtime>.content .search-input-wrapper md-input-container{padding-top:20px}#realtime>.content .main .labels{padding:8px 16px}#realtime>.content .main .labels .label{margin:0 0 2px 4px;padding:2px 5px;font-size:11px;white-space:nowrap;border-radius:2px}#realtime>.content .main .status{position:absolute;bottom:-3px;right:5px}#realtime>.content .main .avatar-wrapper{position:relative}#realtime>.content .main .avatar-wrapper .status{position:absolute;bottom:-3px;right:5px}#realtime>.content .custom-column{padding:0 24px!important}#realtime>.content td.text-center span.text-boxed,#realtime>.content td.text-center span.text-boxed-light{display:block}@keyframes blinker{50%{opacity:0}}md-dialog.voicemail-dialog{max-width:720px;width:720px}md-dialog.voicemail-dialog md-dialog-content{display:block;position:relative}md-dialog.voicemail-dialog md-toolbar .title{font-size:17px}md-dialog.voicemail-dialog md-input-container textarea{min-height:150px}md-dialog.voicemail-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.voicemail-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.voicemail-dialog .date-container{padding:16px 0 24px 0}md-dialog.voicemail-dialog .error-list{font-size:13px}md-dialog.voicemail-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.voicemail-dialog .error-list .error .message{font-weight:500}md-dialog.voicemail-dialog .error-list .error .md-button{margin:0}md-dialog.voicemail-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.voicemail-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#voice-voicemail .header{height:76px;min-height:76px;max-height:76px}#voice-voicemail .header .goto-voicemails-button{margin-right:16px}#voice-voicemail .header .voicemail-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#voice-voicemail .header .voicemail-image img{height:100%;width:auto;max-width:none}#voice-voicemail .header .subtitle{margin:6px 0 0 0}#voice-voicemail .voicemail-detail-form-container{padding:24px;margin-bottom:24px}#voice-voicemail .voicemail-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#voice-voicemail .voicemail-detail-form-container .handle{cursor:move}#voice-voicemail .voicemail-detail-form-container md-input-container md-switch{margin:0!important}#voice-voicemail .voicemail-detail-form-container #voicemail-image-uploader{position:relative}#voice-voicemail .voicemail-detail-form-container #voicemail-image-uploader.dropping .drop-text{display:flex}#voice-voicemail .voicemail-detail-form-container #voicemail-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#voice-voicemail .voicemail-detail-form-container #voicemail-image-uploader .upload-button{margin-bottom:16px}#voice-voicemail .voicemail-detail-form-container #voicemail-image-uploader .voicemail-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#voice-voicemail .voicemail-detail-form-container #voicemail-image-uploader .voicemail-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#voice-voicemail .voicemail-detail-form-container #voicemail-image-uploader .voicemail-image .media{max-height:100%}#voice-voicemail md-table-container thead tr th:not(:first-child):not(.no-padding){padding:0 20px 0 0!important}#voice-voicemail md-table-container thead th.md-checkbox-column:not(.no-padding){padding:0 24px!important}#voice-voicemail md-table-container tbody tr td:not(:first-child):not(.no-padding):not(.actions-padding){padding:0 20px 0 0!important}#voice-voicemail md-table-container.font-size-12 td.md-cell{font-size:12px!important}#voicemails{position:relative}#voicemails>.header{height:76px;min-height:76px;max-height:76px}#voicemails>.header .logo .logo-icon{margin:0 16px 0 0}#voicemails>.header .logo .logo-text{font-size:24px}#voicemails>.header md-icon{color:#fff}#voicemails>.header .search-input-wrapper{position:relative}#voicemails>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#voicemails>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#voicemails>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#voicemails>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#voicemails>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#voicemails>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#voicemails>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#voicemails>.header.selected-bar .close-button-wrapper{width:244px}#voicemails>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#voicemails>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#voicemails>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#voicemails #add-voicemail-button{position:fixed;bottom:8px;right:8px;padding:0}#voicemails #upload-voicemail-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.voicePrefix-dialog{max-width:720px;width:720px}md-dialog.voicePrefix-dialog md-dialog-content{display:block;position:relative}md-dialog.voicePrefix-dialog md-toolbar .title{font-size:17px}md-dialog.voicePrefix-dialog md-input-container textarea{min-height:150px}md-dialog.voicePrefix-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.voicePrefix-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.voicePrefix-dialog .date-container{padding:16px 0 24px 0}md-dialog.voicePrefix-dialog .error-list{font-size:13px}md-dialog.voicePrefix-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.voicePrefix-dialog .error-list .error .message{font-weight:500}md-dialog.voicePrefix-dialog .error-list .error .md-button{margin:0}md-dialog.voicePrefix-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.voicePrefix-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#voicePrefixes{position:relative}#voicePrefixes>.header{height:76px;min-height:76px;max-height:76px}#voicePrefixes>.header .logo .logo-icon{margin:0 16px 0 0}#voicePrefixes>.header .logo .logo-text{font-size:24px}#voicePrefixes>.header md-icon{color:#fff}#voicePrefixes>.header .search-input-wrapper{position:relative}#voicePrefixes>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#voicePrefixes>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#voicePrefixes>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#voicePrefixes>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#voicePrefixes>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#voicePrefixes>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#voicePrefixes>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#voicePrefixes>.header.selected-bar .close-button-wrapper{width:244px}#voicePrefixes>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#voicePrefixes>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#voicePrefixes>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#voicePrefixes #add-voicePrefix-button{position:fixed;bottom:8px;right:8px;padding:0}#voicePrefixes #upload-voicePrefix-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.voiceQueue-dialog{max-width:720px;width:720px}md-dialog.voiceQueue-dialog md-dialog-content{display:block;position:relative}md-dialog.voiceQueue-dialog md-toolbar .title{font-size:17px}md-dialog.voiceQueue-dialog md-input-container textarea{min-height:150px}md-dialog.voiceQueue-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.voiceQueue-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.voiceQueue-dialog .date-container{padding:16px 0 24px 0}md-dialog.voiceQueue-dialog .error-list{font-size:13px}md-dialog.voiceQueue-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.voiceQueue-dialog .error-list .error .message{font-weight:500}md-dialog.voiceQueue-dialog .error-list .error .md-button{margin:0}md-dialog.voiceQueue-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.voiceQueue-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#voice-voiceQueue .header{height:76px;min-height:76px;max-height:76px}#voice-voiceQueue .header .goto-voiceQueues-button{margin-right:16px}#voice-voiceQueue .header .voiceQueue-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#voice-voiceQueue .header .voiceQueue-image img{height:100%;width:auto;max-width:none}#voice-voiceQueue .header .subtitle{margin:6px 0 0 0}#voice-voiceQueue .voiceQueue-detail-form-container{padding:24px;margin-bottom:24px}#voice-voiceQueue .voiceQueue-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#voice-voiceQueue .voiceQueue-detail-form-container .handle{cursor:move}#voice-voiceQueue .voiceQueue-detail-form-container md-input-container md-switch{margin:0!important}#voice-voiceQueue .voiceQueue-detail-form-container #voiceQueue-image-uploader{position:relative}#voice-voiceQueue .voiceQueue-detail-form-container #voiceQueue-image-uploader.dropping .drop-text{display:flex}#voice-voiceQueue .voiceQueue-detail-form-container #voiceQueue-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#voice-voiceQueue .voiceQueue-detail-form-container #voiceQueue-image-uploader .upload-button{margin-bottom:16px}#voice-voiceQueue .voiceQueue-detail-form-container #voiceQueue-image-uploader .voiceQueue-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#voice-voiceQueue .voiceQueue-detail-form-container #voiceQueue-image-uploader .voiceQueue-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#voice-voiceQueue .voiceQueue-detail-form-container #voiceQueue-image-uploader .voiceQueue-image .media{max-height:100%}#voice-voiceQueue md-table-container thead tr th:not(:first-child):not(.no-padding){padding:0 20px 0 0!important}#voice-voiceQueue md-table-container thead th.md-checkbox-column:not(.no-padding){padding:0 24px!important}#voice-voiceQueue md-table-container tbody tr td:not(:first-child):not(.no-padding):not(.actions-padding){padding:0 20px 0 0!important}#voice-voiceQueue md-table-container.font-size-12 td.md-cell{font-size:12px!important}#voiceQueues{position:relative}#voiceQueues>.header{height:76px;min-height:76px;max-height:76px}#voiceQueues>.header .logo .logo-icon{margin:0 16px 0 0}#voiceQueues>.header .logo .logo-text{font-size:24px}#voiceQueues>.header md-icon{color:#fff}#voiceQueues>.header .search-input-wrapper{position:relative}#voiceQueues>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#voiceQueues>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#voiceQueues>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#voiceQueues>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#voiceQueues>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#voiceQueues>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#voiceQueues>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#voiceQueues>.header.selected-bar .close-button-wrapper{width:244px}#voiceQueues>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#voiceQueues>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#voiceQueues>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#voiceQueues #add-voiceQueue-button{position:fixed;bottom:8px;right:8px;padding:0}#voiceQueues #upload-voiceQueue-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.voiceRecording-dialog{max-width:720px;width:720px}md-dialog.voiceRecording-dialog md-dialog-content{display:block;position:relative}md-dialog.voiceRecording-dialog md-toolbar .title{font-size:17px}md-dialog.voiceRecording-dialog md-input-container textarea{min-height:150px}md-dialog.voiceRecording-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.voiceRecording-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.voiceRecording-dialog .date-container{padding:16px 0 24px 0}md-dialog.voiceRecording-dialog .error-list{font-size:13px}md-dialog.voiceRecording-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.voiceRecording-dialog .error-list .error .message{font-weight:500}md-dialog.voiceRecording-dialog .error-list .error .md-button{margin:0}md-dialog.voiceRecording-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.voiceRecording-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#voice-voiceRecording .header{height:76px;min-height:76px;max-height:76px}#voice-voiceRecording .header .goto-voiceRecordings-button{margin-right:16px}#voice-voiceRecording .header .voiceRecording-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#voice-voiceRecording .header .voiceRecording-image img{height:100%;width:auto;max-width:none}#voice-voiceRecording .header .subtitle{margin:6px 0 0 0}#voice-voiceRecording .voiceRecording-detail-form-container{padding:24px;margin-bottom:24px}#voice-voiceRecording .voiceRecording-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#voice-voiceRecording .voiceRecording-detail-form-container .handle{cursor:move}#voice-voiceRecording .voiceRecording-detail-form-container md-input-container md-switch{margin:0!important}#voice-voiceRecording .voiceRecording-detail-form-container #voiceRecording-image-uploader{position:relative}#voice-voiceRecording .voiceRecording-detail-form-container #voiceRecording-image-uploader.dropping .drop-text{display:flex}#voice-voiceRecording .voiceRecording-detail-form-container #voiceRecording-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#voice-voiceRecording .voiceRecording-detail-form-container #voiceRecording-image-uploader .upload-button{margin-bottom:16px}#voice-voiceRecording .voiceRecording-detail-form-container #voiceRecording-image-uploader .voiceRecording-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#voice-voiceRecording .voiceRecording-detail-form-container #voiceRecording-image-uploader .voiceRecording-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#voice-voiceRecording .voiceRecording-detail-form-container #voiceRecording-image-uploader .voiceRecording-image .media{max-height:100%}#voice-voiceRecording md-table-container thead tr th:not(:first-child):not(.no-padding){padding:0 20px 0 0!important}#voice-voiceRecording md-table-container thead th.md-checkbox-column:not(.no-padding){padding:0 24px!important}#voice-voiceRecording md-table-container tbody tr td:not(:first-child):not(.no-padding):not(.actions-padding){padding:0 20px 0 0!important}#voice-voiceRecording md-table-container.font-size-12 td.md-cell{font-size:12px!important}#voice-voiceRecording .sentiment.POSITIVE{color:#4caf50;font-size:25px}#voice-voiceRecording .sentiment.NEGATIVE{color:#f40505;font-size:30px}#voice-voiceRecording .sentiment.NEUTRAL{color:#03a9f4;font-size:30px}#voice-voiceRecording .sentiment.MIXED{color:#9c27b0;font-size:30px}#voiceRecordings{position:relative}#voiceRecordings>.header{height:76px;min-height:76px;max-height:76px}#voiceRecordings>.header .logo .logo-icon{margin:0 16px 0 0}#voiceRecordings>.header .logo .logo-text{font-size:24px}#voiceRecordings>.header md-icon{color:#fff}#voiceRecordings>.header .search-input-wrapper{position:relative}#voiceRecordings>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#voiceRecordings>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#voiceRecordings>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#voiceRecordings>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#voiceRecordings>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#voiceRecordings>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#voiceRecordings>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#voiceRecordings>.header.selected-bar .close-button-wrapper{width:244px}#voiceRecordings>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#voiceRecordings>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#voiceRecordings>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#voiceRecordings #add-voiceRecording-button{position:fixed;bottom:8px;right:8px;padding:0}#voiceRecordings #upload-voiceRecording-button{position:fixed;bottom:8px;right:8px;padding:0}#realtime{height:auto}#realtime>.content .blink{animation:blinker 2s linear infinite}#realtime>.content .avatar-wrapper{position:relative}#realtime>.content .avatar-wrapper .status{position:absolute;bottom:-3px;right:5px}#realtime>.content .search-input-wrapper{position:relative;margin-left:20px}#realtime>.content .search-input-wrapper label{padding:6px;cursor:pointer}#realtime>.content .search-input-wrapper md-input-container{padding-top:20px}#realtime>.content .main .labels{padding:8px 16px}#realtime>.content .main .labels .label{margin:0 0 2px 4px;padding:2px 5px;font-size:11px;white-space:nowrap;border-radius:2px}#realtime>.content .main .status{position:absolute;bottom:-3px;right:5px}#realtime>.content .main .avatar-wrapper{position:relative}#realtime>.content .main .avatar-wrapper .status{position:absolute;bottom:-3px;right:5px}#realtime>.content .custom-column{padding:0 24px!important}@keyframes blinker{50%{opacity:0}}md-dialog.whatsappAccount-dialog{max-width:720px;width:720px}md-dialog.whatsappAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.whatsappAccount-dialog md-toolbar .title{font-size:17px}md-dialog.whatsappAccount-dialog md-input-container textarea{min-height:150px}md-dialog.whatsappAccount-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.whatsappAccount-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.whatsappAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.whatsappAccount-dialog .error-list{font-size:13px}md-dialog.whatsappAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.whatsappAccount-dialog .error-list .error .message{font-weight:500}md-dialog.whatsappAccount-dialog .error-list .error .md-button{margin:0}md-dialog.whatsappAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.whatsappAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.whatsappAccount-dialog{max-width:720px;width:720px}md-dialog.whatsappAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.whatsappAccount-dialog md-toolbar .title{font-size:17px}md-dialog.whatsappAccount-dialog md-input-container textarea{min-height:150px}md-dialog.whatsappAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.whatsappAccount-dialog .error-list{font-size:13px}md-dialog.whatsappAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.whatsappAccount-dialog .error-list .error .message{font-weight:500}md-dialog.whatsappAccount-dialog .error-list .error .md-button{margin:0}md-dialog.whatsappAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.whatsappAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.whatsappAccount-dialog{max-width:720px;width:720px}md-dialog.whatsappAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.whatsappAccount-dialog md-toolbar .title{font-size:17px}md-dialog.whatsappAccount-dialog md-input-container textarea{min-height:150px}md-dialog.whatsappAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.whatsappAccount-dialog .error-list{font-size:13px}md-dialog.whatsappAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.whatsappAccount-dialog .error-list .error .message{font-weight:500}md-dialog.whatsappAccount-dialog .error-list .error .md-button{margin:0}md-dialog.whatsappAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.whatsappAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.whatsappAccount-dialog{max-width:720px;width:720px}md-dialog.whatsappAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.whatsappAccount-dialog md-toolbar .title{font-size:17px}md-dialog.whatsappAccount-dialog md-input-container textarea{min-height:150px}md-dialog.whatsappAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.whatsappAccount-dialog .error-list{font-size:13px}md-dialog.whatsappAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.whatsappAccount-dialog .error-list .error .message{font-weight:500}md-dialog.whatsappAccount-dialog .error-list .error .md-button{margin:0}md-dialog.whatsappAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.whatsappAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.whatsappAccount-dialog{max-width:720px;width:720px}md-dialog.whatsappAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.whatsappAccount-dialog md-toolbar .title{font-size:17px}md-dialog.whatsappAccount-dialog md-input-container textarea{min-height:150px}md-dialog.whatsappAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.whatsappAccount-dialog .error-list{font-size:13px}md-dialog.whatsappAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.whatsappAccount-dialog .error-list .error .message{font-weight:500}md-dialog.whatsappAccount-dialog .error-list .error .md-button{margin:0}md-dialog.whatsappAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.whatsappAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.whatsappAccount-dialog{max-width:720px;width:720px}md-dialog.whatsappAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.whatsappAccount-dialog md-toolbar .title{font-size:17px}md-dialog.whatsappAccount-dialog md-input-container textarea{min-height:150px}md-dialog.whatsappAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.whatsappAccount-dialog .error-list{font-size:13px}md-dialog.whatsappAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.whatsappAccount-dialog .error-list .error .message{font-weight:500}md-dialog.whatsappAccount-dialog .error-list .error .md-button{margin:0}md-dialog.whatsappAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.whatsappAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.whatsappAccount-dialog{max-width:720px;width:720px}md-dialog.whatsappAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.whatsappAccount-dialog md-toolbar .title{font-size:17px}md-dialog.whatsappAccount-dialog md-input-container textarea{min-height:150px}md-dialog.whatsappAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.whatsappAccount-dialog .error-list{font-size:13px}md-dialog.whatsappAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.whatsappAccount-dialog .error-list .error .message{font-weight:500}md-dialog.whatsappAccount-dialog .error-list .error .md-button{margin:0}md-dialog.whatsappAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.whatsappAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.whatsappAccount-dialog{max-width:720px;width:720px}md-dialog.whatsappAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.whatsappAccount-dialog md-toolbar .title{font-size:17px}md-dialog.whatsappAccount-dialog md-input-container textarea{min-height:150px}md-dialog.whatsappAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.whatsappAccount-dialog .error-list{font-size:13px}md-dialog.whatsappAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.whatsappAccount-dialog .error-list .error .message{font-weight:500}md-dialog.whatsappAccount-dialog .error-list .error .md-button{margin:0}md-dialog.whatsappAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.whatsappAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.whatsappAccount-dialog{max-width:720px;width:720px}md-dialog.whatsappAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.whatsappAccount-dialog md-toolbar .title{font-size:17px}md-dialog.whatsappAccount-dialog md-input-container textarea{min-height:150px}md-dialog.whatsappAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.whatsappAccount-dialog .error-list{font-size:13px}md-dialog.whatsappAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.whatsappAccount-dialog .error-list .error .message{font-weight:500}md-dialog.whatsappAccount-dialog .error-list .error .md-button{margin:0}md-dialog.whatsappAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.whatsappAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.whatsappAccount-dialog{max-width:720px;width:720px}md-dialog.whatsappAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.whatsappAccount-dialog md-toolbar .title{font-size:17px}md-dialog.whatsappAccount-dialog md-input-container textarea{min-height:150px}md-dialog.whatsappAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.whatsappAccount-dialog .error-list{font-size:13px}md-dialog.whatsappAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.whatsappAccount-dialog .error-list .error .message{font-weight:500}md-dialog.whatsappAccount-dialog .error-list .error .md-button{margin:0}md-dialog.whatsappAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.whatsappAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.whatsappAccount-dialog{max-width:720px;width:720px}md-dialog.whatsappAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.whatsappAccount-dialog md-toolbar .title{font-size:17px}md-dialog.whatsappAccount-dialog md-input-container textarea{min-height:150px}md-dialog.whatsappAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.whatsappAccount-dialog .error-list{font-size:13px}md-dialog.whatsappAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.whatsappAccount-dialog .error-list .error .message{font-weight:500}md-dialog.whatsappAccount-dialog .error-list .error .md-button{margin:0}md-dialog.whatsappAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.whatsappAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.whatsappAccount-dialog{max-width:720px;width:720px}md-dialog.whatsappAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.whatsappAccount-dialog md-toolbar .title{font-size:17px}md-dialog.whatsappAccount-dialog md-input-container textarea{min-height:150px}md-dialog.whatsappAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.whatsappAccount-dialog .error-list{font-size:13px}md-dialog.whatsappAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.whatsappAccount-dialog .error-list .error .message{font-weight:500}md-dialog.whatsappAccount-dialog .error-list .error .md-button{margin:0}md-dialog.whatsappAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.whatsappAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.whatsappAccount-dialog{max-width:720px;width:720px}md-dialog.whatsappAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.whatsappAccount-dialog md-toolbar .title{font-size:17px}md-dialog.whatsappAccount-dialog md-input-container textarea{min-height:150px}md-dialog.whatsappAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.whatsappAccount-dialog .error-list{font-size:13px}md-dialog.whatsappAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.whatsappAccount-dialog .error-list .error .message{font-weight:500}md-dialog.whatsappAccount-dialog .error-list .error .md-button{margin:0}md-dialog.whatsappAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.whatsappAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.whatsappAccount-dialog{max-width:720px;width:720px}md-dialog.whatsappAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.whatsappAccount-dialog md-toolbar .title{font-size:17px}md-dialog.whatsappAccount-dialog md-input-container textarea{min-height:150px}md-dialog.whatsappAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.whatsappAccount-dialog .error-list{font-size:13px}md-dialog.whatsappAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.whatsappAccount-dialog .error-list .error .message{font-weight:500}md-dialog.whatsappAccount-dialog .error-list .error .md-button{margin:0}md-dialog.whatsappAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.whatsappAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#whatsapp-whatsappAccount .header{height:76px;min-height:76px;max-height:76px}#whatsapp-whatsappAccount .header .goto-whatsappAccounts-button{margin-right:16px}#whatsapp-whatsappAccount .header .whatsappAccount-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#whatsapp-whatsappAccount .header .whatsappAccount-image img{height:100%;width:auto;max-width:none}#whatsapp-whatsappAccount .header .subtitle{margin:6px 0 0 0}#whatsapp-whatsappAccount .whatsappAccount-detail-form-container{padding:24px;margin-bottom:24px}#whatsapp-whatsappAccount .whatsappAccount-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#whatsapp-whatsappAccount .whatsappAccount-detail-form-container .handle{cursor:move}#whatsapp-whatsappAccount .whatsappAccount-detail-form-container md-input-container md-switch{margin:0!important}#whatsapp-whatsappAccount .whatsappAccount-detail-form-container #whatsappAccount-image-uploader{position:relative}#whatsapp-whatsappAccount .whatsappAccount-detail-form-container #whatsappAccount-image-uploader.dropping .drop-text{display:flex}#whatsapp-whatsappAccount .whatsappAccount-detail-form-container #whatsappAccount-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#whatsapp-whatsappAccount .whatsappAccount-detail-form-container #whatsappAccount-image-uploader .upload-button{margin-bottom:16px}#whatsapp-whatsappAccount .whatsappAccount-detail-form-container #whatsappAccount-image-uploader .whatsappAccount-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#whatsapp-whatsappAccount .whatsappAccount-detail-form-container #whatsappAccount-image-uploader .whatsappAccount-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#whatsapp-whatsappAccount .whatsappAccount-detail-form-container #whatsappAccount-image-uploader .whatsappAccount-image .media{max-height:100%}#whatsapp-whatsappAccount md-table-container thead tr th:not(:first-child):not(.no-padding){padding:0 20px 0 0!important}#whatsapp-whatsappAccount md-table-container thead th.md-checkbox-column:not(.no-padding){padding:0 24px!important}#whatsapp-whatsappAccount md-table-container tbody tr td:not(:first-child):not(.no-padding):not(.actions-padding){padding:0 20px 0 0!important}#whatsapp-whatsappAccount md-table-container.font-size-12 td.md-cell{font-size:12px!important}@media screen and (min-width:1921px){#whatsapp-whatsappAccount .actionAppData{width:800px!important}}@media screen and (max-width:1920px){#whatsapp-whatsappAccount .actionAppData{width:700px!important}}@media screen and (min-width:1751px) and (max-width:1919px){#whatsapp-whatsappAccount .actionAppData{width:600px!important}}@media screen and (min-width:1601px) and (max-width:1750px){#whatsapp-whatsappAccount .actionAppData{width:500px!important}}@media screen and (min-width:1537px) and (max-width:1600px){#whatsapp-whatsappAccount .actionAppData{width:450px!important}}@media screen and (min-width:1281px) and (max-width:1536px){#whatsapp-whatsappAccount .actionAppData{width:300px!important}}@media screen and (max-width:1280px){#whatsapp-whatsappAccount .actionAppData{width:150px!important}}@media screen and (max-width:960px){#whatsapp-whatsappAccount .actionAppData{width:80px!important}}md-dialog.whatsappCannedAnswer-dialog{max-width:720px;width:720px}md-dialog.whatsappCannedAnswer-dialog md-dialog-content{display:block;position:relative}md-dialog.whatsappCannedAnswer-dialog md-toolbar .title{font-size:17px}md-dialog.whatsappCannedAnswer-dialog md-input-container textarea{min-height:150px}md-dialog.whatsappCannedAnswer-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.whatsappCannedAnswer-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.whatsappCannedAnswer-dialog .date-container{padding:16px 0 24px 0}md-dialog.whatsappCannedAnswer-dialog .error-list{font-size:13px}md-dialog.whatsappCannedAnswer-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.whatsappCannedAnswer-dialog .error-list .error .message{font-weight:500}md-dialog.whatsappCannedAnswer-dialog .error-list .error .md-button{margin:0}md-dialog.whatsappCannedAnswer-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.whatsappCannedAnswer-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#whatsappAccounts{position:relative}#whatsappAccounts>.header{height:76px;min-height:76px;max-height:76px}#whatsappAccounts>.header .logo .logo-icon{margin:0 16px 0 0}#whatsappAccounts>.header .logo .logo-text{font-size:24px}#whatsappAccounts>.header md-icon{color:#fff}#whatsappAccounts>.header .search-input-wrapper{position:relative}#whatsappAccounts>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#whatsappAccounts>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#whatsappAccounts>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#whatsappAccounts>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#whatsappAccounts>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#whatsappAccounts>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#whatsappAccounts>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#whatsappAccounts>.header.selected-bar .close-button-wrapper{width:244px}#whatsappAccounts>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#whatsappAccounts>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#whatsappAccounts>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#whatsappAccounts #add-whatsappAccount-button{position:fixed;bottom:8px;right:8px;padding:0}#whatsappAccounts #upload-whatsappAccount-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.whatsappQueue-dialog{max-width:720px;width:720px}md-dialog.whatsappQueue-dialog md-dialog-content{display:block;position:relative}md-dialog.whatsappQueue-dialog md-toolbar .title{font-size:17px}md-dialog.whatsappQueue-dialog md-input-container textarea{min-height:150px}md-dialog.whatsappQueue-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.whatsappQueue-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.whatsappQueue-dialog .date-container{padding:16px 0 24px 0}md-dialog.whatsappQueue-dialog .error-list{font-size:13px}md-dialog.whatsappQueue-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.whatsappQueue-dialog .error-list .error .message{font-weight:500}md-dialog.whatsappQueue-dialog .error-list .error .md-button{margin:0}md-dialog.whatsappQueue-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.whatsappQueue-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#whatsapp-whatsappQueue .header{height:76px;min-height:76px;max-height:76px}#whatsapp-whatsappQueue .header .goto-whatsappQueues-button{margin-right:16px}#whatsapp-whatsappQueue .header .whatsappQueue-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#whatsapp-whatsappQueue .header .whatsappQueue-image img{height:100%;width:auto;max-width:none}#whatsapp-whatsappQueue .header .subtitle{margin:6px 0 0 0}#whatsapp-whatsappQueue .whatsappQueue-detail-form-container{padding:24px;margin-bottom:24px}#whatsapp-whatsappQueue .whatsappQueue-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#whatsapp-whatsappQueue .whatsappQueue-detail-form-container .handle{cursor:move}#whatsapp-whatsappQueue .whatsappQueue-detail-form-container md-input-container md-switch{margin:0!important}#whatsapp-whatsappQueue .whatsappQueue-detail-form-container #whatsappQueue-image-uploader{position:relative}#whatsapp-whatsappQueue .whatsappQueue-detail-form-container #whatsappQueue-image-uploader.dropping .drop-text{display:flex}#whatsapp-whatsappQueue .whatsappQueue-detail-form-container #whatsappQueue-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#whatsapp-whatsappQueue .whatsappQueue-detail-form-container #whatsappQueue-image-uploader .upload-button{margin-bottom:16px}#whatsapp-whatsappQueue .whatsappQueue-detail-form-container #whatsappQueue-image-uploader .whatsappQueue-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#whatsapp-whatsappQueue .whatsappQueue-detail-form-container #whatsappQueue-image-uploader .whatsappQueue-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#whatsapp-whatsappQueue .whatsappQueue-detail-form-container #whatsappQueue-image-uploader .whatsappQueue-image .media{max-height:100%}#whatsapp-whatsappQueue md-table-container thead tr th:not(:first-child):not(.no-padding){padding:0 20px 0 0!important}#whatsapp-whatsappQueue md-table-container thead th.md-checkbox-column:not(.no-padding){padding:0 24px!important}#whatsapp-whatsappQueue md-table-container tbody tr td:not(:first-child):not(.no-padding):not(.actions-padding){padding:0 20px 0 0!important}#whatsapp-whatsappQueue md-table-container.font-size-12 td.md-cell{font-size:12px!important}#whatsappQueues{position:relative}#whatsappQueues>.header{height:76px;min-height:76px;max-height:76px}#whatsappQueues>.header .logo .logo-icon{margin:0 16px 0 0}#whatsappQueues>.header .logo .logo-text{font-size:24px}#whatsappQueues>.header md-icon{color:#fff}#whatsappQueues>.header .search-input-wrapper{position:relative}#whatsappQueues>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#whatsappQueues>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#whatsappQueues>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#whatsappQueues>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#whatsappQueues>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#whatsappQueues>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#whatsappQueues>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#whatsappQueues>.header.selected-bar .close-button-wrapper{width:244px}#whatsappQueues>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#whatsappQueues>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#whatsappQueues>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#whatsappQueues #add-whatsappQueue-button{position:fixed;bottom:8px;right:8px;padding:0}#whatsappQueues #upload-whatsappQueue-button{position:fixed;bottom:8px;right:8px;padding:0}#layout-vertical-navigation-fullwidth-toolbar-2 #vertical-navigation{width:240px;min-width:240px;max-width:240px;overflow-x:hidden;transition:all .3s cubic-bezier(.55,0,.55,.2),width .1s linear,min-width .1s linear,max-width .1s linear;box-shadow:0 3px 5px -1px rgba(0,0,0,.2),0 6px 10px 0 rgba(0,0,0,.14),0 1px 18px 0 rgba(0,0,0,.12)}#layout-vertical-navigation-fullwidth-toolbar-2 #vertical-navigation .navigation-header{height:64px;min-height:64px;background-color:rgba(255,255,255,.05);padding:0 16px 0 24px}#layout-vertical-navigation-fullwidth-toolbar-2 #vertical-navigation:not(._md-locked-open){box-shadow:0 5px 5px -3px rgba(0,0,0,.2),0 8px 10px 1px rgba(0,0,0,.14),0 3px 14px 2px rgba(0,0,0,.12)}@media only screen and (min-width:960px){.ms-navigation-folded #content-container{margin-left:64px}.ms-navigation-folded #layout-vertical-navigation-fullwidth-toolbar-2 #vertical-navigation{position:absolute}.ms-navigation-folded:not(.ms-navigation-folded-open) #layout-vertical-navigation-fullwidth-toolbar-2 #vertical-navigation{position:absolute;width:64px;min-width:64px;max-width:64px}.ms-navigation-folded:not(.ms-navigation-folded-open) #layout-vertical-navigation-fullwidth-toolbar-2 #vertical-navigation .navigation-header{padding:0 16px}.ms-navigation-folded:not(.ms-navigation-folded-open) #layout-vertical-navigation-fullwidth-toolbar-2 #vertical-navigation .navigation-header .logo-text{display:none}}#vertical-navigation{width:240px;min-width:240px;max-width:240px;overflow-x:hidden;transition:all .3s cubic-bezier(.55,0,.55,.2),width .1s linear,min-width .1s linear,max-width .1s linear;box-shadow:0 3px 5px -1px rgba(0,0,0,.2),0 6px 10px 0 rgba(0,0,0,.14),0 1px 18px 0 rgba(0,0,0,.12)}#vertical-navigation .navigation-header{height:64px;min-height:64px;background-color:rgba(255,255,255,.05);padding:0 16px 0 24px}#vertical-navigation .navigation-header .logo .logo-image{display:block;width:32px;min-width:32px;height:32px;line-height:32px;text-align:center;font-size:16px;font-weight:500;color:#fff;border-radius:2px}#vertical-navigation .navigation-header .logo .logo-text{color:#fff;margin-left:16px;font-size:16px}#vertical-navigation .navigation-header .fold-toggle{transition:transform .3s ease-in-out .1s;transform:rotate(0);margin:0;padding:8px;width:34px!important;height:34px!important;cursor:pointer}#vertical-navigation:not(._md-locked-open){box-shadow:0 5px 5px -3px rgba(0,0,0,.2),0 8px 10px 1px rgba(0,0,0,.14),0 3px 14px 2px rgba(0,0,0,.12)}@media only screen and (min-width:960px){.ms-navigation-folded #content-container{margin-left:64px}.ms-navigation-folded #vertical-navigation{position:absolute}.ms-navigation-folded #vertical-navigation .navigation-header .fold-toggle{transform:rotate(180deg);opacity:0}.ms-navigation-folded.ms-navigation-folded-open #vertical-navigation .navigation-header .fold-toggle{transition:transform .3s ease-in-out .1s,opacity .3s ease-in-out .2s;opacity:1}.ms-navigation-folded:not(.ms-navigation-folded-open) #vertical-navigation{position:absolute;width:64px;min-width:64px;max-width:64px}.ms-navigation-folded:not(.ms-navigation-folded-open) #vertical-navigation .navigation-header{padding:0 16px}.ms-navigation-folded:not(.ms-navigation-folded-open) #vertical-navigation .navigation-header .logo-text{display:none}}#quick-panel{width:330px;min-width:330px;max-width:330px;z-index:99}#quick-panel md-content{height:100%}#quick-panel md-content md-tabs{position:static;height:100%}#quick-panel md-content md-tabs md-tabs-wrapper{background-color:rgba(0,0,0,.03);border-bottom:1px solid rgba(0,0,0,.06)}#quick-panel md-content md-tabs md-tabs-wrapper .md-tab{max-width:none!important}#quick-panel md-content md-tabs md-tabs-content-wrapper md-tab-content{height:100%;overflow:hidden}#quick-panel md-content md-tabs md-tabs-content-wrapper md-tab-content>div{overflow:hidden;height:100%}.unread-message-count-chat{position:absolute;top:5px;left:10px;width:18px;height:18px;z-index:10;border-radius:50%;text-align:center;line-height:18px;font-size:10px}@media screen and (max-width:600px){#quick-panel{width:80%;min-width:80%;max-width:80%}}#quick-panel .activity-tab .friends .friend{position:relative}#quick-panel .activity-tab .friends .friend .status{position:absolute;top:8px;left:44px;width:18px;height:18px;z-index:10;border-radius:50%;border:3px solid #fff}#quick-panel .activity-tab .friends .friend .status.online{background-color:#00c853}#quick-panel .activity-tab .friends .friend .status.offline{background-color:#d50000}#quick-panel .activity-tab .friends .friend .status.away{background-color:#ff6d00}#quick-panel .activity-tab .friends .friend .unread-message-count{position:absolute;left:16px;bottom:16px;width:18px;height:18px;z-index:10;border-radius:50%;text-align:center;line-height:18px;font-size:11px}#quick-panel .activity-tab .servers .server .status{margin:24px 20px 28px 8px}#quick-panel .activity-tab .servers .server .status.normal{color:#00c853}#quick-panel .activity-tab .servers .server .status.warn{color:#d50000}#quick-panel .activity-tab .servers .server .status.error{color:#ff6d00}#quick-panel .activity-tab .stat md-progress-linear.normal .md-bar{background-color:#00c853}#quick-panel .activity-tab .stat md-progress-linear.normal .md-container{background-color:rgba(0,200,83,.3)}#quick-panel .activity-tab .stat md-progress-linear.warn .md-bar{background-color:#ff6d00}#quick-panel .activity-tab .stat md-progress-linear.warn .md-container{background-color:rgba(255,109,0,.3)}#quick-panel .activity-tab .stat md-progress-linear.alert .md-bar{background-color:#d50000}#quick-panel .activity-tab .stat md-progress-linear.alert .md-container{background-color:rgba(213,0,0,.3)}#quick-panel .chat-tab .chat,#quick-panel .chat-tab .main{position:absolute;width:100%;top:0;bottom:0}#quick-panel .chat-tab .main .contact{position:relative}#quick-panel .chat-tab .main .contact .status{position:absolute;top:8px;left:44px;width:18px;height:18px;border:3px solid #fff;border-radius:50%;z-index:10}#quick-panel .chat-tab .main .contact .status.online{background-color:#00c853}#quick-panel .chat-tab .main .contact .status.offline{background-color:#d50000}#quick-panel .chat-tab .main .contact .status.away{background-color:#ff6d00}#quick-panel .chat-tab .main .contact .unread-message-count{position:absolute;left:16px;bottom:16px;width:18px;height:18px;z-index:10;border-radius:50%;text-align:center;line-height:18px;font-size:11px}#quick-panel .chat-tab .main .recent .contact .status{top:18px}#quick-panel .chat-tab .chat{max-height:100%;overflow:hidden}#quick-panel .chat-tab .chat .message-row .bubble{position:relative;padding:8px;background-color:#eceff1;border:1px solid #dcdfe1}#quick-panel .chat-tab .chat .message-row .bubble:after,#quick-panel .chat-tab .chat .message-row .bubble:before{content:' ';position:absolute;width:0;height:0}#quick-panel .chat-tab .chat .message-row .bubble:after{left:-7px;right:auto;top:0;bottom:auto;border:11px solid;border-color:#eceff1 transparent transparent transparent}#quick-panel .chat-tab .chat .message-row .bubble:before{left:-9px;right:auto;top:-1px;bottom:auto;border:8px solid;border-color:#dcdfe1 transparent transparent transparent}#quick-panel .chat-tab .chat .message-row .bubble .time{font-size:11px;margin-top:8px}#quick-panel .chat-tab .chat .message-row .bubble .message{word-wrap:break-word}#quick-panel .chat-tab .chat .message-row.contact .avatar{margin:0 16px 0 0}#quick-panel .chat-tab .chat .message-row.user{align-items:flex-end}#quick-panel .chat-tab .chat .message-row.user .avatar{order:2;margin:0 0 0 16px}#quick-panel .chat-tab .chat .message-row.user .bubble{background-color:#e8f5e9;border:1px solid #dfebe0;order:1}#quick-panel .chat-tab .chat .message-row.user .bubble:after{right:-7px;left:auto;top:auto;bottom:0;border-color:transparent transparent #e8f5e9 transparent}#quick-panel .chat-tab .chat .message-row.user .bubble:before{right:-9px;left:auto;top:auto;bottom:-1px;border-color:transparent transparent #dfebe0 transparent}#quick-panel .chat-tab .chat .reply{border-top:1px solid rgba(0,0,0,.12)}#quick-panel .chat-tab .chat .reply textarea{margin:8px;resize:none;padding:8px 16px 8px 8px}#timeline{position:relative;height:auto;padding-bottom:30px}#timeline:before{display:block;position:absolute;z-index:10;content:'';width:2px;background:rgba(0,0,0,.08);top:0;left:50%;bottom:0;margin-left:-1px}#timeline .ms-timeline-item{overflow:hidden;position:relative;z-index:20;width:100%;margin:0 auto;max-width:1200px}#timeline .ms-timeline-item .timeline-card{order:1}#timeline .ms-timeline-item .timeline-card .interaction .header .avatar .image{display:block;width:40px;height:40px;border-radius:20px}#timeline .ms-timeline-item .timeline-card .interaction .media .image{width:100%}#timeline .ms-timeline-item .timeline-point{position:absolute;width:40px;height:40px;line-height:40px;text-align:center;border-radius:50%;left:50%;margin:16px 0 0 -28px;order:2}#timeline .ms-timeline-item .timeline-point md-icon{color:#fff}#timeline .ms-timeline-item .timeline-detail{flex:50% 0 0;padding-top:28px;order:3}#timeline .ms-timeline-item .timeline-detail .time{font-size:15px;padding-left:68px}#timeline .ms-timeline-item .timeline-detail .event{color:rgba(0,0,0,.54);padding-left:68px}#timeline .ms-timeline-item:nth-child(odd) .timeline-card{flex-direction:row-reverse}#timeline .ms-timeline-item:nth-child(even) .timeline-card{order:3;padding-right:0}#timeline .ms-timeline-item:nth-child(even) .timeline-card ms-card{padding-left:84px}#timeline .ms-timeline-item:nth-child(even) .timeline-detail{order:1;padding-left:0;text-align:right}#timeline .ms-timeline-item:nth-child(even) .timeline-detail .event,#timeline .ms-timeline-item:nth-child(even) .timeline-detail .time{padding-right:68px}#timeline .ms-timeline-item:first-child{padding-top:15px}#timeline .ms-timeline-item.animate .timeline-card{animation:slide-in-left .4s}#timeline .ms-timeline-item.animate .timeline-point{animation:slide-in-bottom .4s}#timeline .ms-timeline-item.animate .timeline-detail{animation:slide-in-right .4s}#timeline .ms-timeline-item:nth-child(even).animate .timeline-card{animation:slide-in-right .4s}#timeline .ms-timeline-item:nth-child(even).animate .timeline-detail{animation:slide-in-left .4s}#timeline.timeline-left .ms-timeline-item .timeline-card{order:1}#timeline.timeline-left .ms-timeline-item .timeline-card ms-card{padding-right:68px;padding-left:0;margin-left:auto}#timeline.timeline-left .ms-timeline-item .timeline-detail{order:3;text-align:left}#timeline.timeline-left .ms-timeline-item.animate .timeline-card{animation:slide-in-left .4s}#timeline.timeline-left .ms-timeline-item.animate .timeline-detail{animation:slide-in-right .4s}#timeline.timeline-right .ms-timeline-item .timeline-card{order:3}#timeline.timeline-right .ms-timeline-item .timeline-card ms-card{padding-left:68px;padding-right:0;margin-right:auto}#timeline.timeline-right .ms-timeline-item .timeline-detail{order:1;text-align:right}#timeline.timeline-right .ms-timeline-item .timeline-detail .event,#timeline.timeline-right .ms-timeline-item .timeline-detail .time{padding-right:68px;padding-left:0}#timeline.timeline-right .ms-timeline-item.animate .timeline-card{animation:slide-in-right .4s}#timeline.timeline-right .ms-timeline-item.animate .timeline-detail{animation:slide-in-left .4s}md-dialog.group-dialog{max-width:720px;width:720px}md-dialog.group-dialog md-dialog-content{display:block;position:relative}md-dialog.group-dialog md-toolbar .title{font-size:17px}md-dialog.group-dialog md-input-container textarea{min-height:150px}md-dialog.group-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.group-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.group-dialog .date-container{padding:16px 0 24px 0}md-dialog.group-dialog .error-list{font-size:13px}md-dialog.group-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.group-dialog .error-list .error .message{font-weight:500}md-dialog.group-dialog .error-list .error .md-button{margin:0}md-dialog.group-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.group-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#quick-panel .group-tab .chat,#quick-panel .group-tab .main{position:absolute;width:100%;top:0;bottom:0}#quick-panel .group-tab .main .contact{position:relative}#quick-panel .group-tab .main .contact .status{position:absolute;top:8px;left:44px;width:18px;height:18px;border:3px solid #fff;border-radius:50%;z-index:10}#quick-panel .group-tab .main .contact .status.online{background-color:#00c853}#quick-panel .group-tab .main .contact .status.offline{background-color:#d50000}#quick-panel .group-tab .main .contact .status.away{background-color:#ff6d00}#quick-panel .group-tab .main .contact .unread-message-count{position:absolute;left:16px;bottom:16px;width:18px;height:18px;z-index:10;border-radius:50%;text-align:center;line-height:18px;font-size:11px}#quick-panel .group-tab .main .recent .contact .status{top:18px}#quick-panel .group-tab .chat{max-height:100%;overflow:hidden}#quick-panel .group-tab .chat .message-row{padding:8px}#quick-panel .group-tab .chat .message-row .bubble{position:relative;padding:8px;background-color:#eceff1;border:1px solid #dcdfe1}#quick-panel .group-tab .chat .message-row .bubble:after,#quick-panel .group-tab .chat .message-row .bubble:before{content:' ';position:absolute;width:0;height:0}#quick-panel .group-tab .chat .message-row .bubble:after{left:-7px;right:auto;top:0;bottom:auto;border:11px solid;border-color:#eceff1 transparent transparent transparent}#quick-panel .group-tab .chat .message-row .bubble:before{left:-9px;right:auto;top:-1px;bottom:auto;border:8px solid;border-color:#dcdfe1 transparent transparent transparent}#quick-panel .group-tab .chat .message-row .bubble .time{font-size:11px;margin-top:8px}#quick-panel .group-tab .chat .message-row .bubble .message{word-wrap:break-word}#quick-panel .group-tab .chat .message-row.contact .avatar{margin:0 16px 0 0}#quick-panel .group-tab .chat .message-row.user{align-items:flex-end}#quick-panel .group-tab .chat .message-row.user .avatar{order:2;margin:0 0 0 16px}#quick-panel .group-tab .chat .message-row.user .bubble{background-color:#e8f5e9;border:1px solid #dfebe0;order:1}#quick-panel .group-tab .chat .message-row.user .bubble:after{right:-7px;left:auto;top:auto;bottom:0;border-color:transparent transparent #e8f5e9 transparent}#quick-panel .group-tab .chat .message-row.user .bubble:before{right:-9px;left:auto;top:auto;bottom:-1px;border-color:transparent transparent #dfebe0 transparent}#quick-panel .group-tab .chat .reply{border-top:1px solid rgba(0,0,0,.12)}#quick-panel .group-tab .chat .reply textarea{margin:8px;resize:none;padding:8px 16px 8px 8px}md-dialog.group-dialog{max-width:720px;width:720px}md-dialog.group-dialog md-dialog-content{display:block;position:relative}md-dialog.group-dialog md-toolbar .title{font-size:17px}md-dialog.group-dialog md-input-container textarea{min-height:150px}md-dialog.group-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.group-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.group-dialog .date-container{padding:16px 0 24px 0}md-dialog.group-dialog .error-list{font-size:13px}md-dialog.group-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.group-dialog .error-list .error .message{font-weight:500}md-dialog.group-dialog .error-list .error .md-button{margin:0}md-dialog.group-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.group-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#reset-password{height:100%;background:url(/assets/images/backgrounds/tech.png) no-repeat;background-size:cover}#reset-password #reset-password-form-wrapper{flex:1 0 auto;padding:32px}#reset-password #reset-password-form-wrapper #reset-password-form{width:384px;max-width:384px;padding:32px;text-align:center;background:#fff}#reset-password #reset-password-form-wrapper #reset-password-form .logo{width:128px;height:128px;line-height:128px;font-size:86px;font-weight:500;margin:32px auto;color:#fff;border-radius:2px}#reset-password #reset-password-form-wrapper #reset-password-form .title{font-size:17px;margin:16px 0 32px 0}#reset-password #reset-password-form-wrapper #reset-password-form .logo_login{max-height:200px}#reset-password #reset-password-form-wrapper #reset-password-form form{width:100%;text-align:left}#reset-password #reset-password-form-wrapper #reset-password-form form .submit-button{width:220px;margin:16px auto;display:block}#reset-password #reset-password-form-wrapper #reset-password-form .login{margin:32px auto 24px auto;width:250px;font-weight:500}#reset-password #reset-password-form-wrapper #reset-password-form .login .text{margin-right:8px}@media screen and (max-width:600px){#reset-password #reset-password-form-wrapper{padding:16px}#reset-password #reset-password-form-wrapper #reset-password-form{padding:24px;width:100%}#reset-password #reset-password-form-wrapper #reset-password-form form .md-button{width:90%}}md-dialog.preview-dialog{max-width:1020px;width:1020px}md-dialog.preview-dialog md-dialog-content{display:block;position:relative;padding:0}md-dialog.preview-dialog md-dialog-content .recall-me-info{position:relative;overflow-y:hidden;overflow-x:auto;background-color:rgba(0,0,0,.03);border-bottom:1px solid rgba(0,0,0,.12);min-height:64px;padding:8px 8px 8px 16px}md-dialog.preview-dialog md-toolbar .title{font-size:17px}md-dialog.preview-dialog md-input-container textarea{min-height:150px}md-dialog.preview-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.preview-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.preview-dialog .date-container{padding:16px 0 24px 0}md-dialog.preview-dialog .error-list{font-size:13px}md-dialog.preview-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.preview-dialog .error-list .error .message{font-weight:500}md-dialog.preview-dialog .error-list .error .md-button{margin:0}md-dialog.preview-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.preview-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#toolbar{width:100%;height:64px;min-height:64px;max-height:64px;z-index:55!important}#toolbar .blink{animation:blinker 2s linear infinite}#toolbar #navigation-toggle{width:64px;min-width:64px;height:64px;margin:0;border-right:1px solid rgba(0,0,0,.12);border-radius:0}#toolbar .logo-image{display:block;width:32px;min-width:32px;height:32px;line-height:32px;text-align:center;font-size:16px;font-weight:500;color:#fff;border-radius:2px;margin-left:10px;margin-right:8px}#toolbar #user-menu{height:64px;padding:0}#toolbar #user-menu md-menu-item .md-button{font-size:15px}#toolbar #user-menu md-menu-item .md-button md-icon{margin:auto 16px auto 0}#toolbar #user-menu .user-button{margin:0;padding:0 16px;height:64px;text-transform:none}#toolbar #user-menu .user-button .avatar-wrapper{position:relative}#toolbar #user-menu .user-button .avatar-wrapper .status{position:absolute;bottom:-3px;right:5px}#toolbar #user-menu .user-button .username{margin:0 12px 0 8px}#toolbar #language-menu{height:64px}#toolbar #language-menu .language-button{min-width:64px;height:64px;margin:0;padding:0 16px;border-radius:0}#toolbar #language-menu .language-button .iso{text-transform:uppercase}#toolbar #language-menu .language-button .flag{margin-right:8px}#toolbar #quick-panel-toggle{width:64px;height:64px;margin:0;border-radius:0}#toolbar #quick-panel-toggle .unread-message-count{position:absolute;top:8px;left:38px;width:18px;height:18px;z-index:10;border-radius:50%;text-align:center;line-height:18px;font-size:10px}#toolbar .toolbar-separator{height:64px;width:1px;background:rgba(0,0,0,.12)}#language-menu-content md-menu-item .flag{margin-right:16px}#language-message{min-height:88px;max-width:600px}#language-message .md-toast-content{height:90px}.open-contact-count{left:25px}.md-button.preview-button{min-width:46px;min-height:50px}@media screen and (max-width:600px){#toolbar #user-menu .user-button{min-width:64px;padding:0 2px 0 10px}}.badge-count{position:absolute;top:1px;width:18px;height:18px;z-index:10;border-radius:50%;text-align:center;line-height:18px;font-size:10px}.queues-call-count{left:27px}.geEditor{font-family:Helvetica Neue,Helvetica,Arial Unicode MS,Arial;font-size:10pt;overflow:hidden;height:100%}.geMenubarContainer .geItem,.geSidebarContainer .geTitle,.geToolbar .geButton,.geToolbar .geLabel{cursor:pointer!important}.geContentEditable div,.geContentEditable table,.geContentEditable table td{border:1px dashed #d3d3d3}.geBackgroundPage{-webkit-box-shadow:0 0 3px 0 #d9d9d9;-moz-box-shadow:0 0 3px 0 #d9d9d9;box-shadow:0 0 3px 0 #d9d9d9}.geMenubarContainer a,.geSidebarContainer a,.geToolbar a{color:#000!important;text-decoration:none}.geDiagramContainer,.geFooterContainer,.geHsplit,.geMenubarContainer,.geOutlineContainer,.geSidebarContainer,.geToolbarContainer,.geVsplit{overflow:hidden;position:absolute;cursor:default}.geDiagramContainer,.geOutlineContainer{background-color:#fff;outline:0}.geMenubar,.geToolbar{white-space:nowrap;display:block;width:100%}.geMenubarContainer .geItem,.geSidebar,.geSidebar .geItem,.geSidebarContainer .geTitle,.geToolbar .geButton,.geToolbar .geLabel,.mxPopupMenuItem{-webkit-transition:all .1s ease-in-out;-moz-transition:all .1s ease-in-out;-o-transition:all .1s ease-in-out;-ms-transition:all .1s ease-in-out;transition:all .1s ease-in-out}.geHint{background-color:#fff;border:1px solid gray;padding:4px 16px 4px 16px;border-radius:3px;-webkit-box-shadow:1px 1px 2px 0 #ddd;-moz-box-shadow:1px 1px 2px 0 #ddd;box-shadow:1px 1px 2px 0 #ddd;opacity:.8}.geStatusAlert{white-space:nowrap;margin-top:-5px;font-size:12px;padding:4px 6px 4px 6px;background-color:#f2dede;border:1px solid #ebccd1;color:#a94442!important;border-radius:3px}.geStatusAlert:hover{background-color:#f1d8d8;border-color:#d6b2b8}.geStatusMessage{white-space:nowrap;margin-top:-5px;padding:4px 6px 4px 6px;font-size:12px;background-image:-webkit-linear-gradient(top,#dff0d8 0,#c8e5bc 100%);background-image:-o-linear-gradient(top,#dff0d8 0,#c8e5bc 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#dff0d8),to(#c8e5bc));background-image:linear-gradient(to bottom,#dff0d8 0,#c8e5bc 100%);background-repeat:repeat-x;border:1px solid #b2dba1;border-radius:3px;color:#3c763d!important}.geStatusMessage:hover{background:#c8e5bc;border-color:#b2dba1}.geAlert{position:absolute;white-space:nowrap;padding:14px;background-color:#f2dede;border:1px solid #ebccd1;color:#a94442;border-radius:3px;-webkit-box-shadow:2px 2px 3px 0 #ddd;-moz-box-shadow:2px 2px 3px 0 #ddd;box-shadow:2px 2px 3px 0 #ddd}.geBtn{background-color:#f5f5f5;border-radius:2px;border:1px solid #d8d8d8;color:#333;cursor:default;font-size:11px;font-weight:700;height:29px;line-height:27px;margin:0 0 0 8px;min-width:72px;outline:0;padding:0 8px;cursor:pointer}.geBtn:hover{-webkit-box-shadow:0 1px 1px rgba(0,0,0,.1);-moz-box-shadow:0 1px 1px rgba(0,0,0,.1);box-shadow:0 1px 1px rgba(0,0,0,.1);border:1px solid #c6c6c6;background-color:#f8f8f8;background-image:linear-gradient(#f8f8f8 0,#f1f1f1 100%);color:#111}.geBtn:disabled{opacity:.5}.geBtnUp{background-image:url(data:image/gif;base64,R0lGODlhCgAGAJECAGZmZtXV1f///wAAACH/C1hNUCBEYXRhWE1QPD94cGFja2V0IGJlZ2luPSLvu78iIGlkPSJXNU0wTXBDZWhpSHpyZVN6TlRjemtjOWQiPz4gPHg6eG1wbWV0YSB4bWxuczp4PSJhZG9iZTpuczptZXRhLyIgeDp4bXB0az0iQWRvYmUgWE1QIENvcmUgNS4wLWMwNjAgNjEuMTM0Nzc3LCAyMDEwLzAyLzEyLTE3OjMyOjAwICAgICAgICAiPiA8cmRmOlJERiB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiPiA8cmRmOkRlc2NyaXB0aW9uIHJkZjphYm91dD0iIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtbG5zOnhtcE1NPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvbW0vIiB4bWxuczpzdFJlZj0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL3NUeXBlL1Jlc291cmNlUmVmIyIgeG1wOkNyZWF0b3JUb29sPSJBZG9iZSBQaG90b3Nob3AgQ1M1IE1hY2ludG9zaCIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDo0QzM3ODJERjg4NUQxMUU0OTFEQ0E2MzRGQzcwNUY3NCIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDo0QzM3ODJFMDg4NUQxMUU0OTFEQ0E2MzRGQzcwNUY3NCI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOjRDMzc4MkREODg1RDExRTQ5MURDQTYzNEZDNzA1Rjc0IiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOjRDMzc4MkRFODg1RDExRTQ5MURDQTYzNEZDNzA1Rjc0Ii8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+Af/+/fz7+vn49/b19PPy8fDv7u3s6+rp6Ofm5eTj4uHg397d3Nva2djX1tXU09LR0M/OzczLysnIx8bFxMPCwcC/vr28u7q5uLe2tbSzsrGwr66trKuqqainpqWko6KhoJ+enZybmpmYl5aVlJOSkZCPjo2Mi4qJiIeGhYSDgoGAf359fHt6eXh3dnV0c3JxcG9ubWxramloZ2ZlZGNiYWBfXl1cW1pZWFdWVVRTUlFQT05NTEtKSUhHRkVEQ0JBQD8+PTw7Ojk4NzY1NDMyMTAvLi0sKyopKCcmJSQjIiEgHx4dHBsaGRgXFhUUExIREA8ODQwLCgkIBwYFBAMCAQAAIfkEAQAAAgAsAAAAAAoABgAAAg6UjwiQBhGYglCKhXFLBQA7);background-position:center center;background-repeat:no-repeat}.geBtnUp:active{background-color:#4d90fe;background-image:linear-gradient(#4d90fe 0,#357ae8 100%)}.geBtnDown{background-image:url(data:image/gif;base64,R0lGODlhCgAGAJECANXV1WZmZv///wAAACH/C1hNUCBEYXRhWE1QPD94cGFja2V0IGJlZ2luPSLvu78iIGlkPSJXNU0wTXBDZWhpSHpyZVN6TlRjemtjOWQiPz4gPHg6eG1wbWV0YSB4bWxuczp4PSJhZG9iZTpuczptZXRhLyIgeDp4bXB0az0iQWRvYmUgWE1QIENvcmUgNS4wLWMwNjAgNjEuMTM0Nzc3LCAyMDEwLzAyLzEyLTE3OjMyOjAwICAgICAgICAiPiA8cmRmOlJERiB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiPiA8cmRmOkRlc2NyaXB0aW9uIHJkZjphYm91dD0iIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtbG5zOnhtcE1NPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvbW0vIiB4bWxuczpzdFJlZj0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL3NUeXBlL1Jlc291cmNlUmVmIyIgeG1wOkNyZWF0b3JUb29sPSJBZG9iZSBQaG90b3Nob3AgQ1M1IE1hY2ludG9zaCIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDo0QzM3ODJEQjg4NUQxMUU0OTFEQ0E2MzRGQzcwNUY3NCIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDo0QzM3ODJEQzg4NUQxMUU0OTFEQ0E2MzRGQzcwNUY3NCI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOjRDMzc4MkQ5ODg1RDExRTQ5MURDQTYzNEZDNzA1Rjc0IiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOjRDMzc4MkRBODg1RDExRTQ5MURDQTYzNEZDNzA1Rjc0Ii8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+Af/+/fz7+vn49/b19PPy8fDv7u3s6+rp6Ofm5eTj4uHg397d3Nva2djX1tXU09LR0M/OzczLysnIx8bFxMPCwcC/vr28u7q5uLe2tbSzsrGwr66trKuqqainpqWko6KhoJ+enZybmpmYl5aVlJOSkZCPjo2Mi4qJiIeGhYSDgoGAf359fHt6eXh3dnV0c3JxcG9ubWxramloZ2ZlZGNiYWBfXl1cW1pZWFdWVVRTUlFQT05NTEtKSUhHRkVEQ0JBQD8+PTw7Ojk4NzY1NDMyMTAvLi0sKyopKCcmJSQjIiEgHx4dHBsaGRgXFhUUExIREA8ODQwLCgkIBwYFBAMCAQAAIfkEAQAAAgAsAAAAAAoABgAAAg6UjxLLewEiCAnOZBzeBQA7);background-position:center center;background-repeat:no-repeat}.geBtnDown:active{background-color:#4d90fe;background-image:linear-gradient(#4d90fe 0,#357ae8 100%)}.geColorBtn{background-color:#f5f5f5;background-image:linear-gradient(#f5f5f5 0,#e1e1e1 100%);border-radius:4px;border:1px solid rgba(0,0,0,.5);color:#333;cursor:default;margin:0;outline:0;padding:0;cursor:pointer}.geColorBtn:hover{-webkit-box-shadow:0 1px 1px rgba(0,0,0,.1);-moz-box-shadow:0 1px 1px rgba(0,0,0,.1);box-shadow:0 1px 1px rgba(0,0,0,.1);border:1px solid rgba(0,0,0,.7)}.geColorBtn:active{background-color:#4d90fe;background-image:linear-gradient(#4d90fe 0,#357ae8 100%);border:1px solid #2f5bb7;color:#fff}.geColorBtn:disabled{opacity:.5}.gePrimaryBtn{background-color:#4d90fe;background-image:linear-gradient(#4d90fe 0,#4787ed 100%);border:1px solid #3079ed;color:#fff}.gePrimaryBtn:hover{background-color:#357ae8;background-image:linear-gradient(#4d90fe 0,#357ae8 100%);border:1px solid #2f5bb7;color:#fff}.gePrimaryBtn:disabled{opacity:.5}.geAlertLink{color:#843534;font-weight:700;text-decoration:none}.geMenubarContainer{background-color:#fff}.geMenubar{padding:0 2px 0 2px;vertical-align:middle}.geMenubarContainer .geItem,.geToolbar .geItem{padding:6px 8px 6px 8px;cursor:default}.geMenubarContainer .geItem:hover,.geToolbarContainer .geItem:hover{background:#eee}.mxDisabled:hover{background:inherit!important}.geMenubar a.geStatus{color:#b3b3b3;padding-left:6px;display:inline-block;cursor:default!important}.geMenubar a.geStatus:hover{background:0 0}.geMenubarMenu{border:1px solid #d5d5d5!important}.geToolbarContainer{background:#f5f5f5;border-bottom:1px solid #e0e0e0}.geSidebarContainer .geToolbarContainer{background:0 0;border-bottom:none}.geSidebarContainer button{text-overflow:ellipsis;overflow:hidden}.geToolbar{padding:1px 0 0 6px;border-top:1px solid #e0e0e0;-webkit-box-shadow:inset 0 1px 0 0 #fff;-moz-box-shadow:inset 0 1px 0 0 #fff;box-shadow:inset 0 1px 0 0 #fff}.geToolbarContainer .geSeparator{float:left;width:1px;height:34px;background:#e5e5e5;margin-left:6px;margin-right:6px;margin-top:-2px}.geToolbarContainer .geButton{float:left;width:20px;height:20px;padding:0 2px 4px 2px;margin:2px;border:1px solid transparent;cursor:pointer;opacity:.6}.geToolbarContainer .geButton:hover{border:1px solid gray;border-radius:2px;opacity:1;filter:none!important}.geToolbarContainer .geButton:active{border:1px solid #000}div.mxWindow .geButton{margin:-1px 2px 2px 2px;padding:1px 2px 2px 1px}.geToolbarContainer .geLabel{float:left;margin:2px;cursor:pointer;padding:3px 5px 3px 5px;border:1px solid transparent;opacity:.6}.geToolbarContainer .geLabel:hover{border:1px solid gray;border-radius:2px;opacity:.9}.geToolbarContainer .geLabel:active{border:1px solid #000;opacity:1;filter:none!important}.geToolbarContainer .mxDisabled:hover{border:1px solid transparent!important;opacity:.2!important}.geToolbarMenu{border:3px solid #e0e0e0!important;-webkit-box-shadow:none!important;-moz-box-shadow:none!important;box-shadow:none!important;filter:none!important}.geDiagramBackdrop{background-color:#ebebeb;border-style:solid;border-color:#e5e5e5;border-width:1px 0 0 1px}.geSidebarContainer{background:#fff;overflow:hidden;position:absolute;border-top:1px solid #e5e5e5;overflow:auto}.geSidebar{background:#f5f5f5;border-bottom:1px solid #e5e5e5;padding:5px;padding-bottom:12px;overflow:hidden}.geSidebarContainer .geTitle{display:block;font-size:9pt;border-bottom:1px solid #e5e5e5;font-weight:400;padding:6px 0 6px 14px;margin:0;cursor:default;background:#eee;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;line-height:1.4em}.geSidebarContainer .geTitle:hover{background:#e5e5e5}.geTitle img{opacity:.5}.geTitle img:hover{opacity:1}.geSidebar .geItem{display:inline-block;background-repeat:no-repeat;background-position:50% 50%;border:1px solid transparent;border-radius:2px;cursor:move}.geSidebar .geItem:hover{border:1px solid gray!important}.geItem{vertical-align:top;display:inline-block}.geSidebarTooltip{position:absolute;background:#fff;overflow:hidden;border:1px solid gray;border-radius:8px;-webkit-box-shadow:0 0 2px 2px #d5d5d5;-moz-box-shadow:0 0 2px 2px #d5d5d5;box-shadow:0 0 2px 2px #d5d5d5}.geFooterContainer{background:#e5e5e5;border-top:1px solid silver}.geFooterContainer a{font-size:14px;color:#235695;font-weight:700;text-decoration:none}.geFooterContainer table{border-collapse:collapse;margin:0 auto}.geFooterContainer td{border-left:1px solid silver;border-right:1px solid silver}.geFooterContainer td:hover{background-color:#b3b3b3}.geFooterContainer a{display:block;box-sizing:border-box;width:100%;height:100%;padding:11px 42px 11px 42px;white-space:nowrap}.geHsplit{cursor:col-resize;background-color:#e5e5e5;background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAQAAAAHBAMAAADdS/HjAAAAGFBMVEUzMzP///9tbW1QUFCKiopBQUF8fHxfX1/IXlmXAAAAHUlEQVQImWMQEGAQFWUQFmYQF2cQEmIQE2MQEQEACy4BF67hpEwAAAAASUVORK5CYII=);background-repeat:no-repeat;background-position:center center}.geVsplit{font-size:1pt;cursor:row-resize;background-color:#e5e5e5;background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAcAAAAEBAMAAACw6DhOAAAAGFBMVEUzMzP///9tbW1QUFCKiopBQUF8fHxfX1/IXlmXAAAAFElEQVQImWNgNVdzYBAUFBRggLMAEzYBy29kEPgAAAAASUVORK5CYII=);background-repeat:no-repeat;background-position:center center}.geHsplit:hover,.geVsplit:hover{background-color:#d5d5d5}.geDialog{position:absolute;background:#fff;overflow:hidden;padding:30px;border:1px solid #acacac;-webkit-box-shadow:0 0 2px 2px #d5d5d5;-moz-box-shadow:0 0 2px 2px #d5d5d5;box-shadow:0 0 2px 2px #d5d5d5;z-index:2}.geDialogClose{position:absolute;width:9px;height:9px;opacity:.5;cursor:pointer}.geDialogClose:hover{opacity:1}.geDialogTitle{box-sizing:border-box;white-space:nowrap;background:#e5e5e5;border-bottom:1px solid silver;font-size:15px;font-weight:700;text-align:center;color:#235695}.geDialogFooter{background:#f5f5f5;white-space:nowrap;text-align:right;box-sizing:border-box;border-top:1px solid #e5e5e5;color:#a9a9a9}.geSprite{background:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABUAAAk/CAYAAACauMYVAAAABGdBTUEAALGPC/xhBQAAACBjSFJNAAB6JgAAgIQAAPoAAACA6AAAdTAAAOpgAAA6mAAAF3CculE8AAAACXBIWXMAAAsTAAALEwEAmpwYAAABWWlUWHRYTUw6Y29tLmFkb2JlLnhtcAAAAAAAPHg6eG1wbWV0YSB4bWxuczp4PSJhZG9iZTpuczptZXRhLyIgeDp4bXB0az0iWE1QIENvcmUgNS40LjAiPgogICA8cmRmOlJERiB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiPgogICAgICA8cmRmOkRlc2NyaXB0aW9uIHJkZjphYm91dD0iIgogICAgICAgICAgICB4bWxuczp0aWZmPSJodHRwOi8vbnMuYWRvYmUuY29tL3RpZmYvMS4wLyI+CiAgICAgICAgIDx0aWZmOk9yaWVudGF0aW9uPjE8L3RpZmY6T3JpZW50YXRpb24+CiAgICAgIDwvcmRmOkRlc2NyaXB0aW9uPgogICA8L3JkZjpSREY+CjwveDp4bXBtZXRhPgpMwidZAAAWn0lEQVR4Ae2dW4gdxdbHO0aJYjzxTtR4EhSDSNB84kPEQOL9CB/Ex4igg8iAGCSgiIIQH1SOqJAnn4N4wBdvYBRBcYTIp0+OF0SDYoJRgyAmeA1e5lv/PrM6q6urqqu7a2/3ZP4NPVVdtda/Vv2qZ9Nrd++9i2IE2xJoHn/88XOq/ccff5RtepxSuv7HqxPE0GkNtC+lVH/YjiTSKoi+EaqA9T9OG3OW4xNdu3btHPZY9DGbRqRtYhiozaYhunfvXu95aoVCNjqzhqh2uGWbkLVPFrWRWgFfvSFqnW3dOtt2W7c2Zd2evI3OhAbr34g0wb/VZOGIjuRVagG+nrYuKQ1IgARIgARIgARIgARIoEbAm93BwmYb1mP58uXFoUOHgn6wTUok8K4Ddgj+9NNPxamnnhpNhpNENdL169eXVQj32jB93VUAEaJNxKORBtmEmGIAoNCBfGXS9C1TiLRF6huobNOp24g3b97cQBIU8HX4RJVp2+oH2dgI7aAp56m1Z50ESIAESIAESIAESIAESGCREtBMJXX6SclZqpjaUVRJ5CuPEabI623ii3rvXN/SVeFsgioO4SwRquDElNU7E3ZB+kTX9g5QH036kAAJkAAJkAAJkAAJkMDEEqiupBFh36vpsVxF1yJVnqkRjyVCDaoWaWqE6qzlWCKuRaojp0Y8lgg1qFqkqRGqs5ZjibgWqY6cGvFYItSgWJIACZAACZAACZAACZDAJBHwXknbAENX1bGr6IZoSMQO5KvbQUZyi9M36OC2xvRVMRWDnbb6jmT6FFW8+UoyzcdSlUbCVMVZkgAJkAAJkAAJkAAJTCqB1Pypc/yu8Jo1a6KfhE0eAMI7duyYS/04aJIwBCGsUeL507bPmbYKQwCCFsUgYQjaJ2MHC7uCvim1RVxLzSHY5YPUq1atKvbt21fTQBC9sxN8ltcnCNHGKCnR2g8HP/TQQ+U5/Mgjj1RajUjxiXc4hTYrCJtff/213K19pW4bUfdF7Aree++9tf+0p556qtRrRKribsSuoNr1KhEx9pAzonUjDtmynQRIgARIgARIgARIgASOGQLlNbrN6Hy3LNtm6/ovwC+qtVNom66v3/p7Ux4YuLsrZLNst686tiO5grZPHdCmbzCgzdp4I1VHX6kDou/AgQOFFW7Y25HU0ZauA/ps0mb9O0eq4uvWrWv9OrgaE3XsUmaJNDZgdPp29JiI2xcVdY1Tj72iOLE1SpRJJ7pvRBXRPpwuaLOnjfb5Ste/tPE1Rk9sR9n68/XUgcNDEiABEiABEiABEjgmCTTunMkl4Z65ublVbbM97rjj3v3999+3+uyqLFo7Ifjqq6+ulq1YsqQxJr6huXj77beLe+65Z5/6uGVDFAZysVtcdNFFXlGJrpDfPSp13nrrLczouauvvnpj2TD/x3vNjz5flOooUy8uvPDCDV9//fX/yb3ADc8///we7UMZFEXnn3/+WbzwwgvF559/XiBCbCeccEJx/fXXF4899tiyxx9/fNXpp5++VO4K19bAO/3SW/4goquuuqp4+OGHi08//bQ8vuyyy4rbb7+9ePTRR4svvvjioAyy9a+//jqiPt5y6dKl+z777DNZr6Pb+++/P3fHHXfMSd/cGWecMXf55Zcjc3lfBDZ4RdxGnyjkZ2Zm5q655ppSGOIiOuP66nGUKYx++eWX4pVXXilXfGpqqnjppZcKuZNbyDjrzzvvvJk33njjORXTMioqrIoPPvigPDdxmm3cuLG49tpri5tvvrm47bbbVkj/pp9//vlfL7744nYVRBldKBgsW7asEIbFWWedVZx00kkFBvrtt9/QVZ520r/ihx9+gOjOslH+REWx+hC0G04zWcjimWee2X/OOefsWrFiRfHtt98esjZeUTji39H3D4B29EvfPnkP5eErr7zS6pV1r+h7771XfPXVV0HRjz76qCFkGxqvGHIyPycru9Ia+eoS6az8l9UWyGfHNhIgARIgARIgARIgARLoQKBxfer6fvLJJ899/PHHZb506aWXvnvxxRdvdW3c48aV9O7du/eIUZUW3nXXXStvvPHGZbhUf/rpp1dK/z4VQUp5ySWXHJAHhuMJ75133rlKcqfVJ5988mpJJFYfPnx42ZNPPlk88cQTuPu4DG3og83999+/WjKTKgAdrJFHfffdd8Xs7OxWcd4sD//Ofvnll4UIlzvqDz74YCGPkIvJ7Nbvv/++TCpULFgijZTO1TK1nVI/hJTR3edTyNXnn3/+nIjDvrY1mGqvJAm7pP6iHjvlYee4dhgUffPNN9dLzrQG1sjyZJu56aabZlCZ31ZrxS2DoiI0Jcab4IDMT7bNr7/++gwqSMxuuOGGt1D3bY2F8hnNt22S/Goq0l91BSOtLI5W3paId0mEu+abuk8fGR1OeIlOme4Spip4dChPLRjpdddd1ztF7MLUE5O/aSSioek3/p89MZU2YO5uDVFZnAPyb/kf19B3LIL7pf2Ar49tJEACJEACJEACJEAC/Qh4c1O5sfWhXHz9MyK5Rx51/N9Qf+OqD4abNm36hxQrQk5XXHHFvyQz/PDss8++1GfjFf3xxx+RHm595513tp944ollBq3Octfs3YMHD+6US87/iPAeEd6ofVp6Rec7D956662N+6FHjhz5Hxl055lnnrlUbnduEFR75F5qTTgmWj5d/OyzzxYbNtSCXSaDrsSTx7fccstSYd+46o6KIuKVK1cWuIPeZWsVhZjcyC6++eYbPExcyLQLyZ6jYySJ4pamvFlQ3vPDImKXvCAo3CnlQSaCtzgQKcrQ1kkU2TQ+y3vKKafkiRR5KkSBAnxjWzDSBx54YEpuYJfLftpppxUXXHBBsWbNmkLOzZhe2ecVlYh2Crf9El352iBPG+BxhlIY4ueee24lLJxXvPbaaw9UDVLxrr68f7Lz7rvvxim0Wd548Z6k8q9a6sg7GKdKBaL/Lhvkj1dUOyXQ2fvuu08PG6Xc4C5PM7Hr+ZvkDUk2kAAJkAAJkAAJkAAJkAAJLFYC3vdQXBiS+jRvj4mR3AFO8nf1quPt27d3+qho5RirINpQxK6fN410jTZv3lxOH19Rlm3rEiUGbY1UMucySjzNnW3rGmVrpPqh4G3btnUK0nuehVZ58HnZKTQakwAJkAAJkAAJkAAJkAAJZCBQu+YPXeu3jTOWXKBXpGOJzMXTK1JXZCyR94p0LJG5OHpF6oqMJfJekY4lMhcHj0mABEiABEiABEiABEhgnkDXe1Ktd876kKVomJr9ZmFYYcF6f7uwHUaFswmqOISzRKiCE1NWGV/f9090JsdwFph99bOfp1ZQX/6yna8qqCvdVvKlr40Q+0mABEiABEiABEiABBY8gSqP8s2kLbcK5U4juZL2BTi4rTH9timHRrQoBk3fCtnBBomGZjVI1EZn69EPBsMwNMVQlPAZSaQQDm6xaGJ9I4m0lWksouAU2UECJEACJEACJEACJEACJEACWQnITzuVP5mLDEX3Qff4VCRUWnHYtM4GRvpZaDXGJ7j1B391IHusdt5SPwzs7ZRGDKaitgzZF4gm2Gk65JeuGsKmu55F4wemUjb50a+oWeM9lKi1dAKP/Fhawyz0vkDDkA0kQAIkQAIkQAIkQAIkQAILnkAtkUBe1GdGY0kiapG6UaZGPv5IUyNzZzT+SN0IUiMff6SpkbkzGn+kbgSpkY8lUjc4HpMACZAACZAACZAACZAACaQQaOSmqdf5Vty95h/vQ63u6DYyrYdmlSXS6enpOew6WBZRFdOSokoiXxl8Tjp0uqQMPZKFakRqT3p77qVEqDYjiVTFWZIACZAACZAACZAACZDARBKQa/0P5XeLD0lwbT8Z9E/Ywd6dSONKWn5XV38qO/yLyP9VQQa+Yt6+ptsQrfX2PFjkoo08SjHKyk7JzwtfrceeEovkaY5/2nhKnFb7vNAu+3ZfH9qCkaJTfjB9lxSHZcdT2ftl3yc7tk2YCSq+rXX15eTeKQIzUk75BHxtraI+p7a2hqgszgFx+lMd5Ri/Nr1fSvzrJm0NppJFb5Sp7pGFwI+aHZFfud4KJeFrBfEb8mCMH6FGENxIgARIgARIgARIgARIYHERQNJabnL17E+K1KCltPexWkwXWjc+WWw/XTw4foiBN/YswlYwqzCmqoKp025kfKmOMTuKxuj061s4TPvNj14kQAIkQAIkQAIkQAIkQAIBAqEsL9RuZRZOIsFI7bodra9ahdumRbFjx47qXSCta99R63qtegup3vzfI5w+vva2t4uiCwVnGxXqbYK+ILK0eacfmrY74t8WtRsIj0mABEiABEiABEiABEiABBYBAffWMb6lGd/dnTx1+63Xrpi+eWDLJGE4QBi7dcax+63Y+rXarcJWSOvuF4C7InZ2bl95rEJa4ru4vYZOozuLaMLb9l3cqu1+t3ctN0WEaqjl8uXLi0OHDtXstI8lCZAACZAACZAACZAACZAACTQIuFkfjhtGnoZg1uHLVNS/7Y6ZN49SwW3btpU3CiGCHcfYtF8HaS11yjaLW7t2bTVttEM0FUU5IBzcSKwojHw2NtoGUxXEdF0xOO7du3eJtbFiwbovClfcZ2MFGwu1bt26st8ytQ7arna2L1rXSFRAjXWRdPranlyqcKjstPp2VD29VFiFtF2Prc+g+tiFG6vfJfzZ2dklOAsk6i5utCUBEiABEiABEiABEiCBySGgl+DuNX9bhI2MTx0gpHW3nNws2kaqCVqndEf5WSG33mbT+H4pK+AmuuhDFm1tkuptUUCkzaaRR2l27Ca7GpG2q522t5YaiQqogy4S+rWtU6nCobLT6tuRQ/9R2t5b2A5i62MXbqy+jaatziy6jRD7SYAESIAESIAESOBYJtA9ffHQsDkAUsxoHmX9raNt13opNp9gJIvCOZToarKhAySXbZFaoUGX51bI1ilqaeSpk2kejlZlkTMtX6Xsi0Xolcgya6tXL336emgHaHMO9Zev/FYoR6ShwdhOAiRAAiRAAiRAAscYgZFk0dmupO2FXTZRe+WYbTWtaLZIbXQUtTTy1KvsxK5eHmlRySnK1c+2LJXQSJiOJDetIrWvh9U8elYq0Zznac9Y6EYCJEACJEACJEACC43AIsqid+/eXT41m+2qEYIQU+HBa0/BwQgLMiTDHgSynjZ4UdA924uDvmxp2WOSNRdm0TUcPCABEiABEiABEiCBTgQmK4vWa1m9Uhx870UF9VpWr211gE6s1BjOKqhtg0qNcpCI68woXSL9jnVxsq44F6ffYvi8Jo8lItIdEWc5hSAIMRVGOeScHMldcwTIjQRIgARIgARIgAQWAYHJyqJd4DaLru6duEZdj/VytKtf1N6KZovUjkhRSyNPnUzzcLQqi5wpPxdtTwbWSYAESIAESIAESOBYJTCSLLr6vGlXajYXhS+yaG0bdHkOIU3JVbBrcDX7mMigSGujmAOKGhiZqsHzNLa6vcceIsrV74096DgSpiPJoqtI7UvYkNMJTHgvOnhmsIMESIAESIAESIAESIAESCBEoPYW0tCsRDOc0GBsJwESIAESIAESIAESIAESIAESmFQCyAiHfGYyOC8Ij0RchbOLW2FXfLKy6FikwQWJdVjBLGeDCmYRQ+TugsRmwz4SIAESIAESIAESIAESIAESGD2B7GmPhnxsCE9WFj0yttkXa/IFlSVLEiABEiABEiABEiABEiABEuhEIHu6g9FVFGXWu5LZha2g1m3Ek5NFa3S2tJF2WnU1tmKoDxYc+epniVCnz5IESIAESIAESIAESIAESIAEJoMAUh2boA1OfVxBFbfCtYQ3hQNEQnb6Eebat4vFHEJCvvaRRFp9v5RvRF/byy+/7GsuQu1eY1+ju1h2kXz2bCMBEiABEiABEiABEiABEiCBBUYglh12zvgwdyuo+ahl0lnUCqqQK9xJ1CfoE66JxpzUOVZqxDXRmAP6YoOqIOw6iYaErWAvUVfYFUR/7y2GorcoHUmABEiABEiABEiABEiABEjg7yNg70IOvgNpxZA/2d0n3ppGpiZhNvOriaYKhBZAhWuiPuPUgVQQGq33omEcu8+MPivoCyzaZhfMt0BRZ3aSAAmQAAmQAAmQAAmQAAmQwGQTQKI2klQHwiMRV+Hs4iqoA1gstYQXBl1WVXNS9dPjLho121ikNcPUA52yCqf6Be1U0DIMGqd0ZIssZTDakAAJkAAJkAAJkAAJkAAJkEArgexpD0ZU0awpEMSseJZETUVDwr2zaJsx6yC2DQN22lQETqhjH4xARbMJ2uiyRKiMskaooixJgARIgARIgARIgARIgARIYDIIILvTtMeXS7U+fexOA4L6xDFyUew4HpRGIjJ3IBzb9pF8u5hv0GibjcgahtqtTbAOdtPT0zUEOB7EFKNBAJHpPlgwOAV2kAAJkAAJkAAJkAAJkAAJkMDfQmBQMuaLGIKaS/n6O7epIByzCFtBjaZVGE6xPZQutgprBL6yV6Q+IbfNCg+KMCSMAdy+QcfZBQdFQ2cSIAESIAESIAESIAESIAESyEIAqU5bulN7Tjo2qgrpt2Jt2bKlNO/1bDRutELQl+xqGunenK0Fp1NzS5+gOiYJq7GWfSL9e5hqxFoqGj1mSQIkQAIkQAIkQAIkQAIkQAILmIBmdFmmoGLImwYLWrHBgq7YEMEqNx0iAjzevD9npI01cMUbBkMarPgQHa+vins72UgCJEACJEACJEACJEACJEACIyWgGcnQLLAKcnEJji+LrgDnqGRfJA1q4Qlr5CxJgARIgARIgARIgARIgARIIIlA9rTHCmZJzV3BwaI+wb6i48uiEaHuSSsbM/IhiNkn97nCyY5thla4zZb9JEACJEACJEACJEACJEACJLBACNhUBxkfjgeF7gpqGtlHOCnh9T5YHZlCkmjEv+qyA9e++LuycCrWwenyHlbfe66fIXetQu2uXfDYXaw+ixQUZwcJkAAJkAAJkAAJkAAJkAAJTA4B5KZ9o6nSSCtgBbtme9BpiFpBHaircE3UJ9hHuBKNCapwrLSzqUThEBO2TjFx9NVE0eAT7iLoFXWFuwrCP7j5Ig4as4MESIAESIAESIAESIAESIAEFhYBe2dy8F1JK4Zcyu6p4rU0MjUha8sCK9FUwdAi2oEqURinClsB3yDVvWh0wjh27xl9bYK+Qao2u2CpC1Q5s0ICJEACJEACJEACJEACJEACC4OApj5ZolWx1CwwOqgVGyxoxbQeHT3SWSW8GpXmnnoc8a11qV+tUaODmNZrBkMOVBDiXaNtHdeKtxp3NVDxrn60JwESIAESIAESIAESIAESIIHhBDQjyZZHWcEsolYQ8x0s6goOEQ1m0V1FW7NoCGIbPH2IuAiyiLrC2URdYRxzIwESIAESIAESIAESIAESIIFjgIBNzpBD4bjPtKqnjyGgTxcjz8SO477CZTCh7C7UHptB0heBpQjbLDpJ1DrEImz0gd309HRtYXA8iClGgQCmqvtgwUbobCABEiABEiABEiABEiABEiCBiSCQkuV1ChSCmlN1cgwZqyD6swhbQR10kLBP0BWGTWhX20bpEx4UqY5ghbMIusIYQNuylNkFs0RFERIgARIgARIgARIgARIgARLIRgBpT5/Up3pO2kaiQvqtWFu2bCm7e92Uxc1XCCJ9tIOgrimle8PWtasdxwTVUIUViy3VplHGhFUwJdLRM3VD1+m57TwmgTCB/wdigVA7yGo0NAAAAABJRU5ErkJggg==) no-repeat top left;width:21px;height:21px}.geSprite-actualsize{background-position:0 0}.geSprite-bold{background-position:0 -46px}.geSprite-bottom{background-position:0 -92px}.geSprite-center{background-position:0 -138px}.geSprite-delete{background-position:0 -184px}.geSprite-fillcolor{background-position:0 -230px}.geSprite-fit{background-position:0 -276px}.geSprite-fontcolor{background-position:0 -322px}.geSprite-gradientcolor{background-position:0 -368px}.geSprite-image{background-position:0 -414px}.geSprite-italic{background-position:0 -460px}.geSprite-left{background-position:0 -506px}.geSprite-middle{background-position:0 -552px}.geSprite-print{background-position:0 -598px}.geSprite-redo{background-position:0 -644px}.geSprite-right{background-position:0 -690px}.geSprite-shadow{background-position:0 -736px}.geSprite-strokecolor{background-position:0 -782px}.geSprite-top{background-position:0 -828px}.geSprite-underline{background-position:0 -874px}.geSprite-undo{background-position:0 -920px}.geSprite-zoomin{background-position:0 -966px}.geSprite-zoomout{background-position:0 -1012px}.geSprite-helbow{background-position:0 -1058px}.geSprite-velbow{background-position:0 -1104px}.geSprite-straight{background-position:0 -1150px}.geSprite-entity{background-position:0 -1196px}.geSprite-segment{background-position:0 -1242px}.geSprite-orthogonal{background-position:0 -1288px}.geSprite-noarrow{background-position:0 -1334px}.geSprite-endclassic{background-position:0 -1380px}.geSprite-endopen{background-position:0 -1426px}.geSprite-endblock{background-position:0 -1472px}.geSprite-endoval{background-position:0 -1518px}.geSprite-enddiamond{background-position:0 -1564px}.geSprite-endthindiamond{background-position:0 -1610px}.geSprite-endclassictrans{background-position:0 -1656px}.geSprite-endblocktrans{background-position:0 -1702px}.geSprite-endovaltrans{background-position:0 -1748px}.geSprite-enddiamondtrans{background-position:0 -1794px}.geSprite-endthindiamondtrans{background-position:0 -1840px}.geSprite-startclassic{background-position:0 -1886px}.geSprite-startopen{background-position:0 -1932px}.geSprite-startblock{background-position:0 -1978px}.geSprite-startoval{background-position:0 -2024px}.geSprite-startdiamond{background-position:0 -2070px}.geSprite-startthindiamond{background-position:0 -2116px}.geSprite-startclassictrans{background-position:0 -2162px}.geSprite-startblocktrans{background-position:0 -2208px}.geSprite-startovaltrans{background-position:0 -2254px}.geSprite-startdiamondtrans{background-position:0 -2300px}.geSprite-startthindiamondtrans{background-position:0 -2346px}.geSprite-copy{background-position:0 -410px}.geSprite-cut{background-position:0 -320px}.geSprite-paste{background-position:0 -367px}.geSprite-duplicate{background-position:0 -736px}.geSprite-save{background-position:0 -782px}.geSprite-publish{background-position:0 -92px}.geBaseButton{padding:10px;border-radius:6px;border:1px solid silver;cursor:pointer;background-color:#ececec;background-image:linear-gradient(#ececec 0,#fcfcfc 100%)}.geBaseButton:hover{background:#ececec}.geBigButton{color:#fff;border:none;padding:10px;font-size:14pt;white-space:nowrap;border-radius:6px;text-shadow:#295989 0 1px 0;background-color:#428bca;background-image:linear-gradient(#4687ce 0,#3068a2 100%);-webkit-box-shadow:rgba(255,255,255,.0980392) 0 1px 0 0 inset,rgba(0,0,0,.2) 0 1px 1px 0;-moz-box-shadow:rgba(255,255,255,.0980392) 0 1px 0 0 inset,rgba(0,0,0,.2) 0 1px 1px 0;box-shadow:rgba(255,255,255,.0980392) 0 1px 0 0 inset,rgba(0,0,0,.2) 0 1px 1px 0}.geBigButton:hover{background-color:#2d6ca2;background-image:linear-gradient(#5a94d3 0,#3673b5 100%)}.geBigButton:active{background-color:#3673b5;background-image:none}@media print{div.geNoPrint{display:none!important}}html div.mxRubberband{border-color:#00d;background:#9cf}td.mxPopupMenuIcon div{width:16px;height:16px}html div.mxPopupMenu{-webkit-box-shadow:2px 2px 3px #d5d5d5;-moz-box-shadow:2px 2px 3px #d5d5d5;box-shadow:2px 2px 3px #d5d5d5;background:#fff;position:absolute;border:3px solid #e7e7e7;padding:3px}html table.mxPopupMenu{border-collapse:collapse;margin:0}html td.mxPopupMenuItem{padding:7px 30px 7px 30px;font-family:Helvetica Neue,Helvetica,Arial Unicode MS,Arial;font-size:10pt}html td.mxPopupMenuIcon{background-color:#fff;padding:0}td.mxPopupMenuIcon .geIcon{padding:2px;padding-bottom:4px;margin:2px;border:1px solid transparent;opacity:.5}td.mxPopupMenuIcon .geIcon:hover{border:1px solid gray;border-radius:2px;opacity:1}html tr.mxPopupMenuItemHover{background-color:#eee;color:#000}table.mxPopupMenu hr{color:#ccc;background-color:#ccc;border:none;height:1px}table.mxPopupMenu tr{font-size:4pt}html td.mxWindowTitle{font-family:Helvetica Neue,Helvetica,Arial Unicode MS,Arial;text-align:left;font-size:12px;color:#707070;padding:4px}div.mxTooltip{-webkit-box-shadow:3px 3px 12px silver;-moz-box-shadow:3px 3px 12px silver;box-shadow:3px 3px 12px silver;background:#ffc;border-style:solid;border-width:1px;border-color:#000;font-family:Arial;font-size:8pt;position:absolute;cursor:default;padding:4px;color:#000}body{font-family:Arial Unicode MS,Arial,Helvetica;font-size:10pt}
\ No newline at end of file
index 7cf4f49..81f0b0c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0x3ee8=['urlForward','bot','script','Allowed\x20values:\x20contactManager,\x20integration,\x20motionbar,\x20jscripty,\x20urlForward,\x20browser,\x20bot,\x20script','STRING','jscripty[ProjectId],\x20browser[type(0=Popup,1=CTI\x20URL)],\x20contactManager[ListId],\x20urlForward[type(GET,POST,PUT,DELETE)],\x20script[info],\x20integration[intName(desk,dynamics365,freshdesk,freshsales,salesforce,sugarcrm,vtiger,zendesk,zoho)],\x20motionbar[type(0=Popup,1=CTI\x20URL,2=WinApp)]','contactManager[autoCreate(0=No,1=Yes)],\x20urlForward[URL],\x20script[type],\x20integration[AccountId],\x20motionbar[TemplateId,URL,WinAppPath],\x20browser[TemplateId,URL]','browser[location(0=NewTab,1=NewWindow,2=MotionTab)],\x20contactManager[autoCreateField]','urlForward[timeout],\x20browser[windowWidth],\x20contactManager[ignoreDialerContactId]','urlForward[headers],\x20browser[wsindowHeight]','TEXT','urlForward[body]','VIRTUAL','getDataValue','action','contactManager','integration','motionbar','jscripty'];(function(_0x1f2d2a,_0x345433){var _0x5ac68d=function(_0x113c03){while(--_0x113c03){_0x1f2d2a['push'](_0x1f2d2a['shift']());}};_0x5ac68d(++_0x345433);}(_0x3ee8,0x188));var _0x83ee=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x3ee8[_0x3dd15e];return _0x231fd0;};'use strict';var Sequelize=require('sequelize');module['exports']={'name':{'type':Sequelize[_0x83ee('0x0')],'get':function(_0x57c67d){return this[_0x83ee('0x1')](_0x83ee('0x2'));}},'action':{'type':Sequelize['STRING'],'allowNull':![],'validate':{'isIn':{'args':[[_0x83ee('0x3'),_0x83ee('0x4'),_0x83ee('0x5'),_0x83ee('0x6'),_0x83ee('0x7'),'browser',_0x83ee('0x8'),_0x83ee('0x9')]],'msg':_0x83ee('0xa')}},'comment':_0x83ee('0xa')},'data1':{'type':Sequelize[_0x83ee('0xb')](0x1000),'comment':_0x83ee('0xc')},'data2':{'type':Sequelize['STRING'](0x1000),'comment':_0x83ee('0xd')},'data3':{'type':Sequelize['STRING'](0x1000),'comment':'contactManager[searchFields],\x20script[script],\x20integration[ConfigurationId],\x20motionbar[NULL,eventVariables(0=No,1=Yes),WinAppArguments],\x20browser[NULL,eventVariables(0=No,1=Yes)]'},'data4':{'type':Sequelize['STRING'](0x1000),'comments':_0x83ee('0xe')},'data5':{'type':Sequelize[_0x83ee('0xb')](0x1000),'comments':_0x83ee('0xf')},'data6':{'type':Sequelize['STRING'],'comments':_0x83ee('0x10')},'data7':{'type':Sequelize[_0x83ee('0x11')],'comments':_0x83ee('0x12')}};
\ No newline at end of file
index 927d40e..af380af 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0xa5ab=['then','destroy','sendStatus','error','stack','name','send','body','Action','find','params','catch','eml-format','rimraf','zip-dir','fast-json-patch','moment','bluebird','mustache','sox','to-csv','ejs','lodash','squel','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/parsers/qs','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','status','end','json','offset','undefined','limit','count','set','Content-Range','reject','save','update'];(function(_0x5c505a,_0x2ba053){var _0x392b30=function(_0x856d6c){while(--_0x856d6c){_0x5c505a['push'](_0x5c505a['shift']());}};_0x392b30(++_0x2ba053);}(_0xa5ab,0x194));var _0xba5a=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0xa5ab[_0x3dd15e];return _0x231fd0;};'use strict';var emlformat=require(_0xba5a('0x0'));var rimraf=require(_0xba5a('0x1'));var zipdir=require(_0xba5a('0x2'));var jsonpatch=require(_0xba5a('0x3'));var rp=require('request-promise');var moment=require(_0xba5a('0x4'));var BPromise=require(_0xba5a('0x5'));var Mustache=require(_0xba5a('0x6'));var util=require('util');var path=require('path');var sox=require(_0xba5a('0x7'));var csv=require(_0xba5a('0x8'));var ejs=require(_0xba5a('0x9'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0xba5a('0xa'));var squel=require(_0xba5a('0xb'));var crypto=require(_0xba5a('0xc'));var jsforce=require(_0xba5a('0xd'));var deskjs=require(_0xba5a('0xe'));var toCsv=require(_0xba5a('0x8'));var querystring=require(_0xba5a('0xf'));var Papa=require(_0xba5a('0x10'));var Redis=require(_0xba5a('0x11'));var authService=require('../../components/auth/service');var qs=require(_0xba5a('0x12'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require('../../config/license/hardware');var logger=require(_0xba5a('0x13'))(_0xba5a('0x14'));var utils=require(_0xba5a('0x15'));var config=require(_0xba5a('0x16'));var licenseUtil=require(_0xba5a('0x17'));var db=require(_0xba5a('0x18'))['db'];function respondWithStatusCode(_0x28124e,_0xfafaef){_0xfafaef=_0xfafaef||0xcc;return function(_0x9ee72a){if(_0x9ee72a){return _0x28124e['sendStatus'](_0xfafaef);}return _0x28124e[_0xba5a('0x19')](_0xfafaef)[_0xba5a('0x1a')]();};}function respondWithResult(_0x1c3899,_0x2ca8a6){_0x2ca8a6=_0x2ca8a6||0xc8;return function(_0x271746){if(_0x271746){return _0x1c3899[_0xba5a('0x19')](_0x2ca8a6)[_0xba5a('0x1b')](_0x271746);}};}function respondWithFilteredResult(_0x2e136,_0x1a6081){return function(_0x37bc58){if(_0x37bc58){var _0x381765=typeof _0x1a6081[_0xba5a('0x1c')]===_0xba5a('0x1d')&&typeof _0x1a6081[_0xba5a('0x1e')]==='undefined';var _0x2fec1b=_0x37bc58[_0xba5a('0x1f')];var _0x2807e2=_0x381765?0x0:_0x1a6081['offset'];var _0x85f905=_0x381765?_0x37bc58[_0xba5a('0x1f')]:_0x1a6081[_0xba5a('0x1c')]+_0x1a6081[_0xba5a('0x1e')];var _0x11c28c;if(_0x85f905>=_0x2fec1b){_0x85f905=_0x2fec1b;_0x11c28c=0xc8;}else{_0x11c28c=0xce;}_0x2e136[_0xba5a('0x19')](_0x11c28c);return _0x2e136[_0xba5a('0x20')](_0xba5a('0x21'),_0x2807e2+'-'+_0x85f905+'/'+_0x2fec1b)[_0xba5a('0x1b')](_0x37bc58);}return null;};}function patchUpdates(_0x5cab5c){return function(_0x13c2c5){try{jsonpatch['apply'](_0x13c2c5,_0x5cab5c,!![]);}catch(_0x44d78a){return BPromise[_0xba5a('0x22')](_0x44d78a);}return _0x13c2c5[_0xba5a('0x23')]();};}function saveUpdates(_0x3d6ed0,_0x2ab58e){return function(_0x581e6b){if(_0x581e6b){return _0x581e6b[_0xba5a('0x24')](_0x3d6ed0)[_0xba5a('0x25')](function(_0x168bdf){return _0x168bdf;});}return null;};}function removeEntity(_0x1b4176,_0x9169c4){return function(_0x43d832){if(_0x43d832){return _0x43d832[_0xba5a('0x26')]()[_0xba5a('0x25')](function(){_0x1b4176[_0xba5a('0x19')](0xcc)[_0xba5a('0x1a')]();});}};}function handleEntityNotFound(_0x4ecd1e,_0x4d66d7){return function(_0x1bd540){if(!_0x1bd540){_0x4ecd1e[_0xba5a('0x27')](0x194);}return _0x1bd540;};}function handleError(_0x422e4e,_0x5916b4){_0x5916b4=_0x5916b4||0x1f4;return function(_0x10473f){logger[_0xba5a('0x28')](_0x10473f[_0xba5a('0x29')]);if(_0x10473f[_0xba5a('0x2a')]){delete _0x10473f[_0xba5a('0x2a')];}_0x422e4e['status'](_0x5916b4)[_0xba5a('0x2b')](_0x10473f);};}exports[_0xba5a('0x24')]=function(_0x1a639c,_0x4e4f23){if(_0x1a639c['body']['id']){delete _0x1a639c[_0xba5a('0x2c')]['id'];}return db[_0xba5a('0x2d')][_0xba5a('0x2e')]({'where':{'id':_0x1a639c[_0xba5a('0x2f')]['id']}})['then'](handleEntityNotFound(_0x4e4f23,null))[_0xba5a('0x25')](saveUpdates(_0x1a639c[_0xba5a('0x2c')],null))[_0xba5a('0x25')](respondWithResult(_0x4e4f23,null))[_0xba5a('0x30')](handleError(_0x4e4f23,null));};exports[_0xba5a('0x26')]=function(_0x4f4a2b,_0xbd86f5){return db[_0xba5a('0x2d')]['find']({'where':{'id':_0x4f4a2b[_0xba5a('0x2f')]['id']}})[_0xba5a('0x25')](handleEntityNotFound(_0xbd86f5,null))[_0xba5a('0x25')](removeEntity(_0xbd86f5,null))[_0xba5a('0x30')](handleError(_0xbd86f5,null));};
\ No newline at end of file
index d6ce013..7f5ac69 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0x6d96=['./action.attributes','exports','define','Action','lodash','util','../../config/logger','api','moment','bluebird','request-promise','rimraf','../../config/environment'];(function(_0x57b54c,_0x54ce0d){var _0x59cc19=function(_0xa33bc6){while(--_0xa33bc6){_0x57b54c['push'](_0x57b54c['shift']());}};_0x59cc19(++_0x54ce0d);}(_0x6d96,0x13c));var _0x66d9=function(_0x59622b,_0x26e364){_0x59622b=_0x59622b-0x0;var _0x453424=_0x6d96[_0x59622b];return _0x453424;};'use strict';var _=require(_0x66d9('0x0'));var util=require(_0x66d9('0x1'));var logger=require(_0x66d9('0x2'))(_0x66d9('0x3'));var moment=require(_0x66d9('0x4'));var BPromise=require(_0x66d9('0x5'));var rp=require(_0x66d9('0x6'));var fs=require('fs');var path=require('path');var rimraf=require(_0x66d9('0x7'));var config=require(_0x66d9('0x8'));var attributes=require(_0x66d9('0x9'));module[_0x66d9('0xa')]=function(_0x10d41e,_0x17eafa){return _0x10d41e[_0x66d9('0xb')](_0x66d9('0xc'),attributes,{'tableName':'tools_actions','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 60e9494..d6a4dfc 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc4aa=['moment','bluebird','randomstring','ioredis','rpc','../../config/environment','jayson/promise','client','http','request','then','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
+var _0x326f=['info','Action,\x20%s,\x20%s','request\x20sent','debug','error','code','message','result','catch','lodash','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client'];(function(_0x413903,_0x48fd91){var _0x2754f2=function(_0x3abdf9){while(--_0x3abdf9){_0x413903['push'](_0x413903['shift']());}};_0x2754f2(++_0x48fd91);}(_0x326f,0xd1));var _0xf326=function(_0x2c90dd,_0x5a1d3d){_0x2c90dd=_0x2c90dd-0x0;var _0x16925f=_0x326f[_0x2c90dd];return _0x16925f;};'use strict';var _=require(_0xf326('0x0'));var util=require('util');var moment=require('moment');var BPromise=require(_0xf326('0x1'));var rs=require(_0xf326('0x2'));var fs=require('fs');var Redis=require(_0xf326('0x3'));var db=require(_0xf326('0x4'))['db'];var utils=require(_0xf326('0x5'));var logger=require(_0xf326('0x6'))(_0xf326('0x7'));var config=require(_0xf326('0x8'));var jayson=require(_0xf326('0x9'));var client=jayson[_0xf326('0xa')]['http']({'port':0x232a});function respondWithRpcPromise(_0x3c254d,_0x3851eb,_0x165f95){return new BPromise(function(_0x1e7b8a,_0x515bfa){return client['request'](_0x3c254d,_0x165f95)['then'](function(_0x3bacf2){logger[_0xf326('0xb')](_0xf326('0xc'),_0x3851eb,_0xf326('0xd'));logger[_0xf326('0xe')]('Action,\x20%s,\x20%s,\x20%s',_0x3851eb,_0xf326('0xd'),JSON['stringify'](_0x3bacf2));if(_0x3bacf2[_0xf326('0xf')]){if(_0x3bacf2['error'][_0xf326('0x10')]===0x1f4){logger['error'](_0xf326('0xc'),_0x3851eb,_0x3bacf2[_0xf326('0xf')]['message']);return _0x515bfa(_0x3bacf2[_0xf326('0xf')][_0xf326('0x11')]);}logger[_0xf326('0xf')](_0xf326('0xc'),_0x3851eb,_0x3bacf2['error'][_0xf326('0x11')]);return _0x1e7b8a(_0x3bacf2['error']['message']);}else{logger[_0xf326('0xb')](_0xf326('0xc'),_0x3851eb,_0xf326('0xd'));_0x1e7b8a(_0x3bacf2[_0xf326('0x12')][_0xf326('0x11')]);}})[_0xf326('0x13')](function(_0x34128e){logger[_0xf326('0xf')]('Action,\x20%s,\x20%s',_0x3851eb,_0x34128e);_0x515bfa(_0x34128e);});});}
\ No newline at end of file
index 54d5f9b..95a3f49 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0xa8ef=['util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','put','/:id','delete','isAuthenticated','exports','multer'];(function(_0x3d8826,_0x2927da){var _0x227295=function(_0x21c270){while(--_0x21c270){_0x3d8826['push'](_0x3d8826['shift']());}};_0x227295(++_0x2927da);}(_0xa8ef,0xa7));var _0xfa8e=function(_0x28fea4,_0x2af470){_0x28fea4=_0x28fea4-0x0;var _0x466661=_0xa8ef[_0x28fea4];return _0x466661;};'use strict';var multer=require(_0xfa8e('0x0'));var util=require(_0xfa8e('0x1'));var path=require(_0xfa8e('0x2'));var timeout=require(_0xfa8e('0x3'));var express=require(_0xfa8e('0x4'));var router=express[_0xfa8e('0x5')]();var fs_extra=require(_0xfa8e('0x6'));var auth=require(_0xfa8e('0x7'));var interaction=require(_0xfa8e('0x8'));var config=require('../../config/environment');var controller=require('./action.controller');router[_0xfa8e('0x9')](_0xfa8e('0xa'),auth['isAuthenticated'](),controller['update']);router[_0xfa8e('0xb')]('/:id',auth[_0xfa8e('0xc')](),controller['destroy']);module[_0xfa8e('0xd')]=router;
\ No newline at end of file
index 0bebe81..bd8633b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0x5fc3=['sequelize','exports','STRING','TEXT'];(function(_0x408442,_0x54eba1){var _0x220591=function(_0x269b2f){while(--_0x269b2f){_0x408442['push'](_0x408442['shift']());}};_0x220591(++_0x54eba1);}(_0x5fc3,0xa8));var _0x35fc=function(_0x1b1a3b,_0x52a88a){_0x1b1a3b=_0x1b1a3b-0x0;var _0x385347=_0x5fc3[_0x1b1a3b];return _0x385347;};'use strict';var Sequelize=require(_0x35fc('0x0'));module[_0x35fc('0x1')]={'name':{'type':Sequelize['STRING'],'allowNull':![]},'description':{'type':Sequelize[_0x35fc('0x2')]},'parent':{'type':Sequelize[_0x35fc('0x2')]},'table':{'type':Sequelize[_0x35fc('0x2')]},'conditions':{'type':Sequelize[_0x35fc('0x3')]},'joins':{'type':Sequelize[_0x35fc('0x3')]}};
\ No newline at end of file
index eebd6bb..7af1bcc 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0xe8b1=['model','fields','length','hasOwnProperty','nolimit','order','sort','where','filters','pick','filter','merge','type','VIRTUAL','options','includeAll','include','findAll','rows','catch','show','params','find','create','body','user','Reports','autoAssociation','preview','right_join','cross_join','SUM(%s)','COUNT(%s)','MIN(%s)','AVG(%s)','GROUP_CONCAT(%s)','GROUP_CONCAT(%s\x20ORDER\x20BY\x20%s\x20ASC)','GROUP_CONCAT(%s\x20ORDER\x20BY\x20%s\x20DESC)','SEC_TO_TIME(%s)','DATE(%s)','ROUND(%s)','UNIX_TIMESTAMP(%s)','includes','IS\x20NULL','IS\x20NOT\x20NULL','IS\x20NOT\x20EMPTY','rules','operator','group','field','condition','value','getFields','Sequelize','ValidationErrorItem','Please\x20insert\x20at\x20least\x20one\x20field','AnalyticMetric','keyBy','from','table','MetricId','metric','function','replace','format','groupBy','orderBy','DESC','alias','joins','parse','parentKey','foreignKey','foreignTable','%s.%s\x20=\x20%s.%s','conditions','debug','Limited\x20Query:','toString','sequelize','QueryTypes','join','COUNT(DISTINCT\x20%s)','MAX(%s)','HOUR(%s)','IS\x20EMPTY','select','clone','output','fullPath','%s-%s.%s','csv','custom','cdr','.calldate\x20BETWEEN\x20?\x20AND\x20?','endDate','.createdAt\x20BETWEEN\x20?\x20AND\x20?','startDate','fork','../../files/reports','savename','countTable','COUNT(*)','SELECT','runReport','left_join','eml-format','rimraf','fast-json-patch','request-promise','moment','mustache','util','path','sox','to-csv','ejs','fs-extra','jsforce','desk.js','papaparse','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../config/utils','../../config/environment','status','end','json','offset','limit','undefined','count','Content-Range','apply','reject','save','update','destroy','then','get','CustomReports','UserProfileResource','sendStatus','name','map','AnalyticCustomReport','rawAttributes','fieldName','query','keys','attributes','intersection'];(function(_0x14add3,_0x13ce8d){var _0x4a174f=function(_0x2b3ed7){while(--_0x2b3ed7){_0x14add3['push'](_0x14add3['shift']());}};_0x4a174f(++_0x13ce8d);}(_0xe8b1,0x104));var _0x1e8b=function(_0x12c0ea,_0x2ed696){_0x12c0ea=_0x12c0ea-0x0;var _0x276352=_0xe8b1[_0x12c0ea];return _0x276352;};'use strict';var emlformat=require(_0x1e8b('0x0'));var rimraf=require(_0x1e8b('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0x1e8b('0x2'));var rp=require(_0x1e8b('0x3'));var moment=require(_0x1e8b('0x4'));var BPromise=require('bluebird');var Mustache=require(_0x1e8b('0x5'));var util=require(_0x1e8b('0x6'));var path=require(_0x1e8b('0x7'));var sox=require(_0x1e8b('0x8'));var csv=require(_0x1e8b('0x9'));var ejs=require(_0x1e8b('0xa'));var fs=require('fs');var fs_extra=require(_0x1e8b('0xb'));var _=require('lodash');var squel=require('squel');var crypto=require('crypto');var jsforce=require(_0x1e8b('0xc'));var deskjs=require(_0x1e8b('0xd'));var toCsv=require(_0x1e8b('0x9'));var querystring=require('querystring');var Papa=require(_0x1e8b('0xe'));var Redis=require('ioredis');var authService=require('../../components/auth/service');var qs=require(_0x1e8b('0xf'));var as=require(_0x1e8b('0x10'));var hardwareService=require(_0x1e8b('0x11'));var logger=require(_0x1e8b('0x12'))('api');var utils=require(_0x1e8b('0x13'));var config=require(_0x1e8b('0x14'));var licenseUtil=require('../../config/license/util');var db=require('../../mysqldb')['db'];var dbH=require('../../mysqldb')['dbH'];function respondWithStatusCode(_0x301a5e,_0x45160d){_0x45160d=_0x45160d||0xcc;return function(_0x388b0c){if(_0x388b0c){return _0x301a5e['sendStatus'](_0x45160d);}return _0x301a5e[_0x1e8b('0x15')](_0x45160d)[_0x1e8b('0x16')]();};}function respondWithResult(_0x33afcd,_0x2765df){_0x2765df=_0x2765df||0xc8;return function(_0xb7b002){if(_0xb7b002){return _0x33afcd[_0x1e8b('0x15')](_0x2765df)[_0x1e8b('0x17')](_0xb7b002);}};}function respondWithFilteredResult(_0x42a596,_0x27703f){return function(_0x3641ef){if(_0x3641ef){var _0xb03714=typeof _0x27703f[_0x1e8b('0x18')]==='undefined'&&typeof _0x27703f[_0x1e8b('0x19')]===_0x1e8b('0x1a');var _0x130701=_0x3641ef[_0x1e8b('0x1b')];var _0x4198cd=_0xb03714?0x0:_0x27703f[_0x1e8b('0x18')];var _0x4f744f=_0xb03714?_0x3641ef['count']:_0x27703f[_0x1e8b('0x18')]+_0x27703f[_0x1e8b('0x19')];var _0x1fded8;if(_0x4f744f>=_0x130701){_0x4f744f=_0x130701;_0x1fded8=0xc8;}else{_0x1fded8=0xce;}_0x42a596[_0x1e8b('0x15')](_0x1fded8);return _0x42a596['set'](_0x1e8b('0x1c'),_0x4198cd+'-'+_0x4f744f+'/'+_0x130701)['json'](_0x3641ef);}return null;};}function patchUpdates(_0x15586b){return function(_0x9e1407){try{jsonpatch[_0x1e8b('0x1d')](_0x9e1407,_0x15586b,!![]);}catch(_0x2e7460){return BPromise[_0x1e8b('0x1e')](_0x2e7460);}return _0x9e1407[_0x1e8b('0x1f')]();};}function saveUpdates(_0x43fc61,_0x5b2f03){return function(_0x5ad0ae){if(_0x5ad0ae){return _0x5ad0ae[_0x1e8b('0x20')](_0x43fc61)['then'](function(_0xd68f6f){return _0xd68f6f;});}return null;};}function removeEntity(_0xd4cb83,_0x52ccb5){return function(_0x469941){if(_0x469941){return _0x469941[_0x1e8b('0x21')]()[_0x1e8b('0x22')](function(){var _0x2a19de=_0x469941[_0x1e8b('0x23')]({'plain':!![]});var _0x11c47d=_0x1e8b('0x24');return db[_0x1e8b('0x25')]['destroy']({'where':{'type':_0x11c47d,'resourceId':_0x2a19de['id']}})[_0x1e8b('0x22')](function(){return _0x469941;});})[_0x1e8b('0x22')](function(){_0xd4cb83[_0x1e8b('0x15')](0xcc)[_0x1e8b('0x16')]();});}};}function handleEntityNotFound(_0x3a04f0,_0x4f2290){return function(_0x30bcfd){if(!_0x30bcfd){_0x3a04f0[_0x1e8b('0x26')](0x194);}return _0x30bcfd;};}function handleError(_0x5e1699,_0x960fa0){_0x960fa0=_0x960fa0||0x1f4;return function(_0x331846){logger['error'](_0x331846['stack']);if(_0x331846[_0x1e8b('0x27')]){delete _0x331846['name'];}_0x5e1699['status'](_0x960fa0)['send'](_0x331846);};}exports['index']=function(_0xa5af6e,_0x3d3670){var _0x3b0bf3={},_0x32a1f1={},_0x50f9fa={'count':0x0,'rows':[]};var _0x33a311=_[_0x1e8b('0x28')](db[_0x1e8b('0x29')][_0x1e8b('0x2a')],function(_0xcb76ad){return{'name':_0xcb76ad[_0x1e8b('0x2b')],'type':_0xcb76ad['type']['key']};});_0x32a1f1['model']=_[_0x1e8b('0x28')](_0x33a311,'name');_0x32a1f1[_0x1e8b('0x2c')]=_[_0x1e8b('0x2d')](_0xa5af6e['query']);_0x32a1f1['filters']=_['intersection'](_0x32a1f1['model'],_0x32a1f1[_0x1e8b('0x2c')]);_0x3b0bf3[_0x1e8b('0x2e')]=_[_0x1e8b('0x2f')](_0x32a1f1[_0x1e8b('0x30')],qs['fields'](_0xa5af6e['query'][_0x1e8b('0x31')]));_0x3b0bf3[_0x1e8b('0x2e')]=_0x3b0bf3[_0x1e8b('0x2e')][_0x1e8b('0x32')]?_0x3b0bf3[_0x1e8b('0x2e')]:_0x32a1f1[_0x1e8b('0x30')];if(!_0xa5af6e[_0x1e8b('0x2c')][_0x1e8b('0x33')](_0x1e8b('0x34'))){_0x3b0bf3['limit']=qs[_0x1e8b('0x19')](_0xa5af6e[_0x1e8b('0x2c')][_0x1e8b('0x19')]);_0x3b0bf3[_0x1e8b('0x18')]=qs[_0x1e8b('0x18')](_0xa5af6e[_0x1e8b('0x2c')][_0x1e8b('0x18')]);}_0x3b0bf3[_0x1e8b('0x35')]=qs[_0x1e8b('0x36')](_0xa5af6e[_0x1e8b('0x2c')][_0x1e8b('0x36')]);_0x3b0bf3[_0x1e8b('0x37')]=qs[_0x1e8b('0x38')](_[_0x1e8b('0x39')](_0xa5af6e[_0x1e8b('0x2c')],_0x32a1f1[_0x1e8b('0x38')]),_0x33a311);if(_0xa5af6e[_0x1e8b('0x2c')][_0x1e8b('0x3a')]){_0x3b0bf3['where']=_[_0x1e8b('0x3b')](_0x3b0bf3[_0x1e8b('0x37')],{'$or':_[_0x1e8b('0x28')](_0x33a311,function(_0x4d9b08){if(_0x4d9b08[_0x1e8b('0x3c')]!==_0x1e8b('0x3d')){var _0x3a694c={};_0x3a694c[_0x4d9b08[_0x1e8b('0x27')]]={'$like':'%'+_0xa5af6e[_0x1e8b('0x2c')][_0x1e8b('0x3a')]+'%'};return _0x3a694c;}})});}_0x3b0bf3=_[_0x1e8b('0x3b')]({},_0x3b0bf3,_0xa5af6e[_0x1e8b('0x3e')]);var _0x42e7c0={'where':_0x3b0bf3[_0x1e8b('0x37')]};return db['AnalyticCustomReport'][_0x1e8b('0x1b')](_0x42e7c0)['then'](function(_0x1c12b3){_0x50f9fa['count']=_0x1c12b3;if(_0xa5af6e['query'][_0x1e8b('0x3f')]){_0x3b0bf3[_0x1e8b('0x40')]=[{'all':!![]}];}return db[_0x1e8b('0x29')][_0x1e8b('0x41')](_0x3b0bf3);})[_0x1e8b('0x22')](function(_0x3b02aa){_0x50f9fa[_0x1e8b('0x42')]=_0x3b02aa;return _0x50f9fa;})[_0x1e8b('0x22')](respondWithFilteredResult(_0x3d3670,_0x3b0bf3))[_0x1e8b('0x43')](handleError(_0x3d3670,null));};exports[_0x1e8b('0x44')]=function(_0x35038b,_0x1d8956){var _0x60254f={'raw':![],'where':{'id':_0x35038b[_0x1e8b('0x45')]['id']}},_0x2651a6={};_0x2651a6[_0x1e8b('0x30')]=_[_0x1e8b('0x2d')](db[_0x1e8b('0x29')][_0x1e8b('0x2a')]);_0x2651a6['query']=_[_0x1e8b('0x2d')](_0x35038b[_0x1e8b('0x2c')]);_0x2651a6[_0x1e8b('0x38')]=_[_0x1e8b('0x2f')](_0x2651a6[_0x1e8b('0x30')],_0x2651a6[_0x1e8b('0x2c')]);_0x60254f[_0x1e8b('0x2e')]=_[_0x1e8b('0x2f')](_0x2651a6[_0x1e8b('0x30')],qs[_0x1e8b('0x31')](_0x35038b[_0x1e8b('0x2c')]['fields']));_0x60254f[_0x1e8b('0x2e')]=_0x60254f['attributes']['length']?_0x60254f[_0x1e8b('0x2e')]:_0x2651a6[_0x1e8b('0x30')];if(_0x35038b['query'][_0x1e8b('0x3f')]){_0x60254f[_0x1e8b('0x40')]=[{'all':!![]}];}_0x60254f=_[_0x1e8b('0x3b')]({},_0x60254f,_0x35038b['options']);return db[_0x1e8b('0x29')][_0x1e8b('0x46')](_0x60254f)['then'](handleEntityNotFound(_0x1d8956,null))[_0x1e8b('0x22')](respondWithResult(_0x1d8956,null))[_0x1e8b('0x43')](handleError(_0x1d8956,null));};exports[_0x1e8b('0x47')]=function(_0x446f87,_0x54469f){return db[_0x1e8b('0x29')]['create'](_0x446f87[_0x1e8b('0x48')],{})[_0x1e8b('0x22')](function(_0x36932b){var _0x938d93=_0x446f87[_0x1e8b('0x49')]['get']({'plain':!![]});if(!_0x938d93)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x938d93['role']===_0x1e8b('0x49')){var _0x33f2ff=_0x36932b[_0x1e8b('0x23')]({'plain':!![]});var _0x2f5c58=_0x1e8b('0x4a');return db['UserProfileSection']['find']({'where':{'name':_0x2f5c58,'userProfileId':_0x938d93['userProfileId']},'raw':!![]})[_0x1e8b('0x22')](function(_0x1691fa){if(_0x1691fa&&_0x1691fa[_0x1e8b('0x4b')]===0x0){return db[_0x1e8b('0x25')][_0x1e8b('0x47')]({'name':_0x33f2ff['name'],'resourceId':_0x33f2ff['id'],'type':_0x1e8b('0x24'),'sectionId':_0x1691fa['id']},{})[_0x1e8b('0x22')](function(){return _0x36932b;});}else{return _0x36932b;}})[_0x1e8b('0x43')](function(_0x5edaa3){logger['error']('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x5edaa3);throw _0x5edaa3;});}return _0x36932b;})[_0x1e8b('0x22')](respondWithResult(_0x54469f,0xc9))[_0x1e8b('0x43')](handleError(_0x54469f,null));};exports[_0x1e8b('0x20')]=function(_0x344b38,_0x4a9d48){if(_0x344b38[_0x1e8b('0x48')]['id']){delete _0x344b38[_0x1e8b('0x48')]['id'];}return db[_0x1e8b('0x29')][_0x1e8b('0x46')]({'where':{'id':_0x344b38[_0x1e8b('0x45')]['id']}})[_0x1e8b('0x22')](handleEntityNotFound(_0x4a9d48,null))[_0x1e8b('0x22')](saveUpdates(_0x344b38[_0x1e8b('0x48')],null))[_0x1e8b('0x22')](respondWithResult(_0x4a9d48,null))['catch'](handleError(_0x4a9d48,null));};exports[_0x1e8b('0x21')]=function(_0x128577,_0x65af02){return db[_0x1e8b('0x29')][_0x1e8b('0x46')]({'where':{'id':_0x128577[_0x1e8b('0x45')]['id']}})[_0x1e8b('0x22')](handleEntityNotFound(_0x65af02,null))[_0x1e8b('0x22')](removeEntity(_0x65af02,null))[_0x1e8b('0x43')](handleError(_0x65af02,null));};exports[_0x1e8b('0x4c')]=function(_0xa91ee2,_0x547104){var _0x1ab80c=0xa;var _0xee6af5=['join','left_join',_0x1e8b('0x4d'),_0x1e8b('0x4e')];var _0x3d706e={'SUM':_0x1e8b('0x4f'),'COUNT':_0x1e8b('0x50'),'COUNT DISTINCT':'COUNT(DISTINCT\x20%s)','MAX':'MAX(%s)','MIN':_0x1e8b('0x51'),'AVG':_0x1e8b('0x52'),'GROUP_CONCAT':_0x1e8b('0x53'),'GROUP_CONCAT ASC':_0x1e8b('0x54'),'GROUP_CONCAT DESC':_0x1e8b('0x55')};var _0x32c1fa={'SEC_TO_TIME':_0x1e8b('0x56'),'DATE':_0x1e8b('0x57'),'HOUR':'HOUR(%s)','ROUND':_0x1e8b('0x58'),'UNIX_TIMESTAMP':_0x1e8b('0x59')};var _0x3f4978=function(_0x4685b7){return!_[_0x1e8b('0x5a')]([_0x1e8b('0x5b'),_0x1e8b('0x5c'),'IS\x20EMPTY',_0x1e8b('0x5d')],_0x4685b7);};var _0x33b70d=function(_0x13d867){if(!_0x13d867||!_0x13d867[_0x1e8b('0x5e')][_0x1e8b('0x32')]){return'';}for(var _0x344f05='(',_0x158a2a=0x0;_0x158a2a<_0x13d867[_0x1e8b('0x5e')]['length'];_0x158a2a+=0x1){_0x158a2a>0x0&&(_0x344f05+='\x20'+_0x13d867[_0x1e8b('0x5f')]+'\x20');_0x344f05+=_0x13d867[_0x1e8b('0x5e')][_0x158a2a][_0x1e8b('0x60')]?_0x33b70d(_0x13d867[_0x1e8b('0x5e')][_0x158a2a]['group']):_0x13d867['rules'][_0x158a2a][_0x1e8b('0x61')]+'\x20'+_0x13d867[_0x1e8b('0x5e')][_0x158a2a][_0x1e8b('0x62')]+(_0x3f4978(_0x13d867[_0x1e8b('0x5e')][_0x158a2a]['condition'])?'\x20'+_0x13d867[_0x1e8b('0x5e')][_0x158a2a][_0x1e8b('0x63')]:'');}return _0x344f05+')';};var _0x5e2367={'where':{'id':_0xa91ee2['params']['id']}},_0x531024,_0x413700,_0x2a11f5,_0x52ef1b,_0x410698;_0x5e2367=_[_0x1e8b('0x3b')]({},_0x5e2367,_0xa91ee2[_0x1e8b('0x3e')]);return db[_0x1e8b('0x29')][_0x1e8b('0x46')](_0x5e2367)[_0x1e8b('0x22')](function(_0x57f224){if(_0x57f224){_0x531024=_0x57f224;return _0x57f224[_0x1e8b('0x64')]();}return null;})[_0x1e8b('0x22')](function(_0x14f0e4){if(_0x14f0e4){if(!_0x14f0e4[_0x1e8b('0x32')]){throw new db[(_0x1e8b('0x65'))][(_0x1e8b('0x66'))](_0x1e8b('0x67'),0x193);}_0x413700=_0x14f0e4;return db[_0x1e8b('0x68')][_0x1e8b('0x41')]({'raw':!![]});}return null;})[_0x1e8b('0x22')](function(_0x218c4e){if(_0x218c4e){_0x2a11f5=_[_0x1e8b('0x69')](_0x218c4e,'id');var _0x25f270;var _0x58f91d=squel['select']();_0x58f91d[_0x1e8b('0x6a')](_0x531024[_0x1e8b('0x6b')]);for(var _0x1d9f47=0x0;_0x1d9f47<_0x413700[_0x1e8b('0x32')];_0x1d9f47+=0x1){_0x25f270=_0x413700[_0x1d9f47][_0x1e8b('0x6c')]?_0x2a11f5[_0x413700[_0x1d9f47][_0x1e8b('0x6c')]][_0x1e8b('0x6d')]:_0x413700[_0x1d9f47]['field'];_0x25f270=_0x413700[_0x1d9f47][_0x1e8b('0x6e')]?_[_0x1e8b('0x6f')](_0x3d706e[_0x413700[_0x1d9f47][_0x1e8b('0x6e')]],'%s',_0x25f270):_0x25f270;_0x25f270=_0x413700[_0x1d9f47][_0x1e8b('0x70')]?_[_0x1e8b('0x6f')](_0x32c1fa[_0x413700[_0x1d9f47][_0x1e8b('0x70')]],'%s',_0x25f270):_0x25f270;if(_0x413700[_0x1d9f47][_0x1e8b('0x71')]){_0x58f91d[_0x1e8b('0x60')](_0x25f270);}_0x413700[_0x1d9f47][_0x1e8b('0x72')]&&_0x58f91d[_0x1e8b('0x35')](_0x25f270,_0x413700[_0x1d9f47][_0x1e8b('0x72')]===_0x1e8b('0x73')?![]:!![]);_0x58f91d[_0x1e8b('0x61')](_0x25f270,_0x413700[_0x1d9f47][_0x1e8b('0x74')]||_0x25f270);}if(_0x531024[_0x1e8b('0x75')]){_0x531024[_0x1e8b('0x75')]=JSON[_0x1e8b('0x76')](_0x531024[_0x1e8b('0x75')]);for(var _0x52a8d7=0x0;_0x52a8d7<_0x531024[_0x1e8b('0x75')][_0x1e8b('0x32')];_0x52a8d7+=0x1){if(_0x531024['joins'][_0x52a8d7][_0x1e8b('0x3c')]&&_[_0x1e8b('0x5a')](_0xee6af5,_0x531024[_0x1e8b('0x75')][_0x52a8d7]['type'])&&_0x531024[_0x1e8b('0x75')][_0x52a8d7][_0x1e8b('0x77')]&&_0x531024[_0x1e8b('0x75')][_0x52a8d7]['foreignTable']&&_0x531024[_0x1e8b('0x75')][_0x52a8d7][_0x1e8b('0x78')]){_0x58f91d[_0x531024[_0x1e8b('0x75')][_0x52a8d7][_0x1e8b('0x3c')]](_0x531024[_0x1e8b('0x75')][_0x52a8d7][_0x1e8b('0x79')],null,util['format'](_0x1e8b('0x7a'),_0x531024['table'],_0x531024[_0x1e8b('0x75')][_0x52a8d7][_0x1e8b('0x77')],_0x531024[_0x1e8b('0x75')][_0x52a8d7][_0x1e8b('0x79')],_0x531024[_0x1e8b('0x75')][_0x52a8d7][_0x1e8b('0x78')]));}}}if(_0x531024[_0x1e8b('0x7b')]){_0x531024[_0x1e8b('0x7b')]=JSON[_0x1e8b('0x76')](_0x531024[_0x1e8b('0x7b')]);_0x58f91d['where'](_0x33b70d(_0x531024[_0x1e8b('0x7b')][_0x1e8b('0x60')]));}_0x410698=_0x58f91d['clone']();_0x58f91d[_0x1e8b('0x19')](_0x1ab80c);_0x58f91d[_0x1e8b('0x18')](0x0);logger[_0x1e8b('0x7c')](_0x1e8b('0x7d'),_0x58f91d[_0x1e8b('0x7e')]());return dbH[_0x1e8b('0x7f')]['query'](_0x58f91d[_0x1e8b('0x7e')](),{'type':dbH[_0x1e8b('0x7f')][_0x1e8b('0x80')]['SELECT']});}})['then'](respondWithResult(_0x547104,null))[_0x1e8b('0x43')](handleError(_0x547104,null));};function runReport(_0x379f47,_0x479f66,_0x301b25){var _0x3ed897=_0x479f66[_0x1e8b('0x27')];var _0x29888a=0xa;var _0x53437b=[_0x1e8b('0x81'),'left_join','right_join',_0x1e8b('0x4e')];var _0x2229e7={'SUM':'SUM(%s)','COUNT':_0x1e8b('0x50'),'COUNT DISTINCT':_0x1e8b('0x82'),'MAX':_0x1e8b('0x83'),'MIN':_0x1e8b('0x51'),'AVG':_0x1e8b('0x52'),'GROUP_CONCAT':_0x1e8b('0x53'),'GROUP_CONCAT ASC':_0x1e8b('0x54'),'GROUP_CONCAT DESC':_0x1e8b('0x55')};var _0x367fcc={'SEC_TO_TIME':'SEC_TO_TIME(%s)','DATE':'DATE(%s)','HOUR':_0x1e8b('0x84'),'ROUND':_0x1e8b('0x58'),'UNIX_TIMESTAMP':_0x1e8b('0x59')};var _0x3cadd6=function(_0x5c4f2f){return!_['includes'](['IS\x20NULL','IS\x20NOT\x20NULL',_0x1e8b('0x85'),_0x1e8b('0x5d')],_0x5c4f2f);};var _0x5d0fb0=function(_0x1fbe6e){if(!_0x1fbe6e||!_0x1fbe6e[_0x1e8b('0x5e')][_0x1e8b('0x32')]){return'';}for(var _0x4ec98a='(',_0x12fbb2=0x0;_0x12fbb2<_0x1fbe6e[_0x1e8b('0x5e')]['length'];_0x12fbb2+=0x1){_0x12fbb2>0x0&&(_0x4ec98a+='\x20'+_0x1fbe6e['operator']+'\x20');_0x4ec98a+=_0x1fbe6e[_0x1e8b('0x5e')][_0x12fbb2][_0x1e8b('0x60')]?_0x5d0fb0(_0x1fbe6e[_0x1e8b('0x5e')][_0x12fbb2][_0x1e8b('0x60')]):_0x1fbe6e[_0x1e8b('0x5e')][_0x12fbb2][_0x1e8b('0x61')]+'\x20'+_0x1fbe6e[_0x1e8b('0x5e')][_0x12fbb2][_0x1e8b('0x62')]+(_0x3cadd6(_0x1fbe6e['rules'][_0x12fbb2]['condition'])?'\x20'+_0x1fbe6e[_0x1e8b('0x5e')][_0x12fbb2]['value']:'');}return _0x4ec98a+')';};var _0x320139={'where':{'id':_0x379f47['id']}},_0x384276,_0x5c0390,_0x3b2705,_0x214216,_0x2f9f3a;_0x320139=_[_0x1e8b('0x3b')]({},_0x320139,_0x301b25);return db['AnalyticCustomReport']['find'](_0x320139)[_0x1e8b('0x22')](function(_0x44970c){if(_0x44970c){_0x384276=_0x44970c;return _0x44970c[_0x1e8b('0x64')]();}return null;})[_0x1e8b('0x22')](function(_0x29ed51){if(_0x29ed51){if(!_0x29ed51[_0x1e8b('0x32')]){throw new db[(_0x1e8b('0x65'))][(_0x1e8b('0x66'))](_0x1e8b('0x67'),0x193);}_0x5c0390=_0x29ed51;return db['AnalyticMetric'][_0x1e8b('0x41')]({'raw':!![]});}return null;})[_0x1e8b('0x22')](function(_0x48a376){if(_0x48a376){_0x3b2705=_['keyBy'](_0x48a376,'id');var _0x152758;var _0x79cb70=squel[_0x1e8b('0x86')]();_0x79cb70[_0x1e8b('0x6a')](_0x384276['table']);for(var _0x7e8fac=0x0;_0x7e8fac<_0x5c0390[_0x1e8b('0x32')];_0x7e8fac+=0x1){_0x152758=_0x5c0390[_0x7e8fac]['MetricId']?_0x3b2705[_0x5c0390[_0x7e8fac][_0x1e8b('0x6c')]][_0x1e8b('0x6d')]:_0x5c0390[_0x7e8fac]['field'];_0x152758=_0x5c0390[_0x7e8fac][_0x1e8b('0x6e')]?_[_0x1e8b('0x6f')](_0x2229e7[_0x5c0390[_0x7e8fac][_0x1e8b('0x6e')]],'%s',_0x152758):_0x152758;_0x152758=_0x5c0390[_0x7e8fac][_0x1e8b('0x70')]?_[_0x1e8b('0x6f')](_0x367fcc[_0x5c0390[_0x7e8fac]['format']],'%s',_0x152758):_0x152758;if(_0x5c0390[_0x7e8fac][_0x1e8b('0x71')]){_0x79cb70['group'](_0x152758);}_0x5c0390[_0x7e8fac][_0x1e8b('0x72')]&&_0x79cb70[_0x1e8b('0x35')](_0x152758,_0x5c0390[_0x7e8fac]['orderBy']==='DESC'?![]:!![]);_0x79cb70['field'](_0x152758,_0x5c0390[_0x7e8fac][_0x1e8b('0x74')]||_0x152758);}if(_0x384276[_0x1e8b('0x75')]){_0x384276[_0x1e8b('0x75')]=JSON['parse'](_0x384276[_0x1e8b('0x75')]);for(var _0x4bf4cd=0x0;_0x4bf4cd<_0x384276[_0x1e8b('0x75')][_0x1e8b('0x32')];_0x4bf4cd+=0x1){if(_0x384276[_0x1e8b('0x75')][_0x4bf4cd][_0x1e8b('0x3c')]&&_['includes'](_0x53437b,_0x384276[_0x1e8b('0x75')][_0x4bf4cd][_0x1e8b('0x3c')])&&_0x384276[_0x1e8b('0x75')][_0x4bf4cd]['parentKey']&&_0x384276['joins'][_0x4bf4cd][_0x1e8b('0x79')]&&_0x384276[_0x1e8b('0x75')][_0x4bf4cd][_0x1e8b('0x78')]){_0x79cb70[_0x384276[_0x1e8b('0x75')][_0x4bf4cd]['type']](_0x384276[_0x1e8b('0x75')][_0x4bf4cd][_0x1e8b('0x79')],null,util['format']('%s.%s\x20=\x20%s.%s',_0x384276[_0x1e8b('0x6b')],_0x384276[_0x1e8b('0x75')][_0x4bf4cd]['parentKey'],_0x384276[_0x1e8b('0x75')][_0x4bf4cd][_0x1e8b('0x79')],_0x384276['joins'][_0x4bf4cd][_0x1e8b('0x78')]));}}}if(_0x384276[_0x1e8b('0x7b')]){_0x384276[_0x1e8b('0x7b')]=JSON['parse'](_0x384276[_0x1e8b('0x7b')]);_0x79cb70[_0x1e8b('0x37')](_0x5d0fb0(_0x384276[_0x1e8b('0x7b')][_0x1e8b('0x60')]));}_0x2f9f3a=_0x79cb70[_0x1e8b('0x87')]();_0x79cb70[_0x1e8b('0x19')](_0x29888a);_0x79cb70[_0x1e8b('0x18')](0x0);return;}})[_0x1e8b('0x22')](function(){if(_0x479f66[_0x1e8b('0x88')]==='web'){return null;}var _0x59af97=_['merge'](_0x479f66,{'name':_0x479f66[_0x1e8b('0x89')]||_0x479f66[_0x1e8b('0x27')]||_0x384276[_0x1e8b('0x27')],'basename':_0x3ed897,'savename':util[_0x1e8b('0x70')](_0x1e8b('0x8a'),_0x479f66[_0x1e8b('0x27')]||_0x384276['name'],require('randomstring')['generate'](0x4),_0x479f66[_0x1e8b('0x88')]||_0x1e8b('0x8b')),'reportId':_0x384276['id'],'reportType':_0x1e8b('0x8c')});return db['AnalyticExtractedReport'][_0x1e8b('0x47')](_0x59af97,{'raw':!![]});})['then'](function(_0x3d5140){if(_0x384276[_0x1e8b('0x6b')]===_0x1e8b('0x8d')){_0x2f9f3a[_0x1e8b('0x37')](_0x384276[_0x1e8b('0x6b')]+_0x1e8b('0x8e'),_0x479f66['startDate'],_0x479f66[_0x1e8b('0x8f')]);}else{_0x2f9f3a[_0x1e8b('0x37')](_0x384276[_0x1e8b('0x6b')]+_0x1e8b('0x90'),_0x479f66[_0x1e8b('0x91')],_0x479f66[_0x1e8b('0x8f')]);}if(_0x3d5140){logger['info']('Run\x20Query:',_0x2f9f3a[_0x1e8b('0x7e')]());require('child_process')[_0x1e8b('0x92')](path['join'](__dirname,'../../components/export/',_0x3d5140['output']),[_0x3d5140['id'],_0x2f9f3a[_0x1e8b('0x7e')](),path['join'](__dirname,_0x1e8b('0x93'),_0x3d5140[_0x1e8b('0x94')]),_0x3ed897]);return _0x3d5140;}else{var _0x18c2ce=squel[_0x1e8b('0x86')]();_0x18c2ce[_0x1e8b('0x6a')]('('+_0x2f9f3a[_0x1e8b('0x7e')]()+')',_0x1e8b('0x95'));_0x18c2ce[_0x1e8b('0x61')](_0x1e8b('0x96'),_0x1e8b('0x1b'));_0x2f9f3a[_0x1e8b('0x19')](_0x479f66[_0x1e8b('0x19')]||_0x29888a);_0x2f9f3a['offset'](_0x479f66[_0x1e8b('0x18')]||0x0);return dbH[_0x1e8b('0x7f')][_0x1e8b('0x2c')](_0x18c2ce[_0x1e8b('0x7e')](),{'type':dbH[_0x1e8b('0x7f')][_0x1e8b('0x80')][_0x1e8b('0x97')]})[_0x1e8b('0x22')](function(_0x1321c1){if(!_0x1321c1[_0x1e8b('0x32')]){_0x214216=0x0;}else{_0x214216=_0x1321c1[0x0][_0x1e8b('0x1b')]||0x0;}return dbH[_0x1e8b('0x7f')]['query'](_0x2f9f3a[_0x1e8b('0x7e')](),{'type':dbH['sequelize'][_0x1e8b('0x80')][_0x1e8b('0x97')]});})[_0x1e8b('0x22')](function(_0x21991e){return{'rows':_0x21991e||[],'count':_0x214216};});}});}exports['run']=function(_0x2aa205,_0x5a3b6f){return runReport(_0x2aa205[_0x1e8b('0x45')],_0x2aa205[_0x1e8b('0x2c')],_0x2aa205[_0x1e8b('0x3e')])[_0x1e8b('0x22')](respondWithResult(_0x5a3b6f,null))[_0x1e8b('0x43')](handleError(_0x5a3b6f,null));};exports[_0x1e8b('0x98')]=runReport;exports['query']=function(_0x5011c6,_0x777abd){var _0x5c560f=0xa;var _0x5c2a41=[_0x1e8b('0x81'),_0x1e8b('0x99'),_0x1e8b('0x4d'),_0x1e8b('0x4e')];var _0x4c570e={'SUM':_0x1e8b('0x4f'),'COUNT':_0x1e8b('0x50'),'COUNT DISTINCT':'COUNT(DISTINCT\x20%s)','MAX':_0x1e8b('0x83'),'MIN':_0x1e8b('0x51'),'AVG':_0x1e8b('0x52'),'GROUP_CONCAT':_0x1e8b('0x53'),'GROUP_CONCAT ASC':_0x1e8b('0x54'),'GROUP_CONCAT DESC':_0x1e8b('0x55')};var _0x5d4cdd={'SEC_TO_TIME':_0x1e8b('0x56'),'DATE':_0x1e8b('0x57'),'HOUR':_0x1e8b('0x84'),'ROUND':_0x1e8b('0x58'),'UNIX_TIMESTAMP':_0x1e8b('0x59')};var _0x567bc6=function(_0x42683c){return!_[_0x1e8b('0x5a')]([_0x1e8b('0x5b'),_0x1e8b('0x5c'),'IS\x20EMPTY','IS\x20NOT\x20EMPTY'],_0x42683c);};var _0x2a0abd=function(_0x57a37a){if(!_0x57a37a||!_0x57a37a['rules']['length']){return'';}for(var _0x5372af='(',_0x2476f3=0x0;_0x2476f3<_0x57a37a[_0x1e8b('0x5e')]['length'];_0x2476f3+=0x1){_0x2476f3>0x0&&(_0x5372af+='\x20'+_0x57a37a[_0x1e8b('0x5f')]+'\x20');_0x5372af+=_0x57a37a[_0x1e8b('0x5e')][_0x2476f3]['group']?_0x2a0abd(_0x57a37a['rules'][_0x2476f3][_0x1e8b('0x60')]):_0x57a37a[_0x1e8b('0x5e')][_0x2476f3][_0x1e8b('0x61')]+'\x20'+_0x57a37a['rules'][_0x2476f3][_0x1e8b('0x62')]+(_0x567bc6(_0x57a37a['rules'][_0x2476f3][_0x1e8b('0x62')])?'\x20'+_0x57a37a[_0x1e8b('0x5e')][_0x2476f3][_0x1e8b('0x63')]:'');}return _0x5372af+')';};var _0x27ea8a={'where':{'id':_0x5011c6[_0x1e8b('0x45')]['id']}},_0x128598,_0x1f84a6,_0x3ca048,_0xe4ab43,_0x1e0a27;_0x27ea8a=_[_0x1e8b('0x3b')]({},_0x27ea8a,_0x5011c6[_0x1e8b('0x3e')]);return db[_0x1e8b('0x29')][_0x1e8b('0x46')](_0x27ea8a)[_0x1e8b('0x22')](function(_0x7ccbb6){if(_0x7ccbb6){_0x128598=_0x7ccbb6;return _0x7ccbb6['getFields']();}return null;})[_0x1e8b('0x22')](function(_0x3bcdd6){if(_0x3bcdd6){if(!_0x3bcdd6[_0x1e8b('0x32')]){throw new db[(_0x1e8b('0x65'))][(_0x1e8b('0x66'))]('Please\x20insert\x20at\x20least\x20one\x20field',0x193);}_0x1f84a6=_0x3bcdd6;return db[_0x1e8b('0x68')][_0x1e8b('0x41')]({'raw':!![]});}return null;})[_0x1e8b('0x22')](function(_0x57bfa6){if(_0x57bfa6){_0x3ca048=_[_0x1e8b('0x69')](_0x57bfa6,'id');var _0x2c4875;var _0x560cfd=squel[_0x1e8b('0x86')]();_0x560cfd[_0x1e8b('0x6a')](_0x128598['table']);for(var _0x1b3a36=0x0;_0x1b3a36<_0x1f84a6[_0x1e8b('0x32')];_0x1b3a36+=0x1){_0x2c4875=_0x1f84a6[_0x1b3a36][_0x1e8b('0x6c')]?_0x3ca048[_0x1f84a6[_0x1b3a36][_0x1e8b('0x6c')]][_0x1e8b('0x6d')]:_0x1f84a6[_0x1b3a36]['field'];_0x2c4875=_0x1f84a6[_0x1b3a36][_0x1e8b('0x6e')]?_[_0x1e8b('0x6f')](_0x4c570e[_0x1f84a6[_0x1b3a36]['function']],'%s',_0x2c4875):_0x2c4875;_0x2c4875=_0x1f84a6[_0x1b3a36][_0x1e8b('0x70')]?_[_0x1e8b('0x6f')](_0x5d4cdd[_0x1f84a6[_0x1b3a36][_0x1e8b('0x70')]],'%s',_0x2c4875):_0x2c4875;if(_0x1f84a6[_0x1b3a36]['groupBy']){_0x560cfd[_0x1e8b('0x60')](_0x2c4875);}_0x1f84a6[_0x1b3a36][_0x1e8b('0x72')]&&_0x560cfd[_0x1e8b('0x35')](_0x2c4875,_0x1f84a6[_0x1b3a36][_0x1e8b('0x72')]==='DESC'?![]:!![]);_0x560cfd['field'](_0x2c4875,_0x1f84a6[_0x1b3a36]['alias']||_0x2c4875);}if(_0x128598[_0x1e8b('0x75')]){_0x128598[_0x1e8b('0x75')]=JSON['parse'](_0x128598['joins']);for(var _0x34356a=0x0;_0x34356a<_0x128598['joins'][_0x1e8b('0x32')];_0x34356a+=0x1){if(_0x128598[_0x1e8b('0x75')][_0x34356a][_0x1e8b('0x3c')]&&_[_0x1e8b('0x5a')](_0x5c2a41,_0x128598[_0x1e8b('0x75')][_0x34356a][_0x1e8b('0x3c')])&&_0x128598['joins'][_0x34356a][_0x1e8b('0x77')]&&_0x128598[_0x1e8b('0x75')][_0x34356a][_0x1e8b('0x79')]&&_0x128598[_0x1e8b('0x75')][_0x34356a][_0x1e8b('0x78')]){_0x560cfd[_0x128598[_0x1e8b('0x75')][_0x34356a][_0x1e8b('0x3c')]](_0x128598['joins'][_0x34356a][_0x1e8b('0x79')],null,util[_0x1e8b('0x70')](_0x1e8b('0x7a'),_0x128598['table'],_0x128598[_0x1e8b('0x75')][_0x34356a][_0x1e8b('0x77')],_0x128598[_0x1e8b('0x75')][_0x34356a]['foreignTable'],_0x128598[_0x1e8b('0x75')][_0x34356a][_0x1e8b('0x78')]));}}}if(_0x128598[_0x1e8b('0x7b')]){_0x128598[_0x1e8b('0x7b')]=JSON[_0x1e8b('0x76')](_0x128598[_0x1e8b('0x7b')]);_0x560cfd[_0x1e8b('0x37')](_0x2a0abd(_0x128598['conditions'][_0x1e8b('0x60')]));}_0x1e0a27=_0x560cfd[_0x1e8b('0x87')]();_0x560cfd[_0x1e8b('0x19')](_0x5c560f);_0x560cfd['offset'](0x0);logger[_0x1e8b('0x7c')](_0x1e8b('0x7d'),_0x560cfd[_0x1e8b('0x7e')]());return dbH[_0x1e8b('0x7f')][_0x1e8b('0x2c')](_0x560cfd[_0x1e8b('0x7e')](),{'type':dbH[_0x1e8b('0x7f')][_0x1e8b('0x80')]['SELECT']});}})['then'](function(){return{'sql':_0x1e0a27[_0x1e8b('0x7e')]()};})['then'](respondWithResult(_0x777abd,null))[_0x1e8b('0x43')](handleError(_0x777abd,null));};
\ No newline at end of file
index 891d278..4011f12 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0x7664=['../../config/logger','api','moment','bluebird','request-promise','path','rimraf','../../config/environment','./analyticCustomReport.attributes','exports','define','lodash'];(function(_0x19950b,_0x53d0d7){var _0x3c6b41=function(_0x3924ad){while(--_0x3924ad){_0x19950b['push'](_0x19950b['shift']());}};_0x3c6b41(++_0x53d0d7);}(_0x7664,0x1d3));var _0x4766=function(_0x3c4e42,_0x4df3e8){_0x3c4e42=_0x3c4e42-0x0;var _0x7378e0=_0x7664[_0x3c4e42];return _0x7378e0;};'use strict';var _=require(_0x4766('0x0'));var util=require('util');var logger=require(_0x4766('0x1'))(_0x4766('0x2'));var moment=require(_0x4766('0x3'));var BPromise=require(_0x4766('0x4'));var rp=require(_0x4766('0x5'));var fs=require('fs');var path=require(_0x4766('0x6'));var rimraf=require(_0x4766('0x7'));var config=require(_0x4766('0x8'));var attributes=require(_0x4766('0x9'));module[_0x4766('0xa')]=function(_0x5b4eb6,_0x5a8d9e){return _0x5b4eb6[_0x4766('0xb')]('AnalyticCustomReport',attributes,{'tableName':'analytics_custom_reports','paranoid':!![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index e0e45f8..b688866 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0x8493=['ioredis','../../mysqldb','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','request','then','info','AnalyticCustomReport,\x20%s,\x20%s','request\x20sent','debug','AnalyticCustomReport,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','bluebird','randomstring'];(function(_0x509cc2,_0x27aad8){var _0x5c7545=function(_0x35fe58){while(--_0x35fe58){_0x509cc2['push'](_0x509cc2['shift']());}};_0x5c7545(++_0x27aad8);}(_0x8493,0x112));var _0x3849=function(_0x1d4449,_0x495153){_0x1d4449=_0x1d4449-0x0;var _0x4dcde3=_0x8493[_0x1d4449];return _0x4dcde3;};'use strict';var _=require('lodash');var util=require('util');var moment=require('moment');var BPromise=require(_0x3849('0x0'));var rs=require(_0x3849('0x1'));var fs=require('fs');var Redis=require(_0x3849('0x2'));var db=require(_0x3849('0x3'))['db'];var utils=require('../../config/utils');var logger=require(_0x3849('0x4'))(_0x3849('0x5'));var config=require(_0x3849('0x6'));var jayson=require(_0x3849('0x7'));var client=jayson[_0x3849('0x8')][_0x3849('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x228c1f,_0x534292,_0x2f736e){return new BPromise(function(_0x8db6eb,_0x39e86e){return client[_0x3849('0xa')](_0x228c1f,_0x2f736e)[_0x3849('0xb')](function(_0x13fd40){logger[_0x3849('0xc')](_0x3849('0xd'),_0x534292,_0x3849('0xe'));logger[_0x3849('0xf')](_0x3849('0x10'),_0x534292,'request\x20sent',JSON[_0x3849('0x11')](_0x13fd40));if(_0x13fd40[_0x3849('0x12')]){if(_0x13fd40[_0x3849('0x12')][_0x3849('0x13')]===0x1f4){logger[_0x3849('0x12')]('AnalyticCustomReport,\x20%s,\x20%s',_0x534292,_0x13fd40[_0x3849('0x12')][_0x3849('0x14')]);return _0x39e86e(_0x13fd40[_0x3849('0x12')][_0x3849('0x14')]);}logger[_0x3849('0x12')](_0x3849('0xd'),_0x534292,_0x13fd40[_0x3849('0x12')][_0x3849('0x14')]);return _0x8db6eb(_0x13fd40[_0x3849('0x12')][_0x3849('0x14')]);}else{logger['info'](_0x3849('0xd'),_0x534292,_0x3849('0xe'));_0x8db6eb(_0x13fd40[_0x3849('0x15')]['message']);}})[_0x3849('0x16')](function(_0x24d2de){logger['error'](_0x3849('0xd'),_0x534292,_0x24d2de);_0x39e86e(_0x24d2de);});});}
\ No newline at end of file
index 50b9eb2..e7bd5bc 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0xeb38=['express','../../components/auth/service','../../components/interaction/service','../../config/environment','./analyticCustomReport.controller','isAuthenticated','index','get','/:id','show','/:id/preview','preview','/:id/run','run','/:id/query','query','post','create','delete','destroy','util','path','connect-timeout'];(function(_0x31e733,_0x89970d){var _0x599d3a=function(_0x5c625b){while(--_0x5c625b){_0x31e733['push'](_0x31e733['shift']());}};_0x599d3a(++_0x89970d);}(_0xeb38,0xfa));var _0x8eb3=function(_0x12f688,_0x585c25){_0x12f688=_0x12f688-0x0;var _0x59c3de=_0xeb38[_0x12f688];return _0x59c3de;};'use strict';var multer=require('multer');var util=require(_0x8eb3('0x0'));var path=require(_0x8eb3('0x1'));var timeout=require(_0x8eb3('0x2'));var express=require(_0x8eb3('0x3'));var router=express['Router']();var fs_extra=require('fs-extra');var auth=require(_0x8eb3('0x4'));var interaction=require(_0x8eb3('0x5'));var config=require(_0x8eb3('0x6'));var controller=require(_0x8eb3('0x7'));router['get']('/',auth[_0x8eb3('0x8')](),controller[_0x8eb3('0x9')]);router[_0x8eb3('0xa')](_0x8eb3('0xb'),auth[_0x8eb3('0x8')](),controller[_0x8eb3('0xc')]);router[_0x8eb3('0xa')](_0x8eb3('0xd'),auth[_0x8eb3('0x8')](),controller[_0x8eb3('0xe')]);router[_0x8eb3('0xa')](_0x8eb3('0xf'),auth[_0x8eb3('0x8')](),controller[_0x8eb3('0x10')]);router[_0x8eb3('0xa')](_0x8eb3('0x11'),auth['isAuthenticated'](),controller[_0x8eb3('0x12')]);router[_0x8eb3('0x13')]('/',auth['isAuthenticated'](),controller[_0x8eb3('0x14')]);router['put'](_0x8eb3('0xb'),auth[_0x8eb3('0x8')](),controller['update']);router[_0x8eb3('0x15')]('/:id',auth[_0x8eb3('0x8')](),controller[_0x8eb3('0x16')]);module['exports']=router;
\ No newline at end of file
index 9c6178f..9c963dc 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0x7da7=['TEXT','sequelize','exports','STRING'];(function(_0x2dafbe,_0x5d04de){var _0x58a45a=function(_0x50ac96){while(--_0x50ac96){_0x2dafbe['push'](_0x2dafbe['shift']());}};_0x58a45a(++_0x5d04de);}(_0x7da7,0x10d));var _0x77da=function(_0x3616bb,_0x86fe00){_0x3616bb=_0x3616bb-0x0;var _0x1c0994=_0x7da7[_0x3616bb];return _0x1c0994;};'use strict';var Sequelize=require(_0x77da('0x0'));module[_0x77da('0x1')]={'name':{'type':Sequelize[_0x77da('0x2')],'allowNull':![]},'description':{'type':Sequelize['STRING']},'parent':{'type':Sequelize['STRING']},'table':{'type':Sequelize[_0x77da('0x2')]},'conditions':{'type':Sequelize[_0x77da('0x3')]},'joins':{'type':Sequelize['TEXT']}};
\ No newline at end of file
index c9b19a0..18c054e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0x6d38=['Run\x20Query:','child_process','fork','../../components/export/','../../files/reports','savename','select','countTable','COUNT(*)','sequelize','run','SEC_TO_TIME(%s)','rimraf','zip-dir','fast-json-patch','bluebird','util','path','sox','ejs','fs-extra','lodash','squel','desk.js','to-csv','querystring','../../components/auth/service','../../components/parsers/qs','../../config/logger','api','../../config/environment','../../mysqldb','dbH','sendStatus','status','json','offset','undefined','limit','count','Content-Range','save','update','then','get','destroy','error','stack','name','send','index','map','rawAttributes','type','key','model','query','filters','intersection','attributes','length','hasOwnProperty','nolimit','order','sort','where','pick','filter','merge','VIRTUAL','options','includeAll','include','AnalyticDefaultReport','findAll','rows','show','keys','fields','find','catch','create','body','user','role','Reports','autoAssociation','UserProfileResource','DefaultReports','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','params','preview','join','right_join','cross_join','SUM(%s)','COUNT(%s)','MAX(%s)','MIN(%s)','AVG(%s)','GROUP_CONCAT(%s)','GROUP_CONCAT(%s\x20ORDER\x20BY\x20%s\x20DESC)','DATE(%s)','HOUR(%s)','ROUND(%s)','UNIX_TIMESTAMP(%s)','includes','IS\x20EMPTY','rules','operator','group','field','condition','value','getFields','ValidationErrorItem','AnalyticMetric','keyBy','from','table','MetricId','metric','function','replace','format','groupBy','orderBy','alias','joins','parse','parentKey','foreignTable','foreignKey','conditions','clone','debug','toString','QueryTypes','SELECT','left_join','COUNT(DISTINCT\x20%s)','GROUP_CONCAT(%s\x20ORDER\x20BY\x20%s\x20ASC)','IS\x20NULL','IS\x20NOT\x20NULL','IS\x20NOT\x20EMPTY','Sequelize','Please\x20insert\x20at\x20least\x20one\x20field','DESC','%s.%s\x20=\x20%s.%s','output','web','fullPath','randomstring','generate','csv','default','AnalyticExtractedReport','cdr','startDate','endDate','info'];(function(_0xfae23b,_0x2be4ba){var _0x200640=function(_0x4ae258){while(--_0x4ae258){_0xfae23b['push'](_0xfae23b['shift']());}};_0x200640(++_0x2be4ba);}(_0x6d38,0x1ef));var _0x86d3=function(_0x164eca,_0x555e28){_0x164eca=_0x164eca-0x0;var _0x2ce562=_0x6d38[_0x164eca];return _0x2ce562;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x86d3('0x0'));var zipdir=require(_0x86d3('0x1'));var jsonpatch=require(_0x86d3('0x2'));var rp=require('request-promise');var moment=require('moment');var BPromise=require(_0x86d3('0x3'));var Mustache=require('mustache');var util=require(_0x86d3('0x4'));var path=require(_0x86d3('0x5'));var sox=require(_0x86d3('0x6'));var csv=require('to-csv');var ejs=require(_0x86d3('0x7'));var fs=require('fs');var fs_extra=require(_0x86d3('0x8'));var _=require(_0x86d3('0x9'));var squel=require(_0x86d3('0xa'));var crypto=require('crypto');var jsforce=require('jsforce');var deskjs=require(_0x86d3('0xb'));var toCsv=require(_0x86d3('0xc'));var querystring=require(_0x86d3('0xd'));var Papa=require('papaparse');var Redis=require('ioredis');var authService=require(_0x86d3('0xe'));var qs=require(_0x86d3('0xf'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require('../../config/license/hardware');var logger=require(_0x86d3('0x10'))(_0x86d3('0x11'));var utils=require('../../config/utils');var config=require(_0x86d3('0x12'));var licenseUtil=require('../../config/license/util');var db=require(_0x86d3('0x13'))['db'];var dbH=require(_0x86d3('0x13'))[_0x86d3('0x14')];function respondWithStatusCode(_0x26d64c,_0xe1b3d7){_0xe1b3d7=_0xe1b3d7||0xcc;return function(_0x1b8d0a){if(_0x1b8d0a){return _0x26d64c[_0x86d3('0x15')](_0xe1b3d7);}return _0x26d64c[_0x86d3('0x16')](_0xe1b3d7)['end']();};}function respondWithResult(_0x1c1ba8,_0x1f35cf){_0x1f35cf=_0x1f35cf||0xc8;return function(_0x356e7d){if(_0x356e7d){return _0x1c1ba8[_0x86d3('0x16')](_0x1f35cf)[_0x86d3('0x17')](_0x356e7d);}};}function respondWithFilteredResult(_0x34fb3b,_0x1ff008){return function(_0x44436d){if(_0x44436d){var _0x53b437=typeof _0x1ff008[_0x86d3('0x18')]===_0x86d3('0x19')&&typeof _0x1ff008[_0x86d3('0x1a')]===_0x86d3('0x19');var _0x46feec=_0x44436d[_0x86d3('0x1b')];var _0x33e459=_0x53b437?0x0:_0x1ff008[_0x86d3('0x18')];var _0x9b76f2=_0x53b437?_0x44436d['count']:_0x1ff008[_0x86d3('0x18')]+_0x1ff008['limit'];var _0x6ced9e;if(_0x9b76f2>=_0x46feec){_0x9b76f2=_0x46feec;_0x6ced9e=0xc8;}else{_0x6ced9e=0xce;}_0x34fb3b['status'](_0x6ced9e);return _0x34fb3b['set'](_0x86d3('0x1c'),_0x33e459+'-'+_0x9b76f2+'/'+_0x46feec)[_0x86d3('0x17')](_0x44436d);}return null;};}function patchUpdates(_0x988066){return function(_0x1720ae){try{jsonpatch['apply'](_0x1720ae,_0x988066,!![]);}catch(_0x2901de){return BPromise['reject'](_0x2901de);}return _0x1720ae[_0x86d3('0x1d')]();};}function saveUpdates(_0x3fdf67,_0x1ce849){return function(_0x5b990d){if(_0x5b990d){return _0x5b990d[_0x86d3('0x1e')](_0x3fdf67)[_0x86d3('0x1f')](function(_0x1fa4ac){return _0x1fa4ac;});}return null;};}function removeEntity(_0x4bf5b8,_0x58ba51){return function(_0x26262a){if(_0x26262a){return _0x26262a['destroy']()[_0x86d3('0x1f')](function(){var _0x1bea5e=_0x26262a[_0x86d3('0x20')]({'plain':!![]});var _0x3c5fe4='DefaultReports';return db['UserProfileResource'][_0x86d3('0x21')]({'where':{'type':_0x3c5fe4,'resourceId':_0x1bea5e['id']}})[_0x86d3('0x1f')](function(){return _0x26262a;});})['then'](function(){_0x4bf5b8[_0x86d3('0x16')](0xcc)['end']();});}};}function handleEntityNotFound(_0x42413c,_0x41e2f0){return function(_0x287b96){if(!_0x287b96){_0x42413c[_0x86d3('0x15')](0x194);}return _0x287b96;};}function handleError(_0x11a6fd,_0x14c9ff){_0x14c9ff=_0x14c9ff||0x1f4;return function(_0x1f203e){logger[_0x86d3('0x22')](_0x1f203e[_0x86d3('0x23')]);if(_0x1f203e[_0x86d3('0x24')]){delete _0x1f203e[_0x86d3('0x24')];}_0x11a6fd[_0x86d3('0x16')](_0x14c9ff)[_0x86d3('0x25')](_0x1f203e);};}exports[_0x86d3('0x26')]=function(_0x5b09f6,_0x120a0c){var _0x403be3={},_0x2bda35={},_0x31cefe={'count':0x0,'rows':[]};var _0x7709f0=_[_0x86d3('0x27')](db['AnalyticDefaultReport'][_0x86d3('0x28')],function(_0x5c71df){return{'name':_0x5c71df['fieldName'],'type':_0x5c71df[_0x86d3('0x29')][_0x86d3('0x2a')]};});_0x2bda35[_0x86d3('0x2b')]=_['map'](_0x7709f0,_0x86d3('0x24'));_0x2bda35[_0x86d3('0x2c')]=_['keys'](_0x5b09f6[_0x86d3('0x2c')]);_0x2bda35[_0x86d3('0x2d')]=_[_0x86d3('0x2e')](_0x2bda35[_0x86d3('0x2b')],_0x2bda35[_0x86d3('0x2c')]);_0x403be3[_0x86d3('0x2f')]=_[_0x86d3('0x2e')](_0x2bda35[_0x86d3('0x2b')],qs['fields'](_0x5b09f6['query']['fields']));_0x403be3[_0x86d3('0x2f')]=_0x403be3['attributes'][_0x86d3('0x30')]?_0x403be3['attributes']:_0x2bda35[_0x86d3('0x2b')];if(!_0x5b09f6[_0x86d3('0x2c')][_0x86d3('0x31')](_0x86d3('0x32'))){_0x403be3[_0x86d3('0x1a')]=qs[_0x86d3('0x1a')](_0x5b09f6[_0x86d3('0x2c')]['limit']);_0x403be3[_0x86d3('0x18')]=qs[_0x86d3('0x18')](_0x5b09f6['query'][_0x86d3('0x18')]);}_0x403be3[_0x86d3('0x33')]=qs[_0x86d3('0x34')](_0x5b09f6[_0x86d3('0x2c')]['sort']);_0x403be3[_0x86d3('0x35')]=qs[_0x86d3('0x2d')](_[_0x86d3('0x36')](_0x5b09f6['query'],_0x2bda35[_0x86d3('0x2d')]),_0x7709f0);if(_0x5b09f6[_0x86d3('0x2c')][_0x86d3('0x37')]){_0x403be3[_0x86d3('0x35')]=_[_0x86d3('0x38')](_0x403be3[_0x86d3('0x35')],{'$or':_[_0x86d3('0x27')](_0x7709f0,function(_0x436065){if(_0x436065['type']!==_0x86d3('0x39')){var _0x470978={};_0x470978[_0x436065[_0x86d3('0x24')]]={'$like':'%'+_0x5b09f6[_0x86d3('0x2c')]['filter']+'%'};return _0x470978;}})});}_0x403be3=_[_0x86d3('0x38')]({},_0x403be3,_0x5b09f6[_0x86d3('0x3a')]);var _0x6f72be={'where':_0x403be3[_0x86d3('0x35')]};return db['AnalyticDefaultReport']['count'](_0x6f72be)[_0x86d3('0x1f')](function(_0x4f422b){_0x31cefe['count']=_0x4f422b;if(_0x5b09f6[_0x86d3('0x2c')][_0x86d3('0x3b')]){_0x403be3[_0x86d3('0x3c')]=[{'all':!![]}];}return db[_0x86d3('0x3d')][_0x86d3('0x3e')](_0x403be3);})['then'](function(_0x2a5f6c){_0x31cefe[_0x86d3('0x3f')]=_0x2a5f6c;return _0x31cefe;})[_0x86d3('0x1f')](respondWithFilteredResult(_0x120a0c,_0x403be3))['catch'](handleError(_0x120a0c,null));};exports[_0x86d3('0x40')]=function(_0x810d10,_0x5dfae8){var _0x369f68={'raw':!![],'where':{'id':_0x810d10['params']['id']}},_0xcf6c9e={};_0xcf6c9e['model']=_['keys'](db[_0x86d3('0x3d')][_0x86d3('0x28')]);_0xcf6c9e[_0x86d3('0x2c')]=_[_0x86d3('0x41')](_0x810d10[_0x86d3('0x2c')]);_0xcf6c9e[_0x86d3('0x2d')]=_['intersection'](_0xcf6c9e[_0x86d3('0x2b')],_0xcf6c9e[_0x86d3('0x2c')]);_0x369f68['attributes']=_[_0x86d3('0x2e')](_0xcf6c9e[_0x86d3('0x2b')],qs[_0x86d3('0x42')](_0x810d10[_0x86d3('0x2c')][_0x86d3('0x42')]));_0x369f68[_0x86d3('0x2f')]=_0x369f68['attributes'][_0x86d3('0x30')]?_0x369f68[_0x86d3('0x2f')]:_0xcf6c9e['model'];if(_0x810d10[_0x86d3('0x2c')][_0x86d3('0x3b')]){_0x369f68[_0x86d3('0x3c')]=[{'all':!![]}];}_0x369f68=_[_0x86d3('0x38')]({},_0x369f68,_0x810d10[_0x86d3('0x3a')]);return db['AnalyticDefaultReport'][_0x86d3('0x43')](_0x369f68)[_0x86d3('0x1f')](handleEntityNotFound(_0x5dfae8,null))[_0x86d3('0x1f')](respondWithResult(_0x5dfae8,null))[_0x86d3('0x44')](handleError(_0x5dfae8,null));};exports[_0x86d3('0x45')]=function(_0x7af7b3,_0x1a4345){return db[_0x86d3('0x3d')][_0x86d3('0x45')](_0x7af7b3[_0x86d3('0x46')],{})[_0x86d3('0x1f')](function(_0x1236ea){var _0x4ea940=_0x7af7b3[_0x86d3('0x47')][_0x86d3('0x20')]({'plain':!![]});if(!_0x4ea940)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x4ea940[_0x86d3('0x48')]===_0x86d3('0x47')){var _0x197047=_0x1236ea[_0x86d3('0x20')]({'plain':!![]});var _0x1dcff0=_0x86d3('0x49');return db['UserProfileSection']['find']({'where':{'name':_0x1dcff0,'userProfileId':_0x4ea940['userProfileId']},'raw':!![]})['then'](function(_0x159253){if(_0x159253&&_0x159253[_0x86d3('0x4a')]===0x0){return db[_0x86d3('0x4b')][_0x86d3('0x45')]({'name':_0x197047[_0x86d3('0x24')],'resourceId':_0x197047['id'],'type':_0x86d3('0x4c'),'sectionId':_0x159253['id']},{})[_0x86d3('0x1f')](function(){return _0x1236ea;});}else{return _0x1236ea;}})['catch'](function(_0x2afb07){logger[_0x86d3('0x22')](_0x86d3('0x4d'),_0x2afb07);throw _0x2afb07;});}return _0x1236ea;})[_0x86d3('0x1f')](respondWithResult(_0x1a4345,0xc9))[_0x86d3('0x44')](handleError(_0x1a4345,null));};exports[_0x86d3('0x1e')]=function(_0x34935f,_0x4c8828){if(_0x34935f[_0x86d3('0x46')]['id']){delete _0x34935f['body']['id'];}return db[_0x86d3('0x3d')][_0x86d3('0x43')]({'where':{'id':_0x34935f[_0x86d3('0x4e')]['id']}})[_0x86d3('0x1f')](handleEntityNotFound(_0x4c8828,null))[_0x86d3('0x1f')](saveUpdates(_0x34935f['body'],null))[_0x86d3('0x1f')](respondWithResult(_0x4c8828,null))[_0x86d3('0x44')](handleError(_0x4c8828,null));};exports[_0x86d3('0x21')]=function(_0x4e10d9,_0x4ad164){return db['AnalyticDefaultReport'][_0x86d3('0x43')]({'where':{'id':_0x4e10d9['params']['id']}})[_0x86d3('0x1f')](handleEntityNotFound(_0x4ad164,null))[_0x86d3('0x1f')](removeEntity(_0x4ad164,null))[_0x86d3('0x44')](handleError(_0x4ad164,null));};exports[_0x86d3('0x4f')]=function(_0x5963bb,_0x4cd835){var _0x551806=0xa;var _0x28655a=[_0x86d3('0x50'),'left_join',_0x86d3('0x51'),_0x86d3('0x52')];var _0xa085b2={'SUM':_0x86d3('0x53'),'COUNT':_0x86d3('0x54'),'COUNT DISTINCT':'COUNT(DISTINCT\x20%s)','MAX':_0x86d3('0x55'),'MIN':_0x86d3('0x56'),'AVG':_0x86d3('0x57'),'GROUP_CONCAT':_0x86d3('0x58'),'GROUP_CONCAT ASC':'GROUP_CONCAT(%s\x20ORDER\x20BY\x20%s\x20ASC)','GROUP_CONCAT DESC':_0x86d3('0x59')};var _0x41fad7={'SEC_TO_TIME':'SEC_TO_TIME(%s)','DATE':_0x86d3('0x5a'),'HOUR':_0x86d3('0x5b'),'ROUND':_0x86d3('0x5c'),'UNIX_TIMESTAMP':_0x86d3('0x5d')};var _0x4598d4=function(_0x4029a4){return!_[_0x86d3('0x5e')](['IS\x20NULL','IS\x20NOT\x20NULL',_0x86d3('0x5f'),'IS\x20NOT\x20EMPTY'],_0x4029a4);};var _0x528ca8=function(_0x58e4b6){if(!_0x58e4b6||!_0x58e4b6[_0x86d3('0x60')]['length']){return'';}for(var _0x254ac3='(',_0x5f2ed6=0x0;_0x5f2ed6<_0x58e4b6[_0x86d3('0x60')][_0x86d3('0x30')];_0x5f2ed6+=0x1){_0x5f2ed6>0x0&&(_0x254ac3+='\x20'+_0x58e4b6[_0x86d3('0x61')]+'\x20');_0x254ac3+=_0x58e4b6['rules'][_0x5f2ed6]['group']?_0x528ca8(_0x58e4b6[_0x86d3('0x60')][_0x5f2ed6][_0x86d3('0x62')]):_0x58e4b6[_0x86d3('0x60')][_0x5f2ed6][_0x86d3('0x63')]+'\x20'+_0x58e4b6[_0x86d3('0x60')][_0x5f2ed6][_0x86d3('0x64')]+(_0x4598d4(_0x58e4b6[_0x86d3('0x60')][_0x5f2ed6][_0x86d3('0x64')])?'\x20'+_0x58e4b6[_0x86d3('0x60')][_0x5f2ed6][_0x86d3('0x65')]:'');}return _0x254ac3+')';};var _0x1e3479={'where':{'id':_0x5963bb[_0x86d3('0x4e')]['id']}},_0x265beb,_0xfaf168,_0xf0dbbb,_0x3f978c,_0x5e1835;_0x1e3479=_[_0x86d3('0x38')]({},_0x1e3479,_0x5963bb['options']);return db[_0x86d3('0x3d')][_0x86d3('0x43')](_0x1e3479)[_0x86d3('0x1f')](function(_0x52dc99){if(_0x52dc99){_0x265beb=_0x52dc99;return _0x52dc99[_0x86d3('0x66')]();}return null;})[_0x86d3('0x1f')](function(_0x45e8d9){if(_0x45e8d9){if(!_0x45e8d9[_0x86d3('0x30')]){throw new db['Sequelize'][(_0x86d3('0x67'))]('Please\x20insert\x20at\x20least\x20one\x20field',0x193);}_0xfaf168=_0x45e8d9;return db[_0x86d3('0x68')][_0x86d3('0x3e')]({'raw':!![]});}return null;})[_0x86d3('0x1f')](function(_0x2d4bc1){if(_0x2d4bc1){_0xf0dbbb=_[_0x86d3('0x69')](_0x2d4bc1,'id');var _0x56fd96;var _0x3cc1d8=squel['select']();_0x3cc1d8[_0x86d3('0x6a')](_0x265beb[_0x86d3('0x6b')]);for(var _0x5866fe=0x0;_0x5866fe<_0xfaf168[_0x86d3('0x30')];_0x5866fe+=0x1){_0x56fd96=_0xfaf168[_0x5866fe][_0x86d3('0x6c')]?_0xf0dbbb[_0xfaf168[_0x5866fe][_0x86d3('0x6c')]][_0x86d3('0x6d')]:_0xfaf168[_0x5866fe][_0x86d3('0x63')];_0x56fd96=_0xfaf168[_0x5866fe][_0x86d3('0x6e')]?_[_0x86d3('0x6f')](_0xa085b2[_0xfaf168[_0x5866fe]['function']],'%s',_0x56fd96):_0x56fd96;_0x56fd96=_0xfaf168[_0x5866fe][_0x86d3('0x70')]?_[_0x86d3('0x6f')](_0x41fad7[_0xfaf168[_0x5866fe][_0x86d3('0x70')]],'%s',_0x56fd96):_0x56fd96;if(_0xfaf168[_0x5866fe][_0x86d3('0x71')]){_0x3cc1d8[_0x86d3('0x62')](_0x56fd96);}_0xfaf168[_0x5866fe]['orderBy']&&_0x3cc1d8[_0x86d3('0x33')](_0x56fd96,_0xfaf168[_0x5866fe][_0x86d3('0x72')]==='DESC'?![]:!![]);_0x3cc1d8[_0x86d3('0x63')](_0x56fd96,_0xfaf168[_0x5866fe][_0x86d3('0x73')]||_0x56fd96);}if(_0x265beb[_0x86d3('0x74')]){_0x265beb[_0x86d3('0x74')]=JSON[_0x86d3('0x75')](_0x265beb[_0x86d3('0x74')]);for(var _0x1bf5ba=0x0;_0x1bf5ba<_0x265beb[_0x86d3('0x74')][_0x86d3('0x30')];_0x1bf5ba+=0x1){if(_0x265beb[_0x86d3('0x74')][_0x1bf5ba][_0x86d3('0x29')]&&_[_0x86d3('0x5e')](_0x28655a,_0x265beb[_0x86d3('0x74')][_0x1bf5ba][_0x86d3('0x29')])&&_0x265beb['joins'][_0x1bf5ba][_0x86d3('0x76')]&&_0x265beb[_0x86d3('0x74')][_0x1bf5ba][_0x86d3('0x77')]&&_0x265beb[_0x86d3('0x74')][_0x1bf5ba]['foreignKey']){_0x3cc1d8[_0x265beb[_0x86d3('0x74')][_0x1bf5ba][_0x86d3('0x29')]](_0x265beb[_0x86d3('0x74')][_0x1bf5ba][_0x86d3('0x77')],null,util['format']('%s.%s\x20=\x20%s.%s',_0x265beb[_0x86d3('0x6b')],_0x265beb['joins'][_0x1bf5ba][_0x86d3('0x76')],_0x265beb['joins'][_0x1bf5ba]['foreignTable'],_0x265beb[_0x86d3('0x74')][_0x1bf5ba][_0x86d3('0x78')]));}}}if(_0x265beb[_0x86d3('0x79')]){_0x265beb[_0x86d3('0x79')]=JSON[_0x86d3('0x75')](_0x265beb['conditions']);_0x3cc1d8[_0x86d3('0x35')](_0x528ca8(_0x265beb[_0x86d3('0x79')]['group']));}_0x5e1835=_0x3cc1d8[_0x86d3('0x7a')]();_0x3cc1d8[_0x86d3('0x1a')](_0x551806);_0x3cc1d8['offset'](0x0);logger[_0x86d3('0x7b')]('Limited\x20Query:',_0x3cc1d8[_0x86d3('0x7c')]());return dbH['sequelize']['query'](_0x3cc1d8[_0x86d3('0x7c')](),{'type':dbH['sequelize'][_0x86d3('0x7d')][_0x86d3('0x7e')]});}})[_0x86d3('0x1f')](respondWithResult(_0x4cd835,null))[_0x86d3('0x44')](handleError(_0x4cd835,null));};function runReport(_0x3193d5,_0x3a1acc,_0x268c93){var _0x3b989c=_0x3a1acc['name'];var _0x245b39=0xa;var _0x158f56=[_0x86d3('0x50'),_0x86d3('0x7f'),_0x86d3('0x51'),'cross_join'];var _0x3d8b35={'SUM':_0x86d3('0x53'),'COUNT':_0x86d3('0x54'),'COUNT DISTINCT':_0x86d3('0x80'),'MAX':_0x86d3('0x55'),'MIN':_0x86d3('0x56'),'AVG':_0x86d3('0x57'),'GROUP_CONCAT':'GROUP_CONCAT(%s)','GROUP_CONCAT ASC':_0x86d3('0x81'),'GROUP_CONCAT DESC':'GROUP_CONCAT(%s\x20ORDER\x20BY\x20%s\x20DESC)'};var _0xca2e0={'SEC_TO_TIME':'SEC_TO_TIME(%s)','DATE':'DATE(%s)','HOUR':_0x86d3('0x5b'),'ROUND':_0x86d3('0x5c'),'UNIX_TIMESTAMP':'UNIX_TIMESTAMP(%s)'};var _0x1b503a=function(_0x24410c){return!_[_0x86d3('0x5e')]([_0x86d3('0x82'),_0x86d3('0x83'),_0x86d3('0x5f'),_0x86d3('0x84')],_0x24410c);};var _0x5f4a38=function(_0x593b85){if(!_0x593b85||!_0x593b85[_0x86d3('0x60')][_0x86d3('0x30')]){return'';}for(var _0x3fac94='(',_0x28d98e=0x0;_0x28d98e<_0x593b85[_0x86d3('0x60')][_0x86d3('0x30')];_0x28d98e+=0x1){_0x28d98e>0x0&&(_0x3fac94+='\x20'+_0x593b85['operator']+'\x20');_0x3fac94+=_0x593b85[_0x86d3('0x60')][_0x28d98e][_0x86d3('0x62')]?_0x5f4a38(_0x593b85[_0x86d3('0x60')][_0x28d98e][_0x86d3('0x62')]):_0x593b85[_0x86d3('0x60')][_0x28d98e][_0x86d3('0x63')]+'\x20'+_0x593b85[_0x86d3('0x60')][_0x28d98e][_0x86d3('0x64')]+(_0x1b503a(_0x593b85[_0x86d3('0x60')][_0x28d98e]['condition'])?'\x20'+_0x593b85[_0x86d3('0x60')][_0x28d98e][_0x86d3('0x65')]:'');}return _0x3fac94+')';};var _0x4b871b={'where':{'id':_0x3193d5['id']}},_0x584a57,_0x36ee46,_0x1cbc3a,_0x682a6d,_0x5004cd;_0x4b871b=_[_0x86d3('0x38')]({},_0x4b871b,_0x268c93);return db[_0x86d3('0x3d')][_0x86d3('0x43')](_0x4b871b)[_0x86d3('0x1f')](function(_0x3d3e7f){if(_0x3d3e7f){_0x584a57=_0x3d3e7f;return _0x3d3e7f['getFields']();}return null;})[_0x86d3('0x1f')](function(_0x1aaf08){if(_0x1aaf08){if(!_0x1aaf08['length']){throw new db[(_0x86d3('0x85'))][(_0x86d3('0x67'))](_0x86d3('0x86'),0x193);}_0x36ee46=_0x1aaf08;return db[_0x86d3('0x68')]['findAll']({'raw':!![]});}return null;})[_0x86d3('0x1f')](function(_0x2896e1){if(_0x2896e1){_0x1cbc3a=_[_0x86d3('0x69')](_0x2896e1,'id');var _0x18295c;var _0x44af1c=squel['select']();_0x44af1c[_0x86d3('0x6a')](_0x584a57[_0x86d3('0x6b')]);for(var _0x3582a2=0x0;_0x3582a2<_0x36ee46[_0x86d3('0x30')];_0x3582a2+=0x1){_0x18295c=_0x36ee46[_0x3582a2][_0x86d3('0x6c')]?_0x1cbc3a[_0x36ee46[_0x3582a2][_0x86d3('0x6c')]][_0x86d3('0x6d')]:_0x36ee46[_0x3582a2][_0x86d3('0x63')];_0x18295c=_0x36ee46[_0x3582a2][_0x86d3('0x6e')]?_[_0x86d3('0x6f')](_0x3d8b35[_0x36ee46[_0x3582a2]['function']],'%s',_0x18295c):_0x18295c;_0x18295c=_0x36ee46[_0x3582a2]['format']?_[_0x86d3('0x6f')](_0xca2e0[_0x36ee46[_0x3582a2][_0x86d3('0x70')]],'%s',_0x18295c):_0x18295c;if(_0x36ee46[_0x3582a2]['groupBy']){_0x44af1c[_0x86d3('0x62')](_0x18295c);}_0x36ee46[_0x3582a2][_0x86d3('0x72')]&&_0x44af1c[_0x86d3('0x33')](_0x18295c,_0x36ee46[_0x3582a2][_0x86d3('0x72')]===_0x86d3('0x87')?![]:!![]);_0x44af1c[_0x86d3('0x63')](_0x18295c,_0x36ee46[_0x3582a2][_0x86d3('0x73')]||_0x18295c);}if(_0x584a57[_0x86d3('0x74')]){_0x584a57[_0x86d3('0x74')]=JSON['parse'](_0x584a57['joins']);for(var _0x48a6d7=0x0;_0x48a6d7<_0x584a57['joins'][_0x86d3('0x30')];_0x48a6d7+=0x1){if(_0x584a57[_0x86d3('0x74')][_0x48a6d7][_0x86d3('0x29')]&&_[_0x86d3('0x5e')](_0x158f56,_0x584a57[_0x86d3('0x74')][_0x48a6d7][_0x86d3('0x29')])&&_0x584a57[_0x86d3('0x74')][_0x48a6d7]['parentKey']&&_0x584a57[_0x86d3('0x74')][_0x48a6d7][_0x86d3('0x77')]&&_0x584a57[_0x86d3('0x74')][_0x48a6d7][_0x86d3('0x78')]){_0x44af1c[_0x584a57['joins'][_0x48a6d7][_0x86d3('0x29')]](_0x584a57['joins'][_0x48a6d7][_0x86d3('0x77')],null,util[_0x86d3('0x70')](_0x86d3('0x88'),_0x584a57[_0x86d3('0x6b')],_0x584a57[_0x86d3('0x74')][_0x48a6d7]['parentKey'],_0x584a57['joins'][_0x48a6d7][_0x86d3('0x77')],_0x584a57['joins'][_0x48a6d7][_0x86d3('0x78')]));}}}if(_0x584a57['conditions']){_0x584a57[_0x86d3('0x79')]=JSON['parse'](_0x584a57['conditions']);_0x44af1c[_0x86d3('0x35')](_0x5f4a38(_0x584a57[_0x86d3('0x79')][_0x86d3('0x62')]));}_0x5004cd=_0x44af1c[_0x86d3('0x7a')]();_0x44af1c[_0x86d3('0x1a')](_0x245b39);_0x44af1c[_0x86d3('0x18')](0x0);return;}})[_0x86d3('0x1f')](function(){if(_0x3a1acc[_0x86d3('0x89')]===_0x86d3('0x8a')){return null;}var _0x120a85=_[_0x86d3('0x38')](_0x3a1acc,{'name':_0x3a1acc[_0x86d3('0x8b')]||_0x3a1acc[_0x86d3('0x24')]||_0x584a57[_0x86d3('0x24')],'basename':_0x3b989c,'savename':util[_0x86d3('0x70')]('%s-%s.%s',_0x3a1acc['name']||_0x584a57['name'],require(_0x86d3('0x8c'))[_0x86d3('0x8d')](0x4),_0x3a1acc[_0x86d3('0x89')]||_0x86d3('0x8e')),'reportId':_0x584a57['id'],'reportType':_0x86d3('0x8f')});return db[_0x86d3('0x90')][_0x86d3('0x45')](_0x120a85,{'raw':!![]});})[_0x86d3('0x1f')](function(_0x10e23d){if(_0x584a57[_0x86d3('0x6b')]===_0x86d3('0x91')){_0x5004cd['where'](_0x584a57[_0x86d3('0x6b')]+'.calldate\x20BETWEEN\x20?\x20AND\x20?',_0x3a1acc[_0x86d3('0x92')],_0x3a1acc[_0x86d3('0x93')]);}else{_0x5004cd[_0x86d3('0x35')](_0x584a57[_0x86d3('0x6b')]+'.createdAt\x20BETWEEN\x20?\x20AND\x20?',_0x3a1acc[_0x86d3('0x92')],_0x3a1acc[_0x86d3('0x93')]);}if(_0x10e23d){logger[_0x86d3('0x94')](_0x86d3('0x95'),_0x5004cd[_0x86d3('0x7c')]());require(_0x86d3('0x96'))[_0x86d3('0x97')](path[_0x86d3('0x50')](__dirname,_0x86d3('0x98'),_0x10e23d[_0x86d3('0x89')]),[_0x10e23d['id'],_0x5004cd[_0x86d3('0x7c')](),path[_0x86d3('0x50')](__dirname,_0x86d3('0x99'),_0x10e23d[_0x86d3('0x9a')]),_0x3b989c]);return _0x10e23d;}else{var _0x428b11=squel[_0x86d3('0x9b')]();_0x428b11[_0x86d3('0x6a')]('('+_0x5004cd['toString']()+')',_0x86d3('0x9c'));_0x428b11[_0x86d3('0x63')](_0x86d3('0x9d'),_0x86d3('0x1b'));_0x5004cd['limit'](_0x3a1acc[_0x86d3('0x1a')]||_0x245b39);_0x5004cd['offset'](_0x3a1acc['offset']||0x0);return dbH[_0x86d3('0x9e')][_0x86d3('0x2c')](_0x428b11[_0x86d3('0x7c')](),{'type':dbH[_0x86d3('0x9e')][_0x86d3('0x7d')][_0x86d3('0x7e')]})[_0x86d3('0x1f')](function(_0x4777f1){if(!_0x4777f1['length']){_0x682a6d=0x0;}else{_0x682a6d=_0x4777f1[0x0]['count']||0x0;}return dbH['sequelize'][_0x86d3('0x2c')](_0x5004cd[_0x86d3('0x7c')](),{'type':dbH[_0x86d3('0x9e')]['QueryTypes'][_0x86d3('0x7e')]});})['then'](function(_0x435b8e){return{'rows':_0x435b8e||[],'count':_0x682a6d};});}});}exports[_0x86d3('0x9f')]=function(_0x73b8e6,_0x2c98e1){return runReport(_0x73b8e6['params'],_0x73b8e6[_0x86d3('0x2c')],_0x73b8e6[_0x86d3('0x3a')])[_0x86d3('0x1f')](respondWithResult(_0x2c98e1,null))['catch'](handleError(_0x2c98e1,null));};exports['runReport']=runReport;exports['query']=function(_0x458997,_0x1e3559){var _0x49a101=0xa;var _0x38d724=['join',_0x86d3('0x7f'),_0x86d3('0x51'),_0x86d3('0x52')];var _0x56ff91={'SUM':_0x86d3('0x53'),'COUNT':_0x86d3('0x54'),'COUNT DISTINCT':_0x86d3('0x80'),'MAX':_0x86d3('0x55'),'MIN':_0x86d3('0x56'),'AVG':'AVG(%s)','GROUP_CONCAT':_0x86d3('0x58'),'GROUP_CONCAT ASC':_0x86d3('0x81'),'GROUP_CONCAT DESC':'GROUP_CONCAT(%s\x20ORDER\x20BY\x20%s\x20DESC)'};var _0x1f347e={'SEC_TO_TIME':_0x86d3('0xa0'),'DATE':'DATE(%s)','HOUR':_0x86d3('0x5b'),'ROUND':'ROUND(%s)','UNIX_TIMESTAMP':'UNIX_TIMESTAMP(%s)'};var _0x45b210=function(_0x144e43){return!_[_0x86d3('0x5e')]([_0x86d3('0x82'),_0x86d3('0x83'),_0x86d3('0x5f'),_0x86d3('0x84')],_0x144e43);};var _0xdc7c21=function(_0x2e0397){if(!_0x2e0397||!_0x2e0397[_0x86d3('0x60')][_0x86d3('0x30')]){return'';}for(var _0x2cc617='(',_0x25339c=0x0;_0x25339c<_0x2e0397['rules'][_0x86d3('0x30')];_0x25339c+=0x1){_0x25339c>0x0&&(_0x2cc617+='\x20'+_0x2e0397[_0x86d3('0x61')]+'\x20');_0x2cc617+=_0x2e0397[_0x86d3('0x60')][_0x25339c][_0x86d3('0x62')]?_0xdc7c21(_0x2e0397[_0x86d3('0x60')][_0x25339c][_0x86d3('0x62')]):_0x2e0397['rules'][_0x25339c][_0x86d3('0x63')]+'\x20'+_0x2e0397['rules'][_0x25339c][_0x86d3('0x64')]+(_0x45b210(_0x2e0397[_0x86d3('0x60')][_0x25339c]['condition'])?'\x20'+_0x2e0397['rules'][_0x25339c][_0x86d3('0x65')]:'');}return _0x2cc617+')';};var _0x2c0070={'where':{'id':_0x458997[_0x86d3('0x4e')]['id']}},_0x31d436,_0x56e713,_0x525559,_0x3b9e1e,_0x1d8d7c;_0x2c0070=_['merge']({},_0x2c0070,_0x458997[_0x86d3('0x3a')]);return db[_0x86d3('0x3d')][_0x86d3('0x43')](_0x2c0070)[_0x86d3('0x1f')](function(_0x1f80be){if(_0x1f80be){_0x31d436=_0x1f80be;return _0x1f80be[_0x86d3('0x66')]();}return null;})[_0x86d3('0x1f')](function(_0x3dddbe){if(_0x3dddbe){if(!_0x3dddbe[_0x86d3('0x30')]){throw new db[(_0x86d3('0x85'))][(_0x86d3('0x67'))]('Please\x20insert\x20at\x20least\x20one\x20field',0x193);}_0x56e713=_0x3dddbe;return db[_0x86d3('0x68')]['findAll']({'raw':!![]});}return null;})['then'](function(_0x1d7e83){if(_0x1d7e83){_0x525559=_[_0x86d3('0x69')](_0x1d7e83,'id');var _0x5d9385;var _0x49a499=squel[_0x86d3('0x9b')]();_0x49a499[_0x86d3('0x6a')](_0x31d436[_0x86d3('0x6b')]);for(var _0x33e0a5=0x0;_0x33e0a5<_0x56e713['length'];_0x33e0a5+=0x1){_0x5d9385=_0x56e713[_0x33e0a5][_0x86d3('0x6c')]?_0x525559[_0x56e713[_0x33e0a5][_0x86d3('0x6c')]][_0x86d3('0x6d')]:_0x56e713[_0x33e0a5][_0x86d3('0x63')];_0x5d9385=_0x56e713[_0x33e0a5][_0x86d3('0x6e')]?_['replace'](_0x56ff91[_0x56e713[_0x33e0a5][_0x86d3('0x6e')]],'%s',_0x5d9385):_0x5d9385;_0x5d9385=_0x56e713[_0x33e0a5][_0x86d3('0x70')]?_[_0x86d3('0x6f')](_0x1f347e[_0x56e713[_0x33e0a5]['format']],'%s',_0x5d9385):_0x5d9385;if(_0x56e713[_0x33e0a5][_0x86d3('0x71')]){_0x49a499['group'](_0x5d9385);}_0x56e713[_0x33e0a5][_0x86d3('0x72')]&&_0x49a499[_0x86d3('0x33')](_0x5d9385,_0x56e713[_0x33e0a5]['orderBy']===_0x86d3('0x87')?![]:!![]);_0x49a499[_0x86d3('0x63')](_0x5d9385,_0x56e713[_0x33e0a5][_0x86d3('0x73')]||_0x5d9385);}if(_0x31d436[_0x86d3('0x74')]){_0x31d436[_0x86d3('0x74')]=JSON[_0x86d3('0x75')](_0x31d436['joins']);for(var _0x10af91=0x0;_0x10af91<_0x31d436['joins'][_0x86d3('0x30')];_0x10af91+=0x1){if(_0x31d436[_0x86d3('0x74')][_0x10af91][_0x86d3('0x29')]&&_[_0x86d3('0x5e')](_0x38d724,_0x31d436['joins'][_0x10af91][_0x86d3('0x29')])&&_0x31d436[_0x86d3('0x74')][_0x10af91][_0x86d3('0x76')]&&_0x31d436[_0x86d3('0x74')][_0x10af91][_0x86d3('0x77')]&&_0x31d436[_0x86d3('0x74')][_0x10af91]['foreignKey']){_0x49a499[_0x31d436[_0x86d3('0x74')][_0x10af91][_0x86d3('0x29')]](_0x31d436['joins'][_0x10af91]['foreignTable'],null,util[_0x86d3('0x70')]('%s.%s\x20=\x20%s.%s',_0x31d436['table'],_0x31d436[_0x86d3('0x74')][_0x10af91][_0x86d3('0x76')],_0x31d436[_0x86d3('0x74')][_0x10af91]['foreignTable'],_0x31d436[_0x86d3('0x74')][_0x10af91][_0x86d3('0x78')]));}}}if(_0x31d436[_0x86d3('0x79')]){_0x31d436[_0x86d3('0x79')]=JSON[_0x86d3('0x75')](_0x31d436['conditions']);_0x49a499[_0x86d3('0x35')](_0xdc7c21(_0x31d436[_0x86d3('0x79')]['group']));}_0x1d8d7c=_0x49a499['clone']();_0x49a499['limit'](_0x49a101);_0x49a499[_0x86d3('0x18')](0x0);logger['debug']('Limited\x20Query:',_0x49a499[_0x86d3('0x7c')]());return dbH[_0x86d3('0x9e')]['query'](_0x49a499['toString'](),{'type':dbH[_0x86d3('0x9e')][_0x86d3('0x7d')][_0x86d3('0x7e')]});}})['then'](function(){return{'sql':_0x1d8d7c[_0x86d3('0x7c')]()};})[_0x86d3('0x1f')](respondWithResult(_0x1e3559,null))[_0x86d3('0x44')](handleError(_0x1e3559,null));};
\ No newline at end of file
index 4f7db58..4afc8ca 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0x4a6d=['../../config/logger','api','moment','bluebird','request-promise','path','rimraf','../../config/environment','./analyticDefaultReport.attributes','exports','AnalyticDefaultReport','analytics_default_reports','lodash','util'];(function(_0x1a3fb7,_0x5db72e){var _0x33b999=function(_0x29f56a){while(--_0x29f56a){_0x1a3fb7['push'](_0x1a3fb7['shift']());}};_0x33b999(++_0x5db72e);}(_0x4a6d,0x140));var _0xd4a6=function(_0x494d9a,_0x6d1bcd){_0x494d9a=_0x494d9a-0x0;var _0x181f91=_0x4a6d[_0x494d9a];return _0x181f91;};'use strict';var _=require(_0xd4a6('0x0'));var util=require(_0xd4a6('0x1'));var logger=require(_0xd4a6('0x2'))(_0xd4a6('0x3'));var moment=require(_0xd4a6('0x4'));var BPromise=require(_0xd4a6('0x5'));var rp=require(_0xd4a6('0x6'));var fs=require('fs');var path=require(_0xd4a6('0x7'));var rimraf=require(_0xd4a6('0x8'));var config=require(_0xd4a6('0x9'));var attributes=require(_0xd4a6('0xa'));module[_0xd4a6('0xb')]=function(_0x57a056,_0x70fd16){return _0x57a056['define'](_0xd4a6('0xc'),attributes,{'tableName':_0xd4a6('0xd'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 284545b..ebb408a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0x4e8d=['code','message','result','catch','bluebird','randomstring','ioredis','../../config/utils','../../config/logger','rpc','jayson/promise','http','request','info','AnalyticDefaultReport,\x20%s,\x20%s','request\x20sent','debug','AnalyticDefaultReport,\x20%s,\x20%s,\x20%s','stringify','error'];(function(_0x12dd61,_0x7ccade){var _0x1d8659=function(_0x580867){while(--_0x580867){_0x12dd61['push'](_0x12dd61['shift']());}};_0x1d8659(++_0x7ccade);}(_0x4e8d,0x1bc));var _0xd4e8=function(_0x43fe64,_0x5a4d33){_0x43fe64=_0x43fe64-0x0;var _0x4aabb7=_0x4e8d[_0x43fe64];return _0x4aabb7;};'use strict';var _=require('lodash');var util=require('util');var moment=require('moment');var BPromise=require(_0xd4e8('0x0'));var rs=require(_0xd4e8('0x1'));var fs=require('fs');var Redis=require(_0xd4e8('0x2'));var db=require('../../mysqldb')['db'];var utils=require(_0xd4e8('0x3'));var logger=require(_0xd4e8('0x4'))(_0xd4e8('0x5'));var config=require('../../config/environment');var jayson=require(_0xd4e8('0x6'));var client=jayson['client'][_0xd4e8('0x7')]({'port':0x232a});function respondWithRpcPromise(_0x34ff42,_0x2c45c2,_0x1b164a){return new BPromise(function(_0x4c2ba4,_0x527543){return client[_0xd4e8('0x8')](_0x34ff42,_0x1b164a)['then'](function(_0x16daf4){logger[_0xd4e8('0x9')](_0xd4e8('0xa'),_0x2c45c2,_0xd4e8('0xb'));logger[_0xd4e8('0xc')](_0xd4e8('0xd'),_0x2c45c2,_0xd4e8('0xb'),JSON[_0xd4e8('0xe')](_0x16daf4));if(_0x16daf4[_0xd4e8('0xf')]){if(_0x16daf4[_0xd4e8('0xf')][_0xd4e8('0x10')]===0x1f4){logger[_0xd4e8('0xf')](_0xd4e8('0xa'),_0x2c45c2,_0x16daf4[_0xd4e8('0xf')][_0xd4e8('0x11')]);return _0x527543(_0x16daf4['error'][_0xd4e8('0x11')]);}logger[_0xd4e8('0xf')]('AnalyticDefaultReport,\x20%s,\x20%s',_0x2c45c2,_0x16daf4[_0xd4e8('0xf')][_0xd4e8('0x11')]);return _0x4c2ba4(_0x16daf4['error'][_0xd4e8('0x11')]);}else{logger[_0xd4e8('0x9')]('AnalyticDefaultReport,\x20%s,\x20%s',_0x2c45c2,_0xd4e8('0xb'));_0x4c2ba4(_0x16daf4[_0xd4e8('0x12')][_0xd4e8('0x11')]);}})[_0xd4e8('0x13')](function(_0xf7aea7){logger[_0xd4e8('0xf')](_0xd4e8('0xa'),_0x2c45c2,_0xf7aea7);_0x527543(_0xf7aea7);});});}
\ No newline at end of file
index 05ce882..6d366b1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0xa041=['./analyticDefaultReport.controller','get','isAuthenticated','index','/:id','show','/:id/preview','/:id/run','run','/:id/query','post','update','exports','multer','path','connect-timeout','express','Router','../../components/auth/service','../../components/interaction/service','../../config/environment'];(function(_0x347aee,_0x3c7345){var _0x4a3ac2=function(_0x412723){while(--_0x412723){_0x347aee['push'](_0x347aee['shift']());}};_0x4a3ac2(++_0x3c7345);}(_0xa041,0xa0));var _0x1a04=function(_0x2c91e9,_0x2fb965){_0x2c91e9=_0x2c91e9-0x0;var _0x13f0ff=_0xa041[_0x2c91e9];return _0x13f0ff;};'use strict';var multer=require(_0x1a04('0x0'));var util=require('util');var path=require(_0x1a04('0x1'));var timeout=require(_0x1a04('0x2'));var express=require(_0x1a04('0x3'));var router=express[_0x1a04('0x4')]();var fs_extra=require('fs-extra');var auth=require(_0x1a04('0x5'));var interaction=require(_0x1a04('0x6'));var config=require(_0x1a04('0x7'));var controller=require(_0x1a04('0x8'));router[_0x1a04('0x9')]('/',auth[_0x1a04('0xa')](),controller[_0x1a04('0xb')]);router[_0x1a04('0x9')](_0x1a04('0xc'),auth['isAuthenticated'](),controller[_0x1a04('0xd')]);router['get'](_0x1a04('0xe'),auth['isAuthenticated'](),controller['preview']);router[_0x1a04('0x9')](_0x1a04('0xf'),auth['isAuthenticated'](),controller[_0x1a04('0x10')]);router[_0x1a04('0x9')](_0x1a04('0x11'),auth['isAuthenticated'](),controller['query']);router[_0x1a04('0x12')]('/',auth['isAuthenticated'](),controller['create']);router['put']('/:id',auth[_0x1a04('0xa')](),controller[_0x1a04('0x13')]);router['delete'](_0x1a04('0xc'),auth[_0x1a04('0xa')](),controller['destroy']);module[_0x1a04('0x14')]=router;
\ No newline at end of file
index 5c10b3a..ba0e8ac 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0x64ad=['INTEGER','UNSIGNED','sequelize','moment','STRING','ENUM','csv','pdf','DATE','Loading','manual','scheduled'];(function(_0x370a52,_0x903547){var _0x987de0=function(_0x1d03f8){while(--_0x1d03f8){_0x370a52['push'](_0x370a52['shift']());}};_0x987de0(++_0x903547);}(_0x64ad,0x6e));var _0xd64a=function(_0x369151,_0x179f72){_0x369151=_0x369151-0x0;var _0x4292d5=_0x64ad[_0x369151];return _0x4292d5;};'use strict';var Sequelize=require(_0xd64a('0x0'));var moment=require(_0xd64a('0x1'));module['exports']={'name':{'type':Sequelize[_0xd64a('0x2')],'allowNull':![]},'basename':{'type':Sequelize[_0xd64a('0x2')],'allowNull':![]},'output':{'type':Sequelize[_0xd64a('0x3')](_0xd64a('0x4'),_0xd64a('0x5'),'xlsx'),'allowNull':![],'defaultValue':'csv'},'savename':{'type':Sequelize[_0xd64a('0x2')],'allowNull':![]},'startDate':{'type':Sequelize['DATE']},'endDate':{'type':Sequelize[_0xd64a('0x6')]},'status':{'type':Sequelize[_0xd64a('0x2')],'defaultValue':_0xd64a('0x7')},'type':{'type':Sequelize[_0xd64a('0x3')](_0xd64a('0x8'),_0xd64a('0x9')),'allowNull':![],'defaultValue':_0xd64a('0x8')},'reportId':{'type':Sequelize[_0xd64a('0xa')](0xb)[_0xd64a('0xb')]},'reportType':{'type':Sequelize[_0xd64a('0x2')]}};
\ No newline at end of file
index d88ffd0..fd155c4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0x7c70=['name','send','index','map','fieldName','type','key','query','keys','filters','intersection','attributes','model','fields','length','nolimit','order','sort','where','pick','filter','merge','VIRTUAL','options','AnalyticExtractedReport','includeAll','include','findAll','rows','catch','show','params','rawAttributes','find','create','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','user','ExtractedReports','UserProfileSection','userProfileId','error','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','body','download','basename','output','join','root','server/files/reports','Sequelize','ValidationError','Report\x20not\x20found\x20or\x20empty','savename','format','toLowerCase','rimraf','zip-dir','moment','bluebird','util','path','sox','ejs','fs-extra','crypto','desk.js','to-csv','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','json','offset','undefined','limit','count','Content-Range','apply','reject','save','update','destroy','then','get','UserProfileResource'];(function(_0x59f0dc,_0x1e2497){var _0x5b5445=function(_0x57ca91){while(--_0x57ca91){_0x59f0dc['push'](_0x59f0dc['shift']());}};_0x5b5445(++_0x1e2497);}(_0x7c70,0xf6));var _0x07c7=function(_0x1ba907,_0x256d25){_0x1ba907=_0x1ba907-0x0;var _0x4053dd=_0x7c70[_0x1ba907];return _0x4053dd;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x07c7('0x0'));var zipdir=require(_0x07c7('0x1'));var jsonpatch=require('fast-json-patch');var rp=require('request-promise');var moment=require(_0x07c7('0x2'));var BPromise=require(_0x07c7('0x3'));var Mustache=require('mustache');var util=require(_0x07c7('0x4'));var path=require(_0x07c7('0x5'));var sox=require(_0x07c7('0x6'));var csv=require('to-csv');var ejs=require(_0x07c7('0x7'));var fs=require('fs');var fs_extra=require(_0x07c7('0x8'));var _=require('lodash');var squel=require('squel');var crypto=require(_0x07c7('0x9'));var jsforce=require('jsforce');var deskjs=require(_0x07c7('0xa'));var toCsv=require(_0x07c7('0xb'));var querystring=require('querystring');var Papa=require('papaparse');var Redis=require(_0x07c7('0xc'));var authService=require(_0x07c7('0xd'));var qs=require(_0x07c7('0xe'));var as=require(_0x07c7('0xf'));var hardwareService=require(_0x07c7('0x10'));var logger=require(_0x07c7('0x11'))('api');var utils=require(_0x07c7('0x12'));var config=require(_0x07c7('0x13'));var licenseUtil=require(_0x07c7('0x14'));var db=require(_0x07c7('0x15'))['db'];function respondWithStatusCode(_0x4e9ebf,_0x59138a){_0x59138a=_0x59138a||0xcc;return function(_0x3df123){if(_0x3df123){return _0x4e9ebf[_0x07c7('0x16')](_0x59138a);}return _0x4e9ebf[_0x07c7('0x17')](_0x59138a)[_0x07c7('0x18')]();};}function respondWithResult(_0x22a7ba,_0x41fdc5){_0x41fdc5=_0x41fdc5||0xc8;return function(_0x4ca2d4){if(_0x4ca2d4){return _0x22a7ba['status'](_0x41fdc5)[_0x07c7('0x19')](_0x4ca2d4);}};}function respondWithFilteredResult(_0x4a4a38,_0x2746d2){return function(_0x376d49){if(_0x376d49){var _0x1dc5aa=typeof _0x2746d2[_0x07c7('0x1a')]===_0x07c7('0x1b')&&typeof _0x2746d2[_0x07c7('0x1c')]===_0x07c7('0x1b');var _0x64d12c=_0x376d49['count'];var _0x11e4aa=_0x1dc5aa?0x0:_0x2746d2[_0x07c7('0x1a')];var _0x23a143=_0x1dc5aa?_0x376d49[_0x07c7('0x1d')]:_0x2746d2[_0x07c7('0x1a')]+_0x2746d2[_0x07c7('0x1c')];var _0x11fbe8;if(_0x23a143>=_0x64d12c){_0x23a143=_0x64d12c;_0x11fbe8=0xc8;}else{_0x11fbe8=0xce;}_0x4a4a38['status'](_0x11fbe8);return _0x4a4a38['set'](_0x07c7('0x1e'),_0x11e4aa+'-'+_0x23a143+'/'+_0x64d12c)[_0x07c7('0x19')](_0x376d49);}return null;};}function patchUpdates(_0x2bad11){return function(_0x367118){try{jsonpatch[_0x07c7('0x1f')](_0x367118,_0x2bad11,!![]);}catch(_0x170134){return BPromise[_0x07c7('0x20')](_0x170134);}return _0x367118[_0x07c7('0x21')]();};}function saveUpdates(_0x27ec5a,_0x9f045f){return function(_0xf2d706){if(_0xf2d706){return _0xf2d706[_0x07c7('0x22')](_0x27ec5a)['then'](function(_0x51f8ec){return _0x51f8ec;});}return null;};}function removeEntity(_0xf769eb,_0x42679e){return function(_0xe73997){if(_0xe73997){return _0xe73997[_0x07c7('0x23')]()[_0x07c7('0x24')](function(){var _0x1ae139=_0xe73997[_0x07c7('0x25')]({'plain':!![]});var _0x566b22='ExtractedReports';return db[_0x07c7('0x26')][_0x07c7('0x23')]({'where':{'type':_0x566b22,'resourceId':_0x1ae139['id']}})[_0x07c7('0x24')](function(){return _0xe73997;});})[_0x07c7('0x24')](function(){_0xf769eb['status'](0xcc)[_0x07c7('0x18')]();});}};}function handleEntityNotFound(_0x2ca53c,_0x2d6469){return function(_0x49a094){if(!_0x49a094){_0x2ca53c['sendStatus'](0x194);}return _0x49a094;};}function handleError(_0x239c44,_0x473e62){_0x473e62=_0x473e62||0x1f4;return function(_0x102801){logger['error'](_0x102801['stack']);if(_0x102801[_0x07c7('0x27')]){delete _0x102801['name'];}_0x239c44[_0x07c7('0x17')](_0x473e62)[_0x07c7('0x28')](_0x102801);};}exports[_0x07c7('0x29')]=function(_0x4cbad9,_0x3bfce5){var _0x46d1c5={},_0x703f0d={},_0x454301={'count':0x0,'rows':[]};var _0xc17808=_[_0x07c7('0x2a')](db['AnalyticExtractedReport']['rawAttributes'],function(_0x4e124b){return{'name':_0x4e124b[_0x07c7('0x2b')],'type':_0x4e124b[_0x07c7('0x2c')][_0x07c7('0x2d')]};});_0x703f0d['model']=_[_0x07c7('0x2a')](_0xc17808,_0x07c7('0x27'));_0x703f0d[_0x07c7('0x2e')]=_[_0x07c7('0x2f')](_0x4cbad9[_0x07c7('0x2e')]);_0x703f0d[_0x07c7('0x30')]=_[_0x07c7('0x31')](_0x703f0d['model'],_0x703f0d['query']);_0x46d1c5[_0x07c7('0x32')]=_[_0x07c7('0x31')](_0x703f0d[_0x07c7('0x33')],qs['fields'](_0x4cbad9['query'][_0x07c7('0x34')]));_0x46d1c5[_0x07c7('0x32')]=_0x46d1c5[_0x07c7('0x32')][_0x07c7('0x35')]?_0x46d1c5[_0x07c7('0x32')]:_0x703f0d['model'];if(!_0x4cbad9[_0x07c7('0x2e')]['hasOwnProperty'](_0x07c7('0x36'))){_0x46d1c5[_0x07c7('0x1c')]=qs[_0x07c7('0x1c')](_0x4cbad9[_0x07c7('0x2e')]['limit']);_0x46d1c5[_0x07c7('0x1a')]=qs[_0x07c7('0x1a')](_0x4cbad9[_0x07c7('0x2e')][_0x07c7('0x1a')]);}_0x46d1c5[_0x07c7('0x37')]=qs[_0x07c7('0x38')](_0x4cbad9['query'][_0x07c7('0x38')]);_0x46d1c5[_0x07c7('0x39')]=qs[_0x07c7('0x30')](_[_0x07c7('0x3a')](_0x4cbad9[_0x07c7('0x2e')],_0x703f0d[_0x07c7('0x30')]),_0xc17808);if(_0x4cbad9[_0x07c7('0x2e')][_0x07c7('0x3b')]){_0x46d1c5['where']=_[_0x07c7('0x3c')](_0x46d1c5[_0x07c7('0x39')],{'$or':_[_0x07c7('0x2a')](_0xc17808,function(_0x581499){if(_0x581499[_0x07c7('0x2c')]!==_0x07c7('0x3d')){var _0xc2ec7e={};_0xc2ec7e[_0x581499[_0x07c7('0x27')]]={'$like':'%'+_0x4cbad9[_0x07c7('0x2e')][_0x07c7('0x3b')]+'%'};return _0xc2ec7e;}})});}_0x46d1c5=_[_0x07c7('0x3c')]({},_0x46d1c5,_0x4cbad9[_0x07c7('0x3e')]);var _0x21a7be={'where':_0x46d1c5[_0x07c7('0x39')]};return db[_0x07c7('0x3f')][_0x07c7('0x1d')](_0x21a7be)[_0x07c7('0x24')](function(_0xf6f4c7){_0x454301['count']=_0xf6f4c7;if(_0x4cbad9[_0x07c7('0x2e')][_0x07c7('0x40')]){_0x46d1c5[_0x07c7('0x41')]=[{'all':!![]}];}return db[_0x07c7('0x3f')][_0x07c7('0x42')](_0x46d1c5);})[_0x07c7('0x24')](function(_0x554a2b){_0x454301[_0x07c7('0x43')]=_0x554a2b;return _0x454301;})[_0x07c7('0x24')](respondWithFilteredResult(_0x3bfce5,_0x46d1c5))[_0x07c7('0x44')](handleError(_0x3bfce5,null));};exports[_0x07c7('0x45')]=function(_0x4c260d,_0x2172c1){var _0x129784={'raw':!![],'where':{'id':_0x4c260d[_0x07c7('0x46')]['id']}},_0x17aaf7={};_0x17aaf7[_0x07c7('0x33')]=_[_0x07c7('0x2f')](db[_0x07c7('0x3f')][_0x07c7('0x47')]);_0x17aaf7[_0x07c7('0x2e')]=_[_0x07c7('0x2f')](_0x4c260d[_0x07c7('0x2e')]);_0x17aaf7[_0x07c7('0x30')]=_[_0x07c7('0x31')](_0x17aaf7['model'],_0x17aaf7[_0x07c7('0x2e')]);_0x129784[_0x07c7('0x32')]=_[_0x07c7('0x31')](_0x17aaf7[_0x07c7('0x33')],qs[_0x07c7('0x34')](_0x4c260d[_0x07c7('0x2e')][_0x07c7('0x34')]));_0x129784[_0x07c7('0x32')]=_0x129784[_0x07c7('0x32')][_0x07c7('0x35')]?_0x129784[_0x07c7('0x32')]:_0x17aaf7[_0x07c7('0x33')];if(_0x4c260d['query'][_0x07c7('0x40')]){_0x129784[_0x07c7('0x41')]=[{'all':!![]}];}_0x129784=_[_0x07c7('0x3c')]({},_0x129784,_0x4c260d['options']);return db[_0x07c7('0x3f')][_0x07c7('0x48')](_0x129784)[_0x07c7('0x24')](handleEntityNotFound(_0x2172c1,null))[_0x07c7('0x24')](respondWithResult(_0x2172c1,null))[_0x07c7('0x44')](handleError(_0x2172c1,null));};exports[_0x07c7('0x49')]=function(_0x36dc5c,_0x40cf15){return db[_0x07c7('0x3f')][_0x07c7('0x49')](_0x36dc5c['body'],{})[_0x07c7('0x24')](function(_0xf49438){var _0xc49742=_0x36dc5c['user'][_0x07c7('0x25')]({'plain':!![]});if(!_0xc49742)throw new Error(_0x07c7('0x4a'));if(_0xc49742[_0x07c7('0x4b')]===_0x07c7('0x4c')){var _0x46a915=_0xf49438['get']({'plain':!![]});var _0x8f8ae7=_0x07c7('0x4d');return db[_0x07c7('0x4e')][_0x07c7('0x48')]({'where':{'name':_0x8f8ae7,'userProfileId':_0xc49742[_0x07c7('0x4f')]},'raw':!![]})[_0x07c7('0x24')](function(_0x32abab){if(_0x32abab&&_0x32abab['autoAssociation']===0x0){return db[_0x07c7('0x26')][_0x07c7('0x49')]({'name':_0x46a915[_0x07c7('0x27')],'resourceId':_0x46a915['id'],'type':_0x32abab[_0x07c7('0x27')],'sectionId':_0x32abab['id']},{})[_0x07c7('0x24')](function(){return _0xf49438;});}else{return _0xf49438;}})['catch'](function(_0x4f9fdd){logger[_0x07c7('0x50')](_0x07c7('0x51'),_0x4f9fdd);throw _0x4f9fdd;});}return _0xf49438;})[_0x07c7('0x24')](respondWithResult(_0x40cf15,0xc9))[_0x07c7('0x44')](handleError(_0x40cf15,null));};exports[_0x07c7('0x22')]=function(_0x42f4f8,_0x448c48){if(_0x42f4f8[_0x07c7('0x52')]['id']){delete _0x42f4f8[_0x07c7('0x52')]['id'];}return db[_0x07c7('0x3f')][_0x07c7('0x48')]({'where':{'id':_0x42f4f8[_0x07c7('0x46')]['id']}})[_0x07c7('0x24')](handleEntityNotFound(_0x448c48,null))[_0x07c7('0x24')](saveUpdates(_0x42f4f8['body'],null))[_0x07c7('0x24')](respondWithResult(_0x448c48,null))[_0x07c7('0x44')](handleError(_0x448c48,null));};exports['destroy']=function(_0x282d5,_0x3397a5){return db[_0x07c7('0x3f')][_0x07c7('0x48')]({'where':{'id':_0x282d5[_0x07c7('0x46')]['id']}})[_0x07c7('0x24')](handleEntityNotFound(_0x3397a5,null))[_0x07c7('0x24')](removeEntity(_0x3397a5,null))['catch'](handleError(_0x3397a5,null));};exports[_0x07c7('0x53')]=function(_0x21d372,_0x300ac5,_0x33214c){return db[_0x07c7('0x3f')][_0x07c7('0x48')]({'where':{'id':_0x21d372[_0x07c7('0x46')]['id']},'attributes':['name',_0x07c7('0x54'),'savename',_0x07c7('0x55')],'raw':!![]})[_0x07c7('0x24')](handleEntityNotFound(_0x300ac5,null))[_0x07c7('0x24')](function(_0x14ad41){if(_0x14ad41){if(!fs['existsSync'](path[_0x07c7('0x56')](config[_0x07c7('0x57')],_0x07c7('0x58'),_0x14ad41['savename']))){throw new db[(_0x07c7('0x59'))][(_0x07c7('0x5a'))](_0x07c7('0x5b'));}if(_0x21d372[_0x07c7('0x2e')]['exists']){return _0x300ac5[_0x07c7('0x16')](0xc8);}return _0x300ac5[_0x07c7('0x53')](path[_0x07c7('0x56')](config['root'],_0x07c7('0x58'),_0x14ad41[_0x07c7('0x5c')]),util[_0x07c7('0x5d')]('%s.%s',_0x14ad41[_0x07c7('0x54')]||_0x14ad41[_0x07c7('0x27')],_0x14ad41['output'][_0x07c7('0x5e')]()));}})[_0x07c7('0x44')](handleError(_0x300ac5,null));};
\ No newline at end of file
index 0bf6b05..0f53d98 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0x95cf=['../../config/environment','exports','define','AnalyticExtractedReport','lodash','util','api','bluebird','path'];(function(_0x4565bf,_0x5ad9d6){var _0x5610ba=function(_0x170988){while(--_0x170988){_0x4565bf['push'](_0x4565bf['shift']());}};_0x5610ba(++_0x5ad9d6);}(_0x95cf,0x136));var _0xf95c=function(_0x50fc8c,_0x13701c){_0x50fc8c=_0x50fc8c-0x0;var _0x45c6f6=_0x95cf[_0x50fc8c];return _0x45c6f6;};'use strict';var _=require(_0xf95c('0x0'));var util=require(_0xf95c('0x1'));var logger=require('../../config/logger')(_0xf95c('0x2'));var moment=require('moment');var BPromise=require(_0xf95c('0x3'));var rp=require('request-promise');var fs=require('fs');var path=require(_0xf95c('0x4'));var rimraf=require('rimraf');var config=require(_0xf95c('0x5'));var attributes=require('./analyticExtractedReport.attributes');module[_0xf95c('0x6')]=function(_0x108c00,_0x50dc6f){return _0x108c00[_0xf95c('0x7')](_0xf95c('0x8'),attributes,{'tableName':'analytics_extracted_reports','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 5db1750..89f8e72 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0x37da=['result','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','rpc','jayson/promise','client','http','request','then','info','AnalyticExtractedReport,\x20%s,\x20%s','request\x20sent','debug','error','code','message'];(function(_0x29980f,_0x10d804){var _0x127f3c=function(_0x56fe2b){while(--_0x56fe2b){_0x29980f['push'](_0x29980f['shift']());}};_0x127f3c(++_0x10d804);}(_0x37da,0x11f));var _0xa37d=function(_0x3c49d1,_0x4b948f){_0x3c49d1=_0x3c49d1-0x0;var _0x37f10e=_0x37da[_0x3c49d1];return _0x37f10e;};'use strict';var _=require(_0xa37d('0x0'));var util=require(_0xa37d('0x1'));var moment=require(_0xa37d('0x2'));var BPromise=require(_0xa37d('0x3'));var rs=require(_0xa37d('0x4'));var fs=require('fs');var Redis=require(_0xa37d('0x5'));var db=require(_0xa37d('0x6'))['db'];var utils=require(_0xa37d('0x7'));var logger=require('../../config/logger')(_0xa37d('0x8'));var config=require('../../config/environment');var jayson=require(_0xa37d('0x9'));var client=jayson[_0xa37d('0xa')][_0xa37d('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x56ca39,_0x2aedc0,_0x4b713f){return new BPromise(function(_0x1edb69,_0x7cdc72){return client[_0xa37d('0xc')](_0x56ca39,_0x4b713f)[_0xa37d('0xd')](function(_0x57b6d9){logger[_0xa37d('0xe')](_0xa37d('0xf'),_0x2aedc0,_0xa37d('0x10'));logger[_0xa37d('0x11')]('AnalyticExtractedReport,\x20%s,\x20%s,\x20%s',_0x2aedc0,_0xa37d('0x10'),JSON['stringify'](_0x57b6d9));if(_0x57b6d9['error']){if(_0x57b6d9[_0xa37d('0x12')][_0xa37d('0x13')]===0x1f4){logger['error'](_0xa37d('0xf'),_0x2aedc0,_0x57b6d9[_0xa37d('0x12')][_0xa37d('0x14')]);return _0x7cdc72(_0x57b6d9[_0xa37d('0x12')][_0xa37d('0x14')]);}logger['error'](_0xa37d('0xf'),_0x2aedc0,_0x57b6d9[_0xa37d('0x12')][_0xa37d('0x14')]);return _0x1edb69(_0x57b6d9[_0xa37d('0x12')]['message']);}else{logger[_0xa37d('0xe')]('AnalyticExtractedReport,\x20%s,\x20%s',_0x2aedc0,_0xa37d('0x10'));_0x1edb69(_0x57b6d9[_0xa37d('0x15')][_0xa37d('0x14')]);}})['catch'](function(_0x105d6b){logger[_0xa37d('0x12')]('AnalyticExtractedReport,\x20%s,\x20%s',_0x2aedc0,_0x105d6b);_0x7cdc72(_0x105d6b);});});}
\ No newline at end of file
index d145e35..82d84a7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0x012c=['update','delete','destroy','util','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./analyticExtractedReport.controller','isAuthenticated','index','/:id','show','get','/:id/download','download','post','create'];(function(_0x55e35f,_0x297bda){var _0x4be735=function(_0x3110be){while(--_0x3110be){_0x55e35f['push'](_0x55e35f['shift']());}};_0x4be735(++_0x297bda);}(_0x012c,0xd5));var _0xc012=function(_0x2da1f9,_0x5e4269){_0x2da1f9=_0x2da1f9-0x0;var _0x22ef92=_0x012c[_0x2da1f9];return _0x22ef92;};'use strict';var multer=require('multer');var util=require(_0xc012('0x0'));var path=require('path');var timeout=require(_0xc012('0x1'));var express=require(_0xc012('0x2'));var router=express[_0xc012('0x3')]();var fs_extra=require(_0xc012('0x4'));var auth=require(_0xc012('0x5'));var interaction=require(_0xc012('0x6'));var config=require(_0xc012('0x7'));var controller=require(_0xc012('0x8'));router['get']('/',auth[_0xc012('0x9')](),controller[_0xc012('0xa')]);router['get'](_0xc012('0xb'),auth[_0xc012('0x9')](),controller[_0xc012('0xc')]);router[_0xc012('0xd')](_0xc012('0xe'),auth[_0xc012('0x9')](),controller[_0xc012('0xf')]);router[_0xc012('0x10')]('/',auth[_0xc012('0x9')](),controller[_0xc012('0x11')]);router['put'](_0xc012('0xb'),auth['isAuthenticated'](),controller[_0xc012('0x12')]);router[_0xc012('0x13')]('/:id',auth[_0xc012('0x9')](),controller[_0xc012('0x14')]);module['exports']=router;
\ No newline at end of file
index eec1367..54871a0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0xc819=['BOOLEAN','sequelize','exports','STRING'];(function(_0xc3f1a1,_0x318682){var _0x2f557b=function(_0x271bf0){while(--_0x271bf0){_0xc3f1a1['push'](_0xc3f1a1['shift']());}};_0x2f557b(++_0x318682);}(_0xc819,0x105));var _0x9c81=function(_0x207cb9,_0x270b67){_0x207cb9=_0x207cb9-0x0;var _0x2b87b5=_0xc819[_0x207cb9];return _0x2b87b5;};'use strict';var Sequelize=require(_0x9c81('0x0'));module[_0x9c81('0x1')]={'field':{'type':Sequelize['TEXT']},'alias':{'type':Sequelize[_0x9c81('0x2')]},'function':{'type':Sequelize['STRING']},'format':{'type':Sequelize[_0x9c81('0x2')]},'groupBy':{'type':Sequelize[_0x9c81('0x3')],'defaultValue':![]},'orderBy':{'type':Sequelize[_0x9c81('0x2')]},'custom':{'type':Sequelize[_0x9c81('0x3')],'defaultValue':![]}};
\ No newline at end of file
index f2b091c..0573e06 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0x2588=['filters','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','pick','filter','merge','options','includeAll','include','findAll','catch','show','params','intersection','find','create','body','bulkCreate','destroy','ids','addFields','findOne','transaction','CustomReportId','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','ejs','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/parsers/qs','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','json','offset','undefined','count','limit','set','Content-Range','apply','reject','save','update','then','error','stack','send','index','map','AnalyticFieldReport','rawAttributes','fieldName','type','key','model','name','query','keys'];(function(_0x54d4a8,_0x585a59){var _0x3b321b=function(_0x245c6a){while(--_0x245c6a){_0x54d4a8['push'](_0x54d4a8['shift']());}};_0x3b321b(++_0x585a59);}(_0x2588,0x120));var _0x8258=function(_0x27ac33,_0x472b83){_0x27ac33=_0x27ac33-0x0;var _0x1a3d5f=_0x2588[_0x27ac33];return _0x1a3d5f;};'use strict';var emlformat=require(_0x8258('0x0'));var rimraf=require(_0x8258('0x1'));var zipdir=require(_0x8258('0x2'));var jsonpatch=require(_0x8258('0x3'));var rp=require(_0x8258('0x4'));var moment=require(_0x8258('0x5'));var BPromise=require(_0x8258('0x6'));var Mustache=require(_0x8258('0x7'));var util=require(_0x8258('0x8'));var path=require(_0x8258('0x9'));var sox=require(_0x8258('0xa'));var csv=require(_0x8258('0xb'));var ejs=require(_0x8258('0xc'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require('lodash');var squel=require('squel');var crypto=require(_0x8258('0xd'));var jsforce=require(_0x8258('0xe'));var deskjs=require(_0x8258('0xf'));var toCsv=require(_0x8258('0xb'));var querystring=require(_0x8258('0x10'));var Papa=require(_0x8258('0x11'));var Redis=require(_0x8258('0x12'));var authService=require('../../components/auth/service');var qs=require(_0x8258('0x13'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x8258('0x14'));var logger=require(_0x8258('0x15'))(_0x8258('0x16'));var utils=require(_0x8258('0x17'));var config=require(_0x8258('0x18'));var licenseUtil=require(_0x8258('0x19'));var db=require(_0x8258('0x1a'))['db'];function respondWithStatusCode(_0x477b95,_0x35c5da){_0x35c5da=_0x35c5da||0xcc;return function(_0x265b5b){if(_0x265b5b){return _0x477b95[_0x8258('0x1b')](_0x35c5da);}return _0x477b95[_0x8258('0x1c')](_0x35c5da)[_0x8258('0x1d')]();};}function respondWithResult(_0x221776,_0x92fece){_0x92fece=_0x92fece||0xc8;return function(_0x354469){if(_0x354469){return _0x221776[_0x8258('0x1c')](_0x92fece)[_0x8258('0x1e')](_0x354469);}};}function respondWithFilteredResult(_0xe51b99,_0x5592be){return function(_0x1786d4){if(_0x1786d4){var _0x2291a2=typeof _0x5592be[_0x8258('0x1f')]===_0x8258('0x20')&&typeof _0x5592be['limit']==='undefined';var _0x5324ab=_0x1786d4[_0x8258('0x21')];var _0x20cdef=_0x2291a2?0x0:_0x5592be['offset'];var _0x385af9=_0x2291a2?_0x1786d4[_0x8258('0x21')]:_0x5592be[_0x8258('0x1f')]+_0x5592be[_0x8258('0x22')];var _0x4eb6fc;if(_0x385af9>=_0x5324ab){_0x385af9=_0x5324ab;_0x4eb6fc=0xc8;}else{_0x4eb6fc=0xce;}_0xe51b99['status'](_0x4eb6fc);return _0xe51b99[_0x8258('0x23')](_0x8258('0x24'),_0x20cdef+'-'+_0x385af9+'/'+_0x5324ab)[_0x8258('0x1e')](_0x1786d4);}return null;};}function patchUpdates(_0x167bb9){return function(_0x25029d){try{jsonpatch[_0x8258('0x25')](_0x25029d,_0x167bb9,!![]);}catch(_0x19763c){return BPromise[_0x8258('0x26')](_0x19763c);}return _0x25029d[_0x8258('0x27')]();};}function saveUpdates(_0x21473a,_0xbbd9b){return function(_0x433c09){if(_0x433c09){return _0x433c09[_0x8258('0x28')](_0x21473a)['then'](function(_0x523a06){return _0x523a06;});}return null;};}function removeEntity(_0x5a2da2,_0xaafc0d){return function(_0x5e4b93){if(_0x5e4b93){return _0x5e4b93['destroy']()[_0x8258('0x29')](function(){_0x5a2da2[_0x8258('0x1c')](0xcc)[_0x8258('0x1d')]();});}};}function handleEntityNotFound(_0x37a041,_0x15660){return function(_0x5161b9){if(!_0x5161b9){_0x37a041[_0x8258('0x1b')](0x194);}return _0x5161b9;};}function handleError(_0xef2bc5,_0x1c3fb2){_0x1c3fb2=_0x1c3fb2||0x1f4;return function(_0x2e49bd){logger[_0x8258('0x2a')](_0x2e49bd[_0x8258('0x2b')]);if(_0x2e49bd['name']){delete _0x2e49bd['name'];}_0xef2bc5[_0x8258('0x1c')](_0x1c3fb2)[_0x8258('0x2c')](_0x2e49bd);};}exports[_0x8258('0x2d')]=function(_0x602563,_0x2fff51){var _0x2d9039={},_0x25e22b={},_0x4e1833={'count':0x0,'rows':[]};var _0x5a3bf4=_[_0x8258('0x2e')](db[_0x8258('0x2f')][_0x8258('0x30')],function(_0x210401){return{'name':_0x210401[_0x8258('0x31')],'type':_0x210401[_0x8258('0x32')][_0x8258('0x33')]};});_0x25e22b[_0x8258('0x34')]=_[_0x8258('0x2e')](_0x5a3bf4,_0x8258('0x35'));_0x25e22b[_0x8258('0x36')]=_[_0x8258('0x37')](_0x602563[_0x8258('0x36')]);_0x25e22b[_0x8258('0x38')]=_['intersection'](_0x25e22b[_0x8258('0x34')],_0x25e22b['query']);_0x2d9039[_0x8258('0x39')]=_['intersection'](_0x25e22b[_0x8258('0x34')],qs[_0x8258('0x3a')](_0x602563['query'][_0x8258('0x3a')]));_0x2d9039['attributes']=_0x2d9039[_0x8258('0x39')][_0x8258('0x3b')]?_0x2d9039[_0x8258('0x39')]:_0x25e22b['model'];if(!_0x602563[_0x8258('0x36')][_0x8258('0x3c')](_0x8258('0x3d'))){_0x2d9039[_0x8258('0x22')]=qs[_0x8258('0x22')](_0x602563[_0x8258('0x36')][_0x8258('0x22')]);_0x2d9039['offset']=qs[_0x8258('0x1f')](_0x602563[_0x8258('0x36')][_0x8258('0x1f')]);}_0x2d9039[_0x8258('0x3e')]=qs[_0x8258('0x3f')](_0x602563['query'][_0x8258('0x3f')]);_0x2d9039[_0x8258('0x40')]=qs[_0x8258('0x38')](_[_0x8258('0x41')](_0x602563[_0x8258('0x36')],_0x25e22b[_0x8258('0x38')]),_0x5a3bf4);if(_0x602563[_0x8258('0x36')][_0x8258('0x42')]){_0x2d9039[_0x8258('0x40')]=_[_0x8258('0x43')](_0x2d9039['where'],{'$or':_['map'](_0x5a3bf4,function(_0x20416a){if(_0x20416a[_0x8258('0x32')]!=='VIRTUAL'){var _0x4ae5d7={};_0x4ae5d7[_0x20416a[_0x8258('0x35')]]={'$like':'%'+_0x602563[_0x8258('0x36')][_0x8258('0x42')]+'%'};return _0x4ae5d7;}})});}_0x2d9039=_['merge']({},_0x2d9039,_0x602563[_0x8258('0x44')]);var _0x561712={'where':_0x2d9039[_0x8258('0x40')]};return db['AnalyticFieldReport'][_0x8258('0x21')](_0x561712)['then'](function(_0x2293b8){_0x4e1833['count']=_0x2293b8;if(_0x602563[_0x8258('0x36')][_0x8258('0x45')]){_0x2d9039[_0x8258('0x46')]=[{'all':!![]}];}return db[_0x8258('0x2f')][_0x8258('0x47')](_0x2d9039);})['then'](function(_0x41bb42){_0x4e1833['rows']=_0x41bb42;return _0x4e1833;})[_0x8258('0x29')](respondWithFilteredResult(_0x2fff51,_0x2d9039))[_0x8258('0x48')](handleError(_0x2fff51,null));};exports[_0x8258('0x49')]=function(_0xa9fa7a,_0x36196c){var _0x53f0cc={'raw':![],'where':{'id':_0xa9fa7a[_0x8258('0x4a')]['id']}},_0x4146c9={};_0x4146c9[_0x8258('0x34')]=_['keys'](db[_0x8258('0x2f')][_0x8258('0x30')]);_0x4146c9[_0x8258('0x36')]=_['keys'](_0xa9fa7a[_0x8258('0x36')]);_0x4146c9['filters']=_[_0x8258('0x4b')](_0x4146c9[_0x8258('0x34')],_0x4146c9[_0x8258('0x36')]);_0x53f0cc[_0x8258('0x39')]=_[_0x8258('0x4b')](_0x4146c9['model'],qs[_0x8258('0x3a')](_0xa9fa7a[_0x8258('0x36')]['fields']));_0x53f0cc['attributes']=_0x53f0cc[_0x8258('0x39')][_0x8258('0x3b')]?_0x53f0cc[_0x8258('0x39')]:_0x4146c9['model'];if(_0xa9fa7a[_0x8258('0x36')]['includeAll']){_0x53f0cc[_0x8258('0x46')]=[{'all':!![]}];}_0x53f0cc=_[_0x8258('0x43')]({},_0x53f0cc,_0xa9fa7a[_0x8258('0x44')]);return db['AnalyticFieldReport'][_0x8258('0x4c')](_0x53f0cc)[_0x8258('0x29')](handleEntityNotFound(_0x36196c,null))[_0x8258('0x29')](respondWithResult(_0x36196c,null))[_0x8258('0x48')](handleError(_0x36196c,null));};exports[_0x8258('0x4d')]=function(_0x31f69b,_0x57bae5){return db[_0x8258('0x2f')][_0x8258('0x4d')](_0x31f69b[_0x8258('0x4e')],{})[_0x8258('0x29')](respondWithResult(_0x57bae5,0xc9))[_0x8258('0x48')](handleError(_0x57bae5,null));};exports['bulkCreate']=function(_0x41042e,_0x2b986d){return db['AnalyticFieldReport'][_0x8258('0x4f')](_0x41042e['body'],{'raw':![],'individualHooks':!![]})[_0x8258('0x29')](respondWithResult(_0x2b986d,0xc9))[_0x8258('0x48')](handleError(_0x2b986d,null));};exports['update']=function(_0x48c9a2,_0x6bd849){if(_0x48c9a2[_0x8258('0x4e')]['id']){delete _0x48c9a2[_0x8258('0x4e')]['id'];}return db['AnalyticFieldReport'][_0x8258('0x4c')]({'where':{'id':_0x48c9a2[_0x8258('0x4a')]['id']}})[_0x8258('0x29')](handleEntityNotFound(_0x6bd849,null))[_0x8258('0x29')](saveUpdates(_0x48c9a2[_0x8258('0x4e')],null))['then'](respondWithResult(_0x6bd849,null))[_0x8258('0x48')](handleError(_0x6bd849,null));};exports['destroy']=function(_0x9b1008,_0x31b7a8){return db['AnalyticFieldReport']['find']({'where':{'id':_0x9b1008[_0x8258('0x4a')]['id']}})[_0x8258('0x29')](handleEntityNotFound(_0x31b7a8,null))[_0x8258('0x29')](removeEntity(_0x31b7a8,null))[_0x8258('0x48')](handleError(_0x31b7a8,null));};exports['bulkDestroy']=function(_0x212de8,_0x37de57){return db[_0x8258('0x2f')][_0x8258('0x50')]({'where':{'id':_0x212de8[_0x8258('0x36')][_0x8258('0x51')]||[]},'raw':![],'individualHooks':!![]})[_0x8258('0x29')](respondWithResult(_0x37de57,0xcc))['catch'](handleError(_0x37de57,null));};exports[_0x8258('0x52')]=function(_0x3f1f39,_0x5d877c,_0x2c052e){return db['AnalyticCustomReport'][_0x8258('0x53')]({'where':{'id':_0x3f1f39[_0x8258('0x4a')]['id']}})['then'](handleEntityNotFound(_0x5d877c,null))[_0x8258('0x29')](function(_0x2fd9cb){if(_0x2fd9cb){return db['sequelize'][_0x8258('0x54')](function(_0x13a224){return db[_0x8258('0x2f')]['destroy']({'where':{'CustomReportId':_0x3f1f39[_0x8258('0x4a')]['id']},'transaction':_0x13a224})['then'](function(_0xb23c21){var _0x51d935=_[_0x8258('0x2e')](_0x3f1f39[_0x8258('0x4e')],function(_0x2bbfef){delete _0x2bbfef['id'];_0x2bbfef[_0x8258('0x55')]=_0x3f1f39[_0x8258('0x4a')]['id'];return _0x2bbfef;});return db['AnalyticFieldReport'][_0x8258('0x4f')](_0x51d935,{'transaction':_0x13a224});});})[_0x8258('0x29')](function(){return db[_0x8258('0x2f')][_0x8258('0x47')]({'where':{'CustomReportId':_0x3f1f39[_0x8258('0x4a')]['id']}});});}})[_0x8258('0x29')](respondWithResult(_0x5d877c,null))[_0x8258('0x48')](handleError(_0x5d877c,null));};
\ No newline at end of file
index c24b691..beb95b8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0x0c4e=['../../config/logger','bluebird','path','../../config/environment','exports','define','AnalyticFieldReport','analytics_report_fields'];(function(_0x261efd,_0x31ced0){var _0x4f8501=function(_0x3f1559){while(--_0x3f1559){_0x261efd['push'](_0x261efd['shift']());}};_0x4f8501(++_0x31ced0);}(_0x0c4e,0x90));var _0xe0c4=function(_0x11c1ef,_0x2a5055){_0x11c1ef=_0x11c1ef-0x0;var _0x59222a=_0x0c4e[_0x11c1ef];return _0x59222a;};'use strict';var _=require('lodash');var util=require('util');var logger=require(_0xe0c4('0x0'))('api');var moment=require('moment');var BPromise=require(_0xe0c4('0x1'));var rp=require('request-promise');var fs=require('fs');var path=require(_0xe0c4('0x2'));var rimraf=require('rimraf');var config=require(_0xe0c4('0x3'));var attributes=require('./analyticFieldReport.attributes');module[_0xe0c4('0x4')]=function(_0x393682,_0x5323a2){return _0x393682[_0xe0c4('0x5')](_0xe0c4('0x6'),attributes,{'tableName':_0xe0c4('0x7'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 90853d7..f40465a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0x55fd=['randomstring','../../mysqldb','../../config/utils','rpc','client','http','request','then','AnalyticFieldReport,\x20%s,\x20%s','request\x20sent','debug','error','code','message','info','result','catch','lodash','util','moment','bluebird'];(function(_0x18ab2a,_0x4debcd){var _0x16dcee=function(_0x10107a){while(--_0x10107a){_0x18ab2a['push'](_0x18ab2a['shift']());}};_0x16dcee(++_0x4debcd);}(_0x55fd,0xf8));var _0xd55f=function(_0x3635ce,_0x33a6f9){_0x3635ce=_0x3635ce-0x0;var _0x97ecd0=_0x55fd[_0x3635ce];return _0x97ecd0;};'use strict';var _=require(_0xd55f('0x0'));var util=require(_0xd55f('0x1'));var moment=require(_0xd55f('0x2'));var BPromise=require(_0xd55f('0x3'));var rs=require(_0xd55f('0x4'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0xd55f('0x5'))['db'];var utils=require(_0xd55f('0x6'));var logger=require('../../config/logger')(_0xd55f('0x7'));var config=require('../../config/environment');var jayson=require('jayson/promise');var client=jayson[_0xd55f('0x8')][_0xd55f('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x4c93b2,_0x198fcd,_0x4a3cb2){return new BPromise(function(_0x4e6f99,_0x3f99c9){return client[_0xd55f('0xa')](_0x4c93b2,_0x4a3cb2)[_0xd55f('0xb')](function(_0x25376d){logger['info'](_0xd55f('0xc'),_0x198fcd,_0xd55f('0xd'));logger[_0xd55f('0xe')]('AnalyticFieldReport,\x20%s,\x20%s,\x20%s',_0x198fcd,_0xd55f('0xd'),JSON['stringify'](_0x25376d));if(_0x25376d[_0xd55f('0xf')]){if(_0x25376d[_0xd55f('0xf')][_0xd55f('0x10')]===0x1f4){logger[_0xd55f('0xf')](_0xd55f('0xc'),_0x198fcd,_0x25376d[_0xd55f('0xf')][_0xd55f('0x11')]);return _0x3f99c9(_0x25376d[_0xd55f('0xf')]['message']);}logger['error'](_0xd55f('0xc'),_0x198fcd,_0x25376d[_0xd55f('0xf')]['message']);return _0x4e6f99(_0x25376d['error'][_0xd55f('0x11')]);}else{logger[_0xd55f('0x12')](_0xd55f('0xc'),_0x198fcd,_0xd55f('0xd'));_0x4e6f99(_0x25376d[_0xd55f('0x13')][_0xd55f('0x11')]);}})[_0xd55f('0x14')](function(_0x25215b){logger[_0xd55f('0xf')](_0xd55f('0xc'),_0x198fcd,_0x25215b);_0x3f99c9(_0x25215b);});});}
\ No newline at end of file
index d21b0e2..b14fae5 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(_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
+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(_0x27e1b2,_0x4b4cb8){var _0x1577f7=function(_0x37af88){while(--_0x37af88){_0x27e1b2['push'](_0x27e1b2['shift']());}};_0x1577f7(++_0x4b4cb8);}(_0xa9e0,0x123));var _0x0a9e=function(_0x34bf97,_0xc60f9d){_0x34bf97=_0x34bf97-0x0;var _0x292719=_0xa9e0[_0x34bf97];return _0x292719;};'use strict';var multer=require(_0x0a9e('0x0'));var util=require(_0x0a9e('0x1'));var path=require(_0x0a9e('0x2'));var timeout=require('connect-timeout');var express=require('express');var router=express[_0x0a9e('0x3')]();var fs_extra=require('fs-extra');var auth=require(_0x0a9e('0x4'));var interaction=require(_0x0a9e('0x5'));var config=require(_0x0a9e('0x6'));var controller=require(_0x0a9e('0x7'));router[_0x0a9e('0x8')]('/',auth['isAuthenticated'](),controller[_0x0a9e('0x9')]);router[_0x0a9e('0x8')](_0x0a9e('0xa'),auth['isAuthenticated'](),controller['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 c940241..b6e1316 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0x4dc0=['name','TEXT','STRING'];(function(_0x122ef9,_0x451d2a){var _0x42fba0=function(_0x17c9d3){while(--_0x17c9d3){_0x122ef9['push'](_0x122ef9['shift']());}};_0x42fba0(++_0x451d2a);}(_0x4dc0,0x13d));var _0x04dc=function(_0x187ee1,_0x3fd1e6){_0x187ee1=_0x187ee1-0x0;var _0x388160=_0x4dc0[_0x187ee1];return _0x388160;};'use strict';var Sequelize=require('sequelize');module['exports']={'name':{'type':Sequelize[_0x04dc('0x0')],'allowNull':![],'unique':_0x04dc('0x1')},'table':{'type':Sequelize[_0x04dc('0x0')]},'metric':{'type':Sequelize[_0x04dc('0x2')]},'description':{'type':Sequelize[_0x04dc('0x0')]}};
\ No newline at end of file
index 9662991..260c171 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0x7217=['Content-Range','apply','reject','save','update','then','destroy','get','Metrics','UserProfileResource','sendStatus','error','stack','name','send','index','map','AnalyticMetric','fieldName','type','key','model','query','keys','filters','intersection','fields','attributes','length','nolimit','sort','where','pick','filter','VIRTUAL','merge','options','includeAll','include','rows','catch','show','params','rawAttributes','find','body','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','UserProfileSection','userProfileId','autoAssociation','create','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','eml-format','zip-dir','fast-json-patch','request-promise','moment','bluebird','path','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','status','end','json','offset','undefined','limit','count','set'];(function(_0x1fd013,_0x55b4f2){var _0x473488=function(_0x33b3d0){while(--_0x33b3d0){_0x1fd013['push'](_0x1fd013['shift']());}};_0x473488(++_0x55b4f2);}(_0x7217,0x19e));var _0x7721=function(_0x34bc30,_0x177cb0){_0x34bc30=_0x34bc30-0x0;var _0x5706de=_0x7217[_0x34bc30];return _0x5706de;};'use strict';var emlformat=require(_0x7721('0x0'));var rimraf=require('rimraf');var zipdir=require(_0x7721('0x1'));var jsonpatch=require(_0x7721('0x2'));var rp=require(_0x7721('0x3'));var moment=require(_0x7721('0x4'));var BPromise=require(_0x7721('0x5'));var Mustache=require('mustache');var util=require('util');var path=require(_0x7721('0x6'));var sox=require(_0x7721('0x7'));var csv=require(_0x7721('0x8'));var ejs=require(_0x7721('0x9'));var fs=require('fs');var fs_extra=require(_0x7721('0xa'));var _=require(_0x7721('0xb'));var squel=require(_0x7721('0xc'));var crypto=require(_0x7721('0xd'));var jsforce=require(_0x7721('0xe'));var deskjs=require(_0x7721('0xf'));var toCsv=require(_0x7721('0x8'));var querystring=require(_0x7721('0x10'));var Papa=require(_0x7721('0x11'));var Redis=require(_0x7721('0x12'));var authService=require(_0x7721('0x13'));var qs=require('../../components/parsers/qs');var as=require(_0x7721('0x14'));var hardwareService=require(_0x7721('0x15'));var logger=require(_0x7721('0x16'))(_0x7721('0x17'));var utils=require(_0x7721('0x18'));var config=require(_0x7721('0x19'));var licenseUtil=require(_0x7721('0x1a'));var db=require(_0x7721('0x1b'))['db'];function respondWithStatusCode(_0x55b4ca,_0x2911ec){_0x2911ec=_0x2911ec||0xcc;return function(_0x199930){if(_0x199930){return _0x55b4ca['sendStatus'](_0x2911ec);}return _0x55b4ca[_0x7721('0x1c')](_0x2911ec)[_0x7721('0x1d')]();};}function respondWithResult(_0x3f01c5,_0x2e9752){_0x2e9752=_0x2e9752||0xc8;return function(_0x5069da){if(_0x5069da){return _0x3f01c5[_0x7721('0x1c')](_0x2e9752)[_0x7721('0x1e')](_0x5069da);}};}function respondWithFilteredResult(_0x534f1b,_0x4e199a){return function(_0x4b183e){if(_0x4b183e){var _0x5ed54=typeof _0x4e199a[_0x7721('0x1f')]===_0x7721('0x20')&&typeof _0x4e199a[_0x7721('0x21')]==='undefined';var _0x20f669=_0x4b183e['count'];var _0x3fc09e=_0x5ed54?0x0:_0x4e199a['offset'];var _0xfec626=_0x5ed54?_0x4b183e[_0x7721('0x22')]:_0x4e199a[_0x7721('0x1f')]+_0x4e199a[_0x7721('0x21')];var _0x2286e5;if(_0xfec626>=_0x20f669){_0xfec626=_0x20f669;_0x2286e5=0xc8;}else{_0x2286e5=0xce;}_0x534f1b[_0x7721('0x1c')](_0x2286e5);return _0x534f1b[_0x7721('0x23')](_0x7721('0x24'),_0x3fc09e+'-'+_0xfec626+'/'+_0x20f669)[_0x7721('0x1e')](_0x4b183e);}return null;};}function patchUpdates(_0xaeccc4){return function(_0x4ce1db){try{jsonpatch[_0x7721('0x25')](_0x4ce1db,_0xaeccc4,!![]);}catch(_0x2c1583){return BPromise[_0x7721('0x26')](_0x2c1583);}return _0x4ce1db[_0x7721('0x27')]();};}function saveUpdates(_0x57140c,_0x28f5a6){return function(_0x512f31){if(_0x512f31){return _0x512f31[_0x7721('0x28')](_0x57140c)[_0x7721('0x29')](function(_0x3e8a4e){return _0x3e8a4e;});}return null;};}function removeEntity(_0x1caad8,_0x121cc4){return function(_0x395b15){if(_0x395b15){return _0x395b15[_0x7721('0x2a')]()['then'](function(){var _0x216f20=_0x395b15[_0x7721('0x2b')]({'plain':!![]});var _0x125564=_0x7721('0x2c');return db[_0x7721('0x2d')][_0x7721('0x2a')]({'where':{'type':_0x125564,'resourceId':_0x216f20['id']}})[_0x7721('0x29')](function(){return _0x395b15;});})[_0x7721('0x29')](function(){_0x1caad8[_0x7721('0x1c')](0xcc)['end']();});}};}function handleEntityNotFound(_0x258ddf,_0x5b0551){return function(_0x499b87){if(!_0x499b87){_0x258ddf[_0x7721('0x2e')](0x194);}return _0x499b87;};}function handleError(_0x343c19,_0x53c904){_0x53c904=_0x53c904||0x1f4;return function(_0x158d98){logger[_0x7721('0x2f')](_0x158d98[_0x7721('0x30')]);if(_0x158d98[_0x7721('0x31')]){delete _0x158d98[_0x7721('0x31')];}_0x343c19['status'](_0x53c904)[_0x7721('0x32')](_0x158d98);};}exports[_0x7721('0x33')]=function(_0x497f9f,_0x4a25c9){var _0xfde9ec={},_0x220bbf={},_0x48f329={'count':0x0,'rows':[]};var _0x46f772=_[_0x7721('0x34')](db[_0x7721('0x35')]['rawAttributes'],function(_0x3d9a32){return{'name':_0x3d9a32[_0x7721('0x36')],'type':_0x3d9a32[_0x7721('0x37')][_0x7721('0x38')]};});_0x220bbf[_0x7721('0x39')]=_['map'](_0x46f772,_0x7721('0x31'));_0x220bbf[_0x7721('0x3a')]=_[_0x7721('0x3b')](_0x497f9f['query']);_0x220bbf[_0x7721('0x3c')]=_[_0x7721('0x3d')](_0x220bbf['model'],_0x220bbf[_0x7721('0x3a')]);_0xfde9ec['attributes']=_[_0x7721('0x3d')](_0x220bbf[_0x7721('0x39')],qs[_0x7721('0x3e')](_0x497f9f[_0x7721('0x3a')][_0x7721('0x3e')]));_0xfde9ec[_0x7721('0x3f')]=_0xfde9ec[_0x7721('0x3f')][_0x7721('0x40')]?_0xfde9ec[_0x7721('0x3f')]:_0x220bbf[_0x7721('0x39')];if(!_0x497f9f[_0x7721('0x3a')]['hasOwnProperty'](_0x7721('0x41'))){_0xfde9ec['limit']=qs[_0x7721('0x21')](_0x497f9f[_0x7721('0x3a')][_0x7721('0x21')]);_0xfde9ec[_0x7721('0x1f')]=qs[_0x7721('0x1f')](_0x497f9f[_0x7721('0x3a')]['offset']);}_0xfde9ec['order']=qs['sort'](_0x497f9f['query'][_0x7721('0x42')]);_0xfde9ec[_0x7721('0x43')]=qs[_0x7721('0x3c')](_[_0x7721('0x44')](_0x497f9f['query'],_0x220bbf[_0x7721('0x3c')]),_0x46f772);if(_0x497f9f['query'][_0x7721('0x45')]){_0xfde9ec[_0x7721('0x43')]=_['merge'](_0xfde9ec[_0x7721('0x43')],{'$or':_[_0x7721('0x34')](_0x46f772,function(_0x4e77ff){if(_0x4e77ff['type']!==_0x7721('0x46')){var _0xfc4dc4={};_0xfc4dc4[_0x4e77ff[_0x7721('0x31')]]={'$like':'%'+_0x497f9f[_0x7721('0x3a')]['filter']+'%'};return _0xfc4dc4;}})});}_0xfde9ec=_[_0x7721('0x47')]({},_0xfde9ec,_0x497f9f[_0x7721('0x48')]);var _0x40ce8c={'where':_0xfde9ec[_0x7721('0x43')]};return db[_0x7721('0x35')]['count'](_0x40ce8c)[_0x7721('0x29')](function(_0x4a2c28){_0x48f329[_0x7721('0x22')]=_0x4a2c28;if(_0x497f9f['query'][_0x7721('0x49')]){_0xfde9ec[_0x7721('0x4a')]=[{'all':!![]}];}return db[_0x7721('0x35')]['findAll'](_0xfde9ec);})[_0x7721('0x29')](function(_0x11d853){_0x48f329[_0x7721('0x4b')]=_0x11d853;return _0x48f329;})['then'](respondWithFilteredResult(_0x4a25c9,_0xfde9ec))[_0x7721('0x4c')](handleError(_0x4a25c9,null));};exports[_0x7721('0x4d')]=function(_0xdb3033,_0x2d5f35){var _0x135dbc={'raw':!![],'where':{'id':_0xdb3033[_0x7721('0x4e')]['id']}},_0x57d09b={};_0x57d09b['model']=_['keys'](db[_0x7721('0x35')][_0x7721('0x4f')]);_0x57d09b[_0x7721('0x3a')]=_[_0x7721('0x3b')](_0xdb3033[_0x7721('0x3a')]);_0x57d09b[_0x7721('0x3c')]=_[_0x7721('0x3d')](_0x57d09b[_0x7721('0x39')],_0x57d09b[_0x7721('0x3a')]);_0x135dbc[_0x7721('0x3f')]=_['intersection'](_0x57d09b['model'],qs[_0x7721('0x3e')](_0xdb3033[_0x7721('0x3a')][_0x7721('0x3e')]));_0x135dbc[_0x7721('0x3f')]=_0x135dbc['attributes'][_0x7721('0x40')]?_0x135dbc[_0x7721('0x3f')]:_0x57d09b['model'];if(_0xdb3033[_0x7721('0x3a')]['includeAll']){_0x135dbc[_0x7721('0x4a')]=[{'all':!![]}];}_0x135dbc=_['merge']({},_0x135dbc,_0xdb3033[_0x7721('0x48')]);return db[_0x7721('0x35')][_0x7721('0x50')](_0x135dbc)['then'](handleEntityNotFound(_0x2d5f35,null))[_0x7721('0x29')](respondWithResult(_0x2d5f35,null))[_0x7721('0x4c')](handleError(_0x2d5f35,null));};exports['create']=function(_0x223d93,_0x1196c2){return db[_0x7721('0x35')]['create'](_0x223d93[_0x7721('0x51')],{})['then'](function(_0xdb1ca8){var _0x310549=_0x223d93[_0x7721('0x52')][_0x7721('0x2b')]({'plain':!![]});if(!_0x310549)throw new Error(_0x7721('0x53'));if(_0x310549[_0x7721('0x54')]===_0x7721('0x52')){var _0x7fbb73=_0xdb1ca8[_0x7721('0x2b')]({'plain':!![]});var _0x3386aa=_0x7721('0x2c');return db[_0x7721('0x55')][_0x7721('0x50')]({'where':{'name':_0x3386aa,'userProfileId':_0x310549[_0x7721('0x56')]},'raw':!![]})[_0x7721('0x29')](function(_0x5b741d){if(_0x5b741d&&_0x5b741d[_0x7721('0x57')]===0x0){return db[_0x7721('0x2d')][_0x7721('0x58')]({'name':_0x7fbb73[_0x7721('0x31')],'resourceId':_0x7fbb73['id'],'type':_0x5b741d[_0x7721('0x31')],'sectionId':_0x5b741d['id']},{})[_0x7721('0x29')](function(){return _0xdb1ca8;});}else{return _0xdb1ca8;}})[_0x7721('0x4c')](function(_0x57484c){logger[_0x7721('0x2f')](_0x7721('0x59'),_0x57484c);throw _0x57484c;});}return _0xdb1ca8;})[_0x7721('0x29')](respondWithResult(_0x1196c2,0xc9))[_0x7721('0x4c')](handleError(_0x1196c2,null));};exports[_0x7721('0x28')]=function(_0x9c0d4,_0x7fbd6c){if(_0x9c0d4[_0x7721('0x51')]['id']){delete _0x9c0d4[_0x7721('0x51')]['id'];}return db[_0x7721('0x35')][_0x7721('0x50')]({'where':{'id':_0x9c0d4['params']['id']}})[_0x7721('0x29')](handleEntityNotFound(_0x7fbd6c,null))[_0x7721('0x29')](saveUpdates(_0x9c0d4[_0x7721('0x51')],null))[_0x7721('0x29')](respondWithResult(_0x7fbd6c,null))[_0x7721('0x4c')](handleError(_0x7fbd6c,null));};exports[_0x7721('0x2a')]=function(_0x41644f,_0x36fe6f){return db[_0x7721('0x35')][_0x7721('0x50')]({'where':{'id':_0x41644f[_0x7721('0x4e')]['id']}})[_0x7721('0x29')](handleEntityNotFound(_0x36fe6f,null))[_0x7721('0x29')](removeEntity(_0x36fe6f,null))[_0x7721('0x4c')](handleError(_0x36fe6f,null));};
\ No newline at end of file
index 1e1740e..f3c1f0d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0x631c=['api','moment','request-promise','path','rimraf','./analyticMetric.attributes','exports','AnalyticMetric','analytics_metrics','lodash','util'];(function(_0x3ed0b9,_0x62c4d8){var _0x54077f=function(_0x280d5b){while(--_0x280d5b){_0x3ed0b9['push'](_0x3ed0b9['shift']());}};_0x54077f(++_0x62c4d8);}(_0x631c,0x1b6));var _0xc631=function(_0x1af139,_0x4a5cb0){_0x1af139=_0x1af139-0x0;var _0x116be1=_0x631c[_0x1af139];return _0x116be1;};'use strict';var _=require(_0xc631('0x0'));var util=require(_0xc631('0x1'));var logger=require('../../config/logger')(_0xc631('0x2'));var moment=require(_0xc631('0x3'));var BPromise=require('bluebird');var rp=require(_0xc631('0x4'));var fs=require('fs');var path=require(_0xc631('0x5'));var rimraf=require(_0xc631('0x6'));var config=require('../../config/environment');var attributes=require(_0xc631('0x7'));module[_0xc631('0x8')]=function(_0x5221e6,_0x278ad2){return _0x5221e6['define'](_0xc631('0x9'),attributes,{'tableName':_0xc631('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 3c238c6..8dd85c7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0x0cd9=['info','request\x20sent','debug','AnalyticMetric,\x20%s,\x20%s,\x20%s','stringify','error','code','AnalyticMetric,\x20%s,\x20%s','message','result','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','rpc','../../config/environment','jayson/promise','client','request'];(function(_0x7f5c25,_0x200199){var _0x180841=function(_0x2e9bc1){while(--_0x2e9bc1){_0x7f5c25['push'](_0x7f5c25['shift']());}};_0x180841(++_0x200199);}(_0x0cd9,0x196));var _0x90cd=function(_0xd756fa,_0x201463){_0xd756fa=_0xd756fa-0x0;var _0x2018b3=_0x0cd9[_0xd756fa];return _0x2018b3;};'use strict';var _=require('lodash');var util=require(_0x90cd('0x0'));var moment=require(_0x90cd('0x1'));var BPromise=require(_0x90cd('0x2'));var rs=require(_0x90cd('0x3'));var fs=require('fs');var Redis=require(_0x90cd('0x4'));var db=require(_0x90cd('0x5'))['db'];var utils=require(_0x90cd('0x6'));var logger=require('../../config/logger')(_0x90cd('0x7'));var config=require(_0x90cd('0x8'));var jayson=require(_0x90cd('0x9'));var client=jayson[_0x90cd('0xa')]['http']({'port':0x232a});function respondWithRpcPromise(_0x11a168,_0x65762c,_0x10dbd1){return new BPromise(function(_0x3b33e1,_0x5a10a5){return client[_0x90cd('0xb')](_0x11a168,_0x10dbd1)['then'](function(_0x5ae2b5){logger[_0x90cd('0xc')]('AnalyticMetric,\x20%s,\x20%s',_0x65762c,_0x90cd('0xd'));logger[_0x90cd('0xe')](_0x90cd('0xf'),_0x65762c,_0x90cd('0xd'),JSON[_0x90cd('0x10')](_0x5ae2b5));if(_0x5ae2b5[_0x90cd('0x11')]){if(_0x5ae2b5['error'][_0x90cd('0x12')]===0x1f4){logger['error'](_0x90cd('0x13'),_0x65762c,_0x5ae2b5[_0x90cd('0x11')]['message']);return _0x5a10a5(_0x5ae2b5['error'][_0x90cd('0x14')]);}logger['error'](_0x90cd('0x13'),_0x65762c,_0x5ae2b5[_0x90cd('0x11')][_0x90cd('0x14')]);return _0x3b33e1(_0x5ae2b5['error'][_0x90cd('0x14')]);}else{logger[_0x90cd('0xc')](_0x90cd('0x13'),_0x65762c,_0x90cd('0xd'));_0x3b33e1(_0x5ae2b5[_0x90cd('0x15')][_0x90cd('0x14')]);}})['catch'](function(_0x44d6f9){logger['error'](_0x90cd('0x13'),_0x65762c,_0x44d6f9);_0x5a10a5(_0x44d6f9);});});}
\ No newline at end of file
index ebaad83..bf218d7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0x535d=['get','isAuthenticated','/:id','post','create','put','delete','destroy','multer','util','connect-timeout','express','../../components/auth/service','../../components/interaction/service','../../config/environment','./analyticMetric.controller'];(function(_0x53cb7d,_0x490576){var _0xdec01d=function(_0x367b8b){while(--_0x367b8b){_0x53cb7d['push'](_0x53cb7d['shift']());}};_0xdec01d(++_0x490576);}(_0x535d,0xe8));var _0xd535=function(_0x3ac873,_0x41edd3){_0x3ac873=_0x3ac873-0x0;var _0x14ccdf=_0x535d[_0x3ac873];return _0x14ccdf;};'use strict';var multer=require(_0xd535('0x0'));var util=require(_0xd535('0x1'));var path=require('path');var timeout=require(_0xd535('0x2'));var express=require(_0xd535('0x3'));var router=express['Router']();var fs_extra=require('fs-extra');var auth=require(_0xd535('0x4'));var interaction=require(_0xd535('0x5'));var config=require(_0xd535('0x6'));var controller=require(_0xd535('0x7'));router[_0xd535('0x8')]('/',auth[_0xd535('0x9')](),controller['index']);router['get'](_0xd535('0xa'),auth[_0xd535('0x9')](),controller['show']);router[_0xd535('0xb')]('/',auth['isAuthenticated'](),controller[_0xd535('0xc')]);router[_0xd535('0xd')](_0xd535('0xa'),auth[_0xd535('0x9')](),controller['update']);router[_0xd535('0xe')](_0xd535('0xa'),auth[_0xd535('0x9')](),controller[_0xd535('0xf')]);module['exports']=router;
\ No newline at end of file
index e129f5c..3097465 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0x09a8=['exports'];(function(_0x25e793,_0x1a6a13){var _0x5ec20e=function(_0x3f1889){while(--_0x3f1889){_0x25e793['push'](_0x25e793['shift']());}};_0x5ec20e(++_0x1a6a13);}(_0x09a8,0xba));var _0x809a=function(_0x3af527,_0x2d4721){_0x3af527=_0x3af527-0x0;var _0x2d550d=_0x09a8[_0x3af527];return _0x2d550d;};'use strict';var Sequelize=require('sequelize');module[_0x809a('0x0')]={'tree':{'type':Sequelize['TEXT'],'allowNull':![]}};
\ No newline at end of file
index bb1db1c..0cc3bbb 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0xbfe5=['length','nolimit','order','sort','filters','pick','filter','where','merge','type','VIRTUAL','options','includeAll','include','rows','params','find','catch','create','body','destroy','eml-format','zip-dir','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','ejs','crypto','jsforce','papaparse','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','json','offset','count','limit','set','Content-Range','save','update','then','error','stack','name','map','AnalyticTreeReport','rawAttributes','fieldName','key','model','keys','query','intersection','fields','attributes'];(function(_0x2f24ad,_0x279da6){var _0x386176=function(_0x13c580){while(--_0x13c580){_0x2f24ad['push'](_0x2f24ad['shift']());}};_0x386176(++_0x279da6);}(_0xbfe5,0x129));var _0x5bfe=function(_0x8675e1,_0x4082d7){_0x8675e1=_0x8675e1-0x0;var _0x5d289e=_0xbfe5[_0x8675e1];return _0x5d289e;};'use strict';var emlformat=require(_0x5bfe('0x0'));var rimraf=require('rimraf');var zipdir=require(_0x5bfe('0x1'));var jsonpatch=require('fast-json-patch');var rp=require(_0x5bfe('0x2'));var moment=require(_0x5bfe('0x3'));var BPromise=require(_0x5bfe('0x4'));var Mustache=require(_0x5bfe('0x5'));var util=require(_0x5bfe('0x6'));var path=require(_0x5bfe('0x7'));var sox=require(_0x5bfe('0x8'));var csv=require(_0x5bfe('0x9'));var ejs=require(_0x5bfe('0xa'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require('lodash');var squel=require('squel');var crypto=require(_0x5bfe('0xb'));var jsforce=require(_0x5bfe('0xc'));var deskjs=require('desk.js');var toCsv=require('to-csv');var querystring=require('querystring');var Papa=require(_0x5bfe('0xd'));var Redis=require(_0x5bfe('0xe'));var authService=require(_0x5bfe('0xf'));var qs=require('../../components/parsers/qs');var as=require(_0x5bfe('0x10'));var hardwareService=require(_0x5bfe('0x11'));var logger=require('../../config/logger')('api');var utils=require(_0x5bfe('0x12'));var config=require(_0x5bfe('0x13'));var licenseUtil=require(_0x5bfe('0x14'));var db=require(_0x5bfe('0x15'))['db'];function respondWithStatusCode(_0x153a3b,_0x472481){_0x472481=_0x472481||0xcc;return function(_0x40415a){if(_0x40415a){return _0x153a3b[_0x5bfe('0x16')](_0x472481);}return _0x153a3b[_0x5bfe('0x17')](_0x472481)[_0x5bfe('0x18')]();};}function respondWithResult(_0x3e17cb,_0x37d0e4){_0x37d0e4=_0x37d0e4||0xc8;return function(_0x53f611){if(_0x53f611){return _0x3e17cb[_0x5bfe('0x17')](_0x37d0e4)[_0x5bfe('0x19')](_0x53f611);}};}function respondWithFilteredResult(_0x2e9c99,_0x1fd1cd){return function(_0x319c96){if(_0x319c96){var _0x117250=typeof _0x1fd1cd[_0x5bfe('0x1a')]==='undefined'&&typeof _0x1fd1cd['limit']==='undefined';var _0x5b8e91=_0x319c96[_0x5bfe('0x1b')];var _0x287d77=_0x117250?0x0:_0x1fd1cd['offset'];var _0x4fb4af=_0x117250?_0x319c96['count']:_0x1fd1cd[_0x5bfe('0x1a')]+_0x1fd1cd[_0x5bfe('0x1c')];var _0x59d9f0;if(_0x4fb4af>=_0x5b8e91){_0x4fb4af=_0x5b8e91;_0x59d9f0=0xc8;}else{_0x59d9f0=0xce;}_0x2e9c99['status'](_0x59d9f0);return _0x2e9c99[_0x5bfe('0x1d')](_0x5bfe('0x1e'),_0x287d77+'-'+_0x4fb4af+'/'+_0x5b8e91)[_0x5bfe('0x19')](_0x319c96);}return null;};}function patchUpdates(_0xc14f08){return function(_0x41def9){try{jsonpatch['apply'](_0x41def9,_0xc14f08,!![]);}catch(_0x58542b){return BPromise['reject'](_0x58542b);}return _0x41def9[_0x5bfe('0x1f')]();};}function saveUpdates(_0x256a90,_0x481aeb){return function(_0x2a2c9b){if(_0x2a2c9b){return _0x2a2c9b[_0x5bfe('0x20')](_0x256a90)[_0x5bfe('0x21')](function(_0xbac0dc){return _0xbac0dc;});}return null;};}function removeEntity(_0x21b65f,_0x5a19d7){return function(_0xd82da7){if(_0xd82da7){return _0xd82da7['destroy']()[_0x5bfe('0x21')](function(){_0x21b65f[_0x5bfe('0x17')](0xcc)[_0x5bfe('0x18')]();});}};}function handleEntityNotFound(_0x3b0ce0,_0x28264f){return function(_0x4a22f0){if(!_0x4a22f0){_0x3b0ce0[_0x5bfe('0x16')](0x194);}return _0x4a22f0;};}function handleError(_0x49a4ca,_0x44714a){_0x44714a=_0x44714a||0x1f4;return function(_0x3f8f8f){logger[_0x5bfe('0x22')](_0x3f8f8f[_0x5bfe('0x23')]);if(_0x3f8f8f['name']){delete _0x3f8f8f[_0x5bfe('0x24')];}_0x49a4ca[_0x5bfe('0x17')](_0x44714a)['send'](_0x3f8f8f);};}exports['index']=function(_0x2ea798,_0x504ea5){var _0x2973da={},_0x52b9a8={},_0xd86b99={'count':0x0,'rows':[]};var _0x17e14c=_[_0x5bfe('0x25')](db[_0x5bfe('0x26')][_0x5bfe('0x27')],function(_0x581753){return{'name':_0x581753[_0x5bfe('0x28')],'type':_0x581753['type'][_0x5bfe('0x29')]};});_0x52b9a8[_0x5bfe('0x2a')]=_[_0x5bfe('0x25')](_0x17e14c,'name');_0x52b9a8['query']=_[_0x5bfe('0x2b')](_0x2ea798[_0x5bfe('0x2c')]);_0x52b9a8['filters']=_[_0x5bfe('0x2d')](_0x52b9a8[_0x5bfe('0x2a')],_0x52b9a8[_0x5bfe('0x2c')]);_0x2973da['attributes']=_['intersection'](_0x52b9a8['model'],qs[_0x5bfe('0x2e')](_0x2ea798[_0x5bfe('0x2c')][_0x5bfe('0x2e')]));_0x2973da['attributes']=_0x2973da[_0x5bfe('0x2f')][_0x5bfe('0x30')]?_0x2973da['attributes']:_0x52b9a8[_0x5bfe('0x2a')];if(!_0x2ea798[_0x5bfe('0x2c')]['hasOwnProperty'](_0x5bfe('0x31'))){_0x2973da[_0x5bfe('0x1c')]=qs[_0x5bfe('0x1c')](_0x2ea798[_0x5bfe('0x2c')][_0x5bfe('0x1c')]);_0x2973da['offset']=qs[_0x5bfe('0x1a')](_0x2ea798['query'][_0x5bfe('0x1a')]);}_0x2973da[_0x5bfe('0x32')]=qs[_0x5bfe('0x33')](_0x2ea798[_0x5bfe('0x2c')][_0x5bfe('0x33')]);_0x2973da['where']=qs[_0x5bfe('0x34')](_[_0x5bfe('0x35')](_0x2ea798[_0x5bfe('0x2c')],_0x52b9a8['filters']),_0x17e14c);if(_0x2ea798[_0x5bfe('0x2c')][_0x5bfe('0x36')]){_0x2973da[_0x5bfe('0x37')]=_[_0x5bfe('0x38')](_0x2973da[_0x5bfe('0x37')],{'$or':_[_0x5bfe('0x25')](_0x17e14c,function(_0x10ff93){if(_0x10ff93[_0x5bfe('0x39')]!==_0x5bfe('0x3a')){var _0x17a9d6={};_0x17a9d6[_0x10ff93[_0x5bfe('0x24')]]={'$like':'%'+_0x2ea798[_0x5bfe('0x2c')]['filter']+'%'};return _0x17a9d6;}})});}_0x2973da=_[_0x5bfe('0x38')]({},_0x2973da,_0x2ea798[_0x5bfe('0x3b')]);var _0x396ab7={'where':_0x2973da['where']};return db['AnalyticTreeReport'][_0x5bfe('0x1b')](_0x396ab7)[_0x5bfe('0x21')](function(_0x4a135b){_0xd86b99['count']=_0x4a135b;if(_0x2ea798[_0x5bfe('0x2c')][_0x5bfe('0x3c')]){_0x2973da[_0x5bfe('0x3d')]=[{'all':!![]}];}return db[_0x5bfe('0x26')]['findAll'](_0x2973da);})[_0x5bfe('0x21')](function(_0x3a9896){_0xd86b99[_0x5bfe('0x3e')]=_0x3a9896;return _0xd86b99;})[_0x5bfe('0x21')](respondWithFilteredResult(_0x504ea5,_0x2973da))['catch'](handleError(_0x504ea5,null));};exports['show']=function(_0x125c9e,_0x5cabbc){var _0x116397={'raw':!![],'where':{'id':_0x125c9e[_0x5bfe('0x3f')]['id']}},_0x3460a9={};_0x3460a9[_0x5bfe('0x2a')]=_[_0x5bfe('0x2b')](db[_0x5bfe('0x26')][_0x5bfe('0x27')]);_0x3460a9['query']=_[_0x5bfe('0x2b')](_0x125c9e[_0x5bfe('0x2c')]);_0x3460a9[_0x5bfe('0x34')]=_[_0x5bfe('0x2d')](_0x3460a9[_0x5bfe('0x2a')],_0x3460a9['query']);_0x116397[_0x5bfe('0x2f')]=_['intersection'](_0x3460a9[_0x5bfe('0x2a')],qs[_0x5bfe('0x2e')](_0x125c9e[_0x5bfe('0x2c')]['fields']));_0x116397[_0x5bfe('0x2f')]=_0x116397[_0x5bfe('0x2f')]['length']?_0x116397[_0x5bfe('0x2f')]:_0x3460a9[_0x5bfe('0x2a')];if(_0x125c9e[_0x5bfe('0x2c')][_0x5bfe('0x3c')]){_0x116397[_0x5bfe('0x3d')]=[{'all':!![]}];}_0x116397=_[_0x5bfe('0x38')]({},_0x116397,_0x125c9e['options']);return db[_0x5bfe('0x26')][_0x5bfe('0x40')](_0x116397)[_0x5bfe('0x21')](handleEntityNotFound(_0x5cabbc,null))['then'](respondWithResult(_0x5cabbc,null))[_0x5bfe('0x41')](handleError(_0x5cabbc,null));};exports['create']=function(_0x4b5a9c,_0x3e4756){return db[_0x5bfe('0x26')][_0x5bfe('0x42')](_0x4b5a9c[_0x5bfe('0x43')],{})[_0x5bfe('0x21')](respondWithResult(_0x3e4756,0xc9))[_0x5bfe('0x41')](handleError(_0x3e4756,null));};exports[_0x5bfe('0x20')]=function(_0x551166,_0x24bbdb){if(_0x551166['body']['id']){delete _0x551166[_0x5bfe('0x43')]['id'];}return db[_0x5bfe('0x26')][_0x5bfe('0x40')]({'where':{'id':_0x551166[_0x5bfe('0x3f')]['id']}})['then'](handleEntityNotFound(_0x24bbdb,null))[_0x5bfe('0x21')](saveUpdates(_0x551166[_0x5bfe('0x43')],null))[_0x5bfe('0x21')](respondWithResult(_0x24bbdb,null))[_0x5bfe('0x41')](handleError(_0x24bbdb,null));};exports[_0x5bfe('0x44')]=function(_0x2c3609,_0x1c5755){return db[_0x5bfe('0x26')][_0x5bfe('0x40')]({'where':{'id':_0x2c3609['params']['id']}})[_0x5bfe('0x21')](handleEntityNotFound(_0x1c5755,null))['then'](removeEntity(_0x1c5755,null))[_0x5bfe('0x41')](handleError(_0x1c5755,null));};
\ No newline at end of file
index bf3f466..fe7464c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0x20a3=['bluebird','path','rimraf','../../config/environment','./analyticTreeReport.attributes','exports','define','AnalyticTreeReport','analytics_report_trees','lodash','util','../../config/logger','api','moment'];(function(_0x2ecb67,_0x8ec62d){var _0x168079=function(_0x56c365){while(--_0x56c365){_0x2ecb67['push'](_0x2ecb67['shift']());}};_0x168079(++_0x8ec62d);}(_0x20a3,0x13d));var _0x320a=function(_0x4f78b2,_0xc6edb7){_0x4f78b2=_0x4f78b2-0x0;var _0x63194b=_0x20a3[_0x4f78b2];return _0x63194b;};'use strict';var _=require(_0x320a('0x0'));var util=require(_0x320a('0x1'));var logger=require(_0x320a('0x2'))(_0x320a('0x3'));var moment=require(_0x320a('0x4'));var BPromise=require(_0x320a('0x5'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x320a('0x6'));var rimraf=require(_0x320a('0x7'));var config=require(_0x320a('0x8'));var attributes=require(_0x320a('0x9'));module[_0x320a('0xa')]=function(_0x154fb3,_0x48d6b7){return _0x154fb3[_0x320a('0xb')](_0x320a('0xc'),attributes,{'tableName':_0x320a('0xd'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index d14f3b4..9fb3247 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0x5f66=['../../mysqldb','../../config/utils','rpc','jayson/promise','client','request','then','AnalyticTreeReport,\x20%s,\x20%s','request\x20sent','debug','AnalyticTreeReport,\x20%s,\x20%s,\x20%s','stringify','code','message','error','info','catch','util','bluebird','randomstring','ioredis'];(function(_0x5db6a3,_0x560066){var _0x12da37=function(_0x4da6ca){while(--_0x4da6ca){_0x5db6a3['push'](_0x5db6a3['shift']());}};_0x12da37(++_0x560066);}(_0x5f66,0x1a0));var _0x65f6=function(_0x2f5ac5,_0x1ee939){_0x2f5ac5=_0x2f5ac5-0x0;var _0x37c9a8=_0x5f66[_0x2f5ac5];return _0x37c9a8;};'use strict';var _=require('lodash');var util=require(_0x65f6('0x0'));var moment=require('moment');var BPromise=require(_0x65f6('0x1'));var rs=require(_0x65f6('0x2'));var fs=require('fs');var Redis=require(_0x65f6('0x3'));var db=require(_0x65f6('0x4'))['db'];var utils=require(_0x65f6('0x5'));var logger=require('../../config/logger')(_0x65f6('0x6'));var config=require('../../config/environment');var jayson=require(_0x65f6('0x7'));var client=jayson[_0x65f6('0x8')]['http']({'port':0x232a});function respondWithRpcPromise(_0x4ed98f,_0x1c0e12,_0x2c6571){return new BPromise(function(_0x112079,_0x8f6451){return client[_0x65f6('0x9')](_0x4ed98f,_0x2c6571)[_0x65f6('0xa')](function(_0x48d85c){logger['info'](_0x65f6('0xb'),_0x1c0e12,_0x65f6('0xc'));logger[_0x65f6('0xd')](_0x65f6('0xe'),_0x1c0e12,'request\x20sent',JSON[_0x65f6('0xf')](_0x48d85c));if(_0x48d85c['error']){if(_0x48d85c['error'][_0x65f6('0x10')]===0x1f4){logger['error'](_0x65f6('0xb'),_0x1c0e12,_0x48d85c['error'][_0x65f6('0x11')]);return _0x8f6451(_0x48d85c[_0x65f6('0x12')][_0x65f6('0x11')]);}logger[_0x65f6('0x12')](_0x65f6('0xb'),_0x1c0e12,_0x48d85c[_0x65f6('0x12')][_0x65f6('0x11')]);return _0x112079(_0x48d85c[_0x65f6('0x12')][_0x65f6('0x11')]);}else{logger[_0x65f6('0x13')]('AnalyticTreeReport,\x20%s,\x20%s',_0x1c0e12,_0x65f6('0xc'));_0x112079(_0x48d85c['result']['message']);}})[_0x65f6('0x14')](function(_0x5c69f8){logger[_0x65f6('0x12')](_0x65f6('0xb'),_0x1c0e12,_0x5c69f8);_0x8f6451(_0x5c69f8);});});}
\ No newline at end of file
index 13c22a6..6404e7a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0xabb4=['util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./analyticTreeReport.controller','isAuthenticated','/:id','show','post','create','put','update','delete','multer'];(function(_0x5ec4fd,_0x4f9ac1){var _0x1ffb83=function(_0x382144){while(--_0x382144){_0x5ec4fd['push'](_0x5ec4fd['shift']());}};_0x1ffb83(++_0x4f9ac1);}(_0xabb4,0x155));var _0x4abb=function(_0x1e21da,_0x6d7cc){_0x1e21da=_0x1e21da-0x0;var _0x1b8029=_0xabb4[_0x1e21da];return _0x1b8029;};'use strict';var multer=require(_0x4abb('0x0'));var util=require(_0x4abb('0x1'));var path=require(_0x4abb('0x2'));var timeout=require(_0x4abb('0x3'));var express=require(_0x4abb('0x4'));var router=express[_0x4abb('0x5')]();var fs_extra=require(_0x4abb('0x6'));var auth=require(_0x4abb('0x7'));var interaction=require(_0x4abb('0x8'));var config=require(_0x4abb('0x9'));var controller=require(_0x4abb('0xa'));router['get']('/',auth[_0x4abb('0xb')](),controller['index']);router['get'](_0x4abb('0xc'),auth[_0x4abb('0xb')](),controller[_0x4abb('0xd')]);router[_0x4abb('0xe')]('/',auth[_0x4abb('0xb')](),controller[_0x4abb('0xf')]);router[_0x4abb('0x10')]('/:id',auth[_0x4abb('0xb')](),controller[_0x4abb('0x11')]);router[_0x4abb('0x12')]('/:id',auth['isAuthenticated'](),controller['destroy']);module['exports']=router;
\ No newline at end of file
index 15a14a9..3375027 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0x6c4b=['sequelize','exports','STRING'];(function(_0x2a6754,_0x277259){var _0x17feda=function(_0x5745be){while(--_0x5745be){_0x2a6754['push'](_0x2a6754['shift']());}};_0x17feda(++_0x277259);}(_0x6c4b,0x93));var _0xb6c4=function(_0x596363,_0x951078){_0x596363=_0x596363-0x0;var _0x4f514a=_0x6c4b[_0x596363];return _0x4f514a;};'use strict';var Sequelize=require(_0xb6c4('0x0'));module[_0xb6c4('0x1')]={'name':{'type':Sequelize[_0xb6c4('0x2')]},'basename':{'type':Sequelize['STRING']},'type':{'type':Sequelize[_0xb6c4('0x2')]}};
\ No newline at end of file
index f16780c..57549f8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0x524e=['pick','filter','merge','VIRTUAL','options','includeAll','include','findAll','rows','show','params','find','catch','clone','get','createdAt','updatedAt','body','omit','create','file','filename','mimetype','download','findOne','ChatOfflineMessageId','join','server/files/attachments/','offline-chat/','basename','eml-format','rimraf','zip-dir','fast-json-patch','mustache','util','path','sox','to-csv','fs-extra','jsforce','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/utils','../../config/environment','../../mysqldb','sendStatus','json','offset','undefined','count','limit','status','set','Content-Range','apply','reject','save','update','then','destroy','error','stack','name','map','Attachment','rawAttributes','fieldName','type','key','model','query','keys','intersection','attributes','fields','hasOwnProperty','nolimit','order','sort','where','filters'];(function(_0x17678a,_0xac82e1){var _0x4e3263=function(_0x4379bc){while(--_0x4379bc){_0x17678a['push'](_0x17678a['shift']());}};_0x4e3263(++_0xac82e1);}(_0x524e,0x17e));var _0xe524=function(_0x315ecb,_0x164d4e){_0x315ecb=_0x315ecb-0x0;var _0x20ac2c=_0x524e[_0x315ecb];return _0x20ac2c;};'use strict';var emlformat=require(_0xe524('0x0'));var rimraf=require(_0xe524('0x1'));var zipdir=require(_0xe524('0x2'));var jsonpatch=require(_0xe524('0x3'));var rp=require('request-promise');var moment=require('moment');var BPromise=require('bluebird');var Mustache=require(_0xe524('0x4'));var util=require(_0xe524('0x5'));var path=require(_0xe524('0x6'));var sox=require(_0xe524('0x7'));var csv=require(_0xe524('0x8'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0xe524('0x9'));var _=require('lodash');var squel=require('squel');var crypto=require('crypto');var jsforce=require(_0xe524('0xa'));var deskjs=require('desk.js');var toCsv=require(_0xe524('0x8'));var querystring=require(_0xe524('0xb'));var Papa=require(_0xe524('0xc'));var Redis=require(_0xe524('0xd'));var authService=require(_0xe524('0xe'));var qs=require(_0xe524('0xf'));var as=require(_0xe524('0x10'));var hardwareService=require(_0xe524('0x11'));var logger=require('../../config/logger')(_0xe524('0x12'));var utils=require(_0xe524('0x13'));var config=require(_0xe524('0x14'));var licenseUtil=require('../../config/license/util');var db=require(_0xe524('0x15'))['db'];function respondWithStatusCode(_0x5c85ec,_0x3bb1d0){_0x3bb1d0=_0x3bb1d0||0xcc;return function(_0xc682b4){if(_0xc682b4){return _0x5c85ec[_0xe524('0x16')](_0x3bb1d0);}return _0x5c85ec['status'](_0x3bb1d0)['end']();};}function respondWithResult(_0x44a9a9,_0x190334){_0x190334=_0x190334||0xc8;return function(_0x31b76d){if(_0x31b76d){return _0x44a9a9['status'](_0x190334)[_0xe524('0x17')](_0x31b76d);}};}function respondWithFilteredResult(_0x24aa2a,_0x59dcb1){return function(_0x40e4cb){if(_0x40e4cb){var _0x43a7e3=typeof _0x59dcb1[_0xe524('0x18')]==='undefined'&&typeof _0x59dcb1['limit']===_0xe524('0x19');var _0x6704d0=_0x40e4cb[_0xe524('0x1a')];var _0x51ce84=_0x43a7e3?0x0:_0x59dcb1['offset'];var _0x68d48e=_0x43a7e3?_0x40e4cb[_0xe524('0x1a')]:_0x59dcb1['offset']+_0x59dcb1[_0xe524('0x1b')];var _0x5cb1d7;if(_0x68d48e>=_0x6704d0){_0x68d48e=_0x6704d0;_0x5cb1d7=0xc8;}else{_0x5cb1d7=0xce;}_0x24aa2a[_0xe524('0x1c')](_0x5cb1d7);return _0x24aa2a[_0xe524('0x1d')](_0xe524('0x1e'),_0x51ce84+'-'+_0x68d48e+'/'+_0x6704d0)['json'](_0x40e4cb);}return null;};}function patchUpdates(_0xa463f7){return function(_0x5f370b){try{jsonpatch[_0xe524('0x1f')](_0x5f370b,_0xa463f7,!![]);}catch(_0x2954dd){return BPromise[_0xe524('0x20')](_0x2954dd);}return _0x5f370b[_0xe524('0x21')]();};}function saveUpdates(_0x3da60c,_0x2be9fd){return function(_0x2de385){if(_0x2de385){return _0x2de385[_0xe524('0x22')](_0x3da60c)[_0xe524('0x23')](function(_0x59beb7){return _0x59beb7;});}return null;};}function removeEntity(_0x30d2ab,_0xbb1bb7){return function(_0x54e6c5){if(_0x54e6c5){return _0x54e6c5[_0xe524('0x24')]()['then'](function(){_0x30d2ab[_0xe524('0x1c')](0xcc)['end']();});}};}function handleEntityNotFound(_0x5ee073,_0x34e149){return function(_0x2215f8){if(!_0x2215f8){_0x5ee073[_0xe524('0x16')](0x194);}return _0x2215f8;};}function handleError(_0x4497e7,_0x26c00d){_0x26c00d=_0x26c00d||0x1f4;return function(_0x267630){logger[_0xe524('0x25')](_0x267630[_0xe524('0x26')]);if(_0x267630[_0xe524('0x27')]){delete _0x267630['name'];}_0x4497e7[_0xe524('0x1c')](_0x26c00d)['send'](_0x267630);};}exports['index']=function(_0x20cab8,_0x7e30a8){var _0x558821={},_0x53a9a8={},_0x2edb68={'count':0x0,'rows':[]};var _0xecae4c=_[_0xe524('0x28')](db[_0xe524('0x29')][_0xe524('0x2a')],function(_0x1c3461){return{'name':_0x1c3461[_0xe524('0x2b')],'type':_0x1c3461[_0xe524('0x2c')][_0xe524('0x2d')]};});_0x53a9a8[_0xe524('0x2e')]=_[_0xe524('0x28')](_0xecae4c,_0xe524('0x27'));_0x53a9a8[_0xe524('0x2f')]=_[_0xe524('0x30')](_0x20cab8['query']);_0x53a9a8['filters']=_[_0xe524('0x31')](_0x53a9a8[_0xe524('0x2e')],_0x53a9a8[_0xe524('0x2f')]);_0x558821[_0xe524('0x32')]=_[_0xe524('0x31')](_0x53a9a8['model'],qs[_0xe524('0x33')](_0x20cab8[_0xe524('0x2f')][_0xe524('0x33')]));_0x558821[_0xe524('0x32')]=_0x558821[_0xe524('0x32')]['length']?_0x558821['attributes']:_0x53a9a8['model'];if(!_0x20cab8[_0xe524('0x2f')][_0xe524('0x34')](_0xe524('0x35'))){_0x558821[_0xe524('0x1b')]=qs[_0xe524('0x1b')](_0x20cab8[_0xe524('0x2f')][_0xe524('0x1b')]);_0x558821[_0xe524('0x18')]=qs[_0xe524('0x18')](_0x20cab8[_0xe524('0x2f')]['offset']);}_0x558821[_0xe524('0x36')]=qs[_0xe524('0x37')](_0x20cab8[_0xe524('0x2f')][_0xe524('0x37')]);_0x558821[_0xe524('0x38')]=qs[_0xe524('0x39')](_[_0xe524('0x3a')](_0x20cab8[_0xe524('0x2f')],_0x53a9a8['filters']),_0xecae4c);if(_0x20cab8[_0xe524('0x2f')][_0xe524('0x3b')]){_0x558821[_0xe524('0x38')]=_[_0xe524('0x3c')](_0x558821[_0xe524('0x38')],{'$or':_[_0xe524('0x28')](_0xecae4c,function(_0x5f2519){if(_0x5f2519[_0xe524('0x2c')]!==_0xe524('0x3d')){var _0x122fb3={};_0x122fb3[_0x5f2519[_0xe524('0x27')]]={'$like':'%'+_0x20cab8['query'][_0xe524('0x3b')]+'%'};return _0x122fb3;}})});}_0x558821=_['merge']({},_0x558821,_0x20cab8[_0xe524('0x3e')]);var _0x18c551={'where':_0x558821[_0xe524('0x38')]};return db[_0xe524('0x29')][_0xe524('0x1a')](_0x18c551)[_0xe524('0x23')](function(_0x8893af){_0x2edb68[_0xe524('0x1a')]=_0x8893af;if(_0x20cab8[_0xe524('0x2f')][_0xe524('0x3f')]){_0x558821[_0xe524('0x40')]=[{'all':!![]}];}return db['Attachment'][_0xe524('0x41')](_0x558821);})[_0xe524('0x23')](function(_0x5a5eb0){_0x2edb68[_0xe524('0x42')]=_0x5a5eb0;return _0x2edb68;})[_0xe524('0x23')](respondWithFilteredResult(_0x7e30a8,_0x558821))['catch'](handleError(_0x7e30a8,null));};exports[_0xe524('0x43')]=function(_0x458afd,_0xe2e076){var _0x2ff01e={'raw':!![],'where':{'id':_0x458afd[_0xe524('0x44')]['id']}},_0x3212f4={};_0x3212f4[_0xe524('0x2e')]=_[_0xe524('0x30')](db['Attachment'][_0xe524('0x2a')]);_0x3212f4[_0xe524('0x2f')]=_[_0xe524('0x30')](_0x458afd['query']);_0x3212f4[_0xe524('0x39')]=_[_0xe524('0x31')](_0x3212f4['model'],_0x3212f4[_0xe524('0x2f')]);_0x2ff01e[_0xe524('0x32')]=_[_0xe524('0x31')](_0x3212f4[_0xe524('0x2e')],qs[_0xe524('0x33')](_0x458afd[_0xe524('0x2f')]['fields']));_0x2ff01e[_0xe524('0x32')]=_0x2ff01e[_0xe524('0x32')]['length']?_0x2ff01e[_0xe524('0x32')]:_0x3212f4[_0xe524('0x2e')];if(_0x458afd['query'][_0xe524('0x3f')]){_0x2ff01e['include']=[{'all':!![]}];}_0x2ff01e=_[_0xe524('0x3c')]({},_0x2ff01e,_0x458afd[_0xe524('0x3e')]);return db[_0xe524('0x29')][_0xe524('0x45')](_0x2ff01e)[_0xe524('0x23')](handleEntityNotFound(_0xe2e076,null))[_0xe524('0x23')](respondWithResult(_0xe2e076,null))[_0xe524('0x46')](handleError(_0xe2e076,null));};exports[_0xe524('0x47')]=function(_0x1ff5f1,_0x3d30a6){var _0x2a15ed={'where':{'id':_0x1ff5f1[_0xe524('0x44')]['id']}},_0x155454={};_0x155454[_0xe524('0x2e')]=_[_0xe524('0x30')](db['Attachment']['rawAttributes']);_0x2a15ed[_0xe524('0x32')]=_['intersection'](_0x155454[_0xe524('0x2e')],qs[_0xe524('0x33')](_0x1ff5f1['query'][_0xe524('0x33')]));_0x2a15ed[_0xe524('0x32')]=_0x2a15ed[_0xe524('0x32')]['length']?_0x2a15ed['attributes']:_0x155454[_0xe524('0x2e')];if(_0x1ff5f1[_0xe524('0x2f')][_0xe524('0x3f')]){_0x2a15ed[_0xe524('0x40')]=[{'all':!![]}];}_0x2a15ed=_['merge']({},_0x2a15ed,_0x1ff5f1[_0xe524('0x3e')]);return db[_0xe524('0x29')][_0xe524('0x45')](_0x2a15ed)[_0xe524('0x23')](handleEntityNotFound(_0x3d30a6,null))[_0xe524('0x23')](function(_0x33993a){if(_0x33993a){var _0x5dff17=_0x33993a[_0xe524('0x48')]({'plain':!![]});_0x5dff17=qs['omit'](_0x5dff17,['id',_0xe524('0x49'),_0xe524('0x4a')]);_0x1ff5f1[_0xe524('0x4b')]=_[_0xe524('0x4c')](_0x1ff5f1[_0xe524('0x4b')],['id',_0xe524('0x49'),'updatedAt']);return db['Attachment'][_0xe524('0x4d')](_[_0xe524('0x3c')](_0x5dff17,_0x1ff5f1[_0xe524('0x4b')]),{'include':_0x1ff5f1[_0xe524('0x2f')][_0xe524('0x3f')]?[{'all':!![]}]:undefined});}})[_0xe524('0x23')](respondWithResult(_0x3d30a6,0xc9))[_0xe524('0x46')](handleError(_0x3d30a6,null));};exports[_0xe524('0x22')]=function(_0x88768c,_0x3ae034){if(_0x88768c['body']['id']){delete _0x88768c['body']['id'];}return db[_0xe524('0x29')][_0xe524('0x45')]({'where':{'id':_0x88768c[_0xe524('0x44')]['id']}})[_0xe524('0x23')](handleEntityNotFound(_0x3ae034,null))[_0xe524('0x23')](saveUpdates(_0x88768c['body'],null))[_0xe524('0x23')](respondWithResult(_0x3ae034,null))[_0xe524('0x46')](handleError(_0x3ae034,null));};exports[_0xe524('0x24')]=function(_0x34ef8f,_0x3f4f38){return db['Attachment'][_0xe524('0x45')]({'where':{'id':_0x34ef8f[_0xe524('0x44')]['id']}})[_0xe524('0x23')](handleEntityNotFound(_0x3f4f38,null))['then'](removeEntity(_0x3f4f38,null))[_0xe524('0x46')](handleError(_0x3f4f38,null));};exports[_0xe524('0x4d')]=function(_0x494255,_0xe7a3a8,_0x27e554){_0x494255[_0xe524('0x4b')][_0xe524('0x27')]=_0x494255[_0xe524('0x4e')]['originalname'];_0x494255['body']['basename']=_0x494255[_0xe524('0x4e')][_0xe524('0x4f')];_0x494255['body'][_0xe524('0x2c')]=_0x494255[_0xe524('0x4e')][_0xe524('0x50')];return db[_0xe524('0x29')]['create'](_0x494255[_0xe524('0x4b')])['then'](respondWithResult(_0xe7a3a8,0xc9))['catch'](handleError(_0xe7a3a8,null));};exports[_0xe524('0x51')]=function(_0x482fb3,_0x3f9a36,_0x21d62f){return db[_0xe524('0x29')][_0xe524('0x52')]({'where':{'id':_0x482fb3[_0xe524('0x44')]['id']},'raw':!![]})[_0xe524('0x23')](handleEntityNotFound(_0x3f9a36,null))[_0xe524('0x23')](function(_0x17f921){if(_0x17f921){var _0x440130=_0x17f921[_0xe524('0x53')]!==null;var _0x1529c0=path[_0xe524('0x54')](config['root'],_0xe524('0x55'));if(_0x440130){_0x1529c0=path[_0xe524('0x54')](_0x1529c0,_0xe524('0x56'));}var _0xfae526=path[_0xe524('0x54')](_0x1529c0,_0x17f921[_0xe524('0x57')]);return _0x3f9a36[_0xe524('0x51')](_0xfae526);}})['catch'](handleError(_0x3f9a36,null));};
\ No newline at end of file
index 1c9f108..52b074d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0x53d8=['rimraf','../../config/environment','./attachment.attributes','Attachment','attachments','lodash','../../config/logger','api','moment'];(function(_0x28868d,_0xd3a4b0){var _0x4aeb1d=function(_0x3a1ed7){while(--_0x3a1ed7){_0x28868d['push'](_0x28868d['shift']());}};_0x4aeb1d(++_0xd3a4b0);}(_0x53d8,0x1f4));var _0x853d=function(_0x758b44,_0x43b473){_0x758b44=_0x758b44-0x0;var _0x41fa41=_0x53d8[_0x758b44];return _0x41fa41;};'use strict';var _=require(_0x853d('0x0'));var util=require('util');var logger=require(_0x853d('0x1'))(_0x853d('0x2'));var moment=require(_0x853d('0x3'));var BPromise=require('bluebird');var rp=require('request-promise');var fs=require('fs');var path=require('path');var rimraf=require(_0x853d('0x4'));var config=require(_0x853d('0x5'));var attributes=require(_0x853d('0x6'));module['exports']=function(_0xd3b4e6,_0x3c1eb9){return _0xd3b4e6['define'](_0x853d('0x7'),attributes,{'tableName':_0x853d('0x8'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 776ffea..4f5d919 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0x630e=['code','Attachment,\x20%s,\x20%s','message','result','catch','CreateAttachment','Attachment','create','body','options','raw','lodash','moment','ioredis','../../mysqldb','../../config/utils','rpc','../../config/environment','jayson/promise','client','http','then','info','debug','Attachment,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error'];(function(_0x47794f,_0x12c9b3){var _0x2ca51d=function(_0x43deb3){while(--_0x43deb3){_0x47794f['push'](_0x47794f['shift']());}};_0x2ca51d(++_0x12c9b3);}(_0x630e,0x1af));var _0xe630=function(_0x40d527,_0x326168){_0x40d527=_0x40d527-0x0;var _0x43d447=_0x630e[_0x40d527];return _0x43d447;};'use strict';var _=require(_0xe630('0x0'));var util=require('util');var moment=require(_0xe630('0x1'));var BPromise=require('bluebird');var rs=require('randomstring');var fs=require('fs');var Redis=require(_0xe630('0x2'));var db=require(_0xe630('0x3'))['db'];var utils=require(_0xe630('0x4'));var logger=require('../../config/logger')(_0xe630('0x5'));var config=require(_0xe630('0x6'));var jayson=require(_0xe630('0x7'));var client=jayson[_0xe630('0x8')][_0xe630('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x481b21,_0x20193d,_0x34bad4){return new BPromise(function(_0x5a73ad,_0x267926){return client['request'](_0x481b21,_0x34bad4)[_0xe630('0xa')](function(_0x3da641){logger[_0xe630('0xb')]('Attachment,\x20%s,\x20%s',_0x20193d,'request\x20sent');logger[_0xe630('0xc')](_0xe630('0xd'),_0x20193d,_0xe630('0xe'),JSON[_0xe630('0xf')](_0x3da641));if(_0x3da641['error']){if(_0x3da641[_0xe630('0x10')][_0xe630('0x11')]===0x1f4){logger[_0xe630('0x10')](_0xe630('0x12'),_0x20193d,_0x3da641[_0xe630('0x10')][_0xe630('0x13')]);return _0x267926(_0x3da641[_0xe630('0x10')][_0xe630('0x13')]);}logger[_0xe630('0x10')](_0xe630('0x12'),_0x20193d,_0x3da641[_0xe630('0x10')][_0xe630('0x13')]);return _0x5a73ad(_0x3da641[_0xe630('0x10')]['message']);}else{logger[_0xe630('0xb')](_0xe630('0x12'),_0x20193d,_0xe630('0xe'));_0x5a73ad(_0x3da641[_0xe630('0x14')][_0xe630('0x13')]);}})[_0xe630('0x15')](function(_0x26a2b7){logger[_0xe630('0x10')](_0xe630('0x12'),_0x20193d,_0x26a2b7);_0x267926(_0x26a2b7);});});}exports[_0xe630('0x16')]=function(_0x3dbcf6){var _0x9721fa=this;return new Promise(function(_0xafcf13,_0x79213e){return db[_0xe630('0x17')][_0xe630('0x18')](_0x3dbcf6[_0xe630('0x19')],{'raw':_0x3dbcf6[_0xe630('0x1a')]?_0x3dbcf6[_0xe630('0x1a')][_0xe630('0x1b')]===undefined?!![]:![]:!![]})[_0xe630('0xa')](function(_0x22fa75){logger[_0xe630('0xb')](_0xe630('0x16'),_0x3dbcf6);logger[_0xe630('0xc')](_0xe630('0x16'),_0x3dbcf6,JSON['stringify'](_0x22fa75));_0xafcf13(_0x22fa75);})[_0xe630('0x15')](function(_0x35e869){logger[_0xe630('0x10')]('CreateAttachment',_0x35e869[_0xe630('0x13')],_0x3dbcf6);_0x79213e(_0x9721fa[_0xe630('0x10')](0x1f4,_0x35e869[_0xe630('0x13')]));});});};
\ No newline at end of file
index 3cdccd6..7e35daa 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(_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
+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(_0x344b06,_0x567798){var _0x56950c=function(_0x907dad){while(--_0x907dad){_0x344b06['push'](_0x344b06['shift']());}};_0x56950c(++_0x567798);}(_0xadb5,0xad));var _0x5adb=function(_0xf80834,_0x10d14a){_0xf80834=_0xf80834-0x0;var _0x8b864d=_0xadb5[_0xf80834];return _0x8b864d;};'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 05ea5c0..ee9b376 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0x4563=['blocked','blockedAt','admin','user','then','add','minutes','clearBlockUser','getLicense','catch','send','message','login','authenticate','Something\x20went\x20wrong,\x20please\x20try\x20again.','signToken','json','use','ad-login','User','passport','passport-local','moment','activedirectory2','bluebird','util','../../mysqldb','../../components/auth/service','../../config/environment','api','activedirectory','baseDN','url','domain','Error\x20authenticate\x20%s:\x20%s','inspect','Incorrect\x20username\x20and/or\x20password.\x20Please\x20retry\x20again\x20or\x20contact\x20the\x20administrator.','error','Error\x20authenticate\x20%s:\x20Active\x20Directory\x20not\x20configured','Setting','findOne','adSsoEnabled','blockDuration','Error\x20authenticate\x20%s:\x20Active\x20Directory\x20not\x20enabled','name','password','role','disabled'];(function(_0x3c5e54,_0x2b991b){var _0x3ae1f3=function(_0x43f80f){while(--_0x43f80f){_0x3c5e54['push'](_0x3c5e54['shift']());}};_0x3ae1f3(++_0x2b991b);}(_0x4563,0x194));var _0x3456=function(_0x378b8f,_0x1e05f3){_0x378b8f=_0x378b8f-0x0;var _0x1cc6e2=_0x4563[_0x378b8f];return _0x1cc6e2;};'use strict';var passport=require(_0x3456('0x0'));var LocalStrategy=require(_0x3456('0x1'))['Strategy'];var moment=require(_0x3456('0x2'));var ActiveDirectory=require(_0x3456('0x3'));var BPromise=require(_0x3456('0x4'));var util=require(_0x3456('0x5'));var db=require(_0x3456('0x6'))['db'];var authService=require(_0x3456('0x7'));var utils=require('../../config/utils');var config=require(_0x3456('0x8'));var logger=require('../../config/logger')(_0x3456('0x9'));function isActiveDirectoryConfigured(_0x467ab2){var _0x2ec388=![];if(typeof _0x467ab2['activedirectory']!=='undefined'){_0x2ec388=_0x467ab2[_0x3456('0xa')][_0x3456('0xb')]&&_0x467ab2[_0x3456('0xa')][_0x3456('0xc')]&&_0x467ab2[_0x3456('0xa')][_0x3456('0xd')];}return _0x2ec388;}function adAuthenticate(_0x243e5a,_0x4fa10d,_0x4e331f){return new BPromise(function(_0x1c3744,_0x2d4ee4){try{var _0x3b3ad9=new ActiveDirectory(_0x243e5a);_0x3b3ad9['authenticate'](_0x4fa10d,_0x4e331f,function(_0x1cab85,_0x975c1){if(_0x1cab85){logger['error'](_0x3456('0xe'),_0x4fa10d,util[_0x3456('0xf')](_0x1cab85,{'showHidden':![],'depth':null}));_0x2d4ee4(_0x3456('0x10'));}else if(!_0x975c1){logger[_0x3456('0x11')]('Error\x20authenticate\x20%s:\x20Wrong\x20credentials',_0x4fa10d);_0x2d4ee4(_0x3456('0x10'));}else{_0x1c3744(_0x975c1);}});}catch(_0x38c4ea){_0x2d4ee4(_0x38c4ea);}});}function ActiveDirectoryAuthenticate(_0x32e48f,_0x5af092,_0xab1f9d,_0x616a0c){var _0x164fa2,_0x1eeeaf;if(!isActiveDirectoryConfigured(config)){logger['error'](_0x3456('0x12'),_0x5af092);return _0x616a0c(null,![],{'message':_0x3456('0x10')});}return db[_0x3456('0x13')][_0x3456('0x14')]({'where':{'id':0x1},'attributes':[_0x3456('0x15'),_0x3456('0x16')],'raw':!![]})['then'](function(_0x1df6d8){_0x164fa2=_0x1df6d8;if(!_0x164fa2[_0x3456('0x15')]){logger[_0x3456('0x11')](_0x3456('0x17'),_0x5af092);throw new Error(_0x3456('0x10'));}return _0x32e48f[_0x3456('0x14')]({'attributes':['id',_0x3456('0x18'),_0x3456('0x19'),'salt',_0x3456('0x1a'),_0x3456('0x1b'),_0x3456('0x1c'),_0x3456('0x1d'),'online'],'where':{'name':_0x5af092,'role':{'$or':[_0x3456('0x1e'),_0x3456('0x1f'),'agent']},'adSsoEnabled':!![]}});})[_0x3456('0x20')](function(_0x57d313){if(!_0x57d313||_0x57d313&&_0x57d313[_0x3456('0x18')]!==_0x5af092){throw new Error(_0x3456('0x10'));}_0x1eeeaf=_0x57d313;var _0x24d37f=_0x1eeeaf[_0x3456('0x18')]+'@'+config[_0x3456('0xa')][_0x3456('0xd')];return adAuthenticate(config[_0x3456('0xa')],_0x24d37f,_0xab1f9d);})[_0x3456('0x20')](function(_0x872fb2){if(_0x1eeeaf['disabled']){throw new Error('Incorrect\x20username\x20and/or\x20password.\x20Please\x20retry\x20again\x20or\x20contact\x20the\x20administrator.');}if(_0x164fa2['blockDuration']>0x0){if(_0x1eeeaf[_0x3456('0x1c')]){if(moment(_0x1eeeaf[_0x3456('0x1d')])[_0x3456('0x21')](_0x164fa2[_0x3456('0x16')],_0x3456('0x22'))>moment()){throw new Error(_0x3456('0x10'));}return utils[_0x3456('0x23')](_0x1eeeaf,0x0,![],null)[_0x3456('0x20')](function(){return utils['getLicense'](_0x1eeeaf);})['then'](function(){return _0x616a0c(null,_0x1eeeaf);});}else{return utils[_0x3456('0x24')](_0x1eeeaf)['then'](function(){return _0x616a0c(null,_0x1eeeaf);});}}else{return utils[_0x3456('0x24')](_0x1eeeaf)[_0x3456('0x20')](function(){return _0x616a0c(null,_0x1eeeaf);});}})[_0x3456('0x25')](function(_0x3ad602){return _0x616a0c(null,![],_0x3ad602);});}function handleError(_0x26289b,_0x3a31f5,_0x392a5a){return _0x26289b['status'](_0x3a31f5||0x1f4)[_0x3456('0x26')]({'message':_0x392a5a?_0x392a5a[_0x3456('0x27')]||_0x392a5a:''});}exports[_0x3456('0x28')]=function(_0x185007,_0x4ae722,_0x141482){passport[_0x3456('0x29')]('ad-login',function(_0x267a16,_0x5d0675,_0xe05e2){var _0x1d7f2c=_0x267a16||_0xe05e2;if(_0x1d7f2c){return handleError(_0x4ae722,0x191,_0x1d7f2c);}if(!_0x5d0675){return handleError(_0x4ae722,0x194,{'message':_0x3456('0x2a')});}else{var _0x54a5d0={'payload':{'id':_0x5d0675['id'],'role':_0x5d0675['role']},'options':{'expiresIn':0x15180}};return authService[_0x3456('0x2b')](_0x54a5d0)[_0x3456('0x20')](function(_0x1ec88f){_0x4ae722[_0x3456('0x2c')]({'id':_0x5d0675['id'],'token':_0x1ec88f,'statusCall':'','isAlreadyLogged':_0x5d0675['online']});});}})(_0x185007,_0x4ae722,_0x141482);};passport[_0x3456('0x2d')](_0x3456('0x2e'),new LocalStrategy({'usernameField':_0x3456('0x18'),'passwordField':'password'},function(_0x2a162f,_0x23196d,_0x59d5c9){return ActiveDirectoryAuthenticate(db[_0x3456('0x2f')],_0x2a162f,_0x23196d,_0x59d5c9);}));
\ No newline at end of file
index bb38cc2..ad0083c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0xc441=['post','exports','express','./authActiveDirectory.controller'];(function(_0x5aa55e,_0x153610){var _0x94a71b=function(_0x172796){while(--_0x172796){_0x5aa55e['push'](_0x5aa55e['shift']());}};_0x94a71b(++_0x153610);}(_0xc441,0x1a2));var _0x1c44=function(_0x3c83e9,_0x515a2d){_0x3c83e9=_0x3c83e9-0x0;var _0x3d1b93=_0xc441[_0x3c83e9];return _0x3d1b93;};'use strict';var express=require(_0x1c44('0x0'));var router=express['Router']();var controller=require(_0x1c44('0x1'));router[_0x1c44('0x2')]('/',controller['login']);module[_0x1c44('0x3')]=router;
\ No newline at end of file
index 765f141..ab8309a 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(_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
+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(_0x525c7b,_0x488fcc){var _0x27b33e=function(_0x56d43b){while(--_0x56d43b){_0x525c7b['push'](_0x525c7b['shift']());}};_0x27b33e(++_0x488fcc);}(_0x7a54,0x106));var _0x47a5=function(_0x2875b3,_0x5477f0){_0x2875b3=_0x2875b3-0x0;var _0xbedae4=_0x7a54[_0x2875b3];return _0xbedae4;};'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 89b7ee9..a46b4fd 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0x4992=['exports','Router','../user/user.controller.js','login','get','callback','isMiddleware','setTokenCookie'];(function(_0x57fd6c,_0x341556){var _0x3c161e=function(_0x797645){while(--_0x797645){_0x57fd6c['push'](_0x57fd6c['shift']());}};_0x3c161e(++_0x341556);}(_0x4992,0xf1));var _0x2499=function(_0x3e5086,_0x48f4a2){_0x3e5086=_0x3e5086-0x0;var _0xfeb102=_0x4992[_0x3e5086];return _0xfeb102;};'use strict';var express=require('express');var passport=require('passport');var router=express[_0x2499('0x0')]();var controller=require('./authGoogle.controller');var userController=require(_0x2499('0x1'));var authService=require('../../components/auth/service');router['get']('/',controller[_0x2499('0x2')]);router[_0x2499('0x3')]('/callback',controller[_0x2499('0x4')],authService[_0x2499('0x5')],userController[_0x2499('0x2')],authService[_0x2499('0x6')]);module[_0x2499('0x7')]=router;
\ No newline at end of file
index 80f613a..313347f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0x1a9c=['Reset\x20Email\x20sent!','token','now','Password\x20reset\x20token\x20is\x20invalid\x20or\x20has\x20expired.','enforcePasswordHistory','passwordHistoryLimit','previousPasswords','validatePasswordHistory','use','util','passport','passport-local','Strategy','lodash','randomstring','../../mysqldb','../../config/utils','client','http','findOne','allowedLoginAttempts','then','name','password','salt','disabled','blockedAt','admin','user','agent','Incorrect\x20username\x20and/or\x20password.\x20Please\x20retry\x20again\x20or\x20contact\x20the\x20administrator.','blocked','add','minutes','clearBlockUser','blockDuration','catch','getLicense','email','Smtp','CloudProvider','Unable\x20to\x20find\x20a\x20configured\x20SMTP\x20service!','getSmtpOptions','merge','format','\x22%s\x22\x20<%s>','request','SendMail','error','SendMail\x20error:\x20%s.\x20Please\x20contact\x20your\x20Administrator!','message','stringify','status','send','login','Something\x20went\x20wrong,\x20please\x20try\x20again.','role','json','online','forgot','body','Email\x20parameter\x20is\x20missing','generate','trim','toLowerCase','User','find','This\x20email\x20is\x20not\x20registered.','The\x20user\x20is\x20disabled.\x20Please\x20contact\x20the\x20administrator.','The\x20user\x20is\x20blocked.\x20Please\x20contact\x20the\x20administrator.','resetPasswordToken','resetPasswordExpires','save','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'];(function(_0x279d37,_0x14de3f){var _0x530173=function(_0x37fc79){while(--_0x37fc79){_0x279d37['push'](_0x279d37['shift']());}};_0x530173(++_0x14de3f);}(_0x1a9c,0x1dd));var _0xc1a9=function(_0x32a6e7,_0x2c52e0){_0x32a6e7=_0x32a6e7-0x0;var _0x1e289c=_0x1a9c[_0x32a6e7];return _0x1e289c;};'use strict';var util=require(_0xc1a9('0x0'));var passport=require(_0xc1a9('0x1'));var LocalStrategy=require(_0xc1a9('0x2'))[_0xc1a9('0x3')];var jayson=require('jayson/promise');var _=require(_0xc1a9('0x4'));var rs=require(_0xc1a9('0x5'));var moment=require('moment');var db=require(_0xc1a9('0x6'))['db'];var authService=require('../../components/auth/service');var utils=require(_0xc1a9('0x7'));var client=jayson[_0xc1a9('0x8')][_0xc1a9('0x9')]({'port':0x232b});function localAuthenticate(_0x522367,_0x48a86c,_0x1740dc,_0xce6aa){var _0x5a49f9,_0x4e8b01;return db['Setting'][_0xc1a9('0xa')]({'where':{'id':0x1},'attributes':[_0xc1a9('0xb'),'blockDuration'],'raw':!![]})[_0xc1a9('0xc')](function(_0x366056){_0x5a49f9=_0x366056;return _0x522367[_0xc1a9('0xa')]({'attributes':['id',_0xc1a9('0xd'),_0xc1a9('0xe'),_0xc1a9('0xf'),'role',_0xc1a9('0x10'),'blocked',_0xc1a9('0x11'),'loginAttempts'],'where':{'name':_0x48a86c,'role':{'$or':[_0xc1a9('0x12'),_0xc1a9('0x13'),_0xc1a9('0x14')]}}});})[_0xc1a9('0xc')](function(_0xc98894){if(!_0xc98894||_0xc98894&&_0xc98894[_0xc1a9('0xd')]!==_0x48a86c){throw new Error(_0xc1a9('0x15'));}else{_0x4e8b01=_0xc98894;return _0x4e8b01;}})[_0xc1a9('0xc')](function(){_0x4e8b01['authenticate'](_0x1740dc,function(_0x32c064,_0x2d961d){var _0x577c8d=_0x4e8b01['loginAttempts']+0x1;if(_0x32c064){return _0xce6aa(_0x32c064);}else if(!_0x2d961d){if(_0x4e8b01[_0xc1a9('0x10')]){return _0xce6aa(null,![],{'message':_0xc1a9('0x15')});}else if(_0x5a49f9['allowedLoginAttempts']>0x0){if(_0x4e8b01[_0xc1a9('0x16')]){if(_0x5a49f9['blockDuration']>0x0){if(moment(_0x4e8b01['blockedAt'])[_0xc1a9('0x17')](_0x5a49f9['blockDuration'],_0xc1a9('0x18'))>moment()){return _0xce6aa(null,![],{'message':'Incorrect\x20username\x20and/or\x20password.\x20Please\x20retry\x20again\x20or\x20contact\x20the\x20administrator.'});}else{return utils[_0xc1a9('0x19')](_0x4e8b01,_0x577c8d,![],null)[_0xc1a9('0xc')](function(){return _0xce6aa(null,![],{'message':_0xc1a9('0x15')});});}}else{return _0xce6aa(null,![],{'message':_0xc1a9('0x15')});}}else{if(_0x577c8d>=_0x5a49f9['allowedLoginAttempts']){return utils[_0xc1a9('0x19')](_0x4e8b01,0x0,!![],moment())[_0xc1a9('0xc')](function(){return _0xce6aa(null,![],{'message':_0xc1a9('0x15')});});}else{return utils[_0xc1a9('0x19')](_0x4e8b01,_0x577c8d,![],null)['then'](function(){return _0xce6aa(null,![],{'message':_0xc1a9('0x15')});});}}}else{return _0xce6aa(null,![],{'message':_0xc1a9('0x15')});}}else{if(_0x4e8b01['disabled']){return _0xce6aa(null,![],{'message':_0xc1a9('0x15')});}else if(_0x5a49f9[_0xc1a9('0xb')]>0x0){if(_0x4e8b01[_0xc1a9('0x16')]){if(_0x5a49f9[_0xc1a9('0x1a')]>0x0){if(moment(_0x4e8b01[_0xc1a9('0x11')])[_0xc1a9('0x17')](_0x5a49f9[_0xc1a9('0x1a')],_0xc1a9('0x18'))>moment()){return _0xce6aa(null,![],{'message':_0xc1a9('0x15')});}else{return utils['clearBlockUser'](_0x4e8b01,0x0,![],null)[_0xc1a9('0xc')](function(){return utils['getLicense'](_0x4e8b01);})[_0xc1a9('0xc')](function(){return _0xce6aa(null,_0x4e8b01);});}}else{return _0xce6aa(null,![],{'message':_0xc1a9('0x15')});}}else{return utils[_0xc1a9('0x19')](_0x4e8b01,0x0,![],null)[_0xc1a9('0xc')](function(){return utils['getLicense'](_0x4e8b01);})['then'](function(){return _0xce6aa(null,_0x4e8b01);})[_0xc1a9('0x1b')](function(_0x17906d){return _0xce6aa(null,![],_0x17906d);});}}else{if(_0x4e8b01[_0xc1a9('0x16')]){return _0xce6aa(null,![],{'message':'Incorrect\x20username\x20and/or\x20password.\x20Please\x20retry\x20again\x20or\x20contact\x20the\x20administrator.'});}else{return utils[_0xc1a9('0x1c')](_0x4e8b01)[_0xc1a9('0xc')](function(){return _0xce6aa(null,_0x4e8b01);});}}}});})[_0xc1a9('0x1b')](function(_0x138437){return _0xce6aa(null,![],_0x138437);});}function sendServiceMail(_0x5d48ce){return db['MailAccount']['find']({'where':{'service':!![]},'attributes':['id','name',_0xc1a9('0x1d')],'include':[{'model':db['MailServerOut'],'as':_0xc1a9('0x1e'),'include':[{'model':db[_0xc1a9('0x1f')],'as':_0xc1a9('0x1f')}]}]})['then'](function(_0x1d1286){if(!_0x1d1286){throw new Error(_0xc1a9('0x20'));}var _0x546846=_0x1d1286[_0xc1a9('0x21')]();var _0x204c94={'account':_0x546846,'message':_[_0xc1a9('0x22')]({'from':util[_0xc1a9('0x23')](_0xc1a9('0x24'),_0x1d1286[_0xc1a9('0xd')],_0x1d1286[_0xc1a9('0x1d')]||_0x1d1286[_0xc1a9('0x1e')][_0xc1a9('0x13')])},_0x5d48ce)};return client[_0xc1a9('0x25')](_0xc1a9('0x26'),_0x204c94);})[_0xc1a9('0xc')](function(_0x10b09b){if(_0x10b09b[_0xc1a9('0x27')]){throw new Error(util['format'](_0xc1a9('0x28'),_0x10b09b['error'][_0xc1a9('0x29')]||JSON[_0xc1a9('0x2a')](_0x10b09b[_0xc1a9('0x27')])));}return!![];});}function handleError(_0x515a42,_0x10023e,_0x198c84){return _0x515a42[_0xc1a9('0x2b')](_0x10023e||0x1f4)[_0xc1a9('0x2c')]({'message':_0x198c84?_0x198c84[_0xc1a9('0x29')]||_0x198c84:''});}exports[_0xc1a9('0x2d')]=function(_0x2a671b,_0x2ff20f,_0x1cd3df){passport['authenticate']('local-login',function(_0x3e5e0f,_0x3dcdfa,_0x3545a0){var _0x496e63=_0x3e5e0f||_0x3545a0;if(_0x496e63){return handleError(_0x2ff20f,0x191,_0x496e63);}if(!_0x3dcdfa){return handleError(_0x2ff20f,0x194,{'message':_0xc1a9('0x2e')});}else{var _0x3bad0b={'payload':{'id':_0x3dcdfa['id'],'role':_0x3dcdfa[_0xc1a9('0x2f')]},'options':{'expiresIn':0x15180}};return authService['signToken'](_0x3bad0b)[_0xc1a9('0xc')](function(_0x55246e){_0x2ff20f[_0xc1a9('0x30')]({'id':_0x3dcdfa['id'],'token':_0x55246e,'statusCall':'','isAlreadyLogged':_0x3dcdfa[_0xc1a9('0x31')]});});}})(_0x2a671b,_0x2ff20f,_0x1cd3df);};exports[_0xc1a9('0x32')]=function(_0x2fdaf4,_0x2ec148){if(!_0x2fdaf4[_0xc1a9('0x33')][_0xc1a9('0x1d')]){return handleError(_0x2ec148,0x1f4,{'message':_0xc1a9('0x34')});}var _0x36fdcc=rs[_0xc1a9('0x35')]();_0x2fdaf4[_0xc1a9('0x33')][_0xc1a9('0x1d')]=_0x2fdaf4[_0xc1a9('0x33')][_0xc1a9('0x1d')][_0xc1a9('0x36')]()[_0xc1a9('0x37')]();var _0x440afb;return db['Setting'][_0xc1a9('0xa')]({'where':{'id':0x1},'attributes':[_0xc1a9('0xb'),'blockDuration'],'raw':!![]})[_0xc1a9('0xc')](function(_0x42f737){_0x440afb=_0x42f737;return db[_0xc1a9('0x38')][_0xc1a9('0x39')]({'where':{'email':_0x2fdaf4['body']['email']}});})[_0xc1a9('0xc')](function(_0x2c7742){if(!_0x2c7742){throw new Error(_0xc1a9('0x3a'));}if(_0x2c7742[_0xc1a9('0x10')]){throw new Error(_0xc1a9('0x3b'));}if(_0x2c7742['blocked']){if(moment(_0x2c7742['blockedAt'])[_0xc1a9('0x17')](_0x440afb['blockDuration'],_0xc1a9('0x18'))>moment()){throw new Error(_0xc1a9('0x3c'));}else{_0x2c7742[_0xc1a9('0x16')]=![];_0x2c7742['blockedAt']=null;}}_0x2c7742[_0xc1a9('0x3d')]=_0x36fdcc;_0x2c7742[_0xc1a9('0x3e')]=Date['now']()+0x36ee80;return _0x2c7742[_0xc1a9('0x3f')]();})['then'](function(){return sendServiceMail({'to':_0x2fdaf4[_0xc1a9('0x33')]['email'],'subject':'xCally\x20Motion\x20Password\x20Reset','text':'You\x20are\x20receiving\x20this\x20because\x20you\x20(or\x20someone\x20else)\x20have\x20requested\x20the\x20reset\x20of\x20the\x20password\x20for\x20your\x20account.\x0a\x0a'+_0xc1a9('0x40')+_0xc1a9('0x41')+_0x2fdaf4['headers'][_0xc1a9('0x42')]+_0xc1a9('0x43')+_0x36fdcc+'\x0a\x0a'+_0xc1a9('0x44')});})[_0xc1a9('0xc')](function(){_0x2ec148['status'](0xc8)['send']({'message':_0xc1a9('0x45')});})[_0xc1a9('0x1b')](function(_0x1ec9d0){return handleError(_0x2ec148,0x1f4,_0x1ec9d0);});};exports['reset']=function(_0x377103,_0x1bb241){return db['User'][_0xc1a9('0x39')]({'where':{'resetPasswordToken':_0x377103['params'][_0xc1a9('0x46')],'resetPasswordExpires':{'$gt':Date[_0xc1a9('0x47')]()}}})[_0xc1a9('0xc')](function(_0x28b485){if(!_0x28b485){throw new Error(_0xc1a9('0x48'));}return db['Setting'][_0xc1a9('0xa')]({'attributes':['id','securePassword',_0xc1a9('0x49'),_0xc1a9('0x4a')]})[_0xc1a9('0xc')](function(_0x4a38e9){if(_0x4a38e9['securePassword'])authService['validatePasswordPattern'](_0x377103[_0xc1a9('0x33')][_0xc1a9('0xe')]);if(!_0x4a38e9[_0xc1a9('0x49')]||!_0x28b485[_0xc1a9('0x4b')])return _0x28b485;authService[_0xc1a9('0x4c')](_0x377103[_0xc1a9('0x33')][_0xc1a9('0xe')],_0x28b485['previousPasswords'],_0x4a38e9[_0xc1a9('0x4a')]);return _0x28b485;})['then'](function(){_0x28b485[_0xc1a9('0xe')]=_0x377103['body']['password'];_0x28b485['resetPasswordToken']=null;_0x28b485[_0xc1a9('0x3e')]=null;return _0x28b485[_0xc1a9('0x3f')]();});})[_0xc1a9('0xc')](function(){_0x1bb241[_0xc1a9('0x2b')](0xc8)[_0xc1a9('0x2c')]({'message':'Password\x20reset!'});})[_0xc1a9('0x1b')](function(_0x281355){return handleError(_0x1bb241,0x1f4,_0x281355);});};passport[_0xc1a9('0x4d')]('local-login',new LocalStrategy({'usernameField':_0xc1a9('0xd'),'passwordField':_0xc1a9('0xe')},function(_0xe7deeb,_0x162d34,_0x5b37ba){return localAuthenticate(db[_0xc1a9('0x38')],_0xe7deeb,_0x162d34,_0x5b37ba);}));
\ No newline at end of file
index 0754ff7..764bf7c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0x0db5=['forgot','/reset/:token','reset','exports','Router','./authLocal.controller','post','/forgot'];(function(_0x932aa9,_0x9beeb3){var _0x1c14e6=function(_0x3b7c0f){while(--_0x3b7c0f){_0x932aa9['push'](_0x932aa9['shift']());}};_0x1c14e6(++_0x9beeb3);}(_0x0db5,0x1ac));var _0x50db=function(_0x3c29f1,_0x28b914){_0x3c29f1=_0x3c29f1-0x0;var _0x48813a=_0x0db5[_0x3c29f1];return _0x48813a;};'use strict';var express=require('express');var router=express[_0x50db('0x0')]();var controller=require(_0x50db('0x1'));router['post']('/',controller['login']);router[_0x50db('0x2')](_0x50db('0x3'),controller[_0x50db('0x4')]);router['post'](_0x50db('0x5'),controller[_0x50db('0x6')]);module[_0x50db('0x7')]=router;
\ No newline at end of file
index b3be417..9e704f6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0x1abd=['STRING','INTEGER','sequelize','exports'];(function(_0x20a584,_0xe384a5){var _0x4b41a8=function(_0x2127c6){while(--_0x2127c6){_0x20a584['push'](_0x20a584['shift']());}};_0x4b41a8(++_0xe384a5);}(_0x1abd,0x14a));var _0xd1ab=function(_0x5625e4,_0x211bb2){_0x5625e4=_0x5625e4-0x0;var _0x16b519=_0x1abd[_0x5625e4];return _0x16b519;};'use strict';var Sequelize=require(_0xd1ab('0x0'));module[_0xd1ab('0x1')]={'name':{'type':Sequelize[_0xd1ab('0x2')],'allowNull':![]},'channel':{'type':Sequelize['STRING']},'description':{'type':Sequelize['STRING']},'status':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'timeout':{'type':Sequelize[_0xd1ab('0x3')],'defaultValue':0xa}};
\ No newline at end of file
index 8452a76..35113aa 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0x2dd2=['name','query','keys','filters','attributes','intersection','fields','length','hasOwnProperty','order','sort','where','pick','filter','merge','type','options','include','findAll','rows','show','includeAll','catch','create','body','find','params','addConditions','Condition','ids','omit','getConditions','findOne','nolimit','addActions','Action','getActions','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/logger','../../config/utils','../../config/environment','../../config/license/util','sendStatus','status','end','offset','limit','count','set','Content-Range','reject','save','update','then','destroy','error','stack','send','index','map','Automation','rawAttributes','fieldName','model'];(function(_0x67b075,_0x43557d){var _0x39d030=function(_0x4f25e1){while(--_0x4f25e1){_0x67b075['push'](_0x67b075['shift']());}};_0x39d030(++_0x43557d);}(_0x2dd2,0x7a));var _0x22dd=function(_0x23fd44,_0x3b193b){_0x23fd44=_0x23fd44-0x0;var _0x41d4d5=_0x2dd2[_0x23fd44];return _0x41d4d5;};'use strict';var emlformat=require(_0x22dd('0x0'));var rimraf=require(_0x22dd('0x1'));var zipdir=require(_0x22dd('0x2'));var jsonpatch=require(_0x22dd('0x3'));var rp=require(_0x22dd('0x4'));var moment=require(_0x22dd('0x5'));var BPromise=require(_0x22dd('0x6'));var Mustache=require(_0x22dd('0x7'));var util=require(_0x22dd('0x8'));var path=require(_0x22dd('0x9'));var sox=require('sox');var csv=require(_0x22dd('0xa'));var ejs=require(_0x22dd('0xb'));var fs=require('fs');var fs_extra=require(_0x22dd('0xc'));var _=require(_0x22dd('0xd'));var squel=require(_0x22dd('0xe'));var crypto=require(_0x22dd('0xf'));var jsforce=require(_0x22dd('0x10'));var deskjs=require(_0x22dd('0x11'));var toCsv=require(_0x22dd('0xa'));var querystring=require('querystring');var Papa=require(_0x22dd('0x12'));var Redis=require(_0x22dd('0x13'));var authService=require(_0x22dd('0x14'));var qs=require(_0x22dd('0x15'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require('../../config/license/hardware');var logger=require(_0x22dd('0x16'))('api');var utils=require(_0x22dd('0x17'));var config=require(_0x22dd('0x18'));var licenseUtil=require(_0x22dd('0x19'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x2c4539,_0x18cfa3){_0x18cfa3=_0x18cfa3||0xcc;return function(_0x3107d4){if(_0x3107d4){return _0x2c4539[_0x22dd('0x1a')](_0x18cfa3);}return _0x2c4539[_0x22dd('0x1b')](_0x18cfa3)[_0x22dd('0x1c')]();};}function respondWithResult(_0x24dd33,_0x35d5cf){_0x35d5cf=_0x35d5cf||0xc8;return function(_0xd4a1ba){if(_0xd4a1ba){return _0x24dd33[_0x22dd('0x1b')](_0x35d5cf)['json'](_0xd4a1ba);}};}function respondWithFilteredResult(_0x2ca148,_0x6b9f04){return function(_0x319607){if(_0x319607){var _0x542790=typeof _0x6b9f04[_0x22dd('0x1d')]==='undefined'&&typeof _0x6b9f04[_0x22dd('0x1e')]==='undefined';var _0x307158=_0x319607[_0x22dd('0x1f')];var _0x443e51=_0x542790?0x0:_0x6b9f04[_0x22dd('0x1d')];var _0x5c13ea=_0x542790?_0x319607[_0x22dd('0x1f')]:_0x6b9f04['offset']+_0x6b9f04[_0x22dd('0x1e')];var _0x535ea9;if(_0x5c13ea>=_0x307158){_0x5c13ea=_0x307158;_0x535ea9=0xc8;}else{_0x535ea9=0xce;}_0x2ca148[_0x22dd('0x1b')](_0x535ea9);return _0x2ca148[_0x22dd('0x20')](_0x22dd('0x21'),_0x443e51+'-'+_0x5c13ea+'/'+_0x307158)['json'](_0x319607);}return null;};}function patchUpdates(_0x9b520c){return function(_0x495bfc){try{jsonpatch['apply'](_0x495bfc,_0x9b520c,!![]);}catch(_0x18bf6c){return BPromise[_0x22dd('0x22')](_0x18bf6c);}return _0x495bfc[_0x22dd('0x23')]();};}function saveUpdates(_0x50fd89,_0x282b8d){return function(_0x31f9c1){if(_0x31f9c1){return _0x31f9c1[_0x22dd('0x24')](_0x50fd89)[_0x22dd('0x25')](function(_0x19e4c2){return _0x19e4c2;});}return null;};}function removeEntity(_0x31ff2b,_0x55a5e3){return function(_0x2f03b5){if(_0x2f03b5){return _0x2f03b5[_0x22dd('0x26')]()[_0x22dd('0x25')](function(){_0x31ff2b[_0x22dd('0x1b')](0xcc)[_0x22dd('0x1c')]();});}};}function handleEntityNotFound(_0x405dbb,_0x256174){return function(_0x1beb1e){if(!_0x1beb1e){_0x405dbb[_0x22dd('0x1a')](0x194);}return _0x1beb1e;};}function handleError(_0x249d7e,_0x4fefa3){_0x4fefa3=_0x4fefa3||0x1f4;return function(_0x52f937){logger[_0x22dd('0x27')](_0x52f937[_0x22dd('0x28')]);if(_0x52f937['name']){delete _0x52f937['name'];}_0x249d7e[_0x22dd('0x1b')](_0x4fefa3)[_0x22dd('0x29')](_0x52f937);};}exports[_0x22dd('0x2a')]=function(_0x331765,_0x15d934){var _0x551f9c={},_0x3565e1={},_0x3ef473={'count':0x0,'rows':[]};var _0x3188cc=_[_0x22dd('0x2b')](db[_0x22dd('0x2c')][_0x22dd('0x2d')],function(_0x262239){return{'name':_0x262239[_0x22dd('0x2e')],'type':_0x262239['type']['key']};});_0x3565e1[_0x22dd('0x2f')]=_[_0x22dd('0x2b')](_0x3188cc,_0x22dd('0x30'));_0x3565e1[_0x22dd('0x31')]=_[_0x22dd('0x32')](_0x331765['query']);_0x3565e1[_0x22dd('0x33')]=_['intersection'](_0x3565e1[_0x22dd('0x2f')],_0x3565e1[_0x22dd('0x31')]);_0x551f9c[_0x22dd('0x34')]=_[_0x22dd('0x35')](_0x3565e1['model'],qs[_0x22dd('0x36')](_0x331765[_0x22dd('0x31')][_0x22dd('0x36')]));_0x551f9c[_0x22dd('0x34')]=_0x551f9c[_0x22dd('0x34')][_0x22dd('0x37')]?_0x551f9c[_0x22dd('0x34')]:_0x3565e1[_0x22dd('0x2f')];if(!_0x331765[_0x22dd('0x31')][_0x22dd('0x38')]('nolimit')){_0x551f9c[_0x22dd('0x1e')]=qs[_0x22dd('0x1e')](_0x331765[_0x22dd('0x31')][_0x22dd('0x1e')]);_0x551f9c[_0x22dd('0x1d')]=qs['offset'](_0x331765[_0x22dd('0x31')]['offset']);}_0x551f9c[_0x22dd('0x39')]=qs[_0x22dd('0x3a')](_0x331765[_0x22dd('0x31')]['sort']);_0x551f9c[_0x22dd('0x3b')]=qs['filters'](_[_0x22dd('0x3c')](_0x331765[_0x22dd('0x31')],_0x3565e1[_0x22dd('0x33')]),_0x3188cc);if(_0x331765[_0x22dd('0x31')][_0x22dd('0x3d')]){_0x551f9c[_0x22dd('0x3b')]=_[_0x22dd('0x3e')](_0x551f9c[_0x22dd('0x3b')],{'$or':_[_0x22dd('0x2b')](_0x3188cc,function(_0x4e202c){if(_0x4e202c[_0x22dd('0x3f')]!=='VIRTUAL'){var _0x57faf2={};_0x57faf2[_0x4e202c[_0x22dd('0x30')]]={'$like':'%'+_0x331765[_0x22dd('0x31')]['filter']+'%'};return _0x57faf2;}})});}_0x551f9c=_[_0x22dd('0x3e')]({},_0x551f9c,_0x331765[_0x22dd('0x40')]);var _0x6a5cd9={'where':_0x551f9c[_0x22dd('0x3b')]};return db[_0x22dd('0x2c')]['count'](_0x6a5cd9)['then'](function(_0x45f701){_0x3ef473['count']=_0x45f701;if(_0x331765[_0x22dd('0x31')]['includeAll']){_0x551f9c[_0x22dd('0x41')]=[{'all':!![]}];}return db[_0x22dd('0x2c')][_0x22dd('0x42')](_0x551f9c);})[_0x22dd('0x25')](function(_0x2ab7a0){_0x3ef473[_0x22dd('0x43')]=_0x2ab7a0;return _0x3ef473;})[_0x22dd('0x25')](respondWithFilteredResult(_0x15d934,_0x551f9c))['catch'](handleError(_0x15d934,null));};exports[_0x22dd('0x44')]=function(_0x2306aa,_0x3630b1){var _0x45f16c={'raw':![],'where':{'id':_0x2306aa['params']['id']}},_0x1f125e={};_0x1f125e['model']=_[_0x22dd('0x32')](db[_0x22dd('0x2c')]['rawAttributes']);_0x1f125e[_0x22dd('0x31')]=_['keys'](_0x2306aa[_0x22dd('0x31')]);_0x1f125e[_0x22dd('0x33')]=_[_0x22dd('0x35')](_0x1f125e['model'],_0x1f125e[_0x22dd('0x31')]);_0x45f16c['attributes']=_[_0x22dd('0x35')](_0x1f125e[_0x22dd('0x2f')],qs['fields'](_0x2306aa['query'][_0x22dd('0x36')]));_0x45f16c[_0x22dd('0x34')]=_0x45f16c['attributes'][_0x22dd('0x37')]?_0x45f16c[_0x22dd('0x34')]:_0x1f125e[_0x22dd('0x2f')];if(_0x2306aa[_0x22dd('0x31')][_0x22dd('0x45')]){_0x45f16c[_0x22dd('0x41')]=[{'all':!![]}];}_0x45f16c=_['merge']({},_0x45f16c,_0x2306aa[_0x22dd('0x40')]);return db['Automation']['find'](_0x45f16c)[_0x22dd('0x25')](handleEntityNotFound(_0x3630b1,null))[_0x22dd('0x25')](respondWithResult(_0x3630b1,null))[_0x22dd('0x46')](handleError(_0x3630b1,null));};exports['create']=function(_0x172de2,_0x2df2ce){return db[_0x22dd('0x2c')][_0x22dd('0x47')](_0x172de2[_0x22dd('0x48')],{})[_0x22dd('0x25')](respondWithResult(_0x2df2ce,0xc9))[_0x22dd('0x46')](handleError(_0x2df2ce,null));};exports[_0x22dd('0x24')]=function(_0x2beb63,_0x1318e0){if(_0x2beb63['body']['id']){delete _0x2beb63['body']['id'];}return db[_0x22dd('0x2c')][_0x22dd('0x49')]({'where':{'id':_0x2beb63[_0x22dd('0x4a')]['id']}})['then'](handleEntityNotFound(_0x1318e0,null))[_0x22dd('0x25')](saveUpdates(_0x2beb63['body'],null))[_0x22dd('0x25')](respondWithResult(_0x1318e0,null))[_0x22dd('0x46')](handleError(_0x1318e0,null));};exports[_0x22dd('0x26')]=function(_0x1b680a,_0xe6ccef){return db['Automation'][_0x22dd('0x49')]({'where':{'id':_0x1b680a[_0x22dd('0x4a')]['id']}})[_0x22dd('0x25')](handleEntityNotFound(_0xe6ccef,null))[_0x22dd('0x25')](removeEntity(_0xe6ccef,null))[_0x22dd('0x46')](handleError(_0xe6ccef,null));};exports[_0x22dd('0x4b')]=function(_0x5a29a2,_0x5c8d23,_0x36c40e){return db[_0x22dd('0x4c')][_0x22dd('0x49')]({'where':{'id':_0x5a29a2[_0x22dd('0x4a')]['id']}})[_0x22dd('0x25')](handleEntityNotFound(_0x5c8d23,null))[_0x22dd('0x25')](function(_0x51a742){if(_0x51a742){return _0x51a742[_0x22dd('0x4b')](_0x5a29a2[_0x22dd('0x48')][_0x22dd('0x4d')],_[_0x22dd('0x4e')](_0x5a29a2[_0x22dd('0x48')],[_0x22dd('0x4d'),'id'])||{});}})[_0x22dd('0x25')](respondWithResult(_0x5c8d23,null))[_0x22dd('0x46')](handleError(_0x5c8d23,null));};exports[_0x22dd('0x4f')]=function(_0x249ff8,_0xb82ea,_0x1004fe){var _0xf8c69c={};var _0x3f10d0={};var _0x24a2c6;var _0x3e9df4;return db[_0x22dd('0x2c')][_0x22dd('0x50')]({'where':{'id':_0x249ff8[_0x22dd('0x4a')]['id']}})[_0x22dd('0x25')](handleEntityNotFound(_0xb82ea,null))[_0x22dd('0x25')](function(_0x3b0b31){if(_0x3b0b31){_0x24a2c6=_0x3b0b31;_0x3f10d0[_0x22dd('0x2f')]=_['keys'](db[_0x22dd('0x4c')][_0x22dd('0x2d')]);_0x3f10d0[_0x22dd('0x31')]=_[_0x22dd('0x32')](_0x249ff8[_0x22dd('0x31')]);_0x3f10d0[_0x22dd('0x33')]=_[_0x22dd('0x35')](_0x3f10d0['model'],_0x3f10d0['query']);_0xf8c69c[_0x22dd('0x34')]=_['intersection'](_0x3f10d0[_0x22dd('0x2f')],qs[_0x22dd('0x36')](_0x249ff8['query']['fields']));_0xf8c69c['attributes']=_0xf8c69c[_0x22dd('0x34')][_0x22dd('0x37')]?_0xf8c69c['attributes']:_0x3f10d0[_0x22dd('0x2f')];_0xf8c69c[_0x22dd('0x39')]=qs[_0x22dd('0x3a')](_0x249ff8['query']['sort']);_0xf8c69c[_0x22dd('0x3b')]=qs[_0x22dd('0x33')](_[_0x22dd('0x3c')](_0x249ff8[_0x22dd('0x31')],_0x3f10d0[_0x22dd('0x33')]));if(_0x249ff8[_0x22dd('0x31')][_0x22dd('0x3d')]){_0xf8c69c['where']=_[_0x22dd('0x3e')](_0xf8c69c['where'],{'$or':_[_0x22dd('0x2b')](_0xf8c69c[_0x22dd('0x34')],function(_0x214349){var _0x460d08={};_0x460d08[_0x214349]={'$like':'%'+_0x249ff8[_0x22dd('0x31')][_0x22dd('0x3d')]+'%'};return _0x460d08;})});}_0xf8c69c=_[_0x22dd('0x3e')]({},_0xf8c69c,_0x249ff8['options']);return _0x24a2c6[_0x22dd('0x4f')](_0xf8c69c);}})[_0x22dd('0x25')](function(_0x1b8d55){if(_0x1b8d55){_0x3e9df4=_0x1b8d55[_0x22dd('0x37')];if(!_0x249ff8[_0x22dd('0x31')][_0x22dd('0x38')](_0x22dd('0x51'))){_0xf8c69c[_0x22dd('0x1e')]=qs[_0x22dd('0x1e')](_0x249ff8[_0x22dd('0x31')][_0x22dd('0x1e')]);_0xf8c69c[_0x22dd('0x1d')]=qs[_0x22dd('0x1d')](_0x249ff8[_0x22dd('0x31')]['offset']);}return _0x24a2c6[_0x22dd('0x4f')](_0xf8c69c);}})[_0x22dd('0x25')](function(_0x1168e5){if(_0x1168e5){return _0x1168e5?{'count':_0x3e9df4,'rows':_0x1168e5}:null;}})['then'](respondWithResult(_0xb82ea,null))[_0x22dd('0x46')](handleError(_0xb82ea,null));};exports[_0x22dd('0x52')]=function(_0x5e5dfd,_0x578588,_0x3ef32e){return db[_0x22dd('0x53')][_0x22dd('0x49')]({'where':{'id':_0x5e5dfd[_0x22dd('0x4a')]['id']}})['then'](handleEntityNotFound(_0x578588,null))['then'](function(_0x27215e){if(_0x27215e){return _0x27215e[_0x22dd('0x52')](_0x5e5dfd['body']['ids'],_[_0x22dd('0x4e')](_0x5e5dfd['body'],[_0x22dd('0x4d'),'id'])||{});}})['then'](respondWithResult(_0x578588,null))['catch'](handleError(_0x578588,null));};exports[_0x22dd('0x54')]=function(_0x534536,_0x5e807a,_0x303c6a){var _0x4062a7={};var _0x3ffaba={};var _0x4ccbc;var _0x2bef74;return db[_0x22dd('0x2c')][_0x22dd('0x50')]({'where':{'id':_0x534536['params']['id']}})[_0x22dd('0x25')](handleEntityNotFound(_0x5e807a,null))[_0x22dd('0x25')](function(_0x276289){if(_0x276289){_0x4ccbc=_0x276289;_0x3ffaba[_0x22dd('0x2f')]=_[_0x22dd('0x32')](db[_0x22dd('0x53')][_0x22dd('0x2d')]);_0x3ffaba[_0x22dd('0x31')]=_[_0x22dd('0x32')](_0x534536[_0x22dd('0x31')]);_0x3ffaba[_0x22dd('0x33')]=_[_0x22dd('0x35')](_0x3ffaba[_0x22dd('0x2f')],_0x3ffaba[_0x22dd('0x31')]);_0x4062a7[_0x22dd('0x34')]=_[_0x22dd('0x35')](_0x3ffaba[_0x22dd('0x2f')],qs[_0x22dd('0x36')](_0x534536['query'][_0x22dd('0x36')]));_0x4062a7['attributes']=_0x4062a7[_0x22dd('0x34')]['length']?_0x4062a7[_0x22dd('0x34')]:_0x3ffaba[_0x22dd('0x2f')];_0x4062a7[_0x22dd('0x39')]=qs[_0x22dd('0x3a')](_0x534536[_0x22dd('0x31')][_0x22dd('0x3a')]);_0x4062a7['where']=qs['filters'](_[_0x22dd('0x3c')](_0x534536['query'],_0x3ffaba[_0x22dd('0x33')]));if(_0x534536['query'][_0x22dd('0x3d')]){_0x4062a7[_0x22dd('0x3b')]=_[_0x22dd('0x3e')](_0x4062a7['where'],{'$or':_[_0x22dd('0x2b')](_0x4062a7[_0x22dd('0x34')],function(_0x3d5eba){var _0x406558={};_0x406558[_0x3d5eba]={'$like':'%'+_0x534536[_0x22dd('0x31')][_0x22dd('0x3d')]+'%'};return _0x406558;})});}_0x4062a7=_['merge']({},_0x4062a7,_0x534536[_0x22dd('0x40')]);return _0x4ccbc[_0x22dd('0x54')](_0x4062a7);}})[_0x22dd('0x25')](function(_0x45893c){if(_0x45893c){_0x2bef74=_0x45893c[_0x22dd('0x37')];if(!_0x534536['query'][_0x22dd('0x38')](_0x22dd('0x51'))){_0x4062a7['limit']=qs[_0x22dd('0x1e')](_0x534536[_0x22dd('0x31')]['limit']);_0x4062a7[_0x22dd('0x1d')]=qs[_0x22dd('0x1d')](_0x534536['query']['offset']);}return _0x4ccbc[_0x22dd('0x54')](_0x4062a7);}})['then'](function(_0x4e4ef1){if(_0x4e4ef1){return _0x4e4ef1?{'count':_0x2bef74,'rows':_0x4e4ef1}:null;}})[_0x22dd('0x25')](respondWithResult(_0x5e807a,null))[_0x22dd('0x46')](handleError(_0x5e807a,null));};
\ No newline at end of file
index 1b0b0ad..a880c7b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0x781e=['exports','define','Automation','lodash','util','../../config/logger','api','request-promise','path','../../config/environment','./automation.attributes'];(function(_0x228b90,_0x20ba82){var _0x220397=function(_0xfd0f24){while(--_0xfd0f24){_0x228b90['push'](_0x228b90['shift']());}};_0x220397(++_0x20ba82);}(_0x781e,0x179));var _0xe781=function(_0x3947c9,_0x4d6c97){_0x3947c9=_0x3947c9-0x0;var _0x2e7871=_0x781e[_0x3947c9];return _0x2e7871;};'use strict';var _=require(_0xe781('0x0'));var util=require(_0xe781('0x1'));var logger=require(_0xe781('0x2'))(_0xe781('0x3'));var moment=require('moment');var BPromise=require('bluebird');var rp=require(_0xe781('0x4'));var fs=require('fs');var path=require(_0xe781('0x5'));var rimraf=require('rimraf');var config=require(_0xe781('0x6'));var attributes=require(_0xe781('0x7'));module[_0xe781('0x8')]=function(_0x5e08e6,_0x1f2552){return _0x5e08e6[_0xe781('0x9')](_0xe781('0xa'),attributes,{'tableName':'tools_automations','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 1e99efe..28c9db3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0xa35e=['bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','request','info','Automation,\x20%s,\x20%s','debug','Automation,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','code','message','result','catch','lodash','moment'];(function(_0x439bbf,_0x34f119){var _0xcb17cb=function(_0x1a99e5){while(--_0x1a99e5){_0x439bbf['push'](_0x439bbf['shift']());}};_0xcb17cb(++_0x34f119);}(_0xa35e,0x111));var _0xea35=function(_0x4ab8e2,_0x23cb36){_0x4ab8e2=_0x4ab8e2-0x0;var _0x1e611d=_0xa35e[_0x4ab8e2];return _0x1e611d;};'use strict';var _=require(_0xea35('0x0'));var util=require('util');var moment=require(_0xea35('0x1'));var BPromise=require(_0xea35('0x2'));var rs=require(_0xea35('0x3'));var fs=require('fs');var Redis=require(_0xea35('0x4'));var db=require(_0xea35('0x5'))['db'];var utils=require(_0xea35('0x6'));var logger=require(_0xea35('0x7'))(_0xea35('0x8'));var config=require(_0xea35('0x9'));var jayson=require(_0xea35('0xa'));var client=jayson[_0xea35('0xb')][_0xea35('0xc')]({'port':0x232a});function respondWithRpcPromise(_0x35d34b,_0x461e25,_0x47d904){return new BPromise(function(_0x1d1c89,_0x1fee2a){return client[_0xea35('0xd')](_0x35d34b,_0x47d904)['then'](function(_0x3a3fb8){logger[_0xea35('0xe')](_0xea35('0xf'),_0x461e25,'request\x20sent');logger[_0xea35('0x10')](_0xea35('0x11'),_0x461e25,_0xea35('0x12'),JSON[_0xea35('0x13')](_0x3a3fb8));if(_0x3a3fb8[_0xea35('0x14')]){if(_0x3a3fb8['error'][_0xea35('0x15')]===0x1f4){logger[_0xea35('0x14')](_0xea35('0xf'),_0x461e25,_0x3a3fb8['error']['message']);return _0x1fee2a(_0x3a3fb8[_0xea35('0x14')][_0xea35('0x16')]);}logger[_0xea35('0x14')](_0xea35('0xf'),_0x461e25,_0x3a3fb8['error'][_0xea35('0x16')]);return _0x1d1c89(_0x3a3fb8['error'][_0xea35('0x16')]);}else{logger[_0xea35('0xe')]('Automation,\x20%s,\x20%s',_0x461e25,_0xea35('0x12'));_0x1d1c89(_0x3a3fb8[_0xea35('0x17')][_0xea35('0x16')]);}})[_0xea35('0x18')](function(_0x23b2fc){logger[_0xea35('0x14')](_0xea35('0xf'),_0x461e25,_0x23b2fc);_0x1fee2a(_0x23b2fc);});});}
\ No newline at end of file
index b13fd0f..47a8fec 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0x0738=['delete','destroy','exports','multer','util','path','connect-timeout','express','../../components/auth/service','../../components/interaction/service','../../config/environment','./automation.controller','get','isAuthenticated','index','/:id','show','getConditions','/:id/actions','getActions','post','create','/:id/conditions','addActions','put','update'];(function(_0x16f678,_0x3a4505){var _0x14b34b=function(_0x2a4e7){while(--_0x2a4e7){_0x16f678['push'](_0x16f678['shift']());}};_0x14b34b(++_0x3a4505);}(_0x0738,0xb9));var _0x8073=function(_0x4d934b,_0x52f8e9){_0x4d934b=_0x4d934b-0x0;var _0xc0338b=_0x0738[_0x4d934b];return _0xc0338b;};'use strict';var multer=require(_0x8073('0x0'));var util=require(_0x8073('0x1'));var path=require(_0x8073('0x2'));var timeout=require(_0x8073('0x3'));var express=require(_0x8073('0x4'));var router=express['Router']();var fs_extra=require('fs-extra');var auth=require(_0x8073('0x5'));var interaction=require(_0x8073('0x6'));var config=require(_0x8073('0x7'));var controller=require(_0x8073('0x8'));router[_0x8073('0x9')]('/',auth[_0x8073('0xa')](),controller[_0x8073('0xb')]);router[_0x8073('0x9')](_0x8073('0xc'),auth[_0x8073('0xa')](),controller[_0x8073('0xd')]);router['get']('/:id/conditions',auth[_0x8073('0xa')](),controller[_0x8073('0xe')]);router['get'](_0x8073('0xf'),auth[_0x8073('0xa')](),controller[_0x8073('0x10')]);router[_0x8073('0x11')]('/',auth['isAuthenticated'](),controller[_0x8073('0x12')]);router['post'](_0x8073('0x13'),auth['isAuthenticated'](),controller['addConditions']);router[_0x8073('0x11')](_0x8073('0xf'),auth['isAuthenticated'](),controller[_0x8073('0x14')]);router[_0x8073('0x15')]('/:id',auth[_0x8073('0xa')](),controller[_0x8073('0x16')]);router[_0x8073('0x17')](_0x8073('0xc'),auth['isAuthenticated'](),controller[_0x8073('0x18')]);module[_0x8073('0x19')]=router;
\ No newline at end of file
index fb354f9..55fa049 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0x69c5=['#AMD\x20Maximum\x20Number\x20Of\x20Words','#AMD\x20Silence\x20Threshold\x20(min:0,\x20max:32767)','#AMD\x20Maximum\x20Word\x20Length','DESC','ASC','Random\x20Last\x20Digit\x20(min:1,\x20max:15)','#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)','#AgentReject\x20Retry\x20(min:1,\x20max:999)','AgentReject\x20Retry\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)','sequelize','exports','STRING','name','ivr','BOOLEAN','Active/Disactive\x20Campaign','INTEGER','UNSIGNED','Max\x20200\x20calls.','Originate\x20Timeout\x20Seconds\x20(min:1,\x20max:999)','#Congestion\x20Retry\x20(min:1,\x20max:999)','#Busy\x20Retry\x20(min:1,\x20max:999)','Busy\x20Retry\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)','#NoAnswer\x20Retry\x20(min:1,\x20max:999)','#Global\x20Max\x20Retry\x20(min:1,\x20max:999)','07:00-22:00,*,*,*','ENUM','always','never','Active/Disactive\x20AMD','#AMD\x20Initial\x20Silence','#AMD\x20Greeting','#AMD\x20After\x20Greeting\x20Silence','#AMD\x20Total\x20Analysis\x20Time','#AMD\x20Min\x20Word\x20Length','#AMD\x20Between\x20Words\x20Silence'];(function(_0x4ee508,_0xec5ce8){var _0x37981d=function(_0x3b857c){while(--_0x3b857c){_0x4ee508['push'](_0x4ee508['shift']());}};_0x37981d(++_0xec5ce8);}(_0x69c5,0xad));var _0x569c=function(_0x2d78c1,_0x57c069){_0x2d78c1=_0x2d78c1-0x0;var _0x27a13b=_0x69c5[_0x2d78c1];return _0x27a13b;};'use strict';var Sequelize=require(_0x569c('0x0'));module[_0x569c('0x1')]={'name':{'type':Sequelize[_0x569c('0x2')],'unique':_0x569c('0x3'),'allowNull':![],'validate':{'is':/[A-Za-z0-9._\\+*!-]+/,'notEmpty':!![]}},'type':{'type':Sequelize['ENUM']('ivr'),'allowNull':![],'defaultValue':_0x569c('0x4')},'description':{'type':Sequelize[_0x569c('0x2')]},'active':{'type':Sequelize[_0x569c('0x5')],'defaultValue':0x0,'comment':_0x569c('0x6')},'limitCalls':{'type':Sequelize[_0x569c('0x7')](0x4)[_0x569c('0x8')],'defaultValue':0x1e,'validate':{'min':0x1,'max':0xc8},'comment':_0x569c('0x9')},'dialOriginateCallerIdName':{'type':Sequelize[_0x569c('0x2')]},'dialOriginateCallerIdNumber':{'type':Sequelize[_0x569c('0x2')]},'dialOriginateTimeout':{'type':Sequelize['INTEGER'](0x3)[_0x569c('0x8')],'defaultValue':0x1e,'validate':{'min':0x1,'max':0x3e7},'comment':_0x569c('0xa')},'dialCongestionMaxRetry':{'type':Sequelize[_0x569c('0x7')](0x3)[_0x569c('0x8')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':_0x569c('0xb')},'dialCongestionRetryFrequency':{'type':Sequelize[_0x569c('0x7')](0x5)[_0x569c('0x8')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':'Congestion\x20Retry\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)'},'dialBusyMaxRetry':{'type':Sequelize[_0x569c('0x7')](0x3)[_0x569c('0x8')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':_0x569c('0xc')},'dialBusyRetryFrequency':{'type':Sequelize['INTEGER'](0x5)['UNSIGNED'],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0x569c('0xd')},'dialNoAnswerMaxRetry':{'type':Sequelize[_0x569c('0x7')](0x3)[_0x569c('0x8')],'defaultValue':0x3,'comment':_0x569c('0xe')},'dialNoAnswerRetryFrequency':{'type':Sequelize[_0x569c('0x7')](0x5)[_0x569c('0x8')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':'NoAnswer\x20Retry\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)'},'dialGlobalMaxRetry':{'type':Sequelize[_0x569c('0x7')](0x3)[_0x569c('0x8')],'validate':{'min':0x1,'max':0x3e7},'defaultValue':0x4,'comment':_0x569c('0xf')},'dialTimezone':{'type':Sequelize['STRING'],'defaultValue':null},'dialGlobalInterval':{'type':Sequelize[_0x569c('0x2')],'defaultValue':_0x569c('0x10')},'dialCheckDuplicateType':{'type':Sequelize[_0x569c('0x11')](_0x569c('0x12'),_0x569c('0x13'),'onlyIfOpen'),'defaultValue':_0x569c('0x12')},'dialAMDActive':{'type':Sequelize['BOOLEAN'],'defaultValue':0x0,'comment':_0x569c('0x14')},'dialAMDInitialSilence':{'type':Sequelize[_0x569c('0x7')](0x9)[_0x569c('0x8')],'defaultValue':0x9c4,'validate':{'min':0x0},'comment':_0x569c('0x15')},'dialAMDGreeting':{'type':Sequelize[_0x569c('0x7')](0x9)[_0x569c('0x8')],'defaultValue':0x5dc,'validate':{'min':0x0},'comment':_0x569c('0x16')},'dialAMDAfterGreetingSilence':{'type':Sequelize[_0x569c('0x7')](0x9)['UNSIGNED'],'defaultValue':0x320,'validate':{'min':0x0},'comment':_0x569c('0x17')},'dialAMDTotalAnalysisTime':{'type':Sequelize['INTEGER'](0x9)[_0x569c('0x8')],'defaultValue':0x1388,'validate':{'min':0x0},'comment':_0x569c('0x18')},'dialAMDMinWordLength':{'type':Sequelize[_0x569c('0x7')](0x9)['UNSIGNED'],'defaultValue':0x64,'validate':{'min':0x0},'comment':_0x569c('0x19')},'dialAMDBetweenWordsSilence':{'type':Sequelize[_0x569c('0x7')](0x9)['UNSIGNED'],'defaultValue':0x32,'validate':{'min':0x0},'comment':_0x569c('0x1a')},'dialAMDMaximumNumberOfWords':{'type':Sequelize[_0x569c('0x7')](0x9)['UNSIGNED'],'defaultValue':0x3,'validate':{'min':0x0},'comment':_0x569c('0x1b')},'dialAMDSilenceThreshold':{'type':Sequelize[_0x569c('0x7')](0x5)['UNSIGNED'],'validate':{'min':0x0,'max':0x7fff},'defaultValue':0x100,'comment':_0x569c('0x1c')},'dialAMDMaximumWordLength':{'type':Sequelize['INTEGER'](0x9)[_0x569c('0x8')],'defaultValue':0x1388,'validate':{'min':0x0},'comment':_0x569c('0x1d')},'dialOrderByScheduledAt':{'type':Sequelize[_0x569c('0x11')](_0x569c('0x1e'),_0x569c('0x1f')),'defaultValue':_0x569c('0x1e')},'dialPrefix':{'type':Sequelize[_0x569c('0x2')],'defaultValue':null},'dialRandomLastDigitCallerIdNumber':{'type':Sequelize[_0x569c('0x7')](0x3)[_0x569c('0x8')],'validate':{'min':0x0,'max':0xf},'defaultValue':0x0,'comment':_0x569c('0x20')},'dialCutDigit':{'type':Sequelize[_0x569c('0x7')](0x3)[_0x569c('0x8')],'validate':{'min':0x0,'max':0xf},'defaultValue':0x0,'comment':'Cut\x20Digit\x20(min:1,\x20max:15)'},'dialNoSuchNumberMaxRetry':{'type':Sequelize['INTEGER'](0x3)[_0x569c('0x8')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':_0x569c('0x21')},'dialNoSuchNumberRetryFrequency':{'type':Sequelize[_0x569c('0x7')](0x5)['UNSIGNED'],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0x569c('0x22')},'dialDropMaxRetry':{'type':Sequelize[_0x569c('0x7')](0x3)[_0x569c('0x8')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':_0x569c('0x23')},'dialDropRetryFrequency':{'type':Sequelize[_0x569c('0x7')](0x5)['UNSIGNED'],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0x569c('0x24')},'dialAbandonedMaxRetry':{'type':Sequelize[_0x569c('0x7')](0x3)[_0x569c('0x8')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':_0x569c('0x25')},'dialAbandonedRetryFrequency':{'type':Sequelize[_0x569c('0x7')](0x5)[_0x569c('0x8')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':'Abandoned\x20Retry\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)'},'dialMachineMaxRetry':{'type':Sequelize['INTEGER'](0x3)['UNSIGNED'],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':'#Machine\x20Retry\x20(min:1,\x20max:999)'},'dialMachineRetryFrequency':{'type':Sequelize['INTEGER'](0x5)[_0x569c('0x8')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':'Machine\x20Retry\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)'},'dialAgentRejectMaxRetry':{'type':Sequelize['INTEGER'](0x3)[_0x569c('0x8')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':_0x569c('0x26')},'dialAgentRejectRetryFrequency':{'type':Sequelize['INTEGER'](0x5)['UNSIGNED'],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0x569c('0x27')}};
\ No newline at end of file
index b795686..4513d00 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0x4058=['h.ContactId\x20=\x20ci.CmContactId','h.CampaignId=?','h.createdAt\x20=\x20?','push','sequelize','all','removeLists','getBlackLists','addBlackLists','cm_hopper_black','removeBlackLists','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','ejs','fs-extra','lodash','squel','crypto','desk.js','to-csv','querystring','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','api','status','json','offset','undefined','limit','count','set','Content-Range','apply','reject','save','then','get','IvrCampaigns','UserProfileResource','destroy','end','error','stack','name','send','index','Campaign','rawAttributes','fieldName','type','key','map','query','filters','model','attributes','intersection','fields','length','nolimit','order','sort','where','pick','filter','merge','VIRTUAL','includeAll','include','findAll','rows','show','keys','options','find','catch','create','body','user','UserProfileSection','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','clone','omit','updatedAt','createdAt','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','userProfileId','autoAssociation','update','params','getHoppers','findOne','CmHopper','hasOwnProperty','CampaignId','getHopperHistories','CmHopperHistory','getHopperFinals','CmHopperFinal','getHopperBlacks','CmHopperBlack','getLists','CmList','addLists','format','YYYY-MM-DD\x20HH:mm:ss','ids','dialCheckDuplicateType','into','cm_hopper','fromQuery','phone','scheduledAt','ContactId','ListId','select','field','NOW()','CmListId','toString','from','cm_contacts','deletedAt\x20IS\x20NULL','ListId\x20=\x20?','phone\x20IS\x20NOT\x20NULL','phone\x20NOT\x20IN\x20(?)','CampaignId\x20=\x20?','onlyIfOpen','insert','ci.item','ci.OrderBY','OrderBy','cm_contact_has_items'];(function(_0x3b8572,_0x352c99){var _0x1095af=function(_0x168591){while(--_0x168591){_0x3b8572['push'](_0x3b8572['shift']());}};_0x1095af(++_0x352c99);}(_0x4058,0x129));var _0x8405=function(_0x59b8e0,_0x22b70c){_0x59b8e0=_0x59b8e0-0x0;var _0x2ce593=_0x4058[_0x59b8e0];return _0x2ce593;};'use strict';var emlformat=require(_0x8405('0x0'));var rimraf=require(_0x8405('0x1'));var zipdir=require(_0x8405('0x2'));var jsonpatch=require(_0x8405('0x3'));var rp=require(_0x8405('0x4'));var moment=require(_0x8405('0x5'));var BPromise=require(_0x8405('0x6'));var Mustache=require(_0x8405('0x7'));var util=require(_0x8405('0x8'));var path=require('path');var sox=require('sox');var csv=require('to-csv');var ejs=require(_0x8405('0x9'));var fs=require('fs');var fs_extra=require(_0x8405('0xa'));var _=require(_0x8405('0xb'));var squel=require(_0x8405('0xc'));var crypto=require(_0x8405('0xd'));var jsforce=require('jsforce');var deskjs=require(_0x8405('0xe'));var toCsv=require(_0x8405('0xf'));var querystring=require(_0x8405('0x10'));var Papa=require('papaparse');var Redis=require(_0x8405('0x11'));var authService=require('../../components/auth/service');var qs=require(_0x8405('0x12'));var as=require(_0x8405('0x13'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x8405('0x14'))(_0x8405('0x15'));var utils=require('../../config/utils');var config=require('../../config/environment');var licenseUtil=require('../../config/license/util');var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x262d32,_0x575fcb){_0x575fcb=_0x575fcb||0xcc;return function(_0x495190){if(_0x495190){return _0x262d32['sendStatus'](_0x575fcb);}return _0x262d32['status'](_0x575fcb)['end']();};}function respondWithResult(_0x1321d3,_0x238633){_0x238633=_0x238633||0xc8;return function(_0x5a3776){if(_0x5a3776){return _0x1321d3[_0x8405('0x16')](_0x238633)[_0x8405('0x17')](_0x5a3776);}};}function respondWithFilteredResult(_0x221cf8,_0x422822){return function(_0x58eb66){if(_0x58eb66){var _0x218fe7=typeof _0x422822[_0x8405('0x18')]===_0x8405('0x19')&&typeof _0x422822[_0x8405('0x1a')]===_0x8405('0x19');var _0x15a189=_0x58eb66[_0x8405('0x1b')];var _0x358633=_0x218fe7?0x0:_0x422822[_0x8405('0x18')];var _0x1e608f=_0x218fe7?_0x58eb66[_0x8405('0x1b')]:_0x422822[_0x8405('0x18')]+_0x422822[_0x8405('0x1a')];var _0x241000;if(_0x1e608f>=_0x15a189){_0x1e608f=_0x15a189;_0x241000=0xc8;}else{_0x241000=0xce;}_0x221cf8[_0x8405('0x16')](_0x241000);return _0x221cf8[_0x8405('0x1c')](_0x8405('0x1d'),_0x358633+'-'+_0x1e608f+'/'+_0x15a189)[_0x8405('0x17')](_0x58eb66);}return null;};}function patchUpdates(_0x2483ab){return function(_0x1f42e5){try{jsonpatch[_0x8405('0x1e')](_0x1f42e5,_0x2483ab,!![]);}catch(_0x3d5271){return BPromise[_0x8405('0x1f')](_0x3d5271);}return _0x1f42e5[_0x8405('0x20')]();};}function saveUpdates(_0x1ceff7,_0x1e8d08){return function(_0x57130a){if(_0x57130a){return _0x57130a['update'](_0x1ceff7)[_0x8405('0x21')](function(_0x2e021a){return _0x2e021a;});}return null;};}function removeEntity(_0x14436a,_0x4b1c6b){return function(_0x5e3849){if(_0x5e3849){return _0x5e3849['destroy']()[_0x8405('0x21')](function(){var _0x480ad2=_0x5e3849[_0x8405('0x22')]({'plain':!![]});var _0x162c03=_0x8405('0x23');return db[_0x8405('0x24')][_0x8405('0x25')]({'where':{'type':_0x162c03,'resourceId':_0x480ad2['id']}})[_0x8405('0x21')](function(){return _0x5e3849;});})[_0x8405('0x21')](function(){_0x14436a[_0x8405('0x16')](0xcc)[_0x8405('0x26')]();});}};}function handleEntityNotFound(_0x24b88d,_0x1eb4f6){return function(_0x293789){if(!_0x293789){_0x24b88d['sendStatus'](0x194);}return _0x293789;};}function handleError(_0x132c0f,_0x51396d){_0x51396d=_0x51396d||0x1f4;return function(_0x48a425){logger[_0x8405('0x27')](_0x48a425[_0x8405('0x28')]);if(_0x48a425[_0x8405('0x29')]){delete _0x48a425[_0x8405('0x29')];}_0x132c0f[_0x8405('0x16')](_0x51396d)[_0x8405('0x2a')](_0x48a425);};}exports[_0x8405('0x2b')]=function(_0xa1efa2,_0x7e216b){var _0xe019ff={},_0x20bca3={},_0x3b14e5={'count':0x0,'rows':[]};var _0xcbee2b=_['map'](db[_0x8405('0x2c')][_0x8405('0x2d')],function(_0x52bac7){return{'name':_0x52bac7[_0x8405('0x2e')],'type':_0x52bac7[_0x8405('0x2f')][_0x8405('0x30')]};});_0x20bca3['model']=_[_0x8405('0x31')](_0xcbee2b,_0x8405('0x29'));_0x20bca3[_0x8405('0x32')]=_['keys'](_0xa1efa2[_0x8405('0x32')]);_0x20bca3[_0x8405('0x33')]=_['intersection'](_0x20bca3[_0x8405('0x34')],_0x20bca3['query']);_0xe019ff[_0x8405('0x35')]=_[_0x8405('0x36')](_0x20bca3[_0x8405('0x34')],qs[_0x8405('0x37')](_0xa1efa2[_0x8405('0x32')][_0x8405('0x37')]));_0xe019ff[_0x8405('0x35')]=_0xe019ff[_0x8405('0x35')][_0x8405('0x38')]?_0xe019ff[_0x8405('0x35')]:_0x20bca3[_0x8405('0x34')];if(!_0xa1efa2[_0x8405('0x32')]['hasOwnProperty'](_0x8405('0x39'))){_0xe019ff['limit']=qs['limit'](_0xa1efa2[_0x8405('0x32')][_0x8405('0x1a')]);_0xe019ff['offset']=qs[_0x8405('0x18')](_0xa1efa2[_0x8405('0x32')][_0x8405('0x18')]);}_0xe019ff[_0x8405('0x3a')]=qs[_0x8405('0x3b')](_0xa1efa2['query'][_0x8405('0x3b')]);_0xe019ff[_0x8405('0x3c')]=qs[_0x8405('0x33')](_[_0x8405('0x3d')](_0xa1efa2[_0x8405('0x32')],_0x20bca3['filters']),_0xcbee2b);if(_0xa1efa2[_0x8405('0x32')][_0x8405('0x3e')]){_0xe019ff[_0x8405('0x3c')]=_[_0x8405('0x3f')](_0xe019ff[_0x8405('0x3c')],{'$or':_[_0x8405('0x31')](_0xcbee2b,function(_0x550c9c){if(_0x550c9c[_0x8405('0x2f')]!==_0x8405('0x40')){var _0x23e559={};_0x23e559[_0x550c9c[_0x8405('0x29')]]={'$like':'%'+_0xa1efa2[_0x8405('0x32')][_0x8405('0x3e')]+'%'};return _0x23e559;}})});}_0xe019ff=_[_0x8405('0x3f')]({},_0xe019ff,_0xa1efa2['options']);var _0x2c2b49={'where':_0xe019ff['where']};return db[_0x8405('0x2c')][_0x8405('0x1b')](_0x2c2b49)['then'](function(_0x4a13f7){_0x3b14e5[_0x8405('0x1b')]=_0x4a13f7;if(_0xa1efa2[_0x8405('0x32')][_0x8405('0x41')]){_0xe019ff[_0x8405('0x42')]=[{'all':!![]}];}return db[_0x8405('0x2c')][_0x8405('0x43')](_0xe019ff);})[_0x8405('0x21')](function(_0x11bce5){_0x3b14e5[_0x8405('0x44')]=_0x11bce5;return _0x3b14e5;})['then'](respondWithFilteredResult(_0x7e216b,_0xe019ff))['catch'](handleError(_0x7e216b,null));};exports[_0x8405('0x45')]=function(_0x572044,_0x21bc90){var _0x45c09c={'raw':![],'where':{'id':_0x572044['params']['id']}},_0x10e974={};_0x10e974[_0x8405('0x34')]=_[_0x8405('0x46')](db['Campaign'][_0x8405('0x2d')]);_0x10e974[_0x8405('0x32')]=_[_0x8405('0x46')](_0x572044[_0x8405('0x32')]);_0x10e974[_0x8405('0x33')]=_[_0x8405('0x36')](_0x10e974[_0x8405('0x34')],_0x10e974['query']);_0x45c09c['attributes']=_['intersection'](_0x10e974[_0x8405('0x34')],qs[_0x8405('0x37')](_0x572044[_0x8405('0x32')][_0x8405('0x37')]));_0x45c09c['attributes']=_0x45c09c['attributes'][_0x8405('0x38')]?_0x45c09c[_0x8405('0x35')]:_0x10e974[_0x8405('0x34')];if(_0x572044[_0x8405('0x32')][_0x8405('0x41')]){_0x45c09c[_0x8405('0x42')]=[{'all':!![]}];}_0x45c09c=_[_0x8405('0x3f')]({},_0x45c09c,_0x572044[_0x8405('0x47')]);return db['Campaign'][_0x8405('0x48')](_0x45c09c)['then'](handleEntityNotFound(_0x21bc90,null))[_0x8405('0x21')](respondWithResult(_0x21bc90,null))[_0x8405('0x49')](handleError(_0x21bc90,null));};exports[_0x8405('0x4a')]=function(_0x3e0861,_0x9a0ffe){return db[_0x8405('0x2c')][_0x8405('0x4a')](_0x3e0861[_0x8405('0x4b')],{})['then'](function(_0x20f520){var _0x1cc41f=_0x3e0861[_0x8405('0x4c')][_0x8405('0x22')]({'plain':!![]});if(!_0x1cc41f)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x1cc41f['role']===_0x8405('0x4c')){var _0x30b761=_0x20f520[_0x8405('0x22')]({'plain':!![]});var _0x2c8432=_0x8405('0x23');return db[_0x8405('0x4d')][_0x8405('0x48')]({'where':{'name':_0x2c8432,'userProfileId':_0x1cc41f['userProfileId']},'raw':!![]})['then'](function(_0x340c54){if(_0x340c54&&_0x340c54['autoAssociation']===0x0){return db[_0x8405('0x24')][_0x8405('0x4a')]({'name':_0x30b761[_0x8405('0x29')],'resourceId':_0x30b761['id'],'type':_0x340c54['name'],'sectionId':_0x340c54['id']},{})['then'](function(){return _0x20f520;});}else{return _0x20f520;}})[_0x8405('0x49')](function(_0x4d4e37){logger[_0x8405('0x27')](_0x8405('0x4e'),_0x4d4e37);throw _0x4d4e37;});}return _0x20f520;})[_0x8405('0x21')](respondWithResult(_0x9a0ffe,0xc9))[_0x8405('0x49')](handleError(_0x9a0ffe,null));};exports[_0x8405('0x4f')]=function(_0x302abc,_0x1f720c){var _0x22d117={'where':{'id':_0x302abc['params']['id']}},_0x3c0e6d={};_0x3c0e6d[_0x8405('0x34')]=_[_0x8405('0x46')](db[_0x8405('0x2c')][_0x8405('0x2d')]);_0x22d117['attributes']=_[_0x8405('0x36')](_0x3c0e6d[_0x8405('0x34')],qs[_0x8405('0x37')](_0x302abc[_0x8405('0x32')][_0x8405('0x37')]));_0x22d117[_0x8405('0x35')]=_0x22d117['attributes'][_0x8405('0x38')]?_0x22d117[_0x8405('0x35')]:_0x3c0e6d[_0x8405('0x34')];if(_0x302abc['query'][_0x8405('0x41')]){_0x22d117[_0x8405('0x42')]=[{'all':!![]}];}_0x22d117=_[_0x8405('0x3f')]({},_0x22d117,_0x302abc[_0x8405('0x47')]);return db[_0x8405('0x2c')][_0x8405('0x48')](_0x22d117)[_0x8405('0x21')](handleEntityNotFound(_0x1f720c,null))[_0x8405('0x21')](function(_0xfd5ebf){if(_0xfd5ebf){var _0x18a255=_0xfd5ebf['get']({'plain':!![]});_0x18a255=qs[_0x8405('0x50')](_0x18a255,['id','createdAt',_0x8405('0x51')]);_0x302abc['body']=_[_0x8405('0x50')](_0x302abc[_0x8405('0x4b')],['id',_0x8405('0x52'),_0x8405('0x51')]);return db[_0x8405('0x2c')]['create'](_[_0x8405('0x3f')](_0x18a255,_0x302abc['body']),{'include':_0x302abc['query'][_0x8405('0x41')]?[{'all':!![]}]:undefined})['then'](function(_0x429268){var _0x18b4dc=_0x302abc[_0x8405('0x4c')]['get']({'plain':!![]});if(!_0x18b4dc)throw new Error(_0x8405('0x53'));if(_0x18b4dc[_0x8405('0x54')]===_0x8405('0x4c')){var _0x1f5c6e=_0x429268[_0x8405('0x22')]({'plain':!![]});var _0x378a61='IvrCampaigns';return db[_0x8405('0x4d')][_0x8405('0x48')]({'where':{'name':_0x378a61,'userProfileId':_0x18b4dc[_0x8405('0x55')]},'raw':!![]})['then'](function(_0x535b14){if(_0x535b14&&_0x535b14[_0x8405('0x56')]===0x0){return db[_0x8405('0x24')][_0x8405('0x4a')]({'name':_0x1f5c6e[_0x8405('0x29')],'resourceId':_0x1f5c6e['id'],'type':_0x535b14[_0x8405('0x29')],'sectionId':_0x535b14['id']},{})['then'](function(){return _0x429268;});}else{return _0x429268;}})['catch'](function(_0x5cd043){logger[_0x8405('0x27')](_0x8405('0x4e'),_0x5cd043);throw _0x5cd043;});}return _0x429268;});}})[_0x8405('0x21')](respondWithResult(_0x1f720c,0xc9))[_0x8405('0x49')](handleError(_0x1f720c,null));};exports[_0x8405('0x57')]=function(_0x23aea4,_0x1a4861){if(_0x23aea4[_0x8405('0x4b')]['id']){delete _0x23aea4[_0x8405('0x4b')]['id'];}return db[_0x8405('0x2c')][_0x8405('0x48')]({'where':{'id':_0x23aea4[_0x8405('0x58')]['id']}})['then'](handleEntityNotFound(_0x1a4861,null))[_0x8405('0x21')](saveUpdates(_0x23aea4[_0x8405('0x4b')],null))['then'](respondWithResult(_0x1a4861,null))[_0x8405('0x49')](handleError(_0x1a4861,null));};exports[_0x8405('0x25')]=function(_0x2c0413,_0x3fd943){return db[_0x8405('0x2c')][_0x8405('0x48')]({'where':{'id':_0x2c0413[_0x8405('0x58')]['id']}})[_0x8405('0x21')](handleEntityNotFound(_0x3fd943,null))[_0x8405('0x21')](removeEntity(_0x3fd943,null))['catch'](handleError(_0x3fd943,null));};exports[_0x8405('0x59')]=function(_0x4732dc,_0x17e983,_0x5b709a){var _0x1f19ec={'raw':!![],'where':{}};var _0x320b03={};var _0x20e9ac={'count':0x0,'rows':[]};return db[_0x8405('0x2c')][_0x8405('0x5a')]({'where':{'id':_0x4732dc['params']['id']}})[_0x8405('0x21')](handleEntityNotFound(_0x17e983,null))[_0x8405('0x21')](function(_0x428633){if(_0x428633){_0x320b03[_0x8405('0x34')]=_[_0x8405('0x46')](db[_0x8405('0x5b')][_0x8405('0x2d')]);_0x320b03[_0x8405('0x32')]=_[_0x8405('0x46')](_0x4732dc['query']);_0x320b03[_0x8405('0x33')]=_['intersection'](_0x320b03[_0x8405('0x34')],_0x320b03[_0x8405('0x32')]);_0x1f19ec['attributes']=_['intersection'](_0x320b03['model'],qs['fields'](_0x4732dc[_0x8405('0x32')]['fields']));_0x1f19ec[_0x8405('0x35')]=_0x1f19ec[_0x8405('0x35')][_0x8405('0x38')]?_0x1f19ec[_0x8405('0x35')]:_0x320b03[_0x8405('0x34')];if(!_0x4732dc[_0x8405('0x32')][_0x8405('0x5c')]('nolimit')){_0x1f19ec[_0x8405('0x1a')]=qs[_0x8405('0x1a')](_0x4732dc['query']['limit']);_0x1f19ec['offset']=qs['offset'](_0x4732dc['query']['offset']);}_0x1f19ec[_0x8405('0x3a')]=qs[_0x8405('0x3b')](_0x4732dc[_0x8405('0x32')][_0x8405('0x3b')]);_0x1f19ec[_0x8405('0x3c')]=qs['filters'](_[_0x8405('0x3d')](_0x4732dc[_0x8405('0x32')],_0x320b03[_0x8405('0x33')]));_0x1f19ec[_0x8405('0x3c')][_0x8405('0x5d')]=_0x428633['id'];if(_0x4732dc['query'][_0x8405('0x3e')]){_0x1f19ec[_0x8405('0x3c')]=_[_0x8405('0x3f')](_0x1f19ec[_0x8405('0x3c')],{'$or':_[_0x8405('0x31')](_0x1f19ec[_0x8405('0x35')],function(_0x399c56){var _0x1b2737={};_0x1b2737[_0x399c56]={'$like':'%'+_0x4732dc['query'][_0x8405('0x3e')]+'%'};return _0x1b2737;})});}_0x1f19ec=_[_0x8405('0x3f')]({},_0x1f19ec,_0x4732dc[_0x8405('0x47')]);return db[_0x8405('0x5b')][_0x8405('0x1b')]({'where':_0x1f19ec[_0x8405('0x3c')]})[_0x8405('0x21')](function(_0x435f24){_0x20e9ac[_0x8405('0x1b')]=_0x435f24;if(_0x4732dc[_0x8405('0x32')][_0x8405('0x41')]){_0x1f19ec[_0x8405('0x42')]=[{'all':!![]}];}return db[_0x8405('0x5b')][_0x8405('0x43')](_0x1f19ec);})[_0x8405('0x21')](function(_0x1ade1a){_0x20e9ac['rows']=_0x1ade1a;return _0x20e9ac;});}})[_0x8405('0x21')](respondWithFilteredResult(_0x17e983,_0x1f19ec))[_0x8405('0x49')](handleError(_0x17e983,null));};exports[_0x8405('0x5e')]=function(_0x5b2b2b,_0x1733f8,_0x1871ed){var _0xf3a9bc={'raw':!![],'where':{}};var _0x7506b5={};var _0x15be77={'count':0x0,'rows':[]};return db[_0x8405('0x2c')][_0x8405('0x5a')]({'where':{'id':_0x5b2b2b[_0x8405('0x58')]['id']}})[_0x8405('0x21')](handleEntityNotFound(_0x1733f8,null))[_0x8405('0x21')](function(_0x5be58d){if(_0x5be58d){_0x7506b5['model']=_[_0x8405('0x46')](db[_0x8405('0x5f')]['rawAttributes']);_0x7506b5[_0x8405('0x32')]=_[_0x8405('0x46')](_0x5b2b2b[_0x8405('0x32')]);_0x7506b5['filters']=_['intersection'](_0x7506b5['model'],_0x7506b5['query']);_0xf3a9bc[_0x8405('0x35')]=_[_0x8405('0x36')](_0x7506b5[_0x8405('0x34')],qs['fields'](_0x5b2b2b[_0x8405('0x32')][_0x8405('0x37')]));_0xf3a9bc[_0x8405('0x35')]=_0xf3a9bc[_0x8405('0x35')]['length']?_0xf3a9bc['attributes']:_0x7506b5[_0x8405('0x34')];if(!_0x5b2b2b[_0x8405('0x32')]['hasOwnProperty'](_0x8405('0x39'))){_0xf3a9bc[_0x8405('0x1a')]=qs[_0x8405('0x1a')](_0x5b2b2b['query'][_0x8405('0x1a')]);_0xf3a9bc[_0x8405('0x18')]=qs[_0x8405('0x18')](_0x5b2b2b[_0x8405('0x32')][_0x8405('0x18')]);}_0xf3a9bc[_0x8405('0x3a')]=qs[_0x8405('0x3b')](_0x5b2b2b[_0x8405('0x32')][_0x8405('0x3b')]);_0xf3a9bc[_0x8405('0x3c')]=qs['filters'](_[_0x8405('0x3d')](_0x5b2b2b[_0x8405('0x32')],_0x7506b5[_0x8405('0x33')]));_0xf3a9bc['where']['CampaignId']=_0x5be58d['id'];if(_0x5b2b2b['query'][_0x8405('0x3e')]){_0xf3a9bc[_0x8405('0x3c')]=_[_0x8405('0x3f')](_0xf3a9bc[_0x8405('0x3c')],{'$or':_['map'](_0xf3a9bc[_0x8405('0x35')],function(_0x1a3cc6){var _0x8b4fc7={};_0x8b4fc7[_0x1a3cc6]={'$like':'%'+_0x5b2b2b[_0x8405('0x32')][_0x8405('0x3e')]+'%'};return _0x8b4fc7;})});}_0xf3a9bc=_[_0x8405('0x3f')]({},_0xf3a9bc,_0x5b2b2b[_0x8405('0x47')]);return db[_0x8405('0x5f')][_0x8405('0x1b')]({'where':_0xf3a9bc[_0x8405('0x3c')]})['then'](function(_0x599797){_0x15be77[_0x8405('0x1b')]=_0x599797;if(_0x5b2b2b[_0x8405('0x32')][_0x8405('0x41')]){_0xf3a9bc[_0x8405('0x42')]=[{'all':!![]}];}return db[_0x8405('0x5f')][_0x8405('0x43')](_0xf3a9bc);})[_0x8405('0x21')](function(_0x311089){_0x15be77[_0x8405('0x44')]=_0x311089;return _0x15be77;});}})['then'](respondWithFilteredResult(_0x1733f8,_0xf3a9bc))[_0x8405('0x49')](handleError(_0x1733f8,null));};exports[_0x8405('0x60')]=function(_0x45ab2c,_0x561bf1,_0x36cf2b){var _0x3f35a8={'raw':!![],'where':{}};var _0x424e4e={};var _0x4cc691={'count':0x0,'rows':[]};return db['Campaign']['findOne']({'where':{'id':_0x45ab2c[_0x8405('0x58')]['id']}})['then'](handleEntityNotFound(_0x561bf1,null))['then'](function(_0x66c9f9){if(_0x66c9f9){_0x424e4e[_0x8405('0x34')]=_['keys'](db[_0x8405('0x61')][_0x8405('0x2d')]);_0x424e4e[_0x8405('0x32')]=_[_0x8405('0x46')](_0x45ab2c[_0x8405('0x32')]);_0x424e4e['filters']=_['intersection'](_0x424e4e[_0x8405('0x34')],_0x424e4e['query']);_0x3f35a8[_0x8405('0x35')]=_[_0x8405('0x36')](_0x424e4e[_0x8405('0x34')],qs[_0x8405('0x37')](_0x45ab2c['query'][_0x8405('0x37')]));_0x3f35a8[_0x8405('0x35')]=_0x3f35a8[_0x8405('0x35')][_0x8405('0x38')]?_0x3f35a8[_0x8405('0x35')]:_0x424e4e['model'];if(!_0x45ab2c[_0x8405('0x32')]['hasOwnProperty'](_0x8405('0x39'))){_0x3f35a8['limit']=qs[_0x8405('0x1a')](_0x45ab2c[_0x8405('0x32')][_0x8405('0x1a')]);_0x3f35a8['offset']=qs['offset'](_0x45ab2c[_0x8405('0x32')][_0x8405('0x18')]);}_0x3f35a8['order']=qs[_0x8405('0x3b')](_0x45ab2c[_0x8405('0x32')][_0x8405('0x3b')]);_0x3f35a8[_0x8405('0x3c')]=qs[_0x8405('0x33')](_[_0x8405('0x3d')](_0x45ab2c[_0x8405('0x32')],_0x424e4e[_0x8405('0x33')]));_0x3f35a8[_0x8405('0x3c')][_0x8405('0x5d')]=_0x66c9f9['id'];if(_0x45ab2c[_0x8405('0x32')][_0x8405('0x3e')]){_0x3f35a8[_0x8405('0x3c')]=_[_0x8405('0x3f')](_0x3f35a8['where'],{'$or':_[_0x8405('0x31')](_0x3f35a8['attributes'],function(_0x1266ff){var _0x5c7e81={};_0x5c7e81[_0x1266ff]={'$like':'%'+_0x45ab2c[_0x8405('0x32')][_0x8405('0x3e')]+'%'};return _0x5c7e81;})});}_0x3f35a8=_['merge']({},_0x3f35a8,_0x45ab2c[_0x8405('0x47')]);return db[_0x8405('0x61')][_0x8405('0x1b')]({'where':_0x3f35a8[_0x8405('0x3c')]})[_0x8405('0x21')](function(_0x5a3b46){_0x4cc691[_0x8405('0x1b')]=_0x5a3b46;if(_0x45ab2c['query']['includeAll']){_0x3f35a8['include']=[{'all':!![]}];}return db[_0x8405('0x61')][_0x8405('0x43')](_0x3f35a8);})[_0x8405('0x21')](function(_0x1a9007){_0x4cc691[_0x8405('0x44')]=_0x1a9007;return _0x4cc691;});}})[_0x8405('0x21')](respondWithFilteredResult(_0x561bf1,_0x3f35a8))[_0x8405('0x49')](handleError(_0x561bf1,null));};exports[_0x8405('0x62')]=function(_0x358041,_0x5c0331,_0x5bda3b){var _0x539104={'raw':!![],'where':{}};var _0xc4bf7d={};var _0x3823d6={'count':0x0,'rows':[]};return db[_0x8405('0x2c')]['findOne']({'where':{'id':_0x358041[_0x8405('0x58')]['id']}})[_0x8405('0x21')](handleEntityNotFound(_0x5c0331,null))[_0x8405('0x21')](function(_0x176162){if(_0x176162){_0xc4bf7d[_0x8405('0x34')]=_[_0x8405('0x46')](db['CmHopperBlack'][_0x8405('0x2d')]);_0xc4bf7d[_0x8405('0x32')]=_[_0x8405('0x46')](_0x358041[_0x8405('0x32')]);_0xc4bf7d[_0x8405('0x33')]=_[_0x8405('0x36')](_0xc4bf7d[_0x8405('0x34')],_0xc4bf7d[_0x8405('0x32')]);_0x539104['attributes']=_[_0x8405('0x36')](_0xc4bf7d[_0x8405('0x34')],qs[_0x8405('0x37')](_0x358041[_0x8405('0x32')][_0x8405('0x37')]));_0x539104[_0x8405('0x35')]=_0x539104[_0x8405('0x35')][_0x8405('0x38')]?_0x539104[_0x8405('0x35')]:_0xc4bf7d[_0x8405('0x34')];if(!_0x358041[_0x8405('0x32')][_0x8405('0x5c')]('nolimit')){_0x539104[_0x8405('0x1a')]=qs[_0x8405('0x1a')](_0x358041[_0x8405('0x32')][_0x8405('0x1a')]);_0x539104[_0x8405('0x18')]=qs['offset'](_0x358041[_0x8405('0x32')][_0x8405('0x18')]);}_0x539104[_0x8405('0x3a')]=qs[_0x8405('0x3b')](_0x358041[_0x8405('0x32')][_0x8405('0x3b')]);_0x539104[_0x8405('0x3c')]=qs[_0x8405('0x33')](_[_0x8405('0x3d')](_0x358041['query'],_0xc4bf7d['filters']));_0x539104[_0x8405('0x3c')]['CampaignId']=_0x176162['id'];if(_0x358041[_0x8405('0x32')][_0x8405('0x3e')]){_0x539104[_0x8405('0x3c')]=_[_0x8405('0x3f')](_0x539104[_0x8405('0x3c')],{'$or':_['map'](_0x539104[_0x8405('0x35')],function(_0x279ed8){var _0x5baafb={};_0x5baafb[_0x279ed8]={'$like':'%'+_0x358041[_0x8405('0x32')][_0x8405('0x3e')]+'%'};return _0x5baafb;})});}_0x539104=_['merge']({},_0x539104,_0x358041[_0x8405('0x47')]);return db[_0x8405('0x63')][_0x8405('0x1b')]({'where':_0x539104[_0x8405('0x3c')]})[_0x8405('0x21')](function(_0x3eab88){_0x3823d6['count']=_0x3eab88;if(_0x358041['query'][_0x8405('0x41')]){_0x539104[_0x8405('0x42')]=[{'all':!![]}];}return db['CmHopperBlack'][_0x8405('0x43')](_0x539104);})['then'](function(_0x5a1a29){_0x3823d6[_0x8405('0x44')]=_0x5a1a29;return _0x3823d6;});}})[_0x8405('0x21')](respondWithFilteredResult(_0x5c0331,_0x539104))[_0x8405('0x49')](handleError(_0x5c0331,null));};exports[_0x8405('0x64')]=function(_0x4a5104,_0x2c883d,_0x54869c){var _0x451b2e={};var _0x5c69da={};var _0x1e2d9e;var _0x23ff97;return db[_0x8405('0x2c')][_0x8405('0x5a')]({'where':{'id':_0x4a5104['params']['id']}})[_0x8405('0x21')](handleEntityNotFound(_0x2c883d,null))['then'](function(_0x2ff0a8){if(_0x2ff0a8){_0x1e2d9e=_0x2ff0a8;_0x5c69da[_0x8405('0x34')]=_[_0x8405('0x46')](db[_0x8405('0x65')][_0x8405('0x2d')]);_0x5c69da['query']=_[_0x8405('0x46')](_0x4a5104[_0x8405('0x32')]);_0x5c69da[_0x8405('0x33')]=_[_0x8405('0x36')](_0x5c69da[_0x8405('0x34')],_0x5c69da['query']);_0x451b2e[_0x8405('0x35')]=_[_0x8405('0x36')](_0x5c69da['model'],qs['fields'](_0x4a5104['query'][_0x8405('0x37')]));_0x451b2e['attributes']=_0x451b2e[_0x8405('0x35')][_0x8405('0x38')]?_0x451b2e[_0x8405('0x35')]:_0x5c69da[_0x8405('0x34')];_0x451b2e[_0x8405('0x3a')]=qs[_0x8405('0x3b')](_0x4a5104[_0x8405('0x32')][_0x8405('0x3b')]);_0x451b2e[_0x8405('0x3c')]=qs[_0x8405('0x33')](_[_0x8405('0x3d')](_0x4a5104[_0x8405('0x32')],_0x5c69da[_0x8405('0x33')]));if(_0x4a5104['query'][_0x8405('0x3e')]){_0x451b2e[_0x8405('0x3c')]=_[_0x8405('0x3f')](_0x451b2e[_0x8405('0x3c')],{'$or':_[_0x8405('0x31')](_0x451b2e[_0x8405('0x35')],function(_0x160bff){var _0x416d75={};_0x416d75[_0x160bff]={'$like':'%'+_0x4a5104[_0x8405('0x32')]['filter']+'%'};return _0x416d75;})});}_0x451b2e=_[_0x8405('0x3f')]({},_0x451b2e,_0x4a5104[_0x8405('0x47')]);return _0x1e2d9e[_0x8405('0x64')](_0x451b2e);}})[_0x8405('0x21')](function(_0x401f3d){if(_0x401f3d){_0x23ff97=_0x401f3d[_0x8405('0x38')];if(!_0x4a5104[_0x8405('0x32')][_0x8405('0x5c')](_0x8405('0x39'))){_0x451b2e[_0x8405('0x1a')]=qs[_0x8405('0x1a')](_0x4a5104[_0x8405('0x32')][_0x8405('0x1a')]);_0x451b2e[_0x8405('0x18')]=qs[_0x8405('0x18')](_0x4a5104[_0x8405('0x32')]['offset']);}return _0x1e2d9e[_0x8405('0x64')](_0x451b2e);}})[_0x8405('0x21')](function(_0xa88b38){if(_0xa88b38){return _0xa88b38?{'count':_0x23ff97,'rows':_0xa88b38}:null;}})['then'](respondWithResult(_0x2c883d,null))[_0x8405('0x49')](handleError(_0x2c883d,null));};exports[_0x8405('0x66')]=function(_0x32fa93,_0x35687c,_0x3b4c0a){var _0xb9c1db,_0xc15e9c;var _0x122c7a=[];var _0x2afe30=moment()[_0x8405('0x67')](_0x8405('0x68'));return db[_0x8405('0x2c')][_0x8405('0x48')]({'where':{'id':_0x32fa93[_0x8405('0x58')]['id']}})[_0x8405('0x21')](handleEntityNotFound(_0x35687c,null))[_0x8405('0x21')](function(_0x56c112){if(_0x56c112){_0xc15e9c=_0x56c112;return _0x56c112[_0x8405('0x66')](_0x32fa93[_0x8405('0x4b')]['ids'],_['omit'](_0x32fa93[_0x8405('0x4b')],[_0x8405('0x69'),'id'])||{});}return null;})['spread'](function(_0x40e85b){var _0x667d4b;var _0x522fd7;_0xb9c1db=_0x40e85b||[];var _0x5111fa=[];if(_0x40e85b){for(var _0x5e92fe=0x0;_0x5e92fe<_0x40e85b[_0x8405('0x38')];_0x5e92fe+=0x1){var _0xa72717=_0x40e85b[_0x5e92fe]['get']({'plain':!![]});_0xc15e9c[_0x8405('0x6a')]=_0x32fa93[_0x8405('0x4b')]['dialCheckDuplicateType']?_0x32fa93[_0x8405('0x4b')][_0x8405('0x6a')]:_0xc15e9c[_0x8405('0x6a')];switch(_0xc15e9c[_0x8405('0x6a')]){case'always':_0x667d4b=squel['insert']()[_0x8405('0x6b')](_0x8405('0x6c'))[_0x8405('0x6d')]([_0x8405('0x6e'),_0x8405('0x6f'),_0x8405('0x70'),_0x8405('0x71'),_0x8405('0x5d'),_0x8405('0x52'),_0x8405('0x51')],squel[_0x8405('0x72')]()[_0x8405('0x73')](_0x8405('0x6e'),_0x8405('0x6e'))[_0x8405('0x73')](_0x8405('0x74'),'scheduledAt')['field']('id',_0x8405('0x70'))[_0x8405('0x73')](_0xa72717[_0x8405('0x75')][_0x8405('0x76')](),_0x8405('0x71'))[_0x8405('0x73')](_0x32fa93[_0x8405('0x58')]['id'][_0x8405('0x76')](),'CampaignId')[_0x8405('0x73')]('\x27'+_0x2afe30+'\x27','createdAt')['field']('\x27'+_0x2afe30+'\x27',_0x8405('0x51'))[_0x8405('0x77')](_0x8405('0x78'))[_0x8405('0x3c')](_0x8405('0x79'))[_0x8405('0x3c')](_0x8405('0x7a'),_0xa72717[_0x8405('0x75')]['toString']())[_0x8405('0x3c')](_0x8405('0x7b'))['where'](_0x8405('0x7c'),squel[_0x8405('0x72')]()[_0x8405('0x73')]('COALESCE(calleridnum,\x27\x27)')[_0x8405('0x77')]('cm_hopper_final')[_0x8405('0x3c')](_0x8405('0x7d'),_0x32fa93[_0x8405('0x58')]['id'][_0x8405('0x76')]()))['where'](_0x8405('0x7c'),squel[_0x8405('0x72')]()[_0x8405('0x73')]('COALESCE(phone,\x27\x27)')[_0x8405('0x77')]('cm_hopper')[_0x8405('0x3c')](_0x8405('0x7d'),_0x32fa93[_0x8405('0x58')]['id'][_0x8405('0x76')]())))[_0x8405('0x76')]();break;case _0x8405('0x7e'):_0x667d4b=squel[_0x8405('0x7f')]()[_0x8405('0x6b')](_0x8405('0x6c'))[_0x8405('0x6d')](['phone','scheduledAt',_0x8405('0x70'),_0x8405('0x71'),'CampaignId',_0x8405('0x52'),_0x8405('0x51')],squel['select']()['field'](_0x8405('0x6e'),'phone')['field'](_0x8405('0x74'),_0x8405('0x6f'))[_0x8405('0x73')]('id',_0x8405('0x70'))[_0x8405('0x73')](_0xa72717[_0x8405('0x75')][_0x8405('0x76')](),_0x8405('0x71'))[_0x8405('0x73')](_0x32fa93[_0x8405('0x58')]['id'][_0x8405('0x76')](),_0x8405('0x5d'))['field']('\x27'+_0x2afe30+'\x27',_0x8405('0x52'))['field']('\x27'+_0x2afe30+'\x27',_0x8405('0x51'))['from'](_0x8405('0x78'))[_0x8405('0x3c')]('deletedAt\x20IS\x20NULL')['where'](_0x8405('0x7a'),_0xa72717[_0x8405('0x75')][_0x8405('0x76')]())['where'](_0x8405('0x7b'))[_0x8405('0x3c')](_0x8405('0x7c'),squel[_0x8405('0x72')]()['field']('COALESCE(phone,\x27\x27)')[_0x8405('0x77')]('cm_hopper')['where'](_0x8405('0x7d'),_0x32fa93[_0x8405('0x58')]['id'][_0x8405('0x76')]())))[_0x8405('0x76')]();break;default:_0x667d4b=squel[_0x8405('0x7f')]()[_0x8405('0x6b')](_0x8405('0x6c'))[_0x8405('0x6d')]([_0x8405('0x6e'),_0x8405('0x6f'),'ContactId',_0x8405('0x71'),'CampaignId','createdAt','updatedAt'],squel[_0x8405('0x72')]()[_0x8405('0x73')](_0x8405('0x6e'),_0x8405('0x6e'))[_0x8405('0x73')](_0x8405('0x74'),_0x8405('0x6f'))[_0x8405('0x73')]('id','ContactId')[_0x8405('0x73')](_0xa72717[_0x8405('0x75')][_0x8405('0x76')](),_0x8405('0x71'))[_0x8405('0x73')](_0x32fa93[_0x8405('0x58')]['id']['toString'](),_0x8405('0x5d'))[_0x8405('0x73')]('\x27'+_0x2afe30+'\x27','createdAt')[_0x8405('0x73')]('\x27'+_0x2afe30+'\x27',_0x8405('0x51'))[_0x8405('0x77')]('cm_contacts')[_0x8405('0x3c')](_0x8405('0x79'))[_0x8405('0x3c')]('ListId\x20=\x20?',_0xa72717[_0x8405('0x75')]['toString']())[_0x8405('0x3c')](_0x8405('0x7b')))['toString']();}_0x522fd7=squel[_0x8405('0x7f')]()[_0x8405('0x6b')]('cm_hopper_additional_phones')[_0x8405('0x6d')](['cmHopperId','scheduledAt',_0x8405('0x6e'),'OrderBy','createdAt',_0x8405('0x51')],squel[_0x8405('0x72')]()[_0x8405('0x73')]('h.id','id')[_0x8405('0x73')](_0x8405('0x74'),'scheduledAt')['field'](_0x8405('0x80'),_0x8405('0x6e'))[_0x8405('0x73')](_0x8405('0x81'),_0x8405('0x82'))['field']('\x27'+_0x2afe30+'\x27',_0x8405('0x52'))[_0x8405('0x73')]('\x27'+_0x2afe30+'\x27',_0x8405('0x51'))[_0x8405('0x77')](_0x8405('0x83'),'ci')['join'](_0x8405('0x6c'),'h',_0x8405('0x84'))['where']('h.ListId\x20=\x20?',_0xa72717[_0x8405('0x75')][_0x8405('0x76')]())['where'](_0x8405('0x85'),_0x32fa93[_0x8405('0x58')]['id'][_0x8405('0x76')]())['where'](_0x8405('0x86'),_0x2afe30))[_0x8405('0x76')]();_0x5111fa[_0x8405('0x87')](db[_0x8405('0x88')][_0x8405('0x32')](_0x667d4b));_0x122c7a[_0x8405('0x87')](db[_0x8405('0x88')][_0x8405('0x32')](_0x522fd7));}return BPromise[_0x8405('0x89')](_0x5111fa);}})[_0x8405('0x21')](function(){return BPromise['all'](_0x122c7a);})[_0x8405('0x21')](function(){return _0xb9c1db;})[_0x8405('0x21')](respondWithResult(_0x35687c,null))[_0x8405('0x49')](handleError(_0x35687c,null));};exports['removeLists']=function(_0x1acf51,_0x1ef377,_0x39485c){return db['Campaign']['find']({'where':{'id':_0x1acf51[_0x8405('0x58')]['id']}})[_0x8405('0x21')](handleEntityNotFound(_0x1ef377,null))['then'](function(_0x89a285){if(_0x89a285){return _0x89a285[_0x8405('0x8a')](_0x1acf51[_0x8405('0x32')][_0x8405('0x69')]);}})[_0x8405('0x21')](function(_0x549fc8){if(_0x549fc8){return db[_0x8405('0x5b')][_0x8405('0x25')]({'where':{'ListId':_0x1acf51[_0x8405('0x32')][_0x8405('0x69')],'CampaignId':_0x1acf51[_0x8405('0x58')]['id']}})['then'](function(){return _0x549fc8;});}})['then'](respondWithStatusCode(_0x1ef377,null))['catch'](handleError(_0x1ef377,null));};exports[_0x8405('0x8b')]=function(_0x1cc755,_0x4c941d,_0x3fb0bd){var _0x2f2808={};var _0x567ea8={};var _0x1b3c09;var _0x2737bb;return db[_0x8405('0x2c')][_0x8405('0x5a')]({'where':{'id':_0x1cc755[_0x8405('0x58')]['id']}})['then'](handleEntityNotFound(_0x4c941d,null))['then'](function(_0x205938){if(_0x205938){_0x1b3c09=_0x205938;_0x567ea8['model']=_[_0x8405('0x46')](db[_0x8405('0x65')][_0x8405('0x2d')]);_0x567ea8[_0x8405('0x32')]=_[_0x8405('0x46')](_0x1cc755[_0x8405('0x32')]);_0x567ea8[_0x8405('0x33')]=_[_0x8405('0x36')](_0x567ea8[_0x8405('0x34')],_0x567ea8['query']);_0x2f2808[_0x8405('0x35')]=_[_0x8405('0x36')](_0x567ea8['model'],qs[_0x8405('0x37')](_0x1cc755[_0x8405('0x32')][_0x8405('0x37')]));_0x2f2808[_0x8405('0x35')]=_0x2f2808[_0x8405('0x35')][_0x8405('0x38')]?_0x2f2808['attributes']:_0x567ea8[_0x8405('0x34')];_0x2f2808[_0x8405('0x3a')]=qs[_0x8405('0x3b')](_0x1cc755['query'][_0x8405('0x3b')]);_0x2f2808[_0x8405('0x3c')]=qs[_0x8405('0x33')](_[_0x8405('0x3d')](_0x1cc755[_0x8405('0x32')],_0x567ea8[_0x8405('0x33')]));if(_0x1cc755[_0x8405('0x32')][_0x8405('0x3e')]){_0x2f2808[_0x8405('0x3c')]=_[_0x8405('0x3f')](_0x2f2808[_0x8405('0x3c')],{'$or':_[_0x8405('0x31')](_0x2f2808[_0x8405('0x35')],function(_0x3de6ad){var _0x422381={};_0x422381[_0x3de6ad]={'$like':'%'+_0x1cc755['query'][_0x8405('0x3e')]+'%'};return _0x422381;})});}_0x2f2808=_[_0x8405('0x3f')]({},_0x2f2808,_0x1cc755[_0x8405('0x47')]);return _0x1b3c09['getBlackLists'](_0x2f2808);}})['then'](function(_0x499d72){if(_0x499d72){_0x2737bb=_0x499d72[_0x8405('0x38')];if(!_0x1cc755[_0x8405('0x32')]['hasOwnProperty'](_0x8405('0x39'))){_0x2f2808[_0x8405('0x1a')]=qs[_0x8405('0x1a')](_0x1cc755[_0x8405('0x32')]['limit']);_0x2f2808[_0x8405('0x18')]=qs[_0x8405('0x18')](_0x1cc755[_0x8405('0x32')][_0x8405('0x18')]);}return _0x1b3c09[_0x8405('0x8b')](_0x2f2808);}})['then'](function(_0x420414){if(_0x420414){return _0x420414?{'count':_0x2737bb,'rows':_0x420414}:null;}})[_0x8405('0x21')](respondWithResult(_0x4c941d,null))[_0x8405('0x49')](handleError(_0x4c941d,null));};exports[_0x8405('0x8c')]=function(_0x2d7ef9,_0x18ea42,_0x311041){var _0x11bf15,_0xf70fbd;var _0x2bf9a0=[];var _0xbb2572=moment()[_0x8405('0x67')](_0x8405('0x68'));return db[_0x8405('0x2c')][_0x8405('0x48')]({'where':{'id':_0x2d7ef9['params']['id']}})[_0x8405('0x21')](handleEntityNotFound(_0x18ea42,null))[_0x8405('0x21')](function(_0x180da8){if(_0x180da8){_0xf70fbd=_0x180da8;return _0x180da8[_0x8405('0x8c')](_0x2d7ef9[_0x8405('0x4b')]['ids'],_['omit'](_0x2d7ef9['body'],[_0x8405('0x69'),'id'])||{});}return null;})['spread'](function(_0x5d45e5){var _0x4d9b2b;var _0x13fd25;_0x11bf15=_0x5d45e5||[];var _0x39e920=[];if(_0x5d45e5){for(var _0x4a4182=0x0;_0x4a4182<_0x5d45e5[_0x8405('0x38')];_0x4a4182+=0x1){var _0x3b8552=_0x5d45e5[_0x4a4182][_0x8405('0x22')]({'plain':!![]});_0x4d9b2b=squel[_0x8405('0x7f')]()['into'](_0x8405('0x8d'))[_0x8405('0x6d')]([_0x8405('0x6e'),_0x8405('0x70'),'ListId',_0x8405('0x5d'),_0x8405('0x52'),_0x8405('0x51')],squel[_0x8405('0x72')]()['field']('phone',_0x8405('0x6e'))[_0x8405('0x73')]('id',_0x8405('0x70'))[_0x8405('0x73')](_0x3b8552[_0x8405('0x75')]['toString'](),_0x8405('0x71'))[_0x8405('0x73')](_0x2d7ef9[_0x8405('0x58')]['id'][_0x8405('0x76')](),_0x8405('0x5d'))['field']('NOW()',_0x8405('0x52'))[_0x8405('0x73')](_0x8405('0x74'),_0x8405('0x51'))[_0x8405('0x77')](_0x8405('0x78'))['where'](_0x8405('0x79'))[_0x8405('0x3c')](_0x8405('0x7a'),_0x3b8552[_0x8405('0x75')][_0x8405('0x76')]())[_0x8405('0x3c')](_0x8405('0x7b')))[_0x8405('0x76')]();_0x39e920[_0x8405('0x87')](db[_0x8405('0x88')]['query'](_0x4d9b2b));}return BPromise['all'](_0x39e920);}})[_0x8405('0x21')](function(){return _0x11bf15;})['then'](respondWithResult(_0x18ea42,null))[_0x8405('0x49')](handleError(_0x18ea42,null));};exports[_0x8405('0x8e')]=function(_0xa5fef1,_0x2d5dcf,_0x26d13d){return db[_0x8405('0x2c')][_0x8405('0x48')]({'where':{'id':_0xa5fef1[_0x8405('0x58')]['id']}})[_0x8405('0x21')](handleEntityNotFound(_0x2d5dcf,null))[_0x8405('0x21')](function(_0x501859){if(_0x501859){return _0x501859[_0x8405('0x8e')](_0xa5fef1['query'][_0x8405('0x69')]);}})[_0x8405('0x21')](function(_0x35363e){if(_0x35363e){return db['CmHopperBlack']['destroy']({'where':{'ListId':_0xa5fef1[_0x8405('0x32')][_0x8405('0x69')],'CampaignId':_0xa5fef1['params']['id']}})[_0x8405('0x21')](function(){return _0x35363e;});}})[_0x8405('0x21')](respondWithStatusCode(_0x2d5dcf,null))[_0x8405('0x49')](handleError(_0x2d5dcf,null));};
\ No newline at end of file
index 1fd97d5..e1499ff 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9957=['exports','define','Campaign','lodash','util','../../config/logger','api','bluebird','request-promise','path','rimraf','./campaign.attributes'];(function(_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
+var _0x7a54=['../../config/logger','moment','bluebird','path','rimraf','../../config/environment','./campaign.attributes','exports','Campaign','campaigns','lodash','util'];(function(_0x1b612f,_0x8dac64){var _0x3af369=function(_0x27cdb3){while(--_0x27cdb3){_0x1b612f['push'](_0x1b612f['shift']());}};_0x3af369(++_0x8dac64);}(_0x7a54,0x106));var _0x47a5=function(_0x1809b5,_0x3c5812){_0x1809b5=_0x1809b5-0x0;var _0x4b89f2=_0x7a54[_0x1809b5];return _0x4b89f2;};'use strict';var _=require(_0x47a5('0x0'));var util=require(_0x47a5('0x1'));var logger=require(_0x47a5('0x2'))('api');var moment=require(_0x47a5('0x3'));var BPromise=require(_0x47a5('0x4'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x47a5('0x5'));var rimraf=require(_0x47a5('0x6'));var config=require(_0x47a5('0x7'));var attributes=require(_0x47a5('0x8'));module[_0x47a5('0x9')]=function(_0x545a97,_0x3d5629){return _0x545a97['define'](_0x47a5('0xa'),attributes,{'tableName':_0x47a5('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index edd7e0b..f074c20 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0x4c6d=['info','Campaign,\x20%s,\x20%s','debug','Campaign,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','message','result','catch','GetCampaign','Campaign','findAll','options','raw','where','limit','include','map','model','attributes','then','lodash','util','moment','bluebird','randomstring','../../mysqldb','../../config/utils','../../config/logger','../../config/environment','jayson/promise','http','request'];(function(_0x2e6668,_0x1b6d40){var _0x2c953b=function(_0x257566){while(--_0x257566){_0x2e6668['push'](_0x2e6668['shift']());}};_0x2c953b(++_0x1b6d40);}(_0x4c6d,0x1d0));var _0xd4c6=function(_0x24da9a,_0x3c2b32){_0x24da9a=_0x24da9a-0x0;var _0x3bfa61=_0x4c6d[_0x24da9a];return _0x3bfa61;};'use strict';var _=require(_0xd4c6('0x0'));var util=require(_0xd4c6('0x1'));var moment=require(_0xd4c6('0x2'));var BPromise=require(_0xd4c6('0x3'));var rs=require(_0xd4c6('0x4'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0xd4c6('0x5'))['db'];var utils=require(_0xd4c6('0x6'));var logger=require(_0xd4c6('0x7'))('rpc');var config=require(_0xd4c6('0x8'));var jayson=require(_0xd4c6('0x9'));var client=jayson['client'][_0xd4c6('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x316314,_0x4329e3,_0x5d4fce){return new BPromise(function(_0x440ee3,_0x19ce1c){return client[_0xd4c6('0xb')](_0x316314,_0x5d4fce)['then'](function(_0xe2f90b){logger[_0xd4c6('0xc')](_0xd4c6('0xd'),_0x4329e3,'request\x20sent');logger[_0xd4c6('0xe')](_0xd4c6('0xf'),_0x4329e3,_0xd4c6('0x10'),JSON[_0xd4c6('0x11')](_0xe2f90b));if(_0xe2f90b[_0xd4c6('0x12')]){if(_0xe2f90b[_0xd4c6('0x12')]['code']===0x1f4){logger['error'](_0xd4c6('0xd'),_0x4329e3,_0xe2f90b['error'][_0xd4c6('0x13')]);return _0x19ce1c(_0xe2f90b[_0xd4c6('0x12')][_0xd4c6('0x13')]);}logger[_0xd4c6('0x12')](_0xd4c6('0xd'),_0x4329e3,_0xe2f90b[_0xd4c6('0x12')][_0xd4c6('0x13')]);return _0x440ee3(_0xe2f90b['error']['message']);}else{logger[_0xd4c6('0xc')](_0xd4c6('0xd'),_0x4329e3,_0xd4c6('0x10'));_0x440ee3(_0xe2f90b[_0xd4c6('0x14')][_0xd4c6('0x13')]);}})[_0xd4c6('0x15')](function(_0xe52075){logger['error'](_0xd4c6('0xd'),_0x4329e3,_0xe52075);_0x19ce1c(_0xe52075);});});}exports[_0xd4c6('0x16')]=function(_0x23a16f){var _0x2c97b=this;return new Promise(function(_0x31f328,_0x54e0a5){return db[_0xd4c6('0x17')][_0xd4c6('0x18')]({'raw':_0x23a16f[_0xd4c6('0x19')]?_0x23a16f['options'][_0xd4c6('0x1a')]===undefined?!![]:![]:!![],'where':_0x23a16f[_0xd4c6('0x19')]?_0x23a16f[_0xd4c6('0x19')][_0xd4c6('0x1b')]||null:null,'attributes':_0x23a16f['options']?_0x23a16f[_0xd4c6('0x19')]['attributes']||null:null,'limit':_0x23a16f[_0xd4c6('0x19')]?_0x23a16f[_0xd4c6('0x19')][_0xd4c6('0x1c')]||null:null,'include':_0x23a16f[_0xd4c6('0x19')]?_0x23a16f[_0xd4c6('0x19')][_0xd4c6('0x1d')]?_[_0xd4c6('0x1e')](_0x23a16f[_0xd4c6('0x19')][_0xd4c6('0x1d')],function(_0x466330){return{'model':db[_0x466330[_0xd4c6('0x1f')]],'as':_0x466330['as'],'attributes':_0x466330[_0xd4c6('0x20')],'include':_0x466330['include']?_['map'](_0x466330[_0xd4c6('0x1d')],function(_0x2febbf){return{'model':db[_0x2febbf['model']],'as':_0x2febbf['as'],'attributes':_0x2febbf[_0xd4c6('0x20')],'include':_0x2febbf[_0xd4c6('0x1d')]?_[_0xd4c6('0x1e')](_0x2febbf['include'],function(_0x35b50c){return{'model':db[_0x35b50c[_0xd4c6('0x1f')]],'as':_0x35b50c['as'],'attributes':_0x35b50c['attributes']};}):[]};}):[]};}):[]:[]})[_0xd4c6('0x21')](function(_0x8ce066){logger[_0xd4c6('0xc')]('GetCampaign',_0x23a16f);logger[_0xd4c6('0xe')](_0xd4c6('0x16'),_0x23a16f,JSON[_0xd4c6('0x11')](_0x8ce066));_0x31f328(_0x8ce066);})[_0xd4c6('0x15')](function(_0x2e8c34){logger[_0xd4c6('0x12')](_0xd4c6('0x16'),_0x2e8c34[_0xd4c6('0x13')],_0x23a16f);_0x54e0a5(_0x2c97b[_0xd4c6('0x12')](0x1f4,_0x2e8c34[_0xd4c6('0x13')]));});});};
\ No newline at end of file
index 371ef7d..9a8fff8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0xcfed=['isAuthenticated','index','/:id','show','/:id/hoppers','/:id/hopper_histories','getHopperHistories','getHopperFinals','/:id/hopper_black','getHopperBlacks','/:id/lists','getLists','/:id/blacklists','create','post','/:id/clone','clone','addBlackLists','update','delete','removeLists','removeBlackLists','exports','multer','util','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./campaign.controller','get'];(function(_0x5a25a9,_0x2dbaca){var _0xc02669=function(_0x228517){while(--_0x228517){_0x5a25a9['push'](_0x5a25a9['shift']());}};_0xc02669(++_0x2dbaca);}(_0xcfed,0x1af));var _0xdcfe=function(_0x432682,_0x253044){_0x432682=_0x432682-0x0;var _0x463d05=_0xcfed[_0x432682];return _0x463d05;};'use strict';var multer=require(_0xdcfe('0x0'));var util=require(_0xdcfe('0x1'));var path=require('path');var timeout=require(_0xdcfe('0x2'));var express=require(_0xdcfe('0x3'));var router=express[_0xdcfe('0x4')]();var fs_extra=require(_0xdcfe('0x5'));var auth=require(_0xdcfe('0x6'));var interaction=require(_0xdcfe('0x7'));var config=require(_0xdcfe('0x8'));var controller=require(_0xdcfe('0x9'));router[_0xdcfe('0xa')]('/',auth[_0xdcfe('0xb')](),controller[_0xdcfe('0xc')]);router[_0xdcfe('0xa')](_0xdcfe('0xd'),auth[_0xdcfe('0xb')](),controller[_0xdcfe('0xe')]);router[_0xdcfe('0xa')](_0xdcfe('0xf'),auth['isAuthenticated'](),controller['getHoppers']);router[_0xdcfe('0xa')](_0xdcfe('0x10'),auth[_0xdcfe('0xb')](),controller[_0xdcfe('0x11')]);router[_0xdcfe('0xa')]('/:id/hopper_finals',auth[_0xdcfe('0xb')](),controller[_0xdcfe('0x12')]);router[_0xdcfe('0xa')](_0xdcfe('0x13'),auth['isAuthenticated'](),controller[_0xdcfe('0x14')]);router[_0xdcfe('0xa')](_0xdcfe('0x15'),auth[_0xdcfe('0xb')](),controller[_0xdcfe('0x16')]);router['get'](_0xdcfe('0x17'),auth[_0xdcfe('0xb')](),controller['getBlackLists']);router['post']('/',auth[_0xdcfe('0xb')](),controller[_0xdcfe('0x18')]);router[_0xdcfe('0x19')](_0xdcfe('0x1a'),auth[_0xdcfe('0xb')](),controller[_0xdcfe('0x1b')]);router[_0xdcfe('0x19')](_0xdcfe('0x15'),auth[_0xdcfe('0xb')](),controller['addLists']);router[_0xdcfe('0x19')]('/:id/blacklists',auth[_0xdcfe('0xb')](),controller[_0xdcfe('0x1c')]);router['put'](_0xdcfe('0xd'),auth['isAuthenticated'](),controller[_0xdcfe('0x1d')]);router[_0xdcfe('0x1e')](_0xdcfe('0xd'),auth[_0xdcfe('0xb')](),controller['destroy']);router[_0xdcfe('0x1e')](_0xdcfe('0x15'),auth[_0xdcfe('0xb')](),controller[_0xdcfe('0x1f')]);router[_0xdcfe('0x1e')](_0xdcfe('0x17'),auth['isAuthenticated'](),controller[_0xdcfe('0x20')]);module[_0xdcfe('0x21')]=router;
\ No newline at end of file
index 8266ef2..67e806a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0xd802=['key','sequelize','exports','TEXT','STRING','VIRTUAL','getDataValue'];(function(_0x321bb2,_0x202794){var _0x9c12ed=function(_0x263dd3){while(--_0x263dd3){_0x321bb2['push'](_0x321bb2['shift']());}};_0x9c12ed(++_0x202794);}(_0xd802,0x112));var _0x2d80=function(_0x1b6563,_0x3bf0f1){_0x1b6563=_0x1b6563-0x0;var _0xdea7b8=_0xd802[_0x1b6563];return _0xdea7b8;};'use strict';var Sequelize=require(_0x2d80('0x0'));module[_0x2d80('0x1')]={'key':{'type':Sequelize['STRING'],'allowNull':![]},'value':{'type':Sequelize[_0x2d80('0x2')],'allowNull':![]},'description':{'type':Sequelize[_0x2d80('0x3')]},'name':{'type':Sequelize[_0x2d80('0x4')],'get':function(){return this[_0x2d80('0x5')](_0x2d80('0x6'));}}};
\ No newline at end of file
index e6fac63..4ea90c3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0x85e6=['to-csv','fs-extra','lodash','crypto','jsforce','desk.js','papaparse','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','end','status','json','undefined','count','offset','limit','set','Content-Range','apply','reject','update','destroy','then','get','CannedAnswers','UserProfileResource','error','stack','name','send','CannedAnswer','rawAttributes','fieldName','type','key','model','query','intersection','fields','attributes','length','hasOwnProperty','nolimit','order','sort','where','pick','filter','merge','includeAll','findAll','keys','filters','options','find','catch','body','params','create','MailAccountId','SmsAccountId','OpenchannelAccountId','ChatWebsiteId','ValidationError','The\x20inserted\x20key\x20already\x20exists.','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','userProfileId','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','eml-format','request-promise','mustache','util','path','sox'];(function(_0x1b4c95,_0x59558c){var _0x16292b=function(_0x27c309){while(--_0x27c309){_0x1b4c95['push'](_0x1b4c95['shift']());}};_0x16292b(++_0x59558c);}(_0x85e6,0xa0));var _0x685e=function(_0x1e7823,_0x30b16f){_0x1e7823=_0x1e7823-0x0;var _0x265e20=_0x85e6[_0x1e7823];return _0x265e20;};'use strict';var emlformat=require(_0x685e('0x0'));var rimraf=require('rimraf');var zipdir=require('zip-dir');var jsonpatch=require('fast-json-patch');var rp=require(_0x685e('0x1'));var moment=require('moment');var BPromise=require('bluebird');var Mustache=require(_0x685e('0x2'));var util=require(_0x685e('0x3'));var path=require(_0x685e('0x4'));var sox=require(_0x685e('0x5'));var csv=require(_0x685e('0x6'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x685e('0x7'));var _=require(_0x685e('0x8'));var squel=require('squel');var crypto=require(_0x685e('0x9'));var jsforce=require(_0x685e('0xa'));var deskjs=require(_0x685e('0xb'));var toCsv=require(_0x685e('0x6'));var querystring=require('querystring');var Papa=require(_0x685e('0xc'));var Redis=require('ioredis');var authService=require(_0x685e('0xd'));var qs=require(_0x685e('0xe'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x685e('0xf'));var logger=require('../../config/logger')('api');var utils=require(_0x685e('0x10'));var config=require(_0x685e('0x11'));var licenseUtil=require(_0x685e('0x12'));var db=require(_0x685e('0x13'))['db'];function respondWithStatusCode(_0x503e88,_0x4a2ffc){_0x4a2ffc=_0x4a2ffc||0xcc;return function(_0x1ca60c){if(_0x1ca60c){return _0x503e88[_0x685e('0x14')](_0x4a2ffc);}return _0x503e88['status'](_0x4a2ffc)[_0x685e('0x15')]();};}function respondWithResult(_0x34bb51,_0x270a62){_0x270a62=_0x270a62||0xc8;return function(_0x1fcd98){if(_0x1fcd98){return _0x34bb51[_0x685e('0x16')](_0x270a62)[_0x685e('0x17')](_0x1fcd98);}};}function respondWithFilteredResult(_0x374dad,_0xe3b4fb){return function(_0x2c90b6){if(_0x2c90b6){var _0x140228=typeof _0xe3b4fb['offset']===_0x685e('0x18')&&typeof _0xe3b4fb['limit']==='undefined';var _0x190972=_0x2c90b6[_0x685e('0x19')];var _0x448a4b=_0x140228?0x0:_0xe3b4fb[_0x685e('0x1a')];var _0x12ffe7=_0x140228?_0x2c90b6[_0x685e('0x19')]:_0xe3b4fb[_0x685e('0x1a')]+_0xe3b4fb[_0x685e('0x1b')];var _0x4fb9a7;if(_0x12ffe7>=_0x190972){_0x12ffe7=_0x190972;_0x4fb9a7=0xc8;}else{_0x4fb9a7=0xce;}_0x374dad[_0x685e('0x16')](_0x4fb9a7);return _0x374dad[_0x685e('0x1c')](_0x685e('0x1d'),_0x448a4b+'-'+_0x12ffe7+'/'+_0x190972)['json'](_0x2c90b6);}return null;};}function patchUpdates(_0x1a277b){return function(_0xf312e6){try{jsonpatch[_0x685e('0x1e')](_0xf312e6,_0x1a277b,!![]);}catch(_0x5861d3){return BPromise[_0x685e('0x1f')](_0x5861d3);}return _0xf312e6['save']();};}function saveUpdates(_0x24289a,_0x41488c){return function(_0x854a8d){if(_0x854a8d){return _0x854a8d[_0x685e('0x20')](_0x24289a)['then'](function(_0x55a3cb){return _0x55a3cb;});}return null;};}function removeEntity(_0x549b85,_0x37fbb9){return function(_0x545fcf){if(_0x545fcf){return _0x545fcf[_0x685e('0x21')]()[_0x685e('0x22')](function(){var _0x3c3044=_0x545fcf[_0x685e('0x23')]({'plain':!![]});var _0x5bd6e6=_0x685e('0x24');return db[_0x685e('0x25')]['destroy']({'where':{'type':_0x5bd6e6,'resourceId':_0x3c3044['id']}})[_0x685e('0x22')](function(){return _0x545fcf;});})[_0x685e('0x22')](function(){_0x549b85[_0x685e('0x16')](0xcc)[_0x685e('0x15')]();});}};}function handleEntityNotFound(_0x47150a,_0x41a6e2){return function(_0x58a0a7){if(!_0x58a0a7){_0x47150a[_0x685e('0x14')](0x194);}return _0x58a0a7;};}function handleError(_0x2deadf,_0x11bdc7){_0x11bdc7=_0x11bdc7||0x1f4;return function(_0x1863c1){logger[_0x685e('0x26')](_0x1863c1[_0x685e('0x27')]);if(_0x1863c1[_0x685e('0x28')]){delete _0x1863c1[_0x685e('0x28')];}_0x2deadf[_0x685e('0x16')](_0x11bdc7)[_0x685e('0x29')](_0x1863c1);};}exports['index']=function(_0x3a275f,_0x5ba557){var _0x101fa2={},_0x3ee31c={},_0x36ea70={'count':0x0,'rows':[]};var _0x47f3c1=_['map'](db[_0x685e('0x2a')][_0x685e('0x2b')],function(_0x36a5a9){return{'name':_0x36a5a9[_0x685e('0x2c')],'type':_0x36a5a9[_0x685e('0x2d')][_0x685e('0x2e')]};});_0x3ee31c[_0x685e('0x2f')]=_['map'](_0x47f3c1,'name');_0x3ee31c['query']=_['keys'](_0x3a275f[_0x685e('0x30')]);_0x3ee31c['filters']=_[_0x685e('0x31')](_0x3ee31c[_0x685e('0x2f')],_0x3ee31c[_0x685e('0x30')]);_0x101fa2['attributes']=_[_0x685e('0x31')](_0x3ee31c['model'],qs[_0x685e('0x32')](_0x3a275f[_0x685e('0x30')]['fields']));_0x101fa2[_0x685e('0x33')]=_0x101fa2[_0x685e('0x33')][_0x685e('0x34')]?_0x101fa2[_0x685e('0x33')]:_0x3ee31c[_0x685e('0x2f')];if(!_0x3a275f[_0x685e('0x30')][_0x685e('0x35')](_0x685e('0x36'))){_0x101fa2[_0x685e('0x1b')]=qs[_0x685e('0x1b')](_0x3a275f[_0x685e('0x30')][_0x685e('0x1b')]);_0x101fa2[_0x685e('0x1a')]=qs['offset'](_0x3a275f[_0x685e('0x30')]['offset']);}_0x101fa2[_0x685e('0x37')]=qs[_0x685e('0x38')](_0x3a275f['query']['sort']);_0x101fa2[_0x685e('0x39')]=qs['filters'](_[_0x685e('0x3a')](_0x3a275f[_0x685e('0x30')],_0x3ee31c['filters']),_0x47f3c1);if(_0x3a275f[_0x685e('0x30')][_0x685e('0x3b')]){_0x101fa2[_0x685e('0x39')]=_[_0x685e('0x3c')](_0x101fa2[_0x685e('0x39')],{'$or':[{'key':{'$like':'%'+_0x3a275f[_0x685e('0x30')][_0x685e('0x3b')]+'%'}},{'value':{'$like':'%'+_0x3a275f[_0x685e('0x30')][_0x685e('0x3b')]+'%'}}]});}_0x101fa2=_['merge']({},_0x101fa2,_0x3a275f['options']);var _0x5f30d1={'where':_0x101fa2[_0x685e('0x39')]};return db[_0x685e('0x2a')][_0x685e('0x19')](_0x5f30d1)['then'](function(_0xc52d81){_0x36ea70[_0x685e('0x19')]=_0xc52d81;if(_0x3a275f['query'][_0x685e('0x3d')]){_0x101fa2['include']=[{'all':!![]}];}return db[_0x685e('0x2a')][_0x685e('0x3e')](_0x101fa2);})[_0x685e('0x22')](function(_0x19a2c9){_0x36ea70['rows']=_0x19a2c9;return _0x36ea70;})[_0x685e('0x22')](respondWithFilteredResult(_0x5ba557,_0x101fa2))['catch'](handleError(_0x5ba557,null));};exports['show']=function(_0x152a33,_0x59559d){var _0xd87d2f={'raw':!![],'where':{'id':_0x152a33['params']['id']}},_0x324956={};_0x324956[_0x685e('0x2f')]=_[_0x685e('0x3f')](db[_0x685e('0x2a')][_0x685e('0x2b')]);_0x324956[_0x685e('0x30')]=_['keys'](_0x152a33[_0x685e('0x30')]);_0x324956[_0x685e('0x40')]=_[_0x685e('0x31')](_0x324956[_0x685e('0x2f')],_0x324956[_0x685e('0x30')]);_0xd87d2f['attributes']=_[_0x685e('0x31')](_0x324956[_0x685e('0x2f')],qs[_0x685e('0x32')](_0x152a33[_0x685e('0x30')][_0x685e('0x32')]));_0xd87d2f['attributes']=_0xd87d2f[_0x685e('0x33')][_0x685e('0x34')]?_0xd87d2f[_0x685e('0x33')]:_0x324956[_0x685e('0x2f')];if(_0x152a33[_0x685e('0x30')][_0x685e('0x3d')]){_0xd87d2f['include']=[{'all':!![]}];}_0xd87d2f=_['merge']({},_0xd87d2f,_0x152a33[_0x685e('0x41')]);return db[_0x685e('0x2a')][_0x685e('0x42')](_0xd87d2f)[_0x685e('0x22')](handleEntityNotFound(_0x59559d,null))[_0x685e('0x22')](respondWithResult(_0x59559d,null))[_0x685e('0x43')](handleError(_0x59559d,null));};exports[_0x685e('0x20')]=function(_0x47eed7,_0x469f4c){if(_0x47eed7[_0x685e('0x44')]['id']){delete _0x47eed7[_0x685e('0x44')]['id'];}return db[_0x685e('0x2a')][_0x685e('0x42')]({'where':{'id':_0x47eed7['params']['id']}})[_0x685e('0x22')](handleEntityNotFound(_0x469f4c,null))[_0x685e('0x22')](saveUpdates(_0x47eed7[_0x685e('0x44')],null))[_0x685e('0x22')](respondWithResult(_0x469f4c,null))['catch'](handleError(_0x469f4c,null));};exports[_0x685e('0x21')]=function(_0x3e3df1,_0x3e0e03){return db['CannedAnswer'][_0x685e('0x42')]({'where':{'id':_0x3e3df1[_0x685e('0x45')]['id']}})[_0x685e('0x22')](handleEntityNotFound(_0x3e0e03,null))[_0x685e('0x22')](removeEntity(_0x3e0e03,null))[_0x685e('0x43')](handleError(_0x3e0e03,null));};exports[_0x685e('0x46')]=function(_0x15b158,_0x185da4){var _0x1858a8={'key':_0x15b158[_0x685e('0x44')]['key']};if(_0x15b158[_0x685e('0x44')][_0x685e('0x47')]){_0x1858a8[_0x685e('0x47')]=_0x15b158[_0x685e('0x44')][_0x685e('0x47')];}else if(_0x15b158['body']['SmsAccountId']){_0x1858a8['SmsAccountId']=_0x15b158[_0x685e('0x44')][_0x685e('0x48')];}else if(_0x15b158[_0x685e('0x44')][_0x685e('0x49')]){_0x1858a8[_0x685e('0x49')]=_0x15b158[_0x685e('0x44')]['OpenchannelAccountId'];}else if(_0x15b158['body'][_0x685e('0x4a')]){_0x1858a8[_0x685e('0x4a')]=_0x15b158[_0x685e('0x44')]['ChatWebsiteId'];}return db[_0x685e('0x2a')]['find']({'where':_0x1858a8})[_0x685e('0x22')](function(_0x1a440c){if(_0x1a440c){throw new db['Sequelize'][(_0x685e('0x4b'))](_0x685e('0x4c'));}return db[_0x685e('0x2a')][_0x685e('0x46')](_0x15b158[_0x685e('0x44')]);})[_0x685e('0x22')](function(_0x497208){var _0x430e62=_0x15b158[_0x685e('0x4d')][_0x685e('0x23')]({'plain':!![]});if(!_0x430e62)throw new Error(_0x685e('0x4e'));if(_0x430e62[_0x685e('0x4f')]===_0x685e('0x4d')){var _0x362a44=_0x497208[_0x685e('0x23')]({'plain':!![]});return db['UserProfileSection'][_0x685e('0x42')]({'where':{'name':_0x685e('0x24'),'userProfileId':_0x430e62[_0x685e('0x50')]},'raw':!![]})[_0x685e('0x22')](function(_0x54d32b){if(_0x54d32b&&_0x54d32b[_0x685e('0x51')]===0x0){return db['UserProfileResource'][_0x685e('0x46')]({'name':_0x362a44[_0x685e('0x28')],'resourceId':_0x362a44['id'],'type':_0x54d32b[_0x685e('0x28')],'sectionId':_0x54d32b['id']},{})[_0x685e('0x22')](function(){return _0x497208;});}else{return _0x497208;}})[_0x685e('0x43')](function(_0x58be40){logger[_0x685e('0x26')](_0x685e('0x52'),_0x58be40);throw _0x58be40;});}return _0x497208;})[_0x685e('0x22')](respondWithResult(_0x185da4,0xc9))[_0x685e('0x43')](handleError(_0x185da4,null));};
\ No newline at end of file
index fa61ef3..8ca1014 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0x7366=['util','../../config/logger','api','bluebird','path','rimraf','../../config/environment','./cannedAnswer.attributes','exports','CannedAnswer','tools_canned_answers','utf8mb4','utf8mb4_unicode_ci'];(function(_0x27c2d8,_0x1d010d){var _0x47353c=function(_0x95129b){while(--_0x95129b){_0x27c2d8['push'](_0x27c2d8['shift']());}};_0x47353c(++_0x1d010d);}(_0x7366,0x1c7));var _0x6736=function(_0x136a01,_0x3e0f10){_0x136a01=_0x136a01-0x0;var _0x39ccee=_0x7366[_0x136a01];return _0x39ccee;};'use strict';var _=require('lodash');var util=require(_0x6736('0x0'));var logger=require(_0x6736('0x1'))(_0x6736('0x2'));var moment=require('moment');var BPromise=require(_0x6736('0x3'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x6736('0x4'));var rimraf=require(_0x6736('0x5'));var config=require(_0x6736('0x6'));var attributes=require(_0x6736('0x7'));module[_0x6736('0x8')]=function(_0x229324,_0x55e040){return _0x229324['define'](_0x6736('0x9'),attributes,{'tableName':_0x6736('0xa'),'paranoid':![],'indexes':[],'timestamps':!![],'charset':_0x6736('0xb'),'collate':_0x6736('0xc')});};
\ No newline at end of file
index ec1663e..bdb95f6 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(_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
+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(_0x3093f0,_0x555168){var _0x54346e=function(_0x338f73){while(--_0x338f73){_0x3093f0['push'](_0x3093f0['shift']());}};_0x54346e(++_0x555168);}(_0xa9e0,0x123));var _0x0a9e=function(_0x220dbb,_0x99328d){_0x220dbb=_0x220dbb-0x0;var _0x2b77de=_0xa9e0[_0x220dbb];return _0x2b77de;};'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 ef34e46..65e430a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0xee35=['put','/:id','update','destroy','exports','multer','util','express','Router','fs-extra','../../components/auth/service','../../config/environment','get','index','isAuthenticated','show','post','create'];(function(_0x1731a7,_0x1dc804){var _0x69fbf1=function(_0x41102a){while(--_0x41102a){_0x1731a7['push'](_0x1731a7['shift']());}};_0x69fbf1(++_0x1dc804);}(_0xee35,0x149));var _0x5ee3=function(_0x4d82e1,_0x5ac72b){_0x4d82e1=_0x4d82e1-0x0;var _0x5f3bd9=_0xee35[_0x4d82e1];return _0x5f3bd9;};'use strict';var multer=require(_0x5ee3('0x0'));var util=require(_0x5ee3('0x1'));var path=require('path');var timeout=require('connect-timeout');var express=require(_0x5ee3('0x2'));var router=express[_0x5ee3('0x3')]();var fs_extra=require(_0x5ee3('0x4'));var auth=require(_0x5ee3('0x5'));var interaction=require('../../components/interaction/service');var config=require(_0x5ee3('0x6'));var controller=require('./cannedAnswer.controller');router[_0x5ee3('0x7')]('/',auth['isAuthenticated'](),controller[_0x5ee3('0x8')]);router['get']('/:id',auth[_0x5ee3('0x9')](),controller[_0x5ee3('0xa')]);router[_0x5ee3('0xb')]('/',auth[_0x5ee3('0x9')](),controller[_0x5ee3('0xc')]);router[_0x5ee3('0xd')](_0x5ee3('0xe'),auth[_0x5ee3('0x9')](),controller[_0x5ee3('0xf')]);router['delete'](_0x5ee3('0xe'),auth[_0x5ee3('0x9')](),controller[_0x5ee3('0x10')]);module[_0x5ee3('0x11')]=router;
\ No newline at end of file
index e7a7837..9492550 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0x62f8=['DATE','1970-01-01\x2000:00:01','STRING','INTEGER','exports'];(function(_0x39afb4,_0x2e73ab){var _0x162051=function(_0x308d6b){while(--_0x308d6b){_0x39afb4['push'](_0x39afb4['shift']());}};_0x162051(++_0x2e73ab);}(_0x62f8,0x13a));var _0x862f=function(_0x436f74,_0x3dcfae){_0x436f74=_0x436f74-0x0;var _0x40c422=_0x62f8[_0x436f74];return _0x40c422;};'use strict';var Sequelize=require('sequelize');module[_0x862f('0x0')]={'calldate':{'type':Sequelize[_0x862f('0x1')],'allowNull':![],'defaultValue':_0x862f('0x2')},'clid':{'type':Sequelize[_0x862f('0x3')]},'src':{'type':Sequelize[_0x862f('0x3')]},'dst':{'type':Sequelize[_0x862f('0x3')]},'dcontext':{'type':Sequelize[_0x862f('0x3')]},'channel':{'type':Sequelize[_0x862f('0x3')]},'dstchannel':{'type':Sequelize[_0x862f('0x3')]},'lastapp':{'type':Sequelize[_0x862f('0x3')]},'lastdata':{'type':Sequelize[_0x862f('0x3')]},'duration':{'type':Sequelize['INTEGER'],'allowNull':![],'defaultValue':0x0},'billsec':{'type':Sequelize[_0x862f('0x4')],'allowNull':![],'defaultValue':0x0},'disposition':{'type':Sequelize[_0x862f('0x3')]},'amaflags':{'type':Sequelize[_0x862f('0x4')],'allowNull':![],'defaultValue':0x0},'accountcode':{'type':Sequelize[_0x862f('0x3')]},'userfield':{'type':Sequelize[_0x862f('0x3')]},'uniqueid':{'type':Sequelize[_0x862f('0x3')]},'linkedid':{'type':Sequelize[_0x862f('0x3')]},'sequence':{'type':Sequelize['STRING']},'peeraccount':{'type':Sequelize[_0x862f('0x3')]},'type':{'type':Sequelize[_0x862f('0x3')]},'tag':{'type':Sequelize[_0x862f('0x3')]}};
\ No newline at end of file
index 4ff2d2e..234c2b2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0x2494=['../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../config/environment','../../mysqldb','sendStatus','end','status','json','offset','count','limit','Content-Range','reject','save','update','then','destroy','error','stack','name','send','Cdr','key','model','query','attributes','fields','hasOwnProperty','nolimit','order','sort','where','filters','pick','filter','merge','map','type','VIRTUAL','options','includeAll','include','findAll','rows','catch','show','params','keys','rawAttributes','intersection','length','find','create','body','describe','eml-format','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','sox','ejs','fs-extra','lodash','crypto','jsforce','desk.js','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs'];(function(_0xf46bd9,_0x322826){var _0x2763c3=function(_0x564f74){while(--_0x564f74){_0xf46bd9['push'](_0xf46bd9['shift']());}};_0x2763c3(++_0x322826);}(_0x2494,0x82));var _0x4249=function(_0x5ce780,_0x317ae5){_0x5ce780=_0x5ce780-0x0;var _0x53f819=_0x2494[_0x5ce780];return _0x53f819;};'use strict';var emlformat=require(_0x4249('0x0'));var rimraf=require('rimraf');var zipdir=require(_0x4249('0x1'));var jsonpatch=require(_0x4249('0x2'));var rp=require(_0x4249('0x3'));var moment=require(_0x4249('0x4'));var BPromise=require(_0x4249('0x5'));var Mustache=require(_0x4249('0x6'));var util=require('util');var path=require('path');var sox=require(_0x4249('0x7'));var csv=require('to-csv');var ejs=require(_0x4249('0x8'));var fs=require('fs');var fs_extra=require(_0x4249('0x9'));var _=require(_0x4249('0xa'));var squel=require('squel');var crypto=require(_0x4249('0xb'));var jsforce=require(_0x4249('0xc'));var deskjs=require(_0x4249('0xd'));var toCsv=require('to-csv');var querystring=require('querystring');var Papa=require(_0x4249('0xe'));var Redis=require(_0x4249('0xf'));var authService=require(_0x4249('0x10'));var qs=require(_0x4249('0x11'));var as=require(_0x4249('0x12'));var hardwareService=require(_0x4249('0x13'));var logger=require(_0x4249('0x14'))('api');var utils=require('../../config/utils');var config=require(_0x4249('0x15'));var licenseUtil=require('../../config/license/util');var db=require(_0x4249('0x16'))['db'];function respondWithStatusCode(_0x40b7ac,_0x57c3c7){_0x57c3c7=_0x57c3c7||0xcc;return function(_0x3cde97){if(_0x3cde97){return _0x40b7ac[_0x4249('0x17')](_0x57c3c7);}return _0x40b7ac['status'](_0x57c3c7)[_0x4249('0x18')]();};}function respondWithResult(_0x40ce9c,_0x2348f7){_0x2348f7=_0x2348f7||0xc8;return function(_0x3a514b){if(_0x3a514b){return _0x40ce9c[_0x4249('0x19')](_0x2348f7)[_0x4249('0x1a')](_0x3a514b);}};}function respondWithFilteredResult(_0x49eede,_0x7da5cf){return function(_0x32d170){if(_0x32d170){var _0x58ebd9=typeof _0x7da5cf[_0x4249('0x1b')]==='undefined'&&typeof _0x7da5cf['limit']==='undefined';var _0x39a6df=_0x32d170[_0x4249('0x1c')];var _0x1dbb4d=_0x58ebd9?0x0:_0x7da5cf[_0x4249('0x1b')];var _0x345606=_0x58ebd9?_0x32d170['count']:_0x7da5cf['offset']+_0x7da5cf[_0x4249('0x1d')];var _0x1333e1;if(_0x345606>=_0x39a6df){_0x345606=_0x39a6df;_0x1333e1=0xc8;}else{_0x1333e1=0xce;}_0x49eede[_0x4249('0x19')](_0x1333e1);return _0x49eede['set'](_0x4249('0x1e'),_0x1dbb4d+'-'+_0x345606+'/'+_0x39a6df)[_0x4249('0x1a')](_0x32d170);}return null;};}function patchUpdates(_0x4e5208){return function(_0x17399e){try{jsonpatch['apply'](_0x17399e,_0x4e5208,!![]);}catch(_0x4513d9){return BPromise[_0x4249('0x1f')](_0x4513d9);}return _0x17399e[_0x4249('0x20')]();};}function saveUpdates(_0x170fb2,_0x42d0d9){return function(_0x157354){if(_0x157354){return _0x157354[_0x4249('0x21')](_0x170fb2)[_0x4249('0x22')](function(_0x4032f7){return _0x4032f7;});}return null;};}function removeEntity(_0x15561d,_0x9da8){return function(_0x453667){if(_0x453667){return _0x453667[_0x4249('0x23')]()[_0x4249('0x22')](function(){_0x15561d[_0x4249('0x19')](0xcc)[_0x4249('0x18')]();});}};}function handleEntityNotFound(_0x35b6ec,_0x2e5843){return function(_0x4f970e){if(!_0x4f970e){_0x35b6ec[_0x4249('0x17')](0x194);}return _0x4f970e;};}function handleError(_0x43dc25,_0x1d4fb9){_0x1d4fb9=_0x1d4fb9||0x1f4;return function(_0x4ce9af){logger[_0x4249('0x24')](_0x4ce9af[_0x4249('0x25')]);if(_0x4ce9af[_0x4249('0x26')]){delete _0x4ce9af[_0x4249('0x26')];}_0x43dc25['status'](_0x1d4fb9)[_0x4249('0x27')](_0x4ce9af);};}exports['index']=function(_0x2dbac8,_0x16e141){var _0x3780ba={},_0x4eba42={},_0xb4d4d8={'count':0x0,'rows':[]};var _0x3b3cb5=_['map'](db[_0x4249('0x28')]['rawAttributes'],function(_0x4e7761){return{'name':_0x4e7761['fieldName'],'type':_0x4e7761['type'][_0x4249('0x29')]};});_0x4eba42[_0x4249('0x2a')]=_['map'](_0x3b3cb5,_0x4249('0x26'));_0x4eba42[_0x4249('0x2b')]=_['keys'](_0x2dbac8[_0x4249('0x2b')]);_0x4eba42['filters']=_['intersection'](_0x4eba42[_0x4249('0x2a')],_0x4eba42[_0x4249('0x2b')]);_0x3780ba[_0x4249('0x2c')]=_['intersection'](_0x4eba42[_0x4249('0x2a')],qs['fields'](_0x2dbac8['query'][_0x4249('0x2d')]));_0x3780ba[_0x4249('0x2c')]=_0x3780ba['attributes']['length']?_0x3780ba[_0x4249('0x2c')]:_0x4eba42[_0x4249('0x2a')];if(!_0x2dbac8[_0x4249('0x2b')][_0x4249('0x2e')](_0x4249('0x2f'))){_0x3780ba[_0x4249('0x1d')]=qs[_0x4249('0x1d')](_0x2dbac8[_0x4249('0x2b')][_0x4249('0x1d')]);_0x3780ba[_0x4249('0x1b')]=qs[_0x4249('0x1b')](_0x2dbac8[_0x4249('0x2b')][_0x4249('0x1b')]);}_0x3780ba[_0x4249('0x30')]=qs[_0x4249('0x31')](_0x2dbac8['query']['sort']);_0x3780ba[_0x4249('0x32')]=qs[_0x4249('0x33')](_[_0x4249('0x34')](_0x2dbac8[_0x4249('0x2b')],_0x4eba42['filters']),_0x3b3cb5);if(_0x2dbac8[_0x4249('0x2b')][_0x4249('0x35')]){_0x3780ba[_0x4249('0x32')]=_[_0x4249('0x36')](_0x3780ba[_0x4249('0x32')],{'$or':_[_0x4249('0x37')](_0x3b3cb5,function(_0xb51eb2){if(_0xb51eb2[_0x4249('0x38')]!==_0x4249('0x39')){var _0x42725d={};_0x42725d[_0xb51eb2['name']]={'$like':'%'+_0x2dbac8['query']['filter']+'%'};return _0x42725d;}})});}_0x3780ba=_[_0x4249('0x36')]({},_0x3780ba,_0x2dbac8[_0x4249('0x3a')]);var _0x1b6afd={'where':_0x3780ba[_0x4249('0x32')]};return db['Cdr'][_0x4249('0x1c')](_0x1b6afd)['then'](function(_0xd71464){_0xb4d4d8[_0x4249('0x1c')]=_0xd71464;if(_0x2dbac8['query'][_0x4249('0x3b')]){_0x3780ba[_0x4249('0x3c')]=[{'all':!![]}];}return db[_0x4249('0x28')][_0x4249('0x3d')](_0x3780ba);})[_0x4249('0x22')](function(_0x872aaa){_0xb4d4d8[_0x4249('0x3e')]=_0x872aaa;return _0xb4d4d8;})[_0x4249('0x22')](respondWithFilteredResult(_0x16e141,_0x3780ba))[_0x4249('0x3f')](handleError(_0x16e141,null));};exports[_0x4249('0x40')]=function(_0x513cd7,_0x1f73a0){var _0x3d30eb={'raw':!![],'where':{'id':_0x513cd7[_0x4249('0x41')]['id']}},_0x2e08b4={};_0x2e08b4[_0x4249('0x2a')]=_[_0x4249('0x42')](db[_0x4249('0x28')][_0x4249('0x43')]);_0x2e08b4[_0x4249('0x2b')]=_[_0x4249('0x42')](_0x513cd7[_0x4249('0x2b')]);_0x2e08b4['filters']=_[_0x4249('0x44')](_0x2e08b4[_0x4249('0x2a')],_0x2e08b4[_0x4249('0x2b')]);_0x3d30eb[_0x4249('0x2c')]=_[_0x4249('0x44')](_0x2e08b4[_0x4249('0x2a')],qs['fields'](_0x513cd7[_0x4249('0x2b')][_0x4249('0x2d')]));_0x3d30eb['attributes']=_0x3d30eb[_0x4249('0x2c')][_0x4249('0x45')]?_0x3d30eb['attributes']:_0x2e08b4[_0x4249('0x2a')];if(_0x513cd7['query']['includeAll']){_0x3d30eb[_0x4249('0x3c')]=[{'all':!![]}];}_0x3d30eb=_['merge']({},_0x3d30eb,_0x513cd7[_0x4249('0x3a')]);return db[_0x4249('0x28')][_0x4249('0x46')](_0x3d30eb)[_0x4249('0x22')](handleEntityNotFound(_0x1f73a0,null))['then'](respondWithResult(_0x1f73a0,null))[_0x4249('0x3f')](handleError(_0x1f73a0,null));};exports[_0x4249('0x47')]=function(_0x4c63fa,_0x28ad9b){return db[_0x4249('0x28')][_0x4249('0x47')](_0x4c63fa[_0x4249('0x48')],{})[_0x4249('0x22')](respondWithResult(_0x28ad9b,0xc9))[_0x4249('0x3f')](handleError(_0x28ad9b,null));};exports[_0x4249('0x21')]=function(_0xeab8f7,_0x35222b){if(_0xeab8f7[_0x4249('0x48')]['id']){delete _0xeab8f7[_0x4249('0x48')]['id'];}return db['Cdr'][_0x4249('0x46')]({'where':{'id':_0xeab8f7[_0x4249('0x41')]['id']}})[_0x4249('0x22')](handleEntityNotFound(_0x35222b,null))[_0x4249('0x22')](saveUpdates(_0xeab8f7['body'],null))['then'](respondWithResult(_0x35222b,null))[_0x4249('0x3f')](handleError(_0x35222b,null));};exports[_0x4249('0x23')]=function(_0x4d163f,_0x36a67f){return db[_0x4249('0x28')][_0x4249('0x46')]({'where':{'id':_0x4d163f['params']['id']}})['then'](handleEntityNotFound(_0x36a67f,null))[_0x4249('0x22')](removeEntity(_0x36a67f,null))['catch'](handleError(_0x36a67f,null));};exports[_0x4249('0x49')]=function(_0x58a075,_0x4554ac){return db[_0x4249('0x28')]['describe']()[_0x4249('0x22')](respondWithResult(_0x4554ac,null))[_0x4249('0x3f')](handleError(_0x4554ac,null));};
\ No newline at end of file
index 9c7ac5c..0b76f1d 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(_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
+var _0x7a54=['Cdr','cdr','accountcode','disposition','dst','src','uniqueid','lodash','util','../../config/logger','moment','bluebird','path','rimraf','../../config/environment','./cdr.attributes','exports'];(function(_0x1c8fd5,_0x4a9f58){var _0x586b9a=function(_0x57645f){while(--_0x57645f){_0x1c8fd5['push'](_0x1c8fd5['shift']());}};_0x586b9a(++_0x4a9f58);}(_0x7a54,0x106));var _0x47a5=function(_0x2c32c5,_0xdb96ec){_0x2c32c5=_0x2c32c5-0x0;var _0x22b252=_0x7a54[_0x2c32c5];return _0x22b252;};'use strict';var _=require(_0x47a5('0x0'));var util=require(_0x47a5('0x1'));var logger=require(_0x47a5('0x2'))('api');var moment=require(_0x47a5('0x3'));var BPromise=require(_0x47a5('0x4'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x47a5('0x5'));var rimraf=require(_0x47a5('0x6'));var config=require(_0x47a5('0x7'));var attributes=require(_0x47a5('0x8'));module[_0x47a5('0x9')]=function(_0x545a97,_0x3d5629){return _0x545a97['define'](_0x47a5('0xa'),attributes,{'tableName':_0x47a5('0xb'),'paranoid':![],'indexes':[{'name':'accountcode','fields':[_0x47a5('0xc')]},{'name':'calldate','fields':['calldate']},{'name':'disposition','fields':[_0x47a5('0xd')]},{'name':_0x47a5('0xe'),'fields':['dst']},{'name':_0x47a5('0xf'),'fields':['src']},{'name':'uniqueid','fields':[_0x47a5('0x10')]}],'timestamps':![]});};
\ No newline at end of file
index 32233cd..b65d406 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0x66a5=['request\x20sent','Cdr,\x20%s,\x20%s,\x20%s','stringify','error','code','Cdr,\x20%s,\x20%s','message','result','catch','lodash','moment','bluebird','randomstring','../../mysqldb','../../config/logger','rpc','../../config/environment','jayson/promise','client','request','then','info'];(function(_0x50e0b1,_0x584689){var _0x251a7b=function(_0x234229){while(--_0x234229){_0x50e0b1['push'](_0x50e0b1['shift']());}};_0x251a7b(++_0x584689);}(_0x66a5,0xb9));var _0x566a=function(_0x5537e6,_0xddf3dc){_0x5537e6=_0x5537e6-0x0;var _0x44115a=_0x66a5[_0x5537e6];return _0x44115a;};'use strict';var _=require(_0x566a('0x0'));var util=require('util');var moment=require(_0x566a('0x1'));var BPromise=require(_0x566a('0x2'));var rs=require(_0x566a('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x566a('0x4'))['db'];var utils=require('../../config/utils');var logger=require(_0x566a('0x5'))(_0x566a('0x6'));var config=require(_0x566a('0x7'));var jayson=require(_0x566a('0x8'));var client=jayson[_0x566a('0x9')]['http']({'port':0x232a});function respondWithRpcPromise(_0x514d10,_0x3256a2,_0x2bc26f){return new BPromise(function(_0x22bfa5,_0x5482d0){return client[_0x566a('0xa')](_0x514d10,_0x2bc26f)[_0x566a('0xb')](function(_0x4dbbfa){logger[_0x566a('0xc')]('Cdr,\x20%s,\x20%s',_0x3256a2,_0x566a('0xd'));logger['debug'](_0x566a('0xe'),_0x3256a2,_0x566a('0xd'),JSON[_0x566a('0xf')](_0x4dbbfa));if(_0x4dbbfa[_0x566a('0x10')]){if(_0x4dbbfa[_0x566a('0x10')][_0x566a('0x11')]===0x1f4){logger[_0x566a('0x10')](_0x566a('0x12'),_0x3256a2,_0x4dbbfa[_0x566a('0x10')][_0x566a('0x13')]);return _0x5482d0(_0x4dbbfa[_0x566a('0x10')][_0x566a('0x13')]);}logger['error'](_0x566a('0x12'),_0x3256a2,_0x4dbbfa[_0x566a('0x10')][_0x566a('0x13')]);return _0x22bfa5(_0x4dbbfa[_0x566a('0x10')][_0x566a('0x13')]);}else{logger['info'](_0x566a('0x12'),_0x3256a2,_0x566a('0xd'));_0x22bfa5(_0x4dbbfa[_0x566a('0x14')][_0x566a('0x13')]);}})[_0x566a('0x15')](function(_0x456dc5){logger[_0x566a('0x10')](_0x566a('0x12'),_0x3256a2,_0x456dc5);_0x5482d0(_0x456dc5);});});}
\ No newline at end of file
index 5603a58..d9a34ca 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(_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
+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(_0x4327fe,_0x4f8040){var _0x138651=function(_0x418acc){while(--_0x418acc){_0x4327fe['push'](_0x4327fe['shift']());}};_0x138651(++_0x4f8040);}(_0xa9e0,0x123));var _0x0a9e=function(_0x2dafbe,_0x5d04de){_0x2dafbe=_0x2dafbe-0x0;var _0x58a45a=_0xa9e0[_0x2dafbe];return _0x58a45a;};'use strict';var multer=require(_0x0a9e('0x0'));var util=require(_0x0a9e('0x1'));var path=require(_0x0a9e('0x2'));var timeout=require('connect-timeout');var express=require('express');var router=express[_0x0a9e('0x3')]();var fs_extra=require('fs-extra');var auth=require(_0x0a9e('0x4'));var interaction=require(_0x0a9e('0x5'));var config=require(_0x0a9e('0x6'));var controller=require(_0x0a9e('0x7'));router[_0x0a9e('0x8')]('/',auth['isAuthenticated'](),controller[_0x0a9e('0x9')]);router[_0x0a9e('0x8')](_0x0a9e('0xa'),auth['isAuthenticated'](),controller['describe']);router[_0x0a9e('0x8')]('/:id',auth['isAuthenticated'](),controller[_0x0a9e('0xb')]);router[_0x0a9e('0xc')]('/',auth[_0x0a9e('0xd')](),controller[_0x0a9e('0xe')]);router[_0x0a9e('0xf')](_0x0a9e('0x10'),auth['isAuthenticated'](),controller['update']);router['delete']('/:id',auth[_0x0a9e('0xd')](),controller[_0x0a9e('0x11')]);module[_0x0a9e('0x12')]=router;
\ No newline at end of file
index a7dc37e..73bbdd8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0xaca9=['noop','TEXT','STRING','sequelize','exports','INTEGER'];(function(_0x29262f,_0x174cfc){var _0x218b0c=function(_0x5651e1){while(--_0x5651e1){_0x29262f['push'](_0x29262f['shift']());}};_0x218b0c(++_0x174cfc);}(_0xaca9,0xbd));var _0x9aca=function(_0x5d6456,_0x58ecc7){_0x5d6456=_0x5d6456-0x0;var _0x4d66c1=_0xaca9[_0x5d6456];return _0x4d66c1;};'use strict';var Sequelize=require(_0x9aca('0x0'));module[_0x9aca('0x1')]={'priority':{'type':Sequelize[_0x9aca('0x2')],'allowNull':![]},'app':{'type':Sequelize['STRING'],'allowNull':![],'defaultValue':_0x9aca('0x3')},'appdata':{'type':Sequelize[_0x9aca('0x4')]()},'description':{'type':Sequelize[_0x9aca('0x5')]},'interval':{'type':Sequelize['STRING'],'defaultValue':'*,*,*,*'}};
\ No newline at end of file
index b26bec3..329cd18 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0x3e5c=['Content-Range','apply','reject','save','update','then','destroy','end','error','name','send','params','rawAttributes','query','keys','filters','intersection','attributes','model','fields','length','include','merge','options','ChatApplication','body','find','catch','eml-format','rimraf','zip-dir','fast-json-patch','moment','bluebird','mustache','util','path','sox','ejs','fs-extra','lodash','squel','crypto','desk.js','to-csv','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/license/util','../../mysqldb','sendStatus','status','json','offset','undefined','count','limit'];(function(_0x321bb2,_0x202794){var _0x9c12ed=function(_0x263dd3){while(--_0x263dd3){_0x321bb2['push'](_0x321bb2['shift']());}};_0x9c12ed(++_0x202794);}(_0x3e5c,0x9a));var _0xc3e5=function(_0x21f8d3,_0x2d2109){_0x21f8d3=_0x21f8d3-0x0;var _0x34751c=_0x3e5c[_0x21f8d3];return _0x34751c;};'use strict';var emlformat=require(_0xc3e5('0x0'));var rimraf=require(_0xc3e5('0x1'));var zipdir=require(_0xc3e5('0x2'));var jsonpatch=require(_0xc3e5('0x3'));var rp=require('request-promise');var moment=require(_0xc3e5('0x4'));var BPromise=require(_0xc3e5('0x5'));var Mustache=require(_0xc3e5('0x6'));var util=require(_0xc3e5('0x7'));var path=require(_0xc3e5('0x8'));var sox=require(_0xc3e5('0x9'));var csv=require('to-csv');var ejs=require(_0xc3e5('0xa'));var fs=require('fs');var fs_extra=require(_0xc3e5('0xb'));var _=require(_0xc3e5('0xc'));var squel=require(_0xc3e5('0xd'));var crypto=require(_0xc3e5('0xe'));var jsforce=require('jsforce');var deskjs=require(_0xc3e5('0xf'));var toCsv=require(_0xc3e5('0x10'));var querystring=require(_0xc3e5('0x11'));var Papa=require(_0xc3e5('0x12'));var Redis=require(_0xc3e5('0x13'));var authService=require(_0xc3e5('0x14'));var qs=require(_0xc3e5('0x15'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0xc3e5('0x16'));var logger=require(_0xc3e5('0x17'))(_0xc3e5('0x18'));var utils=require(_0xc3e5('0x19'));var config=require('../../config/environment');var licenseUtil=require(_0xc3e5('0x1a'));var db=require(_0xc3e5('0x1b'))['db'];function respondWithStatusCode(_0x36193e,_0x3f0395){_0x3f0395=_0x3f0395||0xcc;return function(_0x3b7441){if(_0x3b7441){return _0x36193e[_0xc3e5('0x1c')](_0x3f0395);}return _0x36193e['status'](_0x3f0395)['end']();};}function respondWithResult(_0x52cca7,_0x27c226){_0x27c226=_0x27c226||0xc8;return function(_0x5a52f1){if(_0x5a52f1){return _0x52cca7[_0xc3e5('0x1d')](_0x27c226)[_0xc3e5('0x1e')](_0x5a52f1);}};}function respondWithFilteredResult(_0x4d1ad9,_0x353dc0){return function(_0x3e3eaa){if(_0x3e3eaa){var _0x2cc476=typeof _0x353dc0[_0xc3e5('0x1f')]===_0xc3e5('0x20')&&typeof _0x353dc0['limit']===_0xc3e5('0x20');var _0x277063=_0x3e3eaa[_0xc3e5('0x21')];var _0xa33d84=_0x2cc476?0x0:_0x353dc0[_0xc3e5('0x1f')];var _0x1e1eea=_0x2cc476?_0x3e3eaa['count']:_0x353dc0[_0xc3e5('0x1f')]+_0x353dc0[_0xc3e5('0x22')];var _0x4a1d86;if(_0x1e1eea>=_0x277063){_0x1e1eea=_0x277063;_0x4a1d86=0xc8;}else{_0x4a1d86=0xce;}_0x4d1ad9[_0xc3e5('0x1d')](_0x4a1d86);return _0x4d1ad9['set'](_0xc3e5('0x23'),_0xa33d84+'-'+_0x1e1eea+'/'+_0x277063)[_0xc3e5('0x1e')](_0x3e3eaa);}return null;};}function patchUpdates(_0x2d551b){return function(_0xebf6dc){try{jsonpatch[_0xc3e5('0x24')](_0xebf6dc,_0x2d551b,!![]);}catch(_0x4a7806){return BPromise[_0xc3e5('0x25')](_0x4a7806);}return _0xebf6dc[_0xc3e5('0x26')]();};}function saveUpdates(_0x2d8c6f,_0x3eb513){return function(_0x414ba9){if(_0x414ba9){return _0x414ba9[_0xc3e5('0x27')](_0x2d8c6f)[_0xc3e5('0x28')](function(_0x47f344){return _0x47f344;});}return null;};}function removeEntity(_0x3a2800,_0x430cb4){return function(_0x43d01e){if(_0x43d01e){return _0x43d01e[_0xc3e5('0x29')]()[_0xc3e5('0x28')](function(){_0x3a2800[_0xc3e5('0x1d')](0xcc)[_0xc3e5('0x2a')]();});}};}function handleEntityNotFound(_0x45556e,_0x564748){return function(_0x25d3a3){if(!_0x25d3a3){_0x45556e['sendStatus'](0x194);}return _0x25d3a3;};}function handleError(_0x4c0cf4,_0x8815af){_0x8815af=_0x8815af||0x1f4;return function(_0x12ad6e){logger[_0xc3e5('0x2b')](_0x12ad6e['stack']);if(_0x12ad6e[_0xc3e5('0x2c')]){delete _0x12ad6e[_0xc3e5('0x2c')];}_0x4c0cf4[_0xc3e5('0x1d')](_0x8815af)[_0xc3e5('0x2d')](_0x12ad6e);};}exports['show']=function(_0xa6766d,_0x497ecf){var _0x45ca6d={'raw':!![],'where':{'id':_0xa6766d[_0xc3e5('0x2e')]['id']}},_0xc0e6e7={};_0xc0e6e7['model']=_['keys'](db['ChatApplication'][_0xc3e5('0x2f')]);_0xc0e6e7[_0xc3e5('0x30')]=_[_0xc3e5('0x31')](_0xa6766d[_0xc3e5('0x30')]);_0xc0e6e7[_0xc3e5('0x32')]=_[_0xc3e5('0x33')](_0xc0e6e7['model'],_0xc0e6e7[_0xc3e5('0x30')]);_0x45ca6d[_0xc3e5('0x34')]=_[_0xc3e5('0x33')](_0xc0e6e7[_0xc3e5('0x35')],qs[_0xc3e5('0x36')](_0xa6766d[_0xc3e5('0x30')][_0xc3e5('0x36')]));_0x45ca6d[_0xc3e5('0x34')]=_0x45ca6d[_0xc3e5('0x34')][_0xc3e5('0x37')]?_0x45ca6d[_0xc3e5('0x34')]:_0xc0e6e7['model'];if(_0xa6766d[_0xc3e5('0x30')]['includeAll']){_0x45ca6d[_0xc3e5('0x38')]=[{'all':!![]}];}_0x45ca6d=_[_0xc3e5('0x39')]({},_0x45ca6d,_0xa6766d[_0xc3e5('0x3a')]);return db[_0xc3e5('0x3b')]['find'](_0x45ca6d)[_0xc3e5('0x28')](handleEntityNotFound(_0x497ecf,null))['then'](respondWithResult(_0x497ecf,null))['catch'](handleError(_0x497ecf,null));};exports[_0xc3e5('0x27')]=function(_0x4f6fe1,_0x3c407f){if(_0x4f6fe1[_0xc3e5('0x3c')]['id']){delete _0x4f6fe1[_0xc3e5('0x3c')]['id'];}return db[_0xc3e5('0x3b')][_0xc3e5('0x3d')]({'where':{'id':_0x4f6fe1['params']['id']}})[_0xc3e5('0x28')](handleEntityNotFound(_0x3c407f,null))[_0xc3e5('0x28')](saveUpdates(_0x4f6fe1[_0xc3e5('0x3c')],null))[_0xc3e5('0x28')](respondWithResult(_0x3c407f,null))[_0xc3e5('0x3e')](handleError(_0x3c407f,null));};exports['destroy']=function(_0x3ab3be,_0x484e21){return db[_0xc3e5('0x3b')][_0xc3e5('0x3d')]({'where':{'id':_0x3ab3be['params']['id']}})[_0xc3e5('0x28')](handleEntityNotFound(_0x484e21,null))['then'](removeEntity(_0x484e21,null))[_0xc3e5('0x3e')](handleError(_0x484e21,null));};
\ No newline at end of file
index 3f9dbf6..7ce2d09 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0x17bb=['rimraf','../../config/environment','./chatApplication.attributes','exports','define','ChatApplication','chat_applications','utf8mb4_unicode_ci','lodash','util','../../config/logger','api','moment','bluebird','request-promise','path'];(function(_0x4171ea,_0x294970){var _0x22252e=function(_0x348f28){while(--_0x348f28){_0x4171ea['push'](_0x4171ea['shift']());}};_0x22252e(++_0x294970);}(_0x17bb,0x1b8));var _0xb17b=function(_0x4b369d,_0x265eb8){_0x4b369d=_0x4b369d-0x0;var _0x571a98=_0x17bb[_0x4b369d];return _0x571a98;};'use strict';var _=require(_0xb17b('0x0'));var util=require(_0xb17b('0x1'));var logger=require(_0xb17b('0x2'))(_0xb17b('0x3'));var moment=require(_0xb17b('0x4'));var BPromise=require(_0xb17b('0x5'));var rp=require(_0xb17b('0x6'));var fs=require('fs');var path=require(_0xb17b('0x7'));var rimraf=require(_0xb17b('0x8'));var config=require(_0xb17b('0x9'));var attributes=require(_0xb17b('0xa'));module[_0xb17b('0xb')]=function(_0xae6d82,_0x11ffd3){return _0xae6d82[_0xb17b('0xc')](_0xb17b('0xd'),attributes,{'tableName':_0xb17b('0xe'),'paranoid':![],'indexes':[],'timestamps':!![],'charset':'utf8mb4','collate':_0xb17b('0xf')});};
\ No newline at end of file
index 3a8a77e..b0929ac 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0xa2b0=['catch','lodash','util','moment','randomstring','ioredis','../../mysqldb','rpc','../../config/environment','jayson/promise','client','then','info','ChatApplication,\x20%s,\x20%s','debug','request\x20sent','error','code','message'];(function(_0x46f44e,_0x22ed75){var _0x5dd889=function(_0x437773){while(--_0x437773){_0x46f44e['push'](_0x46f44e['shift']());}};_0x5dd889(++_0x22ed75);}(_0xa2b0,0xf8));var _0x0a2b=function(_0x880155,_0x5ac620){_0x880155=_0x880155-0x0;var _0x482f00=_0xa2b0[_0x880155];return _0x482f00;};'use strict';var _=require(_0x0a2b('0x0'));var util=require(_0x0a2b('0x1'));var moment=require(_0x0a2b('0x2'));var BPromise=require('bluebird');var rs=require(_0x0a2b('0x3'));var fs=require('fs');var Redis=require(_0x0a2b('0x4'));var db=require(_0x0a2b('0x5'))['db'];var utils=require('../../config/utils');var logger=require('../../config/logger')(_0x0a2b('0x6'));var config=require(_0x0a2b('0x7'));var jayson=require(_0x0a2b('0x8'));var client=jayson[_0x0a2b('0x9')]['http']({'port':0x232a});function respondWithRpcPromise(_0x461d5c,_0x3d4096,_0x2cf88a){return new BPromise(function(_0x4dc6a8,_0x5822b2){return client['request'](_0x461d5c,_0x2cf88a)[_0x0a2b('0xa')](function(_0x3a9e9e){logger[_0x0a2b('0xb')](_0x0a2b('0xc'),_0x3d4096,'request\x20sent');logger[_0x0a2b('0xd')]('ChatApplication,\x20%s,\x20%s,\x20%s',_0x3d4096,_0x0a2b('0xe'),JSON['stringify'](_0x3a9e9e));if(_0x3a9e9e[_0x0a2b('0xf')]){if(_0x3a9e9e[_0x0a2b('0xf')][_0x0a2b('0x10')]===0x1f4){logger[_0x0a2b('0xf')](_0x0a2b('0xc'),_0x3d4096,_0x3a9e9e['error'][_0x0a2b('0x11')]);return _0x5822b2(_0x3a9e9e[_0x0a2b('0xf')][_0x0a2b('0x11')]);}logger['error'](_0x0a2b('0xc'),_0x3d4096,_0x3a9e9e[_0x0a2b('0xf')][_0x0a2b('0x11')]);return _0x4dc6a8(_0x3a9e9e[_0x0a2b('0xf')][_0x0a2b('0x11')]);}else{logger['info']('ChatApplication,\x20%s,\x20%s',_0x3d4096,_0x0a2b('0xe'));_0x4dc6a8(_0x3a9e9e['result'][_0x0a2b('0x11')]);}})[_0x0a2b('0x12')](function(_0x4e8b80){logger[_0x0a2b('0xf')](_0x0a2b('0xc'),_0x3d4096,_0x4e8b80);_0x5822b2(_0x4e8b80);});});}
\ No newline at end of file
index e38fab4..e177332 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0x431e=['get','/:id','isAuthenticated','show','put','update','delete','destroy','exports','util','path','connect-timeout','express','fs-extra','../../config/environment','./chatApplication.controller'];(function(_0x249d7c,_0x17163a){var _0x20f24b=function(_0x5db7c4){while(--_0x5db7c4){_0x249d7c['push'](_0x249d7c['shift']());}};_0x20f24b(++_0x17163a);}(_0x431e,0x1a9));var _0xe431=function(_0xe8129c,_0x2fb03c){_0xe8129c=_0xe8129c-0x0;var _0x709fc5=_0x431e[_0xe8129c];return _0x709fc5;};'use strict';var multer=require('multer');var util=require(_0xe431('0x0'));var path=require(_0xe431('0x1'));var timeout=require(_0xe431('0x2'));var express=require(_0xe431('0x3'));var router=express['Router']();var fs_extra=require(_0xe431('0x4'));var auth=require('../../components/auth/service');var interaction=require('../../components/interaction/service');var config=require(_0xe431('0x5'));var controller=require(_0xe431('0x6'));router[_0xe431('0x7')](_0xe431('0x8'),auth[_0xe431('0x9')](),controller[_0xe431('0xa')]);router[_0xe431('0xb')](_0xe431('0x8'),auth[_0xe431('0x9')](),controller[_0xe431('0xc')]);router[_0xe431('0xd')](_0xe431('0x8'),auth['isAuthenticated'](),controller[_0xe431('0xe')]);module[_0xe431('0xf')]=router;
\ No newline at end of file
index 1a9de6e..dbdf447 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0xf980=['exports','STRING','BOOLEAN','sequelize'];(function(_0x2553ad,_0x4ff078){var _0x1f83cc=function(_0x53d0b3){while(--_0x53d0b3){_0x2553ad['push'](_0x2553ad['shift']());}};_0x1f83cc(++_0x4ff078);}(_0xf980,0xc3));var _0x0f98=function(_0xf1f37e,_0x159a20){_0xf1f37e=_0xf1f37e-0x0;var _0x2e3a6d=_0xf980[_0xf1f37e];return _0x2e3a6d;};'use strict';var Sequelize=require(_0x0f98('0x0'));module[_0x0f98('0x1')]={'name':{'type':Sequelize[_0x0f98('0x2')],'allowNull':![]},'description':{'type':Sequelize[_0x0f98('0x2')]},'write':{'type':Sequelize[_0x0f98('0x3')],'defaultValue':!![]}};
\ No newline at end of file
index aae5d67..cb532e5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0xddca=['keys','rawAttributes','find','create','body','update','describe','getUnread','ChatInternalMessage','user','toInteger','addMembers','ids','getMembers','User','hasOwnProperty','removeMembers','ChatGroupId','getMessages','findOne','$gte','split','format','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','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','redis','defaults','localhost','./chatGroup.socket','register','sendStatus','status','end','json','undefined','limit','offset','set','Content-Range','apply','then','destroy','name','send','index','map','ChatGroup','fieldName','type','key','model','query','filters','intersection','attributes','fields','length','nolimit','order','sort','where','pick','filter','merge','VIRTUAL','options','count','includeAll','include','findAll','rows','catch','show','params'];(function(_0x53cf8e,_0x3d290f){var _0x459197=function(_0x67073c){while(--_0x67073c){_0x53cf8e['push'](_0x53cf8e['shift']());}};_0x459197(++_0x3d290f);}(_0xddca,0xdd));var _0xaddc=function(_0x90b1b1,_0x3c996d){_0x90b1b1=_0x90b1b1-0x0;var _0x2f23dc=_0xddca[_0x90b1b1];return _0x2f23dc;};'use strict';var emlformat=require(_0xaddc('0x0'));var rimraf=require(_0xaddc('0x1'));var zipdir=require(_0xaddc('0x2'));var jsonpatch=require('fast-json-patch');var rp=require(_0xaddc('0x3'));var moment=require(_0xaddc('0x4'));var BPromise=require(_0xaddc('0x5'));var Mustache=require(_0xaddc('0x6'));var util=require(_0xaddc('0x7'));var path=require(_0xaddc('0x8'));var sox=require(_0xaddc('0x9'));var csv=require(_0xaddc('0xa'));var ejs=require(_0xaddc('0xb'));var fs=require('fs');var fs_extra=require(_0xaddc('0xc'));var _=require(_0xaddc('0xd'));var squel=require(_0xaddc('0xe'));var crypto=require(_0xaddc('0xf'));var jsforce=require(_0xaddc('0x10'));var deskjs=require(_0xaddc('0x11'));var toCsv=require(_0xaddc('0xa'));var querystring=require(_0xaddc('0x12'));var Papa=require(_0xaddc('0x13'));var Redis=require('ioredis');var authService=require('../../components/auth/service');var qs=require(_0xaddc('0x14'));var as=require(_0xaddc('0x15'));var hardwareService=require('../../config/license/hardware');var logger=require(_0xaddc('0x16'))(_0xaddc('0x17'));var utils=require(_0xaddc('0x18'));var config=require(_0xaddc('0x19'));var licenseUtil=require(_0xaddc('0x1a'));var db=require('../../mysqldb')['db'];config[_0xaddc('0x1b')]=_[_0xaddc('0x1c')](config[_0xaddc('0x1b')],{'host':_0xaddc('0x1d'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0xaddc('0x1b')]));require(_0xaddc('0x1e'))[_0xaddc('0x1f')](socket);function respondWithStatusCode(_0x4a5b5a,_0x540a75){_0x540a75=_0x540a75||0xcc;return function(_0xac303){if(_0xac303){return _0x4a5b5a[_0xaddc('0x20')](_0x540a75);}return _0x4a5b5a[_0xaddc('0x21')](_0x540a75)[_0xaddc('0x22')]();};}function respondWithResult(_0x147a5d,_0x3503ce){_0x3503ce=_0x3503ce||0xc8;return function(_0x19a8de){if(_0x19a8de){return _0x147a5d[_0xaddc('0x21')](_0x3503ce)[_0xaddc('0x23')](_0x19a8de);}};}function respondWithFilteredResult(_0x3639f7,_0x24b9e4){return function(_0x2cc98a){if(_0x2cc98a){var _0x57e54b=typeof _0x24b9e4['offset']===_0xaddc('0x24')&&typeof _0x24b9e4[_0xaddc('0x25')]==='undefined';var _0x3f561a=_0x2cc98a['count'];var _0x417bca=_0x57e54b?0x0:_0x24b9e4[_0xaddc('0x26')];var _0x5aa218=_0x57e54b?_0x2cc98a['count']:_0x24b9e4['offset']+_0x24b9e4[_0xaddc('0x25')];var _0x473dd1;if(_0x5aa218>=_0x3f561a){_0x5aa218=_0x3f561a;_0x473dd1=0xc8;}else{_0x473dd1=0xce;}_0x3639f7[_0xaddc('0x21')](_0x473dd1);return _0x3639f7[_0xaddc('0x27')](_0xaddc('0x28'),_0x417bca+'-'+_0x5aa218+'/'+_0x3f561a)['json'](_0x2cc98a);}return null;};}function patchUpdates(_0x77a468){return function(_0x217381){try{jsonpatch[_0xaddc('0x29')](_0x217381,_0x77a468,!![]);}catch(_0x5ee591){return BPromise['reject'](_0x5ee591);}return _0x217381['save']();};}function saveUpdates(_0x445512,_0x42046d){return function(_0x1d1ab0){if(_0x1d1ab0){return _0x1d1ab0['update'](_0x445512)[_0xaddc('0x2a')](function(_0x58aa3a){return _0x58aa3a;});}return null;};}function removeEntity(_0x68ef8,_0x1397d7){return function(_0x8e22d5){if(_0x8e22d5){return _0x8e22d5[_0xaddc('0x2b')]()[_0xaddc('0x2a')](function(){_0x68ef8[_0xaddc('0x21')](0xcc)[_0xaddc('0x22')]();});}};}function handleEntityNotFound(_0x299c29,_0x5ac8f3){return function(_0x54119d){if(!_0x54119d){_0x299c29[_0xaddc('0x20')](0x194);}return _0x54119d;};}function handleError(_0x76f5bb,_0x3f5110){_0x3f5110=_0x3f5110||0x1f4;return function(_0x55af2b){logger['error'](_0x55af2b['stack']);if(_0x55af2b['name']){delete _0x55af2b[_0xaddc('0x2c')];}_0x76f5bb['status'](_0x3f5110)[_0xaddc('0x2d')](_0x55af2b);};}exports[_0xaddc('0x2e')]=function(_0x431abe,_0x3ff3b0){var _0x62cca5={},_0x23bb55={},_0x22ad9a={'count':0x0,'rows':[]};var _0x1e0b3f=_[_0xaddc('0x2f')](db[_0xaddc('0x30')]['rawAttributes'],function(_0x4b80b2){return{'name':_0x4b80b2[_0xaddc('0x31')],'type':_0x4b80b2[_0xaddc('0x32')][_0xaddc('0x33')]};});_0x23bb55[_0xaddc('0x34')]=_[_0xaddc('0x2f')](_0x1e0b3f,_0xaddc('0x2c'));_0x23bb55[_0xaddc('0x35')]=_['keys'](_0x431abe['query']);_0x23bb55[_0xaddc('0x36')]=_[_0xaddc('0x37')](_0x23bb55[_0xaddc('0x34')],_0x23bb55[_0xaddc('0x35')]);_0x62cca5[_0xaddc('0x38')]=_[_0xaddc('0x37')](_0x23bb55[_0xaddc('0x34')],qs[_0xaddc('0x39')](_0x431abe[_0xaddc('0x35')][_0xaddc('0x39')]));_0x62cca5[_0xaddc('0x38')]=_0x62cca5[_0xaddc('0x38')][_0xaddc('0x3a')]?_0x62cca5[_0xaddc('0x38')]:_0x23bb55[_0xaddc('0x34')];if(!_0x431abe[_0xaddc('0x35')]['hasOwnProperty'](_0xaddc('0x3b'))){_0x62cca5[_0xaddc('0x25')]=qs['limit'](_0x431abe['query']['limit']);_0x62cca5['offset']=qs[_0xaddc('0x26')](_0x431abe[_0xaddc('0x35')][_0xaddc('0x26')]);}_0x62cca5[_0xaddc('0x3c')]=qs[_0xaddc('0x3d')](_0x431abe[_0xaddc('0x35')]['sort']);_0x62cca5[_0xaddc('0x3e')]=qs[_0xaddc('0x36')](_[_0xaddc('0x3f')](_0x431abe[_0xaddc('0x35')],_0x23bb55[_0xaddc('0x36')]),_0x1e0b3f);if(_0x431abe[_0xaddc('0x35')][_0xaddc('0x40')]){_0x62cca5[_0xaddc('0x3e')]=_[_0xaddc('0x41')](_0x62cca5[_0xaddc('0x3e')],{'$or':_[_0xaddc('0x2f')](_0x1e0b3f,function(_0x585a36){if(_0x585a36[_0xaddc('0x32')]!==_0xaddc('0x42')){var _0x1aa47f={};_0x1aa47f[_0x585a36[_0xaddc('0x2c')]]={'$like':'%'+_0x431abe[_0xaddc('0x35')][_0xaddc('0x40')]+'%'};return _0x1aa47f;}})});}_0x62cca5=_['merge']({},_0x62cca5,_0x431abe[_0xaddc('0x43')]);var _0x21d88f={'where':_0x62cca5[_0xaddc('0x3e')]};return db[_0xaddc('0x30')][_0xaddc('0x44')](_0x21d88f)['then'](function(_0x252dec){_0x22ad9a[_0xaddc('0x44')]=_0x252dec;if(_0x431abe[_0xaddc('0x35')][_0xaddc('0x45')]){_0x62cca5[_0xaddc('0x46')]=[{'all':!![]}];}return db[_0xaddc('0x30')][_0xaddc('0x47')](_0x62cca5);})['then'](function(_0x2145b8){_0x22ad9a[_0xaddc('0x48')]=_0x2145b8;return _0x22ad9a;})[_0xaddc('0x2a')](respondWithFilteredResult(_0x3ff3b0,_0x62cca5))[_0xaddc('0x49')](handleError(_0x3ff3b0,null));};exports[_0xaddc('0x4a')]=function(_0x293225,_0x841e03){var _0x249802={'raw':!![],'where':{'id':_0x293225[_0xaddc('0x4b')]['id']}},_0x4c924f={};_0x4c924f[_0xaddc('0x34')]=_[_0xaddc('0x4c')](db[_0xaddc('0x30')][_0xaddc('0x4d')]);_0x4c924f[_0xaddc('0x35')]=_[_0xaddc('0x4c')](_0x293225[_0xaddc('0x35')]);_0x4c924f['filters']=_[_0xaddc('0x37')](_0x4c924f['model'],_0x4c924f[_0xaddc('0x35')]);_0x249802[_0xaddc('0x38')]=_[_0xaddc('0x37')](_0x4c924f['model'],qs[_0xaddc('0x39')](_0x293225[_0xaddc('0x35')][_0xaddc('0x39')]));_0x249802[_0xaddc('0x38')]=_0x249802[_0xaddc('0x38')]['length']?_0x249802[_0xaddc('0x38')]:_0x4c924f[_0xaddc('0x34')];if(_0x293225['query'][_0xaddc('0x45')]){_0x249802['include']=[{'all':!![]}];}_0x249802=_['merge']({},_0x249802,_0x293225[_0xaddc('0x43')]);return db[_0xaddc('0x30')][_0xaddc('0x4e')](_0x249802)[_0xaddc('0x2a')](handleEntityNotFound(_0x841e03,null))['then'](respondWithResult(_0x841e03,null))['catch'](handleError(_0x841e03,null));};exports[_0xaddc('0x4f')]=function(_0x5c609a,_0x2aef40){return db[_0xaddc('0x30')][_0xaddc('0x4f')](_0x5c609a[_0xaddc('0x50')],{})['then'](respondWithResult(_0x2aef40,0xc9))[_0xaddc('0x49')](handleError(_0x2aef40,null));};exports[_0xaddc('0x51')]=function(_0x1bb7af,_0x5a522e){if(_0x1bb7af[_0xaddc('0x50')]['id']){delete _0x1bb7af[_0xaddc('0x50')]['id'];}return db['ChatGroup'][_0xaddc('0x4e')]({'where':{'id':_0x1bb7af[_0xaddc('0x4b')]['id']}})[_0xaddc('0x2a')](handleEntityNotFound(_0x5a522e,null))[_0xaddc('0x2a')](saveUpdates(_0x1bb7af[_0xaddc('0x50')],null))[_0xaddc('0x2a')](respondWithResult(_0x5a522e,null))[_0xaddc('0x49')](handleError(_0x5a522e,null));};exports['destroy']=function(_0x1236e3,_0x2985a1){return db[_0xaddc('0x30')][_0xaddc('0x4e')]({'where':{'id':_0x1236e3[_0xaddc('0x4b')]['id']}})[_0xaddc('0x2a')](handleEntityNotFound(_0x2985a1,null))['then'](removeEntity(_0x2985a1,null))[_0xaddc('0x49')](handleError(_0x2985a1,null));};exports[_0xaddc('0x52')]=function(_0x4286c2,_0x5a6796){return db[_0xaddc('0x30')][_0xaddc('0x52')]()[_0xaddc('0x2a')](respondWithResult(_0x5a6796,null))[_0xaddc('0x49')](handleError(_0x5a6796,null));};exports[_0xaddc('0x53')]=function(_0x41a416,_0x1847aa,_0xbf71e5){return db[_0xaddc('0x54')][_0xaddc('0x44')]({'where':{'ChatGroupId':_0x41a416[_0xaddc('0x4b')]['id'],'ToId':_0x41a416[_0xaddc('0x55')]['id'],'read':![]}})['then'](function(_0x2c9aca){return{'id':_[_0xaddc('0x56')](_0x41a416[_0xaddc('0x4b')]['id']),'count':_0x2c9aca};})[_0xaddc('0x2a')](respondWithResult(_0x1847aa,null))['catch'](handleError(_0x1847aa,null));};exports['addMembers']=function(_0x3e988f,_0x3ef8d1,_0x468da0){return db[_0xaddc('0x30')]['find']({'where':{'id':_0x3e988f[_0xaddc('0x4b')]['id']}})[_0xaddc('0x2a')](handleEntityNotFound(_0x3ef8d1,null))['then'](function(_0x1673af){if(_0x1673af){return _0x1673af[_0xaddc('0x57')](_0x3e988f[_0xaddc('0x50')][_0xaddc('0x58')],_['omit'](_0x3e988f['body'],['ids','id'])||{});}})['then'](respondWithResult(_0x3ef8d1,null))[_0xaddc('0x49')](handleError(_0x3ef8d1,null));};exports[_0xaddc('0x59')]=function(_0x419007,_0x35bd3a,_0x16de3b){var _0x3cee47={};var _0x5387b7={};var _0x9ad2;var _0x4c6004;return db['ChatGroup']['findOne']({'where':{'id':_0x419007[_0xaddc('0x4b')]['id']}})[_0xaddc('0x2a')](handleEntityNotFound(_0x35bd3a,null))['then'](function(_0x51f856){if(_0x51f856){_0x9ad2=_0x51f856;_0x5387b7[_0xaddc('0x34')]=_['keys'](db[_0xaddc('0x5a')]['rawAttributes']);_0x5387b7[_0xaddc('0x35')]=_['keys'](_0x419007[_0xaddc('0x35')]);_0x5387b7['filters']=_[_0xaddc('0x37')](_0x5387b7[_0xaddc('0x34')],_0x5387b7['query']);_0x3cee47[_0xaddc('0x38')]=_[_0xaddc('0x37')](_0x5387b7[_0xaddc('0x34')],qs[_0xaddc('0x39')](_0x419007[_0xaddc('0x35')]['fields']));_0x3cee47[_0xaddc('0x38')]=_0x3cee47[_0xaddc('0x38')][_0xaddc('0x3a')]?_0x3cee47[_0xaddc('0x38')]:_0x5387b7['model'];_0x3cee47['order']=qs[_0xaddc('0x3d')](_0x419007[_0xaddc('0x35')][_0xaddc('0x3d')]);_0x3cee47[_0xaddc('0x3e')]=qs[_0xaddc('0x36')](_[_0xaddc('0x3f')](_0x419007[_0xaddc('0x35')],_0x5387b7[_0xaddc('0x36')]));if(_0x419007[_0xaddc('0x35')][_0xaddc('0x40')]){_0x3cee47[_0xaddc('0x3e')]=_[_0xaddc('0x41')](_0x3cee47[_0xaddc('0x3e')],{'$or':_[_0xaddc('0x2f')](_0x3cee47[_0xaddc('0x38')],function(_0x3b2af5){var _0x36aa31={};_0x36aa31[_0x3b2af5]={'$like':'%'+_0x419007['query'][_0xaddc('0x40')]+'%'};return _0x36aa31;})});}_0x3cee47=_[_0xaddc('0x41')]({},_0x3cee47,_0x419007[_0xaddc('0x43')]);return _0x9ad2[_0xaddc('0x59')](_0x3cee47);}})[_0xaddc('0x2a')](function(_0x4daa16){if(_0x4daa16){_0x4c6004=_0x4daa16[_0xaddc('0x3a')];if(!_0x419007[_0xaddc('0x35')][_0xaddc('0x5b')](_0xaddc('0x3b'))){_0x3cee47[_0xaddc('0x25')]=qs[_0xaddc('0x25')](_0x419007[_0xaddc('0x35')][_0xaddc('0x25')]);_0x3cee47['offset']=qs['offset'](_0x419007['query']['offset']);}return _0x9ad2['getMembers'](_0x3cee47);}})[_0xaddc('0x2a')](function(_0x24998b){if(_0x24998b){return _0x24998b?{'count':_0x4c6004,'rows':_0x24998b}:null;}})[_0xaddc('0x2a')](respondWithResult(_0x35bd3a,null))[_0xaddc('0x49')](handleError(_0x35bd3a,null));};exports[_0xaddc('0x5c')]=function(_0x392604,_0x234ea4,_0x4c614b){return db['ChatGroup']['find']({'where':{'id':_0x392604[_0xaddc('0x4b')]['id']}})['then'](handleEntityNotFound(_0x234ea4,null))[_0xaddc('0x2a')](function(_0x1e913d){if(_0x1e913d){return _0x1e913d[_0xaddc('0x5c')](_0x392604[_0xaddc('0x35')][_0xaddc('0x58')]);}})[_0xaddc('0x2a')](respondWithStatusCode(_0x234ea4,null))['catch'](handleError(_0x234ea4,null));};exports['addMessage']=function(_0xff0543,_0x7573ff,_0x8760ae){if(_0xff0543[_0xaddc('0x50')]['id']){delete _0xff0543['body']['id'];}return db['ChatGroup'][_0xaddc('0x4e')]({'where':{'id':_0xff0543[_0xaddc('0x4b')]['id']}})[_0xaddc('0x2a')](handleEntityNotFound(_0x7573ff,null))[_0xaddc('0x2a')](function(_0x16e76a){if(_0x16e76a){_0xff0543[_0xaddc('0x50')][_0xaddc('0x5d')]=_0x16e76a['id'];return db[_0xaddc('0x54')][_0xaddc('0x4f')](_0xff0543[_0xaddc('0x50')]);}})['then'](respondWithResult(_0x7573ff,null))[_0xaddc('0x49')](handleError(_0x7573ff,null));};exports[_0xaddc('0x5e')]=function(_0x27d769,_0x538481,_0x3685ea){var _0x515039={};var _0x17ea80={};var _0x17a78d;var _0x3a0fe1;return db[_0xaddc('0x30')][_0xaddc('0x5f')]({'where':{'id':_0x27d769[_0xaddc('0x4b')]['id']}})[_0xaddc('0x2a')](handleEntityNotFound(_0x538481,null))['then'](function(_0x2e3953){if(_0x2e3953){_0x17a78d=_0x2e3953;_0x17ea80[_0xaddc('0x34')]=_[_0xaddc('0x4c')](db[_0xaddc('0x54')][_0xaddc('0x4d')]);_0x17ea80[_0xaddc('0x35')]=_['keys'](_0x27d769[_0xaddc('0x35')]);_0x17ea80[_0xaddc('0x36')]=_[_0xaddc('0x37')](_0x17ea80[_0xaddc('0x34')],_0x17ea80[_0xaddc('0x35')]);_0x515039['attributes']=_[_0xaddc('0x37')](_0x17ea80[_0xaddc('0x34')],qs[_0xaddc('0x39')](_0x27d769['query'][_0xaddc('0x39')]));_0x515039[_0xaddc('0x38')]=_0x515039['attributes'][_0xaddc('0x3a')]?_0x515039[_0xaddc('0x38')]:_0x17ea80[_0xaddc('0x34')];_0x515039['order']=qs['sort'](_0x27d769[_0xaddc('0x35')][_0xaddc('0x3d')]);_0x515039['where']=qs[_0xaddc('0x36')](_[_0xaddc('0x3f')](_0x27d769['query'],_0x17ea80['filters']));if(_0x27d769[_0xaddc('0x35')][_0xaddc('0x40')]){_0x515039[_0xaddc('0x3e')]=_[_0xaddc('0x41')](_0x515039[_0xaddc('0x3e')],{'$or':_['map'](_0x515039[_0xaddc('0x38')],function(_0x498453){var _0xf75763={};_0xf75763[_0x498453]={'$like':'%'+_0x27d769['query'][_0xaddc('0x40')]+'%'};return _0xf75763;})});}if(_0x27d769[_0xaddc('0x35')][_0xaddc('0x60')]){var _0x2bbbce=_0x27d769[_0xaddc('0x35')]['$gte'][_0xaddc('0x61')](',');var _0x179d41={};_0x179d41[_0x2bbbce[0x0]]={'$gte':moment(_0x2bbbce[0x1])[_0xaddc('0x62')]('YYYY-MM-DD\x20HH:mm:ss')};_0x515039[_0xaddc('0x3e')]=_[_0xaddc('0x41')](_0x515039['where'],_0x179d41);}_0x515039=_[_0xaddc('0x41')]({},_0x515039,_0x27d769[_0xaddc('0x43')]);return _0x17a78d['getMessages'](_0x515039);}})[_0xaddc('0x2a')](function(_0xa32e54){if(_0xa32e54){_0x3a0fe1=_0xa32e54[_0xaddc('0x3a')];if(!_0x27d769['query'][_0xaddc('0x5b')]('nolimit')){_0x515039[_0xaddc('0x25')]=qs[_0xaddc('0x25')](_0x27d769[_0xaddc('0x35')]['limit']);_0x515039[_0xaddc('0x26')]=qs[_0xaddc('0x26')](_0x27d769[_0xaddc('0x35')][_0xaddc('0x26')]);}return _0x17a78d[_0xaddc('0x5e')](_0x515039);}})[_0xaddc('0x2a')](function(_0x549203){if(_0x549203){return _0x549203?{'count':_0x3a0fe1,'rows':_0x549203}:null;}})[_0xaddc('0x2a')](respondWithResult(_0x538481,null))[_0xaddc('0x49')](handleError(_0x538481,null));};
\ No newline at end of file
index 406ed10..60f3f6e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0x33ad=['update','remove','emit','hasOwnProperty','hook','exports','../../mysqldb','ChatGroup','setMaxListeners','save'];(function(_0x1862f1,_0x5cce5b){var _0x3ded52=function(_0x4fb795){while(--_0x4fb795){_0x1862f1['push'](_0x1862f1['shift']());}};_0x3ded52(++_0x5cce5b);}(_0x33ad,0x74));var _0xd33a=function(_0x296d77,_0x2cced8){_0x296d77=_0x296d77-0x0;var _0x286a86=_0x33ad[_0x296d77];return _0x286a86;};'use strict';var EventEmitter=require('events');var ChatGroup=require(_0xd33a('0x0'))['db'][_0xd33a('0x1')];var ChatGroupEvents=new EventEmitter();ChatGroupEvents[_0xd33a('0x2')](0x0);var events={'afterCreate':_0xd33a('0x3'),'afterUpdate':_0xd33a('0x4'),'afterDestroy':_0xd33a('0x5')};function emitEvent(_0x3a7f6d){return function(_0x5bdf83,_0x54a345,_0x5ce2b9){ChatGroupEvents['emit'](_0x3a7f6d+':'+_0x5bdf83['id'],_0x5bdf83);ChatGroupEvents[_0xd33a('0x6')](_0x3a7f6d,_0x5bdf83);_0x5ce2b9(null);};}for(var e in events){if(events[_0xd33a('0x7')](e)){var event=events[e];ChatGroup[_0xd33a('0x8')](e,emitEvent(event));}}module[_0xd33a('0x9')]=ChatGroupEvents;
\ No newline at end of file
index aa9ed11..3ad9a7f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0xb56d=['exports','define','ChatGroup','util','api','moment','rimraf','../../config/environment'];(function(_0x2e0cd9,_0x21d18b){var _0x5ec39c=function(_0x43c9ae){while(--_0x43c9ae){_0x2e0cd9['push'](_0x2e0cd9['shift']());}};_0x5ec39c(++_0x21d18b);}(_0xb56d,0x113));var _0xdb56=function(_0x2e7aca,_0x3fd49e){_0x2e7aca=_0x2e7aca-0x0;var _0x44604f=_0xb56d[_0x2e7aca];return _0x44604f;};'use strict';var _=require('lodash');var util=require(_0xdb56('0x0'));var logger=require('../../config/logger')(_0xdb56('0x1'));var moment=require(_0xdb56('0x2'));var BPromise=require('bluebird');var rp=require('request-promise');var fs=require('fs');var path=require('path');var rimraf=require(_0xdb56('0x3'));var config=require(_0xdb56('0x4'));var attributes=require('./chatGroup.attributes');module[_0xdb56('0x5')]=function(_0x3366ea,_0x3821b6){return _0x3366ea[_0xdb56('0x6')](_0xdb56('0x7'),attributes,{'tableName':'chat_groups','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 8dfb19b..0c917ea 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0x95d9=['../../mysqldb','../../config/utils','rpc','../../config/environment','jayson/promise','client','http','defaults','redis','localhost','socket.io-emitter','./chatGroup.socket','info','ChatGroup,\x20%s,\x20%s','request\x20sent','debug','stringify','error','message','result','catch','lodash','util','moment','bluebird','ioredis'];(function(_0x2cf80b,_0x2ccf34){var _0x250a0b=function(_0x37de18){while(--_0x37de18){_0x2cf80b['push'](_0x2cf80b['shift']());}};_0x250a0b(++_0x2ccf34);}(_0x95d9,0x97));var _0x995d=function(_0xa6cc5c,_0x239c99){_0xa6cc5c=_0xa6cc5c-0x0;var _0x44803d=_0x95d9[_0xa6cc5c];return _0x44803d;};'use strict';var _=require(_0x995d('0x0'));var util=require(_0x995d('0x1'));var moment=require(_0x995d('0x2'));var BPromise=require(_0x995d('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x995d('0x4'));var db=require(_0x995d('0x5'))['db'];var utils=require(_0x995d('0x6'));var logger=require('../../config/logger')(_0x995d('0x7'));var config=require(_0x995d('0x8'));var jayson=require(_0x995d('0x9'));var client=jayson[_0x995d('0xa')][_0x995d('0xb')]({'port':0x232a});config['redis']=_[_0x995d('0xc')](config[_0x995d('0xd')],{'host':_0x995d('0xe'),'port':0x18eb});var socket=require(_0x995d('0xf'))(new Redis(config[_0x995d('0xd')]));require(_0x995d('0x10'))['register'](socket);function respondWithRpcPromise(_0x1c9cde,_0xb39b30,_0x62ee7){return new BPromise(function(_0x53f102,_0x546cfa){return client['request'](_0x1c9cde,_0x62ee7)['then'](function(_0x26fac1){logger[_0x995d('0x11')](_0x995d('0x12'),_0xb39b30,_0x995d('0x13'));logger[_0x995d('0x14')]('ChatGroup,\x20%s,\x20%s,\x20%s',_0xb39b30,_0x995d('0x13'),JSON[_0x995d('0x15')](_0x26fac1));if(_0x26fac1[_0x995d('0x16')]){if(_0x26fac1[_0x995d('0x16')]['code']===0x1f4){logger[_0x995d('0x16')]('ChatGroup,\x20%s,\x20%s',_0xb39b30,_0x26fac1[_0x995d('0x16')]['message']);return _0x546cfa(_0x26fac1['error'][_0x995d('0x17')]);}logger[_0x995d('0x16')](_0x995d('0x12'),_0xb39b30,_0x26fac1[_0x995d('0x16')][_0x995d('0x17')]);return _0x53f102(_0x26fac1[_0x995d('0x16')][_0x995d('0x17')]);}else{logger[_0x995d('0x11')](_0x995d('0x12'),_0xb39b30,_0x995d('0x13'));_0x53f102(_0x26fac1[_0x995d('0x18')][_0x995d('0x17')]);}})[_0x995d('0x19')](function(_0x3c9562){logger[_0x995d('0x16')](_0x995d('0x12'),_0xb39b30,_0x3c9562);_0x546cfa(_0x3c9562);});});}
\ No newline at end of file
index 9cf59e0..d98d3c5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0xc6c7=['remove','update','emit','removeListener','register','length','./chatGroup.events','save'];(function(_0x2944f2,_0x395eba){var _0x209e64=function(_0xe3aef0){while(--_0xe3aef0){_0x2944f2['push'](_0x2944f2['shift']());}};_0x209e64(++_0x395eba);}(_0xc6c7,0x1b6));var _0x7c6c=function(_0x336ca2,_0x1a813a){_0x336ca2=_0x336ca2-0x0;var _0xda59a6=_0xc6c7[_0x336ca2];return _0xda59a6;};'use strict';var ChatGroupEvents=require(_0x7c6c('0x0'));var events=[_0x7c6c('0x1'),_0x7c6c('0x2'),_0x7c6c('0x3')];function createListener(_0x3836e4,_0x588fbf){return function(_0x17e5d3){_0x588fbf[_0x7c6c('0x4')](_0x3836e4,_0x17e5d3);};}function removeListener(_0x5eb15e,_0x307dca){return function(){ChatGroupEvents[_0x7c6c('0x5')](_0x5eb15e,_0x307dca);};}exports[_0x7c6c('0x6')]=function(_0x49033e){for(var _0x3bacaf=0x0,_0x530819=events[_0x7c6c('0x7')];_0x3bacaf<_0x530819;_0x3bacaf++){var _0x138349=events[_0x3bacaf];var _0x4e6e6b=createListener('chatGroup:'+_0x138349,_0x49033e);ChatGroupEvents['on'](_0x138349,_0x4e6e6b);}};
\ No newline at end of file
index c1c2149..74794b2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0x100a=['index','/:id','show','/:id/unread','getMembers','/:id/messages','getMessages','addMembers','post','put','delete','destroy','removeMembers','multer','util','path','connect-timeout','express','Router','fs-extra','../../components/interaction/service','../../config/environment','./chatGroup.controller','get','isAuthenticated'];(function(_0xd1da52,_0x296da7){var _0x5cc9b6=function(_0x428ff5){while(--_0x428ff5){_0xd1da52['push'](_0xd1da52['shift']());}};_0x5cc9b6(++_0x296da7);}(_0x100a,0x152));var _0xa100=function(_0x2e5e21,_0x5d776a){_0x2e5e21=_0x2e5e21-0x0;var _0x53d50b=_0x100a[_0x2e5e21];return _0x53d50b;};'use strict';var multer=require(_0xa100('0x0'));var util=require(_0xa100('0x1'));var path=require(_0xa100('0x2'));var timeout=require(_0xa100('0x3'));var express=require(_0xa100('0x4'));var router=express[_0xa100('0x5')]();var fs_extra=require(_0xa100('0x6'));var auth=require('../../components/auth/service');var interaction=require(_0xa100('0x7'));var config=require(_0xa100('0x8'));var controller=require(_0xa100('0x9'));router[_0xa100('0xa')]('/',auth[_0xa100('0xb')](),controller[_0xa100('0xc')]);router['get']('/describe',auth[_0xa100('0xb')](),controller['describe']);router['get'](_0xa100('0xd'),auth[_0xa100('0xb')](),controller[_0xa100('0xe')]);router[_0xa100('0xa')](_0xa100('0xf'),auth[_0xa100('0xb')](),controller['getUnread']);router['get']('/:id/members',auth['isAuthenticated'](),controller[_0xa100('0x10')]);router[_0xa100('0xa')](_0xa100('0x11'),auth[_0xa100('0xb')](),controller[_0xa100('0x12')]);router['post']('/',auth[_0xa100('0xb')](),controller['create']);router['post']('/:id/members',auth['isAuthenticated'](),controller[_0xa100('0x13')]);router[_0xa100('0x14')](_0xa100('0x11'),auth[_0xa100('0xb')](),controller['addMessage']);router[_0xa100('0x15')](_0xa100('0xd'),auth[_0xa100('0xb')](),controller['update']);router[_0xa100('0x16')]('/:id',auth[_0xa100('0xb')](),controller[_0xa100('0x17')]);router[_0xa100('0x16')]('/:id/members',auth['isAuthenticated'](),controller[_0xa100('0x18')]);module['exports']=router;
\ No newline at end of file
index 1bea39d..1e2941c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0xa699=['INTEGER','ENUM','star','thumb','TEXT','STRING','DATE','long','sequelize','exports','BOOLEAN'];(function(_0xd1a252,_0x16396f){var _0x560ee1=function(_0x35dd90){while(--_0x35dd90){_0xd1a252['push'](_0xd1a252['shift']());}};_0x560ee1(++_0x16396f);}(_0xa699,0x6b));var _0x9a69=function(_0x37b3e5,_0x33b516){_0x37b3e5=_0x37b3e5-0x0;var _0x207f20=_0xa699[_0x37b3e5];return _0x207f20;};'use strict';var Sequelize=require(_0x9a69('0x0'));module[_0x9a69('0x1')]={'closed':{'type':Sequelize[_0x9a69('0x2')],'defaultValue':![]},'ratingValue':{'type':Sequelize[_0x9a69('0x3')]},'ratingType':{'type':Sequelize[_0x9a69('0x4')](_0x9a69('0x5'),_0x9a69('0x6')),'defaultValue':_0x9a69('0x5')},'ratingMessage':{'type':Sequelize[_0x9a69('0x7')]},'pathTranscript':{'type':Sequelize[_0x9a69('0x7')]},'mailTranscript':{'type':Sequelize[_0x9a69('0x8')],'validate':{'isEmail':!![]}},'closedAt':{'type':Sequelize[_0x9a69('0x9')]},'disposition':{'type':Sequelize[_0x9a69('0x8')]},'secondDisposition':{'type':Sequelize['STRING']},'thirdDisposition':{'type':Sequelize[_0x9a69('0x8')]},'note':{'type':Sequelize[_0x9a69('0x8')]},'browserName':{'type':Sequelize[_0x9a69('0x8')]},'browserVersion':{'type':Sequelize[_0x9a69('0x8')]},'osName':{'type':Sequelize['STRING']},'osVersion':{'type':Sequelize[_0x9a69('0x8')]},'deviceModel':{'type':Sequelize[_0x9a69('0x8')]},'deviceVendor':{'type':Sequelize[_0x9a69('0x8')]},'deviceType':{'type':Sequelize[_0x9a69('0x8')]},'referer':{'type':Sequelize[_0x9a69('0x7')]},'customerIp':{'type':Sequelize['STRING']},'formData':{'type':Sequelize['TEXT'](_0x9a69('0xa'))},'read1stAt':{'type':Sequelize['DATE']},'lastMsgAt':{'type':Sequelize[_0x9a69('0x9')]},'lastMsgDirection':{'type':Sequelize[_0x9a69('0x4')]('in','out'),'defaultValue':'in','allowNull':![]},'closeReason':{'type':Sequelize[_0x9a69('0x8')]},'customerPort':{'type':Sequelize[_0x9a69('0x8')]},'vidaooSessionId':{'type':Sequelize['TEXT']},'autoreplyExecuted':{'type':Sequelize[_0x9a69('0x2')],'defaultValue':![]}};
\ No newline at end of file
index c44a4c7..cdf3ceb 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0x7cfb=['Account','Owner','mkdirSync','Chat','N.A.','toString','osName','referer','customerIp','customerPort','tail','existsSync','pipe','createWriteStream','out','value','renderFile','views','transcript-','createPdfFromHTML','err','rimraf','zip-dir','request-promise','moment','bluebird','mustache','ejs','ioredis','../../components/interaction/service','../../components/parsers/qs','../../config/logger','api','../../config/environment','../../mysqldb','defaults','redis','localhost','socket.io-emitter','register','jayson/promise','client','http','request','then','info','ChatInteraction,\x20%s,\x20%s','debug','ChatInteraction,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','code','message','result','catch','sendStatus','status','end','offset','undefined','limit','count','set','Content-Range','update','destroy','stack','name','render','merge','body','agent','interaction','map','ChatInteraction','rawAttributes','type','getOptions','findAll','user','show','keys','query','filters','intersection','model','fields','attributes','include','options','find','create','params','describe','createVidaooSession','findOne','ChatWebsite','ChatWebsiteId','vidaooApiKey','vidaooEscalation','vidaooTopic','vidaooNote','vidaooMetadata','fullname','email','contact','POST','https://api-vidaoo.xcally.com/api/v1/meetings','follow','isNull','parse','metadata','Sequelize','ValidationError','Error\x20in\x20conversion\x20vidaooMetadata','Error\x20in\x20Vidaoo\x20configuration','join_url','ChatMessage','Unable\x20to\x20create\x20Vidaoo\x20session','updateAttributes','customUpdate','CmContact','abandon','entity\x20not\x20found','UserId','Interaction\x20already\x20assigned','closed','disposition','AbandonInteraction','file','originalname','basename','mimetype','attachmentDownload','json','ChatOfflineMessageId','join','root','server/files/attachments/','offline-chat/','download','close','server/files/chat/upload/','format','now','Messages','User','ContactId','length','%s%d','customer','agentIdentifier','website_alias','agentAlias','agent_alias','alias','System','agent_fullname','[%s]\x20%s:\x20%s\x0a','createdAt','MM/DD/YYYY\x20HH:mm:ss','direction','secret','MailAccount','MailServerOut','Smtp','CloudProvider','SendMail','sendMail','\x22%s\x22\x20<%s>','mailTranscript','Hi\x20%s,\x20attached\x20you\x20can\x20find\x20your\x20transcript\x20file.\x20\x0a\x0aRegards.\x20\x0a\x0a','addMessage','ids','omit','getMessages','hasOwnProperty','nolimit','order','sort','where','pick','ChatInteractionId','filter','$gte','YYYY-MM-DD\x20HH:mm:ss','includeAll','getMyMessages','includeAgent','push','rows','addTags','spread','color','emit','removeTags','server','files','Contact','firstName','lastName','Attachment','read'];(function(_0x14add3,_0x13ce8d){var _0x4a174f=function(_0x2b3ed7){while(--_0x2b3ed7){_0x14add3['push'](_0x14add3['shift']());}};_0x4a174f(++_0x13ce8d);}(_0x7cfb,0xe1));var _0xb7cf=function(_0x719b73,_0x222048){_0x719b73=_0x719b73-0x0;var _0x2973cb=_0x7cfb[_0x719b73];return _0x2973cb;};'use strict';var rimraf=require(_0xb7cf('0x0'));var zipdir=require(_0xb7cf('0x1'));var rp=require(_0xb7cf('0x2'));var moment=require(_0xb7cf('0x3'));var BPromise=require(_0xb7cf('0x4'));var Mustache=require(_0xb7cf('0x5'));var util=require('util');var path=require('path');var ejs=require(_0xb7cf('0x6'));var fs=require('fs');var _=require('lodash');var Redis=require(_0xb7cf('0x7'));var interaction=require(_0xb7cf('0x8'));var qs=require(_0xb7cf('0x9'));var pdf=require('../../components/export/pdf');var logger=require(_0xb7cf('0xa'))(_0xb7cf('0xb'));var config=require(_0xb7cf('0xc'));var db=require(_0xb7cf('0xd'))['db'];config['redis']=_[_0xb7cf('0xe')](config[_0xb7cf('0xf')],{'host':_0xb7cf('0x10'),'port':0x18eb});var socket=require(_0xb7cf('0x11'))(new Redis(config[_0xb7cf('0xf')]));require('./chatInteraction.socket')[_0xb7cf('0x12')](socket);var jayson=require(_0xb7cf('0x13'));var client=jayson[_0xb7cf('0x14')]['http']({'port':0x232b});var client9004=jayson[_0xb7cf('0x14')][_0xb7cf('0x15')]({'port':0x232c});function respondWithRpcPromise(_0x24efe9,_0x21bf7a,_0x2c2369,_0x3c802e){return new BPromise(function(_0x5d5bb2,_0x1f1506){var _0xe5b4ff=_0x3c802e||client;return _0xe5b4ff[_0xb7cf('0x16')](_0x24efe9,_0x2c2369)[_0xb7cf('0x17')](function(_0x436184){logger[_0xb7cf('0x18')](_0xb7cf('0x19'),_0x21bf7a,'request\x20sent');logger[_0xb7cf('0x1a')](_0xb7cf('0x1b'),_0x21bf7a,_0xb7cf('0x1c'),JSON[_0xb7cf('0x1d')](_0x436184));if(_0x436184['error']){if(_0x436184[_0xb7cf('0x1e')][_0xb7cf('0x1f')]===0x1f4){logger[_0xb7cf('0x1e')](_0xb7cf('0x19'),_0x21bf7a,_0x436184[_0xb7cf('0x1e')][_0xb7cf('0x20')]);return _0x1f1506(_0x436184['error'][_0xb7cf('0x20')]);}logger[_0xb7cf('0x1e')](_0xb7cf('0x19'),_0x21bf7a,_0x436184['error']['message']);return _0x5d5bb2(_0x436184[_0xb7cf('0x1e')][_0xb7cf('0x20')]);}else{logger[_0xb7cf('0x18')](_0xb7cf('0x19'),_0x21bf7a,_0xb7cf('0x1c'));_0x5d5bb2(_0x436184[_0xb7cf('0x21')][_0xb7cf('0x20')]);}})[_0xb7cf('0x22')](function(_0x5f35cc){logger[_0xb7cf('0x1e')](_0xb7cf('0x19'),_0x21bf7a,_0x5f35cc);_0x1f1506(_0x5f35cc);});});}function respondWithStatusCode(_0x3f295a,_0x44e63f){_0x44e63f=_0x44e63f||0xcc;return function(_0x28e183){if(_0x28e183){return _0x3f295a[_0xb7cf('0x23')](_0x44e63f);}return _0x3f295a[_0xb7cf('0x24')](_0x44e63f)[_0xb7cf('0x25')]();};}function respondWithResult(_0x24dc64,_0x5d5edd){_0x5d5edd=_0x5d5edd||0xc8;return function(_0x39e63f){if(_0x39e63f){return _0x24dc64[_0xb7cf('0x24')](_0x5d5edd)['json'](_0x39e63f);}};}function respondWithFilteredResult(_0x129ec4,_0x8b68ee){return function(_0x2fd490){if(_0x2fd490){var _0x85d49=typeof _0x8b68ee[_0xb7cf('0x26')]===_0xb7cf('0x27')&&typeof _0x8b68ee[_0xb7cf('0x28')]===_0xb7cf('0x27');var _0x2cd34a=_0x2fd490[_0xb7cf('0x29')];var _0x599ccf=_0x85d49?0x0:_0x8b68ee[_0xb7cf('0x26')];var _0x29a160=_0x85d49?_0x2fd490[_0xb7cf('0x29')]:_0x8b68ee[_0xb7cf('0x26')]+_0x8b68ee[_0xb7cf('0x28')];var _0x10819a;if(_0x29a160>=_0x2cd34a){_0x29a160=_0x2cd34a;_0x10819a=0xc8;}else{_0x10819a=0xce;}_0x129ec4['status'](_0x10819a);return _0x129ec4[_0xb7cf('0x2a')](_0xb7cf('0x2b'),_0x599ccf+'-'+_0x29a160+'/'+_0x2cd34a)['json'](_0x2fd490);}return null;};}function saveUpdates(_0x66678e){return function(_0x15f9f4){if(_0x15f9f4){return _0x15f9f4[_0xb7cf('0x2c')](_0x66678e)[_0xb7cf('0x17')](function(_0x5018da){return _0x5018da;});}return null;};}function removeEntity(_0x385de8){return function(_0x47c8d6){if(_0x47c8d6){return _0x47c8d6[_0xb7cf('0x2d')]()[_0xb7cf('0x17')](function(){_0x385de8[_0xb7cf('0x24')](0xcc)[_0xb7cf('0x25')]();});}};}function handleEntityNotFound(_0xefaca0){return function(_0x10a700){if(!_0x10a700){_0xefaca0['sendStatus'](0x194);}return _0x10a700;};}function handleError(_0x471c89,_0x7368d7){_0x7368d7=_0x7368d7||0x1f4;return function(_0x44e75f){logger['error'](_0x44e75f[_0xb7cf('0x2e')]);if(_0x44e75f['name']){delete _0x44e75f[_0xb7cf('0x2f')];}_0x471c89[_0xb7cf('0x24')](_0x7368d7)['send'](_0x44e75f);};}function getMustacheRender(_0xe0ead8,_0x12c92c){return Mustache[_0xb7cf('0x30')](_0xe0ead8,_[_0xb7cf('0x31')](_0x12c92c[_0xb7cf('0x32')],{'contact':_0x12c92c['contact'],'message':_0x12c92c[_0xb7cf('0x20')],'agent':_0x12c92c[_0xb7cf('0x33')],'interaction':_0x12c92c[_0xb7cf('0x34')],'account':_0x12c92c['account']}))||'';}exports['index']=function(_0x5136ca,_0x22484f){var _0x5e80f2={};var _0x55dfb8=_[_0xb7cf('0x35')](db[_0xb7cf('0x36')][_0xb7cf('0x37')],function(_0x18a32b){return{'name':_0x18a32b['fieldName'],'type':_0x18a32b[_0xb7cf('0x38')]['key']};});_0x5e80f2=qs[_0xb7cf('0x39')](_0x55dfb8,_0x5136ca);return interaction[_0xb7cf('0x3a')]('chat',_0x5136ca['query'],_0x5136ca[_0xb7cf('0x3b')],_0x5e80f2,_0x55dfb8)[_0xb7cf('0x17')](respondWithFilteredResult(_0x22484f,_0x5e80f2))[_0xb7cf('0x22')](handleError(_0x22484f,null));};exports[_0xb7cf('0x3c')]=function(_0x5a15f2,_0x2b790d){var _0xe1b78={'raw':![],'where':{'id':_0x5a15f2['params']['id']}},_0x229c07={};_0x229c07['model']=_[_0xb7cf('0x3d')](db[_0xb7cf('0x36')][_0xb7cf('0x37')]);_0x229c07['query']=_[_0xb7cf('0x3d')](_0x5a15f2[_0xb7cf('0x3e')]);_0x229c07[_0xb7cf('0x3f')]=_[_0xb7cf('0x40')](_0x229c07[_0xb7cf('0x41')],_0x229c07[_0xb7cf('0x3e')]);_0xe1b78['attributes']=_[_0xb7cf('0x40')](_0x229c07[_0xb7cf('0x41')],qs['fields'](_0x5a15f2['query'][_0xb7cf('0x42')]));_0xe1b78[_0xb7cf('0x43')]=_0xe1b78[_0xb7cf('0x43')]['length']?_0xe1b78['attributes']:_0x229c07[_0xb7cf('0x41')];if(_0x5a15f2[_0xb7cf('0x3e')]['includeAll']){_0xe1b78[_0xb7cf('0x44')]=[{'all':!![]}];}_0xe1b78=_['merge']({},_0xe1b78,_0x5a15f2[_0xb7cf('0x45')]);return db[_0xb7cf('0x36')][_0xb7cf('0x46')](_0xe1b78)['then'](handleEntityNotFound(_0x2b790d,null))['then'](respondWithResult(_0x2b790d,null))[_0xb7cf('0x22')](handleError(_0x2b790d,null));};exports[_0xb7cf('0x47')]=function(_0x8f1452,_0x35b0ac){return db['ChatInteraction'][_0xb7cf('0x47')](_0x8f1452[_0xb7cf('0x32')],{})[_0xb7cf('0x17')](respondWithResult(_0x35b0ac,0xc9))[_0xb7cf('0x22')](handleError(_0x35b0ac,null));};exports[_0xb7cf('0x2c')]=function(_0xe50785,_0x4f9ca9){if(_0xe50785['body']['id']){delete _0xe50785[_0xb7cf('0x32')]['id'];}return db[_0xb7cf('0x36')][_0xb7cf('0x46')]({'where':{'id':_0xe50785[_0xb7cf('0x48')]['id']}})[_0xb7cf('0x17')](handleEntityNotFound(_0x4f9ca9,null))[_0xb7cf('0x17')](saveUpdates(_0xe50785[_0xb7cf('0x32')],null))[_0xb7cf('0x17')](respondWithResult(_0x4f9ca9,null))[_0xb7cf('0x22')](handleError(_0x4f9ca9,null));};exports[_0xb7cf('0x2d')]=function(_0x59dd4f,_0x7a8e70){return db['ChatInteraction'][_0xb7cf('0x46')]({'where':{'id':_0x59dd4f[_0xb7cf('0x48')]['id']}})['then'](handleEntityNotFound(_0x7a8e70,null))[_0xb7cf('0x17')](removeEntity(_0x7a8e70,null))[_0xb7cf('0x22')](handleError(_0x7a8e70,null));};exports['describe']=function(_0x4674e8,_0x43a0de){return db[_0xb7cf('0x36')][_0xb7cf('0x49')]()[_0xb7cf('0x17')](respondWithResult(_0x43a0de,null))[_0xb7cf('0x22')](handleError(_0x43a0de,null));};exports[_0xb7cf('0x4a')]=function(_0x5148d0,_0x56acca){var _0x24f032=_0x5148d0[_0xb7cf('0x48')]['id'];var _0x13a332;var _0x1229e3;var _0x7b0bc;return db[_0xb7cf('0x36')][_0xb7cf('0x4b')]({'where':{'id':_0x24f032}})[_0xb7cf('0x17')](function(_0x423311){_0x13a332=_0x423311;return db[_0xb7cf('0x4c')][_0xb7cf('0x4b')]({'where':{'id':_0x423311[_0xb7cf('0x4d')]},'attributes':['id',_0xb7cf('0x4e'),_0xb7cf('0x4f'),_0xb7cf('0x50'),_0xb7cf('0x51'),_0xb7cf('0x52')],'raw':!![]});})[_0xb7cf('0x17')](function(_0x4b509a){if(_0x4b509a&&_0x4b509a[_0xb7cf('0x4e')]&&_0x4b509a[_0xb7cf('0x4f')]){_0x1229e3=_0x4b509a;var _0x4ca65e={'interaction':{'id':_0x24f032},'agent':{'id':_0x5148d0['user']['id'],'name':_0x5148d0[_0xb7cf('0x3b')][_0xb7cf('0x2f')],'fullname':_0x5148d0[_0xb7cf('0x3b')][_0xb7cf('0x53')],'email':_0x5148d0[_0xb7cf('0x3b')][_0xb7cf('0x54')]},'contact':_0x5148d0[_0xb7cf('0x32')][_0xb7cf('0x55')],'account':_0x5148d0['body']['account']};var _0xfbdcdf={'rejectUnauthorized':![],'method':_0xb7cf('0x56'),'url':_0xb7cf('0x57'),'headers':{'X-APIKEY':_0x4b509a[_0xb7cf('0x4e')]},'body':{'duration':null,'scheduledAt':null,'participants':[_0x5148d0['user'][_0xb7cf('0x54')]],'buttons':null,'topic':_0x1229e3[_0xb7cf('0x50')],'note':_['isNull'](_0x1229e3[_0xb7cf('0x51')])?null:getMustacheRender(_0x1229e3['vidaooNote'],_0x4ca65e),'metadata':null},'redirect':_0xb7cf('0x58'),'json':!![]};try{if(!_[_0xb7cf('0x59')](_0x1229e3[_0xb7cf('0x52')])){var _0x10ed10=getMustacheRender(_0x1229e3[_0xb7cf('0x52')],_0x4ca65e);var _0x43f27e=JSON[_0xb7cf('0x5a')](_0x10ed10);_0xfbdcdf['body'][_0xb7cf('0x5b')]=_0x43f27e;}}catch(_0xc532be){throw new db[(_0xb7cf('0x5c'))][(_0xb7cf('0x5d'))](_0xb7cf('0x5e'));}return rp(_0xfbdcdf);}else{throw new db[(_0xb7cf('0x5c'))][(_0xb7cf('0x5d'))](_0xb7cf('0x5f'));}})[_0xb7cf('0x17')](function(_0x25083b){_0x7b0bc=_0x25083b;if(_0x7b0bc['id']){var _0xb66fdd={'body':_0x7b0bc[_0xb7cf('0x60')],'ChatWebsiteId':_0x1229e3['id'],'ChatInteractionId':_0x13a332['id'],'direction':'out','UserId':_0x5148d0[_0xb7cf('0x3b')]['id']};return db[_0xb7cf('0x61')][_0xb7cf('0x47')](_0xb66fdd,{});}else{throw new db[(_0xb7cf('0x5c'))]['ValidationError'](_0xb7cf('0x62'));}})['then'](function(){return _0x13a332[_0xb7cf('0x63')]({'vidaooSessionId':_0x7b0bc['id']});})[_0xb7cf('0x17')](respondWithResult(_0x56acca,null))[_0xb7cf('0x22')](handleError(_0x56acca,null));};exports[_0xb7cf('0x64')]=function(_0x469a65,_0x347c01){if(_0x469a65[_0xb7cf('0x32')]['id']){delete _0x469a65[_0xb7cf('0x32')]['id'];}return db[_0xb7cf('0x36')]['find']({'where':{'id':_0x469a65['params']['id']},'include':[{'model':db[_0xb7cf('0x65')],'as':'Contact'}]})[_0xb7cf('0x17')](handleEntityNotFound(_0x347c01,null))['then'](saveUpdates(_0x469a65[_0xb7cf('0x32')],null))['then'](respondWithResult(_0x347c01,null))[_0xb7cf('0x22')](handleError(_0x347c01,null));};exports[_0xb7cf('0x66')]=function(_0x4b4af8,_0x4bbe85){if(_0x4b4af8[_0xb7cf('0x32')]['id']){delete _0x4b4af8[_0xb7cf('0x32')]['id'];}return db[_0xb7cf('0x36')][_0xb7cf('0x46')]({'where':{'id':_0x4b4af8[_0xb7cf('0x48')]['id']}})['then'](function(_0x188332){if(!_0x188332){logger['error']('abandonInteraction,\x20%s,\x20%s,\x20%s',_0xb7cf('0x66'),0x194,_0xb7cf('0x67'));_0x4bbe85[_0xb7cf('0x23')](0x194);}else{if(_0x188332[_0xb7cf('0x68')]){throw new db['Sequelize'][(_0xb7cf('0x5d'))](_0xb7cf('0x69'));}}return _0x188332;})['then'](function(_0x4c2c42){if(_0x4c2c42){return _0x4c2c42[_0xb7cf('0x2c')]({'closed':_0x4b4af8['body'][_0xb7cf('0x6a')],'disposition':_0x4b4af8[_0xb7cf('0x32')][_0xb7cf('0x6b')]})[_0xb7cf('0x17')](function(_0x41bb41){return _0x41bb41;});}})['then'](function(){return respondWithRpcPromise(_0xb7cf('0x6c'),_0xb7cf('0x66'),_0x4b4af8[_0xb7cf('0x32')],client9004);})[_0xb7cf('0x17')](respondWithResult(_0x4bbe85,null))[_0xb7cf('0x22')](handleError(_0x4bbe85,null));};exports['attachmentUpload']=function(_0x23ea88,_0x191031){_0x23ea88[_0xb7cf('0x32')][_0xb7cf('0x2f')]=_0x23ea88[_0xb7cf('0x6d')][_0xb7cf('0x6e')];_0x23ea88[_0xb7cf('0x32')][_0xb7cf('0x6f')]=_0x23ea88[_0xb7cf('0x6d')]['filename'];_0x23ea88[_0xb7cf('0x32')]['type']=_0x23ea88[_0xb7cf('0x6d')][_0xb7cf('0x70')];return db['Attachment'][_0xb7cf('0x47')](_0x23ea88[_0xb7cf('0x32')])['then'](respondWithResult(_0x191031,0xc9))['catch'](handleError(_0x191031,null));};exports[_0xb7cf('0x71')]=function(_0x39a324,_0x5bdfe0){return db[_0xb7cf('0x36')]['findOne']({'where':{'id':_0x39a324[_0xb7cf('0x48')]['id']},'raw':!![]})[_0xb7cf('0x17')](handleEntityNotFound(_0x5bdfe0,null))[_0xb7cf('0x17')](function(_0x3af6bf){if(_0x3af6bf){if(_0x3af6bf[_0xb7cf('0x6a')]){return _0x5bdfe0['status'](0x193)[_0xb7cf('0x72')]({'status':0x193,'message':'Unauthorized'});}return db['Attachment'][_0xb7cf('0x4b')]({'where':{'id':_0x39a324[_0xb7cf('0x3e')]['attachId']},'raw':!![]})['then'](handleEntityNotFound(_0x5bdfe0,null));}})[_0xb7cf('0x17')](function(_0x6a38f7){if(_0x6a38f7){var _0x5cad79=_0x6a38f7[_0xb7cf('0x73')]!==null;var _0x23eedc=path[_0xb7cf('0x74')](config[_0xb7cf('0x75')],_0xb7cf('0x76'));if(_0x5cad79){_0x23eedc=path[_0xb7cf('0x74')](_0x23eedc,_0xb7cf('0x77'));}var _0xc4b8b=path[_0xb7cf('0x74')](_0x23eedc,_0x6a38f7[_0xb7cf('0x6f')]);return _0x5bdfe0[_0xb7cf('0x78')](_0xc4b8b);}})['catch'](handleError(_0x5bdfe0,null));};exports[_0xb7cf('0x79')]=function(_0x356e5d,_0x5affbd){var _0x188213=null;var _0x1056aa=null;var _0x3f686f=null;if(_0x356e5d[_0xb7cf('0x32')]['id']){delete _0x356e5d[_0xb7cf('0x32')]['id'];}if(_0x356e5d[_0xb7cf('0x32')]['mailTranscript']){_0x3f686f=path[_0xb7cf('0x74')](config[_0xb7cf('0x75')],_0xb7cf('0x7a'),util[_0xb7cf('0x7b')]('transcript-%s.txt',Date[_0xb7cf('0x7c')]()));_0x356e5d[_0xb7cf('0x32')]['pathTranscript']=_0x3f686f;}return db[_0xb7cf('0x36')][_0xb7cf('0x46')]({'where':{'id':_0x356e5d[_0xb7cf('0x48')]['id']},'include':[{'model':db[_0xb7cf('0x61')],'as':_0xb7cf('0x7d'),'include':[{'model':db[_0xb7cf('0x7e')],'as':_0xb7cf('0x7e')}]}]})[_0xb7cf('0x17')](handleEntityNotFound(_0x5affbd,null))[_0xb7cf('0x17')](saveUpdates(_0x356e5d[_0xb7cf('0x32')],null))['then'](function(_0x378654){if(_0x378654){_0x188213=_0x378654;return db[_0xb7cf('0x4c')]['find']({'where':{'id':_0x188213[_0xb7cf('0x4d')]}});}})['then'](function(_0x5baf0f){if(_0x5baf0f){_0x1056aa=_0x5baf0f;return db[_0xb7cf('0x65')][_0xb7cf('0x46')]({'where':{'id':_0x188213[_0xb7cf('0x7f')]}});}})[_0xb7cf('0x17')](function(_0x2dc998){if(_0x2dc998){if(_0x3f686f){var _0x2e0d64=null;for(var _0x2b06bb=0x1;_0x2b06bb<_0x188213[_0xb7cf('0x7d')][_0xb7cf('0x80')];++_0x2b06bb){_0x2e0d64=_0x188213[_0xb7cf('0x7d')][_0x2b06bb];var _0x2c5de6=_0x2e0d64[_0xb7cf('0x68')]?util['format'](_0xb7cf('0x81'),_0x1056aa['agentAlias'],_0x2e0d64[_0xb7cf('0x68')]):'System';var _0xec764a=_0x356e5d['body'][_0xb7cf('0x82')]||util['format'](_0xb7cf('0x81'),'Visitor',_0x2e0d64[_0xb7cf('0x7f')]);switch(_0x1056aa[_0xb7cf('0x83')]){case _0xb7cf('0x84'):_0x2c5de6=_0x2e0d64[_0xb7cf('0x68')]?util[_0xb7cf('0x7b')]('%s%d',_0x1056aa[_0xb7cf('0x85')],_0x2e0d64[_0xb7cf('0x68')]):'System';break;case _0xb7cf('0x86'):_0x2c5de6=_0x2e0d64[_0xb7cf('0x68')]?_0x2e0d64['User'][_0xb7cf('0x87')]||_0x2e0d64[_0xb7cf('0x7e')]['fullname']:_0xb7cf('0x88');break;case _0xb7cf('0x89'):_0x2c5de6=_0x2e0d64['UserId']?_0x2e0d64[_0xb7cf('0x7e')][_0xb7cf('0x53')]:'System';break;default:_0x2c5de6=_0x2e0d64['UserId']?util[_0xb7cf('0x7b')](_0xb7cf('0x81'),_0x1056aa[_0xb7cf('0x85')],_0x2e0d64[_0xb7cf('0x68')]):'System';}var _0x128894=util[_0xb7cf('0x7b')](_0xb7cf('0x8a'),moment(_0x2e0d64[_0xb7cf('0x8b')])[_0xb7cf('0x7b')](_0xb7cf('0x8c')),_0x2e0d64[_0xb7cf('0x8d')]==='in'?_0xec764a:_0x2c5de6,_0x2e0d64[_0xb7cf('0x32')]);if(!_0x2e0d64[_0xb7cf('0x8e')]){fs['appendFileSync'](_0x3f686f,_0x128894);}}return db[_0xb7cf('0x8f')][_0xb7cf('0x4b')]({'where':{'service':!![]},'include':[{'model':db[_0xb7cf('0x90')],'as':_0xb7cf('0x91'),'raw':!![],'include':[{'model':db['CloudProvider'],'as':_0xb7cf('0x92'),'raw':!![]}]}]});}}})[_0xb7cf('0x17')](function(_0x395602){if(!_0x395602||!_0x395602[_0xb7cf('0x91')]||!_0x356e5d['body'])return _0x188213;var _0x2b4fb9=_0x395602['getSmtpOptions']();return respondWithRpcPromise(_0xb7cf('0x93'),_0xb7cf('0x94'),{'account':_0x2b4fb9,'message':{'from':util[_0xb7cf('0x7b')](_0xb7cf('0x95'),_0x395602['name'],_0x395602[_0xb7cf('0x54')]||_0x395602[_0xb7cf('0x91')]['user']),'to':_0x356e5d[_0xb7cf('0x32')][_0xb7cf('0x96')],'subject':'Mail\x20Transcript','text':util[_0xb7cf('0x7b')](_0xb7cf('0x97'),_0x356e5d[_0xb7cf('0x32')]['mailTranscript']),'attachments':[{'path':_0x3f686f}]}})[_0xb7cf('0x17')](function(){return _0x188213;})['catch'](function(_0x4761a0){logger[_0xb7cf('0x1e')](_0x4761a0);});})[_0xb7cf('0x17')](respondWithStatusCode(_0x5affbd,0xc8))[_0xb7cf('0x22')](handleError(_0x5affbd,null));};exports['addMessage']=function(_0x40ffbf,_0x7cc314){return db['ChatMessage']['find']({'where':{'id':_0x40ffbf[_0xb7cf('0x48')]['id']}})[_0xb7cf('0x17')](handleEntityNotFound(_0x7cc314,null))[_0xb7cf('0x17')](function(_0x54a8c5){if(_0x54a8c5){return _0x54a8c5[_0xb7cf('0x98')](_0x40ffbf[_0xb7cf('0x32')][_0xb7cf('0x99')],_[_0xb7cf('0x9a')](_0x40ffbf[_0xb7cf('0x32')],[_0xb7cf('0x99'),'id'])||{});}})[_0xb7cf('0x17')](respondWithResult(_0x7cc314,null))['catch'](handleError(_0x7cc314,null));};exports[_0xb7cf('0x9b')]=function(_0x4aafb2,_0x153767){var _0x462fe7={'raw':![],'where':{}};var _0x4f6073={};var _0x4ef98a={'count':0x0,'rows':[]};return db[_0xb7cf('0x36')][_0xb7cf('0x4b')]({'where':{'id':_0x4aafb2[_0xb7cf('0x48')]['id']}})['then'](handleEntityNotFound(_0x153767,null))[_0xb7cf('0x17')](function(_0x324e5b){if(_0x324e5b){_0x4f6073[_0xb7cf('0x41')]=_[_0xb7cf('0x3d')](db[_0xb7cf('0x61')][_0xb7cf('0x37')]);_0x4f6073['query']=_[_0xb7cf('0x3d')](_0x4aafb2[_0xb7cf('0x3e')]);_0x4f6073[_0xb7cf('0x3f')]=_[_0xb7cf('0x40')](_0x4f6073[_0xb7cf('0x41')],_0x4f6073['query']);_0x462fe7[_0xb7cf('0x43')]=_[_0xb7cf('0x40')](_0x4f6073[_0xb7cf('0x41')],qs['fields'](_0x4aafb2[_0xb7cf('0x3e')]['fields']));_0x462fe7[_0xb7cf('0x43')]=_0x462fe7[_0xb7cf('0x43')][_0xb7cf('0x80')]?_0x462fe7[_0xb7cf('0x43')]:_0x4f6073['model'];if(!_0x4aafb2[_0xb7cf('0x3e')][_0xb7cf('0x9c')](_0xb7cf('0x9d'))){_0x462fe7[_0xb7cf('0x28')]=qs[_0xb7cf('0x28')](_0x4aafb2['query'][_0xb7cf('0x28')]);_0x462fe7[_0xb7cf('0x26')]=qs[_0xb7cf('0x26')](_0x4aafb2[_0xb7cf('0x3e')][_0xb7cf('0x26')]);}_0x462fe7[_0xb7cf('0x9e')]=qs['sort'](_0x4aafb2[_0xb7cf('0x3e')][_0xb7cf('0x9f')]);_0x462fe7[_0xb7cf('0xa0')]=qs['filters'](_[_0xb7cf('0xa1')](_0x4aafb2[_0xb7cf('0x3e')],_0x4f6073[_0xb7cf('0x3f')]));_0x462fe7[_0xb7cf('0xa0')][_0xb7cf('0xa2')]=_0x324e5b['id'];if(_0x4aafb2[_0xb7cf('0x3e')]['filter']){_0x462fe7[_0xb7cf('0xa0')]=_[_0xb7cf('0x31')](_0x462fe7[_0xb7cf('0xa0')],{'$or':_[_0xb7cf('0x35')](_0x462fe7[_0xb7cf('0x43')],function(_0x32da15){var _0x13c5ff={};_0x13c5ff[_0x32da15]={'$like':'%'+_0x4aafb2[_0xb7cf('0x3e')][_0xb7cf('0xa3')]+'%'};return _0x13c5ff;})});}if(_0x4aafb2[_0xb7cf('0x3e')][_0xb7cf('0xa4')]){var _0x17bacc=_0x4aafb2['query'][_0xb7cf('0xa4')]['split'](',');var _0x238ee6={};_0x238ee6[_0x17bacc[0x0]]={'$gte':moment(_0x17bacc[0x1])[_0xb7cf('0x7b')](_0xb7cf('0xa5'))};_0x462fe7['where']=_[_0xb7cf('0x31')](_0x462fe7[_0xb7cf('0xa0')],_0x238ee6);}_0x462fe7=_[_0xb7cf('0x31')]({},_0x462fe7,_0x4aafb2[_0xb7cf('0x45')]);return db[_0xb7cf('0x61')][_0xb7cf('0x29')]({'where':_0x462fe7[_0xb7cf('0xa0')]})['then'](function(_0x4b821b){_0x4ef98a['count']=_0x4b821b;if(_0x4aafb2['query'][_0xb7cf('0xa6')]){_0x462fe7[_0xb7cf('0x44')]=[{'all':!![]}];}return db['ChatMessage'][_0xb7cf('0x3a')](_0x462fe7);})['then'](function(_0x284fdb){_0x4ef98a['rows']=_0x284fdb;return _0x4ef98a;});}})[_0xb7cf('0x17')](respondWithFilteredResult(_0x153767,_0x462fe7))['catch'](handleError(_0x153767,null));};exports[_0xb7cf('0xa7')]=function(_0x51cb8a,_0x979766){var _0x4868e4={'where':{}},_0x368e15={},_0x21470a={'count':0x0,'rows':[]};return db[_0xb7cf('0x36')][_0xb7cf('0x4b')]({'where':{'id':_0x51cb8a['params']['id']}})[_0xb7cf('0x17')](handleEntityNotFound(_0x979766,null))[_0xb7cf('0x17')](function(_0x5ecf07){if(_0x5ecf07){_0x368e15[_0xb7cf('0x41')]=_[_0xb7cf('0x3d')](db[_0xb7cf('0x61')][_0xb7cf('0x37')]);_0x368e15[_0xb7cf('0x3e')]=_[_0xb7cf('0x3d')](_0x51cb8a[_0xb7cf('0x3e')]);_0x368e15[_0xb7cf('0x3f')]=_[_0xb7cf('0x40')](_0x368e15[_0xb7cf('0x41')],_0x368e15[_0xb7cf('0x3e')]);_0x4868e4['attributes']=_[_0xb7cf('0x40')](_0x368e15[_0xb7cf('0x41')],qs['fields'](_0x51cb8a['query'][_0xb7cf('0x42')]));_0x4868e4['attributes']=_0x4868e4[_0xb7cf('0x43')][_0xb7cf('0x80')]?_0x4868e4[_0xb7cf('0x43')]:_0x368e15[_0xb7cf('0x41')];if(!_0x51cb8a[_0xb7cf('0x3e')][_0xb7cf('0x9c')](_0xb7cf('0x9d'))){_0x4868e4[_0xb7cf('0x28')]=qs[_0xb7cf('0x28')](_0x51cb8a[_0xb7cf('0x3e')][_0xb7cf('0x28')]);_0x4868e4[_0xb7cf('0x26')]=qs[_0xb7cf('0x26')](_0x51cb8a[_0xb7cf('0x3e')][_0xb7cf('0x26')]);}_0x4868e4[_0xb7cf('0x9e')]=qs['sort'](_0x51cb8a[_0xb7cf('0x3e')]['sort']);_0x4868e4['where']=qs[_0xb7cf('0x3f')](_[_0xb7cf('0xa1')](_0x51cb8a['query'],_0x368e15['filters']));_0x4868e4[_0xb7cf('0xa0')][_0xb7cf('0xa2')]=_0x5ecf07['id'];if(_0x51cb8a[_0xb7cf('0x3e')][_0xb7cf('0xa3')]){_0x4868e4[_0xb7cf('0xa0')]=_[_0xb7cf('0x31')](_0x4868e4[_0xb7cf('0xa0')],{'$or':_[_0xb7cf('0x35')](_0x4868e4[_0xb7cf('0x43')],function(_0x4ad9f7){var _0x3185a9={};_0x3185a9[_0x4ad9f7]={'$like':'%'+_0x51cb8a[_0xb7cf('0x3e')]['filter']+'%'};return _0x3185a9;})});}_0x4868e4[_0xb7cf('0xa0')][_0xb7cf('0x8e')]=![];if(_0x51cb8a['query']['id']){_0x4868e4[_0xb7cf('0xa0')]['id']={'$gt':_0x51cb8a['query']['id']};}_0x4868e4=_[_0xb7cf('0x31')]({},_0x4868e4,_0x51cb8a[_0xb7cf('0x45')]);return db[_0xb7cf('0x61')][_0xb7cf('0x29')]({'where':_0x4868e4[_0xb7cf('0xa0')]})['then'](function(_0x25037b){_0x21470a[_0xb7cf('0x29')]=_0x25037b;_0x4868e4['include']=[];if(_0x51cb8a[_0xb7cf('0x3e')][_0xb7cf('0xa8')]){_0x4868e4['include'][_0xb7cf('0xa9')]({'model':db[_0xb7cf('0x7e')],'as':_0xb7cf('0x7e'),'attributes':['id',_0xb7cf('0x53'),_0xb7cf('0x87')]});}if(_0x51cb8a[_0xb7cf('0x3e')][_0xb7cf('0xa6')]){_0x4868e4[_0xb7cf('0x44')]=[{'all':!![]}];}return db[_0xb7cf('0x61')][_0xb7cf('0x3a')](_0x4868e4);})[_0xb7cf('0x17')](function(_0x2d9cfa){_0x21470a[_0xb7cf('0xaa')]=_0x2d9cfa;return _0x21470a;});}})['then'](respondWithFilteredResult(_0x979766,_0x4868e4))[_0xb7cf('0x22')](handleError(_0x979766,null));};exports[_0xb7cf('0xab')]=function(_0x381540,_0x3a09f7){return db[_0xb7cf('0x36')]['find']({'where':{'id':_0x381540[_0xb7cf('0x48')]['id']}})[_0xb7cf('0x17')](handleEntityNotFound(_0x3a09f7,null))[_0xb7cf('0x17')](function(_0x42be1e){if(_0x42be1e){return _0x42be1e['setTags'](_0x381540[_0xb7cf('0x32')][_0xb7cf('0x99')],_[_0xb7cf('0x9a')](_0x381540['body'],['ids','id'])||{})[_0xb7cf('0xac')](function(){return db['Tag'][_0xb7cf('0x3a')]({'attributes':['id',_0xb7cf('0x2f'),_0xb7cf('0xad')],'where':{'id':_0x381540[_0xb7cf('0x32')]['ids']}});})['then'](function(_0x4f3e06){socket[_0xb7cf('0xae')]('chatInteractionTags:save',{'id':Number(_0x381540['params']['id']),'tags':_0x4f3e06||[]});return{'id':Number(_0x381540[_0xb7cf('0x48')]['id']),'tags':_0x4f3e06||[]};});}})[_0xb7cf('0x17')](respondWithResult(_0x3a09f7,null))[_0xb7cf('0x22')](handleError(_0x3a09f7,null));};exports[_0xb7cf('0xaf')]=function(_0x53ad31,_0x473097){return db[_0xb7cf('0x36')][_0xb7cf('0x46')]({'where':{'id':_0x53ad31['params']['id']}})['then'](handleEntityNotFound(_0x473097,null))[_0xb7cf('0x17')](function(_0xa0092a){if(_0xa0092a){return _0xa0092a['removeTags'](_0x53ad31['query'][_0xb7cf('0x99')]);}})[_0xb7cf('0x17')](respondWithStatusCode(_0x473097,null))['catch'](handleError(_0x473097,null));};exports[_0xb7cf('0x78')]=function(_0x34af7d,_0x272324){var _0x119463=moment()['unix']()['toString']();var _0x527480=path[_0xb7cf('0x74')](config['root'],_0xb7cf('0xb0'),_0xb7cf('0xb1'),'tmp');var _0x5481e5=path[_0xb7cf('0x74')](config[_0xb7cf('0x75')],'server',_0xb7cf('0xb1'),'attachments');var _0xd061aa=path[_0xb7cf('0x74')](_0x527480,_0x119463);var _0x5894aa=util[_0xb7cf('0x7b')]('transcript-%d-%s.zip',_0x34af7d['params']['id'],_0x119463);var _0x37c1ab=path['join'](_0x527480,_0x5894aa);var _0x20ab36=[];_0x20ab36[_0xb7cf('0xa9')]({'model':db[_0xb7cf('0x7e')],'as':_0xb7cf('0x7e'),'attributes':['id',_0xb7cf('0x53')],'raw':!![]});_0x20ab36['push']({'model':db[_0xb7cf('0x65')],'as':_0xb7cf('0xb2'),'attributes':['id',_0xb7cf('0xb3'),_0xb7cf('0xb4')],'raw':!![]});if(_0x34af7d['query']['attachments']){_0x20ab36[_0xb7cf('0xa9')]({'model':db[_0xb7cf('0xb5')],'as':_0xb7cf('0xb5'),'raw':!![]});}var _0x2ceba7=[{'model':db['ChatMessage'],'as':_0xb7cf('0x7d'),'attributes':['id','body',_0xb7cf('0x8b'),'direction',_0xb7cf('0x8e'),_0xb7cf('0xb6')],'include':_0x20ab36}];_0x2ceba7['push']({'model':db[_0xb7cf('0x4c')],'as':_0xb7cf('0xb7'),'attributes':['id',_0xb7cf('0x2f')]});_0x2ceba7[_0xb7cf('0xa9')]({'model':db[_0xb7cf('0x7e')],'as':_0xb7cf('0xb8'),'attributes':['id',_0xb7cf('0x53')]});return db[_0xb7cf('0x36')][_0xb7cf('0x46')]({'where':{'id':_0x34af7d[_0xb7cf('0x48')]['id']},'include':_0x2ceba7})[_0xb7cf('0x17')](handleEntityNotFound(_0x272324,null))[_0xb7cf('0x17')](function(_0x48dd00){if(_0x48dd00){var _0x4dd585=_0x48dd00['get']({'plain':!![]});fs[_0xb7cf('0xb9')](_0xd061aa);var _0x4f0e3e={'channel':_0xb7cf('0xba'),'account':_0x4dd585[_0xb7cf('0xb7')][_0xb7cf('0x2f')],'agent':_0x4dd585[_0xb7cf('0xb8')]?_0x4dd585[_0xb7cf('0xb8')][_0xb7cf('0x53')]:_0xb7cf('0xbb'),'createdAt':moment(_0x4dd585['createdAt'])['format'](_0xb7cf('0xa5'))[_0xb7cf('0xbc')](),'closedAt':_0x4dd585[_0xb7cf('0x6a')]?moment(_0x4dd585['closedAt'])[_0xb7cf('0x7b')](_0xb7cf('0xa5'))[_0xb7cf('0xbc')]():'','disposition':_0x4dd585[_0xb7cf('0x6b')],'chatInfo':{'browser':_0x4dd585['browserName'],'os':_0x4dd585[_0xb7cf('0xbd')],'referer':_0x4dd585[_0xb7cf('0xbe')],'customerIp':_0x4dd585[_0xb7cf('0xbf')],'customerPort':_0x4dd585[_0xb7cf('0xc0')]?_0x4dd585['customerPort']:_0xb7cf('0xbb')},'messages':_(_0x4dd585[_0xb7cf('0x7d')])[_0xb7cf('0xc1')]()['filter']({'secret':![]})[_0xb7cf('0x35')](function(_0x542ee6){if(_0x542ee6[_0xb7cf('0xb5')]){var _0x341804=path[_0xb7cf('0x74')](_0x5481e5,_0x542ee6[_0xb7cf('0xb5')][_0xb7cf('0x6f')]);if(fs[_0xb7cf('0xc2')](_0x341804)){fs['createReadStream'](_0x341804)[_0xb7cf('0xc3')](fs[_0xb7cf('0xc4')](path[_0xb7cf('0x74')](_0xd061aa,_0x542ee6[_0xb7cf('0xb5')]['basename'])));}}return{'date':moment(_0x542ee6[_0xb7cf('0x8b')])['format'](_0xb7cf('0xa5'))[_0xb7cf('0xbc')](),'sender':_0x542ee6[_0xb7cf('0x8d')]===_0xb7cf('0xc5')?_0x542ee6[_0xb7cf('0x7e')]?_0x542ee6[_0xb7cf('0x7e')][_0xb7cf('0x53')]:_0xb7cf('0x88'):_0x542ee6[_0xb7cf('0xb2')]['firstName']+(_0x542ee6[_0xb7cf('0xb2')][_0xb7cf('0xb4')]?'\x20'+_0x542ee6[_0xb7cf('0xb2')][_0xb7cf('0xb4')]:''),'body':_0x542ee6['Attachment']?_0x542ee6[_0xb7cf('0xb5')][_0xb7cf('0x6f')]:_0x542ee6['body'],'direction':_0x542ee6['direction']===_0xb7cf('0xc5')?'A':'C','secret':_0x542ee6['secret'],'read':_0x542ee6[_0xb7cf('0xb6')],'attachment':_0x542ee6[_0xb7cf('0xb5')]};})[_0xb7cf('0xc6')]()};return ejs[_0xb7cf('0xc7')](path[_0xb7cf('0x74')](config['root'],'server',_0xb7cf('0xc8'),'downloadInteraction.ejs'),{'interaction':_0x4f0e3e})['then'](function(_0xc3395e){var _0x3bca2d=path[_0xb7cf('0x74')](_0xd061aa,_0xb7cf('0xc9')+_0x4dd585['id']+'-'+_0x119463+'.pdf');var _0x18a51e={'path':_0x3bca2d,'channel':_0xb7cf('0xba'),'interactionId':_0x4dd585['id']};return pdf[_0xb7cf('0xca')](_0xc3395e,_0x18a51e);})['then'](function(){return new Promise(function(_0x31ecd8,_0x19d6d4){zipdir(_0xd061aa,{'saveTo':_0x37c1ab},function(_0x5e94c2,_0x5cae12){if(_0x5e94c2)return _0x19d6d4(_0x5e94c2);return _0x31ecd8(_0x5cae12);});})[_0xb7cf('0x17')](function(){return new BPromise(function(_0x256b5d,_0x2c7428){rimraf(_0xd061aa,function(_0x1bb091){if(_0x1bb091)_0x2c7428(_0x1bb091);return _0x256b5d();});});})[_0xb7cf('0x17')](function(){return _0x272324[_0xb7cf('0x78')](_0x37c1ab,_0x5894aa,function(_0x4f0955){if(_0x4f0955){logger[_0xb7cf('0x1e')](_0xb7cf('0xcb'),_0x4f0955);}else{fs['unlinkSync'](_0x37c1ab);}});});});}else{return _0x272324['sendStatus'](0xc8);}})[_0xb7cf('0x22')](handleError(_0x272324,null));};
\ No newline at end of file
index 6bea746..ce3466c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0xab34=['catch','hasOwnProperty','events','../../mysqldb','ChatInteraction','ChatMessage','setMaxListeners','save','then','setDataValue','Users','map','findAll','unreadMessages','length','emit'];(function(_0x5628e7,_0x484dd9){var _0x432d58=function(_0x5e658a){while(--_0x5e658a){_0x5628e7['push'](_0x5628e7['shift']());}};_0x432d58(++_0x484dd9);}(_0xab34,0x102));var _0x4ab3=function(_0xaaf567,_0x48d50d){_0xaaf567=_0xaaf567-0x0;var _0xe036c=_0xab34[_0xaaf567];return _0xe036c;};'use strict';var EventEmitter=require(_0x4ab3('0x0'));var ChatInteraction=require(_0x4ab3('0x1'))['db'][_0x4ab3('0x2')];var ChatMessage=require(_0x4ab3('0x1'))['db'][_0x4ab3('0x3')];var ChatInteractionEvents=new EventEmitter();ChatInteractionEvents[_0x4ab3('0x4')](0x0);var events={'afterCreate':_0x4ab3('0x5'),'afterUpdate':'update','afterDestroy':'remove'};function emitEvent(_0x584211){return function(_0x8e32f7,_0xa360d4,_0x5c80e9){_0x8e32f7['getUsers']({'attributes':['id'],'raw':!![]})[_0x4ab3('0x6')](function(_0x4d6f72){_0x8e32f7[_0x4ab3('0x7')](_0x4ab3('0x8'),_0x4d6f72[_0x4ab3('0x9')](function(_0x42d955){return{'id':_0x42d955['id']};}));return ChatMessage[_0x4ab3('0xa')]({'where':{'ChatInteractionId':_0x8e32f7['id'],'direction':'in','read':![]},'raw':!![]});})[_0x4ab3('0x6')](function(_0x6c2018){_0x8e32f7[_0x4ab3('0x7')](_0x4ab3('0xb'),_0x6c2018[_0x4ab3('0xc')]);ChatInteractionEvents[_0x4ab3('0xd')](_0x584211+':'+_0x8e32f7['id'],_0x8e32f7);ChatInteractionEvents[_0x4ab3('0xd')](_0x584211,_0x8e32f7);_0x5c80e9(null);})[_0x4ab3('0xe')](_0x5c80e9(null));};}for(var e in events){if(events[_0x4ab3('0xf')](e)){var event=events[e];ChatInteraction['hook'](e,emitEvent(event));}}module['exports']=ChatInteractionEvents;
\ No newline at end of file
index 4e16e07..4b71ff8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0x8983=['../../config/environment','./chatInteraction.attributes','exports','define','ChatInteraction','changed','closed','closedAt','format','YYYY-MM-DD\x20HH:mm:ss','utf8mb4_unicode_ci','lodash','util','../../config/logger','api','moment','path','rimraf'];(function(_0xa464c9,_0x7c86d8){var _0x3d73c4=function(_0x5c2056){while(--_0x5c2056){_0xa464c9['push'](_0xa464c9['shift']());}};_0x3d73c4(++_0x7c86d8);}(_0x8983,0x185));var _0x3898=function(_0x35865f,_0x1e6ec1){_0x35865f=_0x35865f-0x0;var _0x13bd8f=_0x8983[_0x35865f];return _0x13bd8f;};'use strict';var _=require(_0x3898('0x0'));var util=require(_0x3898('0x1'));var logger=require(_0x3898('0x2'))(_0x3898('0x3'));var moment=require(_0x3898('0x4'));var BPromise=require('bluebird');var rp=require('request-promise');var fs=require('fs');var path=require(_0x3898('0x5'));var rimraf=require(_0x3898('0x6'));var config=require(_0x3898('0x7'));var attributes=require(_0x3898('0x8'));module[_0x3898('0x9')]=function(_0x30a64c,_0x5ba227){return _0x30a64c[_0x3898('0xa')](_0x3898('0xb'),attributes,{'tableName':'chat_interactions','paranoid':![],'indexes':[],'timestamps':!![],'hooks':{'beforeUpdate':function(_0x1ea1e6,_0x4d82b9,_0x19553a){if(_0x1ea1e6[_0x3898('0xc')](_0x3898('0xd'))){_0x1ea1e6[_0x3898('0xe')]=moment()[_0x3898('0xf')](_0x3898('0x10'));}_0x19553a(null,_0x1ea1e6);}},'charset':'utf8mb4','collate':_0x3898('0x11')});};
\ No newline at end of file
index 7039ae9..4e25b3e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0x8529=['spread','AddTags','util','moment','bluebird','randomstring','ioredis','../../config/utils','../../config/logger','rpc','client','http','defaults','localhost','redis','./chatInteraction.socket','register','request','then','info','ChatInteraction,\x20%s,\x20%s','request\x20sent','debug','stringify','error','message','result','catch','ChatInteraction','update','body','options','where','attributes','UpdateChatInteraction','AddTagsToChatInteraction','find','ids','omit'];(function(_0x443643,_0x235ae2){var _0x4378b6=function(_0x6fedcf){while(--_0x6fedcf){_0x443643['push'](_0x443643['shift']());}};_0x4378b6(++_0x235ae2);}(_0x8529,0x161));var _0x9852=function(_0x507041,_0x35baeb){_0x507041=_0x507041-0x0;var _0x139254=_0x8529[_0x507041];return _0x139254;};'use strict';var _=require('lodash');var util=require(_0x9852('0x0'));var moment=require(_0x9852('0x1'));var BPromise=require(_0x9852('0x2'));var rs=require(_0x9852('0x3'));var fs=require('fs');var Redis=require(_0x9852('0x4'));var db=require('../../mysqldb')['db'];var utils=require(_0x9852('0x5'));var logger=require(_0x9852('0x6'))(_0x9852('0x7'));var config=require('../../config/environment');var jayson=require('jayson/promise');var client=jayson[_0x9852('0x8')][_0x9852('0x9')]({'port':0x232a});config['redis']=_[_0x9852('0xa')](config['redis'],{'host':_0x9852('0xb'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0x9852('0xc')]));require(_0x9852('0xd'))[_0x9852('0xe')](socket);function respondWithRpcPromise(_0x1d088b,_0x2c0fd4,_0x163cba){return new BPromise(function(_0x2796bc,_0x51b43e){return client[_0x9852('0xf')](_0x1d088b,_0x163cba)[_0x9852('0x10')](function(_0x1ebe37){logger[_0x9852('0x11')](_0x9852('0x12'),_0x2c0fd4,_0x9852('0x13'));logger[_0x9852('0x14')]('ChatInteraction,\x20%s,\x20%s,\x20%s',_0x2c0fd4,'request\x20sent',JSON[_0x9852('0x15')](_0x1ebe37));if(_0x1ebe37[_0x9852('0x16')]){if(_0x1ebe37['error']['code']===0x1f4){logger[_0x9852('0x16')]('ChatInteraction,\x20%s,\x20%s',_0x2c0fd4,_0x1ebe37[_0x9852('0x16')][_0x9852('0x17')]);return _0x51b43e(_0x1ebe37['error'][_0x9852('0x17')]);}logger[_0x9852('0x16')](_0x9852('0x12'),_0x2c0fd4,_0x1ebe37[_0x9852('0x16')]['message']);return _0x2796bc(_0x1ebe37[_0x9852('0x16')][_0x9852('0x17')]);}else{logger['info']('ChatInteraction,\x20%s,\x20%s',_0x2c0fd4,_0x9852('0x13'));_0x2796bc(_0x1ebe37[_0x9852('0x18')][_0x9852('0x17')]);}})[_0x9852('0x19')](function(_0x336f60){logger[_0x9852('0x16')](_0x9852('0x12'),_0x2c0fd4,_0x336f60);_0x51b43e(_0x336f60);});});}exports['UpdateChatInteraction']=function(_0xe4af39){var _0x500593=this;return new Promise(function(_0x74513d,_0x57b034){return db[_0x9852('0x1a')][_0x9852('0x1b')](_0xe4af39[_0x9852('0x1c')],{'raw':_0xe4af39[_0x9852('0x1d')]?_0xe4af39['options']['raw']===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0xe4af39[_0x9852('0x1d')]?_0xe4af39[_0x9852('0x1d')][_0x9852('0x1e')]||null:null,'attributes':_0xe4af39[_0x9852('0x1d')]?_0xe4af39[_0x9852('0x1d')][_0x9852('0x1f')]||null:null,'limit':_0xe4af39[_0x9852('0x1d')]?_0xe4af39[_0x9852('0x1d')]['limit']||null:null})[_0x9852('0x10')](function(_0x476cc7){logger[_0x9852('0x11')](_0x9852('0x20'),_0xe4af39);logger[_0x9852('0x14')]('UpdateChatInteraction',_0xe4af39,JSON[_0x9852('0x15')](_0x476cc7));_0x74513d(_0x476cc7);})[_0x9852('0x19')](function(_0x5c2116){logger[_0x9852('0x16')](_0x9852('0x20'),_0x5c2116[_0x9852('0x17')],_0xe4af39);_0x57b034(_0x500593['error'](0x1f4,_0x5c2116[_0x9852('0x17')]));});});};exports[_0x9852('0x21')]=function(_0x4c82c3){return new Promise(function(_0x4a807c,_0x562e13){return db[_0x9852('0x1a')][_0x9852('0x22')]({'where':_0x4c82c3[_0x9852('0x1d')]?_0x4c82c3[_0x9852('0x1d')][_0x9852('0x1e')]||null:null})[_0x9852('0x10')](function(_0x2148a3){if(_0x2148a3){return _0x2148a3['addTags'](_0x4c82c3[_0x9852('0x1c')][_0x9852('0x23')],_[_0x9852('0x24')](_0x4c82c3[_0x9852('0x1c')],['ids','id'])||{});}})[_0x9852('0x25')](function(_0xa1b24){logger[_0x9852('0x11')](_0x9852('0x26'),_0x4c82c3);logger[_0x9852('0x14')]('AddTags',_0x4c82c3,JSON[_0x9852('0x15')](_0xa1b24));_0x4a807c(_0xa1b24);})[_0x9852('0x19')](function(_0x11519f){logger[_0x9852('0x16')](_0x9852('0x26'),_0x11519f[_0x9852('0x17')],_0x4c82c3);_0x562e13(_this['error'](0x1f4,_0x11519f[_0x9852('0x17')]));});});};
\ No newline at end of file
index 7f52ea6..e134af1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0x149e=['register','save','remove','update','emit'];(function(_0x4e8132,_0x2bf6c6){var _0x257afd=function(_0x4d24ed){while(--_0x4d24ed){_0x4e8132['push'](_0x4e8132['shift']());}};_0x257afd(++_0x2bf6c6);}(_0x149e,0x83));var _0xe149=function(_0x350215,_0x2fdee8){_0x350215=_0x350215-0x0;var _0xfa300=_0x149e[_0x350215];return _0xfa300;};'use strict';var ChatInteractionEvents=require('./chatInteraction.events');var events=[_0xe149('0x0'),_0xe149('0x1'),_0xe149('0x2')];function createListener(_0x56d0bf,_0x36aaeb){return function(_0x318c4a){_0x36aaeb[_0xe149('0x3')](_0x56d0bf,_0x318c4a);};}function removeListener(_0x1dd5d5,_0xfcea38){return function(){ChatInteractionEvents['removeListener'](_0x1dd5d5,_0xfcea38);};}exports[_0xe149('0x4')]=function(_0x386777){for(var _0x54b026=0x0,_0x409ced=events['length'];_0x54b026<_0x409ced;_0x54b026++){var _0x38cab7=events[_0x54b026];var _0x3d3438=createListener('chatInteraction:'+_0x38cab7,_0x386777);ChatInteractionEvents['on'](_0x38cab7,_0x3d3438);}};
\ No newline at end of file
index 91e5459..dadc3fa 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0xa1bb=['multer','util','path','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','get','isAuthenticated','index','/describe','isChatInteractionAuthorized','show','/:id/attachment_download','attachmentDownload','/:id/messages','getMessages','/:id/my_messages','/:id/download','post','create','/:id/vidaoo','createVidaooSession','diskStorage','join','format','%s-%s','now','originalname','replace','/:id/attachment_upload','single','file','attachmentUpload','addMessage','/:id/tags','tracked','chat','chatinteraction:addtags','put','/:id','chatinteraction:update','update','/:id/custom_update','customUpdate','/:id/abandon','abandon','/:id/close','close','destroy','removeTags'];(function(_0x3926d3,_0x36ad05){var _0x2f9123=function(_0x5632f9){while(--_0x5632f9){_0x3926d3['push'](_0x3926d3['shift']());}};_0x2f9123(++_0x36ad05);}(_0xa1bb,0x6a));var _0xba1b=function(_0x5921d2,_0x105552){_0x5921d2=_0x5921d2-0x0;var _0x277ac1=_0xa1bb[_0x5921d2];return _0x277ac1;};'use strict';var multer=require(_0xba1b('0x0'));var util=require(_0xba1b('0x1'));var path=require(_0xba1b('0x2'));var timeout=require('connect-timeout');var express=require(_0xba1b('0x3'));var router=express[_0xba1b('0x4')]();var fs_extra=require(_0xba1b('0x5'));var auth=require(_0xba1b('0x6'));var interaction=require(_0xba1b('0x7'));var config=require(_0xba1b('0x8'));var controller=require('./chatInteraction.controller');router[_0xba1b('0x9')]('/',auth[_0xba1b('0xa')](),controller[_0xba1b('0xb')]);router[_0xba1b('0x9')](_0xba1b('0xc'),auth[_0xba1b('0xa')](),controller['describe']);router[_0xba1b('0x9')]('/:id',auth[_0xba1b('0xd')](),controller[_0xba1b('0xe')]);router[_0xba1b('0x9')](_0xba1b('0xf'),auth[_0xba1b('0xd')](),controller[_0xba1b('0x10')]);router[_0xba1b('0x9')](_0xba1b('0x11'),auth[_0xba1b('0xa')](),controller[_0xba1b('0x12')]);router[_0xba1b('0x9')](_0xba1b('0x13'),auth[_0xba1b('0xd')](),controller['getMyMessages']);router[_0xba1b('0x9')](_0xba1b('0x14'),auth[_0xba1b('0xa')](),controller['download']);router[_0xba1b('0x15')]('/',auth[_0xba1b('0xa')](),controller[_0xba1b('0x16')]);router[_0xba1b('0x15')](_0xba1b('0x17'),auth[_0xba1b('0xa')](),controller[_0xba1b('0x18')]);var upload=multer({'storage':multer[_0xba1b('0x19')]({'destination':function(_0x18e11b,_0x4b918b,_0x26a6f4){_0x26a6f4(null,path[_0xba1b('0x1a')](config['root'],'server/files/attachments/'));},'filename':function(_0x2a9639,_0x1441d4,_0xde63a1){_0xde63a1(null,util[_0xba1b('0x1b')](_0xba1b('0x1c'),Date[_0xba1b('0x1d')](),_0x1441d4[_0xba1b('0x1e')][_0xba1b('0x1f')](/[+@&\/\\#,+()$~%'":*?<>{}\s\\|]/g,'-')));}})});router[_0xba1b('0x15')](_0xba1b('0x20'),upload[_0xba1b('0x21')](_0xba1b('0x22')),controller[_0xba1b('0x23')]);router[_0xba1b('0x15')]('/:id/messages',auth['isChatInteractionAuthorized'](),controller[_0xba1b('0x24')]);router[_0xba1b('0x15')](_0xba1b('0x25'),auth[_0xba1b('0xa')](),interaction[_0xba1b('0x26')](_0xba1b('0x27'),_0xba1b('0x28')),controller['addTags']);router[_0xba1b('0x29')](_0xba1b('0x2a'),auth['isAuthenticated'](),interaction[_0xba1b('0x26')]('chat',_0xba1b('0x2b')),controller[_0xba1b('0x2c')]);router['put'](_0xba1b('0x2d'),controller[_0xba1b('0x2e')]);router['put'](_0xba1b('0x2f'),auth[_0xba1b('0xd')](),controller[_0xba1b('0x30')]);router[_0xba1b('0x29')](_0xba1b('0x31'),controller[_0xba1b('0x32')]);router['delete'](_0xba1b('0x2a'),auth[_0xba1b('0xa')](),interaction[_0xba1b('0x26')](_0xba1b('0x27'),'chatinteraction:destroy'),controller[_0xba1b('0x33')]);router['delete'](_0xba1b('0x25'),auth['isAuthenticated'](),controller[_0xba1b('0x34')]);module['exports']=router;
\ No newline at end of file
index dec5c7a..90e6441 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0x1f5f=['TEXT','medium','INTEGER'];(function(_0x1b2f7d,_0x52f51f){var _0x13f5c7=function(_0x105aaf){while(--_0x105aaf){_0x1b2f7d['push'](_0x1b2f7d['shift']());}};_0x13f5c7(++_0x52f51f);}(_0x1f5f,0x72));var _0xf1f5=function(_0x32614d,_0x2c74b3){_0x32614d=_0x32614d-0x0;var _0x1b956e=_0x1f5f[_0x32614d];return _0x1b956e;};'use strict';var Sequelize=require('sequelize');module['exports']={'body':{'type':Sequelize[_0xf1f5('0x0')](_0xf1f5('0x1')),'allowNull':![]},'read':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'ChatInternalMessageId':{'type':Sequelize[_0xf1f5('0x2')]}};
\ No newline at end of file
index 3fb9bb0..f3f32ce 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0x33fd=['messages','ToId','read','-createdAt','all','eml-format','rimraf','zip-dir','request-promise','bluebird','mustache','util','sox','to-csv','fs-extra','lodash','crypto','jsforce','desk.js','querystring','papaparse','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../mysqldb','redis','localhost','socket.io-emitter','./chatInternalMessage.socket','register','sendStatus','status','json','offset','limit','set','apply','reject','save','update','then','destroy','end','error','stack','name','index','ChatInternalMessage','rawAttributes','fieldName','type','key','model','map','query','keys','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','pick','filter','merge','VIRTUAL','options','where','count','includeAll','include','findAll','show','params','find','create','body','catch','describe','createdAt','lastMessage','format','YYYY-MM-DD\x20HH:mm:ss','getUsers','User','agent','admin','user','fullname','role','online','allowmessenger','-online','VoiceQueue','VoiceQueues','get','Unable\x20to\x20retrieve\x20the\x20current\x20user','UserProfileSection','autoAssociation','UserProfileResource','isEmpty','push'];(function(_0x3f379d,_0x3a2335){var _0x7f8a20=function(_0x274a32){while(--_0x274a32){_0x3f379d['push'](_0x3f379d['shift']());}};_0x7f8a20(++_0x3a2335);}(_0x33fd,0x14f));var _0xd33f=function(_0x1246f4,_0x3b709f){_0x1246f4=_0x1246f4-0x0;var _0x200196=_0x33fd[_0x1246f4];return _0x200196;};'use strict';var emlformat=require(_0xd33f('0x0'));var rimraf=require(_0xd33f('0x1'));var zipdir=require(_0xd33f('0x2'));var jsonpatch=require('fast-json-patch');var rp=require(_0xd33f('0x3'));var moment=require('moment');var BPromise=require(_0xd33f('0x4'));var Mustache=require(_0xd33f('0x5'));var util=require(_0xd33f('0x6'));var path=require('path');var sox=require(_0xd33f('0x7'));var csv=require(_0xd33f('0x8'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0xd33f('0x9'));var _=require(_0xd33f('0xa'));var squel=require('squel');var crypto=require(_0xd33f('0xb'));var jsforce=require(_0xd33f('0xc'));var deskjs=require(_0xd33f('0xd'));var toCsv=require('to-csv');var querystring=require(_0xd33f('0xe'));var Papa=require(_0xd33f('0xf'));var Redis=require('ioredis');var authService=require(_0xd33f('0x10'));var qs=require(_0xd33f('0x11'));var as=require(_0xd33f('0x12'));var hardwareService=require(_0xd33f('0x13'));var logger=require(_0xd33f('0x14'))(_0xd33f('0x15'));var utils=require(_0xd33f('0x16'));var config=require(_0xd33f('0x17'));var licenseUtil=require('../../config/license/util');var db=require(_0xd33f('0x18'))['db'];config[_0xd33f('0x19')]=_['defaults'](config[_0xd33f('0x19')],{'host':_0xd33f('0x1a'),'port':0x18eb});var socket=require(_0xd33f('0x1b'))(new Redis(config[_0xd33f('0x19')]));require(_0xd33f('0x1c'))[_0xd33f('0x1d')](socket);function respondWithStatusCode(_0x5e0b8f,_0x3257d7){_0x3257d7=_0x3257d7||0xcc;return function(_0xdfc9b2){if(_0xdfc9b2){return _0x5e0b8f[_0xd33f('0x1e')](_0x3257d7);}return _0x5e0b8f['status'](_0x3257d7)['end']();};}function respondWithResult(_0xd7dfcc,_0x4f5d36){_0x4f5d36=_0x4f5d36||0xc8;return function(_0x5f2339){if(_0x5f2339){return _0xd7dfcc[_0xd33f('0x1f')](_0x4f5d36)[_0xd33f('0x20')](_0x5f2339);}};}function respondWithFilteredResult(_0x5b92ac,_0x17f70c){return function(_0x4d7df4){if(_0x4d7df4){var _0x4c58b8=typeof _0x17f70c[_0xd33f('0x21')]==='undefined'&&typeof _0x17f70c[_0xd33f('0x22')]==='undefined';var _0x40d107=_0x4d7df4['count'];var _0x1d88ec=_0x4c58b8?0x0:_0x17f70c[_0xd33f('0x21')];var _0x3dceb2=_0x4c58b8?_0x4d7df4['count']:_0x17f70c['offset']+_0x17f70c['limit'];var _0x41f019;if(_0x3dceb2>=_0x40d107){_0x3dceb2=_0x40d107;_0x41f019=0xc8;}else{_0x41f019=0xce;}_0x5b92ac[_0xd33f('0x1f')](_0x41f019);return _0x5b92ac[_0xd33f('0x23')]('Content-Range',_0x1d88ec+'-'+_0x3dceb2+'/'+_0x40d107)[_0xd33f('0x20')](_0x4d7df4);}return null;};}function patchUpdates(_0x156593){return function(_0x532335){try{jsonpatch[_0xd33f('0x24')](_0x532335,_0x156593,!![]);}catch(_0x504011){return BPromise[_0xd33f('0x25')](_0x504011);}return _0x532335[_0xd33f('0x26')]();};}function saveUpdates(_0xc6bf2a,_0x3792df){return function(_0x11be6d){if(_0x11be6d){return _0x11be6d[_0xd33f('0x27')](_0xc6bf2a)[_0xd33f('0x28')](function(_0x56387b){return _0x56387b;});}return null;};}function removeEntity(_0x2a3972,_0x7a5fbd){return function(_0x45a982){if(_0x45a982){return _0x45a982[_0xd33f('0x29')]()[_0xd33f('0x28')](function(){_0x2a3972[_0xd33f('0x1f')](0xcc)[_0xd33f('0x2a')]();});}};}function handleEntityNotFound(_0x4b9abb,_0x2a62b7){return function(_0x261ae9){if(!_0x261ae9){_0x4b9abb[_0xd33f('0x1e')](0x194);}return _0x261ae9;};}function handleError(_0x11a0fb,_0x541a87){_0x541a87=_0x541a87||0x1f4;return function(_0x38faa2){logger[_0xd33f('0x2b')](_0x38faa2[_0xd33f('0x2c')]);if(_0x38faa2['name']){delete _0x38faa2[_0xd33f('0x2d')];}_0x11a0fb[_0xd33f('0x1f')](_0x541a87)['send'](_0x38faa2);};}exports[_0xd33f('0x2e')]=function(_0x135260,_0x4bbaa4){var _0x5c3924={},_0x12f764={},_0xc34656={'count':0x0,'rows':[]};var _0x43f6c8=_['map'](db[_0xd33f('0x2f')][_0xd33f('0x30')],function(_0x25b851){return{'name':_0x25b851[_0xd33f('0x31')],'type':_0x25b851[_0xd33f('0x32')][_0xd33f('0x33')]};});_0x12f764[_0xd33f('0x34')]=_[_0xd33f('0x35')](_0x43f6c8,_0xd33f('0x2d'));_0x12f764[_0xd33f('0x36')]=_[_0xd33f('0x37')](_0x135260[_0xd33f('0x36')]);_0x12f764[_0xd33f('0x38')]=_[_0xd33f('0x39')](_0x12f764[_0xd33f('0x34')],_0x12f764[_0xd33f('0x36')]);_0x5c3924[_0xd33f('0x3a')]=_['intersection'](_0x12f764[_0xd33f('0x34')],qs[_0xd33f('0x3b')](_0x135260[_0xd33f('0x36')]['fields']));_0x5c3924[_0xd33f('0x3a')]=_0x5c3924[_0xd33f('0x3a')][_0xd33f('0x3c')]?_0x5c3924[_0xd33f('0x3a')]:_0x12f764['model'];if(!_0x135260[_0xd33f('0x36')][_0xd33f('0x3d')](_0xd33f('0x3e'))){_0x5c3924[_0xd33f('0x22')]=qs[_0xd33f('0x22')](_0x135260[_0xd33f('0x36')][_0xd33f('0x22')]);_0x5c3924[_0xd33f('0x21')]=qs[_0xd33f('0x21')](_0x135260[_0xd33f('0x36')][_0xd33f('0x21')]);}_0x5c3924[_0xd33f('0x3f')]=qs['sort'](_0x135260['query'][_0xd33f('0x40')]);_0x5c3924['where']=qs[_0xd33f('0x38')](_[_0xd33f('0x41')](_0x135260[_0xd33f('0x36')],_0x12f764['filters']),_0x43f6c8);if(_0x135260['query'][_0xd33f('0x42')]){_0x5c3924['where']=_[_0xd33f('0x43')](_0x5c3924['where'],{'$or':_[_0xd33f('0x35')](_0x43f6c8,function(_0x3d4dbb){if(_0x3d4dbb[_0xd33f('0x32')]!==_0xd33f('0x44')){var _0x5791ef={};_0x5791ef[_0x3d4dbb[_0xd33f('0x2d')]]={'$like':'%'+_0x135260[_0xd33f('0x36')][_0xd33f('0x42')]+'%'};return _0x5791ef;}})});}_0x5c3924=_['merge']({},_0x5c3924,_0x135260[_0xd33f('0x45')]);var _0x49a155={'where':_0x5c3924[_0xd33f('0x46')]};return db[_0xd33f('0x2f')][_0xd33f('0x47')](_0x49a155)[_0xd33f('0x28')](function(_0x206623){_0xc34656[_0xd33f('0x47')]=_0x206623;if(_0x135260['query'][_0xd33f('0x48')]){_0x5c3924[_0xd33f('0x49')]=[{'all':!![]}];}return db[_0xd33f('0x2f')][_0xd33f('0x4a')](_0x5c3924);})[_0xd33f('0x28')](function(_0x13f90b){_0xc34656['rows']=_0x13f90b;return _0xc34656;})['then'](respondWithFilteredResult(_0x4bbaa4,_0x5c3924))['catch'](handleError(_0x4bbaa4,null));};exports[_0xd33f('0x4b')]=function(_0x1fdf49,_0x398974){var _0x43057a={'raw':!![],'where':{'id':_0x1fdf49[_0xd33f('0x4c')]['id']}},_0x1fe8c3={};_0x1fe8c3[_0xd33f('0x34')]=_['keys'](db[_0xd33f('0x2f')]['rawAttributes']);_0x1fe8c3[_0xd33f('0x36')]=_[_0xd33f('0x37')](_0x1fdf49[_0xd33f('0x36')]);_0x1fe8c3[_0xd33f('0x38')]=_[_0xd33f('0x39')](_0x1fe8c3[_0xd33f('0x34')],_0x1fe8c3[_0xd33f('0x36')]);_0x43057a[_0xd33f('0x3a')]=_[_0xd33f('0x39')](_0x1fe8c3[_0xd33f('0x34')],qs[_0xd33f('0x3b')](_0x1fdf49[_0xd33f('0x36')][_0xd33f('0x3b')]));_0x43057a['attributes']=_0x43057a[_0xd33f('0x3a')][_0xd33f('0x3c')]?_0x43057a[_0xd33f('0x3a')]:_0x1fe8c3[_0xd33f('0x34')];if(_0x1fdf49[_0xd33f('0x36')][_0xd33f('0x48')]){_0x43057a[_0xd33f('0x49')]=[{'all':!![]}];}_0x43057a=_[_0xd33f('0x43')]({},_0x43057a,_0x1fdf49[_0xd33f('0x45')]);return db[_0xd33f('0x2f')][_0xd33f('0x4d')](_0x43057a)['then'](handleEntityNotFound(_0x398974,null))[_0xd33f('0x28')](respondWithResult(_0x398974,null))['catch'](handleError(_0x398974,null));};exports[_0xd33f('0x4e')]=function(_0x5e205b,_0x125fc2){return db[_0xd33f('0x2f')][_0xd33f('0x4e')](_0x5e205b[_0xd33f('0x4f')],{})[_0xd33f('0x28')](respondWithResult(_0x125fc2,0xc9))['catch'](handleError(_0x125fc2,null));};exports[_0xd33f('0x27')]=function(_0x3be2c5,_0x487d6a){if(_0x3be2c5[_0xd33f('0x4f')]['id']){delete _0x3be2c5['body']['id'];}return db[_0xd33f('0x2f')][_0xd33f('0x4d')]({'where':{'id':_0x3be2c5[_0xd33f('0x4c')]['id']}})[_0xd33f('0x28')](handleEntityNotFound(_0x487d6a,null))[_0xd33f('0x28')](saveUpdates(_0x3be2c5[_0xd33f('0x4f')],null))['then'](respondWithResult(_0x487d6a,null))[_0xd33f('0x50')](handleError(_0x487d6a,null));};exports[_0xd33f('0x29')]=function(_0x565ab7,_0x386df8){return db[_0xd33f('0x2f')][_0xd33f('0x4d')]({'where':{'id':_0x565ab7[_0xd33f('0x4c')]['id']}})[_0xd33f('0x28')](handleEntityNotFound(_0x386df8,null))[_0xd33f('0x28')](removeEntity(_0x386df8,null))[_0xd33f('0x50')](handleError(_0x386df8,null));};exports[_0xd33f('0x51')]=function(_0x3bec29,_0x497d87){return db[_0xd33f('0x2f')]['describe']()['then'](respondWithResult(_0x497d87,null))[_0xd33f('0x50')](handleError(_0x497d87,null));};function wrapUser(_0x379b53){return function(_0x1131d3){var _0x5b9e82=_0x379b53['get']({'plain':!![]});_0x5b9e82['messages']=[];if(_0x1131d3){_0x5b9e82['lastMessageAt']=_0x1131d3[_0xd33f('0x52')];_0x5b9e82[_0xd33f('0x53')]=_0x1131d3;}else{_0x5b9e82['lastMessageAt']=moment(0x0)[_0xd33f('0x54')](_0xd33f('0x55'));_0x5b9e82[_0xd33f('0x53')]={};}return _0x5b9e82;};}exports[_0xd33f('0x56')]=function(_0x2095fd,_0x42a7cf,_0x3d0598){var _0x1e496b=[];return db[_0xd33f('0x57')][_0xd33f('0x4a')]({'where':{'role':[_0xd33f('0x58'),_0xd33f('0x59'),_0xd33f('0x5a')]},'attributes':['id',_0xd33f('0x5b'),_0xd33f('0x2d'),_0xd33f('0x5c'),'userpic','internal',_0xd33f('0x5d'),'lastLoginAt',_0xd33f('0x5e'),'showWebBar'],'order':qs[_0xd33f('0x40')](_0xd33f('0x5f')),'include':[{'model':db[_0xd33f('0x60')],'as':_0xd33f('0x61'),'attributes':['id',_0xd33f('0x2d'),'type'],'through':{'attributes':[]}}]})['then'](function(_0x1832f5){if(_0x1832f5){var _0x4d85c1=_0x2095fd['user'][_0xd33f('0x62')]({'plain':!![]});if(!_0x4d85c1)throw new Error(_0xd33f('0x63'));if(_0x4d85c1[_0xd33f('0x5c')]===_0xd33f('0x5a')){return db[_0xd33f('0x64')]['find']({'where':{'name':'Agents','userProfileId':_0x4d85c1['userProfileId']},'raw':!![]})[_0xd33f('0x28')](function(_0x2ba2a7){if(_0x2ba2a7){if(_0x2ba2a7[_0xd33f('0x65')]===0x0){return db[_0xd33f('0x66')][_0xd33f('0x4a')]({'where':{'sectionId':_0x2ba2a7['id']},'raw':!![]})[_0xd33f('0x28')](function(_0x48c0ee){var _0x1b9de9=[];if(_[_0xd33f('0x67')](_0x48c0ee)){_0x1b9de9=_['filter'](_0x1832f5,function(_0x2e307e){if(_0x2e307e[_0xd33f('0x5c')]!==_0xd33f('0x58')){return _0x2e307e;}});return _0x1b9de9;}else{for(var _0x327d9e=0x0;_0x327d9e<_0x1832f5['length'];_0x327d9e++){var _0x367fee=_0x1832f5[_0x327d9e];if(_0x367fee['role']===_0xd33f('0x58')){var _0xa29772=_[_0xd33f('0x4d')](_0x48c0ee,function(_0x26104c){return _0x26104c['resourceId']===_0x367fee['id'];});if(_0xa29772)_0x1b9de9[_0xd33f('0x68')](_0x367fee);}else{_0x1b9de9[_0xd33f('0x68')](_0x367fee);}}return _0x1b9de9;}});}else{return _0x1832f5;}}else{var _0xa311cd=_[_0xd33f('0x42')](_0x1832f5,function(_0x2f59b5){if(_0x2f59b5['role']!==_0xd33f('0x58')){return _0x2f59b5;}});return _0xa311cd;}});}else{return _0x1832f5;}}})['then'](function(_0x325c26){var _0x398cf9=[];if(_0x325c26){_0x1e496b=_0x325c26;for(var _0x262beb=0x0;_0x262beb<_0x325c26[_0xd33f('0x3c')];_0x262beb+=0x1){_0x1e496b[_0x262beb][_0xd33f('0x69')]=[];_0x398cf9[_0xd33f('0x68')](db[_0xd33f('0x2f')][_0xd33f('0x4d')]({'where':{'FromId':[_0x2095fd[_0xd33f('0x5a')]['id'],_0x325c26[_0x262beb]['id']],'ToId':[_0x2095fd['user']['id'],_0x325c26[_0x262beb]['id']],'ChatGroupId':null},'attributes':['id',_0xd33f('0x52'),'FromId',_0xd33f('0x6a'),_0xd33f('0x6b'),_0xd33f('0x4f')],'order':qs['sort'](_0xd33f('0x6c')),'limit':0x1,'offset':0x0,'raw':!![]})[_0xd33f('0x28')](wrapUser(_0x325c26[_0x262beb])));}return BPromise[_0xd33f('0x6d')](_0x398cf9);}return[];})[_0xd33f('0x28')](function(_0xf8aee6){return{'rows':_0xf8aee6,'count':_0xf8aee6[_0xd33f('0x3c')]};})[_0xd33f('0x28')](respondWithResult(_0x42a7cf,null))[_0xd33f('0x50')](handleError(_0x42a7cf,null));};
\ No newline at end of file
index 1655487..a9322de 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0x7ba4=['remove','emit','hook','exports','events','../../mysqldb','setMaxListeners','save'];(function(_0x264ca3,_0x65b645){var _0x156d1e=function(_0x3c2990){while(--_0x3c2990){_0x264ca3['push'](_0x264ca3['shift']());}};_0x156d1e(++_0x65b645);}(_0x7ba4,0x8c));var _0x47ba=function(_0x253720,_0x39a2c1){_0x253720=_0x253720-0x0;var _0x1a0da0=_0x7ba4[_0x253720];return _0x1a0da0;};'use strict';var EventEmitter=require(_0x47ba('0x0'));var ChatInternalMessage=require(_0x47ba('0x1'))['db']['ChatInternalMessage'];var ChatInternalMessageEvents=new EventEmitter();ChatInternalMessageEvents[_0x47ba('0x2')](0x0);var events={'afterCreate':_0x47ba('0x3'),'afterUpdate':'update','afterDestroy':_0x47ba('0x4')};function emitEvent(_0x1a839e){return function(_0x5a7f08,_0xabc9,_0x4ec658){ChatInternalMessageEvents[_0x47ba('0x5')](_0x1a839e+':'+_0x5a7f08['id'],_0x5a7f08);ChatInternalMessageEvents['emit'](_0x1a839e,_0x5a7f08);_0x4ec658(null);};}for(var e in events){if(events['hasOwnProperty'](e)){var event=events[e];ChatInternalMessage[_0x47ba('0x6')](e,emitEvent(event));}}module[_0x47ba('0x7')]=ChatInternalMessageEvents;
\ No newline at end of file
index 9116317..c0db754 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0x26a2=['./chatInternalMessage.attributes','exports','define','chat_internal_messages','utf8mb4','lodash','util','../../config/logger','api','moment','bluebird','request-promise','path','../../config/environment'];(function(_0x5dbc1b,_0x2dd02b){var _0x5143d8=function(_0x1cac97){while(--_0x1cac97){_0x5dbc1b['push'](_0x5dbc1b['shift']());}};_0x5143d8(++_0x2dd02b);}(_0x26a2,0xd7));var _0x226a=function(_0x4ed146,_0x322aa9){_0x4ed146=_0x4ed146-0x0;var _0x1ff10a=_0x26a2[_0x4ed146];return _0x1ff10a;};'use strict';var _=require(_0x226a('0x0'));var util=require(_0x226a('0x1'));var logger=require(_0x226a('0x2'))(_0x226a('0x3'));var moment=require(_0x226a('0x4'));var BPromise=require(_0x226a('0x5'));var rp=require(_0x226a('0x6'));var fs=require('fs');var path=require(_0x226a('0x7'));var rimraf=require('rimraf');var config=require(_0x226a('0x8'));var attributes=require(_0x226a('0x9'));module[_0x226a('0xa')]=function(_0x551577,_0x57ded6){return _0x551577[_0x226a('0xb')]('ChatInternalMessage',attributes,{'tableName':_0x226a('0xc'),'paranoid':![],'indexes':[],'timestamps':!![],'charset':_0x226a('0xd'),'collate':'utf8mb4_unicode_ci'});};
\ No newline at end of file
index 493e87f..c3d4787 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0x5455=['./chatInternalMessage.socket','register','request','then','ChatInternalMessage,\x20%s,\x20%s','request\x20sent','debug','ChatInternalMessage,\x20%s,\x20%s,\x20%s','stringify','error','code','message','info','result','catch','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/environment','jayson/promise','redis','defaults','localhost','socket.io-emitter'];(function(_0x187264,_0xf13169){var _0x418292=function(_0x3fc1ec){while(--_0x3fc1ec){_0x187264['push'](_0x187264['shift']());}};_0x418292(++_0xf13169);}(_0x5455,0x197));var _0x5545=function(_0x19950b,_0x53d0d7){_0x19950b=_0x19950b-0x0;var _0x3c6b41=_0x5455[_0x19950b];return _0x3c6b41;};'use strict';var _=require('lodash');var util=require(_0x5545('0x0'));var moment=require(_0x5545('0x1'));var BPromise=require(_0x5545('0x2'));var rs=require(_0x5545('0x3'));var fs=require('fs');var Redis=require(_0x5545('0x4'));var db=require(_0x5545('0x5'))['db'];var utils=require(_0x5545('0x6'));var logger=require('../../config/logger')('rpc');var config=require(_0x5545('0x7'));var jayson=require(_0x5545('0x8'));var client=jayson['client']['http']({'port':0x232a});config[_0x5545('0x9')]=_[_0x5545('0xa')](config['redis'],{'host':_0x5545('0xb'),'port':0x18eb});var socket=require(_0x5545('0xc'))(new Redis(config['redis']));require(_0x5545('0xd'))[_0x5545('0xe')](socket);function respondWithRpcPromise(_0x3d8b76,_0x2431e5,_0x2d4d95){return new BPromise(function(_0x3a972a,_0x3e6c2b){return client[_0x5545('0xf')](_0x3d8b76,_0x2d4d95)[_0x5545('0x10')](function(_0x5e4777){logger['info'](_0x5545('0x11'),_0x2431e5,_0x5545('0x12'));logger[_0x5545('0x13')](_0x5545('0x14'),_0x2431e5,'request\x20sent',JSON[_0x5545('0x15')](_0x5e4777));if(_0x5e4777[_0x5545('0x16')]){if(_0x5e4777['error'][_0x5545('0x17')]===0x1f4){logger[_0x5545('0x16')](_0x5545('0x11'),_0x2431e5,_0x5e4777[_0x5545('0x16')]['message']);return _0x3e6c2b(_0x5e4777[_0x5545('0x16')][_0x5545('0x18')]);}logger[_0x5545('0x16')](_0x5545('0x11'),_0x2431e5,_0x5e4777[_0x5545('0x16')][_0x5545('0x18')]);return _0x3a972a(_0x5e4777[_0x5545('0x16')][_0x5545('0x18')]);}else{logger[_0x5545('0x19')](_0x5545('0x11'),_0x2431e5,_0x5545('0x12'));_0x3a972a(_0x5e4777[_0x5545('0x1a')]['message']);}})[_0x5545('0x1b')](function(_0x4cf72f){logger['error']('ChatInternalMessage,\x20%s,\x20%s',_0x2431e5,_0x4cf72f);_0x3e6c2b(_0x4cf72f);});});}
\ No newline at end of file
index f7f328e..a5db069 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0xd9c3=['remove','update','removeListener','register','length','chatInternalMessage:','./chatInternalMessage.events'];(function(_0x4f0540,_0x50f1c3){var _0xedec44=function(_0x1a5888){while(--_0x1a5888){_0x4f0540['push'](_0x4f0540['shift']());}};_0xedec44(++_0x50f1c3);}(_0xd9c3,0x125));var _0x3d9c=function(_0x3b380d,_0x4bf247){_0x3b380d=_0x3b380d-0x0;var _0x54502b=_0xd9c3[_0x3b380d];return _0x54502b;};'use strict';var ChatInternalMessageEvents=require(_0x3d9c('0x0'));var events=['save',_0x3d9c('0x1'),_0x3d9c('0x2')];function createListener(_0x2798bf,_0x3750e9){return function(_0x33630c){_0x3750e9['emit'](_0x2798bf,_0x33630c);};}function removeListener(_0x3dd127,_0x52ef44){return function(){ChatInternalMessageEvents[_0x3d9c('0x3')](_0x3dd127,_0x52ef44);};}exports[_0x3d9c('0x4')]=function(_0x3cb72e){for(var _0x2d332e=0x0,_0x6ab1da=events[_0x3d9c('0x5')];_0x2d332e<_0x6ab1da;_0x2d332e++){var _0x42b808=events[_0x2d332e];var _0x4ac2c8=createListener(_0x3d9c('0x6')+_0x42b808,_0x3cb72e);ChatInternalMessageEvents['on'](_0x42b808,_0x4ac2c8);}};
\ No newline at end of file
index b4117aa..4da295e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0xebda=['Router','../../components/interaction/service','./chatInternalMessage.controller','get','isAuthenticated','/describe','describe','/users','getUsers','/:id','show','post','create','update','delete','destroy','exports','path','connect-timeout','express'];(function(_0x52d563,_0x58bfff){var _0xc5dcb1=function(_0xabf45b){while(--_0xabf45b){_0x52d563['push'](_0x52d563['shift']());}};_0xc5dcb1(++_0x58bfff);}(_0xebda,0x129));var _0xaebd=function(_0x202d24,_0x5e8641){_0x202d24=_0x202d24-0x0;var _0x2b3a8e=_0xebda[_0x202d24];return _0x2b3a8e;};'use strict';var multer=require('multer');var util=require('util');var path=require(_0xaebd('0x0'));var timeout=require(_0xaebd('0x1'));var express=require(_0xaebd('0x2'));var router=express[_0xaebd('0x3')]();var fs_extra=require('fs-extra');var auth=require('../../components/auth/service');var interaction=require(_0xaebd('0x4'));var config=require('../../config/environment');var controller=require(_0xaebd('0x5'));router[_0xaebd('0x6')]('/',auth[_0xaebd('0x7')](),controller['index']);router[_0xaebd('0x6')](_0xaebd('0x8'),auth[_0xaebd('0x7')](),controller[_0xaebd('0x9')]);router[_0xaebd('0x6')](_0xaebd('0xa'),auth[_0xaebd('0x7')](),controller[_0xaebd('0xb')]);router[_0xaebd('0x6')](_0xaebd('0xc'),auth[_0xaebd('0x7')](),controller[_0xaebd('0xd')]);router[_0xaebd('0xe')]('/',auth[_0xaebd('0x7')](),controller[_0xaebd('0xf')]);router['put'](_0xaebd('0xc'),controller[_0xaebd('0x10')]);router[_0xaebd('0x11')](_0xaebd('0xc'),auth[_0xaebd('0x7')](),controller[_0xaebd('0x12')]);module[_0xaebd('0x13')]=router;
\ No newline at end of file
index 11388f0..a0d13f7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0x34b7=['BOOLEAN','ENUM','out','STRING','TEXT','medium'];(function(_0x32db8a,_0x348fcb){var _0x84cc4c=function(_0x2b61b4){while(--_0x2b61b4){_0x32db8a['push'](_0x32db8a['shift']());}};_0x84cc4c(++_0x348fcb);}(_0x34b7,0x196));var _0x734b=function(_0x495961,_0x288bb8){_0x495961=_0x495961-0x0;var _0x50f161=_0x34b7[_0x495961];return _0x50f161;};'use strict';var Sequelize=require('sequelize');module['exports']={'body':{'type':Sequelize[_0x734b('0x0')](_0x734b('0x1')),'allowNull':![]},'read':{'type':Sequelize[_0x734b('0x2')],'defaultValue':![]},'secret':{'type':Sequelize[_0x734b('0x2')],'defaultValue':![]},'direction':{'type':Sequelize[_0x734b('0x3')]('in',_0x734b('0x4')),'defaultValue':'out','allowNull':![]},'readAt':{'type':Sequelize['DATE']},'providerName':{'type':Sequelize[_0x734b('0x5')]},'providerResponse':{'type':Sequelize[_0x734b('0x0')]}};
\ No newline at end of file
index 5a34c6b..bbfba0a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0xb62a=['acceptmessage','parse','formData','chat-interactions','[CHATMESSAGE:REJECT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s','null','RejectMessage','sequelize','Sequelize','email','interface','event','EventManager','rejectmessage','rimraf','zip-dir','moment','bluebird','mustache','util','path','sox','to-csv','fs-extra','lodash','squel','crypto','jsforce','desk.js','querystring','papaparse','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','api','../../config/utils','../../mysqldb','redis','defaults','localhost','socket.io-emitter','./chatMessage.socket','jayson/promise','client','http','request','then','request\x20sent','debug','ChatMessage,\x20%s,\x20%s,\x20%s','stringify','error','code','ChatMessage,\x20%s,\x20%s','message','info','result','catch','sendStatus','status','json','offset','undefined','count','limit','Content-Range','apply','reject','end','name','send','index','map','ChatMessage','rawAttributes','fieldName','type','keys','filters','intersection','model','query','attributes','fields','hasOwnProperty','nolimit','order','sort','pick','filter','where','merge','options','includeAll','include','findAll','rows','show','find','create','update','body','params','destroy','describe','accept','chat','read','readAt','format','YYYY-MM-DD\x20HH:mm:ss','UserId','agent','get','ChatInteraction','ChatInteractionId','isNil','read1stAt','interaction','[CHATMESSAGE:ACCEPT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s','user','role','AcceptMessage','acceptMessage','SELECT\x20*\x20FROM\x20cm_contacts\x20WHERE\x20id\x20=\x20','ContactId','QueryTypes','SELECT','contact','fullname','internal','manual','SIP/%s','channel','motionChannel'];(function(_0x19f042,_0x585d42){var _0xa9354d=function(_0x10b734){while(--_0x10b734){_0x19f042['push'](_0x19f042['shift']());}};_0xa9354d(++_0x585d42);}(_0xb62a,0x95));var _0xab62=function(_0x2383ab,_0x1e411e){_0x2383ab=_0x2383ab-0x0;var _0x50b66c=_0xb62a[_0x2383ab];return _0x50b66c;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0xab62('0x0'));var zipdir=require(_0xab62('0x1'));var jsonpatch=require('fast-json-patch');var rp=require('request-promise');var moment=require(_0xab62('0x2'));var BPromise=require(_0xab62('0x3'));var Mustache=require(_0xab62('0x4'));var util=require(_0xab62('0x5'));var path=require(_0xab62('0x6'));var sox=require(_0xab62('0x7'));var csv=require(_0xab62('0x8'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0xab62('0x9'));var _=require(_0xab62('0xa'));var squel=require(_0xab62('0xb'));var crypto=require(_0xab62('0xc'));var jsforce=require(_0xab62('0xd'));var deskjs=require(_0xab62('0xe'));var toCsv=require('to-csv');var querystring=require(_0xab62('0xf'));var Papa=require(_0xab62('0x10'));var Redis=require('ioredis');var authService=require('../../components/auth/service');var qs=require(_0xab62('0x11'));var as=require(_0xab62('0x12'));var hardwareService=require('../../config/license/hardware');var logger=require(_0xab62('0x13'))(_0xab62('0x14'));var utils=require(_0xab62('0x15'));var config=require('../../config/environment');var licenseUtil=require('../../config/license/util');var db=require(_0xab62('0x16'))['db'];config[_0xab62('0x17')]=_[_0xab62('0x18')](config[_0xab62('0x17')],{'host':_0xab62('0x19'),'port':0x18eb});var socket=require(_0xab62('0x1a'))(new Redis(config[_0xab62('0x17')]));require(_0xab62('0x1b'))['register'](socket);var jayson=require(_0xab62('0x1c'));var client=jayson[_0xab62('0x1d')][_0xab62('0x1e')]({'port':0x232c});var client9002=jayson['client']['http']({'port':0x232a});function respondWithRpcPromise(_0x8706a0,_0x44e394,_0x3bda38,_0x119251){return new BPromise(function(_0x25a9ce,_0x566ef6){var _0x55a979=_0x119251||client;return _0x55a979[_0xab62('0x1f')](_0x8706a0,_0x3bda38)[_0xab62('0x20')](function(_0x4340c1){logger['info']('ChatMessage,\x20%s,\x20%s',_0x44e394,_0xab62('0x21'));logger[_0xab62('0x22')](_0xab62('0x23'),_0x44e394,'request\x20sent',JSON[_0xab62('0x24')](_0x4340c1));if(_0x4340c1['error']){if(_0x4340c1[_0xab62('0x25')][_0xab62('0x26')]===0x1f4){logger[_0xab62('0x25')](_0xab62('0x27'),_0x44e394,_0x4340c1[_0xab62('0x25')][_0xab62('0x28')]);return _0x566ef6(_0x4340c1[_0xab62('0x25')][_0xab62('0x28')]);}logger[_0xab62('0x25')](_0xab62('0x27'),_0x44e394,_0x4340c1[_0xab62('0x25')][_0xab62('0x28')]);return _0x25a9ce(_0x4340c1['error'][_0xab62('0x28')]);}else{logger[_0xab62('0x29')]('ChatMessage,\x20%s,\x20%s',_0x44e394,_0xab62('0x21'));_0x25a9ce(_0x4340c1[_0xab62('0x2a')]['message']);}})[_0xab62('0x2b')](function(_0x52fc05){logger[_0xab62('0x25')](_0xab62('0x27'),_0x44e394,_0x52fc05);_0x566ef6(_0x52fc05);});});}function respondWithStatusCode(_0x1d9c3b,_0x151541){_0x151541=_0x151541||0xcc;return function(_0x1663fb){if(_0x1663fb){return _0x1d9c3b[_0xab62('0x2c')](_0x151541);}return _0x1d9c3b[_0xab62('0x2d')](_0x151541)['end']();};}function respondWithResult(_0x87929b,_0x30f2d4){_0x30f2d4=_0x30f2d4||0xc8;return function(_0x213954){if(_0x213954){return _0x87929b[_0xab62('0x2d')](_0x30f2d4)[_0xab62('0x2e')](_0x213954);}};}function respondWithFilteredResult(_0x48c837,_0x81f25d){return function(_0x37c046){if(_0x37c046){var _0x42b343=typeof _0x81f25d[_0xab62('0x2f')]===_0xab62('0x30')&&typeof _0x81f25d['limit']===_0xab62('0x30');var _0x4066db=_0x37c046[_0xab62('0x31')];var _0x46b1ef=_0x42b343?0x0:_0x81f25d[_0xab62('0x2f')];var _0x202506=_0x42b343?_0x37c046[_0xab62('0x31')]:_0x81f25d[_0xab62('0x2f')]+_0x81f25d[_0xab62('0x32')];var _0x4f556;if(_0x202506>=_0x4066db){_0x202506=_0x4066db;_0x4f556=0xc8;}else{_0x4f556=0xce;}_0x48c837[_0xab62('0x2d')](_0x4f556);return _0x48c837['set'](_0xab62('0x33'),_0x46b1ef+'-'+_0x202506+'/'+_0x4066db)[_0xab62('0x2e')](_0x37c046);}return null;};}function patchUpdates(_0x3f1aa4){return function(_0x7e28f0){try{jsonpatch[_0xab62('0x34')](_0x7e28f0,_0x3f1aa4,!![]);}catch(_0x1f04bf){return BPromise[_0xab62('0x35')](_0x1f04bf);}return _0x7e28f0['save']();};}function saveUpdates(_0x4769ff,_0x3471d1){return function(_0x23a92e){if(_0x23a92e){return _0x23a92e['update'](_0x4769ff)[_0xab62('0x20')](function(_0xcb2b71){return _0xcb2b71;});}return null;};}function removeEntity(_0x9d9f95,_0x3ff162){return function(_0x5734ba){if(_0x5734ba){return _0x5734ba['destroy']()[_0xab62('0x20')](function(){_0x9d9f95['status'](0xcc)[_0xab62('0x36')]();});}};}function handleEntityNotFound(_0x363d40,_0x5493a1){return function(_0x11668b){if(!_0x11668b){_0x363d40[_0xab62('0x2c')](0x194);}return _0x11668b;};}function handleError(_0xf6daa1,_0xe8dc50){_0xe8dc50=_0xe8dc50||0x1f4;return function(_0x273d5e){logger['error'](_0x273d5e['stack']);if(_0x273d5e[_0xab62('0x37')]){delete _0x273d5e[_0xab62('0x37')];}_0xf6daa1[_0xab62('0x2d')](_0xe8dc50)[_0xab62('0x38')](_0x273d5e);};}exports[_0xab62('0x39')]=function(_0x370a1b,_0x98e9e3){var _0x317bca={},_0x5916d6={},_0x4cc81a={'count':0x0,'rows':[]};var _0x355405=_[_0xab62('0x3a')](db[_0xab62('0x3b')][_0xab62('0x3c')],function(_0x15f7dd){return{'name':_0x15f7dd[_0xab62('0x3d')],'type':_0x15f7dd[_0xab62('0x3e')]['key']};});_0x5916d6['model']=_['map'](_0x355405,'name');_0x5916d6['query']=_[_0xab62('0x3f')](_0x370a1b['query']);_0x5916d6[_0xab62('0x40')]=_[_0xab62('0x41')](_0x5916d6[_0xab62('0x42')],_0x5916d6[_0xab62('0x43')]);_0x317bca[_0xab62('0x44')]=_[_0xab62('0x41')](_0x5916d6[_0xab62('0x42')],qs[_0xab62('0x45')](_0x370a1b['query'][_0xab62('0x45')]));_0x317bca['attributes']=_0x317bca[_0xab62('0x44')]['length']?_0x317bca[_0xab62('0x44')]:_0x5916d6[_0xab62('0x42')];if(!_0x370a1b[_0xab62('0x43')][_0xab62('0x46')](_0xab62('0x47'))){_0x317bca[_0xab62('0x32')]=qs[_0xab62('0x32')](_0x370a1b[_0xab62('0x43')][_0xab62('0x32')]);_0x317bca[_0xab62('0x2f')]=qs[_0xab62('0x2f')](_0x370a1b[_0xab62('0x43')][_0xab62('0x2f')]);}_0x317bca[_0xab62('0x48')]=qs[_0xab62('0x49')](_0x370a1b[_0xab62('0x43')][_0xab62('0x49')]);_0x317bca['where']=qs[_0xab62('0x40')](_[_0xab62('0x4a')](_0x370a1b['query'],_0x5916d6[_0xab62('0x40')]),_0x355405);if(_0x370a1b[_0xab62('0x43')][_0xab62('0x4b')]){_0x317bca[_0xab62('0x4c')]=_[_0xab62('0x4d')](_0x317bca['where'],{'$or':_[_0xab62('0x3a')](_0x355405,function(_0x453b47){if(_0x453b47[_0xab62('0x3e')]!=='VIRTUAL'){var _0x31adeb={};_0x31adeb[_0x453b47[_0xab62('0x37')]]={'$like':'%'+_0x370a1b[_0xab62('0x43')][_0xab62('0x4b')]+'%'};return _0x31adeb;}})});}_0x317bca=_[_0xab62('0x4d')]({},_0x317bca,_0x370a1b[_0xab62('0x4e')]);var _0x55bc34={'where':_0x317bca[_0xab62('0x4c')]};return db[_0xab62('0x3b')]['count'](_0x55bc34)[_0xab62('0x20')](function(_0x4ea381){_0x4cc81a[_0xab62('0x31')]=_0x4ea381;if(_0x370a1b[_0xab62('0x43')][_0xab62('0x4f')]){_0x317bca[_0xab62('0x50')]=[{'all':!![]}];}return db[_0xab62('0x3b')][_0xab62('0x51')](_0x317bca);})[_0xab62('0x20')](function(_0x344b04){_0x4cc81a[_0xab62('0x52')]=_0x344b04;return _0x4cc81a;})['then'](respondWithFilteredResult(_0x98e9e3,_0x317bca))[_0xab62('0x2b')](handleError(_0x98e9e3,null));};exports[_0xab62('0x53')]=function(_0x337d73,_0x5cb9f4){var _0x1c2539={'raw':!![],'where':{'id':_0x337d73['params']['id']}},_0x17ea17={};_0x17ea17[_0xab62('0x42')]=_[_0xab62('0x3f')](db[_0xab62('0x3b')][_0xab62('0x3c')]);_0x17ea17['query']=_[_0xab62('0x3f')](_0x337d73[_0xab62('0x43')]);_0x17ea17[_0xab62('0x40')]=_[_0xab62('0x41')](_0x17ea17['model'],_0x17ea17[_0xab62('0x43')]);_0x1c2539[_0xab62('0x44')]=_['intersection'](_0x17ea17[_0xab62('0x42')],qs['fields'](_0x337d73['query'][_0xab62('0x45')]));_0x1c2539['attributes']=_0x1c2539[_0xab62('0x44')]['length']?_0x1c2539[_0xab62('0x44')]:_0x17ea17['model'];if(_0x337d73['query']['includeAll']){_0x1c2539[_0xab62('0x50')]=[{'all':!![]}];}_0x1c2539=_[_0xab62('0x4d')]({},_0x1c2539,_0x337d73[_0xab62('0x4e')]);return db['ChatMessage'][_0xab62('0x54')](_0x1c2539)[_0xab62('0x20')](handleEntityNotFound(_0x5cb9f4,null))[_0xab62('0x20')](respondWithResult(_0x5cb9f4,null))['catch'](handleError(_0x5cb9f4,null));};exports[_0xab62('0x55')]=function(_0xcfda3c,_0x35247d){return db['ChatMessage'][_0xab62('0x55')](_0xcfda3c['body'],{})['then'](respondWithResult(_0x35247d,0xc9))['catch'](handleError(_0x35247d,null));};exports[_0xab62('0x56')]=function(_0x57adc7,_0x52c5dc){if(_0x57adc7[_0xab62('0x57')]['id']){delete _0x57adc7[_0xab62('0x57')]['id'];}return db['ChatMessage'][_0xab62('0x54')]({'where':{'id':_0x57adc7[_0xab62('0x58')]['id']}})[_0xab62('0x20')](handleEntityNotFound(_0x52c5dc,null))[_0xab62('0x20')](saveUpdates(_0x57adc7['body'],null))[_0xab62('0x20')](respondWithResult(_0x52c5dc,null))['catch'](handleError(_0x52c5dc,null));};exports[_0xab62('0x59')]=function(_0x1c6ff1,_0x48f106){return db[_0xab62('0x3b')][_0xab62('0x54')]({'where':{'id':_0x1c6ff1['params']['id']}})[_0xab62('0x20')](handleEntityNotFound(_0x48f106,null))['then'](removeEntity(_0x48f106,null))['catch'](handleError(_0x48f106,null));};exports[_0xab62('0x5a')]=function(_0x1ebd78,_0x5c020c){return db[_0xab62('0x3b')][_0xab62('0x5a')]()[_0xab62('0x20')](respondWithResult(_0x5c020c,null))[_0xab62('0x2b')](handleError(_0x5c020c,null));};var interaction_log=require(_0xab62('0x13'))('chat-interactions');exports[_0xab62('0x5b')]=function(_0x4bb23e,_0x49f4b2,_0x57d3cb){var _0x176cd7={'agent':{},'channel':_0xab62('0x5c')};if(_0x4bb23e['body']['id']){delete _0x4bb23e[_0xab62('0x57')]['id'];}_0x4bb23e['body'][_0xab62('0x5d')]=!![];_0x4bb23e['body'][_0xab62('0x5e')]=moment()[_0xab62('0x5f')](_0xab62('0x60'));_0x4bb23e[_0xab62('0x57')][_0xab62('0x61')]=_0x4bb23e[_0xab62('0x57')][_0xab62('0x61')]||_0x4bb23e['user']['id'];_0x176cd7[_0xab62('0x62')]['id']=_0x4bb23e[_0xab62('0x57')]['UserId'];return db[_0xab62('0x3b')]['find']({'where':{'id':_0x4bb23e[_0xab62('0x58')]['id'],'UserId':null}})[_0xab62('0x20')](handleEntityNotFound(_0x49f4b2,null))[_0xab62('0x20')](saveUpdates(_0x4bb23e['body'],null))[_0xab62('0x20')](function(_0x3cc768){if(_0x3cc768){_0x176cd7[_0xab62('0x28')]=_0x3cc768[_0xab62('0x63')]({'plain':!![]});return db[_0xab62('0x64')][_0xab62('0x54')]({'where':{'id':_0x3cc768[_0xab62('0x65')]}});}return null;})['then'](handleEntityNotFound(_0x49f4b2,null))[_0xab62('0x20')](function(_0x47c48a){if(_0x47c48a){return _0x47c48a[_0xab62('0x56')]({'UserId':_0x4bb23e[_0xab62('0x57')][_0xab62('0x61')],'read1stAt':_[_0xab62('0x66')](_0x47c48a[_0xab62('0x67')])?moment()[_0xab62('0x5f')](_0xab62('0x60')):undefined});}return null;})[_0xab62('0x20')](function(_0x5dd274){if(_0x5dd274){_0x176cd7[_0xab62('0x68')]=_0x5dd274[_0xab62('0x63')]({'plain':!![]});interaction_log[_0xab62('0x29')](_0xab62('0x69'),_0x4bb23e[_0xab62('0x6a')]['id'],_0x4bb23e[_0xab62('0x6a')][_0xab62('0x37')],_0x4bb23e[_0xab62('0x6a')][_0xab62('0x6b')],_0x176cd7[_0xab62('0x68')]['id'],_0x4bb23e[_0xab62('0x57')]?JSON['stringify'](_0x4bb23e['body']):'null');return respondWithRpcPromise(_0xab62('0x6c'),_0xab62('0x6d'),_0x176cd7);}return null;})[_0xab62('0x20')](function(_0x4e9d8f){var _0x3c58ce=_0xab62('0x6e')+_0x4e9d8f[_0xab62('0x28')][_0xab62('0x6f')];return db['sequelize'][_0xab62('0x43')](_0x3c58ce,{'type':db['Sequelize'][_0xab62('0x70')][_0xab62('0x71')],'raw':!![]})['then'](function(_0x6f9c75){return _0x6f9c75;});})[_0xab62('0x20')](function(_0x580e67){if(_0x580e67){_0x176cd7[_0xab62('0x28')][_0xab62('0x72')]=_0x580e67[0x0];if(!_0x4bb23e['body'][_0xab62('0x61')])return;return db['User']['find']({'where':{'id':_0x4bb23e['body'][_0xab62('0x61')],'role':_0xab62('0x62')},'attributes':['id',_0xab62('0x37'),_0xab62('0x73'),'email',_0xab62('0x74')],'raw':!![]});}return null;})[_0xab62('0x20')](function(_0x51c831){if(!_0x51c831)return null;_0x176cd7[_0xab62('0x28')][_0xab62('0x62')]=_0x51c831;return _0x176cd7;})['then'](function(_0x3b7215){if(_0x3b7215){if(_0x4bb23e['body'][_0xab62('0x75')]){_0x176cd7[_0xab62('0x28')]['interface']=util[_0xab62('0x5f')](_0xab62('0x76'),_0x4bb23e[_0xab62('0x6a')]['name']);_0x176cd7[_0xab62('0x28')][_0xab62('0x77')]=_0x176cd7[_0xab62('0x77')];_0x176cd7[_0xab62('0x28')][_0xab62('0x78')]=_0x176cd7['channel'];_0x176cd7[_0xab62('0x28')]['event']=_0xab62('0x5b');return respondWithRpcPromise('EventManager','EventManager',{'event':_0xab62('0x79'),'message':_[_0xab62('0x4d')](_0x176cd7[_0xab62('0x28')],JSON[_0xab62('0x7a')](_0x176cd7[_0xab62('0x68')][_0xab62('0x7b')]))},client9002)[_0xab62('0x20')](function(){return _0x176cd7;});}return _0x176cd7;}return null;})['then'](respondWithResult(_0x49f4b2,null))[_0xab62('0x2b')](handleError(_0x49f4b2,null));};var interaction_log=require('../../config/logger')(_0xab62('0x7c'));exports[_0xab62('0x35')]=function(_0xa207fb,_0x281a21,_0xdbcd2f){var _0x5c88f9={'agent':{},'channel':_0xab62('0x5c')};if(_0xa207fb[_0xab62('0x57')]['id']){delete _0xa207fb[_0xab62('0x57')]['id'];}_0xa207fb[_0xab62('0x57')][_0xab62('0x61')]=_0xa207fb[_0xab62('0x57')][_0xab62('0x61')]||_0xa207fb[_0xab62('0x6a')]['id'];_0x5c88f9[_0xab62('0x62')]['id']=_0xa207fb[_0xab62('0x57')][_0xab62('0x61')];return db[_0xab62('0x3b')]['find']({'where':{'id':_0xa207fb[_0xab62('0x58')]['id'],'UserId':null}})[_0xab62('0x20')](handleEntityNotFound(_0x281a21,null))[_0xab62('0x20')](function(_0xf7063e){if(_0xf7063e){_0x5c88f9['message']=_0xf7063e['get']({'plain':!![]});return db['ChatInteraction']['find']({'where':{'id':_0xf7063e[_0xab62('0x65')]}});}return null;})['then'](handleEntityNotFound(_0x281a21,null))['then'](function(_0x324a6f){if(_0x324a6f){_0x5c88f9[_0xab62('0x68')]=_0x324a6f[_0xab62('0x63')]({'plain':!![]});interaction_log[_0xab62('0x29')](_0xab62('0x7d'),_0xa207fb[_0xab62('0x6a')]['id'],_0xa207fb[_0xab62('0x6a')]['name'],_0xa207fb[_0xab62('0x6a')][_0xab62('0x6b')],_0x5c88f9[_0xab62('0x68')]['id'],_0xa207fb[_0xab62('0x57')]?JSON[_0xab62('0x24')](_0xa207fb['body']):_0xab62('0x7e'));return respondWithRpcPromise(_0xab62('0x7f'),'rejectMessage',_0x5c88f9);}return null;})[_0xab62('0x20')](function(_0x13098d){var _0x1c032a=_0xab62('0x6e')+_0x13098d[_0xab62('0x28')][_0xab62('0x6f')];return db[_0xab62('0x80')][_0xab62('0x43')](_0x1c032a,{'type':db[_0xab62('0x81')]['QueryTypes']['SELECT'],'raw':!![]})['then'](function(_0x495b76){return _0x495b76;});})[_0xab62('0x20')](function(_0x2c2694){if(_0x2c2694){_0x5c88f9[_0xab62('0x28')][_0xab62('0x72')]=_0x2c2694[0x0];if(!_0xa207fb['body'][_0xab62('0x61')])return;return db['User']['find']({'where':{'id':_0xa207fb[_0xab62('0x57')][_0xab62('0x61')],'role':_0xab62('0x62')},'attributes':['id',_0xab62('0x37'),_0xab62('0x73'),_0xab62('0x82'),_0xab62('0x74')],'raw':!![]});}return null;})[_0xab62('0x20')](function(_0x56b90b){if(!_0x56b90b)return null;_0x5c88f9[_0xab62('0x28')][_0xab62('0x62')]=_0x56b90b;return _0x5c88f9;})['then'](function(_0x6d29d4){if(_0x6d29d4){_0x6d29d4[_0xab62('0x28')][_0xab62('0x83')]=util[_0xab62('0x5f')](_0xab62('0x76'),_0xa207fb[_0xab62('0x6a')][_0xab62('0x37')]);_0x6d29d4['message'][_0xab62('0x77')]=_0x5c88f9[_0xab62('0x77')];_0x6d29d4['message'][_0xab62('0x78')]=_0x5c88f9['channel'];_0x6d29d4[_0xab62('0x28')][_0xab62('0x84')]=_0xab62('0x35');respondWithRpcPromise(_0xab62('0x85'),'EventManager',{'event':_0xab62('0x86'),'message':_[_0xab62('0x4d')](_0x5c88f9['message'],JSON[_0xab62('0x7a')](_0x5c88f9[_0xab62('0x68')][_0xab62('0x7b')]))},client9002);return _0x5c88f9;}return null;})[_0xab62('0x20')](respondWithResult(_0x281a21,null))[_0xab62('0x2b')](handleError(_0x281a21,null));};
\ No newline at end of file
index fe6fc7a..70cc0f9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0x5bb1=['remove','emit','hasOwnProperty','hook','events','../../mysqldb','ChatMessage','setMaxListeners','save','update'];(function(_0x45ff3e,_0x2d5827){var _0x5166bd=function(_0x1fd1a1){while(--_0x1fd1a1){_0x45ff3e['push'](_0x45ff3e['shift']());}};_0x5166bd(++_0x2d5827);}(_0x5bb1,0x11c));var _0x15bb=function(_0x4a9fb1,_0x273043){_0x4a9fb1=_0x4a9fb1-0x0;var _0x348672=_0x5bb1[_0x4a9fb1];return _0x348672;};'use strict';var EventEmitter=require(_0x15bb('0x0'));var ChatMessage=require(_0x15bb('0x1'))['db'][_0x15bb('0x2')];var ChatMessageEvents=new EventEmitter();ChatMessageEvents[_0x15bb('0x3')](0x0);var events={'afterCreate':_0x15bb('0x4'),'afterUpdate':_0x15bb('0x5'),'afterDestroy':_0x15bb('0x6')};function emitEvent(_0x8429cd){return function(_0x25e6cb,_0x93d6b4,_0x339582){ChatMessageEvents[_0x15bb('0x7')](_0x8429cd+':'+_0x25e6cb['id'],_0x25e6cb);ChatMessageEvents[_0x15bb('0x7')](_0x8429cd,_0x25e6cb);_0x339582(null);};}for(var e in events){if(events[_0x15bb('0x8')](e)){var event=events[e];ChatMessage[_0x15bb('0x9')](e,emitEvent(event));}}module['exports']=ChatMessageEvents;
\ No newline at end of file
index d4459c2..8f3932d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0xaa1d=['utf8mb4_unicode_ci','util','api','moment','bluebird','rimraf','../../config/environment','exports','define','ChatMessage','fti_chat_messages','FULLTEXT','get','direction','toLowerCase','out','isNil','UserId','ChatInteraction','findOne','ChatInteractionId','then','update','createdAt','catch','error','utf8mb4'];(function(_0x289fc6,_0x24f58b){var _0x2a2e5c=function(_0x315f7a){while(--_0x315f7a){_0x289fc6['push'](_0x289fc6['shift']());}};_0x2a2e5c(++_0x24f58b);}(_0xaa1d,0xf4));var _0xdaa1=function(_0x13987c,_0xec9c9f){_0x13987c=_0x13987c-0x0;var _0x55582c=_0xaa1d[_0x13987c];return _0x55582c;};'use strict';var _=require('lodash');var util=require(_0xdaa1('0x0'));var logger=require('../../config/logger')(_0xdaa1('0x1'));var moment=require(_0xdaa1('0x2'));var BPromise=require(_0xdaa1('0x3'));var rp=require('request-promise');var fs=require('fs');var path=require('path');var rimraf=require(_0xdaa1('0x4'));var config=require(_0xdaa1('0x5'));var attributes=require('./chatMessage.attributes');module[_0xdaa1('0x6')]=function(_0x48464b,_0x38389a){return _0x48464b[_0xdaa1('0x7')](_0xdaa1('0x8'),attributes,{'tableName':'chat_messages','paranoid':![],'indexes':[{'name':_0xdaa1('0x9'),'fields':['body'],'type':_0xdaa1('0xa')}],'timestamps':!![],'hooks':{'afterCreate':function(_0x162f51,_0x33bf1e,_0x49fa31){var _0x2aff3c=_0x48464b['models'];var _0x4d4d38=_0x162f51[_0xdaa1('0xb')]({'plain':!![]});if(_0x4d4d38[_0xdaa1('0xc')][_0xdaa1('0xd')]()==='in'||_0x4d4d38[_0xdaa1('0xc')][_0xdaa1('0xd')]()===_0xdaa1('0xe')&&!_0x4d4d38['secret']&&!_[_0xdaa1('0xf')](_0x4d4d38[_0xdaa1('0x10')])){_0x2aff3c[_0xdaa1('0x11')][_0xdaa1('0x12')]({'where':{'id':_0x4d4d38[_0xdaa1('0x13')]}})[_0xdaa1('0x14')](function(_0x45a8ce){if(_0x45a8ce){_0x45a8ce[_0xdaa1('0x15')]({'lastMsgAt':_0x4d4d38[_0xdaa1('0x16')],'lastMsgDirection':_0x4d4d38[_0xdaa1('0xc')][_0xdaa1('0xd')]()});}})[_0xdaa1('0x17')](function(_0xd12b5e){console[_0xdaa1('0x18')](_0xd12b5e);});}_0x49fa31();}},'charset':_0xdaa1('0x19'),'collate':_0xdaa1('0x1a')});};
\ No newline at end of file
index 1b49734..916b0bc 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0xac3d=['../../mysqldb','../../config/utils','../../config/environment','jayson/promise','client','redis','defaults','localhost','socket.io-emitter','./chatMessage.socket','request','then','info','request\x20sent','stringify','error','code','message','ChatMessage,\x20%s,\x20%s','ChatMessage','create','body','options','raw','CreateChatMessage','catch','util','moment','bluebird','randomstring','ioredis'];(function(_0x36eaaa,_0x326732){var _0x461349=function(_0x4e4180){while(--_0x4e4180){_0x36eaaa['push'](_0x36eaaa['shift']());}};_0x461349(++_0x326732);}(_0xac3d,0x1cc));var _0xdac3=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0xac3d[_0x3dd15e];return _0x231fd0;};'use strict';var _=require('lodash');var util=require(_0xdac3('0x0'));var moment=require(_0xdac3('0x1'));var BPromise=require(_0xdac3('0x2'));var rs=require(_0xdac3('0x3'));var fs=require('fs');var Redis=require(_0xdac3('0x4'));var db=require(_0xdac3('0x5'))['db'];var utils=require(_0xdac3('0x6'));var logger=require('../../config/logger')('rpc');var config=require(_0xdac3('0x7'));var jayson=require(_0xdac3('0x8'));var client=jayson[_0xdac3('0x9')]['http']({'port':0x232a});config[_0xdac3('0xa')]=_[_0xdac3('0xb')](config[_0xdac3('0xa')],{'host':_0xdac3('0xc'),'port':0x18eb});var socket=require(_0xdac3('0xd'))(new Redis(config['redis']));require(_0xdac3('0xe'))['register'](socket);function respondWithRpcPromise(_0x39f918,_0x3a7553,_0x162a93){return new BPromise(function(_0x5389c1,_0x3173ce){return client[_0xdac3('0xf')](_0x39f918,_0x162a93)[_0xdac3('0x10')](function(_0x5ba7c9){logger[_0xdac3('0x11')]('ChatMessage,\x20%s,\x20%s',_0x3a7553,_0xdac3('0x12'));logger['debug']('ChatMessage,\x20%s,\x20%s,\x20%s',_0x3a7553,_0xdac3('0x12'),JSON[_0xdac3('0x13')](_0x5ba7c9));if(_0x5ba7c9[_0xdac3('0x14')]){if(_0x5ba7c9[_0xdac3('0x14')][_0xdac3('0x15')]===0x1f4){logger[_0xdac3('0x14')]('ChatMessage,\x20%s,\x20%s',_0x3a7553,_0x5ba7c9[_0xdac3('0x14')][_0xdac3('0x16')]);return _0x3173ce(_0x5ba7c9[_0xdac3('0x14')]['message']);}logger[_0xdac3('0x14')](_0xdac3('0x17'),_0x3a7553,_0x5ba7c9['error'][_0xdac3('0x16')]);return _0x5389c1(_0x5ba7c9['error'][_0xdac3('0x16')]);}else{logger['info'](_0xdac3('0x17'),_0x3a7553,'request\x20sent');_0x5389c1(_0x5ba7c9['result'][_0xdac3('0x16')]);}})['catch'](function(_0x2c5ba4){logger['error'](_0xdac3('0x17'),_0x3a7553,_0x2c5ba4);_0x3173ce(_0x2c5ba4);});});}exports['CreateChatMessage']=function(_0x492aac){var _0x3b5f62=this;return new Promise(function(_0x40b815,_0x226075){return db[_0xdac3('0x18')][_0xdac3('0x19')](_0x492aac[_0xdac3('0x1a')],{'raw':_0x492aac[_0xdac3('0x1b')]?_0x492aac[_0xdac3('0x1b')][_0xdac3('0x1c')]===undefined?!![]:![]:!![]})[_0xdac3('0x10')](function(_0x2ccf31){logger[_0xdac3('0x11')]('CreateChatMessage',_0x492aac);logger['debug'](_0xdac3('0x1d'),_0x492aac,JSON['stringify'](_0x2ccf31));_0x40b815(_0x2ccf31);})[_0xdac3('0x1e')](function(_0x2bb5fd){logger[_0xdac3('0x14')](_0xdac3('0x1d'),_0x2bb5fd['message'],_0x492aac);_0x226075(_0x3b5f62[_0xdac3('0x14')](0x1f4,_0x2bb5fd[_0xdac3('0x16')]));});});};
\ No newline at end of file
index f76646e..d0a0205 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0x8ba0=['emit','removeListener','register','length','chatMessage:','./chatMessage.events','save','remove','update'];(function(_0x17a36d,_0x12ccb4){var _0x54ac50=function(_0x49ff36){while(--_0x49ff36){_0x17a36d['push'](_0x17a36d['shift']());}};_0x54ac50(++_0x12ccb4);}(_0x8ba0,0x1c7));var _0x08ba=function(_0x36a55b,_0x481b26){_0x36a55b=_0x36a55b-0x0;var _0x47c319=_0x8ba0[_0x36a55b];return _0x47c319;};'use strict';var ChatMessageEvents=require(_0x08ba('0x0'));var events=[_0x08ba('0x1'),_0x08ba('0x2'),_0x08ba('0x3')];function createListener(_0x43ffb6,_0x5684f1){return function(_0x5e182a){_0x5684f1[_0x08ba('0x4')](_0x43ffb6,_0x5e182a);};}function removeListener(_0x802b7e,_0x3defcd){return function(){ChatMessageEvents[_0x08ba('0x5')](_0x802b7e,_0x3defcd);};}exports[_0x08ba('0x6')]=function(_0x161a9d){for(var _0x5f29fa=0x0,_0x235354=events[_0x08ba('0x7')];_0x5f29fa<_0x235354;_0x5f29fa++){var _0x37bcdf=events[_0x5f29fa];var _0x451f15=createListener(_0x08ba('0x8')+_0x37bcdf,_0x161a9d);ChatMessageEvents['on'](_0x37bcdf,_0x451f15);}};
\ No newline at end of file
index 10cb403..5f98f33 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0x9ba6=['tracked','chat','chatmessage:create','put','/:id/accept','accept','/:id/reject','reject','delete','exports','multer','util','path','express','Router','fs-extra','../../components/auth/service','../../config/environment','./chatMessage.controller','get','isAuthenticated','/describe','describe','/:id','show'];(function(_0x9cd4c3,_0x1c9b2c){var _0x4c9025=function(_0x25b3c6){while(--_0x25b3c6){_0x9cd4c3['push'](_0x9cd4c3['shift']());}};_0x4c9025(++_0x1c9b2c);}(_0x9ba6,0x1b3));var _0x69ba=function(_0x227fce,_0x48533c){_0x227fce=_0x227fce-0x0;var _0x184084=_0x9ba6[_0x227fce];return _0x184084;};'use strict';var multer=require(_0x69ba('0x0'));var util=require(_0x69ba('0x1'));var path=require(_0x69ba('0x2'));var timeout=require('connect-timeout');var express=require(_0x69ba('0x3'));var router=express[_0x69ba('0x4')]();var fs_extra=require(_0x69ba('0x5'));var auth=require(_0x69ba('0x6'));var interaction=require('../../components/interaction/service');var config=require(_0x69ba('0x7'));var controller=require(_0x69ba('0x8'));router[_0x69ba('0x9')]('/',auth[_0x69ba('0xa')](),controller['index']);router[_0x69ba('0x9')](_0x69ba('0xb'),auth[_0x69ba('0xa')](),controller[_0x69ba('0xc')]);router[_0x69ba('0x9')](_0x69ba('0xd'),auth['isAuthenticated'](),controller[_0x69ba('0xe')]);router['post']('/',auth[_0x69ba('0xa')](),interaction[_0x69ba('0xf')](_0x69ba('0x10'),_0x69ba('0x11')),controller['create']);router['put'](_0x69ba('0xd'),controller['update']);router[_0x69ba('0x12')](_0x69ba('0x13'),auth[_0x69ba('0xa')](),controller[_0x69ba('0x14')]);router['put'](_0x69ba('0x15'),auth[_0x69ba('0xa')](),controller[_0x69ba('0x16')]);router[_0x69ba('0x17')](_0x69ba('0xd'),auth[_0x69ba('0xa')](),controller['destroy']);module[_0x69ba('0x18')]=router;
\ No newline at end of file
index 3377be1..166d4ba 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0xadb5=['medium','TEXT','exports'];(function(_0x5b7711,_0x2f1ca9){var _0x42f31c=function(_0xced25e){while(--_0xced25e){_0x5b7711['push'](_0x5b7711['shift']());}};_0x42f31c(++_0x2f1ca9);}(_0xadb5,0xad));var _0x5adb=function(_0x3fd5fb,_0x3962cf){_0x3fd5fb=_0x3fd5fb-0x0;var _0x2cdbf7=_0xadb5[_0x3fd5fb];return _0x2cdbf7;};'use strict';var Sequelize=require('sequelize');module[_0x5adb('0x0')]={'body':{'type':Sequelize['TEXT'](_0x5adb('0x1')),'allowNull':![]},'plainBody':{'type':Sequelize[_0x5adb('0x2')](_0x5adb('0x1')),'allowNull':![]}};
\ No newline at end of file
index 10e3f62..75af654 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7a54=['filter','VIRTUAL','includeAll','include','findAll','rows','show','params','length','merge','options','find','catch','body','Attachment','join','server','attachments','offline-chat','basename','remove','describe','eml-format','rimraf','zip-dir','request-promise','moment','mustache','util','path','sox','to-csv','fs-extra','squel','crypto','desk.js','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','json','offset','undefined','count','limit','set','Content-Range','reject','save','update','then','destroy','error','stack','name','send','index','ChatOfflineMessage','fieldName','type','model','map','query','filters','intersection','attributes','fields','hasOwnProperty','nolimit','order','sort','where','pick'];(function(_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
+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(_0x36dfbd,_0x5bfe2d){var _0x4ecad9=function(_0x5230da){while(--_0x5230da){_0x36dfbd['push'](_0x36dfbd['shift']());}};_0x4ecad9(++_0x5bfe2d);}(_0x7a54,0x106));var _0x47a5=function(_0x43c414,_0x61b8e1){_0x43c414=_0x43c414-0x0;var _0x1f55a9=_0x7a54[_0x43c414];return _0x1f55a9;};'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 4223f17..9ba72cb 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0x9342=['../../mysqldb','ChatOfflineMessage','setMaxListeners','save','remove','emit','hasOwnProperty','hook','events'];(function(_0x45fcbb,_0x2f9eb0){var _0x635736=function(_0x8ded65){while(--_0x8ded65){_0x45fcbb['push'](_0x45fcbb['shift']());}};_0x635736(++_0x2f9eb0);}(_0x9342,0xaa));var _0x2934=function(_0x3733b7,_0x1f225b){_0x3733b7=_0x3733b7-0x0;var _0x251382=_0x9342[_0x3733b7];return _0x251382;};'use strict';var EventEmitter=require(_0x2934('0x0'));var ChatOfflineMessage=require(_0x2934('0x1'))['db'][_0x2934('0x2')];var ChatOfflineMessageEvents=new EventEmitter();ChatOfflineMessageEvents[_0x2934('0x3')](0x0);var events={'afterCreate':_0x2934('0x4'),'afterUpdate':'update','afterDestroy':_0x2934('0x5')};function emitEvent(_0xb2b126){return function(_0x1929e6,_0x467da8,_0x49ff23){ChatOfflineMessageEvents[_0x2934('0x6')](_0xb2b126+':'+_0x1929e6['id'],_0x1929e6);ChatOfflineMessageEvents[_0x2934('0x6')](_0xb2b126,_0x1929e6);_0x49ff23(null);};}for(var e in events){if(events[_0x2934('0x7')](e)){var event=events[e];ChatOfflineMessage[_0x2934('0x8')](e,emitEvent(event));}}module['exports']=ChatOfflineMessageEvents;
\ No newline at end of file
index 7929be8..aaca946 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0x8ff2=['./chatOfflineMessage.attributes','exports','define','chat_offline_messages','utf8mb4','utf8mb4_unicode_ci'];(function(_0x1655bb,_0x5a82ae){var _0x5e2020=function(_0x1ccfb4){while(--_0x1ccfb4){_0x1655bb['push'](_0x1655bb['shift']());}};_0x5e2020(++_0x5a82ae);}(_0x8ff2,0xa8));var _0x28ff=function(_0x178c35,_0x51f3c9){_0x178c35=_0x178c35-0x0;var _0xaf0f6e=_0x8ff2[_0x178c35];return _0xaf0f6e;};'use strict';var attributes=require(_0x28ff('0x0'));module[_0x28ff('0x1')]=function(_0x6ab717){return _0x6ab717[_0x28ff('0x2')]('ChatOfflineMessage',attributes,{'tableName':_0x28ff('0x3'),'paranoid':![],'indexes':[],'timestamps':!![],'charset':_0x28ff('0x4'),'collate':_0x28ff('0x5')});};
\ No newline at end of file
index bd71665..d083768 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0xbbdb=['request','info','ChatOfflineMessage,\x20%s,\x20%s','request\x20sent','ChatOfflineMessage,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','lodash','util','moment','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0xbbdb,0x18b));var _0xbbbd=function(_0x5a148f,_0x114dfa){_0x5a148f=_0x5a148f-0x0;var _0x5af2d4=_0xbbdb[_0x5a148f];return _0x5af2d4;};'use strict';var _=require(_0xbbbd('0x0'));var util=require(_0xbbbd('0x1'));var moment=require(_0xbbbd('0x2'));var BPromise=require('bluebird');var rs=require(_0xbbbd('0x3'));var fs=require('fs');var Redis=require(_0xbbbd('0x4'));var db=require(_0xbbbd('0x5'))['db'];var utils=require(_0xbbbd('0x6'));var logger=require(_0xbbbd('0x7'))(_0xbbbd('0x8'));var config=require(_0xbbbd('0x9'));var jayson=require(_0xbbbd('0xa'));var client=jayson[_0xbbbd('0xb')][_0xbbbd('0xc')]({'port':0x232a});function respondWithRpcPromise(_0x531402,_0x589b83,_0x53de3d){return new BPromise(function(_0x17c80a,_0x6bedd){return client[_0xbbbd('0xd')](_0x531402,_0x53de3d)['then'](function(_0x4c8523){logger[_0xbbbd('0xe')](_0xbbbd('0xf'),_0x589b83,_0xbbbd('0x10'));logger['debug'](_0xbbbd('0x11'),_0x589b83,'request\x20sent',JSON[_0xbbbd('0x12')](_0x4c8523));if(_0x4c8523['error']){if(_0x4c8523[_0xbbbd('0x13')][_0xbbbd('0x14')]===0x1f4){logger[_0xbbbd('0x13')](_0xbbbd('0xf'),_0x589b83,_0x4c8523[_0xbbbd('0x13')][_0xbbbd('0x15')]);return _0x6bedd(_0x4c8523[_0xbbbd('0x13')][_0xbbbd('0x15')]);}logger['error'](_0xbbbd('0xf'),_0x589b83,_0x4c8523[_0xbbbd('0x13')]['message']);return _0x17c80a(_0x4c8523[_0xbbbd('0x13')][_0xbbbd('0x15')]);}else{logger[_0xbbbd('0xe')]('ChatOfflineMessage,\x20%s,\x20%s',_0x589b83,_0xbbbd('0x10'));_0x17c80a(_0x4c8523[_0xbbbd('0x16')][_0xbbbd('0x15')]);}})[_0xbbbd('0x17')](function(_0x1de44c){logger[_0xbbbd('0x13')]('ChatOfflineMessage,\x20%s,\x20%s',_0x589b83,_0x1de44c);_0x6bedd(_0x1de44c);});});}
\ No newline at end of file
index 7e48985..3433d18 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0x3c1f=['../../config/environment','get','isAuthenticated','index','/describe','/:id','show','post','create','put','update','delete','exports','util','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service'];(function(_0x1b4b23,_0x5dd6d6){var _0x2a325b=function(_0x175462){while(--_0x175462){_0x1b4b23['push'](_0x1b4b23['shift']());}};_0x2a325b(++_0x5dd6d6);}(_0x3c1f,0x139));var _0xf3c1=function(_0x2ac955,_0xd03147){_0x2ac955=_0x2ac955-0x0;var _0x40819c=_0x3c1f[_0x2ac955];return _0x40819c;};'use strict';var multer=require('multer');var util=require(_0xf3c1('0x0'));var path=require('path');var timeout=require(_0xf3c1('0x1'));var express=require(_0xf3c1('0x2'));var router=express[_0xf3c1('0x3')]();var fs_extra=require(_0xf3c1('0x4'));var auth=require(_0xf3c1('0x5'));var interaction=require(_0xf3c1('0x6'));var config=require(_0xf3c1('0x7'));var controller=require('./chatOfflineMessage.controller');router[_0xf3c1('0x8')]('/',auth[_0xf3c1('0x9')](),controller[_0xf3c1('0xa')]);router['get'](_0xf3c1('0xb'),auth['isAuthenticated'](),controller['describe']);router[_0xf3c1('0x8')](_0xf3c1('0xc'),auth[_0xf3c1('0x9')](),controller[_0xf3c1('0xd')]);router[_0xf3c1('0xe')]('/',auth[_0xf3c1('0x9')](),controller[_0xf3c1('0xf')]);router[_0xf3c1('0x10')](_0xf3c1('0xc'),auth['isAuthenticated'](),controller[_0xf3c1('0x11')]);router[_0xf3c1('0x12')](_0xf3c1('0xc'),auth[_0xf3c1('0x9')](),controller['destroy']);module[_0xf3c1('0x13')]=router;
\ No newline at end of file
index fc9aa11..35c3352 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0x9615=['exports','ENUM','mouseOver','timeout','STRING','INTEGER','sequelize'];(function(_0x1d6967,_0x2b1d6e){var _0x166a85=function(_0x1bcc46){while(--_0x1bcc46){_0x1d6967['push'](_0x1d6967['shift']());}};_0x166a85(++_0x2b1d6e);}(_0x9615,0x1e2));var _0x5961=function(_0x213d4a,_0x33e0d5){_0x213d4a=_0x213d4a-0x0;var _0x153be6=_0x9615[_0x213d4a];return _0x153be6;};'use strict';var Sequelize=require(_0x5961('0x0'));module[_0x5961('0x1')]={'name':{'type':Sequelize['STRING'],'allowNull':![]},'type':{'type':Sequelize[_0x5961('0x2')](_0x5961('0x3'),_0x5961('0x4')),'defaultValue':_0x5961('0x3')},'selector':{'type':Sequelize[_0x5961('0x5')]},'timeout':{'type':Sequelize[_0x5961('0x6')]}};
\ No newline at end of file
index ca3f335..5938c88 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0xa9b1=['count','Content-Range','apply','reject','save','update','then','destroy','error','name','send','show','model','keys','ChatProactiveAction','rawAttributes','query','intersection','attributes','fields','includeAll','merge','create','body','catch','find','params','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../config/license/util','../../mysqldb','sendStatus','end','status','json','offset','undefined','limit'];(function(_0xd1d19a,_0x1933f0){var _0x52a79d=function(_0x5199e2){while(--_0x5199e2){_0xd1d19a['push'](_0xd1d19a['shift']());}};_0x52a79d(++_0x1933f0);}(_0xa9b1,0x133));var _0x1a9b=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0xa9b1[_0x3dd15e];return _0x231fd0;};'use strict';var emlformat=require('eml-format');var rimraf=require('rimraf');var zipdir=require(_0x1a9b('0x0'));var jsonpatch=require(_0x1a9b('0x1'));var rp=require(_0x1a9b('0x2'));var moment=require(_0x1a9b('0x3'));var BPromise=require(_0x1a9b('0x4'));var Mustache=require(_0x1a9b('0x5'));var util=require('util');var path=require('path');var sox=require('sox');var csv=require(_0x1a9b('0x6'));var ejs=require(_0x1a9b('0x7'));var fs=require('fs');var fs_extra=require(_0x1a9b('0x8'));var _=require(_0x1a9b('0x9'));var squel=require(_0x1a9b('0xa'));var crypto=require(_0x1a9b('0xb'));var jsforce=require(_0x1a9b('0xc'));var deskjs=require(_0x1a9b('0xd'));var toCsv=require(_0x1a9b('0x6'));var querystring=require(_0x1a9b('0xe'));var Papa=require(_0x1a9b('0xf'));var Redis=require(_0x1a9b('0x10'));var authService=require('../../components/auth/service');var qs=require('../../components/parsers/qs');var as=require(_0x1a9b('0x11'));var hardwareService=require(_0x1a9b('0x12'));var logger=require(_0x1a9b('0x13'))('api');var utils=require('../../config/utils');var config=require('../../config/environment');var licenseUtil=require(_0x1a9b('0x14'));var db=require(_0x1a9b('0x15'))['db'];function respondWithStatusCode(_0x2c75cf,_0x11bf7e){_0x11bf7e=_0x11bf7e||0xcc;return function(_0x2c3170){if(_0x2c3170){return _0x2c75cf[_0x1a9b('0x16')](_0x11bf7e);}return _0x2c75cf['status'](_0x11bf7e)[_0x1a9b('0x17')]();};}function respondWithResult(_0x34f082,_0x245883){_0x245883=_0x245883||0xc8;return function(_0x53c725){if(_0x53c725){return _0x34f082[_0x1a9b('0x18')](_0x245883)[_0x1a9b('0x19')](_0x53c725);}};}function respondWithFilteredResult(_0x55a00d,_0x2a7d72){return function(_0x57ca87){if(_0x57ca87){var _0x439acd=typeof _0x2a7d72[_0x1a9b('0x1a')]===_0x1a9b('0x1b')&&typeof _0x2a7d72[_0x1a9b('0x1c')]===_0x1a9b('0x1b');var _0x20b8dc=_0x57ca87[_0x1a9b('0x1d')];var _0x205a0d=_0x439acd?0x0:_0x2a7d72[_0x1a9b('0x1a')];var _0x1281c2=_0x439acd?_0x57ca87['count']:_0x2a7d72[_0x1a9b('0x1a')]+_0x2a7d72[_0x1a9b('0x1c')];var _0x3df7d2;if(_0x1281c2>=_0x20b8dc){_0x1281c2=_0x20b8dc;_0x3df7d2=0xc8;}else{_0x3df7d2=0xce;}_0x55a00d[_0x1a9b('0x18')](_0x3df7d2);return _0x55a00d['set'](_0x1a9b('0x1e'),_0x205a0d+'-'+_0x1281c2+'/'+_0x20b8dc)[_0x1a9b('0x19')](_0x57ca87);}return null;};}function patchUpdates(_0x4b3cd3){return function(_0x23e327){try{jsonpatch[_0x1a9b('0x1f')](_0x23e327,_0x4b3cd3,!![]);}catch(_0x44cebf){return BPromise[_0x1a9b('0x20')](_0x44cebf);}return _0x23e327[_0x1a9b('0x21')]();};}function saveUpdates(_0x590568,_0x189e78){return function(_0x17b1dd){if(_0x17b1dd){return _0x17b1dd[_0x1a9b('0x22')](_0x590568)[_0x1a9b('0x23')](function(_0x36391a){return _0x36391a;});}return null;};}function removeEntity(_0x2e42f1,_0x28f937){return function(_0x488a33){if(_0x488a33){return _0x488a33[_0x1a9b('0x24')]()['then'](function(){_0x2e42f1[_0x1a9b('0x18')](0xcc)[_0x1a9b('0x17')]();});}};}function handleEntityNotFound(_0xad6541,_0x4e7234){return function(_0x213841){if(!_0x213841){_0xad6541[_0x1a9b('0x16')](0x194);}return _0x213841;};}function handleError(_0x1521f4,_0x181331){_0x181331=_0x181331||0x1f4;return function(_0x18c9dd){logger[_0x1a9b('0x25')](_0x18c9dd['stack']);if(_0x18c9dd[_0x1a9b('0x26')]){delete _0x18c9dd[_0x1a9b('0x26')];}_0x1521f4['status'](_0x181331)[_0x1a9b('0x27')](_0x18c9dd);};}exports[_0x1a9b('0x28')]=function(_0x5d70dc,_0x5d7e8c){var _0x3f8e98={'raw':!![],'where':{'id':_0x5d70dc['params']['id']}},_0x1d981e={};_0x1d981e[_0x1a9b('0x29')]=_[_0x1a9b('0x2a')](db[_0x1a9b('0x2b')][_0x1a9b('0x2c')]);_0x1d981e[_0x1a9b('0x2d')]=_[_0x1a9b('0x2a')](_0x5d70dc[_0x1a9b('0x2d')]);_0x1d981e['filters']=_[_0x1a9b('0x2e')](_0x1d981e[_0x1a9b('0x29')],_0x1d981e[_0x1a9b('0x2d')]);_0x3f8e98[_0x1a9b('0x2f')]=_[_0x1a9b('0x2e')](_0x1d981e[_0x1a9b('0x29')],qs[_0x1a9b('0x30')](_0x5d70dc[_0x1a9b('0x2d')][_0x1a9b('0x30')]));_0x3f8e98[_0x1a9b('0x2f')]=_0x3f8e98[_0x1a9b('0x2f')]['length']?_0x3f8e98['attributes']:_0x1d981e[_0x1a9b('0x29')];if(_0x5d70dc[_0x1a9b('0x2d')][_0x1a9b('0x31')]){_0x3f8e98['include']=[{'all':!![]}];}_0x3f8e98=_[_0x1a9b('0x32')]({},_0x3f8e98,_0x5d70dc['options']);return db[_0x1a9b('0x2b')]['find'](_0x3f8e98)[_0x1a9b('0x23')](handleEntityNotFound(_0x5d7e8c,null))[_0x1a9b('0x23')](respondWithResult(_0x5d7e8c,null))['catch'](handleError(_0x5d7e8c,null));};exports[_0x1a9b('0x33')]=function(_0x5f17e4,_0x917311){return db[_0x1a9b('0x2b')][_0x1a9b('0x33')](_0x5f17e4[_0x1a9b('0x34')],{})['then'](respondWithResult(_0x917311,0xc9))[_0x1a9b('0x35')](handleError(_0x917311,null));};exports[_0x1a9b('0x22')]=function(_0x26bcb6,_0x5ceda8){if(_0x26bcb6[_0x1a9b('0x34')]['id']){delete _0x26bcb6['body']['id'];}return db['ChatProactiveAction'][_0x1a9b('0x36')]({'where':{'id':_0x26bcb6[_0x1a9b('0x37')]['id']}})[_0x1a9b('0x23')](handleEntityNotFound(_0x5ceda8,null))[_0x1a9b('0x23')](saveUpdates(_0x26bcb6[_0x1a9b('0x34')],null))[_0x1a9b('0x23')](respondWithResult(_0x5ceda8,null))[_0x1a9b('0x35')](handleError(_0x5ceda8,null));};exports['destroy']=function(_0x46f624,_0x230fc6){return db[_0x1a9b('0x2b')]['find']({'where':{'id':_0x46f624[_0x1a9b('0x37')]['id']}})[_0x1a9b('0x23')](handleEntityNotFound(_0x230fc6,null))[_0x1a9b('0x23')](removeEntity(_0x230fc6,null))[_0x1a9b('0x35')](handleError(_0x230fc6,null));};
\ No newline at end of file
index 3f319f5..5623d91 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0x89af=['rimraf','../../config/environment','./chatProactiveAction.attributes','exports','chat_proactive_actions','util','../../config/logger','api','moment','path'];(function(_0x198058,_0x3a8025){var _0xdae640=function(_0x326758){while(--_0x326758){_0x198058['push'](_0x198058['shift']());}};_0xdae640(++_0x3a8025);}(_0x89af,0xe1));var _0xf89a=function(_0xde8a0d,_0x4e00bc){_0xde8a0d=_0xde8a0d-0x0;var _0x31de55=_0x89af[_0xde8a0d];return _0x31de55;};'use strict';var _=require('lodash');var util=require(_0xf89a('0x0'));var logger=require(_0xf89a('0x1'))(_0xf89a('0x2'));var moment=require(_0xf89a('0x3'));var BPromise=require('bluebird');var rp=require('request-promise');var fs=require('fs');var path=require(_0xf89a('0x4'));var rimraf=require(_0xf89a('0x5'));var config=require(_0xf89a('0x6'));var attributes=require(_0xf89a('0x7'));module[_0xf89a('0x8')]=function(_0x3aba10,_0x22eddd){return _0x3aba10['define']('ChatProactiveAction',attributes,{'tableName':_0xf89a('0x9'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 0e915ec..b3baa06 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0x577b=['code','message','result','catch','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/environment','http','then','info','ChatProactiveAction,\x20%s,\x20%s','debug','ChatProactiveAction,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error'];(function(_0x3a8d6a,_0x545623){var _0x2adead=function(_0x5f044a){while(--_0x5f044a){_0x3a8d6a['push'](_0x3a8d6a['shift']());}};_0x2adead(++_0x545623);}(_0x577b,0x1d2));var _0xb577=function(_0x17d9e3,_0x1f969c){_0x17d9e3=_0x17d9e3-0x0;var _0x14192d=_0x577b[_0x17d9e3];return _0x14192d;};'use strict';var _=require(_0xb577('0x0'));var util=require(_0xb577('0x1'));var moment=require(_0xb577('0x2'));var BPromise=require(_0xb577('0x3'));var rs=require(_0xb577('0x4'));var fs=require('fs');var Redis=require(_0xb577('0x5'));var db=require(_0xb577('0x6'))['db'];var utils=require(_0xb577('0x7'));var logger=require('../../config/logger')('rpc');var config=require(_0xb577('0x8'));var jayson=require('jayson/promise');var client=jayson['client'][_0xb577('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x259a05,_0x8b19c4,_0x55c254){return new BPromise(function(_0x2de0c5,_0x504f52){return client['request'](_0x259a05,_0x55c254)[_0xb577('0xa')](function(_0x458d35){logger[_0xb577('0xb')](_0xb577('0xc'),_0x8b19c4,'request\x20sent');logger[_0xb577('0xd')](_0xb577('0xe'),_0x8b19c4,_0xb577('0xf'),JSON[_0xb577('0x10')](_0x458d35));if(_0x458d35[_0xb577('0x11')]){if(_0x458d35['error'][_0xb577('0x12')]===0x1f4){logger['error']('ChatProactiveAction,\x20%s,\x20%s',_0x8b19c4,_0x458d35[_0xb577('0x11')]['message']);return _0x504f52(_0x458d35['error']['message']);}logger[_0xb577('0x11')]('ChatProactiveAction,\x20%s,\x20%s',_0x8b19c4,_0x458d35[_0xb577('0x11')][_0xb577('0x13')]);return _0x2de0c5(_0x458d35[_0xb577('0x11')]['message']);}else{logger[_0xb577('0xb')]('ChatProactiveAction,\x20%s,\x20%s',_0x8b19c4,_0xb577('0xf'));_0x2de0c5(_0x458d35[_0xb577('0x14')][_0xb577('0x13')]);}})[_0xb577('0x15')](function(_0x5b392e){logger[_0xb577('0x11')](_0xb577('0xc'),_0x8b19c4,_0x5b392e);_0x504f52(_0x5b392e);});});}
\ No newline at end of file
index 925db29..f881b58 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0x31f0=['fs-extra','../../components/auth/service','../../config/environment','./chatProactiveAction.controller','show','isAuthenticated','create','put','/:id','update','delete','destroy','exports','multer','path','express','Router'];(function(_0x29a986,_0x18d77d){var _0xd4a8a4=function(_0x508a12){while(--_0x508a12){_0x29a986['push'](_0x29a986['shift']());}};_0xd4a8a4(++_0x18d77d);}(_0x31f0,0xb7));var _0x031f=function(_0x474a91,_0x4cf4e2){_0x474a91=_0x474a91-0x0;var _0x890a5=_0x31f0[_0x474a91];return _0x890a5;};'use strict';var multer=require(_0x031f('0x0'));var util=require('util');var path=require(_0x031f('0x1'));var timeout=require('connect-timeout');var express=require(_0x031f('0x2'));var router=express[_0x031f('0x3')]();var fs_extra=require(_0x031f('0x4'));var auth=require(_0x031f('0x5'));var interaction=require('../../components/interaction/service');var config=require(_0x031f('0x6'));var controller=require(_0x031f('0x7'));router['get']('/:id',auth['isAuthenticated'](),controller[_0x031f('0x8')]);router['post']('/',auth[_0x031f('0x9')](),controller[_0x031f('0xa')]);router[_0x031f('0xb')](_0x031f('0xc'),auth['isAuthenticated'](),controller[_0x031f('0xd')]);router[_0x031f('0xe')](_0x031f('0xc'),auth[_0x031f('0x9')](),controller[_0x031f('0xf')]);module[_0x031f('0x10')]=router;
\ No newline at end of file
index c5e0a23..a2c180c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0xd07d=['ENUM','rrmemory','beepall','exports','STRING','name'];(function(_0x33032e,_0x31411a){var _0x13316b=function(_0x2fb049){while(--_0x2fb049){_0x33032e['push'](_0x33032e['shift']());}};_0x13316b(++_0x31411a);}(_0xd07d,0x69));var _0xdd07=function(_0x1f7413,_0x3388c3){_0x1f7413=_0x1f7413-0x0;var _0x2d2775=_0xd07d[_0x1f7413];return _0x2d2775;};'use strict';var Sequelize=require('sequelize');module[_0xdd07('0x0')]={'name':{'type':Sequelize[_0xdd07('0x1')],'unique':_0xdd07('0x2'),'allowNull':![],'validate':{'notEmpty':!![],'is':/^[A-Za-z0-9\.\_]+$/i}},'description':{'type':Sequelize[_0xdd07('0x1')]},'timeout':{'type':Sequelize['INTEGER'],'validate':{'min':0x1,'max':0x20c49b}},'strategy':{'type':Sequelize[_0xdd07('0x3')](_0xdd07('0x4'),_0xdd07('0x5'),'roundrobin')}};
\ No newline at end of file
index bf907e0..be73091 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0x2088=['redis','localhost','socket.io-emitter','register','jayson/promise','client','http','request','info','ChatQueue,\x20%s,\x20%s','request\x20sent','debug','ChatQueue,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','sendStatus','status','end','json','offset','undefined','limit','count','set','Content-Range','reject','save','update','then','destroy','get','ChatQueues','UserProfileResource','stack','send','index','ChatQueue','rawAttributes','type','key','model','map','query','keys','filters','intersection','attributes','fields','length','hasOwnProperty','order','sort','where','pick','merge','VIRTUAL','name','filter','options','includeAll','findAll','rows','show','params','create','body','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','UserProfileSection','find','userProfileId','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','describe','getMembers','findOne','nolimit','ChatQueueId','UserChatQueue','User','findAndCountAll','UserId','updatedAt','createdAt','format','%s/%s','SIP','chatPause','Team','getTeams','addTeams','Agents','online','voicePause','interface','flatMap','sequelize','transaction','forEach','userChatQueue:save','ids','select','field','tq.TeamId','from','join','user_has_teams','clone','push','toString','SELECT','every','TeamId','includes','all','union','value','removeTeams','isEmpty','removeAgents','emit','userChatQueue:remove','addAgents','spread','isArray','getAgents','eml-format','rimraf','zip-dir','request-promise','bluebird','mustache','util','path','to-csv','ejs','crypto','jsforce','desk.js','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/license/util'];(function(_0x5036f6,_0x3b6f45){var _0x351074=function(_0x3d3f15){while(--_0x3d3f15){_0x5036f6['push'](_0x5036f6['shift']());}};_0x351074(++_0x3b6f45);}(_0x2088,0x11d));var _0x8208=function(_0x25a45a,_0x156e4b){_0x25a45a=_0x25a45a-0x0;var _0x237f87=_0x2088[_0x25a45a];return _0x237f87;};'use strict';var emlformat=require(_0x8208('0x0'));var rimraf=require(_0x8208('0x1'));var zipdir=require(_0x8208('0x2'));var jsonpatch=require('fast-json-patch');var rp=require(_0x8208('0x3'));var moment=require('moment');var BPromise=require(_0x8208('0x4'));var Mustache=require(_0x8208('0x5'));var util=require(_0x8208('0x6'));var path=require(_0x8208('0x7'));var sox=require('sox');var csv=require(_0x8208('0x8'));var ejs=require(_0x8208('0x9'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require('lodash');var squel=require('squel');var crypto=require(_0x8208('0xa'));var jsforce=require(_0x8208('0xb'));var deskjs=require(_0x8208('0xc'));var toCsv=require(_0x8208('0x8'));var querystring=require('querystring');var Papa=require(_0x8208('0xd'));var Redis=require(_0x8208('0xe'));var authService=require(_0x8208('0xf'));var qs=require(_0x8208('0x10'));var as=require(_0x8208('0x11'));var hardwareService=require(_0x8208('0x12'));var logger=require(_0x8208('0x13'))(_0x8208('0x14'));var utils=require(_0x8208('0x15'));var config=require('../../config/environment');var licenseUtil=require(_0x8208('0x16'));var db=require('../../mysqldb')['db'];config['redis']=_['defaults'](config[_0x8208('0x17')],{'host':_0x8208('0x18'),'port':0x18eb});var socket=require(_0x8208('0x19'))(new Redis(config[_0x8208('0x17')]));require('./chatQueue.socket')[_0x8208('0x1a')](socket);var jayson=require(_0x8208('0x1b'));var client=jayson[_0x8208('0x1c')][_0x8208('0x1d')]({'port':0x232a});function respondWithRpcPromise(_0x240949,_0x18bbda,_0x258dbd,_0x25ba4d){return new BPromise(function(_0x588797,_0x57dfc3){var _0x55e68e=_0x25ba4d||client;return _0x55e68e[_0x8208('0x1e')](_0x240949,_0x258dbd)['then'](function(_0x22c048){logger[_0x8208('0x1f')](_0x8208('0x20'),_0x18bbda,_0x8208('0x21'));logger[_0x8208('0x22')](_0x8208('0x23'),_0x18bbda,_0x8208('0x21'),JSON[_0x8208('0x24')](_0x22c048));if(_0x22c048[_0x8208('0x25')]){if(_0x22c048[_0x8208('0x25')][_0x8208('0x26')]===0x1f4){logger[_0x8208('0x25')](_0x8208('0x20'),_0x18bbda,_0x22c048[_0x8208('0x25')][_0x8208('0x27')]);return _0x57dfc3(_0x22c048['error'][_0x8208('0x27')]);}logger['error'](_0x8208('0x20'),_0x18bbda,_0x22c048[_0x8208('0x25')][_0x8208('0x27')]);return _0x588797(_0x22c048[_0x8208('0x25')][_0x8208('0x27')]);}else{logger[_0x8208('0x1f')](_0x8208('0x20'),_0x18bbda,_0x8208('0x21'));_0x588797(_0x22c048[_0x8208('0x28')][_0x8208('0x27')]);}})[_0x8208('0x29')](function(_0x2a5b17){logger['error'](_0x8208('0x20'),_0x18bbda,_0x2a5b17);_0x57dfc3(_0x2a5b17);});});}function respondWithStatusCode(_0x25791d,_0x47fe62){_0x47fe62=_0x47fe62||0xcc;return function(_0x21ae0b){if(_0x21ae0b){return _0x25791d[_0x8208('0x2a')](_0x47fe62);}return _0x25791d[_0x8208('0x2b')](_0x47fe62)[_0x8208('0x2c')]();};}function respondWithResult(_0x41f3e5,_0x46e0ad){_0x46e0ad=_0x46e0ad||0xc8;return function(_0x670620){if(_0x670620){return _0x41f3e5['status'](_0x46e0ad)[_0x8208('0x2d')](_0x670620);}};}function respondWithFilteredResult(_0x245f35,_0x548463){return function(_0x1e6f35){if(_0x1e6f35){var _0x4e35f3=typeof _0x548463[_0x8208('0x2e')]===_0x8208('0x2f')&&typeof _0x548463[_0x8208('0x30')]===_0x8208('0x2f');var _0x2f12cf=_0x1e6f35[_0x8208('0x31')];var _0x3df8dc=_0x4e35f3?0x0:_0x548463[_0x8208('0x2e')];var _0x1f95dd=_0x4e35f3?_0x1e6f35[_0x8208('0x31')]:_0x548463[_0x8208('0x2e')]+_0x548463[_0x8208('0x30')];var _0x2a2ce4;if(_0x1f95dd>=_0x2f12cf){_0x1f95dd=_0x2f12cf;_0x2a2ce4=0xc8;}else{_0x2a2ce4=0xce;}_0x245f35['status'](_0x2a2ce4);return _0x245f35[_0x8208('0x32')](_0x8208('0x33'),_0x3df8dc+'-'+_0x1f95dd+'/'+_0x2f12cf)[_0x8208('0x2d')](_0x1e6f35);}return null;};}function patchUpdates(_0x31fdbf){return function(_0x1dd8c3){try{jsonpatch['apply'](_0x1dd8c3,_0x31fdbf,!![]);}catch(_0x2748d2){return BPromise[_0x8208('0x34')](_0x2748d2);}return _0x1dd8c3[_0x8208('0x35')]();};}function saveUpdates(_0x50bf11,_0x54d3e1){return function(_0x180744){if(_0x180744){return _0x180744[_0x8208('0x36')](_0x50bf11)[_0x8208('0x37')](function(_0x26f45a){return _0x26f45a;});}return null;};}function removeEntity(_0x1fa9e9,_0x584c63){return function(_0x47d836){if(_0x47d836){return _0x47d836[_0x8208('0x38')]()[_0x8208('0x37')](function(){var _0x43cac6=_0x47d836[_0x8208('0x39')]({'plain':!![]});var _0x16b8c0=_0x8208('0x3a');return db[_0x8208('0x3b')][_0x8208('0x38')]({'where':{'type':_0x16b8c0,'resourceId':_0x43cac6['id']}})[_0x8208('0x37')](function(){return _0x47d836;});})[_0x8208('0x37')](function(){_0x1fa9e9[_0x8208('0x2b')](0xcc)[_0x8208('0x2c')]();});}};}function handleEntityNotFound(_0x3f1423,_0x127b34){return function(_0x255e14){if(!_0x255e14){_0x3f1423[_0x8208('0x2a')](0x194);}return _0x255e14;};}function handleError(_0x347d99,_0x24bff1){_0x24bff1=_0x24bff1||0x1f4;return function(_0xd6a164){logger['error'](_0xd6a164[_0x8208('0x3c')]);if(_0xd6a164['name']){delete _0xd6a164['name'];}_0x347d99[_0x8208('0x2b')](_0x24bff1)[_0x8208('0x3d')](_0xd6a164);};}exports[_0x8208('0x3e')]=function(_0x52adca,_0x398aab){var _0x58199d={},_0x1a5325={},_0x43d01d={'count':0x0,'rows':[]};var _0x59c774=_['map'](db[_0x8208('0x3f')][_0x8208('0x40')],function(_0xf9c384){return{'name':_0xf9c384['fieldName'],'type':_0xf9c384[_0x8208('0x41')][_0x8208('0x42')]};});_0x1a5325[_0x8208('0x43')]=_[_0x8208('0x44')](_0x59c774,'name');_0x1a5325[_0x8208('0x45')]=_[_0x8208('0x46')](_0x52adca['query']);_0x1a5325[_0x8208('0x47')]=_[_0x8208('0x48')](_0x1a5325[_0x8208('0x43')],_0x1a5325['query']);_0x58199d[_0x8208('0x49')]=_[_0x8208('0x48')](_0x1a5325[_0x8208('0x43')],qs[_0x8208('0x4a')](_0x52adca[_0x8208('0x45')][_0x8208('0x4a')]));_0x58199d[_0x8208('0x49')]=_0x58199d[_0x8208('0x49')][_0x8208('0x4b')]?_0x58199d['attributes']:_0x1a5325[_0x8208('0x43')];if(!_0x52adca[_0x8208('0x45')][_0x8208('0x4c')]('nolimit')){_0x58199d[_0x8208('0x30')]=qs['limit'](_0x52adca[_0x8208('0x45')]['limit']);_0x58199d[_0x8208('0x2e')]=qs[_0x8208('0x2e')](_0x52adca[_0x8208('0x45')][_0x8208('0x2e')]);}_0x58199d[_0x8208('0x4d')]=qs[_0x8208('0x4e')](_0x52adca[_0x8208('0x45')]['sort']);_0x58199d[_0x8208('0x4f')]=qs[_0x8208('0x47')](_[_0x8208('0x50')](_0x52adca[_0x8208('0x45')],_0x1a5325[_0x8208('0x47')]),_0x59c774);if(_0x52adca[_0x8208('0x45')]['filter']){_0x58199d['where']=_[_0x8208('0x51')](_0x58199d[_0x8208('0x4f')],{'$or':_[_0x8208('0x44')](_0x59c774,function(_0x332ed5){if(_0x332ed5[_0x8208('0x41')]!==_0x8208('0x52')){var _0x32e09d={};_0x32e09d[_0x332ed5[_0x8208('0x53')]]={'$like':'%'+_0x52adca['query'][_0x8208('0x54')]+'%'};return _0x32e09d;}})});}_0x58199d=_[_0x8208('0x51')]({},_0x58199d,_0x52adca[_0x8208('0x55')]);var _0x482e26={'where':_0x58199d[_0x8208('0x4f')]};return db['ChatQueue'][_0x8208('0x31')](_0x482e26)[_0x8208('0x37')](function(_0x591ae0){_0x43d01d[_0x8208('0x31')]=_0x591ae0;if(_0x52adca['query'][_0x8208('0x56')]){_0x58199d['include']=[{'all':!![]}];}return db['ChatQueue'][_0x8208('0x57')](_0x58199d);})[_0x8208('0x37')](function(_0x252529){_0x43d01d[_0x8208('0x58')]=_0x252529;return _0x43d01d;})[_0x8208('0x37')](respondWithFilteredResult(_0x398aab,_0x58199d))[_0x8208('0x29')](handleError(_0x398aab,null));};exports[_0x8208('0x59')]=function(_0x498e95,_0x56a7ad){var _0x4b7a14={'raw':!![],'where':{'id':_0x498e95[_0x8208('0x5a')]['id']}},_0x4a6e30={};_0x4a6e30[_0x8208('0x43')]=_[_0x8208('0x46')](db[_0x8208('0x3f')][_0x8208('0x40')]);_0x4a6e30[_0x8208('0x45')]=_[_0x8208('0x46')](_0x498e95[_0x8208('0x45')]);_0x4a6e30['filters']=_[_0x8208('0x48')](_0x4a6e30['model'],_0x4a6e30[_0x8208('0x45')]);_0x4b7a14[_0x8208('0x49')]=_[_0x8208('0x48')](_0x4a6e30[_0x8208('0x43')],qs[_0x8208('0x4a')](_0x498e95[_0x8208('0x45')]['fields']));_0x4b7a14[_0x8208('0x49')]=_0x4b7a14['attributes'][_0x8208('0x4b')]?_0x4b7a14[_0x8208('0x49')]:_0x4a6e30[_0x8208('0x43')];if(_0x498e95[_0x8208('0x45')]['includeAll']){_0x4b7a14['include']=[{'all':!![]}];}_0x4b7a14=_['merge']({},_0x4b7a14,_0x498e95[_0x8208('0x55')]);return db[_0x8208('0x3f')]['find'](_0x4b7a14)[_0x8208('0x37')](handleEntityNotFound(_0x56a7ad,null))['then'](respondWithResult(_0x56a7ad,null))[_0x8208('0x29')](handleError(_0x56a7ad,null));};exports[_0x8208('0x5b')]=function(_0x7dc79f,_0x589265){return db[_0x8208('0x3f')][_0x8208('0x5b')](_0x7dc79f[_0x8208('0x5c')],{})['then'](function(_0x59814f){var _0x59b765=_0x7dc79f[_0x8208('0x5d')]['get']({'plain':!![]});if(!_0x59b765)throw new Error(_0x8208('0x5e'));if(_0x59b765[_0x8208('0x5f')]===_0x8208('0x5d')){var _0x50723b=_0x59814f[_0x8208('0x39')]({'plain':!![]});var _0x34e98c=_0x8208('0x3a');return db[_0x8208('0x60')][_0x8208('0x61')]({'where':{'name':_0x34e98c,'userProfileId':_0x59b765[_0x8208('0x62')]},'raw':!![]})[_0x8208('0x37')](function(_0x4da317){if(_0x4da317&&_0x4da317[_0x8208('0x63')]===0x0){return db[_0x8208('0x3b')][_0x8208('0x5b')]({'name':_0x50723b[_0x8208('0x53')],'resourceId':_0x50723b['id'],'type':_0x4da317['name'],'sectionId':_0x4da317['id']},{})[_0x8208('0x37')](function(){return _0x59814f;});}else{return _0x59814f;}})[_0x8208('0x29')](function(_0x37eab1){logger['error'](_0x8208('0x64'),_0x37eab1);throw _0x37eab1;});}return _0x59814f;})[_0x8208('0x37')](respondWithResult(_0x589265,0xc9))['catch'](handleError(_0x589265,null));};exports['update']=function(_0x35c367,_0x4e1371){if(_0x35c367[_0x8208('0x5c')]['id']){delete _0x35c367[_0x8208('0x5c')]['id'];}return db[_0x8208('0x3f')][_0x8208('0x61')]({'where':{'id':_0x35c367[_0x8208('0x5a')]['id']}})[_0x8208('0x37')](handleEntityNotFound(_0x4e1371,null))[_0x8208('0x37')](saveUpdates(_0x35c367[_0x8208('0x5c')],null))[_0x8208('0x37')](respondWithResult(_0x4e1371,null))[_0x8208('0x29')](handleError(_0x4e1371,null));};exports['destroy']=function(_0x3c52d1,_0x286831){return db[_0x8208('0x3f')][_0x8208('0x61')]({'where':{'id':_0x3c52d1[_0x8208('0x5a')]['id']}})[_0x8208('0x37')](handleEntityNotFound(_0x286831,null))[_0x8208('0x37')](removeEntity(_0x286831,null))[_0x8208('0x29')](handleError(_0x286831,null));};exports['describe']=function(_0x21ee72,_0x4abf0f){return db[_0x8208('0x3f')][_0x8208('0x65')]()[_0x8208('0x37')](respondWithResult(_0x4abf0f,null))[_0x8208('0x29')](handleError(_0x4abf0f,null));};exports[_0x8208('0x66')]=function(_0x16c607,_0x277b41,_0x497cdb){var _0xe084e4={'raw':!![],'where':{}},_0x1fb574={},_0x54efed;return db['ChatQueue'][_0x8208('0x67')]({'where':{'id':_0x16c607['params']['id']}})['then'](handleEntityNotFound(_0x277b41,null))['then'](function(_0x1e681d){if(_0x1e681d){_0x54efed=_0x1e681d[_0x8208('0x39')]({'plain':!![]});_0x1fb574['model']=_['keys'](db['UserChatQueue'][_0x8208('0x40')]);_0x1fb574[_0x8208('0x45')]=_[_0x8208('0x46')](_0x16c607['query']);_0x1fb574['filters']=_[_0x8208('0x48')](_0x1fb574[_0x8208('0x43')],_0x1fb574[_0x8208('0x45')]);_0xe084e4[_0x8208('0x49')]=_[_0x8208('0x48')](_0x1fb574[_0x8208('0x43')],qs[_0x8208('0x4a')](_0x16c607[_0x8208('0x45')][_0x8208('0x4a')]));_0xe084e4['attributes']=_0xe084e4[_0x8208('0x49')][_0x8208('0x4b')]?_0xe084e4[_0x8208('0x49')]:_0x1fb574[_0x8208('0x43')];if(!_0x16c607[_0x8208('0x45')][_0x8208('0x4c')](_0x8208('0x68'))){_0xe084e4[_0x8208('0x30')]=qs[_0x8208('0x30')](_0x16c607[_0x8208('0x45')][_0x8208('0x30')]);_0xe084e4[_0x8208('0x2e')]=qs[_0x8208('0x2e')](_0x16c607[_0x8208('0x45')][_0x8208('0x2e')]);}_0xe084e4[_0x8208('0x4d')]=qs[_0x8208('0x4e')](_0x16c607[_0x8208('0x45')][_0x8208('0x4e')]);_0xe084e4[_0x8208('0x4f')]=qs[_0x8208('0x47')](_[_0x8208('0x50')](_0x16c607[_0x8208('0x45')],_0x1fb574['filters']));_0xe084e4[_0x8208('0x4f')][_0x8208('0x69')]=_0x1e681d['id'];if(_0x16c607[_0x8208('0x45')]['filter']){_0xe084e4[_0x8208('0x4f')]=_[_0x8208('0x51')](_0xe084e4[_0x8208('0x4f')],{'$or':_['map'](_0xe084e4[_0x8208('0x49')],function(_0x156ea6){var _0x3a50aa={};_0x3a50aa[_0x156ea6]={'$like':'%'+_0x16c607['query']['filter']+'%'};return _0x3a50aa;})});}_0xe084e4=_[_0x8208('0x51')]({},_0xe084e4,_0x16c607['options']);return db[_0x8208('0x6a')][_0x8208('0x57')](_0xe084e4);}})[_0x8208('0x37')](function(_0x13675e){if(_0x13675e){return db[_0x8208('0x6b')][_0x8208('0x6c')]({'where':{'id':_['map'](_0x13675e,_0x8208('0x6d')),'role':'agent'},'attributes':['id',_0x8208('0x53'),'chatPause',_0x8208('0x6e'),_0x8208('0x6f')]});}})[_0x8208('0x37')](function(_0x226a50){if(_0x226a50){return{'count':_0x226a50[_0x8208('0x31')],'rows':_['map'](_0x226a50[_0x8208('0x58')],function(_0x4abc30){return{'membername':_0x4abc30[_0x8208('0x53')],'UserId':_0x4abc30['id'],'queue_name':_0x54efed[_0x8208('0x53')],'ChatQueueId':_0x54efed['id'],'interface':util[_0x8208('0x70')](_0x8208('0x71'),_0x8208('0x72'),_0x4abc30[_0x8208('0x53')]),'penalty':0x0,'paused':_0x4abc30[_0x8208('0x73')],'createdAt':_0x4abc30['createdAt'],'updatedAt':_0x4abc30[_0x8208('0x6e')]};})};}else{return{'count':0x0,'rows':[]};}})[_0x8208('0x37')](respondWithFilteredResult(_0x277b41,_0xe084e4))[_0x8208('0x29')](handleError(_0x277b41,null));};exports['getTeams']=function(_0x29463b,_0x7a765c,_0x1acc24){var _0x33011c={};var _0x124dd5={};var _0x5ef832;var _0x893b02;return db['ChatQueue'][_0x8208('0x67')]({'where':{'id':_0x29463b[_0x8208('0x5a')]['id']}})['then'](handleEntityNotFound(_0x7a765c,null))[_0x8208('0x37')](function(_0x55476f){if(_0x55476f){_0x5ef832=_0x55476f;_0x124dd5[_0x8208('0x43')]=_[_0x8208('0x46')](db[_0x8208('0x74')][_0x8208('0x40')]);_0x124dd5[_0x8208('0x45')]=_[_0x8208('0x46')](_0x29463b[_0x8208('0x45')]);_0x124dd5[_0x8208('0x47')]=_['intersection'](_0x124dd5[_0x8208('0x43')],_0x124dd5[_0x8208('0x45')]);_0x33011c[_0x8208('0x49')]=_[_0x8208('0x48')](_0x124dd5['model'],qs[_0x8208('0x4a')](_0x29463b[_0x8208('0x45')][_0x8208('0x4a')]));_0x33011c[_0x8208('0x49')]=_0x33011c['attributes'][_0x8208('0x4b')]?_0x33011c[_0x8208('0x49')]:_0x124dd5[_0x8208('0x43')];_0x33011c[_0x8208('0x4d')]=qs[_0x8208('0x4e')](_0x29463b[_0x8208('0x45')][_0x8208('0x4e')]);_0x33011c[_0x8208('0x4f')]=qs[_0x8208('0x47')](_['pick'](_0x29463b[_0x8208('0x45')],_0x124dd5[_0x8208('0x47')]));if(_0x29463b[_0x8208('0x45')]['filter']){_0x33011c[_0x8208('0x4f')]=_[_0x8208('0x51')](_0x33011c[_0x8208('0x4f')],{'$or':_[_0x8208('0x44')](_0x33011c[_0x8208('0x49')],function(_0x2b2da6){var _0x4df359={};_0x4df359[_0x2b2da6]={'$like':'%'+_0x29463b[_0x8208('0x45')]['filter']+'%'};return _0x4df359;})});}_0x33011c=_['merge']({},_0x33011c,_0x29463b[_0x8208('0x55')]);return _0x5ef832['getTeams'](_0x33011c);}})['then'](function(_0x10e045){if(_0x10e045){_0x893b02=_0x10e045[_0x8208('0x4b')];if(!_0x29463b[_0x8208('0x45')][_0x8208('0x4c')](_0x8208('0x68'))){_0x33011c[_0x8208('0x30')]=qs[_0x8208('0x30')](_0x29463b['query'][_0x8208('0x30')]);_0x33011c[_0x8208('0x2e')]=qs[_0x8208('0x2e')](_0x29463b[_0x8208('0x45')][_0x8208('0x2e')]);}return _0x5ef832[_0x8208('0x75')](_0x33011c);}})[_0x8208('0x37')](function(_0x583946){if(_0x583946){return _0x583946?{'count':_0x893b02,'rows':_0x583946}:null;}})[_0x8208('0x37')](respondWithResult(_0x7a765c,null))[_0x8208('0x29')](handleError(_0x7a765c,null));};exports[_0x8208('0x76')]=function(_0x5bfd91,_0x18f04d,_0x2f8c07){var _0x4963f1=_0x5bfd91[_0x8208('0x5c')]['ids'];return db['Team'][_0x8208('0x57')]({'where':{'id':_0x4963f1},'attributes':['id'],'include':[{'model':db[_0x8208('0x6b')],'as':_0x8208('0x77'),'attributes':['id',_0x8208('0x53'),_0x8208('0x78'),_0x8208('0x79'),_0x8208('0x7a')],'raw':!![]}]})[_0x8208('0x37')](function(_0x5c0fca){if(_0x5c0fca){var _0x24de36=_[_0x8208('0x7b')](_0x5c0fca,function(_0x183d10){var _0x266a41=_0x183d10[_0x8208('0x39')]({'plain':!![]});return _0x266a41['Agents'];});return db[_0x8208('0x3f')][_0x8208('0x61')]({'where':{'id':_0x5bfd91[_0x8208('0x5a')]['id']}})[_0x8208('0x37')](function(_0x1aa30b){return db[_0x8208('0x7c')][_0x8208('0x7d')](function(_0x1a04d3){return _0x1aa30b[_0x8208('0x76')](_0x4963f1,{'transaction':_0x1a04d3})['then'](function(){return BPromise['each'](_0x24de36,function(_0x15eba3){return db[_0x8208('0x6a')]['findOrCreate']({'where':{'UserId':_0x15eba3['id'],'ChatQueueId':_0x5bfd91[_0x8208('0x5a')]['id']},'transaction':_0x1a04d3});});})[_0x8208('0x37')](function(){_0x24de36[_0x8208('0x7e')](function(_0xb68336){socket['emit'](_0x8208('0x7f'),{'UserId':_0xb68336['id'],'ChatQueueId':_0x1aa30b['id']});});});});});}})['then'](respondWithStatusCode(_0x18f04d,null))[_0x8208('0x29')](handleError(_0x18f04d,null));};exports['removeTeams']=function(_0x3caa83,_0x22e8dc,_0x43c2ac){return db[_0x8208('0x74')][_0x8208('0x57')]({'where':{'id':_0x3caa83['query'][_0x8208('0x80')]},'attributes':['id'],'include':[{'model':db['User'],'as':_0x8208('0x77'),'attributes':['id'],'raw':!![]}]})[_0x8208('0x37')](handleEntityNotFound(_0x22e8dc,null))[_0x8208('0x37')](function(_0x3d7712){var _0x3194ec=_[_0x8208('0x44')](_0x3d7712,'id');var _0x2ca6b2=[];var _0x2d4177=[];var _0x135da0=squel[_0x8208('0x81')]();_0x135da0[_0x8208('0x82')](_0x8208('0x83'))[_0x8208('0x84')]('team_has_chat_queues','tq')[_0x8208('0x85')](_0x8208('0x86'),'ut','ut.TeamId\x20=\x20tq.TeamId')[_0x8208('0x4f')]('ChatQueueId\x20=\x20?',_0x3caa83['params']['id']);for(var _0x462813=0x0;_0x462813<_0x3d7712['length'];_0x462813+=0x1){let _0x4da141=_0x3d7712[_0x462813];for(var _0x18adb7=0x0;_0x18adb7<_0x4da141[_0x8208('0x77')][_0x8208('0x4b')];_0x18adb7+=0x1){let _0x37bc3d=_0x4da141[_0x8208('0x77')][_0x18adb7];var _0x5e5538=_0x135da0[_0x8208('0x87')]();_0x5e5538[_0x8208('0x4f')]('ut.UserId\x20=\x20?',_0x37bc3d['id']);_0x2d4177[_0x8208('0x88')](db['sequelize'][_0x8208('0x45')](_0x5e5538[_0x8208('0x89')](),{'type':db[_0x8208('0x7c')]['QueryTypes'][_0x8208('0x8a')]})[_0x8208('0x37')](function(_0x34b83c){if(_0x34b83c[_0x8208('0x4b')]===0x1){return _0x37bc3d['id'];}else{var _0x2cccd4=_[_0x8208('0x8b')](_[_0x8208('0x44')](_0x34b83c,_0x8208('0x8c')),function(_0x226a07){return _[_0x8208('0x8d')](_0x3194ec,_0x226a07);});if(_0x2cccd4){return _0x37bc3d['id'];}}}));}}return BPromise[_0x8208('0x8e')](_0x2d4177)[_0x8208('0x37')](function(_0x350d0b){_0x2ca6b2=_(_0x2ca6b2)[_0x8208('0x8f')](_0x350d0b)['compact']()[_0x8208('0x90')]();return db[_0x8208('0x3f')][_0x8208('0x61')]({'where':{'id':_0x3caa83[_0x8208('0x5a')]['id']}})[_0x8208('0x37')](function(_0x3e029f){return db['sequelize']['transaction'](function(_0x19bdd0){return _0x3e029f[_0x8208('0x91')](_0x3caa83[_0x8208('0x45')][_0x8208('0x80')],{'transaction':_0x19bdd0})[_0x8208('0x37')](function(){if(!_[_0x8208('0x92')](_0x2ca6b2)){return _0x3e029f[_0x8208('0x93')](_0x2ca6b2,{'transaction':_0x19bdd0});}})[_0x8208('0x37')](function(){_0x2ca6b2[_0x8208('0x7e')](function(_0x56a4d5){socket[_0x8208('0x94')](_0x8208('0x95'),{'UserId':_0x56a4d5,'ChatQueueId':_0x3e029f['id']});});});});});});})[_0x8208('0x37')](respondWithStatusCode(_0x22e8dc,null))['catch'](handleError(_0x22e8dc,null));};exports[_0x8208('0x96')]=function(_0x48efb5,_0x5927b8,_0x3a2045){return db[_0x8208('0x3f')][_0x8208('0x61')]({'where':{'id':_0x48efb5['params']['id']}})[_0x8208('0x37')](handleEntityNotFound(_0x5927b8,null))[_0x8208('0x37')](function(_0x131754){if(_0x131754){return _0x131754[_0x8208('0x96')](_0x48efb5['body'][_0x8208('0x80')],_['omit'](_0x48efb5['body'],['ids','id'])||{})[_0x8208('0x97')](function(_0x3d4c51){for(var _0x3390d1=0x0;_0x3390d1<_0x48efb5[_0x8208('0x5c')][_0x8208('0x80')][_0x8208('0x4b')];_0x3390d1+=0x1){socket['emit'](_0x8208('0x7f'),{'UserId':Number(_0x48efb5['body'][_0x8208('0x80')][_0x3390d1]),'ChatQueueId':Number(_0x48efb5['params']['id'])});}return _0x3d4c51;});}})[_0x8208('0x37')](respondWithResult(_0x5927b8,null))['catch'](handleError(_0x5927b8,null));};exports[_0x8208('0x93')]=function(_0x309e2f,_0x3980d8,_0x284c3c){return db[_0x8208('0x3f')]['find']({'where':{'id':_0x309e2f['params']['id']}})[_0x8208('0x37')](handleEntityNotFound(_0x3980d8,null))[_0x8208('0x37')](function(_0xf2a108){if(_0xf2a108){return _0xf2a108['removeAgents'](_0x309e2f[_0x8208('0x45')]['ids'])[_0x8208('0x37')](function(){if(_[_0x8208('0x98')](_0x309e2f[_0x8208('0x45')][_0x8208('0x80')])){for(var _0x378e7d=0x0;_0x378e7d<_0x309e2f[_0x8208('0x45')][_0x8208('0x80')][_0x8208('0x4b')];_0x378e7d+=0x1){socket['emit'](_0x8208('0x95'),{'UserId':Number(_0x309e2f[_0x8208('0x45')][_0x8208('0x80')][_0x378e7d]),'ChatQueueId':Number(_0x309e2f['params']['id'])});}}else{socket[_0x8208('0x94')]('userChatQueue:remove',{'UserId':Number(_0x309e2f[_0x8208('0x45')][_0x8208('0x80')]),'ChatQueueId':Number(_0x309e2f[_0x8208('0x5a')]['id'])});}});}})[_0x8208('0x37')](respondWithStatusCode(_0x3980d8,null))[_0x8208('0x29')](handleError(_0x3980d8,null));};exports[_0x8208('0x99')]=function(_0x3d1c61,_0x2cbbc3,_0x6c95a2){var _0x2c8052={};var _0x2746ff={};var _0xbf82f0;var _0x47d0e1;return db[_0x8208('0x3f')]['findOne']({'where':{'id':_0x3d1c61[_0x8208('0x5a')]['id']}})[_0x8208('0x37')](handleEntityNotFound(_0x2cbbc3,null))[_0x8208('0x37')](function(_0x313f80){if(_0x313f80){_0xbf82f0=_0x313f80;_0x2746ff[_0x8208('0x43')]=_[_0x8208('0x46')](db['User'][_0x8208('0x40')]);_0x2746ff[_0x8208('0x45')]=_[_0x8208('0x46')](_0x3d1c61[_0x8208('0x45')]);_0x2746ff[_0x8208('0x47')]=_[_0x8208('0x48')](_0x2746ff[_0x8208('0x43')],_0x2746ff[_0x8208('0x45')]);_0x2c8052[_0x8208('0x49')]=_['intersection'](_0x2746ff['model'],qs[_0x8208('0x4a')](_0x3d1c61[_0x8208('0x45')]['fields']));_0x2c8052[_0x8208('0x49')]=_0x2c8052[_0x8208('0x49')][_0x8208('0x4b')]?_0x2c8052['attributes']:_0x2746ff[_0x8208('0x43')];_0x2c8052['order']=qs[_0x8208('0x4e')](_0x3d1c61['query'][_0x8208('0x4e')]);_0x2c8052[_0x8208('0x4f')]=qs[_0x8208('0x47')](_[_0x8208('0x50')](_0x3d1c61[_0x8208('0x45')],_0x2746ff[_0x8208('0x47')]));if(_0x3d1c61[_0x8208('0x45')][_0x8208('0x54')]){_0x2c8052['where']=_[_0x8208('0x51')](_0x2c8052[_0x8208('0x4f')],{'$or':_[_0x8208('0x44')](_0x2c8052[_0x8208('0x49')],function(_0x2fa9de){var _0x3ab19e={};_0x3ab19e[_0x2fa9de]={'$like':'%'+_0x3d1c61[_0x8208('0x45')][_0x8208('0x54')]+'%'};return _0x3ab19e;})});}_0x2c8052=_[_0x8208('0x51')]({},_0x2c8052,_0x3d1c61[_0x8208('0x55')]);return _0xbf82f0[_0x8208('0x99')](_0x2c8052);}})[_0x8208('0x37')](function(_0x326ab2){if(_0x326ab2){_0x47d0e1=_0x326ab2[_0x8208('0x4b')];if(!_0x3d1c61[_0x8208('0x45')][_0x8208('0x4c')](_0x8208('0x68'))){_0x2c8052['limit']=qs[_0x8208('0x30')](_0x3d1c61[_0x8208('0x45')][_0x8208('0x30')]);_0x2c8052['offset']=qs[_0x8208('0x2e')](_0x3d1c61[_0x8208('0x45')]['offset']);}return _0xbf82f0[_0x8208('0x99')](_0x2c8052);}})[_0x8208('0x37')](function(_0x4e9394){if(_0x4e9394){return _0x4e9394?{'count':_0x47d0e1,'rows':_0x4e9394}:null;}})['then'](respondWithResult(_0x2cbbc3,null))[_0x8208('0x29')](handleError(_0x2cbbc3,null));};
\ No newline at end of file
index fae45ae..06b644c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0xb268=['save','update','emit','hook','events','../../mysqldb','ChatQueue','setMaxListeners'];(function(_0x5bcaad,_0x4d2d18){var _0x77be71=function(_0x300a83){while(--_0x300a83){_0x5bcaad['push'](_0x5bcaad['shift']());}};_0x77be71(++_0x4d2d18);}(_0xb268,0x114));var _0x8b26=function(_0x54897e,_0x35ca02){_0x54897e=_0x54897e-0x0;var _0x3aea18=_0xb268[_0x54897e];return _0x3aea18;};'use strict';var EventEmitter=require(_0x8b26('0x0'));var ChatQueue=require(_0x8b26('0x1'))['db'][_0x8b26('0x2')];var ChatQueueEvents=new EventEmitter();ChatQueueEvents[_0x8b26('0x3')](0x0);var events={'afterCreate':_0x8b26('0x4'),'afterUpdate':_0x8b26('0x5'),'afterDestroy':'remove'};function emitEvent(_0x4b7173){return function(_0x2fdc64,_0x1667f7,_0x30b255){ChatQueueEvents[_0x8b26('0x6')](_0x4b7173+':'+_0x2fdc64['id'],_0x2fdc64);ChatQueueEvents[_0x8b26('0x6')](_0x4b7173,_0x2fdc64);_0x30b255(null);};}for(var e in events){if(events['hasOwnProperty'](e)){var event=events[e];ChatQueue[_0x8b26('0x7')](e,emitEvent(event));}}module['exports']=ChatQueueEvents;
\ No newline at end of file
index c451961..56945af 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0x0018=['path','rimraf','./chatQueue.attributes','exports','define','lodash','util','api','moment','bluebird','request-promise'];(function(_0x2d2c16,_0x4e88b6){var _0x53f2fb=function(_0x6b6dac){while(--_0x6b6dac){_0x2d2c16['push'](_0x2d2c16['shift']());}};_0x53f2fb(++_0x4e88b6);}(_0x0018,0x1f4));var _0x8001=function(_0x17d9e3,_0x1f969c){_0x17d9e3=_0x17d9e3-0x0;var _0x14192d=_0x0018[_0x17d9e3];return _0x14192d;};'use strict';var _=require(_0x8001('0x0'));var util=require(_0x8001('0x1'));var logger=require('../../config/logger')(_0x8001('0x2'));var moment=require(_0x8001('0x3'));var BPromise=require(_0x8001('0x4'));var rp=require(_0x8001('0x5'));var fs=require('fs');var path=require(_0x8001('0x6'));var rimraf=require(_0x8001('0x7'));var config=require('../../config/environment');var attributes=require(_0x8001('0x8'));module[_0x8001('0x9')]=function(_0x3f07e6,_0x32cd78){return _0x3f07e6[_0x8001('0xa')]('ChatQueue',attributes,{'tableName':'chat_queues','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index a16ab7f..c233aed 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0xe820=['info','result','catch','GetChatQueue','options','raw','where','limit','include','map','model','attributes','ShowChatQueue','ChatQueue','find','lodash','moment','ioredis','../../mysqldb','../../config/utils','rpc','jayson/promise','client','http','redis','defaults','localhost','socket.io-emitter','./chatQueue.socket','register','request','then','ChatQueue,\x20%s,\x20%s','request\x20sent','debug','ChatQueue,\x20%s,\x20%s,\x20%s','stringify','error','message'];(function(_0x119961,_0x38c0a1){var _0x147fe2=function(_0xd2e914){while(--_0xd2e914){_0x119961['push'](_0x119961['shift']());}};_0x147fe2(++_0x38c0a1);}(_0xe820,0xd2));var _0x0e82=function(_0x61d1f4,_0x1f95d){_0x61d1f4=_0x61d1f4-0x0;var _0x164f0a=_0xe820[_0x61d1f4];return _0x164f0a;};'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']('ChatQueue,\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['ChatQueue']['findAll']({'raw':_0x3735c0[_0x0e82('0x1c')]?_0x3735c0[_0x0e82('0x1c')][_0x0e82('0x1d')]===undefined?!![]:![]:!![],'where':_0x3735c0[_0x0e82('0x1c')]?_0x3735c0[_0x0e82('0x1c')][_0x0e82('0x1e')]||null:null,'attributes':_0x3735c0[_0x0e82('0x1c')]?_0x3735c0[_0x0e82('0x1c')]['attributes']||null:null,'limit':_0x3735c0[_0x0e82('0x1c')]?_0x3735c0[_0x0e82('0x1c')][_0x0e82('0x1f')]||null:null,'include':_0x3735c0[_0x0e82('0x1c')]?_0x3735c0['options'][_0x0e82('0x20')]?_[_0x0e82('0x21')](_0x3735c0[_0x0e82('0x1c')][_0x0e82('0x20')],function(_0x4900d3){return{'model':db[_0x4900d3[_0x0e82('0x22')]],'as':_0x4900d3['as'],'attributes':_0x4900d3['attributes'],'include':_0x4900d3['include']?_[_0x0e82('0x21')](_0x4900d3[_0x0e82('0x20')],function(_0x4c5fc1){return{'model':db[_0x4c5fc1[_0x0e82('0x22')]],'as':_0x4c5fc1['as'],'attributes':_0x4c5fc1[_0x0e82('0x23')],'include':_0x4c5fc1[_0x0e82('0x20')]?_['map'](_0x4c5fc1[_0x0e82('0x20')],function(_0x25fa4e){return{'model':db[_0x25fa4e['model']],'as':_0x25fa4e['as'],'attributes':_0x25fa4e[_0x0e82('0x23')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x4300f9){logger[_0x0e82('0x18')]('GetChatQueue',_0x3735c0);logger[_0x0e82('0x13')](_0x0e82('0x1b'),_0x3735c0,JSON[_0x0e82('0x15')](_0x4300f9));_0x224455(_0x4300f9);})['catch'](function(_0x50adb7){logger[_0x0e82('0x16')]('GetChatQueue',_0x50adb7[_0x0e82('0x17')],_0x3735c0);_0x5903c(_0xc9f7ac['error'](0x1f4,_0x50adb7[_0x0e82('0x17')]));});});};exports[_0x0e82('0x24')]=function(_0x44e177){var _0x56ca79=this;return new Promise(function(_0x45a40e,_0x59d2f8){return db[_0x0e82('0x25')][_0x0e82('0x26')]({'raw':_0x44e177[_0x0e82('0x1c')]?_0x44e177[_0x0e82('0x1c')][_0x0e82('0x1d')]===undefined?!![]:![]:!![],'where':_0x44e177[_0x0e82('0x1c')]?_0x44e177['options'][_0x0e82('0x1e')]||null:null,'attributes':_0x44e177[_0x0e82('0x1c')]?_0x44e177[_0x0e82('0x1c')][_0x0e82('0x23')]||null:null,'include':_0x44e177[_0x0e82('0x1c')]?_0x44e177[_0x0e82('0x1c')][_0x0e82('0x20')]?_[_0x0e82('0x21')](_0x44e177[_0x0e82('0x1c')][_0x0e82('0x20')],function(_0x3ac1a5){return{'model':db[_0x3ac1a5[_0x0e82('0x22')]],'as':_0x3ac1a5['as'],'attributes':_0x3ac1a5[_0x0e82('0x23')],'include':_0x3ac1a5[_0x0e82('0x20')]?_[_0x0e82('0x21')](_0x3ac1a5['include'],function(_0x18643f){return{'model':db[_0x18643f[_0x0e82('0x22')]],'as':_0x18643f['as'],'attributes':_0x18643f[_0x0e82('0x23')],'include':_0x18643f[_0x0e82('0x20')]?_['map'](_0x18643f[_0x0e82('0x20')],function(_0x23c08f){return{'model':db[_0x23c08f['model']],'as':_0x23c08f['as'],'attributes':_0x23c08f[_0x0e82('0x23')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x4a855f){logger[_0x0e82('0x18')](_0x0e82('0x24'),_0x44e177);logger[_0x0e82('0x13')](_0x0e82('0x24'),_0x44e177,JSON[_0x0e82('0x15')](_0x4a855f));_0x45a40e(_0x4a855f);})[_0x0e82('0x1a')](function(_0x33a152){logger['error']('ShowChatQueue',_0x33a152[_0x0e82('0x17')],_0x44e177);_0x59d2f8(_0x56ca79[_0x0e82('0x16')](0x1f4,_0x33a152[_0x0e82('0x17')]));});});};
\ No newline at end of file
index e608975..f8d58e2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0x984b=['chatQueue:','update','length'];(function(_0x3ff085,_0x131cda){var _0x3de486=function(_0x5819e0){while(--_0x5819e0){_0x3ff085['push'](_0x3ff085['shift']());}};_0x3de486(++_0x131cda);}(_0x984b,0xee));var _0xb984=function(_0x534624,_0x2cc27b){_0x534624=_0x534624-0x0;var _0x2d63ba=_0x984b[_0x534624];return _0x2d63ba;};'use strict';var ChatQueueEvents=require('./chatQueue.events');var events=['save','remove',_0xb984('0x0')];function createListener(_0x394106,_0x1a7da0){return function(_0x572113){_0x1a7da0['emit'](_0x394106,_0x572113);};}function removeListener(_0x8384b0,_0x340f2c){return function(){ChatQueueEvents['removeListener'](_0x8384b0,_0x340f2c);};}exports['register']=function(_0x2cca53){for(var _0x46c541=0x0,_0x5a605a=events[_0xb984('0x1')];_0x46c541<_0x5a605a;_0x46c541++){var _0x1a00d6=events[_0x46c541];var _0x4d72b7=createListener(_0xb984('0x2')+_0x1a00d6,_0x2cca53);ChatQueueEvents['on'](_0x1a00d6,_0x4d72b7);}};
\ No newline at end of file
index 2005f4f..45be288 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7217=['../../config/environment','./chatQueue.controller','get','isAuthenticated','index','/describe','describe','/:id','show','/:id/members','getMembers','/:id/teams','getTeams','/:id/users','post','addTeams','update','delete','destroy','removeTeams','removeAgents','exports','multer','path','connect-timeout','express','Router','fs-extra'];(function(_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
+var _0x3e74=['../../config/environment','./chatQueue.controller','get','isAuthenticated','index','/describe','describe','/:id','show','getMembers','/:id/teams','getTeams','getAgents','post','addTeams','addAgents','put','delete','removeTeams','/:id/users','removeAgents','exports','multer','path','connect-timeout','express','../../components/auth/service'];(function(_0x20a584,_0xe384a5){var _0x4b41a8=function(_0x2127c6){while(--_0x2127c6){_0x20a584['push'](_0x20a584['shift']());}};_0x4b41a8(++_0xe384a5);}(_0x3e74,0x175));var _0x43e7=function(_0x40b4d7,_0x2e01bd){_0x40b4d7=_0x40b4d7-0x0;var _0x521242=_0x3e74[_0x40b4d7];return _0x521242;};'use strict';var multer=require(_0x43e7('0x0'));var util=require('util');var path=require(_0x43e7('0x1'));var timeout=require(_0x43e7('0x2'));var express=require(_0x43e7('0x3'));var router=express['Router']();var fs_extra=require('fs-extra');var auth=require(_0x43e7('0x4'));var interaction=require('../../components/interaction/service');var config=require(_0x43e7('0x5'));var controller=require(_0x43e7('0x6'));router[_0x43e7('0x7')]('/',auth[_0x43e7('0x8')](),controller[_0x43e7('0x9')]);router['get'](_0x43e7('0xa'),auth[_0x43e7('0x8')](),controller[_0x43e7('0xb')]);router[_0x43e7('0x7')](_0x43e7('0xc'),auth['isAuthenticated'](),controller[_0x43e7('0xd')]);router['get']('/:id/members',auth[_0x43e7('0x8')](),controller[_0x43e7('0xe')]);router['get'](_0x43e7('0xf'),auth['isAuthenticated'](),controller[_0x43e7('0x10')]);router[_0x43e7('0x7')]('/:id/users',auth[_0x43e7('0x8')](),controller[_0x43e7('0x11')]);router[_0x43e7('0x12')]('/',auth[_0x43e7('0x8')](),controller['create']);router['post'](_0x43e7('0xf'),auth[_0x43e7('0x8')](),controller[_0x43e7('0x13')]);router['post']('/:id/users',auth[_0x43e7('0x8')](),controller[_0x43e7('0x14')]);router[_0x43e7('0x15')](_0x43e7('0xc'),auth['isAuthenticated'](),controller['update']);router[_0x43e7('0x16')](_0x43e7('0xc'),auth[_0x43e7('0x8')](),controller['destroy']);router['delete'](_0x43e7('0xf'),auth[_0x43e7('0x8')](),controller[_0x43e7('0x17')]);router[_0x43e7('0x16')](_0x43e7('0x18'),auth[_0x43e7('0x8')](),controller[_0x43e7('0x19')]);module[_0x43e7('0x1a')]=router;
\ No newline at end of file
index 13cbb8f..822e0ee 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0x9270=['DATE','moment','STRING'];(function(_0x2dafbe,_0x5d04de){var _0x58a45a=function(_0x50ac96){while(--_0x50ac96){_0x2dafbe['push'](_0x2dafbe['shift']());}};_0x58a45a(++_0x5d04de);}(_0x9270,0x1d8));var _0x0927=function(_0x3511d3,_0x4107ae){_0x3511d3=_0x3511d3-0x0;var _0x5d6321=_0x9270[_0x3511d3];return _0x5d6321;};'use strict';var moment=require(_0x0927('0x0'));var Sequelize=require('sequelize');module['exports']={'uniqueid':{'type':Sequelize[_0x0927('0x1')],'allowNull':![]},'from':{'type':Sequelize['STRING']},'joinAt':{'type':Sequelize[_0x0927('0x2')]},'leaveAt':{'type':Sequelize['DATE']},'acceptAt':{'type':Sequelize[_0x0927('0x2')]},'exitAt':{'type':Sequelize[_0x0927('0x2')]},'reason':{'type':Sequelize[_0x0927('0x1')]}};
\ No newline at end of file
index 0166f1a..d7b2f3b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0x964b=['update','destroy','then','sendStatus','error','stack','name','send','index','map','rawAttributes','fieldName','type','key','model','query','keys','filters','attributes','intersection','fields','length','nolimit','order','sort','pick','filter','where','VIRTUAL','merge','options','includeAll','include','ChatQueueReport','findAll','rows','catch','show','params','create','body','find','describe','eml-format','rimraf','fast-json-patch','request-promise','moment','util','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','status','end','json','offset','undefined','limit','count','set','Content-Range','reject','save'];(function(_0x311c35,_0x534915){var _0x5cc50c=function(_0x3ad680){while(--_0x3ad680){_0x311c35['push'](_0x311c35['shift']());}};_0x5cc50c(++_0x534915);}(_0x964b,0x112));var _0xb964=function(_0x5efa17,_0x489812){_0x5efa17=_0x5efa17-0x0;var _0x3cdcec=_0x964b[_0x5efa17];return _0x3cdcec;};'use strict';var emlformat=require(_0xb964('0x0'));var rimraf=require(_0xb964('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0xb964('0x2'));var rp=require(_0xb964('0x3'));var moment=require(_0xb964('0x4'));var BPromise=require('bluebird');var Mustache=require('mustache');var util=require(_0xb964('0x5'));var path=require('path');var sox=require(_0xb964('0x6'));var csv=require(_0xb964('0x7'));var ejs=require(_0xb964('0x8'));var fs=require('fs');var fs_extra=require(_0xb964('0x9'));var _=require(_0xb964('0xa'));var squel=require(_0xb964('0xb'));var crypto=require(_0xb964('0xc'));var jsforce=require('jsforce');var deskjs=require('desk.js');var toCsv=require(_0xb964('0x7'));var querystring=require('querystring');var Papa=require('papaparse');var Redis=require(_0xb964('0xd'));var authService=require(_0xb964('0xe'));var qs=require(_0xb964('0xf'));var as=require(_0xb964('0x10'));var hardwareService=require(_0xb964('0x11'));var logger=require(_0xb964('0x12'))('api');var utils=require(_0xb964('0x13'));var config=require(_0xb964('0x14'));var licenseUtil=require(_0xb964('0x15'));var db=require(_0xb964('0x16'))['db'];function respondWithStatusCode(_0x4e7e0f,_0x2137db){_0x2137db=_0x2137db||0xcc;return function(_0x4ddf60){if(_0x4ddf60){return _0x4e7e0f['sendStatus'](_0x2137db);}return _0x4e7e0f[_0xb964('0x17')](_0x2137db)[_0xb964('0x18')]();};}function respondWithResult(_0xe111d2,_0x407f8c){_0x407f8c=_0x407f8c||0xc8;return function(_0x2eebf3){if(_0x2eebf3){return _0xe111d2[_0xb964('0x17')](_0x407f8c)[_0xb964('0x19')](_0x2eebf3);}};}function respondWithFilteredResult(_0x59965c,_0x3f507a){return function(_0x5a2ce4){if(_0x5a2ce4){var _0x538d2e=typeof _0x3f507a[_0xb964('0x1a')]===_0xb964('0x1b')&&typeof _0x3f507a[_0xb964('0x1c')]===_0xb964('0x1b');var _0x96e70a=_0x5a2ce4[_0xb964('0x1d')];var _0x263276=_0x538d2e?0x0:_0x3f507a[_0xb964('0x1a')];var _0x2bd9d5=_0x538d2e?_0x5a2ce4['count']:_0x3f507a['offset']+_0x3f507a['limit'];var _0x2f5068;if(_0x2bd9d5>=_0x96e70a){_0x2bd9d5=_0x96e70a;_0x2f5068=0xc8;}else{_0x2f5068=0xce;}_0x59965c[_0xb964('0x17')](_0x2f5068);return _0x59965c[_0xb964('0x1e')](_0xb964('0x1f'),_0x263276+'-'+_0x2bd9d5+'/'+_0x96e70a)[_0xb964('0x19')](_0x5a2ce4);}return null;};}function patchUpdates(_0x5a49ac){return function(_0x52c497){try{jsonpatch['apply'](_0x52c497,_0x5a49ac,!![]);}catch(_0x36df0d){return BPromise[_0xb964('0x20')](_0x36df0d);}return _0x52c497[_0xb964('0x21')]();};}function saveUpdates(_0x4e5160,_0x3cc265){return function(_0x39f423){if(_0x39f423){return _0x39f423[_0xb964('0x22')](_0x4e5160)['then'](function(_0x486d66){return _0x486d66;});}return null;};}function removeEntity(_0x114124,_0x5469c2){return function(_0x14dece){if(_0x14dece){return _0x14dece[_0xb964('0x23')]()[_0xb964('0x24')](function(){_0x114124[_0xb964('0x17')](0xcc)['end']();});}};}function handleEntityNotFound(_0x1cecce,_0x1d9dcd){return function(_0x2801dd){if(!_0x2801dd){_0x1cecce[_0xb964('0x25')](0x194);}return _0x2801dd;};}function handleError(_0x39273e,_0x21372b){_0x21372b=_0x21372b||0x1f4;return function(_0x13d94d){logger[_0xb964('0x26')](_0x13d94d[_0xb964('0x27')]);if(_0x13d94d['name']){delete _0x13d94d[_0xb964('0x28')];}_0x39273e[_0xb964('0x17')](_0x21372b)[_0xb964('0x29')](_0x13d94d);};}exports[_0xb964('0x2a')]=function(_0x4249fa,_0x24cc22){var _0x20b89a={},_0x4fefa9={},_0x24a42c={'count':0x0,'rows':[]};var _0x434e6e=_[_0xb964('0x2b')](db['ChatQueueReport'][_0xb964('0x2c')],function(_0x42fc07){return{'name':_0x42fc07[_0xb964('0x2d')],'type':_0x42fc07[_0xb964('0x2e')][_0xb964('0x2f')]};});_0x4fefa9[_0xb964('0x30')]=_['map'](_0x434e6e,'name');_0x4fefa9[_0xb964('0x31')]=_[_0xb964('0x32')](_0x4249fa[_0xb964('0x31')]);_0x4fefa9[_0xb964('0x33')]=_['intersection'](_0x4fefa9[_0xb964('0x30')],_0x4fefa9['query']);_0x20b89a[_0xb964('0x34')]=_[_0xb964('0x35')](_0x4fefa9['model'],qs['fields'](_0x4249fa[_0xb964('0x31')][_0xb964('0x36')]));_0x20b89a[_0xb964('0x34')]=_0x20b89a[_0xb964('0x34')][_0xb964('0x37')]?_0x20b89a[_0xb964('0x34')]:_0x4fefa9['model'];if(!_0x4249fa['query']['hasOwnProperty'](_0xb964('0x38'))){_0x20b89a[_0xb964('0x1c')]=qs[_0xb964('0x1c')](_0x4249fa[_0xb964('0x31')][_0xb964('0x1c')]);_0x20b89a[_0xb964('0x1a')]=qs['offset'](_0x4249fa['query'][_0xb964('0x1a')]);}_0x20b89a[_0xb964('0x39')]=qs[_0xb964('0x3a')](_0x4249fa[_0xb964('0x31')][_0xb964('0x3a')]);_0x20b89a['where']=qs[_0xb964('0x33')](_[_0xb964('0x3b')](_0x4249fa[_0xb964('0x31')],_0x4fefa9[_0xb964('0x33')]),_0x434e6e);if(_0x4249fa[_0xb964('0x31')][_0xb964('0x3c')]){_0x20b89a[_0xb964('0x3d')]=_['merge'](_0x20b89a[_0xb964('0x3d')],{'$or':_['map'](_0x434e6e,function(_0x2c6d2f){if(_0x2c6d2f['type']!==_0xb964('0x3e')){var _0x3f00d4={};_0x3f00d4[_0x2c6d2f['name']]={'$like':'%'+_0x4249fa['query'][_0xb964('0x3c')]+'%'};return _0x3f00d4;}})});}_0x20b89a=_[_0xb964('0x3f')]({},_0x20b89a,_0x4249fa[_0xb964('0x40')]);var _0x1d9516={'where':_0x20b89a[_0xb964('0x3d')]};return db['ChatQueueReport'][_0xb964('0x1d')](_0x1d9516)[_0xb964('0x24')](function(_0x27c336){_0x24a42c['count']=_0x27c336;if(_0x4249fa[_0xb964('0x31')][_0xb964('0x41')]){_0x20b89a[_0xb964('0x42')]=[{'all':!![]}];}return db[_0xb964('0x43')][_0xb964('0x44')](_0x20b89a);})['then'](function(_0xe962f9){_0x24a42c[_0xb964('0x45')]=_0xe962f9;return _0x24a42c;})['then'](respondWithFilteredResult(_0x24cc22,_0x20b89a))[_0xb964('0x46')](handleError(_0x24cc22,null));};exports[_0xb964('0x47')]=function(_0x2d89c1,_0x379b31){var _0x4c49c7={'raw':!![],'where':{'id':_0x2d89c1[_0xb964('0x48')]['id']}},_0x4a0d65={};_0x4a0d65[_0xb964('0x30')]=_[_0xb964('0x32')](db[_0xb964('0x43')][_0xb964('0x2c')]);_0x4a0d65[_0xb964('0x31')]=_[_0xb964('0x32')](_0x2d89c1[_0xb964('0x31')]);_0x4a0d65['filters']=_[_0xb964('0x35')](_0x4a0d65['model'],_0x4a0d65[_0xb964('0x31')]);_0x4c49c7[_0xb964('0x34')]=_[_0xb964('0x35')](_0x4a0d65['model'],qs[_0xb964('0x36')](_0x2d89c1[_0xb964('0x31')][_0xb964('0x36')]));_0x4c49c7[_0xb964('0x34')]=_0x4c49c7[_0xb964('0x34')][_0xb964('0x37')]?_0x4c49c7[_0xb964('0x34')]:_0x4a0d65[_0xb964('0x30')];if(_0x2d89c1[_0xb964('0x31')]['includeAll']){_0x4c49c7['include']=[{'all':!![]}];}_0x4c49c7=_['merge']({},_0x4c49c7,_0x2d89c1[_0xb964('0x40')]);return db[_0xb964('0x43')]['find'](_0x4c49c7)[_0xb964('0x24')](handleEntityNotFound(_0x379b31,null))[_0xb964('0x24')](respondWithResult(_0x379b31,null))['catch'](handleError(_0x379b31,null));};exports['create']=function(_0x343942,_0x429d9d){return db[_0xb964('0x43')][_0xb964('0x49')](_0x343942['body'],{})[_0xb964('0x24')](respondWithResult(_0x429d9d,0xc9))['catch'](handleError(_0x429d9d,null));};exports[_0xb964('0x22')]=function(_0x29bf54,_0x3cbfd5){if(_0x29bf54[_0xb964('0x4a')]['id']){delete _0x29bf54[_0xb964('0x4a')]['id'];}return db[_0xb964('0x43')][_0xb964('0x4b')]({'where':{'id':_0x29bf54[_0xb964('0x48')]['id']}})['then'](handleEntityNotFound(_0x3cbfd5,null))[_0xb964('0x24')](saveUpdates(_0x29bf54[_0xb964('0x4a')],null))[_0xb964('0x24')](respondWithResult(_0x3cbfd5,null))[_0xb964('0x46')](handleError(_0x3cbfd5,null));};exports['destroy']=function(_0x386e1e,_0x38e51e){return db[_0xb964('0x43')][_0xb964('0x4b')]({'where':{'id':_0x386e1e[_0xb964('0x48')]['id']}})[_0xb964('0x24')](handleEntityNotFound(_0x38e51e,null))[_0xb964('0x24')](removeEntity(_0x38e51e,null))[_0xb964('0x46')](handleError(_0x38e51e,null));};exports[_0xb964('0x4c')]=function(_0x34fba5,_0x1e1075){return db[_0xb964('0x43')][_0xb964('0x4c')]()[_0xb964('0x24')](respondWithResult(_0x1e1075,null))[_0xb964('0x46')](handleError(_0x1e1075,null));};
\ No newline at end of file
index 2d0d52d..490c8e7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbaf0=['define','ChatQueueReport','report_chat_queue','uniqueid','util','../../config/logger','api','moment','bluebird','request-promise','rimraf','../../config/environment','./chatQueueReport.attributes','exports'];(function(_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
+var _0x0713=['../../config/logger','api','moment','bluebird','request-promise','rimraf','../../config/environment','./chatQueueReport.attributes','exports','define','ChatQueueReport','report_chat_queue','uniqueid'];(function(_0x36c6eb,_0x4fb127){var _0x30675b=function(_0x3a788b){while(--_0x3a788b){_0x36c6eb['push'](_0x36c6eb['shift']());}};_0x30675b(++_0x4fb127);}(_0x0713,0x1ba));var _0x3071=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x0713[_0x3dd15e];return _0x231fd0;};'use strict';var _=require('lodash');var util=require('util');var logger=require(_0x3071('0x0'))(_0x3071('0x1'));var moment=require(_0x3071('0x2'));var BPromise=require(_0x3071('0x3'));var rp=require(_0x3071('0x4'));var fs=require('fs');var path=require('path');var rimraf=require(_0x3071('0x5'));var config=require(_0x3071('0x6'));var attributes=require(_0x3071('0x7'));module[_0x3071('0x8')]=function(_0xabd7b6,_0x41cf76){return _0xabd7b6[_0x3071('0x9')](_0x3071('0xa'),attributes,{'tableName':_0x3071('0xb'),'paranoid':![],'indexes':[{'name':_0x3071('0xc'),'fields':[_0x3071('0xc')]}],'timestamps':!![]});};
\ No newline at end of file
index ca1cfac..422508e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0x503f=['catch','CreateChatQueueReport','create','body','options','raw','UpdateChatQueueReport','ChatQueueReport','update','where','attributes','stringify','lodash','moment','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','request','then','info','ChatQueueReport,\x20%s,\x20%s','request\x20sent','debug','ChatQueueReport,\x20%s,\x20%s,\x20%s','error','code','message','result'];(function(_0x41b239,_0x44d3e9){var _0x47acea=function(_0x3c18b7){while(--_0x3c18b7){_0x41b239['push'](_0x41b239['shift']());}};_0x47acea(++_0x44d3e9);}(_0x503f,0x18d));var _0xf503=function(_0x55cf7b,_0x7a7a98){_0x55cf7b=_0x55cf7b-0x0;var _0x543119=_0x503f[_0x55cf7b];return _0x543119;};'use strict';var _=require(_0xf503('0x0'));var util=require('util');var moment=require(_0xf503('0x1'));var BPromise=require('bluebird');var rs=require(_0xf503('0x2'));var fs=require('fs');var Redis=require(_0xf503('0x3'));var db=require(_0xf503('0x4'))['db'];var utils=require(_0xf503('0x5'));var logger=require(_0xf503('0x6'))(_0xf503('0x7'));var config=require(_0xf503('0x8'));var jayson=require(_0xf503('0x9'));var client=jayson[_0xf503('0xa')][_0xf503('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x28e45c,_0x1e6aef,_0x12deda){return new BPromise(function(_0x80f276,_0x4073e8){return client[_0xf503('0xc')](_0x28e45c,_0x12deda)[_0xf503('0xd')](function(_0xf9d167){logger[_0xf503('0xe')](_0xf503('0xf'),_0x1e6aef,_0xf503('0x10'));logger[_0xf503('0x11')](_0xf503('0x12'),_0x1e6aef,_0xf503('0x10'),JSON['stringify'](_0xf9d167));if(_0xf9d167['error']){if(_0xf9d167[_0xf503('0x13')][_0xf503('0x14')]===0x1f4){logger[_0xf503('0x13')](_0xf503('0xf'),_0x1e6aef,_0xf9d167['error'][_0xf503('0x15')]);return _0x4073e8(_0xf9d167[_0xf503('0x13')][_0xf503('0x15')]);}logger[_0xf503('0x13')]('ChatQueueReport,\x20%s,\x20%s',_0x1e6aef,_0xf9d167[_0xf503('0x13')][_0xf503('0x15')]);return _0x80f276(_0xf9d167[_0xf503('0x13')][_0xf503('0x15')]);}else{logger['info'](_0xf503('0xf'),_0x1e6aef,'request\x20sent');_0x80f276(_0xf9d167[_0xf503('0x16')][_0xf503('0x15')]);}})[_0xf503('0x17')](function(_0x2caf04){logger[_0xf503('0x13')]('ChatQueueReport,\x20%s,\x20%s',_0x1e6aef,_0x2caf04);_0x4073e8(_0x2caf04);});});}exports[_0xf503('0x18')]=function(_0x32afc3){var _0x9ad194=this;return new Promise(function(_0x2d3ee8,_0x3c7fd8){return db['ChatQueueReport'][_0xf503('0x19')](_0x32afc3[_0xf503('0x1a')],{'raw':_0x32afc3[_0xf503('0x1b')]?_0x32afc3[_0xf503('0x1b')][_0xf503('0x1c')]===undefined?!![]:![]:!![]})['then'](function(_0x300f9b){logger[_0xf503('0xe')](_0xf503('0x18'),_0x32afc3);logger[_0xf503('0x11')](_0xf503('0x18'),_0x32afc3,JSON['stringify'](_0x300f9b));_0x2d3ee8(_0x300f9b);})[_0xf503('0x17')](function(_0x489a81){logger[_0xf503('0x13')](_0xf503('0x18'),_0x489a81[_0xf503('0x15')],_0x32afc3);_0x3c7fd8(_0x9ad194[_0xf503('0x13')](0x1f4,_0x489a81['message']));});});};exports[_0xf503('0x1d')]=function(_0x18f907){var _0x151b66=this;return new Promise(function(_0x99aab2,_0x346dfd){return db[_0xf503('0x1e')][_0xf503('0x1f')](_0x18f907[_0xf503('0x1a')],{'raw':_0x18f907[_0xf503('0x1b')]?_0x18f907[_0xf503('0x1b')][_0xf503('0x1c')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x18f907[_0xf503('0x1b')]?_0x18f907[_0xf503('0x1b')][_0xf503('0x20')]||null:null,'attributes':_0x18f907[_0xf503('0x1b')]?_0x18f907[_0xf503('0x1b')][_0xf503('0x21')]||null:null,'limit':_0x18f907[_0xf503('0x1b')]?_0x18f907[_0xf503('0x1b')]['limit']||null:null})['then'](function(_0x69d538){logger[_0xf503('0xe')](_0xf503('0x1d'),_0x18f907);logger['debug'](_0xf503('0x1d'),_0x18f907,JSON[_0xf503('0x22')](_0x69d538));_0x99aab2(_0x69d538);})[_0xf503('0x17')](function(_0x37fc0a){logger[_0xf503('0x13')]('UpdateChatQueueReport',_0x37fc0a[_0xf503('0x15')],_0x18f907);_0x346dfd(_0x151b66['error'](0x1f4,_0x37fc0a[_0xf503('0x15')]));});});};
\ No newline at end of file
index e19beff..ddf010e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0xcf18=['../../components/auth/service','../../config/environment','./chatQueueReport.controller','get','isAuthenticated','index','describe','/:id','show','post','put','update','delete','destroy','exports','multer','util','connect-timeout','Router','fs-extra'];(function(_0x958b43,_0x1dfc07){var _0x213319=function(_0xbeb551){while(--_0xbeb551){_0x958b43['push'](_0x958b43['shift']());}};_0x213319(++_0x1dfc07);}(_0xcf18,0x19f));var _0x8cf1=function(_0x356e8d,_0x24c719){_0x356e8d=_0x356e8d-0x0;var _0x39e65a=_0xcf18[_0x356e8d];return _0x39e65a;};'use strict';var multer=require(_0x8cf1('0x0'));var util=require(_0x8cf1('0x1'));var path=require('path');var timeout=require(_0x8cf1('0x2'));var express=require('express');var router=express[_0x8cf1('0x3')]();var fs_extra=require(_0x8cf1('0x4'));var auth=require(_0x8cf1('0x5'));var interaction=require('../../components/interaction/service');var config=require(_0x8cf1('0x6'));var controller=require(_0x8cf1('0x7'));router[_0x8cf1('0x8')]('/',auth[_0x8cf1('0x9')](),controller[_0x8cf1('0xa')]);router[_0x8cf1('0x8')]('/describe',auth[_0x8cf1('0x9')](),controller[_0x8cf1('0xb')]);router[_0x8cf1('0x8')](_0x8cf1('0xc'),auth['isAuthenticated'](),controller[_0x8cf1('0xd')]);router[_0x8cf1('0xe')]('/',auth[_0x8cf1('0x9')](),controller['create']);router[_0x8cf1('0xf')](_0x8cf1('0xc'),auth[_0x8cf1('0x9')](),controller[_0x8cf1('0x10')]);router[_0x8cf1('0x11')](_0x8cf1('0xc'),auth[_0x8cf1('0x9')](),controller[_0x8cf1('0x12')]);module[_0x8cf1('0x13')]=router;
\ No newline at end of file
index fb9c618..227a7ad 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0xf3cd=['exports','STRING','ENUM','account','queue','DATE','moment','sequelize'];(function(_0x14966a,_0x4a105b){var _0x4f536e=function(_0x3a19b7){while(--_0x3a19b7){_0x14966a['push'](_0x14966a['shift']());}};_0x4f536e(++_0x4a105b);}(_0xf3cd,0xfe));var _0xdf3c=function(_0xaf25ae,_0x2001c1){_0xaf25ae=_0xaf25ae-0x0;var _0x49732d=_0xf3cd[_0xaf25ae];return _0x49732d;};'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 ae7f985..2b5c74e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0x84f4=['count','limit','set','Content-Range','reject','update','then','destroy','error','stack','name','send','map','ChatTransferReport','fieldName','type','key','model','query','keys','intersection','attributes','fields','length','nolimit','order','sort','filters','filter','where','merge','VIRTUAL','includeAll','include','findAll','rows','catch','rawAttributes','options','find','create','body','params','describe','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','to-csv','ejs','lodash','squel','crypto','desk.js','querystring','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','api','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','json','offset','undefined'];(function(_0x1c53e1,_0x2f11a8){var _0x1f5b1f=function(_0x37bc47){while(--_0x37bc47){_0x1c53e1['push'](_0x1c53e1['shift']());}};_0x1f5b1f(++_0x2f11a8);}(_0x84f4,0x76));var _0x484f=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x84f4[_0x3dd15e];return _0x231fd0;};'use strict';var emlformat=require(_0x484f('0x0'));var rimraf=require(_0x484f('0x1'));var zipdir=require(_0x484f('0x2'));var jsonpatch=require(_0x484f('0x3'));var rp=require(_0x484f('0x4'));var moment=require(_0x484f('0x5'));var BPromise=require(_0x484f('0x6'));var Mustache=require(_0x484f('0x7'));var util=require(_0x484f('0x8'));var path=require(_0x484f('0x9'));var sox=require('sox');var csv=require(_0x484f('0xa'));var ejs=require(_0x484f('0xb'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x484f('0xc'));var squel=require(_0x484f('0xd'));var crypto=require(_0x484f('0xe'));var jsforce=require('jsforce');var deskjs=require(_0x484f('0xf'));var toCsv=require(_0x484f('0xa'));var querystring=require(_0x484f('0x10'));var Papa=require('papaparse');var Redis=require(_0x484f('0x11'));var authService=require(_0x484f('0x12'));var qs=require('../../components/parsers/qs');var as=require(_0x484f('0x13'));var hardwareService=require('../../config/license/hardware');var logger=require('../../config/logger')(_0x484f('0x14'));var utils=require('../../config/utils');var config=require(_0x484f('0x15'));var licenseUtil=require(_0x484f('0x16'));var db=require(_0x484f('0x17'))['db'];function respondWithStatusCode(_0x36b08b,_0xabd1a6){_0xabd1a6=_0xabd1a6||0xcc;return function(_0x2349c8){if(_0x2349c8){return _0x36b08b[_0x484f('0x18')](_0xabd1a6);}return _0x36b08b[_0x484f('0x19')](_0xabd1a6)[_0x484f('0x1a')]();};}function respondWithResult(_0x2db764,_0x2b4853){_0x2b4853=_0x2b4853||0xc8;return function(_0x19f929){if(_0x19f929){return _0x2db764['status'](_0x2b4853)[_0x484f('0x1b')](_0x19f929);}};}function respondWithFilteredResult(_0x4d81b7,_0x4a6519){return function(_0x12ce47){if(_0x12ce47){var _0x246d8b=typeof _0x4a6519[_0x484f('0x1c')]===_0x484f('0x1d')&&typeof _0x4a6519['limit']===_0x484f('0x1d');var _0x2e5339=_0x12ce47[_0x484f('0x1e')];var _0x22ea96=_0x246d8b?0x0:_0x4a6519['offset'];var _0x41fcd2=_0x246d8b?_0x12ce47[_0x484f('0x1e')]:_0x4a6519[_0x484f('0x1c')]+_0x4a6519[_0x484f('0x1f')];var _0xb3b204;if(_0x41fcd2>=_0x2e5339){_0x41fcd2=_0x2e5339;_0xb3b204=0xc8;}else{_0xb3b204=0xce;}_0x4d81b7[_0x484f('0x19')](_0xb3b204);return _0x4d81b7[_0x484f('0x20')](_0x484f('0x21'),_0x22ea96+'-'+_0x41fcd2+'/'+_0x2e5339)[_0x484f('0x1b')](_0x12ce47);}return null;};}function patchUpdates(_0x3aab81){return function(_0x177587){try{jsonpatch['apply'](_0x177587,_0x3aab81,!![]);}catch(_0xf8aee2){return BPromise[_0x484f('0x22')](_0xf8aee2);}return _0x177587['save']();};}function saveUpdates(_0x4da7d4,_0x39fd87){return function(_0xd2f9e0){if(_0xd2f9e0){return _0xd2f9e0[_0x484f('0x23')](_0x4da7d4)[_0x484f('0x24')](function(_0x1333e3){return _0x1333e3;});}return null;};}function removeEntity(_0x3cd780,_0x42da1b){return function(_0x5b6820){if(_0x5b6820){return _0x5b6820[_0x484f('0x25')]()['then'](function(){_0x3cd780[_0x484f('0x19')](0xcc)[_0x484f('0x1a')]();});}};}function handleEntityNotFound(_0x5c9b17,_0x38d846){return function(_0x1e6fce){if(!_0x1e6fce){_0x5c9b17[_0x484f('0x18')](0x194);}return _0x1e6fce;};}function handleError(_0x1c077d,_0x24bf04){_0x24bf04=_0x24bf04||0x1f4;return function(_0x4e8ada){logger[_0x484f('0x26')](_0x4e8ada[_0x484f('0x27')]);if(_0x4e8ada['name']){delete _0x4e8ada[_0x484f('0x28')];}_0x1c077d[_0x484f('0x19')](_0x24bf04)[_0x484f('0x29')](_0x4e8ada);};}exports['index']=function(_0x8d5692,_0x5a17b2){var _0x2842d3={},_0x3465e8={},_0x3da99e={'count':0x0,'rows':[]};var _0x3bfa5d=_[_0x484f('0x2a')](db[_0x484f('0x2b')]['rawAttributes'],function(_0x2aa780){return{'name':_0x2aa780[_0x484f('0x2c')],'type':_0x2aa780[_0x484f('0x2d')][_0x484f('0x2e')]};});_0x3465e8[_0x484f('0x2f')]=_[_0x484f('0x2a')](_0x3bfa5d,_0x484f('0x28'));_0x3465e8[_0x484f('0x30')]=_[_0x484f('0x31')](_0x8d5692[_0x484f('0x30')]);_0x3465e8['filters']=_[_0x484f('0x32')](_0x3465e8[_0x484f('0x2f')],_0x3465e8['query']);_0x2842d3[_0x484f('0x33')]=_[_0x484f('0x32')](_0x3465e8[_0x484f('0x2f')],qs[_0x484f('0x34')](_0x8d5692[_0x484f('0x30')][_0x484f('0x34')]));_0x2842d3['attributes']=_0x2842d3[_0x484f('0x33')][_0x484f('0x35')]?_0x2842d3['attributes']:_0x3465e8['model'];if(!_0x8d5692['query']['hasOwnProperty'](_0x484f('0x36'))){_0x2842d3[_0x484f('0x1f')]=qs[_0x484f('0x1f')](_0x8d5692['query'][_0x484f('0x1f')]);_0x2842d3[_0x484f('0x1c')]=qs['offset'](_0x8d5692[_0x484f('0x30')][_0x484f('0x1c')]);}_0x2842d3[_0x484f('0x37')]=qs[_0x484f('0x38')](_0x8d5692[_0x484f('0x30')][_0x484f('0x38')]);_0x2842d3['where']=qs[_0x484f('0x39')](_['pick'](_0x8d5692[_0x484f('0x30')],_0x3465e8['filters']),_0x3bfa5d);if(_0x8d5692['query'][_0x484f('0x3a')]){_0x2842d3[_0x484f('0x3b')]=_[_0x484f('0x3c')](_0x2842d3[_0x484f('0x3b')],{'$or':_['map'](_0x3bfa5d,function(_0x36bb28){if(_0x36bb28[_0x484f('0x2d')]!==_0x484f('0x3d')){var _0x3ab6c0={};_0x3ab6c0[_0x36bb28[_0x484f('0x28')]]={'$like':'%'+_0x8d5692['query'][_0x484f('0x3a')]+'%'};return _0x3ab6c0;}})});}_0x2842d3=_['merge']({},_0x2842d3,_0x8d5692['options']);var _0x48ea57={'where':_0x2842d3[_0x484f('0x3b')]};return db[_0x484f('0x2b')][_0x484f('0x1e')](_0x48ea57)[_0x484f('0x24')](function(_0x247ae8){_0x3da99e[_0x484f('0x1e')]=_0x247ae8;if(_0x8d5692[_0x484f('0x30')][_0x484f('0x3e')]){_0x2842d3[_0x484f('0x3f')]=[{'all':!![]}];}return db[_0x484f('0x2b')][_0x484f('0x40')](_0x2842d3);})['then'](function(_0x4483ba){_0x3da99e[_0x484f('0x41')]=_0x4483ba;return _0x3da99e;})[_0x484f('0x24')](respondWithFilteredResult(_0x5a17b2,_0x2842d3))[_0x484f('0x42')](handleError(_0x5a17b2,null));};exports['show']=function(_0x1f9c9c,_0x583aa9){var _0xf31087={'raw':!![],'where':{'id':_0x1f9c9c['params']['id']}},_0x18d17e={};_0x18d17e['model']=_[_0x484f('0x31')](db['ChatTransferReport'][_0x484f('0x43')]);_0x18d17e[_0x484f('0x30')]=_[_0x484f('0x31')](_0x1f9c9c[_0x484f('0x30')]);_0x18d17e[_0x484f('0x39')]=_[_0x484f('0x32')](_0x18d17e[_0x484f('0x2f')],_0x18d17e[_0x484f('0x30')]);_0xf31087['attributes']=_[_0x484f('0x32')](_0x18d17e[_0x484f('0x2f')],qs[_0x484f('0x34')](_0x1f9c9c[_0x484f('0x30')]['fields']));_0xf31087[_0x484f('0x33')]=_0xf31087[_0x484f('0x33')]['length']?_0xf31087[_0x484f('0x33')]:_0x18d17e[_0x484f('0x2f')];if(_0x1f9c9c[_0x484f('0x30')][_0x484f('0x3e')]){_0xf31087['include']=[{'all':!![]}];}_0xf31087=_[_0x484f('0x3c')]({},_0xf31087,_0x1f9c9c[_0x484f('0x44')]);return db['ChatTransferReport'][_0x484f('0x45')](_0xf31087)['then'](handleEntityNotFound(_0x583aa9,null))[_0x484f('0x24')](respondWithResult(_0x583aa9,null))['catch'](handleError(_0x583aa9,null));};exports[_0x484f('0x46')]=function(_0xf10ebf,_0x28111c){return db[_0x484f('0x2b')][_0x484f('0x46')](_0xf10ebf[_0x484f('0x47')],{})[_0x484f('0x24')](respondWithResult(_0x28111c,0xc9))[_0x484f('0x42')](handleError(_0x28111c,null));};exports['update']=function(_0xa962da,_0x1b6583){if(_0xa962da[_0x484f('0x47')]['id']){delete _0xa962da[_0x484f('0x47')]['id'];}return db[_0x484f('0x2b')][_0x484f('0x45')]({'where':{'id':_0xa962da[_0x484f('0x48')]['id']}})[_0x484f('0x24')](handleEntityNotFound(_0x1b6583,null))['then'](saveUpdates(_0xa962da[_0x484f('0x47')],null))[_0x484f('0x24')](respondWithResult(_0x1b6583,null))[_0x484f('0x42')](handleError(_0x1b6583,null));};exports[_0x484f('0x25')]=function(_0x899b39,_0x5754c6){return db[_0x484f('0x2b')][_0x484f('0x45')]({'where':{'id':_0x899b39[_0x484f('0x48')]['id']}})[_0x484f('0x24')](handleEntityNotFound(_0x5754c6,null))[_0x484f('0x24')](removeEntity(_0x5754c6,null))[_0x484f('0x42')](handleError(_0x5754c6,null));};exports['describe']=function(_0x690470,_0x23ed0b){return db[_0x484f('0x2b')][_0x484f('0x49')]()[_0x484f('0x24')](respondWithResult(_0x23ed0b,null))[_0x484f('0x42')](handleError(_0x23ed0b,null));};
\ No newline at end of file
index a01c0fb..6dc42d1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0x8b03=['moment','bluebird','request-promise','path','rimraf','../../config/environment','exports','define','ChatTransferReport','report_chat_transfer','uniqueid','lodash','../../config/logger','api'];(function(_0x5756f8,_0x38be4b){var _0x543e9f=function(_0x376b66){while(--_0x376b66){_0x5756f8['push'](_0x5756f8['shift']());}};_0x543e9f(++_0x38be4b);}(_0x8b03,0xcf));var _0x38b0=function(_0x20a584,_0xe384a5){_0x20a584=_0x20a584-0x0;var _0x4b41a8=_0x8b03[_0x20a584];return _0x4b41a8;};'use strict';var _=require(_0x38b0('0x0'));var util=require('util');var logger=require(_0x38b0('0x1'))(_0x38b0('0x2'));var moment=require(_0x38b0('0x3'));var BPromise=require(_0x38b0('0x4'));var rp=require(_0x38b0('0x5'));var fs=require('fs');var path=require(_0x38b0('0x6'));var rimraf=require(_0x38b0('0x7'));var config=require(_0x38b0('0x8'));var attributes=require('./chatTransferReport.attributes');module[_0x38b0('0x9')]=function(_0x9f60b,_0x32271f){return _0x9f60b[_0x38b0('0xa')](_0x38b0('0xb'),attributes,{'tableName':_0x38b0('0xc'),'paranoid':![],'indexes':[{'name':_0x38b0('0xd'),'fields':[_0x38b0('0xd')]}],'timestamps':!![]});};
\ No newline at end of file
index 448dbf3..295a861 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0xa135=['http','request','request\x20sent','debug','stringify','error','ChatTransferReport,\x20%s,\x20%s','message','info','result','catch','util','moment','bluebird','ioredis','../../mysqldb','../../config/logger','rpc','../../config/environment','jayson/promise'];(function(_0x2be8c2,_0x14a4b5){var _0x97f531=function(_0xcee58d){while(--_0xcee58d){_0x2be8c2['push'](_0x2be8c2['shift']());}};_0x97f531(++_0x14a4b5);}(_0xa135,0x15f));var _0x5a13=function(_0x4c540d,_0x4df1d4){_0x4c540d=_0x4c540d-0x0;var _0x2a055a=_0xa135[_0x4c540d];return _0x2a055a;};'use strict';var _=require('lodash');var util=require(_0x5a13('0x0'));var moment=require(_0x5a13('0x1'));var BPromise=require(_0x5a13('0x2'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x5a13('0x3'));var db=require(_0x5a13('0x4'))['db'];var utils=require('../../config/utils');var logger=require(_0x5a13('0x5'))(_0x5a13('0x6'));var config=require(_0x5a13('0x7'));var jayson=require(_0x5a13('0x8'));var client=jayson['client'][_0x5a13('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x7e5ccd,_0x2ce99e,_0x707e54){return new BPromise(function(_0xad04,_0x59190d){return client[_0x5a13('0xa')](_0x7e5ccd,_0x707e54)['then'](function(_0x1f5779){logger['info']('ChatTransferReport,\x20%s,\x20%s',_0x2ce99e,_0x5a13('0xb'));logger[_0x5a13('0xc')]('ChatTransferReport,\x20%s,\x20%s,\x20%s',_0x2ce99e,_0x5a13('0xb'),JSON[_0x5a13('0xd')](_0x1f5779));if(_0x1f5779[_0x5a13('0xe')]){if(_0x1f5779['error']['code']===0x1f4){logger[_0x5a13('0xe')](_0x5a13('0xf'),_0x2ce99e,_0x1f5779['error'][_0x5a13('0x10')]);return _0x59190d(_0x1f5779[_0x5a13('0xe')][_0x5a13('0x10')]);}logger[_0x5a13('0xe')](_0x5a13('0xf'),_0x2ce99e,_0x1f5779['error'][_0x5a13('0x10')]);return _0xad04(_0x1f5779[_0x5a13('0xe')][_0x5a13('0x10')]);}else{logger[_0x5a13('0x11')](_0x5a13('0xf'),_0x2ce99e,_0x5a13('0xb'));_0xad04(_0x1f5779[_0x5a13('0x12')][_0x5a13('0x10')]);}})[_0x5a13('0x13')](function(_0x4e8ef1){logger[_0x5a13('0xe')](_0x5a13('0xf'),_0x2ce99e,_0x4e8ef1);_0x59190d(_0x4e8ef1);});});}
\ No newline at end of file
index 4ac4edb..2ff2ed8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0x65c9=['destroy','exports','multer','util','path','connect-timeout','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./chatTransferReport.controller','get','isAuthenticated','index','/describe','/:id','show','post','create','update'];(function(_0x1ca910,_0x59c484){var _0x4a88d7=function(_0x28dc02){while(--_0x28dc02){_0x1ca910['push'](_0x1ca910['shift']());}};_0x4a88d7(++_0x59c484);}(_0x65c9,0x152));var _0x965c=function(_0x256afb,_0x247f23){_0x256afb=_0x256afb-0x0;var _0x1b9103=_0x65c9[_0x256afb];return _0x1b9103;};'use strict';var multer=require(_0x965c('0x0'));var util=require(_0x965c('0x1'));var path=require(_0x965c('0x2'));var timeout=require(_0x965c('0x3'));var express=require('express');var router=express[_0x965c('0x4')]();var fs_extra=require(_0x965c('0x5'));var auth=require(_0x965c('0x6'));var interaction=require(_0x965c('0x7'));var config=require(_0x965c('0x8'));var controller=require(_0x965c('0x9'));router[_0x965c('0xa')]('/',auth[_0x965c('0xb')](),controller[_0x965c('0xc')]);router['get'](_0x965c('0xd'),auth[_0x965c('0xb')](),controller['describe']);router[_0x965c('0xa')](_0x965c('0xe'),auth[_0x965c('0xb')](),controller[_0x965c('0xf')]);router[_0x965c('0x10')]('/',auth[_0x965c('0xb')](),controller[_0x965c('0x11')]);router['put'](_0x965c('0xe'),auth[_0x965c('0xb')](),controller[_0x965c('0x12')]);router['delete'](_0x965c('0xe'),auth[_0x965c('0xb')](),controller[_0x965c('0x13')]);module[_0x965c('0x14')]=router;
\ No newline at end of file
index c3bccf8..2066f08 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0x2750=['BOOLEAN','ENUM','rounded','squared','We\x20are\x20here!','Chat','Contact\x20us','Powered\x20by\x20xCALLY','TEXT','Form\x20properly\x20submitted','Form\x20submission\x20error','Send','Feedback','thumb','star','stringify','name','input','getDataValue','parse','onlineForm','setDataValue','textarea','Comments','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.','Skip','Account:\x20{{account.name}}<br/>{{#queue}}Queue:\x20{{queue.name}}<br/>{{/queue}}From\x20:\x20{{from}}','website_alias','bottom_right','alternate','#fafafa','System','Status\x20to\x20put\x20when\x20mandatory\x20disposition\x20is\x20enabled','Enabled/disables\x20mandatory\x20dispo\x20on\x20a\x20queue','mandatoryDispositionPauseId','mandatoryDisposition','Generated\x20by\x20XCALLY\x20Motion','Meeting\x20generated\x20for\x20interaction\x20#{{interaction.id}}\x20by\x20{{agent.name}}','sequelize','exports','STRING','address','email','Agent','#011F6A','#ffffff','INTEGER'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x2750,0x13b));var _0x0275=function(_0x15e540,_0x5a2c61){_0x15e540=_0x15e540-0x0;var _0x1dfa09=_0x2750[_0x15e540];return _0x1dfa09;};'use strict';var Sequelize=require(_0x0275('0x0'));var rs=require('randomstring');module[_0x0275('0x1')]={'name':{'type':Sequelize[_0x0275('0x2')],'allowNull':![]},'address':{'type':Sequelize[_0x0275('0x2')],'allowNull':![],'unique':_0x0275('0x3')},'description':{'type':Sequelize[_0x0275('0x2')]},'mapKey':{'type':Sequelize[_0x0275('0x2')],'defaultValue':_0x0275('0x4')},'mapKeyOffline':{'type':Sequelize[_0x0275('0x2')],'defaultValue':_0x0275('0x4')},'key':{'type':Sequelize[_0x0275('0x2')],'allowNull':![]},'agentAlias':{'type':Sequelize['STRING'],'defaultValue':_0x0275('0x5')},'customerAlias':{'type':Sequelize[_0x0275('0x2')],'defaultValue':'Me'},'color':{'type':Sequelize[_0x0275('0x2')],'allowNull':![],'defaultValue':_0x0275('0x6'),'validate':{'notEmpty':!![]}},'color_button':{'type':Sequelize['STRING'],'allowNull':![],'defaultValue':_0x0275('0x6'),'validate':{'notEmpty':!![]}},'textColor':{'type':Sequelize[_0x0275('0x2')],'allowNull':![],'defaultValue':_0x0275('0x7'),'validate':{'notEmpty':!![]}},'textButtonColor':{'type':Sequelize['STRING'],'allowNull':![],'defaultValue':'#ffffff','validate':{'notEmpty':!![]}},'fontSize':{'type':Sequelize[_0x0275('0x8')],'defaultValue':0xf},'remote':{'type':Sequelize['STRING']},'animation':{'type':Sequelize[_0x0275('0x9')],'defaultValue':!![]},'header_shape':{'type':Sequelize[_0x0275('0xa')](_0x0275('0xb'),_0x0275('0xc')),'defaultValue':_0x0275('0xb')},'header_online':{'type':Sequelize['STRING'],'defaultValue':_0x0275('0xd')},'start_chat_button':{'type':Sequelize[_0x0275('0x2')],'defaultValue':_0x0275('0xe')},'offline_chat_button':{'type':Sequelize['STRING'],'defaultValue':'Send'},'header_offline':{'type':Sequelize[_0x0275('0x2')],'defaultValue':_0x0275('0xf')},'download_transcript':{'type':Sequelize[_0x0275('0x9')],'defaultValue':!![]},'timeout':{'type':Sequelize[_0x0275('0x8')],'defaultValue':0x0},'whiteLabel':{'type':Sequelize[_0x0275('0x2')],'defaultValue':_0x0275('0x10')},'defaultWhiteLabel':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'sitepic':{'type':Sequelize[_0x0275('0x11')]},'closingQuestion':{'type':Sequelize[_0x0275('0x2')],'defaultValue':'Do\x20you\x20want\x20to\x20close\x20the\x20interaction?'},'formSubmitSuccessMessage':{'type':Sequelize[_0x0275('0x2')],'defaultValue':_0x0275('0x12')},'formSubmitFailureMessage':{'type':Sequelize['STRING'],'defaultValue':_0x0275('0x13')},'noteTitle':{'type':Sequelize[_0x0275('0x2')],'defaultValue':'Note'},'placeholderMessage':{'type':Sequelize['STRING'],'defaultValue':'Type\x20a\x20message'},'closingMessage':{'type':Sequelize['STRING'],'defaultValue':'Thanks\x20you\x20for\x20your\x20time!'},'closingMessageButton':{'type':Sequelize[_0x0275('0x2')],'defaultValue':_0x0275('0x14')},'skipMessageButton':{'type':Sequelize[_0x0275('0x2')],'defaultValue':'Skip'},'conditionAgreement':{'type':Sequelize[_0x0275('0x9')],'defaultValue':![]},'enableRating':{'type':Sequelize[_0x0275('0x9')],'defaultValue':![]},'enableFeedback':{'type':Sequelize[_0x0275('0x9')],'defaultValue':![]},'enableSendButton':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'feedbackTitle':{'type':Sequelize[_0x0275('0x2')],'defaultValue':_0x0275('0x15')},'ratingType':{'type':Sequelize['ENUM']('star',_0x0275('0x16')),'defaultValue':_0x0275('0x17')},'ratingStarsNumber':{'type':Sequelize[_0x0275('0x8')],'defaultValue':0x5},'onlineForm':{'type':Sequelize['TEXT'],'defaultValue':function(){return JSON[_0x0275('0x18')]({'items':[{'type':'input','variable':null,'config':{'placeholder':_0x0275('0x19'),'type':'text','required':!![]},'props':{'title':_0x0275('0x19'),'helpText':''}},{'type':_0x0275('0x1a'),'props':{'title':'email','helpText':''},'config':{'required':!![],'placeholder':_0x0275('0x4'),'type':_0x0275('0x4')},'variable':null}],'fromKey':0x1});},'get':function(){return this[_0x0275('0x1b')]('onlineForm')?JSON[_0x0275('0x1c')](this[_0x0275('0x1b')](_0x0275('0x1d'))):{};},'set':function(_0x15813f){return this[_0x0275('0x1e')](_0x0275('0x1d'),JSON['stringify'](_0x15813f));}},'offlineForm':{'type':Sequelize[_0x0275('0x11')],'defaultValue':function(){return JSON[_0x0275('0x18')]({'items':[{'type':_0x0275('0x1a'),'props':{'title':_0x0275('0x4'),'helpText':''},'config':{'required':!![],'placeholder':_0x0275('0x4'),'type':'email'},'variable':null},{'type':_0x0275('0x1f'),'config':{'placeholder':_0x0275('0x20')},'props':{'title':_0x0275('0x20'),'helpText':_0x0275('0x21')}}],'fromKey':0x0});},'get':function(){return this[_0x0275('0x1b')]('offlineForm')?JSON[_0x0275('0x1c')](this[_0x0275('0x1b')](_0x0275('0x22'))):{};},'set':function(_0x489d7f){return this['setDataValue'](_0x0275('0x22'),JSON[_0x0275('0x18')](_0x489d7f));}},'token':{'type':Sequelize['STRING'],'defaultValue':function(){return rs[_0x0275('0x23')]();}},'autoclose':{'type':Sequelize[_0x0275('0x9')],'defaultValue':!![]},'enableCustomerWriting':{'type':Sequelize[_0x0275('0x9')],'defaultValue':![]},'forwardTranscript':{'type':Sequelize[_0x0275('0x9')],'defaultValue':![]},'forwardTranscriptMessage':{'type':Sequelize['STRING']},'forwardOffline':{'type':Sequelize[_0x0275('0x9')],'defaultValue':![]},'forwardOfflineAddress':{'type':Sequelize[_0x0275('0x2')]},'waitingTitle':{'type':Sequelize[_0x0275('0x2')],'defaultValue':_0x0275('0x24')},'waitingMessage':{'type':Sequelize['STRING'],'defaultValue':_0x0275('0x25')},'offlineMessageSubject':{'type':Sequelize['STRING'],'defaultValue':_0x0275('0x26')},'offlineMessageBody':{'type':Sequelize['STRING'],'defaultValue':_0x0275('0x27')},'enableUnmanagedNote':{'type':Sequelize[_0x0275('0x9')],'defaultValue':!![]},'unmanagedMessage':{'type':Sequelize['STRING'],'defaultValue':_0x0275('0x28')},'skipUnmanaged':{'type':Sequelize[_0x0275('0x2')],'defaultValue':_0x0275('0x29')},'sendUnmanaged':{'type':Sequelize[_0x0275('0x2')],'defaultValue':'Send'},'enableCustomerAttachment':{'type':Sequelize[_0x0275('0x9')],'defaultValue':![]},'enableCustomerCheckmarks':{'type':Sequelize[_0x0275('0x9')],'defaultValue':![]},'agentAvatar':{'type':Sequelize[_0x0275('0x11')]},'showAgentAvatar':{'type':Sequelize[_0x0275('0x9')],'defaultValue':![]},'timezone':{'type':Sequelize[_0x0275('0x2')]},'notificationTemplate':{'type':Sequelize['TEXT'],'defaultValue':function(){return _0x0275('0x2a');}},'notificationSound':{'type':Sequelize[_0x0275('0x9')],'defaultValue':!![]},'notificationShake':{'type':Sequelize[_0x0275('0x9')],'defaultValue':![]},'hideWhenOffline':{'type':Sequelize[_0x0275('0x9')],'defaultValue':![]},'agentIdentifier':{'type':Sequelize[_0x0275('0x2')],'defaultValue':_0x0275('0x2b')},'waitForTheAssignedAgent':{'type':Sequelize[_0x0275('0x8')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0xa},'alignment':{'type':Sequelize[_0x0275('0x2')],'defaultValue':_0x0275('0x2c')},'verticalAlignment':{'type':Sequelize[_0x0275('0x8')],'defaultValue':0x1e},'labelText':{'type':Sequelize[_0x0275('0x2')],'defaultValue':'CHAT'},'messagesAlignment':{'type':Sequelize[_0x0275('0x2')],'defaultValue':_0x0275('0x2d')},'defaultTitle':{'type':Sequelize[_0x0275('0x2')]},'customerAvatar':{'type':Sequelize[_0x0275('0x11')]},'showCustomerAvatar':{'type':Sequelize[_0x0275('0x9')],'defaultValue':![]},'messageFontSize':{'type':Sequelize[_0x0275('0x8')],'defaultValue':0xc},'backgroundColor':{'type':Sequelize[_0x0275('0x2')],'allowNull':![],'defaultValue':_0x0275('0x2e'),'validate':{'notEmpty':!![]}},'queueTransfer':{'type':Sequelize[_0x0275('0x9')],'defaultValue':![]},'queueTransferTimeout':{'type':Sequelize[_0x0275('0x8')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c},'agentTransfer':{'type':Sequelize[_0x0275('0x9')],'defaultValue':![]},'agentTransferTimeout':{'type':Sequelize[_0x0275('0x8')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c},'systemAlias':{'type':Sequelize[_0x0275('0x2')],'defaultValue':_0x0275('0x2f')},'systemAvatar':{'type':Sequelize['TEXT']},'mandatoryDispositionPauseId':{'type':Sequelize[_0x0275('0x8')],'comment':_0x0275('0x30')},'mandatoryDisposition':{'type':Sequelize['BOOLEAN'],'defaultValue':![],'comment':_0x0275('0x31'),'set':function(_0x76b8fa){if(!_0x76b8fa)this[_0x0275('0x1e')](_0x0275('0x32'),null);this[_0x0275('0x1e')](_0x0275('0x33'),_0x76b8fa);}},'vidaooEscalation':{'type':Sequelize[_0x0275('0x9')],'defaultValue':![]},'vidaooApiKey':{'type':Sequelize['STRING']},'vidaooTopic':{'type':Sequelize[_0x0275('0x2')],'allowNull':![],'defaultValue':_0x0275('0x34')},'vidaooNote':{'type':Sequelize[_0x0275('0x2')],'defaultValue':function(){return _0x0275('0x35');}},'vidaooMetadata':{'type':Sequelize['TEXT'],'defaultValue':null},'openNewInteraction':{'type':Sequelize[_0x0275('0x9')],'defaultValue':![],'allowNull':!![]},'subjectOffline':{'type':Sequelize[_0x0275('0x11')]}};
\ No newline at end of file
index 59e8bc8..1c19f09 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0x4cc3=['autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','describe','ChatWebsiteId','Disposition','getDispositions','findOne','hasOwnProperty','includeAll','removeDispositions','ids','getAnswers','CannedAnswer','removeAnswers','addLogo','sitepic','file','addAvatar','agentAvatar','filename','addCustomerAvatar','customerAvatar','systemAvatar','join','root','server/files/images/logos/default_logo.svg','../../config/license/util','custom','isNil','server/files/images/logos/','download','server/files/images/avatars/default_avatar.png','server/files/images/avatars/','getCustomerAvatar','server/files/images/avatars/customer_avatar.png','showCustomerAvatar','existsSync','getSystemAvatar','server/files/images/avatars/system_avatar.png','notify','setUA','headers','user-agent','getResult','CmContact','Sequelize','createdAt','difference','CompanyId','ListId','from','ValidationError','from\x20is\x20mandatory','body\x20is\x20mandatory\x20and\x20not\x20empty','includes','mapKey\x20invalid,\x20please\x20use\x20one\x20of\x20these:\x20','CmList','List','Contacts','updatedAt','DESC','ChatApplication','Applications','account','applications','list','defaults','mapKey','contact','customerIp','cf-connecting-ip','x-forwarded-for','first','split','firstName','x-real-port','referer','browser','version','format','unknown','%s\x20%s','device','%s\x20%s\x20%s','vendor','threadId','externalUrl','ChatInteraction','interaction','lastName','messageId','created','push','*,*,*,*','ChatMessage','UserId','User','unshift','agent','waitForTheAssignedAgent','Start','startRouting','EventManager','offline','files','no\x20available\x20attributes','mapKeyOffline','mapKeyOffline\x20invalid,\x20please\x20use\x20one\x20of\x20these:\x20','MailAccount','spread','readFileSync','server/files/templates/chatOfflineMessage.ejs','utf8','render','toPairs','offlineMessageBody','ChatOfflineMessage','originalname','mimetype','server','attachments','offline-chat','openNewInteraction','transaction','Attachment','MailServerOut','Smtp','CloudProvider','forwardOffline','forwardOfflineAddress','getSmtpOptions','sendMail','\x22%s\x22\x20<%s>','email','offlineMessageSubject','MailAccountId','subjectOffline','toPairsIn','Chat','NotifyMailAccount','notifyMail','remove','Could\x20not\x20remove\x20attachment\x20file','addInteraction','omit','getInteractions','Contact','Owner','fullname','internal','Tag','Tags','color','tag','Command','getSnippet','timezone','interval','indexOf','true','[%s][INTERVAL][%s]\x20%s\x20%s\x20(%s)','ONLINE','OFFLINE','No\x20timezone','inspect','Interval','Intervals','getProactiveActions','getLicense','virtual','License','chatLicenseExceeded','all','some','server/files/chat/iframe.ejs','remote','x-real-ip','connection','alignment','verticalAlignment','labelText','textColor','backgroundColor','hideWhenOffline','sequelize','Transaction','ISOLATION_LEVELS','priority','getApplications','addProactiveActions','chatProactiveAction','ChatProactiveAction','online','false','offlineForm','onlineForm','items','fromKey','getOfflineMessages','Attachments','addAgents','emit','userChatWebsite:save','removeAgents','isArray','userChatWebsite:remove','getAgents','bluebird','util','ejs','fs-extra','lodash','querystring','../../components/parsers/qs','../../config/logger','api','../../mysqldb','redis','localhost','./chatWebsite.socket','register','http','client','request','then','info','request\x20sent','ChatWebsite,\x20%s,\x20%s,\x20%s','stringify','error','ChatWebsite,\x20%s,\x20%s','message','result','catch','sendStatus','status','json','offset','undefined','count','update','get','ChatWebsites','UserProfileResource','destroy','name','send','index','Pause','map','ChatWebsite','rawAttributes','fieldName','key','model','query','keys','filters','intersection','fields','attributes','nolimit','limit','order','sort','where','pick','type','filter','merge','options','include','findAll','rows','show','params','mandatoryDispositionPause','length','find','create','body','Unable\x20to\x20retrieve\x20the\x20current\x20user','user','UserProfileSection'];(function(_0x432682,_0x253044){var _0x463d05=function(_0xa73403){while(--_0xa73403){_0x432682['push'](_0x432682['shift']());}};_0x463d05(++_0x253044);}(_0x4cc3,0xcf));var _0x34cc=function(_0x3d735e,_0x1a3fc8){_0x3d735e=_0x3d735e-0x0;var _0x32cb56=_0x4cc3[_0x3d735e];return _0x32cb56;};'use strict';var BPromise=require(_0x34cc('0x0'));var Mustache=require('mustache');var util=require(_0x34cc('0x1'));var path=require('path');var ejs=require(_0x34cc('0x2'));var fs=require('fs');var fs_extra=require(_0x34cc('0x3'));var _=require(_0x34cc('0x4'));var querystring=require(_0x34cc('0x5'));var Redis=require('ioredis');var qs=require(_0x34cc('0x6'));var logger=require(_0x34cc('0x7'))(_0x34cc('0x8'));var config=require('../../config/environment');var db=require(_0x34cc('0x9'))['db'];config[_0x34cc('0xa')]=_['defaults'](config['redis'],{'host':_0x34cc('0xb'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0x34cc('0xa')]));require(_0x34cc('0xc'))[_0x34cc('0xd')](socket);var htmlToText=require('html-to-text');var jayson=require('jayson/promise');var client=jayson['client'][_0x34cc('0xe')]({'port':0x232c});var client9002=jayson[_0x34cc('0xf')]['http']({'port':0x232a});var client9003=jayson['client'][_0x34cc('0xe')]({'port':0x232b});var client9001=jayson[_0x34cc('0xf')][_0x34cc('0xe')]({'port':0x2329});function respondWithRpcPromise(_0x35031d,_0x45041c,_0x15f26d,_0x30f108){return new BPromise(function(_0x50a51b,_0x450f1c){var _0x5a92c2=_0x30f108||client;return _0x5a92c2[_0x34cc('0x10')](_0x35031d,_0x15f26d)[_0x34cc('0x11')](function(_0x4767dc){logger[_0x34cc('0x12')]('ChatWebsite,\x20%s,\x20%s',_0x45041c,_0x34cc('0x13'));logger['debug'](_0x34cc('0x14'),_0x45041c,_0x34cc('0x13'),JSON[_0x34cc('0x15')](_0x4767dc));if(_0x4767dc[_0x34cc('0x16')]){if(_0x4767dc[_0x34cc('0x16')]['code']===0x1f4){logger[_0x34cc('0x16')](_0x34cc('0x17'),_0x45041c,_0x4767dc[_0x34cc('0x16')][_0x34cc('0x18')]);return _0x450f1c(_0x4767dc[_0x34cc('0x16')][_0x34cc('0x18')]);}logger['error'](_0x34cc('0x17'),_0x45041c,_0x4767dc[_0x34cc('0x16')][_0x34cc('0x18')]);return _0x50a51b(_0x4767dc[_0x34cc('0x16')][_0x34cc('0x18')]);}else{logger[_0x34cc('0x12')]('ChatWebsite,\x20%s,\x20%s',_0x45041c,_0x34cc('0x13'));_0x50a51b(_0x4767dc[_0x34cc('0x19')][_0x34cc('0x18')]);}})[_0x34cc('0x1a')](function(_0x353479){logger[_0x34cc('0x16')](_0x34cc('0x17'),_0x45041c,_0x353479);_0x450f1c(_0x353479);});});}function respondWithStatusCode(_0x16dc05,_0x39d87d){_0x39d87d=_0x39d87d||0xcc;return function(_0x26f603){if(_0x26f603){return _0x16dc05[_0x34cc('0x1b')](_0x39d87d);}return _0x16dc05[_0x34cc('0x1c')](_0x39d87d)['end']();};}function respondWithResult(_0x441071,_0x14d219){_0x14d219=_0x14d219||0xc8;return function(_0xf05475){if(_0xf05475){return _0x441071[_0x34cc('0x1c')](_0x14d219)[_0x34cc('0x1d')](_0xf05475);}};}function respondWithFilteredResult(_0xe811fa,_0x5ec943){return function(_0x438d22){if(_0x438d22){var _0x194189=typeof _0x5ec943[_0x34cc('0x1e')]==='undefined'&&typeof _0x5ec943['limit']===_0x34cc('0x1f');var _0xc52115=_0x438d22['count'];var _0x33adcb=_0x194189?0x0:_0x5ec943['offset'];var _0x319cc3=_0x194189?_0x438d22[_0x34cc('0x20')]:_0x5ec943['offset']+_0x5ec943['limit'];var _0xfe46d0;if(_0x319cc3>=_0xc52115){_0x319cc3=_0xc52115;_0xfe46d0=0xc8;}else{_0xfe46d0=0xce;}_0xe811fa[_0x34cc('0x1c')](_0xfe46d0);return _0xe811fa['set']('Content-Range',_0x33adcb+'-'+_0x319cc3+'/'+_0xc52115)['json'](_0x438d22);}return null;};}function saveUpdates(_0x10f20d){return function(_0x3518e0){if(_0x3518e0){return _0x3518e0[_0x34cc('0x21')](_0x10f20d)['then'](function(_0x1d2afc){return _0x1d2afc;});}return null;};}function removeEntity(_0x55eb65){return function(_0x1b864e){if(_0x1b864e){return _0x1b864e['destroy']()['then'](function(){var _0x59806a=_0x1b864e[_0x34cc('0x22')]({'plain':!![]});var _0x19ad88=_0x34cc('0x23');return db[_0x34cc('0x24')][_0x34cc('0x25')]({'where':{'type':_0x19ad88,'resourceId':_0x59806a['id']}})[_0x34cc('0x11')](function(){return _0x1b864e;});})[_0x34cc('0x11')](function(){_0x55eb65[_0x34cc('0x1c')](0xcc)['end']();});}};}function handleEntityNotFound(_0x163e34){return function(_0x1ddceb){if(!_0x1ddceb){_0x163e34['sendStatus'](0x194);}return _0x1ddceb;};}function handleError(_0x4355e3,_0x17e9de){_0x17e9de=_0x17e9de||0x1f4;return function(_0x49b9a9){logger[_0x34cc('0x16')](_0x49b9a9['stack']);if(_0x49b9a9[_0x34cc('0x26')]){delete _0x49b9a9[_0x34cc('0x26')];}_0x4355e3[_0x34cc('0x1c')](_0x17e9de)[_0x34cc('0x27')](_0x49b9a9);};}exports[_0x34cc('0x28')]=function(_0x5ea13f,_0x1168dc){var _0x373e88={'include':[{'model':db[_0x34cc('0x29')],'as':'mandatoryDispositionPause'}]},_0x19b0c8={},_0x8e3ff3={'count':0x0,'rows':[]};var _0x518d47=_[_0x34cc('0x2a')](db[_0x34cc('0x2b')][_0x34cc('0x2c')],function(_0x370ccb){return{'name':_0x370ccb[_0x34cc('0x2d')],'type':_0x370ccb['type'][_0x34cc('0x2e')]};});_0x19b0c8[_0x34cc('0x2f')]=_['map'](_0x518d47,_0x34cc('0x26'));_0x19b0c8[_0x34cc('0x30')]=_[_0x34cc('0x31')](_0x5ea13f[_0x34cc('0x30')]);_0x19b0c8[_0x34cc('0x32')]=_['intersection'](_0x19b0c8[_0x34cc('0x2f')],_0x19b0c8[_0x34cc('0x30')]);_0x373e88['attributes']=_[_0x34cc('0x33')](_0x19b0c8['model'],qs[_0x34cc('0x34')](_0x5ea13f[_0x34cc('0x30')]['fields']));_0x373e88[_0x34cc('0x35')]=_0x373e88[_0x34cc('0x35')]['length']?_0x373e88['attributes']:_0x19b0c8[_0x34cc('0x2f')];if(!_0x5ea13f[_0x34cc('0x30')]['hasOwnProperty'](_0x34cc('0x36'))){_0x373e88[_0x34cc('0x37')]=qs[_0x34cc('0x37')](_0x5ea13f[_0x34cc('0x30')][_0x34cc('0x37')]);_0x373e88[_0x34cc('0x1e')]=qs[_0x34cc('0x1e')](_0x5ea13f[_0x34cc('0x30')]['offset']);}_0x373e88[_0x34cc('0x38')]=qs['sort'](_0x5ea13f[_0x34cc('0x30')][_0x34cc('0x39')]);_0x373e88[_0x34cc('0x3a')]=qs[_0x34cc('0x32')](_[_0x34cc('0x3b')](_0x5ea13f[_0x34cc('0x30')],_0x19b0c8[_0x34cc('0x32')]),_0x518d47);if(_0x5ea13f[_0x34cc('0x30')]['filter']){_0x373e88['where']=_['merge'](_0x373e88[_0x34cc('0x3a')],{'$or':_['map'](_0x518d47,function(_0x1b4352){if(_0x1b4352[_0x34cc('0x3c')]!=='VIRTUAL'){var _0x1984a6={};_0x1984a6[_0x1b4352['name']]={'$like':'%'+_0x5ea13f['query'][_0x34cc('0x3d')]+'%'};return _0x1984a6;}})});}_0x373e88=_[_0x34cc('0x3e')]({},_0x373e88,_0x5ea13f[_0x34cc('0x3f')]);var _0x4ecc92={'where':_0x373e88[_0x34cc('0x3a')]};return db[_0x34cc('0x2b')][_0x34cc('0x20')](_0x4ecc92)[_0x34cc('0x11')](function(_0x308181){_0x8e3ff3['count']=_0x308181;if(_0x5ea13f[_0x34cc('0x30')]['includeAll']){_0x373e88[_0x34cc('0x40')]=[{'all':!![]}];}return db['ChatWebsite'][_0x34cc('0x41')](_0x373e88);})[_0x34cc('0x11')](function(_0x3c79ba){_0x8e3ff3[_0x34cc('0x42')]=_0x3c79ba;return _0x8e3ff3;})['then'](respondWithFilteredResult(_0x1168dc,_0x373e88))['catch'](handleError(_0x1168dc,null));};exports[_0x34cc('0x43')]=function(_0x50e0ef,_0x2276ea){var _0x203e8f={'raw':![],'where':{'id':_0x50e0ef[_0x34cc('0x44')]['id']},'include':[{'model':db['Pause'],'as':_0x34cc('0x45')}]},_0x1bbbfe={};_0x1bbbfe[_0x34cc('0x2f')]=_[_0x34cc('0x31')](db[_0x34cc('0x2b')][_0x34cc('0x2c')]);_0x1bbbfe['query']=_[_0x34cc('0x31')](_0x50e0ef[_0x34cc('0x30')]);_0x1bbbfe[_0x34cc('0x32')]=_[_0x34cc('0x33')](_0x1bbbfe['model'],_0x1bbbfe[_0x34cc('0x30')]);_0x203e8f['attributes']=_[_0x34cc('0x33')](_0x1bbbfe[_0x34cc('0x2f')],qs[_0x34cc('0x34')](_0x50e0ef['query'][_0x34cc('0x34')]));_0x203e8f[_0x34cc('0x35')]=_0x203e8f[_0x34cc('0x35')][_0x34cc('0x46')]?_0x203e8f['attributes']:_0x1bbbfe[_0x34cc('0x2f')];if(_0x50e0ef[_0x34cc('0x30')]['includeAll']){_0x203e8f[_0x34cc('0x40')]=[{'all':!![]}];}_0x203e8f=_[_0x34cc('0x3e')]({},_0x203e8f,_0x50e0ef[_0x34cc('0x3f')]);return db[_0x34cc('0x2b')][_0x34cc('0x47')](_0x203e8f)[_0x34cc('0x11')](handleEntityNotFound(_0x2276ea,null))['then'](respondWithResult(_0x2276ea,null))[_0x34cc('0x1a')](handleError(_0x2276ea,null));};exports[_0x34cc('0x48')]=function(_0x28ab63,_0x56ec97){return db[_0x34cc('0x2b')][_0x34cc('0x48')](_0x28ab63[_0x34cc('0x49')],{})[_0x34cc('0x11')](function(_0x25c856){var _0x84411d=_0x28ab63['user'][_0x34cc('0x22')]({'plain':!![]});if(!_0x84411d)throw new Error(_0x34cc('0x4a'));if(_0x84411d['role']===_0x34cc('0x4b')){var _0x29918a=_0x25c856[_0x34cc('0x22')]({'plain':!![]});var _0x1bb09a=_0x34cc('0x23');return db[_0x34cc('0x4c')][_0x34cc('0x47')]({'where':{'name':_0x1bb09a,'userProfileId':_0x84411d['userProfileId']},'raw':!![]})[_0x34cc('0x11')](function(_0x4ee57a){if(_0x4ee57a&&_0x4ee57a[_0x34cc('0x4d')]===0x0){return db[_0x34cc('0x24')][_0x34cc('0x48')]({'name':_0x29918a['name'],'resourceId':_0x29918a['id'],'type':_0x4ee57a[_0x34cc('0x26')],'sectionId':_0x4ee57a['id']},{})[_0x34cc('0x11')](function(){return _0x25c856;});}else{return _0x25c856;}})[_0x34cc('0x1a')](function(_0xf4051d){logger[_0x34cc('0x16')](_0x34cc('0x4e'),_0xf4051d);throw _0xf4051d;});}return _0x25c856;})[_0x34cc('0x11')](respondWithResult(_0x56ec97,0xc9))[_0x34cc('0x1a')](handleError(_0x56ec97,null));};exports[_0x34cc('0x21')]=function(_0x510aac,_0x433236){if(_0x510aac['body']['id']){delete _0x510aac[_0x34cc('0x49')]['id'];}return db[_0x34cc('0x2b')][_0x34cc('0x47')]({'where':{'id':_0x510aac[_0x34cc('0x44')]['id']},'include':[{'model':db[_0x34cc('0x29')],'as':'mandatoryDispositionPause'}]})['then'](handleEntityNotFound(_0x433236,null))[_0x34cc('0x11')](saveUpdates(_0x510aac[_0x34cc('0x49')],null))[_0x34cc('0x11')](respondWithResult(_0x433236,null))[_0x34cc('0x1a')](handleError(_0x433236,null));};exports[_0x34cc('0x25')]=function(_0x5a38ed,_0x5c6ef3){return db[_0x34cc('0x2b')]['find']({'where':{'id':_0x5a38ed[_0x34cc('0x44')]['id']}})[_0x34cc('0x11')](handleEntityNotFound(_0x5c6ef3,null))[_0x34cc('0x11')](removeEntity(_0x5c6ef3,null))[_0x34cc('0x1a')](handleError(_0x5c6ef3,null));};exports[_0x34cc('0x4f')]=function(_0x483bd5,_0xfaa779){return db[_0x34cc('0x2b')]['describe']()['then'](respondWithResult(_0xfaa779,null))['catch'](handleError(_0xfaa779,null));};exports['addDisposition']=function(_0x2b2e6d,_0x288fb8){if(_0x2b2e6d['body']['id']){delete _0x2b2e6d[_0x34cc('0x49')]['id'];}return db[_0x34cc('0x2b')][_0x34cc('0x47')]({'where':{'id':_0x2b2e6d[_0x34cc('0x44')]['id']}})[_0x34cc('0x11')](handleEntityNotFound(_0x288fb8,null))[_0x34cc('0x11')](function(_0x3b184b){if(_0x3b184b){_0x2b2e6d[_0x34cc('0x49')][_0x34cc('0x50')]=_0x3b184b['id'];return db[_0x34cc('0x51')][_0x34cc('0x48')](_0x2b2e6d['body']);}})[_0x34cc('0x11')](respondWithResult(_0x288fb8,null))[_0x34cc('0x1a')](handleError(_0x288fb8,null));};exports[_0x34cc('0x52')]=function(_0x44128d,_0x35a231){var _0x5ed376={'raw':![],'where':{}};var _0x2a0a2d={};var _0x38dac5={'count':0x0,'rows':[]};return db['ChatWebsite'][_0x34cc('0x53')]({'where':{'id':_0x44128d['params']['id']}})[_0x34cc('0x11')](handleEntityNotFound(_0x35a231,null))[_0x34cc('0x11')](function(_0x2980d5){if(_0x2980d5){_0x2a0a2d[_0x34cc('0x2f')]=_[_0x34cc('0x31')](db[_0x34cc('0x51')][_0x34cc('0x2c')]);_0x2a0a2d[_0x34cc('0x30')]=_[_0x34cc('0x31')](_0x44128d[_0x34cc('0x30')]);_0x2a0a2d[_0x34cc('0x32')]=_['intersection'](_0x2a0a2d[_0x34cc('0x2f')],_0x2a0a2d[_0x34cc('0x30')]);_0x5ed376[_0x34cc('0x35')]=_[_0x34cc('0x33')](_0x2a0a2d[_0x34cc('0x2f')],qs['fields'](_0x44128d[_0x34cc('0x30')][_0x34cc('0x34')]));_0x5ed376[_0x34cc('0x35')]=_0x5ed376[_0x34cc('0x35')][_0x34cc('0x46')]?_0x5ed376['attributes']:_0x2a0a2d[_0x34cc('0x2f')];if(!_0x44128d[_0x34cc('0x30')][_0x34cc('0x54')](_0x34cc('0x36'))){_0x5ed376['limit']=qs['limit'](_0x44128d[_0x34cc('0x30')][_0x34cc('0x37')]);_0x5ed376[_0x34cc('0x1e')]=qs['offset'](_0x44128d['query'][_0x34cc('0x1e')]);}_0x5ed376[_0x34cc('0x38')]=qs[_0x34cc('0x39')](_0x44128d[_0x34cc('0x30')]['sort']);_0x5ed376[_0x34cc('0x3a')]=qs['filters'](_['pick'](_0x44128d['query'],_0x2a0a2d[_0x34cc('0x32')]));_0x5ed376['where'][_0x34cc('0x50')]=_0x2980d5['id'];if(_0x44128d[_0x34cc('0x30')]['filter']){_0x5ed376[_0x34cc('0x3a')]=_[_0x34cc('0x3e')](_0x5ed376[_0x34cc('0x3a')],{'$or':_[_0x34cc('0x2a')](_0x5ed376[_0x34cc('0x35')],function(_0x2fdac){var _0x46d108={};_0x46d108[_0x2fdac]={'$like':'%'+_0x44128d['query']['filter']+'%'};return _0x46d108;})});}_0x5ed376=_[_0x34cc('0x3e')]({},_0x5ed376,_0x44128d[_0x34cc('0x3f')]);return db[_0x34cc('0x51')][_0x34cc('0x20')]({'where':_0x5ed376[_0x34cc('0x3a')]})[_0x34cc('0x11')](function(_0x376613){_0x38dac5[_0x34cc('0x20')]=_0x376613;if(_0x44128d[_0x34cc('0x30')][_0x34cc('0x55')]){_0x5ed376[_0x34cc('0x40')]=[{'all':!![]}];}return db['Disposition'][_0x34cc('0x41')](_0x5ed376);})[_0x34cc('0x11')](function(_0x305506){_0x38dac5[_0x34cc('0x42')]=_0x305506;return _0x38dac5;});}})['then'](respondWithFilteredResult(_0x35a231,_0x5ed376))[_0x34cc('0x1a')](handleError(_0x35a231,null));};exports[_0x34cc('0x56')]=function(_0x3bd945,_0x26ea35){return db[_0x34cc('0x2b')][_0x34cc('0x47')]({'where':{'id':_0x3bd945[_0x34cc('0x44')]['id']}})[_0x34cc('0x11')](handleEntityNotFound(_0x26ea35,null))['then'](function(_0x5d4f27){if(_0x5d4f27){return _0x5d4f27[_0x34cc('0x56')](_0x3bd945[_0x34cc('0x30')][_0x34cc('0x57')]);}})[_0x34cc('0x11')](respondWithStatusCode(_0x26ea35,null))['catch'](handleError(_0x26ea35,null));};exports['addAnswer']=function(_0x1e4f63,_0x466141){if(_0x1e4f63['body']['id']){delete _0x1e4f63[_0x34cc('0x49')]['id'];}return db[_0x34cc('0x2b')]['find']({'where':{'id':_0x1e4f63[_0x34cc('0x44')]['id']}})[_0x34cc('0x11')](handleEntityNotFound(_0x466141,null))[_0x34cc('0x11')](function(_0x414816){if(_0x414816){_0x1e4f63[_0x34cc('0x49')][_0x34cc('0x50')]=_0x414816['id'];return db['CannedAnswer']['create'](_0x1e4f63[_0x34cc('0x49')]);}})[_0x34cc('0x11')](respondWithResult(_0x466141,null))[_0x34cc('0x1a')](handleError(_0x466141,null));};exports[_0x34cc('0x58')]=function(_0xb980c4,_0x40b691){var _0x492851={'raw':![],'where':{}};var _0x268e2e={};var _0x44e0a0={'count':0x0,'rows':[]};return db[_0x34cc('0x2b')][_0x34cc('0x53')]({'where':{'id':_0xb980c4[_0x34cc('0x44')]['id']}})[_0x34cc('0x11')](handleEntityNotFound(_0x40b691,null))[_0x34cc('0x11')](function(_0xe124b){if(_0xe124b){_0x268e2e['model']=_[_0x34cc('0x31')](db['CannedAnswer'][_0x34cc('0x2c')]);_0x268e2e[_0x34cc('0x30')]=_[_0x34cc('0x31')](_0xb980c4[_0x34cc('0x30')]);_0x268e2e[_0x34cc('0x32')]=_['intersection'](_0x268e2e[_0x34cc('0x2f')],_0x268e2e[_0x34cc('0x30')]);_0x492851[_0x34cc('0x35')]=_[_0x34cc('0x33')](_0x268e2e[_0x34cc('0x2f')],qs[_0x34cc('0x34')](_0xb980c4['query']['fields']));_0x492851['attributes']=_0x492851[_0x34cc('0x35')][_0x34cc('0x46')]?_0x492851[_0x34cc('0x35')]:_0x268e2e[_0x34cc('0x2f')];if(!_0xb980c4[_0x34cc('0x30')][_0x34cc('0x54')](_0x34cc('0x36'))){_0x492851[_0x34cc('0x37')]=qs[_0x34cc('0x37')](_0xb980c4[_0x34cc('0x30')][_0x34cc('0x37')]);_0x492851[_0x34cc('0x1e')]=qs[_0x34cc('0x1e')](_0xb980c4['query'][_0x34cc('0x1e')]);}_0x492851[_0x34cc('0x38')]=qs[_0x34cc('0x39')](_0xb980c4['query']['sort']);_0x492851[_0x34cc('0x3a')]=qs[_0x34cc('0x32')](_[_0x34cc('0x3b')](_0xb980c4[_0x34cc('0x30')],_0x268e2e[_0x34cc('0x32')]));_0x492851[_0x34cc('0x3a')][_0x34cc('0x50')]=_0xe124b['id'];if(_0xb980c4['query'][_0x34cc('0x3d')]){_0x492851[_0x34cc('0x3a')]=_[_0x34cc('0x3e')](_0x492851[_0x34cc('0x3a')],{'$or':_[_0x34cc('0x2a')](_0x492851['attributes'],function(_0x1e04cb){var _0x47b5b5={};_0x47b5b5[_0x1e04cb]={'$like':'%'+_0xb980c4[_0x34cc('0x30')][_0x34cc('0x3d')]+'%'};return _0x47b5b5;})});}_0x492851=_['merge']({},_0x492851,_0xb980c4[_0x34cc('0x3f')]);return db[_0x34cc('0x59')][_0x34cc('0x20')]({'where':_0x492851[_0x34cc('0x3a')]})[_0x34cc('0x11')](function(_0x2d779d){_0x44e0a0[_0x34cc('0x20')]=_0x2d779d;if(_0xb980c4[_0x34cc('0x30')]['includeAll']){_0x492851['include']=[{'all':!![]}];}return db['CannedAnswer']['findAll'](_0x492851);})[_0x34cc('0x11')](function(_0xb9afb8){_0x44e0a0[_0x34cc('0x42')]=_0xb9afb8;return _0x44e0a0;});}})[_0x34cc('0x11')](respondWithFilteredResult(_0x40b691,_0x492851))['catch'](handleError(_0x40b691,null));};exports['removeAnswers']=function(_0x341b56,_0x4e0ccd){return db['ChatWebsite'][_0x34cc('0x47')]({'where':{'id':_0x341b56[_0x34cc('0x44')]['id']}})['then'](handleEntityNotFound(_0x4e0ccd,null))[_0x34cc('0x11')](function(_0x462915){if(_0x462915){return _0x462915[_0x34cc('0x5a')](_0x341b56[_0x34cc('0x30')][_0x34cc('0x57')]);}})[_0x34cc('0x11')](respondWithStatusCode(_0x4e0ccd,null))[_0x34cc('0x1a')](handleError(_0x4e0ccd,null));};exports[_0x34cc('0x5b')]=function(_0x11f035,_0x44aef6){_0x11f035['body'][_0x34cc('0x5c')]=_0x11f035[_0x34cc('0x5d')]['filename'];return db[_0x34cc('0x2b')][_0x34cc('0x47')]({'where':{'id':_0x11f035['params']['id']}})['then'](handleEntityNotFound(_0x44aef6,null))[_0x34cc('0x11')](saveUpdates(_0x11f035[_0x34cc('0x49')],null))[_0x34cc('0x11')](respondWithResult(_0x44aef6,null))[_0x34cc('0x1a')](handleError(_0x44aef6,null));};exports[_0x34cc('0x5e')]=function(_0x1a59c6,_0x290a5e){_0x1a59c6['body'][_0x34cc('0x5f')]=_0x1a59c6[_0x34cc('0x5d')][_0x34cc('0x60')];return db[_0x34cc('0x2b')][_0x34cc('0x47')]({'where':{'id':_0x1a59c6[_0x34cc('0x44')]['id']}})[_0x34cc('0x11')](handleEntityNotFound(_0x290a5e,null))[_0x34cc('0x11')](saveUpdates(_0x1a59c6[_0x34cc('0x49')],null))['then'](respondWithResult(_0x290a5e,null))[_0x34cc('0x1a')](handleError(_0x290a5e,null));};exports[_0x34cc('0x61')]=function(_0x53f9c7,_0x4c559e){_0x53f9c7[_0x34cc('0x49')][_0x34cc('0x62')]=_0x53f9c7[_0x34cc('0x5d')]['filename'];return db[_0x34cc('0x2b')]['find']({'where':{'id':_0x53f9c7[_0x34cc('0x44')]['id']}})[_0x34cc('0x11')](handleEntityNotFound(_0x4c559e,null))['then'](saveUpdates(_0x53f9c7[_0x34cc('0x49')],null))['then'](respondWithResult(_0x4c559e,null))[_0x34cc('0x1a')](handleError(_0x4c559e,null));};exports['addSystemAvatar']=function(_0x3fd03c,_0x3b9c50){_0x3fd03c[_0x34cc('0x49')][_0x34cc('0x63')]=_0x3fd03c[_0x34cc('0x5d')][_0x34cc('0x60')];return db[_0x34cc('0x2b')][_0x34cc('0x47')]({'where':{'id':_0x3fd03c[_0x34cc('0x44')]['id']}})[_0x34cc('0x11')](handleEntityNotFound(_0x3b9c50,null))['then'](saveUpdates(_0x3fd03c[_0x34cc('0x49')],null))[_0x34cc('0x11')](respondWithResult(_0x3b9c50,null))[_0x34cc('0x1a')](handleError(_0x3b9c50,null));};exports['getLogo']=function(_0x1587a3,_0x32ac55){var _0x214ad9=path[_0x34cc('0x64')](config[_0x34cc('0x65')],_0x34cc('0x66'));var _0x5b9133={'where':{'id':_0x1587a3['params']['id']},'attributes':['id',_0x34cc('0x5c')],'raw':!![]};var _0x47adbc=![];return require(_0x34cc('0x67'))['getLicense']()['then'](function(_0x46367d){if(_0x46367d){_0x47adbc=_0x46367d[_0x34cc('0x68')];}})[_0x34cc('0x11')](function(){return db[_0x34cc('0x2b')]['find'](_0x5b9133);})[_0x34cc('0x11')](handleEntityNotFound(_0x32ac55,null))['then'](function(_0x27c149){if(_0x27c149){if(!_[_0x34cc('0x69')](_0x27c149[_0x34cc('0x5c')])){if(fs['existsSync'](path[_0x34cc('0x64')](config[_0x34cc('0x65')],_0x34cc('0x6a'),_0x27c149[_0x34cc('0x5c')]))&&_0x47adbc){_0x214ad9=path[_0x34cc('0x64')](config['root'],_0x34cc('0x6a'),_0x27c149[_0x34cc('0x5c')]);}}return _0x32ac55[_0x34cc('0x6b')](_0x214ad9);}})[_0x34cc('0x1a')](handleError(_0x32ac55,null));};exports['getAvatar']=function(_0x285c0c,_0x5398aa){var _0x5c7de5=path[_0x34cc('0x64')](config['root'],_0x34cc('0x6c'));var _0x5d27da={'where':{'id':_0x285c0c[_0x34cc('0x44')]['id']},'attributes':['id',_0x34cc('0x5f')],'raw':!![]};return db['ChatWebsite'][_0x34cc('0x47')](_0x5d27da)['then'](handleEntityNotFound(_0x5398aa,null))['then'](function(_0x197d98){if(_0x197d98){if(!_[_0x34cc('0x69')](_0x197d98[_0x34cc('0x5f')])){if(fs['existsSync'](path['join'](config[_0x34cc('0x65')],_0x34cc('0x6d'),_0x197d98[_0x34cc('0x5f')]))){_0x5c7de5=path[_0x34cc('0x64')](config[_0x34cc('0x65')],'server/files/images/avatars/',_0x197d98[_0x34cc('0x5f')]);}}return _0x5398aa[_0x34cc('0x6b')](_0x5c7de5);}})[_0x34cc('0x1a')](handleError(_0x5398aa,null));};exports[_0x34cc('0x6e')]=function(_0x36c05c,_0xd2a8dd){var _0x56b737=path[_0x34cc('0x64')](config['root'],_0x34cc('0x6f'));var _0x316f75={'where':{'id':_0x36c05c[_0x34cc('0x44')]['id']},'attributes':['id',_0x34cc('0x62'),_0x34cc('0x70')],'raw':!![]};return db[_0x34cc('0x2b')]['find'](_0x316f75)['then'](handleEntityNotFound(_0xd2a8dd,null))[_0x34cc('0x11')](function(_0x2944d7){if(_0x2944d7){if(!_[_0x34cc('0x69')](_0x2944d7['customerAvatar'])){if(fs[_0x34cc('0x71')](path[_0x34cc('0x64')](config[_0x34cc('0x65')],'server/files/images/avatars/',_0x2944d7[_0x34cc('0x62')]))&&_0x2944d7[_0x34cc('0x70')]){_0x56b737=path[_0x34cc('0x64')](config['root'],'server/files/images/avatars/',_0x2944d7[_0x34cc('0x62')]);}}return _0xd2a8dd[_0x34cc('0x6b')](_0x56b737);}})[_0x34cc('0x1a')](handleError(_0xd2a8dd,null));};exports[_0x34cc('0x72')]=function(_0x31337c,_0x218d7a){var _0x276eb4=path[_0x34cc('0x64')](config[_0x34cc('0x65')],_0x34cc('0x73'));var _0x311985={'where':{'id':_0x31337c[_0x34cc('0x44')]['id']},'attributes':['id',_0x34cc('0x63')],'raw':!![]};return db['ChatWebsite'][_0x34cc('0x47')](_0x311985)[_0x34cc('0x11')](handleEntityNotFound(_0x218d7a,null))[_0x34cc('0x11')](function(_0x3480b8){if(_0x3480b8){if(!_[_0x34cc('0x69')](_0x3480b8[_0x34cc('0x63')])){if(fs[_0x34cc('0x71')](path[_0x34cc('0x64')](config[_0x34cc('0x65')],_0x34cc('0x6d'),_0x3480b8[_0x34cc('0x63')]))){_0x276eb4=path['join'](config[_0x34cc('0x65')],_0x34cc('0x6d'),_0x3480b8[_0x34cc('0x63')]);}}return _0x218d7a[_0x34cc('0x6b')](_0x276eb4);}})[_0x34cc('0x1a')](handleError(_0x218d7a,null));};exports[_0x34cc('0x74')]=function(_0x30ede8,_0x5504cf){var _0x28aacc=require('user-agent-parser');var _0x3cd2a4=new _0x28aacc();var _0xf6aa4=_0x3cd2a4[_0x34cc('0x75')](_0x30ede8[_0x34cc('0x76')][_0x34cc('0x77')])[_0x34cc('0x78')]();var _0x145bd5={'body':_0x30ede8[_0x34cc('0x49')],'channel':'chat'};var _0x319c71=[];var _0x5d3e19=[];var _0x207972={};var _0x50d113=![];return db[_0x34cc('0x79')][_0x34cc('0x4f')]()['then'](function(_0x497b09){if(!_0x497b09){throw new db[(_0x34cc('0x7a'))]['ValidationError']('no\x20available\x20attributes');}_0x319c71=_['difference'](_[_0x34cc('0x31')](_0x497b09),[_0x34cc('0x7b'),'updatedAt']);_0x5d3e19=_[_0x34cc('0x7c')](_[_0x34cc('0x31')](_0x497b09),['createdAt','updatedAt',_0x34cc('0x7d'),_0x34cc('0x7e')]);if(_0x30ede8[_0x34cc('0x49')]['id']){delete _0x30ede8[_0x34cc('0x49')]['id'];}if(_[_0x34cc('0x69')](_0x30ede8[_0x34cc('0x49')][_0x34cc('0x7f')])){throw new db[(_0x34cc('0x7a'))][(_0x34cc('0x80'))](_0x34cc('0x81'));}if(_[_0x34cc('0x69')](_0x30ede8[_0x34cc('0x49')][_0x34cc('0x49')])||_0x30ede8[_0x34cc('0x49')][_0x34cc('0x49')]===''){throw new db[(_0x34cc('0x7a'))][(_0x34cc('0x80'))](_0x34cc('0x82'));}if(_[_0x34cc('0x69')](_0x30ede8[_0x34cc('0x49')]['mapKey'])){throw new db[(_0x34cc('0x7a'))][(_0x34cc('0x80'))]('mapKey\x20is\x20mandatory,\x20please\x20use\x20one\x20of\x20these:\x20'+_0x5d3e19);}if(!_[_0x34cc('0x83')](_0x5d3e19,_0x30ede8[_0x34cc('0x49')]['mapKey'])){throw new db[(_0x34cc('0x7a'))][(_0x34cc('0x80'))](_0x34cc('0x84')+_0x5d3e19);}_0x207972[_0x30ede8['body']['mapKey']]=_0x30ede8[_0x34cc('0x49')]['from'];})[_0x34cc('0x11')](function(){return db[_0x34cc('0x2b')][_0x34cc('0x47')]({'where':{'id':_0x30ede8[_0x34cc('0x44')]['id']},'include':[{'model':db[_0x34cc('0x85')],'as':_0x34cc('0x86'),'include':[{'model':db[_0x34cc('0x79')],'as':_0x34cc('0x87'),'where':_0x207972,'limit':0x1,'order':[[_0x34cc('0x88'),_0x34cc('0x89')]]}]},{'model':db[_0x34cc('0x8a')],'as':_0x34cc('0x8b')}]});})[_0x34cc('0x11')](handleEntityNotFound(_0x5504cf,null))[_0x34cc('0x11')](function(_0x1fb3ce){if(_0x1fb3ce&&_0x1fb3ce['List']){_0x145bd5[_0x34cc('0x8c')]=_0x1fb3ce;_0x145bd5[_0x34cc('0x8d')]=_0x1fb3ce[_0x34cc('0x8b')];_0x145bd5[_0x34cc('0x8e')]=_0x1fb3ce['List'];_0x145bd5['applications']=_['orderBy'](_0x145bd5[_0x34cc('0x8d')],['priority'],['asc']);if(_0x145bd5[_0x34cc('0x8c')]['Applications']){delete _0x145bd5['account'][_0x34cc('0x8b')];}if(_0x145bd5[_0x34cc('0x8c')]['List']&&_0x145bd5[_0x34cc('0x8c')]['List'][_0x34cc('0x87')][_0x34cc('0x46')]){return _0x145bd5[_0x34cc('0x8c')][_0x34cc('0x86')][_0x34cc('0x87')][0x0];}var _0x53f403=_[_0x34cc('0x8f')](_0x30ede8[_0x34cc('0x49')],{'firstName':_0x30ede8[_0x34cc('0x49')][_0x34cc('0x7f')],'ListId':_0x1fb3ce[_0x34cc('0x7e')]});_0x53f403[_0x30ede8['body'][_0x34cc('0x90')]]=_0x30ede8['body']['from'];return db[_0x34cc('0x79')][_0x34cc('0x48')](_0x53f403,{'fields':_0x319c71,'raw':!![]});}})[_0x34cc('0x11')](handleEntityNotFound(_0x5504cf,null))[_0x34cc('0x11')](function(_0x527a57){_0x145bd5[_0x34cc('0x91')]=_0x527a57;var _0x5a6732=_0x30ede8[_0x34cc('0x49')][_0x34cc('0x92')];if(_0x30ede8[_0x34cc('0x76')]['cf-connecting-ip']){_0x5a6732=_0x30ede8[_0x34cc('0x76')][_0x34cc('0x93')];}else if(_0x30ede8[_0x34cc('0x76')][_0x34cc('0x94')]){_0x5a6732=_[_0x34cc('0x95')](_0x30ede8[_0x34cc('0x76')][_0x34cc('0x94')][_0x34cc('0x96')](','));}if(_0x527a57){var _0x494364={'ContactId':_0x527a57['id'],'ChatWebsiteId':_0x30ede8['params']['id'],'from':(_0x527a57[_0x34cc('0x97')]||'')+'\x20'+(_0x527a57['lastName']||''),'customerIp':_0x5a6732,'customerPort':_0x30ede8[_0x34cc('0x76')][_0x34cc('0x98')]?_0x30ede8[_0x34cc('0x76')][_0x34cc('0x98')]:null,'referer':_0x30ede8[_0x34cc('0x49')][_0x34cc('0x99')],'browserName':_0xf6aa4['browser'][_0x34cc('0x26')]&&_0xf6aa4[_0x34cc('0x9a')][_0x34cc('0x9b')]?util[_0x34cc('0x9c')]('%s\x20%s',_0xf6aa4['browser'][_0x34cc('0x26')],_0xf6aa4[_0x34cc('0x9a')][_0x34cc('0x9b')]):_0x34cc('0x9d'),'browserVersion':_0xf6aa4[_0x34cc('0x9a')][_0x34cc('0x9b')]||_0x34cc('0x9d'),'osName':util['format'](_0x34cc('0x9e'),_0xf6aa4['os'][_0x34cc('0x26')],_0xf6aa4['os'][_0x34cc('0x9b')]),'osVersion':_0xf6aa4['os'][_0x34cc('0x9b')],'deviceModel':_0xf6aa4[_0x34cc('0x9f')][_0x34cc('0x2f')]&&_0xf6aa4[_0x34cc('0x9f')]['vendor']?util[_0x34cc('0x9c')](_0x34cc('0xa0'),_0xf6aa4[_0x34cc('0x9f')][_0x34cc('0x2f')],_0xf6aa4[_0x34cc('0x9f')][_0x34cc('0xa1')],_0xf6aa4[_0x34cc('0x9f')][_0x34cc('0x3c')]):null,'deviceVendor':_0xf6aa4[_0x34cc('0x9f')][_0x34cc('0xa1')],'deviceType':_0xf6aa4[_0x34cc('0x9f')][_0x34cc('0x3c')],'formData':JSON[_0x34cc('0x15')](_0x30ede8['body'])};var _0x29927e={'ChatWebsiteId':_0x30ede8[_0x34cc('0x44')]['id'],'closed':![]};if(_0x30ede8['body']['threadId']){_0x29927e[_0x34cc('0xa2')]=_0x30ede8['body'][_0x34cc('0xa2')];return db['ChatInteraction'][_0x34cc('0x47')]({'where':_0x29927e})[_0x34cc('0x11')](function(_0x285509){if(_0x285509){return[_0x285509,![]];}_0x494364['threadId']=_0x30ede8[_0x34cc('0x49')][_0x34cc('0xa2')];_0x494364[_0x34cc('0xa3')]=_0x30ede8['body']['externalUrl'];return db[_0x34cc('0xa4')][_0x34cc('0x48')](_0x494364)[_0x34cc('0x11')](function(_0x9289a6){return[_0x9289a6,!![]];});});}_0x29927e['ContactId']=_0x527a57['id'];if(_0x30ede8[_0x34cc('0x49')][_0x34cc('0xa5')]&&_0x30ede8[_0x34cc('0x49')][_0x34cc('0xa5')]['id']){_0x29927e['id']=_0x30ede8[_0x34cc('0x49')][_0x34cc('0xa5')]['id'];return db[_0x34cc('0xa4')][_0x34cc('0x47')]({'where':_0x29927e})[_0x34cc('0x11')](function(_0x2f71ca){if(_0x2f71ca){return[_0x2f71ca,![]];}return db['ChatInteraction']['create'](_0x494364)[_0x34cc('0x11')](function(_0x5dda86){return[_0x5dda86,!![]];});});}return db[_0x34cc('0xa4')][_0x34cc('0x48')](_0x494364)[_0x34cc('0x11')](function(_0x51fe91){return[_0x51fe91,!![]];});}})['spread'](function(_0x134566,_0xf8059f){if(_0x134566){_0x50d113=_0xf8059f;if(!_0xf8059f){var _0x313e58={'from':(_0x145bd5['contact'][_0x34cc('0x97')]||'')+'\x20'+(_0x145bd5[_0x34cc('0x91')][_0x34cc('0xa6')]||'')};if(_0x30ede8[_0x34cc('0x49')][_0x34cc('0xa2')]&&_0x30ede8['body']['messageId']&&_0x30ede8['body'][_0x34cc('0xa2')]!=_0x30ede8[_0x34cc('0x49')][_0x34cc('0xa7')]){_0x313e58['threadId']=_0x30ede8['body']['messageId'];}return _0x134566[_0x34cc('0x21')](_0x313e58);}else{return _0x134566;}}})['then'](function(_0x40395e){_0x145bd5[_0x34cc('0xa5')]=_0x40395e[_0x34cc('0x22')]({'plain':!![]});_0x145bd5[_0x34cc('0xa5')][_0x34cc('0xa8')]=_0x50d113;if(_0x145bd5['interaction'][_0x34cc('0xa8')]){if(_0x145bd5[_0x34cc('0x8c')]['autoclose']){_0x145bd5[_0x34cc('0x8d')][_0x34cc('0xa9')]({'id':0x0,'priority':_0x145bd5[_0x34cc('0x8d')]['length']+0x1,'app':'close','appdata':'unmanaged','interval':_0x34cc('0xaa')});}}return db[_0x34cc('0xab')][_0x34cc('0x48')]({'body':_0x30ede8[_0x34cc('0x49')][_0x34cc('0x49')],'ChatWebsiteId':_0x30ede8[_0x34cc('0x44')]['id'],'ChatInteractionId':_0x40395e['id'],'direction':'in','ContactId':_0x145bd5[_0x34cc('0x91')]['id'],'AttachmentId':_0x30ede8[_0x34cc('0x49')]['AttachmentId']});})[_0x34cc('0x11')](function(_0x31eaf5){_0x145bd5['message']=_0x31eaf5;if(_0x145bd5[_0x34cc('0xa5')][_0x34cc('0xac')]){return db[_0x34cc('0xad')][_0x34cc('0x47')]({'attributes':['id',_0x34cc('0x26')],'where':{'id':_0x145bd5[_0x34cc('0xa5')][_0x34cc('0xac')]}})[_0x34cc('0x11')](function(_0x3a18e7){if(_0x3a18e7){_0x145bd5[_0x34cc('0x8d')][_0x34cc('0xae')]({'id':0x0,'priority':0x0,'app':_0x34cc('0xaf'),'appdata':_0x3a18e7[_0x34cc('0x26')]+','+(_0x145bd5[_0x34cc('0x8c')][_0x34cc('0xb0')]||0xa),'interval':_0x34cc('0xaa')});_0x145bd5['forcedOwnership']=!![];}return respondWithRpcPromise(_0x34cc('0xb1'),_0x34cc('0xb2'),_0x145bd5);});}return respondWithRpcPromise(_0x34cc('0xb1'),_0x34cc('0xb2'),_0x145bd5);})['then'](function(_0x119dab){respondWithRpcPromise(_0x34cc('0xb3'),_0x34cc('0xb3'),{'event':'notify','message':_0x119dab},client9002);return _0x119dab;})[_0x34cc('0x11')](respondWithResult(_0x5504cf,null))[_0x34cc('0x1a')](handleError(_0x5504cf,null));};exports[_0x34cc('0xb4')]=function(_0x79e9e7,_0x3cfde0){var _0x45e9cc,_0x2d4b89,_0x2bde92;var _0x4b322a=[];var _0x50a350={};var _0x298d85=_0x79e9e7[_0x34cc('0xb5')]||[];var _0x2bd71d=[];var _0x2c3c1e;return db[_0x34cc('0x79')][_0x34cc('0x4f')]()[_0x34cc('0x11')](function(_0x760392){if(!_0x760392){throw new db[(_0x34cc('0x7a'))][(_0x34cc('0x80'))](_0x34cc('0xb6'));}_0x4b322a=_['difference'](_[_0x34cc('0x31')](_0x760392),[_0x34cc('0x7b'),_0x34cc('0x88'),_0x34cc('0x7d'),_0x34cc('0x7e')]);if(_0x79e9e7[_0x34cc('0x49')]['id']){delete _0x79e9e7[_0x34cc('0x49')]['id'];}if(_[_0x34cc('0x69')](_0x79e9e7['body'][_0x34cc('0x7f')])){throw _0x3cfde0[_0x34cc('0x1c')](0x1f4)[_0x34cc('0x27')](new db[(_0x34cc('0x7a'))]['ValidationError']('from\x20is\x20mandatory'));}if(_[_0x34cc('0x69')](_0x79e9e7[_0x34cc('0x49')][_0x34cc('0x49')])||_0x79e9e7[_0x34cc('0x49')][_0x34cc('0x49')]===''){throw _0x3cfde0[_0x34cc('0x1c')](0x1f4)[_0x34cc('0x27')](new db[(_0x34cc('0x7a'))]['ValidationError'](_0x34cc('0x82')));}if(_[_0x34cc('0x69')](_0x79e9e7[_0x34cc('0x49')][_0x34cc('0xb7')])){throw _0x3cfde0['status'](0x1f4)['send'](new db[(_0x34cc('0x7a'))][(_0x34cc('0x80'))]('mapKeyOffline\x20is\x20mandatory,\x20please\x20use\x20one\x20of\x20these:\x20'+_0x4b322a));}if(!_[_0x34cc('0x83')](_0x4b322a,_0x79e9e7[_0x34cc('0x49')]['mapKeyOffline'])){throw _0x3cfde0[_0x34cc('0x1c')](0x1f4)[_0x34cc('0x27')](new db[(_0x34cc('0x7a'))][(_0x34cc('0x80'))](_0x34cc('0xb8')+_0x4b322a));}_0x50a350[_0x79e9e7[_0x34cc('0x49')][_0x34cc('0xb7')]]=_0x79e9e7[_0x34cc('0x49')][_0x34cc('0x7f')];})[_0x34cc('0x11')](function(){return db['ChatWebsite']['find']({'where':{'id':_0x79e9e7[_0x34cc('0x44')]['id']},'include':[{'model':db[_0x34cc('0x85')],'as':_0x34cc('0x86')},{'model':db[_0x34cc('0xb9')],'as':_0x34cc('0xb9')}]});})[_0x34cc('0x11')](handleEntityNotFound(_0x3cfde0,null))[_0x34cc('0x11')](function(_0x55cfdd){if(_0x55cfdd&&_0x55cfdd[_0x34cc('0x86')]){_0x2d4b89=_0x55cfdd;var _0x382731=_['defaults'](_0x79e9e7[_0x34cc('0x49')],{'firstName':_0x79e9e7[_0x34cc('0x49')]['from'],'phone':_0x79e9e7[_0x34cc('0x49')]['from'],'ListId':_0x55cfdd[_0x34cc('0x7e')]});_0x382731[_0x79e9e7['body'][_0x34cc('0xb7')]]=_0x79e9e7[_0x34cc('0x49')][_0x34cc('0x7f')];return db[_0x34cc('0x79')]['findOrCreate']({'where':_0x50a350,'defaults':_0x382731});}})[_0x34cc('0xba')](function(_0x29f802){if(_0x29f802){_0x2bde92=_0x29f802;var _0x48c50c=fs[_0x34cc('0xbb')](path[_0x34cc('0x64')](config['root'],_0x34cc('0xbc')),_0x34cc('0xbd'));var _0x44579c=ejs[_0x34cc('0xbe')](_0x48c50c,{'body':_[_0x34cc('0xbf')](_0x79e9e7[_0x34cc('0x49')][_0x34cc('0x49')]),'bodyTitle':_0x2d4b89[_0x34cc('0xc0')]});return db[_0x34cc('0xc1')]['create']({'body':_0x44579c,'plainBody':htmlToText['fromString'](_0x44579c),'ContactId':_0x29f802['id'],'ChatWebsiteId':_0x2d4b89['id']});}})[_0x34cc('0x11')](function(_0x533997){_0x2c3c1e=_0x533997;if(_0x298d85[_0x34cc('0x46')]){var _0xcacca2=_0x298d85['map'](function(_0x51d1bd){return{'name':_0x51d1bd[_0x34cc('0xc2')],'basename':_0x51d1bd[_0x34cc('0x60')],'type':_0x51d1bd[_0x34cc('0xc3')],'ChatOfflineMessageId':_0x533997['id']};});_0x2bd71d=_0xcacca2[_0x34cc('0x2a')](_0x578ac9=>{var _0xa36e84={'filename':_0x578ac9[_0x34cc('0x26')],'path':path[_0x34cc('0x64')](config[_0x34cc('0x65')],_0x34cc('0xc4'),_0x34cc('0xb5'),_0x34cc('0xc5'),_0x34cc('0xc6'),_0x578ac9['basename'])};return _0xa36e84;});if(!_0x2d4b89[_0x34cc('0xc7')]){return db['sequelize'][_0x34cc('0xc8')](function(_0x2a863a){return db[_0x34cc('0xc9')]['bulkCreate'](_0xcacca2,{'transaction':_0x2a863a});});}}})[_0x34cc('0x11')](function(){if(_0x2c3c1e){_0x45e9cc=_0x2c3c1e;return db['MailAccount']['findOne']({'where':{'service':!![]},'include':[{'model':db[_0x34cc('0xca')],'as':_0x34cc('0xcb'),'raw':!![],'include':[{'model':db[_0x34cc('0xcc')],'as':_0x34cc('0xcc'),'raw':!![]}]}]});}})[_0x34cc('0x11')](function(_0x4646ba){if(_0x4646ba&&_0x4646ba[_0x34cc('0xcb')]&&_0x2d4b89[_0x34cc('0xcd')]&&_0x2d4b89[_0x34cc('0xce')]){var _0x33e2df=_0x4646ba[_0x34cc('0xcf')]();return respondWithRpcPromise('SendMail',_0x34cc('0xd0'),{'account':_0x33e2df,'message':{'from':util[_0x34cc('0x9c')](_0x34cc('0xd1'),_0x4646ba[_0x34cc('0x26')],_0x4646ba[_0x34cc('0xd2')]||_0x4646ba[_0x34cc('0xcb')][_0x34cc('0x4b')]),'to':_0x2d4b89[_0x34cc('0xce')],'subject':_0x2d4b89[_0x34cc('0xd3')],'html':_0x45e9cc[_0x34cc('0x49')],'attachments':_0x2bd71d}},client9003)[_0x34cc('0x11')](function(){return _0x45e9cc;})[_0x34cc('0x1a')](function(_0x4d257f){logger[_0x34cc('0x16')](_0x4d257f);});}})[_0x34cc('0x11')](function(){if(_0x2d4b89&&_0x2d4b89[_0x34cc('0xc7')]&&_0x2d4b89[_0x34cc('0xd4')]){var _0x28d981=[];if(_0x298d85[_0x34cc('0x46')]){_0x28d981=_0x298d85[_0x34cc('0x2a')](function(_0xf55625){return{'name':_0xf55625[_0x34cc('0xc2')],'basename':_0xf55625[_0x34cc('0x60')],'type':_0xf55625[_0x34cc('0xc3')],'ChatOfflineMessageId':_0x2c3c1e['id']};});}var _0x4724b0;if(!_[_0x34cc('0x69')](_0x2d4b89[_0x34cc('0xd5')])){var _0x48d5e6=_['map'](_0x79e9e7[_0x34cc('0x49')],function(_0x3c27b3){return _0x3c27b3;});var _0x2d0f56=_[_0x34cc('0xd6')](_0x48d5e6)[0x0];var _0x193725=_['mapValues'](_0x2d0f56,function(_0x2eae3e){return _0x2eae3e;});_0x4724b0=_0x193725[0x1][_0x2d4b89[_0x34cc('0xd5')]];}var _0x362ff5={'from':_0x2bde92[_0x34cc('0xd2')],'firstName':_0x2bde92[_0x34cc('0x97')],'lastName':_0x2bde92['lastName'],'mapKey':_0x34cc('0xd2'),'message':{'from':_0x2bde92[_0x34cc('0xd2')],'to':_0x2d4b89[_0x34cc('0xb9')][_0x34cc('0xd2')],'cc':'','subject':_['isNil'](_0x4724b0)?_0x2d4b89['offlineMessageSubject']:_0x4724b0,'messageId':'','sentAt':new Date(),'attach':_0x28d981[_0x34cc('0x46')],'attachments':_0x28d981,'originChannel':_0x34cc('0xd7'),'ChatWebsiteId':_0x2d4b89['id'],'ChatOfflineMessageId':_0x45e9cc['id'],'originTo':_0x2d4b89[_0x34cc('0xb9')][_0x34cc('0xd2')]},'body':_0x45e9cc[_0x34cc('0x49')]};var _0x20e2e6={'account':{'id':_0x2d4b89[_0x34cc('0xd4')]},'body':_0x362ff5,'log':'NotifyMailAccount'};return respondWithRpcPromise(_0x34cc('0xd8'),_0x34cc('0xd9'),_0x20e2e6,client9001)[_0x34cc('0x11')](function(){return _0x45e9cc;})[_0x34cc('0x1a')](function(_0x1683f8){logger[_0x34cc('0x16')](_0x1683f8);});}return;})[_0x34cc('0x11')](function(){if(_0x45e9cc){return _0x45e9cc;}})['then'](respondWithResult(_0x3cfde0,null))[_0x34cc('0x1a')](function(_0x525fdc){logger['error'](_0x34cc('0x1a'),_0x525fdc);for(var _0x3aa3cf of _0x298d85){var _0x105cfa=path['join'](config[_0x34cc('0x65')],'server',_0x34cc('0xb5'),_0x34cc('0xc5'),_0x34cc('0xc6'),_0x3aa3cf[_0x34cc('0x60')]);fs_extra[_0x34cc('0xda')](_0x105cfa)[_0x34cc('0x1a')](function(_0x27a64f){logger[_0x34cc('0x16')](_0x34cc('0xdb'),_0x105cfa,_0x27a64f);});}});};exports[_0x34cc('0xdc')]=function(_0x3c04d4,_0x29ffa9){return db[_0x34cc('0xa4')][_0x34cc('0x47')]({'where':{'id':_0x3c04d4[_0x34cc('0x44')]['id']}})[_0x34cc('0x11')](handleEntityNotFound(_0x29ffa9,null))[_0x34cc('0x11')](function(_0x401d7f){if(_0x401d7f){return _0x401d7f['addInteraction'](_0x3c04d4[_0x34cc('0x49')]['ids'],_[_0x34cc('0xdd')](_0x3c04d4[_0x34cc('0x49')],[_0x34cc('0x57'),'id'])||{});}})['then'](respondWithResult(_0x29ffa9,null))[_0x34cc('0x1a')](handleError(_0x29ffa9,null));};exports[_0x34cc('0xde')]=function(_0x5a0034,_0x14fdbb){var _0xb22496={'raw':![],'where':{}};var _0x24f7e7={};var _0x508cc5={'count':0x0,'rows':[]};return db[_0x34cc('0x2b')][_0x34cc('0x53')]({'where':{'id':_0x5a0034[_0x34cc('0x44')]['id']}})[_0x34cc('0x11')](handleEntityNotFound(_0x14fdbb,null))[_0x34cc('0x11')](function(_0x22eaf3){if(_0x22eaf3){_0x24f7e7[_0x34cc('0x2f')]=_['keys'](db['ChatInteraction']['rawAttributes']);_0x24f7e7['query']=_[_0x34cc('0x31')](_0x5a0034['query']);_0x24f7e7[_0x34cc('0x32')]=_[_0x34cc('0x33')](_0x24f7e7['model'],_0x24f7e7[_0x34cc('0x30')]);_0xb22496['attributes']=_[_0x34cc('0x33')](_0x24f7e7['model'],qs[_0x34cc('0x34')](_0x5a0034[_0x34cc('0x30')][_0x34cc('0x34')]));_0xb22496[_0x34cc('0x35')]=_0xb22496[_0x34cc('0x35')]['length']?_0xb22496[_0x34cc('0x35')]:_0x24f7e7[_0x34cc('0x2f')];if(!_0x5a0034[_0x34cc('0x30')]['hasOwnProperty'](_0x34cc('0x36'))){_0xb22496['limit']=qs[_0x34cc('0x37')](_0x5a0034['query'][_0x34cc('0x37')]);_0xb22496[_0x34cc('0x1e')]=qs[_0x34cc('0x1e')](_0x5a0034[_0x34cc('0x30')]['offset']);}_0xb22496[_0x34cc('0x38')]=qs[_0x34cc('0x39')](_0x5a0034[_0x34cc('0x30')][_0x34cc('0x39')]);_0xb22496[_0x34cc('0x3a')]=qs['filters'](_[_0x34cc('0x3b')](_0x5a0034['query'],_0x24f7e7[_0x34cc('0x32')]));_0xb22496[_0x34cc('0x3a')][_0x34cc('0x50')]=_0x22eaf3['id'];if(_0x5a0034[_0x34cc('0x30')][_0x34cc('0x3d')]){_0xb22496[_0x34cc('0x3a')]=_[_0x34cc('0x3e')](_0xb22496[_0x34cc('0x3a')],{'$or':_['map'](_0xb22496[_0x34cc('0x35')],function(_0x130cfb){var _0x51cadb={};_0x51cadb[_0x130cfb]={'$like':'%'+_0x5a0034[_0x34cc('0x30')][_0x34cc('0x3d')]+'%'};return _0x51cadb;})});}_0xb22496=_[_0x34cc('0x3e')]({},_0xb22496,_0x5a0034[_0x34cc('0x3f')]);return db[_0x34cc('0xa4')][_0x34cc('0x20')]({'where':_0xb22496[_0x34cc('0x3a')]})[_0x34cc('0x11')](function(_0x2918e2){_0x508cc5[_0x34cc('0x20')]=_0x2918e2;if(_0x5a0034[_0x34cc('0x30')][_0x34cc('0x55')]){_0xb22496[_0x34cc('0x40')]=[{'model':db['CmContact'],'as':_0x34cc('0xdf'),'required':![]},{'model':db[_0x34cc('0xad')],'as':_0x34cc('0xe0'),'attributes':[_0x34cc('0x26'),_0x34cc('0xe1'),_0x34cc('0xe2')],'required':![]},{'model':db[_0x34cc('0xe3')],'as':_0x34cc('0xe4'),'attributes':['id',_0x34cc('0x26'),_0x34cc('0xe5')],'where':_0x5a0034[_0x34cc('0x30')][_0x34cc('0xe6')]?{'id':_0x5a0034[_0x34cc('0x30')]['tag']}:undefined,'required':_0x5a0034[_0x34cc('0x30')]['tag']?!![]:![]}];}return db[_0x34cc('0xa4')][_0x34cc('0x41')](_0xb22496);})['then'](function(_0x50af99){_0x508cc5[_0x34cc('0x42')]=_0x50af99;return _0x508cc5;});}})[_0x34cc('0x11')](respondWithFilteredResult(_0x14fdbb,_0xb22496))[_0x34cc('0x1a')](handleError(_0x14fdbb,null));};function iftimePromise(_0xb9ef6b,_0x20e4bb){return respondWithRpcPromise(_0x34cc('0xe7'),_0x34cc('0xe8'),{'command':_0x20e4bb[_0x34cc('0xe9')]?util[_0x34cc('0x9c')]('iftime\x20%s,%s',_0xb9ef6b[_0x34cc('0xea')],_0x20e4bb[_0x34cc('0xe9')]):util[_0x34cc('0x9c')]('iftime\x20%s',_0xb9ef6b[_0x34cc('0xea')])},client9002)[_0x34cc('0x11')](function(_0x37c539){var _0x596389=_0x37c539&&_0x37c539[_0x34cc('0xeb')](_0x34cc('0xec'))>=0x0?!![]:![];logger[_0x34cc('0x12')](_0x34cc('0xed'),_0x20e4bb['id'],_0xb9ef6b['id'],_0xb9ef6b['interval'],_0x596389?_0x34cc('0xee'):_0x34cc('0xef'),_0x20e4bb[_0x34cc('0xe9')]?_0x20e4bb[_0x34cc('0xe9')]:_0x34cc('0xf0'));return _0x596389;})[_0x34cc('0x1a')](function(_0x1b48f6){logger[_0x34cc('0x16')]('[%s][INTERVAL][%s]\x20%s\x20%s\x20(%s)',_0x20e4bb['id'],_0xb9ef6b['id'],_0xb9ef6b[_0x34cc('0xea')],util[_0x34cc('0xf1')](_0x1b48f6,{'showHidden':![],'depth':null}),_0x20e4bb[_0x34cc('0xe9')]?_0x20e4bb[_0x34cc('0xe9')]:_0x34cc('0xf0'));return![];});}exports['getSnippet']=function(_0x350632,_0x52c308){var _0x540a3e=0x0;var _0x5f38b9=0x0;var _0x89166a=![];var _0x4c77ee;var _0x3aeb4d;return db[_0x34cc('0x2b')][_0x34cc('0x47')]({'where':{'id':_0x350632[_0x34cc('0x44')]['id']},'include':[{'model':db['Interval'],'as':_0x34cc('0xf2'),'include':[{'model':db['Interval'],'as':_0x34cc('0xf3'),'attributes':['id',_0x34cc('0xea')],'raw':!![]}]}]})['then'](handleEntityNotFound(_0x52c308,null))[_0x34cc('0x11')](function(_0x21a7f0){if(_0x21a7f0){_0x4c77ee=_0x21a7f0;return _0x21a7f0[_0x34cc('0xf4')]({'raw':!![]});}})[_0x34cc('0x11')](function(_0x5db18d){if(_0x4c77ee){if(_0x5db18d){_0x3aeb4d=_0x5db18d;}}return require('../../config/license/util')[_0x34cc('0xf5')]();})[_0x34cc('0x11')](function(_0x532309){if(_0x532309){_0x5f38b9=_0x532309[_0x34cc('0xf6')];_0x89166a=_0x532309[_0x34cc('0x68')];}})['then'](function(){return db[_0x34cc('0xa4')]['count']({'where':{'closed':![]}});})[_0x34cc('0x11')](function(_0x22663b){_0x540a3e=_0x22663b;if(_0x5f38b9&&_0x22663b>_0x5f38b9){return db[_0x34cc('0xf7')][_0x34cc('0x53')]({'where':{'id':0x1}})[_0x34cc('0x11')](function(_0x2a9bc2){if(_0x2a9bc2){_0x2a9bc2['increment'](_0x34cc('0xf8'));}});}})[_0x34cc('0x11')](function(){if(_0x4c77ee[_0x34cc('0xf2')]&&_0x4c77ee[_0x34cc('0xf2')]['Intervals']){var _0x536c23=[];for(var _0x1c8b5c=0x0;_0x1c8b5c<_0x4c77ee[_0x34cc('0xf2')][_0x34cc('0xf3')][_0x34cc('0x46')];_0x1c8b5c++){var _0x3c2c18=_0x4c77ee[_0x34cc('0xf2')][_0x34cc('0xf3')][_0x1c8b5c][_0x34cc('0x22')]({'plain':!![]});_0x536c23[_0x34cc('0xa9')](iftimePromise(_0x3c2c18,_0x4c77ee));}return BPromise[_0x34cc('0xf9')](_0x536c23)[_0x34cc('0x11')](function(_0x4746c1){return _[_0x34cc('0xfa')](_0x4746c1);});}else{return!![];}})['then'](function(_0x2617f2){var _0x3cefd1=fs[_0x34cc('0xbb')](path['join'](config[_0x34cc('0x65')],_0x34cc('0xfb')),_0x34cc('0xbd'));var _0x5e1187={'remote':_0x4c77ee[_0x34cc('0xfc')],'query':querystring[_0x34cc('0x15')](_[_0x34cc('0x3e')](_0x4c77ee['get']({'plain':!![]}),{'customerIp':_0x350632[_0x34cc('0x76')][_0x34cc('0x94')]||_0x350632[_0x34cc('0x76')][_0x34cc('0xfd')]||_0x350632[_0x34cc('0xfe')]['remoteAddress']||_0x350632['ip'],'referer':_0x350632['headers'][_0x34cc('0x99')],'openedInteractions':_0x540a3e,'maxInteractions':_0x5f38b9,'virtual':_0x89166a[_0x34cc('0xf6')],'online':_0x2617f2,'custom':_0x89166a}))['replace'](/'/g,'\x5c\x27')};_0x52c308[_0x34cc('0x27')](ejs['render'](Mustache['render'](_0x3cefd1,_0x5e1187),{'proactiveActions':_0x3aeb4d,'alignment':_0x4c77ee[_0x34cc('0xff')],'verticalAlignment':_0x4c77ee[_0x34cc('0x100')],'div_color':_0x4c77ee[_0x34cc('0xe5')],'labelText':_0x4c77ee[_0x34cc('0x101')],'text_color':_0x4c77ee[_0x34cc('0x102')],'text_button_color':_0x4c77ee['textButtonColor'],'button_color':_0x4c77ee['color_button'],'background_color':_0x4c77ee[_0x34cc('0x103')],'hideWhenOffline':_0x4c77ee[_0x34cc('0x104')],'interval':_0x4c77ee['IntervalId']}));})['catch'](handleError(_0x52c308,null));};exports['addApplications']=function(_0x3fe28b,_0x25930b){var _0x4a2dac=_0x3fe28b['params']['id'];var _0x5504f0=_0x3fe28b['body'];var _0x2a72e6=0xc8;var _0x348f50=null;return db['sequelize'][_0x34cc('0xc8')]({'isolationLevel':db[_0x34cc('0x105')][_0x34cc('0x106')][_0x34cc('0x107')]['READ_COMMITTED']},function(_0x4cb8a1){return db[_0x34cc('0x2b')][_0x34cc('0x53')]({'where':{'id':_0x4a2dac},'transaction':_0x4cb8a1})[_0x34cc('0x11')](function(_0x38f0fb){if(_0x38f0fb){return db[_0x34cc('0x8a')][_0x34cc('0x25')]({'where':{'ChatWebsiteId':_0x4a2dac},'transaction':_0x4cb8a1})['then'](function(){var _0x3e4a93=_[_0x34cc('0x2a')](_0x5504f0,function(_0x57c102){_0x57c102['ChatWebsiteId']=_0x4a2dac;return _0x57c102;});return db[_0x34cc('0x8a')]['bulkCreate'](_0x3e4a93,{'transaction':_0x4cb8a1});});}else{_0x2a72e6=0x194;_0x348f50=[];}});})[_0x34cc('0x11')](function(){if(_0x2a72e6!==0x194){return db['ChatApplication']['findAndCountAll']({'where':{'ChatWebsiteId':_0x4a2dac},'order':_0x34cc('0x108')})[_0x34cc('0x11')](function(_0x4afa07){_0x348f50=_0x4afa07;});}})[_0x34cc('0x1a')](function(_0x20c25e){_0x2a72e6=0x1f4;logger[_0x34cc('0x16')](_0x20c25e['stack']);if(_0x20c25e[_0x34cc('0x26')]){delete _0x20c25e[_0x34cc('0x26')];}_0x348f50=_0x20c25e;})['finally'](function(){if(_0x348f50===null){_0x25930b[_0x34cc('0x1b')](_0x2a72e6);}else{if(_0x2a72e6===0x1f4){_0x25930b[_0x34cc('0x1c')](_0x2a72e6)[_0x34cc('0x27')](_0x348f50);}else{_0x25930b[_0x34cc('0x1c')](_0x2a72e6)[_0x34cc('0x1d')](_0x348f50);}}});};exports[_0x34cc('0x109')]=function(_0x3e95f5,_0x28e561){var _0x5416e5={};var _0x47e42f={};var _0x283dc5;var _0x451138;return db['ChatWebsite']['findOne']({'where':{'id':_0x3e95f5[_0x34cc('0x44')]['id']}})[_0x34cc('0x11')](handleEntityNotFound(_0x28e561,null))[_0x34cc('0x11')](function(_0x2c61c5){if(_0x2c61c5){_0x283dc5=_0x2c61c5;_0x47e42f[_0x34cc('0x2f')]=_[_0x34cc('0x31')](db['ChatApplication']['rawAttributes']);_0x47e42f[_0x34cc('0x30')]=_[_0x34cc('0x31')](_0x3e95f5[_0x34cc('0x30')]);_0x47e42f[_0x34cc('0x32')]=_[_0x34cc('0x33')](_0x47e42f[_0x34cc('0x2f')],_0x47e42f[_0x34cc('0x30')]);_0x5416e5['attributes']=_[_0x34cc('0x33')](_0x47e42f[_0x34cc('0x2f')],qs['fields'](_0x3e95f5[_0x34cc('0x30')][_0x34cc('0x34')]));_0x5416e5['attributes']=_0x5416e5[_0x34cc('0x35')][_0x34cc('0x46')]?_0x5416e5[_0x34cc('0x35')]:_0x47e42f[_0x34cc('0x2f')];_0x5416e5[_0x34cc('0x38')]=qs[_0x34cc('0x39')](_0x3e95f5[_0x34cc('0x30')][_0x34cc('0x39')]);_0x5416e5[_0x34cc('0x3a')]=qs[_0x34cc('0x32')](_[_0x34cc('0x3b')](_0x3e95f5[_0x34cc('0x30')],_0x47e42f[_0x34cc('0x32')]));if(_0x3e95f5[_0x34cc('0x30')][_0x34cc('0x3d')]){_0x5416e5[_0x34cc('0x3a')]=_['merge'](_0x5416e5[_0x34cc('0x3a')],{'$or':_['map'](_0x5416e5[_0x34cc('0x35')],function(_0x11da8c){var _0x5845ca={};_0x5845ca[_0x11da8c]={'$like':'%'+_0x3e95f5[_0x34cc('0x30')][_0x34cc('0x3d')]+'%'};return _0x5845ca;})});}_0x5416e5=_['merge']({},_0x5416e5,_0x3e95f5['options']);return _0x283dc5['getApplications'](_0x5416e5);}})[_0x34cc('0x11')](function(_0x22cca1){if(_0x22cca1){_0x451138=_0x22cca1['length'];if(!_0x3e95f5[_0x34cc('0x30')][_0x34cc('0x54')](_0x34cc('0x36'))){_0x5416e5[_0x34cc('0x37')]=qs['limit'](_0x3e95f5['query']['limit']);_0x5416e5['offset']=qs[_0x34cc('0x1e')](_0x3e95f5[_0x34cc('0x30')][_0x34cc('0x1e')]);}return _0x283dc5[_0x34cc('0x109')](_0x5416e5);}})[_0x34cc('0x11')](function(_0x1b5a3d){if(_0x1b5a3d){return _0x1b5a3d?{'count':_0x451138,'rows':_0x1b5a3d}:null;}})[_0x34cc('0x11')](respondWithResult(_0x28e561,null))['catch'](handleError(_0x28e561,null));};exports[_0x34cc('0x10a')]=function(_0x18160f,_0x5acf9c){return db[_0x34cc('0x10b')]['find']({'where':{'id':_0x18160f['params']['id']}})[_0x34cc('0x11')](handleEntityNotFound(_0x5acf9c,null))[_0x34cc('0x11')](function(_0x2e815d){if(_0x2e815d){return _0x2e815d[_0x34cc('0x10a')](_0x18160f[_0x34cc('0x49')][_0x34cc('0x57')],_['omit'](_0x18160f[_0x34cc('0x49')],['ids','id'])||{});}})['then'](respondWithResult(_0x5acf9c,null))[_0x34cc('0x1a')](handleError(_0x5acf9c,null));};exports[_0x34cc('0xf4')]=function(_0x297162,_0x383bc){var _0x3e770a={};var _0x378718={};var _0x58ae23;var _0x311633;return db[_0x34cc('0x2b')]['findOne']({'where':{'id':_0x297162[_0x34cc('0x44')]['id']}})[_0x34cc('0x11')](handleEntityNotFound(_0x383bc,null))[_0x34cc('0x11')](function(_0x250655){if(_0x250655){_0x58ae23=_0x250655;_0x378718[_0x34cc('0x2f')]=_['keys'](db[_0x34cc('0x10c')]['rawAttributes']);_0x378718[_0x34cc('0x30')]=_['keys'](_0x297162[_0x34cc('0x30')]);_0x378718[_0x34cc('0x32')]=_['intersection'](_0x378718[_0x34cc('0x2f')],_0x378718[_0x34cc('0x30')]);_0x3e770a[_0x34cc('0x35')]=_[_0x34cc('0x33')](_0x378718['model'],qs['fields'](_0x297162[_0x34cc('0x30')][_0x34cc('0x34')]));_0x3e770a[_0x34cc('0x35')]=_0x3e770a['attributes'][_0x34cc('0x46')]?_0x3e770a[_0x34cc('0x35')]:_0x378718[_0x34cc('0x2f')];_0x3e770a[_0x34cc('0x38')]=qs['sort'](_0x297162[_0x34cc('0x30')]['sort']);_0x3e770a[_0x34cc('0x3a')]=qs[_0x34cc('0x32')](_['pick'](_0x297162['query'],_0x378718['filters']));if(_0x297162[_0x34cc('0x30')][_0x34cc('0x3d')]){_0x3e770a[_0x34cc('0x3a')]=_[_0x34cc('0x3e')](_0x3e770a[_0x34cc('0x3a')],{'$or':_['map'](_0x3e770a[_0x34cc('0x35')],function(_0x25fab4){var _0x4de9bc={};_0x4de9bc[_0x25fab4]={'$like':'%'+_0x297162[_0x34cc('0x30')][_0x34cc('0x3d')]+'%'};return _0x4de9bc;})});}_0x3e770a=_[_0x34cc('0x3e')]({},_0x3e770a,_0x297162[_0x34cc('0x3f')]);return _0x58ae23[_0x34cc('0xf4')](_0x3e770a);}})[_0x34cc('0x11')](function(_0x5c7f5d){if(_0x5c7f5d){_0x311633=_0x5c7f5d[_0x34cc('0x46')];if(!_0x297162[_0x34cc('0x30')]['hasOwnProperty'](_0x34cc('0x36'))){_0x3e770a[_0x34cc('0x37')]=qs[_0x34cc('0x37')](_0x297162[_0x34cc('0x30')]['limit']);_0x3e770a['offset']=qs[_0x34cc('0x1e')](_0x297162['query']['offset']);}return _0x58ae23['getProactiveActions'](_0x3e770a);}})['then'](function(_0x452d76){if(_0x452d76){return _0x452d76?{'count':_0x311633,'rows':_0x452d76}:null;}})['then'](respondWithResult(_0x383bc,null))[_0x34cc('0x1a')](handleError(_0x383bc,null));};exports['getFields']=function(_0x4bf23f,_0x3c63a4){var _0x555384=_0x4bf23f[_0x34cc('0x30')][_0x34cc('0x10d')]===_0x34cc('0x10e')?_0x34cc('0x10f'):_0x34cc('0x110');return db[_0x34cc('0x2b')]['find']({'attributes':['id',_0x555384],'where':{'id':_0x4bf23f[_0x34cc('0x44')]['id']}})[_0x34cc('0x11')](handleEntityNotFound(_0x3c63a4,null))[_0x34cc('0x11')](function(_0x21ad8b){if(_0x21ad8b){var _0x44dbb7=_0x21ad8b[_0x555384];var _0x4f7884=_0x44dbb7&&_0x44dbb7[_0x34cc('0x111')]?_0x44dbb7['items']:[];_0x3c63a4[_0x34cc('0x27')]({'fromKey':_[_0x34cc('0x69')](_0x44dbb7[_0x34cc('0x112')])?undefined:_0x44dbb7[_0x34cc('0x112')],'count':_0x4f7884[_0x34cc('0x46')],'rows':_0x4f7884});}})[_0x34cc('0x1a')](handleError(_0x3c63a4,null));};exports[_0x34cc('0x113')]=function(_0x24ee44,_0x459bd1){var _0xed7b4={'raw':![],'where':{}};var _0x373bd6={};var _0x1b7bea={'count':0x0,'rows':[]};return db[_0x34cc('0x2b')][_0x34cc('0x53')]({'where':{'id':_0x24ee44[_0x34cc('0x44')]['id']}})['then'](handleEntityNotFound(_0x459bd1,null))[_0x34cc('0x11')](function(_0x153fa5){if(_0x153fa5){_0x373bd6['model']=_[_0x34cc('0x31')](db[_0x34cc('0xc1')]['rawAttributes']);_0x373bd6[_0x34cc('0x30')]=_[_0x34cc('0x31')](_0x24ee44[_0x34cc('0x30')]);_0x373bd6[_0x34cc('0x32')]=_[_0x34cc('0x33')](_0x373bd6[_0x34cc('0x2f')],_0x373bd6['query']);_0xed7b4['attributes']=_[_0x34cc('0x33')](_0x373bd6[_0x34cc('0x2f')],qs[_0x34cc('0x34')](_0x24ee44[_0x34cc('0x30')][_0x34cc('0x34')]));_0xed7b4[_0x34cc('0x35')]=_0xed7b4['attributes'][_0x34cc('0x46')]?_0xed7b4[_0x34cc('0x35')]:_0x373bd6[_0x34cc('0x2f')];if(!_0x24ee44['query'][_0x34cc('0x54')]('nolimit')){_0xed7b4[_0x34cc('0x37')]=qs['limit'](_0x24ee44[_0x34cc('0x30')][_0x34cc('0x37')]);_0xed7b4['offset']=qs[_0x34cc('0x1e')](_0x24ee44[_0x34cc('0x30')][_0x34cc('0x1e')]);}_0xed7b4['order']=qs[_0x34cc('0x39')](_0x24ee44[_0x34cc('0x30')][_0x34cc('0x39')]);_0xed7b4[_0x34cc('0x3a')]=qs[_0x34cc('0x32')](_[_0x34cc('0x3b')](_0x24ee44['query'],_0x373bd6['filters']));_0xed7b4[_0x34cc('0x3a')][_0x34cc('0x50')]=_0x153fa5['id'];if(_0x24ee44['query'][_0x34cc('0x3d')]){_0xed7b4[_0x34cc('0x3a')]=_['merge'](_0xed7b4[_0x34cc('0x3a')],{'$or':_[_0x34cc('0x2a')](_0xed7b4[_0x34cc('0x35')],function(_0x2e0571){var _0x3818da={};_0x3818da[_0x2e0571]={'$like':'%'+_0x24ee44['query']['filter']+'%'};return _0x3818da;})});}_0xed7b4=_[_0x34cc('0x3e')]({},_0xed7b4,_0x24ee44['options']);return db['ChatOfflineMessage']['count']({'where':_0xed7b4['where']})[_0x34cc('0x11')](function(_0x362237){_0x1b7bea[_0x34cc('0x20')]=_0x362237;if(_0x24ee44[_0x34cc('0x30')][_0x34cc('0x55')]){_0xed7b4[_0x34cc('0x40')]=[{'all':!![]}];}else{_0xed7b4['include']=[{'model':db[_0x34cc('0x79')],'as':_0x34cc('0xdf'),'required':![]},{'model':db[_0x34cc('0xc9')],'as':_0x34cc('0x114'),'required':![]}];}return db[_0x34cc('0xc1')][_0x34cc('0x41')](_0xed7b4);})[_0x34cc('0x11')](function(_0x22716a){_0x1b7bea['rows']=_0x22716a;return _0x1b7bea;});}})[_0x34cc('0x11')](respondWithFilteredResult(_0x459bd1,_0xed7b4))['catch'](handleError(_0x459bd1,null));};exports[_0x34cc('0x115')]=function(_0x17d298,_0x438516){return db[_0x34cc('0x2b')][_0x34cc('0x47')]({'where':{'id':_0x17d298[_0x34cc('0x44')]['id']}})[_0x34cc('0x11')](handleEntityNotFound(_0x438516,null))['then'](function(_0x59e371){if(_0x59e371){return _0x59e371[_0x34cc('0x115')](_0x17d298[_0x34cc('0x49')][_0x34cc('0x57')],_[_0x34cc('0xdd')](_0x17d298[_0x34cc('0x49')],[_0x34cc('0x57'),'id'])||{})[_0x34cc('0xba')](function(_0x24b594){for(var _0x3ca0cd=0x0;_0x3ca0cd<_0x17d298['body'][_0x34cc('0x57')][_0x34cc('0x46')];_0x3ca0cd+=0x1){socket[_0x34cc('0x116')](_0x34cc('0x117'),{'UserId':Number(_0x17d298[_0x34cc('0x49')][_0x34cc('0x57')][_0x3ca0cd]),'ChatWebsiteId':Number(_0x17d298[_0x34cc('0x44')]['id'])});}return _0x24b594;});}})[_0x34cc('0x11')](respondWithResult(_0x438516,null))[_0x34cc('0x1a')](handleError(_0x438516,null));};exports['removeAgents']=function(_0x427768,_0xa32f04){return db[_0x34cc('0x2b')][_0x34cc('0x47')]({'where':{'id':_0x427768[_0x34cc('0x44')]['id']}})['then'](handleEntityNotFound(_0xa32f04,null))[_0x34cc('0x11')](function(_0x343013){if(_0x343013){return _0x343013[_0x34cc('0x118')](_0x427768[_0x34cc('0x30')][_0x34cc('0x57')])[_0x34cc('0x11')](function(){if(_[_0x34cc('0x119')](_0x427768[_0x34cc('0x30')][_0x34cc('0x57')])){for(var _0xfe7e=0x0;_0xfe7e<_0x427768[_0x34cc('0x30')][_0x34cc('0x57')][_0x34cc('0x46')];_0xfe7e+=0x1){socket[_0x34cc('0x116')](_0x34cc('0x11a'),{'UserId':Number(_0x427768[_0x34cc('0x30')][_0x34cc('0x57')][_0xfe7e]),'ChatWebsiteId':Number(_0x427768[_0x34cc('0x44')]['id'])});}}else{socket['emit'](_0x34cc('0x11a'),{'UserId':Number(_0x427768[_0x34cc('0x30')][_0x34cc('0x57')]),'ChatWebsiteId':Number(_0x427768['params']['id'])});}});}})[_0x34cc('0x11')](respondWithStatusCode(_0xa32f04,null))[_0x34cc('0x1a')](handleError(_0xa32f04,null));};exports['getAgents']=function(_0x412dd7,_0xaf212f){var _0x5898d4={};var _0x567706={};var _0x5f3b8c;var _0x5a0dcf;return db[_0x34cc('0x2b')]['findOne']({'where':{'id':_0x412dd7['params']['id']}})['then'](handleEntityNotFound(_0xaf212f,null))['then'](function(_0x1c2ec6){if(_0x1c2ec6){_0x5f3b8c=_0x1c2ec6;_0x567706[_0x34cc('0x2f')]=_[_0x34cc('0x31')](db['User'][_0x34cc('0x2c')]);_0x567706['query']=_[_0x34cc('0x31')](_0x412dd7['query']);_0x567706[_0x34cc('0x32')]=_['intersection'](_0x567706[_0x34cc('0x2f')],_0x567706[_0x34cc('0x30')]);_0x5898d4[_0x34cc('0x35')]=_[_0x34cc('0x33')](_0x567706['model'],qs[_0x34cc('0x34')](_0x412dd7['query'][_0x34cc('0x34')]));_0x5898d4[_0x34cc('0x35')]=_0x5898d4[_0x34cc('0x35')][_0x34cc('0x46')]?_0x5898d4['attributes']:_0x567706[_0x34cc('0x2f')];_0x5898d4[_0x34cc('0x38')]=qs[_0x34cc('0x39')](_0x412dd7[_0x34cc('0x30')]['sort']);_0x5898d4[_0x34cc('0x3a')]=qs[_0x34cc('0x32')](_[_0x34cc('0x3b')](_0x412dd7['query'],_0x567706['filters']));if(_0x412dd7['query'][_0x34cc('0x3d')]){_0x5898d4['where']=_[_0x34cc('0x3e')](_0x5898d4['where'],{'$or':_[_0x34cc('0x2a')](_0x5898d4['attributes'],function(_0x207610){var _0x55ece5={};_0x55ece5[_0x207610]={'$like':'%'+_0x412dd7[_0x34cc('0x30')][_0x34cc('0x3d')]+'%'};return _0x55ece5;})});}_0x5898d4=_['merge']({},_0x5898d4,_0x412dd7[_0x34cc('0x3f')]);return _0x5f3b8c['getAgents'](_0x5898d4);}})[_0x34cc('0x11')](function(_0x318297){if(_0x318297){_0x5a0dcf=_0x318297['length'];if(!_0x412dd7['query'][_0x34cc('0x54')](_0x34cc('0x36'))){_0x5898d4[_0x34cc('0x37')]=qs[_0x34cc('0x37')](_0x412dd7[_0x34cc('0x30')][_0x34cc('0x37')]);_0x5898d4['offset']=qs['offset'](_0x412dd7[_0x34cc('0x30')][_0x34cc('0x1e')]);}return _0x5f3b8c[_0x34cc('0x11b')](_0x5898d4);}})['then'](function(_0x37796d){if(_0x37796d){return _0x37796d?{'count':_0x5a0dcf,'rows':_0x37796d}:null;}})['then'](respondWithResult(_0xaf212f,null))[_0x34cc('0x1a')](handleError(_0xaf212f,null));};
\ No newline at end of file
index 51eeac8..8c72187 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0x3c94=['save','update','remove','emit','hasOwnProperty','hook','exports','events','../../mysqldb','ChatWebsite','setMaxListeners'];(function(_0x335f37,_0x37302b){var _0x1768f4=function(_0x3ce316){while(--_0x3ce316){_0x335f37['push'](_0x335f37['shift']());}};_0x1768f4(++_0x37302b);}(_0x3c94,0xcd));var _0x43c9=function(_0x3acfa3,_0x13ea7a){_0x3acfa3=_0x3acfa3-0x0;var _0xcfe26e=_0x3c94[_0x3acfa3];return _0xcfe26e;};'use strict';var EventEmitter=require(_0x43c9('0x0'));var ChatWebsite=require(_0x43c9('0x1'))['db'][_0x43c9('0x2')];var ChatWebsiteEvents=new EventEmitter();ChatWebsiteEvents[_0x43c9('0x3')](0x0);var events={'afterCreate':_0x43c9('0x4'),'afterUpdate':_0x43c9('0x5'),'afterDestroy':_0x43c9('0x6')};function emitEvent(_0x18159f){return function(_0x170a0d,_0x44fc3,_0x15ef71){ChatWebsiteEvents[_0x43c9('0x7')](_0x18159f+':'+_0x170a0d['id'],_0x170a0d);ChatWebsiteEvents['emit'](_0x18159f,_0x170a0d);_0x15ef71(null);};}for(var e in events){if(events[_0x43c9('0x8')](e)){var event=events[e];ChatWebsite[_0x43c9('0x9')](e,emitEvent(event));}}module[_0x43c9('0xa')]=ChatWebsiteEvents;
\ No newline at end of file
index 629b320..effe115 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0xd33a=['util','../../config/logger','moment','bluebird','request-promise','path','rimraf','../../config/environment','exports','define','ChatWebsite','chat_websites','lodash'];(function(_0x56ac40,_0x3eb56c){var _0x5e32c3=function(_0x267930){while(--_0x267930){_0x56ac40['push'](_0x56ac40['shift']());}};_0x5e32c3(++_0x3eb56c);}(_0xd33a,0xb5));var _0xad33=function(_0x526aeb,_0x33c315){_0x526aeb=_0x526aeb-0x0;var _0xe874c4=_0xd33a[_0x526aeb];return _0xe874c4;};'use strict';var _=require(_0xad33('0x0'));var util=require(_0xad33('0x1'));var logger=require(_0xad33('0x2'))('api');var moment=require(_0xad33('0x3'));var BPromise=require(_0xad33('0x4'));var rp=require(_0xad33('0x5'));var fs=require('fs');var path=require(_0xad33('0x6'));var rimraf=require(_0xad33('0x7'));var config=require(_0xad33('0x8'));var attributes=require('./chatWebsite.attributes');module[_0xad33('0x9')]=function(_0x807c1f,_0x2152c4){return _0x807c1f[_0xad33('0xa')](_0xad33('0xb'),attributes,{'tableName':_0xad33('0xc'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 905948a..932425a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0x724f=['localhost','then','info','ChatWebsite,\x20%s,\x20%s','debug','ChatWebsite,\x20%s,\x20%s,\x20%s','request\x20sent','error','code','message','result','catch','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/logger','rpc','jayson/promise','client','http','redis','defaults'];(function(_0x3bfd41,_0x51c14b){var _0x3b54a3=function(_0x490210){while(--_0x490210){_0x3bfd41['push'](_0x3bfd41['shift']());}};_0x3b54a3(++_0x51c14b);}(_0x724f,0x1c6));var _0xf724=function(_0x208609,_0x48feb6){_0x208609=_0x208609-0x0;var _0x25ec52=_0x724f[_0x208609];return _0x25ec52;};'use strict';var _=require(_0xf724('0x0'));var util=require(_0xf724('0x1'));var moment=require(_0xf724('0x2'));var BPromise=require(_0xf724('0x3'));var rs=require(_0xf724('0x4'));var fs=require('fs');var Redis=require(_0xf724('0x5'));var db=require(_0xf724('0x6'))['db'];var utils=require('../../config/utils');var logger=require(_0xf724('0x7'))(_0xf724('0x8'));var config=require('../../config/environment');var jayson=require(_0xf724('0x9'));var client=jayson[_0xf724('0xa')][_0xf724('0xb')]({'port':0x232a});config[_0xf724('0xc')]=_[_0xf724('0xd')](config[_0xf724('0xc')],{'host':_0xf724('0xe'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0xf724('0xc')]));require('./chatWebsite.socket')['register'](socket);function respondWithRpcPromise(_0x5597c8,_0x4c37f6,_0x1d1893){return new BPromise(function(_0xf00b41,_0x1f53ff){return client['request'](_0x5597c8,_0x1d1893)[_0xf724('0xf')](function(_0x3a9b36){logger[_0xf724('0x10')](_0xf724('0x11'),_0x4c37f6,'request\x20sent');logger[_0xf724('0x12')](_0xf724('0x13'),_0x4c37f6,_0xf724('0x14'),JSON['stringify'](_0x3a9b36));if(_0x3a9b36[_0xf724('0x15')]){if(_0x3a9b36['error'][_0xf724('0x16')]===0x1f4){logger[_0xf724('0x15')](_0xf724('0x11'),_0x4c37f6,_0x3a9b36['error'][_0xf724('0x17')]);return _0x1f53ff(_0x3a9b36[_0xf724('0x15')][_0xf724('0x17')]);}logger['error'](_0xf724('0x11'),_0x4c37f6,_0x3a9b36['error'][_0xf724('0x17')]);return _0xf00b41(_0x3a9b36[_0xf724('0x15')]['message']);}else{logger[_0xf724('0x10')](_0xf724('0x11'),_0x4c37f6,_0xf724('0x14'));_0xf00b41(_0x3a9b36[_0xf724('0x18')][_0xf724('0x17')]);}})[_0xf724('0x19')](function(_0x728287){logger[_0xf724('0x15')](_0xf724('0x11'),_0x4c37f6,_0x728287);_0x1f53ff(_0x728287);});});}
\ No newline at end of file
index 64106ff..e97e39a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0x2c12=['update','removeListener','register','length','chatWebsite:','save'];(function(_0x20a584,_0xe384a5){var _0x4b41a8=function(_0x2127c6){while(--_0x2127c6){_0x20a584['push'](_0x20a584['shift']());}};_0x4b41a8(++_0xe384a5);}(_0x2c12,0x15b));var _0x22c1=function(_0x44ae0b,_0x3e9865){_0x44ae0b=_0x44ae0b-0x0;var _0x69232a=_0x2c12[_0x44ae0b];return _0x69232a;};'use strict';var ChatWebsiteEvents=require('./chatWebsite.events');var events=[_0x22c1('0x0'),'remove',_0x22c1('0x1')];function createListener(_0x377168,_0x76c363){return function(_0x3fa859){_0x76c363['emit'](_0x377168,_0x3fa859);};}function removeListener(_0xb1f255,_0x15e12e){return function(){ChatWebsiteEvents[_0x22c1('0x2')](_0xb1f255,_0x15e12e);};}exports[_0x22c1('0x3')]=function(_0x564b03){for(var _0x1112b2=0x0,_0x10e890=events[_0x22c1('0x4')];_0x1112b2<_0x10e890;_0x1112b2++){var _0x1901d4=events[_0x1112b2];var _0x1b1694=createListener(_0x22c1('0x5')+_0x1901d4,_0x564b03);ChatWebsiteEvents['on'](_0x1901d4,_0x1b1694);}};
\ No newline at end of file
index 29077c0..8937bbb 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0xef0b=['removeAnswers','removeAgents','exports','multer','util','connect-timeout','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./chatWebsite.controller','get','isAuthenticated','index','describe','/:id','show','/:id/dispositions','getDispositions','/:id/canned_answers','getAnswers','/:id/logo','getLogo','/:id/avatar','getAvatar','/:id/customer_avatar','getCustomerAvatar','getSystemAvatar','/:id/interactions','getInteractions','/:id/snippet','/:id/applications','getApplications','getProactiveActions','/:id/fields','getFields','/:id/offline_messages','post','create','addDisposition','addAnswer','join','server/files/images/logos/','%s-%s','single','file','root','server/files/images/avatars/','format','now','originalname','addAvatar','addCustomerAvatar','diskStorage','/:id/system_avatar','addSystemAvatar','/:id/notify','notify','server/files','attachments','offline-chat','ensureDir','replace','addInteraction','addApplications','/:id/proactive_actions','addProactiveActions','addAgents','put','delete','removeDispositions'];(function(_0x18cac4,_0x57a4d5){var _0x2227c6=function(_0x72934d){while(--_0x72934d){_0x18cac4['push'](_0x18cac4['shift']());}};_0x2227c6(++_0x57a4d5);}(_0xef0b,0x16b));var _0xbef0=function(_0x1bd5e7,_0x2ed97e){_0x1bd5e7=_0x1bd5e7-0x0;var _0x53cc7f=_0xef0b[_0x1bd5e7];return _0x53cc7f;};'use strict';var multer=require(_0xbef0('0x0'));var util=require(_0xbef0('0x1'));var path=require('path');var timeout=require(_0xbef0('0x2'));var express=require('express');var router=express[_0xbef0('0x3')]();var fs_extra=require(_0xbef0('0x4'));var auth=require(_0xbef0('0x5'));var interaction=require(_0xbef0('0x6'));var config=require(_0xbef0('0x7'));var controller=require(_0xbef0('0x8'));router[_0xbef0('0x9')]('/',auth[_0xbef0('0xa')](),controller[_0xbef0('0xb')]);router[_0xbef0('0x9')]('/describe',auth[_0xbef0('0xa')](),controller[_0xbef0('0xc')]);router[_0xbef0('0x9')](_0xbef0('0xd'),auth[_0xbef0('0xa')](),controller[_0xbef0('0xe')]);router['get'](_0xbef0('0xf'),auth['isAuthenticated'](),controller[_0xbef0('0x10')]);router[_0xbef0('0x9')](_0xbef0('0x11'),auth[_0xbef0('0xa')](),controller[_0xbef0('0x12')]);router[_0xbef0('0x9')](_0xbef0('0x13'),controller[_0xbef0('0x14')]);router['get'](_0xbef0('0x15'),controller[_0xbef0('0x16')]);router[_0xbef0('0x9')](_0xbef0('0x17'),controller[_0xbef0('0x18')]);router['get']('/:id/system_avatar',controller[_0xbef0('0x19')]);router[_0xbef0('0x9')](_0xbef0('0x1a'),auth[_0xbef0('0xa')](),controller[_0xbef0('0x1b')]);router[_0xbef0('0x9')](_0xbef0('0x1c'),controller['getSnippet']);router[_0xbef0('0x9')](_0xbef0('0x1d'),auth[_0xbef0('0xa')](),controller[_0xbef0('0x1e')]);router[_0xbef0('0x9')]('/:id/proactive_actions',auth[_0xbef0('0xa')](),controller[_0xbef0('0x1f')]);router['get'](_0xbef0('0x20'),controller[_0xbef0('0x21')]);router[_0xbef0('0x9')](_0xbef0('0x22'),auth[_0xbef0('0xa')](),controller['getOfflineMessages']);router[_0xbef0('0x9')]('/:id/users',auth[_0xbef0('0xa')](),controller['getAgents']);router[_0xbef0('0x23')]('/',auth['isAuthenticated'](),controller[_0xbef0('0x24')]);router[_0xbef0('0x23')](_0xbef0('0xf'),auth[_0xbef0('0xa')](),controller[_0xbef0('0x25')]);router[_0xbef0('0x23')](_0xbef0('0x11'),auth['isAuthenticated'](),controller[_0xbef0('0x26')]);var upload=multer({'storage':multer['diskStorage']({'destination':function(_0x408c3b,_0x5ede98,_0x5d2a27){_0x5d2a27(null,path[_0xbef0('0x27')](config['root'],_0xbef0('0x28')));},'filename':function(_0x1fd4de,_0x3b32bf,_0x3263e8){_0x3263e8(null,util['format'](_0xbef0('0x29'),Date['now'](),_0x3b32bf['originalname']));}})});router[_0xbef0('0x23')]('/:id/logo',upload[_0xbef0('0x2a')](_0xbef0('0x2b')),controller['addLogo']);var upload=multer({'storage':multer['diskStorage']({'destination':function(_0x48647e,_0x40a3ad,_0x587791){_0x587791(null,path['join'](config[_0xbef0('0x2c')],_0xbef0('0x2d')));},'filename':function(_0x4a407e,_0x4855b6,_0x1d6b31){_0x1d6b31(null,util[_0xbef0('0x2e')](_0xbef0('0x29'),Date[_0xbef0('0x2f')](),_0x4855b6[_0xbef0('0x30')]));}})});router[_0xbef0('0x23')](_0xbef0('0x15'),upload['single'](_0xbef0('0x2b')),controller[_0xbef0('0x31')]);var upload=multer({'storage':multer['diskStorage']({'destination':function(_0x1b8992,_0x199a41,_0x58ed2d){_0x58ed2d(null,path[_0xbef0('0x27')](config[_0xbef0('0x2c')],_0xbef0('0x2d')));},'filename':function(_0x59ec42,_0x20a881,_0xee8760){_0xee8760(null,util[_0xbef0('0x2e')](_0xbef0('0x29'),Date[_0xbef0('0x2f')](),_0x20a881[_0xbef0('0x30')]));}})});router[_0xbef0('0x23')](_0xbef0('0x17'),upload['single']('file'),controller[_0xbef0('0x32')]);var upload=multer({'storage':multer[_0xbef0('0x33')]({'destination':function(_0x171500,_0x1dad07,_0x50cc9a){_0x50cc9a(null,path[_0xbef0('0x27')](config[_0xbef0('0x2c')],'server/files/images/avatars/'));},'filename':function(_0xfd09da,_0x543144,_0x26fdd0){_0x26fdd0(null,util['format'](_0xbef0('0x29'),Date[_0xbef0('0x2f')](),_0x543144[_0xbef0('0x30')]));}})});router[_0xbef0('0x23')](_0xbef0('0x34'),upload[_0xbef0('0x2a')](_0xbef0('0x2b')),controller[_0xbef0('0x35')]);router[_0xbef0('0x23')](_0xbef0('0x36'),controller[_0xbef0('0x37')]);const offlineUploadMulter=multer({'storage':multer[_0xbef0('0x33')]({'destination':function(_0xd76158,_0x29d57d,_0x3e3149){const _0x3a2dd4=path[_0xbef0('0x27')](config['root'],_0xbef0('0x38'),_0xbef0('0x39'),_0xbef0('0x3a'));fs_extra[_0xbef0('0x3b')](_0x3a2dd4,function(){_0x3e3149(null,_0x3a2dd4);});},'filename':function(_0x324c78,_0x239df0,_0x51b9f9){const _0x4becc9=_0x239df0[_0xbef0('0x30')][_0xbef0('0x3c')](/[+@&\/\\#,+()$~%'":*?<>{}\s\\|]/g,'-');const _0x4a0dc8=path['extname'](_0x4becc9);const _0x369cb0=Date[_0xbef0('0x2f')]()+'-'+_0x4becc9[_0xbef0('0x3c')](_0x4a0dc8,'')+_0x4a0dc8;_0x51b9f9(null,_0x369cb0);}})});router[_0xbef0('0x23')]('/:id/offline',offlineUploadMulter['any'](),controller['offline']);router['post'](_0xbef0('0x1a'),auth['isAuthenticated'](),controller[_0xbef0('0x3d')]);router[_0xbef0('0x23')](_0xbef0('0x1d'),auth[_0xbef0('0xa')](),controller[_0xbef0('0x3e')]);router[_0xbef0('0x23')](_0xbef0('0x3f'),auth['isAuthenticated'](),controller[_0xbef0('0x40')]);router[_0xbef0('0x23')]('/:id/users',auth[_0xbef0('0xa')](),controller[_0xbef0('0x41')]);router[_0xbef0('0x42')](_0xbef0('0xd'),auth[_0xbef0('0xa')](),controller['update']);router[_0xbef0('0x43')](_0xbef0('0xd'),auth[_0xbef0('0xa')](),controller['destroy']);router[_0xbef0('0x43')](_0xbef0('0xf'),auth[_0xbef0('0xa')](),controller[_0xbef0('0x44')]);router[_0xbef0('0x43')](_0xbef0('0x11'),auth[_0xbef0('0xa')](),controller[_0xbef0('0x45')]);router['delete']('/:id/users',auth[_0xbef0('0xa')](),controller[_0xbef0('0x46')]);module[_0xbef0('0x47')]=router;
\ No newline at end of file
index 91e7cc7..36c9a7d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0xf035=['exports','beaver-logger/server','../components/auth/service','../config/environment','Router','env','production','get','client-side-logger','Client-Side\x20logger\x20not\x20found!','expressEndpoint','/client-logs','use'];(function(_0x26551b,_0x256634){var _0x26da0c=function(_0x6e2902){while(--_0x6e2902){_0x26551b['push'](_0x26551b['shift']());}};_0x26da0c(++_0x256634);}(_0xf035,0x153));var _0x5f03=function(_0x2a3fca,_0x35bf5e){_0x2a3fca=_0x2a3fca-0x0;var _0x3acb7b=_0xf035[_0x2a3fca];return _0x3acb7b;};var beaverLogger=require(_0x5f03('0x0'));var express=require('express');var auth=require(_0x5f03('0x1'));var config=require(_0x5f03('0x2'));var router=express[_0x5f03('0x3')]();var isProduction=config[_0x5f03('0x4')]===_0x5f03('0x5')||![];function clientSideLogs(_0x4648be,_0x227c84,_0x4737a3){var _0x254199=_0x4648be['app'][_0x5f03('0x6')](_0x5f03('0x7'));if(!_0x254199){throw new Error(_0x5f03('0x8'));}return beaverLogger[_0x5f03('0x9')]({'uri':_0x5f03('0xa'),'logger':_0x254199,'enableCors':!isProduction})(_0x4648be,_0x227c84,_0x4737a3);}router[_0x5f03('0xb')](auth['isAuthenticated'](),clientSideLogs);module[_0x5f03('0xc')]=router;
\ No newline at end of file
index 0e1d7a6..b62e715 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0xb089=['MicrosoftAzure\x20=>\x20refresh_token','MicrosoftAzure\x20=>\x20Dynamics365\x20=>\x20remote_uri','exports','ENUM','AmazonAWS','Google','Outlook365','MicrosoftAzure\x20=>\x20client_id','STRING','MicrosoftAzure\x20=>\x20tenant','MicrosoftAzure\x20=>\x20client_secret','MicrosoftAzure\x20=>\x20redirect_uri','TEXT','MicrosoftAzure\x20=>\x20access_token'];(function(_0x1d1779,_0x284147){var _0x2377e9=function(_0x299f6f){while(--_0x299f6f){_0x1d1779['push'](_0x1d1779['shift']());}};_0x2377e9(++_0x284147);}(_0xb089,0xf0));var _0x9b08=function(_0xea13d5,_0x47646e){_0xea13d5=_0xea13d5-0x0;var _0xddf5a1=_0xb089[_0xea13d5];return _0xddf5a1;};'use strict';var Sequelize=require('sequelize');module[_0x9b08('0x0')]={'name':{'type':Sequelize['STRING'],'allowNull':![],'validate':{'notEmpty':!![]}},'service':{'type':Sequelize[_0x9b08('0x1')](_0x9b08('0x2'),_0x9b08('0x3'),'MicrosoftAzure'),'allowNull':![],'validate':{'notEmpty':!![]}},'type':{'type':Sequelize[_0x9b08('0x1')](_0x9b08('0x4'),'Dynamics365')},'data1':{'type':Sequelize['STRING'],'comment':_0x9b08('0x5')},'data2':{'type':Sequelize[_0x9b08('0x6')],'comment':_0x9b08('0x7')},'data3':{'type':Sequelize[_0x9b08('0x6')],'comment':_0x9b08('0x8')},'data4':{'type':Sequelize[_0x9b08('0x6')],'comment':_0x9b08('0x9')},'data5':{'type':Sequelize[_0x9b08('0xa')],'comment':_0x9b08('0xb')},'data6':{'type':Sequelize[_0x9b08('0xa')],'comment':_0x9b08('0xc')},'data7':{'type':Sequelize[_0x9b08('0xa')],'comment':_0x9b08('0xd')}};
\ No newline at end of file
index 3c66364..90fc22c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0x2b1a=['attributes','fields','length','hasOwnProperty','order','sort','pick','filter','merge','where','VIRTUAL','CloudProvider','includeAll','include','findAll','MicrosoftAzure','decryptString','data3','intersection','options','find','service','catch','Name\x20parameter\x20not\x20specified','body','includes','Invalid\x20service\x20parameter.\x20Allowed\x20values:\x20','create','update','params','encryptString','oauth2MicrosoftAuthorize','generateMicrosoftAuthorizationUrl','user','oauth2MicrosoftCallback','error','get','state','Invalid\x20state\x20parameter','parse','from','base64','toString','ascii','isValidIdToken','id_token','oauth2Claims','Unable\x20to\x20validate\x20id_token','del','getOauth2MicrosoftAccessToken','code','data5','access_token','data6','refresh_token','emit','microsoftAuthorization:success','microsoftAuthorization:error','message','Authentication\x20failed\x20for\x20cloud\x20provider\x20#%s,\x20err:%s','lodash','ioredis','../../components/parsers/qs','../../components/encryptor','../../config/environment','../../mysqldb','./cloudProvider.oauth','redis','localhost','socket.io-emitter','sendStatus','status','json','offset','undefined','count','limit','set','Content-Range','then','destroy','stack','name','send','padEnd','index','map','rawAttributes','type','key','model','query','keys','filters'];(function(_0x2220b0,_0x117af9){var _0x4f4913=function(_0x1c46de){while(--_0x1c46de){_0x2220b0['push'](_0x2220b0['shift']());}};_0x4f4913(++_0x117af9);}(_0x2b1a,0xf8));var _0xa2b1=function(_0x6cd4d7,_0x177635){_0x6cd4d7=_0x6cd4d7-0x0;var _0x336ee4=_0x2b1a[_0x6cd4d7];return _0x336ee4;};'use strict';var _=require(_0xa2b1('0x0'));var Redis=require(_0xa2b1('0x1'));var qs=require(_0xa2b1('0x2'));var encryptor=require(_0xa2b1('0x3'));var config=require(_0xa2b1('0x4'));var logger=require('../../config/logger')('api');var db=require(_0xa2b1('0x5'))['db'];var oauth=require(_0xa2b1('0x6'));config['redis']=_['defaults'](config[_0xa2b1('0x7')],{'host':_0xa2b1('0x8'),'port':0x18eb});var socket=require(_0xa2b1('0x9'))(new Redis(config[_0xa2b1('0x7')]));var redis=new Redis(config[_0xa2b1('0x7')]);function respondWithStatusCode(_0x5dd29e,_0x2da874){_0x2da874=_0x2da874||0xcc;return function(_0x447ae7){if(_0x447ae7){return _0x5dd29e[_0xa2b1('0xa')](_0x2da874);}return _0x5dd29e[_0xa2b1('0xb')](_0x2da874)['end']();};}function respondWithResult(_0x46d274,_0x28d1b5){_0x28d1b5=_0x28d1b5||0xc8;return function(_0x37ce61){if(_0x37ce61){return _0x46d274['status'](_0x28d1b5)[_0xa2b1('0xc')](_0x37ce61);}};}function respondWithFilteredResult(_0x5ee1cd,_0x394892){return function(_0x1b6915){if(_0x1b6915){var _0x5cf518=typeof _0x394892[_0xa2b1('0xd')]==='undefined'&&typeof _0x394892['limit']===_0xa2b1('0xe');var _0x2fec79=_0x1b6915[_0xa2b1('0xf')];var _0x333aaf=_0x5cf518?0x0:_0x394892[_0xa2b1('0xd')];var _0x470028=_0x5cf518?_0x1b6915[_0xa2b1('0xf')]:_0x394892[_0xa2b1('0xd')]+_0x394892[_0xa2b1('0x10')];var _0x5f006f;if(_0x470028>=_0x2fec79){_0x470028=_0x2fec79;_0x5f006f=0xc8;}else{_0x5f006f=0xce;}_0x5ee1cd[_0xa2b1('0xb')](_0x5f006f);return _0x5ee1cd[_0xa2b1('0x11')](_0xa2b1('0x12'),_0x333aaf+'-'+_0x470028+'/'+_0x2fec79)[_0xa2b1('0xc')](_0x1b6915);}return null;};}function saveUpdates(_0x42c20c){return function(_0x3a9dfe){if(_0x3a9dfe){return _0x3a9dfe['update'](_0x42c20c)[_0xa2b1('0x13')](function(_0x7186ea){return _0x7186ea;});}return null;};}function removeEntity(_0x10e04){return function(_0x2636bf){if(_0x2636bf){return _0x2636bf[_0xa2b1('0x14')]()[_0xa2b1('0x13')](function(){_0x10e04[_0xa2b1('0xb')](0xcc)['end']();});}};}function handleEntityNotFound(_0xbfef39){return function(_0x3c32f7){if(!_0x3c32f7){_0xbfef39['sendStatus'](0x194);}return _0x3c32f7;};}function handleError(_0x588f1d,_0x4fa03c){_0x4fa03c=_0x4fa03c||0x1f4;return function(_0x33b04c){logger['error'](_0x33b04c[_0xa2b1('0x15')]);if(_0x33b04c[_0xa2b1('0x16')]){delete _0x33b04c[_0xa2b1('0x16')];}_0x588f1d[_0xa2b1('0xb')](_0x4fa03c)[_0xa2b1('0x17')](_0x33b04c);};}function maskClientSecret(_0x3f3e58){return _[_0xa2b1('0x18')](_0x3f3e58['slice'](0x0,0x3),0x14,'*');}exports[_0xa2b1('0x19')]=function(_0x385aa7,_0x5cc011){var _0x3f7826={},_0x15b88a={},_0x3af050={'count':0x0,'rows':[]};var _0x310737=_[_0xa2b1('0x1a')](db['CloudProvider'][_0xa2b1('0x1b')],function(_0xaf7f2a){return{'name':_0xaf7f2a['fieldName'],'type':_0xaf7f2a[_0xa2b1('0x1c')][_0xa2b1('0x1d')]};});_0x15b88a[_0xa2b1('0x1e')]=_[_0xa2b1('0x1a')](_0x310737,'name');_0x15b88a[_0xa2b1('0x1f')]=_[_0xa2b1('0x20')](_0x385aa7[_0xa2b1('0x1f')]);_0x15b88a[_0xa2b1('0x21')]=_['intersection'](_0x15b88a[_0xa2b1('0x1e')],_0x15b88a['query']);_0x3f7826[_0xa2b1('0x22')]=_['intersection'](_0x15b88a[_0xa2b1('0x1e')],qs['fields'](_0x385aa7[_0xa2b1('0x1f')][_0xa2b1('0x23')]));_0x3f7826[_0xa2b1('0x22')]=_0x3f7826[_0xa2b1('0x22')][_0xa2b1('0x24')]?_0x3f7826[_0xa2b1('0x22')]:_0x15b88a[_0xa2b1('0x1e')];if(!_0x385aa7[_0xa2b1('0x1f')][_0xa2b1('0x25')]('nolimit')){_0x3f7826[_0xa2b1('0x10')]=qs['limit'](_0x385aa7[_0xa2b1('0x1f')][_0xa2b1('0x10')]);_0x3f7826[_0xa2b1('0xd')]=qs[_0xa2b1('0xd')](_0x385aa7[_0xa2b1('0x1f')][_0xa2b1('0xd')]);}_0x3f7826[_0xa2b1('0x26')]=qs['sort'](_0x385aa7[_0xa2b1('0x1f')][_0xa2b1('0x27')]);_0x3f7826['where']=qs[_0xa2b1('0x21')](_[_0xa2b1('0x28')](_0x385aa7[_0xa2b1('0x1f')],_0x15b88a[_0xa2b1('0x21')]),_0x310737);if(_0x385aa7[_0xa2b1('0x1f')][_0xa2b1('0x29')]){_0x3f7826['where']=_[_0xa2b1('0x2a')](_0x3f7826[_0xa2b1('0x2b')],{'$or':_[_0xa2b1('0x1a')](_0x310737,function(_0x131839){if(_0x131839[_0xa2b1('0x1c')]!==_0xa2b1('0x2c')){var _0x2b6a4b={};_0x2b6a4b[_0x131839[_0xa2b1('0x16')]]={'$like':'%'+_0x385aa7[_0xa2b1('0x1f')][_0xa2b1('0x29')]+'%'};return _0x2b6a4b;}})});}_0x3f7826=_[_0xa2b1('0x2a')]({},_0x3f7826,_0x385aa7['options']);var _0xbead14={'where':_0x3f7826[_0xa2b1('0x2b')]};return db[_0xa2b1('0x2d')][_0xa2b1('0xf')](_0xbead14)['then'](function(_0x4ce002){_0x3af050['count']=_0x4ce002;if(_0x385aa7[_0xa2b1('0x1f')][_0xa2b1('0x2e')]){_0x3f7826[_0xa2b1('0x2f')]=[{'all':!![]}];}return db['CloudProvider'][_0xa2b1('0x30')](_0x3f7826);})['then'](function(_0x31bf0e){_0x3af050['rows']=_['map'](_0x31bf0e,function(_0x5ac4ce){if(_0x5ac4ce['service']===_0xa2b1('0x31')){var _0x3b392e=encryptor[_0xa2b1('0x32')](_0x5ac4ce['data3']);_0x5ac4ce[_0xa2b1('0x33')]=maskClientSecret(_0x3b392e);}return _0x5ac4ce;});return _0x3af050;})['then'](respondWithFilteredResult(_0x5cc011,_0x3f7826))['catch'](handleError(_0x5cc011,null));};exports['show']=function(_0x1e26c7,_0x1fa445){var _0x533ba3={'raw':!![],'where':{'id':_0x1e26c7['params']['id']}},_0x21f259={};_0x21f259[_0xa2b1('0x1e')]=_['keys'](db[_0xa2b1('0x2d')][_0xa2b1('0x1b')]);_0x21f259['query']=_[_0xa2b1('0x20')](_0x1e26c7[_0xa2b1('0x1f')]);_0x21f259[_0xa2b1('0x21')]=_[_0xa2b1('0x34')](_0x21f259[_0xa2b1('0x1e')],_0x21f259['query']);_0x533ba3[_0xa2b1('0x22')]=_['intersection'](_0x21f259[_0xa2b1('0x1e')],qs['fields'](_0x1e26c7['query'][_0xa2b1('0x23')]));_0x533ba3[_0xa2b1('0x22')]=_0x533ba3[_0xa2b1('0x22')][_0xa2b1('0x24')]?_0x533ba3[_0xa2b1('0x22')]:_0x21f259[_0xa2b1('0x1e')];if(_0x1e26c7[_0xa2b1('0x1f')]['includeAll']){_0x533ba3[_0xa2b1('0x2f')]=[{'all':!![]}];}_0x533ba3=_[_0xa2b1('0x2a')]({},_0x533ba3,_0x1e26c7[_0xa2b1('0x35')]);return db[_0xa2b1('0x2d')][_0xa2b1('0x36')](_0x533ba3)[_0xa2b1('0x13')](handleEntityNotFound(_0x1fa445,null))[_0xa2b1('0x13')](function(_0x2c7d52){if(_0x2c7d52[_0xa2b1('0x37')]===_0xa2b1('0x31')){var _0x33c0c7=encryptor[_0xa2b1('0x32')](_0x2c7d52['data3']);_0x2c7d52[_0xa2b1('0x33')]=maskClientSecret(_0x33c0c7);}return _0x2c7d52;})[_0xa2b1('0x13')](respondWithResult(_0x1fa445,null))[_0xa2b1('0x38')](handleError(_0x1fa445,null));};exports['create']=function(_0x51eb6c,_0x3ce386){if(!_0x51eb6c['body'][_0xa2b1('0x16')])throw new Error(_0xa2b1('0x39'));if(!_0x51eb6c[_0xa2b1('0x3a')][_0xa2b1('0x37')])throw new Error('Service\x20parameter\x20not\x20specified');var _0x4c0163=db['CloudProvider'][_0xa2b1('0x1b')][_0xa2b1('0x37')]['values'];if(!_0x4c0163[_0xa2b1('0x3b')](_0x51eb6c[_0xa2b1('0x3a')]['service']))throw new Error(_0xa2b1('0x3c')+_0x4c0163['join'](',\x20'));if(_0x51eb6c[_0xa2b1('0x3a')][_0xa2b1('0x37')]===_0xa2b1('0x31')&&_0x51eb6c[_0xa2b1('0x3a')][_0xa2b1('0x33')]){_0x51eb6c[_0xa2b1('0x3a')][_0xa2b1('0x33')]=encryptor['encryptString'](_0x51eb6c[_0xa2b1('0x3a')][_0xa2b1('0x33')]);}return db[_0xa2b1('0x2d')][_0xa2b1('0x3d')](_0x51eb6c[_0xa2b1('0x3a')],{})[_0xa2b1('0x13')](respondWithResult(_0x3ce386,0xc9))['catch'](handleError(_0x3ce386,null));};exports[_0xa2b1('0x3e')]=function(_0x368e3d,_0x513050){if(_0x368e3d[_0xa2b1('0x3a')]['id']){delete _0x368e3d[_0xa2b1('0x3a')]['id'];}return db[_0xa2b1('0x2d')]['find']({'where':{'id':_0x368e3d[_0xa2b1('0x3f')]['id']}})[_0xa2b1('0x13')](handleEntityNotFound(_0x513050,null))[_0xa2b1('0x13')](function(_0x42fe71){if(_0x42fe71[_0xa2b1('0x37')]==='MicrosoftAzure'&&_0x368e3d[_0xa2b1('0x3a')][_0xa2b1('0x33')]){_0x368e3d['body'][_0xa2b1('0x33')]=encryptor[_0xa2b1('0x40')](_0x368e3d[_0xa2b1('0x3a')][_0xa2b1('0x33')]);}return _0x42fe71;})[_0xa2b1('0x13')](saveUpdates(_0x368e3d[_0xa2b1('0x3a')],null))['then'](respondWithResult(_0x513050,null))['catch'](handleError(_0x513050,null));};exports[_0xa2b1('0x14')]=function(_0x4a2379,_0x555b21){return db['CloudProvider'][_0xa2b1('0x36')]({'where':{'id':_0x4a2379['params']['id']}})[_0xa2b1('0x13')](handleEntityNotFound(_0x555b21,null))[_0xa2b1('0x13')](removeEntity(_0x555b21,null))[_0xa2b1('0x38')](handleError(_0x555b21,null));};exports[_0xa2b1('0x41')]=function(_0x354ee7,_0x13fa7b){return db[_0xa2b1('0x2d')]['findOne']({'where':{'id':_0x354ee7[_0xa2b1('0x3f')]['id']},'raw':!![]})[_0xa2b1('0x13')](function(_0x1d8075){if(!_0x1d8075)return _0x13fa7b[_0xa2b1('0xa')](0x194);return{'url':oauth[_0xa2b1('0x42')](_0x1d8075,_0x354ee7[_0xa2b1('0x43')]['id'])};})[_0xa2b1('0x13')](respondWithResult(_0x13fa7b,null))[_0xa2b1('0x38')](handleError(_0x13fa7b,null));};exports[_0xa2b1('0x44')]=function(_0x1d44a2,_0x263f16){var _0x2963fe=_0x1d44a2[_0xa2b1('0x3a')];var _0x4c6061;var _0x28a059;if(_0x2963fe[_0xa2b1('0x45')])throw _0x2963fe;redis[_0xa2b1('0x46')](_0x2963fe[_0xa2b1('0x47')])['then'](function(_0x50c0e8){if(!_0x50c0e8)throw new Error(_0xa2b1('0x48'));_0x4c6061=JSON[_0xa2b1('0x49')](_0x50c0e8);var _0x209cc=Buffer[_0xa2b1('0x4a')](_0x2963fe[_0xa2b1('0x47')],_0xa2b1('0x4b'))[_0xa2b1('0x4c')](_0xa2b1('0x4d'));_0x28a059=JSON[_0xa2b1('0x49')](_0x209cc);if(!oauth[_0xa2b1('0x4e')](_0x2963fe[_0xa2b1('0x4f')],_0x4c6061[_0xa2b1('0x50')]))throw new Error(_0xa2b1('0x51'));redis[_0xa2b1('0x52')](_0x2963fe[_0xa2b1('0x47')]);return oauth[_0xa2b1('0x53')](_0x2963fe[_0xa2b1('0x54')],_0x4c6061);})['then'](function(_0x414583){_0x4c6061[_0xa2b1('0x55')]=_0x414583[_0xa2b1('0x56')];_0x4c6061[_0xa2b1('0x57')]=_0x414583[_0xa2b1('0x58')];return db[_0xa2b1('0x2d')]['update']({'data5':_0x4c6061[_0xa2b1('0x55')],'data6':_0x4c6061[_0xa2b1('0x57')]},{'where':{'id':_0x4c6061['id']}});})[_0xa2b1('0x13')](function(){oauth['startRefreshInterval'](_0x4c6061);socket[_0xa2b1('0x59')](_0xa2b1('0x5a'),{'id':_0x28a059['id']});return;})[_0xa2b1('0x13')](respondWithStatusCode(_0x263f16,null))[_0xa2b1('0x38')](function(_0x50c18c){if(_0x28a059){socket[_0xa2b1('0x59')](_0xa2b1('0x5b'),{'id':_0x28a059['id']});}if(!_0x4c6061){logger[_0xa2b1('0x45')]('Invalid\x20authentication\x20state\x20parameter',_0x50c18c);return _0x263f16['status'](0x1f4)['send'](_0x50c18c[_0xa2b1('0x5c')]);}logger[_0xa2b1('0x45')](_0xa2b1('0x5d'),_0x4c6061['id'],JSON['stringify'](_0x50c18c));});};
\ No newline at end of file
index fc5892a..740d69a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0xd430=['../../config/logger','bluebird','request-promise','path','rimraf','../../config/environment','./cloudProvider.attributes','exports','define','CloudProvider','cloud_providers'];(function(_0x3abac4,_0x418685){var _0x2d97d7=function(_0x5c9a34){while(--_0x5c9a34){_0x3abac4['push'](_0x3abac4['shift']());}};_0x2d97d7(++_0x418685);}(_0xd430,0x1a2));var _0x0d43=function(_0x30ae5e,_0x391fc4){_0x30ae5e=_0x30ae5e-0x0;var _0x1f2e93=_0xd430[_0x30ae5e];return _0x1f2e93;};'use strict';var _=require('lodash');var util=require('util');var logger=require(_0x0d43('0x0'))('api');var moment=require('moment');var BPromise=require(_0x0d43('0x1'));var rp=require(_0x0d43('0x2'));var fs=require('fs');var path=require(_0x0d43('0x3'));var rimraf=require(_0x0d43('0x4'));var config=require(_0x0d43('0x5'));var attributes=require(_0x0d43('0x6'));module[_0x0d43('0x7')]=function(_0x22ada7,_0x5afa7f){return _0x22ada7[_0x0d43('0x8')](_0x0d43('0x9'),attributes,{'tableName':_0x0d43('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 50fd7b3..3149ecb 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0x2dbf=['catch','error','Failed\x20to\x20refresh\x20access\x20token\x20for\x20cloud\x20provider\x20#%s,\x20-\x20err:%s','intervals','bind','all','inspect','[CLOUD_PROVIDER]\x20Error\x20while\x20refreshing\x20the\x20tokens\x20after\x20service\x20restart\x20error:%s','crypto','moment','util','../../components/encryptor','../../config/environment','../../config/logger','api','../../config/schedule/cloud-provider','../../mysqldb','redis','defaults','localhost','openid','profile','email','offline_access','https://outlook.office.com/SMTP.Send','/authorize','/token','map','type','Dynamics365','push','/.default','join','https://outlook.office365.com/IMAP.AccessAsUser.All','data7','replace','{TENANT_ID}','code','id_token','from','stringify','randomBytes','toString','response_type','form_post','scope','state','nonce','prompt','login','key','value','oauth2Claims','oauth2/','data1','set','decode','payload','iss','aud','audience','isAfter','unix','exp','resolve','then','data3','CloudProvider','findOne','refresh_token','data6','data4','decryptString','POST','data2','access_token','update'];(function(_0x8a0660,_0x3a9308){var _0x3b568f=function(_0x144390){while(--_0x144390){_0x8a0660['push'](_0x8a0660['shift']());}};_0x3b568f(++_0x3a9308);}(_0x2dbf,0x13c));var _0xf2db=function(_0x421196,_0x1cbd94){_0x421196=_0x421196-0x0;var _0x2738af=_0x2dbf[_0x421196];return _0x2738af;};'use strict';var _=require('lodash');var crypto=require(_0xf2db('0x0'));var jwt=require('jsonwebtoken');var moment=require(_0xf2db('0x1'));var Redis=require('ioredis');var rp=require('request-promise');var util=require(_0xf2db('0x2'));var encryptor=require(_0xf2db('0x3'));var config=require(_0xf2db('0x4'));var logger=require(_0xf2db('0x5'))(_0xf2db('0x6'));var schedule=require(_0xf2db('0x7'));var db=require(_0xf2db('0x8'))['db'];config[_0xf2db('0x9')]=_[_0xf2db('0xa')](config[_0xf2db('0x9')],{'host':_0xf2db('0xb'),'port':0x18eb});var redis=new Redis(config[_0xf2db('0x9')]);var MICROSOFT_AUTH_URL='https://login.microsoftonline.com/{TENANT_ID}/oauth2/v2.0';var AZURE_AUTH_SCOPES={'Outlook365':[_0xf2db('0xc'),_0xf2db('0xd'),_0xf2db('0xe'),_0xf2db('0xf'),'https://outlook.office365.com/IMAP.AccessAsUser.All','https://outlook.office.com/POP.AccessAsUser.All',_0xf2db('0x10')],'Dynamics365':[_0xf2db('0xc'),'offline_access']};var MICROSOFT_AUTH_ENDPOINT=_0xf2db('0x11');var MICROSOFT_TOKEN_ENDPOINT=_0xf2db('0x12');var OAUTH_REFRESH_INTERVAL=0xfa;function getAuthorizationScopes(_0x344f93){var _0x1e6ade=_[_0xf2db('0x13')](AZURE_AUTH_SCOPES[_0x344f93[_0xf2db('0x14')]]);if(_0x344f93[_0xf2db('0x14')]===_0xf2db('0x15'))_0x1e6ade[_0xf2db('0x16')](_0x344f93['data7']+_0xf2db('0x17'));return _0x1e6ade[_0xf2db('0x18')]('\x20');}function getAccessTokenScope(_0x6a2b45){if(_0x6a2b45['type']==='Outlook365')return _0xf2db('0x19');if(_0x6a2b45[_0xf2db('0x14')]===_0xf2db('0x15'))return _0x6a2b45[_0xf2db('0x1a')]+_0xf2db('0x17');}function generateMicrosoftAuthorizationUrl(_0x9baff5,_0x50a2c3){var _0x63d8a4=MICROSOFT_AUTH_URL[_0xf2db('0x1b')](_0xf2db('0x1c'),_0x9baff5['data2']);var _0x3c401b=[_0xf2db('0x1d'),_0xf2db('0x1e')];var _0x320ae8=Buffer[_0xf2db('0x1f')](JSON[_0xf2db('0x20')]({'id':_0x50a2c3}))['toString']('base64');var _0x346cef=crypto[_0xf2db('0x21')](0x10)[_0xf2db('0x22')]('hex');var _0x3eb2cd=getAuthorizationScopes(_0x9baff5);var _0x1411a8=[{'key':'client_id','value':_0x9baff5['data1']},{'key':_0xf2db('0x23'),'value':encodeURIComponent(_0x3c401b['join']('\x20'))},{'key':'redirect_uri','value':_0x9baff5['data4']},{'key':'response_mode','value':_0xf2db('0x24')},{'key':_0xf2db('0x25'),'value':encodeURIComponent(_0x3eb2cd)},{'key':_0xf2db('0x26'),'value':_0x320ae8},{'key':_0xf2db('0x27'),'value':_0x346cef},{'key':_0xf2db('0x28'),'value':_0xf2db('0x29')}];var _0x3907c4=_0x63d8a4+MICROSOFT_AUTH_ENDPOINT+'?'+_['map'](_0x1411a8,function(_0x407a5a){return _0x407a5a[_0xf2db('0x2a')]+'='+_0x407a5a[_0xf2db('0x2b')];})[_0xf2db('0x18')]('&');_0x9baff5[_0xf2db('0x2c')]={'issuer':_0x63d8a4['replace'](_0xf2db('0x2d'),''),'audience':_0x9baff5[_0xf2db('0x2e')],'state':_0x320ae8,'nonce':_0x346cef};redis[_0xf2db('0x2f')](_0x320ae8,JSON['stringify'](_0x9baff5));return _0x3907c4;}function isValidIdToken(_0x1de872,_0x46775e){try{var _0x2a25b7=jwt[_0xf2db('0x30')](_0x1de872,{'complete':!![]});var _0x3b5688=_0x2a25b7[_0xf2db('0x31')];if(_0x3b5688[_0xf2db('0x32')]!==_0x46775e['issuer'])return![];if(_0x3b5688[_0xf2db('0x33')]!==_0x46775e[_0xf2db('0x34')])return![];if(_0x3b5688['nonce']!==_0x46775e[_0xf2db('0x27')])return![];if(moment()[_0xf2db('0x35')](moment[_0xf2db('0x36')](_0x3b5688[_0xf2db('0x37')])))return![];return!![];}catch(_0x140318){throw _0x140318;}}function refreshOauth2MicrosoftAccessToken(_0x54dfcc){return Promise[_0xf2db('0x38')]()[_0xf2db('0x39')](function(){if(_0x54dfcc[_0xf2db('0x3a')])return _0x54dfcc;return db[_0xf2db('0x3b')][_0xf2db('0x3c')]({'where':{'id':_0x54dfcc['id']},'raw':!![]});})[_0xf2db('0x39')](function(_0x1386a8){var _0x3a200c={'grant_type':_0xf2db('0x3d'),'refresh_token':_0x1386a8[_0xf2db('0x3e')],'scope':getAccessTokenScope(_0x1386a8),'redirect_uri':_0x1386a8[_0xf2db('0x3f')],'client_id':_0x1386a8[_0xf2db('0x2e')],'client_secret':encryptor[_0xf2db('0x40')](_0x1386a8['data3'])};var _0xc61f09={'method':_0xf2db('0x41'),'uri':MICROSOFT_AUTH_URL[_0xf2db('0x1b')](_0xf2db('0x1c'),_0x1386a8[_0xf2db('0x42')])+MICROSOFT_TOKEN_ENDPOINT,'form':_0x3a200c,'json':!![]};return rp(_0xc61f09);})[_0xf2db('0x39')](function(_0xa0bbbc){_0x54dfcc['data5']=_0xa0bbbc[_0xf2db('0x43')];_0x54dfcc[_0xf2db('0x3e')]=_0xa0bbbc[_0xf2db('0x3d')];return db[_0xf2db('0x3b')][_0xf2db('0x44')]({'data5':_0x54dfcc['data5'],'data6':_0x54dfcc[_0xf2db('0x3e')]},{'where':{'id':_0x54dfcc['id']}});})[_0xf2db('0x39')](function(){return _0x54dfcc;})[_0xf2db('0x45')](function(_0x258b00){logger[_0xf2db('0x46')](_0xf2db('0x47'),_0x54dfcc['id'],_0x258b00);});}function getOauth2MicrosoftAccessToken(_0x47058e,_0x212ef){var _0x262c7c={'grant_type':'authorization_code','code':_0x47058e,'scope':getAccessTokenScope(_0x212ef),'redirect_uri':_0x212ef[_0xf2db('0x3f')],'client_id':_0x212ef[_0xf2db('0x2e')],'client_secret':encryptor['decryptString'](_0x212ef[_0xf2db('0x3a')])};var _0xa110f9={'method':_0xf2db('0x41'),'uri':MICROSOFT_AUTH_URL['replace'](_0xf2db('0x1c'),_0x212ef[_0xf2db('0x42')])+MICROSOFT_TOKEN_ENDPOINT,'form':_0x262c7c,'json':!![]};return rp(_0xa110f9);}function startRefreshInterval(_0x20365d){var _0x39dcb4=schedule[_0xf2db('0x48')];if(_0x39dcb4[_0x20365d['id']])clearInterval(_0x39dcb4[_0x20365d['id']]);_0x39dcb4[_0x20365d['id']]=setInterval(refreshOauth2MicrosoftAccessToken[_0xf2db('0x49')](this,{'id':_0x20365d['id']}),OAUTH_REFRESH_INTERVAL*0x3e8);schedule['intervals']=_0x39dcb4;}function startAllRefreshIntervals(){return db[_0xf2db('0x3b')]['findAll']({'where':{'data6':{'$ne':null}},'raw':!![]})[_0xf2db('0x39')](function(_0x168a85){var _0x5b2232=_0x168a85['map'](function(_0x2f2869){return refreshOauth2MicrosoftAccessToken(_0x2f2869)[_0xf2db('0x39')](function(_0x437041){startRefreshInterval(_0x437041);});});return Promise[_0xf2db('0x4a')](_0x5b2232);})[_0xf2db('0x45')](function(_0x44f5de){var _0x25b78e=_0x44f5de?util[_0xf2db('0x4b')](_0x44f5de,{'showHidden':![],'depth':null}):'';logger[_0xf2db('0x46')](_0xf2db('0x4c'),_0x25b78e);});}module['exports']={'generateMicrosoftAuthorizationUrl':generateMicrosoftAuthorizationUrl,'getOauth2MicrosoftAccessToken':getOauth2MicrosoftAccessToken,'isValidIdToken':isValidIdToken,'startAllRefreshIntervals':startAllRefreshIntervals,'refreshOauth2MicrosoftAccessToken':refreshOauth2MicrosoftAccessToken,'startRefreshInterval':startRefreshInterval};
\ No newline at end of file
index 919c7ac..e608ba1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0x253d=['rpc','jayson/promise','client','http','request','then','info','debug','request\x20sent','stringify','error','code','message','result','CloudProvider,\x20%s,\x20%s','lodash','ioredis','../../mysqldb','../../config/utils','../../config/logger'];(function(_0x2aa0e7,_0x4e5145){var _0x1472c0=function(_0x4deaeb){while(--_0x4deaeb){_0x2aa0e7['push'](_0x2aa0e7['shift']());}};_0x1472c0(++_0x4e5145);}(_0x253d,0x1b3));var _0xd253=function(_0x292075,_0x1438bc){_0x292075=_0x292075-0x0;var _0x3a8791=_0x253d[_0x292075];return _0x3a8791;};'use strict';var _=require(_0xd253('0x0'));var util=require('util');var moment=require('moment');var BPromise=require('bluebird');var rs=require('randomstring');var fs=require('fs');var Redis=require(_0xd253('0x1'));var db=require(_0xd253('0x2'))['db'];var utils=require(_0xd253('0x3'));var logger=require(_0xd253('0x4'))(_0xd253('0x5'));var config=require('../../config/environment');var jayson=require(_0xd253('0x6'));var client=jayson[_0xd253('0x7')][_0xd253('0x8')]({'port':0x232a});function respondWithRpcPromise(_0x17589a,_0xf4b457,_0x487f4e){return new BPromise(function(_0x2c4de4,_0x712c81){return client[_0xd253('0x9')](_0x17589a,_0x487f4e)[_0xd253('0xa')](function(_0x351047){logger[_0xd253('0xb')]('CloudProvider,\x20%s,\x20%s',_0xf4b457,'request\x20sent');logger[_0xd253('0xc')]('CloudProvider,\x20%s,\x20%s,\x20%s',_0xf4b457,_0xd253('0xd'),JSON[_0xd253('0xe')](_0x351047));if(_0x351047[_0xd253('0xf')]){if(_0x351047[_0xd253('0xf')][_0xd253('0x10')]===0x1f4){logger[_0xd253('0xf')]('CloudProvider,\x20%s,\x20%s',_0xf4b457,_0x351047['error'][_0xd253('0x11')]);return _0x712c81(_0x351047[_0xd253('0xf')][_0xd253('0x11')]);}logger['error']('CloudProvider,\x20%s,\x20%s',_0xf4b457,_0x351047[_0xd253('0xf')][_0xd253('0x11')]);return _0x2c4de4(_0x351047[_0xd253('0xf')]['message']);}else{logger[_0xd253('0xb')]('CloudProvider,\x20%s,\x20%s',_0xf4b457,_0xd253('0xd'));_0x2c4de4(_0x351047[_0xd253('0x12')][_0xd253('0x11')]);}})['catch'](function(_0x1b7ed1){logger['error'](_0xd253('0x13'),_0xf4b457,_0x1b7ed1);_0x712c81(_0x1b7ed1);});});}
\ No newline at end of file
index 85a057c..42dafe3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7a54=['isAuthenticated','/:id','show','post','create','delete','/:id/oauth2/microsoft/authorize/','oauth2MicrosoftAuthorize','oauth2MicrosoftCallback','exports','express','Router','../../components/auth/service','get'];(function(_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
+var _0x1261=['/:id','show','create','put','update','delete','/:id/oauth2/microsoft/authorize/','post','exports','Router','../../components/auth/service','./cloudProvider.controller','get','isAuthenticated','index'];(function(_0x4f8f3b,_0x43281b){var _0x4c250c=function(_0x19a7ff){while(--_0x19a7ff){_0x4f8f3b['push'](_0x4f8f3b['shift']());}};_0x4c250c(++_0x43281b);}(_0x1261,0x144));var _0x1126=function(_0x33f2fa,_0x1411d5){_0x33f2fa=_0x33f2fa-0x0;var _0xe5b3b3=_0x1261[_0x33f2fa];return _0xe5b3b3;};'use strict';var express=require('express');var router=express[_0x1126('0x0')]();var auth=require(_0x1126('0x1'));var controller=require(_0x1126('0x2'));router[_0x1126('0x3')]('/',auth[_0x1126('0x4')](),controller[_0x1126('0x5')]);router[_0x1126('0x3')](_0x1126('0x6'),auth[_0x1126('0x4')](),controller[_0x1126('0x7')]);router['post']('/',auth['isAuthenticated'](),controller[_0x1126('0x8')]);router[_0x1126('0x9')]('/:id',auth[_0x1126('0x4')](),controller[_0x1126('0xa')]);router[_0x1126('0xb')](_0x1126('0x6'),auth[_0x1126('0x4')](),controller['destroy']);router[_0x1126('0x3')](_0x1126('0xc'),auth[_0x1126('0x4')](),controller['oauth2MicrosoftAuthorize']);router[_0x1126('0xd')]('/oauth2/microsoft/callback',controller['oauth2MicrosoftCallback']);module[_0x1126('0xe')]=router;
\ No newline at end of file
index d4dc62a..133f3b4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0xea70=['STRING','sequelize','exports'];(function(_0x954b3a,_0x10a7c1){var _0x3a313e=function(_0x1070ad){while(--_0x1070ad){_0x954b3a['push'](_0x954b3a['shift']());}};_0x3a313e(++_0x10a7c1);}(_0xea70,0x175));var _0x0ea7=function(_0x17d9e3,_0x1f969c){_0x17d9e3=_0x17d9e3-0x0;var _0x14192d=_0xea70[_0x17d9e3];return _0x14192d;};'use strict';var Sequelize=require(_0x0ea7('0x0'));module[_0x0ea7('0x1')]={'name':{'type':Sequelize[_0x0ea7('0x2')],'unique':'name','allowNull':![],'validate':{'notEmpty':!![]}},'vat':{'type':Sequelize[_0x0ea7('0x2')]},'companyId':{'type':Sequelize['STRING']},'website':{'type':Sequelize[_0x0ea7('0x2')]},'phone':{'type':Sequelize['STRING']},'fax':{'type':Sequelize[_0x0ea7('0x2')]},'type':{'type':Sequelize[_0x0ea7('0x2')]},'street':{'type':Sequelize[_0x0ea7('0x2')]},'postalCode':{'type':Sequelize[_0x0ea7('0x2')]},'city':{'type':Sequelize[_0x0ea7('0x2')]},'country':{'type':Sequelize['STRING']},'email':{'type':Sequelize[_0x0ea7('0x2')],'validate':{'isEmail':!![]}},'emailDomain':{'type':Sequelize[_0x0ea7('0x2')]},'sStreet':{'type':Sequelize['STRING']},'sPostalCode':{'type':Sequelize[_0x0ea7('0x2')]},'sCity':{'type':Sequelize[_0x0ea7('0x2')]},'sCountry':{'type':Sequelize['STRING']},'description':{'type':Sequelize[_0x0ea7('0x2')]}};
\ No newline at end of file
index 8e3c074..ff2e66c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0xd880=['get','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','user','find','userProfileId','autoAssociation','create','error','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','addContacts','CmContact','omit','ids','getContacts','findOne','sort','merge','map','hasOwnProperty','eml-format','request-promise','moment','bluebird','mustache','path','ejs','lodash','squel','jsforce','desk.js','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','json','offset','limit','undefined','count','set','Content-Range','reject','save','update','then','destroy','Companies','UserProfileResource','name','index','describe','model','query','keys','filters','intersection','attributes','fields','length','nolimit','order','where','pick','filter','includeAll','include','CmCompany','findAll','rows','catch','show','params','rawAttributes','options','body'];(function(_0x33506a,_0x2cb243){var _0x5d72a6=function(_0x5ca214){while(--_0x5ca214){_0x33506a['push'](_0x33506a['shift']());}};_0x5d72a6(++_0x2cb243);}(_0xd880,0x69));var _0x0d88=function(_0x5021ac,_0x342a82){_0x5021ac=_0x5021ac-0x0;var _0x56cbf9=_0xd880[_0x5021ac];return _0x56cbf9;};'use strict';var emlformat=require(_0x0d88('0x0'));var rimraf=require('rimraf');var zipdir=require('zip-dir');var jsonpatch=require('fast-json-patch');var rp=require(_0x0d88('0x1'));var moment=require(_0x0d88('0x2'));var BPromise=require(_0x0d88('0x3'));var Mustache=require(_0x0d88('0x4'));var util=require('util');var path=require(_0x0d88('0x5'));var sox=require('sox');var csv=require('to-csv');var ejs=require(_0x0d88('0x6'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x0d88('0x7'));var squel=require(_0x0d88('0x8'));var crypto=require('crypto');var jsforce=require(_0x0d88('0x9'));var deskjs=require(_0x0d88('0xa'));var toCsv=require('to-csv');var querystring=require('querystring');var Papa=require('papaparse');var Redis=require(_0x0d88('0xb'));var authService=require(_0x0d88('0xc'));var qs=require('../../components/parsers/qs');var as=require(_0x0d88('0xd'));var hardwareService=require(_0x0d88('0xe'));var logger=require(_0x0d88('0xf'))(_0x0d88('0x10'));var utils=require(_0x0d88('0x11'));var config=require(_0x0d88('0x12'));var licenseUtil=require(_0x0d88('0x13'));var db=require(_0x0d88('0x14'))['db'];function respondWithStatusCode(_0x2e9f13,_0x177fab){_0x177fab=_0x177fab||0xcc;return function(_0x4ca37a){if(_0x4ca37a){return _0x2e9f13[_0x0d88('0x15')](_0x177fab);}return _0x2e9f13[_0x0d88('0x16')](_0x177fab)[_0x0d88('0x17')]();};}function respondWithResult(_0x43af5a,_0x706219){_0x706219=_0x706219||0xc8;return function(_0x5a7133){if(_0x5a7133){return _0x43af5a[_0x0d88('0x16')](_0x706219)[_0x0d88('0x18')](_0x5a7133);}};}function respondWithFilteredResult(_0x11296c,_0x1f0a36){return function(_0x140503){if(_0x140503){var _0x56257f=typeof _0x1f0a36[_0x0d88('0x19')]==='undefined'&&typeof _0x1f0a36[_0x0d88('0x1a')]===_0x0d88('0x1b');var _0x2637ac=_0x140503[_0x0d88('0x1c')];var _0xa10888=_0x56257f?0x0:_0x1f0a36[_0x0d88('0x19')];var _0x531cbc=_0x56257f?_0x140503['count']:_0x1f0a36['offset']+_0x1f0a36[_0x0d88('0x1a')];var _0x9bb2a5;if(_0x531cbc>=_0x2637ac){_0x531cbc=_0x2637ac;_0x9bb2a5=0xc8;}else{_0x9bb2a5=0xce;}_0x11296c[_0x0d88('0x16')](_0x9bb2a5);return _0x11296c[_0x0d88('0x1d')](_0x0d88('0x1e'),_0xa10888+'-'+_0x531cbc+'/'+_0x2637ac)[_0x0d88('0x18')](_0x140503);}return null;};}function patchUpdates(_0x5abb25){return function(_0x1b9e01){try{jsonpatch['apply'](_0x1b9e01,_0x5abb25,!![]);}catch(_0x1c2e7d){return BPromise[_0x0d88('0x1f')](_0x1c2e7d);}return _0x1b9e01[_0x0d88('0x20')]();};}function saveUpdates(_0x5cd732,_0x2491f6){return function(_0x151214){if(_0x151214){return _0x151214[_0x0d88('0x21')](_0x5cd732)[_0x0d88('0x22')](function(_0x34be58){return _0x34be58;});}return null;};}function removeEntity(_0x40a902,_0x1f9b47){return function(_0x39530b){if(_0x39530b){return _0x39530b[_0x0d88('0x23')]()['then'](function(){var _0x2746ab=_0x39530b['get']({'plain':!![]});var _0x1d30fb=_0x0d88('0x24');return db[_0x0d88('0x25')][_0x0d88('0x23')]({'where':{'type':_0x1d30fb,'resourceId':_0x2746ab['id']}})[_0x0d88('0x22')](function(){return _0x39530b;});})[_0x0d88('0x22')](function(){_0x40a902[_0x0d88('0x16')](0xcc)[_0x0d88('0x17')]();});}};}function handleEntityNotFound(_0x152c04,_0x49a741){return function(_0x4c4913){if(!_0x4c4913){_0x152c04[_0x0d88('0x15')](0x194);}return _0x4c4913;};}function handleError(_0x34110f,_0x2b0da2){_0x2b0da2=_0x2b0da2||0x1f4;return function(_0x519317){logger['error'](_0x519317['stack']);if(_0x519317[_0x0d88('0x26')]){delete _0x519317[_0x0d88('0x26')];}_0x34110f['status'](_0x2b0da2)['send'](_0x519317);};}exports[_0x0d88('0x27')]=function(_0x543be4,_0x2b101d){var _0x50352f={},_0x5bebae={},_0xb1afd9={'count':0x0,'rows':[]};return db['CmCompany'][_0x0d88('0x28')]()[_0x0d88('0x22')](function(_0x592393){_0x5bebae[_0x0d88('0x29')]=_['keys'](_0x592393);_0x5bebae[_0x0d88('0x2a')]=_[_0x0d88('0x2b')](_0x543be4[_0x0d88('0x2a')]);_0x5bebae[_0x0d88('0x2c')]=_[_0x0d88('0x2d')](_0x5bebae[_0x0d88('0x29')],_0x5bebae[_0x0d88('0x2a')]);_0x50352f[_0x0d88('0x2e')]=_['intersection'](_0x5bebae[_0x0d88('0x29')],qs['fields'](_0x543be4[_0x0d88('0x2a')][_0x0d88('0x2f')]));_0x50352f[_0x0d88('0x2e')]=_0x50352f[_0x0d88('0x2e')][_0x0d88('0x30')]?_0x50352f['attributes']:_0x5bebae[_0x0d88('0x29')];if(!_0x543be4['query']['hasOwnProperty'](_0x0d88('0x31'))){_0x50352f[_0x0d88('0x1a')]=qs['limit'](_0x543be4[_0x0d88('0x2a')][_0x0d88('0x1a')]);_0x50352f[_0x0d88('0x19')]=qs[_0x0d88('0x19')](_0x543be4[_0x0d88('0x2a')][_0x0d88('0x19')]);}_0x50352f[_0x0d88('0x32')]=qs['sort'](_0x543be4[_0x0d88('0x2a')]['sort']);_0x50352f[_0x0d88('0x33')]=qs[_0x0d88('0x2c')](_[_0x0d88('0x34')](_0x543be4[_0x0d88('0x2a')],_0x5bebae[_0x0d88('0x2c')]),_0x592393);if(_0x543be4[_0x0d88('0x2a')][_0x0d88('0x35')]){_0x50352f[_0x0d88('0x33')]=_['merge'](_0x50352f[_0x0d88('0x33')],{'$or':_['map'](_0x50352f['attributes'],function(_0x2e6229){var _0x2f0d49={};_0x2f0d49[_0x2e6229]={'$like':'%'+_0x543be4[_0x0d88('0x2a')][_0x0d88('0x35')]+'%'};return _0x2f0d49;})});}_0x50352f=_['merge']({},_0x50352f,_0x543be4['options']);var _0x28da28={'where':_0x50352f[_0x0d88('0x33')]};return db['CmCompany']['count'](_0x28da28)[_0x0d88('0x22')](function(_0x273fb1){_0xb1afd9[_0x0d88('0x1c')]=_0x273fb1;if(_0x543be4[_0x0d88('0x2a')][_0x0d88('0x36')]){_0x50352f[_0x0d88('0x37')]=[{'all':!![]}];}return db[_0x0d88('0x38')][_0x0d88('0x39')](_0x50352f);})['then'](function(_0x422c93){_0xb1afd9[_0x0d88('0x3a')]=_0x422c93;return _0xb1afd9;})['then'](respondWithFilteredResult(_0x2b101d,_0x50352f))['catch'](handleError(_0x2b101d,null));})[_0x0d88('0x3b')](handleError(_0x2b101d,null));};exports[_0x0d88('0x3c')]=function(_0x4614f9,_0x3e1b0e){var _0x4ac1eb={'raw':![],'where':{'id':_0x4614f9[_0x0d88('0x3d')]['id']}},_0x4e370f={};_0x4e370f['model']=_[_0x0d88('0x2b')](db[_0x0d88('0x38')][_0x0d88('0x3e')]);_0x4e370f[_0x0d88('0x2a')]=_[_0x0d88('0x2b')](_0x4614f9[_0x0d88('0x2a')]);_0x4e370f['filters']=_[_0x0d88('0x2d')](_0x4e370f[_0x0d88('0x29')],_0x4e370f[_0x0d88('0x2a')]);_0x4ac1eb[_0x0d88('0x2e')]=_['intersection'](_0x4e370f[_0x0d88('0x29')],qs['fields'](_0x4614f9[_0x0d88('0x2a')][_0x0d88('0x2f')]));_0x4ac1eb[_0x0d88('0x2e')]=_0x4ac1eb['attributes'][_0x0d88('0x30')]?_0x4ac1eb[_0x0d88('0x2e')]:_0x4e370f[_0x0d88('0x29')];if(_0x4614f9[_0x0d88('0x2a')]['includeAll']){_0x4ac1eb[_0x0d88('0x37')]=[{'all':!![]}];}_0x4ac1eb=_['merge']({},_0x4ac1eb,_0x4614f9[_0x0d88('0x3f')]);return db[_0x0d88('0x38')]['find'](_0x4ac1eb)[_0x0d88('0x22')](handleEntityNotFound(_0x3e1b0e,null))['then'](respondWithResult(_0x3e1b0e,null))['catch'](handleError(_0x3e1b0e,null));};exports['create']=function(_0x5b4436,_0x11b121){return db[_0x0d88('0x38')]['create'](_0x5b4436[_0x0d88('0x40')],{})['then'](function(_0x468bbb){var _0x5272a4=_0x5b4436['user'][_0x0d88('0x41')]({'plain':!![]});if(!_0x5272a4)throw new Error(_0x0d88('0x42'));if(_0x5272a4[_0x0d88('0x43')]===_0x0d88('0x44')){var _0x3f1765=_0x468bbb['get']({'plain':!![]});var _0x3d5d8d=_0x0d88('0x24');return db['UserProfileSection'][_0x0d88('0x45')]({'where':{'name':_0x3d5d8d,'userProfileId':_0x5272a4[_0x0d88('0x46')]},'raw':!![]})[_0x0d88('0x22')](function(_0x309478){if(_0x309478&&_0x309478[_0x0d88('0x47')]===0x0){return db[_0x0d88('0x25')][_0x0d88('0x48')]({'name':_0x3f1765[_0x0d88('0x26')],'resourceId':_0x3f1765['id'],'type':_0x309478[_0x0d88('0x26')],'sectionId':_0x309478['id']},{})[_0x0d88('0x22')](function(){return _0x468bbb;});}else{return _0x468bbb;}})[_0x0d88('0x3b')](function(_0x3ecc7e){logger[_0x0d88('0x49')](_0x0d88('0x4a'),_0x3ecc7e);throw _0x3ecc7e;});}return _0x468bbb;})[_0x0d88('0x22')](respondWithResult(_0x11b121,0xc9))[_0x0d88('0x3b')](handleError(_0x11b121,null));};exports[_0x0d88('0x21')]=function(_0x7d07,_0x50aab4){if(_0x7d07['body']['id']){delete _0x7d07[_0x0d88('0x40')]['id'];}return db['CmCompany'][_0x0d88('0x45')]({'where':{'id':_0x7d07['params']['id']}})[_0x0d88('0x22')](handleEntityNotFound(_0x50aab4,null))[_0x0d88('0x22')](saveUpdates(_0x7d07[_0x0d88('0x40')],null))[_0x0d88('0x22')](respondWithResult(_0x50aab4,null))[_0x0d88('0x3b')](handleError(_0x50aab4,null));};exports[_0x0d88('0x23')]=function(_0xde5fd5,_0x11de27){return db[_0x0d88('0x38')][_0x0d88('0x45')]({'where':{'id':_0xde5fd5[_0x0d88('0x3d')]['id']}})['then'](handleEntityNotFound(_0x11de27,null))[_0x0d88('0x22')](removeEntity(_0x11de27,null))[_0x0d88('0x3b')](handleError(_0x11de27,null));};exports[_0x0d88('0x28')]=function(_0x27b920,_0x163491){return db[_0x0d88('0x38')][_0x0d88('0x28')]()[_0x0d88('0x22')](respondWithResult(_0x163491,null))['catch'](handleError(_0x163491,null));};exports[_0x0d88('0x4b')]=function(_0x3e441a,_0x42e486,_0x59284d){return db[_0x0d88('0x4c')][_0x0d88('0x45')]({'where':{'id':_0x3e441a[_0x0d88('0x3d')]['id']}})[_0x0d88('0x22')](handleEntityNotFound(_0x42e486,null))[_0x0d88('0x22')](function(_0x147965){if(_0x147965){return _0x147965['addContacts'](_0x3e441a['body']['ids'],_[_0x0d88('0x4d')](_0x3e441a[_0x0d88('0x40')],[_0x0d88('0x4e'),'id'])||{});}})[_0x0d88('0x22')](respondWithResult(_0x42e486,null))[_0x0d88('0x3b')](handleError(_0x42e486,null));};exports[_0x0d88('0x4f')]=function(_0x61fe43,_0x3e4763,_0x131756){var _0x22fa07={};var _0x39d4b8={};var _0x2bd55e;var _0x20ef3f;return db[_0x0d88('0x38')][_0x0d88('0x50')]({'where':{'id':_0x61fe43[_0x0d88('0x3d')]['id']}})['then'](handleEntityNotFound(_0x3e4763,null))[_0x0d88('0x22')](function(_0x5e8f8e){if(_0x5e8f8e){_0x2bd55e=_0x5e8f8e;_0x39d4b8[_0x0d88('0x29')]=_[_0x0d88('0x2b')](db[_0x0d88('0x4c')][_0x0d88('0x3e')]);_0x39d4b8[_0x0d88('0x2a')]=_[_0x0d88('0x2b')](_0x61fe43[_0x0d88('0x2a')]);_0x39d4b8[_0x0d88('0x2c')]=_[_0x0d88('0x2d')](_0x39d4b8[_0x0d88('0x29')],_0x39d4b8[_0x0d88('0x2a')]);_0x22fa07[_0x0d88('0x2e')]=_['intersection'](_0x39d4b8[_0x0d88('0x29')],qs[_0x0d88('0x2f')](_0x61fe43[_0x0d88('0x2a')][_0x0d88('0x2f')]));_0x22fa07[_0x0d88('0x2e')]=_0x22fa07[_0x0d88('0x2e')][_0x0d88('0x30')]?_0x22fa07['attributes']:_0x39d4b8[_0x0d88('0x29')];_0x22fa07[_0x0d88('0x32')]=qs[_0x0d88('0x51')](_0x61fe43[_0x0d88('0x2a')][_0x0d88('0x51')]);_0x22fa07[_0x0d88('0x33')]=qs[_0x0d88('0x2c')](_[_0x0d88('0x34')](_0x61fe43[_0x0d88('0x2a')],_0x39d4b8[_0x0d88('0x2c')]));if(_0x61fe43[_0x0d88('0x2a')]['filter']){_0x22fa07[_0x0d88('0x33')]=_[_0x0d88('0x52')](_0x22fa07[_0x0d88('0x33')],{'$or':_[_0x0d88('0x53')](_0x22fa07['attributes'],function(_0x48af76){var _0x3f686={};_0x3f686[_0x48af76]={'$like':'%'+_0x61fe43[_0x0d88('0x2a')][_0x0d88('0x35')]+'%'};return _0x3f686;})});}_0x22fa07=_[_0x0d88('0x52')]({},_0x22fa07,_0x61fe43[_0x0d88('0x3f')]);return _0x2bd55e['getContacts'](_0x22fa07);}})[_0x0d88('0x22')](function(_0x18627b){if(_0x18627b){_0x20ef3f=_0x18627b[_0x0d88('0x30')];if(!_0x61fe43[_0x0d88('0x2a')][_0x0d88('0x54')](_0x0d88('0x31'))){_0x22fa07[_0x0d88('0x1a')]=qs['limit'](_0x61fe43[_0x0d88('0x2a')]['limit']);_0x22fa07[_0x0d88('0x19')]=qs[_0x0d88('0x19')](_0x61fe43[_0x0d88('0x2a')][_0x0d88('0x19')]);}return _0x2bd55e[_0x0d88('0x4f')](_0x22fa07);}})['then'](function(_0x1384b3){if(_0x1384b3){return _0x1384b3?{'count':_0x20ef3f,'rows':_0x1384b3}:null;}})[_0x0d88('0x22')](respondWithResult(_0x3e4763,null))[_0x0d88('0x3b')](handleError(_0x3e4763,null));};
\ No newline at end of file
index 7178af1..d51c7a0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0x4f88=['../../config/environment','./cmCompany.attributes','exports','define','CmCompany','cm_companies','lodash','util','../../config/logger','api','moment','request-promise','rimraf'];(function(_0x26419c,_0x426aa8){var _0x16d322=function(_0xc83b80){while(--_0xc83b80){_0x26419c['push'](_0x26419c['shift']());}};_0x16d322(++_0x426aa8);}(_0x4f88,0x1b3));var _0x84f8=function(_0x30182f,_0x30ce41){_0x30182f=_0x30182f-0x0;var _0x5207db=_0x4f88[_0x30182f];return _0x5207db;};'use strict';var _=require(_0x84f8('0x0'));var util=require(_0x84f8('0x1'));var logger=require(_0x84f8('0x2'))(_0x84f8('0x3'));var moment=require(_0x84f8('0x4'));var BPromise=require('bluebird');var rp=require(_0x84f8('0x5'));var fs=require('fs');var path=require('path');var rimraf=require(_0x84f8('0x6'));var config=require(_0x84f8('0x7'));var attributes=require(_0x84f8('0x8'));module[_0x84f8('0x9')]=function(_0x24f76d,_0x41bc3e){return _0x24f76d[_0x84f8('0xa')](_0x84f8('0xb'),attributes,{'tableName':_0x84f8('0xc'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 6d00d11..e3efe43 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0x66d8=['../../config/logger','rpc','../../config/environment','client','request','then','info','CmCompany,\x20%s,\x20%s','request\x20sent','debug','CmCompany,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb'];(function(_0xa1c576,_0x50952e){var _0x40b3a7=function(_0x4bbea3){while(--_0x4bbea3){_0xa1c576['push'](_0xa1c576['shift']());}};_0x40b3a7(++_0x50952e);}(_0x66d8,0x1c1));var _0x866d=function(_0x2b7389,_0x58311b){_0x2b7389=_0x2b7389-0x0;var _0xe5d9da=_0x66d8[_0x2b7389];return _0xe5d9da;};'use strict';var _=require(_0x866d('0x0'));var util=require(_0x866d('0x1'));var moment=require(_0x866d('0x2'));var BPromise=require(_0x866d('0x3'));var rs=require(_0x866d('0x4'));var fs=require('fs');var Redis=require(_0x866d('0x5'));var db=require(_0x866d('0x6'))['db'];var utils=require('../../config/utils');var logger=require(_0x866d('0x7'))(_0x866d('0x8'));var config=require(_0x866d('0x9'));var jayson=require('jayson/promise');var client=jayson[_0x866d('0xa')]['http']({'port':0x232a});function respondWithRpcPromise(_0x2f3baf,_0x2504c4,_0x245aee){return new BPromise(function(_0x9ceb0f,_0x59b8db){return client[_0x866d('0xb')](_0x2f3baf,_0x245aee)[_0x866d('0xc')](function(_0x3f2e64){logger[_0x866d('0xd')](_0x866d('0xe'),_0x2504c4,_0x866d('0xf'));logger[_0x866d('0x10')](_0x866d('0x11'),_0x2504c4,_0x866d('0xf'),JSON[_0x866d('0x12')](_0x3f2e64));if(_0x3f2e64[_0x866d('0x13')]){if(_0x3f2e64[_0x866d('0x13')][_0x866d('0x14')]===0x1f4){logger[_0x866d('0x13')]('CmCompany,\x20%s,\x20%s',_0x2504c4,_0x3f2e64[_0x866d('0x13')][_0x866d('0x15')]);return _0x59b8db(_0x3f2e64[_0x866d('0x13')][_0x866d('0x15')]);}logger['error'](_0x866d('0xe'),_0x2504c4,_0x3f2e64[_0x866d('0x13')][_0x866d('0x15')]);return _0x9ceb0f(_0x3f2e64['error']['message']);}else{logger[_0x866d('0xd')](_0x866d('0xe'),_0x2504c4,_0x866d('0xf'));_0x9ceb0f(_0x3f2e64[_0x866d('0x16')]['message']);}})[_0x866d('0x17')](function(_0x16e5a0){logger[_0x866d('0x13')](_0x866d('0xe'),_0x2504c4,_0x16e5a0);_0x59b8db(_0x16e5a0);});});}
\ No newline at end of file
index 3c21793..79ab24e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0xc737=['Router','../../components/auth/service','../../components/interaction/service','../../config/environment','isAuthenticated','index','get','/describe','describe','show','/:id/contacts','getContacts','post','create','addContacts','put','update','/:id','exports','multer','util','path','connect-timeout','express'];(function(_0x257a0,_0x42d2b4){var _0x8a44ed=function(_0x51b193){while(--_0x51b193){_0x257a0['push'](_0x257a0['shift']());}};_0x8a44ed(++_0x42d2b4);}(_0xc737,0x8b));var _0x7c73=function(_0x51b28f,_0x20f46c){_0x51b28f=_0x51b28f-0x0;var _0x2c3885=_0xc737[_0x51b28f];return _0x2c3885;};'use strict';var multer=require(_0x7c73('0x0'));var util=require(_0x7c73('0x1'));var path=require(_0x7c73('0x2'));var timeout=require(_0x7c73('0x3'));var express=require(_0x7c73('0x4'));var router=express[_0x7c73('0x5')]();var fs_extra=require('fs-extra');var auth=require(_0x7c73('0x6'));var interaction=require(_0x7c73('0x7'));var config=require(_0x7c73('0x8'));var controller=require('./cmCompany.controller');router['get']('/',auth[_0x7c73('0x9')](),controller[_0x7c73('0xa')]);router[_0x7c73('0xb')](_0x7c73('0xc'),auth[_0x7c73('0x9')](),controller[_0x7c73('0xd')]);router[_0x7c73('0xb')]('/:id',auth[_0x7c73('0x9')](),controller[_0x7c73('0xe')]);router[_0x7c73('0xb')](_0x7c73('0xf'),auth['isAuthenticated'](),controller[_0x7c73('0x10')]);router[_0x7c73('0x11')]('/',auth[_0x7c73('0x9')](),controller[_0x7c73('0x12')]);router[_0x7c73('0x11')](_0x7c73('0xf'),auth[_0x7c73('0x9')](),controller[_0x7c73('0x13')]);router[_0x7c73('0x14')]('/:id',auth[_0x7c73('0x9')](),controller[_0x7c73('0x15')]);router['delete'](_0x7c73('0x16'),auth[_0x7c73('0x9')](),controller['destroy']);module[_0x7c73('0x17')]=router;
\ No newline at end of file
index 655841b..0f97132 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0x4c2d=['INTEGER','UNSIGNED','lodash','sequelize','exports','STRING','TEXT'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x4c2d,0x1bb));var _0xd4c2=function(_0x3b8263,_0x2b9af5){_0x3b8263=_0x3b8263-0x0;var _0x56a8fe=_0x4c2d[_0x3b8263];return _0x56a8fe;};'use strict';var _=require(_0xd4c2('0x0'));var Sequelize=require(_0xd4c2('0x1'));module[_0xd4c2('0x2')]={'firstName':{'type':Sequelize[_0xd4c2('0x3')],'allowNull':![]},'lastName':{'type':Sequelize['STRING']},'street':{'type':Sequelize[_0xd4c2('0x3')]},'postalCode':{'type':Sequelize[_0xd4c2('0x3')]},'city':{'type':Sequelize[_0xd4c2('0x3')]},'country':{'type':Sequelize['STRING']},'dateOfBirth':{'type':Sequelize['STRING']},'description':{'type':Sequelize[_0xd4c2('0x4')]},'phone':{'type':Sequelize[_0xd4c2('0x3')]},'mobile':{'type':Sequelize[_0xd4c2('0x3')]},'fax':{'type':Sequelize[_0xd4c2('0x3')]},'email':{'type':Sequelize[_0xd4c2('0x3')]},'url':{'type':Sequelize[_0xd4c2('0x3')]},'facebook':{'type':Sequelize[_0xd4c2('0x3')]},'fb_data':{'type':Sequelize[_0xd4c2('0x3')]},'twitter':{'type':Sequelize[_0xd4c2('0x3')]},'skype':{'type':Sequelize[_0xd4c2('0x3')]},'teams':{'type':Sequelize['STRING']},'viber':{'type':Sequelize['STRING']},'line':{'type':Sequelize[_0xd4c2('0x3')]},'wechat':{'type':Sequelize['STRING']},'telegram':{'type':Sequelize['STRING']},'UserId':{'type':Sequelize[_0xd4c2('0x5')]},'AdditionalPhones':{'type':Sequelize[_0xd4c2('0x3')]},'priority':{'type':Sequelize[_0xd4c2('0x5')](0x2)[_0xd4c2('0x6')],'defaultValue':0x2,'validate':{'min':0x0,'max':0x4}},'scheduledat':{'type':Sequelize['DATE'],'defaultValue':Sequelize['NOW']},'dialTimezone':{'type':Sequelize['STRING']},'utcOffset':{'type':Sequelize[_0xd4c2('0x5')]}};
\ No newline at end of file
index 7063358..ffeec92 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(_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
+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(_0x5c4f6b,_0x2cdfce){var _0x104c4e=function(_0x31171b){while(--_0x31171b){_0x5c4f6b['push'](_0x5c4f6b['shift']());}};_0x104c4e(++_0x2cdfce);}(_0xa9e0,0x123));var _0x0a9e=function(_0x4154a6,_0x2c0b8e){_0x4154a6=_0x4154a6-0x0;var _0x3b2786=_0xa9e0[_0x4154a6];return _0x3b2786;};'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 e4b985a..831780a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0x9c2e=['save','update','remove','emit','hasOwnProperty','hook','events','../../mysqldb','CmContact'];(function(_0x42dc8,_0x2435ae){var _0xc18591=function(_0x18117c){while(--_0x18117c){_0x42dc8['push'](_0x42dc8['shift']());}};_0xc18591(++_0x2435ae);}(_0x9c2e,0xcc));var _0xe9c2=function(_0x146d9e,_0x136b13){_0x146d9e=_0x146d9e-0x0;var _0xc0668=_0x9c2e[_0x146d9e];return _0xc0668;};'use strict';var EventEmitter=require(_0xe9c2('0x0'));var CmContact=require(_0xe9c2('0x1'))['db'][_0xe9c2('0x2')];var CmContactEvents=new EventEmitter();CmContactEvents['setMaxListeners'](0x0);var events={'afterCreate':_0xe9c2('0x3'),'afterUpdate':_0xe9c2('0x4'),'afterDestroy':_0xe9c2('0x5')};function emitEvent(_0x5c8309){return function(_0x26b8c2,_0x1920a3,_0x2144af){CmContactEvents[_0xe9c2('0x6')](_0x5c8309+':'+_0x26b8c2['id'],_0x26b8c2);CmContactEvents[_0xe9c2('0x6')](_0x5c8309,_0x26b8c2);_0x2144af(null);};}for(var e in events){if(events[_0xe9c2('0x7')](e)){var event=events[e];CmContact[_0xe9c2('0x8')](e,emitEvent(event));}}module['exports']=CmContactEvents;
\ No newline at end of file
index 1b4af6f..b64014f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0x0302=['Lists','length','always','VoiceQueue','BlackLists','CmHopperBlack','cmContact,\x20%s,\x20%s','message','onlyIfOpen','List\x20not\x20found','destroy','ContactId','VoiceQueueId','push','all','info','[CmContact][afterDestroy][Succesfull]','lodash','util','../../config/logger','api','moment','bluebird','request-promise','rimraf','../../config/environment','./cmContact.attributes','exports','define','CmContact','cm_contacts','phone','firstName','mobile','fax','email','utf8mb4','get','afterCreate','inspect','scheduledat','YYYY-MM-DD\x20HH:mm:ss','isNil','dialTimezone','findOne','then','timezones','utcOffset','add','minutes','format','ret','CmHopper','cmContact,\x20afterCreate\x20','\x20contact\x20not\x20insert\x20in\x20hopper,\x20check\x20duplicate\x20onlyIfOpen,\x20exist\x20in\x20hopper\x20VoiceQueue\x20','ListId','priority','callbackUniqueid','\x20contact\x20not\x20insert\x20in\x20hopper,\x20check\x20duplicate\x20always,\x20exist\x20in\x20hopper\x20VoiceQueue\x20','cmContact,\x20afterCreate,\x20','\x20contact\x20not\x20insert\x20in\x20hopper,\x20check\x20duplicate\x20always,\x20exist\x20in\x20hopperFinal\x20VoiceQueue\x20','create','catch','error','cmContact','Campaign','\x20contact\x20not\x20insert\x20in\x20hopper,\x20check\x20duplicate\x20always,\x20exist\x20in\x20hopper\x20Campaign\x20','CmHopperFinal','findAll','outbound','dialCheckDuplicateType','CmList'];(function(_0x26e83c,_0x230bbb){var _0x507fad=function(_0x3bec8c){while(--_0x3bec8c){_0x26e83c['push'](_0x26e83c['shift']());}};_0x507fad(++_0x230bbb);}(_0x0302,0xe9));var _0x2030=function(_0x514476,_0x3713f5){_0x514476=_0x514476-0x0;var _0x4fc780=_0x0302[_0x514476];return _0x4fc780;};'use strict';var _=require(_0x2030('0x0'));var util=require(_0x2030('0x1'));var logger=require(_0x2030('0x2'))(_0x2030('0x3'));var moment=require(_0x2030('0x4'));var BPromise=require(_0x2030('0x5'));var rp=require(_0x2030('0x6'));var fs=require('fs');var path=require('path');var rimraf=require(_0x2030('0x7'));var config=require(_0x2030('0x8'));var shared=require('../../config/environment/shared');var attributes=require(_0x2030('0x9'));module[_0x2030('0xa')]=function(_0x460f5c,_0x1925c0){return _0x460f5c[_0x2030('0xb')](_0x2030('0xc'),attributes,{'tableName':_0x2030('0xd'),'paranoid':!![],'indexes':[{'name':_0x2030('0xe'),'fields':[_0x2030('0xe')]},{'name':'fti_cm_contacts','fields':[_0x2030('0xf'),'lastName',_0x2030('0xe'),_0x2030('0x10'),_0x2030('0x11'),_0x2030('0x12')],'type':'FULLTEXT'}],'timestamps':!![],'charset':_0x2030('0x13'),'collate':'utf8mb4_unicode_ci','hooks':{'afterCreate':function(_0x34520b,_0x330b96,_0x2ae0d5){var _0x55a9b5=_0x460f5c['models'];var _0x4d08c8=_0x34520b[_0x2030('0x14')]({'plain':!![]});function _0x29dcf8(){return function(_0x5be5dd){logger['error']('cmContact',_0x2030('0x15'),util[_0x2030('0x16')](_0x5be5dd,{'showHidden':![],'depth':null}));};}function _0x1b920a(_0x1cde8d,_0x21183b){var _0x35aa54=_0x21183b['scheduledat']?_0x21183b[_0x2030('0x17')]:moment()['format'](_0x2030('0x18'));return new BPromise(function(_0x4e734a,_0x457aee){if(_[_0x2030('0x19')](_0x21183b[_0x2030('0x1a')])){_0x4e734a({'ret':_0x35aa54});}else{_0x55a9b5['VoiceQueue'][_0x2030('0x1b')]({'where':{'id':_0x1cde8d['id']}})[_0x2030('0x1c')](function(_0xbebf34){if(!_[_0x2030('0x19')](_0xbebf34)){var _0x3b7e40=_0xbebf34['dialTimezone'];if(!_[_0x2030('0x19')](_0x3b7e40)){var _0x23ff63=shared[_0x2030('0x1d')];var _0x14a56c=_0x23ff63[_0x3b7e40];var _0x2d6506=_0x23ff63[_0x21183b['dialTimezone']];if(!_[_0x2030('0x19')](_0x14a56c)&&!_[_0x2030('0x19')](_0x2d6506)){var _0x35deee=_0x14a56c[_0x2030('0x1e')]-_0x2d6506[_0x2030('0x1e')];_0x35aa54=_0x21183b['scheduledat']?_0x21183b[_0x2030('0x17')]:moment();var _0x401f64=moment(_0x35aa54)[_0x2030('0x1f')](_0x35deee,_0x2030('0x20'));_0x4e734a({'ret':_0x401f64[_0x2030('0x21')](_0x2030('0x18'))});}else _0x4e734a({'ret':_0x35aa54});}else _0x4e734a({'ret':_0x35aa54});}else{_0x4e734a({'ret':_0x35aa54});}});}});return 0xa;}var _0x3e9455=function(_0x457fa8){return new BPromise(function(_0x1ccc67,_0x38c4a3){_0x1b920a(_0x457fa8,_0x4d08c8)[_0x2030('0x1c')](function(_0x4b40b3){_0x4d08c8[_0x2030('0x17')]=_0x4b40b3[_0x2030('0x22')];_0x55a9b5[_0x2030('0x23')]['findOne']({'where':{'phone':_0x4d08c8[_0x2030('0xe')],'VoiceQueueId':_0x457fa8['id']}})[_0x2030('0x1c')](function(_0x3fcf1c){if(!_[_0x2030('0x19')](_0x3fcf1c)){throw new Error(_0x2030('0x24')+_0x4d08c8[_0x2030('0xe')]+_0x2030('0x25')+_0x457fa8['id']);}return _0x55a9b5['CmHopper']['create']({'phone':_0x4d08c8[_0x2030('0xe')],'ContactId':_0x4d08c8['id'],'ListId':_0x4d08c8[_0x2030('0x26')],'priority':_0x4d08c8[_0x2030('0x27')]?_0x4d08c8[_0x2030('0x27')]:0x2,'scheduledat':_0x4d08c8[_0x2030('0x17')]?_0x4d08c8[_0x2030('0x17')]:moment()['format']('YYYY-MM-DD\x20HH:mm:ss'),'callback':_0x4d08c8['callbackUniqueid']?!![]:![],'callbackuniqueid':_0x4d08c8['callbackUniqueid']?_0x4d08c8[_0x2030('0x28')]:undefined,'callbackat':_0x4d08c8[_0x2030('0x28')]?moment()[_0x2030('0x21')](_0x2030('0x18')):undefined,'VoiceQueueId':_0x457fa8['id']});})['catch'](function(_0x121c37){_0x38c4a3(_0x121c37);});});});};var _0x5e57b3=function(_0xd1c075){return new BPromise(function(_0xa07800,_0x345d85){_0x1b920a(_0xd1c075,_0x4d08c8)[_0x2030('0x1c')](function(_0x355f7c){_0x4d08c8['scheduledat']=_0x355f7c[_0x2030('0x22')];_0x55a9b5[_0x2030('0x23')][_0x2030('0x1b')]({'where':{'phone':_0x4d08c8[_0x2030('0xe')],'VoiceQueueId':_0xd1c075['id']}})[_0x2030('0x1c')](function(_0x266422){if(!_[_0x2030('0x19')](_0x266422)){throw new Error(_0x2030('0x24')+_0x4d08c8['phone']+_0x2030('0x29')+_0xd1c075['id']);}return _0x55a9b5['CmHopperFinal'][_0x2030('0x1b')]({'where':{'calleridnum':_0x4d08c8[_0x2030('0xe')],'VoiceQueueId':_0xd1c075['id']}});})[_0x2030('0x1c')](function(_0x3d528a){if(!_['isNil'](_0x3d528a)){throw new Error(_0x2030('0x2a')+_0x4d08c8[_0x2030('0xe')]+_0x2030('0x2b')+_0xd1c075['id']);}return _0x55a9b5[_0x2030('0x23')][_0x2030('0x2c')]({'phone':_0x4d08c8['phone'],'ContactId':_0x4d08c8['id'],'ListId':_0x4d08c8[_0x2030('0x26')],'priority':_0x4d08c8[_0x2030('0x27')]?_0x4d08c8['priority']:0x2,'scheduledat':_0x4d08c8[_0x2030('0x17')]?_0x4d08c8[_0x2030('0x17')]:moment()[_0x2030('0x21')](_0x2030('0x18')),'callback':_0x4d08c8[_0x2030('0x28')]?!![]:![],'callbackuniqueid':_0x4d08c8[_0x2030('0x28')]?_0x4d08c8[_0x2030('0x28')]:undefined,'callbackat':_0x4d08c8[_0x2030('0x28')]?moment()[_0x2030('0x21')](_0x2030('0x18')):undefined,'VoiceQueueId':_0xd1c075['id']});})[_0x2030('0x2d')](function(_0x5560ef){_0x345d85(_0x5560ef);});});});};function _0x42be27(){return function(_0x52f99c){logger[_0x2030('0x2e')](_0x2030('0x2f'),_0x2030('0x15'),util[_0x2030('0x16')](_0x52f99c,{'showHidden':![],'depth':null}));};}function _0x35f0e2(_0x1aa4c9,_0x1af677){var _0x977f43=_0x1af677[_0x2030('0x17')]?_0x1af677[_0x2030('0x17')]:moment()[_0x2030('0x21')](_0x2030('0x18'));return new BPromise(function(_0x16596d,_0x1a67ed){if(_[_0x2030('0x19')](_0x1af677[_0x2030('0x1a')])){_0x16596d({'ret':_0x977f43});}else{_0x55a9b5[_0x2030('0x30')][_0x2030('0x1b')]({'where':{'id':_0x1aa4c9['id']}})[_0x2030('0x1c')](function(_0x2c9a8e){if(!_[_0x2030('0x19')](_0x2c9a8e)){var _0x38b0a4=_0x2c9a8e[_0x2030('0x1a')];if(!_[_0x2030('0x19')](_0x38b0a4)){var _0x3f3521=shared[_0x2030('0x1d')];var _0x5cbbaf=_0x3f3521[_0x38b0a4];var _0x284065=_0x3f3521[_0x1af677['dialTimezone']];if(!_[_0x2030('0x19')](_0x5cbbaf)&&!_[_0x2030('0x19')](_0x284065)){var _0x164e3a=_0x5cbbaf[_0x2030('0x1e')]-_0x284065[_0x2030('0x1e')];_0x977f43=_0x1af677['scheduledat']?_0x1af677[_0x2030('0x17')]:moment();var _0x5a754a=moment(_0x977f43)[_0x2030('0x1f')](_0x164e3a,_0x2030('0x20'));_0x16596d({'ret':_0x5a754a['format'](_0x2030('0x18'))});}else _0x16596d({'ret':_0x977f43});}else _0x16596d({'ret':_0x977f43});}else{_0x16596d({'ret':_0x977f43});}});}});return 0xa;}var _0x36423f=function(_0x545ce0){return new BPromise(function(_0x4fb579,_0x134512){_0x35f0e2(_0x545ce0,_0x4d08c8)[_0x2030('0x1c')](function(_0x56ce76){_0x4d08c8[_0x2030('0x17')]=_0x56ce76['ret'];_0x55a9b5[_0x2030('0x23')][_0x2030('0x1b')]({'where':{'phone':_0x4d08c8[_0x2030('0xe')],'CampaignId':_0x545ce0['id']}})['then'](function(_0x13b6f1){if(!_[_0x2030('0x19')](_0x13b6f1)){throw new Error(_0x2030('0x24')+_0x4d08c8['phone']+'\x20contact\x20not\x20insert\x20in\x20hopper,\x20check\x20duplicate\x20onlyIfOpen,\x20exist\x20in\x20hopper\x20Campaign\x20'+_0x545ce0['id']);}return _0x55a9b5[_0x2030('0x23')][_0x2030('0x2c')]({'phone':_0x4d08c8[_0x2030('0xe')],'ContactId':_0x4d08c8['id'],'ListId':_0x4d08c8[_0x2030('0x26')],'priority':_0x4d08c8[_0x2030('0x27')]?_0x4d08c8[_0x2030('0x27')]:0x2,'scheduledat':_0x4d08c8[_0x2030('0x17')]?_0x4d08c8['scheduledat']:moment()[_0x2030('0x21')]('YYYY-MM-DD\x20HH:mm:ss'),'callback':_0x4d08c8[_0x2030('0x28')]?!![]:![],'callbackuniqueid':_0x4d08c8['callbackUniqueid']?_0x4d08c8[_0x2030('0x28')]:undefined,'callbackat':_0x4d08c8[_0x2030('0x28')]?moment()[_0x2030('0x21')](_0x2030('0x18')):undefined,'CampaignId':_0x545ce0['id']});})[_0x2030('0x2d')](function(_0x449272){_0x134512(_0x449272);});});});};var _0x155a9e=function(_0x213a35){return new BPromise(function(_0x5ee3b6,_0x4f1322){_0x35f0e2(_0x213a35,_0x4d08c8)[_0x2030('0x1c')](function(_0x1b425e){_0x4d08c8['scheduledat']=_0x1b425e[_0x2030('0x22')];_0x55a9b5[_0x2030('0x23')][_0x2030('0x1b')]({'where':{'phone':_0x4d08c8[_0x2030('0xe')],'CampaignId':_0x213a35['id']}})[_0x2030('0x1c')](function(_0x24e605){if(!_[_0x2030('0x19')](_0x24e605)){throw new Error(_0x2030('0x24')+_0x4d08c8['phone']+_0x2030('0x31')+_0x213a35['id']);}return _0x55a9b5[_0x2030('0x32')][_0x2030('0x1b')]({'where':{'calleridnum':_0x4d08c8[_0x2030('0xe')],'CampaignId':_0x213a35['id']}});})[_0x2030('0x1c')](function(_0x36b30a){if(!_[_0x2030('0x19')](_0x36b30a)){throw new Error(_0x2030('0x2a')+_0x4d08c8[_0x2030('0xe')]+'\x20contact\x20not\x20insert\x20in\x20hopper,\x20check\x20duplicate\x20always,\x20exist\x20in\x20hopperFinal\x20Campaign\x20'+_0x213a35['id']);}return _0x55a9b5[_0x2030('0x23')][_0x2030('0x2c')]({'phone':_0x4d08c8[_0x2030('0xe')],'ContactId':_0x4d08c8['id'],'ListId':_0x4d08c8[_0x2030('0x26')],'priority':_0x4d08c8['priority']?_0x4d08c8[_0x2030('0x27')]:0x2,'scheduledat':_0x4d08c8[_0x2030('0x17')]?_0x4d08c8[_0x2030('0x17')]:moment()[_0x2030('0x21')](_0x2030('0x18')),'callback':_0x4d08c8[_0x2030('0x28')]?!![]:![],'callbackuniqueid':_0x4d08c8[_0x2030('0x28')]?_0x4d08c8[_0x2030('0x28')]:undefined,'callbackat':_0x4d08c8[_0x2030('0x28')]?moment()[_0x2030('0x21')](_0x2030('0x18')):undefined,'CampaignId':_0x213a35['id']});})[_0x2030('0x2d')](function(_0x3016dd){_0x4f1322(_0x3016dd);});});});};if(_0x4d08c8['ListId']){_0x55a9b5['VoiceQueue'][_0x2030('0x33')]({'where':{'type':_0x2030('0x34')},'attributes':['id',_0x2030('0x35'),'dialTimezone'],'include':[{'model':_0x55a9b5[_0x2030('0x36')],'as':_0x2030('0x37'),'where':{'id':_0x4d08c8[_0x2030('0x26')]}}]})[_0x2030('0x1c')](function(_0x29207e){if(_0x29207e){var _0x398207=[];for(var _0x4218a9=0x0,_0x56d231;_0x4218a9<_0x29207e[_0x2030('0x38')];_0x4218a9+=0x1){_0x56d231=_0x29207e[_0x4218a9][_0x2030('0x14')]({'plain':!![]});switch(_0x56d231[_0x2030('0x35')]){case _0x2030('0x39'):_0x5e57b3(_0x56d231)[_0x2030('0x2d')](_0x29dcf8());break;case'onlyIfOpen':_0x3e9455(_0x56d231)[_0x2030('0x2d')](_0x29dcf8());break;default:_0x35f0e2(_0x56d231,_0x4d08c8)[_0x2030('0x1c')](function(_0x18b01c){_0x4d08c8[_0x2030('0x17')]=_0x18b01c['ret'];_0x55a9b5['CmHopper'][_0x2030('0x2c')]({'phone':_0x4d08c8['phone'],'ContactId':_0x4d08c8['id'],'ListId':_0x4d08c8[_0x2030('0x26')],'scheduledat':_0x4d08c8[_0x2030('0x17')]?_0x4d08c8[_0x2030('0x17')]:moment()[_0x2030('0x21')](_0x2030('0x18')),'priority':_0x4d08c8[_0x2030('0x27')]?_0x4d08c8['priority']:0x2,'callback':_0x4d08c8[_0x2030('0x28')]?!![]:![],'callbackuniqueid':_0x4d08c8[_0x2030('0x28')]?_0x4d08c8[_0x2030('0x28')]:undefined,'callbackat':_0x4d08c8[_0x2030('0x28')]?moment()['format'](_0x2030('0x18')):undefined,'VoiceQueueId':_0x56d231['id']})[_0x2030('0x2d')](_0x29dcf8());});}}}})[_0x2030('0x1c')](function(){return _0x55a9b5[_0x2030('0x3a')][_0x2030('0x33')]({'where':{'type':_0x2030('0x34')},'attributes':['id'],'include':[{'model':_0x55a9b5[_0x2030('0x36')],'as':_0x2030('0x3b'),'where':{'id':_0x4d08c8[_0x2030('0x26')]}}]})[_0x2030('0x1c')](function(_0x4d8bff){if(_0x4d8bff){var _0xe4b419=[];for(var _0x274133=0x0,_0x2d6b2b;_0x274133<_0x4d8bff[_0x2030('0x38')];_0x274133+=0x1){_0x2d6b2b=_0x4d8bff[_0x274133][_0x2030('0x14')]({'plain':!![]});_0x55a9b5[_0x2030('0x3c')][_0x2030('0x2c')]({'phone':_0x4d08c8[_0x2030('0xe')],'ContactId':_0x4d08c8['id'],'ListId':_0x4d08c8[_0x2030('0x26')],'VoiceQueueId':_0x2d6b2b['id']})['catch'](function(_0x2a1ea2){logger[_0x2030('0x2e')](_0x2030('0x3d'),'afterCreate',_0x2a1ea2[_0x2030('0x3e')]);});}}});})['then'](function(){return _0x55a9b5[_0x2030('0x30')][_0x2030('0x33')]({'attributes':['id',_0x2030('0x35'),_0x2030('0x1a')],'include':[{'model':_0x55a9b5[_0x2030('0x36')],'as':'Lists','where':{'id':_0x4d08c8[_0x2030('0x26')]}}]})[_0x2030('0x1c')](function(_0x3146a6){if(_0x3146a6){var _0x2820ef=[];for(var _0x1ddc15=0x0,_0x4d03d9;_0x1ddc15<_0x3146a6[_0x2030('0x38')];_0x1ddc15+=0x1){_0x4d03d9=_0x3146a6[_0x1ddc15]['get']({'plain':!![]});switch(_0x4d03d9[_0x2030('0x35')]){case _0x2030('0x39'):_0x155a9e(_0x4d03d9)[_0x2030('0x2d')](_0x42be27());break;case _0x2030('0x3f'):_0x36423f(_0x4d03d9)['catch'](_0x42be27());break;default:_0x55a9b5[_0x2030('0x23')][_0x2030('0x2c')]({'phone':_0x4d08c8[_0x2030('0xe')],'ContactId':_0x4d08c8['id'],'ListId':_0x4d08c8[_0x2030('0x26')],'scheduledat':_0x4d08c8[_0x2030('0x17')]?_0x4d08c8['scheduledat']:moment()[_0x2030('0x21')](_0x2030('0x18')),'priority':_0x4d08c8[_0x2030('0x27')]?_0x4d08c8[_0x2030('0x27')]:0x2,'callback':_0x4d08c8[_0x2030('0x28')]?!![]:![],'callbackuniqueid':_0x4d08c8[_0x2030('0x28')]?_0x4d08c8[_0x2030('0x28')]:undefined,'callbackat':_0x4d08c8[_0x2030('0x28')]?moment()[_0x2030('0x21')]('YYYY-MM-DD\x20HH:mm:ss'):undefined,'CampaignId':_0x4d03d9['id']})['catch'](_0x42be27());}}}});})[_0x2030('0x1c')](function(){return _0x55a9b5[_0x2030('0x30')][_0x2030('0x33')]({'attributes':['id'],'include':[{'model':_0x55a9b5[_0x2030('0x36')],'as':_0x2030('0x3b'),'where':{'id':_0x4d08c8[_0x2030('0x26')]}}]})[_0x2030('0x1c')](function(_0x165992){if(_0x165992){var _0x2f9263=[];for(var _0x38e449=0x0,_0x227644;_0x38e449<_0x165992[_0x2030('0x38')];_0x38e449+=0x1){_0x227644=_0x165992[_0x38e449]['get']({'plain':!![]});_0x55a9b5['CmHopperBlack'][_0x2030('0x2c')]({'phone':_0x4d08c8[_0x2030('0xe')],'ContactId':_0x4d08c8['id'],'ListId':_0x4d08c8[_0x2030('0x26')],'CampaignId':_0x227644['id']})[_0x2030('0x2d')](function(_0x7b7b0){logger['error'](_0x2030('0x3d'),_0x2030('0x15'),_0x7b7b0[_0x2030('0x3e')]);});}}});})[_0x2030('0x1c')](function(){_0x2ae0d5();})[_0x2030('0x2d')](function(_0x492664){logger[_0x2030('0x2e')](_0x2030('0x3d'),'afterCreate',_0x492664[_0x2030('0x3e')]);_0x2ae0d5(_0x492664);});}else{_0x2ae0d5(new Error(_0x2030('0x40')));}},'afterDestroy':function(_0x2c681b,_0xade4f8,_0x28ab03){var _0x5da8ed=_0x460f5c['models'];var _0x995f5d=_0x2c681b[_0x2030('0x14')]({'plain':!![]});return _0x5da8ed[_0x2030('0x23')][_0x2030('0x33')]({'raw':!![],'where':{'ListId':_0x995f5d['ListId'],'ContactId':_0x995f5d['id']}})[_0x2030('0x1c')](function(_0x585adb){if(!_['isEmpty'](_0x585adb)){var _0x284c8e=[];for(var _0x4ead45=0x0;_0x4ead45<_0x585adb[_0x2030('0x38')];_0x4ead45+=0x1){var _0x519a87=_0x5da8ed[_0x2030('0x23')][_0x2030('0x41')]({'where':{'ListId':_0x585adb[_0x4ead45][_0x2030('0x26')],'ContactId':_0x585adb[_0x4ead45][_0x2030('0x42')],'VoiceQueueId':_0x585adb[_0x4ead45][_0x2030('0x43')],'CampaignId':_0x585adb[_0x4ead45]['CampaignId']}});_0x284c8e[_0x2030('0x44')](_0x519a87);}return BPromise[_0x2030('0x45')](_0x284c8e);}})[_0x2030('0x1c')](function(_0x326b53){logger[_0x2030('0x46')](_0x2030('0x47'),util[_0x2030('0x16')](_0x326b53,{'showHidden':![],'depth':null}));_0x28ab03();})[_0x2030('0x2d')](function(_0x47d2e9){logger[_0x2030('0x2e')]('[CmContact][afterDestroy][Error]',util[_0x2030('0x16')](_0x47d2e9,{'showHidden':![],'depth':null}));_0x28ab03(_0x47d2e9);});}}});};
\ No newline at end of file
index 5432534..37eca73 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(_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
+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(_0x2ca88,_0x161f5b){var _0x2daa90=function(_0x13041a){while(--_0x13041a){_0x2ca88['push'](_0x2ca88['shift']());}};_0x2daa90(++_0x161f5b);}(_0x9957,0x93));var _0x7995=function(_0x5ddb1c,_0x5ea4df){_0x5ddb1c=_0x5ddb1c-0x0;var _0x354adc=_0x9957[_0x5ddb1c];return _0x354adc;};'use strict';var _=require(_0x7995('0x0'));var util=require(_0x7995('0x1'));var moment=require(_0x7995('0x2'));var BPromise=require(_0x7995('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x7995('0x4'));var 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 1a01aa9..d0c7400 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa9e0=['register','length','cmContact:','./cmContact.events','save','remove','emit','removeListener'];(function(_0x57b54c,_0x54ce0d){var _0x59cc19=function(_0xa33bc6){while(--_0xa33bc6){_0x57b54c['push'](_0x57b54c['shift']());}};_0x59cc19(++_0x54ce0d);}(_0xa9e0,0x123));var _0x0a9e=function(_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
+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(_0x6c993a,_0x5ea3ab){_0x6c993a=_0x6c993a-0x0;var _0x27f547=_0xa9e0[_0x6c993a];return _0x27f547;};'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 870ab05..8e94951 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(_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
+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(_0x3cc030,_0x45aab9){var _0x52ceab=function(_0x509767){while(--_0x509767){_0x3cc030['push'](_0x3cc030['shift']());}};_0x52ceab(++_0x45aab9);}(_0xa9e0,0x123));var _0x0a9e=function(_0x491a7f,_0x28bb80){_0x491a7f=_0x491a7f-0x0;var _0x3d8f44=_0xa9e0[_0x491a7f];return _0x3d8f44;};'use strict';var multer=require(_0x0a9e('0x0'));var util=require(_0x0a9e('0x1'));var path=require(_0x0a9e('0x2'));var timeout=require('connect-timeout');var express=require('express');var router=express[_0x0a9e('0x3')]();var fs_extra=require('fs-extra');var auth=require(_0x0a9e('0x4'));var interaction=require(_0x0a9e('0x5'));var config=require(_0x0a9e('0x6'));var controller=require(_0x0a9e('0x7'));router[_0x0a9e('0x8')]('/',auth['isAuthenticated'](),controller[_0x0a9e('0x9')]);router[_0x0a9e('0x8')](_0x0a9e('0xa'),auth['isAuthenticated'](),controller['describe']);router[_0x0a9e('0x8')]('/:id',auth['isAuthenticated'](),controller[_0x0a9e('0xb')]);router[_0x0a9e('0x8')](_0x0a9e('0xc'),auth[_0x0a9e('0xd')](),controller[_0x0a9e('0xe')]);router[_0x0a9e('0x8')]('/:id/phones',auth['isAuthenticated'](),controller['getAdditionalPhones']);router['get'](_0x0a9e('0xf'),auth[_0x0a9e('0xd')](),controller[_0x0a9e('0x10')]);router[_0x0a9e('0x8')](_0x0a9e('0x11'),auth[_0x0a9e('0xd')](),controller['getHopperHistories']);router[_0x0a9e('0x8')](_0x0a9e('0x12'),auth[_0x0a9e('0xd')](),controller[_0x0a9e('0x13')]);router[_0x0a9e('0x8')](_0x0a9e('0x14'),auth['isAuthenticated'](),controller[_0x0a9e('0x15')]);router['get'](_0x0a9e('0x16'),auth['isAuthenticated'](),controller[_0x0a9e('0x17')]);router[_0x0a9e('0x18')]('/merge',auth[_0x0a9e('0xd')](),controller['merge']);router[_0x0a9e('0x18')]('/',auth[_0x0a9e('0xd')](),controller[_0x0a9e('0x19')]);router[_0x0a9e('0x18')](_0x0a9e('0x1a'),auth[_0x0a9e('0xd')](),controller[_0x0a9e('0x1b')]);router[_0x0a9e('0x18')](_0x0a9e('0xc'),auth[_0x0a9e('0xd')](),controller[_0x0a9e('0x1c')]);router[_0x0a9e('0x18')]('/:id/phones',auth[_0x0a9e('0xd')](),controller[_0x0a9e('0x1d')]);router['post'](_0x0a9e('0x1e'),auth['isAuthenticated'](),controller['duplicateAdditionalPhones']);router[_0x0a9e('0x18')](_0x0a9e('0x1f'),auth[_0x0a9e('0xd')](),controller[_0x0a9e('0x20')]);var upload=multer({'storage':multer['diskStorage']({'destination':function(_0xfb6e48,_0x2fb0e4,_0x3b45bc){_0x3b45bc(null,path[_0x0a9e('0x21')](config[_0x0a9e('0x22')],_0x0a9e('0x23')));},'filename':function(_0x16b1ca,_0x5ea472,_0x59181e){_0x5ea472[_0x0a9e('0x24')]=_0x5ea472[_0x0a9e('0x24')][_0x0a9e('0x25')](/[+@&\/\\#,+()$~%'":*?<>{}\s\\|]/g,'-');_0x59181e(null,util[_0x0a9e('0x26')]('%s-%s%s',path[_0x0a9e('0x27')](_0x5ea472['originalname'],path[_0x0a9e('0x28')](_0x5ea472['originalname'])),Date[_0x0a9e('0x29')](),path[_0x0a9e('0x28')](_0x5ea472[_0x0a9e('0x24')])));}})});router[_0x0a9e('0x18')](_0x0a9e('0x2a'),upload[_0x0a9e('0x2b')](_0x0a9e('0x2c')),controller[_0x0a9e('0x2d')]);var upload=multer({'storage':multer['diskStorage']({'destination':function(_0x3652a7,_0x468813,_0x2b1f27){_0x2b1f27(null,path[_0x0a9e('0x21')](config['root'],_0x0a9e('0x23')));},'filename':function(_0x40e7a3,_0x1843b2,_0x824a4f){_0x1843b2[_0x0a9e('0x24')]=_0x1843b2[_0x0a9e('0x24')][_0x0a9e('0x25')](/[+@&\/\\#,+()$~%'":*?<>{}\s\\|]/g,'-');_0x824a4f(null,util[_0x0a9e('0x26')](_0x0a9e('0x2e'),path['basename'](_0x1843b2[_0x0a9e('0x24')],path['extname'](_0x1843b2[_0x0a9e('0x24')])),Date[_0x0a9e('0x29')](),path[_0x0a9e('0x28')](_0x1843b2[_0x0a9e('0x24')])));}})});router[_0x0a9e('0x18')]('/upload',upload[_0x0a9e('0x2b')](_0x0a9e('0x2c')),controller[_0x0a9e('0x2f')]);router[_0x0a9e('0x18')](_0x0a9e('0x30'),auth[_0x0a9e('0xd')](),controller[_0x0a9e('0x31')]);router[_0x0a9e('0x18')]('/uploadUpdates/:id',auth[_0x0a9e('0xd')](),controller['importUpdates']);router[_0x0a9e('0x32')](_0x0a9e('0x33'),auth[_0x0a9e('0xd')](),controller[_0x0a9e('0x34')]);router['delete'](_0x0a9e('0x33'),auth[_0x0a9e('0xd')](),controller[_0x0a9e('0x35')]);module[_0x0a9e('0x36')]=router;
\ No newline at end of file
index 057a291..ac51762 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0x98d3=['exports','STRING','INTEGER','sequelize'];(function(_0x257ff8,_0x1070ba){var _0x30dd14=function(_0x55d0eb){while(--_0x55d0eb){_0x257ff8['push'](_0x257ff8['shift']());}};_0x30dd14(++_0x1070ba);}(_0x98d3,0x173));var _0x398d=function(_0x476565,_0x22944d){_0x476565=_0x476565-0x0;var _0x4e8838=_0x98d3[_0x476565];return _0x4e8838;};'use strict';var Sequelize=require(_0x398d('0x0'));module[_0x398d('0x1')]={'CmContactId':{'type':Sequelize['INTEGER'],'primaryKey':!![]},'item':{'type':Sequelize[_0x398d('0x2')],'defaultValue':'','primaryKey':!![]},'ItemTypeId':{'type':Sequelize['INTEGER'],'defaultValue':null},'ItemClass':{'type':Sequelize[_0x398d('0x2')],'defaultValue':'PHONE'},'OrderBy':{'type':Sequelize[_0x398d('0x3')],'defaultValue':null},'description':{'type':Sequelize[_0x398d('0x2')],'defaultValue':null}};
\ No newline at end of file
index 74a0614..96eedea 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0xf94b=['where','filters','pick','merge','type','includeAll','include','show','params','options','find','catch','body','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','user','UserProfileSection','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','zip-dir','fast-json-patch','request-promise','bluebird','util','sox','to-csv','ejs','fs-extra','lodash','crypto','desk.js','querystring','papaparse','ioredis','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/environment','../../mysqldb','sendStatus','status','json','offset','limit','count','Content-Range','update','then','destroy','get','CmContactHasItems','UserProfileResource','end','error','stack','name','send','index','map','CmContactHasItem','rawAttributes','fieldName','model','query','keys','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort'];(function(_0x44a4aa,_0x533157){var _0xec1420=function(_0x3fcab1){while(--_0x3fcab1){_0x44a4aa['push'](_0x44a4aa['shift']());}};_0xec1420(++_0x533157);}(_0xf94b,0x133));var _0xbf94=function(_0x3c31cb,_0x72470){_0x3c31cb=_0x3c31cb-0x0;var _0x256423=_0xf94b[_0x3c31cb];return _0x256423;};'use strict';var emlformat=require('eml-format');var rimraf=require('rimraf');var zipdir=require(_0xbf94('0x0'));var jsonpatch=require(_0xbf94('0x1'));var rp=require(_0xbf94('0x2'));var moment=require('moment');var BPromise=require(_0xbf94('0x3'));var Mustache=require('mustache');var util=require(_0xbf94('0x4'));var path=require('path');var sox=require(_0xbf94('0x5'));var csv=require(_0xbf94('0x6'));var ejs=require(_0xbf94('0x7'));var fs=require('fs');var fs_extra=require(_0xbf94('0x8'));var _=require(_0xbf94('0x9'));var squel=require('squel');var crypto=require(_0xbf94('0xa'));var jsforce=require('jsforce');var deskjs=require(_0xbf94('0xb'));var toCsv=require(_0xbf94('0x6'));var querystring=require(_0xbf94('0xc'));var Papa=require(_0xbf94('0xd'));var Redis=require(_0xbf94('0xe'));var authService=require('../../components/auth/service');var qs=require('../../components/parsers/qs');var as=require(_0xbf94('0xf'));var hardwareService=require(_0xbf94('0x10'));var logger=require('../../config/logger')('api');var utils=require('../../config/utils');var config=require(_0xbf94('0x11'));var licenseUtil=require('../../config/license/util');var db=require(_0xbf94('0x12'))['db'];function respondWithStatusCode(_0x4a8473,_0x3d2855){_0x3d2855=_0x3d2855||0xcc;return function(_0x4a2af2){if(_0x4a2af2){return _0x4a8473[_0xbf94('0x13')](_0x3d2855);}return _0x4a8473[_0xbf94('0x14')](_0x3d2855)['end']();};}function respondWithResult(_0x22a990,_0x156215){_0x156215=_0x156215||0xc8;return function(_0x5469e7){if(_0x5469e7){return _0x22a990['status'](_0x156215)[_0xbf94('0x15')](_0x5469e7);}};}function respondWithFilteredResult(_0x23d435,_0x17aa86){return function(_0x3613bf){if(_0x3613bf){var _0x2e6ac6=typeof _0x17aa86[_0xbf94('0x16')]==='undefined'&&typeof _0x17aa86[_0xbf94('0x17')]==='undefined';var _0xe553e3=_0x3613bf[_0xbf94('0x18')];var _0x2e2ac0=_0x2e6ac6?0x0:_0x17aa86[_0xbf94('0x16')];var _0x4cd2ce=_0x2e6ac6?_0x3613bf['count']:_0x17aa86[_0xbf94('0x16')]+_0x17aa86[_0xbf94('0x17')];var _0x26e49b;if(_0x4cd2ce>=_0xe553e3){_0x4cd2ce=_0xe553e3;_0x26e49b=0xc8;}else{_0x26e49b=0xce;}_0x23d435['status'](_0x26e49b);return _0x23d435['set'](_0xbf94('0x19'),_0x2e2ac0+'-'+_0x4cd2ce+'/'+_0xe553e3)[_0xbf94('0x15')](_0x3613bf);}return null;};}function patchUpdates(_0x1b86e3){return function(_0x188130){try{jsonpatch['apply'](_0x188130,_0x1b86e3,!![]);}catch(_0xb4d796){return BPromise['reject'](_0xb4d796);}return _0x188130['save']();};}function saveUpdates(_0x5e2fa2,_0x2f30d1){return function(_0xebd542){if(_0xebd542){return _0xebd542[_0xbf94('0x1a')](_0x5e2fa2)[_0xbf94('0x1b')](function(_0x901ac4){return _0x901ac4;});}return null;};}function removeEntity(_0x432806,_0x459f45){return function(_0x4b855c){if(_0x4b855c){return _0x4b855c[_0xbf94('0x1c')]()[_0xbf94('0x1b')](function(){var _0xb67c7d=_0x4b855c[_0xbf94('0x1d')]({'plain':!![]});var _0x2cdefb=_0xbf94('0x1e');return db[_0xbf94('0x1f')][_0xbf94('0x1c')]({'where':{'type':_0x2cdefb,'resourceId':_0xb67c7d['id']}})[_0xbf94('0x1b')](function(){return _0x4b855c;});})[_0xbf94('0x1b')](function(){_0x432806['status'](0xcc)[_0xbf94('0x20')]();});}};}function handleEntityNotFound(_0x38828e,_0x261e9f){return function(_0x50ea57){if(!_0x50ea57){_0x38828e['sendStatus'](0x194);}return _0x50ea57;};}function handleError(_0x528ed4,_0x3ddd69){_0x3ddd69=_0x3ddd69||0x1f4;return function(_0x11a7cb){logger[_0xbf94('0x21')](_0x11a7cb[_0xbf94('0x22')]);if(_0x11a7cb['name']){delete _0x11a7cb[_0xbf94('0x23')];}_0x528ed4[_0xbf94('0x14')](_0x3ddd69)[_0xbf94('0x24')](_0x11a7cb);};}exports[_0xbf94('0x25')]=function(_0xa67a10,_0x3d4e8a){var _0x4bf2cd={},_0x5664c0={},_0x1d04de={'count':0x0,'rows':[]};var _0xb33329=_[_0xbf94('0x26')](db[_0xbf94('0x27')][_0xbf94('0x28')],function(_0x22c95a){return{'name':_0x22c95a[_0xbf94('0x29')],'type':_0x22c95a['type']['key']};});_0x5664c0[_0xbf94('0x2a')]=_['map'](_0xb33329,'name');_0x5664c0[_0xbf94('0x2b')]=_[_0xbf94('0x2c')](_0xa67a10[_0xbf94('0x2b')]);_0x5664c0['filters']=_[_0xbf94('0x2d')](_0x5664c0[_0xbf94('0x2a')],_0x5664c0[_0xbf94('0x2b')]);_0x4bf2cd[_0xbf94('0x2e')]=_[_0xbf94('0x2d')](_0x5664c0[_0xbf94('0x2a')],qs[_0xbf94('0x2f')](_0xa67a10['query'][_0xbf94('0x2f')]));_0x4bf2cd[_0xbf94('0x2e')]=_0x4bf2cd[_0xbf94('0x2e')][_0xbf94('0x30')]?_0x4bf2cd['attributes']:_0x5664c0['model'];if(!_0xa67a10['query'][_0xbf94('0x31')](_0xbf94('0x32'))){_0x4bf2cd['limit']=qs[_0xbf94('0x17')](_0xa67a10['query'][_0xbf94('0x17')]);_0x4bf2cd[_0xbf94('0x16')]=qs[_0xbf94('0x16')](_0xa67a10[_0xbf94('0x2b')]['offset']);}_0x4bf2cd[_0xbf94('0x33')]=qs[_0xbf94('0x34')](_0xa67a10[_0xbf94('0x2b')][_0xbf94('0x34')]);_0x4bf2cd[_0xbf94('0x35')]=qs[_0xbf94('0x36')](_[_0xbf94('0x37')](_0xa67a10[_0xbf94('0x2b')],_0x5664c0[_0xbf94('0x36')]),_0xb33329);if(_0xa67a10['query']['filter']){_0x4bf2cd[_0xbf94('0x35')]=_[_0xbf94('0x38')](_0x4bf2cd[_0xbf94('0x35')],{'$or':_[_0xbf94('0x26')](_0xb33329,function(_0x46461a){if(_0x46461a[_0xbf94('0x39')]!=='VIRTUAL'){var _0x9e9bb1={};_0x9e9bb1[_0x46461a[_0xbf94('0x23')]]={'$like':'%'+_0xa67a10[_0xbf94('0x2b')]['filter']+'%'};return _0x9e9bb1;}})});}_0x4bf2cd=_['merge']({},_0x4bf2cd,_0xa67a10['options']);var _0x5458fa={'where':_0x4bf2cd[_0xbf94('0x35')]};return db[_0xbf94('0x27')][_0xbf94('0x18')](_0x5458fa)[_0xbf94('0x1b')](function(_0x1de68e){_0x1d04de[_0xbf94('0x18')]=_0x1de68e;if(_0xa67a10[_0xbf94('0x2b')][_0xbf94('0x3a')]){_0x4bf2cd[_0xbf94('0x3b')]=[{'all':!![]}];}return db[_0xbf94('0x27')]['findAll'](_0x4bf2cd);})[_0xbf94('0x1b')](function(_0x48d56b){_0x1d04de['rows']=_0x48d56b;return _0x1d04de;})[_0xbf94('0x1b')](respondWithFilteredResult(_0x3d4e8a,_0x4bf2cd))['catch'](handleError(_0x3d4e8a,null));};exports[_0xbf94('0x3c')]=function(_0x4afb69,_0x1844c2){var _0x1a2236={'raw':!![],'where':{'id':_0x4afb69[_0xbf94('0x3d')]['id']}},_0x1a5703={};_0x1a5703[_0xbf94('0x2a')]=_[_0xbf94('0x2c')](db[_0xbf94('0x27')][_0xbf94('0x28')]);_0x1a5703[_0xbf94('0x2b')]=_[_0xbf94('0x2c')](_0x4afb69[_0xbf94('0x2b')]);_0x1a5703[_0xbf94('0x36')]=_[_0xbf94('0x2d')](_0x1a5703[_0xbf94('0x2a')],_0x1a5703['query']);_0x1a2236['attributes']=_[_0xbf94('0x2d')](_0x1a5703['model'],qs['fields'](_0x4afb69[_0xbf94('0x2b')][_0xbf94('0x2f')]));_0x1a2236[_0xbf94('0x2e')]=_0x1a2236[_0xbf94('0x2e')][_0xbf94('0x30')]?_0x1a2236[_0xbf94('0x2e')]:_0x1a5703[_0xbf94('0x2a')];if(_0x4afb69['query'][_0xbf94('0x3a')]){_0x1a2236[_0xbf94('0x3b')]=[{'all':!![]}];}_0x1a2236=_[_0xbf94('0x38')]({},_0x1a2236,_0x4afb69[_0xbf94('0x3e')]);return db[_0xbf94('0x27')][_0xbf94('0x3f')](_0x1a2236)[_0xbf94('0x1b')](handleEntityNotFound(_0x1844c2,null))[_0xbf94('0x1b')](respondWithResult(_0x1844c2,null))[_0xbf94('0x40')](handleError(_0x1844c2,null));};exports['create']=function(_0x2afd0d,_0x4c0022){return db[_0xbf94('0x27')]['create'](_0x2afd0d[_0xbf94('0x41')],{})[_0xbf94('0x1b')](function(_0x3bfa73){var _0x5cbdc2=_0x2afd0d['user'][_0xbf94('0x1d')]({'plain':!![]});if(!_0x5cbdc2)throw new Error(_0xbf94('0x42'));if(_0x5cbdc2[_0xbf94('0x43')]===_0xbf94('0x44')){var _0x36a32b=_0x3bfa73[_0xbf94('0x1d')]({'plain':!![]});var _0x24e924=_0xbf94('0x1e');return db[_0xbf94('0x45')][_0xbf94('0x3f')]({'where':{'name':_0x24e924,'userProfileId':_0x5cbdc2['userProfileId']},'raw':!![]})[_0xbf94('0x1b')](function(_0x5edde1){if(_0x5edde1&&_0x5edde1[_0xbf94('0x46')]===0x0){return db[_0xbf94('0x1f')]['create']({'name':_0x36a32b['name'],'resourceId':_0x36a32b['id'],'type':_0x5edde1[_0xbf94('0x23')],'sectionId':_0x5edde1['id']},{})[_0xbf94('0x1b')](function(){return _0x3bfa73;});}else{return _0x3bfa73;}})[_0xbf94('0x40')](function(_0x5f30d4){logger['error'](_0xbf94('0x47'),_0x5f30d4);throw _0x5f30d4;});}return _0x3bfa73;})[_0xbf94('0x1b')](respondWithResult(_0x4c0022,0xc9))['catch'](handleError(_0x4c0022,null));};exports[_0xbf94('0x1a')]=function(_0x30a5b3,_0x5e3b4f){if(_0x30a5b3[_0xbf94('0x41')]['id']){delete _0x30a5b3[_0xbf94('0x41')]['id'];}return db[_0xbf94('0x27')]['find']({'where':{'id':_0x30a5b3[_0xbf94('0x3d')]['id']}})[_0xbf94('0x1b')](handleEntityNotFound(_0x5e3b4f,null))[_0xbf94('0x1b')](saveUpdates(_0x30a5b3[_0xbf94('0x41')],null))['then'](respondWithResult(_0x5e3b4f,null))['catch'](handleError(_0x5e3b4f,null));};exports[_0xbf94('0x1c')]=function(_0x19ee5f,_0x1b9899){return db[_0xbf94('0x27')]['find']({'where':{'id':_0x19ee5f['params']['id']}})['then'](handleEntityNotFound(_0x1b9899,null))['then'](removeEntity(_0x1b9899,null))[_0xbf94('0x40')](handleError(_0x1b9899,null));};
\ No newline at end of file
index 0b3e9db..8defa00 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0x764b=['bluebird','request-promise','path','rimraf','../../config/environment','./cmContactHasItem.attributes','exports','define','CmContactHasItem','cm_contact_has_items','lodash','util','../../config/logger','moment'];(function(_0x111e73,_0x1219ab){var _0x54ee8c=function(_0x3d3472){while(--_0x3d3472){_0x111e73['push'](_0x111e73['shift']());}};_0x54ee8c(++_0x1219ab);}(_0x764b,0x176));var _0xb764=function(_0x411017,_0x4a8117){_0x411017=_0x411017-0x0;var _0x2adeea=_0x764b[_0x411017];return _0x2adeea;};'use strict';var _=require(_0xb764('0x0'));var util=require(_0xb764('0x1'));var logger=require(_0xb764('0x2'))('api');var moment=require(_0xb764('0x3'));var BPromise=require(_0xb764('0x4'));var rp=require(_0xb764('0x5'));var fs=require('fs');var path=require(_0xb764('0x6'));var rimraf=require(_0xb764('0x7'));var config=require(_0xb764('0x8'));var attributes=require(_0xb764('0x9'));module[_0xb764('0xa')]=function(_0x4a8d84,_0x4754b1){return _0x4a8d84[_0xb764('0xb')](_0xb764('0xc'),attributes,{'tableName':_0xb764('0xd'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 88be53d..78ef6a8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0x38e7=['bluebird','randomstring','ioredis','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','request','then','info','CmContactHasItem,\x20%s,\x20%s','request\x20sent','debug','stringify','error','message','result','catch','lodash','util','moment'];(function(_0x40ff3b,_0x238af7){var _0x3ccf4f=function(_0x397ae0){while(--_0x397ae0){_0x40ff3b['push'](_0x40ff3b['shift']());}};_0x3ccf4f(++_0x238af7);}(_0x38e7,0x8d));var _0x738e=function(_0x62c958,_0x2bfdbc){_0x62c958=_0x62c958-0x0;var _0x57ec61=_0x38e7[_0x62c958];return _0x57ec61;};'use strict';var _=require(_0x738e('0x0'));var util=require(_0x738e('0x1'));var moment=require(_0x738e('0x2'));var BPromise=require(_0x738e('0x3'));var rs=require(_0x738e('0x4'));var fs=require('fs');var Redis=require(_0x738e('0x5'));var db=require('../../mysqldb')['db'];var utils=require(_0x738e('0x6'));var logger=require(_0x738e('0x7'))(_0x738e('0x8'));var config=require(_0x738e('0x9'));var jayson=require(_0x738e('0xa'));var client=jayson[_0x738e('0xb')][_0x738e('0xc')]({'port':0x232a});function respondWithRpcPromise(_0x595a33,_0x27f9cd,_0x4e0bed){return new BPromise(function(_0x1b981b,_0x19ebed){return client[_0x738e('0xd')](_0x595a33,_0x4e0bed)[_0x738e('0xe')](function(_0x6627f1){logger[_0x738e('0xf')](_0x738e('0x10'),_0x27f9cd,_0x738e('0x11'));logger[_0x738e('0x12')]('CmContactHasItem,\x20%s,\x20%s,\x20%s',_0x27f9cd,'request\x20sent',JSON[_0x738e('0x13')](_0x6627f1));if(_0x6627f1[_0x738e('0x14')]){if(_0x6627f1[_0x738e('0x14')]['code']===0x1f4){logger[_0x738e('0x14')]('CmContactHasItem,\x20%s,\x20%s',_0x27f9cd,_0x6627f1[_0x738e('0x14')][_0x738e('0x15')]);return _0x19ebed(_0x6627f1[_0x738e('0x14')]['message']);}logger[_0x738e('0x14')](_0x738e('0x10'),_0x27f9cd,_0x6627f1[_0x738e('0x14')][_0x738e('0x15')]);return _0x1b981b(_0x6627f1['error'][_0x738e('0x15')]);}else{logger['info']('CmContactHasItem,\x20%s,\x20%s',_0x27f9cd,_0x738e('0x11'));_0x1b981b(_0x6627f1[_0x738e('0x16')][_0x738e('0x15')]);}})[_0x738e('0x17')](function(_0x4d6c54){logger['error']('CmContactHasItem,\x20%s,\x20%s',_0x27f9cd,_0x4d6c54);_0x19ebed(_0x4d6c54);});});}
\ No newline at end of file
index 3962163..1de311e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0xebe1=['./cmContactHasItem.controller','get','isAuthenticated','/:id','post','create','put','update','delete','destroy','exports','multer','util','path','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment'];(function(_0x45ffd4,_0x3ed70d){var _0x1f3b53=function(_0x34d29){while(--_0x34d29){_0x45ffd4['push'](_0x45ffd4['shift']());}};_0x1f3b53(++_0x3ed70d);}(_0xebe1,0x19a));var _0x1ebe=function(_0x29d7ef,_0x2a9481){_0x29d7ef=_0x29d7ef-0x0;var _0x1c4e0e=_0xebe1[_0x29d7ef];return _0x1c4e0e;};'use strict';var multer=require(_0x1ebe('0x0'));var util=require(_0x1ebe('0x1'));var path=require(_0x1ebe('0x2'));var timeout=require('connect-timeout');var express=require('express');var router=express[_0x1ebe('0x3')]();var fs_extra=require(_0x1ebe('0x4'));var auth=require(_0x1ebe('0x5'));var interaction=require(_0x1ebe('0x6'));var config=require(_0x1ebe('0x7'));var controller=require(_0x1ebe('0x8'));router[_0x1ebe('0x9')]('/',auth[_0x1ebe('0xa')](),controller['index']);router[_0x1ebe('0x9')](_0x1ebe('0xb'),auth[_0x1ebe('0xa')](),controller['show']);router[_0x1ebe('0xc')]('/',auth[_0x1ebe('0xa')](),controller[_0x1ebe('0xd')]);router[_0x1ebe('0xe')](_0x1ebe('0xb'),auth[_0x1ebe('0xa')](),controller[_0x1ebe('0xf')]);router[_0x1ebe('0x10')]('/:id',auth['isAuthenticated'](),controller[_0x1ebe('0x11')]);module[_0x1ebe('0x12')]=router;
\ No newline at end of file
index 0faf3bd..1765828 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0x1415=['type','select','parse','values','isArray','stringify','BOOLEAN','ENUM','voice','sequelize','lodash','exports','VIRTUAL','getDataValue','alias','STRING','setDataValue','name','long'];(function(_0x748f64,_0x1ab840){var _0x50a19c=function(_0x292646){while(--_0x292646){_0x748f64['push'](_0x748f64['shift']());}};_0x50a19c(++_0x1ab840);}(_0x1415,0xc7));var _0x5141=function(_0x1d58e6,_0x483805){_0x1d58e6=_0x1d58e6-0x0;var _0x860f63=_0x1415[_0x1d58e6];return _0x860f63;};'use strict';var Sequelize=require(_0x5141('0x0'));var _=require(_0x5141('0x1'));module[_0x5141('0x2')]={'name':{'type':Sequelize[_0x5141('0x3')],'get':function(_0x7691e4){return this[_0x5141('0x4')](_0x5141('0x5'));}},'alias':{'type':Sequelize[_0x5141('0x6')],'allowNull':![],'set':function(_0x1c21f3){this[_0x5141('0x7')](_0x5141('0x5'),_0x1c21f3?_0x1c21f3:this[_0x5141('0x4')](_0x5141('0x8')));}},'type':{'type':Sequelize['STRING'],'allowNull':![]},'values':{'type':Sequelize['TEXT'](_0x5141('0x9')),'get':function(){if(this[_0x5141('0x4')](_0x5141('0xa'))===_0x5141('0xb')){return JSON[_0x5141('0xc')](this['getDataValue'](_0x5141('0xd')));}else{return this[_0x5141('0x4')](_0x5141('0xd'));}},'set':function(_0x4935ef){if(Array[_0x5141('0xe')](_0x4935ef)){this[_0x5141('0x7')](_0x5141('0xd'),JSON[_0x5141('0xf')](_0x4935ef));}else{this[_0x5141('0x7')](_0x5141('0xd'),_0x4935ef);}}},'required':{'type':Sequelize[_0x5141('0x10')],'defaultValue':![]},'clickToAction':{'type':Sequelize[_0x5141('0x10')],'defaultValue':![]},'actionType':{'type':Sequelize[_0x5141('0x11')](_0x5141('0x12'))}};
\ No newline at end of file
index 5bb45db..0c0c762 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0x8e27=['include','findAll','then','catch','show','keys','body','find','params','create','sequelize','Sequelize','INTEGER','switch','defaultValue','addColumn','format','cf_%d','eml-format','zip-dir','request-promise','moment','bluebird','path','to-csv','ejs','fs-extra','squel','crypto','jsforce','desk.js','querystring','papaparse','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../config/utils','../../config/license/util','sendStatus','status','end','offset','undefined','limit','count','set','Content-Range','apply','reject','save','update','destroy','stack','name','index','map','rawAttributes','fieldName','key','differenceBy','query','filters','intersection','model','fields','attributes','length','hasOwnProperty','order','where','pick','merge','type','VIRTUAL','filter','options','CmCustomField','includeAll'];(function(_0x42d02c,_0x44439){var _0x178dc4=function(_0x1ce8f4){while(--_0x1ce8f4){_0x42d02c['push'](_0x42d02c['shift']());}};_0x178dc4(++_0x44439);}(_0x8e27,0x1f2));var _0x78e2=function(_0x35fb56,_0x5dadff){_0x35fb56=_0x35fb56-0x0;var _0x2fd52c=_0x8e27[_0x35fb56];return _0x2fd52c;};'use strict';var emlformat=require(_0x78e2('0x0'));var rimraf=require('rimraf');var zipdir=require(_0x78e2('0x1'));var jsonpatch=require('fast-json-patch');var rp=require(_0x78e2('0x2'));var moment=require(_0x78e2('0x3'));var BPromise=require(_0x78e2('0x4'));var Mustache=require('mustache');var util=require('util');var path=require(_0x78e2('0x5'));var sox=require('sox');var csv=require(_0x78e2('0x6'));var ejs=require(_0x78e2('0x7'));var fs=require('fs');var fs_extra=require(_0x78e2('0x8'));var _=require('lodash');var squel=require(_0x78e2('0x9'));var crypto=require(_0x78e2('0xa'));var jsforce=require(_0x78e2('0xb'));var deskjs=require(_0x78e2('0xc'));var toCsv=require('to-csv');var querystring=require(_0x78e2('0xd'));var Papa=require(_0x78e2('0xe'));var Redis=require('ioredis');var authService=require(_0x78e2('0xf'));var qs=require(_0x78e2('0x10'));var as=require(_0x78e2('0x11'));var hardwareService=require(_0x78e2('0x12'));var logger=require(_0x78e2('0x13'))('api');var utils=require(_0x78e2('0x14'));var config=require('../../config/environment');var licenseUtil=require(_0x78e2('0x15'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x1f462b,_0x1123bc){_0x1123bc=_0x1123bc||0xcc;return function(_0x4eef83){if(_0x4eef83){return _0x1f462b[_0x78e2('0x16')](_0x1123bc);}return _0x1f462b[_0x78e2('0x17')](_0x1123bc)[_0x78e2('0x18')]();};}function respondWithResult(_0x182287,_0x31d66f){_0x31d66f=_0x31d66f||0xc8;return function(_0x3e04bc){if(_0x3e04bc){return _0x182287[_0x78e2('0x17')](_0x31d66f)['json'](_0x3e04bc);}};}function respondWithFilteredResult(_0x1927da,_0x327ac4){return function(_0x55e38b){if(_0x55e38b){var _0xfb2dbd=typeof _0x327ac4[_0x78e2('0x19')]===_0x78e2('0x1a')&&typeof _0x327ac4[_0x78e2('0x1b')]===_0x78e2('0x1a');var _0x2723a=_0x55e38b[_0x78e2('0x1c')];var _0x5984fc=_0xfb2dbd?0x0:_0x327ac4[_0x78e2('0x19')];var _0x55afdb=_0xfb2dbd?_0x55e38b[_0x78e2('0x1c')]:_0x327ac4['offset']+_0x327ac4[_0x78e2('0x1b')];var _0x26ff85;if(_0x55afdb>=_0x2723a){_0x55afdb=_0x2723a;_0x26ff85=0xc8;}else{_0x26ff85=0xce;}_0x1927da[_0x78e2('0x17')](_0x26ff85);return _0x1927da[_0x78e2('0x1d')](_0x78e2('0x1e'),_0x5984fc+'-'+_0x55afdb+'/'+_0x2723a)['json'](_0x55e38b);}return null;};}function patchUpdates(_0x1e8925){return function(_0x323f85){try{jsonpatch[_0x78e2('0x1f')](_0x323f85,_0x1e8925,!![]);}catch(_0x2ba29c){return BPromise[_0x78e2('0x20')](_0x2ba29c);}return _0x323f85[_0x78e2('0x21')]();};}function saveUpdates(_0x114632,_0x2cbbba){return function(_0x2ab6ab){if(_0x2ab6ab){return _0x2ab6ab[_0x78e2('0x22')](_0x114632)['then'](function(_0x214021){return _0x214021;});}return null;};}function removeEntity(_0x54b6d6,_0x1362e9){return function(_0x203b70){if(_0x203b70){return _0x203b70[_0x78e2('0x23')]()['then'](function(){_0x54b6d6[_0x78e2('0x17')](0xcc)[_0x78e2('0x18')]();});}};}function handleEntityNotFound(_0x3446a1,_0x127b45){return function(_0x437a05){if(!_0x437a05){_0x3446a1[_0x78e2('0x16')](0x194);}return _0x437a05;};}function handleError(_0x5bee47,_0x526bdb){_0x526bdb=_0x526bdb||0x1f4;return function(_0x246522){logger['error'](_0x246522[_0x78e2('0x24')]);if(_0x246522[_0x78e2('0x25')]){delete _0x246522[_0x78e2('0x25')];}_0x5bee47['status'](_0x526bdb)['send'](_0x246522);};}exports[_0x78e2('0x26')]=function(_0x414380,_0x2d08ab){var _0x486bac={},_0x5032e8={},_0x155cc0={'count':0x0,'rows':[]};var _0x1de335=_[_0x78e2('0x27')](db['CmCustomField'][_0x78e2('0x28')],function(_0x535ef2){return{'name':_0x535ef2[_0x78e2('0x29')],'type':_0x535ef2['type'][_0x78e2('0x2a')]};});_0x5032e8['model']=_[_0x78e2('0x2b')](_[_0x78e2('0x27')](_0x1de335,_0x78e2('0x25')),['name']);_0x5032e8[_0x78e2('0x2c')]=_['keys'](_0x414380[_0x78e2('0x2c')]);_0x5032e8[_0x78e2('0x2d')]=_[_0x78e2('0x2e')](_0x5032e8[_0x78e2('0x2f')],_0x5032e8[_0x78e2('0x2c')]);_0x486bac['attributes']=_[_0x78e2('0x2e')](_0x5032e8[_0x78e2('0x2f')],qs[_0x78e2('0x30')](_0x414380['query'][_0x78e2('0x30')]));_0x486bac['attributes']=_0x486bac[_0x78e2('0x31')][_0x78e2('0x32')]?_0x486bac['attributes']:_0x5032e8[_0x78e2('0x2f')];if(!_0x414380[_0x78e2('0x2c')][_0x78e2('0x33')]('nolimit')){_0x486bac[_0x78e2('0x1b')]=qs[_0x78e2('0x1b')](_0x414380[_0x78e2('0x2c')]['limit']);_0x486bac[_0x78e2('0x19')]=qs['offset'](_0x414380[_0x78e2('0x2c')]['offset']);}_0x486bac[_0x78e2('0x34')]=qs['sort'](_0x414380[_0x78e2('0x2c')]['sort']);_0x486bac[_0x78e2('0x35')]=qs['filters'](_[_0x78e2('0x36')](_0x414380['query'],_0x5032e8[_0x78e2('0x2d')]),_0x1de335);if(_0x414380[_0x78e2('0x2c')]['filter']){_0x486bac['where']=_[_0x78e2('0x37')](_0x486bac[_0x78e2('0x35')],{'$or':_[_0x78e2('0x27')](_0x1de335,function(_0x456809){if(_0x456809[_0x78e2('0x38')]!==_0x78e2('0x39')){var _0x2ab346={};_0x2ab346[_0x456809[_0x78e2('0x25')]]={'$like':'%'+_0x414380['query'][_0x78e2('0x3a')]+'%'};return _0x2ab346;}})});}_0x486bac=_[_0x78e2('0x37')]({},_0x486bac,_0x414380[_0x78e2('0x3b')]);var _0x277864={'where':_0x486bac[_0x78e2('0x35')]};return db[_0x78e2('0x3c')][_0x78e2('0x1c')](_0x277864)['then'](function(_0x2bd110){_0x155cc0[_0x78e2('0x1c')]=_0x2bd110;if(_0x414380[_0x78e2('0x2c')][_0x78e2('0x3d')]){_0x486bac[_0x78e2('0x3e')]=[{'all':!![]}];}return db[_0x78e2('0x3c')][_0x78e2('0x3f')](_0x486bac);})[_0x78e2('0x40')](function(_0x1cd2ab){_0x155cc0['rows']=_0x1cd2ab;return _0x155cc0;})[_0x78e2('0x40')](respondWithFilteredResult(_0x2d08ab,_0x486bac))[_0x78e2('0x41')](handleError(_0x2d08ab,null));};exports[_0x78e2('0x42')]=function(_0x1136d0,_0x1aee1b){var _0x4d249a={'raw':!![],'where':{'id':_0x1136d0['params']['id']}},_0x29dacd={};_0x29dacd[_0x78e2('0x2f')]=_['keys'](db[_0x78e2('0x3c')][_0x78e2('0x28')]);_0x29dacd[_0x78e2('0x2c')]=_[_0x78e2('0x43')](_0x1136d0['query']);_0x29dacd[_0x78e2('0x2d')]=_[_0x78e2('0x2e')](_0x29dacd[_0x78e2('0x2f')],_0x29dacd[_0x78e2('0x2c')]);_0x4d249a[_0x78e2('0x31')]=_[_0x78e2('0x2e')](_0x29dacd['model'],qs['fields'](_0x1136d0[_0x78e2('0x2c')][_0x78e2('0x30')]));_0x4d249a['attributes']=_0x4d249a[_0x78e2('0x31')][_0x78e2('0x32')]?_0x4d249a[_0x78e2('0x31')]:_0x29dacd['model'];if(_0x1136d0[_0x78e2('0x2c')]['includeAll']){_0x4d249a[_0x78e2('0x3e')]=[{'all':!![]}];}_0x4d249a=_['merge']({},_0x4d249a,_0x1136d0[_0x78e2('0x3b')]);return db[_0x78e2('0x3c')]['find'](_0x4d249a)[_0x78e2('0x40')](handleEntityNotFound(_0x1aee1b,null))[_0x78e2('0x40')](respondWithResult(_0x1aee1b,null))[_0x78e2('0x41')](handleError(_0x1aee1b,null));};exports['update']=function(_0x10b31a,_0x3717a9){if(_0x10b31a[_0x78e2('0x44')]['id']){delete _0x10b31a[_0x78e2('0x44')]['id'];}return db[_0x78e2('0x3c')][_0x78e2('0x45')]({'where':{'id':_0x10b31a[_0x78e2('0x46')]['id']}})[_0x78e2('0x40')](handleEntityNotFound(_0x3717a9,null))[_0x78e2('0x40')](saveUpdates(_0x10b31a[_0x78e2('0x44')],null))[_0x78e2('0x40')](respondWithResult(_0x3717a9,null))[_0x78e2('0x41')](handleError(_0x3717a9,null));};exports[_0x78e2('0x23')]=function(_0x2724fa,_0x413d00){return db[_0x78e2('0x3c')][_0x78e2('0x45')]({'where':{'id':_0x2724fa[_0x78e2('0x46')]['id']}})[_0x78e2('0x40')](handleEntityNotFound(_0x413d00,null))['then'](removeEntity(_0x413d00,null))[_0x78e2('0x41')](handleError(_0x413d00,null));};exports[_0x78e2('0x47')]=function(_0x19de84,_0x1b85ba){var _0x4ae57a;return db[_0x78e2('0x48')]['transaction'](function(_0x2ab591){return db[_0x78e2('0x3c')]['create'](_0x19de84[_0x78e2('0x44')],{'transaction':_0x2ab591})[_0x78e2('0x40')](function(_0x168440){_0x4ae57a=_0x168440;var _0xedcbf3={'type':db[_0x78e2('0x49')]['TEXT'],'transaction':_0x2ab591};switch(_0x19de84[_0x78e2('0x44')][_0x78e2('0x38')]){case'text':_0xedcbf3[_0x78e2('0x38')]=db[_0x78e2('0x49')]['TEXT'];break;case'number':_0xedcbf3[_0x78e2('0x38')]=db['Sequelize'][_0x78e2('0x4a')];break;case _0x78e2('0x4b'):_0xedcbf3[_0x78e2('0x38')]=db['Sequelize']['BOOLEAN'];_0xedcbf3[_0x78e2('0x4c')]=![];break;default:}return db[_0x78e2('0x48')]['queryInterface'][_0x78e2('0x4d')]('cm_contacts',util[_0x78e2('0x4e')](_0x78e2('0x4f'),_0x4ae57a['id']),_0xedcbf3);})[_0x78e2('0x40')](function(){return _0x4ae57a;});})['then'](respondWithResult(_0x1b85ba,0xc9))[_0x78e2('0x41')](handleError(_0x1b85ba,null));};
\ No newline at end of file
index 7e724d0..69b148b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0x6426=['../../config/environment','./cmCustomField.attributes','define','cm_custom_fields','lodash','moment','bluebird','path','rimraf'];(function(_0x1ba862,_0x6f5fe4){var _0x1ce09d=function(_0x27c31c){while(--_0x27c31c){_0x1ba862['push'](_0x1ba862['shift']());}};_0x1ce09d(++_0x6f5fe4);}(_0x6426,0xca));var _0x6642=function(_0x395535,_0x2a367e){_0x395535=_0x395535-0x0;var _0x237abf=_0x6426[_0x395535];return _0x237abf;};'use strict';var _=require(_0x6642('0x0'));var util=require('util');var logger=require('../../config/logger')('api');var moment=require(_0x6642('0x1'));var BPromise=require(_0x6642('0x2'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x6642('0x3'));var rimraf=require(_0x6642('0x4'));var config=require(_0x6642('0x5'));var attributes=require(_0x6642('0x6'));module['exports']=function(_0x1bf22d,_0x2659da){return _0x1bf22d[_0x6642('0x7')]('CmCustomField',attributes,{'tableName':_0x6642('0x8'),'paranoid':!![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index ce13f32..ba27777 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0x8239=['../../config/utils','../../config/logger','rpc','jayson/promise','client','http','request','info','CmCustomField,\x20%s,\x20%s','request\x20sent','debug','CmCustomField,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb'];(function(_0x135d3f,_0xf67de7){var _0x32af67=function(_0x42d740){while(--_0x42d740){_0x135d3f['push'](_0x135d3f['shift']());}};_0x32af67(++_0xf67de7);}(_0x8239,0x10c));var _0x9823=function(_0x5b6376,_0x36ea96){_0x5b6376=_0x5b6376-0x0;var _0x5ded0c=_0x8239[_0x5b6376];return _0x5ded0c;};'use strict';var _=require(_0x9823('0x0'));var util=require(_0x9823('0x1'));var moment=require(_0x9823('0x2'));var BPromise=require(_0x9823('0x3'));var rs=require(_0x9823('0x4'));var fs=require('fs');var Redis=require(_0x9823('0x5'));var db=require(_0x9823('0x6'))['db'];var utils=require(_0x9823('0x7'));var logger=require(_0x9823('0x8'))(_0x9823('0x9'));var config=require('../../config/environment');var jayson=require(_0x9823('0xa'));var client=jayson[_0x9823('0xb')][_0x9823('0xc')]({'port':0x232a});function respondWithRpcPromise(_0x205ad3,_0x136c4d,_0x367e4c){return new BPromise(function(_0x170dff,_0x267ead){return client[_0x9823('0xd')](_0x205ad3,_0x367e4c)['then'](function(_0x51d08f){logger[_0x9823('0xe')](_0x9823('0xf'),_0x136c4d,_0x9823('0x10'));logger[_0x9823('0x11')](_0x9823('0x12'),_0x136c4d,'request\x20sent',JSON[_0x9823('0x13')](_0x51d08f));if(_0x51d08f[_0x9823('0x14')]){if(_0x51d08f['error'][_0x9823('0x15')]===0x1f4){logger[_0x9823('0x14')](_0x9823('0xf'),_0x136c4d,_0x51d08f[_0x9823('0x14')]['message']);return _0x267ead(_0x51d08f[_0x9823('0x14')][_0x9823('0x16')]);}logger[_0x9823('0x14')](_0x9823('0xf'),_0x136c4d,_0x51d08f[_0x9823('0x14')][_0x9823('0x16')]);return _0x170dff(_0x51d08f['error'][_0x9823('0x16')]);}else{logger['info'](_0x9823('0xf'),_0x136c4d,'request\x20sent');_0x170dff(_0x51d08f[_0x9823('0x17')]['message']);}})[_0x9823('0x18')](function(_0x488665){logger['error'](_0x9823('0xf'),_0x136c4d,_0x488665);_0x267ead(_0x488665);});});}
\ No newline at end of file
index 430f6cd..94415a6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0x815b=['multer','util','path','connect-timeout','express','fs-extra','../../config/environment','./cmCustomField.controller','get','index','isAuthenticated','create','put','/:id','update','delete','destroy','exports'];(function(_0x40439c,_0x286d18){var _0x410b1a=function(_0x44ec35){while(--_0x44ec35){_0x40439c['push'](_0x40439c['shift']());}};_0x410b1a(++_0x286d18);}(_0x815b,0xb4));var _0xb815=function(_0x15240d,_0x45a37f){_0x15240d=_0x15240d-0x0;var _0x102032=_0x815b[_0x15240d];return _0x102032;};'use strict';var multer=require(_0xb815('0x0'));var util=require(_0xb815('0x1'));var path=require(_0xb815('0x2'));var timeout=require(_0xb815('0x3'));var express=require(_0xb815('0x4'));var router=express['Router']();var fs_extra=require(_0xb815('0x5'));var auth=require('../../components/auth/service');var interaction=require('../../components/interaction/service');var config=require(_0xb815('0x6'));var controller=require(_0xb815('0x7'));router[_0xb815('0x8')]('/',auth['isAuthenticated'](),controller[_0xb815('0x9')]);router[_0xb815('0x8')]('/:id',auth[_0xb815('0xa')](),controller['show']);router['post']('/',auth[_0xb815('0xa')](),controller[_0xb815('0xb')]);router[_0xb815('0xc')](_0xb815('0xd'),auth[_0xb815('0xa')](),controller[_0xb815('0xe')]);router[_0xb815('0xf')](_0xb815('0xd'),auth['isAuthenticated'](),controller[_0xb815('0x10')]);module[_0xb815('0x11')]=router;
\ No newline at end of file
index 649ac76..0a60bd5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0x6ebc=['BOOLEAN','contactListQueue','sequelize','exports','STRING','DATE','format','YYYY-MM-DD\x20HH:mm:ss','INTEGER'];(function(_0x5595ba,_0x589897){var _0x146b0a=function(_0x171223){while(--_0x171223){_0x5595ba['push'](_0x5595ba['shift']());}};_0x146b0a(++_0x589897);}(_0x6ebc,0x1df));var _0xc6eb=function(_0x4ca922,_0x11f8d6){_0x4ca922=_0x4ca922-0x0;var _0x3feb75=_0x6ebc[_0x4ca922];return _0x3feb75;};'use strict';var moment=require('moment');var Sequelize=require(_0xc6eb('0x0'));module[_0xc6eb('0x1')]={'phone':{'type':Sequelize[_0xc6eb('0x2')],'allowNull':![]},'active':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'scheduledat':{'type':Sequelize[_0xc6eb('0x3')],'defaultValue':moment()[_0xc6eb('0x4')](_0xc6eb('0x5'))},'countbusyretry':{'type':Sequelize[_0xc6eb('0x6')],'defaultValue':0x0},'countcongestionretry':{'type':Sequelize[_0xc6eb('0x6')],'defaultValue':0x0},'countnoanswerretry':{'type':Sequelize[_0xc6eb('0x6')],'defaultValue':0x0},'callback':{'type':Sequelize[_0xc6eb('0x7')],'defaultValue':![]},'callbackuniqueid':{'type':Sequelize[_0xc6eb('0x2')],'defaultValue':null},'callbackat':{'type':Sequelize['DATE']},'priority':{'type':Sequelize['INTEGER'](0x2)['UNSIGNED'],'defaultValue':0x2,'validate':{'min':0x0,'max':0x4}},'recallme':{'type':Sequelize[_0xc6eb('0x7')],'defaultValue':![]},'ContactId':{'type':Sequelize[_0xc6eb('0x6')],'unique':_0xc6eb('0x8')},'ListId':{'type':Sequelize[_0xc6eb('0x6')],'unique':_0xc6eb('0x8')},'UserId':{'type':Sequelize[_0xc6eb('0x6')]},'VoiceQueueId':{'type':Sequelize[_0xc6eb('0x6')],'unique':_0xc6eb('0x8')},'CampaignId':{'type':Sequelize['INTEGER']},'countnosuchnumberretry':{'type':Sequelize[_0xc6eb('0x6')],'defaultValue':0x0},'countdropretry':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'countabandonedretry':{'type':Sequelize[_0xc6eb('0x6')],'defaultValue':0x0},'countmachineretry':{'type':Sequelize[_0xc6eb('0x6')],'defaultValue':0x0},'countagentrejectretry':{'type':Sequelize[_0xc6eb('0x6')],'defaultValue':0x0},'OrderBy':{'type':Sequelize[_0xc6eb('0x6')],'allowNull':!![],'defaultValue':0x0},'dialTimezone':{'type':Sequelize[_0xc6eb('0x2')]},'recallmeNotifiedDate':{'type':Sequelize['DATE'],'allowNull':!![],'defaultValue':null}};
\ No newline at end of file
index 5ee8251..ca0292b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0xdb94=['$gt','$lt','$lte','$ne','$eq','$not','$between','$notBetween','$like','$iLike','$notILike','$overlap','$contains','$contained','$any','attributes','fields','length','hasOwnProperty','nolimit','sort','where','pick','VIRTUAL','filter','options','include','findAll','rows','catch','show','params','includeAll','merge','find','create','body','describe','destroy','VoiceQueueId','CampaignId','VoiceQueue','dataValues','createdAt','updatedAt','state','statedesc','deleted','campaign','user','UserId','format','YYYY-MM-DD\x20HH:mm:ss','calleridnum','campaigntype','queue','CmContact','ContactId','firstName','lastName','isNil','calleridname','finally','end','getPreview','getVoiceQueues','outbound','dialPreviewAutoRecallMe','transaction','value','direction','hopperIds','priority','ASC','scheduledAt','dialOrderByScheduledAt','COALESCE(CmHopper.UserId,\x200)\x20ASC','DESC','isEmpty','sequelize','COALESCE(CmHopper.UserId,\x200)\x20DESC','phone','recallme','UPDATE','Contact','CmCompany','Company','Queue','dialActive','getPreviewRecall','findOne','LOCK','CmList','getOpenContacts','preview','isNumber','entity\x20not\x20found','utcOffset','getTimezone','lodash','../../components/parsers/qs','api','../../config/environment','../../mysqldb','status','offset','limit','undefined','count','Content-Range','json','update','then','sendStatus','error','name','index','CmHopper','rawAttributes','fieldName','type','key','model','map','query','keys','intersection','filters','concat','$and'];(function(_0x5d2e9b,_0x55b4ed){var _0x19da3b=function(_0x43bdc6){while(--_0x43bdc6){_0x5d2e9b['push'](_0x5d2e9b['shift']());}};_0x19da3b(++_0x55b4ed);}(_0xdb94,0xe5));var _0x4db9=function(_0x186696,_0x2c6b3e){_0x186696=_0x186696-0x0;var _0x3d52ed=_0xdb94[_0x186696];return _0x3d52ed;};'use strict';var moment=require('moment');var _=require(_0x4db9('0x0'));var qs=require(_0x4db9('0x1'));var logger=require('../../config/logger')(_0x4db9('0x2'));var shared=require(_0x4db9('0x3'));var db=require(_0x4db9('0x4'))['db'];function respondWithResult(_0x2e85f4,_0x1f05d4){_0x1f05d4=_0x1f05d4||0xc8;return function(_0x592097){if(_0x592097){return _0x2e85f4[_0x4db9('0x5')](_0x1f05d4)['json'](_0x592097);}};}function respondWithFilteredResult(_0x1d21a8,_0xc76bc1){return function(_0x1dddb9){if(_0x1dddb9){var _0x3404f6=typeof _0xc76bc1[_0x4db9('0x6')]==='undefined'&&typeof _0xc76bc1[_0x4db9('0x7')]===_0x4db9('0x8');var _0x2d1d38=_0x1dddb9[_0x4db9('0x9')];var _0x402132=_0x3404f6?0x0:_0xc76bc1['offset'];var _0x268eb5=_0x3404f6?_0x1dddb9[_0x4db9('0x9')]:_0xc76bc1[_0x4db9('0x6')]+_0xc76bc1[_0x4db9('0x7')];var _0x34147f;if(_0x268eb5>=_0x2d1d38){_0x268eb5=_0x2d1d38;_0x34147f=0xc8;}else{_0x34147f=0xce;}_0x1d21a8[_0x4db9('0x5')](_0x34147f);return _0x1d21a8['set'](_0x4db9('0xa'),_0x402132+'-'+_0x268eb5+'/'+_0x2d1d38)[_0x4db9('0xb')](_0x1dddb9);}return null;};}function saveUpdates(_0x59f01c,_0x549c92){return function(_0x19f2d3){if(_0x19f2d3){return _0x19f2d3[_0x4db9('0xc')](_0x59f01c)[_0x4db9('0xd')](function(_0x4d4046){return _0x4d4046;});}return null;};}function handleEntityNotFound(_0x1a93be,_0x3dde55){return function(_0x2018d2){if(!_0x2018d2){_0x1a93be[_0x4db9('0xe')](0x194);}return _0x2018d2;};}function handleError(_0x2d89a7,_0x585230){_0x585230=_0x585230||0x1f4;return function(_0x1b1062){logger[_0x4db9('0xf')](_0x1b1062['stack']);if(_0x1b1062[_0x4db9('0x10')]){delete _0x1b1062[_0x4db9('0x10')];}_0x2d89a7[_0x4db9('0x5')](_0x585230)['send'](_0x1b1062);};}exports[_0x4db9('0x11')]=function(_0x3b0863,_0x4c5f4f){var _0x50f685={},_0x493923={},_0x605552={'count':0x0,'rows':[]};var _0x4235ab=_['map'](db[_0x4db9('0x12')][_0x4db9('0x13')],function(_0x353718){return{'name':_0x353718[_0x4db9('0x14')],'type':_0x353718[_0x4db9('0x15')][_0x4db9('0x16')]};});_0x493923[_0x4db9('0x17')]=_[_0x4db9('0x18')](_0x4235ab,_0x4db9('0x10'));_0x493923[_0x4db9('0x19')]=_[_0x4db9('0x1a')](_0x3b0863[_0x4db9('0x19')]);_0x493923['filters']=_[_0x4db9('0x1b')](_0x493923[_0x4db9('0x17')],_0x493923['query']);_0x493923[_0x4db9('0x1c')]=_[_0x4db9('0x1d')](_0x493923[_0x4db9('0x1c')],[_0x4db9('0x1e'),'$or',_0x4db9('0x1f'),'$gte',_0x4db9('0x20'),_0x4db9('0x21'),_0x4db9('0x22'),_0x4db9('0x23'),_0x4db9('0x24'),_0x4db9('0x25'),_0x4db9('0x26'),'$in','$notIn',_0x4db9('0x27'),'$notLike',_0x4db9('0x28'),_0x4db9('0x29'),_0x4db9('0x27'),_0x4db9('0x2a'),_0x4db9('0x2b'),_0x4db9('0x2c'),_0x4db9('0x2d')]);_0x50f685[_0x4db9('0x2e')]=_['intersection'](_0x493923[_0x4db9('0x17')],qs['fields'](_0x3b0863[_0x4db9('0x19')][_0x4db9('0x2f')]));_0x50f685[_0x4db9('0x2e')]=_0x50f685[_0x4db9('0x2e')][_0x4db9('0x30')]?_0x50f685['attributes']:_0x493923[_0x4db9('0x17')];if(!_0x3b0863[_0x4db9('0x19')][_0x4db9('0x31')](_0x4db9('0x32'))){_0x50f685['limit']=qs['limit'](_0x3b0863[_0x4db9('0x19')][_0x4db9('0x7')]);_0x50f685['offset']=qs['offset'](_0x3b0863[_0x4db9('0x19')]['offset']);}_0x50f685['order']=qs[_0x4db9('0x33')](_0x3b0863[_0x4db9('0x19')]['sort']);_0x50f685[_0x4db9('0x34')]=qs[_0x4db9('0x1c')](_[_0x4db9('0x35')](_0x3b0863[_0x4db9('0x19')],_0x493923['filters']),_0x4235ab);if(_0x3b0863[_0x4db9('0x19')]['filter']){_0x50f685['where']=_['merge'](_0x50f685[_0x4db9('0x34')],{'$or':_[_0x4db9('0x18')](_0x4235ab,function(_0x5b863c){if(_0x5b863c[_0x4db9('0x15')]!==_0x4db9('0x36')){var _0x57b3fc={};_0x57b3fc[_0x5b863c['name']]={'$like':'%'+_0x3b0863['query'][_0x4db9('0x37')]+'%'};return _0x57b3fc;}})});}_0x50f685=_['merge']({},_0x50f685,_0x3b0863[_0x4db9('0x38')]);var _0x52711a={'where':_0x50f685[_0x4db9('0x34')]};return db[_0x4db9('0x12')][_0x4db9('0x9')](_0x52711a)[_0x4db9('0xd')](function(_0x27ef37){_0x605552['count']=_0x27ef37;if(_0x3b0863[_0x4db9('0x19')]['includeAll']){_0x50f685[_0x4db9('0x39')]=[{'all':!![]}];}return db[_0x4db9('0x12')][_0x4db9('0x3a')](_0x50f685);})[_0x4db9('0xd')](function(_0x146850){_0x605552[_0x4db9('0x3b')]=_0x146850;return _0x605552;})['then'](respondWithFilteredResult(_0x4c5f4f,_0x50f685))[_0x4db9('0x3c')](handleError(_0x4c5f4f,null));};exports[_0x4db9('0x3d')]=function(_0x5ba7df,_0x4caf5f){var _0x404af3={'raw':!![],'where':{'id':_0x5ba7df[_0x4db9('0x3e')]['id']}},_0x45142f={};_0x45142f[_0x4db9('0x17')]=_[_0x4db9('0x1a')](db[_0x4db9('0x12')][_0x4db9('0x13')]);_0x45142f[_0x4db9('0x19')]=_[_0x4db9('0x1a')](_0x5ba7df[_0x4db9('0x19')]);_0x45142f[_0x4db9('0x1c')]=_[_0x4db9('0x1b')](_0x45142f['model'],_0x45142f[_0x4db9('0x19')]);_0x404af3[_0x4db9('0x2e')]=_[_0x4db9('0x1b')](_0x45142f[_0x4db9('0x17')],qs['fields'](_0x5ba7df['query'][_0x4db9('0x2f')]));_0x404af3[_0x4db9('0x2e')]=_0x404af3[_0x4db9('0x2e')]['length']?_0x404af3[_0x4db9('0x2e')]:_0x45142f['model'];if(_0x5ba7df[_0x4db9('0x19')][_0x4db9('0x3f')]){_0x404af3[_0x4db9('0x39')]=[{'all':!![]}];}_0x404af3=_[_0x4db9('0x40')]({},_0x404af3,_0x5ba7df[_0x4db9('0x38')]);return db['CmHopper'][_0x4db9('0x41')](_0x404af3)[_0x4db9('0xd')](handleEntityNotFound(_0x4caf5f,null))[_0x4db9('0xd')](respondWithResult(_0x4caf5f,null))[_0x4db9('0x3c')](handleError(_0x4caf5f,null));};exports[_0x4db9('0x42')]=function(_0x48d591,_0x38d554){return db[_0x4db9('0x12')][_0x4db9('0x42')](_0x48d591[_0x4db9('0x43')],{})[_0x4db9('0xd')](respondWithResult(_0x38d554,0xc9))[_0x4db9('0x3c')](handleError(_0x38d554,null));};exports[_0x4db9('0xc')]=function(_0x1f5664,_0x8ebc63){if(_0x1f5664['body']['id']){delete _0x1f5664[_0x4db9('0x43')]['id'];}return db['CmHopper']['find']({'where':{'id':_0x1f5664[_0x4db9('0x3e')]['id']}})[_0x4db9('0xd')](handleEntityNotFound(_0x8ebc63,null))['then'](saveUpdates(_0x1f5664['body'],null))[_0x4db9('0xd')](respondWithResult(_0x8ebc63,null))[_0x4db9('0x3c')](handleError(_0x8ebc63,null));};exports[_0x4db9('0x44')]=function(_0x7f0aac,_0x2c2c17){return db[_0x4db9('0x12')][_0x4db9('0x44')]()[_0x4db9('0xd')](respondWithResult(_0x2c2c17,null))[_0x4db9('0x3c')](handleError(_0x2c2c17,null));};exports[_0x4db9('0x45')]=function(_0x43312c,_0x5495de){var _0x2fb812;var _0x1934fb=_0x43312c['params']['id'];return db[_0x4db9('0x12')]['find']({'where':{'id':_0x43312c[_0x4db9('0x3e')]['id']}})[_0x4db9('0xd')](handleEntityNotFound(_0x5495de,null))[_0x4db9('0xd')](function(_0x2a5a98){if(_0x2a5a98){return _0x2a5a98[_0x4db9('0x45')]()[_0x4db9('0xd')](function(_0x3f1aac){return _0x3f1aac;});}})[_0x4db9('0xd')](function(_0x2f77f9){_0x2fb812=_0x2f77f9;if(_0x2f77f9){if(_0x2f77f9[_0x4db9('0x46')]||_0x2f77f9[_0x4db9('0x47')]){return db[_0x2f77f9[_0x4db9('0x46')]?_0x4db9('0x48'):'Campaign']['find']({'where':{'id':_0x2f77f9['VoiceQueueId']?_0x2f77f9[_0x4db9('0x46')]:_0x2f77f9['CampaignId']},'attributes':['id',_0x4db9('0x10')],'raw':!![]});}}})['then'](function(_0x521c7b){var _0x2ab2aa={};if(_0x521c7b){_['merge'](_0x2ab2aa,_['omit'](_0x2fb812[_0x4db9('0x49')],[_0x4db9('0x4a'),_0x4db9('0x4b'),'id']));_0x2ab2aa[_0x4db9('0x4c')]=0x15;_0x2ab2aa[_0x4db9('0x4d')]=_0x4db9('0x4e');_0x2ab2aa[_0x4db9('0x4f')]=_0x521c7b[_0x4db9('0x10')];_0x2ab2aa['membername']=_0x43312c[_0x4db9('0x50')][_0x4db9('0x10')];_0x2ab2aa[_0x4db9('0x51')]=_0x43312c[_0x4db9('0x50')]['id'];_0x2ab2aa[_0x4db9('0x4e')]=!![];_0x2ab2aa['deletedat']=moment()[_0x4db9('0x52')](_0x4db9('0x53'));_0x2ab2aa[_0x4db9('0x54')]=_0x2fb812['phone'];_0x2ab2aa[_0x4db9('0x55')]=_0x2fb812[_0x4db9('0x46')]?_0x4db9('0x56'):'ivr';return db[_0x4db9('0x57')]['find']({'where':{'id':_0x2ab2aa[_0x4db9('0x58')]},'attributes':[_0x4db9('0x59'),_0x4db9('0x5a')]})['then'](function(_0x3544bf){if(!_[_0x4db9('0x5b')](_0x5495de)&&!_['isNil'](_0x3544bf[_0x4db9('0x59')])){_0x2ab2aa[_0x4db9('0x5c')]=_0x3544bf[_0x4db9('0x59')];if(!_[_0x4db9('0x5b')](_0x3544bf[_0x4db9('0x5a')])){_0x2ab2aa[_0x4db9('0x5c')]+='\x20'+_0x3544bf[_0x4db9('0x5a')];}}})[_0x4db9('0x5d')](function(){return db['CmHopperFinal'][_0x4db9('0x42')](_0x2ab2aa);});}})[_0x4db9('0xd')](function(_0x2cad2e){return db['CmHopperAdditionalPhone'][_0x4db9('0x45')]({'where':{'CmHopperId':_0x1934fb}});})[_0x4db9('0xd')](function(){return _0x5495de[_0x4db9('0x5')](0xcc)[_0x4db9('0x5e')]();})['catch'](handleError(_0x5495de,null));};exports[_0x4db9('0x5f')]=function(_0x3a6b75,_0x16e0b3){var _0x226023=[];return db[_0x4db9('0x57')][_0x4db9('0x44')]()[_0x4db9('0xd')](function(_0x41fd1e){_0x226023=_['keys'](_0x41fd1e);return _0x3a6b75[_0x4db9('0x50')][_0x4db9('0x60')]({'where':{'type':_0x4db9('0x61'),'dialActive':!![],'dialMethod':'preview'},'attributes':['id','dialOrderByScheduledAt',_0x4db9('0x62')],'raw':!![]});})[_0x4db9('0xd')](function(_0x4f7a35){if(_0x4f7a35&&_0x4f7a35[_0x4db9('0x30')]){return db['sequelize'][_0x4db9('0x63')](function(_0x447a45){var _0x111646={'active':![],'recallme':![],'scheduledAt':{'$lte':moment()[_0x4db9('0x52')](_0x4db9('0x53'))},'VoiceQueueId':{'$in':_[_0x4db9('0x18')](_0x4f7a35,'id')},'$or':[{'UserId':null},{'UserId':_0x3a6b75[_0x4db9('0x50')]['id']}]};var _0x3fecd2={'active':![],'recallme':!![],'VoiceQueueId':{'$in':_(_0x4f7a35)['filter']([_0x4db9('0x62'),0x0])[_0x4db9('0x18')]('id')[_0x4db9('0x64')]()},'$or':[{'UserId':null},{'UserId':_0x3a6b75[_0x4db9('0x50')]['id']}]};var _0x21598f={'$or':[_0x111646,_0x3fecd2]};var _0x3ae99c=[];if(_0x3a6b75[_0x4db9('0x43')][_0x4db9('0x65')]&&_0x3a6b75['body'][_0x4db9('0x65')]==='prev'){if(!_['isEmpty'](_0x3a6b75['body'][_0x4db9('0x66')])){_0x21598f['id']={'$in':_0x3a6b75[_0x4db9('0x43')][_0x4db9('0x66')]};}_0x3ae99c=[[_0x4db9('0x67'),_0x4db9('0x68')],[_0x4db9('0x69'),_0x4f7a35[0x0][_0x4db9('0x6a')]===_0x4db9('0x68')?'DESC':'ASC'],db['sequelize']['literal'](_0x4db9('0x6b')),['id',_0x4db9('0x6c')]];}else{if(!_[_0x4db9('0x6d')](_0x3a6b75[_0x4db9('0x43')][_0x4db9('0x66')])){_0x21598f['id']={'$notIn':_0x3a6b75[_0x4db9('0x43')][_0x4db9('0x66')]};}_0x3ae99c=[[_0x4db9('0x67'),'DESC'],[_0x4db9('0x69'),_0x4f7a35[0x0][_0x4db9('0x6a')]],db[_0x4db9('0x6e')]['literal'](_0x4db9('0x6f')),['id','ASC']];}return db['CmHopper']['findOne']({'attributes':['id','scheduledat',_0x4db9('0x70'),_0x4db9('0x71')],'where':_0x21598f,'order':_0x3ae99c,'transaction':_0x447a45,'lock':_0x447a45['LOCK'][_0x4db9('0x72')],'include':[{'model':db[_0x4db9('0x57')],'as':_0x4db9('0x73'),'attributes':_0x226023,'include':[{'model':db[_0x4db9('0x74')],'as':_0x4db9('0x75'),'attributes':['id','name']}]},{'model':db['CmList'],'as':'List','attributes':['id',_0x4db9('0x10')]},{'model':db['VoiceQueue'],'as':_0x4db9('0x76'),'attributes':['id','name',_0x4db9('0x77')]}]})[_0x4db9('0xd')](function(_0x2bac10){if(_0x2bac10){return _0x2bac10['update']({'UserId':_0x3a6b75[_0x4db9('0x50')]['id']},{'transaction':_0x447a45});}});});}})['then'](handleEntityNotFound(_0x16e0b3,null))['then'](respondWithResult(_0x16e0b3,null))[_0x4db9('0x3c')](handleError(_0x16e0b3,null));};exports[_0x4db9('0x78')]=function(_0x11b6f6,_0x584c77,_0x24f933){var _0x53395c=[];var _0x5667d2=_0x11b6f6[_0x4db9('0x3e')]['id'];var _0x28696c=_0x11b6f6[_0x4db9('0x50')]['id'];return db[_0x4db9('0x57')][_0x4db9('0x44')]()[_0x4db9('0xd')](function(_0x560da4){_0x53395c=_[_0x4db9('0x1a')](_0x560da4);return db[_0x4db9('0x6e')][_0x4db9('0x63')](function(_0xcef195){const _0x4f0f59={'id':_0x5667d2};return db[_0x4db9('0x12')][_0x4db9('0x79')]({'attributes':['id','scheduledat',_0x4db9('0x71')],'where':_0x4f0f59,'transaction':_0xcef195,'lock':_0xcef195[_0x4db9('0x7a')]['UPDATE'],'include':[{'model':db[_0x4db9('0x57')],'as':_0x4db9('0x73'),'attributes':_0x53395c,'include':[{'model':db[_0x4db9('0x74')],'as':_0x4db9('0x75'),'attributes':['id','name']}]},{'model':db[_0x4db9('0x7b')],'as':'List','attributes':['id',_0x4db9('0x10')]},{'model':db[_0x4db9('0x48')],'as':_0x4db9('0x76'),'attributes':['id',_0x4db9('0x10'),'dialActive']}]})['then'](function(_0x2d4c76){if(_0x2d4c76){return _0x2d4c76[_0x4db9('0xc')]({'UserId':_0x28696c},{'transaction':_0xcef195});}});});})[_0x4db9('0xd')](handleEntityNotFound(_0x584c77,null))[_0x4db9('0xd')](respondWithResult(_0x584c77,null))[_0x4db9('0x3c')](handleError(_0x584c77,null));};exports[_0x4db9('0x7c')]=function(_0x1ce451,_0x582a04){return _0x1ce451[_0x4db9('0x50')][_0x4db9('0x60')]({'where':{'type':_0x4db9('0x61'),'dialActive':!![],'dialMethod':_0x4db9('0x7d')},'attributes':['id'],'raw':!![]})['then'](function(_0x7a3928){if(_0x7a3928&&_0x7a3928[_0x4db9('0x30')]){return db[_0x4db9('0x12')][_0x4db9('0x9')]({'where':{'active':![],'recallme':![],'scheduledAt':{'$lte':moment()[_0x4db9('0x52')](_0x4db9('0x53'))},'VoiceQueueId':{'$in':_[_0x4db9('0x18')](_0x7a3928,'id')},'$or':[{'UserId':null},{'UserId':_0x1ce451[_0x4db9('0x50')]['id']}]}});}return 0x0;})[_0x4db9('0xd')](function(_0x147b3c){if(!_[_0x4db9('0x5b')](_0x147b3c)&&_[_0x4db9('0x7e')](_0x147b3c)){return _0x582a04[_0x4db9('0x5')](0xc8)[_0x4db9('0xb')]({'contacts':_0x147b3c});}else{logger[_0x4db9('0xf')]('CmHopper,\x20%s,\x20%s,\x20%s',_0x4db9('0x7c'),0x194,_0x4db9('0x7f'));_0x582a04[_0x4db9('0xe')](0x194);}})['catch'](handleError(_0x582a04,null));};exports['getTimezones']=function(_0x2418de,_0x497f4a){var _0x42d23d=shared['timezones'];var _0xfe32cb=[];_['map'](_0x42d23d,function(_0x497997){_0xfe32cb['push']({'id':_0x497997['name'],'name':_0x497997[_0x4db9('0x10')],'utcOffset':_0x497997[_0x4db9('0x80')]});});return _0x497f4a[_0x4db9('0x5')](0xc8)['json']({'tz':_0xfe32cb});};exports[_0x4db9('0x81')]=function(_0x48f60a,_0x328286){var _0x4d2073=shared['timezones'];var _0x142367={};if(!_[_0x4db9('0x5b')](_0x4d2073[_0x48f60a['body']['id']]))_0x142367=_0x4d2073[_0x48f60a['body']['id']];return _0x328286[_0x4db9('0x5')](0xc8)[_0x4db9('0xb')](_0x142367);};
\ No newline at end of file
index 632f30b..83d4b69 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0x4819=['request-promise','path','rimraf','../../config/environment','./cmHopper.attributes','CmHopper','cm_hopper','scheduledat','phone','priority','util','../../config/logger','api','moment','bluebird'];(function(_0x154e31,_0x17343f){var _0x283f0b=function(_0x243356){while(--_0x243356){_0x154e31['push'](_0x154e31['shift']());}};_0x283f0b(++_0x17343f);}(_0x4819,0xcd));var _0x9481=function(_0x5d6270,_0x83b57a){_0x5d6270=_0x5d6270-0x0;var _0x168f26=_0x4819[_0x5d6270];return _0x168f26;};'use strict';var _=require('lodash');var util=require(_0x9481('0x0'));var logger=require(_0x9481('0x1'))(_0x9481('0x2'));var moment=require(_0x9481('0x3'));var BPromise=require(_0x9481('0x4'));var rp=require(_0x9481('0x5'));var fs=require('fs');var path=require(_0x9481('0x6'));var rimraf=require(_0x9481('0x7'));var config=require(_0x9481('0x8'));var attributes=require(_0x9481('0x9'));module['exports']=function(_0x4d9e3a,_0x5def07){return _0x4d9e3a['define'](_0x9481('0xa'),attributes,{'tableName':_0x9481('0xb'),'paranoid':![],'indexes':[{'name':_0x9481('0xc'),'fields':[_0x9481('0xc')]},{'name':_0x9481('0xd'),'fields':['phone']},{'name':_0x9481('0xe'),'fields':['priority']}],'timestamps':!![]});};
\ No newline at end of file
index a6bafca..6f4a682 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0xe205=['YYYY-MM-DD\x20HH:mm:ss','\x20,\x201,\x20null','contactsRescheduled','GetContactRecallMe','GetCmHopperPreview','GetContactByPhone','findOne','phone','dialTimezone','DESC','getContactByPhone','ResetActiveCalls','availableAgentsIds','\x20MINUTE','NOW()','CmList','List','CmHopperHandlePreviewRecallNotifications','lodash','util','bluebird','../../config/logger','rpc','CmHopper','options','raw','where','attributes','limit','include','map','model','then','debug','GetCmHopper','stringify','catch','error','message','ShowCmHopper','info','CreateCmHopper','create','body','UpdateCmHopper','update','active','destroy','DestroyCmHopper','CmContact','describe','sequelize','transaction','findAll','order','UPDATE','Contact','keys','User','Agent','name','voicePause','length','UserId','push','includes','all','GetContactDialer\x20hopperId\x20[%s]\x20-\x20contactId\x20[%s]\x20-\x20active\x20status\x20[%s]','dataValues','GetContactDialer','MoveContactManagedDialer','CmHopperFinal','MoveContactManagedDialer\x20hopper\x20options\x20[%s]\x20active\x20status\x20[%s]','CountReScheduled','COUNT','literal','`scheduledat`\x20>=\x20','format','\x22%s\x22'];(function(_0x20a584,_0xe384a5){var _0x4b41a8=function(_0x2127c6){while(--_0x2127c6){_0x20a584['push'](_0x20a584['shift']());}};_0x4b41a8(++_0xe384a5);}(_0xe205,0xb0));var _0x5e20=function(_0x1ef446,_0x213fe7){_0x1ef446=_0x1ef446-0x0;var _0x4dbc00=_0xe205[_0x1ef446];return _0x4dbc00;};'use strict';var _=require(_0x5e20('0x0'));var util=require(_0x5e20('0x1'));var moment=require('moment');var BPromise=require(_0x5e20('0x2'));var db=require('../../mysqldb')['db'];var logger=require(_0x5e20('0x3'))(_0x5e20('0x4'));exports['GetCmHopper']=function(_0x927b30){var _0x7d2623=this;return new Promise(function(_0x559e4e,_0x35f7f5){return db[_0x5e20('0x5')]['findAll']({'raw':_0x927b30[_0x5e20('0x6')]?_0x927b30[_0x5e20('0x6')][_0x5e20('0x7')]===undefined?!![]:![]:!![],'where':_0x927b30[_0x5e20('0x6')]?_0x927b30['options'][_0x5e20('0x8')]||null:null,'attributes':_0x927b30[_0x5e20('0x6')]?_0x927b30['options'][_0x5e20('0x9')]||null:null,'limit':_0x927b30[_0x5e20('0x6')]?_0x927b30[_0x5e20('0x6')][_0x5e20('0xa')]||null:null,'include':_0x927b30[_0x5e20('0x6')]?_0x927b30[_0x5e20('0x6')][_0x5e20('0xb')]?_[_0x5e20('0xc')](_0x927b30[_0x5e20('0x6')][_0x5e20('0xb')],function(_0x17caee){return{'model':db[_0x17caee['model']],'as':_0x17caee['as'],'attributes':_0x17caee[_0x5e20('0x9')],'include':_0x17caee[_0x5e20('0xb')]?_[_0x5e20('0xc')](_0x17caee['include'],function(_0x2da69d){return{'model':db[_0x2da69d[_0x5e20('0xd')]],'as':_0x2da69d['as'],'attributes':_0x2da69d[_0x5e20('0x9')],'include':_0x2da69d[_0x5e20('0xb')]?_['map'](_0x2da69d[_0x5e20('0xb')],function(_0x3a92db){return{'model':db[_0x3a92db['model']],'as':_0x3a92db['as'],'attributes':_0x3a92db['attributes']};}):[]};}):[]};}):[]:[]})[_0x5e20('0xe')](function(_0x23971b){logger['info']('GetCmHopper',_0x927b30);logger[_0x5e20('0xf')](_0x5e20('0x10'),_0x927b30,JSON[_0x5e20('0x11')](_0x23971b));_0x559e4e(_0x23971b);})[_0x5e20('0x12')](function(_0x547204){logger[_0x5e20('0x13')]('GetCmHopper',_0x547204[_0x5e20('0x14')],_0x927b30);_0x35f7f5(_0x7d2623[_0x5e20('0x13')](0x1f4,_0x547204[_0x5e20('0x14')]));});});};exports[_0x5e20('0x15')]=function(_0x483f47){var _0x1f73e8=this;return new Promise(function(_0x1f3ad3,_0x50772c){return db[_0x5e20('0x5')]['find']({'raw':_0x483f47[_0x5e20('0x6')]?_0x483f47[_0x5e20('0x6')][_0x5e20('0x7')]===undefined?!![]:![]:!![],'where':_0x483f47[_0x5e20('0x6')]?_0x483f47['options'][_0x5e20('0x8')]||null:null,'attributes':_0x483f47[_0x5e20('0x6')]?_0x483f47[_0x5e20('0x6')][_0x5e20('0x9')]||null:null,'include':_0x483f47[_0x5e20('0x6')]?_0x483f47['options']['include']?_['map'](_0x483f47[_0x5e20('0x6')][_0x5e20('0xb')],function(_0x55d75d){return{'model':db[_0x55d75d[_0x5e20('0xd')]],'as':_0x55d75d['as'],'attributes':_0x55d75d[_0x5e20('0x9')],'include':_0x55d75d[_0x5e20('0xb')]?_[_0x5e20('0xc')](_0x55d75d[_0x5e20('0xb')],function(_0x29a9ef){return{'model':db[_0x29a9ef[_0x5e20('0xd')]],'as':_0x29a9ef['as'],'attributes':_0x29a9ef['attributes'],'include':_0x29a9ef['include']?_[_0x5e20('0xc')](_0x29a9ef['include'],function(_0x56d496){return{'model':db[_0x56d496[_0x5e20('0xd')]],'as':_0x56d496['as'],'attributes':_0x56d496[_0x5e20('0x9')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x14b671){logger[_0x5e20('0x16')](_0x5e20('0x15'),_0x483f47);logger['debug'](_0x5e20('0x15'),_0x483f47,JSON[_0x5e20('0x11')](_0x14b671));_0x1f3ad3(_0x14b671);})[_0x5e20('0x12')](function(_0x660c67){logger[_0x5e20('0x13')]('ShowCmHopper',_0x660c67[_0x5e20('0x14')],_0x483f47);_0x50772c(_0x1f73e8[_0x5e20('0x13')](0x1f4,_0x660c67['message']));});});};exports[_0x5e20('0x17')]=function(_0x4f05d1){var _0x20e12b=this;return new Promise(function(_0x22e750,_0x102540){return db['CmHopper'][_0x5e20('0x18')](_0x4f05d1[_0x5e20('0x19')],{'raw':_0x4f05d1['options']?_0x4f05d1[_0x5e20('0x6')]['raw']===undefined?!![]:![]:!![]})[_0x5e20('0xe')](function(_0x139d9a){logger['info'](_0x5e20('0x17'),_0x4f05d1);logger[_0x5e20('0xf')](_0x5e20('0x17'),_0x4f05d1,JSON[_0x5e20('0x11')](_0x139d9a));_0x22e750(_0x139d9a);})[_0x5e20('0x12')](function(_0xdb3647){logger['error'](_0x5e20('0x17'),_0xdb3647['message'],_0x4f05d1);_0x102540(_0x20e12b[_0x5e20('0x13')](0x1f4,_0xdb3647[_0x5e20('0x14')]));});});};exports[_0x5e20('0x1a')]=function(_0x20648b){var _0x230e58=this;return new Promise(function(_0x3f85b6,_0x32371a){return db[_0x5e20('0x5')][_0x5e20('0x1b')](_0x20648b[_0x5e20('0x19')],{'raw':_0x20648b[_0x5e20('0x6')]?_0x20648b[_0x5e20('0x6')][_0x5e20('0x7')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x20648b['options']?_0x20648b[_0x5e20('0x6')][_0x5e20('0x8')]||null:null,'attributes':_0x20648b['options']?_0x20648b[_0x5e20('0x6')][_0x5e20('0x9')]||null:null,'limit':_0x20648b[_0x5e20('0x6')]?_0x20648b[_0x5e20('0x6')]['limit']||null:null})[_0x5e20('0xe')](function(_0x5724d5){logger['info'](_0x5e20('0x1a'),_0x20648b);logger[_0x5e20('0x16')]('UpdateCmHopper\x20hopper\x20options\x20[%s]\x20active\x20status\x20[%s]',JSON['stringify'](_0x20648b[_0x5e20('0x6')][_0x5e20('0x8')]),_0x20648b[_0x5e20('0x19')][_0x5e20('0x1c')]);logger[_0x5e20('0xf')](_0x5e20('0x1a'),_0x20648b,JSON[_0x5e20('0x11')](_0x5724d5));_0x3f85b6(_0x5724d5);})[_0x5e20('0x12')](function(_0x876ffc){logger['error'](_0x5e20('0x1a'),_0x876ffc[_0x5e20('0x14')],_0x20648b);_0x32371a(_0x230e58[_0x5e20('0x13')](0x1f4,_0x876ffc['message']));});});};exports['DestroyCmHopper']=function(_0x1db513){var _0x12b4e7=this;return new Promise(function(_0x1ac660,_0x849ed5){return db[_0x5e20('0x5')][_0x5e20('0x1d')]({'where':_0x1db513[_0x5e20('0x6')]?_0x1db513[_0x5e20('0x6')]['where']||null:null})[_0x5e20('0xe')](function(_0xd33f59){logger[_0x5e20('0x16')](_0x5e20('0x1e'),_0x1db513);logger[_0x5e20('0xf')](_0x5e20('0x1e'),_0x1db513,JSON[_0x5e20('0x11')](_0xd33f59));_0x1ac660(_0xd33f59);})['catch'](function(_0x2e251c){logger[_0x5e20('0x13')]('DestroyCmHopper',_0x2e251c['message'],_0x1db513);_0x849ed5(_0x12b4e7[_0x5e20('0x13')](0x1f4,_0x2e251c[_0x5e20('0x14')]));});});};exports['GetContactDialer']=function(_0x1bd167){var _0x24ab70=this;return new Promise(function(_0x381870,_0x1dba6f){return db[_0x5e20('0x1f')][_0x5e20('0x20')]()[_0x5e20('0xe')](function(_0x2120ee){return db[_0x5e20('0x21')][_0x5e20('0x22')](function(_0xa9e277){return db[_0x5e20('0x5')][_0x5e20('0x23')]({'where':_0x1bd167[_0x5e20('0x6')]?_0x1bd167[_0x5e20('0x6')][_0x5e20('0x8')]||null:null,'attributes':_0x1bd167['options']?_0x1bd167[_0x5e20('0x6')][_0x5e20('0x9')]||null:null,'limit':_0x1bd167[_0x5e20('0x6')]?_0x1bd167[_0x5e20('0x6')][_0x5e20('0xa')]||null:null,'order':_0x1bd167[_0x5e20('0x6')]?_0x1bd167['options'][_0x5e20('0x24')]||null:null,'transaction':_0xa9e277,'lock':_0xa9e277['LOCK'][_0x5e20('0x25')],'include':[{'model':db[_0x5e20('0x1f')],'as':_0x5e20('0x26'),'attributes':_[_0x5e20('0x27')](_0x2120ee)},{'model':db[_0x5e20('0x28')],'as':_0x5e20('0x29'),'attributes':['id',_0x5e20('0x2a'),_0x5e20('0x2b')]}]})[_0x5e20('0xe')](function(_0x2bea24){var _0xd08fc9=[];var _0x44e130=[];for(var _0xd81e40=0x0;_0xd81e40<_0x2bea24[_0x5e20('0x2c')];_0xd81e40+=0x1){var _0x286529=_0x2bea24[_0xd81e40][_0x5e20('0x2d')];if(_0x286529===null){_0xd08fc9[_0x5e20('0x2e')](_0x2bea24[_0xd81e40][_0x5e20('0x1b')](_0x1bd167[_0x5e20('0x19')],{'transaction':_0xa9e277}));}else if(!_0x44e130[_0x5e20('0x2f')](_0x286529)){_0x44e130[_0x5e20('0x2e')](_0x286529);_0xd08fc9['push'](_0x2bea24[_0xd81e40][_0x5e20('0x1b')](_0x1bd167['body'],{'transaction':_0xa9e277}));}}return BPromise[_0x5e20('0x30')](_0xd08fc9);});})[_0x5e20('0xe')](function(_0x37d654){logger[_0x5e20('0x16')]('GetContactDialer',_0x1bd167);if(_0x37d654[_0x5e20('0x2c')]>0x0){logger[_0x5e20('0x16')](_0x5e20('0x31'),_0x37d654[0x0]['dataValues']['id'],_0x37d654[0x0][_0x5e20('0x32')]['ContactId'],_0x37d654[0x0][_0x5e20('0x32')][_0x5e20('0x1c')]);}logger[_0x5e20('0xf')](_0x5e20('0x33'),_0x1bd167,JSON[_0x5e20('0x11')](_0x37d654));_0x381870(_0x37d654);})[_0x5e20('0x12')](function(_0x396ef5){logger[_0x5e20('0x13')]('GetContactDialer',_0x396ef5['message'],_0x1bd167);_0x1dba6f(_0x24ab70[_0x5e20('0x13')](0x1f4,_0x396ef5[_0x5e20('0x14')]));});});});};exports[_0x5e20('0x34')]=function(_0x4450f4){var _0x3c03ad=this;return new Promise(function(_0x5c277c,_0x277a26){return db['sequelize'][_0x5e20('0x22')](function(_0x408ace){return db[_0x5e20('0x35')][_0x5e20('0x18')](_0x4450f4[_0x5e20('0x19')],{'raw':_0x4450f4[_0x5e20('0x6')]?_0x4450f4[_0x5e20('0x6')][_0x5e20('0x7')]===undefined?!![]:![]:!![],'transaction':_0x408ace})['then'](function(){logger[_0x5e20('0x16')](_0x5e20('0x36'),JSON[_0x5e20('0x11')](_0x4450f4[_0x5e20('0x6')]['where']),_0x4450f4[_0x5e20('0x6')][_0x5e20('0x8')][_0x5e20('0x1c')]);return db[_0x5e20('0x5')]['destroy']({'where':_0x4450f4[_0x5e20('0x6')]?_0x4450f4[_0x5e20('0x6')]['where']||null:null,'transaction':_0x408ace});});})[_0x5e20('0xe')](function(_0x462ae2){logger[_0x5e20('0x16')](_0x5e20('0x34'),_0x4450f4);logger[_0x5e20('0xf')](_0x5e20('0x34'),_0x4450f4,JSON['stringify'](_0x462ae2));_0x5c277c(_0x462ae2);})[_0x5e20('0x12')](function(_0x4facaf){logger[_0x5e20('0x13')]('MoveContactManagedDialer',_0x4facaf['message'],_0x4450f4);_0x277a26(_0x3c03ad[_0x5e20('0x13')](0x1f4,_0x4facaf['message']));});});};exports[_0x5e20('0x37')]=function(_0x215c5b){var _0x1e5000=this;return new Promise(function(_0x1caed9,_0x2d7e3a){return db[_0x5e20('0x5')][_0x5e20('0x23')]({'raw':_0x215c5b['options']?_0x215c5b['options']['raw']===undefined?!![]:![]:!![],'where':_0x215c5b[_0x5e20('0x6')]?_0x215c5b[_0x5e20('0x6')]['where']||null:null,'attributes':[[db[_0x5e20('0x21')]['fn'](_0x5e20('0x38'),db[_0x5e20('0x21')]['fn']('IF',db[_0x5e20('0x21')][_0x5e20('0x39')](_0x5e20('0x3a')+util[_0x5e20('0x3b')](_0x5e20('0x3c'),moment()[_0x5e20('0x3b')](_0x5e20('0x3d')))+_0x5e20('0x3e')))),_0x5e20('0x3f')]]})[_0x5e20('0xe')](function(_0x2e2bbb){logger[_0x5e20('0x16')](_0x5e20('0x37'),_0x215c5b);logger[_0x5e20('0xf')]('CountReScheduled',_0x215c5b,JSON[_0x5e20('0x11')](_0x2e2bbb));_0x1caed9(_0x2e2bbb);})[_0x5e20('0x12')](function(_0x493b44){logger[_0x5e20('0x13')]('CountReScheduled',_0x493b44['message'],_0x215c5b);_0x2d7e3a(_0x1e5000[_0x5e20('0x13')](0x1f4,_0x493b44[_0x5e20('0x14')]));});});};exports[_0x5e20('0x40')]=function(_0x5b3438){var _0x4409b3=this;return new Promise(function(_0x18b238,_0x45267c){return db[_0x5e20('0x1f')][_0x5e20('0x20')]()[_0x5e20('0xe')](function(){return db[_0x5e20('0x21')][_0x5e20('0x22')](function(_0x9e1173){return db[_0x5e20('0x5')][_0x5e20('0x23')]({'where':_0x5b3438[_0x5e20('0x6')]?_0x5b3438[_0x5e20('0x6')]['where']||null:null,'attributes':_0x5b3438[_0x5e20('0x6')]?_0x5b3438[_0x5e20('0x6')][_0x5e20('0x9')]||null:null,'limit':0x1,'order':_0x5b3438['options']?_0x5b3438[_0x5e20('0x6')][_0x5e20('0x24')]||null:null,'group':db[_0x5e20('0x5')][_0x5e20('0x2d')],'transaction':_0x9e1173,'lock':_0x9e1173['LOCK'][_0x5e20('0x25')],'include':_0x5b3438[_0x5e20('0x6')]?_0x5b3438[_0x5e20('0x6')]['include']?_[_0x5e20('0xc')](_0x5b3438[_0x5e20('0x6')][_0x5e20('0xb')],function(_0x18f9d6){return{'model':db[_0x18f9d6[_0x5e20('0xd')]],'as':_0x18f9d6['as'],'attributes':_0x18f9d6['attributes'],'include':_0x18f9d6[_0x5e20('0xb')]?_[_0x5e20('0xc')](_0x18f9d6['include'],function(_0x20c674){return{'model':db[_0x20c674[_0x5e20('0xd')]],'as':_0x20c674['as'],'attributes':_0x20c674['attributes'],'include':_0x20c674[_0x5e20('0xb')]?_[_0x5e20('0xc')](_0x20c674[_0x5e20('0xb')],function(_0x208664){return{'model':db[_0x208664['model']],'as':_0x208664['as'],'attributes':_0x208664[_0x5e20('0x9')]};}):[]};}):[]};}):[]:[]})[_0x5e20('0xe')](function(_0x52072d){var _0x21da31=[];for(var _0x5e2592=0x0;_0x5e2592<_0x52072d[_0x5e20('0x2c')];_0x5e2592+=0x1){_0x21da31[_0x5e20('0x2e')](_0x52072d[_0x5e2592]['update'](_0x5b3438[_0x5e20('0x19')],{'transaction':_0x9e1173}));}return BPromise[_0x5e20('0x30')](_0x21da31);});})['then'](function(_0x5c7a00){logger[_0x5e20('0x16')](_0x5e20('0x40'),_0x5b3438);logger[_0x5e20('0xf')](_0x5e20('0x40'),_0x5b3438,JSON['stringify'](_0x5c7a00));_0x18b238(_0x5c7a00);})[_0x5e20('0x12')](function(_0x1d8553){logger[_0x5e20('0x13')](_0x5e20('0x40'),_0x1d8553[_0x5e20('0x14')],_0x5b3438);_0x45267c(_0x4409b3['error'](0x1f4,_0x1d8553[_0x5e20('0x14')]));});});});};exports[_0x5e20('0x41')]=function(_0x2f9775){var _0x1f414b=this;return new Promise(function(_0x16db85,_0xf5d122){db['CmContact'][_0x5e20('0x20')]()[_0x5e20('0xe')](function(_0x2b5a5a){return db['CmHopper'][_0x5e20('0x23')]({'raw':_0x2f9775[_0x5e20('0x6')]?_0x2f9775['options'][_0x5e20('0x7')]===undefined?!![]:![]:!![],'where':_0x2f9775[_0x5e20('0x6')]?_0x2f9775['options']['where']||null:null,'attributes':_0x2f9775[_0x5e20('0x6')]?_0x2f9775[_0x5e20('0x6')][_0x5e20('0x9')]||null:null,'limit':_0x2f9775[_0x5e20('0x6')]?_0x2f9775[_0x5e20('0x6')][_0x5e20('0xa')]||null:null,'include':_0x2f9775[_0x5e20('0x6')]?_0x2f9775['options'][_0x5e20('0xb')]?_[_0x5e20('0xc')](_0x2f9775[_0x5e20('0x6')][_0x5e20('0xb')],function(_0x81377a){return{'model':db[_0x81377a[_0x5e20('0xd')]],'as':_0x81377a['as'],'attributes':_0x81377a['as']===_0x5e20('0x26')?_[_0x5e20('0x27')](_0x2b5a5a):_0x81377a[_0x5e20('0x9')],'include':_0x81377a[_0x5e20('0xb')]?_[_0x5e20('0xc')](_0x81377a[_0x5e20('0xb')],function(_0x777aa0){return{'model':db[_0x777aa0[_0x5e20('0xd')]],'as':_0x777aa0['as'],'attributes':_0x777aa0[_0x5e20('0x9')],'include':_0x777aa0['include']?_['map'](_0x777aa0[_0x5e20('0xb')],function(_0x1353df){return{'model':db[_0x1353df['model']],'as':_0x1353df['as'],'attributes':_0x1353df[_0x5e20('0x9')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x2b805a){logger[_0x5e20('0x16')]('GetCmHopper',_0x2f9775);logger[_0x5e20('0xf')](_0x5e20('0x10'),_0x2f9775,JSON[_0x5e20('0x11')](_0x2b805a));_0x16db85(_0x2b805a);})[_0x5e20('0x12')](function(_0x4d337d){logger[_0x5e20('0x13')]('GetCmHopper',_0x4d337d['message'],_0x2f9775);_0xf5d122(_0x1f414b[_0x5e20('0x13')](0x1f4,_0x4d337d['message']));});});});};exports[_0x5e20('0x42')]=function(_0xd4f9ff){var _0x268560=this;return new Promise(function(_0x46c09b,_0x352768){return db[_0x5e20('0x1f')][_0x5e20('0x43')]({'raw':!![],'where':{'phone':_0xd4f9ff['options'][_0x5e20('0x8')][_0x5e20('0x44')]},'attributes':['id',_0x5e20('0x45')],'order':[['id',_0x5e20('0x46')]]})[_0x5e20('0xe')](function(_0x5b455e){logger[_0x5e20('0x16')](_0x5e20('0x47'),_0xd4f9ff);logger['debug'](_0x5e20('0x47'),_0xd4f9ff,JSON[_0x5e20('0x11')](_0x5b455e));_0x46c09b(_0x5b455e);})[_0x5e20('0x12')](function(_0x2b181e){logger[_0x5e20('0x13')](_0x5e20('0x47'),_0x2b181e[_0x5e20('0x14')],_0xd4f9ff);_0x352768(_0x268560[_0x5e20('0x13')](0x1f4,_0x2b181e[_0x5e20('0x14')]));});});};exports[_0x5e20('0x48')]=function(_0xced67f){var _0x3b55cf=this;return new Promise(function(_0x23a127,_0x27ed75){return db['sequelize'][_0x5e20('0x22')](function(_0xb58aff){var _0x482400=_0xced67f[_0x5e20('0x6')]&&_0xced67f[_0x5e20('0x6')][_0x5e20('0x8')]?_0xced67f[_0x5e20('0x6')]['where']:{};return db[_0x5e20('0x5')]['update'](_0xced67f[_0x5e20('0x19')],{'where':_0x482400,'transaction':_0xb58aff})[_0x5e20('0xe')](function(_0x35c56b){logger[_0x5e20('0x16')]('ResetActiveCalls',_0xced67f);logger[_0x5e20('0xf')]('ResetActiveCalls',_0xced67f,JSON[_0x5e20('0x11')](_0x35c56b));_0x23a127(_0x35c56b);})[_0x5e20('0x12')](function(_0x2b8352){logger[_0x5e20('0x13')](_0x5e20('0x48'),_0x2b8352[_0x5e20('0x14')],_0xced67f);_0x27ed75(_0x3b55cf['error'](0x1f4,_0x2b8352[_0x5e20('0x14')]));});});});};exports['CmHopperHandlePreviewRecallNotifications']=function(_0x3953be){var _0x370fea=this;var _0x32ec0a=_0x3953be[_0x5e20('0x19')][_0x5e20('0x8')]['voiceQueueIds'];var _0x1e57fa=_0x3953be['body']['where']['interval'];var _0x3d879b=_0x3953be[_0x5e20('0x19')][_0x5e20('0x8')][_0x5e20('0x49')];return new Promise(function(_0x5a61a7,_0x1de1b){return db[_0x5e20('0x5')]['findAll']({'where':{'voiceQueueId':{'$in':_0x32ec0a},'recallme':0x1,'active':0x0,'recallmeNotifiedDate':{'$eq':null},'scheduledat':{'$and':{'$lte':db['sequelize'][_0x5e20('0x39')]('NOW()\x20+\x20INTERVAL\x20'+_0x1e57fa+_0x5e20('0x4a')),'$gt':db['sequelize'][_0x5e20('0x39')](_0x5e20('0x4b'))}},'UserId':{'$in':_0x3d879b}},'include':[{'model':db[_0x5e20('0x1f')],'as':_0x5e20('0x26')},{'model':db[_0x5e20('0x28')],'as':_0x5e20('0x29'),'attributes':['id',_0x5e20('0x2a'),_0x5e20('0x2b')]},{'model':db[_0x5e20('0x4c')],'as':_0x5e20('0x4d')}]})[_0x5e20('0xe')](function(_0x1ce98f){if(_0x1ce98f[_0x5e20('0x2c')]>0x0){return db[_0x5e20('0x21')][_0x5e20('0x22')](function(_0x570da9){return db[_0x5e20('0x5')]['update']({'recallmeNotifiedDate':db[_0x5e20('0x21')]['literal']('NOW()')},{'where':{'id':{'$in':_[_0x5e20('0xc')](_0x1ce98f,'id')}},'transaction':_0x570da9})['then'](function(){_0x5a61a7(_0x1ce98f);})[_0x5e20('0x12')](function(_0x4099eb){logger[_0x5e20('0x13')]('CmHopperHandlePreviewRecallNotifications',_0x4099eb['message'],_0x3953be);_0x1de1b(_0x370fea[_0x5e20('0x13')](0x1f4,_0x4099eb[_0x5e20('0x14')]));});})[_0x5e20('0x12')](function(_0x5ac588){logger['error'](_0x5e20('0x4e'),_0x5ac588[_0x5e20('0x14')],_0x3953be);_0x1de1b(_0x370fea[_0x5e20('0x13')](0x1f4,_0x5ac588[_0x5e20('0x14')]));});}else{_0x5a61a7(_0x1ce98f);}});});};
\ No newline at end of file
index b2a88ce..b68215b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0xcd9c=['describe','/opencontacts','getOpenContacts','/timezones','getTimezones','/:id','show','/:id/previewrecall','getPreviewRecall','post','create','getPreview','getTimezone','update','exports','Router','../../components/auth/service','./cmHopper.controller','get','index','/describe','isAuthenticated'];(function(_0x1ebaf8,_0x7d077c){var _0x23e78a=function(_0x181b58){while(--_0x181b58){_0x1ebaf8['push'](_0x1ebaf8['shift']());}};_0x23e78a(++_0x7d077c);}(_0xcd9c,0x16f));var _0xccd9=function(_0x3790e9,_0x4946f3){_0x3790e9=_0x3790e9-0x0;var _0x35f66d=_0xcd9c[_0x3790e9];return _0x35f66d;};'use strict';var express=require('express');var router=express[_0xccd9('0x0')]();var auth=require(_0xccd9('0x1'));var controller=require(_0xccd9('0x2'));router[_0xccd9('0x3')]('/',auth['isAuthenticated'](),controller[_0xccd9('0x4')]);router['get'](_0xccd9('0x5'),auth[_0xccd9('0x6')](),controller[_0xccd9('0x7')]);router[_0xccd9('0x3')](_0xccd9('0x8'),auth[_0xccd9('0x6')](),controller[_0xccd9('0x9')]);router[_0xccd9('0x3')](_0xccd9('0xa'),auth[_0xccd9('0x6')](),controller[_0xccd9('0xb')]);router[_0xccd9('0x3')](_0xccd9('0xc'),auth[_0xccd9('0x6')](),controller[_0xccd9('0xd')]);router[_0xccd9('0x3')](_0xccd9('0xe'),auth[_0xccd9('0x6')](),controller[_0xccd9('0xf')]);router[_0xccd9('0x10')]('/',auth[_0xccd9('0x6')](),controller[_0xccd9('0x11')]);router['post']('/preview',auth['isAuthenticated'](),controller[_0xccd9('0x12')]);router['post']('/timezone',auth[_0xccd9('0x6')](),controller[_0xccd9('0x13')]);router['put'](_0xccd9('0xc'),auth['isAuthenticated'](),controller[_0xccd9('0x14')]);router['delete']('/:id',auth['isAuthenticated'](),controller['destroy']);module[_0xccd9('0x15')]=router;
\ No newline at end of file
index 3d29549..6556094 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0x7f4c=['INTEGER','DATE','format','YYYY-MM-DD\x20HH:mm:ss','moment','sequelize'];(function(_0x14add3,_0x13ce8d){var _0x4a174f=function(_0x2b3ed7){while(--_0x2b3ed7){_0x14add3['push'](_0x14add3['shift']());}};_0x4a174f(++_0x13ce8d);}(_0x7f4c,0x6a));var _0xc7f4=function(_0x2610e0,_0x1e5c94){_0x2610e0=_0x2610e0-0x0;var _0x4dde05=_0x7f4c[_0x2610e0];return _0x4dde05;};'use strict';var moment=require(_0xc7f4('0x0'));var Sequelize=require(_0xc7f4('0x1'));module['exports']={'CmHopperId':{'type':Sequelize['INTEGER']},'phone':{'type':Sequelize['STRING'],'allowNull':![]},'OrderBy':{'type':Sequelize[_0xc7f4('0x2')],'defaultValue':0x0},'scheduledat':{'type':Sequelize[_0xc7f4('0x3')],'defaultValue':moment()[_0xc7f4('0x4')](_0xc7f4('0x5'))},'countbusyretry':{'type':Sequelize[_0xc7f4('0x2')],'defaultValue':0x0},'countcongestionretry':{'type':Sequelize[_0xc7f4('0x2')],'defaultValue':0x0},'countnoanswerretry':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'countnosuchnumberretry':{'type':Sequelize[_0xc7f4('0x2')],'defaultValue':0x0},'countdropretry':{'type':Sequelize[_0xc7f4('0x2')],'defaultValue':0x0},'countabandonedretry':{'type':Sequelize[_0xc7f4('0x2')],'defaultValue':0x0},'countmachineretry':{'type':Sequelize[_0xc7f4('0x2')],'defaultValue':0x0},'countagentrejectretry':{'type':Sequelize[_0xc7f4('0x2')],'defaultValue':0x0}};
\ No newline at end of file
index 8ea9eac..b791ee4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0x8b20=['undefined','limit','count','set','apply','reject','save','then','destroy','sendStatus','error','name','send','map','CmHopperAdditionalPhone','rawAttributes','fieldName','key','model','query','keys','filters','attributes','intersection','fields','length','hasOwnProperty','order','sort','where','pick','merge','type','VIRTUAL','filter','options','includeAll','include','findAll','rows','catch','params','find','create','body','get','role','user','CmHopperAdditionalPhones','UserProfileSection','userProfileId','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','eml-format','rimraf','fast-json-patch','request-promise','bluebird','mustache','util','path','sox','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','to-csv','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','../../config/logger','api','../../config/utils','../../config/license/util','../../mysqldb','status','end','json','offset'];(function(_0x14add3,_0x13ce8d){var _0x4a174f=function(_0x2b3ed7){while(--_0x2b3ed7){_0x14add3['push'](_0x14add3['shift']());}};_0x4a174f(++_0x13ce8d);}(_0x8b20,0x12b));var _0x08b2=function(_0x2d8ccd,_0x2e6b76){_0x2d8ccd=_0x2d8ccd-0x0;var _0xfdf7b6=_0x8b20[_0x2d8ccd];return _0xfdf7b6;};'use strict';var emlformat=require(_0x08b2('0x0'));var rimraf=require(_0x08b2('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0x08b2('0x2'));var rp=require(_0x08b2('0x3'));var moment=require('moment');var BPromise=require(_0x08b2('0x4'));var Mustache=require(_0x08b2('0x5'));var util=require(_0x08b2('0x6'));var path=require(_0x08b2('0x7'));var sox=require(_0x08b2('0x8'));var csv=require('to-csv');var ejs=require(_0x08b2('0x9'));var fs=require('fs');var fs_extra=require(_0x08b2('0xa'));var _=require(_0x08b2('0xb'));var squel=require(_0x08b2('0xc'));var crypto=require(_0x08b2('0xd'));var jsforce=require(_0x08b2('0xe'));var deskjs=require(_0x08b2('0xf'));var toCsv=require(_0x08b2('0x10'));var querystring=require('querystring');var Papa=require('papaparse');var Redis=require(_0x08b2('0x11'));var authService=require(_0x08b2('0x12'));var qs=require('../../components/parsers/qs');var as=require(_0x08b2('0x13'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x08b2('0x14'))(_0x08b2('0x15'));var utils=require(_0x08b2('0x16'));var config=require('../../config/environment');var licenseUtil=require(_0x08b2('0x17'));var db=require(_0x08b2('0x18'))['db'];function respondWithStatusCode(_0x49114d,_0x11434f){_0x11434f=_0x11434f||0xcc;return function(_0x257224){if(_0x257224){return _0x49114d['sendStatus'](_0x11434f);}return _0x49114d[_0x08b2('0x19')](_0x11434f)[_0x08b2('0x1a')]();};}function respondWithResult(_0x11beac,_0xae28e3){_0xae28e3=_0xae28e3||0xc8;return function(_0x159e58){if(_0x159e58){return _0x11beac[_0x08b2('0x19')](_0xae28e3)[_0x08b2('0x1b')](_0x159e58);}};}function respondWithFilteredResult(_0x1f0f8b,_0x2add81){return function(_0x8a71c6){if(_0x8a71c6){var _0x1cbee9=typeof _0x2add81[_0x08b2('0x1c')]===_0x08b2('0x1d')&&typeof _0x2add81[_0x08b2('0x1e')]===_0x08b2('0x1d');var _0x36ada1=_0x8a71c6[_0x08b2('0x1f')];var _0x24c966=_0x1cbee9?0x0:_0x2add81['offset'];var _0x562ef5=_0x1cbee9?_0x8a71c6[_0x08b2('0x1f')]:_0x2add81[_0x08b2('0x1c')]+_0x2add81[_0x08b2('0x1e')];var _0x293044;if(_0x562ef5>=_0x36ada1){_0x562ef5=_0x36ada1;_0x293044=0xc8;}else{_0x293044=0xce;}_0x1f0f8b[_0x08b2('0x19')](_0x293044);return _0x1f0f8b[_0x08b2('0x20')]('Content-Range',_0x24c966+'-'+_0x562ef5+'/'+_0x36ada1)['json'](_0x8a71c6);}return null;};}function patchUpdates(_0x6d8070){return function(_0x5e6c86){try{jsonpatch[_0x08b2('0x21')](_0x5e6c86,_0x6d8070,!![]);}catch(_0x11944c){return BPromise[_0x08b2('0x22')](_0x11944c);}return _0x5e6c86[_0x08b2('0x23')]();};}function saveUpdates(_0x280306,_0x2178c3){return function(_0x258476){if(_0x258476){return _0x258476['update'](_0x280306)[_0x08b2('0x24')](function(_0x2b65ea){return _0x2b65ea;});}return null;};}function removeEntity(_0x2bf705,_0x5d209b){return function(_0x33ffee){if(_0x33ffee){return _0x33ffee[_0x08b2('0x25')]()[_0x08b2('0x24')](function(){var _0x38c08a=_0x33ffee['get']({'plain':!![]});var _0x5ac0f1='CmHopperAdditionalPhones';return db['UserProfileResource'][_0x08b2('0x25')]({'where':{'type':_0x5ac0f1,'resourceId':_0x38c08a['id']}})['then'](function(){return _0x33ffee;});})[_0x08b2('0x24')](function(){_0x2bf705['status'](0xcc)['end']();});}};}function handleEntityNotFound(_0x5a8639,_0x599b71){return function(_0x17614f){if(!_0x17614f){_0x5a8639[_0x08b2('0x26')](0x194);}return _0x17614f;};}function handleError(_0x471ae4,_0x1fab5c){_0x1fab5c=_0x1fab5c||0x1f4;return function(_0x29cd40){logger[_0x08b2('0x27')](_0x29cd40['stack']);if(_0x29cd40[_0x08b2('0x28')]){delete _0x29cd40[_0x08b2('0x28')];}_0x471ae4[_0x08b2('0x19')](_0x1fab5c)[_0x08b2('0x29')](_0x29cd40);};}exports['index']=function(_0x287ba0,_0x2666b2){var _0x234b3a={},_0x2e37d0={},_0x1d184c={'count':0x0,'rows':[]};var _0x3e2701=_[_0x08b2('0x2a')](db[_0x08b2('0x2b')][_0x08b2('0x2c')],function(_0x46cf1a){return{'name':_0x46cf1a[_0x08b2('0x2d')],'type':_0x46cf1a['type'][_0x08b2('0x2e')]};});_0x2e37d0[_0x08b2('0x2f')]=_[_0x08b2('0x2a')](_0x3e2701,_0x08b2('0x28'));_0x2e37d0[_0x08b2('0x30')]=_[_0x08b2('0x31')](_0x287ba0['query']);_0x2e37d0[_0x08b2('0x32')]=_['intersection'](_0x2e37d0[_0x08b2('0x2f')],_0x2e37d0['query']);_0x234b3a[_0x08b2('0x33')]=_[_0x08b2('0x34')](_0x2e37d0[_0x08b2('0x2f')],qs[_0x08b2('0x35')](_0x287ba0['query'][_0x08b2('0x35')]));_0x234b3a[_0x08b2('0x33')]=_0x234b3a[_0x08b2('0x33')][_0x08b2('0x36')]?_0x234b3a[_0x08b2('0x33')]:_0x2e37d0[_0x08b2('0x2f')];if(!_0x287ba0[_0x08b2('0x30')][_0x08b2('0x37')]('nolimit')){_0x234b3a[_0x08b2('0x1e')]=qs[_0x08b2('0x1e')](_0x287ba0['query']['limit']);_0x234b3a['offset']=qs[_0x08b2('0x1c')](_0x287ba0[_0x08b2('0x30')][_0x08b2('0x1c')]);}_0x234b3a[_0x08b2('0x38')]=qs[_0x08b2('0x39')](_0x287ba0['query'][_0x08b2('0x39')]);_0x234b3a[_0x08b2('0x3a')]=qs[_0x08b2('0x32')](_[_0x08b2('0x3b')](_0x287ba0[_0x08b2('0x30')],_0x2e37d0[_0x08b2('0x32')]),_0x3e2701);if(_0x287ba0['query']['filter']){_0x234b3a[_0x08b2('0x3a')]=_[_0x08b2('0x3c')](_0x234b3a[_0x08b2('0x3a')],{'$or':_[_0x08b2('0x2a')](_0x3e2701,function(_0x56054d){if(_0x56054d[_0x08b2('0x3d')]!==_0x08b2('0x3e')){var _0x18b162={};_0x18b162[_0x56054d[_0x08b2('0x28')]]={'$like':'%'+_0x287ba0[_0x08b2('0x30')][_0x08b2('0x3f')]+'%'};return _0x18b162;}})});}_0x234b3a=_[_0x08b2('0x3c')]({},_0x234b3a,_0x287ba0[_0x08b2('0x40')]);var _0x4f6910={'where':_0x234b3a[_0x08b2('0x3a')]};return db[_0x08b2('0x2b')][_0x08b2('0x1f')](_0x4f6910)[_0x08b2('0x24')](function(_0x5d2d2a){_0x1d184c[_0x08b2('0x1f')]=_0x5d2d2a;if(_0x287ba0[_0x08b2('0x30')][_0x08b2('0x41')]){_0x234b3a[_0x08b2('0x42')]=[{'all':!![]}];}return db[_0x08b2('0x2b')][_0x08b2('0x43')](_0x234b3a);})['then'](function(_0x4f73cb){_0x1d184c[_0x08b2('0x44')]=_0x4f73cb;return _0x1d184c;})[_0x08b2('0x24')](respondWithFilteredResult(_0x2666b2,_0x234b3a))[_0x08b2('0x45')](handleError(_0x2666b2,null));};exports['show']=function(_0x8a2627,_0x2e0ec9){var _0x248005={'raw':!![],'where':{'id':_0x8a2627[_0x08b2('0x46')]['id']}},_0x359d30={};_0x359d30[_0x08b2('0x2f')]=_['keys'](db[_0x08b2('0x2b')]['rawAttributes']);_0x359d30[_0x08b2('0x30')]=_[_0x08b2('0x31')](_0x8a2627[_0x08b2('0x30')]);_0x359d30[_0x08b2('0x32')]=_[_0x08b2('0x34')](_0x359d30[_0x08b2('0x2f')],_0x359d30[_0x08b2('0x30')]);_0x248005[_0x08b2('0x33')]=_['intersection'](_0x359d30[_0x08b2('0x2f')],qs[_0x08b2('0x35')](_0x8a2627['query']['fields']));_0x248005[_0x08b2('0x33')]=_0x248005['attributes']['length']?_0x248005[_0x08b2('0x33')]:_0x359d30[_0x08b2('0x2f')];if(_0x8a2627[_0x08b2('0x30')][_0x08b2('0x41')]){_0x248005[_0x08b2('0x42')]=[{'all':!![]}];}_0x248005=_[_0x08b2('0x3c')]({},_0x248005,_0x8a2627['options']);return db['CmHopperAdditionalPhone'][_0x08b2('0x47')](_0x248005)[_0x08b2('0x24')](handleEntityNotFound(_0x2e0ec9,null))[_0x08b2('0x24')](respondWithResult(_0x2e0ec9,null))[_0x08b2('0x45')](handleError(_0x2e0ec9,null));};exports[_0x08b2('0x48')]=function(_0x302af8,_0x8d0363){return db[_0x08b2('0x2b')][_0x08b2('0x48')](_0x302af8[_0x08b2('0x49')],{})[_0x08b2('0x24')](function(_0x381bf3){var _0x3fa25d=_0x302af8['user'][_0x08b2('0x4a')]({'plain':!![]});if(!_0x3fa25d)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x3fa25d[_0x08b2('0x4b')]===_0x08b2('0x4c')){var _0x4edfc4=_0x381bf3[_0x08b2('0x4a')]({'plain':!![]});var _0x17c40f=_0x08b2('0x4d');return db[_0x08b2('0x4e')][_0x08b2('0x47')]({'where':{'name':_0x17c40f,'userProfileId':_0x3fa25d[_0x08b2('0x4f')]},'raw':!![]})[_0x08b2('0x24')](function(_0x4618eb){if(_0x4618eb&&_0x4618eb[_0x08b2('0x50')]===0x0){return db['UserProfileResource']['create']({'name':_0x4edfc4[_0x08b2('0x28')],'resourceId':_0x4edfc4['id'],'type':_0x4618eb[_0x08b2('0x28')],'sectionId':_0x4618eb['id']},{})['then'](function(){return _0x381bf3;});}else{return _0x381bf3;}})['catch'](function(_0x4ef93d){logger[_0x08b2('0x27')](_0x08b2('0x51'),_0x4ef93d);throw _0x4ef93d;});}return _0x381bf3;})[_0x08b2('0x24')](respondWithResult(_0x8d0363,0xc9))[_0x08b2('0x45')](handleError(_0x8d0363,null));};exports['update']=function(_0xbdbe13,_0x1d8355){if(_0xbdbe13['body']['id']){delete _0xbdbe13[_0x08b2('0x49')]['id'];}return db[_0x08b2('0x2b')][_0x08b2('0x47')]({'where':{'id':_0xbdbe13[_0x08b2('0x46')]['id']}})['then'](handleEntityNotFound(_0x1d8355,null))[_0x08b2('0x24')](saveUpdates(_0xbdbe13[_0x08b2('0x49')],null))[_0x08b2('0x24')](respondWithResult(_0x1d8355,null))[_0x08b2('0x45')](handleError(_0x1d8355,null));};exports[_0x08b2('0x25')]=function(_0x42f0f2,_0x498f9f){return db[_0x08b2('0x2b')][_0x08b2('0x47')]({'where':{'id':_0x42f0f2['params']['id']}})['then'](handleEntityNotFound(_0x498f9f,null))[_0x08b2('0x24')](removeEntity(_0x498f9f,null))[_0x08b2('0x45')](handleError(_0x498f9f,null));};
\ No newline at end of file
index 29070f7..bb2b062 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0x7d55=['./cmHopperAdditionalPhone.attributes','exports','define','CmHopperAdditionalPhone','lodash','util','../../config/logger','api','request-promise','path','rimraf'];(function(_0xf2f332,_0x299fbf){var _0x56cce3=function(_0x5f37e0){while(--_0x5f37e0){_0xf2f332['push'](_0xf2f332['shift']());}};_0x56cce3(++_0x299fbf);}(_0x7d55,0x1bc));var _0x57d5=function(_0x18f629,_0x4f9f23){_0x18f629=_0x18f629-0x0;var _0x6c4d72=_0x7d55[_0x18f629];return _0x6c4d72;};'use strict';var _=require(_0x57d5('0x0'));var util=require(_0x57d5('0x1'));var logger=require(_0x57d5('0x2'))(_0x57d5('0x3'));var moment=require('moment');var BPromise=require('bluebird');var rp=require(_0x57d5('0x4'));var fs=require('fs');var path=require(_0x57d5('0x5'));var rimraf=require(_0x57d5('0x6'));var config=require('../../config/environment');var attributes=require(_0x57d5('0x7'));module[_0x57d5('0x8')]=function(_0x15c349,_0x30fcfe){return _0x15c349[_0x57d5('0x9')](_0x57d5('0xa'),attributes,{'tableName':'cm_hopper_additional_phones','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index b2396de..76d582e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0xe279=['randomstring','../../mysqldb','../../config/utils','../../config/logger','../../config/environment','jayson/promise','client','then','info','CmHopperAdditionalPhone,\x20%s,\x20%s','request\x20sent','debug','stringify','error','message','result','VerifyAdditionalPhones','CmHopper','body','ContactId','ListId','VoiceQueueId','CampaignId','CmHopperAdditionalPhone','findOne','OrderBy','countnoanswerretry','countnosuchnumberretry','countdropretry','countmachineretry','countagentrejectretry','dialGlobalMaxRetry','ASC','countbusyretry','countcongestionretry','entity','catch','SwapAdditionalPhones','duration','scheduledat','minutes','add','isNil','phone','countabandonedretry','createdAt','updatedAt','sequelize','transaction','update','activateAdditionalPhone','IncrementPreviewCounters','lodash','util','moment','bluebird'];(function(_0xe8129c,_0x2fb03c){var _0x709fc5=function(_0xb8e0c6){while(--_0xb8e0c6){_0xe8129c['push'](_0xe8129c['shift']());}};_0x709fc5(++_0x2fb03c);}(_0xe279,0x1bc));var _0x9e27=function(_0x17de8f,_0x2d5177){_0x17de8f=_0x17de8f-0x0;var _0xc19ec4=_0xe279[_0x17de8f];return _0xc19ec4;};'use strict';var _=require(_0x9e27('0x0'));var util=require(_0x9e27('0x1'));var moment=require(_0x9e27('0x2'));var BPromise=require(_0x9e27('0x3'));var rs=require(_0x9e27('0x4'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x9e27('0x5'))['db'];var utils=require(_0x9e27('0x6'));var logger=require(_0x9e27('0x7'))('rpc');var config=require(_0x9e27('0x8'));var jayson=require(_0x9e27('0x9'));var client=jayson[_0x9e27('0xa')]['http']({'port':0x232a});function respondWithRpcPromise(_0xa28ca5,_0x2b6137,_0x2b6bf5){return new BPromise(function(_0x7e1c68,_0x35e5ec){return client['request'](_0xa28ca5,_0x2b6bf5)[_0x9e27('0xb')](function(_0x413213){logger[_0x9e27('0xc')](_0x9e27('0xd'),_0x2b6137,_0x9e27('0xe'));logger[_0x9e27('0xf')]('CmHopperAdditionalPhone,\x20%s,\x20%s,\x20%s',_0x2b6137,_0x9e27('0xe'),JSON[_0x9e27('0x10')](_0x413213));if(_0x413213[_0x9e27('0x11')]){if(_0x413213[_0x9e27('0x11')]['code']===0x1f4){logger[_0x9e27('0x11')](_0x9e27('0xd'),_0x2b6137,_0x413213[_0x9e27('0x11')][_0x9e27('0x12')]);return _0x35e5ec(_0x413213[_0x9e27('0x11')][_0x9e27('0x12')]);}logger['error'](_0x9e27('0xd'),_0x2b6137,_0x413213[_0x9e27('0x11')]['message']);return _0x7e1c68(_0x413213[_0x9e27('0x11')][_0x9e27('0x12')]);}else{logger[_0x9e27('0xc')]('CmHopperAdditionalPhone,\x20%s,\x20%s',_0x2b6137,_0x9e27('0xe'));_0x7e1c68(_0x413213[_0x9e27('0x13')][_0x9e27('0x12')]);}})['catch'](function(_0x447df7){logger[_0x9e27('0x11')](_0x9e27('0xd'),_0x2b6137,_0x447df7);_0x35e5ec(_0x447df7);});});}exports[_0x9e27('0x14')]=function(_0x266d29){var _0x3970b7=this;return new Promise(function(_0x585f19,_0x24e22f){return db[_0x9e27('0x15')]['findOne']({'raw':!![],'where':{'ContactId':_0x266d29[_0x9e27('0x16')][_0x9e27('0x17')],'ListId':_0x266d29[_0x9e27('0x16')][_0x9e27('0x18')],'VoiceQueueId':_0x266d29[_0x9e27('0x16')][_0x9e27('0x19')]===undefined?null:_0x266d29[_0x9e27('0x16')][_0x9e27('0x19')],'CampaignId':_0x266d29[_0x9e27('0x16')][_0x9e27('0x1a')]===undefined?null:_0x266d29[_0x9e27('0x16')]['CampaignId']}})[_0x9e27('0xb')](function(_0x150aec){if(_0x150aec!=null){return db[_0x9e27('0x1b')][_0x9e27('0x1c')]({'raw':!![],'where':{'CmHopperId':_0x150aec['id'],'OrderBy':{'$gt':_0x150aec[_0x9e27('0x1d')]}},'order':[[_0x9e27('0x1d'),'ASC']]})[_0x9e27('0xb')](function(_0x1126f8){var _0x20b9ac=0x0;if(_0x1126f8){if(_0x1126f8['countbusyretry']+_0x1126f8['countcongestionretry']+_0x1126f8[_0x9e27('0x1e')]+_0x1126f8[_0x9e27('0x1f')]+_0x1126f8[_0x9e27('0x20')]+_0x1126f8['countabandonedretry']+_0x1126f8[_0x9e27('0x21')]+_0x1126f8[_0x9e27('0x22')]<_0x266d29['entity'][_0x9e27('0x23')])_0x20b9ac=0x1;_0x585f19({'additional':_0x20b9ac});}else{return db[_0x9e27('0x1b')][_0x9e27('0x1c')]({'raw':!![],'where':{'CmHopperId':_0x150aec['id']},'order':[['OrderBy',_0x9e27('0x24')]]})['then'](function(_0x244781){var _0x146b46=0x0;if(_0x244781){if(_0x244781[_0x9e27('0x25')]+_0x244781[_0x9e27('0x26')]+_0x244781['countnoanswerretry']+_0x244781[_0x9e27('0x1f')]+_0x244781['countdropretry']+_0x244781['countabandonedretry']+_0x244781[_0x9e27('0x21')]+_0x244781['countagentrejectretry']<_0x266d29[_0x9e27('0x27')]['dialGlobalMaxRetry'])_0x146b46=0x1;_0x585f19({'additional':_0x146b46});}else{_0x585f19({'additional':0x0});}})[_0x9e27('0x28')](function(_0x5721e6){logger[_0x9e27('0x11')]('VerifyAdditionalPhones',_0x5721e6[_0x9e27('0x12')]);_0x24e22f(_0x3970b7['error'](0x1f4,_0x5721e6[_0x9e27('0x12')]));});}})[_0x9e27('0x28')](function(_0x4365f2){logger['error'](_0x9e27('0x14'),_0x4365f2[_0x9e27('0x12')]);_0x24e22f(_0x3970b7[_0x9e27('0x11')](0x1f4,_0x4365f2[_0x9e27('0x12')]));});}else _0x585f19({'additional':0x0});});});};exports[_0x9e27('0x29')]=function(_0x125590){var _0x4660e3=this;return new Promise(function(_0x541c71,_0x206535){return db[_0x9e27('0x15')][_0x9e27('0x1c')]({'raw':!![],'where':{'ContactId':_0x125590[_0x9e27('0x16')][_0x9e27('0x17')],'ListId':_0x125590['body'][_0x9e27('0x18')],'VoiceQueueId':_0x125590[_0x9e27('0x16')][_0x9e27('0x19')]===undefined?null:_0x125590[_0x9e27('0x16')][_0x9e27('0x19')],'CampaignId':_0x125590[_0x9e27('0x16')]['CampaignId']===undefined?null:_0x125590[_0x9e27('0x16')][_0x9e27('0x1a')]}})[_0x9e27('0xb')](function(_0x5a9acc){if(_0x5a9acc!=null){return db['CmHopperAdditionalPhone'][_0x9e27('0x1c')]({'raw':!![],'where':{'CmHopperId':_0x5a9acc['id'],'OrderBy':{'$gte':_0x5a9acc[_0x9e27('0x1d')]}},'order':[[_0x9e27('0x1d'),_0x9e27('0x24')]]})[_0x9e27('0xb')](function(_0xc95a72){if(_0xc95a72)return activateAdditionalPhone(_0x5a9acc,_0x125590[_0x9e27('0x16')],_0xc95a72,_0x125590[_0x9e27('0x2a')],_0x125590['waitTime'])['then'](function(_0x3f743c){_0x541c71(_0x3f743c);});else{return db[_0x9e27('0x1b')][_0x9e27('0x1c')]({'raw':!![],'where':{'CmHopperId':_0x5a9acc['id']},'order':[[_0x9e27('0x1d'),_0x9e27('0x24')]]})[_0x9e27('0xb')](function(_0x190733){if(_0x190733)return activateAdditionalPhone(_0x5a9acc,_0x125590[_0x9e27('0x16')],_0x190733,_0x125590[_0x9e27('0x2a')],_0x125590['waitTime'])['then'](function(_0x39442f){_0x541c71(_0x39442f);});else{_0x541c71({'id':_0x5a9acc['id'],'phone':''});}})[_0x9e27('0x28')](function(_0xba870b){logger[_0x9e27('0x11')](_0x9e27('0x14'),_0xba870b[_0x9e27('0x12')]);_0x206535(_0x4660e3['error'](0x1f4,_0xba870b[_0x9e27('0x12')]));});}})['catch'](function(_0x2e31e6){logger[_0x9e27('0x11')](_0x9e27('0x14'),_0x2e31e6['message']);_0x206535(_0x4660e3['error'](0x1f4,_0x2e31e6[_0x9e27('0x12')]));});}else _0x541c71(0x1);});});};function activateAdditionalPhone(_0x29e242,_0x278304,_0x2861de,_0x5486c2,_0x511deb){return new Promise(function(_0x179313,_0x428764){var _0x152cc1;if(_['isNil'](_0x2861de[_0x9e27('0x2b')])){_0x2861de[_0x9e27('0x2b')]=moment();}if(moment()>moment(_0x2861de['scheduledat'])){_0x152cc1=moment()['add'](_0x511deb||0x3,_0x9e27('0x2c'));}else{if(_0x2861de[_0x9e27('0x1d')]==0x0){_0x152cc1=moment(_0x2861de['scheduledat']);}else{_0x152cc1=moment()[_0x9e27('0x2d')](_0x511deb||0x3,'minutes');}}if(_[_0x9e27('0x2e')](_0x152cc1)){_0x152cc1=moment()[_0x9e27('0x2d')](_0x511deb||0x3,'minutes');}var _0x23054b={'phone':_0x29e242[_0x9e27('0x2f')],'active':0x0,'OrderBy':_[_0x9e27('0x2e')](_0x29e242[_0x9e27('0x1d')])?0x0:_0x29e242[_0x9e27('0x1d')],'scheduledat':moment()[_0x9e27('0x2d')](_0x5486c2||0x1,_0x9e27('0x2c')),'countbusyretry':_0x278304[_0x9e27('0x25')],'countcongestionretry':_0x278304[_0x9e27('0x26')],'countnoanswerretry':_0x278304[_0x9e27('0x1e')],'countnosuchnumberretry':_0x278304[_0x9e27('0x1f')],'countdropretry':_0x278304[_0x9e27('0x20')],'countabandonedretry':_0x278304[_0x9e27('0x30')],'countmachineretry':_0x278304[_0x9e27('0x21')],'countagentrejectretry':_0x278304[_0x9e27('0x22')],'createdAt':_0x278304[_0x9e27('0x31')],'updatedAt':_0x278304[_0x9e27('0x32')]};var _0x13ece6={'CmHopperId':_0x29e242['id'],'phone':_0x2861de[_0x9e27('0x2f')],'active':0x0,'OrderBy':_[_0x9e27('0x2e')](_0x2861de[_0x9e27('0x1d')])?0x0:_0x2861de['OrderBy'],'scheduledat':_0x152cc1,'countbusyretry':_0x2861de[_0x9e27('0x25')],'countcongestionretry':_0x2861de[_0x9e27('0x26')],'countnoanswerretry':_0x2861de['countnoanswerretry'],'countnosuchnumberretry':_0x2861de['countnosuchnumberretry'],'countdropretry':_0x2861de[_0x9e27('0x20')],'countabandonedretry':_0x2861de[_0x9e27('0x30')],'countmachineretry':_0x2861de[_0x9e27('0x21')],'countagentrejectretry':_0x2861de[_0x9e27('0x22')],'createdAt':_0x2861de['createdAt'],'updatedAt':_0x2861de[_0x9e27('0x32')]};return db[_0x9e27('0x33')][_0x9e27('0x34')](function(_0xece95a){return db[_0x9e27('0x1b')][_0x9e27('0x35')](_0x23054b,{'where':{'id':_0x2861de['id']}},{'transaction':_0xece95a})[_0x9e27('0xb')](function(){return db[_0x9e27('0x15')][_0x9e27('0x35')](_0x13ece6,{'where':{'id':_0x29e242['id']}},{'transaction':_0xece95a});});})[_0x9e27('0xb')](function(_0x26d6ad){_0x179313({'id':_0x29e242['id'],'phone':_0x2861de['phone']});})[_0x9e27('0x28')](function(_0x208055){logger['error'](_0x9e27('0x36'),_0x208055[_0x9e27('0x12')]);_0x428764({'error':_0x208055[_0x9e27('0x12')]});});});}exports[_0x9e27('0x37')]=function(_0x2dc64a){var _0x280c24=this;return new Promise(function(_0x20e55,_0x4e3b77){return db['CmHopper'][_0x9e27('0x35')](_0x2dc64a[_0x9e27('0x16')]['field'],{'where':{'id':_0x2dc64a[_0x9e27('0x16')]['id']}})[_0x9e27('0xb')](function(_0x314918){_0x20e55(_0x314918);})['catch'](function(_0x31fd4a){logger[_0x9e27('0x11')]('IncrementPreviewCounters',_0x31fd4a[_0x9e27('0x12')]);_0x4e3b77(_0x280c24[_0x9e27('0x11')](0x1f4,_0x31fd4a['message']));});});};
\ No newline at end of file
index 0666948..8cde85f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0xe678=['fs-extra','../../components/auth/service','../../components/interaction/service','get','index','/:id','isAuthenticated','show','post','create','update','destroy','exports','multer','connect-timeout','express','Router'];(function(_0x51b6e3,_0xd3863c){var _0x593626=function(_0x3ece2e){while(--_0x3ece2e){_0x51b6e3['push'](_0x51b6e3['shift']());}};_0x593626(++_0xd3863c);}(_0xe678,0x95));var _0x8e67=function(_0x4e720b,_0x2ea58f){_0x4e720b=_0x4e720b-0x0;var _0x3e8181=_0xe678[_0x4e720b];return _0x3e8181;};'use strict';var multer=require(_0x8e67('0x0'));var util=require('util');var path=require('path');var timeout=require(_0x8e67('0x1'));var express=require(_0x8e67('0x2'));var router=express[_0x8e67('0x3')]();var fs_extra=require(_0x8e67('0x4'));var auth=require(_0x8e67('0x5'));var interaction=require(_0x8e67('0x6'));var config=require('../../config/environment');var controller=require('./cmHopperAdditionalPhone.controller');router[_0x8e67('0x7')]('/',auth['isAuthenticated'](),controller[_0x8e67('0x8')]);router['get'](_0x8e67('0x9'),auth[_0x8e67('0xa')](),controller[_0x8e67('0xb')]);router[_0x8e67('0xc')]('/',auth[_0x8e67('0xa')](),controller[_0x8e67('0xd')]);router['put'](_0x8e67('0x9'),auth[_0x8e67('0xa')](),controller[_0x8e67('0xe')]);router['delete'](_0x8e67('0x9'),auth[_0x8e67('0xa')](),controller[_0x8e67('0xf')]);module[_0x8e67('0x10')]=router;
\ No newline at end of file
index e3fc330..f5fd6f7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0xe58e=['INTEGER','contactListQueue','moment','sequelize'];(function(_0x12aaee,_0x5bf50c){var _0x37c350=function(_0x182775){while(--_0x182775){_0x12aaee['push'](_0x12aaee['shift']());}};_0x37c350(++_0x5bf50c);}(_0xe58e,0x10e));var _0xee58=function(_0x1afd10,_0x5877c0){_0x1afd10=_0x1afd10-0x0;var _0x169331=_0xe58e[_0x1afd10];return _0x169331;};'use strict';var moment=require(_0xee58('0x0'));var Sequelize=require(_0xee58('0x1'));module['exports']={'phone':{'type':Sequelize['STRING'],'allowNull':![]},'ContactId':{'type':Sequelize[_0xee58('0x2')],'unique':_0xee58('0x3')},'ListId':{'type':Sequelize[_0xee58('0x2')],'unique':_0xee58('0x3')},'VoiceQueueId':{'type':Sequelize[_0xee58('0x2')],'unique':_0xee58('0x3')}};
\ No newline at end of file
index 085dd62..ce24b95 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0x5b52=['findAll','rows','catch','show','params','rawAttributes','length','find','update','body','destroy','describe','rimraf','zip-dir','request-promise','bluebird','mustache','util','path','ejs','fs-extra','lodash','squel','crypto','to-csv','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','sendStatus','end','status','json','offset','undefined','limit','count','set','Content-Range','apply','reject','save','then','error','stack','name','index','CmHopperBlack','fieldName','type','model','map','keys','query','filters','intersection','attributes','fields','hasOwnProperty','nolimit','order','sort','where','merge','VIRTUAL','filter','options','include'];(function(_0xfa44b8,_0x3e6c66){var _0x20dcad=function(_0x19c420){while(--_0x19c420){_0xfa44b8['push'](_0xfa44b8['shift']());}};_0x20dcad(++_0x3e6c66);}(_0x5b52,0xa2));var _0x25b5=function(_0x321bb2,_0x202794){_0x321bb2=_0x321bb2-0x0;var _0x9c12ed=_0x5b52[_0x321bb2];return _0x9c12ed;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x25b5('0x0'));var zipdir=require(_0x25b5('0x1'));var jsonpatch=require('fast-json-patch');var rp=require(_0x25b5('0x2'));var moment=require('moment');var BPromise=require(_0x25b5('0x3'));var Mustache=require(_0x25b5('0x4'));var util=require(_0x25b5('0x5'));var path=require(_0x25b5('0x6'));var sox=require('sox');var csv=require('to-csv');var ejs=require(_0x25b5('0x7'));var fs=require('fs');var fs_extra=require(_0x25b5('0x8'));var _=require(_0x25b5('0x9'));var squel=require(_0x25b5('0xa'));var crypto=require(_0x25b5('0xb'));var jsforce=require('jsforce');var deskjs=require('desk.js');var toCsv=require(_0x25b5('0xc'));var querystring=require(_0x25b5('0xd'));var Papa=require(_0x25b5('0xe'));var Redis=require(_0x25b5('0xf'));var authService=require(_0x25b5('0x10'));var qs=require(_0x25b5('0x11'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x25b5('0x12'));var logger=require(_0x25b5('0x13'))(_0x25b5('0x14'));var utils=require(_0x25b5('0x15'));var config=require(_0x25b5('0x16'));var licenseUtil=require(_0x25b5('0x17'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x3977d7,_0x560da1){_0x560da1=_0x560da1||0xcc;return function(_0x2b68ee){if(_0x2b68ee){return _0x3977d7[_0x25b5('0x18')](_0x560da1);}return _0x3977d7['status'](_0x560da1)[_0x25b5('0x19')]();};}function respondWithResult(_0xe07ccc,_0x1c9abe){_0x1c9abe=_0x1c9abe||0xc8;return function(_0x1644b8){if(_0x1644b8){return _0xe07ccc[_0x25b5('0x1a')](_0x1c9abe)[_0x25b5('0x1b')](_0x1644b8);}};}function respondWithFilteredResult(_0x486bbd,_0xca373){return function(_0x1076e0){if(_0x1076e0){var _0x2a01ba=typeof _0xca373[_0x25b5('0x1c')]===_0x25b5('0x1d')&&typeof _0xca373[_0x25b5('0x1e')]==='undefined';var _0x3f3e68=_0x1076e0[_0x25b5('0x1f')];var _0x4fda89=_0x2a01ba?0x0:_0xca373[_0x25b5('0x1c')];var _0x18e044=_0x2a01ba?_0x1076e0[_0x25b5('0x1f')]:_0xca373[_0x25b5('0x1c')]+_0xca373['limit'];var _0x2d4dd9;if(_0x18e044>=_0x3f3e68){_0x18e044=_0x3f3e68;_0x2d4dd9=0xc8;}else{_0x2d4dd9=0xce;}_0x486bbd[_0x25b5('0x1a')](_0x2d4dd9);return _0x486bbd[_0x25b5('0x20')](_0x25b5('0x21'),_0x4fda89+'-'+_0x18e044+'/'+_0x3f3e68)[_0x25b5('0x1b')](_0x1076e0);}return null;};}function patchUpdates(_0x50ee98){return function(_0x54cf60){try{jsonpatch[_0x25b5('0x22')](_0x54cf60,_0x50ee98,!![]);}catch(_0x192f7f){return BPromise[_0x25b5('0x23')](_0x192f7f);}return _0x54cf60[_0x25b5('0x24')]();};}function saveUpdates(_0x2f5ea2,_0x4d7f55){return function(_0x5739b4){if(_0x5739b4){return _0x5739b4['update'](_0x2f5ea2)[_0x25b5('0x25')](function(_0x126713){return _0x126713;});}return null;};}function removeEntity(_0x55d45e,_0x29e1e0){return function(_0x25fe15){if(_0x25fe15){return _0x25fe15['destroy']()[_0x25b5('0x25')](function(){_0x55d45e[_0x25b5('0x1a')](0xcc)[_0x25b5('0x19')]();});}};}function handleEntityNotFound(_0x219a2a,_0x382347){return function(_0x510ab7){if(!_0x510ab7){_0x219a2a[_0x25b5('0x18')](0x194);}return _0x510ab7;};}function handleError(_0x18d09a,_0x28ef84){_0x28ef84=_0x28ef84||0x1f4;return function(_0xcc1e0e){logger[_0x25b5('0x26')](_0xcc1e0e[_0x25b5('0x27')]);if(_0xcc1e0e['name']){delete _0xcc1e0e[_0x25b5('0x28')];}_0x18d09a[_0x25b5('0x1a')](_0x28ef84)['send'](_0xcc1e0e);};}exports[_0x25b5('0x29')]=function(_0x375d80,_0x5e89ab){var _0x5097a8={},_0x57cc8e={},_0x259aaa={'count':0x0,'rows':[]};var _0x4b963a=_['map'](db[_0x25b5('0x2a')]['rawAttributes'],function(_0x5301c2){return{'name':_0x5301c2[_0x25b5('0x2b')],'type':_0x5301c2[_0x25b5('0x2c')]['key']};});_0x57cc8e[_0x25b5('0x2d')]=_[_0x25b5('0x2e')](_0x4b963a,_0x25b5('0x28'));_0x57cc8e['query']=_[_0x25b5('0x2f')](_0x375d80[_0x25b5('0x30')]);_0x57cc8e[_0x25b5('0x31')]=_[_0x25b5('0x32')](_0x57cc8e[_0x25b5('0x2d')],_0x57cc8e[_0x25b5('0x30')]);_0x5097a8[_0x25b5('0x33')]=_['intersection'](_0x57cc8e[_0x25b5('0x2d')],qs[_0x25b5('0x34')](_0x375d80['query']['fields']));_0x5097a8[_0x25b5('0x33')]=_0x5097a8[_0x25b5('0x33')]['length']?_0x5097a8[_0x25b5('0x33')]:_0x57cc8e[_0x25b5('0x2d')];if(!_0x375d80[_0x25b5('0x30')][_0x25b5('0x35')](_0x25b5('0x36'))){_0x5097a8[_0x25b5('0x1e')]=qs[_0x25b5('0x1e')](_0x375d80[_0x25b5('0x30')][_0x25b5('0x1e')]);_0x5097a8[_0x25b5('0x1c')]=qs[_0x25b5('0x1c')](_0x375d80['query']['offset']);}_0x5097a8[_0x25b5('0x37')]=qs[_0x25b5('0x38')](_0x375d80[_0x25b5('0x30')]['sort']);_0x5097a8[_0x25b5('0x39')]=qs['filters'](_['pick'](_0x375d80[_0x25b5('0x30')],_0x57cc8e['filters']),_0x4b963a);if(_0x375d80[_0x25b5('0x30')]['filter']){_0x5097a8[_0x25b5('0x39')]=_[_0x25b5('0x3a')](_0x5097a8[_0x25b5('0x39')],{'$or':_[_0x25b5('0x2e')](_0x4b963a,function(_0x4e51ae){if(_0x4e51ae[_0x25b5('0x2c')]!==_0x25b5('0x3b')){var _0x1610e4={};_0x1610e4[_0x4e51ae[_0x25b5('0x28')]]={'$like':'%'+_0x375d80[_0x25b5('0x30')][_0x25b5('0x3c')]+'%'};return _0x1610e4;}})});}_0x5097a8=_['merge']({},_0x5097a8,_0x375d80[_0x25b5('0x3d')]);var _0x164066={'where':_0x5097a8[_0x25b5('0x39')]};return db[_0x25b5('0x2a')][_0x25b5('0x1f')](_0x164066)[_0x25b5('0x25')](function(_0x1bc0fe){_0x259aaa[_0x25b5('0x1f')]=_0x1bc0fe;if(_0x375d80['query']['includeAll']){_0x5097a8[_0x25b5('0x3e')]=[{'all':!![]}];}return db[_0x25b5('0x2a')][_0x25b5('0x3f')](_0x5097a8);})['then'](function(_0x438eaa){_0x259aaa[_0x25b5('0x40')]=_0x438eaa;return _0x259aaa;})['then'](respondWithFilteredResult(_0x5e89ab,_0x5097a8))[_0x25b5('0x41')](handleError(_0x5e89ab,null));};exports[_0x25b5('0x42')]=function(_0x5a558c,_0x2d1c7f){var _0x13bbbf={'raw':!![],'where':{'id':_0x5a558c[_0x25b5('0x43')]['id']}},_0x443fb1={};_0x443fb1[_0x25b5('0x2d')]=_[_0x25b5('0x2f')](db['CmHopperBlack'][_0x25b5('0x44')]);_0x443fb1[_0x25b5('0x30')]=_[_0x25b5('0x2f')](_0x5a558c[_0x25b5('0x30')]);_0x443fb1[_0x25b5('0x31')]=_[_0x25b5('0x32')](_0x443fb1[_0x25b5('0x2d')],_0x443fb1[_0x25b5('0x30')]);_0x13bbbf[_0x25b5('0x33')]=_['intersection'](_0x443fb1[_0x25b5('0x2d')],qs[_0x25b5('0x34')](_0x5a558c[_0x25b5('0x30')]['fields']));_0x13bbbf['attributes']=_0x13bbbf[_0x25b5('0x33')][_0x25b5('0x45')]?_0x13bbbf[_0x25b5('0x33')]:_0x443fb1[_0x25b5('0x2d')];if(_0x5a558c[_0x25b5('0x30')]['includeAll']){_0x13bbbf[_0x25b5('0x3e')]=[{'all':!![]}];}_0x13bbbf=_[_0x25b5('0x3a')]({},_0x13bbbf,_0x5a558c[_0x25b5('0x3d')]);return db[_0x25b5('0x2a')][_0x25b5('0x46')](_0x13bbbf)[_0x25b5('0x25')](handleEntityNotFound(_0x2d1c7f,null))['then'](respondWithResult(_0x2d1c7f,null))[_0x25b5('0x41')](handleError(_0x2d1c7f,null));};exports[_0x25b5('0x47')]=function(_0x291946,_0x341d5d){if(_0x291946[_0x25b5('0x48')]['id']){delete _0x291946[_0x25b5('0x48')]['id'];}return db[_0x25b5('0x2a')][_0x25b5('0x46')]({'where':{'id':_0x291946[_0x25b5('0x43')]['id']}})['then'](handleEntityNotFound(_0x341d5d,null))[_0x25b5('0x25')](saveUpdates(_0x291946[_0x25b5('0x48')],null))[_0x25b5('0x25')](respondWithResult(_0x341d5d,null))[_0x25b5('0x41')](handleError(_0x341d5d,null));};exports[_0x25b5('0x49')]=function(_0x188c45,_0x3a4c4c){return db[_0x25b5('0x2a')][_0x25b5('0x46')]({'where':{'id':_0x188c45[_0x25b5('0x43')]['id']}})[_0x25b5('0x25')](handleEntityNotFound(_0x3a4c4c,null))[_0x25b5('0x25')](removeEntity(_0x3a4c4c,null))[_0x25b5('0x41')](handleError(_0x3a4c4c,null));};exports[_0x25b5('0x4a')]=function(_0x4c9731,_0x57fe4e){return db[_0x25b5('0x2a')][_0x25b5('0x4a')]()[_0x25b5('0x25')](respondWithResult(_0x57fe4e,null))[_0x25b5('0x41')](handleError(_0x57fe4e,null));};
\ No newline at end of file
index 69507a9..c0f94b0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0x8546=['../../config/logger','moment','request-promise','path','rimraf','exports','define','CmHopperBlack','cm_hopper_black','util'];(function(_0x59ee6f,_0x450239){var _0x4c0979=function(_0x565e92){while(--_0x565e92){_0x59ee6f['push'](_0x59ee6f['shift']());}};_0x4c0979(++_0x450239);}(_0x8546,0xc7));var _0x6854=function(_0x5889ef,_0x1d3bc0){_0x5889ef=_0x5889ef-0x0;var _0x2badb2=_0x8546[_0x5889ef];return _0x2badb2;};'use strict';var _=require('lodash');var util=require(_0x6854('0x0'));var logger=require(_0x6854('0x1'))('api');var moment=require(_0x6854('0x2'));var BPromise=require('bluebird');var rp=require(_0x6854('0x3'));var fs=require('fs');var path=require(_0x6854('0x4'));var rimraf=require(_0x6854('0x5'));var config=require('../../config/environment');var attributes=require('./cmHopperBlack.attributes');module[_0x6854('0x6')]=function(_0x49b5db,_0x29d686){return _0x49b5db[_0x6854('0x7')](_0x6854('0x8'),attributes,{'tableName':_0x6854('0x9'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index cf6f544..657af84 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0x60d6=['jayson/promise','client','request','then','info','CmHopperBlack,\x20%s,\x20%s','request\x20sent','debug','CmHopperBlack,\x20%s,\x20%s,\x20%s','stringify','error','message','result','CmHopperBlack','options','raw','where','attributes','map','model','include','GetCmHopperBlack','UpdateCmHopperBlack','limit','catch','DestroyCmHopperBlack','destroy','util','moment','bluebird','randomstring','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment'];(function(_0x1084ef,_0x34a149){var _0x5d1a6a=function(_0x22b84c){while(--_0x22b84c){_0x1084ef['push'](_0x1084ef['shift']());}};_0x5d1a6a(++_0x34a149);}(_0x60d6,0x15f));var _0x660d=function(_0xf44e3c,_0x38129d){_0xf44e3c=_0xf44e3c-0x0;var _0x1ae370=_0x60d6[_0xf44e3c];return _0x1ae370;};'use strict';var _=require('lodash');var util=require(_0x660d('0x0'));var moment=require(_0x660d('0x1'));var BPromise=require(_0x660d('0x2'));var rs=require(_0x660d('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x660d('0x4'))['db'];var utils=require(_0x660d('0x5'));var logger=require(_0x660d('0x6'))(_0x660d('0x7'));var config=require(_0x660d('0x8'));var jayson=require(_0x660d('0x9'));var client=jayson[_0x660d('0xa')]['http']({'port':0x232a});function respondWithRpcPromise(_0x392e85,_0x27aecc,_0x5895af){return new BPromise(function(_0x55f495,_0x56a2ed){return client[_0x660d('0xb')](_0x392e85,_0x5895af)[_0x660d('0xc')](function(_0xb75db1){logger[_0x660d('0xd')](_0x660d('0xe'),_0x27aecc,_0x660d('0xf'));logger[_0x660d('0x10')](_0x660d('0x11'),_0x27aecc,'request\x20sent',JSON[_0x660d('0x12')](_0xb75db1));if(_0xb75db1['error']){if(_0xb75db1[_0x660d('0x13')]['code']===0x1f4){logger[_0x660d('0x13')](_0x660d('0xe'),_0x27aecc,_0xb75db1[_0x660d('0x13')]['message']);return _0x56a2ed(_0xb75db1[_0x660d('0x13')][_0x660d('0x14')]);}logger['error'](_0x660d('0xe'),_0x27aecc,_0xb75db1[_0x660d('0x13')][_0x660d('0x14')]);return _0x55f495(_0xb75db1[_0x660d('0x13')][_0x660d('0x14')]);}else{logger[_0x660d('0xd')](_0x660d('0xe'),_0x27aecc,'request\x20sent');_0x55f495(_0xb75db1[_0x660d('0x15')][_0x660d('0x14')]);}})['catch'](function(_0x549b85){logger['error'](_0x660d('0xe'),_0x27aecc,_0x549b85);_0x56a2ed(_0x549b85);});});}exports['GetCmHopperBlack']=function(_0x376a06){var _0x403019=this;return new Promise(function(_0x1bb572,_0x4e93e8){return db[_0x660d('0x16')]['findAll']({'raw':_0x376a06[_0x660d('0x17')]?_0x376a06[_0x660d('0x17')][_0x660d('0x18')]===undefined?!![]:![]:!![],'where':_0x376a06[_0x660d('0x17')]?_0x376a06[_0x660d('0x17')][_0x660d('0x19')]||null:null,'attributes':_0x376a06['options']?_0x376a06[_0x660d('0x17')][_0x660d('0x1a')]||null:null,'limit':_0x376a06[_0x660d('0x17')]?_0x376a06[_0x660d('0x17')]['limit']||null:null,'include':_0x376a06['options']?_0x376a06[_0x660d('0x17')]['include']?_[_0x660d('0x1b')](_0x376a06['options']['include'],function(_0x65095b){return{'model':db[_0x65095b[_0x660d('0x1c')]],'as':_0x65095b['as'],'attributes':_0x65095b['attributes'],'include':_0x65095b[_0x660d('0x1d')]?_['map'](_0x65095b[_0x660d('0x1d')],function(_0x42089b){return{'model':db[_0x42089b[_0x660d('0x1c')]],'as':_0x42089b['as'],'attributes':_0x42089b[_0x660d('0x1a')],'include':_0x42089b[_0x660d('0x1d')]?_['map'](_0x42089b[_0x660d('0x1d')],function(_0x46443d){return{'model':db[_0x46443d[_0x660d('0x1c')]],'as':_0x46443d['as'],'attributes':_0x46443d['attributes']};}):[]};}):[]};}):[]:[]})[_0x660d('0xc')](function(_0x787852){logger[_0x660d('0xd')](_0x660d('0x1e'),_0x376a06);logger['debug'](_0x660d('0x1e'),_0x376a06,JSON[_0x660d('0x12')](_0x787852));_0x1bb572(_0x787852);})['catch'](function(_0x52c49a){logger['error'](_0x660d('0x1e'),_0x52c49a['message'],_0x376a06);_0x4e93e8(_0x403019[_0x660d('0x13')](0x1f4,_0x52c49a[_0x660d('0x14')]));});});};exports[_0x660d('0x1f')]=function(_0x871ce5){var _0x2e99a1=this;return new Promise(function(_0x1df917,_0x4a9412){return db[_0x660d('0x16')]['update'](_0x871ce5['body'],{'raw':_0x871ce5['options']?_0x871ce5[_0x660d('0x17')][_0x660d('0x18')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x871ce5['options']?_0x871ce5[_0x660d('0x17')][_0x660d('0x19')]||null:null,'attributes':_0x871ce5[_0x660d('0x17')]?_0x871ce5['options'][_0x660d('0x1a')]||null:null,'limit':_0x871ce5[_0x660d('0x17')]?_0x871ce5[_0x660d('0x17')][_0x660d('0x20')]||null:null})['then'](function(_0x574e84){logger[_0x660d('0xd')](_0x660d('0x1f'),_0x871ce5);logger[_0x660d('0x10')](_0x660d('0x1f'),_0x871ce5,JSON[_0x660d('0x12')](_0x574e84));_0x1df917(_0x574e84);})[_0x660d('0x21')](function(_0x3f192c){logger['error'](_0x660d('0x1f'),_0x3f192c[_0x660d('0x14')],_0x871ce5);_0x4a9412(_0x2e99a1[_0x660d('0x13')](0x1f4,_0x3f192c[_0x660d('0x14')]));});});};exports[_0x660d('0x22')]=function(_0x3249b8){var _0x4c7dc8=this;return new Promise(function(_0x19a37a,_0x598d10){return db[_0x660d('0x16')][_0x660d('0x23')]({'where':_0x3249b8[_0x660d('0x17')]?_0x3249b8[_0x660d('0x17')][_0x660d('0x19')]||null:null})[_0x660d('0xc')](function(_0x9fc6ad){logger['info'](_0x660d('0x22'),_0x3249b8);logger['debug'](_0x660d('0x22'),_0x3249b8,JSON[_0x660d('0x12')](_0x9fc6ad));_0x19a37a(_0x9fc6ad);})['catch'](function(_0x53911f){logger[_0x660d('0x13')]('DestroyCmHopperBlack',_0x53911f[_0x660d('0x14')],_0x3249b8);_0x598d10(_0x4c7dc8[_0x660d('0x13')](0x1f4,_0x53911f[_0x660d('0x14')]));});});};
\ No newline at end of file
index e8acd25..9b1ddb7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0x323f=['../../components/interaction/service','../../config/environment','./cmHopperBlack.controller','get','isAuthenticated','/describe','describe','/:id','show','put','update','delete','destroy','exports','util','connect-timeout','express','Router','fs-extra','../../components/auth/service'];(function(_0x3a01db,_0x2c9fa4){var _0x4973b5=function(_0x218a6e){while(--_0x218a6e){_0x3a01db['push'](_0x3a01db['shift']());}};_0x4973b5(++_0x2c9fa4);}(_0x323f,0x1ee));var _0xf323=function(_0x2dafbe,_0x5d04de){_0x2dafbe=_0x2dafbe-0x0;var _0x58a45a=_0x323f[_0x2dafbe];return _0x58a45a;};'use strict';var multer=require('multer');var util=require(_0xf323('0x0'));var path=require('path');var timeout=require(_0xf323('0x1'));var express=require(_0xf323('0x2'));var router=express[_0xf323('0x3')]();var fs_extra=require(_0xf323('0x4'));var auth=require(_0xf323('0x5'));var interaction=require(_0xf323('0x6'));var config=require(_0xf323('0x7'));var controller=require(_0xf323('0x8'));router[_0xf323('0x9')]('/',auth[_0xf323('0xa')](),controller['index']);router[_0xf323('0x9')](_0xf323('0xb'),auth[_0xf323('0xa')](),controller[_0xf323('0xc')]);router[_0xf323('0x9')](_0xf323('0xd'),auth[_0xf323('0xa')](),controller[_0xf323('0xe')]);router[_0xf323('0xf')](_0xf323('0xd'),auth[_0xf323('0xa')](),controller[_0xf323('0x10')]);router[_0xf323('0x11')](_0xf323('0xd'),auth[_0xf323('0xa')](),controller[_0xf323('0x12')]);module[_0xf323('0x13')]=router;
\ No newline at end of file
index 46ad3cd..2a21961 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0xa674=['INTEGER','STRING','DATE','getDataValue','endtime','setDataValue','followuptime','seconds','BOOLEAN','sequelize','moment'];(function(_0x2d99ce,_0x45e91e){var _0x48bd18=function(_0x435072){while(--_0x435072){_0x2d99ce['push'](_0x2d99ce['shift']());}};_0x48bd18(++_0x45e91e);}(_0xa674,0x169));var _0x4a67=function(_0x2548e4,_0x4787f1){_0x2548e4=_0x2548e4-0x0;var _0x1f7f87=_0xa674[_0x2548e4];return _0x1f7f87;};'use strict';var Sequelize=require(_0x4a67('0x0'));var moment=require(_0x4a67('0x1'));module['exports']={'state':{'type':Sequelize[_0x4a67('0x2')](0x2)},'statedesc':{'type':Sequelize[_0x4a67('0x3')]},'scheduledat':{'type':Sequelize[_0x4a67('0x4')]},'countbusyretry':{'type':Sequelize[_0x4a67('0x2')],'defaultValue':0x0},'countcongestionretry':{'type':Sequelize[_0x4a67('0x2')],'defaultValue':0x0},'countnoanswerretry':{'type':Sequelize[_0x4a67('0x2')],'defaultValue':0x0},'countglobal':{'type':Sequelize[_0x4a67('0x2')],'defaultValue':0x0},'uniqueid':{'type':Sequelize[_0x4a67('0x3')]},'originatecalleridnum':{'type':Sequelize[_0x4a67('0x3')]},'originatecalleridname':{'type':Sequelize[_0x4a67('0x3')]},'calleridnum':{'type':Sequelize[_0x4a67('0x3')]},'calleridname':{'type':Sequelize['STRING']},'starttime':{'type':Sequelize[_0x4a67('0x4')]},'responsetime':{'type':Sequelize[_0x4a67('0x4')]},'answertime':{'type':Sequelize[_0x4a67('0x4')]},'droptime':{'type':Sequelize[_0x4a67('0x4')]},'endtime':{'type':Sequelize['DATE']},'ringtime':{'type':Sequelize[_0x4a67('0x2')],'defaultValue':0x0},'holdtime':{'type':Sequelize[_0x4a67('0x2')],'defaultValue':0x0},'talktime':{'type':Sequelize[_0x4a67('0x2')],'defaultValue':0x0},'followuptime':{'type':Sequelize[_0x4a67('0x2')],'defaultValue':0x0},'dropreason':{'type':Sequelize[_0x4a67('0x3')]},'campaign':{'type':Sequelize[_0x4a67('0x3')]},'campaigntype':{'type':Sequelize['STRING']},'membername':{'type':Sequelize[_0x4a67('0x3')]},'reason':{'type':Sequelize[_0x4a67('0x3')]},'disposition':{'type':Sequelize[_0x4a67('0x3')]},'secondDisposition':{'type':Sequelize[_0x4a67('0x3')]},'thirdDisposition':{'type':Sequelize[_0x4a67('0x3')]},'dispositionat':{'type':Sequelize[_0x4a67('0x4')],'set':function(_0x3065a3){var _0x40265f=this[_0x4a67('0x5')](_0x4a67('0x6'));if(_0x40265f&&_0x3065a3){this[_0x4a67('0x7')](_0x4a67('0x8'),moment(_0x3065a3)['diff'](moment(_0x40265f),_0x4a67('0x9')));}}},'amd':{'type':Sequelize[_0x4a67('0xa')],'defaultValue':![]},'fax':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'blacklist':{'type':Sequelize[_0x4a67('0xa')],'defaultValue':![]},'rescheduled':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'rescheduledat':{'type':Sequelize['DATE']},'callback':{'type':Sequelize[_0x4a67('0xa')],'defaultValue':![]},'callbackuniqueid':{'type':Sequelize[_0x4a67('0x3')],'defaultValue':null},'callbackat':{'type':Sequelize['DATE']},'deleted':{'type':Sequelize[_0x4a67('0x3')],'defaultValue':null},'deletedat':{'type':Sequelize[_0x4a67('0x4')]},'recallme':{'type':Sequelize[_0x4a67('0xa')],'defaultValue':![]},'agiafterat':{'type':Sequelize[_0x4a67('0x4')]},'countnosuchnumberretry':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'countdropretry':{'type':Sequelize[_0x4a67('0x2')],'defaultValue':0x0},'countabandonedretry':{'type':Sequelize[_0x4a67('0x2')],'defaultValue':0x0},'countmachineretry':{'type':Sequelize[_0x4a67('0x2')],'defaultValue':0x0},'countagentrejectretry':{'type':Sequelize[_0x4a67('0x2')],'defaultValue':0x0}};
\ No newline at end of file
index 7773160..fbd92de 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0x5496=['set','Content-Range','apply','reject','save','update','then','error','stack','name','index','CmHopperFinal','rawAttributes','fieldName','type','key','model','map','query','filters','intersection','attributes','length','hasOwnProperty','nolimit','offset','order','sort','pick','filter','where','merge','VIRTUAL','includeAll','rows','catch','show','params','keys','fields','include','options','find','describe','body','uniqueid','countContactsQueueCampaignHopperFinal','findAll','sequelize','literal','`state`\x20=\x200,\x201,\x20null','noSuchContacts','COUNT','`state`\x20=\x203,\x201,\x20null','noAnswerContacts','`state`\x20=\x205,\x201,\x20null','busyContacts','`state`\x20=\x208,\x201,\x20null','congestionContacts','`state`\x20=\x2010\x20,\x201,\x20null','`state`\x20=\x2011\x20,\x201,\x20null','`state`\x20=\x2022,\x201,\x20null','`state`\x20=\x2019,\x201,\x20null','countContactsIvrCampaignHopperFinal','dropContacts','abandonedContacts','reCallContacts','answeringMachine','into','cm_hopper','fromQuery','ListId','VoiceQueueId','createdAt','field','phone','NOW()','scheduledAt','ANY_VALUE(ContactId)','ContactId','ANY_VALUE(ListId)','updatedAt','cm_hopper_final','VoiceQueueId\x20=\x20?','toString','state\x20=\x20?','state','calleridnum\x20IS\x20NOT\x20NULL','calleridnum\x20NOT\x20IN\x20(?)','select','from','calleridnum','state\x20=\x204','group','moveContactsIvrCampaignHopperFinal','Campaign','insert','CampaignId','ANY_VALUE(calleridnum)','CampaignId\x20=\x20?','checkContactHopper','CmHopper','findOne','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','bluebird','util','path','sox','fs-extra','lodash','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','end','status','json','undefined','limit','count'];(function(_0x1acabc,_0x14f927){var _0x330bfa=function(_0x5def12){while(--_0x5def12){_0x1acabc['push'](_0x1acabc['shift']());}};_0x330bfa(++_0x14f927);}(_0x5496,0x175));var _0x6549=function(_0x12b5ba,_0x1b6508){_0x12b5ba=_0x12b5ba-0x0;var _0x149622=_0x5496[_0x12b5ba];return _0x149622;};'use strict';var emlformat=require(_0x6549('0x0'));var rimraf=require(_0x6549('0x1'));var zipdir=require(_0x6549('0x2'));var jsonpatch=require(_0x6549('0x3'));var rp=require(_0x6549('0x4'));var moment=require('moment');var BPromise=require(_0x6549('0x5'));var Mustache=require('mustache');var util=require(_0x6549('0x6'));var path=require(_0x6549('0x7'));var sox=require(_0x6549('0x8'));var csv=require('to-csv');var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x6549('0x9'));var _=require(_0x6549('0xa'));var squel=require('squel');var crypto=require(_0x6549('0xb'));var jsforce=require(_0x6549('0xc'));var deskjs=require(_0x6549('0xd'));var toCsv=require('to-csv');var querystring=require(_0x6549('0xe'));var Papa=require(_0x6549('0xf'));var Redis=require(_0x6549('0x10'));var authService=require(_0x6549('0x11'));var qs=require(_0x6549('0x12'));var as=require(_0x6549('0x13'));var hardwareService=require('../../config/license/hardware');var logger=require('../../config/logger')(_0x6549('0x14'));var utils=require(_0x6549('0x15'));var config=require(_0x6549('0x16'));var licenseUtil=require(_0x6549('0x17'));var db=require(_0x6549('0x18'))['db'];function respondWithStatusCode(_0x5bc018,_0x4dfb06){_0x4dfb06=_0x4dfb06||0xcc;return function(_0x3f844f){if(_0x3f844f){return _0x5bc018[_0x6549('0x19')](_0x4dfb06);}return _0x5bc018['status'](_0x4dfb06)[_0x6549('0x1a')]();};}function respondWithResult(_0x150fc8,_0x195d25){_0x195d25=_0x195d25||0xc8;return function(_0x12b068){if(_0x12b068){return _0x150fc8[_0x6549('0x1b')](_0x195d25)[_0x6549('0x1c')](_0x12b068);}};}function respondWithFilteredResult(_0x55c112,_0x5db86d){return function(_0x384f75){if(_0x384f75){var _0x25da29=typeof _0x5db86d['offset']===_0x6549('0x1d')&&typeof _0x5db86d[_0x6549('0x1e')]===_0x6549('0x1d');var _0x387e60=_0x384f75[_0x6549('0x1f')];var _0x53b12b=_0x25da29?0x0:_0x5db86d['offset'];var _0x26a212=_0x25da29?_0x384f75['count']:_0x5db86d['offset']+_0x5db86d[_0x6549('0x1e')];var _0x1e5079;if(_0x26a212>=_0x387e60){_0x26a212=_0x387e60;_0x1e5079=0xc8;}else{_0x1e5079=0xce;}_0x55c112[_0x6549('0x1b')](_0x1e5079);return _0x55c112[_0x6549('0x20')](_0x6549('0x21'),_0x53b12b+'-'+_0x26a212+'/'+_0x387e60)['json'](_0x384f75);}return null;};}function patchUpdates(_0x228117){return function(_0x4b40c1){try{jsonpatch[_0x6549('0x22')](_0x4b40c1,_0x228117,!![]);}catch(_0x72322b){return BPromise[_0x6549('0x23')](_0x72322b);}return _0x4b40c1[_0x6549('0x24')]();};}function saveUpdates(_0x22bcf8,_0x12d547){return function(_0x427b47){if(_0x427b47){return _0x427b47[_0x6549('0x25')](_0x22bcf8)[_0x6549('0x26')](function(_0x6ae00c){return _0x6ae00c;});}return null;};}function removeEntity(_0x40d3f9,_0x1fbfa4){return function(_0x23c0ba){if(_0x23c0ba){return _0x23c0ba['destroy']()[_0x6549('0x26')](function(){_0x40d3f9[_0x6549('0x1b')](0xcc)['end']();});}};}function handleEntityNotFound(_0x126967,_0x29f89e){return function(_0x3768cb){if(!_0x3768cb){_0x126967['sendStatus'](0x194);}return _0x3768cb;};}function handleError(_0x31a95,_0xfb51a1){_0xfb51a1=_0xfb51a1||0x1f4;return function(_0x14de1f){logger[_0x6549('0x27')](_0x14de1f[_0x6549('0x28')]);if(_0x14de1f[_0x6549('0x29')]){delete _0x14de1f[_0x6549('0x29')];}_0x31a95[_0x6549('0x1b')](_0xfb51a1)['send'](_0x14de1f);};}exports[_0x6549('0x2a')]=function(_0x136518,_0x17fdfb){var _0x4c605c={},_0x3f1502={},_0x4acaf5={'count':0x0,'rows':[]};var _0x4f0ad1=_['map'](db[_0x6549('0x2b')][_0x6549('0x2c')],function(_0x4f3069){return{'name':_0x4f3069[_0x6549('0x2d')],'type':_0x4f3069[_0x6549('0x2e')][_0x6549('0x2f')]};});_0x3f1502[_0x6549('0x30')]=_[_0x6549('0x31')](_0x4f0ad1,_0x6549('0x29'));_0x3f1502[_0x6549('0x32')]=_['keys'](_0x136518[_0x6549('0x32')]);_0x3f1502[_0x6549('0x33')]=_[_0x6549('0x34')](_0x3f1502[_0x6549('0x30')],_0x3f1502[_0x6549('0x32')]);_0x4c605c[_0x6549('0x35')]=_['intersection'](_0x3f1502[_0x6549('0x30')],qs['fields'](_0x136518[_0x6549('0x32')]['fields']));_0x4c605c[_0x6549('0x35')]=_0x4c605c[_0x6549('0x35')][_0x6549('0x36')]?_0x4c605c['attributes']:_0x3f1502[_0x6549('0x30')];if(!_0x136518[_0x6549('0x32')][_0x6549('0x37')](_0x6549('0x38'))){_0x4c605c['limit']=qs['limit'](_0x136518['query'][_0x6549('0x1e')]);_0x4c605c[_0x6549('0x39')]=qs['offset'](_0x136518[_0x6549('0x32')][_0x6549('0x39')]);}_0x4c605c[_0x6549('0x3a')]=qs[_0x6549('0x3b')](_0x136518[_0x6549('0x32')]['sort']);_0x4c605c['where']=qs[_0x6549('0x33')](_[_0x6549('0x3c')](_0x136518[_0x6549('0x32')],_0x3f1502[_0x6549('0x33')]),_0x4f0ad1);if(_0x136518[_0x6549('0x32')][_0x6549('0x3d')]){_0x4c605c[_0x6549('0x3e')]=_[_0x6549('0x3f')](_0x4c605c[_0x6549('0x3e')],{'$or':_[_0x6549('0x31')](_0x4f0ad1,function(_0x525f82){if(_0x525f82[_0x6549('0x2e')]!==_0x6549('0x40')){var _0x2ea977={};_0x2ea977[_0x525f82[_0x6549('0x29')]]={'$like':'%'+_0x136518[_0x6549('0x32')]['filter']+'%'};return _0x2ea977;}})});}_0x4c605c=_['merge']({},_0x4c605c,_0x136518['options']);var _0x22b919={'where':_0x4c605c[_0x6549('0x3e')]};return db[_0x6549('0x2b')][_0x6549('0x1f')](_0x22b919)['then'](function(_0x56ce9f){_0x4acaf5[_0x6549('0x1f')]=_0x56ce9f;if(_0x136518[_0x6549('0x32')][_0x6549('0x41')]){_0x4c605c['include']=[{'all':!![]}];}return db[_0x6549('0x2b')]['findAll'](_0x4c605c);})[_0x6549('0x26')](function(_0x2ec614){_0x4acaf5[_0x6549('0x42')]=_0x2ec614;return _0x4acaf5;})[_0x6549('0x26')](respondWithFilteredResult(_0x17fdfb,_0x4c605c))[_0x6549('0x43')](handleError(_0x17fdfb,null));};exports[_0x6549('0x44')]=function(_0xbbfdc9,_0x4deaab){var _0x132625={'raw':!![],'where':{'id':_0xbbfdc9[_0x6549('0x45')]['id']}},_0x309f45={};_0x309f45[_0x6549('0x30')]=_[_0x6549('0x46')](db[_0x6549('0x2b')][_0x6549('0x2c')]);_0x309f45[_0x6549('0x32')]=_[_0x6549('0x46')](_0xbbfdc9[_0x6549('0x32')]);_0x309f45[_0x6549('0x33')]=_[_0x6549('0x34')](_0x309f45[_0x6549('0x30')],_0x309f45[_0x6549('0x32')]);_0x132625[_0x6549('0x35')]=_[_0x6549('0x34')](_0x309f45['model'],qs[_0x6549('0x47')](_0xbbfdc9[_0x6549('0x32')][_0x6549('0x47')]));_0x132625[_0x6549('0x35')]=_0x132625['attributes'][_0x6549('0x36')]?_0x132625['attributes']:_0x309f45[_0x6549('0x30')];if(_0xbbfdc9[_0x6549('0x32')]['includeAll']){_0x132625[_0x6549('0x48')]=[{'all':!![]}];}_0x132625=_[_0x6549('0x3f')]({},_0x132625,_0xbbfdc9[_0x6549('0x49')]);return db[_0x6549('0x2b')][_0x6549('0x4a')](_0x132625)['then'](handleEntityNotFound(_0x4deaab,null))['then'](respondWithResult(_0x4deaab,null))[_0x6549('0x43')](handleError(_0x4deaab,null));};exports[_0x6549('0x4b')]=function(_0x41d675,_0x1712f3){return db[_0x6549('0x2b')]['describe']()[_0x6549('0x26')](respondWithResult(_0x1712f3,null))[_0x6549('0x43')](handleError(_0x1712f3,null));};exports[_0x6549('0x25')]=function(_0x6121af,_0xa4c650){if(_0x6121af[_0x6549('0x4c')][_0x6549('0x4d')]){delete _0x6121af[_0x6549('0x4c')]['uniqueid'];}return db[_0x6549('0x2b')]['find']({'where':{'uniqueid':_0x6121af[_0x6549('0x45')]['id']}})[_0x6549('0x26')](handleEntityNotFound(_0xa4c650,null))[_0x6549('0x26')](saveUpdates(_0x6121af['body'],null))[_0x6549('0x26')](respondWithResult(_0xa4c650,null))[_0x6549('0x43')](handleError(_0xa4c650,null));};exports[_0x6549('0x4e')]=function(_0x5300c8,_0x19ac50,_0x17d7ce){return db[_0x6549('0x2b')][_0x6549('0x4f')]({'raw':![],'where':{'VoiceQueueId':_0x5300c8[_0x6549('0x45')]['id']},'attributes':[[db[_0x6549('0x50')]['fn']('COUNT',db[_0x6549('0x50')]['fn']('IF',db['sequelize'][_0x6549('0x51')](_0x6549('0x52')))),_0x6549('0x53')],[db[_0x6549('0x50')]['fn'](_0x6549('0x54'),db[_0x6549('0x50')]['fn']('IF',db[_0x6549('0x50')][_0x6549('0x51')](_0x6549('0x55')))),_0x6549('0x56')],[db[_0x6549('0x50')]['fn'](_0x6549('0x54'),db['sequelize']['fn']('IF',db[_0x6549('0x50')][_0x6549('0x51')](_0x6549('0x57')))),_0x6549('0x58')],[db[_0x6549('0x50')]['fn'](_0x6549('0x54'),db[_0x6549('0x50')]['fn']('IF',db[_0x6549('0x50')]['literal'](_0x6549('0x59')))),_0x6549('0x5a')],[db[_0x6549('0x50')]['fn'](_0x6549('0x54'),db[_0x6549('0x50')]['fn']('IF',db[_0x6549('0x50')][_0x6549('0x51')](_0x6549('0x5b')))),'dropContacts'],[db[_0x6549('0x50')]['fn'](_0x6549('0x54'),db[_0x6549('0x50')]['fn']('IF',db[_0x6549('0x50')][_0x6549('0x51')](_0x6549('0x5c')))),'abandonedContacts'],[db[_0x6549('0x50')]['fn'](_0x6549('0x54'),db['sequelize']['fn']('IF',db[_0x6549('0x50')][_0x6549('0x51')](_0x6549('0x5d')))),'reCallContacts'],[db[_0x6549('0x50')]['fn'](_0x6549('0x54'),db['sequelize']['fn']('IF',db[_0x6549('0x50')]['literal'](_0x6549('0x5e')))),'answeringMachine']]})[_0x6549('0x26')](handleEntityNotFound(_0x19ac50,null))[_0x6549('0x26')](respondWithResult(_0x19ac50,null))[_0x6549('0x43')](handleError(_0x19ac50,null));};exports[_0x6549('0x5f')]=function(_0x2da535,_0x45eb28,_0x3b01d9){return db[_0x6549('0x2b')][_0x6549('0x4f')]({'raw':![],'where':{'CampaignId':_0x2da535[_0x6549('0x45')]['id']},'attributes':[[db[_0x6549('0x50')]['fn'](_0x6549('0x54'),db[_0x6549('0x50')]['fn']('IF',db[_0x6549('0x50')]['literal'](_0x6549('0x52')))),_0x6549('0x53')],[db['sequelize']['fn'](_0x6549('0x54'),db[_0x6549('0x50')]['fn']('IF',db[_0x6549('0x50')][_0x6549('0x51')]('`state`\x20=\x203,\x201,\x20null'))),_0x6549('0x56')],[db[_0x6549('0x50')]['fn'](_0x6549('0x54'),db[_0x6549('0x50')]['fn']('IF',db['sequelize'][_0x6549('0x51')]('`state`\x20=\x205,\x201,\x20null'))),_0x6549('0x58')],[db[_0x6549('0x50')]['fn'](_0x6549('0x54'),db[_0x6549('0x50')]['fn']('IF',db[_0x6549('0x50')][_0x6549('0x51')](_0x6549('0x59')))),_0x6549('0x5a')],[db[_0x6549('0x50')]['fn'](_0x6549('0x54'),db['sequelize']['fn']('IF',db[_0x6549('0x50')][_0x6549('0x51')](_0x6549('0x5b')))),_0x6549('0x60')],[db[_0x6549('0x50')]['fn'](_0x6549('0x54'),db['sequelize']['fn']('IF',db['sequelize'][_0x6549('0x51')](_0x6549('0x5c')))),_0x6549('0x61')],[db['sequelize']['fn'](_0x6549('0x54'),db[_0x6549('0x50')]['fn']('IF',db['sequelize'][_0x6549('0x51')](_0x6549('0x5d')))),_0x6549('0x62')],[db[_0x6549('0x50')]['fn'](_0x6549('0x54'),db[_0x6549('0x50')]['fn']('IF',db[_0x6549('0x50')][_0x6549('0x51')]('`state`\x20=\x2019,\x201,\x20null'))),_0x6549('0x63')]]})['then'](handleEntityNotFound(_0x45eb28,null))[_0x6549('0x26')](respondWithResult(_0x45eb28,null))[_0x6549('0x43')](handleError(_0x45eb28,null));};exports['moveContactsQueueCampaignHopperFinal']=function(_0x372b67,_0x2c00a1,_0x2e6b4b){return db['VoiceQueue'][_0x6549('0x4a')]({'where':{'id':_0x372b67[_0x6549('0x45')]['id']}})[_0x6549('0x26')](handleEntityNotFound(_0x2c00a1,null))[_0x6549('0x26')](function(_0x15b906){var _0x34c5f9;if(_0x15b906){_0x34c5f9=squel['insert']()[_0x6549('0x64')](_0x6549('0x65'))[_0x6549('0x66')](['phone','scheduledAt','ContactId',_0x6549('0x67'),_0x6549('0x68'),_0x6549('0x69'),'updatedAt'],squel['select']()[_0x6549('0x6a')]('ANY_VALUE(calleridnum)',_0x6549('0x6b'))[_0x6549('0x6a')](_0x6549('0x6c'),_0x6549('0x6d'))[_0x6549('0x6a')](_0x6549('0x6e'),_0x6549('0x6f'))['field'](_0x6549('0x70'),_0x6549('0x67'))[_0x6549('0x6a')]('ANY_VALUE(VoiceQueueId)',_0x6549('0x68'))[_0x6549('0x6a')](_0x6549('0x6c'),_0x6549('0x69'))[_0x6549('0x6a')](_0x6549('0x6c'),_0x6549('0x71'))['from'](_0x6549('0x72'))['where'](_0x6549('0x73'),_0x372b67[_0x6549('0x45')]['id'][_0x6549('0x74')]())[_0x6549('0x3e')](_0x6549('0x75'),_0x372b67[_0x6549('0x4c')][_0x6549('0x76')][_0x6549('0x74')]())['where'](_0x6549('0x77'))[_0x6549('0x3e')](_0x6549('0x78'),squel[_0x6549('0x79')]()[_0x6549('0x6a')](_0x6549('0x6b'))[_0x6549('0x7a')](_0x6549('0x65'))[_0x6549('0x3e')](_0x6549('0x73'),_0x372b67['params']['id'][_0x6549('0x74')]()))[_0x6549('0x3e')](_0x6549('0x78'),squel[_0x6549('0x79')]()[_0x6549('0x6a')](_0x6549('0x7b'))[_0x6549('0x7a')](_0x6549('0x72'))[_0x6549('0x3e')](_0x6549('0x73'),_0x372b67[_0x6549('0x45')]['id'][_0x6549('0x74')]())[_0x6549('0x3e')](_0x6549('0x7c')))[_0x6549('0x7d')](_0x6549('0x6f')))[_0x6549('0x74')]();return db[_0x6549('0x50')]['query'](_0x34c5f9);}return[];})[_0x6549('0x26')](respondWithResult(_0x2c00a1,null))[_0x6549('0x43')](handleError(_0x2c00a1,null));};exports[_0x6549('0x7e')]=function(_0x35bad6,_0x371d8a,_0xfde69e){return db[_0x6549('0x7f')][_0x6549('0x4a')]({'where':{'id':_0x35bad6[_0x6549('0x45')]['id']}})[_0x6549('0x26')](handleEntityNotFound(_0x371d8a,null))[_0x6549('0x26')](function(_0x1da2d7){var _0x348d55;if(_0x1da2d7){_0x348d55=squel[_0x6549('0x80')]()[_0x6549('0x64')](_0x6549('0x65'))[_0x6549('0x66')](['phone',_0x6549('0x6d'),_0x6549('0x6f'),_0x6549('0x67'),_0x6549('0x81'),_0x6549('0x69'),_0x6549('0x71')],squel[_0x6549('0x79')]()['field'](_0x6549('0x82'),'phone')['field'](_0x6549('0x6c'),'scheduledAt')[_0x6549('0x6a')](_0x6549('0x6e'),_0x6549('0x6f'))[_0x6549('0x6a')](_0x6549('0x70'),'ListId')[_0x6549('0x6a')]('ANY_VALUE(CampaignId)',_0x6549('0x81'))[_0x6549('0x6a')](_0x6549('0x6c'),'createdAt')[_0x6549('0x6a')](_0x6549('0x6c'),'updatedAt')['from'](_0x6549('0x72'))[_0x6549('0x3e')](_0x6549('0x83'),_0x35bad6[_0x6549('0x45')]['id'][_0x6549('0x74')]())[_0x6549('0x3e')](_0x6549('0x75'),_0x35bad6[_0x6549('0x4c')][_0x6549('0x76')][_0x6549('0x74')]())[_0x6549('0x3e')](_0x6549('0x77'))[_0x6549('0x3e')](_0x6549('0x78'),squel[_0x6549('0x79')]()[_0x6549('0x6a')](_0x6549('0x6b'))[_0x6549('0x7a')](_0x6549('0x65'))['where']('CampaignId\x20=\x20?',_0x35bad6[_0x6549('0x45')]['id'][_0x6549('0x74')]()))[_0x6549('0x3e')](_0x6549('0x78'),squel[_0x6549('0x79')]()[_0x6549('0x6a')](_0x6549('0x7b'))[_0x6549('0x7a')](_0x6549('0x72'))[_0x6549('0x3e')]('CampaignId\x20=\x20?',_0x35bad6['params']['id']['toString']())[_0x6549('0x3e')](_0x6549('0x7c')))[_0x6549('0x7d')](_0x6549('0x6f')))[_0x6549('0x74')]();return db['sequelize'][_0x6549('0x32')](_0x348d55);}return[];})[_0x6549('0x26')](respondWithResult(_0x371d8a,null))[_0x6549('0x43')](handleError(_0x371d8a,null));};exports[_0x6549('0x84')]=function(_0x230874,_0x3be369,_0xaf1a80){return db[_0x6549('0x85')][_0x6549('0x86')]({'where':{'VoiceQueueId':_0x230874[_0x6549('0x4c')][_0x6549('0x68')],'CampaignId':_0x230874['body'][_0x6549('0x81')],'ContactId':_0x230874[_0x6549('0x4c')][_0x6549('0x6f')]}})[_0x6549('0x26')](handleEntityNotFound(_0x3be369,null))['then'](function(_0x158c92){if(_0x158c92){return _0x158c92;}return null;})[_0x6549('0x26')](respondWithResult(_0x3be369,null))[_0x6549('0x43')](handleError(_0x3be369,null));};
\ No newline at end of file
index c9493fb..53aed8f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0x4cbf=['api','moment','bluebird','request-promise','rimraf','define','CmHopperFinal','calleridnum','uniqueid','lodash','../../config/logger'];(function(_0x5b0cc1,_0x4d668d){var _0x2e379b=function(_0x23829f){while(--_0x23829f){_0x5b0cc1['push'](_0x5b0cc1['shift']());}};_0x2e379b(++_0x4d668d);}(_0x4cbf,0xfb));var _0xf4cb=function(_0x17d9e3,_0x1f969c){_0x17d9e3=_0x17d9e3-0x0;var _0x14192d=_0x4cbf[_0x17d9e3];return _0x14192d;};'use strict';var _=require(_0xf4cb('0x0'));var util=require('util');var logger=require(_0xf4cb('0x1'))(_0xf4cb('0x2'));var moment=require(_0xf4cb('0x3'));var BPromise=require(_0xf4cb('0x4'));var rp=require(_0xf4cb('0x5'));var fs=require('fs');var path=require('path');var rimraf=require(_0xf4cb('0x6'));var config=require('../../config/environment');var attributes=require('./cmHopperFinal.attributes');module['exports']=function(_0x224c16,_0x16b561){return _0x224c16[_0xf4cb('0x7')](_0xf4cb('0x8'),attributes,{'tableName':'cm_hopper_final','paranoid':![],'indexes':[{'name':_0xf4cb('0x9'),'fields':[_0xf4cb('0x9')]},{'name':_0xf4cb('0xa'),'fields':[_0xf4cb('0xa')]}],'timestamps':!![]});};
\ No newline at end of file
index a48d3df..e26a22d 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(_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
+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(_0x4fe0ce,_0x4868a1){var _0x3be5d4=function(_0xd0a47c){while(--_0xd0a47c){_0x4fe0ce['push'](_0x4fe0ce['shift']());}};_0x3be5d4(++_0x4868a1);}(_0xb10b,0x12a));var _0xbb10=function(_0x1c4ff0,_0x2c93cb){_0x1c4ff0=_0x1c4ff0-0x0;var _0x392915=_0xb10b[_0x1c4ff0];return _0x392915;};'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 59a3b22..9bee3c6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0x85f8=['./cmHopperFinal.controller','get','index','/describe','isAuthenticated','describe','/:id','show','/voice/queue/countAttributes/:id','countContactsQueueCampaignHopperFinal','countContactsIvrCampaignHopperFinal','post','/voice/queue/moveContacts/:id','/voice/campaign/moveContacts/:id','moveContactsIvrCampaignHopperFinal','/checkContactHopper','checkContactHopper','put','update','multer','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../config/environment'];(function(_0x3d67d1,_0x309965){var _0x43cc6f=function(_0xd125ae){while(--_0xd125ae){_0x3d67d1['push'](_0x3d67d1['shift']());}};_0x43cc6f(++_0x309965);}(_0x85f8,0xd7));var _0x885f=function(_0xf1dca6,_0x5a9572){_0xf1dca6=_0xf1dca6-0x0;var _0xb272c3=_0x85f8[_0xf1dca6];return _0xb272c3;};'use strict';var multer=require(_0x885f('0x0'));var util=require(_0x885f('0x1'));var path=require(_0x885f('0x2'));var timeout=require(_0x885f('0x3'));var express=require(_0x885f('0x4'));var router=express[_0x885f('0x5')]();var fs_extra=require(_0x885f('0x6'));var auth=require(_0x885f('0x7'));var interaction=require('../../components/interaction/service');var config=require(_0x885f('0x8'));var controller=require(_0x885f('0x9'));router[_0x885f('0xa')]('/',auth['isAuthenticated'](),controller[_0x885f('0xb')]);router[_0x885f('0xa')](_0x885f('0xc'),auth[_0x885f('0xd')](),controller[_0x885f('0xe')]);router[_0x885f('0xa')](_0x885f('0xf'),auth[_0x885f('0xd')](),controller[_0x885f('0x10')]);router[_0x885f('0xa')](_0x885f('0x11'),auth[_0x885f('0xd')](),controller[_0x885f('0x12')]);router[_0x885f('0xa')]('/campaign/countAttributes/:id',auth[_0x885f('0xd')](),controller[_0x885f('0x13')]);router[_0x885f('0x14')](_0x885f('0x15'),auth['isAuthenticated'](),controller['moveContactsQueueCampaignHopperFinal']);router['post'](_0x885f('0x16'),auth[_0x885f('0xd')](),controller[_0x885f('0x17')]);router['post'](_0x885f('0x18'),auth[_0x885f('0xd')](),controller[_0x885f('0x19')]);router[_0x885f('0x1a')](_0x885f('0xf'),auth[_0x885f('0xd')](),controller[_0x885f('0x1b')]);module['exports']=router;
\ No newline at end of file
index 72974bf..b3eb3b2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0xfdbf=['BOOLEAN','sequelize','exports','INTEGER','DATE','STRING'];(function(_0x1ccdf7,_0x215d5a){var _0x52a0ae=function(_0x40324a){while(--_0x40324a){_0x1ccdf7['push'](_0x1ccdf7['shift']());}};_0x52a0ae(++_0x215d5a);}(_0xfdbf,0xb5));var _0xffdb=function(_0x5bd426,_0x4878e5){_0x5bd426=_0x5bd426-0x0;var _0x23a7eb=_0xfdbf[_0x5bd426];return _0x23a7eb;};'use strict';var Sequelize=require(_0xffdb('0x0'));module[_0xffdb('0x1')]={'state':{'type':Sequelize[_0xffdb('0x2')](0x2)},'statedesc':{'type':Sequelize['STRING']},'scheduledat':{'type':Sequelize[_0xffdb('0x3')]},'countbusyretry':{'type':Sequelize[_0xffdb('0x2')],'defaultValue':0x0},'countcongestionretry':{'type':Sequelize[_0xffdb('0x2')],'defaultValue':0x0},'countnoanswerretry':{'type':Sequelize[_0xffdb('0x2')],'defaultValue':0x0},'countglobal':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'uniqueid':{'type':Sequelize[_0xffdb('0x4')]},'originatecalleridnum':{'type':Sequelize['STRING']},'originatecalleridname':{'type':Sequelize[_0xffdb('0x4')]},'calleridnum':{'type':Sequelize[_0xffdb('0x4')]},'calleridname':{'type':Sequelize[_0xffdb('0x4')]},'starttime':{'type':Sequelize[_0xffdb('0x3')]},'responsetime':{'type':Sequelize[_0xffdb('0x3')]},'answertime':{'type':Sequelize[_0xffdb('0x3')]},'droptime':{'type':Sequelize[_0xffdb('0x3')]},'endtime':{'type':Sequelize[_0xffdb('0x3')]},'ringtime':{'type':Sequelize[_0xffdb('0x2')],'defaultValue':0x0},'holdtime':{'type':Sequelize[_0xffdb('0x2')],'defaultValue':0x0},'talktime':{'type':Sequelize[_0xffdb('0x2')],'defaultValue':0x0},'followuptime':{'type':Sequelize[_0xffdb('0x2')],'defaultValue':0x0},'dropreason':{'type':Sequelize[_0xffdb('0x4')]},'campaign':{'type':Sequelize[_0xffdb('0x4')]},'campaigntype':{'type':Sequelize[_0xffdb('0x4')]},'membername':{'type':Sequelize[_0xffdb('0x4')]},'reason':{'type':Sequelize['STRING']},'amd':{'type':Sequelize[_0xffdb('0x5')],'defaultValue':![]},'fax':{'type':Sequelize[_0xffdb('0x5')],'defaultValue':![]},'callback':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'callbackuniqueid':{'type':Sequelize['STRING'],'defaultValue':null},'callbackat':{'type':Sequelize[_0xffdb('0x3')]},'recallme':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'editedat':{'type':Sequelize['DATE']},'edited':{'type':Sequelize[_0xffdb('0x5')],'defaultValue':![]},'countnosuchnumberretry':{'type':Sequelize[_0xffdb('0x2')],'defaultValue':0x0},'countdropretry':{'type':Sequelize[_0xffdb('0x2')],'defaultValue':0x0},'countabandonedretry':{'type':Sequelize[_0xffdb('0x2')],'defaultValue':0x0},'countmachineretry':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'countagentrejectretry':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'dialTimezone':{'type':Sequelize[_0xffdb('0x4')]}};
\ No newline at end of file
index b8b7d3e..49a7e14 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0x510a=['json','undefined','limit','offset','count','set','reject','then','destroy','error','name','index','rawAttributes','fieldName','type','key','model','map','query','keys','filters','attributes','intersection','fields','length','nolimit','sort','where','pick','filter','VIRTUAL','merge','CmHopperHistory','include','findAll','params','includeAll','options','catch','create','body','describe','update','uniqueid','find','eml-format','rimraf','zip-dir','fast-json-patch','bluebird','mustache','path','ejs','fs-extra','lodash','jsforce','desk.js','to-csv','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x510a,0x74));var _0xa510=function(_0xd14cab,_0x3b52ef){_0xd14cab=_0xd14cab-0x0;var _0x14cf61=_0x510a[_0xd14cab];return _0x14cf61;};'use strict';var emlformat=require(_0xa510('0x0'));var rimraf=require(_0xa510('0x1'));var zipdir=require(_0xa510('0x2'));var jsonpatch=require(_0xa510('0x3'));var rp=require('request-promise');var moment=require('moment');var BPromise=require(_0xa510('0x4'));var Mustache=require(_0xa510('0x5'));var util=require('util');var path=require(_0xa510('0x6'));var sox=require('sox');var csv=require('to-csv');var ejs=require(_0xa510('0x7'));var fs=require('fs');var fs_extra=require(_0xa510('0x8'));var _=require(_0xa510('0x9'));var squel=require('squel');var crypto=require('crypto');var jsforce=require(_0xa510('0xa'));var deskjs=require(_0xa510('0xb'));var toCsv=require(_0xa510('0xc'));var querystring=require(_0xa510('0xd'));var Papa=require(_0xa510('0xe'));var Redis=require(_0xa510('0xf'));var authService=require(_0xa510('0x10'));var qs=require(_0xa510('0x11'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require('../../config/license/hardware');var logger=require('../../config/logger')(_0xa510('0x12'));var utils=require(_0xa510('0x13'));var config=require(_0xa510('0x14'));var licenseUtil=require(_0xa510('0x15'));var db=require(_0xa510('0x16'))['db'];function respondWithStatusCode(_0x33342f,_0x563731){_0x563731=_0x563731||0xcc;return function(_0x41562b){if(_0x41562b){return _0x33342f[_0xa510('0x17')](_0x563731);}return _0x33342f[_0xa510('0x18')](_0x563731)[_0xa510('0x19')]();};}function respondWithResult(_0x4a4fc8,_0x36f847){_0x36f847=_0x36f847||0xc8;return function(_0x1fdf44){if(_0x1fdf44){return _0x4a4fc8[_0xa510('0x18')](_0x36f847)[_0xa510('0x1a')](_0x1fdf44);}};}function respondWithFilteredResult(_0x1f23ec,_0x5e8d74){return function(_0x38b96a){if(_0x38b96a){var _0x161a02=typeof _0x5e8d74['offset']===_0xa510('0x1b')&&typeof _0x5e8d74[_0xa510('0x1c')]===_0xa510('0x1b');var _0x65b1bb=_0x38b96a['count'];var _0x3f3c05=_0x161a02?0x0:_0x5e8d74[_0xa510('0x1d')];var _0x15c3ea=_0x161a02?_0x38b96a[_0xa510('0x1e')]:_0x5e8d74[_0xa510('0x1d')]+_0x5e8d74[_0xa510('0x1c')];var _0x10fcae;if(_0x15c3ea>=_0x65b1bb){_0x15c3ea=_0x65b1bb;_0x10fcae=0xc8;}else{_0x10fcae=0xce;}_0x1f23ec[_0xa510('0x18')](_0x10fcae);return _0x1f23ec[_0xa510('0x1f')]('Content-Range',_0x3f3c05+'-'+_0x15c3ea+'/'+_0x65b1bb)[_0xa510('0x1a')](_0x38b96a);}return null;};}function patchUpdates(_0x449e03){return function(_0x169379){try{jsonpatch['apply'](_0x169379,_0x449e03,!![]);}catch(_0x950ea5){return BPromise[_0xa510('0x20')](_0x950ea5);}return _0x169379['save']();};}function saveUpdates(_0x2c96d7,_0x160be7){return function(_0x1800fa){if(_0x1800fa){return _0x1800fa['update'](_0x2c96d7)[_0xa510('0x21')](function(_0x10a2c7){return _0x10a2c7;});}return null;};}function removeEntity(_0x2d61db,_0x5b71fc){return function(_0x4b29d5){if(_0x4b29d5){return _0x4b29d5[_0xa510('0x22')]()[_0xa510('0x21')](function(){_0x2d61db['status'](0xcc)[_0xa510('0x19')]();});}};}function handleEntityNotFound(_0x3c1089,_0x96ea8d){return function(_0x51c8eb){if(!_0x51c8eb){_0x3c1089[_0xa510('0x17')](0x194);}return _0x51c8eb;};}function handleError(_0x36f968,_0x4cb91b){_0x4cb91b=_0x4cb91b||0x1f4;return function(_0x52d91d){logger[_0xa510('0x23')](_0x52d91d['stack']);if(_0x52d91d[_0xa510('0x24')]){delete _0x52d91d[_0xa510('0x24')];}_0x36f968[_0xa510('0x18')](_0x4cb91b)['send'](_0x52d91d);};}exports[_0xa510('0x25')]=function(_0x55d774,_0x447fc6){var _0x371381={},_0x49aab2={},_0x3c677={'count':0x0,'rows':[]};var _0x2d40d1=_['map'](db['CmHopperHistory'][_0xa510('0x26')],function(_0xf850fc){return{'name':_0xf850fc[_0xa510('0x27')],'type':_0xf850fc[_0xa510('0x28')][_0xa510('0x29')]};});_0x49aab2[_0xa510('0x2a')]=_[_0xa510('0x2b')](_0x2d40d1,_0xa510('0x24'));_0x49aab2[_0xa510('0x2c')]=_[_0xa510('0x2d')](_0x55d774[_0xa510('0x2c')]);_0x49aab2[_0xa510('0x2e')]=_['intersection'](_0x49aab2[_0xa510('0x2a')],_0x49aab2[_0xa510('0x2c')]);_0x371381[_0xa510('0x2f')]=_[_0xa510('0x30')](_0x49aab2[_0xa510('0x2a')],qs[_0xa510('0x31')](_0x55d774['query'][_0xa510('0x31')]));_0x371381[_0xa510('0x2f')]=_0x371381[_0xa510('0x2f')][_0xa510('0x32')]?_0x371381[_0xa510('0x2f')]:_0x49aab2['model'];if(!_0x55d774[_0xa510('0x2c')]['hasOwnProperty'](_0xa510('0x33'))){_0x371381[_0xa510('0x1c')]=qs['limit'](_0x55d774[_0xa510('0x2c')]['limit']);_0x371381[_0xa510('0x1d')]=qs['offset'](_0x55d774[_0xa510('0x2c')][_0xa510('0x1d')]);}_0x371381['order']=qs[_0xa510('0x34')](_0x55d774['query'][_0xa510('0x34')]);_0x371381[_0xa510('0x35')]=qs[_0xa510('0x2e')](_[_0xa510('0x36')](_0x55d774[_0xa510('0x2c')],_0x49aab2[_0xa510('0x2e')]),_0x2d40d1);if(_0x55d774['query'][_0xa510('0x37')]){_0x371381['where']=_['merge'](_0x371381[_0xa510('0x35')],{'$or':_[_0xa510('0x2b')](_0x2d40d1,function(_0x5d1776){if(_0x5d1776[_0xa510('0x28')]!==_0xa510('0x38')){var _0x26f208={};_0x26f208[_0x5d1776[_0xa510('0x24')]]={'$like':'%'+_0x55d774[_0xa510('0x2c')][_0xa510('0x37')]+'%'};return _0x26f208;}})});}_0x371381=_[_0xa510('0x39')]({},_0x371381,_0x55d774['options']);var _0x595ed8={'where':_0x371381[_0xa510('0x35')]};return db[_0xa510('0x3a')]['count'](_0x595ed8)[_0xa510('0x21')](function(_0x92a2ff){_0x3c677['count']=_0x92a2ff;if(_0x55d774['query']['includeAll']){_0x371381[_0xa510('0x3b')]=[{'all':!![]}];}return db[_0xa510('0x3a')][_0xa510('0x3c')](_0x371381);})['then'](function(_0x4e5937){_0x3c677['rows']=_0x4e5937;return _0x3c677;})[_0xa510('0x21')](respondWithFilteredResult(_0x447fc6,_0x371381))['catch'](handleError(_0x447fc6,null));};exports['show']=function(_0x54930d,_0x17a97e){var _0x4e9889={'raw':!![],'where':{'id':_0x54930d[_0xa510('0x3d')]['id']}},_0x2127d1={};_0x2127d1[_0xa510('0x2a')]=_['keys'](db['CmHopperHistory']['rawAttributes']);_0x2127d1[_0xa510('0x2c')]=_['keys'](_0x54930d['query']);_0x2127d1[_0xa510('0x2e')]=_[_0xa510('0x30')](_0x2127d1['model'],_0x2127d1['query']);_0x4e9889[_0xa510('0x2f')]=_[_0xa510('0x30')](_0x2127d1[_0xa510('0x2a')],qs['fields'](_0x54930d[_0xa510('0x2c')]['fields']));_0x4e9889[_0xa510('0x2f')]=_0x4e9889[_0xa510('0x2f')]['length']?_0x4e9889['attributes']:_0x2127d1[_0xa510('0x2a')];if(_0x54930d[_0xa510('0x2c')][_0xa510('0x3e')]){_0x4e9889[_0xa510('0x3b')]=[{'all':!![]}];}_0x4e9889=_[_0xa510('0x39')]({},_0x4e9889,_0x54930d[_0xa510('0x3f')]);return db[_0xa510('0x3a')]['find'](_0x4e9889)['then'](handleEntityNotFound(_0x17a97e,null))[_0xa510('0x21')](respondWithResult(_0x17a97e,null))[_0xa510('0x40')](handleError(_0x17a97e,null));};exports[_0xa510('0x41')]=function(_0x395192,_0x270627){return db[_0xa510('0x3a')][_0xa510('0x41')](_0x395192[_0xa510('0x42')],{})['then'](respondWithResult(_0x270627,0xc9))['catch'](handleError(_0x270627,null));};exports[_0xa510('0x43')]=function(_0x3eb1f2,_0x40f48d){return db[_0xa510('0x3a')][_0xa510('0x43')]()[_0xa510('0x21')](respondWithResult(_0x40f48d,null))['catch'](handleError(_0x40f48d,null));};exports[_0xa510('0x44')]=function(_0x1886ae,_0x1829c7){if(_0x1886ae['body'][_0xa510('0x45')]){delete _0x1886ae[_0xa510('0x42')][_0xa510('0x45')];}return db[_0xa510('0x3a')][_0xa510('0x46')]({'where':{'uniqueid':_0x1886ae[_0xa510('0x3d')]['id']}})[_0xa510('0x21')](handleEntityNotFound(_0x1829c7,null))['then'](saveUpdates(_0x1886ae[_0xa510('0x42')],null))[_0xa510('0x21')](respondWithResult(_0x1829c7,null))[_0xa510('0x40')](handleError(_0x1829c7,null));};
\ No newline at end of file
index 6056754..a18ceea 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0x48ac=['path','rimraf','../../config/environment','./cmHopperHistory.attributes','exports','cm_hopper_history','endtime','uniqueid','util','api','moment','bluebird'];(function(_0x197e5b,_0x7a7221){var _0x4708a7=function(_0x50a951){while(--_0x50a951){_0x197e5b['push'](_0x197e5b['shift']());}};_0x4708a7(++_0x7a7221);}(_0x48ac,0xe0));var _0xc48a=function(_0x2a9ab0,_0x31324c){_0x2a9ab0=_0x2a9ab0-0x0;var _0x52f90e=_0x48ac[_0x2a9ab0];return _0x52f90e;};'use strict';var _=require('lodash');var util=require(_0xc48a('0x0'));var logger=require('../../config/logger')(_0xc48a('0x1'));var moment=require(_0xc48a('0x2'));var BPromise=require(_0xc48a('0x3'));var rp=require('request-promise');var fs=require('fs');var path=require(_0xc48a('0x4'));var rimraf=require(_0xc48a('0x5'));var config=require(_0xc48a('0x6'));var attributes=require(_0xc48a('0x7'));module[_0xc48a('0x8')]=function(_0x499749,_0x48205f){return _0x499749['define']('CmHopperHistory',attributes,{'tableName':_0xc48a('0x9'),'paranoid':![],'indexes':[{'name':_0xc48a('0xa'),'fields':[_0xc48a('0xa')]},{'name':'uniqueid','fields':[_0xc48a('0xb')]}],'timestamps':!![]});};
\ No newline at end of file
index a2d2b3e..9dd785b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0xde94=['`state`\x20=\x2012,\x201,\x20null','`state`\x20=\x2013,\x201,\x20null','outboundBlacklistCallsDay','`state`\x20=\x2014,\x201,\x20null','outboundOriginateFailureCallsDay','outboundRejectCallsDay','`state`\x20=\x2016,\x201,\x20null','outboundAnswerAgiCallsDay','`state`\x20=\x2020,\x201,\x20null','`state`\x20=\x2022\x20or\x20`state`\x20=\x2023,\x201,\x20null','outboundReCallsDay','GetCampaignHopperHistory','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','jayson/promise','client','http','then','CmHopperHistory,\x20%s,\x20%s','request\x20sent','debug','CmHopperHistory,\x20%s,\x20%s,\x20%s','stringify','code','error','message','info','result','catch','CreateCmHopperHistory','CmHopperHistory','body','options','raw','AvgHandleTime','where','sequelize','col','predictiveIntervalTotalCalls','`state`\x20=\x204,\x201,\x20null','predictiveIntervalAnsweredCalls','`state`\x20=\x2010,\x201,\x20null','predictiveIntervalDroppedCallsTimeout','COUNT','predictiveIntervalDroppedCallsCallersExit','literal','`state`\x20=\x204,\x20`holdtime`,\x20null','predictiveIntervalAvgHoldtime','AVG','`state`\x20=\x204,\x20`talktime`,\x20null','predictiveIntervalAvgTalktime','GetVoiceQueueHopperHistory','findAll','campaign','name','`state`\x20=\x200,\x201,\x20null','`state`\x20=\x203,\x201,\x20null','outboundNoAnswerCallsDay','`state`\x20=\x205,\x201,\x20null','outboundBusyCallsDay','`state`\x20=\x208,\x201,\x20null','outboundCongestionCallsDay','`state`\x20=\x2010\x20,\x201,\x20null','outboundDropCallsDayTimeout','`state`\x20=\x2011\x20,\x201,\x20null','outboundDropCallsDayCallersExit'];(function(_0x55580c,_0xf929d6){var _0x5b5161=function(_0x5d889f){while(--_0x5d889f){_0x55580c['push'](_0x55580c['shift']());}};_0x5b5161(++_0xf929d6);}(_0xde94,0x134));var _0x4de9=function(_0x1f4c92,_0x2f4b0e){_0x1f4c92=_0x1f4c92-0x0;var _0x2f8a88=_0xde94[_0x1f4c92];return _0x2f8a88;};'use strict';var _=require(_0x4de9('0x0'));var util=require(_0x4de9('0x1'));var moment=require(_0x4de9('0x2'));var BPromise=require(_0x4de9('0x3'));var rs=require(_0x4de9('0x4'));var fs=require('fs');var Redis=require(_0x4de9('0x5'));var db=require(_0x4de9('0x6'))['db'];var utils=require(_0x4de9('0x7'));var logger=require(_0x4de9('0x8'))(_0x4de9('0x9'));var config=require('../../config/environment');var jayson=require(_0x4de9('0xa'));var client=jayson[_0x4de9('0xb')][_0x4de9('0xc')]({'port':0x232a});function respondWithRpcPromise(_0x4d08ab,_0x411f00,_0x244ea3){return new BPromise(function(_0x4a65ec,_0x38a351){return client['request'](_0x4d08ab,_0x244ea3)[_0x4de9('0xd')](function(_0x5cfc38){logger['info'](_0x4de9('0xe'),_0x411f00,_0x4de9('0xf'));logger[_0x4de9('0x10')](_0x4de9('0x11'),_0x411f00,_0x4de9('0xf'),JSON[_0x4de9('0x12')](_0x5cfc38));if(_0x5cfc38['error']){if(_0x5cfc38['error'][_0x4de9('0x13')]===0x1f4){logger[_0x4de9('0x14')](_0x4de9('0xe'),_0x411f00,_0x5cfc38[_0x4de9('0x14')]['message']);return _0x38a351(_0x5cfc38[_0x4de9('0x14')][_0x4de9('0x15')]);}logger[_0x4de9('0x14')](_0x4de9('0xe'),_0x411f00,_0x5cfc38[_0x4de9('0x14')][_0x4de9('0x15')]);return _0x4a65ec(_0x5cfc38['error']['message']);}else{logger[_0x4de9('0x16')](_0x4de9('0xe'),_0x411f00,_0x4de9('0xf'));_0x4a65ec(_0x5cfc38[_0x4de9('0x17')][_0x4de9('0x15')]);}})[_0x4de9('0x18')](function(_0x5371b1){logger['error'](_0x4de9('0xe'),_0x411f00,_0x5371b1);_0x38a351(_0x5371b1);});});}exports[_0x4de9('0x19')]=function(_0xe1484e){var _0x310ab1=this;return new Promise(function(_0xf561d5,_0x56a948){return db[_0x4de9('0x1a')]['create'](_0xe1484e[_0x4de9('0x1b')],{'raw':_0xe1484e[_0x4de9('0x1c')]?_0xe1484e[_0x4de9('0x1c')][_0x4de9('0x1d')]===undefined?!![]:![]:!![]})[_0x4de9('0xd')](function(_0x44f99e){logger[_0x4de9('0x16')](_0x4de9('0x19'),_0xe1484e);logger['debug']('CreateCmHopperHistory',_0xe1484e,JSON[_0x4de9('0x12')](_0x44f99e));_0xf561d5(_0x44f99e);})[_0x4de9('0x18')](function(_0x5d9790){logger['error'](_0x4de9('0x19'),_0x5d9790[_0x4de9('0x15')],_0xe1484e);_0x56a948(_0x310ab1[_0x4de9('0x14')](0x1f4,_0x5d9790[_0x4de9('0x15')]));});});};exports[_0x4de9('0x1e')]=function(_0x2724a5){var _0x5cd0e8=this;return new Promise(function(_0x1449da,_0x25a9b8){return db[_0x4de9('0x1a')]['findAll']({'raw':_0x2724a5[_0x4de9('0x1c')]?_0x2724a5[_0x4de9('0x1c')][_0x4de9('0x1d')]===undefined?!![]:![]:!![],'where':_0x2724a5['options']?_0x2724a5['options'][_0x4de9('0x1f')]||null:null,'attributes':[[db[_0x4de9('0x20')]['fn']('COUNT',db[_0x4de9('0x20')][_0x4de9('0x21')]('id')),_0x4de9('0x22')],[db['sequelize']['fn']('COUNT',db[_0x4de9('0x20')]['fn']('IF',db[_0x4de9('0x20')]['literal'](_0x4de9('0x23')))),_0x4de9('0x24')],[db['sequelize']['fn']('COUNT',db[_0x4de9('0x20')]['fn']('IF',db[_0x4de9('0x20')]['literal'](_0x4de9('0x25')))),_0x4de9('0x26')],[db[_0x4de9('0x20')]['fn'](_0x4de9('0x27'),db[_0x4de9('0x20')]['fn']('IF',db['sequelize']['literal']('`state`\x20=\x2011,\x201,\x20null'))),_0x4de9('0x28')],[db[_0x4de9('0x20')]['fn']('AVG',db[_0x4de9('0x20')]['fn']('IF',db[_0x4de9('0x20')][_0x4de9('0x29')](_0x4de9('0x2a')))),_0x4de9('0x2b')],[db['sequelize']['fn'](_0x4de9('0x2c'),db[_0x4de9('0x20')]['fn']('IF',db[_0x4de9('0x20')]['literal'](_0x4de9('0x2d')))),_0x4de9('0x2e')]]})[_0x4de9('0xd')](function(_0x3b2349){logger[_0x4de9('0x16')](_0x4de9('0x1e'),_0x2724a5);logger[_0x4de9('0x10')]('AvgHandleTime',_0x2724a5,JSON[_0x4de9('0x12')](_0x3b2349));_0x1449da(_0x3b2349);})['catch'](function(_0x4742f9){logger[_0x4de9('0x14')](_0x4de9('0x1e'),_0x4742f9['message'],_0x2724a5);_0x25a9b8(_0x5cd0e8['error'](0x1f4,_0x4742f9[_0x4de9('0x15')]));});});};exports[_0x4de9('0x2f')]=function(_0x51854a){var _0x20fbd0=this;return new Promise(function(_0x24b943,_0x312835){return db[_0x4de9('0x1a')][_0x4de9('0x30')]({'raw':_0x51854a[_0x4de9('0x1c')]?_0x51854a[_0x4de9('0x1c')]['raw']===undefined?!![]:![]:!![],'where':_0x51854a[_0x4de9('0x1c')]?_0x51854a[_0x4de9('0x1c')][_0x4de9('0x1f')]||null:null,'attributes':[[_0x4de9('0x31'),_0x4de9('0x32')],[db['sequelize']['fn'](_0x4de9('0x27'),db[_0x4de9('0x20')]['fn']('IF',db[_0x4de9('0x20')]['literal'](_0x4de9('0x33')))),'outboundNoSuchCallsDay'],[db['sequelize']['fn'](_0x4de9('0x27'),db[_0x4de9('0x20')]['fn']('IF',db[_0x4de9('0x20')][_0x4de9('0x29')](_0x4de9('0x34')))),_0x4de9('0x35')],[db[_0x4de9('0x20')]['fn'](_0x4de9('0x27'),db[_0x4de9('0x20')]['fn']('IF',db['sequelize'][_0x4de9('0x29')](_0x4de9('0x23')))),'outboundAnswerCallsDay'],[db[_0x4de9('0x20')]['fn'](_0x4de9('0x27'),db[_0x4de9('0x20')]['fn']('IF',db[_0x4de9('0x20')][_0x4de9('0x29')](_0x4de9('0x36')))),_0x4de9('0x37')],[db['sequelize']['fn'](_0x4de9('0x27'),db['sequelize']['fn']('IF',db[_0x4de9('0x20')][_0x4de9('0x29')](_0x4de9('0x38')))),_0x4de9('0x39')],[db[_0x4de9('0x20')]['fn'](_0x4de9('0x27'),db[_0x4de9('0x20')]['fn']('IF',db['sequelize'][_0x4de9('0x29')](_0x4de9('0x3a')))),_0x4de9('0x3b')],[db[_0x4de9('0x20')]['fn'](_0x4de9('0x27'),db[_0x4de9('0x20')]['fn']('IF',db[_0x4de9('0x20')]['literal'](_0x4de9('0x3c')))),_0x4de9('0x3d')],[db[_0x4de9('0x20')]['fn']('COUNT',db[_0x4de9('0x20')]['fn']('IF',db[_0x4de9('0x20')]['literal'](_0x4de9('0x3e')))),'outboundUnknownCallsDay'],[db[_0x4de9('0x20')]['fn'](_0x4de9('0x27'),db[_0x4de9('0x20')]['fn']('IF',db[_0x4de9('0x20')][_0x4de9('0x29')](_0x4de9('0x3f')))),_0x4de9('0x40')],[db[_0x4de9('0x20')]['fn'](_0x4de9('0x27'),db[_0x4de9('0x20')]['fn']('IF',db[_0x4de9('0x20')]['literal'](_0x4de9('0x41')))),_0x4de9('0x42')],[db[_0x4de9('0x20')]['fn'](_0x4de9('0x27'),db[_0x4de9('0x20')]['fn']('IF',db['sequelize'][_0x4de9('0x29')]('`state`\x20=\x2018,\x201,\x20null'))),_0x4de9('0x43')],[db[_0x4de9('0x20')]['fn'](_0x4de9('0x27'),db[_0x4de9('0x20')]['fn']('IF',db[_0x4de9('0x20')][_0x4de9('0x29')](_0x4de9('0x44')))),_0x4de9('0x45')],[db['sequelize']['fn']('COUNT',db[_0x4de9('0x20')]['fn']('IF',db['sequelize'][_0x4de9('0x29')](_0x4de9('0x46')))),_0x4de9('0x43')],[db[_0x4de9('0x20')]['fn'](_0x4de9('0x27'),db['sequelize']['fn']('IF',db[_0x4de9('0x20')][_0x4de9('0x29')](_0x4de9('0x47')))),_0x4de9('0x48')]],'group':[_0x4de9('0x31')]})['then'](function(_0x4429b1){logger[_0x4de9('0x16')](_0x4de9('0x2f'),_0x51854a);logger['debug']('GetVoiceQueueHopperHistory',_0x51854a,JSON[_0x4de9('0x12')](_0x4429b1));_0x24b943(_0x4429b1);})[_0x4de9('0x18')](function(_0x4179d4){logger[_0x4de9('0x14')]('GetVoiceQueueHopperHistory',_0x4179d4[_0x4de9('0x15')],_0x51854a);_0x312835(_0x20fbd0[_0x4de9('0x14')](0x1f4,_0x4179d4[_0x4de9('0x15')]));});});};exports['GetCampaignHopperHistory']=function(_0x9483f6){var _0x3aab6a=this;return new Promise(function(_0xc9a188,_0xf6d382){return db[_0x4de9('0x1a')][_0x4de9('0x30')]({'raw':_0x9483f6[_0x4de9('0x1c')]?_0x9483f6[_0x4de9('0x1c')][_0x4de9('0x1d')]===undefined?!![]:![]:!![],'where':_0x9483f6['options']?_0x9483f6[_0x4de9('0x1c')][_0x4de9('0x1f')]||null:null,'attributes':[[_0x4de9('0x31'),_0x4de9('0x32')],[db[_0x4de9('0x20')]['fn']('COUNT',db[_0x4de9('0x20')]['col']('id')),'ivrTotalCallsDays'],[db[_0x4de9('0x20')]['fn'](_0x4de9('0x27'),db['sequelize']['fn']('IF',db[_0x4de9('0x20')][_0x4de9('0x29')](_0x4de9('0x23')))),'ivrAnswerCallsDay']],'group':[_0x4de9('0x31')]})[_0x4de9('0xd')](function(_0x94c2f6){logger[_0x4de9('0x16')](_0x4de9('0x49'),_0x9483f6);logger[_0x4de9('0x10')](_0x4de9('0x49'),_0x9483f6,JSON['stringify'](_0x94c2f6));_0xc9a188(_0x94c2f6);})[_0x4de9('0x18')](function(_0x4f0b7e){logger['error'](_0x4de9('0x49'),_0x4f0b7e['message'],_0x9483f6);_0xf6d382(_0x3aab6a[_0x4de9('0x14')](0x1f4,_0x4f0b7e[_0x4de9('0x15')]));});});};
\ No newline at end of file
index f31d5eb..96b3026 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0xbfb1=['describe','/:id','show','post','create','put','util','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./cmHopperHistory.controller','get','isAuthenticated','index','/describe'];(function(_0x1d90ca,_0x3bab16){var _0x28872b=function(_0x3ea71b){while(--_0x3ea71b){_0x1d90ca['push'](_0x1d90ca['shift']());}};_0x28872b(++_0x3bab16);}(_0xbfb1,0x102));var _0x1bfb=function(_0x2442b9,_0x3d87e9){_0x2442b9=_0x2442b9-0x0;var _0x31b571=_0xbfb1[_0x2442b9];return _0x31b571;};'use strict';var multer=require('multer');var util=require(_0x1bfb('0x0'));var path=require('path');var timeout=require('connect-timeout');var express=require(_0x1bfb('0x1'));var router=express[_0x1bfb('0x2')]();var fs_extra=require(_0x1bfb('0x3'));var auth=require(_0x1bfb('0x4'));var interaction=require(_0x1bfb('0x5'));var config=require(_0x1bfb('0x6'));var controller=require(_0x1bfb('0x7'));router[_0x1bfb('0x8')]('/',auth[_0x1bfb('0x9')](),controller[_0x1bfb('0xa')]);router[_0x1bfb('0x8')](_0x1bfb('0xb'),auth['isAuthenticated'](),controller[_0x1bfb('0xc')]);router['get'](_0x1bfb('0xd'),auth[_0x1bfb('0x9')](),controller[_0x1bfb('0xe')]);router[_0x1bfb('0xf')]('/',auth['isAuthenticated'](),controller[_0x1bfb('0x10')]);router[_0x1bfb('0x11')](_0x1bfb('0xd'),auth[_0x1bfb('0x9')](),controller['update']);module['exports']=router;
\ No newline at end of file
index ab7046e..3a2ebb9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0xe292=['STRING','name'];(function(_0x5bcdf5,_0x3f1349){var _0xee4a5f=function(_0x4bf225){while(--_0x4bf225){_0x5bcdf5['push'](_0x5bcdf5['shift']());}};_0xee4a5f(++_0x3f1349);}(_0xe292,0x19e));var _0x2e29=function(_0x9471e1,_0x4d80a1){_0x9471e1=_0x9471e1-0x0;var _0x48e3ff=_0xe292[_0x9471e1];return _0x48e3ff;};'use strict';var Sequelize=require('sequelize');module['exports']={'name':{'type':Sequelize[_0x2e29('0x0')],'unique':_0x2e29('0x1'),'allowNull':![],'validate':{'notEmpty':!![]}},'description':{'type':Sequelize['STRING']},'dialPrefix':{'type':Sequelize['STRING']}};
\ No newline at end of file
index e4e7eb4..17a83bc 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0xeeeb=['ids','success','dataValues','errors','push','message','getContacts','CmCustomField','CustomFields','format','cf_%d','hasOwnProperty','raw','getContactsCsv','OrderBy','select','from','c.ListId\x20=\x20?','c.deletedAt\x20is\x20null','distinct','customField_','alias','field','cm_contact_has_items','ItemTypeId\x20=\x20?','CmContactId\x20=\x20c.id','description','description_additionalPhone_','toString','isEmpty','now','writeFileSync','/tmp/list_%d_%s.csv','Content-disposition','attachment;\x20filename=','list_%d_%s.csv','setHeader','download','sequelize','transaction','Sequelize','TEXT','text','number','switch','defaultValue','queryInterface','addColumn','cm_contacts','cf_%s','getCustomFields','findAndCountAll','getGlobalCustomFields','addAgents','emit','removeAgents','userCmList:remove','User','getAgents','spread','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','papaparse','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../config/utils','../../config/environment','../../mysqldb','redis','defaults','localhost','socket.io-emitter','./cmList.socket','sendStatus','end','status','offset','undefined','count','limit','Content-Range','apply','reject','save','update','then','destroy','get','Lists','UserProfileResource','error','stack','name','send','index','CmList','rawAttributes','fieldName','type','key','model','query','filters','attributes','intersection','fields','length','nolimit','order','sort','where','pick','filter','merge','options','includeAll','include','findAll','rows','catch','show','params','keys','find','body','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','UserProfileSection','userProfileId','autoAssociation','create','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','describe','Disposition','getDispositions','findOne','ListId','map','removeDispositions','addContacts','CmContact','isArray','tags','join','omit'];(function(_0x12446c,_0x133a16){var _0x59e7fd=function(_0x377f9e){while(--_0x377f9e){_0x12446c['push'](_0x12446c['shift']());}};_0x59e7fd(++_0x133a16);}(_0xeeeb,0x180));var _0xbeee=function(_0x31c861,_0x2e6432){_0x31c861=_0x31c861-0x0;var _0x265e5f=_0xeeeb[_0x31c861];return _0x265e5f;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0xbeee('0x0'));var zipdir=require(_0xbeee('0x1'));var jsonpatch=require(_0xbeee('0x2'));var rp=require(_0xbeee('0x3'));var moment=require(_0xbeee('0x4'));var BPromise=require(_0xbeee('0x5'));var Mustache=require(_0xbeee('0x6'));var util=require('util');var path=require('path');var sox=require(_0xbeee('0x7'));var csv=require(_0xbeee('0x8'));var ejs=require(_0xbeee('0x9'));var fs=require('fs');var fs_extra=require(_0xbeee('0xa'));var _=require(_0xbeee('0xb'));var squel=require(_0xbeee('0xc'));var crypto=require(_0xbeee('0xd'));var jsforce=require(_0xbeee('0xe'));var deskjs=require(_0xbeee('0xf'));var toCsv=require(_0xbeee('0x8'));var querystring=require('querystring');var Papa=require(_0xbeee('0x10'));var Redis=require('ioredis');var authService=require(_0xbeee('0x11'));var qs=require(_0xbeee('0x12'));var as=require(_0xbeee('0x13'));var hardwareService=require(_0xbeee('0x14'));var logger=require(_0xbeee('0x15'))('api');var utils=require(_0xbeee('0x16'));var config=require(_0xbeee('0x17'));var licenseUtil=require('../../config/license/util');var db=require(_0xbeee('0x18'))['db'];var csv_results;config[_0xbeee('0x19')]=_[_0xbeee('0x1a')](config['redis'],{'host':_0xbeee('0x1b'),'port':0x18eb});var socket=require(_0xbeee('0x1c'))(new Redis(config['redis']));require(_0xbeee('0x1d'))['register'](socket);function respondWithStatusCode(_0x2090d0,_0x2328e3){_0x2328e3=_0x2328e3||0xcc;return function(_0x6068c8){if(_0x6068c8){return _0x2090d0[_0xbeee('0x1e')](_0x2328e3);}return _0x2090d0['status'](_0x2328e3)[_0xbeee('0x1f')]();};}function respondWithResult(_0x4fc385,_0x2f8521){_0x2f8521=_0x2f8521||0xc8;return function(_0x130314){if(_0x130314){return _0x4fc385[_0xbeee('0x20')](_0x2f8521)['json'](_0x130314);}};}function respondWithFilteredResult(_0x2838d7,_0xd27197){return function(_0x3539ec){if(_0x3539ec){var _0x2be470=typeof _0xd27197[_0xbeee('0x21')]===_0xbeee('0x22')&&typeof _0xd27197['limit']===_0xbeee('0x22');var _0x13fcc5=_0x3539ec[_0xbeee('0x23')];var _0x348630=_0x2be470?0x0:_0xd27197[_0xbeee('0x21')];var _0x23d63c=_0x2be470?_0x3539ec[_0xbeee('0x23')]:_0xd27197[_0xbeee('0x21')]+_0xd27197[_0xbeee('0x24')];var _0x11d6ad;if(_0x23d63c>=_0x13fcc5){_0x23d63c=_0x13fcc5;_0x11d6ad=0xc8;}else{_0x11d6ad=0xce;}_0x2838d7[_0xbeee('0x20')](_0x11d6ad);return _0x2838d7['set'](_0xbeee('0x25'),_0x348630+'-'+_0x23d63c+'/'+_0x13fcc5)['json'](_0x3539ec);}return null;};}function patchUpdates(_0x3a315c){return function(_0x37c9a9){try{jsonpatch[_0xbeee('0x26')](_0x37c9a9,_0x3a315c,!![]);}catch(_0x24a66d){return BPromise[_0xbeee('0x27')](_0x24a66d);}return _0x37c9a9[_0xbeee('0x28')]();};}function saveUpdates(_0x31eae7,_0x19514d){return function(_0x5b9236){if(_0x5b9236){return _0x5b9236[_0xbeee('0x29')](_0x31eae7)[_0xbeee('0x2a')](function(_0x3a104a){return _0x3a104a;});}return null;};}function removeEntity(_0x2b3d1e,_0x4a06cf){return function(_0x478a23){if(_0x478a23){return _0x478a23[_0xbeee('0x2b')]()[_0xbeee('0x2a')](function(){var _0x4861d9=_0x478a23[_0xbeee('0x2c')]({'plain':!![]});var _0x365e8c=_0xbeee('0x2d');return db[_0xbeee('0x2e')][_0xbeee('0x2b')]({'where':{'type':_0x365e8c,'resourceId':_0x4861d9['id']}})[_0xbeee('0x2a')](function(){return _0x478a23;});})[_0xbeee('0x2a')](function(){_0x2b3d1e[_0xbeee('0x20')](0xcc)[_0xbeee('0x1f')]();});}};}function handleEntityNotFound(_0x4b12c3,_0x3bd0c3){return function(_0x32e0dc){if(!_0x32e0dc){_0x4b12c3[_0xbeee('0x1e')](0x194);}return _0x32e0dc;};}function handleError(_0x403d32,_0x20a116){_0x20a116=_0x20a116||0x1f4;return function(_0x2d55fb){logger[_0xbeee('0x2f')](_0x2d55fb[_0xbeee('0x30')]);if(_0x2d55fb[_0xbeee('0x31')]){delete _0x2d55fb['name'];}_0x403d32[_0xbeee('0x20')](_0x20a116)[_0xbeee('0x32')](_0x2d55fb);};}exports[_0xbeee('0x33')]=function(_0x360a01,_0x4690d0){var _0x27226f={},_0x134533={},_0x151316={'count':0x0,'rows':[]};var _0x4f0f77=_['map'](db[_0xbeee('0x34')][_0xbeee('0x35')],function(_0x26e89e){return{'name':_0x26e89e[_0xbeee('0x36')],'type':_0x26e89e[_0xbeee('0x37')][_0xbeee('0x38')]};});_0x134533[_0xbeee('0x39')]=_['map'](_0x4f0f77,_0xbeee('0x31'));_0x134533['query']=_['keys'](_0x360a01[_0xbeee('0x3a')]);_0x134533[_0xbeee('0x3b')]=_['intersection'](_0x134533['model'],_0x134533[_0xbeee('0x3a')]);_0x27226f[_0xbeee('0x3c')]=_[_0xbeee('0x3d')](_0x134533['model'],qs['fields'](_0x360a01[_0xbeee('0x3a')][_0xbeee('0x3e')]));_0x27226f['attributes']=_0x27226f[_0xbeee('0x3c')][_0xbeee('0x3f')]?_0x27226f['attributes']:_0x134533[_0xbeee('0x39')];if(!_0x360a01['query']['hasOwnProperty'](_0xbeee('0x40'))){_0x27226f[_0xbeee('0x24')]=qs[_0xbeee('0x24')](_0x360a01[_0xbeee('0x3a')][_0xbeee('0x24')]);_0x27226f[_0xbeee('0x21')]=qs[_0xbeee('0x21')](_0x360a01[_0xbeee('0x3a')][_0xbeee('0x21')]);}_0x27226f[_0xbeee('0x41')]=qs[_0xbeee('0x42')](_0x360a01['query'][_0xbeee('0x42')]);_0x27226f[_0xbeee('0x43')]=qs['filters'](_[_0xbeee('0x44')](_0x360a01[_0xbeee('0x3a')],_0x134533[_0xbeee('0x3b')]),_0x4f0f77);if(_0x360a01[_0xbeee('0x3a')][_0xbeee('0x45')]){_0x27226f[_0xbeee('0x43')]=_[_0xbeee('0x46')](_0x27226f[_0xbeee('0x43')],{'$or':_['map'](_0x4f0f77,function(_0x11e2c6){if(_0x11e2c6[_0xbeee('0x37')]!=='VIRTUAL'){var _0x5ab01a={};_0x5ab01a[_0x11e2c6[_0xbeee('0x31')]]={'$like':'%'+_0x360a01[_0xbeee('0x3a')][_0xbeee('0x45')]+'%'};return _0x5ab01a;}})});}_0x27226f=_[_0xbeee('0x46')]({},_0x27226f,_0x360a01[_0xbeee('0x47')]);var _0x11d299={'where':_0x27226f[_0xbeee('0x43')]};return db[_0xbeee('0x34')][_0xbeee('0x23')](_0x11d299)['then'](function(_0x2623a8){_0x151316['count']=_0x2623a8;if(_0x360a01[_0xbeee('0x3a')][_0xbeee('0x48')]){_0x27226f[_0xbeee('0x49')]=[{'all':!![]}];}return db[_0xbeee('0x34')][_0xbeee('0x4a')](_0x27226f);})[_0xbeee('0x2a')](function(_0x3dc563){_0x151316[_0xbeee('0x4b')]=_0x3dc563;return _0x151316;})[_0xbeee('0x2a')](respondWithFilteredResult(_0x4690d0,_0x27226f))[_0xbeee('0x4c')](handleError(_0x4690d0,null));};exports[_0xbeee('0x4d')]=function(_0x478813,_0x5d62fa){var _0x1b48b1={'raw':![],'where':{'id':_0x478813[_0xbeee('0x4e')]['id']}},_0x3b7d02={};_0x3b7d02[_0xbeee('0x39')]=_[_0xbeee('0x4f')](db[_0xbeee('0x34')][_0xbeee('0x35')]);_0x3b7d02[_0xbeee('0x3a')]=_[_0xbeee('0x4f')](_0x478813[_0xbeee('0x3a')]);_0x3b7d02[_0xbeee('0x3b')]=_[_0xbeee('0x3d')](_0x3b7d02[_0xbeee('0x39')],_0x3b7d02[_0xbeee('0x3a')]);_0x1b48b1[_0xbeee('0x3c')]=_['intersection'](_0x3b7d02[_0xbeee('0x39')],qs[_0xbeee('0x3e')](_0x478813[_0xbeee('0x3a')]['fields']));_0x1b48b1[_0xbeee('0x3c')]=_0x1b48b1[_0xbeee('0x3c')]['length']?_0x1b48b1[_0xbeee('0x3c')]:_0x3b7d02[_0xbeee('0x39')];if(_0x478813[_0xbeee('0x3a')][_0xbeee('0x48')]){_0x1b48b1['include']=[{'all':!![]}];}_0x1b48b1=_[_0xbeee('0x46')]({},_0x1b48b1,_0x478813['options']);return db['CmList'][_0xbeee('0x50')](_0x1b48b1)['then'](handleEntityNotFound(_0x5d62fa,null))[_0xbeee('0x2a')](respondWithResult(_0x5d62fa,null))[_0xbeee('0x4c')](handleError(_0x5d62fa,null));};exports['create']=function(_0x5dbf7a,_0x4e20d5){return db[_0xbeee('0x34')]['create'](_0x5dbf7a[_0xbeee('0x51')],{})[_0xbeee('0x2a')](function(_0x32dffd){var _0x44f3b5=_0x5dbf7a[_0xbeee('0x52')][_0xbeee('0x2c')]({'plain':!![]});if(!_0x44f3b5)throw new Error(_0xbeee('0x53'));if(_0x44f3b5['role']==='user'){var _0x88aa9b=_0x32dffd[_0xbeee('0x2c')]({'plain':!![]});var _0x4ea3ff='Lists';return db[_0xbeee('0x54')][_0xbeee('0x50')]({'where':{'name':_0x4ea3ff,'userProfileId':_0x44f3b5[_0xbeee('0x55')]},'raw':!![]})[_0xbeee('0x2a')](function(_0x47a8f5){if(_0x47a8f5&&_0x47a8f5[_0xbeee('0x56')]===0x0){return db[_0xbeee('0x2e')][_0xbeee('0x57')]({'name':_0x88aa9b[_0xbeee('0x31')],'resourceId':_0x88aa9b['id'],'type':_0x47a8f5[_0xbeee('0x31')],'sectionId':_0x47a8f5['id']},{})[_0xbeee('0x2a')](function(){return _0x32dffd;});}else{return _0x32dffd;}})[_0xbeee('0x4c')](function(_0x55cbfe){logger[_0xbeee('0x2f')](_0xbeee('0x58'),_0x55cbfe);throw _0x55cbfe;});}return _0x32dffd;})[_0xbeee('0x2a')](respondWithResult(_0x4e20d5,0xc9))['catch'](handleError(_0x4e20d5,null));};exports['update']=function(_0x9828dc,_0x1715f5){if(_0x9828dc[_0xbeee('0x51')]['id']){delete _0x9828dc[_0xbeee('0x51')]['id'];}return db[_0xbeee('0x34')][_0xbeee('0x50')]({'where':{'id':_0x9828dc[_0xbeee('0x4e')]['id']}})[_0xbeee('0x2a')](handleEntityNotFound(_0x1715f5,null))[_0xbeee('0x2a')](saveUpdates(_0x9828dc['body'],null))[_0xbeee('0x2a')](respondWithResult(_0x1715f5,null))[_0xbeee('0x4c')](handleError(_0x1715f5,null));};exports[_0xbeee('0x2b')]=function(_0x527df8,_0x1e0a01){return db[_0xbeee('0x34')][_0xbeee('0x50')]({'where':{'id':_0x527df8[_0xbeee('0x4e')]['id']}})['then'](handleEntityNotFound(_0x1e0a01,null))['then'](removeEntity(_0x1e0a01,null))[_0xbeee('0x4c')](handleError(_0x1e0a01,null));};exports[_0xbeee('0x59')]=function(_0x20fa60,_0x5bb5a1){return db[_0xbeee('0x34')][_0xbeee('0x59')]()[_0xbeee('0x2a')](respondWithResult(_0x5bb5a1,null))['catch'](handleError(_0x5bb5a1,null));};exports['addDisposition']=function(_0x19d35a,_0x379959,_0x2ebbb0){if(_0x19d35a[_0xbeee('0x51')]['id']){delete _0x19d35a[_0xbeee('0x51')]['id'];}return db[_0xbeee('0x34')][_0xbeee('0x50')]({'where':{'id':_0x19d35a[_0xbeee('0x4e')]['id']}})['then'](handleEntityNotFound(_0x379959,null))[_0xbeee('0x2a')](function(_0x325df8){if(_0x325df8){_0x19d35a['body']['ListId']=_0x325df8['id'];return db[_0xbeee('0x5a')][_0xbeee('0x57')](_0x19d35a[_0xbeee('0x51')]);}})[_0xbeee('0x2a')](respondWithResult(_0x379959,null))[_0xbeee('0x4c')](handleError(_0x379959,null));};exports[_0xbeee('0x5b')]=function(_0x343bd3,_0x34ab1a,_0x4bbebb){var _0x1d1a62={'raw':![],'where':{}};var _0x970549={};var _0x1cc6f5={'count':0x0,'rows':[]};return db[_0xbeee('0x34')][_0xbeee('0x5c')]({'where':{'id':_0x343bd3[_0xbeee('0x4e')]['id']}})[_0xbeee('0x2a')](handleEntityNotFound(_0x34ab1a,null))['then'](function(_0x33ff23){if(_0x33ff23){_0x970549[_0xbeee('0x39')]=_[_0xbeee('0x4f')](db['Disposition'][_0xbeee('0x35')]);_0x970549['query']=_[_0xbeee('0x4f')](_0x343bd3[_0xbeee('0x3a')]);_0x970549[_0xbeee('0x3b')]=_['intersection'](_0x970549[_0xbeee('0x39')],_0x970549[_0xbeee('0x3a')]);_0x1d1a62[_0xbeee('0x3c')]=_[_0xbeee('0x3d')](_0x970549[_0xbeee('0x39')],qs['fields'](_0x343bd3[_0xbeee('0x3a')][_0xbeee('0x3e')]));_0x1d1a62[_0xbeee('0x3c')]=_0x1d1a62[_0xbeee('0x3c')]['length']?_0x1d1a62[_0xbeee('0x3c')]:_0x970549['model'];if(!_0x343bd3[_0xbeee('0x3a')]['hasOwnProperty']('nolimit')){_0x1d1a62['limit']=qs[_0xbeee('0x24')](_0x343bd3['query'][_0xbeee('0x24')]);_0x1d1a62[_0xbeee('0x21')]=qs[_0xbeee('0x21')](_0x343bd3['query'][_0xbeee('0x21')]);}_0x1d1a62[_0xbeee('0x41')]=qs[_0xbeee('0x42')](_0x343bd3[_0xbeee('0x3a')][_0xbeee('0x42')]);_0x1d1a62[_0xbeee('0x43')]=qs['filters'](_[_0xbeee('0x44')](_0x343bd3['query'],_0x970549[_0xbeee('0x3b')]));_0x1d1a62[_0xbeee('0x43')][_0xbeee('0x5d')]=_0x33ff23['id'];if(_0x343bd3[_0xbeee('0x3a')]['filter']){_0x1d1a62[_0xbeee('0x43')]=_[_0xbeee('0x46')](_0x1d1a62[_0xbeee('0x43')],{'$or':_[_0xbeee('0x5e')](_0x1d1a62[_0xbeee('0x3c')],function(_0x47cb49){var _0x694f37={};_0x694f37[_0x47cb49]={'$like':'%'+_0x343bd3[_0xbeee('0x3a')][_0xbeee('0x45')]+'%'};return _0x694f37;})});}_0x1d1a62=_['merge']({},_0x1d1a62,_0x343bd3[_0xbeee('0x47')]);return db[_0xbeee('0x5a')][_0xbeee('0x23')]({'where':_0x1d1a62[_0xbeee('0x43')]})[_0xbeee('0x2a')](function(_0x39b37c){_0x1cc6f5['count']=_0x39b37c;if(_0x343bd3[_0xbeee('0x3a')][_0xbeee('0x48')]){_0x1d1a62[_0xbeee('0x49')]=[{'all':!![]}];}return db[_0xbeee('0x5a')][_0xbeee('0x4a')](_0x1d1a62);})[_0xbeee('0x2a')](function(_0x4694e5){_0x1cc6f5[_0xbeee('0x4b')]=_0x4694e5;return _0x1cc6f5;});}})[_0xbeee('0x2a')](respondWithFilteredResult(_0x34ab1a,_0x1d1a62))[_0xbeee('0x4c')](handleError(_0x34ab1a,null));};exports[_0xbeee('0x5f')]=function(_0x15a4d0,_0x4ee8f2,_0x2222c1){return db[_0xbeee('0x34')][_0xbeee('0x50')]({'where':{'id':_0x15a4d0['params']['id']}})['then'](handleEntityNotFound(_0x4ee8f2,null))[_0xbeee('0x2a')](function(_0x22c5de){if(_0x22c5de){return _0x22c5de[_0xbeee('0x5f')](_0x15a4d0[_0xbeee('0x3a')]['ids']);}})[_0xbeee('0x2a')](respondWithStatusCode(_0x4ee8f2,null))[_0xbeee('0x4c')](handleError(_0x4ee8f2,null));};exports[_0xbeee('0x60')]=function(_0x3324be,_0x45ec91,_0x1bd380){return db[_0xbeee('0x34')][_0xbeee('0x50')]({'where':{'id':_0x3324be[_0xbeee('0x4e')]['id']}})['then'](handleEntityNotFound(_0x45ec91,null))[_0xbeee('0x2a')](function(_0xf471dc){if(_0xf471dc){var _0xe3da18=[];var _0x295e21={'success':[],'errors':[]};return db[_0xbeee('0x61')][_0xbeee('0x59')]()[_0xbeee('0x2a')](function(_0x216800){if(_0x3324be[_0xbeee('0x51')]['tags']&&_[_0xbeee('0x62')](_0x3324be[_0xbeee('0x51')][_0xbeee('0x63')])){if(_0x3324be[_0xbeee('0x51')]['tags']['length']){_0x3324be[_0xbeee('0x51')][_0xbeee('0x63')]=_0x3324be[_0xbeee('0x51')]['tags'][_0xbeee('0x64')](';')+';';}else{_0x3324be[_0xbeee('0x51')][_0xbeee('0x63')]=null;}}else{_0x3324be[_0xbeee('0x51')][_0xbeee('0x63')]=null;}if(_0x3324be[_0xbeee('0x51')]&&_[_0xbeee('0x62')](_0x3324be['body'])){for(var _0xa182d5=0x0;_0xa182d5<_0x3324be[_0xbeee('0x51')][_0xbeee('0x3f')];_0xa182d5+=0x1){_0x3324be[_0xbeee('0x51')][_0xa182d5][_0xbeee('0x5d')]=_0x3324be[_0xbeee('0x4e')]['id'];_0xe3da18['push'](_0x3324be[_0xbeee('0x51')][_0xa182d5]);}return BPromise['each'](_0xe3da18,function(_0x428047){return db[_0xbeee('0x61')]['create'](_[_0xbeee('0x65')](_0x428047,[_0xbeee('0x66'),'id'])||{},{'fields':_[_0xbeee('0x4f')](_0x216800),'raw':!![]})['then'](function(_0x24baa2){_0x295e21[_0xbeee('0x67')]['push'](_0x24baa2[_0xbeee('0x68')]);})[_0xbeee('0x4c')](function(_0x46981b){_0x295e21[_0xbeee('0x69')][_0xbeee('0x6a')]({'data':_0x428047,'error':_0x46981b[_0xbeee('0x6b')]});});})[_0xbeee('0x2a')](function(_0x186ab2){return _0x295e21;})[_0xbeee('0x4c')](function(_0x31a3ab){return _0x31a3ab;});}else{_0x45ec91[_0xbeee('0x20')](0x190)['json']({'message':'Malformed\x20request\x20syntax'});}});}})[_0xbeee('0x2a')](respondWithResult(_0x45ec91,null))[_0xbeee('0x4c')](handleError(_0x45ec91,null));};exports[_0xbeee('0x6c')]=function(_0x5dfeb0,_0x424d43,_0x346b2c){var _0x11c2c2;return db[_0xbeee('0x34')][_0xbeee('0x50')]({'where':{'id':_0x5dfeb0[_0xbeee('0x4e')]['id']},'include':[{'model':db[_0xbeee('0x6d')],'as':'CustomFields'}]})[_0xbeee('0x2a')](handleEntityNotFound(_0x424d43,null))[_0xbeee('0x2a')](function(_0x3338c1){if(_0x3338c1){_0x11c2c2=_0x3338c1;return db['CmContact']['rawAttributes'];}})[_0xbeee('0x2a')](function(_0x4034f5){if(_0x4034f5){var _0x48e278={};var _0x2f0a56={};_0x2f0a56[_0xbeee('0x39')]=_['concat'](_[_0xbeee('0x4f')](_0x4034f5),_[_0xbeee('0x5e')](_0x11c2c2[_0xbeee('0x6e')],function(_0x5a3c47){return util[_0xbeee('0x6f')](_0xbeee('0x70'),_0x5a3c47['id']);}));_0x2f0a56[_0xbeee('0x3a')]=_[_0xbeee('0x4f')](_0x5dfeb0[_0xbeee('0x3a')]);_0x2f0a56[_0xbeee('0x3b')]=_[_0xbeee('0x3d')](_0x2f0a56['model'],_0x2f0a56['query']);_0x48e278[_0xbeee('0x3c')]=_['intersection'](_0x2f0a56[_0xbeee('0x39')],qs[_0xbeee('0x3e')](_0x5dfeb0[_0xbeee('0x3a')][_0xbeee('0x3e')]));_0x48e278[_0xbeee('0x3c')]=_0x48e278[_0xbeee('0x3c')][_0xbeee('0x3f')]?_0x48e278[_0xbeee('0x3c')]:_0x2f0a56[_0xbeee('0x39')];if(!_0x5dfeb0[_0xbeee('0x3a')][_0xbeee('0x71')](_0xbeee('0x40'))){_0x48e278[_0xbeee('0x24')]=qs['limit'](_0x5dfeb0[_0xbeee('0x3a')][_0xbeee('0x24')]);_0x48e278[_0xbeee('0x21')]=qs[_0xbeee('0x21')](_0x5dfeb0[_0xbeee('0x3a')][_0xbeee('0x21')]);}_0x48e278['order']=qs[_0xbeee('0x42')](_0x5dfeb0[_0xbeee('0x3a')][_0xbeee('0x42')]);_0x48e278[_0xbeee('0x43')]=qs['filters'](_['pick'](_0x5dfeb0[_0xbeee('0x3a')],_0x2f0a56['filters']));_0x48e278[_0xbeee('0x72')]=!![];if(_0x5dfeb0[_0xbeee('0x3a')][_0xbeee('0x45')]){_0x48e278[_0xbeee('0x43')]=_['merge'](_0x48e278[_0xbeee('0x43')],{'$or':_[_0xbeee('0x5e')](_0x48e278[_0xbeee('0x3c')],function(_0x55cfdb){var _0x107462={};_0x107462[_0x55cfdb]={'$like':'%'+_0x5dfeb0[_0xbeee('0x3a')]['filter']+'%'};return _0x107462;})});}_0x48e278=_[_0xbeee('0x46')]({},_0x48e278,_0x5dfeb0[_0xbeee('0x47')]);return _0x11c2c2[_0xbeee('0x6c')](_0x48e278);}})[_0xbeee('0x2a')](respondWithResult(_0x424d43,null))[_0xbeee('0x4c')](handleError(_0x424d43,null));};exports[_0xbeee('0x73')]=function(_0x496863,_0x2ac21c,_0x4ad672){var _0x2cbf0f;var _0x763b2c;var _0x50e710;var _0x45ac22=_0x496863[_0xbeee('0x4e')]['id'];csv_results=[];return db['ContactItemType'][_0xbeee('0x4a')]({'attributes':['id',_0xbeee('0x31')],'raw':!![],'order':[_0xbeee('0x74')]})[_0xbeee('0x2a')](function(_0x4e6d39){_0x2cbf0f=_0x4e6d39;var _0x18a57d=_[_0xbeee('0x4f')](db[_0xbeee('0x61')][_0xbeee('0x35')]);return db[_0xbeee('0x6d')][_0xbeee('0x4a')]({'raw':!![],'attributes':['id','alias']})['then'](function(_0x1a50b9){_0x763b2c=_0x1a50b9;var _0x4786d9=squel[_0xbeee('0x75')]()[_0xbeee('0x3e')](_0x18a57d)[_0xbeee('0x76')]('cm_contacts','c')[_0xbeee('0x43')](_0xbeee('0x77'),_0x45ac22)[_0xbeee('0x43')](_0xbeee('0x78'))[_0xbeee('0x79')]();for(var _0x4b5f5e=0x0;_0x4b5f5e<_0x763b2c[_0xbeee('0x3f')];_0x4b5f5e++){_0x4786d9['field']('c.cf_'+_0x763b2c[_0x4b5f5e]['id'],_0xbeee('0x7a')+_0x763b2c[_0x4b5f5e][_0xbeee('0x7b')]);}for(var _0x4b5f5e=0x0;_0x4b5f5e<_0x2cbf0f[_0xbeee('0x3f')];_0x4b5f5e++){_0x4786d9[_0xbeee('0x7c')](squel['select']()[_0xbeee('0x7c')]('item')[_0xbeee('0x76')](_0xbeee('0x7d'))[_0xbeee('0x43')](_0xbeee('0x7e'),_0x2cbf0f[_0x4b5f5e]['id'])[_0xbeee('0x43')](_0xbeee('0x7f')),'additionalPhone_'+_0x2cbf0f[_0x4b5f5e][_0xbeee('0x31')]);_0x4786d9[_0xbeee('0x7c')](squel[_0xbeee('0x75')]()['field'](_0xbeee('0x80'))[_0xbeee('0x76')](_0xbeee('0x7d'))[_0xbeee('0x43')](_0xbeee('0x7e'),_0x2cbf0f[_0x4b5f5e]['id'])[_0xbeee('0x43')](_0xbeee('0x7f')),_0xbeee('0x81')+_0x2cbf0f[_0x4b5f5e][_0xbeee('0x31')]);}var _0xf61c8f=[];_0xf61c8f[_0xbeee('0x6a')](_0x4786d9['toString']());BPromise['each'](_0xf61c8f,handleQuery)['then'](function(_0x5bf7ff){handleQuery(_0x4786d9[_0xbeee('0x82')]());var _0x56e930=csv_results[0x0];if(!_[_0xbeee('0x83')](_0x56e930)){var _0x551379=toCsv(_0x56e930);var _0x5e4b16=Date[_0xbeee('0x84')]();fs[_0xbeee('0x85')](util[_0xbeee('0x6f')](_0xbeee('0x86'),_0x45ac22,_0x5e4b16),_0x551379);_0x2ac21c['setHeader'](_0xbeee('0x87'),_0xbeee('0x88')+util[_0xbeee('0x6f')](_0xbeee('0x89'),_0x45ac22,_0x5e4b16));_0x2ac21c[_0xbeee('0x8a')]('Content-type','text/csv');return _0x2ac21c[_0xbeee('0x8b')](util['format'](_0xbeee('0x86'),_0x45ac22,_0x5e4b16));}else{return _0x2ac21c[_0xbeee('0x1e')](0xcc);}});});});};exports['addCustomField']=function(_0x371906,_0x2d50f4,_0x420541){var _0x4630a1;delete _0x371906['body']['id'];return db[_0xbeee('0x34')][_0xbeee('0x5c')]({'where':{'id':_0x371906[_0xbeee('0x4e')]['id']}})[_0xbeee('0x2a')](handleEntityNotFound(_0x2d50f4,null))['then'](function(_0x3808c1){if(_0x3808c1){return db[_0xbeee('0x8c')][_0xbeee('0x8d')](function(_0x15bda3){return db['CmCustomField'][_0xbeee('0x57')](_0x371906[_0xbeee('0x51')],{'transaction':_0x15bda3})[_0xbeee('0x2a')](function(_0x20409f){_0x4630a1=_0x20409f;return _0x3808c1['addCustomFields'](_0x20409f,{'transaction':_0x15bda3});})[_0xbeee('0x2a')](function(){var _0x2ed9d8={'type':db[_0xbeee('0x8e')][_0xbeee('0x8f')],'transaction':_0x15bda3};switch(_0x371906['body']['type']){case _0xbeee('0x90'):_0x2ed9d8[_0xbeee('0x37')]=db['Sequelize'][_0xbeee('0x8f')];break;case _0xbeee('0x91'):_0x2ed9d8[_0xbeee('0x37')]=db['Sequelize']['INTEGER'];break;case _0xbeee('0x92'):_0x2ed9d8[_0xbeee('0x37')]=db[_0xbeee('0x8e')]['BOOLEAN'];_0x2ed9d8[_0xbeee('0x93')]=![];break;default:}return db[_0xbeee('0x8c')][_0xbeee('0x94')][_0xbeee('0x95')](_0xbeee('0x96'),util[_0xbeee('0x6f')](_0xbeee('0x97'),_0x4630a1['id']),_0x2ed9d8);})[_0xbeee('0x2a')](function(){return _0x4630a1;});});}})[_0xbeee('0x2a')](respondWithResult(_0x2d50f4,null))[_0xbeee('0x4c')](handleError(_0x2d50f4,null));};exports[_0xbeee('0x98')]=function(_0x5f31b1,_0x11b4a1,_0x21998f){var _0x2452fe={};var _0x17f061={};var _0x1d6645;var _0x4d5ebd;return db[_0xbeee('0x34')][_0xbeee('0x5c')]({'where':{'id':_0x5f31b1['params']['id']}})[_0xbeee('0x2a')](handleEntityNotFound(_0x11b4a1,null))[_0xbeee('0x2a')](function(_0x4729d1){if(_0x4729d1){_0x1d6645=_0x4729d1;_0x17f061[_0xbeee('0x39')]=_['keys'](db[_0xbeee('0x6d')][_0xbeee('0x35')]);_0x17f061[_0xbeee('0x3a')]=_['keys'](_0x5f31b1[_0xbeee('0x3a')]);_0x17f061['filters']=_['intersection'](_0x17f061[_0xbeee('0x39')],_0x17f061[_0xbeee('0x3a')]);_0x2452fe[_0xbeee('0x3c')]=_[_0xbeee('0x3d')](_0x17f061[_0xbeee('0x39')],qs['fields'](_0x5f31b1['query'][_0xbeee('0x3e')]));_0x2452fe[_0xbeee('0x3c')]=_0x2452fe[_0xbeee('0x3c')][_0xbeee('0x3f')]?_0x2452fe[_0xbeee('0x3c')]:_0x17f061['model'];_0x2452fe[_0xbeee('0x41')]=qs[_0xbeee('0x42')](_0x5f31b1[_0xbeee('0x3a')][_0xbeee('0x42')]);_0x2452fe[_0xbeee('0x43')]=qs[_0xbeee('0x3b')](_[_0xbeee('0x44')](_0x5f31b1[_0xbeee('0x3a')],_0x17f061['filters']));_0x2452fe[_0xbeee('0x43')]=_[_0xbeee('0x46')](_0x2452fe[_0xbeee('0x43')],{'$or':[{'ListId':_0x4729d1['id']},{'ListId':null}]});if(_0x5f31b1[_0xbeee('0x3a')][_0xbeee('0x45')]){_0x2452fe[_0xbeee('0x43')]=_['merge'](_0x2452fe[_0xbeee('0x43')],{'$or':_['map'](_0x2452fe[_0xbeee('0x3c')],function(_0x31c666){var _0x5b6451={};_0x5b6451[_0x31c666]={'$like':'%'+_0x5f31b1[_0xbeee('0x3a')][_0xbeee('0x45')]+'%'};return _0x5b6451;})});}_0x2452fe=_[_0xbeee('0x46')]({},_0x2452fe,_0x5f31b1[_0xbeee('0x47')]);return db[_0xbeee('0x6d')][_0xbeee('0x99')](_0x2452fe);}})[_0xbeee('0x2a')](respondWithResult(_0x11b4a1,null))[_0xbeee('0x4c')](handleError(_0x11b4a1,null));};exports[_0xbeee('0x9a')]=function(_0x1f7092,_0x3fd561){return db[_0xbeee('0x6d')][_0xbeee('0x99')]({'where':{'ListId':null}})[_0xbeee('0x2a')](handleEntityNotFound(_0x3fd561,null))[_0xbeee('0x2a')](function(_0x13b20b){return _0x13b20b;})[_0xbeee('0x2a')](respondWithResult(_0x3fd561,null))[_0xbeee('0x4c')](handleError(_0x3fd561,null));};exports[_0xbeee('0x9b')]=function(_0x4ecd81,_0x6a6aae,_0xd193c9){return db['CmList'][_0xbeee('0x50')]({'where':{'id':_0x4ecd81[_0xbeee('0x4e')]['id']}})[_0xbeee('0x2a')](handleEntityNotFound(_0x6a6aae,null))[_0xbeee('0x2a')](function(_0x3c065e){if(_0x3c065e){return _0x3c065e['addAgents'](_0x4ecd81['body'][_0xbeee('0x66')],_['omit'](_0x4ecd81[_0xbeee('0x51')],[_0xbeee('0x66'),'id'])||{})['spread'](function(_0x5a6199){for(var _0x4d3c19=0x0;_0x4d3c19<_0x4ecd81['body'][_0xbeee('0x66')][_0xbeee('0x3f')];_0x4d3c19+=0x1){socket[_0xbeee('0x9c')]('userCmList:save',{'UserId':Number(_0x4ecd81[_0xbeee('0x51')][_0xbeee('0x66')][_0x4d3c19]),'CmListId':Number(_0x4ecd81['params']['id'])});}return _0x5a6199;});}})[_0xbeee('0x2a')](respondWithResult(_0x6a6aae,null))[_0xbeee('0x4c')](handleError(_0x6a6aae,null));};exports['removeAgents']=function(_0x562a26,_0x240811,_0x59d6d5){return db['CmList'][_0xbeee('0x50')]({'where':{'id':_0x562a26[_0xbeee('0x4e')]['id']}})[_0xbeee('0x2a')](handleEntityNotFound(_0x240811,null))[_0xbeee('0x2a')](function(_0x540078){if(_0x540078){return _0x540078[_0xbeee('0x9d')](_0x562a26['query'][_0xbeee('0x66')])[_0xbeee('0x2a')](function(){if(_[_0xbeee('0x62')](_0x562a26[_0xbeee('0x3a')][_0xbeee('0x66')])){for(var _0x3127e0=0x0;_0x3127e0<_0x562a26['query']['ids'][_0xbeee('0x3f')];_0x3127e0+=0x1){socket[_0xbeee('0x9c')](_0xbeee('0x9e'),{'UserId':Number(_0x562a26['query'][_0xbeee('0x66')][_0x3127e0]),'CmListId':Number(_0x562a26['params']['id'])});}}else{socket[_0xbeee('0x9c')](_0xbeee('0x9e'),{'UserId':Number(_0x562a26[_0xbeee('0x3a')][_0xbeee('0x66')]),'CmListId':Number(_0x562a26[_0xbeee('0x4e')]['id'])});}});}})[_0xbeee('0x2a')](respondWithStatusCode(_0x240811,null))[_0xbeee('0x4c')](handleError(_0x240811,null));};exports['getAgents']=function(_0x50f5dc,_0x2afc71,_0x6fe8d6){var _0x3b6e96={};var _0x22e818={};var _0x1e8c25;var _0x195762;return db[_0xbeee('0x34')][_0xbeee('0x5c')]({'where':{'id':_0x50f5dc['params']['id']}})[_0xbeee('0x2a')](handleEntityNotFound(_0x2afc71,null))[_0xbeee('0x2a')](function(_0x189ecb){if(_0x189ecb){_0x1e8c25=_0x189ecb;_0x22e818[_0xbeee('0x39')]=_[_0xbeee('0x4f')](db[_0xbeee('0x9f')][_0xbeee('0x35')]);_0x22e818[_0xbeee('0x3a')]=_[_0xbeee('0x4f')](_0x50f5dc[_0xbeee('0x3a')]);_0x22e818[_0xbeee('0x3b')]=_[_0xbeee('0x3d')](_0x22e818[_0xbeee('0x39')],_0x22e818[_0xbeee('0x3a')]);_0x3b6e96[_0xbeee('0x3c')]=_[_0xbeee('0x3d')](_0x22e818[_0xbeee('0x39')],qs[_0xbeee('0x3e')](_0x50f5dc[_0xbeee('0x3a')][_0xbeee('0x3e')]));_0x3b6e96['attributes']=_0x3b6e96[_0xbeee('0x3c')][_0xbeee('0x3f')]?_0x3b6e96[_0xbeee('0x3c')]:_0x22e818[_0xbeee('0x39')];_0x3b6e96[_0xbeee('0x41')]=qs[_0xbeee('0x42')](_0x50f5dc['query'][_0xbeee('0x42')]);_0x3b6e96[_0xbeee('0x43')]=qs['filters'](_[_0xbeee('0x44')](_0x50f5dc['query'],_0x22e818[_0xbeee('0x3b')]));if(_0x50f5dc[_0xbeee('0x3a')][_0xbeee('0x45')]){_0x3b6e96[_0xbeee('0x43')]=_[_0xbeee('0x46')](_0x3b6e96[_0xbeee('0x43')],{'$or':_[_0xbeee('0x5e')](_0x3b6e96[_0xbeee('0x3c')],function(_0x5f4927){var _0x255d9e={};_0x255d9e[_0x5f4927]={'$like':'%'+_0x50f5dc['query']['filter']+'%'};return _0x255d9e;})});}_0x3b6e96=_[_0xbeee('0x46')]({},_0x3b6e96,_0x50f5dc['options']);return _0x1e8c25['getAgents'](_0x3b6e96);}})[_0xbeee('0x2a')](function(_0x259910){if(_0x259910){_0x195762=_0x259910[_0xbeee('0x3f')];if(!_0x50f5dc[_0xbeee('0x3a')][_0xbeee('0x71')](_0xbeee('0x40'))){_0x3b6e96[_0xbeee('0x24')]=qs[_0xbeee('0x24')](_0x50f5dc[_0xbeee('0x3a')][_0xbeee('0x24')]);_0x3b6e96['offset']=qs[_0xbeee('0x21')](_0x50f5dc[_0xbeee('0x3a')][_0xbeee('0x21')]);}return _0x1e8c25[_0xbeee('0xa0')](_0x3b6e96);}})['then'](function(_0x2ff764){if(_0x2ff764){return _0x2ff764?{'count':_0x195762,'rows':_0x2ff764}:null;}})[_0xbeee('0x2a')](respondWithResult(_0x2afc71,null))['catch'](handleError(_0x2afc71,null));};function handleQuery(_0x35bd2d){logger['info'](_0x35bd2d);return db[_0xbeee('0x8c')][_0xbeee('0x3a')](_0x35bd2d)[_0xbeee('0xa1')](function(_0x236db5){csv_results['push'](_0x236db5);})['catch'](function(_0x4c7132){logger['error'](_0x4c7132[_0xbeee('0x6b')]);});}
\ No newline at end of file
index 335302b..0a7e948 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x326f=['exports','events','setMaxListeners','save','update','remove','emit','hook'];(function(_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
+var _0x55ca=['events','../../mysqldb','update','remove','emit','hasOwnProperty','hook'];(function(_0x50a0c2,_0x4befab){var _0x5ebadd=function(_0x3a3342){while(--_0x3a3342){_0x50a0c2['push'](_0x50a0c2['shift']());}};_0x5ebadd(++_0x4befab);}(_0x55ca,0x126));var _0xa55c=function(_0x4cdcdc,_0x34eac7){_0x4cdcdc=_0x4cdcdc-0x0;var _0x4704ce=_0x55ca[_0x4cdcdc];return _0x4704ce;};'use strict';var EventEmitter=require(_0xa55c('0x0'));var CmList=require(_0xa55c('0x1'))['db']['CmList'];var CmListEvents=new EventEmitter();CmListEvents['setMaxListeners'](0x0);var events={'afterCreate':'save','afterUpdate':_0xa55c('0x2'),'afterDestroy':_0xa55c('0x3')};function emitEvent(_0x5dc716){return function(_0x3b478a,_0x2db02a,_0xcb02e3){CmListEvents[_0xa55c('0x4')](_0x5dc716+':'+_0x3b478a['id'],_0x3b478a);CmListEvents[_0xa55c('0x4')](_0x5dc716,_0x3b478a);_0xcb02e3(null);};}for(var e in events){if(events[_0xa55c('0x5')](e)){var event=events[e];CmList[_0xa55c('0x6')](e,emitEvent(event));}}module['exports']=CmListEvents;
\ No newline at end of file
index d1ed719..f158869 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0x153f=['util','../../config/logger','api','moment','bluebird','request-promise','rimraf','./cmList.attributes','exports','define','cm_lists','lodash'];(function(_0x2a2d1b,_0x1d1b21){var _0x247779=function(_0x25eaf1){while(--_0x25eaf1){_0x2a2d1b['push'](_0x2a2d1b['shift']());}};_0x247779(++_0x1d1b21);}(_0x153f,0x15b));var _0xf153=function(_0x2ac252,_0x4c8c0c){_0x2ac252=_0x2ac252-0x0;var _0x2acbd3=_0x153f[_0x2ac252];return _0x2acbd3;};'use strict';var _=require(_0xf153('0x0'));var util=require(_0xf153('0x1'));var logger=require(_0xf153('0x2'))(_0xf153('0x3'));var moment=require(_0xf153('0x4'));var BPromise=require(_0xf153('0x5'));var rp=require(_0xf153('0x6'));var fs=require('fs');var path=require('path');var rimraf=require(_0xf153('0x7'));var config=require('../../config/environment');var attributes=require(_0xf153('0x8'));module[_0xf153('0x9')]=function(_0x342a45,_0xafd987){return _0x342a45[_0xf153('0xa')]('CmList',attributes,{'tableName':_0xf153('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 8fff832..f8ab712 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0x8edb=['moment','bluebird','randomstring','../../config/utils','../../config/logger','rpc','jayson/promise','http','defaults','redis','localhost','socket.io-emitter','./cmList.socket','register','request','then','info','CmList,\x20%s,\x20%s','request\x20sent','debug','stringify','error','message','result','catch','util'];(function(_0x47b3e9,_0x3ba00c){var _0x3fa6dc=function(_0x26043d){while(--_0x26043d){_0x47b3e9['push'](_0x47b3e9['shift']());}};_0x3fa6dc(++_0x3ba00c);}(_0x8edb,0x103));var _0xb8ed=function(_0x2d0184,_0x3211ea){_0x2d0184=_0x2d0184-0x0;var _0xfa6188=_0x8edb[_0x2d0184];return _0xfa6188;};'use strict';var _=require('lodash');var util=require(_0xb8ed('0x0'));var moment=require(_0xb8ed('0x1'));var BPromise=require(_0xb8ed('0x2'));var rs=require(_0xb8ed('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require('../../mysqldb')['db'];var utils=require(_0xb8ed('0x4'));var logger=require(_0xb8ed('0x5'))(_0xb8ed('0x6'));var config=require('../../config/environment');var jayson=require(_0xb8ed('0x7'));var client=jayson['client'][_0xb8ed('0x8')]({'port':0x232a});config['redis']=_[_0xb8ed('0x9')](config[_0xb8ed('0xa')],{'host':_0xb8ed('0xb'),'port':0x18eb});var socket=require(_0xb8ed('0xc'))(new Redis(config[_0xb8ed('0xa')]));require(_0xb8ed('0xd'))[_0xb8ed('0xe')](socket);function respondWithRpcPromise(_0x46cdb3,_0x99b821,_0x34619f){return new BPromise(function(_0x2b7dd1,_0x369f3f){return client[_0xb8ed('0xf')](_0x46cdb3,_0x34619f)[_0xb8ed('0x10')](function(_0x2eaa91){logger[_0xb8ed('0x11')](_0xb8ed('0x12'),_0x99b821,_0xb8ed('0x13'));logger[_0xb8ed('0x14')]('CmList,\x20%s,\x20%s,\x20%s',_0x99b821,_0xb8ed('0x13'),JSON[_0xb8ed('0x15')](_0x2eaa91));if(_0x2eaa91[_0xb8ed('0x16')]){if(_0x2eaa91[_0xb8ed('0x16')]['code']===0x1f4){logger[_0xb8ed('0x16')](_0xb8ed('0x12'),_0x99b821,_0x2eaa91[_0xb8ed('0x16')][_0xb8ed('0x17')]);return _0x369f3f(_0x2eaa91['error'][_0xb8ed('0x17')]);}logger[_0xb8ed('0x16')](_0xb8ed('0x12'),_0x99b821,_0x2eaa91[_0xb8ed('0x16')][_0xb8ed('0x17')]);return _0x2b7dd1(_0x2eaa91[_0xb8ed('0x16')][_0xb8ed('0x17')]);}else{logger['info'](_0xb8ed('0x12'),_0x99b821,_0xb8ed('0x13'));_0x2b7dd1(_0x2eaa91[_0xb8ed('0x18')][_0xb8ed('0x17')]);}})[_0xb8ed('0x19')](function(_0x2ff364){logger['error'](_0xb8ed('0x12'),_0x99b821,_0x2ff364);_0x369f3f(_0x2ff364);});});}
\ No newline at end of file
index c7f5d14..0c5ea59 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0x2819=['update','emit','removeListener','register','./cmList.events','remove'];(function(_0x5963f2,_0x4365ec){var _0x21495b=function(_0x18a467){while(--_0x18a467){_0x5963f2['push'](_0x5963f2['shift']());}};_0x21495b(++_0x4365ec);}(_0x2819,0x190));var _0x9281=function(_0x4c1967,_0x21ae0a){_0x4c1967=_0x4c1967-0x0;var _0x53fa3d=_0x2819[_0x4c1967];return _0x53fa3d;};'use strict';var CmListEvents=require(_0x9281('0x0'));var events=['save',_0x9281('0x1'),_0x9281('0x2')];function createListener(_0x48cb04,_0x543260){return function(_0xa7e21b){_0x543260[_0x9281('0x3')](_0x48cb04,_0xa7e21b);};}function removeListener(_0x4d9fbf,_0x3d29e1){return function(){CmListEvents[_0x9281('0x4')](_0x4d9fbf,_0x3d29e1);};}exports[_0x9281('0x5')]=function(_0x395db6){for(var _0x3ff9c6=0x0,_0x7b5edc=events['length'];_0x3ff9c6<_0x7b5edc;_0x3ff9c6++){var _0x9d90d2=events[_0x3ff9c6];var _0x2e530b=createListener('cmList:'+_0x9d90d2,_0x395db6);CmListEvents['on'](_0x9d90d2,_0x2e530b);}};
\ No newline at end of file
index fcd2a41..f1d0e7e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0xe55f=['index','/global_fields','getGlobalCustomFields','/:id','/:id/dispositions','/:id/contacts','/:id/contacts/csv','/:id/fields','getCustomFields','/:id/users','post','create','addCustomField','addAgents','put','delete','destroy','removeAgents','exports','multer','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./cmList.controller','get','isAuthenticated'];(function(_0x493552,_0x2cd527){var _0x243ea8=function(_0x531f6e){while(--_0x531f6e){_0x493552['push'](_0x493552['shift']());}};_0x243ea8(++_0x2cd527);}(_0xe55f,0x1f3));var _0xfe55=function(_0x1d4bdb,_0x58f77b){_0x1d4bdb=_0x1d4bdb-0x0;var _0x288bea=_0xe55f[_0x1d4bdb];return _0x288bea;};'use strict';var multer=require(_0xfe55('0x0'));var util=require('util');var path=require('path');var timeout=require(_0xfe55('0x1'));var express=require(_0xfe55('0x2'));var router=express[_0xfe55('0x3')]();var fs_extra=require(_0xfe55('0x4'));var auth=require(_0xfe55('0x5'));var interaction=require(_0xfe55('0x6'));var config=require(_0xfe55('0x7'));var controller=require(_0xfe55('0x8'));router[_0xfe55('0x9')]('/',auth[_0xfe55('0xa')](),controller[_0xfe55('0xb')]);router[_0xfe55('0x9')]('/describe',auth[_0xfe55('0xa')](),controller['describe']);router[_0xfe55('0x9')](_0xfe55('0xc'),auth[_0xfe55('0xa')](),controller[_0xfe55('0xd')]);router[_0xfe55('0x9')](_0xfe55('0xe'),auth[_0xfe55('0xa')](),controller['show']);router[_0xfe55('0x9')](_0xfe55('0xf'),auth['isAuthenticated'](),controller['getDispositions']);router[_0xfe55('0x9')](_0xfe55('0x10'),auth[_0xfe55('0xa')](),controller['getContacts']);router[_0xfe55('0x9')](_0xfe55('0x11'),auth[_0xfe55('0xa')](),controller['getContactsCsv']);router[_0xfe55('0x9')](_0xfe55('0x12'),auth[_0xfe55('0xa')](),controller[_0xfe55('0x13')]);router[_0xfe55('0x9')](_0xfe55('0x14'),auth[_0xfe55('0xa')](),controller['getAgents']);router[_0xfe55('0x15')]('/',auth[_0xfe55('0xa')](),controller[_0xfe55('0x16')]);router['post'](_0xfe55('0xf'),auth['isAuthenticated'](),controller['addDisposition']);router[_0xfe55('0x15')](_0xfe55('0x10'),auth[_0xfe55('0xa')](),controller['addContacts']);router['post'](_0xfe55('0x12'),auth[_0xfe55('0xa')](),controller[_0xfe55('0x17')]);router[_0xfe55('0x15')](_0xfe55('0x14'),auth[_0xfe55('0xa')](),controller[_0xfe55('0x18')]);router[_0xfe55('0x19')](_0xfe55('0xe'),auth[_0xfe55('0xa')](),controller['update']);router[_0xfe55('0x1a')](_0xfe55('0xe'),auth[_0xfe55('0xa')](),controller[_0xfe55('0x1b')]);router['delete'](_0xfe55('0xf'),auth[_0xfe55('0xa')](),controller['removeDispositions']);router[_0xfe55('0x1a')](_0xfe55('0x14'),auth[_0xfe55('0xa')](),controller[_0xfe55('0x1c')]);module[_0xfe55('0x1d')]=router;
\ No newline at end of file
index f93828c..d69d8dc 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0x3d38=['exports','VIRTUAL','field','STRING'];(function(_0x4a679e,_0x2bce73){var _0x3899fd=function(_0x22ca80){while(--_0x22ca80){_0x4a679e['push'](_0x4a679e['shift']());}};_0x3899fd(++_0x2bce73);}(_0x3d38,0x64));var _0x83d3=function(_0x39096d,_0x51f8a0){_0x39096d=_0x39096d-0x0;var _0x13da4f=_0x3d38[_0x39096d];return _0x13da4f;};'use strict';var Sequelize=require('sequelize');module[_0x83d3('0x0')]={'name':{'type':Sequelize[_0x83d3('0x1')],'get':function(_0x2ef6b5){return this['getDataValue'](_0x83d3('0x2'));}},'field':{'type':Sequelize['STRING'],'allowNull':![]},'operator':{'type':Sequelize[_0x83d3('0x3')],'allowNull':![]},'value':{'type':Sequelize[_0x83d3('0x3')],'allowNull':![]}};
\ No newline at end of file
index 11a2ce5..e6a452f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9957=['eml-format','rimraf','zip-dir','fast-json-patch','moment','bluebird','mustache','util','sox','to-csv','ejs','fs-extra','lodash','squel','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/utils','../../config/license/util','../../mysqldb','sendStatus','status','json','undefined','count','offset','limit','set','Content-Range','reject','save','then','destroy','error','name','send','update','body','Condition','find','catch','params'];(function(_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
+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(_0x5e20be,_0x32c6fa){var _0x5dfeed=function(_0x362a84){while(--_0x362a84){_0x5e20be['push'](_0x5e20be['shift']());}};_0x5dfeed(++_0x32c6fa);}(_0x7a54,0x106));var _0x47a5=function(_0x511d34,_0x3cd886){_0x511d34=_0x511d34-0x0;var _0x40ccb8=_0x7a54[_0x511d34];return _0x40ccb8;};'use strict';var emlformat=require(_0x47a5('0x0'));var rimraf=require(_0x47a5('0x1'));var zipdir=require(_0x47a5('0x2'));var jsonpatch=require('fast-json-patch');var rp=require(_0x47a5('0x3'));var moment=require(_0x47a5('0x4'));var BPromise=require('bluebird');var Mustache=require(_0x47a5('0x5'));var util=require(_0x47a5('0x6'));var path=require(_0x47a5('0x7'));var sox=require(_0x47a5('0x8'));var csv=require(_0x47a5('0x9'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x47a5('0xa'));var _=require('lodash');var squel=require(_0x47a5('0xb'));var crypto=require(_0x47a5('0xc'));var jsforce=require('jsforce');var deskjs=require(_0x47a5('0xd'));var toCsv=require('to-csv');var querystring=require('querystring');var Papa=require('papaparse');var Redis=require(_0x47a5('0xe'));var authService=require(_0x47a5('0xf'));var qs=require('../../components/parsers/qs');var as=require(_0x47a5('0x10'));var hardwareService=require('../../config/license/hardware');var logger=require('../../config/logger')(_0x47a5('0x11'));var utils=require(_0x47a5('0x12'));var config=require(_0x47a5('0x13'));var licenseUtil=require(_0x47a5('0x14'));var db=require(_0x47a5('0x15'))['db'];function respondWithStatusCode(_0xd308b8,_0x1eae59){_0x1eae59=_0x1eae59||0xcc;return function(_0x5beb89){if(_0x5beb89){return _0xd308b8[_0x47a5('0x16')](_0x1eae59);}return _0xd308b8[_0x47a5('0x17')](_0x1eae59)[_0x47a5('0x18')]();};}function respondWithResult(_0x711793,_0x139f25){_0x139f25=_0x139f25||0xc8;return function(_0x620ee9){if(_0x620ee9){return _0x711793[_0x47a5('0x17')](_0x139f25)[_0x47a5('0x19')](_0x620ee9);}};}function respondWithFilteredResult(_0x4e99a8,_0x362359){return function(_0x11faf5){if(_0x11faf5){var _0x3b001e=typeof _0x362359[_0x47a5('0x1a')]===_0x47a5('0x1b')&&typeof _0x362359['limit']==='undefined';var _0x138bc0=_0x11faf5['count'];var _0x5247fd=_0x3b001e?0x0:_0x362359[_0x47a5('0x1a')];var _0xaf70a6=_0x3b001e?_0x11faf5[_0x47a5('0x1c')]:_0x362359[_0x47a5('0x1a')]+_0x362359[_0x47a5('0x1d')];var _0x12b98e;if(_0xaf70a6>=_0x138bc0){_0xaf70a6=_0x138bc0;_0x12b98e=0xc8;}else{_0x12b98e=0xce;}_0x4e99a8[_0x47a5('0x17')](_0x12b98e);return _0x4e99a8[_0x47a5('0x1e')](_0x47a5('0x1f'),_0x5247fd+'-'+_0xaf70a6+'/'+_0x138bc0)['json'](_0x11faf5);}return null;};}function patchUpdates(_0x1570bc){return function(_0xf160ba){try{jsonpatch['apply'](_0xf160ba,_0x1570bc,!![]);}catch(_0x2b0360){return BPromise[_0x47a5('0x20')](_0x2b0360);}return _0xf160ba[_0x47a5('0x21')]();};}function saveUpdates(_0x4c5910,_0xb8ae6c){return function(_0x2f142b){if(_0x2f142b){return _0x2f142b[_0x47a5('0x22')](_0x4c5910)[_0x47a5('0x23')](function(_0x5ef1b1){return _0x5ef1b1;});}return null;};}function removeEntity(_0xe2dea9,_0x385687){return function(_0x513981){if(_0x513981){return _0x513981[_0x47a5('0x24')]()[_0x47a5('0x23')](function(){_0xe2dea9[_0x47a5('0x17')](0xcc)[_0x47a5('0x18')]();});}};}function handleEntityNotFound(_0x3abd6a,_0x50bf17){return function(_0x53078a){if(!_0x53078a){_0x3abd6a[_0x47a5('0x16')](0x194);}return _0x53078a;};}function handleError(_0x5686db,_0x1ea9c8){_0x1ea9c8=_0x1ea9c8||0x1f4;return function(_0x5b6c4e){logger[_0x47a5('0x25')](_0x5b6c4e[_0x47a5('0x26')]);if(_0x5b6c4e[_0x47a5('0x27')]){delete _0x5b6c4e[_0x47a5('0x27')];}_0x5686db[_0x47a5('0x17')](_0x1ea9c8)[_0x47a5('0x28')](_0x5b6c4e);};}exports[_0x47a5('0x22')]=function(_0x136b14,_0x16631f){if(_0x136b14[_0x47a5('0x29')]['id']){delete _0x136b14[_0x47a5('0x29')]['id'];}return db[_0x47a5('0x2a')][_0x47a5('0x2b')]({'where':{'id':_0x136b14['params']['id']}})[_0x47a5('0x23')](handleEntityNotFound(_0x16631f,null))['then'](saveUpdates(_0x136b14[_0x47a5('0x29')],null))[_0x47a5('0x23')](respondWithResult(_0x16631f,null))[_0x47a5('0x2c')](handleError(_0x16631f,null));};exports['destroy']=function(_0x256650,_0x625952){return db[_0x47a5('0x2a')][_0x47a5('0x2b')]({'where':{'id':_0x256650['params']['id']}})['then'](handleEntityNotFound(_0x625952,null))[_0x47a5('0x23')](removeEntity(_0x625952,null))[_0x47a5('0x2c')](handleError(_0x625952,null));};
\ No newline at end of file
index dec42b1..73571bc 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0xb241=['util','../../config/logger','moment','bluebird','request-promise','path','rimraf','../../config/environment','./condition.attributes','exports','define','Condition'];(function(_0x5e28cc,_0x4321b9){var _0x19e459=function(_0x44ac2c){while(--_0x44ac2c){_0x5e28cc['push'](_0x5e28cc['shift']());}};_0x19e459(++_0x4321b9);}(_0xb241,0x1d4));var _0x1b24=function(_0x20a584,_0xe384a5){_0x20a584=_0x20a584-0x0;var _0x4b41a8=_0xb241[_0x20a584];return _0x4b41a8;};'use strict';var _=require('lodash');var util=require(_0x1b24('0x0'));var logger=require(_0x1b24('0x1'))('api');var moment=require(_0x1b24('0x2'));var BPromise=require(_0x1b24('0x3'));var rp=require(_0x1b24('0x4'));var fs=require('fs');var path=require(_0x1b24('0x5'));var rimraf=require(_0x1b24('0x6'));var config=require(_0x1b24('0x7'));var attributes=require(_0x1b24('0x8'));module[_0x1b24('0x9')]=function(_0x51517b,_0x265cd8){return _0x51517b[_0x1b24('0xa')](_0x1b24('0xb'),attributes,{'tableName':'tools_conditions','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index f35fe92..99cc914 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0x9325=['util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','request','then','info','Condition,\x20%s,\x20%s','request\x20sent','debug','Condition,\x20%s,\x20%s,\x20%s','error','code','message','catch','lodash'];(function(_0x418972,_0x2b19bb){var _0x5392cf=function(_0x5314af){while(--_0x5314af){_0x418972['push'](_0x418972['shift']());}};_0x5392cf(++_0x2b19bb);}(_0x9325,0x197));var _0x5932=function(_0x4d3561,_0x1705c3){_0x4d3561=_0x4d3561-0x0;var _0x4556b2=_0x9325[_0x4d3561];return _0x4556b2;};'use strict';var _=require(_0x5932('0x0'));var util=require(_0x5932('0x1'));var moment=require(_0x5932('0x2'));var BPromise=require(_0x5932('0x3'));var rs=require(_0x5932('0x4'));var fs=require('fs');var Redis=require(_0x5932('0x5'));var db=require(_0x5932('0x6'))['db'];var utils=require('../../config/utils');var logger=require(_0x5932('0x7'))(_0x5932('0x8'));var config=require(_0x5932('0x9'));var jayson=require(_0x5932('0xa'));var client=jayson[_0x5932('0xb')][_0x5932('0xc')]({'port':0x232a});function respondWithRpcPromise(_0x50611a,_0xfb489a,_0x96165f){return new BPromise(function(_0x122159,_0xb33edf){return client[_0x5932('0xd')](_0x50611a,_0x96165f)[_0x5932('0xe')](function(_0x16a5ce){logger[_0x5932('0xf')](_0x5932('0x10'),_0xfb489a,_0x5932('0x11'));logger[_0x5932('0x12')](_0x5932('0x13'),_0xfb489a,_0x5932('0x11'),JSON['stringify'](_0x16a5ce));if(_0x16a5ce[_0x5932('0x14')]){if(_0x16a5ce[_0x5932('0x14')][_0x5932('0x15')]===0x1f4){logger[_0x5932('0x14')](_0x5932('0x10'),_0xfb489a,_0x16a5ce[_0x5932('0x14')][_0x5932('0x16')]);return _0xb33edf(_0x16a5ce[_0x5932('0x14')][_0x5932('0x16')]);}logger[_0x5932('0x14')](_0x5932('0x10'),_0xfb489a,_0x16a5ce[_0x5932('0x14')][_0x5932('0x16')]);return _0x122159(_0x16a5ce[_0x5932('0x14')][_0x5932('0x16')]);}else{logger[_0x5932('0xf')](_0x5932('0x10'),_0xfb489a,_0x5932('0x11'));_0x122159(_0x16a5ce['result'][_0x5932('0x16')]);}})[_0x5932('0x17')](function(_0x13aa9b){logger[_0x5932('0x14')]('Condition,\x20%s,\x20%s',_0xfb489a,_0x13aa9b);_0xb33edf(_0x13aa9b);});});}
\ No newline at end of file
index 08d1dd4..6a64abe 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0x3380=['../../components/interaction/service','../../config/environment','./condition.controller','/:id','isAuthenticated','update','delete','destroy','exports','multer','util','path','express','Router','fs-extra','../../components/auth/service'];(function(_0x26a1d6,_0xdd849f){var _0x3e20c0=function(_0x2e834e){while(--_0x2e834e){_0x26a1d6['push'](_0x26a1d6['shift']());}};_0x3e20c0(++_0xdd849f);}(_0x3380,0x169));var _0x0338=function(_0x5b365f,_0x702f14){_0x5b365f=_0x5b365f-0x0;var _0x337c74=_0x3380[_0x5b365f];return _0x337c74;};'use strict';var multer=require(_0x0338('0x0'));var util=require(_0x0338('0x1'));var path=require(_0x0338('0x2'));var timeout=require('connect-timeout');var express=require(_0x0338('0x3'));var router=express[_0x0338('0x4')]();var fs_extra=require(_0x0338('0x5'));var auth=require(_0x0338('0x6'));var interaction=require(_0x0338('0x7'));var config=require(_0x0338('0x8'));var controller=require(_0x0338('0x9'));router['put'](_0x0338('0xa'),auth[_0x0338('0xb')](),controller[_0x0338('0xc')]);router[_0x0338('0xd')]('/:id',auth[_0x0338('0xb')](),controller[_0x0338('0xe')]);module[_0x0338('0xf')]=router;
\ No newline at end of file
index 008c407..f8c628d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0xf44f=['name','INTEGER','sequelize','exports','STRING'];(function(_0x3c8f9c,_0x58c0bf){var _0x554d58=function(_0x22247d){while(--_0x22247d){_0x3c8f9c['push'](_0x3c8f9c['shift']());}};_0x554d58(++_0x58c0bf);}(_0xf44f,0x138));var _0xff44=function(_0x69c27c,_0x23e17b){_0x69c27c=_0x69c27c-0x0;var _0x264e06=_0xf44f[_0x69c27c];return _0x264e06;};'use strict';var Sequelize=require(_0xff44('0x0'));module[_0xff44('0x1')]={'name':{'type':Sequelize[_0xff44('0x2')],'allowNull':![],'unique':_0xff44('0x3')},'OrderBy':{'type':Sequelize[_0xff44('0x4')],'allowNull':!![]},'rgbBackgroundColor':{'type':Sequelize[_0xff44('0x2')],'allowNull':!![]}};
\ No newline at end of file
index bb1f05a..fd0953a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+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(_0x4c1176,_0xf999e9){var _0x2aca97=function(_0xb3cb82){while(--_0xb3cb82){_0x4c1176['push'](_0x4c1176['shift']());}};_0x2aca97(++_0xf999e9);}(_0x14a0,0x8e));var _0x014a=function(_0x81c6db,_0x31b844){_0x81c6db=_0x81c6db-0x0;var _0x3b116d=_0x14a0[_0x81c6db];return _0x3b116d;};'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
index e763e32..14fb716 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0xa30d=['define','tools_contact_item_types','util','../../config/logger','api','moment','bluebird','path','rimraf','../../config/environment','./contactItemType.attributes'];(function(_0x3ceff1,_0x3a37a5){var _0x2b662d=function(_0x2034da){while(--_0x2034da){_0x3ceff1['push'](_0x3ceff1['shift']());}};_0x2b662d(++_0x3a37a5);}(_0xa30d,0x115));var _0xda30=function(_0x59130c,_0x247906){_0x59130c=_0x59130c-0x0;var _0xcebda2=_0xa30d[_0x59130c];return _0xcebda2;};'use strict';var _=require('lodash');var util=require(_0xda30('0x0'));var logger=require(_0xda30('0x1'))(_0xda30('0x2'));var moment=require(_0xda30('0x3'));var BPromise=require(_0xda30('0x4'));var rp=require('request-promise');var fs=require('fs');var path=require(_0xda30('0x5'));var rimraf=require(_0xda30('0x6'));var config=require(_0xda30('0x7'));var attributes=require(_0xda30('0x8'));module['exports']=function(_0x59a1c2,_0x2f480c){return _0x59a1c2[_0xda30('0x9')]('ContactItemType',attributes,{'tableName':_0xda30('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 02319f7..bbc96e0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0xc42f=['lodash','util','moment','bluebird','randomstring','../../mysqldb','rpc','../../config/environment','jayson/promise','client','http','request','then','ContactItemType,\x20%s,\x20%s','request\x20sent','ContactItemType,\x20%s,\x20%s,\x20%s','stringify','error','code','message','info','result'];(function(_0x5c5fc0,_0x5410a4){var _0x145e24=function(_0x546add){while(--_0x546add){_0x5c5fc0['push'](_0x5c5fc0['shift']());}};_0x145e24(++_0x5410a4);}(_0xc42f,0xb0));var _0xfc42=function(_0x3607dd,_0x490b9c){_0x3607dd=_0x3607dd-0x0;var _0x454145=_0xc42f[_0x3607dd];return _0x454145;};'use strict';var _=require(_0xfc42('0x0'));var util=require(_0xfc42('0x1'));var moment=require(_0xfc42('0x2'));var BPromise=require(_0xfc42('0x3'));var rs=require(_0xfc42('0x4'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0xfc42('0x5'))['db'];var utils=require('../../config/utils');var logger=require('../../config/logger')(_0xfc42('0x6'));var config=require(_0xfc42('0x7'));var jayson=require(_0xfc42('0x8'));var client=jayson[_0xfc42('0x9')][_0xfc42('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x52b9e7,_0x18e6f1,_0x32c517){return new BPromise(function(_0x28bd92,_0x2a97e3){return client[_0xfc42('0xb')](_0x52b9e7,_0x32c517)[_0xfc42('0xc')](function(_0x161715){logger['info'](_0xfc42('0xd'),_0x18e6f1,_0xfc42('0xe'));logger['debug'](_0xfc42('0xf'),_0x18e6f1,_0xfc42('0xe'),JSON[_0xfc42('0x10')](_0x161715));if(_0x161715[_0xfc42('0x11')]){if(_0x161715[_0xfc42('0x11')][_0xfc42('0x12')]===0x1f4){logger[_0xfc42('0x11')](_0xfc42('0xd'),_0x18e6f1,_0x161715[_0xfc42('0x11')][_0xfc42('0x13')]);return _0x2a97e3(_0x161715[_0xfc42('0x11')]['message']);}logger[_0xfc42('0x11')](_0xfc42('0xd'),_0x18e6f1,_0x161715[_0xfc42('0x11')][_0xfc42('0x13')]);return _0x28bd92(_0x161715['error'][_0xfc42('0x13')]);}else{logger[_0xfc42('0x14')]('ContactItemType,\x20%s,\x20%s',_0x18e6f1,'request\x20sent');_0x28bd92(_0x161715[_0xfc42('0x15')]['message']);}})['catch'](function(_0x10a3f2){logger[_0xfc42('0x11')]('ContactItemType,\x20%s,\x20%s',_0x18e6f1,_0x10a3f2);_0x2a97e3(_0x10a3f2);});});}
\ No newline at end of file
index 685b347..82bd6cd 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0x9a3a=['exports','path','express','Router','../../components/auth/service','./contactItemType.controller','get','isAuthenticated','index','/:id','post','delete','destroy'];(function(_0x470db9,_0x2d2ec0){var _0x2a9651=function(_0x3c6d52){while(--_0x3c6d52){_0x470db9['push'](_0x470db9['shift']());}};_0x2a9651(++_0x2d2ec0);}(_0x9a3a,0x1bb));var _0xa9a3=function(_0x382c41,_0x5068b0){_0x382c41=_0x382c41-0x0;var _0x87482d=_0x9a3a[_0x382c41];return _0x87482d;};'use strict';var multer=require('multer');var util=require('util');var path=require(_0xa9a3('0x0'));var timeout=require('connect-timeout');var express=require(_0xa9a3('0x1'));var router=express[_0xa9a3('0x2')]();var fs_extra=require('fs-extra');var auth=require(_0xa9a3('0x3'));var interaction=require('../../components/interaction/service');var config=require('../../config/environment');var controller=require(_0xa9a3('0x4'));router[_0xa9a3('0x5')]('/',auth[_0xa9a3('0x6')](),controller[_0xa9a3('0x7')]);router[_0xa9a3('0x5')](_0xa9a3('0x8'),auth[_0xa9a3('0x6')](),controller['show']);router[_0xa9a3('0x9')]('/',auth['isAuthenticated'](),controller['create']);router['put'](_0xa9a3('0x8'),auth[_0xa9a3('0x6')](),controller['update']);router[_0xa9a3('0xa')]('/:id',auth['isAuthenticated'](),controller[_0xa9a3('0xb')]);module[_0xa9a3('0xc')]=router;
\ No newline at end of file
index df2419a..7f67c7c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0x0713=['STRING','name'];(function(_0xa73024,_0x411d1a){var _0x5c9e3e=function(_0x28047f){while(--_0x28047f){_0xa73024['push'](_0xa73024['shift']());}};_0x5c9e3e(++_0x411d1a);}(_0x0713,0x1ba));var _0x3071=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x0713[_0x3dd15e];return _0x231fd0;};'use strict';var Sequelize=require('sequelize');module['exports']={'name':{'type':Sequelize[_0x3071('0x0')],'allowNull':![],'unique':_0x3071('0x1')},'description':{'type':Sequelize[_0x3071('0x0')]}};
\ No newline at end of file
index cf413ba..46acabc 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0xd910=['filters','fields','attributes','length','nolimit','order','sort','where','filter','VIRTUAL','merge','options','includeAll','findAll','show','intersection','create','body','user','get','Unable\x20to\x20retrieve\x20the\x20current\x20user','find','autoAssociation','catch','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','clone','params','include','omit','createdAt','updatedAt','role','UserProfileSection','userProfileId','update','iframe','attrUrl','attrs','value','https://','attrPath','clock','attrHourFormat','HH:mm:ss','attrTimezone','0.00','attrFontSize','counter','attrMetric','total','attrVoiceQueues','attrChannel','voice','attrEmailAccounts','attrFaxAccounts','attrSmsAccounts','attrOpenchannelAccounts','attrWhatsappAccounts','attrChatWebsites','multibar-chart','attrSerie1','attrSerie2','attrSerie3','web-report','attrReport','attrRefresh','stringify','addItem','DashboardId','DashboardItem','getItems','findOne','pick','hasOwnProperty','eml-format','rimraf','zip-dir','fast-json-patch','moment','bluebird','mustache','path','sox','to-csv','ejs','fs-extra','lodash','squel','jsforce','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../mysqldb','defaults','redis','socket.io-emitter','./dashboard.socket','register','sendStatus','status','json','offset','undefined','limit','count','set','Content-Range','apply','save','then','destroy','CustomDashboards','end','error','name','send','index','map','Dashboard','rawAttributes','fieldName','type','model','keys','query'];(function(_0x39aae5,_0xfd2f27){var _0x266f9f=function(_0xe3e842){while(--_0xe3e842){_0x39aae5['push'](_0x39aae5['shift']());}};_0x266f9f(++_0xfd2f27);}(_0xd910,0x1d9));var _0x0d91=function(_0x1ad546,_0x3ca357){_0x1ad546=_0x1ad546-0x0;var _0x2f560b=_0xd910[_0x1ad546];return _0x2f560b;};'use strict';var emlformat=require(_0x0d91('0x0'));var rimraf=require(_0x0d91('0x1'));var zipdir=require(_0x0d91('0x2'));var jsonpatch=require(_0x0d91('0x3'));var rp=require('request-promise');var moment=require(_0x0d91('0x4'));var BPromise=require(_0x0d91('0x5'));var Mustache=require(_0x0d91('0x6'));var util=require('util');var path=require(_0x0d91('0x7'));var sox=require(_0x0d91('0x8'));var csv=require(_0x0d91('0x9'));var ejs=require(_0x0d91('0xa'));var fs=require('fs');var fs_extra=require(_0x0d91('0xb'));var _=require(_0x0d91('0xc'));var squel=require(_0x0d91('0xd'));var crypto=require('crypto');var jsforce=require(_0x0d91('0xe'));var deskjs=require('desk.js');var toCsv=require(_0x0d91('0x9'));var querystring=require(_0x0d91('0xf'));var Papa=require(_0x0d91('0x10'));var Redis=require(_0x0d91('0x11'));var authService=require(_0x0d91('0x12'));var qs=require(_0x0d91('0x13'));var as=require(_0x0d91('0x14'));var hardwareService=require(_0x0d91('0x15'));var logger=require(_0x0d91('0x16'))(_0x0d91('0x17'));var utils=require(_0x0d91('0x18'));var config=require(_0x0d91('0x19'));var licenseUtil=require('../../config/license/util');var db=require(_0x0d91('0x1a'))['db'];config['redis']=_[_0x0d91('0x1b')](config[_0x0d91('0x1c')],{'host':'localhost','port':0x18eb});var socket=require(_0x0d91('0x1d'))(new Redis(config[_0x0d91('0x1c')]));require(_0x0d91('0x1e'))[_0x0d91('0x1f')](socket);function respondWithStatusCode(_0x3707c5,_0x5cebe2){_0x5cebe2=_0x5cebe2||0xcc;return function(_0x43aac4){if(_0x43aac4){return _0x3707c5[_0x0d91('0x20')](_0x5cebe2);}return _0x3707c5['status'](_0x5cebe2)['end']();};}function respondWithResult(_0x3d5f86,_0x3fc196){_0x3fc196=_0x3fc196||0xc8;return function(_0x1c8edb){if(_0x1c8edb){return _0x3d5f86[_0x0d91('0x21')](_0x3fc196)[_0x0d91('0x22')](_0x1c8edb);}};}function respondWithFilteredResult(_0x3b9ab2,_0xaa1ff1){return function(_0x4e02e4){if(_0x4e02e4){var _0x3f6be2=typeof _0xaa1ff1[_0x0d91('0x23')]===_0x0d91('0x24')&&typeof _0xaa1ff1[_0x0d91('0x25')]==='undefined';var _0x27abaf=_0x4e02e4[_0x0d91('0x26')];var _0x2fb939=_0x3f6be2?0x0:_0xaa1ff1[_0x0d91('0x23')];var _0x499265=_0x3f6be2?_0x4e02e4[_0x0d91('0x26')]:_0xaa1ff1[_0x0d91('0x23')]+_0xaa1ff1[_0x0d91('0x25')];var _0x598c8b;if(_0x499265>=_0x27abaf){_0x499265=_0x27abaf;_0x598c8b=0xc8;}else{_0x598c8b=0xce;}_0x3b9ab2['status'](_0x598c8b);return _0x3b9ab2[_0x0d91('0x27')](_0x0d91('0x28'),_0x2fb939+'-'+_0x499265+'/'+_0x27abaf)[_0x0d91('0x22')](_0x4e02e4);}return null;};}function patchUpdates(_0x5252cb){return function(_0x5dc86a){try{jsonpatch[_0x0d91('0x29')](_0x5dc86a,_0x5252cb,!![]);}catch(_0x469bca){return BPromise['reject'](_0x469bca);}return _0x5dc86a[_0x0d91('0x2a')]();};}function saveUpdates(_0x221ff2,_0x3008cd){return function(_0x4c4587){if(_0x4c4587){return _0x4c4587['update'](_0x221ff2)[_0x0d91('0x2b')](function(_0x2a75b0){return _0x2a75b0;});}return null;};}function removeEntity(_0xee2ae4,_0x255ea3){return function(_0x42353b){if(_0x42353b){return _0x42353b[_0x0d91('0x2c')]()[_0x0d91('0x2b')](function(){var _0x351c0d=_0x42353b['get']({'plain':!![]});var _0x37a6d5=_0x0d91('0x2d');return db['UserProfileResource'][_0x0d91('0x2c')]({'where':{'type':_0x37a6d5,'resourceId':_0x351c0d['id']}})['then'](function(){return _0x42353b;});})[_0x0d91('0x2b')](function(){_0xee2ae4[_0x0d91('0x21')](0xcc)[_0x0d91('0x2e')]();});}};}function handleEntityNotFound(_0x49b25c,_0x3b0b10){return function(_0x381b3c){if(!_0x381b3c){_0x49b25c[_0x0d91('0x20')](0x194);}return _0x381b3c;};}function handleError(_0x435ce0,_0x26b6f6){_0x26b6f6=_0x26b6f6||0x1f4;return function(_0x90dfca){logger[_0x0d91('0x2f')](_0x90dfca['stack']);if(_0x90dfca[_0x0d91('0x30')]){delete _0x90dfca['name'];}_0x435ce0[_0x0d91('0x21')](_0x26b6f6)[_0x0d91('0x31')](_0x90dfca);};}exports[_0x0d91('0x32')]=function(_0x3e2796,_0x13d1f4){var _0x384cad={},_0x581fb2={},_0x131939={'count':0x0,'rows':[]};var _0x4c79fb=_[_0x0d91('0x33')](db[_0x0d91('0x34')][_0x0d91('0x35')],function(_0xdb6043){return{'name':_0xdb6043[_0x0d91('0x36')],'type':_0xdb6043[_0x0d91('0x37')]['key']};});_0x581fb2[_0x0d91('0x38')]=_[_0x0d91('0x33')](_0x4c79fb,'name');_0x581fb2['query']=_[_0x0d91('0x39')](_0x3e2796[_0x0d91('0x3a')]);_0x581fb2[_0x0d91('0x3b')]=_['intersection'](_0x581fb2['model'],_0x581fb2[_0x0d91('0x3a')]);_0x384cad['attributes']=_['intersection'](_0x581fb2[_0x0d91('0x38')],qs[_0x0d91('0x3c')](_0x3e2796[_0x0d91('0x3a')][_0x0d91('0x3c')]));_0x384cad[_0x0d91('0x3d')]=_0x384cad['attributes'][_0x0d91('0x3e')]?_0x384cad[_0x0d91('0x3d')]:_0x581fb2[_0x0d91('0x38')];if(!_0x3e2796['query']['hasOwnProperty'](_0x0d91('0x3f'))){_0x384cad[_0x0d91('0x25')]=qs[_0x0d91('0x25')](_0x3e2796[_0x0d91('0x3a')]['limit']);_0x384cad[_0x0d91('0x23')]=qs[_0x0d91('0x23')](_0x3e2796[_0x0d91('0x3a')]['offset']);}_0x384cad[_0x0d91('0x40')]=qs[_0x0d91('0x41')](_0x3e2796['query'][_0x0d91('0x41')]);_0x384cad[_0x0d91('0x42')]=qs[_0x0d91('0x3b')](_['pick'](_0x3e2796['query'],_0x581fb2['filters']),_0x4c79fb);if(_0x3e2796['query'][_0x0d91('0x43')]){_0x384cad['where']=_['merge'](_0x384cad[_0x0d91('0x42')],{'$or':_[_0x0d91('0x33')](_0x4c79fb,function(_0x27f5ce){if(_0x27f5ce[_0x0d91('0x37')]!==_0x0d91('0x44')){var _0x1e8966={};_0x1e8966[_0x27f5ce[_0x0d91('0x30')]]={'$like':'%'+_0x3e2796['query'][_0x0d91('0x43')]+'%'};return _0x1e8966;}})});}_0x384cad=_[_0x0d91('0x45')]({},_0x384cad,_0x3e2796[_0x0d91('0x46')]);var _0x4a8be0={'where':_0x384cad[_0x0d91('0x42')]};return db[_0x0d91('0x34')]['count'](_0x4a8be0)['then'](function(_0x39f788){_0x131939['count']=_0x39f788;if(_0x3e2796['query'][_0x0d91('0x47')]){_0x384cad['include']=[{'all':!![]}];}return db[_0x0d91('0x34')][_0x0d91('0x48')](_0x384cad);})[_0x0d91('0x2b')](function(_0x4e5e49){_0x131939['rows']=_0x4e5e49;return _0x131939;})['then'](respondWithFilteredResult(_0x13d1f4,_0x384cad))['catch'](handleError(_0x13d1f4,null));};exports[_0x0d91('0x49')]=function(_0x20cad2,_0x492629){var _0x33c0d7={'raw':![],'where':{'id':_0x20cad2['params']['id']}},_0x48c812={};_0x48c812[_0x0d91('0x38')]=_[_0x0d91('0x39')](db[_0x0d91('0x34')]['rawAttributes']);_0x48c812['query']=_[_0x0d91('0x39')](_0x20cad2[_0x0d91('0x3a')]);_0x48c812[_0x0d91('0x3b')]=_[_0x0d91('0x4a')](_0x48c812[_0x0d91('0x38')],_0x48c812[_0x0d91('0x3a')]);_0x33c0d7['attributes']=_[_0x0d91('0x4a')](_0x48c812[_0x0d91('0x38')],qs['fields'](_0x20cad2['query'][_0x0d91('0x3c')]));_0x33c0d7[_0x0d91('0x3d')]=_0x33c0d7[_0x0d91('0x3d')][_0x0d91('0x3e')]?_0x33c0d7[_0x0d91('0x3d')]:_0x48c812[_0x0d91('0x38')];if(_0x20cad2[_0x0d91('0x3a')][_0x0d91('0x47')]){_0x33c0d7['include']=[{'all':!![]}];}_0x33c0d7=_[_0x0d91('0x45')]({},_0x33c0d7,_0x20cad2['options']);return db[_0x0d91('0x34')]['find'](_0x33c0d7)[_0x0d91('0x2b')](handleEntityNotFound(_0x492629,null))[_0x0d91('0x2b')](respondWithResult(_0x492629,null))['catch'](handleError(_0x492629,null));};exports[_0x0d91('0x4b')]=function(_0x3fea13,_0x21b57a){return db[_0x0d91('0x34')][_0x0d91('0x4b')](_0x3fea13[_0x0d91('0x4c')],{})[_0x0d91('0x2b')](function(_0xe15336){var _0x1e1e87=_0x3fea13[_0x0d91('0x4d')][_0x0d91('0x4e')]({'plain':!![]});if(!_0x1e1e87)throw new Error(_0x0d91('0x4f'));if(_0x1e1e87['role']==='user'){var _0x3e5966=_0xe15336[_0x0d91('0x4e')]({'plain':!![]});var _0x31e56f=_0x0d91('0x2d');return db['UserProfileSection'][_0x0d91('0x50')]({'where':{'name':_0x31e56f,'userProfileId':_0x1e1e87['userProfileId']},'raw':!![]})[_0x0d91('0x2b')](function(_0x49f8b6){if(_0x49f8b6&&_0x49f8b6[_0x0d91('0x51')]===0x0){return db['UserProfileResource']['create']({'name':_0x3e5966[_0x0d91('0x30')],'resourceId':_0x3e5966['id'],'type':_0x49f8b6[_0x0d91('0x30')],'sectionId':_0x49f8b6['id']},{})[_0x0d91('0x2b')](function(){return _0xe15336;});}else{return _0xe15336;}})[_0x0d91('0x52')](function(_0x210da1){logger[_0x0d91('0x2f')](_0x0d91('0x53'),_0x210da1);throw _0x210da1;});}return _0xe15336;})['then'](respondWithResult(_0x21b57a,0xc9))[_0x0d91('0x52')](handleError(_0x21b57a,null));};exports[_0x0d91('0x54')]=function(_0x590f17,_0x403713){var _0xfbe71e={'where':{'id':_0x590f17[_0x0d91('0x55')]['id']}},_0x43fac3={};_0x43fac3[_0x0d91('0x38')]=_['keys'](db[_0x0d91('0x34')][_0x0d91('0x35')]);_0xfbe71e[_0x0d91('0x3d')]=_[_0x0d91('0x4a')](_0x43fac3[_0x0d91('0x38')],qs[_0x0d91('0x3c')](_0x590f17['query']['fields']));_0xfbe71e[_0x0d91('0x3d')]=_0xfbe71e['attributes'][_0x0d91('0x3e')]?_0xfbe71e[_0x0d91('0x3d')]:_0x43fac3[_0x0d91('0x38')];if(_0x590f17['query'][_0x0d91('0x47')]){_0xfbe71e[_0x0d91('0x56')]=[{'all':!![]}];}_0xfbe71e=_['merge']({},_0xfbe71e,_0x590f17[_0x0d91('0x46')]);return db[_0x0d91('0x34')][_0x0d91('0x50')](_0xfbe71e)[_0x0d91('0x2b')](handleEntityNotFound(_0x403713,null))[_0x0d91('0x2b')](function(_0x5c66cd){if(_0x5c66cd){var _0x17ed0a=_0x5c66cd[_0x0d91('0x4e')]({'plain':!![]});_0x17ed0a=qs[_0x0d91('0x57')](_0x17ed0a,['id',_0x0d91('0x58'),_0x0d91('0x59')]);_0x590f17[_0x0d91('0x4c')]=_[_0x0d91('0x57')](_0x590f17['body'],['id',_0x0d91('0x58'),'updatedAt']);return db[_0x0d91('0x34')][_0x0d91('0x4b')](_[_0x0d91('0x45')](_0x17ed0a,_0x590f17[_0x0d91('0x4c')]),{'include':_0x590f17['query'][_0x0d91('0x47')]?[{'all':!![]}]:undefined})[_0x0d91('0x2b')](function(_0x5cac64){var _0x31873b=_0x590f17['user']['get']({'plain':!![]});if(!_0x31873b)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x31873b[_0x0d91('0x5a')]===_0x0d91('0x4d')){var _0x2eb359=_0x5cac64[_0x0d91('0x4e')]({'plain':!![]});var _0x140f38=_0x0d91('0x2d');return db[_0x0d91('0x5b')][_0x0d91('0x50')]({'where':{'name':_0x140f38,'userProfileId':_0x31873b[_0x0d91('0x5c')]},'raw':!![]})[_0x0d91('0x2b')](function(_0xeea5e7){if(_0xeea5e7&&_0xeea5e7[_0x0d91('0x51')]===0x0){return db['UserProfileResource'][_0x0d91('0x4b')]({'name':_0x2eb359['name'],'resourceId':_0x2eb359['id'],'type':_0xeea5e7[_0x0d91('0x30')],'sectionId':_0xeea5e7['id']},{})['then'](function(){return _0x5cac64;});}else{return _0x5cac64;}})[_0x0d91('0x52')](function(_0x5be757){logger[_0x0d91('0x2f')](_0x0d91('0x53'),_0x5be757);throw _0x5be757;});}return _0x5cac64;});}})[_0x0d91('0x2b')](respondWithResult(_0x403713,0xc9))['catch'](handleError(_0x403713,null));};exports[_0x0d91('0x5d')]=function(_0x3ac000,_0x3e8b16){if(_0x3ac000['body']['id']){delete _0x3ac000[_0x0d91('0x4c')]['id'];}return db[_0x0d91('0x34')][_0x0d91('0x50')]({'where':{'id':_0x3ac000[_0x0d91('0x55')]['id']}})[_0x0d91('0x2b')](handleEntityNotFound(_0x3e8b16,null))[_0x0d91('0x2b')](saveUpdates(_0x3ac000['body'],null))[_0x0d91('0x2b')](respondWithResult(_0x3e8b16,null))['catch'](handleError(_0x3e8b16,null));};exports[_0x0d91('0x2c')]=function(_0x474fab,_0x35113e){return db[_0x0d91('0x34')][_0x0d91('0x50')]({'where':{'id':_0x474fab['params']['id']}})[_0x0d91('0x2b')](handleEntityNotFound(_0x35113e,null))[_0x0d91('0x2b')](removeEntity(_0x35113e,null))[_0x0d91('0x52')](handleError(_0x35113e,null));};function widgetAttributes(_0x4377cf){try{switch(_0x4377cf[_0x0d91('0x37')]){case _0x0d91('0x5e'):return[{'name':'attrUrl','value':_0x4377cf[_0x0d91('0x5f')]||(_0x4377cf[_0x0d91('0x60')]&&_0x4377cf[_0x0d91('0x60')][0x0]?_0x4377cf['attrs'][0x0][_0x0d91('0x61')]:undefined)||_0x0d91('0x62')}];case'custom':return[{'name':_0x0d91('0x63'),'value':_0x4377cf[_0x0d91('0x63')]||(_0x4377cf[_0x0d91('0x60')]&&_0x4377cf['attrs'][0x0]?_0x4377cf[_0x0d91('0x60')][0x0][_0x0d91('0x61')]:undefined)||''}];case _0x0d91('0x64'):return[{'name':_0x0d91('0x65'),'value':_0x4377cf[_0x0d91('0x65')]||(_0x4377cf['attrs']&&_0x4377cf[_0x0d91('0x60')][0x0]?_0x4377cf[_0x0d91('0x60')][0x0][_0x0d91('0x61')]:undefined)||_0x0d91('0x66')},{'name':_0x0d91('0x67'),'value':_0x4377cf[_0x0d91('0x67')]||(_0x4377cf[_0x0d91('0x60')]&&_0x4377cf[_0x0d91('0x60')][0x1]?_0x4377cf[_0x0d91('0x60')][0x1][_0x0d91('0x61')]:undefined)||_0x0d91('0x68')},{'name':'attrFontSize','value':_0x4377cf[_0x0d91('0x69')]||(_0x4377cf[_0x0d91('0x60')]&&_0x4377cf[_0x0d91('0x60')][0x2]?_0x4377cf[_0x0d91('0x60')][0x2][_0x0d91('0x61')]:undefined)||0xc}];case _0x0d91('0x6a'):return[{'name':_0x0d91('0x6b'),'value':_0x4377cf[_0x0d91('0x6b')]||(_0x4377cf['attrs']&&_0x4377cf[_0x0d91('0x60')][0x0]?_0x4377cf['attrs'][0x0][_0x0d91('0x61')]:undefined)||_0x0d91('0x6c')},{'name':_0x0d91('0x6d'),'value':_0x4377cf[_0x0d91('0x6d')]||(_0x4377cf['attrs']&&_0x4377cf[_0x0d91('0x60')][0x1]?_0x4377cf[_0x0d91('0x60')][0x1][_0x0d91('0x61')]:undefined)||[]},{'name':_0x0d91('0x69'),'value':_0x4377cf[_0x0d91('0x69')]||(_0x4377cf[_0x0d91('0x60')]&&_0x4377cf[_0x0d91('0x60')][0x2]?_0x4377cf[_0x0d91('0x60')][0x2][_0x0d91('0x61')]:undefined)||0x14},{'name':_0x0d91('0x6e'),'value':_0x4377cf[_0x0d91('0x6e')]||(_0x4377cf[_0x0d91('0x60')]&&_0x4377cf[_0x0d91('0x60')][0x3]?_0x4377cf[_0x0d91('0x60')][0x3][_0x0d91('0x61')]:undefined)||_0x0d91('0x6f')},{'name':_0x0d91('0x70'),'value':_0x4377cf[_0x0d91('0x70')]||(_0x4377cf[_0x0d91('0x60')]&&_0x4377cf[_0x0d91('0x60')][0x4]?_0x4377cf[_0x0d91('0x60')][0x4][_0x0d91('0x61')]:undefined)||''},{'name':_0x0d91('0x71'),'value':_0x4377cf[_0x0d91('0x71')]||(_0x4377cf[_0x0d91('0x60')]&&_0x4377cf[_0x0d91('0x60')][0x5]?_0x4377cf[_0x0d91('0x60')][0x5]['value']:undefined)||''},{'name':_0x0d91('0x72'),'value':_0x4377cf[_0x0d91('0x72')]||(_0x4377cf[_0x0d91('0x60')]&&_0x4377cf[_0x0d91('0x60')][0x6]?_0x4377cf['attrs'][0x6][_0x0d91('0x61')]:undefined)||''},{'name':_0x0d91('0x73'),'value':_0x4377cf[_0x0d91('0x73')]||(_0x4377cf[_0x0d91('0x60')]&&_0x4377cf[_0x0d91('0x60')][0x7]?_0x4377cf['attrs'][0x7][_0x0d91('0x61')]:undefined)||''},{'name':'attrWhatsappAccounts','value':_0x4377cf[_0x0d91('0x74')]||(_0x4377cf[_0x0d91('0x60')]&&_0x4377cf['attrs'][0x8]?_0x4377cf[_0x0d91('0x60')][0x8][_0x0d91('0x61')]:undefined)||''},{'name':'attrChatWebsites','value':_0x4377cf[_0x0d91('0x75')]||(_0x4377cf[_0x0d91('0x60')]&&_0x4377cf['attrs'][0x9]?_0x4377cf[_0x0d91('0x60')][0x9][_0x0d91('0x61')]:undefined)||''}];case _0x0d91('0x76'):case'pie-chart':return[{'name':_0x0d91('0x77'),'value':_0x4377cf[_0x0d91('0x77')]||(_0x4377cf[_0x0d91('0x60')]&&_0x4377cf[_0x0d91('0x60')][0x0]?_0x4377cf[_0x0d91('0x60')][0x0][_0x0d91('0x61')]:undefined)||_0x0d91('0x6c')},{'name':'attrSerie2','value':_0x4377cf[_0x0d91('0x78')]||(_0x4377cf[_0x0d91('0x60')]&&_0x4377cf[_0x0d91('0x60')][0x1]?_0x4377cf[_0x0d91('0x60')][0x1][_0x0d91('0x61')]:undefined)||null},{'name':_0x0d91('0x79'),'value':_0x4377cf[_0x0d91('0x79')]||(_0x4377cf[_0x0d91('0x60')]&&_0x4377cf[_0x0d91('0x60')][0x2]?_0x4377cf[_0x0d91('0x60')][0x2][_0x0d91('0x61')]:undefined)||null},{'name':_0x0d91('0x6d'),'value':_0x4377cf[_0x0d91('0x6d')]||(_0x4377cf['attrs']&&_0x4377cf['attrs'][0x3]?_0x4377cf[_0x0d91('0x60')][0x3][_0x0d91('0x61')]:undefined)||[]},{'name':_0x0d91('0x6e'),'value':_0x4377cf['attrChannel']||(_0x4377cf['attrs']&&_0x4377cf['attrs'][0x4]?_0x4377cf[_0x0d91('0x60')][0x4][_0x0d91('0x61')]:undefined)||_0x0d91('0x6f')},{'name':_0x0d91('0x70'),'value':_0x4377cf[_0x0d91('0x70')]||(_0x4377cf[_0x0d91('0x60')]&&_0x4377cf[_0x0d91('0x60')][0x5]?_0x4377cf[_0x0d91('0x60')][0x5][_0x0d91('0x61')]:undefined)||''},{'name':_0x0d91('0x71'),'value':_0x4377cf[_0x0d91('0x71')]||(_0x4377cf[_0x0d91('0x60')]&&_0x4377cf[_0x0d91('0x60')][0x6]?_0x4377cf[_0x0d91('0x60')][0x6][_0x0d91('0x61')]:undefined)||''},{'name':_0x0d91('0x72'),'value':_0x4377cf[_0x0d91('0x72')]||(_0x4377cf[_0x0d91('0x60')]&&_0x4377cf[_0x0d91('0x60')][0x7]?_0x4377cf['attrs'][0x7][_0x0d91('0x61')]:undefined)||''},{'name':_0x0d91('0x73'),'value':_0x4377cf[_0x0d91('0x73')]||(_0x4377cf[_0x0d91('0x60')]&&_0x4377cf[_0x0d91('0x60')][0x8]?_0x4377cf[_0x0d91('0x60')][0x8][_0x0d91('0x61')]:undefined)||''},{'name':_0x0d91('0x74'),'value':_0x4377cf[_0x0d91('0x74')]||(_0x4377cf[_0x0d91('0x60')]&&_0x4377cf[_0x0d91('0x60')][0x9]?_0x4377cf[_0x0d91('0x60')][0x9][_0x0d91('0x61')]:undefined)||''},{'name':_0x0d91('0x75'),'value':_0x4377cf[_0x0d91('0x75')]||(_0x4377cf[_0x0d91('0x60')]&&_0x4377cf[_0x0d91('0x60')][0xa]?_0x4377cf[_0x0d91('0x60')][0xa][_0x0d91('0x61')]:undefined)||''}];case _0x0d91('0x7a'):return[{'name':_0x0d91('0x7b'),'type':_0x4377cf['reportType']||(_0x4377cf[_0x0d91('0x60')]&&_0x4377cf[_0x0d91('0x60')][0x0]?_0x4377cf[_0x0d91('0x60')][0x0][_0x0d91('0x37')]:undefined)||null,'value':_0x4377cf[_0x0d91('0x7b')]||(_0x4377cf[_0x0d91('0x60')]&&_0x4377cf[_0x0d91('0x60')][0x0]?_0x4377cf[_0x0d91('0x60')][0x0]['value']:undefined)||null},{'name':_0x0d91('0x7c'),'value':_0x4377cf[_0x0d91('0x7c')]||(_0x4377cf[_0x0d91('0x60')]&&_0x4377cf[_0x0d91('0x60')][0x1]?_0x4377cf[_0x0d91('0x60')][0x1]['value']:undefined)||0x0}];default:return[];}}catch(_0x4ff222){logger['error']('widgetAttributes:\x20%s',JSON[_0x0d91('0x7d')](_0x4ff222));return[];}}exports[_0x0d91('0x7e')]=function(_0x33d0de,_0xc17f1c,_0x433cd7){if(_0x33d0de[_0x0d91('0x4c')]['id']){delete _0x33d0de[_0x0d91('0x4c')]['id'];}return db[_0x0d91('0x34')][_0x0d91('0x50')]({'where':{'id':_0x33d0de['params']['id']}})[_0x0d91('0x2b')](handleEntityNotFound(_0xc17f1c,null))['then'](function(_0x3515fa){if(_0x3515fa){_0x33d0de[_0x0d91('0x4c')][_0x0d91('0x7f')]=_0x3515fa['id'];_0x33d0de[_0x0d91('0x4c')][_0x0d91('0x60')]=widgetAttributes(_0x33d0de[_0x0d91('0x4c')]);return db[_0x0d91('0x80')][_0x0d91('0x4b')](_0x33d0de[_0x0d91('0x4c')]);}})[_0x0d91('0x2b')](respondWithResult(_0xc17f1c,null))['catch'](handleError(_0xc17f1c,null));};exports[_0x0d91('0x81')]=function(_0x32674f,_0x60bbb2,_0x64e609){var _0x386f2a={};var _0x533cf7={};var _0x12507d;var _0x4117b4;return db[_0x0d91('0x34')][_0x0d91('0x82')]({'where':{'id':_0x32674f[_0x0d91('0x55')]['id']}})['then'](handleEntityNotFound(_0x60bbb2,null))[_0x0d91('0x2b')](function(_0x5cec3d){if(_0x5cec3d){_0x12507d=_0x5cec3d;_0x533cf7[_0x0d91('0x38')]=_[_0x0d91('0x39')](db[_0x0d91('0x80')][_0x0d91('0x35')]);_0x533cf7['query']=_[_0x0d91('0x39')](_0x32674f[_0x0d91('0x3a')]);_0x533cf7[_0x0d91('0x3b')]=_['intersection'](_0x533cf7[_0x0d91('0x38')],_0x533cf7[_0x0d91('0x3a')]);_0x386f2a[_0x0d91('0x3d')]=_['intersection'](_0x533cf7[_0x0d91('0x38')],qs[_0x0d91('0x3c')](_0x32674f[_0x0d91('0x3a')][_0x0d91('0x3c')]));_0x386f2a['attributes']=_0x386f2a[_0x0d91('0x3d')][_0x0d91('0x3e')]?_0x386f2a[_0x0d91('0x3d')]:_0x533cf7[_0x0d91('0x38')];_0x386f2a['order']=qs[_0x0d91('0x41')](_0x32674f[_0x0d91('0x3a')][_0x0d91('0x41')]);_0x386f2a['where']=qs[_0x0d91('0x3b')](_[_0x0d91('0x83')](_0x32674f[_0x0d91('0x3a')],_0x533cf7[_0x0d91('0x3b')]));if(_0x32674f[_0x0d91('0x3a')][_0x0d91('0x43')]){_0x386f2a[_0x0d91('0x42')]=_[_0x0d91('0x45')](_0x386f2a[_0x0d91('0x42')],{'$or':_[_0x0d91('0x33')](_0x386f2a[_0x0d91('0x3d')],function(_0x59879a){var _0x10cd9d={};_0x10cd9d[_0x59879a]={'$like':'%'+_0x32674f['query'][_0x0d91('0x43')]+'%'};return _0x10cd9d;})});}_0x386f2a=_['merge']({},_0x386f2a,_0x32674f[_0x0d91('0x46')]);return _0x12507d[_0x0d91('0x81')](_0x386f2a);}})['then'](function(_0x29509b){if(_0x29509b){_0x4117b4=_0x29509b[_0x0d91('0x3e')];if(!_0x32674f[_0x0d91('0x3a')][_0x0d91('0x84')](_0x0d91('0x3f'))){_0x386f2a['limit']=qs[_0x0d91('0x25')](_0x32674f[_0x0d91('0x3a')][_0x0d91('0x25')]);_0x386f2a[_0x0d91('0x23')]=qs[_0x0d91('0x23')](_0x32674f[_0x0d91('0x3a')]['offset']);}return _0x12507d[_0x0d91('0x81')](_0x386f2a);}})['then'](function(_0xcd8a10){if(_0xcd8a10){return _0xcd8a10?{'count':_0x4117b4,'rows':_0xcd8a10}:null;}})[_0x0d91('0x2b')](respondWithResult(_0x60bbb2,null))[_0x0d91('0x52')](handleError(_0x60bbb2,null));};
\ No newline at end of file
index 474118e..18976e7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0x2118=['setMaxListeners','save','remove','emit','hook','exports','events','Dashboard'];(function(_0x22c957,_0x151d4b){var _0x3d990a=function(_0x48dd60){while(--_0x48dd60){_0x22c957['push'](_0x22c957['shift']());}};_0x3d990a(++_0x151d4b);}(_0x2118,0x15e));var _0x8211=function(_0x1cc8fe,_0x105328){_0x1cc8fe=_0x1cc8fe-0x0;var _0x230054=_0x2118[_0x1cc8fe];return _0x230054;};'use strict';var EventEmitter=require(_0x8211('0x0'));var Dashboard=require('../../mysqldb')['db'][_0x8211('0x1')];var DashboardEvents=new EventEmitter();DashboardEvents[_0x8211('0x2')](0x0);var events={'afterCreate':_0x8211('0x3'),'afterUpdate':'update','afterDestroy':_0x8211('0x4')};function emitEvent(_0x3526fc){return function(_0x2ca112,_0x2de1a5,_0xe2a407){DashboardEvents[_0x8211('0x5')](_0x3526fc+':'+_0x2ca112['id'],_0x2ca112);DashboardEvents[_0x8211('0x5')](_0x3526fc,_0x2ca112);_0xe2a407(null);};}for(var e in events){if(events['hasOwnProperty'](e)){var event=events[e];Dashboard[_0x8211('0x6')](e,emitEvent(event));}}module[_0x8211('0x7')]=DashboardEvents;
\ No newline at end of file
index a99e7a6..a95d29a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0xe213=['exports','define','Dashboard','dashboards','lodash','util','../../config/logger','api','moment','bluebird','request-promise','path','rimraf','../../config/environment'];(function(_0x3192c7,_0x5e485f){var _0x21fe2a=function(_0x94890e){while(--_0x94890e){_0x3192c7['push'](_0x3192c7['shift']());}};_0x21fe2a(++_0x5e485f);}(_0xe213,0x11c));var _0x3e21=function(_0x2aecb2,_0x343312){_0x2aecb2=_0x2aecb2-0x0;var _0x3ebb80=_0xe213[_0x2aecb2];return _0x3ebb80;};'use strict';var _=require(_0x3e21('0x0'));var util=require(_0x3e21('0x1'));var logger=require(_0x3e21('0x2'))(_0x3e21('0x3'));var moment=require(_0x3e21('0x4'));var BPromise=require(_0x3e21('0x5'));var rp=require(_0x3e21('0x6'));var fs=require('fs');var path=require(_0x3e21('0x7'));var rimraf=require(_0x3e21('0x8'));var config=require(_0x3e21('0x9'));var attributes=require('./dashboard.attributes');module[_0x3e21('0xa')]=function(_0x4410b3,_0x401c4d){return _0x4410b3[_0x3e21('0xb')](_0x3e21('0xc'),attributes,{'tableName':_0x3e21('0xd'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index be8abe6..d6a454d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0x28f8=['then','info','Dashboard,\x20%s,\x20%s','request\x20sent','debug','stringify','error','code','message','result','catch','lodash','util','moment','bluebird','ioredis','../../mysqldb','../../config/logger','rpc','../../config/environment','jayson/promise','http','redis','socket.io-emitter','./dashboard.socket','register','request'];(function(_0xdbfe2f,_0x12643d){var _0x5061cc=function(_0x3a449f){while(--_0x3a449f){_0xdbfe2f['push'](_0xdbfe2f['shift']());}};_0x5061cc(++_0x12643d);}(_0x28f8,0x1f1));var _0x828f=function(_0x4e7413,_0x5dffb1){_0x4e7413=_0x4e7413-0x0;var _0x11b6de=_0x28f8[_0x4e7413];return _0x11b6de;};'use strict';var _=require(_0x828f('0x0'));var util=require(_0x828f('0x1'));var moment=require(_0x828f('0x2'));var BPromise=require(_0x828f('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x828f('0x4'));var db=require(_0x828f('0x5'))['db'];var utils=require('../../config/utils');var logger=require(_0x828f('0x6'))(_0x828f('0x7'));var config=require(_0x828f('0x8'));var jayson=require(_0x828f('0x9'));var client=jayson['client'][_0x828f('0xa')]({'port':0x232a});config[_0x828f('0xb')]=_['defaults'](config['redis'],{'host':'localhost','port':0x18eb});var socket=require(_0x828f('0xc'))(new Redis(config[_0x828f('0xb')]));require(_0x828f('0xd'))[_0x828f('0xe')](socket);function respondWithRpcPromise(_0x1200bb,_0x2e3a9f,_0x53128b){return new BPromise(function(_0x235db5,_0x5cd571){return client[_0x828f('0xf')](_0x1200bb,_0x53128b)[_0x828f('0x10')](function(_0xcb5ac4){logger[_0x828f('0x11')](_0x828f('0x12'),_0x2e3a9f,_0x828f('0x13'));logger[_0x828f('0x14')]('Dashboard,\x20%s,\x20%s,\x20%s',_0x2e3a9f,_0x828f('0x13'),JSON[_0x828f('0x15')](_0xcb5ac4));if(_0xcb5ac4[_0x828f('0x16')]){if(_0xcb5ac4['error'][_0x828f('0x17')]===0x1f4){logger[_0x828f('0x16')](_0x828f('0x12'),_0x2e3a9f,_0xcb5ac4[_0x828f('0x16')][_0x828f('0x18')]);return _0x5cd571(_0xcb5ac4[_0x828f('0x16')]['message']);}logger[_0x828f('0x16')](_0x828f('0x12'),_0x2e3a9f,_0xcb5ac4[_0x828f('0x16')][_0x828f('0x18')]);return _0x235db5(_0xcb5ac4[_0x828f('0x16')][_0x828f('0x18')]);}else{logger[_0x828f('0x11')](_0x828f('0x12'),_0x2e3a9f,'request\x20sent');_0x235db5(_0xcb5ac4[_0x828f('0x19')][_0x828f('0x18')]);}})[_0x828f('0x1a')](function(_0x25aef5){logger['error'](_0x828f('0x12'),_0x2e3a9f,_0x25aef5);_0x5cd571(_0x25aef5);});});}
\ No newline at end of file
index 09fbbd5..90bc1b5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0xf653=['update','emit','register','length','dashboard:','./dashboard.events'];(function(_0x17f4a4,_0x63ede3){var _0x4e9876=function(_0x415272){while(--_0x415272){_0x17f4a4['push'](_0x17f4a4['shift']());}};_0x4e9876(++_0x63ede3);}(_0xf653,0x197));var _0x3f65=function(_0x1e7df3,_0xdcea39){_0x1e7df3=_0x1e7df3-0x0;var _0x36233c=_0xf653[_0x1e7df3];return _0x36233c;};'use strict';var DashboardEvents=require(_0x3f65('0x0'));var events=['save','remove',_0x3f65('0x1')];function createListener(_0x44afdf,_0x872095){return function(_0x462850){_0x872095[_0x3f65('0x2')](_0x44afdf,_0x462850);};}function removeListener(_0x5bb651,_0x1bac34){return function(){DashboardEvents['removeListener'](_0x5bb651,_0x1bac34);};}exports[_0x3f65('0x3')]=function(_0x3a18b3){for(var _0xa3cde1=0x0,_0x5def9f=events[_0x3f65('0x4')];_0xa3cde1<_0x5def9f;_0xa3cde1++){var _0x16aca3=events[_0xa3cde1];var _0x56e937=createListener(_0x3f65('0x5')+_0x16aca3,_0x3a18b3);DashboardEvents['on'](_0x16aca3,_0x56e937);}};
\ No newline at end of file
index f2da2ec..2729c34 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0x7bf8=['fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./dashboard.controller','get','/:id','show','/:id/items','isAuthenticated','getItems','create','post','/:id/clone','clone','addItem','put','update','delete','exports','multer','util','path','express','Router'];(function(_0xde7863,_0x305934){var _0x4fa01a=function(_0x1061ff){while(--_0x1061ff){_0xde7863['push'](_0xde7863['shift']());}};_0x4fa01a(++_0x305934);}(_0x7bf8,0x159));var _0x87bf=function(_0x5ebf89,_0x547b64){_0x5ebf89=_0x5ebf89-0x0;var _0x46450d=_0x7bf8[_0x5ebf89];return _0x46450d;};'use strict';var multer=require(_0x87bf('0x0'));var util=require(_0x87bf('0x1'));var path=require(_0x87bf('0x2'));var timeout=require('connect-timeout');var express=require(_0x87bf('0x3'));var router=express[_0x87bf('0x4')]();var fs_extra=require(_0x87bf('0x5'));var auth=require(_0x87bf('0x6'));var interaction=require(_0x87bf('0x7'));var config=require(_0x87bf('0x8'));var controller=require(_0x87bf('0x9'));router[_0x87bf('0xa')]('/',auth['isAuthenticated'](),controller['index']);router['get'](_0x87bf('0xb'),auth['isAuthenticated'](),controller[_0x87bf('0xc')]);router[_0x87bf('0xa')](_0x87bf('0xd'),auth[_0x87bf('0xe')](),controller[_0x87bf('0xf')]);router['post']('/',auth[_0x87bf('0xe')](),controller[_0x87bf('0x10')]);router[_0x87bf('0x11')](_0x87bf('0x12'),auth['isAuthenticated'](),controller[_0x87bf('0x13')]);router[_0x87bf('0x11')](_0x87bf('0xd'),auth[_0x87bf('0xe')](),controller[_0x87bf('0x14')]);router[_0x87bf('0x15')](_0x87bf('0xb'),auth['isAuthenticated'](),controller[_0x87bf('0x16')]);router[_0x87bf('0x17')](_0x87bf('0xb'),auth[_0x87bf('0xe')](),controller['destroy']);module[_0x87bf('0x18')]=router;
\ No newline at end of file
index ef464dc..e3f2dbb 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0x2a07=['setDataValue','stringify','INTEGER','#2196f3','sequelize','squel','lodash','exports','STRING','TEXT','long','parse','getDataValue','attrs'];(function(_0x56aa6c,_0x360d1c){var _0x580b72=function(_0x708e73){while(--_0x708e73){_0x56aa6c['push'](_0x56aa6c['shift']());}};_0x580b72(++_0x360d1c);}(_0x2a07,0x74));var _0x72a0=function(_0x56fb7d,_0x539ea1){_0x56fb7d=_0x56fb7d-0x0;var _0x3be1c3=_0x2a07[_0x56fb7d];return _0x3be1c3;};'use strict';var Sequelize=require(_0x72a0('0x0'));var squel=require(_0x72a0('0x1'));var _=require(_0x72a0('0x2'));module[_0x72a0('0x3')]={'title':{'type':Sequelize[_0x72a0('0x4')],'allowNull':![]},'type':{'type':Sequelize['STRING'](0x14),'allowNull':![],'validate':{'len':[0x1,0x14]}},'attrs':{'type':Sequelize[_0x72a0('0x5')](_0x72a0('0x6')),'get':function(){try{return JSON[_0x72a0('0x7')](this[_0x72a0('0x8')](_0x72a0('0x9')));}catch(_0xce74c){return[];}},'set':function(_0x3ccf6d){try{this[_0x72a0('0xa')](_0x72a0('0x9'),JSON[_0x72a0('0xb')](_0x3ccf6d));}catch(_0x21c819){this[_0x72a0('0xa')](_0x72a0('0x9'),JSON[_0x72a0('0xb')]([]));}}},'sizeX':{'type':Sequelize[_0x72a0('0xc')],'allowNull':![],'defaultValue':0x1},'sizeY':{'type':Sequelize[_0x72a0('0xc')],'allowNull':![],'defaultValue':0x1},'row':{'type':Sequelize['INTEGER']},'col':{'type':Sequelize[_0x72a0('0xc')]},'background':{'type':Sequelize[_0x72a0('0x4')],'allowNull':![],'defaultValue':'#ffffff','validate':{'notEmpty':!![]}},'foreground':{'type':Sequelize[_0x72a0('0x4')],'allowNull':![],'defaultValue':_0x72a0('0xd'),'validate':{'notEmpty':!![]}},'link':{'type':Sequelize[_0x72a0('0x4')]},'titleFontSize':{'type':Sequelize[_0x72a0('0xc')],'defaultValue':0xc}};
\ No newline at end of file
index c43c282..c67712d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0xafc4=['attrSerie3','web-report','attrReport','reportType','attrRefresh','widgetAttributes:\x20%s','stringify','create','body','eml-format','zip-dir','request-promise','moment','bluebird','mustache','to-csv','ejs','fs-extra','lodash','squel','crypto','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../config/license/hardware','api','../../config/utils','../../config/license/util','../../mysqldb','redis','defaults','localhost','socket.io-emitter','register','end','status','json','offset','undefined','limit','count','set','Content-Range','save','update','then','destroy','error','name','params','model','DashboardItem','rawAttributes','query','keys','filters','intersection','attributes','fields','length','includeAll','include','merge','options','find','catch','type','iframe','attrUrl','attrs','value','https://','custom','attrPath','clock','attrHourFormat','0.00','attrFontSize','counter','attrMetric','total','attrVoiceQueues','attrChannel','voice','attrEmailAccounts','attrFaxAccounts','attrSmsAccounts','attrOpenchannelAccounts','attrWhatsappAccounts','attrChatWebsites','multibar-chart','pie-chart','attrSerie1','attrSerie2'];(function(_0x479f7d,_0xb87745){var _0x3abc7d=function(_0x12a952){while(--_0x12a952){_0x479f7d['push'](_0x479f7d['shift']());}};_0x3abc7d(++_0xb87745);}(_0xafc4,0x69));var _0x4afc=function(_0x69c6cb,_0x5a20d6){_0x69c6cb=_0x69c6cb-0x0;var _0x2a3184=_0xafc4[_0x69c6cb];return _0x2a3184;};'use strict';var emlformat=require(_0x4afc('0x0'));var rimraf=require('rimraf');var zipdir=require(_0x4afc('0x1'));var jsonpatch=require('fast-json-patch');var rp=require(_0x4afc('0x2'));var moment=require(_0x4afc('0x3'));var BPromise=require(_0x4afc('0x4'));var Mustache=require(_0x4afc('0x5'));var util=require('util');var path=require('path');var sox=require('sox');var csv=require(_0x4afc('0x6'));var ejs=require(_0x4afc('0x7'));var fs=require('fs');var fs_extra=require(_0x4afc('0x8'));var _=require(_0x4afc('0x9'));var squel=require(_0x4afc('0xa'));var crypto=require(_0x4afc('0xb'));var jsforce=require('jsforce');var deskjs=require(_0x4afc('0xc'));var toCsv=require(_0x4afc('0x6'));var querystring=require(_0x4afc('0xd'));var Papa=require(_0x4afc('0xe'));var Redis=require(_0x4afc('0xf'));var authService=require(_0x4afc('0x10'));var qs=require('../../components/parsers/qs');var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x4afc('0x11'));var logger=require('../../config/logger')(_0x4afc('0x12'));var utils=require(_0x4afc('0x13'));var config=require('../../config/environment');var licenseUtil=require(_0x4afc('0x14'));var db=require(_0x4afc('0x15'))['db'];config[_0x4afc('0x16')]=_[_0x4afc('0x17')](config[_0x4afc('0x16')],{'host':_0x4afc('0x18'),'port':0x18eb});var socket=require(_0x4afc('0x19'))(new Redis(config[_0x4afc('0x16')]));require('./dashboardItem.socket')[_0x4afc('0x1a')](socket);function respondWithStatusCode(_0x429fd8,_0x2c636b){_0x2c636b=_0x2c636b||0xcc;return function(_0x1e2c31){if(_0x1e2c31){return _0x429fd8['sendStatus'](_0x2c636b);}return _0x429fd8['status'](_0x2c636b)[_0x4afc('0x1b')]();};}function respondWithResult(_0x4f3127,_0x23ae30){_0x23ae30=_0x23ae30||0xc8;return function(_0x24ed6d){if(_0x24ed6d){return _0x4f3127[_0x4afc('0x1c')](_0x23ae30)[_0x4afc('0x1d')](_0x24ed6d);}};}function respondWithFilteredResult(_0x3a306f,_0x3ebdc8){return function(_0x22f809){if(_0x22f809){var _0x3ad418=typeof _0x3ebdc8[_0x4afc('0x1e')]===_0x4afc('0x1f')&&typeof _0x3ebdc8[_0x4afc('0x20')]==='undefined';var _0x1a8f49=_0x22f809[_0x4afc('0x21')];var _0x32865e=_0x3ad418?0x0:_0x3ebdc8[_0x4afc('0x1e')];var _0x557a7e=_0x3ad418?_0x22f809[_0x4afc('0x21')]:_0x3ebdc8[_0x4afc('0x1e')]+_0x3ebdc8[_0x4afc('0x20')];var _0x280587;if(_0x557a7e>=_0x1a8f49){_0x557a7e=_0x1a8f49;_0x280587=0xc8;}else{_0x280587=0xce;}_0x3a306f[_0x4afc('0x1c')](_0x280587);return _0x3a306f[_0x4afc('0x22')](_0x4afc('0x23'),_0x32865e+'-'+_0x557a7e+'/'+_0x1a8f49)['json'](_0x22f809);}return null;};}function patchUpdates(_0x5403e4){return function(_0x3ecf2d){try{jsonpatch['apply'](_0x3ecf2d,_0x5403e4,!![]);}catch(_0x37debf){return BPromise['reject'](_0x37debf);}return _0x3ecf2d[_0x4afc('0x24')]();};}function saveUpdates(_0x2a0314,_0x1e454e){return function(_0x2876f2){if(_0x2876f2){return _0x2876f2[_0x4afc('0x25')](_0x2a0314)[_0x4afc('0x26')](function(_0x40a0db){return _0x40a0db;});}return null;};}function removeEntity(_0x383a71,_0x2bb837){return function(_0x100220){if(_0x100220){return _0x100220[_0x4afc('0x27')]()[_0x4afc('0x26')](function(){_0x383a71[_0x4afc('0x1c')](0xcc)['end']();});}};}function handleEntityNotFound(_0xc3952e,_0x244f6c){return function(_0x2d6112){if(!_0x2d6112){_0xc3952e['sendStatus'](0x194);}return _0x2d6112;};}function handleError(_0x52212d,_0x54433f){_0x54433f=_0x54433f||0x1f4;return function(_0x426e9d){logger[_0x4afc('0x28')](_0x426e9d['stack']);if(_0x426e9d[_0x4afc('0x29')]){delete _0x426e9d[_0x4afc('0x29')];}_0x52212d['status'](_0x54433f)['send'](_0x426e9d);};}exports['show']=function(_0x3bae1a,_0x34434a){var _0x17a43d={'raw':![],'where':{'id':_0x3bae1a[_0x4afc('0x2a')]['id']}},_0x46357b={};_0x46357b[_0x4afc('0x2b')]=_['keys'](db[_0x4afc('0x2c')][_0x4afc('0x2d')]);_0x46357b[_0x4afc('0x2e')]=_[_0x4afc('0x2f')](_0x3bae1a[_0x4afc('0x2e')]);_0x46357b[_0x4afc('0x30')]=_[_0x4afc('0x31')](_0x46357b[_0x4afc('0x2b')],_0x46357b['query']);_0x17a43d[_0x4afc('0x32')]=_['intersection'](_0x46357b['model'],qs[_0x4afc('0x33')](_0x3bae1a[_0x4afc('0x2e')][_0x4afc('0x33')]));_0x17a43d[_0x4afc('0x32')]=_0x17a43d[_0x4afc('0x32')][_0x4afc('0x34')]?_0x17a43d['attributes']:_0x46357b[_0x4afc('0x2b')];if(_0x3bae1a[_0x4afc('0x2e')][_0x4afc('0x35')]){_0x17a43d[_0x4afc('0x36')]=[{'all':!![]}];}_0x17a43d=_[_0x4afc('0x37')]({},_0x17a43d,_0x3bae1a[_0x4afc('0x38')]);return db['DashboardItem'][_0x4afc('0x39')](_0x17a43d)[_0x4afc('0x26')](handleEntityNotFound(_0x34434a,null))[_0x4afc('0x26')](respondWithResult(_0x34434a,null))[_0x4afc('0x3a')](handleError(_0x34434a,null));};exports['destroy']=function(_0x4be1e6,_0x43c341){return db[_0x4afc('0x2c')][_0x4afc('0x39')]({'where':{'id':_0x4be1e6['params']['id']}})['then'](handleEntityNotFound(_0x43c341,null))[_0x4afc('0x26')](removeEntity(_0x43c341,null))['catch'](handleError(_0x43c341,null));};function widgetAttributes(_0x5947bb){try{switch(_0x5947bb[_0x4afc('0x3b')]){case _0x4afc('0x3c'):return[{'name':_0x4afc('0x3d'),'value':_0x5947bb[_0x4afc('0x3d')]||(_0x5947bb[_0x4afc('0x3e')]&&_0x5947bb[_0x4afc('0x3e')][0x0]?_0x5947bb[_0x4afc('0x3e')][0x0][_0x4afc('0x3f')]:undefined)||_0x4afc('0x40')}];case _0x4afc('0x41'):return[{'name':_0x4afc('0x42'),'value':_0x5947bb[_0x4afc('0x42')]||(_0x5947bb[_0x4afc('0x3e')]&&_0x5947bb[_0x4afc('0x3e')][0x0]?_0x5947bb[_0x4afc('0x3e')][0x0]['value']:undefined)||''}];case _0x4afc('0x43'):return[{'name':_0x4afc('0x44'),'value':_0x5947bb[_0x4afc('0x44')]||(_0x5947bb[_0x4afc('0x3e')]&&_0x5947bb[_0x4afc('0x3e')][0x0]?_0x5947bb[_0x4afc('0x3e')][0x0][_0x4afc('0x3f')]:undefined)||'HH:mm:ss'},{'name':'attrTimezone','value':_0x5947bb['attrTimezone']||(_0x5947bb[_0x4afc('0x3e')]&&_0x5947bb[_0x4afc('0x3e')][0x1]?_0x5947bb['attrs'][0x1][_0x4afc('0x3f')]:undefined)||_0x4afc('0x45')},{'name':_0x4afc('0x46'),'value':_0x5947bb[_0x4afc('0x46')]||(_0x5947bb['attrs']&&_0x5947bb[_0x4afc('0x3e')][0x2]?_0x5947bb[_0x4afc('0x3e')][0x2][_0x4afc('0x3f')]:undefined)||0xc}];case _0x4afc('0x47'):return[{'name':_0x4afc('0x48'),'value':_0x5947bb[_0x4afc('0x48')]||(_0x5947bb['attrs']&&_0x5947bb[_0x4afc('0x3e')][0x0]?_0x5947bb['attrs'][0x0][_0x4afc('0x3f')]:undefined)||_0x4afc('0x49')},{'name':_0x4afc('0x4a'),'value':_0x5947bb['attrVoiceQueues']||(_0x5947bb['attrs']&&_0x5947bb[_0x4afc('0x3e')][0x1]?_0x5947bb[_0x4afc('0x3e')][0x1][_0x4afc('0x3f')]:undefined)||[]},{'name':_0x4afc('0x46'),'value':_0x5947bb[_0x4afc('0x46')]||(_0x5947bb[_0x4afc('0x3e')]&&_0x5947bb[_0x4afc('0x3e')][0x2]?_0x5947bb[_0x4afc('0x3e')][0x2]['value']:undefined)||0x14},{'name':_0x4afc('0x4b'),'value':_0x5947bb[_0x4afc('0x4b')]||(_0x5947bb['attrs']&&_0x5947bb[_0x4afc('0x3e')][0x3]?_0x5947bb['attrs'][0x3][_0x4afc('0x3f')]:undefined)||_0x4afc('0x4c')},{'name':_0x4afc('0x4d'),'value':_0x5947bb['attrEmailAccounts']||(_0x5947bb[_0x4afc('0x3e')]&&_0x5947bb[_0x4afc('0x3e')][0x4]?_0x5947bb[_0x4afc('0x3e')][0x4][_0x4afc('0x3f')]:undefined)||''},{'name':_0x4afc('0x4e'),'value':_0x5947bb[_0x4afc('0x4e')]||(_0x5947bb['attrs']&&_0x5947bb['attrs'][0x5]?_0x5947bb['attrs'][0x5][_0x4afc('0x3f')]:undefined)||''},{'name':_0x4afc('0x4f'),'value':_0x5947bb[_0x4afc('0x4f')]||(_0x5947bb[_0x4afc('0x3e')]&&_0x5947bb[_0x4afc('0x3e')][0x6]?_0x5947bb[_0x4afc('0x3e')][0x6][_0x4afc('0x3f')]:undefined)||''},{'name':_0x4afc('0x50'),'value':_0x5947bb[_0x4afc('0x50')]||(_0x5947bb[_0x4afc('0x3e')]&&_0x5947bb['attrs'][0x7]?_0x5947bb[_0x4afc('0x3e')][0x7]['value']:undefined)||''},{'name':'attrWhatsappAccounts','value':_0x5947bb[_0x4afc('0x51')]||(_0x5947bb['attrs']&&_0x5947bb[_0x4afc('0x3e')][0x8]?_0x5947bb[_0x4afc('0x3e')][0x8][_0x4afc('0x3f')]:undefined)||''},{'name':_0x4afc('0x52'),'value':_0x5947bb['attrChatWebsites']||(_0x5947bb[_0x4afc('0x3e')]&&_0x5947bb['attrs'][0x9]?_0x5947bb[_0x4afc('0x3e')][0x9][_0x4afc('0x3f')]:undefined)||''}];case _0x4afc('0x53'):case _0x4afc('0x54'):return[{'name':_0x4afc('0x55'),'value':_0x5947bb[_0x4afc('0x55')]||(_0x5947bb[_0x4afc('0x3e')]&&_0x5947bb[_0x4afc('0x3e')][0x0]?_0x5947bb[_0x4afc('0x3e')][0x0][_0x4afc('0x3f')]:undefined)||_0x4afc('0x49')},{'name':_0x4afc('0x56'),'value':_0x5947bb['attrSerie2']||(_0x5947bb[_0x4afc('0x3e')]&&_0x5947bb[_0x4afc('0x3e')][0x1]?_0x5947bb[_0x4afc('0x3e')][0x1][_0x4afc('0x3f')]:undefined)||null},{'name':_0x4afc('0x57'),'value':_0x5947bb[_0x4afc('0x57')]||(_0x5947bb[_0x4afc('0x3e')]&&_0x5947bb[_0x4afc('0x3e')][0x2]?_0x5947bb[_0x4afc('0x3e')][0x2][_0x4afc('0x3f')]:undefined)||null},{'name':_0x4afc('0x4a'),'value':_0x5947bb[_0x4afc('0x4a')]||(_0x5947bb[_0x4afc('0x3e')]&&_0x5947bb['attrs'][0x3]?_0x5947bb[_0x4afc('0x3e')][0x3]['value']:undefined)||[]},{'name':_0x4afc('0x4b'),'value':_0x5947bb[_0x4afc('0x4b')]||(_0x5947bb[_0x4afc('0x3e')]&&_0x5947bb[_0x4afc('0x3e')][0x4]?_0x5947bb['attrs'][0x4]['value']:undefined)||_0x4afc('0x4c')},{'name':_0x4afc('0x4d'),'value':_0x5947bb['attrEmailAccounts']||(_0x5947bb[_0x4afc('0x3e')]&&_0x5947bb[_0x4afc('0x3e')][0x5]?_0x5947bb[_0x4afc('0x3e')][0x5][_0x4afc('0x3f')]:undefined)||''},{'name':_0x4afc('0x4e'),'value':_0x5947bb[_0x4afc('0x4e')]||(_0x5947bb[_0x4afc('0x3e')]&&_0x5947bb[_0x4afc('0x3e')][0x6]?_0x5947bb[_0x4afc('0x3e')][0x6][_0x4afc('0x3f')]:undefined)||''},{'name':_0x4afc('0x4f'),'value':_0x5947bb[_0x4afc('0x4f')]||(_0x5947bb[_0x4afc('0x3e')]&&_0x5947bb[_0x4afc('0x3e')][0x7]?_0x5947bb['attrs'][0x7][_0x4afc('0x3f')]:undefined)||''},{'name':_0x4afc('0x50'),'value':_0x5947bb[_0x4afc('0x50')]||(_0x5947bb[_0x4afc('0x3e')]&&_0x5947bb[_0x4afc('0x3e')][0x8]?_0x5947bb[_0x4afc('0x3e')][0x8][_0x4afc('0x3f')]:undefined)||''},{'name':'attrWhatsappAccounts','value':_0x5947bb[_0x4afc('0x51')]||(_0x5947bb[_0x4afc('0x3e')]&&_0x5947bb['attrs'][0x9]?_0x5947bb['attrs'][0x9][_0x4afc('0x3f')]:undefined)||''},{'name':_0x4afc('0x52'),'value':_0x5947bb[_0x4afc('0x52')]||(_0x5947bb[_0x4afc('0x3e')]&&_0x5947bb[_0x4afc('0x3e')][0xa]?_0x5947bb[_0x4afc('0x3e')][0xa][_0x4afc('0x3f')]:undefined)||''}];case _0x4afc('0x58'):return[{'name':_0x4afc('0x59'),'type':_0x5947bb[_0x4afc('0x5a')]||(_0x5947bb['attrs']&&_0x5947bb['attrs'][0x0]?_0x5947bb[_0x4afc('0x3e')][0x0][_0x4afc('0x3b')]:undefined)||null,'value':_0x5947bb['attrReport']||(_0x5947bb[_0x4afc('0x3e')]&&_0x5947bb[_0x4afc('0x3e')][0x0]?_0x5947bb['attrs'][0x0]['value']:undefined)||null},{'name':_0x4afc('0x5b'),'value':_0x5947bb[_0x4afc('0x5b')]||(_0x5947bb[_0x4afc('0x3e')]&&_0x5947bb['attrs'][0x1]?_0x5947bb[_0x4afc('0x3e')][0x1]['value']:undefined)||0x0}];default:return[];}}catch(_0x5a2be2){logger[_0x4afc('0x28')](_0x4afc('0x5c'),JSON[_0x4afc('0x5d')](_0x5a2be2));return[];}}exports[_0x4afc('0x5e')]=function(_0x23ce8b,_0x2f9a4d){if(_0x23ce8b[_0x4afc('0x5f')]){_0x23ce8b[_0x4afc('0x5f')][_0x4afc('0x3e')]=widgetAttributes(_0x23ce8b['body']);}return db[_0x4afc('0x2c')][_0x4afc('0x5e')](_0x23ce8b[_0x4afc('0x5f')],{})['then'](respondWithResult(_0x2f9a4d,0xc9))['catch'](handleError(_0x2f9a4d,null));};exports['update']=function(_0x3be61e,_0x135931){if(_0x3be61e[_0x4afc('0x5f')]['id']){delete _0x3be61e['body']['id'];}_0x3be61e[_0x4afc('0x5f')]['attrs']=widgetAttributes(_0x3be61e['body']);return db['DashboardItem'][_0x4afc('0x39')]({'where':{'id':_0x3be61e[_0x4afc('0x2a')]['id']}})[_0x4afc('0x26')](handleEntityNotFound(_0x135931,null))['then'](saveUpdates(_0x3be61e[_0x4afc('0x5f')],null))[_0x4afc('0x26')](respondWithResult(_0x135931,null))[_0x4afc('0x3a')](handleError(_0x135931,null));};
\ No newline at end of file
index 3f928a8..a7b5f3e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0x5f27=['save','update','emit','hasOwnProperty','hook','exports','events'];(function(_0x43d16c,_0x2b5447){var _0x208cce=function(_0x371720){while(--_0x371720){_0x43d16c['push'](_0x43d16c['shift']());}};_0x208cce(++_0x2b5447);}(_0x5f27,0xd8));var _0x75f2=function(_0x243aee,_0x31b872){_0x243aee=_0x243aee-0x0;var _0x37131a=_0x5f27[_0x243aee];return _0x37131a;};'use strict';var EventEmitter=require(_0x75f2('0x0'));var DashboardItem=require('../../mysqldb')['db']['DashboardItem'];var DashboardItemEvents=new EventEmitter();DashboardItemEvents['setMaxListeners'](0x0);var events={'afterCreate':_0x75f2('0x1'),'afterUpdate':_0x75f2('0x2'),'afterDestroy':'remove'};function emitEvent(_0x169373){return function(_0x34e8fa,_0x43ef57,_0x404b4e){DashboardItemEvents[_0x75f2('0x3')](_0x169373+':'+_0x34e8fa['id'],_0x34e8fa);DashboardItemEvents[_0x75f2('0x3')](_0x169373,_0x34e8fa);_0x404b4e(null);};}for(var e in events){if(events[_0x75f2('0x4')](e)){var event=events[e];DashboardItem[_0x75f2('0x5')](e,emitEvent(event));}}module[_0x75f2('0x6')]=DashboardItemEvents;
\ No newline at end of file
index 83907b1..1e5e06a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0x21a9=['lodash','util','api','moment','bluebird','request-promise','rimraf','../../config/environment','./dashboardItem.attributes','DashboardItem','dashboard_items'];(function(_0x13df29,_0x507104){var _0x10a4ee=function(_0xe85642){while(--_0xe85642){_0x13df29['push'](_0x13df29['shift']());}};_0x10a4ee(++_0x507104);}(_0x21a9,0x16b));var _0x921a=function(_0x413feb,_0x10477f){_0x413feb=_0x413feb-0x0;var _0x40ee88=_0x21a9[_0x413feb];return _0x40ee88;};'use strict';var _=require(_0x921a('0x0'));var util=require(_0x921a('0x1'));var logger=require('../../config/logger')(_0x921a('0x2'));var moment=require(_0x921a('0x3'));var BPromise=require(_0x921a('0x4'));var rp=require(_0x921a('0x5'));var fs=require('fs');var path=require('path');var rimraf=require(_0x921a('0x6'));var config=require(_0x921a('0x7'));var attributes=require(_0x921a('0x8'));module['exports']=function(_0x575fc9,_0x362f07){return _0x575fc9['define'](_0x921a('0x9'),attributes,{'tableName':_0x921a('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 6a0ed9a..c4531bc 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0x434f=['../../config/logger','rpc','jayson/promise','http','redis','defaults','localhost','socket.io-emitter','./dashboardItem.socket','register','request','then','DashboardItem,\x20%s,\x20%s','request\x20sent','DashboardItem,\x20%s,\x20%s,\x20%s','stringify','error','code','message','info','moment','randomstring','ioredis','../../mysqldb','../../config/utils'];(function(_0x3652e8,_0x50fb53){var _0x4aaf14=function(_0xc7e279){while(--_0xc7e279){_0x3652e8['push'](_0x3652e8['shift']());}};_0x4aaf14(++_0x50fb53);}(_0x434f,0x140));var _0xf434=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x434f[_0x3dd15e];return _0x231fd0;};'use strict';var _=require('lodash');var util=require('util');var moment=require(_0xf434('0x0'));var BPromise=require('bluebird');var rs=require(_0xf434('0x1'));var fs=require('fs');var Redis=require(_0xf434('0x2'));var db=require(_0xf434('0x3'))['db'];var utils=require(_0xf434('0x4'));var logger=require(_0xf434('0x5'))(_0xf434('0x6'));var config=require('../../config/environment');var jayson=require(_0xf434('0x7'));var client=jayson['client'][_0xf434('0x8')]({'port':0x232a});config[_0xf434('0x9')]=_[_0xf434('0xa')](config['redis'],{'host':_0xf434('0xb'),'port':0x18eb});var socket=require(_0xf434('0xc'))(new Redis(config['redis']));require(_0xf434('0xd'))[_0xf434('0xe')](socket);function respondWithRpcPromise(_0x10ecd7,_0x275f73,_0x43636e){return new BPromise(function(_0x32d54b,_0x130b6d){return client[_0xf434('0xf')](_0x10ecd7,_0x43636e)[_0xf434('0x10')](function(_0x5edde7){logger['info'](_0xf434('0x11'),_0x275f73,_0xf434('0x12'));logger['debug'](_0xf434('0x13'),_0x275f73,_0xf434('0x12'),JSON[_0xf434('0x14')](_0x5edde7));if(_0x5edde7[_0xf434('0x15')]){if(_0x5edde7[_0xf434('0x15')][_0xf434('0x16')]===0x1f4){logger['error'](_0xf434('0x11'),_0x275f73,_0x5edde7[_0xf434('0x15')][_0xf434('0x17')]);return _0x130b6d(_0x5edde7[_0xf434('0x15')][_0xf434('0x17')]);}logger['error'](_0xf434('0x11'),_0x275f73,_0x5edde7[_0xf434('0x15')][_0xf434('0x17')]);return _0x32d54b(_0x5edde7[_0xf434('0x15')]['message']);}else{logger[_0xf434('0x18')](_0xf434('0x11'),_0x275f73,_0xf434('0x12'));_0x32d54b(_0x5edde7['result'][_0xf434('0x17')]);}})['catch'](function(_0x261d0b){logger[_0xf434('0x15')](_0xf434('0x11'),_0x275f73,_0x261d0b);_0x130b6d(_0x261d0b);});});}
\ No newline at end of file
index 68196c7..e9669cd 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0xe1e6=['length','./dashboardItem.events','save','remove','update','register'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0xe1e6,0x1e1));var _0x6e1e=function(_0x30fc73,_0x5e37a9){_0x30fc73=_0x30fc73-0x0;var _0x603d81=_0xe1e6[_0x30fc73];return _0x603d81;};'use strict';var DashboardItemEvents=require(_0x6e1e('0x0'));var events=[_0x6e1e('0x1'),_0x6e1e('0x2'),_0x6e1e('0x3')];function createListener(_0x30d970,_0x59c1a5){return function(_0x587949){_0x59c1a5['emit'](_0x30d970,_0x587949);};}function removeListener(_0x3f5b91,_0x33e409){return function(){DashboardItemEvents['removeListener'](_0x3f5b91,_0x33e409);};}exports[_0x6e1e('0x4')]=function(_0x59fb44){for(var _0x14fbf5=0x0,_0x51c1f2=events[_0x6e1e('0x5')];_0x14fbf5<_0x51c1f2;_0x14fbf5++){var _0x21b4ad=events[_0x14fbf5];var _0x407e43=createListener('dashboardItem:'+_0x21b4ad,_0x59fb44);DashboardItemEvents['on'](_0x21b4ad,_0x407e43);}};
\ No newline at end of file
index ed2ea04..9e4bed0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0x985d=['get','isAuthenticated','show','post','create','put','/:id','update','delete','exports','multer','util','path','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment'];(function(_0x49dae4,_0x3f04fa){var _0x5b7bdf=function(_0x47134a){while(--_0x47134a){_0x49dae4['push'](_0x49dae4['shift']());}};_0x5b7bdf(++_0x3f04fa);}(_0x985d,0xd0));var _0xd985=function(_0x594d4f,_0x32a6ca){_0x594d4f=_0x594d4f-0x0;var _0x361d1d=_0x985d[_0x594d4f];return _0x361d1d;};'use strict';var multer=require(_0xd985('0x0'));var util=require(_0xd985('0x1'));var path=require(_0xd985('0x2'));var timeout=require('connect-timeout');var express=require('express');var router=express[_0xd985('0x3')]();var fs_extra=require(_0xd985('0x4'));var auth=require(_0xd985('0x5'));var interaction=require(_0xd985('0x6'));var config=require(_0xd985('0x7'));var controller=require('./dashboardItem.controller');router[_0xd985('0x8')]('/:id',auth[_0xd985('0x9')](),controller[_0xd985('0xa')]);router[_0xd985('0xb')]('/',auth['isAuthenticated'](),controller[_0xd985('0xc')]);router[_0xd985('0xd')](_0xd985('0xe'),auth[_0xd985('0x9')](),controller[_0xd985('0xf')]);router[_0xd985('0x10')](_0xd985('0xe'),auth[_0xd985('0x9')](),controller['destroy']);module[_0xd985('0x11')]=router;
\ No newline at end of file
index 5cc6146..701676f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0x7cf9=['sequelize','exports','STRING'];(function(_0x202d24,_0x5e8641){var _0x2b3a8e=function(_0x4c7c4a){while(--_0x4c7c4a){_0x202d24['push'](_0x202d24['shift']());}};_0x2b3a8e(++_0x5e8641);}(_0x7cf9,0x1f2));var _0x97cf=function(_0x1f930c,_0x53cd07){_0x1f930c=_0x1f930c-0x0;var _0x50d00=_0x7cf9[_0x1f930c];return _0x50d00;};'use strict';var Sequelize=require(_0x97cf('0x0'));module[_0x97cf('0x1')]={'name':{'type':Sequelize[_0x97cf('0x2')],'allowNull':![]},'level':{'type':Sequelize['ENUM']('first','second','third'),'allowNull':![],'defaultValue':'first'},'description':{'type':Sequelize[_0x97cf('0x2')]}};
\ No newline at end of file
index 53053a8..1e3a78d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0xf068=['status','end','offset','undefined','count','limit','set','Content-Range','json','apply','reject','update','then','destroy','get','Dispositions','UserProfileResource','error','stack','name','send','index','map','Disposition','rawAttributes','fieldName','type','model','keys','query','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','sort','where','pick','filter','VIRTUAL','merge','options','includeAll','include','findAll','rows','catch','show','params','find','create','body','userProfileId','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','zip-dir','fast-json-patch','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/license/util','../../mysqldb','sendStatus'];(function(_0x4a3898,_0x4c9853){var _0x25ceb0=function(_0x528b6d){while(--_0x528b6d){_0x4a3898['push'](_0x4a3898['shift']());}};_0x25ceb0(++_0x4c9853);}(_0xf068,0x8b));var _0x8f06=function(_0xb3b43c,_0x581ff5){_0xb3b43c=_0xb3b43c-0x0;var _0x433377=_0xf068[_0xb3b43c];return _0x433377;};'use strict';var emlformat=require('eml-format');var rimraf=require('rimraf');var zipdir=require(_0x8f06('0x0'));var jsonpatch=require(_0x8f06('0x1'));var rp=require('request-promise');var moment=require('moment');var BPromise=require(_0x8f06('0x2'));var Mustache=require(_0x8f06('0x3'));var util=require(_0x8f06('0x4'));var path=require(_0x8f06('0x5'));var sox=require(_0x8f06('0x6'));var csv=require(_0x8f06('0x7'));var ejs=require(_0x8f06('0x8'));var fs=require('fs');var fs_extra=require(_0x8f06('0x9'));var _=require(_0x8f06('0xa'));var squel=require(_0x8f06('0xb'));var crypto=require(_0x8f06('0xc'));var jsforce=require(_0x8f06('0xd'));var deskjs=require('desk.js');var toCsv=require(_0x8f06('0x7'));var querystring=require(_0x8f06('0xe'));var Papa=require(_0x8f06('0xf'));var Redis=require(_0x8f06('0x10'));var authService=require(_0x8f06('0x11'));var qs=require(_0x8f06('0x12'));var as=require(_0x8f06('0x13'));var hardwareService=require('../../config/license/hardware');var logger=require('../../config/logger')(_0x8f06('0x14'));var utils=require(_0x8f06('0x15'));var config=require('../../config/environment');var licenseUtil=require(_0x8f06('0x16'));var db=require(_0x8f06('0x17'))['db'];function respondWithStatusCode(_0x49cb3f,_0x5e988e){_0x5e988e=_0x5e988e||0xcc;return function(_0xb49128){if(_0xb49128){return _0x49cb3f[_0x8f06('0x18')](_0x5e988e);}return _0x49cb3f[_0x8f06('0x19')](_0x5e988e)[_0x8f06('0x1a')]();};}function respondWithResult(_0x1b0c0d,_0x278323){_0x278323=_0x278323||0xc8;return function(_0x17c709){if(_0x17c709){return _0x1b0c0d[_0x8f06('0x19')](_0x278323)['json'](_0x17c709);}};}function respondWithFilteredResult(_0x289bbf,_0xc1d3f9){return function(_0x35d4eb){if(_0x35d4eb){var _0x456e12=typeof _0xc1d3f9[_0x8f06('0x1b')]===_0x8f06('0x1c')&&typeof _0xc1d3f9['limit']===_0x8f06('0x1c');var _0x52dcad=_0x35d4eb[_0x8f06('0x1d')];var _0x4459fb=_0x456e12?0x0:_0xc1d3f9[_0x8f06('0x1b')];var _0x56f299=_0x456e12?_0x35d4eb[_0x8f06('0x1d')]:_0xc1d3f9['offset']+_0xc1d3f9[_0x8f06('0x1e')];var _0x16fb17;if(_0x56f299>=_0x52dcad){_0x56f299=_0x52dcad;_0x16fb17=0xc8;}else{_0x16fb17=0xce;}_0x289bbf[_0x8f06('0x19')](_0x16fb17);return _0x289bbf[_0x8f06('0x1f')](_0x8f06('0x20'),_0x4459fb+'-'+_0x56f299+'/'+_0x52dcad)[_0x8f06('0x21')](_0x35d4eb);}return null;};}function patchUpdates(_0x2d4e86){return function(_0xc9c0ec){try{jsonpatch[_0x8f06('0x22')](_0xc9c0ec,_0x2d4e86,!![]);}catch(_0x3c64ae){return BPromise[_0x8f06('0x23')](_0x3c64ae);}return _0xc9c0ec['save']();};}function saveUpdates(_0x263a98,_0x387e38){return function(_0x2dcaf1){if(_0x2dcaf1){return _0x2dcaf1[_0x8f06('0x24')](_0x263a98)[_0x8f06('0x25')](function(_0x35fa2b){return _0x35fa2b;});}return null;};}function removeEntity(_0x121f7e,_0x418646){return function(_0x201065){if(_0x201065){return _0x201065[_0x8f06('0x26')]()[_0x8f06('0x25')](function(){var _0x392b6c=_0x201065[_0x8f06('0x27')]({'plain':!![]});var _0x49b324=_0x8f06('0x28');return db[_0x8f06('0x29')][_0x8f06('0x26')]({'where':{'type':_0x49b324,'resourceId':_0x392b6c['id']}})[_0x8f06('0x25')](function(){return _0x201065;});})[_0x8f06('0x25')](function(){_0x121f7e[_0x8f06('0x19')](0xcc)['end']();});}};}function handleEntityNotFound(_0x3b797e,_0x4533f4){return function(_0x50ff86){if(!_0x50ff86){_0x3b797e[_0x8f06('0x18')](0x194);}return _0x50ff86;};}function handleError(_0x1a741c,_0x3f152b){_0x3f152b=_0x3f152b||0x1f4;return function(_0x3bf20d){logger[_0x8f06('0x2a')](_0x3bf20d[_0x8f06('0x2b')]);if(_0x3bf20d[_0x8f06('0x2c')]){delete _0x3bf20d[_0x8f06('0x2c')];}_0x1a741c[_0x8f06('0x19')](_0x3f152b)[_0x8f06('0x2d')](_0x3bf20d);};}exports[_0x8f06('0x2e')]=function(_0x26e762,_0x4ed8ec){var _0x304a6c={},_0x536cf6={},_0x57e891={'count':0x0,'rows':[]};var _0xf65177=_[_0x8f06('0x2f')](db[_0x8f06('0x30')][_0x8f06('0x31')],function(_0x1dd134){return{'name':_0x1dd134[_0x8f06('0x32')],'type':_0x1dd134[_0x8f06('0x33')]['key']};});_0x536cf6[_0x8f06('0x34')]=_[_0x8f06('0x2f')](_0xf65177,'name');_0x536cf6['query']=_[_0x8f06('0x35')](_0x26e762[_0x8f06('0x36')]);_0x536cf6[_0x8f06('0x37')]=_[_0x8f06('0x38')](_0x536cf6[_0x8f06('0x34')],_0x536cf6[_0x8f06('0x36')]);_0x304a6c[_0x8f06('0x39')]=_[_0x8f06('0x38')](_0x536cf6[_0x8f06('0x34')],qs[_0x8f06('0x3a')](_0x26e762['query'][_0x8f06('0x3a')]));_0x304a6c['attributes']=_0x304a6c[_0x8f06('0x39')][_0x8f06('0x3b')]?_0x304a6c['attributes']:_0x536cf6[_0x8f06('0x34')];if(!_0x26e762[_0x8f06('0x36')][_0x8f06('0x3c')](_0x8f06('0x3d'))){_0x304a6c[_0x8f06('0x1e')]=qs[_0x8f06('0x1e')](_0x26e762[_0x8f06('0x36')][_0x8f06('0x1e')]);_0x304a6c[_0x8f06('0x1b')]=qs['offset'](_0x26e762['query']['offset']);}_0x304a6c['order']=qs[_0x8f06('0x3e')](_0x26e762[_0x8f06('0x36')][_0x8f06('0x3e')]);_0x304a6c[_0x8f06('0x3f')]=qs[_0x8f06('0x37')](_[_0x8f06('0x40')](_0x26e762[_0x8f06('0x36')],_0x536cf6[_0x8f06('0x37')]),_0xf65177);if(_0x26e762[_0x8f06('0x36')][_0x8f06('0x41')]){_0x304a6c[_0x8f06('0x3f')]=_['merge'](_0x304a6c[_0x8f06('0x3f')],{'$or':_[_0x8f06('0x2f')](_0xf65177,function(_0xc7fc9c){if(_0xc7fc9c[_0x8f06('0x33')]!==_0x8f06('0x42')){var _0x502ddb={};_0x502ddb[_0xc7fc9c[_0x8f06('0x2c')]]={'$like':'%'+_0x26e762[_0x8f06('0x36')][_0x8f06('0x41')]+'%'};return _0x502ddb;}})});}_0x304a6c=_[_0x8f06('0x43')]({},_0x304a6c,_0x26e762[_0x8f06('0x44')]);var _0x5dc2fa={'where':_0x304a6c[_0x8f06('0x3f')]};return db['Disposition'][_0x8f06('0x1d')](_0x5dc2fa)[_0x8f06('0x25')](function(_0x2b1de3){_0x57e891['count']=_0x2b1de3;if(_0x26e762[_0x8f06('0x36')][_0x8f06('0x45')]){_0x304a6c[_0x8f06('0x46')]=[{'all':!![]}];}return db[_0x8f06('0x30')][_0x8f06('0x47')](_0x304a6c);})[_0x8f06('0x25')](function(_0x24d1dc){_0x57e891[_0x8f06('0x48')]=_0x24d1dc;return _0x57e891;})[_0x8f06('0x25')](respondWithFilteredResult(_0x4ed8ec,_0x304a6c))[_0x8f06('0x49')](handleError(_0x4ed8ec,null));};exports[_0x8f06('0x4a')]=function(_0x1a2997,_0x384f42){var _0x5089a1={'raw':!![],'where':{'id':_0x1a2997[_0x8f06('0x4b')]['id']}},_0x5e0f10={};_0x5e0f10['model']=_[_0x8f06('0x35')](db['Disposition'][_0x8f06('0x31')]);_0x5e0f10['query']=_[_0x8f06('0x35')](_0x1a2997['query']);_0x5e0f10[_0x8f06('0x37')]=_['intersection'](_0x5e0f10[_0x8f06('0x34')],_0x5e0f10[_0x8f06('0x36')]);_0x5089a1[_0x8f06('0x39')]=_[_0x8f06('0x38')](_0x5e0f10[_0x8f06('0x34')],qs[_0x8f06('0x3a')](_0x1a2997['query'][_0x8f06('0x3a')]));_0x5089a1[_0x8f06('0x39')]=_0x5089a1[_0x8f06('0x39')][_0x8f06('0x3b')]?_0x5089a1[_0x8f06('0x39')]:_0x5e0f10[_0x8f06('0x34')];if(_0x1a2997['query'][_0x8f06('0x45')]){_0x5089a1[_0x8f06('0x46')]=[{'all':!![]}];}_0x5089a1=_[_0x8f06('0x43')]({},_0x5089a1,_0x1a2997[_0x8f06('0x44')]);return db['Disposition'][_0x8f06('0x4c')](_0x5089a1)[_0x8f06('0x25')](handleEntityNotFound(_0x384f42,null))['then'](respondWithResult(_0x384f42,null))[_0x8f06('0x49')](handleError(_0x384f42,null));};exports[_0x8f06('0x4d')]=function(_0x585b2a,_0x38bfaf){return db[_0x8f06('0x30')][_0x8f06('0x4d')](_0x585b2a[_0x8f06('0x4e')],{})[_0x8f06('0x25')](function(_0x59a95e){var _0x290165=_0x585b2a['user'][_0x8f06('0x27')]({'plain':!![]});if(!_0x290165)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x290165['role']==='user'){var _0x175669=_0x59a95e[_0x8f06('0x27')]({'plain':!![]});var _0x1be14c=_0x8f06('0x28');return db['UserProfileSection'][_0x8f06('0x4c')]({'where':{'name':_0x1be14c,'userProfileId':_0x290165[_0x8f06('0x4f')]},'raw':!![]})[_0x8f06('0x25')](function(_0x3d939b){if(_0x3d939b&&_0x3d939b[_0x8f06('0x50')]===0x0){return db['UserProfileResource'][_0x8f06('0x4d')]({'name':_0x175669[_0x8f06('0x2c')],'resourceId':_0x175669['id'],'type':_0x3d939b['name'],'sectionId':_0x3d939b['id']},{})[_0x8f06('0x25')](function(){return _0x59a95e;});}else{return _0x59a95e;}})[_0x8f06('0x49')](function(_0x396df5){logger[_0x8f06('0x2a')](_0x8f06('0x51'),_0x396df5);throw _0x396df5;});}return _0x59a95e;})[_0x8f06('0x25')](respondWithResult(_0x38bfaf,0xc9))[_0x8f06('0x49')](handleError(_0x38bfaf,null));};exports['update']=function(_0x347eaa,_0x24a15d){if(_0x347eaa['body']['id']){delete _0x347eaa[_0x8f06('0x4e')]['id'];}return db[_0x8f06('0x30')][_0x8f06('0x4c')]({'where':{'id':_0x347eaa[_0x8f06('0x4b')]['id']}})[_0x8f06('0x25')](handleEntityNotFound(_0x24a15d,null))[_0x8f06('0x25')](saveUpdates(_0x347eaa[_0x8f06('0x4e')],null))['then'](respondWithResult(_0x24a15d,null))[_0x8f06('0x49')](handleError(_0x24a15d,null));};exports[_0x8f06('0x26')]=function(_0x2858db,_0x45383f){return db[_0x8f06('0x30')][_0x8f06('0x4c')]({'where':{'id':_0x2858db[_0x8f06('0x4b')]['id']}})[_0x8f06('0x25')](handleEntityNotFound(_0x45383f,null))[_0x8f06('0x25')](removeEntity(_0x45383f,null))[_0x8f06('0x49')](handleError(_0x45383f,null));};
\ No newline at end of file
index 698c5ac..943cbdc 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0x7666=['WhatsappAccountId','util','moment','bluebird','request-promise','./disposition.attributes','exports','define','Disposition','name','ListId','MailAccountId','name_sms','SmsAccountId','name_fax','OpenchannelAccountId','name_whatsapp'];(function(_0x32cc36,_0x16f24e){var _0x50120a=function(_0x1b5db7){while(--_0x1b5db7){_0x32cc36['push'](_0x32cc36['shift']());}};_0x50120a(++_0x16f24e);}(_0x7666,0xab));var _0x6766=function(_0x4d9b44,_0x4f3919){_0x4d9b44=_0x4d9b44-0x0;var _0x133bf5=_0x7666[_0x4d9b44];return _0x133bf5;};'use strict';var _=require('lodash');var util=require(_0x6766('0x0'));var logger=require('../../config/logger')('api');var moment=require(_0x6766('0x1'));var BPromise=require(_0x6766('0x2'));var rp=require(_0x6766('0x3'));var fs=require('fs');var path=require('path');var rimraf=require('rimraf');var config=require('../../config/environment');var attributes=require(_0x6766('0x4'));module[_0x6766('0x5')]=function(_0x1a27cd,_0x2a9545){return _0x1a27cd[_0x6766('0x6')](_0x6766('0x7'),attributes,{'tableName':'tools_dispositions','paranoid':![],'indexes':[{'unique':!![],'name':'name_voice','fields':[_0x6766('0x8'),_0x6766('0x9')]},{'unique':!![],'name':'name_chat','fields':[_0x6766('0x8'),'ChatWebsiteId']},{'unique':!![],'name':'name_mail','fields':[_0x6766('0x8'),_0x6766('0xa')]},{'unique':!![],'name':_0x6766('0xb'),'fields':[_0x6766('0x8'),_0x6766('0xc')]},{'unique':!![],'name':_0x6766('0xd'),'fields':['name','FaxAccountId']},{'unique':!![],'name':'name_openchannel','fields':['name',_0x6766('0xe')]},{'unique':!![],'name':_0x6766('0xf'),'fields':[_0x6766('0x8'),_0x6766('0x10')]}],'timestamps':!![]});};
\ No newline at end of file
index 12f3e07..1d49bf3 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(_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
+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(_0x5ae590,_0x23ed81){var _0x27bda5=function(_0x53c199){while(--_0x53c199){_0x5ae590['push'](_0x5ae590['shift']());}};_0x27bda5(++_0x23ed81);}(_0xa9e0,0x123));var _0x0a9e=function(_0x18a79d,_0x57bd2c){_0x18a79d=_0x18a79d-0x0;var _0x4f8848=_0xa9e0[_0x18a79d];return _0x4f8848;};'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 169b613..ccd7264 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0x5b92=['../../components/auth/service','../../components/interaction/service','../../config/environment','./disposition.controller','get','isAuthenticated','index','/:id','show','update','delete','destroy','exports','multer','path','Router','fs-extra'];(function(_0x5ce8b9,_0x5cded8){var _0xe34be0=function(_0xe3d4e5){while(--_0xe3d4e5){_0x5ce8b9['push'](_0x5ce8b9['shift']());}};_0xe34be0(++_0x5cded8);}(_0x5b92,0xb7));var _0x25b9=function(_0xc6be3a,_0x540e05){_0xc6be3a=_0xc6be3a-0x0;var _0x56a310=_0x5b92[_0xc6be3a];return _0x56a310;};'use strict';var multer=require(_0x25b9('0x0'));var util=require('util');var path=require(_0x25b9('0x1'));var timeout=require('connect-timeout');var express=require('express');var router=express[_0x25b9('0x2')]();var fs_extra=require(_0x25b9('0x3'));var auth=require(_0x25b9('0x4'));var interaction=require(_0x25b9('0x5'));var config=require(_0x25b9('0x6'));var controller=require(_0x25b9('0x7'));router[_0x25b9('0x8')]('/',auth[_0x25b9('0x9')](),controller[_0x25b9('0xa')]);router[_0x25b9('0x8')](_0x25b9('0xb'),auth[_0x25b9('0x9')](),controller[_0x25b9('0xc')]);router['post']('/',auth['isAuthenticated'](),controller['create']);router['put'](_0x25b9('0xb'),auth[_0x25b9('0x9')](),controller[_0x25b9('0xd')]);router[_0x25b9('0xe')]('/:id',auth[_0x25b9('0x9')](),controller[_0x25b9('0xf')]);module[_0x25b9('0x10')]=router;
\ No newline at end of file
index d9a665c..793bb65 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0x83b4=['2400','4800','9600','12000','14400','v17,v27,v29','INTEGER','SIP','IAX','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','mandatoryDisposition','STRING','ENUM','yes','xCALLY\x20Motion\x20Fax','localstationid'];(function(_0x5037b8,_0x526438){var _0xa89519=function(_0x104181){while(--_0x104181){_0x5037b8['push'](_0x5037b8['shift']());}};_0xa89519(++_0x526438);}(_0x83b4,0x1c9));var _0x483b=function(_0x4a1801,_0x465789){_0x4a1801=_0x4a1801-0x0;var _0x3182ec=_0x83b4[_0x4a1801];return _0x3182ec;};'use strict';var Sequelize=require('sequelize');module['exports']={'name':{'type':Sequelize[_0x483b('0x0')],'allowNull':![],'validate':{'notEmpty':!![]}},'description':{'type':Sequelize[_0x483b('0x0')]},'ecm':{'type':Sequelize[_0x483b('0x1')](_0x483b('0x2'),'no'),'defaultValue':_0x483b('0x2')},'headerinfo':{'type':Sequelize[_0x483b('0x0')],'defaultValue':_0x483b('0x3')},'localstationid':{'type':Sequelize[_0x483b('0x0')],'unique':_0x483b('0x4')},'minrate':{'type':Sequelize[_0x483b('0x1')](_0x483b('0x5'),_0x483b('0x6'),'7200',_0x483b('0x7'),_0x483b('0x8'),'14400'),'defaultValue':_0x483b('0x6')},'maxrate':{'type':Sequelize[_0x483b('0x1')](_0x483b('0x5'),_0x483b('0x6'),'7200',_0x483b('0x7'),_0x483b('0x8'),_0x483b('0x9')),'defaultValue':'14400'},'modem':{'type':Sequelize['STRING'],'defaultValue':_0x483b('0xa')},'gateway':{'type':Sequelize['STRING'],'defaultValue':'no','validate':{'is':/^(?:yes|no|[0-9]+)$/}},'faxdetect':{'type':Sequelize[_0x483b('0x0')],'defaultValue':'no','validate':{'is':/^(?:yes|no|t38|cng|[0-9]+)$/}},'t38timeout':{'type':Sequelize[_0x483b('0xb')],'defaultValue':0x1388,'validate':{'min':0x3e8}},'tech':{'type':Sequelize[_0x483b('0x1')](_0x483b('0xc'),_0x483b('0xd'),'DADHI','KHOMP'),'defaultValue':_0x483b('0xc')},'key':{'type':Sequelize[_0x483b('0x0')],'allowNull':![]},'notificationTemplate':{'type':Sequelize[_0x483b('0xe')],'defaultValue':function(){return _0x483b('0xf');}},'notificationSound':{'type':Sequelize[_0x483b('0x10')],'defaultValue':!![]},'notificationShake':{'type':Sequelize[_0x483b('0x10')],'defaultValue':![]},'waitForTheAssignedAgent':{'type':Sequelize['INTEGER'],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0xa},'queueTransfer':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'queueTransferTimeout':{'type':Sequelize[_0x483b('0xb')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c},'agentTransfer':{'type':Sequelize[_0x483b('0x10')],'defaultValue':![]},'agentTransferTimeout':{'type':Sequelize[_0x483b('0xb')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c},'mandatoryDispositionPauseId':{'type':Sequelize[_0x483b('0xb')],'allowNull':!![],'defaultValue':null,'comment':_0x483b('0x11')},'mandatoryDisposition':{'type':Sequelize[_0x483b('0x10')],'defaultValue':![],'comment':_0x483b('0x12'),'set':function(_0x44fdbd){if(!_0x44fdbd)this[_0x483b('0x13')](_0x483b('0x14'),null);this[_0x483b('0x13')](_0x483b('0x15'),_0x44fdbd);}}};
\ No newline at end of file
index 851361f..2803431 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0x731f=['CmContact','Contact','User','Owner','fullname','internal','Tag','Tags','color','tag','addApplications','sequelize','transaction','Transaction','READ_COMMITTED','FaxApplication','bulkCreate','findAndCountAll','priority','finally','send','json','getApplications','context','from-voip-provider','exten','localstationid','app','description','Fax\x20Extension','Answer','ecm','gateway','faxdetect','headerinfo','maxrate','minrate','modem','t38timeout','push','FAXOPT(','Set','Wait','/var/opt/motion2/server/files/attachments/fax-${CALLERID(num)}-${CUT(UNIQUEID,.,1)}-${CUT(UNIQUEID,.,2)}-${STRFTIME(,,%C%y%m%d%H%M%S)}-rx.tif,d','addAccountApplications','VoiceExtension','updateAccountApplications','tech','key','createdAt','ListId','findById','FaxMessage','$gte','format','CmList','List','Contacts','updatedAt','DESC','attachments','CheckAfterSend','isNil','path','from','\x22%s\x22\x20<%s>','fax','Send\x20Fax\x20failed','out','filename','Contact\x20not\x20found','spread','ContactId','dataValues','Messages','SendFax','SendFaxRpc,\x20%s','addAgents','removeAgents','isArray','emit','userFaxAccount:remove','getAgents','eml-format','rimraf','fast-json-patch','request-promise','bluebird','mustache','util','to-csv','ejs','fs-extra','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../mysqldb','redis','defaults','socket.io-emitter','./faxAccount.socket','jayson/promise','client','http','request','then','info','FaxAccount,\x20%s,\x20%s','request\x20sent','debug','error','code','message','result','sendStatus','status','end','offset','limit','undefined','count','set','Content-Range','apply','reject','update','get','UserProfileResource','destroy','stack','name','index','Pause','mandatoryDispositionPause','map','FaxAccount','rawAttributes','type','model','query','keys','filters','intersection','fields','attributes','order','where','pick','filter','merge','VIRTUAL','options','includeAll','findAll','catch','show','params','length','include','find','create','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','FaxAccounts','UserProfileSection','userProfileId','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','body','describe','addDisposition','FaxAccountId','getDispositions','findOne','hasOwnProperty','nolimit','sort','Disposition','rows','removeDispositions','ids','addAnswer','CannedAnswer','removeAnswers','FaxInteraction','omit','getInteractions'];(function(_0x59baa6,_0x57ea96){var _0x56c39f=function(_0x5b0e17){while(--_0x5b0e17){_0x59baa6['push'](_0x59baa6['shift']());}};_0x56c39f(++_0x57ea96);}(_0x731f,0x117));var _0xf731=function(_0x122ef9,_0x451d2a){_0x122ef9=_0x122ef9-0x0;var _0x42fba0=_0x731f[_0x122ef9];return _0x42fba0;};'use strict';var emlformat=require(_0xf731('0x0'));var rimraf=require(_0xf731('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0xf731('0x2'));var rp=require(_0xf731('0x3'));var moment=require('moment');var BPromise=require(_0xf731('0x4'));var Mustache=require(_0xf731('0x5'));var util=require(_0xf731('0x6'));var path=require('path');var sox=require('sox');var csv=require(_0xf731('0x7'));var ejs=require(_0xf731('0x8'));var fs=require('fs');var fs_extra=require(_0xf731('0x9'));var _=require('lodash');var squel=require('squel');var crypto=require('crypto');var jsforce=require(_0xf731('0xa'));var deskjs=require(_0xf731('0xb'));var toCsv=require('to-csv');var querystring=require(_0xf731('0xc'));var Papa=require(_0xf731('0xd'));var Redis=require(_0xf731('0xe'));var authService=require(_0xf731('0xf'));var qs=require(_0xf731('0x10'));var as=require(_0xf731('0x11'));var hardwareService=require(_0xf731('0x12'));var logger=require(_0xf731('0x13'))(_0xf731('0x14'));var utils=require(_0xf731('0x15'));var config=require('../../config/environment');var licenseUtil=require('../../config/license/util');var db=require(_0xf731('0x16'))['db'];config[_0xf731('0x17')]=_[_0xf731('0x18')](config['redis'],{'host':'localhost','port':0x18eb});var socket=require(_0xf731('0x19'))(new Redis(config[_0xf731('0x17')]));require(_0xf731('0x1a'))['register'](socket);var jayson=require(_0xf731('0x1b'));var client=jayson[_0xf731('0x1c')][_0xf731('0x1d')]({'port':0x232c});var client9002=jayson['client']['http']({'port':0x232a});function respondWithRpcPromise(_0x5e277f,_0x2993af,_0x467dc8,_0x469d54){return new BPromise(function(_0x5d2305,_0xb94e24){var _0x5d2c8a=_0x469d54||client;return _0x5d2c8a[_0xf731('0x1e')](_0x5e277f,_0x467dc8)[_0xf731('0x1f')](function(_0x30a151){logger[_0xf731('0x20')](_0xf731('0x21'),_0x2993af,_0xf731('0x22'));logger[_0xf731('0x23')]('FaxAccount,\x20%s,\x20%s,\x20%s',_0x2993af,_0xf731('0x22'),JSON['stringify'](_0x30a151));if(_0x30a151[_0xf731('0x24')]){if(_0x30a151['error'][_0xf731('0x25')]===0x1f4){logger[_0xf731('0x24')](_0xf731('0x21'),_0x2993af,_0x30a151[_0xf731('0x24')][_0xf731('0x26')]);return _0xb94e24(_0x30a151[_0xf731('0x24')][_0xf731('0x26')]);}logger['error'](_0xf731('0x21'),_0x2993af,_0x30a151[_0xf731('0x24')]['message']);return _0x5d2305(_0x30a151[_0xf731('0x24')][_0xf731('0x26')]);}else{logger[_0xf731('0x20')](_0xf731('0x21'),_0x2993af,_0xf731('0x22'));_0x5d2305(_0x30a151[_0xf731('0x27')][_0xf731('0x26')]);}})['catch'](function(_0x3d7bfb){logger[_0xf731('0x24')]('FaxAccount,\x20%s,\x20%s',_0x2993af,_0x3d7bfb);_0xb94e24(_0x3d7bfb);});});}function respondWithStatusCode(_0x2ebe29,_0x252251){_0x252251=_0x252251||0xcc;return function(_0x2c11dc){if(_0x2c11dc){return _0x2ebe29[_0xf731('0x28')](_0x252251);}return _0x2ebe29[_0xf731('0x29')](_0x252251)[_0xf731('0x2a')]();};}function respondWithResult(_0x1d8c03,_0x3a6e1b){_0x3a6e1b=_0x3a6e1b||0xc8;return function(_0x34ec79){if(_0x34ec79){return _0x1d8c03['status'](_0x3a6e1b)['json'](_0x34ec79);}};}function respondWithFilteredResult(_0x3e897c,_0x27e149){return function(_0x5b6e02){if(_0x5b6e02){var _0xd03586=typeof _0x27e149[_0xf731('0x2b')]==='undefined'&&typeof _0x27e149[_0xf731('0x2c')]===_0xf731('0x2d');var _0x7c97a9=_0x5b6e02[_0xf731('0x2e')];var _0x5b3202=_0xd03586?0x0:_0x27e149[_0xf731('0x2b')];var _0x1764fa=_0xd03586?_0x5b6e02['count']:_0x27e149['offset']+_0x27e149['limit'];var _0x40c97;if(_0x1764fa>=_0x7c97a9){_0x1764fa=_0x7c97a9;_0x40c97=0xc8;}else{_0x40c97=0xce;}_0x3e897c['status'](_0x40c97);return _0x3e897c[_0xf731('0x2f')](_0xf731('0x30'),_0x5b3202+'-'+_0x1764fa+'/'+_0x7c97a9)['json'](_0x5b6e02);}return null;};}function patchUpdates(_0x2288bc){return function(_0x5571c1){try{jsonpatch[_0xf731('0x31')](_0x5571c1,_0x2288bc,!![]);}catch(_0x1444d4){return BPromise[_0xf731('0x32')](_0x1444d4);}return _0x5571c1['save']();};}function saveUpdates(_0x5d62bf,_0x2468f6){return function(_0x119993){if(_0x119993){return _0x119993[_0xf731('0x33')](_0x5d62bf)[_0xf731('0x1f')](function(_0x296187){return _0x296187;});}return null;};}function removeEntity(_0x5aa1c9,_0x4cea5a){return function(_0x4ac521){if(_0x4ac521){return _0x4ac521['destroy']()[_0xf731('0x1f')](function(){var _0xf3777b=_0x4ac521[_0xf731('0x34')]({'plain':!![]});var _0xe0579='FaxAccounts';return db[_0xf731('0x35')][_0xf731('0x36')]({'where':{'type':_0xe0579,'resourceId':_0xf3777b['id']}})[_0xf731('0x1f')](function(){return _0x4ac521;});})['then'](function(){_0x5aa1c9['status'](0xcc)[_0xf731('0x2a')]();});}};}function handleEntityNotFound(_0xf7904e,_0x93e36c){return function(_0x43d472){if(!_0x43d472){_0xf7904e[_0xf731('0x28')](0x194);}return _0x43d472;};}function handleError(_0x1cb186,_0xc43f6d){_0xc43f6d=_0xc43f6d||0x1f4;return function(_0x1fa4d6){logger[_0xf731('0x24')](_0x1fa4d6[_0xf731('0x37')]);if(_0x1fa4d6[_0xf731('0x38')]){delete _0x1fa4d6[_0xf731('0x38')];}_0x1cb186['status'](_0xc43f6d)['send'](_0x1fa4d6);};}exports[_0xf731('0x39')]=function(_0x9974ad,_0x1aa15a){var _0x3685cd={'include':[{'model':db[_0xf731('0x3a')],'as':_0xf731('0x3b')}]},_0x3b8d01={},_0x3af078={'count':0x0,'rows':[]};var _0xbcf859=_[_0xf731('0x3c')](db[_0xf731('0x3d')][_0xf731('0x3e')],function(_0x17a280){return{'name':_0x17a280['fieldName'],'type':_0x17a280[_0xf731('0x3f')]['key']};});_0x3b8d01[_0xf731('0x40')]=_[_0xf731('0x3c')](_0xbcf859,'name');_0x3b8d01[_0xf731('0x41')]=_[_0xf731('0x42')](_0x9974ad[_0xf731('0x41')]);_0x3b8d01[_0xf731('0x43')]=_[_0xf731('0x44')](_0x3b8d01[_0xf731('0x40')],_0x3b8d01[_0xf731('0x41')]);_0x3685cd['attributes']=_[_0xf731('0x44')](_0x3b8d01[_0xf731('0x40')],qs[_0xf731('0x45')](_0x9974ad['query']['fields']));_0x3685cd[_0xf731('0x46')]=_0x3685cd[_0xf731('0x46')]['length']?_0x3685cd['attributes']:_0x3b8d01[_0xf731('0x40')];if(!_0x9974ad[_0xf731('0x41')]['hasOwnProperty']('nolimit')){_0x3685cd[_0xf731('0x2c')]=qs['limit'](_0x9974ad['query']['limit']);_0x3685cd[_0xf731('0x2b')]=qs[_0xf731('0x2b')](_0x9974ad['query'][_0xf731('0x2b')]);}_0x3685cd[_0xf731('0x47')]=qs['sort'](_0x9974ad[_0xf731('0x41')]['sort']);_0x3685cd[_0xf731('0x48')]=qs[_0xf731('0x43')](_[_0xf731('0x49')](_0x9974ad[_0xf731('0x41')],_0x3b8d01['filters']),_0xbcf859);if(_0x9974ad[_0xf731('0x41')][_0xf731('0x4a')]){_0x3685cd[_0xf731('0x48')]=_[_0xf731('0x4b')](_0x3685cd[_0xf731('0x48')],{'$or':_[_0xf731('0x3c')](_0xbcf859,function(_0x5258e0){if(_0x5258e0[_0xf731('0x3f')]!==_0xf731('0x4c')){var _0x1fcb4d={};_0x1fcb4d[_0x5258e0[_0xf731('0x38')]]={'$like':'%'+_0x9974ad['query']['filter']+'%'};return _0x1fcb4d;}})});}_0x3685cd=_['merge']({},_0x3685cd,_0x9974ad[_0xf731('0x4d')]);var _0x56de86={'where':_0x3685cd['where']};return db[_0xf731('0x3d')]['count'](_0x56de86)[_0xf731('0x1f')](function(_0x43baef){_0x3af078['count']=_0x43baef;if(_0x9974ad[_0xf731('0x41')][_0xf731('0x4e')]){_0x3685cd['include']=[{'all':!![]}];}return db[_0xf731('0x3d')][_0xf731('0x4f')](_0x3685cd);})[_0xf731('0x1f')](function(_0x46537f){_0x3af078['rows']=_0x46537f;return _0x3af078;})[_0xf731('0x1f')](respondWithFilteredResult(_0x1aa15a,_0x3685cd))[_0xf731('0x50')](handleError(_0x1aa15a,null));};exports[_0xf731('0x51')]=function(_0x3fe158,_0x2c12b5){var _0x194759={'raw':![],'where':{'id':_0x3fe158[_0xf731('0x52')]['id']},'include':[{'model':db['Pause'],'as':_0xf731('0x3b')}]},_0x4b41c8={};_0x4b41c8[_0xf731('0x40')]=_[_0xf731('0x42')](db['FaxAccount'][_0xf731('0x3e')]);_0x4b41c8['query']=_['keys'](_0x3fe158[_0xf731('0x41')]);_0x4b41c8[_0xf731('0x43')]=_[_0xf731('0x44')](_0x4b41c8['model'],_0x4b41c8[_0xf731('0x41')]);_0x194759['attributes']=_[_0xf731('0x44')](_0x4b41c8['model'],qs[_0xf731('0x45')](_0x3fe158[_0xf731('0x41')][_0xf731('0x45')]));_0x194759[_0xf731('0x46')]=_0x194759[_0xf731('0x46')][_0xf731('0x53')]?_0x194759['attributes']:_0x4b41c8[_0xf731('0x40')];if(_0x3fe158[_0xf731('0x41')][_0xf731('0x4e')]){_0x194759[_0xf731('0x54')]=[{'all':!![]}];}_0x194759=_['merge']({},_0x194759,_0x3fe158[_0xf731('0x4d')]);return db['FaxAccount'][_0xf731('0x55')](_0x194759)[_0xf731('0x1f')](handleEntityNotFound(_0x2c12b5,null))[_0xf731('0x1f')](respondWithResult(_0x2c12b5,null))[_0xf731('0x50')](handleError(_0x2c12b5,null));};exports['create']=function(_0x2f1b23,_0xb663df){return db[_0xf731('0x3d')][_0xf731('0x56')](_0x2f1b23['body'],{})[_0xf731('0x1f')](function(_0x3abd37){var _0x1118ea=_0x2f1b23[_0xf731('0x57')][_0xf731('0x34')]({'plain':!![]});if(!_0x1118ea)throw new Error(_0xf731('0x58'));if(_0x1118ea[_0xf731('0x59')]==='user'){var _0x12050d=_0x3abd37['get']({'plain':!![]});var _0x1a34d3=_0xf731('0x5a');return db[_0xf731('0x5b')]['find']({'where':{'name':_0x1a34d3,'userProfileId':_0x1118ea[_0xf731('0x5c')]},'raw':!![]})['then'](function(_0x3bbbd5){if(_0x3bbbd5&&_0x3bbbd5['autoAssociation']===0x0){return db[_0xf731('0x35')][_0xf731('0x56')]({'name':_0x12050d[_0xf731('0x38')],'resourceId':_0x12050d['id'],'type':_0x3bbbd5[_0xf731('0x38')],'sectionId':_0x3bbbd5['id']},{})[_0xf731('0x1f')](function(){return _0x3abd37;});}else{return _0x3abd37;}})[_0xf731('0x50')](function(_0x57c0ea){logger[_0xf731('0x24')](_0xf731('0x5d'),_0x57c0ea);throw _0x57c0ea;});}return _0x3abd37;})[_0xf731('0x1f')](respondWithResult(_0xb663df,0xc9))[_0xf731('0x50')](handleError(_0xb663df,null));};exports[_0xf731('0x33')]=function(_0x5d6856,_0x85c842){if(_0x5d6856[_0xf731('0x5e')]['id']){delete _0x5d6856[_0xf731('0x5e')]['id'];}return db[_0xf731('0x3d')]['find']({'where':{'id':_0x5d6856[_0xf731('0x52')]['id']},'include':[{'model':db['Pause'],'as':_0xf731('0x3b')}]})['then'](handleEntityNotFound(_0x85c842,null))[_0xf731('0x1f')](saveUpdates(_0x5d6856[_0xf731('0x5e')],null))['then'](respondWithResult(_0x85c842,null))[_0xf731('0x50')](handleError(_0x85c842,null));};exports[_0xf731('0x36')]=function(_0x10b833,_0x252819){return db['FaxAccount'][_0xf731('0x55')]({'where':{'id':_0x10b833['params']['id']}})[_0xf731('0x1f')](handleEntityNotFound(_0x252819,null))[_0xf731('0x1f')](removeEntity(_0x252819,null))[_0xf731('0x50')](handleError(_0x252819,null));};exports[_0xf731('0x5f')]=function(_0x1810c9,_0x1386c3){return db[_0xf731('0x3d')]['describe']()[_0xf731('0x1f')](respondWithResult(_0x1386c3,null))[_0xf731('0x50')](handleError(_0x1386c3,null));};exports[_0xf731('0x60')]=function(_0x2bab53,_0x281826,_0x2d59fe){if(_0x2bab53[_0xf731('0x5e')]['id']){delete _0x2bab53[_0xf731('0x5e')]['id'];}return db[_0xf731('0x3d')][_0xf731('0x55')]({'where':{'id':_0x2bab53[_0xf731('0x52')]['id']}})[_0xf731('0x1f')](handleEntityNotFound(_0x281826,null))['then'](function(_0x2b11b6){if(_0x2b11b6){_0x2bab53[_0xf731('0x5e')][_0xf731('0x61')]=_0x2b11b6['id'];return db['Disposition'][_0xf731('0x56')](_0x2bab53[_0xf731('0x5e')]);}})[_0xf731('0x1f')](respondWithResult(_0x281826,null))[_0xf731('0x50')](handleError(_0x281826,null));};exports[_0xf731('0x62')]=function(_0xb36027,_0x4b1c36,_0x47e5f7){var _0x1cbd23={'raw':![],'where':{}};var _0x36e88c={};var _0x14556a={'count':0x0,'rows':[]};return db['FaxAccount'][_0xf731('0x63')]({'where':{'id':_0xb36027['params']['id']}})['then'](handleEntityNotFound(_0x4b1c36,null))['then'](function(_0x13e0f8){if(_0x13e0f8){_0x36e88c[_0xf731('0x40')]=_[_0xf731('0x42')](db['Disposition'][_0xf731('0x3e')]);_0x36e88c[_0xf731('0x41')]=_[_0xf731('0x42')](_0xb36027[_0xf731('0x41')]);_0x36e88c[_0xf731('0x43')]=_[_0xf731('0x44')](_0x36e88c['model'],_0x36e88c[_0xf731('0x41')]);_0x1cbd23[_0xf731('0x46')]=_[_0xf731('0x44')](_0x36e88c[_0xf731('0x40')],qs[_0xf731('0x45')](_0xb36027[_0xf731('0x41')][_0xf731('0x45')]));_0x1cbd23['attributes']=_0x1cbd23[_0xf731('0x46')][_0xf731('0x53')]?_0x1cbd23[_0xf731('0x46')]:_0x36e88c[_0xf731('0x40')];if(!_0xb36027['query'][_0xf731('0x64')](_0xf731('0x65'))){_0x1cbd23[_0xf731('0x2c')]=qs[_0xf731('0x2c')](_0xb36027[_0xf731('0x41')][_0xf731('0x2c')]);_0x1cbd23[_0xf731('0x2b')]=qs[_0xf731('0x2b')](_0xb36027[_0xf731('0x41')]['offset']);}_0x1cbd23[_0xf731('0x47')]=qs[_0xf731('0x66')](_0xb36027[_0xf731('0x41')][_0xf731('0x66')]);_0x1cbd23[_0xf731('0x48')]=qs[_0xf731('0x43')](_[_0xf731('0x49')](_0xb36027[_0xf731('0x41')],_0x36e88c[_0xf731('0x43')]));_0x1cbd23[_0xf731('0x48')][_0xf731('0x61')]=_0x13e0f8['id'];if(_0xb36027[_0xf731('0x41')][_0xf731('0x4a')]){_0x1cbd23[_0xf731('0x48')]=_['merge'](_0x1cbd23['where'],{'$or':_['map'](_0x1cbd23['attributes'],function(_0x4dbe99){var _0x1e25bf={};_0x1e25bf[_0x4dbe99]={'$like':'%'+_0xb36027['query'][_0xf731('0x4a')]+'%'};return _0x1e25bf;})});}_0x1cbd23=_[_0xf731('0x4b')]({},_0x1cbd23,_0xb36027[_0xf731('0x4d')]);return db[_0xf731('0x67')][_0xf731('0x2e')]({'where':_0x1cbd23[_0xf731('0x48')]})[_0xf731('0x1f')](function(_0x278b2a){_0x14556a[_0xf731('0x2e')]=_0x278b2a;if(_0xb36027[_0xf731('0x41')][_0xf731('0x4e')]){_0x1cbd23[_0xf731('0x54')]=[{'all':!![]}];}return db[_0xf731('0x67')][_0xf731('0x4f')](_0x1cbd23);})['then'](function(_0xf34947){_0x14556a[_0xf731('0x68')]=_0xf34947;return _0x14556a;});}})[_0xf731('0x1f')](respondWithFilteredResult(_0x4b1c36,_0x1cbd23))[_0xf731('0x50')](handleError(_0x4b1c36,null));};exports[_0xf731('0x69')]=function(_0x1d40dd,_0x4a0dcc,_0x5c1409){return db['FaxAccount']['find']({'where':{'id':_0x1d40dd[_0xf731('0x52')]['id']}})['then'](handleEntityNotFound(_0x4a0dcc,null))[_0xf731('0x1f')](function(_0xbff771){if(_0xbff771){return _0xbff771['removeDispositions'](_0x1d40dd[_0xf731('0x41')][_0xf731('0x6a')]);}})['then'](respondWithStatusCode(_0x4a0dcc,null))[_0xf731('0x50')](handleError(_0x4a0dcc,null));};exports[_0xf731('0x6b')]=function(_0x3ac36c,_0x2c9eec,_0x329dcc){if(_0x3ac36c[_0xf731('0x5e')]['id']){delete _0x3ac36c[_0xf731('0x5e')]['id'];}return db['FaxAccount'][_0xf731('0x55')]({'where':{'id':_0x3ac36c['params']['id']}})[_0xf731('0x1f')](handleEntityNotFound(_0x2c9eec,null))['then'](function(_0x368e88){if(_0x368e88){_0x3ac36c['body'][_0xf731('0x61')]=_0x368e88['id'];return db[_0xf731('0x6c')]['create'](_0x3ac36c[_0xf731('0x5e')]);}})[_0xf731('0x1f')](respondWithResult(_0x2c9eec,null))[_0xf731('0x50')](handleError(_0x2c9eec,null));};exports['getAnswers']=function(_0x27328a,_0x2cf478,_0x55d624){var _0xdc69a9={'raw':![],'where':{}};var _0x381758={};var _0x1856c9={'count':0x0,'rows':[]};return db[_0xf731('0x3d')][_0xf731('0x63')]({'where':{'id':_0x27328a[_0xf731('0x52')]['id']}})[_0xf731('0x1f')](handleEntityNotFound(_0x2cf478,null))['then'](function(_0x4ec40e){if(_0x4ec40e){_0x381758[_0xf731('0x40')]=_[_0xf731('0x42')](db['CannedAnswer'][_0xf731('0x3e')]);_0x381758[_0xf731('0x41')]=_[_0xf731('0x42')](_0x27328a[_0xf731('0x41')]);_0x381758['filters']=_[_0xf731('0x44')](_0x381758[_0xf731('0x40')],_0x381758[_0xf731('0x41')]);_0xdc69a9[_0xf731('0x46')]=_['intersection'](_0x381758[_0xf731('0x40')],qs['fields'](_0x27328a['query'][_0xf731('0x45')]));_0xdc69a9[_0xf731('0x46')]=_0xdc69a9['attributes']['length']?_0xdc69a9[_0xf731('0x46')]:_0x381758[_0xf731('0x40')];if(!_0x27328a[_0xf731('0x41')][_0xf731('0x64')]('nolimit')){_0xdc69a9['limit']=qs[_0xf731('0x2c')](_0x27328a[_0xf731('0x41')][_0xf731('0x2c')]);_0xdc69a9['offset']=qs[_0xf731('0x2b')](_0x27328a[_0xf731('0x41')][_0xf731('0x2b')]);}_0xdc69a9[_0xf731('0x47')]=qs['sort'](_0x27328a['query'][_0xf731('0x66')]);_0xdc69a9['where']=qs[_0xf731('0x43')](_[_0xf731('0x49')](_0x27328a[_0xf731('0x41')],_0x381758[_0xf731('0x43')]));_0xdc69a9[_0xf731('0x48')][_0xf731('0x61')]=_0x4ec40e['id'];if(_0x27328a[_0xf731('0x41')][_0xf731('0x4a')]){_0xdc69a9['where']=_[_0xf731('0x4b')](_0xdc69a9[_0xf731('0x48')],{'$or':_[_0xf731('0x3c')](_0xdc69a9[_0xf731('0x46')],function(_0xfc61e7){var _0x3b299c={};_0x3b299c[_0xfc61e7]={'$like':'%'+_0x27328a[_0xf731('0x41')][_0xf731('0x4a')]+'%'};return _0x3b299c;})});}_0xdc69a9=_[_0xf731('0x4b')]({},_0xdc69a9,_0x27328a[_0xf731('0x4d')]);return db[_0xf731('0x6c')][_0xf731('0x2e')]({'where':_0xdc69a9['where']})[_0xf731('0x1f')](function(_0x20e43a){_0x1856c9[_0xf731('0x2e')]=_0x20e43a;if(_0x27328a[_0xf731('0x41')][_0xf731('0x4e')]){_0xdc69a9[_0xf731('0x54')]=[{'all':!![]}];}return db[_0xf731('0x6c')][_0xf731('0x4f')](_0xdc69a9);})[_0xf731('0x1f')](function(_0x17a90f){_0x1856c9[_0xf731('0x68')]=_0x17a90f;return _0x1856c9;});}})['then'](respondWithFilteredResult(_0x2cf478,_0xdc69a9))[_0xf731('0x50')](handleError(_0x2cf478,null));};exports[_0xf731('0x6d')]=function(_0x284c46,_0x30ad86,_0x35da20){return db[_0xf731('0x3d')][_0xf731('0x55')]({'where':{'id':_0x284c46[_0xf731('0x52')]['id']}})['then'](handleEntityNotFound(_0x30ad86,null))[_0xf731('0x1f')](function(_0x4011e8){if(_0x4011e8){return _0x4011e8[_0xf731('0x6d')](_0x284c46['query'][_0xf731('0x6a')]);}})[_0xf731('0x1f')](respondWithStatusCode(_0x30ad86,null))[_0xf731('0x50')](handleError(_0x30ad86,null));};exports['addInteraction']=function(_0x1412f4,_0x56f5d0,_0x52b42b){return db[_0xf731('0x6e')][_0xf731('0x55')]({'where':{'id':_0x1412f4[_0xf731('0x52')]['id']}})[_0xf731('0x1f')](handleEntityNotFound(_0x56f5d0,null))[_0xf731('0x1f')](function(_0x42602a){if(_0x42602a){return _0x42602a['addInteraction'](_0x1412f4[_0xf731('0x5e')][_0xf731('0x6a')],_[_0xf731('0x6f')](_0x1412f4[_0xf731('0x5e')],[_0xf731('0x6a'),'id'])||{});}})['then'](respondWithResult(_0x56f5d0,null))[_0xf731('0x50')](handleError(_0x56f5d0,null));};exports[_0xf731('0x70')]=function(_0x5b3b2d,_0x25b5a3,_0x5a5a4d){var _0x3dd8a8={'raw':![],'where':{}};var _0x4f156a={};var _0x4a0682={'count':0x0,'rows':[]};return db[_0xf731('0x3d')]['findOne']({'where':{'id':_0x5b3b2d[_0xf731('0x52')]['id']}})[_0xf731('0x1f')](handleEntityNotFound(_0x25b5a3,null))['then'](function(_0x3d52e3){if(_0x3d52e3){_0x4f156a[_0xf731('0x40')]=_[_0xf731('0x42')](db[_0xf731('0x6e')][_0xf731('0x3e')]);_0x4f156a[_0xf731('0x41')]=_[_0xf731('0x42')](_0x5b3b2d[_0xf731('0x41')]);_0x4f156a[_0xf731('0x43')]=_[_0xf731('0x44')](_0x4f156a[_0xf731('0x40')],_0x4f156a[_0xf731('0x41')]);_0x3dd8a8['attributes']=_[_0xf731('0x44')](_0x4f156a[_0xf731('0x40')],qs[_0xf731('0x45')](_0x5b3b2d['query'][_0xf731('0x45')]));_0x3dd8a8['attributes']=_0x3dd8a8[_0xf731('0x46')][_0xf731('0x53')]?_0x3dd8a8[_0xf731('0x46')]:_0x4f156a[_0xf731('0x40')];if(!_0x5b3b2d[_0xf731('0x41')][_0xf731('0x64')](_0xf731('0x65'))){_0x3dd8a8[_0xf731('0x2c')]=qs[_0xf731('0x2c')](_0x5b3b2d[_0xf731('0x41')]['limit']);_0x3dd8a8[_0xf731('0x2b')]=qs['offset'](_0x5b3b2d[_0xf731('0x41')][_0xf731('0x2b')]);}_0x3dd8a8[_0xf731('0x47')]=qs[_0xf731('0x66')](_0x5b3b2d[_0xf731('0x41')][_0xf731('0x66')]);_0x3dd8a8[_0xf731('0x48')]=qs[_0xf731('0x43')](_['pick'](_0x5b3b2d[_0xf731('0x41')],_0x4f156a[_0xf731('0x43')]));_0x3dd8a8[_0xf731('0x48')][_0xf731('0x61')]=_0x3d52e3['id'];if(_0x5b3b2d[_0xf731('0x41')][_0xf731('0x4a')]){_0x3dd8a8[_0xf731('0x48')]=_[_0xf731('0x4b')](_0x3dd8a8[_0xf731('0x48')],{'$or':_[_0xf731('0x3c')](_0x3dd8a8['attributes'],function(_0x1cbb60){var _0x1a5fad={};_0x1a5fad[_0x1cbb60]={'$like':'%'+_0x5b3b2d[_0xf731('0x41')][_0xf731('0x4a')]+'%'};return _0x1a5fad;})});}_0x3dd8a8=_['merge']({},_0x3dd8a8,_0x5b3b2d['options']);return db[_0xf731('0x6e')][_0xf731('0x2e')]({'where':_0x3dd8a8[_0xf731('0x48')]})[_0xf731('0x1f')](function(_0x50abe9){_0x4a0682['count']=_0x50abe9;if(_0x5b3b2d['query'][_0xf731('0x4e')]){_0x3dd8a8[_0xf731('0x54')]=[{'model':db[_0xf731('0x71')],'as':_0xf731('0x72'),'required':![]},{'model':db[_0xf731('0x73')],'as':_0xf731('0x74'),'attributes':['name',_0xf731('0x75'),_0xf731('0x76')],'required':![]},{'model':db[_0xf731('0x77')],'as':_0xf731('0x78'),'attributes':['id','name',_0xf731('0x79')],'where':_0x5b3b2d['query']['tag']?{'id':_0x5b3b2d[_0xf731('0x41')][_0xf731('0x7a')]}:undefined,'required':_0x5b3b2d['query'][_0xf731('0x7a')]?!![]:![]}];}return db[_0xf731('0x6e')][_0xf731('0x4f')](_0x3dd8a8);})[_0xf731('0x1f')](function(_0x122f18){_0x4a0682[_0xf731('0x68')]=_0x122f18;return _0x4a0682;});}})[_0xf731('0x1f')](respondWithFilteredResult(_0x25b5a3,_0x3dd8a8))[_0xf731('0x50')](handleError(_0x25b5a3,null));};exports[_0xf731('0x7b')]=function(_0x1fe14f,_0x1c2354){var _0x1b2c38=_0x1fe14f[_0xf731('0x52')]['id'];var _0x33e82f=_0x1fe14f[_0xf731('0x5e')];var _0x1c4d91=0xc8;var _0x49ae8c=null;return db[_0xf731('0x7c')][_0xf731('0x7d')]({'isolationLevel':db[_0xf731('0x7c')][_0xf731('0x7e')]['ISOLATION_LEVELS'][_0xf731('0x7f')]},function(_0x13be7e){return db[_0xf731('0x3d')]['findOne']({'where':{'id':_0x1b2c38},'transaction':_0x13be7e})[_0xf731('0x1f')](function(_0x54aa1d){if(_0x54aa1d){return db[_0xf731('0x80')][_0xf731('0x36')]({'where':{'FaxAccountId':_0x1b2c38},'transaction':_0x13be7e})['then'](function(){var _0x269f88=_['map'](_0x33e82f,function(_0x2b3fbb){_0x2b3fbb['FaxAccountId']=_0x1b2c38;return _0x2b3fbb;});return db[_0xf731('0x80')][_0xf731('0x81')](_0x269f88,{'transaction':_0x13be7e});});}else{_0x1c4d91=0x194;_0x49ae8c=[];}});})[_0xf731('0x1f')](function(){if(_0x1c4d91!==0x194){return db['FaxApplication'][_0xf731('0x82')]({'where':{'FaxAccountId':_0x1b2c38},'order':_0xf731('0x83')})[_0xf731('0x1f')](function(_0x57bdf1){_0x49ae8c=_0x57bdf1;});}})[_0xf731('0x50')](function(_0x39f601){_0x1c4d91=0x1f4;logger['error'](_0x39f601['stack']);if(_0x39f601[_0xf731('0x38')]){delete _0x39f601[_0xf731('0x38')];}_0x49ae8c=_0x39f601;})[_0xf731('0x84')](function(){if(_0x49ae8c===null){_0x1c2354[_0xf731('0x28')](_0x1c4d91);}else{if(_0x1c4d91===0x1f4){_0x1c2354[_0xf731('0x29')](_0x1c4d91)[_0xf731('0x85')](_0x49ae8c);}else{_0x1c2354['status'](_0x1c4d91)[_0xf731('0x86')](_0x49ae8c);}}});};exports['getApplications']=function(_0x2153a7,_0x6c7d78,_0x596836){var _0x1d8869={};var _0x5757c6={};var _0x5324af;var _0x3a459f;return db[_0xf731('0x3d')][_0xf731('0x63')]({'where':{'id':_0x2153a7[_0xf731('0x52')]['id']}})[_0xf731('0x1f')](handleEntityNotFound(_0x6c7d78,null))[_0xf731('0x1f')](function(_0x5624e6){if(_0x5624e6){_0x5324af=_0x5624e6;_0x5757c6['model']=_[_0xf731('0x42')](db['FaxApplication'][_0xf731('0x3e')]);_0x5757c6[_0xf731('0x41')]=_[_0xf731('0x42')](_0x2153a7['query']);_0x5757c6[_0xf731('0x43')]=_[_0xf731('0x44')](_0x5757c6[_0xf731('0x40')],_0x5757c6[_0xf731('0x41')]);_0x1d8869[_0xf731('0x46')]=_[_0xf731('0x44')](_0x5757c6[_0xf731('0x40')],qs[_0xf731('0x45')](_0x2153a7[_0xf731('0x41')][_0xf731('0x45')]));_0x1d8869[_0xf731('0x46')]=_0x1d8869[_0xf731('0x46')][_0xf731('0x53')]?_0x1d8869[_0xf731('0x46')]:_0x5757c6['model'];_0x1d8869[_0xf731('0x47')]=qs['sort'](_0x2153a7[_0xf731('0x41')]['sort']);_0x1d8869[_0xf731('0x48')]=qs['filters'](_[_0xf731('0x49')](_0x2153a7[_0xf731('0x41')],_0x5757c6['filters']));if(_0x2153a7['query']['filter']){_0x1d8869[_0xf731('0x48')]=_[_0xf731('0x4b')](_0x1d8869[_0xf731('0x48')],{'$or':_[_0xf731('0x3c')](_0x1d8869[_0xf731('0x46')],function(_0x5c5ccb){var _0x46aa47={};_0x46aa47[_0x5c5ccb]={'$like':'%'+_0x2153a7[_0xf731('0x41')][_0xf731('0x4a')]+'%'};return _0x46aa47;})});}_0x1d8869=_[_0xf731('0x4b')]({},_0x1d8869,_0x2153a7[_0xf731('0x4d')]);return _0x5324af[_0xf731('0x87')](_0x1d8869);}})['then'](function(_0x20c10f){if(_0x20c10f){_0x3a459f=_0x20c10f[_0xf731('0x53')];if(!_0x2153a7[_0xf731('0x41')][_0xf731('0x64')](_0xf731('0x65'))){_0x1d8869[_0xf731('0x2c')]=qs[_0xf731('0x2c')](_0x2153a7[_0xf731('0x41')][_0xf731('0x2c')]);_0x1d8869[_0xf731('0x2b')]=qs[_0xf731('0x2b')](_0x2153a7[_0xf731('0x41')][_0xf731('0x2b')]);}return _0x5324af[_0xf731('0x87')](_0x1d8869);}})[_0xf731('0x1f')](function(_0x962f63){if(_0x962f63){return _0x962f63?{'count':_0x3a459f,'rows':_0x962f63}:null;}})[_0xf731('0x1f')](respondWithResult(_0x6c7d78,null))['catch'](handleError(_0x6c7d78,null));};function Extension(_0xd0ca0a,_0x3e39e4,_0x382a41,_0x44798d){this[_0xf731('0x88')]=_0xf731('0x89');this[_0xf731('0x8a')]=_0xd0ca0a[_0xf731('0x8b')];this[_0xf731('0x8c')]=_0x44798d;this[_0xf731('0x3f')]='system';this[_0xf731('0x8d')]=_0xf731('0x8e');this[_0xf731('0x61')]=_0xd0ca0a['id'];this[_0xf731('0x83')]=_0x3e39e4;this['appdata']=_0x382a41;}function createExtensionsReciveFax(_0x4521c6){var _0x3d9ee6=0x1;var _0x402601=[];_0x402601['push'](new Extension(_0x4521c6,_0x3d9ee6,'',_0xf731('0x8f')));_0x3d9ee6+=0x1;_0x402601['push'](new Extension(_0x4521c6,_0x3d9ee6,'CDR(type)=inbound-fax','Set'));_0x3d9ee6+=0x1;for(var _0x29acd5 in _0x4521c6){if(_0x4521c6['hasOwnProperty'](_0x29acd5)&&(_0x29acd5===_0xf731('0x90')||_0x29acd5===_0xf731('0x8b')||_0x29acd5===_0xf731('0x91')||_0x29acd5===_0xf731('0x92')||_0x29acd5===_0xf731('0x93')||_0x29acd5===_0xf731('0x94')||_0x29acd5===_0xf731('0x95')||_0x29acd5===_0xf731('0x96')||_0x29acd5===_0xf731('0x97'))){_0x402601[_0xf731('0x98')](new Extension(_0x4521c6,_0x3d9ee6,_0xf731('0x99')+_0x29acd5+')='+_0x4521c6[_0x29acd5],_0xf731('0x9a')));_0x3d9ee6+=0x1;}}_0x402601[_0xf731('0x98')](new Extension(_0x4521c6,_0x3d9ee6,'6',_0xf731('0x9b')));_0x3d9ee6+=0x1;_0x402601[_0xf731('0x98')](new Extension(_0x4521c6,_0x3d9ee6,_0xf731('0x9c'),'ReceiveFax'));_0x3d9ee6=0x0;return _0x402601;}exports[_0xf731('0x9d')]=function(_0x3eada6,_0xf0a122,_0x117a67){var _0x1d76ad;return db[_0xf731('0x7c')]['transaction'](function(_0x59c671){return db[_0xf731('0x3d')][_0xf731('0x56')](_0x3eada6[_0xf731('0x5e')],{'transaction':_0x59c671})[_0xf731('0x1f')](function(_0x32e82c){_0x1d76ad=_0x32e82c[_0xf731('0x34')]({'plain':!![]});return db[_0xf731('0x9e')]['bulkCreate'](createExtensionsReciveFax(_0x1d76ad),{'transaction':_0x59c671});});})[_0xf731('0x1f')](function(){return _0x1d76ad;})['then'](respondWithResult(_0xf0a122,null))[_0xf731('0x50')](handleError(_0xf0a122,null));};exports[_0xf731('0x9f')]=function(_0xa75aa0,_0x240e14,_0x5cc159){var _0x5c5589;return db['sequelize'][_0xf731('0x7d')](function(_0x53e5ba){return db[_0xf731('0x3d')][_0xf731('0x33')](_0xa75aa0[_0xf731('0x5e')],{'where':{'id':_0xa75aa0[_0xf731('0x5e')]['id']},'transaction':_0x53e5ba})['then'](function(_0xeba9e){return db[_0xf731('0x9e')][_0xf731('0x36')]({'where':{'FaxAccountId':_0xa75aa0['body']['id']},'transaction':_0x53e5ba})[_0xf731('0x1f')](function(_0x2b2372){return db[_0xf731('0x9e')][_0xf731('0x81')](createExtensionsReciveFax(_['omit'](_0xa75aa0[_0xf731('0x5e')],[_0xf731('0xa0'),_0xf731('0xa1'),_0xf731('0xa2'),'updatedAt','TrunkId',_0xf731('0xa3')])),{'transaction':_0x53e5ba});});});})['then'](function(){return db[_0xf731('0x3d')][_0xf731('0xa4')](_0xa75aa0[_0xf731('0x5e')]['id']);})[_0xf731('0x1f')](respondWithResult(_0x240e14,null))[_0xf731('0x50')](handleError(_0x240e14,null));};exports['getMessages']=function(_0xf91b28,_0x562f7d,_0x41da81){var _0x30a3f8={'raw':!![],'where':{}};var _0x246166={};var _0x194969={'count':0x0,'rows':[]};return db[_0xf731('0x3d')][_0xf731('0x63')]({'where':{'id':_0xf91b28[_0xf731('0x52')]['id']}})[_0xf731('0x1f')](handleEntityNotFound(_0x562f7d,null))[_0xf731('0x1f')](function(_0x214e79){if(_0x214e79){_0x246166[_0xf731('0x40')]=_[_0xf731('0x42')](db[_0xf731('0xa5')][_0xf731('0x3e')]);_0x246166[_0xf731('0x41')]=_['keys'](_0xf91b28[_0xf731('0x41')]);_0x246166[_0xf731('0x43')]=_[_0xf731('0x44')](_0x246166[_0xf731('0x40')],_0x246166['query']);_0x30a3f8[_0xf731('0x46')]=_[_0xf731('0x44')](_0x246166[_0xf731('0x40')],qs['fields'](_0xf91b28[_0xf731('0x41')][_0xf731('0x45')]));_0x30a3f8['attributes']=_0x30a3f8['attributes'][_0xf731('0x53')]?_0x30a3f8[_0xf731('0x46')]:_0x246166[_0xf731('0x40')];if(!_0xf91b28['query'][_0xf731('0x64')](_0xf731('0x65'))){_0x30a3f8[_0xf731('0x2c')]=qs[_0xf731('0x2c')](_0xf91b28[_0xf731('0x41')]['limit']);_0x30a3f8[_0xf731('0x2b')]=qs[_0xf731('0x2b')](_0xf91b28['query']['offset']);}_0x30a3f8[_0xf731('0x47')]=qs['sort'](_0xf91b28[_0xf731('0x41')][_0xf731('0x66')]);_0x30a3f8[_0xf731('0x48')]=qs[_0xf731('0x43')](_['pick'](_0xf91b28['query'],_0x246166[_0xf731('0x43')]));_0x30a3f8['where']['FaxAccountId']=_0x214e79['id'];if(_0xf91b28[_0xf731('0x41')]['filter']){_0x30a3f8[_0xf731('0x48')]=_[_0xf731('0x4b')](_0x30a3f8[_0xf731('0x48')],{'$or':_['map'](_0x30a3f8[_0xf731('0x46')],function(_0x11ed35){var _0x5deecc={};_0x5deecc[_0x11ed35]={'$like':'%'+_0xf91b28['query'][_0xf731('0x4a')]+'%'};return _0x5deecc;})});}if(_0xf91b28['query'][_0xf731('0xa6')]){var _0x3ce080=_0xf91b28[_0xf731('0x41')]['$gte']['split'](',');var _0x2a6a99={};_0x2a6a99[_0x3ce080[0x0]]={'$gte':moment(_0x3ce080[0x1])[_0xf731('0xa7')]('YYYY-MM-DD\x20HH:mm:ss')};_0x30a3f8['where']=_['merge'](_0x30a3f8[_0xf731('0x48')],_0x2a6a99);}_0x30a3f8=_[_0xf731('0x4b')]({},_0x30a3f8,_0xf91b28[_0xf731('0x4d')]);return db['FaxMessage'][_0xf731('0x2e')]({'where':_0x30a3f8[_0xf731('0x48')]})[_0xf731('0x1f')](function(_0x51457a){_0x194969[_0xf731('0x2e')]=_0x51457a;if(_0xf91b28['query'][_0xf731('0x4e')]){_0x30a3f8[_0xf731('0x54')]=[{'all':!![]}];}return db['FaxMessage'][_0xf731('0x4f')](_0x30a3f8);})[_0xf731('0x1f')](function(_0x173532){_0x194969[_0xf731('0x68')]=_0x173532;return _0x194969;});}})[_0xf731('0x1f')](respondWithFilteredResult(_0x562f7d,_0x30a3f8))[_0xf731('0x50')](handleError(_0x562f7d,null));};exports[_0xf731('0x85')]=function(_0x406c30,_0x27ddf4,_0x26aec6){var _0x32c668,_0x1c5954={},_0x3dfb07;if(_0x406c30[_0xf731('0x5e')]['to']){_0x3dfb07=_0x406c30[_0xf731('0x5e')]['to'][0x0];}return db[_0xf731('0x3d')][_0xf731('0x55')]({'where':{'id':_0x406c30['params']['id']},'include':[{'model':db[_0xf731('0xa8')],'as':_0xf731('0xa9'),'include':[{'model':db[_0xf731('0x71')],'as':_0xf731('0xaa'),'where':{'fax':_0x3dfb07},'limit':0x1,'order':[[_0xf731('0xab'),_0xf731('0xac')]]}]}]})['then'](handleEntityNotFound(_0x27ddf4,null))[_0xf731('0x1f')](function(_0x4863aa){_0x32c668=_0x4863aa;if(_0x406c30[_0xf731('0x5e')]['attachments']&&_0x406c30[_0xf731('0x5e')][_0xf731('0xad')]['length']){for(var _0x425809=0x0;_0x425809<_0x406c30[_0xf731('0x5e')][_0xf731('0xad')][_0xf731('0x53')];_0x425809+=0x1){_0x406c30[_0xf731('0x5e')]['attachments'][_0x425809]={'filename':_0x406c30[_0xf731('0x5e')]['attachments'][_0x425809][_0xf731('0x38')],'id':_0x406c30[_0xf731('0x5e')][_0xf731('0xad')][_0x425809]['id'],'path':path['join'](config['root'],'server/files/attachments',_0x406c30[_0xf731('0x5e')][_0xf731('0xad')][_0x425809]['basename'])};}}return respondWithRpcPromise(_0xf731('0xae'),_0xf731('0xae'),{'FaxAccountId':_[_0xf731('0xaf')](_0x406c30[_0xf731('0x52')]['id'])?undefined:_0x406c30['params']['id'],'path':_[_0xf731('0xaf')](_0x406c30[_0xf731('0x5e')][_0xf731('0xad')][0x0][_0xf731('0xb0')])?undefined:_0x406c30[_0xf731('0x5e')][_0xf731('0xad')][0x0][_0xf731('0xb0')],'fax':_[_0xf731('0xaf')](_0x406c30[_0xf731('0x5e')]['to'][0x0])?undefined:_0x406c30[_0xf731('0x5e')]['to'][0x0]},client9002);})[_0xf731('0x1f')](function(){if(_0x32c668){if(_[_0xf731('0xaf')](_0x406c30[_0xf731('0x5e')][_0xf731('0xb1')])){_0x406c30[_0xf731('0x5e')][_0xf731('0xb1')]=util['format'](_0xf731('0xb2'),_0x32c668[_0xf731('0x38')],_0x32c668[_0xf731('0xb3')]);}if(_0x32c668[_0xf731('0xa9')]){if(_0x32c668[_0xf731('0xa9')][_0xf731('0xaa')][_0xf731('0x53')]){return _0x32c668[_0xf731('0xa9')]['Contacts'][0x0];}else{return db[_0xf731('0x71')][_0xf731('0x56')](_[_0xf731('0x18')](_0x406c30[_0xf731('0x5e')],{'firstName':_0x406c30[_0xf731('0x5e')]['to'][0x0],'phone':_0x406c30[_0xf731('0x5e')]['to'][0x0],'fax':_0x406c30[_0xf731('0x5e')]['to'][0x0],'ListId':_0x32c668[_0xf731('0xa3')]}));}}else{throw new Error('List\x20not\x20found');}}else{throw new Error(_0xf731('0xb4'));}})[_0xf731('0x1f')](function(_0x47b053){if(_0x47b053){return db[_0xf731('0x6e')][_0xf731('0x55')]({'where':{'ContactId':_0x47b053['id'],'closed':![],'FaxAccountId':_0x32c668['id']}})[_0xf731('0x1f')](function(_0x4fb0ab){if(_0x4fb0ab){return[_0x4fb0ab,![]];}return db[_0xf731('0x6e')]['create']({'UserId':_0x406c30[_0xf731('0x57')]['id'],'ContactId':_0x47b053['id'],'FaxAccountId':_0x32c668['id'],'fax':_0x406c30[_0xf731('0x5e')]['to'][0x0],'firstMsgDirection':_0xf731('0xb5'),'Messages':[_['merge'](_0x406c30[_0xf731('0x5e')],{'read':![],'body':_0x406c30['body'][_0xf731('0xad')][0x0][_0xf731('0xb6')],'FaxAccountId':_0x32c668['id'],'UserId':_0x406c30[_0xf731('0x57')]['id'],'ContactId':_0x47b053['id'],'AttachmentId':_0x406c30[_0xf731('0x5e')][_0xf731('0xad')][0x0]['id']})]},{'include':[{'model':db[_0xf731('0xa5')],'as':'Messages'}]})['then'](function(_0x375f8c){return[_0x375f8c,!![]];});});}else{throw new Error(_0xf731('0xb7'));}})[_0xf731('0xb8')](function(_0xf5bda,_0x3761f4){if(_0x3761f4){return _0xf5bda;}return db['FaxMessage'][_0xf731('0x56')]({'direction':'out','read':![],'body':_0x406c30[_0xf731('0x5e')][_0xf731('0xad')][0x0]['filename'],'FaxAccountId':_0x32c668['id'],'FaxInteractionId':_0xf5bda['id'],'UserId':_0x406c30[_0xf731('0x57')]['id'],'ContactId':_0xf5bda[_0xf731('0xb9')],'AttachmentId':_0x406c30[_0xf731('0x5e')][_0xf731('0xad')][0x0]['id']})['then'](function(_0x4d26fe){_0xf5bda[_0xf731('0xba')][_0xf731('0xbb')]=[];_0xf5bda[_0xf731('0xba')][_0xf731('0xbb')][_0xf731('0x98')](_0x4d26fe[_0xf731('0xba')]);return _0xf5bda;});})[_0xf731('0x1f')](function(_0x4b217d){respondWithRpcPromise(_0xf731('0xbc'),_0xf731('0xbc'),{'FaxAccountId':_['isNil'](_0x406c30['params']['id'])?undefined:_0x406c30[_0xf731('0x52')]['id'],'path':_['isNil'](_0x406c30[_0xf731('0x5e')]['attachments'][0x0]['path'])?undefined:_0x406c30[_0xf731('0x5e')][_0xf731('0xad')][0x0][_0xf731('0xb0')],'fax':_[_0xf731('0xaf')](_0x406c30[_0xf731('0x5e')]['to'][0x0])?undefined:_0x406c30[_0xf731('0x5e')]['to'][0x0],'AttachmentId':_0x406c30[_0xf731('0x5e')][_0xf731('0xad')][0x0]['id']},client9002)[_0xf731('0x1f')](function(_0x34ba95){logger[_0xf731('0x20')]('SendFaxRpc,\x20%s',_0x34ba95);})['catch'](function(_0x4bfe89){logger[_0xf731('0x20')](_0xf731('0xbd'),_0x4bfe89);});return _0x4b217d;})[_0xf731('0x1f')](respondWithResult(_0x27ddf4,null))[_0xf731('0x50')](handleError(_0x27ddf4,null));};exports[_0xf731('0xbe')]=function(_0x3af1b9,_0x464a56,_0x4a9bea){return db[_0xf731('0x3d')]['find']({'where':{'id':_0x3af1b9[_0xf731('0x52')]['id']}})[_0xf731('0x1f')](handleEntityNotFound(_0x464a56,null))[_0xf731('0x1f')](function(_0x516af1){if(_0x516af1){return _0x516af1[_0xf731('0xbe')](_0x3af1b9[_0xf731('0x5e')]['ids'],_[_0xf731('0x6f')](_0x3af1b9[_0xf731('0x5e')],['ids','id'])||{})['spread'](function(_0x1ad869){for(var _0x3f1d31=0x0;_0x3f1d31<_0x3af1b9['body'][_0xf731('0x6a')][_0xf731('0x53')];_0x3f1d31+=0x1){socket['emit']('userFaxAccount:save',{'UserId':Number(_0x3af1b9[_0xf731('0x5e')][_0xf731('0x6a')][_0x3f1d31]),'FaxAccountId':Number(_0x3af1b9[_0xf731('0x52')]['id'])});}return _0x1ad869;});}})['then'](respondWithResult(_0x464a56,null))[_0xf731('0x50')](handleError(_0x464a56,null));};exports[_0xf731('0xbf')]=function(_0x4d3d06,_0x16257f,_0x37dff){return db[_0xf731('0x3d')][_0xf731('0x55')]({'where':{'id':_0x4d3d06['params']['id']}})[_0xf731('0x1f')](handleEntityNotFound(_0x16257f,null))[_0xf731('0x1f')](function(_0x2ebfba){if(_0x2ebfba){return _0x2ebfba[_0xf731('0xbf')](_0x4d3d06[_0xf731('0x41')][_0xf731('0x6a')])[_0xf731('0x1f')](function(){if(_[_0xf731('0xc0')](_0x4d3d06[_0xf731('0x41')]['ids'])){for(var _0x242b31=0x0;_0x242b31<_0x4d3d06[_0xf731('0x41')][_0xf731('0x6a')]['length'];_0x242b31+=0x1){socket[_0xf731('0xc1')](_0xf731('0xc2'),{'UserId':Number(_0x4d3d06[_0xf731('0x41')][_0xf731('0x6a')][_0x242b31]),'FaxAccountId':Number(_0x4d3d06[_0xf731('0x52')]['id'])});}}else{socket[_0xf731('0xc1')](_0xf731('0xc2'),{'UserId':Number(_0x4d3d06[_0xf731('0x41')][_0xf731('0x6a')]),'FaxAccountId':Number(_0x4d3d06['params']['id'])});}});}})[_0xf731('0x1f')](respondWithStatusCode(_0x16257f,null))[_0xf731('0x50')](handleError(_0x16257f,null));};exports['getAgents']=function(_0xc8d98d,_0x8e52e4,_0x376368){var _0x23a43b={};var _0x2d0310={};var _0x170b1a;var _0x407add;return db[_0xf731('0x3d')][_0xf731('0x63')]({'where':{'id':_0xc8d98d[_0xf731('0x52')]['id']}})[_0xf731('0x1f')](handleEntityNotFound(_0x8e52e4,null))[_0xf731('0x1f')](function(_0xc49f59){if(_0xc49f59){_0x170b1a=_0xc49f59;_0x2d0310[_0xf731('0x40')]=_['keys'](db[_0xf731('0x73')][_0xf731('0x3e')]);_0x2d0310[_0xf731('0x41')]=_[_0xf731('0x42')](_0xc8d98d['query']);_0x2d0310[_0xf731('0x43')]=_[_0xf731('0x44')](_0x2d0310['model'],_0x2d0310[_0xf731('0x41')]);_0x23a43b['attributes']=_[_0xf731('0x44')](_0x2d0310[_0xf731('0x40')],qs[_0xf731('0x45')](_0xc8d98d[_0xf731('0x41')]['fields']));_0x23a43b[_0xf731('0x46')]=_0x23a43b[_0xf731('0x46')]['length']?_0x23a43b[_0xf731('0x46')]:_0x2d0310[_0xf731('0x40')];_0x23a43b[_0xf731('0x47')]=qs[_0xf731('0x66')](_0xc8d98d[_0xf731('0x41')]['sort']);_0x23a43b[_0xf731('0x48')]=qs[_0xf731('0x43')](_['pick'](_0xc8d98d[_0xf731('0x41')],_0x2d0310[_0xf731('0x43')]));if(_0xc8d98d['query']['filter']){_0x23a43b[_0xf731('0x48')]=_[_0xf731('0x4b')](_0x23a43b[_0xf731('0x48')],{'$or':_['map'](_0x23a43b[_0xf731('0x46')],function(_0x191722){var _0x48ae08={};_0x48ae08[_0x191722]={'$like':'%'+_0xc8d98d[_0xf731('0x41')][_0xf731('0x4a')]+'%'};return _0x48ae08;})});}_0x23a43b=_[_0xf731('0x4b')]({},_0x23a43b,_0xc8d98d['options']);return _0x170b1a[_0xf731('0xc3')](_0x23a43b);}})[_0xf731('0x1f')](function(_0x1c7913){if(_0x1c7913){_0x407add=_0x1c7913[_0xf731('0x53')];if(!_0xc8d98d['query'][_0xf731('0x64')](_0xf731('0x65'))){_0x23a43b[_0xf731('0x2c')]=qs[_0xf731('0x2c')](_0xc8d98d[_0xf731('0x41')][_0xf731('0x2c')]);_0x23a43b[_0xf731('0x2b')]=qs[_0xf731('0x2b')](_0xc8d98d[_0xf731('0x41')][_0xf731('0x2b')]);}return _0x170b1a[_0xf731('0xc3')](_0x23a43b);}})[_0xf731('0x1f')](function(_0x38098b){if(_0x38098b){return _0x38098b?{'count':_0x407add,'rows':_0x38098b}:null;}})[_0xf731('0x1f')](respondWithResult(_0x8e52e4,null))[_0xf731('0x50')](handleError(_0x8e52e4,null));};
\ No newline at end of file
index b8e1253..4048e1a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0x257c=['../../mysqldb','FaxAccount','setMaxListeners','save','update','remove','hasOwnProperty'];(function(_0x33852e,_0x52b361){var _0x43238b=function(_0x204af2){while(--_0x204af2){_0x33852e['push'](_0x33852e['shift']());}};_0x43238b(++_0x52b361);}(_0x257c,0x111));var _0xc257=function(_0x4abab9,_0xde21a4){_0x4abab9=_0x4abab9-0x0;var _0x374eba=_0x257c[_0x4abab9];return _0x374eba;};'use strict';var EventEmitter=require('events');var FaxAccount=require(_0xc257('0x0'))['db'][_0xc257('0x1')];var FaxAccountEvents=new EventEmitter();FaxAccountEvents[_0xc257('0x2')](0x0);var events={'afterCreate':_0xc257('0x3'),'afterUpdate':_0xc257('0x4'),'afterDestroy':_0xc257('0x5')};function emitEvent(_0x1b332b){return function(_0x4fb1e6,_0x907665,_0x543f17){FaxAccountEvents['emit'](_0x1b332b+':'+_0x4fb1e6['id'],_0x4fb1e6);FaxAccountEvents['emit'](_0x1b332b,_0x4fb1e6);_0x543f17(null);};}for(var e in events){if(events[_0xc257('0x6')](e)){var event=events[e];FaxAccount['hook'](e,emitEvent(event));}}module['exports']=FaxAccountEvents;
\ No newline at end of file
index 1cf7daa..55e6244 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0xd345=['exports','FaxAccount','fax_accounts','lodash','util','api','moment','bluebird','path','rimraf','../../config/environment','./faxAccount.attributes'];(function(_0x49bb91,_0x86ecf3){var _0x2b4339=function(_0x4fb062){while(--_0x4fb062){_0x49bb91['push'](_0x49bb91['shift']());}};_0x2b4339(++_0x86ecf3);}(_0xd345,0xe7));var _0x5d34=function(_0x122a83,_0x3c5285){_0x122a83=_0x122a83-0x0;var _0x4a35bd=_0xd345[_0x122a83];return _0x4a35bd;};'use strict';var _=require(_0x5d34('0x0'));var util=require(_0x5d34('0x1'));var logger=require('../../config/logger')(_0x5d34('0x2'));var moment=require(_0x5d34('0x3'));var BPromise=require(_0x5d34('0x4'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x5d34('0x5'));var rimraf=require(_0x5d34('0x6'));var config=require(_0x5d34('0x7'));var attributes=require(_0x5d34('0x8'));module[_0x5d34('0x9')]=function(_0x2ac4d7,_0x31533d){return _0x2ac4d7['define'](_0x5d34('0xa'),attributes,{'tableName':_0x5d34('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 71c8440..2f88332 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0x4a00=['catch','FaxAccount','findAll','options','raw','where','attributes','limit','include','map','model','GetFaxAccount','body','fax','CmContact','describe','Sequelize','ValidationError','no\x20available\x20attributes','difference','keys','createdAt','updatedAt','CompanyId','ListId','from','body\x20is\x20mandatory\x20and\x20not\x20empty','isNil','mapKey\x20is\x20mandatory,\x20please\x20use\x20one\x20of\x20these:\x20','includes','mapKey','mapKey\x20invalid,\x20please\x20use\x20one\x20of\x20these:\x20','account','CmList','List','Contacts','DESC','get','applications','Applications','list','orderBy','priority','length','create','FaxInteraction','find','Contact\x20not\x20found','spread','close','unmanaged','created','interaction','FaxMessage','AttachmentId','UserId','unshift','agent','name','waitForTheAssignedAgent','*,*,*,*','Start','startRouting','lodash','util','bluebird','randomstring','../../mysqldb','../../config/utils','../../config/logger','../../config/environment','jayson/promise','client','http','defaults','redis','localhost','socket.io-emitter','./faxAccount.socket','register','then','info','FaxAccount,\x20%s,\x20%s','request\x20sent','debug','stringify','error','message','result'];(function(_0xbc1a05,_0x5a7589){var _0x30405a=function(_0x59518b){while(--_0x59518b){_0xbc1a05['push'](_0xbc1a05['shift']());}};_0x30405a(++_0x5a7589);}(_0x4a00,0x1a3));var _0x04a0=function(_0x3ab51d,_0x2fa01d){_0x3ab51d=_0x3ab51d-0x0;var _0x29a04e=_0x4a00[_0x3ab51d];return _0x29a04e;};'use strict';var _=require(_0x04a0('0x0'));var util=require(_0x04a0('0x1'));var moment=require('moment');var BPromise=require(_0x04a0('0x2'));var rs=require(_0x04a0('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x04a0('0x4'))['db'];var utils=require(_0x04a0('0x5'));var logger=require(_0x04a0('0x6'))('rpc');var config=require(_0x04a0('0x7'));var jayson=require(_0x04a0('0x8'));var client=jayson[_0x04a0('0x9')][_0x04a0('0xa')]({'port':0x232c});config['redis']=_[_0x04a0('0xb')](config[_0x04a0('0xc')],{'host':_0x04a0('0xd'),'port':0x18eb});var socket=require(_0x04a0('0xe'))(new Redis(config[_0x04a0('0xc')]));require(_0x04a0('0xf'))[_0x04a0('0x10')](socket);function respondWithRpcPromise(_0x3c4957,_0x31b5ef,_0x2dde70){return new BPromise(function(_0x302242,_0xd7d643){return client['request'](_0x3c4957,_0x2dde70)[_0x04a0('0x11')](function(_0x465086){logger[_0x04a0('0x12')](_0x04a0('0x13'),_0x31b5ef,_0x04a0('0x14'));logger[_0x04a0('0x15')]('FaxAccount,\x20%s,\x20%s,\x20%s',_0x31b5ef,'request\x20sent',JSON[_0x04a0('0x16')](_0x465086));if(_0x465086[_0x04a0('0x17')]){if(_0x465086[_0x04a0('0x17')]['code']===0x1f4){logger['error'](_0x04a0('0x13'),_0x31b5ef,_0x465086[_0x04a0('0x17')][_0x04a0('0x18')]);return _0xd7d643(_0x465086[_0x04a0('0x17')][_0x04a0('0x18')]);}logger['error'](_0x04a0('0x13'),_0x31b5ef,_0x465086[_0x04a0('0x17')]['message']);return _0x302242(_0x465086[_0x04a0('0x17')][_0x04a0('0x18')]);}else{logger[_0x04a0('0x12')](_0x04a0('0x13'),_0x31b5ef,'request\x20sent');_0x302242(_0x465086[_0x04a0('0x19')][_0x04a0('0x18')]);}})[_0x04a0('0x1a')](function(_0x23a5de){logger['error'](_0x04a0('0x13'),_0x31b5ef,_0x23a5de);_0xd7d643(_0x23a5de);});});}exports['GetFaxAccount']=function(_0x4cc3d6){var _0x339072=this;return new Promise(function(_0x322bce,_0x179c63){return db[_0x04a0('0x1b')][_0x04a0('0x1c')]({'raw':_0x4cc3d6[_0x04a0('0x1d')]?_0x4cc3d6[_0x04a0('0x1d')][_0x04a0('0x1e')]===undefined?!![]:![]:!![],'where':_0x4cc3d6[_0x04a0('0x1d')]?_0x4cc3d6[_0x04a0('0x1d')][_0x04a0('0x1f')]||null:null,'attributes':_0x4cc3d6[_0x04a0('0x1d')]?_0x4cc3d6['options'][_0x04a0('0x20')]||null:null,'limit':_0x4cc3d6['options']?_0x4cc3d6[_0x04a0('0x1d')][_0x04a0('0x21')]||null:null,'include':_0x4cc3d6[_0x04a0('0x1d')]?_0x4cc3d6[_0x04a0('0x1d')][_0x04a0('0x22')]?_[_0x04a0('0x23')](_0x4cc3d6[_0x04a0('0x1d')][_0x04a0('0x22')],function(_0x385998){return{'model':db[_0x385998[_0x04a0('0x24')]],'as':_0x385998['as'],'attributes':_0x385998[_0x04a0('0x20')],'include':_0x385998[_0x04a0('0x22')]?_['map'](_0x385998[_0x04a0('0x22')],function(_0x41f891){return{'model':db[_0x41f891[_0x04a0('0x24')]],'as':_0x41f891['as'],'attributes':_0x41f891[_0x04a0('0x20')],'include':_0x41f891[_0x04a0('0x22')]?_[_0x04a0('0x23')](_0x41f891[_0x04a0('0x22')],function(_0x302b63){return{'model':db[_0x302b63['model']],'as':_0x302b63['as'],'attributes':_0x302b63['attributes']};}):[]};}):[]};}):[]:[]})['then'](function(_0x8a6889){logger[_0x04a0('0x12')](_0x04a0('0x25'),_0x4cc3d6);logger[_0x04a0('0x15')](_0x04a0('0x25'),_0x4cc3d6,JSON[_0x04a0('0x16')](_0x8a6889));_0x322bce(_0x8a6889);})[_0x04a0('0x1a')](function(_0x571b36){logger['error'](_0x04a0('0x25'),_0x571b36[_0x04a0('0x18')],_0x4cc3d6);_0x179c63(_0x339072[_0x04a0('0x17')](0x1f4,_0x571b36['message']));});});};exports['NotifyFaxAccount']=function(_0x522d92,_0x344ef2,_0x41e9b5){var _0x2d14bb=this;return new Promise(function(_0x124a5a,_0x11e0f4){var _0x110434={'body':_0x522d92[_0x04a0('0x26')],'channel':_0x04a0('0x27')};var _0x481b6e=[];var _0x269777=[];var _0x3222bb={};return db[_0x04a0('0x28')][_0x04a0('0x29')]()[_0x04a0('0x11')](function(_0x20ec87){if(!_0x20ec87){throw new db[(_0x04a0('0x2a'))][(_0x04a0('0x2b'))](_0x04a0('0x2c'));}_0x481b6e=_[_0x04a0('0x2d')](_[_0x04a0('0x2e')](_0x20ec87),[_0x04a0('0x2f'),_0x04a0('0x30')]);_0x269777=_['difference'](_[_0x04a0('0x2e')](_0x20ec87),['createdAt',_0x04a0('0x30'),_0x04a0('0x31'),_0x04a0('0x32')]);if(_0x522d92[_0x04a0('0x26')]['id']){delete _0x522d92[_0x04a0('0x26')]['id'];}if(_['isNil'](_0x522d92['body'][_0x04a0('0x33')])){throw new db[(_0x04a0('0x2a'))][(_0x04a0('0x2b'))]('from\x20is\x20mandatory');}if(_['isNil'](_0x522d92[_0x04a0('0x26')][_0x04a0('0x26')])||_0x522d92[_0x04a0('0x26')][_0x04a0('0x26')]===''){throw new db[(_0x04a0('0x2a'))][(_0x04a0('0x2b'))](_0x04a0('0x34'));}if(_[_0x04a0('0x35')](_0x522d92[_0x04a0('0x26')]['mapKey'])){throw new db[(_0x04a0('0x2a'))][(_0x04a0('0x2b'))](_0x04a0('0x36')+_0x269777);}if(!_[_0x04a0('0x37')](_0x269777,_0x522d92['body'][_0x04a0('0x38')])){throw new db[(_0x04a0('0x2a'))][(_0x04a0('0x2b'))](_0x04a0('0x39')+_0x269777);}_0x3222bb[_0x522d92[_0x04a0('0x26')]['mapKey']]=_0x522d92[_0x04a0('0x26')][_0x04a0('0x33')];})[_0x04a0('0x11')](function(){return db[_0x04a0('0x1b')]['find']({'where':{'id':_0x522d92[_0x04a0('0x3a')]['id']},'include':[{'model':db[_0x04a0('0x3b')],'as':_0x04a0('0x3c'),'include':[{'model':db[_0x04a0('0x28')],'as':_0x04a0('0x3d'),'where':_0x3222bb,'limit':0x1,'order':[[_0x04a0('0x30'),_0x04a0('0x3e')]]}]},{'model':db['FaxApplication'],'as':'Applications'}]});})['then'](function(_0xb11a5d){if(_0xb11a5d&&_0xb11a5d[_0x04a0('0x3c')]){var _0x549bae=_0xb11a5d[_0x04a0('0x3f')]({'plain':!![]});_0x110434[_0x04a0('0x3a')]=_0x549bae;_0x110434[_0x04a0('0x40')]=_0x549bae[_0x04a0('0x41')];_0x110434[_0x04a0('0x42')]=_0x549bae[_0x04a0('0x3c')];_0x110434[_0x04a0('0x40')]=_[_0x04a0('0x43')](_0x110434[_0x04a0('0x40')],[_0x04a0('0x44')],['asc']);if(_0x110434[_0x04a0('0x3a')][_0x04a0('0x41')]){delete _0x110434[_0x04a0('0x3a')]['Applications'];}if(_0x110434[_0x04a0('0x3a')][_0x04a0('0x3c')]&&_0x110434[_0x04a0('0x3a')]['List']['Contacts'][_0x04a0('0x45')]){return _0x110434[_0x04a0('0x3a')][_0x04a0('0x3c')][_0x04a0('0x3d')][0x0];}var _0x61f63b=_[_0x04a0('0xb')](_0x522d92['body'],{'firstName':_0x522d92[_0x04a0('0x26')][_0x04a0('0x33')],'ListId':_0x549bae['ListId']});_0x61f63b[_0x522d92[_0x04a0('0x26')]['mapKey']]=_0x522d92['body'][_0x04a0('0x33')];return db[_0x04a0('0x28')][_0x04a0('0x46')](_0x61f63b,{'fields':_0x481b6e,'raw':!![]});}})[_0x04a0('0x11')](function(_0x186df3){_0x110434['contact']=_0x186df3;if(_0x186df3){var _0x1c9590={'ContactId':_0x186df3['id'],'FaxAccountId':_0x522d92[_0x04a0('0x3a')]['id'],'fax':_0x186df3['fax']};return db[_0x04a0('0x47')][_0x04a0('0x48')]({'where':{'ContactId':_0x186df3['id'],'closed':![],'FaxAccountId':_0x522d92[_0x04a0('0x3a')]['id']}})['then'](function(_0x3e3cf4){if(_0x3e3cf4){return[_0x3e3cf4,![]];}return db[_0x04a0('0x47')][_0x04a0('0x46')](_0x1c9590)[_0x04a0('0x11')](function(_0x11069a){return[_0x11069a,!![]];});});}else{throw new Error(_0x04a0('0x49'));}})[_0x04a0('0x4a')](function(_0x40e1e9,_0x1223f6){var _0x4d8f8a=_0x40e1e9[_0x04a0('0x3f')]({'plain':!![]});if(_0x1223f6){if(_0x110434[_0x04a0('0x3a')]['autoclose']){_0x110434['applications']['push']({'id':0x0,'priority':_0x110434[_0x04a0('0x40')][_0x04a0('0x45')]+0x1,'app':_0x04a0('0x4b'),'appdata':_0x04a0('0x4c'),'interval':'*,*,*,*'});}_0x4d8f8a[_0x04a0('0x4d')]=!![];}else{_0x4d8f8a[_0x04a0('0x4d')]=![];}_0x110434[_0x04a0('0x4e')]=_0x4d8f8a;return db[_0x04a0('0x4f')]['create']({'body':_0x522d92[_0x04a0('0x26')][_0x04a0('0x26')],'FaxAccountId':_0x522d92[_0x04a0('0x3a')]['id'],'FaxInteractionId':_0x40e1e9['id'],'direction':'in','ContactId':_0x40e1e9['ContactId'],'AttachmentId':_0x522d92[_0x04a0('0x26')][_0x04a0('0x50')]});})[_0x04a0('0x11')](function(_0x4f046d){_0x110434['message']=_0x4f046d;if(_0x110434['interaction'][_0x04a0('0x51')]){return db['User'][_0x04a0('0x48')]({'attributes':['id','name'],'where':{'id':_0x110434[_0x04a0('0x4e')][_0x04a0('0x51')]}})[_0x04a0('0x11')](function(_0x4cf4f3){if(_0x4cf4f3){_0x110434['applications'][_0x04a0('0x52')]({'id':0x0,'priority':0x0,'app':_0x04a0('0x53'),'appdata':_0x4cf4f3[_0x04a0('0x54')]+','+(_0x110434[_0x04a0('0x3a')][_0x04a0('0x55')]||0xa),'interval':_0x04a0('0x56')});}return respondWithRpcPromise(_0x04a0('0x57'),_0x04a0('0x58'),_0x110434);});}return respondWithRpcPromise(_0x04a0('0x57'),_0x04a0('0x58'),_0x110434);})[_0x04a0('0x11')](function(_0x108e6c){_0x124a5a(_0x108e6c);})[_0x04a0('0x1a')](function(_0x170c35){_0x11e0f4(_0x2d14bb[_0x04a0('0x17')](0x1f4,_0x170c35[_0x04a0('0x18')]));});});};
\ No newline at end of file
index 71f147e..50348c1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0x2984=['./faxAccount.events','save','remove','update','emit','removeListener','register','length','faxAccount:'];(function(_0x30c649,_0x2ebbac){var _0x3edfb9=function(_0xab82f5){while(--_0xab82f5){_0x30c649['push'](_0x30c649['shift']());}};_0x3edfb9(++_0x2ebbac);}(_0x2984,0x18c));var _0x4298=function(_0x2ef16b,_0x4b612a){_0x2ef16b=_0x2ef16b-0x0;var _0x53a7eb=_0x2984[_0x2ef16b];return _0x53a7eb;};'use strict';var FaxAccountEvents=require(_0x4298('0x0'));var events=[_0x4298('0x1'),_0x4298('0x2'),_0x4298('0x3')];function createListener(_0x20dfc0,_0x5e7f31){return function(_0x401310){_0x5e7f31[_0x4298('0x4')](_0x20dfc0,_0x401310);};}function removeListener(_0xacc65,_0x571e42){return function(){FaxAccountEvents[_0x4298('0x5')](_0xacc65,_0x571e42);};}exports[_0x4298('0x6')]=function(_0x24602f){for(var _0x3eadd0=0x0,_0x3cfcc4=events[_0x4298('0x7')];_0x3eadd0<_0x3cfcc4;_0x3eadd0++){var _0x41f8d9=events[_0x3eadd0];var _0x426bb9=createListener(_0x4298('0x8')+_0x41f8d9,_0x24602f);FaxAccountEvents['on'](_0x41f8d9,_0x426bb9);}};
\ No newline at end of file
index 200a4b8..7255a90 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(_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
+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(_0x4984e3,_0x5a7079){var _0x339196=function(_0x5e633d){while(--_0x5e633d){_0x4984e3['push'](_0x4984e3['shift']());}};_0x339196(++_0x5a7079);}(_0xa9e0,0x123));var _0x0a9e=function(_0x3947c9,_0x4d6c97){_0x3947c9=_0x3947c9-0x0;var _0x2e7871=_0xa9e0[_0x3947c9];return _0x2e7871;};'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 b505854..a927afc 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0xac49=['sequelize','INTEGER','STRING','noop','*,*,*,*'];(function(_0x592193,_0x7025c7){var _0x2a5bcd=function(_0x267c80){while(--_0x267c80){_0x592193['push'](_0x592193['shift']());}};_0x2a5bcd(++_0x7025c7);}(_0xac49,0xd7));var _0x9ac4=function(_0x3d0b6c,_0xcc48a0){_0x3d0b6c=_0x3d0b6c-0x0;var _0x1c83bb=_0xac49[_0x3d0b6c];return _0x1c83bb;};'use strict';var Sequelize=require(_0x9ac4('0x0'));module['exports']={'priority':{'type':Sequelize[_0x9ac4('0x1')],'allowNull':![]},'app':{'type':Sequelize[_0x9ac4('0x2')],'allowNull':![],'defaultValue':_0x9ac4('0x3')},'appdata':{'type':Sequelize['TEXT']()},'description':{'type':Sequelize[_0x9ac4('0x2')]},'interval':{'type':Sequelize[_0x9ac4('0x2')],'defaultValue':_0x9ac4('0x4')}};
\ No newline at end of file
index 8aaf26a..30de348 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0x0a44=['then','destroy','error','stack','name','status','send','index','map','FaxApplication','rawAttributes','fieldName','type','key','model','query','keys','filters','intersection','attributes','fields','length','hasOwnProperty','order','sort','where','filter','options','includeAll','include','findAll','catch','show','params','merge','find','create','body','update','eml-format','zip-dir','fast-json-patch','moment','mustache','util','sox','to-csv','ejs','fs-extra','lodash','crypto','papaparse','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','end','json','offset','undefined','count','limit','set','Content-Range','reject','save'];(function(_0x1f5b3,_0x26f134){var _0x3b68ac=function(_0x4c1798){while(--_0x4c1798){_0x1f5b3['push'](_0x1f5b3['shift']());}};_0x3b68ac(++_0x26f134);}(_0x0a44,0x1dd));var _0x40a4=function(_0x453271,_0x170f7c){_0x453271=_0x453271-0x0;var _0x41bf2b=_0x0a44[_0x453271];return _0x41bf2b;};'use strict';var emlformat=require(_0x40a4('0x0'));var rimraf=require('rimraf');var zipdir=require(_0x40a4('0x1'));var jsonpatch=require(_0x40a4('0x2'));var rp=require('request-promise');var moment=require(_0x40a4('0x3'));var BPromise=require('bluebird');var Mustache=require(_0x40a4('0x4'));var util=require(_0x40a4('0x5'));var path=require('path');var sox=require(_0x40a4('0x6'));var csv=require(_0x40a4('0x7'));var ejs=require(_0x40a4('0x8'));var fs=require('fs');var fs_extra=require(_0x40a4('0x9'));var _=require(_0x40a4('0xa'));var squel=require('squel');var crypto=require(_0x40a4('0xb'));var jsforce=require('jsforce');var deskjs=require('desk.js');var toCsv=require(_0x40a4('0x7'));var querystring=require('querystring');var Papa=require(_0x40a4('0xc'));var Redis=require(_0x40a4('0xd'));var authService=require(_0x40a4('0xe'));var qs=require('../../components/parsers/qs');var as=require(_0x40a4('0xf'));var hardwareService=require(_0x40a4('0x10'));var logger=require(_0x40a4('0x11'))(_0x40a4('0x12'));var utils=require(_0x40a4('0x13'));var config=require(_0x40a4('0x14'));var licenseUtil=require(_0x40a4('0x15'));var db=require(_0x40a4('0x16'))['db'];function respondWithStatusCode(_0x2a1212,_0xfc7c65){_0xfc7c65=_0xfc7c65||0xcc;return function(_0x1e01dd){if(_0x1e01dd){return _0x2a1212[_0x40a4('0x17')](_0xfc7c65);}return _0x2a1212['status'](_0xfc7c65)[_0x40a4('0x18')]();};}function respondWithResult(_0x272ed0,_0xe95d11){_0xe95d11=_0xe95d11||0xc8;return function(_0x232023){if(_0x232023){return _0x272ed0['status'](_0xe95d11)[_0x40a4('0x19')](_0x232023);}};}function respondWithFilteredResult(_0x510dd6,_0x1f3312){return function(_0x5e0f89){if(_0x5e0f89){var _0x47a9f2=typeof _0x1f3312[_0x40a4('0x1a')]===_0x40a4('0x1b')&&typeof _0x1f3312['limit']===_0x40a4('0x1b');var _0x4cca34=_0x5e0f89[_0x40a4('0x1c')];var _0x49df4e=_0x47a9f2?0x0:_0x1f3312[_0x40a4('0x1a')];var _0x96ba17=_0x47a9f2?_0x5e0f89['count']:_0x1f3312[_0x40a4('0x1a')]+_0x1f3312[_0x40a4('0x1d')];var _0x31dbd7;if(_0x96ba17>=_0x4cca34){_0x96ba17=_0x4cca34;_0x31dbd7=0xc8;}else{_0x31dbd7=0xce;}_0x510dd6['status'](_0x31dbd7);return _0x510dd6[_0x40a4('0x1e')](_0x40a4('0x1f'),_0x49df4e+'-'+_0x96ba17+'/'+_0x4cca34)[_0x40a4('0x19')](_0x5e0f89);}return null;};}function patchUpdates(_0x29759c){return function(_0x1bbaf0){try{jsonpatch['apply'](_0x1bbaf0,_0x29759c,!![]);}catch(_0x5324c5){return BPromise[_0x40a4('0x20')](_0x5324c5);}return _0x1bbaf0[_0x40a4('0x21')]();};}function saveUpdates(_0x240a64,_0x353af5){return function(_0x1737ce){if(_0x1737ce){return _0x1737ce['update'](_0x240a64)[_0x40a4('0x22')](function(_0x416d70){return _0x416d70;});}return null;};}function removeEntity(_0x52f62b,_0x1d062b){return function(_0x59858a){if(_0x59858a){return _0x59858a[_0x40a4('0x23')]()[_0x40a4('0x22')](function(){_0x52f62b['status'](0xcc)[_0x40a4('0x18')]();});}};}function handleEntityNotFound(_0x4674c2,_0x290821){return function(_0x323885){if(!_0x323885){_0x4674c2[_0x40a4('0x17')](0x194);}return _0x323885;};}function handleError(_0x3c1fbd,_0x50cf5b){_0x50cf5b=_0x50cf5b||0x1f4;return function(_0x1e3329){logger[_0x40a4('0x24')](_0x1e3329[_0x40a4('0x25')]);if(_0x1e3329[_0x40a4('0x26')]){delete _0x1e3329[_0x40a4('0x26')];}_0x3c1fbd[_0x40a4('0x27')](_0x50cf5b)[_0x40a4('0x28')](_0x1e3329);};}exports[_0x40a4('0x29')]=function(_0xefabf9,_0x5737f6){var _0x221bc1={},_0x291f15={},_0x3833c2={'count':0x0,'rows':[]};var _0x3a7cc6=_[_0x40a4('0x2a')](db[_0x40a4('0x2b')][_0x40a4('0x2c')],function(_0x35871e){return{'name':_0x35871e[_0x40a4('0x2d')],'type':_0x35871e[_0x40a4('0x2e')][_0x40a4('0x2f')]};});_0x291f15[_0x40a4('0x30')]=_[_0x40a4('0x2a')](_0x3a7cc6,_0x40a4('0x26'));_0x291f15[_0x40a4('0x31')]=_[_0x40a4('0x32')](_0xefabf9[_0x40a4('0x31')]);_0x291f15[_0x40a4('0x33')]=_[_0x40a4('0x34')](_0x291f15[_0x40a4('0x30')],_0x291f15[_0x40a4('0x31')]);_0x221bc1[_0x40a4('0x35')]=_['intersection'](_0x291f15['model'],qs[_0x40a4('0x36')](_0xefabf9[_0x40a4('0x31')][_0x40a4('0x36')]));_0x221bc1[_0x40a4('0x35')]=_0x221bc1[_0x40a4('0x35')][_0x40a4('0x37')]?_0x221bc1[_0x40a4('0x35')]:_0x291f15[_0x40a4('0x30')];if(!_0xefabf9['query'][_0x40a4('0x38')]('nolimit')){_0x221bc1[_0x40a4('0x1d')]=qs[_0x40a4('0x1d')](_0xefabf9[_0x40a4('0x31')]['limit']);_0x221bc1[_0x40a4('0x1a')]=qs[_0x40a4('0x1a')](_0xefabf9[_0x40a4('0x31')]['offset']);}_0x221bc1[_0x40a4('0x39')]=qs[_0x40a4('0x3a')](_0xefabf9[_0x40a4('0x31')][_0x40a4('0x3a')]);_0x221bc1[_0x40a4('0x3b')]=qs[_0x40a4('0x33')](_['pick'](_0xefabf9[_0x40a4('0x31')],_0x291f15[_0x40a4('0x33')]),_0x3a7cc6);if(_0xefabf9['query'][_0x40a4('0x3c')]){_0x221bc1[_0x40a4('0x3b')]=_['merge'](_0x221bc1[_0x40a4('0x3b')],{'$or':_[_0x40a4('0x2a')](_0x3a7cc6,function(_0x184c5a){if(_0x184c5a['type']!=='VIRTUAL'){var _0x1cb615={};_0x1cb615[_0x184c5a['name']]={'$like':'%'+_0xefabf9[_0x40a4('0x31')]['filter']+'%'};return _0x1cb615;}})});}_0x221bc1=_['merge']({},_0x221bc1,_0xefabf9[_0x40a4('0x3d')]);var _0x1a669e={'where':_0x221bc1[_0x40a4('0x3b')]};return db['FaxApplication'][_0x40a4('0x1c')](_0x1a669e)[_0x40a4('0x22')](function(_0x4fb82c){_0x3833c2[_0x40a4('0x1c')]=_0x4fb82c;if(_0xefabf9[_0x40a4('0x31')][_0x40a4('0x3e')]){_0x221bc1[_0x40a4('0x3f')]=[{'all':!![]}];}return db[_0x40a4('0x2b')][_0x40a4('0x40')](_0x221bc1);})[_0x40a4('0x22')](function(_0x58897f){_0x3833c2['rows']=_0x58897f;return _0x3833c2;})[_0x40a4('0x22')](respondWithFilteredResult(_0x5737f6,_0x221bc1))[_0x40a4('0x41')](handleError(_0x5737f6,null));};exports[_0x40a4('0x42')]=function(_0x3be818,_0x157662){var _0x1b2c83={'raw':!![],'where':{'id':_0x3be818[_0x40a4('0x43')]['id']}},_0x323151={};_0x323151[_0x40a4('0x30')]=_[_0x40a4('0x32')](db['FaxApplication'][_0x40a4('0x2c')]);_0x323151[_0x40a4('0x31')]=_[_0x40a4('0x32')](_0x3be818[_0x40a4('0x31')]);_0x323151['filters']=_[_0x40a4('0x34')](_0x323151['model'],_0x323151[_0x40a4('0x31')]);_0x1b2c83[_0x40a4('0x35')]=_[_0x40a4('0x34')](_0x323151[_0x40a4('0x30')],qs['fields'](_0x3be818[_0x40a4('0x31')]['fields']));_0x1b2c83[_0x40a4('0x35')]=_0x1b2c83['attributes'][_0x40a4('0x37')]?_0x1b2c83[_0x40a4('0x35')]:_0x323151[_0x40a4('0x30')];if(_0x3be818[_0x40a4('0x31')][_0x40a4('0x3e')]){_0x1b2c83[_0x40a4('0x3f')]=[{'all':!![]}];}_0x1b2c83=_[_0x40a4('0x44')]({},_0x1b2c83,_0x3be818[_0x40a4('0x3d')]);return db[_0x40a4('0x2b')][_0x40a4('0x45')](_0x1b2c83)['then'](handleEntityNotFound(_0x157662,null))[_0x40a4('0x22')](respondWithResult(_0x157662,null))[_0x40a4('0x41')](handleError(_0x157662,null));};exports[_0x40a4('0x46')]=function(_0x151a74,_0x50cca3){return db[_0x40a4('0x2b')][_0x40a4('0x46')](_0x151a74[_0x40a4('0x47')],{})['then'](respondWithResult(_0x50cca3,0xc9))[_0x40a4('0x41')](handleError(_0x50cca3,null));};exports[_0x40a4('0x48')]=function(_0x59a54a,_0x55b267){if(_0x59a54a[_0x40a4('0x47')]['id']){delete _0x59a54a[_0x40a4('0x47')]['id'];}return db[_0x40a4('0x2b')][_0x40a4('0x45')]({'where':{'id':_0x59a54a[_0x40a4('0x43')]['id']}})[_0x40a4('0x22')](handleEntityNotFound(_0x55b267,null))[_0x40a4('0x22')](saveUpdates(_0x59a54a[_0x40a4('0x47')],null))[_0x40a4('0x22')](respondWithResult(_0x55b267,null))['catch'](handleError(_0x55b267,null));};exports['destroy']=function(_0xf88443,_0x59ff38){return db['FaxApplication'][_0x40a4('0x45')]({'where':{'id':_0xf88443[_0x40a4('0x43')]['id']}})[_0x40a4('0x22')](handleEntityNotFound(_0x59ff38,null))[_0x40a4('0x22')](removeEntity(_0x59ff38,null))[_0x40a4('0x41')](handleError(_0x59ff38,null));};
\ No newline at end of file
index 41da0a6..a2c927f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0xf999=['../../config/logger','api','moment','bluebird','../../config/environment','./faxApplication.attributes','define','FaxApplication','fax_applications','utf8mb4','utf8mb4_unicode_ci','lodash','util'];(function(_0x5be608,_0x44dffd){var _0x49fde6=function(_0x3bc305){while(--_0x3bc305){_0x5be608['push'](_0x5be608['shift']());}};_0x49fde6(++_0x44dffd);}(_0xf999,0x1ec));var _0x9f99=function(_0x35f29f,_0x4619f4){_0x35f29f=_0x35f29f-0x0;var _0x233b90=_0xf999[_0x35f29f];return _0x233b90;};'use strict';var _=require(_0x9f99('0x0'));var util=require(_0x9f99('0x1'));var logger=require(_0x9f99('0x2'))(_0x9f99('0x3'));var moment=require(_0x9f99('0x4'));var BPromise=require(_0x9f99('0x5'));var rp=require('request-promise');var fs=require('fs');var path=require('path');var rimraf=require('rimraf');var config=require(_0x9f99('0x6'));var attributes=require(_0x9f99('0x7'));module['exports']=function(_0x44c9a8,_0xa49097){return _0x44c9a8[_0x9f99('0x8')](_0x9f99('0x9'),attributes,{'tableName':_0x9f99('0xa'),'paranoid':![],'indexes':[],'timestamps':!![],'charset':_0x9f99('0xb'),'collate':_0x9f99('0xc')});};
\ No newline at end of file
index a1a0e4b..ad34e87 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0x6a4f=['attributes','limit','info','util','moment','randomstring','../../config/utils','../../config/logger','../../config/environment','jayson/promise','http','request','then','FaxApplication,\x20%s,\x20%s','debug','request\x20sent','stringify','code','error','message','catch','UpdateFaxApplication','FaxApplication','update','body','options','raw'];(function(_0x14add3,_0x13ce8d){var _0x4a174f=function(_0x2b3ed7){while(--_0x2b3ed7){_0x14add3['push'](_0x14add3['shift']());}};_0x4a174f(++_0x13ce8d);}(_0x6a4f,0x17d));var _0xf6a4=function(_0x295431,_0x5a454c){_0x295431=_0x295431-0x0;var _0x455325=_0x6a4f[_0x295431];return _0x455325;};'use strict';var _=require('lodash');var util=require(_0xf6a4('0x0'));var moment=require(_0xf6a4('0x1'));var BPromise=require('bluebird');var rs=require(_0xf6a4('0x2'));var fs=require('fs');var Redis=require('ioredis');var db=require('../../mysqldb')['db'];var utils=require(_0xf6a4('0x3'));var logger=require(_0xf6a4('0x4'))('rpc');var config=require(_0xf6a4('0x5'));var jayson=require(_0xf6a4('0x6'));var client=jayson['client'][_0xf6a4('0x7')]({'port':0x232a});function respondWithRpcPromise(_0x3488b3,_0x465a06,_0x857827){return new BPromise(function(_0x16d707,_0x43110f){return client[_0xf6a4('0x8')](_0x3488b3,_0x857827)[_0xf6a4('0x9')](function(_0x53683c){logger['info'](_0xf6a4('0xa'),_0x465a06,'request\x20sent');logger[_0xf6a4('0xb')]('FaxApplication,\x20%s,\x20%s,\x20%s',_0x465a06,_0xf6a4('0xc'),JSON[_0xf6a4('0xd')](_0x53683c));if(_0x53683c['error']){if(_0x53683c['error'][_0xf6a4('0xe')]===0x1f4){logger[_0xf6a4('0xf')](_0xf6a4('0xa'),_0x465a06,_0x53683c['error']['message']);return _0x43110f(_0x53683c['error'][_0xf6a4('0x10')]);}logger[_0xf6a4('0xf')]('FaxApplication,\x20%s,\x20%s',_0x465a06,_0x53683c[_0xf6a4('0xf')][_0xf6a4('0x10')]);return _0x16d707(_0x53683c[_0xf6a4('0xf')][_0xf6a4('0x10')]);}else{logger['info'](_0xf6a4('0xa'),_0x465a06,'request\x20sent');_0x16d707(_0x53683c['result']['message']);}})[_0xf6a4('0x11')](function(_0x2988fc){logger[_0xf6a4('0xf')](_0xf6a4('0xa'),_0x465a06,_0x2988fc);_0x43110f(_0x2988fc);});});}exports[_0xf6a4('0x12')]=function(_0x1fd7d9){var _0x543d0e=this;return new Promise(function(_0x2c8f4b,_0x59b906){return db[_0xf6a4('0x13')][_0xf6a4('0x14')](_0x1fd7d9[_0xf6a4('0x15')],{'raw':_0x1fd7d9[_0xf6a4('0x16')]?_0x1fd7d9[_0xf6a4('0x16')][_0xf6a4('0x17')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x1fd7d9[_0xf6a4('0x16')]?_0x1fd7d9[_0xf6a4('0x16')]['where']||null:null,'attributes':_0x1fd7d9[_0xf6a4('0x16')]?_0x1fd7d9[_0xf6a4('0x16')][_0xf6a4('0x18')]||null:null,'limit':_0x1fd7d9[_0xf6a4('0x16')]?_0x1fd7d9[_0xf6a4('0x16')][_0xf6a4('0x19')]||null:null})[_0xf6a4('0x9')](function(_0x5760e4){logger[_0xf6a4('0x1a')](_0xf6a4('0x12'),_0x1fd7d9);logger['debug'](_0xf6a4('0x12'),_0x1fd7d9,JSON[_0xf6a4('0xd')](_0x5760e4));_0x2c8f4b(_0x5760e4);})[_0xf6a4('0x11')](function(_0x37248f){logger['error'](_0xf6a4('0x12'),_0x37248f[_0xf6a4('0x10')],_0x1fd7d9);_0x59b906(_0x543d0e[_0xf6a4('0xf')](0x1f4,_0x37248f[_0xf6a4('0x10')]));});});};
\ No newline at end of file
index 7447c5b..36c083d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0x4fc2=['show','post','create','update','delete','destroy','exports','multer','util','path','connect-timeout','Router','fs-extra','../../components/auth/service','../../config/environment','./faxApplication.controller','isAuthenticated','index','/:id'];(function(_0x4b2436,_0x452299){var _0x4f5ab2=function(_0x5c6679){while(--_0x5c6679){_0x4b2436['push'](_0x4b2436['shift']());}};_0x4f5ab2(++_0x452299);}(_0x4fc2,0x111));var _0x24fc=function(_0x43c0d8,_0x59449e){_0x43c0d8=_0x43c0d8-0x0;var _0x255aaf=_0x4fc2[_0x43c0d8];return _0x255aaf;};'use strict';var multer=require(_0x24fc('0x0'));var util=require(_0x24fc('0x1'));var path=require(_0x24fc('0x2'));var timeout=require(_0x24fc('0x3'));var express=require('express');var router=express[_0x24fc('0x4')]();var fs_extra=require(_0x24fc('0x5'));var auth=require(_0x24fc('0x6'));var interaction=require('../../components/interaction/service');var config=require(_0x24fc('0x7'));var controller=require(_0x24fc('0x8'));router['get']('/',auth[_0x24fc('0x9')](),controller[_0x24fc('0xa')]);router['get'](_0x24fc('0xb'),auth[_0x24fc('0x9')](),controller[_0x24fc('0xc')]);router[_0x24fc('0xd')]('/',auth[_0x24fc('0x9')](),controller[_0x24fc('0xe')]);router['put'](_0x24fc('0xb'),auth[_0x24fc('0x9')](),controller[_0x24fc('0xf')]);router[_0x24fc('0x10')](_0x24fc('0xb'),auth[_0x24fc('0x9')](),controller[_0x24fc('0x11')]);module[_0x24fc('0x12')]=router;
\ No newline at end of file
index 00a7fb9..7b30251 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0x5bce=['out','BOOLEAN','STRING','DATE','ENUM'];(function(_0x240bf9,_0x582cea){var _0xb5a52c=function(_0x43b3b7){while(--_0x43b3b7){_0x240bf9['push'](_0x240bf9['shift']());}};_0xb5a52c(++_0x582cea);}(_0x5bce,0x15f));var _0xe5bc=function(_0x42bb6d,_0x412255){_0x42bb6d=_0x42bb6d-0x0;var _0x1db89b=_0x5bce[_0x42bb6d];return _0x1db89b;};'use strict';var Sequelize=require('sequelize');module['exports']={'closed':{'type':Sequelize[_0xe5bc('0x0')],'defaultValue':![]},'closedAt':{'type':Sequelize['DATE']},'disposition':{'type':Sequelize[_0xe5bc('0x1')]},'secondDisposition':{'type':Sequelize[_0xe5bc('0x1')]},'thirdDisposition':{'type':Sequelize[_0xe5bc('0x1')]},'note':{'type':Sequelize[_0xe5bc('0x1')]},'read1stAt':{'type':Sequelize[_0xe5bc('0x2')]},'fax':{'type':Sequelize[_0xe5bc('0x1')]},'firstMsgDirection':{'type':Sequelize[_0xe5bc('0x3')]('in',_0xe5bc('0x4')),'defaultValue':'in','allowNull':![]},'lastMsgAt':{'type':Sequelize[_0xe5bc('0x2')]},'lastMsgDirection':{'type':Sequelize[_0xe5bc('0x3')]('in','out'),'defaultValue':'in','allowNull':![]}};
\ No newline at end of file
index bd32907..f766bed 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0x3eec=['lodash','../../components/interaction/service','../../components/parsers/qs','api','redis','localhost','register','sendStatus','status','end','json','offset','undefined','count','limit','set','Content-Range','update','then','destroy','error','stack','name','send','index','map','FaxInteraction','rawAttributes','type','getOptions','findAll','query','catch','show','params','model','keys','attributes','intersection','fields','length','includeAll','include','merge','options','create','body','find','describe','addMessage','FaxMessage','ids','omit','findOne','filters','hasOwnProperty','nolimit','sort','where','pick','FaxInteractionId','$gte','split','format','YYYY-MM-DD\x20HH:mm:ss','addTags','setTags','spread','Tag','emit','faxInteractionTags:save','removeTags','download','unix','toString','join','root','server','files','attachments','transcript-%d-%s.zip','push','Attachment','Messages','createdAt','get','mkdirSync','basename','createReadStream','createWriteStream','resolve','log','err','unlinkSync','rimraf','zip-dir','util','path'];(function(_0x1a05a2,_0x331b69){var _0x23bb86=function(_0xe3635e){while(--_0xe3635e){_0x1a05a2['push'](_0x1a05a2['shift']());}};_0x23bb86(++_0x331b69);}(_0x3eec,0x1e6));var _0xc3ee=function(_0x29887a,_0x5d33d5){_0x29887a=_0x29887a-0x0;var _0x337acd=_0x3eec[_0x29887a];return _0x337acd;};'use strict';var rimraf=require(_0xc3ee('0x0'));var zipdir=require(_0xc3ee('0x1'));var moment=require('moment');var BPromise=require('bluebird');var util=require(_0xc3ee('0x2'));var path=require(_0xc3ee('0x3'));var fs=require('fs');var _=require(_0xc3ee('0x4'));var Redis=require('ioredis');var interaction=require(_0xc3ee('0x5'));var qs=require(_0xc3ee('0x6'));var logger=require('../../config/logger')(_0xc3ee('0x7'));var config=require('../../config/environment');var db=require('../../mysqldb')['db'];config['redis']=_['defaults'](config[_0xc3ee('0x8')],{'host':_0xc3ee('0x9'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config['redis']));require('./faxInteraction.socket')[_0xc3ee('0xa')](socket);function respondWithStatusCode(_0x555c1f,_0x47a3ed){_0x47a3ed=_0x47a3ed||0xcc;return function(_0x37201d){if(_0x37201d){return _0x555c1f[_0xc3ee('0xb')](_0x47a3ed);}return _0x555c1f[_0xc3ee('0xc')](_0x47a3ed)[_0xc3ee('0xd')]();};}function respondWithResult(_0x7ac16d,_0x4de841){_0x4de841=_0x4de841||0xc8;return function(_0x19fa8b){if(_0x19fa8b){return _0x7ac16d[_0xc3ee('0xc')](_0x4de841)[_0xc3ee('0xe')](_0x19fa8b);}};}function respondWithFilteredResult(_0x5876d0,_0x2a99c6){return function(_0x388468){if(_0x388468){var _0x20ff6f=typeof _0x2a99c6[_0xc3ee('0xf')]===_0xc3ee('0x10')&&typeof _0x2a99c6['limit']===_0xc3ee('0x10');var _0x55c1f8=_0x388468[_0xc3ee('0x11')];var _0x362c25=_0x20ff6f?0x0:_0x2a99c6[_0xc3ee('0xf')];var _0x598cf2=_0x20ff6f?_0x388468['count']:_0x2a99c6[_0xc3ee('0xf')]+_0x2a99c6[_0xc3ee('0x12')];var _0x1a24b9;if(_0x598cf2>=_0x55c1f8){_0x598cf2=_0x55c1f8;_0x1a24b9=0xc8;}else{_0x1a24b9=0xce;}_0x5876d0[_0xc3ee('0xc')](_0x1a24b9);return _0x5876d0[_0xc3ee('0x13')](_0xc3ee('0x14'),_0x362c25+'-'+_0x598cf2+'/'+_0x55c1f8)['json'](_0x388468);}return null;};}function saveUpdates(_0x293200){return function(_0x5520ce){if(_0x5520ce){return _0x5520ce[_0xc3ee('0x15')](_0x293200)[_0xc3ee('0x16')](function(_0x5a5791){return _0x5a5791;});}return null;};}function removeEntity(_0x367cb2){return function(_0x5d2a77){if(_0x5d2a77){return _0x5d2a77[_0xc3ee('0x17')]()['then'](function(){_0x367cb2['status'](0xcc)[_0xc3ee('0xd')]();});}};}function handleEntityNotFound(_0x631739){return function(_0xaa1655){if(!_0xaa1655){_0x631739[_0xc3ee('0xb')](0x194);}return _0xaa1655;};}function handleError(_0x51e7ac,_0x2253e0){_0x2253e0=_0x2253e0||0x1f4;return function(_0x1eb666){logger[_0xc3ee('0x18')](_0x1eb666[_0xc3ee('0x19')]);if(_0x1eb666[_0xc3ee('0x1a')]){delete _0x1eb666[_0xc3ee('0x1a')];}_0x51e7ac[_0xc3ee('0xc')](_0x2253e0)[_0xc3ee('0x1b')](_0x1eb666);};}exports[_0xc3ee('0x1c')]=function(_0x53d5a0,_0x354e12){var _0xfa062e={};var _0x227dca=_[_0xc3ee('0x1d')](db[_0xc3ee('0x1e')][_0xc3ee('0x1f')],function(_0x3e8541){return{'name':_0x3e8541['fieldName'],'type':_0x3e8541[_0xc3ee('0x20')]['key']};});_0xfa062e=qs[_0xc3ee('0x21')](_0x227dca,_0x53d5a0);return interaction[_0xc3ee('0x22')]('fax',_0x53d5a0[_0xc3ee('0x23')],_0x53d5a0['user'],_0xfa062e,_0x227dca)[_0xc3ee('0x16')](respondWithFilteredResult(_0x354e12,_0xfa062e))[_0xc3ee('0x24')](handleError(_0x354e12,null));};exports[_0xc3ee('0x25')]=function(_0x3a477a,_0x5b2ad4){var _0x337171={'raw':![],'where':{'id':_0x3a477a[_0xc3ee('0x26')]['id']}},_0x12631f={};_0x12631f[_0xc3ee('0x27')]=_[_0xc3ee('0x28')](db[_0xc3ee('0x1e')]['rawAttributes']);_0x12631f[_0xc3ee('0x23')]=_[_0xc3ee('0x28')](_0x3a477a[_0xc3ee('0x23')]);_0x12631f['filters']=_['intersection'](_0x12631f[_0xc3ee('0x27')],_0x12631f[_0xc3ee('0x23')]);_0x337171[_0xc3ee('0x29')]=_[_0xc3ee('0x2a')](_0x12631f[_0xc3ee('0x27')],qs[_0xc3ee('0x2b')](_0x3a477a[_0xc3ee('0x23')]['fields']));_0x337171[_0xc3ee('0x29')]=_0x337171[_0xc3ee('0x29')][_0xc3ee('0x2c')]?_0x337171[_0xc3ee('0x29')]:_0x12631f['model'];if(_0x3a477a['query'][_0xc3ee('0x2d')]){_0x337171[_0xc3ee('0x2e')]=[{'all':!![]}];}_0x337171=_[_0xc3ee('0x2f')]({},_0x337171,_0x3a477a[_0xc3ee('0x30')]);return db['FaxInteraction']['find'](_0x337171)[_0xc3ee('0x16')](handleEntityNotFound(_0x5b2ad4,null))[_0xc3ee('0x16')](respondWithResult(_0x5b2ad4,null))['catch'](handleError(_0x5b2ad4,null));};exports[_0xc3ee('0x31')]=function(_0x49a004,_0x2b2816){return db[_0xc3ee('0x1e')]['create'](_0x49a004['body'],{})[_0xc3ee('0x16')](respondWithResult(_0x2b2816,0xc9))[_0xc3ee('0x24')](handleError(_0x2b2816,null));};exports[_0xc3ee('0x15')]=function(_0x1fbad5,_0x148ba1){if(_0x1fbad5[_0xc3ee('0x32')]['id']){delete _0x1fbad5[_0xc3ee('0x32')]['id'];}return db[_0xc3ee('0x1e')]['find']({'where':{'id':_0x1fbad5[_0xc3ee('0x26')]['id']}})[_0xc3ee('0x16')](handleEntityNotFound(_0x148ba1,null))[_0xc3ee('0x16')](saveUpdates(_0x1fbad5[_0xc3ee('0x32')],null))[_0xc3ee('0x16')](respondWithResult(_0x148ba1,null))[_0xc3ee('0x24')](handleError(_0x148ba1,null));};exports[_0xc3ee('0x17')]=function(_0x4dbe52,_0x960a8e){return db[_0xc3ee('0x1e')][_0xc3ee('0x33')]({'where':{'id':_0x4dbe52[_0xc3ee('0x26')]['id']}})[_0xc3ee('0x16')](handleEntityNotFound(_0x960a8e,null))[_0xc3ee('0x16')](removeEntity(_0x960a8e,null))[_0xc3ee('0x24')](handleError(_0x960a8e,null));};exports[_0xc3ee('0x34')]=function(_0x57fa50,_0x10dfcb){return db[_0xc3ee('0x1e')][_0xc3ee('0x34')]()['then'](respondWithResult(_0x10dfcb,null))[_0xc3ee('0x24')](handleError(_0x10dfcb,null));};exports[_0xc3ee('0x35')]=function(_0x58a7ae,_0x47e3a5){return db[_0xc3ee('0x36')][_0xc3ee('0x33')]({'where':{'id':_0x58a7ae[_0xc3ee('0x26')]['id']}})[_0xc3ee('0x16')](handleEntityNotFound(_0x47e3a5,null))[_0xc3ee('0x16')](function(_0x169e77){if(_0x169e77){return _0x169e77[_0xc3ee('0x35')](_0x58a7ae[_0xc3ee('0x32')][_0xc3ee('0x37')],_[_0xc3ee('0x38')](_0x58a7ae[_0xc3ee('0x32')],[_0xc3ee('0x37'),'id'])||{});}})[_0xc3ee('0x16')](respondWithResult(_0x47e3a5,null))[_0xc3ee('0x24')](handleError(_0x47e3a5,null));};exports['getMessages']=function(_0x13c9c1,_0x12ae0e){var _0x3ceb6f={'raw':![],'where':{}};var _0x569f17={};var _0x1c4c97={'count':0x0,'rows':[]};return db['FaxInteraction'][_0xc3ee('0x39')]({'where':{'id':_0x13c9c1['params']['id']}})[_0xc3ee('0x16')](handleEntityNotFound(_0x12ae0e,null))[_0xc3ee('0x16')](function(_0x1a411f){if(_0x1a411f){_0x569f17[_0xc3ee('0x27')]=_['keys'](db[_0xc3ee('0x36')][_0xc3ee('0x1f')]);_0x569f17[_0xc3ee('0x23')]=_[_0xc3ee('0x28')](_0x13c9c1[_0xc3ee('0x23')]);_0x569f17[_0xc3ee('0x3a')]=_[_0xc3ee('0x2a')](_0x569f17['model'],_0x569f17[_0xc3ee('0x23')]);_0x3ceb6f[_0xc3ee('0x29')]=_['intersection'](_0x569f17[_0xc3ee('0x27')],qs[_0xc3ee('0x2b')](_0x13c9c1[_0xc3ee('0x23')]['fields']));_0x3ceb6f[_0xc3ee('0x29')]=_0x3ceb6f[_0xc3ee('0x29')][_0xc3ee('0x2c')]?_0x3ceb6f[_0xc3ee('0x29')]:_0x569f17[_0xc3ee('0x27')];if(!_0x13c9c1[_0xc3ee('0x23')][_0xc3ee('0x3b')](_0xc3ee('0x3c'))){_0x3ceb6f[_0xc3ee('0x12')]=qs[_0xc3ee('0x12')](_0x13c9c1['query'][_0xc3ee('0x12')]);_0x3ceb6f[_0xc3ee('0xf')]=qs[_0xc3ee('0xf')](_0x13c9c1[_0xc3ee('0x23')]['offset']);}_0x3ceb6f['order']=qs[_0xc3ee('0x3d')](_0x13c9c1[_0xc3ee('0x23')][_0xc3ee('0x3d')]);_0x3ceb6f[_0xc3ee('0x3e')]=qs[_0xc3ee('0x3a')](_[_0xc3ee('0x3f')](_0x13c9c1[_0xc3ee('0x23')],_0x569f17[_0xc3ee('0x3a')]));_0x3ceb6f[_0xc3ee('0x3e')][_0xc3ee('0x40')]=_0x1a411f['id'];if(_0x13c9c1[_0xc3ee('0x23')]['filter']){_0x3ceb6f[_0xc3ee('0x3e')]=_['merge'](_0x3ceb6f['where'],{'$or':_[_0xc3ee('0x1d')](_0x3ceb6f[_0xc3ee('0x29')],function(_0x288e52){var _0x13d01c={};_0x13d01c[_0x288e52]={'$like':'%'+_0x13c9c1[_0xc3ee('0x23')]['filter']+'%'};return _0x13d01c;})});}if(_0x13c9c1[_0xc3ee('0x23')][_0xc3ee('0x41')]){var _0x44a072=_0x13c9c1[_0xc3ee('0x23')]['$gte'][_0xc3ee('0x42')](',');var _0x325ce3={};_0x325ce3[_0x44a072[0x0]]={'$gte':moment(_0x44a072[0x1])[_0xc3ee('0x43')](_0xc3ee('0x44'))};_0x3ceb6f[_0xc3ee('0x3e')]=_[_0xc3ee('0x2f')](_0x3ceb6f[_0xc3ee('0x3e')],_0x325ce3);}_0x3ceb6f=_[_0xc3ee('0x2f')]({},_0x3ceb6f,_0x13c9c1[_0xc3ee('0x30')]);return db['FaxMessage'][_0xc3ee('0x11')]({'where':_0x3ceb6f[_0xc3ee('0x3e')]})[_0xc3ee('0x16')](function(_0x1d3b4d){_0x1c4c97['count']=_0x1d3b4d;if(_0x13c9c1[_0xc3ee('0x23')][_0xc3ee('0x2d')]){_0x3ceb6f[_0xc3ee('0x2e')]=[{'all':!![]}];}return db[_0xc3ee('0x36')]['findAll'](_0x3ceb6f);})[_0xc3ee('0x16')](function(_0xbdddc9){_0x1c4c97['rows']=_0xbdddc9;return _0x1c4c97;});}})[_0xc3ee('0x16')](respondWithFilteredResult(_0x12ae0e,_0x3ceb6f))[_0xc3ee('0x24')](handleError(_0x12ae0e,null));};exports[_0xc3ee('0x45')]=function(_0x3e337e,_0x2020e9){return db[_0xc3ee('0x1e')][_0xc3ee('0x33')]({'where':{'id':_0x3e337e[_0xc3ee('0x26')]['id']}})['then'](handleEntityNotFound(_0x2020e9,null))[_0xc3ee('0x16')](function(_0x398a15){if(_0x398a15){return _0x398a15[_0xc3ee('0x46')](_0x3e337e[_0xc3ee('0x32')]['ids'],_['omit'](_0x3e337e[_0xc3ee('0x32')],[_0xc3ee('0x37'),'id'])||{})[_0xc3ee('0x47')](function(){return db[_0xc3ee('0x48')]['findAll']({'attributes':['id',_0xc3ee('0x1a'),'color'],'where':{'id':_0x3e337e[_0xc3ee('0x32')][_0xc3ee('0x37')]}});})[_0xc3ee('0x16')](function(_0x5997d6){socket[_0xc3ee('0x49')](_0xc3ee('0x4a'),{'id':Number(_0x3e337e['params']['id']),'tags':_0x5997d6||[]});return{'id':Number(_0x3e337e[_0xc3ee('0x26')]['id']),'tags':_0x5997d6||[]};});}})['then'](respondWithResult(_0x2020e9,null))[_0xc3ee('0x24')](handleError(_0x2020e9,null));};exports[_0xc3ee('0x4b')]=function(_0x2f3ec9,_0x534b8c){return db[_0xc3ee('0x1e')][_0xc3ee('0x33')]({'where':{'id':_0x2f3ec9[_0xc3ee('0x26')]['id']}})[_0xc3ee('0x16')](handleEntityNotFound(_0x534b8c,null))['then'](function(_0x417b76){if(_0x417b76){return _0x417b76['removeTags'](_0x2f3ec9[_0xc3ee('0x23')][_0xc3ee('0x37')]);}})[_0xc3ee('0x16')](respondWithStatusCode(_0x534b8c,null))[_0xc3ee('0x24')](handleError(_0x534b8c,null));};exports[_0xc3ee('0x4c')]=function(_0xbbc4a8,_0x2c2495){var _0x3ffdae=moment()[_0xc3ee('0x4d')]()[_0xc3ee('0x4e')]();var _0x49b973=path[_0xc3ee('0x4f')](config[_0xc3ee('0x50')],_0xc3ee('0x51'),'files','tmp');var _0x341ee8=path[_0xc3ee('0x4f')](config[_0xc3ee('0x50')],_0xc3ee('0x51'),_0xc3ee('0x52'),_0xc3ee('0x53'));var _0x103f1d=path['join'](_0x49b973,_0x3ffdae);var _0x267c6e=util[_0xc3ee('0x43')](_0xc3ee('0x54'),_0xbbc4a8['params']['id'],_0x3ffdae);var _0x529d70=path[_0xc3ee('0x4f')](_0x49b973,_0x267c6e);var _0x2987a9=[];_0x2987a9[_0xc3ee('0x55')]({'model':db[_0xc3ee('0x56')],'as':_0xc3ee('0x56'),'raw':!![]});var _0xb52689=[{'model':db[_0xc3ee('0x36')],'as':_0xc3ee('0x57'),'attributes':['id',_0xc3ee('0x32'),_0xc3ee('0x58')],'include':_0x2987a9}];return db[_0xc3ee('0x1e')][_0xc3ee('0x33')]({'where':{'id':_0xbbc4a8[_0xc3ee('0x26')]['id']},'include':_0xb52689})[_0xc3ee('0x16')](handleEntityNotFound(_0x2c2495,null))[_0xc3ee('0x16')](function(_0x34a4aa){if(_0x34a4aa&&_0x34a4aa[_0xc3ee('0x57')]){var _0x48b27d=_0x34a4aa[_0xc3ee('0x59')]({'plain':!![]});fs[_0xc3ee('0x5a')](_0x103f1d);for(var _0x21a201=0x0;_0x21a201<_0x48b27d[_0xc3ee('0x57')][_0xc3ee('0x2c')];_0x21a201++){var _0x104169=_0x48b27d[_0xc3ee('0x57')][_0x21a201]['Attachment'];if(_0x104169){var _0x5b452f=path['join'](_0x341ee8,_0x104169[_0xc3ee('0x5b')]);if(fs['existsSync'](_0x5b452f)){fs[_0xc3ee('0x5c')](_0x5b452f)['pipe'](fs[_0xc3ee('0x5d')](path['join'](_0x103f1d,_0x104169[_0xc3ee('0x5b')])));}}}return BPromise[_0xc3ee('0x5e')]()[_0xc3ee('0x16')](function(){return new BPromise(function(_0x13825d,_0x735857){zipdir(_0x103f1d,{'saveTo':_0x529d70},function(_0x320881,_0x698411){if(_0x320881)return _0x735857(_0x320881);return _0x13825d(_0x698411);});})['then'](function(){return new BPromise(function(_0x564255,_0x486de3){rimraf(_0x103f1d,function(_0x23d872){if(_0x23d872)_0x486de3(_0x23d872);return _0x564255();});});})[_0xc3ee('0x16')](function(){return _0x2c2495['download'](_0x529d70,_0x267c6e,function(_0x4c3886){if(_0x4c3886){console[_0xc3ee('0x5f')](_0xc3ee('0x60'),_0x4c3886);}else{fs[_0xc3ee('0x61')](_0x529d70);}});});});}else{return _0x2c2495[_0xc3ee('0xb')](0xc8);}})[_0xc3ee('0x24')](handleError(_0x2c2495,null));};
\ No newline at end of file
index 943042e..8f57596 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0xe840=['events','../../mysqldb','FaxInteraction','FaxMessage','save','update','remove','getUsers','then','setDataValue','findAll','unreadMessages','length','catch','hook','exports'];(function(_0x3b9651,_0x3da21e){var _0x2c1d63=function(_0x58bc9f){while(--_0x58bc9f){_0x3b9651['push'](_0x3b9651['shift']());}};_0x2c1d63(++_0x3da21e);}(_0xe840,0x70));var _0x0e84=function(_0x145e3b,_0x9fcbb4){_0x145e3b=_0x145e3b-0x0;var _0x8994ea=_0xe840[_0x145e3b];return _0x8994ea;};'use strict';var EventEmitter=require(_0x0e84('0x0'));var FaxInteraction=require(_0x0e84('0x1'))['db'][_0x0e84('0x2')];var FaxMessage=require('../../mysqldb')['db'][_0x0e84('0x3')];var FaxInteractionEvents=new EventEmitter();FaxInteractionEvents['setMaxListeners'](0x0);var events={'afterCreate':_0x0e84('0x4'),'afterUpdate':_0x0e84('0x5'),'afterDestroy':_0x0e84('0x6')};function emitEvent(_0xd631f4){return function(_0x3a8882,_0x3877b6,_0x46031c){_0x3a8882[_0x0e84('0x7')]({'attributes':['id'],'raw':!![]})[_0x0e84('0x8')](function(_0x1d8839){_0x3a8882[_0x0e84('0x9')]('Users',_0x1d8839['map'](function(_0x3a795a){return{'id':_0x3a795a['id']};}));return FaxMessage[_0x0e84('0xa')]({'where':{'FaxInteractionId':_0x3a8882['id'],'direction':'in','read':![]},'raw':!![]});})['then'](function(_0x33b8f5){_0x3a8882[_0x0e84('0x9')](_0x0e84('0xb'),_0x33b8f5[_0x0e84('0xc')]);FaxInteractionEvents['emit'](_0xd631f4+':'+_0x3a8882['id'],_0x3a8882);FaxInteractionEvents['emit'](_0xd631f4,_0x3a8882);_0x46031c(null);})[_0x0e84('0xd')](_0x46031c(null));};}for(var e in events){if(events['hasOwnProperty'](e)){var event=events[e];FaxInteraction[_0x0e84('0xe')](e,emitEvent(event));}}module[_0x0e84('0xf')]=FaxInteractionEvents;
\ No newline at end of file
index bdd11df..bcbf138 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0xb49b=['api','moment','request-promise','path','../../config/environment','./faxInteraction.attributes','exports','define','FaxInteraction','fax_interactions','changed','closed','closedAt','YYYY-MM-DD\x20HH:mm:ss','util'];(function(_0x53641d,_0x41f0d7){var _0x1dcbe9=function(_0x501c4c){while(--_0x501c4c){_0x53641d['push'](_0x53641d['shift']());}};_0x1dcbe9(++_0x41f0d7);}(_0xb49b,0x194));var _0xbb49=function(_0x14add3,_0x13ce8d){_0x14add3=_0x14add3-0x0;var _0x4a174f=_0xb49b[_0x14add3];return _0x4a174f;};'use strict';var _=require('lodash');var util=require(_0xbb49('0x0'));var logger=require('../../config/logger')(_0xbb49('0x1'));var moment=require(_0xbb49('0x2'));var BPromise=require('bluebird');var rp=require(_0xbb49('0x3'));var fs=require('fs');var path=require(_0xbb49('0x4'));var rimraf=require('rimraf');var config=require(_0xbb49('0x5'));var attributes=require(_0xbb49('0x6'));module[_0xbb49('0x7')]=function(_0x22efa4,_0x3f829f){return _0x22efa4[_0xbb49('0x8')](_0xbb49('0x9'),attributes,{'tableName':_0xbb49('0xa'),'paranoid':![],'indexes':[],'timestamps':!![],'hooks':{'beforeUpdate':function(_0x4c854f,_0x4b043a,_0x51b1c5){if(_0x4c854f[_0xbb49('0xb')](_0xbb49('0xc'))){_0x4c854f[_0xbb49('0xd')]=moment()['format'](_0xbb49('0xe'));}_0x51b1c5(null,_0x4c854f);}}});};
\ No newline at end of file
index 42ec134..12afec5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0x040c=['defaults','localhost','./faxInteraction.socket','info','FaxInteraction,\x20%s,\x20%s','request\x20sent','debug','FaxInteraction,\x20%s,\x20%s,\x20%s','stringify','error','code','message','catch','UpdateFaxInteraction','FaxInteraction','update','body','options','raw','attributes','limit','then','AddTagsToFaxInteraction','find','where','ids','omit','spread','AddTags','lodash','util','moment','bluebird','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','http','redis'];(function(_0x403c20,_0x4a7b99){var _0x2b271a=function(_0x106ecb){while(--_0x106ecb){_0x403c20['push'](_0x403c20['shift']());}};_0x2b271a(++_0x4a7b99);}(_0x040c,0x197));var _0xc040=function(_0x4f0f0f,_0x39be4e){_0x4f0f0f=_0x4f0f0f-0x0;var _0x5b5d7f=_0x040c[_0x4f0f0f];return _0x5b5d7f;};'use strict';var _=require(_0xc040('0x0'));var util=require(_0xc040('0x1'));var moment=require(_0xc040('0x2'));var BPromise=require(_0xc040('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0xc040('0x4'));var db=require(_0xc040('0x5'))['db'];var utils=require(_0xc040('0x6'));var logger=require(_0xc040('0x7'))(_0xc040('0x8'));var config=require(_0xc040('0x9'));var jayson=require(_0xc040('0xa'));var client=jayson['client'][_0xc040('0xb')]({'port':0x232a});config[_0xc040('0xc')]=_[_0xc040('0xd')](config[_0xc040('0xc')],{'host':_0xc040('0xe'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config['redis']));require(_0xc040('0xf'))['register'](socket);function respondWithRpcPromise(_0x21fe6a,_0x437962,_0x2b63c8){return new BPromise(function(_0x45de57,_0xd86a5b){return client['request'](_0x21fe6a,_0x2b63c8)['then'](function(_0x2a841b){logger[_0xc040('0x10')](_0xc040('0x11'),_0x437962,_0xc040('0x12'));logger[_0xc040('0x13')](_0xc040('0x14'),_0x437962,_0xc040('0x12'),JSON[_0xc040('0x15')](_0x2a841b));if(_0x2a841b[_0xc040('0x16')]){if(_0x2a841b[_0xc040('0x16')][_0xc040('0x17')]===0x1f4){logger[_0xc040('0x16')](_0xc040('0x11'),_0x437962,_0x2a841b[_0xc040('0x16')]['message']);return _0xd86a5b(_0x2a841b[_0xc040('0x16')][_0xc040('0x18')]);}logger[_0xc040('0x16')](_0xc040('0x11'),_0x437962,_0x2a841b['error'][_0xc040('0x18')]);return _0x45de57(_0x2a841b[_0xc040('0x16')][_0xc040('0x18')]);}else{logger[_0xc040('0x10')](_0xc040('0x11'),_0x437962,_0xc040('0x12'));_0x45de57(_0x2a841b['result']['message']);}})[_0xc040('0x19')](function(_0xe30580){logger[_0xc040('0x16')](_0xc040('0x11'),_0x437962,_0xe30580);_0xd86a5b(_0xe30580);});});}exports[_0xc040('0x1a')]=function(_0x467483){var _0x4d191b=this;return new Promise(function(_0x40cfc3,_0x4bd024){return db[_0xc040('0x1b')][_0xc040('0x1c')](_0x467483[_0xc040('0x1d')],{'raw':_0x467483[_0xc040('0x1e')]?_0x467483['options'][_0xc040('0x1f')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x467483[_0xc040('0x1e')]?_0x467483[_0xc040('0x1e')]['where']||null:null,'attributes':_0x467483['options']?_0x467483[_0xc040('0x1e')][_0xc040('0x20')]||null:null,'limit':_0x467483['options']?_0x467483[_0xc040('0x1e')][_0xc040('0x21')]||null:null})[_0xc040('0x22')](function(_0x445970){logger[_0xc040('0x10')](_0xc040('0x1a'),_0x467483);logger['debug'](_0xc040('0x1a'),_0x467483,JSON[_0xc040('0x15')](_0x445970));_0x40cfc3(_0x445970);})['catch'](function(_0x2daca4){logger[_0xc040('0x16')]('UpdateFaxInteraction',_0x2daca4[_0xc040('0x18')],_0x467483);_0x4bd024(_0x4d191b[_0xc040('0x16')](0x1f4,_0x2daca4[_0xc040('0x18')]));});});};exports[_0xc040('0x23')]=function(_0x42b20a){return new Promise(function(_0x162a49,_0x470cb7){return db[_0xc040('0x1b')][_0xc040('0x24')]({'where':_0x42b20a[_0xc040('0x1e')]?_0x42b20a[_0xc040('0x1e')][_0xc040('0x25')]||null:null})[_0xc040('0x22')](function(_0x498e11){if(_0x498e11){return _0x498e11['addTags'](_0x42b20a[_0xc040('0x1d')][_0xc040('0x26')],_[_0xc040('0x27')](_0x42b20a[_0xc040('0x1d')],['ids','id'])||{});}})[_0xc040('0x28')](function(_0x45dbeb){logger['info']('AddTags',_0x42b20a);logger['debug'](_0xc040('0x29'),_0x42b20a,JSON[_0xc040('0x15')](_0x45dbeb));_0x162a49(_0x45dbeb);})[_0xc040('0x19')](function(_0x442ef1){logger[_0xc040('0x16')](_0xc040('0x29'),_0x442ef1[_0xc040('0x18')],_0x42b20a);_0x470cb7(_this[_0xc040('0x16')](0x1f4,_0x442ef1[_0xc040('0x18')]));});});};
\ No newline at end of file
index ef74fb7..294f85c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0xdac3=['length','faxInteraction:','update','emit','removeListener','register'];(function(_0x510b98,_0x4c4cbb){var _0x45e775=function(_0x29ec11){while(--_0x29ec11){_0x510b98['push'](_0x510b98['shift']());}};_0x45e775(++_0x4c4cbb);}(_0xdac3,0x7a));var _0x3dac=function(_0x13d915,_0x306818){_0x13d915=_0x13d915-0x0;var _0x3e1907=_0xdac3[_0x13d915];return _0x3e1907;};'use strict';var FaxInteractionEvents=require('./faxInteraction.events');var events=['save','remove',_0x3dac('0x0')];function createListener(_0x2aaffd,_0x3e7d62){return function(_0x2336cc){_0x3e7d62[_0x3dac('0x1')](_0x2aaffd,_0x2336cc);};}function removeListener(_0x511c5e,_0xf42b43){return function(){FaxInteractionEvents[_0x3dac('0x2')](_0x511c5e,_0xf42b43);};}exports[_0x3dac('0x3')]=function(_0xedf005){for(var _0x1bc19a=0x0,_0x157396=events[_0x3dac('0x4')];_0x1bc19a<_0x157396;_0x1bc19a++){var _0x4b0b47=events[_0x1bc19a];var _0x444120=createListener(_0x3dac('0x5')+_0x4b0b47,_0xedf005);FaxInteractionEvents['on'](_0x4b0b47,_0x444120);}};
\ No newline at end of file
index f8dbca2..d6716ee 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0x2b2f=['exports','multer','path','connect-timeout','fs-extra','../../components/auth/service','../../components/interaction/service','./faxInteraction.controller','get','isAuthenticated','index','describe','/:id','/:id/messages','getMessages','/:id/download','download','post','create','addMessage','/:id/tags','tracked','fax','faxinteraction:addtags','addTags','put','faxinteraction:update','update','delete','faxinteraction:destroy','removeTags'];(function(_0x2261ce,_0x9ed8b6){var _0x524640=function(_0x3cbb90){while(--_0x3cbb90){_0x2261ce['push'](_0x2261ce['shift']());}};_0x524640(++_0x9ed8b6);}(_0x2b2f,0x137));var _0xf2b2=function(_0x501510,_0x61caa9){_0x501510=_0x501510-0x0;var _0x1e6ee5=_0x2b2f[_0x501510];return _0x1e6ee5;};'use strict';var multer=require(_0xf2b2('0x0'));var util=require('util');var path=require(_0xf2b2('0x1'));var timeout=require(_0xf2b2('0x2'));var express=require('express');var router=express['Router']();var fs_extra=require(_0xf2b2('0x3'));var auth=require(_0xf2b2('0x4'));var interaction=require(_0xf2b2('0x5'));var config=require('../../config/environment');var controller=require(_0xf2b2('0x6'));router[_0xf2b2('0x7')]('/',auth[_0xf2b2('0x8')](),controller[_0xf2b2('0x9')]);router[_0xf2b2('0x7')]('/describe',auth[_0xf2b2('0x8')](),controller[_0xf2b2('0xa')]);router[_0xf2b2('0x7')](_0xf2b2('0xb'),auth[_0xf2b2('0x8')](),controller['show']);router[_0xf2b2('0x7')](_0xf2b2('0xc'),auth[_0xf2b2('0x8')](),controller[_0xf2b2('0xd')]);router['get'](_0xf2b2('0xe'),auth[_0xf2b2('0x8')](),controller[_0xf2b2('0xf')]);router[_0xf2b2('0x10')]('/',auth['isAuthenticated'](),controller[_0xf2b2('0x11')]);router[_0xf2b2('0x10')](_0xf2b2('0xc'),auth[_0xf2b2('0x8')](),controller[_0xf2b2('0x12')]);router[_0xf2b2('0x10')](_0xf2b2('0x13'),auth[_0xf2b2('0x8')](),interaction[_0xf2b2('0x14')](_0xf2b2('0x15'),_0xf2b2('0x16')),controller[_0xf2b2('0x17')]);router[_0xf2b2('0x18')](_0xf2b2('0xb'),auth[_0xf2b2('0x8')](),interaction[_0xf2b2('0x14')](_0xf2b2('0x15'),_0xf2b2('0x19')),controller[_0xf2b2('0x1a')]);router[_0xf2b2('0x1b')]('/:id',auth[_0xf2b2('0x8')](),interaction[_0xf2b2('0x14')](_0xf2b2('0x15'),_0xf2b2('0x1c')),controller['destroy']);router[_0xf2b2('0x1b')](_0xf2b2('0x13'),auth['isAuthenticated'](),controller[_0xf2b2('0x1d')]);module[_0xf2b2('0x1e')]=router;
\ No newline at end of file
index 790a5a6..e9b7619 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0xc368=['ENUM','out','DATE','exports','medium','BOOLEAN'];(function(_0x17406e,_0x1049fd){var _0x2bfc5a=function(_0x2aae05){while(--_0x2aae05){_0x17406e['push'](_0x17406e['shift']());}};_0x2bfc5a(++_0x1049fd);}(_0xc368,0x7b));var _0x8c36=function(_0x2bef15,_0x404231){_0x2bef15=_0x2bef15-0x0;var _0x37293d=_0xc368[_0x2bef15];return _0x37293d;};'use strict';var Sequelize=require('sequelize');module[_0x8c36('0x0')]={'body':{'type':Sequelize['TEXT'](_0x8c36('0x1')),'allowNull':![]},'read':{'type':Sequelize[_0x8c36('0x2')],'defaultValue':![]},'direction':{'type':Sequelize[_0x8c36('0x3')]('in',_0x8c36('0x4')),'defaultValue':_0x8c36('0x4'),'allowNull':![]},'failMessage':{'type':Sequelize['TEXT'],'defaultValue':null},'readAt':{'type':Sequelize[_0x8c36('0x5')]}};
\ No newline at end of file
index 19c6ad5..86bf054 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0xf891=['code','message','catch','sendStatus','status','end','json','undefined','limit','offset','set','apply','reject','save','update','stack','name','send','index','map','FaxMessage','rawAttributes','fieldName','key','model','query','keys','filters','intersection','fields','attributes','hasOwnProperty','nolimit','order','sort','where','pick','filter','merge','type','VIRTUAL','options','count','includeAll','include','findAll','rows','show','params','length','find','body','destroy','describe','../../config/logger','fax-interactions','accept','fax','format','YYYY-MM-DD\x20HH:mm:ss','UserId','FaxInteraction','FaxInteractionId','isNil','read1stAt','interaction','get','user','role','stringify','null','AcceptMessage','acceptMessage','SELECT\x20*\x20FROM\x20cm_contacts\x20WHERE\x20id\x20=\x20','Sequelize','QueryTypes','SELECT','User','agent','email','interface','channel','motionChannel','event','EventManager','acceptmessage','[FAXMESSAGE:REJECT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s','RejectMessage','rejectMessage','ContactId','sequelize','contact','fullname','internal','SIP/%s','create','findOne','Attachment','AttachmentId','SendFax','FaxAccountId','/var/opt/motion2/server/files/attachments/%s','basename','download','root','files','attachments','join','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','path','to-csv','fs-extra','lodash','squel','crypto','desk.js','papaparse','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','redis','localhost','socket.io-emitter','./faxMessage.socket','register','jayson/promise','client','http','request','then','info','FaxMessage,\x20%s,\x20%s','request\x20sent','debug','FaxMessage,\x20%s,\x20%s,\x20%s','error'];(function(_0x455c6c,_0x1e78b7){var _0x488242=function(_0x3e8fb0){while(--_0x3e8fb0){_0x455c6c['push'](_0x455c6c['shift']());}};_0x488242(++_0x1e78b7);}(_0xf891,0x6c));var _0x1f89=function(_0x1edf2f,_0x3033e7){_0x1edf2f=_0x1edf2f-0x0;var _0x5b401c=_0xf891[_0x1edf2f];return _0x5b401c;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x1f89('0x0'));var zipdir=require(_0x1f89('0x1'));var jsonpatch=require(_0x1f89('0x2'));var rp=require(_0x1f89('0x3'));var moment=require(_0x1f89('0x4'));var BPromise=require(_0x1f89('0x5'));var Mustache=require('mustache');var util=require('util');var path=require(_0x1f89('0x6'));var sox=require('sox');var csv=require(_0x1f89('0x7'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x1f89('0x8'));var _=require(_0x1f89('0x9'));var squel=require(_0x1f89('0xa'));var crypto=require(_0x1f89('0xb'));var jsforce=require('jsforce');var deskjs=require(_0x1f89('0xc'));var toCsv=require(_0x1f89('0x7'));var querystring=require('querystring');var Papa=require(_0x1f89('0xd'));var Redis=require('ioredis');var authService=require(_0x1f89('0xe'));var qs=require(_0x1f89('0xf'));var as=require(_0x1f89('0x10'));var hardwareService=require('../../config/license/hardware');var logger=require('../../config/logger')('api');var utils=require(_0x1f89('0x11'));var config=require(_0x1f89('0x12'));var licenseUtil=require(_0x1f89('0x13'));var db=require(_0x1f89('0x14'))['db'];config[_0x1f89('0x15')]=_['defaults'](config[_0x1f89('0x15')],{'host':_0x1f89('0x16'),'port':0x18eb});var socket=require(_0x1f89('0x17'))(new Redis(config[_0x1f89('0x15')]));require(_0x1f89('0x18'))[_0x1f89('0x19')](socket);var jayson=require(_0x1f89('0x1a'));var client=jayson[_0x1f89('0x1b')][_0x1f89('0x1c')]({'port':0x232c});var client9002=jayson['client'][_0x1f89('0x1c')]({'port':0x232a});function respondWithRpcPromise(_0xdb28b8,_0x50753c,_0x14fb81,_0x4deb31){return new BPromise(function(_0x6dad8d,_0x5baf9f){var _0x3fc724=_0x4deb31||client;return _0x3fc724[_0x1f89('0x1d')](_0xdb28b8,_0x14fb81)[_0x1f89('0x1e')](function(_0x27c4ed){logger[_0x1f89('0x1f')](_0x1f89('0x20'),_0x50753c,_0x1f89('0x21'));logger[_0x1f89('0x22')](_0x1f89('0x23'),_0x50753c,_0x1f89('0x21'),JSON['stringify'](_0x27c4ed));if(_0x27c4ed['error']){if(_0x27c4ed[_0x1f89('0x24')][_0x1f89('0x25')]===0x1f4){logger[_0x1f89('0x24')](_0x1f89('0x20'),_0x50753c,_0x27c4ed[_0x1f89('0x24')]['message']);return _0x5baf9f(_0x27c4ed[_0x1f89('0x24')]['message']);}logger[_0x1f89('0x24')]('FaxMessage,\x20%s,\x20%s',_0x50753c,_0x27c4ed['error'][_0x1f89('0x26')]);return _0x6dad8d(_0x27c4ed[_0x1f89('0x24')][_0x1f89('0x26')]);}else{logger[_0x1f89('0x1f')](_0x1f89('0x20'),_0x50753c,_0x1f89('0x21'));_0x6dad8d(_0x27c4ed['result'][_0x1f89('0x26')]);}})[_0x1f89('0x27')](function(_0xde778f){logger[_0x1f89('0x24')]('FaxMessage,\x20%s,\x20%s',_0x50753c,_0xde778f);_0x5baf9f(_0xde778f);});});}function respondWithStatusCode(_0x59da83,_0x5500a5){_0x5500a5=_0x5500a5||0xcc;return function(_0x5b52ba){if(_0x5b52ba){return _0x59da83[_0x1f89('0x28')](_0x5500a5);}return _0x59da83[_0x1f89('0x29')](_0x5500a5)[_0x1f89('0x2a')]();};}function respondWithResult(_0x378899,_0x254903){_0x254903=_0x254903||0xc8;return function(_0x238312){if(_0x238312){return _0x378899[_0x1f89('0x29')](_0x254903)[_0x1f89('0x2b')](_0x238312);}};}function respondWithFilteredResult(_0x3f6d63,_0x429af3){return function(_0x19ebcb){if(_0x19ebcb){var _0x505c3e=typeof _0x429af3['offset']===_0x1f89('0x2c')&&typeof _0x429af3[_0x1f89('0x2d')]==='undefined';var _0x42576a=_0x19ebcb['count'];var _0x480aea=_0x505c3e?0x0:_0x429af3['offset'];var _0xd3b4af=_0x505c3e?_0x19ebcb['count']:_0x429af3[_0x1f89('0x2e')]+_0x429af3[_0x1f89('0x2d')];var _0x11f519;if(_0xd3b4af>=_0x42576a){_0xd3b4af=_0x42576a;_0x11f519=0xc8;}else{_0x11f519=0xce;}_0x3f6d63[_0x1f89('0x29')](_0x11f519);return _0x3f6d63[_0x1f89('0x2f')]('Content-Range',_0x480aea+'-'+_0xd3b4af+'/'+_0x42576a)[_0x1f89('0x2b')](_0x19ebcb);}return null;};}function patchUpdates(_0x16d3d2){return function(_0x378258){try{jsonpatch[_0x1f89('0x30')](_0x378258,_0x16d3d2,!![]);}catch(_0x1882ec){return BPromise[_0x1f89('0x31')](_0x1882ec);}return _0x378258[_0x1f89('0x32')]();};}function saveUpdates(_0x2b5b49,_0x4a93f7){return function(_0x2c4cf4){if(_0x2c4cf4){return _0x2c4cf4[_0x1f89('0x33')](_0x2b5b49)[_0x1f89('0x1e')](function(_0x966272){return _0x966272;});}return null;};}function removeEntity(_0xc80f39,_0x27d715){return function(_0x27fe0e){if(_0x27fe0e){return _0x27fe0e['destroy']()[_0x1f89('0x1e')](function(){_0xc80f39[_0x1f89('0x29')](0xcc)[_0x1f89('0x2a')]();});}};}function handleEntityNotFound(_0x1eb053,_0x1c0c18){return function(_0x2e188d){if(!_0x2e188d){_0x1eb053[_0x1f89('0x28')](0x194);}return _0x2e188d;};}function handleError(_0x18a3a3,_0x4d8317){_0x4d8317=_0x4d8317||0x1f4;return function(_0x3d3c18){logger['error'](_0x3d3c18[_0x1f89('0x34')]);if(_0x3d3c18['name']){delete _0x3d3c18[_0x1f89('0x35')];}_0x18a3a3[_0x1f89('0x29')](_0x4d8317)[_0x1f89('0x36')](_0x3d3c18);};}exports[_0x1f89('0x37')]=function(_0x1f4989,_0x355846){var _0x22765f={},_0x23f53a={},_0x3347d3={'count':0x0,'rows':[]};var _0x5d21b1=_[_0x1f89('0x38')](db[_0x1f89('0x39')][_0x1f89('0x3a')],function(_0x5e140d){return{'name':_0x5e140d[_0x1f89('0x3b')],'type':_0x5e140d['type'][_0x1f89('0x3c')]};});_0x23f53a[_0x1f89('0x3d')]=_[_0x1f89('0x38')](_0x5d21b1,_0x1f89('0x35'));_0x23f53a[_0x1f89('0x3e')]=_[_0x1f89('0x3f')](_0x1f4989['query']);_0x23f53a[_0x1f89('0x40')]=_[_0x1f89('0x41')](_0x23f53a[_0x1f89('0x3d')],_0x23f53a['query']);_0x22765f['attributes']=_['intersection'](_0x23f53a[_0x1f89('0x3d')],qs[_0x1f89('0x42')](_0x1f4989[_0x1f89('0x3e')][_0x1f89('0x42')]));_0x22765f['attributes']=_0x22765f[_0x1f89('0x43')]['length']?_0x22765f[_0x1f89('0x43')]:_0x23f53a[_0x1f89('0x3d')];if(!_0x1f4989[_0x1f89('0x3e')][_0x1f89('0x44')](_0x1f89('0x45'))){_0x22765f['limit']=qs['limit'](_0x1f4989['query'][_0x1f89('0x2d')]);_0x22765f[_0x1f89('0x2e')]=qs['offset'](_0x1f4989[_0x1f89('0x3e')][_0x1f89('0x2e')]);}_0x22765f[_0x1f89('0x46')]=qs[_0x1f89('0x47')](_0x1f4989[_0x1f89('0x3e')][_0x1f89('0x47')]);_0x22765f[_0x1f89('0x48')]=qs[_0x1f89('0x40')](_[_0x1f89('0x49')](_0x1f4989[_0x1f89('0x3e')],_0x23f53a[_0x1f89('0x40')]),_0x5d21b1);if(_0x1f4989[_0x1f89('0x3e')][_0x1f89('0x4a')]){_0x22765f[_0x1f89('0x48')]=_[_0x1f89('0x4b')](_0x22765f['where'],{'$or':_[_0x1f89('0x38')](_0x5d21b1,function(_0x444e7e){if(_0x444e7e[_0x1f89('0x4c')]!==_0x1f89('0x4d')){var _0x1d2671={};_0x1d2671[_0x444e7e[_0x1f89('0x35')]]={'$like':'%'+_0x1f4989[_0x1f89('0x3e')][_0x1f89('0x4a')]+'%'};return _0x1d2671;}})});}_0x22765f=_['merge']({},_0x22765f,_0x1f4989[_0x1f89('0x4e')]);var _0x5166eb={'where':_0x22765f['where']};return db[_0x1f89('0x39')][_0x1f89('0x4f')](_0x5166eb)[_0x1f89('0x1e')](function(_0x2ca1eb){_0x3347d3[_0x1f89('0x4f')]=_0x2ca1eb;if(_0x1f4989['query'][_0x1f89('0x50')]){_0x22765f[_0x1f89('0x51')]=[{'all':!![]}];}return db[_0x1f89('0x39')][_0x1f89('0x52')](_0x22765f);})[_0x1f89('0x1e')](function(_0x277118){_0x3347d3[_0x1f89('0x53')]=_0x277118;return _0x3347d3;})[_0x1f89('0x1e')](respondWithFilteredResult(_0x355846,_0x22765f))['catch'](handleError(_0x355846,null));};exports[_0x1f89('0x54')]=function(_0x570035,_0x38455b){var _0x25d6e0={'raw':!![],'where':{'id':_0x570035[_0x1f89('0x55')]['id']}},_0x57f1ed={};_0x57f1ed[_0x1f89('0x3d')]=_[_0x1f89('0x3f')](db['FaxMessage'][_0x1f89('0x3a')]);_0x57f1ed[_0x1f89('0x3e')]=_['keys'](_0x570035[_0x1f89('0x3e')]);_0x57f1ed[_0x1f89('0x40')]=_[_0x1f89('0x41')](_0x57f1ed['model'],_0x57f1ed['query']);_0x25d6e0['attributes']=_[_0x1f89('0x41')](_0x57f1ed['model'],qs[_0x1f89('0x42')](_0x570035[_0x1f89('0x3e')][_0x1f89('0x42')]));_0x25d6e0[_0x1f89('0x43')]=_0x25d6e0[_0x1f89('0x43')][_0x1f89('0x56')]?_0x25d6e0['attributes']:_0x57f1ed[_0x1f89('0x3d')];if(_0x570035[_0x1f89('0x3e')][_0x1f89('0x50')]){_0x25d6e0[_0x1f89('0x51')]=[{'all':!![]}];}_0x25d6e0=_[_0x1f89('0x4b')]({},_0x25d6e0,_0x570035['options']);return db[_0x1f89('0x39')][_0x1f89('0x57')](_0x25d6e0)[_0x1f89('0x1e')](handleEntityNotFound(_0x38455b,null))['then'](respondWithResult(_0x38455b,null))[_0x1f89('0x27')](handleError(_0x38455b,null));};exports[_0x1f89('0x33')]=function(_0x15d45e,_0xb39986){if(_0x15d45e[_0x1f89('0x58')]['id']){delete _0x15d45e[_0x1f89('0x58')]['id'];}return db['FaxMessage']['find']({'where':{'id':_0x15d45e[_0x1f89('0x55')]['id']}})[_0x1f89('0x1e')](handleEntityNotFound(_0xb39986,null))[_0x1f89('0x1e')](saveUpdates(_0x15d45e[_0x1f89('0x58')],null))[_0x1f89('0x1e')](respondWithResult(_0xb39986,null))[_0x1f89('0x27')](handleError(_0xb39986,null));};exports[_0x1f89('0x59')]=function(_0x1dcb46,_0x4b4eee){return db[_0x1f89('0x39')][_0x1f89('0x57')]({'where':{'id':_0x1dcb46['params']['id']}})[_0x1f89('0x1e')](handleEntityNotFound(_0x4b4eee,null))[_0x1f89('0x1e')](removeEntity(_0x4b4eee,null))[_0x1f89('0x27')](handleError(_0x4b4eee,null));};exports[_0x1f89('0x5a')]=function(_0x253d89,_0x4c0969){return db['FaxMessage'][_0x1f89('0x5a')]()['then'](respondWithResult(_0x4c0969,null))['catch'](handleError(_0x4c0969,null));};var interaction_log=require(_0x1f89('0x5b'))(_0x1f89('0x5c'));exports[_0x1f89('0x5d')]=function(_0x53858e,_0x44fb21,_0x4382c1){var _0x8eb24b={'agent':{},'channel':_0x1f89('0x5e')};if(_0x53858e[_0x1f89('0x58')]['id']){delete _0x53858e[_0x1f89('0x58')]['id'];}_0x53858e[_0x1f89('0x58')]['read']=!![];_0x53858e[_0x1f89('0x58')]['readAt']=moment()[_0x1f89('0x5f')](_0x1f89('0x60'));_0x53858e[_0x1f89('0x58')][_0x1f89('0x61')]=_0x53858e[_0x1f89('0x58')][_0x1f89('0x61')]||_0x53858e['user']['id'];_0x8eb24b['agent']['id']=_0x53858e[_0x1f89('0x58')][_0x1f89('0x61')];return db[_0x1f89('0x39')]['find']({'where':{'id':_0x53858e[_0x1f89('0x55')]['id'],'UserId':null}})[_0x1f89('0x1e')](handleEntityNotFound(_0x44fb21,null))[_0x1f89('0x1e')](saveUpdates(_0x53858e['body'],null))[_0x1f89('0x1e')](function(_0x19a87c){if(_0x19a87c){_0x8eb24b[_0x1f89('0x26')]=_0x19a87c['get']({'plain':!![]});return db[_0x1f89('0x62')]['find']({'where':{'id':_0x19a87c[_0x1f89('0x63')]}});}return null;})['then'](handleEntityNotFound(_0x44fb21,null))['then'](function(_0x5b748e){if(_0x5b748e){return _0x5b748e[_0x1f89('0x33')]({'UserId':_0x53858e['body']['UserId'],'read1stAt':_[_0x1f89('0x64')](_0x5b748e[_0x1f89('0x65')])?moment()[_0x1f89('0x5f')](_0x1f89('0x60')):undefined});}return null;})[_0x1f89('0x1e')](function(_0x44ef82){if(_0x44ef82){_0x8eb24b[_0x1f89('0x66')]=_0x44ef82[_0x1f89('0x67')]({'plain':!![]});interaction_log[_0x1f89('0x1f')]('[FAXMESSAGE:ACCEPT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s',_0x53858e['user']['id'],_0x53858e[_0x1f89('0x68')][_0x1f89('0x35')],_0x53858e[_0x1f89('0x68')][_0x1f89('0x69')],_0x8eb24b['interaction']['id'],_0x53858e[_0x1f89('0x58')]?JSON[_0x1f89('0x6a')](_0x53858e['body']):_0x1f89('0x6b'));return respondWithRpcPromise(_0x1f89('0x6c'),_0x1f89('0x6d'),_0x8eb24b);}return null;})['then'](function(_0x2b85fe){var _0x40e489=_0x1f89('0x6e')+_0x2b85fe[_0x1f89('0x26')]['ContactId'];return db['sequelize'][_0x1f89('0x3e')](_0x40e489,{'type':db[_0x1f89('0x6f')][_0x1f89('0x70')][_0x1f89('0x71')],'raw':!![]})[_0x1f89('0x1e')](function(_0x1f7596){return _0x1f7596;});})[_0x1f89('0x1e')](function(_0x339f61){if(_0x339f61){_0x8eb24b[_0x1f89('0x26')]['contact']=_0x339f61[0x0];if(!_0x53858e[_0x1f89('0x58')][_0x1f89('0x61')])return;return db[_0x1f89('0x72')][_0x1f89('0x57')]({'where':{'id':_0x53858e['body']['UserId'],'role':_0x1f89('0x73')},'attributes':['id',_0x1f89('0x35'),'fullname',_0x1f89('0x74'),'internal'],'raw':!![]});}return null;})[_0x1f89('0x1e')](function(_0x43a864){if(!_0x43a864)return null;_0x8eb24b[_0x1f89('0x26')]['agent']=_0x43a864;return _0x8eb24b;})[_0x1f89('0x1e')](function(_0x4796e7){if(_0x4796e7){if(_0x53858e[_0x1f89('0x58')]['manual']){_0x8eb24b['message'][_0x1f89('0x75')]=util[_0x1f89('0x5f')]('SIP/%s',_0x53858e[_0x1f89('0x68')][_0x1f89('0x35')]);_0x8eb24b[_0x1f89('0x26')][_0x1f89('0x76')]=_0x8eb24b['channel'];_0x8eb24b[_0x1f89('0x26')][_0x1f89('0x77')]=_0x8eb24b[_0x1f89('0x76')];_0x8eb24b[_0x1f89('0x26')][_0x1f89('0x78')]=_0x1f89('0x5d');return respondWithRpcPromise('EventManager',_0x1f89('0x79'),{'event':_0x1f89('0x7a'),'message':_0x8eb24b[_0x1f89('0x26')]},client9002)['then'](function(){return _0x8eb24b;});}return _0x8eb24b;}return null;})[_0x1f89('0x1e')](respondWithResult(_0x44fb21,null))['catch'](handleError(_0x44fb21,null));};var interaction_log=require(_0x1f89('0x5b'))(_0x1f89('0x5c'));exports[_0x1f89('0x31')]=function(_0x5bcae6,_0x1e8eba,_0x3b3766){var _0x134167={'agent':{},'channel':'fax'};if(_0x5bcae6[_0x1f89('0x58')]['id']){delete _0x5bcae6[_0x1f89('0x58')]['id'];}_0x5bcae6['body'][_0x1f89('0x61')]=_0x5bcae6[_0x1f89('0x58')][_0x1f89('0x61')]||_0x5bcae6[_0x1f89('0x68')]['id'];_0x134167[_0x1f89('0x73')]['id']=_0x5bcae6[_0x1f89('0x58')][_0x1f89('0x61')];return db[_0x1f89('0x39')]['find']({'where':{'id':_0x5bcae6['params']['id'],'UserId':null}})[_0x1f89('0x1e')](handleEntityNotFound(_0x1e8eba,null))[_0x1f89('0x1e')](function(_0x16320e){if(_0x16320e){_0x134167[_0x1f89('0x26')]=_0x16320e[_0x1f89('0x67')]({'plain':!![]});return db[_0x1f89('0x62')][_0x1f89('0x57')]({'where':{'id':_0x16320e['FaxInteractionId']}});}return null;})['then'](handleEntityNotFound(_0x1e8eba,null))[_0x1f89('0x1e')](function(_0x22a244){if(_0x22a244){_0x134167['interaction']=_0x22a244[_0x1f89('0x67')]({'plain':!![]});interaction_log[_0x1f89('0x1f')](_0x1f89('0x7b'),_0x5bcae6[_0x1f89('0x68')]['id'],_0x5bcae6[_0x1f89('0x68')][_0x1f89('0x35')],_0x5bcae6['user'][_0x1f89('0x69')],_0x134167[_0x1f89('0x66')]['id'],_0x5bcae6[_0x1f89('0x58')]?JSON[_0x1f89('0x6a')](_0x5bcae6[_0x1f89('0x58')]):_0x1f89('0x6b'));return respondWithRpcPromise(_0x1f89('0x7c'),_0x1f89('0x7d'),_0x134167);}return null;})[_0x1f89('0x1e')](function(_0x19d4e0){var _0xbbeb82=_0x1f89('0x6e')+_0x19d4e0[_0x1f89('0x26')][_0x1f89('0x7e')];return db[_0x1f89('0x7f')][_0x1f89('0x3e')](_0xbbeb82,{'type':db[_0x1f89('0x6f')][_0x1f89('0x70')]['SELECT'],'raw':!![]})[_0x1f89('0x1e')](function(_0x458c9e){return _0x458c9e;});})[_0x1f89('0x1e')](function(_0x1b77b1){if(_0x1b77b1){_0x134167[_0x1f89('0x26')][_0x1f89('0x80')]=_0x1b77b1[0x0];if(!_0x5bcae6['body'][_0x1f89('0x61')])return;return db['User']['find']({'where':{'id':_0x5bcae6[_0x1f89('0x58')][_0x1f89('0x61')],'role':_0x1f89('0x73')},'attributes':['id',_0x1f89('0x35'),_0x1f89('0x81'),_0x1f89('0x74'),_0x1f89('0x82')],'raw':!![]});}return null;})['then'](function(_0x53cd17){if(!_0x53cd17)return null;_0x134167['message'][_0x1f89('0x73')]=_0x53cd17;return _0x134167;})['then'](function(_0x4ad014){if(_0x4ad014){_0x4ad014['message'][_0x1f89('0x75')]=util['format'](_0x1f89('0x83'),_0x5bcae6[_0x1f89('0x68')][_0x1f89('0x35')]);_0x4ad014[_0x1f89('0x26')][_0x1f89('0x76')]=_0x134167[_0x1f89('0x76')];_0x4ad014[_0x1f89('0x26')][_0x1f89('0x77')]=_0x134167['channel'];_0x4ad014['message'][_0x1f89('0x78')]=_0x1f89('0x31');respondWithRpcPromise(_0x1f89('0x79'),_0x1f89('0x79'),{'event':'rejectmessage','message':_0x4ad014[_0x1f89('0x26')]},client9002);return _0x134167;}return null;})['then'](respondWithResult(_0x1e8eba,null))['catch'](handleError(_0x1e8eba,null));};exports[_0x1f89('0x84')]=function(_0x2098c3,_0x32738e){var _0x2dd6ca;return db[_0x1f89('0x39')][_0x1f89('0x84')](_0x2098c3['body'],{})['then'](function(_0x78cfd3){_0x2dd6ca=_0x78cfd3;return db['CmContact'][_0x1f89('0x85')]({'where':{'id':_0x2dd6ca[_0x1f89('0x7e')]}});})[_0x1f89('0x1e')](function(_0x1b7639){if(_['isNil'](_0x1b7639)){return;}else{_0x2dd6ca['fax']=_0x1b7639[_0x1f89('0x5e')];return db[_0x1f89('0x86')][_0x1f89('0x85')]({'where':{'id':_0x2dd6ca[_0x1f89('0x87')]}});}})[_0x1f89('0x1e')](function(_0x55eb06){return respondWithRpcPromise(_0x1f89('0x88'),'SendFax',{'FaxAccountId':_[_0x1f89('0x64')](_0x2098c3[_0x1f89('0x58')])?undefined:_0x2098c3['body'][_0x1f89('0x89')],'path':_[_0x1f89('0x64')](_0x55eb06)?undefined:util[_0x1f89('0x5f')](_0x1f89('0x8a'),_0x55eb06[_0x1f89('0x8b')]),'fax':_[_0x1f89('0x64')](_0x2dd6ca[_0x1f89('0x5e')])?undefined:_0x2dd6ca['fax'],'AttachmentId':_0x2dd6ca[_0x1f89('0x87')]},client9002);})[_0x1f89('0x1e')](respondWithResult(_0x32738e,0xc9))[_0x1f89('0x27')](handleError(_0x32738e,null));};exports[_0x1f89('0x8c')]=function(_0x4e5bab,_0x6c38ac){var _0x235afc=path['join'](config[_0x1f89('0x8d')],'server',_0x1f89('0x8e'),_0x1f89('0x8f'));return db['FaxMessage']['find']({'where':{'id':_0x4e5bab[_0x1f89('0x55')]['id']},'include':[{'model':db['Attachment'],'as':'Attachment'}]})[_0x1f89('0x1e')](handleEntityNotFound(_0x6c38ac,null))[_0x1f89('0x1e')](function(_0xa1d233){if(_0xa1d233){return _0x6c38ac[_0x1f89('0x8c')](path[_0x1f89('0x90')](_0x235afc,_0xa1d233[_0x1f89('0x86')][_0x1f89('0x8b')]));}})[_0x1f89('0x27')](handleError(_0x6c38ac,null));};
\ No newline at end of file
index 1036c43..e67ff9a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0x002d=['emit','hasOwnProperty','hook','exports','events','../../mysqldb','FaxMessage','update','remove'];(function(_0x508215,_0x5a3b72){var _0x52b2f4=function(_0x489837){while(--_0x489837){_0x508215['push'](_0x508215['shift']());}};_0x52b2f4(++_0x5a3b72);}(_0x002d,0xca));var _0xd002=function(_0x2477ae,_0xe4ea39){_0x2477ae=_0x2477ae-0x0;var _0x53d054=_0x002d[_0x2477ae];return _0x53d054;};'use strict';var EventEmitter=require(_0xd002('0x0'));var FaxMessage=require(_0xd002('0x1'))['db'][_0xd002('0x2')];var FaxMessageEvents=new EventEmitter();FaxMessageEvents['setMaxListeners'](0x0);var events={'afterCreate':'save','afterUpdate':_0xd002('0x3'),'afterDestroy':_0xd002('0x4')};function emitEvent(_0x1c0d0a){return function(_0x24ff42,_0x1323f0,_0x179915){FaxMessageEvents[_0xd002('0x5')](_0x1c0d0a+':'+_0x24ff42['id'],_0x24ff42);FaxMessageEvents[_0xd002('0x5')](_0x1c0d0a,_0x24ff42);_0x179915(null);};}for(var e in events){if(events[_0xd002('0x6')](e)){var event=events[e];FaxMessage[_0xd002('0x7')](e,emitEvent(event));}}module[_0xd002('0x8')]=FaxMessageEvents;
\ No newline at end of file
index 2d621a1..636707d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0xae12=['toLowerCase','direction','out','secret','UserId','FaxInteraction','FaxInteractionId','update','catch','error','utf8mb4_unicode_ci','lodash','util','api','moment','bluebird','request-promise','path','rimraf','../../config/environment','exports','define','FaxMessage','fti_fax_messages','body','models'];(function(_0x1f4dbf,_0x59178d){var _0x343c0d=function(_0x1a19b3){while(--_0x1a19b3){_0x1f4dbf['push'](_0x1f4dbf['shift']());}};_0x343c0d(++_0x59178d);}(_0xae12,0xc1));var _0x2ae1=function(_0x1dd532,_0x36e81c){_0x1dd532=_0x1dd532-0x0;var _0x3732aa=_0xae12[_0x1dd532];return _0x3732aa;};'use strict';var _=require(_0x2ae1('0x0'));var util=require(_0x2ae1('0x1'));var logger=require('../../config/logger')(_0x2ae1('0x2'));var moment=require(_0x2ae1('0x3'));var BPromise=require(_0x2ae1('0x4'));var rp=require(_0x2ae1('0x5'));var fs=require('fs');var path=require(_0x2ae1('0x6'));var rimraf=require(_0x2ae1('0x7'));var config=require(_0x2ae1('0x8'));var attributes=require('./faxMessage.attributes');module[_0x2ae1('0x9')]=function(_0x3833f0,_0x2388d3){return _0x3833f0[_0x2ae1('0xa')](_0x2ae1('0xb'),attributes,{'tableName':'fax_messages','paranoid':![],'indexes':[{'name':_0x2ae1('0xc'),'fields':[_0x2ae1('0xd')],'type':'FULLTEXT'}],'timestamps':!![],'hooks':{'afterCreate':function(_0x55e437,_0x33bdbd,_0x103fda){var _0x1a7006=_0x3833f0[_0x2ae1('0xe')];var _0x292dd0=_0x55e437['get']({'plain':!![]});if(_0x292dd0['direction'][_0x2ae1('0xf')]()==='in'||_0x292dd0[_0x2ae1('0x10')]['toLowerCase']()===_0x2ae1('0x11')&&!_0x292dd0[_0x2ae1('0x12')]&&!_['isNil'](_0x292dd0[_0x2ae1('0x13')])){_0x1a7006[_0x2ae1('0x14')]['findOne']({'where':{'id':_0x292dd0[_0x2ae1('0x15')]}})['then'](function(_0xff4d3f){if(_0xff4d3f){_0xff4d3f[_0x2ae1('0x16')]({'lastMsgAt':_0x292dd0['createdAt'],'lastMsgDirection':_0x292dd0[_0x2ae1('0x10')][_0x2ae1('0xf')]()});}})[_0x2ae1('0x17')](function(_0x22a572){console[_0x2ae1('0x18')](_0x22a572);});}_0x103fda();}},'charset':'utf8mb4','collate':_0x2ae1('0x19')});};
\ No newline at end of file
index 6516695..011d094 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0x4b84=['CreateFaxMessage','FaxMessage','create','body','options','raw','stringify','UpdateFaxMessage','attributes','catch','lodash','util','randomstring','../../config/utils','../../config/logger','rpc','http','defaults','localhost','./faxMessage.socket','register','request','then','info','request\x20sent','debug','error','message','FaxMessage,\x20%s,\x20%s','result'];(function(_0x2b4f13,_0x58ce4d){var _0x593857=function(_0x44130e){while(--_0x44130e){_0x2b4f13['push'](_0x2b4f13['shift']());}};_0x593857(++_0x58ce4d);}(_0x4b84,0x1cc));var _0x44b8=function(_0x1cc961,_0x2c42ee){_0x1cc961=_0x1cc961-0x0;var _0x471d86=_0x4b84[_0x1cc961];return _0x471d86;};'use strict';var _=require(_0x44b8('0x0'));var util=require(_0x44b8('0x1'));var moment=require('moment');var BPromise=require('bluebird');var rs=require(_0x44b8('0x2'));var fs=require('fs');var Redis=require('ioredis');var db=require('../../mysqldb')['db'];var utils=require(_0x44b8('0x3'));var logger=require(_0x44b8('0x4'))(_0x44b8('0x5'));var config=require('../../config/environment');var jayson=require('jayson/promise');var client=jayson['client'][_0x44b8('0x6')]({'port':0x232a});config['redis']=_[_0x44b8('0x7')](config['redis'],{'host':_0x44b8('0x8'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config['redis']));require(_0x44b8('0x9'))[_0x44b8('0xa')](socket);function respondWithRpcPromise(_0x30ebc3,_0x48a371,_0xc650ec){return new BPromise(function(_0x2cc74b,_0x4315f6){return client[_0x44b8('0xb')](_0x30ebc3,_0xc650ec)[_0x44b8('0xc')](function(_0x37e471){logger[_0x44b8('0xd')]('FaxMessage,\x20%s,\x20%s',_0x48a371,_0x44b8('0xe'));logger[_0x44b8('0xf')]('FaxMessage,\x20%s,\x20%s,\x20%s',_0x48a371,_0x44b8('0xe'),JSON['stringify'](_0x37e471));if(_0x37e471[_0x44b8('0x10')]){if(_0x37e471[_0x44b8('0x10')]['code']===0x1f4){logger[_0x44b8('0x10')]('FaxMessage,\x20%s,\x20%s',_0x48a371,_0x37e471['error'][_0x44b8('0x11')]);return _0x4315f6(_0x37e471[_0x44b8('0x10')][_0x44b8('0x11')]);}logger[_0x44b8('0x10')]('FaxMessage,\x20%s,\x20%s',_0x48a371,_0x37e471['error']['message']);return _0x2cc74b(_0x37e471[_0x44b8('0x10')]['message']);}else{logger[_0x44b8('0xd')](_0x44b8('0x12'),_0x48a371,'request\x20sent');_0x2cc74b(_0x37e471[_0x44b8('0x13')][_0x44b8('0x11')]);}})['catch'](function(_0x89bc30){logger[_0x44b8('0x10')]('FaxMessage,\x20%s,\x20%s',_0x48a371,_0x89bc30);_0x4315f6(_0x89bc30);});});}exports[_0x44b8('0x14')]=function(_0x8b4301){var _0xebfe79=this;return new Promise(function(_0x235bdc,_0x102ef9){return db[_0x44b8('0x15')][_0x44b8('0x16')](_0x8b4301[_0x44b8('0x17')],{'raw':_0x8b4301[_0x44b8('0x18')]?_0x8b4301[_0x44b8('0x18')][_0x44b8('0x19')]===undefined?!![]:![]:!![]})[_0x44b8('0xc')](function(_0x48327e){logger[_0x44b8('0xd')](_0x44b8('0x14'),_0x8b4301);logger[_0x44b8('0xf')](_0x44b8('0x14'),_0x8b4301,JSON[_0x44b8('0x1a')](_0x48327e));_0x235bdc(_0x48327e);})['catch'](function(_0x402497){logger['error'](_0x44b8('0x14'),_0x402497[_0x44b8('0x11')],_0x8b4301);_0x102ef9(_0xebfe79[_0x44b8('0x10')](0x1f4,_0x402497[_0x44b8('0x11')]));});});};exports[_0x44b8('0x1b')]=function(_0x59acbc){var _0x474f01=this;return new Promise(function(_0x502acf,_0x41d673){return db[_0x44b8('0x15')]['update'](_0x59acbc[_0x44b8('0x17')],{'raw':_0x59acbc[_0x44b8('0x18')]?_0x59acbc[_0x44b8('0x18')]['raw']===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x59acbc[_0x44b8('0x18')]?_0x59acbc[_0x44b8('0x18')]['where']||null:null,'attributes':_0x59acbc[_0x44b8('0x18')]?_0x59acbc['options'][_0x44b8('0x1c')]||null:null,'limit':_0x59acbc['options']?_0x59acbc['options']['limit']||null:null})[_0x44b8('0xc')](function(_0x29b18d){logger[_0x44b8('0xd')](_0x44b8('0x1b'),_0x59acbc);logger[_0x44b8('0xf')](_0x44b8('0x1b'),_0x59acbc,JSON[_0x44b8('0x1a')](_0x29b18d));_0x502acf(_0x29b18d);})[_0x44b8('0x1d')](function(_0xd1d320){logger[_0x44b8('0x10')](_0x44b8('0x1b'),_0xd1d320[_0x44b8('0x11')],_0x59acbc);_0x41d673(_0x474f01[_0x44b8('0x10')](0x1f4,_0xd1d320['message']));});});};
\ No newline at end of file
index 0e439d9..a1214e8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0x7c55=['register','faxMessage:','save','update'];(function(_0x8e6b39,_0x5a256a){var _0x3c9148=function(_0x5debc5){while(--_0x5debc5){_0x8e6b39['push'](_0x8e6b39['shift']());}};_0x3c9148(++_0x5a256a);}(_0x7c55,0x1da));var _0x57c5=function(_0x429e21,_0x202f9f){_0x429e21=_0x429e21-0x0;var _0x71eb6e=_0x7c55[_0x429e21];return _0x71eb6e;};'use strict';var FaxMessageEvents=require('./faxMessage.events');var events=[_0x57c5('0x0'),'remove',_0x57c5('0x1')];function createListener(_0x22da68,_0x209c89){return function(_0x276551){_0x209c89['emit'](_0x22da68,_0x276551);};}function removeListener(_0x24f13d,_0x25419c){return function(){FaxMessageEvents['removeListener'](_0x24f13d,_0x25419c);};}exports[_0x57c5('0x2')]=function(_0x28370){for(var _0x2b600e=0x0,_0x48b169=events['length'];_0x2b600e<_0x48b169;_0x2b600e++){var _0xa251a4=events[_0x2b600e];var _0x48e986=createListener(_0x57c5('0x3')+_0xa251a4,_0x28370);FaxMessageEvents['on'](_0xa251a4,_0x48e986);}};
\ No newline at end of file
index 5236a6b..904d3d6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0x702d=['get','index','/describe','describe','/:id','isAuthenticated','show','/:id/download','download','post','tracked','create','put','update','/:id/accept','accept','reject','destroy','exports','multer','util','path','connect-timeout','express','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment'];(function(_0xee5e56,_0x3a7f78){var _0x124c35=function(_0x1e8c55){while(--_0x1e8c55){_0xee5e56['push'](_0xee5e56['shift']());}};_0x124c35(++_0x3a7f78);}(_0x702d,0x147));var _0xd702=function(_0x1f7039,_0x5cd440){_0x1f7039=_0x1f7039-0x0;var _0x45f2f1=_0x702d[_0x1f7039];return _0x45f2f1;};'use strict';var multer=require(_0xd702('0x0'));var util=require(_0xd702('0x1'));var path=require(_0xd702('0x2'));var timeout=require(_0xd702('0x3'));var express=require(_0xd702('0x4'));var router=express['Router']();var fs_extra=require(_0xd702('0x5'));var auth=require(_0xd702('0x6'));var interaction=require(_0xd702('0x7'));var config=require(_0xd702('0x8'));var controller=require('./faxMessage.controller');router[_0xd702('0x9')]('/',auth['isAuthenticated'](),controller[_0xd702('0xa')]);router[_0xd702('0x9')](_0xd702('0xb'),auth['isAuthenticated'](),controller[_0xd702('0xc')]);router['get'](_0xd702('0xd'),auth[_0xd702('0xe')](),controller[_0xd702('0xf')]);router[_0xd702('0x9')](_0xd702('0x10'),auth[_0xd702('0xe')](),controller[_0xd702('0x11')]);router[_0xd702('0x12')]('/',auth[_0xd702('0xe')](),interaction[_0xd702('0x13')]('fax','faxmessage:create'),controller[_0xd702('0x14')]);router[_0xd702('0x15')](_0xd702('0xd'),auth['isAuthenticated'](),controller[_0xd702('0x16')]);router[_0xd702('0x15')](_0xd702('0x17'),auth[_0xd702('0xe')](),controller[_0xd702('0x18')]);router[_0xd702('0x15')]('/:id/reject',auth[_0xd702('0xe')](),controller[_0xd702('0x19')]);router['delete'](_0xd702('0xd'),auth['isAuthenticated'](),controller[_0xd702('0x1a')]);module[_0xd702('0x1b')]=router;
\ No newline at end of file
index 81c4f92..6facf4a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0xeb85=['STRING','name','INTEGER','rrmemory','beepall','exports'];(function(_0x3877c1,_0x238c29){var _0x59056a=function(_0x3567cd){while(--_0x3567cd){_0x3877c1['push'](_0x3877c1['shift']());}};_0x59056a(++_0x238c29);}(_0xeb85,0x167));var _0x5eb8=function(_0x3f6770,_0xa6cff7){_0x3f6770=_0x3f6770-0x0;var _0x264724=_0xeb85[_0x3f6770];return _0x264724;};'use strict';var Sequelize=require('sequelize');module[_0x5eb8('0x0')]={'name':{'type':Sequelize[_0x5eb8('0x1')],'unique':_0x5eb8('0x2'),'allowNull':![],'validate':{'notEmpty':!![],'is':/^[A-Za-z0-9\.\_]+$/i}},'description':{'type':Sequelize[_0x5eb8('0x1')]},'timeout':{'type':Sequelize[_0x5eb8('0x3')],'allowNull':![],'validate':{'min':0x1,'max':0x20c49b}},'strategy':{'type':Sequelize['ENUM'](_0x5eb8('0x4'),_0x5eb8('0x5'),'roundrobin'),'allowNull':![]},'lastAgent':{'type':Sequelize[_0x5eb8('0x3')],'defaultValue':0x0}};
\ No newline at end of file
index 402e8a6..3be9b20 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0x73c0=['ut.TeamId\x20=\x20tq.TeamId','FaxQueueId\x20=\x20?','clone','ut.UserId\x20=\x20?','push','sequelize','toString','SELECT','every','includes','all','union','compact','isEmpty','removeAgents','emit','userFaxQueue:remove','addAgents','omit','spread','isArray','getAgents','eml-format','request-promise','bluebird','mustache','util','path','to-csv','fs-extra','lodash','jsforce','desk.js','querystring','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','api','../../config/utils','../../config/environment','../../config/license/util','redis','defaults','localhost','socket.io-emitter','./faxQueue.socket','register','sendStatus','status','end','json','undefined','limit','count','offset','set','Content-Range','reject','save','then','FaxQueues','destroy','error','stack','index','map','FaxQueue','rawAttributes','fieldName','type','key','model','name','keys','query','attributes','intersection','fields','length','hasOwnProperty','nolimit','order','sort','where','filters','filter','merge','VIRTUAL','options','includeAll','rows','catch','show','params','create','body','user','get','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','UserProfileSection','autoAssociation','UserProfileResource','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','update','describe','findOne','pick','UserFaxQueue','findAll','User','UserId','agent','format','%s/%s','faxPause','createdAt','Team','getTeams','addTeams','voicePause','flatMap','find','transaction','each','findOrCreate','forEach','userFaxQueue:save','removeTeams','ids','Agents','select','field','tq.TeamId','from','join','user_has_teams'];(function(_0xca1f0e,_0x2713d5){var _0x35e4ef=function(_0x44c40f){while(--_0x44c40f){_0xca1f0e['push'](_0xca1f0e['shift']());}};_0x35e4ef(++_0x2713d5);}(_0x73c0,0xa0));var _0x073c=function(_0x3f1497,_0x180595){_0x3f1497=_0x3f1497-0x0;var _0x2e6a3a=_0x73c0[_0x3f1497];return _0x2e6a3a;};'use strict';var emlformat=require(_0x073c('0x0'));var rimraf=require('rimraf');var zipdir=require('zip-dir');var jsonpatch=require('fast-json-patch');var rp=require(_0x073c('0x1'));var moment=require('moment');var BPromise=require(_0x073c('0x2'));var Mustache=require(_0x073c('0x3'));var util=require(_0x073c('0x4'));var path=require(_0x073c('0x5'));var sox=require('sox');var csv=require(_0x073c('0x6'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x073c('0x7'));var _=require(_0x073c('0x8'));var squel=require('squel');var crypto=require('crypto');var jsforce=require(_0x073c('0x9'));var deskjs=require(_0x073c('0xa'));var toCsv=require(_0x073c('0x6'));var querystring=require(_0x073c('0xb'));var Papa=require('papaparse');var Redis=require(_0x073c('0xc'));var authService=require(_0x073c('0xd'));var qs=require(_0x073c('0xe'));var as=require(_0x073c('0xf'));var hardwareService=require('../../config/license/hardware');var logger=require('../../config/logger')(_0x073c('0x10'));var utils=require(_0x073c('0x11'));var config=require(_0x073c('0x12'));var licenseUtil=require(_0x073c('0x13'));var db=require('../../mysqldb')['db'];config[_0x073c('0x14')]=_[_0x073c('0x15')](config[_0x073c('0x14')],{'host':_0x073c('0x16'),'port':0x18eb});var socket=require(_0x073c('0x17'))(new Redis(config['redis']));require(_0x073c('0x18'))[_0x073c('0x19')](socket);function respondWithStatusCode(_0x5bf28f,_0x4da82a){_0x4da82a=_0x4da82a||0xcc;return function(_0x5ee139){if(_0x5ee139){return _0x5bf28f[_0x073c('0x1a')](_0x4da82a);}return _0x5bf28f[_0x073c('0x1b')](_0x4da82a)[_0x073c('0x1c')]();};}function respondWithResult(_0x4a2762,_0x8ec9b4){_0x8ec9b4=_0x8ec9b4||0xc8;return function(_0x3da09f){if(_0x3da09f){return _0x4a2762['status'](_0x8ec9b4)[_0x073c('0x1d')](_0x3da09f);}};}function respondWithFilteredResult(_0x139068,_0xb9114a){return function(_0x45ba28){if(_0x45ba28){var _0x54d664=typeof _0xb9114a['offset']===_0x073c('0x1e')&&typeof _0xb9114a[_0x073c('0x1f')]==='undefined';var _0x2fbcb0=_0x45ba28[_0x073c('0x20')];var _0x718d88=_0x54d664?0x0:_0xb9114a['offset'];var _0x3600f5=_0x54d664?_0x45ba28[_0x073c('0x20')]:_0xb9114a[_0x073c('0x21')]+_0xb9114a[_0x073c('0x1f')];var _0x569734;if(_0x3600f5>=_0x2fbcb0){_0x3600f5=_0x2fbcb0;_0x569734=0xc8;}else{_0x569734=0xce;}_0x139068[_0x073c('0x1b')](_0x569734);return _0x139068[_0x073c('0x22')](_0x073c('0x23'),_0x718d88+'-'+_0x3600f5+'/'+_0x2fbcb0)['json'](_0x45ba28);}return null;};}function patchUpdates(_0x416240){return function(_0x4af5e3){try{jsonpatch['apply'](_0x4af5e3,_0x416240,!![]);}catch(_0x423f9e){return BPromise[_0x073c('0x24')](_0x423f9e);}return _0x4af5e3[_0x073c('0x25')]();};}function saveUpdates(_0x2544c3,_0x1145f9){return function(_0x31abaf){if(_0x31abaf){return _0x31abaf['update'](_0x2544c3)[_0x073c('0x26')](function(_0x29b14c){return _0x29b14c;});}return null;};}function removeEntity(_0x3c055d,_0x3c8e05){return function(_0x4d7b70){if(_0x4d7b70){return _0x4d7b70['destroy']()[_0x073c('0x26')](function(){var _0x4f8232=_0x4d7b70['get']({'plain':!![]});var _0x37967a=_0x073c('0x27');return db['UserProfileResource'][_0x073c('0x28')]({'where':{'type':_0x37967a,'resourceId':_0x4f8232['id']}})['then'](function(){return _0x4d7b70;});})[_0x073c('0x26')](function(){_0x3c055d[_0x073c('0x1b')](0xcc)[_0x073c('0x1c')]();});}};}function handleEntityNotFound(_0x18535e,_0x29c1a5){return function(_0x297dd8){if(!_0x297dd8){_0x18535e[_0x073c('0x1a')](0x194);}return _0x297dd8;};}function handleError(_0x3aa1b9,_0x5f4bbe){_0x5f4bbe=_0x5f4bbe||0x1f4;return function(_0x4610de){logger[_0x073c('0x29')](_0x4610de[_0x073c('0x2a')]);if(_0x4610de['name']){delete _0x4610de['name'];}_0x3aa1b9[_0x073c('0x1b')](_0x5f4bbe)['send'](_0x4610de);};}exports[_0x073c('0x2b')]=function(_0x102a4e,_0x316d25){var _0x5989fb={},_0x42841d={},_0x588c8a={'count':0x0,'rows':[]};var _0x35b9cd=_[_0x073c('0x2c')](db[_0x073c('0x2d')][_0x073c('0x2e')],function(_0x2b4f16){return{'name':_0x2b4f16[_0x073c('0x2f')],'type':_0x2b4f16[_0x073c('0x30')][_0x073c('0x31')]};});_0x42841d[_0x073c('0x32')]=_[_0x073c('0x2c')](_0x35b9cd,_0x073c('0x33'));_0x42841d['query']=_[_0x073c('0x34')](_0x102a4e[_0x073c('0x35')]);_0x42841d['filters']=_['intersection'](_0x42841d[_0x073c('0x32')],_0x42841d[_0x073c('0x35')]);_0x5989fb[_0x073c('0x36')]=_[_0x073c('0x37')](_0x42841d[_0x073c('0x32')],qs[_0x073c('0x38')](_0x102a4e[_0x073c('0x35')][_0x073c('0x38')]));_0x5989fb['attributes']=_0x5989fb[_0x073c('0x36')][_0x073c('0x39')]?_0x5989fb[_0x073c('0x36')]:_0x42841d[_0x073c('0x32')];if(!_0x102a4e[_0x073c('0x35')][_0x073c('0x3a')](_0x073c('0x3b'))){_0x5989fb['limit']=qs['limit'](_0x102a4e[_0x073c('0x35')][_0x073c('0x1f')]);_0x5989fb['offset']=qs[_0x073c('0x21')](_0x102a4e[_0x073c('0x35')][_0x073c('0x21')]);}_0x5989fb[_0x073c('0x3c')]=qs[_0x073c('0x3d')](_0x102a4e[_0x073c('0x35')][_0x073c('0x3d')]);_0x5989fb[_0x073c('0x3e')]=qs[_0x073c('0x3f')](_['pick'](_0x102a4e[_0x073c('0x35')],_0x42841d[_0x073c('0x3f')]),_0x35b9cd);if(_0x102a4e['query'][_0x073c('0x40')]){_0x5989fb[_0x073c('0x3e')]=_[_0x073c('0x41')](_0x5989fb[_0x073c('0x3e')],{'$or':_[_0x073c('0x2c')](_0x35b9cd,function(_0x6050d3){if(_0x6050d3[_0x073c('0x30')]!==_0x073c('0x42')){var _0xbffa24={};_0xbffa24[_0x6050d3[_0x073c('0x33')]]={'$like':'%'+_0x102a4e[_0x073c('0x35')]['filter']+'%'};return _0xbffa24;}})});}_0x5989fb=_['merge']({},_0x5989fb,_0x102a4e[_0x073c('0x43')]);var _0x364911={'where':_0x5989fb[_0x073c('0x3e')]};return db['FaxQueue'][_0x073c('0x20')](_0x364911)[_0x073c('0x26')](function(_0x124f19){_0x588c8a[_0x073c('0x20')]=_0x124f19;if(_0x102a4e[_0x073c('0x35')][_0x073c('0x44')]){_0x5989fb['include']=[{'all':!![]}];}return db[_0x073c('0x2d')]['findAll'](_0x5989fb);})[_0x073c('0x26')](function(_0x58616b){_0x588c8a[_0x073c('0x45')]=_0x58616b;return _0x588c8a;})[_0x073c('0x26')](respondWithFilteredResult(_0x316d25,_0x5989fb))[_0x073c('0x46')](handleError(_0x316d25,null));};exports[_0x073c('0x47')]=function(_0x24afdd,_0x2c6aec){var _0x2b183a={'raw':!![],'where':{'id':_0x24afdd[_0x073c('0x48')]['id']}},_0x403e1f={};_0x403e1f['model']=_[_0x073c('0x34')](db[_0x073c('0x2d')][_0x073c('0x2e')]);_0x403e1f[_0x073c('0x35')]=_[_0x073c('0x34')](_0x24afdd[_0x073c('0x35')]);_0x403e1f['filters']=_[_0x073c('0x37')](_0x403e1f[_0x073c('0x32')],_0x403e1f[_0x073c('0x35')]);_0x2b183a[_0x073c('0x36')]=_[_0x073c('0x37')](_0x403e1f[_0x073c('0x32')],qs['fields'](_0x24afdd[_0x073c('0x35')][_0x073c('0x38')]));_0x2b183a[_0x073c('0x36')]=_0x2b183a['attributes'][_0x073c('0x39')]?_0x2b183a[_0x073c('0x36')]:_0x403e1f['model'];if(_0x24afdd[_0x073c('0x35')][_0x073c('0x44')]){_0x2b183a['include']=[{'all':!![]}];}_0x2b183a=_['merge']({},_0x2b183a,_0x24afdd[_0x073c('0x43')]);return db[_0x073c('0x2d')]['find'](_0x2b183a)['then'](handleEntityNotFound(_0x2c6aec,null))[_0x073c('0x26')](respondWithResult(_0x2c6aec,null))[_0x073c('0x46')](handleError(_0x2c6aec,null));};exports[_0x073c('0x49')]=function(_0x1ee41e,_0x55e2f7){return db[_0x073c('0x2d')][_0x073c('0x49')](_0x1ee41e[_0x073c('0x4a')],{})[_0x073c('0x26')](function(_0x9fdcb9){var _0x515c19=_0x1ee41e[_0x073c('0x4b')][_0x073c('0x4c')]({'plain':!![]});if(!_0x515c19)throw new Error(_0x073c('0x4d'));if(_0x515c19[_0x073c('0x4e')]==='user'){var _0x5ef7eb=_0x9fdcb9[_0x073c('0x4c')]({'plain':!![]});var _0x43f83d=_0x073c('0x27');return db[_0x073c('0x4f')]['find']({'where':{'name':_0x43f83d,'userProfileId':_0x515c19['userProfileId']},'raw':!![]})[_0x073c('0x26')](function(_0x26bede){if(_0x26bede&&_0x26bede[_0x073c('0x50')]===0x0){return db[_0x073c('0x51')][_0x073c('0x49')]({'name':_0x5ef7eb[_0x073c('0x33')],'resourceId':_0x5ef7eb['id'],'type':_0x26bede[_0x073c('0x33')],'sectionId':_0x26bede['id']},{})[_0x073c('0x26')](function(){return _0x9fdcb9;});}else{return _0x9fdcb9;}})['catch'](function(_0x45cac0){logger[_0x073c('0x29')](_0x073c('0x52'),_0x45cac0);throw _0x45cac0;});}return _0x9fdcb9;})[_0x073c('0x26')](respondWithResult(_0x55e2f7,0xc9))[_0x073c('0x46')](handleError(_0x55e2f7,null));};exports[_0x073c('0x53')]=function(_0x3df4cf,_0x431f1c){if(_0x3df4cf[_0x073c('0x4a')]['id']){delete _0x3df4cf[_0x073c('0x4a')]['id'];}return db[_0x073c('0x2d')]['find']({'where':{'id':_0x3df4cf[_0x073c('0x48')]['id']}})[_0x073c('0x26')](handleEntityNotFound(_0x431f1c,null))['then'](saveUpdates(_0x3df4cf[_0x073c('0x4a')],null))['then'](respondWithResult(_0x431f1c,null))[_0x073c('0x46')](handleError(_0x431f1c,null));};exports[_0x073c('0x28')]=function(_0x3e7b45,_0xa6b445){return db[_0x073c('0x2d')]['find']({'where':{'id':_0x3e7b45[_0x073c('0x48')]['id']}})['then'](handleEntityNotFound(_0xa6b445,null))[_0x073c('0x26')](removeEntity(_0xa6b445,null))[_0x073c('0x46')](handleError(_0xa6b445,null));};exports['describe']=function(_0x1a2ea8,_0x5c28e9){return db[_0x073c('0x2d')][_0x073c('0x54')]()[_0x073c('0x26')](respondWithResult(_0x5c28e9,null))[_0x073c('0x46')](handleError(_0x5c28e9,null));};exports['getMembers']=function(_0x82416c,_0x192b9e,_0x4073b9){var _0x5edee5={'raw':!![],'where':{}},_0x1e8f6b={},_0x336a25;return db['FaxQueue'][_0x073c('0x55')]({'where':{'id':_0x82416c['params']['id']}})[_0x073c('0x26')](handleEntityNotFound(_0x192b9e,null))[_0x073c('0x26')](function(_0x221c31){if(_0x221c31){_0x336a25=_0x221c31['get']({'plain':!![]});_0x1e8f6b[_0x073c('0x32')]=_[_0x073c('0x34')](db['UserFaxQueue']['rawAttributes']);_0x1e8f6b[_0x073c('0x35')]=_[_0x073c('0x34')](_0x82416c[_0x073c('0x35')]);_0x1e8f6b[_0x073c('0x3f')]=_[_0x073c('0x37')](_0x1e8f6b['model'],_0x1e8f6b[_0x073c('0x35')]);_0x5edee5[_0x073c('0x36')]=_[_0x073c('0x37')](_0x1e8f6b['model'],qs[_0x073c('0x38')](_0x82416c['query']['fields']));_0x5edee5[_0x073c('0x36')]=_0x5edee5[_0x073c('0x36')][_0x073c('0x39')]?_0x5edee5['attributes']:_0x1e8f6b[_0x073c('0x32')];if(!_0x82416c['query'][_0x073c('0x3a')](_0x073c('0x3b'))){_0x5edee5['limit']=qs[_0x073c('0x1f')](_0x82416c[_0x073c('0x35')][_0x073c('0x1f')]);_0x5edee5['offset']=qs[_0x073c('0x21')](_0x82416c[_0x073c('0x35')][_0x073c('0x21')]);}_0x5edee5['order']=qs['sort'](_0x82416c[_0x073c('0x35')][_0x073c('0x3d')]);_0x5edee5[_0x073c('0x3e')]=qs[_0x073c('0x3f')](_[_0x073c('0x56')](_0x82416c['query'],_0x1e8f6b['filters']));_0x5edee5[_0x073c('0x3e')]['FaxQueueId']=_0x221c31['id'];if(_0x82416c['query'][_0x073c('0x40')]){_0x5edee5[_0x073c('0x3e')]=_[_0x073c('0x41')](_0x5edee5[_0x073c('0x3e')],{'$or':_[_0x073c('0x2c')](_0x5edee5[_0x073c('0x36')],function(_0x4ef140){var _0x452b81={};_0x452b81[_0x4ef140]={'$like':'%'+_0x82416c[_0x073c('0x35')]['filter']+'%'};return _0x452b81;})});}_0x5edee5=_['merge']({},_0x5edee5,_0x82416c[_0x073c('0x43')]);return db[_0x073c('0x57')][_0x073c('0x58')](_0x5edee5);}})[_0x073c('0x26')](function(_0x2f0d13){if(_0x2f0d13){return db[_0x073c('0x59')]['findAndCountAll']({'where':{'id':_[_0x073c('0x2c')](_0x2f0d13,_0x073c('0x5a')),'role':_0x073c('0x5b')},'attributes':['id',_0x073c('0x33'),'faxPause','updatedAt','createdAt']});}})[_0x073c('0x26')](function(_0x4ee0df){if(_0x4ee0df){return{'count':_0x4ee0df[_0x073c('0x20')],'rows':_[_0x073c('0x2c')](_0x4ee0df[_0x073c('0x45')],function(_0x582075){return{'membername':_0x582075[_0x073c('0x33')],'UserId':_0x582075['id'],'queue_name':_0x336a25[_0x073c('0x33')],'FaxQueueId':_0x336a25['id'],'interface':util[_0x073c('0x5c')](_0x073c('0x5d'),'SIP',_0x582075['name']),'penalty':0x0,'paused':_0x582075[_0x073c('0x5e')],'createdAt':_0x582075[_0x073c('0x5f')],'updatedAt':_0x582075['updatedAt']};})};}else{return{'count':0x0,'rows':[]};}})[_0x073c('0x26')](respondWithFilteredResult(_0x192b9e,_0x5edee5))[_0x073c('0x46')](handleError(_0x192b9e,null));};exports['getTeams']=function(_0x51be91,_0x1112d4,_0x232a92){var _0x108cc6={};var _0x31c017={};var _0x3d569a;var _0x2f36f3;return db[_0x073c('0x2d')][_0x073c('0x55')]({'where':{'id':_0x51be91[_0x073c('0x48')]['id']}})[_0x073c('0x26')](handleEntityNotFound(_0x1112d4,null))[_0x073c('0x26')](function(_0x35828e){if(_0x35828e){_0x3d569a=_0x35828e;_0x31c017['model']=_[_0x073c('0x34')](db[_0x073c('0x60')]['rawAttributes']);_0x31c017[_0x073c('0x35')]=_[_0x073c('0x34')](_0x51be91[_0x073c('0x35')]);_0x31c017[_0x073c('0x3f')]=_['intersection'](_0x31c017[_0x073c('0x32')],_0x31c017[_0x073c('0x35')]);_0x108cc6[_0x073c('0x36')]=_[_0x073c('0x37')](_0x31c017[_0x073c('0x32')],qs[_0x073c('0x38')](_0x51be91[_0x073c('0x35')][_0x073c('0x38')]));_0x108cc6[_0x073c('0x36')]=_0x108cc6[_0x073c('0x36')][_0x073c('0x39')]?_0x108cc6[_0x073c('0x36')]:_0x31c017[_0x073c('0x32')];_0x108cc6[_0x073c('0x3c')]=qs[_0x073c('0x3d')](_0x51be91[_0x073c('0x35')]['sort']);_0x108cc6[_0x073c('0x3e')]=qs['filters'](_[_0x073c('0x56')](_0x51be91[_0x073c('0x35')],_0x31c017[_0x073c('0x3f')]));if(_0x51be91[_0x073c('0x35')][_0x073c('0x40')]){_0x108cc6[_0x073c('0x3e')]=_[_0x073c('0x41')](_0x108cc6['where'],{'$or':_[_0x073c('0x2c')](_0x108cc6[_0x073c('0x36')],function(_0x2b50a8){var _0x486333={};_0x486333[_0x2b50a8]={'$like':'%'+_0x51be91['query'][_0x073c('0x40')]+'%'};return _0x486333;})});}_0x108cc6=_['merge']({},_0x108cc6,_0x51be91['options']);return _0x3d569a[_0x073c('0x61')](_0x108cc6);}})['then'](function(_0x3e64f6){if(_0x3e64f6){_0x2f36f3=_0x3e64f6[_0x073c('0x39')];if(!_0x51be91[_0x073c('0x35')][_0x073c('0x3a')](_0x073c('0x3b'))){_0x108cc6[_0x073c('0x1f')]=qs[_0x073c('0x1f')](_0x51be91[_0x073c('0x35')][_0x073c('0x1f')]);_0x108cc6[_0x073c('0x21')]=qs[_0x073c('0x21')](_0x51be91[_0x073c('0x35')][_0x073c('0x21')]);}return _0x3d569a[_0x073c('0x61')](_0x108cc6);}})[_0x073c('0x26')](function(_0x28cece){if(_0x28cece){return _0x28cece?{'count':_0x2f36f3,'rows':_0x28cece}:null;}})[_0x073c('0x26')](respondWithResult(_0x1112d4,null))['catch'](handleError(_0x1112d4,null));};exports[_0x073c('0x62')]=function(_0x1b0d67,_0x1926f6,_0x429a4d){var _0x21f99c=_0x1b0d67['body']['ids'];return db[_0x073c('0x60')][_0x073c('0x58')]({'where':{'id':_0x21f99c},'attributes':['id'],'include':[{'model':db[_0x073c('0x59')],'as':'Agents','attributes':['id',_0x073c('0x33'),'online',_0x073c('0x63'),'interface'],'raw':!![]}]})['then'](function(_0x5b7068){if(_0x5b7068){var _0x57e641=_[_0x073c('0x64')](_0x5b7068,function(_0x219e64){var _0x4226e7=_0x219e64['get']({'plain':!![]});return _0x4226e7['Agents'];});return db[_0x073c('0x2d')][_0x073c('0x65')]({'where':{'id':_0x1b0d67['params']['id']}})[_0x073c('0x26')](function(_0x26e85c){return db['sequelize'][_0x073c('0x66')](function(_0x2cf3d4){return _0x26e85c[_0x073c('0x62')](_0x21f99c,{'transaction':_0x2cf3d4})[_0x073c('0x26')](function(){return BPromise[_0x073c('0x67')](_0x57e641,function(_0xd23f2c){return db[_0x073c('0x57')][_0x073c('0x68')]({'where':{'UserId':_0xd23f2c['id'],'FaxQueueId':_0x1b0d67['params']['id']},'transaction':_0x2cf3d4});});})[_0x073c('0x26')](function(){_0x57e641[_0x073c('0x69')](function(_0x856d8c){socket['emit'](_0x073c('0x6a'),{'UserId':_0x856d8c['id'],'FaxQueueId':_0x26e85c['id']});});});});});}})[_0x073c('0x26')](respondWithStatusCode(_0x1926f6,null))[_0x073c('0x46')](handleError(_0x1926f6,null));};exports[_0x073c('0x6b')]=function(_0x10d796,_0x468838,_0x5f436c){return db['Team'][_0x073c('0x58')]({'where':{'id':_0x10d796['query'][_0x073c('0x6c')]},'attributes':['id'],'include':[{'model':db['User'],'as':_0x073c('0x6d'),'attributes':['id'],'raw':!![]}]})[_0x073c('0x26')](handleEntityNotFound(_0x468838,null))[_0x073c('0x26')](function(_0xa1654f){var _0x1621a9=_['map'](_0xa1654f,'id');var _0x2aad98=[];var _0xd8200f=[];var _0x3b440b=squel[_0x073c('0x6e')]();_0x3b440b[_0x073c('0x6f')](_0x073c('0x70'))[_0x073c('0x71')]('team_has_fax_queues','tq')[_0x073c('0x72')](_0x073c('0x73'),'ut',_0x073c('0x74'))['where'](_0x073c('0x75'),_0x10d796['params']['id']);for(var _0x433cc1=0x0;_0x433cc1<_0xa1654f['length'];_0x433cc1+=0x1){let _0x15d59b=_0xa1654f[_0x433cc1];for(var _0xa52862=0x0;_0xa52862<_0x15d59b[_0x073c('0x6d')][_0x073c('0x39')];_0xa52862+=0x1){let _0x2d958f=_0x15d59b[_0x073c('0x6d')][_0xa52862];var _0x374d88=_0x3b440b[_0x073c('0x76')]();_0x374d88['where'](_0x073c('0x77'),_0x2d958f['id']);_0xd8200f[_0x073c('0x78')](db[_0x073c('0x79')][_0x073c('0x35')](_0x374d88[_0x073c('0x7a')](),{'type':db[_0x073c('0x79')]['QueryTypes'][_0x073c('0x7b')]})['then'](function(_0x20d610){if(_0x20d610[_0x073c('0x39')]===0x1){return _0x2d958f['id'];}else{var _0x544a80=_[_0x073c('0x7c')](_[_0x073c('0x2c')](_0x20d610,'TeamId'),function(_0x13e22a){return _[_0x073c('0x7d')](_0x1621a9,_0x13e22a);});if(_0x544a80){return _0x2d958f['id'];}}}));}}return BPromise[_0x073c('0x7e')](_0xd8200f)[_0x073c('0x26')](function(_0x34513b){_0x2aad98=_(_0x2aad98)[_0x073c('0x7f')](_0x34513b)[_0x073c('0x80')]()['value']();return db[_0x073c('0x2d')][_0x073c('0x65')]({'where':{'id':_0x10d796[_0x073c('0x48')]['id']}})['then'](function(_0x4e51a7){return db['sequelize'][_0x073c('0x66')](function(_0x2ad03e){return _0x4e51a7[_0x073c('0x6b')](_0x10d796[_0x073c('0x35')][_0x073c('0x6c')],{'transaction':_0x2ad03e})['then'](function(){if(!_[_0x073c('0x81')](_0x2aad98)){return _0x4e51a7[_0x073c('0x82')](_0x2aad98,{'transaction':_0x2ad03e});}})[_0x073c('0x26')](function(){_0x2aad98[_0x073c('0x69')](function(_0x3488f6){socket[_0x073c('0x83')](_0x073c('0x84'),{'UserId':_0x3488f6,'FaxQueueId':_0x4e51a7['id']});});});});});});})[_0x073c('0x26')](respondWithStatusCode(_0x468838,null))['catch'](handleError(_0x468838,null));};exports[_0x073c('0x85')]=function(_0x17b668,_0x434825,_0x327fab){return db[_0x073c('0x2d')][_0x073c('0x65')]({'where':{'id':_0x17b668[_0x073c('0x48')]['id']}})[_0x073c('0x26')](handleEntityNotFound(_0x434825,null))[_0x073c('0x26')](function(_0x175fed){if(_0x175fed){return _0x175fed['addAgents'](_0x17b668['body'][_0x073c('0x6c')],_[_0x073c('0x86')](_0x17b668[_0x073c('0x4a')],[_0x073c('0x6c'),'id'])||{})[_0x073c('0x87')](function(_0x448b65){for(var _0x4fbc34=0x0;_0x4fbc34<_0x17b668[_0x073c('0x4a')][_0x073c('0x6c')][_0x073c('0x39')];_0x4fbc34+=0x1){socket[_0x073c('0x83')]('userFaxQueue:save',{'UserId':Number(_0x17b668[_0x073c('0x4a')]['ids'][_0x4fbc34]),'FaxQueueId':Number(_0x17b668['params']['id'])});}return _0x448b65;});}})[_0x073c('0x26')](respondWithResult(_0x434825,null))[_0x073c('0x46')](handleError(_0x434825,null));};exports[_0x073c('0x82')]=function(_0x20f021,_0xa84239,_0x1ae27e){return db[_0x073c('0x2d')]['find']({'where':{'id':_0x20f021[_0x073c('0x48')]['id']}})[_0x073c('0x26')](handleEntityNotFound(_0xa84239,null))[_0x073c('0x26')](function(_0x278d39){if(_0x278d39){return _0x278d39[_0x073c('0x82')](_0x20f021[_0x073c('0x35')][_0x073c('0x6c')])['then'](function(){if(_[_0x073c('0x88')](_0x20f021[_0x073c('0x35')][_0x073c('0x6c')])){for(var _0x2ddb4d=0x0;_0x2ddb4d<_0x20f021[_0x073c('0x35')][_0x073c('0x6c')][_0x073c('0x39')];_0x2ddb4d+=0x1){socket[_0x073c('0x83')](_0x073c('0x84'),{'UserId':Number(_0x20f021[_0x073c('0x35')][_0x073c('0x6c')][_0x2ddb4d]),'FaxQueueId':Number(_0x20f021[_0x073c('0x48')]['id'])});}}else{socket[_0x073c('0x83')](_0x073c('0x84'),{'UserId':Number(_0x20f021[_0x073c('0x35')][_0x073c('0x6c')]),'FaxQueueId':Number(_0x20f021['params']['id'])});}});}})[_0x073c('0x26')](respondWithStatusCode(_0xa84239,null))[_0x073c('0x46')](handleError(_0xa84239,null));};exports[_0x073c('0x89')]=function(_0x134871,_0x4f2084,_0x37390a){var _0x5ac968={};var _0x18e8d0={};var _0x51db1a;var _0x2f0f33;return db[_0x073c('0x2d')]['findOne']({'where':{'id':_0x134871[_0x073c('0x48')]['id']}})[_0x073c('0x26')](handleEntityNotFound(_0x4f2084,null))[_0x073c('0x26')](function(_0x387925){if(_0x387925){_0x51db1a=_0x387925;_0x18e8d0['model']=_[_0x073c('0x34')](db[_0x073c('0x59')][_0x073c('0x2e')]);_0x18e8d0['query']=_[_0x073c('0x34')](_0x134871[_0x073c('0x35')]);_0x18e8d0[_0x073c('0x3f')]=_[_0x073c('0x37')](_0x18e8d0['model'],_0x18e8d0[_0x073c('0x35')]);_0x5ac968['attributes']=_['intersection'](_0x18e8d0[_0x073c('0x32')],qs[_0x073c('0x38')](_0x134871[_0x073c('0x35')][_0x073c('0x38')]));_0x5ac968[_0x073c('0x36')]=_0x5ac968[_0x073c('0x36')][_0x073c('0x39')]?_0x5ac968[_0x073c('0x36')]:_0x18e8d0[_0x073c('0x32')];_0x5ac968[_0x073c('0x3c')]=qs[_0x073c('0x3d')](_0x134871[_0x073c('0x35')][_0x073c('0x3d')]);_0x5ac968['where']=qs[_0x073c('0x3f')](_[_0x073c('0x56')](_0x134871[_0x073c('0x35')],_0x18e8d0[_0x073c('0x3f')]));if(_0x134871[_0x073c('0x35')][_0x073c('0x40')]){_0x5ac968[_0x073c('0x3e')]=_['merge'](_0x5ac968[_0x073c('0x3e')],{'$or':_['map'](_0x5ac968[_0x073c('0x36')],function(_0x387a60){var _0xd85248={};_0xd85248[_0x387a60]={'$like':'%'+_0x134871[_0x073c('0x35')][_0x073c('0x40')]+'%'};return _0xd85248;})});}_0x5ac968=_[_0x073c('0x41')]({},_0x5ac968,_0x134871[_0x073c('0x43')]);return _0x51db1a[_0x073c('0x89')](_0x5ac968);}})['then'](function(_0x38b871){if(_0x38b871){_0x2f0f33=_0x38b871[_0x073c('0x39')];if(!_0x134871[_0x073c('0x35')]['hasOwnProperty']('nolimit')){_0x5ac968[_0x073c('0x1f')]=qs[_0x073c('0x1f')](_0x134871[_0x073c('0x35')][_0x073c('0x1f')]);_0x5ac968[_0x073c('0x21')]=qs[_0x073c('0x21')](_0x134871[_0x073c('0x35')][_0x073c('0x21')]);}return _0x51db1a['getAgents'](_0x5ac968);}})[_0x073c('0x26')](function(_0x2b1efa){if(_0x2b1efa){return _0x2b1efa?{'count':_0x2f0f33,'rows':_0x2b1efa}:null;}})[_0x073c('0x26')](respondWithResult(_0x4f2084,null))[_0x073c('0x46')](handleError(_0x4f2084,null));};
\ No newline at end of file
index 34aad46..ef4d0a1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0x560c=['events','../../mysqldb','setMaxListeners','save','emit','hasOwnProperty','hook','exports'];(function(_0x584511,_0x265d51){var _0x3d9660=function(_0x5e067f){while(--_0x5e067f){_0x584511['push'](_0x584511['shift']());}};_0x3d9660(++_0x265d51);}(_0x560c,0xa0));var _0xc560=function(_0x46f7d6,_0x18d10f){_0x46f7d6=_0x46f7d6-0x0;var _0x5ec618=_0x560c[_0x46f7d6];return _0x5ec618;};'use strict';var EventEmitter=require(_0xc560('0x0'));var FaxQueue=require(_0xc560('0x1'))['db']['FaxQueue'];var FaxQueueEvents=new EventEmitter();FaxQueueEvents[_0xc560('0x2')](0x0);var events={'afterCreate':_0xc560('0x3'),'afterUpdate':'update','afterDestroy':'remove'};function emitEvent(_0x5ce29a){return function(_0x32462,_0x35faec,_0x127df4){FaxQueueEvents[_0xc560('0x4')](_0x5ce29a+':'+_0x32462['id'],_0x32462);FaxQueueEvents[_0xc560('0x4')](_0x5ce29a,_0x32462);_0x127df4(null);};}for(var e in events){if(events[_0xc560('0x5')](e)){var event=events[e];FaxQueue[_0xc560('0x6')](e,emitEvent(event));}}module[_0xc560('0x7')]=FaxQueueEvents;
\ No newline at end of file
index 0c5216e..fb608a9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0x9d08=['./faxQueue.attributes','define','FaxQueue','fax_queues','lodash','util','moment','request-promise','../../config/environment'];(function(_0x5b11d0,_0x594a5f){var _0x325e44=function(_0x4945f7){while(--_0x4945f7){_0x5b11d0['push'](_0x5b11d0['shift']());}};_0x325e44(++_0x594a5f);}(_0x9d08,0x1f3));var _0x89d0=function(_0x1c2b0c,_0x5646e7){_0x1c2b0c=_0x1c2b0c-0x0;var _0x2bff9b=_0x9d08[_0x1c2b0c];return _0x2bff9b;};'use strict';var _=require(_0x89d0('0x0'));var util=require(_0x89d0('0x1'));var logger=require('../../config/logger')('api');var moment=require(_0x89d0('0x2'));var BPromise=require('bluebird');var rp=require(_0x89d0('0x3'));var fs=require('fs');var path=require('path');var rimraf=require('rimraf');var config=require(_0x89d0('0x4'));var attributes=require(_0x89d0('0x5'));module['exports']=function(_0x4e2dbf,_0x2de1ee){return _0x4e2dbf[_0x89d0('0x6')](_0x89d0('0x7'),attributes,{'tableName':_0x89d0('0x8'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 528f154..bc501d4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0xbb77=['ioredis','../../mysqldb','../../config/logger','rpc','../../config/environment','jayson/promise','http','redis','defaults','socket.io-emitter','./faxQueue.socket','request','request\x20sent','debug','stringify','error','code','FaxQueue,\x20%s,\x20%s','message','info','catch','GetFaxQueue','FaxQueue','findAll','options','raw','where','limit','include','model','attributes','map','then','ShowFaxQueue','find','lodash','bluebird','randomstring'];(function(_0x166cbc,_0x1554f7){var _0x16ee4a=function(_0x5e3511){while(--_0x5e3511){_0x166cbc['push'](_0x166cbc['shift']());}};_0x16ee4a(++_0x1554f7);}(_0xbb77,0x179));var _0x7bb7=function(_0x230360,_0x464a13){_0x230360=_0x230360-0x0;var _0x2f597e=_0xbb77[_0x230360];return _0x2f597e;};'use strict';var _=require(_0x7bb7('0x0'));var util=require('util');var moment=require('moment');var BPromise=require(_0x7bb7('0x1'));var rs=require(_0x7bb7('0x2'));var fs=require('fs');var Redis=require(_0x7bb7('0x3'));var db=require(_0x7bb7('0x4'))['db'];var utils=require('../../config/utils');var logger=require(_0x7bb7('0x5'))(_0x7bb7('0x6'));var config=require(_0x7bb7('0x7'));var jayson=require(_0x7bb7('0x8'));var client=jayson['client'][_0x7bb7('0x9')]({'port':0x232a});config[_0x7bb7('0xa')]=_[_0x7bb7('0xb')](config['redis'],{'host':'localhost','port':0x18eb});var socket=require(_0x7bb7('0xc'))(new Redis(config[_0x7bb7('0xa')]));require(_0x7bb7('0xd'))['register'](socket);function respondWithRpcPromise(_0x4b9924,_0x3b85f1,_0x311c41){return new BPromise(function(_0x180e37,_0x1a1208){return client[_0x7bb7('0xe')](_0x4b9924,_0x311c41)['then'](function(_0xcaf93c){logger['info']('FaxQueue,\x20%s,\x20%s',_0x3b85f1,_0x7bb7('0xf'));logger[_0x7bb7('0x10')]('FaxQueue,\x20%s,\x20%s,\x20%s',_0x3b85f1,'request\x20sent',JSON[_0x7bb7('0x11')](_0xcaf93c));if(_0xcaf93c[_0x7bb7('0x12')]){if(_0xcaf93c['error'][_0x7bb7('0x13')]===0x1f4){logger[_0x7bb7('0x12')](_0x7bb7('0x14'),_0x3b85f1,_0xcaf93c[_0x7bb7('0x12')]['message']);return _0x1a1208(_0xcaf93c[_0x7bb7('0x12')]['message']);}logger[_0x7bb7('0x12')](_0x7bb7('0x14'),_0x3b85f1,_0xcaf93c[_0x7bb7('0x12')][_0x7bb7('0x15')]);return _0x180e37(_0xcaf93c[_0x7bb7('0x12')][_0x7bb7('0x15')]);}else{logger[_0x7bb7('0x16')]('FaxQueue,\x20%s,\x20%s',_0x3b85f1,_0x7bb7('0xf'));_0x180e37(_0xcaf93c['result'][_0x7bb7('0x15')]);}})[_0x7bb7('0x17')](function(_0xed5404){logger[_0x7bb7('0x12')](_0x7bb7('0x14'),_0x3b85f1,_0xed5404);_0x1a1208(_0xed5404);});});}exports[_0x7bb7('0x18')]=function(_0x54d0c9){var _0x3fd720=this;return new Promise(function(_0x2b2958,_0x1610e5){return db[_0x7bb7('0x19')][_0x7bb7('0x1a')]({'raw':_0x54d0c9[_0x7bb7('0x1b')]?_0x54d0c9['options'][_0x7bb7('0x1c')]===undefined?!![]:![]:!![],'where':_0x54d0c9['options']?_0x54d0c9[_0x7bb7('0x1b')][_0x7bb7('0x1d')]||null:null,'attributes':_0x54d0c9[_0x7bb7('0x1b')]?_0x54d0c9[_0x7bb7('0x1b')]['attributes']||null:null,'limit':_0x54d0c9['options']?_0x54d0c9[_0x7bb7('0x1b')][_0x7bb7('0x1e')]||null:null,'include':_0x54d0c9[_0x7bb7('0x1b')]?_0x54d0c9['options'][_0x7bb7('0x1f')]?_['map'](_0x54d0c9[_0x7bb7('0x1b')][_0x7bb7('0x1f')],function(_0x38f4a2){return{'model':db[_0x38f4a2[_0x7bb7('0x20')]],'as':_0x38f4a2['as'],'attributes':_0x38f4a2[_0x7bb7('0x21')],'include':_0x38f4a2[_0x7bb7('0x1f')]?_[_0x7bb7('0x22')](_0x38f4a2[_0x7bb7('0x1f')],function(_0x4fdcaa){return{'model':db[_0x4fdcaa[_0x7bb7('0x20')]],'as':_0x4fdcaa['as'],'attributes':_0x4fdcaa[_0x7bb7('0x21')],'include':_0x4fdcaa[_0x7bb7('0x1f')]?_[_0x7bb7('0x22')](_0x4fdcaa[_0x7bb7('0x1f')],function(_0x4820c9){return{'model':db[_0x4820c9[_0x7bb7('0x20')]],'as':_0x4820c9['as'],'attributes':_0x4820c9['attributes']};}):[]};}):[]};}):[]:[]})[_0x7bb7('0x23')](function(_0x35c4e9){logger[_0x7bb7('0x16')](_0x7bb7('0x18'),_0x54d0c9);logger[_0x7bb7('0x10')](_0x7bb7('0x18'),_0x54d0c9,JSON[_0x7bb7('0x11')](_0x35c4e9));_0x2b2958(_0x35c4e9);})[_0x7bb7('0x17')](function(_0x55b9ae){logger[_0x7bb7('0x12')](_0x7bb7('0x18'),_0x55b9ae['message'],_0x54d0c9);_0x1610e5(_0x3fd720['error'](0x1f4,_0x55b9ae[_0x7bb7('0x15')]));});});};exports[_0x7bb7('0x24')]=function(_0x3a94b9){var _0x4beca2=this;return new Promise(function(_0x3a987f,_0x91d5fd){return db[_0x7bb7('0x19')][_0x7bb7('0x25')]({'raw':_0x3a94b9[_0x7bb7('0x1b')]?_0x3a94b9['options'][_0x7bb7('0x1c')]===undefined?!![]:![]:!![],'where':_0x3a94b9[_0x7bb7('0x1b')]?_0x3a94b9['options'][_0x7bb7('0x1d')]||null:null,'attributes':_0x3a94b9[_0x7bb7('0x1b')]?_0x3a94b9[_0x7bb7('0x1b')][_0x7bb7('0x21')]||null:null,'include':_0x3a94b9[_0x7bb7('0x1b')]?_0x3a94b9['options'][_0x7bb7('0x1f')]?_[_0x7bb7('0x22')](_0x3a94b9[_0x7bb7('0x1b')]['include'],function(_0x3a5451){return{'model':db[_0x3a5451[_0x7bb7('0x20')]],'as':_0x3a5451['as'],'attributes':_0x3a5451['attributes'],'include':_0x3a5451['include']?_[_0x7bb7('0x22')](_0x3a5451['include'],function(_0x4faa67){return{'model':db[_0x4faa67[_0x7bb7('0x20')]],'as':_0x4faa67['as'],'attributes':_0x4faa67[_0x7bb7('0x21')],'include':_0x4faa67[_0x7bb7('0x1f')]?_[_0x7bb7('0x22')](_0x4faa67['include'],function(_0x34d0b7){return{'model':db[_0x34d0b7[_0x7bb7('0x20')]],'as':_0x34d0b7['as'],'attributes':_0x34d0b7['attributes']};}):[]};}):[]};}):[]:[]})['then'](function(_0x549c64){logger['info'](_0x7bb7('0x24'),_0x3a94b9);logger['debug'](_0x7bb7('0x24'),_0x3a94b9,JSON[_0x7bb7('0x11')](_0x549c64));_0x3a987f(_0x549c64);})[_0x7bb7('0x17')](function(_0x3171d1){logger[_0x7bb7('0x12')]('ShowFaxQueue',_0x3171d1[_0x7bb7('0x15')],_0x3a94b9);_0x91d5fd(_0x4beca2[_0x7bb7('0x12')](0x1f4,_0x3171d1[_0x7bb7('0x15')]));});});};
\ No newline at end of file
index 83d7052..f5625ff 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0x0725=['update','emit','removeListener','register','save'];(function(_0xfa89e4,_0xf6216f){var _0x3ab4b0=function(_0x4fa734){while(--_0x4fa734){_0xfa89e4['push'](_0xfa89e4['shift']());}};_0x3ab4b0(++_0xf6216f);}(_0x0725,0x167));var _0x5072=function(_0x1f0155,_0x3a241f){_0x1f0155=_0x1f0155-0x0;var _0x57fc62=_0x0725[_0x1f0155];return _0x57fc62;};'use strict';var FaxQueueEvents=require('./faxQueue.events');var events=[_0x5072('0x0'),'remove',_0x5072('0x1')];function createListener(_0x2e44bc,_0x59a5fd){return function(_0x82d8d0){_0x59a5fd[_0x5072('0x2')](_0x2e44bc,_0x82d8d0);};}function removeListener(_0x2ee816,_0x537520){return function(){FaxQueueEvents[_0x5072('0x3')](_0x2ee816,_0x537520);};}exports[_0x5072('0x4')]=function(_0x1954ea){for(var _0x4a62a0=0x0,_0x589f84=events['length'];_0x4a62a0<_0x589f84;_0x4a62a0++){var _0x4e7148=events[_0x4a62a0];var _0x4803a5=createListener('faxQueue:'+_0x4e7148,_0x1954ea);FaxQueueEvents['on'](_0x4e7148,_0x4803a5);}};
\ No newline at end of file
index 7fb615c..2849a2c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0xb7de=['removeTeams','removeAgents','exports','multer','util','path','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','./faxQueue.controller','get','isAuthenticated','index','describe','/:id','/:id/members','/:id/teams','getTeams','/:id/users','getAgents','post','create','addTeams','addAgents','put','delete'];(function(_0x4bd950,_0x184ed5){var _0x5dc59a=function(_0x6ff30f){while(--_0x6ff30f){_0x4bd950['push'](_0x4bd950['shift']());}};_0x5dc59a(++_0x184ed5);}(_0xb7de,0xc7));var _0xeb7d=function(_0x433a86,_0x175b5c){_0x433a86=_0x433a86-0x0;var _0x23000c=_0xb7de[_0x433a86];return _0x23000c;};'use strict';var multer=require(_0xeb7d('0x0'));var util=require(_0xeb7d('0x1'));var path=require(_0xeb7d('0x2'));var timeout=require('connect-timeout');var express=require(_0xeb7d('0x3'));var router=express[_0xeb7d('0x4')]();var fs_extra=require(_0xeb7d('0x5'));var auth=require(_0xeb7d('0x6'));var interaction=require(_0xeb7d('0x7'));var config=require('../../config/environment');var controller=require(_0xeb7d('0x8'));router[_0xeb7d('0x9')]('/',auth[_0xeb7d('0xa')](),controller[_0xeb7d('0xb')]);router[_0xeb7d('0x9')]('/describe',auth['isAuthenticated'](),controller[_0xeb7d('0xc')]);router[_0xeb7d('0x9')](_0xeb7d('0xd'),auth[_0xeb7d('0xa')](),controller['show']);router[_0xeb7d('0x9')](_0xeb7d('0xe'),auth[_0xeb7d('0xa')](),controller['getMembers']);router['get'](_0xeb7d('0xf'),auth['isAuthenticated'](),controller[_0xeb7d('0x10')]);router[_0xeb7d('0x9')](_0xeb7d('0x11'),auth[_0xeb7d('0xa')](),controller[_0xeb7d('0x12')]);router[_0xeb7d('0x13')]('/',auth['isAuthenticated'](),controller[_0xeb7d('0x14')]);router[_0xeb7d('0x13')](_0xeb7d('0xf'),auth[_0xeb7d('0xa')](),controller[_0xeb7d('0x15')]);router['post'](_0xeb7d('0x11'),auth['isAuthenticated'](),controller[_0xeb7d('0x16')]);router[_0xeb7d('0x17')](_0xeb7d('0xd'),auth['isAuthenticated'](),controller['update']);router[_0xeb7d('0x18')](_0xeb7d('0xd'),auth['isAuthenticated'](),controller['destroy']);router[_0xeb7d('0x18')](_0xeb7d('0xf'),auth['isAuthenticated'](),controller[_0xeb7d('0x19')]);router[_0xeb7d('0x18')](_0xeb7d('0x11'),auth[_0xeb7d('0xa')](),controller[_0xeb7d('0x1a')]);module[_0xeb7d('0x1b')]=router;
\ No newline at end of file
index 1bfa9fa..cab837a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0xa942=['moment','sequelize','exports','DATE','STRING'];(function(_0x2df203,_0x1fd07b){var _0x378e9d=function(_0x24d9ba){while(--_0x24d9ba){_0x2df203['push'](_0x2df203['shift']());}};_0x378e9d(++_0x1fd07b);}(_0xa942,0xc8));var _0x2a94=function(_0xf28007,_0xd1f173){_0xf28007=_0xf28007-0x0;var _0x2f01b2=_0xa942[_0xf28007];return _0x2f01b2;};'use strict';var moment=require(_0x2a94('0x0'));var Sequelize=require(_0x2a94('0x1'));module[_0x2a94('0x2')]={'uniqueid':{'type':Sequelize['STRING'],'allowNull':![]},'from':{'type':Sequelize['STRING']},'joinAt':{'type':Sequelize[_0x2a94('0x3')]},'leaveAt':{'type':Sequelize[_0x2a94('0x3')]},'acceptAt':{'type':Sequelize[_0x2a94('0x3')]},'exitAt':{'type':Sequelize['DATE']},'reason':{'type':Sequelize[_0x2a94('0x4')]}};
\ No newline at end of file
index 8520860..ac0ccdb 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0xdb4b=['sox','to-csv','ejs','fs-extra','lodash','jsforce','desk.js','querystring','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','json','limit','undefined','count','offset','set','save','update','then','destroy','error','stack','name','send','index','FaxQueueReport','rawAttributes','fieldName','type','key','model','map','query','keys','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','filters','pick','merge','VIRTUAL','options','include','rows','catch','show','params','includeAll','find','create','body','describe','rimraf','fast-json-patch','request-promise','moment','bluebird','util','path'];(function(_0x3cf5a3,_0x5a4492){var _0x39ba2d=function(_0x3ed989){while(--_0x3ed989){_0x3cf5a3['push'](_0x3cf5a3['shift']());}};_0x39ba2d(++_0x5a4492);}(_0xdb4b,0xd7));var _0xbdb4=function(_0x1741c2,_0x22b19c){_0x1741c2=_0x1741c2-0x0;var _0x3ed7d=_0xdb4b[_0x1741c2];return _0x3ed7d;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0xbdb4('0x0'));var zipdir=require('zip-dir');var jsonpatch=require(_0xbdb4('0x1'));var rp=require(_0xbdb4('0x2'));var moment=require(_0xbdb4('0x3'));var BPromise=require(_0xbdb4('0x4'));var Mustache=require('mustache');var util=require(_0xbdb4('0x5'));var path=require(_0xbdb4('0x6'));var sox=require(_0xbdb4('0x7'));var csv=require(_0xbdb4('0x8'));var ejs=require(_0xbdb4('0x9'));var fs=require('fs');var fs_extra=require(_0xbdb4('0xa'));var _=require(_0xbdb4('0xb'));var squel=require('squel');var crypto=require('crypto');var jsforce=require(_0xbdb4('0xc'));var deskjs=require(_0xbdb4('0xd'));var toCsv=require(_0xbdb4('0x8'));var querystring=require(_0xbdb4('0xe'));var Papa=require('papaparse');var Redis=require(_0xbdb4('0xf'));var authService=require('../../components/auth/service');var qs=require(_0xbdb4('0x10'));var as=require(_0xbdb4('0x11'));var hardwareService=require(_0xbdb4('0x12'));var logger=require('../../config/logger')('api');var utils=require(_0xbdb4('0x13'));var config=require(_0xbdb4('0x14'));var licenseUtil=require(_0xbdb4('0x15'));var db=require(_0xbdb4('0x16'))['db'];function respondWithStatusCode(_0x5f1825,_0x4fadb2){_0x4fadb2=_0x4fadb2||0xcc;return function(_0xd2eaa5){if(_0xd2eaa5){return _0x5f1825[_0xbdb4('0x17')](_0x4fadb2);}return _0x5f1825[_0xbdb4('0x18')](_0x4fadb2)[_0xbdb4('0x19')]();};}function respondWithResult(_0x3e0801,_0x310780){_0x310780=_0x310780||0xc8;return function(_0x4a2ae3){if(_0x4a2ae3){return _0x3e0801['status'](_0x310780)[_0xbdb4('0x1a')](_0x4a2ae3);}};}function respondWithFilteredResult(_0x4386e1,_0x5d84f6){return function(_0x446124){if(_0x446124){var _0x19a69b=typeof _0x5d84f6['offset']==='undefined'&&typeof _0x5d84f6[_0xbdb4('0x1b')]===_0xbdb4('0x1c');var _0x52c7ca=_0x446124[_0xbdb4('0x1d')];var _0x113471=_0x19a69b?0x0:_0x5d84f6['offset'];var _0x2ca1d5=_0x19a69b?_0x446124[_0xbdb4('0x1d')]:_0x5d84f6[_0xbdb4('0x1e')]+_0x5d84f6['limit'];var _0x50d0af;if(_0x2ca1d5>=_0x52c7ca){_0x2ca1d5=_0x52c7ca;_0x50d0af=0xc8;}else{_0x50d0af=0xce;}_0x4386e1[_0xbdb4('0x18')](_0x50d0af);return _0x4386e1[_0xbdb4('0x1f')]('Content-Range',_0x113471+'-'+_0x2ca1d5+'/'+_0x52c7ca)[_0xbdb4('0x1a')](_0x446124);}return null;};}function patchUpdates(_0x2d72d9){return function(_0x21b32d){try{jsonpatch['apply'](_0x21b32d,_0x2d72d9,!![]);}catch(_0x1bbabc){return BPromise['reject'](_0x1bbabc);}return _0x21b32d[_0xbdb4('0x20')]();};}function saveUpdates(_0x182758,_0x40efbe){return function(_0x2320e9){if(_0x2320e9){return _0x2320e9[_0xbdb4('0x21')](_0x182758)[_0xbdb4('0x22')](function(_0x5780ba){return _0x5780ba;});}return null;};}function removeEntity(_0x3db8aa,_0x18b284){return function(_0x2ea4f4){if(_0x2ea4f4){return _0x2ea4f4[_0xbdb4('0x23')]()[_0xbdb4('0x22')](function(){_0x3db8aa['status'](0xcc)[_0xbdb4('0x19')]();});}};}function handleEntityNotFound(_0x18a6f6,_0x3d440a){return function(_0x5b46a1){if(!_0x5b46a1){_0x18a6f6['sendStatus'](0x194);}return _0x5b46a1;};}function handleError(_0x1ab9b1,_0x22ba6c){_0x22ba6c=_0x22ba6c||0x1f4;return function(_0x3b3e0b){logger[_0xbdb4('0x24')](_0x3b3e0b[_0xbdb4('0x25')]);if(_0x3b3e0b[_0xbdb4('0x26')]){delete _0x3b3e0b[_0xbdb4('0x26')];}_0x1ab9b1[_0xbdb4('0x18')](_0x22ba6c)[_0xbdb4('0x27')](_0x3b3e0b);};}exports[_0xbdb4('0x28')]=function(_0x52ebf5,_0x81ec7d){var _0x11a783={},_0x1246a7={},_0x1e7b00={'count':0x0,'rows':[]};var _0x4572e8=_['map'](db[_0xbdb4('0x29')][_0xbdb4('0x2a')],function(_0x1b938c){return{'name':_0x1b938c[_0xbdb4('0x2b')],'type':_0x1b938c[_0xbdb4('0x2c')][_0xbdb4('0x2d')]};});_0x1246a7[_0xbdb4('0x2e')]=_[_0xbdb4('0x2f')](_0x4572e8,'name');_0x1246a7[_0xbdb4('0x30')]=_[_0xbdb4('0x31')](_0x52ebf5['query']);_0x1246a7['filters']=_[_0xbdb4('0x32')](_0x1246a7['model'],_0x1246a7[_0xbdb4('0x30')]);_0x11a783[_0xbdb4('0x33')]=_[_0xbdb4('0x32')](_0x1246a7[_0xbdb4('0x2e')],qs['fields'](_0x52ebf5[_0xbdb4('0x30')][_0xbdb4('0x34')]));_0x11a783[_0xbdb4('0x33')]=_0x11a783[_0xbdb4('0x33')][_0xbdb4('0x35')]?_0x11a783[_0xbdb4('0x33')]:_0x1246a7[_0xbdb4('0x2e')];if(!_0x52ebf5[_0xbdb4('0x30')][_0xbdb4('0x36')](_0xbdb4('0x37'))){_0x11a783[_0xbdb4('0x1b')]=qs[_0xbdb4('0x1b')](_0x52ebf5['query'][_0xbdb4('0x1b')]);_0x11a783[_0xbdb4('0x1e')]=qs[_0xbdb4('0x1e')](_0x52ebf5[_0xbdb4('0x30')]['offset']);}_0x11a783[_0xbdb4('0x38')]=qs[_0xbdb4('0x39')](_0x52ebf5[_0xbdb4('0x30')][_0xbdb4('0x39')]);_0x11a783[_0xbdb4('0x3a')]=qs[_0xbdb4('0x3b')](_[_0xbdb4('0x3c')](_0x52ebf5[_0xbdb4('0x30')],_0x1246a7[_0xbdb4('0x3b')]),_0x4572e8);if(_0x52ebf5[_0xbdb4('0x30')]['filter']){_0x11a783[_0xbdb4('0x3a')]=_[_0xbdb4('0x3d')](_0x11a783[_0xbdb4('0x3a')],{'$or':_['map'](_0x4572e8,function(_0x45952f){if(_0x45952f[_0xbdb4('0x2c')]!==_0xbdb4('0x3e')){var _0x890ef4={};_0x890ef4[_0x45952f['name']]={'$like':'%'+_0x52ebf5[_0xbdb4('0x30')]['filter']+'%'};return _0x890ef4;}})});}_0x11a783=_['merge']({},_0x11a783,_0x52ebf5[_0xbdb4('0x3f')]);var _0x1b25ec={'where':_0x11a783['where']};return db[_0xbdb4('0x29')][_0xbdb4('0x1d')](_0x1b25ec)[_0xbdb4('0x22')](function(_0x2236c7){_0x1e7b00[_0xbdb4('0x1d')]=_0x2236c7;if(_0x52ebf5[_0xbdb4('0x30')]['includeAll']){_0x11a783[_0xbdb4('0x40')]=[{'all':!![]}];}return db['FaxQueueReport']['findAll'](_0x11a783);})[_0xbdb4('0x22')](function(_0x46579a){_0x1e7b00[_0xbdb4('0x41')]=_0x46579a;return _0x1e7b00;})[_0xbdb4('0x22')](respondWithFilteredResult(_0x81ec7d,_0x11a783))[_0xbdb4('0x42')](handleError(_0x81ec7d,null));};exports[_0xbdb4('0x43')]=function(_0x2851cd,_0x123384){var _0x1bbc3e={'raw':!![],'where':{'id':_0x2851cd[_0xbdb4('0x44')]['id']}},_0x1db25b={};_0x1db25b[_0xbdb4('0x2e')]=_[_0xbdb4('0x31')](db[_0xbdb4('0x29')][_0xbdb4('0x2a')]);_0x1db25b['query']=_[_0xbdb4('0x31')](_0x2851cd['query']);_0x1db25b[_0xbdb4('0x3b')]=_['intersection'](_0x1db25b['model'],_0x1db25b['query']);_0x1bbc3e['attributes']=_[_0xbdb4('0x32')](_0x1db25b['model'],qs[_0xbdb4('0x34')](_0x2851cd[_0xbdb4('0x30')][_0xbdb4('0x34')]));_0x1bbc3e['attributes']=_0x1bbc3e[_0xbdb4('0x33')][_0xbdb4('0x35')]?_0x1bbc3e[_0xbdb4('0x33')]:_0x1db25b[_0xbdb4('0x2e')];if(_0x2851cd[_0xbdb4('0x30')][_0xbdb4('0x45')]){_0x1bbc3e[_0xbdb4('0x40')]=[{'all':!![]}];}_0x1bbc3e=_[_0xbdb4('0x3d')]({},_0x1bbc3e,_0x2851cd['options']);return db[_0xbdb4('0x29')][_0xbdb4('0x46')](_0x1bbc3e)[_0xbdb4('0x22')](handleEntityNotFound(_0x123384,null))[_0xbdb4('0x22')](respondWithResult(_0x123384,null))['catch'](handleError(_0x123384,null));};exports[_0xbdb4('0x47')]=function(_0x2369a2,_0x3b504c){return db[_0xbdb4('0x29')][_0xbdb4('0x47')](_0x2369a2['body'],{})[_0xbdb4('0x22')](respondWithResult(_0x3b504c,0xc9))[_0xbdb4('0x42')](handleError(_0x3b504c,null));};exports['update']=function(_0x4ba060,_0x86ef21){if(_0x4ba060['body']['id']){delete _0x4ba060['body']['id'];}return db[_0xbdb4('0x29')][_0xbdb4('0x46')]({'where':{'id':_0x4ba060[_0xbdb4('0x44')]['id']}})[_0xbdb4('0x22')](handleEntityNotFound(_0x86ef21,null))[_0xbdb4('0x22')](saveUpdates(_0x4ba060[_0xbdb4('0x48')],null))[_0xbdb4('0x22')](respondWithResult(_0x86ef21,null))[_0xbdb4('0x42')](handleError(_0x86ef21,null));};exports[_0xbdb4('0x23')]=function(_0x1aa922,_0xa1b553){return db[_0xbdb4('0x29')][_0xbdb4('0x46')]({'where':{'id':_0x1aa922['params']['id']}})[_0xbdb4('0x22')](handleEntityNotFound(_0xa1b553,null))['then'](removeEntity(_0xa1b553,null))[_0xbdb4('0x42')](handleError(_0xa1b553,null));};exports[_0xbdb4('0x49')]=function(_0x165e82,_0x375163){return db[_0xbdb4('0x29')][_0xbdb4('0x49')]()['then'](respondWithResult(_0x375163,null))['catch'](handleError(_0x375163,null));};
\ No newline at end of file
index b8d4fd6..0eeb2ab 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0xe14b=['bluebird','path','./faxQueueReport.attributes','exports','define','FaxQueueReport','report_fax_queue','lodash','util','moment'];(function(_0x1ab93d,_0x4832e9){var _0x45fe4c=function(_0x57f308){while(--_0x57f308){_0x1ab93d['push'](_0x1ab93d['shift']());}};_0x45fe4c(++_0x4832e9);}(_0xe14b,0x93));var _0xbe14=function(_0x568af3,_0x323cd3){_0x568af3=_0x568af3-0x0;var _0x365a4c=_0xe14b[_0x568af3];return _0x365a4c;};'use strict';var _=require(_0xbe14('0x0'));var util=require(_0xbe14('0x1'));var logger=require('../../config/logger')('api');var moment=require(_0xbe14('0x2'));var BPromise=require(_0xbe14('0x3'));var rp=require('request-promise');var fs=require('fs');var path=require(_0xbe14('0x4'));var rimraf=require('rimraf');var config=require('../../config/environment');var attributes=require(_0xbe14('0x5'));module[_0xbe14('0x6')]=function(_0x1fe204,_0x1ff100){return _0x1fe204[_0xbe14('0x7')](_0xbe14('0x8'),attributes,{'tableName':_0xbe14('0x9'),'paranoid':![],'indexes':[{'name':'uniqueid','fields':['uniqueid']}],'timestamps':!![]});};
\ No newline at end of file
index a61239e..44bf5ac 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0xf2ff=['where','limit','lodash','util','moment','randomstring','../../config/environment','jayson/promise','http','then','FaxQueueReport,\x20%s,\x20%s','request\x20sent','debug','FaxQueueReport,\x20%s,\x20%s,\x20%s','stringify','error','code','message','info','result','catch','CreateFaxQueueReport','body','options','raw','UpdateFaxQueueReport','FaxQueueReport','update'];(function(_0x50cae4,_0x453238){var _0x552577=function(_0x48deee){while(--_0x48deee){_0x50cae4['push'](_0x50cae4['shift']());}};_0x552577(++_0x453238);}(_0xf2ff,0x18a));var _0xff2f=function(_0x16297b,_0x304199){_0x16297b=_0x16297b-0x0;var _0x3b62eb=_0xf2ff[_0x16297b];return _0x3b62eb;};'use strict';var _=require(_0xff2f('0x0'));var util=require(_0xff2f('0x1'));var moment=require(_0xff2f('0x2'));var BPromise=require('bluebird');var rs=require(_0xff2f('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require('../../mysqldb')['db'];var utils=require('../../config/utils');var logger=require('../../config/logger')('rpc');var config=require(_0xff2f('0x4'));var jayson=require(_0xff2f('0x5'));var client=jayson['client'][_0xff2f('0x6')]({'port':0x232a});function respondWithRpcPromise(_0x4a07f8,_0x5843a5,_0x11cc42){return new BPromise(function(_0x1beb78,_0x511269){return client['request'](_0x4a07f8,_0x11cc42)[_0xff2f('0x7')](function(_0x20eb0d){logger['info'](_0xff2f('0x8'),_0x5843a5,_0xff2f('0x9'));logger[_0xff2f('0xa')](_0xff2f('0xb'),_0x5843a5,_0xff2f('0x9'),JSON[_0xff2f('0xc')](_0x20eb0d));if(_0x20eb0d[_0xff2f('0xd')]){if(_0x20eb0d['error'][_0xff2f('0xe')]===0x1f4){logger['error'](_0xff2f('0x8'),_0x5843a5,_0x20eb0d[_0xff2f('0xd')]['message']);return _0x511269(_0x20eb0d[_0xff2f('0xd')][_0xff2f('0xf')]);}logger['error'](_0xff2f('0x8'),_0x5843a5,_0x20eb0d[_0xff2f('0xd')][_0xff2f('0xf')]);return _0x1beb78(_0x20eb0d[_0xff2f('0xd')]['message']);}else{logger[_0xff2f('0x10')](_0xff2f('0x8'),_0x5843a5,_0xff2f('0x9'));_0x1beb78(_0x20eb0d[_0xff2f('0x11')]['message']);}})[_0xff2f('0x12')](function(_0xc19652){logger['error'](_0xff2f('0x8'),_0x5843a5,_0xc19652);_0x511269(_0xc19652);});});}exports[_0xff2f('0x13')]=function(_0x1d2a11){var _0x328f70=this;return new Promise(function(_0x1d2a7e,_0x52af5c){return db['FaxQueueReport']['create'](_0x1d2a11[_0xff2f('0x14')],{'raw':_0x1d2a11[_0xff2f('0x15')]?_0x1d2a11[_0xff2f('0x15')][_0xff2f('0x16')]===undefined?!![]:![]:!![]})['then'](function(_0x2347b7){logger['info'](_0xff2f('0x13'),_0x1d2a11);logger[_0xff2f('0xa')]('CreateFaxQueueReport',_0x1d2a11,JSON['stringify'](_0x2347b7));_0x1d2a7e(_0x2347b7);})[_0xff2f('0x12')](function(_0x540798){logger[_0xff2f('0xd')](_0xff2f('0x13'),_0x540798[_0xff2f('0xf')],_0x1d2a11);_0x52af5c(_0x328f70[_0xff2f('0xd')](0x1f4,_0x540798[_0xff2f('0xf')]));});});};exports[_0xff2f('0x17')]=function(_0x429347){var _0x551f1a=this;return new Promise(function(_0x336c8a,_0x4a5dbb){return db[_0xff2f('0x18')][_0xff2f('0x19')](_0x429347[_0xff2f('0x14')],{'raw':_0x429347[_0xff2f('0x15')]?_0x429347[_0xff2f('0x15')][_0xff2f('0x16')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x429347[_0xff2f('0x15')]?_0x429347[_0xff2f('0x15')][_0xff2f('0x1a')]||null:null,'attributes':_0x429347[_0xff2f('0x15')]?_0x429347[_0xff2f('0x15')]['attributes']||null:null,'limit':_0x429347['options']?_0x429347['options'][_0xff2f('0x1b')]||null:null})[_0xff2f('0x7')](function(_0x3f05a5){logger[_0xff2f('0x10')](_0xff2f('0x17'),_0x429347);logger['debug'](_0xff2f('0x17'),_0x429347,JSON['stringify'](_0x3f05a5));_0x336c8a(_0x3f05a5);})[_0xff2f('0x12')](function(_0x57fe83){logger['error'](_0xff2f('0x17'),_0x57fe83['message'],_0x429347);_0x4a5dbb(_0x551f1a[_0xff2f('0xd')](0x1f4,_0x57fe83['message']));});});};
\ No newline at end of file
index 83fc453..fd423fa 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0x0eda=['./faxQueueReport.controller','isAuthenticated','get','/describe','describe','/:id','show','post','create','put','update','delete','destroy','exports','multer','util','path','connect-timeout','express','../../components/auth/service','../../components/interaction/service','../../config/environment'];(function(_0x2dafbe,_0x5d04de){var _0x58a45a=function(_0x50ac96){while(--_0x50ac96){_0x2dafbe['push'](_0x2dafbe['shift']());}};_0x58a45a(++_0x5d04de);}(_0x0eda,0x100));var _0xa0ed=function(_0x42a17b,_0x386e9f){_0x42a17b=_0x42a17b-0x0;var _0x40f898=_0x0eda[_0x42a17b];return _0x40f898;};'use strict';var multer=require(_0xa0ed('0x0'));var util=require(_0xa0ed('0x1'));var path=require(_0xa0ed('0x2'));var timeout=require(_0xa0ed('0x3'));var express=require(_0xa0ed('0x4'));var router=express['Router']();var fs_extra=require('fs-extra');var auth=require(_0xa0ed('0x5'));var interaction=require(_0xa0ed('0x6'));var config=require(_0xa0ed('0x7'));var controller=require(_0xa0ed('0x8'));router['get']('/',auth[_0xa0ed('0x9')](),controller['index']);router[_0xa0ed('0xa')](_0xa0ed('0xb'),auth[_0xa0ed('0x9')](),controller[_0xa0ed('0xc')]);router['get'](_0xa0ed('0xd'),auth['isAuthenticated'](),controller[_0xa0ed('0xe')]);router[_0xa0ed('0xf')]('/',auth[_0xa0ed('0x9')](),controller[_0xa0ed('0x10')]);router[_0xa0ed('0x11')](_0xa0ed('0xd'),auth[_0xa0ed('0x9')](),controller[_0xa0ed('0x12')]);router[_0xa0ed('0x13')](_0xa0ed('0xd'),auth[_0xa0ed('0x9')](),controller[_0xa0ed('0x14')]);module[_0xa0ed('0x15')]=router;
\ No newline at end of file
index 0d349ab..c913753 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(_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
+var _0xedd9=['account','agent','queue','NOW','sequelize','exports','STRING','ENUM'];(function(_0x3ebdff,_0x147228){var _0x3eb444=function(_0xa2015a){while(--_0xa2015a){_0x3ebdff['push'](_0x3ebdff['shift']());}};_0x3eb444(++_0x147228);}(_0xedd9,0xfc));var _0x9edd=function(_0x189a30,_0x49f412){_0x189a30=_0x189a30-0x0;var _0x1021d9=_0xedd9[_0x189a30];return _0x1021d9;};'use strict';var moment=require('moment');var Sequelize=require(_0x9edd('0x0'));module[_0x9edd('0x1')]={'uniqueid':{'type':Sequelize[_0x9edd('0x2')],'allowNull':![]},'type':{'type':Sequelize[_0x9edd('0x3')](_0x9edd('0x4'),_0x9edd('0x5'),_0x9edd('0x6')),'allowNull':![],'defaultValue':_0x9edd('0x6')},'transferredAt':{'type':Sequelize['DATE'],'allowNull':![],'defaultValue':Sequelize[_0x9edd('0x7')]}};
\ No newline at end of file
index 5572c58..d7e2527 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0xe5b5=['set','apply','reject','save','update','then','destroy','error','name','send','index','map','FaxTransferReport','rawAttributes','fieldName','query','keys','model','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','filters','pick','filter','merge','type','findAll','catch','intersection','include','find','create','body','params','describe','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','path','sox','fs-extra','lodash','squel','jsforce','desk.js','to-csv','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','json','offset','undefined','limit','count'];(function(_0x17d3fc,_0x575477){var _0x56510c=function(_0x1c14dd){while(--_0x1c14dd){_0x17d3fc['push'](_0x17d3fc['shift']());}};_0x56510c(++_0x575477);}(_0xe5b5,0x109));var _0x5e5b=function(_0xaaf2e2,_0x19d28a){_0xaaf2e2=_0xaaf2e2-0x0;var _0x28bc36=_0xe5b5[_0xaaf2e2];return _0x28bc36;};'use strict';var emlformat=require(_0x5e5b('0x0'));var rimraf=require(_0x5e5b('0x1'));var zipdir=require(_0x5e5b('0x2'));var jsonpatch=require(_0x5e5b('0x3'));var rp=require(_0x5e5b('0x4'));var moment=require(_0x5e5b('0x5'));var BPromise=require(_0x5e5b('0x6'));var Mustache=require(_0x5e5b('0x7'));var util=require('util');var path=require(_0x5e5b('0x8'));var sox=require(_0x5e5b('0x9'));var csv=require('to-csv');var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x5e5b('0xa'));var _=require(_0x5e5b('0xb'));var squel=require(_0x5e5b('0xc'));var crypto=require('crypto');var jsforce=require(_0x5e5b('0xd'));var deskjs=require(_0x5e5b('0xe'));var toCsv=require(_0x5e5b('0xf'));var querystring=require(_0x5e5b('0x10'));var Papa=require(_0x5e5b('0x11'));var Redis=require(_0x5e5b('0x12'));var authService=require(_0x5e5b('0x13'));var qs=require(_0x5e5b('0x14'));var as=require(_0x5e5b('0x15'));var hardwareService=require(_0x5e5b('0x16'));var logger=require('../../config/logger')(_0x5e5b('0x17'));var utils=require('../../config/utils');var config=require(_0x5e5b('0x18'));var licenseUtil=require(_0x5e5b('0x19'));var db=require(_0x5e5b('0x1a'))['db'];function respondWithStatusCode(_0x4a60b7,_0x590bb3){_0x590bb3=_0x590bb3||0xcc;return function(_0x36a71b){if(_0x36a71b){return _0x4a60b7[_0x5e5b('0x1b')](_0x590bb3);}return _0x4a60b7[_0x5e5b('0x1c')](_0x590bb3)[_0x5e5b('0x1d')]();};}function respondWithResult(_0x329691,_0x1c2749){_0x1c2749=_0x1c2749||0xc8;return function(_0x9cdff){if(_0x9cdff){return _0x329691['status'](_0x1c2749)[_0x5e5b('0x1e')](_0x9cdff);}};}function respondWithFilteredResult(_0x37148d,_0x454651){return function(_0x58cd5b){if(_0x58cd5b){var _0x1feb84=typeof _0x454651[_0x5e5b('0x1f')]===_0x5e5b('0x20')&&typeof _0x454651[_0x5e5b('0x21')]==='undefined';var _0x2274a1=_0x58cd5b[_0x5e5b('0x22')];var _0x545804=_0x1feb84?0x0:_0x454651[_0x5e5b('0x1f')];var _0x388046=_0x1feb84?_0x58cd5b[_0x5e5b('0x22')]:_0x454651[_0x5e5b('0x1f')]+_0x454651[_0x5e5b('0x21')];var _0x5c4aa0;if(_0x388046>=_0x2274a1){_0x388046=_0x2274a1;_0x5c4aa0=0xc8;}else{_0x5c4aa0=0xce;}_0x37148d[_0x5e5b('0x1c')](_0x5c4aa0);return _0x37148d[_0x5e5b('0x23')]('Content-Range',_0x545804+'-'+_0x388046+'/'+_0x2274a1)[_0x5e5b('0x1e')](_0x58cd5b);}return null;};}function patchUpdates(_0x12de75){return function(_0x160337){try{jsonpatch[_0x5e5b('0x24')](_0x160337,_0x12de75,!![]);}catch(_0x79ad09){return BPromise[_0x5e5b('0x25')](_0x79ad09);}return _0x160337[_0x5e5b('0x26')]();};}function saveUpdates(_0x3b28f7,_0x274285){return function(_0x5b7ebd){if(_0x5b7ebd){return _0x5b7ebd[_0x5e5b('0x27')](_0x3b28f7)[_0x5e5b('0x28')](function(_0x8d8399){return _0x8d8399;});}return null;};}function removeEntity(_0x19cae3,_0x4cf1a5){return function(_0x23c9f1){if(_0x23c9f1){return _0x23c9f1[_0x5e5b('0x29')]()[_0x5e5b('0x28')](function(){_0x19cae3['status'](0xcc)['end']();});}};}function handleEntityNotFound(_0x20ba1b,_0x16f065){return function(_0x4e8372){if(!_0x4e8372){_0x20ba1b[_0x5e5b('0x1b')](0x194);}return _0x4e8372;};}function handleError(_0x35f94e,_0x14d43c){_0x14d43c=_0x14d43c||0x1f4;return function(_0x56f48d){logger[_0x5e5b('0x2a')](_0x56f48d['stack']);if(_0x56f48d[_0x5e5b('0x2b')]){delete _0x56f48d[_0x5e5b('0x2b')];}_0x35f94e['status'](_0x14d43c)[_0x5e5b('0x2c')](_0x56f48d);};}exports[_0x5e5b('0x2d')]=function(_0x6d3023,_0x293fe7){var _0x1037bd={},_0x2e1517={},_0x380f2a={'count':0x0,'rows':[]};var _0xe6ed15=_[_0x5e5b('0x2e')](db[_0x5e5b('0x2f')][_0x5e5b('0x30')],function(_0x37ce1a){return{'name':_0x37ce1a[_0x5e5b('0x31')],'type':_0x37ce1a['type']['key']};});_0x2e1517['model']=_[_0x5e5b('0x2e')](_0xe6ed15,'name');_0x2e1517[_0x5e5b('0x32')]=_[_0x5e5b('0x33')](_0x6d3023[_0x5e5b('0x32')]);_0x2e1517['filters']=_['intersection'](_0x2e1517[_0x5e5b('0x34')],_0x2e1517['query']);_0x1037bd[_0x5e5b('0x35')]=_['intersection'](_0x2e1517[_0x5e5b('0x34')],qs[_0x5e5b('0x36')](_0x6d3023[_0x5e5b('0x32')][_0x5e5b('0x36')]));_0x1037bd[_0x5e5b('0x35')]=_0x1037bd[_0x5e5b('0x35')][_0x5e5b('0x37')]?_0x1037bd[_0x5e5b('0x35')]:_0x2e1517['model'];if(!_0x6d3023[_0x5e5b('0x32')][_0x5e5b('0x38')](_0x5e5b('0x39'))){_0x1037bd[_0x5e5b('0x21')]=qs[_0x5e5b('0x21')](_0x6d3023[_0x5e5b('0x32')][_0x5e5b('0x21')]);_0x1037bd[_0x5e5b('0x1f')]=qs[_0x5e5b('0x1f')](_0x6d3023['query']['offset']);}_0x1037bd[_0x5e5b('0x3a')]=qs[_0x5e5b('0x3b')](_0x6d3023[_0x5e5b('0x32')][_0x5e5b('0x3b')]);_0x1037bd[_0x5e5b('0x3c')]=qs[_0x5e5b('0x3d')](_[_0x5e5b('0x3e')](_0x6d3023['query'],_0x2e1517['filters']),_0xe6ed15);if(_0x6d3023[_0x5e5b('0x32')][_0x5e5b('0x3f')]){_0x1037bd['where']=_[_0x5e5b('0x40')](_0x1037bd[_0x5e5b('0x3c')],{'$or':_[_0x5e5b('0x2e')](_0xe6ed15,function(_0x1a2df3){if(_0x1a2df3[_0x5e5b('0x41')]!=='VIRTUAL'){var _0x62bb8a={};_0x62bb8a[_0x1a2df3['name']]={'$like':'%'+_0x6d3023[_0x5e5b('0x32')]['filter']+'%'};return _0x62bb8a;}})});}_0x1037bd=_[_0x5e5b('0x40')]({},_0x1037bd,_0x6d3023['options']);var _0x426355={'where':_0x1037bd[_0x5e5b('0x3c')]};return db[_0x5e5b('0x2f')][_0x5e5b('0x22')](_0x426355)[_0x5e5b('0x28')](function(_0x3c3941){_0x380f2a['count']=_0x3c3941;if(_0x6d3023[_0x5e5b('0x32')]['includeAll']){_0x1037bd['include']=[{'all':!![]}];}return db[_0x5e5b('0x2f')][_0x5e5b('0x42')](_0x1037bd);})[_0x5e5b('0x28')](function(_0x168613){_0x380f2a['rows']=_0x168613;return _0x380f2a;})[_0x5e5b('0x28')](respondWithFilteredResult(_0x293fe7,_0x1037bd))[_0x5e5b('0x43')](handleError(_0x293fe7,null));};exports['show']=function(_0x5839c8,_0x5d7941){var _0x14abc3={'raw':!![],'where':{'id':_0x5839c8['params']['id']}},_0x21f7b1={};_0x21f7b1[_0x5e5b('0x34')]=_[_0x5e5b('0x33')](db[_0x5e5b('0x2f')][_0x5e5b('0x30')]);_0x21f7b1[_0x5e5b('0x32')]=_[_0x5e5b('0x33')](_0x5839c8[_0x5e5b('0x32')]);_0x21f7b1[_0x5e5b('0x3d')]=_[_0x5e5b('0x44')](_0x21f7b1['model'],_0x21f7b1[_0x5e5b('0x32')]);_0x14abc3['attributes']=_[_0x5e5b('0x44')](_0x21f7b1['model'],qs[_0x5e5b('0x36')](_0x5839c8['query'][_0x5e5b('0x36')]));_0x14abc3[_0x5e5b('0x35')]=_0x14abc3[_0x5e5b('0x35')][_0x5e5b('0x37')]?_0x14abc3['attributes']:_0x21f7b1[_0x5e5b('0x34')];if(_0x5839c8['query']['includeAll']){_0x14abc3[_0x5e5b('0x45')]=[{'all':!![]}];}_0x14abc3=_[_0x5e5b('0x40')]({},_0x14abc3,_0x5839c8['options']);return db[_0x5e5b('0x2f')][_0x5e5b('0x46')](_0x14abc3)['then'](handleEntityNotFound(_0x5d7941,null))[_0x5e5b('0x28')](respondWithResult(_0x5d7941,null))[_0x5e5b('0x43')](handleError(_0x5d7941,null));};exports[_0x5e5b('0x47')]=function(_0x5daf62,_0x3cbdf7){return db[_0x5e5b('0x2f')][_0x5e5b('0x47')](_0x5daf62[_0x5e5b('0x48')],{})['then'](respondWithResult(_0x3cbdf7,0xc9))[_0x5e5b('0x43')](handleError(_0x3cbdf7,null));};exports[_0x5e5b('0x27')]=function(_0x2cab57,_0x333a38){if(_0x2cab57['body']['id']){delete _0x2cab57[_0x5e5b('0x48')]['id'];}return db[_0x5e5b('0x2f')][_0x5e5b('0x46')]({'where':{'id':_0x2cab57[_0x5e5b('0x49')]['id']}})[_0x5e5b('0x28')](handleEntityNotFound(_0x333a38,null))[_0x5e5b('0x28')](saveUpdates(_0x2cab57['body'],null))['then'](respondWithResult(_0x333a38,null))[_0x5e5b('0x43')](handleError(_0x333a38,null));};exports[_0x5e5b('0x29')]=function(_0x4d963a,_0x409259){return db[_0x5e5b('0x2f')][_0x5e5b('0x46')]({'where':{'id':_0x4d963a['params']['id']}})[_0x5e5b('0x28')](handleEntityNotFound(_0x409259,null))[_0x5e5b('0x28')](removeEntity(_0x409259,null))['catch'](handleError(_0x409259,null));};exports[_0x5e5b('0x4a')]=function(_0x2b7633,_0x52308c){return db[_0x5e5b('0x2f')][_0x5e5b('0x4a')]()[_0x5e5b('0x28')](respondWithResult(_0x52308c,null))['catch'](handleError(_0x52308c,null));};
\ No newline at end of file
index b659fbb..88b136e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0x9172=['FaxTransferReport','report_fax_transfer','uniqueid','api','moment','request-promise','rimraf','../../config/environment','./faxTransferReport.attributes','exports','define'];(function(_0x4fbc83,_0x4af5c0){var _0xe2a04a=function(_0x9f0a8b){while(--_0x9f0a8b){_0x4fbc83['push'](_0x4fbc83['shift']());}};_0xe2a04a(++_0x4af5c0);}(_0x9172,0x1a5));var _0x2917=function(_0x122096,_0x60c295){_0x122096=_0x122096-0x0;var _0x3d1966=_0x9172[_0x122096];return _0x3d1966;};'use strict';var _=require('lodash');var util=require('util');var logger=require('../../config/logger')(_0x2917('0x0'));var moment=require(_0x2917('0x1'));var BPromise=require('bluebird');var rp=require(_0x2917('0x2'));var fs=require('fs');var path=require('path');var rimraf=require(_0x2917('0x3'));var config=require(_0x2917('0x4'));var attributes=require(_0x2917('0x5'));module[_0x2917('0x6')]=function(_0x2df3d0,_0x36b35d){return _0x2df3d0[_0x2917('0x7')](_0x2917('0x8'),attributes,{'tableName':_0x2917('0x9'),'paranoid':![],'indexes':[{'name':_0x2917('0xa'),'fields':[_0x2917('0xa')]}],'timestamps':!![]});};
\ No newline at end of file
index 4acc34b..3ae7421 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0x12e4=['../../config/logger','jayson/promise','request','then','info','FaxTransferReport,\x20%s,\x20%s','request\x20sent','debug','FaxTransferReport,\x20%s,\x20%s,\x20%s','stringify','error','message','catch','lodash','util','moment','bluebird','ioredis'];(function(_0x46a3d8,_0x3358db){var _0x512ac3=function(_0x47f08f){while(--_0x47f08f){_0x46a3d8['push'](_0x46a3d8['shift']());}};_0x512ac3(++_0x3358db);}(_0x12e4,0x13f));var _0x412e=function(_0x46ac2c,_0x5bab55){_0x46ac2c=_0x46ac2c-0x0;var _0x1403b3=_0x12e4[_0x46ac2c];return _0x1403b3;};'use strict';var _=require(_0x412e('0x0'));var util=require(_0x412e('0x1'));var moment=require(_0x412e('0x2'));var BPromise=require(_0x412e('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x412e('0x4'));var db=require('../../mysqldb')['db'];var utils=require('../../config/utils');var logger=require(_0x412e('0x5'))('rpc');var config=require('../../config/environment');var jayson=require(_0x412e('0x6'));var client=jayson['client']['http']({'port':0x232a});function respondWithRpcPromise(_0x1082f3,_0x1aad35,_0x36e1fa){return new BPromise(function(_0x29f66a,_0x2539da){return client[_0x412e('0x7')](_0x1082f3,_0x36e1fa)[_0x412e('0x8')](function(_0x5cb1d3){logger[_0x412e('0x9')](_0x412e('0xa'),_0x1aad35,_0x412e('0xb'));logger[_0x412e('0xc')](_0x412e('0xd'),_0x1aad35,'request\x20sent',JSON[_0x412e('0xe')](_0x5cb1d3));if(_0x5cb1d3[_0x412e('0xf')]){if(_0x5cb1d3[_0x412e('0xf')]['code']===0x1f4){logger[_0x412e('0xf')](_0x412e('0xa'),_0x1aad35,_0x5cb1d3[_0x412e('0xf')][_0x412e('0x10')]);return _0x2539da(_0x5cb1d3[_0x412e('0xf')][_0x412e('0x10')]);}logger[_0x412e('0xf')](_0x412e('0xa'),_0x1aad35,_0x5cb1d3[_0x412e('0xf')][_0x412e('0x10')]);return _0x29f66a(_0x5cb1d3['error'][_0x412e('0x10')]);}else{logger[_0x412e('0x9')](_0x412e('0xa'),_0x1aad35,_0x412e('0xb'));_0x29f66a(_0x5cb1d3['result'][_0x412e('0x10')]);}})[_0x412e('0x11')](function(_0x5dc204){logger[_0x412e('0xf')](_0x412e('0xa'),_0x1aad35,_0x5dc204);_0x2539da(_0x5dc204);});});}
\ No newline at end of file
index dea3fad..0a615a7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0xcd89=['isAuthenticated','index','/describe','describe','/:id','create','put','update','delete','destroy','exports','multer','util','path','connect-timeout','Router','fs-extra','../../components/auth/service','../../components/interaction/service','./faxTransferReport.controller','get'];(function(_0x52c8e8,_0x5ee20d){var _0x31bb1a=function(_0x47233a){while(--_0x47233a){_0x52c8e8['push'](_0x52c8e8['shift']());}};_0x31bb1a(++_0x5ee20d);}(_0xcd89,0x1c4));var _0x9cd8=function(_0x483d12,_0x5468e8){_0x483d12=_0x483d12-0x0;var _0x6f3aac=_0xcd89[_0x483d12];return _0x6f3aac;};'use strict';var multer=require(_0x9cd8('0x0'));var util=require(_0x9cd8('0x1'));var path=require(_0x9cd8('0x2'));var timeout=require(_0x9cd8('0x3'));var express=require('express');var router=express[_0x9cd8('0x4')]();var fs_extra=require(_0x9cd8('0x5'));var auth=require(_0x9cd8('0x6'));var interaction=require(_0x9cd8('0x7'));var config=require('../../config/environment');var controller=require(_0x9cd8('0x8'));router[_0x9cd8('0x9')]('/',auth[_0x9cd8('0xa')](),controller[_0x9cd8('0xb')]);router[_0x9cd8('0x9')](_0x9cd8('0xc'),auth[_0x9cd8('0xa')](),controller[_0x9cd8('0xd')]);router['get'](_0x9cd8('0xe'),auth[_0x9cd8('0xa')](),controller['show']);router['post']('/',auth['isAuthenticated'](),controller[_0x9cd8('0xf')]);router[_0x9cd8('0x10')](_0x9cd8('0xe'),auth[_0x9cd8('0xa')](),controller[_0x9cd8('0x11')]);router[_0x9cd8('0x12')]('/:id',auth[_0x9cd8('0xa')](),controller[_0x9cd8('0x13')]);module[_0x9cd8('0x14')]=router;
\ No newline at end of file
index 2f5c335..a1bfdd9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0x31ee=['../../components/interaction/service','get','isAuthenticated','index','/:id','show','/:id/configurations','getConfigurations','/:id/fields','getFields','post','addConfiguration','put','update','delete','destroy','exports','multer','util','path','connect-timeout','express','fs-extra','../../components/auth/service'];(function(_0x1f4fcb,_0x211d32){var _0x3c0841=function(_0x5edb17){while(--_0x5edb17){_0x1f4fcb['push'](_0x1f4fcb['shift']());}};_0x3c0841(++_0x211d32);}(_0x31ee,0x1a9));var _0xe31e=function(_0x4962c9,_0x4a21c8){_0x4962c9=_0x4962c9-0x0;var _0xbac4ce=_0x31ee[_0x4962c9];return _0xbac4ce;};'use strict';var multer=require(_0xe31e('0x0'));var util=require(_0xe31e('0x1'));var path=require(_0xe31e('0x2'));var timeout=require(_0xe31e('0x3'));var express=require(_0xe31e('0x4'));var router=express['Router']();var fs_extra=require(_0xe31e('0x5'));var auth=require(_0xe31e('0x6'));var interaction=require(_0xe31e('0x7'));var config=require('../../config/environment');var controller=require('./intDeskAccount.controller');router[_0xe31e('0x8')]('/',auth[_0xe31e('0x9')](),controller[_0xe31e('0xa')]);router[_0xe31e('0x8')](_0xe31e('0xb'),auth[_0xe31e('0x9')](),controller[_0xe31e('0xc')]);router[_0xe31e('0x8')](_0xe31e('0xd'),auth[_0xe31e('0x9')](),controller[_0xe31e('0xe')]);router[_0xe31e('0x8')](_0xe31e('0xf'),auth[_0xe31e('0x9')](),controller[_0xe31e('0x10')]);router['post']('/',auth[_0xe31e('0x9')](),controller['create']);router[_0xe31e('0x11')](_0xe31e('0xd'),auth[_0xe31e('0x9')](),controller[_0xe31e('0x12')]);router[_0xe31e('0x13')]('/:id',auth[_0xe31e('0x9')](),controller[_0xe31e('0x14')]);router[_0xe31e('0x15')](_0xe31e('0xb'),auth[_0xe31e('0x9')](),controller[_0xe31e('0x16')]);module[_0xe31e('0x17')]=router;
\ No newline at end of file
index de4b38d..496c111 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0x98be=['integrationTab','exports','STRING','ENUM','basic'];(function(_0xc7348b,_0x145880){var _0x307cec=function(_0x4f1554){while(--_0x4f1554){_0xc7348b['push'](_0xc7348b['shift']());}};_0x307cec(++_0x145880);}(_0x98be,0x19b));var _0xe98b=function(_0x53ccf2,_0x13cb67){_0x53ccf2=_0x53ccf2-0x0;var _0x5a2964=_0x98be[_0x53ccf2];return _0x5a2964;};'use strict';var Sequelize=require('sequelize');module[_0xe98b('0x0')]={'name':{'type':Sequelize[_0xe98b('0x1')]},'description':{'type':Sequelize['STRING']},'username':{'type':Sequelize[_0xe98b('0x1')]},'remoteUri':{'type':Sequelize['STRING']},'authType':{'type':Sequelize[_0xe98b('0x2')]('basic'),'defaultValue':_0xe98b('0x3')},'password':{'type':Sequelize[_0xe98b('0x1')]},'consumerKey':{'type':Sequelize[_0xe98b('0x1')]},'consumerSecret':{'type':Sequelize[_0xe98b('0x1')]},'token':{'type':Sequelize['STRING']},'tokenSecret':{'type':Sequelize[_0xe98b('0x1')]},'serverUrl':{'type':Sequelize[_0xe98b('0x1')],'allowNull':![]},'type':{'type':Sequelize[_0xe98b('0x2')](_0xe98b('0x4'),'newTab'),'defaultValue':'integrationTab'}};
\ No newline at end of file
index 132a832..8033f4b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0x5617=['length','find','create','body','update','destroy','getConfigurations','findOne','DeskConfiguration','pick','addConfiguration','Subjects','getSubjects','channel','getDescriptions','Descriptions','getFields','priority','remoteUri','authType','password','consumerSecret','token','tokenSecret','lastIndexOf','GET','application/json','headers','Authorization','Basic\x20%s','%s:%s','username','toString','base64','concat','_embedded','entries','active','statusCode','stringify','test','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','util','path','sox','to-csv','fs-extra','lodash','squel','desk.js','querystring','papaparse','ioredis','../../components/parsers/qs','../../config/logger','../../config/utils','../../config/environment','../../config/license/util','sendStatus','status','json','limit','undefined','count','Content-Range','apply','reject','save','then','error','stack','index','map','rawAttributes','fieldName','type','model','name','keys','query','filters','intersection','attributes','hasOwnProperty','nolimit','offset','order','sort','where','merge','filter','options','include','DeskAccount','findAll','rows','catch','show','params','fields'];(function(_0x2641f9,_0x26715f){var _0x585741=function(_0x2d1462){while(--_0x2d1462){_0x2641f9['push'](_0x2641f9['shift']());}};_0x585741(++_0x26715f);}(_0x5617,0xfd));var _0x7561=function(_0x493985,_0xabbee5){_0x493985=_0x493985-0x0;var _0x532b94=_0x5617[_0x493985];return _0x532b94;};'use strict';var emlformat=require(_0x7561('0x0'));var rimraf=require(_0x7561('0x1'));var zipdir=require(_0x7561('0x2'));var jsonpatch=require(_0x7561('0x3'));var rp=require(_0x7561('0x4'));var moment=require(_0x7561('0x5'));var BPromise=require(_0x7561('0x6'));var Mustache=require('mustache');var util=require(_0x7561('0x7'));var path=require(_0x7561('0x8'));var sox=require(_0x7561('0x9'));var csv=require(_0x7561('0xa'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x7561('0xb'));var _=require(_0x7561('0xc'));var squel=require(_0x7561('0xd'));var crypto=require('crypto');var jsforce=require('jsforce');var deskjs=require(_0x7561('0xe'));var toCsv=require('to-csv');var querystring=require(_0x7561('0xf'));var Papa=require(_0x7561('0x10'));var Redis=require(_0x7561('0x11'));var authService=require('../../components/auth/service');var qs=require(_0x7561('0x12'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require('../../config/license/hardware');var logger=require(_0x7561('0x13'))('api');var utils=require(_0x7561('0x14'));var config=require(_0x7561('0x15'));var licenseUtil=require(_0x7561('0x16'));var db=require('../../mysqldb')['db'];var integrations=require('../../components/integrations/configuration');function respondWithStatusCode(_0x280a71,_0x5a021a){_0x5a021a=_0x5a021a||0xcc;return function(_0x5e2987){if(_0x5e2987){return _0x280a71[_0x7561('0x17')](_0x5a021a);}return _0x280a71[_0x7561('0x18')](_0x5a021a)['end']();};}function respondWithResult(_0x3bc890,_0x504a78){_0x504a78=_0x504a78||0xc8;return function(_0x581b53){if(_0x581b53){return _0x3bc890['status'](_0x504a78)[_0x7561('0x19')](_0x581b53);}};}function respondWithFilteredResult(_0x107b17,_0x2ec74c){return function(_0x17bf4f){if(_0x17bf4f){var _0x298e98=typeof _0x2ec74c['offset']==='undefined'&&typeof _0x2ec74c[_0x7561('0x1a')]===_0x7561('0x1b');var _0x185263=_0x17bf4f[_0x7561('0x1c')];var _0x287bc6=_0x298e98?0x0:_0x2ec74c['offset'];var _0x518efc=_0x298e98?_0x17bf4f[_0x7561('0x1c')]:_0x2ec74c['offset']+_0x2ec74c[_0x7561('0x1a')];var _0x5c271b;if(_0x518efc>=_0x185263){_0x518efc=_0x185263;_0x5c271b=0xc8;}else{_0x5c271b=0xce;}_0x107b17[_0x7561('0x18')](_0x5c271b);return _0x107b17['set'](_0x7561('0x1d'),_0x287bc6+'-'+_0x518efc+'/'+_0x185263)['json'](_0x17bf4f);}return null;};}function patchUpdates(_0xfb0811){return function(_0x3a2f2e){try{jsonpatch[_0x7561('0x1e')](_0x3a2f2e,_0xfb0811,!![]);}catch(_0x24f716){return BPromise[_0x7561('0x1f')](_0x24f716);}return _0x3a2f2e[_0x7561('0x20')]();};}function saveUpdates(_0x158793,_0x583535){return function(_0x15b551){if(_0x15b551){return _0x15b551['update'](_0x158793)[_0x7561('0x21')](function(_0x254a83){return _0x254a83;});}return null;};}function removeEntity(_0x3342ef,_0x5aea7c){return function(_0x317465){if(_0x317465){return _0x317465['destroy']()['then'](function(){_0x3342ef[_0x7561('0x18')](0xcc)['end']();});}};}function handleEntityNotFound(_0x220fb3,_0x38d9df){return function(_0x1aac7a){if(!_0x1aac7a){_0x220fb3['sendStatus'](0x194);}return _0x1aac7a;};}function handleError(_0x441082,_0x1ebd73){_0x1ebd73=_0x1ebd73||0x1f4;return function(_0x1bd7d9){logger[_0x7561('0x22')](_0x1bd7d9[_0x7561('0x23')]);if(_0x1bd7d9['name']){delete _0x1bd7d9['name'];}_0x441082['status'](_0x1ebd73)['send'](_0x1bd7d9);};}exports[_0x7561('0x24')]=function(_0xce67f7,_0x67d648){var _0x4c7ee5={},_0x1fb92c={},_0x1fd619={'count':0x0,'rows':[]};var _0x2fc43c=_[_0x7561('0x25')](db['DeskAccount'][_0x7561('0x26')],function(_0x596b03){return{'name':_0x596b03[_0x7561('0x27')],'type':_0x596b03[_0x7561('0x28')]['key']};});_0x1fb92c[_0x7561('0x29')]=_[_0x7561('0x25')](_0x2fc43c,_0x7561('0x2a'));_0x1fb92c['query']=_[_0x7561('0x2b')](_0xce67f7[_0x7561('0x2c')]);_0x1fb92c[_0x7561('0x2d')]=_[_0x7561('0x2e')](_0x1fb92c[_0x7561('0x29')],_0x1fb92c[_0x7561('0x2c')]);_0x4c7ee5[_0x7561('0x2f')]=_['intersection'](_0x1fb92c[_0x7561('0x29')],qs['fields'](_0xce67f7[_0x7561('0x2c')]['fields']));_0x4c7ee5[_0x7561('0x2f')]=_0x4c7ee5[_0x7561('0x2f')]['length']?_0x4c7ee5['attributes']:_0x1fb92c[_0x7561('0x29')];if(!_0xce67f7[_0x7561('0x2c')][_0x7561('0x30')](_0x7561('0x31'))){_0x4c7ee5['limit']=qs[_0x7561('0x1a')](_0xce67f7['query'][_0x7561('0x1a')]);_0x4c7ee5['offset']=qs[_0x7561('0x32')](_0xce67f7[_0x7561('0x2c')][_0x7561('0x32')]);}_0x4c7ee5[_0x7561('0x33')]=qs[_0x7561('0x34')](_0xce67f7['query'][_0x7561('0x34')]);_0x4c7ee5[_0x7561('0x35')]=qs[_0x7561('0x2d')](_['pick'](_0xce67f7[_0x7561('0x2c')],_0x1fb92c['filters']),_0x2fc43c);if(_0xce67f7[_0x7561('0x2c')]['filter']){_0x4c7ee5[_0x7561('0x35')]=_[_0x7561('0x36')](_0x4c7ee5[_0x7561('0x35')],{'$or':_[_0x7561('0x25')](_0x2fc43c,function(_0x3fddf2){if(_0x3fddf2[_0x7561('0x28')]!=='VIRTUAL'){var _0x5040ed={};_0x5040ed[_0x3fddf2[_0x7561('0x2a')]]={'$like':'%'+_0xce67f7[_0x7561('0x2c')][_0x7561('0x37')]+'%'};return _0x5040ed;}})});}_0x4c7ee5=_['merge']({},_0x4c7ee5,_0xce67f7[_0x7561('0x38')]);var _0x2aeaf2={'where':_0x4c7ee5[_0x7561('0x35')]};return db['DeskAccount'][_0x7561('0x1c')](_0x2aeaf2)[_0x7561('0x21')](function(_0x20b116){_0x1fd619[_0x7561('0x1c')]=_0x20b116;if(_0xce67f7['query']['includeAll']){_0x4c7ee5[_0x7561('0x39')]=[{'all':!![]}];}return db[_0x7561('0x3a')][_0x7561('0x3b')](_0x4c7ee5);})[_0x7561('0x21')](function(_0x59c7ab){_0x1fd619[_0x7561('0x3c')]=_0x59c7ab;return _0x1fd619;})[_0x7561('0x21')](respondWithFilteredResult(_0x67d648,_0x4c7ee5))[_0x7561('0x3d')](handleError(_0x67d648,null));};exports[_0x7561('0x3e')]=function(_0x18e690,_0x3a4399){var _0x57c49e={'raw':![],'where':{'id':_0x18e690[_0x7561('0x3f')]['id']}},_0x2c6198={};_0x2c6198['model']=_[_0x7561('0x2b')](db[_0x7561('0x3a')][_0x7561('0x26')]);_0x2c6198[_0x7561('0x2c')]=_[_0x7561('0x2b')](_0x18e690['query']);_0x2c6198[_0x7561('0x2d')]=_['intersection'](_0x2c6198[_0x7561('0x29')],_0x2c6198[_0x7561('0x2c')]);_0x57c49e['attributes']=_['intersection'](_0x2c6198[_0x7561('0x29')],qs[_0x7561('0x40')](_0x18e690[_0x7561('0x2c')][_0x7561('0x40')]));_0x57c49e[_0x7561('0x2f')]=_0x57c49e[_0x7561('0x2f')][_0x7561('0x41')]?_0x57c49e[_0x7561('0x2f')]:_0x2c6198[_0x7561('0x29')];if(_0x18e690['query']['includeAll']){_0x57c49e[_0x7561('0x39')]=[{'all':!![]}];}_0x57c49e=_[_0x7561('0x36')]({},_0x57c49e,_0x18e690['options']);return db['DeskAccount'][_0x7561('0x42')](_0x57c49e)[_0x7561('0x21')](handleEntityNotFound(_0x3a4399,null))[_0x7561('0x21')](respondWithResult(_0x3a4399,null))[_0x7561('0x3d')](handleError(_0x3a4399,null));};exports[_0x7561('0x43')]=function(_0x5bd5f2,_0x177dc3){return db[_0x7561('0x3a')][_0x7561('0x43')](_0x5bd5f2[_0x7561('0x44')],{})['then'](respondWithResult(_0x177dc3,0xc9))['catch'](handleError(_0x177dc3,null));};exports[_0x7561('0x45')]=function(_0x8f0b5c,_0x932c67){if(_0x8f0b5c['body']['id']){delete _0x8f0b5c[_0x7561('0x44')]['id'];}return db['DeskAccount']['find']({'where':{'id':_0x8f0b5c[_0x7561('0x3f')]['id']}})[_0x7561('0x21')](handleEntityNotFound(_0x932c67,null))[_0x7561('0x21')](saveUpdates(_0x8f0b5c[_0x7561('0x44')],null))[_0x7561('0x21')](respondWithResult(_0x932c67,null))[_0x7561('0x3d')](handleError(_0x932c67,null));};exports[_0x7561('0x46')]=function(_0x2abb77,_0x5f1cf8){return db[_0x7561('0x3a')][_0x7561('0x42')]({'where':{'id':_0x2abb77[_0x7561('0x3f')]['id']}})[_0x7561('0x21')](handleEntityNotFound(_0x5f1cf8,null))[_0x7561('0x21')](removeEntity(_0x5f1cf8,null))[_0x7561('0x3d')](handleError(_0x5f1cf8,null));};exports[_0x7561('0x47')]=function(_0x5bccf3,_0x1e70e3,_0x403f1d){var _0x3d3c0a={};var _0x4e5b42={};var _0x346a05;var _0x24051d;return db[_0x7561('0x3a')][_0x7561('0x48')]({'where':{'id':_0x5bccf3['params']['id']}})['then'](handleEntityNotFound(_0x1e70e3,null))[_0x7561('0x21')](function(_0x195963){if(_0x195963){_0x346a05=_0x195963;_0x4e5b42[_0x7561('0x29')]=_['keys'](db[_0x7561('0x49')][_0x7561('0x26')]);_0x4e5b42[_0x7561('0x2c')]=_[_0x7561('0x2b')](_0x5bccf3[_0x7561('0x2c')]);_0x4e5b42[_0x7561('0x2d')]=_[_0x7561('0x2e')](_0x4e5b42['model'],_0x4e5b42[_0x7561('0x2c')]);_0x3d3c0a[_0x7561('0x2f')]=_[_0x7561('0x2e')](_0x4e5b42[_0x7561('0x29')],qs[_0x7561('0x40')](_0x5bccf3['query'][_0x7561('0x40')]));_0x3d3c0a[_0x7561('0x2f')]=_0x3d3c0a['attributes'][_0x7561('0x41')]?_0x3d3c0a[_0x7561('0x2f')]:_0x4e5b42[_0x7561('0x29')];_0x3d3c0a[_0x7561('0x33')]=qs[_0x7561('0x34')](_0x5bccf3['query'][_0x7561('0x34')]);_0x3d3c0a['where']=qs[_0x7561('0x2d')](_[_0x7561('0x4a')](_0x5bccf3[_0x7561('0x2c')],_0x4e5b42[_0x7561('0x2d')]));if(_0x5bccf3[_0x7561('0x2c')][_0x7561('0x37')]){_0x3d3c0a['where']=_[_0x7561('0x36')](_0x3d3c0a[_0x7561('0x35')],{'$or':_[_0x7561('0x25')](_0x3d3c0a[_0x7561('0x2f')],function(_0x16e01d){var _0x5ac6de={};_0x5ac6de[_0x16e01d]={'$like':'%'+_0x5bccf3[_0x7561('0x2c')][_0x7561('0x37')]+'%'};return _0x5ac6de;})});}_0x3d3c0a=_[_0x7561('0x36')]({},_0x3d3c0a,_0x5bccf3[_0x7561('0x38')]);return _0x346a05['getConfigurations'](_0x3d3c0a);}})[_0x7561('0x21')](function(_0x9be79d){if(_0x9be79d){_0x24051d=_0x9be79d['length'];if(!_0x5bccf3['query']['hasOwnProperty'](_0x7561('0x31'))){_0x3d3c0a[_0x7561('0x1a')]=qs[_0x7561('0x1a')](_0x5bccf3[_0x7561('0x2c')]['limit']);_0x3d3c0a[_0x7561('0x32')]=qs['offset'](_0x5bccf3[_0x7561('0x2c')][_0x7561('0x32')]);}return _0x346a05[_0x7561('0x47')](_0x3d3c0a);}})[_0x7561('0x21')](function(_0x471eb1){if(_0x471eb1){return _0x471eb1?{'count':_0x24051d,'rows':_0x471eb1}:null;}})[_0x7561('0x21')](respondWithResult(_0x1e70e3,null))['catch'](handleError(_0x1e70e3,null));};exports[_0x7561('0x4b')]=function(_0x4fae82,_0x420d95,_0x56fae4){if(_0x4fae82[_0x7561('0x44')]['id']){delete _0x4fae82[_0x7561('0x44')]['id'];}return db[_0x7561('0x3a')][_0x7561('0x48')]({'where':{'id':_0x4fae82[_0x7561('0x3f')]['id']}})[_0x7561('0x21')](handleEntityNotFound(_0x420d95,null))['then'](function(_0x1b62b9){if(_0x1b62b9){_0x4fae82[_0x7561('0x44')]['AccountId']=_0x1b62b9['id'];_0x4fae82['body'][_0x7561('0x4c')]=integrations[_0x7561('0x4d')](_0x4fae82['body'][_0x7561('0x4e')],_0x4fae82[_0x7561('0x44')][_0x7561('0x28')]);_0x4fae82[_0x7561('0x44')]['Descriptions']=integrations[_0x7561('0x4f')](_0x4fae82[_0x7561('0x44')][_0x7561('0x4e')],_0x4fae82['body'][_0x7561('0x28')]);return db[_0x7561('0x49')][_0x7561('0x43')](_0x4fae82[_0x7561('0x44')],{'include':[{'model':db['DeskField'],'as':_0x7561('0x4c')},{'model':db['DeskField'],'as':_0x7561('0x50')}]});}return null;})['then'](respondWithResult(_0x420d95,null))[_0x7561('0x3d')](handleError(_0x420d95,null));};exports[_0x7561('0x51')]=function(_0x2654cb,_0x4a75ad,_0xbe56a3){var _0xe5993a=[{'name':_0x7561('0x52'),'label':_0x7561('0x52'),'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 _0x31d8fa='';return db[_0x7561('0x3a')][_0x7561('0x48')]({'where':{'id':_0x2654cb[_0x7561('0x3f')]['id']},'attributes':['id',_0x7561('0x53'),_0x7561('0x54'),'username',_0x7561('0x55'),'consumerKey',_0x7561('0x56'),_0x7561('0x57'),_0x7561('0x58')]})['then'](handleEntityNotFound(_0x4a75ad,null))['then'](function(_0x59a22e){if(_0x59a22e){_0x31d8fa=_0x59a22e[_0x7561('0x53')];var _0x2e04b7=_0x31d8fa['slice'](-0x1);if(_0x2e04b7==='/'){_0x31d8fa=_0x31d8fa['substring'](0x0,_0x31d8fa[_0x7561('0x59')](_0x2e04b7));}var _0x132d29={'method':_0x7561('0x5a'),'uri':util['format']('%s/custom_fields',_0x31d8fa),'headers':{'Content-Type':_0x7561('0x5b'),'Accept':_0x7561('0x5b')},'json':!![]};if(_0x59a22e[_0x7561('0x54')]==='basic'){_0x132d29[_0x7561('0x5c')][_0x7561('0x5d')]=util['format'](_0x7561('0x5e'),new Buffer(util['format'](_0x7561('0x5f'),_0x59a22e[_0x7561('0x60')],_0x59a22e[_0x7561('0x55')]))[_0x7561('0x61')](_0x7561('0x62')));}return rp(_0x132d29)[_0x7561('0x21')](function(_0x189bb0){return _0xe5993a[_0x7561('0x63')](_[_0x7561('0x25')](_0x189bb0[_0x7561('0x64')][_0x7561('0x65')],function(_0x28352d){return{'id':_0x28352d[_0x7561('0x2a')],'name':_0x28352d['name'],'type':_0x28352d[_0x7561('0x28')],'active':_0x28352d[_0x7561('0x66')],'label':_0x28352d['label'],'custom':!![]};}));});}})[_0x7561('0x21')](function(_0x7f0f3f){return{'count':_0x7f0f3f[_0x7561('0x41')],'rows':_0x7f0f3f};})['then'](respondWithResult(_0x4a75ad,null))[_0x7561('0x3d')](function(_0x116244){var _0x524e0d=_0x2654cb[_0x7561('0x2c')]['test']?0x1f4:_0x116244[_0x7561('0x67')]||0x1f4;logger[_0x7561('0x22')]('getFields,\x20%s,\x20%s,\x20%s',_0x7561('0x51'),_0x524e0d,JSON[_0x7561('0x68')](_0x116244));delete _0x116244[_0x7561('0x2a')];if(_0x524e0d===0x191){_0x524e0d=0x190;}_0x4a75ad[_0x7561('0x18')](_0x524e0d)['send'](_0x2654cb[_0x7561('0x2c')][_0x7561('0x69')]?{'message':'Wrong\x20credentials','statusCode':_0x116244[_0x7561('0x67')]}:_0x116244);});};
\ No newline at end of file
index 2f5a0bb..49dc0af 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0x233b=['rimraf','./intDeskAccount.attributes','../../components/integrations/configuration','exports','define','DeskAccount','lodash','util','../../config/logger','api','moment','bluebird'];(function(_0x5f1ca0,_0x1d32a2){var _0xf9197e=function(_0xb9e0bf){while(--_0xb9e0bf){_0x5f1ca0['push'](_0x5f1ca0['shift']());}};_0xf9197e(++_0x1d32a2);}(_0x233b,0x1f2));var _0xb233=function(_0x11005e,_0x20c3d2){_0x11005e=_0x11005e-0x0;var _0x29338f=_0x233b[_0x11005e];return _0x29338f;};'use strict';var _=require(_0xb233('0x0'));var util=require(_0xb233('0x1'));var logger=require(_0xb233('0x2'))(_0xb233('0x3'));var moment=require(_0xb233('0x4'));var BPromise=require(_0xb233('0x5'));var rp=require('request-promise');var fs=require('fs');var path=require('path');var rimraf=require(_0xb233('0x6'));var config=require('../../config/environment');var attributes=require(_0xb233('0x7'));var integrations=require(_0xb233('0x8'));module[_0xb233('0x9')]=function(_0x262a64,_0x115a1c){return _0x262a64[_0xb233('0xa')](_0xb233('0xb'),attributes,{'tableName':'int_desk_accounts','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 8311863..7e9bf15 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0xc61d=['include','stringify','ShowDeskAccount','find','raw','lodash','util','moment','bluebird','randomstring','ioredis','../../config/logger','../../config/environment','jayson/promise','http','request','then','request\x20sent','debug','DeskAccount,\x20%s,\x20%s,\x20%s','error','code','DeskAccount,\x20%s,\x20%s','message','info','result','catch','GetDeskAccount','DeskAccount','findAll','options','where','attributes','limit','map','model'];(function(_0xbbe7cd,_0x5c0d76){var _0x4af6bf=function(_0x30a8ff){while(--_0x30a8ff){_0xbbe7cd['push'](_0xbbe7cd['shift']());}};_0x4af6bf(++_0x5c0d76);}(_0xc61d,0xdd));var _0xdc61=function(_0xc333b6,_0x154f07){_0xc333b6=_0xc333b6-0x0;var _0x3ff262=_0xc61d[_0xc333b6];return _0x3ff262;};'use strict';var _=require(_0xdc61('0x0'));var util=require(_0xdc61('0x1'));var moment=require(_0xdc61('0x2'));var BPromise=require(_0xdc61('0x3'));var rs=require(_0xdc61('0x4'));var fs=require('fs');var Redis=require(_0xdc61('0x5'));var db=require('../../mysqldb')['db'];var utils=require('../../config/utils');var logger=require(_0xdc61('0x6'))('rpc');var config=require(_0xdc61('0x7'));var jayson=require(_0xdc61('0x8'));var client=jayson['client'][_0xdc61('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x217d42,_0x1ba596,_0x839e9b){return new BPromise(function(_0x4e6e17,_0x39117e){return client[_0xdc61('0xa')](_0x217d42,_0x839e9b)[_0xdc61('0xb')](function(_0x381d07){logger['info']('DeskAccount,\x20%s,\x20%s',_0x1ba596,_0xdc61('0xc'));logger[_0xdc61('0xd')](_0xdc61('0xe'),_0x1ba596,_0xdc61('0xc'),JSON['stringify'](_0x381d07));if(_0x381d07[_0xdc61('0xf')]){if(_0x381d07[_0xdc61('0xf')][_0xdc61('0x10')]===0x1f4){logger[_0xdc61('0xf')](_0xdc61('0x11'),_0x1ba596,_0x381d07[_0xdc61('0xf')][_0xdc61('0x12')]);return _0x39117e(_0x381d07['error'][_0xdc61('0x12')]);}logger['error'](_0xdc61('0x11'),_0x1ba596,_0x381d07['error'][_0xdc61('0x12')]);return _0x4e6e17(_0x381d07[_0xdc61('0xf')][_0xdc61('0x12')]);}else{logger[_0xdc61('0x13')](_0xdc61('0x11'),_0x1ba596,_0xdc61('0xc'));_0x4e6e17(_0x381d07[_0xdc61('0x14')][_0xdc61('0x12')]);}})[_0xdc61('0x15')](function(_0x3e0625){logger[_0xdc61('0xf')](_0xdc61('0x11'),_0x1ba596,_0x3e0625);_0x39117e(_0x3e0625);});});}exports[_0xdc61('0x16')]=function(_0x398a32){var _0x4d54c3=this;return new Promise(function(_0x21f663,_0x5cc03e){return db[_0xdc61('0x17')][_0xdc61('0x18')]({'raw':_0x398a32['options']?_0x398a32[_0xdc61('0x19')]['raw']===undefined?!![]:![]:!![],'where':_0x398a32[_0xdc61('0x19')]?_0x398a32[_0xdc61('0x19')][_0xdc61('0x1a')]||null:null,'attributes':_0x398a32[_0xdc61('0x19')]?_0x398a32[_0xdc61('0x19')][_0xdc61('0x1b')]||null:null,'limit':_0x398a32[_0xdc61('0x19')]?_0x398a32[_0xdc61('0x19')][_0xdc61('0x1c')]||null:null,'include':_0x398a32[_0xdc61('0x19')]?_0x398a32['options']['include']?_[_0xdc61('0x1d')](_0x398a32['options']['include'],function(_0x9c2217){return{'model':db[_0x9c2217[_0xdc61('0x1e')]],'as':_0x9c2217['as'],'attributes':_0x9c2217['attributes'],'include':_0x9c2217['include']?_[_0xdc61('0x1d')](_0x9c2217[_0xdc61('0x1f')],function(_0x10b5f9){return{'model':db[_0x10b5f9[_0xdc61('0x1e')]],'as':_0x10b5f9['as'],'attributes':_0x10b5f9[_0xdc61('0x1b')],'include':_0x10b5f9[_0xdc61('0x1f')]?_[_0xdc61('0x1d')](_0x10b5f9['include'],function(_0xa57ae1){return{'model':db[_0xa57ae1[_0xdc61('0x1e')]],'as':_0xa57ae1['as'],'attributes':_0xa57ae1[_0xdc61('0x1b')]};}):[]};}):[]};}):[]:[]})[_0xdc61('0xb')](function(_0x5c9360){logger[_0xdc61('0x13')]('GetDeskAccount',_0x398a32);logger[_0xdc61('0xd')](_0xdc61('0x16'),_0x398a32,JSON[_0xdc61('0x20')](_0x5c9360));_0x21f663(_0x5c9360);})['catch'](function(_0x22bc6b){logger[_0xdc61('0xf')](_0xdc61('0x16'),_0x22bc6b['message'],_0x398a32);_0x5cc03e(_0x4d54c3[_0xdc61('0xf')](0x1f4,_0x22bc6b[_0xdc61('0x12')]));});});};exports[_0xdc61('0x21')]=function(_0x46775f){var _0x55a348=this;return new Promise(function(_0x3eb9e5,_0x5775ef){return db[_0xdc61('0x17')][_0xdc61('0x22')]({'raw':_0x46775f['options']?_0x46775f['options'][_0xdc61('0x23')]===undefined?!![]:![]:!![],'where':_0x46775f[_0xdc61('0x19')]?_0x46775f['options'][_0xdc61('0x1a')]||null:null,'attributes':_0x46775f[_0xdc61('0x19')]?_0x46775f['options'][_0xdc61('0x1b')]||null:null,'include':_0x46775f[_0xdc61('0x19')]?_0x46775f['options'][_0xdc61('0x1f')]?_[_0xdc61('0x1d')](_0x46775f[_0xdc61('0x19')][_0xdc61('0x1f')],function(_0x1612b7){return{'model':db[_0x1612b7[_0xdc61('0x1e')]],'as':_0x1612b7['as'],'attributes':_0x1612b7[_0xdc61('0x1b')],'include':_0x1612b7[_0xdc61('0x1f')]?_[_0xdc61('0x1d')](_0x1612b7[_0xdc61('0x1f')],function(_0x2a6efa){return{'model':db[_0x2a6efa['model']],'as':_0x2a6efa['as'],'attributes':_0x2a6efa['attributes'],'include':_0x2a6efa['include']?_[_0xdc61('0x1d')](_0x2a6efa['include'],function(_0x596dfd){return{'model':db[_0x596dfd[_0xdc61('0x1e')]],'as':_0x596dfd['as'],'attributes':_0x596dfd[_0xdc61('0x1b')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x1a47c5){logger['info'](_0xdc61('0x21'),_0x46775f);logger[_0xdc61('0xd')](_0xdc61('0x21'),_0x46775f,JSON['stringify'](_0x1a47c5));_0x3eb9e5(_0x1a47c5);})[_0xdc61('0x15')](function(_0x4898ec){logger['error'](_0xdc61('0x21'),_0x4898ec['message'],_0x46775f);_0x5775ef(_0x55a348[_0xdc61('0xf')](0x1f4,_0x4898ec['message']));});});};
\ No newline at end of file
index 7bb082e..6868bc9 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(_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
+var _0x7217=['getDescriptions','/:id/tags','post','setTags','destroy','exports','multer','path','connect-timeout','express','Router','fs-extra','../../config/environment','./intDeskConfiguration.controller','get','isAuthenticated','index','/:id','show','/:id/fields','getFields','/:id/subjects','getSubjects','/:id/descriptions'];(function(_0x3d2fe4,_0x4394d7){var _0x2d8d34=function(_0x39b68b){while(--_0x39b68b){_0x3d2fe4['push'](_0x3d2fe4['shift']());}};_0x2d8d34(++_0x4394d7);}(_0x7217,0x19e));var _0x7721=function(_0x2763f2,_0x416af8){_0x2763f2=_0x2763f2-0x0;var _0x3ef471=_0x7217[_0x2763f2];return _0x3ef471;};'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['getTags']);router[_0x7721('0x14')]('/',auth[_0x7721('0x9')](),controller['create']);router[_0x7721('0x14')](_0x7721('0x13'),auth[_0x7721('0x9')](),controller[_0x7721('0x15')]);router['put'](_0x7721('0xb'),auth[_0x7721('0x9')](),controller['update']);router['delete']('/:id',auth[_0x7721('0x9')](),controller[_0x7721('0x16')]);module[_0x7721('0x17')]=router;
\ No newline at end of file
index 0d74206..e7901e5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0xbfb1=['exports','STRING','sequelize'];(function(_0x43a3cc,_0x55ae7d){var _0x375d6a=function(_0x20800a){while(--_0x20800a){_0x43a3cc['push'](_0x43a3cc['shift']());}};_0x375d6a(++_0x55ae7d);}(_0xbfb1,0x18b));var _0x1bfb=function(_0x307c57,_0x2ff9e5){_0x307c57=_0x307c57-0x0;var _0x232faa=_0xbfb1[_0x307c57];return _0x232faa;};'use strict';var Sequelize=require(_0x1bfb('0x0'));module[_0x1bfb('0x1')]={'name':{'type':Sequelize[_0x1bfb('0x2')]},'description':{'type':Sequelize[_0x1bfb('0x2')]}};
\ No newline at end of file
index b87241a..ef716fe 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0xb03b=['../../config/license/hardware','../../config/logger','api','../../config/license/util','../../mysqldb','sendStatus','end','json','undefined','limit','count','status','apply','reject','save','update','then','destroy','error','stack','name','send','map','DeskConfiguration','rawAttributes','fieldName','type','key','model','query','keys','filters','intersection','attributes','fields','length','offset','order','sort','where','merge','options','includeAll','include','rows','catch','show','find','create','body','params','getFields','findOne','DeskField','filter','nolimit','getSubjects','getDescriptions','pick','Tag','getTags','hasOwnProperty','setTags','ids','eml-format','rimraf','fast-json-patch','moment','bluebird','mustache','util','path','sox','ejs','fs-extra','squel','crypto','jsforce','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch'];(function(_0x5b1476,_0x15c3a2){var _0x2e8383=function(_0x51e5d0){while(--_0x51e5d0){_0x5b1476['push'](_0x5b1476['shift']());}};_0x2e8383(++_0x15c3a2);}(_0xb03b,0x190));var _0xbb03=function(_0x1366a7,_0x565588){_0x1366a7=_0x1366a7-0x0;var _0x6a402a=_0xb03b[_0x1366a7];return _0x6a402a;};'use strict';var emlformat=require(_0xbb03('0x0'));var rimraf=require(_0xbb03('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0xbb03('0x2'));var rp=require('request-promise');var moment=require(_0xbb03('0x3'));var BPromise=require(_0xbb03('0x4'));var Mustache=require(_0xbb03('0x5'));var util=require(_0xbb03('0x6'));var path=require(_0xbb03('0x7'));var sox=require(_0xbb03('0x8'));var csv=require('to-csv');var ejs=require(_0xbb03('0x9'));var fs=require('fs');var fs_extra=require(_0xbb03('0xa'));var _=require('lodash');var squel=require(_0xbb03('0xb'));var crypto=require(_0xbb03('0xc'));var jsforce=require(_0xbb03('0xd'));var deskjs=require('desk.js');var toCsv=require('to-csv');var querystring=require(_0xbb03('0xe'));var Papa=require(_0xbb03('0xf'));var Redis=require(_0xbb03('0x10'));var authService=require(_0xbb03('0x11'));var qs=require(_0xbb03('0x12'));var as=require(_0xbb03('0x13'));var hardwareService=require(_0xbb03('0x14'));var logger=require(_0xbb03('0x15'))(_0xbb03('0x16'));var utils=require('../../config/utils');var config=require('../../config/environment');var licenseUtil=require(_0xbb03('0x17'));var db=require(_0xbb03('0x18'))['db'];function respondWithStatusCode(_0x37a1e3,_0x1c7eb5){_0x1c7eb5=_0x1c7eb5||0xcc;return function(_0x227ede){if(_0x227ede){return _0x37a1e3[_0xbb03('0x19')](_0x1c7eb5);}return _0x37a1e3['status'](_0x1c7eb5)[_0xbb03('0x1a')]();};}function respondWithResult(_0x4db82e,_0x422ec5){_0x422ec5=_0x422ec5||0xc8;return function(_0x1f34ea){if(_0x1f34ea){return _0x4db82e['status'](_0x422ec5)[_0xbb03('0x1b')](_0x1f34ea);}};}function respondWithFilteredResult(_0x481e1e,_0x560aa1){return function(_0x4677c7){if(_0x4677c7){var _0xf5cef0=typeof _0x560aa1['offset']===_0xbb03('0x1c')&&typeof _0x560aa1[_0xbb03('0x1d')]==='undefined';var _0x29ab8f=_0x4677c7[_0xbb03('0x1e')];var _0x25e62b=_0xf5cef0?0x0:_0x560aa1['offset'];var _0x125bad=_0xf5cef0?_0x4677c7['count']:_0x560aa1['offset']+_0x560aa1[_0xbb03('0x1d')];var _0x17bc78;if(_0x125bad>=_0x29ab8f){_0x125bad=_0x29ab8f;_0x17bc78=0xc8;}else{_0x17bc78=0xce;}_0x481e1e[_0xbb03('0x1f')](_0x17bc78);return _0x481e1e['set']('Content-Range',_0x25e62b+'-'+_0x125bad+'/'+_0x29ab8f)['json'](_0x4677c7);}return null;};}function patchUpdates(_0x375b5c){return function(_0x11621e){try{jsonpatch[_0xbb03('0x20')](_0x11621e,_0x375b5c,!![]);}catch(_0x178295){return BPromise[_0xbb03('0x21')](_0x178295);}return _0x11621e[_0xbb03('0x22')]();};}function saveUpdates(_0x550b0e,_0x22dd5e){return function(_0xa36297){if(_0xa36297){return _0xa36297[_0xbb03('0x23')](_0x550b0e)[_0xbb03('0x24')](function(_0x514812){return _0x514812;});}return null;};}function removeEntity(_0x9f9e,_0x5b1e7a){return function(_0x2f85d9){if(_0x2f85d9){return _0x2f85d9[_0xbb03('0x25')]()['then'](function(){_0x9f9e[_0xbb03('0x1f')](0xcc)['end']();});}};}function handleEntityNotFound(_0x3c7d3b,_0x1a41ef){return function(_0x2be906){if(!_0x2be906){_0x3c7d3b['sendStatus'](0x194);}return _0x2be906;};}function handleError(_0x36b36d,_0x4c6527){_0x4c6527=_0x4c6527||0x1f4;return function(_0x1e5cff){logger[_0xbb03('0x26')](_0x1e5cff[_0xbb03('0x27')]);if(_0x1e5cff[_0xbb03('0x28')]){delete _0x1e5cff[_0xbb03('0x28')];}_0x36b36d[_0xbb03('0x1f')](_0x4c6527)[_0xbb03('0x29')](_0x1e5cff);};}exports['index']=function(_0x130b24,_0x2d684f){var _0x3e675d={},_0x23e653={},_0x60baf4={'count':0x0,'rows':[]};var _0x1af4ca=_[_0xbb03('0x2a')](db[_0xbb03('0x2b')][_0xbb03('0x2c')],function(_0x589ceb){return{'name':_0x589ceb[_0xbb03('0x2d')],'type':_0x589ceb[_0xbb03('0x2e')][_0xbb03('0x2f')]};});_0x23e653[_0xbb03('0x30')]=_[_0xbb03('0x2a')](_0x1af4ca,_0xbb03('0x28'));_0x23e653[_0xbb03('0x31')]=_[_0xbb03('0x32')](_0x130b24[_0xbb03('0x31')]);_0x23e653[_0xbb03('0x33')]=_[_0xbb03('0x34')](_0x23e653[_0xbb03('0x30')],_0x23e653[_0xbb03('0x31')]);_0x3e675d[_0xbb03('0x35')]=_[_0xbb03('0x34')](_0x23e653[_0xbb03('0x30')],qs['fields'](_0x130b24['query'][_0xbb03('0x36')]));_0x3e675d[_0xbb03('0x35')]=_0x3e675d[_0xbb03('0x35')][_0xbb03('0x37')]?_0x3e675d[_0xbb03('0x35')]:_0x23e653[_0xbb03('0x30')];if(!_0x130b24[_0xbb03('0x31')]['hasOwnProperty']('nolimit')){_0x3e675d[_0xbb03('0x1d')]=qs[_0xbb03('0x1d')](_0x130b24[_0xbb03('0x31')][_0xbb03('0x1d')]);_0x3e675d[_0xbb03('0x38')]=qs[_0xbb03('0x38')](_0x130b24[_0xbb03('0x31')]['offset']);}_0x3e675d[_0xbb03('0x39')]=qs[_0xbb03('0x3a')](_0x130b24[_0xbb03('0x31')][_0xbb03('0x3a')]);_0x3e675d[_0xbb03('0x3b')]=qs[_0xbb03('0x33')](_['pick'](_0x130b24[_0xbb03('0x31')],_0x23e653[_0xbb03('0x33')]),_0x1af4ca);if(_0x130b24[_0xbb03('0x31')]['filter']){_0x3e675d[_0xbb03('0x3b')]=_['merge'](_0x3e675d[_0xbb03('0x3b')],{'$or':_['map'](_0x1af4ca,function(_0x100d0a){if(_0x100d0a[_0xbb03('0x2e')]!=='VIRTUAL'){var _0x543f6a={};_0x543f6a[_0x100d0a[_0xbb03('0x28')]]={'$like':'%'+_0x130b24['query']['filter']+'%'};return _0x543f6a;}})});}_0x3e675d=_[_0xbb03('0x3c')]({},_0x3e675d,_0x130b24[_0xbb03('0x3d')]);var _0x46eaca={'where':_0x3e675d[_0xbb03('0x3b')]};return db[_0xbb03('0x2b')][_0xbb03('0x1e')](_0x46eaca)[_0xbb03('0x24')](function(_0xfe640a){_0x60baf4[_0xbb03('0x1e')]=_0xfe640a;if(_0x130b24['query'][_0xbb03('0x3e')]){_0x3e675d[_0xbb03('0x3f')]=[{'all':!![]}];}return db[_0xbb03('0x2b')]['findAll'](_0x3e675d);})[_0xbb03('0x24')](function(_0x4a4b40){_0x60baf4[_0xbb03('0x40')]=_0x4a4b40;return _0x60baf4;})['then'](respondWithFilteredResult(_0x2d684f,_0x3e675d))[_0xbb03('0x41')](handleError(_0x2d684f,null));};exports[_0xbb03('0x42')]=function(_0x15c8cf,_0x375766){var _0x297e2f={'raw':![],'where':{'id':_0x15c8cf['params']['id']}},_0xf01b1a={};_0xf01b1a[_0xbb03('0x30')]=_[_0xbb03('0x32')](db[_0xbb03('0x2b')][_0xbb03('0x2c')]);_0xf01b1a[_0xbb03('0x31')]=_[_0xbb03('0x32')](_0x15c8cf[_0xbb03('0x31')]);_0xf01b1a[_0xbb03('0x33')]=_[_0xbb03('0x34')](_0xf01b1a['model'],_0xf01b1a['query']);_0x297e2f[_0xbb03('0x35')]=_[_0xbb03('0x34')](_0xf01b1a[_0xbb03('0x30')],qs['fields'](_0x15c8cf['query']['fields']));_0x297e2f[_0xbb03('0x35')]=_0x297e2f[_0xbb03('0x35')][_0xbb03('0x37')]?_0x297e2f[_0xbb03('0x35')]:_0xf01b1a[_0xbb03('0x30')];if(_0x15c8cf[_0xbb03('0x31')]['includeAll']){_0x297e2f[_0xbb03('0x3f')]=[{'all':!![]}];}_0x297e2f=_[_0xbb03('0x3c')]({},_0x297e2f,_0x15c8cf[_0xbb03('0x3d')]);return db[_0xbb03('0x2b')][_0xbb03('0x43')](_0x297e2f)[_0xbb03('0x24')](handleEntityNotFound(_0x375766,null))[_0xbb03('0x24')](respondWithResult(_0x375766,null))[_0xbb03('0x41')](handleError(_0x375766,null));};exports['create']=function(_0x26da0c,_0xce358){return db[_0xbb03('0x2b')][_0xbb03('0x44')](_0x26da0c[_0xbb03('0x45')],{})[_0xbb03('0x24')](respondWithResult(_0xce358,0xc9))[_0xbb03('0x41')](handleError(_0xce358,null));};exports['update']=function(_0x136520,_0x589da4){if(_0x136520[_0xbb03('0x45')]['id']){delete _0x136520[_0xbb03('0x45')]['id'];}return db[_0xbb03('0x2b')][_0xbb03('0x43')]({'where':{'id':_0x136520[_0xbb03('0x46')]['id']}})[_0xbb03('0x24')](handleEntityNotFound(_0x589da4,null))[_0xbb03('0x24')](saveUpdates(_0x136520['body'],null))[_0xbb03('0x24')](respondWithResult(_0x589da4,null))[_0xbb03('0x41')](handleError(_0x589da4,null));};exports['destroy']=function(_0x350c4b,_0x1f57e7){return db[_0xbb03('0x2b')][_0xbb03('0x43')]({'where':{'id':_0x350c4b[_0xbb03('0x46')]['id']}})['then'](handleEntityNotFound(_0x1f57e7,null))[_0xbb03('0x24')](removeEntity(_0x1f57e7,null))[_0xbb03('0x41')](handleError(_0x1f57e7,null));};exports[_0xbb03('0x47')]=function(_0x17b48d,_0x4f482b,_0x5ea477){var _0xa07172={};var _0x3d12fc={};var _0x5587cb;var _0x8fea60;return db[_0xbb03('0x2b')][_0xbb03('0x48')]({'where':{'id':_0x17b48d[_0xbb03('0x46')]['id']}})[_0xbb03('0x24')](handleEntityNotFound(_0x4f482b,null))[_0xbb03('0x24')](function(_0x4f2a59){if(_0x4f2a59){_0x5587cb=_0x4f2a59;_0x3d12fc[_0xbb03('0x30')]=_['keys'](db[_0xbb03('0x49')][_0xbb03('0x2c')]);_0x3d12fc[_0xbb03('0x31')]=_[_0xbb03('0x32')](_0x17b48d[_0xbb03('0x31')]);_0x3d12fc[_0xbb03('0x33')]=_[_0xbb03('0x34')](_0x3d12fc['model'],_0x3d12fc['query']);_0xa07172[_0xbb03('0x35')]=_[_0xbb03('0x34')](_0x3d12fc[_0xbb03('0x30')],qs['fields'](_0x17b48d[_0xbb03('0x31')]['fields']));_0xa07172['attributes']=_0xa07172['attributes']['length']?_0xa07172[_0xbb03('0x35')]:_0x3d12fc['model'];_0xa07172[_0xbb03('0x39')]=qs[_0xbb03('0x3a')](_0x17b48d[_0xbb03('0x31')][_0xbb03('0x3a')]);_0xa07172[_0xbb03('0x3b')]=qs['filters'](_['pick'](_0x17b48d[_0xbb03('0x31')],_0x3d12fc[_0xbb03('0x33')]));if(_0x17b48d['query'][_0xbb03('0x4a')]){_0xa07172[_0xbb03('0x3b')]=_[_0xbb03('0x3c')](_0xa07172['where'],{'$or':_[_0xbb03('0x2a')](_0xa07172[_0xbb03('0x35')],function(_0x2f0dec){var _0x138279={};_0x138279[_0x2f0dec]={'$like':'%'+_0x17b48d[_0xbb03('0x31')][_0xbb03('0x4a')]+'%'};return _0x138279;})});}_0xa07172=_[_0xbb03('0x3c')]({},_0xa07172,_0x17b48d[_0xbb03('0x3d')]);return _0x5587cb['getFields'](_0xa07172);}})[_0xbb03('0x24')](function(_0x491d94){if(_0x491d94){_0x8fea60=_0x491d94[_0xbb03('0x37')];if(!_0x17b48d['query']['hasOwnProperty'](_0xbb03('0x4b'))){_0xa07172['limit']=qs[_0xbb03('0x1d')](_0x17b48d[_0xbb03('0x31')][_0xbb03('0x1d')]);_0xa07172[_0xbb03('0x38')]=qs[_0xbb03('0x38')](_0x17b48d['query'][_0xbb03('0x38')]);}return _0x5587cb[_0xbb03('0x47')](_0xa07172);}})[_0xbb03('0x24')](function(_0x3654f7){if(_0x3654f7){return _0x3654f7?{'count':_0x8fea60,'rows':_0x3654f7}:null;}})[_0xbb03('0x24')](respondWithResult(_0x4f482b,null))[_0xbb03('0x41')](handleError(_0x4f482b,null));};exports[_0xbb03('0x4c')]=function(_0x270562,_0x5c7904,_0x2b3b4c){var _0x1f2cfd={};var _0x111111={};var _0x591cce;var _0x19e456;return db[_0xbb03('0x2b')][_0xbb03('0x48')]({'where':{'id':_0x270562[_0xbb03('0x46')]['id']}})[_0xbb03('0x24')](handleEntityNotFound(_0x5c7904,null))[_0xbb03('0x24')](function(_0x36cf1a){if(_0x36cf1a){_0x591cce=_0x36cf1a;_0x111111[_0xbb03('0x30')]=_[_0xbb03('0x32')](db[_0xbb03('0x49')]['rawAttributes']);_0x111111[_0xbb03('0x31')]=_[_0xbb03('0x32')](_0x270562[_0xbb03('0x31')]);_0x111111[_0xbb03('0x33')]=_[_0xbb03('0x34')](_0x111111[_0xbb03('0x30')],_0x111111[_0xbb03('0x31')]);_0x1f2cfd[_0xbb03('0x35')]=_[_0xbb03('0x34')](_0x111111[_0xbb03('0x30')],qs[_0xbb03('0x36')](_0x270562['query'][_0xbb03('0x36')]));_0x1f2cfd[_0xbb03('0x35')]=_0x1f2cfd[_0xbb03('0x35')]['length']?_0x1f2cfd[_0xbb03('0x35')]:_0x111111[_0xbb03('0x30')];_0x1f2cfd[_0xbb03('0x39')]=qs[_0xbb03('0x3a')](_0x270562[_0xbb03('0x31')][_0xbb03('0x3a')]);_0x1f2cfd[_0xbb03('0x3b')]=qs['filters'](_['pick'](_0x270562[_0xbb03('0x31')],_0x111111[_0xbb03('0x33')]));if(_0x270562[_0xbb03('0x31')]['filter']){_0x1f2cfd[_0xbb03('0x3b')]=_[_0xbb03('0x3c')](_0x1f2cfd['where'],{'$or':_[_0xbb03('0x2a')](_0x1f2cfd[_0xbb03('0x35')],function(_0x433389){var _0x443292={};_0x443292[_0x433389]={'$like':'%'+_0x270562['query']['filter']+'%'};return _0x443292;})});}_0x1f2cfd=_[_0xbb03('0x3c')]({},_0x1f2cfd,_0x270562['options']);return _0x591cce[_0xbb03('0x4c')](_0x1f2cfd);}})[_0xbb03('0x24')](function(_0x678d25){if(_0x678d25){_0x19e456=_0x678d25['length'];if(!_0x270562[_0xbb03('0x31')]['hasOwnProperty'](_0xbb03('0x4b'))){_0x1f2cfd[_0xbb03('0x1d')]=qs[_0xbb03('0x1d')](_0x270562[_0xbb03('0x31')][_0xbb03('0x1d')]);_0x1f2cfd[_0xbb03('0x38')]=qs[_0xbb03('0x38')](_0x270562[_0xbb03('0x31')]['offset']);}return _0x591cce[_0xbb03('0x4c')](_0x1f2cfd);}})[_0xbb03('0x24')](function(_0x5cab5a){if(_0x5cab5a){return _0x5cab5a?{'count':_0x19e456,'rows':_0x5cab5a}:null;}})['then'](respondWithResult(_0x5c7904,null))['catch'](handleError(_0x5c7904,null));};exports[_0xbb03('0x4d')]=function(_0x21d438,_0x5525f9,_0x2194ce){var _0x436556={};var _0x20d3fd={};var _0x12a1c5;var _0x119921;return db[_0xbb03('0x2b')][_0xbb03('0x48')]({'where':{'id':_0x21d438[_0xbb03('0x46')]['id']}})[_0xbb03('0x24')](handleEntityNotFound(_0x5525f9,null))[_0xbb03('0x24')](function(_0xedd602){if(_0xedd602){_0x12a1c5=_0xedd602;_0x20d3fd[_0xbb03('0x30')]=_[_0xbb03('0x32')](db[_0xbb03('0x49')]['rawAttributes']);_0x20d3fd[_0xbb03('0x31')]=_['keys'](_0x21d438[_0xbb03('0x31')]);_0x20d3fd[_0xbb03('0x33')]=_[_0xbb03('0x34')](_0x20d3fd[_0xbb03('0x30')],_0x20d3fd[_0xbb03('0x31')]);_0x436556['attributes']=_[_0xbb03('0x34')](_0x20d3fd[_0xbb03('0x30')],qs[_0xbb03('0x36')](_0x21d438[_0xbb03('0x31')][_0xbb03('0x36')]));_0x436556['attributes']=_0x436556['attributes'][_0xbb03('0x37')]?_0x436556[_0xbb03('0x35')]:_0x20d3fd[_0xbb03('0x30')];_0x436556['order']=qs[_0xbb03('0x3a')](_0x21d438[_0xbb03('0x31')][_0xbb03('0x3a')]);_0x436556[_0xbb03('0x3b')]=qs['filters'](_[_0xbb03('0x4e')](_0x21d438[_0xbb03('0x31')],_0x20d3fd[_0xbb03('0x33')]));if(_0x21d438['query']['filter']){_0x436556['where']=_[_0xbb03('0x3c')](_0x436556[_0xbb03('0x3b')],{'$or':_['map'](_0x436556[_0xbb03('0x35')],function(_0x3a859b){var _0x94b00b={};_0x94b00b[_0x3a859b]={'$like':'%'+_0x21d438[_0xbb03('0x31')][_0xbb03('0x4a')]+'%'};return _0x94b00b;})});}_0x436556=_[_0xbb03('0x3c')]({},_0x436556,_0x21d438[_0xbb03('0x3d')]);return _0x12a1c5[_0xbb03('0x4d')](_0x436556);}})[_0xbb03('0x24')](function(_0x231d0e){if(_0x231d0e){_0x119921=_0x231d0e[_0xbb03('0x37')];if(!_0x21d438[_0xbb03('0x31')]['hasOwnProperty'](_0xbb03('0x4b'))){_0x436556[_0xbb03('0x1d')]=qs[_0xbb03('0x1d')](_0x21d438['query'][_0xbb03('0x1d')]);_0x436556[_0xbb03('0x38')]=qs[_0xbb03('0x38')](_0x21d438[_0xbb03('0x31')]['offset']);}return _0x12a1c5[_0xbb03('0x4d')](_0x436556);}})[_0xbb03('0x24')](function(_0x528e21){if(_0x528e21){return _0x528e21?{'count':_0x119921,'rows':_0x528e21}:null;}})[_0xbb03('0x24')](respondWithResult(_0x5525f9,null))[_0xbb03('0x41')](handleError(_0x5525f9,null));};exports['getTags']=function(_0x80c0ee,_0x291564,_0x2b72d7){var _0xc8cf40={};var _0x213019={};var _0x3662c6;var _0x2b5db2;return db['DeskConfiguration'][_0xbb03('0x48')]({'where':{'id':_0x80c0ee[_0xbb03('0x46')]['id']}})[_0xbb03('0x24')](handleEntityNotFound(_0x291564,null))[_0xbb03('0x24')](function(_0x580711){if(_0x580711){_0x3662c6=_0x580711;_0x213019['model']=_[_0xbb03('0x32')](db[_0xbb03('0x4f')][_0xbb03('0x2c')]);_0x213019[_0xbb03('0x31')]=_[_0xbb03('0x32')](_0x80c0ee[_0xbb03('0x31')]);_0x213019[_0xbb03('0x33')]=_[_0xbb03('0x34')](_0x213019['model'],_0x213019[_0xbb03('0x31')]);_0xc8cf40[_0xbb03('0x35')]=_[_0xbb03('0x34')](_0x213019[_0xbb03('0x30')],qs[_0xbb03('0x36')](_0x80c0ee[_0xbb03('0x31')]['fields']));_0xc8cf40[_0xbb03('0x35')]=_0xc8cf40[_0xbb03('0x35')][_0xbb03('0x37')]?_0xc8cf40[_0xbb03('0x35')]:_0x213019[_0xbb03('0x30')];_0xc8cf40['order']=qs[_0xbb03('0x3a')](_0x80c0ee[_0xbb03('0x31')]['sort']);_0xc8cf40[_0xbb03('0x3b')]=qs['filters'](_[_0xbb03('0x4e')](_0x80c0ee[_0xbb03('0x31')],_0x213019['filters']));if(_0x80c0ee[_0xbb03('0x31')][_0xbb03('0x4a')]){_0xc8cf40[_0xbb03('0x3b')]=_[_0xbb03('0x3c')](_0xc8cf40[_0xbb03('0x3b')],{'$or':_['map'](_0xc8cf40[_0xbb03('0x35')],function(_0x3a8f8e){var _0x4f99a9={};_0x4f99a9[_0x3a8f8e]={'$like':'%'+_0x80c0ee[_0xbb03('0x31')][_0xbb03('0x4a')]+'%'};return _0x4f99a9;})});}_0xc8cf40=_['merge']({},_0xc8cf40,_0x80c0ee[_0xbb03('0x3d')]);return _0x3662c6[_0xbb03('0x50')](_0xc8cf40);}})[_0xbb03('0x24')](function(_0x3455bb){if(_0x3455bb){_0x2b5db2=_0x3455bb['length'];if(!_0x80c0ee[_0xbb03('0x31')][_0xbb03('0x51')]('nolimit')){_0xc8cf40[_0xbb03('0x1d')]=qs['limit'](_0x80c0ee['query'][_0xbb03('0x1d')]);_0xc8cf40['offset']=qs[_0xbb03('0x38')](_0x80c0ee[_0xbb03('0x31')][_0xbb03('0x38')]);}return _0x3662c6['getTags'](_0xc8cf40);}})[_0xbb03('0x24')](function(_0x1e13c2){if(_0x1e13c2){return _0x1e13c2?{'count':_0x2b5db2,'rows':_0x1e13c2}:null;}})[_0xbb03('0x24')](respondWithResult(_0x291564,null))[_0xbb03('0x41')](handleError(_0x291564,null));};exports[_0xbb03('0x52')]=function(_0x4b8b51,_0x4c3ccc,_0x541cb2){if(_0x4b8b51[_0xbb03('0x45')]['id']){delete _0x4b8b51[_0xbb03('0x45')]['id'];}return db[_0xbb03('0x2b')][_0xbb03('0x48')]({'where':{'id':_0x4b8b51[_0xbb03('0x46')]['id']}})[_0xbb03('0x24')](handleEntityNotFound(_0x4c3ccc,null))[_0xbb03('0x24')](function(_0x28a1a0){if(_0x28a1a0){return _0x28a1a0[_0xbb03('0x52')](_0x4b8b51[_0xbb03('0x45')][_0xbb03('0x53')]||[]);}return null;})[_0xbb03('0x24')](respondWithResult(_0x4c3ccc,null))[_0xbb03('0x41')](handleError(_0x4c3ccc,null));};
\ No newline at end of file
index e449a4b..06fdfdb 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0x9071=['exports','define','DeskConfiguration','int_desk_configurations','util','../../config/logger','api','bluebird','request-promise','rimraf','../../config/environment','./intDeskConfiguration.attributes'];(function(_0x4d121f,_0x453f5e){var _0x24838f=function(_0x530974){while(--_0x530974){_0x4d121f['push'](_0x4d121f['shift']());}};_0x24838f(++_0x453f5e);}(_0x9071,0xe8));var _0x1907=function(_0x2585f2,_0x24dcfd){_0x2585f2=_0x2585f2-0x0;var _0x2388dd=_0x9071[_0x2585f2];return _0x2388dd;};'use strict';var _=require('lodash');var util=require(_0x1907('0x0'));var logger=require(_0x1907('0x1'))(_0x1907('0x2'));var moment=require('moment');var BPromise=require(_0x1907('0x3'));var rp=require(_0x1907('0x4'));var fs=require('fs');var path=require('path');var rimraf=require(_0x1907('0x5'));var config=require(_0x1907('0x6'));var attributes=require(_0x1907('0x7'));module[_0x1907('0x8')]=function(_0x2b1e77,_0x3614e7){return _0x2b1e77[_0x1907('0x9')](_0x1907('0xa'),attributes,{'tableName':_0x1907('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 61f7957..80ed497 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0x1af1=['ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','jayson/promise','http','then','info','DeskConfiguration,\x20%s,\x20%s','debug','DeskConfiguration,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','code','message','result','catch','lodash','util','moment','bluebird','randomstring'];(function(_0x219fb8,_0x4e4ade){var _0x2e9d19=function(_0x4d25e5){while(--_0x4d25e5){_0x219fb8['push'](_0x219fb8['shift']());}};_0x2e9d19(++_0x4e4ade);}(_0x1af1,0x133));var _0x11af=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x1af1[_0x3dd15e];return _0x231fd0;};'use strict';var _=require(_0x11af('0x0'));var util=require(_0x11af('0x1'));var moment=require(_0x11af('0x2'));var BPromise=require(_0x11af('0x3'));var rs=require(_0x11af('0x4'));var fs=require('fs');var Redis=require(_0x11af('0x5'));var db=require(_0x11af('0x6'))['db'];var utils=require(_0x11af('0x7'));var logger=require(_0x11af('0x8'))(_0x11af('0x9'));var config=require('../../config/environment');var jayson=require(_0x11af('0xa'));var client=jayson['client'][_0x11af('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x47c4a2,_0x4bc2b4,_0x23706c){return new BPromise(function(_0x590e7d,_0x364f87){return client['request'](_0x47c4a2,_0x23706c)[_0x11af('0xc')](function(_0x23b31a){logger[_0x11af('0xd')](_0x11af('0xe'),_0x4bc2b4,'request\x20sent');logger[_0x11af('0xf')](_0x11af('0x10'),_0x4bc2b4,_0x11af('0x11'),JSON[_0x11af('0x12')](_0x23b31a));if(_0x23b31a[_0x11af('0x13')]){if(_0x23b31a[_0x11af('0x13')][_0x11af('0x14')]===0x1f4){logger[_0x11af('0x13')](_0x11af('0xe'),_0x4bc2b4,_0x23b31a[_0x11af('0x13')]['message']);return _0x364f87(_0x23b31a[_0x11af('0x13')][_0x11af('0x15')]);}logger[_0x11af('0x13')]('DeskConfiguration,\x20%s,\x20%s',_0x4bc2b4,_0x23b31a[_0x11af('0x13')][_0x11af('0x15')]);return _0x590e7d(_0x23b31a['error'][_0x11af('0x15')]);}else{logger[_0x11af('0xd')](_0x11af('0xe'),_0x4bc2b4,_0x11af('0x11'));_0x590e7d(_0x23b31a[_0x11af('0x16')][_0x11af('0x15')]);}})[_0x11af('0x17')](function(_0x2313de){logger[_0x11af('0x13')](_0x11af('0xe'),_0x4bc2b4,_0x2313de);_0x364f87(_0x2313de);});});}
\ No newline at end of file
index c11785c..449ab28 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0x326b=['/:id','isAuthenticated','show','create','put','update','delete','destroy','multer','util','path','connect-timeout','express','Router','../../components/auth/service','../../config/environment','get','index'];(function(_0xaed21d,_0x592d0b){var _0xedb338=function(_0x28695e){while(--_0x28695e){_0xaed21d['push'](_0xaed21d['shift']());}};_0xedb338(++_0x592d0b);}(_0x326b,0x1dc));var _0xb326=function(_0x435592,_0x363aed){_0x435592=_0x435592-0x0;var _0x2d544d=_0x326b[_0x435592];return _0x2d544d;};'use strict';var multer=require(_0xb326('0x0'));var util=require(_0xb326('0x1'));var path=require(_0xb326('0x2'));var timeout=require(_0xb326('0x3'));var express=require(_0xb326('0x4'));var router=express[_0xb326('0x5')]();var fs_extra=require('fs-extra');var auth=require(_0xb326('0x6'));var interaction=require('../../components/interaction/service');var config=require(_0xb326('0x7'));var controller=require('./intDeskField.controller');router[_0xb326('0x8')]('/',auth['isAuthenticated'](),controller[_0xb326('0x9')]);router[_0xb326('0x8')](_0xb326('0xa'),auth[_0xb326('0xb')](),controller[_0xb326('0xc')]);router['post']('/',auth['isAuthenticated'](),controller[_0xb326('0xd')]);router[_0xb326('0xe')](_0xb326('0xa'),auth[_0xb326('0xb')](),controller[_0xb326('0xf')]);router[_0xb326('0x10')](_0xb326('0xa'),auth[_0xb326('0xb')](),controller[_0xb326('0x11')]);module['exports']=router;
\ No newline at end of file
index ddb1f97..74aa101 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0xf501=['exports','ENUM','variable','keyValue','picklist','string','STRING','customVariable','sequelize'];(function(_0x4fbfd9,_0x3ab91a){var _0x31dc94=function(_0x11e53b){while(--_0x11e53b){_0x4fbfd9['push'](_0x4fbfd9['shift']());}};_0x31dc94(++_0x3ab91a);}(_0xf501,0x19d));var _0x1f50=function(_0x57c1d6,_0x278f82){_0x57c1d6=_0x57c1d6-0x0;var _0x12dfa3=_0xf501[_0x57c1d6];return _0x12dfa3;};'use strict';var Sequelize=require(_0x1f50('0x0'));module[_0x1f50('0x1')]={'type':{'type':Sequelize[_0x1f50('0x2')]('string',_0x1f50('0x3'),'customVariable',_0x1f50('0x4'),_0x1f50('0x5')),'defaultValue':_0x1f50('0x6')},'content':{'type':Sequelize[_0x1f50('0x7')]},'key':{'type':Sequelize[_0x1f50('0x7')]},'keyType':{'type':Sequelize[_0x1f50('0x2')]('string',_0x1f50('0x3'),_0x1f50('0x8'))},'keyContent':{'type':Sequelize[_0x1f50('0x7')]},'idField':{'type':Sequelize[_0x1f50('0x7')]},'nameField':{'type':Sequelize['STRING']},'customField':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'variableName':{'type':Sequelize[_0x1f50('0x7')]}};
\ No newline at end of file
index f87fccd..30bcf30 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0x4ca4=['stack','name','send','index','map','rawAttributes','type','model','filters','intersection','query','fields','attributes','length','hasOwnProperty','nolimit','order','sort','where','pick','filter','merge','options','DeskField','include','findAll','rows','catch','show','params','keys','includeAll','create','body','update','find','destroy','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','path','sox','to-csv','ejs','fs-extra','lodash','desk.js','papaparse','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/license/util','../../mysqldb','sendStatus','status','end','offset','limit','undefined','count','set','Content-Range','apply','save','then','error'];(function(_0x5a5c0e,_0x503584){var _0x4e714c=function(_0xdc424e){while(--_0xdc424e){_0x5a5c0e['push'](_0x5a5c0e['shift']());}};_0x4e714c(++_0x503584);}(_0x4ca4,0x100));var _0x44ca=function(_0x2b03a8,_0x1d439c){_0x2b03a8=_0x2b03a8-0x0;var _0x42d664=_0x4ca4[_0x2b03a8];return _0x42d664;};'use strict';var emlformat=require(_0x44ca('0x0'));var rimraf=require(_0x44ca('0x1'));var zipdir=require(_0x44ca('0x2'));var jsonpatch=require(_0x44ca('0x3'));var rp=require(_0x44ca('0x4'));var moment=require(_0x44ca('0x5'));var BPromise=require(_0x44ca('0x6'));var Mustache=require(_0x44ca('0x7'));var util=require('util');var path=require(_0x44ca('0x8'));var sox=require(_0x44ca('0x9'));var csv=require(_0x44ca('0xa'));var ejs=require(_0x44ca('0xb'));var fs=require('fs');var fs_extra=require(_0x44ca('0xc'));var _=require(_0x44ca('0xd'));var squel=require('squel');var crypto=require('crypto');var jsforce=require('jsforce');var deskjs=require(_0x44ca('0xe'));var toCsv=require(_0x44ca('0xa'));var querystring=require('querystring');var Papa=require(_0x44ca('0xf'));var Redis=require('ioredis');var authService=require('../../components/auth/service');var qs=require(_0x44ca('0x10'));var as=require(_0x44ca('0x11'));var hardwareService=require(_0x44ca('0x12'));var logger=require(_0x44ca('0x13'))(_0x44ca('0x14'));var utils=require('../../config/utils');var config=require('../../config/environment');var licenseUtil=require(_0x44ca('0x15'));var db=require(_0x44ca('0x16'))['db'];function respondWithStatusCode(_0x516df1,_0x4f9865){_0x4f9865=_0x4f9865||0xcc;return function(_0x95f0e3){if(_0x95f0e3){return _0x516df1[_0x44ca('0x17')](_0x4f9865);}return _0x516df1[_0x44ca('0x18')](_0x4f9865)[_0x44ca('0x19')]();};}function respondWithResult(_0x5824c6,_0x1991e4){_0x1991e4=_0x1991e4||0xc8;return function(_0x14b5ee){if(_0x14b5ee){return _0x5824c6[_0x44ca('0x18')](_0x1991e4)['json'](_0x14b5ee);}};}function respondWithFilteredResult(_0x11173c,_0x389d0d){return function(_0x50fb0d){if(_0x50fb0d){var _0x334e34=typeof _0x389d0d[_0x44ca('0x1a')]==='undefined'&&typeof _0x389d0d[_0x44ca('0x1b')]===_0x44ca('0x1c');var _0x1dc8ce=_0x50fb0d[_0x44ca('0x1d')];var _0x3bea76=_0x334e34?0x0:_0x389d0d[_0x44ca('0x1a')];var _0x1fe960=_0x334e34?_0x50fb0d[_0x44ca('0x1d')]:_0x389d0d[_0x44ca('0x1a')]+_0x389d0d['limit'];var _0x1bc607;if(_0x1fe960>=_0x1dc8ce){_0x1fe960=_0x1dc8ce;_0x1bc607=0xc8;}else{_0x1bc607=0xce;}_0x11173c[_0x44ca('0x18')](_0x1bc607);return _0x11173c[_0x44ca('0x1e')](_0x44ca('0x1f'),_0x3bea76+'-'+_0x1fe960+'/'+_0x1dc8ce)['json'](_0x50fb0d);}return null;};}function patchUpdates(_0x377c0c){return function(_0x479c83){try{jsonpatch[_0x44ca('0x20')](_0x479c83,_0x377c0c,!![]);}catch(_0x18b932){return BPromise['reject'](_0x18b932);}return _0x479c83[_0x44ca('0x21')]();};}function saveUpdates(_0x3e0f19,_0x1cf198){return function(_0x2ec184){if(_0x2ec184){return _0x2ec184['update'](_0x3e0f19)[_0x44ca('0x22')](function(_0x4d127b){return _0x4d127b;});}return null;};}function removeEntity(_0x1e3f2c,_0x36c49e){return function(_0x4f93e0){if(_0x4f93e0){return _0x4f93e0['destroy']()['then'](function(){_0x1e3f2c['status'](0xcc)[_0x44ca('0x19')]();});}};}function handleEntityNotFound(_0x15c454,_0x56181e){return function(_0x117ba0){if(!_0x117ba0){_0x15c454[_0x44ca('0x17')](0x194);}return _0x117ba0;};}function handleError(_0xb75196,_0x1affc6){_0x1affc6=_0x1affc6||0x1f4;return function(_0x43008b){logger[_0x44ca('0x23')](_0x43008b[_0x44ca('0x24')]);if(_0x43008b[_0x44ca('0x25')]){delete _0x43008b[_0x44ca('0x25')];}_0xb75196[_0x44ca('0x18')](_0x1affc6)[_0x44ca('0x26')](_0x43008b);};}exports[_0x44ca('0x27')]=function(_0x529705,_0x8fe148){var _0x58da42={},_0x38187b={},_0x5763c5={'count':0x0,'rows':[]};var _0x94f15a=_[_0x44ca('0x28')](db['DeskField'][_0x44ca('0x29')],function(_0x58d458){return{'name':_0x58d458['fieldName'],'type':_0x58d458[_0x44ca('0x2a')]['key']};});_0x38187b[_0x44ca('0x2b')]=_[_0x44ca('0x28')](_0x94f15a,_0x44ca('0x25'));_0x38187b['query']=_['keys'](_0x529705['query']);_0x38187b[_0x44ca('0x2c')]=_[_0x44ca('0x2d')](_0x38187b['model'],_0x38187b[_0x44ca('0x2e')]);_0x58da42['attributes']=_[_0x44ca('0x2d')](_0x38187b[_0x44ca('0x2b')],qs[_0x44ca('0x2f')](_0x529705[_0x44ca('0x2e')][_0x44ca('0x2f')]));_0x58da42[_0x44ca('0x30')]=_0x58da42[_0x44ca('0x30')][_0x44ca('0x31')]?_0x58da42[_0x44ca('0x30')]:_0x38187b[_0x44ca('0x2b')];if(!_0x529705[_0x44ca('0x2e')][_0x44ca('0x32')](_0x44ca('0x33'))){_0x58da42[_0x44ca('0x1b')]=qs['limit'](_0x529705['query'][_0x44ca('0x1b')]);_0x58da42['offset']=qs[_0x44ca('0x1a')](_0x529705['query'][_0x44ca('0x1a')]);}_0x58da42[_0x44ca('0x34')]=qs[_0x44ca('0x35')](_0x529705[_0x44ca('0x2e')][_0x44ca('0x35')]);_0x58da42[_0x44ca('0x36')]=qs[_0x44ca('0x2c')](_[_0x44ca('0x37')](_0x529705[_0x44ca('0x2e')],_0x38187b[_0x44ca('0x2c')]),_0x94f15a);if(_0x529705[_0x44ca('0x2e')][_0x44ca('0x38')]){_0x58da42[_0x44ca('0x36')]=_[_0x44ca('0x39')](_0x58da42[_0x44ca('0x36')],{'$or':_[_0x44ca('0x28')](_0x94f15a,function(_0x1dd193){if(_0x1dd193[_0x44ca('0x2a')]!=='VIRTUAL'){var _0x3c99b8={};_0x3c99b8[_0x1dd193['name']]={'$like':'%'+_0x529705[_0x44ca('0x2e')][_0x44ca('0x38')]+'%'};return _0x3c99b8;}})});}_0x58da42=_['merge']({},_0x58da42,_0x529705[_0x44ca('0x3a')]);var _0x1dca02={'where':_0x58da42[_0x44ca('0x36')]};return db[_0x44ca('0x3b')]['count'](_0x1dca02)[_0x44ca('0x22')](function(_0x1a8bb5){_0x5763c5[_0x44ca('0x1d')]=_0x1a8bb5;if(_0x529705['query']['includeAll']){_0x58da42[_0x44ca('0x3c')]=[{'all':!![]}];}return db[_0x44ca('0x3b')][_0x44ca('0x3d')](_0x58da42);})[_0x44ca('0x22')](function(_0x191a7b){_0x5763c5[_0x44ca('0x3e')]=_0x191a7b;return _0x5763c5;})[_0x44ca('0x22')](respondWithFilteredResult(_0x8fe148,_0x58da42))[_0x44ca('0x3f')](handleError(_0x8fe148,null));};exports[_0x44ca('0x40')]=function(_0x1da5ab,_0x5fa486){var _0x345eff={'raw':!![],'where':{'id':_0x1da5ab[_0x44ca('0x41')]['id']}},_0x1b4ec1={};_0x1b4ec1[_0x44ca('0x2b')]=_['keys'](db[_0x44ca('0x3b')][_0x44ca('0x29')]);_0x1b4ec1[_0x44ca('0x2e')]=_[_0x44ca('0x42')](_0x1da5ab[_0x44ca('0x2e')]);_0x1b4ec1[_0x44ca('0x2c')]=_[_0x44ca('0x2d')](_0x1b4ec1[_0x44ca('0x2b')],_0x1b4ec1[_0x44ca('0x2e')]);_0x345eff[_0x44ca('0x30')]=_[_0x44ca('0x2d')](_0x1b4ec1[_0x44ca('0x2b')],qs[_0x44ca('0x2f')](_0x1da5ab[_0x44ca('0x2e')][_0x44ca('0x2f')]));_0x345eff[_0x44ca('0x30')]=_0x345eff[_0x44ca('0x30')][_0x44ca('0x31')]?_0x345eff[_0x44ca('0x30')]:_0x1b4ec1[_0x44ca('0x2b')];if(_0x1da5ab['query'][_0x44ca('0x43')]){_0x345eff[_0x44ca('0x3c')]=[{'all':!![]}];}_0x345eff=_[_0x44ca('0x39')]({},_0x345eff,_0x1da5ab[_0x44ca('0x3a')]);return db[_0x44ca('0x3b')]['find'](_0x345eff)[_0x44ca('0x22')](handleEntityNotFound(_0x5fa486,null))[_0x44ca('0x22')](respondWithResult(_0x5fa486,null))[_0x44ca('0x3f')](handleError(_0x5fa486,null));};exports[_0x44ca('0x44')]=function(_0x2d9486,_0x20d612){return db['DeskField']['create'](_0x2d9486[_0x44ca('0x45')],{})[_0x44ca('0x22')](respondWithResult(_0x20d612,0xc9))[_0x44ca('0x3f')](handleError(_0x20d612,null));};exports[_0x44ca('0x46')]=function(_0x181914,_0x455ded){if(_0x181914[_0x44ca('0x45')]['id']){delete _0x181914[_0x44ca('0x45')]['id'];}return db[_0x44ca('0x3b')][_0x44ca('0x47')]({'where':{'id':_0x181914[_0x44ca('0x41')]['id']}})[_0x44ca('0x22')](handleEntityNotFound(_0x455ded,null))['then'](saveUpdates(_0x181914['body'],null))[_0x44ca('0x22')](respondWithResult(_0x455ded,null))[_0x44ca('0x3f')](handleError(_0x455ded,null));};exports[_0x44ca('0x48')]=function(_0x4c8b07,_0x142034){return db['DeskField']['find']({'where':{'id':_0x4c8b07[_0x44ca('0x41')]['id']}})['then'](handleEntityNotFound(_0x142034,null))[_0x44ca('0x22')](removeEntity(_0x142034,null))[_0x44ca('0x3f')](handleError(_0x142034,null));};
\ No newline at end of file
index c2cb230..ae61112 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0xf617=['bluebird','request-promise','path','rimraf','../../config/environment','./intDeskField.attributes','exports','define','DeskField','int_desk_fields','desk_unique_index','idField','FieldId','lodash','../../config/logger','api','moment'];(function(_0x36391b,_0x211430){var _0xbb8926=function(_0x9cfc68){while(--_0x9cfc68){_0x36391b['push'](_0x36391b['shift']());}};_0xbb8926(++_0x211430);}(_0xf617,0x1b6));var _0x7f61=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0xf617[_0x3dd15e];return _0x231fd0;};'use strict';var _=require(_0x7f61('0x0'));var util=require('util');var logger=require(_0x7f61('0x1'))(_0x7f61('0x2'));var moment=require(_0x7f61('0x3'));var BPromise=require(_0x7f61('0x4'));var rp=require(_0x7f61('0x5'));var fs=require('fs');var path=require(_0x7f61('0x6'));var rimraf=require(_0x7f61('0x7'));var config=require(_0x7f61('0x8'));var attributes=require(_0x7f61('0x9'));module[_0x7f61('0xa')]=function(_0x458b68,_0xc3baf4){return _0x458b68[_0x7f61('0xb')](_0x7f61('0xc'),attributes,{'tableName':_0x7f61('0xd'),'paranoid':![],'indexes':[{'name':_0x7f61('0xe'),'fields':[_0x7f61('0xf'),_0x7f61('0x10')],'unique':!![]}],'timestamps':!![]});};
\ No newline at end of file
index 1ee467c..639be61 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0x2e22=['jayson/promise','client','http','request','info','DeskField,\x20%s,\x20%s','request\x20sent','DeskField,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc'];(function(_0x2ff209,_0x1e9263){var _0xfc0203=function(_0x2ff5f0){while(--_0x2ff5f0){_0x2ff209['push'](_0x2ff209['shift']());}};_0xfc0203(++_0x1e9263);}(_0x2e22,0x1a6));var _0x22e2=function(_0x46cc29,_0x473f8e){_0x46cc29=_0x46cc29-0x0;var _0x5ea06f=_0x2e22[_0x46cc29];return _0x5ea06f;};'use strict';var _=require(_0x22e2('0x0'));var util=require(_0x22e2('0x1'));var moment=require(_0x22e2('0x2'));var BPromise=require(_0x22e2('0x3'));var rs=require(_0x22e2('0x4'));var fs=require('fs');var Redis=require(_0x22e2('0x5'));var db=require(_0x22e2('0x6'))['db'];var utils=require(_0x22e2('0x7'));var logger=require(_0x22e2('0x8'))(_0x22e2('0x9'));var config=require('../../config/environment');var jayson=require(_0x22e2('0xa'));var client=jayson[_0x22e2('0xb')][_0x22e2('0xc')]({'port':0x232a});function respondWithRpcPromise(_0x43a567,_0xba802d,_0x2c89dc){return new BPromise(function(_0xee5ae4,_0x2b21e8){return client[_0x22e2('0xd')](_0x43a567,_0x2c89dc)['then'](function(_0x35e850){logger[_0x22e2('0xe')](_0x22e2('0xf'),_0xba802d,_0x22e2('0x10'));logger['debug'](_0x22e2('0x11'),_0xba802d,'request\x20sent',JSON[_0x22e2('0x12')](_0x35e850));if(_0x35e850['error']){if(_0x35e850[_0x22e2('0x13')][_0x22e2('0x14')]===0x1f4){logger[_0x22e2('0x13')]('DeskField,\x20%s,\x20%s',_0xba802d,_0x35e850[_0x22e2('0x13')][_0x22e2('0x15')]);return _0x2b21e8(_0x35e850[_0x22e2('0x13')][_0x22e2('0x15')]);}logger[_0x22e2('0x13')](_0x22e2('0xf'),_0xba802d,_0x35e850[_0x22e2('0x13')][_0x22e2('0x15')]);return _0xee5ae4(_0x35e850[_0x22e2('0x13')][_0x22e2('0x15')]);}else{logger['info'](_0x22e2('0xf'),_0xba802d,_0x22e2('0x10'));_0xee5ae4(_0x35e850[_0x22e2('0x16')][_0x22e2('0x15')]);}})[_0x22e2('0x17')](function(_0x278479){logger[_0x22e2('0x13')]('DeskField,\x20%s,\x20%s',_0xba802d,_0x278479);_0x2b21e8(_0x278479);});});}
\ No newline at end of file
index 36d0613..ea2cd5e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0xb5a4=['Router','../../components/auth/service','../../components/interaction/service','../../config/environment','./intDynamics365Account.controller','get','index','/:id','show','/:id/configurations','/:id/fields','isAuthenticated','getFields','post','addConfiguration','put','update','delete','exports','multer','util','connect-timeout','express'];(function(_0x4d8ed9,_0x2ae284){var _0x1e2140=function(_0x9cca89){while(--_0x9cca89){_0x4d8ed9['push'](_0x4d8ed9['shift']());}};_0x1e2140(++_0x2ae284);}(_0xb5a4,0x1b1));var _0x4b5a=function(_0x267336,_0x4ea80c){_0x267336=_0x267336-0x0;var _0xd8006a=_0xb5a4[_0x267336];return _0xd8006a;};'use strict';var multer=require(_0x4b5a('0x0'));var util=require(_0x4b5a('0x1'));var path=require('path');var timeout=require(_0x4b5a('0x2'));var express=require(_0x4b5a('0x3'));var router=express[_0x4b5a('0x4')]();var fs_extra=require('fs-extra');var auth=require(_0x4b5a('0x5'));var interaction=require(_0x4b5a('0x6'));var config=require(_0x4b5a('0x7'));var controller=require(_0x4b5a('0x8'));router[_0x4b5a('0x9')]('/',auth['isAuthenticated'](),controller[_0x4b5a('0xa')]);router[_0x4b5a('0x9')](_0x4b5a('0xb'),auth['isAuthenticated'](),controller[_0x4b5a('0xc')]);router['get'](_0x4b5a('0xd'),auth['isAuthenticated'](),controller['getConfigurations']);router[_0x4b5a('0x9')](_0x4b5a('0xe'),auth[_0x4b5a('0xf')](),controller[_0x4b5a('0x10')]);router[_0x4b5a('0x11')]('/',auth[_0x4b5a('0xf')](),controller['create']);router[_0x4b5a('0x11')](_0x4b5a('0xd'),auth[_0x4b5a('0xf')](),controller[_0x4b5a('0x12')]);router[_0x4b5a('0x13')](_0x4b5a('0xb'),auth[_0x4b5a('0xf')](),controller[_0x4b5a('0x14')]);router[_0x4b5a('0x15')](_0x4b5a('0xb'),auth[_0x4b5a('0xf')](),controller['destroy']);module[_0x4b5a('0x16')]=router;
\ No newline at end of file
index 5087432..26f94ee 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0xa23f=['sequelize','exports','STRING','BOOLEAN'];(function(_0x53184b,_0x5cb1f8){var _0x361f9e=function(_0x15dfab){while(--_0x15dfab){_0x53184b['push'](_0x53184b['shift']());}};_0x361f9e(++_0x5cb1f8);}(_0xa23f,0x7c));var _0xfa23=function(_0x137a1e,_0x449573){_0x137a1e=_0x137a1e-0x0;var _0x339d6c=_0xa23f[_0x137a1e];return _0x339d6c;};'use strict';var Sequelize=require(_0xfa23('0x0'));module[_0xfa23('0x1')]={'name':{'type':Sequelize['STRING']},'username':{'type':Sequelize['STRING']},'password':{'type':Sequelize[_0xfa23('0x2')]},'remoteUri':{'type':Sequelize[_0xfa23('0x2')]},'tenantId':{'type':Sequelize[_0xfa23('0x2')]},'clientId':{'type':Sequelize[_0xfa23('0x2')]},'clientSecret':{'type':Sequelize['STRING']},'serverUrl':{'type':Sequelize[_0xfa23('0x2')],'allowNull':![]},'description':{'type':Sequelize['STRING']},'modernAuthentication':{'type':Sequelize[_0xfa23('0x3')],'defaultValue':!![]}};
\ No newline at end of file
index 8cc0d95..d942d59 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0xbafd=['username','clientSecret','GET','4.0','MetadataId','EntityDefinitions(',')?$select=LogicalName&$expand=Attributes($select=LogicalName)','Bearer\x20','Attributes','remove','includes','LogicalName','forEach','@odata.type','PicklistAttributeMetadata','push','isNil','lastIndexOf','BooleanAttributeMetadata','all','DoubleAttributeMetadata','BigIntAttributeMetadata','IntegerAttributeMetadata','MemoAttributeMetadata','DateTimeAttributeMetadata','StatusAttributeMetadata','EntityNameAttributeMetadata','StateAttributeMetadata','DecimalAttributeMetadata','concat','test','statusCode','send','Wrong\x20credentials',')/Attributes(',')/Microsoft.Dynamics.CRM.PicklistAttributeMetadata?','$select=DisplayName,LogicalName&$expand=OptionSet($select=Options)','OptionSet','Options','Label','UserLocalizedLabel','DisplayName',')/Microsoft.Dynamics.CRM.BooleanAttributeMetadata?$select=DisplayName,LogicalName&$expand=OptionSet($select=FalseOption,\x20TrueOption)','FalseOption','false','?$select=DisplayName,LogicalName','request-promise','util','lodash','api','../../mysqldb','../../components/integrations/configuration','offset','undefined','limit','count','status','set','Content-Range','json','update','then','destroy','end','sendStatus','error','stack','name','Dynamics365Account','fieldName','type','key','map','keys','query','attributes','intersection','model','fields','length','hasOwnProperty','nolimit','order','sort','where','filters','pick','filter','VIRTUAL','merge','options','includeAll','include','rows','catch','show','find','create','body','getConfigurations','params','Dynamics365Configuration','rawAttributes','AccountId','Subjects','getSubjects','channel','Descriptions','getDescriptions','Dynamics365Field','slice','substring','format','getFields','ticketType','incident','Incident','PhoneCall','title','description','ownerid','caseorigincode','subject','phonecall_activity_parties','accountidname','accountidyominame','actualserviceunits','billedserviceunits','contactidname','contactidyominame','contractidname','createdbyexternalpartyname','createdbyexternalpartyyominame','createdbyyominame','createdon','createdonbehalfbyname','customeridtype','entitlementidname','entityimage_timestamp','entityimage_url','exchangerate','firstresponsebykpiidname','followupby','importsequencenumber','kbarticleidname','lastonholdtime','masteridname','modifiedbyexternalpartyname','modifiedbyname','modifiedbyyominame','modifiedon','modifiedonbehalfbyyominame','msdyn_incidenttypename','msdyn_iotalertname','numberofchildincidents','onholdtime','overriddencreatedon','owneridtype','owneridyominame','parentcaseidname','primarycontactidname','primarycontactidyominame','productidname','productserialnumber','resolveby','responseby','responsiblecontactidname','responsiblecontactidyominame','sentimentvalue','slainvokedidname','socialprofileidname','statecode','statuscode','subjectidname','ticketnumber','timezoneruleversionnumber','transactioncurrencyidname','traversedpath','utcconversiontimezonecode','versionnumber','findOne','password','clientId','modernAuthentication','CloudProvider','data5','data7','access_token','remoteUri','POST','tenantId'];(function(_0x5c2e3e,_0x26ecd3){var _0x53f64a=function(_0x2b5df8){while(--_0x2b5df8){_0x5c2e3e['push'](_0x5c2e3e['shift']());}};_0x53f64a(++_0x26ecd3);}(_0xbafd,0xed));var _0xdbaf=function(_0x163b9d,_0x3480ac){_0x163b9d=_0x163b9d-0x0;var _0x328863=_0xbafd[_0x163b9d];return _0x328863;};'use strict';var rp=require(_0xdbaf('0x0'));var util=require(_0xdbaf('0x1'));var _=require(_0xdbaf('0x2'));var qs=require('../../components/parsers/qs');var logger=require('../../config/logger')(_0xdbaf('0x3'));var db=require(_0xdbaf('0x4'))['db'];var integrations=require(_0xdbaf('0x5'));function respondWithResult(_0x20c1b5,_0x4512ec){_0x4512ec=_0x4512ec||0xc8;return function(_0x14be0f){if(_0x14be0f){return _0x20c1b5['status'](_0x4512ec)['json'](_0x14be0f);}};}function respondWithFilteredResult(_0x5a4038,_0x7768de){return function(_0xc6eb60){if(_0xc6eb60){var _0x3706c8=typeof _0x7768de[_0xdbaf('0x6')]===_0xdbaf('0x7')&&typeof _0x7768de[_0xdbaf('0x8')]===_0xdbaf('0x7');var _0x535517=_0xc6eb60[_0xdbaf('0x9')];var _0x4c595d=_0x3706c8?0x0:_0x7768de[_0xdbaf('0x6')];var _0x406794=_0x3706c8?_0xc6eb60[_0xdbaf('0x9')]:_0x7768de[_0xdbaf('0x6')]+_0x7768de[_0xdbaf('0x8')];var _0x568421;if(_0x406794>=_0x535517){_0x406794=_0x535517;_0x568421=0xc8;}else{_0x568421=0xce;}_0x5a4038[_0xdbaf('0xa')](_0x568421);return _0x5a4038[_0xdbaf('0xb')](_0xdbaf('0xc'),_0x4c595d+'-'+_0x406794+'/'+_0x535517)[_0xdbaf('0xd')](_0xc6eb60);}return null;};}function saveUpdates(_0x2965cb){return function(_0x5ca780){if(_0x5ca780){return _0x5ca780[_0xdbaf('0xe')](_0x2965cb)[_0xdbaf('0xf')](function(_0x55c903){return _0x55c903;});}return null;};}function removeEntity(_0x182e7f){return function(_0x19da1e){if(_0x19da1e){return _0x19da1e[_0xdbaf('0x10')]()[_0xdbaf('0xf')](function(){_0x182e7f[_0xdbaf('0xa')](0xcc)[_0xdbaf('0x11')]();});}};}function handleEntityNotFound(_0x4d0bb0){return function(_0x15fca1){if(!_0x15fca1){_0x4d0bb0[_0xdbaf('0x12')](0x194);}return _0x15fca1;};}function handleError(_0x41a13f,_0x5b2c7e){_0x5b2c7e=_0x5b2c7e||0x1f4;return function(_0xe0be1e){logger[_0xdbaf('0x13')](_0xe0be1e[_0xdbaf('0x14')]);if(_0xe0be1e['name']){delete _0xe0be1e[_0xdbaf('0x15')];}_0x41a13f['status'](_0x5b2c7e)['send'](_0xe0be1e);};}exports['index']=function(_0x41ccd7,_0x45262b){var _0x214181={},_0x1c5f75={},_0x9b0028={'count':0x0,'rows':[]};var _0x5e4a88=_['map'](db[_0xdbaf('0x16')]['rawAttributes'],function(_0x5aa4c4){return{'name':_0x5aa4c4[_0xdbaf('0x17')],'type':_0x5aa4c4[_0xdbaf('0x18')][_0xdbaf('0x19')]};});_0x1c5f75['model']=_[_0xdbaf('0x1a')](_0x5e4a88,_0xdbaf('0x15'));_0x1c5f75['query']=_[_0xdbaf('0x1b')](_0x41ccd7['query']);_0x1c5f75['filters']=_['intersection'](_0x1c5f75['model'],_0x1c5f75[_0xdbaf('0x1c')]);_0x214181[_0xdbaf('0x1d')]=_[_0xdbaf('0x1e')](_0x1c5f75[_0xdbaf('0x1f')],qs[_0xdbaf('0x20')](_0x41ccd7['query'][_0xdbaf('0x20')]));_0x214181[_0xdbaf('0x1d')]=_0x214181[_0xdbaf('0x1d')][_0xdbaf('0x21')]?_0x214181[_0xdbaf('0x1d')]:_0x1c5f75['model'];if(!_0x41ccd7[_0xdbaf('0x1c')][_0xdbaf('0x22')](_0xdbaf('0x23'))){_0x214181[_0xdbaf('0x8')]=qs[_0xdbaf('0x8')](_0x41ccd7[_0xdbaf('0x1c')][_0xdbaf('0x8')]);_0x214181[_0xdbaf('0x6')]=qs[_0xdbaf('0x6')](_0x41ccd7[_0xdbaf('0x1c')][_0xdbaf('0x6')]);}_0x214181[_0xdbaf('0x24')]=qs['sort'](_0x41ccd7[_0xdbaf('0x1c')][_0xdbaf('0x25')]);_0x214181[_0xdbaf('0x26')]=qs[_0xdbaf('0x27')](_[_0xdbaf('0x28')](_0x41ccd7[_0xdbaf('0x1c')],_0x1c5f75['filters']),_0x5e4a88);if(_0x41ccd7['query'][_0xdbaf('0x29')]){_0x214181[_0xdbaf('0x26')]=_['merge'](_0x214181['where'],{'$or':_[_0xdbaf('0x1a')](_0x5e4a88,function(_0x51c1d3){if(_0x51c1d3[_0xdbaf('0x18')]!==_0xdbaf('0x2a')){var _0x2dc9ec={};_0x2dc9ec[_0x51c1d3[_0xdbaf('0x15')]]={'$like':'%'+_0x41ccd7[_0xdbaf('0x1c')]['filter']+'%'};return _0x2dc9ec;}})});}_0x214181=_[_0xdbaf('0x2b')]({},_0x214181,_0x41ccd7[_0xdbaf('0x2c')]);var _0x315c40={'where':_0x214181[_0xdbaf('0x26')]};return db[_0xdbaf('0x16')][_0xdbaf('0x9')](_0x315c40)[_0xdbaf('0xf')](function(_0x5c0416){_0x9b0028['count']=_0x5c0416;if(_0x41ccd7[_0xdbaf('0x1c')][_0xdbaf('0x2d')]){_0x214181[_0xdbaf('0x2e')]=[{'all':!![]}];}return db[_0xdbaf('0x16')]['findAll'](_0x214181);})['then'](function(_0x50566e){_0x9b0028[_0xdbaf('0x2f')]=_0x50566e;return _0x9b0028;})[_0xdbaf('0xf')](respondWithFilteredResult(_0x45262b,_0x214181))[_0xdbaf('0x30')](handleError(_0x45262b,null));};exports[_0xdbaf('0x31')]=function(_0x33ed61,_0x1b9da2){var _0x465744={'raw':![],'where':{'id':_0x33ed61['params']['id']}},_0x31b7aa={};_0x31b7aa[_0xdbaf('0x1f')]=_[_0xdbaf('0x1b')](db[_0xdbaf('0x16')]['rawAttributes']);_0x31b7aa[_0xdbaf('0x1c')]=_[_0xdbaf('0x1b')](_0x33ed61[_0xdbaf('0x1c')]);_0x31b7aa['filters']=_['intersection'](_0x31b7aa[_0xdbaf('0x1f')],_0x31b7aa[_0xdbaf('0x1c')]);_0x465744[_0xdbaf('0x1d')]=_[_0xdbaf('0x1e')](_0x31b7aa[_0xdbaf('0x1f')],qs[_0xdbaf('0x20')](_0x33ed61['query'][_0xdbaf('0x20')]));_0x465744[_0xdbaf('0x1d')]=_0x465744[_0xdbaf('0x1d')][_0xdbaf('0x21')]?_0x465744[_0xdbaf('0x1d')]:_0x31b7aa[_0xdbaf('0x1f')];if(_0x33ed61[_0xdbaf('0x1c')][_0xdbaf('0x2d')]){_0x465744[_0xdbaf('0x2e')]=[{'all':!![]}];}_0x465744=_[_0xdbaf('0x2b')]({},_0x465744,_0x33ed61[_0xdbaf('0x2c')]);return db[_0xdbaf('0x16')][_0xdbaf('0x32')](_0x465744)[_0xdbaf('0xf')](handleEntityNotFound(_0x1b9da2,null))[_0xdbaf('0xf')](respondWithResult(_0x1b9da2,null))[_0xdbaf('0x30')](handleError(_0x1b9da2,null));};exports[_0xdbaf('0x33')]=function(_0x10a9c8,_0x430813){return db[_0xdbaf('0x16')][_0xdbaf('0x33')](_0x10a9c8[_0xdbaf('0x34')],{})['then'](respondWithResult(_0x430813,0xc9))['catch'](handleError(_0x430813,null));};exports[_0xdbaf('0xe')]=function(_0x250003,_0x5be315){if(_0x250003[_0xdbaf('0x34')]['id']){delete _0x250003[_0xdbaf('0x34')]['id'];}return db[_0xdbaf('0x16')]['find']({'where':{'id':_0x250003['params']['id']}})['then'](handleEntityNotFound(_0x5be315,null))[_0xdbaf('0xf')](saveUpdates(_0x250003[_0xdbaf('0x34')],null))['then'](respondWithResult(_0x5be315,null))[_0xdbaf('0x30')](handleError(_0x5be315,null));};exports['destroy']=function(_0xf8e956,_0x169411){return db[_0xdbaf('0x16')]['find']({'where':{'id':_0xf8e956['params']['id']}})[_0xdbaf('0xf')](handleEntityNotFound(_0x169411,null))[_0xdbaf('0xf')](removeEntity(_0x169411,null))[_0xdbaf('0x30')](handleError(_0x169411,null));};exports[_0xdbaf('0x35')]=function(_0x56f5c5,_0x10b015){var _0x53b462={};var _0x447cdc={};var _0xa0a95;var _0xe52e9;return db['Dynamics365Account']['findOne']({'where':{'id':_0x56f5c5[_0xdbaf('0x36')]['id']}})[_0xdbaf('0xf')](handleEntityNotFound(_0x10b015,null))[_0xdbaf('0xf')](function(_0x68d059){if(_0x68d059){_0xa0a95=_0x68d059;_0x447cdc[_0xdbaf('0x1f')]=_[_0xdbaf('0x1b')](db[_0xdbaf('0x37')][_0xdbaf('0x38')]);_0x447cdc['query']=_[_0xdbaf('0x1b')](_0x56f5c5[_0xdbaf('0x1c')]);_0x447cdc[_0xdbaf('0x27')]=_[_0xdbaf('0x1e')](_0x447cdc[_0xdbaf('0x1f')],_0x447cdc[_0xdbaf('0x1c')]);_0x53b462[_0xdbaf('0x1d')]=_['intersection'](_0x447cdc[_0xdbaf('0x1f')],qs[_0xdbaf('0x20')](_0x56f5c5[_0xdbaf('0x1c')][_0xdbaf('0x20')]));_0x53b462[_0xdbaf('0x1d')]=_0x53b462['attributes'][_0xdbaf('0x21')]?_0x53b462['attributes']:_0x447cdc[_0xdbaf('0x1f')];_0x53b462[_0xdbaf('0x24')]=qs[_0xdbaf('0x25')](_0x56f5c5[_0xdbaf('0x1c')][_0xdbaf('0x25')]);_0x53b462[_0xdbaf('0x26')]=qs[_0xdbaf('0x27')](_[_0xdbaf('0x28')](_0x56f5c5[_0xdbaf('0x1c')],_0x447cdc[_0xdbaf('0x27')]));if(_0x56f5c5[_0xdbaf('0x1c')][_0xdbaf('0x29')]){_0x53b462['where']=_['merge'](_0x53b462[_0xdbaf('0x26')],{'$or':_[_0xdbaf('0x1a')](_0x53b462[_0xdbaf('0x1d')],function(_0x3efefa){var _0x5a7083={};_0x5a7083[_0x3efefa]={'$like':'%'+_0x56f5c5[_0xdbaf('0x1c')][_0xdbaf('0x29')]+'%'};return _0x5a7083;})});}_0x53b462=_['merge']({},_0x53b462,_0x56f5c5['options']);return _0xa0a95[_0xdbaf('0x35')](_0x53b462);}})[_0xdbaf('0xf')](function(_0x253675){if(_0x253675){_0xe52e9=_0x253675[_0xdbaf('0x21')];if(!_0x56f5c5[_0xdbaf('0x1c')][_0xdbaf('0x22')](_0xdbaf('0x23'))){_0x53b462[_0xdbaf('0x8')]=qs['limit'](_0x56f5c5[_0xdbaf('0x1c')][_0xdbaf('0x8')]);_0x53b462[_0xdbaf('0x6')]=qs['offset'](_0x56f5c5[_0xdbaf('0x1c')][_0xdbaf('0x6')]);}return _0xa0a95[_0xdbaf('0x35')](_0x53b462);}})[_0xdbaf('0xf')](function(_0x16842a){if(_0x16842a){return _0x16842a?{'count':_0xe52e9,'rows':_0x16842a}:null;}})['then'](respondWithResult(_0x10b015,null))[_0xdbaf('0x30')](handleError(_0x10b015,null));};exports['addConfiguration']=function(_0x53c691,_0x19bf64){if(_0x53c691[_0xdbaf('0x34')]['id']){delete _0x53c691[_0xdbaf('0x34')]['id'];}return db[_0xdbaf('0x16')]['findOne']({'where':{'id':_0x53c691['params']['id']}})[_0xdbaf('0xf')](handleEntityNotFound(_0x19bf64,null))['then'](function(_0x3d785d){if(_0x3d785d){_0x53c691[_0xdbaf('0x34')][_0xdbaf('0x39')]=_0x3d785d['id'];_0x53c691[_0xdbaf('0x34')][_0xdbaf('0x3a')]=integrations[_0xdbaf('0x3b')](_0x53c691['body'][_0xdbaf('0x3c')],_0x53c691[_0xdbaf('0x34')][_0xdbaf('0x18')]);_0x53c691[_0xdbaf('0x34')][_0xdbaf('0x3d')]=integrations[_0xdbaf('0x3e')](_0x53c691['body']['channel'],_0x53c691[_0xdbaf('0x34')][_0xdbaf('0x18')]);return db[_0xdbaf('0x37')][_0xdbaf('0x33')](_0x53c691['body'],{'include':[{'model':db[_0xdbaf('0x3f')],'as':_0xdbaf('0x3a')},{'model':db[_0xdbaf('0x3f')],'as':_0xdbaf('0x3d')}]});}return null;})[_0xdbaf('0xf')](respondWithResult(_0x19bf64,null))['catch'](handleError(_0x19bf64,null));};function sanitizeRemoteUri(_0x4e2afa){var _0x55f61a=_0x4e2afa[_0xdbaf('0x40')](-0x1);if(_0x55f61a==='/')return _0x4e2afa[_0xdbaf('0x41')](0x0,_0x4e2afa['lastIndexOf'](_0x55f61a));return _0x4e2afa;}function getWebApiUrl(_0x2ff32a){return util[_0xdbaf('0x42')]('%s/api/data/v9.0/',_0x2ff32a);}exports[_0xdbaf('0x43')]=function(_0x3c30cc,_0x3482fd){var _0x186997=_0x3c30cc[_0xdbaf('0x1c')][_0xdbaf('0x44')];var _0x5e2362=_0x186997===_0xdbaf('0x45')?_0xdbaf('0x46'):_0xdbaf('0x47');var _0x5158e9='';var _0x42f32a='';var _0x33e145='';var _0x1df3c6='';var _0xccfdf6='';var _0x46284f='';var _0x2e4c59='';var _0x3344ae='';var _0x572441=[_0xdbaf('0x48'),_0xdbaf('0x49'),'customerid',_0xdbaf('0x4a'),_0xdbaf('0x4b'),_0xdbaf('0x4c'),'phonenumber','regardingobjectid','directioncode',_0xdbaf('0x4d')];var _0x2d1ac9=[_0xdbaf('0x4e'),_0xdbaf('0x4f'),_0xdbaf('0x50'),_0xdbaf('0x51'),_0xdbaf('0x52'),_0xdbaf('0x53'),'contractdetailidname',_0xdbaf('0x54'),_0xdbaf('0x55'),_0xdbaf('0x56'),'createdbyname',_0xdbaf('0x57'),_0xdbaf('0x58'),_0xdbaf('0x59'),'createdonbehalfbyyominame','customeridname',_0xdbaf('0x5a'),'customeridyominame','emailaddress',_0xdbaf('0x5b'),_0xdbaf('0x5c'),_0xdbaf('0x5d'),'escalatedon',_0xdbaf('0x5e'),_0xdbaf('0x5f'),_0xdbaf('0x60'),_0xdbaf('0x61'),'influencescore',_0xdbaf('0x62'),_0xdbaf('0x63'),_0xdbaf('0x64'),_0xdbaf('0x65'),'modifiedbyexternalpartyyominame',_0xdbaf('0x66'),_0xdbaf('0x67'),_0xdbaf('0x68'),'modifiedonbehalfbyname',_0xdbaf('0x69'),_0xdbaf('0x6a'),_0xdbaf('0x6b'),_0xdbaf('0x6c'),_0xdbaf('0x6d'),_0xdbaf('0x6e'),'owneridname',_0xdbaf('0x6f'),_0xdbaf('0x70'),_0xdbaf('0x71'),_0xdbaf('0x72'),_0xdbaf('0x73'),'prioritycodename',_0xdbaf('0x74'),_0xdbaf('0x75'),_0xdbaf('0x76'),'resolvebykpiidname',_0xdbaf('0x77'),_0xdbaf('0x78'),_0xdbaf('0x79'),_0xdbaf('0x7a'),_0xdbaf('0x7b'),'slaname',_0xdbaf('0x7c'),_0xdbaf('0x7d'),_0xdbaf('0x7e'),_0xdbaf('0x7f'),_0xdbaf('0x80'),_0xdbaf('0x81'),_0xdbaf('0x82'),_0xdbaf('0x83'),_0xdbaf('0x84'),_0xdbaf('0x85')];var _0xe857a2=_0x572441['concat'](_0x2d1ac9);return db[_0xdbaf('0x16')][_0xdbaf('0x86')]({'where':{'id':_0x3c30cc[_0xdbaf('0x36')]['id']},'attributes':['id','username',_0xdbaf('0x87'),'remoteUri','tenantId',_0xdbaf('0x88'),'clientSecret',_0xdbaf('0x89')],'include':[{'model':db[_0xdbaf('0x8a')],'as':_0xdbaf('0x8a'),'attributes':['id',_0xdbaf('0x8b'),_0xdbaf('0x8c')]}]})['then'](handleEntityNotFound(_0x3482fd,null))[_0xdbaf('0xf')](function(_0x237f56){if(_0x237f56){if(_0x237f56[_0xdbaf('0x89')]){_0x237f56[_0xdbaf('0x8d')]=_0x237f56[_0xdbaf('0x8a')]['data5'];_0x3344ae=sanitizeRemoteUri(_0x237f56['CloudProvider'][_0xdbaf('0x8c')]);_0x2e4c59=getWebApiUrl(_0x3344ae);return _0x237f56;}_0x3344ae=sanitizeRemoteUri(_0x237f56[_0xdbaf('0x8e')]);_0x2e4c59=getWebApiUrl(_0x3344ae);var _0x53c007={'method':_0xdbaf('0x8f'),'uri':'https://login.microsoftonline.com/'+_0x237f56[_0xdbaf('0x90')]+'/oauth2/token','form':{'client_id':_0x237f56[_0xdbaf('0x88')],'resource':_0x3344ae,'username':_0x237f56[_0xdbaf('0x91')],'password':_0x237f56[_0xdbaf('0x87')],'grant_type':'password','client_secret':_0x237f56[_0xdbaf('0x92')]},'json':!![]};return rp(_0x53c007);}})[_0xdbaf('0xf')](function(_0x338892){_0x46284f=_0x338892[_0xdbaf('0x8d')];var _0x528fb6={'method':_0xdbaf('0x93'),'uri':encodeURI(_0x2e4c59+'EntityDefinitions?$select=DisplayName,EntitySetName&$filter=SchemaName\x20eq\x20\x27'+_0x5e2362+'\x27'),'headers':{'Authorization':'Bearer\x20'+_0x46284f,'If-None-Match':null,'OData-Version':_0xdbaf('0x94')},'json':!![]};return rp(_0x528fb6);})[_0xdbaf('0xf')](function(_0x229258){var _0x17c864=_0x229258['value'][0x0];var _0x8e66ee=_0x17c864[_0xdbaf('0x95')];var _0x5cb116={'method':_0xdbaf('0x93'),'uri':_0x2e4c59+_0xdbaf('0x96')+_0x8e66ee+_0xdbaf('0x97'),'headers':{'Authorization':_0xdbaf('0x98')+_0x46284f,'If-None-Match':null,'OData-Version':_0xdbaf('0x94')},'json':!![]};return rp(_0x5cb116);})[_0xdbaf('0xf')](function(_0xfa7219){_0x5158e9=_0xfa7219;_0x42f32a=_0x5158e9[_0xdbaf('0x99')];_0x42f32a=_[_0xdbaf('0x9a')](_0x42f32a,function(_0xd42e60){return!_0xe857a2[_0xdbaf('0x9b')](_0xd42e60[_0xdbaf('0x9c')]);});var _0x5abb0e=[];var _0x1f85ef=[];_0x42f32a[_0xdbaf('0x9d')](function(_0x2d7702){if(_0x2d7702[_0xdbaf('0x9e')]){var _0xaf62d7=_0x2d7702[_0xdbaf('0x9e')][_0xdbaf('0x41')](_0x2d7702[_0xdbaf('0x9e')]['lastIndexOf']('.')+0x1);if(_0xaf62d7===_0xdbaf('0x9f')){_0x5abb0e[_0xdbaf('0xa0')](getSelectList(_0x2e4c59,_0x186997,_0x1f85ef,_0x5158e9[_0xdbaf('0x95')],_0x2d7702[_0xdbaf('0x95')],_0x46284f));}}});return Promise['all'](_0x5abb0e);})[_0xdbaf('0xf')](function(_0x33b43e){_0x33e145=_0x33b43e[0x0];var _0x469c40=[];var _0xaf6f92=[];_0x42f32a[_0xdbaf('0x9d')](function(_0xaa41c1){if(!_[_0xdbaf('0xa1')](_0xaa41c1['@odata.type'])){var _0x53e75a=_0xaa41c1[_0xdbaf('0x9e')][_0xdbaf('0x41')](_0xaa41c1[_0xdbaf('0x9e')][_0xdbaf('0xa2')]('.')+0x1);if(_0x53e75a===_0xdbaf('0xa3')){_0x469c40['push'](getBooleanList(_0x2e4c59,_0x186997,_0xaf6f92,_0x5158e9[_0xdbaf('0x95')],_0xaa41c1[_0xdbaf('0x95')],_0x46284f));}}});return Promise[_0xdbaf('0xa4')](_0x469c40);})[_0xdbaf('0xf')](function(_0x1d0842){_0x1df3c6=_0x1d0842[0x0];var _0x1d1285=[];var _0xdbd1e=[];_0x42f32a[_0xdbaf('0x9d')](function(_0x1345b6){if(_0x1345b6[_0xdbaf('0x9e')]){var _0x391a05=_0x1345b6[_0xdbaf('0x9e')]['substring'](_0x1345b6[_0xdbaf('0x9e')][_0xdbaf('0xa2')]('.')+0x1);if(_0x391a05==='StringAttributeMetadata'||_0x391a05===_0xdbaf('0xa5')||_0x391a05===_0xdbaf('0xa6')||_0x391a05===_0xdbaf('0xa7')||_0x391a05===_0xdbaf('0xa8')||_0x391a05===_0xdbaf('0xa9')||_0x391a05===_0xdbaf('0xaa')||_0x391a05===_0xdbaf('0xab')||_0x391a05===_0xdbaf('0xac')||_0x391a05===_0xdbaf('0xad')){_0x1d1285[_0xdbaf('0xa0')](getInputList(_0x2e4c59,_0x186997,_0x391a05,_0xdbd1e,_0x5158e9['MetadataId'],_0x1345b6[_0xdbaf('0x95')],_0x46284f));}}});return Promise[_0xdbaf('0xa4')](_0x1d1285);})['then'](function(_0x1842a6){_0xccfdf6=_0x1842a6[0x0];var _0xee61a=_0x33e145[_0xdbaf('0xae')](_0x1df3c6)['concat'](_0xccfdf6);var _0x4b30aa={'count':_0xee61a['length'],'rows':_0xee61a};return _0x4b30aa;})['then'](respondWithResult(_0x3482fd,null))['catch'](function(_0x566ace){var _0x325798=_0x3c30cc[_0xdbaf('0x1c')][_0xdbaf('0xaf')]?0x1f4:_0x566ace[_0xdbaf('0xb0')]||0x1f4;logger[_0xdbaf('0x13')](_0x566ace['stack']);delete _0x566ace[_0xdbaf('0x15')];if(_0x325798===0x191){_0x325798=0x190;}_0x3482fd['status'](_0x325798)[_0xdbaf('0xb1')](_0x3c30cc[_0xdbaf('0x1c')][_0xdbaf('0xaf')]?{'message':_0xdbaf('0xb2'),'statusCode':_0x566ace[_0xdbaf('0xb0')]}:_0x566ace);});};function getSelectList(_0x3ed457,_0x476c61,_0x1fc1d8,_0x1cca4c,_0x33db31,_0x12a9d8){var _0x2c4ae7={'method':_0xdbaf('0x93'),'uri':_0x3ed457+_0xdbaf('0x96')+_0x1cca4c+_0xdbaf('0xb3')+_0x33db31+_0xdbaf('0xb4')+_0xdbaf('0xb5'),'headers':{'Authorization':_0xdbaf('0x98')+_0x12a9d8,'If-None-Match':null,'OData-Version':_0xdbaf('0x94')},'json':!![]};return rp(_0x2c4ae7)['then'](function(_0x40cdac){var _0x51addd=[];var _0xd73e96=_0x40cdac[_0xdbaf('0xb6')][_0xdbaf('0xb7')];_0xd73e96['forEach'](function(_0x24a308){_0x51addd[_0xdbaf('0xa0')]({'name':_0x24a308[_0xdbaf('0xb8')][_0xdbaf('0xb9')][_0xdbaf('0xb8')],'value':String(_0x24a308['Value'])});});var _0x2c282c={'id':_0x476c61+'_'+_0x40cdac[_0xdbaf('0x9c')],'name':_0x40cdac[_0xdbaf('0xba')]['UserLocalizedLabel'][_0xdbaf('0xb8')],'custom':![],'options':_0x51addd};_0x1fc1d8[_0xdbaf('0xa0')](_0x2c282c);return _0x1fc1d8;});}function getBooleanList(_0x35c19f,_0x103d8b,_0x3869a6,_0x4b99ef,_0x1d9822,_0x12f990){var _0x49adb3={'method':_0xdbaf('0x93'),'uri':_0x35c19f+'EntityDefinitions('+_0x4b99ef+')/Attributes('+_0x1d9822+_0xdbaf('0xbb'),'headers':{'Authorization':_0xdbaf('0x98')+_0x12f990,'If-None-Match':null,'OData-Version':_0xdbaf('0x94')},'json':!![]};return rp(_0x49adb3)[_0xdbaf('0xf')](function(_0x22ae11){var _0x17dd48=[];_0x17dd48[_0xdbaf('0xa0')]({'name':_0x22ae11[_0xdbaf('0xb6')]['TrueOption'][_0xdbaf('0xb8')]['UserLocalizedLabel']['Label'],'value':'true'},{'name':_0x22ae11[_0xdbaf('0xb6')][_0xdbaf('0xbc')]['Label'][_0xdbaf('0xb9')][_0xdbaf('0xb8')],'value':_0xdbaf('0xbd')});var _0x569ffb={'id':_0x103d8b+'_'+_0x22ae11[_0xdbaf('0x9c')],'name':_0x22ae11[_0xdbaf('0xba')][_0xdbaf('0xb9')][_0xdbaf('0xb8')],'custom':![],'options':_0x17dd48};_0x3869a6[_0xdbaf('0xa0')](_0x569ffb);return _0x3869a6;});}function getInputList(_0x1f69d4,_0x31a8d0,_0x3f6007,_0x4ba687,_0x2eb9ff,_0xd10baf,_0x568923){var _0x5ea92c={'method':'GET','uri':_0x1f69d4+'EntityDefinitions('+_0x2eb9ff+')/Attributes('+_0xd10baf+')/Microsoft.Dynamics.CRM.'+_0x3f6007+_0xdbaf('0xbe'),'headers':{'Authorization':_0xdbaf('0x98')+_0x568923,'If-None-Match':null,'OData-Version':_0xdbaf('0x94')},'json':!![]};return rp(_0x5ea92c)[_0xdbaf('0xf')](function(_0x448707){var _0xd63846={'id':_0x31a8d0+'_'+_0x448707[_0xdbaf('0x9c')],'name':_0x448707['DisplayName'][_0xdbaf('0xb9')]?_0x448707[_0xdbaf('0xba')][_0xdbaf('0xb9')][_0xdbaf('0xb8')]:_0x448707['LogicalName'],'custom':![],'options':[]};_0x4ba687[_0xdbaf('0xa0')](_0xd63846);return _0x4ba687;});}
\ No newline at end of file
index 647c349..3b7e3ce 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0713=['../../config/logger','api','moment','bluebird','request-promise','rimraf','../../config/environment','./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
+var _0x757a=['Dynamics365Account','int_dynamics365_accounts','util','../../config/logger','request-promise','path','rimraf','../../config/environment','./intDynamics365Account.attributes','../../components/integrations/configuration'];(function(_0x432f59,_0x47bc2d){var _0x323d31=function(_0x5afa6b){while(--_0x5afa6b){_0x432f59['push'](_0x432f59['shift']());}};_0x323d31(++_0x47bc2d);}(_0x757a,0xde));var _0xa757=function(_0x29c01d,_0x1f5d99){_0x29c01d=_0x29c01d-0x0;var _0x2ea426=_0x757a[_0x29c01d];return _0x2ea426;};'use strict';var _=require('lodash');var util=require(_0xa757('0x0'));var logger=require(_0xa757('0x1'))('api');var moment=require('moment');var BPromise=require('bluebird');var rp=require(_0xa757('0x2'));var fs=require('fs');var path=require(_0xa757('0x3'));var rimraf=require(_0xa757('0x4'));var config=require(_0xa757('0x5'));var attributes=require(_0xa757('0x6'));var integrations=require(_0xa757('0x7'));module['exports']=function(_0xae0e7c,_0x4343b6){return _0xae0e7c['define'](_0xa757('0x8'),attributes,{'tableName':_0xa757('0x9'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 3368034..1f1f966 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0x26df=['error','message','info','catch','GetDynamics365Account','Dynamics365Account','options','raw','where','limit','include','map','attributes','model','stringify','ShowDynamics365Account','lodash','util','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','../../config/environment','jayson/promise','client','http','then','Dynamics365Account,\x20%s,\x20%s','request\x20sent','debug','Dynamics365Account,\x20%s,\x20%s,\x20%s','code'];(function(_0x29d420,_0x1a4cbe){var _0xcfd191=function(_0x2eb69f){while(--_0x2eb69f){_0x29d420['push'](_0x29d420['shift']());}};_0xcfd191(++_0x1a4cbe);}(_0x26df,0x186));var _0xf26d=function(_0x117f4c,_0x36a9b1){_0x117f4c=_0x117f4c-0x0;var _0x2b24e9=_0x26df[_0x117f4c];return _0x2b24e9;};'use strict';var _=require(_0xf26d('0x0'));var util=require(_0xf26d('0x1'));var moment=require('moment');var BPromise=require(_0xf26d('0x2'));var rs=require(_0xf26d('0x3'));var fs=require('fs');var Redis=require(_0xf26d('0x4'));var db=require(_0xf26d('0x5'))['db'];var utils=require(_0xf26d('0x6'));var logger=require(_0xf26d('0x7'))('rpc');var config=require(_0xf26d('0x8'));var jayson=require(_0xf26d('0x9'));var client=jayson[_0xf26d('0xa')][_0xf26d('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x114aad,_0x2f1f9a,_0x38d52e){return new BPromise(function(_0x5f30da,_0x2e5ca6){return client['request'](_0x114aad,_0x38d52e)[_0xf26d('0xc')](function(_0x31003a){logger['info'](_0xf26d('0xd'),_0x2f1f9a,_0xf26d('0xe'));logger[_0xf26d('0xf')](_0xf26d('0x10'),_0x2f1f9a,_0xf26d('0xe'),JSON['stringify'](_0x31003a));if(_0x31003a['error']){if(_0x31003a['error'][_0xf26d('0x11')]===0x1f4){logger[_0xf26d('0x12')]('Dynamics365Account,\x20%s,\x20%s',_0x2f1f9a,_0x31003a['error'][_0xf26d('0x13')]);return _0x2e5ca6(_0x31003a[_0xf26d('0x12')]['message']);}logger['error'](_0xf26d('0xd'),_0x2f1f9a,_0x31003a[_0xf26d('0x12')][_0xf26d('0x13')]);return _0x5f30da(_0x31003a[_0xf26d('0x12')][_0xf26d('0x13')]);}else{logger[_0xf26d('0x14')](_0xf26d('0xd'),_0x2f1f9a,_0xf26d('0xe'));_0x5f30da(_0x31003a['result'][_0xf26d('0x13')]);}})[_0xf26d('0x15')](function(_0x443bec){logger[_0xf26d('0x12')](_0xf26d('0xd'),_0x2f1f9a,_0x443bec);_0x2e5ca6(_0x443bec);});});}exports[_0xf26d('0x16')]=function(_0x73fd52){var _0x54bcb5=this;return new Promise(function(_0x191841,_0x4ae769){return db[_0xf26d('0x17')]['findAll']({'raw':_0x73fd52[_0xf26d('0x18')]?_0x73fd52[_0xf26d('0x18')][_0xf26d('0x19')]===undefined?!![]:![]:!![],'where':_0x73fd52['options']?_0x73fd52['options'][_0xf26d('0x1a')]||null:null,'attributes':_0x73fd52['options']?_0x73fd52[_0xf26d('0x18')]['attributes']||null:null,'limit':_0x73fd52[_0xf26d('0x18')]?_0x73fd52[_0xf26d('0x18')][_0xf26d('0x1b')]||null:null,'include':_0x73fd52[_0xf26d('0x18')]?_0x73fd52[_0xf26d('0x18')][_0xf26d('0x1c')]?_[_0xf26d('0x1d')](_0x73fd52[_0xf26d('0x18')]['include'],function(_0x104fa2){return{'model':db[_0x104fa2['model']],'as':_0x104fa2['as'],'attributes':_0x104fa2[_0xf26d('0x1e')],'include':_0x104fa2[_0xf26d('0x1c')]?_[_0xf26d('0x1d')](_0x104fa2['include'],function(_0x142d4b){return{'model':db[_0x142d4b[_0xf26d('0x1f')]],'as':_0x142d4b['as'],'attributes':_0x142d4b[_0xf26d('0x1e')],'include':_0x142d4b['include']?_[_0xf26d('0x1d')](_0x142d4b[_0xf26d('0x1c')],function(_0x2322b5){return{'model':db[_0x2322b5['model']],'as':_0x2322b5['as'],'attributes':_0x2322b5['attributes']};}):[]};}):[]};}):[]:[]})[_0xf26d('0xc')](function(_0x423bf2){logger[_0xf26d('0x14')](_0xf26d('0x16'),_0x73fd52);logger[_0xf26d('0xf')](_0xf26d('0x16'),_0x73fd52,JSON[_0xf26d('0x20')](_0x423bf2));_0x191841(_0x423bf2);})[_0xf26d('0x15')](function(_0x1ce8b7){logger[_0xf26d('0x12')](_0xf26d('0x16'),_0x1ce8b7['message'],_0x73fd52);_0x4ae769(_0x54bcb5[_0xf26d('0x12')](0x1f4,_0x1ce8b7[_0xf26d('0x13')]));});});};exports[_0xf26d('0x21')]=function(_0x365de0){var _0x4e2abe=this;return new Promise(function(_0x1e6abc,_0x4302a7){return db[_0xf26d('0x17')]['find']({'raw':_0x365de0[_0xf26d('0x18')]?_0x365de0[_0xf26d('0x18')][_0xf26d('0x19')]===undefined?!![]:![]:!![],'where':_0x365de0[_0xf26d('0x18')]?_0x365de0[_0xf26d('0x18')][_0xf26d('0x1a')]||null:null,'attributes':_0x365de0[_0xf26d('0x18')]?_0x365de0[_0xf26d('0x18')][_0xf26d('0x1e')]||null:null,'include':_0x365de0[_0xf26d('0x18')]?_0x365de0[_0xf26d('0x18')][_0xf26d('0x1c')]?_[_0xf26d('0x1d')](_0x365de0[_0xf26d('0x18')]['include'],function(_0x3c1084){return{'model':db[_0x3c1084[_0xf26d('0x1f')]],'as':_0x3c1084['as'],'attributes':_0x3c1084[_0xf26d('0x1e')],'include':_0x3c1084[_0xf26d('0x1c')]?_[_0xf26d('0x1d')](_0x3c1084[_0xf26d('0x1c')],function(_0x48ceaa){return{'model':db[_0x48ceaa[_0xf26d('0x1f')]],'as':_0x48ceaa['as'],'attributes':_0x48ceaa[_0xf26d('0x1e')],'include':_0x48ceaa[_0xf26d('0x1c')]?_[_0xf26d('0x1d')](_0x48ceaa['include'],function(_0x1155fc){return{'model':db[_0x1155fc[_0xf26d('0x1f')]],'as':_0x1155fc['as'],'attributes':_0x1155fc['attributes']};}):[]};}):[]};}):[]:[]})[_0xf26d('0xc')](function(_0x452ce7){logger[_0xf26d('0x14')](_0xf26d('0x21'),_0x365de0);logger[_0xf26d('0xf')](_0xf26d('0x21'),_0x365de0,JSON['stringify'](_0x452ce7));_0x1e6abc(_0x452ce7);})['catch'](function(_0xc31ac0){logger[_0xf26d('0x12')](_0xf26d('0x21'),_0xc31ac0[_0xf26d('0x13')],_0x365de0);_0x4302a7(_0x4e2abe[_0xf26d('0x12')](0x1f4,_0xc31ac0['message']));});});};
\ No newline at end of file
index 132a831..5a5586e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0xff29=['../../components/auth/service','../../components/interaction/service','../../config/environment','./intDynamics365Configuration.controller','get','/:id','show','getFields','/:id/subjects','isAuthenticated','getSubjects','/:id/descriptions','getDescriptions','create','put','update','delete','destroy','exports','multer','path','connect-timeout','express','Router','fs-extra'];(function(_0x2a9aee,_0x54e9a2){var _0x3a91d8=function(_0x3e9533){while(--_0x3e9533){_0x2a9aee['push'](_0x2a9aee['shift']());}};_0x3a91d8(++_0x54e9a2);}(_0xff29,0x1d5));var _0x9ff2=function(_0x51d539,_0x29f687){_0x51d539=_0x51d539-0x0;var _0x23625f=_0xff29[_0x51d539];return _0x23625f;};'use strict';var multer=require(_0x9ff2('0x0'));var util=require('util');var path=require(_0x9ff2('0x1'));var timeout=require(_0x9ff2('0x2'));var express=require(_0x9ff2('0x3'));var router=express[_0x9ff2('0x4')]();var fs_extra=require(_0x9ff2('0x5'));var auth=require(_0x9ff2('0x6'));var interaction=require(_0x9ff2('0x7'));var config=require(_0x9ff2('0x8'));var controller=require(_0x9ff2('0x9'));router[_0x9ff2('0xa')]('/',auth['isAuthenticated'](),controller['index']);router[_0x9ff2('0xa')](_0x9ff2('0xb'),auth['isAuthenticated'](),controller[_0x9ff2('0xc')]);router['get']('/:id/fields',auth['isAuthenticated'](),controller[_0x9ff2('0xd')]);router[_0x9ff2('0xa')](_0x9ff2('0xe'),auth[_0x9ff2('0xf')](),controller[_0x9ff2('0x10')]);router[_0x9ff2('0xa')](_0x9ff2('0x11'),auth[_0x9ff2('0xf')](),controller[_0x9ff2('0x12')]);router['post']('/',auth[_0x9ff2('0xf')](),controller[_0x9ff2('0x13')]);router[_0x9ff2('0x14')](_0x9ff2('0xb'),auth[_0x9ff2('0xf')](),controller[_0x9ff2('0x15')]);router[_0x9ff2('0x16')](_0x9ff2('0xb'),auth['isAuthenticated'](),controller[_0x9ff2('0x17')]);module[_0x9ff2('0x18')]=router;
\ No newline at end of file
index c2d99d5..411ccab 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0x62cb=['contact','nothing','STRING','incident','phonecall'];(function(_0x286c3f,_0x211aac){var _0x3158a0=function(_0xcecdca){while(--_0xcecdca){_0x286c3f['push'](_0x286c3f['shift']());}};_0x3158a0(++_0x211aac);}(_0x62cb,0x12e));var _0xb62c=function(_0x29d915,_0x54a040){_0x29d915=_0x29d915-0x0;var _0x160f86=_0x62cb[_0x29d915];return _0x160f86;};'use strict';var Sequelize=require('sequelize');module['exports']={'name':{'type':Sequelize[_0xb62c('0x0')]},'description':{'type':Sequelize[_0xb62c('0x0')]},'ticketType':{'type':Sequelize['ENUM'](_0xb62c('0x1'),_0xb62c('0x2')),'defaultValue':_0xb62c('0x1')},'moduleCreate':{'type':Sequelize['ENUM'](_0xb62c('0x3'),_0xb62c('0x4')),'defaultValue':_0xb62c('0x3'),'allowNull':![]},'additionalSearchContact':{'type':Sequelize[_0xb62c('0x0')],'allowNull':!![]},'openNewTab':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]}};
\ No newline at end of file
index 2043dbd..da030fa 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0x4873=['to-csv','fs-extra','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','json','offset','undefined','limit','count','set','Content-Range','apply','reject','save','update','then','error','stack','index','map','Dynamics365Configuration','rawAttributes','fieldName','type','model','name','keys','query','filters','intersection','fields','attributes','nolimit','order','sort','where','pick','merge','VIRTUAL','options','includeAll','include','findAll','rows','catch','show','params','length','find','create','body','getFields','Dynamics365Field','hasOwnProperty','findOne','filter','getSubjects','getDescriptions','rimraf','zip-dir','fast-json-patch','moment','bluebird','mustache','util','path','sox'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x4873,0x196));var _0x3487=function(_0x275b9f,_0x592d1a){_0x275b9f=_0x275b9f-0x0;var _0x48adef=_0x4873[_0x275b9f];return _0x48adef;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x3487('0x0'));var zipdir=require(_0x3487('0x1'));var jsonpatch=require(_0x3487('0x2'));var rp=require('request-promise');var moment=require(_0x3487('0x3'));var BPromise=require(_0x3487('0x4'));var Mustache=require(_0x3487('0x5'));var util=require(_0x3487('0x6'));var path=require(_0x3487('0x7'));var sox=require(_0x3487('0x8'));var csv=require(_0x3487('0x9'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x3487('0xa'));var _=require('lodash');var squel=require('squel');var crypto=require(_0x3487('0xb'));var jsforce=require(_0x3487('0xc'));var deskjs=require(_0x3487('0xd'));var toCsv=require('to-csv');var querystring=require(_0x3487('0xe'));var Papa=require(_0x3487('0xf'));var Redis=require(_0x3487('0x10'));var authService=require(_0x3487('0x11'));var qs=require(_0x3487('0x12'));var as=require(_0x3487('0x13'));var hardwareService=require(_0x3487('0x14'));var logger=require('../../config/logger')(_0x3487('0x15'));var utils=require(_0x3487('0x16'));var config=require(_0x3487('0x17'));var licenseUtil=require(_0x3487('0x18'));var db=require(_0x3487('0x19'))['db'];function respondWithStatusCode(_0x349ad1,_0x53e0fa){_0x53e0fa=_0x53e0fa||0xcc;return function(_0x236bc2){if(_0x236bc2){return _0x349ad1[_0x3487('0x1a')](_0x53e0fa);}return _0x349ad1[_0x3487('0x1b')](_0x53e0fa)[_0x3487('0x1c')]();};}function respondWithResult(_0x4d96b9,_0x191821){_0x191821=_0x191821||0xc8;return function(_0x30b78e){if(_0x30b78e){return _0x4d96b9[_0x3487('0x1b')](_0x191821)[_0x3487('0x1d')](_0x30b78e);}};}function respondWithFilteredResult(_0xe9c53a,_0x772d73){return function(_0x5632df){if(_0x5632df){var _0x1d3455=typeof _0x772d73[_0x3487('0x1e')]===_0x3487('0x1f')&&typeof _0x772d73[_0x3487('0x20')]===_0x3487('0x1f');var _0x1bcd1d=_0x5632df[_0x3487('0x21')];var _0x292bcd=_0x1d3455?0x0:_0x772d73['offset'];var _0x3e0078=_0x1d3455?_0x5632df[_0x3487('0x21')]:_0x772d73[_0x3487('0x1e')]+_0x772d73['limit'];var _0x32a395;if(_0x3e0078>=_0x1bcd1d){_0x3e0078=_0x1bcd1d;_0x32a395=0xc8;}else{_0x32a395=0xce;}_0xe9c53a['status'](_0x32a395);return _0xe9c53a[_0x3487('0x22')](_0x3487('0x23'),_0x292bcd+'-'+_0x3e0078+'/'+_0x1bcd1d)[_0x3487('0x1d')](_0x5632df);}return null;};}function patchUpdates(_0x5d0b2f){return function(_0x6126b8){try{jsonpatch[_0x3487('0x24')](_0x6126b8,_0x5d0b2f,!![]);}catch(_0x54dea4){return BPromise[_0x3487('0x25')](_0x54dea4);}return _0x6126b8[_0x3487('0x26')]();};}function saveUpdates(_0x279e9b,_0x2abba1){return function(_0x535266){if(_0x535266){return _0x535266[_0x3487('0x27')](_0x279e9b)['then'](function(_0xe07b98){return _0xe07b98;});}return null;};}function removeEntity(_0x53b811,_0x16c858){return function(_0x498759){if(_0x498759){return _0x498759['destroy']()[_0x3487('0x28')](function(){_0x53b811[_0x3487('0x1b')](0xcc)[_0x3487('0x1c')]();});}};}function handleEntityNotFound(_0x278a89,_0x20ea6b){return function(_0x26fb15){if(!_0x26fb15){_0x278a89[_0x3487('0x1a')](0x194);}return _0x26fb15;};}function handleError(_0x438d3e,_0x479576){_0x479576=_0x479576||0x1f4;return function(_0x1042a9){logger[_0x3487('0x29')](_0x1042a9[_0x3487('0x2a')]);if(_0x1042a9['name']){delete _0x1042a9['name'];}_0x438d3e['status'](_0x479576)['send'](_0x1042a9);};}exports[_0x3487('0x2b')]=function(_0x364cb5,_0x208213){var _0x386cf9={},_0x1a60e5={},_0x461a1f={'count':0x0,'rows':[]};var _0x444311=_[_0x3487('0x2c')](db[_0x3487('0x2d')][_0x3487('0x2e')],function(_0xcdc6ed){return{'name':_0xcdc6ed[_0x3487('0x2f')],'type':_0xcdc6ed[_0x3487('0x30')]['key']};});_0x1a60e5[_0x3487('0x31')]=_[_0x3487('0x2c')](_0x444311,_0x3487('0x32'));_0x1a60e5['query']=_[_0x3487('0x33')](_0x364cb5[_0x3487('0x34')]);_0x1a60e5[_0x3487('0x35')]=_[_0x3487('0x36')](_0x1a60e5['model'],_0x1a60e5[_0x3487('0x34')]);_0x386cf9['attributes']=_['intersection'](_0x1a60e5[_0x3487('0x31')],qs[_0x3487('0x37')](_0x364cb5['query'][_0x3487('0x37')]));_0x386cf9['attributes']=_0x386cf9[_0x3487('0x38')]['length']?_0x386cf9['attributes']:_0x1a60e5[_0x3487('0x31')];if(!_0x364cb5[_0x3487('0x34')]['hasOwnProperty'](_0x3487('0x39'))){_0x386cf9['limit']=qs['limit'](_0x364cb5[_0x3487('0x34')]['limit']);_0x386cf9[_0x3487('0x1e')]=qs[_0x3487('0x1e')](_0x364cb5['query'][_0x3487('0x1e')]);}_0x386cf9[_0x3487('0x3a')]=qs[_0x3487('0x3b')](_0x364cb5[_0x3487('0x34')][_0x3487('0x3b')]);_0x386cf9[_0x3487('0x3c')]=qs[_0x3487('0x35')](_[_0x3487('0x3d')](_0x364cb5[_0x3487('0x34')],_0x1a60e5[_0x3487('0x35')]),_0x444311);if(_0x364cb5[_0x3487('0x34')]['filter']){_0x386cf9['where']=_[_0x3487('0x3e')](_0x386cf9['where'],{'$or':_[_0x3487('0x2c')](_0x444311,function(_0x5d9d2e){if(_0x5d9d2e[_0x3487('0x30')]!==_0x3487('0x3f')){var _0x1f9c52={};_0x1f9c52[_0x5d9d2e[_0x3487('0x32')]]={'$like':'%'+_0x364cb5[_0x3487('0x34')]['filter']+'%'};return _0x1f9c52;}})});}_0x386cf9=_[_0x3487('0x3e')]({},_0x386cf9,_0x364cb5[_0x3487('0x40')]);var _0x1626fe={'where':_0x386cf9['where']};return db[_0x3487('0x2d')][_0x3487('0x21')](_0x1626fe)[_0x3487('0x28')](function(_0x2a801d){_0x461a1f[_0x3487('0x21')]=_0x2a801d;if(_0x364cb5[_0x3487('0x34')][_0x3487('0x41')]){_0x386cf9[_0x3487('0x42')]=[{'all':!![]}];}return db[_0x3487('0x2d')][_0x3487('0x43')](_0x386cf9);})[_0x3487('0x28')](function(_0x57dc48){_0x461a1f[_0x3487('0x44')]=_0x57dc48;return _0x461a1f;})[_0x3487('0x28')](respondWithFilteredResult(_0x208213,_0x386cf9))[_0x3487('0x45')](handleError(_0x208213,null));};exports[_0x3487('0x46')]=function(_0x501b76,_0x3eb77d){var _0x3936b4={'raw':![],'where':{'id':_0x501b76[_0x3487('0x47')]['id']}},_0x43fdc8={};_0x43fdc8[_0x3487('0x31')]=_[_0x3487('0x33')](db['Dynamics365Configuration'][_0x3487('0x2e')]);_0x43fdc8[_0x3487('0x34')]=_['keys'](_0x501b76[_0x3487('0x34')]);_0x43fdc8[_0x3487('0x35')]=_[_0x3487('0x36')](_0x43fdc8['model'],_0x43fdc8[_0x3487('0x34')]);_0x3936b4['attributes']=_['intersection'](_0x43fdc8[_0x3487('0x31')],qs[_0x3487('0x37')](_0x501b76[_0x3487('0x34')][_0x3487('0x37')]));_0x3936b4[_0x3487('0x38')]=_0x3936b4[_0x3487('0x38')][_0x3487('0x48')]?_0x3936b4['attributes']:_0x43fdc8[_0x3487('0x31')];if(_0x501b76['query'][_0x3487('0x41')]){_0x3936b4[_0x3487('0x42')]=[{'all':!![]}];}_0x3936b4=_[_0x3487('0x3e')]({},_0x3936b4,_0x501b76[_0x3487('0x40')]);return db[_0x3487('0x2d')][_0x3487('0x49')](_0x3936b4)[_0x3487('0x28')](handleEntityNotFound(_0x3eb77d,null))[_0x3487('0x28')](respondWithResult(_0x3eb77d,null))[_0x3487('0x45')](handleError(_0x3eb77d,null));};exports[_0x3487('0x4a')]=function(_0x3bd786,_0x551080){return db[_0x3487('0x2d')]['create'](_0x3bd786['body'],{})[_0x3487('0x28')](respondWithResult(_0x551080,0xc9))['catch'](handleError(_0x551080,null));};exports[_0x3487('0x27')]=function(_0x3c9d52,_0x687d03){if(_0x3c9d52['body']['id']){delete _0x3c9d52[_0x3487('0x4b')]['id'];}return db['Dynamics365Configuration'][_0x3487('0x49')]({'where':{'id':_0x3c9d52['params']['id']}})[_0x3487('0x28')](handleEntityNotFound(_0x687d03,null))[_0x3487('0x28')](saveUpdates(_0x3c9d52['body'],null))[_0x3487('0x28')](respondWithResult(_0x687d03,null))[_0x3487('0x45')](handleError(_0x687d03,null));};exports['destroy']=function(_0x209dff,_0x43c409){return db[_0x3487('0x2d')][_0x3487('0x49')]({'where':{'id':_0x209dff['params']['id']}})[_0x3487('0x28')](handleEntityNotFound(_0x43c409,null))[_0x3487('0x28')](removeEntity(_0x43c409,null))['catch'](handleError(_0x43c409,null));};exports[_0x3487('0x4c')]=function(_0xd1fa26,_0x7f64b8,_0x2f62b8){var _0x17927e={};var _0x1217cd={};var _0x8ef8bf;var _0x53eb13;return db[_0x3487('0x2d')]['findOne']({'where':{'id':_0xd1fa26[_0x3487('0x47')]['id']}})[_0x3487('0x28')](handleEntityNotFound(_0x7f64b8,null))[_0x3487('0x28')](function(_0x134989){if(_0x134989){_0x8ef8bf=_0x134989;_0x1217cd[_0x3487('0x31')]=_[_0x3487('0x33')](db[_0x3487('0x4d')]['rawAttributes']);_0x1217cd[_0x3487('0x34')]=_[_0x3487('0x33')](_0xd1fa26['query']);_0x1217cd[_0x3487('0x35')]=_[_0x3487('0x36')](_0x1217cd[_0x3487('0x31')],_0x1217cd[_0x3487('0x34')]);_0x17927e['attributes']=_[_0x3487('0x36')](_0x1217cd[_0x3487('0x31')],qs[_0x3487('0x37')](_0xd1fa26['query']['fields']));_0x17927e['attributes']=_0x17927e[_0x3487('0x38')][_0x3487('0x48')]?_0x17927e['attributes']:_0x1217cd[_0x3487('0x31')];_0x17927e[_0x3487('0x3a')]=qs[_0x3487('0x3b')](_0xd1fa26['query']['sort']);_0x17927e[_0x3487('0x3c')]=qs[_0x3487('0x35')](_[_0x3487('0x3d')](_0xd1fa26[_0x3487('0x34')],_0x1217cd[_0x3487('0x35')]));if(_0xd1fa26[_0x3487('0x34')]['filter']){_0x17927e[_0x3487('0x3c')]=_[_0x3487('0x3e')](_0x17927e[_0x3487('0x3c')],{'$or':_['map'](_0x17927e[_0x3487('0x38')],function(_0x40a0dd){var _0x3b04d8={};_0x3b04d8[_0x40a0dd]={'$like':'%'+_0xd1fa26[_0x3487('0x34')]['filter']+'%'};return _0x3b04d8;})});}_0x17927e=_['merge']({},_0x17927e,_0xd1fa26[_0x3487('0x40')]);return _0x8ef8bf[_0x3487('0x4c')](_0x17927e);}})[_0x3487('0x28')](function(_0x41377b){if(_0x41377b){_0x53eb13=_0x41377b['length'];if(!_0xd1fa26['query'][_0x3487('0x4e')](_0x3487('0x39'))){_0x17927e[_0x3487('0x20')]=qs[_0x3487('0x20')](_0xd1fa26[_0x3487('0x34')][_0x3487('0x20')]);_0x17927e[_0x3487('0x1e')]=qs[_0x3487('0x1e')](_0xd1fa26[_0x3487('0x34')][_0x3487('0x1e')]);}return _0x8ef8bf[_0x3487('0x4c')](_0x17927e);}})[_0x3487('0x28')](function(_0x4b3011){if(_0x4b3011){return _0x4b3011?{'count':_0x53eb13,'rows':_0x4b3011}:null;}})['then'](respondWithResult(_0x7f64b8,null))[_0x3487('0x45')](handleError(_0x7f64b8,null));};exports['getSubjects']=function(_0x514cb1,_0x3456df,_0x466e71){var _0x13d602={};var _0x4d0831={};var _0x19d2a5;var _0x3d81d1;return db[_0x3487('0x2d')][_0x3487('0x4f')]({'where':{'id':_0x514cb1['params']['id']}})[_0x3487('0x28')](handleEntityNotFound(_0x3456df,null))[_0x3487('0x28')](function(_0x47e095){if(_0x47e095){_0x19d2a5=_0x47e095;_0x4d0831[_0x3487('0x31')]=_['keys'](db[_0x3487('0x4d')]['rawAttributes']);_0x4d0831[_0x3487('0x34')]=_[_0x3487('0x33')](_0x514cb1[_0x3487('0x34')]);_0x4d0831['filters']=_[_0x3487('0x36')](_0x4d0831['model'],_0x4d0831['query']);_0x13d602['attributes']=_[_0x3487('0x36')](_0x4d0831[_0x3487('0x31')],qs['fields'](_0x514cb1[_0x3487('0x34')][_0x3487('0x37')]));_0x13d602['attributes']=_0x13d602[_0x3487('0x38')][_0x3487('0x48')]?_0x13d602[_0x3487('0x38')]:_0x4d0831[_0x3487('0x31')];_0x13d602[_0x3487('0x3a')]=qs[_0x3487('0x3b')](_0x514cb1[_0x3487('0x34')][_0x3487('0x3b')]);_0x13d602[_0x3487('0x3c')]=qs[_0x3487('0x35')](_[_0x3487('0x3d')](_0x514cb1[_0x3487('0x34')],_0x4d0831[_0x3487('0x35')]));if(_0x514cb1[_0x3487('0x34')]['filter']){_0x13d602['where']=_[_0x3487('0x3e')](_0x13d602['where'],{'$or':_[_0x3487('0x2c')](_0x13d602[_0x3487('0x38')],function(_0x104048){var _0x149411={};_0x149411[_0x104048]={'$like':'%'+_0x514cb1[_0x3487('0x34')][_0x3487('0x50')]+'%'};return _0x149411;})});}_0x13d602=_[_0x3487('0x3e')]({},_0x13d602,_0x514cb1[_0x3487('0x40')]);return _0x19d2a5[_0x3487('0x51')](_0x13d602);}})[_0x3487('0x28')](function(_0xc9593b){if(_0xc9593b){_0x3d81d1=_0xc9593b[_0x3487('0x48')];if(!_0x514cb1[_0x3487('0x34')]['hasOwnProperty'](_0x3487('0x39'))){_0x13d602[_0x3487('0x20')]=qs[_0x3487('0x20')](_0x514cb1[_0x3487('0x34')][_0x3487('0x20')]);_0x13d602[_0x3487('0x1e')]=qs[_0x3487('0x1e')](_0x514cb1[_0x3487('0x34')]['offset']);}return _0x19d2a5[_0x3487('0x51')](_0x13d602);}})[_0x3487('0x28')](function(_0x1e1c3b){if(_0x1e1c3b){return _0x1e1c3b?{'count':_0x3d81d1,'rows':_0x1e1c3b}:null;}})[_0x3487('0x28')](respondWithResult(_0x3456df,null))['catch'](handleError(_0x3456df,null));};exports[_0x3487('0x52')]=function(_0x3bfb10,_0x49f6db,_0x2c27c0){var _0x4ece69={};var _0x305db6={};var _0x26a666;var _0x7034d6;return db[_0x3487('0x2d')][_0x3487('0x4f')]({'where':{'id':_0x3bfb10[_0x3487('0x47')]['id']}})['then'](handleEntityNotFound(_0x49f6db,null))[_0x3487('0x28')](function(_0x3d99b2){if(_0x3d99b2){_0x26a666=_0x3d99b2;_0x305db6[_0x3487('0x31')]=_[_0x3487('0x33')](db['Dynamics365Field'][_0x3487('0x2e')]);_0x305db6['query']=_[_0x3487('0x33')](_0x3bfb10[_0x3487('0x34')]);_0x305db6['filters']=_[_0x3487('0x36')](_0x305db6[_0x3487('0x31')],_0x305db6[_0x3487('0x34')]);_0x4ece69[_0x3487('0x38')]=_[_0x3487('0x36')](_0x305db6[_0x3487('0x31')],qs['fields'](_0x3bfb10['query']['fields']));_0x4ece69[_0x3487('0x38')]=_0x4ece69[_0x3487('0x38')][_0x3487('0x48')]?_0x4ece69['attributes']:_0x305db6[_0x3487('0x31')];_0x4ece69[_0x3487('0x3a')]=qs[_0x3487('0x3b')](_0x3bfb10[_0x3487('0x34')][_0x3487('0x3b')]);_0x4ece69['where']=qs['filters'](_[_0x3487('0x3d')](_0x3bfb10['query'],_0x305db6['filters']));if(_0x3bfb10[_0x3487('0x34')][_0x3487('0x50')]){_0x4ece69['where']=_[_0x3487('0x3e')](_0x4ece69[_0x3487('0x3c')],{'$or':_[_0x3487('0x2c')](_0x4ece69[_0x3487('0x38')],function(_0x131fcd){var _0x2b4e37={};_0x2b4e37[_0x131fcd]={'$like':'%'+_0x3bfb10[_0x3487('0x34')]['filter']+'%'};return _0x2b4e37;})});}_0x4ece69=_[_0x3487('0x3e')]({},_0x4ece69,_0x3bfb10['options']);return _0x26a666[_0x3487('0x52')](_0x4ece69);}})[_0x3487('0x28')](function(_0xde0ab3){if(_0xde0ab3){_0x7034d6=_0xde0ab3[_0x3487('0x48')];if(!_0x3bfb10[_0x3487('0x34')][_0x3487('0x4e')]('nolimit')){_0x4ece69[_0x3487('0x20')]=qs['limit'](_0x3bfb10[_0x3487('0x34')]['limit']);_0x4ece69['offset']=qs[_0x3487('0x1e')](_0x3bfb10[_0x3487('0x34')][_0x3487('0x1e')]);}return _0x26a666[_0x3487('0x52')](_0x4ece69);}})[_0x3487('0x28')](function(_0x222728){if(_0x222728){return _0x222728?{'count':_0x7034d6,'rows':_0x222728}:null;}})[_0x3487('0x28')](respondWithResult(_0x49f6db,null))[_0x3487('0x45')](handleError(_0x49f6db,null));};
\ No newline at end of file
index a4b5037..057c55a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0xa9e0=['../../config/environment','./intDynamics365Configuration.attributes','exports','define','Dynamics365Configuration','lodash','util','../../config/logger','bluebird','path','rimraf'];(function(_0x1be7c1,_0x10fa4d){var _0x5a2aec=function(_0x907622){while(--_0x907622){_0x1be7c1['push'](_0x1be7c1['shift']());}};_0x5a2aec(++_0x10fa4d);}(_0xa9e0,0x123));var _0x0a9e=function(_0x9df060,_0x253d33){_0x9df060=_0x9df060-0x0;var _0x338dfe=_0xa9e0[_0x9df060];return _0x338dfe;};'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_dynamics365_configurations','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 424a1ad..8f6b5be 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0xb19f=['rpc','client','http','request','then','info','Dynamics365Configuration,\x20%s,\x20%s','debug','Dynamics365Configuration,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','message','result','catch','lodash','moment','randomstring','ioredis','../../config/utils'];(function(_0x1ee9a1,_0x5f1434){var _0x21270f=function(_0x303251){while(--_0x303251){_0x1ee9a1['push'](_0x1ee9a1['shift']());}};_0x21270f(++_0x5f1434);}(_0xb19f,0xd7));var _0xfb19=function(_0x5429e6,_0x1f78fe){_0x5429e6=_0x5429e6-0x0;var _0x3c6711=_0xb19f[_0x5429e6];return _0x3c6711;};'use strict';var _=require(_0xfb19('0x0'));var util=require('util');var moment=require(_0xfb19('0x1'));var BPromise=require('bluebird');var rs=require(_0xfb19('0x2'));var fs=require('fs');var Redis=require(_0xfb19('0x3'));var db=require('../../mysqldb')['db'];var utils=require(_0xfb19('0x4'));var logger=require('../../config/logger')(_0xfb19('0x5'));var config=require('../../config/environment');var jayson=require('jayson/promise');var client=jayson[_0xfb19('0x6')][_0xfb19('0x7')]({'port':0x232a});function respondWithRpcPromise(_0x1067d3,_0x5919a3,_0x1f150b){return new BPromise(function(_0x1d49d6,_0x2df87c){return client[_0xfb19('0x8')](_0x1067d3,_0x1f150b)[_0xfb19('0x9')](function(_0x4a7431){logger[_0xfb19('0xa')](_0xfb19('0xb'),_0x5919a3,'request\x20sent');logger[_0xfb19('0xc')](_0xfb19('0xd'),_0x5919a3,_0xfb19('0xe'),JSON[_0xfb19('0xf')](_0x4a7431));if(_0x4a7431['error']){if(_0x4a7431[_0xfb19('0x10')]['code']===0x1f4){logger[_0xfb19('0x10')](_0xfb19('0xb'),_0x5919a3,_0x4a7431[_0xfb19('0x10')][_0xfb19('0x11')]);return _0x2df87c(_0x4a7431[_0xfb19('0x10')][_0xfb19('0x11')]);}logger['error'](_0xfb19('0xb'),_0x5919a3,_0x4a7431[_0xfb19('0x10')]['message']);return _0x1d49d6(_0x4a7431['error'][_0xfb19('0x11')]);}else{logger[_0xfb19('0xa')](_0xfb19('0xb'),_0x5919a3,_0xfb19('0xe'));_0x1d49d6(_0x4a7431[_0xfb19('0x12')][_0xfb19('0x11')]);}})[_0xfb19('0x13')](function(_0x583e5f){logger[_0xfb19('0x10')](_0xfb19('0xb'),_0x5919a3,_0x583e5f);_0x2df87c(_0x583e5f);});});}
\ No newline at end of file
index 3eb2a20..d984b21 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0xfd0e=['isAuthenticated','/:id','create','put','update','delete','exports','util','path','connect-timeout','express','Router','fs-extra','../../components/interaction/service','../../config/environment','./intDynamics365Field.controller','get'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0xfd0e,0x117));var _0xefd0=function(_0x4001ad,_0x1e22dd){_0x4001ad=_0x4001ad-0x0;var _0x4c7ec2=_0xfd0e[_0x4001ad];return _0x4c7ec2;};'use strict';var multer=require('multer');var util=require(_0xefd0('0x0'));var path=require(_0xefd0('0x1'));var timeout=require(_0xefd0('0x2'));var express=require(_0xefd0('0x3'));var router=express[_0xefd0('0x4')]();var fs_extra=require(_0xefd0('0x5'));var auth=require('../../components/auth/service');var interaction=require(_0xefd0('0x6'));var config=require(_0xefd0('0x7'));var controller=require(_0xefd0('0x8'));router[_0xefd0('0x9')]('/',auth[_0xefd0('0xa')](),controller['index']);router[_0xefd0('0x9')](_0xefd0('0xb'),auth['isAuthenticated'](),controller['show']);router['post']('/',auth[_0xefd0('0xa')](),controller[_0xefd0('0xc')]);router[_0xefd0('0xd')](_0xefd0('0xb'),auth['isAuthenticated'](),controller[_0xefd0('0xe')]);router[_0xefd0('0xf')](_0xefd0('0xb'),auth['isAuthenticated'](),controller['destroy']);module[_0xefd0('0x10')]=router;
\ No newline at end of file
index 28ba917..bee2a1c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0x7ba2=['customVariable','BOOLEAN','sequelize','exports','ENUM','string','variable','keyValue','STRING'];(function(_0x2c8599,_0x4c4f57){var _0x538312=function(_0x401679){while(--_0x401679){_0x2c8599['push'](_0x2c8599['shift']());}};_0x538312(++_0x4c4f57);}(_0x7ba2,0x1df));var _0x27ba=function(_0x1e5a87,_0xad9d5){_0x1e5a87=_0x1e5a87-0x0;var _0x309977=_0x7ba2[_0x1e5a87];return _0x309977;};'use strict';var Sequelize=require(_0x27ba('0x0'));module[_0x27ba('0x1')]={'type':{'type':Sequelize[_0x27ba('0x2')](_0x27ba('0x3'),_0x27ba('0x4'),'customVariable',_0x27ba('0x5'),'picklist'),'defaultValue':_0x27ba('0x3')},'content':{'type':Sequelize[_0x27ba('0x6')]},'key':{'type':Sequelize[_0x27ba('0x6')]},'keyType':{'type':Sequelize[_0x27ba('0x2')](_0x27ba('0x3'),_0x27ba('0x4'),_0x27ba('0x7'))},'keyContent':{'type':Sequelize['STRING']},'idField':{'type':Sequelize[_0x27ba('0x6')]},'nameField':{'type':Sequelize[_0x27ba('0x6')]},'customField':{'type':Sequelize[_0x27ba('0x8')],'defaultValue':!![]},'variableName':{'type':Sequelize[_0x27ba('0x6')]}};
\ No newline at end of file
index b9c9584..bccdbb9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0xf38b=['moment','mustache','util','path','to-csv','ejs','fs-extra','squel','crypto','jsforce','desk.js','querystring','papaparse','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','end','offset','undefined','limit','count','status','set','json','apply','reject','save','update','then','destroy','error','send','index','map','rawAttributes','fieldName','type','key','name','query','keys','filters','intersection','attributes','model','fields','length','hasOwnProperty','nolimit','order','sort','pick','filter','where','VIRTUAL','options','Dynamics365Field','findAll','rows','show','includeAll','merge','find','catch','body','params','eml-format','rimraf','zip-dir','request-promise'];(function(_0x47df54,_0x1aeb61){var _0x261b87=function(_0x54bc77){while(--_0x54bc77){_0x47df54['push'](_0x47df54['shift']());}};_0x261b87(++_0x1aeb61);}(_0xf38b,0x98));var _0xbf38=function(_0x14bc32,_0x45fbe4){_0x14bc32=_0x14bc32-0x0;var _0x136d3f=_0xf38b[_0x14bc32];return _0x136d3f;};'use strict';var emlformat=require(_0xbf38('0x0'));var rimraf=require(_0xbf38('0x1'));var zipdir=require(_0xbf38('0x2'));var jsonpatch=require('fast-json-patch');var rp=require(_0xbf38('0x3'));var moment=require(_0xbf38('0x4'));var BPromise=require('bluebird');var Mustache=require(_0xbf38('0x5'));var util=require(_0xbf38('0x6'));var path=require(_0xbf38('0x7'));var sox=require('sox');var csv=require(_0xbf38('0x8'));var ejs=require(_0xbf38('0x9'));var fs=require('fs');var fs_extra=require(_0xbf38('0xa'));var _=require('lodash');var squel=require(_0xbf38('0xb'));var crypto=require(_0xbf38('0xc'));var jsforce=require(_0xbf38('0xd'));var deskjs=require(_0xbf38('0xe'));var toCsv=require(_0xbf38('0x8'));var querystring=require(_0xbf38('0xf'));var Papa=require(_0xbf38('0x10'));var Redis=require('ioredis');var authService=require(_0xbf38('0x11'));var qs=require(_0xbf38('0x12'));var as=require(_0xbf38('0x13'));var hardwareService=require(_0xbf38('0x14'));var logger=require(_0xbf38('0x15'))(_0xbf38('0x16'));var utils=require(_0xbf38('0x17'));var config=require(_0xbf38('0x18'));var licenseUtil=require(_0xbf38('0x19'));var db=require(_0xbf38('0x1a'))['db'];function respondWithStatusCode(_0x1e4e4c,_0x50763e){_0x50763e=_0x50763e||0xcc;return function(_0x18dfca){if(_0x18dfca){return _0x1e4e4c[_0xbf38('0x1b')](_0x50763e);}return _0x1e4e4c['status'](_0x50763e)[_0xbf38('0x1c')]();};}function respondWithResult(_0x3b873a,_0x3d1897){_0x3d1897=_0x3d1897||0xc8;return function(_0x4d90c1){if(_0x4d90c1){return _0x3b873a['status'](_0x3d1897)['json'](_0x4d90c1);}};}function respondWithFilteredResult(_0x35eeb9,_0x386cfc){return function(_0x2bbb7f){if(_0x2bbb7f){var _0x277d39=typeof _0x386cfc[_0xbf38('0x1d')]===_0xbf38('0x1e')&&typeof _0x386cfc[_0xbf38('0x1f')]===_0xbf38('0x1e');var _0xae8dbb=_0x2bbb7f[_0xbf38('0x20')];var _0x2cd78d=_0x277d39?0x0:_0x386cfc['offset'];var _0x369920=_0x277d39?_0x2bbb7f[_0xbf38('0x20')]:_0x386cfc[_0xbf38('0x1d')]+_0x386cfc[_0xbf38('0x1f')];var _0xc2af4c;if(_0x369920>=_0xae8dbb){_0x369920=_0xae8dbb;_0xc2af4c=0xc8;}else{_0xc2af4c=0xce;}_0x35eeb9[_0xbf38('0x21')](_0xc2af4c);return _0x35eeb9[_0xbf38('0x22')]('Content-Range',_0x2cd78d+'-'+_0x369920+'/'+_0xae8dbb)[_0xbf38('0x23')](_0x2bbb7f);}return null;};}function patchUpdates(_0xe23df8){return function(_0x300bfd){try{jsonpatch[_0xbf38('0x24')](_0x300bfd,_0xe23df8,!![]);}catch(_0x1bc9b8){return BPromise[_0xbf38('0x25')](_0x1bc9b8);}return _0x300bfd[_0xbf38('0x26')]();};}function saveUpdates(_0x7e7c2,_0x1ea12e){return function(_0x38576e){if(_0x38576e){return _0x38576e[_0xbf38('0x27')](_0x7e7c2)[_0xbf38('0x28')](function(_0x38f3f0){return _0x38f3f0;});}return null;};}function removeEntity(_0x45c022,_0x3a5298){return function(_0x18298e){if(_0x18298e){return _0x18298e[_0xbf38('0x29')]()['then'](function(){_0x45c022[_0xbf38('0x21')](0xcc)[_0xbf38('0x1c')]();});}};}function handleEntityNotFound(_0xb103fe,_0x59722c){return function(_0x5f2e95){if(!_0x5f2e95){_0xb103fe[_0xbf38('0x1b')](0x194);}return _0x5f2e95;};}function handleError(_0xfead7,_0x1bb77c){_0x1bb77c=_0x1bb77c||0x1f4;return function(_0x3aaf6c){logger[_0xbf38('0x2a')](_0x3aaf6c['stack']);if(_0x3aaf6c['name']){delete _0x3aaf6c['name'];}_0xfead7[_0xbf38('0x21')](_0x1bb77c)[_0xbf38('0x2b')](_0x3aaf6c);};}exports[_0xbf38('0x2c')]=function(_0x44045d,_0x5cf47d){var _0x3fe1b5={},_0x528b7a={},_0xec88c4={'count':0x0,'rows':[]};var _0xf71910=_[_0xbf38('0x2d')](db['Dynamics365Field'][_0xbf38('0x2e')],function(_0x2df1ee){return{'name':_0x2df1ee[_0xbf38('0x2f')],'type':_0x2df1ee[_0xbf38('0x30')][_0xbf38('0x31')]};});_0x528b7a['model']=_[_0xbf38('0x2d')](_0xf71910,_0xbf38('0x32'));_0x528b7a[_0xbf38('0x33')]=_[_0xbf38('0x34')](_0x44045d[_0xbf38('0x33')]);_0x528b7a[_0xbf38('0x35')]=_[_0xbf38('0x36')](_0x528b7a['model'],_0x528b7a[_0xbf38('0x33')]);_0x3fe1b5[_0xbf38('0x37')]=_[_0xbf38('0x36')](_0x528b7a[_0xbf38('0x38')],qs[_0xbf38('0x39')](_0x44045d[_0xbf38('0x33')]['fields']));_0x3fe1b5[_0xbf38('0x37')]=_0x3fe1b5[_0xbf38('0x37')][_0xbf38('0x3a')]?_0x3fe1b5[_0xbf38('0x37')]:_0x528b7a[_0xbf38('0x38')];if(!_0x44045d[_0xbf38('0x33')][_0xbf38('0x3b')](_0xbf38('0x3c'))){_0x3fe1b5['limit']=qs['limit'](_0x44045d[_0xbf38('0x33')][_0xbf38('0x1f')]);_0x3fe1b5[_0xbf38('0x1d')]=qs[_0xbf38('0x1d')](_0x44045d[_0xbf38('0x33')]['offset']);}_0x3fe1b5[_0xbf38('0x3d')]=qs[_0xbf38('0x3e')](_0x44045d[_0xbf38('0x33')]['sort']);_0x3fe1b5['where']=qs[_0xbf38('0x35')](_[_0xbf38('0x3f')](_0x44045d['query'],_0x528b7a['filters']),_0xf71910);if(_0x44045d['query'][_0xbf38('0x40')]){_0x3fe1b5[_0xbf38('0x41')]=_['merge'](_0x3fe1b5[_0xbf38('0x41')],{'$or':_[_0xbf38('0x2d')](_0xf71910,function(_0x437e14){if(_0x437e14['type']!==_0xbf38('0x42')){var _0x3be427={};_0x3be427[_0x437e14[_0xbf38('0x32')]]={'$like':'%'+_0x44045d[_0xbf38('0x33')]['filter']+'%'};return _0x3be427;}})});}_0x3fe1b5=_['merge']({},_0x3fe1b5,_0x44045d[_0xbf38('0x43')]);var _0xd9adb={'where':_0x3fe1b5[_0xbf38('0x41')]};return db[_0xbf38('0x44')]['count'](_0xd9adb)[_0xbf38('0x28')](function(_0x510da7){_0xec88c4[_0xbf38('0x20')]=_0x510da7;if(_0x44045d[_0xbf38('0x33')]['includeAll']){_0x3fe1b5['include']=[{'all':!![]}];}return db['Dynamics365Field'][_0xbf38('0x45')](_0x3fe1b5);})[_0xbf38('0x28')](function(_0x196478){_0xec88c4[_0xbf38('0x46')]=_0x196478;return _0xec88c4;})[_0xbf38('0x28')](respondWithFilteredResult(_0x5cf47d,_0x3fe1b5))['catch'](handleError(_0x5cf47d,null));};exports[_0xbf38('0x47')]=function(_0x165105,_0x439559){var _0xbe16ec={'raw':!![],'where':{'id':_0x165105['params']['id']}},_0x318c33={};_0x318c33[_0xbf38('0x38')]=_[_0xbf38('0x34')](db['Dynamics365Field'][_0xbf38('0x2e')]);_0x318c33[_0xbf38('0x33')]=_[_0xbf38('0x34')](_0x165105['query']);_0x318c33['filters']=_[_0xbf38('0x36')](_0x318c33[_0xbf38('0x38')],_0x318c33['query']);_0xbe16ec[_0xbf38('0x37')]=_[_0xbf38('0x36')](_0x318c33[_0xbf38('0x38')],qs[_0xbf38('0x39')](_0x165105['query'][_0xbf38('0x39')]));_0xbe16ec[_0xbf38('0x37')]=_0xbe16ec['attributes'][_0xbf38('0x3a')]?_0xbe16ec[_0xbf38('0x37')]:_0x318c33[_0xbf38('0x38')];if(_0x165105[_0xbf38('0x33')][_0xbf38('0x48')]){_0xbe16ec['include']=[{'all':!![]}];}_0xbe16ec=_[_0xbf38('0x49')]({},_0xbe16ec,_0x165105['options']);return db[_0xbf38('0x44')][_0xbf38('0x4a')](_0xbe16ec)[_0xbf38('0x28')](handleEntityNotFound(_0x439559,null))[_0xbf38('0x28')](respondWithResult(_0x439559,null))[_0xbf38('0x4b')](handleError(_0x439559,null));};exports['create']=function(_0x37d5cd,_0x6a4bdf){return db[_0xbf38('0x44')]['create'](_0x37d5cd[_0xbf38('0x4c')],{})[_0xbf38('0x28')](respondWithResult(_0x6a4bdf,0xc9))['catch'](handleError(_0x6a4bdf,null));};exports[_0xbf38('0x27')]=function(_0x1d8a61,_0x43411d){if(_0x1d8a61[_0xbf38('0x4c')]['id']){delete _0x1d8a61['body']['id'];}return db[_0xbf38('0x44')][_0xbf38('0x4a')]({'where':{'id':_0x1d8a61['params']['id']}})[_0xbf38('0x28')](handleEntityNotFound(_0x43411d,null))[_0xbf38('0x28')](saveUpdates(_0x1d8a61[_0xbf38('0x4c')],null))['then'](respondWithResult(_0x43411d,null))[_0xbf38('0x4b')](handleError(_0x43411d,null));};exports['destroy']=function(_0x4e1c81,_0x7cdaaa){return db[_0xbf38('0x44')][_0xbf38('0x4a')]({'where':{'id':_0x4e1c81[_0xbf38('0x4d')]['id']}})[_0xbf38('0x28')](handleEntityNotFound(_0x7cdaaa,null))[_0xbf38('0x28')](removeEntity(_0x7cdaaa,null))[_0xbf38('0x4b')](handleError(_0x7cdaaa,null));};
\ No newline at end of file
index 0dd2453..2b92be0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0x6c34=['idField','FieldId','../../config/logger','moment','request-promise','path','rimraf','../../config/environment','./intDynamics365Field.attributes','exports','define','Dynamics365Field','dynamics365_unique_index'];(function(_0x552fce,_0x3f24bc){var _0x3e27a2=function(_0xc91154){while(--_0xc91154){_0x552fce['push'](_0x552fce['shift']());}};_0x3e27a2(++_0x3f24bc);}(_0x6c34,0x13a));var _0x46c3=function(_0x45b1e3,_0x5b4d02){_0x45b1e3=_0x45b1e3-0x0;var _0x2c7b6b=_0x6c34[_0x45b1e3];return _0x2c7b6b;};'use strict';var _=require('lodash');var util=require('util');var logger=require(_0x46c3('0x0'))('api');var moment=require(_0x46c3('0x1'));var BPromise=require('bluebird');var rp=require(_0x46c3('0x2'));var fs=require('fs');var path=require(_0x46c3('0x3'));var rimraf=require(_0x46c3('0x4'));var config=require(_0x46c3('0x5'));var attributes=require(_0x46c3('0x6'));module[_0x46c3('0x7')]=function(_0x59dc76,_0x1afd97){return _0x59dc76[_0x46c3('0x8')](_0x46c3('0x9'),attributes,{'tableName':'int_dynamics365_fields','paranoid':![],'indexes':[{'name':_0x46c3('0xa'),'fields':[_0x46c3('0xb'),_0x46c3('0xc')],'unique':!![]}],'timestamps':!![]});};
\ No newline at end of file
index fc5f653..3c896ab 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0x7ba5=['../../mysqldb','../../config/utils','../../config/logger','rpc','http','request','then','info','Dynamics365Field,\x20%s,\x20%s','request\x20sent','debug','stringify','error','code','message','result','catch','lodash','util','moment','bluebird','ioredis'];(function(_0x38b54a,_0x1efc88){var _0x2041fe=function(_0x525af0){while(--_0x525af0){_0x38b54a['push'](_0x38b54a['shift']());}};_0x2041fe(++_0x1efc88);}(_0x7ba5,0xab));var _0x57ba=function(_0x24e669,_0x355b5a){_0x24e669=_0x24e669-0x0;var _0xe85705=_0x7ba5[_0x24e669];return _0xe85705;};'use strict';var _=require(_0x57ba('0x0'));var util=require(_0x57ba('0x1'));var moment=require(_0x57ba('0x2'));var BPromise=require(_0x57ba('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x57ba('0x4'));var db=require(_0x57ba('0x5'))['db'];var utils=require(_0x57ba('0x6'));var logger=require(_0x57ba('0x7'))(_0x57ba('0x8'));var config=require('../../config/environment');var jayson=require('jayson/promise');var client=jayson['client'][_0x57ba('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x51b48c,_0x4ef472,_0x5c1e4d){return new BPromise(function(_0x388320,_0x2b4920){return client[_0x57ba('0xa')](_0x51b48c,_0x5c1e4d)[_0x57ba('0xb')](function(_0x49451c){logger[_0x57ba('0xc')](_0x57ba('0xd'),_0x4ef472,_0x57ba('0xe'));logger[_0x57ba('0xf')]('Dynamics365Field,\x20%s,\x20%s,\x20%s',_0x4ef472,'request\x20sent',JSON[_0x57ba('0x10')](_0x49451c));if(_0x49451c[_0x57ba('0x11')]){if(_0x49451c[_0x57ba('0x11')][_0x57ba('0x12')]===0x1f4){logger[_0x57ba('0x11')](_0x57ba('0xd'),_0x4ef472,_0x49451c[_0x57ba('0x11')][_0x57ba('0x13')]);return _0x2b4920(_0x49451c[_0x57ba('0x11')][_0x57ba('0x13')]);}logger[_0x57ba('0x11')]('Dynamics365Field,\x20%s,\x20%s',_0x4ef472,_0x49451c[_0x57ba('0x11')][_0x57ba('0x13')]);return _0x388320(_0x49451c[_0x57ba('0x11')]['message']);}else{logger[_0x57ba('0xc')](_0x57ba('0xd'),_0x4ef472,_0x57ba('0xe'));_0x388320(_0x49451c[_0x57ba('0x14')][_0x57ba('0x13')]);}})[_0x57ba('0x15')](function(_0xff8a9e){logger[_0x57ba('0x11')]('Dynamics365Field,\x20%s,\x20%s',_0x4ef472,_0xff8a9e);_0x2b4920(_0xff8a9e);});});}
\ No newline at end of file
index f1e9685..db21387 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0xf4f0=['get','isAuthenticated','index','/:id/configurations','getConfigurations','/:id/fields','getFields','post','create','addConfiguration','put','/:id','update','exports','multer','util','path','connect-timeout','express','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./intFreshdeskAccount.controller'];(function(_0x11ce46,_0x177a85){var _0x368a1e=function(_0x425454){while(--_0x425454){_0x11ce46['push'](_0x11ce46['shift']());}};_0x368a1e(++_0x177a85);}(_0xf4f0,0x1a6));var _0x0f4f=function(_0x2bf1fb,_0x10022d){_0x2bf1fb=_0x2bf1fb-0x0;var _0x5e7e68=_0xf4f0[_0x2bf1fb];return _0x5e7e68;};'use strict';var multer=require(_0x0f4f('0x0'));var util=require(_0x0f4f('0x1'));var path=require(_0x0f4f('0x2'));var timeout=require(_0x0f4f('0x3'));var express=require(_0x0f4f('0x4'));var router=express['Router']();var fs_extra=require(_0x0f4f('0x5'));var auth=require(_0x0f4f('0x6'));var interaction=require(_0x0f4f('0x7'));var config=require(_0x0f4f('0x8'));var controller=require(_0x0f4f('0x9'));router[_0x0f4f('0xa')]('/',auth[_0x0f4f('0xb')](),controller[_0x0f4f('0xc')]);router['get']('/:id',auth[_0x0f4f('0xb')](),controller['show']);router[_0x0f4f('0xa')](_0x0f4f('0xd'),auth[_0x0f4f('0xb')](),controller[_0x0f4f('0xe')]);router['get'](_0x0f4f('0xf'),auth[_0x0f4f('0xb')](),controller[_0x0f4f('0x10')]);router[_0x0f4f('0x11')]('/',auth[_0x0f4f('0xb')](),controller[_0x0f4f('0x12')]);router['post'](_0x0f4f('0xd'),auth[_0x0f4f('0xb')](),controller[_0x0f4f('0x13')]);router[_0x0f4f('0x14')](_0x0f4f('0x15'),auth[_0x0f4f('0xb')](),controller[_0x0f4f('0x16')]);router['delete']('/:id',auth[_0x0f4f('0xb')](),controller['destroy']);module[_0x0f4f('0x17')]=router;
\ No newline at end of file
index 0aae3c9..7869d90 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0x3266=['remoteUri','sequelize','exports','STRING','username'];(function(_0x4e55da,_0x40ea05){var _0x567c17=function(_0x571916){while(--_0x571916){_0x4e55da['push'](_0x4e55da['shift']());}};_0x567c17(++_0x40ea05);}(_0x3266,0x6a));var _0x6326=function(_0x1d50f2,_0x3c3ec6){_0x1d50f2=_0x1d50f2-0x0;var _0x3769b8=_0x3266[_0x1d50f2];return _0x3769b8;};'use strict';var Sequelize=require(_0x6326('0x0'));module[_0x6326('0x1')]={'name':{'type':Sequelize[_0x6326('0x2')]},'description':{'type':Sequelize[_0x6326('0x2')]},'username':{'type':Sequelize[_0x6326('0x2')],'unique':_0x6326('0x3')},'apiKey':{'type':Sequelize[_0x6326('0x2')]},'remoteUri':{'type':Sequelize[_0x6326('0x2')],'unique':_0x6326('0x4')},'serverUrl':{'type':Sequelize['STRING'],'allowNull':![]}};
\ No newline at end of file
index 638e4e7..6d224a0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0x1572=['company','remove','includes','default','custom_text','custom_dropdown','label','choices','capitalize','test','statusCode','getFields,\x20%s,\x20%s,\x20%s','stringify','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','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/environment','../../config/license/util','../../mysqldb','../../components/integrations/configuration','sendStatus','status','end','offset','undefined','limit','set','reject','update','then','error','stack','name','send','index','map','FreshdeskAccount','rawAttributes','fieldName','type','key','model','query','keys','filters','intersection','attributes','fields','length','hasOwnProperty','order','sort','pick','filter','merge','options','where','count','includeAll','rows','catch','show','params','include','find','create','body','destroy','getConfigurations','findOne','FreshdeskConfiguration','nolimit','Subjects','channel','getDescriptions','Descriptions','getFields','remoteUri','apiKey','slice','lastIndexOf','GET','format','%s/%s','api/v2/ticket_fields','Basic\x20%s','%s:X','base64','requester','agent','description','group','source'];(function(_0x4e1d03,_0x786f3a){var _0x362d4b=function(_0x1924d2){while(--_0x1924d2){_0x4e1d03['push'](_0x4e1d03['shift']());}};_0x362d4b(++_0x786f3a);}(_0x1572,0xf5));var _0x2157=function(_0x2f4ce5,_0x2905d9){_0x2f4ce5=_0x2f4ce5-0x0;var _0x32682b=_0x1572[_0x2f4ce5];return _0x32682b;};'use strict';var emlformat=require(_0x2157('0x0'));var rimraf=require(_0x2157('0x1'));var zipdir=require(_0x2157('0x2'));var jsonpatch=require(_0x2157('0x3'));var rp=require(_0x2157('0x4'));var moment=require(_0x2157('0x5'));var BPromise=require(_0x2157('0x6'));var Mustache=require(_0x2157('0x7'));var util=require(_0x2157('0x8'));var path=require(_0x2157('0x9'));var sox=require(_0x2157('0xa'));var csv=require(_0x2157('0xb'));var ejs=require(_0x2157('0xc'));var fs=require('fs');var fs_extra=require(_0x2157('0xd'));var _=require(_0x2157('0xe'));var squel=require(_0x2157('0xf'));var crypto=require(_0x2157('0x10'));var jsforce=require(_0x2157('0x11'));var deskjs=require('desk.js');var toCsv=require(_0x2157('0xb'));var querystring=require('querystring');var Papa=require(_0x2157('0x12'));var Redis=require(_0x2157('0x13'));var authService=require(_0x2157('0x14'));var qs=require(_0x2157('0x15'));var as=require(_0x2157('0x16'));var hardwareService=require(_0x2157('0x17'));var logger=require(_0x2157('0x18'))(_0x2157('0x19'));var utils=require('../../config/utils');var config=require(_0x2157('0x1a'));var licenseUtil=require(_0x2157('0x1b'));var db=require(_0x2157('0x1c'))['db'];var integrations=require(_0x2157('0x1d'));function respondWithStatusCode(_0x5d64d3,_0x32683b){_0x32683b=_0x32683b||0xcc;return function(_0x418d29){if(_0x418d29){return _0x5d64d3[_0x2157('0x1e')](_0x32683b);}return _0x5d64d3[_0x2157('0x1f')](_0x32683b)[_0x2157('0x20')]();};}function respondWithResult(_0xd85b14,_0x1ed7c2){_0x1ed7c2=_0x1ed7c2||0xc8;return function(_0x5e977c){if(_0x5e977c){return _0xd85b14['status'](_0x1ed7c2)['json'](_0x5e977c);}};}function respondWithFilteredResult(_0x22e273,_0x2ce8e1){return function(_0x371461){if(_0x371461){var _0x20de83=typeof _0x2ce8e1[_0x2157('0x21')]===_0x2157('0x22')&&typeof _0x2ce8e1[_0x2157('0x23')]===_0x2157('0x22');var _0x42e67e=_0x371461['count'];var _0x25a147=_0x20de83?0x0:_0x2ce8e1[_0x2157('0x21')];var _0x23aba1=_0x20de83?_0x371461['count']:_0x2ce8e1[_0x2157('0x21')]+_0x2ce8e1[_0x2157('0x23')];var _0x19a67a;if(_0x23aba1>=_0x42e67e){_0x23aba1=_0x42e67e;_0x19a67a=0xc8;}else{_0x19a67a=0xce;}_0x22e273[_0x2157('0x1f')](_0x19a67a);return _0x22e273[_0x2157('0x24')]('Content-Range',_0x25a147+'-'+_0x23aba1+'/'+_0x42e67e)['json'](_0x371461);}return null;};}function patchUpdates(_0x5910f8){return function(_0x963ccc){try{jsonpatch['apply'](_0x963ccc,_0x5910f8,!![]);}catch(_0x44c485){return BPromise[_0x2157('0x25')](_0x44c485);}return _0x963ccc['save']();};}function saveUpdates(_0x5b4435,_0x306bcd){return function(_0x45f14b){if(_0x45f14b){return _0x45f14b[_0x2157('0x26')](_0x5b4435)[_0x2157('0x27')](function(_0x5244a9){return _0x5244a9;});}return null;};}function removeEntity(_0xe0bfe2,_0x4601ce){return function(_0x495598){if(_0x495598){return _0x495598['destroy']()[_0x2157('0x27')](function(){_0xe0bfe2[_0x2157('0x1f')](0xcc)[_0x2157('0x20')]();});}};}function handleEntityNotFound(_0xbd5885,_0x2f621d){return function(_0x192a97){if(!_0x192a97){_0xbd5885['sendStatus'](0x194);}return _0x192a97;};}function handleError(_0x1258de,_0x3c0e01){_0x3c0e01=_0x3c0e01||0x1f4;return function(_0x381dc7){logger[_0x2157('0x28')](_0x381dc7[_0x2157('0x29')]);if(_0x381dc7[_0x2157('0x2a')]){delete _0x381dc7['name'];}_0x1258de[_0x2157('0x1f')](_0x3c0e01)[_0x2157('0x2b')](_0x381dc7);};}exports[_0x2157('0x2c')]=function(_0x3c92dd,_0x580d3e){var _0x25b1d8={},_0x2f0557={},_0x362ad2={'count':0x0,'rows':[]};var _0x3785d3=_[_0x2157('0x2d')](db[_0x2157('0x2e')][_0x2157('0x2f')],function(_0x30a8fd){return{'name':_0x30a8fd[_0x2157('0x30')],'type':_0x30a8fd[_0x2157('0x31')][_0x2157('0x32')]};});_0x2f0557[_0x2157('0x33')]=_[_0x2157('0x2d')](_0x3785d3,_0x2157('0x2a'));_0x2f0557[_0x2157('0x34')]=_[_0x2157('0x35')](_0x3c92dd['query']);_0x2f0557[_0x2157('0x36')]=_[_0x2157('0x37')](_0x2f0557[_0x2157('0x33')],_0x2f0557[_0x2157('0x34')]);_0x25b1d8[_0x2157('0x38')]=_[_0x2157('0x37')](_0x2f0557[_0x2157('0x33')],qs[_0x2157('0x39')](_0x3c92dd[_0x2157('0x34')]['fields']));_0x25b1d8['attributes']=_0x25b1d8[_0x2157('0x38')][_0x2157('0x3a')]?_0x25b1d8['attributes']:_0x2f0557[_0x2157('0x33')];if(!_0x3c92dd[_0x2157('0x34')][_0x2157('0x3b')]('nolimit')){_0x25b1d8[_0x2157('0x23')]=qs[_0x2157('0x23')](_0x3c92dd[_0x2157('0x34')]['limit']);_0x25b1d8[_0x2157('0x21')]=qs['offset'](_0x3c92dd[_0x2157('0x34')][_0x2157('0x21')]);}_0x25b1d8[_0x2157('0x3c')]=qs['sort'](_0x3c92dd[_0x2157('0x34')][_0x2157('0x3d')]);_0x25b1d8['where']=qs['filters'](_[_0x2157('0x3e')](_0x3c92dd[_0x2157('0x34')],_0x2f0557['filters']),_0x3785d3);if(_0x3c92dd[_0x2157('0x34')][_0x2157('0x3f')]){_0x25b1d8['where']=_[_0x2157('0x40')](_0x25b1d8['where'],{'$or':_['map'](_0x3785d3,function(_0x1d3452){if(_0x1d3452[_0x2157('0x31')]!=='VIRTUAL'){var _0x558031={};_0x558031[_0x1d3452[_0x2157('0x2a')]]={'$like':'%'+_0x3c92dd[_0x2157('0x34')][_0x2157('0x3f')]+'%'};return _0x558031;}})});}_0x25b1d8=_[_0x2157('0x40')]({},_0x25b1d8,_0x3c92dd[_0x2157('0x41')]);var _0xad41a7={'where':_0x25b1d8[_0x2157('0x42')]};return db['FreshdeskAccount'][_0x2157('0x43')](_0xad41a7)[_0x2157('0x27')](function(_0x25fb55){_0x362ad2[_0x2157('0x43')]=_0x25fb55;if(_0x3c92dd[_0x2157('0x34')][_0x2157('0x44')]){_0x25b1d8['include']=[{'all':!![]}];}return db['FreshdeskAccount']['findAll'](_0x25b1d8);})[_0x2157('0x27')](function(_0x51c1c9){_0x362ad2[_0x2157('0x45')]=_0x51c1c9;return _0x362ad2;})[_0x2157('0x27')](respondWithFilteredResult(_0x580d3e,_0x25b1d8))[_0x2157('0x46')](handleError(_0x580d3e,null));};exports[_0x2157('0x47')]=function(_0x5e08e6,_0x42a7ce){var _0x282a68={'raw':![],'where':{'id':_0x5e08e6[_0x2157('0x48')]['id']}},_0xe01828={};_0xe01828[_0x2157('0x33')]=_[_0x2157('0x35')](db[_0x2157('0x2e')]['rawAttributes']);_0xe01828[_0x2157('0x34')]=_[_0x2157('0x35')](_0x5e08e6['query']);_0xe01828[_0x2157('0x36')]=_[_0x2157('0x37')](_0xe01828[_0x2157('0x33')],_0xe01828['query']);_0x282a68[_0x2157('0x38')]=_[_0x2157('0x37')](_0xe01828[_0x2157('0x33')],qs[_0x2157('0x39')](_0x5e08e6[_0x2157('0x34')]['fields']));_0x282a68[_0x2157('0x38')]=_0x282a68['attributes'][_0x2157('0x3a')]?_0x282a68[_0x2157('0x38')]:_0xe01828[_0x2157('0x33')];if(_0x5e08e6[_0x2157('0x34')][_0x2157('0x44')]){_0x282a68[_0x2157('0x49')]=[{'all':!![]}];}_0x282a68=_['merge']({},_0x282a68,_0x5e08e6[_0x2157('0x41')]);return db[_0x2157('0x2e')][_0x2157('0x4a')](_0x282a68)[_0x2157('0x27')](handleEntityNotFound(_0x42a7ce,null))['then'](respondWithResult(_0x42a7ce,null))[_0x2157('0x46')](handleError(_0x42a7ce,null));};exports[_0x2157('0x4b')]=function(_0x57b33a,_0x2f2792){return db[_0x2157('0x2e')][_0x2157('0x4b')](_0x57b33a['body'],{})[_0x2157('0x27')](respondWithResult(_0x2f2792,0xc9))['catch'](handleError(_0x2f2792,null));};exports[_0x2157('0x26')]=function(_0x3075d6,_0x4bc7f2){if(_0x3075d6[_0x2157('0x4c')]['id']){delete _0x3075d6[_0x2157('0x4c')]['id'];}return db[_0x2157('0x2e')][_0x2157('0x4a')]({'where':{'id':_0x3075d6[_0x2157('0x48')]['id']}})[_0x2157('0x27')](handleEntityNotFound(_0x4bc7f2,null))[_0x2157('0x27')](saveUpdates(_0x3075d6[_0x2157('0x4c')],null))[_0x2157('0x27')](respondWithResult(_0x4bc7f2,null))['catch'](handleError(_0x4bc7f2,null));};exports[_0x2157('0x4d')]=function(_0x243d12,_0x99124a){return db[_0x2157('0x2e')][_0x2157('0x4a')]({'where':{'id':_0x243d12['params']['id']}})[_0x2157('0x27')](handleEntityNotFound(_0x99124a,null))['then'](removeEntity(_0x99124a,null))['catch'](handleError(_0x99124a,null));};exports[_0x2157('0x4e')]=function(_0x5a750f,_0x3397c4,_0x2476af){var _0x29e363={};var _0x58bd00={};var _0x2b2964;var _0x2aba0a;return db[_0x2157('0x2e')][_0x2157('0x4f')]({'where':{'id':_0x5a750f['params']['id']}})[_0x2157('0x27')](handleEntityNotFound(_0x3397c4,null))[_0x2157('0x27')](function(_0x4c9d6f){if(_0x4c9d6f){_0x2b2964=_0x4c9d6f;_0x58bd00[_0x2157('0x33')]=_[_0x2157('0x35')](db[_0x2157('0x50')][_0x2157('0x2f')]);_0x58bd00[_0x2157('0x34')]=_[_0x2157('0x35')](_0x5a750f[_0x2157('0x34')]);_0x58bd00[_0x2157('0x36')]=_['intersection'](_0x58bd00[_0x2157('0x33')],_0x58bd00[_0x2157('0x34')]);_0x29e363[_0x2157('0x38')]=_[_0x2157('0x37')](_0x58bd00[_0x2157('0x33')],qs['fields'](_0x5a750f[_0x2157('0x34')][_0x2157('0x39')]));_0x29e363[_0x2157('0x38')]=_0x29e363[_0x2157('0x38')][_0x2157('0x3a')]?_0x29e363['attributes']:_0x58bd00[_0x2157('0x33')];_0x29e363['order']=qs[_0x2157('0x3d')](_0x5a750f[_0x2157('0x34')][_0x2157('0x3d')]);_0x29e363[_0x2157('0x42')]=qs[_0x2157('0x36')](_['pick'](_0x5a750f['query'],_0x58bd00[_0x2157('0x36')]));if(_0x5a750f['query'][_0x2157('0x3f')]){_0x29e363[_0x2157('0x42')]=_[_0x2157('0x40')](_0x29e363[_0x2157('0x42')],{'$or':_[_0x2157('0x2d')](_0x29e363[_0x2157('0x38')],function(_0x1d64dd){var _0x120f78={};_0x120f78[_0x1d64dd]={'$like':'%'+_0x5a750f[_0x2157('0x34')]['filter']+'%'};return _0x120f78;})});}_0x29e363=_[_0x2157('0x40')]({},_0x29e363,_0x5a750f[_0x2157('0x41')]);return _0x2b2964[_0x2157('0x4e')](_0x29e363);}})['then'](function(_0x169ed7){if(_0x169ed7){_0x2aba0a=_0x169ed7['length'];if(!_0x5a750f[_0x2157('0x34')][_0x2157('0x3b')](_0x2157('0x51'))){_0x29e363['limit']=qs[_0x2157('0x23')](_0x5a750f[_0x2157('0x34')][_0x2157('0x23')]);_0x29e363[_0x2157('0x21')]=qs[_0x2157('0x21')](_0x5a750f[_0x2157('0x34')][_0x2157('0x21')]);}return _0x2b2964[_0x2157('0x4e')](_0x29e363);}})['then'](function(_0x1593bc){if(_0x1593bc){return _0x1593bc?{'count':_0x2aba0a,'rows':_0x1593bc}:null;}})[_0x2157('0x27')](respondWithResult(_0x3397c4,null))['catch'](handleError(_0x3397c4,null));};exports['addConfiguration']=function(_0x47a88d,_0x148abe,_0x2b7cd0){if(_0x47a88d['body']['id']){delete _0x47a88d[_0x2157('0x4c')]['id'];}return db[_0x2157('0x2e')][_0x2157('0x4f')]({'where':{'id':_0x47a88d[_0x2157('0x48')]['id']}})['then'](handleEntityNotFound(_0x148abe,null))[_0x2157('0x27')](function(_0x581ee4){if(_0x581ee4){_0x47a88d[_0x2157('0x4c')]['AccountId']=_0x581ee4['id'];_0x47a88d[_0x2157('0x4c')][_0x2157('0x52')]=integrations['getSubjects'](_0x47a88d[_0x2157('0x4c')][_0x2157('0x53')],_0x47a88d[_0x2157('0x4c')][_0x2157('0x31')]);_0x47a88d[_0x2157('0x4c')]['Descriptions']=integrations[_0x2157('0x54')](_0x47a88d[_0x2157('0x4c')][_0x2157('0x53')],_0x47a88d[_0x2157('0x4c')][_0x2157('0x31')]);return db[_0x2157('0x50')][_0x2157('0x4b')](_0x47a88d[_0x2157('0x4c')],{'include':[{'model':db['FreshdeskField'],'as':'Subjects'},{'model':db['FreshdeskField'],'as':_0x2157('0x55')}]});}return null;})[_0x2157('0x27')](respondWithResult(_0x148abe,null))[_0x2157('0x46')](handleError(_0x148abe,null));};exports[_0x2157('0x56')]=function(_0x504ea4,_0x4f5b97,_0x5313a9){var _0x3f58fc='';return db['FreshdeskAccount'][_0x2157('0x4f')]({'where':{'id':_0x504ea4[_0x2157('0x48')]['id']},'attributes':['id',_0x2157('0x57'),_0x2157('0x58')]})[_0x2157('0x27')](handleEntityNotFound(_0x4f5b97,null))['then'](function(_0x5ce04b){if(_0x5ce04b){_0x3f58fc=_0x5ce04b[_0x2157('0x57')];var _0x3797c9=_0x3f58fc[_0x2157('0x59')](-0x1);if(_0x3797c9==='/'){_0x3f58fc=_0x3f58fc['substring'](0x0,_0x3f58fc[_0x2157('0x5a')](_0x3797c9));}return rp({'method':_0x2157('0x5b'),'uri':util[_0x2157('0x5c')](_0x2157('0x5d'),_0x3f58fc,_0x2157('0x5e')),'headers':{'Authorization':util[_0x2157('0x5c')](_0x2157('0x5f'),new Buffer(util[_0x2157('0x5c')](_0x2157('0x60'),_0x5ce04b[_0x2157('0x58')]))['toString'](_0x2157('0x61')))},'json':!![]});}})[_0x2157('0x27')](function(_0x4f05f6){if(_0x4f05f6){var _0x1d0dc7=[_0x2157('0x62'),'subject',_0x2157('0x63'),_0x2157('0x64'),_0x2157('0x1f'),'priority',_0x2157('0x65'),_0x2157('0x66'),'ticket_type',_0x2157('0x65'),_0x2157('0x67')];_[_0x2157('0x68')](_0x4f05f6,function(_0x29754b){return _0x1d0dc7[_0x2157('0x69')](_0x29754b[_0x2157('0x2a')])||!_0x29754b[_0x2157('0x6a')]&&_0x29754b[_0x2157('0x31')]!==_0x2157('0x6b')&&_0x29754b['type']!==_0x2157('0x6c');});return{'count':_0x4f05f6[_0x2157('0x3a')],'rows':_[_0x2157('0x2d')](_0x4f05f6,function(_0x56eb59){return{'id':_0x56eb59[_0x2157('0x2a')],'name':_0x56eb59[_0x2157('0x6d')],'custom':!_0x56eb59['default'],'options':_0x56eb59[_0x2157('0x6e')]?_[_0x2157('0x2d')](_0x56eb59[_0x2157('0x6e')],function(_0x334683){return{'name':_[_0x2157('0x6f')](_0x334683),'value':_0x334683};}):[]};})};}})['then'](respondWithResult(_0x4f5b97,null))[_0x2157('0x46')](function(_0xdffe92){var _0x354f18=_0x504ea4[_0x2157('0x34')][_0x2157('0x70')]?0x1f4:_0xdffe92[_0x2157('0x71')]||0x1f4;logger[_0x2157('0x28')](_0x2157('0x72'),_0x2157('0x56'),_0x354f18,JSON[_0x2157('0x73')](_0xdffe92));delete _0xdffe92[_0x2157('0x2a')];if(_0x354f18===0x191){_0x354f18=0x190;}_0x4f5b97['status'](_0x354f18)[_0x2157('0x2b')](_0x504ea4[_0x2157('0x34')][_0x2157('0x70')]?{'message':'Wrong\x20credentials','statusCode':_0xdffe92[_0x2157('0x71')]}:_0xdffe92);});};
\ No newline at end of file
index d91cdeb..ad6b30f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0x1f4a=['api','moment','bluebird','request-promise','path','rimraf','./intFreshdeskAccount.attributes','../../components/integrations/configuration','define','int_freshdesk_accounts'];(function(_0xb4947e,_0x39de27){var _0x2af6df=function(_0x308271){while(--_0x308271){_0xb4947e['push'](_0xb4947e['shift']());}};_0x2af6df(++_0x39de27);}(_0x1f4a,0x14a));var _0xa1f4=function(_0xd1d014,_0x5ec312){_0xd1d014=_0xd1d014-0x0;var _0x2670f8=_0x1f4a[_0xd1d014];return _0x2670f8;};'use strict';var _=require('lodash');var util=require('util');var logger=require('../../config/logger')(_0xa1f4('0x0'));var moment=require(_0xa1f4('0x1'));var BPromise=require(_0xa1f4('0x2'));var rp=require(_0xa1f4('0x3'));var fs=require('fs');var path=require(_0xa1f4('0x4'));var rimraf=require(_0xa1f4('0x5'));var config=require('../../config/environment');var attributes=require(_0xa1f4('0x6'));var integrations=require(_0xa1f4('0x7'));module['exports']=function(_0x385ac3,_0x50afe6){return _0x385ac3[_0xa1f4('0x8')]('FreshdeskAccount',attributes,{'tableName':_0xa1f4('0x9'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index d85d954..38c8cb3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0x24e9=['error','message','result','catch','GetFreshdeskAccount','FreshdeskAccount','options','raw','where','attributes','limit','include','map','model','ShowFreshdeskAccount','debug','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','../../config/environment','jayson/promise','http','request','then','info','FreshdeskAccount,\x20%s,\x20%s','request\x20sent','stringify'];(function(_0x2b408a,_0x5c5ed9){var _0x538b42=function(_0x2e0454){while(--_0x2e0454){_0x2b408a['push'](_0x2b408a['shift']());}};_0x538b42(++_0x5c5ed9);}(_0x24e9,0x1a8));var _0x924e=function(_0x1bb58c,_0x2c8a4d){_0x1bb58c=_0x1bb58c-0x0;var _0x277586=_0x24e9[_0x1bb58c];return _0x277586;};'use strict';var _=require(_0x924e('0x0'));var util=require(_0x924e('0x1'));var moment=require(_0x924e('0x2'));var BPromise=require(_0x924e('0x3'));var rs=require(_0x924e('0x4'));var fs=require('fs');var Redis=require(_0x924e('0x5'));var db=require(_0x924e('0x6'))['db'];var utils=require(_0x924e('0x7'));var logger=require(_0x924e('0x8'))('rpc');var config=require(_0x924e('0x9'));var jayson=require(_0x924e('0xa'));var client=jayson['client'][_0x924e('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x577ea6,_0x5b4dd1,_0x172436){return new BPromise(function(_0x6b84c4,_0x3a42ec){return client[_0x924e('0xc')](_0x577ea6,_0x172436)[_0x924e('0xd')](function(_0x371aef){logger[_0x924e('0xe')](_0x924e('0xf'),_0x5b4dd1,'request\x20sent');logger['debug']('FreshdeskAccount,\x20%s,\x20%s,\x20%s',_0x5b4dd1,_0x924e('0x10'),JSON[_0x924e('0x11')](_0x371aef));if(_0x371aef[_0x924e('0x12')]){if(_0x371aef['error']['code']===0x1f4){logger[_0x924e('0x12')]('FreshdeskAccount,\x20%s,\x20%s',_0x5b4dd1,_0x371aef[_0x924e('0x12')][_0x924e('0x13')]);return _0x3a42ec(_0x371aef[_0x924e('0x12')]['message']);}logger[_0x924e('0x12')](_0x924e('0xf'),_0x5b4dd1,_0x371aef['error']['message']);return _0x6b84c4(_0x371aef[_0x924e('0x12')][_0x924e('0x13')]);}else{logger[_0x924e('0xe')](_0x924e('0xf'),_0x5b4dd1,'request\x20sent');_0x6b84c4(_0x371aef[_0x924e('0x14')][_0x924e('0x13')]);}})[_0x924e('0x15')](function(_0x13dd2d){logger[_0x924e('0x12')](_0x924e('0xf'),_0x5b4dd1,_0x13dd2d);_0x3a42ec(_0x13dd2d);});});}exports[_0x924e('0x16')]=function(_0x40ef3d){var _0x400670=this;return new Promise(function(_0x114202,_0x388c19){return db[_0x924e('0x17')]['findAll']({'raw':_0x40ef3d[_0x924e('0x18')]?_0x40ef3d[_0x924e('0x18')][_0x924e('0x19')]===undefined?!![]:![]:!![],'where':_0x40ef3d[_0x924e('0x18')]?_0x40ef3d['options'][_0x924e('0x1a')]||null:null,'attributes':_0x40ef3d['options']?_0x40ef3d[_0x924e('0x18')][_0x924e('0x1b')]||null:null,'limit':_0x40ef3d[_0x924e('0x18')]?_0x40ef3d['options'][_0x924e('0x1c')]||null:null,'include':_0x40ef3d['options']?_0x40ef3d[_0x924e('0x18')][_0x924e('0x1d')]?_[_0x924e('0x1e')](_0x40ef3d[_0x924e('0x18')][_0x924e('0x1d')],function(_0x2fff24){return{'model':db[_0x2fff24[_0x924e('0x1f')]],'as':_0x2fff24['as'],'attributes':_0x2fff24[_0x924e('0x1b')],'include':_0x2fff24[_0x924e('0x1d')]?_[_0x924e('0x1e')](_0x2fff24['include'],function(_0x510b5e){return{'model':db[_0x510b5e['model']],'as':_0x510b5e['as'],'attributes':_0x510b5e[_0x924e('0x1b')],'include':_0x510b5e[_0x924e('0x1d')]?_[_0x924e('0x1e')](_0x510b5e[_0x924e('0x1d')],function(_0x3187b7){return{'model':db[_0x3187b7[_0x924e('0x1f')]],'as':_0x3187b7['as'],'attributes':_0x3187b7[_0x924e('0x1b')]};}):[]};}):[]};}):[]:[]})[_0x924e('0xd')](function(_0x554414){logger['info'](_0x924e('0x16'),_0x40ef3d);logger['debug'](_0x924e('0x16'),_0x40ef3d,JSON[_0x924e('0x11')](_0x554414));_0x114202(_0x554414);})['catch'](function(_0x1b9d84){logger[_0x924e('0x12')](_0x924e('0x16'),_0x1b9d84[_0x924e('0x13')],_0x40ef3d);_0x388c19(_0x400670[_0x924e('0x12')](0x1f4,_0x1b9d84[_0x924e('0x13')]));});});};exports[_0x924e('0x20')]=function(_0x2a68ef){var _0x560b39=this;return new Promise(function(_0x3acabe,_0x1f89be){return db[_0x924e('0x17')]['find']({'raw':_0x2a68ef[_0x924e('0x18')]?_0x2a68ef[_0x924e('0x18')][_0x924e('0x19')]===undefined?!![]:![]:!![],'where':_0x2a68ef[_0x924e('0x18')]?_0x2a68ef[_0x924e('0x18')]['where']||null:null,'attributes':_0x2a68ef[_0x924e('0x18')]?_0x2a68ef['options']['attributes']||null:null,'include':_0x2a68ef['options']?_0x2a68ef[_0x924e('0x18')]['include']?_[_0x924e('0x1e')](_0x2a68ef['options']['include'],function(_0x182f35){return{'model':db[_0x182f35['model']],'as':_0x182f35['as'],'attributes':_0x182f35[_0x924e('0x1b')],'include':_0x182f35['include']?_[_0x924e('0x1e')](_0x182f35[_0x924e('0x1d')],function(_0x2eefd4){return{'model':db[_0x2eefd4['model']],'as':_0x2eefd4['as'],'attributes':_0x2eefd4[_0x924e('0x1b')],'include':_0x2eefd4[_0x924e('0x1d')]?_['map'](_0x2eefd4['include'],function(_0xbfeefb){return{'model':db[_0xbfeefb['model']],'as':_0xbfeefb['as'],'attributes':_0xbfeefb['attributes']};}):[]};}):[]};}):[]:[]})[_0x924e('0xd')](function(_0x46cb71){logger[_0x924e('0xe')](_0x924e('0x20'),_0x2a68ef);logger[_0x924e('0x21')](_0x924e('0x20'),_0x2a68ef,JSON[_0x924e('0x11')](_0x46cb71));_0x3acabe(_0x46cb71);})[_0x924e('0x15')](function(_0x3c9f85){logger[_0x924e('0x12')](_0x924e('0x20'),_0x3c9f85['message'],_0x2a68ef);_0x1f89be(_0x560b39[_0x924e('0x12')](0x1f4,_0x3c9f85[_0x924e('0x13')]));});});};
\ No newline at end of file
index 7457e69..c264eb4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0xe0e8=['/:id/descriptions','getDescriptions','/:id/tags','create','post','setTags','put','destroy','exports','multer','util','path','connect-timeout','express','../../components/interaction/service','../../config/environment','get','isAuthenticated','index','/:id','show','/:id/fields','getFields','/:id/subjects','getSubjects'];(function(_0x76c4a1,_0x2f58a9){var _0x1d2e7e=function(_0x63395d){while(--_0x63395d){_0x76c4a1['push'](_0x76c4a1['shift']());}};_0x1d2e7e(++_0x2f58a9);}(_0xe0e8,0x180));var _0x8e0e=function(_0x150ed8,_0x485fdf){_0x150ed8=_0x150ed8-0x0;var _0x50b3f2=_0xe0e8[_0x150ed8];return _0x50b3f2;};'use strict';var multer=require(_0x8e0e('0x0'));var util=require(_0x8e0e('0x1'));var path=require(_0x8e0e('0x2'));var timeout=require(_0x8e0e('0x3'));var express=require(_0x8e0e('0x4'));var router=express['Router']();var fs_extra=require('fs-extra');var auth=require('../../components/auth/service');var interaction=require(_0x8e0e('0x5'));var config=require(_0x8e0e('0x6'));var controller=require('./intFreshdeskConfiguration.controller');router[_0x8e0e('0x7')]('/',auth[_0x8e0e('0x8')](),controller[_0x8e0e('0x9')]);router[_0x8e0e('0x7')](_0x8e0e('0xa'),auth[_0x8e0e('0x8')](),controller[_0x8e0e('0xb')]);router[_0x8e0e('0x7')](_0x8e0e('0xc'),auth[_0x8e0e('0x8')](),controller[_0x8e0e('0xd')]);router[_0x8e0e('0x7')](_0x8e0e('0xe'),auth[_0x8e0e('0x8')](),controller[_0x8e0e('0xf')]);router[_0x8e0e('0x7')](_0x8e0e('0x10'),auth[_0x8e0e('0x8')](),controller[_0x8e0e('0x11')]);router[_0x8e0e('0x7')](_0x8e0e('0x12'),auth[_0x8e0e('0x8')](),controller['getTags']);router['post']('/',auth[_0x8e0e('0x8')](),controller[_0x8e0e('0x13')]);router[_0x8e0e('0x14')](_0x8e0e('0x12'),auth[_0x8e0e('0x8')](),controller[_0x8e0e('0x15')]);router[_0x8e0e('0x16')](_0x8e0e('0xa'),auth['isAuthenticated'](),controller['update']);router['delete']('/:id',auth[_0x8e0e('0x8')](),controller[_0x8e0e('0x17')]);module[_0x8e0e('0x18')]=router;
\ No newline at end of file
index 9c1cfc3..7905c8e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0xa9e0=['STRING','sequelize'];(function(_0x4b369d,_0x265eb8){var _0x571a98=function(_0x56341a){while(--_0x56341a){_0x4b369d['push'](_0x4b369d['shift']());}};_0x571a98(++_0x265eb8);}(_0xa9e0,0x1ab));var _0x0a9e=function(_0x2dafbe,_0x5d04de){_0x2dafbe=_0x2dafbe-0x0;var _0x58a45a=_0xa9e0[_0x2dafbe];return _0x58a45a;};'use strict';var Sequelize=require(_0x0a9e('0x0'));module['exports']={'name':{'type':Sequelize[_0x0a9e('0x1')]},'description':{'type':Sequelize['STRING']}};
\ No newline at end of file
index ab67580..a5f0071 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0x000e=['../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','json','undefined','limit','count','offset','set','Content-Range','apply','save','then','destroy','error','stack','name','index','map','rawAttributes','type','key','query','filters','intersection','attributes','fields','length','order','sort','pick','filter','where','merge','options','FreshdeskConfiguration','includeAll','include','show','params','keys','model','find','catch','body','update','getFields','FreshdeskField','nolimit','findOne','getSubjects','hasOwnProperty','getDescriptions','getTags','Tag','ids','zip-dir','request-promise','mustache','util','path','to-csv','ejs','squel','jsforce','desk.js','querystring','../../components/auth/service'];(function(_0x4b73a2,_0x40b5fe){var _0x383c66=function(_0x3917ae){while(--_0x3917ae){_0x4b73a2['push'](_0x4b73a2['shift']());}};_0x383c66(++_0x40b5fe);}(_0x000e,0x8c));var _0xe000=function(_0x91f448,_0x1a7753){_0x91f448=_0x91f448-0x0;var _0x47bdc1=_0x000e[_0x91f448];return _0x47bdc1;};'use strict';var emlformat=require('eml-format');var rimraf=require('rimraf');var zipdir=require(_0xe000('0x0'));var jsonpatch=require('fast-json-patch');var rp=require(_0xe000('0x1'));var moment=require('moment');var BPromise=require('bluebird');var Mustache=require(_0xe000('0x2'));var util=require(_0xe000('0x3'));var path=require(_0xe000('0x4'));var sox=require('sox');var csv=require(_0xe000('0x5'));var ejs=require(_0xe000('0x6'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require('lodash');var squel=require(_0xe000('0x7'));var crypto=require('crypto');var jsforce=require(_0xe000('0x8'));var deskjs=require(_0xe000('0x9'));var toCsv=require(_0xe000('0x5'));var querystring=require(_0xe000('0xa'));var Papa=require('papaparse');var Redis=require('ioredis');var authService=require(_0xe000('0xb'));var qs=require('../../components/parsers/qs');var as=require(_0xe000('0xc'));var hardwareService=require(_0xe000('0xd'));var logger=require(_0xe000('0xe'))(_0xe000('0xf'));var utils=require(_0xe000('0x10'));var config=require(_0xe000('0x11'));var licenseUtil=require(_0xe000('0x12'));var db=require(_0xe000('0x13'))['db'];function respondWithStatusCode(_0x3be853,_0x32acfd){_0x32acfd=_0x32acfd||0xcc;return function(_0x29e96e){if(_0x29e96e){return _0x3be853[_0xe000('0x14')](_0x32acfd);}return _0x3be853[_0xe000('0x15')](_0x32acfd)[_0xe000('0x16')]();};}function respondWithResult(_0x512933,_0x301f3d){_0x301f3d=_0x301f3d||0xc8;return function(_0x1d4f5b){if(_0x1d4f5b){return _0x512933['status'](_0x301f3d)[_0xe000('0x17')](_0x1d4f5b);}};}function respondWithFilteredResult(_0x347bca,_0x32b842){return function(_0x39cf9f){if(_0x39cf9f){var _0x29b43a=typeof _0x32b842['offset']===_0xe000('0x18')&&typeof _0x32b842[_0xe000('0x19')]===_0xe000('0x18');var _0x51e524=_0x39cf9f[_0xe000('0x1a')];var _0x334003=_0x29b43a?0x0:_0x32b842[_0xe000('0x1b')];var _0x335065=_0x29b43a?_0x39cf9f[_0xe000('0x1a')]:_0x32b842['offset']+_0x32b842[_0xe000('0x19')];var _0xedc770;if(_0x335065>=_0x51e524){_0x335065=_0x51e524;_0xedc770=0xc8;}else{_0xedc770=0xce;}_0x347bca[_0xe000('0x15')](_0xedc770);return _0x347bca[_0xe000('0x1c')](_0xe000('0x1d'),_0x334003+'-'+_0x335065+'/'+_0x51e524)[_0xe000('0x17')](_0x39cf9f);}return null;};}function patchUpdates(_0x167c5a){return function(_0x55b62c){try{jsonpatch[_0xe000('0x1e')](_0x55b62c,_0x167c5a,!![]);}catch(_0x2e59f8){return BPromise['reject'](_0x2e59f8);}return _0x55b62c[_0xe000('0x1f')]();};}function saveUpdates(_0x56172a,_0x10d761){return function(_0x271892){if(_0x271892){return _0x271892['update'](_0x56172a)[_0xe000('0x20')](function(_0xa2f1b6){return _0xa2f1b6;});}return null;};}function removeEntity(_0xb1ef9b,_0x458d17){return function(_0x176c7f){if(_0x176c7f){return _0x176c7f[_0xe000('0x21')]()[_0xe000('0x20')](function(){_0xb1ef9b[_0xe000('0x15')](0xcc)['end']();});}};}function handleEntityNotFound(_0x4fec9d,_0x341260){return function(_0x189c7f){if(!_0x189c7f){_0x4fec9d[_0xe000('0x14')](0x194);}return _0x189c7f;};}function handleError(_0x194360,_0x2d2f5c){_0x2d2f5c=_0x2d2f5c||0x1f4;return function(_0x3ef91d){logger[_0xe000('0x22')](_0x3ef91d[_0xe000('0x23')]);if(_0x3ef91d[_0xe000('0x24')]){delete _0x3ef91d[_0xe000('0x24')];}_0x194360[_0xe000('0x15')](_0x2d2f5c)['send'](_0x3ef91d);};}exports[_0xe000('0x25')]=function(_0x5a7224,_0x4fea0b){var _0x178879={},_0x24bebc={},_0x54e614={'count':0x0,'rows':[]};var _0x39ff66=_[_0xe000('0x26')](db['FreshdeskConfiguration'][_0xe000('0x27')],function(_0x182ef7){return{'name':_0x182ef7['fieldName'],'type':_0x182ef7[_0xe000('0x28')][_0xe000('0x29')]};});_0x24bebc['model']=_['map'](_0x39ff66,'name');_0x24bebc[_0xe000('0x2a')]=_['keys'](_0x5a7224[_0xe000('0x2a')]);_0x24bebc[_0xe000('0x2b')]=_[_0xe000('0x2c')](_0x24bebc['model'],_0x24bebc[_0xe000('0x2a')]);_0x178879[_0xe000('0x2d')]=_[_0xe000('0x2c')](_0x24bebc['model'],qs[_0xe000('0x2e')](_0x5a7224[_0xe000('0x2a')][_0xe000('0x2e')]));_0x178879[_0xe000('0x2d')]=_0x178879[_0xe000('0x2d')][_0xe000('0x2f')]?_0x178879['attributes']:_0x24bebc['model'];if(!_0x5a7224[_0xe000('0x2a')]['hasOwnProperty']('nolimit')){_0x178879[_0xe000('0x19')]=qs[_0xe000('0x19')](_0x5a7224[_0xe000('0x2a')][_0xe000('0x19')]);_0x178879[_0xe000('0x1b')]=qs[_0xe000('0x1b')](_0x5a7224['query']['offset']);}_0x178879[_0xe000('0x30')]=qs['sort'](_0x5a7224['query'][_0xe000('0x31')]);_0x178879['where']=qs[_0xe000('0x2b')](_[_0xe000('0x32')](_0x5a7224[_0xe000('0x2a')],_0x24bebc[_0xe000('0x2b')]),_0x39ff66);if(_0x5a7224[_0xe000('0x2a')][_0xe000('0x33')]){_0x178879[_0xe000('0x34')]=_[_0xe000('0x35')](_0x178879[_0xe000('0x34')],{'$or':_[_0xe000('0x26')](_0x39ff66,function(_0x54b074){if(_0x54b074[_0xe000('0x28')]!=='VIRTUAL'){var _0x4603f4={};_0x4603f4[_0x54b074[_0xe000('0x24')]]={'$like':'%'+_0x5a7224['query'][_0xe000('0x33')]+'%'};return _0x4603f4;}})});}_0x178879=_['merge']({},_0x178879,_0x5a7224[_0xe000('0x36')]);var _0x3605ce={'where':_0x178879['where']};return db[_0xe000('0x37')][_0xe000('0x1a')](_0x3605ce)[_0xe000('0x20')](function(_0x1cd1e6){_0x54e614[_0xe000('0x1a')]=_0x1cd1e6;if(_0x5a7224[_0xe000('0x2a')][_0xe000('0x38')]){_0x178879[_0xe000('0x39')]=[{'all':!![]}];}return db[_0xe000('0x37')]['findAll'](_0x178879);})[_0xe000('0x20')](function(_0x3f553f){_0x54e614['rows']=_0x3f553f;return _0x54e614;})[_0xe000('0x20')](respondWithFilteredResult(_0x4fea0b,_0x178879))['catch'](handleError(_0x4fea0b,null));};exports[_0xe000('0x3a')]=function(_0x5b1e59,_0x5fc284){var _0x18956b={'raw':![],'where':{'id':_0x5b1e59[_0xe000('0x3b')]['id']}},_0x2cf6e4={};_0x2cf6e4['model']=_[_0xe000('0x3c')](db['FreshdeskConfiguration'][_0xe000('0x27')]);_0x2cf6e4[_0xe000('0x2a')]=_[_0xe000('0x3c')](_0x5b1e59[_0xe000('0x2a')]);_0x2cf6e4[_0xe000('0x2b')]=_[_0xe000('0x2c')](_0x2cf6e4['model'],_0x2cf6e4[_0xe000('0x2a')]);_0x18956b[_0xe000('0x2d')]=_[_0xe000('0x2c')](_0x2cf6e4[_0xe000('0x3d')],qs[_0xe000('0x2e')](_0x5b1e59['query']['fields']));_0x18956b[_0xe000('0x2d')]=_0x18956b['attributes']['length']?_0x18956b[_0xe000('0x2d')]:_0x2cf6e4[_0xe000('0x3d')];if(_0x5b1e59[_0xe000('0x2a')][_0xe000('0x38')]){_0x18956b[_0xe000('0x39')]=[{'all':!![]}];}_0x18956b=_[_0xe000('0x35')]({},_0x18956b,_0x5b1e59[_0xe000('0x36')]);return db[_0xe000('0x37')][_0xe000('0x3e')](_0x18956b)[_0xe000('0x20')](handleEntityNotFound(_0x5fc284,null))['then'](respondWithResult(_0x5fc284,null))[_0xe000('0x3f')](handleError(_0x5fc284,null));};exports['create']=function(_0x49d90c,_0x331e58){return db[_0xe000('0x37')]['create'](_0x49d90c[_0xe000('0x40')],{})[_0xe000('0x20')](respondWithResult(_0x331e58,0xc9))[_0xe000('0x3f')](handleError(_0x331e58,null));};exports[_0xe000('0x41')]=function(_0x32ca00,_0x192550){if(_0x32ca00[_0xe000('0x40')]['id']){delete _0x32ca00[_0xe000('0x40')]['id'];}return db[_0xe000('0x37')][_0xe000('0x3e')]({'where':{'id':_0x32ca00[_0xe000('0x3b')]['id']}})[_0xe000('0x20')](handleEntityNotFound(_0x192550,null))[_0xe000('0x20')](saveUpdates(_0x32ca00[_0xe000('0x40')],null))['then'](respondWithResult(_0x192550,null))[_0xe000('0x3f')](handleError(_0x192550,null));};exports[_0xe000('0x21')]=function(_0x5a4441,_0x1fe3b7){return db[_0xe000('0x37')][_0xe000('0x3e')]({'where':{'id':_0x5a4441[_0xe000('0x3b')]['id']}})['then'](handleEntityNotFound(_0x1fe3b7,null))['then'](removeEntity(_0x1fe3b7,null))['catch'](handleError(_0x1fe3b7,null));};exports[_0xe000('0x42')]=function(_0x5a201c,_0x2e0aa2,_0xc6d4be){var _0x27dcbc={};var _0x187d05={};var _0x3c190b;var _0x4d984d;return db[_0xe000('0x37')]['findOne']({'where':{'id':_0x5a201c[_0xe000('0x3b')]['id']}})[_0xe000('0x20')](handleEntityNotFound(_0x2e0aa2,null))[_0xe000('0x20')](function(_0x419f32){if(_0x419f32){_0x3c190b=_0x419f32;_0x187d05[_0xe000('0x3d')]=_['keys'](db[_0xe000('0x43')][_0xe000('0x27')]);_0x187d05[_0xe000('0x2a')]=_[_0xe000('0x3c')](_0x5a201c['query']);_0x187d05[_0xe000('0x2b')]=_['intersection'](_0x187d05[_0xe000('0x3d')],_0x187d05[_0xe000('0x2a')]);_0x27dcbc[_0xe000('0x2d')]=_[_0xe000('0x2c')](_0x187d05['model'],qs[_0xe000('0x2e')](_0x5a201c[_0xe000('0x2a')][_0xe000('0x2e')]));_0x27dcbc[_0xe000('0x2d')]=_0x27dcbc['attributes'][_0xe000('0x2f')]?_0x27dcbc[_0xe000('0x2d')]:_0x187d05[_0xe000('0x3d')];_0x27dcbc[_0xe000('0x30')]=qs['sort'](_0x5a201c[_0xe000('0x2a')][_0xe000('0x31')]);_0x27dcbc[_0xe000('0x34')]=qs[_0xe000('0x2b')](_['pick'](_0x5a201c[_0xe000('0x2a')],_0x187d05['filters']));if(_0x5a201c[_0xe000('0x2a')][_0xe000('0x33')]){_0x27dcbc[_0xe000('0x34')]=_['merge'](_0x27dcbc[_0xe000('0x34')],{'$or':_[_0xe000('0x26')](_0x27dcbc[_0xe000('0x2d')],function(_0x5d9b39){var _0x15ad39={};_0x15ad39[_0x5d9b39]={'$like':'%'+_0x5a201c['query'][_0xe000('0x33')]+'%'};return _0x15ad39;})});}_0x27dcbc=_[_0xe000('0x35')]({},_0x27dcbc,_0x5a201c['options']);return _0x3c190b[_0xe000('0x42')](_0x27dcbc);}})[_0xe000('0x20')](function(_0x40438d){if(_0x40438d){_0x4d984d=_0x40438d[_0xe000('0x2f')];if(!_0x5a201c[_0xe000('0x2a')]['hasOwnProperty'](_0xe000('0x44'))){_0x27dcbc[_0xe000('0x19')]=qs[_0xe000('0x19')](_0x5a201c[_0xe000('0x2a')][_0xe000('0x19')]);_0x27dcbc['offset']=qs[_0xe000('0x1b')](_0x5a201c[_0xe000('0x2a')][_0xe000('0x1b')]);}return _0x3c190b[_0xe000('0x42')](_0x27dcbc);}})[_0xe000('0x20')](function(_0x3d4cdf){if(_0x3d4cdf){return _0x3d4cdf?{'count':_0x4d984d,'rows':_0x3d4cdf}:null;}})[_0xe000('0x20')](respondWithResult(_0x2e0aa2,null))[_0xe000('0x3f')](handleError(_0x2e0aa2,null));};exports['getSubjects']=function(_0x52d0a3,_0x5a578f,_0x3a5eee){var _0x228ca9={};var _0x4d4e7e={};var _0x47f066;var _0x127e58;return db[_0xe000('0x37')][_0xe000('0x45')]({'where':{'id':_0x52d0a3['params']['id']}})[_0xe000('0x20')](handleEntityNotFound(_0x5a578f,null))[_0xe000('0x20')](function(_0x252acb){if(_0x252acb){_0x47f066=_0x252acb;_0x4d4e7e[_0xe000('0x3d')]=_[_0xe000('0x3c')](db[_0xe000('0x43')]['rawAttributes']);_0x4d4e7e[_0xe000('0x2a')]=_[_0xe000('0x3c')](_0x52d0a3['query']);_0x4d4e7e[_0xe000('0x2b')]=_['intersection'](_0x4d4e7e[_0xe000('0x3d')],_0x4d4e7e[_0xe000('0x2a')]);_0x228ca9[_0xe000('0x2d')]=_['intersection'](_0x4d4e7e['model'],qs['fields'](_0x52d0a3[_0xe000('0x2a')][_0xe000('0x2e')]));_0x228ca9[_0xe000('0x2d')]=_0x228ca9[_0xe000('0x2d')][_0xe000('0x2f')]?_0x228ca9[_0xe000('0x2d')]:_0x4d4e7e[_0xe000('0x3d')];_0x228ca9['order']=qs[_0xe000('0x31')](_0x52d0a3[_0xe000('0x2a')][_0xe000('0x31')]);_0x228ca9[_0xe000('0x34')]=qs['filters'](_[_0xe000('0x32')](_0x52d0a3[_0xe000('0x2a')],_0x4d4e7e[_0xe000('0x2b')]));if(_0x52d0a3[_0xe000('0x2a')][_0xe000('0x33')]){_0x228ca9[_0xe000('0x34')]=_[_0xe000('0x35')](_0x228ca9[_0xe000('0x34')],{'$or':_[_0xe000('0x26')](_0x228ca9[_0xe000('0x2d')],function(_0x2485d1){var _0x1d2a8d={};_0x1d2a8d[_0x2485d1]={'$like':'%'+_0x52d0a3[_0xe000('0x2a')][_0xe000('0x33')]+'%'};return _0x1d2a8d;})});}_0x228ca9=_[_0xe000('0x35')]({},_0x228ca9,_0x52d0a3[_0xe000('0x36')]);return _0x47f066[_0xe000('0x46')](_0x228ca9);}})[_0xe000('0x20')](function(_0x2f3ab0){if(_0x2f3ab0){_0x127e58=_0x2f3ab0['length'];if(!_0x52d0a3[_0xe000('0x2a')][_0xe000('0x47')]('nolimit')){_0x228ca9[_0xe000('0x19')]=qs[_0xe000('0x19')](_0x52d0a3[_0xe000('0x2a')][_0xe000('0x19')]);_0x228ca9[_0xe000('0x1b')]=qs[_0xe000('0x1b')](_0x52d0a3['query']['offset']);}return _0x47f066[_0xe000('0x46')](_0x228ca9);}})['then'](function(_0x24c157){if(_0x24c157){return _0x24c157?{'count':_0x127e58,'rows':_0x24c157}:null;}})['then'](respondWithResult(_0x5a578f,null))[_0xe000('0x3f')](handleError(_0x5a578f,null));};exports['getDescriptions']=function(_0x22258f,_0x4e0699,_0x1f733b){var _0x1fbeed={};var _0xe00d81={};var _0x2af24c;var _0x52695e;return db['FreshdeskConfiguration'][_0xe000('0x45')]({'where':{'id':_0x22258f[_0xe000('0x3b')]['id']}})[_0xe000('0x20')](handleEntityNotFound(_0x4e0699,null))['then'](function(_0x5a3362){if(_0x5a3362){_0x2af24c=_0x5a3362;_0xe00d81[_0xe000('0x3d')]=_[_0xe000('0x3c')](db[_0xe000('0x43')][_0xe000('0x27')]);_0xe00d81['query']=_[_0xe000('0x3c')](_0x22258f[_0xe000('0x2a')]);_0xe00d81[_0xe000('0x2b')]=_[_0xe000('0x2c')](_0xe00d81[_0xe000('0x3d')],_0xe00d81[_0xe000('0x2a')]);_0x1fbeed[_0xe000('0x2d')]=_[_0xe000('0x2c')](_0xe00d81[_0xe000('0x3d')],qs[_0xe000('0x2e')](_0x22258f['query'][_0xe000('0x2e')]));_0x1fbeed[_0xe000('0x2d')]=_0x1fbeed['attributes']['length']?_0x1fbeed[_0xe000('0x2d')]:_0xe00d81[_0xe000('0x3d')];_0x1fbeed[_0xe000('0x30')]=qs['sort'](_0x22258f['query']['sort']);_0x1fbeed[_0xe000('0x34')]=qs[_0xe000('0x2b')](_[_0xe000('0x32')](_0x22258f['query'],_0xe00d81[_0xe000('0x2b')]));if(_0x22258f[_0xe000('0x2a')][_0xe000('0x33')]){_0x1fbeed[_0xe000('0x34')]=_[_0xe000('0x35')](_0x1fbeed[_0xe000('0x34')],{'$or':_[_0xe000('0x26')](_0x1fbeed[_0xe000('0x2d')],function(_0x4d6871){var _0x240604={};_0x240604[_0x4d6871]={'$like':'%'+_0x22258f[_0xe000('0x2a')][_0xe000('0x33')]+'%'};return _0x240604;})});}_0x1fbeed=_[_0xe000('0x35')]({},_0x1fbeed,_0x22258f['options']);return _0x2af24c[_0xe000('0x48')](_0x1fbeed);}})[_0xe000('0x20')](function(_0x492560){if(_0x492560){_0x52695e=_0x492560[_0xe000('0x2f')];if(!_0x22258f['query'][_0xe000('0x47')](_0xe000('0x44'))){_0x1fbeed[_0xe000('0x19')]=qs[_0xe000('0x19')](_0x22258f[_0xe000('0x2a')][_0xe000('0x19')]);_0x1fbeed['offset']=qs[_0xe000('0x1b')](_0x22258f[_0xe000('0x2a')]['offset']);}return _0x2af24c[_0xe000('0x48')](_0x1fbeed);}})[_0xe000('0x20')](function(_0x366055){if(_0x366055){return _0x366055?{'count':_0x52695e,'rows':_0x366055}:null;}})['then'](respondWithResult(_0x4e0699,null))[_0xe000('0x3f')](handleError(_0x4e0699,null));};exports[_0xe000('0x49')]=function(_0x1c96d3,_0x270fd3,_0x530929){var _0x32b907={};var _0x27f5b2={};var _0x53dad6;var _0x925c16;return db[_0xe000('0x37')][_0xe000('0x45')]({'where':{'id':_0x1c96d3[_0xe000('0x3b')]['id']}})[_0xe000('0x20')](handleEntityNotFound(_0x270fd3,null))[_0xe000('0x20')](function(_0xc4ecb0){if(_0xc4ecb0){_0x53dad6=_0xc4ecb0;_0x27f5b2[_0xe000('0x3d')]=_[_0xe000('0x3c')](db[_0xe000('0x4a')][_0xe000('0x27')]);_0x27f5b2[_0xe000('0x2a')]=_[_0xe000('0x3c')](_0x1c96d3[_0xe000('0x2a')]);_0x27f5b2[_0xe000('0x2b')]=_[_0xe000('0x2c')](_0x27f5b2[_0xe000('0x3d')],_0x27f5b2[_0xe000('0x2a')]);_0x32b907[_0xe000('0x2d')]=_['intersection'](_0x27f5b2['model'],qs[_0xe000('0x2e')](_0x1c96d3[_0xe000('0x2a')][_0xe000('0x2e')]));_0x32b907[_0xe000('0x2d')]=_0x32b907[_0xe000('0x2d')][_0xe000('0x2f')]?_0x32b907[_0xe000('0x2d')]:_0x27f5b2['model'];_0x32b907['order']=qs[_0xe000('0x31')](_0x1c96d3['query'][_0xe000('0x31')]);_0x32b907[_0xe000('0x34')]=qs[_0xe000('0x2b')](_['pick'](_0x1c96d3['query'],_0x27f5b2[_0xe000('0x2b')]));if(_0x1c96d3[_0xe000('0x2a')][_0xe000('0x33')]){_0x32b907[_0xe000('0x34')]=_[_0xe000('0x35')](_0x32b907[_0xe000('0x34')],{'$or':_[_0xe000('0x26')](_0x32b907[_0xe000('0x2d')],function(_0x53effe){var _0x56243a={};_0x56243a[_0x53effe]={'$like':'%'+_0x1c96d3[_0xe000('0x2a')][_0xe000('0x33')]+'%'};return _0x56243a;})});}_0x32b907=_[_0xe000('0x35')]({},_0x32b907,_0x1c96d3['options']);return _0x53dad6[_0xe000('0x49')](_0x32b907);}})[_0xe000('0x20')](function(_0x2a2828){if(_0x2a2828){_0x925c16=_0x2a2828[_0xe000('0x2f')];if(!_0x1c96d3[_0xe000('0x2a')][_0xe000('0x47')](_0xe000('0x44'))){_0x32b907[_0xe000('0x19')]=qs['limit'](_0x1c96d3[_0xe000('0x2a')][_0xe000('0x19')]);_0x32b907[_0xe000('0x1b')]=qs['offset'](_0x1c96d3['query']['offset']);}return _0x53dad6['getTags'](_0x32b907);}})[_0xe000('0x20')](function(_0x564e92){if(_0x564e92){return _0x564e92?{'count':_0x925c16,'rows':_0x564e92}:null;}})[_0xe000('0x20')](respondWithResult(_0x270fd3,null))[_0xe000('0x3f')](handleError(_0x270fd3,null));};exports['setTags']=function(_0x276029,_0x10b16d,_0x1732fe){if(_0x276029[_0xe000('0x40')]['id']){delete _0x276029[_0xe000('0x40')]['id'];}return db[_0xe000('0x37')][_0xe000('0x45')]({'where':{'id':_0x276029[_0xe000('0x3b')]['id']}})[_0xe000('0x20')](handleEntityNotFound(_0x10b16d,null))[_0xe000('0x20')](function(_0x1965f1){if(_0x1965f1){return _0x1965f1['setTags'](_0x276029['body'][_0xe000('0x4b')]||[]);}return null;})[_0xe000('0x20')](respondWithResult(_0x10b16d,null))['catch'](handleError(_0x10b16d,null));};
\ No newline at end of file
index 17d062f..31fd95c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0x4fea=['util','../../config/logger','api','bluebird','request-promise','path','../../config/environment','./intFreshdeskConfiguration.attributes','exports','FreshdeskConfiguration','int_freshdesk_configurations'];(function(_0x4081e9,_0x157feb){var _0x35cf25=function(_0x3952e0){while(--_0x3952e0){_0x4081e9['push'](_0x4081e9['shift']());}};_0x35cf25(++_0x157feb);}(_0x4fea,0x1ce));var _0xa4fe=function(_0x15c538,_0x4623aa){_0x15c538=_0x15c538-0x0;var _0x1ec75e=_0x4fea[_0x15c538];return _0x1ec75e;};'use strict';var _=require('lodash');var util=require(_0xa4fe('0x0'));var logger=require(_0xa4fe('0x1'))(_0xa4fe('0x2'));var moment=require('moment');var BPromise=require(_0xa4fe('0x3'));var rp=require(_0xa4fe('0x4'));var fs=require('fs');var path=require(_0xa4fe('0x5'));var rimraf=require('rimraf');var config=require(_0xa4fe('0x6'));var attributes=require(_0xa4fe('0x7'));module[_0xa4fe('0x8')]=function(_0xde96f5,_0x3c9c2b){return _0xde96f5['define'](_0xa4fe('0x9'),attributes,{'tableName':_0xa4fe('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 1d0b204..722e2cc 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0x74a4=['rpc','../../config/environment','jayson/promise','client','http','info','FreshdeskConfiguration,\x20%s,\x20%s','request\x20sent','debug','FreshdeskConfiguration,\x20%s,\x20%s,\x20%s','stringify','code','message','error','result','catch','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger'];(function(_0xaa1b3e,_0x47d976){var _0x454d7d=function(_0x575b32){while(--_0x575b32){_0xaa1b3e['push'](_0xaa1b3e['shift']());}};_0x454d7d(++_0x47d976);}(_0x74a4,0x83));var _0x474a=function(_0x41ed1d,_0xf2fc3c){_0x41ed1d=_0x41ed1d-0x0;var _0x1f2fa7=_0x74a4[_0x41ed1d];return _0x1f2fa7;};'use strict';var _=require('lodash');var util=require('util');var moment=require(_0x474a('0x0'));var BPromise=require(_0x474a('0x1'));var rs=require(_0x474a('0x2'));var fs=require('fs');var Redis=require(_0x474a('0x3'));var db=require(_0x474a('0x4'))['db'];var utils=require(_0x474a('0x5'));var logger=require(_0x474a('0x6'))(_0x474a('0x7'));var config=require(_0x474a('0x8'));var jayson=require(_0x474a('0x9'));var client=jayson[_0x474a('0xa')][_0x474a('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x14ad3b,_0x1eae7c,_0x4f5cf1){return new BPromise(function(_0x1f63de,_0x5a2583){return client['request'](_0x14ad3b,_0x4f5cf1)['then'](function(_0x549120){logger[_0x474a('0xc')](_0x474a('0xd'),_0x1eae7c,_0x474a('0xe'));logger[_0x474a('0xf')](_0x474a('0x10'),_0x1eae7c,_0x474a('0xe'),JSON[_0x474a('0x11')](_0x549120));if(_0x549120['error']){if(_0x549120['error'][_0x474a('0x12')]===0x1f4){logger['error']('FreshdeskConfiguration,\x20%s,\x20%s',_0x1eae7c,_0x549120['error'][_0x474a('0x13')]);return _0x5a2583(_0x549120[_0x474a('0x14')]['message']);}logger[_0x474a('0x14')](_0x474a('0xd'),_0x1eae7c,_0x549120[_0x474a('0x14')][_0x474a('0x13')]);return _0x1f63de(_0x549120[_0x474a('0x14')][_0x474a('0x13')]);}else{logger[_0x474a('0xc')](_0x474a('0xd'),_0x1eae7c,_0x474a('0xe'));_0x1f63de(_0x549120[_0x474a('0x15')][_0x474a('0x13')]);}})[_0x474a('0x16')](function(_0xc34975){logger['error'](_0x474a('0xd'),_0x1eae7c,_0xc34975);_0x5a2583(_0xc34975);});});}
\ No newline at end of file
index 3209681..c033c87 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0x85fc=['multer','util','path','express','fs-extra','../../components/auth/service','../../config/environment','./intFreshdeskField.controller','get','isAuthenticated','/:id','show','post','create','put','update','destroy','exports'];(function(_0x4172a2,_0x5865b9){var _0x2dfcdd=function(_0x40a07e){while(--_0x40a07e){_0x4172a2['push'](_0x4172a2['shift']());}};_0x2dfcdd(++_0x5865b9);}(_0x85fc,0xb4));var _0xc85f=function(_0x2da7b4,_0x1fc7e4){_0x2da7b4=_0x2da7b4-0x0;var _0x671485=_0x85fc[_0x2da7b4];return _0x671485;};'use strict';var multer=require(_0xc85f('0x0'));var util=require(_0xc85f('0x1'));var path=require(_0xc85f('0x2'));var timeout=require('connect-timeout');var express=require(_0xc85f('0x3'));var router=express['Router']();var fs_extra=require(_0xc85f('0x4'));var auth=require(_0xc85f('0x5'));var interaction=require('../../components/interaction/service');var config=require(_0xc85f('0x6'));var controller=require(_0xc85f('0x7'));router[_0xc85f('0x8')]('/',auth[_0xc85f('0x9')](),controller['index']);router[_0xc85f('0x8')](_0xc85f('0xa'),auth['isAuthenticated'](),controller[_0xc85f('0xb')]);router[_0xc85f('0xc')]('/',auth[_0xc85f('0x9')](),controller[_0xc85f('0xd')]);router[_0xc85f('0xe')]('/:id',auth['isAuthenticated'](),controller[_0xc85f('0xf')]);router['delete'](_0xc85f('0xa'),auth['isAuthenticated'](),controller[_0xc85f('0x10')]);module[_0xc85f('0x11')]=router;
\ No newline at end of file
index 754fa24..6c73ce6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0x2c23=['keyValue','STRING','BOOLEAN','sequelize','exports','ENUM','string','variable','customVariable'];(function(_0xcdba8a,_0x42175f){var _0x1522a9=function(_0x5b0724){while(--_0x5b0724){_0xcdba8a['push'](_0xcdba8a['shift']());}};_0x1522a9(++_0x42175f);}(_0x2c23,0xdb));var _0x32c2=function(_0x436985,_0x2e7f0b){_0x436985=_0x436985-0x0;var _0x2a8d4d=_0x2c23[_0x436985];return _0x2a8d4d;};'use strict';var Sequelize=require(_0x32c2('0x0'));module[_0x32c2('0x1')]={'type':{'type':Sequelize[_0x32c2('0x2')](_0x32c2('0x3'),_0x32c2('0x4'),_0x32c2('0x5'),_0x32c2('0x6'),'picklist'),'defaultValue':'string'},'content':{'type':Sequelize[_0x32c2('0x7')]},'key':{'type':Sequelize[_0x32c2('0x7')]},'keyType':{'type':Sequelize[_0x32c2('0x2')]('string',_0x32c2('0x4'),_0x32c2('0x5'))},'keyContent':{'type':Sequelize['STRING']},'idField':{'type':Sequelize[_0x32c2('0x7')]},'nameField':{'type':Sequelize[_0x32c2('0x7')]},'customField':{'type':Sequelize[_0x32c2('0x8')],'defaultValue':!![]},'variableName':{'type':Sequelize[_0x32c2('0x7')]}};
\ No newline at end of file
index 8e21a43..c970793 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0x7d98=['pick','filter','merge','where','include','FreshdeskField','findAll','rows','show','rawAttributes','create','body','catch','find','params','eml-format','zip-dir','fast-json-patch','request-promise','moment','mustache','util','sox','lodash','squel','crypto','desk.js','to-csv','querystring','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','undefined','limit','count','offset','Content-Range','json','reject','save','update','then','destroy','error','name','send','fieldName','key','map','query','keys','filters','model','attributes','intersection','fields','length','hasOwnProperty','nolimit','order','sort'];(function(_0x5ad190,_0xd39c9e){var _0x518ed3=function(_0x57f03a){while(--_0x57f03a){_0x5ad190['push'](_0x5ad190['shift']());}};_0x518ed3(++_0xd39c9e);}(_0x7d98,0xe7));var _0x87d9=function(_0x2f87cd,_0xcaf299){_0x2f87cd=_0x2f87cd-0x0;var _0x5d7eda=_0x7d98[_0x2f87cd];return _0x5d7eda;};'use strict';var emlformat=require(_0x87d9('0x0'));var rimraf=require('rimraf');var zipdir=require(_0x87d9('0x1'));var jsonpatch=require(_0x87d9('0x2'));var rp=require(_0x87d9('0x3'));var moment=require(_0x87d9('0x4'));var BPromise=require('bluebird');var Mustache=require(_0x87d9('0x5'));var util=require(_0x87d9('0x6'));var path=require('path');var sox=require(_0x87d9('0x7'));var csv=require('to-csv');var ejs=require('ejs');var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x87d9('0x8'));var squel=require(_0x87d9('0x9'));var crypto=require(_0x87d9('0xa'));var jsforce=require('jsforce');var deskjs=require(_0x87d9('0xb'));var toCsv=require(_0x87d9('0xc'));var querystring=require(_0x87d9('0xd'));var Papa=require('papaparse');var Redis=require(_0x87d9('0xe'));var authService=require(_0x87d9('0xf'));var qs=require(_0x87d9('0x10'));var as=require(_0x87d9('0x11'));var hardwareService=require(_0x87d9('0x12'));var logger=require(_0x87d9('0x13'))(_0x87d9('0x14'));var utils=require(_0x87d9('0x15'));var config=require(_0x87d9('0x16'));var licenseUtil=require(_0x87d9('0x17'));var db=require(_0x87d9('0x18'))['db'];function respondWithStatusCode(_0x22f32d,_0x38f33e){_0x38f33e=_0x38f33e||0xcc;return function(_0x22758){if(_0x22758){return _0x22f32d[_0x87d9('0x19')](_0x38f33e);}return _0x22f32d[_0x87d9('0x1a')](_0x38f33e)[_0x87d9('0x1b')]();};}function respondWithResult(_0x185401,_0x380836){_0x380836=_0x380836||0xc8;return function(_0x27d61d){if(_0x27d61d){return _0x185401['status'](_0x380836)['json'](_0x27d61d);}};}function respondWithFilteredResult(_0x9e9e53,_0xaa910c){return function(_0x3231e7){if(_0x3231e7){var _0x501d32=typeof _0xaa910c['offset']===_0x87d9('0x1c')&&typeof _0xaa910c[_0x87d9('0x1d')]===_0x87d9('0x1c');var _0x23ae47=_0x3231e7[_0x87d9('0x1e')];var _0xebc1eb=_0x501d32?0x0:_0xaa910c[_0x87d9('0x1f')];var _0x1f33a3=_0x501d32?_0x3231e7[_0x87d9('0x1e')]:_0xaa910c[_0x87d9('0x1f')]+_0xaa910c[_0x87d9('0x1d')];var _0x5d6da1;if(_0x1f33a3>=_0x23ae47){_0x1f33a3=_0x23ae47;_0x5d6da1=0xc8;}else{_0x5d6da1=0xce;}_0x9e9e53[_0x87d9('0x1a')](_0x5d6da1);return _0x9e9e53['set'](_0x87d9('0x20'),_0xebc1eb+'-'+_0x1f33a3+'/'+_0x23ae47)[_0x87d9('0x21')](_0x3231e7);}return null;};}function patchUpdates(_0x334d31){return function(_0x57bef6){try{jsonpatch['apply'](_0x57bef6,_0x334d31,!![]);}catch(_0x545241){return BPromise[_0x87d9('0x22')](_0x545241);}return _0x57bef6[_0x87d9('0x23')]();};}function saveUpdates(_0x28aaaa,_0x6ab839){return function(_0xc82b02){if(_0xc82b02){return _0xc82b02[_0x87d9('0x24')](_0x28aaaa)[_0x87d9('0x25')](function(_0x3b24e7){return _0x3b24e7;});}return null;};}function removeEntity(_0x1c550c,_0x4c0f7a){return function(_0x31e1b2){if(_0x31e1b2){return _0x31e1b2[_0x87d9('0x26')]()[_0x87d9('0x25')](function(){_0x1c550c[_0x87d9('0x1a')](0xcc)[_0x87d9('0x1b')]();});}};}function handleEntityNotFound(_0x340462,_0x3641c8){return function(_0x32b83f){if(!_0x32b83f){_0x340462['sendStatus'](0x194);}return _0x32b83f;};}function handleError(_0x8b1ab7,_0x600404){_0x600404=_0x600404||0x1f4;return function(_0x2f63fa){logger[_0x87d9('0x27')](_0x2f63fa['stack']);if(_0x2f63fa[_0x87d9('0x28')]){delete _0x2f63fa[_0x87d9('0x28')];}_0x8b1ab7[_0x87d9('0x1a')](_0x600404)[_0x87d9('0x29')](_0x2f63fa);};}exports['index']=function(_0x21916a,_0x3c0283){var _0x501c5={},_0x5e1b55={},_0x1d04a9={'count':0x0,'rows':[]};var _0x22a401=_['map'](db['FreshdeskField']['rawAttributes'],function(_0x31122b){return{'name':_0x31122b[_0x87d9('0x2a')],'type':_0x31122b['type'][_0x87d9('0x2b')]};});_0x5e1b55['model']=_[_0x87d9('0x2c')](_0x22a401,'name');_0x5e1b55[_0x87d9('0x2d')]=_[_0x87d9('0x2e')](_0x21916a['query']);_0x5e1b55[_0x87d9('0x2f')]=_['intersection'](_0x5e1b55[_0x87d9('0x30')],_0x5e1b55[_0x87d9('0x2d')]);_0x501c5[_0x87d9('0x31')]=_[_0x87d9('0x32')](_0x5e1b55[_0x87d9('0x30')],qs[_0x87d9('0x33')](_0x21916a['query'][_0x87d9('0x33')]));_0x501c5[_0x87d9('0x31')]=_0x501c5[_0x87d9('0x31')][_0x87d9('0x34')]?_0x501c5[_0x87d9('0x31')]:_0x5e1b55[_0x87d9('0x30')];if(!_0x21916a[_0x87d9('0x2d')][_0x87d9('0x35')](_0x87d9('0x36'))){_0x501c5['limit']=qs[_0x87d9('0x1d')](_0x21916a[_0x87d9('0x2d')][_0x87d9('0x1d')]);_0x501c5[_0x87d9('0x1f')]=qs[_0x87d9('0x1f')](_0x21916a['query'][_0x87d9('0x1f')]);}_0x501c5[_0x87d9('0x37')]=qs[_0x87d9('0x38')](_0x21916a['query'][_0x87d9('0x38')]);_0x501c5['where']=qs[_0x87d9('0x2f')](_[_0x87d9('0x39')](_0x21916a[_0x87d9('0x2d')],_0x5e1b55[_0x87d9('0x2f')]),_0x22a401);if(_0x21916a['query'][_0x87d9('0x3a')]){_0x501c5['where']=_[_0x87d9('0x3b')](_0x501c5[_0x87d9('0x3c')],{'$or':_[_0x87d9('0x2c')](_0x22a401,function(_0x1af8eb){if(_0x1af8eb['type']!=='VIRTUAL'){var _0x2063de={};_0x2063de[_0x1af8eb['name']]={'$like':'%'+_0x21916a[_0x87d9('0x2d')]['filter']+'%'};return _0x2063de;}})});}_0x501c5=_[_0x87d9('0x3b')]({},_0x501c5,_0x21916a['options']);var _0xdf56e8={'where':_0x501c5[_0x87d9('0x3c')]};return db['FreshdeskField'][_0x87d9('0x1e')](_0xdf56e8)['then'](function(_0x4bc1ba){_0x1d04a9['count']=_0x4bc1ba;if(_0x21916a[_0x87d9('0x2d')]['includeAll']){_0x501c5[_0x87d9('0x3d')]=[{'all':!![]}];}return db[_0x87d9('0x3e')][_0x87d9('0x3f')](_0x501c5);})['then'](function(_0x915f05){_0x1d04a9[_0x87d9('0x40')]=_0x915f05;return _0x1d04a9;})[_0x87d9('0x25')](respondWithFilteredResult(_0x3c0283,_0x501c5))['catch'](handleError(_0x3c0283,null));};exports[_0x87d9('0x41')]=function(_0x58ec85,_0x5c2db5){var _0x59338e={'raw':!![],'where':{'id':_0x58ec85['params']['id']}},_0x39e807={};_0x39e807['model']=_[_0x87d9('0x2e')](db[_0x87d9('0x3e')][_0x87d9('0x42')]);_0x39e807[_0x87d9('0x2d')]=_[_0x87d9('0x2e')](_0x58ec85['query']);_0x39e807[_0x87d9('0x2f')]=_[_0x87d9('0x32')](_0x39e807['model'],_0x39e807['query']);_0x59338e[_0x87d9('0x31')]=_[_0x87d9('0x32')](_0x39e807[_0x87d9('0x30')],qs[_0x87d9('0x33')](_0x58ec85[_0x87d9('0x2d')][_0x87d9('0x33')]));_0x59338e[_0x87d9('0x31')]=_0x59338e[_0x87d9('0x31')]['length']?_0x59338e[_0x87d9('0x31')]:_0x39e807[_0x87d9('0x30')];if(_0x58ec85['query']['includeAll']){_0x59338e[_0x87d9('0x3d')]=[{'all':!![]}];}_0x59338e=_[_0x87d9('0x3b')]({},_0x59338e,_0x58ec85['options']);return db[_0x87d9('0x3e')]['find'](_0x59338e)['then'](handleEntityNotFound(_0x5c2db5,null))['then'](respondWithResult(_0x5c2db5,null))['catch'](handleError(_0x5c2db5,null));};exports[_0x87d9('0x43')]=function(_0x101446,_0x533a74){return db[_0x87d9('0x3e')][_0x87d9('0x43')](_0x101446[_0x87d9('0x44')],{})['then'](respondWithResult(_0x533a74,0xc9))[_0x87d9('0x45')](handleError(_0x533a74,null));};exports[_0x87d9('0x24')]=function(_0x2d4766,_0x384273){if(_0x2d4766[_0x87d9('0x44')]['id']){delete _0x2d4766[_0x87d9('0x44')]['id'];}return db['FreshdeskField'][_0x87d9('0x46')]({'where':{'id':_0x2d4766['params']['id']}})['then'](handleEntityNotFound(_0x384273,null))[_0x87d9('0x25')](saveUpdates(_0x2d4766[_0x87d9('0x44')],null))[_0x87d9('0x25')](respondWithResult(_0x384273,null))[_0x87d9('0x45')](handleError(_0x384273,null));};exports[_0x87d9('0x26')]=function(_0x4fdfa9,_0x4558f5){return db[_0x87d9('0x3e')][_0x87d9('0x46')]({'where':{'id':_0x4fdfa9[_0x87d9('0x47')]['id']}})['then'](handleEntityNotFound(_0x4558f5,null))[_0x87d9('0x25')](removeEntity(_0x4558f5,null))[_0x87d9('0x45')](handleError(_0x4558f5,null));};
\ No newline at end of file
index 6f1e6a4..6606925 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0xd96b=['rimraf','../../config/environment','./intFreshdeskField.attributes','exports','define','FreshdeskField','int_freshdesk_fields','idField','FieldId','lodash','util','../../config/logger','moment','bluebird','request-promise','path'];(function(_0x33f4b6,_0x2acab5){var _0x4a05d9=function(_0x3add27){while(--_0x3add27){_0x33f4b6['push'](_0x33f4b6['shift']());}};_0x4a05d9(++_0x2acab5);}(_0xd96b,0x109));var _0xbd96=function(_0x37b36d,_0x156fe6){_0x37b36d=_0x37b36d-0x0;var _0x419c06=_0xd96b[_0x37b36d];return _0x419c06;};'use strict';var _=require(_0xbd96('0x0'));var util=require(_0xbd96('0x1'));var logger=require(_0xbd96('0x2'))('api');var moment=require(_0xbd96('0x3'));var BPromise=require(_0xbd96('0x4'));var rp=require(_0xbd96('0x5'));var fs=require('fs');var path=require(_0xbd96('0x6'));var rimraf=require(_0xbd96('0x7'));var config=require(_0xbd96('0x8'));var attributes=require(_0xbd96('0x9'));module[_0xbd96('0xa')]=function(_0x1f4dac,_0x3958a8){return _0x1f4dac[_0xbd96('0xb')](_0xbd96('0xc'),attributes,{'tableName':_0xbd96('0xd'),'paranoid':![],'indexes':[{'name':'freshdesk_unique_index','fields':[_0xbd96('0xe'),_0xbd96('0xf')],'unique':!![]}],'timestamps':!![]});};
\ No newline at end of file
index c785f7e..405ef07 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0x5db9=['../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','then','FreshdeskField,\x20%s,\x20%s','request\x20sent','FreshdeskField,\x20%s,\x20%s,\x20%s','stringify','error','message','result','catch','lodash','util','moment','ioredis'];(function(_0x3c6f16,_0x1e4f5d){var _0x110856=function(_0x10e5d9){while(--_0x10e5d9){_0x3c6f16['push'](_0x3c6f16['shift']());}};_0x110856(++_0x1e4f5d);}(_0x5db9,0x1f4));var _0x95db=function(_0x3dfd0e,_0x59e8ab){_0x3dfd0e=_0x3dfd0e-0x0;var _0x1f2d90=_0x5db9[_0x3dfd0e];return _0x1f2d90;};'use strict';var _=require(_0x95db('0x0'));var util=require(_0x95db('0x1'));var moment=require(_0x95db('0x2'));var BPromise=require('bluebird');var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x95db('0x3'));var db=require(_0x95db('0x4'))['db'];var utils=require(_0x95db('0x5'));var logger=require(_0x95db('0x6'))(_0x95db('0x7'));var config=require(_0x95db('0x8'));var jayson=require(_0x95db('0x9'));var client=jayson[_0x95db('0xa')][_0x95db('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x115c35,_0x3e6167,_0x5f2c24){return new BPromise(function(_0x569bec,_0x399808){return client['request'](_0x115c35,_0x5f2c24)[_0x95db('0xc')](function(_0x42a82d){logger['info'](_0x95db('0xd'),_0x3e6167,_0x95db('0xe'));logger['debug'](_0x95db('0xf'),_0x3e6167,_0x95db('0xe'),JSON[_0x95db('0x10')](_0x42a82d));if(_0x42a82d[_0x95db('0x11')]){if(_0x42a82d[_0x95db('0x11')]['code']===0x1f4){logger[_0x95db('0x11')](_0x95db('0xd'),_0x3e6167,_0x42a82d[_0x95db('0x11')][_0x95db('0x12')]);return _0x399808(_0x42a82d[_0x95db('0x11')]['message']);}logger['error'](_0x95db('0xd'),_0x3e6167,_0x42a82d[_0x95db('0x11')][_0x95db('0x12')]);return _0x569bec(_0x42a82d[_0x95db('0x11')][_0x95db('0x12')]);}else{logger['info'](_0x95db('0xd'),_0x3e6167,_0x95db('0xe'));_0x569bec(_0x42a82d[_0x95db('0x13')][_0x95db('0x12')]);}})[_0x95db('0x14')](function(_0x3885bf){logger['error'](_0x95db('0xd'),_0x3e6167,_0x3885bf);_0x399808(_0x3885bf);});});}
\ No newline at end of file
index 77140fb..176dc7f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0x282b=['../../config/environment','./intFreshsalesAccount.controller','get','isAuthenticated','index','show','getConfigurations','/:id/fields','post','create','/:id/configurations','put','/:id','update','delete','exports','multer','util','path','connect-timeout','express','../../components/auth/service'];(function(_0x5e2152,_0x172f3d){var _0x5ddcf6=function(_0x30a5cc){while(--_0x30a5cc){_0x5e2152['push'](_0x5e2152['shift']());}};_0x5ddcf6(++_0x172f3d);}(_0x282b,0xec));var _0xb282=function(_0x43f21e,_0x5b6c18){_0x43f21e=_0x43f21e-0x0;var _0x146653=_0x282b[_0x43f21e];return _0x146653;};'use strict';var multer=require(_0xb282('0x0'));var util=require(_0xb282('0x1'));var path=require(_0xb282('0x2'));var timeout=require(_0xb282('0x3'));var express=require(_0xb282('0x4'));var router=express['Router']();var fs_extra=require('fs-extra');var auth=require(_0xb282('0x5'));var interaction=require('../../components/interaction/service');var config=require(_0xb282('0x6'));var controller=require(_0xb282('0x7'));router[_0xb282('0x8')]('/',auth[_0xb282('0x9')](),controller[_0xb282('0xa')]);router[_0xb282('0x8')]('/:id',auth['isAuthenticated'](),controller[_0xb282('0xb')]);router[_0xb282('0x8')]('/:id/configurations',auth[_0xb282('0x9')](),controller[_0xb282('0xc')]);router[_0xb282('0x8')](_0xb282('0xd'),auth['isAuthenticated'](),controller['getFields']);router[_0xb282('0xe')]('/',auth[_0xb282('0x9')](),controller[_0xb282('0xf')]);router[_0xb282('0xe')](_0xb282('0x10'),auth['isAuthenticated'](),controller['addConfiguration']);router[_0xb282('0x11')](_0xb282('0x12'),auth[_0xb282('0x9')](),controller[_0xb282('0x13')]);router[_0xb282('0x14')]('/:id',auth[_0xb282('0x9')](),controller['destroy']);module[_0xb282('0x15')]=router;
\ No newline at end of file
index a87335f..6a373fc 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0xef0f=['sequelize','STRING','remoteUri'];(function(_0xfe8833,_0x54ae1a){var _0x57d832=function(_0x356163){while(--_0x356163){_0xfe8833['push'](_0xfe8833['shift']());}};_0x57d832(++_0x54ae1a);}(_0xef0f,0x168));var _0xfef0=function(_0xfe112,_0x5c99ac){_0xfe112=_0xfe112-0x0;var _0x4521d2=_0xef0f[_0xfe112];return _0x4521d2;};'use strict';var Sequelize=require(_0xfef0('0x0'));module['exports']={'name':{'type':Sequelize[_0xfef0('0x1')]},'description':{'type':Sequelize[_0xfef0('0x1')]},'username':{'type':Sequelize[_0xfef0('0x1')],'unique':'username'},'apiKey':{'type':Sequelize[_0xfef0('0x1')]},'remoteUri':{'type':Sequelize[_0xfef0('0x1')],'unique':_0xfef0('0x2')},'serverUrl':{'type':Sequelize['STRING'],'allowNull':![]}};
\ No newline at end of file
index 19bb7d5..ac1d9ec 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0xcd9f=['lodash','crypto','jsforce','desk.js','to-csv','querystring','papaparse','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/environment','../../config/license/util','sendStatus','end','status','json','offset','undefined','limit','count','set','Content-Range','apply','save','then','error','name','send','index','fieldName','type','model','query','keys','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','pick','where','map','filter','FreshsalesAccount','includeAll','include','findAll','catch','show','rawAttributes','merge','options','body','params','destroy','find','FreshsalesConfiguration','getConfigurations','addConfiguration','findOne','AccountId','Subjects','getSubjects','Descriptions','channel','FreshsalesField','getFields','username','remoteUri','apiKey','slice','format','/api/selector/owners','Token\x20token=','users','email','Requested\x20Resource\x20not\x20Found','test','statusCode','getFields,\x20%s,\x20%s,\x20%s','Wrong\x20credentials','eml-format','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','ejs'];(function(_0x2f6c98,_0x4629d7){var _0x1af38a=function(_0x35c2b0){while(--_0x35c2b0){_0x2f6c98['push'](_0x2f6c98['shift']());}};_0x1af38a(++_0x4629d7);}(_0xcd9f,0x11b));var _0xfcd9=function(_0x4d975b,_0x416926){_0x4d975b=_0x4d975b-0x0;var _0x47f833=_0xcd9f[_0x4d975b];return _0x47f833;};'use strict';var emlformat=require(_0xfcd9('0x0'));var rimraf=require('rimraf');var zipdir=require(_0xfcd9('0x1'));var jsonpatch=require(_0xfcd9('0x2'));var rp=require(_0xfcd9('0x3'));var moment=require(_0xfcd9('0x4'));var BPromise=require(_0xfcd9('0x5'));var Mustache=require(_0xfcd9('0x6'));var util=require(_0xfcd9('0x7'));var path=require(_0xfcd9('0x8'));var sox=require(_0xfcd9('0x9'));var csv=require('to-csv');var ejs=require(_0xfcd9('0xa'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0xfcd9('0xb'));var squel=require('squel');var crypto=require(_0xfcd9('0xc'));var jsforce=require(_0xfcd9('0xd'));var deskjs=require(_0xfcd9('0xe'));var toCsv=require(_0xfcd9('0xf'));var querystring=require(_0xfcd9('0x10'));var Papa=require(_0xfcd9('0x11'));var Redis=require('ioredis');var authService=require('../../components/auth/service');var qs=require(_0xfcd9('0x12'));var as=require(_0xfcd9('0x13'));var hardwareService=require(_0xfcd9('0x14'));var logger=require(_0xfcd9('0x15'))(_0xfcd9('0x16'));var utils=require('../../config/utils');var config=require(_0xfcd9('0x17'));var licenseUtil=require(_0xfcd9('0x18'));var db=require('../../mysqldb')['db'];var integrations=require('../../components/integrations/configuration');function respondWithStatusCode(_0xead866,_0x10e478){_0x10e478=_0x10e478||0xcc;return function(_0x574354){if(_0x574354){return _0xead866[_0xfcd9('0x19')](_0x10e478);}return _0xead866['status'](_0x10e478)[_0xfcd9('0x1a')]();};}function respondWithResult(_0x5422d5,_0xb97480){_0xb97480=_0xb97480||0xc8;return function(_0x3d14c1){if(_0x3d14c1){return _0x5422d5[_0xfcd9('0x1b')](_0xb97480)[_0xfcd9('0x1c')](_0x3d14c1);}};}function respondWithFilteredResult(_0x5732f9,_0x4e46f2){return function(_0x12956a){if(_0x12956a){var _0x6d08f9=typeof _0x4e46f2[_0xfcd9('0x1d')]===_0xfcd9('0x1e')&&typeof _0x4e46f2[_0xfcd9('0x1f')]===_0xfcd9('0x1e');var _0x33552c=_0x12956a['count'];var _0x45fcc5=_0x6d08f9?0x0:_0x4e46f2['offset'];var _0xcf8794=_0x6d08f9?_0x12956a[_0xfcd9('0x20')]:_0x4e46f2['offset']+_0x4e46f2['limit'];var _0x19790c;if(_0xcf8794>=_0x33552c){_0xcf8794=_0x33552c;_0x19790c=0xc8;}else{_0x19790c=0xce;}_0x5732f9['status'](_0x19790c);return _0x5732f9[_0xfcd9('0x21')](_0xfcd9('0x22'),_0x45fcc5+'-'+_0xcf8794+'/'+_0x33552c)[_0xfcd9('0x1c')](_0x12956a);}return null;};}function patchUpdates(_0x54b0bb){return function(_0x3a3e53){try{jsonpatch[_0xfcd9('0x23')](_0x3a3e53,_0x54b0bb,!![]);}catch(_0xa60412){return BPromise['reject'](_0xa60412);}return _0x3a3e53[_0xfcd9('0x24')]();};}function saveUpdates(_0x446316,_0x2caa51){return function(_0x43eac0){if(_0x43eac0){return _0x43eac0['update'](_0x446316)[_0xfcd9('0x25')](function(_0xbcb8){return _0xbcb8;});}return null;};}function removeEntity(_0x13d059,_0x54bed4){return function(_0x166cd3){if(_0x166cd3){return _0x166cd3['destroy']()[_0xfcd9('0x25')](function(){_0x13d059[_0xfcd9('0x1b')](0xcc)[_0xfcd9('0x1a')]();});}};}function handleEntityNotFound(_0x48506e,_0xddff68){return function(_0x5b3398){if(!_0x5b3398){_0x48506e['sendStatus'](0x194);}return _0x5b3398;};}function handleError(_0x487003,_0x2269bf){_0x2269bf=_0x2269bf||0x1f4;return function(_0x504523){logger[_0xfcd9('0x26')](_0x504523['stack']);if(_0x504523[_0xfcd9('0x27')]){delete _0x504523['name'];}_0x487003['status'](_0x2269bf)[_0xfcd9('0x28')](_0x504523);};}exports[_0xfcd9('0x29')]=function(_0x43cdc2,_0x142d46){var _0x316021={},_0x37499b={},_0x335168={'count':0x0,'rows':[]};var _0x5b1483=_['map'](db['FreshsalesAccount']['rawAttributes'],function(_0x4d0db5){return{'name':_0x4d0db5[_0xfcd9('0x2a')],'type':_0x4d0db5[_0xfcd9('0x2b')]['key']};});_0x37499b[_0xfcd9('0x2c')]=_['map'](_0x5b1483,_0xfcd9('0x27'));_0x37499b[_0xfcd9('0x2d')]=_[_0xfcd9('0x2e')](_0x43cdc2[_0xfcd9('0x2d')]);_0x37499b[_0xfcd9('0x2f')]=_[_0xfcd9('0x30')](_0x37499b[_0xfcd9('0x2c')],_0x37499b[_0xfcd9('0x2d')]);_0x316021[_0xfcd9('0x31')]=_[_0xfcd9('0x30')](_0x37499b[_0xfcd9('0x2c')],qs[_0xfcd9('0x32')](_0x43cdc2[_0xfcd9('0x2d')]['fields']));_0x316021[_0xfcd9('0x31')]=_0x316021[_0xfcd9('0x31')][_0xfcd9('0x33')]?_0x316021['attributes']:_0x37499b['model'];if(!_0x43cdc2[_0xfcd9('0x2d')][_0xfcd9('0x34')](_0xfcd9('0x35'))){_0x316021[_0xfcd9('0x1f')]=qs[_0xfcd9('0x1f')](_0x43cdc2[_0xfcd9('0x2d')][_0xfcd9('0x1f')]);_0x316021[_0xfcd9('0x1d')]=qs['offset'](_0x43cdc2[_0xfcd9('0x2d')][_0xfcd9('0x1d')]);}_0x316021[_0xfcd9('0x36')]=qs['sort'](_0x43cdc2[_0xfcd9('0x2d')][_0xfcd9('0x37')]);_0x316021['where']=qs[_0xfcd9('0x2f')](_[_0xfcd9('0x38')](_0x43cdc2['query'],_0x37499b[_0xfcd9('0x2f')]),_0x5b1483);if(_0x43cdc2[_0xfcd9('0x2d')]['filter']){_0x316021[_0xfcd9('0x39')]=_['merge'](_0x316021['where'],{'$or':_[_0xfcd9('0x3a')](_0x5b1483,function(_0x2a656e){if(_0x2a656e[_0xfcd9('0x2b')]!=='VIRTUAL'){var _0x19d814={};_0x19d814[_0x2a656e[_0xfcd9('0x27')]]={'$like':'%'+_0x43cdc2[_0xfcd9('0x2d')][_0xfcd9('0x3b')]+'%'};return _0x19d814;}})});}_0x316021=_['merge']({},_0x316021,_0x43cdc2['options']);var _0x571837={'where':_0x316021['where']};return db[_0xfcd9('0x3c')][_0xfcd9('0x20')](_0x571837)[_0xfcd9('0x25')](function(_0x21c493){_0x335168[_0xfcd9('0x20')]=_0x21c493;if(_0x43cdc2['query'][_0xfcd9('0x3d')]){_0x316021[_0xfcd9('0x3e')]=[{'all':!![]}];}return db['FreshsalesAccount'][_0xfcd9('0x3f')](_0x316021);})[_0xfcd9('0x25')](function(_0x3971c7){_0x335168['rows']=_0x3971c7;return _0x335168;})['then'](respondWithFilteredResult(_0x142d46,_0x316021))[_0xfcd9('0x40')](handleError(_0x142d46,null));};exports[_0xfcd9('0x41')]=function(_0x4d1913,_0x15c354){var _0x5d5092={'raw':![],'where':{'id':_0x4d1913['params']['id']}},_0x3aff57={};_0x3aff57[_0xfcd9('0x2c')]=_[_0xfcd9('0x2e')](db[_0xfcd9('0x3c')][_0xfcd9('0x42')]);_0x3aff57[_0xfcd9('0x2d')]=_['keys'](_0x4d1913['query']);_0x3aff57[_0xfcd9('0x2f')]=_[_0xfcd9('0x30')](_0x3aff57[_0xfcd9('0x2c')],_0x3aff57['query']);_0x5d5092['attributes']=_[_0xfcd9('0x30')](_0x3aff57[_0xfcd9('0x2c')],qs[_0xfcd9('0x32')](_0x4d1913[_0xfcd9('0x2d')][_0xfcd9('0x32')]));_0x5d5092[_0xfcd9('0x31')]=_0x5d5092['attributes'][_0xfcd9('0x33')]?_0x5d5092[_0xfcd9('0x31')]:_0x3aff57['model'];if(_0x4d1913[_0xfcd9('0x2d')][_0xfcd9('0x3d')]){_0x5d5092[_0xfcd9('0x3e')]=[{'all':!![]}];}_0x5d5092=_[_0xfcd9('0x43')]({},_0x5d5092,_0x4d1913[_0xfcd9('0x44')]);return db[_0xfcd9('0x3c')]['find'](_0x5d5092)[_0xfcd9('0x25')](handleEntityNotFound(_0x15c354,null))[_0xfcd9('0x25')](respondWithResult(_0x15c354,null))[_0xfcd9('0x40')](handleError(_0x15c354,null));};exports['create']=function(_0x58fb14,_0x6f5504){return db[_0xfcd9('0x3c')]['create'](_0x58fb14['body'],{})[_0xfcd9('0x25')](respondWithResult(_0x6f5504,0xc9))['catch'](handleError(_0x6f5504,null));};exports['update']=function(_0x45aa3c,_0x51383b){if(_0x45aa3c['body']['id']){delete _0x45aa3c[_0xfcd9('0x45')]['id'];}return db[_0xfcd9('0x3c')]['find']({'where':{'id':_0x45aa3c[_0xfcd9('0x46')]['id']}})['then'](handleEntityNotFound(_0x51383b,null))[_0xfcd9('0x25')](saveUpdates(_0x45aa3c[_0xfcd9('0x45')],null))[_0xfcd9('0x25')](respondWithResult(_0x51383b,null))['catch'](handleError(_0x51383b,null));};exports[_0xfcd9('0x47')]=function(_0x4de242,_0xd8ef51){return db[_0xfcd9('0x3c')][_0xfcd9('0x48')]({'where':{'id':_0x4de242['params']['id']}})[_0xfcd9('0x25')](handleEntityNotFound(_0xd8ef51,null))['then'](removeEntity(_0xd8ef51,null))[_0xfcd9('0x40')](handleError(_0xd8ef51,null));};exports['getConfigurations']=function(_0x1ab0c8,_0x403f76,_0x3387b5){var _0x1f7055={};var _0x30e243={};var _0x2d95c5;var _0x3b8c51;return db[_0xfcd9('0x3c')]['findOne']({'where':{'id':_0x1ab0c8[_0xfcd9('0x46')]['id']}})[_0xfcd9('0x25')](handleEntityNotFound(_0x403f76,null))['then'](function(_0x39527f){if(_0x39527f){_0x2d95c5=_0x39527f;_0x30e243[_0xfcd9('0x2c')]=_[_0xfcd9('0x2e')](db[_0xfcd9('0x49')]['rawAttributes']);_0x30e243[_0xfcd9('0x2d')]=_[_0xfcd9('0x2e')](_0x1ab0c8[_0xfcd9('0x2d')]);_0x30e243[_0xfcd9('0x2f')]=_[_0xfcd9('0x30')](_0x30e243[_0xfcd9('0x2c')],_0x30e243['query']);_0x1f7055[_0xfcd9('0x31')]=_[_0xfcd9('0x30')](_0x30e243[_0xfcd9('0x2c')],qs['fields'](_0x1ab0c8[_0xfcd9('0x2d')]['fields']));_0x1f7055['attributes']=_0x1f7055['attributes']['length']?_0x1f7055['attributes']:_0x30e243['model'];_0x1f7055[_0xfcd9('0x36')]=qs[_0xfcd9('0x37')](_0x1ab0c8[_0xfcd9('0x2d')][_0xfcd9('0x37')]);_0x1f7055[_0xfcd9('0x39')]=qs['filters'](_['pick'](_0x1ab0c8['query'],_0x30e243[_0xfcd9('0x2f')]));if(_0x1ab0c8[_0xfcd9('0x2d')][_0xfcd9('0x3b')]){_0x1f7055[_0xfcd9('0x39')]=_['merge'](_0x1f7055[_0xfcd9('0x39')],{'$or':_['map'](_0x1f7055[_0xfcd9('0x31')],function(_0x1a6c01){var _0x349cd8={};_0x349cd8[_0x1a6c01]={'$like':'%'+_0x1ab0c8[_0xfcd9('0x2d')][_0xfcd9('0x3b')]+'%'};return _0x349cd8;})});}_0x1f7055=_[_0xfcd9('0x43')]({},_0x1f7055,_0x1ab0c8[_0xfcd9('0x44')]);return _0x2d95c5[_0xfcd9('0x4a')](_0x1f7055);}})['then'](function(_0x1613f7){if(_0x1613f7){_0x3b8c51=_0x1613f7[_0xfcd9('0x33')];if(!_0x1ab0c8[_0xfcd9('0x2d')][_0xfcd9('0x34')](_0xfcd9('0x35'))){_0x1f7055[_0xfcd9('0x1f')]=qs[_0xfcd9('0x1f')](_0x1ab0c8[_0xfcd9('0x2d')][_0xfcd9('0x1f')]);_0x1f7055[_0xfcd9('0x1d')]=qs[_0xfcd9('0x1d')](_0x1ab0c8[_0xfcd9('0x2d')][_0xfcd9('0x1d')]);}return _0x2d95c5[_0xfcd9('0x4a')](_0x1f7055);}})[_0xfcd9('0x25')](function(_0x30aa90){if(_0x30aa90){return _0x30aa90?{'count':_0x3b8c51,'rows':_0x30aa90}:null;}})['then'](respondWithResult(_0x403f76,null))['catch'](handleError(_0x403f76,null));};exports[_0xfcd9('0x4b')]=function(_0x6343f1,_0x144bfd,_0x3e9f18){if(_0x6343f1[_0xfcd9('0x45')]['id']){delete _0x6343f1[_0xfcd9('0x45')]['id'];}return db[_0xfcd9('0x3c')][_0xfcd9('0x4c')]({'where':{'id':_0x6343f1[_0xfcd9('0x46')]['id']}})[_0xfcd9('0x25')](handleEntityNotFound(_0x144bfd,null))[_0xfcd9('0x25')](function(_0x563870){if(_0x563870){_0x6343f1[_0xfcd9('0x45')][_0xfcd9('0x4d')]=_0x563870['id'];_0x6343f1[_0xfcd9('0x45')][_0xfcd9('0x4e')]=integrations[_0xfcd9('0x4f')](_0x6343f1[_0xfcd9('0x45')]['channel'],_0x6343f1[_0xfcd9('0x45')]['type']);_0x6343f1['body'][_0xfcd9('0x50')]=integrations['getDescriptions'](_0x6343f1[_0xfcd9('0x45')][_0xfcd9('0x51')],_0x6343f1[_0xfcd9('0x45')][_0xfcd9('0x2b')]);return db[_0xfcd9('0x49')]['create'](_0x6343f1[_0xfcd9('0x45')],{'include':[{'model':db[_0xfcd9('0x52')],'as':_0xfcd9('0x4e')},{'model':db[_0xfcd9('0x52')],'as':_0xfcd9('0x50')}]});}return null;})[_0xfcd9('0x25')](respondWithResult(_0x144bfd,null))[_0xfcd9('0x40')](handleError(_0x144bfd,null));};exports[_0xfcd9('0x53')]=function(_0x1d3e27,_0x20b74f,_0x475b45){var _0x3c8e5c='';var _0x2abfdd='';return db['FreshsalesAccount'][_0xfcd9('0x4c')]({'where':{'id':_0x1d3e27['params']['id']},'attributes':['id',_0xfcd9('0x54'),_0xfcd9('0x55'),_0xfcd9('0x56')]})[_0xfcd9('0x25')](handleEntityNotFound(_0x20b74f,null))[_0xfcd9('0x25')](function(_0x2dff86){if(_0x2dff86){_0x2abfdd=_0x2dff86['username'];_0x3c8e5c=_0x2dff86[_0xfcd9('0x55')];var _0x5c04ba=_0x2dff86[_0xfcd9('0x55')][_0xfcd9('0x57')](-0x1);if(_0x5c04ba==='/'){_0x3c8e5c=_0x3c8e5c['substring'](0x0,_0x3c8e5c['lastIndexOf'](_0x5c04ba));}return rp({'method':'GET','uri':util[_0xfcd9('0x58')]('%s%s',_0x3c8e5c,_0xfcd9('0x59')),'headers':{'Authorization':_0xfcd9('0x5a')+_0x2dff86[_0xfcd9('0x56')]},'json':!![]});}})[_0xfcd9('0x25')](function(_0x49edf5){if(_0x49edf5){var _0x3139dc=_0x49edf5[_0xfcd9('0x5b')];var _0x1c6387=![];var _0x2d908f=null;for(_0x2d908f=0x0;_0x2d908f<_0x3139dc[_0xfcd9('0x33')];_0x2d908f++){if(_0x3139dc[_0x2d908f][_0xfcd9('0x5c')]===_0x2abfdd){_0x1c6387=!![];}}if(_0x1c6387){return!![];}else{throw new Error({'statusCode':0x194,'message':_0xfcd9('0x5d')});}}})[_0xfcd9('0x25')](respondWithResult(_0x20b74f,null))[_0xfcd9('0x40')](function(_0x3d07af){var _0x561579=_0x1d3e27['query'][_0xfcd9('0x5e')]?0x1f4:_0x3d07af[_0xfcd9('0x5f')]||0x1f4;logger[_0xfcd9('0x26')](_0xfcd9('0x60'),'getFields',_0x561579,JSON['stringify'](_0x3d07af));delete _0x3d07af[_0xfcd9('0x27')];if(_0x561579===0x191){_0x561579=0x190;}_0x20b74f['status'](_0x561579)['send'](_0x1d3e27[_0xfcd9('0x2d')]['test']?{'message':_0xfcd9('0x61'),'statusCode':_0x3d07af['statusCode']}:_0x3d07af);});};
\ No newline at end of file
index ba7989f..d6c526f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0x8f9d=['exports','define','FreshsalesAccount','lodash','../../config/logger','moment','bluebird','request-promise','path','rimraf','../../config/environment','./intFreshsalesAccount.attributes'];(function(_0x122096,_0x60c295){var _0x3d1966=function(_0x3d569e){while(--_0x3d569e){_0x122096['push'](_0x122096['shift']());}};_0x3d1966(++_0x60c295);}(_0x8f9d,0x93));var _0xd8f9=function(_0x321bb2,_0x202794){_0x321bb2=_0x321bb2-0x0;var _0x9c12ed=_0x8f9d[_0x321bb2];return _0x9c12ed;};'use strict';var _=require(_0xd8f9('0x0'));var util=require('util');var logger=require(_0xd8f9('0x1'))('api');var moment=require(_0xd8f9('0x2'));var BPromise=require(_0xd8f9('0x3'));var rp=require(_0xd8f9('0x4'));var fs=require('fs');var path=require(_0xd8f9('0x5'));var rimraf=require(_0xd8f9('0x6'));var config=require(_0xd8f9('0x7'));var attributes=require(_0xd8f9('0x8'));var integrations=require('../../components/integrations/configuration');module[_0xd8f9('0x9')]=function(_0x24dd1e,_0x25d417){return _0x24dd1e[_0xd8f9('0xa')](_0xd8f9('0xb'),attributes,{'tableName':'int_freshsales_accounts','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 4c4103a..12b735a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0x82c4=['findAll','options','raw','attributes','include','map','model','ShowFreshsalesAccount','FreshsalesAccount','find','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/logger','../../config/environment','client','then','info','FreshsalesAccount,\x20%s,\x20%s','request\x20sent','debug','stringify','error','code','message','result','catch','GetFreshsalesAccount'];(function(_0x1d9aa0,_0x272488){var _0x226868=function(_0x17127c){while(--_0x17127c){_0x1d9aa0['push'](_0x1d9aa0['shift']());}};_0x226868(++_0x272488);}(_0x82c4,0x1ca));var _0x482c=function(_0x26a351,_0x5dd04c){_0x26a351=_0x26a351-0x0;var _0x1ef7fe=_0x82c4[_0x26a351];return _0x1ef7fe;};'use strict';var _=require(_0x482c('0x0'));var util=require(_0x482c('0x1'));var moment=require(_0x482c('0x2'));var BPromise=require(_0x482c('0x3'));var rs=require(_0x482c('0x4'));var fs=require('fs');var Redis=require(_0x482c('0x5'));var db=require(_0x482c('0x6'))['db'];var utils=require('../../config/utils');var logger=require(_0x482c('0x7'))('rpc');var config=require(_0x482c('0x8'));var jayson=require('jayson/promise');var client=jayson[_0x482c('0x9')]['http']({'port':0x232a});function respondWithRpcPromise(_0xfdb92,_0x32a503,_0x35cdab){return new BPromise(function(_0x1c10f2,_0x3846d8){return client['request'](_0xfdb92,_0x35cdab)[_0x482c('0xa')](function(_0x135cc1){logger[_0x482c('0xb')](_0x482c('0xc'),_0x32a503,_0x482c('0xd'));logger[_0x482c('0xe')]('FreshsalesAccount,\x20%s,\x20%s,\x20%s',_0x32a503,_0x482c('0xd'),JSON[_0x482c('0xf')](_0x135cc1));if(_0x135cc1[_0x482c('0x10')]){if(_0x135cc1['error'][_0x482c('0x11')]===0x1f4){logger[_0x482c('0x10')](_0x482c('0xc'),_0x32a503,_0x135cc1['error']['message']);return _0x3846d8(_0x135cc1[_0x482c('0x10')][_0x482c('0x12')]);}logger['error']('FreshsalesAccount,\x20%s,\x20%s',_0x32a503,_0x135cc1[_0x482c('0x10')][_0x482c('0x12')]);return _0x1c10f2(_0x135cc1[_0x482c('0x10')][_0x482c('0x12')]);}else{logger[_0x482c('0xb')](_0x482c('0xc'),_0x32a503,_0x482c('0xd'));_0x1c10f2(_0x135cc1[_0x482c('0x13')][_0x482c('0x12')]);}})[_0x482c('0x14')](function(_0x363403){logger[_0x482c('0x10')]('FreshsalesAccount,\x20%s,\x20%s',_0x32a503,_0x363403);_0x3846d8(_0x363403);});});}exports[_0x482c('0x15')]=function(_0x5b6f7e){var _0x3aed45=this;return new Promise(function(_0x258148,_0x4af05a){return db['FreshsalesAccount'][_0x482c('0x16')]({'raw':_0x5b6f7e['options']?_0x5b6f7e[_0x482c('0x17')][_0x482c('0x18')]===undefined?!![]:![]:!![],'where':_0x5b6f7e[_0x482c('0x17')]?_0x5b6f7e[_0x482c('0x17')]['where']||null:null,'attributes':_0x5b6f7e[_0x482c('0x17')]?_0x5b6f7e[_0x482c('0x17')][_0x482c('0x19')]||null:null,'limit':_0x5b6f7e[_0x482c('0x17')]?_0x5b6f7e[_0x482c('0x17')]['limit']||null:null,'include':_0x5b6f7e['options']?_0x5b6f7e[_0x482c('0x17')][_0x482c('0x1a')]?_[_0x482c('0x1b')](_0x5b6f7e['options'][_0x482c('0x1a')],function(_0x579d2f){return{'model':db[_0x579d2f[_0x482c('0x1c')]],'as':_0x579d2f['as'],'attributes':_0x579d2f[_0x482c('0x19')],'include':_0x579d2f['include']?_[_0x482c('0x1b')](_0x579d2f['include'],function(_0x589bc6){return{'model':db[_0x589bc6[_0x482c('0x1c')]],'as':_0x589bc6['as'],'attributes':_0x589bc6[_0x482c('0x19')],'include':_0x589bc6[_0x482c('0x1a')]?_[_0x482c('0x1b')](_0x589bc6[_0x482c('0x1a')],function(_0x215826){return{'model':db[_0x215826[_0x482c('0x1c')]],'as':_0x215826['as'],'attributes':_0x215826['attributes']};}):[]};}):[]};}):[]:[]})[_0x482c('0xa')](function(_0x255417){logger['info'](_0x482c('0x15'),_0x5b6f7e);logger['debug']('GetFreshsalesAccount',_0x5b6f7e,JSON[_0x482c('0xf')](_0x255417));_0x258148(_0x255417);})['catch'](function(_0x1ac1c4){logger[_0x482c('0x10')](_0x482c('0x15'),_0x1ac1c4[_0x482c('0x12')],_0x5b6f7e);_0x4af05a(_0x3aed45[_0x482c('0x10')](0x1f4,_0x1ac1c4[_0x482c('0x12')]));});});};exports[_0x482c('0x1d')]=function(_0x3e9b22){var _0x24b4df=this;return new Promise(function(_0x2d3800,_0x3135a7){return db[_0x482c('0x1e')][_0x482c('0x1f')]({'raw':_0x3e9b22[_0x482c('0x17')]?_0x3e9b22[_0x482c('0x17')][_0x482c('0x18')]===undefined?!![]:![]:!![],'where':_0x3e9b22[_0x482c('0x17')]?_0x3e9b22[_0x482c('0x17')]['where']||null:null,'attributes':_0x3e9b22['options']?_0x3e9b22['options'][_0x482c('0x19')]||null:null,'include':_0x3e9b22[_0x482c('0x17')]?_0x3e9b22[_0x482c('0x17')][_0x482c('0x1a')]?_['map'](_0x3e9b22[_0x482c('0x17')]['include'],function(_0x31428c){return{'model':db[_0x31428c[_0x482c('0x1c')]],'as':_0x31428c['as'],'attributes':_0x31428c[_0x482c('0x19')],'include':_0x31428c[_0x482c('0x1a')]?_[_0x482c('0x1b')](_0x31428c[_0x482c('0x1a')],function(_0x129a31){return{'model':db[_0x129a31[_0x482c('0x1c')]],'as':_0x129a31['as'],'attributes':_0x129a31['attributes'],'include':_0x129a31['include']?_[_0x482c('0x1b')](_0x129a31['include'],function(_0xe62a02){return{'model':db[_0xe62a02[_0x482c('0x1c')]],'as':_0xe62a02['as'],'attributes':_0xe62a02[_0x482c('0x19')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x29cbaa){logger[_0x482c('0xb')](_0x482c('0x1d'),_0x3e9b22);logger[_0x482c('0xe')]('ShowFreshsalesAccount',_0x3e9b22,JSON[_0x482c('0xf')](_0x29cbaa));_0x2d3800(_0x29cbaa);})['catch'](function(_0x1de7f4){logger['error'](_0x482c('0x1d'),_0x1de7f4['message'],_0x3e9b22);_0x3135a7(_0x24b4df[_0x482c('0x10')](0x1f4,_0x1de7f4[_0x482c('0x12')]));});});};
\ No newline at end of file
index 16c9d5e..43231af 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0x10af=['/:id','delete','exports','util','path','express','Router','../../config/environment','get','isAuthenticated','index','show','/:id/subjects','getSubjects','/:id/descriptions','getDescriptions','getFields','create','put'];(function(_0x16b9ed,_0x56517a){var _0x66b1f8=function(_0x1c883){while(--_0x1c883){_0x16b9ed['push'](_0x16b9ed['shift']());}};_0x66b1f8(++_0x56517a);}(_0x10af,0x75));var _0xf10a=function(_0x342700,_0x569f75){_0x342700=_0x342700-0x0;var _0x53406f=_0x10af[_0x342700];return _0x53406f;};'use strict';var multer=require('multer');var util=require(_0xf10a('0x0'));var path=require(_0xf10a('0x1'));var timeout=require('connect-timeout');var express=require(_0xf10a('0x2'));var router=express[_0xf10a('0x3')]();var fs_extra=require('fs-extra');var auth=require('../../components/auth/service');var interaction=require('../../components/interaction/service');var config=require(_0xf10a('0x4'));var controller=require('./intFreshsalesConfiguration.controller');router[_0xf10a('0x5')]('/',auth[_0xf10a('0x6')](),controller[_0xf10a('0x7')]);router[_0xf10a('0x5')]('/:id',auth[_0xf10a('0x6')](),controller[_0xf10a('0x8')]);router[_0xf10a('0x5')](_0xf10a('0x9'),auth[_0xf10a('0x6')](),controller[_0xf10a('0xa')]);router['get'](_0xf10a('0xb'),auth[_0xf10a('0x6')](),controller[_0xf10a('0xc')]);router['get']('/:id/fields',auth[_0xf10a('0x6')](),controller[_0xf10a('0xd')]);router['post']('/',auth[_0xf10a('0x6')](),controller[_0xf10a('0xe')]);router[_0xf10a('0xf')](_0xf10a('0x10'),auth[_0xf10a('0x6')](),controller['update']);router[_0xf10a('0x11')](_0xf10a('0x10'),auth['isAuthenticated'](),controller['destroy']);module[_0xf10a('0x12')]=router;
\ No newline at end of file
index 1de44ee..a8fa0c6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0x5c9a=['exports','STRING','sequelize'];(function(_0x46e1d9,_0x1cc2a9){var _0x7b3be0=function(_0x3c421f){while(--_0x3c421f){_0x46e1d9['push'](_0x46e1d9['shift']());}};_0x7b3be0(++_0x1cc2a9);}(_0x5c9a,0x1d3));var _0xa5c9=function(_0x448ae2,_0x1676f5){_0x448ae2=_0x448ae2-0x0;var _0x4fdd34=_0x5c9a[_0x448ae2];return _0x4fdd34;};'use strict';var Sequelize=require(_0xa5c9('0x0'));module[_0xa5c9('0x1')]={'name':{'type':Sequelize[_0xa5c9('0x2')]},'description':{'type':Sequelize[_0xa5c9('0x2')]}};
\ No newline at end of file
index 7aaf59d..1193439 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0x78e2=['where','pick','filter','merge','VIRTUAL','options','FreshsalesConfiguration','includeAll','include','findAll','rows','show','keys','find','catch','create','body','params','getSubjects','findOne','sort','getDescriptions','FreshsalesField','getFields','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','to-csv','ejs','fs-extra','lodash','squel','jsforce','querystring','papaparse','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','status','end','json','offset','undefined','limit','count','Content-Range','apply','reject','save','then','destroy','sendStatus','name','send','index','rawAttributes','fieldName','map','query','filters','intersection','model','fields','attributes','length','hasOwnProperty','nolimit','order'];(function(_0x2e8098,_0x3fa528){var _0xc5cb66=function(_0x48765e){while(--_0x48765e){_0x2e8098['push'](_0x2e8098['shift']());}};_0xc5cb66(++_0x3fa528);}(_0x78e2,0x1a8));var _0x278e=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x78e2[_0x3dd15e];return _0x231fd0;};'use strict';var emlformat=require(_0x278e('0x0'));var rimraf=require(_0x278e('0x1'));var zipdir=require(_0x278e('0x2'));var jsonpatch=require(_0x278e('0x3'));var rp=require(_0x278e('0x4'));var moment=require(_0x278e('0x5'));var BPromise=require(_0x278e('0x6'));var Mustache=require(_0x278e('0x7'));var util=require(_0x278e('0x8'));var path=require(_0x278e('0x9'));var sox=require('sox');var csv=require(_0x278e('0xa'));var ejs=require(_0x278e('0xb'));var fs=require('fs');var fs_extra=require(_0x278e('0xc'));var _=require(_0x278e('0xd'));var squel=require(_0x278e('0xe'));var crypto=require('crypto');var jsforce=require(_0x278e('0xf'));var deskjs=require('desk.js');var toCsv=require('to-csv');var querystring=require(_0x278e('0x10'));var Papa=require(_0x278e('0x11'));var Redis=require(_0x278e('0x12'));var authService=require('../../components/auth/service');var qs=require(_0x278e('0x13'));var as=require(_0x278e('0x14'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x278e('0x15'))('api');var utils=require(_0x278e('0x16'));var config=require(_0x278e('0x17'));var licenseUtil=require(_0x278e('0x18'));var db=require(_0x278e('0x19'))['db'];function respondWithStatusCode(_0x12004a,_0x40e295){_0x40e295=_0x40e295||0xcc;return function(_0x43751f){if(_0x43751f){return _0x12004a['sendStatus'](_0x40e295);}return _0x12004a[_0x278e('0x1a')](_0x40e295)[_0x278e('0x1b')]();};}function respondWithResult(_0x227400,_0x4f0f35){_0x4f0f35=_0x4f0f35||0xc8;return function(_0x25f1ea){if(_0x25f1ea){return _0x227400[_0x278e('0x1a')](_0x4f0f35)[_0x278e('0x1c')](_0x25f1ea);}};}function respondWithFilteredResult(_0x24f971,_0x58e7c6){return function(_0x2c3cfa){if(_0x2c3cfa){var _0x4c5bf5=typeof _0x58e7c6[_0x278e('0x1d')]===_0x278e('0x1e')&&typeof _0x58e7c6[_0x278e('0x1f')]===_0x278e('0x1e');var _0x5f4e1c=_0x2c3cfa[_0x278e('0x20')];var _0x3492b6=_0x4c5bf5?0x0:_0x58e7c6[_0x278e('0x1d')];var _0x1569ba=_0x4c5bf5?_0x2c3cfa[_0x278e('0x20')]:_0x58e7c6[_0x278e('0x1d')]+_0x58e7c6[_0x278e('0x1f')];var _0x2a6412;if(_0x1569ba>=_0x5f4e1c){_0x1569ba=_0x5f4e1c;_0x2a6412=0xc8;}else{_0x2a6412=0xce;}_0x24f971[_0x278e('0x1a')](_0x2a6412);return _0x24f971['set'](_0x278e('0x21'),_0x3492b6+'-'+_0x1569ba+'/'+_0x5f4e1c)[_0x278e('0x1c')](_0x2c3cfa);}return null;};}function patchUpdates(_0x4ec632){return function(_0x5f22fd){try{jsonpatch[_0x278e('0x22')](_0x5f22fd,_0x4ec632,!![]);}catch(_0x7c3bd6){return BPromise[_0x278e('0x23')](_0x7c3bd6);}return _0x5f22fd[_0x278e('0x24')]();};}function saveUpdates(_0x5ab03d,_0x26ce03){return function(_0x5cf8c0){if(_0x5cf8c0){return _0x5cf8c0['update'](_0x5ab03d)[_0x278e('0x25')](function(_0x45adff){return _0x45adff;});}return null;};}function removeEntity(_0x24ace0,_0xe45ef4){return function(_0x17e230){if(_0x17e230){return _0x17e230[_0x278e('0x26')]()['then'](function(){_0x24ace0[_0x278e('0x1a')](0xcc)[_0x278e('0x1b')]();});}};}function handleEntityNotFound(_0x4d8138,_0x3efc4a){return function(_0x4aaa4a){if(!_0x4aaa4a){_0x4d8138[_0x278e('0x27')](0x194);}return _0x4aaa4a;};}function handleError(_0x3b1c27,_0x439dd1){_0x439dd1=_0x439dd1||0x1f4;return function(_0x2a6ae9){logger['error'](_0x2a6ae9['stack']);if(_0x2a6ae9[_0x278e('0x28')]){delete _0x2a6ae9[_0x278e('0x28')];}_0x3b1c27['status'](_0x439dd1)[_0x278e('0x29')](_0x2a6ae9);};}exports[_0x278e('0x2a')]=function(_0x2c7ce6,_0x225bfe){var _0x2dd3d2={},_0x1733b0={},_0xb90979={'count':0x0,'rows':[]};var _0x3d72f7=_['map'](db['FreshsalesConfiguration'][_0x278e('0x2b')],function(_0xeece1f){return{'name':_0xeece1f[_0x278e('0x2c')],'type':_0xeece1f['type']['key']};});_0x1733b0['model']=_[_0x278e('0x2d')](_0x3d72f7,'name');_0x1733b0[_0x278e('0x2e')]=_['keys'](_0x2c7ce6[_0x278e('0x2e')]);_0x1733b0[_0x278e('0x2f')]=_[_0x278e('0x30')](_0x1733b0[_0x278e('0x31')],_0x1733b0[_0x278e('0x2e')]);_0x2dd3d2['attributes']=_[_0x278e('0x30')](_0x1733b0[_0x278e('0x31')],qs[_0x278e('0x32')](_0x2c7ce6[_0x278e('0x2e')][_0x278e('0x32')]));_0x2dd3d2[_0x278e('0x33')]=_0x2dd3d2['attributes'][_0x278e('0x34')]?_0x2dd3d2[_0x278e('0x33')]:_0x1733b0[_0x278e('0x31')];if(!_0x2c7ce6[_0x278e('0x2e')][_0x278e('0x35')](_0x278e('0x36'))){_0x2dd3d2[_0x278e('0x1f')]=qs[_0x278e('0x1f')](_0x2c7ce6[_0x278e('0x2e')][_0x278e('0x1f')]);_0x2dd3d2[_0x278e('0x1d')]=qs['offset'](_0x2c7ce6[_0x278e('0x2e')][_0x278e('0x1d')]);}_0x2dd3d2[_0x278e('0x37')]=qs['sort'](_0x2c7ce6[_0x278e('0x2e')]['sort']);_0x2dd3d2[_0x278e('0x38')]=qs[_0x278e('0x2f')](_[_0x278e('0x39')](_0x2c7ce6[_0x278e('0x2e')],_0x1733b0[_0x278e('0x2f')]),_0x3d72f7);if(_0x2c7ce6[_0x278e('0x2e')][_0x278e('0x3a')]){_0x2dd3d2[_0x278e('0x38')]=_[_0x278e('0x3b')](_0x2dd3d2['where'],{'$or':_[_0x278e('0x2d')](_0x3d72f7,function(_0x5bd883){if(_0x5bd883['type']!==_0x278e('0x3c')){var _0x4b7964={};_0x4b7964[_0x5bd883['name']]={'$like':'%'+_0x2c7ce6[_0x278e('0x2e')][_0x278e('0x3a')]+'%'};return _0x4b7964;}})});}_0x2dd3d2=_[_0x278e('0x3b')]({},_0x2dd3d2,_0x2c7ce6[_0x278e('0x3d')]);var _0x253bb7={'where':_0x2dd3d2['where']};return db[_0x278e('0x3e')][_0x278e('0x20')](_0x253bb7)['then'](function(_0x5b4f89){_0xb90979['count']=_0x5b4f89;if(_0x2c7ce6[_0x278e('0x2e')][_0x278e('0x3f')]){_0x2dd3d2[_0x278e('0x40')]=[{'all':!![]}];}return db[_0x278e('0x3e')][_0x278e('0x41')](_0x2dd3d2);})[_0x278e('0x25')](function(_0x532bde){_0xb90979[_0x278e('0x42')]=_0x532bde;return _0xb90979;})[_0x278e('0x25')](respondWithFilteredResult(_0x225bfe,_0x2dd3d2))['catch'](handleError(_0x225bfe,null));};exports[_0x278e('0x43')]=function(_0x804b8f,_0x403915){var _0x4f2551={'raw':![],'where':{'id':_0x804b8f['params']['id']}},_0x491cbc={};_0x491cbc[_0x278e('0x31')]=_[_0x278e('0x44')](db[_0x278e('0x3e')][_0x278e('0x2b')]);_0x491cbc[_0x278e('0x2e')]=_[_0x278e('0x44')](_0x804b8f['query']);_0x491cbc[_0x278e('0x2f')]=_[_0x278e('0x30')](_0x491cbc[_0x278e('0x31')],_0x491cbc[_0x278e('0x2e')]);_0x4f2551[_0x278e('0x33')]=_[_0x278e('0x30')](_0x491cbc[_0x278e('0x31')],qs[_0x278e('0x32')](_0x804b8f[_0x278e('0x2e')]['fields']));_0x4f2551[_0x278e('0x33')]=_0x4f2551['attributes']['length']?_0x4f2551[_0x278e('0x33')]:_0x491cbc[_0x278e('0x31')];if(_0x804b8f[_0x278e('0x2e')][_0x278e('0x3f')]){_0x4f2551[_0x278e('0x40')]=[{'all':!![]}];}_0x4f2551=_[_0x278e('0x3b')]({},_0x4f2551,_0x804b8f[_0x278e('0x3d')]);return db[_0x278e('0x3e')][_0x278e('0x45')](_0x4f2551)[_0x278e('0x25')](handleEntityNotFound(_0x403915,null))[_0x278e('0x25')](respondWithResult(_0x403915,null))[_0x278e('0x46')](handleError(_0x403915,null));};exports[_0x278e('0x47')]=function(_0x435705,_0x62b0a7){return db[_0x278e('0x3e')][_0x278e('0x47')](_0x435705[_0x278e('0x48')],{})[_0x278e('0x25')](respondWithResult(_0x62b0a7,0xc9))[_0x278e('0x46')](handleError(_0x62b0a7,null));};exports['update']=function(_0x243565,_0x4e53d1){if(_0x243565[_0x278e('0x48')]['id']){delete _0x243565['body']['id'];}return db[_0x278e('0x3e')][_0x278e('0x45')]({'where':{'id':_0x243565[_0x278e('0x49')]['id']}})['then'](handleEntityNotFound(_0x4e53d1,null))['then'](saveUpdates(_0x243565[_0x278e('0x48')],null))[_0x278e('0x25')](respondWithResult(_0x4e53d1,null))[_0x278e('0x46')](handleError(_0x4e53d1,null));};exports[_0x278e('0x26')]=function(_0x481e2e,_0x33cabb){return db[_0x278e('0x3e')][_0x278e('0x45')]({'where':{'id':_0x481e2e[_0x278e('0x49')]['id']}})['then'](handleEntityNotFound(_0x33cabb,null))[_0x278e('0x25')](removeEntity(_0x33cabb,null))[_0x278e('0x46')](handleError(_0x33cabb,null));};exports[_0x278e('0x4a')]=function(_0xd633c,_0xe10958,_0x1a5af9){var _0x3ad24d={};var _0x24cdef={};var _0x5f4c78;var _0x39dc6f;return db[_0x278e('0x3e')][_0x278e('0x4b')]({'where':{'id':_0xd633c['params']['id']}})[_0x278e('0x25')](handleEntityNotFound(_0xe10958,null))['then'](function(_0x5eb413){if(_0x5eb413){_0x5f4c78=_0x5eb413;_0x24cdef[_0x278e('0x31')]=_[_0x278e('0x44')](db['FreshsalesField'][_0x278e('0x2b')]);_0x24cdef[_0x278e('0x2e')]=_[_0x278e('0x44')](_0xd633c[_0x278e('0x2e')]);_0x24cdef[_0x278e('0x2f')]=_[_0x278e('0x30')](_0x24cdef[_0x278e('0x31')],_0x24cdef['query']);_0x3ad24d[_0x278e('0x33')]=_['intersection'](_0x24cdef[_0x278e('0x31')],qs[_0x278e('0x32')](_0xd633c['query'][_0x278e('0x32')]));_0x3ad24d['attributes']=_0x3ad24d['attributes'][_0x278e('0x34')]?_0x3ad24d[_0x278e('0x33')]:_0x24cdef[_0x278e('0x31')];_0x3ad24d[_0x278e('0x37')]=qs['sort'](_0xd633c[_0x278e('0x2e')][_0x278e('0x4c')]);_0x3ad24d['where']=qs[_0x278e('0x2f')](_['pick'](_0xd633c[_0x278e('0x2e')],_0x24cdef[_0x278e('0x2f')]));if(_0xd633c['query'][_0x278e('0x3a')]){_0x3ad24d[_0x278e('0x38')]=_[_0x278e('0x3b')](_0x3ad24d[_0x278e('0x38')],{'$or':_[_0x278e('0x2d')](_0x3ad24d[_0x278e('0x33')],function(_0x40aa10){var _0x823e46={};_0x823e46[_0x40aa10]={'$like':'%'+_0xd633c[_0x278e('0x2e')][_0x278e('0x3a')]+'%'};return _0x823e46;})});}_0x3ad24d=_[_0x278e('0x3b')]({},_0x3ad24d,_0xd633c[_0x278e('0x3d')]);return _0x5f4c78[_0x278e('0x4a')](_0x3ad24d);}})[_0x278e('0x25')](function(_0x438107){if(_0x438107){_0x39dc6f=_0x438107[_0x278e('0x34')];if(!_0xd633c['query'][_0x278e('0x35')](_0x278e('0x36'))){_0x3ad24d[_0x278e('0x1f')]=qs[_0x278e('0x1f')](_0xd633c[_0x278e('0x2e')][_0x278e('0x1f')]);_0x3ad24d['offset']=qs[_0x278e('0x1d')](_0xd633c[_0x278e('0x2e')]['offset']);}return _0x5f4c78[_0x278e('0x4a')](_0x3ad24d);}})[_0x278e('0x25')](function(_0x5111a8){if(_0x5111a8){return _0x5111a8?{'count':_0x39dc6f,'rows':_0x5111a8}:null;}})[_0x278e('0x25')](respondWithResult(_0xe10958,null))[_0x278e('0x46')](handleError(_0xe10958,null));};exports[_0x278e('0x4d')]=function(_0x3a6c38,_0x5d6fca,_0x450d5f){var _0x8b2de8={};var _0x1775a6={};var _0x4219c3;var _0x18bcca;return db[_0x278e('0x3e')][_0x278e('0x4b')]({'where':{'id':_0x3a6c38[_0x278e('0x49')]['id']}})[_0x278e('0x25')](handleEntityNotFound(_0x5d6fca,null))[_0x278e('0x25')](function(_0x307ae2){if(_0x307ae2){_0x4219c3=_0x307ae2;_0x1775a6[_0x278e('0x31')]=_[_0x278e('0x44')](db[_0x278e('0x4e')]['rawAttributes']);_0x1775a6['query']=_[_0x278e('0x44')](_0x3a6c38[_0x278e('0x2e')]);_0x1775a6['filters']=_[_0x278e('0x30')](_0x1775a6[_0x278e('0x31')],_0x1775a6['query']);_0x8b2de8[_0x278e('0x33')]=_[_0x278e('0x30')](_0x1775a6[_0x278e('0x31')],qs[_0x278e('0x32')](_0x3a6c38[_0x278e('0x2e')][_0x278e('0x32')]));_0x8b2de8[_0x278e('0x33')]=_0x8b2de8[_0x278e('0x33')][_0x278e('0x34')]?_0x8b2de8['attributes']:_0x1775a6[_0x278e('0x31')];_0x8b2de8['order']=qs[_0x278e('0x4c')](_0x3a6c38[_0x278e('0x2e')][_0x278e('0x4c')]);_0x8b2de8[_0x278e('0x38')]=qs['filters'](_[_0x278e('0x39')](_0x3a6c38[_0x278e('0x2e')],_0x1775a6[_0x278e('0x2f')]));if(_0x3a6c38[_0x278e('0x2e')][_0x278e('0x3a')]){_0x8b2de8[_0x278e('0x38')]=_[_0x278e('0x3b')](_0x8b2de8[_0x278e('0x38')],{'$or':_[_0x278e('0x2d')](_0x8b2de8['attributes'],function(_0x199ade){var _0x2ade43={};_0x2ade43[_0x199ade]={'$like':'%'+_0x3a6c38[_0x278e('0x2e')][_0x278e('0x3a')]+'%'};return _0x2ade43;})});}_0x8b2de8=_[_0x278e('0x3b')]({},_0x8b2de8,_0x3a6c38[_0x278e('0x3d')]);return _0x4219c3[_0x278e('0x4d')](_0x8b2de8);}})[_0x278e('0x25')](function(_0x485134){if(_0x485134){_0x18bcca=_0x485134['length'];if(!_0x3a6c38[_0x278e('0x2e')][_0x278e('0x35')](_0x278e('0x36'))){_0x8b2de8[_0x278e('0x1f')]=qs['limit'](_0x3a6c38[_0x278e('0x2e')][_0x278e('0x1f')]);_0x8b2de8[_0x278e('0x1d')]=qs[_0x278e('0x1d')](_0x3a6c38[_0x278e('0x2e')][_0x278e('0x1d')]);}return _0x4219c3['getDescriptions'](_0x8b2de8);}})['then'](function(_0x49e995){if(_0x49e995){return _0x49e995?{'count':_0x18bcca,'rows':_0x49e995}:null;}})[_0x278e('0x25')](respondWithResult(_0x5d6fca,null))[_0x278e('0x46')](handleError(_0x5d6fca,null));};exports[_0x278e('0x4f')]=function(_0x3c6674,_0x3de026,_0xec51d){var _0x47e2f4={};var _0x206378={};var _0x44d023;var _0x39ab45;return db[_0x278e('0x3e')][_0x278e('0x4b')]({'where':{'id':_0x3c6674[_0x278e('0x49')]['id']}})[_0x278e('0x25')](handleEntityNotFound(_0x3de026,null))[_0x278e('0x25')](function(_0x2e7746){if(_0x2e7746){_0x44d023=_0x2e7746;_0x206378[_0x278e('0x31')]=_[_0x278e('0x44')](db[_0x278e('0x4e')][_0x278e('0x2b')]);_0x206378[_0x278e('0x2e')]=_[_0x278e('0x44')](_0x3c6674[_0x278e('0x2e')]);_0x206378[_0x278e('0x2f')]=_[_0x278e('0x30')](_0x206378[_0x278e('0x31')],_0x206378['query']);_0x47e2f4[_0x278e('0x33')]=_[_0x278e('0x30')](_0x206378[_0x278e('0x31')],qs['fields'](_0x3c6674['query'][_0x278e('0x32')]));_0x47e2f4[_0x278e('0x33')]=_0x47e2f4[_0x278e('0x33')][_0x278e('0x34')]?_0x47e2f4[_0x278e('0x33')]:_0x206378['model'];_0x47e2f4[_0x278e('0x37')]=qs[_0x278e('0x4c')](_0x3c6674[_0x278e('0x2e')][_0x278e('0x4c')]);_0x47e2f4[_0x278e('0x38')]=qs[_0x278e('0x2f')](_[_0x278e('0x39')](_0x3c6674[_0x278e('0x2e')],_0x206378[_0x278e('0x2f')]));if(_0x3c6674[_0x278e('0x2e')][_0x278e('0x3a')]){_0x47e2f4['where']=_['merge'](_0x47e2f4[_0x278e('0x38')],{'$or':_[_0x278e('0x2d')](_0x47e2f4['attributes'],function(_0x48f036){var _0x5f3ecd={};_0x5f3ecd[_0x48f036]={'$like':'%'+_0x3c6674[_0x278e('0x2e')]['filter']+'%'};return _0x5f3ecd;})});}_0x47e2f4=_[_0x278e('0x3b')]({},_0x47e2f4,_0x3c6674[_0x278e('0x3d')]);return _0x44d023[_0x278e('0x4f')](_0x47e2f4);}})[_0x278e('0x25')](function(_0x260989){if(_0x260989){_0x39ab45=_0x260989['length'];if(!_0x3c6674['query'][_0x278e('0x35')]('nolimit')){_0x47e2f4[_0x278e('0x1f')]=qs[_0x278e('0x1f')](_0x3c6674['query'][_0x278e('0x1f')]);_0x47e2f4['offset']=qs[_0x278e('0x1d')](_0x3c6674[_0x278e('0x2e')][_0x278e('0x1d')]);}return _0x44d023[_0x278e('0x4f')](_0x47e2f4);}})[_0x278e('0x25')](function(_0x4e23b2){if(_0x4e23b2){return _0x4e23b2?{'count':_0x39ab45,'rows':_0x4e23b2}:null;}})['then'](respondWithResult(_0x3de026,null))[_0x278e('0x46')](handleError(_0x3de026,null));};
\ No newline at end of file
index 3b5934d..88616dc 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0xc604=['moment','bluebird','path','../../config/environment','./intFreshsalesConfiguration.attributes','exports','define','FreshsalesConfiguration','util','../../config/logger'];(function(_0x42cf22,_0x21dc0c){var _0x34d95c=function(_0x3b4165){while(--_0x3b4165){_0x42cf22['push'](_0x42cf22['shift']());}};_0x34d95c(++_0x21dc0c);}(_0xc604,0x198));var _0x4c60=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0xc604[_0x3dd15e];return _0x231fd0;};'use strict';var _=require('lodash');var util=require(_0x4c60('0x0'));var logger=require(_0x4c60('0x1'))('api');var moment=require(_0x4c60('0x2'));var BPromise=require(_0x4c60('0x3'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x4c60('0x4'));var rimraf=require('rimraf');var config=require(_0x4c60('0x5'));var attributes=require(_0x4c60('0x6'));module[_0x4c60('0x7')]=function(_0x3d2e03,_0x2e05b9){return _0x3d2e03[_0x4c60('0x8')](_0x4c60('0x9'),attributes,{'tableName':'int_freshsales_configurations','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index df9cc9f..9a217b8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0xc0b1=['bluebird','randomstring','ioredis','../../mysqldb','../../config/logger','rpc','../../config/environment','client','http','request','then','info','request\x20sent','FreshsalesConfiguration,\x20%s,\x20%s,\x20%s','error','code','FreshsalesConfiguration,\x20%s,\x20%s','message','result','catch','lodash','util','moment'];(function(_0xdb282b,_0xc9028c){var _0x429986=function(_0x1f8175){while(--_0x1f8175){_0xdb282b['push'](_0xdb282b['shift']());}};_0x429986(++_0xc9028c);}(_0xc0b1,0x184));var _0x1c0b=function(_0x355ce8,_0x5f1d0a){_0x355ce8=_0x355ce8-0x0;var _0x1db8b8=_0xc0b1[_0x355ce8];return _0x1db8b8;};'use strict';var _=require(_0x1c0b('0x0'));var util=require(_0x1c0b('0x1'));var moment=require(_0x1c0b('0x2'));var BPromise=require(_0x1c0b('0x3'));var rs=require(_0x1c0b('0x4'));var fs=require('fs');var Redis=require(_0x1c0b('0x5'));var db=require(_0x1c0b('0x6'))['db'];var utils=require('../../config/utils');var logger=require(_0x1c0b('0x7'))(_0x1c0b('0x8'));var config=require(_0x1c0b('0x9'));var jayson=require('jayson/promise');var client=jayson[_0x1c0b('0xa')][_0x1c0b('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x47b0c0,_0x19b3a5,_0x5b6810){return new BPromise(function(_0xf7b6f,_0x104503){return client[_0x1c0b('0xc')](_0x47b0c0,_0x5b6810)[_0x1c0b('0xd')](function(_0x1ceb3f){logger[_0x1c0b('0xe')]('FreshsalesConfiguration,\x20%s,\x20%s',_0x19b3a5,_0x1c0b('0xf'));logger['debug'](_0x1c0b('0x10'),_0x19b3a5,_0x1c0b('0xf'),JSON['stringify'](_0x1ceb3f));if(_0x1ceb3f[_0x1c0b('0x11')]){if(_0x1ceb3f[_0x1c0b('0x11')][_0x1c0b('0x12')]===0x1f4){logger[_0x1c0b('0x11')](_0x1c0b('0x13'),_0x19b3a5,_0x1ceb3f[_0x1c0b('0x11')]['message']);return _0x104503(_0x1ceb3f['error'][_0x1c0b('0x14')]);}logger[_0x1c0b('0x11')](_0x1c0b('0x13'),_0x19b3a5,_0x1ceb3f[_0x1c0b('0x11')]['message']);return _0xf7b6f(_0x1ceb3f[_0x1c0b('0x11')][_0x1c0b('0x14')]);}else{logger[_0x1c0b('0xe')](_0x1c0b('0x13'),_0x19b3a5,_0x1c0b('0xf'));_0xf7b6f(_0x1ceb3f[_0x1c0b('0x15')]['message']);}})[_0x1c0b('0x16')](function(_0x1300b6){logger['error']('FreshsalesConfiguration,\x20%s,\x20%s',_0x19b3a5,_0x1300b6);_0x104503(_0x1300b6);});});}
\ No newline at end of file
index d298442..641ead2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0xd84b=['fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','isAuthenticated','index','get','delete','/:id','destroy','exports','util','path','connect-timeout'];(function(_0x2a5099,_0x329e92){var _0x2802f1=function(_0x53f99b){while(--_0x53f99b){_0x2a5099['push'](_0x2a5099['shift']());}};_0x2802f1(++_0x329e92);}(_0xd84b,0x177));var _0xbd84=function(_0x5cb682,_0x5e8950){_0x5cb682=_0x5cb682-0x0;var _0x4ac763=_0xd84b[_0x5cb682];return _0x4ac763;};'use strict';var multer=require('multer');var util=require(_0xbd84('0x0'));var path=require(_0xbd84('0x1'));var timeout=require(_0xbd84('0x2'));var express=require('express');var router=express['Router']();var fs_extra=require(_0xbd84('0x3'));var auth=require(_0xbd84('0x4'));var interaction=require(_0xbd84('0x5'));var config=require(_0xbd84('0x6'));var controller=require('./intFreshsalesField.controller');router['get']('/',auth[_0xbd84('0x7')](),controller[_0xbd84('0x8')]);router[_0xbd84('0x9')]('/:id',auth['isAuthenticated'](),controller['show']);router['post']('/',auth[_0xbd84('0x7')](),controller['create']);router['put']('/:id',auth['isAuthenticated'](),controller['update']);router[_0xbd84('0xa')](_0xbd84('0xb'),auth[_0xbd84('0x7')](),controller[_0xbd84('0xc')]);module[_0xbd84('0xd')]=router;
\ No newline at end of file
index eb830a5..bbb82e6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0xfee8=['sequelize','exports','ENUM','string','variable','customVariable','STRING'];(function(_0x321bb2,_0x202794){var _0x9c12ed=function(_0x263dd3){while(--_0x263dd3){_0x321bb2['push'](_0x321bb2['shift']());}};_0x9c12ed(++_0x202794);}(_0xfee8,0x1dc));var _0x8fee=function(_0x49c057,_0xc808ed){_0x49c057=_0x49c057-0x0;var _0xd8f0e6=_0xfee8[_0x49c057];return _0xd8f0e6;};'use strict';var Sequelize=require(_0x8fee('0x0'));module[_0x8fee('0x1')]={'type':{'type':Sequelize[_0x8fee('0x2')](_0x8fee('0x3'),_0x8fee('0x4'),_0x8fee('0x5'),'keyValue','picklist'),'defaultValue':_0x8fee('0x3')},'content':{'type':Sequelize['STRING']},'key':{'type':Sequelize[_0x8fee('0x6')]},'keyType':{'type':Sequelize[_0x8fee('0x2')](_0x8fee('0x3'),_0x8fee('0x4'),'customVariable')},'keyContent':{'type':Sequelize[_0x8fee('0x6')]},'idField':{'type':Sequelize[_0x8fee('0x6')]},'nameField':{'type':Sequelize['STRING']},'customField':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'variableName':{'type':Sequelize[_0x8fee('0x6')]}};
\ No newline at end of file
index e9792ef..7c09379 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0x5cb0=['../../components/parsers/qs','../../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','save','then','destroy','error','name','send','index','map','FreshsalesField','fieldName','type','model','query','filters','intersection','attributes','fields','length','order','sort','where','pick','filter','merge','VIRTUAL','includeAll','include','findAll','catch','params','keys','find','create','body','update','eml-format','rimraf','zip-dir','request-promise','moment','bluebird','mustache','util','sox','to-csv','fs-extra','squel','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service'];(function(_0x21a098,_0x204c09){var _0x3233a5=function(_0x192c82){while(--_0x192c82){_0x21a098['push'](_0x21a098['shift']());}};_0x3233a5(++_0x204c09);}(_0x5cb0,0x10d));var _0x05cb=function(_0x22ef76,_0x5a8fbd){_0x22ef76=_0x22ef76-0x0;var _0x2e39ef=_0x5cb0[_0x22ef76];return _0x2e39ef;};'use strict';var emlformat=require(_0x05cb('0x0'));var rimraf=require(_0x05cb('0x1'));var zipdir=require(_0x05cb('0x2'));var jsonpatch=require('fast-json-patch');var rp=require(_0x05cb('0x3'));var moment=require(_0x05cb('0x4'));var BPromise=require(_0x05cb('0x5'));var Mustache=require(_0x05cb('0x6'));var util=require(_0x05cb('0x7'));var path=require('path');var sox=require(_0x05cb('0x8'));var csv=require(_0x05cb('0x9'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x05cb('0xa'));var _=require('lodash');var squel=require(_0x05cb('0xb'));var crypto=require(_0x05cb('0xc'));var jsforce=require(_0x05cb('0xd'));var deskjs=require(_0x05cb('0xe'));var toCsv=require('to-csv');var querystring=require(_0x05cb('0xf'));var Papa=require(_0x05cb('0x10'));var Redis=require(_0x05cb('0x11'));var authService=require(_0x05cb('0x12'));var qs=require(_0x05cb('0x13'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x05cb('0x14'));var logger=require(_0x05cb('0x15'))(_0x05cb('0x16'));var utils=require(_0x05cb('0x17'));var config=require(_0x05cb('0x18'));var licenseUtil=require(_0x05cb('0x19'));var db=require(_0x05cb('0x1a'))['db'];function respondWithStatusCode(_0xb53221,_0x589e7f){_0x589e7f=_0x589e7f||0xcc;return function(_0x56bfd6){if(_0x56bfd6){return _0xb53221[_0x05cb('0x1b')](_0x589e7f);}return _0xb53221[_0x05cb('0x1c')](_0x589e7f)[_0x05cb('0x1d')]();};}function respondWithResult(_0x3b94f5,_0x3e229e){_0x3e229e=_0x3e229e||0xc8;return function(_0x587e14){if(_0x587e14){return _0x3b94f5['status'](_0x3e229e)[_0x05cb('0x1e')](_0x587e14);}};}function respondWithFilteredResult(_0x4cd1e3,_0x11dec5){return function(_0x373135){if(_0x373135){var _0x2aff72=typeof _0x11dec5[_0x05cb('0x1f')]===_0x05cb('0x20')&&typeof _0x11dec5['limit']==='undefined';var _0x1d6846=_0x373135[_0x05cb('0x21')];var _0x77b3dc=_0x2aff72?0x0:_0x11dec5['offset'];var _0x45255b=_0x2aff72?_0x373135[_0x05cb('0x21')]:_0x11dec5[_0x05cb('0x1f')]+_0x11dec5[_0x05cb('0x22')];var _0x2be12e;if(_0x45255b>=_0x1d6846){_0x45255b=_0x1d6846;_0x2be12e=0xc8;}else{_0x2be12e=0xce;}_0x4cd1e3[_0x05cb('0x1c')](_0x2be12e);return _0x4cd1e3[_0x05cb('0x23')](_0x05cb('0x24'),_0x77b3dc+'-'+_0x45255b+'/'+_0x1d6846)['json'](_0x373135);}return null;};}function patchUpdates(_0x41d142){return function(_0x5918a2){try{jsonpatch['apply'](_0x5918a2,_0x41d142,!![]);}catch(_0x1b8bd0){return BPromise['reject'](_0x1b8bd0);}return _0x5918a2[_0x05cb('0x25')]();};}function saveUpdates(_0x552e9f,_0xec875c){return function(_0x3a346e){if(_0x3a346e){return _0x3a346e['update'](_0x552e9f)[_0x05cb('0x26')](function(_0x1d341e){return _0x1d341e;});}return null;};}function removeEntity(_0x45c4e3,_0x405b43){return function(_0x505347){if(_0x505347){return _0x505347[_0x05cb('0x27')]()[_0x05cb('0x26')](function(){_0x45c4e3[_0x05cb('0x1c')](0xcc)[_0x05cb('0x1d')]();});}};}function handleEntityNotFound(_0x3ae813,_0x227a0b){return function(_0x4c8c59){if(!_0x4c8c59){_0x3ae813[_0x05cb('0x1b')](0x194);}return _0x4c8c59;};}function handleError(_0x40cc21,_0x37a137){_0x37a137=_0x37a137||0x1f4;return function(_0x459893){logger[_0x05cb('0x28')](_0x459893['stack']);if(_0x459893['name']){delete _0x459893[_0x05cb('0x29')];}_0x40cc21[_0x05cb('0x1c')](_0x37a137)[_0x05cb('0x2a')](_0x459893);};}exports[_0x05cb('0x2b')]=function(_0x2bcb89,_0x3a1ac4){var _0x3db040={},_0x442360={},_0x309542={'count':0x0,'rows':[]};var _0x40a850=_[_0x05cb('0x2c')](db[_0x05cb('0x2d')]['rawAttributes'],function(_0x1f7f10){return{'name':_0x1f7f10[_0x05cb('0x2e')],'type':_0x1f7f10[_0x05cb('0x2f')]['key']};});_0x442360[_0x05cb('0x30')]=_[_0x05cb('0x2c')](_0x40a850,_0x05cb('0x29'));_0x442360[_0x05cb('0x31')]=_['keys'](_0x2bcb89['query']);_0x442360[_0x05cb('0x32')]=_[_0x05cb('0x33')](_0x442360[_0x05cb('0x30')],_0x442360[_0x05cb('0x31')]);_0x3db040[_0x05cb('0x34')]=_[_0x05cb('0x33')](_0x442360[_0x05cb('0x30')],qs['fields'](_0x2bcb89[_0x05cb('0x31')][_0x05cb('0x35')]));_0x3db040[_0x05cb('0x34')]=_0x3db040[_0x05cb('0x34')][_0x05cb('0x36')]?_0x3db040[_0x05cb('0x34')]:_0x442360[_0x05cb('0x30')];if(!_0x2bcb89[_0x05cb('0x31')]['hasOwnProperty']('nolimit')){_0x3db040[_0x05cb('0x22')]=qs[_0x05cb('0x22')](_0x2bcb89[_0x05cb('0x31')][_0x05cb('0x22')]);_0x3db040[_0x05cb('0x1f')]=qs[_0x05cb('0x1f')](_0x2bcb89[_0x05cb('0x31')][_0x05cb('0x1f')]);}_0x3db040[_0x05cb('0x37')]=qs[_0x05cb('0x38')](_0x2bcb89['query'][_0x05cb('0x38')]);_0x3db040[_0x05cb('0x39')]=qs[_0x05cb('0x32')](_[_0x05cb('0x3a')](_0x2bcb89[_0x05cb('0x31')],_0x442360[_0x05cb('0x32')]),_0x40a850);if(_0x2bcb89['query'][_0x05cb('0x3b')]){_0x3db040['where']=_[_0x05cb('0x3c')](_0x3db040['where'],{'$or':_[_0x05cb('0x2c')](_0x40a850,function(_0x420000){if(_0x420000[_0x05cb('0x2f')]!==_0x05cb('0x3d')){var _0x9c9892={};_0x9c9892[_0x420000['name']]={'$like':'%'+_0x2bcb89[_0x05cb('0x31')][_0x05cb('0x3b')]+'%'};return _0x9c9892;}})});}_0x3db040=_[_0x05cb('0x3c')]({},_0x3db040,_0x2bcb89['options']);var _0x25cef6={'where':_0x3db040['where']};return db[_0x05cb('0x2d')][_0x05cb('0x21')](_0x25cef6)[_0x05cb('0x26')](function(_0x489997){_0x309542['count']=_0x489997;if(_0x2bcb89['query'][_0x05cb('0x3e')]){_0x3db040[_0x05cb('0x3f')]=[{'all':!![]}];}return db[_0x05cb('0x2d')][_0x05cb('0x40')](_0x3db040);})['then'](function(_0x2422ba){_0x309542['rows']=_0x2422ba;return _0x309542;})['then'](respondWithFilteredResult(_0x3a1ac4,_0x3db040))[_0x05cb('0x41')](handleError(_0x3a1ac4,null));};exports['show']=function(_0x1ed783,_0x25a607){var _0x2981ca={'raw':!![],'where':{'id':_0x1ed783[_0x05cb('0x42')]['id']}},_0x4d198b={};_0x4d198b[_0x05cb('0x30')]=_[_0x05cb('0x43')](db[_0x05cb('0x2d')]['rawAttributes']);_0x4d198b[_0x05cb('0x31')]=_[_0x05cb('0x43')](_0x1ed783['query']);_0x4d198b['filters']=_['intersection'](_0x4d198b[_0x05cb('0x30')],_0x4d198b['query']);_0x2981ca['attributes']=_[_0x05cb('0x33')](_0x4d198b['model'],qs['fields'](_0x1ed783[_0x05cb('0x31')][_0x05cb('0x35')]));_0x2981ca['attributes']=_0x2981ca[_0x05cb('0x34')][_0x05cb('0x36')]?_0x2981ca[_0x05cb('0x34')]:_0x4d198b[_0x05cb('0x30')];if(_0x1ed783['query'][_0x05cb('0x3e')]){_0x2981ca[_0x05cb('0x3f')]=[{'all':!![]}];}_0x2981ca=_['merge']({},_0x2981ca,_0x1ed783['options']);return db[_0x05cb('0x2d')][_0x05cb('0x44')](_0x2981ca)[_0x05cb('0x26')](handleEntityNotFound(_0x25a607,null))['then'](respondWithResult(_0x25a607,null))[_0x05cb('0x41')](handleError(_0x25a607,null));};exports[_0x05cb('0x45')]=function(_0x133ddb,_0x511c02){return db[_0x05cb('0x2d')][_0x05cb('0x45')](_0x133ddb[_0x05cb('0x46')],{})[_0x05cb('0x26')](respondWithResult(_0x511c02,0xc9))[_0x05cb('0x41')](handleError(_0x511c02,null));};exports[_0x05cb('0x47')]=function(_0x4ae2c4,_0xf39c0){if(_0x4ae2c4[_0x05cb('0x46')]['id']){delete _0x4ae2c4[_0x05cb('0x46')]['id'];}return db[_0x05cb('0x2d')][_0x05cb('0x44')]({'where':{'id':_0x4ae2c4['params']['id']}})[_0x05cb('0x26')](handleEntityNotFound(_0xf39c0,null))[_0x05cb('0x26')](saveUpdates(_0x4ae2c4[_0x05cb('0x46')],null))['then'](respondWithResult(_0xf39c0,null))[_0x05cb('0x41')](handleError(_0xf39c0,null));};exports['destroy']=function(_0x5b6dff,_0x4ee037){return db[_0x05cb('0x2d')][_0x05cb('0x44')]({'where':{'id':_0x5b6dff[_0x05cb('0x42')]['id']}})[_0x05cb('0x26')](handleEntityNotFound(_0x4ee037,null))[_0x05cb('0x26')](removeEntity(_0x4ee037,null))[_0x05cb('0x41')](handleError(_0x4ee037,null));};
\ No newline at end of file
index 4b14bc7..eb3e6d3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0xad07=['util','api','moment','path','rimraf','../../config/environment','exports','define','FreshsalesField','idField','FieldId','lodash'];(function(_0x31c41b,_0x58da09){var _0x59dd25=function(_0x1be741){while(--_0x1be741){_0x31c41b['push'](_0x31c41b['shift']());}};_0x59dd25(++_0x58da09);}(_0xad07,0xe3));var _0x7ad0=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0xad07[_0x3dd15e];return _0x231fd0;};'use strict';var _=require(_0x7ad0('0x0'));var util=require(_0x7ad0('0x1'));var logger=require('../../config/logger')(_0x7ad0('0x2'));var moment=require(_0x7ad0('0x3'));var BPromise=require('bluebird');var rp=require('request-promise');var fs=require('fs');var path=require(_0x7ad0('0x4'));var rimraf=require(_0x7ad0('0x5'));var config=require(_0x7ad0('0x6'));var attributes=require('./intFreshsalesField.attributes');module[_0x7ad0('0x7')]=function(_0x4bff98,_0x5e81bd){return _0x4bff98[_0x7ad0('0x8')](_0x7ad0('0x9'),attributes,{'tableName':'int_freshsales_fields','paranoid':![],'indexes':[{'name':'freshsales_unique_index','fields':[_0x7ad0('0xa'),_0x7ad0('0xb')],'unique':!![]}],'timestamps':!![]});};
\ No newline at end of file
index 27e702b..b0333c4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0xacf4=['message','result','catch','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','../../config/environment','jayson/promise','http','then','info','FreshsalesField,\x20%s,\x20%s','request\x20sent','FreshsalesField,\x20%s,\x20%s,\x20%s','error'];(function(_0x38ced4,_0x24263f){var _0x547c07=function(_0x279fc4){while(--_0x279fc4){_0x38ced4['push'](_0x38ced4['shift']());}};_0x547c07(++_0x24263f);}(_0xacf4,0xe7));var _0x4acf=function(_0x13fc7c,_0x10ae32){_0x13fc7c=_0x13fc7c-0x0;var _0x5bec3b=_0xacf4[_0x13fc7c];return _0x5bec3b;};'use strict';var _=require('lodash');var util=require('util');var moment=require(_0x4acf('0x0'));var BPromise=require(_0x4acf('0x1'));var rs=require(_0x4acf('0x2'));var fs=require('fs');var Redis=require(_0x4acf('0x3'));var db=require(_0x4acf('0x4'))['db'];var utils=require(_0x4acf('0x5'));var logger=require(_0x4acf('0x6'))('rpc');var config=require(_0x4acf('0x7'));var jayson=require(_0x4acf('0x8'));var client=jayson['client'][_0x4acf('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x2ba08a,_0x649ad2,_0x45a5a4){return new BPromise(function(_0x25d345,_0x50f5f4){return client['request'](_0x2ba08a,_0x45a5a4)[_0x4acf('0xa')](function(_0x59f559){logger[_0x4acf('0xb')](_0x4acf('0xc'),_0x649ad2,_0x4acf('0xd'));logger['debug'](_0x4acf('0xe'),_0x649ad2,_0x4acf('0xd'),JSON['stringify'](_0x59f559));if(_0x59f559['error']){if(_0x59f559[_0x4acf('0xf')]['code']===0x1f4){logger['error'](_0x4acf('0xc'),_0x649ad2,_0x59f559[_0x4acf('0xf')][_0x4acf('0x10')]);return _0x50f5f4(_0x59f559[_0x4acf('0xf')][_0x4acf('0x10')]);}logger[_0x4acf('0xf')](_0x4acf('0xc'),_0x649ad2,_0x59f559[_0x4acf('0xf')][_0x4acf('0x10')]);return _0x25d345(_0x59f559[_0x4acf('0xf')][_0x4acf('0x10')]);}else{logger['info'](_0x4acf('0xc'),_0x649ad2,'request\x20sent');_0x25d345(_0x59f559[_0x4acf('0x11')][_0x4acf('0x10')]);}})[_0x4acf('0x12')](function(_0x5d934a){logger['error'](_0x4acf('0xc'),_0x649ad2,_0x5d934a);_0x50f5f4(_0x5d934a);});});}
\ No newline at end of file
index 13bd489..6e88101 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(_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
+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(_0x3dbcfd,_0x388297){var _0x10c50f=function(_0x161f8c){while(--_0x161f8c){_0x3dbcfd['push'](_0x3dbcfd['shift']());}};_0x10c50f(++_0x388297);}(_0x9957,0x93));var _0x7995=function(_0x14add3,_0x13ce8d){_0x14add3=_0x14add3-0x0;var _0x4a174f=_0x9957[_0x14add3];return _0x4a174f;};'use strict';var multer=require(_0x7995('0x0'));var util=require(_0x7995('0x1'));var path=require(_0x7995('0x2'));var timeout=require(_0x7995('0x3'));var express=require('express');var router=express[_0x7995('0x4')]();var fs_extra=require(_0x7995('0x5'));var auth=require(_0x7995('0x6'));var interaction=require(_0x7995('0x7'));var config=require('../../config/environment');var controller=require(_0x7995('0x8'));router[_0x7995('0x9')]('/',auth[_0x7995('0xa')](),controller[_0x7995('0xb')]);router[_0x7995('0x9')](_0x7995('0xc'),auth['isAuthenticated'](),controller[_0x7995('0xd')]);router[_0x7995('0x9')]('/:id/configurations',auth[_0x7995('0xa')](),controller[_0x7995('0xe')]);router[_0x7995('0x9')](_0x7995('0xf'),auth[_0x7995('0xa')](),controller[_0x7995('0x10')]);router[_0x7995('0x11')]('/',auth['isAuthenticated'](),controller[_0x7995('0x12')]);router[_0x7995('0x11')]('/:id/configurations',auth[_0x7995('0xa')](),controller[_0x7995('0x13')]);router[_0x7995('0x14')](_0x7995('0xc'),auth[_0x7995('0xa')](),controller[_0x7995('0x15')]);router[_0x7995('0x16')]('/:id',auth['isAuthenticated'](),controller[_0x7995('0x17')]);module[_0x7995('0x18')]=router;
\ No newline at end of file
index 5e4b0c2..3c17151 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0x7e5b=['STRING','username','ENUM','integrationTab','newTab','sequelize','exports'];(function(_0x459d2e,_0x4ea982){var _0x23e171=function(_0x42c45d){while(--_0x42c45d){_0x459d2e['push'](_0x459d2e['shift']());}};_0x23e171(++_0x4ea982);}(_0x7e5b,0x9f));var _0xb7e5=function(_0x5c41f3,_0x4a8ccf){_0x5c41f3=_0x5c41f3-0x0;var _0x5c4252=_0x7e5b[_0x5c41f3];return _0x5c4252;};'use strict';var Sequelize=require(_0xb7e5('0x0'));module[_0xb7e5('0x1')]={'name':{'type':Sequelize[_0xb7e5('0x2')]},'description':{'type':Sequelize[_0xb7e5('0x2')]},'username':{'type':Sequelize[_0xb7e5('0x2')],'unique':_0xb7e5('0x3')},'remoteUri':{'type':Sequelize[_0xb7e5('0x2')]},'password':{'type':Sequelize[_0xb7e5('0x2')]},'clientId':{'type':Sequelize[_0xb7e5('0x2')]},'clientSecret':{'type':Sequelize['STRING']},'securityToken':{'type':Sequelize['STRING']},'serverUrl':{'type':Sequelize[_0xb7e5('0x2')],'allowNull':![]},'type':{'type':Sequelize[_0xb7e5('0x4')](_0xb7e5('0x5'),_0xb7e5('0x6')),'defaultValue':'integrationTab'}};
\ No newline at end of file
index a9392d2..5c65f36 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0xec58=['request-promise','moment','bluebird','util','sox','ejs','crypto','jsforce','desk.js','querystring','papaparse','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','../../config/license/util','../../mysqldb','../../components/integrations/configuration','sendStatus','status','end','undefined','limit','count','offset','set','Content-Range','save','then','destroy','stack','name','send','index','map','SalesforceAccount','rawAttributes','type','model','query','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','pick','merge','VIRTUAL','filter','options','findAll','catch','keys','includeAll','include','find','create','body','update','params','getConfigurations','findOne','SalesforceConfiguration','getSubjects','Descriptions','channel','Subjects','SalesforceField','getFields','Task','clientId','clientSecret','securityToken','remoteUri','lastIndexOf','Connection','username','password','concat','isNil','ticketType','sobject','describe','OwnerId','ActivityDate','Subject','Description','string','int','picklist','boolean','email','textarea','remove','includes','label','custom','picklistValues','value','True','true','false','test','statusCode','error','getFields,\x20%s,\x20%s,\x20%s','stringify','Wrong\x20credentials','eml-format','fast-json-patch'];(function(_0x281357,_0x3dada9){var _0x3d0f2d=function(_0x105822){while(--_0x105822){_0x281357['push'](_0x281357['shift']());}};_0x3d0f2d(++_0x3dada9);}(_0xec58,0x1ca));var _0x8ec5=function(_0x17e174,_0x4991f8){_0x17e174=_0x17e174-0x0;var _0x3f26f1=_0xec58[_0x17e174];return _0x3f26f1;};'use strict';var emlformat=require(_0x8ec5('0x0'));var rimraf=require('rimraf');var zipdir=require('zip-dir');var jsonpatch=require(_0x8ec5('0x1'));var rp=require(_0x8ec5('0x2'));var moment=require(_0x8ec5('0x3'));var BPromise=require(_0x8ec5('0x4'));var Mustache=require('mustache');var util=require(_0x8ec5('0x5'));var path=require('path');var sox=require(_0x8ec5('0x6'));var csv=require('to-csv');var ejs=require(_0x8ec5('0x7'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require('lodash');var squel=require('squel');var crypto=require(_0x8ec5('0x8'));var jsforce=require(_0x8ec5('0x9'));var deskjs=require(_0x8ec5('0xa'));var toCsv=require('to-csv');var querystring=require(_0x8ec5('0xb'));var Papa=require(_0x8ec5('0xc'));var Redis=require('ioredis');var authService=require(_0x8ec5('0xd'));var qs=require(_0x8ec5('0xe'));var as=require(_0x8ec5('0xf'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x8ec5('0x10'))('api');var utils=require('../../config/utils');var config=require('../../config/environment');var licenseUtil=require(_0x8ec5('0x11'));var db=require(_0x8ec5('0x12'))['db'];var integrations=require(_0x8ec5('0x13'));function respondWithStatusCode(_0x164b14,_0x36b705){_0x36b705=_0x36b705||0xcc;return function(_0x25f5dd){if(_0x25f5dd){return _0x164b14[_0x8ec5('0x14')](_0x36b705);}return _0x164b14[_0x8ec5('0x15')](_0x36b705)[_0x8ec5('0x16')]();};}function respondWithResult(_0x5284a,_0x3622af){_0x3622af=_0x3622af||0xc8;return function(_0x649286){if(_0x649286){return _0x5284a['status'](_0x3622af)['json'](_0x649286);}};}function respondWithFilteredResult(_0x122631,_0x5235a6){return function(_0x5724a2){if(_0x5724a2){var _0x2e190e=typeof _0x5235a6['offset']===_0x8ec5('0x17')&&typeof _0x5235a6[_0x8ec5('0x18')]===_0x8ec5('0x17');var _0x3187b1=_0x5724a2['count'];var _0x206a41=_0x2e190e?0x0:_0x5235a6['offset'];var _0x3ff0d3=_0x2e190e?_0x5724a2[_0x8ec5('0x19')]:_0x5235a6[_0x8ec5('0x1a')]+_0x5235a6[_0x8ec5('0x18')];var _0x33e3f2;if(_0x3ff0d3>=_0x3187b1){_0x3ff0d3=_0x3187b1;_0x33e3f2=0xc8;}else{_0x33e3f2=0xce;}_0x122631[_0x8ec5('0x15')](_0x33e3f2);return _0x122631[_0x8ec5('0x1b')](_0x8ec5('0x1c'),_0x206a41+'-'+_0x3ff0d3+'/'+_0x3187b1)['json'](_0x5724a2);}return null;};}function patchUpdates(_0x4c08ba){return function(_0x275554){try{jsonpatch['apply'](_0x275554,_0x4c08ba,!![]);}catch(_0x2bd54b){return BPromise['reject'](_0x2bd54b);}return _0x275554[_0x8ec5('0x1d')]();};}function saveUpdates(_0x1e9b51,_0x1e2f1d){return function(_0x1eab1d){if(_0x1eab1d){return _0x1eab1d['update'](_0x1e9b51)[_0x8ec5('0x1e')](function(_0x1c4b41){return _0x1c4b41;});}return null;};}function removeEntity(_0x34f8a8,_0x113fa3){return function(_0x2107e8){if(_0x2107e8){return _0x2107e8[_0x8ec5('0x1f')]()['then'](function(){_0x34f8a8['status'](0xcc)[_0x8ec5('0x16')]();});}};}function handleEntityNotFound(_0x4b8731,_0x2826d9){return function(_0xd28249){if(!_0xd28249){_0x4b8731['sendStatus'](0x194);}return _0xd28249;};}function handleError(_0x4f2725,_0x3acb80){_0x3acb80=_0x3acb80||0x1f4;return function(_0x4ce962){logger['error'](_0x4ce962[_0x8ec5('0x20')]);if(_0x4ce962[_0x8ec5('0x21')]){delete _0x4ce962[_0x8ec5('0x21')];}_0x4f2725[_0x8ec5('0x15')](_0x3acb80)[_0x8ec5('0x22')](_0x4ce962);};}exports[_0x8ec5('0x23')]=function(_0x41bc23,_0x2eb334){var _0x1bdd6f={},_0x5f09a7={},_0x242743={'count':0x0,'rows':[]};var _0x5d8b7b=_[_0x8ec5('0x24')](db[_0x8ec5('0x25')][_0x8ec5('0x26')],function(_0x4a2886){return{'name':_0x4a2886['fieldName'],'type':_0x4a2886[_0x8ec5('0x27')]['key']};});_0x5f09a7[_0x8ec5('0x28')]=_[_0x8ec5('0x24')](_0x5d8b7b,_0x8ec5('0x21'));_0x5f09a7[_0x8ec5('0x29')]=_['keys'](_0x41bc23['query']);_0x5f09a7[_0x8ec5('0x2a')]=_[_0x8ec5('0x2b')](_0x5f09a7['model'],_0x5f09a7[_0x8ec5('0x29')]);_0x1bdd6f[_0x8ec5('0x2c')]=_['intersection'](_0x5f09a7[_0x8ec5('0x28')],qs[_0x8ec5('0x2d')](_0x41bc23[_0x8ec5('0x29')][_0x8ec5('0x2d')]));_0x1bdd6f[_0x8ec5('0x2c')]=_0x1bdd6f[_0x8ec5('0x2c')][_0x8ec5('0x2e')]?_0x1bdd6f[_0x8ec5('0x2c')]:_0x5f09a7['model'];if(!_0x41bc23[_0x8ec5('0x29')][_0x8ec5('0x2f')](_0x8ec5('0x30'))){_0x1bdd6f[_0x8ec5('0x18')]=qs['limit'](_0x41bc23[_0x8ec5('0x29')]['limit']);_0x1bdd6f[_0x8ec5('0x1a')]=qs[_0x8ec5('0x1a')](_0x41bc23[_0x8ec5('0x29')][_0x8ec5('0x1a')]);}_0x1bdd6f[_0x8ec5('0x31')]=qs[_0x8ec5('0x32')](_0x41bc23['query'][_0x8ec5('0x32')]);_0x1bdd6f[_0x8ec5('0x33')]=qs[_0x8ec5('0x2a')](_[_0x8ec5('0x34')](_0x41bc23['query'],_0x5f09a7[_0x8ec5('0x2a')]),_0x5d8b7b);if(_0x41bc23[_0x8ec5('0x29')]['filter']){_0x1bdd6f[_0x8ec5('0x33')]=_[_0x8ec5('0x35')](_0x1bdd6f[_0x8ec5('0x33')],{'$or':_[_0x8ec5('0x24')](_0x5d8b7b,function(_0x3cd0ea){if(_0x3cd0ea[_0x8ec5('0x27')]!==_0x8ec5('0x36')){var _0x1003a9={};_0x1003a9[_0x3cd0ea['name']]={'$like':'%'+_0x41bc23[_0x8ec5('0x29')][_0x8ec5('0x37')]+'%'};return _0x1003a9;}})});}_0x1bdd6f=_[_0x8ec5('0x35')]({},_0x1bdd6f,_0x41bc23[_0x8ec5('0x38')]);var _0x143cb5={'where':_0x1bdd6f['where']};return db[_0x8ec5('0x25')]['count'](_0x143cb5)['then'](function(_0x2f90af){_0x242743['count']=_0x2f90af;if(_0x41bc23[_0x8ec5('0x29')]['includeAll']){_0x1bdd6f['include']=[{'all':!![]}];}return db['SalesforceAccount'][_0x8ec5('0x39')](_0x1bdd6f);})[_0x8ec5('0x1e')](function(_0x4daf24){_0x242743['rows']=_0x4daf24;return _0x242743;})[_0x8ec5('0x1e')](respondWithFilteredResult(_0x2eb334,_0x1bdd6f))[_0x8ec5('0x3a')](handleError(_0x2eb334,null));};exports['show']=function(_0x43665f,_0x4ecb82){var _0x47eb2d={'raw':![],'where':{'id':_0x43665f['params']['id']}},_0x53255c={};_0x53255c[_0x8ec5('0x28')]=_['keys'](db['SalesforceAccount'][_0x8ec5('0x26')]);_0x53255c['query']=_[_0x8ec5('0x3b')](_0x43665f['query']);_0x53255c[_0x8ec5('0x2a')]=_[_0x8ec5('0x2b')](_0x53255c[_0x8ec5('0x28')],_0x53255c[_0x8ec5('0x29')]);_0x47eb2d[_0x8ec5('0x2c')]=_[_0x8ec5('0x2b')](_0x53255c[_0x8ec5('0x28')],qs['fields'](_0x43665f[_0x8ec5('0x29')][_0x8ec5('0x2d')]));_0x47eb2d['attributes']=_0x47eb2d[_0x8ec5('0x2c')]['length']?_0x47eb2d[_0x8ec5('0x2c')]:_0x53255c[_0x8ec5('0x28')];if(_0x43665f[_0x8ec5('0x29')][_0x8ec5('0x3c')]){_0x47eb2d[_0x8ec5('0x3d')]=[{'all':!![]}];}_0x47eb2d=_[_0x8ec5('0x35')]({},_0x47eb2d,_0x43665f[_0x8ec5('0x38')]);return db[_0x8ec5('0x25')][_0x8ec5('0x3e')](_0x47eb2d)[_0x8ec5('0x1e')](handleEntityNotFound(_0x4ecb82,null))[_0x8ec5('0x1e')](respondWithResult(_0x4ecb82,null))['catch'](handleError(_0x4ecb82,null));};exports[_0x8ec5('0x3f')]=function(_0x37a6ad,_0x55d75f){return db[_0x8ec5('0x25')][_0x8ec5('0x3f')](_0x37a6ad[_0x8ec5('0x40')],{})[_0x8ec5('0x1e')](respondWithResult(_0x55d75f,0xc9))[_0x8ec5('0x3a')](handleError(_0x55d75f,null));};exports[_0x8ec5('0x41')]=function(_0x973ab1,_0x869792){if(_0x973ab1[_0x8ec5('0x40')]['id']){delete _0x973ab1[_0x8ec5('0x40')]['id'];}return db[_0x8ec5('0x25')][_0x8ec5('0x3e')]({'where':{'id':_0x973ab1[_0x8ec5('0x42')]['id']}})[_0x8ec5('0x1e')](handleEntityNotFound(_0x869792,null))['then'](saveUpdates(_0x973ab1['body'],null))[_0x8ec5('0x1e')](respondWithResult(_0x869792,null))[_0x8ec5('0x3a')](handleError(_0x869792,null));};exports['destroy']=function(_0x5ca641,_0x564b70){return db['SalesforceAccount'][_0x8ec5('0x3e')]({'where':{'id':_0x5ca641[_0x8ec5('0x42')]['id']}})[_0x8ec5('0x1e')](handleEntityNotFound(_0x564b70,null))['then'](removeEntity(_0x564b70,null))[_0x8ec5('0x3a')](handleError(_0x564b70,null));};exports[_0x8ec5('0x43')]=function(_0x4c8477,_0x508c65,_0x2bdf24){var _0x57eef5={};var _0x3720be={};var _0x189470;var _0x52c2b9;return db['SalesforceAccount'][_0x8ec5('0x44')]({'where':{'id':_0x4c8477[_0x8ec5('0x42')]['id']}})[_0x8ec5('0x1e')](handleEntityNotFound(_0x508c65,null))[_0x8ec5('0x1e')](function(_0x56c960){if(_0x56c960){_0x189470=_0x56c960;_0x3720be[_0x8ec5('0x28')]=_['keys'](db[_0x8ec5('0x45')]['rawAttributes']);_0x3720be[_0x8ec5('0x29')]=_[_0x8ec5('0x3b')](_0x4c8477[_0x8ec5('0x29')]);_0x3720be['filters']=_[_0x8ec5('0x2b')](_0x3720be[_0x8ec5('0x28')],_0x3720be['query']);_0x57eef5[_0x8ec5('0x2c')]=_['intersection'](_0x3720be[_0x8ec5('0x28')],qs[_0x8ec5('0x2d')](_0x4c8477[_0x8ec5('0x29')][_0x8ec5('0x2d')]));_0x57eef5[_0x8ec5('0x2c')]=_0x57eef5[_0x8ec5('0x2c')][_0x8ec5('0x2e')]?_0x57eef5[_0x8ec5('0x2c')]:_0x3720be['model'];_0x57eef5['order']=qs[_0x8ec5('0x32')](_0x4c8477['query']['sort']);_0x57eef5[_0x8ec5('0x33')]=qs[_0x8ec5('0x2a')](_[_0x8ec5('0x34')](_0x4c8477[_0x8ec5('0x29')],_0x3720be[_0x8ec5('0x2a')]));if(_0x4c8477[_0x8ec5('0x29')][_0x8ec5('0x37')]){_0x57eef5[_0x8ec5('0x33')]=_[_0x8ec5('0x35')](_0x57eef5[_0x8ec5('0x33')],{'$or':_[_0x8ec5('0x24')](_0x57eef5['attributes'],function(_0x5a325a){var _0x7f8f24={};_0x7f8f24[_0x5a325a]={'$like':'%'+_0x4c8477[_0x8ec5('0x29')][_0x8ec5('0x37')]+'%'};return _0x7f8f24;})});}_0x57eef5=_[_0x8ec5('0x35')]({},_0x57eef5,_0x4c8477[_0x8ec5('0x38')]);return _0x189470[_0x8ec5('0x43')](_0x57eef5);}})['then'](function(_0x4dcf87){if(_0x4dcf87){_0x52c2b9=_0x4dcf87['length'];if(!_0x4c8477['query'][_0x8ec5('0x2f')](_0x8ec5('0x30'))){_0x57eef5[_0x8ec5('0x18')]=qs[_0x8ec5('0x18')](_0x4c8477['query']['limit']);_0x57eef5['offset']=qs['offset'](_0x4c8477['query'][_0x8ec5('0x1a')]);}return _0x189470[_0x8ec5('0x43')](_0x57eef5);}})[_0x8ec5('0x1e')](function(_0x4639b6){if(_0x4639b6){return _0x4639b6?{'count':_0x52c2b9,'rows':_0x4639b6}:null;}})[_0x8ec5('0x1e')](respondWithResult(_0x508c65,null))[_0x8ec5('0x3a')](handleError(_0x508c65,null));};exports['addConfiguration']=function(_0x5371a0,_0x4e18e4,_0x30c832){if(_0x5371a0[_0x8ec5('0x40')]['id']){delete _0x5371a0['body']['id'];}return db[_0x8ec5('0x25')][_0x8ec5('0x44')]({'where':{'id':_0x5371a0[_0x8ec5('0x42')]['id']}})[_0x8ec5('0x1e')](handleEntityNotFound(_0x4e18e4,null))['then'](function(_0x6d253a){if(_0x6d253a){_0x5371a0[_0x8ec5('0x40')]['AccountId']=_0x6d253a['id'];_0x5371a0[_0x8ec5('0x40')]['Subjects']=integrations[_0x8ec5('0x46')](_0x5371a0[_0x8ec5('0x40')]['channel'],_0x5371a0['body'][_0x8ec5('0x27')]);_0x5371a0['body'][_0x8ec5('0x47')]=integrations['getDescriptions'](_0x5371a0[_0x8ec5('0x40')][_0x8ec5('0x48')],_0x5371a0['body'][_0x8ec5('0x27')]);return db[_0x8ec5('0x45')]['create'](_0x5371a0[_0x8ec5('0x40')],{'include':[{'model':db['SalesforceField'],'as':_0x8ec5('0x49')},{'model':db[_0x8ec5('0x4a')],'as':_0x8ec5('0x47')}]});}return null;})['then'](respondWithResult(_0x4e18e4,null))[_0x8ec5('0x3a')](handleError(_0x4e18e4,null));};exports[_0x8ec5('0x4b')]=function(_0x27dd6f,_0xfb4065,_0x5c4e58){var _0x492620;var _0x921065='';var _0x1ea014=_0x8ec5('0x4c');return db[_0x8ec5('0x25')][_0x8ec5('0x44')]({'where':{'id':_0x27dd6f[_0x8ec5('0x42')]['id']},'attributes':['id','remoteUri',_0x8ec5('0x4d'),_0x8ec5('0x4e'),'username','password',_0x8ec5('0x4f')]})['then'](handleEntityNotFound(_0xfb4065,null))[_0x8ec5('0x1e')](function(_0x34d2f2){if(_0x34d2f2){_0x921065=_0x34d2f2[_0x8ec5('0x50')];var _0x4cc63a=_0x921065['slice'](-0x1);if(_0x4cc63a==='/'){_0x921065=_0x921065['substring'](0x0,_0x921065[_0x8ec5('0x51')](_0x4cc63a));}_0x492620=new jsforce[(_0x8ec5('0x52'))]({'oauth2':{'loginUrl':_0x921065,'clientId':_0x34d2f2[_0x8ec5('0x4d')],'clientSecret':_0x34d2f2[_0x8ec5('0x4e')]}});return _0x492620['login'](_0x34d2f2[_0x8ec5('0x53')],_0x34d2f2[_0x8ec5('0x54')][_0x8ec5('0x55')](_0x34d2f2['securityToken']));}})['then'](function(_0x586903){if(_0x586903){if(!_[_0x8ec5('0x56')](_0x27dd6f['query'][_0x8ec5('0x57')])){_0x1ea014=_0x27dd6f[_0x8ec5('0x29')][_0x8ec5('0x57')];}return _0x492620[_0x8ec5('0x58')](_0x1ea014)[_0x8ec5('0x59')]();}})[_0x8ec5('0x1e')](function(_0x5c5643){var _0x100136=[_0x8ec5('0x5a'),_0x8ec5('0x5b'),'IsReminderSet','IsRecurrence',_0x8ec5('0x5c'),_0x8ec5('0x5d')];var _0x58d2d5=[_0x8ec5('0x5e'),_0x8ec5('0x5f'),_0x8ec5('0x60'),_0x8ec5('0x61'),_0x8ec5('0x62'),_0x8ec5('0x63'),'phone'];if(_0x5c5643){_[_0x8ec5('0x64')](_0x5c5643['fields'],function(_0x1b4c65){return _0x100136[_0x8ec5('0x65')](_0x1b4c65['name'])||!_0x58d2d5[_0x8ec5('0x65')](_0x1b4c65['type']);});return{'count':_0x5c5643[_0x8ec5('0x2d')][_0x8ec5('0x2e')],'rows':_[_0x8ec5('0x24')](_0x5c5643['fields'],function(_0x352dd1){return{'id':_0x352dd1[_0x8ec5('0x21')],'name':_0x352dd1[_0x8ec5('0x66')],'custom':_0x352dd1[_0x8ec5('0x67')],'options':_0x352dd1['picklistValues'][_0x8ec5('0x2e')]>0x0?_[_0x8ec5('0x24')](_0x352dd1[_0x8ec5('0x68')],function(_0xac89a8){return{'name':_0xac89a8['label'],'value':_0xac89a8[_0x8ec5('0x69')]};}):_0x352dd1[_0x8ec5('0x27')]==_0x8ec5('0x61')?[{'name':_0x8ec5('0x6a'),'value':_0x8ec5('0x6b')},{'name':'False','value':_0x8ec5('0x6c')}]:[]};})};}})[_0x8ec5('0x1e')](respondWithResult(_0xfb4065,null))['catch'](function(_0xd13dc){var _0x321ae3=_0x27dd6f[_0x8ec5('0x29')][_0x8ec5('0x6d')]?0x1f4:_0xd13dc[_0x8ec5('0x6e')]||0x1f4;logger[_0x8ec5('0x6f')](_0x8ec5('0x70'),'getFields',_0x321ae3,JSON[_0x8ec5('0x71')](_0xd13dc));delete _0xd13dc[_0x8ec5('0x21')];if(_0x321ae3===0x191){_0x321ae3=0x190;}_0xfb4065[_0x8ec5('0x15')](_0x321ae3)[_0x8ec5('0x22')](_0x27dd6f[_0x8ec5('0x29')][_0x8ec5('0x6d')]?{'message':_0x8ec5('0x72'),'statusCode':_0xd13dc[_0x8ec5('0x6e')]}:_0xd13dc);});};
\ No newline at end of file
index f77e058..7070e5e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0xd2c4=['bluebird','request-promise','rimraf','./intSalesforceAccount.attributes','../../components/integrations/configuration','exports','define','int_salesforce_accounts','../../config/logger','api','moment'];(function(_0x2626cc,_0x5beb3a){var _0x5dda71=function(_0x2ca0ce){while(--_0x2ca0ce){_0x2626cc['push'](_0x2626cc['shift']());}};_0x5dda71(++_0x5beb3a);}(_0xd2c4,0x110));var _0x4d2c=function(_0x883d31,_0x50f7d0){_0x883d31=_0x883d31-0x0;var _0x4201bb=_0xd2c4[_0x883d31];return _0x4201bb;};'use strict';var _=require('lodash');var util=require('util');var logger=require(_0x4d2c('0x0'))(_0x4d2c('0x1'));var moment=require(_0x4d2c('0x2'));var BPromise=require(_0x4d2c('0x3'));var rp=require(_0x4d2c('0x4'));var fs=require('fs');var path=require('path');var rimraf=require(_0x4d2c('0x5'));var config=require('../../config/environment');var attributes=require(_0x4d2c('0x6'));var integrations=require(_0x4d2c('0x7'));module[_0x4d2c('0x8')]=function(_0x42dfff,_0x7d84ca){return _0x42dfff[_0x4d2c('0x9')]('SalesforceAccount',attributes,{'tableName':_0x4d2c('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 4617e9d..47a97cf 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0xc820=['SalesforceAccount','findAll','options','where','include','map','model','attributes','catch','find','raw','ShowSalesforceAccount','lodash','util','moment','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','http','request','then','info','SalesforceAccount,\x20%s,\x20%s','request\x20sent','debug','stringify','error','code','message','GetSalesforceAccount'];(function(_0x34232c,_0x18e61d){var _0x4d4f4e=function(_0x1aeb3d){while(--_0x1aeb3d){_0x34232c['push'](_0x34232c['shift']());}};_0x4d4f4e(++_0x18e61d);}(_0xc820,0x18c));var _0x0c82=function(_0x484efb,_0x4eb078){_0x484efb=_0x484efb-0x0;var _0x260f38=_0xc820[_0x484efb];return _0x260f38;};'use strict';var _=require(_0x0c82('0x0'));var util=require(_0x0c82('0x1'));var moment=require(_0x0c82('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(_0x0c82('0x3'));var logger=require(_0x0c82('0x4'))(_0x0c82('0x5'));var config=require(_0x0c82('0x6'));var jayson=require(_0x0c82('0x7'));var client=jayson['client'][_0x0c82('0x8')]({'port':0x232a});function respondWithRpcPromise(_0xab68a3,_0x401336,_0x5d905b){return new BPromise(function(_0x4b1035,_0x39aad5){return client[_0x0c82('0x9')](_0xab68a3,_0x5d905b)[_0x0c82('0xa')](function(_0xdadab5){logger[_0x0c82('0xb')](_0x0c82('0xc'),_0x401336,_0x0c82('0xd'));logger[_0x0c82('0xe')]('SalesforceAccount,\x20%s,\x20%s,\x20%s',_0x401336,_0x0c82('0xd'),JSON[_0x0c82('0xf')](_0xdadab5));if(_0xdadab5[_0x0c82('0x10')]){if(_0xdadab5[_0x0c82('0x10')][_0x0c82('0x11')]===0x1f4){logger[_0x0c82('0x10')](_0x0c82('0xc'),_0x401336,_0xdadab5['error'][_0x0c82('0x12')]);return _0x39aad5(_0xdadab5[_0x0c82('0x10')][_0x0c82('0x12')]);}logger[_0x0c82('0x10')](_0x0c82('0xc'),_0x401336,_0xdadab5[_0x0c82('0x10')]['message']);return _0x4b1035(_0xdadab5['error']['message']);}else{logger['info'](_0x0c82('0xc'),_0x401336,_0x0c82('0xd'));_0x4b1035(_0xdadab5['result'][_0x0c82('0x12')]);}})['catch'](function(_0x113a6a){logger['error'](_0x0c82('0xc'),_0x401336,_0x113a6a);_0x39aad5(_0x113a6a);});});}exports[_0x0c82('0x13')]=function(_0xcf556b){var _0x28d18e=this;return new Promise(function(_0x1d5316,_0x2cb250){return db[_0x0c82('0x14')][_0x0c82('0x15')]({'raw':_0xcf556b['options']?_0xcf556b['options']['raw']===undefined?!![]:![]:!![],'where':_0xcf556b[_0x0c82('0x16')]?_0xcf556b[_0x0c82('0x16')][_0x0c82('0x17')]||null:null,'attributes':_0xcf556b[_0x0c82('0x16')]?_0xcf556b[_0x0c82('0x16')]['attributes']||null:null,'limit':_0xcf556b[_0x0c82('0x16')]?_0xcf556b['options']['limit']||null:null,'include':_0xcf556b[_0x0c82('0x16')]?_0xcf556b[_0x0c82('0x16')][_0x0c82('0x18')]?_[_0x0c82('0x19')](_0xcf556b[_0x0c82('0x16')][_0x0c82('0x18')],function(_0x4c40f0){return{'model':db[_0x4c40f0[_0x0c82('0x1a')]],'as':_0x4c40f0['as'],'attributes':_0x4c40f0['attributes'],'include':_0x4c40f0[_0x0c82('0x18')]?_[_0x0c82('0x19')](_0x4c40f0[_0x0c82('0x18')],function(_0x22d14f){return{'model':db[_0x22d14f[_0x0c82('0x1a')]],'as':_0x22d14f['as'],'attributes':_0x22d14f[_0x0c82('0x1b')],'include':_0x22d14f[_0x0c82('0x18')]?_['map'](_0x22d14f['include'],function(_0x2f6e0a){return{'model':db[_0x2f6e0a['model']],'as':_0x2f6e0a['as'],'attributes':_0x2f6e0a['attributes']};}):[]};}):[]};}):[]:[]})[_0x0c82('0xa')](function(_0x59cbdc){logger[_0x0c82('0xb')](_0x0c82('0x13'),_0xcf556b);logger['debug'](_0x0c82('0x13'),_0xcf556b,JSON['stringify'](_0x59cbdc));_0x1d5316(_0x59cbdc);})[_0x0c82('0x1c')](function(_0x31565f){logger[_0x0c82('0x10')]('GetSalesforceAccount',_0x31565f[_0x0c82('0x12')],_0xcf556b);_0x2cb250(_0x28d18e[_0x0c82('0x10')](0x1f4,_0x31565f['message']));});});};exports['ShowSalesforceAccount']=function(_0x3fe068){var _0x52624e=this;return new Promise(function(_0x3a497c,_0x12a1e2){return db[_0x0c82('0x14')][_0x0c82('0x1d')]({'raw':_0x3fe068[_0x0c82('0x16')]?_0x3fe068[_0x0c82('0x16')][_0x0c82('0x1e')]===undefined?!![]:![]:!![],'where':_0x3fe068[_0x0c82('0x16')]?_0x3fe068[_0x0c82('0x16')][_0x0c82('0x17')]||null:null,'attributes':_0x3fe068[_0x0c82('0x16')]?_0x3fe068[_0x0c82('0x16')][_0x0c82('0x1b')]||null:null,'include':_0x3fe068[_0x0c82('0x16')]?_0x3fe068[_0x0c82('0x16')]['include']?_[_0x0c82('0x19')](_0x3fe068[_0x0c82('0x16')][_0x0c82('0x18')],function(_0x2ccb5e){return{'model':db[_0x2ccb5e['model']],'as':_0x2ccb5e['as'],'attributes':_0x2ccb5e[_0x0c82('0x1b')],'include':_0x2ccb5e[_0x0c82('0x18')]?_[_0x0c82('0x19')](_0x2ccb5e[_0x0c82('0x18')],function(_0x4d7b4d){return{'model':db[_0x4d7b4d[_0x0c82('0x1a')]],'as':_0x4d7b4d['as'],'attributes':_0x4d7b4d[_0x0c82('0x1b')],'include':_0x4d7b4d['include']?_[_0x0c82('0x19')](_0x4d7b4d[_0x0c82('0x18')],function(_0x51c2d0){return{'model':db[_0x51c2d0[_0x0c82('0x1a')]],'as':_0x51c2d0['as'],'attributes':_0x51c2d0[_0x0c82('0x1b')]};}):[]};}):[]};}):[]:[]})[_0x0c82('0xa')](function(_0x34b338){logger['info'](_0x0c82('0x1f'),_0x3fe068);logger['debug'](_0x0c82('0x1f'),_0x3fe068,JSON['stringify'](_0x34b338));_0x3a497c(_0x34b338);})[_0x0c82('0x1c')](function(_0x2f2c52){logger['error']('ShowSalesforceAccount',_0x2f2c52[_0x0c82('0x12')],_0x3fe068);_0x12a1e2(_0x52624e[_0x0c82('0x10')](0x1f4,_0x2f2c52[_0x0c82('0x12')]));});});};
\ No newline at end of file
index e774a87..241df4f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7a54=['getSubjects','getDescriptions','post','create','put','update','delete','destroy','exports','multer','util','path','express','Router','../../components/auth/service','../../components/interaction/service','../../config/environment','./intSalesforceConfiguration.controller','get','index','/:id','isAuthenticated','/:id/subjects'];(function(_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
+var _0x2ef3=['connect-timeout','express','Router','../../components/auth/service','../../components/interaction/service','./intSalesforceConfiguration.controller','get','/:id','isAuthenticated','show','/:id/fields','getFields','/:id/subjects','/:id/descriptions','getDescriptions','put','update','exports','multer','util','path'];(function(_0x1b17da,_0x31295e){var _0x29226b=function(_0x53fc5d){while(--_0x53fc5d){_0x1b17da['push'](_0x1b17da['shift']());}};_0x29226b(++_0x31295e);}(_0x2ef3,0xba));var _0x32ef=function(_0x3de2d8,_0x291473){_0x3de2d8=_0x3de2d8-0x0;var _0xe650c8=_0x2ef3[_0x3de2d8];return _0xe650c8;};'use strict';var multer=require(_0x32ef('0x0'));var util=require(_0x32ef('0x1'));var path=require(_0x32ef('0x2'));var timeout=require(_0x32ef('0x3'));var express=require(_0x32ef('0x4'));var router=express[_0x32ef('0x5')]();var fs_extra=require('fs-extra');var auth=require(_0x32ef('0x6'));var interaction=require(_0x32ef('0x7'));var config=require('../../config/environment');var controller=require(_0x32ef('0x8'));router[_0x32ef('0x9')]('/',auth['isAuthenticated'](),controller['index']);router[_0x32ef('0x9')](_0x32ef('0xa'),auth[_0x32ef('0xb')](),controller[_0x32ef('0xc')]);router[_0x32ef('0x9')](_0x32ef('0xd'),auth[_0x32ef('0xb')](),controller[_0x32ef('0xe')]);router[_0x32ef('0x9')](_0x32ef('0xf'),auth['isAuthenticated'](),controller['getSubjects']);router[_0x32ef('0x9')](_0x32ef('0x10'),auth[_0x32ef('0xb')](),controller[_0x32ef('0x11')]);router['post']('/',auth[_0x32ef('0xb')](),controller['create']);router[_0x32ef('0x12')]('/:id',auth[_0x32ef('0xb')](),controller[_0x32ef('0x13')]);router['delete']('/:id',auth[_0x32ef('0xb')](),controller['destroy']);module[_0x32ef('0x14')]=router;
\ No newline at end of file
index cedb8c9..cab5fb5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0x6f14=['STRING','ENUM','Task','Case','contact_lead','contact','lead','account_contact_lead','account','nothing','exports'];(function(_0x4243a3,_0x447337){var _0x1b2a33=function(_0x6a8200){while(--_0x6a8200){_0x4243a3['push'](_0x4243a3['shift']());}};_0x1b2a33(++_0x447337);}(_0x6f14,0x8e));var _0x46f1=function(_0x2ec344,_0x133bcc){_0x2ec344=_0x2ec344-0x0;var _0x3ddebf=_0x6f14[_0x2ec344];return _0x3ddebf;};'use strict';var Sequelize=require('sequelize');module[_0x46f1('0x0')]={'name':{'type':Sequelize['STRING']},'description':{'type':Sequelize[_0x46f1('0x1')]},'ticketType':{'type':Sequelize[_0x46f1('0x2')](_0x46f1('0x3'),_0x46f1('0x4')),'defaultValue':_0x46f1('0x3')},'moduleSearch':{'type':Sequelize['ENUM'](_0x46f1('0x5'),_0x46f1('0x6'),_0x46f1('0x7'),_0x46f1('0x8'),_0x46f1('0x9')),'defaultValue':_0x46f1('0x5')},'moduleCreate':{'type':Sequelize['ENUM'](_0x46f1('0xa'),'contact',_0x46f1('0x7'),_0x46f1('0x9')),'defaultValue':'lead'},'leadId':{'type':Sequelize[_0x46f1('0x1')]},'additionalSearchAccount':{'type':Sequelize[_0x46f1('0x1')]},'additionalSearchContact':{'type':Sequelize['STRING']},'additionalSearchLead':{'type':Sequelize[_0x46f1('0x1')]}};
\ No newline at end of file
index d3b773e..962fa42 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0xa0e9=['SalesforceField','getFields','getSubjects','getDescriptions','rimraf','fast-json-patch','request-promise','moment','bluebird','mustache','util','fs-extra','lodash','squel','crypto','jsforce','desk.js','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/logger','../../config/license/util','../../mysqldb','sendStatus','status','offset','undefined','limit','count','Content-Range','reject','save','update','then','end','error','stack','name','SalesforceConfiguration','rawAttributes','fieldName','type','key','map','query','filters','intersection','model','fields','attributes','length','hasOwnProperty','nolimit','order','sort','pick','filter','merge','where','VIRTUAL','include','catch','show','params','keys','includeAll','options','find','create','body','destroy','findOne'];(function(_0x59ee6f,_0x450239){var _0x4c0979=function(_0x565e92){while(--_0x565e92){_0x59ee6f['push'](_0x59ee6f['shift']());}};_0x4c0979(++_0x450239);}(_0xa0e9,0xdf));var _0x9a0e=function(_0x15e8a3,_0x4b46ac){_0x15e8a3=_0x15e8a3-0x0;var _0x1c3798=_0xa0e9[_0x15e8a3];return _0x1c3798;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x9a0e('0x0'));var zipdir=require('zip-dir');var jsonpatch=require(_0x9a0e('0x1'));var rp=require(_0x9a0e('0x2'));var moment=require(_0x9a0e('0x3'));var BPromise=require(_0x9a0e('0x4'));var Mustache=require(_0x9a0e('0x5'));var util=require(_0x9a0e('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(_0x9a0e('0x7'));var _=require(_0x9a0e('0x8'));var squel=require(_0x9a0e('0x9'));var crypto=require(_0x9a0e('0xa'));var jsforce=require(_0x9a0e('0xb'));var deskjs=require(_0x9a0e('0xc'));var toCsv=require('to-csv');var querystring=require('querystring');var Papa=require(_0x9a0e('0xd'));var Redis=require(_0x9a0e('0xe'));var authService=require(_0x9a0e('0xf'));var qs=require(_0x9a0e('0x10'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require('../../config/license/hardware');var logger=require(_0x9a0e('0x11'))('api');var utils=require('../../config/utils');var config=require('../../config/environment');var licenseUtil=require(_0x9a0e('0x12'));var db=require(_0x9a0e('0x13'))['db'];function respondWithStatusCode(_0x34f50d,_0x69da45){_0x69da45=_0x69da45||0xcc;return function(_0x490eaf){if(_0x490eaf){return _0x34f50d[_0x9a0e('0x14')](_0x69da45);}return _0x34f50d[_0x9a0e('0x15')](_0x69da45)['end']();};}function respondWithResult(_0x19fa98,_0x5819b3){_0x5819b3=_0x5819b3||0xc8;return function(_0x1166f7){if(_0x1166f7){return _0x19fa98[_0x9a0e('0x15')](_0x5819b3)['json'](_0x1166f7);}};}function respondWithFilteredResult(_0x533d07,_0x4f349e){return function(_0x2ce18a){if(_0x2ce18a){var _0x59aeda=typeof _0x4f349e[_0x9a0e('0x16')]===_0x9a0e('0x17')&&typeof _0x4f349e[_0x9a0e('0x18')]===_0x9a0e('0x17');var _0x428790=_0x2ce18a[_0x9a0e('0x19')];var _0x2f69de=_0x59aeda?0x0:_0x4f349e[_0x9a0e('0x16')];var _0x52d8a8=_0x59aeda?_0x2ce18a[_0x9a0e('0x19')]:_0x4f349e[_0x9a0e('0x16')]+_0x4f349e[_0x9a0e('0x18')];var _0x37bcea;if(_0x52d8a8>=_0x428790){_0x52d8a8=_0x428790;_0x37bcea=0xc8;}else{_0x37bcea=0xce;}_0x533d07[_0x9a0e('0x15')](_0x37bcea);return _0x533d07['set'](_0x9a0e('0x1a'),_0x2f69de+'-'+_0x52d8a8+'/'+_0x428790)['json'](_0x2ce18a);}return null;};}function patchUpdates(_0x438f10){return function(_0x4155cb){try{jsonpatch['apply'](_0x4155cb,_0x438f10,!![]);}catch(_0x20964f){return BPromise[_0x9a0e('0x1b')](_0x20964f);}return _0x4155cb[_0x9a0e('0x1c')]();};}function saveUpdates(_0x50261f,_0x135df6){return function(_0x2d9969){if(_0x2d9969){return _0x2d9969[_0x9a0e('0x1d')](_0x50261f)[_0x9a0e('0x1e')](function(_0x516a4f){return _0x516a4f;});}return null;};}function removeEntity(_0x1d0392,_0x1d797a){return function(_0x548523){if(_0x548523){return _0x548523['destroy']()[_0x9a0e('0x1e')](function(){_0x1d0392[_0x9a0e('0x15')](0xcc)[_0x9a0e('0x1f')]();});}};}function handleEntityNotFound(_0x3cdfa0,_0x4fdd44){return function(_0x36242b){if(!_0x36242b){_0x3cdfa0[_0x9a0e('0x14')](0x194);}return _0x36242b;};}function handleError(_0x153b27,_0x4ac0fc){_0x4ac0fc=_0x4ac0fc||0x1f4;return function(_0x473baa){logger[_0x9a0e('0x20')](_0x473baa[_0x9a0e('0x21')]);if(_0x473baa[_0x9a0e('0x22')]){delete _0x473baa[_0x9a0e('0x22')];}_0x153b27[_0x9a0e('0x15')](_0x4ac0fc)['send'](_0x473baa);};}exports['index']=function(_0x1fc95b,_0x215288){var _0x49ed7a={},_0x22ab8d={},_0x2d364f={'count':0x0,'rows':[]};var _0x31c047=_['map'](db[_0x9a0e('0x23')][_0x9a0e('0x24')],function(_0x33ea87){return{'name':_0x33ea87[_0x9a0e('0x25')],'type':_0x33ea87[_0x9a0e('0x26')][_0x9a0e('0x27')]};});_0x22ab8d['model']=_[_0x9a0e('0x28')](_0x31c047,'name');_0x22ab8d[_0x9a0e('0x29')]=_['keys'](_0x1fc95b[_0x9a0e('0x29')]);_0x22ab8d[_0x9a0e('0x2a')]=_[_0x9a0e('0x2b')](_0x22ab8d[_0x9a0e('0x2c')],_0x22ab8d[_0x9a0e('0x29')]);_0x49ed7a['attributes']=_[_0x9a0e('0x2b')](_0x22ab8d['model'],qs[_0x9a0e('0x2d')](_0x1fc95b[_0x9a0e('0x29')][_0x9a0e('0x2d')]));_0x49ed7a[_0x9a0e('0x2e')]=_0x49ed7a['attributes'][_0x9a0e('0x2f')]?_0x49ed7a[_0x9a0e('0x2e')]:_0x22ab8d[_0x9a0e('0x2c')];if(!_0x1fc95b[_0x9a0e('0x29')][_0x9a0e('0x30')](_0x9a0e('0x31'))){_0x49ed7a[_0x9a0e('0x18')]=qs['limit'](_0x1fc95b[_0x9a0e('0x29')][_0x9a0e('0x18')]);_0x49ed7a[_0x9a0e('0x16')]=qs['offset'](_0x1fc95b[_0x9a0e('0x29')][_0x9a0e('0x16')]);}_0x49ed7a[_0x9a0e('0x32')]=qs['sort'](_0x1fc95b[_0x9a0e('0x29')][_0x9a0e('0x33')]);_0x49ed7a['where']=qs[_0x9a0e('0x2a')](_[_0x9a0e('0x34')](_0x1fc95b[_0x9a0e('0x29')],_0x22ab8d[_0x9a0e('0x2a')]),_0x31c047);if(_0x1fc95b[_0x9a0e('0x29')][_0x9a0e('0x35')]){_0x49ed7a['where']=_[_0x9a0e('0x36')](_0x49ed7a[_0x9a0e('0x37')],{'$or':_[_0x9a0e('0x28')](_0x31c047,function(_0x4ec953){if(_0x4ec953[_0x9a0e('0x26')]!==_0x9a0e('0x38')){var _0x3df1a7={};_0x3df1a7[_0x4ec953['name']]={'$like':'%'+_0x1fc95b['query'][_0x9a0e('0x35')]+'%'};return _0x3df1a7;}})});}_0x49ed7a=_[_0x9a0e('0x36')]({},_0x49ed7a,_0x1fc95b['options']);var _0x4fed74={'where':_0x49ed7a[_0x9a0e('0x37')]};return db[_0x9a0e('0x23')][_0x9a0e('0x19')](_0x4fed74)[_0x9a0e('0x1e')](function(_0x374be5){_0x2d364f[_0x9a0e('0x19')]=_0x374be5;if(_0x1fc95b[_0x9a0e('0x29')]['includeAll']){_0x49ed7a[_0x9a0e('0x39')]=[{'all':!![]}];}return db[_0x9a0e('0x23')]['findAll'](_0x49ed7a);})[_0x9a0e('0x1e')](function(_0x186bdc){_0x2d364f['rows']=_0x186bdc;return _0x2d364f;})[_0x9a0e('0x1e')](respondWithFilteredResult(_0x215288,_0x49ed7a))[_0x9a0e('0x3a')](handleError(_0x215288,null));};exports[_0x9a0e('0x3b')]=function(_0x365eb0,_0x19d99b){var _0x3d6a3c={'raw':![],'where':{'id':_0x365eb0[_0x9a0e('0x3c')]['id']}},_0x35af15={};_0x35af15['model']=_[_0x9a0e('0x3d')](db[_0x9a0e('0x23')][_0x9a0e('0x24')]);_0x35af15[_0x9a0e('0x29')]=_[_0x9a0e('0x3d')](_0x365eb0[_0x9a0e('0x29')]);_0x35af15[_0x9a0e('0x2a')]=_[_0x9a0e('0x2b')](_0x35af15['model'],_0x35af15[_0x9a0e('0x29')]);_0x3d6a3c[_0x9a0e('0x2e')]=_[_0x9a0e('0x2b')](_0x35af15[_0x9a0e('0x2c')],qs[_0x9a0e('0x2d')](_0x365eb0[_0x9a0e('0x29')][_0x9a0e('0x2d')]));_0x3d6a3c[_0x9a0e('0x2e')]=_0x3d6a3c[_0x9a0e('0x2e')][_0x9a0e('0x2f')]?_0x3d6a3c[_0x9a0e('0x2e')]:_0x35af15['model'];if(_0x365eb0[_0x9a0e('0x29')][_0x9a0e('0x3e')]){_0x3d6a3c[_0x9a0e('0x39')]=[{'all':!![]}];}_0x3d6a3c=_['merge']({},_0x3d6a3c,_0x365eb0[_0x9a0e('0x3f')]);return db[_0x9a0e('0x23')][_0x9a0e('0x40')](_0x3d6a3c)['then'](handleEntityNotFound(_0x19d99b,null))[_0x9a0e('0x1e')](respondWithResult(_0x19d99b,null))[_0x9a0e('0x3a')](handleError(_0x19d99b,null));};exports[_0x9a0e('0x41')]=function(_0x280481,_0x2f37e0){return db[_0x9a0e('0x23')][_0x9a0e('0x41')](_0x280481[_0x9a0e('0x42')],{})[_0x9a0e('0x1e')](respondWithResult(_0x2f37e0,0xc9))[_0x9a0e('0x3a')](handleError(_0x2f37e0,null));};exports[_0x9a0e('0x1d')]=function(_0x74bc8e,_0x4d31c9){if(_0x74bc8e[_0x9a0e('0x42')]['id']){delete _0x74bc8e[_0x9a0e('0x42')]['id'];}return db['SalesforceConfiguration']['find']({'where':{'id':_0x74bc8e[_0x9a0e('0x3c')]['id']}})[_0x9a0e('0x1e')](handleEntityNotFound(_0x4d31c9,null))['then'](saveUpdates(_0x74bc8e[_0x9a0e('0x42')],null))['then'](respondWithResult(_0x4d31c9,null))[_0x9a0e('0x3a')](handleError(_0x4d31c9,null));};exports[_0x9a0e('0x43')]=function(_0x55060a,_0x1edba5){return db[_0x9a0e('0x23')][_0x9a0e('0x40')]({'where':{'id':_0x55060a[_0x9a0e('0x3c')]['id']}})['then'](handleEntityNotFound(_0x1edba5,null))[_0x9a0e('0x1e')](removeEntity(_0x1edba5,null))[_0x9a0e('0x3a')](handleError(_0x1edba5,null));};exports['getFields']=function(_0x296218,_0x3f332a,_0x187224){var _0xf4d0f={};var _0x122056={};var _0x2c4e24;var _0x29554f;return db[_0x9a0e('0x23')][_0x9a0e('0x44')]({'where':{'id':_0x296218[_0x9a0e('0x3c')]['id']}})[_0x9a0e('0x1e')](handleEntityNotFound(_0x3f332a,null))['then'](function(_0x6f736f){if(_0x6f736f){_0x2c4e24=_0x6f736f;_0x122056[_0x9a0e('0x2c')]=_[_0x9a0e('0x3d')](db[_0x9a0e('0x45')]['rawAttributes']);_0x122056[_0x9a0e('0x29')]=_[_0x9a0e('0x3d')](_0x296218[_0x9a0e('0x29')]);_0x122056['filters']=_['intersection'](_0x122056['model'],_0x122056[_0x9a0e('0x29')]);_0xf4d0f['attributes']=_['intersection'](_0x122056[_0x9a0e('0x2c')],qs['fields'](_0x296218[_0x9a0e('0x29')][_0x9a0e('0x2d')]));_0xf4d0f[_0x9a0e('0x2e')]=_0xf4d0f[_0x9a0e('0x2e')][_0x9a0e('0x2f')]?_0xf4d0f['attributes']:_0x122056['model'];_0xf4d0f[_0x9a0e('0x32')]=qs['sort'](_0x296218['query'][_0x9a0e('0x33')]);_0xf4d0f[_0x9a0e('0x37')]=qs['filters'](_[_0x9a0e('0x34')](_0x296218[_0x9a0e('0x29')],_0x122056['filters']));if(_0x296218[_0x9a0e('0x29')][_0x9a0e('0x35')]){_0xf4d0f[_0x9a0e('0x37')]=_[_0x9a0e('0x36')](_0xf4d0f[_0x9a0e('0x37')],{'$or':_['map'](_0xf4d0f['attributes'],function(_0x4fbbad){var _0xfc3fcc={};_0xfc3fcc[_0x4fbbad]={'$like':'%'+_0x296218['query'][_0x9a0e('0x35')]+'%'};return _0xfc3fcc;})});}_0xf4d0f=_['merge']({},_0xf4d0f,_0x296218[_0x9a0e('0x3f')]);return _0x2c4e24[_0x9a0e('0x46')](_0xf4d0f);}})['then'](function(_0x24ad42){if(_0x24ad42){_0x29554f=_0x24ad42['length'];if(!_0x296218['query'][_0x9a0e('0x30')](_0x9a0e('0x31'))){_0xf4d0f[_0x9a0e('0x18')]=qs[_0x9a0e('0x18')](_0x296218[_0x9a0e('0x29')][_0x9a0e('0x18')]);_0xf4d0f[_0x9a0e('0x16')]=qs['offset'](_0x296218['query'][_0x9a0e('0x16')]);}return _0x2c4e24[_0x9a0e('0x46')](_0xf4d0f);}})[_0x9a0e('0x1e')](function(_0x17b91f){if(_0x17b91f){return _0x17b91f?{'count':_0x29554f,'rows':_0x17b91f}:null;}})[_0x9a0e('0x1e')](respondWithResult(_0x3f332a,null))['catch'](handleError(_0x3f332a,null));};exports[_0x9a0e('0x47')]=function(_0x1a6289,_0x260c0c,_0x3db6ba){var _0x3db4a5={};var _0x56aee9={};var _0x3482d5;var _0x229e08;return db[_0x9a0e('0x23')][_0x9a0e('0x44')]({'where':{'id':_0x1a6289[_0x9a0e('0x3c')]['id']}})[_0x9a0e('0x1e')](handleEntityNotFound(_0x260c0c,null))['then'](function(_0x3bcf9c){if(_0x3bcf9c){_0x3482d5=_0x3bcf9c;_0x56aee9[_0x9a0e('0x2c')]=_['keys'](db[_0x9a0e('0x45')][_0x9a0e('0x24')]);_0x56aee9['query']=_[_0x9a0e('0x3d')](_0x1a6289[_0x9a0e('0x29')]);_0x56aee9[_0x9a0e('0x2a')]=_[_0x9a0e('0x2b')](_0x56aee9[_0x9a0e('0x2c')],_0x56aee9[_0x9a0e('0x29')]);_0x3db4a5[_0x9a0e('0x2e')]=_[_0x9a0e('0x2b')](_0x56aee9['model'],qs[_0x9a0e('0x2d')](_0x1a6289['query'][_0x9a0e('0x2d')]));_0x3db4a5[_0x9a0e('0x2e')]=_0x3db4a5[_0x9a0e('0x2e')]['length']?_0x3db4a5[_0x9a0e('0x2e')]:_0x56aee9[_0x9a0e('0x2c')];_0x3db4a5[_0x9a0e('0x32')]=qs[_0x9a0e('0x33')](_0x1a6289[_0x9a0e('0x29')][_0x9a0e('0x33')]);_0x3db4a5['where']=qs[_0x9a0e('0x2a')](_[_0x9a0e('0x34')](_0x1a6289[_0x9a0e('0x29')],_0x56aee9[_0x9a0e('0x2a')]));if(_0x1a6289[_0x9a0e('0x29')][_0x9a0e('0x35')]){_0x3db4a5['where']=_['merge'](_0x3db4a5['where'],{'$or':_[_0x9a0e('0x28')](_0x3db4a5[_0x9a0e('0x2e')],function(_0x4a4c4d){var _0x11d55f={};_0x11d55f[_0x4a4c4d]={'$like':'%'+_0x1a6289[_0x9a0e('0x29')][_0x9a0e('0x35')]+'%'};return _0x11d55f;})});}_0x3db4a5=_['merge']({},_0x3db4a5,_0x1a6289[_0x9a0e('0x3f')]);return _0x3482d5[_0x9a0e('0x47')](_0x3db4a5);}})[_0x9a0e('0x1e')](function(_0x14783b){if(_0x14783b){_0x229e08=_0x14783b[_0x9a0e('0x2f')];if(!_0x1a6289[_0x9a0e('0x29')][_0x9a0e('0x30')]('nolimit')){_0x3db4a5[_0x9a0e('0x18')]=qs[_0x9a0e('0x18')](_0x1a6289[_0x9a0e('0x29')][_0x9a0e('0x18')]);_0x3db4a5[_0x9a0e('0x16')]=qs[_0x9a0e('0x16')](_0x1a6289[_0x9a0e('0x29')]['offset']);}return _0x3482d5[_0x9a0e('0x47')](_0x3db4a5);}})['then'](function(_0x4e487f){if(_0x4e487f){return _0x4e487f?{'count':_0x229e08,'rows':_0x4e487f}:null;}})[_0x9a0e('0x1e')](respondWithResult(_0x260c0c,null))[_0x9a0e('0x3a')](handleError(_0x260c0c,null));};exports[_0x9a0e('0x48')]=function(_0xc30bc1,_0x258cc3,_0x2c8371){var _0xce60e8={};var _0x36743a={};var _0xc72f69;var _0x58aa79;return db[_0x9a0e('0x23')][_0x9a0e('0x44')]({'where':{'id':_0xc30bc1[_0x9a0e('0x3c')]['id']}})[_0x9a0e('0x1e')](handleEntityNotFound(_0x258cc3,null))[_0x9a0e('0x1e')](function(_0x27b723){if(_0x27b723){_0xc72f69=_0x27b723;_0x36743a[_0x9a0e('0x2c')]=_[_0x9a0e('0x3d')](db[_0x9a0e('0x45')][_0x9a0e('0x24')]);_0x36743a[_0x9a0e('0x29')]=_['keys'](_0xc30bc1[_0x9a0e('0x29')]);_0x36743a[_0x9a0e('0x2a')]=_[_0x9a0e('0x2b')](_0x36743a[_0x9a0e('0x2c')],_0x36743a[_0x9a0e('0x29')]);_0xce60e8[_0x9a0e('0x2e')]=_[_0x9a0e('0x2b')](_0x36743a[_0x9a0e('0x2c')],qs[_0x9a0e('0x2d')](_0xc30bc1[_0x9a0e('0x29')]['fields']));_0xce60e8['attributes']=_0xce60e8[_0x9a0e('0x2e')][_0x9a0e('0x2f')]?_0xce60e8[_0x9a0e('0x2e')]:_0x36743a[_0x9a0e('0x2c')];_0xce60e8['order']=qs[_0x9a0e('0x33')](_0xc30bc1[_0x9a0e('0x29')][_0x9a0e('0x33')]);_0xce60e8[_0x9a0e('0x37')]=qs[_0x9a0e('0x2a')](_[_0x9a0e('0x34')](_0xc30bc1['query'],_0x36743a[_0x9a0e('0x2a')]));if(_0xc30bc1['query'][_0x9a0e('0x35')]){_0xce60e8[_0x9a0e('0x37')]=_['merge'](_0xce60e8[_0x9a0e('0x37')],{'$or':_[_0x9a0e('0x28')](_0xce60e8[_0x9a0e('0x2e')],function(_0x2a6c94){var _0x5ef269={};_0x5ef269[_0x2a6c94]={'$like':'%'+_0xc30bc1['query'][_0x9a0e('0x35')]+'%'};return _0x5ef269;})});}_0xce60e8=_[_0x9a0e('0x36')]({},_0xce60e8,_0xc30bc1[_0x9a0e('0x3f')]);return _0xc72f69[_0x9a0e('0x48')](_0xce60e8);}})['then'](function(_0x5d653b){if(_0x5d653b){_0x58aa79=_0x5d653b[_0x9a0e('0x2f')];if(!_0xc30bc1['query']['hasOwnProperty'](_0x9a0e('0x31'))){_0xce60e8[_0x9a0e('0x18')]=qs[_0x9a0e('0x18')](_0xc30bc1[_0x9a0e('0x29')][_0x9a0e('0x18')]);_0xce60e8['offset']=qs[_0x9a0e('0x16')](_0xc30bc1['query'][_0x9a0e('0x16')]);}return _0xc72f69[_0x9a0e('0x48')](_0xce60e8);}})[_0x9a0e('0x1e')](function(_0x5abceb){if(_0x5abceb){return _0x5abceb?{'count':_0x58aa79,'rows':_0x5abceb}:null;}})[_0x9a0e('0x1e')](respondWithResult(_0x258cc3,null))['catch'](handleError(_0x258cc3,null));};
\ No newline at end of file
index a59d64e..0480849 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0xe4d4=['bluebird','request-promise','rimraf','./intSalesforceConfiguration.attributes','exports','define','SalesforceConfiguration','../../config/logger','api','moment'];(function(_0x8051d7,_0x263ba9){var _0x3fb835=function(_0x3605a6){while(--_0x3605a6){_0x8051d7['push'](_0x8051d7['shift']());}};_0x3fb835(++_0x263ba9);}(_0xe4d4,0x115));var _0x4e4d=function(_0xb04032,_0x5e0cad){_0xb04032=_0xb04032-0x0;var _0x2b0248=_0xe4d4[_0xb04032];return _0x2b0248;};'use strict';var _=require('lodash');var util=require('util');var logger=require(_0x4e4d('0x0'))(_0x4e4d('0x1'));var moment=require(_0x4e4d('0x2'));var BPromise=require(_0x4e4d('0x3'));var rp=require(_0x4e4d('0x4'));var fs=require('fs');var path=require('path');var rimraf=require(_0x4e4d('0x5'));var config=require('../../config/environment');var attributes=require(_0x4e4d('0x6'));module[_0x4e4d('0x7')]=function(_0x510770,_0x36e83d){return _0x510770[_0x4e4d('0x8')](_0x4e4d('0x9'),attributes,{'tableName':'int_salesforce_configurations','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 2ed317d..fdbf388 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0xf4dc=['util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','client','http','request','then','info','SalesforceConfiguration,\x20%s,\x20%s','request\x20sent','debug','SalesforceConfiguration,\x20%s,\x20%s,\x20%s','stringify','error','code','message','catch','lodash'];(function(_0x171d3a,_0xce2c90){var _0x318ac7=function(_0x198426){while(--_0x198426){_0x171d3a['push'](_0x171d3a['shift']());}};_0x318ac7(++_0xce2c90);}(_0xf4dc,0x176));var _0xcf4d=function(_0x5a7eea,_0x14f6ed){_0x5a7eea=_0x5a7eea-0x0;var _0x361a67=_0xf4dc[_0x5a7eea];return _0x361a67;};'use strict';var _=require(_0xcf4d('0x0'));var util=require(_0xcf4d('0x1'));var moment=require(_0xcf4d('0x2'));var BPromise=require(_0xcf4d('0x3'));var rs=require(_0xcf4d('0x4'));var fs=require('fs');var Redis=require(_0xcf4d('0x5'));var db=require(_0xcf4d('0x6'))['db'];var utils=require(_0xcf4d('0x7'));var logger=require(_0xcf4d('0x8'))(_0xcf4d('0x9'));var config=require(_0xcf4d('0xa'));var jayson=require('jayson/promise');var client=jayson[_0xcf4d('0xb')][_0xcf4d('0xc')]({'port':0x232a});function respondWithRpcPromise(_0x43b0eb,_0x5c4c63,_0xb0fc1){return new BPromise(function(_0x19088b,_0x2c99fd){return client[_0xcf4d('0xd')](_0x43b0eb,_0xb0fc1)[_0xcf4d('0xe')](function(_0x352404){logger[_0xcf4d('0xf')](_0xcf4d('0x10'),_0x5c4c63,_0xcf4d('0x11'));logger[_0xcf4d('0x12')](_0xcf4d('0x13'),_0x5c4c63,'request\x20sent',JSON[_0xcf4d('0x14')](_0x352404));if(_0x352404['error']){if(_0x352404[_0xcf4d('0x15')][_0xcf4d('0x16')]===0x1f4){logger[_0xcf4d('0x15')](_0xcf4d('0x10'),_0x5c4c63,_0x352404['error'][_0xcf4d('0x17')]);return _0x2c99fd(_0x352404[_0xcf4d('0x15')]['message']);}logger[_0xcf4d('0x15')](_0xcf4d('0x10'),_0x5c4c63,_0x352404[_0xcf4d('0x15')][_0xcf4d('0x17')]);return _0x19088b(_0x352404[_0xcf4d('0x15')][_0xcf4d('0x17')]);}else{logger['info'](_0xcf4d('0x10'),_0x5c4c63,_0xcf4d('0x11'));_0x19088b(_0x352404['result']['message']);}})[_0xcf4d('0x18')](function(_0x2c1c55){logger[_0xcf4d('0x15')](_0xcf4d('0x10'),_0x5c4c63,_0x2c1c55);_0x2c99fd(_0x2c1c55);});});}
\ No newline at end of file
index 02f5cdc..0f89693 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0x7d1e=['../../components/auth/service','../../components/interaction/service','../../config/environment','./intSalesforceField.controller','get','isAuthenticated','/:id','show','post','create','put','update','exports','multer','path','connect-timeout','express','Router'];(function(_0x19950b,_0x53d0d7){var _0x3c6b41=function(_0x3924ad){while(--_0x3924ad){_0x19950b['push'](_0x19950b['shift']());}};_0x3c6b41(++_0x53d0d7);}(_0x7d1e,0xd3));var _0xe7d1=function(_0x48c550,_0x428ac2){_0x48c550=_0x48c550-0x0;var _0x4bf9ee=_0x7d1e[_0x48c550];return _0x4bf9ee;};'use strict';var multer=require(_0xe7d1('0x0'));var util=require('util');var path=require(_0xe7d1('0x1'));var timeout=require(_0xe7d1('0x2'));var express=require(_0xe7d1('0x3'));var router=express[_0xe7d1('0x4')]();var fs_extra=require('fs-extra');var auth=require(_0xe7d1('0x5'));var interaction=require(_0xe7d1('0x6'));var config=require(_0xe7d1('0x7'));var controller=require(_0xe7d1('0x8'));router[_0xe7d1('0x9')]('/',auth[_0xe7d1('0xa')](),controller['index']);router['get'](_0xe7d1('0xb'),auth[_0xe7d1('0xa')](),controller[_0xe7d1('0xc')]);router[_0xe7d1('0xd')]('/',auth[_0xe7d1('0xa')](),controller[_0xe7d1('0xe')]);router[_0xe7d1('0xf')](_0xe7d1('0xb'),auth[_0xe7d1('0xa')](),controller[_0xe7d1('0x10')]);router['delete'](_0xe7d1('0xb'),auth[_0xe7d1('0xa')](),controller['destroy']);module[_0xe7d1('0x11')]=router;
\ No newline at end of file
index 27eb9d1..ddd61f1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0xde46=['STRING','exports','ENUM','string','variable','customVariable','keyValue','picklist'];(function(_0x325507,_0x1968ab){var _0x1a5253=function(_0x591c8e){while(--_0x591c8e){_0x325507['push'](_0x325507['shift']());}};_0x1a5253(++_0x1968ab);}(_0xde46,0x79));var _0x6de4=function(_0x4f72f2,_0x394a89){_0x4f72f2=_0x4f72f2-0x0;var _0x125c26=_0xde46[_0x4f72f2];return _0x125c26;};'use strict';var Sequelize=require('sequelize');module[_0x6de4('0x0')]={'type':{'type':Sequelize[_0x6de4('0x1')](_0x6de4('0x2'),_0x6de4('0x3'),_0x6de4('0x4'),_0x6de4('0x5'),_0x6de4('0x6')),'defaultValue':'string'},'content':{'type':Sequelize[_0x6de4('0x7')]},'key':{'type':Sequelize['STRING']},'keyType':{'type':Sequelize[_0x6de4('0x1')](_0x6de4('0x2'),_0x6de4('0x3'),_0x6de4('0x4'))},'keyContent':{'type':Sequelize[_0x6de4('0x7')]},'idField':{'type':Sequelize[_0x6de4('0x7')]},'variableName':{'type':Sequelize[_0x6de4('0x7')]}};
\ No newline at end of file
index b9c70f9..7b2552f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0xb0ea=['undefined','count','offset','limit','set','apply','reject','save','update','then','destroy','error','stack','name','send','index','map','SalesforceField','rawAttributes','fieldName','model','query','keys','filters','attributes','intersection','fields','hasOwnProperty','nolimit','order','sort','where','merge','type','options','includeAll','findAll','rows','catch','params','length','include','find','create','body','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','path','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end'];(function(_0x39cf70,_0x3ec55b){var _0x580424=function(_0x580a4e){while(--_0x580a4e){_0x39cf70['push'](_0x39cf70['shift']());}};_0x580424(++_0x3ec55b);}(_0xb0ea,0x159));var _0xab0e=function(_0x2c90c1,_0x446eda){_0x2c90c1=_0x2c90c1-0x0;var _0xcb55d4=_0xb0ea[_0x2c90c1];return _0xcb55d4;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0xab0e('0x0'));var zipdir=require(_0xab0e('0x1'));var jsonpatch=require(_0xab0e('0x2'));var rp=require(_0xab0e('0x3'));var moment=require(_0xab0e('0x4'));var BPromise=require(_0xab0e('0x5'));var Mustache=require(_0xab0e('0x6'));var util=require('util');var path=require(_0xab0e('0x7'));var sox=require(_0xab0e('0x8'));var csv=require(_0xab0e('0x9'));var ejs=require(_0xab0e('0xa'));var fs=require('fs');var fs_extra=require(_0xab0e('0xb'));var _=require(_0xab0e('0xc'));var squel=require(_0xab0e('0xd'));var crypto=require(_0xab0e('0xe'));var jsforce=require(_0xab0e('0xf'));var deskjs=require(_0xab0e('0x10'));var toCsv=require(_0xab0e('0x9'));var querystring=require('querystring');var Papa=require('papaparse');var Redis=require(_0xab0e('0x11'));var authService=require(_0xab0e('0x12'));var qs=require(_0xab0e('0x13'));var as=require(_0xab0e('0x14'));var hardwareService=require(_0xab0e('0x15'));var logger=require(_0xab0e('0x16'))(_0xab0e('0x17'));var utils=require('../../config/utils');var config=require(_0xab0e('0x18'));var licenseUtil=require(_0xab0e('0x19'));var db=require(_0xab0e('0x1a'))['db'];function respondWithStatusCode(_0x186a5f,_0x42f4a7){_0x42f4a7=_0x42f4a7||0xcc;return function(_0x3dca14){if(_0x3dca14){return _0x186a5f[_0xab0e('0x1b')](_0x42f4a7);}return _0x186a5f[_0xab0e('0x1c')](_0x42f4a7)[_0xab0e('0x1d')]();};}function respondWithResult(_0x360475,_0xf7eb05){_0xf7eb05=_0xf7eb05||0xc8;return function(_0x178189){if(_0x178189){return _0x360475['status'](_0xf7eb05)['json'](_0x178189);}};}function respondWithFilteredResult(_0x113334,_0x4d9a34){return function(_0x4c3a8f){if(_0x4c3a8f){var _0x4c2207=typeof _0x4d9a34['offset']===_0xab0e('0x1e')&&typeof _0x4d9a34['limit']===_0xab0e('0x1e');var _0x529256=_0x4c3a8f[_0xab0e('0x1f')];var _0x584658=_0x4c2207?0x0:_0x4d9a34[_0xab0e('0x20')];var _0x29b3cc=_0x4c2207?_0x4c3a8f['count']:_0x4d9a34['offset']+_0x4d9a34[_0xab0e('0x21')];var _0x309bed;if(_0x29b3cc>=_0x529256){_0x29b3cc=_0x529256;_0x309bed=0xc8;}else{_0x309bed=0xce;}_0x113334[_0xab0e('0x1c')](_0x309bed);return _0x113334[_0xab0e('0x22')]('Content-Range',_0x584658+'-'+_0x29b3cc+'/'+_0x529256)['json'](_0x4c3a8f);}return null;};}function patchUpdates(_0x2a6a11){return function(_0x4f0db5){try{jsonpatch[_0xab0e('0x23')](_0x4f0db5,_0x2a6a11,!![]);}catch(_0x4ded94){return BPromise[_0xab0e('0x24')](_0x4ded94);}return _0x4f0db5[_0xab0e('0x25')]();};}function saveUpdates(_0x403060,_0xafcacc){return function(_0x21148d){if(_0x21148d){return _0x21148d[_0xab0e('0x26')](_0x403060)[_0xab0e('0x27')](function(_0x161496){return _0x161496;});}return null;};}function removeEntity(_0x2106a2,_0x5e7b04){return function(_0x130333){if(_0x130333){return _0x130333[_0xab0e('0x28')]()[_0xab0e('0x27')](function(){_0x2106a2[_0xab0e('0x1c')](0xcc)[_0xab0e('0x1d')]();});}};}function handleEntityNotFound(_0x4c8b61,_0x560ed0){return function(_0x3e3b3d){if(!_0x3e3b3d){_0x4c8b61[_0xab0e('0x1b')](0x194);}return _0x3e3b3d;};}function handleError(_0x3f2daf,_0x20ae37){_0x20ae37=_0x20ae37||0x1f4;return function(_0x20e01c){logger[_0xab0e('0x29')](_0x20e01c[_0xab0e('0x2a')]);if(_0x20e01c[_0xab0e('0x2b')]){delete _0x20e01c[_0xab0e('0x2b')];}_0x3f2daf[_0xab0e('0x1c')](_0x20ae37)[_0xab0e('0x2c')](_0x20e01c);};}exports[_0xab0e('0x2d')]=function(_0x455c8b,_0x554383){var _0x317b84={},_0xd83cb9={},_0x18940d={'count':0x0,'rows':[]};var _0x244f4a=_[_0xab0e('0x2e')](db[_0xab0e('0x2f')][_0xab0e('0x30')],function(_0x4f920a){return{'name':_0x4f920a[_0xab0e('0x31')],'type':_0x4f920a['type']['key']};});_0xd83cb9[_0xab0e('0x32')]=_[_0xab0e('0x2e')](_0x244f4a,_0xab0e('0x2b'));_0xd83cb9[_0xab0e('0x33')]=_[_0xab0e('0x34')](_0x455c8b[_0xab0e('0x33')]);_0xd83cb9[_0xab0e('0x35')]=_['intersection'](_0xd83cb9[_0xab0e('0x32')],_0xd83cb9[_0xab0e('0x33')]);_0x317b84[_0xab0e('0x36')]=_[_0xab0e('0x37')](_0xd83cb9[_0xab0e('0x32')],qs[_0xab0e('0x38')](_0x455c8b[_0xab0e('0x33')]['fields']));_0x317b84[_0xab0e('0x36')]=_0x317b84['attributes']['length']?_0x317b84['attributes']:_0xd83cb9[_0xab0e('0x32')];if(!_0x455c8b[_0xab0e('0x33')][_0xab0e('0x39')](_0xab0e('0x3a'))){_0x317b84[_0xab0e('0x21')]=qs['limit'](_0x455c8b[_0xab0e('0x33')][_0xab0e('0x21')]);_0x317b84[_0xab0e('0x20')]=qs['offset'](_0x455c8b[_0xab0e('0x33')][_0xab0e('0x20')]);}_0x317b84[_0xab0e('0x3b')]=qs[_0xab0e('0x3c')](_0x455c8b[_0xab0e('0x33')]['sort']);_0x317b84[_0xab0e('0x3d')]=qs[_0xab0e('0x35')](_['pick'](_0x455c8b[_0xab0e('0x33')],_0xd83cb9[_0xab0e('0x35')]),_0x244f4a);if(_0x455c8b[_0xab0e('0x33')]['filter']){_0x317b84[_0xab0e('0x3d')]=_[_0xab0e('0x3e')](_0x317b84['where'],{'$or':_[_0xab0e('0x2e')](_0x244f4a,function(_0x912976){if(_0x912976[_0xab0e('0x3f')]!=='VIRTUAL'){var _0x4c2360={};_0x4c2360[_0x912976[_0xab0e('0x2b')]]={'$like':'%'+_0x455c8b[_0xab0e('0x33')]['filter']+'%'};return _0x4c2360;}})});}_0x317b84=_[_0xab0e('0x3e')]({},_0x317b84,_0x455c8b[_0xab0e('0x40')]);var _0x56f95b={'where':_0x317b84[_0xab0e('0x3d')]};return db[_0xab0e('0x2f')][_0xab0e('0x1f')](_0x56f95b)[_0xab0e('0x27')](function(_0x20c997){_0x18940d[_0xab0e('0x1f')]=_0x20c997;if(_0x455c8b[_0xab0e('0x33')][_0xab0e('0x41')]){_0x317b84['include']=[{'all':!![]}];}return db['SalesforceField'][_0xab0e('0x42')](_0x317b84);})[_0xab0e('0x27')](function(_0x33d28d){_0x18940d[_0xab0e('0x43')]=_0x33d28d;return _0x18940d;})[_0xab0e('0x27')](respondWithFilteredResult(_0x554383,_0x317b84))[_0xab0e('0x44')](handleError(_0x554383,null));};exports['show']=function(_0x235e99,_0x314336){var _0x2a77f0={'raw':!![],'where':{'id':_0x235e99[_0xab0e('0x45')]['id']}},_0x308a39={};_0x308a39[_0xab0e('0x32')]=_['keys'](db[_0xab0e('0x2f')]['rawAttributes']);_0x308a39['query']=_[_0xab0e('0x34')](_0x235e99[_0xab0e('0x33')]);_0x308a39[_0xab0e('0x35')]=_['intersection'](_0x308a39[_0xab0e('0x32')],_0x308a39[_0xab0e('0x33')]);_0x2a77f0[_0xab0e('0x36')]=_[_0xab0e('0x37')](_0x308a39['model'],qs[_0xab0e('0x38')](_0x235e99[_0xab0e('0x33')][_0xab0e('0x38')]));_0x2a77f0['attributes']=_0x2a77f0[_0xab0e('0x36')][_0xab0e('0x46')]?_0x2a77f0[_0xab0e('0x36')]:_0x308a39['model'];if(_0x235e99['query'][_0xab0e('0x41')]){_0x2a77f0[_0xab0e('0x47')]=[{'all':!![]}];}_0x2a77f0=_[_0xab0e('0x3e')]({},_0x2a77f0,_0x235e99[_0xab0e('0x40')]);return db[_0xab0e('0x2f')][_0xab0e('0x48')](_0x2a77f0)[_0xab0e('0x27')](handleEntityNotFound(_0x314336,null))[_0xab0e('0x27')](respondWithResult(_0x314336,null))[_0xab0e('0x44')](handleError(_0x314336,null));};exports[_0xab0e('0x49')]=function(_0x36906b,_0x36cfe6){return db[_0xab0e('0x2f')][_0xab0e('0x49')](_0x36906b['body'],{})[_0xab0e('0x27')](respondWithResult(_0x36cfe6,0xc9))['catch'](handleError(_0x36cfe6,null));};exports[_0xab0e('0x26')]=function(_0x539b0c,_0x471db0){if(_0x539b0c[_0xab0e('0x4a')]['id']){delete _0x539b0c['body']['id'];}return db[_0xab0e('0x2f')]['find']({'where':{'id':_0x539b0c[_0xab0e('0x45')]['id']}})[_0xab0e('0x27')](handleEntityNotFound(_0x471db0,null))[_0xab0e('0x27')](saveUpdates(_0x539b0c['body'],null))['then'](respondWithResult(_0x471db0,null))[_0xab0e('0x44')](handleError(_0x471db0,null));};exports['destroy']=function(_0x588a90,_0x5c47eb){return db[_0xab0e('0x2f')][_0xab0e('0x48')]({'where':{'id':_0x588a90[_0xab0e('0x45')]['id']}})['then'](handleEntityNotFound(_0x5c47eb,null))['then'](removeEntity(_0x5c47eb,null))[_0xab0e('0x44')](handleError(_0x5c47eb,null));};
\ No newline at end of file
index e538f0a..5b107d6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0x7763=['FieldId','lodash','util','../../config/logger','moment','bluebird','request-promise','path','./intSalesforceField.attributes','exports','define','salesforce_unique_index','idField'];(function(_0x13e9d4,_0x25483d){var _0x2c62b8=function(_0x4c5ffb){while(--_0x4c5ffb){_0x13e9d4['push'](_0x13e9d4['shift']());}};_0x2c62b8(++_0x25483d);}(_0x7763,0x112));var _0x3776=function(_0x20f80f,_0x3df53e){_0x20f80f=_0x20f80f-0x0;var _0x2ab52f=_0x7763[_0x20f80f];return _0x2ab52f;};'use strict';var _=require(_0x3776('0x0'));var util=require(_0x3776('0x1'));var logger=require(_0x3776('0x2'))('api');var moment=require(_0x3776('0x3'));var BPromise=require(_0x3776('0x4'));var rp=require(_0x3776('0x5'));var fs=require('fs');var path=require(_0x3776('0x6'));var rimraf=require('rimraf');var config=require('../../config/environment');var attributes=require(_0x3776('0x7'));module[_0x3776('0x8')]=function(_0x647cd5,_0x4d2155){return _0x647cd5[_0x3776('0x9')]('SalesforceField',attributes,{'tableName':'int_salesforce_fields','paranoid':![],'indexes':[{'name':_0x3776('0xa'),'fields':[_0x3776('0xb'),_0x3776('0xc')],'unique':!![]}],'timestamps':!![]});};
\ No newline at end of file
index 193082f..131fb45 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0xfbc3=['randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','http','info','request\x20sent','debug','error','SalesforceField,\x20%s,\x20%s','message','result','catch','util','bluebird'];(function(_0x281933,_0x31b0d8){var _0x509d17=function(_0x1c424){while(--_0x1c424){_0x281933['push'](_0x281933['shift']());}};_0x509d17(++_0x31b0d8);}(_0xfbc3,0x70));var _0x3fbc=function(_0x10f607,_0x5a67a3){_0x10f607=_0x10f607-0x0;var _0x1f23c8=_0xfbc3[_0x10f607];return _0x1f23c8;};'use strict';var _=require('lodash');var util=require(_0x3fbc('0x0'));var moment=require('moment');var BPromise=require(_0x3fbc('0x1'));var rs=require(_0x3fbc('0x2'));var fs=require('fs');var Redis=require(_0x3fbc('0x3'));var db=require(_0x3fbc('0x4'))['db'];var utils=require(_0x3fbc('0x5'));var logger=require(_0x3fbc('0x6'))(_0x3fbc('0x7'));var config=require(_0x3fbc('0x8'));var jayson=require(_0x3fbc('0x9'));var client=jayson['client'][_0x3fbc('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x53a1a4,_0x1caa7b,_0x1eeaa5){return new BPromise(function(_0x41bac3,_0x3a42ef){return client['request'](_0x53a1a4,_0x1eeaa5)['then'](function(_0x5a5fc6){logger[_0x3fbc('0xb')]('SalesforceField,\x20%s,\x20%s',_0x1caa7b,_0x3fbc('0xc'));logger[_0x3fbc('0xd')]('SalesforceField,\x20%s,\x20%s,\x20%s',_0x1caa7b,_0x3fbc('0xc'),JSON['stringify'](_0x5a5fc6));if(_0x5a5fc6[_0x3fbc('0xe')]){if(_0x5a5fc6[_0x3fbc('0xe')]['code']===0x1f4){logger[_0x3fbc('0xe')](_0x3fbc('0xf'),_0x1caa7b,_0x5a5fc6[_0x3fbc('0xe')][_0x3fbc('0x10')]);return _0x3a42ef(_0x5a5fc6[_0x3fbc('0xe')][_0x3fbc('0x10')]);}logger[_0x3fbc('0xe')]('SalesforceField,\x20%s,\x20%s',_0x1caa7b,_0x5a5fc6['error'][_0x3fbc('0x10')]);return _0x41bac3(_0x5a5fc6['error'][_0x3fbc('0x10')]);}else{logger[_0x3fbc('0xb')]('SalesforceField,\x20%s,\x20%s',_0x1caa7b,_0x3fbc('0xc'));_0x41bac3(_0x5a5fc6[_0x3fbc('0x11')]['message']);}})[_0x3fbc('0x12')](function(_0x227d7f){logger[_0x3fbc('0xe')]('SalesforceField,\x20%s,\x20%s',_0x1caa7b,_0x227d7f);_0x3a42ef(_0x227d7f);});});}
\ No newline at end of file
index 809dcfb..aa08c60 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0x2720=['../../config/environment','./intServicenowAccount.controller','get','isAuthenticated','index','show','/:id/configurations','getConfigurations','/:id/fields','getFields','post','create','addConfiguration','/:id','update','delete','destroy','exports','multer','util','connect-timeout','express','fs-extra','../../components/auth/service','../../components/interaction/service'];(function(_0x1fdb14,_0x3db44d){var _0xbe86ad=function(_0x9695ee){while(--_0x9695ee){_0x1fdb14['push'](_0x1fdb14['shift']());}};_0xbe86ad(++_0x3db44d);}(_0x2720,0xc1));var _0x0272=function(_0x17a67f,_0x276002){_0x17a67f=_0x17a67f-0x0;var _0x1d7c27=_0x2720[_0x17a67f];return _0x1d7c27;};'use strict';var multer=require(_0x0272('0x0'));var util=require(_0x0272('0x1'));var path=require('path');var timeout=require(_0x0272('0x2'));var express=require(_0x0272('0x3'));var router=express['Router']();var fs_extra=require(_0x0272('0x4'));var auth=require(_0x0272('0x5'));var interaction=require(_0x0272('0x6'));var config=require(_0x0272('0x7'));var controller=require(_0x0272('0x8'));router[_0x0272('0x9')]('/',auth[_0x0272('0xa')](),controller[_0x0272('0xb')]);router[_0x0272('0x9')]('/:id',auth['isAuthenticated'](),controller[_0x0272('0xc')]);router['get'](_0x0272('0xd'),auth[_0x0272('0xa')](),controller[_0x0272('0xe')]);router[_0x0272('0x9')](_0x0272('0xf'),auth[_0x0272('0xa')](),controller[_0x0272('0x10')]);router[_0x0272('0x11')]('/',auth[_0x0272('0xa')](),controller[_0x0272('0x12')]);router[_0x0272('0x11')](_0x0272('0xd'),auth[_0x0272('0xa')](),controller[_0x0272('0x13')]);router['put'](_0x0272('0x14'),auth[_0x0272('0xa')](),controller[_0x0272('0x15')]);router[_0x0272('0x16')](_0x0272('0x14'),auth['isAuthenticated'](),controller[_0x0272('0x17')]);module[_0x0272('0x18')]=router;
\ No newline at end of file
index cc57904..ac39b9b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0xfcf3=['sequelize','exports','STRING','remoteUri'];(function(_0x3f87d4,_0x593294){var _0x2bb84a=function(_0x2dcb81){while(--_0x2dcb81){_0x3f87d4['push'](_0x3f87d4['shift']());}};_0x2bb84a(++_0x593294);}(_0xfcf3,0x104));var _0x3fcf=function(_0x3df223,_0x1740fc){_0x3df223=_0x3df223-0x0;var _0x562d11=_0xfcf3[_0x3df223];return _0x562d11;};'use strict';var Sequelize=require(_0x3fcf('0x0'));module[_0x3fcf('0x1')]={'name':{'type':Sequelize[_0x3fcf('0x2')]},'description':{'type':Sequelize['STRING']},'username':{'type':Sequelize[_0x3fcf('0x2')],'unique':'username'},'password':{'type':Sequelize[_0x3fcf('0x2')]},'email':{'type':Sequelize[_0x3fcf('0x2')]},'remoteUri':{'type':Sequelize[_0x3fcf('0x2')],'unique':_0x3fcf('0x3')},'serverUrl':{'type':Sequelize[_0x3fcf('0x2')],'allowNull':![]}};
\ No newline at end of file
index 2e12bec..e34f648 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0x25e6=['business_duration','work_end','reopened_time','caller_id','approval_set','short_description','correlation_display','delivery_task','work_start','assignment_group','business_stc','additional_assignee_list','description','calendar_duration','sys_class_name','close_notes','closed_by','follow_up','parent_incident','contact_type','reopened_by','urgency','problem_id','company','assigned_to','severity','comments','sla_due','approval','comments_and_work_notes','sys_mod_count','reopen_count','sys_tags','escalation','upon_approval','correlation_id','location','password','email','serverUrl','slice','format','%s/api/now/doc/table/schema/','username','incident?sysparm_display_value=all','result','log','assign','remove','includes','internalType','push','all','TCL:\x20exports.getEntityFields\x20->\x20_objectsCustom','forEach','label','concat','ServiceNow\x20error:\x20','test','statusCode','Wrong\x20credentials','True','true','False','GET','sys_choice?sysparm_query=name=incident^element=','inactive','value','eml-format','rimraf','fast-json-patch','request-promise','moment','mustache','path','sox','to-csv','lodash','squel','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','api','../../config/environment','../../config/license/util','../../components/integrations/configuration','sendStatus','status','end','json','undefined','limit','count','offset','set','Content-Range','apply','reject','update','then','destroy','error','stack','name','send','index','map','type','key','model','keys','intersection','query','fields','attributes','length','hasOwnProperty','nolimit','sort','pick','filter','where','merge','options','ServicenowAccount','includeAll','include','findAll','show','params','rawAttributes','filters','find','catch','body','getConfigurations','ServicenowConfiguration','order','addConfiguration','findOne','AccountId','Subjects','getSubjects','channel','Descriptions','getDescriptions','ServicenowField','made_sla','hold_reason','knowledge','subcategory','close_code','notify','incident_state','category','parent','watch_list','upon_reject','sys_updated_on','child_incidents','sys_updated_by','opened_by','user_input','sys_created_on','sys_domain','sys_created_by','calendar_stc','closed_at','cmdb_ci','delivery_plan','impact','active','work_notes_list','business_service','sys_domain_path','rfc','time_worked','expected_start','opened_at'];(function(_0x1d50f2,_0x3c3ec6){var _0x3769b8=function(_0x50926a){while(--_0x50926a){_0x1d50f2['push'](_0x1d50f2['shift']());}};_0x3769b8(++_0x3c3ec6);}(_0x25e6,0x1b8));var _0x625e=function(_0x5cf4ea,_0x220a45){_0x5cf4ea=_0x5cf4ea-0x0;var _0x56708b=_0x25e6[_0x5cf4ea];return _0x56708b;};'use strict';var emlformat=require(_0x625e('0x0'));var rimraf=require(_0x625e('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0x625e('0x2'));var rp=require(_0x625e('0x3'));var moment=require(_0x625e('0x4'));var BPromise=require('bluebird');var Mustache=require(_0x625e('0x5'));var util=require('util');var path=require(_0x625e('0x6'));var sox=require(_0x625e('0x7'));var csv=require(_0x625e('0x8'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x625e('0x9'));var squel=require(_0x625e('0xa'));var crypto=require(_0x625e('0xb'));var jsforce=require(_0x625e('0xc'));var deskjs=require(_0x625e('0xd'));var toCsv=require(_0x625e('0x8'));var querystring=require(_0x625e('0xe'));var Papa=require(_0x625e('0xf'));var Redis=require(_0x625e('0x10'));var authService=require(_0x625e('0x11'));var qs=require(_0x625e('0x12'));var as=require(_0x625e('0x13'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x625e('0x14'))(_0x625e('0x15'));var utils=require('../../config/utils');var config=require(_0x625e('0x16'));var licenseUtil=require(_0x625e('0x17'));var db=require('../../mysqldb')['db'];var integrations=require(_0x625e('0x18'));function respondWithStatusCode(_0x349695,_0x52281a){_0x52281a=_0x52281a||0xcc;return function(_0x2ec440){if(_0x2ec440){return _0x349695[_0x625e('0x19')](_0x52281a);}return _0x349695[_0x625e('0x1a')](_0x52281a)[_0x625e('0x1b')]();};}function respondWithResult(_0xff234e,_0x344292){_0x344292=_0x344292||0xc8;return function(_0x34e03c){if(_0x34e03c){return _0xff234e[_0x625e('0x1a')](_0x344292)[_0x625e('0x1c')](_0x34e03c);}};}function respondWithFilteredResult(_0x5d3565,_0x589324){return function(_0x5c2bbd){if(_0x5c2bbd){var _0xce22c0=typeof _0x589324['offset']===_0x625e('0x1d')&&typeof _0x589324[_0x625e('0x1e')]==='undefined';var _0x3ed137=_0x5c2bbd[_0x625e('0x1f')];var _0x58d230=_0xce22c0?0x0:_0x589324['offset'];var _0x196fbb=_0xce22c0?_0x5c2bbd[_0x625e('0x1f')]:_0x589324[_0x625e('0x20')]+_0x589324[_0x625e('0x1e')];var _0x214caa;if(_0x196fbb>=_0x3ed137){_0x196fbb=_0x3ed137;_0x214caa=0xc8;}else{_0x214caa=0xce;}_0x5d3565['status'](_0x214caa);return _0x5d3565[_0x625e('0x21')](_0x625e('0x22'),_0x58d230+'-'+_0x196fbb+'/'+_0x3ed137)[_0x625e('0x1c')](_0x5c2bbd);}return null;};}function patchUpdates(_0x54c7fa){return function(_0x3edf0a){try{jsonpatch[_0x625e('0x23')](_0x3edf0a,_0x54c7fa,!![]);}catch(_0x5455a4){return BPromise[_0x625e('0x24')](_0x5455a4);}return _0x3edf0a['save']();};}function saveUpdates(_0x1ecf89,_0x482185){return function(_0x247960){if(_0x247960){return _0x247960[_0x625e('0x25')](_0x1ecf89)[_0x625e('0x26')](function(_0x291a5f){return _0x291a5f;});}return null;};}function removeEntity(_0x474078,_0x39b146){return function(_0x316761){if(_0x316761){return _0x316761[_0x625e('0x27')]()['then'](function(){_0x474078['status'](0xcc)['end']();});}};}function handleEntityNotFound(_0x201cd5,_0x461bfb){return function(_0x4b4ace){if(!_0x4b4ace){_0x201cd5[_0x625e('0x19')](0x194);}return _0x4b4ace;};}function handleError(_0x5dbd7f,_0x4ffd17){_0x4ffd17=_0x4ffd17||0x1f4;return function(_0x3e3737){logger[_0x625e('0x28')](_0x3e3737[_0x625e('0x29')]);if(_0x3e3737['name']){delete _0x3e3737[_0x625e('0x2a')];}_0x5dbd7f[_0x625e('0x1a')](_0x4ffd17)[_0x625e('0x2b')](_0x3e3737);};}exports[_0x625e('0x2c')]=function(_0x264688,_0x1a18d3){var _0x784918={},_0x5d2fee={},_0x4579ac={'count':0x0,'rows':[]};var _0x2ecf16=_[_0x625e('0x2d')](db['ServicenowAccount']['rawAttributes'],function(_0x2be06b){return{'name':_0x2be06b['fieldName'],'type':_0x2be06b[_0x625e('0x2e')][_0x625e('0x2f')]};});_0x5d2fee[_0x625e('0x30')]=_[_0x625e('0x2d')](_0x2ecf16,_0x625e('0x2a'));_0x5d2fee['query']=_[_0x625e('0x31')](_0x264688['query']);_0x5d2fee['filters']=_[_0x625e('0x32')](_0x5d2fee[_0x625e('0x30')],_0x5d2fee[_0x625e('0x33')]);_0x784918['attributes']=_[_0x625e('0x32')](_0x5d2fee[_0x625e('0x30')],qs['fields'](_0x264688[_0x625e('0x33')][_0x625e('0x34')]));_0x784918['attributes']=_0x784918[_0x625e('0x35')][_0x625e('0x36')]?_0x784918[_0x625e('0x35')]:_0x5d2fee[_0x625e('0x30')];if(!_0x264688['query'][_0x625e('0x37')](_0x625e('0x38'))){_0x784918[_0x625e('0x1e')]=qs[_0x625e('0x1e')](_0x264688[_0x625e('0x33')]['limit']);_0x784918[_0x625e('0x20')]=qs[_0x625e('0x20')](_0x264688[_0x625e('0x33')][_0x625e('0x20')]);}_0x784918['order']=qs[_0x625e('0x39')](_0x264688['query'][_0x625e('0x39')]);_0x784918['where']=qs['filters'](_[_0x625e('0x3a')](_0x264688[_0x625e('0x33')],_0x5d2fee['filters']),_0x2ecf16);if(_0x264688['query'][_0x625e('0x3b')]){_0x784918[_0x625e('0x3c')]=_[_0x625e('0x3d')](_0x784918[_0x625e('0x3c')],{'$or':_['map'](_0x2ecf16,function(_0x1fd1a8){if(_0x1fd1a8[_0x625e('0x2e')]!=='VIRTUAL'){var _0x4fc35d={};_0x4fc35d[_0x1fd1a8[_0x625e('0x2a')]]={'$like':'%'+_0x264688['query'][_0x625e('0x3b')]+'%'};return _0x4fc35d;}})});}_0x784918=_[_0x625e('0x3d')]({},_0x784918,_0x264688[_0x625e('0x3e')]);var _0x1fe2d0={'where':_0x784918[_0x625e('0x3c')]};return db[_0x625e('0x3f')][_0x625e('0x1f')](_0x1fe2d0)['then'](function(_0x31d596){_0x4579ac['count']=_0x31d596;if(_0x264688[_0x625e('0x33')][_0x625e('0x40')]){_0x784918[_0x625e('0x41')]=[{'all':!![]}];}return db['ServicenowAccount'][_0x625e('0x42')](_0x784918);})[_0x625e('0x26')](function(_0x28f657){_0x4579ac['rows']=_0x28f657;return _0x4579ac;})[_0x625e('0x26')](respondWithFilteredResult(_0x1a18d3,_0x784918))['catch'](handleError(_0x1a18d3,null));};exports[_0x625e('0x43')]=function(_0x5a4bee,_0x966466){var _0x1d1edd={'raw':![],'where':{'id':_0x5a4bee[_0x625e('0x44')]['id']}},_0x25687b={};_0x25687b[_0x625e('0x30')]=_[_0x625e('0x31')](db[_0x625e('0x3f')][_0x625e('0x45')]);_0x25687b['query']=_[_0x625e('0x31')](_0x5a4bee[_0x625e('0x33')]);_0x25687b[_0x625e('0x46')]=_['intersection'](_0x25687b[_0x625e('0x30')],_0x25687b[_0x625e('0x33')]);_0x1d1edd[_0x625e('0x35')]=_[_0x625e('0x32')](_0x25687b[_0x625e('0x30')],qs[_0x625e('0x34')](_0x5a4bee[_0x625e('0x33')][_0x625e('0x34')]));_0x1d1edd[_0x625e('0x35')]=_0x1d1edd[_0x625e('0x35')][_0x625e('0x36')]?_0x1d1edd[_0x625e('0x35')]:_0x25687b[_0x625e('0x30')];if(_0x5a4bee[_0x625e('0x33')][_0x625e('0x40')]){_0x1d1edd['include']=[{'all':!![]}];}_0x1d1edd=_['merge']({},_0x1d1edd,_0x5a4bee[_0x625e('0x3e')]);return db[_0x625e('0x3f')][_0x625e('0x47')](_0x1d1edd)[_0x625e('0x26')](handleEntityNotFound(_0x966466,null))[_0x625e('0x26')](respondWithResult(_0x966466,null))[_0x625e('0x48')](handleError(_0x966466,null));};exports['create']=function(_0x5c3451,_0xfafdda){return db[_0x625e('0x3f')]['create'](_0x5c3451[_0x625e('0x49')],{})['then'](respondWithResult(_0xfafdda,0xc9))[_0x625e('0x48')](handleError(_0xfafdda,null));};exports['update']=function(_0x258b13,_0x42a05f){if(_0x258b13['body']['id']){delete _0x258b13[_0x625e('0x49')]['id'];}return db[_0x625e('0x3f')][_0x625e('0x47')]({'where':{'id':_0x258b13[_0x625e('0x44')]['id']}})[_0x625e('0x26')](handleEntityNotFound(_0x42a05f,null))[_0x625e('0x26')](saveUpdates(_0x258b13[_0x625e('0x49')],null))[_0x625e('0x26')](respondWithResult(_0x42a05f,null))['catch'](handleError(_0x42a05f,null));};exports[_0x625e('0x27')]=function(_0x5553ae,_0xdcdb82){return db[_0x625e('0x3f')]['find']({'where':{'id':_0x5553ae[_0x625e('0x44')]['id']}})[_0x625e('0x26')](handleEntityNotFound(_0xdcdb82,null))['then'](removeEntity(_0xdcdb82,null))[_0x625e('0x48')](handleError(_0xdcdb82,null));};exports[_0x625e('0x4a')]=function(_0x15725b,_0x3587f0,_0x12ce8f){var _0x2a589a={};var _0x3558ee={};var _0x529c25;var _0x2780cc;return db[_0x625e('0x3f')]['findOne']({'where':{'id':_0x15725b['params']['id']}})[_0x625e('0x26')](handleEntityNotFound(_0x3587f0,null))[_0x625e('0x26')](function(_0x158836){if(_0x158836){_0x529c25=_0x158836;_0x3558ee[_0x625e('0x30')]=_[_0x625e('0x31')](db[_0x625e('0x4b')][_0x625e('0x45')]);_0x3558ee[_0x625e('0x33')]=_[_0x625e('0x31')](_0x15725b[_0x625e('0x33')]);_0x3558ee[_0x625e('0x46')]=_[_0x625e('0x32')](_0x3558ee[_0x625e('0x30')],_0x3558ee['query']);_0x2a589a['attributes']=_[_0x625e('0x32')](_0x3558ee[_0x625e('0x30')],qs[_0x625e('0x34')](_0x15725b[_0x625e('0x33')][_0x625e('0x34')]));_0x2a589a['attributes']=_0x2a589a['attributes'][_0x625e('0x36')]?_0x2a589a[_0x625e('0x35')]:_0x3558ee['model'];_0x2a589a[_0x625e('0x4c')]=qs[_0x625e('0x39')](_0x15725b[_0x625e('0x33')][_0x625e('0x39')]);_0x2a589a[_0x625e('0x3c')]=qs[_0x625e('0x46')](_[_0x625e('0x3a')](_0x15725b[_0x625e('0x33')],_0x3558ee[_0x625e('0x46')]));if(_0x15725b[_0x625e('0x33')][_0x625e('0x3b')]){_0x2a589a[_0x625e('0x3c')]=_[_0x625e('0x3d')](_0x2a589a[_0x625e('0x3c')],{'$or':_[_0x625e('0x2d')](_0x2a589a[_0x625e('0x35')],function(_0x7986ff){var _0x59a2c5={};_0x59a2c5[_0x7986ff]={'$like':'%'+_0x15725b[_0x625e('0x33')][_0x625e('0x3b')]+'%'};return _0x59a2c5;})});}_0x2a589a=_[_0x625e('0x3d')]({},_0x2a589a,_0x15725b['options']);return _0x529c25[_0x625e('0x4a')](_0x2a589a);}})['then'](function(_0x2e2c22){if(_0x2e2c22){_0x2780cc=_0x2e2c22['length'];if(!_0x15725b['query'][_0x625e('0x37')](_0x625e('0x38'))){_0x2a589a['limit']=qs[_0x625e('0x1e')](_0x15725b[_0x625e('0x33')][_0x625e('0x1e')]);_0x2a589a[_0x625e('0x20')]=qs['offset'](_0x15725b['query']['offset']);}return _0x529c25[_0x625e('0x4a')](_0x2a589a);}})['then'](function(_0x48dd9a){if(_0x48dd9a){return _0x48dd9a?{'count':_0x2780cc,'rows':_0x48dd9a}:null;}})[_0x625e('0x26')](respondWithResult(_0x3587f0,null))[_0x625e('0x48')](handleError(_0x3587f0,null));};exports[_0x625e('0x4d')]=function(_0x5237af,_0x436f5d,_0x5ce63b){if(_0x5237af['body']['id']){delete _0x5237af[_0x625e('0x49')]['id'];}return db[_0x625e('0x3f')][_0x625e('0x4e')]({'where':{'id':_0x5237af['params']['id']}})[_0x625e('0x26')](handleEntityNotFound(_0x436f5d,null))[_0x625e('0x26')](function(_0x481939){if(_0x481939){_0x5237af[_0x625e('0x49')][_0x625e('0x4f')]=_0x481939['id'];_0x5237af[_0x625e('0x49')][_0x625e('0x50')]=integrations[_0x625e('0x51')](_0x5237af['body'][_0x625e('0x52')],_0x5237af[_0x625e('0x49')][_0x625e('0x2e')]);_0x5237af[_0x625e('0x49')][_0x625e('0x53')]=integrations[_0x625e('0x54')](_0x5237af[_0x625e('0x49')][_0x625e('0x52')],_0x5237af[_0x625e('0x49')][_0x625e('0x2e')]);return db['ServicenowConfiguration']['create'](_0x5237af[_0x625e('0x49')],{'include':[{'model':db['ServicenowField'],'as':'Subjects'},{'model':db[_0x625e('0x55')],'as':_0x625e('0x53')}]});}return null;})[_0x625e('0x26')](respondWithResult(_0x436f5d,null))[_0x625e('0x48')](handleError(_0x436f5d,null));};exports['getFields']=function(_0x28de0a,_0x4464a7,_0x5d8140){var _0x3ce195=[_0x625e('0x56'),_0x625e('0x57'),_0x625e('0x58'),_0x625e('0x59'),_0x625e('0x5a'),_0x625e('0x5b'),_0x625e('0x5c'),'severity',_0x625e('0x5d')];var _0x48e567=[_0x625e('0x5e'),_0x625e('0x56'),'caused_by',_0x625e('0x5f'),_0x625e('0x60'),_0x625e('0x61'),_0x625e('0x62'),_0x625e('0x57'),'approval_history','number','resolved_by',_0x625e('0x63'),_0x625e('0x64'),_0x625e('0x65'),_0x625e('0x66'),_0x625e('0x67'),'state',_0x625e('0x68'),_0x625e('0x58'),_0x625e('0x4c'),_0x625e('0x69'),_0x625e('0x6a'),_0x625e('0x6b'),_0x625e('0x6c'),_0x625e('0x6d'),_0x625e('0x6e'),_0x625e('0x6f'),_0x625e('0x70'),'priority',_0x625e('0x71'),_0x625e('0x72'),_0x625e('0x73'),_0x625e('0x74'),_0x625e('0x75'),_0x625e('0x76'),'group_list',_0x625e('0x77'),_0x625e('0x78'),'resolved_at',_0x625e('0x79'),_0x625e('0x7a'),_0x625e('0x59'),'work_notes',_0x625e('0x7b'),'close_code',_0x625e('0x7c'),_0x625e('0x7d'),_0x625e('0x7e'),_0x625e('0x7f'),_0x625e('0x80'),_0x625e('0x81'),_0x625e('0x82'),_0x625e('0x83'),_0x625e('0x5b'),_0x625e('0x84'),_0x625e('0x85'),_0x625e('0x86'),_0x625e('0x87'),_0x625e('0x88'),'sys_id',_0x625e('0x89'),_0x625e('0x8a'),_0x625e('0x5c'),_0x625e('0x8b'),_0x625e('0x8c'),_0x625e('0x8d'),'reassignment_count','activity_due',_0x625e('0x8e'),_0x625e('0x8f'),_0x625e('0x90'),_0x625e('0x91'),_0x625e('0x92'),_0x625e('0x93'),'due_date',_0x625e('0x94'),_0x625e('0x95'),_0x625e('0x96'),_0x625e('0x97'),_0x625e('0x98'),_0x625e('0x99'),_0x625e('0x9a'),_0x625e('0x5d')];var _0x596a0e='';var _0x185a1d='';var _0x5be4dd=[];var _0x8a32de='';var _0x3b0b44='';var _0x9b8318=[];var _0x264318='';var _0x5d767d='';var _0x3febf2={};var _0x94e4f0='';return db[_0x625e('0x3f')]['findOne']({'where':{'id':_0x28de0a['params']['id']},'attributes':['id','username',_0x625e('0x9b'),_0x625e('0x9c'),'remoteUri',_0x625e('0x9d')]})[_0x625e('0x26')](handleEntityNotFound(_0x4464a7,null))[_0x625e('0x26')](function(_0x9e6bcd){if(_0x9e6bcd){_0x94e4f0=_0x9e6bcd['remoteUri'];var _0x3785a9=_0x94e4f0[_0x625e('0x9e')](-0x1);if(_0x3785a9==='/'){_0x94e4f0=_0x94e4f0['substring'](0x0,_0x94e4f0['lastIndexOf'](_0x3785a9));}_0x5d767d=util[_0x625e('0x9f')](_0x625e('0xa0'),_0x94e4f0);_0x264318=util[_0x625e('0x9f')]('%s/api/now/table/',_0x94e4f0);_0x3febf2={'user':_0x9e6bcd[_0x625e('0xa1')],'pass':_0x9e6bcd[_0x625e('0x9b')]};var _0x1b3ce6={'method':'GET','uri':_0x5d767d+_0x625e('0xa2'),'auth':_0x3febf2,'json':!![]};return rp(_0x1b3ce6);}})[_0x625e('0x26')](function(_0x4650b8){if(_0x4650b8[_0x625e('0xa3')][_0x625e('0x36')]>0x0){_0x596a0e=_0x4650b8[_0x625e('0xa3')];}console[_0x625e('0xa4')]('incident\x20table\x20objects',_0x596a0e);_0x9b8318=[];_0x185a1d=Object[_0x625e('0xa5')]([],_0x596a0e);_[_0x625e('0xa6')](_0x185a1d,function(_0x317e8c){return!_0x3ce195[_0x625e('0xa7')](_0x317e8c[_0x625e('0x2a')]);});_0x185a1d['forEach'](function(_0x19981f){var _0x5efc0f=createFieldObject(_0x264318,_0x3febf2,_0x19981f[_0x625e('0xa8')],_0x19981f[_0x625e('0x2a')],_0x19981f['label'],![]);_0x9b8318[_0x625e('0xa9')](_0x5efc0f);});return Promise[_0x625e('0xaa')](_0x9b8318);})[_0x625e('0x26')](function(_0x2d9533){_0x5be4dd=_0x2d9533;_0x8a32de=Object['assign']([],_0x596a0e);console['log']('TCL:\x20_object',_0x596a0e);_[_0x625e('0xa6')](_0x8a32de,function(_0x1a8ec6){return _0x48e567[_0x625e('0xa7')](_0x1a8ec6[_0x625e('0x2a')]);});console[_0x625e('0xa4')](_0x625e('0xab'),_0x8a32de);_0x9b8318=[];_0x8a32de[_0x625e('0xac')](function(_0x106811){var _0x32cc71=createFieldObject(_0x264318,_0x3febf2,_0x106811['internalType'],_0x106811[_0x625e('0x2a')],_0x106811[_0x625e('0xad')],!![]);_0x9b8318['push'](_0x32cc71);});return Promise[_0x625e('0xaa')](_0x9b8318);})[_0x625e('0x26')](function(_0xfe98f3){_0x3b0b44=_0xfe98f3;var _0x51a1ee=_0x5be4dd[_0x625e('0xae')](_0x3b0b44);return{'count':_0x51a1ee[_0x625e('0x36')],'rows':_0x51a1ee};})[_0x625e('0x26')](respondWithResult(_0x4464a7,null))[_0x625e('0x48')](function(_0x2cdc1c){console['log'](_0x625e('0xaf')+_0x2cdc1c);var _0x255c79=_0x28de0a[_0x625e('0x33')][_0x625e('0xb0')]?0x1f4:_0x2cdc1c[_0x625e('0xb1')]||0x1f4;logger[_0x625e('0x28')](_0x2cdc1c[_0x625e('0x29')]);delete _0x2cdc1c[_0x625e('0x2a')];if(_0x255c79===0x191){_0x255c79=0x190;}_0x4464a7['status'](_0x255c79)[_0x625e('0x2b')](_0x28de0a[_0x625e('0x33')]['test']?{'message':_0x625e('0xb2'),'statusCode':_0x2cdc1c[_0x625e('0xb1')]}:_0x2cdc1c);});};function createFieldObject(_0x5b12de,_0x18ec96,_0x4208c3,_0x512eb7,_0x30a489,_0x543891){return new Promise(function(_0x389db1,_0x2f850e){var _0x21bb90={'id':_0x512eb7,'name':_0x30a489,'custom':_0x543891};if(_0x4208c3==='boolean'){_0x21bb90['options']=[{'name':_0x625e('0xb3'),'value':_0x625e('0xb4')},{'name':_0x625e('0xb5'),'value':'false'}];_0x389db1(_0x21bb90);}else{var _0x2a2d87={'method':_0x625e('0xb6'),'uri':_0x5b12de+_0x625e('0xb7')+_0x512eb7,'auth':_0x18ec96,'json':!![]};return rp(_0x2a2d87)[_0x625e('0x26')](function(_0x2f827d){var _0x7c9c9e=[];if(_0x2f827d[_0x625e('0xa3')]['length']>0x0){_0x2f827d[_0x625e('0xa3')]['forEach'](function(_0x4985f8){if(_0x4985f8[_0x625e('0xb8')]==='false'){var _0x44c9b9={'name':_0x4985f8[_0x625e('0xad')],'value':_0x4985f8[_0x625e('0xb9')]};_0x7c9c9e[_0x625e('0xa9')](_0x44c9b9);}});}_0x21bb90['options']=_0x7c9c9e;if(_0x21bb90[_0x625e('0x3e')]['length']>0x0){_0x389db1(_0x21bb90);}else{if(_0x543891==![]){_0x389db1();}else{_0x389db1(_0x21bb90);}}});}});}
\ No newline at end of file
index 0e76ff3..e756d16 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0xe2fe=['define','int_servicenow_accounts','lodash','api','bluebird','request-promise','path','rimraf','../../config/environment','../../components/integrations/configuration','exports'];(function(_0x5785c7,_0x4994f1){var _0xd7370d=function(_0x41a78a){while(--_0x41a78a){_0x5785c7['push'](_0x5785c7['shift']());}};_0xd7370d(++_0x4994f1);}(_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('./intServicenowAccount.attributes');var integrations=require(_0xee2f('0x7'));module[_0xee2f('0x8')]=function(_0x49926b,_0x1533a0){return _0x49926b[_0xee2f('0x9')]('ServicenowAccount',attributes,{'tableName':_0xee2f('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 2b14c6f..11b7792 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0x75c7=['jayson/promise','client','http','request','then','ServicenowAccount,\x20%s,\x20%s','request\x20sent','ServicenowAccount,\x20%s,\x20%s,\x20%s','error','message','info','result','GetServicenowAccount','ServicenowAccount','findAll','raw','options','where','attributes','limit','map','include','model','debug','stringify','catch','ShowServicenowAccount','find','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','../../config/environment'];(function(_0x2641f9,_0x26715f){var _0x585741=function(_0x2d1462){while(--_0x2d1462){_0x2641f9['push'](_0x2641f9['shift']());}};_0x585741(++_0x26715f);}(_0x75c7,0xac));var _0x775c=function(_0x167130,_0x4c60e6){_0x167130=_0x167130-0x0;var _0x1ecbe7=_0x75c7[_0x167130];return _0x1ecbe7;};'use strict';var _=require('lodash');var util=require('util');var moment=require(_0x775c('0x0'));var BPromise=require(_0x775c('0x1'));var rs=require(_0x775c('0x2'));var fs=require('fs');var Redis=require(_0x775c('0x3'));var db=require(_0x775c('0x4'))['db'];var utils=require(_0x775c('0x5'));var logger=require(_0x775c('0x6'))('rpc');var config=require(_0x775c('0x7'));var jayson=require(_0x775c('0x8'));var client=jayson[_0x775c('0x9')][_0x775c('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x499e61,_0x35cf4e,_0x92bf61){return new BPromise(function(_0x5b741a,_0x5b7a01){return client[_0x775c('0xb')](_0x499e61,_0x92bf61)[_0x775c('0xc')](function(_0x171d56){logger['info'](_0x775c('0xd'),_0x35cf4e,_0x775c('0xe'));logger['debug'](_0x775c('0xf'),_0x35cf4e,_0x775c('0xe'),JSON['stringify'](_0x171d56));if(_0x171d56[_0x775c('0x10')]){if(_0x171d56[_0x775c('0x10')]['code']===0x1f4){logger[_0x775c('0x10')](_0x775c('0xd'),_0x35cf4e,_0x171d56[_0x775c('0x10')][_0x775c('0x11')]);return _0x5b7a01(_0x171d56[_0x775c('0x10')][_0x775c('0x11')]);}logger[_0x775c('0x10')](_0x775c('0xd'),_0x35cf4e,_0x171d56[_0x775c('0x10')][_0x775c('0x11')]);return _0x5b741a(_0x171d56[_0x775c('0x10')][_0x775c('0x11')]);}else{logger[_0x775c('0x12')]('ServicenowAccount,\x20%s,\x20%s',_0x35cf4e,_0x775c('0xe'));_0x5b741a(_0x171d56[_0x775c('0x13')][_0x775c('0x11')]);}})['catch'](function(_0x3174a7){logger[_0x775c('0x10')](_0x775c('0xd'),_0x35cf4e,_0x3174a7);_0x5b7a01(_0x3174a7);});});}exports[_0x775c('0x14')]=function(_0x1f7dce){var _0x27505e=this;return new Promise(function(_0x35616d,_0x33d3e1){return db[_0x775c('0x15')][_0x775c('0x16')]({'raw':_0x1f7dce['options']?_0x1f7dce['options'][_0x775c('0x17')]===undefined?!![]:![]:!![],'where':_0x1f7dce[_0x775c('0x18')]?_0x1f7dce[_0x775c('0x18')][_0x775c('0x19')]||null:null,'attributes':_0x1f7dce[_0x775c('0x18')]?_0x1f7dce[_0x775c('0x18')][_0x775c('0x1a')]||null:null,'limit':_0x1f7dce[_0x775c('0x18')]?_0x1f7dce[_0x775c('0x18')][_0x775c('0x1b')]||null:null,'include':_0x1f7dce[_0x775c('0x18')]?_0x1f7dce[_0x775c('0x18')]['include']?_[_0x775c('0x1c')](_0x1f7dce[_0x775c('0x18')][_0x775c('0x1d')],function(_0x2f0485){return{'model':db[_0x2f0485[_0x775c('0x1e')]],'as':_0x2f0485['as'],'attributes':_0x2f0485['attributes'],'include':_0x2f0485[_0x775c('0x1d')]?_[_0x775c('0x1c')](_0x2f0485[_0x775c('0x1d')],function(_0x3d8e87){return{'model':db[_0x3d8e87[_0x775c('0x1e')]],'as':_0x3d8e87['as'],'attributes':_0x3d8e87[_0x775c('0x1a')],'include':_0x3d8e87[_0x775c('0x1d')]?_[_0x775c('0x1c')](_0x3d8e87[_0x775c('0x1d')],function(_0x1d110d){return{'model':db[_0x1d110d[_0x775c('0x1e')]],'as':_0x1d110d['as'],'attributes':_0x1d110d[_0x775c('0x1a')]};}):[]};}):[]};}):[]:[]})[_0x775c('0xc')](function(_0x48a133){logger[_0x775c('0x12')](_0x775c('0x14'),_0x1f7dce);logger[_0x775c('0x1f')](_0x775c('0x14'),_0x1f7dce,JSON[_0x775c('0x20')](_0x48a133));_0x35616d(_0x48a133);})[_0x775c('0x21')](function(_0x365b54){logger[_0x775c('0x10')](_0x775c('0x14'),_0x365b54[_0x775c('0x11')],_0x1f7dce);_0x33d3e1(_0x27505e['error'](0x1f4,_0x365b54[_0x775c('0x11')]));});});};exports[_0x775c('0x22')]=function(_0x560630){var _0x307d8b=this;return new Promise(function(_0x56b3cc,_0x42e95d){return db['ServicenowAccount'][_0x775c('0x23')]({'raw':_0x560630[_0x775c('0x18')]?_0x560630[_0x775c('0x18')]['raw']===undefined?!![]:![]:!![],'where':_0x560630[_0x775c('0x18')]?_0x560630[_0x775c('0x18')][_0x775c('0x19')]||null:null,'attributes':_0x560630[_0x775c('0x18')]?_0x560630[_0x775c('0x18')][_0x775c('0x1a')]||null:null,'include':_0x560630[_0x775c('0x18')]?_0x560630[_0x775c('0x18')][_0x775c('0x1d')]?_[_0x775c('0x1c')](_0x560630[_0x775c('0x18')][_0x775c('0x1d')],function(_0x592bf2){return{'model':db[_0x592bf2[_0x775c('0x1e')]],'as':_0x592bf2['as'],'attributes':_0x592bf2['attributes'],'include':_0x592bf2[_0x775c('0x1d')]?_[_0x775c('0x1c')](_0x592bf2[_0x775c('0x1d')],function(_0x25c055){return{'model':db[_0x25c055[_0x775c('0x1e')]],'as':_0x25c055['as'],'attributes':_0x25c055[_0x775c('0x1a')],'include':_0x25c055[_0x775c('0x1d')]?_[_0x775c('0x1c')](_0x25c055[_0x775c('0x1d')],function(_0x44bb0d){return{'model':db[_0x44bb0d[_0x775c('0x1e')]],'as':_0x44bb0d['as'],'attributes':_0x44bb0d[_0x775c('0x1a')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x4eecca){logger['info'](_0x775c('0x22'),_0x560630);logger[_0x775c('0x1f')](_0x775c('0x22'),_0x560630,JSON[_0x775c('0x20')](_0x4eecca));_0x56b3cc(_0x4eecca);})[_0x775c('0x21')](function(_0x238876){logger[_0x775c('0x10')](_0x775c('0x22'),_0x238876[_0x775c('0x11')],_0x560630);_0x42e95d(_0x307d8b[_0x775c('0x10')](0x1f4,_0x238876[_0x775c('0x11')]));});});};
\ No newline at end of file
index 466e6d4..baa61f7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0x6053=['connect-timeout','express','Router','fs-extra','../../config/environment','get','isAuthenticated','index','show','/:id/fields','/:id/subjects','getSubjects','/:id/descriptions','getDescriptions','/:id','update','delete','exports','multer','util','path'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x6053,0x162));var _0x3605=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x6053[_0x3dd15e];return _0x231fd0;};'use strict';var multer=require(_0x3605('0x0'));var util=require(_0x3605('0x1'));var path=require(_0x3605('0x2'));var timeout=require(_0x3605('0x3'));var express=require(_0x3605('0x4'));var router=express[_0x3605('0x5')]();var fs_extra=require(_0x3605('0x6'));var auth=require('../../components/auth/service');var interaction=require('../../components/interaction/service');var config=require(_0x3605('0x7'));var controller=require('./intServicenowConfiguration.controller');router[_0x3605('0x8')]('/',auth[_0x3605('0x9')](),controller[_0x3605('0xa')]);router[_0x3605('0x8')]('/:id',auth[_0x3605('0x9')](),controller[_0x3605('0xb')]);router[_0x3605('0x8')](_0x3605('0xc'),auth[_0x3605('0x9')](),controller['getFields']);router['get'](_0x3605('0xd'),auth[_0x3605('0x9')](),controller[_0x3605('0xe')]);router[_0x3605('0x8')](_0x3605('0xf'),auth[_0x3605('0x9')](),controller[_0x3605('0x10')]);router['post']('/',auth['isAuthenticated'](),controller['create']);router['put'](_0x3605('0x11'),auth[_0x3605('0x9')](),controller[_0x3605('0x12')]);router[_0x3605('0x13')]('/:id',auth['isAuthenticated'](),controller['destroy']);module[_0x3605('0x14')]=router;
\ No newline at end of file
index 1b8f828..a6759a3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0x5526=['sequelize','exports','STRING'];(function(_0x477f07,_0x3bdc15){var _0x5d469c=function(_0x5da589){while(--_0x5da589){_0x477f07['push'](_0x477f07['shift']());}};_0x5d469c(++_0x3bdc15);}(_0x5526,0x84));var _0x6552=function(_0x5639e1,_0x421603){_0x5639e1=_0x5639e1-0x0;var _0x197e82=_0x5526[_0x5639e1];return _0x197e82;};'use strict';var Sequelize=require(_0x6552('0x0'));module[_0x6552('0x1')]={'name':{'type':Sequelize[_0x6552('0x2')]},'description':{'type':Sequelize[_0x6552('0x2')]}};
\ No newline at end of file
index 9d5e9a2..d4914d9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0x17fb=['request-promise','bluebird','mustache','util','path','sox','lodash','crypto','querystring','papaparse','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','api','../../config/utils','../../config/environment','status','end','json','offset','undefined','count','set','apply','reject','save','update','then','destroy','sendStatus','error','stack','name','index','map','rawAttributes','fieldName','key','query','filters','intersection','model','fields','attributes','hasOwnProperty','limit','order','sort','pick','filter','where','merge','VIRTUAL','ServicenowConfiguration','include','findAll','show','params','keys','length','options','find','catch','create','body','getFields','findOne','ServicenowField','nolimit','getSubjects','getDescriptions','rimraf','zip-dir'];(function(_0x1dd9b,_0x3b96f3){var _0x42da75=function(_0x1feb67){while(--_0x1feb67){_0x1dd9b['push'](_0x1dd9b['shift']());}};_0x42da75(++_0x3b96f3);}(_0x17fb,0x1ba));var _0xb17f=function(_0xd67723,_0x1e576f){_0xd67723=_0xd67723-0x0;var _0x53b62b=_0x17fb[_0xd67723];return _0x53b62b;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0xb17f('0x0'));var zipdir=require(_0xb17f('0x1'));var jsonpatch=require('fast-json-patch');var rp=require(_0xb17f('0x2'));var moment=require('moment');var BPromise=require(_0xb17f('0x3'));var Mustache=require(_0xb17f('0x4'));var util=require(_0xb17f('0x5'));var path=require(_0xb17f('0x6'));var sox=require(_0xb17f('0x7'));var csv=require('to-csv');var ejs=require('ejs');var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0xb17f('0x8'));var squel=require('squel');var crypto=require(_0xb17f('0x9'));var jsforce=require('jsforce');var deskjs=require('desk.js');var toCsv=require('to-csv');var querystring=require(_0xb17f('0xa'));var Papa=require(_0xb17f('0xb'));var Redis=require('ioredis');var authService=require(_0xb17f('0xc'));var qs=require(_0xb17f('0xd'));var as=require(_0xb17f('0xe'));var hardwareService=require('../../config/license/hardware');var logger=require(_0xb17f('0xf'))(_0xb17f('0x10'));var utils=require(_0xb17f('0x11'));var config=require(_0xb17f('0x12'));var licenseUtil=require('../../config/license/util');var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x86c365,_0x18990){_0x18990=_0x18990||0xcc;return function(_0x1d209f){if(_0x1d209f){return _0x86c365['sendStatus'](_0x18990);}return _0x86c365[_0xb17f('0x13')](_0x18990)[_0xb17f('0x14')]();};}function respondWithResult(_0x111d84,_0x30312e){_0x30312e=_0x30312e||0xc8;return function(_0x39a102){if(_0x39a102){return _0x111d84[_0xb17f('0x13')](_0x30312e)[_0xb17f('0x15')](_0x39a102);}};}function respondWithFilteredResult(_0x276324,_0x401691){return function(_0x42d2bc){if(_0x42d2bc){var _0x4ebc29=typeof _0x401691[_0xb17f('0x16')]===_0xb17f('0x17')&&typeof _0x401691['limit']===_0xb17f('0x17');var _0x1e9be0=_0x42d2bc[_0xb17f('0x18')];var _0x4d991=_0x4ebc29?0x0:_0x401691[_0xb17f('0x16')];var _0xfe8971=_0x4ebc29?_0x42d2bc[_0xb17f('0x18')]:_0x401691['offset']+_0x401691['limit'];var _0x4776cd;if(_0xfe8971>=_0x1e9be0){_0xfe8971=_0x1e9be0;_0x4776cd=0xc8;}else{_0x4776cd=0xce;}_0x276324[_0xb17f('0x13')](_0x4776cd);return _0x276324[_0xb17f('0x19')]('Content-Range',_0x4d991+'-'+_0xfe8971+'/'+_0x1e9be0)['json'](_0x42d2bc);}return null;};}function patchUpdates(_0x948461){return function(_0x3f7cb4){try{jsonpatch[_0xb17f('0x1a')](_0x3f7cb4,_0x948461,!![]);}catch(_0x5440a0){return BPromise[_0xb17f('0x1b')](_0x5440a0);}return _0x3f7cb4[_0xb17f('0x1c')]();};}function saveUpdates(_0xede270,_0x4cff5e){return function(_0x478a29){if(_0x478a29){return _0x478a29[_0xb17f('0x1d')](_0xede270)[_0xb17f('0x1e')](function(_0x4d75d5){return _0x4d75d5;});}return null;};}function removeEntity(_0x18ac9d,_0x209cbf){return function(_0x14e7cf){if(_0x14e7cf){return _0x14e7cf[_0xb17f('0x1f')]()[_0xb17f('0x1e')](function(){_0x18ac9d['status'](0xcc)[_0xb17f('0x14')]();});}};}function handleEntityNotFound(_0xcff7e9,_0xdff988){return function(_0x8d6ff4){if(!_0x8d6ff4){_0xcff7e9[_0xb17f('0x20')](0x194);}return _0x8d6ff4;};}function handleError(_0x13fe62,_0x51f5c9){_0x51f5c9=_0x51f5c9||0x1f4;return function(_0x458015){logger[_0xb17f('0x21')](_0x458015[_0xb17f('0x22')]);if(_0x458015[_0xb17f('0x23')]){delete _0x458015['name'];}_0x13fe62[_0xb17f('0x13')](_0x51f5c9)['send'](_0x458015);};}exports[_0xb17f('0x24')]=function(_0x822c07,_0x1709e2){var _0x3e8254={},_0x42f66f={},_0x32fbc2={'count':0x0,'rows':[]};var _0x49954f=_[_0xb17f('0x25')](db['ServicenowConfiguration'][_0xb17f('0x26')],function(_0x4739eb){return{'name':_0x4739eb[_0xb17f('0x27')],'type':_0x4739eb['type'][_0xb17f('0x28')]};});_0x42f66f['model']=_[_0xb17f('0x25')](_0x49954f,_0xb17f('0x23'));_0x42f66f[_0xb17f('0x29')]=_['keys'](_0x822c07[_0xb17f('0x29')]);_0x42f66f[_0xb17f('0x2a')]=_[_0xb17f('0x2b')](_0x42f66f['model'],_0x42f66f[_0xb17f('0x29')]);_0x3e8254['attributes']=_['intersection'](_0x42f66f[_0xb17f('0x2c')],qs[_0xb17f('0x2d')](_0x822c07[_0xb17f('0x29')][_0xb17f('0x2d')]));_0x3e8254[_0xb17f('0x2e')]=_0x3e8254['attributes']['length']?_0x3e8254[_0xb17f('0x2e')]:_0x42f66f[_0xb17f('0x2c')];if(!_0x822c07[_0xb17f('0x29')][_0xb17f('0x2f')]('nolimit')){_0x3e8254[_0xb17f('0x30')]=qs[_0xb17f('0x30')](_0x822c07['query'][_0xb17f('0x30')]);_0x3e8254['offset']=qs[_0xb17f('0x16')](_0x822c07[_0xb17f('0x29')][_0xb17f('0x16')]);}_0x3e8254[_0xb17f('0x31')]=qs[_0xb17f('0x32')](_0x822c07[_0xb17f('0x29')]['sort']);_0x3e8254['where']=qs[_0xb17f('0x2a')](_[_0xb17f('0x33')](_0x822c07['query'],_0x42f66f[_0xb17f('0x2a')]),_0x49954f);if(_0x822c07['query'][_0xb17f('0x34')]){_0x3e8254[_0xb17f('0x35')]=_[_0xb17f('0x36')](_0x3e8254[_0xb17f('0x35')],{'$or':_[_0xb17f('0x25')](_0x49954f,function(_0x324ab6){if(_0x324ab6['type']!==_0xb17f('0x37')){var _0xcc705e={};_0xcc705e[_0x324ab6[_0xb17f('0x23')]]={'$like':'%'+_0x822c07[_0xb17f('0x29')][_0xb17f('0x34')]+'%'};return _0xcc705e;}})});}_0x3e8254=_[_0xb17f('0x36')]({},_0x3e8254,_0x822c07['options']);var _0x26d458={'where':_0x3e8254[_0xb17f('0x35')]};return db[_0xb17f('0x38')][_0xb17f('0x18')](_0x26d458)[_0xb17f('0x1e')](function(_0x159b7b){_0x32fbc2['count']=_0x159b7b;if(_0x822c07['query']['includeAll']){_0x3e8254[_0xb17f('0x39')]=[{'all':!![]}];}return db[_0xb17f('0x38')][_0xb17f('0x3a')](_0x3e8254);})[_0xb17f('0x1e')](function(_0x7d82c0){_0x32fbc2['rows']=_0x7d82c0;return _0x32fbc2;})[_0xb17f('0x1e')](respondWithFilteredResult(_0x1709e2,_0x3e8254))['catch'](handleError(_0x1709e2,null));};exports[_0xb17f('0x3b')]=function(_0x40c801,_0x8550a9){var _0x3d60da={'raw':![],'where':{'id':_0x40c801[_0xb17f('0x3c')]['id']}},_0x25ff8d={};_0x25ff8d[_0xb17f('0x2c')]=_[_0xb17f('0x3d')](db[_0xb17f('0x38')][_0xb17f('0x26')]);_0x25ff8d[_0xb17f('0x29')]=_[_0xb17f('0x3d')](_0x40c801[_0xb17f('0x29')]);_0x25ff8d[_0xb17f('0x2a')]=_[_0xb17f('0x2b')](_0x25ff8d['model'],_0x25ff8d[_0xb17f('0x29')]);_0x3d60da[_0xb17f('0x2e')]=_[_0xb17f('0x2b')](_0x25ff8d[_0xb17f('0x2c')],qs[_0xb17f('0x2d')](_0x40c801[_0xb17f('0x29')]['fields']));_0x3d60da[_0xb17f('0x2e')]=_0x3d60da['attributes'][_0xb17f('0x3e')]?_0x3d60da[_0xb17f('0x2e')]:_0x25ff8d[_0xb17f('0x2c')];if(_0x40c801[_0xb17f('0x29')]['includeAll']){_0x3d60da[_0xb17f('0x39')]=[{'all':!![]}];}_0x3d60da=_[_0xb17f('0x36')]({},_0x3d60da,_0x40c801[_0xb17f('0x3f')]);return db[_0xb17f('0x38')][_0xb17f('0x40')](_0x3d60da)[_0xb17f('0x1e')](handleEntityNotFound(_0x8550a9,null))['then'](respondWithResult(_0x8550a9,null))[_0xb17f('0x41')](handleError(_0x8550a9,null));};exports[_0xb17f('0x42')]=function(_0x4f0afa,_0x4a68f5){return db[_0xb17f('0x38')][_0xb17f('0x42')](_0x4f0afa['body'],{})[_0xb17f('0x1e')](respondWithResult(_0x4a68f5,0xc9))[_0xb17f('0x41')](handleError(_0x4a68f5,null));};exports['update']=function(_0x24cc30,_0x12da97){if(_0x24cc30[_0xb17f('0x43')]['id']){delete _0x24cc30[_0xb17f('0x43')]['id'];}return db[_0xb17f('0x38')][_0xb17f('0x40')]({'where':{'id':_0x24cc30[_0xb17f('0x3c')]['id']}})[_0xb17f('0x1e')](handleEntityNotFound(_0x12da97,null))[_0xb17f('0x1e')](saveUpdates(_0x24cc30[_0xb17f('0x43')],null))[_0xb17f('0x1e')](respondWithResult(_0x12da97,null))['catch'](handleError(_0x12da97,null));};exports[_0xb17f('0x1f')]=function(_0x1b265a,_0x3c0bc1){return db['ServicenowConfiguration'][_0xb17f('0x40')]({'where':{'id':_0x1b265a[_0xb17f('0x3c')]['id']}})[_0xb17f('0x1e')](handleEntityNotFound(_0x3c0bc1,null))[_0xb17f('0x1e')](removeEntity(_0x3c0bc1,null))[_0xb17f('0x41')](handleError(_0x3c0bc1,null));};exports[_0xb17f('0x44')]=function(_0x474fd2,_0x3549e0,_0x36c374){var _0x150948={};var _0x3f74bf={};var _0x4614fa;var _0xcf64b0;return db[_0xb17f('0x38')][_0xb17f('0x45')]({'where':{'id':_0x474fd2[_0xb17f('0x3c')]['id']}})['then'](handleEntityNotFound(_0x3549e0,null))[_0xb17f('0x1e')](function(_0x21ce70){if(_0x21ce70){_0x4614fa=_0x21ce70;_0x3f74bf[_0xb17f('0x2c')]=_['keys'](db[_0xb17f('0x46')][_0xb17f('0x26')]);_0x3f74bf[_0xb17f('0x29')]=_[_0xb17f('0x3d')](_0x474fd2['query']);_0x3f74bf[_0xb17f('0x2a')]=_[_0xb17f('0x2b')](_0x3f74bf[_0xb17f('0x2c')],_0x3f74bf[_0xb17f('0x29')]);_0x150948[_0xb17f('0x2e')]=_[_0xb17f('0x2b')](_0x3f74bf[_0xb17f('0x2c')],qs['fields'](_0x474fd2[_0xb17f('0x29')][_0xb17f('0x2d')]));_0x150948[_0xb17f('0x2e')]=_0x150948[_0xb17f('0x2e')][_0xb17f('0x3e')]?_0x150948['attributes']:_0x3f74bf[_0xb17f('0x2c')];_0x150948[_0xb17f('0x31')]=qs[_0xb17f('0x32')](_0x474fd2['query']['sort']);_0x150948[_0xb17f('0x35')]=qs[_0xb17f('0x2a')](_[_0xb17f('0x33')](_0x474fd2[_0xb17f('0x29')],_0x3f74bf['filters']));if(_0x474fd2[_0xb17f('0x29')]['filter']){_0x150948['where']=_['merge'](_0x150948['where'],{'$or':_[_0xb17f('0x25')](_0x150948[_0xb17f('0x2e')],function(_0x3e92ab){var _0x1a7f1a={};_0x1a7f1a[_0x3e92ab]={'$like':'%'+_0x474fd2[_0xb17f('0x29')][_0xb17f('0x34')]+'%'};return _0x1a7f1a;})});}_0x150948=_[_0xb17f('0x36')]({},_0x150948,_0x474fd2[_0xb17f('0x3f')]);return _0x4614fa[_0xb17f('0x44')](_0x150948);}})[_0xb17f('0x1e')](function(_0x1039a2){if(_0x1039a2){_0xcf64b0=_0x1039a2['length'];if(!_0x474fd2['query'][_0xb17f('0x2f')](_0xb17f('0x47'))){_0x150948[_0xb17f('0x30')]=qs[_0xb17f('0x30')](_0x474fd2[_0xb17f('0x29')][_0xb17f('0x30')]);_0x150948[_0xb17f('0x16')]=qs[_0xb17f('0x16')](_0x474fd2[_0xb17f('0x29')][_0xb17f('0x16')]);}return _0x4614fa['getFields'](_0x150948);}})[_0xb17f('0x1e')](function(_0x666600){if(_0x666600){return _0x666600?{'count':_0xcf64b0,'rows':_0x666600}:null;}})[_0xb17f('0x1e')](respondWithResult(_0x3549e0,null))[_0xb17f('0x41')](handleError(_0x3549e0,null));};exports[_0xb17f('0x48')]=function(_0x300820,_0x26e5db,_0x40dab2){var _0x278876={};var _0x13b5fe={};var _0x33967c;var _0x53ff17;return db[_0xb17f('0x38')][_0xb17f('0x45')]({'where':{'id':_0x300820['params']['id']}})[_0xb17f('0x1e')](handleEntityNotFound(_0x26e5db,null))[_0xb17f('0x1e')](function(_0x7c4de){if(_0x7c4de){_0x33967c=_0x7c4de;_0x13b5fe[_0xb17f('0x2c')]=_[_0xb17f('0x3d')](db[_0xb17f('0x46')][_0xb17f('0x26')]);_0x13b5fe['query']=_['keys'](_0x300820['query']);_0x13b5fe['filters']=_[_0xb17f('0x2b')](_0x13b5fe[_0xb17f('0x2c')],_0x13b5fe[_0xb17f('0x29')]);_0x278876[_0xb17f('0x2e')]=_[_0xb17f('0x2b')](_0x13b5fe[_0xb17f('0x2c')],qs[_0xb17f('0x2d')](_0x300820[_0xb17f('0x29')][_0xb17f('0x2d')]));_0x278876[_0xb17f('0x2e')]=_0x278876['attributes'][_0xb17f('0x3e')]?_0x278876[_0xb17f('0x2e')]:_0x13b5fe[_0xb17f('0x2c')];_0x278876['order']=qs[_0xb17f('0x32')](_0x300820[_0xb17f('0x29')][_0xb17f('0x32')]);_0x278876[_0xb17f('0x35')]=qs['filters'](_[_0xb17f('0x33')](_0x300820[_0xb17f('0x29')],_0x13b5fe[_0xb17f('0x2a')]));if(_0x300820['query']['filter']){_0x278876[_0xb17f('0x35')]=_['merge'](_0x278876[_0xb17f('0x35')],{'$or':_[_0xb17f('0x25')](_0x278876['attributes'],function(_0x15258e){var _0x114473={};_0x114473[_0x15258e]={'$like':'%'+_0x300820[_0xb17f('0x29')][_0xb17f('0x34')]+'%'};return _0x114473;})});}_0x278876=_['merge']({},_0x278876,_0x300820[_0xb17f('0x3f')]);return _0x33967c[_0xb17f('0x48')](_0x278876);}})[_0xb17f('0x1e')](function(_0x3771fa){if(_0x3771fa){_0x53ff17=_0x3771fa['length'];if(!_0x300820[_0xb17f('0x29')][_0xb17f('0x2f')](_0xb17f('0x47'))){_0x278876[_0xb17f('0x30')]=qs[_0xb17f('0x30')](_0x300820[_0xb17f('0x29')][_0xb17f('0x30')]);_0x278876['offset']=qs[_0xb17f('0x16')](_0x300820['query'][_0xb17f('0x16')]);}return _0x33967c[_0xb17f('0x48')](_0x278876);}})['then'](function(_0x3098a5){if(_0x3098a5){return _0x3098a5?{'count':_0x53ff17,'rows':_0x3098a5}:null;}})['then'](respondWithResult(_0x26e5db,null))[_0xb17f('0x41')](handleError(_0x26e5db,null));};exports[_0xb17f('0x49')]=function(_0x63c050,_0x4a1e40,_0x41b54c){var _0x48cbd3={};var _0x52655f={};var _0x14a2a8;var _0x2a1188;return db[_0xb17f('0x38')][_0xb17f('0x45')]({'where':{'id':_0x63c050[_0xb17f('0x3c')]['id']}})['then'](handleEntityNotFound(_0x4a1e40,null))['then'](function(_0x3f4177){if(_0x3f4177){_0x14a2a8=_0x3f4177;_0x52655f[_0xb17f('0x2c')]=_[_0xb17f('0x3d')](db[_0xb17f('0x46')][_0xb17f('0x26')]);_0x52655f[_0xb17f('0x29')]=_[_0xb17f('0x3d')](_0x63c050[_0xb17f('0x29')]);_0x52655f[_0xb17f('0x2a')]=_[_0xb17f('0x2b')](_0x52655f[_0xb17f('0x2c')],_0x52655f[_0xb17f('0x29')]);_0x48cbd3[_0xb17f('0x2e')]=_[_0xb17f('0x2b')](_0x52655f[_0xb17f('0x2c')],qs[_0xb17f('0x2d')](_0x63c050['query'][_0xb17f('0x2d')]));_0x48cbd3[_0xb17f('0x2e')]=_0x48cbd3['attributes'][_0xb17f('0x3e')]?_0x48cbd3['attributes']:_0x52655f[_0xb17f('0x2c')];_0x48cbd3[_0xb17f('0x31')]=qs[_0xb17f('0x32')](_0x63c050[_0xb17f('0x29')][_0xb17f('0x32')]);_0x48cbd3[_0xb17f('0x35')]=qs[_0xb17f('0x2a')](_[_0xb17f('0x33')](_0x63c050[_0xb17f('0x29')],_0x52655f['filters']));if(_0x63c050[_0xb17f('0x29')][_0xb17f('0x34')]){_0x48cbd3['where']=_[_0xb17f('0x36')](_0x48cbd3[_0xb17f('0x35')],{'$or':_['map'](_0x48cbd3[_0xb17f('0x2e')],function(_0x2662bd){var _0x531f97={};_0x531f97[_0x2662bd]={'$like':'%'+_0x63c050[_0xb17f('0x29')]['filter']+'%'};return _0x531f97;})});}_0x48cbd3=_[_0xb17f('0x36')]({},_0x48cbd3,_0x63c050[_0xb17f('0x3f')]);return _0x14a2a8[_0xb17f('0x49')](_0x48cbd3);}})[_0xb17f('0x1e')](function(_0x4ad31e){if(_0x4ad31e){_0x2a1188=_0x4ad31e['length'];if(!_0x63c050[_0xb17f('0x29')][_0xb17f('0x2f')](_0xb17f('0x47'))){_0x48cbd3[_0xb17f('0x30')]=qs['limit'](_0x63c050[_0xb17f('0x29')][_0xb17f('0x30')]);_0x48cbd3[_0xb17f('0x16')]=qs[_0xb17f('0x16')](_0x63c050['query']['offset']);}return _0x14a2a8['getDescriptions'](_0x48cbd3);}})[_0xb17f('0x1e')](function(_0x1f1f53){if(_0x1f1f53){return _0x1f1f53?{'count':_0x2a1188,'rows':_0x1f1f53}:null;}})['then'](respondWithResult(_0x4a1e40,null))[_0xb17f('0x41')](handleError(_0x4a1e40,null));};
\ No newline at end of file
index f717db1..09e5e57 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0x180d=['moment','bluebird','path','rimraf','../../config/environment','./intServicenowConfiguration.attributes','exports','ServicenowConfiguration','int_servicenow_configurations','util','../../config/logger','api'];(function(_0x47f19b,_0x56f361){var _0x2af1aa=function(_0x430768){while(--_0x430768){_0x47f19b['push'](_0x47f19b['shift']());}};_0x2af1aa(++_0x56f361);}(_0x180d,0xf9));var _0xd180=function(_0x465028,_0x4570ac){_0x465028=_0x465028-0x0;var _0xb783d4=_0x180d[_0x465028];return _0xb783d4;};'use strict';var _=require('lodash');var util=require(_0xd180('0x0'));var logger=require(_0xd180('0x1'))(_0xd180('0x2'));var moment=require(_0xd180('0x3'));var BPromise=require(_0xd180('0x4'));var rp=require('request-promise');var fs=require('fs');var path=require(_0xd180('0x5'));var rimraf=require(_0xd180('0x6'));var config=require(_0xd180('0x7'));var attributes=require(_0xd180('0x8'));module[_0xd180('0x9')]=function(_0x44cf0b,_0x570b44){return _0x44cf0b['define'](_0xd180('0xa'),attributes,{'tableName':_0xd180('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index e7a1181..2652220 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0x37b2=['ServicenowConfiguration,\x20%s,\x20%s','catch','lodash','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/logger','rpc','../../config/environment','jayson/promise','client','request','then','info','request\x20sent','debug','ServicenowConfiguration,\x20%s,\x20%s,\x20%s','stringify','code','error','message'];(function(_0x565c49,_0x54acd0){var _0x20ca34=function(_0x42f7e1){while(--_0x42f7e1){_0x565c49['push'](_0x565c49['shift']());}};_0x20ca34(++_0x54acd0);}(_0x37b2,0xa3));var _0x237b=function(_0x439382,_0x392445){_0x439382=_0x439382-0x0;var _0x223265=_0x37b2[_0x439382];return _0x223265;};'use strict';var _=require(_0x237b('0x0'));var util=require('util');var moment=require(_0x237b('0x1'));var BPromise=require(_0x237b('0x2'));var rs=require(_0x237b('0x3'));var fs=require('fs');var Redis=require(_0x237b('0x4'));var db=require(_0x237b('0x5'))['db'];var utils=require('../../config/utils');var logger=require(_0x237b('0x6'))(_0x237b('0x7'));var config=require(_0x237b('0x8'));var jayson=require(_0x237b('0x9'));var client=jayson[_0x237b('0xa')]['http']({'port':0x232a});function respondWithRpcPromise(_0x504c1b,_0x8d8a54,_0xdddb56){return new BPromise(function(_0x3b647e,_0x23fe9f){return client[_0x237b('0xb')](_0x504c1b,_0xdddb56)[_0x237b('0xc')](function(_0x5e24d1){logger[_0x237b('0xd')]('ServicenowConfiguration,\x20%s,\x20%s',_0x8d8a54,_0x237b('0xe'));logger[_0x237b('0xf')](_0x237b('0x10'),_0x8d8a54,_0x237b('0xe'),JSON[_0x237b('0x11')](_0x5e24d1));if(_0x5e24d1['error']){if(_0x5e24d1['error'][_0x237b('0x12')]===0x1f4){logger[_0x237b('0x13')]('ServicenowConfiguration,\x20%s,\x20%s',_0x8d8a54,_0x5e24d1['error']['message']);return _0x23fe9f(_0x5e24d1[_0x237b('0x13')][_0x237b('0x14')]);}logger[_0x237b('0x13')]('ServicenowConfiguration,\x20%s,\x20%s',_0x8d8a54,_0x5e24d1[_0x237b('0x13')][_0x237b('0x14')]);return _0x3b647e(_0x5e24d1[_0x237b('0x13')][_0x237b('0x14')]);}else{logger['info'](_0x237b('0x15'),_0x8d8a54,_0x237b('0xe'));_0x3b647e(_0x5e24d1['result']['message']);}})[_0x237b('0x16')](function(_0x4725e5){logger['error'](_0x237b('0x15'),_0x8d8a54,_0x4725e5);_0x23fe9f(_0x4725e5);});});}
\ No newline at end of file
index ddebacd..67f581b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0x4972=['show','put','/:id','update','delete','exports','multer','util','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','get','isAuthenticated'];(function(_0x1fa381,_0x758c2a){var _0x47eefe=function(_0x127f8c){while(--_0x127f8c){_0x1fa381['push'](_0x1fa381['shift']());}};_0x47eefe(++_0x758c2a);}(_0x4972,0x15a));var _0x2497=function(_0x564006,_0x382e96){_0x564006=_0x564006-0x0;var _0x983b1e=_0x4972[_0x564006];return _0x983b1e;};'use strict';var multer=require(_0x2497('0x0'));var util=require(_0x2497('0x1'));var path=require('path');var timeout=require(_0x2497('0x2'));var express=require(_0x2497('0x3'));var router=express[_0x2497('0x4')]();var fs_extra=require(_0x2497('0x5'));var auth=require(_0x2497('0x6'));var interaction=require(_0x2497('0x7'));var config=require(_0x2497('0x8'));var controller=require('./intServicenowField.controller');router[_0x2497('0x9')]('/',auth[_0x2497('0xa')](),controller['index']);router[_0x2497('0x9')]('/:id',auth['isAuthenticated'](),controller[_0x2497('0xb')]);router['post']('/',auth['isAuthenticated'](),controller['create']);router[_0x2497('0xc')](_0x2497('0xd'),auth[_0x2497('0xa')](),controller[_0x2497('0xe')]);router[_0x2497('0xf')](_0x2497('0xd'),auth[_0x2497('0xa')](),controller['destroy']);module[_0x2497('0x10')]=router;
\ No newline at end of file
index a28e451..8ead955 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0x4962=['string','variable','customVariable','picklist','STRING','ENUM','exports'];(function(_0xc0e67f,_0x33ef5d){var _0x310702=function(_0x92ecab){while(--_0x92ecab){_0xc0e67f['push'](_0xc0e67f['shift']());}};_0x310702(++_0x33ef5d);}(_0x4962,0x14f));var _0x2496=function(_0x1a39f0,_0x5dfde5){_0x1a39f0=_0x1a39f0-0x0;var _0x451055=_0x4962[_0x1a39f0];return _0x451055;};'use strict';var Sequelize=require('sequelize');module[_0x2496('0x0')]={'type':{'type':Sequelize['ENUM'](_0x2496('0x1'),_0x2496('0x2'),_0x2496('0x3'),'keyValue',_0x2496('0x4')),'defaultValue':_0x2496('0x1')},'content':{'type':Sequelize[_0x2496('0x5')]},'key':{'type':Sequelize[_0x2496('0x5')]},'keyType':{'type':Sequelize[_0x2496('0x6')](_0x2496('0x1'),_0x2496('0x2'),'customVariable')},'keyContent':{'type':Sequelize[_0x2496('0x5')]},'idField':{'type':Sequelize[_0x2496('0x5')]},'nameField':{'type':Sequelize['STRING']},'customField':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'variableName':{'type':Sequelize[_0x2496('0x5')]}};
\ No newline at end of file
index eb52104..6aa56a4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0xa053=['filter','merge','where','VIRTUAL','ServicenowField','include','rows','catch','show','params','rawAttributes','includeAll','options','find','create','body','destroy','rimraf','fast-json-patch','request-promise','moment','bluebird','mustache','path','sox','to-csv','lodash','squel','jsforce','desk.js','querystring','papaparse','ioredis','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../mysqldb','sendStatus','status','end','json','offset','undefined','count','limit','apply','reject','save','update','then','error','stack','name','send','index','map','fieldName','type','key','model','query','keys','filters','intersection','fields','attributes','length','hasOwnProperty','nolimit','order','pick'];(function(_0x311e77,_0x49a459){var _0x559c54=function(_0x283a97){while(--_0x283a97){_0x311e77['push'](_0x311e77['shift']());}};_0x559c54(++_0x49a459);}(_0xa053,0x183));var _0x3a05=function(_0x3e03f1,_0x5ed8c9){_0x3e03f1=_0x3e03f1-0x0;var _0x12f120=_0xa053[_0x3e03f1];return _0x12f120;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x3a05('0x0'));var zipdir=require('zip-dir');var jsonpatch=require(_0x3a05('0x1'));var rp=require(_0x3a05('0x2'));var moment=require(_0x3a05('0x3'));var BPromise=require(_0x3a05('0x4'));var Mustache=require(_0x3a05('0x5'));var util=require('util');var path=require(_0x3a05('0x6'));var sox=require(_0x3a05('0x7'));var csv=require(_0x3a05('0x8'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x3a05('0x9'));var squel=require(_0x3a05('0xa'));var crypto=require('crypto');var jsforce=require(_0x3a05('0xb'));var deskjs=require(_0x3a05('0xc'));var toCsv=require(_0x3a05('0x8'));var querystring=require(_0x3a05('0xd'));var Papa=require(_0x3a05('0xe'));var Redis=require(_0x3a05('0xf'));var authService=require('../../components/auth/service');var qs=require('../../components/parsers/qs');var as=require(_0x3a05('0x10'));var hardwareService=require(_0x3a05('0x11'));var logger=require(_0x3a05('0x12'))(_0x3a05('0x13'));var utils=require(_0x3a05('0x14'));var config=require(_0x3a05('0x15'));var licenseUtil=require('../../config/license/util');var db=require(_0x3a05('0x16'))['db'];function respondWithStatusCode(_0x5239b1,_0x4b5f70){_0x4b5f70=_0x4b5f70||0xcc;return function(_0x494b6f){if(_0x494b6f){return _0x5239b1[_0x3a05('0x17')](_0x4b5f70);}return _0x5239b1[_0x3a05('0x18')](_0x4b5f70)[_0x3a05('0x19')]();};}function respondWithResult(_0x56b970,_0x4798f0){_0x4798f0=_0x4798f0||0xc8;return function(_0x393a2d){if(_0x393a2d){return _0x56b970['status'](_0x4798f0)[_0x3a05('0x1a')](_0x393a2d);}};}function respondWithFilteredResult(_0x202f83,_0x40aef3){return function(_0x514569){if(_0x514569){var _0x57ed52=typeof _0x40aef3[_0x3a05('0x1b')]===_0x3a05('0x1c')&&typeof _0x40aef3['limit']===_0x3a05('0x1c');var _0x90e5ba=_0x514569['count'];var _0x230efb=_0x57ed52?0x0:_0x40aef3[_0x3a05('0x1b')];var _0x404091=_0x57ed52?_0x514569[_0x3a05('0x1d')]:_0x40aef3[_0x3a05('0x1b')]+_0x40aef3[_0x3a05('0x1e')];var _0x5e6ba9;if(_0x404091>=_0x90e5ba){_0x404091=_0x90e5ba;_0x5e6ba9=0xc8;}else{_0x5e6ba9=0xce;}_0x202f83[_0x3a05('0x18')](_0x5e6ba9);return _0x202f83['set']('Content-Range',_0x230efb+'-'+_0x404091+'/'+_0x90e5ba)[_0x3a05('0x1a')](_0x514569);}return null;};}function patchUpdates(_0x44c811){return function(_0x1bc742){try{jsonpatch[_0x3a05('0x1f')](_0x1bc742,_0x44c811,!![]);}catch(_0x251145){return BPromise[_0x3a05('0x20')](_0x251145);}return _0x1bc742[_0x3a05('0x21')]();};}function saveUpdates(_0x4c3807,_0x164b03){return function(_0x5425bb){if(_0x5425bb){return _0x5425bb[_0x3a05('0x22')](_0x4c3807)['then'](function(_0x29a630){return _0x29a630;});}return null;};}function removeEntity(_0xf65232,_0x5e5b7c){return function(_0x1a890f){if(_0x1a890f){return _0x1a890f['destroy']()[_0x3a05('0x23')](function(){_0xf65232[_0x3a05('0x18')](0xcc)[_0x3a05('0x19')]();});}};}function handleEntityNotFound(_0x20c57d,_0x584b6c){return function(_0x29dd5e){if(!_0x29dd5e){_0x20c57d[_0x3a05('0x17')](0x194);}return _0x29dd5e;};}function handleError(_0x15d97f,_0x501264){_0x501264=_0x501264||0x1f4;return function(_0x4489bd){logger[_0x3a05('0x24')](_0x4489bd[_0x3a05('0x25')]);if(_0x4489bd[_0x3a05('0x26')]){delete _0x4489bd[_0x3a05('0x26')];}_0x15d97f[_0x3a05('0x18')](_0x501264)[_0x3a05('0x27')](_0x4489bd);};}exports[_0x3a05('0x28')]=function(_0x4353fc,_0x54796e){var _0x1542c7={},_0x5e5e34={},_0x101400={'count':0x0,'rows':[]};var _0x34734c=_[_0x3a05('0x29')](db['ServicenowField']['rawAttributes'],function(_0x4aeb5f){return{'name':_0x4aeb5f[_0x3a05('0x2a')],'type':_0x4aeb5f[_0x3a05('0x2b')][_0x3a05('0x2c')]};});_0x5e5e34[_0x3a05('0x2d')]=_[_0x3a05('0x29')](_0x34734c,_0x3a05('0x26'));_0x5e5e34[_0x3a05('0x2e')]=_[_0x3a05('0x2f')](_0x4353fc[_0x3a05('0x2e')]);_0x5e5e34[_0x3a05('0x30')]=_['intersection'](_0x5e5e34['model'],_0x5e5e34['query']);_0x1542c7['attributes']=_[_0x3a05('0x31')](_0x5e5e34[_0x3a05('0x2d')],qs[_0x3a05('0x32')](_0x4353fc[_0x3a05('0x2e')][_0x3a05('0x32')]));_0x1542c7[_0x3a05('0x33')]=_0x1542c7[_0x3a05('0x33')][_0x3a05('0x34')]?_0x1542c7[_0x3a05('0x33')]:_0x5e5e34[_0x3a05('0x2d')];if(!_0x4353fc[_0x3a05('0x2e')][_0x3a05('0x35')](_0x3a05('0x36'))){_0x1542c7[_0x3a05('0x1e')]=qs[_0x3a05('0x1e')](_0x4353fc[_0x3a05('0x2e')][_0x3a05('0x1e')]);_0x1542c7['offset']=qs[_0x3a05('0x1b')](_0x4353fc[_0x3a05('0x2e')]['offset']);}_0x1542c7[_0x3a05('0x37')]=qs['sort'](_0x4353fc[_0x3a05('0x2e')]['sort']);_0x1542c7['where']=qs[_0x3a05('0x30')](_[_0x3a05('0x38')](_0x4353fc[_0x3a05('0x2e')],_0x5e5e34[_0x3a05('0x30')]),_0x34734c);if(_0x4353fc['query'][_0x3a05('0x39')]){_0x1542c7['where']=_[_0x3a05('0x3a')](_0x1542c7[_0x3a05('0x3b')],{'$or':_[_0x3a05('0x29')](_0x34734c,function(_0x5b6512){if(_0x5b6512[_0x3a05('0x2b')]!==_0x3a05('0x3c')){var _0x2162fe={};_0x2162fe[_0x5b6512['name']]={'$like':'%'+_0x4353fc[_0x3a05('0x2e')]['filter']+'%'};return _0x2162fe;}})});}_0x1542c7=_[_0x3a05('0x3a')]({},_0x1542c7,_0x4353fc['options']);var _0x3f3ee5={'where':_0x1542c7[_0x3a05('0x3b')]};return db[_0x3a05('0x3d')]['count'](_0x3f3ee5)[_0x3a05('0x23')](function(_0x1ef0c2){_0x101400[_0x3a05('0x1d')]=_0x1ef0c2;if(_0x4353fc[_0x3a05('0x2e')]['includeAll']){_0x1542c7[_0x3a05('0x3e')]=[{'all':!![]}];}return db['ServicenowField']['findAll'](_0x1542c7);})[_0x3a05('0x23')](function(_0x3f65bc){_0x101400[_0x3a05('0x3f')]=_0x3f65bc;return _0x101400;})[_0x3a05('0x23')](respondWithFilteredResult(_0x54796e,_0x1542c7))[_0x3a05('0x40')](handleError(_0x54796e,null));};exports[_0x3a05('0x41')]=function(_0x579b52,_0x2f26ba){var _0x11c99a={'raw':!![],'where':{'id':_0x579b52[_0x3a05('0x42')]['id']}},_0x59af6d={};_0x59af6d['model']=_[_0x3a05('0x2f')](db[_0x3a05('0x3d')][_0x3a05('0x43')]);_0x59af6d[_0x3a05('0x2e')]=_[_0x3a05('0x2f')](_0x579b52[_0x3a05('0x2e')]);_0x59af6d[_0x3a05('0x30')]=_['intersection'](_0x59af6d['model'],_0x59af6d[_0x3a05('0x2e')]);_0x11c99a[_0x3a05('0x33')]=_[_0x3a05('0x31')](_0x59af6d[_0x3a05('0x2d')],qs[_0x3a05('0x32')](_0x579b52[_0x3a05('0x2e')][_0x3a05('0x32')]));_0x11c99a[_0x3a05('0x33')]=_0x11c99a['attributes']['length']?_0x11c99a[_0x3a05('0x33')]:_0x59af6d['model'];if(_0x579b52['query'][_0x3a05('0x44')]){_0x11c99a[_0x3a05('0x3e')]=[{'all':!![]}];}_0x11c99a=_[_0x3a05('0x3a')]({},_0x11c99a,_0x579b52[_0x3a05('0x45')]);return db[_0x3a05('0x3d')][_0x3a05('0x46')](_0x11c99a)['then'](handleEntityNotFound(_0x2f26ba,null))[_0x3a05('0x23')](respondWithResult(_0x2f26ba,null))[_0x3a05('0x40')](handleError(_0x2f26ba,null));};exports['create']=function(_0x6b4da7,_0x52087e){return db['ServicenowField'][_0x3a05('0x47')](_0x6b4da7[_0x3a05('0x48')],{})[_0x3a05('0x23')](respondWithResult(_0x52087e,0xc9))['catch'](handleError(_0x52087e,null));};exports[_0x3a05('0x22')]=function(_0x9dea3a,_0x4c9825){if(_0x9dea3a[_0x3a05('0x48')]['id']){delete _0x9dea3a[_0x3a05('0x48')]['id'];}return db[_0x3a05('0x3d')]['find']({'where':{'id':_0x9dea3a['params']['id']}})[_0x3a05('0x23')](handleEntityNotFound(_0x4c9825,null))[_0x3a05('0x23')](saveUpdates(_0x9dea3a['body'],null))[_0x3a05('0x23')](respondWithResult(_0x4c9825,null))[_0x3a05('0x40')](handleError(_0x4c9825,null));};exports[_0x3a05('0x49')]=function(_0x2330df,_0x5dc524){return db[_0x3a05('0x3d')][_0x3a05('0x46')]({'where':{'id':_0x2330df[_0x3a05('0x42')]['id']}})[_0x3a05('0x23')](handleEntityNotFound(_0x5dc524,null))[_0x3a05('0x23')](removeEntity(_0x5dc524,null))[_0x3a05('0x40')](handleError(_0x5dc524,null));};
\ No newline at end of file
index d732537..23355c9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0x3c85=['lodash','util','../../config/logger','api','moment','bluebird','path','rimraf','../../config/environment','./intServicenowField.attributes','ServicenowField','int_servicenow_fields','servicenow_unique_index','idField','FieldId'];(function(_0x5b644e,_0x2e5e07){var _0x49c6bf=function(_0x3032d9){while(--_0x3032d9){_0x5b644e['push'](_0x5b644e['shift']());}};_0x49c6bf(++_0x2e5e07);}(_0x3c85,0x1d1));var _0x53c8=function(_0x11b040,_0x1e41dc){_0x11b040=_0x11b040-0x0;var _0x369da7=_0x3c85[_0x11b040];return _0x369da7;};'use strict';var _=require(_0x53c8('0x0'));var util=require(_0x53c8('0x1'));var logger=require(_0x53c8('0x2'))(_0x53c8('0x3'));var moment=require(_0x53c8('0x4'));var BPromise=require(_0x53c8('0x5'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x53c8('0x6'));var rimraf=require(_0x53c8('0x7'));var config=require(_0x53c8('0x8'));var attributes=require(_0x53c8('0x9'));module['exports']=function(_0x2597dc,_0x349606){return _0x2597dc['define'](_0x53c8('0xa'),attributes,{'tableName':_0x53c8('0xb'),'paranoid':![],'indexes':[{'name':_0x53c8('0xc'),'fields':[_0x53c8('0xd'),_0x53c8('0xe')],'unique':!![]}],'timestamps':!![]});};
\ No newline at end of file
index 19ba312..244cc2a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xcb91=['stringify','error','code','message','catch','moment','bluebird','randomstring','ioredis','../../config/utils','../../config/logger','../../config/environment','jayson/promise','http','request','info','ServicenowField,\x20%s,\x20%s','request\x20sent','debug','ServicenowField,\x20%s,\x20%s,\x20%s'];(function(_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
+var _0xbaf0=['client','http','then','info','ServicenowField,\x20%s,\x20%s','request\x20sent','debug','ServicenowField,\x20%s,\x20%s,\x20%s','stringify','error','message','catch','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/logger','rpc','../../config/environment','jayson/promise'];(function(_0x7ad123,_0xeeeef3){var _0x37d073=function(_0x51367b){while(--_0x51367b){_0x7ad123['push'](_0x7ad123['shift']());}};_0x37d073(++_0xeeeef3);}(_0xbaf0,0x12a));var _0x0baf=function(_0x19e35c,_0x29cd1e){_0x19e35c=_0x19e35c-0x0;var _0x3e1fe8=_0xbaf0[_0x19e35c];return _0x3e1fe8;};'use strict';var _=require('lodash');var util=require(_0x0baf('0x0'));var moment=require(_0x0baf('0x1'));var BPromise=require(_0x0baf('0x2'));var rs=require(_0x0baf('0x3'));var fs=require('fs');var Redis=require(_0x0baf('0x4'));var db=require(_0x0baf('0x5'))['db'];var utils=require('../../config/utils');var logger=require(_0x0baf('0x6'))(_0x0baf('0x7'));var config=require(_0x0baf('0x8'));var jayson=require(_0x0baf('0x9'));var client=jayson[_0x0baf('0xa')][_0x0baf('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x1a10b1,_0x2dcaac,_0x1d0a0d){return new BPromise(function(_0x5f5030,_0x11b947){return client['request'](_0x1a10b1,_0x1d0a0d)[_0x0baf('0xc')](function(_0x2c7442){logger[_0x0baf('0xd')](_0x0baf('0xe'),_0x2dcaac,_0x0baf('0xf'));logger[_0x0baf('0x10')](_0x0baf('0x11'),_0x2dcaac,_0x0baf('0xf'),JSON[_0x0baf('0x12')](_0x2c7442));if(_0x2c7442[_0x0baf('0x13')]){if(_0x2c7442[_0x0baf('0x13')]['code']===0x1f4){logger['error'](_0x0baf('0xe'),_0x2dcaac,_0x2c7442[_0x0baf('0x13')][_0x0baf('0x14')]);return _0x11b947(_0x2c7442[_0x0baf('0x13')]['message']);}logger[_0x0baf('0x13')]('ServicenowField,\x20%s,\x20%s',_0x2dcaac,_0x2c7442[_0x0baf('0x13')][_0x0baf('0x14')]);return _0x5f5030(_0x2c7442[_0x0baf('0x13')][_0x0baf('0x14')]);}else{logger[_0x0baf('0xd')](_0x0baf('0xe'),_0x2dcaac,'request\x20sent');_0x5f5030(_0x2c7442['result'][_0x0baf('0x14')]);}})[_0x0baf('0x15')](function(_0x283408){logger[_0x0baf('0x13')](_0x0baf('0xe'),_0x2dcaac,_0x283408);_0x11b947(_0x283408);});});}
\ No newline at end of file
index e118f2b..3a2b522 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','./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
+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(_0x3eb54f,_0x4d378f){var _0x55661f=function(_0xf30806){while(--_0xf30806){_0x3eb54f['push'](_0x3eb54f['shift']());}};_0x55661f(++_0x4d378f);}(_0x9957,0x93));var _0x7995=function(_0xbca1b1,_0x33f0ce){_0xbca1b1=_0xbca1b1-0x0;var _0x4e1686=_0x9957[_0xbca1b1];return _0x4e1686;};'use strict';var multer=require(_0x7995('0x0'));var util=require(_0x7995('0x1'));var path=require(_0x7995('0x2'));var timeout=require(_0x7995('0x3'));var express=require('express');var router=express[_0x7995('0x4')]();var fs_extra=require(_0x7995('0x5'));var auth=require(_0x7995('0x6'));var interaction=require(_0x7995('0x7'));var config=require('../../config/environment');var controller=require(_0x7995('0x8'));router[_0x7995('0x9')]('/',auth[_0x7995('0xa')](),controller[_0x7995('0xb')]);router[_0x7995('0x9')](_0x7995('0xc'),auth['isAuthenticated'](),controller[_0x7995('0xd')]);router[_0x7995('0x9')]('/:id/configurations',auth[_0x7995('0xa')](),controller[_0x7995('0xe')]);router[_0x7995('0x9')](_0x7995('0xf'),auth[_0x7995('0xa')](),controller[_0x7995('0x10')]);router[_0x7995('0x11')]('/',auth['isAuthenticated'](),controller[_0x7995('0x12')]);router[_0x7995('0x11')]('/:id/configurations',auth[_0x7995('0xa')](),controller[_0x7995('0x13')]);router[_0x7995('0x14')](_0x7995('0xc'),auth[_0x7995('0xa')](),controller[_0x7995('0x15')]);router[_0x7995('0x16')]('/:id',auth['isAuthenticated'](),controller[_0x7995('0x17')]);module[_0x7995('0x18')]=router;
\ No newline at end of file
index dd5bdda..8fe2d7e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0xa9e0=['remoteUri','sequelize','exports','STRING','username'];(function(_0x500e07,_0x415835){var _0x39b9c7=function(_0x4e33a6){while(--_0x4e33a6){_0x500e07['push'](_0x500e07['shift']());}};_0x39b9c7(++_0x415835);}(_0xa9e0,0x123));var _0x0a9e=function(_0x3b5250,_0x7a0b2c){_0x3b5250=_0x3b5250-0x0;var _0xc844a1=_0xa9e0[_0x3b5250];return _0xc844a1;};'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 889eafa..695d5d3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0x050e=['send','map','SugarcrmAccount','rawAttributes','fieldName','type','model','query','keys','filters','intersection','fields','attributes','length','hasOwnProperty','order','sort','where','pick','filter','merge','options','findAll','rows','catch','show','params','includeAll','include','find','create','body','getConfigurations','SugarcrmConfiguration','addConfiguration','findOne','AccountId','Subjects','getSubjects','channel','Descriptions','getDescriptions','SugarcrmField','getFields','description','date_start','duration_hours','parent_name','direction','username','password','remoteUri','slice','lastIndexOf','POST','format','%s%s','/service/v4_1/rest.php','login','JSON','PLAIN','xCALLY\x20Motion\x20Integration','Invalid\x20Login','Password\x20Expired','get_module_fields','stringify','Calls','endsWith','values','value','test','statusCode','error','getFields,\x20%s,\x20%s,\x20%s','Wrong\x20credentials','rimraf','zip-dir','fast-json-patch','request-promise','moment','util','path','sox','to-csv','fs-extra','lodash','squel','jsforce','desk.js','querystring','papaparse','../../components/parsers/qs','../../config/logger','api','../../config/utils','../../config/environment','../../mysqldb','../../components/integrations/configuration','sendStatus','status','end','json','undefined','limit','offset','count','set','Content-Range','apply','reject','save','update','then','destroy','name'];(function(_0x79fbff,_0x10a272){var _0x25bd97=function(_0x51396b){while(--_0x51396b){_0x79fbff['push'](_0x79fbff['shift']());}};_0x25bd97(++_0x10a272);}(_0x050e,0x131));var _0xe050=function(_0x15b82c,_0xdef17e){_0x15b82c=_0x15b82c-0x0;var _0xd4a258=_0x050e[_0x15b82c];return _0xd4a258;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0xe050('0x0'));var zipdir=require(_0xe050('0x1'));var jsonpatch=require(_0xe050('0x2'));var rp=require(_0xe050('0x3'));var moment=require(_0xe050('0x4'));var BPromise=require('bluebird');var Mustache=require('mustache');var util=require(_0xe050('0x5'));var path=require(_0xe050('0x6'));var sox=require(_0xe050('0x7'));var csv=require(_0xe050('0x8'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0xe050('0x9'));var _=require(_0xe050('0xa'));var squel=require(_0xe050('0xb'));var crypto=require('crypto');var jsforce=require(_0xe050('0xc'));var deskjs=require(_0xe050('0xd'));var toCsv=require(_0xe050('0x8'));var querystring=require(_0xe050('0xe'));var Papa=require(_0xe050('0xf'));var Redis=require('ioredis');var authService=require('../../components/auth/service');var qs=require(_0xe050('0x10'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require('../../config/license/hardware');var logger=require(_0xe050('0x11'))(_0xe050('0x12'));var utils=require(_0xe050('0x13'));var config=require(_0xe050('0x14'));var licenseUtil=require('../../config/license/util');var db=require(_0xe050('0x15'))['db'];var integrations=require(_0xe050('0x16'));function respondWithStatusCode(_0x393932,_0x3798ce){_0x3798ce=_0x3798ce||0xcc;return function(_0x17186a){if(_0x17186a){return _0x393932[_0xe050('0x17')](_0x3798ce);}return _0x393932[_0xe050('0x18')](_0x3798ce)[_0xe050('0x19')]();};}function respondWithResult(_0xef82dc,_0x128f5e){_0x128f5e=_0x128f5e||0xc8;return function(_0xeca18b){if(_0xeca18b){return _0xef82dc[_0xe050('0x18')](_0x128f5e)[_0xe050('0x1a')](_0xeca18b);}};}function respondWithFilteredResult(_0x57ec4d,_0x4281cb){return function(_0x27984a){if(_0x27984a){var _0x3a6508=typeof _0x4281cb['offset']===_0xe050('0x1b')&&typeof _0x4281cb[_0xe050('0x1c')]===_0xe050('0x1b');var _0x1e770e=_0x27984a['count'];var _0xd27328=_0x3a6508?0x0:_0x4281cb[_0xe050('0x1d')];var _0x4c1f4d=_0x3a6508?_0x27984a[_0xe050('0x1e')]:_0x4281cb[_0xe050('0x1d')]+_0x4281cb[_0xe050('0x1c')];var _0x35ad10;if(_0x4c1f4d>=_0x1e770e){_0x4c1f4d=_0x1e770e;_0x35ad10=0xc8;}else{_0x35ad10=0xce;}_0x57ec4d['status'](_0x35ad10);return _0x57ec4d[_0xe050('0x1f')](_0xe050('0x20'),_0xd27328+'-'+_0x4c1f4d+'/'+_0x1e770e)[_0xe050('0x1a')](_0x27984a);}return null;};}function patchUpdates(_0x301725){return function(_0x2dfacc){try{jsonpatch[_0xe050('0x21')](_0x2dfacc,_0x301725,!![]);}catch(_0x2d93e3){return BPromise[_0xe050('0x22')](_0x2d93e3);}return _0x2dfacc[_0xe050('0x23')]();};}function saveUpdates(_0x125b72,_0x1404be){return function(_0x3effca){if(_0x3effca){return _0x3effca[_0xe050('0x24')](_0x125b72)[_0xe050('0x25')](function(_0x39ca08){return _0x39ca08;});}return null;};}function removeEntity(_0xd10b26,_0x30f80d){return function(_0x558dda){if(_0x558dda){return _0x558dda[_0xe050('0x26')]()[_0xe050('0x25')](function(){_0xd10b26['status'](0xcc)[_0xe050('0x19')]();});}};}function handleEntityNotFound(_0x559bfb,_0xe63c10){return function(_0x579095){if(!_0x579095){_0x559bfb['sendStatus'](0x194);}return _0x579095;};}function handleError(_0x587dde,_0x3b334e){_0x3b334e=_0x3b334e||0x1f4;return function(_0x4c963d){logger['error'](_0x4c963d['stack']);if(_0x4c963d[_0xe050('0x27')]){delete _0x4c963d[_0xe050('0x27')];}_0x587dde[_0xe050('0x18')](_0x3b334e)[_0xe050('0x28')](_0x4c963d);};}exports['index']=function(_0x5ee606,_0x530d67){var _0x121136={},_0x2f0754={},_0x38f5f7={'count':0x0,'rows':[]};var _0x2cc268=_[_0xe050('0x29')](db[_0xe050('0x2a')][_0xe050('0x2b')],function(_0x56b22a){return{'name':_0x56b22a[_0xe050('0x2c')],'type':_0x56b22a[_0xe050('0x2d')]['key']};});_0x2f0754[_0xe050('0x2e')]=_[_0xe050('0x29')](_0x2cc268,_0xe050('0x27'));_0x2f0754[_0xe050('0x2f')]=_[_0xe050('0x30')](_0x5ee606[_0xe050('0x2f')]);_0x2f0754[_0xe050('0x31')]=_['intersection'](_0x2f0754[_0xe050('0x2e')],_0x2f0754[_0xe050('0x2f')]);_0x121136['attributes']=_[_0xe050('0x32')](_0x2f0754['model'],qs[_0xe050('0x33')](_0x5ee606['query']['fields']));_0x121136['attributes']=_0x121136[_0xe050('0x34')][_0xe050('0x35')]?_0x121136[_0xe050('0x34')]:_0x2f0754[_0xe050('0x2e')];if(!_0x5ee606[_0xe050('0x2f')][_0xe050('0x36')]('nolimit')){_0x121136[_0xe050('0x1c')]=qs[_0xe050('0x1c')](_0x5ee606[_0xe050('0x2f')][_0xe050('0x1c')]);_0x121136[_0xe050('0x1d')]=qs[_0xe050('0x1d')](_0x5ee606[_0xe050('0x2f')][_0xe050('0x1d')]);}_0x121136[_0xe050('0x37')]=qs[_0xe050('0x38')](_0x5ee606[_0xe050('0x2f')][_0xe050('0x38')]);_0x121136[_0xe050('0x39')]=qs[_0xe050('0x31')](_[_0xe050('0x3a')](_0x5ee606['query'],_0x2f0754[_0xe050('0x31')]),_0x2cc268);if(_0x5ee606[_0xe050('0x2f')][_0xe050('0x3b')]){_0x121136[_0xe050('0x39')]=_[_0xe050('0x3c')](_0x121136[_0xe050('0x39')],{'$or':_[_0xe050('0x29')](_0x2cc268,function(_0x4314e6){if(_0x4314e6['type']!=='VIRTUAL'){var _0x5c9374={};_0x5c9374[_0x4314e6[_0xe050('0x27')]]={'$like':'%'+_0x5ee606[_0xe050('0x2f')]['filter']+'%'};return _0x5c9374;}})});}_0x121136=_[_0xe050('0x3c')]({},_0x121136,_0x5ee606[_0xe050('0x3d')]);var _0xfd5197={'where':_0x121136[_0xe050('0x39')]};return db[_0xe050('0x2a')][_0xe050('0x1e')](_0xfd5197)[_0xe050('0x25')](function(_0x50296c){_0x38f5f7['count']=_0x50296c;if(_0x5ee606['query']['includeAll']){_0x121136['include']=[{'all':!![]}];}return db[_0xe050('0x2a')][_0xe050('0x3e')](_0x121136);})[_0xe050('0x25')](function(_0x1145e9){_0x38f5f7[_0xe050('0x3f')]=_0x1145e9;return _0x38f5f7;})[_0xe050('0x25')](respondWithFilteredResult(_0x530d67,_0x121136))[_0xe050('0x40')](handleError(_0x530d67,null));};exports[_0xe050('0x41')]=function(_0x41eb1e,_0x328ac0){var _0x45968d={'raw':![],'where':{'id':_0x41eb1e[_0xe050('0x42')]['id']}},_0x29b70a={};_0x29b70a[_0xe050('0x2e')]=_['keys'](db[_0xe050('0x2a')][_0xe050('0x2b')]);_0x29b70a[_0xe050('0x2f')]=_['keys'](_0x41eb1e[_0xe050('0x2f')]);_0x29b70a[_0xe050('0x31')]=_[_0xe050('0x32')](_0x29b70a['model'],_0x29b70a[_0xe050('0x2f')]);_0x45968d[_0xe050('0x34')]=_['intersection'](_0x29b70a[_0xe050('0x2e')],qs[_0xe050('0x33')](_0x41eb1e[_0xe050('0x2f')]['fields']));_0x45968d['attributes']=_0x45968d['attributes']['length']?_0x45968d[_0xe050('0x34')]:_0x29b70a[_0xe050('0x2e')];if(_0x41eb1e[_0xe050('0x2f')][_0xe050('0x43')]){_0x45968d[_0xe050('0x44')]=[{'all':!![]}];}_0x45968d=_['merge']({},_0x45968d,_0x41eb1e[_0xe050('0x3d')]);return db[_0xe050('0x2a')][_0xe050('0x45')](_0x45968d)[_0xe050('0x25')](handleEntityNotFound(_0x328ac0,null))[_0xe050('0x25')](respondWithResult(_0x328ac0,null))['catch'](handleError(_0x328ac0,null));};exports[_0xe050('0x46')]=function(_0x2fff7c,_0x21d3a3){return db[_0xe050('0x2a')][_0xe050('0x46')](_0x2fff7c['body'],{})[_0xe050('0x25')](respondWithResult(_0x21d3a3,0xc9))['catch'](handleError(_0x21d3a3,null));};exports[_0xe050('0x24')]=function(_0x102f07,_0x57c4b5){if(_0x102f07[_0xe050('0x47')]['id']){delete _0x102f07[_0xe050('0x47')]['id'];}return db[_0xe050('0x2a')][_0xe050('0x45')]({'where':{'id':_0x102f07['params']['id']}})['then'](handleEntityNotFound(_0x57c4b5,null))[_0xe050('0x25')](saveUpdates(_0x102f07[_0xe050('0x47')],null))[_0xe050('0x25')](respondWithResult(_0x57c4b5,null))[_0xe050('0x40')](handleError(_0x57c4b5,null));};exports[_0xe050('0x26')]=function(_0x4451f4,_0x45b9e8){return db[_0xe050('0x2a')][_0xe050('0x45')]({'where':{'id':_0x4451f4['params']['id']}})['then'](handleEntityNotFound(_0x45b9e8,null))[_0xe050('0x25')](removeEntity(_0x45b9e8,null))[_0xe050('0x40')](handleError(_0x45b9e8,null));};exports[_0xe050('0x48')]=function(_0xdeea3d,_0x49f14e,_0x43a53f){var _0x287010={};var _0x30efbe={};var _0x1244ec;var _0x4a00a9;return db[_0xe050('0x2a')]['findOne']({'where':{'id':_0xdeea3d[_0xe050('0x42')]['id']}})[_0xe050('0x25')](handleEntityNotFound(_0x49f14e,null))[_0xe050('0x25')](function(_0x1f1464){if(_0x1f1464){_0x1244ec=_0x1f1464;_0x30efbe[_0xe050('0x2e')]=_[_0xe050('0x30')](db[_0xe050('0x49')]['rawAttributes']);_0x30efbe[_0xe050('0x2f')]=_[_0xe050('0x30')](_0xdeea3d[_0xe050('0x2f')]);_0x30efbe[_0xe050('0x31')]=_[_0xe050('0x32')](_0x30efbe[_0xe050('0x2e')],_0x30efbe[_0xe050('0x2f')]);_0x287010[_0xe050('0x34')]=_[_0xe050('0x32')](_0x30efbe[_0xe050('0x2e')],qs[_0xe050('0x33')](_0xdeea3d[_0xe050('0x2f')][_0xe050('0x33')]));_0x287010[_0xe050('0x34')]=_0x287010[_0xe050('0x34')][_0xe050('0x35')]?_0x287010['attributes']:_0x30efbe[_0xe050('0x2e')];_0x287010['order']=qs['sort'](_0xdeea3d[_0xe050('0x2f')][_0xe050('0x38')]);_0x287010[_0xe050('0x39')]=qs[_0xe050('0x31')](_[_0xe050('0x3a')](_0xdeea3d['query'],_0x30efbe[_0xe050('0x31')]));if(_0xdeea3d['query'][_0xe050('0x3b')]){_0x287010[_0xe050('0x39')]=_[_0xe050('0x3c')](_0x287010[_0xe050('0x39')],{'$or':_['map'](_0x287010[_0xe050('0x34')],function(_0x506fcf){var _0x3e66e0={};_0x3e66e0[_0x506fcf]={'$like':'%'+_0xdeea3d['query']['filter']+'%'};return _0x3e66e0;})});}_0x287010=_[_0xe050('0x3c')]({},_0x287010,_0xdeea3d[_0xe050('0x3d')]);return _0x1244ec[_0xe050('0x48')](_0x287010);}})[_0xe050('0x25')](function(_0x1f263f){if(_0x1f263f){_0x4a00a9=_0x1f263f[_0xe050('0x35')];if(!_0xdeea3d['query'][_0xe050('0x36')]('nolimit')){_0x287010[_0xe050('0x1c')]=qs[_0xe050('0x1c')](_0xdeea3d[_0xe050('0x2f')][_0xe050('0x1c')]);_0x287010[_0xe050('0x1d')]=qs[_0xe050('0x1d')](_0xdeea3d['query'][_0xe050('0x1d')]);}return _0x1244ec['getConfigurations'](_0x287010);}})[_0xe050('0x25')](function(_0x2769be){if(_0x2769be){return _0x2769be?{'count':_0x4a00a9,'rows':_0x2769be}:null;}})[_0xe050('0x25')](respondWithResult(_0x49f14e,null))[_0xe050('0x40')](handleError(_0x49f14e,null));};exports[_0xe050('0x4a')]=function(_0x33add4,_0x3da9b9,_0x1ad612){if(_0x33add4[_0xe050('0x47')]['id']){delete _0x33add4[_0xe050('0x47')]['id'];}return db['SugarcrmAccount'][_0xe050('0x4b')]({'where':{'id':_0x33add4['params']['id']}})[_0xe050('0x25')](handleEntityNotFound(_0x3da9b9,null))[_0xe050('0x25')](function(_0x1cb7f8){if(_0x1cb7f8){_0x33add4[_0xe050('0x47')][_0xe050('0x4c')]=_0x1cb7f8['id'];_0x33add4[_0xe050('0x47')][_0xe050('0x4d')]=integrations[_0xe050('0x4e')](_0x33add4[_0xe050('0x47')][_0xe050('0x4f')],_0x33add4[_0xe050('0x47')][_0xe050('0x2d')]);_0x33add4[_0xe050('0x47')][_0xe050('0x50')]=integrations[_0xe050('0x51')](_0x33add4[_0xe050('0x47')]['channel'],_0x33add4[_0xe050('0x47')][_0xe050('0x2d')]);return db[_0xe050('0x49')][_0xe050('0x46')](_0x33add4[_0xe050('0x47')],{'include':[{'model':db[_0xe050('0x52')],'as':_0xe050('0x4d')},{'model':db[_0xe050('0x52')],'as':_0xe050('0x50')}]});}return null;})['then'](respondWithResult(_0x3da9b9,null))[_0xe050('0x40')](handleError(_0x3da9b9,null));};exports[_0xe050('0x53')]=function(_0x4daa7b,_0x5c932f,_0x3291f4){var _0x59f49e='';var _0x5adf77=['id',_0xe050('0x27'),'assigned_user_id','created_by',_0xe050('0x54'),_0xe050('0x55'),_0xe050('0x56'),'duration_minutes','parent_id','parent_type',_0xe050('0x57'),_0xe050('0x58')];return db[_0xe050('0x2a')][_0xe050('0x4b')]({'where':{'id':_0x4daa7b['params']['id']},'attributes':['id',_0xe050('0x59'),_0xe050('0x5a'),'remoteUri']})[_0xe050('0x25')](handleEntityNotFound(_0x5c932f,null))['then'](function(_0x1ea527){if(_0x1ea527){_0x59f49e=_0x1ea527[_0xe050('0x5b')];var _0x4ca316=_0x59f49e[_0xe050('0x5c')](-0x1);if(_0x4ca316==='/'){_0x59f49e=_0x59f49e['substring'](0x0,_0x59f49e[_0xe050('0x5d')](_0x4ca316));}return rp({'method':_0xe050('0x5e'),'uri':util[_0xe050('0x5f')](_0xe050('0x60'),_0x59f49e,_0xe050('0x61')),'json':!![],'form':{'method':_0xe050('0x62'),'input_type':_0xe050('0x63'),'response_type':_0xe050('0x63'),'rest_data':JSON['stringify']({'user_auth':{'user_name':_0x1ea527[_0xe050('0x59')],'password':_0x1ea527['password'],'encryption':_0xe050('0x64')},'application':_0xe050('0x65')})}});}})[_0xe050('0x25')](function(_0x57f73c){if(_0x57f73c&&_0x57f73c[_0xe050('0x27')]!==_0xe050('0x66')&&_0x57f73c[_0xe050('0x27')]!==_0xe050('0x67')){return rp({'method':_0xe050('0x5e'),'uri':util[_0xe050('0x5f')]('%s%s',_0x59f49e,_0xe050('0x61')),'json':!![],'form':{'method':_0xe050('0x68'),'input_type':_0xe050('0x63'),'response_type':_0xe050('0x63'),'rest_data':JSON[_0xe050('0x69')]({'session':_0x57f73c['id'],'module_name':_0xe050('0x6a')})}})['then'](function(_0x696c3c){if(_0x696c3c){var _0x284088=_['values'](_0x696c3c['module_fields']);_['remove'](_0x284088,function(_0x2b8016){return _0x5adf77['includes'](_0x2b8016['name']);});return{'count':_0x284088[_0xe050('0x35')],'rows':_[_0xe050('0x29')](_0x284088,function(_0x50601e){return{'id':_0x50601e[_0xe050('0x27')],'name':_0x50601e['label'],'custom':_[_0xe050('0x6b')](_0x50601e[_0xe050('0x27')],'_c')?!![]:![],'options':_0x50601e[_0xe050('0x3d')]?_[_0xe050('0x29')](_[_0xe050('0x6c')](_0x50601e[_0xe050('0x3d')]),function(_0x4052ff){return{'name':_0x4052ff[_0xe050('0x6d')],'value':_0x4052ff[_0xe050('0x27')]};}):[]};})};}})[_0xe050('0x25')](respondWithResult(_0x5c932f,null))[_0xe050('0x40')](function(_0x178a84){var _0x120b23=_0x4daa7b[_0xe050('0x2f')][_0xe050('0x6e')]?0x1f4:_0x178a84[_0xe050('0x6f')]||0x1f4;logger[_0xe050('0x70')](_0xe050('0x71'),'getFields',_0x120b23,JSON[_0xe050('0x69')](_0x178a84));delete _0x178a84['name'];if(_0x120b23===0x191){_0x120b23=0x190;}_0x5c932f[_0xe050('0x18')](_0x120b23)['send'](_0x4daa7b[_0xe050('0x2f')][_0xe050('0x6e')]?{'message':_0xe050('0x72'),'statusCode':_0x178a84[_0xe050('0x6f')]}:_0x178a84);});}else{var _0x513556=0x1f4;_0x5c932f['status'](_0x513556)[_0xe050('0x28')]({'message':_0xe050('0x72'),'statusCode':0x190});}});};
\ No newline at end of file
index 4699efb..aeac349 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0x9ccc=['path','../../config/environment','./intSugarcrmAccount.attributes','../../components/integrations/configuration','exports','define','int_sugarcrm_accounts','lodash','util','api','moment','request-promise'];(function(_0x55b627,_0x130b9f){var _0x5a78e2=function(_0x18ed10){while(--_0x18ed10){_0x55b627['push'](_0x55b627['shift']());}};_0x5a78e2(++_0x130b9f);}(_0x9ccc,0x11b));var _0xc9cc=function(_0x3e2d10,_0x20ff81){_0x3e2d10=_0x3e2d10-0x0;var _0x495d77=_0x9ccc[_0x3e2d10];return _0x495d77;};'use strict';var _=require(_0xc9cc('0x0'));var util=require(_0xc9cc('0x1'));var logger=require('../../config/logger')(_0xc9cc('0x2'));var moment=require(_0xc9cc('0x3'));var BPromise=require('bluebird');var rp=require(_0xc9cc('0x4'));var fs=require('fs');var path=require(_0xc9cc('0x5'));var rimraf=require('rimraf');var config=require(_0xc9cc('0x6'));var attributes=require(_0xc9cc('0x7'));var integrations=require(_0xc9cc('0x8'));module[_0xc9cc('0x9')]=function(_0x3054f4,_0x424dc5){return _0x3054f4[_0xc9cc('0xa')]('SugarcrmAccount',attributes,{'tableName':_0xc9cc('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 000a30b..dc18572 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0xa0b5=['../../config/environment','client','http','request','then','info','request\x20sent','debug','stringify','error','SugarcrmAccount,\x20%s,\x20%s','message','result','GetSugarcrmAccount','findAll','options','where','attributes','limit','map','include','model','ShowSugarcrmAccount','find','catch','lodash','util','moment','ioredis','../../mysqldb','../../config/utils'];(function(_0x21a9d9,_0x4d5ac8){var _0x46adce=function(_0xfdd336){while(--_0xfdd336){_0x21a9d9['push'](_0x21a9d9['shift']());}};_0x46adce(++_0x4d5ac8);}(_0xa0b5,0x1cb));var _0x5a0b=function(_0x473e18,_0x7390ef){_0x473e18=_0x473e18-0x0;var _0x58a71a=_0xa0b5[_0x473e18];return _0x58a71a;};'use strict';var _=require(_0x5a0b('0x0'));var util=require(_0x5a0b('0x1'));var moment=require(_0x5a0b('0x2'));var BPromise=require('bluebird');var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x5a0b('0x3'));var db=require(_0x5a0b('0x4'))['db'];var utils=require(_0x5a0b('0x5'));var logger=require('../../config/logger')('rpc');var config=require(_0x5a0b('0x6'));var jayson=require('jayson/promise');var client=jayson[_0x5a0b('0x7')][_0x5a0b('0x8')]({'port':0x232a});function respondWithRpcPromise(_0x45cd94,_0x176e3c,_0x4834a0){return new BPromise(function(_0x3bd9fc,_0x583b8b){return client[_0x5a0b('0x9')](_0x45cd94,_0x4834a0)[_0x5a0b('0xa')](function(_0x5af8bf){logger[_0x5a0b('0xb')]('SugarcrmAccount,\x20%s,\x20%s',_0x176e3c,_0x5a0b('0xc'));logger[_0x5a0b('0xd')]('SugarcrmAccount,\x20%s,\x20%s,\x20%s',_0x176e3c,_0x5a0b('0xc'),JSON[_0x5a0b('0xe')](_0x5af8bf));if(_0x5af8bf[_0x5a0b('0xf')]){if(_0x5af8bf[_0x5a0b('0xf')]['code']===0x1f4){logger[_0x5a0b('0xf')](_0x5a0b('0x10'),_0x176e3c,_0x5af8bf[_0x5a0b('0xf')][_0x5a0b('0x11')]);return _0x583b8b(_0x5af8bf[_0x5a0b('0xf')][_0x5a0b('0x11')]);}logger[_0x5a0b('0xf')]('SugarcrmAccount,\x20%s,\x20%s',_0x176e3c,_0x5af8bf[_0x5a0b('0xf')][_0x5a0b('0x11')]);return _0x3bd9fc(_0x5af8bf['error'][_0x5a0b('0x11')]);}else{logger[_0x5a0b('0xb')](_0x5a0b('0x10'),_0x176e3c,_0x5a0b('0xc'));_0x3bd9fc(_0x5af8bf[_0x5a0b('0x12')]['message']);}})['catch'](function(_0x4b90b0){logger[_0x5a0b('0xf')](_0x5a0b('0x10'),_0x176e3c,_0x4b90b0);_0x583b8b(_0x4b90b0);});});}exports[_0x5a0b('0x13')]=function(_0x41871b){var _0x4f1b23=this;return new Promise(function(_0x6f500f,_0x5a91ed){return db['SugarcrmAccount'][_0x5a0b('0x14')]({'raw':_0x41871b['options']?_0x41871b[_0x5a0b('0x15')]['raw']===undefined?!![]:![]:!![],'where':_0x41871b[_0x5a0b('0x15')]?_0x41871b['options'][_0x5a0b('0x16')]||null:null,'attributes':_0x41871b[_0x5a0b('0x15')]?_0x41871b[_0x5a0b('0x15')][_0x5a0b('0x17')]||null:null,'limit':_0x41871b[_0x5a0b('0x15')]?_0x41871b['options'][_0x5a0b('0x18')]||null:null,'include':_0x41871b[_0x5a0b('0x15')]?_0x41871b['options']['include']?_[_0x5a0b('0x19')](_0x41871b['options'][_0x5a0b('0x1a')],function(_0x56355f){return{'model':db[_0x56355f[_0x5a0b('0x1b')]],'as':_0x56355f['as'],'attributes':_0x56355f[_0x5a0b('0x17')],'include':_0x56355f[_0x5a0b('0x1a')]?_[_0x5a0b('0x19')](_0x56355f[_0x5a0b('0x1a')],function(_0x17ac31){return{'model':db[_0x17ac31[_0x5a0b('0x1b')]],'as':_0x17ac31['as'],'attributes':_0x17ac31[_0x5a0b('0x17')],'include':_0x17ac31['include']?_['map'](_0x17ac31['include'],function(_0x46b44c){return{'model':db[_0x46b44c[_0x5a0b('0x1b')]],'as':_0x46b44c['as'],'attributes':_0x46b44c[_0x5a0b('0x17')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x50dc2b){logger['info'](_0x5a0b('0x13'),_0x41871b);logger['debug'](_0x5a0b('0x13'),_0x41871b,JSON['stringify'](_0x50dc2b));_0x6f500f(_0x50dc2b);})['catch'](function(_0x26d4bd){logger[_0x5a0b('0xf')](_0x5a0b('0x13'),_0x26d4bd[_0x5a0b('0x11')],_0x41871b);_0x5a91ed(_0x4f1b23['error'](0x1f4,_0x26d4bd[_0x5a0b('0x11')]));});});};exports[_0x5a0b('0x1c')]=function(_0x293f44){var _0x2ea168=this;return new Promise(function(_0x11a106,_0x318eee){return db['SugarcrmAccount'][_0x5a0b('0x1d')]({'raw':_0x293f44[_0x5a0b('0x15')]?_0x293f44['options']['raw']===undefined?!![]:![]:!![],'where':_0x293f44[_0x5a0b('0x15')]?_0x293f44[_0x5a0b('0x15')][_0x5a0b('0x16')]||null:null,'attributes':_0x293f44[_0x5a0b('0x15')]?_0x293f44['options'][_0x5a0b('0x17')]||null:null,'include':_0x293f44[_0x5a0b('0x15')]?_0x293f44['options'][_0x5a0b('0x1a')]?_[_0x5a0b('0x19')](_0x293f44['options'][_0x5a0b('0x1a')],function(_0x2adf94){return{'model':db[_0x2adf94[_0x5a0b('0x1b')]],'as':_0x2adf94['as'],'attributes':_0x2adf94[_0x5a0b('0x17')],'include':_0x2adf94[_0x5a0b('0x1a')]?_['map'](_0x2adf94[_0x5a0b('0x1a')],function(_0x44ce3d){return{'model':db[_0x44ce3d[_0x5a0b('0x1b')]],'as':_0x44ce3d['as'],'attributes':_0x44ce3d[_0x5a0b('0x17')],'include':_0x44ce3d[_0x5a0b('0x1a')]?_[_0x5a0b('0x19')](_0x44ce3d['include'],function(_0x3fe9f6){return{'model':db[_0x3fe9f6['model']],'as':_0x3fe9f6['as'],'attributes':_0x3fe9f6[_0x5a0b('0x17')]};}):[]};}):[]};}):[]:[]})[_0x5a0b('0xa')](function(_0x20b680){logger['info'](_0x5a0b('0x1c'),_0x293f44);logger['debug'](_0x5a0b('0x1c'),_0x293f44,JSON['stringify'](_0x20b680));_0x11a106(_0x20b680);})[_0x5a0b('0x1e')](function(_0x89c677){logger[_0x5a0b('0xf')](_0x5a0b('0x1c'),_0x89c677[_0x5a0b('0x11')],_0x293f44);_0x318eee(_0x2ea168[_0x5a0b('0xf')](0x1f4,_0x89c677['message']));});});};
\ No newline at end of file
index 8cc200a..c9b78c7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0x64c2=['Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./intSugarcrmConfiguration.controller','get','isAuthenticated','show','getFields','/:id/subjects','/:id/descriptions','create','put','/:id','update','multer','path','connect-timeout','express'];(function(_0x55f7da,_0x217345){var _0x5cc564=function(_0x5dae2b){while(--_0x5dae2b){_0x55f7da['push'](_0x55f7da['shift']());}};_0x5cc564(++_0x217345);}(_0x64c2,0x178));var _0x264c=function(_0x158687,_0x39ed81){_0x158687=_0x158687-0x0;var _0x2cec8c=_0x64c2[_0x158687];return _0x2cec8c;};'use strict';var multer=require(_0x264c('0x0'));var util=require('util');var path=require(_0x264c('0x1'));var timeout=require(_0x264c('0x2'));var express=require(_0x264c('0x3'));var router=express[_0x264c('0x4')]();var fs_extra=require(_0x264c('0x5'));var auth=require(_0x264c('0x6'));var interaction=require(_0x264c('0x7'));var config=require(_0x264c('0x8'));var controller=require(_0x264c('0x9'));router[_0x264c('0xa')]('/',auth[_0x264c('0xb')](),controller['index']);router['get']('/:id',auth[_0x264c('0xb')](),controller[_0x264c('0xc')]);router[_0x264c('0xa')]('/:id/fields',auth['isAuthenticated'](),controller[_0x264c('0xd')]);router['get'](_0x264c('0xe'),auth[_0x264c('0xb')](),controller['getSubjects']);router['get'](_0x264c('0xf'),auth['isAuthenticated'](),controller['getDescriptions']);router['post']('/',auth[_0x264c('0xb')](),controller[_0x264c('0x10')]);router[_0x264c('0x11')](_0x264c('0x12'),auth['isAuthenticated'](),controller[_0x264c('0x13')]);router['delete']('/:id',auth[_0x264c('0xb')](),controller['destroy']);module['exports']=router;
\ No newline at end of file
index c068d3a..013fb43 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0x71fe=['sequelize','exports','STRING'];(function(_0x28eb06,_0x4418cb){var _0xa8e1ff=function(_0x5648f8){while(--_0x5648f8){_0x28eb06['push'](_0x28eb06['shift']());}};_0xa8e1ff(++_0x4418cb);}(_0x71fe,0x189));var _0xe71f=function(_0x4802da,_0x7c9efe){_0x4802da=_0x4802da-0x0;var _0x3def1e=_0x71fe[_0x4802da];return _0x3def1e;};'use strict';var Sequelize=require(_0xe71f('0x0'));module[_0xe71f('0x1')]={'name':{'type':Sequelize[_0xe71f('0x2')]},'description':{'type':Sequelize[_0xe71f('0x2')]}};
\ No newline at end of file
index a7b3884..230ed87 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0x320b=['then','error','stack','send','index','SugarcrmConfiguration','rawAttributes','type','key','model','map','name','keys','query','intersection','attributes','fields','length','hasOwnProperty','nolimit','sort','where','filters','pick','filter','merge','VIRTUAL','options','includeAll','include','findAll','rows','catch','show','find','create','body','params','getFields','findOne','SugarcrmField','order','limit','getSubjects','getDescriptions','eml-format','rimraf','fast-json-patch','moment','util','path','sox','to-csv','ejs','fs-extra','lodash','jsforce','papaparse','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','json','undefined','count','offset','Content-Range','apply','reject','save','update'];(function(_0x258498,_0x11e20e){var _0x36ea53=function(_0x583021){while(--_0x583021){_0x258498['push'](_0x258498['shift']());}};_0x36ea53(++_0x11e20e);}(_0x320b,0x1b8));var _0xb320=function(_0x29e0eb,_0x9acb52){_0x29e0eb=_0x29e0eb-0x0;var _0x597d2d=_0x320b[_0x29e0eb];return _0x597d2d;};'use strict';var emlformat=require(_0xb320('0x0'));var rimraf=require(_0xb320('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0xb320('0x2'));var rp=require('request-promise');var moment=require(_0xb320('0x3'));var BPromise=require('bluebird');var Mustache=require('mustache');var util=require(_0xb320('0x4'));var path=require(_0xb320('0x5'));var sox=require(_0xb320('0x6'));var csv=require(_0xb320('0x7'));var ejs=require(_0xb320('0x8'));var fs=require('fs');var fs_extra=require(_0xb320('0x9'));var _=require(_0xb320('0xa'));var squel=require('squel');var crypto=require('crypto');var jsforce=require(_0xb320('0xb'));var deskjs=require('desk.js');var toCsv=require(_0xb320('0x7'));var querystring=require('querystring');var Papa=require(_0xb320('0xc'));var Redis=require('ioredis');var authService=require(_0xb320('0xd'));var qs=require(_0xb320('0xe'));var as=require(_0xb320('0xf'));var hardwareService=require(_0xb320('0x10'));var logger=require(_0xb320('0x11'))(_0xb320('0x12'));var utils=require('../../config/utils');var config=require(_0xb320('0x13'));var licenseUtil=require(_0xb320('0x14'));var db=require(_0xb320('0x15'))['db'];function respondWithStatusCode(_0x196d55,_0x3717b9){_0x3717b9=_0x3717b9||0xcc;return function(_0x4911b1){if(_0x4911b1){return _0x196d55[_0xb320('0x16')](_0x3717b9);}return _0x196d55[_0xb320('0x17')](_0x3717b9)[_0xb320('0x18')]();};}function respondWithResult(_0x59cfb4,_0x147c67){_0x147c67=_0x147c67||0xc8;return function(_0x163b48){if(_0x163b48){return _0x59cfb4[_0xb320('0x17')](_0x147c67)[_0xb320('0x19')](_0x163b48);}};}function respondWithFilteredResult(_0x4126b5,_0x575cb3){return function(_0x3985d4){if(_0x3985d4){var _0x1ae852=typeof _0x575cb3['offset']===_0xb320('0x1a')&&typeof _0x575cb3['limit']==='undefined';var _0x517d2d=_0x3985d4[_0xb320('0x1b')];var _0x2e40d0=_0x1ae852?0x0:_0x575cb3[_0xb320('0x1c')];var _0x5d8f18=_0x1ae852?_0x3985d4['count']:_0x575cb3[_0xb320('0x1c')]+_0x575cb3['limit'];var _0x5ddedb;if(_0x5d8f18>=_0x517d2d){_0x5d8f18=_0x517d2d;_0x5ddedb=0xc8;}else{_0x5ddedb=0xce;}_0x4126b5['status'](_0x5ddedb);return _0x4126b5['set'](_0xb320('0x1d'),_0x2e40d0+'-'+_0x5d8f18+'/'+_0x517d2d)[_0xb320('0x19')](_0x3985d4);}return null;};}function patchUpdates(_0x23f351){return function(_0x4d3f04){try{jsonpatch[_0xb320('0x1e')](_0x4d3f04,_0x23f351,!![]);}catch(_0x3d0bab){return BPromise[_0xb320('0x1f')](_0x3d0bab);}return _0x4d3f04[_0xb320('0x20')]();};}function saveUpdates(_0x3b9eec,_0x446fd3){return function(_0x4b8cad){if(_0x4b8cad){return _0x4b8cad[_0xb320('0x21')](_0x3b9eec)[_0xb320('0x22')](function(_0xae1b9a){return _0xae1b9a;});}return null;};}function removeEntity(_0x55c789,_0x52e5f3){return function(_0x3795ed){if(_0x3795ed){return _0x3795ed['destroy']()[_0xb320('0x22')](function(){_0x55c789[_0xb320('0x17')](0xcc)['end']();});}};}function handleEntityNotFound(_0x5d51b2,_0x3d1b03){return function(_0x3e44ae){if(!_0x3e44ae){_0x5d51b2['sendStatus'](0x194);}return _0x3e44ae;};}function handleError(_0xc217be,_0x529cf8){_0x529cf8=_0x529cf8||0x1f4;return function(_0x30fad7){logger[_0xb320('0x23')](_0x30fad7[_0xb320('0x24')]);if(_0x30fad7['name']){delete _0x30fad7['name'];}_0xc217be[_0xb320('0x17')](_0x529cf8)[_0xb320('0x25')](_0x30fad7);};}exports[_0xb320('0x26')]=function(_0xb48c7,_0x2368bc){var _0x5b3777={},_0x3bd7f4={},_0xcceb08={'count':0x0,'rows':[]};var _0x234845=_['map'](db[_0xb320('0x27')][_0xb320('0x28')],function(_0x3cbf84){return{'name':_0x3cbf84['fieldName'],'type':_0x3cbf84[_0xb320('0x29')][_0xb320('0x2a')]};});_0x3bd7f4[_0xb320('0x2b')]=_[_0xb320('0x2c')](_0x234845,_0xb320('0x2d'));_0x3bd7f4['query']=_[_0xb320('0x2e')](_0xb48c7[_0xb320('0x2f')]);_0x3bd7f4['filters']=_[_0xb320('0x30')](_0x3bd7f4[_0xb320('0x2b')],_0x3bd7f4[_0xb320('0x2f')]);_0x5b3777[_0xb320('0x31')]=_['intersection'](_0x3bd7f4[_0xb320('0x2b')],qs[_0xb320('0x32')](_0xb48c7[_0xb320('0x2f')][_0xb320('0x32')]));_0x5b3777[_0xb320('0x31')]=_0x5b3777[_0xb320('0x31')][_0xb320('0x33')]?_0x5b3777['attributes']:_0x3bd7f4[_0xb320('0x2b')];if(!_0xb48c7[_0xb320('0x2f')][_0xb320('0x34')](_0xb320('0x35'))){_0x5b3777['limit']=qs['limit'](_0xb48c7[_0xb320('0x2f')]['limit']);_0x5b3777['offset']=qs[_0xb320('0x1c')](_0xb48c7[_0xb320('0x2f')][_0xb320('0x1c')]);}_0x5b3777['order']=qs[_0xb320('0x36')](_0xb48c7[_0xb320('0x2f')][_0xb320('0x36')]);_0x5b3777[_0xb320('0x37')]=qs[_0xb320('0x38')](_[_0xb320('0x39')](_0xb48c7['query'],_0x3bd7f4[_0xb320('0x38')]),_0x234845);if(_0xb48c7['query'][_0xb320('0x3a')]){_0x5b3777[_0xb320('0x37')]=_[_0xb320('0x3b')](_0x5b3777[_0xb320('0x37')],{'$or':_[_0xb320('0x2c')](_0x234845,function(_0x1257d7){if(_0x1257d7['type']!==_0xb320('0x3c')){var _0x24709a={};_0x24709a[_0x1257d7['name']]={'$like':'%'+_0xb48c7[_0xb320('0x2f')][_0xb320('0x3a')]+'%'};return _0x24709a;}})});}_0x5b3777=_[_0xb320('0x3b')]({},_0x5b3777,_0xb48c7[_0xb320('0x3d')]);var _0x571d7c={'where':_0x5b3777[_0xb320('0x37')]};return db['SugarcrmConfiguration'][_0xb320('0x1b')](_0x571d7c)[_0xb320('0x22')](function(_0x4aef2e){_0xcceb08['count']=_0x4aef2e;if(_0xb48c7[_0xb320('0x2f')][_0xb320('0x3e')]){_0x5b3777[_0xb320('0x3f')]=[{'all':!![]}];}return db[_0xb320('0x27')][_0xb320('0x40')](_0x5b3777);})[_0xb320('0x22')](function(_0x2ff8e4){_0xcceb08[_0xb320('0x41')]=_0x2ff8e4;return _0xcceb08;})[_0xb320('0x22')](respondWithFilteredResult(_0x2368bc,_0x5b3777))[_0xb320('0x42')](handleError(_0x2368bc,null));};exports[_0xb320('0x43')]=function(_0x474c6e,_0x212d18){var _0x2fdc1b={'raw':![],'where':{'id':_0x474c6e['params']['id']}},_0xcd1025={};_0xcd1025[_0xb320('0x2b')]=_['keys'](db['SugarcrmConfiguration'][_0xb320('0x28')]);_0xcd1025[_0xb320('0x2f')]=_[_0xb320('0x2e')](_0x474c6e['query']);_0xcd1025['filters']=_['intersection'](_0xcd1025[_0xb320('0x2b')],_0xcd1025[_0xb320('0x2f')]);_0x2fdc1b[_0xb320('0x31')]=_['intersection'](_0xcd1025[_0xb320('0x2b')],qs[_0xb320('0x32')](_0x474c6e[_0xb320('0x2f')][_0xb320('0x32')]));_0x2fdc1b[_0xb320('0x31')]=_0x2fdc1b[_0xb320('0x31')][_0xb320('0x33')]?_0x2fdc1b[_0xb320('0x31')]:_0xcd1025[_0xb320('0x2b')];if(_0x474c6e[_0xb320('0x2f')][_0xb320('0x3e')]){_0x2fdc1b[_0xb320('0x3f')]=[{'all':!![]}];}_0x2fdc1b=_[_0xb320('0x3b')]({},_0x2fdc1b,_0x474c6e[_0xb320('0x3d')]);return db[_0xb320('0x27')][_0xb320('0x44')](_0x2fdc1b)[_0xb320('0x22')](handleEntityNotFound(_0x212d18,null))[_0xb320('0x22')](respondWithResult(_0x212d18,null))[_0xb320('0x42')](handleError(_0x212d18,null));};exports[_0xb320('0x45')]=function(_0x233bd5,_0x4f7333){return db['SugarcrmConfiguration'][_0xb320('0x45')](_0x233bd5[_0xb320('0x46')],{})['then'](respondWithResult(_0x4f7333,0xc9))[_0xb320('0x42')](handleError(_0x4f7333,null));};exports['update']=function(_0x22b190,_0x2f5f76){if(_0x22b190['body']['id']){delete _0x22b190[_0xb320('0x46')]['id'];}return db[_0xb320('0x27')][_0xb320('0x44')]({'where':{'id':_0x22b190[_0xb320('0x47')]['id']}})['then'](handleEntityNotFound(_0x2f5f76,null))['then'](saveUpdates(_0x22b190[_0xb320('0x46')],null))[_0xb320('0x22')](respondWithResult(_0x2f5f76,null))[_0xb320('0x42')](handleError(_0x2f5f76,null));};exports['destroy']=function(_0x22be48,_0x490f54){return db[_0xb320('0x27')][_0xb320('0x44')]({'where':{'id':_0x22be48[_0xb320('0x47')]['id']}})[_0xb320('0x22')](handleEntityNotFound(_0x490f54,null))['then'](removeEntity(_0x490f54,null))[_0xb320('0x42')](handleError(_0x490f54,null));};exports[_0xb320('0x48')]=function(_0x153cfa,_0x43e831,_0x3571cc){var _0x55bd09={};var _0x22d683={};var _0x4d7483;var _0x165759;return db[_0xb320('0x27')][_0xb320('0x49')]({'where':{'id':_0x153cfa[_0xb320('0x47')]['id']}})[_0xb320('0x22')](handleEntityNotFound(_0x43e831,null))[_0xb320('0x22')](function(_0x40d9c5){if(_0x40d9c5){_0x4d7483=_0x40d9c5;_0x22d683['model']=_[_0xb320('0x2e')](db[_0xb320('0x4a')]['rawAttributes']);_0x22d683['query']=_[_0xb320('0x2e')](_0x153cfa['query']);_0x22d683[_0xb320('0x38')]=_[_0xb320('0x30')](_0x22d683[_0xb320('0x2b')],_0x22d683['query']);_0x55bd09[_0xb320('0x31')]=_['intersection'](_0x22d683[_0xb320('0x2b')],qs[_0xb320('0x32')](_0x153cfa[_0xb320('0x2f')][_0xb320('0x32')]));_0x55bd09[_0xb320('0x31')]=_0x55bd09['attributes'][_0xb320('0x33')]?_0x55bd09[_0xb320('0x31')]:_0x22d683[_0xb320('0x2b')];_0x55bd09[_0xb320('0x4b')]=qs[_0xb320('0x36')](_0x153cfa[_0xb320('0x2f')][_0xb320('0x36')]);_0x55bd09[_0xb320('0x37')]=qs[_0xb320('0x38')](_[_0xb320('0x39')](_0x153cfa[_0xb320('0x2f')],_0x22d683[_0xb320('0x38')]));if(_0x153cfa['query']['filter']){_0x55bd09[_0xb320('0x37')]=_['merge'](_0x55bd09[_0xb320('0x37')],{'$or':_[_0xb320('0x2c')](_0x55bd09[_0xb320('0x31')],function(_0x462c55){var _0x2cb193={};_0x2cb193[_0x462c55]={'$like':'%'+_0x153cfa['query'][_0xb320('0x3a')]+'%'};return _0x2cb193;})});}_0x55bd09=_[_0xb320('0x3b')]({},_0x55bd09,_0x153cfa[_0xb320('0x3d')]);return _0x4d7483['getFields'](_0x55bd09);}})[_0xb320('0x22')](function(_0xa2cb03){if(_0xa2cb03){_0x165759=_0xa2cb03[_0xb320('0x33')];if(!_0x153cfa[_0xb320('0x2f')]['hasOwnProperty'](_0xb320('0x35'))){_0x55bd09['limit']=qs[_0xb320('0x4c')](_0x153cfa['query'][_0xb320('0x4c')]);_0x55bd09[_0xb320('0x1c')]=qs['offset'](_0x153cfa[_0xb320('0x2f')][_0xb320('0x1c')]);}return _0x4d7483['getFields'](_0x55bd09);}})[_0xb320('0x22')](function(_0x3f0bc8){if(_0x3f0bc8){return _0x3f0bc8?{'count':_0x165759,'rows':_0x3f0bc8}:null;}})[_0xb320('0x22')](respondWithResult(_0x43e831,null))[_0xb320('0x42')](handleError(_0x43e831,null));};exports[_0xb320('0x4d')]=function(_0x35fc53,_0xebcfb4,_0x13ac9){var _0x59a53f={};var _0xf3c1ad={};var _0x1532af;var _0x26f27b;return db['SugarcrmConfiguration'][_0xb320('0x49')]({'where':{'id':_0x35fc53['params']['id']}})[_0xb320('0x22')](handleEntityNotFound(_0xebcfb4,null))[_0xb320('0x22')](function(_0x549ccf){if(_0x549ccf){_0x1532af=_0x549ccf;_0xf3c1ad['model']=_[_0xb320('0x2e')](db[_0xb320('0x4a')][_0xb320('0x28')]);_0xf3c1ad[_0xb320('0x2f')]=_[_0xb320('0x2e')](_0x35fc53[_0xb320('0x2f')]);_0xf3c1ad[_0xb320('0x38')]=_['intersection'](_0xf3c1ad[_0xb320('0x2b')],_0xf3c1ad[_0xb320('0x2f')]);_0x59a53f[_0xb320('0x31')]=_[_0xb320('0x30')](_0xf3c1ad[_0xb320('0x2b')],qs[_0xb320('0x32')](_0x35fc53[_0xb320('0x2f')][_0xb320('0x32')]));_0x59a53f[_0xb320('0x31')]=_0x59a53f['attributes'][_0xb320('0x33')]?_0x59a53f['attributes']:_0xf3c1ad[_0xb320('0x2b')];_0x59a53f['order']=qs[_0xb320('0x36')](_0x35fc53[_0xb320('0x2f')]['sort']);_0x59a53f[_0xb320('0x37')]=qs[_0xb320('0x38')](_['pick'](_0x35fc53['query'],_0xf3c1ad[_0xb320('0x38')]));if(_0x35fc53[_0xb320('0x2f')][_0xb320('0x3a')]){_0x59a53f[_0xb320('0x37')]=_[_0xb320('0x3b')](_0x59a53f['where'],{'$or':_[_0xb320('0x2c')](_0x59a53f[_0xb320('0x31')],function(_0x105481){var _0x3cbf48={};_0x3cbf48[_0x105481]={'$like':'%'+_0x35fc53[_0xb320('0x2f')]['filter']+'%'};return _0x3cbf48;})});}_0x59a53f=_[_0xb320('0x3b')]({},_0x59a53f,_0x35fc53[_0xb320('0x3d')]);return _0x1532af[_0xb320('0x4d')](_0x59a53f);}})[_0xb320('0x22')](function(_0xb18ce9){if(_0xb18ce9){_0x26f27b=_0xb18ce9['length'];if(!_0x35fc53['query']['hasOwnProperty'](_0xb320('0x35'))){_0x59a53f[_0xb320('0x4c')]=qs[_0xb320('0x4c')](_0x35fc53[_0xb320('0x2f')][_0xb320('0x4c')]);_0x59a53f[_0xb320('0x1c')]=qs[_0xb320('0x1c')](_0x35fc53['query']['offset']);}return _0x1532af[_0xb320('0x4d')](_0x59a53f);}})['then'](function(_0x40f1fa){if(_0x40f1fa){return _0x40f1fa?{'count':_0x26f27b,'rows':_0x40f1fa}:null;}})[_0xb320('0x22')](respondWithResult(_0xebcfb4,null))[_0xb320('0x42')](handleError(_0xebcfb4,null));};exports[_0xb320('0x4e')]=function(_0x4effb9,_0x6f694,_0x36ab1f){var _0x3af4ad={};var _0x2e1827={};var _0xb10f9c;var _0x28e6fb;return db[_0xb320('0x27')][_0xb320('0x49')]({'where':{'id':_0x4effb9[_0xb320('0x47')]['id']}})[_0xb320('0x22')](handleEntityNotFound(_0x6f694,null))[_0xb320('0x22')](function(_0x7edb2b){if(_0x7edb2b){_0xb10f9c=_0x7edb2b;_0x2e1827[_0xb320('0x2b')]=_[_0xb320('0x2e')](db['SugarcrmField'][_0xb320('0x28')]);_0x2e1827[_0xb320('0x2f')]=_[_0xb320('0x2e')](_0x4effb9[_0xb320('0x2f')]);_0x2e1827[_0xb320('0x38')]=_[_0xb320('0x30')](_0x2e1827['model'],_0x2e1827[_0xb320('0x2f')]);_0x3af4ad[_0xb320('0x31')]=_[_0xb320('0x30')](_0x2e1827[_0xb320('0x2b')],qs[_0xb320('0x32')](_0x4effb9[_0xb320('0x2f')][_0xb320('0x32')]));_0x3af4ad['attributes']=_0x3af4ad[_0xb320('0x31')][_0xb320('0x33')]?_0x3af4ad[_0xb320('0x31')]:_0x2e1827[_0xb320('0x2b')];_0x3af4ad[_0xb320('0x4b')]=qs[_0xb320('0x36')](_0x4effb9['query'][_0xb320('0x36')]);_0x3af4ad[_0xb320('0x37')]=qs[_0xb320('0x38')](_[_0xb320('0x39')](_0x4effb9[_0xb320('0x2f')],_0x2e1827[_0xb320('0x38')]));if(_0x4effb9[_0xb320('0x2f')][_0xb320('0x3a')]){_0x3af4ad[_0xb320('0x37')]=_[_0xb320('0x3b')](_0x3af4ad[_0xb320('0x37')],{'$or':_[_0xb320('0x2c')](_0x3af4ad[_0xb320('0x31')],function(_0x113eae){var _0x21dfe5={};_0x21dfe5[_0x113eae]={'$like':'%'+_0x4effb9[_0xb320('0x2f')][_0xb320('0x3a')]+'%'};return _0x21dfe5;})});}_0x3af4ad=_[_0xb320('0x3b')]({},_0x3af4ad,_0x4effb9[_0xb320('0x3d')]);return _0xb10f9c[_0xb320('0x4e')](_0x3af4ad);}})['then'](function(_0x1cc2d2){if(_0x1cc2d2){_0x28e6fb=_0x1cc2d2[_0xb320('0x33')];if(!_0x4effb9['query']['hasOwnProperty'](_0xb320('0x35'))){_0x3af4ad['limit']=qs[_0xb320('0x4c')](_0x4effb9[_0xb320('0x2f')]['limit']);_0x3af4ad[_0xb320('0x1c')]=qs[_0xb320('0x1c')](_0x4effb9['query'][_0xb320('0x1c')]);}return _0xb10f9c[_0xb320('0x4e')](_0x3af4ad);}})[_0xb320('0x22')](function(_0x359617){if(_0x359617){return _0x359617?{'count':_0x28e6fb,'rows':_0x359617}:null;}})['then'](respondWithResult(_0x6f694,null))[_0xb320('0x42')](handleError(_0x6f694,null));};
\ No newline at end of file
index eb9e727..fa6468b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0x28b5=['./intSugarcrmConfiguration.attributes','define','int_sugarcrm_configurations','lodash','util','../../config/logger','moment','bluebird','request-promise','path'];(function(_0x2493f7,_0x49c670){var _0x594ab2=function(_0x344ec2){while(--_0x344ec2){_0x2493f7['push'](_0x2493f7['shift']());}};_0x594ab2(++_0x49c670);}(_0x28b5,0xad));var _0x528b=function(_0x6a9a3c,_0xa23f21){_0x6a9a3c=_0x6a9a3c-0x0;var _0x552742=_0x28b5[_0x6a9a3c];return _0x552742;};'use strict';var _=require(_0x528b('0x0'));var util=require(_0x528b('0x1'));var logger=require(_0x528b('0x2'))('api');var moment=require(_0x528b('0x3'));var BPromise=require(_0x528b('0x4'));var rp=require(_0x528b('0x5'));var fs=require('fs');var path=require(_0x528b('0x6'));var rimraf=require('rimraf');var config=require('../../config/environment');var attributes=require(_0x528b('0x7'));module['exports']=function(_0x32459a,_0x4d83aa){return _0x32459a[_0x528b('0x8')]('SugarcrmConfiguration',attributes,{'tableName':_0x528b('0x9'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index b45ec7e..578fc56 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0x4d75=['client','then','info','request\x20sent','SugarcrmConfiguration,\x20%s,\x20%s,\x20%s','stringify','error','code','SugarcrmConfiguration,\x20%s,\x20%s','message','lodash','util','moment','bluebird','../../mysqldb','../../config/utils','rpc','../../config/environment'];(function(_0x43b2e6,_0x14d773){var _0x102c0b=function(_0x1776f2){while(--_0x1776f2){_0x43b2e6['push'](_0x43b2e6['shift']());}};_0x102c0b(++_0x14d773);}(_0x4d75,0x12a));var _0x54d7=function(_0x525ded,_0x3b024d){_0x525ded=_0x525ded-0x0;var _0x3f8c3d=_0x4d75[_0x525ded];return _0x3f8c3d;};'use strict';var _=require(_0x54d7('0x0'));var util=require(_0x54d7('0x1'));var moment=require(_0x54d7('0x2'));var BPromise=require(_0x54d7('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require('ioredis');var db=require(_0x54d7('0x4'))['db'];var utils=require(_0x54d7('0x5'));var logger=require('../../config/logger')(_0x54d7('0x6'));var config=require(_0x54d7('0x7'));var jayson=require('jayson/promise');var client=jayson[_0x54d7('0x8')]['http']({'port':0x232a});function respondWithRpcPromise(_0x10cd19,_0x3dbc74,_0x10ac4d){return new BPromise(function(_0x46d43c,_0x3937eb){return client['request'](_0x10cd19,_0x10ac4d)[_0x54d7('0x9')](function(_0x5b564d){logger[_0x54d7('0xa')]('SugarcrmConfiguration,\x20%s,\x20%s',_0x3dbc74,_0x54d7('0xb'));logger['debug'](_0x54d7('0xc'),_0x3dbc74,'request\x20sent',JSON[_0x54d7('0xd')](_0x5b564d));if(_0x5b564d[_0x54d7('0xe')]){if(_0x5b564d[_0x54d7('0xe')][_0x54d7('0xf')]===0x1f4){logger[_0x54d7('0xe')](_0x54d7('0x10'),_0x3dbc74,_0x5b564d[_0x54d7('0xe')][_0x54d7('0x11')]);return _0x3937eb(_0x5b564d[_0x54d7('0xe')][_0x54d7('0x11')]);}logger[_0x54d7('0xe')](_0x54d7('0x10'),_0x3dbc74,_0x5b564d[_0x54d7('0xe')][_0x54d7('0x11')]);return _0x46d43c(_0x5b564d[_0x54d7('0xe')][_0x54d7('0x11')]);}else{logger[_0x54d7('0xa')]('SugarcrmConfiguration,\x20%s,\x20%s',_0x3dbc74,_0x54d7('0xb'));_0x46d43c(_0x5b564d['result']['message']);}})['catch'](function(_0x13356b){logger[_0x54d7('0xe')](_0x54d7('0x10'),_0x3dbc74,_0x13356b);_0x3937eb(_0x13356b);});});}
\ No newline at end of file
index f267004..6667e43 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0x1de7=['show','create','put','update','delete','destroy','exports','multer','util','path','express','Router','../../components/auth/service','../../components/interaction/service','../../config/environment','get','isAuthenticated','index','/:id'];(function(_0x2b4895,_0x20c70a){var _0x569215=function(_0x26ddf4){while(--_0x26ddf4){_0x2b4895['push'](_0x2b4895['shift']());}};_0x569215(++_0x20c70a);}(_0x1de7,0x170));var _0x71de=function(_0x29ec0c,_0x334d19){_0x29ec0c=_0x29ec0c-0x0;var _0x466a47=_0x1de7[_0x29ec0c];return _0x466a47;};'use strict';var multer=require(_0x71de('0x0'));var util=require(_0x71de('0x1'));var path=require(_0x71de('0x2'));var timeout=require('connect-timeout');var express=require(_0x71de('0x3'));var router=express[_0x71de('0x4')]();var fs_extra=require('fs-extra');var auth=require(_0x71de('0x5'));var interaction=require(_0x71de('0x6'));var config=require(_0x71de('0x7'));var controller=require('./intSugarcrmField.controller');router[_0x71de('0x8')]('/',auth[_0x71de('0x9')](),controller[_0x71de('0xa')]);router[_0x71de('0x8')](_0x71de('0xb'),auth[_0x71de('0x9')](),controller[_0x71de('0xc')]);router['post']('/',auth[_0x71de('0x9')](),controller[_0x71de('0xd')]);router[_0x71de('0xe')](_0x71de('0xb'),auth[_0x71de('0x9')](),controller[_0x71de('0xf')]);router[_0x71de('0x10')](_0x71de('0xb'),auth['isAuthenticated'](),controller[_0x71de('0x11')]);module[_0x71de('0x12')]=router;
\ No newline at end of file
index f25ab9b..e83beaf 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0xaedd=['sequelize','exports','ENUM','customVariable','keyValue','picklist','string','STRING','BOOLEAN'];(function(_0x258af8,_0x99e22e){var _0x4c41f2=function(_0x2c795e){while(--_0x2c795e){_0x258af8['push'](_0x258af8['shift']());}};_0x4c41f2(++_0x99e22e);}(_0xaedd,0x1b0));var _0xdaed=function(_0x314c45,_0x1d34d7){_0x314c45=_0x314c45-0x0;var _0x56847e=_0xaedd[_0x314c45];return _0x56847e;};'use strict';var Sequelize=require(_0xdaed('0x0'));module[_0xdaed('0x1')]={'type':{'type':Sequelize[_0xdaed('0x2')]('string','variable',_0xdaed('0x3'),_0xdaed('0x4'),_0xdaed('0x5')),'defaultValue':_0xdaed('0x6')},'content':{'type':Sequelize['STRING']},'key':{'type':Sequelize[_0xdaed('0x7')]},'keyType':{'type':Sequelize[_0xdaed('0x2')](_0xdaed('0x6'),'variable',_0xdaed('0x3'))},'keyContent':{'type':Sequelize['STRING']},'idField':{'type':Sequelize[_0xdaed('0x7')]},'nameField':{'type':Sequelize[_0xdaed('0x7')]},'customField':{'type':Sequelize[_0xdaed('0x8')],'defaultValue':!![]},'variableName':{'type':Sequelize[_0xdaed('0x7')]}};
\ No newline at end of file
index 07efc70..ebad57d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0xe7df=['query','keys','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','sort','where','pick','filter','merge','VIRTUAL','options','SugarcrmField','includeAll','include','rows','catch','show','params','rawAttributes','find','create','body','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','ejs','squel','jsforce','to-csv','querystring','papaparse','ioredis','api','../../config/utils','../../config/license/util','sendStatus','status','json','offset','undefined','count','limit','set','Content-Range','reject','save','update','then','end','error','name','index','map','fieldName','type','key','model'];(function(_0x2f963d,_0x28000a){var _0x53c083=function(_0x5b3141){while(--_0x5b3141){_0x2f963d['push'](_0x2f963d['shift']());}};_0x53c083(++_0x28000a);}(_0xe7df,0x9f));var _0xfe7d=function(_0x4e9085,_0x582c28){_0x4e9085=_0x4e9085-0x0;var _0x211985=_0xe7df[_0x4e9085];return _0x211985;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0xfe7d('0x0'));var zipdir=require(_0xfe7d('0x1'));var jsonpatch=require(_0xfe7d('0x2'));var rp=require(_0xfe7d('0x3'));var moment=require(_0xfe7d('0x4'));var BPromise=require(_0xfe7d('0x5'));var Mustache=require(_0xfe7d('0x6'));var util=require('util');var path=require('path');var sox=require('sox');var csv=require('to-csv');var ejs=require(_0xfe7d('0x7'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require('lodash');var squel=require(_0xfe7d('0x8'));var crypto=require('crypto');var jsforce=require(_0xfe7d('0x9'));var deskjs=require('desk.js');var toCsv=require(_0xfe7d('0xa'));var querystring=require(_0xfe7d('0xb'));var Papa=require(_0xfe7d('0xc'));var Redis=require(_0xfe7d('0xd'));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('../../config/logger')(_0xfe7d('0xe'));var utils=require(_0xfe7d('0xf'));var config=require('../../config/environment');var licenseUtil=require(_0xfe7d('0x10'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x289be1,_0x15ddbf){_0x15ddbf=_0x15ddbf||0xcc;return function(_0x1d8372){if(_0x1d8372){return _0x289be1[_0xfe7d('0x11')](_0x15ddbf);}return _0x289be1[_0xfe7d('0x12')](_0x15ddbf)['end']();};}function respondWithResult(_0x34f27e,_0x12d01d){_0x12d01d=_0x12d01d||0xc8;return function(_0x1cc3e2){if(_0x1cc3e2){return _0x34f27e[_0xfe7d('0x12')](_0x12d01d)[_0xfe7d('0x13')](_0x1cc3e2);}};}function respondWithFilteredResult(_0x5a5c2a,_0x42bea5){return function(_0x4acf39){if(_0x4acf39){var _0x22ecfa=typeof _0x42bea5[_0xfe7d('0x14')]==='undefined'&&typeof _0x42bea5['limit']===_0xfe7d('0x15');var _0x31213d=_0x4acf39[_0xfe7d('0x16')];var _0x165f41=_0x22ecfa?0x0:_0x42bea5[_0xfe7d('0x14')];var _0x341d69=_0x22ecfa?_0x4acf39[_0xfe7d('0x16')]:_0x42bea5['offset']+_0x42bea5[_0xfe7d('0x17')];var _0x5077e0;if(_0x341d69>=_0x31213d){_0x341d69=_0x31213d;_0x5077e0=0xc8;}else{_0x5077e0=0xce;}_0x5a5c2a[_0xfe7d('0x12')](_0x5077e0);return _0x5a5c2a[_0xfe7d('0x18')](_0xfe7d('0x19'),_0x165f41+'-'+_0x341d69+'/'+_0x31213d)['json'](_0x4acf39);}return null;};}function patchUpdates(_0x326f30){return function(_0x4b5294){try{jsonpatch['apply'](_0x4b5294,_0x326f30,!![]);}catch(_0x58cb88){return BPromise[_0xfe7d('0x1a')](_0x58cb88);}return _0x4b5294[_0xfe7d('0x1b')]();};}function saveUpdates(_0x130416,_0x4c8cc1){return function(_0x15be40){if(_0x15be40){return _0x15be40[_0xfe7d('0x1c')](_0x130416)[_0xfe7d('0x1d')](function(_0x2bda93){return _0x2bda93;});}return null;};}function removeEntity(_0x8218cc,_0x2b183a){return function(_0x4efab8){if(_0x4efab8){return _0x4efab8['destroy']()[_0xfe7d('0x1d')](function(){_0x8218cc['status'](0xcc)[_0xfe7d('0x1e')]();});}};}function handleEntityNotFound(_0x522487,_0x504d53){return function(_0x1869da){if(!_0x1869da){_0x522487[_0xfe7d('0x11')](0x194);}return _0x1869da;};}function handleError(_0x41caf5,_0x4e3b5c){_0x4e3b5c=_0x4e3b5c||0x1f4;return function(_0xc160b){logger[_0xfe7d('0x1f')](_0xc160b['stack']);if(_0xc160b[_0xfe7d('0x20')]){delete _0xc160b[_0xfe7d('0x20')];}_0x41caf5[_0xfe7d('0x12')](_0x4e3b5c)['send'](_0xc160b);};}exports[_0xfe7d('0x21')]=function(_0x3aee70,_0x5131b6){var _0x14fbb7={},_0x5b0d31={},_0x1fb5d5={'count':0x0,'rows':[]};var _0x14d6b7=_[_0xfe7d('0x22')](db['SugarcrmField']['rawAttributes'],function(_0x30e67f){return{'name':_0x30e67f[_0xfe7d('0x23')],'type':_0x30e67f[_0xfe7d('0x24')][_0xfe7d('0x25')]};});_0x5b0d31[_0xfe7d('0x26')]=_['map'](_0x14d6b7,_0xfe7d('0x20'));_0x5b0d31[_0xfe7d('0x27')]=_[_0xfe7d('0x28')](_0x3aee70[_0xfe7d('0x27')]);_0x5b0d31[_0xfe7d('0x29')]=_[_0xfe7d('0x2a')](_0x5b0d31['model'],_0x5b0d31[_0xfe7d('0x27')]);_0x14fbb7[_0xfe7d('0x2b')]=_[_0xfe7d('0x2a')](_0x5b0d31['model'],qs['fields'](_0x3aee70[_0xfe7d('0x27')][_0xfe7d('0x2c')]));_0x14fbb7[_0xfe7d('0x2b')]=_0x14fbb7['attributes'][_0xfe7d('0x2d')]?_0x14fbb7[_0xfe7d('0x2b')]:_0x5b0d31[_0xfe7d('0x26')];if(!_0x3aee70[_0xfe7d('0x27')][_0xfe7d('0x2e')](_0xfe7d('0x2f'))){_0x14fbb7[_0xfe7d('0x17')]=qs[_0xfe7d('0x17')](_0x3aee70[_0xfe7d('0x27')][_0xfe7d('0x17')]);_0x14fbb7[_0xfe7d('0x14')]=qs[_0xfe7d('0x14')](_0x3aee70[_0xfe7d('0x27')][_0xfe7d('0x14')]);}_0x14fbb7['order']=qs[_0xfe7d('0x30')](_0x3aee70[_0xfe7d('0x27')][_0xfe7d('0x30')]);_0x14fbb7[_0xfe7d('0x31')]=qs['filters'](_[_0xfe7d('0x32')](_0x3aee70[_0xfe7d('0x27')],_0x5b0d31[_0xfe7d('0x29')]),_0x14d6b7);if(_0x3aee70[_0xfe7d('0x27')][_0xfe7d('0x33')]){_0x14fbb7[_0xfe7d('0x31')]=_[_0xfe7d('0x34')](_0x14fbb7[_0xfe7d('0x31')],{'$or':_[_0xfe7d('0x22')](_0x14d6b7,function(_0x160936){if(_0x160936['type']!==_0xfe7d('0x35')){var _0x462025={};_0x462025[_0x160936['name']]={'$like':'%'+_0x3aee70[_0xfe7d('0x27')][_0xfe7d('0x33')]+'%'};return _0x462025;}})});}_0x14fbb7=_[_0xfe7d('0x34')]({},_0x14fbb7,_0x3aee70[_0xfe7d('0x36')]);var _0x345b63={'where':_0x14fbb7['where']};return db[_0xfe7d('0x37')][_0xfe7d('0x16')](_0x345b63)[_0xfe7d('0x1d')](function(_0x1d4d5a){_0x1fb5d5[_0xfe7d('0x16')]=_0x1d4d5a;if(_0x3aee70['query'][_0xfe7d('0x38')]){_0x14fbb7[_0xfe7d('0x39')]=[{'all':!![]}];}return db[_0xfe7d('0x37')]['findAll'](_0x14fbb7);})[_0xfe7d('0x1d')](function(_0x1bf827){_0x1fb5d5[_0xfe7d('0x3a')]=_0x1bf827;return _0x1fb5d5;})[_0xfe7d('0x1d')](respondWithFilteredResult(_0x5131b6,_0x14fbb7))[_0xfe7d('0x3b')](handleError(_0x5131b6,null));};exports[_0xfe7d('0x3c')]=function(_0x40e295,_0x186eb8){var _0x29bd24={'raw':!![],'where':{'id':_0x40e295[_0xfe7d('0x3d')]['id']}},_0x37a638={};_0x37a638[_0xfe7d('0x26')]=_[_0xfe7d('0x28')](db[_0xfe7d('0x37')][_0xfe7d('0x3e')]);_0x37a638[_0xfe7d('0x27')]=_[_0xfe7d('0x28')](_0x40e295[_0xfe7d('0x27')]);_0x37a638['filters']=_[_0xfe7d('0x2a')](_0x37a638['model'],_0x37a638['query']);_0x29bd24[_0xfe7d('0x2b')]=_[_0xfe7d('0x2a')](_0x37a638['model'],qs[_0xfe7d('0x2c')](_0x40e295[_0xfe7d('0x27')][_0xfe7d('0x2c')]));_0x29bd24[_0xfe7d('0x2b')]=_0x29bd24[_0xfe7d('0x2b')][_0xfe7d('0x2d')]?_0x29bd24[_0xfe7d('0x2b')]:_0x37a638['model'];if(_0x40e295['query'][_0xfe7d('0x38')]){_0x29bd24[_0xfe7d('0x39')]=[{'all':!![]}];}_0x29bd24=_[_0xfe7d('0x34')]({},_0x29bd24,_0x40e295['options']);return db[_0xfe7d('0x37')][_0xfe7d('0x3f')](_0x29bd24)[_0xfe7d('0x1d')](handleEntityNotFound(_0x186eb8,null))[_0xfe7d('0x1d')](respondWithResult(_0x186eb8,null))[_0xfe7d('0x3b')](handleError(_0x186eb8,null));};exports[_0xfe7d('0x40')]=function(_0x1d2c02,_0x2e6acf){return db['SugarcrmField'][_0xfe7d('0x40')](_0x1d2c02['body'],{})['then'](respondWithResult(_0x2e6acf,0xc9))['catch'](handleError(_0x2e6acf,null));};exports[_0xfe7d('0x1c')]=function(_0x5f463a,_0xbc7e4e){if(_0x5f463a[_0xfe7d('0x41')]['id']){delete _0x5f463a[_0xfe7d('0x41')]['id'];}return db[_0xfe7d('0x37')][_0xfe7d('0x3f')]({'where':{'id':_0x5f463a['params']['id']}})[_0xfe7d('0x1d')](handleEntityNotFound(_0xbc7e4e,null))[_0xfe7d('0x1d')](saveUpdates(_0x5f463a[_0xfe7d('0x41')],null))['then'](respondWithResult(_0xbc7e4e,null))['catch'](handleError(_0xbc7e4e,null));};exports['destroy']=function(_0x5e87e5,_0x2d580e){return db[_0xfe7d('0x37')][_0xfe7d('0x3f')]({'where':{'id':_0x5e87e5['params']['id']}})['then'](handleEntityNotFound(_0x2d580e,null))[_0xfe7d('0x1d')](removeEntity(_0x2d580e,null))[_0xfe7d('0x3b')](handleError(_0x2d580e,null));};
\ No newline at end of file
index 9f90c60..7aca98a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0xa9f7=['rimraf','../../config/environment','./intSugarcrmField.attributes','exports','SugarcrmField','int_sugarcrm_fields','idField','FieldId','lodash','../../config/logger','moment'];(function(_0x122ef9,_0x451d2a){var _0x42fba0=function(_0x17c9d3){while(--_0x17c9d3){_0x122ef9['push'](_0x122ef9['shift']());}};_0x42fba0(++_0x451d2a);}(_0xa9f7,0xb8));var _0x7a9f=function(_0x4f1829,_0x41c1da){_0x4f1829=_0x4f1829-0x0;var _0x2d2945=_0xa9f7[_0x4f1829];return _0x2d2945;};'use strict';var _=require(_0x7a9f('0x0'));var util=require('util');var logger=require(_0x7a9f('0x1'))('api');var moment=require(_0x7a9f('0x2'));var BPromise=require('bluebird');var rp=require('request-promise');var fs=require('fs');var path=require('path');var rimraf=require(_0x7a9f('0x3'));var config=require(_0x7a9f('0x4'));var attributes=require(_0x7a9f('0x5'));module[_0x7a9f('0x6')]=function(_0x44511e,_0x1ef4f4){return _0x44511e['define'](_0x7a9f('0x7'),attributes,{'tableName':_0x7a9f('0x8'),'paranoid':![],'indexes':[{'name':'sugarcrm_unique_index','fields':[_0x7a9f('0x9'),_0x7a9f('0xa')],'unique':!![]}],'timestamps':!![]});};
\ No newline at end of file
index db7e6af..8bdc6b5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0x1e91=['../../config/logger','../../config/environment','jayson/promise','client','http','SugarcrmField,\x20%s,\x20%s','request\x20sent','debug','SugarcrmField,\x20%s,\x20%s,\x20%s','stringify','code','error','message','info','catch','lodash','moment','bluebird','randomstring','ioredis','../../mysqldb'];(function(_0x1a4739,_0x37a984){var _0x465aa2=function(_0x301a17){while(--_0x301a17){_0x1a4739['push'](_0x1a4739['shift']());}};_0x465aa2(++_0x37a984);}(_0x1e91,0x19e));var _0x11e9=function(_0x2b9a40,_0x5ba986){_0x2b9a40=_0x2b9a40-0x0;var _0x139836=_0x1e91[_0x2b9a40];return _0x139836;};'use strict';var _=require(_0x11e9('0x0'));var util=require('util');var moment=require(_0x11e9('0x1'));var BPromise=require(_0x11e9('0x2'));var rs=require(_0x11e9('0x3'));var fs=require('fs');var Redis=require(_0x11e9('0x4'));var db=require(_0x11e9('0x5'))['db'];var utils=require('../../config/utils');var logger=require(_0x11e9('0x6'))('rpc');var config=require(_0x11e9('0x7'));var jayson=require(_0x11e9('0x8'));var client=jayson[_0x11e9('0x9')][_0x11e9('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x1b8c9a,_0x2fc8a7,_0x39d1d8){return new BPromise(function(_0x1d640d,_0x5ccefb){return client['request'](_0x1b8c9a,_0x39d1d8)['then'](function(_0x7dce69){logger['info'](_0x11e9('0xb'),_0x2fc8a7,_0x11e9('0xc'));logger[_0x11e9('0xd')](_0x11e9('0xe'),_0x2fc8a7,_0x11e9('0xc'),JSON[_0x11e9('0xf')](_0x7dce69));if(_0x7dce69['error']){if(_0x7dce69['error'][_0x11e9('0x10')]===0x1f4){logger[_0x11e9('0x11')](_0x11e9('0xb'),_0x2fc8a7,_0x7dce69['error']['message']);return _0x5ccefb(_0x7dce69[_0x11e9('0x11')][_0x11e9('0x12')]);}logger['error'](_0x11e9('0xb'),_0x2fc8a7,_0x7dce69[_0x11e9('0x11')][_0x11e9('0x12')]);return _0x1d640d(_0x7dce69['error']['message']);}else{logger[_0x11e9('0x13')]('SugarcrmField,\x20%s,\x20%s',_0x2fc8a7,_0x11e9('0xc'));_0x1d640d(_0x7dce69['result'][_0x11e9('0x12')]);}})[_0x11e9('0x14')](function(_0x1a1e7b){logger['error'](_0x11e9('0xb'),_0x2fc8a7,_0x1a1e7b);_0x5ccefb(_0x1a1e7b);});});}
\ No newline at end of file
index ad1dc1f..b8d44db 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0x403a=['../../components/interaction/service','../../config/environment','./intVtigerAccount.controller','get','isAuthenticated','index','/:id','show','/:id/configurations','getConfigurations','/:id/fields','getFields','post','create','addConfiguration','update','destroy','exports','multer','connect-timeout','Router','../../components/auth/service'];(function(_0x23fc75,_0x44003d){var _0x33ecac=function(_0x424c21){while(--_0x424c21){_0x23fc75['push'](_0x23fc75['shift']());}};_0x33ecac(++_0x44003d);}(_0x403a,0x19e));var _0xa403=function(_0x3e112d,_0x2bb132){_0x3e112d=_0x3e112d-0x0;var _0x531c31=_0x403a[_0x3e112d];return _0x531c31;};'use strict';var multer=require(_0xa403('0x0'));var util=require('util');var path=require('path');var timeout=require(_0xa403('0x1'));var express=require('express');var router=express[_0xa403('0x2')]();var fs_extra=require('fs-extra');var auth=require(_0xa403('0x3'));var interaction=require(_0xa403('0x4'));var config=require(_0xa403('0x5'));var controller=require(_0xa403('0x6'));router[_0xa403('0x7')]('/',auth[_0xa403('0x8')](),controller[_0xa403('0x9')]);router[_0xa403('0x7')](_0xa403('0xa'),auth[_0xa403('0x8')](),controller[_0xa403('0xb')]);router['get'](_0xa403('0xc'),auth[_0xa403('0x8')](),controller[_0xa403('0xd')]);router[_0xa403('0x7')](_0xa403('0xe'),auth[_0xa403('0x8')](),controller[_0xa403('0xf')]);router[_0xa403('0x10')]('/',auth[_0xa403('0x8')](),controller[_0xa403('0x11')]);router['post']('/:id/configurations',auth[_0xa403('0x8')](),controller[_0xa403('0x12')]);router['put'](_0xa403('0xa'),auth[_0xa403('0x8')](),controller[_0xa403('0x13')]);router['delete'](_0xa403('0xa'),auth[_0xa403('0x8')](),controller[_0xa403('0x14')]);module[_0xa403('0x15')]=router;
\ No newline at end of file
index 64b5f9c..a1a0a8d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0xa00b=['sequelize','STRING'];(function(_0x5b21c3,_0x3bfcd4){var _0x5f5dc0=function(_0x4d1818){while(--_0x4d1818){_0x5b21c3['push'](_0x5b21c3['shift']());}};_0x5f5dc0(++_0x3bfcd4);}(_0xa00b,0x82));var _0xba00=function(_0x321bb2,_0x202794){_0x321bb2=_0x321bb2-0x0;var _0x9c12ed=_0xa00b[_0x321bb2];return _0x9c12ed;};'use strict';var Sequelize=require(_0xba00('0x0'));module['exports']={'name':{'type':Sequelize[_0xba00('0x1')],'allowNull':![]},'description':{'type':Sequelize['STRING']},'username':{'type':Sequelize[_0xba00('0x1')],'allowNull':![]},'moduleName':{'type':Sequelize[_0xba00('0x1')],'allowNull':![],'defaultValue':'HelpDesk'},'remoteUri':{'type':Sequelize[_0xba00('0x1')],'allowNull':![]},'serverUrl':{'type':Sequelize['STRING'],'allowNull':![]},'accessKey':{'type':Sequelize[_0xba00('0x1')],'allowNull':![]}};
\ No newline at end of file
index b3f0e24..9233b4e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0x4a98=['../../config/logger','api','../../config/environment','../../config/license/util','../../components/integrations/configuration','sendStatus','status','end','json','offset','undefined','limit','count','set','Content-Range','apply','reject','update','then','destroy','error','stack','name','send','index','rawAttributes','fieldName','type','model','map','query','keys','filters','intersection','attributes','length','hasOwnProperty','nolimit','sort','where','pick','filter','merge','options','VtigerAccount','includeAll','include','findAll','rows','catch','show','params','find','create','body','getConfigurations','VtigerConfiguration','fields','order','AccountId','getSubjects','channel','Descriptions','VtigerField','Subjects','md5','getFields','username','description','moduleName','serverUrl','remoteUri','slice','%s/webservice.php','GET','getchallenge','success','POST','login','result','token','sessionName','autogenerated','reference','owner','remove','includes','editable','startsWith','picklist','label','value','log','vTiger\x20error:\x20','statusCode','getFields,\x20%s,\x20%s,\x20%s','stringify','test','Wrong\x20credentials','moment','bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','squel','desk.js','querystring','papaparse','ioredis','../../components/parsers/qs','../../config/license/hardware'];(function(_0x327beb,_0x5da000){var _0x57cee3=function(_0xbb633d){while(--_0xbb633d){_0x327beb['push'](_0x327beb['shift']());}};_0x57cee3(++_0x5da000);}(_0x4a98,0x149));var _0x84a9=function(_0x548503,_0x1aa00c){_0x548503=_0x548503-0x0;var _0xf8f05f=_0x4a98[_0x548503];return _0xf8f05f;};'use strict';var emlformat=require('eml-format');var rimraf=require('rimraf');var zipdir=require('zip-dir');var jsonpatch=require('fast-json-patch');var rp=require('request-promise');var moment=require(_0x84a9('0x0'));var BPromise=require(_0x84a9('0x1'));var Mustache=require(_0x84a9('0x2'));var util=require(_0x84a9('0x3'));var path=require(_0x84a9('0x4'));var sox=require(_0x84a9('0x5'));var csv=require(_0x84a9('0x6'));var ejs=require(_0x84a9('0x7'));var fs=require('fs');var fs_extra=require(_0x84a9('0x8'));var _=require('lodash');var squel=require(_0x84a9('0x9'));var crypto=require('crypto');var jsforce=require('jsforce');var deskjs=require(_0x84a9('0xa'));var toCsv=require(_0x84a9('0x6'));var querystring=require(_0x84a9('0xb'));var Papa=require(_0x84a9('0xc'));var Redis=require(_0x84a9('0xd'));var authService=require('../../components/auth/service');var qs=require(_0x84a9('0xe'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x84a9('0xf'));var logger=require(_0x84a9('0x10'))(_0x84a9('0x11'));var utils=require('../../config/utils');var config=require(_0x84a9('0x12'));var licenseUtil=require(_0x84a9('0x13'));var db=require('../../mysqldb')['db'];var integrations=require(_0x84a9('0x14'));function respondWithStatusCode(_0x3104d4,_0x4a1640){_0x4a1640=_0x4a1640||0xcc;return function(_0x2b4cec){if(_0x2b4cec){return _0x3104d4[_0x84a9('0x15')](_0x4a1640);}return _0x3104d4[_0x84a9('0x16')](_0x4a1640)[_0x84a9('0x17')]();};}function respondWithResult(_0x46ac58,_0x4e5d88){_0x4e5d88=_0x4e5d88||0xc8;return function(_0x5d6aad){if(_0x5d6aad){return _0x46ac58[_0x84a9('0x16')](_0x4e5d88)[_0x84a9('0x18')](_0x5d6aad);}};}function respondWithFilteredResult(_0x36a5e4,_0x4c297f){return function(_0xc2ec0b){if(_0xc2ec0b){var _0x26204c=typeof _0x4c297f[_0x84a9('0x19')]===_0x84a9('0x1a')&&typeof _0x4c297f[_0x84a9('0x1b')]===_0x84a9('0x1a');var _0x1fe84c=_0xc2ec0b['count'];var _0x4b7f3e=_0x26204c?0x0:_0x4c297f['offset'];var _0x16b035=_0x26204c?_0xc2ec0b[_0x84a9('0x1c')]:_0x4c297f[_0x84a9('0x19')]+_0x4c297f[_0x84a9('0x1b')];var _0x11b405;if(_0x16b035>=_0x1fe84c){_0x16b035=_0x1fe84c;_0x11b405=0xc8;}else{_0x11b405=0xce;}_0x36a5e4['status'](_0x11b405);return _0x36a5e4[_0x84a9('0x1d')](_0x84a9('0x1e'),_0x4b7f3e+'-'+_0x16b035+'/'+_0x1fe84c)[_0x84a9('0x18')](_0xc2ec0b);}return null;};}function patchUpdates(_0x5c9edc){return function(_0x58d79a){try{jsonpatch[_0x84a9('0x1f')](_0x58d79a,_0x5c9edc,!![]);}catch(_0xb7e4e2){return BPromise[_0x84a9('0x20')](_0xb7e4e2);}return _0x58d79a['save']();};}function saveUpdates(_0x79d848,_0x55cdae){return function(_0xb7c72a){if(_0xb7c72a){return _0xb7c72a[_0x84a9('0x21')](_0x79d848)[_0x84a9('0x22')](function(_0x89c85b){return _0x89c85b;});}return null;};}function removeEntity(_0x1bfd10,_0x414d1b){return function(_0x5ee3bc){if(_0x5ee3bc){return _0x5ee3bc[_0x84a9('0x23')]()['then'](function(){_0x1bfd10[_0x84a9('0x16')](0xcc)[_0x84a9('0x17')]();});}};}function handleEntityNotFound(_0x16b3f8,_0x8b1d99){return function(_0x13aec3){if(!_0x13aec3){_0x16b3f8[_0x84a9('0x15')](0x194);}return _0x13aec3;};}function handleError(_0x590607,_0x786773){_0x786773=_0x786773||0x1f4;return function(_0x2d90a3){logger[_0x84a9('0x24')](_0x2d90a3[_0x84a9('0x25')]);if(_0x2d90a3[_0x84a9('0x26')]){delete _0x2d90a3[_0x84a9('0x26')];}_0x590607[_0x84a9('0x16')](_0x786773)[_0x84a9('0x27')](_0x2d90a3);};}exports[_0x84a9('0x28')]=function(_0x2bf7e1,_0x3e8309){var _0x14c00d={},_0x1da9cd={},_0x2c2bdf={'count':0x0,'rows':[]};var _0x215d05=_['map'](db['VtigerAccount'][_0x84a9('0x29')],function(_0x3dc8bf){return{'name':_0x3dc8bf[_0x84a9('0x2a')],'type':_0x3dc8bf[_0x84a9('0x2b')]['key']};});_0x1da9cd[_0x84a9('0x2c')]=_[_0x84a9('0x2d')](_0x215d05,_0x84a9('0x26'));_0x1da9cd[_0x84a9('0x2e')]=_[_0x84a9('0x2f')](_0x2bf7e1[_0x84a9('0x2e')]);_0x1da9cd[_0x84a9('0x30')]=_[_0x84a9('0x31')](_0x1da9cd[_0x84a9('0x2c')],_0x1da9cd['query']);_0x14c00d[_0x84a9('0x32')]=_[_0x84a9('0x31')](_0x1da9cd['model'],qs['fields'](_0x2bf7e1[_0x84a9('0x2e')]['fields']));_0x14c00d['attributes']=_0x14c00d[_0x84a9('0x32')][_0x84a9('0x33')]?_0x14c00d[_0x84a9('0x32')]:_0x1da9cd[_0x84a9('0x2c')];if(!_0x2bf7e1[_0x84a9('0x2e')][_0x84a9('0x34')](_0x84a9('0x35'))){_0x14c00d['limit']=qs[_0x84a9('0x1b')](_0x2bf7e1[_0x84a9('0x2e')][_0x84a9('0x1b')]);_0x14c00d[_0x84a9('0x19')]=qs[_0x84a9('0x19')](_0x2bf7e1[_0x84a9('0x2e')][_0x84a9('0x19')]);}_0x14c00d['order']=qs[_0x84a9('0x36')](_0x2bf7e1['query'][_0x84a9('0x36')]);_0x14c00d[_0x84a9('0x37')]=qs[_0x84a9('0x30')](_[_0x84a9('0x38')](_0x2bf7e1['query'],_0x1da9cd['filters']),_0x215d05);if(_0x2bf7e1[_0x84a9('0x2e')][_0x84a9('0x39')]){_0x14c00d[_0x84a9('0x37')]=_[_0x84a9('0x3a')](_0x14c00d[_0x84a9('0x37')],{'$or':_[_0x84a9('0x2d')](_0x215d05,function(_0x2b4028){if(_0x2b4028[_0x84a9('0x2b')]!=='VIRTUAL'){var _0x5712c9={};_0x5712c9[_0x2b4028[_0x84a9('0x26')]]={'$like':'%'+_0x2bf7e1['query'][_0x84a9('0x39')]+'%'};return _0x5712c9;}})});}_0x14c00d=_[_0x84a9('0x3a')]({},_0x14c00d,_0x2bf7e1[_0x84a9('0x3b')]);var _0x299a38={'where':_0x14c00d[_0x84a9('0x37')]};return db[_0x84a9('0x3c')]['count'](_0x299a38)['then'](function(_0x34f318){_0x2c2bdf[_0x84a9('0x1c')]=_0x34f318;if(_0x2bf7e1[_0x84a9('0x2e')][_0x84a9('0x3d')]){_0x14c00d[_0x84a9('0x3e')]=[{'all':!![]}];}return db[_0x84a9('0x3c')][_0x84a9('0x3f')](_0x14c00d);})['then'](function(_0xaf4377){_0x2c2bdf[_0x84a9('0x40')]=_0xaf4377;return _0x2c2bdf;})['then'](respondWithFilteredResult(_0x3e8309,_0x14c00d))[_0x84a9('0x41')](handleError(_0x3e8309,null));};exports[_0x84a9('0x42')]=function(_0x5b2815,_0x4fe74c){var _0x312811={'raw':![],'where':{'id':_0x5b2815[_0x84a9('0x43')]['id']}},_0x43326e={};_0x43326e[_0x84a9('0x2c')]=_[_0x84a9('0x2f')](db[_0x84a9('0x3c')]['rawAttributes']);_0x43326e[_0x84a9('0x2e')]=_[_0x84a9('0x2f')](_0x5b2815[_0x84a9('0x2e')]);_0x43326e[_0x84a9('0x30')]=_[_0x84a9('0x31')](_0x43326e[_0x84a9('0x2c')],_0x43326e[_0x84a9('0x2e')]);_0x312811['attributes']=_['intersection'](_0x43326e['model'],qs['fields'](_0x5b2815[_0x84a9('0x2e')]['fields']));_0x312811[_0x84a9('0x32')]=_0x312811['attributes'][_0x84a9('0x33')]?_0x312811[_0x84a9('0x32')]:_0x43326e[_0x84a9('0x2c')];if(_0x5b2815[_0x84a9('0x2e')][_0x84a9('0x3d')]){_0x312811['include']=[{'all':!![]}];}_0x312811=_[_0x84a9('0x3a')]({},_0x312811,_0x5b2815[_0x84a9('0x3b')]);return db[_0x84a9('0x3c')][_0x84a9('0x44')](_0x312811)['then'](handleEntityNotFound(_0x4fe74c,null))[_0x84a9('0x22')](respondWithResult(_0x4fe74c,null))[_0x84a9('0x41')](handleError(_0x4fe74c,null));};exports[_0x84a9('0x45')]=function(_0x35ea7a,_0x1d085f){return db[_0x84a9('0x3c')][_0x84a9('0x45')](_0x35ea7a['body'],{})['then'](respondWithResult(_0x1d085f,0xc9))['catch'](handleError(_0x1d085f,null));};exports['update']=function(_0x14fc2b,_0xe78516){if(_0x14fc2b[_0x84a9('0x46')]['id']){delete _0x14fc2b[_0x84a9('0x46')]['id'];}return db[_0x84a9('0x3c')][_0x84a9('0x44')]({'where':{'id':_0x14fc2b[_0x84a9('0x43')]['id']}})[_0x84a9('0x22')](handleEntityNotFound(_0xe78516,null))[_0x84a9('0x22')](saveUpdates(_0x14fc2b[_0x84a9('0x46')],null))['then'](respondWithResult(_0xe78516,null))[_0x84a9('0x41')](handleError(_0xe78516,null));};exports[_0x84a9('0x23')]=function(_0x51d1b5,_0x5da728){return db[_0x84a9('0x3c')]['find']({'where':{'id':_0x51d1b5['params']['id']}})[_0x84a9('0x22')](handleEntityNotFound(_0x5da728,null))[_0x84a9('0x22')](removeEntity(_0x5da728,null))[_0x84a9('0x41')](handleError(_0x5da728,null));};exports[_0x84a9('0x47')]=function(_0x4fdc5c,_0x5a28b1,_0x2b2db3){var _0xa4e23={};var _0xc97508={};var _0x2c2170;var _0x129df4;return db['VtigerAccount']['findOne']({'where':{'id':_0x4fdc5c[_0x84a9('0x43')]['id']}})[_0x84a9('0x22')](handleEntityNotFound(_0x5a28b1,null))[_0x84a9('0x22')](function(_0x48b8a2){if(_0x48b8a2){_0x2c2170=_0x48b8a2;_0xc97508['model']=_[_0x84a9('0x2f')](db[_0x84a9('0x48')][_0x84a9('0x29')]);_0xc97508['query']=_['keys'](_0x4fdc5c[_0x84a9('0x2e')]);_0xc97508[_0x84a9('0x30')]=_[_0x84a9('0x31')](_0xc97508[_0x84a9('0x2c')],_0xc97508[_0x84a9('0x2e')]);_0xa4e23['attributes']=_['intersection'](_0xc97508[_0x84a9('0x2c')],qs[_0x84a9('0x49')](_0x4fdc5c[_0x84a9('0x2e')][_0x84a9('0x49')]));_0xa4e23['attributes']=_0xa4e23[_0x84a9('0x32')][_0x84a9('0x33')]?_0xa4e23[_0x84a9('0x32')]:_0xc97508[_0x84a9('0x2c')];_0xa4e23[_0x84a9('0x4a')]=qs[_0x84a9('0x36')](_0x4fdc5c[_0x84a9('0x2e')][_0x84a9('0x36')]);_0xa4e23['where']=qs[_0x84a9('0x30')](_[_0x84a9('0x38')](_0x4fdc5c[_0x84a9('0x2e')],_0xc97508['filters']));if(_0x4fdc5c[_0x84a9('0x2e')]['filter']){_0xa4e23['where']=_[_0x84a9('0x3a')](_0xa4e23[_0x84a9('0x37')],{'$or':_[_0x84a9('0x2d')](_0xa4e23[_0x84a9('0x32')],function(_0x2c840b){var _0x3b6b4e={};_0x3b6b4e[_0x2c840b]={'$like':'%'+_0x4fdc5c[_0x84a9('0x2e')]['filter']+'%'};return _0x3b6b4e;})});}_0xa4e23=_['merge']({},_0xa4e23,_0x4fdc5c[_0x84a9('0x3b')]);return _0x2c2170[_0x84a9('0x47')](_0xa4e23);}})[_0x84a9('0x22')](function(_0x464e7a){if(_0x464e7a){_0x129df4=_0x464e7a[_0x84a9('0x33')];if(!_0x4fdc5c[_0x84a9('0x2e')][_0x84a9('0x34')]('nolimit')){_0xa4e23[_0x84a9('0x1b')]=qs[_0x84a9('0x1b')](_0x4fdc5c[_0x84a9('0x2e')][_0x84a9('0x1b')]);_0xa4e23['offset']=qs['offset'](_0x4fdc5c[_0x84a9('0x2e')][_0x84a9('0x19')]);}return _0x2c2170[_0x84a9('0x47')](_0xa4e23);}})[_0x84a9('0x22')](function(_0x5b1044){if(_0x5b1044){return _0x5b1044?{'count':_0x129df4,'rows':_0x5b1044}:null;}})[_0x84a9('0x22')](respondWithResult(_0x5a28b1,null))[_0x84a9('0x41')](handleError(_0x5a28b1,null));};exports['addConfiguration']=function(_0x337657,_0x31a1f8,_0x3f7233){if(_0x337657[_0x84a9('0x46')]['id']){delete _0x337657['body']['id'];}return db[_0x84a9('0x3c')]['findOne']({'where':{'id':_0x337657[_0x84a9('0x43')]['id']}})[_0x84a9('0x22')](handleEntityNotFound(_0x31a1f8,null))[_0x84a9('0x22')](function(_0x399780){if(_0x399780){_0x337657[_0x84a9('0x46')][_0x84a9('0x4b')]=_0x399780['id'];_0x337657['body']['Subjects']=integrations[_0x84a9('0x4c')](_0x337657[_0x84a9('0x46')][_0x84a9('0x4d')],_0x337657[_0x84a9('0x46')][_0x84a9('0x2b')]);_0x337657['body'][_0x84a9('0x4e')]=integrations['getDescriptions'](_0x337657[_0x84a9('0x46')][_0x84a9('0x4d')],_0x337657['body'][_0x84a9('0x2b')]);return db['VtigerConfiguration'][_0x84a9('0x45')](_0x337657[_0x84a9('0x46')],{'include':[{'model':db[_0x84a9('0x4f')],'as':_0x84a9('0x50')},{'model':db[_0x84a9('0x4f')],'as':'Descriptions'}]});}return null;})[_0x84a9('0x22')](respondWithResult(_0x31a1f8,null))[_0x84a9('0x41')](handleError(_0x31a1f8,null));};var md5=require(_0x84a9('0x51'));exports[_0x84a9('0x52')]=function(_0x5ddf39,_0x1899fb,_0x275661){var _0x111147=null;var _0x11e462=null;var _0x31470a=null;var _0xd51a1a=null;var _0x27bf26='';return db['VtigerAccount']['findOne']({'where':{'id':_0x5ddf39['params']['id']},'attributes':['id','name',_0x84a9('0x53'),_0x84a9('0x54'),_0x84a9('0x55'),'remoteUri',_0x84a9('0x56'),'accessKey']})[_0x84a9('0x22')](handleEntityNotFound(_0x1899fb,null))[_0x84a9('0x22')](function(_0x932153){if(_0x932153){_0x111147=_0x932153['username'];_0x11e462=_0x932153['accessKey'];_0x31470a=_0x932153[_0x84a9('0x55')];_0x27bf26=_0x932153[_0x84a9('0x57')];var _0x2a15cb=_0x27bf26[_0x84a9('0x58')](-0x1);if(_0x2a15cb==='/'){_0x27bf26=_0x27bf26['substring'](0x0,_0x27bf26['lastIndexOf'](_0x2a15cb));}_0xd51a1a=util['format'](_0x84a9('0x59'),_0x27bf26);var _0x5e35ac={'method':_0x84a9('0x5a'),'uri':_0xd51a1a,'qs':{'operation':_0x84a9('0x5b'),'username':_0x932153[_0x84a9('0x53')]},'json':!![]};return rp(_0x5e35ac);}})[_0x84a9('0x22')](function(_0x154e13){if(_0x154e13[_0x84a9('0x5c')]){var _0x4304ad={'method':_0x84a9('0x5d'),'uri':_0xd51a1a,'form':{'operation':_0x84a9('0x5e'),'username':_0x111147,'accessKey':md5(_0x154e13[_0x84a9('0x5f')][_0x84a9('0x60')]+_0x11e462)},'json':!![]};return rp(_0x4304ad);}})[_0x84a9('0x22')](function(_0x308821){if(_0x308821[_0x84a9('0x5c')]){var _0x251cfd={'method':_0x84a9('0x5a'),'uri':_0xd51a1a,'qs':{'operation':'describe','username':_0x111147,'sessionName':_0x308821[_0x84a9('0x5f')][_0x84a9('0x61')],'elementType':_0x31470a},'json':!![]};return rp(_0x251cfd);}})['then'](function(_0x5078cb){if(_0x5078cb[_0x84a9('0x5c')]){var _0xd0de0e=[_0x84a9('0x62'),_0x84a9('0x63'),_0x84a9('0x64')];_[_0x84a9('0x65')](_0x5078cb[_0x84a9('0x5f')][_0x84a9('0x49')],function(_0x46d5cc){return _0xd0de0e[_0x84a9('0x66')](_0x46d5cc[_0x84a9('0x2b')][_0x84a9('0x26')]);});_[_0x84a9('0x65')](_0x5078cb['result']['fields'],function(_0xd76f75){return _0xd76f75[_0x84a9('0x67')]==='false';});return{'count':_0x5078cb[_0x84a9('0x5f')][_0x84a9('0x49')][_0x84a9('0x33')],'rows':_[_0x84a9('0x2d')](_0x5078cb['result'][_0x84a9('0x49')],function(_0x405ceb){return{'id':_0x405ceb['name'],'name':_0x405ceb['label'],'custom':_[_0x84a9('0x68')](_0x405ceb[_0x84a9('0x26')],'cf_')?!![]:![],'options':_0x405ceb['type'][_0x84a9('0x26')]===_0x84a9('0x69')&&_0x405ceb[_0x84a9('0x2b')]['picklistValues'][_0x84a9('0x33')]>0x0?_[_0x84a9('0x2d')](_0x405ceb['type']['picklistValues'],function(_0x4d3c67){return{'name':_0x4d3c67[_0x84a9('0x6a')],'value':_0x4d3c67[_0x84a9('0x6b')]};}):[]};})};}})[_0x84a9('0x22')](respondWithResult(_0x1899fb,null))[_0x84a9('0x41')](function(_0x3cef44){console[_0x84a9('0x6c')](_0x84a9('0x6d')+_0x3cef44);var _0x57a1d4=_0x5ddf39[_0x84a9('0x2e')]['test']?0x1f4:_0x3cef44[_0x84a9('0x6e')]||0x1f4;logger[_0x84a9('0x24')](_0x84a9('0x6f'),_0x84a9('0x52'),_0x57a1d4,JSON[_0x84a9('0x70')](_0x3cef44));delete _0x3cef44[_0x84a9('0x26')];if(_0x57a1d4===0x191){_0x57a1d4=0x190;}_0x1899fb[_0x84a9('0x16')](_0x57a1d4)['send'](_0x5ddf39[_0x84a9('0x2e')][_0x84a9('0x71')]?{'message':_0x84a9('0x72'),'statusCode':_0x3cef44['statusCode']}:_0x3cef44);});};
\ No newline at end of file
index f0ae595..d9013a9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0xcaa8=['path','rimraf','../../config/environment','./intVtigerAccount.attributes','../../components/integrations/configuration','exports','define','VtigerAccount','int_vtiger_accounts','lodash','api','bluebird','request-promise'];(function(_0x22c262,_0x338812){var _0x1c4fe7=function(_0x33255e){while(--_0x33255e){_0x22c262['push'](_0x22c262['shift']());}};_0x1c4fe7(++_0x338812);}(_0xcaa8,0xcc));var _0x8caa=function(_0x3abc4d,_0x7fe708){_0x3abc4d=_0x3abc4d-0x0;var _0x5b9182=_0xcaa8[_0x3abc4d];return _0x5b9182;};'use strict';var _=require(_0x8caa('0x0'));var util=require('util');var logger=require('../../config/logger')(_0x8caa('0x1'));var moment=require('moment');var BPromise=require(_0x8caa('0x2'));var rp=require(_0x8caa('0x3'));var fs=require('fs');var path=require(_0x8caa('0x4'));var rimraf=require(_0x8caa('0x5'));var config=require(_0x8caa('0x6'));var attributes=require(_0x8caa('0x7'));var integrations=require(_0x8caa('0x8'));module[_0x8caa('0x9')]=function(_0x19735f,_0x1709fd){return _0x19735f[_0x8caa('0xa')](_0x8caa('0xb'),attributes,{'tableName':_0x8caa('0xc'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index a2ad63a..524ce42 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0xd64b=['include','map','model','then','ShowVtigerAccount','find','debug','lodash','moment','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','http','request','info','VtigerAccount,\x20%s,\x20%s','request\x20sent','VtigerAccount,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','GetVtigerAccount','VtigerAccount','options','where','attributes'];(function(_0x2a31b9,_0x4a634d){var _0x5cda05=function(_0x5d0c0c){while(--_0x5d0c0c){_0x2a31b9['push'](_0x2a31b9['shift']());}};_0x5cda05(++_0x4a634d);}(_0xd64b,0xc1));var _0xbd64=function(_0x73e726,_0x5a9c29){_0x73e726=_0x73e726-0x0;var _0x261d0c=_0xd64b[_0x73e726];return _0x261d0c;};'use strict';var _=require(_0xbd64('0x0'));var util=require('util');var moment=require(_0xbd64('0x1'));var BPromise=require('bluebird');var rs=require(_0xbd64('0x2'));var fs=require('fs');var Redis=require(_0xbd64('0x3'));var db=require(_0xbd64('0x4'))['db'];var utils=require(_0xbd64('0x5'));var logger=require(_0xbd64('0x6'))('rpc');var config=require('../../config/environment');var jayson=require('jayson/promise');var client=jayson['client'][_0xbd64('0x7')]({'port':0x232a});function respondWithRpcPromise(_0x32995f,_0x3e700e,_0x38204e){return new BPromise(function(_0x3f1f17,_0x2b8543){return client[_0xbd64('0x8')](_0x32995f,_0x38204e)['then'](function(_0x5ae70c){logger[_0xbd64('0x9')](_0xbd64('0xa'),_0x3e700e,_0xbd64('0xb'));logger['debug'](_0xbd64('0xc'),_0x3e700e,_0xbd64('0xb'),JSON[_0xbd64('0xd')](_0x5ae70c));if(_0x5ae70c[_0xbd64('0xe')]){if(_0x5ae70c['error'][_0xbd64('0xf')]===0x1f4){logger['error'](_0xbd64('0xa'),_0x3e700e,_0x5ae70c[_0xbd64('0xe')][_0xbd64('0x10')]);return _0x2b8543(_0x5ae70c[_0xbd64('0xe')][_0xbd64('0x10')]);}logger[_0xbd64('0xe')](_0xbd64('0xa'),_0x3e700e,_0x5ae70c[_0xbd64('0xe')][_0xbd64('0x10')]);return _0x3f1f17(_0x5ae70c['error'][_0xbd64('0x10')]);}else{logger[_0xbd64('0x9')](_0xbd64('0xa'),_0x3e700e,_0xbd64('0xb'));_0x3f1f17(_0x5ae70c[_0xbd64('0x11')]['message']);}})[_0xbd64('0x12')](function(_0x5332e0){logger[_0xbd64('0xe')](_0xbd64('0xa'),_0x3e700e,_0x5332e0);_0x2b8543(_0x5332e0);});});}exports[_0xbd64('0x13')]=function(_0x1d7a14){var _0x17d015=this;return new Promise(function(_0x2f4554,_0xa5491d){return db[_0xbd64('0x14')]['findAll']({'raw':_0x1d7a14[_0xbd64('0x15')]?_0x1d7a14[_0xbd64('0x15')]['raw']===undefined?!![]:![]:!![],'where':_0x1d7a14['options']?_0x1d7a14[_0xbd64('0x15')][_0xbd64('0x16')]||null:null,'attributes':_0x1d7a14[_0xbd64('0x15')]?_0x1d7a14[_0xbd64('0x15')][_0xbd64('0x17')]||null:null,'limit':_0x1d7a14[_0xbd64('0x15')]?_0x1d7a14['options']['limit']||null:null,'include':_0x1d7a14[_0xbd64('0x15')]?_0x1d7a14[_0xbd64('0x15')][_0xbd64('0x18')]?_[_0xbd64('0x19')](_0x1d7a14['options']['include'],function(_0x28497c){return{'model':db[_0x28497c['model']],'as':_0x28497c['as'],'attributes':_0x28497c[_0xbd64('0x17')],'include':_0x28497c['include']?_[_0xbd64('0x19')](_0x28497c[_0xbd64('0x18')],function(_0x3d12a0){return{'model':db[_0x3d12a0[_0xbd64('0x1a')]],'as':_0x3d12a0['as'],'attributes':_0x3d12a0['attributes'],'include':_0x3d12a0[_0xbd64('0x18')]?_[_0xbd64('0x19')](_0x3d12a0[_0xbd64('0x18')],function(_0x2a44d0){return{'model':db[_0x2a44d0['model']],'as':_0x2a44d0['as'],'attributes':_0x2a44d0['attributes']};}):[]};}):[]};}):[]:[]})[_0xbd64('0x1b')](function(_0x49eac5){logger['info'](_0xbd64('0x13'),_0x1d7a14);logger['debug'](_0xbd64('0x13'),_0x1d7a14,JSON['stringify'](_0x49eac5));_0x2f4554(_0x49eac5);})[_0xbd64('0x12')](function(_0x5d8c35){logger[_0xbd64('0xe')](_0xbd64('0x13'),_0x5d8c35[_0xbd64('0x10')],_0x1d7a14);_0xa5491d(_0x17d015[_0xbd64('0xe')](0x1f4,_0x5d8c35[_0xbd64('0x10')]));});});};exports[_0xbd64('0x1c')]=function(_0x4ed44a){var _0x35bdd5=this;return new Promise(function(_0xe876c9,_0xc44280){return db[_0xbd64('0x14')][_0xbd64('0x1d')]({'raw':_0x4ed44a[_0xbd64('0x15')]?_0x4ed44a['options']['raw']===undefined?!![]:![]:!![],'where':_0x4ed44a[_0xbd64('0x15')]?_0x4ed44a['options'][_0xbd64('0x16')]||null:null,'attributes':_0x4ed44a[_0xbd64('0x15')]?_0x4ed44a['options']['attributes']||null:null,'include':_0x4ed44a[_0xbd64('0x15')]?_0x4ed44a['options']['include']?_[_0xbd64('0x19')](_0x4ed44a[_0xbd64('0x15')][_0xbd64('0x18')],function(_0x50c58e){return{'model':db[_0x50c58e[_0xbd64('0x1a')]],'as':_0x50c58e['as'],'attributes':_0x50c58e['attributes'],'include':_0x50c58e[_0xbd64('0x18')]?_[_0xbd64('0x19')](_0x50c58e[_0xbd64('0x18')],function(_0x243588){return{'model':db[_0x243588[_0xbd64('0x1a')]],'as':_0x243588['as'],'attributes':_0x243588[_0xbd64('0x17')],'include':_0x243588['include']?_['map'](_0x243588[_0xbd64('0x18')],function(_0x2be110){return{'model':db[_0x2be110[_0xbd64('0x1a')]],'as':_0x2be110['as'],'attributes':_0x2be110[_0xbd64('0x17')]};}):[]};}):[]};}):[]:[]})[_0xbd64('0x1b')](function(_0x3b245e){logger['info']('ShowVtigerAccount',_0x4ed44a);logger[_0xbd64('0x1e')](_0xbd64('0x1c'),_0x4ed44a,JSON[_0xbd64('0xd')](_0x3b245e));_0xe876c9(_0x3b245e);})['catch'](function(_0x5afe9b){logger[_0xbd64('0xe')]('ShowVtigerAccount',_0x5afe9b[_0xbd64('0x10')],_0x4ed44a);_0xc44280(_0x35bdd5['error'](0x1f4,_0x5afe9b[_0xbd64('0x10')]));});});};
\ No newline at end of file
index 7ebef8d..cdec681 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0x0782=['connect-timeout','express','Router','fs-extra','../../components/interaction/service','../../config/environment','./intVtigerConfiguration.controller','get','/:id','isAuthenticated','show','getFields','/:id/subjects','/:id/descriptions','getDescriptions','create','update','exports','multer','util'];(function(_0x262ff6,_0x158799){var _0x4c9b82=function(_0x2d854d){while(--_0x2d854d){_0x262ff6['push'](_0x262ff6['shift']());}};_0x4c9b82(++_0x158799);}(_0x0782,0x18e));var _0x2078=function(_0x138adb,_0x193fee){_0x138adb=_0x138adb-0x0;var _0x1b27f2=_0x0782[_0x138adb];return _0x1b27f2;};'use strict';var multer=require(_0x2078('0x0'));var util=require(_0x2078('0x1'));var path=require('path');var timeout=require(_0x2078('0x2'));var express=require(_0x2078('0x3'));var router=express[_0x2078('0x4')]();var fs_extra=require(_0x2078('0x5'));var auth=require('../../components/auth/service');var interaction=require(_0x2078('0x6'));var config=require(_0x2078('0x7'));var controller=require(_0x2078('0x8'));router[_0x2078('0x9')]('/',auth['isAuthenticated'](),controller['index']);router[_0x2078('0x9')](_0x2078('0xa'),auth[_0x2078('0xb')](),controller[_0x2078('0xc')]);router[_0x2078('0x9')]('/:id/fields',auth['isAuthenticated'](),controller[_0x2078('0xd')]);router[_0x2078('0x9')](_0x2078('0xe'),auth['isAuthenticated'](),controller['getSubjects']);router[_0x2078('0x9')](_0x2078('0xf'),auth['isAuthenticated'](),controller[_0x2078('0x10')]);router['post']('/',auth[_0x2078('0xb')](),controller[_0x2078('0x11')]);router['put'](_0x2078('0xa'),auth[_0x2078('0xb')](),controller[_0x2078('0x12')]);router['delete']('/:id',auth[_0x2078('0xb')](),controller['destroy']);module[_0x2078('0x13')]=router;
\ No newline at end of file
index 42266eb..272ec29 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0x076b=['STRING','sequelize','exports'];(function(_0x5503f1,_0x183512){var _0x13d60c=function(_0x117d95){while(--_0x117d95){_0x5503f1['push'](_0x5503f1['shift']());}};_0x13d60c(++_0x183512);}(_0x076b,0x8e));var _0xb076=function(_0xcd8d75,_0x26b30b){_0xcd8d75=_0xcd8d75-0x0;var _0x158bf5=_0x076b[_0xcd8d75];return _0x158bf5;};'use strict';var Sequelize=require(_0xb076('0x0'));module[_0xb076('0x1')]={'name':{'type':Sequelize[_0xb076('0x2')]},'description':{'type':Sequelize[_0xb076('0x2')]}};
\ No newline at end of file
index f9e0341..9118565 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0xcf90=['params','keys','rawAttributes','find','catch','create','body','getFields','VtigerField','filter','merge','nolimit','getSubjects','findOne','getDescriptions','eml-format','rimraf','zip-dir','bluebird','mustache','util','sox','ejs','fs-extra','squel','crypto','jsforce','to-csv','papaparse','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/license/util','../../mysqldb','sendStatus','status','end','json','undefined','count','offset','limit','set','Content-Range','save','update','then','destroy','error','stack','name','send','map','VtigerConfiguration','fieldName','type','key','model','query','intersection','attributes','fields','length','hasOwnProperty','order','sort','where','filters','pick','options','includeAll','include','findAll','show'];(function(_0x204c2a,_0x1cee23){var _0x1fb76e=function(_0x13bec2){while(--_0x13bec2){_0x204c2a['push'](_0x204c2a['shift']());}};_0x1fb76e(++_0x1cee23);}(_0xcf90,0x1e3));var _0x0cf9=function(_0x3cff99,_0x397990){_0x3cff99=_0x3cff99-0x0;var _0x196a42=_0xcf90[_0x3cff99];return _0x196a42;};'use strict';var emlformat=require(_0x0cf9('0x0'));var rimraf=require(_0x0cf9('0x1'));var zipdir=require(_0x0cf9('0x2'));var jsonpatch=require('fast-json-patch');var rp=require('request-promise');var moment=require('moment');var BPromise=require(_0x0cf9('0x3'));var Mustache=require(_0x0cf9('0x4'));var util=require(_0x0cf9('0x5'));var path=require('path');var sox=require(_0x0cf9('0x6'));var csv=require('to-csv');var ejs=require(_0x0cf9('0x7'));var fs=require('fs');var fs_extra=require(_0x0cf9('0x8'));var _=require('lodash');var squel=require(_0x0cf9('0x9'));var crypto=require(_0x0cf9('0xa'));var jsforce=require(_0x0cf9('0xb'));var deskjs=require('desk.js');var toCsv=require(_0x0cf9('0xc'));var querystring=require('querystring');var Papa=require(_0x0cf9('0xd'));var Redis=require(_0x0cf9('0xe'));var authService=require('../../components/auth/service');var qs=require(_0x0cf9('0xf'));var as=require(_0x0cf9('0x10'));var hardwareService=require(_0x0cf9('0x11'));var logger=require(_0x0cf9('0x12'))(_0x0cf9('0x13'));var utils=require(_0x0cf9('0x14'));var config=require('../../config/environment');var licenseUtil=require(_0x0cf9('0x15'));var db=require(_0x0cf9('0x16'))['db'];function respondWithStatusCode(_0x4b1d69,_0x12154e){_0x12154e=_0x12154e||0xcc;return function(_0xd49ac){if(_0xd49ac){return _0x4b1d69[_0x0cf9('0x17')](_0x12154e);}return _0x4b1d69[_0x0cf9('0x18')](_0x12154e)[_0x0cf9('0x19')]();};}function respondWithResult(_0x4622a5,_0x352be6){_0x352be6=_0x352be6||0xc8;return function(_0xdeddfe){if(_0xdeddfe){return _0x4622a5['status'](_0x352be6)[_0x0cf9('0x1a')](_0xdeddfe);}};}function respondWithFilteredResult(_0x51cff7,_0xa4ef1d){return function(_0x54837b){if(_0x54837b){var _0x42b5b6=typeof _0xa4ef1d['offset']==='undefined'&&typeof _0xa4ef1d['limit']===_0x0cf9('0x1b');var _0x230bb6=_0x54837b[_0x0cf9('0x1c')];var _0x2fc7b3=_0x42b5b6?0x0:_0xa4ef1d['offset'];var _0x29db56=_0x42b5b6?_0x54837b[_0x0cf9('0x1c')]:_0xa4ef1d[_0x0cf9('0x1d')]+_0xa4ef1d[_0x0cf9('0x1e')];var _0x45f6a2;if(_0x29db56>=_0x230bb6){_0x29db56=_0x230bb6;_0x45f6a2=0xc8;}else{_0x45f6a2=0xce;}_0x51cff7['status'](_0x45f6a2);return _0x51cff7[_0x0cf9('0x1f')](_0x0cf9('0x20'),_0x2fc7b3+'-'+_0x29db56+'/'+_0x230bb6)[_0x0cf9('0x1a')](_0x54837b);}return null;};}function patchUpdates(_0x52e3f0){return function(_0x1a240c){try{jsonpatch['apply'](_0x1a240c,_0x52e3f0,!![]);}catch(_0x483b0e){return BPromise['reject'](_0x483b0e);}return _0x1a240c[_0x0cf9('0x21')]();};}function saveUpdates(_0x53f5d9,_0xc85e78){return function(_0x5a5847){if(_0x5a5847){return _0x5a5847[_0x0cf9('0x22')](_0x53f5d9)[_0x0cf9('0x23')](function(_0x57cd83){return _0x57cd83;});}return null;};}function removeEntity(_0x53fc98,_0xb9b541){return function(_0x11cb3f){if(_0x11cb3f){return _0x11cb3f[_0x0cf9('0x24')]()[_0x0cf9('0x23')](function(){_0x53fc98['status'](0xcc)[_0x0cf9('0x19')]();});}};}function handleEntityNotFound(_0x3006d4,_0x2f83e5){return function(_0x121325){if(!_0x121325){_0x3006d4[_0x0cf9('0x17')](0x194);}return _0x121325;};}function handleError(_0x2d0a07,_0x948123){_0x948123=_0x948123||0x1f4;return function(_0x3b7120){logger[_0x0cf9('0x25')](_0x3b7120[_0x0cf9('0x26')]);if(_0x3b7120['name']){delete _0x3b7120[_0x0cf9('0x27')];}_0x2d0a07[_0x0cf9('0x18')](_0x948123)[_0x0cf9('0x28')](_0x3b7120);};}exports['index']=function(_0x198d84,_0x2479e7){var _0x55c590={},_0x39af88={},_0x27e831={'count':0x0,'rows':[]};var _0x51afa8=_[_0x0cf9('0x29')](db[_0x0cf9('0x2a')]['rawAttributes'],function(_0x246217){return{'name':_0x246217[_0x0cf9('0x2b')],'type':_0x246217[_0x0cf9('0x2c')][_0x0cf9('0x2d')]};});_0x39af88[_0x0cf9('0x2e')]=_['map'](_0x51afa8,_0x0cf9('0x27'));_0x39af88[_0x0cf9('0x2f')]=_['keys'](_0x198d84[_0x0cf9('0x2f')]);_0x39af88['filters']=_[_0x0cf9('0x30')](_0x39af88[_0x0cf9('0x2e')],_0x39af88['query']);_0x55c590[_0x0cf9('0x31')]=_['intersection'](_0x39af88[_0x0cf9('0x2e')],qs[_0x0cf9('0x32')](_0x198d84[_0x0cf9('0x2f')][_0x0cf9('0x32')]));_0x55c590[_0x0cf9('0x31')]=_0x55c590['attributes'][_0x0cf9('0x33')]?_0x55c590['attributes']:_0x39af88[_0x0cf9('0x2e')];if(!_0x198d84[_0x0cf9('0x2f')][_0x0cf9('0x34')]('nolimit')){_0x55c590[_0x0cf9('0x1e')]=qs['limit'](_0x198d84[_0x0cf9('0x2f')][_0x0cf9('0x1e')]);_0x55c590[_0x0cf9('0x1d')]=qs[_0x0cf9('0x1d')](_0x198d84[_0x0cf9('0x2f')][_0x0cf9('0x1d')]);}_0x55c590[_0x0cf9('0x35')]=qs[_0x0cf9('0x36')](_0x198d84['query'][_0x0cf9('0x36')]);_0x55c590[_0x0cf9('0x37')]=qs[_0x0cf9('0x38')](_[_0x0cf9('0x39')](_0x198d84['query'],_0x39af88['filters']),_0x51afa8);if(_0x198d84[_0x0cf9('0x2f')]['filter']){_0x55c590[_0x0cf9('0x37')]=_['merge'](_0x55c590['where'],{'$or':_[_0x0cf9('0x29')](_0x51afa8,function(_0x2649ca){if(_0x2649ca[_0x0cf9('0x2c')]!=='VIRTUAL'){var _0x19580e={};_0x19580e[_0x2649ca['name']]={'$like':'%'+_0x198d84['query']['filter']+'%'};return _0x19580e;}})});}_0x55c590=_['merge']({},_0x55c590,_0x198d84[_0x0cf9('0x3a')]);var _0x14a005={'where':_0x55c590[_0x0cf9('0x37')]};return db['VtigerConfiguration']['count'](_0x14a005)[_0x0cf9('0x23')](function(_0x318770){_0x27e831['count']=_0x318770;if(_0x198d84[_0x0cf9('0x2f')][_0x0cf9('0x3b')]){_0x55c590[_0x0cf9('0x3c')]=[{'all':!![]}];}return db[_0x0cf9('0x2a')][_0x0cf9('0x3d')](_0x55c590);})[_0x0cf9('0x23')](function(_0x4b4f48){_0x27e831['rows']=_0x4b4f48;return _0x27e831;})[_0x0cf9('0x23')](respondWithFilteredResult(_0x2479e7,_0x55c590))['catch'](handleError(_0x2479e7,null));};exports[_0x0cf9('0x3e')]=function(_0x49a825,_0x46b974){var _0x3893f6={'raw':![],'where':{'id':_0x49a825[_0x0cf9('0x3f')]['id']}},_0x484e56={};_0x484e56[_0x0cf9('0x2e')]=_[_0x0cf9('0x40')](db[_0x0cf9('0x2a')][_0x0cf9('0x41')]);_0x484e56[_0x0cf9('0x2f')]=_[_0x0cf9('0x40')](_0x49a825[_0x0cf9('0x2f')]);_0x484e56[_0x0cf9('0x38')]=_[_0x0cf9('0x30')](_0x484e56[_0x0cf9('0x2e')],_0x484e56[_0x0cf9('0x2f')]);_0x3893f6['attributes']=_['intersection'](_0x484e56[_0x0cf9('0x2e')],qs[_0x0cf9('0x32')](_0x49a825[_0x0cf9('0x2f')]['fields']));_0x3893f6[_0x0cf9('0x31')]=_0x3893f6[_0x0cf9('0x31')]['length']?_0x3893f6[_0x0cf9('0x31')]:_0x484e56[_0x0cf9('0x2e')];if(_0x49a825[_0x0cf9('0x2f')]['includeAll']){_0x3893f6[_0x0cf9('0x3c')]=[{'all':!![]}];}_0x3893f6=_['merge']({},_0x3893f6,_0x49a825[_0x0cf9('0x3a')]);return db[_0x0cf9('0x2a')][_0x0cf9('0x42')](_0x3893f6)['then'](handleEntityNotFound(_0x46b974,null))['then'](respondWithResult(_0x46b974,null))[_0x0cf9('0x43')](handleError(_0x46b974,null));};exports[_0x0cf9('0x44')]=function(_0x444833,_0x1a6b01){return db['VtigerConfiguration'][_0x0cf9('0x44')](_0x444833[_0x0cf9('0x45')],{})['then'](respondWithResult(_0x1a6b01,0xc9))['catch'](handleError(_0x1a6b01,null));};exports[_0x0cf9('0x22')]=function(_0x16783d,_0x5086f5){if(_0x16783d[_0x0cf9('0x45')]['id']){delete _0x16783d[_0x0cf9('0x45')]['id'];}return db[_0x0cf9('0x2a')]['find']({'where':{'id':_0x16783d['params']['id']}})[_0x0cf9('0x23')](handleEntityNotFound(_0x5086f5,null))[_0x0cf9('0x23')](saveUpdates(_0x16783d[_0x0cf9('0x45')],null))[_0x0cf9('0x23')](respondWithResult(_0x5086f5,null))[_0x0cf9('0x43')](handleError(_0x5086f5,null));};exports[_0x0cf9('0x24')]=function(_0xce14b,_0xd85c1c){return db[_0x0cf9('0x2a')][_0x0cf9('0x42')]({'where':{'id':_0xce14b[_0x0cf9('0x3f')]['id']}})[_0x0cf9('0x23')](handleEntityNotFound(_0xd85c1c,null))['then'](removeEntity(_0xd85c1c,null))[_0x0cf9('0x43')](handleError(_0xd85c1c,null));};exports[_0x0cf9('0x46')]=function(_0xa9c3e0,_0x34b900,_0x1e0639){var _0x224cb9={};var _0x4cf287={};var _0x2037be;var _0x4e792c;return db[_0x0cf9('0x2a')]['findOne']({'where':{'id':_0xa9c3e0[_0x0cf9('0x3f')]['id']}})[_0x0cf9('0x23')](handleEntityNotFound(_0x34b900,null))[_0x0cf9('0x23')](function(_0xdaa229){if(_0xdaa229){_0x2037be=_0xdaa229;_0x4cf287[_0x0cf9('0x2e')]=_['keys'](db[_0x0cf9('0x47')][_0x0cf9('0x41')]);_0x4cf287[_0x0cf9('0x2f')]=_[_0x0cf9('0x40')](_0xa9c3e0[_0x0cf9('0x2f')]);_0x4cf287['filters']=_[_0x0cf9('0x30')](_0x4cf287[_0x0cf9('0x2e')],_0x4cf287[_0x0cf9('0x2f')]);_0x224cb9['attributes']=_[_0x0cf9('0x30')](_0x4cf287[_0x0cf9('0x2e')],qs[_0x0cf9('0x32')](_0xa9c3e0['query'][_0x0cf9('0x32')]));_0x224cb9[_0x0cf9('0x31')]=_0x224cb9['attributes'][_0x0cf9('0x33')]?_0x224cb9[_0x0cf9('0x31')]:_0x4cf287['model'];_0x224cb9['order']=qs[_0x0cf9('0x36')](_0xa9c3e0[_0x0cf9('0x2f')]['sort']);_0x224cb9['where']=qs[_0x0cf9('0x38')](_['pick'](_0xa9c3e0['query'],_0x4cf287[_0x0cf9('0x38')]));if(_0xa9c3e0[_0x0cf9('0x2f')][_0x0cf9('0x48')]){_0x224cb9[_0x0cf9('0x37')]=_['merge'](_0x224cb9[_0x0cf9('0x37')],{'$or':_['map'](_0x224cb9[_0x0cf9('0x31')],function(_0x16d60f){var _0x298c7f={};_0x298c7f[_0x16d60f]={'$like':'%'+_0xa9c3e0[_0x0cf9('0x2f')][_0x0cf9('0x48')]+'%'};return _0x298c7f;})});}_0x224cb9=_[_0x0cf9('0x49')]({},_0x224cb9,_0xa9c3e0['options']);return _0x2037be['getFields'](_0x224cb9);}})[_0x0cf9('0x23')](function(_0x1276f6){if(_0x1276f6){_0x4e792c=_0x1276f6[_0x0cf9('0x33')];if(!_0xa9c3e0[_0x0cf9('0x2f')][_0x0cf9('0x34')](_0x0cf9('0x4a'))){_0x224cb9[_0x0cf9('0x1e')]=qs[_0x0cf9('0x1e')](_0xa9c3e0[_0x0cf9('0x2f')][_0x0cf9('0x1e')]);_0x224cb9[_0x0cf9('0x1d')]=qs[_0x0cf9('0x1d')](_0xa9c3e0[_0x0cf9('0x2f')][_0x0cf9('0x1d')]);}return _0x2037be[_0x0cf9('0x46')](_0x224cb9);}})[_0x0cf9('0x23')](function(_0x20e37f){if(_0x20e37f){return _0x20e37f?{'count':_0x4e792c,'rows':_0x20e37f}:null;}})[_0x0cf9('0x23')](respondWithResult(_0x34b900,null))[_0x0cf9('0x43')](handleError(_0x34b900,null));};exports[_0x0cf9('0x4b')]=function(_0x1aec5e,_0x240ecc,_0x1a72c9){var _0x104596={};var _0x54a4dd={};var _0x1a28d2;var _0x159223;return db[_0x0cf9('0x2a')][_0x0cf9('0x4c')]({'where':{'id':_0x1aec5e['params']['id']}})[_0x0cf9('0x23')](handleEntityNotFound(_0x240ecc,null))[_0x0cf9('0x23')](function(_0x516c39){if(_0x516c39){_0x1a28d2=_0x516c39;_0x54a4dd[_0x0cf9('0x2e')]=_['keys'](db['VtigerField'][_0x0cf9('0x41')]);_0x54a4dd[_0x0cf9('0x2f')]=_['keys'](_0x1aec5e[_0x0cf9('0x2f')]);_0x54a4dd[_0x0cf9('0x38')]=_[_0x0cf9('0x30')](_0x54a4dd[_0x0cf9('0x2e')],_0x54a4dd[_0x0cf9('0x2f')]);_0x104596[_0x0cf9('0x31')]=_['intersection'](_0x54a4dd['model'],qs[_0x0cf9('0x32')](_0x1aec5e[_0x0cf9('0x2f')]['fields']));_0x104596[_0x0cf9('0x31')]=_0x104596[_0x0cf9('0x31')]['length']?_0x104596[_0x0cf9('0x31')]:_0x54a4dd[_0x0cf9('0x2e')];_0x104596[_0x0cf9('0x35')]=qs['sort'](_0x1aec5e[_0x0cf9('0x2f')][_0x0cf9('0x36')]);_0x104596[_0x0cf9('0x37')]=qs[_0x0cf9('0x38')](_[_0x0cf9('0x39')](_0x1aec5e[_0x0cf9('0x2f')],_0x54a4dd['filters']));if(_0x1aec5e[_0x0cf9('0x2f')][_0x0cf9('0x48')]){_0x104596[_0x0cf9('0x37')]=_['merge'](_0x104596[_0x0cf9('0x37')],{'$or':_['map'](_0x104596[_0x0cf9('0x31')],function(_0x231111){var _0x49d970={};_0x49d970[_0x231111]={'$like':'%'+_0x1aec5e[_0x0cf9('0x2f')][_0x0cf9('0x48')]+'%'};return _0x49d970;})});}_0x104596=_[_0x0cf9('0x49')]({},_0x104596,_0x1aec5e['options']);return _0x1a28d2[_0x0cf9('0x4b')](_0x104596);}})[_0x0cf9('0x23')](function(_0x54bd4e){if(_0x54bd4e){_0x159223=_0x54bd4e['length'];if(!_0x1aec5e[_0x0cf9('0x2f')][_0x0cf9('0x34')]('nolimit')){_0x104596[_0x0cf9('0x1e')]=qs['limit'](_0x1aec5e['query']['limit']);_0x104596[_0x0cf9('0x1d')]=qs[_0x0cf9('0x1d')](_0x1aec5e[_0x0cf9('0x2f')][_0x0cf9('0x1d')]);}return _0x1a28d2['getSubjects'](_0x104596);}})[_0x0cf9('0x23')](function(_0x3c8270){if(_0x3c8270){return _0x3c8270?{'count':_0x159223,'rows':_0x3c8270}:null;}})[_0x0cf9('0x23')](respondWithResult(_0x240ecc,null))['catch'](handleError(_0x240ecc,null));};exports[_0x0cf9('0x4d')]=function(_0x469d2a,_0x3de202,_0x56ffa8){var _0x1e5a74={};var _0x36fc26={};var _0x43dbbe;var _0x23a739;return db[_0x0cf9('0x2a')][_0x0cf9('0x4c')]({'where':{'id':_0x469d2a[_0x0cf9('0x3f')]['id']}})[_0x0cf9('0x23')](handleEntityNotFound(_0x3de202,null))[_0x0cf9('0x23')](function(_0x740b87){if(_0x740b87){_0x43dbbe=_0x740b87;_0x36fc26[_0x0cf9('0x2e')]=_[_0x0cf9('0x40')](db[_0x0cf9('0x47')]['rawAttributes']);_0x36fc26[_0x0cf9('0x2f')]=_[_0x0cf9('0x40')](_0x469d2a[_0x0cf9('0x2f')]);_0x36fc26['filters']=_[_0x0cf9('0x30')](_0x36fc26['model'],_0x36fc26[_0x0cf9('0x2f')]);_0x1e5a74['attributes']=_['intersection'](_0x36fc26[_0x0cf9('0x2e')],qs[_0x0cf9('0x32')](_0x469d2a[_0x0cf9('0x2f')][_0x0cf9('0x32')]));_0x1e5a74[_0x0cf9('0x31')]=_0x1e5a74[_0x0cf9('0x31')][_0x0cf9('0x33')]?_0x1e5a74['attributes']:_0x36fc26[_0x0cf9('0x2e')];_0x1e5a74[_0x0cf9('0x35')]=qs[_0x0cf9('0x36')](_0x469d2a[_0x0cf9('0x2f')][_0x0cf9('0x36')]);_0x1e5a74[_0x0cf9('0x37')]=qs['filters'](_[_0x0cf9('0x39')](_0x469d2a['query'],_0x36fc26[_0x0cf9('0x38')]));if(_0x469d2a['query']['filter']){_0x1e5a74[_0x0cf9('0x37')]=_['merge'](_0x1e5a74[_0x0cf9('0x37')],{'$or':_[_0x0cf9('0x29')](_0x1e5a74[_0x0cf9('0x31')],function(_0x50b6fb){var _0x12ee51={};_0x12ee51[_0x50b6fb]={'$like':'%'+_0x469d2a['query']['filter']+'%'};return _0x12ee51;})});}_0x1e5a74=_[_0x0cf9('0x49')]({},_0x1e5a74,_0x469d2a[_0x0cf9('0x3a')]);return _0x43dbbe['getDescriptions'](_0x1e5a74);}})['then'](function(_0x3608c2){if(_0x3608c2){_0x23a739=_0x3608c2[_0x0cf9('0x33')];if(!_0x469d2a[_0x0cf9('0x2f')]['hasOwnProperty'](_0x0cf9('0x4a'))){_0x1e5a74[_0x0cf9('0x1e')]=qs[_0x0cf9('0x1e')](_0x469d2a['query'][_0x0cf9('0x1e')]);_0x1e5a74[_0x0cf9('0x1d')]=qs[_0x0cf9('0x1d')](_0x469d2a[_0x0cf9('0x2f')]['offset']);}return _0x43dbbe[_0x0cf9('0x4d')](_0x1e5a74);}})[_0x0cf9('0x23')](function(_0x349ba0){if(_0x349ba0){return _0x349ba0?{'count':_0x23a739,'rows':_0x349ba0}:null;}})['then'](respondWithResult(_0x3de202,null))[_0x0cf9('0x43')](handleError(_0x3de202,null));};
\ No newline at end of file
index 3c2df72..9925512 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0x0902=['exports','util','../../config/logger','api','bluebird','request-promise','rimraf'];(function(_0x250873,_0x3e8932){var _0x437de2=function(_0x434923){while(--_0x434923){_0x250873['push'](_0x250873['shift']());}};_0x437de2(++_0x3e8932);}(_0x0902,0x1c8));var _0x2090=function(_0x20c0e7,_0x4e172a){_0x20c0e7=_0x20c0e7-0x0;var _0x405098=_0x0902[_0x20c0e7];return _0x405098;};'use strict';var _=require('lodash');var util=require(_0x2090('0x0'));var logger=require(_0x2090('0x1'))(_0x2090('0x2'));var moment=require('moment');var BPromise=require(_0x2090('0x3'));var rp=require(_0x2090('0x4'));var fs=require('fs');var path=require('path');var rimraf=require(_0x2090('0x5'));var config=require('../../config/environment');var attributes=require('./intVtigerConfiguration.attributes');module[_0x2090('0x6')]=function(_0x58a2fe,_0x49580a){return _0x58a2fe['define']('VtigerConfiguration',attributes,{'tableName':'int_vtiger_configurations','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index a147210..9a1bd8f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0xd054=['../../config/logger','rpc','jayson/promise','request','then','info','request\x20sent','debug','VtigerConfiguration,\x20%s,\x20%s,\x20%s','stringify','error','code','message','VtigerConfiguration,\x20%s,\x20%s','result','catch','lodash','util','bluebird','randomstring','ioredis'];(function(_0x124de8,_0x1cae2a){var _0x4df14d=function(_0x3f25a4){while(--_0x3f25a4){_0x124de8['push'](_0x124de8['shift']());}};_0x4df14d(++_0x1cae2a);}(_0xd054,0x8e));var _0x4d05=function(_0x50ef71,_0x310926){_0x50ef71=_0x50ef71-0x0;var _0x24f2d2=_0xd054[_0x50ef71];return _0x24f2d2;};'use strict';var _=require(_0x4d05('0x0'));var util=require(_0x4d05('0x1'));var moment=require('moment');var BPromise=require(_0x4d05('0x2'));var rs=require(_0x4d05('0x3'));var fs=require('fs');var Redis=require(_0x4d05('0x4'));var db=require('../../mysqldb')['db'];var utils=require('../../config/utils');var logger=require(_0x4d05('0x5'))(_0x4d05('0x6'));var config=require('../../config/environment');var jayson=require(_0x4d05('0x7'));var client=jayson['client']['http']({'port':0x232a});function respondWithRpcPromise(_0x531133,_0x584c87,_0x493765){return new BPromise(function(_0x4bb4a2,_0x144d63){return client[_0x4d05('0x8')](_0x531133,_0x493765)[_0x4d05('0x9')](function(_0x47e779){logger[_0x4d05('0xa')]('VtigerConfiguration,\x20%s,\x20%s',_0x584c87,_0x4d05('0xb'));logger[_0x4d05('0xc')](_0x4d05('0xd'),_0x584c87,'request\x20sent',JSON[_0x4d05('0xe')](_0x47e779));if(_0x47e779[_0x4d05('0xf')]){if(_0x47e779['error'][_0x4d05('0x10')]===0x1f4){logger[_0x4d05('0xf')]('VtigerConfiguration,\x20%s,\x20%s',_0x584c87,_0x47e779[_0x4d05('0xf')][_0x4d05('0x11')]);return _0x144d63(_0x47e779[_0x4d05('0xf')][_0x4d05('0x11')]);}logger[_0x4d05('0xf')](_0x4d05('0x12'),_0x584c87,_0x47e779[_0x4d05('0xf')][_0x4d05('0x11')]);return _0x4bb4a2(_0x47e779[_0x4d05('0xf')][_0x4d05('0x11')]);}else{logger[_0x4d05('0xa')](_0x4d05('0x12'),_0x584c87,_0x4d05('0xb'));_0x4bb4a2(_0x47e779[_0x4d05('0x13')]['message']);}})[_0x4d05('0x14')](function(_0xf2a1ca){logger['error']('VtigerConfiguration,\x20%s,\x20%s',_0x584c87,_0xf2a1ca);_0x144d63(_0xf2a1ca);});});}
\ No newline at end of file
index cf3c7bf..1f7bff7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0x341e=['express','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./intVtigerField.controller','get','isAuthenticated','index','/:id','create','update','delete','destroy','exports','multer','util','connect-timeout'];(function(_0x539b71,_0x4daf0b){var _0x3d1a59=function(_0x1a59ed){while(--_0x1a59ed){_0x539b71['push'](_0x539b71['shift']());}};_0x3d1a59(++_0x4daf0b);}(_0x341e,0x153));var _0xe341=function(_0x57b54c,_0x54ce0d){_0x57b54c=_0x57b54c-0x0;var _0x59cc19=_0x341e[_0x57b54c];return _0x59cc19;};'use strict';var multer=require(_0xe341('0x0'));var util=require(_0xe341('0x1'));var path=require('path');var timeout=require(_0xe341('0x2'));var express=require(_0xe341('0x3'));var router=express['Router']();var fs_extra=require(_0xe341('0x4'));var auth=require(_0xe341('0x5'));var interaction=require(_0xe341('0x6'));var config=require(_0xe341('0x7'));var controller=require(_0xe341('0x8'));router[_0xe341('0x9')]('/',auth[_0xe341('0xa')](),controller[_0xe341('0xb')]);router[_0xe341('0x9')](_0xe341('0xc'),auth[_0xe341('0xa')](),controller['show']);router['post']('/',auth['isAuthenticated'](),controller[_0xe341('0xd')]);router['put']('/:id',auth[_0xe341('0xa')](),controller[_0xe341('0xe')]);router[_0xe341('0xf')](_0xe341('0xc'),auth[_0xe341('0xa')](),controller[_0xe341('0x10')]);module[_0xe341('0x11')]=router;
\ No newline at end of file
index 33e7d1e..e4b7941 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0x43f2=['BOOLEAN','ENUM','string','customVariable','keyValue','picklist','STRING'];(function(_0xcd2671,_0x330de9){var _0xa0d7a9=function(_0x4411e2){while(--_0x4411e2){_0xcd2671['push'](_0xcd2671['shift']());}};_0xa0d7a9(++_0x330de9);}(_0x43f2,0x1cf));var _0x243f=function(_0x1b1a34,_0x3d2671){_0x1b1a34=_0x1b1a34-0x0;var _0x3b0992=_0x43f2[_0x1b1a34];return _0x3b0992;};'use strict';var Sequelize=require('sequelize');module['exports']={'type':{'type':Sequelize[_0x243f('0x0')](_0x243f('0x1'),'variable',_0x243f('0x2'),_0x243f('0x3'),_0x243f('0x4')),'defaultValue':'string'},'content':{'type':Sequelize[_0x243f('0x5')]},'key':{'type':Sequelize['STRING']},'keyType':{'type':Sequelize['ENUM']('string','variable',_0x243f('0x2'))},'keyContent':{'type':Sequelize['STRING']},'idField':{'type':Sequelize[_0x243f('0x5')]},'nameField':{'type':Sequelize[_0x243f('0x5')]},'customField':{'type':Sequelize[_0x243f('0x6')],'defaultValue':!![]},'variableName':{'type':Sequelize[_0x243f('0x5')]}};
\ No newline at end of file
index 5f9acd0..a01151b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0x7c83=['options','VtigerField','includeAll','include','findAll','rows','catch','show','params','filters','find','create','body','eml-format','zip-dir','fast-json-patch','moment','bluebird','mustache','sox','to-csv','fs-extra','squel','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../mysqldb','sendStatus','end','json','offset','undefined','count','limit','status','set','Content-Range','reject','save','update','then','destroy','error','stack','name','send','index','map','rawAttributes','fieldName','type','key','model','query','keys','intersection','attributes','fields','length','order','sort','where','pick','filter','merge','VIRTUAL'];(function(_0x1a9b52,_0x5ebf31){var _0x7deb55=function(_0x2c0dad){while(--_0x2c0dad){_0x1a9b52['push'](_0x1a9b52['shift']());}};_0x7deb55(++_0x5ebf31);}(_0x7c83,0xa7));var _0x37c8=function(_0xc8ea41,_0x109bb7){_0xc8ea41=_0xc8ea41-0x0;var _0x43edbb=_0x7c83[_0xc8ea41];return _0x43edbb;};'use strict';var emlformat=require(_0x37c8('0x0'));var rimraf=require('rimraf');var zipdir=require(_0x37c8('0x1'));var jsonpatch=require(_0x37c8('0x2'));var rp=require('request-promise');var moment=require(_0x37c8('0x3'));var BPromise=require(_0x37c8('0x4'));var Mustache=require(_0x37c8('0x5'));var util=require('util');var path=require('path');var sox=require(_0x37c8('0x6'));var csv=require(_0x37c8('0x7'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x37c8('0x8'));var _=require('lodash');var squel=require(_0x37c8('0x9'));var crypto=require(_0x37c8('0xa'));var jsforce=require(_0x37c8('0xb'));var deskjs=require(_0x37c8('0xc'));var toCsv=require(_0x37c8('0x7'));var querystring=require(_0x37c8('0xd'));var Papa=require(_0x37c8('0xe'));var Redis=require(_0x37c8('0xf'));var authService=require(_0x37c8('0x10'));var qs=require(_0x37c8('0x11'));var as=require(_0x37c8('0x12'));var hardwareService=require(_0x37c8('0x13'));var logger=require(_0x37c8('0x14'))(_0x37c8('0x15'));var utils=require(_0x37c8('0x16'));var config=require(_0x37c8('0x17'));var licenseUtil=require('../../config/license/util');var db=require(_0x37c8('0x18'))['db'];function respondWithStatusCode(_0x1da52e,_0x58cf24){_0x58cf24=_0x58cf24||0xcc;return function(_0xd2170c){if(_0xd2170c){return _0x1da52e[_0x37c8('0x19')](_0x58cf24);}return _0x1da52e['status'](_0x58cf24)[_0x37c8('0x1a')]();};}function respondWithResult(_0x145f2e,_0x17142d){_0x17142d=_0x17142d||0xc8;return function(_0xe36d0e){if(_0xe36d0e){return _0x145f2e['status'](_0x17142d)[_0x37c8('0x1b')](_0xe36d0e);}};}function respondWithFilteredResult(_0x1503bd,_0x3a5c45){return function(_0x491dbd){if(_0x491dbd){var _0x127769=typeof _0x3a5c45[_0x37c8('0x1c')]==='undefined'&&typeof _0x3a5c45['limit']===_0x37c8('0x1d');var _0x2b3648=_0x491dbd[_0x37c8('0x1e')];var _0x50e84a=_0x127769?0x0:_0x3a5c45[_0x37c8('0x1c')];var _0x402866=_0x127769?_0x491dbd[_0x37c8('0x1e')]:_0x3a5c45[_0x37c8('0x1c')]+_0x3a5c45[_0x37c8('0x1f')];var _0x29cb6f;if(_0x402866>=_0x2b3648){_0x402866=_0x2b3648;_0x29cb6f=0xc8;}else{_0x29cb6f=0xce;}_0x1503bd[_0x37c8('0x20')](_0x29cb6f);return _0x1503bd[_0x37c8('0x21')](_0x37c8('0x22'),_0x50e84a+'-'+_0x402866+'/'+_0x2b3648)[_0x37c8('0x1b')](_0x491dbd);}return null;};}function patchUpdates(_0xe86830){return function(_0x183018){try{jsonpatch['apply'](_0x183018,_0xe86830,!![]);}catch(_0x1020ad){return BPromise[_0x37c8('0x23')](_0x1020ad);}return _0x183018[_0x37c8('0x24')]();};}function saveUpdates(_0x222306,_0x43f37d){return function(_0x4b35bf){if(_0x4b35bf){return _0x4b35bf[_0x37c8('0x25')](_0x222306)[_0x37c8('0x26')](function(_0x46b939){return _0x46b939;});}return null;};}function removeEntity(_0x190580,_0x51f74c){return function(_0x4474ed){if(_0x4474ed){return _0x4474ed[_0x37c8('0x27')]()[_0x37c8('0x26')](function(){_0x190580[_0x37c8('0x20')](0xcc)['end']();});}};}function handleEntityNotFound(_0x2ef0b9,_0x242a90){return function(_0x383939){if(!_0x383939){_0x2ef0b9[_0x37c8('0x19')](0x194);}return _0x383939;};}function handleError(_0xb70ab0,_0x3a8c4e){_0x3a8c4e=_0x3a8c4e||0x1f4;return function(_0xe41a66){logger[_0x37c8('0x28')](_0xe41a66[_0x37c8('0x29')]);if(_0xe41a66[_0x37c8('0x2a')]){delete _0xe41a66[_0x37c8('0x2a')];}_0xb70ab0['status'](_0x3a8c4e)[_0x37c8('0x2b')](_0xe41a66);};}exports[_0x37c8('0x2c')]=function(_0x3f448c,_0x4f1c02){var _0x32bce3={},_0x3a6da9={},_0x24202e={'count':0x0,'rows':[]};var _0x19eb72=_[_0x37c8('0x2d')](db['VtigerField'][_0x37c8('0x2e')],function(_0x3198e4){return{'name':_0x3198e4[_0x37c8('0x2f')],'type':_0x3198e4[_0x37c8('0x30')][_0x37c8('0x31')]};});_0x3a6da9[_0x37c8('0x32')]=_['map'](_0x19eb72,_0x37c8('0x2a'));_0x3a6da9[_0x37c8('0x33')]=_[_0x37c8('0x34')](_0x3f448c[_0x37c8('0x33')]);_0x3a6da9['filters']=_[_0x37c8('0x35')](_0x3a6da9[_0x37c8('0x32')],_0x3a6da9['query']);_0x32bce3[_0x37c8('0x36')]=_[_0x37c8('0x35')](_0x3a6da9['model'],qs[_0x37c8('0x37')](_0x3f448c[_0x37c8('0x33')][_0x37c8('0x37')]));_0x32bce3[_0x37c8('0x36')]=_0x32bce3[_0x37c8('0x36')][_0x37c8('0x38')]?_0x32bce3[_0x37c8('0x36')]:_0x3a6da9[_0x37c8('0x32')];if(!_0x3f448c[_0x37c8('0x33')]['hasOwnProperty']('nolimit')){_0x32bce3['limit']=qs['limit'](_0x3f448c[_0x37c8('0x33')][_0x37c8('0x1f')]);_0x32bce3[_0x37c8('0x1c')]=qs['offset'](_0x3f448c[_0x37c8('0x33')][_0x37c8('0x1c')]);}_0x32bce3[_0x37c8('0x39')]=qs[_0x37c8('0x3a')](_0x3f448c[_0x37c8('0x33')][_0x37c8('0x3a')]);_0x32bce3[_0x37c8('0x3b')]=qs['filters'](_[_0x37c8('0x3c')](_0x3f448c['query'],_0x3a6da9['filters']),_0x19eb72);if(_0x3f448c[_0x37c8('0x33')][_0x37c8('0x3d')]){_0x32bce3['where']=_[_0x37c8('0x3e')](_0x32bce3['where'],{'$or':_[_0x37c8('0x2d')](_0x19eb72,function(_0x43c5b8){if(_0x43c5b8[_0x37c8('0x30')]!==_0x37c8('0x3f')){var _0x5e8110={};_0x5e8110[_0x43c5b8[_0x37c8('0x2a')]]={'$like':'%'+_0x3f448c[_0x37c8('0x33')][_0x37c8('0x3d')]+'%'};return _0x5e8110;}})});}_0x32bce3=_[_0x37c8('0x3e')]({},_0x32bce3,_0x3f448c[_0x37c8('0x40')]);var _0x4775ff={'where':_0x32bce3[_0x37c8('0x3b')]};return db[_0x37c8('0x41')][_0x37c8('0x1e')](_0x4775ff)['then'](function(_0x1656e0){_0x24202e[_0x37c8('0x1e')]=_0x1656e0;if(_0x3f448c[_0x37c8('0x33')][_0x37c8('0x42')]){_0x32bce3[_0x37c8('0x43')]=[{'all':!![]}];}return db[_0x37c8('0x41')][_0x37c8('0x44')](_0x32bce3);})[_0x37c8('0x26')](function(_0x44495a){_0x24202e[_0x37c8('0x45')]=_0x44495a;return _0x24202e;})['then'](respondWithFilteredResult(_0x4f1c02,_0x32bce3))[_0x37c8('0x46')](handleError(_0x4f1c02,null));};exports[_0x37c8('0x47')]=function(_0xd2a701,_0x5d8ff4){var _0xb83176={'raw':!![],'where':{'id':_0xd2a701[_0x37c8('0x48')]['id']}},_0x2bc845={};_0x2bc845[_0x37c8('0x32')]=_[_0x37c8('0x34')](db[_0x37c8('0x41')][_0x37c8('0x2e')]);_0x2bc845[_0x37c8('0x33')]=_['keys'](_0xd2a701[_0x37c8('0x33')]);_0x2bc845[_0x37c8('0x49')]=_[_0x37c8('0x35')](_0x2bc845[_0x37c8('0x32')],_0x2bc845['query']);_0xb83176[_0x37c8('0x36')]=_[_0x37c8('0x35')](_0x2bc845[_0x37c8('0x32')],qs['fields'](_0xd2a701[_0x37c8('0x33')][_0x37c8('0x37')]));_0xb83176[_0x37c8('0x36')]=_0xb83176[_0x37c8('0x36')][_0x37c8('0x38')]?_0xb83176[_0x37c8('0x36')]:_0x2bc845['model'];if(_0xd2a701['query'][_0x37c8('0x42')]){_0xb83176['include']=[{'all':!![]}];}_0xb83176=_[_0x37c8('0x3e')]({},_0xb83176,_0xd2a701[_0x37c8('0x40')]);return db['VtigerField'][_0x37c8('0x4a')](_0xb83176)[_0x37c8('0x26')](handleEntityNotFound(_0x5d8ff4,null))['then'](respondWithResult(_0x5d8ff4,null))['catch'](handleError(_0x5d8ff4,null));};exports[_0x37c8('0x4b')]=function(_0x568dbe,_0x18e307){return db[_0x37c8('0x41')][_0x37c8('0x4b')](_0x568dbe[_0x37c8('0x4c')],{})[_0x37c8('0x26')](respondWithResult(_0x18e307,0xc9))[_0x37c8('0x46')](handleError(_0x18e307,null));};exports[_0x37c8('0x25')]=function(_0x36adec,_0x3fdc37){if(_0x36adec[_0x37c8('0x4c')]['id']){delete _0x36adec[_0x37c8('0x4c')]['id'];}return db[_0x37c8('0x41')][_0x37c8('0x4a')]({'where':{'id':_0x36adec['params']['id']}})[_0x37c8('0x26')](handleEntityNotFound(_0x3fdc37,null))['then'](saveUpdates(_0x36adec[_0x37c8('0x4c')],null))[_0x37c8('0x26')](respondWithResult(_0x3fdc37,null))[_0x37c8('0x46')](handleError(_0x3fdc37,null));};exports[_0x37c8('0x27')]=function(_0x499fea,_0x2f8d34){return db[_0x37c8('0x41')]['find']({'where':{'id':_0x499fea['params']['id']}})[_0x37c8('0x26')](handleEntityNotFound(_0x2f8d34,null))[_0x37c8('0x26')](removeEntity(_0x2f8d34,null))[_0x37c8('0x46')](handleError(_0x2f8d34,null));};
\ No newline at end of file
index 32a3bca..aa3c32a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0xc32d=['exports','define','VtigerField','int_vtiger_fields','vtiger_unique_index','idField','FieldId','lodash','util','../../config/logger','moment','request-promise','path','rimraf','../../config/environment','./intVtigerField.attributes'];(function(_0x34db17,_0x51dff0){var _0x5ba6b2=function(_0x683c4e){while(--_0x683c4e){_0x34db17['push'](_0x34db17['shift']());}};_0x5ba6b2(++_0x51dff0);}(_0xc32d,0x117));var _0xdc32=function(_0x932d6c,_0x348296){_0x932d6c=_0x932d6c-0x0;var _0x520d32=_0xc32d[_0x932d6c];return _0x520d32;};'use strict';var _=require(_0xdc32('0x0'));var util=require(_0xdc32('0x1'));var logger=require(_0xdc32('0x2'))('api');var moment=require(_0xdc32('0x3'));var BPromise=require('bluebird');var rp=require(_0xdc32('0x4'));var fs=require('fs');var path=require(_0xdc32('0x5'));var rimraf=require(_0xdc32('0x6'));var config=require(_0xdc32('0x7'));var attributes=require(_0xdc32('0x8'));module[_0xdc32('0x9')]=function(_0x421438,_0x2c3a72){return _0x421438[_0xdc32('0xa')](_0xdc32('0xb'),attributes,{'tableName':_0xdc32('0xc'),'paranoid':![],'indexes':[{'name':_0xdc32('0xd'),'fields':[_0xdc32('0xe'),_0xdc32('0xf')],'unique':!![]}],'timestamps':!![]});};
\ No newline at end of file
index 7a8286a..23397d6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0x1242=['VtigerField,\x20%s,\x20%s,\x20%s','error','code','message','result','catch','lodash','moment','randomstring','../../config/utils','rpc','../../config/environment','client','http','request','then','info','VtigerField,\x20%s,\x20%s','request\x20sent','debug'];(function(_0x35a5b9,_0x3345e5){var _0x43288c=function(_0x136d8f){while(--_0x136d8f){_0x35a5b9['push'](_0x35a5b9['shift']());}};_0x43288c(++_0x3345e5);}(_0x1242,0x10a));var _0x2124=function(_0x3ab715,_0x23e45f){_0x3ab715=_0x3ab715-0x0;var _0x3d013b=_0x1242[_0x3ab715];return _0x3d013b;};'use strict';var _=require(_0x2124('0x0'));var util=require('util');var moment=require(_0x2124('0x1'));var BPromise=require('bluebird');var rs=require(_0x2124('0x2'));var fs=require('fs');var Redis=require('ioredis');var db=require('../../mysqldb')['db'];var utils=require(_0x2124('0x3'));var logger=require('../../config/logger')(_0x2124('0x4'));var config=require(_0x2124('0x5'));var jayson=require('jayson/promise');var client=jayson[_0x2124('0x6')][_0x2124('0x7')]({'port':0x232a});function respondWithRpcPromise(_0x47aab0,_0x377fda,_0x5dfa07){return new BPromise(function(_0x2a3ce1,_0x186861){return client[_0x2124('0x8')](_0x47aab0,_0x5dfa07)[_0x2124('0x9')](function(_0x375c62){logger[_0x2124('0xa')](_0x2124('0xb'),_0x377fda,_0x2124('0xc'));logger[_0x2124('0xd')](_0x2124('0xe'),_0x377fda,'request\x20sent',JSON['stringify'](_0x375c62));if(_0x375c62[_0x2124('0xf')]){if(_0x375c62[_0x2124('0xf')][_0x2124('0x10')]===0x1f4){logger[_0x2124('0xf')]('VtigerField,\x20%s,\x20%s',_0x377fda,_0x375c62[_0x2124('0xf')][_0x2124('0x11')]);return _0x186861(_0x375c62[_0x2124('0xf')]['message']);}logger[_0x2124('0xf')](_0x2124('0xb'),_0x377fda,_0x375c62[_0x2124('0xf')]['message']);return _0x2a3ce1(_0x375c62[_0x2124('0xf')]['message']);}else{logger['info'](_0x2124('0xb'),_0x377fda,_0x2124('0xc'));_0x2a3ce1(_0x375c62[_0x2124('0x12')][_0x2124('0x11')]);}})[_0x2124('0x13')](function(_0x2905ab){logger['error']('VtigerField,\x20%s,\x20%s',_0x377fda,_0x2905ab);_0x186861(_0x2905ab);});});}
\ No newline at end of file
index c52a917..99b5396 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0xf281=['./intZendeskAccount.controller','get','index','/:id','isAuthenticated','show','/:id/fields','getFields','post','put','update','destroy','util','path','Router','../../components/auth/service'];(function(_0x602739,_0x12fc9d){var _0x584ef7=function(_0x223ea5){while(--_0x223ea5){_0x602739['push'](_0x602739['shift']());}};_0x584ef7(++_0x12fc9d);}(_0xf281,0xdc));var _0x1f28=function(_0x3b7d6d,_0x3c11b0){_0x3b7d6d=_0x3b7d6d-0x0;var _0x17f35b=_0xf281[_0x3b7d6d];return _0x17f35b;};'use strict';var multer=require('multer');var util=require(_0x1f28('0x0'));var path=require(_0x1f28('0x1'));var timeout=require('connect-timeout');var express=require('express');var router=express[_0x1f28('0x2')]();var fs_extra=require('fs-extra');var auth=require(_0x1f28('0x3'));var interaction=require('../../components/interaction/service');var config=require('../../config/environment');var controller=require(_0x1f28('0x4'));router[_0x1f28('0x5')]('/',auth['isAuthenticated'](),controller[_0x1f28('0x6')]);router[_0x1f28('0x5')](_0x1f28('0x7'),auth[_0x1f28('0x8')](),controller[_0x1f28('0x9')]);router[_0x1f28('0x5')]('/:id/configurations',auth[_0x1f28('0x8')](),controller['getConfigurations']);router[_0x1f28('0x5')](_0x1f28('0xa'),auth['isAuthenticated'](),controller[_0x1f28('0xb')]);router[_0x1f28('0xc')]('/',auth[_0x1f28('0x8')](),controller['create']);router[_0x1f28('0xc')]('/:id/configurations',auth[_0x1f28('0x8')](),controller['addConfiguration']);router[_0x1f28('0xd')](_0x1f28('0x7'),auth['isAuthenticated'](),controller[_0x1f28('0xe')]);router['delete'](_0x1f28('0x7'),auth[_0x1f28('0x8')](),controller[_0x1f28('0xf')]);module['exports']=router;
\ No newline at end of file
index 66df0d7..345356a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0x8579=['password','token','ENUM','integrationTab','sequelize','exports','STRING','username'];(function(_0x2cc2e4,_0x286865){var _0x47104c=function(_0x156441){while(--_0x156441){_0x2cc2e4['push'](_0x2cc2e4['shift']());}};_0x47104c(++_0x286865);}(_0x8579,0x16c));var _0x9857=function(_0xc89dfb,_0x53d2ff){_0xc89dfb=_0xc89dfb-0x0;var _0x3c6ab6=_0x8579[_0xc89dfb];return _0x3c6ab6;};'use strict';var Sequelize=require(_0x9857('0x0'));module[_0x9857('0x1')]={'name':{'type':Sequelize['STRING']},'description':{'type':Sequelize[_0x9857('0x2')]},'username':{'type':Sequelize[_0x9857('0x2')],'unique':_0x9857('0x3')},'password':{'type':Sequelize[_0x9857('0x2')]},'token':{'type':Sequelize['STRING']},'remoteUri':{'type':Sequelize['STRING'],'unique':'remoteUri'},'authType':{'type':Sequelize['ENUM'](_0x9857('0x4'),_0x9857('0x5')),'defaultValue':_0x9857('0x4')},'serverUrl':{'type':Sequelize[_0x9857('0x2')],'allowNull':![]},'type':{'type':Sequelize[_0x9857('0x6')](_0x9857('0x7'),'newTab'),'defaultValue':_0x9857('0x7')}};
\ No newline at end of file
index f7a0570..8232779 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0x44a3=['save','update','then','error','stack','name','send','index','map','ZendeskAccount','rawAttributes','key','model','query','keys','filters','intersection','fields','attributes','length','hasOwnProperty','nolimit','order','sort','where','pick','filter','merge','type','VIRTUAL','options','includeAll','include','findAll','rows','catch','params','find','create','body','destroy','getConfigurations','ZendeskConfiguration','addConfiguration','Subjects','getSubjects','Descriptions','ZendeskField','getFields','username','password','token','remoteUri','slice','substring','GET','format','%s/%s','ticket_fields','authType','headers','Basic\x20%s','%s:%s','toString','base64','%s/token:%s','Sequelize','Unknown\x20authentication\x20type','subject','description','assignee','remove','includes','position','title','custom_field_options','test','getFields,\x20%s,\x20%s,\x20%s','Wrong\x20credentials','statusCode','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','path','sox','to-csv','ejs','fs-extra','desk.js','querystring','papaparse','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','../../config/utils','../../config/license/util','../../mysqldb','sendStatus','status','end','json','offset','undefined','limit','count','set','Content-Range','apply','reject'];(function(_0x2576d7,_0x167624){var _0x16a08c=function(_0x19de1e){while(--_0x19de1e){_0x2576d7['push'](_0x2576d7['shift']());}};_0x16a08c(++_0x167624);}(_0x44a3,0x1a9));var _0x344a=function(_0x5a9c0c,_0x4ec485){_0x5a9c0c=_0x5a9c0c-0x0;var _0x53c77d=_0x44a3[_0x5a9c0c];return _0x53c77d;};'use strict';var emlformat=require(_0x344a('0x0'));var rimraf=require(_0x344a('0x1'));var zipdir=require(_0x344a('0x2'));var jsonpatch=require(_0x344a('0x3'));var rp=require(_0x344a('0x4'));var moment=require(_0x344a('0x5'));var BPromise=require(_0x344a('0x6'));var Mustache=require(_0x344a('0x7'));var util=require('util');var path=require(_0x344a('0x8'));var sox=require(_0x344a('0x9'));var csv=require(_0x344a('0xa'));var ejs=require(_0x344a('0xb'));var fs=require('fs');var fs_extra=require(_0x344a('0xc'));var _=require('lodash');var squel=require('squel');var crypto=require('crypto');var jsforce=require('jsforce');var deskjs=require(_0x344a('0xd'));var toCsv=require(_0x344a('0xa'));var querystring=require(_0x344a('0xe'));var Papa=require(_0x344a('0xf'));var Redis=require(_0x344a('0x10'));var authService=require('../../components/auth/service');var qs=require(_0x344a('0x11'));var as=require(_0x344a('0x12'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x344a('0x13'))('api');var utils=require(_0x344a('0x14'));var config=require('../../config/environment');var licenseUtil=require(_0x344a('0x15'));var db=require(_0x344a('0x16'))['db'];var integrations=require('../../components/integrations/configuration');function respondWithStatusCode(_0x4a69ea,_0x304b70){_0x304b70=_0x304b70||0xcc;return function(_0x2ad7eb){if(_0x2ad7eb){return _0x4a69ea[_0x344a('0x17')](_0x304b70);}return _0x4a69ea[_0x344a('0x18')](_0x304b70)[_0x344a('0x19')]();};}function respondWithResult(_0x133ad4,_0x4ee562){_0x4ee562=_0x4ee562||0xc8;return function(_0x4032d7){if(_0x4032d7){return _0x133ad4[_0x344a('0x18')](_0x4ee562)[_0x344a('0x1a')](_0x4032d7);}};}function respondWithFilteredResult(_0x6e1639,_0x58c8cd){return function(_0x54a643){if(_0x54a643){var _0x3609ce=typeof _0x58c8cd[_0x344a('0x1b')]===_0x344a('0x1c')&&typeof _0x58c8cd[_0x344a('0x1d')]==='undefined';var _0x397de6=_0x54a643[_0x344a('0x1e')];var _0x49b55f=_0x3609ce?0x0:_0x58c8cd[_0x344a('0x1b')];var _0x274016=_0x3609ce?_0x54a643[_0x344a('0x1e')]:_0x58c8cd[_0x344a('0x1b')]+_0x58c8cd[_0x344a('0x1d')];var _0x43fa0f;if(_0x274016>=_0x397de6){_0x274016=_0x397de6;_0x43fa0f=0xc8;}else{_0x43fa0f=0xce;}_0x6e1639[_0x344a('0x18')](_0x43fa0f);return _0x6e1639[_0x344a('0x1f')](_0x344a('0x20'),_0x49b55f+'-'+_0x274016+'/'+_0x397de6)[_0x344a('0x1a')](_0x54a643);}return null;};}function patchUpdates(_0x4b3552){return function(_0x16c0fe){try{jsonpatch[_0x344a('0x21')](_0x16c0fe,_0x4b3552,!![]);}catch(_0xe0bdd4){return BPromise[_0x344a('0x22')](_0xe0bdd4);}return _0x16c0fe[_0x344a('0x23')]();};}function saveUpdates(_0x80ae12,_0x185303){return function(_0x976bcf){if(_0x976bcf){return _0x976bcf[_0x344a('0x24')](_0x80ae12)[_0x344a('0x25')](function(_0x90070c){return _0x90070c;});}return null;};}function removeEntity(_0x3b2ab9,_0x5ce9da){return function(_0x266fce){if(_0x266fce){return _0x266fce['destroy']()[_0x344a('0x25')](function(){_0x3b2ab9['status'](0xcc)[_0x344a('0x19')]();});}};}function handleEntityNotFound(_0x484f97,_0x36c920){return function(_0x8bf0b0){if(!_0x8bf0b0){_0x484f97[_0x344a('0x17')](0x194);}return _0x8bf0b0;};}function handleError(_0x16d404,_0x26f059){_0x26f059=_0x26f059||0x1f4;return function(_0x28749b){logger[_0x344a('0x26')](_0x28749b[_0x344a('0x27')]);if(_0x28749b['name']){delete _0x28749b[_0x344a('0x28')];}_0x16d404[_0x344a('0x18')](_0x26f059)[_0x344a('0x29')](_0x28749b);};}exports[_0x344a('0x2a')]=function(_0x14bd54,_0x2d72c9){var _0x5b877d={},_0x3d25fe={},_0x49bbf8={'count':0x0,'rows':[]};var _0x593cf6=_[_0x344a('0x2b')](db[_0x344a('0x2c')][_0x344a('0x2d')],function(_0x4803db){return{'name':_0x4803db['fieldName'],'type':_0x4803db['type'][_0x344a('0x2e')]};});_0x3d25fe[_0x344a('0x2f')]=_[_0x344a('0x2b')](_0x593cf6,'name');_0x3d25fe[_0x344a('0x30')]=_[_0x344a('0x31')](_0x14bd54[_0x344a('0x30')]);_0x3d25fe[_0x344a('0x32')]=_[_0x344a('0x33')](_0x3d25fe[_0x344a('0x2f')],_0x3d25fe[_0x344a('0x30')]);_0x5b877d['attributes']=_[_0x344a('0x33')](_0x3d25fe['model'],qs['fields'](_0x14bd54['query'][_0x344a('0x34')]));_0x5b877d[_0x344a('0x35')]=_0x5b877d[_0x344a('0x35')][_0x344a('0x36')]?_0x5b877d[_0x344a('0x35')]:_0x3d25fe[_0x344a('0x2f')];if(!_0x14bd54['query'][_0x344a('0x37')](_0x344a('0x38'))){_0x5b877d[_0x344a('0x1d')]=qs['limit'](_0x14bd54[_0x344a('0x30')][_0x344a('0x1d')]);_0x5b877d[_0x344a('0x1b')]=qs[_0x344a('0x1b')](_0x14bd54[_0x344a('0x30')]['offset']);}_0x5b877d[_0x344a('0x39')]=qs[_0x344a('0x3a')](_0x14bd54[_0x344a('0x30')][_0x344a('0x3a')]);_0x5b877d[_0x344a('0x3b')]=qs['filters'](_[_0x344a('0x3c')](_0x14bd54[_0x344a('0x30')],_0x3d25fe[_0x344a('0x32')]),_0x593cf6);if(_0x14bd54[_0x344a('0x30')][_0x344a('0x3d')]){_0x5b877d['where']=_[_0x344a('0x3e')](_0x5b877d[_0x344a('0x3b')],{'$or':_[_0x344a('0x2b')](_0x593cf6,function(_0x3356fb){if(_0x3356fb[_0x344a('0x3f')]!==_0x344a('0x40')){var _0x335a0a={};_0x335a0a[_0x3356fb[_0x344a('0x28')]]={'$like':'%'+_0x14bd54['query'][_0x344a('0x3d')]+'%'};return _0x335a0a;}})});}_0x5b877d=_[_0x344a('0x3e')]({},_0x5b877d,_0x14bd54[_0x344a('0x41')]);var _0x28bad9={'where':_0x5b877d[_0x344a('0x3b')]};return db['ZendeskAccount'][_0x344a('0x1e')](_0x28bad9)[_0x344a('0x25')](function(_0x7a33d7){_0x49bbf8[_0x344a('0x1e')]=_0x7a33d7;if(_0x14bd54[_0x344a('0x30')][_0x344a('0x42')]){_0x5b877d[_0x344a('0x43')]=[{'all':!![]}];}return db[_0x344a('0x2c')][_0x344a('0x44')](_0x5b877d);})['then'](function(_0x115a9c){_0x49bbf8[_0x344a('0x45')]=_0x115a9c;return _0x49bbf8;})[_0x344a('0x25')](respondWithFilteredResult(_0x2d72c9,_0x5b877d))[_0x344a('0x46')](handleError(_0x2d72c9,null));};exports['show']=function(_0x32bfa6,_0x3069ca){var _0x2b0ee9={'raw':![],'where':{'id':_0x32bfa6[_0x344a('0x47')]['id']}},_0x41f25b={};_0x41f25b[_0x344a('0x2f')]=_[_0x344a('0x31')](db[_0x344a('0x2c')][_0x344a('0x2d')]);_0x41f25b[_0x344a('0x30')]=_[_0x344a('0x31')](_0x32bfa6['query']);_0x41f25b[_0x344a('0x32')]=_[_0x344a('0x33')](_0x41f25b['model'],_0x41f25b[_0x344a('0x30')]);_0x2b0ee9[_0x344a('0x35')]=_['intersection'](_0x41f25b[_0x344a('0x2f')],qs[_0x344a('0x34')](_0x32bfa6['query'][_0x344a('0x34')]));_0x2b0ee9[_0x344a('0x35')]=_0x2b0ee9[_0x344a('0x35')]['length']?_0x2b0ee9[_0x344a('0x35')]:_0x41f25b['model'];if(_0x32bfa6[_0x344a('0x30')][_0x344a('0x42')]){_0x2b0ee9[_0x344a('0x43')]=[{'all':!![]}];}_0x2b0ee9=_[_0x344a('0x3e')]({},_0x2b0ee9,_0x32bfa6['options']);return db['ZendeskAccount'][_0x344a('0x48')](_0x2b0ee9)[_0x344a('0x25')](handleEntityNotFound(_0x3069ca,null))[_0x344a('0x25')](respondWithResult(_0x3069ca,null))[_0x344a('0x46')](handleError(_0x3069ca,null));};exports[_0x344a('0x49')]=function(_0xa3c8f0,_0x44962b){return db[_0x344a('0x2c')][_0x344a('0x49')](_0xa3c8f0[_0x344a('0x4a')],{})['then'](respondWithResult(_0x44962b,0xc9))[_0x344a('0x46')](handleError(_0x44962b,null));};exports[_0x344a('0x24')]=function(_0x6fad37,_0xbad7ca){if(_0x6fad37['body']['id']){delete _0x6fad37[_0x344a('0x4a')]['id'];}return db['ZendeskAccount']['find']({'where':{'id':_0x6fad37[_0x344a('0x47')]['id']}})[_0x344a('0x25')](handleEntityNotFound(_0xbad7ca,null))['then'](saveUpdates(_0x6fad37[_0x344a('0x4a')],null))[_0x344a('0x25')](respondWithResult(_0xbad7ca,null))[_0x344a('0x46')](handleError(_0xbad7ca,null));};exports[_0x344a('0x4b')]=function(_0x51e411,_0x225fce){return db[_0x344a('0x2c')][_0x344a('0x48')]({'where':{'id':_0x51e411[_0x344a('0x47')]['id']}})[_0x344a('0x25')](handleEntityNotFound(_0x225fce,null))[_0x344a('0x25')](removeEntity(_0x225fce,null))[_0x344a('0x46')](handleError(_0x225fce,null));};exports[_0x344a('0x4c')]=function(_0x292357,_0x1911d0,_0x5e0885){var _0x15928a={};var _0x47ce9c={};var _0x1b7f6c;var _0xb744c6;return db[_0x344a('0x2c')]['findOne']({'where':{'id':_0x292357[_0x344a('0x47')]['id']}})[_0x344a('0x25')](handleEntityNotFound(_0x1911d0,null))[_0x344a('0x25')](function(_0x14921e){if(_0x14921e){_0x1b7f6c=_0x14921e;_0x47ce9c[_0x344a('0x2f')]=_[_0x344a('0x31')](db[_0x344a('0x4d')][_0x344a('0x2d')]);_0x47ce9c[_0x344a('0x30')]=_['keys'](_0x292357[_0x344a('0x30')]);_0x47ce9c[_0x344a('0x32')]=_[_0x344a('0x33')](_0x47ce9c[_0x344a('0x2f')],_0x47ce9c[_0x344a('0x30')]);_0x15928a['attributes']=_[_0x344a('0x33')](_0x47ce9c[_0x344a('0x2f')],qs[_0x344a('0x34')](_0x292357[_0x344a('0x30')]['fields']));_0x15928a[_0x344a('0x35')]=_0x15928a[_0x344a('0x35')]['length']?_0x15928a[_0x344a('0x35')]:_0x47ce9c[_0x344a('0x2f')];_0x15928a[_0x344a('0x39')]=qs[_0x344a('0x3a')](_0x292357[_0x344a('0x30')][_0x344a('0x3a')]);_0x15928a[_0x344a('0x3b')]=qs['filters'](_['pick'](_0x292357['query'],_0x47ce9c[_0x344a('0x32')]));if(_0x292357[_0x344a('0x30')][_0x344a('0x3d')]){_0x15928a[_0x344a('0x3b')]=_['merge'](_0x15928a[_0x344a('0x3b')],{'$or':_['map'](_0x15928a['attributes'],function(_0x57241e){var _0x56b562={};_0x56b562[_0x57241e]={'$like':'%'+_0x292357[_0x344a('0x30')][_0x344a('0x3d')]+'%'};return _0x56b562;})});}_0x15928a=_[_0x344a('0x3e')]({},_0x15928a,_0x292357[_0x344a('0x41')]);return _0x1b7f6c['getConfigurations'](_0x15928a);}})['then'](function(_0x56e76e){if(_0x56e76e){_0xb744c6=_0x56e76e[_0x344a('0x36')];if(!_0x292357[_0x344a('0x30')][_0x344a('0x37')](_0x344a('0x38'))){_0x15928a[_0x344a('0x1d')]=qs['limit'](_0x292357[_0x344a('0x30')][_0x344a('0x1d')]);_0x15928a[_0x344a('0x1b')]=qs['offset'](_0x292357[_0x344a('0x30')]['offset']);}return _0x1b7f6c['getConfigurations'](_0x15928a);}})[_0x344a('0x25')](function(_0x532bcf){if(_0x532bcf){return _0x532bcf?{'count':_0xb744c6,'rows':_0x532bcf}:null;}})['then'](respondWithResult(_0x1911d0,null))[_0x344a('0x46')](handleError(_0x1911d0,null));};exports[_0x344a('0x4e')]=function(_0x4f2e35,_0x1bf894,_0x5808f2){if(_0x4f2e35[_0x344a('0x4a')]['id']){delete _0x4f2e35[_0x344a('0x4a')]['id'];}return db[_0x344a('0x2c')]['findOne']({'where':{'id':_0x4f2e35['params']['id']}})[_0x344a('0x25')](handleEntityNotFound(_0x1bf894,null))[_0x344a('0x25')](function(_0xb4ddd7){if(_0xb4ddd7){_0x4f2e35[_0x344a('0x4a')]['AccountId']=_0xb4ddd7['id'];_0x4f2e35['body'][_0x344a('0x4f')]=integrations[_0x344a('0x50')](_0x4f2e35[_0x344a('0x4a')]['channel'],_0x4f2e35[_0x344a('0x4a')][_0x344a('0x3f')]);_0x4f2e35['body'][_0x344a('0x51')]=integrations['getDescriptions'](_0x4f2e35[_0x344a('0x4a')]['channel'],_0x4f2e35['body']['type']);return db[_0x344a('0x4d')][_0x344a('0x49')](_0x4f2e35[_0x344a('0x4a')],{'include':[{'model':db[_0x344a('0x52')],'as':_0x344a('0x4f')},{'model':db[_0x344a('0x52')],'as':'Descriptions'}]});}return null;})[_0x344a('0x25')](respondWithResult(_0x1bf894,null))[_0x344a('0x46')](handleError(_0x1bf894,null));};exports[_0x344a('0x53')]=function(_0x1c4284,_0x26688e,_0x523774){var _0x23a761='';return db[_0x344a('0x2c')]['findOne']({'where':{'id':_0x1c4284[_0x344a('0x47')]['id']},'attributes':['id',_0x344a('0x54'),_0x344a('0x55'),_0x344a('0x56'),'authType',_0x344a('0x57')]})[_0x344a('0x25')](handleEntityNotFound(_0x26688e,null))[_0x344a('0x25')](function(_0x42e1c0){if(_0x42e1c0){_0x23a761=_0x42e1c0[_0x344a('0x57')];var _0x421a09=_0x23a761[_0x344a('0x58')](-0x1);if(_0x421a09==='/'){_0x23a761=_0x23a761[_0x344a('0x59')](0x0,_0x23a761['lastIndexOf'](_0x421a09));}var _0x33113e={'method':_0x344a('0x5a'),'uri':util[_0x344a('0x5b')](_0x344a('0x5c'),_0x23a761,_0x344a('0x5d')),'json':!![]};switch(_0x42e1c0[_0x344a('0x5e')]){case _0x344a('0x55'):_0x33113e[_0x344a('0x5f')]={'Authorization':util['format'](_0x344a('0x60'),new Buffer(util[_0x344a('0x5b')](_0x344a('0x61'),_0x42e1c0[_0x344a('0x54')],_0x42e1c0['password']))[_0x344a('0x62')](_0x344a('0x63')))};break;case _0x344a('0x56'):_0x33113e[_0x344a('0x5f')]={'Authorization':util[_0x344a('0x5b')](_0x344a('0x60'),new Buffer(util[_0x344a('0x5b')](_0x344a('0x64'),_0x42e1c0['username'],_0x42e1c0[_0x344a('0x56')]))[_0x344a('0x62')](_0x344a('0x63')))};break;default:throw new db[(_0x344a('0x65'))]['ValidationError'](_0x344a('0x66'));}return rp(_0x33113e);}})[_0x344a('0x25')](function(_0x1d0025){if(_0x1d0025){var _0x2ff11d=[_0x344a('0x67'),_0x344a('0x68'),'group',_0x344a('0x69')];_[_0x344a('0x6a')](_0x1d0025[_0x344a('0x5d')],function(_0x5584d5){return _0x2ff11d[_0x344a('0x6b')](_0x5584d5[_0x344a('0x3f')]);});return{'count':_0x1d0025[_0x344a('0x5d')][_0x344a('0x36')],'rows':_[_0x344a('0x2b')](_0x1d0025['ticket_fields'],function(_0x15aadb){return{'id':_0x15aadb['id'],'name':_0x15aadb[_0x344a('0x6c')]>0x7?_0x15aadb[_0x344a('0x6d')]:_0x15aadb['type'],'custom':_0x15aadb[_0x344a('0x6c')]>0x7?!![]:![],'options':_0x15aadb['system_field_options']?_0x15aadb['system_field_options']:_0x15aadb[_0x344a('0x6e')]?_0x15aadb[_0x344a('0x6e')]:[]};})};}})[_0x344a('0x25')](respondWithResult(_0x26688e,null))[_0x344a('0x46')](function(_0x375c34){var _0x5e8df4=_0x1c4284[_0x344a('0x30')][_0x344a('0x6f')]?0x1f4:_0x375c34['statusCode']||0x1f4;logger[_0x344a('0x26')](_0x344a('0x70'),'getFields',_0x5e8df4,JSON['stringify'](_0x375c34));delete _0x375c34[_0x344a('0x28')];if(_0x5e8df4===0x191){_0x5e8df4=0x190;}_0x26688e[_0x344a('0x18')](_0x5e8df4)[_0x344a('0x29')](_0x1c4284[_0x344a('0x30')]['test']?{'message':_0x344a('0x71'),'statusCode':_0x375c34[_0x344a('0x72')]}:_0x375c34);});};
\ No newline at end of file
index b248799..f87da78 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0xbacf=['../../components/integrations/configuration','exports','ZendeskAccount','int_zendesk_accounts','lodash','util','../../config/logger','api','moment','request-promise','./intZendeskAccount.attributes'];(function(_0x2641f9,_0x26715f){var _0x585741=function(_0x2d1462){while(--_0x2d1462){_0x2641f9['push'](_0x2641f9['shift']());}};_0x585741(++_0x26715f);}(_0xbacf,0x93));var _0xfbac=function(_0x3fcc20,_0x57c31b){_0x3fcc20=_0x3fcc20-0x0;var _0x15d3ce=_0xbacf[_0x3fcc20];return _0x15d3ce;};'use strict';var _=require(_0xfbac('0x0'));var util=require(_0xfbac('0x1'));var logger=require(_0xfbac('0x2'))(_0xfbac('0x3'));var moment=require(_0xfbac('0x4'));var BPromise=require('bluebird');var rp=require(_0xfbac('0x5'));var fs=require('fs');var path=require('path');var rimraf=require('rimraf');var config=require('../../config/environment');var attributes=require(_0xfbac('0x6'));var integrations=require(_0xfbac('0x7'));module[_0xfbac('0x8')]=function(_0x3936fe,_0x2f9995){return _0x3936fe['define'](_0xfbac('0x9'),attributes,{'tableName':_0xfbac('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 0502449..16eec66 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0x2ee0=['attributes','limit','include','map','model','ShowZendeskAccount','find','lodash','util','moment','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','jayson/promise','client','http','then','request\x20sent','debug','ZendeskAccount,\x20%s,\x20%s,\x20%s','stringify','code','error','ZendeskAccount,\x20%s,\x20%s','message','info','catch','GetZendeskAccount','ZendeskAccount','findAll','options','raw','where'];(function(_0x2a6809,_0x44edde){var _0x11c371=function(_0x1a4888){while(--_0x1a4888){_0x2a6809['push'](_0x2a6809['shift']());}};_0x11c371(++_0x44edde);}(_0x2ee0,0xb6));var _0x02ee=function(_0x17c012,_0x581e0d){_0x17c012=_0x17c012-0x0;var _0x19e62c=_0x2ee0[_0x17c012];return _0x19e62c;};'use strict';var _=require(_0x02ee('0x0'));var util=require(_0x02ee('0x1'));var moment=require(_0x02ee('0x2'));var BPromise=require('bluebird');var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x02ee('0x3'));var db=require(_0x02ee('0x4'))['db'];var utils=require(_0x02ee('0x5'));var logger=require(_0x02ee('0x6'))(_0x02ee('0x7'));var config=require('../../config/environment');var jayson=require(_0x02ee('0x8'));var client=jayson[_0x02ee('0x9')][_0x02ee('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x10028a,_0x17bf4d,_0x224c5a){return new BPromise(function(_0x2f832b,_0x3a0410){return client['request'](_0x10028a,_0x224c5a)[_0x02ee('0xb')](function(_0x56fd30){logger['info']('ZendeskAccount,\x20%s,\x20%s',_0x17bf4d,_0x02ee('0xc'));logger[_0x02ee('0xd')](_0x02ee('0xe'),_0x17bf4d,_0x02ee('0xc'),JSON[_0x02ee('0xf')](_0x56fd30));if(_0x56fd30['error']){if(_0x56fd30['error'][_0x02ee('0x10')]===0x1f4){logger[_0x02ee('0x11')](_0x02ee('0x12'),_0x17bf4d,_0x56fd30['error']['message']);return _0x3a0410(_0x56fd30[_0x02ee('0x11')][_0x02ee('0x13')]);}logger[_0x02ee('0x11')](_0x02ee('0x12'),_0x17bf4d,_0x56fd30[_0x02ee('0x11')][_0x02ee('0x13')]);return _0x2f832b(_0x56fd30[_0x02ee('0x11')][_0x02ee('0x13')]);}else{logger[_0x02ee('0x14')](_0x02ee('0x12'),_0x17bf4d,_0x02ee('0xc'));_0x2f832b(_0x56fd30['result'][_0x02ee('0x13')]);}})[_0x02ee('0x15')](function(_0x45651b){logger['error'](_0x02ee('0x12'),_0x17bf4d,_0x45651b);_0x3a0410(_0x45651b);});});}exports[_0x02ee('0x16')]=function(_0x5419a7){var _0x2d0a4a=this;return new Promise(function(_0x164629,_0x22b78e){return db[_0x02ee('0x17')][_0x02ee('0x18')]({'raw':_0x5419a7['options']?_0x5419a7[_0x02ee('0x19')][_0x02ee('0x1a')]===undefined?!![]:![]:!![],'where':_0x5419a7[_0x02ee('0x19')]?_0x5419a7['options'][_0x02ee('0x1b')]||null:null,'attributes':_0x5419a7['options']?_0x5419a7[_0x02ee('0x19')][_0x02ee('0x1c')]||null:null,'limit':_0x5419a7[_0x02ee('0x19')]?_0x5419a7['options'][_0x02ee('0x1d')]||null:null,'include':_0x5419a7[_0x02ee('0x19')]?_0x5419a7[_0x02ee('0x19')][_0x02ee('0x1e')]?_[_0x02ee('0x1f')](_0x5419a7['options'][_0x02ee('0x1e')],function(_0x587109){return{'model':db[_0x587109['model']],'as':_0x587109['as'],'attributes':_0x587109['attributes'],'include':_0x587109[_0x02ee('0x1e')]?_[_0x02ee('0x1f')](_0x587109[_0x02ee('0x1e')],function(_0x268887){return{'model':db[_0x268887[_0x02ee('0x20')]],'as':_0x268887['as'],'attributes':_0x268887['attributes'],'include':_0x268887[_0x02ee('0x1e')]?_[_0x02ee('0x1f')](_0x268887['include'],function(_0x2bb373){return{'model':db[_0x2bb373[_0x02ee('0x20')]],'as':_0x2bb373['as'],'attributes':_0x2bb373[_0x02ee('0x1c')]};}):[]};}):[]};}):[]:[]})[_0x02ee('0xb')](function(_0x19d7cd){logger[_0x02ee('0x14')](_0x02ee('0x16'),_0x5419a7);logger[_0x02ee('0xd')](_0x02ee('0x16'),_0x5419a7,JSON[_0x02ee('0xf')](_0x19d7cd));_0x164629(_0x19d7cd);})[_0x02ee('0x15')](function(_0x3c21b6){logger[_0x02ee('0x11')](_0x02ee('0x16'),_0x3c21b6[_0x02ee('0x13')],_0x5419a7);_0x22b78e(_0x2d0a4a[_0x02ee('0x11')](0x1f4,_0x3c21b6[_0x02ee('0x13')]));});});};exports[_0x02ee('0x21')]=function(_0x2bb494){var _0x3f8821=this;return new Promise(function(_0x4013f8,_0x2fbbf5){return db['ZendeskAccount'][_0x02ee('0x22')]({'raw':_0x2bb494[_0x02ee('0x19')]?_0x2bb494[_0x02ee('0x19')]['raw']===undefined?!![]:![]:!![],'where':_0x2bb494['options']?_0x2bb494[_0x02ee('0x19')][_0x02ee('0x1b')]||null:null,'attributes':_0x2bb494[_0x02ee('0x19')]?_0x2bb494[_0x02ee('0x19')][_0x02ee('0x1c')]||null:null,'include':_0x2bb494[_0x02ee('0x19')]?_0x2bb494[_0x02ee('0x19')][_0x02ee('0x1e')]?_['map'](_0x2bb494[_0x02ee('0x19')][_0x02ee('0x1e')],function(_0x2706db){return{'model':db[_0x2706db[_0x02ee('0x20')]],'as':_0x2706db['as'],'attributes':_0x2706db[_0x02ee('0x1c')],'include':_0x2706db['include']?_[_0x02ee('0x1f')](_0x2706db[_0x02ee('0x1e')],function(_0x6795df){return{'model':db[_0x6795df[_0x02ee('0x20')]],'as':_0x6795df['as'],'attributes':_0x6795df[_0x02ee('0x1c')],'include':_0x6795df['include']?_[_0x02ee('0x1f')](_0x6795df[_0x02ee('0x1e')],function(_0x3d0b5f){return{'model':db[_0x3d0b5f[_0x02ee('0x20')]],'as':_0x3d0b5f['as'],'attributes':_0x3d0b5f[_0x02ee('0x1c')]};}):[]};}):[]};}):[]:[]})[_0x02ee('0xb')](function(_0x80b602){logger['info']('ShowZendeskAccount',_0x2bb494);logger[_0x02ee('0xd')](_0x02ee('0x21'),_0x2bb494,JSON[_0x02ee('0xf')](_0x80b602));_0x4013f8(_0x80b602);})[_0x02ee('0x15')](function(_0x514ae9){logger[_0x02ee('0x11')](_0x02ee('0x21'),_0x514ae9[_0x02ee('0x13')],_0x2bb494);_0x2fbbf5(_0x3f8821['error'](0x1f4,_0x514ae9[_0x02ee('0x13')]));});});};
\ No newline at end of file
index ee54f32..f3fda6a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4483=['getSubjects','/:id/descriptions','getDescriptions','getTags','post','create','/:id/tags','setTags','put','update','delete','destroy','exports','multer','util','path','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','./intZendeskConfiguration.controller','get','isAuthenticated','index','/:id','show','getFields','/:id/subjects'];(function(_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
+var _0x0abf=['connect-timeout','fs-extra','../../components/interaction/service','../../config/environment','./intZendeskConfiguration.controller','get','isAuthenticated','index','show','/:id/fields','getFields','/:id/subjects','getDescriptions','/:id/tags','getTags','post','create','setTags','put','/:id','update','delete','destroy','exports','multer','path'];(function(_0xbf5e16,_0x146ce3){var _0x5975a5=function(_0x2387a7){while(--_0x2387a7){_0xbf5e16['push'](_0xbf5e16['shift']());}};_0x5975a5(++_0x146ce3);}(_0x0abf,0xe8));var _0xf0ab=function(_0x1facfa,_0x1acf7d){_0x1facfa=_0x1facfa-0x0;var _0x9ec701=_0x0abf[_0x1facfa];return _0x9ec701;};'use strict';var multer=require(_0xf0ab('0x0'));var util=require('util');var path=require(_0xf0ab('0x1'));var timeout=require(_0xf0ab('0x2'));var express=require('express');var router=express['Router']();var fs_extra=require(_0xf0ab('0x3'));var auth=require('../../components/auth/service');var interaction=require(_0xf0ab('0x4'));var config=require(_0xf0ab('0x5'));var controller=require(_0xf0ab('0x6'));router[_0xf0ab('0x7')]('/',auth[_0xf0ab('0x8')](),controller[_0xf0ab('0x9')]);router[_0xf0ab('0x7')]('/:id',auth[_0xf0ab('0x8')](),controller[_0xf0ab('0xa')]);router[_0xf0ab('0x7')](_0xf0ab('0xb'),auth['isAuthenticated'](),controller[_0xf0ab('0xc')]);router[_0xf0ab('0x7')](_0xf0ab('0xd'),auth['isAuthenticated'](),controller['getSubjects']);router[_0xf0ab('0x7')]('/:id/descriptions',auth[_0xf0ab('0x8')](),controller[_0xf0ab('0xe')]);router[_0xf0ab('0x7')](_0xf0ab('0xf'),auth[_0xf0ab('0x8')](),controller[_0xf0ab('0x10')]);router[_0xf0ab('0x11')]('/',auth['isAuthenticated'](),controller[_0xf0ab('0x12')]);router[_0xf0ab('0x11')](_0xf0ab('0xf'),auth[_0xf0ab('0x8')](),controller[_0xf0ab('0x13')]);router[_0xf0ab('0x14')](_0xf0ab('0x15'),auth[_0xf0ab('0x8')](),controller[_0xf0ab('0x16')]);router[_0xf0ab('0x17')](_0xf0ab('0x15'),auth[_0xf0ab('0x8')](),controller[_0xf0ab('0x18')]);module[_0xf0ab('0x19')]=router;
\ No newline at end of file
index a3120cd..da1cd81 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0x29b6=['STRING','exports'];(function(_0x272d97,_0x3cb745){var _0x40fc01=function(_0x1ad071){while(--_0x1ad071){_0x272d97['push'](_0x272d97['shift']());}};_0x40fc01(++_0x3cb745);}(_0x29b6,0xed));var _0x629b=function(_0x245cd2,_0x1441a8){_0x245cd2=_0x245cd2-0x0;var _0xeb6a82=_0x29b6[_0x245cd2];return _0xeb6a82;};'use strict';var Sequelize=require('sequelize');module[_0x629b('0x0')]={'name':{'type':Sequelize[_0x629b('0x1')]},'description':{'type':Sequelize['STRING']}};
\ No newline at end of file
index 5f4fda9..8c2b41e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0x3451=['../../components/parsers/qs','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','status','end','json','offset','undefined','limit','set','reject','update','then','sendStatus','name','send','rawAttributes','fieldName','type','key','model','map','query','keys','filters','attributes','intersection','fields','length','hasOwnProperty','nolimit','sort','where','merge','VIRTUAL','filter','ZendeskConfiguration','count','includeAll','include','findAll','rows','catch','show','options','find','create','body','destroy','params','ZendeskField','pick','getFields','getSubjects','findOne','order','getDescriptions','getTags','Tag','setTags','ids','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','util','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service'];(function(_0x46b22a,_0x5bf83a){var _0x44c2e8=function(_0x21b6fc){while(--_0x21b6fc){_0x46b22a['push'](_0x46b22a['shift']());}};_0x44c2e8(++_0x5bf83a);}(_0x3451,0x13f));var _0x1345=function(_0x275cea,_0x3273bb){_0x275cea=_0x275cea-0x0;var _0x2bd6b6=_0x3451[_0x275cea];return _0x2bd6b6;};'use strict';var emlformat=require(_0x1345('0x0'));var rimraf=require(_0x1345('0x1'));var zipdir=require(_0x1345('0x2'));var jsonpatch=require(_0x1345('0x3'));var rp=require(_0x1345('0x4'));var moment=require(_0x1345('0x5'));var BPromise=require(_0x1345('0x6'));var Mustache=require('mustache');var util=require(_0x1345('0x7'));var path=require('path');var sox=require(_0x1345('0x8'));var csv=require(_0x1345('0x9'));var ejs=require(_0x1345('0xa'));var fs=require('fs');var fs_extra=require(_0x1345('0xb'));var _=require(_0x1345('0xc'));var squel=require(_0x1345('0xd'));var crypto=require(_0x1345('0xe'));var jsforce=require(_0x1345('0xf'));var deskjs=require(_0x1345('0x10'));var toCsv=require(_0x1345('0x9'));var querystring=require(_0x1345('0x11'));var Papa=require(_0x1345('0x12'));var Redis=require(_0x1345('0x13'));var authService=require(_0x1345('0x14'));var qs=require(_0x1345('0x15'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x1345('0x16'));var logger=require(_0x1345('0x17'))(_0x1345('0x18'));var utils=require(_0x1345('0x19'));var config=require(_0x1345('0x1a'));var licenseUtil=require('../../config/license/util');var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x1f8a4c,_0x1a8347){_0x1a8347=_0x1a8347||0xcc;return function(_0x57e722){if(_0x57e722){return _0x1f8a4c['sendStatus'](_0x1a8347);}return _0x1f8a4c[_0x1345('0x1b')](_0x1a8347)[_0x1345('0x1c')]();};}function respondWithResult(_0x56fcf4,_0x319fd8){_0x319fd8=_0x319fd8||0xc8;return function(_0x3b2004){if(_0x3b2004){return _0x56fcf4[_0x1345('0x1b')](_0x319fd8)[_0x1345('0x1d')](_0x3b2004);}};}function respondWithFilteredResult(_0x3e1c4c,_0x4f7650){return function(_0x52e1f6){if(_0x52e1f6){var _0x3d21a7=typeof _0x4f7650[_0x1345('0x1e')]===_0x1345('0x1f')&&typeof _0x4f7650['limit']===_0x1345('0x1f');var _0x225433=_0x52e1f6['count'];var _0x511f02=_0x3d21a7?0x0:_0x4f7650[_0x1345('0x1e')];var _0x1f591d=_0x3d21a7?_0x52e1f6['count']:_0x4f7650['offset']+_0x4f7650[_0x1345('0x20')];var _0x24aefe;if(_0x1f591d>=_0x225433){_0x1f591d=_0x225433;_0x24aefe=0xc8;}else{_0x24aefe=0xce;}_0x3e1c4c[_0x1345('0x1b')](_0x24aefe);return _0x3e1c4c[_0x1345('0x21')]('Content-Range',_0x511f02+'-'+_0x1f591d+'/'+_0x225433)[_0x1345('0x1d')](_0x52e1f6);}return null;};}function patchUpdates(_0x20bf1c){return function(_0x46195b){try{jsonpatch['apply'](_0x46195b,_0x20bf1c,!![]);}catch(_0x1368bc){return BPromise[_0x1345('0x22')](_0x1368bc);}return _0x46195b['save']();};}function saveUpdates(_0x10b72e,_0x3f15af){return function(_0x2a5d2d){if(_0x2a5d2d){return _0x2a5d2d[_0x1345('0x23')](_0x10b72e)[_0x1345('0x24')](function(_0xf988a8){return _0xf988a8;});}return null;};}function removeEntity(_0x223410,_0x31ad2a){return function(_0xdc0a2e){if(_0xdc0a2e){return _0xdc0a2e['destroy']()[_0x1345('0x24')](function(){_0x223410[_0x1345('0x1b')](0xcc)['end']();});}};}function handleEntityNotFound(_0x44129f,_0x337079){return function(_0x1302c1){if(!_0x1302c1){_0x44129f[_0x1345('0x25')](0x194);}return _0x1302c1;};}function handleError(_0x3735a4,_0x4eebe1){_0x4eebe1=_0x4eebe1||0x1f4;return function(_0x36f9fa){logger['error'](_0x36f9fa['stack']);if(_0x36f9fa['name']){delete _0x36f9fa[_0x1345('0x26')];}_0x3735a4[_0x1345('0x1b')](_0x4eebe1)[_0x1345('0x27')](_0x36f9fa);};}exports['index']=function(_0x240a24,_0x3e5287){var _0x2ef7f7={},_0x1aa8e8={},_0x369b7e={'count':0x0,'rows':[]};var _0x2cc237=_['map'](db['ZendeskConfiguration'][_0x1345('0x28')],function(_0x5c5767){return{'name':_0x5c5767[_0x1345('0x29')],'type':_0x5c5767[_0x1345('0x2a')][_0x1345('0x2b')]};});_0x1aa8e8[_0x1345('0x2c')]=_[_0x1345('0x2d')](_0x2cc237,_0x1345('0x26'));_0x1aa8e8[_0x1345('0x2e')]=_[_0x1345('0x2f')](_0x240a24[_0x1345('0x2e')]);_0x1aa8e8[_0x1345('0x30')]=_['intersection'](_0x1aa8e8[_0x1345('0x2c')],_0x1aa8e8[_0x1345('0x2e')]);_0x2ef7f7[_0x1345('0x31')]=_[_0x1345('0x32')](_0x1aa8e8[_0x1345('0x2c')],qs['fields'](_0x240a24[_0x1345('0x2e')][_0x1345('0x33')]));_0x2ef7f7['attributes']=_0x2ef7f7[_0x1345('0x31')][_0x1345('0x34')]?_0x2ef7f7['attributes']:_0x1aa8e8[_0x1345('0x2c')];if(!_0x240a24[_0x1345('0x2e')][_0x1345('0x35')](_0x1345('0x36'))){_0x2ef7f7[_0x1345('0x20')]=qs[_0x1345('0x20')](_0x240a24['query'][_0x1345('0x20')]);_0x2ef7f7['offset']=qs[_0x1345('0x1e')](_0x240a24[_0x1345('0x2e')][_0x1345('0x1e')]);}_0x2ef7f7['order']=qs[_0x1345('0x37')](_0x240a24[_0x1345('0x2e')][_0x1345('0x37')]);_0x2ef7f7[_0x1345('0x38')]=qs[_0x1345('0x30')](_['pick'](_0x240a24[_0x1345('0x2e')],_0x1aa8e8[_0x1345('0x30')]),_0x2cc237);if(_0x240a24['query']['filter']){_0x2ef7f7[_0x1345('0x38')]=_[_0x1345('0x39')](_0x2ef7f7[_0x1345('0x38')],{'$or':_['map'](_0x2cc237,function(_0x26dc1d){if(_0x26dc1d[_0x1345('0x2a')]!==_0x1345('0x3a')){var _0x20a6aa={};_0x20a6aa[_0x26dc1d[_0x1345('0x26')]]={'$like':'%'+_0x240a24['query'][_0x1345('0x3b')]+'%'};return _0x20a6aa;}})});}_0x2ef7f7=_[_0x1345('0x39')]({},_0x2ef7f7,_0x240a24['options']);var _0xe77ec={'where':_0x2ef7f7['where']};return db[_0x1345('0x3c')][_0x1345('0x3d')](_0xe77ec)['then'](function(_0x2009b8){_0x369b7e[_0x1345('0x3d')]=_0x2009b8;if(_0x240a24[_0x1345('0x2e')][_0x1345('0x3e')]){_0x2ef7f7[_0x1345('0x3f')]=[{'all':!![]}];}return db[_0x1345('0x3c')][_0x1345('0x40')](_0x2ef7f7);})[_0x1345('0x24')](function(_0x3a487f){_0x369b7e[_0x1345('0x41')]=_0x3a487f;return _0x369b7e;})[_0x1345('0x24')](respondWithFilteredResult(_0x3e5287,_0x2ef7f7))[_0x1345('0x42')](handleError(_0x3e5287,null));};exports[_0x1345('0x43')]=function(_0x547a37,_0x3894d6){var _0x742306={'raw':![],'where':{'id':_0x547a37['params']['id']}},_0x92a264={};_0x92a264[_0x1345('0x2c')]=_[_0x1345('0x2f')](db[_0x1345('0x3c')][_0x1345('0x28')]);_0x92a264[_0x1345('0x2e')]=_[_0x1345('0x2f')](_0x547a37[_0x1345('0x2e')]);_0x92a264[_0x1345('0x30')]=_[_0x1345('0x32')](_0x92a264[_0x1345('0x2c')],_0x92a264[_0x1345('0x2e')]);_0x742306[_0x1345('0x31')]=_[_0x1345('0x32')](_0x92a264[_0x1345('0x2c')],qs[_0x1345('0x33')](_0x547a37[_0x1345('0x2e')][_0x1345('0x33')]));_0x742306[_0x1345('0x31')]=_0x742306[_0x1345('0x31')][_0x1345('0x34')]?_0x742306['attributes']:_0x92a264['model'];if(_0x547a37[_0x1345('0x2e')][_0x1345('0x3e')]){_0x742306[_0x1345('0x3f')]=[{'all':!![]}];}_0x742306=_[_0x1345('0x39')]({},_0x742306,_0x547a37[_0x1345('0x44')]);return db[_0x1345('0x3c')][_0x1345('0x45')](_0x742306)['then'](handleEntityNotFound(_0x3894d6,null))[_0x1345('0x24')](respondWithResult(_0x3894d6,null))[_0x1345('0x42')](handleError(_0x3894d6,null));};exports['create']=function(_0x2cdf4b,_0x4a111b){return db[_0x1345('0x3c')][_0x1345('0x46')](_0x2cdf4b[_0x1345('0x47')],{})[_0x1345('0x24')](respondWithResult(_0x4a111b,0xc9))[_0x1345('0x42')](handleError(_0x4a111b,null));};exports[_0x1345('0x23')]=function(_0x4476e3,_0x31c64e){if(_0x4476e3[_0x1345('0x47')]['id']){delete _0x4476e3[_0x1345('0x47')]['id'];}return db[_0x1345('0x3c')][_0x1345('0x45')]({'where':{'id':_0x4476e3['params']['id']}})['then'](handleEntityNotFound(_0x31c64e,null))[_0x1345('0x24')](saveUpdates(_0x4476e3[_0x1345('0x47')],null))['then'](respondWithResult(_0x31c64e,null))['catch'](handleError(_0x31c64e,null));};exports[_0x1345('0x48')]=function(_0x403c1a,_0x2966c5){return db[_0x1345('0x3c')][_0x1345('0x45')]({'where':{'id':_0x403c1a[_0x1345('0x49')]['id']}})[_0x1345('0x24')](handleEntityNotFound(_0x2966c5,null))['then'](removeEntity(_0x2966c5,null))[_0x1345('0x42')](handleError(_0x2966c5,null));};exports['getFields']=function(_0x3415f2,_0x2e7551,_0x436876){var _0xd05f3c={};var _0x34e62b={};var _0x1f36a8;var _0x1a4b43;return db[_0x1345('0x3c')]['findOne']({'where':{'id':_0x3415f2['params']['id']}})[_0x1345('0x24')](handleEntityNotFound(_0x2e7551,null))[_0x1345('0x24')](function(_0x64d398){if(_0x64d398){_0x1f36a8=_0x64d398;_0x34e62b['model']=_[_0x1345('0x2f')](db[_0x1345('0x4a')][_0x1345('0x28')]);_0x34e62b[_0x1345('0x2e')]=_[_0x1345('0x2f')](_0x3415f2[_0x1345('0x2e')]);_0x34e62b[_0x1345('0x30')]=_[_0x1345('0x32')](_0x34e62b['model'],_0x34e62b[_0x1345('0x2e')]);_0xd05f3c[_0x1345('0x31')]=_['intersection'](_0x34e62b[_0x1345('0x2c')],qs[_0x1345('0x33')](_0x3415f2[_0x1345('0x2e')][_0x1345('0x33')]));_0xd05f3c[_0x1345('0x31')]=_0xd05f3c[_0x1345('0x31')][_0x1345('0x34')]?_0xd05f3c[_0x1345('0x31')]:_0x34e62b[_0x1345('0x2c')];_0xd05f3c['order']=qs[_0x1345('0x37')](_0x3415f2[_0x1345('0x2e')][_0x1345('0x37')]);_0xd05f3c[_0x1345('0x38')]=qs[_0x1345('0x30')](_[_0x1345('0x4b')](_0x3415f2[_0x1345('0x2e')],_0x34e62b['filters']));if(_0x3415f2[_0x1345('0x2e')][_0x1345('0x3b')]){_0xd05f3c[_0x1345('0x38')]=_[_0x1345('0x39')](_0xd05f3c[_0x1345('0x38')],{'$or':_[_0x1345('0x2d')](_0xd05f3c[_0x1345('0x31')],function(_0xe7aa71){var _0x43c8b5={};_0x43c8b5[_0xe7aa71]={'$like':'%'+_0x3415f2[_0x1345('0x2e')][_0x1345('0x3b')]+'%'};return _0x43c8b5;})});}_0xd05f3c=_['merge']({},_0xd05f3c,_0x3415f2[_0x1345('0x44')]);return _0x1f36a8[_0x1345('0x4c')](_0xd05f3c);}})[_0x1345('0x24')](function(_0x1be54a){if(_0x1be54a){_0x1a4b43=_0x1be54a['length'];if(!_0x3415f2['query'][_0x1345('0x35')](_0x1345('0x36'))){_0xd05f3c[_0x1345('0x20')]=qs['limit'](_0x3415f2['query'][_0x1345('0x20')]);_0xd05f3c[_0x1345('0x1e')]=qs[_0x1345('0x1e')](_0x3415f2[_0x1345('0x2e')][_0x1345('0x1e')]);}return _0x1f36a8[_0x1345('0x4c')](_0xd05f3c);}})[_0x1345('0x24')](function(_0x1ff71c){if(_0x1ff71c){return _0x1ff71c?{'count':_0x1a4b43,'rows':_0x1ff71c}:null;}})[_0x1345('0x24')](respondWithResult(_0x2e7551,null))[_0x1345('0x42')](handleError(_0x2e7551,null));};exports[_0x1345('0x4d')]=function(_0x11e888,_0xe1dc68,_0x4eb9e3){var _0x2d155f={};var _0x4abcd0={};var _0x5ecc18;var _0x47f030;return db[_0x1345('0x3c')][_0x1345('0x4e')]({'where':{'id':_0x11e888[_0x1345('0x49')]['id']}})[_0x1345('0x24')](handleEntityNotFound(_0xe1dc68,null))[_0x1345('0x24')](function(_0x3300e8){if(_0x3300e8){_0x5ecc18=_0x3300e8;_0x4abcd0[_0x1345('0x2c')]=_['keys'](db['ZendeskField']['rawAttributes']);_0x4abcd0[_0x1345('0x2e')]=_['keys'](_0x11e888[_0x1345('0x2e')]);_0x4abcd0[_0x1345('0x30')]=_['intersection'](_0x4abcd0[_0x1345('0x2c')],_0x4abcd0[_0x1345('0x2e')]);_0x2d155f[_0x1345('0x31')]=_['intersection'](_0x4abcd0[_0x1345('0x2c')],qs['fields'](_0x11e888[_0x1345('0x2e')]['fields']));_0x2d155f[_0x1345('0x31')]=_0x2d155f[_0x1345('0x31')][_0x1345('0x34')]?_0x2d155f[_0x1345('0x31')]:_0x4abcd0['model'];_0x2d155f[_0x1345('0x4f')]=qs['sort'](_0x11e888[_0x1345('0x2e')][_0x1345('0x37')]);_0x2d155f[_0x1345('0x38')]=qs[_0x1345('0x30')](_[_0x1345('0x4b')](_0x11e888[_0x1345('0x2e')],_0x4abcd0['filters']));if(_0x11e888[_0x1345('0x2e')][_0x1345('0x3b')]){_0x2d155f[_0x1345('0x38')]=_[_0x1345('0x39')](_0x2d155f['where'],{'$or':_['map'](_0x2d155f[_0x1345('0x31')],function(_0xaf905){var _0x3d2d71={};_0x3d2d71[_0xaf905]={'$like':'%'+_0x11e888['query'][_0x1345('0x3b')]+'%'};return _0x3d2d71;})});}_0x2d155f=_[_0x1345('0x39')]({},_0x2d155f,_0x11e888[_0x1345('0x44')]);return _0x5ecc18[_0x1345('0x4d')](_0x2d155f);}})[_0x1345('0x24')](function(_0x49ea4c){if(_0x49ea4c){_0x47f030=_0x49ea4c['length'];if(!_0x11e888[_0x1345('0x2e')]['hasOwnProperty']('nolimit')){_0x2d155f['limit']=qs[_0x1345('0x20')](_0x11e888[_0x1345('0x2e')][_0x1345('0x20')]);_0x2d155f['offset']=qs[_0x1345('0x1e')](_0x11e888[_0x1345('0x2e')]['offset']);}return _0x5ecc18[_0x1345('0x4d')](_0x2d155f);}})[_0x1345('0x24')](function(_0x3f9492){if(_0x3f9492){return _0x3f9492?{'count':_0x47f030,'rows':_0x3f9492}:null;}})[_0x1345('0x24')](respondWithResult(_0xe1dc68,null))['catch'](handleError(_0xe1dc68,null));};exports[_0x1345('0x50')]=function(_0x22ba2d,_0x4896ef,_0x2b8fb3){var _0x5e9869={};var _0x493bf4={};var _0x47e573;var _0x54e6d5;return db['ZendeskConfiguration'][_0x1345('0x4e')]({'where':{'id':_0x22ba2d[_0x1345('0x49')]['id']}})['then'](handleEntityNotFound(_0x4896ef,null))[_0x1345('0x24')](function(_0x137377){if(_0x137377){_0x47e573=_0x137377;_0x493bf4[_0x1345('0x2c')]=_[_0x1345('0x2f')](db[_0x1345('0x4a')]['rawAttributes']);_0x493bf4[_0x1345('0x2e')]=_[_0x1345('0x2f')](_0x22ba2d[_0x1345('0x2e')]);_0x493bf4['filters']=_[_0x1345('0x32')](_0x493bf4['model'],_0x493bf4[_0x1345('0x2e')]);_0x5e9869['attributes']=_['intersection'](_0x493bf4[_0x1345('0x2c')],qs['fields'](_0x22ba2d[_0x1345('0x2e')][_0x1345('0x33')]));_0x5e9869[_0x1345('0x31')]=_0x5e9869[_0x1345('0x31')][_0x1345('0x34')]?_0x5e9869[_0x1345('0x31')]:_0x493bf4['model'];_0x5e9869[_0x1345('0x4f')]=qs[_0x1345('0x37')](_0x22ba2d[_0x1345('0x2e')][_0x1345('0x37')]);_0x5e9869[_0x1345('0x38')]=qs[_0x1345('0x30')](_[_0x1345('0x4b')](_0x22ba2d[_0x1345('0x2e')],_0x493bf4['filters']));if(_0x22ba2d['query'][_0x1345('0x3b')]){_0x5e9869[_0x1345('0x38')]=_[_0x1345('0x39')](_0x5e9869['where'],{'$or':_[_0x1345('0x2d')](_0x5e9869[_0x1345('0x31')],function(_0x14c414){var _0x1b38db={};_0x1b38db[_0x14c414]={'$like':'%'+_0x22ba2d[_0x1345('0x2e')]['filter']+'%'};return _0x1b38db;})});}_0x5e9869=_['merge']({},_0x5e9869,_0x22ba2d[_0x1345('0x44')]);return _0x47e573['getDescriptions'](_0x5e9869);}})[_0x1345('0x24')](function(_0x2485f3){if(_0x2485f3){_0x54e6d5=_0x2485f3['length'];if(!_0x22ba2d['query'][_0x1345('0x35')]('nolimit')){_0x5e9869[_0x1345('0x20')]=qs[_0x1345('0x20')](_0x22ba2d['query'][_0x1345('0x20')]);_0x5e9869['offset']=qs[_0x1345('0x1e')](_0x22ba2d[_0x1345('0x2e')][_0x1345('0x1e')]);}return _0x47e573['getDescriptions'](_0x5e9869);}})[_0x1345('0x24')](function(_0x4c36be){if(_0x4c36be){return _0x4c36be?{'count':_0x54e6d5,'rows':_0x4c36be}:null;}})[_0x1345('0x24')](respondWithResult(_0x4896ef,null))['catch'](handleError(_0x4896ef,null));};exports[_0x1345('0x51')]=function(_0x327469,_0x1ba086,_0x55fb60){var _0x51bb7c={};var _0x400aa9={};var _0x16fe42;var _0x1220bd;return db[_0x1345('0x3c')]['findOne']({'where':{'id':_0x327469[_0x1345('0x49')]['id']}})[_0x1345('0x24')](handleEntityNotFound(_0x1ba086,null))['then'](function(_0xc052d8){if(_0xc052d8){_0x16fe42=_0xc052d8;_0x400aa9['model']=_[_0x1345('0x2f')](db[_0x1345('0x52')][_0x1345('0x28')]);_0x400aa9[_0x1345('0x2e')]=_[_0x1345('0x2f')](_0x327469[_0x1345('0x2e')]);_0x400aa9[_0x1345('0x30')]=_[_0x1345('0x32')](_0x400aa9[_0x1345('0x2c')],_0x400aa9[_0x1345('0x2e')]);_0x51bb7c['attributes']=_[_0x1345('0x32')](_0x400aa9[_0x1345('0x2c')],qs[_0x1345('0x33')](_0x327469[_0x1345('0x2e')]['fields']));_0x51bb7c[_0x1345('0x31')]=_0x51bb7c['attributes'][_0x1345('0x34')]?_0x51bb7c['attributes']:_0x400aa9[_0x1345('0x2c')];_0x51bb7c['order']=qs[_0x1345('0x37')](_0x327469[_0x1345('0x2e')]['sort']);_0x51bb7c[_0x1345('0x38')]=qs[_0x1345('0x30')](_['pick'](_0x327469[_0x1345('0x2e')],_0x400aa9['filters']));if(_0x327469['query']['filter']){_0x51bb7c[_0x1345('0x38')]=_[_0x1345('0x39')](_0x51bb7c['where'],{'$or':_[_0x1345('0x2d')](_0x51bb7c[_0x1345('0x31')],function(_0x4c8239){var _0x4ac969={};_0x4ac969[_0x4c8239]={'$like':'%'+_0x327469[_0x1345('0x2e')][_0x1345('0x3b')]+'%'};return _0x4ac969;})});}_0x51bb7c=_[_0x1345('0x39')]({},_0x51bb7c,_0x327469[_0x1345('0x44')]);return _0x16fe42['getTags'](_0x51bb7c);}})[_0x1345('0x24')](function(_0x6ce3b5){if(_0x6ce3b5){_0x1220bd=_0x6ce3b5['length'];if(!_0x327469[_0x1345('0x2e')]['hasOwnProperty'](_0x1345('0x36'))){_0x51bb7c[_0x1345('0x20')]=qs[_0x1345('0x20')](_0x327469[_0x1345('0x2e')][_0x1345('0x20')]);_0x51bb7c[_0x1345('0x1e')]=qs[_0x1345('0x1e')](_0x327469[_0x1345('0x2e')][_0x1345('0x1e')]);}return _0x16fe42['getTags'](_0x51bb7c);}})[_0x1345('0x24')](function(_0x392281){if(_0x392281){return _0x392281?{'count':_0x1220bd,'rows':_0x392281}:null;}})[_0x1345('0x24')](respondWithResult(_0x1ba086,null))[_0x1345('0x42')](handleError(_0x1ba086,null));};exports[_0x1345('0x53')]=function(_0x7f628d,_0x53c4fc,_0x27646f){if(_0x7f628d['body']['id']){delete _0x7f628d['body']['id'];}return db[_0x1345('0x3c')][_0x1345('0x4e')]({'where':{'id':_0x7f628d['params']['id']}})['then'](handleEntityNotFound(_0x53c4fc,null))[_0x1345('0x24')](function(_0x222fdb){if(_0x222fdb){return _0x222fdb[_0x1345('0x53')](_0x7f628d[_0x1345('0x47')][_0x1345('0x54')]||[]);}return null;})[_0x1345('0x24')](respondWithResult(_0x53c4fc,null))[_0x1345('0x42')](handleError(_0x53c4fc,null));};
\ No newline at end of file
index d5dc9e1..8789b21 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0x5eb8=['request-promise','path','rimraf','../../config/environment','./intZendeskConfiguration.attributes','exports','ZendeskConfiguration','int_zendesk_configurations','../../config/logger','api','moment','bluebird'];(function(_0x53ad98,_0x3bf601){var _0x5394ce=function(_0x1e91d7){while(--_0x1e91d7){_0x53ad98['push'](_0x53ad98['shift']());}};_0x5394ce(++_0x3bf601);}(_0x5eb8,0xb0));var _0x85eb=function(_0x1c5950,_0x49e128){_0x1c5950=_0x1c5950-0x0;var _0x2b720a=_0x5eb8[_0x1c5950];return _0x2b720a;};'use strict';var _=require('lodash');var util=require('util');var logger=require(_0x85eb('0x0'))(_0x85eb('0x1'));var moment=require(_0x85eb('0x2'));var BPromise=require(_0x85eb('0x3'));var rp=require(_0x85eb('0x4'));var fs=require('fs');var path=require(_0x85eb('0x5'));var rimraf=require(_0x85eb('0x6'));var config=require(_0x85eb('0x7'));var attributes=require(_0x85eb('0x8'));module[_0x85eb('0x9')]=function(_0x2bf83c,_0x1ba1d8){return _0x2bf83c['define'](_0x85eb('0xa'),attributes,{'tableName':_0x85eb('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 89e2383..38a2411 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0x1566=['result','catch','lodash','util','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','request','then','info','ZendeskConfiguration,\x20%s,\x20%s','request\x20sent','error','code','message'];(function(_0xf34895,_0x21fb70){var _0x143f44=function(_0x2e7730){while(--_0x2e7730){_0xf34895['push'](_0xf34895['shift']());}};_0x143f44(++_0x21fb70);}(_0x1566,0x86));var _0x6156=function(_0xca581e,_0x5975df){_0xca581e=_0xca581e-0x0;var _0x5ddecd=_0x1566[_0xca581e];return _0x5ddecd;};'use strict';var _=require(_0x6156('0x0'));var util=require(_0x6156('0x1'));var moment=require('moment');var BPromise=require('bluebird');var rs=require(_0x6156('0x2'));var fs=require('fs');var Redis=require(_0x6156('0x3'));var db=require(_0x6156('0x4'))['db'];var utils=require(_0x6156('0x5'));var logger=require(_0x6156('0x6'))(_0x6156('0x7'));var config=require(_0x6156('0x8'));var jayson=require(_0x6156('0x9'));var client=jayson[_0x6156('0xa')][_0x6156('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x464202,_0x10de31,_0x159647){return new BPromise(function(_0x28c254,_0x2eab76){return client[_0x6156('0xc')](_0x464202,_0x159647)[_0x6156('0xd')](function(_0x504c1a){logger[_0x6156('0xe')](_0x6156('0xf'),_0x10de31,_0x6156('0x10'));logger['debug']('ZendeskConfiguration,\x20%s,\x20%s,\x20%s',_0x10de31,_0x6156('0x10'),JSON['stringify'](_0x504c1a));if(_0x504c1a[_0x6156('0x11')]){if(_0x504c1a[_0x6156('0x11')][_0x6156('0x12')]===0x1f4){logger[_0x6156('0x11')](_0x6156('0xf'),_0x10de31,_0x504c1a[_0x6156('0x11')][_0x6156('0x13')]);return _0x2eab76(_0x504c1a[_0x6156('0x11')][_0x6156('0x13')]);}logger[_0x6156('0x11')](_0x6156('0xf'),_0x10de31,_0x504c1a[_0x6156('0x11')][_0x6156('0x13')]);return _0x28c254(_0x504c1a['error'][_0x6156('0x13')]);}else{logger[_0x6156('0xe')](_0x6156('0xf'),_0x10de31,'request\x20sent');_0x28c254(_0x504c1a[_0x6156('0x14')][_0x6156('0x13')]);}})[_0x6156('0x15')](function(_0x3677b2){logger[_0x6156('0x11')](_0x6156('0xf'),_0x10de31,_0x3677b2);_0x2eab76(_0x3677b2);});});}
\ No newline at end of file
index 631d9d0..9cb6262 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0x7071=['get','show','create','/:id','delete','destroy','exports','multer','util','path','connect-timeout','Router','fs-extra','../../components/auth/service','../../config/environment','./intZendeskField.controller','isAuthenticated','index'];(function(_0x4e8286,_0x4eaeb4){var _0x44a440=function(_0x5e0907){while(--_0x5e0907){_0x4e8286['push'](_0x4e8286['shift']());}};_0x44a440(++_0x4eaeb4);}(_0x7071,0x193));var _0x1707=function(_0x5820b3,_0x3347b1){_0x5820b3=_0x5820b3-0x0;var _0x3716fe=_0x7071[_0x5820b3];return _0x3716fe;};'use strict';var multer=require(_0x1707('0x0'));var util=require(_0x1707('0x1'));var path=require(_0x1707('0x2'));var timeout=require(_0x1707('0x3'));var express=require('express');var router=express[_0x1707('0x4')]();var fs_extra=require(_0x1707('0x5'));var auth=require(_0x1707('0x6'));var interaction=require('../../components/interaction/service');var config=require(_0x1707('0x7'));var controller=require(_0x1707('0x8'));router['get']('/',auth[_0x1707('0x9')](),controller[_0x1707('0xa')]);router[_0x1707('0xb')]('/:id',auth[_0x1707('0x9')](),controller[_0x1707('0xc')]);router['post']('/',auth[_0x1707('0x9')](),controller[_0x1707('0xd')]);router['put'](_0x1707('0xe'),auth['isAuthenticated'](),controller['update']);router[_0x1707('0xf')](_0x1707('0xe'),auth[_0x1707('0x9')](),controller[_0x1707('0x10')]);module[_0x1707('0x11')]=router;
\ No newline at end of file
index d71091f..2a10d59 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0xc197=['string','variable','customVariable','picklist','STRING','BOOLEAN','sequelize','exports','ENUM'];(function(_0x2e2bbe,_0x15fe57){var _0x7e1a1d=function(_0x20a7c0){while(--_0x20a7c0){_0x2e2bbe['push'](_0x2e2bbe['shift']());}};_0x7e1a1d(++_0x15fe57);}(_0xc197,0x96));var _0x7c19=function(_0x2a0bbe,_0x140228){_0x2a0bbe=_0x2a0bbe-0x0;var _0x29e3e1=_0xc197[_0x2a0bbe];return _0x29e3e1;};'use strict';var Sequelize=require(_0x7c19('0x0'));module[_0x7c19('0x1')]={'type':{'type':Sequelize[_0x7c19('0x2')](_0x7c19('0x3'),_0x7c19('0x4'),_0x7c19('0x5'),'keyValue',_0x7c19('0x6')),'defaultValue':_0x7c19('0x3')},'content':{'type':Sequelize[_0x7c19('0x7')]},'key':{'type':Sequelize[_0x7c19('0x7')]},'keyType':{'type':Sequelize[_0x7c19('0x2')](_0x7c19('0x3'),'variable',_0x7c19('0x5'))},'keyContent':{'type':Sequelize[_0x7c19('0x7')]},'idField':{'type':Sequelize[_0x7c19('0x7')]},'nameField':{'type':Sequelize[_0x7c19('0x7')]},'customField':{'type':Sequelize[_0x7c19('0x8')],'defaultValue':!![]},'variableName':{'type':Sequelize[_0x7c19('0x7')]}};
\ No newline at end of file
index 476a578..af418de 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0x4ba0=['ZendeskField','rawAttributes','fieldName','type','model','query','keys','intersection','fields','attributes','length','hasOwnProperty','nolimit','order','sort','where','filters','pick','filter','VIRTUAL','merge','options','includeAll','catch','include','find','create','body','params','eml-format','zip-dir','request-promise','moment','bluebird','mustache','path','ejs','lodash','squel','crypto','jsforce','desk.js','papaparse','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','end','status','offset','undefined','count','limit','set','Content-Range','update','destroy','then','sendStatus','name','map'];(function(_0x3a4f08,_0x5e47d5){var _0x248e08=function(_0x5e5f23){while(--_0x5e5f23){_0x3a4f08['push'](_0x3a4f08['shift']());}};_0x248e08(++_0x5e47d5);}(_0x4ba0,0xe0));var _0x04ba=function(_0x341e0f,_0x4a09d0){_0x341e0f=_0x341e0f-0x0;var _0x59555a=_0x4ba0[_0x341e0f];return _0x59555a;};'use strict';var emlformat=require(_0x04ba('0x0'));var rimraf=require('rimraf');var zipdir=require(_0x04ba('0x1'));var jsonpatch=require('fast-json-patch');var rp=require(_0x04ba('0x2'));var moment=require(_0x04ba('0x3'));var BPromise=require(_0x04ba('0x4'));var Mustache=require(_0x04ba('0x5'));var util=require('util');var path=require(_0x04ba('0x6'));var sox=require('sox');var csv=require('to-csv');var ejs=require(_0x04ba('0x7'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x04ba('0x8'));var squel=require(_0x04ba('0x9'));var crypto=require(_0x04ba('0xa'));var jsforce=require(_0x04ba('0xb'));var deskjs=require(_0x04ba('0xc'));var toCsv=require('to-csv');var querystring=require('querystring');var Papa=require(_0x04ba('0xd'));var Redis=require('ioredis');var authService=require(_0x04ba('0xe'));var qs=require('../../components/parsers/qs');var as=require(_0x04ba('0xf'));var hardwareService=require(_0x04ba('0x10'));var logger=require('../../config/logger')(_0x04ba('0x11'));var utils=require(_0x04ba('0x12'));var config=require(_0x04ba('0x13'));var licenseUtil=require(_0x04ba('0x14'));var db=require(_0x04ba('0x15'))['db'];function respondWithStatusCode(_0x232126,_0x1b9e3a){_0x1b9e3a=_0x1b9e3a||0xcc;return function(_0x5e3caf){if(_0x5e3caf){return _0x232126['sendStatus'](_0x1b9e3a);}return _0x232126['status'](_0x1b9e3a)[_0x04ba('0x16')]();};}function respondWithResult(_0x5c7e88,_0x537d5f){_0x537d5f=_0x537d5f||0xc8;return function(_0x398b0d){if(_0x398b0d){return _0x5c7e88[_0x04ba('0x17')](_0x537d5f)['json'](_0x398b0d);}};}function respondWithFilteredResult(_0x560458,_0x532c3e){return function(_0x36e811){if(_0x36e811){var _0x5040f1=typeof _0x532c3e[_0x04ba('0x18')]===_0x04ba('0x19')&&typeof _0x532c3e['limit']==='undefined';var _0x4aa1e0=_0x36e811[_0x04ba('0x1a')];var _0x33212a=_0x5040f1?0x0:_0x532c3e['offset'];var _0x568341=_0x5040f1?_0x36e811[_0x04ba('0x1a')]:_0x532c3e[_0x04ba('0x18')]+_0x532c3e[_0x04ba('0x1b')];var _0x11ce15;if(_0x568341>=_0x4aa1e0){_0x568341=_0x4aa1e0;_0x11ce15=0xc8;}else{_0x11ce15=0xce;}_0x560458[_0x04ba('0x17')](_0x11ce15);return _0x560458[_0x04ba('0x1c')](_0x04ba('0x1d'),_0x33212a+'-'+_0x568341+'/'+_0x4aa1e0)['json'](_0x36e811);}return null;};}function patchUpdates(_0x48217e){return function(_0x4b4872){try{jsonpatch['apply'](_0x4b4872,_0x48217e,!![]);}catch(_0x152589){return BPromise['reject'](_0x152589);}return _0x4b4872['save']();};}function saveUpdates(_0x2b975b,_0x1ff2ea){return function(_0x347a66){if(_0x347a66){return _0x347a66[_0x04ba('0x1e')](_0x2b975b)['then'](function(_0x2ec67d){return _0x2ec67d;});}return null;};}function removeEntity(_0x24f7e9,_0x771057){return function(_0x374bdd){if(_0x374bdd){return _0x374bdd[_0x04ba('0x1f')]()[_0x04ba('0x20')](function(){_0x24f7e9[_0x04ba('0x17')](0xcc)[_0x04ba('0x16')]();});}};}function handleEntityNotFound(_0x41c7e5,_0x2bed63){return function(_0x2309e2){if(!_0x2309e2){_0x41c7e5[_0x04ba('0x21')](0x194);}return _0x2309e2;};}function handleError(_0x1a41df,_0x46f15e){_0x46f15e=_0x46f15e||0x1f4;return function(_0x51eb34){logger['error'](_0x51eb34['stack']);if(_0x51eb34['name']){delete _0x51eb34[_0x04ba('0x22')];}_0x1a41df['status'](_0x46f15e)['send'](_0x51eb34);};}exports['index']=function(_0x57182d,_0x4b9fad){var _0x51cdbd={},_0x1cacd2={},_0x4d046d={'count':0x0,'rows':[]};var _0x547235=_[_0x04ba('0x23')](db[_0x04ba('0x24')][_0x04ba('0x25')],function(_0x458a0e){return{'name':_0x458a0e[_0x04ba('0x26')],'type':_0x458a0e[_0x04ba('0x27')]['key']};});_0x1cacd2[_0x04ba('0x28')]=_[_0x04ba('0x23')](_0x547235,_0x04ba('0x22'));_0x1cacd2[_0x04ba('0x29')]=_[_0x04ba('0x2a')](_0x57182d['query']);_0x1cacd2['filters']=_['intersection'](_0x1cacd2[_0x04ba('0x28')],_0x1cacd2[_0x04ba('0x29')]);_0x51cdbd['attributes']=_[_0x04ba('0x2b')](_0x1cacd2[_0x04ba('0x28')],qs[_0x04ba('0x2c')](_0x57182d['query'][_0x04ba('0x2c')]));_0x51cdbd[_0x04ba('0x2d')]=_0x51cdbd[_0x04ba('0x2d')][_0x04ba('0x2e')]?_0x51cdbd[_0x04ba('0x2d')]:_0x1cacd2[_0x04ba('0x28')];if(!_0x57182d['query'][_0x04ba('0x2f')](_0x04ba('0x30'))){_0x51cdbd[_0x04ba('0x1b')]=qs['limit'](_0x57182d[_0x04ba('0x29')]['limit']);_0x51cdbd[_0x04ba('0x18')]=qs[_0x04ba('0x18')](_0x57182d[_0x04ba('0x29')][_0x04ba('0x18')]);}_0x51cdbd[_0x04ba('0x31')]=qs[_0x04ba('0x32')](_0x57182d[_0x04ba('0x29')][_0x04ba('0x32')]);_0x51cdbd[_0x04ba('0x33')]=qs[_0x04ba('0x34')](_[_0x04ba('0x35')](_0x57182d['query'],_0x1cacd2['filters']),_0x547235);if(_0x57182d[_0x04ba('0x29')][_0x04ba('0x36')]){_0x51cdbd[_0x04ba('0x33')]=_['merge'](_0x51cdbd[_0x04ba('0x33')],{'$or':_[_0x04ba('0x23')](_0x547235,function(_0x5dba5e){if(_0x5dba5e[_0x04ba('0x27')]!==_0x04ba('0x37')){var _0x5f1d38={};_0x5f1d38[_0x5dba5e[_0x04ba('0x22')]]={'$like':'%'+_0x57182d['query']['filter']+'%'};return _0x5f1d38;}})});}_0x51cdbd=_[_0x04ba('0x38')]({},_0x51cdbd,_0x57182d[_0x04ba('0x39')]);var _0x28e7a7={'where':_0x51cdbd[_0x04ba('0x33')]};return db[_0x04ba('0x24')][_0x04ba('0x1a')](_0x28e7a7)[_0x04ba('0x20')](function(_0x2e04f2){_0x4d046d[_0x04ba('0x1a')]=_0x2e04f2;if(_0x57182d[_0x04ba('0x29')][_0x04ba('0x3a')]){_0x51cdbd['include']=[{'all':!![]}];}return db[_0x04ba('0x24')]['findAll'](_0x51cdbd);})[_0x04ba('0x20')](function(_0x676176){_0x4d046d['rows']=_0x676176;return _0x4d046d;})['then'](respondWithFilteredResult(_0x4b9fad,_0x51cdbd))[_0x04ba('0x3b')](handleError(_0x4b9fad,null));};exports['show']=function(_0x5449e1,_0xeeed37){var _0x1094ab={'raw':!![],'where':{'id':_0x5449e1['params']['id']}},_0x5e6c9e={};_0x5e6c9e[_0x04ba('0x28')]=_['keys'](db[_0x04ba('0x24')][_0x04ba('0x25')]);_0x5e6c9e['query']=_[_0x04ba('0x2a')](_0x5449e1[_0x04ba('0x29')]);_0x5e6c9e[_0x04ba('0x34')]=_[_0x04ba('0x2b')](_0x5e6c9e[_0x04ba('0x28')],_0x5e6c9e[_0x04ba('0x29')]);_0x1094ab[_0x04ba('0x2d')]=_[_0x04ba('0x2b')](_0x5e6c9e[_0x04ba('0x28')],qs[_0x04ba('0x2c')](_0x5449e1[_0x04ba('0x29')]['fields']));_0x1094ab[_0x04ba('0x2d')]=_0x1094ab[_0x04ba('0x2d')]['length']?_0x1094ab[_0x04ba('0x2d')]:_0x5e6c9e['model'];if(_0x5449e1['query']['includeAll']){_0x1094ab[_0x04ba('0x3c')]=[{'all':!![]}];}_0x1094ab=_[_0x04ba('0x38')]({},_0x1094ab,_0x5449e1[_0x04ba('0x39')]);return db[_0x04ba('0x24')][_0x04ba('0x3d')](_0x1094ab)[_0x04ba('0x20')](handleEntityNotFound(_0xeeed37,null))[_0x04ba('0x20')](respondWithResult(_0xeeed37,null))[_0x04ba('0x3b')](handleError(_0xeeed37,null));};exports[_0x04ba('0x3e')]=function(_0x4e392c,_0x4ad4d8){return db['ZendeskField'][_0x04ba('0x3e')](_0x4e392c[_0x04ba('0x3f')],{})[_0x04ba('0x20')](respondWithResult(_0x4ad4d8,0xc9))['catch'](handleError(_0x4ad4d8,null));};exports[_0x04ba('0x1e')]=function(_0x4496f0,_0x65d852){if(_0x4496f0[_0x04ba('0x3f')]['id']){delete _0x4496f0[_0x04ba('0x3f')]['id'];}return db[_0x04ba('0x24')][_0x04ba('0x3d')]({'where':{'id':_0x4496f0['params']['id']}})['then'](handleEntityNotFound(_0x65d852,null))[_0x04ba('0x20')](saveUpdates(_0x4496f0[_0x04ba('0x3f')],null))[_0x04ba('0x20')](respondWithResult(_0x65d852,null))['catch'](handleError(_0x65d852,null));};exports[_0x04ba('0x1f')]=function(_0x26a493,_0x1e0241){return db[_0x04ba('0x24')][_0x04ba('0x3d')]({'where':{'id':_0x26a493[_0x04ba('0x40')]['id']}})[_0x04ba('0x20')](handleEntityNotFound(_0x1e0241,null))[_0x04ba('0x20')](removeEntity(_0x1e0241,null))[_0x04ba('0x3b')](handleError(_0x1e0241,null));};
\ No newline at end of file
index 5e60b6a..e1dfe07 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0xc413=['rimraf','../../config/environment','./intZendeskField.attributes','exports','define','ZendeskField','zendesk_unique_index','idField','FieldId','lodash','api','moment','request-promise','path'];(function(_0x20ef64,_0x4a8fe9){var _0x3707d8=function(_0x5b9a88){while(--_0x5b9a88){_0x20ef64['push'](_0x20ef64['shift']());}};_0x3707d8(++_0x4a8fe9);}(_0xc413,0xa3));var _0x3c41=function(_0x5b644e,_0x2e5e07){_0x5b644e=_0x5b644e-0x0;var _0x49c6bf=_0xc413[_0x5b644e];return _0x49c6bf;};'use strict';var _=require(_0x3c41('0x0'));var util=require('util');var logger=require('../../config/logger')(_0x3c41('0x1'));var moment=require(_0x3c41('0x2'));var BPromise=require('bluebird');var rp=require(_0x3c41('0x3'));var fs=require('fs');var path=require(_0x3c41('0x4'));var rimraf=require(_0x3c41('0x5'));var config=require(_0x3c41('0x6'));var attributes=require(_0x3c41('0x7'));module[_0x3c41('0x8')]=function(_0x1bf191,_0x224c48){return _0x1bf191[_0x3c41('0x9')](_0x3c41('0xa'),attributes,{'tableName':'int_zendesk_fields','paranoid':![],'indexes':[{'name':_0x3c41('0xb'),'fields':[_0x3c41('0xc'),_0x3c41('0xd')],'unique':!![]}],'timestamps':!![]});};
\ No newline at end of file
index 0e4dd88..c7db994 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0xcaa6=['info','ZendeskField,\x20%s,\x20%s','request\x20sent','ZendeskField,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','util','moment','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/environment','client','http','request','then'];(function(_0x25831a,_0x3027d1){var _0x141686=function(_0xac7268){while(--_0xac7268){_0x25831a['push'](_0x25831a['shift']());}};_0x141686(++_0x3027d1);}(_0xcaa6,0x1c1));var _0x6caa=function(_0x7acdaa,_0x501fd3){_0x7acdaa=_0x7acdaa-0x0;var _0x302076=_0xcaa6[_0x7acdaa];return _0x302076;};'use strict';var _=require('lodash');var util=require(_0x6caa('0x0'));var moment=require(_0x6caa('0x1'));var BPromise=require('bluebird');var rs=require(_0x6caa('0x2'));var fs=require('fs');var Redis=require(_0x6caa('0x3'));var db=require(_0x6caa('0x4'))['db'];var utils=require(_0x6caa('0x5'));var logger=require('../../config/logger')('rpc');var config=require(_0x6caa('0x6'));var jayson=require('jayson/promise');var client=jayson[_0x6caa('0x7')][_0x6caa('0x8')]({'port':0x232a});function respondWithRpcPromise(_0x79143b,_0x34913d,_0x6c2ec4){return new BPromise(function(_0x33f144,_0x2b3d57){return client[_0x6caa('0x9')](_0x79143b,_0x6c2ec4)[_0x6caa('0xa')](function(_0x3842a0){logger[_0x6caa('0xb')](_0x6caa('0xc'),_0x34913d,_0x6caa('0xd'));logger['debug'](_0x6caa('0xe'),_0x34913d,_0x6caa('0xd'),JSON[_0x6caa('0xf')](_0x3842a0));if(_0x3842a0['error']){if(_0x3842a0[_0x6caa('0x10')][_0x6caa('0x11')]===0x1f4){logger[_0x6caa('0x10')](_0x6caa('0xc'),_0x34913d,_0x3842a0[_0x6caa('0x10')][_0x6caa('0x12')]);return _0x2b3d57(_0x3842a0[_0x6caa('0x10')]['message']);}logger[_0x6caa('0x10')](_0x6caa('0xc'),_0x34913d,_0x3842a0['error'][_0x6caa('0x12')]);return _0x33f144(_0x3842a0[_0x6caa('0x10')]['message']);}else{logger[_0x6caa('0xb')]('ZendeskField,\x20%s,\x20%s',_0x34913d,_0x6caa('0xd'));_0x33f144(_0x3842a0[_0x6caa('0x13')][_0x6caa('0x12')]);}})['catch'](function(_0x573905){logger['error'](_0x6caa('0xc'),_0x34913d,_0x573905);_0x2b3d57(_0x573905);});});}
\ No newline at end of file
index bc6175b..8454323 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0x678a=['isAuthenticated','show','/:id/configurations','getConfigurations','/:id/fields','getFields','post','create','put','/:id','update','destroy','multer','util','path','express','../../components/auth/service','../../components/interaction/service','../../config/environment','./intZohoAccount.controller','get'];(function(_0x31c3d5,_0x40a38c){var _0x5424ba=function(_0x15b7fa){while(--_0x15b7fa){_0x31c3d5['push'](_0x31c3d5['shift']());}};_0x5424ba(++_0x40a38c);}(_0x678a,0x19b));var _0xa678=function(_0x6dfade,_0x1e69e4){_0x6dfade=_0x6dfade-0x0;var _0x4660a5=_0x678a[_0x6dfade];return _0x4660a5;};'use strict';var multer=require(_0xa678('0x0'));var util=require(_0xa678('0x1'));var path=require(_0xa678('0x2'));var timeout=require('connect-timeout');var express=require(_0xa678('0x3'));var router=express['Router']();var fs_extra=require('fs-extra');var auth=require(_0xa678('0x4'));var interaction=require(_0xa678('0x5'));var config=require(_0xa678('0x6'));var controller=require(_0xa678('0x7'));router[_0xa678('0x8')]('/',auth[_0xa678('0x9')](),controller['index']);router[_0xa678('0x8')]('/:id',auth['isAuthenticated'](),controller[_0xa678('0xa')]);router[_0xa678('0x8')](_0xa678('0xb'),auth['isAuthenticated'](),controller[_0xa678('0xc')]);router[_0xa678('0x8')](_0xa678('0xd'),auth[_0xa678('0x9')](),controller[_0xa678('0xe')]);router[_0xa678('0xf')]('/',auth[_0xa678('0x9')](),controller[_0xa678('0x10')]);router[_0xa678('0xf')](_0xa678('0xb'),auth[_0xa678('0x9')](),controller['addConfiguration']);router[_0xa678('0x11')](_0xa678('0x12'),auth[_0xa678('0x9')](),controller[_0xa678('0x13')]);router['delete']('/:id',auth['isAuthenticated'](),controller[_0xa678('0x14')]);module['exports']=router;
\ No newline at end of file
index df9f1de..aa9c4ac 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0xedd9=['exports','STRING'];(function(_0x9aa8fc,_0x1b0f67){var _0x25f840=function(_0x1eba5b){while(--_0x1eba5b){_0x9aa8fc['push'](_0x9aa8fc['shift']());}};_0x25f840(++_0x1b0f67);}(_0xedd9,0xfc));var _0x9edd=function(_0x31b0ff,_0x1d1ebd){_0x31b0ff=_0x31b0ff-0x0;var _0xb790f1=_0xedd9[_0x31b0ff];return _0xb790f1;};'use strict';var Sequelize=require('sequelize');module[_0x9edd('0x0')]={'name':{'type':Sequelize[_0x9edd('0x1')]},'description':{'type':Sequelize[_0x9edd('0x1')]},'host':{'type':Sequelize[_0x9edd('0x1')]},'zone':{'type':Sequelize[_0x9edd('0x1')]},'clientId':{'type':Sequelize[_0x9edd('0x1')]},'clientSecret':{'type':Sequelize[_0x9edd('0x1')]},'serverUrl':{'type':Sequelize[_0x9edd('0x1')],'allowNull':![]},'code':{'type':Sequelize['STRING']},'refreshToken':{'type':Sequelize[_0x9edd('0x1')]}};
\ No newline at end of file
index 2c0c382..ed0b125 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0x08fb=['fast-json-patch','bluebird','path','sox','to-csv','ejs','lodash','squel','crypto','desk.js','querystring','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','../../components/integrations/configuration','status','end','limit','undefined','count','offset','set','json','apply','reject','update','then','destroy','sendStatus','error','stack','name','index','ZohoAccount','fieldName','type','key','map','query','keys','filters','fields','attributes','length','model','hasOwnProperty','nolimit','where','filter','merge','VIRTUAL','options','includeAll','include','rows','catch','params','rawAttributes','intersection','find','create','body','findOne','order','sort','pick','getConfigurations','addConfiguration','AccountId','Subjects','channel','Descriptions','ZohoField','zone','https://accounts.zoho.eu','https://accounts.zoho.in','https://accounts.zoho.com.cn','POST','/oauth/v2/token','refreshToken','clientSecret','access_token','Unable\x20to\x20retrieve\x20the\x20access\x20token','getFields','clientId','serverUrl','code','host','zoho.eu','com','slice','substring','lastIndexOf','GET','format','https://www.zohoapis.%s/crm/v2/settings/fields','Calls','response','message','Owner','Subject','Description','WhoId','Call_Duration','Call_Start_Time','Call_Type','remove','includes','api_name','system_mandatory','display_label','custom_field','data_type','pick_list_values','test','statusCode','getFields,\x20%s,\x20%s,\x20%s','send','Wrong\x20credentials','eml-format','rimraf'];(function(_0x42ebba,_0x4cbf87){var _0x3fd2af=function(_0x26d999){while(--_0x26d999){_0x42ebba['push'](_0x42ebba['shift']());}};_0x3fd2af(++_0x4cbf87);}(_0x08fb,0x172));var _0xb08f=function(_0x3d7e92,_0x190ff9){_0x3d7e92=_0x3d7e92-0x0;var _0x357086=_0x08fb[_0x3d7e92];return _0x357086;};'use strict';var emlformat=require(_0xb08f('0x0'));var rimraf=require(_0xb08f('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0xb08f('0x2'));var rp=require('request-promise');var moment=require('moment');var BPromise=require(_0xb08f('0x3'));var Mustache=require('mustache');var util=require('util');var path=require(_0xb08f('0x4'));var sox=require(_0xb08f('0x5'));var csv=require(_0xb08f('0x6'));var ejs=require(_0xb08f('0x7'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0xb08f('0x8'));var squel=require(_0xb08f('0x9'));var crypto=require(_0xb08f('0xa'));var jsforce=require('jsforce');var deskjs=require(_0xb08f('0xb'));var toCsv=require(_0xb08f('0x6'));var querystring=require(_0xb08f('0xc'));var Papa=require('papaparse');var Redis=require('ioredis');var authService=require('../../components/auth/service');var qs=require('../../components/parsers/qs');var as=require('../../components/parsers/advancedSearch');var hardwareService=require('../../config/license/hardware');var logger=require(_0xb08f('0xd'))(_0xb08f('0xe'));var utils=require(_0xb08f('0xf'));var config=require(_0xb08f('0x10'));var licenseUtil=require(_0xb08f('0x11'));var db=require(_0xb08f('0x12'))['db'];var integrations=require(_0xb08f('0x13'));function respondWithStatusCode(_0x161027,_0x236cb8){_0x236cb8=_0x236cb8||0xcc;return function(_0xedbaa2){if(_0xedbaa2){return _0x161027['sendStatus'](_0x236cb8);}return _0x161027[_0xb08f('0x14')](_0x236cb8)[_0xb08f('0x15')]();};}function respondWithResult(_0x317688,_0x3314bd){_0x3314bd=_0x3314bd||0xc8;return function(_0x2cb4ca){if(_0x2cb4ca){return _0x317688[_0xb08f('0x14')](_0x3314bd)['json'](_0x2cb4ca);}};}function respondWithFilteredResult(_0x310985,_0x128452){return function(_0x2de36f){if(_0x2de36f){var _0x4800ff=typeof _0x128452['offset']==='undefined'&&typeof _0x128452[_0xb08f('0x16')]===_0xb08f('0x17');var _0x424efd=_0x2de36f[_0xb08f('0x18')];var _0x5556b4=_0x4800ff?0x0:_0x128452[_0xb08f('0x19')];var _0x23ffa6=_0x4800ff?_0x2de36f[_0xb08f('0x18')]:_0x128452[_0xb08f('0x19')]+_0x128452[_0xb08f('0x16')];var _0xf0b5f;if(_0x23ffa6>=_0x424efd){_0x23ffa6=_0x424efd;_0xf0b5f=0xc8;}else{_0xf0b5f=0xce;}_0x310985[_0xb08f('0x14')](_0xf0b5f);return _0x310985[_0xb08f('0x1a')]('Content-Range',_0x5556b4+'-'+_0x23ffa6+'/'+_0x424efd)[_0xb08f('0x1b')](_0x2de36f);}return null;};}function patchUpdates(_0x38bc7e){return function(_0x4132e3){try{jsonpatch[_0xb08f('0x1c')](_0x4132e3,_0x38bc7e,!![]);}catch(_0xff6588){return BPromise[_0xb08f('0x1d')](_0xff6588);}return _0x4132e3['save']();};}function saveUpdates(_0x57f2ff,_0x401b80){return function(_0x412cca){if(_0x412cca){return _0x412cca[_0xb08f('0x1e')](_0x57f2ff)[_0xb08f('0x1f')](function(_0x415f3a){return _0x415f3a;});}return null;};}function removeEntity(_0xaad888,_0x16eafc){return function(_0x57824e){if(_0x57824e){return _0x57824e[_0xb08f('0x20')]()['then'](function(){_0xaad888[_0xb08f('0x14')](0xcc)[_0xb08f('0x15')]();});}};}function handleEntityNotFound(_0x31eed4,_0x2a075b){return function(_0x172d1f){if(!_0x172d1f){_0x31eed4[_0xb08f('0x21')](0x194);}return _0x172d1f;};}function handleError(_0x2c71b0,_0x449c15){_0x449c15=_0x449c15||0x1f4;return function(_0x11f19a){logger[_0xb08f('0x22')](_0x11f19a[_0xb08f('0x23')]);if(_0x11f19a[_0xb08f('0x24')]){delete _0x11f19a[_0xb08f('0x24')];}_0x2c71b0[_0xb08f('0x14')](_0x449c15)['send'](_0x11f19a);};}exports[_0xb08f('0x25')]=function(_0x4033d2,_0x1ab183){var _0x26e5a4={},_0x5aac10={},_0x9b21d8={'count':0x0,'rows':[]};var _0x3665d8=_['map'](db[_0xb08f('0x26')]['rawAttributes'],function(_0x171a2b){return{'name':_0x171a2b[_0xb08f('0x27')],'type':_0x171a2b[_0xb08f('0x28')][_0xb08f('0x29')]};});_0x5aac10['model']=_[_0xb08f('0x2a')](_0x3665d8,_0xb08f('0x24'));_0x5aac10[_0xb08f('0x2b')]=_[_0xb08f('0x2c')](_0x4033d2[_0xb08f('0x2b')]);_0x5aac10[_0xb08f('0x2d')]=_['intersection'](_0x5aac10['model'],_0x5aac10['query']);_0x26e5a4['attributes']=_['intersection'](_0x5aac10['model'],qs[_0xb08f('0x2e')](_0x4033d2[_0xb08f('0x2b')][_0xb08f('0x2e')]));_0x26e5a4[_0xb08f('0x2f')]=_0x26e5a4[_0xb08f('0x2f')][_0xb08f('0x30')]?_0x26e5a4[_0xb08f('0x2f')]:_0x5aac10[_0xb08f('0x31')];if(!_0x4033d2[_0xb08f('0x2b')][_0xb08f('0x32')](_0xb08f('0x33'))){_0x26e5a4[_0xb08f('0x16')]=qs[_0xb08f('0x16')](_0x4033d2[_0xb08f('0x2b')][_0xb08f('0x16')]);_0x26e5a4[_0xb08f('0x19')]=qs['offset'](_0x4033d2['query'][_0xb08f('0x19')]);}_0x26e5a4['order']=qs['sort'](_0x4033d2[_0xb08f('0x2b')]['sort']);_0x26e5a4[_0xb08f('0x34')]=qs[_0xb08f('0x2d')](_['pick'](_0x4033d2[_0xb08f('0x2b')],_0x5aac10[_0xb08f('0x2d')]),_0x3665d8);if(_0x4033d2['query'][_0xb08f('0x35')]){_0x26e5a4['where']=_[_0xb08f('0x36')](_0x26e5a4['where'],{'$or':_['map'](_0x3665d8,function(_0x44a27d){if(_0x44a27d[_0xb08f('0x28')]!==_0xb08f('0x37')){var _0x38f4cf={};_0x38f4cf[_0x44a27d[_0xb08f('0x24')]]={'$like':'%'+_0x4033d2[_0xb08f('0x2b')][_0xb08f('0x35')]+'%'};return _0x38f4cf;}})});}_0x26e5a4=_['merge']({},_0x26e5a4,_0x4033d2[_0xb08f('0x38')]);var _0x360c67={'where':_0x26e5a4[_0xb08f('0x34')]};return db[_0xb08f('0x26')][_0xb08f('0x18')](_0x360c67)['then'](function(_0x4a235e){_0x9b21d8[_0xb08f('0x18')]=_0x4a235e;if(_0x4033d2[_0xb08f('0x2b')][_0xb08f('0x39')]){_0x26e5a4[_0xb08f('0x3a')]=[{'all':!![]}];}return db['ZohoAccount']['findAll'](_0x26e5a4);})[_0xb08f('0x1f')](function(_0x27bac5){_0x9b21d8[_0xb08f('0x3b')]=_0x27bac5;return _0x9b21d8;})[_0xb08f('0x1f')](respondWithFilteredResult(_0x1ab183,_0x26e5a4))[_0xb08f('0x3c')](handleError(_0x1ab183,null));};exports['show']=function(_0x34669d,_0x3f916a){var _0x3e71ff={'raw':![],'where':{'id':_0x34669d[_0xb08f('0x3d')]['id']}},_0x4a7e76={};_0x4a7e76[_0xb08f('0x31')]=_['keys'](db['ZohoAccount'][_0xb08f('0x3e')]);_0x4a7e76[_0xb08f('0x2b')]=_[_0xb08f('0x2c')](_0x34669d['query']);_0x4a7e76[_0xb08f('0x2d')]=_[_0xb08f('0x3f')](_0x4a7e76[_0xb08f('0x31')],_0x4a7e76['query']);_0x3e71ff[_0xb08f('0x2f')]=_[_0xb08f('0x3f')](_0x4a7e76[_0xb08f('0x31')],qs['fields'](_0x34669d[_0xb08f('0x2b')][_0xb08f('0x2e')]));_0x3e71ff[_0xb08f('0x2f')]=_0x3e71ff['attributes']['length']?_0x3e71ff[_0xb08f('0x2f')]:_0x4a7e76[_0xb08f('0x31')];if(_0x34669d[_0xb08f('0x2b')][_0xb08f('0x39')]){_0x3e71ff[_0xb08f('0x3a')]=[{'all':!![]}];}_0x3e71ff=_['merge']({},_0x3e71ff,_0x34669d[_0xb08f('0x38')]);return db[_0xb08f('0x26')][_0xb08f('0x40')](_0x3e71ff)[_0xb08f('0x1f')](handleEntityNotFound(_0x3f916a,null))['then'](respondWithResult(_0x3f916a,null))[_0xb08f('0x3c')](handleError(_0x3f916a,null));};exports[_0xb08f('0x41')]=function(_0x57c6be,_0x22f9d3){return db['ZohoAccount']['create'](_0x57c6be[_0xb08f('0x42')],{})[_0xb08f('0x1f')](respondWithResult(_0x22f9d3,0xc9))['catch'](handleError(_0x22f9d3,null));};exports[_0xb08f('0x1e')]=function(_0x57ecf3,_0x4ad767){if(_0x57ecf3[_0xb08f('0x42')]['id']){delete _0x57ecf3[_0xb08f('0x42')]['id'];}return db[_0xb08f('0x26')]['find']({'where':{'id':_0x57ecf3['params']['id']}})['then'](handleEntityNotFound(_0x4ad767,null))['then'](saveUpdates(_0x57ecf3[_0xb08f('0x42')],null))[_0xb08f('0x1f')](respondWithResult(_0x4ad767,null))[_0xb08f('0x3c')](handleError(_0x4ad767,null));};exports[_0xb08f('0x20')]=function(_0x420ec7,_0x40cd26){return db[_0xb08f('0x26')][_0xb08f('0x40')]({'where':{'id':_0x420ec7[_0xb08f('0x3d')]['id']}})[_0xb08f('0x1f')](handleEntityNotFound(_0x40cd26,null))['then'](removeEntity(_0x40cd26,null))['catch'](handleError(_0x40cd26,null));};exports['getConfigurations']=function(_0x39fd1f,_0x58c5af,_0x5b7e4d){var _0x543ed5={};var _0x4f2d78={};var _0x491402;var _0x169273;return db[_0xb08f('0x26')][_0xb08f('0x43')]({'where':{'id':_0x39fd1f[_0xb08f('0x3d')]['id']}})['then'](handleEntityNotFound(_0x58c5af,null))['then'](function(_0x399acd){if(_0x399acd){_0x491402=_0x399acd;_0x4f2d78[_0xb08f('0x31')]=_[_0xb08f('0x2c')](db['ZohoConfiguration'][_0xb08f('0x3e')]);_0x4f2d78[_0xb08f('0x2b')]=_[_0xb08f('0x2c')](_0x39fd1f[_0xb08f('0x2b')]);_0x4f2d78['filters']=_['intersection'](_0x4f2d78[_0xb08f('0x31')],_0x4f2d78[_0xb08f('0x2b')]);_0x543ed5['attributes']=_[_0xb08f('0x3f')](_0x4f2d78['model'],qs['fields'](_0x39fd1f[_0xb08f('0x2b')][_0xb08f('0x2e')]));_0x543ed5[_0xb08f('0x2f')]=_0x543ed5[_0xb08f('0x2f')]['length']?_0x543ed5['attributes']:_0x4f2d78['model'];_0x543ed5[_0xb08f('0x44')]=qs[_0xb08f('0x45')](_0x39fd1f['query']['sort']);_0x543ed5[_0xb08f('0x34')]=qs[_0xb08f('0x2d')](_[_0xb08f('0x46')](_0x39fd1f[_0xb08f('0x2b')],_0x4f2d78[_0xb08f('0x2d')]));if(_0x39fd1f['query']['filter']){_0x543ed5['where']=_[_0xb08f('0x36')](_0x543ed5[_0xb08f('0x34')],{'$or':_[_0xb08f('0x2a')](_0x543ed5['attributes'],function(_0x53b7ba){var _0x5a33c1={};_0x5a33c1[_0x53b7ba]={'$like':'%'+_0x39fd1f[_0xb08f('0x2b')]['filter']+'%'};return _0x5a33c1;})});}_0x543ed5=_[_0xb08f('0x36')]({},_0x543ed5,_0x39fd1f[_0xb08f('0x38')]);return _0x491402[_0xb08f('0x47')](_0x543ed5);}})['then'](function(_0x2c18c0){if(_0x2c18c0){_0x169273=_0x2c18c0['length'];if(!_0x39fd1f[_0xb08f('0x2b')][_0xb08f('0x32')](_0xb08f('0x33'))){_0x543ed5['limit']=qs[_0xb08f('0x16')](_0x39fd1f[_0xb08f('0x2b')][_0xb08f('0x16')]);_0x543ed5[_0xb08f('0x19')]=qs[_0xb08f('0x19')](_0x39fd1f[_0xb08f('0x2b')][_0xb08f('0x19')]);}return _0x491402[_0xb08f('0x47')](_0x543ed5);}})[_0xb08f('0x1f')](function(_0x34fc67){if(_0x34fc67){return _0x34fc67?{'count':_0x169273,'rows':_0x34fc67}:null;}})[_0xb08f('0x1f')](respondWithResult(_0x58c5af,null))[_0xb08f('0x3c')](handleError(_0x58c5af,null));};exports[_0xb08f('0x48')]=function(_0x121587,_0x271d3a,_0x2c0648){if(_0x121587[_0xb08f('0x42')]['id']){delete _0x121587[_0xb08f('0x42')]['id'];}return db[_0xb08f('0x26')][_0xb08f('0x43')]({'where':{'id':_0x121587[_0xb08f('0x3d')]['id']}})[_0xb08f('0x1f')](handleEntityNotFound(_0x271d3a,null))[_0xb08f('0x1f')](function(_0x326a5c){if(_0x326a5c){_0x121587[_0xb08f('0x42')][_0xb08f('0x49')]=_0x326a5c['id'];_0x121587[_0xb08f('0x42')][_0xb08f('0x4a')]=integrations['getSubjects'](_0x121587[_0xb08f('0x42')][_0xb08f('0x4b')],_0x121587[_0xb08f('0x42')][_0xb08f('0x28')]);_0x121587['body'][_0xb08f('0x4c')]=integrations['getDescriptions'](_0x121587['body']['channel'],_0x121587['body']['type']);return db['ZohoConfiguration'][_0xb08f('0x41')](_0x121587[_0xb08f('0x42')],{'include':[{'model':db[_0xb08f('0x4d')],'as':_0xb08f('0x4a')},{'model':db[_0xb08f('0x4d')],'as':'Descriptions'}]});}return null;})[_0xb08f('0x1f')](respondWithResult(_0x271d3a,null))[_0xb08f('0x3c')](handleError(_0x271d3a,null));};function getAccessToken(_0x1089bf){return new Promise(function(_0x564903,_0x4c2a7c){var _0x13c3e0;switch(_0x1089bf[_0xb08f('0x4e')]){case'US':_0x13c3e0='https://accounts.zoho.com';break;case'AU':_0x13c3e0='https://accounts.zoho.com.au';break;case'EU':_0x13c3e0=_0xb08f('0x4f');break;case'IN':_0x13c3e0=_0xb08f('0x50');break;case'CN':_0x13c3e0=_0xb08f('0x51');break;default:_0x13c3e0=_0xb08f('0x4f');break;}var _0x14ea1a={'method':_0xb08f('0x52'),'uri':_0x13c3e0+_0xb08f('0x53'),'qs':{'refresh_token':_0x1089bf[_0xb08f('0x54')],'client_id':_0x1089bf['clientId'],'client_secret':_0x1089bf[_0xb08f('0x55')],'grant_type':'refresh_token'},'json':!![]};return rp(_0x14ea1a)[_0xb08f('0x1f')](function(_0x56ee67){if(_0x56ee67[_0xb08f('0x56')]){_0x564903(_0x56ee67['access_token']);}else{_0x4c2a7c(_0xb08f('0x57'));}})[_0xb08f('0x3c')](function(_0x5a6470){_0x4c2a7c(_0x5a6470);});});}exports[_0xb08f('0x58')]=function(_0x496b9c,_0x571a0d,_0x163b3a){var _0x2519a4,_0x753824,_0x365e54,_0x398f87,_0xb23c9b;return db[_0xb08f('0x26')][_0xb08f('0x43')]({'where':{'id':_0x496b9c[_0xb08f('0x3d')]['id']},'attributes':['id','host','zone',_0xb08f('0x59'),'clientSecret',_0xb08f('0x5a'),_0xb08f('0x5b'),_0xb08f('0x54')]})['then'](handleEntityNotFound(_0x571a0d,null))[_0xb08f('0x1f')](function(_0x4b2b2a){_0xb23c9b=_0x4b2b2a;_0x2519a4=_0xb23c9b[_0xb08f('0x5c')];_0x753824=_0x2519a4===_0xb08f('0x5d')?'eu':_0xb08f('0x5e');_0x365e54=_0xb23c9b[_0xb08f('0x5a')];var _0x22bff8=_0x365e54[_0xb08f('0x5f')](-0x1);if(_0x22bff8==='/'||_0x22bff8==='\x5c'||_0x22bff8===':'){_0x365e54=_0x365e54[_0xb08f('0x60')](0x0,_0x365e54[_0xb08f('0x61')](_0x22bff8));}if(!_0xb23c9b[_0xb08f('0x54')]){throw new Error('Refresh\x20Token\x20not\x20available\x20for\x20the\x20account');}return getAccessToken(_0xb23c9b);})[_0xb08f('0x1f')](function(_0x3863e0){if(_0x3863e0){return rp({'method':_0xb08f('0x62'),'uri':util[_0xb08f('0x63')](_0xb08f('0x64'),_0x753824),'qs':{'module':_0xb08f('0x65')},'headers':{'Authorization':'Zoho-oauthtoken\x20'+_0x3863e0},'json':!![]});}})[_0xb08f('0x1f')](function(_0x37dd1e){if(_0x37dd1e){if(_0x37dd1e[_0xb08f('0x66')]&&_0x37dd1e[_0xb08f('0x66')]['error']){throw new Error(_0x37dd1e[_0xb08f('0x66')][_0xb08f('0x22')][_0xb08f('0x67')]);}var _0x242483=[];var _0x251566=[];var _0x5d0a36=[_0xb08f('0x68'),_0xb08f('0x69'),_0xb08f('0x6a'),_0xb08f('0x6b'),_0xb08f('0x6c'),'Call_Result',_0xb08f('0x6d'),_0xb08f('0x6e')];_0x251566=_[_0xb08f('0x6f')](_0x37dd1e[_0xb08f('0x2e')],function(_0x3a6936){return _0x5d0a36[_0xb08f('0x70')](_0x3a6936[_0xb08f('0x71')]);});for(var _0x50499c=0x0;_0x50499c<_0x251566[_0xb08f('0x30')];_0x50499c++){if(_0x251566[_0x50499c][_0xb08f('0x72')]===![]){_0x242483['push']({'id':_0x251566[_0x50499c]['id'],'name':_0x251566[_0x50499c][_0xb08f('0x73')],'custom':_0x251566[_0x50499c][_0xb08f('0x74')],'options':_0x251566[_0x50499c][_0xb08f('0x75')]==='picklist'&&_0x251566[_0x50499c][_0xb08f('0x76')][_0xb08f('0x30')]>-0x1?_['map'](_0x251566[_0x50499c][_0xb08f('0x76')],function(_0x91c4a3){return{'name':_0x91c4a3,'value':_0x91c4a3};}):[]});}}return{'count':_0x242483[_0xb08f('0x30')],'rows':_0x242483};}else{return{'count':0x0,'rows':[]};}})[_0xb08f('0x1f')](respondWithResult(_0x571a0d,null))[_0xb08f('0x3c')](function(_0x2b45f7){var _0x3c909f=_0x496b9c['query'][_0xb08f('0x77')]?0x1f4:_0x2b45f7[_0xb08f('0x78')]||0x1f4;logger[_0xb08f('0x22')](_0xb08f('0x79'),'getFields',_0x3c909f,JSON['stringify'](_0x2b45f7));delete _0x2b45f7[_0xb08f('0x24')];if(_0x3c909f===0x191){_0x3c909f=0x190;}_0x571a0d[_0xb08f('0x14')](_0x3c909f)[_0xb08f('0x7a')](_0x496b9c[_0xb08f('0x2b')][_0xb08f('0x77')]?{'message':_0xb08f('0x7b'),'statusCode':_0x2b45f7[_0xb08f('0x78')]}:_0x2b45f7);});};
\ No newline at end of file
index 35e9bf0..5be2fd2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0xc352=['error','ZohoAccount,\x20Unable\x20to\x20generate\x20the\x20refresh\x20token\x20for\x20account\x20\x22%s\x22\x20#%d','name','inspect','catch','https://accounts.zoho.com.cn','https://accounts.zoho.eu','POST','authorization_code','then','format','../../config/logger','api','moment','bluebird','request-promise','rimraf','../../config/environment','../../components/integrations/configuration','exports','define','ZohoAccount','int_zoho_accounts','zone','changed','serverUrl','clientSecret','code','host','substring','lastIndexOf','https://accounts.zoho.com','https://accounts.zoho.com.au','https://accounts.zoho.in','/oauth/v2/token','clientId','application/x-www-form-urlencoded','parse','refresh_token','refreshToken','info','ZohoAccount,\x20Refresh\x20token\x20successfully\x20generated\x20for\x20account\x20\x22%s\x22\x20#%d'];(function(_0x9cef1a,_0x1fca6e){var _0x1cc1fd=function(_0x267f21){while(--_0x267f21){_0x9cef1a['push'](_0x9cef1a['shift']());}};_0x1cc1fd(++_0x1fca6e);}(_0xc352,0xdd));var _0x2c35=function(_0xd816e2,_0x5edac2){_0xd816e2=_0xd816e2-0x0;var _0x1f5924=_0xc352[_0xd816e2];return _0x1f5924;};'use strict';var _=require('lodash');var util=require('util');var logger=require(_0x2c35('0x0'))(_0x2c35('0x1'));var moment=require(_0x2c35('0x2'));var BPromise=require(_0x2c35('0x3'));var rp=require(_0x2c35('0x4'));var fs=require('fs');var path=require('path');var rimraf=require(_0x2c35('0x5'));var config=require(_0x2c35('0x6'));var attributes=require('./intZohoAccount.attributes');var integrations=require(_0x2c35('0x7'));module[_0x2c35('0x8')]=function(_0x1664f3,_0x50714b){return _0x1664f3[_0x2c35('0x9')](_0x2c35('0xa'),attributes,{'tableName':_0x2c35('0xb'),'paranoid':![],'indexes':[],'timestamps':!![],'hooks':{'beforeCreate':function(_0x585336,_0x4567c2,_0x1adc9a){if(_0x585336['changed'](_0x2c35('0xc'))||_0x585336[_0x2c35('0xd')](_0x2c35('0xe'))||_0x585336[_0x2c35('0xd')]('clientId')||_0x585336[_0x2c35('0xd')](_0x2c35('0xf'))||_0x585336[_0x2c35('0xd')](_0x2c35('0x10'))||_0x585336['changed'](_0x2c35('0x11'))){var _0x4202c4,_0x51c89c;_0x4202c4=_0x585336['serverUrl'];var _0x520844=_0x4202c4['slice'](-0x1);if(_0x520844==='/'||_0x520844==='\x5c'||_0x520844===':'){_0x4202c4=_0x4202c4[_0x2c35('0x12')](0x0,_0x4202c4[_0x2c35('0x13')](_0x520844));}switch(_0x585336[_0x2c35('0xc')]){case'US':_0x51c89c=_0x2c35('0x14');break;case'AU':_0x51c89c=_0x2c35('0x15');break;case'IN':_0x51c89c=_0x2c35('0x16');break;case'CN':_0x51c89c='https://accounts.zoho.com.cn';break;default:_0x51c89c='https://accounts.zoho.eu';break;}var _0x2f6e89={'method':'POST','uri':_0x51c89c+_0x2c35('0x17'),'form':{'grant_type':'authorization_code','client_id':_0x585336[_0x2c35('0x18')],'client_secret':_0x585336[_0x2c35('0xf')],'redirect_uri':_0x585336['serverUrl'],'code':_0x585336[_0x2c35('0x10')]},'headers':{'Content-Type':_0x2c35('0x19')}};return rp(_0x2f6e89)['then'](function(_0x5d1776){var _0x5d70fb=JSON[_0x2c35('0x1a')](_0x5d1776);if(_0x5d70fb[_0x2c35('0x1b')]){_0x585336[_0x2c35('0x1c')]=_0x5d70fb[_0x2c35('0x1b')];logger[_0x2c35('0x1d')](util['format'](_0x2c35('0x1e'),_0x585336['name'],_0x585336['id']));}else{logger[_0x2c35('0x1f')](util['format'](_0x2c35('0x20'),_0x585336[_0x2c35('0x21')],_0x585336['id']),util[_0x2c35('0x22')](_0x5d70fb,{'showHidden':![],'depth':null}));}return _0x1adc9a(null,_0x4567c2);})[_0x2c35('0x23')](function(_0x4c7e63){logger[_0x2c35('0x1f')](util['format'](_0x2c35('0x20'),_0x585336[_0x2c35('0x21')],_0x585336['id']),util['inspect'](parsedResult,{'showHidden':![],'depth':null}));return _0x1adc9a(_0x4c7e63);});}else{return _0x1adc9a(null,_0x4567c2);}},'beforeUpdate':function(_0x6d70dd,_0x153aa6,_0x199a3d){if(_0x6d70dd[_0x2c35('0xd')](_0x2c35('0xc'))||_0x6d70dd[_0x2c35('0xd')](_0x2c35('0xe'))||_0x6d70dd[_0x2c35('0xd')](_0x2c35('0x18'))||_0x6d70dd[_0x2c35('0xd')](_0x2c35('0xf'))||_0x6d70dd[_0x2c35('0xd')]('code')||_0x6d70dd[_0x2c35('0xd')](_0x2c35('0x11'))){var _0x50874b,_0x4c95e6;_0x50874b=_0x6d70dd[_0x2c35('0xe')];var _0xe604f1=_0x50874b['slice'](-0x1);if(_0xe604f1==='/'||_0xe604f1==='\x5c'||_0xe604f1===':'){_0x50874b=_0x50874b[_0x2c35('0x12')](0x0,_0x50874b[_0x2c35('0x13')](_0xe604f1));}switch(_0x6d70dd[_0x2c35('0xc')]){case'US':_0x4c95e6=_0x2c35('0x14');break;case'AU':_0x4c95e6='https://accounts.zoho.com.au';break;case'IN':_0x4c95e6='https://accounts.zoho.in';break;case'CN':_0x4c95e6=_0x2c35('0x24');break;default:_0x4c95e6=_0x2c35('0x25');break;}var _0x44430d={'method':_0x2c35('0x26'),'uri':_0x4c95e6+_0x2c35('0x17'),'form':{'grant_type':_0x2c35('0x27'),'client_id':_0x6d70dd[_0x2c35('0x18')],'client_secret':_0x6d70dd[_0x2c35('0xf')],'redirect_uri':_0x6d70dd[_0x2c35('0xe')],'code':_0x6d70dd[_0x2c35('0x10')]},'headers':{'Content-Type':_0x2c35('0x19')}};return rp(_0x44430d)[_0x2c35('0x28')](function(_0x494d9e){var _0x1939a1=JSON[_0x2c35('0x1a')](_0x494d9e);if(_0x1939a1[_0x2c35('0x1b')]){_0x6d70dd[_0x2c35('0x1c')]=_0x1939a1[_0x2c35('0x1b')];logger[_0x2c35('0x1d')](util[_0x2c35('0x29')]('ZohoAccount,\x20Refresh\x20token\x20successfully\x20generated\x20for\x20account\x20\x22%s\x22\x20#%d',_0x6d70dd[_0x2c35('0x21')],_0x6d70dd['id']));}else{logger['error'](util[_0x2c35('0x29')](_0x2c35('0x20'),_0x6d70dd['name'],_0x6d70dd['id']),util[_0x2c35('0x22')](_0x1939a1,{'showHidden':![],'depth':null}));}return _0x199a3d(null,_0x153aa6);})[_0x2c35('0x23')](function(_0x21aef3){logger[_0x2c35('0x1f')](util[_0x2c35('0x29')](_0x2c35('0x20'),_0x6d70dd['name'],_0x6d70dd['id']),util[_0x2c35('0x22')](parsedResult,{'showHidden':![],'depth':null}));return _0x199a3d(_0x21aef3);});}else{return _0x199a3d(null,_0x153aa6);}}}});};
\ No newline at end of file
index 6a21f60..cf00d67 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0xcd4d=['include','map','model','GetZohoAccount','ShowZohoAccount','find','lodash','util','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','then','ZohoAccount,\x20%s,\x20%s','request\x20sent','debug','ZohoAccount,\x20%s,\x20%s,\x20%s','error','code','message','info','result','catch','ZohoAccount','findAll','options','raw','where','attributes','limit'];(function(_0x5d3acc,_0x457965){var _0x46488b=function(_0x45fe35){while(--_0x45fe35){_0x5d3acc['push'](_0x5d3acc['shift']());}};_0x46488b(++_0x457965);}(_0xcd4d,0xe4));var _0xdcd4=function(_0x4db47c,_0x58bff8){_0x4db47c=_0x4db47c-0x0;var _0x1ec1e5=_0xcd4d[_0x4db47c];return _0x1ec1e5;};'use strict';var _=require(_0xdcd4('0x0'));var util=require(_0xdcd4('0x1'));var moment=require('moment');var BPromise=require(_0xdcd4('0x2'));var rs=require(_0xdcd4('0x3'));var fs=require('fs');var Redis=require(_0xdcd4('0x4'));var db=require(_0xdcd4('0x5'))['db'];var utils=require(_0xdcd4('0x6'));var logger=require(_0xdcd4('0x7'))(_0xdcd4('0x8'));var config=require(_0xdcd4('0x9'));var jayson=require(_0xdcd4('0xa'));var client=jayson[_0xdcd4('0xb')][_0xdcd4('0xc')]({'port':0x232a});function respondWithRpcPromise(_0x302b60,_0x5b57f6,_0x17f848){return new BPromise(function(_0x198d6c,_0xc0cf59){return client['request'](_0x302b60,_0x17f848)[_0xdcd4('0xd')](function(_0x3cae6d){logger['info'](_0xdcd4('0xe'),_0x5b57f6,_0xdcd4('0xf'));logger[_0xdcd4('0x10')](_0xdcd4('0x11'),_0x5b57f6,_0xdcd4('0xf'),JSON['stringify'](_0x3cae6d));if(_0x3cae6d[_0xdcd4('0x12')]){if(_0x3cae6d[_0xdcd4('0x12')][_0xdcd4('0x13')]===0x1f4){logger[_0xdcd4('0x12')](_0xdcd4('0xe'),_0x5b57f6,_0x3cae6d['error'][_0xdcd4('0x14')]);return _0xc0cf59(_0x3cae6d[_0xdcd4('0x12')]['message']);}logger[_0xdcd4('0x12')](_0xdcd4('0xe'),_0x5b57f6,_0x3cae6d['error']['message']);return _0x198d6c(_0x3cae6d[_0xdcd4('0x12')][_0xdcd4('0x14')]);}else{logger[_0xdcd4('0x15')](_0xdcd4('0xe'),_0x5b57f6,_0xdcd4('0xf'));_0x198d6c(_0x3cae6d[_0xdcd4('0x16')][_0xdcd4('0x14')]);}})[_0xdcd4('0x17')](function(_0xf57175){logger[_0xdcd4('0x12')](_0xdcd4('0xe'),_0x5b57f6,_0xf57175);_0xc0cf59(_0xf57175);});});}exports['GetZohoAccount']=function(_0x579125){var _0x33608f=this;return new Promise(function(_0x7682f8,_0x13331d){return db[_0xdcd4('0x18')][_0xdcd4('0x19')]({'raw':_0x579125[_0xdcd4('0x1a')]?_0x579125[_0xdcd4('0x1a')][_0xdcd4('0x1b')]===undefined?!![]:![]:!![],'where':_0x579125[_0xdcd4('0x1a')]?_0x579125[_0xdcd4('0x1a')][_0xdcd4('0x1c')]||null:null,'attributes':_0x579125[_0xdcd4('0x1a')]?_0x579125[_0xdcd4('0x1a')][_0xdcd4('0x1d')]||null:null,'limit':_0x579125[_0xdcd4('0x1a')]?_0x579125['options'][_0xdcd4('0x1e')]||null:null,'include':_0x579125[_0xdcd4('0x1a')]?_0x579125['options'][_0xdcd4('0x1f')]?_[_0xdcd4('0x20')](_0x579125[_0xdcd4('0x1a')]['include'],function(_0x46768f){return{'model':db[_0x46768f[_0xdcd4('0x21')]],'as':_0x46768f['as'],'attributes':_0x46768f[_0xdcd4('0x1d')],'include':_0x46768f['include']?_[_0xdcd4('0x20')](_0x46768f[_0xdcd4('0x1f')],function(_0x48b046){return{'model':db[_0x48b046[_0xdcd4('0x21')]],'as':_0x48b046['as'],'attributes':_0x48b046[_0xdcd4('0x1d')],'include':_0x48b046[_0xdcd4('0x1f')]?_[_0xdcd4('0x20')](_0x48b046[_0xdcd4('0x1f')],function(_0x44c843){return{'model':db[_0x44c843[_0xdcd4('0x21')]],'as':_0x44c843['as'],'attributes':_0x44c843[_0xdcd4('0x1d')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x134c00){logger['info'](_0xdcd4('0x22'),_0x579125);logger[_0xdcd4('0x10')]('GetZohoAccount',_0x579125,JSON['stringify'](_0x134c00));_0x7682f8(_0x134c00);})['catch'](function(_0x58cf67){logger[_0xdcd4('0x12')](_0xdcd4('0x22'),_0x58cf67[_0xdcd4('0x14')],_0x579125);_0x13331d(_0x33608f['error'](0x1f4,_0x58cf67[_0xdcd4('0x14')]));});});};exports[_0xdcd4('0x23')]=function(_0x565e9e){var _0x35d1e3=this;return new Promise(function(_0x2e11d6,_0x21aaaf){return db[_0xdcd4('0x18')][_0xdcd4('0x24')]({'raw':_0x565e9e[_0xdcd4('0x1a')]?_0x565e9e['options'][_0xdcd4('0x1b')]===undefined?!![]:![]:!![],'where':_0x565e9e['options']?_0x565e9e[_0xdcd4('0x1a')][_0xdcd4('0x1c')]||null:null,'attributes':_0x565e9e[_0xdcd4('0x1a')]?_0x565e9e[_0xdcd4('0x1a')][_0xdcd4('0x1d')]||null:null,'include':_0x565e9e['options']?_0x565e9e['options'][_0xdcd4('0x1f')]?_[_0xdcd4('0x20')](_0x565e9e[_0xdcd4('0x1a')]['include'],function(_0x3524b8){return{'model':db[_0x3524b8[_0xdcd4('0x21')]],'as':_0x3524b8['as'],'attributes':_0x3524b8['attributes'],'include':_0x3524b8['include']?_[_0xdcd4('0x20')](_0x3524b8[_0xdcd4('0x1f')],function(_0x3b93f6){return{'model':db[_0x3b93f6[_0xdcd4('0x21')]],'as':_0x3b93f6['as'],'attributes':_0x3b93f6[_0xdcd4('0x1d')],'include':_0x3b93f6[_0xdcd4('0x1f')]?_['map'](_0x3b93f6[_0xdcd4('0x1f')],function(_0x49db40){return{'model':db[_0x49db40[_0xdcd4('0x21')]],'as':_0x49db40['as'],'attributes':_0x49db40[_0xdcd4('0x1d')]};}):[]};}):[]};}):[]:[]})[_0xdcd4('0xd')](function(_0x4ff005){logger[_0xdcd4('0x15')](_0xdcd4('0x23'),_0x565e9e);logger[_0xdcd4('0x10')](_0xdcd4('0x23'),_0x565e9e,JSON['stringify'](_0x4ff005));_0x2e11d6(_0x4ff005);})['catch'](function(_0x5bc94f){logger[_0xdcd4('0x12')]('ShowZohoAccount',_0x5bc94f[_0xdcd4('0x14')],_0x565e9e);_0x21aaaf(_0x35d1e3[_0xdcd4('0x12')](0x1f4,_0x5bc94f[_0xdcd4('0x14')]));});});};
\ No newline at end of file
index ab234f6..7a1c47c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0xf9fd=['fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./intZohoConfiguration.controller','isAuthenticated','index','get','/:id','show','/:id/fields','/:id/descriptions','getDescriptions','post','create','delete','destroy','multer','util','path','connect-timeout','express','Router'];(function(_0x710815,_0x520da8){var _0x5b3b89=function(_0x2e1a8e){while(--_0x2e1a8e){_0x710815['push'](_0x710815['shift']());}};_0x5b3b89(++_0x520da8);}(_0xf9fd,0xe0));var _0xdf9f=function(_0x14add3,_0x13ce8d){_0x14add3=_0x14add3-0x0;var _0x4a174f=_0xf9fd[_0x14add3];return _0x4a174f;};'use strict';var multer=require(_0xdf9f('0x0'));var util=require(_0xdf9f('0x1'));var path=require(_0xdf9f('0x2'));var timeout=require(_0xdf9f('0x3'));var express=require(_0xdf9f('0x4'));var router=express[_0xdf9f('0x5')]();var fs_extra=require(_0xdf9f('0x6'));var auth=require(_0xdf9f('0x7'));var interaction=require(_0xdf9f('0x8'));var config=require(_0xdf9f('0x9'));var controller=require(_0xdf9f('0xa'));router['get']('/',auth[_0xdf9f('0xb')](),controller[_0xdf9f('0xc')]);router[_0xdf9f('0xd')](_0xdf9f('0xe'),auth[_0xdf9f('0xb')](),controller[_0xdf9f('0xf')]);router['get'](_0xdf9f('0x10'),auth[_0xdf9f('0xb')](),controller['getFields']);router['get']('/:id/subjects',auth[_0xdf9f('0xb')](),controller['getSubjects']);router[_0xdf9f('0xd')](_0xdf9f('0x11'),auth[_0xdf9f('0xb')](),controller[_0xdf9f('0x12')]);router[_0xdf9f('0x13')]('/',auth[_0xdf9f('0xb')](),controller[_0xdf9f('0x14')]);router['put']('/:id',auth[_0xdf9f('0xb')](),controller['update']);router[_0xdf9f('0x15')]('/:id',auth[_0xdf9f('0xb')](),controller[_0xdf9f('0x16')]);module['exports']=router;
\ No newline at end of file
index 36844eb..ca6eaa3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0x5b84=['nothing','contact_lead','exports','STRING','ENUM','contact'];(function(_0x4336b4,_0x5c8513){var _0x5ea3ed=function(_0x45fa34){while(--_0x45fa34){_0x4336b4['push'](_0x4336b4['shift']());}};_0x5ea3ed(++_0x5c8513);}(_0x5b84,0x1ac));var _0x45b8=function(_0x32da60,_0x50c193){_0x32da60=_0x32da60-0x0;var _0x33bd68=_0x5b84[_0x32da60];return _0x33bd68;};'use strict';var Sequelize=require('sequelize');module[_0x45b8('0x0')]={'name':{'type':Sequelize[_0x45b8('0x1')]},'moduleCreate':{'type':Sequelize[_0x45b8('0x2')]('lead',_0x45b8('0x3'),_0x45b8('0x4')),'defaultValue':'lead'},'moduleSearch':{'type':Sequelize[_0x45b8('0x2')](_0x45b8('0x5'),_0x45b8('0x3'),'lead'),'defaultValue':'contact_lead'},'description':{'type':Sequelize[_0x45b8('0x1')]}};
\ No newline at end of file
index 2b85311..14719ca 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0x2464=['attributes','fields','length','order','sort','where','pick','filter','merge','VIRTUAL','ZohoConfiguration','rows','keys','include','options','find','catch','create','body','params','getFields','findOne','ZohoField','hasOwnProperty','nolimit','getSubjects','getDescriptions','eml-format','fast-json-patch','request-promise','bluebird','mustache','path','sox','to-csv','ejs','fs-extra','lodash','squel','jsforce','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','api','../../config/utils','../../config/environment','../../mysqldb','sendStatus','status','end','json','offset','undefined','limit','count','set','Content-Range','apply','reject','save','update','then','destroy','error','name','index','map','rawAttributes','fieldName','type','key','model','query','filters','intersection'];(function(_0x1098db,_0x39ba6b){var _0x14f090=function(_0x473ffe){while(--_0x473ffe){_0x1098db['push'](_0x1098db['shift']());}};_0x14f090(++_0x39ba6b);}(_0x2464,0x6a));var _0x4246=function(_0x482039,_0x121010){_0x482039=_0x482039-0x0;var _0x525438=_0x2464[_0x482039];return _0x525438;};'use strict';var emlformat=require(_0x4246('0x0'));var rimraf=require('rimraf');var zipdir=require('zip-dir');var jsonpatch=require(_0x4246('0x1'));var rp=require(_0x4246('0x2'));var moment=require('moment');var BPromise=require(_0x4246('0x3'));var Mustache=require(_0x4246('0x4'));var util=require('util');var path=require(_0x4246('0x5'));var sox=require(_0x4246('0x6'));var csv=require(_0x4246('0x7'));var ejs=require(_0x4246('0x8'));var fs=require('fs');var fs_extra=require(_0x4246('0x9'));var _=require(_0x4246('0xa'));var squel=require(_0x4246('0xb'));var crypto=require('crypto');var jsforce=require(_0x4246('0xc'));var deskjs=require('desk.js');var toCsv=require('to-csv');var querystring=require(_0x4246('0xd'));var Papa=require(_0x4246('0xe'));var Redis=require(_0x4246('0xf'));var authService=require(_0x4246('0x10'));var qs=require(_0x4246('0x11'));var as=require(_0x4246('0x12'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x4246('0x13'))(_0x4246('0x14'));var utils=require(_0x4246('0x15'));var config=require(_0x4246('0x16'));var licenseUtil=require('../../config/license/util');var db=require(_0x4246('0x17'))['db'];function respondWithStatusCode(_0x1998be,_0x2f5adb){_0x2f5adb=_0x2f5adb||0xcc;return function(_0x2e6ad3){if(_0x2e6ad3){return _0x1998be[_0x4246('0x18')](_0x2f5adb);}return _0x1998be[_0x4246('0x19')](_0x2f5adb)[_0x4246('0x1a')]();};}function respondWithResult(_0x5d475e,_0x2cb8db){_0x2cb8db=_0x2cb8db||0xc8;return function(_0x146893){if(_0x146893){return _0x5d475e[_0x4246('0x19')](_0x2cb8db)[_0x4246('0x1b')](_0x146893);}};}function respondWithFilteredResult(_0x428101,_0x19218f){return function(_0x458d60){if(_0x458d60){var _0x5b6f01=typeof _0x19218f[_0x4246('0x1c')]===_0x4246('0x1d')&&typeof _0x19218f[_0x4246('0x1e')]===_0x4246('0x1d');var _0x568400=_0x458d60['count'];var _0x49acb6=_0x5b6f01?0x0:_0x19218f[_0x4246('0x1c')];var _0x4cc83a=_0x5b6f01?_0x458d60[_0x4246('0x1f')]:_0x19218f[_0x4246('0x1c')]+_0x19218f['limit'];var _0x4b5ebd;if(_0x4cc83a>=_0x568400){_0x4cc83a=_0x568400;_0x4b5ebd=0xc8;}else{_0x4b5ebd=0xce;}_0x428101[_0x4246('0x19')](_0x4b5ebd);return _0x428101[_0x4246('0x20')](_0x4246('0x21'),_0x49acb6+'-'+_0x4cc83a+'/'+_0x568400)['json'](_0x458d60);}return null;};}function patchUpdates(_0x2a8736){return function(_0x51c864){try{jsonpatch[_0x4246('0x22')](_0x51c864,_0x2a8736,!![]);}catch(_0x236ec2){return BPromise[_0x4246('0x23')](_0x236ec2);}return _0x51c864[_0x4246('0x24')]();};}function saveUpdates(_0x12a6d7,_0x176a51){return function(_0x32f4f9){if(_0x32f4f9){return _0x32f4f9[_0x4246('0x25')](_0x12a6d7)[_0x4246('0x26')](function(_0x4c8841){return _0x4c8841;});}return null;};}function removeEntity(_0x16c3f6,_0x4aaa64){return function(_0x4c03e3){if(_0x4c03e3){return _0x4c03e3[_0x4246('0x27')]()['then'](function(){_0x16c3f6[_0x4246('0x19')](0xcc)[_0x4246('0x1a')]();});}};}function handleEntityNotFound(_0x479cc8,_0x100748){return function(_0x4ec41e){if(!_0x4ec41e){_0x479cc8[_0x4246('0x18')](0x194);}return _0x4ec41e;};}function handleError(_0x460013,_0x459d23){_0x459d23=_0x459d23||0x1f4;return function(_0x49896a){logger[_0x4246('0x28')](_0x49896a['stack']);if(_0x49896a['name']){delete _0x49896a[_0x4246('0x29')];}_0x460013[_0x4246('0x19')](_0x459d23)['send'](_0x49896a);};}exports[_0x4246('0x2a')]=function(_0x525810,_0x15c69b){var _0x376233={},_0x2ddf9e={},_0x22baf5={'count':0x0,'rows':[]};var _0x6997b4=_[_0x4246('0x2b')](db['ZohoConfiguration'][_0x4246('0x2c')],function(_0x4065cd){return{'name':_0x4065cd[_0x4246('0x2d')],'type':_0x4065cd[_0x4246('0x2e')][_0x4246('0x2f')]};});_0x2ddf9e[_0x4246('0x30')]=_['map'](_0x6997b4,_0x4246('0x29'));_0x2ddf9e[_0x4246('0x31')]=_['keys'](_0x525810['query']);_0x2ddf9e[_0x4246('0x32')]=_[_0x4246('0x33')](_0x2ddf9e['model'],_0x2ddf9e[_0x4246('0x31')]);_0x376233[_0x4246('0x34')]=_[_0x4246('0x33')](_0x2ddf9e['model'],qs['fields'](_0x525810[_0x4246('0x31')][_0x4246('0x35')]));_0x376233[_0x4246('0x34')]=_0x376233[_0x4246('0x34')][_0x4246('0x36')]?_0x376233['attributes']:_0x2ddf9e['model'];if(!_0x525810[_0x4246('0x31')]['hasOwnProperty']('nolimit')){_0x376233[_0x4246('0x1e')]=qs['limit'](_0x525810[_0x4246('0x31')][_0x4246('0x1e')]);_0x376233[_0x4246('0x1c')]=qs[_0x4246('0x1c')](_0x525810[_0x4246('0x31')]['offset']);}_0x376233[_0x4246('0x37')]=qs['sort'](_0x525810[_0x4246('0x31')][_0x4246('0x38')]);_0x376233[_0x4246('0x39')]=qs['filters'](_[_0x4246('0x3a')](_0x525810['query'],_0x2ddf9e[_0x4246('0x32')]),_0x6997b4);if(_0x525810[_0x4246('0x31')][_0x4246('0x3b')]){_0x376233[_0x4246('0x39')]=_[_0x4246('0x3c')](_0x376233[_0x4246('0x39')],{'$or':_[_0x4246('0x2b')](_0x6997b4,function(_0xacd5c3){if(_0xacd5c3[_0x4246('0x2e')]!==_0x4246('0x3d')){var _0x16379c={};_0x16379c[_0xacd5c3[_0x4246('0x29')]]={'$like':'%'+_0x525810[_0x4246('0x31')]['filter']+'%'};return _0x16379c;}})});}_0x376233=_['merge']({},_0x376233,_0x525810['options']);var _0x10a86={'where':_0x376233[_0x4246('0x39')]};return db[_0x4246('0x3e')]['count'](_0x10a86)[_0x4246('0x26')](function(_0x20474f){_0x22baf5[_0x4246('0x1f')]=_0x20474f;if(_0x525810['query']['includeAll']){_0x376233['include']=[{'all':!![]}];}return db[_0x4246('0x3e')]['findAll'](_0x376233);})['then'](function(_0x27b150){_0x22baf5[_0x4246('0x3f')]=_0x27b150;return _0x22baf5;})['then'](respondWithFilteredResult(_0x15c69b,_0x376233))['catch'](handleError(_0x15c69b,null));};exports['show']=function(_0x3825fa,_0xb5d452){var _0x386e76={'raw':![],'where':{'id':_0x3825fa['params']['id']}},_0x3bf933={};_0x3bf933[_0x4246('0x30')]=_[_0x4246('0x40')](db[_0x4246('0x3e')][_0x4246('0x2c')]);_0x3bf933[_0x4246('0x31')]=_['keys'](_0x3825fa[_0x4246('0x31')]);_0x3bf933['filters']=_['intersection'](_0x3bf933[_0x4246('0x30')],_0x3bf933[_0x4246('0x31')]);_0x386e76['attributes']=_[_0x4246('0x33')](_0x3bf933[_0x4246('0x30')],qs['fields'](_0x3825fa[_0x4246('0x31')]['fields']));_0x386e76['attributes']=_0x386e76[_0x4246('0x34')][_0x4246('0x36')]?_0x386e76[_0x4246('0x34')]:_0x3bf933[_0x4246('0x30')];if(_0x3825fa[_0x4246('0x31')]['includeAll']){_0x386e76[_0x4246('0x41')]=[{'all':!![]}];}_0x386e76=_['merge']({},_0x386e76,_0x3825fa[_0x4246('0x42')]);return db['ZohoConfiguration'][_0x4246('0x43')](_0x386e76)[_0x4246('0x26')](handleEntityNotFound(_0xb5d452,null))[_0x4246('0x26')](respondWithResult(_0xb5d452,null))[_0x4246('0x44')](handleError(_0xb5d452,null));};exports[_0x4246('0x45')]=function(_0x5b74b9,_0x37fd23){return db[_0x4246('0x3e')][_0x4246('0x45')](_0x5b74b9[_0x4246('0x46')],{})[_0x4246('0x26')](respondWithResult(_0x37fd23,0xc9))[_0x4246('0x44')](handleError(_0x37fd23,null));};exports[_0x4246('0x25')]=function(_0x3d3006,_0x5edfa0){if(_0x3d3006[_0x4246('0x46')]['id']){delete _0x3d3006[_0x4246('0x46')]['id'];}return db[_0x4246('0x3e')][_0x4246('0x43')]({'where':{'id':_0x3d3006[_0x4246('0x47')]['id']}})[_0x4246('0x26')](handleEntityNotFound(_0x5edfa0,null))[_0x4246('0x26')](saveUpdates(_0x3d3006[_0x4246('0x46')],null))[_0x4246('0x26')](respondWithResult(_0x5edfa0,null))[_0x4246('0x44')](handleError(_0x5edfa0,null));};exports[_0x4246('0x27')]=function(_0x2e7a22,_0x521f47){return db['ZohoConfiguration']['find']({'where':{'id':_0x2e7a22['params']['id']}})[_0x4246('0x26')](handleEntityNotFound(_0x521f47,null))[_0x4246('0x26')](removeEntity(_0x521f47,null))[_0x4246('0x44')](handleError(_0x521f47,null));};exports[_0x4246('0x48')]=function(_0xc132a7,_0x3dbce2,_0x1902ae){var _0x1feb1a={};var _0x5ddac9={};var _0x241371;var _0x3b82fa;return db[_0x4246('0x3e')][_0x4246('0x49')]({'where':{'id':_0xc132a7['params']['id']}})[_0x4246('0x26')](handleEntityNotFound(_0x3dbce2,null))[_0x4246('0x26')](function(_0x567e97){if(_0x567e97){_0x241371=_0x567e97;_0x5ddac9[_0x4246('0x30')]=_[_0x4246('0x40')](db[_0x4246('0x4a')][_0x4246('0x2c')]);_0x5ddac9[_0x4246('0x31')]=_['keys'](_0xc132a7[_0x4246('0x31')]);_0x5ddac9[_0x4246('0x32')]=_[_0x4246('0x33')](_0x5ddac9['model'],_0x5ddac9['query']);_0x1feb1a[_0x4246('0x34')]=_[_0x4246('0x33')](_0x5ddac9['model'],qs['fields'](_0xc132a7[_0x4246('0x31')][_0x4246('0x35')]));_0x1feb1a[_0x4246('0x34')]=_0x1feb1a[_0x4246('0x34')][_0x4246('0x36')]?_0x1feb1a[_0x4246('0x34')]:_0x5ddac9[_0x4246('0x30')];_0x1feb1a[_0x4246('0x37')]=qs[_0x4246('0x38')](_0xc132a7[_0x4246('0x31')][_0x4246('0x38')]);_0x1feb1a[_0x4246('0x39')]=qs[_0x4246('0x32')](_['pick'](_0xc132a7['query'],_0x5ddac9[_0x4246('0x32')]));if(_0xc132a7[_0x4246('0x31')][_0x4246('0x3b')]){_0x1feb1a[_0x4246('0x39')]=_[_0x4246('0x3c')](_0x1feb1a[_0x4246('0x39')],{'$or':_[_0x4246('0x2b')](_0x1feb1a['attributes'],function(_0xa63ebd){var _0x123510={};_0x123510[_0xa63ebd]={'$like':'%'+_0xc132a7['query']['filter']+'%'};return _0x123510;})});}_0x1feb1a=_['merge']({},_0x1feb1a,_0xc132a7[_0x4246('0x42')]);return _0x241371['getFields'](_0x1feb1a);}})[_0x4246('0x26')](function(_0x48d15e){if(_0x48d15e){_0x3b82fa=_0x48d15e[_0x4246('0x36')];if(!_0xc132a7[_0x4246('0x31')][_0x4246('0x4b')](_0x4246('0x4c'))){_0x1feb1a[_0x4246('0x1e')]=qs['limit'](_0xc132a7[_0x4246('0x31')][_0x4246('0x1e')]);_0x1feb1a[_0x4246('0x1c')]=qs[_0x4246('0x1c')](_0xc132a7[_0x4246('0x31')]['offset']);}return _0x241371[_0x4246('0x48')](_0x1feb1a);}})[_0x4246('0x26')](function(_0x1288a2){if(_0x1288a2){return _0x1288a2?{'count':_0x3b82fa,'rows':_0x1288a2}:null;}})[_0x4246('0x26')](respondWithResult(_0x3dbce2,null))[_0x4246('0x44')](handleError(_0x3dbce2,null));};exports[_0x4246('0x4d')]=function(_0xa5594b,_0x1690e0,_0x2b5f90){var _0x4591b2={};var _0x24e1f8={};var _0x46e752;var _0x44b31c;return db[_0x4246('0x3e')][_0x4246('0x49')]({'where':{'id':_0xa5594b[_0x4246('0x47')]['id']}})[_0x4246('0x26')](handleEntityNotFound(_0x1690e0,null))[_0x4246('0x26')](function(_0x2eefc9){if(_0x2eefc9){_0x46e752=_0x2eefc9;_0x24e1f8[_0x4246('0x30')]=_['keys'](db['ZohoField'][_0x4246('0x2c')]);_0x24e1f8[_0x4246('0x31')]=_[_0x4246('0x40')](_0xa5594b[_0x4246('0x31')]);_0x24e1f8['filters']=_[_0x4246('0x33')](_0x24e1f8[_0x4246('0x30')],_0x24e1f8[_0x4246('0x31')]);_0x4591b2[_0x4246('0x34')]=_['intersection'](_0x24e1f8[_0x4246('0x30')],qs[_0x4246('0x35')](_0xa5594b[_0x4246('0x31')][_0x4246('0x35')]));_0x4591b2[_0x4246('0x34')]=_0x4591b2['attributes'][_0x4246('0x36')]?_0x4591b2['attributes']:_0x24e1f8[_0x4246('0x30')];_0x4591b2[_0x4246('0x37')]=qs[_0x4246('0x38')](_0xa5594b[_0x4246('0x31')][_0x4246('0x38')]);_0x4591b2[_0x4246('0x39')]=qs[_0x4246('0x32')](_[_0x4246('0x3a')](_0xa5594b[_0x4246('0x31')],_0x24e1f8[_0x4246('0x32')]));if(_0xa5594b[_0x4246('0x31')][_0x4246('0x3b')]){_0x4591b2[_0x4246('0x39')]=_['merge'](_0x4591b2['where'],{'$or':_['map'](_0x4591b2['attributes'],function(_0x4d3c1e){var _0x416cb2={};_0x416cb2[_0x4d3c1e]={'$like':'%'+_0xa5594b['query']['filter']+'%'};return _0x416cb2;})});}_0x4591b2=_['merge']({},_0x4591b2,_0xa5594b['options']);return _0x46e752['getSubjects'](_0x4591b2);}})[_0x4246('0x26')](function(_0x2884cd){if(_0x2884cd){_0x44b31c=_0x2884cd['length'];if(!_0xa5594b[_0x4246('0x31')][_0x4246('0x4b')]('nolimit')){_0x4591b2[_0x4246('0x1e')]=qs[_0x4246('0x1e')](_0xa5594b[_0x4246('0x31')][_0x4246('0x1e')]);_0x4591b2[_0x4246('0x1c')]=qs['offset'](_0xa5594b[_0x4246('0x31')]['offset']);}return _0x46e752[_0x4246('0x4d')](_0x4591b2);}})[_0x4246('0x26')](function(_0x456e90){if(_0x456e90){return _0x456e90?{'count':_0x44b31c,'rows':_0x456e90}:null;}})[_0x4246('0x26')](respondWithResult(_0x1690e0,null))[_0x4246('0x44')](handleError(_0x1690e0,null));};exports[_0x4246('0x4e')]=function(_0x34a11f,_0x2a00ff,_0x4bbbba){var _0x5ee641={};var _0x452646={};var _0x365046;var _0x29a5f4;return db[_0x4246('0x3e')][_0x4246('0x49')]({'where':{'id':_0x34a11f[_0x4246('0x47')]['id']}})[_0x4246('0x26')](handleEntityNotFound(_0x2a00ff,null))['then'](function(_0x27a844){if(_0x27a844){_0x365046=_0x27a844;_0x452646[_0x4246('0x30')]=_[_0x4246('0x40')](db[_0x4246('0x4a')][_0x4246('0x2c')]);_0x452646[_0x4246('0x31')]=_[_0x4246('0x40')](_0x34a11f[_0x4246('0x31')]);_0x452646[_0x4246('0x32')]=_['intersection'](_0x452646[_0x4246('0x30')],_0x452646[_0x4246('0x31')]);_0x5ee641['attributes']=_['intersection'](_0x452646[_0x4246('0x30')],qs[_0x4246('0x35')](_0x34a11f[_0x4246('0x31')][_0x4246('0x35')]));_0x5ee641[_0x4246('0x34')]=_0x5ee641[_0x4246('0x34')][_0x4246('0x36')]?_0x5ee641[_0x4246('0x34')]:_0x452646['model'];_0x5ee641[_0x4246('0x37')]=qs['sort'](_0x34a11f['query'][_0x4246('0x38')]);_0x5ee641['where']=qs['filters'](_['pick'](_0x34a11f['query'],_0x452646[_0x4246('0x32')]));if(_0x34a11f[_0x4246('0x31')][_0x4246('0x3b')]){_0x5ee641['where']=_['merge'](_0x5ee641['where'],{'$or':_['map'](_0x5ee641[_0x4246('0x34')],function(_0xe677e3){var _0x493110={};_0x493110[_0xe677e3]={'$like':'%'+_0x34a11f[_0x4246('0x31')][_0x4246('0x3b')]+'%'};return _0x493110;})});}_0x5ee641=_[_0x4246('0x3c')]({},_0x5ee641,_0x34a11f[_0x4246('0x42')]);return _0x365046['getDescriptions'](_0x5ee641);}})[_0x4246('0x26')](function(_0x3445e4){if(_0x3445e4){_0x29a5f4=_0x3445e4[_0x4246('0x36')];if(!_0x34a11f[_0x4246('0x31')][_0x4246('0x4b')](_0x4246('0x4c'))){_0x5ee641[_0x4246('0x1e')]=qs[_0x4246('0x1e')](_0x34a11f[_0x4246('0x31')][_0x4246('0x1e')]);_0x5ee641['offset']=qs[_0x4246('0x1c')](_0x34a11f['query'][_0x4246('0x1c')]);}return _0x365046[_0x4246('0x4e')](_0x5ee641);}})['then'](function(_0x622031){if(_0x622031){return _0x622031?{'count':_0x29a5f4,'rows':_0x622031}:null;}})[_0x4246('0x26')](respondWithResult(_0x2a00ff,null))[_0x4246('0x44')](handleError(_0x2a00ff,null));};
\ No newline at end of file
index 21dd9e0..a8459b8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0xa056=['bluebird','request-promise','rimraf','define','ZohoConfiguration','int_zoho_configurations','lodash','../../config/logger','moment'];(function(_0x24844d,_0x727f98){var _0x458a84=function(_0x588503){while(--_0x588503){_0x24844d['push'](_0x24844d['shift']());}};_0x458a84(++_0x727f98);}(_0xa056,0xcc));var _0x6a05=function(_0x162706,_0x537af7){_0x162706=_0x162706-0x0;var _0x3ca65c=_0xa056[_0x162706];return _0x3ca65c;};'use strict';var _=require(_0x6a05('0x0'));var util=require('util');var logger=require(_0x6a05('0x1'))('api');var moment=require(_0x6a05('0x2'));var BPromise=require(_0x6a05('0x3'));var rp=require(_0x6a05('0x4'));var fs=require('fs');var path=require('path');var rimraf=require(_0x6a05('0x5'));var config=require('../../config/environment');var attributes=require('./intZohoConfiguration.attributes');module['exports']=function(_0x4e81cb,_0x5800b6){return _0x4e81cb[_0x6a05('0x6')](_0x6a05('0x7'),attributes,{'tableName':_0x6a05('0x8'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 0572b87..e7a511c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0xa48b=['ZohoConfiguration,\x20%s,\x20%s','request\x20sent','debug','ZohoConfiguration,\x20%s,\x20%s,\x20%s','error','code','message','info','result','catch','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','../../config/environment','request','then'];(function(_0x67a200,_0x4cc913){var _0x5ac9d0=function(_0x1f3fd9){while(--_0x1f3fd9){_0x67a200['push'](_0x67a200['shift']());}};_0x5ac9d0(++_0x4cc913);}(_0xa48b,0xd0));var _0xba48=function(_0x5d0d22,_0x125fb9){_0x5d0d22=_0x5d0d22-0x0;var _0x4a5d85=_0xa48b[_0x5d0d22];return _0x4a5d85;};'use strict';var _=require(_0xba48('0x0'));var util=require(_0xba48('0x1'));var moment=require(_0xba48('0x2'));var BPromise=require(_0xba48('0x3'));var rs=require(_0xba48('0x4'));var fs=require('fs');var Redis=require(_0xba48('0x5'));var db=require(_0xba48('0x6'))['db'];var utils=require(_0xba48('0x7'));var logger=require(_0xba48('0x8'))('rpc');var config=require(_0xba48('0x9'));var jayson=require('jayson/promise');var client=jayson['client']['http']({'port':0x232a});function respondWithRpcPromise(_0x5cb083,_0x3cab3d,_0x428146){return new BPromise(function(_0x24a63d,_0x1d8785){return client[_0xba48('0xa')](_0x5cb083,_0x428146)[_0xba48('0xb')](function(_0xafe826){logger['info'](_0xba48('0xc'),_0x3cab3d,_0xba48('0xd'));logger[_0xba48('0xe')](_0xba48('0xf'),_0x3cab3d,_0xba48('0xd'),JSON['stringify'](_0xafe826));if(_0xafe826[_0xba48('0x10')]){if(_0xafe826['error'][_0xba48('0x11')]===0x1f4){logger[_0xba48('0x10')](_0xba48('0xc'),_0x3cab3d,_0xafe826['error'][_0xba48('0x12')]);return _0x1d8785(_0xafe826[_0xba48('0x10')][_0xba48('0x12')]);}logger[_0xba48('0x10')]('ZohoConfiguration,\x20%s,\x20%s',_0x3cab3d,_0xafe826[_0xba48('0x10')][_0xba48('0x12')]);return _0x24a63d(_0xafe826['error']['message']);}else{logger[_0xba48('0x13')](_0xba48('0xc'),_0x3cab3d,_0xba48('0xd'));_0x24a63d(_0xafe826[_0xba48('0x14')][_0xba48('0x12')]);}})[_0xba48('0x15')](function(_0x4ec180){logger['error'](_0xba48('0xc'),_0x3cab3d,_0x4ec180);_0x1d8785(_0x4ec180);});});}
\ No newline at end of file
index b7853bc..0866d09 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0x50e3=['get','isAuthenticated','/:id','post','create','put','update','delete','multer','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','./intZohoField.controller'];(function(_0x100bc0,_0x21a38e){var _0x2b3218=function(_0x1a95e1){while(--_0x1a95e1){_0x100bc0['push'](_0x100bc0['shift']());}};_0x2b3218(++_0x21a38e);}(_0x50e3,0x116));var _0x350e=function(_0x3a067b,_0x594236){_0x3a067b=_0x3a067b-0x0;var _0x4b3a95=_0x50e3[_0x3a067b];return _0x4b3a95;};'use strict';var multer=require(_0x350e('0x0'));var util=require(_0x350e('0x1'));var path=require(_0x350e('0x2'));var timeout=require(_0x350e('0x3'));var express=require(_0x350e('0x4'));var router=express[_0x350e('0x5')]();var fs_extra=require(_0x350e('0x6'));var auth=require(_0x350e('0x7'));var interaction=require(_0x350e('0x8'));var config=require('../../config/environment');var controller=require(_0x350e('0x9'));router[_0x350e('0xa')]('/',auth[_0x350e('0xb')](),controller['index']);router[_0x350e('0xa')](_0x350e('0xc'),auth['isAuthenticated'](),controller['show']);router[_0x350e('0xd')]('/',auth[_0x350e('0xb')](),controller[_0x350e('0xe')]);router[_0x350e('0xf')]('/:id',auth[_0x350e('0xb')](),controller[_0x350e('0x10')]);router[_0x350e('0x11')](_0x350e('0xc'),auth[_0x350e('0xb')](),controller['destroy']);module['exports']=router;
\ No newline at end of file
index d689b98..2bc854d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0xe205=['string','variable','keyValue','picklist','STRING','customVariable','BOOLEAN','sequelize','ENUM'];(function(_0x13f980,_0x1e1c56){var _0x27153c=function(_0x3953d5){while(--_0x3953d5){_0x13f980['push'](_0x13f980['shift']());}};_0x27153c(++_0x1e1c56);}(_0xe205,0xc4));var _0x5e20=function(_0x4dcaad,_0x142d2a){_0x4dcaad=_0x4dcaad-0x0;var _0x2902f3=_0xe205[_0x4dcaad];return _0x2902f3;};'use strict';var Sequelize=require(_0x5e20('0x0'));module['exports']={'type':{'type':Sequelize[_0x5e20('0x1')](_0x5e20('0x2'),_0x5e20('0x3'),'customVariable',_0x5e20('0x4'),_0x5e20('0x5')),'defaultValue':'string'},'content':{'type':Sequelize[_0x5e20('0x6')]},'key':{'type':Sequelize[_0x5e20('0x6')]},'keyType':{'type':Sequelize[_0x5e20('0x1')](_0x5e20('0x2'),_0x5e20('0x3'),_0x5e20('0x7'))},'keyContent':{'type':Sequelize[_0x5e20('0x6')]},'idField':{'type':Sequelize['STRING']},'nameField':{'type':Sequelize[_0x5e20('0x6')]},'customField':{'type':Sequelize[_0x5e20('0x8')],'defaultValue':!![]},'variableName':{'type':Sequelize[_0x5e20('0x6')]}};
\ No newline at end of file
index 8147aae..efd28de 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0x56fe=['where','pick','filter','VIRTUAL','options','include','findAll','rows','catch','params','rawAttributes','includeAll','find','create','body','eml-format','rimraf','request-promise','moment','mustache','util','path','sox','ejs','fs-extra','lodash','crypto','jsforce','desk.js','to-csv','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/license/util','../../mysqldb','status','json','offset','undefined','limit','count','set','apply','update','then','end','stack','name','send','map','ZohoField','fieldName','type','key','query','keys','filters','intersection','attributes','model','fields','length','hasOwnProperty','nolimit','order','sort'];(function(_0x40e57a,_0x2d3135){var _0x247f97=function(_0x35da1f){while(--_0x35da1f){_0x40e57a['push'](_0x40e57a['shift']());}};_0x247f97(++_0x2d3135);}(_0x56fe,0xe4));var _0xe56f=function(_0x4b03ee,_0x5cafee){_0x4b03ee=_0x4b03ee-0x0;var _0x28076c=_0x56fe[_0x4b03ee];return _0x28076c;};'use strict';var emlformat=require(_0xe56f('0x0'));var rimraf=require(_0xe56f('0x1'));var zipdir=require('zip-dir');var jsonpatch=require('fast-json-patch');var rp=require(_0xe56f('0x2'));var moment=require(_0xe56f('0x3'));var BPromise=require('bluebird');var Mustache=require(_0xe56f('0x4'));var util=require(_0xe56f('0x5'));var path=require(_0xe56f('0x6'));var sox=require(_0xe56f('0x7'));var csv=require('to-csv');var ejs=require(_0xe56f('0x8'));var fs=require('fs');var fs_extra=require(_0xe56f('0x9'));var _=require(_0xe56f('0xa'));var squel=require('squel');var crypto=require(_0xe56f('0xb'));var jsforce=require(_0xe56f('0xc'));var deskjs=require(_0xe56f('0xd'));var toCsv=require(_0xe56f('0xe'));var querystring=require('querystring');var Papa=require(_0xe56f('0xf'));var Redis=require(_0xe56f('0x10'));var authService=require(_0xe56f('0x11'));var qs=require(_0xe56f('0x12'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0xe56f('0x13'));var logger=require(_0xe56f('0x14'))(_0xe56f('0x15'));var utils=require(_0xe56f('0x16'));var config=require('../../config/environment');var licenseUtil=require(_0xe56f('0x17'));var db=require(_0xe56f('0x18'))['db'];function respondWithStatusCode(_0x58f742,_0x179a25){_0x179a25=_0x179a25||0xcc;return function(_0x28eb4b){if(_0x28eb4b){return _0x58f742['sendStatus'](_0x179a25);}return _0x58f742[_0xe56f('0x19')](_0x179a25)['end']();};}function respondWithResult(_0x5132b8,_0x5aa3ef){_0x5aa3ef=_0x5aa3ef||0xc8;return function(_0x478d2f){if(_0x478d2f){return _0x5132b8[_0xe56f('0x19')](_0x5aa3ef)[_0xe56f('0x1a')](_0x478d2f);}};}function respondWithFilteredResult(_0x224bb8,_0x5b1f2d){return function(_0x1b9664){if(_0x1b9664){var _0x78e227=typeof _0x5b1f2d[_0xe56f('0x1b')]===_0xe56f('0x1c')&&typeof _0x5b1f2d[_0xe56f('0x1d')]==='undefined';var _0x28b0a6=_0x1b9664[_0xe56f('0x1e')];var _0x2cdbd5=_0x78e227?0x0:_0x5b1f2d[_0xe56f('0x1b')];var _0x51b12b=_0x78e227?_0x1b9664[_0xe56f('0x1e')]:_0x5b1f2d[_0xe56f('0x1b')]+_0x5b1f2d[_0xe56f('0x1d')];var _0x452b0a;if(_0x51b12b>=_0x28b0a6){_0x51b12b=_0x28b0a6;_0x452b0a=0xc8;}else{_0x452b0a=0xce;}_0x224bb8[_0xe56f('0x19')](_0x452b0a);return _0x224bb8[_0xe56f('0x1f')]('Content-Range',_0x2cdbd5+'-'+_0x51b12b+'/'+_0x28b0a6)[_0xe56f('0x1a')](_0x1b9664);}return null;};}function patchUpdates(_0x2a8bce){return function(_0x194527){try{jsonpatch[_0xe56f('0x20')](_0x194527,_0x2a8bce,!![]);}catch(_0x589fa4){return BPromise['reject'](_0x589fa4);}return _0x194527['save']();};}function saveUpdates(_0x17630c,_0x561ca2){return function(_0x44b56c){if(_0x44b56c){return _0x44b56c[_0xe56f('0x21')](_0x17630c)['then'](function(_0x57d562){return _0x57d562;});}return null;};}function removeEntity(_0xd49941,_0x3918af){return function(_0x2f44f7){if(_0x2f44f7){return _0x2f44f7['destroy']()[_0xe56f('0x22')](function(){_0xd49941[_0xe56f('0x19')](0xcc)[_0xe56f('0x23')]();});}};}function handleEntityNotFound(_0x2a4863,_0xd039fb){return function(_0x2bca7b){if(!_0x2bca7b){_0x2a4863['sendStatus'](0x194);}return _0x2bca7b;};}function handleError(_0x939bbf,_0x48b3d3){_0x48b3d3=_0x48b3d3||0x1f4;return function(_0x33cb3b){logger['error'](_0x33cb3b[_0xe56f('0x24')]);if(_0x33cb3b[_0xe56f('0x25')]){delete _0x33cb3b[_0xe56f('0x25')];}_0x939bbf[_0xe56f('0x19')](_0x48b3d3)[_0xe56f('0x26')](_0x33cb3b);};}exports['index']=function(_0x2933e6,_0x5b15fe){var _0x2a8f83={},_0x2a7c04={},_0xce396e={'count':0x0,'rows':[]};var _0xade182=_[_0xe56f('0x27')](db[_0xe56f('0x28')]['rawAttributes'],function(_0x4ebde4){return{'name':_0x4ebde4[_0xe56f('0x29')],'type':_0x4ebde4[_0xe56f('0x2a')][_0xe56f('0x2b')]};});_0x2a7c04['model']=_[_0xe56f('0x27')](_0xade182,'name');_0x2a7c04[_0xe56f('0x2c')]=_[_0xe56f('0x2d')](_0x2933e6[_0xe56f('0x2c')]);_0x2a7c04[_0xe56f('0x2e')]=_[_0xe56f('0x2f')](_0x2a7c04['model'],_0x2a7c04[_0xe56f('0x2c')]);_0x2a8f83[_0xe56f('0x30')]=_[_0xe56f('0x2f')](_0x2a7c04[_0xe56f('0x31')],qs[_0xe56f('0x32')](_0x2933e6[_0xe56f('0x2c')][_0xe56f('0x32')]));_0x2a8f83[_0xe56f('0x30')]=_0x2a8f83['attributes'][_0xe56f('0x33')]?_0x2a8f83[_0xe56f('0x30')]:_0x2a7c04[_0xe56f('0x31')];if(!_0x2933e6['query'][_0xe56f('0x34')](_0xe56f('0x35'))){_0x2a8f83['limit']=qs['limit'](_0x2933e6[_0xe56f('0x2c')][_0xe56f('0x1d')]);_0x2a8f83['offset']=qs[_0xe56f('0x1b')](_0x2933e6[_0xe56f('0x2c')][_0xe56f('0x1b')]);}_0x2a8f83[_0xe56f('0x36')]=qs['sort'](_0x2933e6['query'][_0xe56f('0x37')]);_0x2a8f83[_0xe56f('0x38')]=qs['filters'](_[_0xe56f('0x39')](_0x2933e6['query'],_0x2a7c04[_0xe56f('0x2e')]),_0xade182);if(_0x2933e6[_0xe56f('0x2c')][_0xe56f('0x3a')]){_0x2a8f83[_0xe56f('0x38')]=_['merge'](_0x2a8f83[_0xe56f('0x38')],{'$or':_[_0xe56f('0x27')](_0xade182,function(_0x3bf00d){if(_0x3bf00d[_0xe56f('0x2a')]!==_0xe56f('0x3b')){var _0x4fc4e9={};_0x4fc4e9[_0x3bf00d[_0xe56f('0x25')]]={'$like':'%'+_0x2933e6[_0xe56f('0x2c')][_0xe56f('0x3a')]+'%'};return _0x4fc4e9;}})});}_0x2a8f83=_['merge']({},_0x2a8f83,_0x2933e6[_0xe56f('0x3c')]);var _0x12ef72={'where':_0x2a8f83[_0xe56f('0x38')]};return db[_0xe56f('0x28')][_0xe56f('0x1e')](_0x12ef72)[_0xe56f('0x22')](function(_0xc3ea9d){_0xce396e['count']=_0xc3ea9d;if(_0x2933e6[_0xe56f('0x2c')]['includeAll']){_0x2a8f83[_0xe56f('0x3d')]=[{'all':!![]}];}return db[_0xe56f('0x28')][_0xe56f('0x3e')](_0x2a8f83);})['then'](function(_0x43ebd0){_0xce396e[_0xe56f('0x3f')]=_0x43ebd0;return _0xce396e;})[_0xe56f('0x22')](respondWithFilteredResult(_0x5b15fe,_0x2a8f83))[_0xe56f('0x40')](handleError(_0x5b15fe,null));};exports['show']=function(_0xf7a4f0,_0x2df0e8){var _0x3522e9={'raw':!![],'where':{'id':_0xf7a4f0[_0xe56f('0x41')]['id']}},_0x39cba7={};_0x39cba7[_0xe56f('0x31')]=_[_0xe56f('0x2d')](db[_0xe56f('0x28')][_0xe56f('0x42')]);_0x39cba7['query']=_[_0xe56f('0x2d')](_0xf7a4f0[_0xe56f('0x2c')]);_0x39cba7['filters']=_[_0xe56f('0x2f')](_0x39cba7['model'],_0x39cba7['query']);_0x3522e9[_0xe56f('0x30')]=_[_0xe56f('0x2f')](_0x39cba7[_0xe56f('0x31')],qs[_0xe56f('0x32')](_0xf7a4f0['query'][_0xe56f('0x32')]));_0x3522e9[_0xe56f('0x30')]=_0x3522e9[_0xe56f('0x30')]['length']?_0x3522e9[_0xe56f('0x30')]:_0x39cba7[_0xe56f('0x31')];if(_0xf7a4f0[_0xe56f('0x2c')][_0xe56f('0x43')]){_0x3522e9[_0xe56f('0x3d')]=[{'all':!![]}];}_0x3522e9=_['merge']({},_0x3522e9,_0xf7a4f0[_0xe56f('0x3c')]);return db[_0xe56f('0x28')][_0xe56f('0x44')](_0x3522e9)[_0xe56f('0x22')](handleEntityNotFound(_0x2df0e8,null))[_0xe56f('0x22')](respondWithResult(_0x2df0e8,null))[_0xe56f('0x40')](handleError(_0x2df0e8,null));};exports[_0xe56f('0x45')]=function(_0x2d754b,_0x141ba){return db[_0xe56f('0x28')]['create'](_0x2d754b[_0xe56f('0x46')],{})[_0xe56f('0x22')](respondWithResult(_0x141ba,0xc9))[_0xe56f('0x40')](handleError(_0x141ba,null));};exports['update']=function(_0x520757,_0x4a3f82){if(_0x520757[_0xe56f('0x46')]['id']){delete _0x520757['body']['id'];}return db[_0xe56f('0x28')]['find']({'where':{'id':_0x520757[_0xe56f('0x41')]['id']}})[_0xe56f('0x22')](handleEntityNotFound(_0x4a3f82,null))[_0xe56f('0x22')](saveUpdates(_0x520757[_0xe56f('0x46')],null))[_0xe56f('0x22')](respondWithResult(_0x4a3f82,null))[_0xe56f('0x40')](handleError(_0x4a3f82,null));};exports['destroy']=function(_0x21a4f4,_0xc8941e){return db[_0xe56f('0x28')][_0xe56f('0x44')]({'where':{'id':_0x21a4f4[_0xe56f('0x41')]['id']}})['then'](handleEntityNotFound(_0xc8941e,null))[_0xe56f('0x22')](removeEntity(_0xc8941e,null))[_0xe56f('0x40')](handleError(_0xc8941e,null));};
\ No newline at end of file
index d95d886..0ac8095 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0x77e6=['idField','FieldId','lodash','util','../../config/logger','api','moment','bluebird','request-promise','path','../../config/environment','./intZohoField.attributes','define','zoho_unique_index'];(function(_0x903228,_0x42c429){var _0xcec81d=function(_0x4da97a){while(--_0x4da97a){_0x903228['push'](_0x903228['shift']());}};_0xcec81d(++_0x42c429);}(_0x77e6,0x1a6));var _0x677e=function(_0x3bb7bc,_0x338ebb){_0x3bb7bc=_0x3bb7bc-0x0;var _0x4ddfe6=_0x77e6[_0x3bb7bc];return _0x4ddfe6;};'use strict';var _=require(_0x677e('0x0'));var util=require(_0x677e('0x1'));var logger=require(_0x677e('0x2'))(_0x677e('0x3'));var moment=require(_0x677e('0x4'));var BPromise=require(_0x677e('0x5'));var rp=require(_0x677e('0x6'));var fs=require('fs');var path=require(_0x677e('0x7'));var rimraf=require('rimraf');var config=require(_0x677e('0x8'));var attributes=require(_0x677e('0x9'));module['exports']=function(_0x18c5e1,_0x591b21){return _0x18c5e1[_0x677e('0xa')]('ZohoField',attributes,{'tableName':'int_zoho_fields','paranoid':![],'indexes':[{'name':_0x677e('0xb'),'fields':[_0x677e('0xc'),_0x677e('0xd')],'unique':!![]}],'timestamps':!![]});};
\ No newline at end of file
index 9b41327..e8ca702 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0x4561=['../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','client','http','request','info','ZohoField,\x20%s,\x20%s','request\x20sent','ZohoField,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','lodash','moment','bluebird','randomstring','ioredis'];(function(_0x4d180c,_0x45c68e){var _0x49b57e=function(_0x264741){while(--_0x264741){_0x4d180c['push'](_0x4d180c['shift']());}};_0x49b57e(++_0x45c68e);}(_0x4561,0x187));var _0x1456=function(_0x55b3b5,_0x254983){_0x55b3b5=_0x55b3b5-0x0;var _0x5297a9=_0x4561[_0x55b3b5];return _0x5297a9;};'use strict';var _=require(_0x1456('0x0'));var util=require('util');var moment=require(_0x1456('0x1'));var BPromise=require(_0x1456('0x2'));var rs=require(_0x1456('0x3'));var fs=require('fs');var Redis=require(_0x1456('0x4'));var db=require(_0x1456('0x5'))['db'];var utils=require(_0x1456('0x6'));var logger=require(_0x1456('0x7'))(_0x1456('0x8'));var config=require(_0x1456('0x9'));var jayson=require('jayson/promise');var client=jayson[_0x1456('0xa')][_0x1456('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x1d6726,_0x28d950,_0x230f3b){return new BPromise(function(_0x205f2e,_0x206f05){return client[_0x1456('0xc')](_0x1d6726,_0x230f3b)['then'](function(_0xb170d0){logger[_0x1456('0xd')](_0x1456('0xe'),_0x28d950,_0x1456('0xf'));logger['debug'](_0x1456('0x10'),_0x28d950,_0x1456('0xf'),JSON[_0x1456('0x11')](_0xb170d0));if(_0xb170d0[_0x1456('0x12')]){if(_0xb170d0[_0x1456('0x12')][_0x1456('0x13')]===0x1f4){logger['error'](_0x1456('0xe'),_0x28d950,_0xb170d0[_0x1456('0x12')]['message']);return _0x206f05(_0xb170d0[_0x1456('0x12')][_0x1456('0x14')]);}logger[_0x1456('0x12')](_0x1456('0xe'),_0x28d950,_0xb170d0[_0x1456('0x12')]['message']);return _0x205f2e(_0xb170d0[_0x1456('0x12')][_0x1456('0x14')]);}else{logger['info'](_0x1456('0xe'),_0x28d950,'request\x20sent');_0x205f2e(_0xb170d0[_0x1456('0x15')][_0x1456('0x14')]);}})['catch'](function(_0xa074e8){logger[_0x1456('0x12')](_0x1456('0xe'),_0x28d950,_0xa074e8);_0x206f05(_0xa074e8);});});}
\ No newline at end of file
index bb3e293..6ad2ce6 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(_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
+var _0x70e0=['../../components/auth/service','../../components/interaction/service','exports','multer','util','path','Router','fs-extra'];(function(_0x509b0b,_0x3d5bec){var _0x3ea46f=function(_0x5ac1c9){while(--_0x5ac1c9){_0x509b0b['push'](_0x509b0b['shift']());}};_0x3ea46f(++_0x3d5bec);}(_0x70e0,0x17b));var _0x070e=function(_0x1e3876,_0x1602a4){_0x1e3876=_0x1e3876-0x0;var _0x3b200c=_0x70e0[_0x1e3876];return _0x3b200c;};'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 45687f0..d12320b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0x7540=['STRING','unique_name_and_version','app.js','BOOLEAN','state','sequelize','exports'];(function(_0x4c7fd5,_0x1e0edc){var _0x33fe1b=function(_0x4f6b85){while(--_0x4f6b85){_0x4c7fd5['push'](_0x4c7fd5['shift']());}};_0x33fe1b(++_0x1e0edc);}(_0x7540,0x1d3));var _0x0754=function(_0x10ff4c,_0x35c7e2){_0x10ff4c=_0x10ff4c-0x0;var _0x28bac8=_0x7540[_0x10ff4c];return _0x28bac8;};'use strict';var Sequelize=require(_0x0754('0x0'));module[_0x0754('0x1')]={'name':{'type':Sequelize[_0x0754('0x2')],'allowNull':![],'unique':_0x0754('0x3')},'version':{'type':Sequelize[_0x0754('0x2')],'allowNull':![],'unique':_0x0754('0x3')},'main':{'type':Sequelize[_0x0754('0x2')],'defaultValue':_0x0754('0x4')},'filename':{'type':Sequelize[_0x0754('0x2')]},'path':{'type':Sequelize[_0x0754('0x2')]},'type':{'type':Sequelize[_0x0754('0x2')]},'size':{'type':Sequelize['INTEGER']},'active':{'type':Sequelize[_0x0754('0x5')],'defaultValue':![]},'author':{'type':Sequelize[_0x0754('0x2')]},'logo':{'type':Sequelize[_0x0754('0x2')]},'state':{'type':Sequelize[_0x0754('0x2')],'unique':_0x0754('0x6')},'description':{'type':Sequelize[_0x0754('0x2')]},'title':{'type':Sequelize[_0x0754('0x2')]},'remoteUri':{'type':Sequelize[_0x0754('0x2')]},'link':{'type':Sequelize[_0x0754('0x2')],'defaultValue':'#'}};
\ No newline at end of file
index 0daaeff..6066de4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0xe3da=['ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','json','offset','limit','undefined','set','apply','reject','save','update','then','destroy','error','stack','name','send','index','Integration','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','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'];(function(_0xa1a5bb,_0x349d29){var _0x150812=function(_0x3ae76e){while(--_0x3ae76e){_0xa1a5bb['push'](_0xa1a5bb['shift']());}};_0x150812(++_0x349d29);}(_0xe3da,0x1cd));var _0xae3d=function(_0x40a045,_0x516f0e){_0x40a045=_0x40a045-0x0;var _0x1a687c=_0xe3da[_0x40a045];return _0x1a687c;};'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));};
\ No newline at end of file
index 38860a5..667b683 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0xa927=['../../config/logger','moment','bluebird','request-promise','path','rimraf','../../config/environment','./integration.attributes','exports','Integration','integrations','lodash'];(function(_0x3947c9,_0x4d6c97){var _0x2e7871=function(_0x1236cc){while(--_0x1236cc){_0x3947c9['push'](_0x3947c9['shift']());}};_0x2e7871(++_0x4d6c97);}(_0xa927,0xfb));var _0x7a92=function(_0x397e5f,_0x454c8f){_0x397e5f=_0x397e5f-0x0;var _0x5302b8=_0xa927[_0x397e5f];return _0x5302b8;};'use strict';var _=require(_0x7a92('0x0'));var util=require('util');var logger=require(_0x7a92('0x1'))('api');var moment=require(_0x7a92('0x2'));var BPromise=require(_0x7a92('0x3'));var rp=require(_0x7a92('0x4'));var fs=require('fs');var path=require(_0x7a92('0x5'));var rimraf=require(_0x7a92('0x6'));var config=require(_0x7a92('0x7'));var attributes=require(_0x7a92('0x8'));module[_0x7a92('0x9')]=function(_0x1ca3b4,_0x4ff0a3){return _0x1ca3b4['define'](_0x7a92('0xa'),attributes,{'tableName':_0x7a92('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 31137c5..a8b5859 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1a85=['../../config/logger','rpc','jayson/promise','http','info','Integration,\x20%s,\x20%s','request\x20sent','debug','Integration,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','moment','bluebird','randomstring','../../config/utils'];(function(_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
+var _0xda2d=['bluebird','randomstring','ioredis','rpc','../../config/environment','jayson/promise','client','http','then','Integration,\x20%s,\x20%s','request\x20sent','debug','Integration,\x20%s,\x20%s,\x20%s','stringify','error','message','info','result','util','moment'];(function(_0x5b26cb,_0x527ab0){var _0x563d12=function(_0x472b38){while(--_0x472b38){_0x5b26cb['push'](_0x5b26cb['shift']());}};_0x563d12(++_0x527ab0);}(_0xda2d,0x102));var _0xdda2=function(_0x167d98,_0x17bb15){_0x167d98=_0x167d98-0x0;var _0xc1a88f=_0xda2d[_0x167d98];return _0xc1a88f;};'use strict';var _=require('lodash');var util=require(_0xdda2('0x0'));var moment=require(_0xdda2('0x1'));var BPromise=require(_0xdda2('0x2'));var rs=require(_0xdda2('0x3'));var fs=require('fs');var Redis=require(_0xdda2('0x4'));var db=require('../../mysqldb')['db'];var utils=require('../../config/utils');var logger=require('../../config/logger')(_0xdda2('0x5'));var config=require(_0xdda2('0x6'));var jayson=require(_0xdda2('0x7'));var client=jayson[_0xdda2('0x8')][_0xdda2('0x9')]({'port':0x232a});function respondWithRpcPromise(_0xf38e58,_0x2f55dc,_0x436676){return new BPromise(function(_0x2e2523,_0x341c7b){return client['request'](_0xf38e58,_0x436676)[_0xdda2('0xa')](function(_0x22c6e5){logger['info'](_0xdda2('0xb'),_0x2f55dc,_0xdda2('0xc'));logger[_0xdda2('0xd')](_0xdda2('0xe'),_0x2f55dc,_0xdda2('0xc'),JSON[_0xdda2('0xf')](_0x22c6e5));if(_0x22c6e5[_0xdda2('0x10')]){if(_0x22c6e5[_0xdda2('0x10')]['code']===0x1f4){logger['error']('Integration,\x20%s,\x20%s',_0x2f55dc,_0x22c6e5[_0xdda2('0x10')][_0xdda2('0x11')]);return _0x341c7b(_0x22c6e5[_0xdda2('0x10')][_0xdda2('0x11')]);}logger[_0xdda2('0x10')](_0xdda2('0xb'),_0x2f55dc,_0x22c6e5[_0xdda2('0x10')]['message']);return _0x2e2523(_0x22c6e5[_0xdda2('0x10')]['message']);}else{logger[_0xdda2('0x12')](_0xdda2('0xb'),_0x2f55dc,_0xdda2('0xc'));_0x2e2523(_0x22c6e5[_0xdda2('0x13')][_0xdda2('0x11')]);}})['catch'](function(_0x55d674){logger[_0xdda2('0x10')]('Integration,\x20%s,\x20%s',_0x2f55dc,_0x55d674);_0x341c7b(_0x55d674);});});}
\ No newline at end of file
index 5f19cb6..30d8a5d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0x66fa=['index','get','/describe','post','/:id','delete','exports','multer','util','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','isAuthenticated'];(function(_0x1d60b3,_0x65a805){var _0x2c5d8c=function(_0x4a252f){while(--_0x4a252f){_0x1d60b3['push'](_0x1d60b3['shift']());}};_0x2c5d8c(++_0x65a805);}(_0x66fa,0x117));var _0xa66f=function(_0x196045,_0x3b3175){_0x196045=_0x196045-0x0;var _0x16e99e=_0x66fa[_0x196045];return _0x16e99e;};'use strict';var multer=require(_0xa66f('0x0'));var util=require(_0xa66f('0x1'));var path=require('path');var timeout=require(_0xa66f('0x2'));var express=require(_0xa66f('0x3'));var router=express[_0xa66f('0x4')]();var fs_extra=require(_0xa66f('0x5'));var auth=require(_0xa66f('0x6'));var interaction=require(_0xa66f('0x7'));var config=require(_0xa66f('0x8'));var controller=require('./integrationReport.controller');router['get']('/',auth[_0xa66f('0x9')](),controller[_0xa66f('0xa')]);router[_0xa66f('0xb')](_0xa66f('0xc'),auth[_0xa66f('0x9')](),controller['describe']);router[_0xa66f('0xb')]('/:id',auth[_0xa66f('0x9')](),controller['show']);router[_0xa66f('0xd')]('/',auth['isAuthenticated'](),controller['create']);router['put'](_0xa66f('0xe'),auth[_0xa66f('0x9')](),controller['update']);router[_0xa66f('0xf')]('/:id',auth[_0xa66f('0x9')](),controller['destroy']);module[_0xa66f('0x10')]=router;
\ No newline at end of file
index 3432283..e40407c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0xce6b=['STRING','INTEGER','BOOLEAN','DATE','TEXT','ENUM','SENT','SENDING','RECEIVED','FAILED','exports'];(function(_0xa3de44,_0x182244){var _0x2656b5=function(_0x56fd9b){while(--_0x56fd9b){_0xa3de44['push'](_0xa3de44['shift']());}};_0x2656b5(++_0x182244);}(_0xce6b,0x112));var _0xbce6=function(_0x239dc7,_0x146f83){_0x239dc7=_0x239dc7-0x0;var _0x356d4a=_0xce6b[_0x239dc7];return _0x356d4a;};'use strict';var Sequelize=require('sequelize');module[_0xbce6('0x0')]={'integration':{'type':Sequelize[_0xbce6('0x1')]},'eventChannel':{'type':Sequelize[_0xbce6('0x1')]},'exitStatus':{'type':Sequelize[_0xbce6('0x1')]},'ticketId':{'type':Sequelize[_0xbce6('0x1')]},'integrationId':{'type':Sequelize['INTEGER']},'contacts':{'type':Sequelize['STRING']},'uniqueid':{'type':Sequelize[_0xbce6('0x1')]},'calleridnum':{'type':Sequelize['STRING']},'calleridname':{'type':Sequelize[_0xbce6('0x1')]},'queue':{'type':Sequelize['STRING']},'interface':{'type':Sequelize[_0xbce6('0x1')]},'membername':{'type':Sequelize[_0xbce6('0x1')]},'agentcalledAt':{'type':Sequelize['DATE']},'agentconnectAt':{'type':Sequelize['DATE']},'holdtime':{'type':Sequelize[_0xbce6('0x2')]},'agentcomplete':{'type':Sequelize[_0xbce6('0x3')],'defaultValue':![]},'agentcompleteAt':{'type':Sequelize[_0xbce6('0x4')]},'talktime':{'type':Sequelize[_0xbce6('0x2')]},'agentacw':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'acwtime':{'type':Sequelize[_0xbce6('0x2')]},'reason':{'type':Sequelize['STRING']},'agentringnoanswer':{'type':Sequelize[_0xbce6('0x3')],'defaultValue':![]},'agentringnoanswerAt':{'type':Sequelize[_0xbce6('0x4')]},'agentdump':{'type':Sequelize[_0xbce6('0x3')],'defaultValue':![]},'agentdumpAt':{'type':Sequelize['DATE']},'lastevent':{'type':Sequelize[_0xbce6('0x1')]},'channel':{'type':Sequelize[_0xbce6('0x1')]},'channelstate':{'type':Sequelize[_0xbce6('0x2')]},'channelstatedesc':{'type':Sequelize[_0xbce6('0x1')]},'connectedlinenum':{'type':Sequelize[_0xbce6('0x1')]},'connectedlinename':{'type':Sequelize[_0xbce6('0x1')]},'language':{'type':Sequelize[_0xbce6('0x1')]},'accountcode':{'type':Sequelize[_0xbce6('0x1')]},'context':{'type':Sequelize[_0xbce6('0x1')]},'exten':{'type':Sequelize[_0xbce6('0x1')]},'priority':{'type':Sequelize[_0xbce6('0x1')]},'destchannel':{'type':Sequelize[_0xbce6('0x1')]},'destchannelstate':{'type':Sequelize[_0xbce6('0x2')]},'destchannelstatedesc':{'type':Sequelize[_0xbce6('0x1')]},'destcalleridnum':{'type':Sequelize[_0xbce6('0x1')]},'destcalleridname':{'type':Sequelize['STRING']},'destconnectedlinenum':{'type':Sequelize[_0xbce6('0x1')]},'destconnectedlinename':{'type':Sequelize[_0xbce6('0x1')]},'destlanguage':{'type':Sequelize[_0xbce6('0x1')]},'destaccountcode':{'type':Sequelize[_0xbce6('0x1')]},'destcontext':{'type':Sequelize[_0xbce6('0x1')]},'destexten':{'type':Sequelize[_0xbce6('0x1')]},'destpriority':{'type':Sequelize[_0xbce6('0x1')]},'destuniqueid':{'type':Sequelize[_0xbce6('0x1')]},'messageId':{'type':Sequelize[_0xbce6('0x1')]},'inReplyTo':{'type':Sequelize[_0xbce6('0x1')]},'subject':{'type':Sequelize[_0xbce6('0x1')]},'from':{'type':Sequelize[_0xbce6('0x1')]},'to':{'type':Sequelize[_0xbce6('0x1')]},'cc':{'type':Sequelize[_0xbce6('0x1')]},'attachment':{'type':Sequelize[_0xbce6('0x5')]},'html':{'type':Sequelize['TEXT']},'text':{'type':Sequelize[_0xbce6('0x5')]},'status':{'type':Sequelize[_0xbce6('0x6')](_0xbce6('0x7'),_0xbce6('0x8'),_0xbce6('0x9'),_0xbce6('0xa'))},'url':{'type':Sequelize[_0xbce6('0x1')]},'app':{'type':Sequelize[_0xbce6('0x1')]},'appdata':{'type':Sequelize[_0xbce6('0x1')]},'projectId':{'type':Sequelize[_0xbce6('0x2')]}};
\ No newline at end of file
index 8b414ca..8e9e825 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0xcde6=['filters','pick','filter','merge','VIRTUAL','options','includeAll','include','findAll','rows','catch','show','params','find','create','body','update','describe','eml-format','rimraf','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','ejs','fs-extra','lodash','squel','crypto','to-csv','querystring','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/logger','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','json','offset','undefined','limit','count','set','Content-Range','reject','save','destroy','then','error','name','send','map','IntegrationReport','rawAttributes','fieldName','type','model','query','keys','intersection','attributes','fields','length','hasOwnProperty','order','sort','where'];(function(_0x271d3b,_0x33da6c){var _0x28277f=function(_0x152d51){while(--_0x152d51){_0x271d3b['push'](_0x271d3b['shift']());}};_0x28277f(++_0x33da6c);}(_0xcde6,0x142));var _0x6cde=function(_0x223886,_0x598e19){_0x223886=_0x223886-0x0;var _0x2f8412=_0xcde6[_0x223886];return _0x2f8412;};'use strict';var emlformat=require(_0x6cde('0x0'));var rimraf=require(_0x6cde('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0x6cde('0x2'));var rp=require(_0x6cde('0x3'));var moment=require(_0x6cde('0x4'));var BPromise=require(_0x6cde('0x5'));var Mustache=require(_0x6cde('0x6'));var util=require(_0x6cde('0x7'));var path=require(_0x6cde('0x8'));var sox=require(_0x6cde('0x9'));var csv=require('to-csv');var ejs=require(_0x6cde('0xa'));var fs=require('fs');var fs_extra=require(_0x6cde('0xb'));var _=require(_0x6cde('0xc'));var squel=require(_0x6cde('0xd'));var crypto=require(_0x6cde('0xe'));var jsforce=require('jsforce');var deskjs=require('desk.js');var toCsv=require(_0x6cde('0xf'));var querystring=require(_0x6cde('0x10'));var Papa=require('papaparse');var Redis=require(_0x6cde('0x11'));var authService=require(_0x6cde('0x12'));var qs=require(_0x6cde('0x13'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require('../../config/license/hardware');var logger=require(_0x6cde('0x14'))('api');var utils=require(_0x6cde('0x15'));var config=require(_0x6cde('0x16'));var licenseUtil=require(_0x6cde('0x17'));var db=require(_0x6cde('0x18'))['db'];function respondWithStatusCode(_0x126a85,_0x4bd1d5){_0x4bd1d5=_0x4bd1d5||0xcc;return function(_0x1080bf){if(_0x1080bf){return _0x126a85[_0x6cde('0x19')](_0x4bd1d5);}return _0x126a85[_0x6cde('0x1a')](_0x4bd1d5)[_0x6cde('0x1b')]();};}function respondWithResult(_0xfeba46,_0x3f88eb){_0x3f88eb=_0x3f88eb||0xc8;return function(_0xb71d33){if(_0xb71d33){return _0xfeba46[_0x6cde('0x1a')](_0x3f88eb)[_0x6cde('0x1c')](_0xb71d33);}};}function respondWithFilteredResult(_0x323ec4,_0x8cd79b){return function(_0x3dc090){if(_0x3dc090){var _0x37f4e2=typeof _0x8cd79b[_0x6cde('0x1d')]===_0x6cde('0x1e')&&typeof _0x8cd79b[_0x6cde('0x1f')]===_0x6cde('0x1e');var _0x5b8220=_0x3dc090[_0x6cde('0x20')];var _0x53a231=_0x37f4e2?0x0:_0x8cd79b['offset'];var _0x45011e=_0x37f4e2?_0x3dc090['count']:_0x8cd79b[_0x6cde('0x1d')]+_0x8cd79b[_0x6cde('0x1f')];var _0x33a261;if(_0x45011e>=_0x5b8220){_0x45011e=_0x5b8220;_0x33a261=0xc8;}else{_0x33a261=0xce;}_0x323ec4[_0x6cde('0x1a')](_0x33a261);return _0x323ec4[_0x6cde('0x21')](_0x6cde('0x22'),_0x53a231+'-'+_0x45011e+'/'+_0x5b8220)[_0x6cde('0x1c')](_0x3dc090);}return null;};}function patchUpdates(_0x35af35){return function(_0x4e297a){try{jsonpatch['apply'](_0x4e297a,_0x35af35,!![]);}catch(_0x2e209f){return BPromise[_0x6cde('0x23')](_0x2e209f);}return _0x4e297a[_0x6cde('0x24')]();};}function saveUpdates(_0x1d103e,_0x1e1479){return function(_0x24a611){if(_0x24a611){return _0x24a611['update'](_0x1d103e)['then'](function(_0x586c0e){return _0x586c0e;});}return null;};}function removeEntity(_0x2a2c8c,_0x10fbf6){return function(_0x9d84f0){if(_0x9d84f0){return _0x9d84f0[_0x6cde('0x25')]()[_0x6cde('0x26')](function(){_0x2a2c8c[_0x6cde('0x1a')](0xcc)['end']();});}};}function handleEntityNotFound(_0x4fa908,_0xfe4106){return function(_0x25407b){if(!_0x25407b){_0x4fa908[_0x6cde('0x19')](0x194);}return _0x25407b;};}function handleError(_0x1f6781,_0x3ed058){_0x3ed058=_0x3ed058||0x1f4;return function(_0x364654){logger[_0x6cde('0x27')](_0x364654['stack']);if(_0x364654[_0x6cde('0x28')]){delete _0x364654['name'];}_0x1f6781[_0x6cde('0x1a')](_0x3ed058)[_0x6cde('0x29')](_0x364654);};}exports['index']=function(_0x5df85e,_0x2178b6){var _0x28d3f7={},_0x58d450={},_0x47ee00={'count':0x0,'rows':[]};var _0x33ef74=_[_0x6cde('0x2a')](db[_0x6cde('0x2b')][_0x6cde('0x2c')],function(_0x5ec71b){return{'name':_0x5ec71b[_0x6cde('0x2d')],'type':_0x5ec71b[_0x6cde('0x2e')]['key']};});_0x58d450[_0x6cde('0x2f')]=_['map'](_0x33ef74,_0x6cde('0x28'));_0x58d450[_0x6cde('0x30')]=_[_0x6cde('0x31')](_0x5df85e[_0x6cde('0x30')]);_0x58d450['filters']=_[_0x6cde('0x32')](_0x58d450[_0x6cde('0x2f')],_0x58d450[_0x6cde('0x30')]);_0x28d3f7[_0x6cde('0x33')]=_[_0x6cde('0x32')](_0x58d450[_0x6cde('0x2f')],qs['fields'](_0x5df85e[_0x6cde('0x30')][_0x6cde('0x34')]));_0x28d3f7[_0x6cde('0x33')]=_0x28d3f7[_0x6cde('0x33')][_0x6cde('0x35')]?_0x28d3f7[_0x6cde('0x33')]:_0x58d450[_0x6cde('0x2f')];if(!_0x5df85e['query'][_0x6cde('0x36')]('nolimit')){_0x28d3f7[_0x6cde('0x1f')]=qs[_0x6cde('0x1f')](_0x5df85e[_0x6cde('0x30')][_0x6cde('0x1f')]);_0x28d3f7[_0x6cde('0x1d')]=qs[_0x6cde('0x1d')](_0x5df85e[_0x6cde('0x30')]['offset']);}_0x28d3f7[_0x6cde('0x37')]=qs['sort'](_0x5df85e[_0x6cde('0x30')][_0x6cde('0x38')]);_0x28d3f7[_0x6cde('0x39')]=qs[_0x6cde('0x3a')](_[_0x6cde('0x3b')](_0x5df85e[_0x6cde('0x30')],_0x58d450[_0x6cde('0x3a')]),_0x33ef74);if(_0x5df85e[_0x6cde('0x30')][_0x6cde('0x3c')]){_0x28d3f7[_0x6cde('0x39')]=_[_0x6cde('0x3d')](_0x28d3f7['where'],{'$or':_['map'](_0x33ef74,function(_0x18a8bb){if(_0x18a8bb[_0x6cde('0x2e')]!==_0x6cde('0x3e')){var _0xf6f2d9={};_0xf6f2d9[_0x18a8bb[_0x6cde('0x28')]]={'$like':'%'+_0x5df85e['query'][_0x6cde('0x3c')]+'%'};return _0xf6f2d9;}})});}_0x28d3f7=_[_0x6cde('0x3d')]({},_0x28d3f7,_0x5df85e[_0x6cde('0x3f')]);var _0x4f2c76={'where':_0x28d3f7['where']};return db[_0x6cde('0x2b')]['count'](_0x4f2c76)[_0x6cde('0x26')](function(_0xb7afaf){_0x47ee00[_0x6cde('0x20')]=_0xb7afaf;if(_0x5df85e['query'][_0x6cde('0x40')]){_0x28d3f7[_0x6cde('0x41')]=[{'all':!![]}];}return db[_0x6cde('0x2b')][_0x6cde('0x42')](_0x28d3f7);})[_0x6cde('0x26')](function(_0x556303){_0x47ee00[_0x6cde('0x43')]=_0x556303;return _0x47ee00;})[_0x6cde('0x26')](respondWithFilteredResult(_0x2178b6,_0x28d3f7))[_0x6cde('0x44')](handleError(_0x2178b6,null));};exports[_0x6cde('0x45')]=function(_0x79ab9,_0x4b77fd){var _0x2c8dbd={'raw':![],'where':{'id':_0x79ab9[_0x6cde('0x46')]['id']}},_0x64a21={};_0x64a21[_0x6cde('0x2f')]=_[_0x6cde('0x31')](db[_0x6cde('0x2b')][_0x6cde('0x2c')]);_0x64a21[_0x6cde('0x30')]=_[_0x6cde('0x31')](_0x79ab9[_0x6cde('0x30')]);_0x64a21[_0x6cde('0x3a')]=_[_0x6cde('0x32')](_0x64a21[_0x6cde('0x2f')],_0x64a21[_0x6cde('0x30')]);_0x2c8dbd[_0x6cde('0x33')]=_[_0x6cde('0x32')](_0x64a21[_0x6cde('0x2f')],qs[_0x6cde('0x34')](_0x79ab9[_0x6cde('0x30')]['fields']));_0x2c8dbd['attributes']=_0x2c8dbd[_0x6cde('0x33')][_0x6cde('0x35')]?_0x2c8dbd[_0x6cde('0x33')]:_0x64a21[_0x6cde('0x2f')];if(_0x79ab9['query']['includeAll']){_0x2c8dbd['include']=[{'all':!![]}];}_0x2c8dbd=_['merge']({},_0x2c8dbd,_0x79ab9[_0x6cde('0x3f')]);return db['IntegrationReport'][_0x6cde('0x47')](_0x2c8dbd)[_0x6cde('0x26')](handleEntityNotFound(_0x4b77fd,null))[_0x6cde('0x26')](respondWithResult(_0x4b77fd,null))[_0x6cde('0x44')](handleError(_0x4b77fd,null));};exports[_0x6cde('0x48')]=function(_0x5b068c,_0x5bb362){return db[_0x6cde('0x2b')]['create'](_0x5b068c[_0x6cde('0x49')],{})[_0x6cde('0x26')](respondWithResult(_0x5bb362,0xc9))[_0x6cde('0x44')](handleError(_0x5bb362,null));};exports[_0x6cde('0x4a')]=function(_0x3e18b0,_0x48ba28){if(_0x3e18b0[_0x6cde('0x49')]['id']){delete _0x3e18b0[_0x6cde('0x49')]['id'];}return db['IntegrationReport']['find']({'where':{'id':_0x3e18b0[_0x6cde('0x46')]['id']}})['then'](handleEntityNotFound(_0x48ba28,null))[_0x6cde('0x26')](saveUpdates(_0x3e18b0[_0x6cde('0x49')],null))[_0x6cde('0x26')](respondWithResult(_0x48ba28,null))[_0x6cde('0x44')](handleError(_0x48ba28,null));};exports[_0x6cde('0x25')]=function(_0x5efc8c,_0x152c39){return db['IntegrationReport'][_0x6cde('0x47')]({'where':{'id':_0x5efc8c[_0x6cde('0x46')]['id']}})[_0x6cde('0x26')](handleEntityNotFound(_0x152c39,null))[_0x6cde('0x26')](removeEntity(_0x152c39,null))[_0x6cde('0x44')](handleError(_0x152c39,null));};exports['describe']=function(_0x470cf4,_0x2a578c){return db[_0x6cde('0x2b')][_0x6cde('0x4b')]()[_0x6cde('0x26')](respondWithResult(_0x2a578c,null))[_0x6cde('0x44')](handleError(_0x2a578c,null));};
\ No newline at end of file
index 014475c..a8a4636 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0xa0b6=['util','../../config/logger','moment','bluebird','request-promise','path','rimraf','../../config/environment','./integrationReport.attributes','exports','define','IntegrationReport','report_integration','lodash'];(function(_0x1c4237,_0x4cbc49){var _0xf5a7aa=function(_0x25caf7){while(--_0x25caf7){_0x1c4237['push'](_0x1c4237['shift']());}};_0xf5a7aa(++_0x4cbc49);}(_0xa0b6,0x179));var _0x6a0b=function(_0x164eca,_0x555e28){_0x164eca=_0x164eca-0x0;var _0x2ce562=_0xa0b6[_0x164eca];return _0x2ce562;};'use strict';var _=require(_0x6a0b('0x0'));var util=require(_0x6a0b('0x1'));var logger=require(_0x6a0b('0x2'))('api');var moment=require(_0x6a0b('0x3'));var BPromise=require(_0x6a0b('0x4'));var rp=require(_0x6a0b('0x5'));var fs=require('fs');var path=require(_0x6a0b('0x6'));var rimraf=require(_0x6a0b('0x7'));var config=require(_0x6a0b('0x8'));var attributes=require(_0x6a0b('0x9'));module[_0x6a0b('0xa')]=function(_0x3130a2,_0x5384f9){return _0x3130a2[_0x6a0b('0xb')](_0x6a0b('0xc'),attributes,{'tableName':_0x6a0b('0xd'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 97a5702..5f858b3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0xe2fe=['then','info','IntegrationReport,\x20%s,\x20%s','stringify','error','message','request\x20sent','result','lodash','bluebird','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','jayson/promise','client','request'];(function(_0x3dc75e,_0x2128b3){var _0x1a4565=function(_0x1321ea){while(--_0x1321ea){_0x3dc75e['push'](_0x3dc75e['shift']());}};_0x1a4565(++_0x2128b3);}(_0xe2fe,0x86));var _0xee2f=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0xe2fe[_0x3dd15e];return _0x231fd0;};'use strict';var _=require(_0xee2f('0x0'));var util=require('util');var moment=require('moment');var BPromise=require(_0xee2f('0x1'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0xee2f('0x2'));var db=require(_0xee2f('0x3'))['db'];var utils=require(_0xee2f('0x4'));var logger=require(_0xee2f('0x5'))(_0xee2f('0x6'));var config=require('../../config/environment');var jayson=require(_0xee2f('0x7'));var client=jayson[_0xee2f('0x8')]['http']({'port':0x232a});function respondWithRpcPromise(_0x1533a0,_0x2e1c8c,_0x5a7975){return new BPromise(function(_0x3c4095,_0x5ea796){return client[_0xee2f('0x9')](_0x1533a0,_0x5a7975)[_0xee2f('0xa')](function(_0x53f7dd){logger[_0xee2f('0xb')](_0xee2f('0xc'),_0x2e1c8c,'request\x20sent');logger['debug']('IntegrationReport,\x20%s,\x20%s,\x20%s',_0x2e1c8c,'request\x20sent',JSON[_0xee2f('0xd')](_0x53f7dd));if(_0x53f7dd['error']){if(_0x53f7dd['error']['code']===0x1f4){logger[_0xee2f('0xe')](_0xee2f('0xc'),_0x2e1c8c,_0x53f7dd[_0xee2f('0xe')][_0xee2f('0xf')]);return _0x5ea796(_0x53f7dd[_0xee2f('0xe')][_0xee2f('0xf')]);}logger['error'](_0xee2f('0xc'),_0x2e1c8c,_0x53f7dd['error'][_0xee2f('0xf')]);return _0x3c4095(_0x53f7dd[_0xee2f('0xe')]['message']);}else{logger[_0xee2f('0xb')](_0xee2f('0xc'),_0x2e1c8c,_0xee2f('0x10'));_0x3c4095(_0x53f7dd[_0xee2f('0x11')][_0xee2f('0xf')]);}})['catch'](function(_0x3f6372){logger['error'](_0xee2f('0xc'),_0x2e1c8c,_0x3f6372);_0x5ea796(_0x3f6372);});});}
\ No newline at end of file
index 8ad123f..ae121f9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0x10ab=['/:id/sub_intervals','addInterval','/:id/sub_intervals/create_many','addIntervals','update','delete','destroy','exports','multer','util','connect-timeout','Router','fs-extra','../../components/interaction/service','../../config/environment','get','isAuthenticated','index','/:id','show','getIntervals','post','create'];(function(_0x4b055c,_0x4b870b){var _0x4b62bb=function(_0x4884c2){while(--_0x4884c2){_0x4b055c['push'](_0x4b055c['shift']());}};_0x4b62bb(++_0x4b870b);}(_0x10ab,0x178));var _0xb10a=function(_0x6503ff,_0x2b169a){_0x6503ff=_0x6503ff-0x0;var _0x22e638=_0x10ab[_0x6503ff];return _0x22e638;};'use strict';var multer=require(_0xb10a('0x0'));var util=require(_0xb10a('0x1'));var path=require('path');var timeout=require(_0xb10a('0x2'));var express=require('express');var router=express[_0xb10a('0x3')]();var fs_extra=require(_0xb10a('0x4'));var auth=require('../../components/auth/service');var interaction=require(_0xb10a('0x5'));var config=require(_0xb10a('0x6'));var controller=require('./interval.controller');router[_0xb10a('0x7')]('/',auth[_0xb10a('0x8')](),controller[_0xb10a('0x9')]);router[_0xb10a('0x7')](_0xb10a('0xa'),auth[_0xb10a('0x8')](),controller[_0xb10a('0xb')]);router[_0xb10a('0x7')]('/:id/sub_intervals',auth[_0xb10a('0x8')](),controller[_0xb10a('0xc')]);router[_0xb10a('0xd')]('/',auth[_0xb10a('0x8')](),controller[_0xb10a('0xe')]);router[_0xb10a('0xd')](_0xb10a('0xf'),auth[_0xb10a('0x8')](),controller[_0xb10a('0x10')]);router[_0xb10a('0xd')](_0xb10a('0x11'),auth[_0xb10a('0x8')](),controller[_0xb10a('0x12')]);router['put']('/:id',auth[_0xb10a('0x8')](),controller[_0xb10a('0x13')]);router[_0xb10a('0x14')](_0xb10a('0xa'),auth[_0xb10a('0x8')](),controller[_0xb10a('0x15')]);module[_0xb10a('0x16')]=router;
\ No newline at end of file
index 29f0585..7677158 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0xa850=['sequelize','exports','STRING'];(function(_0x59ebc4,_0x5e14bd){var _0x2ffd57=function(_0x12483f){while(--_0x12483f){_0x59ebc4['push'](_0x59ebc4['shift']());}};_0x2ffd57(++_0x5e14bd);}(_0xa850,0x186));var _0x0a85=function(_0x10bd93,_0x1417a4){_0x10bd93=_0x10bd93-0x0;var _0x26d7b0=_0xa850[_0x10bd93];return _0x26d7b0;};'use strict';var Sequelize=require(_0x0a85('0x0'));module[_0x0a85('0x1')]={'name':{'type':Sequelize[_0x0a85('0x2')]},'description':{'type':Sequelize[_0x0a85('0x2')]},'interval':{'type':Sequelize[_0x0a85('0x2')],'allowNull':!![]}};
\ No newline at end of file
index 6164f4f..bf0da1b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0xf120=['destroy','addInterval','IntervalId','findOne','getIntervals','hasOwnProperty','addIntervals','sequelize','transaction','rimraf','zip-dir','fast-json-patch','moment','bluebird','mustache','path','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','desk.js','querystring','papaparse','ioredis','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../components/extensions/rewrite','sendStatus','status','end','json','offset','limit','undefined','count','set','Content-Range','save','update','then','get','Intervals','UserProfileResource','error','stack','index','map','Interval','rawAttributes','fieldName','type','key','name','query','keys','filters','intersection','model','attributes','fields','length','nolimit','order','sort','where','pick','filter','merge','options','includeAll','findAll','catch','show','params','include','create','body','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','UserProfileSection','find','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s'];(function(_0x5349df,_0x182ef9){var _0x428891=function(_0x1c9253){while(--_0x1c9253){_0x5349df['push'](_0x5349df['shift']());}};_0x428891(++_0x182ef9);}(_0xf120,0x179));var _0x0f12=function(_0x1a0a45,_0x2d8a65){_0x1a0a45=_0x1a0a45-0x0;var _0x1fdfa3=_0xf120[_0x1a0a45];return _0x1fdfa3;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x0f12('0x0'));var zipdir=require(_0x0f12('0x1'));var jsonpatch=require(_0x0f12('0x2'));var rp=require('request-promise');var moment=require(_0x0f12('0x3'));var BPromise=require(_0x0f12('0x4'));var Mustache=require(_0x0f12('0x5'));var util=require('util');var path=require(_0x0f12('0x6'));var sox=require(_0x0f12('0x7'));var csv=require(_0x0f12('0x8'));var ejs=require(_0x0f12('0x9'));var fs=require('fs');var fs_extra=require(_0x0f12('0xa'));var _=require(_0x0f12('0xb'));var squel=require(_0x0f12('0xc'));var crypto=require(_0x0f12('0xd'));var jsforce=require('jsforce');var deskjs=require(_0x0f12('0xe'));var toCsv=require('to-csv');var querystring=require(_0x0f12('0xf'));var Papa=require(_0x0f12('0x10'));var Redis=require(_0x0f12('0x11'));var authService=require('../../components/auth/service');var qs=require('../../components/parsers/qs');var as=require(_0x0f12('0x12'));var hardwareService=require(_0x0f12('0x13'));var logger=require(_0x0f12('0x14'))(_0x0f12('0x15'));var utils=require(_0x0f12('0x16'));var config=require(_0x0f12('0x17'));var licenseUtil=require(_0x0f12('0x18'));var db=require('../../mysqldb')['db'];var extensions=require(_0x0f12('0x19'));function respondWithStatusCode(_0x11a236,_0xb80905){_0xb80905=_0xb80905||0xcc;return function(_0x17960e){if(_0x17960e){return _0x11a236[_0x0f12('0x1a')](_0xb80905);}return _0x11a236[_0x0f12('0x1b')](_0xb80905)[_0x0f12('0x1c')]();};}function respondWithResult(_0x7f1ae7,_0x215a7a){_0x215a7a=_0x215a7a||0xc8;return function(_0x42b674){if(_0x42b674){return _0x7f1ae7[_0x0f12('0x1b')](_0x215a7a)[_0x0f12('0x1d')](_0x42b674);}};}function respondWithFilteredResult(_0xe61624,_0x27addc){return function(_0xeccb7c){if(_0xeccb7c){var _0x592617=typeof _0x27addc[_0x0f12('0x1e')]==='undefined'&&typeof _0x27addc[_0x0f12('0x1f')]===_0x0f12('0x20');var _0x28119e=_0xeccb7c[_0x0f12('0x21')];var _0x60daff=_0x592617?0x0:_0x27addc[_0x0f12('0x1e')];var _0x5f4290=_0x592617?_0xeccb7c[_0x0f12('0x21')]:_0x27addc['offset']+_0x27addc[_0x0f12('0x1f')];var _0x56c1f1;if(_0x5f4290>=_0x28119e){_0x5f4290=_0x28119e;_0x56c1f1=0xc8;}else{_0x56c1f1=0xce;}_0xe61624['status'](_0x56c1f1);return _0xe61624[_0x0f12('0x22')](_0x0f12('0x23'),_0x60daff+'-'+_0x5f4290+'/'+_0x28119e)[_0x0f12('0x1d')](_0xeccb7c);}return null;};}function patchUpdates(_0x5e4af9){return function(_0x10a325){try{jsonpatch['apply'](_0x10a325,_0x5e4af9,!![]);}catch(_0x26b2d7){return BPromise['reject'](_0x26b2d7);}return _0x10a325[_0x0f12('0x24')]();};}function saveUpdates(_0x379851,_0x4f06bd){return function(_0xe19f64){if(_0xe19f64){return _0xe19f64[_0x0f12('0x25')](_0x379851)[_0x0f12('0x26')](function(_0x3821dd){return _0x3821dd;});}return null;};}function removeEntity(_0x44f3b1,_0x59d65b){return function(_0x3be931){if(_0x3be931){return _0x3be931['destroy']()['then'](function(){var _0x481670=_0x3be931[_0x0f12('0x27')]({'plain':!![]});var _0x247f31=_0x0f12('0x28');return db[_0x0f12('0x29')]['destroy']({'where':{'type':_0x247f31,'resourceId':_0x481670['id']}})[_0x0f12('0x26')](function(){return _0x3be931;});})[_0x0f12('0x26')](function(){_0x44f3b1[_0x0f12('0x1b')](0xcc)['end']();});}};}function handleEntityNotFound(_0x13baa0,_0x2fdde4){return function(_0x8f43f9){if(!_0x8f43f9){_0x13baa0['sendStatus'](0x194);}return _0x8f43f9;};}function handleError(_0xeee65,_0x25a5dc){_0x25a5dc=_0x25a5dc||0x1f4;return function(_0x1521c6){logger[_0x0f12('0x2a')](_0x1521c6[_0x0f12('0x2b')]);if(_0x1521c6['name']){delete _0x1521c6['name'];}_0xeee65[_0x0f12('0x1b')](_0x25a5dc)['send'](_0x1521c6);};}exports[_0x0f12('0x2c')]=function(_0x3c6ce5,_0x453f9e){var _0x52fc14={},_0x12a575={},_0x45a39a={'count':0x0,'rows':[]};var _0x3e71ac=_[_0x0f12('0x2d')](db[_0x0f12('0x2e')][_0x0f12('0x2f')],function(_0x521ce1){return{'name':_0x521ce1[_0x0f12('0x30')],'type':_0x521ce1[_0x0f12('0x31')][_0x0f12('0x32')]};});_0x12a575['model']=_[_0x0f12('0x2d')](_0x3e71ac,_0x0f12('0x33'));_0x12a575[_0x0f12('0x34')]=_[_0x0f12('0x35')](_0x3c6ce5['query']);_0x12a575[_0x0f12('0x36')]=_[_0x0f12('0x37')](_0x12a575[_0x0f12('0x38')],_0x12a575[_0x0f12('0x34')]);_0x52fc14[_0x0f12('0x39')]=_[_0x0f12('0x37')](_0x12a575[_0x0f12('0x38')],qs['fields'](_0x3c6ce5[_0x0f12('0x34')][_0x0f12('0x3a')]));_0x52fc14['attributes']=_0x52fc14[_0x0f12('0x39')][_0x0f12('0x3b')]?_0x52fc14['attributes']:_0x12a575[_0x0f12('0x38')];if(!_0x3c6ce5[_0x0f12('0x34')]['hasOwnProperty'](_0x0f12('0x3c'))){_0x52fc14['limit']=qs[_0x0f12('0x1f')](_0x3c6ce5[_0x0f12('0x34')][_0x0f12('0x1f')]);_0x52fc14[_0x0f12('0x1e')]=qs[_0x0f12('0x1e')](_0x3c6ce5[_0x0f12('0x34')][_0x0f12('0x1e')]);}_0x52fc14[_0x0f12('0x3d')]=qs[_0x0f12('0x3e')](_0x3c6ce5[_0x0f12('0x34')]['sort']);_0x52fc14[_0x0f12('0x3f')]=qs[_0x0f12('0x36')](_[_0x0f12('0x40')](_0x3c6ce5['query'],_0x12a575['filters']),_0x3e71ac);if(_0x3c6ce5['query'][_0x0f12('0x41')]){_0x52fc14[_0x0f12('0x3f')]=_['merge'](_0x52fc14['where'],{'$or':_[_0x0f12('0x2d')](_0x3e71ac,function(_0x1a43c6){if(_0x1a43c6[_0x0f12('0x31')]!=='VIRTUAL'){var _0x3ccb6e={};_0x3ccb6e[_0x1a43c6[_0x0f12('0x33')]]={'$like':'%'+_0x3c6ce5['query'][_0x0f12('0x41')]+'%'};return _0x3ccb6e;}})});}_0x52fc14=_[_0x0f12('0x42')]({},_0x52fc14,_0x3c6ce5[_0x0f12('0x43')]);var _0x32442d={'where':_0x52fc14[_0x0f12('0x3f')]};return db[_0x0f12('0x2e')][_0x0f12('0x21')](_0x32442d)['then'](function(_0x16fb0d){_0x45a39a['count']=_0x16fb0d;if(_0x3c6ce5[_0x0f12('0x34')][_0x0f12('0x44')]){_0x52fc14['include']=[{'all':!![]}];}return db[_0x0f12('0x2e')][_0x0f12('0x45')](_0x52fc14);})[_0x0f12('0x26')](function(_0x496724){_0x45a39a['rows']=_0x496724;return _0x45a39a;})[_0x0f12('0x26')](respondWithFilteredResult(_0x453f9e,_0x52fc14))[_0x0f12('0x46')](handleError(_0x453f9e,null));};exports[_0x0f12('0x47')]=function(_0x1637cb,_0x5061bf){var _0xbe1aca={'raw':!![],'where':{'id':_0x1637cb[_0x0f12('0x48')]['id']}},_0x4651a0={};_0x4651a0[_0x0f12('0x38')]=_['keys'](db[_0x0f12('0x2e')][_0x0f12('0x2f')]);_0x4651a0['query']=_['keys'](_0x1637cb[_0x0f12('0x34')]);_0x4651a0[_0x0f12('0x36')]=_[_0x0f12('0x37')](_0x4651a0['model'],_0x4651a0['query']);_0xbe1aca[_0x0f12('0x39')]=_[_0x0f12('0x37')](_0x4651a0['model'],qs[_0x0f12('0x3a')](_0x1637cb['query'][_0x0f12('0x3a')]));_0xbe1aca[_0x0f12('0x39')]=_0xbe1aca['attributes']['length']?_0xbe1aca[_0x0f12('0x39')]:_0x4651a0[_0x0f12('0x38')];if(_0x1637cb[_0x0f12('0x34')][_0x0f12('0x44')]){_0xbe1aca[_0x0f12('0x49')]=[{'all':!![]}];}_0xbe1aca=_[_0x0f12('0x42')]({},_0xbe1aca,_0x1637cb[_0x0f12('0x43')]);return db[_0x0f12('0x2e')]['find'](_0xbe1aca)[_0x0f12('0x26')](handleEntityNotFound(_0x5061bf,null))['then'](respondWithResult(_0x5061bf,null))[_0x0f12('0x46')](handleError(_0x5061bf,null));};exports['create']=function(_0x4add76,_0xbbacc1){return db['Interval'][_0x0f12('0x4a')](_0x4add76[_0x0f12('0x4b')],{})[_0x0f12('0x26')](function(_0x284422){var _0x4fb2c5=_0x4add76[_0x0f12('0x4c')][_0x0f12('0x27')]({'plain':!![]});if(!_0x4fb2c5)throw new Error(_0x0f12('0x4d'));if(_0x4fb2c5[_0x0f12('0x4e')]==='user'){var _0x5382cc=_0x284422[_0x0f12('0x27')]({'plain':!![]});var _0x2e3df7=_0x0f12('0x28');return db[_0x0f12('0x4f')][_0x0f12('0x50')]({'where':{'name':_0x2e3df7,'userProfileId':_0x4fb2c5['userProfileId']},'raw':!![]})['then'](function(_0x58bb84){if(_0x58bb84&&_0x58bb84[_0x0f12('0x51')]===0x0){return db[_0x0f12('0x29')][_0x0f12('0x4a')]({'name':_0x5382cc[_0x0f12('0x33')],'resourceId':_0x5382cc['id'],'type':_0x58bb84[_0x0f12('0x33')],'sectionId':_0x58bb84['id']},{})[_0x0f12('0x26')](function(){return _0x284422;});}else{return _0x284422;}})[_0x0f12('0x46')](function(_0x1c6993){logger[_0x0f12('0x2a')](_0x0f12('0x52'),_0x1c6993);throw _0x1c6993;});}return _0x284422;})[_0x0f12('0x26')](respondWithResult(_0xbbacc1,0xc9))['catch'](handleError(_0xbbacc1,null));};exports[_0x0f12('0x25')]=function(_0x3dff95,_0x3fe597){if(_0x3dff95[_0x0f12('0x4b')]['id']){delete _0x3dff95['body']['id'];}return db['Interval'][_0x0f12('0x50')]({'where':{'id':_0x3dff95[_0x0f12('0x48')]['id']}})[_0x0f12('0x26')](handleEntityNotFound(_0x3fe597,null))[_0x0f12('0x26')](saveUpdates(_0x3dff95[_0x0f12('0x4b')],null))[_0x0f12('0x26')](respondWithResult(_0x3fe597,null))[_0x0f12('0x46')](handleError(_0x3fe597,null));};exports[_0x0f12('0x53')]=function(_0x5b2bb1,_0x204728){return db[_0x0f12('0x2e')]['find']({'where':{'id':_0x5b2bb1[_0x0f12('0x48')]['id']}})[_0x0f12('0x26')](handleEntityNotFound(_0x204728,null))[_0x0f12('0x26')](removeEntity(_0x204728,null))['catch'](handleError(_0x204728,null));};exports[_0x0f12('0x54')]=function(_0x14b337,_0x3b5bf3,_0x2ca6bb){if(_0x14b337[_0x0f12('0x4b')]['id']){delete _0x14b337['body']['id'];}return db[_0x0f12('0x2e')]['find']({'where':{'id':_0x14b337[_0x0f12('0x48')]['id']}})['then'](handleEntityNotFound(_0x3b5bf3,null))[_0x0f12('0x26')](function(_0x3e64a2){if(_0x3e64a2){_0x14b337['body'][_0x0f12('0x55')]=_0x3e64a2['id'];return db[_0x0f12('0x2e')]['create'](_0x14b337[_0x0f12('0x4b')]);}})['then'](respondWithResult(_0x3b5bf3,null))[_0x0f12('0x46')](handleError(_0x3b5bf3,null));};exports['getIntervals']=function(_0x1d6bb6,_0x3783cc,_0x37ac11){var _0x4fa481={};var _0x5f3bd9={};var _0x2df09e;var _0x2cc2d6;return db['Interval'][_0x0f12('0x56')]({'where':{'id':_0x1d6bb6[_0x0f12('0x48')]['id']}})['then'](handleEntityNotFound(_0x3783cc,null))[_0x0f12('0x26')](function(_0x1727c2){if(_0x1727c2){_0x2df09e=_0x1727c2;_0x5f3bd9['model']=_[_0x0f12('0x35')](db[_0x0f12('0x2e')][_0x0f12('0x2f')]);_0x5f3bd9[_0x0f12('0x34')]=_[_0x0f12('0x35')](_0x1d6bb6[_0x0f12('0x34')]);_0x5f3bd9[_0x0f12('0x36')]=_[_0x0f12('0x37')](_0x5f3bd9[_0x0f12('0x38')],_0x5f3bd9[_0x0f12('0x34')]);_0x4fa481[_0x0f12('0x39')]=_[_0x0f12('0x37')](_0x5f3bd9['model'],qs[_0x0f12('0x3a')](_0x1d6bb6[_0x0f12('0x34')][_0x0f12('0x3a')]));_0x4fa481[_0x0f12('0x39')]=_0x4fa481[_0x0f12('0x39')]['length']?_0x4fa481[_0x0f12('0x39')]:_0x5f3bd9[_0x0f12('0x38')];_0x4fa481[_0x0f12('0x3d')]=qs['sort'](_0x1d6bb6[_0x0f12('0x34')]['sort']);_0x4fa481[_0x0f12('0x3f')]=qs[_0x0f12('0x36')](_[_0x0f12('0x40')](_0x1d6bb6[_0x0f12('0x34')],_0x5f3bd9['filters']));if(_0x1d6bb6[_0x0f12('0x34')]['filter']){_0x4fa481[_0x0f12('0x3f')]=_[_0x0f12('0x42')](_0x4fa481['where'],{'$or':_[_0x0f12('0x2d')](_0x4fa481[_0x0f12('0x39')],function(_0x1f06c7){var _0x516ddb={};_0x516ddb[_0x1f06c7]={'$like':'%'+_0x1d6bb6[_0x0f12('0x34')][_0x0f12('0x41')]+'%'};return _0x516ddb;})});}_0x4fa481=_['merge']({},_0x4fa481,_0x1d6bb6[_0x0f12('0x43')]);return _0x2df09e[_0x0f12('0x57')](_0x4fa481);}})[_0x0f12('0x26')](function(_0x44d298){if(_0x44d298){_0x2cc2d6=_0x44d298[_0x0f12('0x3b')];if(!_0x1d6bb6[_0x0f12('0x34')][_0x0f12('0x58')](_0x0f12('0x3c'))){_0x4fa481[_0x0f12('0x1f')]=qs[_0x0f12('0x1f')](_0x1d6bb6[_0x0f12('0x34')]['limit']);_0x4fa481[_0x0f12('0x1e')]=qs['offset'](_0x1d6bb6[_0x0f12('0x34')][_0x0f12('0x1e')]);}return _0x2df09e[_0x0f12('0x57')](_0x4fa481);}})['then'](function(_0x228abf){if(_0x228abf){return _0x228abf?{'count':_0x2cc2d6,'rows':_0x228abf}:null;}})[_0x0f12('0x26')](respondWithResult(_0x3783cc,null))[_0x0f12('0x46')](handleError(_0x3783cc,null));};exports[_0x0f12('0x59')]=function(_0xa8d3a8,_0x97a245,_0x3ccf3d){return db[_0x0f12('0x2e')]['findOne']({'where':{'id':_0xa8d3a8[_0x0f12('0x48')]['id']}})[_0x0f12('0x26')](handleEntityNotFound(_0x97a245,null))[_0x0f12('0x26')](function(_0x34a65a){if(_0x34a65a){return db[_0x0f12('0x5a')][_0x0f12('0x5b')](function(_0x20a1fd){return db[_0x0f12('0x2e')][_0x0f12('0x53')]({'where':{'IntervalId':_0xa8d3a8['params']['id']},'transaction':_0x20a1fd})['then'](function(_0x2f173e){var _0x14e71a=_[_0x0f12('0x2d')](_0xa8d3a8[_0x0f12('0x4b')],function(_0x4a8298){delete _0x4a8298['id'];_0x4a8298[_0x0f12('0x55')]=_0xa8d3a8[_0x0f12('0x48')]['id'];return _0x4a8298;});return db[_0x0f12('0x2e')]['bulkCreate'](_0x14e71a,{'transaction':_0x20a1fd});});})[_0x0f12('0x26')](function(){return db[_0x0f12('0x2e')][_0x0f12('0x45')]({'where':{'IntervalId':_0xa8d3a8[_0x0f12('0x48')]['id']}});});}})[_0x0f12('0x26')](respondWithResult(_0x97a245,null))[_0x0f12('0x46')](handleError(_0x97a245,null));};
\ No newline at end of file
index ec3aa7c..f4856c6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0xf1d7=['../../config/logger','bluebird','request-promise','rimraf','../../components/extensions/rewrite','exports','define','Interval','tools_intervals','rewrite','lodash','util'];(function(_0x5d8fb4,_0x3ee08b){var _0x3370bc=function(_0x45b3db){while(--_0x45b3db){_0x5d8fb4['push'](_0x5d8fb4['shift']());}};_0x3370bc(++_0x3ee08b);}(_0xf1d7,0x17e));var _0x7f1d=function(_0x71d8e4,_0xae92c2){_0x71d8e4=_0x71d8e4-0x0;var _0x45e390=_0xf1d7[_0x71d8e4];return _0x45e390;};'use strict';var _=require(_0x7f1d('0x0'));var util=require(_0x7f1d('0x1'));var logger=require(_0x7f1d('0x2'))('api');var moment=require('moment');var BPromise=require(_0x7f1d('0x3'));var rp=require(_0x7f1d('0x4'));var fs=require('fs');var path=require('path');var rimraf=require(_0x7f1d('0x5'));var config=require('../../config/environment');var attributes=require('./interval.attributes');var extensions=require(_0x7f1d('0x6'));module[_0x7f1d('0x7')]=function(_0x3773e3,_0x51177a){return _0x3773e3[_0x7f1d('0x8')](_0x7f1d('0x9'),attributes,{'tableName':_0x7f1d('0xa'),'paranoid':![],'indexes':[],'timestamps':!![],'hooks':{'afterCreate':function(_0x3068d1,_0x840982){extensions['rewrite'](_0x3773e3,_0x3068d1);},'afterBulkCreate':function(_0x168bb4,_0x43e539,_0x300d65){_0x300d65();extensions[_0x7f1d('0xb')](_0x3773e3,_0x168bb4[0x0]);},'afterUpdate':function(_0x198479,_0x2bcdb3){extensions[_0x7f1d('0xb')](_0x3773e3,_0x198479);},'afterDestroy':function(_0xa428eb,_0x466a44){extensions[_0x7f1d('0xb')](_0x3773e3,_0xa428eb);}}});};
\ No newline at end of file
index 1cda144..40c4ad6 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(_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
+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(_0x687ddc,_0x2092fa){var _0x441991=function(_0x49c6a6){while(--_0x49c6a6){_0x687ddc['push'](_0x687ddc['shift']());}};_0x441991(++_0x2092fa);}(_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 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 1f67f0c..894148f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xdb28=['isAuthenticated','send','exports','express','Router','../../components/auth/service','./jira.controller'];(function(_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
+var _0x2032=['isAuthenticated','send','Router','../../components/auth/service','./jira.controller'];(function(_0xd7118d,_0x15ae04){var _0x233093=function(_0x34515b){while(--_0x34515b){_0xd7118d['push'](_0xd7118d['shift']());}};_0x233093(++_0x15ae04);}(_0x2032,0xd9));var _0x2203=function(_0x36cafb,_0x10c523){_0x36cafb=_0x36cafb-0x0;var _0x24410a=_0x2032[_0x36cafb];return _0x24410a;};'use strict';var express=require('express');var router=express[_0x2203('0x0')]();var auth=require(_0x2203('0x1'));var controller=require(_0x2203('0x2'));router['post']('/',auth[_0x2203('0x3')](),controller[_0x2203('0x4')]);module['exports']=router;
\ No newline at end of file
index caffa47..82569ff 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0x6207=['Error\x20during\x20license\x20request.\x20Please\x20contact\x20our\x20license\x20team\x20at\x20license@xcally.com\x20with\x20your\x20request','api.jira','write','end','send','headers','connection','remoteAddress','socket','https','../../config/logger','api','support','3eAmWpBVP0','key','MOTGUI','summary','Report','\x20from\x20','description','stringify','issuetype','Bug','fields','customfield_11500','email','customfield_11501','oldToken','customfield_11502','newToken','customfield_11503','name','customfield_11504','reason','customfield_10102','track.xcallymotion.com','POST','application/json','Basic\x20','toString','request','setEncoding','utf8','data','status','statusCode','json','parse'];(function(_0x5c2e3e,_0x26ecd3){var _0x53f64a=function(_0x2b5df8){while(--_0x2b5df8){_0x5c2e3e['push'](_0x5c2e3e['shift']());}};_0x53f64a(++_0x26ecd3);}(_0x6207,0x189));var _0x7620=function(_0x1723d2,_0x5537ef){_0x1723d2=_0x1723d2-0x0;var _0x1f6c53=_0x6207[_0x1723d2];return _0x1f6c53;};'use strict';var BPromise=require('bluebird');var https=require(_0x7620('0x0'));var logger=require(_0x7620('0x1'))(_0x7620('0x2'));var USERNAME=_0x7620('0x3');var PASSWORD=_0x7620('0x4');function openIssue(_0x5dadc4,_0xaac0f1){var _0x4b3928={'fields':{'project':{'key':_0x5dadc4[_0x7620('0x5')]||_0x7620('0x6')},'summary':(_0x5dadc4[_0x7620('0x7')]||_0x7620('0x8'))+_0x7620('0x9')+_0x5dadc4['ip'],'description':_0x5dadc4[_0x7620('0xa')]||JSON[_0x7620('0xb')](_0x5dadc4),'issuetype':{'name':_0x5dadc4[_0x7620('0xc')]||_0x7620('0xd')}}};_0x4b3928[_0x7620('0xe')][_0x7620('0xf')]=_0x5dadc4[_0x7620('0x10')];_0x4b3928[_0x7620('0xe')][_0x7620('0x11')]=_0x5dadc4[_0x7620('0x12')];_0x4b3928[_0x7620('0xe')][_0x7620('0x13')]=_0x5dadc4[_0x7620('0x14')];_0x4b3928[_0x7620('0xe')][_0x7620('0x15')]=_0x5dadc4[_0x7620('0x16')];_0x4b3928[_0x7620('0xe')][_0x7620('0x17')]=_0x5dadc4[_0x7620('0x18')];_0x4b3928[_0x7620('0xe')][_0x7620('0x19')]=_0x5dadc4['ip'];var _0x5739ab={'host':_0x7620('0x1a'),'port':0x1bb,'path':'/rest/api/2/issue','method':_0x7620('0x1b'),'timeout':0x4e20,'headers':{'Content-Type':_0x7620('0x1c'),'Authorization':_0x7620('0x1d')+new Buffer(USERNAME+':'+PASSWORD)[_0x7620('0x1e')]('base64')}};var _0x7b3247=JSON[_0x7620('0xb')](_0x4b3928);var _0x18d46a=https[_0x7620('0x1f')](_0x5739ab,function(_0x58f7fd){_0x58f7fd[_0x7620('0x20')](_0x7620('0x21'));var _0x2e5843='';_0x58f7fd['on'](_0x7620('0x22'),function(_0x1be569){_0x2e5843+=_0x1be569;});_0x58f7fd['on']('end',function(){if(_0xaac0f1){return _0xaac0f1[_0x7620('0x23')](_0x58f7fd[_0x7620('0x24')])[_0x7620('0x25')](JSON[_0x7620('0x26')](_0x2e5843));}});});_0x18d46a['on']('error',function(_0x2e8f1f){if(_0xaac0f1){return _0xaac0f1['status'](0x1f4)[_0x7620('0x25')]({'errors':[{'message':_0x7620('0x27'),'type':_0x7620('0x28')}]});}});_0x18d46a[_0x7620('0x29')](_0x7b3247);_0x18d46a[_0x7620('0x2a')]();}exports['openIssue']=openIssue;exports[_0x7620('0x2b')]=function(_0x39e62b,_0x31c9af){_0x39e62b['body']['ip']=_0x39e62b[_0x7620('0x2c')]['x-forwarded-for']||_0x39e62b[_0x7620('0x2d')][_0x7620('0x2e')]||_0x39e62b[_0x7620('0x2f')]['remoteAddress']||_0x39e62b['connection']['socket'][_0x7620('0x2e')];return openIssue(_0x39e62b['body'],_0x31c9af);};
\ No newline at end of file
index ed3dd87..6aed169 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0x5b02=['destroy','exports','multer','util','path','connect-timeout','fs-extra','../../components/interaction/service','../../config/environment','./jscriptyAnswerReport.controller','get','isAuthenticated','/describe','describe','show','post','create','put','/:id','update','delete'];(function(_0x2f752e,_0x5d3239){var _0x8a10ec=function(_0x9b408f){while(--_0x9b408f){_0x2f752e['push'](_0x2f752e['shift']());}};_0x8a10ec(++_0x5d3239);}(_0x5b02,0xe9));var _0x25b0=function(_0x3f0958,_0x42784b){_0x3f0958=_0x3f0958-0x0;var _0x5d37a9=_0x5b02[_0x3f0958];return _0x5d37a9;};'use strict';var multer=require(_0x25b0('0x0'));var util=require(_0x25b0('0x1'));var path=require(_0x25b0('0x2'));var timeout=require(_0x25b0('0x3'));var express=require('express');var router=express['Router']();var fs_extra=require(_0x25b0('0x4'));var auth=require('../../components/auth/service');var interaction=require(_0x25b0('0x5'));var config=require(_0x25b0('0x6'));var controller=require(_0x25b0('0x7'));router[_0x25b0('0x8')]('/',auth[_0x25b0('0x9')](),controller['index']);router[_0x25b0('0x8')](_0x25b0('0xa'),auth['isAuthenticated'](),controller[_0x25b0('0xb')]);router['get']('/:id',auth[_0x25b0('0x9')](),controller[_0x25b0('0xc')]);router[_0x25b0('0xd')]('/',auth['isAuthenticated'](),controller[_0x25b0('0xe')]);router[_0x25b0('0xf')](_0x25b0('0x10'),auth[_0x25b0('0x9')](),controller[_0x25b0('0x11')]);router[_0x25b0('0x12')](_0x25b0('0x10'),auth[_0x25b0('0x9')](),controller[_0x25b0('0x13')]);module[_0x25b0('0x14')]=router;
\ No newline at end of file
index edd9d23..e0afae6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7a54=['long','STRING','sequelize','exports','TEXT'];(function(_0x2641f9,_0x26715f){var _0x585741=function(_0x2d1462){while(--_0x2d1462){_0x2641f9['push'](_0x2641f9['shift']());}};_0x585741(++_0x26715f);}(_0x7a54,0x106));var _0x47a5=function(_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
+var _0x7a54=['long','STRING','sequelize','exports','TEXT'];(function(_0x16b9ed,_0x56517a){var _0x66b1f8=function(_0x1c883){while(--_0x1c883){_0x16b9ed['push'](_0x16b9ed['shift']());}};_0x66b1f8(++_0x56517a);}(_0x7a54,0x106));var _0x47a5=function(_0x1fb54d,_0x3b716e){_0x1fb54d=_0x1fb54d-0x0;var _0x43b50d=_0x7a54[_0x1fb54d];return _0x43b50d;};'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 70aa8b7..5695e77 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0xfd20=['map','JscriptyAnswerReport','rawAttributes','fieldName','type','key','model','query','intersection','fields','attributes','hasOwnProperty','nolimit','sort','where','filters','pick','filter','merge','VIRTUAL','includeAll','include','rows','catch','params','keys','options','create','body','find','destroy','describe','rimraf','request-promise','moment','mustache','path','sox','to-csv','ejs','fs-extra','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','undefined','count','offset','limit','set','Content-Range','json','apply','then','end','error','stack','name','send'];(function(_0x363781,_0x229510){var _0x290d77=function(_0xe70adb){while(--_0xe70adb){_0x363781['push'](_0x363781['shift']());}};_0x290d77(++_0x229510);}(_0xfd20,0x66));var _0x0fd2=function(_0x1144b9,_0x58585e){_0x1144b9=_0x1144b9-0x0;var _0x58552c=_0xfd20[_0x1144b9];return _0x58552c;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x0fd2('0x0'));var zipdir=require('zip-dir');var jsonpatch=require('fast-json-patch');var rp=require(_0x0fd2('0x1'));var moment=require(_0x0fd2('0x2'));var BPromise=require('bluebird');var Mustache=require(_0x0fd2('0x3'));var util=require('util');var path=require(_0x0fd2('0x4'));var sox=require(_0x0fd2('0x5'));var csv=require(_0x0fd2('0x6'));var ejs=require(_0x0fd2('0x7'));var fs=require('fs');var fs_extra=require(_0x0fd2('0x8'));var _=require('lodash');var squel=require('squel');var crypto=require(_0x0fd2('0x9'));var jsforce=require(_0x0fd2('0xa'));var deskjs=require(_0x0fd2('0xb'));var toCsv=require(_0x0fd2('0x6'));var querystring=require(_0x0fd2('0xc'));var Papa=require(_0x0fd2('0xd'));var Redis=require(_0x0fd2('0xe'));var authService=require('../../components/auth/service');var qs=require(_0x0fd2('0xf'));var as=require(_0x0fd2('0x10'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x0fd2('0x11'))('api');var utils=require(_0x0fd2('0x12'));var config=require(_0x0fd2('0x13'));var licenseUtil=require(_0x0fd2('0x14'));var db=require(_0x0fd2('0x15'))['db'];function respondWithStatusCode(_0xdf592d,_0x3504cf){_0x3504cf=_0x3504cf||0xcc;return function(_0x1f7a6e){if(_0x1f7a6e){return _0xdf592d[_0x0fd2('0x16')](_0x3504cf);}return _0xdf592d['status'](_0x3504cf)['end']();};}function respondWithResult(_0x1a9acb,_0x99de24){_0x99de24=_0x99de24||0xc8;return function(_0x21dcc5){if(_0x21dcc5){return _0x1a9acb[_0x0fd2('0x17')](_0x99de24)['json'](_0x21dcc5);}};}function respondWithFilteredResult(_0x280253,_0x4f074a){return function(_0x50b723){if(_0x50b723){var _0x2b6254=typeof _0x4f074a['offset']===_0x0fd2('0x18')&&typeof _0x4f074a['limit']===_0x0fd2('0x18');var _0x4cd2bf=_0x50b723[_0x0fd2('0x19')];var _0x15c9de=_0x2b6254?0x0:_0x4f074a['offset'];var _0x2b25d2=_0x2b6254?_0x50b723['count']:_0x4f074a[_0x0fd2('0x1a')]+_0x4f074a[_0x0fd2('0x1b')];var _0x3fb07e;if(_0x2b25d2>=_0x4cd2bf){_0x2b25d2=_0x4cd2bf;_0x3fb07e=0xc8;}else{_0x3fb07e=0xce;}_0x280253[_0x0fd2('0x17')](_0x3fb07e);return _0x280253[_0x0fd2('0x1c')](_0x0fd2('0x1d'),_0x15c9de+'-'+_0x2b25d2+'/'+_0x4cd2bf)[_0x0fd2('0x1e')](_0x50b723);}return null;};}function patchUpdates(_0x1a72ca){return function(_0x1b848d){try{jsonpatch[_0x0fd2('0x1f')](_0x1b848d,_0x1a72ca,!![]);}catch(_0x5c50ad){return BPromise['reject'](_0x5c50ad);}return _0x1b848d['save']();};}function saveUpdates(_0x4156d2,_0x36072a){return function(_0x53ab17){if(_0x53ab17){return _0x53ab17['update'](_0x4156d2)[_0x0fd2('0x20')](function(_0x25563c){return _0x25563c;});}return null;};}function removeEntity(_0x6be8d8,_0x29398f){return function(_0x25cdd2){if(_0x25cdd2){return _0x25cdd2['destroy']()[_0x0fd2('0x20')](function(){_0x6be8d8[_0x0fd2('0x17')](0xcc)[_0x0fd2('0x21')]();});}};}function handleEntityNotFound(_0x54cce1,_0x4c77a8){return function(_0x11bb10){if(!_0x11bb10){_0x54cce1[_0x0fd2('0x16')](0x194);}return _0x11bb10;};}function handleError(_0x4d0924,_0x400133){_0x400133=_0x400133||0x1f4;return function(_0x429fef){logger[_0x0fd2('0x22')](_0x429fef[_0x0fd2('0x23')]);if(_0x429fef[_0x0fd2('0x24')]){delete _0x429fef[_0x0fd2('0x24')];}_0x4d0924[_0x0fd2('0x17')](_0x400133)[_0x0fd2('0x25')](_0x429fef);};}exports['index']=function(_0x37d519,_0x434018){var _0x235c90={},_0x1ca259={},_0x33cf1a={'count':0x0,'rows':[]};var _0x564419=_[_0x0fd2('0x26')](db[_0x0fd2('0x27')][_0x0fd2('0x28')],function(_0x1a7a98){return{'name':_0x1a7a98[_0x0fd2('0x29')],'type':_0x1a7a98[_0x0fd2('0x2a')][_0x0fd2('0x2b')]};});_0x1ca259[_0x0fd2('0x2c')]=_['map'](_0x564419,_0x0fd2('0x24'));_0x1ca259['query']=_['keys'](_0x37d519[_0x0fd2('0x2d')]);_0x1ca259['filters']=_[_0x0fd2('0x2e')](_0x1ca259['model'],_0x1ca259[_0x0fd2('0x2d')]);_0x235c90['attributes']=_['intersection'](_0x1ca259[_0x0fd2('0x2c')],qs[_0x0fd2('0x2f')](_0x37d519[_0x0fd2('0x2d')]['fields']));_0x235c90['attributes']=_0x235c90[_0x0fd2('0x30')]['length']?_0x235c90[_0x0fd2('0x30')]:_0x1ca259[_0x0fd2('0x2c')];if(!_0x37d519[_0x0fd2('0x2d')][_0x0fd2('0x31')](_0x0fd2('0x32'))){_0x235c90[_0x0fd2('0x1b')]=qs[_0x0fd2('0x1b')](_0x37d519['query'][_0x0fd2('0x1b')]);_0x235c90[_0x0fd2('0x1a')]=qs['offset'](_0x37d519['query'][_0x0fd2('0x1a')]);}_0x235c90['order']=qs['sort'](_0x37d519[_0x0fd2('0x2d')][_0x0fd2('0x33')]);_0x235c90[_0x0fd2('0x34')]=qs[_0x0fd2('0x35')](_[_0x0fd2('0x36')](_0x37d519[_0x0fd2('0x2d')],_0x1ca259[_0x0fd2('0x35')]),_0x564419);if(_0x37d519[_0x0fd2('0x2d')][_0x0fd2('0x37')]){_0x235c90[_0x0fd2('0x34')]=_[_0x0fd2('0x38')](_0x235c90[_0x0fd2('0x34')],{'$or':_[_0x0fd2('0x26')](_0x564419,function(_0x3a3986){if(_0x3a3986[_0x0fd2('0x2a')]!==_0x0fd2('0x39')){var _0x50643e={};_0x50643e[_0x3a3986[_0x0fd2('0x24')]]={'$like':'%'+_0x37d519[_0x0fd2('0x2d')][_0x0fd2('0x37')]+'%'};return _0x50643e;}})});}_0x235c90=_[_0x0fd2('0x38')]({},_0x235c90,_0x37d519['options']);var _0x286543={'where':_0x235c90['where']};return db[_0x0fd2('0x27')][_0x0fd2('0x19')](_0x286543)['then'](function(_0x43e585){_0x33cf1a[_0x0fd2('0x19')]=_0x43e585;if(_0x37d519[_0x0fd2('0x2d')][_0x0fd2('0x3a')]){_0x235c90[_0x0fd2('0x3b')]=[{'all':!![]}];}return db[_0x0fd2('0x27')]['findAll'](_0x235c90);})[_0x0fd2('0x20')](function(_0x409321){_0x33cf1a[_0x0fd2('0x3c')]=_0x409321;return _0x33cf1a;})[_0x0fd2('0x20')](respondWithFilteredResult(_0x434018,_0x235c90))[_0x0fd2('0x3d')](handleError(_0x434018,null));};exports['show']=function(_0x258569,_0x2e804d){var _0x554476={'raw':!![],'where':{'id':_0x258569[_0x0fd2('0x3e')]['id']}},_0x252fb1={};_0x252fb1[_0x0fd2('0x2c')]=_[_0x0fd2('0x3f')](db[_0x0fd2('0x27')][_0x0fd2('0x28')]);_0x252fb1[_0x0fd2('0x2d')]=_[_0x0fd2('0x3f')](_0x258569['query']);_0x252fb1['filters']=_[_0x0fd2('0x2e')](_0x252fb1[_0x0fd2('0x2c')],_0x252fb1['query']);_0x554476[_0x0fd2('0x30')]=_['intersection'](_0x252fb1[_0x0fd2('0x2c')],qs[_0x0fd2('0x2f')](_0x258569[_0x0fd2('0x2d')][_0x0fd2('0x2f')]));_0x554476[_0x0fd2('0x30')]=_0x554476[_0x0fd2('0x30')]['length']?_0x554476['attributes']:_0x252fb1[_0x0fd2('0x2c')];if(_0x258569['query'][_0x0fd2('0x3a')]){_0x554476[_0x0fd2('0x3b')]=[{'all':!![]}];}_0x554476=_[_0x0fd2('0x38')]({},_0x554476,_0x258569[_0x0fd2('0x40')]);return db[_0x0fd2('0x27')]['find'](_0x554476)[_0x0fd2('0x20')](handleEntityNotFound(_0x2e804d,null))['then'](respondWithResult(_0x2e804d,null))[_0x0fd2('0x3d')](handleError(_0x2e804d,null));};exports[_0x0fd2('0x41')]=function(_0x5352cc,_0x337daa){return db['JscriptyAnswerReport']['create'](_0x5352cc[_0x0fd2('0x42')],{})[_0x0fd2('0x20')](respondWithResult(_0x337daa,0xc9))[_0x0fd2('0x3d')](handleError(_0x337daa,null));};exports['update']=function(_0x30ac02,_0x119e21){if(_0x30ac02[_0x0fd2('0x42')]['id']){delete _0x30ac02[_0x0fd2('0x42')]['id'];}return db['JscriptyAnswerReport'][_0x0fd2('0x43')]({'where':{'id':_0x30ac02[_0x0fd2('0x3e')]['id']}})[_0x0fd2('0x20')](handleEntityNotFound(_0x119e21,null))[_0x0fd2('0x20')](saveUpdates(_0x30ac02[_0x0fd2('0x42')],null))[_0x0fd2('0x20')](respondWithResult(_0x119e21,null))[_0x0fd2('0x3d')](handleError(_0x119e21,null));};exports[_0x0fd2('0x44')]=function(_0x2377bd,_0x4322b4){return db[_0x0fd2('0x27')]['find']({'where':{'id':_0x2377bd[_0x0fd2('0x3e')]['id']}})[_0x0fd2('0x20')](handleEntityNotFound(_0x4322b4,null))['then'](removeEntity(_0x4322b4,null))[_0x0fd2('0x3d')](handleError(_0x4322b4,null));};exports['describe']=function(_0x19650c,_0x5193b7){return db[_0x0fd2('0x27')][_0x0fd2('0x45')]()[_0x0fd2('0x20')](respondWithResult(_0x5193b7,null))['catch'](handleError(_0x5193b7,null));};
\ No newline at end of file
index 7a5155a..97f1382 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0x9baa=['./jscriptyAnswerReport.attributes','JscriptyAnswerReport','report_jscripty_answers','lodash','../../config/logger','moment','bluebird','request-promise','path','rimraf','../../config/environment'];(function(_0x2212d1,_0x483fc8){var _0x15eec5=function(_0x15e6ac){while(--_0x15e6ac){_0x2212d1['push'](_0x2212d1['shift']());}};_0x15eec5(++_0x483fc8);}(_0x9baa,0x19a));var _0xa9ba=function(_0xa14522,_0x5df820){_0xa14522=_0xa14522-0x0;var _0x1fb7cb=_0x9baa[_0xa14522];return _0x1fb7cb;};'use strict';var _=require(_0xa9ba('0x0'));var util=require('util');var logger=require(_0xa9ba('0x1'))('api');var moment=require(_0xa9ba('0x2'));var BPromise=require(_0xa9ba('0x3'));var rp=require(_0xa9ba('0x4'));var fs=require('fs');var path=require(_0xa9ba('0x5'));var rimraf=require(_0xa9ba('0x6'));var config=require(_0xa9ba('0x7'));var attributes=require(_0xa9ba('0x8'));module['exports']=function(_0x1f5fc7,_0x4ac057){return _0x1f5fc7['define'](_0xa9ba('0x9'),attributes,{'tableName':_0xa9ba('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 74945cd..03b0c1c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0xb130=['JscriptyAnswerReport,\x20%s,\x20%s,\x20%s','stringify','error','code','JscriptyAnswerReport,\x20%s,\x20%s','message','info','util','moment','ioredis','../../mysqldb','../../config/utils','rpc','../../config/environment','jayson/promise','client','http','request\x20sent','debug'];(function(_0x5189ab,_0x33cb33){var _0x5a7825=function(_0x179877){while(--_0x179877){_0x5189ab['push'](_0x5189ab['shift']());}};_0x5a7825(++_0x33cb33);}(_0xb130,0x9f));var _0x0b13=function(_0x4737a0,_0x36520e){_0x4737a0=_0x4737a0-0x0;var _0x4d558b=_0xb130[_0x4737a0];return _0x4d558b;};'use strict';var _=require('lodash');var util=require(_0x0b13('0x0'));var moment=require(_0x0b13('0x1'));var BPromise=require('bluebird');var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x0b13('0x2'));var db=require(_0x0b13('0x3'))['db'];var utils=require(_0x0b13('0x4'));var logger=require('../../config/logger')(_0x0b13('0x5'));var config=require(_0x0b13('0x6'));var jayson=require(_0x0b13('0x7'));var client=jayson[_0x0b13('0x8')][_0x0b13('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x3d049d,_0x6dad5a,_0x3066cf){return new BPromise(function(_0x40311d,_0x379f71){return client['request'](_0x3d049d,_0x3066cf)['then'](function(_0x1a989c){logger['info']('JscriptyAnswerReport,\x20%s,\x20%s',_0x6dad5a,_0x0b13('0xa'));logger[_0x0b13('0xb')](_0x0b13('0xc'),_0x6dad5a,_0x0b13('0xa'),JSON[_0x0b13('0xd')](_0x1a989c));if(_0x1a989c[_0x0b13('0xe')]){if(_0x1a989c['error'][_0x0b13('0xf')]===0x1f4){logger[_0x0b13('0xe')](_0x0b13('0x10'),_0x6dad5a,_0x1a989c[_0x0b13('0xe')][_0x0b13('0x11')]);return _0x379f71(_0x1a989c[_0x0b13('0xe')]['message']);}logger[_0x0b13('0xe')](_0x0b13('0x10'),_0x6dad5a,_0x1a989c['error'][_0x0b13('0x11')]);return _0x40311d(_0x1a989c[_0x0b13('0xe')][_0x0b13('0x11')]);}else{logger[_0x0b13('0x12')]('JscriptyAnswerReport,\x20%s,\x20%s',_0x6dad5a,_0x0b13('0xa'));_0x40311d(_0x1a989c['result'][_0x0b13('0x11')]);}})['catch'](function(_0x33e6e6){logger[_0x0b13('0xe')](_0x0b13('0x10'),_0x6dad5a,_0x33e6e6);_0x379f71(_0x33e6e6);});});}
\ No newline at end of file
index 066ae4a..ea142b6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0xf5ce=['index','get','/:id','show','isAuthenticated','getSessions','/:id/answers','/:id/summary','30s','create','post','/:id/clone','put','update','destroy','exports','multer','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../config/environment','./jscriptyProject.controller'];(function(_0x3070dc,_0x40cf11){var _0x431489=function(_0x49bc2a){while(--_0x49bc2a){_0x3070dc['push'](_0x3070dc['shift']());}};_0x431489(++_0x40cf11);}(_0xf5ce,0xfa));var _0xef5c=function(_0x4bbecf,_0x98014b){_0x4bbecf=_0x4bbecf-0x0;var _0x51dde4=_0xf5ce[_0x4bbecf];return _0x51dde4;};'use strict';var multer=require(_0xef5c('0x0'));var util=require(_0xef5c('0x1'));var path=require(_0xef5c('0x2'));var timeout=require(_0xef5c('0x3'));var express=require(_0xef5c('0x4'));var router=express[_0xef5c('0x5')]();var fs_extra=require(_0xef5c('0x6'));var auth=require(_0xef5c('0x7'));var interaction=require('../../components/interaction/service');var config=require(_0xef5c('0x8'));var controller=require(_0xef5c('0x9'));router['get']('/',auth['isAuthenticated'](),controller[_0xef5c('0xa')]);router[_0xef5c('0xb')](_0xef5c('0xc'),auth['isAuthenticated'](),controller[_0xef5c('0xd')]);router[_0xef5c('0xb')]('/:id/sessions',auth[_0xef5c('0xe')](),controller[_0xef5c('0xf')]);router[_0xef5c('0xb')](_0xef5c('0x10'),auth['isAuthenticated'](),controller['getAnswers']);router[_0xef5c('0xb')](_0xef5c('0x11'),auth[_0xef5c('0xe')](),timeout(_0xef5c('0x12')),controller['getSummary']);router['post']('/',auth[_0xef5c('0xe')](),controller[_0xef5c('0x13')]);router[_0xef5c('0x14')](_0xef5c('0x15'),auth[_0xef5c('0xe')](),controller['clone']);router[_0xef5c('0x16')]('/:id',auth[_0xef5c('0xe')](),controller[_0xef5c('0x17')]);router['delete'](_0xef5c('0xc'),auth[_0xef5c('0xe')](),controller[_0xef5c('0x18')]);module[_0xef5c('0x19')]=router;
\ No newline at end of file
index fb35a0b..5b4d775 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0x00df=['formData','isString','format','{\x22name\x22:\x22%s\x22,\x22description\x22:\x22%s\x22,\x22pages\x22:[]}','getDataValue','name','description','BOOLEAN','lodash','STRING','long','isObjectLike','setDataValue'];(function(_0x2283dc,_0x2fcfc5){var _0x16db90=function(_0x376c35){while(--_0x376c35){_0x2283dc['push'](_0x2283dc['shift']());}};_0x16db90(++_0x2fcfc5);}(_0x00df,0xff));var _0xf00d=function(_0x64c1b5,_0x4a3396){_0x64c1b5=_0x64c1b5-0x0;var _0x16cc89=_0x00df[_0x64c1b5];return _0x16cc89;};'use strict';var Sequelize=require('sequelize');var _=require(_0xf00d('0x0'));var util=require('util');module['exports']={'name':{'type':Sequelize[_0xf00d('0x1')],'unique':'name'},'description':{'type':Sequelize[_0xf00d('0x1')]},'formData':{'type':Sequelize['TEXT'](_0xf00d('0x2')),'set':function(_0x37d9e7){if(_[_0xf00d('0x3')](_0x37d9e7)){this[_0xf00d('0x4')](_0xf00d('0x5'),JSON['stringify'](_0x37d9e7));}else if(_[_0xf00d('0x6')](_0x37d9e7)){this[_0xf00d('0x4')]('formData',_0x37d9e7);}else{this[_0xf00d('0x4')]('formData',util[_0xf00d('0x7')](_0xf00d('0x8'),this[_0xf00d('0x9')](_0xf00d('0xa'))||'',this[_0xf00d('0x9')](_0xf00d('0xb'))||''));}}},'enableUncompleteSave':{'type':Sequelize[_0xf00d('0xc')],'defaultValue':!![]},'sendUnpauseOnSubmit':{'type':Sequelize[_0xf00d('0xc')],'defaultValue':![]}};
\ No newline at end of file
index 98493ad..4f80896 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0xe7c2=['fieldName','key','model','query','attributes','intersection','fields','length','hasOwnProperty','nolimit','order','sort','where','filters','pick','filter','merge','type','VIRTUAL','options','JscriptyProject','includeAll','include','findAll','params','keys','find','catch','create','body','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','get','UserProfileSection','autoAssociation','error','clone','omit','createdAt','updatedAt','userProfileId','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','update','getSessions','JscriptySessionReport','rows','getAnswers','findOne','ProjectId','JscriptyAnswerReport','number','fromCharCode','toString','indexOf','replace','getSummary','starttime','parse','startTime','JscriptyQuestionReport','-createdAt','questionId','question','YYYY-MM-DD\x20HH:mm:ss','SessionId','answer','push','now','writeFileSync','format','/tmp/Jscripty_Project_%d_Summary_%s.csv','setHeader','Content-disposition','attachment;\x20filename=','Jscripty_Project_%d_Summary_%s.csv','text/csv','download','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','to-csv','fs-extra','lodash','squel','jsforce','desk.js','querystring','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','../../config/logger','../../config/utils','../../config/environment','../../mysqldb','sendStatus','status','end','json','offset','undefined','limit','count','set','Content-Range','apply','reject','destroy','then','Projects','UserProfileResource','name','index','map','rawAttributes'];(function(_0x1dff6e,_0x1e4e18){var _0x2a3a15=function(_0x36850d){while(--_0x36850d){_0x1dff6e['push'](_0x1dff6e['shift']());}};_0x2a3a15(++_0x1e4e18);}(_0xe7c2,0xc8));var _0x2e7c=function(_0x3d3423,_0x30ae35){_0x3d3423=_0x3d3423-0x0;var _0x226758=_0xe7c2[_0x3d3423];return _0x226758;};'use strict';var emlformat=require(_0x2e7c('0x0'));var rimraf=require(_0x2e7c('0x1'));var zipdir=require(_0x2e7c('0x2'));var jsonpatch=require(_0x2e7c('0x3'));var rp=require(_0x2e7c('0x4'));var moment=require(_0x2e7c('0x5'));var BPromise=require(_0x2e7c('0x6'));var Mustache=require(_0x2e7c('0x7'));var util=require(_0x2e7c('0x8'));var path=require('path');var sox=require('sox');var csv=require(_0x2e7c('0x9'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x2e7c('0xa'));var _=require(_0x2e7c('0xb'));var squel=require(_0x2e7c('0xc'));var crypto=require('crypto');var jsforce=require(_0x2e7c('0xd'));var deskjs=require(_0x2e7c('0xe'));var toCsv=require('to-csv');var querystring=require(_0x2e7c('0xf'));var Papa=require('papaparse');var Redis=require(_0x2e7c('0x10'));var authService=require(_0x2e7c('0x11'));var qs=require(_0x2e7c('0x12'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x2e7c('0x13'));var logger=require(_0x2e7c('0x14'))('api');var utils=require(_0x2e7c('0x15'));var config=require(_0x2e7c('0x16'));var licenseUtil=require('../../config/license/util');var db=require(_0x2e7c('0x17'))['db'];function respondWithStatusCode(_0x41c239,_0x9d48ff){_0x9d48ff=_0x9d48ff||0xcc;return function(_0xaa918e){if(_0xaa918e){return _0x41c239[_0x2e7c('0x18')](_0x9d48ff);}return _0x41c239[_0x2e7c('0x19')](_0x9d48ff)[_0x2e7c('0x1a')]();};}function respondWithResult(_0x292afa,_0x2e6af0){_0x2e6af0=_0x2e6af0||0xc8;return function(_0x21f8bc){if(_0x21f8bc){return _0x292afa['status'](_0x2e6af0)[_0x2e7c('0x1b')](_0x21f8bc);}};}function respondWithFilteredResult(_0xd2e269,_0x558690){return function(_0x179580){if(_0x179580){var _0x2f4f2e=typeof _0x558690[_0x2e7c('0x1c')]===_0x2e7c('0x1d')&&typeof _0x558690[_0x2e7c('0x1e')]===_0x2e7c('0x1d');var _0x5e7d70=_0x179580['count'];var _0x2d56a2=_0x2f4f2e?0x0:_0x558690[_0x2e7c('0x1c')];var _0x22cac0=_0x2f4f2e?_0x179580[_0x2e7c('0x1f')]:_0x558690[_0x2e7c('0x1c')]+_0x558690[_0x2e7c('0x1e')];var _0x57cb45;if(_0x22cac0>=_0x5e7d70){_0x22cac0=_0x5e7d70;_0x57cb45=0xc8;}else{_0x57cb45=0xce;}_0xd2e269[_0x2e7c('0x19')](_0x57cb45);return _0xd2e269[_0x2e7c('0x20')](_0x2e7c('0x21'),_0x2d56a2+'-'+_0x22cac0+'/'+_0x5e7d70)[_0x2e7c('0x1b')](_0x179580);}return null;};}function patchUpdates(_0xfc24de){return function(_0x26ef8c){try{jsonpatch[_0x2e7c('0x22')](_0x26ef8c,_0xfc24de,!![]);}catch(_0x583ebd){return BPromise[_0x2e7c('0x23')](_0x583ebd);}return _0x26ef8c['save']();};}function saveUpdates(_0x536d71,_0xaf7af2){return function(_0xbd7d94){if(_0xbd7d94){return _0xbd7d94['update'](_0x536d71)['then'](function(_0x5c9f9a){return _0x5c9f9a;});}return null;};}function removeEntity(_0x3added,_0x32e9c8){return function(_0x28950c){if(_0x28950c){return _0x28950c[_0x2e7c('0x24')]()[_0x2e7c('0x25')](function(){var _0x113ae6=_0x28950c['get']({'plain':!![]});var _0x1bd59e=_0x2e7c('0x26');return db[_0x2e7c('0x27')][_0x2e7c('0x24')]({'where':{'type':_0x1bd59e,'resourceId':_0x113ae6['id']}})[_0x2e7c('0x25')](function(){return _0x28950c;});})[_0x2e7c('0x25')](function(){_0x3added[_0x2e7c('0x19')](0xcc)[_0x2e7c('0x1a')]();});}};}function handleEntityNotFound(_0x7d0761,_0x3e7efc){return function(_0x54889f){if(!_0x54889f){_0x7d0761[_0x2e7c('0x18')](0x194);}return _0x54889f;};}function handleError(_0x4b3a3d,_0x4184c7){_0x4184c7=_0x4184c7||0x1f4;return function(_0x98977c){logger['error'](_0x98977c['stack']);if(_0x98977c['name']){delete _0x98977c[_0x2e7c('0x28')];}_0x4b3a3d[_0x2e7c('0x19')](_0x4184c7)['send'](_0x98977c);};}exports[_0x2e7c('0x29')]=function(_0xc25a89,_0x1362c0){var _0x2908f7={},_0x3526f7={},_0x1665fc={'count':0x0,'rows':[]};var _0x59a185=_[_0x2e7c('0x2a')](db['JscriptyProject'][_0x2e7c('0x2b')],function(_0x2b5dc7){return{'name':_0x2b5dc7[_0x2e7c('0x2c')],'type':_0x2b5dc7['type'][_0x2e7c('0x2d')]};});_0x3526f7[_0x2e7c('0x2e')]=_[_0x2e7c('0x2a')](_0x59a185,_0x2e7c('0x28'));_0x3526f7[_0x2e7c('0x2f')]=_['keys'](_0xc25a89[_0x2e7c('0x2f')]);_0x3526f7['filters']=_['intersection'](_0x3526f7[_0x2e7c('0x2e')],_0x3526f7['query']);_0x2908f7[_0x2e7c('0x30')]=_[_0x2e7c('0x31')](_0x3526f7[_0x2e7c('0x2e')],qs[_0x2e7c('0x32')](_0xc25a89[_0x2e7c('0x2f')][_0x2e7c('0x32')]));_0x2908f7['attributes']=_0x2908f7[_0x2e7c('0x30')][_0x2e7c('0x33')]?_0x2908f7[_0x2e7c('0x30')]:_0x3526f7[_0x2e7c('0x2e')];if(!_0xc25a89['query'][_0x2e7c('0x34')](_0x2e7c('0x35'))){_0x2908f7['limit']=qs[_0x2e7c('0x1e')](_0xc25a89[_0x2e7c('0x2f')][_0x2e7c('0x1e')]);_0x2908f7[_0x2e7c('0x1c')]=qs[_0x2e7c('0x1c')](_0xc25a89[_0x2e7c('0x2f')][_0x2e7c('0x1c')]);}_0x2908f7[_0x2e7c('0x36')]=qs[_0x2e7c('0x37')](_0xc25a89[_0x2e7c('0x2f')][_0x2e7c('0x37')]);_0x2908f7[_0x2e7c('0x38')]=qs[_0x2e7c('0x39')](_[_0x2e7c('0x3a')](_0xc25a89['query'],_0x3526f7[_0x2e7c('0x39')]),_0x59a185);if(_0xc25a89['query'][_0x2e7c('0x3b')]){_0x2908f7[_0x2e7c('0x38')]=_[_0x2e7c('0x3c')](_0x2908f7[_0x2e7c('0x38')],{'$or':_[_0x2e7c('0x2a')](_0x59a185,function(_0x15019d){if(_0x15019d[_0x2e7c('0x3d')]!==_0x2e7c('0x3e')){var _0x3b0b90={};_0x3b0b90[_0x15019d[_0x2e7c('0x28')]]={'$like':'%'+_0xc25a89[_0x2e7c('0x2f')][_0x2e7c('0x3b')]+'%'};return _0x3b0b90;}})});}_0x2908f7=_[_0x2e7c('0x3c')]({},_0x2908f7,_0xc25a89[_0x2e7c('0x3f')]);var _0x5a594a={'where':_0x2908f7['where']};return db[_0x2e7c('0x40')][_0x2e7c('0x1f')](_0x5a594a)['then'](function(_0x2b3e40){_0x1665fc[_0x2e7c('0x1f')]=_0x2b3e40;if(_0xc25a89[_0x2e7c('0x2f')][_0x2e7c('0x41')]){_0x2908f7[_0x2e7c('0x42')]=[{'all':!![]}];}return db[_0x2e7c('0x40')][_0x2e7c('0x43')](_0x2908f7);})[_0x2e7c('0x25')](function(_0x2524c1){_0x1665fc['rows']=_0x2524c1;return _0x1665fc;})[_0x2e7c('0x25')](respondWithFilteredResult(_0x1362c0,_0x2908f7))['catch'](handleError(_0x1362c0,null));};exports['show']=function(_0x4c7a5e,_0x4f03a1){var _0x3c79f4={'raw':![],'where':{'id':_0x4c7a5e[_0x2e7c('0x44')]['id']}},_0x316cee={};_0x316cee[_0x2e7c('0x2e')]=_[_0x2e7c('0x45')](db[_0x2e7c('0x40')][_0x2e7c('0x2b')]);_0x316cee[_0x2e7c('0x2f')]=_[_0x2e7c('0x45')](_0x4c7a5e[_0x2e7c('0x2f')]);_0x316cee[_0x2e7c('0x39')]=_['intersection'](_0x316cee[_0x2e7c('0x2e')],_0x316cee['query']);_0x3c79f4[_0x2e7c('0x30')]=_[_0x2e7c('0x31')](_0x316cee['model'],qs['fields'](_0x4c7a5e['query'][_0x2e7c('0x32')]));_0x3c79f4[_0x2e7c('0x30')]=_0x3c79f4['attributes'][_0x2e7c('0x33')]?_0x3c79f4[_0x2e7c('0x30')]:_0x316cee[_0x2e7c('0x2e')];if(_0x4c7a5e[_0x2e7c('0x2f')]['includeAll']){_0x3c79f4[_0x2e7c('0x42')]=[{'all':!![]}];}_0x3c79f4=_[_0x2e7c('0x3c')]({},_0x3c79f4,_0x4c7a5e['options']);return db['JscriptyProject'][_0x2e7c('0x46')](_0x3c79f4)[_0x2e7c('0x25')](handleEntityNotFound(_0x4f03a1,null))['then'](respondWithResult(_0x4f03a1,null))[_0x2e7c('0x47')](handleError(_0x4f03a1,null));};exports[_0x2e7c('0x48')]=function(_0x38e791,_0xfdaec9){return db[_0x2e7c('0x40')][_0x2e7c('0x48')](_0x38e791[_0x2e7c('0x49')],{})[_0x2e7c('0x25')](function(_0x1f4e71){var _0x1ebf20=_0x38e791[_0x2e7c('0x4a')]['get']({'plain':!![]});if(!_0x1ebf20)throw new Error(_0x2e7c('0x4b'));if(_0x1ebf20[_0x2e7c('0x4c')]===_0x2e7c('0x4a')){var _0x330875=_0x1f4e71[_0x2e7c('0x4d')]({'plain':!![]});var _0x1712c0=_0x2e7c('0x26');return db[_0x2e7c('0x4e')][_0x2e7c('0x46')]({'where':{'name':_0x1712c0,'userProfileId':_0x1ebf20['userProfileId']},'raw':!![]})[_0x2e7c('0x25')](function(_0x3846ab){if(_0x3846ab&&_0x3846ab[_0x2e7c('0x4f')]===0x0){return db[_0x2e7c('0x27')][_0x2e7c('0x48')]({'name':_0x330875['name'],'resourceId':_0x330875['id'],'type':_0x3846ab['name'],'sectionId':_0x3846ab['id']},{})['then'](function(){return _0x1f4e71;});}else{return _0x1f4e71;}})['catch'](function(_0x4eefa5){logger[_0x2e7c('0x50')]('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x4eefa5);throw _0x4eefa5;});}return _0x1f4e71;})['then'](respondWithResult(_0xfdaec9,0xc9))[_0x2e7c('0x47')](handleError(_0xfdaec9,null));};exports[_0x2e7c('0x51')]=function(_0x53e2e7,_0x3cbf29){var _0x28b386={'where':{'id':_0x53e2e7[_0x2e7c('0x44')]['id']}},_0x444325={};_0x444325[_0x2e7c('0x2e')]=_[_0x2e7c('0x45')](db[_0x2e7c('0x40')]['rawAttributes']);_0x28b386[_0x2e7c('0x30')]=_['intersection'](_0x444325[_0x2e7c('0x2e')],qs[_0x2e7c('0x32')](_0x53e2e7[_0x2e7c('0x2f')][_0x2e7c('0x32')]));_0x28b386['attributes']=_0x28b386[_0x2e7c('0x30')][_0x2e7c('0x33')]?_0x28b386[_0x2e7c('0x30')]:_0x444325[_0x2e7c('0x2e')];if(_0x53e2e7[_0x2e7c('0x2f')][_0x2e7c('0x41')]){_0x28b386[_0x2e7c('0x42')]=[{'all':!![]}];}_0x28b386=_[_0x2e7c('0x3c')]({},_0x28b386,_0x53e2e7[_0x2e7c('0x3f')]);return db[_0x2e7c('0x40')][_0x2e7c('0x46')](_0x28b386)[_0x2e7c('0x25')](handleEntityNotFound(_0x3cbf29,null))[_0x2e7c('0x25')](function(_0x5af431){if(_0x5af431){var _0x1844ee=_0x5af431[_0x2e7c('0x4d')]({'plain':!![]});_0x1844ee=qs[_0x2e7c('0x52')](_0x1844ee,['id',_0x2e7c('0x53'),_0x2e7c('0x54')]);_0x53e2e7[_0x2e7c('0x49')]=_[_0x2e7c('0x52')](_0x53e2e7['body'],['id',_0x2e7c('0x53'),_0x2e7c('0x54')]);return db[_0x2e7c('0x40')]['create'](_[_0x2e7c('0x3c')](_0x1844ee,_0x53e2e7[_0x2e7c('0x49')]),{'include':_0x53e2e7[_0x2e7c('0x2f')][_0x2e7c('0x41')]?[{'all':!![]}]:undefined})[_0x2e7c('0x25')](function(_0x1be0ac){var _0x4caa0a=_0x53e2e7['user'][_0x2e7c('0x4d')]({'plain':!![]});if(!_0x4caa0a)throw new Error(_0x2e7c('0x4b'));if(_0x4caa0a[_0x2e7c('0x4c')]===_0x2e7c('0x4a')){var _0x36bfe8=_0x1be0ac[_0x2e7c('0x4d')]({'plain':!![]});var _0x124030=_0x2e7c('0x26');return db['UserProfileSection'][_0x2e7c('0x46')]({'where':{'name':_0x124030,'userProfileId':_0x4caa0a[_0x2e7c('0x55')]},'raw':!![]})['then'](function(_0x31c598){if(_0x31c598&&_0x31c598['autoAssociation']===0x0){return db[_0x2e7c('0x27')][_0x2e7c('0x48')]({'name':_0x36bfe8[_0x2e7c('0x28')],'resourceId':_0x36bfe8['id'],'type':_0x31c598['name'],'sectionId':_0x31c598['id']},{})[_0x2e7c('0x25')](function(){return _0x1be0ac;});}else{return _0x1be0ac;}})[_0x2e7c('0x47')](function(_0x374cbe){logger['error'](_0x2e7c('0x56'),_0x374cbe);throw _0x374cbe;});}return _0x1be0ac;});}})[_0x2e7c('0x25')](respondWithResult(_0x3cbf29,0xc9))[_0x2e7c('0x47')](handleError(_0x3cbf29,null));};exports[_0x2e7c('0x57')]=function(_0x2f876b,_0x4ecdfe){if(_0x2f876b[_0x2e7c('0x49')]['id']){delete _0x2f876b[_0x2e7c('0x49')]['id'];}return db['JscriptyProject'][_0x2e7c('0x46')]({'where':{'id':_0x2f876b[_0x2e7c('0x44')]['id']}})['then'](handleEntityNotFound(_0x4ecdfe,null))['then'](saveUpdates(_0x2f876b[_0x2e7c('0x49')],null))['then'](respondWithResult(_0x4ecdfe,null))[_0x2e7c('0x47')](handleError(_0x4ecdfe,null));};exports[_0x2e7c('0x24')]=function(_0x5f0b4d,_0xb95d81){return db[_0x2e7c('0x40')][_0x2e7c('0x46')]({'where':{'id':_0x5f0b4d[_0x2e7c('0x44')]['id']}})[_0x2e7c('0x25')](handleEntityNotFound(_0xb95d81,null))[_0x2e7c('0x25')](removeEntity(_0xb95d81,null))[_0x2e7c('0x47')](handleError(_0xb95d81,null));};exports[_0x2e7c('0x58')]=function(_0x2443f2,_0x15c26d,_0x243984){var _0x3add26={'raw':!![],'where':{}};var _0x9e8eb3={};var _0x581728={'count':0x0,'rows':[]};return db['JscriptyProject']['findOne']({'where':{'id':_0x2443f2[_0x2e7c('0x44')]['id']}})[_0x2e7c('0x25')](handleEntityNotFound(_0x15c26d,null))['then'](function(_0x377b47){if(_0x377b47){_0x9e8eb3[_0x2e7c('0x2e')]=_[_0x2e7c('0x45')](db[_0x2e7c('0x59')][_0x2e7c('0x2b')]);_0x9e8eb3[_0x2e7c('0x2f')]=_[_0x2e7c('0x45')](_0x2443f2[_0x2e7c('0x2f')]);_0x9e8eb3[_0x2e7c('0x39')]=_[_0x2e7c('0x31')](_0x9e8eb3[_0x2e7c('0x2e')],_0x9e8eb3['query']);_0x3add26[_0x2e7c('0x30')]=_[_0x2e7c('0x31')](_0x9e8eb3['model'],qs[_0x2e7c('0x32')](_0x2443f2[_0x2e7c('0x2f')][_0x2e7c('0x32')]));_0x3add26['attributes']=_0x3add26['attributes']['length']?_0x3add26[_0x2e7c('0x30')]:_0x9e8eb3[_0x2e7c('0x2e')];if(!_0x2443f2[_0x2e7c('0x2f')][_0x2e7c('0x34')](_0x2e7c('0x35'))){_0x3add26[_0x2e7c('0x1e')]=qs['limit'](_0x2443f2[_0x2e7c('0x2f')]['limit']);_0x3add26['offset']=qs['offset'](_0x2443f2[_0x2e7c('0x2f')][_0x2e7c('0x1c')]);}_0x3add26[_0x2e7c('0x36')]=qs[_0x2e7c('0x37')](_0x2443f2[_0x2e7c('0x2f')][_0x2e7c('0x37')]);_0x3add26[_0x2e7c('0x38')]=qs[_0x2e7c('0x39')](_['pick'](_0x2443f2[_0x2e7c('0x2f')],_0x9e8eb3['filters']));_0x3add26['where']['ProjectId']=_0x377b47['id'];if(_0x2443f2[_0x2e7c('0x2f')][_0x2e7c('0x3b')]){_0x3add26[_0x2e7c('0x38')]=_['merge'](_0x3add26['where'],{'$or':_[_0x2e7c('0x2a')](_0x3add26[_0x2e7c('0x30')],function(_0x107401){var _0x16210e={};_0x16210e[_0x107401]={'$like':'%'+_0x2443f2[_0x2e7c('0x2f')][_0x2e7c('0x3b')]+'%'};return _0x16210e;})});}_0x3add26=_[_0x2e7c('0x3c')]({},_0x3add26,_0x2443f2['options']);return db[_0x2e7c('0x59')][_0x2e7c('0x1f')]({'where':_0x3add26[_0x2e7c('0x38')]})[_0x2e7c('0x25')](function(_0x351999){_0x581728[_0x2e7c('0x1f')]=_0x351999;if(_0x2443f2[_0x2e7c('0x2f')][_0x2e7c('0x41')]){_0x3add26[_0x2e7c('0x42')]=[{'all':!![]}];}return db['JscriptySessionReport']['findAll'](_0x3add26);})[_0x2e7c('0x25')](function(_0x26ea1f){_0x581728[_0x2e7c('0x5a')]=_0x26ea1f;return _0x581728;});}})[_0x2e7c('0x25')](respondWithFilteredResult(_0x15c26d,_0x3add26))[_0x2e7c('0x47')](handleError(_0x15c26d,null));};exports[_0x2e7c('0x5b')]=function(_0x2fa2be,_0x5e319e,_0x687aa7){var _0x87f50c={'raw':!![],'where':{}};var _0x2954b2={};var _0x2bf545={'count':0x0,'rows':[]};return db['JscriptyProject'][_0x2e7c('0x5c')]({'where':{'id':_0x2fa2be[_0x2e7c('0x44')]['id']}})[_0x2e7c('0x25')](handleEntityNotFound(_0x5e319e,null))[_0x2e7c('0x25')](function(_0x398e92){if(_0x398e92){_0x2954b2['model']=_[_0x2e7c('0x45')](db['JscriptyAnswerReport'][_0x2e7c('0x2b')]);_0x2954b2['query']=_[_0x2e7c('0x45')](_0x2fa2be['query']);_0x2954b2[_0x2e7c('0x39')]=_[_0x2e7c('0x31')](_0x2954b2[_0x2e7c('0x2e')],_0x2954b2[_0x2e7c('0x2f')]);_0x87f50c[_0x2e7c('0x30')]=_[_0x2e7c('0x31')](_0x2954b2[_0x2e7c('0x2e')],qs[_0x2e7c('0x32')](_0x2fa2be[_0x2e7c('0x2f')]['fields']));_0x87f50c['attributes']=_0x87f50c[_0x2e7c('0x30')][_0x2e7c('0x33')]?_0x87f50c['attributes']:_0x2954b2[_0x2e7c('0x2e')];if(!_0x2fa2be[_0x2e7c('0x2f')][_0x2e7c('0x34')](_0x2e7c('0x35'))){_0x87f50c[_0x2e7c('0x1e')]=qs[_0x2e7c('0x1e')](_0x2fa2be['query']['limit']);_0x87f50c[_0x2e7c('0x1c')]=qs['offset'](_0x2fa2be['query'][_0x2e7c('0x1c')]);}_0x87f50c[_0x2e7c('0x36')]=qs['sort'](_0x2fa2be['query'][_0x2e7c('0x37')]);_0x87f50c[_0x2e7c('0x38')]=qs[_0x2e7c('0x39')](_[_0x2e7c('0x3a')](_0x2fa2be['query'],_0x2954b2[_0x2e7c('0x39')]));_0x87f50c[_0x2e7c('0x38')][_0x2e7c('0x5d')]=_0x398e92['id'];if(_0x2fa2be[_0x2e7c('0x2f')][_0x2e7c('0x3b')]){_0x87f50c[_0x2e7c('0x38')]=_[_0x2e7c('0x3c')](_0x87f50c[_0x2e7c('0x38')],{'$or':_[_0x2e7c('0x2a')](_0x87f50c[_0x2e7c('0x30')],function(_0x2a22a8){var _0x327b8a={};_0x327b8a[_0x2a22a8]={'$like':'%'+_0x2fa2be['query'][_0x2e7c('0x3b')]+'%'};return _0x327b8a;})});}_0x87f50c=_[_0x2e7c('0x3c')]({},_0x87f50c,_0x2fa2be['options']);return db['JscriptyAnswerReport'][_0x2e7c('0x1f')]({'where':_0x87f50c[_0x2e7c('0x38')]})[_0x2e7c('0x25')](function(_0x51e2c8){_0x2bf545['count']=_0x51e2c8;if(_0x2fa2be[_0x2e7c('0x2f')][_0x2e7c('0x41')]){_0x87f50c['include']=[{'all':!![]}];}return db[_0x2e7c('0x5e')][_0x2e7c('0x43')](_0x87f50c);})['then'](function(_0x78e6be){_0x2bf545[_0x2e7c('0x5a')]=_0x78e6be;return _0x2bf545;});}})[_0x2e7c('0x25')](respondWithFilteredResult(_0x5e319e,_0x87f50c))[_0x2e7c('0x47')](handleError(_0x5e319e,null));};function char(_0x3d151f){return _0x2e7c('0x5f')===typeof _0x3d151f?String[_0x2e7c('0x60')][_0x2e7c('0x22')](null,arguments):_0x3d151f;}function needsEncapsulation(_0x3e90bd){return!!_0x3e90bd&&(_0x3e90bd[_0x2e7c('0x61')]()[_0x2e7c('0x62')](char(0xd))>=0x0||_0x3e90bd[_0x2e7c('0x61')]()[_0x2e7c('0x62')](char(0xa))>=0x0||_0x3e90bd[_0x2e7c('0x61')]()[_0x2e7c('0x62')](char(0x2c))>=0x0||_0x3e90bd[_0x2e7c('0x61')]()[_0x2e7c('0x62')](char(0x22))>=0x0);}function encapsulate(_0x24054b){var _0x5e738d=char(0x22),_0x2c03be='\x5c'+char(0x22),_0x2de24b=_0x24054b['toString']()[_0x2e7c('0x63')](new RegExp(_0x5e738d,'g'),_0x2c03be);return _0x5e738d+_0x2de24b+_0x5e738d;}exports[_0x2e7c('0x64')]=function(_0x526245,_0x37b671,_0x17e0cd){var _0xd84f53,_0x484f08;var _0x5749b9={'where':{'ProjectId':_0x526245[_0x2e7c('0x44')]['id']}};if(_0x526245[_0x2e7c('0x2f')]['startTime']){_0x5749b9[_0x2e7c('0x38')][_0x2e7c('0x65')]=JSON[_0x2e7c('0x66')](_0x526245[_0x2e7c('0x2f')][_0x2e7c('0x67')]);}return db['JscriptySessionReport'][_0x2e7c('0x43')](_0x5749b9)[_0x2e7c('0x25')](handleEntityNotFound(_0x37b671,null))[_0x2e7c('0x25')](function(_0x318457){if(_0x318457){_0xd84f53=_0x318457;return db[_0x2e7c('0x68')][_0x2e7c('0x43')]({'where':{'SessionId':{'$in':_[_0x2e7c('0x2a')](_0xd84f53,'id')},'ProjectId':_0x526245[_0x2e7c('0x44')]['id']},'order':_0x2e7c('0x69')});}})['then'](handleEntityNotFound(_0x37b671,null))[_0x2e7c('0x25')](function(_0x2e041d){if(_0x2e041d){_0x484f08=_0x2e041d;var _0x4bd81b={};for(var _0xe0b83c=0x0,_0x5733ef=_0x484f08['length'];_0xe0b83c<_0x5733ef;_0xe0b83c++){if(!_0x4bd81b[_0x2e7c('0x34')](_0x484f08[_0xe0b83c][_0x2e7c('0x6a')])){_0x4bd81b[_0x484f08[_0xe0b83c][_0x2e7c('0x6a')]]=needsEncapsulation(_0x484f08[_0xe0b83c][_0x2e7c('0x6b')])?encapsulate(_0x484f08[_0xe0b83c][_0x2e7c('0x6b')]):_0x484f08[_0xe0b83c][_0x2e7c('0x6b')];}}var _0x37ede3=[],_0x1d04a8={};for(var _0x3c5531=0x0,_0x2a28af=_0xd84f53[_0x2e7c('0x33')];_0x3c5531<_0x2a28af;_0x3c5531++){_0x1d04a8={'ProjectId':_0x526245[_0x2e7c('0x44')]['id'],'SessionId':_0xd84f53[_0x3c5531]['id'],'StartTime':moment(_0xd84f53[_0x3c5531][_0x2e7c('0x65')])['format'](_0x2e7c('0x6c'))};for(var _0x2d0331=0x0,_0x4d4511=_0x484f08[_0x2e7c('0x33')];_0x2d0331<_0x4d4511;_0x2d0331++){if(_0x484f08[_0x2d0331][_0x2e7c('0x6d')]==_0xd84f53[_0x3c5531]['id']&&_0x4bd81b['hasOwnProperty'](_0x484f08[_0x2d0331][_0x2e7c('0x6a')])){_0x1d04a8[_0x4bd81b[_0x484f08[_0x2d0331][_0x2e7c('0x6a')]]]=_0x484f08[_0x2d0331][_0x2e7c('0x6e')];}}for(var _0x4dacb0 in _0x4bd81b){if(!_0x1d04a8[_0x2e7c('0x34')](_0x4bd81b[_0x4dacb0])){_0x1d04a8[_0x4bd81b[_0x4dacb0]]=null;}}_0x37ede3[_0x2e7c('0x6f')](_0x1d04a8);}return _0x37ede3;}})['then'](function(_0x14c412){if(!_['isEmpty'](_0x14c412)){var _0x292023=toCsv(_0x14c412);var _0x166684=Date[_0x2e7c('0x70')]();fs[_0x2e7c('0x71')](util[_0x2e7c('0x72')](_0x2e7c('0x73'),_0x526245[_0x2e7c('0x44')]['id'],_0x166684),_0x292023);_0x37b671[_0x2e7c('0x74')](_0x2e7c('0x75'),_0x2e7c('0x76')+util[_0x2e7c('0x72')](_0x2e7c('0x77'),_0x526245[_0x2e7c('0x44')]['id'],_0x166684));_0x37b671[_0x2e7c('0x74')]('Content-type',_0x2e7c('0x78'));return _0x37b671[_0x2e7c('0x79')](util['format'](_0x2e7c('0x73'),_0x526245[_0x2e7c('0x44')]['id'],_0x166684));}else{return _0x37b671['sendStatus'](0xcc);}})[_0x2e7c('0x47')](handleError(_0x37b671,null));};
\ No newline at end of file
index dfe013c..da925c2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0xe953=['JscriptyProject','jscripty_projects','bluebird','request-promise','rimraf','./jscriptyProject.attributes','define'];(function(_0x22eb96,_0x3c2d8d){var _0x5e1adf=function(_0x22e392){while(--_0x22e392){_0x22eb96['push'](_0x22eb96['shift']());}};_0x5e1adf(++_0x3c2d8d);}(_0xe953,0x1d0));var _0x3e95=function(_0x5ddaac,_0x2697a8){_0x5ddaac=_0x5ddaac-0x0;var _0x2a9c58=_0xe953[_0x5ddaac];return _0x2a9c58;};'use strict';var _=require('lodash');var util=require('util');var logger=require('../../config/logger')('api');var moment=require('moment');var BPromise=require(_0x3e95('0x0'));var rp=require(_0x3e95('0x1'));var fs=require('fs');var path=require('path');var rimraf=require(_0x3e95('0x2'));var config=require('../../config/environment');var attributes=require(_0x3e95('0x3'));module['exports']=function(_0x30637c,_0x3faa2b){return _0x30637c[_0x3e95('0x4')](_0x3e95('0x5'),attributes,{'tableName':_0x3e95('0x6'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 01e9742..1f09ae0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0xcb91=['stringify','error','code','message','catch','moment','bluebird','randomstring','ioredis','../../config/utils','../../config/logger','../../config/environment','jayson/promise','http','request','info','JscriptyProject,\x20%s,\x20%s','request\x20sent','debug','JscriptyProject,\x20%s,\x20%s,\x20%s'];(function(_0x5b4ba1,_0x2679f5){var _0x5a011d=function(_0x1baf12){while(--_0x1baf12){_0x5b4ba1['push'](_0x5b4ba1['shift']());}};_0x5a011d(++_0x2679f5);}(_0xcb91,0x1a9));var _0x1cb9=function(_0x125ff8,_0x41925f){_0x125ff8=_0x125ff8-0x0;var _0x2d9ef=_0xcb91[_0x125ff8];return _0x2d9ef;};'use strict';var _=require('lodash');var util=require('util');var moment=require(_0x1cb9('0x0'));var BPromise=require(_0x1cb9('0x1'));var rs=require(_0x1cb9('0x2'));var fs=require('fs');var Redis=require(_0x1cb9('0x3'));var db=require('../../mysqldb')['db'];var utils=require(_0x1cb9('0x4'));var logger=require(_0x1cb9('0x5'))('rpc');var config=require(_0x1cb9('0x6'));var jayson=require(_0x1cb9('0x7'));var client=jayson['client'][_0x1cb9('0x8')]({'port':0x232a});function respondWithRpcPromise(_0x3f7deb,_0x4ffe20,_0x38737d){return new BPromise(function(_0x12567c,_0x59d1be){return client[_0x1cb9('0x9')](_0x3f7deb,_0x38737d)['then'](function(_0x567139){logger[_0x1cb9('0xa')](_0x1cb9('0xb'),_0x4ffe20,_0x1cb9('0xc'));logger[_0x1cb9('0xd')](_0x1cb9('0xe'),_0x4ffe20,'request\x20sent',JSON[_0x1cb9('0xf')](_0x567139));if(_0x567139[_0x1cb9('0x10')]){if(_0x567139[_0x1cb9('0x10')][_0x1cb9('0x11')]===0x1f4){logger[_0x1cb9('0x10')]('JscriptyProject,\x20%s,\x20%s',_0x4ffe20,_0x567139['error']['message']);return _0x59d1be(_0x567139[_0x1cb9('0x10')][_0x1cb9('0x12')]);}logger[_0x1cb9('0x10')](_0x1cb9('0xb'),_0x4ffe20,_0x567139['error'][_0x1cb9('0x12')]);return _0x12567c(_0x567139[_0x1cb9('0x10')][_0x1cb9('0x12')]);}else{logger[_0x1cb9('0xa')](_0x1cb9('0xb'),_0x4ffe20,'request\x20sent');_0x12567c(_0x567139['result'][_0x1cb9('0x12')]);}})[_0x1cb9('0x13')](function(_0x3904b7){logger[_0x1cb9('0x10')](_0x1cb9('0xb'),_0x4ffe20,_0x3904b7);_0x59d1be(_0x3904b7);});});}
\ No newline at end of file
index 797283a..b0f288e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0xd02d=['path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','index','/describe','describe','/:id','isAuthenticated','post','put','update','exports','util'];(function(_0xbe8d3b,_0x4f6a45){var _0x111ed6=function(_0x19cf6b){while(--_0x19cf6b){_0xbe8d3b['push'](_0xbe8d3b['shift']());}};_0x111ed6(++_0x4f6a45);}(_0xd02d,0x1d3));var _0xdd02=function(_0x55f5ef,_0x1b8176){_0x55f5ef=_0x55f5ef-0x0;var _0x3947e4=_0xd02d[_0x55f5ef];return _0x3947e4;};'use strict';var multer=require('multer');var util=require(_0xdd02('0x0'));var path=require(_0xdd02('0x1'));var timeout=require(_0xdd02('0x2'));var express=require(_0xdd02('0x3'));var router=express[_0xdd02('0x4')]();var fs_extra=require(_0xdd02('0x5'));var auth=require(_0xdd02('0x6'));var interaction=require(_0xdd02('0x7'));var config=require(_0xdd02('0x8'));var controller=require('./jscriptyQuestionReport.controller');router['get']('/',auth['isAuthenticated'](),controller[_0xdd02('0x9')]);router['get'](_0xdd02('0xa'),auth['isAuthenticated'](),controller[_0xdd02('0xb')]);router['get'](_0xdd02('0xc'),auth[_0xdd02('0xd')](),controller['show']);router[_0xdd02('0xe')]('/',auth[_0xdd02('0xd')](),controller['create']);router[_0xdd02('0xf')](_0xdd02('0xc'),auth[_0xdd02('0xd')](),controller[_0xdd02('0x10')]);router['delete'](_0xdd02('0xc'),auth[_0xdd02('0xd')](),controller['destroy']);module[_0xdd02('0x11')]=router;
\ No newline at end of file
index c3560a3..af20967 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0x7a54=['long','STRING','sequelize','exports','TEXT'];(function(_0x1928c9,_0x13a6d1){var _0x51b5fb=function(_0x24cf70){while(--_0x24cf70){_0x1928c9['push'](_0x1928c9['shift']());}};_0x51b5fb(++_0x13a6d1);}(_0x7a54,0x106));var _0x47a5=function(_0x1abbe0,_0x27a149){_0x1abbe0=_0x1abbe0-0x0;var _0x2cc8fd=_0x7a54[_0x1abbe0];return _0x2cc8fd;};'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 1af9a79..a3a1f0f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0xbe23=['JscriptyQuestionReport','rawAttributes','type','key','query','keys','filters','intersection','attributes','model','fields','length','hasOwnProperty','nolimit','sort','where','filter','merge','options','include','findAll','catch','show','params','includeAll','create','body','find','describe','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','path','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','querystring','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','json','undefined','count','offset','limit','set','Content-Range','reject','save','update','then','error','stack','name','index','map'];(function(_0x3cb662,_0x5eb919){var _0x4e2048=function(_0x4c08ad){while(--_0x4c08ad){_0x3cb662['push'](_0x3cb662['shift']());}};_0x4e2048(++_0x5eb919);}(_0xbe23,0xaf));var _0x3be2=function(_0x1466b1,_0x57b5e8){_0x1466b1=_0x1466b1-0x0;var _0x39f4a9=_0xbe23[_0x1466b1];return _0x39f4a9;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x3be2('0x0'));var zipdir=require(_0x3be2('0x1'));var jsonpatch=require(_0x3be2('0x2'));var rp=require(_0x3be2('0x3'));var moment=require(_0x3be2('0x4'));var BPromise=require(_0x3be2('0x5'));var Mustache=require(_0x3be2('0x6'));var util=require('util');var path=require(_0x3be2('0x7'));var sox=require(_0x3be2('0x8'));var csv=require(_0x3be2('0x9'));var ejs=require(_0x3be2('0xa'));var fs=require('fs');var fs_extra=require(_0x3be2('0xb'));var _=require(_0x3be2('0xc'));var squel=require(_0x3be2('0xd'));var crypto=require(_0x3be2('0xe'));var jsforce=require(_0x3be2('0xf'));var deskjs=require('desk.js');var toCsv=require(_0x3be2('0x9'));var querystring=require(_0x3be2('0x10'));var Papa=require('papaparse');var Redis=require(_0x3be2('0x11'));var authService=require(_0x3be2('0x12'));var qs=require(_0x3be2('0x13'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x3be2('0x14'));var logger=require('../../config/logger')('api');var utils=require(_0x3be2('0x15'));var config=require(_0x3be2('0x16'));var licenseUtil=require(_0x3be2('0x17'));var db=require(_0x3be2('0x18'))['db'];function respondWithStatusCode(_0x58022c,_0x104691){_0x104691=_0x104691||0xcc;return function(_0x1fcea6){if(_0x1fcea6){return _0x58022c[_0x3be2('0x19')](_0x104691);}return _0x58022c[_0x3be2('0x1a')](_0x104691)[_0x3be2('0x1b')]();};}function respondWithResult(_0x2195d7,_0x6cccef){_0x6cccef=_0x6cccef||0xc8;return function(_0x5759ce){if(_0x5759ce){return _0x2195d7['status'](_0x6cccef)[_0x3be2('0x1c')](_0x5759ce);}};}function respondWithFilteredResult(_0x8b2e80,_0xead0dc){return function(_0x1b5c57){if(_0x1b5c57){var _0x42cab0=typeof _0xead0dc['offset']===_0x3be2('0x1d')&&typeof _0xead0dc['limit']===_0x3be2('0x1d');var _0x32d091=_0x1b5c57[_0x3be2('0x1e')];var _0x171c84=_0x42cab0?0x0:_0xead0dc[_0x3be2('0x1f')];var _0x5aa0c5=_0x42cab0?_0x1b5c57[_0x3be2('0x1e')]:_0xead0dc[_0x3be2('0x1f')]+_0xead0dc[_0x3be2('0x20')];var _0x2ac13b;if(_0x5aa0c5>=_0x32d091){_0x5aa0c5=_0x32d091;_0x2ac13b=0xc8;}else{_0x2ac13b=0xce;}_0x8b2e80[_0x3be2('0x1a')](_0x2ac13b);return _0x8b2e80[_0x3be2('0x21')](_0x3be2('0x22'),_0x171c84+'-'+_0x5aa0c5+'/'+_0x32d091)[_0x3be2('0x1c')](_0x1b5c57);}return null;};}function patchUpdates(_0x26a827){return function(_0x330114){try{jsonpatch['apply'](_0x330114,_0x26a827,!![]);}catch(_0x569cd8){return BPromise[_0x3be2('0x23')](_0x569cd8);}return _0x330114[_0x3be2('0x24')]();};}function saveUpdates(_0x12dcac,_0x5b3622){return function(_0x27c072){if(_0x27c072){return _0x27c072[_0x3be2('0x25')](_0x12dcac)['then'](function(_0x3b7287){return _0x3b7287;});}return null;};}function removeEntity(_0x3bdd89,_0x46568b){return function(_0x18a791){if(_0x18a791){return _0x18a791['destroy']()[_0x3be2('0x26')](function(){_0x3bdd89['status'](0xcc)['end']();});}};}function handleEntityNotFound(_0x2623f8,_0x31a01a){return function(_0x5854b5){if(!_0x5854b5){_0x2623f8[_0x3be2('0x19')](0x194);}return _0x5854b5;};}function handleError(_0x525162,_0x53bf9c){_0x53bf9c=_0x53bf9c||0x1f4;return function(_0x4c7e1d){logger[_0x3be2('0x27')](_0x4c7e1d[_0x3be2('0x28')]);if(_0x4c7e1d[_0x3be2('0x29')]){delete _0x4c7e1d[_0x3be2('0x29')];}_0x525162[_0x3be2('0x1a')](_0x53bf9c)['send'](_0x4c7e1d);};}exports[_0x3be2('0x2a')]=function(_0x2ddae5,_0x55ccd4){var _0x20e13d={},_0x382e14={},_0x5f00c4={'count':0x0,'rows':[]};var _0x4a6113=_[_0x3be2('0x2b')](db[_0x3be2('0x2c')][_0x3be2('0x2d')],function(_0x3bb24e){return{'name':_0x3bb24e['fieldName'],'type':_0x3bb24e[_0x3be2('0x2e')][_0x3be2('0x2f')]};});_0x382e14['model']=_['map'](_0x4a6113,_0x3be2('0x29'));_0x382e14[_0x3be2('0x30')]=_[_0x3be2('0x31')](_0x2ddae5['query']);_0x382e14[_0x3be2('0x32')]=_[_0x3be2('0x33')](_0x382e14['model'],_0x382e14[_0x3be2('0x30')]);_0x20e13d[_0x3be2('0x34')]=_[_0x3be2('0x33')](_0x382e14[_0x3be2('0x35')],qs[_0x3be2('0x36')](_0x2ddae5[_0x3be2('0x30')][_0x3be2('0x36')]));_0x20e13d[_0x3be2('0x34')]=_0x20e13d[_0x3be2('0x34')][_0x3be2('0x37')]?_0x20e13d[_0x3be2('0x34')]:_0x382e14[_0x3be2('0x35')];if(!_0x2ddae5['query'][_0x3be2('0x38')](_0x3be2('0x39'))){_0x20e13d['limit']=qs[_0x3be2('0x20')](_0x2ddae5[_0x3be2('0x30')][_0x3be2('0x20')]);_0x20e13d[_0x3be2('0x1f')]=qs[_0x3be2('0x1f')](_0x2ddae5['query'][_0x3be2('0x1f')]);}_0x20e13d['order']=qs[_0x3be2('0x3a')](_0x2ddae5[_0x3be2('0x30')][_0x3be2('0x3a')]);_0x20e13d[_0x3be2('0x3b')]=qs[_0x3be2('0x32')](_['pick'](_0x2ddae5[_0x3be2('0x30')],_0x382e14[_0x3be2('0x32')]),_0x4a6113);if(_0x2ddae5[_0x3be2('0x30')][_0x3be2('0x3c')]){_0x20e13d[_0x3be2('0x3b')]=_[_0x3be2('0x3d')](_0x20e13d[_0x3be2('0x3b')],{'$or':_[_0x3be2('0x2b')](_0x4a6113,function(_0x168afd){if(_0x168afd['type']!=='VIRTUAL'){var _0xdfc84b={};_0xdfc84b[_0x168afd['name']]={'$like':'%'+_0x2ddae5['query'][_0x3be2('0x3c')]+'%'};return _0xdfc84b;}})});}_0x20e13d=_[_0x3be2('0x3d')]({},_0x20e13d,_0x2ddae5[_0x3be2('0x3e')]);var _0x4f3df3={'where':_0x20e13d[_0x3be2('0x3b')]};return db[_0x3be2('0x2c')][_0x3be2('0x1e')](_0x4f3df3)[_0x3be2('0x26')](function(_0x1fa289){_0x5f00c4[_0x3be2('0x1e')]=_0x1fa289;if(_0x2ddae5[_0x3be2('0x30')]['includeAll']){_0x20e13d[_0x3be2('0x3f')]=[{'all':!![]}];}return db['JscriptyQuestionReport'][_0x3be2('0x40')](_0x20e13d);})[_0x3be2('0x26')](function(_0xc31f9a){_0x5f00c4['rows']=_0xc31f9a;return _0x5f00c4;})[_0x3be2('0x26')](respondWithFilteredResult(_0x55ccd4,_0x20e13d))[_0x3be2('0x41')](handleError(_0x55ccd4,null));};exports[_0x3be2('0x42')]=function(_0x57abb3,_0x44255b){var _0x473392={'raw':!![],'where':{'id':_0x57abb3[_0x3be2('0x43')]['id']}},_0x2f4365={};_0x2f4365['model']=_['keys'](db['JscriptyQuestionReport'][_0x3be2('0x2d')]);_0x2f4365[_0x3be2('0x30')]=_['keys'](_0x57abb3[_0x3be2('0x30')]);_0x2f4365[_0x3be2('0x32')]=_['intersection'](_0x2f4365[_0x3be2('0x35')],_0x2f4365['query']);_0x473392[_0x3be2('0x34')]=_[_0x3be2('0x33')](_0x2f4365[_0x3be2('0x35')],qs['fields'](_0x57abb3[_0x3be2('0x30')]['fields']));_0x473392[_0x3be2('0x34')]=_0x473392[_0x3be2('0x34')][_0x3be2('0x37')]?_0x473392[_0x3be2('0x34')]:_0x2f4365[_0x3be2('0x35')];if(_0x57abb3[_0x3be2('0x30')][_0x3be2('0x44')]){_0x473392[_0x3be2('0x3f')]=[{'all':!![]}];}_0x473392=_['merge']({},_0x473392,_0x57abb3[_0x3be2('0x3e')]);return db[_0x3be2('0x2c')]['find'](_0x473392)['then'](handleEntityNotFound(_0x44255b,null))['then'](respondWithResult(_0x44255b,null))[_0x3be2('0x41')](handleError(_0x44255b,null));};exports[_0x3be2('0x45')]=function(_0x3734fe,_0x3d993e){return db['JscriptyQuestionReport'][_0x3be2('0x45')](_0x3734fe[_0x3be2('0x46')],{})[_0x3be2('0x26')](respondWithResult(_0x3d993e,0xc9))[_0x3be2('0x41')](handleError(_0x3d993e,null));};exports[_0x3be2('0x25')]=function(_0x4fc880,_0x474a56){if(_0x4fc880[_0x3be2('0x46')]['id']){delete _0x4fc880[_0x3be2('0x46')]['id'];}return db[_0x3be2('0x2c')][_0x3be2('0x47')]({'where':{'id':_0x4fc880[_0x3be2('0x43')]['id']}})[_0x3be2('0x26')](handleEntityNotFound(_0x474a56,null))[_0x3be2('0x26')](saveUpdates(_0x4fc880[_0x3be2('0x46')],null))[_0x3be2('0x26')](respondWithResult(_0x474a56,null))['catch'](handleError(_0x474a56,null));};exports['destroy']=function(_0x555d42,_0x98cfae){return db[_0x3be2('0x2c')]['find']({'where':{'id':_0x555d42[_0x3be2('0x43')]['id']}})[_0x3be2('0x26')](handleEntityNotFound(_0x98cfae,null))['then'](removeEntity(_0x98cfae,null))[_0x3be2('0x41')](handleError(_0x98cfae,null));};exports[_0x3be2('0x48')]=function(_0x45db63,_0x4c1bba){return db[_0x3be2('0x2c')][_0x3be2('0x48')]()['then'](respondWithResult(_0x4c1bba,null))[_0x3be2('0x41')](handleError(_0x4c1bba,null));};
\ No newline at end of file
index 41bd2c8..07766e7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0xa611=['../../config/logger','api','bluebird','request-promise','path','./jscriptyQuestionReport.attributes','exports','define','JscriptyQuestionReport','lodash','util'];(function(_0x572ae1,_0x6228c2){var _0x4672a5=function(_0x48d541){while(--_0x48d541){_0x572ae1['push'](_0x572ae1['shift']());}};_0x4672a5(++_0x6228c2);}(_0xa611,0x82));var _0x1a61=function(_0x484e36,_0x4482d8){_0x484e36=_0x484e36-0x0;var _0xafc85d=_0xa611[_0x484e36];return _0xafc85d;};'use strict';var _=require(_0x1a61('0x0'));var util=require(_0x1a61('0x1'));var logger=require(_0x1a61('0x2'))(_0x1a61('0x3'));var moment=require('moment');var BPromise=require(_0x1a61('0x4'));var rp=require(_0x1a61('0x5'));var fs=require('fs');var path=require(_0x1a61('0x6'));var rimraf=require('rimraf');var config=require('../../config/environment');var attributes=require(_0x1a61('0x7'));module[_0x1a61('0x8')]=function(_0x5d1112,_0x4fc13b){return _0x5d1112[_0x1a61('0x9')](_0x1a61('0xa'),attributes,{'tableName':'report_jscripty_questions','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 60bfbaa..f208b2b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0x335d=['JscriptyQuestionReport,\x20%s,\x20%s,\x20%s','error','code','message','result','catch','lodash','util','ioredis','../../mysqldb','../../config/logger','rpc','jayson/promise','client','http','request','info','JscriptyQuestionReport,\x20%s,\x20%s','request\x20sent'];(function(_0x5d771d,_0x30b3ef){var _0x5727dc=function(_0x2caff6){while(--_0x2caff6){_0x5d771d['push'](_0x5d771d['shift']());}};_0x5727dc(++_0x30b3ef);}(_0x335d,0xfd));var _0xd335=function(_0x392a06,_0x233e23){_0x392a06=_0x392a06-0x0;var _0x42fb44=_0x335d[_0x392a06];return _0x42fb44;};'use strict';var _=require(_0xd335('0x0'));var util=require(_0xd335('0x1'));var moment=require('moment');var BPromise=require('bluebird');var rs=require('randomstring');var fs=require('fs');var Redis=require(_0xd335('0x2'));var db=require(_0xd335('0x3'))['db'];var utils=require('../../config/utils');var logger=require(_0xd335('0x4'))(_0xd335('0x5'));var config=require('../../config/environment');var jayson=require(_0xd335('0x6'));var client=jayson[_0xd335('0x7')][_0xd335('0x8')]({'port':0x232a});function respondWithRpcPromise(_0x170f78,_0x8037fb,_0x130336){return new BPromise(function(_0x2c2285,_0x31d4c8){return client[_0xd335('0x9')](_0x170f78,_0x130336)['then'](function(_0xb4a810){logger[_0xd335('0xa')](_0xd335('0xb'),_0x8037fb,_0xd335('0xc'));logger['debug'](_0xd335('0xd'),_0x8037fb,_0xd335('0xc'),JSON['stringify'](_0xb4a810));if(_0xb4a810[_0xd335('0xe')]){if(_0xb4a810['error'][_0xd335('0xf')]===0x1f4){logger['error'](_0xd335('0xb'),_0x8037fb,_0xb4a810[_0xd335('0xe')][_0xd335('0x10')]);return _0x31d4c8(_0xb4a810[_0xd335('0xe')][_0xd335('0x10')]);}logger['error'](_0xd335('0xb'),_0x8037fb,_0xb4a810[_0xd335('0xe')][_0xd335('0x10')]);return _0x2c2285(_0xb4a810[_0xd335('0xe')]['message']);}else{logger['info'](_0xd335('0xb'),_0x8037fb,_0xd335('0xc'));_0x2c2285(_0xb4a810[_0xd335('0x11')][_0xd335('0x10')]);}})[_0xd335('0x12')](function(_0x23694b){logger[_0xd335('0xe')]('JscriptyQuestionReport,\x20%s,\x20%s',_0x8037fb,_0x23694b);_0x31d4c8(_0x23694b);});});}
\ No newline at end of file
index eed6bfc..6561791 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0x4cb7=['get','/describe','isAuthenticated','show','getQuestions','post','create','put','/:id','update','destroy','exports','multer','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','./jscriptySessionReport.controller','index'];(function(_0x329437,_0x1de73a){var _0x3789d9=function(_0x37832e){while(--_0x37832e){_0x329437['push'](_0x329437['shift']());}};_0x3789d9(++_0x1de73a);}(_0x4cb7,0x198));var _0x74cb=function(_0x444e4e,_0x58cebe){_0x444e4e=_0x444e4e-0x0;var _0x533b2a=_0x4cb7[_0x444e4e];return _0x533b2a;};'use strict';var multer=require(_0x74cb('0x0'));var util=require(_0x74cb('0x1'));var path=require(_0x74cb('0x2'));var timeout=require(_0x74cb('0x3'));var express=require(_0x74cb('0x4'));var router=express[_0x74cb('0x5')]();var fs_extra=require(_0x74cb('0x6'));var auth=require(_0x74cb('0x7'));var interaction=require('../../components/interaction/service');var config=require('../../config/environment');var controller=require(_0x74cb('0x8'));router['get']('/',auth['isAuthenticated'](),controller[_0x74cb('0x9')]);router[_0x74cb('0xa')](_0x74cb('0xb'),auth[_0x74cb('0xc')](),controller['describe']);router[_0x74cb('0xa')]('/:id',auth[_0x74cb('0xc')](),controller[_0x74cb('0xd')]);router['get']('/:id/questions',auth[_0x74cb('0xc')](),controller[_0x74cb('0xe')]);router[_0x74cb('0xf')]('/',auth[_0x74cb('0xc')](),controller[_0x74cb('0x10')]);router[_0x74cb('0x11')](_0x74cb('0x12'),auth['isAuthenticated'](),controller[_0x74cb('0x13')]);router['delete'](_0x74cb('0x12'),auth['isAuthenticated'](),controller[_0x74cb('0x14')]);module[_0x74cb('0x15')]=router;
\ No newline at end of file
index 5b700d1..37f2654 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0xed9d=['endtime','YYYY-MM-DD\x20HH:mm:ss','STRING','BOOLEAN','moment','sequelize','exports','setDataValue','starttime'];(function(_0x5e49f7,_0x106c1c){var _0x4a59d3=function(_0x44c541){while(--_0x44c541){_0x5e49f7['push'](_0x5e49f7['shift']());}};_0x4a59d3(++_0x106c1c);}(_0xed9d,0x79));var _0xded9=function(_0x2b4411,_0x2625ed){_0x2b4411=_0x2b4411-0x0;var _0x8e41ef=_0xed9d[_0x2b4411];return _0x8e41ef;};'use strict';var moment=require(_0xded9('0x0'));var Sequelize=require(_0xded9('0x1'));module[_0xded9('0x2')]={'starttime':{'type':Sequelize['DATE'],'set':function(_0x2ae684){this[_0xded9('0x3')](_0xded9('0x4'),_0x2ae684);this[_0xded9('0x3')](_0xded9('0x5'),moment()['format'](_0xded9('0x6')));}},'endtime':{'type':Sequelize['DATE']},'membername':{'type':Sequelize[_0xded9('0x7')]},'projectname':{'type':Sequelize['STRING']},'queue':{'type':Sequelize[_0xded9('0x7')]},'uniqueid':{'type':Sequelize[_0xded9('0x7')]},'calleridname':{'type':Sequelize['STRING']},'calleridnum':{'type':Sequelize[_0xded9('0x7')]},'completed':{'type':Sequelize[_0xded9('0x8')],'defaultValue':![]}};
\ No newline at end of file
index f9b1f68..dbf462e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0x8165=['rawAttributes','type','key','keys','query','filters','model','fields','attributes','length','nolimit','order','sort','where','pick','filter','VIRTUAL','merge','options','JscriptySessionReport','includeAll','include','findAll','rows','catch','show','intersection','find','create','body','update','params','describe','getQuestions','SessionId','JscriptyQuestionReport','rimraf','zip-dir','fast-json-patch','moment','bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','lodash','crypto','jsforce','desk.js','querystring','papaparse','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','end','status','json','offset','undefined','limit','count','set','apply','reject','save','then','destroy','error','stack','name','send','index','map'];(function(_0xee2e7a,_0x58354d){var _0x319dd3=function(_0xa99240){while(--_0xa99240){_0xee2e7a['push'](_0xee2e7a['shift']());}};_0x319dd3(++_0x58354d);}(_0x8165,0x16c));var _0x5816=function(_0x1b8687,_0x140dc1){_0x1b8687=_0x1b8687-0x0;var _0x586158=_0x8165[_0x1b8687];return _0x586158;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x5816('0x0'));var zipdir=require(_0x5816('0x1'));var jsonpatch=require(_0x5816('0x2'));var rp=require('request-promise');var moment=require(_0x5816('0x3'));var BPromise=require(_0x5816('0x4'));var Mustache=require(_0x5816('0x5'));var util=require(_0x5816('0x6'));var path=require(_0x5816('0x7'));var sox=require(_0x5816('0x8'));var csv=require(_0x5816('0x9'));var ejs=require(_0x5816('0xa'));var fs=require('fs');var fs_extra=require(_0x5816('0xb'));var _=require(_0x5816('0xc'));var squel=require('squel');var crypto=require(_0x5816('0xd'));var jsforce=require(_0x5816('0xe'));var deskjs=require(_0x5816('0xf'));var toCsv=require(_0x5816('0x9'));var querystring=require(_0x5816('0x10'));var Papa=require(_0x5816('0x11'));var Redis=require('ioredis');var authService=require(_0x5816('0x12'));var qs=require(_0x5816('0x13'));var as=require(_0x5816('0x14'));var hardwareService=require(_0x5816('0x15'));var logger=require('../../config/logger')('api');var utils=require(_0x5816('0x16'));var config=require(_0x5816('0x17'));var licenseUtil=require(_0x5816('0x18'));var db=require(_0x5816('0x19'))['db'];function respondWithStatusCode(_0x3415f9,_0x13bdbb){_0x13bdbb=_0x13bdbb||0xcc;return function(_0x4b505c){if(_0x4b505c){return _0x3415f9[_0x5816('0x1a')](_0x13bdbb);}return _0x3415f9['status'](_0x13bdbb)[_0x5816('0x1b')]();};}function respondWithResult(_0x4f1d01,_0x5bfe22){_0x5bfe22=_0x5bfe22||0xc8;return function(_0x1cb50c){if(_0x1cb50c){return _0x4f1d01[_0x5816('0x1c')](_0x5bfe22)[_0x5816('0x1d')](_0x1cb50c);}};}function respondWithFilteredResult(_0x3d3a54,_0x142954){return function(_0x36b078){if(_0x36b078){var _0x5454b7=typeof _0x142954[_0x5816('0x1e')]===_0x5816('0x1f')&&typeof _0x142954[_0x5816('0x20')]===_0x5816('0x1f');var _0x412412=_0x36b078[_0x5816('0x21')];var _0x12c78f=_0x5454b7?0x0:_0x142954[_0x5816('0x1e')];var _0x3f9c96=_0x5454b7?_0x36b078[_0x5816('0x21')]:_0x142954['offset']+_0x142954[_0x5816('0x20')];var _0x63017;if(_0x3f9c96>=_0x412412){_0x3f9c96=_0x412412;_0x63017=0xc8;}else{_0x63017=0xce;}_0x3d3a54[_0x5816('0x1c')](_0x63017);return _0x3d3a54[_0x5816('0x22')]('Content-Range',_0x12c78f+'-'+_0x3f9c96+'/'+_0x412412)['json'](_0x36b078);}return null;};}function patchUpdates(_0x5c4ddb){return function(_0x5139fe){try{jsonpatch[_0x5816('0x23')](_0x5139fe,_0x5c4ddb,!![]);}catch(_0x348982){return BPromise[_0x5816('0x24')](_0x348982);}return _0x5139fe[_0x5816('0x25')]();};}function saveUpdates(_0x2ea93e,_0x40e1f9){return function(_0x1e7251){if(_0x1e7251){return _0x1e7251['update'](_0x2ea93e)[_0x5816('0x26')](function(_0x16aca6){return _0x16aca6;});}return null;};}function removeEntity(_0x50524f,_0x1e4b5a){return function(_0x2856ad){if(_0x2856ad){return _0x2856ad[_0x5816('0x27')]()['then'](function(){_0x50524f[_0x5816('0x1c')](0xcc)[_0x5816('0x1b')]();});}};}function handleEntityNotFound(_0x3656c8,_0x2ab3a1){return function(_0x48e3d5){if(!_0x48e3d5){_0x3656c8[_0x5816('0x1a')](0x194);}return _0x48e3d5;};}function handleError(_0x2a1bff,_0x3faa40){_0x3faa40=_0x3faa40||0x1f4;return function(_0x5b7a52){logger[_0x5816('0x28')](_0x5b7a52[_0x5816('0x29')]);if(_0x5b7a52[_0x5816('0x2a')]){delete _0x5b7a52[_0x5816('0x2a')];}_0x2a1bff[_0x5816('0x1c')](_0x3faa40)[_0x5816('0x2b')](_0x5b7a52);};}exports[_0x5816('0x2c')]=function(_0x4914c0,_0x407fd6){var _0x131074={},_0x1c33fc={},_0x63e024={'count':0x0,'rows':[]};var _0x57c205=_[_0x5816('0x2d')](db['JscriptySessionReport'][_0x5816('0x2e')],function(_0x5a8eaa){return{'name':_0x5a8eaa['fieldName'],'type':_0x5a8eaa[_0x5816('0x2f')][_0x5816('0x30')]};});_0x1c33fc['model']=_[_0x5816('0x2d')](_0x57c205,_0x5816('0x2a'));_0x1c33fc['query']=_[_0x5816('0x31')](_0x4914c0[_0x5816('0x32')]);_0x1c33fc[_0x5816('0x33')]=_['intersection'](_0x1c33fc[_0x5816('0x34')],_0x1c33fc[_0x5816('0x32')]);_0x131074['attributes']=_['intersection'](_0x1c33fc[_0x5816('0x34')],qs[_0x5816('0x35')](_0x4914c0[_0x5816('0x32')][_0x5816('0x35')]));_0x131074[_0x5816('0x36')]=_0x131074[_0x5816('0x36')][_0x5816('0x37')]?_0x131074[_0x5816('0x36')]:_0x1c33fc['model'];if(!_0x4914c0[_0x5816('0x32')]['hasOwnProperty'](_0x5816('0x38'))){_0x131074[_0x5816('0x20')]=qs[_0x5816('0x20')](_0x4914c0[_0x5816('0x32')]['limit']);_0x131074[_0x5816('0x1e')]=qs[_0x5816('0x1e')](_0x4914c0[_0x5816('0x32')][_0x5816('0x1e')]);}_0x131074[_0x5816('0x39')]=qs[_0x5816('0x3a')](_0x4914c0[_0x5816('0x32')][_0x5816('0x3a')]);_0x131074[_0x5816('0x3b')]=qs[_0x5816('0x33')](_[_0x5816('0x3c')](_0x4914c0[_0x5816('0x32')],_0x1c33fc[_0x5816('0x33')]),_0x57c205);if(_0x4914c0[_0x5816('0x32')][_0x5816('0x3d')]){_0x131074[_0x5816('0x3b')]=_['merge'](_0x131074[_0x5816('0x3b')],{'$or':_[_0x5816('0x2d')](_0x57c205,function(_0x2a31e3){if(_0x2a31e3[_0x5816('0x2f')]!==_0x5816('0x3e')){var _0x474cd1={};_0x474cd1[_0x2a31e3[_0x5816('0x2a')]]={'$like':'%'+_0x4914c0[_0x5816('0x32')]['filter']+'%'};return _0x474cd1;}})});}_0x131074=_[_0x5816('0x3f')]({},_0x131074,_0x4914c0[_0x5816('0x40')]);var _0x58c0d4={'where':_0x131074[_0x5816('0x3b')]};return db[_0x5816('0x41')]['count'](_0x58c0d4)[_0x5816('0x26')](function(_0x47f0f2){_0x63e024[_0x5816('0x21')]=_0x47f0f2;if(_0x4914c0[_0x5816('0x32')][_0x5816('0x42')]){_0x131074[_0x5816('0x43')]=[{'all':!![]}];}return db[_0x5816('0x41')][_0x5816('0x44')](_0x131074);})[_0x5816('0x26')](function(_0x3b2c58){_0x63e024[_0x5816('0x45')]=_0x3b2c58;return _0x63e024;})[_0x5816('0x26')](respondWithFilteredResult(_0x407fd6,_0x131074))[_0x5816('0x46')](handleError(_0x407fd6,null));};exports[_0x5816('0x47')]=function(_0x2e120f,_0xd64aea){var _0x45c300={'raw':!![],'where':{'id':_0x2e120f['params']['id']}},_0x2aa33a={};_0x2aa33a[_0x5816('0x34')]=_[_0x5816('0x31')](db['JscriptySessionReport'][_0x5816('0x2e')]);_0x2aa33a[_0x5816('0x32')]=_[_0x5816('0x31')](_0x2e120f[_0x5816('0x32')]);_0x2aa33a[_0x5816('0x33')]=_[_0x5816('0x48')](_0x2aa33a[_0x5816('0x34')],_0x2aa33a['query']);_0x45c300[_0x5816('0x36')]=_['intersection'](_0x2aa33a['model'],qs[_0x5816('0x35')](_0x2e120f[_0x5816('0x32')][_0x5816('0x35')]));_0x45c300[_0x5816('0x36')]=_0x45c300[_0x5816('0x36')][_0x5816('0x37')]?_0x45c300[_0x5816('0x36')]:_0x2aa33a[_0x5816('0x34')];if(_0x2e120f['query'][_0x5816('0x42')]){_0x45c300[_0x5816('0x43')]=[{'all':!![]}];}_0x45c300=_[_0x5816('0x3f')]({},_0x45c300,_0x2e120f[_0x5816('0x40')]);return db['JscriptySessionReport'][_0x5816('0x49')](_0x45c300)[_0x5816('0x26')](handleEntityNotFound(_0xd64aea,null))['then'](respondWithResult(_0xd64aea,null))[_0x5816('0x46')](handleError(_0xd64aea,null));};exports[_0x5816('0x4a')]=function(_0x11d958,_0x8af7d9){return db[_0x5816('0x41')][_0x5816('0x4a')](_0x11d958[_0x5816('0x4b')],{})[_0x5816('0x26')](respondWithResult(_0x8af7d9,0xc9))[_0x5816('0x46')](handleError(_0x8af7d9,null));};exports[_0x5816('0x4c')]=function(_0x21da36,_0x3136b8){if(_0x21da36[_0x5816('0x4b')]['id']){delete _0x21da36[_0x5816('0x4b')]['id'];}return db[_0x5816('0x41')]['find']({'where':{'id':_0x21da36[_0x5816('0x4d')]['id']}})[_0x5816('0x26')](handleEntityNotFound(_0x3136b8,null))['then'](saveUpdates(_0x21da36[_0x5816('0x4b')],null))[_0x5816('0x26')](respondWithResult(_0x3136b8,null))['catch'](handleError(_0x3136b8,null));};exports[_0x5816('0x27')]=function(_0x69ea93,_0x1cc079){return db[_0x5816('0x41')][_0x5816('0x49')]({'where':{'id':_0x69ea93[_0x5816('0x4d')]['id']}})[_0x5816('0x26')](handleEntityNotFound(_0x1cc079,null))['then'](removeEntity(_0x1cc079,null))[_0x5816('0x46')](handleError(_0x1cc079,null));};exports[_0x5816('0x4e')]=function(_0x2b7aac,_0x30d0bb){return db['JscriptySessionReport'][_0x5816('0x4e')]()['then'](respondWithResult(_0x30d0bb,null))[_0x5816('0x46')](handleError(_0x30d0bb,null));};exports[_0x5816('0x4f')]=function(_0x3cf005,_0x4ac521,_0xb9599b){var _0x88ebfe={'raw':!![],'where':{}};var _0x9ac8c9={};var _0x1a81f8={'count':0x0,'rows':[]};return db['JscriptySessionReport']['findOne']({'where':{'id':_0x3cf005[_0x5816('0x4d')]['id']}})[_0x5816('0x26')](handleEntityNotFound(_0x4ac521,null))[_0x5816('0x26')](function(_0x54bebc){if(_0x54bebc){_0x9ac8c9[_0x5816('0x34')]=_[_0x5816('0x31')](db['JscriptyQuestionReport']['rawAttributes']);_0x9ac8c9[_0x5816('0x32')]=_['keys'](_0x3cf005['query']);_0x9ac8c9[_0x5816('0x33')]=_[_0x5816('0x48')](_0x9ac8c9['model'],_0x9ac8c9[_0x5816('0x32')]);_0x88ebfe[_0x5816('0x36')]=_[_0x5816('0x48')](_0x9ac8c9[_0x5816('0x34')],qs[_0x5816('0x35')](_0x3cf005[_0x5816('0x32')][_0x5816('0x35')]));_0x88ebfe['attributes']=_0x88ebfe[_0x5816('0x36')]['length']?_0x88ebfe[_0x5816('0x36')]:_0x9ac8c9[_0x5816('0x34')];if(!_0x3cf005[_0x5816('0x32')]['hasOwnProperty'](_0x5816('0x38'))){_0x88ebfe['limit']=qs['limit'](_0x3cf005[_0x5816('0x32')][_0x5816('0x20')]);_0x88ebfe[_0x5816('0x1e')]=qs[_0x5816('0x1e')](_0x3cf005[_0x5816('0x32')]['offset']);}_0x88ebfe[_0x5816('0x39')]=qs['sort'](_0x3cf005[_0x5816('0x32')][_0x5816('0x3a')]);_0x88ebfe[_0x5816('0x3b')]=qs[_0x5816('0x33')](_['pick'](_0x3cf005[_0x5816('0x32')],_0x9ac8c9[_0x5816('0x33')]));_0x88ebfe['where'][_0x5816('0x50')]=_0x54bebc['id'];if(_0x3cf005[_0x5816('0x32')][_0x5816('0x3d')]){_0x88ebfe[_0x5816('0x3b')]=_['merge'](_0x88ebfe[_0x5816('0x3b')],{'$or':_[_0x5816('0x2d')](_0x88ebfe[_0x5816('0x36')],function(_0x35c6f2){var _0x4de926={};_0x4de926[_0x35c6f2]={'$like':'%'+_0x3cf005[_0x5816('0x32')][_0x5816('0x3d')]+'%'};return _0x4de926;})});}_0x88ebfe=_[_0x5816('0x3f')]({},_0x88ebfe,_0x3cf005[_0x5816('0x40')]);return db[_0x5816('0x51')][_0x5816('0x21')]({'where':_0x88ebfe[_0x5816('0x3b')]})[_0x5816('0x26')](function(_0xc66c16){_0x1a81f8[_0x5816('0x21')]=_0xc66c16;if(_0x3cf005[_0x5816('0x32')][_0x5816('0x42')]){_0x88ebfe['include']=[{'all':!![]}];}return db[_0x5816('0x51')][_0x5816('0x44')](_0x88ebfe);})[_0x5816('0x26')](function(_0x1ce554){_0x1a81f8[_0x5816('0x45')]=_0x1ce554;return _0x1a81f8;});}})[_0x5816('0x26')](respondWithFilteredResult(_0x4ac521,_0x88ebfe))['catch'](handleError(_0x4ac521,null));};
\ No newline at end of file
index a303a9a..77a0d57 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0x1623=['lodash','api','moment','bluebird','request-promise','path','./jscriptySessionReport.attributes','JscriptySessionReport','report_jscripty_sessions'];(function(_0x4e8c67,_0x10c33d){var _0x4f1ef2=function(_0x2ca7aa){while(--_0x2ca7aa){_0x4e8c67['push'](_0x4e8c67['shift']());}};_0x4f1ef2(++_0x10c33d);}(_0x1623,0xab));var _0x3162=function(_0x1f1f61,_0xebe75b){_0x1f1f61=_0x1f1f61-0x0;var _0x486abd=_0x1623[_0x1f1f61];return _0x486abd;};'use strict';var _=require(_0x3162('0x0'));var util=require('util');var logger=require('../../config/logger')(_0x3162('0x1'));var moment=require(_0x3162('0x2'));var BPromise=require(_0x3162('0x3'));var rp=require(_0x3162('0x4'));var fs=require('fs');var path=require(_0x3162('0x5'));var rimraf=require('rimraf');var config=require('../../config/environment');var attributes=require(_0x3162('0x6'));module['exports']=function(_0x1b55f2,_0x428de6){return _0x1b55f2['define'](_0x3162('0x7'),attributes,{'tableName':_0x3162('0x8'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index fea4d33..4fbcc76 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0xfb11=['info','JscriptySessionReport,\x20%s,\x20%s','request\x20sent','JscriptySessionReport,\x20%s,\x20%s,\x20%s','stringify','error','code','message','catch','lodash','moment','bluebird','ioredis','../../config/utils','rpc','../../config/environment','client','http','request','then'];(function(_0xf51c06,_0x388e5b){var _0x1d5420=function(_0x5e077b){while(--_0x5e077b){_0xf51c06['push'](_0xf51c06['shift']());}};_0x1d5420(++_0x388e5b);}(_0xfb11,0x1ad));var _0x1fb1=function(_0x5e36d1,_0x471178){_0x5e36d1=_0x5e36d1-0x0;var _0x950b9e=_0xfb11[_0x5e36d1];return _0x950b9e;};'use strict';var _=require(_0x1fb1('0x0'));var util=require('util');var moment=require(_0x1fb1('0x1'));var BPromise=require(_0x1fb1('0x2'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x1fb1('0x3'));var db=require('../../mysqldb')['db'];var utils=require(_0x1fb1('0x4'));var logger=require('../../config/logger')(_0x1fb1('0x5'));var config=require(_0x1fb1('0x6'));var jayson=require('jayson/promise');var client=jayson[_0x1fb1('0x7')][_0x1fb1('0x8')]({'port':0x232a});function respondWithRpcPromise(_0x4c098d,_0x1859da,_0x2596c2){return new BPromise(function(_0x34e61a,_0x236b20){return client[_0x1fb1('0x9')](_0x4c098d,_0x2596c2)[_0x1fb1('0xa')](function(_0x438d15){logger[_0x1fb1('0xb')](_0x1fb1('0xc'),_0x1859da,_0x1fb1('0xd'));logger['debug'](_0x1fb1('0xe'),_0x1859da,'request\x20sent',JSON[_0x1fb1('0xf')](_0x438d15));if(_0x438d15['error']){if(_0x438d15[_0x1fb1('0x10')][_0x1fb1('0x11')]===0x1f4){logger[_0x1fb1('0x10')](_0x1fb1('0xc'),_0x1859da,_0x438d15[_0x1fb1('0x10')][_0x1fb1('0x12')]);return _0x236b20(_0x438d15['error'][_0x1fb1('0x12')]);}logger[_0x1fb1('0x10')](_0x1fb1('0xc'),_0x1859da,_0x438d15[_0x1fb1('0x10')][_0x1fb1('0x12')]);return _0x34e61a(_0x438d15[_0x1fb1('0x10')][_0x1fb1('0x12')]);}else{logger[_0x1fb1('0xb')](_0x1fb1('0xc'),_0x1859da,'request\x20sent');_0x34e61a(_0x438d15['result'][_0x1fb1('0x12')]);}})[_0x1fb1('0x13')](function(_0x3924ab){logger['error'](_0x1fb1('0xc'),_0x1859da,_0x3924ab);_0x236b20(_0x3924ab);});});}
\ No newline at end of file
index 4152e6a..c86bb6d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0xc472=['isAuthenticated','update','/download_log_file','downloadLogFile','exports','path','express','Router','fs-extra','../../components/interaction/service','../../config/environment','./license.controller','index','/:id'];(function(_0x566d7d,_0x1771c8){var _0x459839=function(_0x2053e8){while(--_0x2053e8){_0x566d7d['push'](_0x566d7d['shift']());}};_0x459839(++_0x1771c8);}(_0xc472,0x19b));var _0x2c47=function(_0x2cd1e4,_0x23d906){_0x2cd1e4=_0x2cd1e4-0x0;var _0x167374=_0xc472[_0x2cd1e4];return _0x167374;};'use strict';var multer=require('multer');var util=require('util');var path=require(_0x2c47('0x0'));var timeout=require('connect-timeout');var express=require(_0x2c47('0x1'));var router=express[_0x2c47('0x2')]();var fs_extra=require(_0x2c47('0x3'));var auth=require('../../components/auth/service');var interaction=require(_0x2c47('0x4'));var config=require(_0x2c47('0x5'));var controller=require(_0x2c47('0x6'));router['get']('/',controller[_0x2c47('0x7')]);router['put'](_0x2c47('0x8'),auth[_0x2c47('0x9')](),controller[_0x2c47('0xa')]);router['get'](_0x2c47('0xb'),auth[_0x2c47('0x9')](),controller[_0x2c47('0xc')]);module[_0x2c47('0xd')]=router;
\ No newline at end of file
index 593b703..26deaa4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0x27d2=['sequelize','exports','TEXT','STRING','INTEGER'];(function(_0x321bb2,_0x202794){var _0x9c12ed=function(_0x263dd3){while(--_0x263dd3){_0x321bb2['push'](_0x321bb2['shift']());}};_0x9c12ed(++_0x202794);}(_0x27d2,0xeb));var _0x227d=function(_0x56e456,_0xd75d8d){_0x56e456=_0x56e456-0x0;var _0x54f162=_0x27d2[_0x56e456];return _0x54f162;};'use strict';var Sequelize=require(_0x227d('0x0'));module[_0x227d('0x1')]={'license':{'type':Sequelize[_0x227d('0x2')]},'data1':{'type':Sequelize[_0x227d('0x3')]},'data2':{'type':Sequelize[_0x227d('0x3')]},'chatLicenseExceeded':{'type':Sequelize[_0x227d('0x4')],'defaultValue':0x0}};
\ No newline at end of file
index b129556..59a7dac 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0x0ccf=['reject','save','update','error','stack','name','send','index','model','keys','License','filters','intersection','attributes','query','fields','length','merge','options','getLicense','then','body','find','params','get','checkLicense','key','demo','catch','join','log','xcally','Content-disposition','attachment;\x20filename=','text/plain','download','rimraf','fast-json-patch','request-promise','moment','bluebird','mustache','util','to-csv','fs-extra','squel','crypto','jsforce','desk.js','querystring','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/utils','../../config/environment','../../config/license/util','sendStatus','end','status','json','offset','undefined','limit','count','set','Content-Range','apply'];(function(_0x1b3b1d,_0x52c14c){var _0x2fc99e=function(_0x5b4038){while(--_0x5b4038){_0x1b3b1d['push'](_0x1b3b1d['shift']());}};_0x2fc99e(++_0x52c14c);}(_0x0ccf,0x16e));var _0xf0cc=function(_0x535c27,_0xffdb1a){_0x535c27=_0x535c27-0x0;var _0x11ea38=_0x0ccf[_0x535c27];return _0x11ea38;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0xf0cc('0x0'));var zipdir=require('zip-dir');var jsonpatch=require(_0xf0cc('0x1'));var rp=require(_0xf0cc('0x2'));var moment=require(_0xf0cc('0x3'));var BPromise=require(_0xf0cc('0x4'));var Mustache=require(_0xf0cc('0x5'));var util=require(_0xf0cc('0x6'));var path=require('path');var sox=require('sox');var csv=require(_0xf0cc('0x7'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0xf0cc('0x8'));var _=require('lodash');var squel=require(_0xf0cc('0x9'));var crypto=require(_0xf0cc('0xa'));var jsforce=require(_0xf0cc('0xb'));var deskjs=require(_0xf0cc('0xc'));var toCsv=require('to-csv');var querystring=require(_0xf0cc('0xd'));var Papa=require('papaparse');var Redis=require('ioredis');var authService=require('../../components/auth/service');var qs=require(_0xf0cc('0xe'));var as=require(_0xf0cc('0xf'));var hardwareService=require('../../config/license/hardware');var logger=require('../../config/logger')('api');var utils=require(_0xf0cc('0x10'));var config=require(_0xf0cc('0x11'));var licenseUtil=require(_0xf0cc('0x12'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x10bd81,_0x3a1685){_0x3a1685=_0x3a1685||0xcc;return function(_0x23155d){if(_0x23155d){return _0x10bd81[_0xf0cc('0x13')](_0x3a1685);}return _0x10bd81['status'](_0x3a1685)[_0xf0cc('0x14')]();};}function respondWithResult(_0x40c748,_0x4ad8a8){_0x4ad8a8=_0x4ad8a8||0xc8;return function(_0x4718bb){if(_0x4718bb){return _0x40c748[_0xf0cc('0x15')](_0x4ad8a8)[_0xf0cc('0x16')](_0x4718bb);}};}function respondWithFilteredResult(_0x48955f,_0x43d5d6){return function(_0x571d13){if(_0x571d13){var _0x24e5da=typeof _0x43d5d6[_0xf0cc('0x17')]===_0xf0cc('0x18')&&typeof _0x43d5d6[_0xf0cc('0x19')]==='undefined';var _0xc05f4a=_0x571d13[_0xf0cc('0x1a')];var _0x32b638=_0x24e5da?0x0:_0x43d5d6['offset'];var _0x5b8f4d=_0x24e5da?_0x571d13['count']:_0x43d5d6['offset']+_0x43d5d6['limit'];var _0xbe61f;if(_0x5b8f4d>=_0xc05f4a){_0x5b8f4d=_0xc05f4a;_0xbe61f=0xc8;}else{_0xbe61f=0xce;}_0x48955f[_0xf0cc('0x15')](_0xbe61f);return _0x48955f[_0xf0cc('0x1b')](_0xf0cc('0x1c'),_0x32b638+'-'+_0x5b8f4d+'/'+_0xc05f4a)[_0xf0cc('0x16')](_0x571d13);}return null;};}function patchUpdates(_0x4e5e89){return function(_0x138c2a){try{jsonpatch[_0xf0cc('0x1d')](_0x138c2a,_0x4e5e89,!![]);}catch(_0x528dd4){return BPromise[_0xf0cc('0x1e')](_0x528dd4);}return _0x138c2a[_0xf0cc('0x1f')]();};}function saveUpdates(_0x272938,_0x54a96d){return function(_0x5a33e5){if(_0x5a33e5){return _0x5a33e5[_0xf0cc('0x20')](_0x272938)['then'](function(_0x8448b3){return _0x8448b3;});}return null;};}function removeEntity(_0x1d935a,_0x37b8e3){return function(_0x1449e8){if(_0x1449e8){return _0x1449e8['destroy']()['then'](function(){_0x1d935a[_0xf0cc('0x15')](0xcc)['end']();});}};}function handleEntityNotFound(_0x4eefa2,_0x3e86bb){return function(_0x55a875){if(!_0x55a875){_0x4eefa2['sendStatus'](0x194);}return _0x55a875;};}function handleError(_0x14db97,_0x432f80){_0x432f80=_0x432f80||0x1f4;return function(_0x3f42d4){logger[_0xf0cc('0x21')](_0x3f42d4[_0xf0cc('0x22')]);if(_0x3f42d4[_0xf0cc('0x23')]){delete _0x3f42d4[_0xf0cc('0x23')];}_0x14db97[_0xf0cc('0x15')](_0x432f80)[_0xf0cc('0x24')](_0x3f42d4);};}var utilLicense=require(_0xf0cc('0x12'));exports[_0xf0cc('0x25')]=function(_0x14df95,_0x54c0cf){var _0x40afc2={'raw':!![],'where':{'id':0x1}},_0x26621b={};_0x26621b[_0xf0cc('0x26')]=_[_0xf0cc('0x27')](db[_0xf0cc('0x28')]['rawAttributes']);_0x26621b['query']=_['keys'](_0x14df95['query']);_0x26621b[_0xf0cc('0x29')]=_[_0xf0cc('0x2a')](_0x26621b[_0xf0cc('0x26')],_0x26621b['query']);_0x40afc2[_0xf0cc('0x2b')]=_['intersection'](_0x26621b[_0xf0cc('0x26')],qs['fields'](_0x14df95[_0xf0cc('0x2c')][_0xf0cc('0x2d')]));_0x40afc2[_0xf0cc('0x2b')]=_0x40afc2['attributes'][_0xf0cc('0x2e')]?_0x40afc2[_0xf0cc('0x2b')]:_0x26621b[_0xf0cc('0x26')];_0x40afc2=_[_0xf0cc('0x2f')]({},_0x40afc2,_0x14df95[_0xf0cc('0x30')]);return utilLicense[_0xf0cc('0x31')](_0x40afc2)[_0xf0cc('0x32')](respondWithResult(_0x54c0cf,null))['catch'](handleError(_0x54c0cf,null));};exports[_0xf0cc('0x20')]=function(_0x348e6b,_0x2acfc0){if(_0x348e6b['body']['id']){delete _0x348e6b[_0xf0cc('0x33')]['id'];}return db['License'][_0xf0cc('0x34')]({'where':{'id':_0x348e6b[_0xf0cc('0x35')]['id']}})['then'](handleEntityNotFound(_0x2acfc0,null))[_0xf0cc('0x32')](function(_0x4c12c6){var _0x14beba=_0x4c12c6[_0xf0cc('0x36')]({'plain':!![]});return utilLicense[_0xf0cc('0x37')](_0x14beba,_0x348e6b[_0xf0cc('0x33')][_0xf0cc('0x38')]);})[_0xf0cc('0x32')](function(_0x5c02f5){if(!_0x5c02f5[_0xf0cc('0x39')]){return saveUpdates(_0x348e6b[_0xf0cc('0x33')],null);}return _0x5c02f5;})[_0xf0cc('0x32')](respondWithResult(_0x2acfc0,null))[_0xf0cc('0x3a')](handleError(_0x2acfc0,null));};exports['downloadLogFile']=function(_0x4a0cb9,_0x372166){var _0x6b5025='license-info.log';var _0x401858=path[_0xf0cc('0x3b')]('/var',_0xf0cc('0x3c'),_0xf0cc('0x3d'),_0x6b5025);_0x372166['setHeader'](_0xf0cc('0x3e'),_0xf0cc('0x3f')+_0x6b5025);_0x372166[_0xf0cc('0x1b')]('Content-Type',_0xf0cc('0x40'));_0x372166[_0xf0cc('0x41')](_0x401858);};
\ No newline at end of file
index 0540b7c..5239941 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0x5fed=['path','rimraf','./license.attributes','exports','define','lodash','util','../../config/logger','api','moment','request-promise'];(function(_0x45d888,_0xb4dfd){var _0x5e6a34=function(_0x3249e8){while(--_0x3249e8){_0x45d888['push'](_0x45d888['shift']());}};_0x5e6a34(++_0xb4dfd);}(_0x5fed,0x1a7));var _0xd5fe=function(_0x1e05c1,_0x3cffa3){_0x1e05c1=_0x1e05c1-0x0;var _0x15f1ca=_0x5fed[_0x1e05c1];return _0x15f1ca;};'use strict';var _=require(_0xd5fe('0x0'));var util=require(_0xd5fe('0x1'));var logger=require(_0xd5fe('0x2'))(_0xd5fe('0x3'));var moment=require(_0xd5fe('0x4'));var BPromise=require('bluebird');var rp=require(_0xd5fe('0x5'));var fs=require('fs');var path=require(_0xd5fe('0x6'));var rimraf=require(_0xd5fe('0x7'));var config=require('../../config/environment');var attributes=require(_0xd5fe('0x8'));module[_0xd5fe('0x9')]=function(_0x27c81f,_0x1b3817){return _0x27c81f[_0xd5fe('0xa')]('License',attributes,{'tableName':'license','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 62da9f3..92ee262 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0x8b7a=['bluebird','randomstring','../../mysqldb','../../config/logger','../../config/environment','jayson/promise','client','http','request','License,\x20%s,\x20%s','request\x20sent','stringify','error','code','message','info','result','lodash','moment'];(function(_0xd274ec,_0x6b590b){var _0x5345c8=function(_0x3bf623){while(--_0x3bf623){_0xd274ec['push'](_0xd274ec['shift']());}};_0x5345c8(++_0x6b590b);}(_0x8b7a,0x11b));var _0xa8b7=function(_0xf2b742,_0x5beda0){_0xf2b742=_0xf2b742-0x0;var _0x42047f=_0x8b7a[_0xf2b742];return _0x42047f;};'use strict';var _=require(_0xa8b7('0x0'));var util=require('util');var moment=require(_0xa8b7('0x1'));var BPromise=require(_0xa8b7('0x2'));var rs=require(_0xa8b7('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0xa8b7('0x4'))['db'];var utils=require('../../config/utils');var logger=require(_0xa8b7('0x5'))('rpc');var config=require(_0xa8b7('0x6'));var jayson=require(_0xa8b7('0x7'));var client=jayson[_0xa8b7('0x8')][_0xa8b7('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x3c9e35,_0xdecb11,_0x58e951){return new BPromise(function(_0x8cb56d,_0x3a36e1){return client[_0xa8b7('0xa')](_0x3c9e35,_0x58e951)['then'](function(_0x59ce7e){logger['info'](_0xa8b7('0xb'),_0xdecb11,_0xa8b7('0xc'));logger['debug']('License,\x20%s,\x20%s,\x20%s',_0xdecb11,'request\x20sent',JSON[_0xa8b7('0xd')](_0x59ce7e));if(_0x59ce7e['error']){if(_0x59ce7e[_0xa8b7('0xe')][_0xa8b7('0xf')]===0x1f4){logger[_0xa8b7('0xe')]('License,\x20%s,\x20%s',_0xdecb11,_0x59ce7e[_0xa8b7('0xe')][_0xa8b7('0x10')]);return _0x3a36e1(_0x59ce7e[_0xa8b7('0xe')]['message']);}logger[_0xa8b7('0xe')](_0xa8b7('0xb'),_0xdecb11,_0x59ce7e[_0xa8b7('0xe')][_0xa8b7('0x10')]);return _0x8cb56d(_0x59ce7e[_0xa8b7('0xe')][_0xa8b7('0x10')]);}else{logger[_0xa8b7('0x11')](_0xa8b7('0xb'),_0xdecb11,_0xa8b7('0xc'));_0x8cb56d(_0x59ce7e[_0xa8b7('0x12')][_0xa8b7('0x10')]);}})['catch'](function(_0x39c523){logger[_0xa8b7('0xe')]('License,\x20%s,\x20%s',_0xdecb11,_0x39c523);_0x3a36e1(_0x39c523);});});}
\ No newline at end of file
index 7e00610..41e5a6d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0x84b3=['index','/describe','describe','/:id','getDispositions','/:id/canned_answers','getAnswers','/:id/in_servers','getImap','/:id/out_servers','getSmtp','getInteractions','getApplications','/:id/messages','getMessages','/:id/verify','getAgents','addDisposition','post','addAnswer','addSmtp','/:id/interactions','addInteraction','/:id/applications','addApplications','/:id/send','send','/:id/users','addAgents','put','update','delete','removeDispositions','removeAnswers','removeSmtp','destroy','exports','multer','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../config/environment','./mailAccount.controller','get','isAuthenticated'];(function(_0x1253b0,_0x4172a1){var _0x8b4381=function(_0x395208){while(--_0x395208){_0x1253b0['push'](_0x1253b0['shift']());}};_0x8b4381(++_0x4172a1);}(_0x84b3,0x1de));var _0x384b=function(_0x37dee7,_0x4f846a){_0x37dee7=_0x37dee7-0x0;var _0xd9690=_0x84b3[_0x37dee7];return _0xd9690;};'use strict';var multer=require(_0x384b('0x0'));var util=require(_0x384b('0x1'));var path=require(_0x384b('0x2'));var timeout=require(_0x384b('0x3'));var express=require(_0x384b('0x4'));var router=express[_0x384b('0x5')]();var fs_extra=require(_0x384b('0x6'));var auth=require(_0x384b('0x7'));var interaction=require('../../components/interaction/service');var config=require(_0x384b('0x8'));var controller=require(_0x384b('0x9'));router[_0x384b('0xa')]('/',auth[_0x384b('0xb')](),controller[_0x384b('0xc')]);router[_0x384b('0xa')](_0x384b('0xd'),auth[_0x384b('0xb')](),controller[_0x384b('0xe')]);router['get'](_0x384b('0xf'),auth[_0x384b('0xb')](),controller['show']);router['get']('/:id/dispositions',auth['isAuthenticated'](),controller[_0x384b('0x10')]);router[_0x384b('0xa')](_0x384b('0x11'),auth[_0x384b('0xb')](),controller[_0x384b('0x12')]);router[_0x384b('0xa')](_0x384b('0x13'),auth[_0x384b('0xb')](),controller[_0x384b('0x14')]);router[_0x384b('0xa')](_0x384b('0x15'),auth[_0x384b('0xb')](),controller[_0x384b('0x16')]);router[_0x384b('0xa')]('/:id/interactions',auth[_0x384b('0xb')](),controller[_0x384b('0x17')]);router[_0x384b('0xa')]('/:id/applications',auth['isAuthenticated'](),controller[_0x384b('0x18')]);router['get'](_0x384b('0x19'),auth['isAuthenticated'](),controller[_0x384b('0x1a')]);router[_0x384b('0xa')](_0x384b('0x1b'),auth[_0x384b('0xb')](),controller['verifySmtp']);router[_0x384b('0xa')]('/:id/users',auth['isAuthenticated'](),controller[_0x384b('0x1c')]);router['post']('/:id/dispositions',auth[_0x384b('0xb')](),controller[_0x384b('0x1d')]);router[_0x384b('0x1e')](_0x384b('0x11'),auth[_0x384b('0xb')](),controller[_0x384b('0x1f')]);router['post']('/',auth[_0x384b('0xb')](),controller['create']);router['post'](_0x384b('0x13'),auth[_0x384b('0xb')](),controller['addImap']);router[_0x384b('0x1e')](_0x384b('0x15'),auth[_0x384b('0xb')](),controller[_0x384b('0x20')]);router[_0x384b('0x1e')](_0x384b('0x21'),auth['isAuthenticated'](),controller[_0x384b('0x22')]);router[_0x384b('0x1e')](_0x384b('0x23'),auth[_0x384b('0xb')](),controller[_0x384b('0x24')]);router['post'](_0x384b('0x25'),auth[_0x384b('0xb')](),controller[_0x384b('0x26')]);router['post'](_0x384b('0x27'),auth[_0x384b('0xb')](),controller[_0x384b('0x28')]);router[_0x384b('0x29')](_0x384b('0xf'),auth[_0x384b('0xb')](),controller[_0x384b('0x2a')]);router[_0x384b('0x2b')]('/:id/dispositions',auth[_0x384b('0xb')](),controller[_0x384b('0x2c')]);router['delete'](_0x384b('0x11'),auth[_0x384b('0xb')](),controller[_0x384b('0x2d')]);router[_0x384b('0x2b')](_0x384b('0x13'),auth[_0x384b('0xb')](),controller['removeImap']);router[_0x384b('0x2b')]('/:id/out_servers',auth[_0x384b('0xb')](),controller[_0x384b('0x2e')]);router[_0x384b('0x2b')](_0x384b('0xf'),auth[_0x384b('0xb')](),controller[_0x384b('0x2f')]);router[_0x384b('0x2b')](_0x384b('0x27'),auth[_0x384b('0xb')](),controller['removeAgents']);module[_0x384b('0x30')]=router;
\ No newline at end of file
index 570a52a..5e72f4b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0x0d29=['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}}','Enabled/disables\x20mandatory\x20dispo\x20on\x20a\x20queue','setDataValue','mandatoryDispositionPauseId','mandatoryDisposition','ENUM','hotmail','yahoo','outlook365','provider','getDataValue','custom','sequelize','exports','STRING','BOOLEAN','TEXT'];(function(_0x53abe5,_0x33a9e5){var _0xc1c37e=function(_0xd53c6e){while(--_0xd53c6e){_0x53abe5['push'](_0x53abe5['shift']());}};_0xc1c37e(++_0x33a9e5);}(_0x0d29,0x19d));var _0x90d2=function(_0x22dc8a,_0x341d16){_0x22dc8a=_0x22dc8a-0x0;var _0x93953f=_0x0d29[_0x22dc8a];return _0x93953f;};'use strict';var Sequelize=require(_0x90d2('0x0'));module[_0x90d2('0x1')]={'description':{'type':Sequelize[_0x90d2('0x2')]},'name':{'type':Sequelize['STRING'],'allowNull':![]},'service':{'type':Sequelize[_0x90d2('0x3')],'defaultValue':![]},'email':{'type':Sequelize[_0x90d2('0x2')],'validate':{'isEmail':!![]}},'active':{'type':Sequelize[_0x90d2('0x3')],'defaultValue':!![]},'key':{'type':Sequelize[_0x90d2('0x2')],'allowNull':![]},'template':{'type':Sequelize[_0x90d2('0x4')]},'markAsUnread':{'type':Sequelize[_0x90d2('0x3')],'defaultValue':![]},'fontFamily':{'type':Sequelize[_0x90d2('0x2')],'allowNull':![],'defaultValue':_0x90d2('0x5')},'fontSize':{'type':Sequelize[_0x90d2('0x6')](0x2)['UNSIGNED'],'defaultValue':0xd,'validate':{'min':0x8,'max':0x48}},'notificationTemplate':{'type':Sequelize[_0x90d2('0x4')],'defaultValue':function(){return _0x90d2('0x7');}},'notificationSound':{'type':Sequelize[_0x90d2('0x3')],'defaultValue':!![]},'notificationShake':{'type':Sequelize[_0x90d2('0x3')],'defaultValue':![]},'waitForTheAssignedAgent':{'type':Sequelize[_0x90d2('0x6')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0xa},'queueTransfer':{'type':Sequelize[_0x90d2('0x3')],'defaultValue':![]},'queueTransferTimeout':{'type':Sequelize[_0x90d2('0x6')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c},'agentTransfer':{'type':Sequelize[_0x90d2('0x3')],'defaultValue':![]},'agentTransferTimeout':{'type':Sequelize[_0x90d2('0x6')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c},'mandatoryDispositionPauseId':{'type':Sequelize['INTEGER'],'allowNull':!![],'defaultValue':null,'comment':'Status\x20to\x20put\x20when\x20mandatory\x20disposition\x20is\x20enabled'},'mandatoryDisposition':{'type':Sequelize[_0x90d2('0x3')],'defaultValue':![],'comment':_0x90d2('0x8'),'set':function(_0x56d09d){if(!_0x56d09d)this[_0x90d2('0x9')](_0x90d2('0xa'),null);this[_0x90d2('0x9')](_0x90d2('0xb'),_0x56d09d);}},'provider':{'type':Sequelize[_0x90d2('0xc')]('gmail',_0x90d2('0xd'),_0x90d2('0xe'),_0x90d2('0xf')),'defaultValue':null,'get':function(){if(!this['getDataValue'](_0x90d2('0x10')))return'custom';return this[_0x90d2('0x11')](_0x90d2('0x10'));},'set':function(_0xd2cf3d){if(_0xd2cf3d===_0x90d2('0x12'))_0xd2cf3d=null;return this['setDataValue'](_0x90d2('0x10'),_0xd2cf3d);}}};
\ No newline at end of file
index 00b8791..4c3007f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0x0240=['getApplications','$gte','split','YYYY-MM-DD\x20HH:mm:ss','MailMessage','inlineCss','true','CmList','List','Contacts','CloudProvider','Smtp\x20configuration\x20not\x20found','from','format','%s\x20<%s>','email','attachments','root','server/files/attachments','basename','SendMail','sendMail','List\x20not\x20found','messageId','subject','attach','Interaction','Messages','verifySmtp','getSmtpOptions','VerifySmtp','Sequelize','You\x20can\x27t\x20remove\x20the\x20mail\x20service\x20account','addAgents','emit','removeAgents','isArray','userMailAccount:remove','getAgents','moment','path','lodash','juice','../../components/parsers/qs','../../config/logger','api','../../config/environment','../../mysqldb','redis','defaults','socket.io-emitter','./mailAccount.socket','register','jayson/promise','client','http','request','then','info','request\x20sent','debug','error','MailAccount,\x20%s,\x20%s','message','result','catch','sendStatus','status','end','offset','limit','count','set','json','update','destroy','get','MailAccounts','UserProfileResource','name','send','gmail','yahoo','imap.mail.yahoo.com','hotmail','imap-mail.outlook.com','outlook365','outlook.office365.com','Unknown\x20email\x20service\x20provider','smtp.gmail.com','smtp.mail.yahoo.com','smtp.office365.com','user','username','password','modernAuthentication','CloudProviderId','pass','host','port','service','authentication','Imap','Smtp','index','MailServerIn','Pause','mandatoryDispositionPause','map','MailAccount','fieldName','type','keys','query','intersection','model','attributes','length','order','sort','where','pick','filter','merge','VIRTUAL','options','includeAll','findAll','show','params','MailServerOut','filters','fields','include','find','body','provider','custom','secure','describe','Disposition','rawAttributes','nolimit','MailAccountId','rows','removeDispositions','ids','addAnswer','CannedAnswer','create','getAnswers','findOne','hasOwnProperty','removeAnswers','key','ListId','isNil','active','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','UserProfileSection','userProfileId','autoAssociation','getImap','setImap','getSmtp','addSmtp','removeSmtp','setSmtp','omit','MailInteraction','CmContact','Contact','User','Owner','internal','Tag','Tags','tag','addApplications','transaction','sequelize','Transaction','ISOLATION_LEVELS','MailApplication','findAndCountAll','priority','finally'];(function(_0x521929,_0x479be5){var _0x632436=function(_0x288290){while(--_0x288290){_0x521929['push'](_0x521929['shift']());}};_0x632436(++_0x479be5);}(_0x0240,0xe3));var _0x0024=function(_0x22e6a5,_0x489c84){_0x22e6a5=_0x22e6a5-0x0;var _0x1f00b3=_0x0240[_0x22e6a5];return _0x1f00b3;};'use strict';var moment=require(_0x0024('0x0'));var BPromise=require('bluebird');var util=require('util');var path=require(_0x0024('0x1'));var _=require(_0x0024('0x2'));var juice=require(_0x0024('0x3'));var Redis=require('ioredis');var qs=require(_0x0024('0x4'));var logger=require(_0x0024('0x5'))(_0x0024('0x6'));var config=require(_0x0024('0x7'));var db=require(_0x0024('0x8'))['db'];config[_0x0024('0x9')]=_[_0x0024('0xa')](config[_0x0024('0x9')],{'host':'localhost','port':0x18eb});var socket=require(_0x0024('0xb'))(new Redis(config[_0x0024('0x9')]));require(_0x0024('0xc'))[_0x0024('0xd')](socket);var jayson=require(_0x0024('0xe'));var client=jayson[_0x0024('0xf')][_0x0024('0x10')]({'port':0x232b});function respondWithRpcPromise(_0x367d48,_0x554117,_0x2e8eac,_0x25465){return new BPromise(function(_0x32f0aa,_0x15b365){var _0x476df1=_0x25465||client;return _0x476df1[_0x0024('0x11')](_0x367d48,_0x2e8eac)[_0x0024('0x12')](function(_0x222797){logger[_0x0024('0x13')]('MailAccount,\x20%s,\x20%s',_0x554117,_0x0024('0x14'));logger[_0x0024('0x15')]('MailAccount,\x20%s,\x20%s,\x20%s',_0x554117,_0x0024('0x14'),JSON['stringify'](_0x222797));if(_0x222797[_0x0024('0x16')]){if(_0x222797['error']['code']===0x1f4){logger[_0x0024('0x16')](_0x0024('0x17'),_0x554117,_0x222797[_0x0024('0x16')][_0x0024('0x18')]);return _0x15b365(_0x222797[_0x0024('0x16')][_0x0024('0x18')]);}logger[_0x0024('0x16')](_0x0024('0x17'),_0x554117,_0x222797[_0x0024('0x16')][_0x0024('0x18')]);return _0x32f0aa(_0x222797[_0x0024('0x16')][_0x0024('0x18')]);}else{logger[_0x0024('0x13')](_0x0024('0x17'),_0x554117,_0x0024('0x14'));_0x32f0aa(_0x222797[_0x0024('0x19')][_0x0024('0x18')]);}})[_0x0024('0x1a')](function(_0x276b15){logger[_0x0024('0x16')](_0x0024('0x17'),_0x554117,_0x276b15);_0x15b365(_0x276b15);});});}function respondWithStatusCode(_0x55eb0a,_0x54727d){_0x54727d=_0x54727d||0xcc;return function(_0x2d350c){if(_0x2d350c){return _0x55eb0a[_0x0024('0x1b')](_0x54727d);}return _0x55eb0a[_0x0024('0x1c')](_0x54727d)[_0x0024('0x1d')]();};}function respondWithResult(_0x3d4d4d,_0x2abc57){_0x2abc57=_0x2abc57||0xc8;return function(_0x200b20){if(_0x200b20){return _0x3d4d4d[_0x0024('0x1c')](_0x2abc57)['json'](_0x200b20);}};}function respondWithFilteredResult(_0x4387bb,_0x5476c1){return function(_0x4171de){if(_0x4171de){var _0x596e82=typeof _0x5476c1[_0x0024('0x1e')]==='undefined'&&typeof _0x5476c1[_0x0024('0x1f')]==='undefined';var _0x394467=_0x4171de[_0x0024('0x20')];var _0x12d4c4=_0x596e82?0x0:_0x5476c1[_0x0024('0x1e')];var _0x6b5fc5=_0x596e82?_0x4171de[_0x0024('0x20')]:_0x5476c1['offset']+_0x5476c1[_0x0024('0x1f')];var _0x125dc1;if(_0x6b5fc5>=_0x394467){_0x6b5fc5=_0x394467;_0x125dc1=0xc8;}else{_0x125dc1=0xce;}_0x4387bb['status'](_0x125dc1);return _0x4387bb[_0x0024('0x21')]('Content-Range',_0x12d4c4+'-'+_0x6b5fc5+'/'+_0x394467)[_0x0024('0x22')](_0x4171de);}return null;};}function saveUpdates(_0x2a9e9e){return function(_0x3c0aa1){if(_0x3c0aa1){return _0x3c0aa1[_0x0024('0x23')](_0x2a9e9e)[_0x0024('0x12')](function(_0x5d7798){return _0x5d7798;});}return null;};}function removeEntity(_0x453ec8){return function(_0x130e47){if(_0x130e47){return _0x130e47[_0x0024('0x24')]()[_0x0024('0x12')](function(){var _0x298170=_0x130e47[_0x0024('0x25')]({'plain':!![]});var _0x187e4b=_0x0024('0x26');return db[_0x0024('0x27')][_0x0024('0x24')]({'where':{'type':_0x187e4b,'resourceId':_0x298170['id']}})[_0x0024('0x12')](function(){return _0x130e47;});})[_0x0024('0x12')](function(){_0x453ec8[_0x0024('0x1c')](0xcc)[_0x0024('0x1d')]();});}};}function handleEntityNotFound(_0x43e482){return function(_0x4d0ed9){if(!_0x4d0ed9){_0x43e482[_0x0024('0x1b')](0x194);}return _0x4d0ed9;};}function handleError(_0x2ca37b,_0x5b2e5c){_0x5b2e5c=_0x5b2e5c||0x1f4;return function(_0x53834e){logger[_0x0024('0x16')](_0x53834e['stack']);if(_0x53834e[_0x0024('0x28')]){delete _0x53834e[_0x0024('0x28')];}_0x2ca37b[_0x0024('0x1c')](_0x5b2e5c)[_0x0024('0x29')](_0x53834e);};}function getImapHost(_0xd47640){switch(_0xd47640){case _0x0024('0x2a'):return'imap.gmail.com';case _0x0024('0x2b'):return _0x0024('0x2c');case _0x0024('0x2d'):return _0x0024('0x2e');case _0x0024('0x2f'):return _0x0024('0x30');}throw new Error(_0x0024('0x31'),_0xd47640);}function getSmtpHost(_0x22fb51){switch(_0x22fb51){case'gmail':return _0x0024('0x32');case _0x0024('0x2b'):return _0x0024('0x33');case _0x0024('0x2d'):return'smtp-mail.outlook.com';case _0x0024('0x2f'):return _0x0024('0x34');}throw new Error(_0x0024('0x31'),_0x22fb51);}function getAuthenticationOptions(_0x3eab08,_0x507371){var _0x976ee9={};var _0x1803f4={};if(_0x3eab08){_0x976ee9[_0x0024('0x35')]=_0x1803f4['user']=_0x507371[_0x0024('0x36')];_0x976ee9[_0x0024('0x37')]=_0x1803f4['pass']=_0x507371[_0x0024('0x37')];if(_0x507371[_0x0024('0x38')]){_0x976ee9[_0x0024('0x38')]=_0x1803f4[_0x0024('0x38')]=!![];_0x976ee9[_0x0024('0x39')]=_0x1803f4[_0x0024('0x39')]=_0x507371[_0x0024('0x39')];_0x976ee9['password']=_0x1803f4[_0x0024('0x3a')]=null;}else{_0x976ee9[_0x0024('0x39')]=_0x1803f4[_0x0024('0x39')]=null;}_0x976ee9[_0x0024('0x3b')]=getImapHost(_0x3eab08);_0x976ee9[_0x0024('0x3c')]=0x3e1;_0x1803f4['host']=getSmtpHost(_0x3eab08);_0x1803f4[_0x0024('0x3c')]=0x24b;_0x1803f4['secure']=![];_0x976ee9[_0x0024('0x3d')]=_0x1803f4[_0x0024('0x3d')]=null;}else{if(_0x507371[_0x0024('0x3e')]){_0x976ee9[_0x0024('0x35')]=_0x1803f4[_0x0024('0x35')]=_0x507371[_0x0024('0x36')];_0x976ee9[_0x0024('0x37')]=_0x1803f4[_0x0024('0x3a')]=_0x507371[_0x0024('0x37')];}else{_0x976ee9[_0x0024('0x3e')]=_0x1803f4['authentication']=![];_0x976ee9[_0x0024('0x35')]=_0x1803f4['user']=null;_0x976ee9[_0x0024('0x37')]=_0x1803f4['pass']=null;}_0x976ee9['host']=_0x507371[_0x0024('0x3f')][_0x0024('0x3b')];_0x976ee9[_0x0024('0x3c')]=_0x507371[_0x0024('0x3f')][_0x0024('0x3c')];_0x1803f4[_0x0024('0x3b')]=_0x507371[_0x0024('0x40')][_0x0024('0x3b')];_0x1803f4[_0x0024('0x3c')]=_0x507371[_0x0024('0x40')][_0x0024('0x3c')];}return{'Imap':_0x976ee9,'Smtp':_0x1803f4};}exports[_0x0024('0x41')]=function(_0xbcb0fc,_0x1f88f3){var _0xf7ef16={'include':[{'model':db[_0x0024('0x42')],'as':_0x0024('0x3f')},{'model':db['MailServerOut'],'as':_0x0024('0x40')},{'model':db[_0x0024('0x43')],'as':_0x0024('0x44')}]},_0x4aa70a={},_0x5f29df={'count':0x0,'rows':[]};var _0x328f42=_[_0x0024('0x45')](db[_0x0024('0x46')]['rawAttributes'],function(_0x1bd492){return{'name':_0x1bd492[_0x0024('0x47')],'type':_0x1bd492[_0x0024('0x48')]['key']};});_0x4aa70a['model']=_[_0x0024('0x45')](_0x328f42,_0x0024('0x28'));_0x4aa70a['query']=_[_0x0024('0x49')](_0xbcb0fc[_0x0024('0x4a')]);_0x4aa70a['filters']=_[_0x0024('0x4b')](_0x4aa70a[_0x0024('0x4c')],_0x4aa70a[_0x0024('0x4a')]);_0xf7ef16[_0x0024('0x4d')]=_[_0x0024('0x4b')](_0x4aa70a[_0x0024('0x4c')],qs['fields'](_0xbcb0fc[_0x0024('0x4a')]['fields']));_0xf7ef16[_0x0024('0x4d')]=_0xf7ef16[_0x0024('0x4d')][_0x0024('0x4e')]?_0xf7ef16[_0x0024('0x4d')]:_0x4aa70a['model'];if(!_0xbcb0fc[_0x0024('0x4a')]['hasOwnProperty']('nolimit')){_0xf7ef16[_0x0024('0x1f')]=qs[_0x0024('0x1f')](_0xbcb0fc[_0x0024('0x4a')][_0x0024('0x1f')]);_0xf7ef16[_0x0024('0x1e')]=qs[_0x0024('0x1e')](_0xbcb0fc[_0x0024('0x4a')][_0x0024('0x1e')]);}_0xf7ef16[_0x0024('0x4f')]=qs[_0x0024('0x50')](_0xbcb0fc[_0x0024('0x4a')][_0x0024('0x50')]);_0xf7ef16[_0x0024('0x51')]=qs['filters'](_[_0x0024('0x52')](_0xbcb0fc[_0x0024('0x4a')],_0x4aa70a['filters']),_0x328f42);if(_0xbcb0fc[_0x0024('0x4a')][_0x0024('0x53')]){_0xf7ef16[_0x0024('0x51')]=_[_0x0024('0x54')](_0xf7ef16[_0x0024('0x51')],{'$or':_[_0x0024('0x45')](_0x328f42,function(_0x460ad4){if(_0x460ad4[_0x0024('0x48')]!==_0x0024('0x55')){var _0x1781ca={};_0x1781ca[_0x460ad4[_0x0024('0x28')]]={'$like':'%'+_0xbcb0fc[_0x0024('0x4a')][_0x0024('0x53')]+'%'};return _0x1781ca;}})});}_0xf7ef16=_[_0x0024('0x54')]({},_0xf7ef16,_0xbcb0fc[_0x0024('0x56')]);var _0x48036c={'where':_0xf7ef16['where']};return db['MailAccount'][_0x0024('0x20')](_0x48036c)[_0x0024('0x12')](function(_0x7cf163){_0x5f29df[_0x0024('0x20')]=_0x7cf163;if(_0xbcb0fc[_0x0024('0x4a')][_0x0024('0x57')]){_0xf7ef16['include']=[{'all':!![]}];}return db[_0x0024('0x46')][_0x0024('0x58')](_0xf7ef16);})[_0x0024('0x12')](function(_0x376c54){_0x5f29df['rows']=_0x376c54;return _0x5f29df;})['then'](respondWithFilteredResult(_0x1f88f3,_0xf7ef16))['catch'](handleError(_0x1f88f3,null));};exports[_0x0024('0x59')]=function(_0x35945e,_0x4e5060){var _0x571747={'raw':![],'where':{'id':_0x35945e[_0x0024('0x5a')]['id']},'include':[{'model':db[_0x0024('0x42')],'as':_0x0024('0x3f')},{'model':db[_0x0024('0x5b')],'as':_0x0024('0x40')},{'model':db['Pause'],'as':_0x0024('0x44')}]},_0x35acbc={};_0x35acbc[_0x0024('0x4c')]=_['keys'](db[_0x0024('0x46')]['rawAttributes']);_0x35acbc[_0x0024('0x4a')]=_[_0x0024('0x49')](_0x35945e[_0x0024('0x4a')]);_0x35acbc[_0x0024('0x5c')]=_['intersection'](_0x35acbc[_0x0024('0x4c')],_0x35acbc[_0x0024('0x4a')]);_0x571747[_0x0024('0x4d')]=_['intersection'](_0x35acbc[_0x0024('0x4c')],qs['fields'](_0x35945e[_0x0024('0x4a')][_0x0024('0x5d')]));_0x571747[_0x0024('0x4d')]=_0x571747['attributes'][_0x0024('0x4e')]?_0x571747['attributes']:_0x35acbc[_0x0024('0x4c')];if(_0x35945e[_0x0024('0x4a')][_0x0024('0x57')]){_0x571747[_0x0024('0x5e')]=[{'all':!![]}];}_0x571747=_[_0x0024('0x54')]({},_0x571747,_0x35945e[_0x0024('0x56')]);return db['MailAccount'][_0x0024('0x5f')](_0x571747)[_0x0024('0x12')](handleEntityNotFound(_0x4e5060,null))[_0x0024('0x12')](respondWithResult(_0x4e5060,null))[_0x0024('0x1a')](handleError(_0x4e5060,null));};exports[_0x0024('0x23')]=function(_0x2fa468,_0x4c13f5){if(_0x2fa468[_0x0024('0x60')]['id']){delete _0x2fa468[_0x0024('0x60')]['id'];}var _0x8ae8ed=_0x2fa468[_0x0024('0x60')][_0x0024('0x61')]===_0x0024('0x62')?null:_0x2fa468[_0x0024('0x60')]['provider'];var _0x7fe5b4=_0x2fa468[_0x0024('0x60')][_0x0024('0x3f')]||{};var _0x527420=_0x2fa468['body'][_0x0024('0x40')]||{};if(_0x8ae8ed){_0x7fe5b4[_0x0024('0x3b')]=getImapHost(_0x8ae8ed);_0x7fe5b4[_0x0024('0x3c')]=0x3e1;_0x527420[_0x0024('0x3b')]=getSmtpHost(_0x8ae8ed);_0x527420['port']=0x24b;_0x527420[_0x0024('0x63')]=![];}if(_0x527420['modernAuthentication']){_0x527420[_0x0024('0x63')]=![];}else{_0x527420['CloudProviderId']=null;}if(!_0x7fe5b4['modernAuthentication'])_0x7fe5b4[_0x0024('0x39')]=null;_0x2fa468[_0x0024('0x60')][_0x0024('0x3f')]=_0x7fe5b4;_0x2fa468[_0x0024('0x60')][_0x0024('0x40')]=_0x527420;return db[_0x0024('0x46')][_0x0024('0x5f')]({'where':{'id':_0x2fa468['params']['id']},'include':[{'model':db[_0x0024('0x42')],'as':_0x0024('0x3f')},{'model':db[_0x0024('0x5b')],'as':'Smtp'},{'model':db[_0x0024('0x43')],'as':_0x0024('0x44')}]})[_0x0024('0x12')](handleEntityNotFound(_0x4c13f5,null))[_0x0024('0x12')](function(_0x5babac){if(!_0x5babac)throw new Error('Mail\x20Account\x20not\x20found');if(_0x5babac[_0x0024('0x3d')])delete _0x2fa468['body'][_0x0024('0x3f')];return _0x5babac;})['then'](saveUpdates(_0x2fa468['body'],null))[_0x0024('0x12')](function(_0x5a7b76){if(!_0x2fa468[_0x0024('0x60')][_0x0024('0x3f')])return _0x5a7b76;return db['MailServerIn'][_0x0024('0x23')](_0x2fa468[_0x0024('0x60')][_0x0024('0x3f')],{'where':{'MailAccountId':_0x5a7b76['id']}})['then'](function(){return _0x5a7b76;});})[_0x0024('0x12')](function(_0x71ce32){if(!_0x2fa468[_0x0024('0x60')][_0x0024('0x40')])return _0x71ce32;return db['MailServerOut']['update'](_0x2fa468[_0x0024('0x60')][_0x0024('0x40')],{'where':{'MailAccountId':_0x71ce32['id']}})[_0x0024('0x12')](function(){return _0x71ce32;});})[_0x0024('0x12')](respondWithResult(_0x4c13f5,null))[_0x0024('0x1a')](handleError(_0x4c13f5,null));};exports[_0x0024('0x64')]=function(_0x348a3c,_0x12eb16){return db[_0x0024('0x46')][_0x0024('0x64')]()[_0x0024('0x12')](respondWithResult(_0x12eb16,null))[_0x0024('0x1a')](handleError(_0x12eb16,null));};exports['addDisposition']=function(_0xf0a151,_0x114aea){if(_0xf0a151['body']['id']){delete _0xf0a151[_0x0024('0x60')]['id'];}return db['MailAccount'][_0x0024('0x5f')]({'where':{'id':_0xf0a151[_0x0024('0x5a')]['id']}})[_0x0024('0x12')](handleEntityNotFound(_0x114aea,null))[_0x0024('0x12')](function(_0x59e768){if(_0x59e768){_0xf0a151[_0x0024('0x60')]['MailAccountId']=_0x59e768['id'];return db['Disposition']['create'](_0xf0a151[_0x0024('0x60')]);}})[_0x0024('0x12')](respondWithResult(_0x114aea,null))[_0x0024('0x1a')](handleError(_0x114aea,null));};exports['getDispositions']=function(_0x3cbe31,_0x381801){var _0x599bc2={'raw':![],'where':{}};var _0x25e0c6={};var _0x22569b={'count':0x0,'rows':[]};return db[_0x0024('0x46')]['findOne']({'where':{'id':_0x3cbe31[_0x0024('0x5a')]['id']}})[_0x0024('0x12')](handleEntityNotFound(_0x381801,null))[_0x0024('0x12')](function(_0x57e655){if(_0x57e655){_0x25e0c6[_0x0024('0x4c')]=_['keys'](db[_0x0024('0x65')][_0x0024('0x66')]);_0x25e0c6['query']=_[_0x0024('0x49')](_0x3cbe31[_0x0024('0x4a')]);_0x25e0c6[_0x0024('0x5c')]=_[_0x0024('0x4b')](_0x25e0c6[_0x0024('0x4c')],_0x25e0c6['query']);_0x599bc2[_0x0024('0x4d')]=_[_0x0024('0x4b')](_0x25e0c6[_0x0024('0x4c')],qs[_0x0024('0x5d')](_0x3cbe31['query']['fields']));_0x599bc2[_0x0024('0x4d')]=_0x599bc2[_0x0024('0x4d')][_0x0024('0x4e')]?_0x599bc2[_0x0024('0x4d')]:_0x25e0c6[_0x0024('0x4c')];if(!_0x3cbe31[_0x0024('0x4a')]['hasOwnProperty'](_0x0024('0x67'))){_0x599bc2['limit']=qs[_0x0024('0x1f')](_0x3cbe31[_0x0024('0x4a')][_0x0024('0x1f')]);_0x599bc2[_0x0024('0x1e')]=qs[_0x0024('0x1e')](_0x3cbe31['query'][_0x0024('0x1e')]);}_0x599bc2[_0x0024('0x4f')]=qs[_0x0024('0x50')](_0x3cbe31[_0x0024('0x4a')]['sort']);_0x599bc2[_0x0024('0x51')]=qs['filters'](_[_0x0024('0x52')](_0x3cbe31[_0x0024('0x4a')],_0x25e0c6[_0x0024('0x5c')]));_0x599bc2[_0x0024('0x51')][_0x0024('0x68')]=_0x57e655['id'];if(_0x3cbe31[_0x0024('0x4a')][_0x0024('0x53')]){_0x599bc2[_0x0024('0x51')]=_[_0x0024('0x54')](_0x599bc2[_0x0024('0x51')],{'$or':_[_0x0024('0x45')](_0x599bc2[_0x0024('0x4d')],function(_0x119ca1){var _0x4b1860={};_0x4b1860[_0x119ca1]={'$like':'%'+_0x3cbe31[_0x0024('0x4a')]['filter']+'%'};return _0x4b1860;})});}_0x599bc2=_[_0x0024('0x54')]({},_0x599bc2,_0x3cbe31[_0x0024('0x56')]);return db[_0x0024('0x65')][_0x0024('0x20')]({'where':_0x599bc2['where']})[_0x0024('0x12')](function(_0x384a26){_0x22569b[_0x0024('0x20')]=_0x384a26;if(_0x3cbe31['query'][_0x0024('0x57')]){_0x599bc2[_0x0024('0x5e')]=[{'all':!![]}];}return db[_0x0024('0x65')][_0x0024('0x58')](_0x599bc2);})[_0x0024('0x12')](function(_0x450cfa){_0x22569b[_0x0024('0x69')]=_0x450cfa;return _0x22569b;});}})[_0x0024('0x12')](respondWithFilteredResult(_0x381801,_0x599bc2))[_0x0024('0x1a')](handleError(_0x381801,null));};exports[_0x0024('0x6a')]=function(_0x31e5d4,_0x1c04f1){return db[_0x0024('0x46')][_0x0024('0x5f')]({'where':{'id':_0x31e5d4[_0x0024('0x5a')]['id']}})['then'](handleEntityNotFound(_0x1c04f1,null))[_0x0024('0x12')](function(_0x534cf8){if(_0x534cf8){return _0x534cf8['removeDispositions'](_0x31e5d4[_0x0024('0x4a')][_0x0024('0x6b')]);}})['then'](respondWithStatusCode(_0x1c04f1,null))[_0x0024('0x1a')](handleError(_0x1c04f1,null));};exports[_0x0024('0x6c')]=function(_0x1f37ae,_0x1dd583){if(_0x1f37ae[_0x0024('0x60')]['id']){delete _0x1f37ae[_0x0024('0x60')]['id'];}return db[_0x0024('0x46')]['find']({'where':{'id':_0x1f37ae['params']['id']}})[_0x0024('0x12')](handleEntityNotFound(_0x1dd583,null))[_0x0024('0x12')](function(_0x208800){if(_0x208800){_0x1f37ae[_0x0024('0x60')]['MailAccountId']=_0x208800['id'];return db[_0x0024('0x6d')][_0x0024('0x6e')](_0x1f37ae[_0x0024('0x60')]);}})[_0x0024('0x12')](respondWithResult(_0x1dd583,null))[_0x0024('0x1a')](handleError(_0x1dd583,null));};exports[_0x0024('0x6f')]=function(_0x43f0f4,_0x4c158f){var _0x1b3f4f={'raw':![],'where':{}};var _0x2facbc={};var _0x5451d1={'count':0x0,'rows':[]};return db[_0x0024('0x46')][_0x0024('0x70')]({'where':{'id':_0x43f0f4[_0x0024('0x5a')]['id']}})[_0x0024('0x12')](handleEntityNotFound(_0x4c158f,null))[_0x0024('0x12')](function(_0x457a25){if(_0x457a25){_0x2facbc[_0x0024('0x4c')]=_[_0x0024('0x49')](db[_0x0024('0x6d')][_0x0024('0x66')]);_0x2facbc[_0x0024('0x4a')]=_[_0x0024('0x49')](_0x43f0f4['query']);_0x2facbc[_0x0024('0x5c')]=_[_0x0024('0x4b')](_0x2facbc['model'],_0x2facbc[_0x0024('0x4a')]);_0x1b3f4f[_0x0024('0x4d')]=_[_0x0024('0x4b')](_0x2facbc[_0x0024('0x4c')],qs[_0x0024('0x5d')](_0x43f0f4[_0x0024('0x4a')][_0x0024('0x5d')]));_0x1b3f4f[_0x0024('0x4d')]=_0x1b3f4f[_0x0024('0x4d')][_0x0024('0x4e')]?_0x1b3f4f['attributes']:_0x2facbc['model'];if(!_0x43f0f4[_0x0024('0x4a')][_0x0024('0x71')](_0x0024('0x67'))){_0x1b3f4f['limit']=qs[_0x0024('0x1f')](_0x43f0f4[_0x0024('0x4a')][_0x0024('0x1f')]);_0x1b3f4f[_0x0024('0x1e')]=qs[_0x0024('0x1e')](_0x43f0f4['query'][_0x0024('0x1e')]);}_0x1b3f4f['order']=qs[_0x0024('0x50')](_0x43f0f4[_0x0024('0x4a')][_0x0024('0x50')]);_0x1b3f4f[_0x0024('0x51')]=qs[_0x0024('0x5c')](_[_0x0024('0x52')](_0x43f0f4[_0x0024('0x4a')],_0x2facbc[_0x0024('0x5c')]));_0x1b3f4f[_0x0024('0x51')]['MailAccountId']=_0x457a25['id'];if(_0x43f0f4[_0x0024('0x4a')][_0x0024('0x53')]){_0x1b3f4f[_0x0024('0x51')]=_[_0x0024('0x54')](_0x1b3f4f[_0x0024('0x51')],{'$or':_[_0x0024('0x45')](_0x1b3f4f['attributes'],function(_0x7bd6e2){var _0x29c572={};_0x29c572[_0x7bd6e2]={'$like':'%'+_0x43f0f4['query'][_0x0024('0x53')]+'%'};return _0x29c572;})});}_0x1b3f4f=_[_0x0024('0x54')]({},_0x1b3f4f,_0x43f0f4[_0x0024('0x56')]);return db[_0x0024('0x6d')][_0x0024('0x20')]({'where':_0x1b3f4f['where']})['then'](function(_0x27a275){_0x5451d1[_0x0024('0x20')]=_0x27a275;if(_0x43f0f4[_0x0024('0x4a')][_0x0024('0x57')]){_0x1b3f4f[_0x0024('0x5e')]=[{'all':!![]}];}return db['CannedAnswer'][_0x0024('0x58')](_0x1b3f4f);})['then'](function(_0x9ec009){_0x5451d1[_0x0024('0x69')]=_0x9ec009;return _0x5451d1;});}})['then'](respondWithFilteredResult(_0x4c158f,_0x1b3f4f))[_0x0024('0x1a')](handleError(_0x4c158f,null));};exports[_0x0024('0x72')]=function(_0xdf1016,_0x369a8c){return db[_0x0024('0x46')][_0x0024('0x5f')]({'where':{'id':_0xdf1016['params']['id']}})['then'](handleEntityNotFound(_0x369a8c,null))[_0x0024('0x12')](function(_0x231b75){if(_0x231b75){return _0x231b75[_0x0024('0x72')](_0xdf1016[_0x0024('0x4a')][_0x0024('0x6b')]);}})['then'](respondWithStatusCode(_0x369a8c,null))['catch'](handleError(_0x369a8c,null));};exports['create']=function(_0x416a55,_0x4ae91f){var _0x20346d={'name':_0x416a55[_0x0024('0x60')][_0x0024('0x28')],'key':_0x416a55['body'][_0x0024('0x73')],'provider':_0x416a55['body'][_0x0024('0x61')]===_0x0024('0x62')?null:_0x416a55['body'][_0x0024('0x61')],'email':_0x416a55[_0x0024('0x60')]['email'],'ListId':_0x416a55[_0x0024('0x60')][_0x0024('0x74')],'active':!_[_0x0024('0x75')](_0x416a55[_0x0024('0x60')][_0x0024('0x76')])?_0x416a55['body'][_0x0024('0x76')]:!![],'description':_0x416a55[_0x0024('0x60')]['description']||null};var _0x4016ae=getAuthenticationOptions(_0x20346d[_0x0024('0x61')],_0x416a55[_0x0024('0x60')]);_0x20346d[_0x0024('0x3f')]=_0x4016ae[_0x0024('0x3f')];_0x20346d[_0x0024('0x40')]=_0x4016ae['Smtp'];return db[_0x0024('0x46')]['create'](_0x20346d,{'include':[{'model':db[_0x0024('0x5b')],'as':'Smtp'},{'model':db['MailServerIn'],'as':'Imap'}]})['then'](function(_0x5bc443){var _0x4d68bb=_0x416a55[_0x0024('0x35')][_0x0024('0x25')]({'plain':!![]});if(!_0x4d68bb)throw new Error(_0x0024('0x77'));if(_0x4d68bb[_0x0024('0x78')]===_0x0024('0x35')){var _0x126277=_0x5bc443[_0x0024('0x25')]({'plain':!![]});return db[_0x0024('0x79')][_0x0024('0x5f')]({'where':{'name':_0x0024('0x26'),'userProfileId':_0x4d68bb[_0x0024('0x7a')]},'raw':!![]})[_0x0024('0x12')](function(_0x32eeeb){if(_0x32eeeb&&_0x32eeeb[_0x0024('0x7b')]===0x0){return db['UserProfileResource'][_0x0024('0x6e')]({'name':_0x126277[_0x0024('0x28')],'resourceId':_0x126277['id'],'type':_0x32eeeb['name'],'sectionId':_0x32eeeb['id']},{})[_0x0024('0x12')](function(){return _0x5bc443;});}else{return _0x5bc443;}})[_0x0024('0x1a')](function(_0x167776){logger[_0x0024('0x16')]('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x167776);throw _0x167776;});}return _0x5bc443;})['then'](respondWithResult(_0x4ae91f,0xc9))[_0x0024('0x1a')](handleError(_0x4ae91f,null));};exports[_0x0024('0x7c')]=function(_0x30b727,_0x1bd974){return db[_0x0024('0x46')][_0x0024('0x70')]({'where':{'id':_0x30b727['params']['id']}})[_0x0024('0x12')](handleEntityNotFound(_0x1bd974,null))['then'](function(_0x598bbf){if(_0x598bbf){return _0x598bbf[_0x0024('0x7c')]();}return null;})['then'](respondWithResult(_0x1bd974,null))['catch'](handleError(_0x1bd974,null));};exports['addImap']=function(_0x35b601,_0x3c8a3a){if(_0x35b601[_0x0024('0x60')]['id']){delete _0x35b601['body']['id'];}return db['MailAccount']['find']({'where':{'id':_0x35b601[_0x0024('0x5a')]['id']}})[_0x0024('0x12')](handleEntityNotFound(_0x3c8a3a,null))['then'](function(_0x3f84ab){if(_0x3f84ab){_0x35b601['body']['MailAccountId']=_0x3f84ab['id'];return db['MailServerIn'][_0x0024('0x6e')](_0x35b601[_0x0024('0x60')]);}})[_0x0024('0x12')](respondWithResult(_0x3c8a3a,null))[_0x0024('0x1a')](handleError(_0x3c8a3a,null));};exports['removeImap']=function(_0x456a6c,_0x11bf2e){return db[_0x0024('0x46')][_0x0024('0x70')]({'where':{'id':_0x456a6c['params']['id']}})[_0x0024('0x12')](handleEntityNotFound(_0x11bf2e,null))[_0x0024('0x12')](function(_0x50e690){if(_0x50e690){return _0x50e690[_0x0024('0x7d')](null);}return null;})[_0x0024('0x12')](respondWithStatusCode(_0x11bf2e,null))['catch'](handleError(_0x11bf2e,null));};exports['getSmtp']=function(_0x32b91f,_0x875d7a){return db[_0x0024('0x46')][_0x0024('0x70')]({'where':{'id':_0x32b91f[_0x0024('0x5a')]['id']}})[_0x0024('0x12')](handleEntityNotFound(_0x875d7a,null))[_0x0024('0x12')](function(_0x5376f4){if(_0x5376f4){return _0x5376f4[_0x0024('0x7e')]();}return null;})[_0x0024('0x12')](respondWithResult(_0x875d7a,null))[_0x0024('0x1a')](handleError(_0x875d7a,null));};exports[_0x0024('0x7f')]=function(_0xdca1fb,_0x5c178c){if(_0xdca1fb[_0x0024('0x60')]['id']){delete _0xdca1fb[_0x0024('0x60')]['id'];}return db[_0x0024('0x46')][_0x0024('0x5f')]({'where':{'id':_0xdca1fb['params']['id']}})[_0x0024('0x12')](handleEntityNotFound(_0x5c178c,null))[_0x0024('0x12')](function(_0x990ef1){if(_0x990ef1){_0xdca1fb[_0x0024('0x60')][_0x0024('0x68')]=_0x990ef1['id'];return db['MailServerOut'][_0x0024('0x6e')](_0xdca1fb[_0x0024('0x60')]);}})[_0x0024('0x12')](respondWithResult(_0x5c178c,null))[_0x0024('0x1a')](handleError(_0x5c178c,null));};exports[_0x0024('0x80')]=function(_0x559781,_0x10398b){return db[_0x0024('0x46')]['findOne']({'where':{'id':_0x559781[_0x0024('0x5a')]['id']}})[_0x0024('0x12')](handleEntityNotFound(_0x10398b,null))[_0x0024('0x12')](function(_0x4219df){if(_0x4219df){return _0x4219df[_0x0024('0x81')](null);}return null;})[_0x0024('0x12')](respondWithStatusCode(_0x10398b,null))[_0x0024('0x1a')](handleError(_0x10398b,null));};exports['addInteraction']=function(_0x4b085e,_0xf0b7dc){return db['MailInteraction'][_0x0024('0x5f')]({'where':{'id':_0x4b085e['params']['id']}})[_0x0024('0x12')](handleEntityNotFound(_0xf0b7dc,null))[_0x0024('0x12')](function(_0x18d411){if(_0x18d411){return _0x18d411['addInteraction'](_0x4b085e[_0x0024('0x60')][_0x0024('0x6b')],_[_0x0024('0x82')](_0x4b085e['body'],[_0x0024('0x6b'),'id'])||{});}})[_0x0024('0x12')](respondWithResult(_0xf0b7dc,null))[_0x0024('0x1a')](handleError(_0xf0b7dc,null));};exports['getInteractions']=function(_0x1b1fef,_0x12489b){var _0x1fba76={'raw':![],'where':{}};var _0x25b11e={};var _0x5b1ff4={'count':0x0,'rows':[]};return db[_0x0024('0x46')][_0x0024('0x70')]({'where':{'id':_0x1b1fef[_0x0024('0x5a')]['id']}})['then'](handleEntityNotFound(_0x12489b,null))['then'](function(_0x325a27){if(_0x325a27){_0x25b11e[_0x0024('0x4c')]=_[_0x0024('0x49')](db[_0x0024('0x83')][_0x0024('0x66')]);_0x25b11e[_0x0024('0x4a')]=_[_0x0024('0x49')](_0x1b1fef['query']);_0x25b11e[_0x0024('0x5c')]=_[_0x0024('0x4b')](_0x25b11e['model'],_0x25b11e[_0x0024('0x4a')]);_0x1fba76[_0x0024('0x4d')]=_[_0x0024('0x4b')](_0x25b11e[_0x0024('0x4c')],qs['fields'](_0x1b1fef[_0x0024('0x4a')][_0x0024('0x5d')]));_0x1fba76[_0x0024('0x4d')]=_0x1fba76[_0x0024('0x4d')]['length']?_0x1fba76[_0x0024('0x4d')]:_0x25b11e[_0x0024('0x4c')];if(!_0x1b1fef['query'][_0x0024('0x71')](_0x0024('0x67'))){_0x1fba76['limit']=qs[_0x0024('0x1f')](_0x1b1fef[_0x0024('0x4a')][_0x0024('0x1f')]);_0x1fba76[_0x0024('0x1e')]=qs['offset'](_0x1b1fef[_0x0024('0x4a')][_0x0024('0x1e')]);}_0x1fba76['order']=qs['sort'](_0x1b1fef[_0x0024('0x4a')][_0x0024('0x50')]);_0x1fba76[_0x0024('0x51')]=qs[_0x0024('0x5c')](_[_0x0024('0x52')](_0x1b1fef['query'],_0x25b11e['filters']));_0x1fba76[_0x0024('0x51')][_0x0024('0x68')]=_0x325a27['id'];if(_0x1b1fef[_0x0024('0x4a')][_0x0024('0x53')]){_0x1fba76['where']=_[_0x0024('0x54')](_0x1fba76[_0x0024('0x51')],{'$or':_[_0x0024('0x45')](_0x1fba76[_0x0024('0x4d')],function(_0x2735f6){var _0x9e3419={};_0x9e3419[_0x2735f6]={'$like':'%'+_0x1b1fef[_0x0024('0x4a')][_0x0024('0x53')]+'%'};return _0x9e3419;})});}_0x1fba76=_[_0x0024('0x54')]({},_0x1fba76,_0x1b1fef[_0x0024('0x56')]);return db[_0x0024('0x83')][_0x0024('0x20')]({'where':_0x1fba76[_0x0024('0x51')]})[_0x0024('0x12')](function(_0x45eef0){_0x5b1ff4[_0x0024('0x20')]=_0x45eef0;if(_0x1b1fef[_0x0024('0x4a')][_0x0024('0x57')]){_0x1fba76[_0x0024('0x5e')]=[{'model':db[_0x0024('0x84')],'as':_0x0024('0x85'),'required':![]},{'model':db[_0x0024('0x86')],'as':_0x0024('0x87'),'attributes':['name','fullname',_0x0024('0x88')],'required':![]},{'model':db[_0x0024('0x89')],'as':_0x0024('0x8a'),'attributes':['id',_0x0024('0x28'),'color'],'where':_0x1b1fef['query']['tag']?{'id':_0x1b1fef[_0x0024('0x4a')][_0x0024('0x8b')]}:undefined,'required':_0x1b1fef['query'][_0x0024('0x8b')]?!![]:![]}];}return db[_0x0024('0x83')][_0x0024('0x58')](_0x1fba76);})[_0x0024('0x12')](function(_0x25f797){_0x5b1ff4[_0x0024('0x69')]=_0x25f797;return _0x5b1ff4;});}})[_0x0024('0x12')](respondWithFilteredResult(_0x12489b,_0x1fba76))['catch'](handleError(_0x12489b,null));};exports[_0x0024('0x8c')]=function addApplications(_0x51ad29,_0x154dbd){var _0x18cf93=_0x51ad29[_0x0024('0x5a')]['id'];var _0x19c911=_0x51ad29[_0x0024('0x60')];var _0x52c535=0xc8;var _0x21bf17=null;return db['sequelize'][_0x0024('0x8d')]({'isolationLevel':db[_0x0024('0x8e')][_0x0024('0x8f')][_0x0024('0x90')]['READ_COMMITTED']},function(_0x2eb0d9){return db[_0x0024('0x46')][_0x0024('0x70')]({'where':{'id':_0x18cf93},'transaction':_0x2eb0d9})[_0x0024('0x12')](function(_0x568a85){if(_0x568a85){return db[_0x0024('0x91')][_0x0024('0x24')]({'where':{'MailAccountId':_0x18cf93},'transaction':_0x2eb0d9})[_0x0024('0x12')](function(){var _0x5a2e24=_[_0x0024('0x45')](_0x19c911,function(_0x34ffc4){_0x34ffc4[_0x0024('0x68')]=_0x18cf93;return _0x34ffc4;});return db[_0x0024('0x91')]['bulkCreate'](_0x5a2e24,{'transaction':_0x2eb0d9});});}else{_0x52c535=0x194;_0x21bf17=[];}});})[_0x0024('0x12')](function(){if(_0x52c535!==0x194){return db[_0x0024('0x91')][_0x0024('0x92')]({'where':{'MailAccountId':_0x18cf93},'order':_0x0024('0x93')})[_0x0024('0x12')](function(_0x38851c){_0x21bf17=_0x38851c;});}})[_0x0024('0x1a')](function(_0x2cd6d9){_0x52c535=0x1f4;logger[_0x0024('0x16')](_0x2cd6d9['stack']);if(_0x2cd6d9[_0x0024('0x28')]){delete _0x2cd6d9[_0x0024('0x28')];}_0x21bf17=_0x2cd6d9;})[_0x0024('0x94')](function(){if(_0x21bf17===null){_0x154dbd[_0x0024('0x1b')](_0x52c535);}else{if(_0x52c535===0x1f4){_0x154dbd[_0x0024('0x1c')](_0x52c535)[_0x0024('0x29')](_0x21bf17);}else{_0x154dbd[_0x0024('0x1c')](_0x52c535)['json'](_0x21bf17);}}});};exports[_0x0024('0x95')]=function(_0x46a7e8,_0x4318f3){var _0x235620={};var _0xfb94de={};var _0x553c88;var _0x1eb0ea;return db[_0x0024('0x46')]['findOne']({'where':{'id':_0x46a7e8[_0x0024('0x5a')]['id']}})['then'](handleEntityNotFound(_0x4318f3,null))['then'](function(_0x503578){if(_0x503578){_0x553c88=_0x503578;_0xfb94de['model']=_[_0x0024('0x49')](db[_0x0024('0x91')][_0x0024('0x66')]);_0xfb94de[_0x0024('0x4a')]=_['keys'](_0x46a7e8[_0x0024('0x4a')]);_0xfb94de['filters']=_[_0x0024('0x4b')](_0xfb94de['model'],_0xfb94de[_0x0024('0x4a')]);_0x235620[_0x0024('0x4d')]=_[_0x0024('0x4b')](_0xfb94de[_0x0024('0x4c')],qs[_0x0024('0x5d')](_0x46a7e8[_0x0024('0x4a')][_0x0024('0x5d')]));_0x235620['attributes']=_0x235620['attributes'][_0x0024('0x4e')]?_0x235620[_0x0024('0x4d')]:_0xfb94de[_0x0024('0x4c')];_0x235620[_0x0024('0x4f')]=qs[_0x0024('0x50')](_0x46a7e8[_0x0024('0x4a')][_0x0024('0x50')]);_0x235620[_0x0024('0x51')]=qs['filters'](_[_0x0024('0x52')](_0x46a7e8[_0x0024('0x4a')],_0xfb94de[_0x0024('0x5c')]));if(_0x46a7e8[_0x0024('0x4a')]['filter']){_0x235620['where']=_[_0x0024('0x54')](_0x235620[_0x0024('0x51')],{'$or':_[_0x0024('0x45')](_0x235620[_0x0024('0x4d')],function(_0x571439){var _0x31eae0={};_0x31eae0[_0x571439]={'$like':'%'+_0x46a7e8['query'][_0x0024('0x53')]+'%'};return _0x31eae0;})});}_0x235620=_['merge']({},_0x235620,_0x46a7e8[_0x0024('0x56')]);return _0x553c88[_0x0024('0x95')](_0x235620);}})[_0x0024('0x12')](function(_0x23dcf3){if(_0x23dcf3){_0x1eb0ea=_0x23dcf3[_0x0024('0x4e')];if(!_0x46a7e8['query']['hasOwnProperty']('nolimit')){_0x235620[_0x0024('0x1f')]=qs['limit'](_0x46a7e8[_0x0024('0x4a')][_0x0024('0x1f')]);_0x235620['offset']=qs[_0x0024('0x1e')](_0x46a7e8[_0x0024('0x4a')][_0x0024('0x1e')]);}return _0x553c88[_0x0024('0x95')](_0x235620);}})[_0x0024('0x12')](function(_0x2480f2){if(_0x2480f2){return _0x2480f2?{'count':_0x1eb0ea,'rows':_0x2480f2}:null;}})[_0x0024('0x12')](respondWithResult(_0x4318f3,null))['catch'](handleError(_0x4318f3,null));};exports['getMessages']=function(_0x17916e,_0x190210){var _0x358976={'raw':!![],'where':{}};var _0x478d85={};var _0x13679a={'count':0x0,'rows':[]};return db['MailAccount'][_0x0024('0x70')]({'where':{'id':_0x17916e['params']['id']}})[_0x0024('0x12')](handleEntityNotFound(_0x190210,null))[_0x0024('0x12')](function(_0x577dd5){if(_0x577dd5){_0x478d85[_0x0024('0x4c')]=_['keys'](db['MailMessage'][_0x0024('0x66')]);_0x478d85[_0x0024('0x4a')]=_[_0x0024('0x49')](_0x17916e[_0x0024('0x4a')]);_0x478d85[_0x0024('0x5c')]=_[_0x0024('0x4b')](_0x478d85[_0x0024('0x4c')],_0x478d85['query']);_0x358976['attributes']=_[_0x0024('0x4b')](_0x478d85[_0x0024('0x4c')],qs[_0x0024('0x5d')](_0x17916e[_0x0024('0x4a')][_0x0024('0x5d')]));_0x358976[_0x0024('0x4d')]=_0x358976[_0x0024('0x4d')][_0x0024('0x4e')]?_0x358976[_0x0024('0x4d')]:_0x478d85[_0x0024('0x4c')];if(!_0x17916e[_0x0024('0x4a')]['hasOwnProperty'](_0x0024('0x67'))){_0x358976['limit']=qs[_0x0024('0x1f')](_0x17916e[_0x0024('0x4a')][_0x0024('0x1f')]);_0x358976[_0x0024('0x1e')]=qs[_0x0024('0x1e')](_0x17916e['query'][_0x0024('0x1e')]);}_0x358976[_0x0024('0x4f')]=qs[_0x0024('0x50')](_0x17916e[_0x0024('0x4a')][_0x0024('0x50')]);_0x358976[_0x0024('0x51')]=qs[_0x0024('0x5c')](_[_0x0024('0x52')](_0x17916e[_0x0024('0x4a')],_0x478d85[_0x0024('0x5c')]));_0x358976['where'][_0x0024('0x68')]=_0x577dd5['id'];if(_0x17916e[_0x0024('0x4a')]['filter']){_0x358976[_0x0024('0x51')]=_['merge'](_0x358976['where'],{'$or':_[_0x0024('0x45')](_0x358976['attributes'],function(_0x55adf2){var _0x514aef={};_0x514aef[_0x55adf2]={'$like':'%'+_0x17916e[_0x0024('0x4a')][_0x0024('0x53')]+'%'};return _0x514aef;})});}if(_0x17916e[_0x0024('0x4a')][_0x0024('0x96')]){var _0x2c19ca=_0x17916e[_0x0024('0x4a')]['$gte'][_0x0024('0x97')](',');var _0x38fda6={};_0x38fda6[_0x2c19ca[0x0]]={'$gte':moment(_0x2c19ca[0x1])['format'](_0x0024('0x98'))};_0x358976['where']=_[_0x0024('0x54')](_0x358976[_0x0024('0x51')],_0x38fda6);}_0x358976=_['merge']({},_0x358976,_0x17916e[_0x0024('0x56')]);return db[_0x0024('0x99')][_0x0024('0x20')]({'where':_0x358976[_0x0024('0x51')]})[_0x0024('0x12')](function(_0x3649b3){_0x13679a['count']=_0x3649b3;if(_0x17916e[_0x0024('0x4a')][_0x0024('0x57')]){_0x358976[_0x0024('0x5e')]=[{'all':!![]}];}return db[_0x0024('0x99')]['findAll'](_0x358976);})['then'](function(_0x34a677){if(_0x17916e['query'][_0x0024('0x9a')]===_0x0024('0x9b')){for(var _0xc6ac0c=0x0;_0xc6ac0c<_0x34a677['length'];_0xc6ac0c++){_0x34a677[_0xc6ac0c][_0x0024('0x60')]=juice(_0x34a677[_0xc6ac0c]['body']);}}_0x13679a['rows']=_0x34a677;return _0x13679a;});}})[_0x0024('0x12')](respondWithFilteredResult(_0x190210,_0x358976))[_0x0024('0x1a')](handleError(_0x190210,null));};exports['send']=function(_0xa16bea,_0x3d38f2){var _0x1af651,_0x4dba7d={},_0x3233a4;if(_0xa16bea[_0x0024('0x60')]['to']){_0x3233a4=_0xa16bea[_0x0024('0x60')]['to'][_0x0024('0x97')](',')[0x0];}return db[_0x0024('0x46')]['find']({'where':{'id':_0xa16bea[_0x0024('0x5a')]['id']},'include':[{'model':db[_0x0024('0x9c')],'as':_0x0024('0x9d'),'include':[{'model':db[_0x0024('0x84')],'as':_0x0024('0x9e'),'where':{'email':_0x3233a4},'limit':0x1,'order':[['updatedAt','DESC']]}]},{'model':db['MailServerOut'],'as':_0x0024('0x40'),'raw':!![],'include':[{'model':db[_0x0024('0x9f')],'as':'CloudProvider','raw':!![]}]}]})['then'](handleEntityNotFound(_0x3d38f2,null))['then'](function(_0x2a5e5c){if(!_0x2a5e5c)return;_0x1af651=_0x2a5e5c;if(!_0x2a5e5c[_0x0024('0x40')])throw new Error(_0x0024('0xa0'));if(_['isNil'](_0xa16bea['body'][_0x0024('0xa1')])){_0xa16bea['body'][_0x0024('0xa1')]=util[_0x0024('0xa2')](_0x0024('0xa3'),_0x2a5e5c[_0x0024('0x28')],_0x2a5e5c[_0x0024('0xa4')]||_0x2a5e5c[_0x0024('0x40')]['user']);}if(_0xa16bea[_0x0024('0x60')][_0x0024('0xa5')]&&_0xa16bea[_0x0024('0x60')][_0x0024('0xa5')][_0x0024('0x4e')]){for(var _0x53a414=0x0;_0x53a414<_0xa16bea[_0x0024('0x60')][_0x0024('0xa5')][_0x0024('0x4e')];_0x53a414+=0x1){_0xa16bea['body'][_0x0024('0xa5')][_0x53a414]={'filename':_0xa16bea[_0x0024('0x60')][_0x0024('0xa5')][_0x53a414]['name'],'path':path['join'](config[_0x0024('0xa6')],_0x0024('0xa7'),_0xa16bea[_0x0024('0x60')][_0x0024('0xa5')][_0x53a414][_0x0024('0xa8')])};}}var _0x5b09f5=_0x2a5e5c['getSmtpOptions']();return respondWithRpcPromise(_0x0024('0xa9'),_0x0024('0xaa'),{'account':_0x5b09f5,'message':_0xa16bea[_0x0024('0x60')]});})[_0x0024('0x12')](function(_0xead630){if(!_0xead630)return;_0x4dba7d=_0xead630;if(!_0x1af651[_0x0024('0x9d')])throw new Error(_0x0024('0xab'));if(_0x1af651[_0x0024('0x9d')][_0x0024('0x9e')][_0x0024('0x4e')])return _0x1af651[_0x0024('0x9d')][_0x0024('0x9e')][0x0];return db['CmContact'][_0x0024('0x6e')](_['defaults'](_0xa16bea['body'],{'firstName':_0xa16bea['body']['to'],'email':_0xa16bea['body']['to'],'phone':_0xa16bea['body']['to'],'ListId':_0x1af651['ListId']}));})['then'](function(_0x4779fd){if(!_0x4779fd)return;var _0x5ec3f0={'UserId':_0xa16bea[_0x0024('0x35')]['id'],'ContactId':_0x4779fd['id'],'MailAccountId':_0x1af651['id'],'inReplyTo':_0x4dba7d[_0x0024('0xac')],'to':_0xa16bea[_0x0024('0x60')][_0x0024('0xa1')],'cc':_0xa16bea[_0x0024('0x60')]['cc'],'subject':_0xa16bea[_0x0024('0x60')][_0x0024('0xad')],'attach':_0xa16bea[_0x0024('0x60')][_0x0024('0xae')],'firstMsgDirection':'out','lastMsgAt':moment()[_0x0024('0xa2')](_0x0024('0x98')),'lastMsgDirection':'out','Messages':[_[_0x0024('0x54')](_0xa16bea[_0x0024('0x60')],{'messageId':_0x4dba7d[_0x0024('0xac')],'sentAt':moment()[_0x0024('0xa2')]('YYYY-MM-DD\x20HH:mm:ss'),'read':!![],'MailAccountId':_0x1af651['id'],'UserId':_0xa16bea['user']['id'],'ContactId':_0x4779fd['id']})]};if(_0xa16bea[_0x0024('0x60')]['Interaction']){_0x5ec3f0=_[_0x0024('0x54')](_0x5ec3f0,_0xa16bea[_0x0024('0x60')][_0x0024('0xaf')]);}return db['MailInteraction'][_0x0024('0x6e')](_0x5ec3f0,{'include':[{'model':db[_0x0024('0x99')],'as':_0x0024('0xb0')}]});})[_0x0024('0x12')](respondWithResult(_0x3d38f2,null))[_0x0024('0x1a')](handleError(_0x3d38f2,null));};exports[_0x0024('0xb1')]=function(_0x53d1c3,_0x28569f){return db[_0x0024('0x46')][_0x0024('0x5f')]({'where':{'id':_0x53d1c3[_0x0024('0x5a')]['id']},'include':[{'model':db['MailServerOut'],'as':'Smtp','raw':!![],'include':[{'model':db[_0x0024('0x9f')],'as':'CloudProvider','raw':!![]}]}]})[_0x0024('0x12')](handleEntityNotFound(_0x28569f,null))[_0x0024('0x12')](function(_0x412763){if(!_0x412763[_0x0024('0x40')])return;var _0x2310dc=_0x412763[_0x0024('0xb2')]();return respondWithRpcPromise(_0x0024('0xb3'),_0x0024('0xb1'),{'account':_0x2310dc});})[_0x0024('0x12')](respondWithResult(_0x28569f,null))['catch'](handleError(_0x28569f,null));};exports[_0x0024('0x24')]=function(_0x19b3ef,_0x33f78c){return db[_0x0024('0x46')][_0x0024('0x5f')]({'where':{'id':_0x19b3ef[_0x0024('0x5a')]['id']}})['then'](handleEntityNotFound(_0x33f78c,null))[_0x0024('0x12')](function(_0x244e85){if(_0x244e85&&_0x244e85[_0x0024('0x3d')]){throw new db[(_0x0024('0xb4'))]['ValidationError'](_0x0024('0xb5'));}return _0x244e85;})['then'](removeEntity(_0x33f78c,null))[_0x0024('0x1a')](handleError(_0x33f78c,null));};exports['addAgents']=function(_0x17eea2,_0x37b498){return db[_0x0024('0x46')]['find']({'where':{'id':_0x17eea2[_0x0024('0x5a')]['id']}})[_0x0024('0x12')](handleEntityNotFound(_0x37b498,null))[_0x0024('0x12')](function(_0x322da8){if(_0x322da8){return _0x322da8[_0x0024('0xb6')](_0x17eea2['body']['ids'],_[_0x0024('0x82')](_0x17eea2[_0x0024('0x60')],['ids','id'])||{})['spread'](function(_0x215fe4){for(var _0x5002c2=0x0;_0x5002c2<_0x17eea2[_0x0024('0x60')][_0x0024('0x6b')]['length'];_0x5002c2+=0x1){socket[_0x0024('0xb7')]('userMailAccount:save',{'UserId':Number(_0x17eea2[_0x0024('0x60')][_0x0024('0x6b')][_0x5002c2]),'MailAccountId':Number(_0x17eea2[_0x0024('0x5a')]['id'])});}return _0x215fe4;});}})[_0x0024('0x12')](respondWithResult(_0x37b498,null))[_0x0024('0x1a')](handleError(_0x37b498,null));};exports['removeAgents']=function(_0x3bd559,_0x3710f1){return db[_0x0024('0x46')][_0x0024('0x5f')]({'where':{'id':_0x3bd559[_0x0024('0x5a')]['id']}})[_0x0024('0x12')](handleEntityNotFound(_0x3710f1,null))['then'](function(_0x2cf0a2){if(_0x2cf0a2){return _0x2cf0a2[_0x0024('0xb8')](_0x3bd559['query']['ids'])[_0x0024('0x12')](function(){if(_[_0x0024('0xb9')](_0x3bd559['query'][_0x0024('0x6b')])){for(var _0x55bbdf=0x0;_0x55bbdf<_0x3bd559[_0x0024('0x4a')][_0x0024('0x6b')][_0x0024('0x4e')];_0x55bbdf+=0x1){socket['emit']('userMailAccount:remove',{'UserId':Number(_0x3bd559[_0x0024('0x4a')]['ids'][_0x55bbdf]),'MailAccountId':Number(_0x3bd559[_0x0024('0x5a')]['id'])});}}else{socket[_0x0024('0xb7')](_0x0024('0xba'),{'UserId':Number(_0x3bd559[_0x0024('0x4a')][_0x0024('0x6b')]),'MailAccountId':Number(_0x3bd559[_0x0024('0x5a')]['id'])});}});}})[_0x0024('0x12')](respondWithStatusCode(_0x3710f1,null))[_0x0024('0x1a')](handleError(_0x3710f1,null));};exports['getAgents']=function(_0x4dec58,_0x4b0fce){var _0x3bfd2d={};var _0x12292c={};var _0x2441a3;var _0x252224;return db[_0x0024('0x46')][_0x0024('0x70')]({'where':{'id':_0x4dec58[_0x0024('0x5a')]['id']}})[_0x0024('0x12')](handleEntityNotFound(_0x4b0fce,null))[_0x0024('0x12')](function(_0x2f77d1){if(_0x2f77d1){_0x2441a3=_0x2f77d1;_0x12292c[_0x0024('0x4c')]=_['keys'](db['User'][_0x0024('0x66')]);_0x12292c[_0x0024('0x4a')]=_[_0x0024('0x49')](_0x4dec58[_0x0024('0x4a')]);_0x12292c['filters']=_['intersection'](_0x12292c['model'],_0x12292c[_0x0024('0x4a')]);_0x3bfd2d[_0x0024('0x4d')]=_[_0x0024('0x4b')](_0x12292c[_0x0024('0x4c')],qs[_0x0024('0x5d')](_0x4dec58[_0x0024('0x4a')]['fields']));_0x3bfd2d[_0x0024('0x4d')]=_0x3bfd2d[_0x0024('0x4d')]['length']?_0x3bfd2d[_0x0024('0x4d')]:_0x12292c[_0x0024('0x4c')];_0x3bfd2d[_0x0024('0x4f')]=qs[_0x0024('0x50')](_0x4dec58['query'][_0x0024('0x50')]);_0x3bfd2d[_0x0024('0x51')]=qs['filters'](_[_0x0024('0x52')](_0x4dec58['query'],_0x12292c[_0x0024('0x5c')]));if(_0x4dec58[_0x0024('0x4a')][_0x0024('0x53')]){_0x3bfd2d[_0x0024('0x51')]=_[_0x0024('0x54')](_0x3bfd2d['where'],{'$or':_[_0x0024('0x45')](_0x3bfd2d[_0x0024('0x4d')],function(_0x1445fc){var _0x1d2309={};_0x1d2309[_0x1445fc]={'$like':'%'+_0x4dec58['query'][_0x0024('0x53')]+'%'};return _0x1d2309;})});}_0x3bfd2d=_[_0x0024('0x54')]({},_0x3bfd2d,_0x4dec58[_0x0024('0x56')]);return _0x2441a3[_0x0024('0xbb')](_0x3bfd2d);}})['then'](function(_0x525e29){if(_0x525e29){_0x252224=_0x525e29['length'];if(!_0x4dec58[_0x0024('0x4a')][_0x0024('0x71')](_0x0024('0x67'))){_0x3bfd2d[_0x0024('0x1f')]=qs[_0x0024('0x1f')](_0x4dec58['query'][_0x0024('0x1f')]);_0x3bfd2d[_0x0024('0x1e')]=qs[_0x0024('0x1e')](_0x4dec58[_0x0024('0x4a')]['offset']);}return _0x2441a3[_0x0024('0xbb')](_0x3bfd2d);}})['then'](function(_0x5d134a){if(_0x5d134a){return _0x5d134a?{'count':_0x252224,'rows':_0x5d134a}:null;}})[_0x0024('0x12')](respondWithResult(_0x4b0fce,null))[_0x0024('0x1a')](handleError(_0x4b0fce,null));};
\ No newline at end of file
index 7308562..ff290d6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0xadbb=['save','update','remove','emit','hasOwnProperty','hook','exports','events','setMaxListeners'];(function(_0x5b1b4d,_0x1f4fbd){var _0x5892d5=function(_0x4ea289){while(--_0x4ea289){_0x5b1b4d['push'](_0x5b1b4d['shift']());}};_0x5892d5(++_0x1f4fbd);}(_0xadbb,0x97));var _0xbadb=function(_0x3947c9,_0x4d6c97){_0x3947c9=_0x3947c9-0x0;var _0x2e7871=_0xadbb[_0x3947c9];return _0x2e7871;};'use strict';var EventEmitter=require(_0xbadb('0x0'));var MailAccount=require('../../mysqldb')['db']['MailAccount'];var MailAccountEvents=new EventEmitter();MailAccountEvents[_0xbadb('0x1')](0x0);var events={'afterCreate':_0xbadb('0x2'),'afterUpdate':_0xbadb('0x3'),'afterDestroy':_0xbadb('0x4')};function emitEvent(_0x20fe2b){return function(_0x36d79f,_0x232761,_0x11944d){MailAccountEvents[_0xbadb('0x5')](_0x20fe2b+':'+_0x36d79f['id'],_0x36d79f);MailAccountEvents[_0xbadb('0x5')](_0x20fe2b,_0x36d79f);_0x11944d(null);};}for(var e in events){if(events[_0xbadb('0x6')](e)){var event=events[e];MailAccount[_0xbadb('0x7')](e,emitEvent(event));}}module[_0xbadb('0x8')]=MailAccountEvents;
\ No newline at end of file
index 892ae03..2c0b084 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0xae06=['Smtp','port','modernAuthentication','CloudProvider','Cloud\x20Provider\x20configuration\x20not\x20found','auth','OAuth2','user','data5','pass','./mailAccount.attributes','exports','define','MailAccount','mail_accounts','provider','custom','service','host'];(function(_0xb26065,_0x36df08){var _0x974dce=function(_0x1b5ace){while(--_0x1b5ace){_0xb26065['push'](_0xb26065['shift']());}};_0x974dce(++_0x36df08);}(_0xae06,0x14d));var _0x6ae0=function(_0x8b03fa,_0xd2a04b){_0x8b03fa=_0x8b03fa-0x0;var _0x338179=_0xae06[_0x8b03fa];return _0x338179;};'use strict';var attributes=require(_0x6ae0('0x0'));module[_0x6ae0('0x1')]=function(_0x1d4917){return _0x1d4917[_0x6ae0('0x2')](_0x6ae0('0x3'),attributes,{'tableName':_0x6ae0('0x4'),'paranoid':![],'indexes':[],'timestamps':!![],'instanceMethods':{'getSmtpOptions':function(){var _0x50ddb7=this;var _0xf4407a={'id':_0x50ddb7['id'],'tls':{'rejectUnauthorized':![]}};if(_0x50ddb7[_0x6ae0('0x5')]!==_0x6ae0('0x6')){_0xf4407a[_0x6ae0('0x7')]=_0x50ddb7[_0x6ae0('0x5')];}else{_0xf4407a[_0x6ae0('0x8')]=_0x50ddb7[_0x6ae0('0x9')][_0x6ae0('0x8')];_0xf4407a[_0x6ae0('0xa')]=_0x50ddb7[_0x6ae0('0x9')][_0x6ae0('0xa')];_0xf4407a['secure']=_0x50ddb7['Smtp']['secure'];}if(_0x50ddb7[_0x6ae0('0x9')]['authentication']){if(_0x50ddb7[_0x6ae0('0x9')][_0x6ae0('0xb')]){if(!_0x50ddb7[_0x6ae0('0x9')][_0x6ae0('0xc')])throw new Error(_0x6ae0('0xd'));_0xf4407a[_0x6ae0('0xe')]={'type':_0x6ae0('0xf'),'user':_0x50ddb7[_0x6ae0('0x9')][_0x6ae0('0x10')],'accessToken':_0x50ddb7[_0x6ae0('0x9')][_0x6ae0('0xc')][_0x6ae0('0x11')]};}else{_0xf4407a[_0x6ae0('0xe')]={'user':_0x50ddb7['Smtp'][_0x6ae0('0x10')],'pass':_0x50ddb7[_0x6ae0('0x9')][_0x6ae0('0x12')]};}}return _0xf4407a;}}});};
\ No newline at end of file
index 732e2f1..e8a6faa 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0x5f66=['../../config/logger','rpc','jayson/promise','http','redis','localhost','socket.io-emitter','./mailAccount.socket','register','request','then','info','debug','request\x20sent','error','code','MailAccount,\x20%s,\x20%s','message','result','catch','GetMailAccount','MailAccount','options','raw','where','limit','include','map','model','attributes','stringify','find','smtp','smtpOptions','ShowMailAccount','NotifyMailAccount','body','mail','difference','keys','CmContact','rawAttributes','createdAt','CompanyId','ListId','isNil','from','from\x20is\x20mandatory','mapKey','includes','mapKey\x20invalid,\x20please\x20use\x20one\x20of\x20these:\x20','account','List','Contacts','updatedAt','DESC','MailApplication','Applications','MailServerOut','CloudProvider','get','omit','getSmtpOptions','list','applications','orderBy','priority','autoclose','push','close','defaults','List\x20not\x20found','contact','messageId','generate','subject','attach','format','MailInteraction','Messages','inReplyTo','Contact\x20not\x20found','spread','YYYY-MM-DD\x20HH:mm:ss','interaction','MailMessage','create','attachments','originTo','originCc','ChatWebsiteId','originChannel','ChatOfflineMessageId','Attachment','UserId','name','unshift','agent','*,*,*,*','startRouting','Start','moment','randomstring','ioredis','../../mysqldb'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x5f66,0x1a0));var _0x65f6=function(_0x297fd3,_0x115406){_0x297fd3=_0x297fd3-0x0;var _0x2af381=_0x5f66[_0x297fd3];return _0x2af381;};'use strict';var _=require('lodash');var moment=require(_0x65f6('0x0'));var BPromise=require('bluebird');var rs=require(_0x65f6('0x1'));var Redis=require(_0x65f6('0x2'));var db=require(_0x65f6('0x3'))['db'];var logger=require(_0x65f6('0x4'))(_0x65f6('0x5'));var config=require('../../config/environment');var jayson=require(_0x65f6('0x6'));var client=jayson['client'][_0x65f6('0x7')]({'port':0x232c});config[_0x65f6('0x8')]=_['defaults'](config['redis'],{'host':_0x65f6('0x9'),'port':0x18eb});var socket=require(_0x65f6('0xa'))(new Redis(config[_0x65f6('0x8')]));require(_0x65f6('0xb'))[_0x65f6('0xc')](socket);function respondWithRpcPromise(_0x14f4c7,_0x48d85c,_0x5123ee){return new BPromise(function(_0x18fea1,_0x2f6d5b){return client[_0x65f6('0xd')](_0x14f4c7,_0x5123ee)[_0x65f6('0xe')](function(_0x50d26d){logger[_0x65f6('0xf')]('MailAccount,\x20%s,\x20%s',_0x48d85c,'request\x20sent');logger[_0x65f6('0x10')]('MailAccount,\x20%s,\x20%s,\x20%s',_0x48d85c,_0x65f6('0x11'),JSON['stringify'](_0x50d26d));if(_0x50d26d[_0x65f6('0x12')]){if(_0x50d26d[_0x65f6('0x12')][_0x65f6('0x13')]===0x1f4){logger[_0x65f6('0x12')](_0x65f6('0x14'),_0x48d85c,_0x50d26d[_0x65f6('0x12')][_0x65f6('0x15')]);return _0x2f6d5b(_0x50d26d[_0x65f6('0x12')][_0x65f6('0x15')]);}logger[_0x65f6('0x12')]('MailAccount,\x20%s,\x20%s',_0x48d85c,_0x50d26d[_0x65f6('0x12')]['message']);return _0x18fea1(_0x50d26d['error'][_0x65f6('0x15')]);}else{logger[_0x65f6('0xf')](_0x65f6('0x14'),_0x48d85c,_0x65f6('0x11'));_0x18fea1(_0x50d26d[_0x65f6('0x16')][_0x65f6('0x15')]);}})[_0x65f6('0x17')](function(_0x18380e){logger['error']('MailAccount,\x20%s,\x20%s',_0x48d85c,_0x18380e);_0x2f6d5b(_0x18380e);});});}exports[_0x65f6('0x18')]=function(_0x5b4055){var _0x4c81f3=this;return new Promise(function(_0x5c5b91,_0x365159){return db[_0x65f6('0x19')]['findAll']({'raw':_0x5b4055[_0x65f6('0x1a')]?_0x5b4055[_0x65f6('0x1a')][_0x65f6('0x1b')]===undefined?!![]:![]:!![],'where':_0x5b4055[_0x65f6('0x1a')]?_0x5b4055[_0x65f6('0x1a')][_0x65f6('0x1c')]||null:null,'attributes':_0x5b4055['options']?_0x5b4055[_0x65f6('0x1a')]['attributes']||null:null,'limit':_0x5b4055['options']?_0x5b4055[_0x65f6('0x1a')][_0x65f6('0x1d')]||null:null,'include':_0x5b4055['options']?_0x5b4055[_0x65f6('0x1a')][_0x65f6('0x1e')]?_[_0x65f6('0x1f')](_0x5b4055[_0x65f6('0x1a')]['include'],function(_0x9d7bb0){return{'model':db[_0x9d7bb0[_0x65f6('0x20')]],'as':_0x9d7bb0['as'],'attributes':_0x9d7bb0[_0x65f6('0x21')],'include':_0x9d7bb0['include']?_['map'](_0x9d7bb0['include'],function(_0x29abdb){return{'model':db[_0x29abdb[_0x65f6('0x20')]],'as':_0x29abdb['as'],'attributes':_0x29abdb['attributes'],'include':_0x29abdb[_0x65f6('0x1e')]?_[_0x65f6('0x1f')](_0x29abdb['include'],function(_0x325cb4){return{'model':db[_0x325cb4[_0x65f6('0x20')]],'as':_0x325cb4['as'],'attributes':_0x325cb4[_0x65f6('0x21')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x4ac04b){logger['info'](_0x65f6('0x18'),_0x5b4055);logger[_0x65f6('0x10')](_0x65f6('0x18'),_0x5b4055,JSON[_0x65f6('0x22')](_0x4ac04b));_0x5c5b91(_0x4ac04b);})[_0x65f6('0x17')](function(_0x14a387){logger[_0x65f6('0x12')]('GetMailAccount',_0x14a387['message'],_0x5b4055);_0x365159(_0x4c81f3[_0x65f6('0x12')](0x1f4,_0x14a387[_0x65f6('0x15')]));});});};exports['ShowMailAccount']=function(_0x4e50c0){var _0x10b368=this;return new Promise(function(_0x1ce43c,_0x11fe3b){return db[_0x65f6('0x19')][_0x65f6('0x23')]({'raw':_0x4e50c0[_0x65f6('0x1a')]?_0x4e50c0['options'][_0x65f6('0x1b')]===undefined?!![]:![]:!![],'where':_0x4e50c0[_0x65f6('0x1a')]?_0x4e50c0[_0x65f6('0x1a')]['where']||null:null,'attributes':_0x4e50c0[_0x65f6('0x1a')]?_0x4e50c0[_0x65f6('0x1a')][_0x65f6('0x21')]||null:null,'include':_0x4e50c0[_0x65f6('0x1a')]?_0x4e50c0[_0x65f6('0x1a')][_0x65f6('0x1e')]?_['map'](_0x4e50c0[_0x65f6('0x1a')][_0x65f6('0x1e')],function(_0x4f3e22){return{'model':db[_0x4f3e22[_0x65f6('0x20')]],'as':_0x4f3e22['as'],'attributes':_0x4f3e22['attributes'],'include':_0x4f3e22[_0x65f6('0x1e')]?_['map'](_0x4f3e22[_0x65f6('0x1e')],function(_0x24f7fd){return{'model':db[_0x24f7fd['model']],'as':_0x24f7fd['as'],'attributes':_0x24f7fd[_0x65f6('0x21')],'include':_0x24f7fd[_0x65f6('0x1e')]?_[_0x65f6('0x1f')](_0x24f7fd['include'],function(_0x582c7e){return{'model':db[_0x582c7e[_0x65f6('0x20')]],'as':_0x582c7e['as'],'attributes':_0x582c7e['attributes']};}):[]};}):[]};}):[]:[]})[_0x65f6('0xe')](function(_0x4e6653){if(_0x4e50c0[_0x65f6('0x1a')][_0x65f6('0x24')]===!![])_0x4e6653['setDataValue'](_0x65f6('0x25'),_0x4e6653['getSmtpOptions']());logger['info'](_0x65f6('0x26'),_0x4e50c0);logger[_0x65f6('0x10')](_0x65f6('0x26'),_0x4e50c0,JSON[_0x65f6('0x22')](_0x4e6653));_0x1ce43c(_0x4e6653);})[_0x65f6('0x17')](function(_0x28845a){logger[_0x65f6('0x12')](_0x65f6('0x26'),_0x28845a['message'],_0x4e50c0);_0x11fe3b(_0x10b368[_0x65f6('0x12')](0x1f4,_0x28845a['message']));});});};exports[_0x65f6('0x27')]=function(_0xa4394a){var _0x4ba7db=this;return new Promise(function(_0x2ea7f7,_0x5ef5c2){var _0x32148f={'body':_0xa4394a[_0x65f6('0x28')],'channel':_0x65f6('0x29')};var _0x3fb1c6=_[_0x65f6('0x2a')](_[_0x65f6('0x2b')](db[_0x65f6('0x2c')][_0x65f6('0x2d')]),[_0x65f6('0x2e'),'updatedAt',_0x65f6('0x2f'),_0x65f6('0x30')]);var _0x377ae5=![];if(_0xa4394a[_0x65f6('0x28')]['id']){delete _0xa4394a[_0x65f6('0x28')]['id'];}if(_[_0x65f6('0x31')](_0xa4394a[_0x65f6('0x28')][_0x65f6('0x32')])){return _0x5ef5c2(_0x4ba7db[_0x65f6('0x12')](0x1f4,_0x65f6('0x33')));}if(_[_0x65f6('0x31')](_0xa4394a[_0x65f6('0x28')][_0x65f6('0x28')])||_0xa4394a[_0x65f6('0x28')][_0x65f6('0x28')]===''){return _0x5ef5c2(_0x4ba7db[_0x65f6('0x12')](0x1f4,'body\x20is\x20mandatory\x20and\x20not\x20empty'));}if(_[_0x65f6('0x31')](_0xa4394a[_0x65f6('0x28')][_0x65f6('0x34')])){return _0x5ef5c2(_0x4ba7db[_0x65f6('0x12')](0x1f4,'mapKey\x20is\x20mandatory,\x20please\x20use\x20one\x20of\x20these:\x20'+_0x3fb1c6));}if(!_[_0x65f6('0x35')](_0x3fb1c6,_0xa4394a[_0x65f6('0x28')][_0x65f6('0x34')])){return _0x5ef5c2(_0x4ba7db['error'](0x1f4,_0x65f6('0x36')+_0x3fb1c6));}var _0x3386a2={};_0x3386a2[_0xa4394a[_0x65f6('0x28')][_0x65f6('0x34')]]=_0xa4394a['body'][_0x65f6('0x32')];return db['MailAccount'][_0x65f6('0x23')]({'where':{'id':_0xa4394a[_0x65f6('0x37')]['id']},'include':[{'model':db['CmList'],'as':_0x65f6('0x38'),'include':[{'model':db['CmContact'],'as':_0x65f6('0x39'),'where':_0x3386a2,'limit':0x1,'order':[[_0x65f6('0x3a'),_0x65f6('0x3b')]]}]},{'model':db[_0x65f6('0x3c')],'as':_0x65f6('0x3d')},{'model':db[_0x65f6('0x3e')],'as':'Smtp','include':[{'model':db['CloudProvider'],'as':_0x65f6('0x3f')}]}]})[_0x65f6('0xe')](function(_0x3b647a){if(_0x3b647a&&_0x3b647a[_0x65f6('0x38')]){var _0x3b907c=_0x3b647a[_0x65f6('0x40')]({'plain':!![]});_0x32148f[_0x65f6('0x37')]=_[_0x65f6('0x41')](_0x3b907c,[_0x65f6('0x3d'),'List']);_0x32148f[_0x65f6('0x37')][_0x65f6('0x25')]=_0x3b647a[_0x65f6('0x42')]();_0x32148f['applications']=_0x3b907c[_0x65f6('0x3d')];_0x32148f[_0x65f6('0x43')]=_0x3b907c['List'];_0x32148f[_0x65f6('0x44')]=_[_0x65f6('0x45')](_0x32148f['applications'],[_0x65f6('0x46')],['asc']);if(_0x32148f[_0x65f6('0x37')]&&_0x32148f[_0x65f6('0x37')][_0x65f6('0x47')]){_0x32148f['applications'][_0x65f6('0x48')]({'id':0x0,'priority':_0x32148f[_0x65f6('0x44')]['length']+0x1,'app':_0x65f6('0x49'),'appdata':_0x65f6('0x47'),'interval':'*,*,*,*'});}if(_0x32148f[_0x65f6('0x37')][_0x65f6('0x3d')]){delete _0x32148f[_0x65f6('0x37')][_0x65f6('0x3d')];}if(_0x32148f[_0x65f6('0x37')][_0x65f6('0x38')]){delete _0x32148f[_0x65f6('0x37')][_0x65f6('0x38')];}if(_0x3b907c['List']['Contacts']['length']){return _0x3b907c[_0x65f6('0x38')][_0x65f6('0x39')][0x0];}var _0x111a8a=_[_0x65f6('0x4a')](_0xa4394a['body'],{'firstName':_0xa4394a[_0x65f6('0x28')][_0x65f6('0x32')],'ListId':_0x3b907c[_0x65f6('0x30')]});_0x111a8a[_0xa4394a['body'][_0x65f6('0x34')]]=_0xa4394a[_0x65f6('0x28')][_0x65f6('0x32')];return db['CmContact']['create'](_0x111a8a);}else{throw new Error(_0x65f6('0x4b'));}})[_0x65f6('0xe')](function(_0x4125cb){_0x32148f[_0x65f6('0x4c')]=_0x4125cb;if(_0x4125cb){if(!_0xa4394a[_0x65f6('0x28')][_0x65f6('0x15')][_0x65f6('0x4d')]){_0xa4394a[_0x65f6('0x28')][_0x65f6('0x15')][_0x65f6('0x4d')]=rs[_0x65f6('0x4e')]()+'\x20'+_0xa4394a[_0x65f6('0x28')][_0x65f6('0x15')][_0x65f6('0x32')];}var _0x5ba9c6={'ContactId':_0x4125cb['id'],'MailAccountId':_0xa4394a[_0x65f6('0x37')]['id'],'inReplyTo':_0xa4394a[_0x65f6('0x28')][_0x65f6('0x15')]['messageId'],'to':_0xa4394a[_0x65f6('0x28')][_0x65f6('0x15')][_0x65f6('0x32')],'cc':_0xa4394a[_0x65f6('0x28')]['message']['cc'],'subject':_0xa4394a[_0x65f6('0x28')][_0x65f6('0x15')][_0x65f6('0x4f')],'attach':_0xa4394a[_0x65f6('0x28')]['message'][_0x65f6('0x50')],'lastMsgAt':moment()[_0x65f6('0x51')]('YYYY-MM-DD\x20HH:mm:ss'),'lastMsgDirection':'in'};return db[_0x65f6('0x52')][_0x65f6('0x23')]({'where':{'closed':![],'MailAccountId':_0xa4394a[_0x65f6('0x37')]['id']},'include':[{'model':db['MailMessage'],'as':_0x65f6('0x53'),'attributes':[_0x65f6('0x4d')],'where':{'messageId':_0xa4394a[_0x65f6('0x28')][_0x65f6('0x15')][_0x65f6('0x54')]}}]})[_0x65f6('0xe')](function(_0x5e4759){if(_0x5e4759){return[_0x5e4759,![]];}return db['MailInteraction']['create'](_0x5ba9c6)[_0x65f6('0xe')](function(_0x367d95){return[_0x367d95,!![]];});});}else{throw new Error(_0x65f6('0x55'));}})[_0x65f6('0x56')](function(_0xab6f0,_0x304cf9){if(_0xab6f0){_0x377ae5=_0x304cf9;if(!_0x304cf9){return _0xab6f0['update']({'inReplyTo':_0xa4394a[_0x65f6('0x28')][_0x65f6('0x15')]['messageId'],'to':_0xa4394a[_0x65f6('0x28')][_0x65f6('0x15')][_0x65f6('0x32')],'cc':_0xa4394a['body'][_0x65f6('0x15')]['cc'],'subject':_0xa4394a[_0x65f6('0x28')]['message'][_0x65f6('0x4f')],'attach':_0xab6f0[_0x65f6('0x50')]?_0xab6f0[_0x65f6('0x50')]:_0xa4394a[_0x65f6('0x28')][_0x65f6('0x15')][_0x65f6('0x50')],'substatus':null,'substatusAt':moment()[_0x65f6('0x51')]('YYYY-MM-DD\x20HH:mm:ss'),'lastMsgAt':moment()['format'](_0x65f6('0x57')),'lastMsgDirection':'in'});}else{return _0xab6f0;}}})[_0x65f6('0xe')](function(_0x4a9524){_0x32148f[_0x65f6('0x58')]=_0x4a9524['get']({'plain':!![]});_0x32148f[_0x65f6('0x58')]['created']=_0x377ae5;return db[_0x65f6('0x59')][_0x65f6('0x5a')]({'body':_0xa4394a[_0x65f6('0x28')][_0x65f6('0x28')],'MailAccountId':_0xa4394a[_0x65f6('0x37')]['id'],'MailInteractionId':_0x4a9524['id'],'direction':'in','ContactId':_0x32148f[_0x65f6('0x4c')]['id'],'messageId':_0xa4394a[_0x65f6('0x28')][_0x65f6('0x15')][_0x65f6('0x4d')],'from':_0xa4394a['body']['message'][_0x65f6('0x32')],'to':_0xa4394a[_0x65f6('0x28')][_0x65f6('0x15')]['to'],'cc':_0xa4394a['body']['message']['cc'],'subject':_0xa4394a[_0x65f6('0x28')][_0x65f6('0x15')][_0x65f6('0x4f')],'attach':_0xa4394a[_0x65f6('0x28')][_0x65f6('0x15')][_0x65f6('0x50')],'Attachments':_0xa4394a['body']['message'][_0x65f6('0x5b')],'originTo':_0xa4394a[_0x65f6('0x28')]['message'][_0x65f6('0x5c')],'originCc':_0xa4394a['body'][_0x65f6('0x15')][_0x65f6('0x5d')],'bcc':_0xa4394a[_0x65f6('0x28')][_0x65f6('0x15')]['bcc'],'ChatWebsiteId':_0xa4394a[_0x65f6('0x28')][_0x65f6('0x15')][_0x65f6('0x5e')]||null,'originChannel':_0xa4394a['body']['message'][_0x65f6('0x5f')]||'Email','ChatOfflineMessageId':_0xa4394a[_0x65f6('0x28')][_0x65f6('0x15')][_0x65f6('0x60')]||null},{'include':[{'model':db[_0x65f6('0x61')],'as':'Attachments'}]});})['then'](function(_0x56f7f1){_0x32148f[_0x65f6('0x15')]=_0x56f7f1;if(_0x32148f[_0x65f6('0x58')][_0x65f6('0x62')]){return db['User'][_0x65f6('0x23')]({'attributes':['id',_0x65f6('0x63')],'where':{'id':_0x32148f[_0x65f6('0x58')]['UserId']}})[_0x65f6('0xe')](function(_0x15809e){if(_0x15809e){_0x32148f['applications'][_0x65f6('0x64')]({'id':0x0,'priority':0x0,'app':_0x65f6('0x65'),'appdata':_0x15809e['name']+','+(_0x32148f[_0x65f6('0x37')]['waitForTheAssignedAgent']||0xa),'interval':_0x65f6('0x66')});}return respondWithRpcPromise('Start',_0x65f6('0x67'),_0x32148f);});}return respondWithRpcPromise(_0x65f6('0x68'),'startRouting',_0x32148f);})[_0x65f6('0xe')](function(_0x442e25){_0x2ea7f7(_0x442e25);})[_0x65f6('0x17')](function(_0x299b85){_0x5ef5c2(_0x4ba7db[_0x65f6('0x12')](0x1f4,_0x299b85[_0x65f6('0x15')]));});});};
\ No newline at end of file
index c50fcf4..2717db9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0x2e38=['remove','update','emit','removeListener','register','mailAccount:','./mailAccount.events','save'];(function(_0x46ff9a,_0x2b6271){var _0x3f9760=function(_0x527f6c){while(--_0x527f6c){_0x46ff9a['push'](_0x46ff9a['shift']());}};_0x3f9760(++_0x2b6271);}(_0x2e38,0xee));var _0x82e3=function(_0x52a567,_0x4842f9){_0x52a567=_0x52a567-0x0;var _0xb3ed30=_0x2e38[_0x52a567];return _0xb3ed30;};'use strict';var MailAccountEvents=require(_0x82e3('0x0'));var events=[_0x82e3('0x1'),_0x82e3('0x2'),_0x82e3('0x3')];function createListener(_0x1c6c73,_0x309b70){return function(_0x266da5){_0x309b70[_0x82e3('0x4')](_0x1c6c73,_0x266da5);};}function removeListener(_0x3902e0,_0x54ad3c){return function(){MailAccountEvents[_0x82e3('0x5')](_0x3902e0,_0x54ad3c);};}exports[_0x82e3('0x6')]=function(_0x20dde4){for(var _0x130101=0x0,_0x4550d0=events['length'];_0x130101<_0x4550d0;_0x130101++){var _0x3efdef=events[_0x130101];var _0x629ffd=createListener(_0x82e3('0x7')+_0x3efdef,_0x20dde4);MailAccountEvents['on'](_0x3efdef,_0x629ffd);}};
\ No newline at end of file
index 59eec86..bf65eb8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0x6e61=['../../components/interaction/service','../../config/environment','/:id','isAuthenticated','show','update','delete','destroy','exports','multer','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service'];(function(_0x54deb9,_0x53e74b){var _0x5da9aa=function(_0x45dca8){while(--_0x45dca8){_0x54deb9['push'](_0x54deb9['shift']());}};_0x5da9aa(++_0x53e74b);}(_0x6e61,0x13b));var _0x16e6=function(_0x118ee9,_0x484912){_0x118ee9=_0x118ee9-0x0;var _0xa86b95=_0x6e61[_0x118ee9];return _0xa86b95;};'use strict';var multer=require(_0x16e6('0x0'));var util=require(_0x16e6('0x1'));var path=require(_0x16e6('0x2'));var timeout=require(_0x16e6('0x3'));var express=require(_0x16e6('0x4'));var router=express[_0x16e6('0x5')]();var fs_extra=require(_0x16e6('0x6'));var auth=require(_0x16e6('0x7'));var interaction=require(_0x16e6('0x8'));var config=require(_0x16e6('0x9'));var controller=require('./mailApplication.controller');router['get'](_0x16e6('0xa'),auth[_0x16e6('0xb')](),controller[_0x16e6('0xc')]);router['put'](_0x16e6('0xa'),auth[_0x16e6('0xb')](),controller[_0x16e6('0xd')]);router[_0x16e6('0xe')](_0x16e6('0xa'),auth[_0x16e6('0xb')](),controller[_0x16e6('0xf')]);module[_0x16e6('0x10')]=router;
\ No newline at end of file
index f5c9046..d4e0615 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0x32ec=['INTEGER','STRING','noop','TEXT','*,*,*,*','sequelize','exports'];(function(_0x4fa291,_0x56e289){var _0x506d9b=function(_0x24c31f){while(--_0x24c31f){_0x4fa291['push'](_0x4fa291['shift']());}};_0x506d9b(++_0x56e289);}(_0x32ec,0x12b));var _0xc32e=function(_0x8d2d87,_0x176011){_0x8d2d87=_0x8d2d87-0x0;var _0xeac278=_0x32ec[_0x8d2d87];return _0xeac278;};'use strict';var Sequelize=require(_0xc32e('0x0'));module[_0xc32e('0x1')]={'priority':{'type':Sequelize[_0xc32e('0x2')],'allowNull':![]},'app':{'type':Sequelize[_0xc32e('0x3')],'allowNull':![],'defaultValue':_0xc32e('0x4')},'appdata':{'type':Sequelize[_0xc32e('0x5')]()},'description':{'type':Sequelize[_0xc32e('0x3')]},'interval':{'type':Sequelize[_0xc32e('0x3')],'defaultValue':_0xc32e('0x6')}};
\ No newline at end of file
index fddc3c0..bfcacd0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0xedd9=['query','filters','intersection','model','attributes','fields','length','includeAll','include','merge','options','find','catch','update','body','destroy','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','sox','to-csv','ejs','fs-extra','squel','jsforce','desk.js','querystring','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','api','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','json','offset','undefined','limit','count','set','apply','then','end','error','stack','send','show','params','keys','MailApplication','rawAttributes'];(function(_0x1e4150,_0x55b02a){var _0x1ce3ee=function(_0x59324e){while(--_0x59324e){_0x1e4150['push'](_0x1e4150['shift']());}};_0x1ce3ee(++_0x55b02a);}(_0xedd9,0xfc));var _0x9edd=function(_0x14eb85,_0x36820b){_0x14eb85=_0x14eb85-0x0;var _0x23a504=_0xedd9[_0x14eb85];return _0x23a504;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x9edd('0x0'));var zipdir=require(_0x9edd('0x1'));var jsonpatch=require(_0x9edd('0x2'));var rp=require(_0x9edd('0x3'));var moment=require(_0x9edd('0x4'));var BPromise=require(_0x9edd('0x5'));var Mustache=require(_0x9edd('0x6'));var util=require(_0x9edd('0x7'));var path=require('path');var sox=require(_0x9edd('0x8'));var csv=require(_0x9edd('0x9'));var ejs=require(_0x9edd('0xa'));var fs=require('fs');var fs_extra=require(_0x9edd('0xb'));var _=require('lodash');var squel=require(_0x9edd('0xc'));var crypto=require('crypto');var jsforce=require(_0x9edd('0xd'));var deskjs=require(_0x9edd('0xe'));var toCsv=require(_0x9edd('0x9'));var querystring=require(_0x9edd('0xf'));var Papa=require('papaparse');var Redis=require(_0x9edd('0x10'));var authService=require('../../components/auth/service');var qs=require(_0x9edd('0x11'));var as=require(_0x9edd('0x12'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x9edd('0x13'))(_0x9edd('0x14'));var utils=require('../../config/utils');var config=require(_0x9edd('0x15'));var licenseUtil=require(_0x9edd('0x16'));var db=require(_0x9edd('0x17'))['db'];function respondWithStatusCode(_0xfd544a,_0x287ddd){_0x287ddd=_0x287ddd||0xcc;return function(_0x3a7b84){if(_0x3a7b84){return _0xfd544a[_0x9edd('0x18')](_0x287ddd);}return _0xfd544a[_0x9edd('0x19')](_0x287ddd)['end']();};}function respondWithResult(_0x176bfa,_0x44fc7c){_0x44fc7c=_0x44fc7c||0xc8;return function(_0x891832){if(_0x891832){return _0x176bfa[_0x9edd('0x19')](_0x44fc7c)[_0x9edd('0x1a')](_0x891832);}};}function respondWithFilteredResult(_0x338f3c,_0x1042aa){return function(_0x75a4ab){if(_0x75a4ab){var _0x4ea60f=typeof _0x1042aa[_0x9edd('0x1b')]===_0x9edd('0x1c')&&typeof _0x1042aa[_0x9edd('0x1d')]==='undefined';var _0x1b54c0=_0x75a4ab[_0x9edd('0x1e')];var _0x40ba32=_0x4ea60f?0x0:_0x1042aa['offset'];var _0x43dc70=_0x4ea60f?_0x75a4ab['count']:_0x1042aa[_0x9edd('0x1b')]+_0x1042aa[_0x9edd('0x1d')];var _0x4bdb88;if(_0x43dc70>=_0x1b54c0){_0x43dc70=_0x1b54c0;_0x4bdb88=0xc8;}else{_0x4bdb88=0xce;}_0x338f3c['status'](_0x4bdb88);return _0x338f3c[_0x9edd('0x1f')]('Content-Range',_0x40ba32+'-'+_0x43dc70+'/'+_0x1b54c0)[_0x9edd('0x1a')](_0x75a4ab);}return null;};}function patchUpdates(_0x54a03f){return function(_0x535f37){try{jsonpatch[_0x9edd('0x20')](_0x535f37,_0x54a03f,!![]);}catch(_0x1c46a8){return BPromise['reject'](_0x1c46a8);}return _0x535f37['save']();};}function saveUpdates(_0x341d67,_0x186186){return function(_0x477878){if(_0x477878){return _0x477878['update'](_0x341d67)[_0x9edd('0x21')](function(_0x1dca43){return _0x1dca43;});}return null;};}function removeEntity(_0x44a6c1,_0x2ca65f){return function(_0x339a0d){if(_0x339a0d){return _0x339a0d['destroy']()[_0x9edd('0x21')](function(){_0x44a6c1[_0x9edd('0x19')](0xcc)[_0x9edd('0x22')]();});}};}function handleEntityNotFound(_0x2f9f86,_0x310a4d){return function(_0x4d507f){if(!_0x4d507f){_0x2f9f86['sendStatus'](0x194);}return _0x4d507f;};}function handleError(_0x3276ee,_0xfeca7b){_0xfeca7b=_0xfeca7b||0x1f4;return function(_0x8d67aa){logger[_0x9edd('0x23')](_0x8d67aa[_0x9edd('0x24')]);if(_0x8d67aa['name']){delete _0x8d67aa['name'];}_0x3276ee[_0x9edd('0x19')](_0xfeca7b)[_0x9edd('0x25')](_0x8d67aa);};}exports[_0x9edd('0x26')]=function(_0x52746a,_0x238b22){var _0x28cfae={'raw':!![],'where':{'id':_0x52746a[_0x9edd('0x27')]['id']}},_0x2ae8dd={};_0x2ae8dd['model']=_[_0x9edd('0x28')](db[_0x9edd('0x29')][_0x9edd('0x2a')]);_0x2ae8dd[_0x9edd('0x2b')]=_[_0x9edd('0x28')](_0x52746a[_0x9edd('0x2b')]);_0x2ae8dd[_0x9edd('0x2c')]=_[_0x9edd('0x2d')](_0x2ae8dd[_0x9edd('0x2e')],_0x2ae8dd[_0x9edd('0x2b')]);_0x28cfae[_0x9edd('0x2f')]=_[_0x9edd('0x2d')](_0x2ae8dd[_0x9edd('0x2e')],qs[_0x9edd('0x30')](_0x52746a[_0x9edd('0x2b')]['fields']));_0x28cfae[_0x9edd('0x2f')]=_0x28cfae[_0x9edd('0x2f')][_0x9edd('0x31')]?_0x28cfae['attributes']:_0x2ae8dd[_0x9edd('0x2e')];if(_0x52746a[_0x9edd('0x2b')][_0x9edd('0x32')]){_0x28cfae[_0x9edd('0x33')]=[{'all':!![]}];}_0x28cfae=_[_0x9edd('0x34')]({},_0x28cfae,_0x52746a[_0x9edd('0x35')]);return db[_0x9edd('0x29')][_0x9edd('0x36')](_0x28cfae)[_0x9edd('0x21')](handleEntityNotFound(_0x238b22,null))[_0x9edd('0x21')](respondWithResult(_0x238b22,null))[_0x9edd('0x37')](handleError(_0x238b22,null));};exports[_0x9edd('0x38')]=function(_0x27eb7e,_0x14f780){if(_0x27eb7e['body']['id']){delete _0x27eb7e[_0x9edd('0x39')]['id'];}return db['MailApplication'][_0x9edd('0x36')]({'where':{'id':_0x27eb7e[_0x9edd('0x27')]['id']}})[_0x9edd('0x21')](handleEntityNotFound(_0x14f780,null))[_0x9edd('0x21')](saveUpdates(_0x27eb7e[_0x9edd('0x39')],null))['then'](respondWithResult(_0x14f780,null))[_0x9edd('0x37')](handleError(_0x14f780,null));};exports[_0x9edd('0x3a')]=function(_0x2b3469,_0x38e9be){return db[_0x9edd('0x29')][_0x9edd('0x36')]({'where':{'id':_0x2b3469[_0x9edd('0x27')]['id']}})[_0x9edd('0x21')](handleEntityNotFound(_0x38e9be,null))[_0x9edd('0x21')](removeEntity(_0x38e9be,null))[_0x9edd('0x37')](handleError(_0x38e9be,null));};
\ No newline at end of file
index f341b5c..f789d6f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0x073b=['define','MailApplication','mail_applications','utf8mb4','utf8mb4_unicode_ci','util','../../config/logger','moment','request-promise','path','rimraf','exports'];(function(_0x52f933,_0x2cb9dc){var _0x4e128b=function(_0x3bb37b){while(--_0x3bb37b){_0x52f933['push'](_0x52f933['shift']());}};_0x4e128b(++_0x2cb9dc);}(_0x073b,0x1f1));var _0xb073=function(_0xa464c9,_0x7c86d8){_0xa464c9=_0xa464c9-0x0;var _0x3d73c4=_0x073b[_0xa464c9];return _0x3d73c4;};'use strict';var _=require('lodash');var util=require(_0xb073('0x0'));var logger=require(_0xb073('0x1'))('api');var moment=require(_0xb073('0x2'));var BPromise=require('bluebird');var rp=require(_0xb073('0x3'));var fs=require('fs');var path=require(_0xb073('0x4'));var rimraf=require(_0xb073('0x5'));var config=require('../../config/environment');var attributes=require('./mailApplication.attributes');module[_0xb073('0x6')]=function(_0x31c461,_0x54ee21){return _0x31c461[_0xb073('0x7')](_0xb073('0x8'),attributes,{'tableName':_0xb073('0x9'),'paranoid':![],'indexes':[],'timestamps':!![],'charset':_0xb073('0xa'),'collate':_0xb073('0xb')});};
\ No newline at end of file
index e344485..1a80318 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0xf70e=['then','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','http','request','info','request\x20sent','debug','MailApplication,\x20%s,\x20%s,\x20%s','stringify','error','code','MailApplication,\x20%s,\x20%s','message','result','catch','UpdateMailApplication','update','body','options','raw','where','attributes'];(function(_0x42245d,_0x51758f){var _0x4b211a=function(_0x2634e){while(--_0x2634e){_0x42245d['push'](_0x42245d['shift']());}};_0x4b211a(++_0x51758f);}(_0xf70e,0x1ae));var _0xef70=function(_0x6acb69,_0xd36dbf){_0x6acb69=_0x6acb69-0x0;var _0x29a021=_0xf70e[_0x6acb69];return _0x29a021;};'use strict';var _=require(_0xef70('0x0'));var util=require(_0xef70('0x1'));var moment=require(_0xef70('0x2'));var BPromise=require(_0xef70('0x3'));var rs=require(_0xef70('0x4'));var fs=require('fs');var Redis=require(_0xef70('0x5'));var db=require(_0xef70('0x6'))['db'];var utils=require(_0xef70('0x7'));var logger=require(_0xef70('0x8'))(_0xef70('0x9'));var config=require(_0xef70('0xa'));var jayson=require(_0xef70('0xb'));var client=jayson['client'][_0xef70('0xc')]({'port':0x232a});function respondWithRpcPromise(_0x2d207b,_0x517bbd,_0x2cff23){return new BPromise(function(_0x461808,_0x42ff63){return client[_0xef70('0xd')](_0x2d207b,_0x2cff23)['then'](function(_0x1f9d5c){logger[_0xef70('0xe')]('MailApplication,\x20%s,\x20%s',_0x517bbd,_0xef70('0xf'));logger[_0xef70('0x10')](_0xef70('0x11'),_0x517bbd,'request\x20sent',JSON[_0xef70('0x12')](_0x1f9d5c));if(_0x1f9d5c[_0xef70('0x13')]){if(_0x1f9d5c[_0xef70('0x13')][_0xef70('0x14')]===0x1f4){logger[_0xef70('0x13')](_0xef70('0x15'),_0x517bbd,_0x1f9d5c[_0xef70('0x13')]['message']);return _0x42ff63(_0x1f9d5c[_0xef70('0x13')]['message']);}logger[_0xef70('0x13')](_0xef70('0x15'),_0x517bbd,_0x1f9d5c[_0xef70('0x13')]['message']);return _0x461808(_0x1f9d5c[_0xef70('0x13')][_0xef70('0x16')]);}else{logger[_0xef70('0xe')](_0xef70('0x15'),_0x517bbd,_0xef70('0xf'));_0x461808(_0x1f9d5c[_0xef70('0x17')][_0xef70('0x16')]);}})[_0xef70('0x18')](function(_0x36c709){logger[_0xef70('0x13')](_0xef70('0x15'),_0x517bbd,_0x36c709);_0x42ff63(_0x36c709);});});}exports[_0xef70('0x19')]=function(_0x5785c9){var _0x1c5a92=this;return new Promise(function(_0x241ed2,_0x419471){return db['MailApplication'][_0xef70('0x1a')](_0x5785c9[_0xef70('0x1b')],{'raw':_0x5785c9[_0xef70('0x1c')]?_0x5785c9[_0xef70('0x1c')][_0xef70('0x1d')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x5785c9[_0xef70('0x1c')]?_0x5785c9['options'][_0xef70('0x1e')]||null:null,'attributes':_0x5785c9[_0xef70('0x1c')]?_0x5785c9['options'][_0xef70('0x1f')]||null:null,'limit':_0x5785c9[_0xef70('0x1c')]?_0x5785c9['options']['limit']||null:null})[_0xef70('0x20')](function(_0x1b6ed2){logger[_0xef70('0xe')](_0xef70('0x19'),_0x5785c9);logger[_0xef70('0x10')](_0xef70('0x19'),_0x5785c9,JSON[_0xef70('0x12')](_0x1b6ed2));_0x241ed2(_0x1b6ed2);})[_0xef70('0x18')](function(_0x1e9eae){logger['error'](_0xef70('0x19'),_0x1e9eae[_0xef70('0x16')],_0x5785c9);_0x419471(_0x1c5a92[_0xef70('0x13')](0x1f4,_0x1e9eae['message']));});});};
\ No newline at end of file
index e7c8d29..3135543 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0x2408=['mail','mailinteraction:addtags','put','mailinteraction:update','delete','mailinteraction:destroy','exports','express','Router','../../components/auth/service','./mailInteraction.controller','get','isAuthenticated','index','describe','/:id','show','/:id/messages','getMessages','download','create','addMessage','post','/:id/tags','tracked'];(function(_0x462b29,_0x206991){var _0xffef66=function(_0x176971){while(--_0x176971){_0x462b29['push'](_0x462b29['shift']());}};_0xffef66(++_0x206991);}(_0x2408,0x1e2));var _0x8240=function(_0x87c536,_0x41e9c5){_0x87c536=_0x87c536-0x0;var _0x31fa93=_0x2408[_0x87c536];return _0x31fa93;};'use strict';var express=require(_0x8240('0x0'));var router=express[_0x8240('0x1')]();var auth=require(_0x8240('0x2'));var interaction=require('../../components/interaction/service');var controller=require(_0x8240('0x3'));router[_0x8240('0x4')]('/',auth[_0x8240('0x5')](),controller[_0x8240('0x6')]);router['get']('/describe',auth['isAuthenticated'](),controller[_0x8240('0x7')]);router[_0x8240('0x4')](_0x8240('0x8'),auth['isAuthenticated'](),controller[_0x8240('0x9')]);router['get'](_0x8240('0xa'),auth[_0x8240('0x5')](),controller[_0x8240('0xb')]);router[_0x8240('0x4')]('/:id/download',auth[_0x8240('0x5')](),controller[_0x8240('0xc')]);router['post']('/',auth[_0x8240('0x5')](),controller[_0x8240('0xd')]);router['post'](_0x8240('0xa'),auth[_0x8240('0x5')](),controller[_0x8240('0xe')]);router[_0x8240('0xf')](_0x8240('0x10'),auth['isAuthenticated'](),interaction[_0x8240('0x11')](_0x8240('0x12'),_0x8240('0x13')),controller['addTags']);router[_0x8240('0x14')](_0x8240('0x8'),auth[_0x8240('0x5')](),interaction[_0x8240('0x11')]('mail',_0x8240('0x15')),controller['update']);router[_0x8240('0x16')](_0x8240('0x8'),auth[_0x8240('0x5')](),interaction[_0x8240('0x11')]('mail',_0x8240('0x17')),controller['destroy']);router['delete'](_0x8240('0x10'),auth['isAuthenticated'](),controller['removeTags']);module[_0x8240('0x18')]=router;
\ No newline at end of file
index 295419f..4c8aa59 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0x503c=['STRING','TEXT','ENUM','out','iconv','BOOLEAN','DATE'];(function(_0x2181b1,_0x569637){var _0x530548=function(_0x4b31f1){while(--_0x4b31f1){_0x2181b1['push'](_0x2181b1['shift']());}};_0x530548(++_0x569637);}(_0x503c,0x146));var _0xc503=function(_0x77cf4c,_0x819ef0){_0x77cf4c=_0x77cf4c-0x0;var _0x2b6aca=_0x503c[_0x77cf4c];return _0x2b6aca;};'use strict';var Sequelize=require('sequelize');var iconv=require(_0xc503('0x0'));module['exports']={'closed':{'type':Sequelize[_0xc503('0x1')],'defaultValue':![]},'closedAt':{'type':Sequelize[_0xc503('0x2')]},'disposition':{'type':Sequelize[_0xc503('0x3')]},'secondDisposition':{'type':Sequelize[_0xc503('0x3')]},'thirdDisposition':{'type':Sequelize[_0xc503('0x3')]},'note':{'type':Sequelize[_0xc503('0x3')]},'inReplyTo':{'type':Sequelize[_0xc503('0x3')](0x1fe)},'to':{'type':Sequelize['STRING']},'cc':{'type':Sequelize['TEXT']('long')},'subject':{'type':Sequelize[_0xc503('0x4')]()},'attach':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'read1stAt':{'type':Sequelize[_0xc503('0x2')]},'substatus':{'type':Sequelize[_0xc503('0x3')](0x3c)},'substatusAt':{'type':Sequelize[_0xc503('0x2')]},'firstMsgDirection':{'type':Sequelize[_0xc503('0x5')]('in',_0xc503('0x6')),'defaultValue':'in','allowNull':![]},'lastMsgAt':{'type':Sequelize[_0xc503('0x2')]},'lastMsgDirection':{'type':Sequelize[_0xc503('0x5')]('in',_0xc503('0x6')),'defaultValue':'in','allowNull':![]},'autoreplyExecuted':{'type':Sequelize[_0xc503('0x1')],'defaultValue':![]}};
\ No newline at end of file
index e7c902d..20f6cf2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0x8c1b=['ddd,\x20DD\x20MMM\x20YYYY\x20HH:mm:ss\x20ZZ','headers','Bcc','basename','readFileSync','build','writeFileSync','message%d.eml','download','unlinkSync','eml-format','rimraf','zip-dir','moment','bluebird','util','juice','ioredis','../../components/interaction/service','../../config/logger','api','../../config/environment','../../mysqldb','redis','defaults','./mailInteraction.socket','register','sendStatus','status','end','json','offset','undefined','limit','count','set','update','error','name','send','index','map','MailInteraction','type','key','findAll','mail','query','then','catch','params','keys','rawAttributes','filters','intersection','model','fields','attributes','length','merge','options','find','create','body','destroy','addMessage','ids','omit','getMessages','findOne','hasOwnProperty','nolimit','sort','where','MailInteractionId','filter','$gte','split','format','YYYY-MM-DD\x20HH:mm:ss','MailMessage','true','rows','setTags','spread','Tag','color','mailInteractionTags:save','removeTags','unix','toString','join','root','server','files','attachments','transcript-%d-%s.zip','push','Attachment','Attachments','bcc','subject','Messages','get','from','missing.recipient@your.company.com','decode','createdAt'];(function(_0x5687b7,_0x1846d9){var _0x24aecc=function(_0x117df2){while(--_0x117df2){_0x5687b7['push'](_0x5687b7['shift']());}};_0x24aecc(++_0x1846d9);}(_0x8c1b,0x76));var _0xb8c1=function(_0x2db9ef,_0x12a5c0){_0x2db9ef=_0x2db9ef-0x0;var _0x47eaf5=_0x8c1b[_0x2db9ef];return _0x47eaf5;};'use strict';var emlformat=require(_0xb8c1('0x0'));var rimraf=require(_0xb8c1('0x1'));var zipdir=require(_0xb8c1('0x2'));var moment=require(_0xb8c1('0x3'));var BPromise=require(_0xb8c1('0x4'));var util=require(_0xb8c1('0x5'));var path=require('path');var fs=require('fs');var _=require('lodash');var juice=require(_0xb8c1('0x6'));var Redis=require(_0xb8c1('0x7'));var interaction=require(_0xb8c1('0x8'));var qs=require('../../components/parsers/qs');var logger=require(_0xb8c1('0x9'))(_0xb8c1('0xa'));var config=require(_0xb8c1('0xb'));var db=require(_0xb8c1('0xc'))['db'];var htmlEntities=require('html-entities');config[_0xb8c1('0xd')]=_[_0xb8c1('0xe')](config[_0xb8c1('0xd')],{'host':'localhost','port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0xb8c1('0xd')]));require(_0xb8c1('0xf'))[_0xb8c1('0x10')](socket);function respondWithStatusCode(_0x26ec05,_0x4c46b9){_0x4c46b9=_0x4c46b9||0xcc;return function(_0x15aa57){if(_0x15aa57){return _0x26ec05[_0xb8c1('0x11')](_0x4c46b9);}return _0x26ec05[_0xb8c1('0x12')](_0x4c46b9)[_0xb8c1('0x13')]();};}function respondWithResult(_0x21872a,_0x4bc067){_0x4bc067=_0x4bc067||0xc8;return function(_0x14cee7){if(_0x14cee7){return _0x21872a[_0xb8c1('0x12')](_0x4bc067)[_0xb8c1('0x14')](_0x14cee7);}};}function respondWithFilteredResult(_0x17802a,_0xa632d){return function(_0xcd17ba){if(_0xcd17ba){var _0xc5029d=typeof _0xa632d[_0xb8c1('0x15')]===_0xb8c1('0x16')&&typeof _0xa632d[_0xb8c1('0x17')]==='undefined';var _0x2f79e4=_0xcd17ba[_0xb8c1('0x18')];var _0x129beb=_0xc5029d?0x0:_0xa632d[_0xb8c1('0x15')];var _0x292cf4=_0xc5029d?_0xcd17ba[_0xb8c1('0x18')]:_0xa632d['offset']+_0xa632d[_0xb8c1('0x17')];var _0x1c45f8;if(_0x292cf4>=_0x2f79e4){_0x292cf4=_0x2f79e4;_0x1c45f8=0xc8;}else{_0x1c45f8=0xce;}_0x17802a[_0xb8c1('0x12')](_0x1c45f8);return _0x17802a[_0xb8c1('0x19')]('Content-Range',_0x129beb+'-'+_0x292cf4+'/'+_0x2f79e4)[_0xb8c1('0x14')](_0xcd17ba);}return null;};}function saveUpdates(_0xeab39){return function(_0x2ae2d1){if(_0x2ae2d1){return _0x2ae2d1[_0xb8c1('0x1a')](_0xeab39)['then'](function(_0x314422){return _0x314422;});}return null;};}function removeEntity(_0x421e45){return function(_0x58e33f){if(_0x58e33f){return _0x58e33f['destroy']()['then'](function(){_0x421e45['status'](0xcc)[_0xb8c1('0x13')]();});}};}function handleEntityNotFound(_0x320d35){return function(_0x3579ea){if(!_0x3579ea){_0x320d35['sendStatus'](0x194);}return _0x3579ea;};}function handleError(_0x53ebd4,_0x2ae7de){_0x2ae7de=_0x2ae7de||0x1f4;return function(_0x57758f){logger[_0xb8c1('0x1b')](_0x57758f['stack']);if(_0x57758f[_0xb8c1('0x1c')]){delete _0x57758f['name'];}_0x53ebd4[_0xb8c1('0x12')](_0x2ae7de)[_0xb8c1('0x1d')](_0x57758f);};}exports[_0xb8c1('0x1e')]=function(_0x2a061a,_0x606ba){var _0x312821={};var _0x209643=_[_0xb8c1('0x1f')](db[_0xb8c1('0x20')]['rawAttributes'],function(_0x122aad){return{'name':_0x122aad['fieldName'],'type':_0x122aad[_0xb8c1('0x21')][_0xb8c1('0x22')]};});_0x312821=qs['getOptions'](_0x209643,_0x2a061a);return interaction[_0xb8c1('0x23')](_0xb8c1('0x24'),_0x2a061a[_0xb8c1('0x25')],_0x2a061a['user'],_0x312821,_0x209643)[_0xb8c1('0x26')](respondWithFilteredResult(_0x606ba,_0x312821))[_0xb8c1('0x27')](handleError(_0x606ba,null));};exports['show']=function(_0x2b9eeb,_0xf355b9){var _0x4e547d={'raw':![],'where':{'id':_0x2b9eeb[_0xb8c1('0x28')]['id']}},_0x129e32={};_0x129e32['model']=_[_0xb8c1('0x29')](db[_0xb8c1('0x20')][_0xb8c1('0x2a')]);_0x129e32[_0xb8c1('0x25')]=_['keys'](_0x2b9eeb[_0xb8c1('0x25')]);_0x129e32[_0xb8c1('0x2b')]=_[_0xb8c1('0x2c')](_0x129e32[_0xb8c1('0x2d')],_0x129e32[_0xb8c1('0x25')]);_0x4e547d['attributes']=_['intersection'](_0x129e32['model'],qs[_0xb8c1('0x2e')](_0x2b9eeb[_0xb8c1('0x25')][_0xb8c1('0x2e')]));_0x4e547d['attributes']=_0x4e547d[_0xb8c1('0x2f')][_0xb8c1('0x30')]?_0x4e547d[_0xb8c1('0x2f')]:_0x129e32[_0xb8c1('0x2d')];if(_0x2b9eeb[_0xb8c1('0x25')]['includeAll']){_0x4e547d['include']=[{'all':!![]}];}_0x4e547d=_[_0xb8c1('0x31')]({},_0x4e547d,_0x2b9eeb[_0xb8c1('0x32')]);return db[_0xb8c1('0x20')][_0xb8c1('0x33')](_0x4e547d)[_0xb8c1('0x26')](handleEntityNotFound(_0xf355b9,null))[_0xb8c1('0x26')](respondWithResult(_0xf355b9,null))[_0xb8c1('0x27')](handleError(_0xf355b9,null));};exports[_0xb8c1('0x34')]=function(_0x294c99,_0x33191f){return db['MailInteraction'][_0xb8c1('0x34')](_0x294c99['body'],{})[_0xb8c1('0x26')](respondWithResult(_0x33191f,0xc9))[_0xb8c1('0x27')](handleError(_0x33191f,null));};exports[_0xb8c1('0x1a')]=function(_0x473b89,_0x178ad5){if(_0x473b89[_0xb8c1('0x35')]['id']){delete _0x473b89[_0xb8c1('0x35')]['id'];}return db['MailInteraction'][_0xb8c1('0x33')]({'where':{'id':_0x473b89[_0xb8c1('0x28')]['id']}})[_0xb8c1('0x26')](handleEntityNotFound(_0x178ad5,null))[_0xb8c1('0x26')](saveUpdates(_0x473b89[_0xb8c1('0x35')],null))['then'](respondWithResult(_0x178ad5,null))[_0xb8c1('0x27')](handleError(_0x178ad5,null));};exports[_0xb8c1('0x36')]=function(_0x500828,_0x12f0d4){return db[_0xb8c1('0x20')]['find']({'where':{'id':_0x500828[_0xb8c1('0x28')]['id']}})['then'](handleEntityNotFound(_0x12f0d4,null))[_0xb8c1('0x26')](removeEntity(_0x12f0d4,null))[_0xb8c1('0x27')](handleError(_0x12f0d4,null));};exports['describe']=function(_0x37cdca,_0x28e2af){return db[_0xb8c1('0x20')]['describe']()[_0xb8c1('0x26')](respondWithResult(_0x28e2af,null))[_0xb8c1('0x27')](handleError(_0x28e2af,null));};exports[_0xb8c1('0x37')]=function(_0x4fea95,_0xd91238){return db['MailMessage'][_0xb8c1('0x33')]({'where':{'id':_0x4fea95['params']['id']}})[_0xb8c1('0x26')](handleEntityNotFound(_0xd91238,null))['then'](function(_0x3d258d){if(_0x3d258d){return _0x3d258d[_0xb8c1('0x37')](_0x4fea95['body'][_0xb8c1('0x38')],_[_0xb8c1('0x39')](_0x4fea95['body'],['ids','id'])||{});}})[_0xb8c1('0x26')](respondWithResult(_0xd91238,null))[_0xb8c1('0x27')](handleError(_0xd91238,null));};exports[_0xb8c1('0x3a')]=function(_0x573ce4,_0x4a2d1f){var _0x515aaa={'raw':![],'where':{}};var _0xb0f290={};var _0x346326={'count':0x0,'rows':[]};return db[_0xb8c1('0x20')][_0xb8c1('0x3b')]({'where':{'id':_0x573ce4['params']['id']}})['then'](handleEntityNotFound(_0x4a2d1f,null))['then'](function(_0x56f5e6){if(_0x56f5e6){_0xb0f290[_0xb8c1('0x2d')]=_[_0xb8c1('0x29')](db['MailMessage'][_0xb8c1('0x2a')]);_0xb0f290[_0xb8c1('0x25')]=_[_0xb8c1('0x29')](_0x573ce4[_0xb8c1('0x25')]);_0xb0f290[_0xb8c1('0x2b')]=_['intersection'](_0xb0f290[_0xb8c1('0x2d')],_0xb0f290[_0xb8c1('0x25')]);_0x515aaa[_0xb8c1('0x2f')]=_[_0xb8c1('0x2c')](_0xb0f290[_0xb8c1('0x2d')],qs[_0xb8c1('0x2e')](_0x573ce4[_0xb8c1('0x25')][_0xb8c1('0x2e')]));_0x515aaa[_0xb8c1('0x2f')]=_0x515aaa[_0xb8c1('0x2f')][_0xb8c1('0x30')]?_0x515aaa[_0xb8c1('0x2f')]:_0xb0f290[_0xb8c1('0x2d')];if(!_0x573ce4[_0xb8c1('0x25')][_0xb8c1('0x3c')](_0xb8c1('0x3d'))){_0x515aaa[_0xb8c1('0x17')]=qs[_0xb8c1('0x17')](_0x573ce4[_0xb8c1('0x25')][_0xb8c1('0x17')]);_0x515aaa['offset']=qs[_0xb8c1('0x15')](_0x573ce4['query'][_0xb8c1('0x15')]);}_0x515aaa['order']=qs[_0xb8c1('0x3e')](_0x573ce4[_0xb8c1('0x25')][_0xb8c1('0x3e')]);_0x515aaa[_0xb8c1('0x3f')]=qs[_0xb8c1('0x2b')](_['pick'](_0x573ce4[_0xb8c1('0x25')],_0xb0f290['filters']));_0x515aaa[_0xb8c1('0x3f')][_0xb8c1('0x40')]=_0x56f5e6['id'];if(_0x573ce4[_0xb8c1('0x25')]['filter']){_0x515aaa[_0xb8c1('0x3f')]=_['merge'](_0x515aaa[_0xb8c1('0x3f')],{'$or':_[_0xb8c1('0x1f')](_0x515aaa[_0xb8c1('0x2f')],function(_0x1cad4e){var _0x5d30a9={};_0x5d30a9[_0x1cad4e]={'$like':'%'+_0x573ce4[_0xb8c1('0x25')][_0xb8c1('0x41')]+'%'};return _0x5d30a9;})});}if(_0x573ce4[_0xb8c1('0x25')]['$gte']){var _0x124958=_0x573ce4[_0xb8c1('0x25')][_0xb8c1('0x42')][_0xb8c1('0x43')](',');var _0xc5384e={};_0xc5384e[_0x124958[0x0]]={'$gte':moment(_0x124958[0x1])[_0xb8c1('0x44')](_0xb8c1('0x45'))};_0x515aaa['where']=_[_0xb8c1('0x31')](_0x515aaa[_0xb8c1('0x3f')],_0xc5384e);}_0x515aaa=_[_0xb8c1('0x31')]({},_0x515aaa,_0x573ce4['options']);return db[_0xb8c1('0x46')][_0xb8c1('0x18')]({'where':_0x515aaa[_0xb8c1('0x3f')]})['then'](function(_0x21aa41){_0x346326['count']=_0x21aa41;if(_0x573ce4[_0xb8c1('0x25')]['includeAll']){_0x515aaa['include']=[{'all':!![]}];}return db[_0xb8c1('0x46')]['findAll'](_0x515aaa);})[_0xb8c1('0x26')](function(_0x168c10){if(_0x573ce4[_0xb8c1('0x25')]['inlineCss']===_0xb8c1('0x47')){for(var _0x3d79e7=0x0;_0x3d79e7<_0x168c10[_0xb8c1('0x30')];_0x3d79e7++){_0x168c10[_0x3d79e7][_0xb8c1('0x35')]=juice(_0x168c10[_0x3d79e7][_0xb8c1('0x35')]);}}_0x346326[_0xb8c1('0x48')]=_0x168c10;return _0x346326;});}})['then'](respondWithFilteredResult(_0x4a2d1f,_0x515aaa))[_0xb8c1('0x27')](handleError(_0x4a2d1f,null));};exports['addTags']=function(_0x10f6ed,_0x3cbd10){return db[_0xb8c1('0x20')]['find']({'where':{'id':_0x10f6ed['params']['id']}})['then'](handleEntityNotFound(_0x3cbd10,null))[_0xb8c1('0x26')](function(_0x4df40c){if(_0x4df40c){return _0x4df40c[_0xb8c1('0x49')](_0x10f6ed['body'][_0xb8c1('0x38')],_[_0xb8c1('0x39')](_0x10f6ed[_0xb8c1('0x35')],['ids','id'])||{})[_0xb8c1('0x4a')](function(){return db[_0xb8c1('0x4b')][_0xb8c1('0x23')]({'attributes':['id',_0xb8c1('0x1c'),_0xb8c1('0x4c')],'where':{'id':_0x10f6ed[_0xb8c1('0x35')]['ids']}});})[_0xb8c1('0x26')](function(_0x4b213b){socket['emit'](_0xb8c1('0x4d'),{'id':Number(_0x10f6ed['params']['id']),'tags':_0x4b213b||[]});return{'id':Number(_0x10f6ed[_0xb8c1('0x28')]['id']),'tags':_0x4b213b||[]};});}})[_0xb8c1('0x26')](respondWithResult(_0x3cbd10,null))['catch'](handleError(_0x3cbd10,null));};exports[_0xb8c1('0x4e')]=function(_0xb8f5d7,_0x5e4fcc){return db[_0xb8c1('0x20')]['find']({'where':{'id':_0xb8f5d7[_0xb8c1('0x28')]['id']}})[_0xb8c1('0x26')](handleEntityNotFound(_0x5e4fcc,null))['then'](function(_0x423b1c){if(_0x423b1c){return _0x423b1c[_0xb8c1('0x4e')](_0xb8f5d7[_0xb8c1('0x25')][_0xb8c1('0x38')]);}})[_0xb8c1('0x26')](respondWithStatusCode(_0x5e4fcc,null))['catch'](handleError(_0x5e4fcc,null));};exports['download']=function(_0x47e465,_0x4c4856){var _0x518d7d=moment()[_0xb8c1('0x4f')]()[_0xb8c1('0x50')]();var _0x367e4b=path[_0xb8c1('0x51')](config[_0xb8c1('0x52')],_0xb8c1('0x53'),'files','tmp');var _0x4d3ea1=path[_0xb8c1('0x51')](config[_0xb8c1('0x52')],_0xb8c1('0x53'),_0xb8c1('0x54'),_0xb8c1('0x55'));var _0x9dbe25=path[_0xb8c1('0x51')](_0x367e4b,_0x518d7d);var _0x519d51=util['format'](_0xb8c1('0x56'),_0x47e465[_0xb8c1('0x28')]['id'],_0x518d7d);var _0x1cbfe9=path[_0xb8c1('0x51')](_0x367e4b,_0x519d51);var _0x524c04=[];if(_0x47e465[_0xb8c1('0x25')]['attachments']){_0x524c04[_0xb8c1('0x57')]({'model':db[_0xb8c1('0x58')],'as':_0xb8c1('0x59'),'raw':!![]});}var _0x388a79=[{'model':db[_0xb8c1('0x46')],'as':'Messages','attributes':['id',_0xb8c1('0x35'),'from','to','cc',_0xb8c1('0x5a'),_0xb8c1('0x5b'),'createdAt'],'where':{'secret':![]},'order':qs[_0xb8c1('0x3e')]('id'),'include':_0x524c04}];return db[_0xb8c1('0x20')][_0xb8c1('0x33')]({'where':{'id':_0x47e465['params']['id']},'include':_0x388a79})[_0xb8c1('0x26')](handleEntityNotFound(_0x4c4856,null))[_0xb8c1('0x26')](function(_0x626c09){if(_0x626c09&&_0x626c09[_0xb8c1('0x5c')]){var _0x37d18d=_0x626c09[_0xb8c1('0x5d')]({'plain':!![]});fs['mkdirSync'](_0x9dbe25);return BPromise['each'](_0x37d18d['Messages'],function(_0x2a8273,_0x3c55b3){var _0x5b44ed={'from':_0x2a8273[_0xb8c1('0x5e')],'to':_0x2a8273['to']||_0xb8c1('0x5f'),'subject':_0x2a8273[_0xb8c1('0x5b')],'html':htmlEntities[_0xb8c1('0x60')](_0x2a8273[_0xb8c1('0x35')]),'headers':{'Date':moment(_0x2a8273[_0xb8c1('0x61')])[_0xb8c1('0x44')](_0xb8c1('0x62'))},'attachments':[]};if(_0x2a8273['cc']){_0x5b44ed[_0xb8c1('0x63')]['Cc']=_0x2a8273['cc'];}if(_0x2a8273[_0xb8c1('0x5a')]){_0x5b44ed['headers'][_0xb8c1('0x64')]=_0x2a8273[_0xb8c1('0x5a')];}return new BPromise(function(_0x17e546,_0x519b16){if(_0x2a8273['Attachments']){for(var _0x13fe08=0x0;_0x13fe08<_0x2a8273['Attachments'][_0xb8c1('0x30')];_0x13fe08++){var _0x519340=_0x2a8273[_0xb8c1('0x59')][_0x13fe08];var _0xd9abb8=path[_0xb8c1('0x51')](_0x4d3ea1,_0x519340[_0xb8c1('0x65')]);if(fs['existsSync'](_0xd9abb8)){_0x5b44ed[_0xb8c1('0x55')]['push']({'name':_0x519340['name'],'contentType':_0x519340[_0xb8c1('0x21')],'data':fs[_0xb8c1('0x66')](_0xd9abb8)});}}}emlformat[_0xb8c1('0x67')](_0x5b44ed,function(_0x3f8be5,_0x4108d5){if(_0x3f8be5)return _0x519b16(_0x3f8be5);fs[_0xb8c1('0x68')](path[_0xb8c1('0x51')](_0x9dbe25,util[_0xb8c1('0x44')](_0xb8c1('0x69'),_0x3c55b3)),_0x4108d5);return _0x17e546(_0x4108d5);});});})[_0xb8c1('0x26')](function(){return new BPromise(function(_0x21bf20,_0x9b43c6){zipdir(_0x9dbe25,{'saveTo':_0x1cbfe9},function(_0x348f23,_0x326d6b){if(_0x348f23)return _0x9b43c6(_0x348f23);return _0x21bf20(_0x326d6b);});})['then'](function(){return new BPromise(function(_0x1e897e,_0x48fb77){rimraf(_0x9dbe25,function(_0x5a9abc){if(_0x5a9abc)_0x48fb77(_0x5a9abc);return _0x1e897e();});});})[_0xb8c1('0x26')](function(){return _0x4c4856[_0xb8c1('0x6a')](_0x1cbfe9,_0x519d51,function(_0x2a0da4){if(!_0x2a0da4)fs[_0xb8c1('0x6b')](_0x1cbfe9);});});});}else{return _0x4c4856['sendStatus'](0xc8);}})[_0xb8c1('0x27')](handleError(_0x4c4856,null));};
\ No newline at end of file
index 8955c63..678a224 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0x1df1=['update','then','setDataValue','map','findAll','unreadMessages','emit','catch','hasOwnProperty','hook','exports','events','../../mysqldb','MailMessage','setMaxListeners','save'];(function(_0x10ae53,_0x28e3e5){var _0x1157bb=function(_0x5517f1){while(--_0x5517f1){_0x10ae53['push'](_0x10ae53['shift']());}};_0x1157bb(++_0x28e3e5);}(_0x1df1,0x9b));var _0x11df=function(_0x22a297,_0x26b279){_0x22a297=_0x22a297-0x0;var _0x1b40df=_0x1df1[_0x22a297];return _0x1b40df;};'use strict';var EventEmitter=require(_0x11df('0x0'));var MailInteraction=require(_0x11df('0x1'))['db']['MailInteraction'];var MailMessage=require(_0x11df('0x1'))['db'][_0x11df('0x2')];var MailInteractionEvents=new EventEmitter();MailInteractionEvents[_0x11df('0x3')](0x0);var events={'afterCreate':_0x11df('0x4'),'afterUpdate':_0x11df('0x5'),'afterDestroy':'remove'};function emitEvent(_0x33d9cb){return function(_0xdc96a9,_0xc4e99e,_0x1edc51){_0xdc96a9['getUsers']({'attributes':['id'],'raw':!![]})[_0x11df('0x6')](function(_0xe0369c){_0xdc96a9[_0x11df('0x7')]('Users',_0xe0369c[_0x11df('0x8')](function(_0x1f4705){return{'id':_0x1f4705['id']};}));return MailMessage[_0x11df('0x9')]({'where':{'MailInteractionId':_0xdc96a9['id'],'direction':'in','read':![]},'raw':!![]});})['then'](function(_0x955c49){_0xdc96a9[_0x11df('0x7')](_0x11df('0xa'),_0x955c49['length']);MailInteractionEvents['emit'](_0x33d9cb+':'+_0xdc96a9['id'],_0xdc96a9);MailInteractionEvents[_0x11df('0xb')](_0x33d9cb,_0xdc96a9);_0x1edc51(null);})[_0x11df('0xc')](_0x1edc51(null));};}for(var e in events){if(events[_0x11df('0xd')](e)){var event=events[e];MailInteraction[_0x11df('0xe')](e,emitEvent(event));}}module[_0x11df('0xf')]=MailInteractionEvents;
\ No newline at end of file
index 78bb64e..3edf963 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0x5783=['utf8mb4_unicode_ci','lodash','util','../../config/logger','api','bluebird','request-promise','rimraf','./mailInteraction.attributes','define','MailInteraction','fti_mail_interactions','FULLTEXT','substatus','substatusAt','format','closed','closedAt','changed','YYYY-MM-DD\x20HH:mm:ss','models','get','MailMessage','update','then','catch','utf8mb4'];(function(_0x17bc9c,_0x388a0a){var _0x42fbfe=function(_0x1bb8ba){while(--_0x1bb8ba){_0x17bc9c['push'](_0x17bc9c['shift']());}};_0x42fbfe(++_0x388a0a);}(_0x5783,0xf4));var _0x3578=function(_0x2d1cb9,_0x5358e9){_0x2d1cb9=_0x2d1cb9-0x0;var _0x25d22d=_0x5783[_0x2d1cb9];return _0x25d22d;};'use strict';var _=require(_0x3578('0x0'));var util=require(_0x3578('0x1'));var logger=require(_0x3578('0x2'))(_0x3578('0x3'));var moment=require('moment');var BPromise=require(_0x3578('0x4'));var rp=require(_0x3578('0x5'));var fs=require('fs');var path=require('path');var rimraf=require(_0x3578('0x6'));var config=require('../../config/environment');var attributes=require(_0x3578('0x7'));module['exports']=function(_0x31cc05,_0x43e940){return _0x31cc05[_0x3578('0x8')](_0x3578('0x9'),attributes,{'tableName':'mail_interactions','paranoid':![],'indexes':[{'name':_0x3578('0xa'),'fields':['subject','to'],'type':_0x3578('0xb')}],'timestamps':!![],'hooks':{'beforeCreate':function(_0x5de63b,_0x321214,_0x44abce){if(_0x5de63b[_0x3578('0xc')]){_0x5de63b[_0x3578('0xd')]=moment()[_0x3578('0xe')]('YYYY-MM-DD\x20HH:mm:ss');}if(_0x5de63b[_0x3578('0xf')]){_0x5de63b[_0x3578('0x10')]=moment()[_0x3578('0xe')]('YYYY-MM-DD\x20HH:mm:ss');}_0x44abce(null,_0x321214);},'beforeUpdate':function(_0x3783bb,_0x34de28,_0x5f3aec){if(_0x3783bb[_0x3578('0x11')](_0x3578('0xc'))){_0x3783bb[_0x3578('0xd')]=_0x3783bb[_0x3578('0xc')]?moment()[_0x3578('0xe')]('YYYY-MM-DD\x20HH:mm:ss'):null;}if(_0x3783bb[_0x3578('0x11')](_0x3578('0xf'))){_0x3783bb[_0x3578('0x10')]=moment()[_0x3578('0xe')](_0x3578('0x12'));_0x3783bb['substatus']=null;_0x3783bb[_0x3578('0xd')]=null;}_0x5f3aec(null,_0x3783bb);},'afterUpdate':function(_0x179fe9,_0xcc78b2,_0x7ec2b8){var _0x137fab=_0x31cc05[_0x3578('0x13')];var _0x12759f=_0x179fe9[_0x3578('0x14')]({'plain':!![]});if(_0x12759f['closed']){return _0x137fab[_0x3578('0x15')][_0x3578('0x16')]({'read':!![]},{'where':{'MailInteractionId':_0x12759f['id']}})[_0x3578('0x17')](function(){_0x7ec2b8();})[_0x3578('0x18')](function(_0x485c2d){_0x7ec2b8(_0x485c2d);});}else{_0x7ec2b8();}}},'charset':_0x3578('0x19'),'collate':_0x3578('0x1a')});};
\ No newline at end of file
index 4bb0852..c7e4895 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0x956b=['ioredis','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','http','redis','defaults','localhost','socket.io-emitter','./mailInteraction.socket','request','then','request\x20sent','debug','MailInteraction,\x20%s,\x20%s,\x20%s','stringify','error','code','message','MailInteraction,\x20%s,\x20%s','info','result','catch','UpdateMailInteraction','update','body','options','raw','where','AddTagsToMailInteraction','find','addTags','ids','omit','spread','AddTags','lodash','util','randomstring'];(function(_0x1ddedd,_0x485606){var _0xa3e1ac=function(_0x580444){while(--_0x580444){_0x1ddedd['push'](_0x1ddedd['shift']());}};_0xa3e1ac(++_0x485606);}(_0x956b,0x16e));var _0xb956=function(_0x3bec36,_0x42ec0d){_0x3bec36=_0x3bec36-0x0;var _0x184f4a=_0x956b[_0x3bec36];return _0x184f4a;};'use strict';var _=require(_0xb956('0x0'));var util=require(_0xb956('0x1'));var moment=require('moment');var BPromise=require('bluebird');var rs=require(_0xb956('0x2'));var fs=require('fs');var Redis=require(_0xb956('0x3'));var db=require('../../mysqldb')['db'];var utils=require(_0xb956('0x4'));var logger=require(_0xb956('0x5'))(_0xb956('0x6'));var config=require(_0xb956('0x7'));var jayson=require(_0xb956('0x8'));var client=jayson['client'][_0xb956('0x9')]({'port':0x232a});config[_0xb956('0xa')]=_[_0xb956('0xb')](config[_0xb956('0xa')],{'host':_0xb956('0xc'),'port':0x18eb});var socket=require(_0xb956('0xd'))(new Redis(config[_0xb956('0xa')]));require(_0xb956('0xe'))['register'](socket);function respondWithRpcPromise(_0x4254bb,_0x5533d5,_0xcd00c8){return new BPromise(function(_0xd9f4af,_0x1afe03){return client[_0xb956('0xf')](_0x4254bb,_0xcd00c8)[_0xb956('0x10')](function(_0x33bf55){logger['info']('MailInteraction,\x20%s,\x20%s',_0x5533d5,_0xb956('0x11'));logger[_0xb956('0x12')](_0xb956('0x13'),_0x5533d5,_0xb956('0x11'),JSON[_0xb956('0x14')](_0x33bf55));if(_0x33bf55[_0xb956('0x15')]){if(_0x33bf55[_0xb956('0x15')][_0xb956('0x16')]===0x1f4){logger['error']('MailInteraction,\x20%s,\x20%s',_0x5533d5,_0x33bf55['error'][_0xb956('0x17')]);return _0x1afe03(_0x33bf55['error'][_0xb956('0x17')]);}logger['error'](_0xb956('0x18'),_0x5533d5,_0x33bf55['error'][_0xb956('0x17')]);return _0xd9f4af(_0x33bf55[_0xb956('0x15')][_0xb956('0x17')]);}else{logger[_0xb956('0x19')]('MailInteraction,\x20%s,\x20%s',_0x5533d5,_0xb956('0x11'));_0xd9f4af(_0x33bf55[_0xb956('0x1a')][_0xb956('0x17')]);}})[_0xb956('0x1b')](function(_0x29c42d){logger[_0xb956('0x15')](_0xb956('0x18'),_0x5533d5,_0x29c42d);_0x1afe03(_0x29c42d);});});}exports[_0xb956('0x1c')]=function(_0x203448){var _0x4067fa=this;return new Promise(function(_0x4b97b5,_0x2123f1){return db['MailInteraction'][_0xb956('0x1d')](_0x203448[_0xb956('0x1e')],{'raw':_0x203448[_0xb956('0x1f')]?_0x203448[_0xb956('0x1f')][_0xb956('0x20')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x203448[_0xb956('0x1f')]?_0x203448[_0xb956('0x1f')][_0xb956('0x21')]||null:null,'attributes':_0x203448[_0xb956('0x1f')]?_0x203448[_0xb956('0x1f')]['attributes']||null:null,'limit':_0x203448[_0xb956('0x1f')]?_0x203448['options']['limit']||null:null})[_0xb956('0x10')](function(_0x2eaae5){logger[_0xb956('0x19')](_0xb956('0x1c'),_0x203448);logger[_0xb956('0x12')](_0xb956('0x1c'),_0x203448,JSON[_0xb956('0x14')](_0x2eaae5));_0x4b97b5(_0x2eaae5);})['catch'](function(_0x25b103){logger[_0xb956('0x15')](_0xb956('0x1c'),_0x25b103[_0xb956('0x17')],_0x203448);_0x2123f1(_0x4067fa[_0xb956('0x15')](0x1f4,_0x25b103[_0xb956('0x17')]));});});};exports[_0xb956('0x22')]=function(_0x3f37ff){return new Promise(function(_0x238168,_0x106d4c){return db['MailInteraction'][_0xb956('0x23')]({'where':_0x3f37ff[_0xb956('0x1f')]?_0x3f37ff[_0xb956('0x1f')]['where']||null:null})[_0xb956('0x10')](function(_0xb9673f){if(_0xb9673f){return _0xb9673f[_0xb956('0x24')](_0x3f37ff[_0xb956('0x1e')][_0xb956('0x25')],_[_0xb956('0x26')](_0x3f37ff['body'],[_0xb956('0x25'),'id'])||{});}})[_0xb956('0x27')](function(_0x2f711a){logger[_0xb956('0x19')](_0xb956('0x28'),_0x3f37ff);logger[_0xb956('0x12')](_0xb956('0x28'),_0x3f37ff,JSON[_0xb956('0x14')](_0x2f711a));_0x238168(_0x2f711a);})['catch'](function(_0x1e9193){logger[_0xb956('0x15')](_0xb956('0x28'),_0x1e9193[_0xb956('0x17')],_0x3f37ff);_0x106d4c(_this[_0xb956('0x15')](0x1f4,_0x1e9193[_0xb956('0x17')]));});});};
\ No newline at end of file
index f98813e..f944e2a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0xd5ed=['emit','removeListener','register','length','mailInteraction:','./mailInteraction.events','remove','update'];(function(_0x234318,_0xf22f31){var _0x1ab719=function(_0x10a0b1){while(--_0x10a0b1){_0x234318['push'](_0x234318['shift']());}};_0x1ab719(++_0xf22f31);}(_0xd5ed,0x145));var _0xdd5e=function(_0x22c111,_0x101f2a){_0x22c111=_0x22c111-0x0;var _0x354a58=_0xd5ed[_0x22c111];return _0x354a58;};'use strict';var MailInteractionEvents=require(_0xdd5e('0x0'));var events=['save',_0xdd5e('0x1'),_0xdd5e('0x2')];function createListener(_0x333c3b,_0x5b38c9){return function(_0x418e31){_0x5b38c9[_0xdd5e('0x3')](_0x333c3b,_0x418e31);};}function removeListener(_0xee4ce7,_0xea8f0d){return function(){MailInteractionEvents[_0xdd5e('0x4')](_0xee4ce7,_0xea8f0d);};}exports[_0xdd5e('0x5')]=function(_0x1a31b3){for(var _0x312cca=0x0,_0x5507ef=events[_0xdd5e('0x6')];_0x312cca<_0x5507ef;_0x312cca++){var _0x35dacb=events[_0x312cca];var _0x5e7892=createListener(_0xdd5e('0x7')+_0x35dacb,_0x1a31b3);MailInteractionEvents['on'](_0x35dacb,_0x5e7892);}};
\ No newline at end of file
index 948dc2a..ee7f812 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0x047f=['multer','util','path','connect-timeout','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','get','index','/describe','isAuthenticated','describe','/:id','show','/:id/download','download','post','tracked','mail','put','update','accept','/:id/reject','reject','delete','destroy'];(function(_0x3474ac,_0x22d0f7){var _0x5345ec=function(_0x45056e){while(--_0x45056e){_0x3474ac['push'](_0x3474ac['shift']());}};_0x5345ec(++_0x22d0f7);}(_0x047f,0xfc));var _0xf047=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x047f[_0x3dd15e];return _0x231fd0;};'use strict';var multer=require(_0xf047('0x0'));var util=require(_0xf047('0x1'));var path=require(_0xf047('0x2'));var timeout=require(_0xf047('0x3'));var express=require('express');var router=express[_0xf047('0x4')]();var fs_extra=require(_0xf047('0x5'));var auth=require(_0xf047('0x6'));var interaction=require(_0xf047('0x7'));var config=require(_0xf047('0x8'));var controller=require('./mailMessage.controller');router[_0xf047('0x9')]('/',auth['isAuthenticated'](),controller[_0xf047('0xa')]);router[_0xf047('0x9')](_0xf047('0xb'),auth[_0xf047('0xc')](),controller[_0xf047('0xd')]);router[_0xf047('0x9')](_0xf047('0xe'),auth['isAuthenticated'](),controller[_0xf047('0xf')]);router['get'](_0xf047('0x10'),auth[_0xf047('0xc')](),controller[_0xf047('0x11')]);router[_0xf047('0x12')]('/',auth['isAuthenticated'](),interaction[_0xf047('0x13')](_0xf047('0x14'),'mailmessage:create'),controller['create']);router[_0xf047('0x15')](_0xf047('0xe'),auth['isAuthenticated'](),controller[_0xf047('0x16')]);router[_0xf047('0x15')]('/:id/accept',auth[_0xf047('0xc')](),controller[_0xf047('0x17')]);router[_0xf047('0x15')](_0xf047('0x18'),auth[_0xf047('0xc')](),controller[_0xf047('0x19')]);router[_0xf047('0x1a')](_0xf047('0xe'),auth[_0xf047('0xc')](),controller[_0xf047('0x1b')]);module['exports']=router;
\ No newline at end of file
index 123774c..f573e33 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0xca43=['long','medium','BOOLEAN','out','STRING','DATE','INTEGER','ENUM','Email','Chat','sequelize','lodash','exports','TEXT'];(function(_0x59c530,_0x4a834c){var _0x19b21a=function(_0x253e9d){while(--_0x253e9d){_0x59c530['push'](_0x59c530['shift']());}};_0x19b21a(++_0x4a834c);}(_0xca43,0x106));var _0x3ca4=function(_0x459cb5,_0x1accbe){_0x459cb5=_0x459cb5-0x0;var _0x3e712c=_0xca43[_0x459cb5];return _0x3e712c;};'use strict';var Sequelize=require(_0x3ca4('0x0'));var _=require(_0x3ca4('0x1'));module[_0x3ca4('0x2')]={'body':{'type':Sequelize[_0x3ca4('0x3')](_0x3ca4('0x4')),'allowNull':![]},'plainBody':{'type':Sequelize['TEXT'](_0x3ca4('0x5'))},'read':{'type':Sequelize[_0x3ca4('0x6')],'defaultValue':![]},'direction':{'type':Sequelize['ENUM']('in','out'),'defaultValue':_0x3ca4('0x7'),'allowNull':![]},'messageId':{'type':Sequelize[_0x3ca4('0x8')](0x1fe)},'from':{'type':Sequelize[_0x3ca4('0x8')]},'to':{'type':Sequelize[_0x3ca4('0x3')](_0x3ca4('0x4'))},'cc':{'type':Sequelize[_0x3ca4('0x3')](_0x3ca4('0x4'))},'bcc':{'type':Sequelize[_0x3ca4('0x3')](_0x3ca4('0x4'))},'subject':{'type':Sequelize[_0x3ca4('0x3')]},'sentAt':{'type':Sequelize[_0x3ca4('0x9')]},'attach':{'type':Sequelize[_0x3ca4('0xa')],'defaultValue':0x0},'secret':{'type':Sequelize[_0x3ca4('0x6')],'defaultValue':![]},'readAt':{'type':Sequelize[_0x3ca4('0x9')]},'originTo':{'type':Sequelize[_0x3ca4('0x3')](_0x3ca4('0x4'))},'originCc':{'type':Sequelize[_0x3ca4('0x3')](_0x3ca4('0x4'))},'originChannel':{'type':Sequelize[_0x3ca4('0xb')](_0x3ca4('0xc'),_0x3ca4('0xd')),'defaultValue':_0x3ca4('0xc'),'allowNull':![]}};
\ No newline at end of file
index f607a35..a4d8936 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0xd74f=['email','internal','interface','SIP/%s','channel','motionChannel','event','fromString','EventManager','acceptmessage','reject','[MAILMESSAGE:REJECT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s','role','RejectMessage','rejectMessage','sequelize','User','rejectmessage','download','unix','toString','server','files','tmp','root','message-%s.eml','bcc','subject','createdAt','Attachment','Attachments','ddd,\x20DD\x20MMM\x20YYYY\x20HH:mm:ss\x20ZZ','headers','existsSync','push','readFileSync','build','eml-format','bluebird','util','path','lodash','html-to-text','../../components/parsers/qs','../../config/logger','api','mail-interactions','../../config/environment','../../mysqldb','redis','defaults','localhost','socket.io-emitter','html-entities','register','client','http','request','then','info','request\x20sent','debug','stringify','error','MailMessage,\x20%s,\x20%s','message','catch','status','json','offset','limit','undefined','count','Content-Range','update','destroy','end','name','send','index','map','MailMessage','fieldName','type','key','query','intersection','attributes','model','fields','nolimit','order','sort','filters','filter','where','merge','VIRTUAL','options','include','findAll','rows','show','params','keys','includeAll','find','body','describe','create','direction','secret','MailAccountId','CmList','List','CmContact','Contacts','updatedAt','DESC','Smtp','CloudProvider','attachments','length','join','basename','ListId','List\x20not\x20found','SendMail','sendMail','messageId','YYYY-MM-DD\x20HH:mm:ss','accept','mail','UserId','user','agent','get','MailInteraction','MailInteractionId','isNil','format','interaction','[MAILMESSAGE:ACCEPT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s','null','SELECT\x20*\x20FROM\x20cm_contacts\x20WHERE\x20id\x20=\x20','ContactId','Sequelize','QueryTypes','contact','fullname'];(function(_0x2fe8a2,_0x2b1153){var _0x6d086e=function(_0x2c742c){while(--_0x2c742c){_0x2fe8a2['push'](_0x2fe8a2['shift']());}};_0x6d086e(++_0x2b1153);}(_0xd74f,0xbb));var _0xfd74=function(_0x349961,_0x38372e){_0x349961=_0x349961-0x0;var _0x127dd5=_0xd74f[_0x349961];return _0x127dd5;};'use strict';var emlformat=require(_0xfd74('0x0'));var moment=require('moment');var BPromise=require(_0xfd74('0x1'));var util=require(_0xfd74('0x2'));var path=require(_0xfd74('0x3'));var fs=require('fs');var _=require(_0xfd74('0x4'));var Redis=require('ioredis');var htmlToText=require(_0xfd74('0x5'));var qs=require(_0xfd74('0x6'));var logger=require(_0xfd74('0x7'))(_0xfd74('0x8'));var interaction_log=require('../../config/logger')(_0xfd74('0x9'));var config=require(_0xfd74('0xa'));var db=require(_0xfd74('0xb'))['db'];config[_0xfd74('0xc')]=_[_0xfd74('0xd')](config[_0xfd74('0xc')],{'host':_0xfd74('0xe'),'port':0x18eb});var socket=require(_0xfd74('0xf'))(new Redis(config['redis']));var htmlEntities=require(_0xfd74('0x10'));require('./mailMessage.socket')[_0xfd74('0x11')](socket);var jayson=require('jayson/promise');var client=jayson['client']['http']({'port':0x232c});var client9003=jayson[_0xfd74('0x12')]['http']({'port':0x232b});var client9002=jayson[_0xfd74('0x12')][_0xfd74('0x13')]({'port':0x232a});function respondWithRpcPromise(_0x2d8ccc,_0x597a88,_0x43669b,_0x48451f){return new BPromise(function(_0x863526,_0x270cb4){var _0x45dce8=_0x48451f||client;return _0x45dce8[_0xfd74('0x14')](_0x2d8ccc,_0x43669b)[_0xfd74('0x15')](function(_0x718565){logger[_0xfd74('0x16')]('MailMessage,\x20%s,\x20%s',_0x597a88,_0xfd74('0x17'));logger[_0xfd74('0x18')]('MailMessage,\x20%s,\x20%s,\x20%s',_0x597a88,'request\x20sent',JSON[_0xfd74('0x19')](_0x718565));if(_0x718565[_0xfd74('0x1a')]){if(_0x718565['error']['code']===0x1f4){logger[_0xfd74('0x1a')](_0xfd74('0x1b'),_0x597a88,_0x718565[_0xfd74('0x1a')][_0xfd74('0x1c')]);return _0x270cb4(_0x718565['error']['message']);}logger['error']('MailMessage,\x20%s,\x20%s',_0x597a88,_0x718565['error'][_0xfd74('0x1c')]);return _0x863526(_0x718565[_0xfd74('0x1a')]['message']);}else{logger[_0xfd74('0x16')](_0xfd74('0x1b'),_0x597a88,_0xfd74('0x17'));_0x863526(_0x718565['result'][_0xfd74('0x1c')]);}})[_0xfd74('0x1d')](function(_0x1a0108){logger[_0xfd74('0x1a')](_0xfd74('0x1b'),_0x597a88,_0x1a0108);_0x270cb4(_0x1a0108);});});}function respondWithResult(_0x19863a,_0x5bba47){_0x5bba47=_0x5bba47||0xc8;return function(_0x2b02e0){if(_0x2b02e0){return _0x19863a[_0xfd74('0x1e')](_0x5bba47)[_0xfd74('0x1f')](_0x2b02e0);}};}function respondWithFilteredResult(_0x1d1b7f,_0x3d1804){return function(_0x5e6ebf){if(_0x5e6ebf){var _0x5494af=typeof _0x3d1804[_0xfd74('0x20')]==='undefined'&&typeof _0x3d1804[_0xfd74('0x21')]===_0xfd74('0x22');var _0x2cce2e=_0x5e6ebf[_0xfd74('0x23')];var _0x4f074d=_0x5494af?0x0:_0x3d1804[_0xfd74('0x20')];var _0x1d4eec=_0x5494af?_0x5e6ebf[_0xfd74('0x23')]:_0x3d1804['offset']+_0x3d1804[_0xfd74('0x21')];var _0x5a1724;if(_0x1d4eec>=_0x2cce2e){_0x1d4eec=_0x2cce2e;_0x5a1724=0xc8;}else{_0x5a1724=0xce;}_0x1d1b7f['status'](_0x5a1724);return _0x1d1b7f['set'](_0xfd74('0x24'),_0x4f074d+'-'+_0x1d4eec+'/'+_0x2cce2e)[_0xfd74('0x1f')](_0x5e6ebf);}return null;};}function saveUpdates(_0xbcffe2){return function(_0x52730a){if(_0x52730a){return _0x52730a[_0xfd74('0x25')](_0xbcffe2)[_0xfd74('0x15')](function(_0x3f8f02){return _0x3f8f02;});}return null;};}function removeEntity(_0x748dc5){return function(_0x25baab){if(_0x25baab){return _0x25baab[_0xfd74('0x26')]()['then'](function(){_0x748dc5[_0xfd74('0x1e')](0xcc)[_0xfd74('0x27')]();});}};}function handleEntityNotFound(_0xc3e40d){return function(_0x55cfc2){if(!_0x55cfc2){_0xc3e40d['sendStatus'](0x194);}return _0x55cfc2;};}function handleError(_0x5ac7f3,_0x35c796){_0x35c796=_0x35c796||0x1f4;return function(_0x5bbcb1){logger['error'](_0x5bbcb1['stack']);if(_0x5bbcb1['name']){delete _0x5bbcb1[_0xfd74('0x28')];}_0x5ac7f3[_0xfd74('0x1e')](_0x35c796)[_0xfd74('0x29')](_0x5bbcb1);};}exports[_0xfd74('0x2a')]=function(_0x4894cf,_0x27a7be){var _0xbba812={},_0x5a80c8={},_0x587060={'count':0x0,'rows':[]};var _0x18dbf0=_[_0xfd74('0x2b')](db[_0xfd74('0x2c')]['rawAttributes'],function(_0x445844){return{'name':_0x445844[_0xfd74('0x2d')],'type':_0x445844[_0xfd74('0x2e')][_0xfd74('0x2f')]};});_0x5a80c8['model']=_[_0xfd74('0x2b')](_0x18dbf0,_0xfd74('0x28'));_0x5a80c8[_0xfd74('0x30')]=_['keys'](_0x4894cf['query']);_0x5a80c8['filters']=_[_0xfd74('0x31')](_0x5a80c8['model'],_0x5a80c8[_0xfd74('0x30')]);_0xbba812[_0xfd74('0x32')]=_['intersection'](_0x5a80c8[_0xfd74('0x33')],qs[_0xfd74('0x34')](_0x4894cf['query'][_0xfd74('0x34')]));_0xbba812[_0xfd74('0x32')]=_0xbba812[_0xfd74('0x32')]['length']?_0xbba812['attributes']:_0x5a80c8[_0xfd74('0x33')];if(!_0x4894cf[_0xfd74('0x30')]['hasOwnProperty'](_0xfd74('0x35'))){_0xbba812[_0xfd74('0x21')]=qs[_0xfd74('0x21')](_0x4894cf[_0xfd74('0x30')][_0xfd74('0x21')]);_0xbba812[_0xfd74('0x20')]=qs['offset'](_0x4894cf['query'][_0xfd74('0x20')]);}_0xbba812[_0xfd74('0x36')]=qs[_0xfd74('0x37')](_0x4894cf[_0xfd74('0x30')][_0xfd74('0x37')]);_0xbba812['where']=qs['filters'](_['pick'](_0x4894cf[_0xfd74('0x30')],_0x5a80c8[_0xfd74('0x38')]),_0x18dbf0);if(_0x4894cf[_0xfd74('0x30')][_0xfd74('0x39')]){_0xbba812[_0xfd74('0x3a')]=_[_0xfd74('0x3b')](_0xbba812[_0xfd74('0x3a')],{'$or':_['map'](_0x18dbf0,function(_0x557735){if(_0x557735['type']!==_0xfd74('0x3c')){var _0x78ff5e={};_0x78ff5e[_0x557735[_0xfd74('0x28')]]={'$like':'%'+_0x4894cf['query'][_0xfd74('0x39')]+'%'};return _0x78ff5e;}})});}_0xbba812=_[_0xfd74('0x3b')]({},_0xbba812,_0x4894cf[_0xfd74('0x3d')]);var _0x2e72f9={'where':_0xbba812[_0xfd74('0x3a')]};return db[_0xfd74('0x2c')]['count'](_0x2e72f9)[_0xfd74('0x15')](function(_0x3d5f79){_0x587060['count']=_0x3d5f79;if(_0x4894cf['query']['includeAll']){_0xbba812[_0xfd74('0x3e')]=[{'all':!![]}];}return db[_0xfd74('0x2c')][_0xfd74('0x3f')](_0xbba812);})[_0xfd74('0x15')](function(_0xae9ef6){_0x587060[_0xfd74('0x40')]=_0xae9ef6;return _0x587060;})[_0xfd74('0x15')](respondWithFilteredResult(_0x27a7be,_0xbba812))[_0xfd74('0x1d')](handleError(_0x27a7be,null));};exports[_0xfd74('0x41')]=function(_0x59d987,_0x160a92){var _0xc40fb6={'raw':!![],'where':{'id':_0x59d987[_0xfd74('0x42')]['id']}},_0x26ea58={};_0x26ea58[_0xfd74('0x33')]=_['keys'](db['MailMessage']['rawAttributes']);_0x26ea58[_0xfd74('0x30')]=_[_0xfd74('0x43')](_0x59d987[_0xfd74('0x30')]);_0x26ea58[_0xfd74('0x38')]=_[_0xfd74('0x31')](_0x26ea58[_0xfd74('0x33')],_0x26ea58[_0xfd74('0x30')]);_0xc40fb6[_0xfd74('0x32')]=_[_0xfd74('0x31')](_0x26ea58[_0xfd74('0x33')],qs[_0xfd74('0x34')](_0x59d987['query']['fields']));_0xc40fb6['attributes']=_0xc40fb6[_0xfd74('0x32')]['length']?_0xc40fb6[_0xfd74('0x32')]:_0x26ea58[_0xfd74('0x33')];if(_0x59d987[_0xfd74('0x30')][_0xfd74('0x44')]){_0xc40fb6[_0xfd74('0x3e')]=[{'all':!![]}];}_0xc40fb6=_['merge']({},_0xc40fb6,_0x59d987[_0xfd74('0x3d')]);return db[_0xfd74('0x2c')][_0xfd74('0x45')](_0xc40fb6)['then'](handleEntityNotFound(_0x160a92,null))['then'](respondWithResult(_0x160a92,null))[_0xfd74('0x1d')](handleError(_0x160a92,null));};exports['update']=function(_0xeabdd1,_0x226e93){if(_0xeabdd1[_0xfd74('0x46')]['id']){delete _0xeabdd1[_0xfd74('0x46')]['id'];}return db['MailMessage'][_0xfd74('0x45')]({'where':{'id':_0xeabdd1[_0xfd74('0x42')]['id']}})[_0xfd74('0x15')](handleEntityNotFound(_0x226e93,null))['then'](saveUpdates(_0xeabdd1['body'],null))[_0xfd74('0x15')](respondWithResult(_0x226e93,null))[_0xfd74('0x1d')](handleError(_0x226e93,null));};exports[_0xfd74('0x26')]=function(_0x549357,_0x11be3c){return db[_0xfd74('0x2c')]['find']({'where':{'id':_0x549357[_0xfd74('0x42')]['id']}})[_0xfd74('0x15')](handleEntityNotFound(_0x11be3c,null))[_0xfd74('0x15')](removeEntity(_0x11be3c,null))[_0xfd74('0x1d')](handleError(_0x11be3c,null));};exports[_0xfd74('0x47')]=function(_0x3e7030,_0x32635b){return db[_0xfd74('0x2c')][_0xfd74('0x47')]()[_0xfd74('0x15')](respondWithResult(_0x32635b,null))['catch'](handleError(_0x32635b,null));};exports['create']=function(_0x39dbf0,_0x3d2ab2){return db[_0xfd74('0x2c')][_0xfd74('0x48')](_0x39dbf0['body'])[_0xfd74('0x15')](function(_0x2c6f84){if(_0x2c6f84){if(_0x2c6f84[_0xfd74('0x49')]==='out'&&!_0x2c6f84[_0xfd74('0x4a')]){var _0x2f765c,_0x548a98,_0x310b71;if(_0x39dbf0[_0xfd74('0x46')]['to']){_0x548a98=_0x39dbf0[_0xfd74('0x46')]['to']['split'](',')[0x0];}return db['MailAccount']['findOne']({'where':{'id':_0x2c6f84[_0xfd74('0x4b')]},'include':[{'model':db[_0xfd74('0x4c')],'as':_0xfd74('0x4d'),'include':[{'model':db[_0xfd74('0x4e')],'as':_0xfd74('0x4f'),'where':{'email':_0x548a98},'limit':0x1,'order':[[_0xfd74('0x50'),_0xfd74('0x51')]]}]},{'model':db['MailServerOut'],'as':_0xfd74('0x52'),'raw':!![],'include':[{'model':db[_0xfd74('0x53')],'as':_0xfd74('0x53'),'raw':!![]}]}]})[_0xfd74('0x15')](function(_0x1201a7){_0x2f765c=_0x1201a7;if(!_0x2f765c||!_0x2f765c[_0xfd74('0x52')])return;var _0x3e74ee=_0x2f765c['getSmtpOptions']();if(_0x39dbf0['body'][_0xfd74('0x54')]&&_0x39dbf0[_0xfd74('0x46')]['attachments'][_0xfd74('0x55')]){for(var _0x155222=0x0;_0x155222<_0x39dbf0[_0xfd74('0x46')][_0xfd74('0x54')]['length'];_0x155222+=0x1){_0x39dbf0['body'][_0xfd74('0x54')][_0x155222]={'filename':_0x39dbf0[_0xfd74('0x46')]['attachments'][_0x155222][_0xfd74('0x28')],'path':path[_0xfd74('0x56')](config['root'],'server/files/attachments',_0x39dbf0[_0xfd74('0x46')][_0xfd74('0x54')][_0x155222][_0xfd74('0x57')])};}}_0x310b71={'account':_0x3e74ee,'message':_0x39dbf0[_0xfd74('0x46')]};return;})[_0xfd74('0x15')](function(){if(_0x2f765c[_0xfd74('0x4d')]){if(_0x2f765c[_0xfd74('0x4d')][_0xfd74('0x4f')][_0xfd74('0x55')]){return _0x2f765c[_0xfd74('0x4d')][_0xfd74('0x4f')][0x0];}else{return db[_0xfd74('0x4e')][_0xfd74('0x48')](_[_0xfd74('0xd')](_0x39dbf0[_0xfd74('0x46')],{'firstName':_0x39dbf0[_0xfd74('0x46')]['to'],'email':_0x39dbf0[_0xfd74('0x46')]['to'],'phone':_0x39dbf0[_0xfd74('0x46')]['to'],'ListId':_0x2f765c[_0xfd74('0x58')]}));}}else{throw new Error(_0xfd74('0x59'));}})[_0xfd74('0x15')](function(){if(_0x310b71){return respondWithRpcPromise(_0xfd74('0x5a'),_0xfd74('0x5b'),_0x310b71,client9003)['then'](function(_0x452b0f){return _0x2c6f84[_0xfd74('0x25')]({'read':!![],'messageId':_0x452b0f[_0xfd74('0x5c')],'sentAt':moment()['format'](_0xfd74('0x5d'))});})['catch'](function(_0x4cdd55){logger[_0xfd74('0x1a')]('%s',JSON['stringify'](_0x4cdd55));return _0x2c6f84;});}return _0x2c6f84;});}return _0x2c6f84;}})['then'](respondWithResult(_0x3d2ab2,0xc9))[_0xfd74('0x1d')](handleError(_0x3d2ab2,null));};exports[_0xfd74('0x5e')]=function(_0x3a4b72,_0x45989a){var _0xaf38e3={'agent':{},'channel':_0xfd74('0x5f')};if(_0x3a4b72[_0xfd74('0x46')]['id']){delete _0x3a4b72['body']['id'];}_0x3a4b72['body']['read']=!![];_0x3a4b72[_0xfd74('0x46')]['readAt']=moment()['format'](_0xfd74('0x5d'));_0x3a4b72[_0xfd74('0x46')][_0xfd74('0x60')]=_0x3a4b72['body'][_0xfd74('0x60')]||_0x3a4b72[_0xfd74('0x61')]['id'];_0xaf38e3[_0xfd74('0x62')]['id']=_0x3a4b72[_0xfd74('0x46')][_0xfd74('0x60')];return db[_0xfd74('0x2c')][_0xfd74('0x45')]({'where':{'id':_0x3a4b72['params']['id'],'UserId':null}})['then'](handleEntityNotFound(_0x45989a,null))[_0xfd74('0x15')](saveUpdates(_0x3a4b72[_0xfd74('0x46')],null))['then'](function(_0x1b6248){if(_0x1b6248){_0xaf38e3['message']=_0x1b6248[_0xfd74('0x63')]({'plain':!![]});return db[_0xfd74('0x64')][_0xfd74('0x45')]({'where':{'id':_0x1b6248[_0xfd74('0x65')]}});}return null;})['then'](handleEntityNotFound(_0x45989a,null))[_0xfd74('0x15')](function(_0x21f4c3){if(_0x21f4c3){return _0x21f4c3[_0xfd74('0x25')]({'UserId':_0x3a4b72[_0xfd74('0x46')][_0xfd74('0x60')],'read1stAt':_[_0xfd74('0x66')](_0x21f4c3['read1stAt'])?moment()[_0xfd74('0x67')](_0xfd74('0x5d')):undefined});}return null;})[_0xfd74('0x15')](function(_0x283aad){if(_0x283aad){_0xaf38e3[_0xfd74('0x68')]=_0x283aad[_0xfd74('0x63')]({'plain':!![]});interaction_log[_0xfd74('0x16')](_0xfd74('0x69'),_0x3a4b72[_0xfd74('0x61')]['id'],_0x3a4b72['user'][_0xfd74('0x28')],_0x3a4b72['user']['role'],_0xaf38e3[_0xfd74('0x68')]['id'],_0x3a4b72[_0xfd74('0x46')]?JSON['stringify'](_0x3a4b72[_0xfd74('0x46')]):_0xfd74('0x6a'));return respondWithRpcPromise('AcceptMessage','acceptMessage',_0xaf38e3);}return null;})[_0xfd74('0x15')](function(_0x591578){var _0x412fda=_0xfd74('0x6b')+_0x591578[_0xfd74('0x1c')][_0xfd74('0x6c')];return db['sequelize'][_0xfd74('0x30')](_0x412fda,{'type':db[_0xfd74('0x6d')][_0xfd74('0x6e')]['SELECT'],'raw':!![]})[_0xfd74('0x15')](function(_0x29d386){return _0x29d386;});})[_0xfd74('0x15')](function(_0x5587ac){if(_0x5587ac){_0xaf38e3['message'][_0xfd74('0x6f')]=_0x5587ac[0x0];if(!_0x3a4b72[_0xfd74('0x46')][_0xfd74('0x60')])return;return db['User'][_0xfd74('0x45')]({'where':{'id':_0x3a4b72[_0xfd74('0x46')][_0xfd74('0x60')],'role':_0xfd74('0x62')},'attributes':['id',_0xfd74('0x28'),_0xfd74('0x70'),_0xfd74('0x71'),_0xfd74('0x72')],'raw':!![]});}return null;})[_0xfd74('0x15')](function(_0x3fa6c4){if(!_0x3fa6c4)return null;_0xaf38e3[_0xfd74('0x1c')]['agent']=_0x3fa6c4;return _0xaf38e3;})[_0xfd74('0x15')](function(_0x3eb2f6){if(_0x3eb2f6){if(_0x3a4b72['body']['manual']){_0xaf38e3['message'][_0xfd74('0x73')]=util[_0xfd74('0x67')](_0xfd74('0x74'),_0x3a4b72['user'][_0xfd74('0x28')]);_0xaf38e3[_0xfd74('0x1c')][_0xfd74('0x75')]=_0xaf38e3[_0xfd74('0x75')];_0xaf38e3['message'][_0xfd74('0x76')]=_0xaf38e3['channel'];_0xaf38e3[_0xfd74('0x1c')][_0xfd74('0x77')]='accept';_0xaf38e3[_0xfd74('0x1c')]['body']=htmlToText[_0xfd74('0x78')](_0xaf38e3[_0xfd74('0x1c')][_0xfd74('0x46')]);return respondWithRpcPromise(_0xfd74('0x79'),'EventManager',{'event':_0xfd74('0x7a'),'message':_0xaf38e3[_0xfd74('0x1c')]},client9002)[_0xfd74('0x15')](function(){return _0xaf38e3;});}return _0xaf38e3;}return null;})[_0xfd74('0x15')](respondWithResult(_0x45989a,null))[_0xfd74('0x1d')](handleError(_0x45989a,null));};exports[_0xfd74('0x7b')]=function(_0x325786,_0x5c1433){var _0x26d240={'agent':{},'channel':_0xfd74('0x5f')};if(_0x325786[_0xfd74('0x46')]['id']){delete _0x325786[_0xfd74('0x46')]['id'];}_0x325786[_0xfd74('0x46')][_0xfd74('0x60')]=_0x325786[_0xfd74('0x46')][_0xfd74('0x60')]||_0x325786[_0xfd74('0x61')]['id'];_0x26d240['agent']['id']=_0x325786[_0xfd74('0x46')][_0xfd74('0x60')];return db[_0xfd74('0x2c')][_0xfd74('0x45')]({'where':{'id':_0x325786['params']['id'],'UserId':null}})[_0xfd74('0x15')](handleEntityNotFound(_0x5c1433,null))[_0xfd74('0x15')](function(_0x53f506){if(_0x53f506){_0x26d240['message']=_0x53f506['get']({'plain':!![]});return db[_0xfd74('0x64')][_0xfd74('0x45')]({'where':{'id':_0x53f506['MailInteractionId']}});}return null;})['then'](handleEntityNotFound(_0x5c1433,null))[_0xfd74('0x15')](function(_0x53443c){if(_0x53443c){_0x26d240['interaction']=_0x53443c['get']({'plain':!![]});interaction_log[_0xfd74('0x16')](_0xfd74('0x7c'),_0x325786[_0xfd74('0x61')]['id'],_0x325786['user'][_0xfd74('0x28')],_0x325786[_0xfd74('0x61')][_0xfd74('0x7d')],_0x26d240[_0xfd74('0x68')]['id'],_0x325786[_0xfd74('0x46')]?JSON[_0xfd74('0x19')](_0x325786[_0xfd74('0x46')]):_0xfd74('0x6a'));return respondWithRpcPromise(_0xfd74('0x7e'),_0xfd74('0x7f'),_0x26d240);}return null;})['then'](function(_0x48098a){var _0x38fc6d=_0xfd74('0x6b')+_0x48098a[_0xfd74('0x1c')][_0xfd74('0x6c')];return db[_0xfd74('0x80')][_0xfd74('0x30')](_0x38fc6d,{'type':db[_0xfd74('0x6d')][_0xfd74('0x6e')]['SELECT'],'raw':!![]})[_0xfd74('0x15')](function(_0x935c1e){return _0x935c1e;});})[_0xfd74('0x15')](function(_0x4ff0a7){if(_0x4ff0a7){_0x26d240[_0xfd74('0x1c')][_0xfd74('0x6f')]=_0x4ff0a7[0x0];if(!_0x325786[_0xfd74('0x46')]['UserId'])return;return db[_0xfd74('0x81')][_0xfd74('0x45')]({'where':{'id':_0x325786[_0xfd74('0x46')]['UserId'],'role':'agent'},'attributes':['id','name',_0xfd74('0x70'),_0xfd74('0x71'),_0xfd74('0x72')],'raw':!![]});}return null;})['then'](function(_0x58a278){if(!_0x58a278)return null;_0x26d240[_0xfd74('0x1c')][_0xfd74('0x62')]=_0x58a278;return _0x26d240;})[_0xfd74('0x15')](function(_0x32a7ff){if(_0x32a7ff){_0x32a7ff[_0xfd74('0x1c')][_0xfd74('0x73')]=util[_0xfd74('0x67')]('SIP/%s',_0x325786[_0xfd74('0x61')][_0xfd74('0x28')]);_0x32a7ff[_0xfd74('0x1c')][_0xfd74('0x75')]=_0x26d240[_0xfd74('0x75')];_0x32a7ff[_0xfd74('0x1c')]['motionChannel']=_0x26d240[_0xfd74('0x75')];_0x32a7ff[_0xfd74('0x1c')][_0xfd74('0x77')]=_0xfd74('0x7b');_0x32a7ff['message'][_0xfd74('0x46')]=htmlToText[_0xfd74('0x78')](_0x26d240[_0xfd74('0x1c')][_0xfd74('0x46')]);respondWithRpcPromise(_0xfd74('0x79'),_0xfd74('0x79'),{'event':_0xfd74('0x82'),'message':_0x32a7ff[_0xfd74('0x1c')]},client9002);return _0x26d240;}return null;})[_0xfd74('0x15')](respondWithResult(_0x5c1433,null))[_0xfd74('0x1d')](handleError(_0x5c1433,null));};exports[_0xfd74('0x83')]=function(_0x9cef00,_0x57741e){var _0x18eb32=moment()[_0xfd74('0x84')]()[_0xfd74('0x85')]();var _0x154e76=path[_0xfd74('0x56')](config['root'],_0xfd74('0x86'),_0xfd74('0x87'),_0xfd74('0x88'));var _0x2a79bd=path[_0xfd74('0x56')](config[_0xfd74('0x89')],_0xfd74('0x86'),_0xfd74('0x87'),_0xfd74('0x54'));var _0x5f1705=util['format'](_0xfd74('0x8a'),_0x18eb32);return db[_0xfd74('0x2c')][_0xfd74('0x45')]({'where':{'id':_0x9cef00[_0xfd74('0x42')]['id']},'attributes':['id',_0xfd74('0x46'),'from','to','cc',_0xfd74('0x8b'),_0xfd74('0x8c'),_0xfd74('0x8d')],'include':_0x9cef00[_0xfd74('0x30')][_0xfd74('0x54')]?[{'model':db[_0xfd74('0x8e')],'as':_0xfd74('0x8f')}]:undefined})[_0xfd74('0x15')](handleEntityNotFound(_0x57741e,null))[_0xfd74('0x15')](function(_0x312031){if(_0x312031){var _0x56f0c=_0x312031;var _0x42897e={'from':_0x56f0c['from'],'to':_0x56f0c['to'],'subject':_0x56f0c[_0xfd74('0x8c')],'html':htmlEntities['decode'](_0x56f0c[_0xfd74('0x46')]),'headers':{'Date':moment(_0x56f0c[_0xfd74('0x8d')])[_0xfd74('0x67')](_0xfd74('0x90'))},'attachments':[]};if(_0x312031['cc']){_0x42897e[_0xfd74('0x91')]['Cc']=_0x312031['cc'];}if(_0x312031[_0xfd74('0x8b')]){_0x42897e[_0xfd74('0x91')]['Bcc']=_0x312031['bcc'];}return new BPromise(function(_0x177c5d,_0x1a1116){if(_0x312031[_0xfd74('0x8f')]){for(var _0x23eade=0x0;_0x23eade<_0x312031[_0xfd74('0x8f')][_0xfd74('0x55')];_0x23eade++){var _0x9a4676=_0x312031[_0xfd74('0x8f')][_0x23eade];var _0x5c7c62=path[_0xfd74('0x56')](_0x2a79bd,_0x9a4676[_0xfd74('0x57')]);if(fs[_0xfd74('0x92')](_0x5c7c62)){_0x42897e[_0xfd74('0x54')][_0xfd74('0x93')]({'name':_0x9a4676[_0xfd74('0x28')],'contentType':_0x9a4676[_0xfd74('0x2e')],'data':fs[_0xfd74('0x94')](_0x5c7c62)});}}}emlformat[_0xfd74('0x95')](_0x42897e,function(_0x2236cb,_0x17b708){if(_0x2236cb)return _0x1a1116(_0x2236cb);fs['writeFileSync'](path[_0xfd74('0x56')](_0x154e76,_0x5f1705),_0x17b708);return _0x177c5d(_0x17b708);});});}})[_0xfd74('0x15')](function(_0x17fc63){if(_0x17fc63){return _0x57741e[_0xfd74('0x83')](path['join'](_0x154e76,_0x5f1705),_0x5f1705,function(_0x1a51f2){if(!_0x1a51f2)fs['unlinkSync'](path[_0xfd74('0x56')](_0x154e76,_0x5f1705));});}})[_0xfd74('0x1d')](handleError(_0x57741e,null));};
\ No newline at end of file
index 75bdda9..4164250 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0x5286=['update','remove','emit','hasOwnProperty','exports','MailMessage','setMaxListeners','save'];(function(_0x45631a,_0x2c0779){var _0xef68a1=function(_0x4c8372){while(--_0x4c8372){_0x45631a['push'](_0x45631a['shift']());}};_0xef68a1(++_0x2c0779);}(_0x5286,0x11d));var _0x6528=function(_0x2a6ba9,_0x28dfd2){_0x2a6ba9=_0x2a6ba9-0x0;var _0x5f264a=_0x5286[_0x2a6ba9];return _0x5f264a;};'use strict';var EventEmitter=require('events');var MailMessage=require('../../mysqldb')['db'][_0x6528('0x0')];var MailMessageEvents=new EventEmitter();MailMessageEvents[_0x6528('0x1')](0x0);var events={'afterCreate':_0x6528('0x2'),'afterUpdate':_0x6528('0x3'),'afterDestroy':_0x6528('0x4')};function emitEvent(_0x5cfb2e){return function(_0x2eeee3,_0x24a54b,_0x11b46e){MailMessageEvents[_0x6528('0x5')](_0x5cfb2e+':'+_0x2eeee3['id'],_0x2eeee3);MailMessageEvents[_0x6528('0x5')](_0x5cfb2e,_0x2eeee3);_0x11b46e(null);};}for(var e in events){if(events[_0x6528('0x6')](e)){var event=events[e];MailMessage['hook'](e,emitEvent(event));}}module[_0x6528('0x7')]=MailMessageEvents;
\ No newline at end of file
index 040e74a..5702612 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0xa2ad=['error','utf8mb4','lodash','../../config/logger','api','moment','bluebird','request-promise','html-to-text','rimraf','../../config/environment','./mailMessage.attributes','exports','define','MailMessage','messageId','fti_mail_messages','subject','plainBody','fromString','body','models','get','direction','toLowerCase','out','secret','isNil','MailInteraction','then','createdAt','catch'];(function(_0x56d1a0,_0x1c3d3e){var _0x316ec0=function(_0x4107fe){while(--_0x4107fe){_0x56d1a0['push'](_0x56d1a0['shift']());}};_0x316ec0(++_0x1c3d3e);}(_0xa2ad,0x1e2));var _0xda2a=function(_0x599f41,_0x4db732){_0x599f41=_0x599f41-0x0;var _0x2e4d58=_0xa2ad[_0x599f41];return _0x2e4d58;};'use strict';var _=require(_0xda2a('0x0'));var util=require('util');var logger=require(_0xda2a('0x1'))(_0xda2a('0x2'));var moment=require(_0xda2a('0x3'));var BPromise=require(_0xda2a('0x4'));var rp=require(_0xda2a('0x5'));var htmlToText=require(_0xda2a('0x6'));var fs=require('fs');var path=require('path');var rimraf=require(_0xda2a('0x7'));var config=require(_0xda2a('0x8'));var attributes=require(_0xda2a('0x9'));module[_0xda2a('0xa')]=function(_0x2aad3f,_0x259de9){return _0x2aad3f[_0xda2a('0xb')](_0xda2a('0xc'),attributes,{'tableName':'mail_messages','paranoid':![],'indexes':[{'name':_0xda2a('0xd'),'fields':[_0xda2a('0xd')]},{'name':_0xda2a('0xe'),'fields':['plainBody',_0xda2a('0xf')],'type':'FULLTEXT'}],'timestamps':!![],'hooks':{'beforeCreate':function(_0x1d36e9,_0x32357f,_0x3c8c55){if(_0x1d36e9['body']){_0x1d36e9[_0xda2a('0x10')]=htmlToText[_0xda2a('0x11')](_0x1d36e9[_0xda2a('0x12')],{'preserveNewlines':!![],'singleNewLineParagraphs':!![],'uppercaseHeadings':![],'noLinkBrackets':!![],'ignoreImage':!![]});}_0x3c8c55(null,_0x32357f);},'afterCreate':function(_0x1038e6,_0x1b8829,_0x239f0b){var _0x581c47=_0x2aad3f[_0xda2a('0x13')];var _0x3653fa=_0x1038e6[_0xda2a('0x14')]({'plain':!![]});if(_0x3653fa[_0xda2a('0x15')][_0xda2a('0x16')]()==='in'||_0x3653fa[_0xda2a('0x15')]['toLowerCase']()===_0xda2a('0x17')&&!_0x3653fa[_0xda2a('0x18')]&&!_[_0xda2a('0x19')](_0x3653fa['UserId'])){_0x581c47[_0xda2a('0x1a')]['findOne']({'where':{'id':_0x3653fa['MailInteractionId']}})[_0xda2a('0x1b')](function(_0x39057d){if(_0x39057d){_0x39057d['update']({'lastMsgAt':_0x3653fa[_0xda2a('0x1c')],'lastMsgDirection':_0x3653fa['direction']['toLowerCase']()});}})[_0xda2a('0x1d')](function(_0x47f9eb){console[_0xda2a('0x1e')](_0x47f9eb);});}_0x239f0b();}},'charset':_0xda2a('0x1f'),'collate':'utf8mb4_unicode_ci'});};
\ No newline at end of file
index 1906aae..6f12a68 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0xb9be=['redis','localhost','socket.io-emitter','./mailMessage.socket','register','then','MailMessage,\x20%s,\x20%s','request\x20sent','debug','MailMessage,\x20%s,\x20%s,\x20%s','error','code','message','info','result','catch','CreateMailMessage','MailMessage','create','options','raw','stringify','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','jayson/promise','client','http','defaults'];(function(_0x1f4b18,_0x4e777c){var _0xde3957=function(_0x1dcbbc){while(--_0x1dcbbc){_0x1f4b18['push'](_0x1f4b18['shift']());}};_0xde3957(++_0x4e777c);}(_0xb9be,0xc5));var _0xeb9b=function(_0x22ffbf,_0x16f31e){_0x22ffbf=_0x22ffbf-0x0;var _0x360c17=_0xb9be[_0x22ffbf];return _0x360c17;};'use strict';var _=require(_0xeb9b('0x0'));var util=require(_0xeb9b('0x1'));var moment=require(_0xeb9b('0x2'));var BPromise=require(_0xeb9b('0x3'));var rs=require(_0xeb9b('0x4'));var fs=require('fs');var Redis=require(_0xeb9b('0x5'));var db=require(_0xeb9b('0x6'))['db'];var utils=require(_0xeb9b('0x7'));var logger=require(_0xeb9b('0x8'))('rpc');var config=require('../../config/environment');var jayson=require(_0xeb9b('0x9'));var client=jayson[_0xeb9b('0xa')][_0xeb9b('0xb')]({'port':0x232a});config['redis']=_[_0xeb9b('0xc')](config[_0xeb9b('0xd')],{'host':_0xeb9b('0xe'),'port':0x18eb});var socket=require(_0xeb9b('0xf'))(new Redis(config[_0xeb9b('0xd')]));require(_0xeb9b('0x10'))[_0xeb9b('0x11')](socket);function respondWithRpcPromise(_0x16761a,_0x32f0c4,_0x4f4952){return new BPromise(function(_0x20c855,_0x58d6a4){return client['request'](_0x16761a,_0x4f4952)[_0xeb9b('0x12')](function(_0x4236c0){logger['info'](_0xeb9b('0x13'),_0x32f0c4,_0xeb9b('0x14'));logger[_0xeb9b('0x15')](_0xeb9b('0x16'),_0x32f0c4,'request\x20sent',JSON['stringify'](_0x4236c0));if(_0x4236c0['error']){if(_0x4236c0[_0xeb9b('0x17')][_0xeb9b('0x18')]===0x1f4){logger[_0xeb9b('0x17')]('MailMessage,\x20%s,\x20%s',_0x32f0c4,_0x4236c0['error']['message']);return _0x58d6a4(_0x4236c0[_0xeb9b('0x17')][_0xeb9b('0x19')]);}logger[_0xeb9b('0x17')](_0xeb9b('0x13'),_0x32f0c4,_0x4236c0[_0xeb9b('0x17')][_0xeb9b('0x19')]);return _0x20c855(_0x4236c0[_0xeb9b('0x17')]['message']);}else{logger[_0xeb9b('0x1a')](_0xeb9b('0x13'),_0x32f0c4,_0xeb9b('0x14'));_0x20c855(_0x4236c0[_0xeb9b('0x1b')][_0xeb9b('0x19')]);}})[_0xeb9b('0x1c')](function(_0x21010e){logger[_0xeb9b('0x17')](_0xeb9b('0x13'),_0x32f0c4,_0x21010e);_0x58d6a4(_0x21010e);});});}exports[_0xeb9b('0x1d')]=function(_0x4f436e){var _0x43dc48=this;return new Promise(function(_0x5a7ffd,_0x5d5f54){return db[_0xeb9b('0x1e')][_0xeb9b('0x1f')](_0x4f436e['body'],{'raw':_0x4f436e[_0xeb9b('0x20')]?_0x4f436e[_0xeb9b('0x20')][_0xeb9b('0x21')]===undefined?!![]:![]:!![]})[_0xeb9b('0x12')](function(_0x3c8be7){logger[_0xeb9b('0x1a')](_0xeb9b('0x1d'),_0x4f436e);logger[_0xeb9b('0x15')](_0xeb9b('0x1d'),_0x4f436e,JSON[_0xeb9b('0x22')](_0x3c8be7));_0x5a7ffd(_0x3c8be7);})[_0xeb9b('0x1c')](function(_0x296f95){logger[_0xeb9b('0x17')](_0xeb9b('0x1d'),_0x296f95[_0xeb9b('0x19')],_0x4f436e);_0x5d5f54(_0x43dc48[_0xeb9b('0x17')](0x1f4,_0x296f95['message']));});});};
\ No newline at end of file
index fbd19fa..83bed1d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0x2dff=['./mailMessage.events','remove','update','emit','register'];(function(_0x5b7788,_0x309ae5){var _0x573871=function(_0x5c79fd){while(--_0x5c79fd){_0x5b7788['push'](_0x5b7788['shift']());}};_0x573871(++_0x309ae5);}(_0x2dff,0x11d));var _0xf2df=function(_0x1bbead,_0x459bd6){_0x1bbead=_0x1bbead-0x0;var _0x1ff51f=_0x2dff[_0x1bbead];return _0x1ff51f;};'use strict';var MailMessageEvents=require(_0xf2df('0x0'));var events=['save',_0xf2df('0x1'),_0xf2df('0x2')];function createListener(_0x29d94c,_0x42cb30){return function(_0x45b674){_0x42cb30[_0xf2df('0x3')](_0x29d94c,_0x45b674);};}function removeListener(_0x175d3d,_0x51a99f){return function(){MailMessageEvents['removeListener'](_0x175d3d,_0x51a99f);};}exports[_0xf2df('0x4')]=function(_0x38a02d){for(var _0x39de8a=0x0,_0x4346b8=events['length'];_0x39de8a<_0x4346b8;_0x39de8a++){var _0x283f2c=events[_0x39de8a];var _0x5b3776=createListener('mailMessage:'+_0x283f2c,_0x38a02d);MailMessageEvents['on'](_0x283f2c,_0x5b3776);}};
\ No newline at end of file
index 190310d..5eaa1fd 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0xd911=['describe','/:id','show','/:id/members','getMembers','/:id/users','getAgents','post','create','/:id/teams','delete','destroy','removeAgents','multer','util','path','connect-timeout','express','Router','fs-extra','../../config/environment','./mailQueue.controller','get','isAuthenticated','/describe'];(function(_0x4b4b4e,_0x341f0c){var _0xf1a943=function(_0x36fb59){while(--_0x36fb59){_0x4b4b4e['push'](_0x4b4b4e['shift']());}};_0xf1a943(++_0x341f0c);}(_0xd911,0x1e8));var _0x1d91=function(_0x3bdc30,_0x119486){_0x3bdc30=_0x3bdc30-0x0;var _0x1a4986=_0xd911[_0x3bdc30];return _0x1a4986;};'use strict';var multer=require(_0x1d91('0x0'));var util=require(_0x1d91('0x1'));var path=require(_0x1d91('0x2'));var timeout=require(_0x1d91('0x3'));var express=require(_0x1d91('0x4'));var router=express[_0x1d91('0x5')]();var fs_extra=require(_0x1d91('0x6'));var auth=require('../../components/auth/service');var interaction=require('../../components/interaction/service');var config=require(_0x1d91('0x7'));var controller=require(_0x1d91('0x8'));router[_0x1d91('0x9')]('/',auth[_0x1d91('0xa')](),controller['index']);router['get'](_0x1d91('0xb'),auth[_0x1d91('0xa')](),controller[_0x1d91('0xc')]);router[_0x1d91('0x9')](_0x1d91('0xd'),auth['isAuthenticated'](),controller[_0x1d91('0xe')]);router['get'](_0x1d91('0xf'),auth[_0x1d91('0xa')](),controller[_0x1d91('0x10')]);router[_0x1d91('0x9')]('/:id/teams',auth[_0x1d91('0xa')](),controller['getTeams']);router[_0x1d91('0x9')](_0x1d91('0x11'),auth[_0x1d91('0xa')](),controller[_0x1d91('0x12')]);router[_0x1d91('0x13')]('/',auth[_0x1d91('0xa')](),controller[_0x1d91('0x14')]);router[_0x1d91('0x13')](_0x1d91('0x15'),auth[_0x1d91('0xa')](),controller['addTeams']);router['post'](_0x1d91('0x11'),auth[_0x1d91('0xa')](),controller['addAgents']);router['put'](_0x1d91('0xd'),auth[_0x1d91('0xa')](),controller['update']);router[_0x1d91('0x16')](_0x1d91('0xd'),auth['isAuthenticated'](),controller[_0x1d91('0x17')]);router['delete'](_0x1d91('0x15'),auth[_0x1d91('0xa')](),controller['removeTeams']);router[_0x1d91('0x16')]('/:id/users',auth[_0x1d91('0xa')](),controller[_0x1d91('0x18')]);module['exports']=router;
\ No newline at end of file
index 2a82b9c..ce32a0e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0x2d4d=['exports','name','ENUM','rrmemory','beepall','roundrobin'];(function(_0x31a798,_0x30141a){var _0x2c3bb6=function(_0xa0f48e){while(--_0xa0f48e){_0x31a798['push'](_0x31a798['shift']());}};_0x2c3bb6(++_0x30141a);}(_0x2d4d,0x132));var _0xd2d4=function(_0x352cef,_0x440c01){_0x352cef=_0x352cef-0x0;var _0x206584=_0x2d4d[_0x352cef];return _0x206584;};'use strict';var Sequelize=require('sequelize');module[_0xd2d4('0x0')]={'name':{'type':Sequelize['STRING'],'unique':_0xd2d4('0x1'),'validate':{'notEmpty':!![],'is':/^[A-Za-z0-9\.\_]+$/i}},'description':{'type':Sequelize['STRING']},'timeout':{'type':Sequelize['INTEGER'],'validate':{'min':0x1,'max':0x20c49b}},'strategy':{'type':Sequelize[_0xd2d4('0x2')](_0xd2d4('0x3'),_0xd2d4('0x4'),_0xd2d4('0x5'))}};
\ No newline at end of file
index fb82cb2..15a95dd 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0x07c3=['isArray','userMailQueue:remove','getAgents','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','path','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/license/util','redis','defaults','localhost','socket.io-emitter','./mailQueue.socket','register','sendStatus','status','end','json','offset','undefined','count','Content-Range','apply','reject','save','update','then','destroy','get','MailQueues','error','stack','name','send','index','map','MailQueue','rawAttributes','fieldName','type','key','keys','query','intersection','attributes','model','fields','length','hasOwnProperty','nolimit','limit','sort','where','filters','pick','filter','merge','VIRTUAL','options','includeAll','include','rows','catch','params','find','create','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','UserProfileSection','userProfileId','UserProfileResource','body','describe','getMembers','findOne','order','UserMailQueue','findAll','UserId','mailPause','updatedAt','%s/%s','SIP','createdAt','getTeams','addTeams','ids','Team','User','online','voicePause','interface','flatMap','Agents','sequelize','transaction','findOrCreate','forEach','emit','userMailQueue:save','removeTeams','select','field','tq.TeamId','from','team_has_mail_queues','join','user_has_teams','ut.TeamId\x20=\x20tq.TeamId','MailQueueId\x20=\x20?','ut.UserId\x20=\x20?','push','toString','QueryTypes','every','TeamId','includes','union','compact','value','isEmpty','removeAgents','addAgents','omit','spread'];(function(_0x501510,_0x61caa9){var _0x1e6ee5=function(_0x32845b){while(--_0x32845b){_0x501510['push'](_0x501510['shift']());}};_0x1e6ee5(++_0x61caa9);}(_0x07c3,0x1bf));var _0x307c=function(_0x5e8602,_0x2ce012){_0x5e8602=_0x5e8602-0x0;var _0x4434fb=_0x07c3[_0x5e8602];return _0x4434fb;};'use strict';var emlformat=require(_0x307c('0x0'));var rimraf=require(_0x307c('0x1'));var zipdir=require(_0x307c('0x2'));var jsonpatch=require(_0x307c('0x3'));var rp=require(_0x307c('0x4'));var moment=require(_0x307c('0x5'));var BPromise=require(_0x307c('0x6'));var Mustache=require(_0x307c('0x7'));var util=require('util');var path=require(_0x307c('0x8'));var sox=require(_0x307c('0x9'));var csv=require(_0x307c('0xa'));var ejs=require(_0x307c('0xb'));var fs=require('fs');var fs_extra=require(_0x307c('0xc'));var _=require(_0x307c('0xd'));var squel=require(_0x307c('0xe'));var crypto=require(_0x307c('0xf'));var jsforce=require(_0x307c('0x10'));var deskjs=require(_0x307c('0x11'));var toCsv=require(_0x307c('0xa'));var querystring=require(_0x307c('0x12'));var Papa=require(_0x307c('0x13'));var Redis=require(_0x307c('0x14'));var authService=require(_0x307c('0x15'));var qs=require('../../components/parsers/qs');var as=require(_0x307c('0x16'));var hardwareService=require(_0x307c('0x17'));var logger=require(_0x307c('0x18'))(_0x307c('0x19'));var utils=require('../../config/utils');var config=require('../../config/environment');var licenseUtil=require(_0x307c('0x1a'));var db=require('../../mysqldb')['db'];config[_0x307c('0x1b')]=_[_0x307c('0x1c')](config['redis'],{'host':_0x307c('0x1d'),'port':0x18eb});var socket=require(_0x307c('0x1e'))(new Redis(config[_0x307c('0x1b')]));require(_0x307c('0x1f'))[_0x307c('0x20')](socket);function respondWithStatusCode(_0x2ea8c3,_0x85509f){_0x85509f=_0x85509f||0xcc;return function(_0x46c5d8){if(_0x46c5d8){return _0x2ea8c3[_0x307c('0x21')](_0x85509f);}return _0x2ea8c3[_0x307c('0x22')](_0x85509f)[_0x307c('0x23')]();};}function respondWithResult(_0x424a74,_0x53e2f4){_0x53e2f4=_0x53e2f4||0xc8;return function(_0x2a3edc){if(_0x2a3edc){return _0x424a74[_0x307c('0x22')](_0x53e2f4)[_0x307c('0x24')](_0x2a3edc);}};}function respondWithFilteredResult(_0x2f44ce,_0x301e1a){return function(_0x2e21a6){if(_0x2e21a6){var _0x3e05e2=typeof _0x301e1a[_0x307c('0x25')]===_0x307c('0x26')&&typeof _0x301e1a['limit']==='undefined';var _0x3bbb1e=_0x2e21a6['count'];var _0x409e5b=_0x3e05e2?0x0:_0x301e1a['offset'];var _0x4cf649=_0x3e05e2?_0x2e21a6[_0x307c('0x27')]:_0x301e1a[_0x307c('0x25')]+_0x301e1a['limit'];var _0x2b07da;if(_0x4cf649>=_0x3bbb1e){_0x4cf649=_0x3bbb1e;_0x2b07da=0xc8;}else{_0x2b07da=0xce;}_0x2f44ce[_0x307c('0x22')](_0x2b07da);return _0x2f44ce['set'](_0x307c('0x28'),_0x409e5b+'-'+_0x4cf649+'/'+_0x3bbb1e)[_0x307c('0x24')](_0x2e21a6);}return null;};}function patchUpdates(_0x574622){return function(_0x2d4d18){try{jsonpatch[_0x307c('0x29')](_0x2d4d18,_0x574622,!![]);}catch(_0x9a66a0){return BPromise[_0x307c('0x2a')](_0x9a66a0);}return _0x2d4d18[_0x307c('0x2b')]();};}function saveUpdates(_0x2b5f2f,_0x46b8a8){return function(_0x383065){if(_0x383065){return _0x383065[_0x307c('0x2c')](_0x2b5f2f)[_0x307c('0x2d')](function(_0x5da864){return _0x5da864;});}return null;};}function removeEntity(_0x44dcce,_0x58c383){return function(_0x598d43){if(_0x598d43){return _0x598d43[_0x307c('0x2e')]()[_0x307c('0x2d')](function(){var _0x9da210=_0x598d43[_0x307c('0x2f')]({'plain':!![]});var _0x25dede=_0x307c('0x30');return db['UserProfileResource'][_0x307c('0x2e')]({'where':{'type':_0x25dede,'resourceId':_0x9da210['id']}})[_0x307c('0x2d')](function(){return _0x598d43;});})[_0x307c('0x2d')](function(){_0x44dcce['status'](0xcc)[_0x307c('0x23')]();});}};}function handleEntityNotFound(_0x1781ab,_0xcb6ae6){return function(_0x12d9a9){if(!_0x12d9a9){_0x1781ab[_0x307c('0x21')](0x194);}return _0x12d9a9;};}function handleError(_0x1e5da0,_0x533008){_0x533008=_0x533008||0x1f4;return function(_0x1203f6){logger[_0x307c('0x31')](_0x1203f6[_0x307c('0x32')]);if(_0x1203f6[_0x307c('0x33')]){delete _0x1203f6[_0x307c('0x33')];}_0x1e5da0[_0x307c('0x22')](_0x533008)[_0x307c('0x34')](_0x1203f6);};}exports[_0x307c('0x35')]=function(_0x12b5f4,_0x55f4c0){var _0x29c0c4={},_0x1985fb={},_0x325961={'count':0x0,'rows':[]};var _0x1a706a=_[_0x307c('0x36')](db[_0x307c('0x37')][_0x307c('0x38')],function(_0xc08363){return{'name':_0xc08363[_0x307c('0x39')],'type':_0xc08363[_0x307c('0x3a')][_0x307c('0x3b')]};});_0x1985fb['model']=_[_0x307c('0x36')](_0x1a706a,_0x307c('0x33'));_0x1985fb['query']=_[_0x307c('0x3c')](_0x12b5f4[_0x307c('0x3d')]);_0x1985fb['filters']=_[_0x307c('0x3e')](_0x1985fb['model'],_0x1985fb[_0x307c('0x3d')]);_0x29c0c4[_0x307c('0x3f')]=_[_0x307c('0x3e')](_0x1985fb[_0x307c('0x40')],qs[_0x307c('0x41')](_0x12b5f4[_0x307c('0x3d')][_0x307c('0x41')]));_0x29c0c4['attributes']=_0x29c0c4[_0x307c('0x3f')][_0x307c('0x42')]?_0x29c0c4[_0x307c('0x3f')]:_0x1985fb[_0x307c('0x40')];if(!_0x12b5f4[_0x307c('0x3d')][_0x307c('0x43')](_0x307c('0x44'))){_0x29c0c4['limit']=qs['limit'](_0x12b5f4['query'][_0x307c('0x45')]);_0x29c0c4[_0x307c('0x25')]=qs[_0x307c('0x25')](_0x12b5f4['query'][_0x307c('0x25')]);}_0x29c0c4['order']=qs[_0x307c('0x46')](_0x12b5f4[_0x307c('0x3d')][_0x307c('0x46')]);_0x29c0c4[_0x307c('0x47')]=qs[_0x307c('0x48')](_[_0x307c('0x49')](_0x12b5f4[_0x307c('0x3d')],_0x1985fb[_0x307c('0x48')]),_0x1a706a);if(_0x12b5f4['query'][_0x307c('0x4a')]){_0x29c0c4['where']=_[_0x307c('0x4b')](_0x29c0c4['where'],{'$or':_[_0x307c('0x36')](_0x1a706a,function(_0x4a802a){if(_0x4a802a[_0x307c('0x3a')]!==_0x307c('0x4c')){var _0xb56d3b={};_0xb56d3b[_0x4a802a[_0x307c('0x33')]]={'$like':'%'+_0x12b5f4[_0x307c('0x3d')][_0x307c('0x4a')]+'%'};return _0xb56d3b;}})});}_0x29c0c4=_[_0x307c('0x4b')]({},_0x29c0c4,_0x12b5f4[_0x307c('0x4d')]);var _0xaa4479={'where':_0x29c0c4[_0x307c('0x47')]};return db['MailQueue']['count'](_0xaa4479)[_0x307c('0x2d')](function(_0x264aa8){_0x325961[_0x307c('0x27')]=_0x264aa8;if(_0x12b5f4[_0x307c('0x3d')][_0x307c('0x4e')]){_0x29c0c4[_0x307c('0x4f')]=[{'all':!![]}];}return db['MailQueue']['findAll'](_0x29c0c4);})[_0x307c('0x2d')](function(_0x5d7d0d){_0x325961[_0x307c('0x50')]=_0x5d7d0d;return _0x325961;})[_0x307c('0x2d')](respondWithFilteredResult(_0x55f4c0,_0x29c0c4))[_0x307c('0x51')](handleError(_0x55f4c0,null));};exports['show']=function(_0x19f170,_0x440999){var _0x225cfb={'raw':!![],'where':{'id':_0x19f170[_0x307c('0x52')]['id']}},_0xb719d2={};_0xb719d2['model']=_[_0x307c('0x3c')](db[_0x307c('0x37')]['rawAttributes']);_0xb719d2[_0x307c('0x3d')]=_[_0x307c('0x3c')](_0x19f170[_0x307c('0x3d')]);_0xb719d2[_0x307c('0x48')]=_[_0x307c('0x3e')](_0xb719d2[_0x307c('0x40')],_0xb719d2[_0x307c('0x3d')]);_0x225cfb['attributes']=_[_0x307c('0x3e')](_0xb719d2[_0x307c('0x40')],qs[_0x307c('0x41')](_0x19f170['query'][_0x307c('0x41')]));_0x225cfb[_0x307c('0x3f')]=_0x225cfb[_0x307c('0x3f')][_0x307c('0x42')]?_0x225cfb['attributes']:_0xb719d2[_0x307c('0x40')];if(_0x19f170['query']['includeAll']){_0x225cfb['include']=[{'all':!![]}];}_0x225cfb=_[_0x307c('0x4b')]({},_0x225cfb,_0x19f170[_0x307c('0x4d')]);return db[_0x307c('0x37')][_0x307c('0x53')](_0x225cfb)['then'](handleEntityNotFound(_0x440999,null))[_0x307c('0x2d')](respondWithResult(_0x440999,null))[_0x307c('0x51')](handleError(_0x440999,null));};exports[_0x307c('0x54')]=function(_0x2776b8,_0x136c17){return db[_0x307c('0x37')][_0x307c('0x54')](_0x2776b8['body'],{})['then'](function(_0x1f41c9){var _0x424a92=_0x2776b8[_0x307c('0x55')][_0x307c('0x2f')]({'plain':!![]});if(!_0x424a92)throw new Error(_0x307c('0x56'));if(_0x424a92[_0x307c('0x57')]===_0x307c('0x55')){var _0x58e3ff=_0x1f41c9['get']({'plain':!![]});var _0x4540d1=_0x307c('0x30');return db[_0x307c('0x58')][_0x307c('0x53')]({'where':{'name':_0x4540d1,'userProfileId':_0x424a92[_0x307c('0x59')]},'raw':!![]})['then'](function(_0x4792a7){if(_0x4792a7&&_0x4792a7['autoAssociation']===0x0){return db[_0x307c('0x5a')][_0x307c('0x54')]({'name':_0x58e3ff['name'],'resourceId':_0x58e3ff['id'],'type':_0x4792a7[_0x307c('0x33')],'sectionId':_0x4792a7['id']},{})[_0x307c('0x2d')](function(){return _0x1f41c9;});}else{return _0x1f41c9;}})[_0x307c('0x51')](function(_0x561d02){logger['error']('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x561d02);throw _0x561d02;});}return _0x1f41c9;})[_0x307c('0x2d')](respondWithResult(_0x136c17,0xc9))[_0x307c('0x51')](handleError(_0x136c17,null));};exports['update']=function(_0x47a8fe,_0x46b41e){if(_0x47a8fe[_0x307c('0x5b')]['id']){delete _0x47a8fe['body']['id'];}return db[_0x307c('0x37')][_0x307c('0x53')]({'where':{'id':_0x47a8fe[_0x307c('0x52')]['id']}})[_0x307c('0x2d')](handleEntityNotFound(_0x46b41e,null))['then'](saveUpdates(_0x47a8fe[_0x307c('0x5b')],null))[_0x307c('0x2d')](respondWithResult(_0x46b41e,null))[_0x307c('0x51')](handleError(_0x46b41e,null));};exports[_0x307c('0x2e')]=function(_0x26a533,_0x2420af){return db[_0x307c('0x37')][_0x307c('0x53')]({'where':{'id':_0x26a533['params']['id']}})[_0x307c('0x2d')](handleEntityNotFound(_0x2420af,null))[_0x307c('0x2d')](removeEntity(_0x2420af,null))[_0x307c('0x51')](handleError(_0x2420af,null));};exports['describe']=function(_0x10efed,_0xe1ddea){return db[_0x307c('0x37')][_0x307c('0x5c')]()['then'](respondWithResult(_0xe1ddea,null))['catch'](handleError(_0xe1ddea,null));};exports[_0x307c('0x5d')]=function(_0x3ce94c,_0x5d1783,_0x48d721){var _0x5b00c2={'raw':!![],'where':{}},_0x2bc93a={},_0x3b68d2;return db[_0x307c('0x37')][_0x307c('0x5e')]({'where':{'id':_0x3ce94c[_0x307c('0x52')]['id']}})[_0x307c('0x2d')](handleEntityNotFound(_0x5d1783,null))['then'](function(_0x25da39){if(_0x25da39){_0x3b68d2=_0x25da39[_0x307c('0x2f')]({'plain':!![]});_0x2bc93a[_0x307c('0x40')]=_[_0x307c('0x3c')](db['UserMailQueue'][_0x307c('0x38')]);_0x2bc93a['query']=_[_0x307c('0x3c')](_0x3ce94c[_0x307c('0x3d')]);_0x2bc93a['filters']=_[_0x307c('0x3e')](_0x2bc93a['model'],_0x2bc93a[_0x307c('0x3d')]);_0x5b00c2[_0x307c('0x3f')]=_['intersection'](_0x2bc93a[_0x307c('0x40')],qs[_0x307c('0x41')](_0x3ce94c[_0x307c('0x3d')]['fields']));_0x5b00c2['attributes']=_0x5b00c2['attributes'][_0x307c('0x42')]?_0x5b00c2[_0x307c('0x3f')]:_0x2bc93a['model'];if(!_0x3ce94c[_0x307c('0x3d')][_0x307c('0x43')]('nolimit')){_0x5b00c2['limit']=qs[_0x307c('0x45')](_0x3ce94c['query'][_0x307c('0x45')]);_0x5b00c2['offset']=qs[_0x307c('0x25')](_0x3ce94c['query'][_0x307c('0x25')]);}_0x5b00c2[_0x307c('0x5f')]=qs['sort'](_0x3ce94c[_0x307c('0x3d')][_0x307c('0x46')]);_0x5b00c2['where']=qs['filters'](_['pick'](_0x3ce94c[_0x307c('0x3d')],_0x2bc93a[_0x307c('0x48')]));_0x5b00c2[_0x307c('0x47')]['MailQueueId']=_0x25da39['id'];if(_0x3ce94c[_0x307c('0x3d')][_0x307c('0x4a')]){_0x5b00c2[_0x307c('0x47')]=_[_0x307c('0x4b')](_0x5b00c2[_0x307c('0x47')],{'$or':_[_0x307c('0x36')](_0x5b00c2[_0x307c('0x3f')],function(_0x33c60e){var _0x43649f={};_0x43649f[_0x33c60e]={'$like':'%'+_0x3ce94c[_0x307c('0x3d')]['filter']+'%'};return _0x43649f;})});}_0x5b00c2=_['merge']({},_0x5b00c2,_0x3ce94c[_0x307c('0x4d')]);return db[_0x307c('0x60')][_0x307c('0x61')](_0x5b00c2);}})[_0x307c('0x2d')](function(_0x4bee5c){if(_0x4bee5c){return db['User']['findAndCountAll']({'where':{'id':_[_0x307c('0x36')](_0x4bee5c,_0x307c('0x62')),'role':'agent'},'attributes':['id','name',_0x307c('0x63'),_0x307c('0x64'),'createdAt']});}})[_0x307c('0x2d')](function(_0x56eb8e){if(_0x56eb8e){return{'count':_0x56eb8e[_0x307c('0x27')],'rows':_[_0x307c('0x36')](_0x56eb8e['rows'],function(_0x803bbc){return{'membername':_0x803bbc[_0x307c('0x33')],'UserId':_0x803bbc['id'],'queue_name':_0x3b68d2[_0x307c('0x33')],'MailQueueId':_0x3b68d2['id'],'interface':util['format'](_0x307c('0x65'),_0x307c('0x66'),_0x803bbc['name']),'penalty':0x0,'paused':_0x803bbc[_0x307c('0x63')],'createdAt':_0x803bbc[_0x307c('0x67')],'updatedAt':_0x803bbc['updatedAt']};})};}else{return{'count':0x0,'rows':[]};}})[_0x307c('0x2d')](respondWithFilteredResult(_0x5d1783,_0x5b00c2))[_0x307c('0x51')](handleError(_0x5d1783,null));};exports['getTeams']=function(_0xb6692e,_0x5a771e,_0x46853a){var _0x764d61={};var _0x377085={};var _0x4e08c1;var _0x2097a3;return db[_0x307c('0x37')][_0x307c('0x5e')]({'where':{'id':_0xb6692e[_0x307c('0x52')]['id']}})[_0x307c('0x2d')](handleEntityNotFound(_0x5a771e,null))[_0x307c('0x2d')](function(_0x39903c){if(_0x39903c){_0x4e08c1=_0x39903c;_0x377085[_0x307c('0x40')]=_[_0x307c('0x3c')](db['Team']['rawAttributes']);_0x377085[_0x307c('0x3d')]=_[_0x307c('0x3c')](_0xb6692e['query']);_0x377085[_0x307c('0x48')]=_[_0x307c('0x3e')](_0x377085[_0x307c('0x40')],_0x377085['query']);_0x764d61['attributes']=_['intersection'](_0x377085[_0x307c('0x40')],qs[_0x307c('0x41')](_0xb6692e[_0x307c('0x3d')][_0x307c('0x41')]));_0x764d61[_0x307c('0x3f')]=_0x764d61['attributes'][_0x307c('0x42')]?_0x764d61[_0x307c('0x3f')]:_0x377085['model'];_0x764d61['order']=qs[_0x307c('0x46')](_0xb6692e[_0x307c('0x3d')][_0x307c('0x46')]);_0x764d61[_0x307c('0x47')]=qs['filters'](_[_0x307c('0x49')](_0xb6692e[_0x307c('0x3d')],_0x377085['filters']));if(_0xb6692e[_0x307c('0x3d')][_0x307c('0x4a')]){_0x764d61['where']=_[_0x307c('0x4b')](_0x764d61[_0x307c('0x47')],{'$or':_['map'](_0x764d61['attributes'],function(_0x5317ef){var _0x351bb5={};_0x351bb5[_0x5317ef]={'$like':'%'+_0xb6692e[_0x307c('0x3d')][_0x307c('0x4a')]+'%'};return _0x351bb5;})});}_0x764d61=_[_0x307c('0x4b')]({},_0x764d61,_0xb6692e['options']);return _0x4e08c1['getTeams'](_0x764d61);}})[_0x307c('0x2d')](function(_0x503c66){if(_0x503c66){_0x2097a3=_0x503c66['length'];if(!_0xb6692e[_0x307c('0x3d')][_0x307c('0x43')]('nolimit')){_0x764d61['limit']=qs[_0x307c('0x45')](_0xb6692e['query'][_0x307c('0x45')]);_0x764d61[_0x307c('0x25')]=qs[_0x307c('0x25')](_0xb6692e['query']['offset']);}return _0x4e08c1[_0x307c('0x68')](_0x764d61);}})[_0x307c('0x2d')](function(_0x12a96f){if(_0x12a96f){return _0x12a96f?{'count':_0x2097a3,'rows':_0x12a96f}:null;}})[_0x307c('0x2d')](respondWithResult(_0x5a771e,null))[_0x307c('0x51')](handleError(_0x5a771e,null));};exports[_0x307c('0x69')]=function(_0x4ad8cf,_0x450a65,_0x2208c7){var _0x347175=_0x4ad8cf[_0x307c('0x5b')][_0x307c('0x6a')];return db[_0x307c('0x6b')][_0x307c('0x61')]({'where':{'id':_0x347175},'attributes':['id'],'include':[{'model':db[_0x307c('0x6c')],'as':'Agents','attributes':['id',_0x307c('0x33'),_0x307c('0x6d'),_0x307c('0x6e'),_0x307c('0x6f')],'raw':!![]}]})[_0x307c('0x2d')](function(_0x2744af){if(_0x2744af){var _0x4cedbf=_[_0x307c('0x70')](_0x2744af,function(_0x3c55f5){var _0x962a51=_0x3c55f5[_0x307c('0x2f')]({'plain':!![]});return _0x962a51[_0x307c('0x71')];});return db[_0x307c('0x37')]['find']({'where':{'id':_0x4ad8cf[_0x307c('0x52')]['id']}})[_0x307c('0x2d')](function(_0x33eb31){return db[_0x307c('0x72')][_0x307c('0x73')](function(_0x24468d){return _0x33eb31[_0x307c('0x69')](_0x347175,{'transaction':_0x24468d})['then'](function(){return BPromise['each'](_0x4cedbf,function(_0x477a6c){return db[_0x307c('0x60')][_0x307c('0x74')]({'where':{'UserId':_0x477a6c['id'],'MailQueueId':_0x4ad8cf[_0x307c('0x52')]['id']},'transaction':_0x24468d});});})['then'](function(){_0x4cedbf[_0x307c('0x75')](function(_0x511704){socket[_0x307c('0x76')](_0x307c('0x77'),{'UserId':_0x511704['id'],'MailQueueId':_0x33eb31['id']});});});});});}})[_0x307c('0x2d')](respondWithStatusCode(_0x450a65,null))['catch'](handleError(_0x450a65,null));};exports[_0x307c('0x78')]=function(_0x4cfdd5,_0x4bf4e6,_0xd0bd4c){return db['Team'][_0x307c('0x61')]({'where':{'id':_0x4cfdd5[_0x307c('0x3d')][_0x307c('0x6a')]},'attributes':['id'],'include':[{'model':db[_0x307c('0x6c')],'as':_0x307c('0x71'),'attributes':['id'],'raw':!![]}]})[_0x307c('0x2d')](handleEntityNotFound(_0x4bf4e6,null))[_0x307c('0x2d')](function(_0x187dc1){var _0x3c8f41=_[_0x307c('0x36')](_0x187dc1,'id');var _0x2b494a=[];var _0x455745=[];var _0x314082=squel[_0x307c('0x79')]();_0x314082[_0x307c('0x7a')](_0x307c('0x7b'))[_0x307c('0x7c')](_0x307c('0x7d'),'tq')[_0x307c('0x7e')](_0x307c('0x7f'),'ut',_0x307c('0x80'))[_0x307c('0x47')](_0x307c('0x81'),_0x4cfdd5[_0x307c('0x52')]['id']);for(var _0x5bc613=0x0;_0x5bc613<_0x187dc1[_0x307c('0x42')];_0x5bc613+=0x1){let _0x194f5c=_0x187dc1[_0x5bc613];for(var _0x79822f=0x0;_0x79822f<_0x194f5c['Agents'][_0x307c('0x42')];_0x79822f+=0x1){let _0x56a740=_0x194f5c[_0x307c('0x71')][_0x79822f];var _0x3ee4fc=_0x314082['clone']();_0x3ee4fc[_0x307c('0x47')](_0x307c('0x82'),_0x56a740['id']);_0x455745[_0x307c('0x83')](db[_0x307c('0x72')]['query'](_0x3ee4fc[_0x307c('0x84')](),{'type':db[_0x307c('0x72')][_0x307c('0x85')]['SELECT']})[_0x307c('0x2d')](function(_0x115c0b){if(_0x115c0b[_0x307c('0x42')]===0x1){return _0x56a740['id'];}else{var _0x2b59d6=_[_0x307c('0x86')](_[_0x307c('0x36')](_0x115c0b,_0x307c('0x87')),function(_0x1510d4){return _[_0x307c('0x88')](_0x3c8f41,_0x1510d4);});if(_0x2b59d6){return _0x56a740['id'];}}}));}}return BPromise['all'](_0x455745)[_0x307c('0x2d')](function(_0x3bd78d){_0x2b494a=_(_0x2b494a)[_0x307c('0x89')](_0x3bd78d)[_0x307c('0x8a')]()[_0x307c('0x8b')]();return db[_0x307c('0x37')][_0x307c('0x53')]({'where':{'id':_0x4cfdd5[_0x307c('0x52')]['id']}})['then'](function(_0x19c715){return db['sequelize'][_0x307c('0x73')](function(_0x4a7679){return _0x19c715['removeTeams'](_0x4cfdd5['query'][_0x307c('0x6a')],{'transaction':_0x4a7679})['then'](function(){if(!_[_0x307c('0x8c')](_0x2b494a)){return _0x19c715[_0x307c('0x8d')](_0x2b494a,{'transaction':_0x4a7679});}})[_0x307c('0x2d')](function(){_0x2b494a[_0x307c('0x75')](function(_0x1b6e7c){socket['emit']('userMailQueue:remove',{'UserId':_0x1b6e7c,'MailQueueId':_0x19c715['id']});});});});});});})[_0x307c('0x2d')](respondWithStatusCode(_0x4bf4e6,null))[_0x307c('0x51')](handleError(_0x4bf4e6,null));};exports[_0x307c('0x8e')]=function(_0xd19d54,_0x5b00a2,_0x163093){return db[_0x307c('0x37')]['find']({'where':{'id':_0xd19d54[_0x307c('0x52')]['id']}})['then'](handleEntityNotFound(_0x5b00a2,null))[_0x307c('0x2d')](function(_0xfb026a){if(_0xfb026a){return _0xfb026a[_0x307c('0x8e')](_0xd19d54[_0x307c('0x5b')]['ids'],_[_0x307c('0x8f')](_0xd19d54[_0x307c('0x5b')],[_0x307c('0x6a'),'id'])||{})[_0x307c('0x90')](function(_0x568ad1){for(var _0x230434=0x0;_0x230434<_0xd19d54['body'][_0x307c('0x6a')][_0x307c('0x42')];_0x230434+=0x1){socket['emit'](_0x307c('0x77'),{'UserId':Number(_0xd19d54[_0x307c('0x5b')][_0x307c('0x6a')][_0x230434]),'MailQueueId':Number(_0xd19d54[_0x307c('0x52')]['id'])});}return _0x568ad1;});}})[_0x307c('0x2d')](respondWithResult(_0x5b00a2,null))[_0x307c('0x51')](handleError(_0x5b00a2,null));};exports[_0x307c('0x8d')]=function(_0x2e2506,_0x284f71,_0x39cd36){return db[_0x307c('0x37')][_0x307c('0x53')]({'where':{'id':_0x2e2506['params']['id']}})[_0x307c('0x2d')](handleEntityNotFound(_0x284f71,null))[_0x307c('0x2d')](function(_0xa714a0){if(_0xa714a0){return _0xa714a0[_0x307c('0x8d')](_0x2e2506[_0x307c('0x3d')][_0x307c('0x6a')])['then'](function(){if(_[_0x307c('0x91')](_0x2e2506['query']['ids'])){for(var _0x4f07e5=0x0;_0x4f07e5<_0x2e2506[_0x307c('0x3d')][_0x307c('0x6a')][_0x307c('0x42')];_0x4f07e5+=0x1){socket[_0x307c('0x76')]('userMailQueue:remove',{'UserId':Number(_0x2e2506[_0x307c('0x3d')][_0x307c('0x6a')][_0x4f07e5]),'MailQueueId':Number(_0x2e2506['params']['id'])});}}else{socket[_0x307c('0x76')](_0x307c('0x92'),{'UserId':Number(_0x2e2506[_0x307c('0x3d')][_0x307c('0x6a')]),'MailQueueId':Number(_0x2e2506[_0x307c('0x52')]['id'])});}});}})[_0x307c('0x2d')](respondWithStatusCode(_0x284f71,null))['catch'](handleError(_0x284f71,null));};exports[_0x307c('0x93')]=function(_0x32ce4e,_0x18a677,_0x1eb209){var _0x522550={};var _0x4467b8={};var _0x26f09f;var _0x2e6d37;return db['MailQueue'][_0x307c('0x5e')]({'where':{'id':_0x32ce4e[_0x307c('0x52')]['id']}})[_0x307c('0x2d')](handleEntityNotFound(_0x18a677,null))[_0x307c('0x2d')](function(_0x25d17a){if(_0x25d17a){_0x26f09f=_0x25d17a;_0x4467b8[_0x307c('0x40')]=_[_0x307c('0x3c')](db[_0x307c('0x6c')][_0x307c('0x38')]);_0x4467b8[_0x307c('0x3d')]=_[_0x307c('0x3c')](_0x32ce4e[_0x307c('0x3d')]);_0x4467b8['filters']=_[_0x307c('0x3e')](_0x4467b8[_0x307c('0x40')],_0x4467b8[_0x307c('0x3d')]);_0x522550[_0x307c('0x3f')]=_[_0x307c('0x3e')](_0x4467b8[_0x307c('0x40')],qs[_0x307c('0x41')](_0x32ce4e[_0x307c('0x3d')][_0x307c('0x41')]));_0x522550['attributes']=_0x522550[_0x307c('0x3f')][_0x307c('0x42')]?_0x522550[_0x307c('0x3f')]:_0x4467b8['model'];_0x522550['order']=qs[_0x307c('0x46')](_0x32ce4e[_0x307c('0x3d')][_0x307c('0x46')]);_0x522550[_0x307c('0x47')]=qs['filters'](_['pick'](_0x32ce4e[_0x307c('0x3d')],_0x4467b8[_0x307c('0x48')]));if(_0x32ce4e['query'][_0x307c('0x4a')]){_0x522550[_0x307c('0x47')]=_[_0x307c('0x4b')](_0x522550[_0x307c('0x47')],{'$or':_[_0x307c('0x36')](_0x522550[_0x307c('0x3f')],function(_0x266e82){var _0x95a261={};_0x95a261[_0x266e82]={'$like':'%'+_0x32ce4e[_0x307c('0x3d')][_0x307c('0x4a')]+'%'};return _0x95a261;})});}_0x522550=_['merge']({},_0x522550,_0x32ce4e[_0x307c('0x4d')]);return _0x26f09f['getAgents'](_0x522550);}})[_0x307c('0x2d')](function(_0xabaec9){if(_0xabaec9){_0x2e6d37=_0xabaec9[_0x307c('0x42')];if(!_0x32ce4e[_0x307c('0x3d')]['hasOwnProperty'](_0x307c('0x44'))){_0x522550[_0x307c('0x45')]=qs[_0x307c('0x45')](_0x32ce4e[_0x307c('0x3d')][_0x307c('0x45')]);_0x522550[_0x307c('0x25')]=qs[_0x307c('0x25')](_0x32ce4e['query']['offset']);}return _0x26f09f[_0x307c('0x93')](_0x522550);}})[_0x307c('0x2d')](function(_0x4b90b0){if(_0x4b90b0){return _0x4b90b0?{'count':_0x2e6d37,'rows':_0x4b90b0}:null;}})[_0x307c('0x2d')](respondWithResult(_0x18a677,null))[_0x307c('0x51')](handleError(_0x18a677,null));};
\ No newline at end of file
index b9e3f77..0089fea 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0xedc7=['emit','hook','exports','../../mysqldb','setMaxListeners','update'];(function(_0x43e6ea,_0x59248a){var _0x5f3f77=function(_0x5c0d58){while(--_0x5c0d58){_0x43e6ea['push'](_0x43e6ea['shift']());}};_0x5f3f77(++_0x59248a);}(_0xedc7,0x69));var _0x7edc=function(_0x3bd170,_0x11c344){_0x3bd170=_0x3bd170-0x0;var _0x47caf0=_0xedc7[_0x3bd170];return _0x47caf0;};'use strict';var EventEmitter=require('events');var MailQueue=require(_0x7edc('0x0'))['db']['MailQueue'];var MailQueueEvents=new EventEmitter();MailQueueEvents[_0x7edc('0x1')](0x0);var events={'afterCreate':'save','afterUpdate':_0x7edc('0x2'),'afterDestroy':'remove'};function emitEvent(_0x572fe7){return function(_0x2fcf6b,_0x1b01a7,_0x35eb73){MailQueueEvents[_0x7edc('0x3')](_0x572fe7+':'+_0x2fcf6b['id'],_0x2fcf6b);MailQueueEvents[_0x7edc('0x3')](_0x572fe7,_0x2fcf6b);_0x35eb73(null);};}for(var e in events){if(events['hasOwnProperty'](e)){var event=events[e];MailQueue[_0x7edc('0x4')](e,emitEvent(event));}}module[_0x7edc('0x5')]=MailQueueEvents;
\ No newline at end of file
index fcd5ac4..798237c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0x2c83=['bluebird','../../config/environment','exports','define','MailQueue','mail_queues','lodash','util','moment'];(function(_0x520b79,_0x923f97){var _0x2666f1=function(_0x1235b3){while(--_0x1235b3){_0x520b79['push'](_0x520b79['shift']());}};_0x2666f1(++_0x923f97);}(_0x2c83,0x1d1));var _0x32c8=function(_0x55e836,_0x50b958){_0x55e836=_0x55e836-0x0;var _0x5d1a4b=_0x2c83[_0x55e836];return _0x5d1a4b;};'use strict';var _=require(_0x32c8('0x0'));var util=require(_0x32c8('0x1'));var logger=require('../../config/logger')('api');var moment=require(_0x32c8('0x2'));var BPromise=require(_0x32c8('0x3'));var rp=require('request-promise');var fs=require('fs');var path=require('path');var rimraf=require('rimraf');var config=require(_0x32c8('0x4'));var attributes=require('./mailQueue.attributes');module[_0x32c8('0x5')]=function(_0x1cdd68,_0x46825e){return _0x1cdd68[_0x32c8('0x6')](_0x32c8('0x7'),attributes,{'tableName':_0x32c8('0x8'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 64fe5ab..24e82d3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0xa204=['attributes','limit','include','map','model','catch','ShowMailQueue','find','raw','where','lodash','util','bluebird','randomstring','ioredis','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','redis','localhost','socket.io-emitter','register','request','then','info','request\x20sent','debug','stringify','error','code','message','MailQueue,\x20%s,\x20%s','result','GetMailQueue','MailQueue','findAll','options'];(function(_0x1e2300,_0x10ba69){var _0x29111b=function(_0x59a49f){while(--_0x59a49f){_0x1e2300['push'](_0x1e2300['shift']());}};_0x29111b(++_0x10ba69);}(_0xa204,0x152));var _0x4a20=function(_0x2fd7d5,_0x3ac631){_0x2fd7d5=_0x2fd7d5-0x0;var _0x54bb19=_0xa204[_0x2fd7d5];return _0x54bb19;};'use strict';var _=require(_0x4a20('0x0'));var util=require(_0x4a20('0x1'));var moment=require('moment');var BPromise=require(_0x4a20('0x2'));var rs=require(_0x4a20('0x3'));var fs=require('fs');var Redis=require(_0x4a20('0x4'));var db=require('../../mysqldb')['db'];var utils=require(_0x4a20('0x5'));var logger=require(_0x4a20('0x6'))(_0x4a20('0x7'));var config=require(_0x4a20('0x8'));var jayson=require(_0x4a20('0x9'));var client=jayson[_0x4a20('0xa')][_0x4a20('0xb')]({'port':0x232a});config[_0x4a20('0xc')]=_['defaults'](config[_0x4a20('0xc')],{'host':_0x4a20('0xd'),'port':0x18eb});var socket=require(_0x4a20('0xe'))(new Redis(config[_0x4a20('0xc')]));require('./mailQueue.socket')[_0x4a20('0xf')](socket);function respondWithRpcPromise(_0x34d9a6,_0x1e19a8,_0x186840){return new BPromise(function(_0x8d9a73,_0x2cf24e){return client[_0x4a20('0x10')](_0x34d9a6,_0x186840)[_0x4a20('0x11')](function(_0x36e826){logger[_0x4a20('0x12')]('MailQueue,\x20%s,\x20%s',_0x1e19a8,_0x4a20('0x13'));logger[_0x4a20('0x14')]('MailQueue,\x20%s,\x20%s,\x20%s',_0x1e19a8,_0x4a20('0x13'),JSON[_0x4a20('0x15')](_0x36e826));if(_0x36e826[_0x4a20('0x16')]){if(_0x36e826['error'][_0x4a20('0x17')]===0x1f4){logger['error']('MailQueue,\x20%s,\x20%s',_0x1e19a8,_0x36e826['error'][_0x4a20('0x18')]);return _0x2cf24e(_0x36e826['error'][_0x4a20('0x18')]);}logger['error'](_0x4a20('0x19'),_0x1e19a8,_0x36e826[_0x4a20('0x16')]['message']);return _0x8d9a73(_0x36e826[_0x4a20('0x16')]['message']);}else{logger['info'](_0x4a20('0x19'),_0x1e19a8,_0x4a20('0x13'));_0x8d9a73(_0x36e826[_0x4a20('0x1a')]['message']);}})['catch'](function(_0x369491){logger[_0x4a20('0x16')](_0x4a20('0x19'),_0x1e19a8,_0x369491);_0x2cf24e(_0x369491);});});}exports[_0x4a20('0x1b')]=function(_0x3622e2){var _0x37f87c=this;return new Promise(function(_0x5d1222,_0x2dfa58){return db[_0x4a20('0x1c')][_0x4a20('0x1d')]({'raw':_0x3622e2[_0x4a20('0x1e')]?_0x3622e2['options']['raw']===undefined?!![]:![]:!![],'where':_0x3622e2['options']?_0x3622e2[_0x4a20('0x1e')]['where']||null:null,'attributes':_0x3622e2[_0x4a20('0x1e')]?_0x3622e2[_0x4a20('0x1e')][_0x4a20('0x1f')]||null:null,'limit':_0x3622e2['options']?_0x3622e2[_0x4a20('0x1e')][_0x4a20('0x20')]||null:null,'include':_0x3622e2[_0x4a20('0x1e')]?_0x3622e2[_0x4a20('0x1e')][_0x4a20('0x21')]?_[_0x4a20('0x22')](_0x3622e2['options']['include'],function(_0x33a1fa){return{'model':db[_0x33a1fa[_0x4a20('0x23')]],'as':_0x33a1fa['as'],'attributes':_0x33a1fa[_0x4a20('0x1f')],'include':_0x33a1fa[_0x4a20('0x21')]?_[_0x4a20('0x22')](_0x33a1fa[_0x4a20('0x21')],function(_0x226d17){return{'model':db[_0x226d17['model']],'as':_0x226d17['as'],'attributes':_0x226d17[_0x4a20('0x1f')],'include':_0x226d17['include']?_[_0x4a20('0x22')](_0x226d17[_0x4a20('0x21')],function(_0x55860e){return{'model':db[_0x55860e[_0x4a20('0x23')]],'as':_0x55860e['as'],'attributes':_0x55860e[_0x4a20('0x1f')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x38dd33){logger[_0x4a20('0x12')]('GetMailQueue',_0x3622e2);logger[_0x4a20('0x14')](_0x4a20('0x1b'),_0x3622e2,JSON[_0x4a20('0x15')](_0x38dd33));_0x5d1222(_0x38dd33);})[_0x4a20('0x24')](function(_0x5699a1){logger[_0x4a20('0x16')](_0x4a20('0x1b'),_0x5699a1['message'],_0x3622e2);_0x2dfa58(_0x37f87c[_0x4a20('0x16')](0x1f4,_0x5699a1[_0x4a20('0x18')]));});});};exports[_0x4a20('0x25')]=function(_0x3dd3f6){var _0x5c5a4e=this;return new Promise(function(_0x127d6e,_0x4fc62d){return db[_0x4a20('0x1c')][_0x4a20('0x26')]({'raw':_0x3dd3f6[_0x4a20('0x1e')]?_0x3dd3f6['options'][_0x4a20('0x27')]===undefined?!![]:![]:!![],'where':_0x3dd3f6['options']?_0x3dd3f6[_0x4a20('0x1e')][_0x4a20('0x28')]||null:null,'attributes':_0x3dd3f6['options']?_0x3dd3f6['options']['attributes']||null:null,'include':_0x3dd3f6['options']?_0x3dd3f6[_0x4a20('0x1e')][_0x4a20('0x21')]?_[_0x4a20('0x22')](_0x3dd3f6[_0x4a20('0x1e')][_0x4a20('0x21')],function(_0x54ee12){return{'model':db[_0x54ee12[_0x4a20('0x23')]],'as':_0x54ee12['as'],'attributes':_0x54ee12['attributes'],'include':_0x54ee12['include']?_[_0x4a20('0x22')](_0x54ee12['include'],function(_0x442e7e){return{'model':db[_0x442e7e[_0x4a20('0x23')]],'as':_0x442e7e['as'],'attributes':_0x442e7e[_0x4a20('0x1f')],'include':_0x442e7e[_0x4a20('0x21')]?_[_0x4a20('0x22')](_0x442e7e[_0x4a20('0x21')],function(_0x4009b8){return{'model':db[_0x4009b8[_0x4a20('0x23')]],'as':_0x4009b8['as'],'attributes':_0x4009b8['attributes']};}):[]};}):[]};}):[]:[]})[_0x4a20('0x11')](function(_0x3ea39c){logger[_0x4a20('0x12')](_0x4a20('0x25'),_0x3dd3f6);logger['debug'](_0x4a20('0x25'),_0x3dd3f6,JSON[_0x4a20('0x15')](_0x3ea39c));_0x127d6e(_0x3ea39c);})[_0x4a20('0x24')](function(_0x27a8c6){logger['error'](_0x4a20('0x25'),_0x27a8c6[_0x4a20('0x18')],_0x3dd3f6);_0x4fc62d(_0x5c5a4e['error'](0x1f4,_0x27a8c6[_0x4a20('0x18')]));});});};
\ No newline at end of file
index 0679f46..1b721cf 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0x9d53=['mailQueue:','./mailQueue.events','remove','removeListener','register','length'];(function(_0x336cb2,_0x436438){var _0x1eaadb=function(_0x3131f3){while(--_0x3131f3){_0x336cb2['push'](_0x336cb2['shift']());}};_0x1eaadb(++_0x436438);}(_0x9d53,0xf1));var _0x39d5=function(_0xe63a4b,_0x172968){_0xe63a4b=_0xe63a4b-0x0;var _0x372052=_0x9d53[_0xe63a4b];return _0x372052;};'use strict';var MailQueueEvents=require(_0x39d5('0x0'));var events=['save',_0x39d5('0x1'),'update'];function createListener(_0x34df1d,_0x54e7ca){return function(_0x35eeeb){_0x54e7ca['emit'](_0x34df1d,_0x35eeeb);};}function removeListener(_0x178db4,_0x16a065){return function(){MailQueueEvents[_0x39d5('0x2')](_0x178db4,_0x16a065);};}exports[_0x39d5('0x3')]=function(_0x28c41e){for(var _0x2d833c=0x0,_0xa5604a=events[_0x39d5('0x4')];_0x2d833c<_0xa5604a;_0x2d833c++){var _0x301fd2=events[_0x2d833c];var _0x49755f=createListener(_0x39d5('0x5')+_0x301fd2,_0x28c41e);MailQueueEvents['on'](_0x301fd2,_0x49755f);}};
\ No newline at end of file
index db84e2c..2fb5ab8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0x741e=['/:id','destroy','exports','util','path','express','Router','fs-extra','../../components/auth/service','../../config/environment','./mailQueueReport.controller','get','index','/describe','isAuthenticated','describe','show','create','put','update','delete'];(function(_0x194c7b,_0x4bcc0e){var _0x1d0a71=function(_0x55a5e5){while(--_0x55a5e5){_0x194c7b['push'](_0x194c7b['shift']());}};_0x1d0a71(++_0x4bcc0e);}(_0x741e,0x1a7));var _0xe741=function(_0xd2af9a,_0x26296a){_0xd2af9a=_0xd2af9a-0x0;var _0x15337b=_0x741e[_0xd2af9a];return _0x15337b;};'use strict';var multer=require('multer');var util=require(_0xe741('0x0'));var path=require(_0xe741('0x1'));var timeout=require('connect-timeout');var express=require(_0xe741('0x2'));var router=express[_0xe741('0x3')]();var fs_extra=require(_0xe741('0x4'));var auth=require(_0xe741('0x5'));var interaction=require('../../components/interaction/service');var config=require(_0xe741('0x6'));var controller=require(_0xe741('0x7'));router[_0xe741('0x8')]('/',auth['isAuthenticated'](),controller[_0xe741('0x9')]);router['get'](_0xe741('0xa'),auth[_0xe741('0xb')](),controller[_0xe741('0xc')]);router[_0xe741('0x8')]('/:id',auth[_0xe741('0xb')](),controller[_0xe741('0xd')]);router['post']('/',auth[_0xe741('0xb')](),controller[_0xe741('0xe')]);router[_0xe741('0xf')]('/:id',auth[_0xe741('0xb')](),controller[_0xe741('0x10')]);router[_0xe741('0x11')](_0xe741('0x12'),auth[_0xe741('0xb')](),controller[_0xe741('0x13')]);module[_0xe741('0x14')]=router;
\ No newline at end of file
index ada028e..b78faac 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0x45d4=['moment','exports','STRING','DATE'];(function(_0x3333aa,_0x168319){var _0xb813bd=function(_0x43d514){while(--_0x43d514){_0x3333aa['push'](_0x3333aa['shift']());}};_0xb813bd(++_0x168319);}(_0x45d4,0x170));var _0x445d=function(_0x33a522,_0x53d235){_0x33a522=_0x33a522-0x0;var _0x450e36=_0x45d4[_0x33a522];return _0x450e36;};'use strict';var moment=require(_0x445d('0x0'));var Sequelize=require('sequelize');module[_0x445d('0x1')]={'uniqueid':{'type':Sequelize['STRING'],'allowNull':![]},'from':{'type':Sequelize[_0x445d('0x2')]},'joinAt':{'type':Sequelize['DATE']},'leaveAt':{'type':Sequelize['DATE']},'acceptAt':{'type':Sequelize[_0x445d('0x3')]},'exitAt':{'type':Sequelize['DATE']},'reason':{'type':Sequelize[_0x445d('0x2')]}};
\ No newline at end of file
index 7a2eb5f..13adfda 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0x1623=['filters','intersection','attributes','fields','nolimit','order','sort','pick','filter','where','merge','options','MailQueueReport','findAll','rows','catch','show','params','length','find','create','body','describe','eml-format','fast-json-patch','request-promise','moment','bluebird','mustache','sox','ejs','fs-extra','squel','crypto','jsforce','desk.js','to-csv','querystring','papaparse','ioredis','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','status','end','json','undefined','limit','count','offset','set','apply','save','update','then','destroy','sendStatus','error','name','send','index','map','rawAttributes','fieldName','type','key','model','query','keys'];(function(_0x14add3,_0x13ce8d){var _0x4a174f=function(_0x2b3ed7){while(--_0x2b3ed7){_0x14add3['push'](_0x14add3['shift']());}};_0x4a174f(++_0x13ce8d);}(_0x1623,0xab));var _0x3162=function(_0x5c4a73,_0xb19998){_0x5c4a73=_0x5c4a73-0x0;var _0x1593fe=_0x1623[_0x5c4a73];return _0x1593fe;};'use strict';var emlformat=require(_0x3162('0x0'));var rimraf=require('rimraf');var zipdir=require('zip-dir');var jsonpatch=require(_0x3162('0x1'));var rp=require(_0x3162('0x2'));var moment=require(_0x3162('0x3'));var BPromise=require(_0x3162('0x4'));var Mustache=require(_0x3162('0x5'));var util=require('util');var path=require('path');var sox=require(_0x3162('0x6'));var csv=require('to-csv');var ejs=require(_0x3162('0x7'));var fs=require('fs');var fs_extra=require(_0x3162('0x8'));var _=require('lodash');var squel=require(_0x3162('0x9'));var crypto=require(_0x3162('0xa'));var jsforce=require(_0x3162('0xb'));var deskjs=require(_0x3162('0xc'));var toCsv=require(_0x3162('0xd'));var querystring=require(_0x3162('0xe'));var Papa=require(_0x3162('0xf'));var Redis=require(_0x3162('0x10'));var authService=require('../../components/auth/service');var qs=require('../../components/parsers/qs');var as=require(_0x3162('0x11'));var hardwareService=require(_0x3162('0x12'));var logger=require(_0x3162('0x13'))(_0x3162('0x14'));var utils=require(_0x3162('0x15'));var config=require(_0x3162('0x16'));var licenseUtil=require(_0x3162('0x17'));var db=require(_0x3162('0x18'))['db'];function respondWithStatusCode(_0x157ab8,_0x4c3625){_0x4c3625=_0x4c3625||0xcc;return function(_0x2d11c5){if(_0x2d11c5){return _0x157ab8['sendStatus'](_0x4c3625);}return _0x157ab8[_0x3162('0x19')](_0x4c3625)[_0x3162('0x1a')]();};}function respondWithResult(_0x49d1ad,_0x4a393a){_0x4a393a=_0x4a393a||0xc8;return function(_0x198764){if(_0x198764){return _0x49d1ad[_0x3162('0x19')](_0x4a393a)[_0x3162('0x1b')](_0x198764);}};}function respondWithFilteredResult(_0x4b8a3b,_0x15e348){return function(_0x3d0bea){if(_0x3d0bea){var _0x2705d1=typeof _0x15e348['offset']===_0x3162('0x1c')&&typeof _0x15e348[_0x3162('0x1d')]===_0x3162('0x1c');var _0xc3ee06=_0x3d0bea[_0x3162('0x1e')];var _0x1eed46=_0x2705d1?0x0:_0x15e348[_0x3162('0x1f')];var _0x4b2bf3=_0x2705d1?_0x3d0bea[_0x3162('0x1e')]:_0x15e348[_0x3162('0x1f')]+_0x15e348[_0x3162('0x1d')];var _0x36ca97;if(_0x4b2bf3>=_0xc3ee06){_0x4b2bf3=_0xc3ee06;_0x36ca97=0xc8;}else{_0x36ca97=0xce;}_0x4b8a3b['status'](_0x36ca97);return _0x4b8a3b[_0x3162('0x20')]('Content-Range',_0x1eed46+'-'+_0x4b2bf3+'/'+_0xc3ee06)['json'](_0x3d0bea);}return null;};}function patchUpdates(_0xa5c62b){return function(_0x3e4d23){try{jsonpatch[_0x3162('0x21')](_0x3e4d23,_0xa5c62b,!![]);}catch(_0x523fab){return BPromise['reject'](_0x523fab);}return _0x3e4d23[_0x3162('0x22')]();};}function saveUpdates(_0x396372,_0x32c051){return function(_0x26c90d){if(_0x26c90d){return _0x26c90d[_0x3162('0x23')](_0x396372)[_0x3162('0x24')](function(_0x52ae25){return _0x52ae25;});}return null;};}function removeEntity(_0x1b2713,_0x5a4994){return function(_0xd283d6){if(_0xd283d6){return _0xd283d6[_0x3162('0x25')]()[_0x3162('0x24')](function(){_0x1b2713[_0x3162('0x19')](0xcc)[_0x3162('0x1a')]();});}};}function handleEntityNotFound(_0x3c543e,_0x30552f){return function(_0x5f8f7){if(!_0x5f8f7){_0x3c543e[_0x3162('0x26')](0x194);}return _0x5f8f7;};}function handleError(_0x356c5d,_0x8fa09f){_0x8fa09f=_0x8fa09f||0x1f4;return function(_0x2f62d7){logger[_0x3162('0x27')](_0x2f62d7['stack']);if(_0x2f62d7[_0x3162('0x28')]){delete _0x2f62d7['name'];}_0x356c5d[_0x3162('0x19')](_0x8fa09f)[_0x3162('0x29')](_0x2f62d7);};}exports[_0x3162('0x2a')]=function(_0x57f567,_0x4903e7){var _0xda0389={},_0xaa1f35={},_0x14df16={'count':0x0,'rows':[]};var _0x399148=_[_0x3162('0x2b')](db['MailQueueReport'][_0x3162('0x2c')],function(_0x4e3cc2){return{'name':_0x4e3cc2[_0x3162('0x2d')],'type':_0x4e3cc2[_0x3162('0x2e')][_0x3162('0x2f')]};});_0xaa1f35[_0x3162('0x30')]=_[_0x3162('0x2b')](_0x399148,_0x3162('0x28'));_0xaa1f35[_0x3162('0x31')]=_[_0x3162('0x32')](_0x57f567['query']);_0xaa1f35[_0x3162('0x33')]=_[_0x3162('0x34')](_0xaa1f35['model'],_0xaa1f35[_0x3162('0x31')]);_0xda0389[_0x3162('0x35')]=_['intersection'](_0xaa1f35['model'],qs[_0x3162('0x36')](_0x57f567['query'][_0x3162('0x36')]));_0xda0389[_0x3162('0x35')]=_0xda0389[_0x3162('0x35')]['length']?_0xda0389['attributes']:_0xaa1f35[_0x3162('0x30')];if(!_0x57f567[_0x3162('0x31')]['hasOwnProperty'](_0x3162('0x37'))){_0xda0389['limit']=qs[_0x3162('0x1d')](_0x57f567[_0x3162('0x31')][_0x3162('0x1d')]);_0xda0389[_0x3162('0x1f')]=qs[_0x3162('0x1f')](_0x57f567[_0x3162('0x31')][_0x3162('0x1f')]);}_0xda0389[_0x3162('0x38')]=qs[_0x3162('0x39')](_0x57f567[_0x3162('0x31')][_0x3162('0x39')]);_0xda0389['where']=qs[_0x3162('0x33')](_[_0x3162('0x3a')](_0x57f567[_0x3162('0x31')],_0xaa1f35['filters']),_0x399148);if(_0x57f567['query'][_0x3162('0x3b')]){_0xda0389[_0x3162('0x3c')]=_[_0x3162('0x3d')](_0xda0389[_0x3162('0x3c')],{'$or':_['map'](_0x399148,function(_0x4186b6){if(_0x4186b6['type']!=='VIRTUAL'){var _0x5dee49={};_0x5dee49[_0x4186b6[_0x3162('0x28')]]={'$like':'%'+_0x57f567[_0x3162('0x31')][_0x3162('0x3b')]+'%'};return _0x5dee49;}})});}_0xda0389=_['merge']({},_0xda0389,_0x57f567[_0x3162('0x3e')]);var _0x2ce9c6={'where':_0xda0389[_0x3162('0x3c')]};return db[_0x3162('0x3f')][_0x3162('0x1e')](_0x2ce9c6)['then'](function(_0x5447d6){_0x14df16[_0x3162('0x1e')]=_0x5447d6;if(_0x57f567[_0x3162('0x31')]['includeAll']){_0xda0389['include']=[{'all':!![]}];}return db[_0x3162('0x3f')][_0x3162('0x40')](_0xda0389);})[_0x3162('0x24')](function(_0x4883ac){_0x14df16[_0x3162('0x41')]=_0x4883ac;return _0x14df16;})[_0x3162('0x24')](respondWithFilteredResult(_0x4903e7,_0xda0389))[_0x3162('0x42')](handleError(_0x4903e7,null));};exports[_0x3162('0x43')]=function(_0x534708,_0x2617d3){var _0x282e3e={'raw':!![],'where':{'id':_0x534708[_0x3162('0x44')]['id']}},_0x522cce={};_0x522cce[_0x3162('0x30')]=_['keys'](db[_0x3162('0x3f')][_0x3162('0x2c')]);_0x522cce['query']=_[_0x3162('0x32')](_0x534708['query']);_0x522cce[_0x3162('0x33')]=_[_0x3162('0x34')](_0x522cce[_0x3162('0x30')],_0x522cce[_0x3162('0x31')]);_0x282e3e[_0x3162('0x35')]=_[_0x3162('0x34')](_0x522cce['model'],qs[_0x3162('0x36')](_0x534708[_0x3162('0x31')][_0x3162('0x36')]));_0x282e3e['attributes']=_0x282e3e[_0x3162('0x35')][_0x3162('0x45')]?_0x282e3e['attributes']:_0x522cce[_0x3162('0x30')];if(_0x534708['query']['includeAll']){_0x282e3e['include']=[{'all':!![]}];}_0x282e3e=_[_0x3162('0x3d')]({},_0x282e3e,_0x534708[_0x3162('0x3e')]);return db[_0x3162('0x3f')][_0x3162('0x46')](_0x282e3e)[_0x3162('0x24')](handleEntityNotFound(_0x2617d3,null))[_0x3162('0x24')](respondWithResult(_0x2617d3,null))[_0x3162('0x42')](handleError(_0x2617d3,null));};exports[_0x3162('0x47')]=function(_0x3d2958,_0x28865c){return db[_0x3162('0x3f')][_0x3162('0x47')](_0x3d2958[_0x3162('0x48')],{})['then'](respondWithResult(_0x28865c,0xc9))[_0x3162('0x42')](handleError(_0x28865c,null));};exports['update']=function(_0x4f1dde,_0x12d791){if(_0x4f1dde[_0x3162('0x48')]['id']){delete _0x4f1dde[_0x3162('0x48')]['id'];}return db[_0x3162('0x3f')]['find']({'where':{'id':_0x4f1dde[_0x3162('0x44')]['id']}})['then'](handleEntityNotFound(_0x12d791,null))[_0x3162('0x24')](saveUpdates(_0x4f1dde[_0x3162('0x48')],null))['then'](respondWithResult(_0x12d791,null))[_0x3162('0x42')](handleError(_0x12d791,null));};exports['destroy']=function(_0x516599,_0x13e7c4){return db[_0x3162('0x3f')][_0x3162('0x46')]({'where':{'id':_0x516599[_0x3162('0x44')]['id']}})[_0x3162('0x24')](handleEntityNotFound(_0x13e7c4,null))[_0x3162('0x24')](removeEntity(_0x13e7c4,null))[_0x3162('0x42')](handleError(_0x13e7c4,null));};exports[_0x3162('0x49')]=function(_0x554a03,_0x48b81d){return db['MailQueueReport'][_0x3162('0x49')]()[_0x3162('0x24')](respondWithResult(_0x48b81d,null))[_0x3162('0x42')](handleError(_0x48b81d,null));};
\ No newline at end of file
index bee5aac..607bad0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0x035d=['lodash','util','../../config/logger','api','moment','path','../../config/environment','./mailQueueReport.attributes','exports','MailQueueReport','report_mail_queue','uniqueid'];(function(_0x22f880,_0x2855d5){var _0x2c7e5c=function(_0x3cb113){while(--_0x3cb113){_0x22f880['push'](_0x22f880['shift']());}};_0x2c7e5c(++_0x2855d5);}(_0x035d,0x174));var _0xd035=function(_0x212a6f,_0xc1e608){_0x212a6f=_0x212a6f-0x0;var _0x364e43=_0x035d[_0x212a6f];return _0x364e43;};'use strict';var _=require(_0xd035('0x0'));var util=require(_0xd035('0x1'));var logger=require(_0xd035('0x2'))(_0xd035('0x3'));var moment=require(_0xd035('0x4'));var BPromise=require('bluebird');var rp=require('request-promise');var fs=require('fs');var path=require(_0xd035('0x5'));var rimraf=require('rimraf');var config=require(_0xd035('0x6'));var attributes=require(_0xd035('0x7'));module[_0xd035('0x8')]=function(_0x5b9876,_0x278668){return _0x5b9876['define'](_0xd035('0x9'),attributes,{'tableName':_0xd035('0xa'),'paranoid':![],'indexes':[{'name':_0xd035('0xb'),'fields':[_0xd035('0xb')]}],'timestamps':!![]});};
\ No newline at end of file
index 7ddd2e2..83eed29 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0x1261=['../../config/utils','../../config/logger','rpc','../../config/environment','http','request','then','info','MailQueueReport,\x20%s,\x20%s','request\x20sent','MailQueueReport,\x20%s,\x20%s,\x20%s','error','code','message','catch','CreateMailQueueReport','body','options','raw','stringify','MailQueueReport','update','where','UpdateMailQueueReport','util','moment','bluebird','randomstring','ioredis','../../mysqldb'];(function(_0x7f070c,_0x5d5925){var _0x4b7ba4=function(_0x4e6447){while(--_0x4e6447){_0x7f070c['push'](_0x7f070c['shift']());}};_0x4b7ba4(++_0x5d5925);}(_0x1261,0x144));var _0x1126=function(_0x71185f,_0x371d74){_0x71185f=_0x71185f-0x0;var _0x160ffe=_0x1261[_0x71185f];return _0x160ffe;};'use strict';var _=require('lodash');var util=require(_0x1126('0x0'));var moment=require(_0x1126('0x1'));var BPromise=require(_0x1126('0x2'));var rs=require(_0x1126('0x3'));var fs=require('fs');var Redis=require(_0x1126('0x4'));var db=require(_0x1126('0x5'))['db'];var utils=require(_0x1126('0x6'));var logger=require(_0x1126('0x7'))(_0x1126('0x8'));var config=require(_0x1126('0x9'));var jayson=require('jayson/promise');var client=jayson['client'][_0x1126('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x907180,_0x4f239c,_0x17e5f0){return new BPromise(function(_0x28772d,_0x245be9){return client[_0x1126('0xb')](_0x907180,_0x17e5f0)[_0x1126('0xc')](function(_0x59cfa1){logger[_0x1126('0xd')](_0x1126('0xe'),_0x4f239c,_0x1126('0xf'));logger['debug'](_0x1126('0x10'),_0x4f239c,'request\x20sent',JSON['stringify'](_0x59cfa1));if(_0x59cfa1[_0x1126('0x11')]){if(_0x59cfa1['error'][_0x1126('0x12')]===0x1f4){logger[_0x1126('0x11')](_0x1126('0xe'),_0x4f239c,_0x59cfa1[_0x1126('0x11')][_0x1126('0x13')]);return _0x245be9(_0x59cfa1[_0x1126('0x11')][_0x1126('0x13')]);}logger[_0x1126('0x11')](_0x1126('0xe'),_0x4f239c,_0x59cfa1['error']['message']);return _0x28772d(_0x59cfa1[_0x1126('0x11')][_0x1126('0x13')]);}else{logger[_0x1126('0xd')]('MailQueueReport,\x20%s,\x20%s',_0x4f239c,_0x1126('0xf'));_0x28772d(_0x59cfa1['result'][_0x1126('0x13')]);}})[_0x1126('0x14')](function(_0x257b5f){logger['error'](_0x1126('0xe'),_0x4f239c,_0x257b5f);_0x245be9(_0x257b5f);});});}exports[_0x1126('0x15')]=function(_0x4a7b49){var _0x4d2b38=this;return new Promise(function(_0x22ae0b,_0x2b2487){return db['MailQueueReport']['create'](_0x4a7b49[_0x1126('0x16')],{'raw':_0x4a7b49['options']?_0x4a7b49[_0x1126('0x17')][_0x1126('0x18')]===undefined?!![]:![]:!![]})[_0x1126('0xc')](function(_0x54400a){logger[_0x1126('0xd')]('CreateMailQueueReport',_0x4a7b49);logger['debug'](_0x1126('0x15'),_0x4a7b49,JSON[_0x1126('0x19')](_0x54400a));_0x22ae0b(_0x54400a);})[_0x1126('0x14')](function(_0x36d254){logger['error'](_0x1126('0x15'),_0x36d254[_0x1126('0x13')],_0x4a7b49);_0x2b2487(_0x4d2b38['error'](0x1f4,_0x36d254[_0x1126('0x13')]));});});};exports['UpdateMailQueueReport']=function(_0x529dd9){var _0x4b57ab=this;return new Promise(function(_0x2199d9,_0x15bcc3){return db[_0x1126('0x1a')][_0x1126('0x1b')](_0x529dd9[_0x1126('0x16')],{'raw':_0x529dd9[_0x1126('0x17')]?_0x529dd9[_0x1126('0x17')][_0x1126('0x18')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x529dd9['options']?_0x529dd9[_0x1126('0x17')][_0x1126('0x1c')]||null:null,'attributes':_0x529dd9[_0x1126('0x17')]?_0x529dd9['options']['attributes']||null:null,'limit':_0x529dd9[_0x1126('0x17')]?_0x529dd9[_0x1126('0x17')]['limit']||null:null})[_0x1126('0xc')](function(_0x23d2bc){logger['info'](_0x1126('0x1d'),_0x529dd9);logger['debug'](_0x1126('0x1d'),_0x529dd9,JSON['stringify'](_0x23d2bc));_0x2199d9(_0x23d2bc);})[_0x1126('0x14')](function(_0x583ce6){logger[_0x1126('0x11')]('UpdateMailQueueReport',_0x583ce6['message'],_0x529dd9);_0x15bcc3(_0x4b57ab['error'](0x1f4,_0x583ce6[_0x1126('0x13')]));});});};
\ No newline at end of file
index 7f95446..2e1f5fd 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(_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
+var _0xd8b0=['Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','multer','util'];(function(_0x474ac2,_0x5d1535){var _0x28001e=function(_0xc26409){while(--_0xc26409){_0x474ac2['push'](_0x474ac2['shift']());}};_0x28001e(++_0x5d1535);}(_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 8362a36..76c736d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0xb1c1=['INTEGER','sequelize','exports','STRING','BOOLEAN'];(function(_0x23ba30,_0x28124f){var _0x278758=function(_0x179860){while(--_0x179860){_0x23ba30['push'](_0x23ba30['shift']());}};_0x278758(++_0x28124f);}(_0xb1c1,0x155));var _0x1b1c=function(_0x96524d,_0x1c390){_0x96524d=_0x96524d-0x0;var _0x329597=_0xb1c1[_0x96524d];return _0x329597;};'use strict';var Sequelize=require(_0x1b1c('0x0'));module[_0x1b1c('0x1')]={'description':{'type':Sequelize[_0x1b1c('0x2')]},'host':{'type':Sequelize['STRING']},'authentication':{'type':Sequelize[_0x1b1c('0x3')],'defaultValue':!![]},'user':{'type':Sequelize['STRING']},'password':{'type':Sequelize[_0x1b1c('0x2')]},'port':{'type':Sequelize[_0x1b1c('0x4')]},'tls':{'type':Sequelize[_0x1b1c('0x3')],'defaultValue':!![]},'mailbox':{'type':Sequelize['STRING'],'defaultValue':'INBOX'},'connTimeout':{'type':Sequelize[_0x1b1c('0x4')],'defaultValue':0xa},'authTimeout':{'type':Sequelize[_0x1b1c('0x4')],'defaultValue':0x5},'service':{'type':Sequelize['STRING']},'modernAuthentication':{'type':Sequelize[_0x1b1c('0x3')],'defaultValue':![]}};
\ No newline at end of file
index 23f41bd..d3aedb1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0xcec0=['lodash','../../config/logger','request-promise','path','rimraf','../../config/environment','./mailServerIn.attributes','exports','define','MailServerIn','mail_servers_in'];(function(_0x16d6a2,_0x266958){var _0x681283=function(_0xb758fd){while(--_0xb758fd){_0x16d6a2['push'](_0x16d6a2['shift']());}};_0x681283(++_0x266958);}(_0xcec0,0x155));var _0x0cec=function(_0x110c3d,_0x12ee06){_0x110c3d=_0x110c3d-0x0;var _0x226d67=_0xcec0[_0x110c3d];return _0x226d67;};'use strict';var _=require(_0x0cec('0x0'));var util=require('util');var logger=require(_0x0cec('0x1'))('api');var moment=require('moment');var BPromise=require('bluebird');var rp=require(_0x0cec('0x2'));var fs=require('fs');var path=require(_0x0cec('0x3'));var rimraf=require(_0x0cec('0x4'));var config=require(_0x0cec('0x5'));var attributes=require(_0x0cec('0x6'));module[_0x0cec('0x7')]=function(_0x1b8a0a,_0x47e8c3){return _0x1b8a0a[_0x0cec('0x8')](_0x0cec('0x9'),attributes,{'tableName':_0x0cec('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 5d822e4..91bf99b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0x1601=['model','util','bluebird','ioredis','../../config/logger','rpc','../../config/environment','http','request','then','info','request\x20sent','debug','MailServerIn,\x20%s,\x20%s,\x20%s','stringify','error','MailServerIn,\x20%s,\x20%s','message','result','catch','GetMailServerIn','MailServerIn','options','raw','attributes','limit','map','include'];(function(_0x2badbc,_0x5d9a6a){var _0x501bb3=function(_0x70a220){while(--_0x70a220){_0x2badbc['push'](_0x2badbc['shift']());}};_0x501bb3(++_0x5d9a6a);}(_0x1601,0x151));var _0x1160=function(_0x5f4b06,_0x3e5997){_0x5f4b06=_0x5f4b06-0x0;var _0x55cc05=_0x1601[_0x5f4b06];return _0x55cc05;};'use strict';var _=require('lodash');var util=require(_0x1160('0x0'));var moment=require('moment');var BPromise=require(_0x1160('0x1'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x1160('0x2'));var db=require('../../mysqldb')['db'];var utils=require('../../config/utils');var logger=require(_0x1160('0x3'))(_0x1160('0x4'));var config=require(_0x1160('0x5'));var jayson=require('jayson/promise');var client=jayson['client'][_0x1160('0x6')]({'port':0x232a});function respondWithRpcPromise(_0x154a88,_0x46b1e8,_0x5cbc51){return new BPromise(function(_0x40e174,_0x526f5c){return client[_0x1160('0x7')](_0x154a88,_0x5cbc51)[_0x1160('0x8')](function(_0x2808f0){logger[_0x1160('0x9')]('MailServerIn,\x20%s,\x20%s',_0x46b1e8,_0x1160('0xa'));logger[_0x1160('0xb')](_0x1160('0xc'),_0x46b1e8,_0x1160('0xa'),JSON[_0x1160('0xd')](_0x2808f0));if(_0x2808f0['error']){if(_0x2808f0[_0x1160('0xe')]['code']===0x1f4){logger[_0x1160('0xe')](_0x1160('0xf'),_0x46b1e8,_0x2808f0[_0x1160('0xe')][_0x1160('0x10')]);return _0x526f5c(_0x2808f0[_0x1160('0xe')]['message']);}logger[_0x1160('0xe')](_0x1160('0xf'),_0x46b1e8,_0x2808f0[_0x1160('0xe')][_0x1160('0x10')]);return _0x40e174(_0x2808f0[_0x1160('0xe')][_0x1160('0x10')]);}else{logger[_0x1160('0x9')](_0x1160('0xf'),_0x46b1e8,_0x1160('0xa'));_0x40e174(_0x2808f0[_0x1160('0x11')][_0x1160('0x10')]);}})[_0x1160('0x12')](function(_0x3e813c){logger[_0x1160('0xe')](_0x1160('0xf'),_0x46b1e8,_0x3e813c);_0x526f5c(_0x3e813c);});});}exports[_0x1160('0x13')]=function(_0x4020c2){var _0x2b6109=this;return new Promise(function(_0x563bc9,_0x5c173e){return db[_0x1160('0x14')]['findAll']({'raw':_0x4020c2['options']?_0x4020c2[_0x1160('0x15')][_0x1160('0x16')]===undefined?!![]:![]:!![],'where':_0x4020c2[_0x1160('0x15')]?_0x4020c2[_0x1160('0x15')]['where']||null:null,'attributes':_0x4020c2[_0x1160('0x15')]?_0x4020c2['options'][_0x1160('0x17')]||null:null,'limit':_0x4020c2[_0x1160('0x15')]?_0x4020c2[_0x1160('0x15')][_0x1160('0x18')]||null:null,'include':_0x4020c2[_0x1160('0x15')]?_0x4020c2[_0x1160('0x15')]['include']?_[_0x1160('0x19')](_0x4020c2['options'][_0x1160('0x1a')],function(_0x2dae72){return{'model':db[_0x2dae72[_0x1160('0x1b')]],'as':_0x2dae72['as'],'attributes':_0x2dae72[_0x1160('0x17')],'include':_0x2dae72[_0x1160('0x1a')]?_[_0x1160('0x19')](_0x2dae72[_0x1160('0x1a')],function(_0x2cbdee){return{'model':db[_0x2cbdee[_0x1160('0x1b')]],'as':_0x2cbdee['as'],'attributes':_0x2cbdee['attributes'],'include':_0x2cbdee['include']?_[_0x1160('0x19')](_0x2cbdee[_0x1160('0x1a')],function(_0xce30a4){return{'model':db[_0xce30a4[_0x1160('0x1b')]],'as':_0xce30a4['as'],'attributes':_0xce30a4['attributes']};}):[]};}):[]};}):[]:[]})[_0x1160('0x8')](function(_0x204814){logger['info'](_0x1160('0x13'),_0x4020c2);logger[_0x1160('0xb')](_0x1160('0x13'),_0x4020c2,JSON[_0x1160('0xd')](_0x204814));_0x563bc9(_0x204814);})[_0x1160('0x12')](function(_0x54be5c){logger[_0x1160('0xe')](_0x1160('0x13'),_0x54be5c[_0x1160('0x10')],_0x4020c2);_0x5c173e(_0x2b6109[_0x1160('0xe')](0x1f4,_0x54be5c['message']));});});};
\ No newline at end of file
index 4b99344..bf7fb83 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9957=['multer','util','path','connect-timeout','Router','fs-extra','../../components/auth/service','../../components/interaction/service','./mailServerOut.controller','get','isAuthenticated','index','/:id','show','post','create','put','update','delete','destroy','exports'];(function(_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
+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(_0x5b561d,_0x422b7c){var _0x431060=function(_0x401409){while(--_0x401409){_0x5b561d['push'](_0x5b561d['shift']());}};_0x431060(++_0x422b7c);}(_0x7a54,0x106));var _0x47a5=function(_0x4259fe,_0x3047a){_0x4259fe=_0x4259fe-0x0;var _0x2dcd0e=_0x7a54[_0x4259fe];return _0x2dcd0e;};'use strict';var multer=require(_0x47a5('0x0'));var util=require(_0x47a5('0x1'));var path=require(_0x47a5('0x2'));var timeout=require('connect-timeout');var express=require(_0x47a5('0x3'));var router=express[_0x47a5('0x4')]();var fs_extra=require('fs-extra');var auth=require(_0x47a5('0x5'));var interaction=require(_0x47a5('0x6'));var config=require(_0x47a5('0x7'));var controller=require(_0x47a5('0x8'));router[_0x47a5('0x9')]('/',auth['isAuthenticated'](),controller[_0x47a5('0xa')]);router['get'](_0x47a5('0xb'),auth[_0x47a5('0xc')](),controller['show']);router[_0x47a5('0xd')]('/',auth['isAuthenticated'](),controller['create']);router['put'](_0x47a5('0xb'),auth[_0x47a5('0xc')](),controller['update']);router[_0x47a5('0xe')]('/:id',auth['isAuthenticated'](),controller[_0x47a5('0xf')]);module[_0x47a5('0x10')]=router;
\ No newline at end of file
index 370b656..707deeb 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0xa902=['BOOLEAN','sequelize','exports','STRING','INTEGER'];(function(_0x47bc2c,_0x39405f){var _0x4e56e6=function(_0x15f735){while(--_0x15f735){_0x47bc2c['push'](_0x47bc2c['shift']());}};_0x4e56e6(++_0x39405f);}(_0xa902,0x8d));var _0x2a90=function(_0x2cae55,_0x5b8d21){_0x2cae55=_0x2cae55-0x0;var _0x5cb732=_0xa902[_0x2cae55];return _0x5cb732;};'use strict';var Sequelize=require(_0x2a90('0x0'));module[_0x2a90('0x1')]={'description':{'type':Sequelize[_0x2a90('0x2')]},'host':{'type':Sequelize[_0x2a90('0x2')]},'user':{'type':Sequelize[_0x2a90('0x2')]},'pass':{'type':Sequelize['STRING']},'port':{'type':Sequelize[_0x2a90('0x3')]},'secure':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'service':{'type':Sequelize['STRING']},'authentication':{'type':Sequelize[_0x2a90('0x4')],'defaultValue':!![]},'modernAuthentication':{'type':Sequelize[_0x2a90('0x4')],'defaultValue':![]}};
\ No newline at end of file
index 8e3b9ab..8fac21c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0xe95d=['rows','catch','params','keys','find','create','body','eml-format','zip-dir','moment','bluebird','mustache','path','sox','fs-extra','squel','crypto','desk.js','querystring','papaparse','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','status','undefined','limit','count','offset','set','json','apply','reject','save','update','destroy','then','sendStatus','error','stack','name','index','MailServerOut','rawAttributes','fieldName','type','key','model','map','query','filters','intersection','fields','attributes','length','nolimit','order','sort','pick','filter','where','VIRTUAL','options','includeAll','include','findAll'];(function(_0x5d7cb1,_0x316f4c){var _0x2dd1da=function(_0xa8e67c){while(--_0xa8e67c){_0x5d7cb1['push'](_0x5d7cb1['shift']());}};_0x2dd1da(++_0x316f4c);}(_0xe95d,0x16f));var _0xde95=function(_0x130705,_0x2d266b){_0x130705=_0x130705-0x0;var _0x1fa991=_0xe95d[_0x130705];return _0x1fa991;};'use strict';var emlformat=require(_0xde95('0x0'));var rimraf=require('rimraf');var zipdir=require(_0xde95('0x1'));var jsonpatch=require('fast-json-patch');var rp=require('request-promise');var moment=require(_0xde95('0x2'));var BPromise=require(_0xde95('0x3'));var Mustache=require(_0xde95('0x4'));var util=require('util');var path=require(_0xde95('0x5'));var sox=require(_0xde95('0x6'));var csv=require('to-csv');var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0xde95('0x7'));var _=require('lodash');var squel=require(_0xde95('0x8'));var crypto=require(_0xde95('0x9'));var jsforce=require('jsforce');var deskjs=require(_0xde95('0xa'));var toCsv=require('to-csv');var querystring=require(_0xde95('0xb'));var Papa=require(_0xde95('0xc'));var Redis=require(_0xde95('0xd'));var authService=require('../../components/auth/service');var qs=require(_0xde95('0xe'));var as=require(_0xde95('0xf'));var hardwareService=require(_0xde95('0x10'));var logger=require(_0xde95('0x11'))(_0xde95('0x12'));var utils=require(_0xde95('0x13'));var config=require(_0xde95('0x14'));var licenseUtil=require(_0xde95('0x15'));var db=require(_0xde95('0x16'))['db'];function respondWithStatusCode(_0x266571,_0x1388a8){_0x1388a8=_0x1388a8||0xcc;return function(_0x27cd83){if(_0x27cd83){return _0x266571['sendStatus'](_0x1388a8);}return _0x266571[_0xde95('0x17')](_0x1388a8)['end']();};}function respondWithResult(_0x45176a,_0x5a3e83){_0x5a3e83=_0x5a3e83||0xc8;return function(_0x9e59c5){if(_0x9e59c5){return _0x45176a[_0xde95('0x17')](_0x5a3e83)['json'](_0x9e59c5);}};}function respondWithFilteredResult(_0x4e66b9,_0x52716b){return function(_0x1f5024){if(_0x1f5024){var _0x2684c4=typeof _0x52716b['offset']===_0xde95('0x18')&&typeof _0x52716b[_0xde95('0x19')]===_0xde95('0x18');var _0x291cd8=_0x1f5024[_0xde95('0x1a')];var _0x2cc145=_0x2684c4?0x0:_0x52716b[_0xde95('0x1b')];var _0x4fb4ba=_0x2684c4?_0x1f5024[_0xde95('0x1a')]:_0x52716b[_0xde95('0x1b')]+_0x52716b[_0xde95('0x19')];var _0x59fbfb;if(_0x4fb4ba>=_0x291cd8){_0x4fb4ba=_0x291cd8;_0x59fbfb=0xc8;}else{_0x59fbfb=0xce;}_0x4e66b9[_0xde95('0x17')](_0x59fbfb);return _0x4e66b9[_0xde95('0x1c')]('Content-Range',_0x2cc145+'-'+_0x4fb4ba+'/'+_0x291cd8)[_0xde95('0x1d')](_0x1f5024);}return null;};}function patchUpdates(_0x501263){return function(_0x4ee354){try{jsonpatch[_0xde95('0x1e')](_0x4ee354,_0x501263,!![]);}catch(_0x3b17d1){return BPromise[_0xde95('0x1f')](_0x3b17d1);}return _0x4ee354[_0xde95('0x20')]();};}function saveUpdates(_0xc486ae,_0x2c2868){return function(_0x4ae9f3){if(_0x4ae9f3){return _0x4ae9f3[_0xde95('0x21')](_0xc486ae)['then'](function(_0x4b414f){return _0x4b414f;});}return null;};}function removeEntity(_0x3f764c,_0x15766a){return function(_0x4bad3b){if(_0x4bad3b){return _0x4bad3b[_0xde95('0x22')]()[_0xde95('0x23')](function(){_0x3f764c['status'](0xcc)['end']();});}};}function handleEntityNotFound(_0x40fbcf,_0x1e1198){return function(_0x1137a6){if(!_0x1137a6){_0x40fbcf[_0xde95('0x24')](0x194);}return _0x1137a6;};}function handleError(_0x26e120,_0x5ee811){_0x5ee811=_0x5ee811||0x1f4;return function(_0x21a8d1){logger[_0xde95('0x25')](_0x21a8d1[_0xde95('0x26')]);if(_0x21a8d1[_0xde95('0x27')]){delete _0x21a8d1[_0xde95('0x27')];}_0x26e120[_0xde95('0x17')](_0x5ee811)['send'](_0x21a8d1);};}exports[_0xde95('0x28')]=function(_0x330707,_0x4a4eae){var _0x398b3e={},_0x44c17d={},_0x25e282={'count':0x0,'rows':[]};var _0x1a44b5=_['map'](db[_0xde95('0x29')][_0xde95('0x2a')],function(_0x3b9d8a){return{'name':_0x3b9d8a[_0xde95('0x2b')],'type':_0x3b9d8a[_0xde95('0x2c')][_0xde95('0x2d')]};});_0x44c17d[_0xde95('0x2e')]=_[_0xde95('0x2f')](_0x1a44b5,_0xde95('0x27'));_0x44c17d[_0xde95('0x30')]=_['keys'](_0x330707[_0xde95('0x30')]);_0x44c17d[_0xde95('0x31')]=_[_0xde95('0x32')](_0x44c17d['model'],_0x44c17d[_0xde95('0x30')]);_0x398b3e['attributes']=_['intersection'](_0x44c17d[_0xde95('0x2e')],qs[_0xde95('0x33')](_0x330707[_0xde95('0x30')]['fields']));_0x398b3e[_0xde95('0x34')]=_0x398b3e[_0xde95('0x34')][_0xde95('0x35')]?_0x398b3e['attributes']:_0x44c17d['model'];if(!_0x330707['query']['hasOwnProperty'](_0xde95('0x36'))){_0x398b3e['limit']=qs[_0xde95('0x19')](_0x330707[_0xde95('0x30')][_0xde95('0x19')]);_0x398b3e['offset']=qs['offset'](_0x330707['query'][_0xde95('0x1b')]);}_0x398b3e[_0xde95('0x37')]=qs[_0xde95('0x38')](_0x330707[_0xde95('0x30')][_0xde95('0x38')]);_0x398b3e['where']=qs['filters'](_[_0xde95('0x39')](_0x330707['query'],_0x44c17d[_0xde95('0x31')]),_0x1a44b5);if(_0x330707[_0xde95('0x30')][_0xde95('0x3a')]){_0x398b3e['where']=_['merge'](_0x398b3e[_0xde95('0x3b')],{'$or':_[_0xde95('0x2f')](_0x1a44b5,function(_0x264843){if(_0x264843['type']!==_0xde95('0x3c')){var _0x458329={};_0x458329[_0x264843[_0xde95('0x27')]]={'$like':'%'+_0x330707[_0xde95('0x30')][_0xde95('0x3a')]+'%'};return _0x458329;}})});}_0x398b3e=_['merge']({},_0x398b3e,_0x330707[_0xde95('0x3d')]);var _0x4dc55b={'where':_0x398b3e[_0xde95('0x3b')]};return db[_0xde95('0x29')][_0xde95('0x1a')](_0x4dc55b)[_0xde95('0x23')](function(_0x43fb9c){_0x25e282[_0xde95('0x1a')]=_0x43fb9c;if(_0x330707[_0xde95('0x30')][_0xde95('0x3e')]){_0x398b3e[_0xde95('0x3f')]=[{'all':!![]}];}return db[_0xde95('0x29')][_0xde95('0x40')](_0x398b3e);})[_0xde95('0x23')](function(_0x39a786){_0x25e282[_0xde95('0x41')]=_0x39a786;return _0x25e282;})[_0xde95('0x23')](respondWithFilteredResult(_0x4a4eae,_0x398b3e))[_0xde95('0x42')](handleError(_0x4a4eae,null));};exports['show']=function(_0x3b62c3,_0x5e5cb9){var _0x3e74b6={'raw':!![],'where':{'id':_0x3b62c3[_0xde95('0x43')]['id']}},_0x4e8d4c={};_0x4e8d4c[_0xde95('0x2e')]=_[_0xde95('0x44')](db[_0xde95('0x29')][_0xde95('0x2a')]);_0x4e8d4c[_0xde95('0x30')]=_['keys'](_0x3b62c3[_0xde95('0x30')]);_0x4e8d4c['filters']=_[_0xde95('0x32')](_0x4e8d4c[_0xde95('0x2e')],_0x4e8d4c[_0xde95('0x30')]);_0x3e74b6[_0xde95('0x34')]=_[_0xde95('0x32')](_0x4e8d4c['model'],qs[_0xde95('0x33')](_0x3b62c3[_0xde95('0x30')]['fields']));_0x3e74b6[_0xde95('0x34')]=_0x3e74b6[_0xde95('0x34')][_0xde95('0x35')]?_0x3e74b6[_0xde95('0x34')]:_0x4e8d4c['model'];if(_0x3b62c3[_0xde95('0x30')][_0xde95('0x3e')]){_0x3e74b6[_0xde95('0x3f')]=[{'all':!![]}];}_0x3e74b6=_['merge']({},_0x3e74b6,_0x3b62c3['options']);return db[_0xde95('0x29')][_0xde95('0x45')](_0x3e74b6)[_0xde95('0x23')](handleEntityNotFound(_0x5e5cb9,null))[_0xde95('0x23')](respondWithResult(_0x5e5cb9,null))[_0xde95('0x42')](handleError(_0x5e5cb9,null));};exports[_0xde95('0x46')]=function(_0x5b8af7,_0x39bc29){return db['MailServerOut'][_0xde95('0x46')](_0x5b8af7[_0xde95('0x47')],{})['then'](respondWithResult(_0x39bc29,0xc9))['catch'](handleError(_0x39bc29,null));};exports[_0xde95('0x21')]=function(_0x3e21f6,_0x56ddf5){if(_0x3e21f6[_0xde95('0x47')]['id']){delete _0x3e21f6[_0xde95('0x47')]['id'];}return db[_0xde95('0x29')][_0xde95('0x45')]({'where':{'id':_0x3e21f6['params']['id']}})[_0xde95('0x23')](handleEntityNotFound(_0x56ddf5,null))[_0xde95('0x23')](saveUpdates(_0x3e21f6[_0xde95('0x47')],null))[_0xde95('0x23')](respondWithResult(_0x56ddf5,null))[_0xde95('0x42')](handleError(_0x56ddf5,null));};exports[_0xde95('0x22')]=function(_0x12ae78,_0x4ae67e){return db[_0xde95('0x29')]['find']({'where':{'id':_0x12ae78[_0xde95('0x43')]['id']}})[_0xde95('0x23')](handleEntityNotFound(_0x4ae67e,null))[_0xde95('0x23')](removeEntity(_0x4ae67e,null))[_0xde95('0x42')](handleError(_0x4ae67e,null));};
\ No newline at end of file
index 1ce142d..a4209eb 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0x70c3=['request-promise','rimraf','../../config/environment','define','MailServerOut','mail_servers_out','lodash','api','moment'];(function(_0x410215,_0x27cc99){var _0x37fade=function(_0x46edfc){while(--_0x46edfc){_0x410215['push'](_0x410215['shift']());}};_0x37fade(++_0x27cc99);}(_0x70c3,0x153));var _0x370c=function(_0x5dc883,_0x1b722a){_0x5dc883=_0x5dc883-0x0;var _0x4462ab=_0x70c3[_0x5dc883];return _0x4462ab;};'use strict';var _=require(_0x370c('0x0'));var util=require('util');var logger=require('../../config/logger')(_0x370c('0x1'));var moment=require(_0x370c('0x2'));var BPromise=require('bluebird');var rp=require(_0x370c('0x3'));var fs=require('fs');var path=require('path');var rimraf=require(_0x370c('0x4'));var config=require(_0x370c('0x5'));var attributes=require('./mailServerOut.attributes');module['exports']=function(_0x4b28af,_0x4b9ac0){return _0x4b28af[_0x370c('0x6')](_0x370c('0x7'),attributes,{'tableName':_0x370c('0x8'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 0374287..4186bcf 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xdb28=['moment','bluebird','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','jayson/promise','client','request','then','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
+var _0xadb5=['error','code','message','result','catch','util','bluebird','randomstring','ioredis','../../config/utils','../../config/logger','rpc','jayson/promise','client','http','request','then','info','MailServerOut,\x20%s,\x20%s','request\x20sent','stringify'];(function(_0x21820d,_0x2725c9){var _0x309f81=function(_0xc7ccf0){while(--_0xc7ccf0){_0x21820d['push'](_0x21820d['shift']());}};_0x309f81(++_0x2725c9);}(_0xadb5,0xad));var _0x5adb=function(_0x44ffdb,_0x40db90){_0x44ffdb=_0x44ffdb-0x0;var _0x5e327b=_0xadb5[_0x44ffdb];return _0x5e327b;};'use strict';var _=require('lodash');var util=require(_0x5adb('0x0'));var moment=require('moment');var BPromise=require(_0x5adb('0x1'));var rs=require(_0x5adb('0x2'));var fs=require('fs');var Redis=require(_0x5adb('0x3'));var db=require('../../mysqldb')['db'];var utils=require(_0x5adb('0x4'));var logger=require(_0x5adb('0x5'))(_0x5adb('0x6'));var config=require('../../config/environment');var jayson=require(_0x5adb('0x7'));var client=jayson[_0x5adb('0x8')][_0x5adb('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x3213e8,_0xdf3776,_0x353885){return new BPromise(function(_0x47228a,_0x6d1b45){return client[_0x5adb('0xa')](_0x3213e8,_0x353885)[_0x5adb('0xb')](function(_0x34f59d){logger[_0x5adb('0xc')](_0x5adb('0xd'),_0xdf3776,_0x5adb('0xe'));logger['debug']('MailServerOut,\x20%s,\x20%s,\x20%s',_0xdf3776,_0x5adb('0xe'),JSON[_0x5adb('0xf')](_0x34f59d));if(_0x34f59d[_0x5adb('0x10')]){if(_0x34f59d['error'][_0x5adb('0x11')]===0x1f4){logger['error'](_0x5adb('0xd'),_0xdf3776,_0x34f59d['error'][_0x5adb('0x12')]);return _0x6d1b45(_0x34f59d[_0x5adb('0x10')][_0x5adb('0x12')]);}logger['error'](_0x5adb('0xd'),_0xdf3776,_0x34f59d[_0x5adb('0x10')][_0x5adb('0x12')]);return _0x47228a(_0x34f59d['error'][_0x5adb('0x12')]);}else{logger['info'](_0x5adb('0xd'),_0xdf3776,_0x5adb('0xe'));_0x47228a(_0x34f59d[_0x5adb('0x13')][_0x5adb('0x12')]);}})[_0x5adb('0x14')](function(_0x39d24d){logger[_0x5adb('0x10')](_0x5adb('0xd'),_0xdf3776,_0x39d24d);_0x6d1b45(_0x39d24d);});});}
\ No newline at end of file
index 8e10597..a19bc45 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0x3082=['path','connect-timeout','express','fs-extra','../../components/interaction/service','../../config/environment','./mailSubstatus.controller','get','isAuthenticated','index','/describe','describe','/:id','show','create','put','update','delete','destroy','exports','multer','util'];(function(_0x48b5e0,_0xb3826){var _0x4287ea=function(_0x14519e){while(--_0x14519e){_0x48b5e0['push'](_0x48b5e0['shift']());}};_0x4287ea(++_0xb3826);}(_0x3082,0x82));var _0x2308=function(_0x4d578b,_0x44e286){_0x4d578b=_0x4d578b-0x0;var _0x268eec=_0x3082[_0x4d578b];return _0x268eec;};'use strict';var multer=require(_0x2308('0x0'));var util=require(_0x2308('0x1'));var path=require(_0x2308('0x2'));var timeout=require(_0x2308('0x3'));var express=require(_0x2308('0x4'));var router=express['Router']();var fs_extra=require(_0x2308('0x5'));var auth=require('../../components/auth/service');var interaction=require(_0x2308('0x6'));var config=require(_0x2308('0x7'));var controller=require(_0x2308('0x8'));router[_0x2308('0x9')]('/',auth[_0x2308('0xa')](),controller[_0x2308('0xb')]);router['get'](_0x2308('0xc'),auth[_0x2308('0xa')](),controller[_0x2308('0xd')]);router['get'](_0x2308('0xe'),auth[_0x2308('0xa')](),controller[_0x2308('0xf')]);router['post']('/',auth['isAuthenticated'](),controller[_0x2308('0x10')]);router[_0x2308('0x11')](_0x2308('0xe'),auth[_0x2308('0xa')](),controller[_0x2308('0x12')]);router[_0x2308('0x13')](_0x2308('0xe'),auth['isAuthenticated'](),controller[_0x2308('0x14')]);module[_0x2308('0x15')]=router;
\ No newline at end of file
index 8f14017..fbca617 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0x11e5=['name','sequelize','STRING'];(function(_0x580576,_0x2f107d){var _0x3f55a0=function(_0x2e180b){while(--_0x2e180b){_0x580576['push'](_0x580576['shift']());}};_0x3f55a0(++_0x2f107d);}(_0x11e5,0x8b));var _0x511e=function(_0x57b443,_0x5145b4){_0x57b443=_0x57b443-0x0;var _0x1a763d=_0x11e5[_0x57b443];return _0x1a763d;};'use strict';var Sequelize=require(_0x511e('0x0'));module['exports']={'name':{'type':Sequelize[_0x511e('0x1')],'unique':_0x511e('0x2'),'allowNull':![],'validate':{'notEmpty':!![]}},'description':{'type':Sequelize['STRING']}};
\ No newline at end of file
index f5c26ff..061c31a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0x6d41=['status','end','json','offset','undefined','limit','count','set','apply','reject','save','update','then','destroy','name','send','index','map','rawAttributes','fieldName','type','key','model','keys','query','filters','intersection','fields','attributes','length','hasOwnProperty','order','sort','where','filter','merge','options','MailSubstatus','includeAll','include','findAll','rows','show','create','body','find','params','catch','describe','eml-format','rimraf','fast-json-patch','request-promise','bluebird','mustache','util','path','sox','ejs','fs-extra','lodash','squel','crypto','desk.js','querystring','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','../../config/logger','api','../../config/utils','../../mysqldb','sendStatus'];(function(_0x89bddd,_0x5c50e8){var _0x3a10e6=function(_0x2c887f){while(--_0x2c887f){_0x89bddd['push'](_0x89bddd['shift']());}};_0x3a10e6(++_0x5c50e8);}(_0x6d41,0x7b));var _0x16d4=function(_0x22f906,_0x2c979b){_0x22f906=_0x22f906-0x0;var _0x195f4c=_0x6d41[_0x22f906];return _0x195f4c;};'use strict';var emlformat=require(_0x16d4('0x0'));var rimraf=require(_0x16d4('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0x16d4('0x2'));var rp=require(_0x16d4('0x3'));var moment=require('moment');var BPromise=require(_0x16d4('0x4'));var Mustache=require(_0x16d4('0x5'));var util=require(_0x16d4('0x6'));var path=require(_0x16d4('0x7'));var sox=require(_0x16d4('0x8'));var csv=require('to-csv');var ejs=require(_0x16d4('0x9'));var fs=require('fs');var fs_extra=require(_0x16d4('0xa'));var _=require(_0x16d4('0xb'));var squel=require(_0x16d4('0xc'));var crypto=require(_0x16d4('0xd'));var jsforce=require('jsforce');var deskjs=require(_0x16d4('0xe'));var toCsv=require('to-csv');var querystring=require(_0x16d4('0xf'));var Papa=require('papaparse');var Redis=require(_0x16d4('0x10'));var authService=require(_0x16d4('0x11'));var qs=require(_0x16d4('0x12'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x16d4('0x13'));var logger=require(_0x16d4('0x14'))(_0x16d4('0x15'));var utils=require(_0x16d4('0x16'));var config=require('../../config/environment');var licenseUtil=require('../../config/license/util');var db=require(_0x16d4('0x17'))['db'];function respondWithStatusCode(_0x27a3c0,_0x3a82a7){_0x3a82a7=_0x3a82a7||0xcc;return function(_0xf94fe){if(_0xf94fe){return _0x27a3c0[_0x16d4('0x18')](_0x3a82a7);}return _0x27a3c0[_0x16d4('0x19')](_0x3a82a7)[_0x16d4('0x1a')]();};}function respondWithResult(_0x29d9a6,_0xbba24a){_0xbba24a=_0xbba24a||0xc8;return function(_0x472de1){if(_0x472de1){return _0x29d9a6[_0x16d4('0x19')](_0xbba24a)[_0x16d4('0x1b')](_0x472de1);}};}function respondWithFilteredResult(_0x2d8abc,_0x583ebc){return function(_0x95848a){if(_0x95848a){var _0x986067=typeof _0x583ebc[_0x16d4('0x1c')]===_0x16d4('0x1d')&&typeof _0x583ebc[_0x16d4('0x1e')]===_0x16d4('0x1d');var _0x5d8e19=_0x95848a[_0x16d4('0x1f')];var _0x44c0c1=_0x986067?0x0:_0x583ebc[_0x16d4('0x1c')];var _0x19fca=_0x986067?_0x95848a[_0x16d4('0x1f')]:_0x583ebc[_0x16d4('0x1c')]+_0x583ebc[_0x16d4('0x1e')];var _0x4f6c74;if(_0x19fca>=_0x5d8e19){_0x19fca=_0x5d8e19;_0x4f6c74=0xc8;}else{_0x4f6c74=0xce;}_0x2d8abc[_0x16d4('0x19')](_0x4f6c74);return _0x2d8abc[_0x16d4('0x20')]('Content-Range',_0x44c0c1+'-'+_0x19fca+'/'+_0x5d8e19)[_0x16d4('0x1b')](_0x95848a);}return null;};}function patchUpdates(_0x39b392){return function(_0x4e2156){try{jsonpatch[_0x16d4('0x21')](_0x4e2156,_0x39b392,!![]);}catch(_0x51a1e6){return BPromise[_0x16d4('0x22')](_0x51a1e6);}return _0x4e2156[_0x16d4('0x23')]();};}function saveUpdates(_0x4228cd,_0x561843){return function(_0x1c02ac){if(_0x1c02ac){return _0x1c02ac[_0x16d4('0x24')](_0x4228cd)[_0x16d4('0x25')](function(_0x33adfd){return _0x33adfd;});}return null;};}function removeEntity(_0x1a3ed6,_0x4e4bb9){return function(_0x39b670){if(_0x39b670){return _0x39b670[_0x16d4('0x26')]()[_0x16d4('0x25')](function(){_0x1a3ed6[_0x16d4('0x19')](0xcc)[_0x16d4('0x1a')]();});}};}function handleEntityNotFound(_0x15ea51,_0x28bd43){return function(_0x3ed007){if(!_0x3ed007){_0x15ea51[_0x16d4('0x18')](0x194);}return _0x3ed007;};}function handleError(_0x4a6395,_0x58f41a){_0x58f41a=_0x58f41a||0x1f4;return function(_0x484c23){logger['error'](_0x484c23['stack']);if(_0x484c23[_0x16d4('0x27')]){delete _0x484c23[_0x16d4('0x27')];}_0x4a6395[_0x16d4('0x19')](_0x58f41a)[_0x16d4('0x28')](_0x484c23);};}exports[_0x16d4('0x29')]=function(_0x4e4d5b,_0x1f13eb){var _0x404bde={},_0x1ed4ce={},_0x1d0a83={'count':0x0,'rows':[]};var _0x2d1f18=_[_0x16d4('0x2a')](db['MailSubstatus'][_0x16d4('0x2b')],function(_0x4035ae){return{'name':_0x4035ae[_0x16d4('0x2c')],'type':_0x4035ae[_0x16d4('0x2d')][_0x16d4('0x2e')]};});_0x1ed4ce[_0x16d4('0x2f')]=_['map'](_0x2d1f18,'name');_0x1ed4ce['query']=_[_0x16d4('0x30')](_0x4e4d5b[_0x16d4('0x31')]);_0x1ed4ce[_0x16d4('0x32')]=_[_0x16d4('0x33')](_0x1ed4ce[_0x16d4('0x2f')],_0x1ed4ce[_0x16d4('0x31')]);_0x404bde['attributes']=_['intersection'](_0x1ed4ce['model'],qs[_0x16d4('0x34')](_0x4e4d5b[_0x16d4('0x31')]['fields']));_0x404bde[_0x16d4('0x35')]=_0x404bde[_0x16d4('0x35')][_0x16d4('0x36')]?_0x404bde[_0x16d4('0x35')]:_0x1ed4ce[_0x16d4('0x2f')];if(!_0x4e4d5b['query'][_0x16d4('0x37')]('nolimit')){_0x404bde['limit']=qs[_0x16d4('0x1e')](_0x4e4d5b[_0x16d4('0x31')][_0x16d4('0x1e')]);_0x404bde[_0x16d4('0x1c')]=qs[_0x16d4('0x1c')](_0x4e4d5b[_0x16d4('0x31')][_0x16d4('0x1c')]);}_0x404bde[_0x16d4('0x38')]=qs['sort'](_0x4e4d5b['query'][_0x16d4('0x39')]);_0x404bde[_0x16d4('0x3a')]=qs[_0x16d4('0x32')](_['pick'](_0x4e4d5b['query'],_0x1ed4ce[_0x16d4('0x32')]),_0x2d1f18);if(_0x4e4d5b[_0x16d4('0x31')][_0x16d4('0x3b')]){_0x404bde['where']=_[_0x16d4('0x3c')](_0x404bde[_0x16d4('0x3a')],{'$or':_[_0x16d4('0x2a')](_0x2d1f18,function(_0x426e0d){if(_0x426e0d[_0x16d4('0x2d')]!=='VIRTUAL'){var _0x4c6bbe={};_0x4c6bbe[_0x426e0d[_0x16d4('0x27')]]={'$like':'%'+_0x4e4d5b[_0x16d4('0x31')][_0x16d4('0x3b')]+'%'};return _0x4c6bbe;}})});}_0x404bde=_['merge']({},_0x404bde,_0x4e4d5b[_0x16d4('0x3d')]);var _0x287e28={'where':_0x404bde[_0x16d4('0x3a')]};return db[_0x16d4('0x3e')][_0x16d4('0x1f')](_0x287e28)[_0x16d4('0x25')](function(_0x2aa97d){_0x1d0a83['count']=_0x2aa97d;if(_0x4e4d5b[_0x16d4('0x31')][_0x16d4('0x3f')]){_0x404bde[_0x16d4('0x40')]=[{'all':!![]}];}return db[_0x16d4('0x3e')][_0x16d4('0x41')](_0x404bde);})['then'](function(_0x1835b8){_0x1d0a83[_0x16d4('0x42')]=_0x1835b8;return _0x1d0a83;})['then'](respondWithFilteredResult(_0x1f13eb,_0x404bde))['catch'](handleError(_0x1f13eb,null));};exports[_0x16d4('0x43')]=function(_0xfb89f8,_0x18ce2b){var _0x44aa36={'raw':!![],'where':{'id':_0xfb89f8['params']['id']}},_0x51c99b={};_0x51c99b[_0x16d4('0x2f')]=_[_0x16d4('0x30')](db['MailSubstatus'][_0x16d4('0x2b')]);_0x51c99b[_0x16d4('0x31')]=_['keys'](_0xfb89f8[_0x16d4('0x31')]);_0x51c99b[_0x16d4('0x32')]=_[_0x16d4('0x33')](_0x51c99b[_0x16d4('0x2f')],_0x51c99b[_0x16d4('0x31')]);_0x44aa36[_0x16d4('0x35')]=_[_0x16d4('0x33')](_0x51c99b[_0x16d4('0x2f')],qs[_0x16d4('0x34')](_0xfb89f8[_0x16d4('0x31')][_0x16d4('0x34')]));_0x44aa36[_0x16d4('0x35')]=_0x44aa36['attributes'][_0x16d4('0x36')]?_0x44aa36['attributes']:_0x51c99b['model'];if(_0xfb89f8[_0x16d4('0x31')]['includeAll']){_0x44aa36[_0x16d4('0x40')]=[{'all':!![]}];}_0x44aa36=_[_0x16d4('0x3c')]({},_0x44aa36,_0xfb89f8[_0x16d4('0x3d')]);return db[_0x16d4('0x3e')]['find'](_0x44aa36)[_0x16d4('0x25')](handleEntityNotFound(_0x18ce2b,null))[_0x16d4('0x25')](respondWithResult(_0x18ce2b,null))['catch'](handleError(_0x18ce2b,null));};exports['create']=function(_0x101e2b,_0x5ee6f6){return db[_0x16d4('0x3e')][_0x16d4('0x44')](_0x101e2b[_0x16d4('0x45')],{})[_0x16d4('0x25')](respondWithResult(_0x5ee6f6,0xc9))['catch'](handleError(_0x5ee6f6,null));};exports[_0x16d4('0x24')]=function(_0x515f7d,_0x261d1d){if(_0x515f7d[_0x16d4('0x45')]['id']){delete _0x515f7d[_0x16d4('0x45')]['id'];}return db[_0x16d4('0x3e')][_0x16d4('0x46')]({'where':{'id':_0x515f7d[_0x16d4('0x47')]['id']}})[_0x16d4('0x25')](handleEntityNotFound(_0x261d1d,null))[_0x16d4('0x25')](saveUpdates(_0x515f7d[_0x16d4('0x45')],null))[_0x16d4('0x25')](respondWithResult(_0x261d1d,null))[_0x16d4('0x48')](handleError(_0x261d1d,null));};exports[_0x16d4('0x26')]=function(_0x4ac9b3,_0x30b861){return db['MailSubstatus'][_0x16d4('0x46')]({'where':{'id':_0x4ac9b3[_0x16d4('0x47')]['id']}})[_0x16d4('0x25')](handleEntityNotFound(_0x30b861,null))[_0x16d4('0x25')](removeEntity(_0x30b861,null))[_0x16d4('0x48')](handleError(_0x30b861,null));};exports[_0x16d4('0x49')]=function(_0x21d26f,_0x29b601){return db[_0x16d4('0x3e')][_0x16d4('0x49')]()[_0x16d4('0x25')](respondWithResult(_0x29b601,null))[_0x16d4('0x48')](handleError(_0x29b601,null));};
\ No newline at end of file
index ff29678..a4c79d0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0xfd51=['hook','exports','../../mysqldb','MailSubstatus','setMaxListeners','update','emit','hasOwnProperty'];(function(_0xab58d5,_0x18c604){var _0x18d854=function(_0x2f7264){while(--_0x2f7264){_0xab58d5['push'](_0xab58d5['shift']());}};_0x18d854(++_0x18c604);}(_0xfd51,0x1ba));var _0x1fd5=function(_0x372e77,_0xc4fc31){_0x372e77=_0x372e77-0x0;var _0x3c204e=_0xfd51[_0x372e77];return _0x3c204e;};'use strict';var EventEmitter=require('events');var MailSubstatus=require(_0x1fd5('0x0'))['db'][_0x1fd5('0x1')];var MailSubstatusEvents=new EventEmitter();MailSubstatusEvents[_0x1fd5('0x2')](0x0);var events={'afterUpdate':_0x1fd5('0x3')};function emitEvent(_0x40c054){return function(_0x51a54d,_0x4445ca,_0x4ad7df){MailSubstatusEvents[_0x1fd5('0x4')](_0x40c054+':'+_0x51a54d['id'],_0x51a54d);MailSubstatusEvents[_0x1fd5('0x4')](_0x40c054,_0x51a54d);_0x4ad7df(null);};}for(var e in events){if(events[_0x1fd5('0x5')](e)){var event=events[e];MailSubstatus[_0x1fd5('0x6')](e,emitEvent(event));}}module[_0x1fd5('0x7')]=MailSubstatusEvents;
\ No newline at end of file
index 345d3c4..3b02677 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0xed3e=['Condition','update','name','mailSubstatus','_previousDataValues','then','catch','./mailSubstatus.attributes','exports','define'];(function(_0x12f103,_0x4512dd){var _0x150fc1=function(_0x1b4e79){while(--_0x1b4e79){_0x12f103['push'](_0x12f103['shift']());}};_0x150fc1(++_0x4512dd);}(_0xed3e,0x101));var _0xeed3=function(_0x5413f1,_0x2f6ff5){_0x5413f1=_0x5413f1-0x0;var _0x4d3f74=_0xed3e[_0x5413f1];return _0x4d3f74;};'use strict';var attributes=require(_0xeed3('0x0'));module[_0xeed3('0x1')]=function(_0x478ad0){var _0x546e91=_0x478ad0['models'];return _0x478ad0[_0xeed3('0x2')]('MailSubstatus',attributes,{'tableName':'mail_substatuses','paranoid':![],'indexes':[],'timestamps':!![],'hooks':{'afterUpdate':function(_0x1ca4d3,_0x25564c,_0x254f35){return _0x546e91[_0xeed3('0x3')][_0xeed3('0x4')]({'value':_0x1ca4d3[_0xeed3('0x5')]},{'where':{'field':_0xeed3('0x6'),'value':_0x1ca4d3[_0xeed3('0x7')][_0xeed3('0x5')]}})[_0xeed3('0x8')](function(){_0x254f35();})[_0xeed3('0x9')](function(_0x168084){_0x254f35(_0x168084);});}}});};
\ No newline at end of file
index 91bb9be..9720f33 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0x38fa=['info','MailSubstatus,\x20%s,\x20%s','request\x20sent','MailSubstatus,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','lodash','util','moment','randomstring','ioredis','../../mysqldb','../../config/utils','rpc','http','request','then'];(function(_0x1b99df,_0x3dea4f){var _0x2a557e=function(_0x1b3818){while(--_0x1b3818){_0x1b99df['push'](_0x1b99df['shift']());}};_0x2a557e(++_0x3dea4f);}(_0x38fa,0x15a));var _0xa38f=function(_0x2e8d4d,_0x3999ed){_0x2e8d4d=_0x2e8d4d-0x0;var _0x359b2f=_0x38fa[_0x2e8d4d];return _0x359b2f;};'use strict';var _=require(_0xa38f('0x0'));var util=require(_0xa38f('0x1'));var moment=require(_0xa38f('0x2'));var BPromise=require('bluebird');var rs=require(_0xa38f('0x3'));var fs=require('fs');var Redis=require(_0xa38f('0x4'));var db=require(_0xa38f('0x5'))['db'];var utils=require(_0xa38f('0x6'));var logger=require('../../config/logger')(_0xa38f('0x7'));var config=require('../../config/environment');var jayson=require('jayson/promise');var client=jayson['client'][_0xa38f('0x8')]({'port':0x232a});function respondWithRpcPromise(_0x5d7aa0,_0x10afb9,_0x2e66bd){return new BPromise(function(_0x2c93ac,_0x23285c){return client[_0xa38f('0x9')](_0x5d7aa0,_0x2e66bd)[_0xa38f('0xa')](function(_0xdcc206){logger[_0xa38f('0xb')](_0xa38f('0xc'),_0x10afb9,_0xa38f('0xd'));logger['debug'](_0xa38f('0xe'),_0x10afb9,_0xa38f('0xd'),JSON[_0xa38f('0xf')](_0xdcc206));if(_0xdcc206[_0xa38f('0x10')]){if(_0xdcc206[_0xa38f('0x10')][_0xa38f('0x11')]===0x1f4){logger[_0xa38f('0x10')](_0xa38f('0xc'),_0x10afb9,_0xdcc206[_0xa38f('0x10')][_0xa38f('0x12')]);return _0x23285c(_0xdcc206[_0xa38f('0x10')]['message']);}logger[_0xa38f('0x10')](_0xa38f('0xc'),_0x10afb9,_0xdcc206['error']['message']);return _0x2c93ac(_0xdcc206[_0xa38f('0x10')][_0xa38f('0x12')]);}else{logger[_0xa38f('0xb')]('MailSubstatus,\x20%s,\x20%s',_0x10afb9,_0xa38f('0xd'));_0x2c93ac(_0xdcc206[_0xa38f('0x13')][_0xa38f('0x12')]);}})[_0xa38f('0x14')](function(_0x5d2d85){logger[_0xa38f('0x10')](_0xa38f('0xc'),_0x10afb9,_0x5d2d85);_0x23285c(_0x5d2d85);});});}
\ No newline at end of file
index 8e8b422..eb49d67 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0xde8a=['show','post','delete','exports','util','connect-timeout','express','Router','../../components/auth/service','../../components/interaction/service','./mailTransferReport.controller','get','/describe','isAuthenticated','describe','/:id'];(function(_0x5d31d6,_0x18a357){var _0x46a149=function(_0x59d513){while(--_0x59d513){_0x5d31d6['push'](_0x5d31d6['shift']());}};_0x46a149(++_0x18a357);}(_0xde8a,0xa4));var _0xade8=function(_0x31ed0a,_0x3c09f9){_0x31ed0a=_0x31ed0a-0x0;var _0x1f2f51=_0xde8a[_0x31ed0a];return _0x1f2f51;};'use strict';var multer=require('multer');var util=require(_0xade8('0x0'));var path=require('path');var timeout=require(_0xade8('0x1'));var express=require(_0xade8('0x2'));var router=express[_0xade8('0x3')]();var fs_extra=require('fs-extra');var auth=require(_0xade8('0x4'));var interaction=require(_0xade8('0x5'));var config=require('../../config/environment');var controller=require(_0xade8('0x6'));router[_0xade8('0x7')]('/',auth['isAuthenticated'](),controller['index']);router[_0xade8('0x7')](_0xade8('0x8'),auth[_0xade8('0x9')](),controller[_0xade8('0xa')]);router[_0xade8('0x7')](_0xade8('0xb'),auth[_0xade8('0x9')](),controller[_0xade8('0xc')]);router[_0xade8('0xd')]('/',auth['isAuthenticated'](),controller['create']);router['put'](_0xade8('0xb'),auth[_0xade8('0x9')](),controller['update']);router[_0xade8('0xe')]('/:id',auth['isAuthenticated'](),controller['destroy']);module[_0xade8('0xf')]=router;
\ No newline at end of file
index 60a9853..be78413 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0xedd9=['account','agent','queue','NOW','sequelize','exports','STRING','ENUM'];(function(_0x511809,_0x1a8458){var _0x4542ee=function(_0x19dcea){while(--_0x19dcea){_0x511809['push'](_0x511809['shift']());}};_0x4542ee(++_0x1a8458);}(_0xedd9,0xfc));var _0x9edd=function(_0x29e680,_0xadc0e6){_0x29e680=_0x29e680-0x0;var _0x5412ef=_0xedd9[_0x29e680];return _0x5412ef;};'use strict';var moment=require('moment');var Sequelize=require(_0x9edd('0x0'));module[_0x9edd('0x1')]={'uniqueid':{'type':Sequelize[_0x9edd('0x2')],'allowNull':![]},'type':{'type':Sequelize[_0x9edd('0x3')](_0x9edd('0x4'),_0x9edd('0x5'),_0x9edd('0x6')),'allowNull':![],'defaultValue':_0x9edd('0x6')},'transferredAt':{'type':Sequelize['DATE'],'allowNull':![],'defaultValue':Sequelize[_0x9edd('0x7')]}};
\ No newline at end of file
index dac0dc5..20be63a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0x8fd5=['bluebird','mustache','util','path','to-csv','ejs','lodash','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','api','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','json','undefined','limit','count','offset','set','save','update','destroy','error','stack','name','send','index','map','MailTransferReport','rawAttributes','fieldName','type','key','model','query','filters','intersection','attributes','fields','hasOwnProperty','nolimit','order','sort','where','pick','filter','merge','then','includeAll','include','findAll','rows','catch','show','params','keys','options','find','create','body','describe','eml-format','zip-dir','fast-json-patch','moment'];(function(_0x529b42,_0x43af05){var _0x87d4b8=function(_0x44b0f0){while(--_0x44b0f0){_0x529b42['push'](_0x529b42['shift']());}};_0x87d4b8(++_0x43af05);}(_0x8fd5,0x12c));var _0x58fd=function(_0x2b3c76,_0x56d99a){_0x2b3c76=_0x2b3c76-0x0;var _0x108e68=_0x8fd5[_0x2b3c76];return _0x108e68;};'use strict';var emlformat=require(_0x58fd('0x0'));var rimraf=require('rimraf');var zipdir=require(_0x58fd('0x1'));var jsonpatch=require(_0x58fd('0x2'));var rp=require('request-promise');var moment=require(_0x58fd('0x3'));var BPromise=require(_0x58fd('0x4'));var Mustache=require(_0x58fd('0x5'));var util=require(_0x58fd('0x6'));var path=require(_0x58fd('0x7'));var sox=require('sox');var csv=require(_0x58fd('0x8'));var ejs=require(_0x58fd('0x9'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x58fd('0xa'));var squel=require('squel');var crypto=require(_0x58fd('0xb'));var jsforce=require(_0x58fd('0xc'));var deskjs=require(_0x58fd('0xd'));var toCsv=require('to-csv');var querystring=require(_0x58fd('0xe'));var Papa=require(_0x58fd('0xf'));var Redis=require(_0x58fd('0x10'));var authService=require(_0x58fd('0x11'));var qs=require(_0x58fd('0x12'));var as=require(_0x58fd('0x13'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x58fd('0x14'))(_0x58fd('0x15'));var utils=require('../../config/utils');var config=require(_0x58fd('0x16'));var licenseUtil=require(_0x58fd('0x17'));var db=require(_0x58fd('0x18'))['db'];function respondWithStatusCode(_0x211a7a,_0x46bf58){_0x46bf58=_0x46bf58||0xcc;return function(_0x4a9a11){if(_0x4a9a11){return _0x211a7a[_0x58fd('0x19')](_0x46bf58);}return _0x211a7a[_0x58fd('0x1a')](_0x46bf58)[_0x58fd('0x1b')]();};}function respondWithResult(_0x25d8c7,_0xc0dbb3){_0xc0dbb3=_0xc0dbb3||0xc8;return function(_0x59588){if(_0x59588){return _0x25d8c7[_0x58fd('0x1a')](_0xc0dbb3)[_0x58fd('0x1c')](_0x59588);}};}function respondWithFilteredResult(_0x23ec18,_0x4a6cd4){return function(_0x4dfaf9){if(_0x4dfaf9){var _0xa92ec7=typeof _0x4a6cd4['offset']===_0x58fd('0x1d')&&typeof _0x4a6cd4[_0x58fd('0x1e')]===_0x58fd('0x1d');var _0x23dfb7=_0x4dfaf9[_0x58fd('0x1f')];var _0x42eea6=_0xa92ec7?0x0:_0x4a6cd4[_0x58fd('0x20')];var _0x29149d=_0xa92ec7?_0x4dfaf9['count']:_0x4a6cd4[_0x58fd('0x20')]+_0x4a6cd4[_0x58fd('0x1e')];var _0x2ab834;if(_0x29149d>=_0x23dfb7){_0x29149d=_0x23dfb7;_0x2ab834=0xc8;}else{_0x2ab834=0xce;}_0x23ec18[_0x58fd('0x1a')](_0x2ab834);return _0x23ec18[_0x58fd('0x21')]('Content-Range',_0x42eea6+'-'+_0x29149d+'/'+_0x23dfb7)[_0x58fd('0x1c')](_0x4dfaf9);}return null;};}function patchUpdates(_0x2f9829){return function(_0xc0d2bc){try{jsonpatch['apply'](_0xc0d2bc,_0x2f9829,!![]);}catch(_0x183e73){return BPromise['reject'](_0x183e73);}return _0xc0d2bc[_0x58fd('0x22')]();};}function saveUpdates(_0x15c6ce,_0x19506a){return function(_0xadf32e){if(_0xadf32e){return _0xadf32e[_0x58fd('0x23')](_0x15c6ce)['then'](function(_0x4af57a){return _0x4af57a;});}return null;};}function removeEntity(_0x467a4b,_0x2cf1af){return function(_0x4682ab){if(_0x4682ab){return _0x4682ab[_0x58fd('0x24')]()['then'](function(){_0x467a4b['status'](0xcc)['end']();});}};}function handleEntityNotFound(_0x5ad088,_0x354f3f){return function(_0x4e9c92){if(!_0x4e9c92){_0x5ad088[_0x58fd('0x19')](0x194);}return _0x4e9c92;};}function handleError(_0x346e31,_0x3c5e13){_0x3c5e13=_0x3c5e13||0x1f4;return function(_0x5750ae){logger[_0x58fd('0x25')](_0x5750ae[_0x58fd('0x26')]);if(_0x5750ae[_0x58fd('0x27')]){delete _0x5750ae[_0x58fd('0x27')];}_0x346e31[_0x58fd('0x1a')](_0x3c5e13)[_0x58fd('0x28')](_0x5750ae);};}exports[_0x58fd('0x29')]=function(_0x4049e6,_0x21c24e){var _0x39730a={},_0x5ecc79={},_0x4465f0={'count':0x0,'rows':[]};var _0x1f8c2b=_[_0x58fd('0x2a')](db[_0x58fd('0x2b')][_0x58fd('0x2c')],function(_0x17a3ec){return{'name':_0x17a3ec[_0x58fd('0x2d')],'type':_0x17a3ec[_0x58fd('0x2e')][_0x58fd('0x2f')]};});_0x5ecc79[_0x58fd('0x30')]=_[_0x58fd('0x2a')](_0x1f8c2b,_0x58fd('0x27'));_0x5ecc79[_0x58fd('0x31')]=_['keys'](_0x4049e6[_0x58fd('0x31')]);_0x5ecc79[_0x58fd('0x32')]=_[_0x58fd('0x33')](_0x5ecc79['model'],_0x5ecc79[_0x58fd('0x31')]);_0x39730a[_0x58fd('0x34')]=_['intersection'](_0x5ecc79['model'],qs[_0x58fd('0x35')](_0x4049e6[_0x58fd('0x31')][_0x58fd('0x35')]));_0x39730a['attributes']=_0x39730a['attributes']['length']?_0x39730a[_0x58fd('0x34')]:_0x5ecc79[_0x58fd('0x30')];if(!_0x4049e6[_0x58fd('0x31')][_0x58fd('0x36')](_0x58fd('0x37'))){_0x39730a[_0x58fd('0x1e')]=qs[_0x58fd('0x1e')](_0x4049e6[_0x58fd('0x31')][_0x58fd('0x1e')]);_0x39730a['offset']=qs[_0x58fd('0x20')](_0x4049e6[_0x58fd('0x31')][_0x58fd('0x20')]);}_0x39730a[_0x58fd('0x38')]=qs[_0x58fd('0x39')](_0x4049e6[_0x58fd('0x31')]['sort']);_0x39730a[_0x58fd('0x3a')]=qs[_0x58fd('0x32')](_[_0x58fd('0x3b')](_0x4049e6[_0x58fd('0x31')],_0x5ecc79[_0x58fd('0x32')]),_0x1f8c2b);if(_0x4049e6['query'][_0x58fd('0x3c')]){_0x39730a[_0x58fd('0x3a')]=_[_0x58fd('0x3d')](_0x39730a[_0x58fd('0x3a')],{'$or':_[_0x58fd('0x2a')](_0x1f8c2b,function(_0x11ed7a){if(_0x11ed7a[_0x58fd('0x2e')]!=='VIRTUAL'){var _0xb8df99={};_0xb8df99[_0x11ed7a['name']]={'$like':'%'+_0x4049e6['query'][_0x58fd('0x3c')]+'%'};return _0xb8df99;}})});}_0x39730a=_[_0x58fd('0x3d')]({},_0x39730a,_0x4049e6['options']);var _0x30595c={'where':_0x39730a[_0x58fd('0x3a')]};return db[_0x58fd('0x2b')][_0x58fd('0x1f')](_0x30595c)[_0x58fd('0x3e')](function(_0x49ed96){_0x4465f0[_0x58fd('0x1f')]=_0x49ed96;if(_0x4049e6[_0x58fd('0x31')][_0x58fd('0x3f')]){_0x39730a[_0x58fd('0x40')]=[{'all':!![]}];}return db['MailTransferReport'][_0x58fd('0x41')](_0x39730a);})['then'](function(_0x58a019){_0x4465f0[_0x58fd('0x42')]=_0x58a019;return _0x4465f0;})[_0x58fd('0x3e')](respondWithFilteredResult(_0x21c24e,_0x39730a))[_0x58fd('0x43')](handleError(_0x21c24e,null));};exports[_0x58fd('0x44')]=function(_0x271946,_0x53f906){var _0x5b6627={'raw':!![],'where':{'id':_0x271946[_0x58fd('0x45')]['id']}},_0x29c961={};_0x29c961[_0x58fd('0x30')]=_['keys'](db['MailTransferReport']['rawAttributes']);_0x29c961[_0x58fd('0x31')]=_[_0x58fd('0x46')](_0x271946[_0x58fd('0x31')]);_0x29c961[_0x58fd('0x32')]=_[_0x58fd('0x33')](_0x29c961['model'],_0x29c961[_0x58fd('0x31')]);_0x5b6627[_0x58fd('0x34')]=_[_0x58fd('0x33')](_0x29c961[_0x58fd('0x30')],qs[_0x58fd('0x35')](_0x271946[_0x58fd('0x31')][_0x58fd('0x35')]));_0x5b6627[_0x58fd('0x34')]=_0x5b6627['attributes']['length']?_0x5b6627[_0x58fd('0x34')]:_0x29c961[_0x58fd('0x30')];if(_0x271946[_0x58fd('0x31')][_0x58fd('0x3f')]){_0x5b6627[_0x58fd('0x40')]=[{'all':!![]}];}_0x5b6627=_[_0x58fd('0x3d')]({},_0x5b6627,_0x271946[_0x58fd('0x47')]);return db[_0x58fd('0x2b')][_0x58fd('0x48')](_0x5b6627)[_0x58fd('0x3e')](handleEntityNotFound(_0x53f906,null))[_0x58fd('0x3e')](respondWithResult(_0x53f906,null))[_0x58fd('0x43')](handleError(_0x53f906,null));};exports['create']=function(_0x49b001,_0x18ef8a){return db['MailTransferReport'][_0x58fd('0x49')](_0x49b001[_0x58fd('0x4a')],{})[_0x58fd('0x3e')](respondWithResult(_0x18ef8a,0xc9))[_0x58fd('0x43')](handleError(_0x18ef8a,null));};exports[_0x58fd('0x23')]=function(_0x4c5137,_0x5cae40){if(_0x4c5137[_0x58fd('0x4a')]['id']){delete _0x4c5137['body']['id'];}return db[_0x58fd('0x2b')]['find']({'where':{'id':_0x4c5137['params']['id']}})[_0x58fd('0x3e')](handleEntityNotFound(_0x5cae40,null))[_0x58fd('0x3e')](saveUpdates(_0x4c5137[_0x58fd('0x4a')],null))[_0x58fd('0x3e')](respondWithResult(_0x5cae40,null))[_0x58fd('0x43')](handleError(_0x5cae40,null));};exports[_0x58fd('0x24')]=function(_0x4a2b0e,_0x40e0f2){return db[_0x58fd('0x2b')][_0x58fd('0x48')]({'where':{'id':_0x4a2b0e[_0x58fd('0x45')]['id']}})[_0x58fd('0x3e')](handleEntityNotFound(_0x40e0f2,null))[_0x58fd('0x3e')](removeEntity(_0x40e0f2,null))[_0x58fd('0x43')](handleError(_0x40e0f2,null));};exports[_0x58fd('0x4b')]=function(_0x2800a9,_0x6f766a){return db[_0x58fd('0x2b')][_0x58fd('0x4b')]()['then'](respondWithResult(_0x6f766a,null))[_0x58fd('0x43')](handleError(_0x6f766a,null));};
\ No newline at end of file
index 8f132f2..7a08063 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0xf15e=['MailTransferReport','report_mail_transfer','uniqueid','lodash','../../config/logger','api','moment','bluebird','request-promise','path','../../config/environment','./mailTransferReport.attributes','exports','define'];(function(_0x98a4c7,_0x1c5821){var _0x266356=function(_0x574fd0){while(--_0x574fd0){_0x98a4c7['push'](_0x98a4c7['shift']());}};_0x266356(++_0x1c5821);}(_0xf15e,0xb9));var _0xef15=function(_0x11a2e1,_0x560486){_0x11a2e1=_0x11a2e1-0x0;var _0x23a74b=_0xf15e[_0x11a2e1];return _0x23a74b;};'use strict';var _=require(_0xef15('0x0'));var util=require('util');var logger=require(_0xef15('0x1'))(_0xef15('0x2'));var moment=require(_0xef15('0x3'));var BPromise=require(_0xef15('0x4'));var rp=require(_0xef15('0x5'));var fs=require('fs');var path=require(_0xef15('0x6'));var rimraf=require('rimraf');var config=require(_0xef15('0x7'));var attributes=require(_0xef15('0x8'));module[_0xef15('0x9')]=function(_0x177b89,_0x58d919){return _0x177b89[_0xef15('0xa')](_0xef15('0xb'),attributes,{'tableName':_0xef15('0xc'),'paranoid':![],'indexes':[{'name':'uniqueid','fields':[_0xef15('0xd')]}],'timestamps':!![]});};
\ No newline at end of file
index 49f1f38..045f0bb 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0x1da1=['../../mysqldb','../../config/utils','../../config/logger','../../config/environment','jayson/promise','client','http','request','info','MailTransferReport,\x20%s,\x20%s','request\x20sent','debug','MailTransferReport,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','util','moment','bluebird','ioredis'];(function(_0x548d7d,_0x2d41fc){var _0xb1c878=function(_0x570f09){while(--_0x570f09){_0x548d7d['push'](_0x548d7d['shift']());}};_0xb1c878(++_0x2d41fc);}(_0x1da1,0x1df));var _0x11da=function(_0x59becf,_0x583abc){_0x59becf=_0x59becf-0x0;var _0xeef8af=_0x1da1[_0x59becf];return _0xeef8af;};'use strict';var _=require('lodash');var util=require(_0x11da('0x0'));var moment=require(_0x11da('0x1'));var BPromise=require(_0x11da('0x2'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x11da('0x3'));var db=require(_0x11da('0x4'))['db'];var utils=require(_0x11da('0x5'));var logger=require(_0x11da('0x6'))('rpc');var config=require(_0x11da('0x7'));var jayson=require(_0x11da('0x8'));var client=jayson[_0x11da('0x9')][_0x11da('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x3d7da8,_0x25a96e,_0x52c599){return new BPromise(function(_0x2c1f9c,_0x37ed4e){return client[_0x11da('0xb')](_0x3d7da8,_0x52c599)['then'](function(_0xdab7e5){logger[_0x11da('0xc')](_0x11da('0xd'),_0x25a96e,_0x11da('0xe'));logger[_0x11da('0xf')](_0x11da('0x10'),_0x25a96e,_0x11da('0xe'),JSON[_0x11da('0x11')](_0xdab7e5));if(_0xdab7e5[_0x11da('0x12')]){if(_0xdab7e5['error'][_0x11da('0x13')]===0x1f4){logger[_0x11da('0x12')](_0x11da('0xd'),_0x25a96e,_0xdab7e5[_0x11da('0x12')][_0x11da('0x14')]);return _0x37ed4e(_0xdab7e5[_0x11da('0x12')][_0x11da('0x14')]);}logger[_0x11da('0x12')](_0x11da('0xd'),_0x25a96e,_0xdab7e5['error'][_0x11da('0x14')]);return _0x2c1f9c(_0xdab7e5[_0x11da('0x12')][_0x11da('0x14')]);}else{logger['info'](_0x11da('0xd'),_0x25a96e,'request\x20sent');_0x2c1f9c(_0xdab7e5[_0x11da('0x15')][_0x11da('0x14')]);}})[_0x11da('0x16')](function(_0x2237e1){logger['error'](_0x11da('0xd'),_0x25a96e,_0x2237e1);_0x37ed4e(_0x2237e1);});});}
\ No newline at end of file
index 4bc0e34..c269c53 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0xc53c=['../../config/environment','./memberReport.controller','isAuthenticated','index','describe','/:id','show','put','update','delete','destroy','exports','multer','util','connect-timeout','express','Router','fs-extra','../../components/auth/service'];(function(_0x1c6ceb,_0x19956c){var _0x5c8a17=function(_0x5d1f40){while(--_0x5d1f40){_0x1c6ceb['push'](_0x1c6ceb['shift']());}};_0x5c8a17(++_0x19956c);}(_0xc53c,0xb7));var _0xcc53=function(_0x576be9,_0x5dd358){_0x576be9=_0x576be9-0x0;var _0x5b5e13=_0xc53c[_0x576be9];return _0x5b5e13;};'use strict';var multer=require(_0xcc53('0x0'));var util=require(_0xcc53('0x1'));var path=require('path');var timeout=require(_0xcc53('0x2'));var express=require(_0xcc53('0x3'));var router=express[_0xcc53('0x4')]();var fs_extra=require(_0xcc53('0x5'));var auth=require(_0xcc53('0x6'));var interaction=require('../../components/interaction/service');var config=require(_0xcc53('0x7'));var controller=require(_0xcc53('0x8'));router['get']('/',auth[_0xcc53('0x9')](),controller[_0xcc53('0xa')]);router['get']('/describe',auth['isAuthenticated'](),controller[_0xcc53('0xb')]);router['get'](_0xcc53('0xc'),auth[_0xcc53('0x9')](),controller[_0xcc53('0xd')]);router['post']('/',auth['isAuthenticated'](),controller['create']);router[_0xcc53('0xe')]('/:id',auth[_0xcc53('0x9')](),controller[_0xcc53('0xf')]);router[_0xcc53('0x10')](_0xcc53('0xc'),auth[_0xcc53('0x9')](),controller[_0xcc53('0x11')]);module[_0xcc53('0x12')]=router;
\ No newline at end of file
index b66b7f1..54b7c1e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0x2524=['STRING','DEFAULT\x20PAUSE','INTEGER','DATE','getDataValue','enterAt','diff','seconds','setDataValue','duration','talk:[inbound,\x20outbound],\x20pause:[reason]','talk:[start]','talk:[destination]','talk:[dial\x20string]','talk:[queue]','sequelize','moment','exports'];(function(_0x356d1b,_0x2a9fb7){var _0x4c2ca4=function(_0x4bf366){while(--_0x4bf366){_0x356d1b['push'](_0x356d1b['shift']());}};_0x4c2ca4(++_0x2a9fb7);}(_0x2524,0x1d1));var _0x4252=function(_0x2ba6d0,_0x4d3294){_0x2ba6d0=_0x2ba6d0-0x0;var _0x18baea=_0x2524[_0x2ba6d0];return _0x18baea;};'use strict';var Sequelize=require(_0x4252('0x0'));var moment=require(_0x4252('0x1'));module[_0x4252('0x2')]={'channel':{'type':Sequelize[_0x4252('0x3')]},'membername':{'type':Sequelize[_0x4252('0x3')]},'interface':{'type':Sequelize[_0x4252('0x3')]},'type':{'type':Sequelize[_0x4252('0x3')],'defaultValue':_0x4252('0x4'),'comment':'LOGIN,\x20PAUSE,\x20TALKING'},'duration':{'type':Sequelize[_0x4252('0x5')]},'enterAt':{'type':Sequelize['DATE']},'exitAt':{'type':Sequelize[_0x4252('0x6')],'set':function(_0x425979){var _0x1e24b6=moment(_0x425979);var _0x218575=moment(this[_0x4252('0x7')](_0x4252('0x8')));var _0x541a61=_0x1e24b6[_0x4252('0x9')](_0x218575,_0x4252('0xa'));this[_0x4252('0xb')]('exitAt',_0x425979);this['setDataValue'](_0x4252('0xc'),_0x541a61>=0x0?_0x541a61:null);}},'data1':{'type':Sequelize['STRING'],'comment':_0x4252('0xd')},'data2':{'type':Sequelize[_0x4252('0x3')],'comment':_0x4252('0xe')},'data3':{'type':Sequelize[_0x4252('0x3')],'comment':_0x4252('0xf')},'data4':{'type':Sequelize[_0x4252('0x3')],'comment':_0x4252('0x10')},'data5':{'type':Sequelize['STRING'],'comment':_0x4252('0x11')},'role':{'type':Sequelize[_0x4252('0x3')]},'internal':{'type':Sequelize[_0x4252('0x5')]},'uniqueid':{'type':Sequelize[_0x4252('0x3')]}};
\ No newline at end of file
index 67ba657..ce8eab1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0x008c=['destroy','sendStatus','send','index','MemberReport','rawAttributes','key','model','map','name','query','keys','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','sort','where','type','VIRTUAL','filter','merge','options','includeAll','include','findAll','rows','show','catch','create','body','find','params','describe','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','lodash','crypto','desk.js','papaparse','ioredis','../../config/license/hardware','../../config/logger','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','end','status','json','offset','undefined','limit','count','save','update','then'];(function(_0x11e1ab,_0x4bb093){var _0x530ca0=function(_0x329d8b){while(--_0x329d8b){_0x11e1ab['push'](_0x11e1ab['shift']());}};_0x530ca0(++_0x4bb093);}(_0x008c,0x188));var _0xc008=function(_0x5e28c2,_0x1e48ab){_0x5e28c2=_0x5e28c2-0x0;var _0x1a8cc6=_0x008c[_0x5e28c2];return _0x1a8cc6;};'use strict';var emlformat=require(_0xc008('0x0'));var rimraf=require(_0xc008('0x1'));var zipdir=require(_0xc008('0x2'));var jsonpatch=require(_0xc008('0x3'));var rp=require(_0xc008('0x4'));var moment=require('moment');var BPromise=require(_0xc008('0x5'));var Mustache=require(_0xc008('0x6'));var util=require(_0xc008('0x7'));var path=require(_0xc008('0x8'));var sox=require(_0xc008('0x9'));var csv=require(_0xc008('0xa'));var ejs=require(_0xc008('0xb'));var fs=require('fs');var fs_extra=require(_0xc008('0xc'));var _=require(_0xc008('0xd'));var squel=require('squel');var crypto=require(_0xc008('0xe'));var jsforce=require('jsforce');var deskjs=require(_0xc008('0xf'));var toCsv=require('to-csv');var querystring=require('querystring');var Papa=require(_0xc008('0x10'));var Redis=require(_0xc008('0x11'));var authService=require('../../components/auth/service');var qs=require('../../components/parsers/qs');var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0xc008('0x12'));var logger=require(_0xc008('0x13'))('api');var utils=require(_0xc008('0x14'));var config=require(_0xc008('0x15'));var licenseUtil=require(_0xc008('0x16'));var db=require(_0xc008('0x17'))['db'];function respondWithStatusCode(_0x9ffa93,_0x1819c6){_0x1819c6=_0x1819c6||0xcc;return function(_0x69726e){if(_0x69726e){return _0x9ffa93['sendStatus'](_0x1819c6);}return _0x9ffa93['status'](_0x1819c6)[_0xc008('0x18')]();};}function respondWithResult(_0x50c1ab,_0x25e13f){_0x25e13f=_0x25e13f||0xc8;return function(_0x4584e1){if(_0x4584e1){return _0x50c1ab[_0xc008('0x19')](_0x25e13f)[_0xc008('0x1a')](_0x4584e1);}};}function respondWithFilteredResult(_0x3f0ecf,_0x5ee00b){return function(_0x5e894e){if(_0x5e894e){var _0x4bd0f4=typeof _0x5ee00b[_0xc008('0x1b')]===_0xc008('0x1c')&&typeof _0x5ee00b[_0xc008('0x1d')]===_0xc008('0x1c');var _0x4fe771=_0x5e894e['count'];var _0x540e45=_0x4bd0f4?0x0:_0x5ee00b['offset'];var _0x46042b=_0x4bd0f4?_0x5e894e[_0xc008('0x1e')]:_0x5ee00b['offset']+_0x5ee00b[_0xc008('0x1d')];var _0x5906e6;if(_0x46042b>=_0x4fe771){_0x46042b=_0x4fe771;_0x5906e6=0xc8;}else{_0x5906e6=0xce;}_0x3f0ecf['status'](_0x5906e6);return _0x3f0ecf['set']('Content-Range',_0x540e45+'-'+_0x46042b+'/'+_0x4fe771)[_0xc008('0x1a')](_0x5e894e);}return null;};}function patchUpdates(_0x4b9726){return function(_0x5560b1){try{jsonpatch['apply'](_0x5560b1,_0x4b9726,!![]);}catch(_0x4a582d){return BPromise['reject'](_0x4a582d);}return _0x5560b1[_0xc008('0x1f')]();};}function saveUpdates(_0x4777a6,_0x251db2){return function(_0x415af3){if(_0x415af3){return _0x415af3[_0xc008('0x20')](_0x4777a6)[_0xc008('0x21')](function(_0x4f43e2){return _0x4f43e2;});}return null;};}function removeEntity(_0x459fd9,_0x5c85f2){return function(_0x58a6ea){if(_0x58a6ea){return _0x58a6ea[_0xc008('0x22')]()[_0xc008('0x21')](function(){_0x459fd9[_0xc008('0x19')](0xcc)[_0xc008('0x18')]();});}};}function handleEntityNotFound(_0x5410f5,_0x48582b){return function(_0x5de1e9){if(!_0x5de1e9){_0x5410f5[_0xc008('0x23')](0x194);}return _0x5de1e9;};}function handleError(_0x15dade,_0x92c582){_0x92c582=_0x92c582||0x1f4;return function(_0x2e31c2){logger['error'](_0x2e31c2['stack']);if(_0x2e31c2['name']){delete _0x2e31c2['name'];}_0x15dade['status'](_0x92c582)[_0xc008('0x24')](_0x2e31c2);};}exports[_0xc008('0x25')]=function(_0x25eae4,_0x529961){var _0x24c14c={},_0x32390d={},_0x209591={'count':0x0,'rows':[]};var _0x2a7d4f=_['map'](db[_0xc008('0x26')][_0xc008('0x27')],function(_0x53ed35){return{'name':_0x53ed35['fieldName'],'type':_0x53ed35['type'][_0xc008('0x28')]};});_0x32390d[_0xc008('0x29')]=_[_0xc008('0x2a')](_0x2a7d4f,_0xc008('0x2b'));_0x32390d[_0xc008('0x2c')]=_[_0xc008('0x2d')](_0x25eae4[_0xc008('0x2c')]);_0x32390d[_0xc008('0x2e')]=_[_0xc008('0x2f')](_0x32390d[_0xc008('0x29')],_0x32390d[_0xc008('0x2c')]);_0x24c14c[_0xc008('0x30')]=_['intersection'](_0x32390d[_0xc008('0x29')],qs[_0xc008('0x31')](_0x25eae4['query'][_0xc008('0x31')]));_0x24c14c[_0xc008('0x30')]=_0x24c14c[_0xc008('0x30')][_0xc008('0x32')]?_0x24c14c[_0xc008('0x30')]:_0x32390d[_0xc008('0x29')];if(!_0x25eae4[_0xc008('0x2c')][_0xc008('0x33')](_0xc008('0x34'))){_0x24c14c['limit']=qs[_0xc008('0x1d')](_0x25eae4[_0xc008('0x2c')][_0xc008('0x1d')]);_0x24c14c[_0xc008('0x1b')]=qs[_0xc008('0x1b')](_0x25eae4[_0xc008('0x2c')][_0xc008('0x1b')]);}_0x24c14c['order']=qs[_0xc008('0x35')](_0x25eae4[_0xc008('0x2c')]['sort']);_0x24c14c[_0xc008('0x36')]=qs[_0xc008('0x2e')](_['pick'](_0x25eae4[_0xc008('0x2c')],_0x32390d[_0xc008('0x2e')]),_0x2a7d4f);if(_0x25eae4[_0xc008('0x2c')]['filter']){_0x24c14c['where']=_['merge'](_0x24c14c[_0xc008('0x36')],{'$or':_['map'](_0x2a7d4f,function(_0x3dd0ac){if(_0x3dd0ac[_0xc008('0x37')]!==_0xc008('0x38')){var _0x440459={};_0x440459[_0x3dd0ac[_0xc008('0x2b')]]={'$like':'%'+_0x25eae4[_0xc008('0x2c')][_0xc008('0x39')]+'%'};return _0x440459;}})});}_0x24c14c=_[_0xc008('0x3a')]({},_0x24c14c,_0x25eae4[_0xc008('0x3b')]);var _0x387dfd={'where':_0x24c14c[_0xc008('0x36')]};return db[_0xc008('0x26')][_0xc008('0x1e')](_0x387dfd)[_0xc008('0x21')](function(_0x4cace5){_0x209591[_0xc008('0x1e')]=_0x4cace5;if(_0x25eae4[_0xc008('0x2c')][_0xc008('0x3c')]){_0x24c14c[_0xc008('0x3d')]=[{'all':!![]}];}return db['MemberReport'][_0xc008('0x3e')](_0x24c14c);})[_0xc008('0x21')](function(_0xc8cb91){_0x209591[_0xc008('0x3f')]=_0xc8cb91;return _0x209591;})[_0xc008('0x21')](respondWithFilteredResult(_0x529961,_0x24c14c))['catch'](handleError(_0x529961,null));};exports[_0xc008('0x40')]=function(_0x3323f4,_0x3794b0){var _0x3e9a99={'raw':!![],'where':{'id':_0x3323f4['params']['id']}},_0x7279e8={};_0x7279e8[_0xc008('0x29')]=_[_0xc008('0x2d')](db[_0xc008('0x26')][_0xc008('0x27')]);_0x7279e8['query']=_[_0xc008('0x2d')](_0x3323f4[_0xc008('0x2c')]);_0x7279e8[_0xc008('0x2e')]=_['intersection'](_0x7279e8[_0xc008('0x29')],_0x7279e8['query']);_0x3e9a99[_0xc008('0x30')]=_['intersection'](_0x7279e8[_0xc008('0x29')],qs[_0xc008('0x31')](_0x3323f4['query'][_0xc008('0x31')]));_0x3e9a99[_0xc008('0x30')]=_0x3e9a99[_0xc008('0x30')]['length']?_0x3e9a99[_0xc008('0x30')]:_0x7279e8[_0xc008('0x29')];if(_0x3323f4[_0xc008('0x2c')][_0xc008('0x3c')]){_0x3e9a99[_0xc008('0x3d')]=[{'all':!![]}];}_0x3e9a99=_[_0xc008('0x3a')]({},_0x3e9a99,_0x3323f4['options']);return db['MemberReport']['find'](_0x3e9a99)[_0xc008('0x21')](handleEntityNotFound(_0x3794b0,null))[_0xc008('0x21')](respondWithResult(_0x3794b0,null))[_0xc008('0x41')](handleError(_0x3794b0,null));};exports[_0xc008('0x42')]=function(_0x25289f,_0x24f6a4){return db[_0xc008('0x26')][_0xc008('0x42')](_0x25289f['body'],{})['then'](respondWithResult(_0x24f6a4,0xc9))['catch'](handleError(_0x24f6a4,null));};exports[_0xc008('0x20')]=function(_0x2651cf,_0x158eae){if(_0x2651cf['body']['id']){delete _0x2651cf[_0xc008('0x43')]['id'];}return db[_0xc008('0x26')][_0xc008('0x44')]({'where':{'id':_0x2651cf[_0xc008('0x45')]['id']}})[_0xc008('0x21')](handleEntityNotFound(_0x158eae,null))[_0xc008('0x21')](saveUpdates(_0x2651cf[_0xc008('0x43')],null))[_0xc008('0x21')](respondWithResult(_0x158eae,null))[_0xc008('0x41')](handleError(_0x158eae,null));};exports[_0xc008('0x22')]=function(_0x52c444,_0x4c63d4){return db[_0xc008('0x26')]['find']({'where':{'id':_0x52c444[_0xc008('0x45')]['id']}})[_0xc008('0x21')](handleEntityNotFound(_0x4c63d4,null))[_0xc008('0x21')](removeEntity(_0x4c63d4,null))['catch'](handleError(_0x4c63d4,null));};exports[_0xc008('0x46')]=function(_0x32b435,_0xee64){return db[_0xc008('0x26')][_0xc008('0x46')]()['then'](respondWithResult(_0xee64,null))[_0xc008('0x41')](handleError(_0xee64,null));};
\ No newline at end of file
index 6b6ab69..261c1ec 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0xdac0=['MemberReport','membername_interface','membername','interface','lodash','util','../../config/logger','api','bluebird','request-promise','path','rimraf','exports','define'];(function(_0x1a84fc,_0x32fb6f){var _0x178d3a=function(_0x50cadc){while(--_0x50cadc){_0x1a84fc['push'](_0x1a84fc['shift']());}};_0x178d3a(++_0x32fb6f);}(_0xdac0,0x17e));var _0x0dac=function(_0x57b39c,_0x274d41){_0x57b39c=_0x57b39c-0x0;var _0x54d8a6=_0xdac0[_0x57b39c];return _0x54d8a6;};'use strict';var _=require(_0x0dac('0x0'));var util=require(_0x0dac('0x1'));var logger=require(_0x0dac('0x2'))(_0x0dac('0x3'));var moment=require('moment');var BPromise=require(_0x0dac('0x4'));var rp=require(_0x0dac('0x5'));var fs=require('fs');var path=require(_0x0dac('0x6'));var rimraf=require(_0x0dac('0x7'));var config=require('../../config/environment');var attributes=require('./memberReport.attributes');module[_0x0dac('0x8')]=function(_0x2ed4bf,_0x43c518){return _0x2ed4bf[_0x0dac('0x9')](_0x0dac('0xa'),attributes,{'tableName':'report_member','paranoid':![],'indexes':[{'name':_0x0dac('0xb'),'fields':[_0x0dac('0xc'),_0x0dac('0xd')]}],'timestamps':!![]});};
\ No newline at end of file
index 196948d..1be9a73 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0x15c6=['../../config/utils','jayson/promise','client','http','then','info','MemberReport,\x20%s,\x20%s','request\x20sent','debug','stringify','error','code','message','result','catch','GetMemberReport','MemberReport','raw','options','where','attributes','include','map','model','CreateMemberReport','create','body','UpdateMemberReport','update','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb'];(function(_0x3cf7f8,_0x3717c4){var _0x17d182=function(_0x122cee){while(--_0x122cee){_0x3cf7f8['push'](_0x3cf7f8['shift']());}};_0x17d182(++_0x3717c4);}(_0x15c6,0x1cd));var _0x615c=function(_0xf363f0,_0x3b5eeb){_0xf363f0=_0xf363f0-0x0;var _0x55a386=_0x15c6[_0xf363f0];return _0x55a386;};'use strict';var _=require(_0x615c('0x0'));var util=require(_0x615c('0x1'));var moment=require(_0x615c('0x2'));var BPromise=require(_0x615c('0x3'));var rs=require(_0x615c('0x4'));var fs=require('fs');var Redis=require(_0x615c('0x5'));var db=require(_0x615c('0x6'))['db'];var utils=require(_0x615c('0x7'));var logger=require('../../config/logger')('rpc');var config=require('../../config/environment');var jayson=require(_0x615c('0x8'));var client=jayson[_0x615c('0x9')][_0x615c('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x483303,_0x69f69d,_0x623eb8){return new BPromise(function(_0x44642f,_0x7f7001){return client['request'](_0x483303,_0x623eb8)[_0x615c('0xb')](function(_0x5dc15a){logger[_0x615c('0xc')](_0x615c('0xd'),_0x69f69d,_0x615c('0xe'));logger[_0x615c('0xf')]('MemberReport,\x20%s,\x20%s,\x20%s',_0x69f69d,'request\x20sent',JSON[_0x615c('0x10')](_0x5dc15a));if(_0x5dc15a[_0x615c('0x11')]){if(_0x5dc15a[_0x615c('0x11')][_0x615c('0x12')]===0x1f4){logger['error']('MemberReport,\x20%s,\x20%s',_0x69f69d,_0x5dc15a[_0x615c('0x11')][_0x615c('0x13')]);return _0x7f7001(_0x5dc15a['error'][_0x615c('0x13')]);}logger['error']('MemberReport,\x20%s,\x20%s',_0x69f69d,_0x5dc15a[_0x615c('0x11')][_0x615c('0x13')]);return _0x44642f(_0x5dc15a[_0x615c('0x11')][_0x615c('0x13')]);}else{logger[_0x615c('0xc')](_0x615c('0xd'),_0x69f69d,'request\x20sent');_0x44642f(_0x5dc15a[_0x615c('0x14')][_0x615c('0x13')]);}})[_0x615c('0x15')](function(_0x48d049){logger[_0x615c('0x11')](_0x615c('0xd'),_0x69f69d,_0x48d049);_0x7f7001(_0x48d049);});});}exports[_0x615c('0x16')]=function(_0x1e0d18){var _0x1badec=this;return new Promise(function(_0x374516,_0x2beeab){return db[_0x615c('0x17')]['findAll']({'raw':_0x1e0d18['options']?_0x1e0d18['options'][_0x615c('0x18')]===undefined?!![]:![]:!![],'where':_0x1e0d18[_0x615c('0x19')]?_0x1e0d18[_0x615c('0x19')][_0x615c('0x1a')]||null:null,'attributes':_0x1e0d18['options']?_0x1e0d18['options'][_0x615c('0x1b')]||null:null,'limit':_0x1e0d18['options']?_0x1e0d18[_0x615c('0x19')]['limit']||null:null,'include':_0x1e0d18[_0x615c('0x19')]?_0x1e0d18['options'][_0x615c('0x1c')]?_[_0x615c('0x1d')](_0x1e0d18['options']['include'],function(_0x5bba2f){return{'model':db[_0x5bba2f[_0x615c('0x1e')]],'as':_0x5bba2f['as'],'attributes':_0x5bba2f[_0x615c('0x1b')],'include':_0x5bba2f[_0x615c('0x1c')]?_[_0x615c('0x1d')](_0x5bba2f['include'],function(_0x32635f){return{'model':db[_0x32635f[_0x615c('0x1e')]],'as':_0x32635f['as'],'attributes':_0x32635f['attributes'],'include':_0x32635f['include']?_[_0x615c('0x1d')](_0x32635f[_0x615c('0x1c')],function(_0x8671eb){return{'model':db[_0x8671eb['model']],'as':_0x8671eb['as'],'attributes':_0x8671eb[_0x615c('0x1b')]};}):[]};}):[]};}):[]:[]})[_0x615c('0xb')](function(_0x457f7b){logger[_0x615c('0xc')]('GetMemberReport',_0x1e0d18);logger[_0x615c('0xf')](_0x615c('0x16'),_0x1e0d18,JSON[_0x615c('0x10')](_0x457f7b));_0x374516(_0x457f7b);})[_0x615c('0x15')](function(_0x41866b){logger[_0x615c('0x11')](_0x615c('0x16'),_0x41866b[_0x615c('0x13')],_0x1e0d18);_0x2beeab(_0x1badec[_0x615c('0x11')](0x1f4,_0x41866b[_0x615c('0x13')]));});});};exports[_0x615c('0x1f')]=function(_0x1ffab6){var _0x391211=this;return new Promise(function(_0x167424,_0x5e04d6){return db[_0x615c('0x17')][_0x615c('0x20')](_0x1ffab6[_0x615c('0x21')],{'raw':_0x1ffab6[_0x615c('0x19')]?_0x1ffab6[_0x615c('0x19')][_0x615c('0x18')]===undefined?!![]:![]:!![]})['then'](function(_0xecda5d){logger[_0x615c('0xc')](_0x615c('0x1f'),_0x1ffab6);logger[_0x615c('0xf')](_0x615c('0x1f'),_0x1ffab6,JSON['stringify'](_0xecda5d));_0x167424(_0xecda5d);})[_0x615c('0x15')](function(_0x5b02b6){logger[_0x615c('0x11')](_0x615c('0x1f'),_0x5b02b6[_0x615c('0x13')],_0x1ffab6);_0x5e04d6(_0x391211[_0x615c('0x11')](0x1f4,_0x5b02b6[_0x615c('0x13')]));});});};exports[_0x615c('0x22')]=function(_0x48de1b){var _0x193eed=this;return new Promise(function(_0x84de42,_0x2e5df7){return db[_0x615c('0x17')][_0x615c('0x23')](_0x48de1b[_0x615c('0x21')],{'raw':_0x48de1b[_0x615c('0x19')]?_0x48de1b['options'][_0x615c('0x18')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x48de1b[_0x615c('0x19')]?_0x48de1b[_0x615c('0x19')][_0x615c('0x1a')]||null:null,'attributes':_0x48de1b['options']?_0x48de1b[_0x615c('0x19')][_0x615c('0x1b')]||null:null,'limit':_0x48de1b[_0x615c('0x19')]?_0x48de1b[_0x615c('0x19')]['limit']||null:null})['then'](function(_0x2ee8d6){logger[_0x615c('0xc')](_0x615c('0x22'),_0x48de1b);logger['debug'](_0x615c('0x22'),_0x48de1b,JSON[_0x615c('0x10')](_0x2ee8d6));_0x84de42(_0x2ee8d6);})[_0x615c('0x15')](function(_0x195548){logger['error']('UpdateMemberReport',_0x195548[_0x615c('0x13')],_0x48de1b);_0x2e5df7(_0x193eed['error'](0x1f4,_0x195548[_0x615c('0x13')]));});});};
\ No newline at end of file
index 0ccc8ff..65614c8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0x62f2=['get','index','exports','multer','util','path','connect-timeout','Router','fs-extra','../../components/auth/service','../../config/environment','./migration.controller'];(function(_0x297c55,_0x34fa75){var _0x120389=function(_0x595108){while(--_0x595108){_0x297c55['push'](_0x297c55['shift']());}};_0x120389(++_0x34fa75);}(_0x62f2,0xff));var _0x262f=function(_0x502c7d,_0x2f1285){_0x502c7d=_0x502c7d-0x0;var _0x30b7ed=_0x62f2[_0x502c7d];return _0x30b7ed;};'use strict';var multer=require(_0x262f('0x0'));var util=require(_0x262f('0x1'));var path=require(_0x262f('0x2'));var timeout=require(_0x262f('0x3'));var express=require('express');var router=express[_0x262f('0x4')]();var fs_extra=require(_0x262f('0x5'));var auth=require(_0x262f('0x6'));var interaction=require('../../components/interaction/service');var config=require(_0x262f('0x7'));var controller=require(_0x262f('0x8'));router[_0x262f('0x9')]('/',controller[_0x262f('0xa')]);module[_0x262f('0xb')]=router;
\ No newline at end of file
index 2998a98..0c91b96 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0xa141=['sequelize','exports'];(function(_0x266f6c,_0x2b8160){var _0x2758ff=function(_0x506051){while(--_0x506051){_0x266f6c['push'](_0x266f6c['shift']());}};_0x2758ff(++_0x2b8160);}(_0xa141,0x94));var _0x1a14=function(_0x182620,_0x35ca34){_0x182620=_0x182620-0x0;var _0x5b986c=_0xa141[_0x182620];return _0x5b986c;};'use strict';var Sequelize=require(_0x1a14('0x0'));module[_0x1a14('0x1')]={'version':{'type':Sequelize['STRING'],'unique':'version'}};
\ No newline at end of file
index 9541188..28af746 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0xb607=['Migration','rawAttributes','fieldName','type','query','filters','attributes','intersection','model','fields','hasOwnProperty','nolimit','order','sort','where','pick','filter','merge','VIRTUAL','includeAll','include','findAll','rows','catch','eml-format','rimraf','zip-dir','fast-json-patch','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','../../mysqldb','sendStatus','status','end','offset','undefined','limit','count','set','json','apply','save','update','destroy','then','stack','name','index','map'];(function(_0xc1c643,_0x426a0c){var _0x8b59d8=function(_0xa369fa){while(--_0xa369fa){_0xc1c643['push'](_0xc1c643['shift']());}};_0x8b59d8(++_0x426a0c);}(_0xb607,0x1bc));var _0x7b60=function(_0x30ae5e,_0x391fc4){_0x30ae5e=_0x30ae5e-0x0;var _0x1f2e93=_0xb607[_0x30ae5e];return _0x1f2e93;};'use strict';var emlformat=require(_0x7b60('0x0'));var rimraf=require(_0x7b60('0x1'));var zipdir=require(_0x7b60('0x2'));var jsonpatch=require(_0x7b60('0x3'));var rp=require('request-promise');var moment=require('moment');var BPromise=require('bluebird');var Mustache=require(_0x7b60('0x4'));var util=require(_0x7b60('0x5'));var path=require(_0x7b60('0x6'));var sox=require(_0x7b60('0x7'));var csv=require(_0x7b60('0x8'));var ejs=require(_0x7b60('0x9'));var fs=require('fs');var fs_extra=require(_0x7b60('0xa'));var _=require(_0x7b60('0xb'));var squel=require(_0x7b60('0xc'));var crypto=require(_0x7b60('0xd'));var jsforce=require(_0x7b60('0xe'));var deskjs=require(_0x7b60('0xf'));var toCsv=require(_0x7b60('0x8'));var querystring=require(_0x7b60('0x10'));var Papa=require(_0x7b60('0x11'));var Redis=require(_0x7b60('0x12'));var authService=require(_0x7b60('0x13'));var qs=require(_0x7b60('0x14'));var as=require(_0x7b60('0x15'));var hardwareService=require(_0x7b60('0x16'));var logger=require(_0x7b60('0x17'))(_0x7b60('0x18'));var utils=require(_0x7b60('0x19'));var config=require(_0x7b60('0x1a'));var licenseUtil=require('../../config/license/util');var db=require(_0x7b60('0x1b'))['db'];function respondWithStatusCode(_0x120155,_0x521b2c){_0x521b2c=_0x521b2c||0xcc;return function(_0x49e5f7){if(_0x49e5f7){return _0x120155[_0x7b60('0x1c')](_0x521b2c);}return _0x120155[_0x7b60('0x1d')](_0x521b2c)[_0x7b60('0x1e')]();};}function respondWithResult(_0xeb2d97,_0x3438bc){_0x3438bc=_0x3438bc||0xc8;return function(_0x3c4159){if(_0x3c4159){return _0xeb2d97['status'](_0x3438bc)['json'](_0x3c4159);}};}function respondWithFilteredResult(_0x1e2952,_0x55d78d){return function(_0x221265){if(_0x221265){var _0x1b8718=typeof _0x55d78d[_0x7b60('0x1f')]===_0x7b60('0x20')&&typeof _0x55d78d[_0x7b60('0x21')]==='undefined';var _0x2e624a=_0x221265['count'];var _0x51bd4c=_0x1b8718?0x0:_0x55d78d[_0x7b60('0x1f')];var _0x24bf53=_0x1b8718?_0x221265[_0x7b60('0x22')]:_0x55d78d['offset']+_0x55d78d[_0x7b60('0x21')];var _0x31b737;if(_0x24bf53>=_0x2e624a){_0x24bf53=_0x2e624a;_0x31b737=0xc8;}else{_0x31b737=0xce;}_0x1e2952['status'](_0x31b737);return _0x1e2952[_0x7b60('0x23')]('Content-Range',_0x51bd4c+'-'+_0x24bf53+'/'+_0x2e624a)[_0x7b60('0x24')](_0x221265);}return null;};}function patchUpdates(_0x1b6f67){return function(_0x37a6da){try{jsonpatch[_0x7b60('0x25')](_0x37a6da,_0x1b6f67,!![]);}catch(_0x5f644a){return BPromise['reject'](_0x5f644a);}return _0x37a6da[_0x7b60('0x26')]();};}function saveUpdates(_0x59e948,_0x4a54d5){return function(_0x40d12d){if(_0x40d12d){return _0x40d12d[_0x7b60('0x27')](_0x59e948)['then'](function(_0x37cf44){return _0x37cf44;});}return null;};}function removeEntity(_0x4247ba,_0x101a4e){return function(_0x3a59e5){if(_0x3a59e5){return _0x3a59e5[_0x7b60('0x28')]()[_0x7b60('0x29')](function(){_0x4247ba[_0x7b60('0x1d')](0xcc)[_0x7b60('0x1e')]();});}};}function handleEntityNotFound(_0x340101,_0x43d883){return function(_0x24bdfb){if(!_0x24bdfb){_0x340101[_0x7b60('0x1c')](0x194);}return _0x24bdfb;};}function handleError(_0x4e3248,_0x53e239){_0x53e239=_0x53e239||0x1f4;return function(_0x4cc7e4){logger['error'](_0x4cc7e4[_0x7b60('0x2a')]);if(_0x4cc7e4[_0x7b60('0x2b')]){delete _0x4cc7e4[_0x7b60('0x2b')];}_0x4e3248[_0x7b60('0x1d')](_0x53e239)['send'](_0x4cc7e4);};}exports[_0x7b60('0x2c')]=function(_0x15b5fd,_0x41a822){var _0xd4e21c={},_0x2a8f9f={},_0x499f22={'count':0x0,'rows':[]};var _0x3fba6b=_[_0x7b60('0x2d')](db[_0x7b60('0x2e')][_0x7b60('0x2f')],function(_0x1c9bec){return{'name':_0x1c9bec[_0x7b60('0x30')],'type':_0x1c9bec[_0x7b60('0x31')]['key']};});_0x2a8f9f['model']=_['map'](_0x3fba6b,_0x7b60('0x2b'));_0x2a8f9f[_0x7b60('0x32')]=_['keys'](_0x15b5fd[_0x7b60('0x32')]);_0x2a8f9f[_0x7b60('0x33')]=_['intersection'](_0x2a8f9f['model'],_0x2a8f9f['query']);_0xd4e21c[_0x7b60('0x34')]=_[_0x7b60('0x35')](_0x2a8f9f[_0x7b60('0x36')],qs[_0x7b60('0x37')](_0x15b5fd[_0x7b60('0x32')][_0x7b60('0x37')]));_0xd4e21c[_0x7b60('0x34')]=_0xd4e21c[_0x7b60('0x34')]['length']?_0xd4e21c[_0x7b60('0x34')]:_0x2a8f9f[_0x7b60('0x36')];if(!_0x15b5fd[_0x7b60('0x32')][_0x7b60('0x38')](_0x7b60('0x39'))){_0xd4e21c[_0x7b60('0x21')]=qs[_0x7b60('0x21')](_0x15b5fd['query']['limit']);_0xd4e21c[_0x7b60('0x1f')]=qs[_0x7b60('0x1f')](_0x15b5fd[_0x7b60('0x32')][_0x7b60('0x1f')]);}_0xd4e21c[_0x7b60('0x3a')]=qs[_0x7b60('0x3b')](_0x15b5fd['query']['sort']);_0xd4e21c[_0x7b60('0x3c')]=qs[_0x7b60('0x33')](_[_0x7b60('0x3d')](_0x15b5fd[_0x7b60('0x32')],_0x2a8f9f[_0x7b60('0x33')]),_0x3fba6b);if(_0x15b5fd[_0x7b60('0x32')][_0x7b60('0x3e')]){_0xd4e21c[_0x7b60('0x3c')]=_[_0x7b60('0x3f')](_0xd4e21c[_0x7b60('0x3c')],{'$or':_['map'](_0x3fba6b,function(_0x364bbc){if(_0x364bbc['type']!==_0x7b60('0x40')){var _0x2cbb0b={};_0x2cbb0b[_0x364bbc[_0x7b60('0x2b')]]={'$like':'%'+_0x15b5fd['query'][_0x7b60('0x3e')]+'%'};return _0x2cbb0b;}})});}_0xd4e21c=_[_0x7b60('0x3f')]({},_0xd4e21c,_0x15b5fd['options']);var _0x4a8fe1={'where':_0xd4e21c[_0x7b60('0x3c')]};return db[_0x7b60('0x2e')]['count'](_0x4a8fe1)[_0x7b60('0x29')](function(_0x4f0080){_0x499f22['count']=_0x4f0080;if(_0x15b5fd[_0x7b60('0x32')][_0x7b60('0x41')]){_0xd4e21c[_0x7b60('0x42')]=[{'all':!![]}];}return db[_0x7b60('0x2e')][_0x7b60('0x43')](_0xd4e21c);})[_0x7b60('0x29')](function(_0x4525d3){_0x499f22[_0x7b60('0x44')]=_0x4525d3;return _0x499f22;})[_0x7b60('0x29')](respondWithFilteredResult(_0x41a822,_0xd4e21c))[_0x7b60('0x45')](handleError(_0x41a822,null));};
\ No newline at end of file
index ebc8ff9..09d94ff 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0xbcc1=['moment','bluebird','request-promise','path','rimraf','../../config/environment','./migration.attributes','exports','define','Migration','lodash','../../config/logger','api'];(function(_0x9875f2,_0x5df566){var _0x57c331=function(_0x534eac){while(--_0x534eac){_0x9875f2['push'](_0x9875f2['shift']());}};_0x57c331(++_0x5df566);}(_0xbcc1,0x65));var _0x1bcc=function(_0x1fb043,_0x3dbd2c){_0x1fb043=_0x1fb043-0x0;var _0x466b6e=_0xbcc1[_0x1fb043];return _0x466b6e;};'use strict';var _=require(_0x1bcc('0x0'));var util=require('util');var logger=require(_0x1bcc('0x1'))(_0x1bcc('0x2'));var moment=require(_0x1bcc('0x3'));var BPromise=require(_0x1bcc('0x4'));var rp=require(_0x1bcc('0x5'));var fs=require('fs');var path=require(_0x1bcc('0x6'));var rimraf=require(_0x1bcc('0x7'));var config=require(_0x1bcc('0x8'));var attributes=require(_0x1bcc('0x9'));module[_0x1bcc('0xa')]=function(_0x141016,_0x30ea5b){return _0x141016[_0x1bcc('0xb')](_0x1bcc('0xc'),attributes,{'tableName':'migrations','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 0e4e855..29586db 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0x37dc=['../../config/utils','client','http','request','then','info','Migration,\x20%s,\x20%s','debug','Migration,\x20%s,\x20%s,\x20%s','stringify','error','code','message','catch','lodash','util','moment','bluebird','ioredis'];(function(_0x18166b,_0x46dc09){var _0x4c7143=function(_0xe6e969){while(--_0xe6e969){_0x18166b['push'](_0x18166b['shift']());}};_0x4c7143(++_0x46dc09);}(_0x37dc,0x1e9));var _0xc37d=function(_0x35b7ce,_0x33f1bd){_0x35b7ce=_0x35b7ce-0x0;var _0x47944c=_0x37dc[_0x35b7ce];return _0x47944c;};'use strict';var _=require(_0xc37d('0x0'));var util=require(_0xc37d('0x1'));var moment=require(_0xc37d('0x2'));var BPromise=require(_0xc37d('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0xc37d('0x4'));var db=require('../../mysqldb')['db'];var utils=require(_0xc37d('0x5'));var logger=require('../../config/logger')('rpc');var config=require('../../config/environment');var jayson=require('jayson/promise');var client=jayson[_0xc37d('0x6')][_0xc37d('0x7')]({'port':0x232a});function respondWithRpcPromise(_0x11fe31,_0x368c3b,_0x1d6e8b){return new BPromise(function(_0x2076b3,_0x79252d){return client[_0xc37d('0x8')](_0x11fe31,_0x1d6e8b)[_0xc37d('0x9')](function(_0x5a0a61){logger[_0xc37d('0xa')](_0xc37d('0xb'),_0x368c3b,'request\x20sent');logger[_0xc37d('0xc')](_0xc37d('0xd'),_0x368c3b,'request\x20sent',JSON[_0xc37d('0xe')](_0x5a0a61));if(_0x5a0a61[_0xc37d('0xf')]){if(_0x5a0a61['error'][_0xc37d('0x10')]===0x1f4){logger[_0xc37d('0xf')](_0xc37d('0xb'),_0x368c3b,_0x5a0a61[_0xc37d('0xf')][_0xc37d('0x11')]);return _0x79252d(_0x5a0a61[_0xc37d('0xf')][_0xc37d('0x11')]);}logger[_0xc37d('0xf')](_0xc37d('0xb'),_0x368c3b,_0x5a0a61[_0xc37d('0xf')][_0xc37d('0x11')]);return _0x2076b3(_0x5a0a61[_0xc37d('0xf')]['message']);}else{logger['info'](_0xc37d('0xb'),_0x368c3b,'request\x20sent');_0x2076b3(_0x5a0a61['result'][_0xc37d('0x11')]);}})[_0xc37d('0x12')](function(_0x5b204f){logger[_0xc37d('0xf')]('Migration,\x20%s,\x20%s',_0x368c3b,_0x5b204f);_0x79252d(_0x5b204f);});});}
\ No newline at end of file
index 84aac46..0c30a6c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0xe451=['../../config/environment','get','isAuthenticated','index','/:id','create','put','update','delete','destroy','exports','path','fs-extra','../../components/auth/service','../../components/interaction/service'];(function(_0x35a9f1,_0x117072){var _0x2dd43a=function(_0x2b7f49){while(--_0x2b7f49){_0x35a9f1['push'](_0x35a9f1['shift']());}};_0x2dd43a(++_0x117072);}(_0xe451,0xec));var _0x1e45=function(_0x54f056,_0x3eaa28){_0x54f056=_0x54f056-0x0;var _0x1fc019=_0xe451[_0x54f056];return _0x1fc019;};'use strict';var multer=require('multer');var util=require('util');var path=require(_0x1e45('0x0'));var timeout=require('connect-timeout');var express=require('express');var router=express['Router']();var fs_extra=require(_0x1e45('0x1'));var auth=require(_0x1e45('0x2'));var interaction=require(_0x1e45('0x3'));var config=require(_0x1e45('0x4'));var controller=require('./network.controller');router[_0x1e45('0x5')]('/',auth[_0x1e45('0x6')](),controller[_0x1e45('0x7')]);router['get'](_0x1e45('0x8'),auth[_0x1e45('0x6')](),controller['show']);router['post']('/',auth[_0x1e45('0x6')](),controller[_0x1e45('0x9')]);router[_0x1e45('0xa')]('/:id',auth[_0x1e45('0x6')](),controller[_0x1e45('0xb')]);router[_0x1e45('0xc')]('/:id',auth['isAuthenticated'](),controller[_0x1e45('0xd')]);module[_0x1e45('0xe')]=router;
\ No newline at end of file
index 5387349..333d398 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0x8f5b=['turn','STRING','sequelize','exports','stun'];(function(_0x3b1f4f,_0x697e9e){var _0x51e230=function(_0x241940){while(--_0x241940){_0x3b1f4f['push'](_0x3b1f4f['shift']());}};_0x51e230(++_0x697e9e);}(_0x8f5b,0xcf));var _0xb8f5=function(_0x31d211,_0x309141){_0x31d211=_0x31d211-0x0;var _0x58e0f8=_0x8f5b[_0x31d211];return _0x58e0f8;};'use strict';var Sequelize=require(_0xb8f5('0x0'));module[_0xb8f5('0x1')]={'type':{'type':Sequelize['ENUM']('localnet','externip',_0xb8f5('0x2'),_0xb8f5('0x3'))},'value':{'type':Sequelize[_0xb8f5('0x4')]},'username':{'type':Sequelize[_0xb8f5('0x4')]},'password':{'type':Sequelize['STRING']}};
\ No newline at end of file
index 7435939..b66a7db 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0xdd7b=['findAll','rows','show','options','create','body','toUpperCase','STUN','readFileSync','root','server/files/templates/stun_multiple.ejs','utf8','render','/etc/asterisk/stun_xcally.conf','Reload','TURN','join','/etc/asterisk/turn_xcally.conf','server/files/templates/network.ejs','writeFileSync','/etc/asterisk/sip_xcally_%s.conf','toLowerCase','chan_sip.so','find','params','server/files/templates/turn_multiple.ejs','res_stun_monitor.so','format','util','path','ejs','lodash','../../components/parsers/qs','../../config/logger','api','../../config/environment','../../mysqldb','jayson/promise','http','request','then','info','Network,\x20%s,\x20%s','request\x20sent','debug','Network,\x20%s,\x20%s,\x20%s','stringify','error','code','message','catch','status','json','offset','undefined','count','limit','set','Content-Range','update','destroy','end','sendStatus','stack','name','send','index','map','rawAttributes','fieldName','type','model','query','keys','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','filter','merge','VIRTUAL','Network','includeAll','include'];(function(_0x4e8c4e,_0x305688){var _0x3dd839=function(_0x987cf3){while(--_0x987cf3){_0x4e8c4e['push'](_0x4e8c4e['shift']());}};_0x3dd839(++_0x305688);}(_0xdd7b,0xd0));var _0xbdd7=function(_0xeb0c38,_0x13e054){_0xeb0c38=_0xeb0c38-0x0;var _0x38f2fc=_0xdd7b[_0xeb0c38];return _0x38f2fc;};'use strict';var util=require(_0xbdd7('0x0'));var path=require(_0xbdd7('0x1'));var ejs=require(_0xbdd7('0x2'));var fs=require('fs');var _=require(_0xbdd7('0x3'));var qs=require(_0xbdd7('0x4'));var logger=require(_0xbdd7('0x5'))(_0xbdd7('0x6'));var config=require(_0xbdd7('0x7'));var db=require(_0xbdd7('0x8'))['db'];var jayson=require(_0xbdd7('0x9'));var client=jayson['client'][_0xbdd7('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x2e96e8,_0x513b52,_0x1d5b09,_0x3fa824){return new Promise(function(_0x1af05e,_0x406887){var _0x355aa6=_0x3fa824||client;return _0x355aa6[_0xbdd7('0xb')](_0x2e96e8,_0x1d5b09)[_0xbdd7('0xc')](function(_0x3f16dd){logger[_0xbdd7('0xd')](_0xbdd7('0xe'),_0x513b52,_0xbdd7('0xf'));logger[_0xbdd7('0x10')](_0xbdd7('0x11'),_0x513b52,_0xbdd7('0xf'),JSON[_0xbdd7('0x12')](_0x3f16dd));if(_0x3f16dd[_0xbdd7('0x13')]){if(_0x3f16dd[_0xbdd7('0x13')][_0xbdd7('0x14')]===0x1f4){logger['error'](_0xbdd7('0xe'),_0x513b52,_0x3f16dd[_0xbdd7('0x13')][_0xbdd7('0x15')]);return _0x406887(_0x3f16dd[_0xbdd7('0x13')][_0xbdd7('0x15')]);}logger['error'](_0xbdd7('0xe'),_0x513b52,_0x3f16dd[_0xbdd7('0x13')]['message']);return _0x1af05e(_0x3f16dd[_0xbdd7('0x13')][_0xbdd7('0x15')]);}else{logger[_0xbdd7('0xd')](_0xbdd7('0xe'),_0x513b52,_0xbdd7('0xf'));_0x1af05e(_0x3f16dd['result']['message']);}})[_0xbdd7('0x16')](function(_0x204065){logger[_0xbdd7('0x13')](_0xbdd7('0xe'),_0x513b52,_0x204065);_0x406887(_0x204065);});});}function respondWithResult(_0x358a51,_0x21925f){_0x21925f=_0x21925f||0xc8;return function(_0x2d4dfe){if(_0x2d4dfe){return _0x358a51[_0xbdd7('0x17')](_0x21925f)[_0xbdd7('0x18')](_0x2d4dfe);}};}function respondWithFilteredResult(_0x3b4906,_0x2f8810){return function(_0xd21328){if(_0xd21328){var _0x58b54f=typeof _0x2f8810[_0xbdd7('0x19')]===_0xbdd7('0x1a')&&typeof _0x2f8810['limit']===_0xbdd7('0x1a');var _0x1f0bd7=_0xd21328['count'];var _0x25b1b6=_0x58b54f?0x0:_0x2f8810[_0xbdd7('0x19')];var _0x310107=_0x58b54f?_0xd21328[_0xbdd7('0x1b')]:_0x2f8810['offset']+_0x2f8810[_0xbdd7('0x1c')];var _0x16beaf;if(_0x310107>=_0x1f0bd7){_0x310107=_0x1f0bd7;_0x16beaf=0xc8;}else{_0x16beaf=0xce;}_0x3b4906[_0xbdd7('0x17')](_0x16beaf);return _0x3b4906[_0xbdd7('0x1d')](_0xbdd7('0x1e'),_0x25b1b6+'-'+_0x310107+'/'+_0x1f0bd7)[_0xbdd7('0x18')](_0xd21328);}return null;};}function saveUpdates(_0x59fc58){return function(_0x58ce13){if(_0x58ce13){return _0x58ce13[_0xbdd7('0x1f')](_0x59fc58)[_0xbdd7('0xc')](function(_0xb35ad9){return _0xb35ad9;});}return null;};}function removeEntity(_0x2cd30d){return function(_0xa3b509){if(_0xa3b509){return _0xa3b509[_0xbdd7('0x20')]()[_0xbdd7('0xc')](function(){_0x2cd30d[_0xbdd7('0x17')](0xcc)[_0xbdd7('0x21')]();});}};}function handleEntityNotFound(_0x4b8209){return function(_0x5fbb1b){if(!_0x5fbb1b){_0x4b8209[_0xbdd7('0x22')](0x194);}return _0x5fbb1b;};}function handleError(_0x17df5f,_0x44a33d){_0x44a33d=_0x44a33d||0x1f4;return function(_0x1e882b){logger[_0xbdd7('0x13')](_0x1e882b[_0xbdd7('0x23')]);if(_0x1e882b[_0xbdd7('0x24')]){delete _0x1e882b[_0xbdd7('0x24')];}_0x17df5f[_0xbdd7('0x17')](_0x44a33d)[_0xbdd7('0x25')](_0x1e882b);};}exports[_0xbdd7('0x26')]=function(_0x72be70,_0x2385d2){var _0x501c83={},_0x299c90={},_0x509765={'count':0x0,'rows':[]};var _0xd93b3c=_[_0xbdd7('0x27')](db['Network'][_0xbdd7('0x28')],function(_0xe0cd72){return{'name':_0xe0cd72[_0xbdd7('0x29')],'type':_0xe0cd72[_0xbdd7('0x2a')]['key']};});_0x299c90[_0xbdd7('0x2b')]=_[_0xbdd7('0x27')](_0xd93b3c,'name');_0x299c90[_0xbdd7('0x2c')]=_[_0xbdd7('0x2d')](_0x72be70[_0xbdd7('0x2c')]);_0x299c90[_0xbdd7('0x2e')]=_[_0xbdd7('0x2f')](_0x299c90[_0xbdd7('0x2b')],_0x299c90[_0xbdd7('0x2c')]);_0x501c83[_0xbdd7('0x30')]=_[_0xbdd7('0x2f')](_0x299c90[_0xbdd7('0x2b')],qs['fields'](_0x72be70[_0xbdd7('0x2c')][_0xbdd7('0x31')]));_0x501c83[_0xbdd7('0x30')]=_0x501c83[_0xbdd7('0x30')][_0xbdd7('0x32')]?_0x501c83[_0xbdd7('0x30')]:_0x299c90[_0xbdd7('0x2b')];if(!_0x72be70[_0xbdd7('0x2c')][_0xbdd7('0x33')](_0xbdd7('0x34'))){_0x501c83[_0xbdd7('0x1c')]=qs[_0xbdd7('0x1c')](_0x72be70[_0xbdd7('0x2c')][_0xbdd7('0x1c')]);_0x501c83[_0xbdd7('0x19')]=qs[_0xbdd7('0x19')](_0x72be70[_0xbdd7('0x2c')][_0xbdd7('0x19')]);}_0x501c83[_0xbdd7('0x35')]=qs[_0xbdd7('0x36')](_0x72be70['query'][_0xbdd7('0x36')]);_0x501c83[_0xbdd7('0x37')]=qs[_0xbdd7('0x2e')](_['pick'](_0x72be70[_0xbdd7('0x2c')],_0x299c90[_0xbdd7('0x2e')]),_0xd93b3c);if(_0x72be70[_0xbdd7('0x2c')][_0xbdd7('0x38')]){_0x501c83[_0xbdd7('0x37')]=_[_0xbdd7('0x39')](_0x501c83[_0xbdd7('0x37')],{'$or':_[_0xbdd7('0x27')](_0xd93b3c,function(_0x48b46c){if(_0x48b46c[_0xbdd7('0x2a')]!==_0xbdd7('0x3a')){var _0xdf7b08={};_0xdf7b08[_0x48b46c[_0xbdd7('0x24')]]={'$like':'%'+_0x72be70[_0xbdd7('0x2c')][_0xbdd7('0x38')]+'%'};return _0xdf7b08;}})});}_0x501c83=_[_0xbdd7('0x39')]({},_0x501c83,_0x72be70['options']);var _0x4fa4b5={'where':_0x501c83['where']};return db[_0xbdd7('0x3b')][_0xbdd7('0x1b')](_0x4fa4b5)[_0xbdd7('0xc')](function(_0x33e3ed){_0x509765[_0xbdd7('0x1b')]=_0x33e3ed;if(_0x72be70[_0xbdd7('0x2c')][_0xbdd7('0x3c')]){_0x501c83[_0xbdd7('0x3d')]=[{'all':!![]}];}return db[_0xbdd7('0x3b')][_0xbdd7('0x3e')](_0x501c83);})['then'](function(_0x2cea89){_0x509765[_0xbdd7('0x3f')]=_0x2cea89;return _0x509765;})[_0xbdd7('0xc')](respondWithFilteredResult(_0x2385d2,_0x501c83))[_0xbdd7('0x16')](handleError(_0x2385d2,null));};exports[_0xbdd7('0x40')]=function(_0x27a7bd,_0x51d120){var _0x1aa733={'raw':!![],'where':{'id':_0x27a7bd['params']['id']}},_0x5a21c3={};_0x5a21c3[_0xbdd7('0x2b')]=_[_0xbdd7('0x2d')](db[_0xbdd7('0x3b')][_0xbdd7('0x28')]);_0x5a21c3['query']=_['keys'](_0x27a7bd[_0xbdd7('0x2c')]);_0x5a21c3[_0xbdd7('0x2e')]=_[_0xbdd7('0x2f')](_0x5a21c3[_0xbdd7('0x2b')],_0x5a21c3[_0xbdd7('0x2c')]);_0x1aa733[_0xbdd7('0x30')]=_[_0xbdd7('0x2f')](_0x5a21c3[_0xbdd7('0x2b')],qs['fields'](_0x27a7bd[_0xbdd7('0x2c')][_0xbdd7('0x31')]));_0x1aa733[_0xbdd7('0x30')]=_0x1aa733['attributes'][_0xbdd7('0x32')]?_0x1aa733['attributes']:_0x5a21c3[_0xbdd7('0x2b')];if(_0x27a7bd['query'][_0xbdd7('0x3c')]){_0x1aa733['include']=[{'all':!![]}];}_0x1aa733=_[_0xbdd7('0x39')]({},_0x1aa733,_0x27a7bd[_0xbdd7('0x41')]);return db['Network']['find'](_0x1aa733)[_0xbdd7('0xc')](handleEntityNotFound(_0x51d120,null))['then'](respondWithResult(_0x51d120,null))[_0xbdd7('0x16')](handleError(_0x51d120,null));};exports['create']=function(_0x34b7f1,_0x1ffe30){var _0x1a04a1;return db[_0xbdd7('0x3b')][_0xbdd7('0x42')](_0x34b7f1[_0xbdd7('0x43')],{'raw':!![]})[_0xbdd7('0xc')](function(_0x3c2822){_0x1a04a1=_0x3c2822;return db['Network']['findAll']({'where':{'type':_0x34b7f1[_0xbdd7('0x43')][_0xbdd7('0x2a')]},'raw':!![]});})[_0xbdd7('0xc')](function(_0x4e9474){if(_0x1a04a1['type'][_0xbdd7('0x44')]()==_0xbdd7('0x45')){var _0x14093b=fs[_0xbdd7('0x46')](path['join'](config[_0xbdd7('0x47')],_0xbdd7('0x48')),_0xbdd7('0x49'));var _0x501e98=ejs[_0xbdd7('0x4a')](_0x14093b,{'networks':_0x4e9474||[]});fs['writeFileSync'](_0xbdd7('0x4b'),_0x501e98);return respondWithRpcPromise(_0xbdd7('0x4c'),'create',{'module':'res_stun_monitor.so'});}else if(_0x1a04a1['type'][_0xbdd7('0x44')]()==_0xbdd7('0x4d')){var _0x160f9d=fs[_0xbdd7('0x46')](path[_0xbdd7('0x4e')](config[_0xbdd7('0x47')],'server/files/templates/turn_multiple.ejs'),_0xbdd7('0x49'));var _0x8e6f0d=ejs[_0xbdd7('0x4a')](_0x160f9d,{'networks':_0x4e9474||[]});fs['writeFileSync'](_0xbdd7('0x4f'),_0x8e6f0d);return respondWithRpcPromise(_0xbdd7('0x4c'),_0xbdd7('0x42'),{'module':'res_stun_monitor.so'});}else{var _0x3a78d1=fs['readFileSync'](path[_0xbdd7('0x4e')](config[_0xbdd7('0x47')],_0xbdd7('0x50')),'utf8');var _0x28609a=ejs[_0xbdd7('0x4a')](_0x3a78d1,{'networks':_0x4e9474||[]});fs[_0xbdd7('0x51')](util['format'](_0xbdd7('0x52'),_0x34b7f1[_0xbdd7('0x43')]['type'][_0xbdd7('0x53')]()),_0x28609a);return respondWithRpcPromise('Reload',_0xbdd7('0x42'),{'module':_0xbdd7('0x54')});}})[_0xbdd7('0xc')](function(){return _0x1a04a1;})[_0xbdd7('0xc')](respondWithResult(_0x1ffe30,0xc9))[_0xbdd7('0x16')](handleError(_0x1ffe30,null));};exports[_0xbdd7('0x1f')]=function(_0x4d7dba,_0x5736e1){var _0x169662;return db[_0xbdd7('0x3b')][_0xbdd7('0x55')]({'where':{'id':_0x4d7dba[_0xbdd7('0x56')]['id']}})['then'](handleEntityNotFound(_0x5736e1,null))[_0xbdd7('0xc')](saveUpdates(_0x4d7dba[_0xbdd7('0x43')],null))[_0xbdd7('0xc')](function(_0x1c7021){if(_0x1c7021){_0x169662=_0x1c7021;return db['Network']['findAll']({'where':{'type':_0x169662['type']},'raw':!![]});}return null;})['then'](function(_0x5cdbff){if(_0x169662['type'][_0xbdd7('0x44')]()==_0xbdd7('0x45')){var _0x24b390=fs[_0xbdd7('0x46')](path[_0xbdd7('0x4e')](config[_0xbdd7('0x47')],_0xbdd7('0x48')),_0xbdd7('0x49'));var _0x476ce9=ejs[_0xbdd7('0x4a')](_0x24b390,{'networks':_0x5cdbff||[]});fs['writeFileSync'](_0xbdd7('0x4b'),_0x476ce9);return respondWithRpcPromise('Reload',_0xbdd7('0x1f'),{'module':'res_stun_monitor.so'});}else if(_0x169662[_0xbdd7('0x2a')][_0xbdd7('0x44')]()==_0xbdd7('0x4d')){var _0x1244d1=fs[_0xbdd7('0x46')](path['join'](config[_0xbdd7('0x47')],_0xbdd7('0x57')),'utf8');var _0x5120dd=ejs[_0xbdd7('0x4a')](_0x1244d1,{'networks':_0x5cdbff||[]});fs['writeFileSync']('/etc/asterisk/turn_xcally.conf',_0x5120dd);return respondWithRpcPromise(_0xbdd7('0x4c'),_0xbdd7('0x1f'),{'module':_0xbdd7('0x58')});}else{var _0x340e04=fs['readFileSync'](path[_0xbdd7('0x4e')](config[_0xbdd7('0x47')],'server/files/templates/network.ejs'),_0xbdd7('0x49'));var _0x398e06=ejs[_0xbdd7('0x4a')](_0x340e04,{'networks':_0x5cdbff||[]});fs['writeFileSync'](util[_0xbdd7('0x59')](_0xbdd7('0x52'),_0x4d7dba[_0xbdd7('0x43')][_0xbdd7('0x2a')][_0xbdd7('0x53')]()),_0x398e06);return respondWithRpcPromise('Reload',_0xbdd7('0x1f'),{'module':_0xbdd7('0x54')});}})[_0xbdd7('0xc')](function(_0x4dd3a3){if(_0x4dd3a3){return _0x169662;}return null;})['then'](respondWithResult(_0x5736e1,null))[_0xbdd7('0x16')](handleError(_0x5736e1,null));};exports[_0xbdd7('0x20')]=function(_0x113649,_0x537cd7){var _0x15c6db;return db[_0xbdd7('0x3b')][_0xbdd7('0x55')]({'where':{'id':_0x113649[_0xbdd7('0x56')]['id']}})[_0xbdd7('0xc')](function(_0x4e5c3f){_0x15c6db=_0x4e5c3f;return _0x4e5c3f;})['then'](handleEntityNotFound(_0x537cd7,null))[_0xbdd7('0xc')](removeEntity(_0x537cd7,null))[_0xbdd7('0xc')](function(){if(_0x15c6db){return db[_0xbdd7('0x3b')][_0xbdd7('0x3e')]({'where':{'type':_0x15c6db[_0xbdd7('0x2a')]},'raw':!![]});}})[_0xbdd7('0xc')](function(_0x4f1a3b){if(_0x15c6db[_0xbdd7('0x2a')][_0xbdd7('0x44')]()==_0xbdd7('0x45')){var _0x15c220=fs[_0xbdd7('0x46')](path['join'](config[_0xbdd7('0x47')],_0xbdd7('0x48')),_0xbdd7('0x49'));var _0x570065=ejs[_0xbdd7('0x4a')](_0x15c220,{'networks':_0x4f1a3b||[]});fs[_0xbdd7('0x51')](_0xbdd7('0x4b'),_0x570065);return respondWithRpcPromise(_0xbdd7('0x4c'),_0xbdd7('0x20'),{'module':_0xbdd7('0x58')});}else if(_0x15c6db[_0xbdd7('0x2a')][_0xbdd7('0x44')]()==_0xbdd7('0x4d')){var _0x33557c=fs[_0xbdd7('0x46')](path[_0xbdd7('0x4e')](config[_0xbdd7('0x47')],_0xbdd7('0x57')),_0xbdd7('0x49'));var _0xfbf61d=ejs[_0xbdd7('0x4a')](_0x33557c,{'networks':_0x4f1a3b||[]});fs[_0xbdd7('0x51')](_0xbdd7('0x4f'),_0xfbf61d);return respondWithRpcPromise(_0xbdd7('0x4c'),'destroy',{'module':_0xbdd7('0x58')});}else{var _0x5a2270=fs['readFileSync'](path[_0xbdd7('0x4e')](config[_0xbdd7('0x47')],_0xbdd7('0x50')),_0xbdd7('0x49'));var _0x402713=ejs[_0xbdd7('0x4a')](_0x5a2270,{'networks':_0x4f1a3b||[]});fs[_0xbdd7('0x51')](util[_0xbdd7('0x59')](_0xbdd7('0x52'),_0x15c6db[_0xbdd7('0x2a')][_0xbdd7('0x53')]()),_0x402713);return respondWithRpcPromise(_0xbdd7('0x4c'),_0xbdd7('0x20'),{'module':_0xbdd7('0x54')});}})['catch'](handleError(_0x537cd7,null));};
\ No newline at end of file
index eaf0aac..6f2762c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0x19ea=['exports','define','Network','network','lodash','api','bluebird','request-promise','path','./network.attributes'];(function(_0x4796f2,_0x3559f6){var _0x23e9f5=function(_0x142546){while(--_0x142546){_0x4796f2['push'](_0x4796f2['shift']());}};_0x23e9f5(++_0x3559f6);}(_0x19ea,0xfe));var _0xa19e=function(_0x158f01,_0x12af3e){_0x158f01=_0x158f01-0x0;var _0x5ef74e=_0x19ea[_0x158f01];return _0x5ef74e;};'use strict';var _=require(_0xa19e('0x0'));var util=require('util');var logger=require('../../config/logger')(_0xa19e('0x1'));var moment=require('moment');var BPromise=require(_0xa19e('0x2'));var rp=require(_0xa19e('0x3'));var fs=require('fs');var path=require(_0xa19e('0x4'));var rimraf=require('rimraf');var config=require('../../config/environment');var attributes=require(_0xa19e('0x5'));module[_0xa19e('0x6')]=function(_0x29fe52,_0x2713e9){return _0x29fe52[_0xa19e('0x7')](_0xa19e('0x8'),attributes,{'tableName':_0xa19e('0x9'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 5a9aca7..6d425b6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7a54=['info','Network,\x20%s,\x20%s','debug','stringify','error','code','message','request\x20sent','result','catch','lodash','util','moment','randomstring','ioredis','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','http'];(function(_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
+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(_0x3f2e17,_0x41134d){var _0xf93088=function(_0x435dee){while(--_0x435dee){_0x3f2e17['push'](_0x3f2e17['shift']());}};_0xf93088(++_0x41134d);}(_0x9957,0x93));var _0x7995=function(_0x5ddb1c,_0x5ea4df){_0x5ddb1c=_0x5ddb1c-0x0;var _0x354adc=_0x9957[_0x5ddb1c];return _0x354adc;};'use strict';var _=require(_0x7995('0x0'));var util=require(_0x7995('0x1'));var moment=require(_0x7995('0x2'));var BPromise=require(_0x7995('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x7995('0x4'));var db=require(_0x7995('0x5'))['db'];var utils=require(_0x7995('0x6'));var logger=require(_0x7995('0x7'))('rpc');var config=require(_0x7995('0x8'));var jayson=require(_0x7995('0x9'));var client=jayson[_0x7995('0xa')][_0x7995('0xb')]({'port':0x232a});function respondWithRpcPromise(_0xbda126,_0x326741,_0x4996ca){return new BPromise(function(_0x465276,_0x1cad37){return client['request'](_0xbda126,_0x4996ca)[_0x7995('0xc')](function(_0x3116fb){logger[_0x7995('0xd')](_0x7995('0xe'),_0x326741,_0x7995('0xf'));logger[_0x7995('0x10')](_0x7995('0x11'),_0x326741,'request\x20sent',JSON[_0x7995('0x12')](_0x3116fb));if(_0x3116fb[_0x7995('0x13')]){if(_0x3116fb['error'][_0x7995('0x14')]===0x1f4){logger[_0x7995('0x13')](_0x7995('0xe'),_0x326741,_0x3116fb[_0x7995('0x13')][_0x7995('0x15')]);return _0x1cad37(_0x3116fb[_0x7995('0x13')][_0x7995('0x15')]);}logger['error']('Network,\x20%s,\x20%s',_0x326741,_0x3116fb[_0x7995('0x13')][_0x7995('0x15')]);return _0x465276(_0x3116fb[_0x7995('0x13')][_0x7995('0x15')]);}else{logger[_0x7995('0xd')](_0x7995('0xe'),_0x326741,_0x7995('0xf'));_0x465276(_0x3116fb[_0x7995('0x16')]['message']);}})[_0x7995('0x17')](function(_0x565d97){logger[_0x7995('0x13')](_0x7995('0xe'),_0x326741,_0x565d97);_0x1cad37(_0x565d97);});});}
\ No newline at end of file
index 06c0ef1..aa3df63 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0xdc48=['destroy','delete','removeAnswers','removeAgents','exports','multer','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','isAuthenticated','index','get','/:id','show','/:id/dispositions','/:id/canned_answers','getAnswers','/:id/applications','getApplications','/:id/interactions','getInteractions','/:id/users','getAgents','post','create','addDisposition','addAnswer','/:id/notify','notify','addApplications','/:id/send','send','put','update'];(function(_0x1b244b,_0x1347f5){var _0x1d3aea=function(_0x2ce3fc){while(--_0x2ce3fc){_0x1b244b['push'](_0x1b244b['shift']());}};_0x1d3aea(++_0x1347f5);}(_0xdc48,0x10f));var _0x8dc4=function(_0x3fa479,_0x3613aa){_0x3fa479=_0x3fa479-0x0;var _0x5ce5ba=_0xdc48[_0x3fa479];return _0x5ce5ba;};'use strict';var multer=require(_0x8dc4('0x0'));var util=require('util');var path=require(_0x8dc4('0x1'));var timeout=require(_0x8dc4('0x2'));var express=require(_0x8dc4('0x3'));var router=express[_0x8dc4('0x4')]();var fs_extra=require(_0x8dc4('0x5'));var auth=require(_0x8dc4('0x6'));var interaction=require(_0x8dc4('0x7'));var config=require('../../config/environment');var controller=require('./openchannelAccount.controller');router['get']('/',auth[_0x8dc4('0x8')](),controller[_0x8dc4('0x9')]);router[_0x8dc4('0xa')]('/describe',auth[_0x8dc4('0x8')](),controller['describe']);router[_0x8dc4('0xa')](_0x8dc4('0xb'),auth[_0x8dc4('0x8')](),controller[_0x8dc4('0xc')]);router[_0x8dc4('0xa')](_0x8dc4('0xd'),auth['isAuthenticated'](),controller['getDispositions']);router[_0x8dc4('0xa')](_0x8dc4('0xe'),auth[_0x8dc4('0x8')](),controller[_0x8dc4('0xf')]);router[_0x8dc4('0xa')](_0x8dc4('0x10'),auth['isAuthenticated'](),controller[_0x8dc4('0x11')]);router[_0x8dc4('0xa')](_0x8dc4('0x12'),auth['isAuthenticated'](),controller[_0x8dc4('0x13')]);router[_0x8dc4('0xa')](_0x8dc4('0x14'),auth[_0x8dc4('0x8')](),controller[_0x8dc4('0x15')]);router[_0x8dc4('0x16')]('/',auth[_0x8dc4('0x8')](),controller[_0x8dc4('0x17')]);router[_0x8dc4('0x16')](_0x8dc4('0xd'),auth['isAuthenticated'](),controller[_0x8dc4('0x18')]);router[_0x8dc4('0x16')](_0x8dc4('0xe'),auth[_0x8dc4('0x8')](),controller[_0x8dc4('0x19')]);router[_0x8dc4('0x16')](_0x8dc4('0x1a'),controller[_0x8dc4('0x1b')]);router['post']('/:id/applications',auth['isAuthenticated'](),controller[_0x8dc4('0x1c')]);router['post'](_0x8dc4('0x14'),auth[_0x8dc4('0x8')](),controller['addAgents']);router['post'](_0x8dc4('0x1d'),auth[_0x8dc4('0x8')](),controller[_0x8dc4('0x1e')]);router[_0x8dc4('0x1f')]('/:id',auth[_0x8dc4('0x8')](),controller[_0x8dc4('0x20')]);router['delete']('/:id',auth[_0x8dc4('0x8')](),controller[_0x8dc4('0x21')]);router[_0x8dc4('0x22')](_0x8dc4('0xd'),auth[_0x8dc4('0x8')](),controller['removeDispositions']);router[_0x8dc4('0x22')](_0x8dc4('0xe'),auth[_0x8dc4('0x8')](),controller[_0x8dc4('0x23')]);router[_0x8dc4('0x22')]('/:id/users',auth['isAuthenticated'](),controller[_0x8dc4('0x24')]);module[_0x8dc4('0x25')]=router;
\ No newline at end of file
index c02146f..25e8b5c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0x04b3=['name','STRING','generate','TEXT','Account:\x20{{account.name}}<br/>{{#queue}}Queue:\x20{{queue.name}}<br/>{{/queue}}From\x20:\x20{{from}}','BOOLEAN','INTEGER','setDataValue','mandatoryDisposition','sequelize'];(function(_0x428029,_0x1a5eb3){var _0x52033a=function(_0x5d73a8){while(--_0x5d73a8){_0x428029['push'](_0x428029['shift']());}};_0x52033a(++_0x1a5eb3);}(_0x04b3,0xd1));var _0x304b=function(_0x33b912,_0x42a061){_0x33b912=_0x33b912-0x0;var _0x33a0ea=_0x04b3[_0x33b912];return _0x33a0ea;};'use strict';var Sequelize=require(_0x304b('0x0'));var rs=require('randomstring');module['exports']={'name':{'type':Sequelize['STRING'],'unique':_0x304b('0x1'),'allowNull':![]},'description':{'type':Sequelize[_0x304b('0x2')]},'token':{'type':Sequelize[_0x304b('0x2')],'defaultValue':function(){return rs[_0x304b('0x3')]();}},'replyUri':{'type':Sequelize[_0x304b('0x2')],'validate':{'isUrl':!![]}},'key':{'type':Sequelize[_0x304b('0x2')],'allowNull':![]},'notificationTemplate':{'type':Sequelize[_0x304b('0x4')],'defaultValue':function(){return _0x304b('0x5');}},'notificationSound':{'type':Sequelize[_0x304b('0x6')],'defaultValue':!![]},'notificationShake':{'type':Sequelize[_0x304b('0x6')],'defaultValue':![]},'waitForTheAssignedAgent':{'type':Sequelize[_0x304b('0x7')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0xa},'mapKey':{'type':Sequelize[_0x304b('0x2')]},'queueTransfer':{'type':Sequelize[_0x304b('0x6')],'defaultValue':![]},'queueTransferTimeout':{'type':Sequelize['INTEGER'],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c},'agentTransfer':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'agentTransferTimeout':{'type':Sequelize[_0x304b('0x7')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c},'mandatoryDispositionPauseId':{'type':Sequelize[_0x304b('0x7')],'allowNull':!![],'defaultValue':null,'comment':'Status\x20to\x20put\x20when\x20mandatory\x20disposition\x20is\x20enabled'},'mandatoryDisposition':{'type':Sequelize['BOOLEAN'],'defaultValue':![],'comment':'Enabled/disables\x20mandatory\x20dispo\x20on\x20a\x20queue','set':function(_0x1500c5){if(!_0x1500c5)this[_0x304b('0x8')]('mandatoryDispositionPauseId',null);this['setDataValue'](_0x304b('0x9'),_0x1500c5);}}};
\ No newline at end of file
index 02c74ae..ebb8cc4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0x3299=['Sequelize','body\x20is\x20mandatory\x20and\x20not\x20empty','mapKey\x20is\x20mandatory,\x20please\x20use\x20one\x20of\x20these:\x20','includes','mapKey','mapKey\x20invalid,\x20please\x20use\x20one\x20of\x20these:\x20','CmList','DESC','OpenchannelApplication','List','applications','Applications','priority','asc','account','Contacts','firstName','lastName','threadId','OpenchannelInteraction','externalUrl','ContactId','spread','contact','messageId','interaction','created','close','unmanaged','*,*,*,*','AttachmentId','UserId','User','unshift','agent','waitForTheAssignedAgent','Start','startRouting','EventManager','addApplications','Transaction','ISOLATION_LEVELS','bulkCreate','stack','json','getApplications','getInteractions','Contact','fullname','internal','Tags','tag','addAgents','omit','ids','emit','removeAgents','userOpenchannelAccount:remove','getAgents','out','OpenchannelMessage','dataValues','Messages','push','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/environment','../../config/license/util','../../mysqldb','redis','defaults','localhost','socket.io-emitter','register','jayson/promise','http','client','request','then','info','OpenchannelAccount,\x20%s,\x20%s','debug','request\x20sent','error','code','message','result','catch','status','offset','limit','undefined','count','Content-Range','apply','save','destroy','get','OpenchannelAccounts','UserProfileResource','end','sendStatus','name','send','index','Pause','mandatoryDispositionPause','OpenchannelAccount','type','model','map','query','filters','intersection','attributes','fields','hasOwnProperty','nolimit','order','sort','where','pick','filter','VIRTUAL','merge','options','includeAll','include','rows','show','params','keys','rawAttributes','length','body','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','userProfileId','autoAssociation','create','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','update','find','describe','addDisposition','OpenchannelAccountId','Disposition','getDispositions','findOne','findAll','removeDispositions','addAnswer','CannedAnswer','getAnswers','removeAnswers','notify','openchannel','CmContact','ValidationError','no\x20available\x20attributes','difference','createdAt','updatedAt','CompanyId','ListId','isNil','from','from\x20is\x20mandatory'];(function(_0x38537f,_0x252124){var _0x141e23=function(_0x2809b5){while(--_0x2809b5){_0x38537f['push'](_0x38537f['shift']());}};_0x141e23(++_0x252124);}(_0x3299,0x1bc));var _0x9329=function(_0x3c01b7,_0x267014){_0x3c01b7=_0x3c01b7-0x0;var _0x125052=_0x3299[_0x3c01b7];return _0x125052;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x9329('0x0'));var zipdir=require(_0x9329('0x1'));var jsonpatch=require(_0x9329('0x2'));var rp=require(_0x9329('0x3'));var moment=require(_0x9329('0x4'));var BPromise=require(_0x9329('0x5'));var Mustache=require(_0x9329('0x6'));var util=require(_0x9329('0x7'));var path=require(_0x9329('0x8'));var sox=require(_0x9329('0x9'));var csv=require(_0x9329('0xa'));var ejs=require(_0x9329('0xb'));var fs=require('fs');var fs_extra=require(_0x9329('0xc'));var _=require(_0x9329('0xd'));var squel=require(_0x9329('0xe'));var crypto=require(_0x9329('0xf'));var jsforce=require(_0x9329('0x10'));var deskjs=require('desk.js');var toCsv=require(_0x9329('0xa'));var querystring=require(_0x9329('0x11'));var Papa=require(_0x9329('0x12'));var Redis=require(_0x9329('0x13'));var authService=require(_0x9329('0x14'));var qs=require('../../components/parsers/qs');var as=require(_0x9329('0x15'));var hardwareService=require(_0x9329('0x16'));var logger=require('../../config/logger')('api');var utils=require('../../config/utils');var config=require(_0x9329('0x17'));var licenseUtil=require(_0x9329('0x18'));var db=require(_0x9329('0x19'))['db'];config[_0x9329('0x1a')]=_[_0x9329('0x1b')](config['redis'],{'host':_0x9329('0x1c'),'port':0x18eb});var socket=require(_0x9329('0x1d'))(new Redis(config[_0x9329('0x1a')]));require('./openchannelAccount.socket')[_0x9329('0x1e')](socket);var jayson=require(_0x9329('0x1f'));var client=jayson['client'][_0x9329('0x20')]({'port':0x232c});var client9002=jayson[_0x9329('0x21')]['http']({'port':0x232a});function respondWithRpcPromise(_0x5e21ad,_0x73ec60,_0x1c35d5,_0x28c751){return new BPromise(function(_0x4dfbc1,_0x35e05d){var _0x522094=_0x28c751||client;return _0x522094[_0x9329('0x22')](_0x5e21ad,_0x1c35d5)[_0x9329('0x23')](function(_0x57718b){logger[_0x9329('0x24')](_0x9329('0x25'),_0x73ec60,'request\x20sent');logger[_0x9329('0x26')]('OpenchannelAccount,\x20%s,\x20%s,\x20%s',_0x73ec60,_0x9329('0x27'),JSON['stringify'](_0x57718b));if(_0x57718b[_0x9329('0x28')]){if(_0x57718b['error'][_0x9329('0x29')]===0x1f4){logger[_0x9329('0x28')](_0x9329('0x25'),_0x73ec60,_0x57718b[_0x9329('0x28')][_0x9329('0x2a')]);return _0x35e05d(_0x57718b[_0x9329('0x28')]['message']);}logger[_0x9329('0x28')](_0x9329('0x25'),_0x73ec60,_0x57718b[_0x9329('0x28')][_0x9329('0x2a')]);return _0x4dfbc1(_0x57718b[_0x9329('0x28')]['message']);}else{logger[_0x9329('0x24')](_0x9329('0x25'),_0x73ec60,'request\x20sent');_0x4dfbc1(_0x57718b[_0x9329('0x2b')][_0x9329('0x2a')]);}})[_0x9329('0x2c')](function(_0x2da39d){logger['error']('OpenchannelAccount,\x20%s,\x20%s',_0x73ec60,_0x2da39d);_0x35e05d(_0x2da39d);});});}function respondWithStatusCode(_0x12cfe1,_0x156626){_0x156626=_0x156626||0xcc;return function(_0x4419fc){if(_0x4419fc){return _0x12cfe1['sendStatus'](_0x156626);}return _0x12cfe1[_0x9329('0x2d')](_0x156626)['end']();};}function respondWithResult(_0x3df39f,_0x192d0a){_0x192d0a=_0x192d0a||0xc8;return function(_0x40a0ce){if(_0x40a0ce){return _0x3df39f['status'](_0x192d0a)['json'](_0x40a0ce);}};}function respondWithFilteredResult(_0x36765a,_0x49d501){return function(_0x269964){if(_0x269964){var _0x4a5d27=typeof _0x49d501[_0x9329('0x2e')]==='undefined'&&typeof _0x49d501[_0x9329('0x2f')]===_0x9329('0x30');var _0x5cd7db=_0x269964[_0x9329('0x31')];var _0x27501e=_0x4a5d27?0x0:_0x49d501['offset'];var _0xc62466=_0x4a5d27?_0x269964[_0x9329('0x31')]:_0x49d501[_0x9329('0x2e')]+_0x49d501[_0x9329('0x2f')];var _0x505e7d;if(_0xc62466>=_0x5cd7db){_0xc62466=_0x5cd7db;_0x505e7d=0xc8;}else{_0x505e7d=0xce;}_0x36765a['status'](_0x505e7d);return _0x36765a['set'](_0x9329('0x32'),_0x27501e+'-'+_0xc62466+'/'+_0x5cd7db)['json'](_0x269964);}return null;};}function patchUpdates(_0x4b4b0d){return function(_0x5a1a33){try{jsonpatch[_0x9329('0x33')](_0x5a1a33,_0x4b4b0d,!![]);}catch(_0x212332){return BPromise['reject'](_0x212332);}return _0x5a1a33[_0x9329('0x34')]();};}function saveUpdates(_0x7245bb,_0x32ad62){return function(_0x14039f){if(_0x14039f){return _0x14039f['update'](_0x7245bb)[_0x9329('0x23')](function(_0x3e010a){return _0x3e010a;});}return null;};}function removeEntity(_0x3acf7d,_0x1d7d20){return function(_0x1c4d3c){if(_0x1c4d3c){return _0x1c4d3c[_0x9329('0x35')]()['then'](function(){var _0x96c433=_0x1c4d3c[_0x9329('0x36')]({'plain':!![]});var _0x3f4e3f=_0x9329('0x37');return db[_0x9329('0x38')][_0x9329('0x35')]({'where':{'type':_0x3f4e3f,'resourceId':_0x96c433['id']}})[_0x9329('0x23')](function(){return _0x1c4d3c;});})[_0x9329('0x23')](function(){_0x3acf7d['status'](0xcc)[_0x9329('0x39')]();});}};}function handleEntityNotFound(_0x4f5202,_0x11dc44){return function(_0x22086e){if(!_0x22086e){_0x4f5202[_0x9329('0x3a')](0x194);}return _0x22086e;};}function handleError(_0x2c7588,_0x71e99){_0x71e99=_0x71e99||0x1f4;return function(_0x42b47c){logger['error'](_0x42b47c['stack']);if(_0x42b47c[_0x9329('0x3b')]){delete _0x42b47c[_0x9329('0x3b')];}_0x2c7588[_0x9329('0x2d')](_0x71e99)[_0x9329('0x3c')](_0x42b47c);};}exports[_0x9329('0x3d')]=function(_0x329f95,_0x3a9e91){var _0x428287={'include':[{'model':db[_0x9329('0x3e')],'as':_0x9329('0x3f')}]},_0x5efd5d={},_0x397941={'count':0x0,'rows':[]};var _0x302a27=_['map'](db[_0x9329('0x40')]['rawAttributes'],function(_0x2ea72b){return{'name':_0x2ea72b['fieldName'],'type':_0x2ea72b[_0x9329('0x41')]['key']};});_0x5efd5d[_0x9329('0x42')]=_[_0x9329('0x43')](_0x302a27,_0x9329('0x3b'));_0x5efd5d[_0x9329('0x44')]=_['keys'](_0x329f95[_0x9329('0x44')]);_0x5efd5d[_0x9329('0x45')]=_[_0x9329('0x46')](_0x5efd5d[_0x9329('0x42')],_0x5efd5d[_0x9329('0x44')]);_0x428287[_0x9329('0x47')]=_[_0x9329('0x46')](_0x5efd5d['model'],qs[_0x9329('0x48')](_0x329f95[_0x9329('0x44')][_0x9329('0x48')]));_0x428287[_0x9329('0x47')]=_0x428287[_0x9329('0x47')]['length']?_0x428287[_0x9329('0x47')]:_0x5efd5d[_0x9329('0x42')];if(!_0x329f95[_0x9329('0x44')][_0x9329('0x49')](_0x9329('0x4a'))){_0x428287[_0x9329('0x2f')]=qs[_0x9329('0x2f')](_0x329f95[_0x9329('0x44')]['limit']);_0x428287['offset']=qs[_0x9329('0x2e')](_0x329f95['query'][_0x9329('0x2e')]);}_0x428287[_0x9329('0x4b')]=qs[_0x9329('0x4c')](_0x329f95[_0x9329('0x44')][_0x9329('0x4c')]);_0x428287[_0x9329('0x4d')]=qs[_0x9329('0x45')](_[_0x9329('0x4e')](_0x329f95[_0x9329('0x44')],_0x5efd5d[_0x9329('0x45')]),_0x302a27);if(_0x329f95[_0x9329('0x44')][_0x9329('0x4f')]){_0x428287['where']=_['merge'](_0x428287[_0x9329('0x4d')],{'$or':_['map'](_0x302a27,function(_0x3655fb){if(_0x3655fb[_0x9329('0x41')]!==_0x9329('0x50')){var _0x395e6d={};_0x395e6d[_0x3655fb[_0x9329('0x3b')]]={'$like':'%'+_0x329f95[_0x9329('0x44')]['filter']+'%'};return _0x395e6d;}})});}_0x428287=_[_0x9329('0x51')]({},_0x428287,_0x329f95[_0x9329('0x52')]);var _0x21d9c6={'where':_0x428287['where']};return db[_0x9329('0x40')][_0x9329('0x31')](_0x21d9c6)[_0x9329('0x23')](function(_0x553cab){_0x397941[_0x9329('0x31')]=_0x553cab;if(_0x329f95[_0x9329('0x44')][_0x9329('0x53')]){_0x428287[_0x9329('0x54')]=[{'all':!![]}];}return db[_0x9329('0x40')]['findAll'](_0x428287);})[_0x9329('0x23')](function(_0x421542){_0x397941[_0x9329('0x55')]=_0x421542;return _0x397941;})[_0x9329('0x23')](respondWithFilteredResult(_0x3a9e91,_0x428287))[_0x9329('0x2c')](handleError(_0x3a9e91,null));};exports[_0x9329('0x56')]=function(_0x312e4b,_0x3ed8f2){var _0x9c1df5={'raw':![],'where':{'id':_0x312e4b[_0x9329('0x57')]['id']},'include':[{'model':db[_0x9329('0x3e')],'as':_0x9329('0x3f')}]},_0x5caa41={};_0x5caa41[_0x9329('0x42')]=_[_0x9329('0x58')](db[_0x9329('0x40')][_0x9329('0x59')]);_0x5caa41['query']=_[_0x9329('0x58')](_0x312e4b[_0x9329('0x44')]);_0x5caa41[_0x9329('0x45')]=_[_0x9329('0x46')](_0x5caa41[_0x9329('0x42')],_0x5caa41[_0x9329('0x44')]);_0x9c1df5[_0x9329('0x47')]=_[_0x9329('0x46')](_0x5caa41[_0x9329('0x42')],qs[_0x9329('0x48')](_0x312e4b[_0x9329('0x44')][_0x9329('0x48')]));_0x9c1df5[_0x9329('0x47')]=_0x9c1df5[_0x9329('0x47')][_0x9329('0x5a')]?_0x9c1df5[_0x9329('0x47')]:_0x5caa41['model'];if(_0x312e4b['query'][_0x9329('0x53')]){_0x9c1df5[_0x9329('0x54')]=[{'all':!![]}];}_0x9c1df5=_[_0x9329('0x51')]({},_0x9c1df5,_0x312e4b[_0x9329('0x52')]);return db[_0x9329('0x40')]['find'](_0x9c1df5)[_0x9329('0x23')](handleEntityNotFound(_0x3ed8f2,null))[_0x9329('0x23')](respondWithResult(_0x3ed8f2,null))[_0x9329('0x2c')](handleError(_0x3ed8f2,null));};exports['create']=function(_0x420378,_0x2b7c31){return db['OpenchannelAccount']['create'](_0x420378[_0x9329('0x5b')],{})[_0x9329('0x23')](function(_0x2875b4){var _0x378c8a=_0x420378[_0x9329('0x5c')][_0x9329('0x36')]({'plain':!![]});if(!_0x378c8a)throw new Error(_0x9329('0x5d'));if(_0x378c8a[_0x9329('0x5e')]==='user'){var _0x1e26d9=_0x2875b4[_0x9329('0x36')]({'plain':!![]});var _0x389b19=_0x9329('0x37');return db['UserProfileSection']['find']({'where':{'name':_0x389b19,'userProfileId':_0x378c8a[_0x9329('0x5f')]},'raw':!![]})[_0x9329('0x23')](function(_0x36a6a5){if(_0x36a6a5&&_0x36a6a5[_0x9329('0x60')]===0x0){return db[_0x9329('0x38')][_0x9329('0x61')]({'name':_0x1e26d9[_0x9329('0x3b')],'resourceId':_0x1e26d9['id'],'type':_0x36a6a5['name'],'sectionId':_0x36a6a5['id']},{})['then'](function(){return _0x2875b4;});}else{return _0x2875b4;}})['catch'](function(_0x218df5){logger[_0x9329('0x28')](_0x9329('0x62'),_0x218df5);throw _0x218df5;});}return _0x2875b4;})[_0x9329('0x23')](respondWithResult(_0x2b7c31,0xc9))[_0x9329('0x2c')](handleError(_0x2b7c31,null));};exports[_0x9329('0x63')]=function(_0x1a3c52,_0x39dd16){if(_0x1a3c52['body']['id']){delete _0x1a3c52[_0x9329('0x5b')]['id'];}return db[_0x9329('0x40')][_0x9329('0x64')]({'where':{'id':_0x1a3c52[_0x9329('0x57')]['id']},'include':[{'model':db[_0x9329('0x3e')],'as':'mandatoryDispositionPause'}]})[_0x9329('0x23')](handleEntityNotFound(_0x39dd16,null))[_0x9329('0x23')](saveUpdates(_0x1a3c52['body'],null))[_0x9329('0x23')](respondWithResult(_0x39dd16,null))[_0x9329('0x2c')](handleError(_0x39dd16,null));};exports[_0x9329('0x35')]=function(_0x5baff0,_0x7891c9){return db[_0x9329('0x40')]['find']({'where':{'id':_0x5baff0[_0x9329('0x57')]['id']}})[_0x9329('0x23')](handleEntityNotFound(_0x7891c9,null))[_0x9329('0x23')](removeEntity(_0x7891c9,null))[_0x9329('0x2c')](handleError(_0x7891c9,null));};exports[_0x9329('0x65')]=function(_0xf9237d,_0x112323){return db['OpenchannelAccount'][_0x9329('0x65')]()[_0x9329('0x23')](respondWithResult(_0x112323,null))[_0x9329('0x2c')](handleError(_0x112323,null));};exports[_0x9329('0x66')]=function(_0x462059,_0x1cfc23,_0x282e6c){if(_0x462059[_0x9329('0x5b')]['id']){delete _0x462059['body']['id'];}return db['OpenchannelAccount']['find']({'where':{'id':_0x462059[_0x9329('0x57')]['id']}})[_0x9329('0x23')](handleEntityNotFound(_0x1cfc23,null))['then'](function(_0x585df7){if(_0x585df7){_0x462059[_0x9329('0x5b')][_0x9329('0x67')]=_0x585df7['id'];return db[_0x9329('0x68')][_0x9329('0x61')](_0x462059[_0x9329('0x5b')]);}})[_0x9329('0x23')](respondWithResult(_0x1cfc23,null))['catch'](handleError(_0x1cfc23,null));};exports[_0x9329('0x69')]=function(_0x32b4e4,_0x2ab012,_0x23aa93){var _0x1f3a4e={'raw':![],'where':{}};var _0x1545b5={};var _0x295597={'count':0x0,'rows':[]};return db['OpenchannelAccount'][_0x9329('0x6a')]({'where':{'id':_0x32b4e4[_0x9329('0x57')]['id']}})[_0x9329('0x23')](handleEntityNotFound(_0x2ab012,null))['then'](function(_0x26425b){if(_0x26425b){_0x1545b5[_0x9329('0x42')]=_[_0x9329('0x58')](db['Disposition'][_0x9329('0x59')]);_0x1545b5[_0x9329('0x44')]=_[_0x9329('0x58')](_0x32b4e4[_0x9329('0x44')]);_0x1545b5[_0x9329('0x45')]=_[_0x9329('0x46')](_0x1545b5[_0x9329('0x42')],_0x1545b5[_0x9329('0x44')]);_0x1f3a4e[_0x9329('0x47')]=_[_0x9329('0x46')](_0x1545b5[_0x9329('0x42')],qs[_0x9329('0x48')](_0x32b4e4[_0x9329('0x44')]['fields']));_0x1f3a4e[_0x9329('0x47')]=_0x1f3a4e[_0x9329('0x47')][_0x9329('0x5a')]?_0x1f3a4e[_0x9329('0x47')]:_0x1545b5[_0x9329('0x42')];if(!_0x32b4e4['query']['hasOwnProperty'](_0x9329('0x4a'))){_0x1f3a4e[_0x9329('0x2f')]=qs[_0x9329('0x2f')](_0x32b4e4['query'][_0x9329('0x2f')]);_0x1f3a4e['offset']=qs['offset'](_0x32b4e4[_0x9329('0x44')]['offset']);}_0x1f3a4e[_0x9329('0x4b')]=qs['sort'](_0x32b4e4['query'][_0x9329('0x4c')]);_0x1f3a4e[_0x9329('0x4d')]=qs[_0x9329('0x45')](_[_0x9329('0x4e')](_0x32b4e4[_0x9329('0x44')],_0x1545b5['filters']));_0x1f3a4e[_0x9329('0x4d')][_0x9329('0x67')]=_0x26425b['id'];if(_0x32b4e4[_0x9329('0x44')]['filter']){_0x1f3a4e[_0x9329('0x4d')]=_[_0x9329('0x51')](_0x1f3a4e[_0x9329('0x4d')],{'$or':_[_0x9329('0x43')](_0x1f3a4e[_0x9329('0x47')],function(_0x4b17cb){var _0x37be34={};_0x37be34[_0x4b17cb]={'$like':'%'+_0x32b4e4['query']['filter']+'%'};return _0x37be34;})});}_0x1f3a4e=_['merge']({},_0x1f3a4e,_0x32b4e4[_0x9329('0x52')]);return db[_0x9329('0x68')][_0x9329('0x31')]({'where':_0x1f3a4e['where']})[_0x9329('0x23')](function(_0x4cd663){_0x295597['count']=_0x4cd663;if(_0x32b4e4[_0x9329('0x44')][_0x9329('0x53')]){_0x1f3a4e[_0x9329('0x54')]=[{'all':!![]}];}return db[_0x9329('0x68')][_0x9329('0x6b')](_0x1f3a4e);})[_0x9329('0x23')](function(_0xd0425a){_0x295597[_0x9329('0x55')]=_0xd0425a;return _0x295597;});}})[_0x9329('0x23')](respondWithFilteredResult(_0x2ab012,_0x1f3a4e))['catch'](handleError(_0x2ab012,null));};exports[_0x9329('0x6c')]=function(_0x296849,_0x57c4f1,_0x5c23c3){return db['OpenchannelAccount']['find']({'where':{'id':_0x296849['params']['id']}})[_0x9329('0x23')](handleEntityNotFound(_0x57c4f1,null))[_0x9329('0x23')](function(_0x7847a){if(_0x7847a){return _0x7847a[_0x9329('0x6c')](_0x296849[_0x9329('0x44')]['ids']);}})[_0x9329('0x23')](respondWithStatusCode(_0x57c4f1,null))[_0x9329('0x2c')](handleError(_0x57c4f1,null));};exports[_0x9329('0x6d')]=function(_0x113d25,_0x15b3d7,_0x55089e){if(_0x113d25['body']['id']){delete _0x113d25[_0x9329('0x5b')]['id'];}return db[_0x9329('0x40')]['find']({'where':{'id':_0x113d25[_0x9329('0x57')]['id']}})[_0x9329('0x23')](handleEntityNotFound(_0x15b3d7,null))[_0x9329('0x23')](function(_0x5edc11){if(_0x5edc11){_0x113d25['body']['OpenchannelAccountId']=_0x5edc11['id'];return db[_0x9329('0x6e')][_0x9329('0x61')](_0x113d25[_0x9329('0x5b')]);}})['then'](respondWithResult(_0x15b3d7,null))['catch'](handleError(_0x15b3d7,null));};exports[_0x9329('0x6f')]=function(_0x3fd5a9,_0x24c77c,_0x4b4b4a){var _0x298a02={'raw':![],'where':{}};var _0x280803={};var _0x3568e1={'count':0x0,'rows':[]};return db[_0x9329('0x40')]['findOne']({'where':{'id':_0x3fd5a9[_0x9329('0x57')]['id']}})[_0x9329('0x23')](handleEntityNotFound(_0x24c77c,null))['then'](function(_0x453520){if(_0x453520){_0x280803['model']=_[_0x9329('0x58')](db['CannedAnswer'][_0x9329('0x59')]);_0x280803['query']=_['keys'](_0x3fd5a9['query']);_0x280803[_0x9329('0x45')]=_[_0x9329('0x46')](_0x280803['model'],_0x280803[_0x9329('0x44')]);_0x298a02[_0x9329('0x47')]=_[_0x9329('0x46')](_0x280803[_0x9329('0x42')],qs[_0x9329('0x48')](_0x3fd5a9[_0x9329('0x44')][_0x9329('0x48')]));_0x298a02['attributes']=_0x298a02[_0x9329('0x47')][_0x9329('0x5a')]?_0x298a02[_0x9329('0x47')]:_0x280803[_0x9329('0x42')];if(!_0x3fd5a9[_0x9329('0x44')]['hasOwnProperty'](_0x9329('0x4a'))){_0x298a02[_0x9329('0x2f')]=qs['limit'](_0x3fd5a9[_0x9329('0x44')][_0x9329('0x2f')]);_0x298a02[_0x9329('0x2e')]=qs['offset'](_0x3fd5a9[_0x9329('0x44')][_0x9329('0x2e')]);}_0x298a02[_0x9329('0x4b')]=qs[_0x9329('0x4c')](_0x3fd5a9[_0x9329('0x44')][_0x9329('0x4c')]);_0x298a02[_0x9329('0x4d')]=qs[_0x9329('0x45')](_[_0x9329('0x4e')](_0x3fd5a9['query'],_0x280803['filters']));_0x298a02[_0x9329('0x4d')]['OpenchannelAccountId']=_0x453520['id'];if(_0x3fd5a9[_0x9329('0x44')]['filter']){_0x298a02['where']=_[_0x9329('0x51')](_0x298a02['where'],{'$or':_[_0x9329('0x43')](_0x298a02[_0x9329('0x47')],function(_0x1d69a5){var _0x87d70f={};_0x87d70f[_0x1d69a5]={'$like':'%'+_0x3fd5a9[_0x9329('0x44')][_0x9329('0x4f')]+'%'};return _0x87d70f;})});}_0x298a02=_[_0x9329('0x51')]({},_0x298a02,_0x3fd5a9['options']);return db['CannedAnswer'][_0x9329('0x31')]({'where':_0x298a02['where']})[_0x9329('0x23')](function(_0x495ee9){_0x3568e1[_0x9329('0x31')]=_0x495ee9;if(_0x3fd5a9[_0x9329('0x44')][_0x9329('0x53')]){_0x298a02[_0x9329('0x54')]=[{'all':!![]}];}return db[_0x9329('0x6e')][_0x9329('0x6b')](_0x298a02);})[_0x9329('0x23')](function(_0x1414df){_0x3568e1[_0x9329('0x55')]=_0x1414df;return _0x3568e1;});}})[_0x9329('0x23')](respondWithFilteredResult(_0x24c77c,_0x298a02))[_0x9329('0x2c')](handleError(_0x24c77c,null));};exports['removeAnswers']=function(_0xec2e76,_0x2bddf1,_0x3f200e){return db['OpenchannelAccount'][_0x9329('0x64')]({'where':{'id':_0xec2e76[_0x9329('0x57')]['id']}})[_0x9329('0x23')](handleEntityNotFound(_0x2bddf1,null))[_0x9329('0x23')](function(_0x263a4c){if(_0x263a4c){return _0x263a4c[_0x9329('0x70')](_0xec2e76['query']['ids']);}})[_0x9329('0x23')](respondWithStatusCode(_0x2bddf1,null))[_0x9329('0x2c')](handleError(_0x2bddf1,null));};exports[_0x9329('0x71')]=function(_0x1f1580,_0x170923,_0x1b64df){var _0x507ecd={'body':_0x1f1580[_0x9329('0x5b')],'channel':_0x9329('0x72')};var _0x430175=[];var _0x4f92ff=[];var _0x1a23c1={};var _0x3c4228=![];return db[_0x9329('0x73')][_0x9329('0x65')]()[_0x9329('0x23')](function(_0x160f3f){if(!_0x160f3f){throw new db['Sequelize'][(_0x9329('0x74'))](_0x9329('0x75'));}_0x430175=_[_0x9329('0x76')](_[_0x9329('0x58')](_0x160f3f),[_0x9329('0x77'),'updatedAt']);_0x4f92ff=_['difference'](_[_0x9329('0x58')](_0x160f3f),[_0x9329('0x77'),_0x9329('0x78'),_0x9329('0x79'),_0x9329('0x7a')]);if(_0x1f1580['body']['id']){delete _0x1f1580['body']['id'];}if(_[_0x9329('0x7b')](_0x1f1580[_0x9329('0x5b')][_0x9329('0x7c')])){throw new db['Sequelize'][(_0x9329('0x74'))](_0x9329('0x7d'));}if(_['isNil'](_0x1f1580['body'][_0x9329('0x5b')])||_0x1f1580['body'][_0x9329('0x5b')]===''){throw new db[(_0x9329('0x7e'))][(_0x9329('0x74'))](_0x9329('0x7f'));}if(_[_0x9329('0x7b')](_0x1f1580['body']['mapKey'])){throw new db[(_0x9329('0x7e'))][(_0x9329('0x74'))](_0x9329('0x80')+_0x4f92ff);}if(!_[_0x9329('0x81')](_0x4f92ff,_0x1f1580[_0x9329('0x5b')][_0x9329('0x82')])){throw new db['Sequelize'][(_0x9329('0x74'))](_0x9329('0x83')+_0x4f92ff);}_0x1a23c1[_0x1f1580[_0x9329('0x5b')][_0x9329('0x82')]]=_0x1f1580[_0x9329('0x5b')][_0x9329('0x7c')];})[_0x9329('0x23')](function(){return db[_0x9329('0x40')][_0x9329('0x64')]({'where':{'id':_0x1f1580[_0x9329('0x57')]['id']},'include':[{'model':db[_0x9329('0x84')],'as':'List','include':[{'model':db[_0x9329('0x73')],'as':'Contacts','where':_0x1a23c1,'limit':0x1,'order':[[_0x9329('0x78'),_0x9329('0x85')]]}]},{'model':db[_0x9329('0x86')],'as':'Applications'}]});})['then'](handleEntityNotFound(_0x170923,null))['then'](function(_0xb001a5){if(_0xb001a5&&_0xb001a5[_0x9329('0x87')]){_0x507ecd['account']=_0xb001a5;_0x507ecd[_0x9329('0x88')]=_0xb001a5[_0x9329('0x89')];_0x507ecd['list']=_0xb001a5[_0x9329('0x87')];_0x507ecd[_0x9329('0x88')]=_['orderBy'](_0x507ecd['applications'],[_0x9329('0x8a')],[_0x9329('0x8b')]);if(_0x507ecd[_0x9329('0x8c')][_0x9329('0x89')]){delete _0x507ecd['account']['Applications'];}if(_0x507ecd['account']['List']&&_0x507ecd[_0x9329('0x8c')][_0x9329('0x87')][_0x9329('0x8d')][_0x9329('0x5a')]){return _0x507ecd['account']['List'][_0x9329('0x8d')][0x0];}var _0x5f4ccf=_[_0x9329('0x1b')](_0x1f1580[_0x9329('0x5b')],{'firstName':_0x1f1580[_0x9329('0x5b')][_0x9329('0x7c')],'ListId':_0xb001a5[_0x9329('0x7a')]});_0x5f4ccf[_0x1f1580['body'][_0x9329('0x82')]]=_0x1f1580[_0x9329('0x5b')][_0x9329('0x7c')];return db[_0x9329('0x73')]['create'](_0x5f4ccf,{'fields':_0x430175,'raw':!![]});}})[_0x9329('0x23')](handleEntityNotFound(_0x170923,null))[_0x9329('0x23')](function(_0x485ed1){_0x507ecd['contact']=_0x485ed1;if(_0x485ed1){var _0x36d9b9={'ContactId':_0x485ed1['id'],'OpenchannelAccountId':_0x1f1580[_0x9329('0x57')]['id'],'from':(_0x485ed1[_0x9329('0x8e')]||'')+'\x20'+(_0x485ed1[_0x9329('0x8f')]||'')};var _0xef82e2={'OpenchannelAccountId':_0x1f1580[_0x9329('0x57')]['id'],'closed':![]};if(_0x1f1580['body'][_0x9329('0x90')]){_0xef82e2[_0x9329('0x90')]=_0x1f1580[_0x9329('0x5b')]['threadId'];return db[_0x9329('0x91')]['find']({'where':_0xef82e2})['then'](function(_0x472342){if(_0x472342){return[_0x472342,![]];}_0x36d9b9[_0x9329('0x90')]=_0x1f1580[_0x9329('0x5b')][_0x9329('0x90')];_0x36d9b9[_0x9329('0x92')]=_0x1f1580['body'][_0x9329('0x92')];return db[_0x9329('0x91')][_0x9329('0x61')](_0x36d9b9)[_0x9329('0x23')](function(_0x26671d){return[_0x26671d,!![]];});});}else{_0xef82e2[_0x9329('0x90')]=null;}_0xef82e2[_0x9329('0x93')]=_0x485ed1['id'];return db[_0x9329('0x91')]['find']({'where':_0xef82e2})[_0x9329('0x23')](function(_0x4b65d4){if(_0x4b65d4){return[_0x4b65d4,![]];}return db[_0x9329('0x91')]['create'](_0x36d9b9)[_0x9329('0x23')](function(_0x4a22bd){return[_0x4a22bd,!![]];});});}})[_0x9329('0x94')](function(_0x462acd,_0x4ee0bf){if(_0x462acd){_0x3c4228=_0x4ee0bf;if(!_0x4ee0bf){var _0x8db3eb={'from':(_0x507ecd[_0x9329('0x95')][_0x9329('0x8e')]||'')+'\x20'+(_0x507ecd[_0x9329('0x95')][_0x9329('0x8f')]||'')};if(_0x1f1580[_0x9329('0x5b')][_0x9329('0x90')]&&_0x1f1580[_0x9329('0x5b')]['messageId']&&_0x1f1580[_0x9329('0x5b')][_0x9329('0x90')]!=_0x1f1580[_0x9329('0x5b')][_0x9329('0x96')]){_0x8db3eb[_0x9329('0x90')]=_0x1f1580[_0x9329('0x5b')][_0x9329('0x96')];}return _0x462acd[_0x9329('0x63')](_0x8db3eb);}else{return _0x462acd;}}})[_0x9329('0x23')](function(_0x2a55b4){_0x507ecd['interaction']=_0x2a55b4['get']({'plain':!![]});_0x507ecd[_0x9329('0x97')][_0x9329('0x98')]=_0x3c4228;if(_0x507ecd[_0x9329('0x97')][_0x9329('0x98')]){if(_0x507ecd[_0x9329('0x8c')]['autoclose']){_0x507ecd[_0x9329('0x88')]['push']({'id':0x0,'priority':_0x507ecd[_0x9329('0x88')][_0x9329('0x5a')]+0x1,'app':_0x9329('0x99'),'appdata':_0x9329('0x9a'),'interval':_0x9329('0x9b')});}}return db['OpenchannelMessage'][_0x9329('0x61')]({'body':_0x1f1580[_0x9329('0x5b')][_0x9329('0x5b')],'OpenchannelAccountId':_0x1f1580[_0x9329('0x57')]['id'],'OpenchannelInteractionId':_0x2a55b4['id'],'direction':'in','ContactId':_0x507ecd[_0x9329('0x95')]['id'],'AttachmentId':_0x1f1580[_0x9329('0x5b')][_0x9329('0x9c')]});})['then'](function(_0x38d306){_0x507ecd['message']=_0x38d306;if(_0x507ecd[_0x9329('0x97')][_0x9329('0x9d')]){return db[_0x9329('0x9e')][_0x9329('0x64')]({'attributes':['id',_0x9329('0x3b')],'where':{'id':_0x507ecd[_0x9329('0x97')][_0x9329('0x9d')]}})[_0x9329('0x23')](function(_0x10e823){if(_0x10e823){_0x507ecd[_0x9329('0x88')][_0x9329('0x9f')]({'id':0x0,'priority':0x0,'app':_0x9329('0xa0'),'appdata':_0x10e823[_0x9329('0x3b')]+','+(_0x507ecd[_0x9329('0x8c')][_0x9329('0xa1')]||0xa),'interval':_0x9329('0x9b')});_0x507ecd['forcedOwnership']=![];}return respondWithRpcPromise(_0x9329('0xa2'),'startRouting',_0x507ecd);});}return respondWithRpcPromise(_0x9329('0xa2'),_0x9329('0xa3'),_0x507ecd);})[_0x9329('0x23')](function(_0x10fba8){respondWithRpcPromise(_0x9329('0xa4'),_0x9329('0xa4'),{'event':_0x9329('0x71'),'message':_0x10fba8},client9002);return _0x10fba8;})['then'](respondWithResult(_0x170923,null))[_0x9329('0x2c')](handleError(_0x170923,null));};exports[_0x9329('0xa5')]=function(_0x5df2da,_0x49b8ab){var _0x542ebd=_0x5df2da[_0x9329('0x57')]['id'];var _0xe22218=_0x5df2da[_0x9329('0x5b')];var _0x55a40f=0xc8;var _0x169f54=null;return db['sequelize']['transaction']({'isolationLevel':db['sequelize'][_0x9329('0xa6')][_0x9329('0xa7')]['READ_COMMITTED']},function(_0x3d336c){return db[_0x9329('0x40')][_0x9329('0x6a')]({'where':{'id':_0x542ebd},'transaction':_0x3d336c})[_0x9329('0x23')](function(_0xd18a56){if(_0xd18a56){return db['OpenchannelApplication'][_0x9329('0x35')]({'where':{'OpenchannelAccountId':_0x542ebd},'transaction':_0x3d336c})[_0x9329('0x23')](function(){var _0x4b5d3e=_[_0x9329('0x43')](_0xe22218,function(_0x4b9d47){_0x4b9d47['OpenchannelAccountId']=_0x542ebd;return _0x4b9d47;});return db[_0x9329('0x86')][_0x9329('0xa8')](_0x4b5d3e,{'transaction':_0x3d336c});});}else{_0x55a40f=0x194;_0x169f54=[];}});})[_0x9329('0x23')](function(){if(_0x55a40f!==0x194){return db[_0x9329('0x86')]['findAndCountAll']({'where':{'OpenchannelAccountId':_0x542ebd},'order':_0x9329('0x8a')})[_0x9329('0x23')](function(_0x4d8594){_0x169f54=_0x4d8594;});}})[_0x9329('0x2c')](function(_0x45e250){_0x55a40f=0x1f4;logger[_0x9329('0x28')](_0x45e250[_0x9329('0xa9')]);if(_0x45e250['name']){delete _0x45e250[_0x9329('0x3b')];}_0x169f54=_0x45e250;})['finally'](function(){if(_0x169f54===null){_0x49b8ab[_0x9329('0x3a')](_0x55a40f);}else{if(_0x55a40f===0x1f4){_0x49b8ab[_0x9329('0x2d')](_0x55a40f)[_0x9329('0x3c')](_0x169f54);}else{_0x49b8ab[_0x9329('0x2d')](_0x55a40f)[_0x9329('0xaa')](_0x169f54);}}});};exports[_0x9329('0xab')]=function(_0x25dd40,_0x583027,_0xa89675){var _0x5745e0={};var _0x1e1987={};var _0x1f73fd;var _0x4cf7e6;return db[_0x9329('0x40')][_0x9329('0x6a')]({'where':{'id':_0x25dd40['params']['id']}})['then'](handleEntityNotFound(_0x583027,null))[_0x9329('0x23')](function(_0x1d092c){if(_0x1d092c){_0x1f73fd=_0x1d092c;_0x1e1987[_0x9329('0x42')]=_[_0x9329('0x58')](db[_0x9329('0x86')][_0x9329('0x59')]);_0x1e1987['query']=_[_0x9329('0x58')](_0x25dd40[_0x9329('0x44')]);_0x1e1987[_0x9329('0x45')]=_[_0x9329('0x46')](_0x1e1987[_0x9329('0x42')],_0x1e1987[_0x9329('0x44')]);_0x5745e0[_0x9329('0x47')]=_[_0x9329('0x46')](_0x1e1987[_0x9329('0x42')],qs[_0x9329('0x48')](_0x25dd40[_0x9329('0x44')]['fields']));_0x5745e0[_0x9329('0x47')]=_0x5745e0[_0x9329('0x47')][_0x9329('0x5a')]?_0x5745e0[_0x9329('0x47')]:_0x1e1987[_0x9329('0x42')];_0x5745e0['order']=qs['sort'](_0x25dd40[_0x9329('0x44')]['sort']);_0x5745e0[_0x9329('0x4d')]=qs[_0x9329('0x45')](_['pick'](_0x25dd40[_0x9329('0x44')],_0x1e1987['filters']));if(_0x25dd40['query'][_0x9329('0x4f')]){_0x5745e0[_0x9329('0x4d')]=_[_0x9329('0x51')](_0x5745e0[_0x9329('0x4d')],{'$or':_['map'](_0x5745e0['attributes'],function(_0x34483b){var _0x31f142={};_0x31f142[_0x34483b]={'$like':'%'+_0x25dd40[_0x9329('0x44')][_0x9329('0x4f')]+'%'};return _0x31f142;})});}_0x5745e0=_[_0x9329('0x51')]({},_0x5745e0,_0x25dd40[_0x9329('0x52')]);return _0x1f73fd[_0x9329('0xab')](_0x5745e0);}})[_0x9329('0x23')](function(_0x19b01d){if(_0x19b01d){_0x4cf7e6=_0x19b01d[_0x9329('0x5a')];if(!_0x25dd40[_0x9329('0x44')][_0x9329('0x49')]('nolimit')){_0x5745e0[_0x9329('0x2f')]=qs['limit'](_0x25dd40['query'][_0x9329('0x2f')]);_0x5745e0[_0x9329('0x2e')]=qs[_0x9329('0x2e')](_0x25dd40[_0x9329('0x44')][_0x9329('0x2e')]);}return _0x1f73fd[_0x9329('0xab')](_0x5745e0);}})['then'](function(_0x43234a){if(_0x43234a){return _0x43234a?{'count':_0x4cf7e6,'rows':_0x43234a}:null;}})[_0x9329('0x23')](respondWithResult(_0x583027,null))['catch'](handleError(_0x583027,null));};exports[_0x9329('0xac')]=function(_0x4e1d1a,_0x457ede,_0x24ed0d){var _0xb99c23={'raw':![],'where':{}};var _0x5a2a67={};var _0xe44b62={'count':0x0,'rows':[]};return db['OpenchannelAccount'][_0x9329('0x6a')]({'where':{'id':_0x4e1d1a[_0x9329('0x57')]['id']}})[_0x9329('0x23')](handleEntityNotFound(_0x457ede,null))[_0x9329('0x23')](function(_0x369ba6){if(_0x369ba6){_0x5a2a67['model']=_[_0x9329('0x58')](db[_0x9329('0x91')]['rawAttributes']);_0x5a2a67[_0x9329('0x44')]=_[_0x9329('0x58')](_0x4e1d1a[_0x9329('0x44')]);_0x5a2a67[_0x9329('0x45')]=_[_0x9329('0x46')](_0x5a2a67[_0x9329('0x42')],_0x5a2a67[_0x9329('0x44')]);_0xb99c23[_0x9329('0x47')]=_[_0x9329('0x46')](_0x5a2a67[_0x9329('0x42')],qs[_0x9329('0x48')](_0x4e1d1a[_0x9329('0x44')]['fields']));_0xb99c23[_0x9329('0x47')]=_0xb99c23['attributes'][_0x9329('0x5a')]?_0xb99c23['attributes']:_0x5a2a67[_0x9329('0x42')];if(!_0x4e1d1a['query']['hasOwnProperty'](_0x9329('0x4a'))){_0xb99c23['limit']=qs['limit'](_0x4e1d1a['query'][_0x9329('0x2f')]);_0xb99c23[_0x9329('0x2e')]=qs[_0x9329('0x2e')](_0x4e1d1a['query']['offset']);}_0xb99c23[_0x9329('0x4b')]=qs['sort'](_0x4e1d1a[_0x9329('0x44')][_0x9329('0x4c')]);_0xb99c23['where']=qs[_0x9329('0x45')](_[_0x9329('0x4e')](_0x4e1d1a[_0x9329('0x44')],_0x5a2a67['filters']));_0xb99c23[_0x9329('0x4d')][_0x9329('0x67')]=_0x369ba6['id'];if(_0x4e1d1a['query'][_0x9329('0x4f')]){_0xb99c23[_0x9329('0x4d')]=_[_0x9329('0x51')](_0xb99c23['where'],{'$or':_[_0x9329('0x43')](_0xb99c23[_0x9329('0x47')],function(_0x1716f2){var _0x5c932d={};_0x5c932d[_0x1716f2]={'$like':'%'+_0x4e1d1a['query'][_0x9329('0x4f')]+'%'};return _0x5c932d;})});}_0xb99c23=_['merge']({},_0xb99c23,_0x4e1d1a['options']);return db[_0x9329('0x91')][_0x9329('0x31')]({'where':_0xb99c23[_0x9329('0x4d')]})[_0x9329('0x23')](function(_0x4f58cd){_0xe44b62[_0x9329('0x31')]=_0x4f58cd;if(_0x4e1d1a['query'][_0x9329('0x53')]){_0xb99c23[_0x9329('0x54')]=[{'model':db[_0x9329('0x73')],'as':_0x9329('0xad'),'required':![]},{'model':db[_0x9329('0x9e')],'as':'Owner','attributes':['name',_0x9329('0xae'),_0x9329('0xaf')],'required':![]},{'model':db['Tag'],'as':_0x9329('0xb0'),'attributes':['id',_0x9329('0x3b'),'color'],'where':_0x4e1d1a[_0x9329('0x44')][_0x9329('0xb1')]?{'id':_0x4e1d1a['query'][_0x9329('0xb1')]}:undefined,'required':_0x4e1d1a['query'][_0x9329('0xb1')]?!![]:![]}];}return db[_0x9329('0x91')]['findAll'](_0xb99c23);})[_0x9329('0x23')](function(_0x2743e2){_0xe44b62[_0x9329('0x55')]=_0x2743e2;return _0xe44b62;});}})[_0x9329('0x23')](respondWithFilteredResult(_0x457ede,_0xb99c23))[_0x9329('0x2c')](handleError(_0x457ede,null));};exports['addAgents']=function(_0x590d15,_0x1dee9f,_0x21affc){return db[_0x9329('0x40')]['find']({'where':{'id':_0x590d15['params']['id']}})[_0x9329('0x23')](handleEntityNotFound(_0x1dee9f,null))['then'](function(_0x382108){if(_0x382108){return _0x382108[_0x9329('0xb2')](_0x590d15['body']['ids'],_[_0x9329('0xb3')](_0x590d15[_0x9329('0x5b')],[_0x9329('0xb4'),'id'])||{})[_0x9329('0x94')](function(_0x2a949d){for(var _0x23fdbd=0x0;_0x23fdbd<_0x590d15[_0x9329('0x5b')][_0x9329('0xb4')][_0x9329('0x5a')];_0x23fdbd+=0x1){socket[_0x9329('0xb5')]('userOpenchannelAccount:save',{'UserId':Number(_0x590d15['body']['ids'][_0x23fdbd]),'OpenchannelAccountId':Number(_0x590d15[_0x9329('0x57')]['id'])});}return _0x2a949d;});}})[_0x9329('0x23')](respondWithResult(_0x1dee9f,null))[_0x9329('0x2c')](handleError(_0x1dee9f,null));};exports[_0x9329('0xb6')]=function(_0x5d8b4e,_0xd47d67,_0x2ce1ce){return db[_0x9329('0x40')]['find']({'where':{'id':_0x5d8b4e['params']['id']}})[_0x9329('0x23')](handleEntityNotFound(_0xd47d67,null))[_0x9329('0x23')](function(_0x4d5735){if(_0x4d5735){return _0x4d5735['removeAgents'](_0x5d8b4e[_0x9329('0x44')][_0x9329('0xb4')])['then'](function(){if(_['isArray'](_0x5d8b4e[_0x9329('0x44')][_0x9329('0xb4')])){for(var _0x46f959=0x0;_0x46f959<_0x5d8b4e['query']['ids'][_0x9329('0x5a')];_0x46f959+=0x1){socket[_0x9329('0xb5')]('userOpenchannelAccount:remove',{'UserId':Number(_0x5d8b4e[_0x9329('0x44')][_0x9329('0xb4')][_0x46f959]),'OpenchannelAccountId':Number(_0x5d8b4e[_0x9329('0x57')]['id'])});}}else{socket['emit'](_0x9329('0xb7'),{'UserId':Number(_0x5d8b4e['query'][_0x9329('0xb4')]),'OpenchannelAccountId':Number(_0x5d8b4e[_0x9329('0x57')]['id'])});}});}})['then'](respondWithStatusCode(_0xd47d67,null))[_0x9329('0x2c')](handleError(_0xd47d67,null));};exports[_0x9329('0xb8')]=function(_0x1fe859,_0x1e495e,_0x2cc87f){var _0x4dcc48={};var _0x91f222={};var _0x4b8cd0;var _0x248142;return db['OpenchannelAccount'][_0x9329('0x6a')]({'where':{'id':_0x1fe859[_0x9329('0x57')]['id']}})['then'](handleEntityNotFound(_0x1e495e,null))[_0x9329('0x23')](function(_0x566549){if(_0x566549){_0x4b8cd0=_0x566549;_0x91f222['model']=_[_0x9329('0x58')](db[_0x9329('0x9e')]['rawAttributes']);_0x91f222[_0x9329('0x44')]=_['keys'](_0x1fe859['query']);_0x91f222['filters']=_['intersection'](_0x91f222[_0x9329('0x42')],_0x91f222[_0x9329('0x44')]);_0x4dcc48[_0x9329('0x47')]=_[_0x9329('0x46')](_0x91f222[_0x9329('0x42')],qs[_0x9329('0x48')](_0x1fe859[_0x9329('0x44')]['fields']));_0x4dcc48[_0x9329('0x47')]=_0x4dcc48[_0x9329('0x47')][_0x9329('0x5a')]?_0x4dcc48['attributes']:_0x91f222[_0x9329('0x42')];_0x4dcc48[_0x9329('0x4b')]=qs['sort'](_0x1fe859[_0x9329('0x44')]['sort']);_0x4dcc48[_0x9329('0x4d')]=qs[_0x9329('0x45')](_['pick'](_0x1fe859['query'],_0x91f222['filters']));if(_0x1fe859[_0x9329('0x44')][_0x9329('0x4f')]){_0x4dcc48[_0x9329('0x4d')]=_[_0x9329('0x51')](_0x4dcc48['where'],{'$or':_[_0x9329('0x43')](_0x4dcc48[_0x9329('0x47')],function(_0xbf9bf){var _0x1941df={};_0x1941df[_0xbf9bf]={'$like':'%'+_0x1fe859[_0x9329('0x44')][_0x9329('0x4f')]+'%'};return _0x1941df;})});}_0x4dcc48=_[_0x9329('0x51')]({},_0x4dcc48,_0x1fe859['options']);return _0x4b8cd0[_0x9329('0xb8')](_0x4dcc48);}})['then'](function(_0x4710b8){if(_0x4710b8){_0x248142=_0x4710b8[_0x9329('0x5a')];if(!_0x1fe859[_0x9329('0x44')][_0x9329('0x49')](_0x9329('0x4a'))){_0x4dcc48[_0x9329('0x2f')]=qs[_0x9329('0x2f')](_0x1fe859[_0x9329('0x44')][_0x9329('0x2f')]);_0x4dcc48[_0x9329('0x2e')]=qs[_0x9329('0x2e')](_0x1fe859['query'][_0x9329('0x2e')]);}return _0x4b8cd0[_0x9329('0xb8')](_0x4dcc48);}})[_0x9329('0x23')](function(_0x24be38){if(_0x24be38){return _0x24be38?{'count':_0x248142,'rows':_0x24be38}:null;}})[_0x9329('0x23')](respondWithResult(_0x1e495e,null))[_0x9329('0x2c')](handleError(_0x1e495e,null));};exports[_0x9329('0x3c')]=function(_0x381def,_0x1c21c8,_0x1637c3){var _0x2b1f4e,_0x5b7ad4,_0x5d4061;if(_['isNil'](_0x381def[_0x9329('0x5b')][_0x9329('0x5b')])||_0x381def[_0x9329('0x5b')][_0x9329('0x5b')]===''){throw new db[(_0x9329('0x7e'))][(_0x9329('0x74'))](_0x9329('0x7f'));}if(_[_0x9329('0x7b')](_0x381def['body']['to'])){}_0x2b1f4e=_0x381def['body']['to'];return db[_0x9329('0x40')]['findOne']({'where':{'id':_0x381def[_0x9329('0x57')]['id']}})[_0x9329('0x23')](handleEntityNotFound(_0x1c21c8,null))[_0x9329('0x23')](function(_0x489dbd){if(_0x489dbd){return db[_0x9329('0x40')][_0x9329('0x64')]({'where':{'id':_0x489dbd['id']},'include':[{'model':db[_0x9329('0x84')],'as':'List','include':[{'model':db['CmContact'],'as':_0x9329('0x8d'),'where':{[_0x489dbd[_0x9329('0x82')]]:_0x2b1f4e},'limit':0x1,'order':[['updatedAt','DESC']]}]}]})[_0x9329('0x23')](handleEntityNotFound(_0x1c21c8,null))[_0x9329('0x23')](function(_0x15fe01){if(_0x15fe01&&_0x15fe01['List']){_0x5b7ad4=_0x15fe01[_0x9329('0x36')]({'plain':!![]});if(_0x5b7ad4[_0x9329('0x87')]&&_0x5b7ad4['List'][_0x9329('0x8d')]['length']){return _0x5b7ad4[_0x9329('0x87')][_0x9329('0x8d')][0x0];}return db[_0x9329('0x73')][_0x9329('0x61')](_[_0x9329('0x1b')](_0x381def['body'],{'firstName':_0x2b1f4e,[_0x15fe01[_0x9329('0x82')]]:_0x2b1f4e,'phone':_0x2b1f4e,'ListId':_0x5b7ad4[_0x9329('0x7a')]}));}})['then'](handleEntityNotFound(_0x1c21c8,null))[_0x9329('0x23')](function(_0x2e5523){if(_0x2e5523){_0x5d4061=_0x2e5523;return db[_0x9329('0x91')][_0x9329('0x64')]({'where':{'ContactId':_0x5d4061['id'],'closed':![],'OpenchannelAccountId':_0x5b7ad4['id']}})[_0x9329('0x23')](function(_0x2e324d){if(_0x2e324d){return[_0x2e324d,![]];}return db[_0x9329('0x91')][_0x9329('0x61')]({'UserId':_0x381def[_0x9329('0x5c')]['id'],'ContactId':_0x5d4061['id'],'OpenchannelAccountId':_0x5b7ad4['id'],'lastMsgDirection':_0x9329('0xb9'),'firstMsgDirection':_0x9329('0xb9'),'Messages':[_[_0x9329('0x51')](_0x381def[_0x9329('0x5b')],{'read':![],'body':_0x381def[_0x9329('0x5b')][_0x9329('0x5b')],'OpenchannelAccountId':_0x5b7ad4['id'],'UserId':_0x381def[_0x9329('0x5c')]['id'],'ContactId':_0x5d4061['id']})]},{'include':[{'model':db['OpenchannelMessage'],'as':'Messages'}]})['then'](function(_0x1eaebd){return[_0x1eaebd,!![]];});});}})[_0x9329('0x94')](function(_0x384bc1,_0x4b8993){if(_0x4b8993){return _0x384bc1;}return db[_0x9329('0xba')][_0x9329('0x61')](_[_0x9329('0x51')](_0x381def[_0x9329('0x5b')],{'read':![],'body':_0x381def['body'][_0x9329('0x5b')],'OpenchannelAccountId':_0x5b7ad4['id'],'OpenchannelInteractionId':_0x384bc1['id'],'UserId':_0x381def[_0x9329('0x5c')]['id'],'ContactId':_0x5d4061['id']}))[_0x9329('0x23')](function(_0x56c211){_0x384bc1[_0x9329('0xbb')]['Messages']=[];_0x384bc1[_0x9329('0xbb')][_0x9329('0xbc')][_0x9329('0xbd')](_0x56c211['dataValues']);return _0x384bc1;});});}})[_0x9329('0x23')](respondWithResult(_0x1c21c8,null))[_0x9329('0x2c')](handleError(_0x1c21c8,null));};
\ No newline at end of file
index 794c374..15a3890 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0x9348=['../../mysqldb','OpenchannelAccount','setMaxListeners','save','remove','emit','hasOwnProperty','hook','events'];(function(_0x324661,_0x3fb798){var _0x135bed=function(_0x15aed6){while(--_0x15aed6){_0x324661['push'](_0x324661['shift']());}};_0x135bed(++_0x3fb798);}(_0x9348,0x10d));var _0x8934=function(_0x59089e,_0x4862f1){_0x59089e=_0x59089e-0x0;var _0x4938db=_0x9348[_0x59089e];return _0x4938db;};'use strict';var EventEmitter=require(_0x8934('0x0'));var OpenchannelAccount=require(_0x8934('0x1'))['db'][_0x8934('0x2')];var OpenchannelAccountEvents=new EventEmitter();OpenchannelAccountEvents[_0x8934('0x3')](0x0);var events={'afterCreate':_0x8934('0x4'),'afterUpdate':'update','afterDestroy':_0x8934('0x5')};function emitEvent(_0x35da0b){return function(_0x5f34d7,_0x34f94c,_0x923aa3){OpenchannelAccountEvents[_0x8934('0x6')](_0x35da0b+':'+_0x5f34d7['id'],_0x5f34d7);OpenchannelAccountEvents[_0x8934('0x6')](_0x35da0b,_0x5f34d7);_0x923aa3(null);};}for(var e in events){if(events[_0x8934('0x7')](e)){var event=events[e];OpenchannelAccount[_0x8934('0x8')](e,emitEvent(event));}}module['exports']=OpenchannelAccountEvents;
\ No newline at end of file
index 4a83a29..e9e46c4 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(_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
+var _0xa9e0=['../../config/environment','./openchannelAccount.attributes','exports','define','OpenchannelAccount','lodash','util','../../config/logger','bluebird','path','rimraf'];(function(_0x15617d,_0x2acbcc){var _0x4afd59=function(_0x4a8a2a){while(--_0x4a8a2a){_0x15617d['push'](_0x15617d['shift']());}};_0x4afd59(++_0x2acbcc);}(_0xa9e0,0x123));var _0x0a9e=function(_0x2b4411,_0x2625ed){_0x2b4411=_0x2b4411-0x0;var _0x8e41ef=_0xa9e0[_0x2b4411];return _0x8e41ef;};'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 7f0d4b5..1134bbc 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0x9c00=['then','info','OpenchannelAccount,\x20%s,\x20%s','request\x20sent','debug','OpenchannelAccount,\x20%s,\x20%s,\x20%s','stringify','error','code','message','catch','lodash','util','randomstring','ioredis','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','redis','defaults','localhost','socket.io-emitter','./openchannelAccount.socket','register','request'];(function(_0x491da8,_0x46ed6a){var _0x1666c4=function(_0x13f5b4){while(--_0x13f5b4){_0x491da8['push'](_0x491da8['shift']());}};_0x1666c4(++_0x46ed6a);}(_0x9c00,0x1a0));var _0x09c0=function(_0x7f82c7,_0x2bec9d){_0x7f82c7=_0x7f82c7-0x0;var _0xccd46=_0x9c00[_0x7f82c7];return _0xccd46;};'use strict';var _=require(_0x09c0('0x0'));var util=require(_0x09c0('0x1'));var moment=require('moment');var BPromise=require('bluebird');var rs=require(_0x09c0('0x2'));var fs=require('fs');var Redis=require(_0x09c0('0x3'));var db=require('../../mysqldb')['db'];var utils=require(_0x09c0('0x4'));var logger=require(_0x09c0('0x5'))(_0x09c0('0x6'));var config=require(_0x09c0('0x7'));var jayson=require(_0x09c0('0x8'));var client=jayson['client']['http']({'port':0x232a});config[_0x09c0('0x9')]=_[_0x09c0('0xa')](config[_0x09c0('0x9')],{'host':_0x09c0('0xb'),'port':0x18eb});var socket=require(_0x09c0('0xc'))(new Redis(config['redis']));require(_0x09c0('0xd'))[_0x09c0('0xe')](socket);function respondWithRpcPromise(_0xa20b5c,_0x1feb1d,_0x27a33c){return new BPromise(function(_0x1e16f4,_0x1fec4f){return client[_0x09c0('0xf')](_0xa20b5c,_0x27a33c)[_0x09c0('0x10')](function(_0x4523ea){logger[_0x09c0('0x11')](_0x09c0('0x12'),_0x1feb1d,_0x09c0('0x13'));logger[_0x09c0('0x14')](_0x09c0('0x15'),_0x1feb1d,_0x09c0('0x13'),JSON[_0x09c0('0x16')](_0x4523ea));if(_0x4523ea[_0x09c0('0x17')]){if(_0x4523ea[_0x09c0('0x17')][_0x09c0('0x18')]===0x1f4){logger[_0x09c0('0x17')](_0x09c0('0x12'),_0x1feb1d,_0x4523ea[_0x09c0('0x17')][_0x09c0('0x19')]);return _0x1fec4f(_0x4523ea[_0x09c0('0x17')][_0x09c0('0x19')]);}logger['error']('OpenchannelAccount,\x20%s,\x20%s',_0x1feb1d,_0x4523ea['error'][_0x09c0('0x19')]);return _0x1e16f4(_0x4523ea[_0x09c0('0x17')][_0x09c0('0x19')]);}else{logger[_0x09c0('0x11')]('OpenchannelAccount,\x20%s,\x20%s',_0x1feb1d,_0x09c0('0x13'));_0x1e16f4(_0x4523ea['result']['message']);}})[_0x09c0('0x1a')](function(_0x50fccc){logger[_0x09c0('0x17')](_0x09c0('0x12'),_0x1feb1d,_0x50fccc);_0x1fec4f(_0x50fccc);});});}
\ No newline at end of file
index 46a0975..66164eb 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0x584a=['./openchannelAccount.events','save','update','length'];(function(_0x3c9fea,_0x3c74d8){var _0x39dc79=function(_0x599eb3){while(--_0x599eb3){_0x3c9fea['push'](_0x3c9fea['shift']());}};_0x39dc79(++_0x3c74d8);}(_0x584a,0x1c0));var _0xa584=function(_0x3b6648,_0x2d723a){_0x3b6648=_0x3b6648-0x0;var _0x5a0a0d=_0x584a[_0x3b6648];return _0x5a0a0d;};'use strict';var OpenchannelAccountEvents=require(_0xa584('0x0'));var events=[_0xa584('0x1'),'remove',_0xa584('0x2')];function createListener(_0x244396,_0x3b03cf){return function(_0x1a6922){_0x3b03cf['emit'](_0x244396,_0x1a6922);};}function removeListener(_0x504bde,_0x4f969f){return function(){OpenchannelAccountEvents['removeListener'](_0x504bde,_0x4f969f);};}exports['register']=function(_0x4a36d6){for(var _0x263112=0x0,_0x57a475=events[_0xa584('0x3')];_0x263112<_0x57a475;_0x263112++){var _0x1fada0=events[_0x263112];var _0x56be83=createListener('openchannelAccount:'+_0x1fada0,_0x4a36d6);OpenchannelAccountEvents['on'](_0x1fada0,_0x56be83);}};
\ No newline at end of file
index 6f1558a..6aa4311 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0x20a8=['put','update','delete','destroy','exports','path','connect-timeout','Router','fs-extra','../../components/auth/service','../../components/interaction/service','./openchannelApplication.controller','get','isAuthenticated','index','/:id','show'];(function(_0x2a2ec6,_0x11b751){var _0x47a928=function(_0x3e3d6f){while(--_0x3e3d6f){_0x2a2ec6['push'](_0x2a2ec6['shift']());}};_0x47a928(++_0x11b751);}(_0x20a8,0x16a));var _0x820a=function(_0x59c1d9,_0x22d515){_0x59c1d9=_0x59c1d9-0x0;var _0x2a34b6=_0x20a8[_0x59c1d9];return _0x2a34b6;};'use strict';var multer=require('multer');var util=require('util');var path=require(_0x820a('0x0'));var timeout=require(_0x820a('0x1'));var express=require('express');var router=express[_0x820a('0x2')]();var fs_extra=require(_0x820a('0x3'));var auth=require(_0x820a('0x4'));var interaction=require(_0x820a('0x5'));var config=require('../../config/environment');var controller=require(_0x820a('0x6'));router[_0x820a('0x7')]('/',auth[_0x820a('0x8')](),controller[_0x820a('0x9')]);router['get'](_0x820a('0xa'),auth[_0x820a('0x8')](),controller[_0x820a('0xb')]);router['post']('/',auth[_0x820a('0x8')](),controller['create']);router[_0x820a('0xc')](_0x820a('0xa'),auth[_0x820a('0x8')](),controller[_0x820a('0xd')]);router[_0x820a('0xe')](_0x820a('0xa'),auth[_0x820a('0x8')](),controller[_0x820a('0xf')]);module[_0x820a('0x10')]=router;
\ No newline at end of file
index 100cb4a..236e7e8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0x17c3=['STRING','TEXT','sequelize','INTEGER'];(function(_0x534ae9,_0x5735c1){var _0x2dc1e7=function(_0x58048a){while(--_0x58048a){_0x534ae9['push'](_0x534ae9['shift']());}};_0x2dc1e7(++_0x5735c1);}(_0x17c3,0x12e));var _0x317c=function(_0x3c2168,_0x55d031){_0x3c2168=_0x3c2168-0x0;var _0x2ccade=_0x17c3[_0x3c2168];return _0x2ccade;};'use strict';var Sequelize=require(_0x317c('0x0'));module['exports']={'priority':{'type':Sequelize[_0x317c('0x1')],'allowNull':![]},'app':{'type':Sequelize[_0x317c('0x2')],'allowNull':![],'defaultValue':'noop'},'appdata':{'type':Sequelize[_0x317c('0x3')]()},'description':{'type':Sequelize['STRING']},'interval':{'type':Sequelize[_0x317c('0x2')],'defaultValue':'*,*,*,*'}};
\ No newline at end of file
index d7005df..137d3ab 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0x654f=['../../config/logger','api','../../mysqldb','sendStatus','status','end','undefined','count','offset','limit','set','Content-Range','json','reject','save','update','destroy','then','error','name','send','index','map','OpenchannelApplication','type','key','model','query','keys','attributes','fields','length','hasOwnProperty','order','sort','where','filters','filter','VIRTUAL','options','includeAll','include','findAll','rows','catch','show','rawAttributes','intersection','merge','find','create','body','params','eml-format','rimraf','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','ejs','lodash','squel','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware'];(function(_0x4bed75,_0x211cc7){var _0x2dd8e8=function(_0x6369c7){while(--_0x6369c7){_0x4bed75['push'](_0x4bed75['shift']());}};_0x2dd8e8(++_0x211cc7);}(_0x654f,0x11c));var _0xf654=function(_0x28bfbd,_0x11d52d){_0x28bfbd=_0x28bfbd-0x0;var _0x3152aa=_0x654f[_0x28bfbd];return _0x3152aa;};'use strict';var emlformat=require(_0xf654('0x0'));var rimraf=require(_0xf654('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0xf654('0x2'));var rp=require(_0xf654('0x3'));var moment=require(_0xf654('0x4'));var BPromise=require(_0xf654('0x5'));var Mustache=require(_0xf654('0x6'));var util=require(_0xf654('0x7'));var path=require(_0xf654('0x8'));var sox=require(_0xf654('0x9'));var csv=require(_0xf654('0xa'));var ejs=require(_0xf654('0xb'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0xf654('0xc'));var squel=require(_0xf654('0xd'));var crypto=require(_0xf654('0xe'));var jsforce=require(_0xf654('0xf'));var deskjs=require(_0xf654('0x10'));var toCsv=require(_0xf654('0xa'));var querystring=require(_0xf654('0x11'));var Papa=require(_0xf654('0x12'));var Redis=require(_0xf654('0x13'));var authService=require(_0xf654('0x14'));var qs=require(_0xf654('0x15'));var as=require(_0xf654('0x16'));var hardwareService=require(_0xf654('0x17'));var logger=require(_0xf654('0x18'))(_0xf654('0x19'));var utils=require('../../config/utils');var config=require('../../config/environment');var licenseUtil=require('../../config/license/util');var db=require(_0xf654('0x1a'))['db'];function respondWithStatusCode(_0x395b34,_0x5dae3e){_0x5dae3e=_0x5dae3e||0xcc;return function(_0x519cfb){if(_0x519cfb){return _0x395b34[_0xf654('0x1b')](_0x5dae3e);}return _0x395b34[_0xf654('0x1c')](_0x5dae3e)[_0xf654('0x1d')]();};}function respondWithResult(_0x145e70,_0x28d36e){_0x28d36e=_0x28d36e||0xc8;return function(_0x17b941){if(_0x17b941){return _0x145e70[_0xf654('0x1c')](_0x28d36e)['json'](_0x17b941);}};}function respondWithFilteredResult(_0xdfa70,_0x2492af){return function(_0x5f2735){if(_0x5f2735){var _0x53fbdc=typeof _0x2492af['offset']===_0xf654('0x1e')&&typeof _0x2492af['limit']==='undefined';var _0x2a6e43=_0x5f2735[_0xf654('0x1f')];var _0x23a8a1=_0x53fbdc?0x0:_0x2492af[_0xf654('0x20')];var _0x9b6b93=_0x53fbdc?_0x5f2735[_0xf654('0x1f')]:_0x2492af[_0xf654('0x20')]+_0x2492af[_0xf654('0x21')];var _0x51903c;if(_0x9b6b93>=_0x2a6e43){_0x9b6b93=_0x2a6e43;_0x51903c=0xc8;}else{_0x51903c=0xce;}_0xdfa70[_0xf654('0x1c')](_0x51903c);return _0xdfa70[_0xf654('0x22')](_0xf654('0x23'),_0x23a8a1+'-'+_0x9b6b93+'/'+_0x2a6e43)[_0xf654('0x24')](_0x5f2735);}return null;};}function patchUpdates(_0x47ce8d){return function(_0x453966){try{jsonpatch['apply'](_0x453966,_0x47ce8d,!![]);}catch(_0x3ccb49){return BPromise[_0xf654('0x25')](_0x3ccb49);}return _0x453966[_0xf654('0x26')]();};}function saveUpdates(_0x46cce0,_0x18bf08){return function(_0x3bef51){if(_0x3bef51){return _0x3bef51[_0xf654('0x27')](_0x46cce0)['then'](function(_0x4b88cd){return _0x4b88cd;});}return null;};}function removeEntity(_0x41273b,_0x477502){return function(_0x16fadd){if(_0x16fadd){return _0x16fadd[_0xf654('0x28')]()[_0xf654('0x29')](function(){_0x41273b[_0xf654('0x1c')](0xcc)[_0xf654('0x1d')]();});}};}function handleEntityNotFound(_0x39614d,_0xea55cc){return function(_0x1da838){if(!_0x1da838){_0x39614d['sendStatus'](0x194);}return _0x1da838;};}function handleError(_0x333a08,_0x3fe2d5){_0x3fe2d5=_0x3fe2d5||0x1f4;return function(_0x2155c5){logger[_0xf654('0x2a')](_0x2155c5['stack']);if(_0x2155c5[_0xf654('0x2b')]){delete _0x2155c5[_0xf654('0x2b')];}_0x333a08[_0xf654('0x1c')](_0x3fe2d5)[_0xf654('0x2c')](_0x2155c5);};}exports[_0xf654('0x2d')]=function(_0x4a402b,_0x560cdf){var _0x471c66={},_0x2778ed={},_0x2c4436={'count':0x0,'rows':[]};var _0x4e9031=_[_0xf654('0x2e')](db[_0xf654('0x2f')]['rawAttributes'],function(_0x173999){return{'name':_0x173999['fieldName'],'type':_0x173999[_0xf654('0x30')][_0xf654('0x31')]};});_0x2778ed[_0xf654('0x32')]=_[_0xf654('0x2e')](_0x4e9031,_0xf654('0x2b'));_0x2778ed[_0xf654('0x33')]=_[_0xf654('0x34')](_0x4a402b['query']);_0x2778ed['filters']=_['intersection'](_0x2778ed[_0xf654('0x32')],_0x2778ed[_0xf654('0x33')]);_0x471c66[_0xf654('0x35')]=_['intersection'](_0x2778ed[_0xf654('0x32')],qs[_0xf654('0x36')](_0x4a402b['query'][_0xf654('0x36')]));_0x471c66[_0xf654('0x35')]=_0x471c66[_0xf654('0x35')][_0xf654('0x37')]?_0x471c66[_0xf654('0x35')]:_0x2778ed['model'];if(!_0x4a402b['query'][_0xf654('0x38')]('nolimit')){_0x471c66['limit']=qs[_0xf654('0x21')](_0x4a402b[_0xf654('0x33')]['limit']);_0x471c66['offset']=qs[_0xf654('0x20')](_0x4a402b[_0xf654('0x33')][_0xf654('0x20')]);}_0x471c66[_0xf654('0x39')]=qs[_0xf654('0x3a')](_0x4a402b[_0xf654('0x33')][_0xf654('0x3a')]);_0x471c66[_0xf654('0x3b')]=qs[_0xf654('0x3c')](_['pick'](_0x4a402b[_0xf654('0x33')],_0x2778ed[_0xf654('0x3c')]),_0x4e9031);if(_0x4a402b[_0xf654('0x33')][_0xf654('0x3d')]){_0x471c66[_0xf654('0x3b')]=_['merge'](_0x471c66[_0xf654('0x3b')],{'$or':_[_0xf654('0x2e')](_0x4e9031,function(_0x19259f){if(_0x19259f[_0xf654('0x30')]!==_0xf654('0x3e')){var _0x7163c5={};_0x7163c5[_0x19259f[_0xf654('0x2b')]]={'$like':'%'+_0x4a402b['query'][_0xf654('0x3d')]+'%'};return _0x7163c5;}})});}_0x471c66=_['merge']({},_0x471c66,_0x4a402b[_0xf654('0x3f')]);var _0x1cbcdc={'where':_0x471c66[_0xf654('0x3b')]};return db[_0xf654('0x2f')]['count'](_0x1cbcdc)[_0xf654('0x29')](function(_0x149f76){_0x2c4436[_0xf654('0x1f')]=_0x149f76;if(_0x4a402b[_0xf654('0x33')][_0xf654('0x40')]){_0x471c66[_0xf654('0x41')]=[{'all':!![]}];}return db[_0xf654('0x2f')][_0xf654('0x42')](_0x471c66);})[_0xf654('0x29')](function(_0x4c1363){_0x2c4436[_0xf654('0x43')]=_0x4c1363;return _0x2c4436;})[_0xf654('0x29')](respondWithFilteredResult(_0x560cdf,_0x471c66))[_0xf654('0x44')](handleError(_0x560cdf,null));};exports[_0xf654('0x45')]=function(_0x5841cf,_0x23e284){var _0x19f349={'raw':!![],'where':{'id':_0x5841cf['params']['id']}},_0x3fd310={};_0x3fd310[_0xf654('0x32')]=_['keys'](db[_0xf654('0x2f')][_0xf654('0x46')]);_0x3fd310[_0xf654('0x33')]=_[_0xf654('0x34')](_0x5841cf[_0xf654('0x33')]);_0x3fd310[_0xf654('0x3c')]=_[_0xf654('0x47')](_0x3fd310['model'],_0x3fd310[_0xf654('0x33')]);_0x19f349['attributes']=_[_0xf654('0x47')](_0x3fd310['model'],qs['fields'](_0x5841cf[_0xf654('0x33')][_0xf654('0x36')]));_0x19f349[_0xf654('0x35')]=_0x19f349[_0xf654('0x35')][_0xf654('0x37')]?_0x19f349[_0xf654('0x35')]:_0x3fd310[_0xf654('0x32')];if(_0x5841cf[_0xf654('0x33')][_0xf654('0x40')]){_0x19f349[_0xf654('0x41')]=[{'all':!![]}];}_0x19f349=_[_0xf654('0x48')]({},_0x19f349,_0x5841cf['options']);return db[_0xf654('0x2f')][_0xf654('0x49')](_0x19f349)[_0xf654('0x29')](handleEntityNotFound(_0x23e284,null))[_0xf654('0x29')](respondWithResult(_0x23e284,null))[_0xf654('0x44')](handleError(_0x23e284,null));};exports[_0xf654('0x4a')]=function(_0x4e2a40,_0x578fae){return db[_0xf654('0x2f')][_0xf654('0x4a')](_0x4e2a40[_0xf654('0x4b')],{})[_0xf654('0x29')](respondWithResult(_0x578fae,0xc9))[_0xf654('0x44')](handleError(_0x578fae,null));};exports[_0xf654('0x27')]=function(_0x109c65,_0x2bb61d){if(_0x109c65[_0xf654('0x4b')]['id']){delete _0x109c65['body']['id'];}return db['OpenchannelApplication'][_0xf654('0x49')]({'where':{'id':_0x109c65[_0xf654('0x4c')]['id']}})[_0xf654('0x29')](handleEntityNotFound(_0x2bb61d,null))['then'](saveUpdates(_0x109c65['body'],null))[_0xf654('0x29')](respondWithResult(_0x2bb61d,null))[_0xf654('0x44')](handleError(_0x2bb61d,null));};exports[_0xf654('0x28')]=function(_0x55d773,_0x4eabb1){return db[_0xf654('0x2f')]['find']({'where':{'id':_0x55d773[_0xf654('0x4c')]['id']}})[_0xf654('0x29')](handleEntityNotFound(_0x4eabb1,null))[_0xf654('0x29')](removeEntity(_0x4eabb1,null))['catch'](handleError(_0x4eabb1,null));};
\ No newline at end of file
index eae85e3..deaa36f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0x90b2=['openchannel_applications','utf8mb4','utf8mb4_unicode_ci','util','../../config/logger','api','moment','bluebird','request-promise','path','rimraf','../../config/environment','./openchannelApplication.attributes','exports','define','OpenchannelApplication'];(function(_0x503306,_0x356f2f){var _0x44a99d=function(_0x1a6ec4){while(--_0x1a6ec4){_0x503306['push'](_0x503306['shift']());}};_0x44a99d(++_0x356f2f);}(_0x90b2,0x133));var _0x290b=function(_0x5c72ee,_0x5a8bf8){_0x5c72ee=_0x5c72ee-0x0;var _0x231876=_0x90b2[_0x5c72ee];return _0x231876;};'use strict';var _=require('lodash');var util=require(_0x290b('0x0'));var logger=require(_0x290b('0x1'))(_0x290b('0x2'));var moment=require(_0x290b('0x3'));var BPromise=require(_0x290b('0x4'));var rp=require(_0x290b('0x5'));var fs=require('fs');var path=require(_0x290b('0x6'));var rimraf=require(_0x290b('0x7'));var config=require(_0x290b('0x8'));var attributes=require(_0x290b('0x9'));module[_0x290b('0xa')]=function(_0x3de79b,_0x446ae2){return _0x3de79b[_0x290b('0xb')](_0x290b('0xc'),attributes,{'tableName':_0x290b('0xd'),'paranoid':![],'indexes':[],'timestamps':!![],'charset':_0x290b('0xe'),'collate':_0x290b('0xf')});};
\ No newline at end of file
index f79c075..2c3fadb 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0xa66b=['UpdateOpenchannelApplication','update','body','options','raw','where','limit','stringify','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','request','then','info','OpenchannelApplication,\x20%s,\x20%s','request\x20sent','debug','OpenchannelApplication,\x20%s,\x20%s,\x20%s','error','code','message','result','catch'];(function(_0x9b316a,_0x2e87b0){var _0x3b26de=function(_0x90e4a8){while(--_0x90e4a8){_0x9b316a['push'](_0x9b316a['shift']());}};_0x3b26de(++_0x2e87b0);}(_0xa66b,0xef));var _0xba66=function(_0x39780c,_0x5782c9){_0x39780c=_0x39780c-0x0;var _0x53c19b=_0xa66b[_0x39780c];return _0x53c19b;};'use strict';var _=require(_0xba66('0x0'));var util=require(_0xba66('0x1'));var moment=require(_0xba66('0x2'));var BPromise=require(_0xba66('0x3'));var rs=require(_0xba66('0x4'));var fs=require('fs');var Redis=require(_0xba66('0x5'));var db=require(_0xba66('0x6'))['db'];var utils=require('../../config/utils');var logger=require(_0xba66('0x7'))(_0xba66('0x8'));var config=require(_0xba66('0x9'));var jayson=require(_0xba66('0xa'));var client=jayson[_0xba66('0xb')][_0xba66('0xc')]({'port':0x232a});function respondWithRpcPromise(_0x11882f,_0x2c2814,_0x4838f0){return new BPromise(function(_0x1dac85,_0x1a6ab2){return client[_0xba66('0xd')](_0x11882f,_0x4838f0)[_0xba66('0xe')](function(_0x5b11ed){logger[_0xba66('0xf')](_0xba66('0x10'),_0x2c2814,_0xba66('0x11'));logger[_0xba66('0x12')](_0xba66('0x13'),_0x2c2814,_0xba66('0x11'),JSON['stringify'](_0x5b11ed));if(_0x5b11ed[_0xba66('0x14')]){if(_0x5b11ed[_0xba66('0x14')][_0xba66('0x15')]===0x1f4){logger[_0xba66('0x14')](_0xba66('0x10'),_0x2c2814,_0x5b11ed[_0xba66('0x14')][_0xba66('0x16')]);return _0x1a6ab2(_0x5b11ed[_0xba66('0x14')][_0xba66('0x16')]);}logger[_0xba66('0x14')](_0xba66('0x10'),_0x2c2814,_0x5b11ed[_0xba66('0x14')]['message']);return _0x1dac85(_0x5b11ed['error']['message']);}else{logger[_0xba66('0xf')]('OpenchannelApplication,\x20%s,\x20%s',_0x2c2814,_0xba66('0x11'));_0x1dac85(_0x5b11ed[_0xba66('0x17')][_0xba66('0x16')]);}})[_0xba66('0x18')](function(_0x4fecab){logger[_0xba66('0x14')](_0xba66('0x10'),_0x2c2814,_0x4fecab);_0x1a6ab2(_0x4fecab);});});}exports[_0xba66('0x19')]=function(_0x19635b){var _0x499337=this;return new Promise(function(_0x21ad5e,_0x3cfe8e){return db['OpenchannelApplication'][_0xba66('0x1a')](_0x19635b[_0xba66('0x1b')],{'raw':_0x19635b[_0xba66('0x1c')]?_0x19635b[_0xba66('0x1c')][_0xba66('0x1d')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x19635b['options']?_0x19635b['options'][_0xba66('0x1e')]||null:null,'attributes':_0x19635b[_0xba66('0x1c')]?_0x19635b[_0xba66('0x1c')]['attributes']||null:null,'limit':_0x19635b[_0xba66('0x1c')]?_0x19635b[_0xba66('0x1c')][_0xba66('0x1f')]||null:null})[_0xba66('0xe')](function(_0x26ac68){logger[_0xba66('0xf')](_0xba66('0x19'),_0x19635b);logger[_0xba66('0x12')](_0xba66('0x19'),_0x19635b,JSON[_0xba66('0x20')](_0x26ac68));_0x21ad5e(_0x26ac68);})['catch'](function(_0x424419){logger[_0xba66('0x14')](_0xba66('0x19'),_0x424419['message'],_0x19635b);_0x3cfe8e(_0x499337[_0xba66('0x14')](0x1f4,_0x424419[_0xba66('0x16')]));});});};
\ No newline at end of file
index b1529c5..8136f77 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0xbd87=['isAuthenticated','index','/describe','describe','/:id','show','/:id/download','create','post','/:id/messages','/:id/tags','tracked','openchannel','addTags','put','update','delete','openchannelinteraction:destroy','removeTags','exports','multer','util','path','connect-timeout','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./openchannelInteraction.controller','get'];(function(_0x300e9e,_0xcbfa6b){var _0x53c501=function(_0x4bdeb0){while(--_0x4bdeb0){_0x300e9e['push'](_0x300e9e['shift']());}};_0x53c501(++_0xcbfa6b);}(_0xbd87,0x1b8));var _0x7bd8=function(_0x52195d,_0x52e4fd){_0x52195d=_0x52195d-0x0;var _0x522e83=_0xbd87[_0x52195d];return _0x522e83;};'use strict';var multer=require(_0x7bd8('0x0'));var util=require(_0x7bd8('0x1'));var path=require(_0x7bd8('0x2'));var timeout=require(_0x7bd8('0x3'));var express=require('express');var router=express['Router']();var fs_extra=require(_0x7bd8('0x4'));var auth=require(_0x7bd8('0x5'));var interaction=require(_0x7bd8('0x6'));var config=require(_0x7bd8('0x7'));var controller=require(_0x7bd8('0x8'));router[_0x7bd8('0x9')]('/',auth[_0x7bd8('0xa')](),controller[_0x7bd8('0xb')]);router[_0x7bd8('0x9')](_0x7bd8('0xc'),auth[_0x7bd8('0xa')](),controller[_0x7bd8('0xd')]);router[_0x7bd8('0x9')](_0x7bd8('0xe'),auth[_0x7bd8('0xa')](),controller[_0x7bd8('0xf')]);router[_0x7bd8('0x9')]('/:id/messages',auth[_0x7bd8('0xa')](),controller['getMessages']);router[_0x7bd8('0x9')](_0x7bd8('0x10'),auth['isAuthenticated'](),controller['download']);router['post']('/',auth[_0x7bd8('0xa')](),controller[_0x7bd8('0x11')]);router[_0x7bd8('0x12')](_0x7bd8('0x13'),auth[_0x7bd8('0xa')](),controller['addMessage']);router[_0x7bd8('0x12')](_0x7bd8('0x14'),auth[_0x7bd8('0xa')](),interaction[_0x7bd8('0x15')](_0x7bd8('0x16'),'openchannelinteraction:addtags'),controller[_0x7bd8('0x17')]);router[_0x7bd8('0x18')]('/:id',auth['isAuthenticated'](),interaction[_0x7bd8('0x15')]('openchannel','openchannelinteraction:update'),controller[_0x7bd8('0x19')]);router[_0x7bd8('0x1a')](_0x7bd8('0xe'),auth['isAuthenticated'](),interaction['tracked'](_0x7bd8('0x16'),_0x7bd8('0x1b')),controller['destroy']);router[_0x7bd8('0x1a')](_0x7bd8('0x14'),auth['isAuthenticated'](),controller[_0x7bd8('0x1c')]);module[_0x7bd8('0x1d')]=router;
\ No newline at end of file
index 8b869e1..69e0e1d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0x4fdb=['ENUM','out','sequelize','exports','BOOLEAN','DATE','STRING'];(function(_0x560d66,_0xf86af7){var _0x1a7191=function(_0x47fdbc){while(--_0x47fdbc){_0x560d66['push'](_0x560d66['shift']());}};_0x1a7191(++_0xf86af7);}(_0x4fdb,0x9c));var _0xb4fd=function(_0x1dae04,_0xb9718e){_0x1dae04=_0x1dae04-0x0;var _0xd61ea5=_0x4fdb[_0x1dae04];return _0xd61ea5;};'use strict';var Sequelize=require(_0xb4fd('0x0'));module[_0xb4fd('0x1')]={'closed':{'type':Sequelize[_0xb4fd('0x2')],'defaultValue':![]},'closedAt':{'type':Sequelize[_0xb4fd('0x3')]},'disposition':{'type':Sequelize[_0xb4fd('0x4')]},'secondDisposition':{'type':Sequelize[_0xb4fd('0x4')]},'thirdDisposition':{'type':Sequelize[_0xb4fd('0x4')]},'note':{'type':Sequelize[_0xb4fd('0x4')]},'read1stAt':{'type':Sequelize[_0xb4fd('0x3')]},'threadId':{'type':Sequelize['STRING']},'externalUrl':{'type':Sequelize[_0xb4fd('0x4')]},'lastMsgAt':{'type':Sequelize['DATE']},'firstMsgDirection':{'type':Sequelize[_0xb4fd('0x5')]('in','out'),'defaultValue':'in','allowNull':![]},'lastMsgDirection':{'type':Sequelize['ENUM']('in',_0xb4fd('0x6')),'defaultValue':'in','allowNull':![]},'from':{'type':Sequelize[_0xb4fd('0x4')]},'autoreplyExecuted':{'type':Sequelize[_0xb4fd('0x2')],'defaultValue':![]}};
\ No newline at end of file
index 84f3faa..d30c70a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0x0287=['color','emit','openchannelInteractionTags:save','removeTags','download','unix','toString','join','root','files','tmp','server','attachments','transcript-%d-%s.zip','push','User','CmContact','firstName','lastName','Attachment','Messages','createdAt','direction','secret','read','Account','Owner','fullname','mkdirSync','closedAt','threadId','Public','Private','basename','pipe','createWriteStream','out','System','Contact','value','renderFile','views','downloadInteraction.ejs','.pdf','Openchannel','createPdfFromHTML','zip-dir','util','ejs','lodash','ioredis','../../components/interaction/service','../../config/logger','api','../../config/environment','../../mysqldb','redis','defaults','localhost','register','sendStatus','status','end','json','offset','limit','count','set','update','then','destroy','stack','name','index','map','OpenchannelInteraction','fieldName','type','key','getOptions','findAll','query','user','show','from','params','keys','filters','intersection','attributes','length','model','includeAll','include','merge','options','find','catch','create','body','describe','addMessage','OpenchannelMessage','ids','omit','findOne','rawAttributes','fields','hasOwnProperty','nolimit','order','sort','where','OpenchannelInteractionId','filter','$gte','format','YYYY-MM-DD\x20HH:mm:ss','rows','addTags','setTags','Tag'];(function(_0xb08562,_0x2ef73d){var _0x1130a5=function(_0x4cdd8a){while(--_0x4cdd8a){_0xb08562['push'](_0xb08562['shift']());}};_0x1130a5(++_0x2ef73d);}(_0x0287,0x122));var _0x7028=function(_0x37bd52,_0x105a97){_0x37bd52=_0x37bd52-0x0;var _0x13a6bb=_0x0287[_0x37bd52];return _0x13a6bb;};'use strict';var rimraf=require('rimraf');var zipdir=require(_0x7028('0x0'));var moment=require('moment');var util=require(_0x7028('0x1'));var path=require('path');var ejs=require(_0x7028('0x2'));var fs=require('fs');var _=require(_0x7028('0x3'));var Redis=require(_0x7028('0x4'));var interaction=require(_0x7028('0x5'));var qs=require('../../components/parsers/qs');var pdf=require('../../components/export/pdf');var logger=require(_0x7028('0x6'))(_0x7028('0x7'));var config=require(_0x7028('0x8'));var db=require(_0x7028('0x9'))['db'];config[_0x7028('0xa')]=_[_0x7028('0xb')](config[_0x7028('0xa')],{'host':_0x7028('0xc'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config['redis']));require('./openchannelInteraction.socket')[_0x7028('0xd')](socket);function respondWithStatusCode(_0x39112c,_0xa35a21){_0xa35a21=_0xa35a21||0xcc;return function(_0x1ec221){if(_0x1ec221){return _0x39112c[_0x7028('0xe')](_0xa35a21);}return _0x39112c[_0x7028('0xf')](_0xa35a21)[_0x7028('0x10')]();};}function respondWithResult(_0x580297,_0x339e15){_0x339e15=_0x339e15||0xc8;return function(_0x11c6d6){if(_0x11c6d6){return _0x580297[_0x7028('0xf')](_0x339e15)[_0x7028('0x11')](_0x11c6d6);}};}function respondWithFilteredResult(_0x49c40f,_0x55e729){return function(_0x3e687b){if(_0x3e687b){var _0x235939=typeof _0x55e729[_0x7028('0x12')]==='undefined'&&typeof _0x55e729[_0x7028('0x13')]==='undefined';var _0x3d4922=_0x3e687b[_0x7028('0x14')];var _0x1ca2ac=_0x235939?0x0:_0x55e729[_0x7028('0x12')];var _0xe9d53d=_0x235939?_0x3e687b['count']:_0x55e729[_0x7028('0x12')]+_0x55e729[_0x7028('0x13')];var _0x3b1c9d;if(_0xe9d53d>=_0x3d4922){_0xe9d53d=_0x3d4922;_0x3b1c9d=0xc8;}else{_0x3b1c9d=0xce;}_0x49c40f[_0x7028('0xf')](_0x3b1c9d);return _0x49c40f[_0x7028('0x15')]('Content-Range',_0x1ca2ac+'-'+_0xe9d53d+'/'+_0x3d4922)['json'](_0x3e687b);}return null;};}function saveUpdates(_0x1927e4){return function(_0x25821f){if(_0x25821f){return _0x25821f[_0x7028('0x16')](_0x1927e4)[_0x7028('0x17')](function(_0x126daa){return _0x126daa;});}return null;};}function removeEntity(_0xb8337b){return function(_0x17e798){if(_0x17e798){return _0x17e798[_0x7028('0x18')]()[_0x7028('0x17')](function(){_0xb8337b['status'](0xcc)[_0x7028('0x10')]();});}};}function handleEntityNotFound(_0x15ab79){return function(_0xfb3c0b){if(!_0xfb3c0b){_0x15ab79[_0x7028('0xe')](0x194);}return _0xfb3c0b;};}function handleError(_0x3322e9,_0x30c213){_0x30c213=_0x30c213||0x1f4;return function(_0x3fddc5){logger['error'](_0x3fddc5[_0x7028('0x19')]);if(_0x3fddc5[_0x7028('0x1a')]){delete _0x3fddc5[_0x7028('0x1a')];}_0x3322e9[_0x7028('0xf')](_0x30c213)['send'](_0x3fddc5);};}exports[_0x7028('0x1b')]=function(_0x297012,_0x97df0f){var _0x5a71b5={};var _0xcf7188=_[_0x7028('0x1c')](db[_0x7028('0x1d')]['rawAttributes'],function(_0x4d21b5){return{'name':_0x4d21b5[_0x7028('0x1e')],'type':_0x4d21b5[_0x7028('0x1f')][_0x7028('0x20')]};});_0x5a71b5=qs[_0x7028('0x21')](_0xcf7188,_0x297012);return interaction[_0x7028('0x22')]('openchannel',_0x297012[_0x7028('0x23')],_0x297012[_0x7028('0x24')],_0x5a71b5,_0xcf7188)[_0x7028('0x17')](respondWithFilteredResult(_0x97df0f,_0x5a71b5))['catch'](handleError(_0x97df0f,null));};exports[_0x7028('0x25')]=function(_0x522bdd,_0x3aa704){var _0x170385={};if(_0x522bdd[_0x7028('0x23')]['type']&&_0x522bdd[_0x7028('0x23')]['type']===_0x7028('0x26')){_0x170385['from']=_0x522bdd[_0x7028('0x27')]['id'];}else{_0x170385['id']=_0x522bdd[_0x7028('0x27')]['id'];}var _0x4f06d4={'raw':![],'where':_0x170385},_0x38b125={};_0x38b125['model']=_['keys'](db[_0x7028('0x1d')]['rawAttributes']);_0x38b125[_0x7028('0x23')]=_[_0x7028('0x28')](_0x522bdd[_0x7028('0x23')]);_0x38b125[_0x7028('0x29')]=_[_0x7028('0x2a')](_0x38b125['model'],_0x38b125[_0x7028('0x23')]);_0x4f06d4[_0x7028('0x2b')]=_[_0x7028('0x2a')](_0x38b125['model'],qs['fields'](_0x522bdd[_0x7028('0x23')]['fields']));_0x4f06d4[_0x7028('0x2b')]=_0x4f06d4['attributes'][_0x7028('0x2c')]?_0x4f06d4['attributes']:_0x38b125[_0x7028('0x2d')];if(_0x522bdd[_0x7028('0x23')][_0x7028('0x2e')]){_0x4f06d4[_0x7028('0x2f')]=[{'all':!![]}];}_0x4f06d4=_[_0x7028('0x30')]({},_0x4f06d4,_0x522bdd[_0x7028('0x31')]);return db[_0x7028('0x1d')][_0x7028('0x32')](_0x4f06d4)[_0x7028('0x17')](handleEntityNotFound(_0x3aa704,null))[_0x7028('0x17')](respondWithResult(_0x3aa704,null))[_0x7028('0x33')](handleError(_0x3aa704,null));};exports['create']=function(_0x54abfb,_0x1b9738){return db[_0x7028('0x1d')][_0x7028('0x34')](_0x54abfb[_0x7028('0x35')],{})[_0x7028('0x17')](respondWithResult(_0x1b9738,0xc9))[_0x7028('0x33')](handleError(_0x1b9738,null));};exports[_0x7028('0x16')]=function(_0x59f4ab,_0x37e1aa){if(_0x59f4ab[_0x7028('0x35')]['id']){delete _0x59f4ab['body']['id'];}return db['OpenchannelInteraction'][_0x7028('0x32')]({'where':{'id':_0x59f4ab[_0x7028('0x27')]['id']}})[_0x7028('0x17')](handleEntityNotFound(_0x37e1aa,null))[_0x7028('0x17')](saveUpdates(_0x59f4ab['body'],null))[_0x7028('0x17')](respondWithResult(_0x37e1aa,null))['catch'](handleError(_0x37e1aa,null));};exports['destroy']=function(_0x3f9a4d,_0x14fa65){return db[_0x7028('0x1d')][_0x7028('0x32')]({'where':{'id':_0x3f9a4d[_0x7028('0x27')]['id']}})[_0x7028('0x17')](handleEntityNotFound(_0x14fa65,null))[_0x7028('0x17')](removeEntity(_0x14fa65,null))[_0x7028('0x33')](handleError(_0x14fa65,null));};exports['describe']=function(_0x57a0ec,_0x556998){return db['OpenchannelInteraction'][_0x7028('0x36')]()['then'](respondWithResult(_0x556998,null))[_0x7028('0x33')](handleError(_0x556998,null));};exports[_0x7028('0x37')]=function(_0x1ea369,_0x56539a){return db[_0x7028('0x38')][_0x7028('0x32')]({'where':{'id':_0x1ea369[_0x7028('0x27')]['id']}})[_0x7028('0x17')](handleEntityNotFound(_0x56539a,null))[_0x7028('0x17')](function(_0x4b2b74){if(_0x4b2b74){return _0x4b2b74[_0x7028('0x37')](_0x1ea369[_0x7028('0x35')][_0x7028('0x39')],_[_0x7028('0x3a')](_0x1ea369[_0x7028('0x35')],[_0x7028('0x39'),'id'])||{});}})['then'](respondWithResult(_0x56539a,null))[_0x7028('0x33')](handleError(_0x56539a,null));};exports['getMessages']=function(_0x5254b5,_0x542b62){var _0x1b158f={'raw':![],'where':{}};var _0xd945be={};var _0x2f53af={'count':0x0,'rows':[]};return db['OpenchannelInteraction'][_0x7028('0x3b')]({'where':{'id':_0x5254b5[_0x7028('0x27')]['id']}})[_0x7028('0x17')](handleEntityNotFound(_0x542b62,null))[_0x7028('0x17')](function(_0x2e409b){if(_0x2e409b){_0xd945be[_0x7028('0x2d')]=_[_0x7028('0x28')](db[_0x7028('0x38')][_0x7028('0x3c')]);_0xd945be[_0x7028('0x23')]=_[_0x7028('0x28')](_0x5254b5[_0x7028('0x23')]);_0xd945be[_0x7028('0x29')]=_[_0x7028('0x2a')](_0xd945be[_0x7028('0x2d')],_0xd945be['query']);_0x1b158f[_0x7028('0x2b')]=_[_0x7028('0x2a')](_0xd945be[_0x7028('0x2d')],qs[_0x7028('0x3d')](_0x5254b5[_0x7028('0x23')][_0x7028('0x3d')]));_0x1b158f[_0x7028('0x2b')]=_0x1b158f['attributes'][_0x7028('0x2c')]?_0x1b158f['attributes']:_0xd945be['model'];if(!_0x5254b5[_0x7028('0x23')][_0x7028('0x3e')](_0x7028('0x3f'))){_0x1b158f[_0x7028('0x13')]=qs[_0x7028('0x13')](_0x5254b5[_0x7028('0x23')][_0x7028('0x13')]);_0x1b158f[_0x7028('0x12')]=qs['offset'](_0x5254b5[_0x7028('0x23')][_0x7028('0x12')]);}_0x1b158f[_0x7028('0x40')]=qs[_0x7028('0x41')](_0x5254b5['query'][_0x7028('0x41')]);_0x1b158f[_0x7028('0x42')]=qs['filters'](_['pick'](_0x5254b5[_0x7028('0x23')],_0xd945be[_0x7028('0x29')]));_0x1b158f[_0x7028('0x42')][_0x7028('0x43')]=_0x2e409b['id'];if(_0x5254b5[_0x7028('0x23')][_0x7028('0x44')]){_0x1b158f[_0x7028('0x42')]=_[_0x7028('0x30')](_0x1b158f[_0x7028('0x42')],{'$or':_[_0x7028('0x1c')](_0x1b158f[_0x7028('0x2b')],function(_0x4ccfb8){var _0x5526d1={};_0x5526d1[_0x4ccfb8]={'$like':'%'+_0x5254b5['query'][_0x7028('0x44')]+'%'};return _0x5526d1;})});}if(_0x5254b5[_0x7028('0x23')][_0x7028('0x45')]){var _0x5dd55c=_0x5254b5['query'][_0x7028('0x45')]['split'](',');var _0x431e6a={};_0x431e6a[_0x5dd55c[0x0]]={'$gte':moment(_0x5dd55c[0x1])[_0x7028('0x46')](_0x7028('0x47'))};_0x1b158f[_0x7028('0x42')]=_[_0x7028('0x30')](_0x1b158f['where'],_0x431e6a);}_0x1b158f=_[_0x7028('0x30')]({},_0x1b158f,_0x5254b5[_0x7028('0x31')]);return db[_0x7028('0x38')][_0x7028('0x14')]({'where':_0x1b158f[_0x7028('0x42')]})[_0x7028('0x17')](function(_0xadabd1){_0x2f53af[_0x7028('0x14')]=_0xadabd1;if(_0x5254b5[_0x7028('0x23')][_0x7028('0x2e')]){_0x1b158f['include']=[{'all':!![]}];}return db['OpenchannelMessage'][_0x7028('0x22')](_0x1b158f);})['then'](function(_0x37f40b){_0x2f53af[_0x7028('0x48')]=_0x37f40b;return _0x2f53af;});}})['then'](respondWithFilteredResult(_0x542b62,_0x1b158f))['catch'](handleError(_0x542b62,null));};exports[_0x7028('0x49')]=function(_0x2b3be2,_0x280777){return db['OpenchannelInteraction'][_0x7028('0x32')]({'where':{'id':_0x2b3be2[_0x7028('0x27')]['id']}})[_0x7028('0x17')](handleEntityNotFound(_0x280777,null))[_0x7028('0x17')](function(_0x33e228){if(_0x33e228){return _0x33e228[_0x7028('0x4a')](_0x2b3be2['body']['ids'],_['omit'](_0x2b3be2['body'],[_0x7028('0x39'),'id'])||{})['spread'](function(){return db[_0x7028('0x4b')][_0x7028('0x22')]({'attributes':['id',_0x7028('0x1a'),_0x7028('0x4c')],'where':{'id':_0x2b3be2['body'][_0x7028('0x39')]}});})[_0x7028('0x17')](function(_0x1e26e1){socket[_0x7028('0x4d')](_0x7028('0x4e'),{'id':Number(_0x2b3be2['params']['id']),'tags':_0x1e26e1||[]});return{'id':Number(_0x2b3be2[_0x7028('0x27')]['id']),'tags':_0x1e26e1||[]};});}})['then'](respondWithResult(_0x280777,null))[_0x7028('0x33')](handleError(_0x280777,null));};exports[_0x7028('0x4f')]=function(_0x5bbbfd,_0x112f6a){return db[_0x7028('0x1d')][_0x7028('0x32')]({'where':{'id':_0x5bbbfd[_0x7028('0x27')]['id']}})['then'](handleEntityNotFound(_0x112f6a,null))[_0x7028('0x17')](function(_0x101be6){if(_0x101be6){return _0x101be6[_0x7028('0x4f')](_0x5bbbfd['query'][_0x7028('0x39')]);}})[_0x7028('0x17')](respondWithStatusCode(_0x112f6a,null))[_0x7028('0x33')](handleError(_0x112f6a,null));};exports[_0x7028('0x50')]=function(_0x23ff51,_0x18eabe){var _0x78d5b1=moment()[_0x7028('0x51')]()[_0x7028('0x52')]();var _0x11077d=path[_0x7028('0x53')](config[_0x7028('0x54')],'server',_0x7028('0x55'),_0x7028('0x56'));var _0x2939fc=path[_0x7028('0x53')](config[_0x7028('0x54')],_0x7028('0x57'),_0x7028('0x55'),_0x7028('0x58'));var _0x523a6b=path['join'](_0x11077d,_0x78d5b1);var _0x226fec=util[_0x7028('0x46')](_0x7028('0x59'),_0x23ff51[_0x7028('0x27')]['id'],_0x78d5b1);var _0x35c2dc=path[_0x7028('0x53')](_0x11077d,_0x226fec);var _0x81ede1=[];_0x81ede1[_0x7028('0x5a')]({'model':db[_0x7028('0x5b')],'as':_0x7028('0x5b'),'attributes':['id','fullname'],'raw':!![]});_0x81ede1[_0x7028('0x5a')]({'model':db[_0x7028('0x5c')],'as':'Contact','attributes':['id',_0x7028('0x5d'),_0x7028('0x5e')],'raw':!![]});if(_0x23ff51[_0x7028('0x23')][_0x7028('0x58')]){_0x81ede1[_0x7028('0x5a')]({'model':db[_0x7028('0x5f')],'as':_0x7028('0x5f'),'raw':!![]});}var _0xc3b164=[{'model':db[_0x7028('0x38')],'as':_0x7028('0x60'),'attributes':['id',_0x7028('0x35'),_0x7028('0x61'),_0x7028('0x62'),_0x7028('0x63'),_0x7028('0x64')],'include':_0x81ede1}];_0xc3b164[_0x7028('0x5a')]({'model':db['OpenchannelAccount'],'as':_0x7028('0x65'),'attributes':['id',_0x7028('0x1a')]});_0xc3b164['push']({'model':db[_0x7028('0x5b')],'as':_0x7028('0x66'),'attributes':['id',_0x7028('0x67')]});return db[_0x7028('0x1d')][_0x7028('0x32')]({'where':{'id':_0x23ff51[_0x7028('0x27')]['id']},'include':_0xc3b164})['then'](handleEntityNotFound(_0x18eabe,null))[_0x7028('0x17')](function(_0x4dea8f){if(_0x4dea8f){var _0x32b061=_0x4dea8f['get']({'plain':!![]});fs[_0x7028('0x68')](_0x523a6b);var _0x58aea0={'channel':'Openchannel','account':_0x32b061['Account'][_0x7028('0x1a')],'agent':_0x32b061[_0x7028('0x66')]?_0x32b061[_0x7028('0x66')][_0x7028('0x67')]:'N.A.','createdAt':moment(_0x32b061[_0x7028('0x61')])['format'](_0x7028('0x47'))['toString'](),'closedAt':_0x32b061['closed']?moment(_0x32b061[_0x7028('0x69')])[_0x7028('0x46')](_0x7028('0x47'))['toString']():'','disposition':_0x32b061['disposition'],'visibility':_0x32b061[_0x7028('0x6a')]?_0x7028('0x6b'):_0x7028('0x6c'),'messages':_(_0x32b061['Messages'])[_0x7028('0x44')]({'secret':![]})['map'](function(_0x47c8c0){if(_0x47c8c0[_0x7028('0x5f')]){var _0x185d0e=path[_0x7028('0x53')](_0x2939fc,_0x47c8c0[_0x7028('0x5f')][_0x7028('0x6d')]);if(fs['existsSync'](_0x185d0e)){fs['createReadStream'](_0x185d0e)[_0x7028('0x6e')](fs[_0x7028('0x6f')](path['join'](_0x523a6b,_0x47c8c0[_0x7028('0x5f')][_0x7028('0x6d')])));}}return{'date':moment(_0x47c8c0[_0x7028('0x61')])[_0x7028('0x46')](_0x7028('0x47'))[_0x7028('0x52')](),'sender':_0x47c8c0[_0x7028('0x62')]===_0x7028('0x70')?_0x47c8c0['User']?_0x47c8c0[_0x7028('0x5b')][_0x7028('0x67')]:_0x7028('0x71'):_0x47c8c0[_0x7028('0x72')][_0x7028('0x5d')]+(_0x47c8c0[_0x7028('0x72')][_0x7028('0x5e')]?'\x20'+_0x47c8c0[_0x7028('0x72')][_0x7028('0x5e')]:''),'body':_0x47c8c0['Attachment']?_0x47c8c0[_0x7028('0x5f')][_0x7028('0x6d')]:_0x47c8c0[_0x7028('0x35')],'direction':_0x47c8c0['direction']===_0x7028('0x70')?'A':'C','secret':_0x47c8c0[_0x7028('0x63')],'read':_0x47c8c0['read'],'attachment':_0x47c8c0[_0x7028('0x5f')]};})[_0x7028('0x73')]()};return ejs[_0x7028('0x74')](path[_0x7028('0x53')](config[_0x7028('0x54')],'server',_0x7028('0x75'),_0x7028('0x76')),{'interaction':_0x58aea0})[_0x7028('0x17')](function(_0x15661c){var _0x51d84a=path[_0x7028('0x53')](_0x523a6b,'transcript-'+_0x32b061['id']+'-'+_0x78d5b1+_0x7028('0x77'));var _0x18d3be={'path':_0x51d84a,'channel':_0x7028('0x78'),'interactionId':_0x32b061['id']};return pdf[_0x7028('0x79')](_0x15661c,_0x18d3be);})[_0x7028('0x17')](function(){return new Promise(function(_0x5e09d7,_0x371b88){zipdir(_0x523a6b,{'saveTo':_0x35c2dc},function(_0x5d4098,_0x551a5e){if(_0x5d4098)return _0x371b88(_0x5d4098);return _0x5e09d7(_0x551a5e);});})[_0x7028('0x17')](function(){return new Promise(function(_0x2fb38c,_0x3daeb9){rimraf(_0x523a6b,function(_0x457ae5){if(_0x457ae5)_0x3daeb9(_0x457ae5);return _0x2fb38c();});});})[_0x7028('0x17')](function(){return _0x18eabe[_0x7028('0x50')](_0x35c2dc,_0x226fec,function(_0x3fecf8){if(_0x3fecf8){logger['error']('Unable\x20to\x20delete\x20zip\x20file',_0x3fecf8);}else{fs['unlinkSync'](_0x35c2dc);}});});});}else{return _0x18eabe[_0x7028('0xe')](0xc8);}})[_0x7028('0x33')](handleError(_0x18eabe,null));};
\ No newline at end of file
index 2a088a9..f1bc1c9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0x36b9=['../../mysqldb','OpenchannelInteraction','OpenchannelMessage','setMaxListeners','save','update','getUsers','then','setDataValue','map','findAll','unreadMessages','length','emit','hasOwnProperty','exports','events'];(function(_0x36bff5,_0x3156cb){var _0x80ade5=function(_0x5eee65){while(--_0x5eee65){_0x36bff5['push'](_0x36bff5['shift']());}};_0x80ade5(++_0x3156cb);}(_0x36b9,0xba));var _0x936b=function(_0x311b43,_0x2a4eee){_0x311b43=_0x311b43-0x0;var _0x2bf4a3=_0x36b9[_0x311b43];return _0x2bf4a3;};'use strict';var EventEmitter=require(_0x936b('0x0'));var OpenchannelInteraction=require(_0x936b('0x1'))['db'][_0x936b('0x2')];var OpenchannelMessage=require(_0x936b('0x1'))['db'][_0x936b('0x3')];var OpenchannelInteractionEvents=new EventEmitter();OpenchannelInteractionEvents[_0x936b('0x4')](0x0);var events={'afterCreate':_0x936b('0x5'),'afterUpdate':_0x936b('0x6'),'afterDestroy':'remove'};function emitEvent(_0x45b6de){return function(_0x23362e,_0xeb49b8,_0x5622d0){_0x23362e[_0x936b('0x7')]({'attributes':['id'],'raw':!![]})[_0x936b('0x8')](function(_0x172176){_0x23362e[_0x936b('0x9')]('Users',_0x172176[_0x936b('0xa')](function(_0x47c2f9){return{'id':_0x47c2f9['id']};}));return OpenchannelMessage[_0x936b('0xb')]({'where':{'OpenchannelInteractionId':_0x23362e['id'],'direction':'in','read':![]},'raw':!![]});})[_0x936b('0x8')](function(_0x4d8ea9){_0x23362e[_0x936b('0x9')](_0x936b('0xc'),_0x4d8ea9[_0x936b('0xd')]);OpenchannelInteractionEvents['emit'](_0x45b6de+':'+_0x23362e['id'],_0x23362e);OpenchannelInteractionEvents[_0x936b('0xe')](_0x45b6de,_0x23362e);_0x5622d0(null);})['catch'](_0x5622d0(null));};}for(var e in events){if(events[_0x936b('0xf')](e)){var event=events[e];OpenchannelInteraction['hook'](e,emitEvent(event));}}module[_0x936b('0x10')]=OpenchannelInteractionEvents;
\ No newline at end of file
index 689bbb1..bdcbcb1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0x803f=['format','util','../../config/logger','api','moment','bluebird','path','rimraf','../../config/environment','./openchannelInteraction.attributes','exports','define','OpenchannelInteraction','openchannel_interactions','utf8mb4','changed','closed'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x803f,0x144));var _0xf803=function(_0x1ed6ff,_0x22cccd){_0x1ed6ff=_0x1ed6ff-0x0;var _0x5deffa=_0x803f[_0x1ed6ff];return _0x5deffa;};'use strict';var _=require('lodash');var util=require(_0xf803('0x0'));var logger=require(_0xf803('0x1'))(_0xf803('0x2'));var moment=require(_0xf803('0x3'));var BPromise=require(_0xf803('0x4'));var rp=require('request-promise');var fs=require('fs');var path=require(_0xf803('0x5'));var rimraf=require(_0xf803('0x6'));var config=require(_0xf803('0x7'));var attributes=require(_0xf803('0x8'));module[_0xf803('0x9')]=function(_0x2314b3,_0x5c962b){return _0x2314b3[_0xf803('0xa')](_0xf803('0xb'),attributes,{'tableName':_0xf803('0xc'),'paranoid':![],'indexes':[],'timestamps':!![],'charset':_0xf803('0xd'),'collate':'utf8mb4_unicode_ci','hooks':{'beforeUpdate':function(_0x47b2fd,_0x245470,_0x58620e){if(_0x47b2fd[_0xf803('0xe')](_0xf803('0xf'))){_0x47b2fd['closedAt']=moment()[_0xf803('0x10')]('YYYY-MM-DD\x20HH:mm:ss');}_0x58620e(null,_0x47b2fd);}}});};
\ No newline at end of file
index ee68799..6004903 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0xeda2=['defaults','socket.io-emitter','register','request','then','info','OpenchannelInteraction,\x20%s,\x20%s','request\x20sent','OpenchannelInteraction,\x20%s,\x20%s,\x20%s','stringify','error','message','result','catch','UpdateOpenchannelInteraction','update','options','raw','attributes','limit','where','addTags','body','ids','AddTags','lodash','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','redis'];(function(_0x461fd2,_0x3866b8){var _0x5494cd=function(_0x213aed){while(--_0x213aed){_0x461fd2['push'](_0x461fd2['shift']());}};_0x5494cd(++_0x3866b8);}(_0xeda2,0x1c6));var _0x2eda=function(_0x25e754,_0x200eba){_0x25e754=_0x25e754-0x0;var _0x1d991e=_0xeda2[_0x25e754];return _0x1d991e;};'use strict';var _=require(_0x2eda('0x0'));var util=require('util');var moment=require(_0x2eda('0x1'));var BPromise=require(_0x2eda('0x2'));var rs=require(_0x2eda('0x3'));var fs=require('fs');var Redis=require(_0x2eda('0x4'));var db=require(_0x2eda('0x5'))['db'];var utils=require(_0x2eda('0x6'));var logger=require(_0x2eda('0x7'))(_0x2eda('0x8'));var config=require(_0x2eda('0x9'));var jayson=require(_0x2eda('0xa'));var client=jayson[_0x2eda('0xb')][_0x2eda('0xc')]({'port':0x232a});config[_0x2eda('0xd')]=_[_0x2eda('0xe')](config[_0x2eda('0xd')],{'host':'localhost','port':0x18eb});var socket=require(_0x2eda('0xf'))(new Redis(config[_0x2eda('0xd')]));require('./openchannelInteraction.socket')[_0x2eda('0x10')](socket);function respondWithRpcPromise(_0x426bdb,_0x33cae6,_0x3b0bad){return new BPromise(function(_0x19c128,_0x9b6cbc){return client[_0x2eda('0x11')](_0x426bdb,_0x3b0bad)[_0x2eda('0x12')](function(_0x561493){logger[_0x2eda('0x13')](_0x2eda('0x14'),_0x33cae6,_0x2eda('0x15'));logger['debug'](_0x2eda('0x16'),_0x33cae6,_0x2eda('0x15'),JSON[_0x2eda('0x17')](_0x561493));if(_0x561493[_0x2eda('0x18')]){if(_0x561493[_0x2eda('0x18')]['code']===0x1f4){logger[_0x2eda('0x18')](_0x2eda('0x14'),_0x33cae6,_0x561493['error'][_0x2eda('0x19')]);return _0x9b6cbc(_0x561493[_0x2eda('0x18')][_0x2eda('0x19')]);}logger[_0x2eda('0x18')](_0x2eda('0x14'),_0x33cae6,_0x561493['error']['message']);return _0x19c128(_0x561493[_0x2eda('0x18')]['message']);}else{logger[_0x2eda('0x13')](_0x2eda('0x14'),_0x33cae6,'request\x20sent');_0x19c128(_0x561493[_0x2eda('0x1a')][_0x2eda('0x19')]);}})[_0x2eda('0x1b')](function(_0x2515fc){logger[_0x2eda('0x18')](_0x2eda('0x14'),_0x33cae6,_0x2515fc);_0x9b6cbc(_0x2515fc);});});}exports[_0x2eda('0x1c')]=function(_0x631616){var _0x2ac071=this;return new Promise(function(_0xae5d17,_0x2f8ec5){return db['OpenchannelInteraction'][_0x2eda('0x1d')](_0x631616['body'],{'raw':_0x631616[_0x2eda('0x1e')]?_0x631616['options'][_0x2eda('0x1f')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x631616[_0x2eda('0x1e')]?_0x631616[_0x2eda('0x1e')]['where']||null:null,'attributes':_0x631616['options']?_0x631616[_0x2eda('0x1e')][_0x2eda('0x20')]||null:null,'limit':_0x631616['options']?_0x631616[_0x2eda('0x1e')][_0x2eda('0x21')]||null:null})[_0x2eda('0x12')](function(_0x5b491d){logger[_0x2eda('0x13')](_0x2eda('0x1c'),_0x631616);logger['debug'](_0x2eda('0x1c'),_0x631616,JSON[_0x2eda('0x17')](_0x5b491d));_0xae5d17(_0x5b491d);})['catch'](function(_0x42cbdc){logger['error'](_0x2eda('0x1c'),_0x42cbdc[_0x2eda('0x19')],_0x631616);_0x2f8ec5(_0x2ac071[_0x2eda('0x18')](0x1f4,_0x42cbdc[_0x2eda('0x19')]));});});};exports['AddTagsToOpenchannelInteraction']=function(_0xf3358c){return new Promise(function(_0x16cdaf,_0x5e98a4){return db['OpenchannelInteraction']['find']({'where':_0xf3358c[_0x2eda('0x1e')]?_0xf3358c['options'][_0x2eda('0x22')]||null:null})[_0x2eda('0x12')](function(_0x2810f3){if(_0x2810f3){return _0x2810f3[_0x2eda('0x23')](_0xf3358c[_0x2eda('0x24')]['ids'],_['omit'](_0xf3358c[_0x2eda('0x24')],[_0x2eda('0x25'),'id'])||{});}})['spread'](function(_0x3ecf28){logger['info'](_0x2eda('0x26'),_0xf3358c);logger['debug']('AddTags',_0xf3358c,JSON[_0x2eda('0x17')](_0x3ecf28));_0x16cdaf(_0x3ecf28);})[_0x2eda('0x1b')](function(_0xb811a){logger['error'](_0x2eda('0x26'),_0xb811a[_0x2eda('0x19')],_0xf3358c);_0x5e98a4(_this[_0x2eda('0x18')](0x1f4,_0xb811a[_0x2eda('0x19')]));});});};
\ No newline at end of file
index 96df179..715c9b6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0x9b52=['length','openchannelInteraction:','save','remove','update','emit','removeListener','register'];(function(_0x433a86,_0x175b5c){var _0x23000c=function(_0x4b1fa0){while(--_0x4b1fa0){_0x433a86['push'](_0x433a86['shift']());}};_0x23000c(++_0x175b5c);}(_0x9b52,0x122));var _0x29b5=function(_0x1e1ecf,_0x175529){_0x1e1ecf=_0x1e1ecf-0x0;var _0x52be90=_0x9b52[_0x1e1ecf];return _0x52be90;};'use strict';var OpenchannelInteractionEvents=require('./openchannelInteraction.events');var events=[_0x29b5('0x0'),_0x29b5('0x1'),_0x29b5('0x2')];function createListener(_0x5ad980,_0x38ff52){return function(_0x1fcab4){_0x38ff52[_0x29b5('0x3')](_0x5ad980,_0x1fcab4);};}function removeListener(_0x1214c8,_0x241056){return function(){OpenchannelInteractionEvents[_0x29b5('0x4')](_0x1214c8,_0x241056);};}exports[_0x29b5('0x5')]=function(_0x167b47){for(var _0x33d078=0x0,_0x308d1a=events[_0x29b5('0x6')];_0x33d078<_0x308d1a;_0x33d078++){var _0x53333d=events[_0x33d078];var _0xb3596a=createListener(_0x29b5('0x7')+_0x53333d,_0x167b47);OpenchannelInteractionEvents['on'](_0x53333d,_0xb3596a);}};
\ No newline at end of file
index 0f87a74..db8389e 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','./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
+var _0x70e0=['put','update','/:id/accept','accept','destroy','multer','util','path','Router','fs-extra','../../components/auth/service','../../components/interaction/service','./openchannelMessage.controller','isAuthenticated','describe','get','/:id','show','post','openchannel','openchannelmessage:create','create'];(function(_0x14add3,_0x13ce8d){var _0x4a174f=function(_0x2b3ed7){while(--_0x2b3ed7){_0x14add3['push'](_0x14add3['shift']());}};_0x4a174f(++_0x13ce8d);}(_0x70e0,0x17b));var _0x070e=function(_0x5413b9,_0x24cbbb){_0x5413b9=_0x5413b9-0x0;var _0x2d3443=_0x70e0[_0x5413b9];return _0x2d3443;};'use strict';var multer=require(_0x070e('0x0'));var util=require(_0x070e('0x1'));var path=require(_0x070e('0x2'));var timeout=require('connect-timeout');var express=require('express');var router=express[_0x070e('0x3')]();var fs_extra=require(_0x070e('0x4'));var auth=require(_0x070e('0x5'));var interaction=require(_0x070e('0x6'));var config=require('../../config/environment');var controller=require(_0x070e('0x7'));router['get']('/',auth[_0x070e('0x8')](),controller['index']);router['get']('/describe',auth[_0x070e('0x8')](),controller[_0x070e('0x9')]);router[_0x070e('0xa')](_0x070e('0xb'),auth[_0x070e('0x8')](),controller[_0x070e('0xc')]);router[_0x070e('0xd')]('/',auth['isAuthenticated'](),interaction['tracked'](_0x070e('0xe'),_0x070e('0xf')),controller[_0x070e('0x10')]);router[_0x070e('0x11')](_0x070e('0xb'),auth[_0x070e('0x8')](),controller[_0x070e('0x12')]);router[_0x070e('0x11')](_0x070e('0x13'),auth[_0x070e('0x8')](),controller[_0x070e('0x14')]);router['put']('/:id/reject',auth[_0x070e('0x8')](),controller['reject']);router['delete']('/:id',auth[_0x070e('0x8')](),controller[_0x070e('0x15')]);module['exports']=router;
\ No newline at end of file
index dea1419..fe0b9c2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0x6215=['out','DATE','sequelize','exports','TEXT','BOOLEAN','ENUM'];(function(_0x122ef9,_0x451d2a){var _0x42fba0=function(_0x17c9d3){while(--_0x17c9d3){_0x122ef9['push'](_0x122ef9['shift']());}};_0x42fba0(++_0x451d2a);}(_0x6215,0x198));var _0x5621=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x6215[_0x3dd15e];return _0x231fd0;};'use strict';var Sequelize=require(_0x5621('0x0'));module[_0x5621('0x1')]={'body':{'type':Sequelize[_0x5621('0x2')]('medium'),'allowNull':![]},'read':{'type':Sequelize[_0x5621('0x3')],'defaultValue':![]},'secret':{'type':Sequelize[_0x5621('0x3')],'defaultValue':![]},'direction':{'type':Sequelize[_0x5621('0x4')]('in',_0x5621('0x5')),'defaultValue':_0x5621('0x5'),'allowNull':![]},'readAt':{'type':Sequelize[_0x5621('0x6')]},'providerName':{'type':Sequelize['STRING']},'providerResponse':{'type':Sequelize['TEXT']}};
\ No newline at end of file
index 246b9af..047b5d9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0xe54c=['AcceptMessage','acceptMessage','ContactId','Sequelize','User','agent','email','internal','manual','interface','channel','event','EventManager','acceptmessage','openchannel','role','RejectMessage','SELECT\x20*\x20FROM\x20cm_contacts\x20WHERE\x20id\x20=\x20','sequelize','QueryTypes','motionChannel','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','ejs','lodash','squel','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','defaults','redis','localhost','./openchannelMessage.socket','register','http','client','request','then','OpenchannelMessage,\x20%s,\x20%s','debug','OpenchannelMessage,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','code','message','info','result','catch','sendStatus','status','json','offset','limit','undefined','count','Content-Range','apply','reject','save','stack','name','map','fieldName','type','key','model','query','keys','intersection','fields','attributes','hasOwnProperty','nolimit','order','sort','where','filters','pick','filter','merge','VIRTUAL','options','OpenchannelMessage','includeAll','include','rows','show','length','find','body','update','destroy','describe','openchannel-interactions','accept','read','format','YYYY-MM-DD\x20HH:mm:ss','UserId','params','get','OpenchannelInteraction','OpenchannelInteractionId','isNil','read1stAt','interaction','[OPENCHANNELMESSAGE:ACCEPT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s','user','null'];(function(_0x524180,_0xfaea9d){var _0x30e196=function(_0x5d552d){while(--_0x5d552d){_0x524180['push'](_0x524180['shift']());}};_0x30e196(++_0xfaea9d);}(_0xe54c,0x119));var _0xce54=function(_0x7074d5,_0x427953){_0x7074d5=_0x7074d5-0x0;var _0xced075=_0xe54c[_0x7074d5];return _0xced075;};'use strict';var emlformat=require(_0xce54('0x0'));var rimraf=require(_0xce54('0x1'));var zipdir=require(_0xce54('0x2'));var jsonpatch=require(_0xce54('0x3'));var rp=require(_0xce54('0x4'));var moment=require(_0xce54('0x5'));var BPromise=require(_0xce54('0x6'));var Mustache=require(_0xce54('0x7'));var util=require(_0xce54('0x8'));var path=require(_0xce54('0x9'));var sox=require(_0xce54('0xa'));var csv=require(_0xce54('0xb'));var ejs=require(_0xce54('0xc'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0xce54('0xd'));var squel=require(_0xce54('0xe'));var crypto=require(_0xce54('0xf'));var jsforce=require(_0xce54('0x10'));var deskjs=require(_0xce54('0x11'));var toCsv=require(_0xce54('0xb'));var querystring=require(_0xce54('0x12'));var Papa=require(_0xce54('0x13'));var Redis=require(_0xce54('0x14'));var authService=require(_0xce54('0x15'));var qs=require(_0xce54('0x16'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0xce54('0x17'));var logger=require('../../config/logger')('api');var utils=require(_0xce54('0x18'));var config=require(_0xce54('0x19'));var licenseUtil=require(_0xce54('0x1a'));var db=require(_0xce54('0x1b'))['db'];config['redis']=_[_0xce54('0x1c')](config[_0xce54('0x1d')],{'host':_0xce54('0x1e'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0xce54('0x1d')]));require(_0xce54('0x1f'))[_0xce54('0x20')](socket);var jayson=require('jayson/promise');var client=jayson['client'][_0xce54('0x21')]({'port':0x232c});var client9002=jayson[_0xce54('0x22')][_0xce54('0x21')]({'port':0x232a});function respondWithRpcPromise(_0x357f91,_0x4cd738,_0x4b4ace,_0x15098e){return new BPromise(function(_0x26c8b7,_0x1a4668){var _0x520c53=_0x15098e||client;return _0x520c53[_0xce54('0x23')](_0x357f91,_0x4b4ace)[_0xce54('0x24')](function(_0x79fe5b){logger['info'](_0xce54('0x25'),_0x4cd738,'request\x20sent');logger[_0xce54('0x26')](_0xce54('0x27'),_0x4cd738,_0xce54('0x28'),JSON[_0xce54('0x29')](_0x79fe5b));if(_0x79fe5b[_0xce54('0x2a')]){if(_0x79fe5b[_0xce54('0x2a')][_0xce54('0x2b')]===0x1f4){logger[_0xce54('0x2a')](_0xce54('0x25'),_0x4cd738,_0x79fe5b['error'][_0xce54('0x2c')]);return _0x1a4668(_0x79fe5b['error'][_0xce54('0x2c')]);}logger[_0xce54('0x2a')]('OpenchannelMessage,\x20%s,\x20%s',_0x4cd738,_0x79fe5b[_0xce54('0x2a')]['message']);return _0x26c8b7(_0x79fe5b['error'][_0xce54('0x2c')]);}else{logger[_0xce54('0x2d')](_0xce54('0x25'),_0x4cd738,_0xce54('0x28'));_0x26c8b7(_0x79fe5b[_0xce54('0x2e')]['message']);}})[_0xce54('0x2f')](function(_0x43a354){logger[_0xce54('0x2a')](_0xce54('0x25'),_0x4cd738,_0x43a354);_0x1a4668(_0x43a354);});});}function respondWithStatusCode(_0x3ee92e,_0x1a68fa){_0x1a68fa=_0x1a68fa||0xcc;return function(_0x51271a){if(_0x51271a){return _0x3ee92e[_0xce54('0x30')](_0x1a68fa);}return _0x3ee92e['status'](_0x1a68fa)['end']();};}function respondWithResult(_0x551bcb,_0x2e6e0e){_0x2e6e0e=_0x2e6e0e||0xc8;return function(_0x5b87d0){if(_0x5b87d0){return _0x551bcb[_0xce54('0x31')](_0x2e6e0e)[_0xce54('0x32')](_0x5b87d0);}};}function respondWithFilteredResult(_0x4f2812,_0x1de8c7){return function(_0x49bff3){if(_0x49bff3){var _0x563185=typeof _0x1de8c7[_0xce54('0x33')]==='undefined'&&typeof _0x1de8c7[_0xce54('0x34')]===_0xce54('0x35');var _0x48e5bc=_0x49bff3[_0xce54('0x36')];var _0x3c461e=_0x563185?0x0:_0x1de8c7[_0xce54('0x33')];var _0x5b9151=_0x563185?_0x49bff3[_0xce54('0x36')]:_0x1de8c7[_0xce54('0x33')]+_0x1de8c7[_0xce54('0x34')];var _0x3283e6;if(_0x5b9151>=_0x48e5bc){_0x5b9151=_0x48e5bc;_0x3283e6=0xc8;}else{_0x3283e6=0xce;}_0x4f2812[_0xce54('0x31')](_0x3283e6);return _0x4f2812['set'](_0xce54('0x37'),_0x3c461e+'-'+_0x5b9151+'/'+_0x48e5bc)[_0xce54('0x32')](_0x49bff3);}return null;};}function patchUpdates(_0x4320e1){return function(_0x5df92a){try{jsonpatch[_0xce54('0x38')](_0x5df92a,_0x4320e1,!![]);}catch(_0x1f04ae){return BPromise[_0xce54('0x39')](_0x1f04ae);}return _0x5df92a[_0xce54('0x3a')]();};}function saveUpdates(_0x4d2fec,_0x27c01c){return function(_0x1b7ab0){if(_0x1b7ab0){return _0x1b7ab0['update'](_0x4d2fec)['then'](function(_0x258024){return _0x258024;});}return null;};}function removeEntity(_0x29f9e7,_0x5245d6){return function(_0x43e140){if(_0x43e140){return _0x43e140['destroy']()[_0xce54('0x24')](function(){_0x29f9e7['status'](0xcc)['end']();});}};}function handleEntityNotFound(_0x197dbd,_0x44561a){return function(_0x3a78b8){if(!_0x3a78b8){_0x197dbd[_0xce54('0x30')](0x194);}return _0x3a78b8;};}function handleError(_0x4b01f0,_0x393d27){_0x393d27=_0x393d27||0x1f4;return function(_0x5bd3da){logger[_0xce54('0x2a')](_0x5bd3da[_0xce54('0x3b')]);if(_0x5bd3da['name']){delete _0x5bd3da[_0xce54('0x3c')];}_0x4b01f0[_0xce54('0x31')](_0x393d27)['send'](_0x5bd3da);};}exports['index']=function(_0x11a842,_0x262569){var _0x372c72={},_0x2a3417={},_0x5940ad={'count':0x0,'rows':[]};var _0x348686=_[_0xce54('0x3d')](db['OpenchannelMessage']['rawAttributes'],function(_0x5ce16b){return{'name':_0x5ce16b[_0xce54('0x3e')],'type':_0x5ce16b[_0xce54('0x3f')][_0xce54('0x40')]};});_0x2a3417[_0xce54('0x41')]=_[_0xce54('0x3d')](_0x348686,'name');_0x2a3417[_0xce54('0x42')]=_[_0xce54('0x43')](_0x11a842['query']);_0x2a3417['filters']=_[_0xce54('0x44')](_0x2a3417['model'],_0x2a3417[_0xce54('0x42')]);_0x372c72['attributes']=_[_0xce54('0x44')](_0x2a3417[_0xce54('0x41')],qs[_0xce54('0x45')](_0x11a842[_0xce54('0x42')]['fields']));_0x372c72[_0xce54('0x46')]=_0x372c72[_0xce54('0x46')]['length']?_0x372c72['attributes']:_0x2a3417[_0xce54('0x41')];if(!_0x11a842[_0xce54('0x42')][_0xce54('0x47')](_0xce54('0x48'))){_0x372c72['limit']=qs[_0xce54('0x34')](_0x11a842['query']['limit']);_0x372c72[_0xce54('0x33')]=qs[_0xce54('0x33')](_0x11a842[_0xce54('0x42')][_0xce54('0x33')]);}_0x372c72[_0xce54('0x49')]=qs[_0xce54('0x4a')](_0x11a842[_0xce54('0x42')][_0xce54('0x4a')]);_0x372c72[_0xce54('0x4b')]=qs[_0xce54('0x4c')](_[_0xce54('0x4d')](_0x11a842['query'],_0x2a3417['filters']),_0x348686);if(_0x11a842[_0xce54('0x42')][_0xce54('0x4e')]){_0x372c72[_0xce54('0x4b')]=_[_0xce54('0x4f')](_0x372c72[_0xce54('0x4b')],{'$or':_[_0xce54('0x3d')](_0x348686,function(_0x16f517){if(_0x16f517['type']!==_0xce54('0x50')){var _0x437f88={};_0x437f88[_0x16f517[_0xce54('0x3c')]]={'$like':'%'+_0x11a842[_0xce54('0x42')][_0xce54('0x4e')]+'%'};return _0x437f88;}})});}_0x372c72=_['merge']({},_0x372c72,_0x11a842[_0xce54('0x51')]);var _0x596bfe={'where':_0x372c72[_0xce54('0x4b')]};return db[_0xce54('0x52')][_0xce54('0x36')](_0x596bfe)[_0xce54('0x24')](function(_0x94d9a2){_0x5940ad['count']=_0x94d9a2;if(_0x11a842[_0xce54('0x42')][_0xce54('0x53')]){_0x372c72[_0xce54('0x54')]=[{'all':!![]}];}return db[_0xce54('0x52')]['findAll'](_0x372c72);})['then'](function(_0x10b4f4){_0x5940ad[_0xce54('0x55')]=_0x10b4f4;return _0x5940ad;})['then'](respondWithFilteredResult(_0x262569,_0x372c72))['catch'](handleError(_0x262569,null));};exports[_0xce54('0x56')]=function(_0x310824,_0x2c3b5c){var _0x15dffe={'raw':!![],'where':{'id':_0x310824['params']['id']}},_0x38ebd4={};_0x38ebd4[_0xce54('0x41')]=_[_0xce54('0x43')](db[_0xce54('0x52')]['rawAttributes']);_0x38ebd4[_0xce54('0x42')]=_['keys'](_0x310824[_0xce54('0x42')]);_0x38ebd4[_0xce54('0x4c')]=_[_0xce54('0x44')](_0x38ebd4[_0xce54('0x41')],_0x38ebd4['query']);_0x15dffe[_0xce54('0x46')]=_[_0xce54('0x44')](_0x38ebd4[_0xce54('0x41')],qs[_0xce54('0x45')](_0x310824['query'][_0xce54('0x45')]));_0x15dffe[_0xce54('0x46')]=_0x15dffe[_0xce54('0x46')][_0xce54('0x57')]?_0x15dffe['attributes']:_0x38ebd4[_0xce54('0x41')];if(_0x310824['query'][_0xce54('0x53')]){_0x15dffe['include']=[{'all':!![]}];}_0x15dffe=_[_0xce54('0x4f')]({},_0x15dffe,_0x310824['options']);return db[_0xce54('0x52')][_0xce54('0x58')](_0x15dffe)['then'](handleEntityNotFound(_0x2c3b5c,null))[_0xce54('0x24')](respondWithResult(_0x2c3b5c,null))[_0xce54('0x2f')](handleError(_0x2c3b5c,null));};exports['create']=function(_0x28e70b,_0x76d3de){return db['OpenchannelMessage']['create'](_0x28e70b[_0xce54('0x59')],{})[_0xce54('0x24')](respondWithResult(_0x76d3de,0xc9))[_0xce54('0x2f')](handleError(_0x76d3de,null));};exports[_0xce54('0x5a')]=function(_0x527464,_0x4f5ab1){if(_0x527464[_0xce54('0x59')]['id']){delete _0x527464['body']['id'];}return db[_0xce54('0x52')][_0xce54('0x58')]({'where':{'id':_0x527464['params']['id']}})[_0xce54('0x24')](handleEntityNotFound(_0x4f5ab1,null))['then'](saveUpdates(_0x527464[_0xce54('0x59')],null))[_0xce54('0x24')](respondWithResult(_0x4f5ab1,null))['catch'](handleError(_0x4f5ab1,null));};exports[_0xce54('0x5b')]=function(_0x27653c,_0x50d2c9){return db[_0xce54('0x52')]['find']({'where':{'id':_0x27653c['params']['id']}})[_0xce54('0x24')](handleEntityNotFound(_0x50d2c9,null))['then'](removeEntity(_0x50d2c9,null))[_0xce54('0x2f')](handleError(_0x50d2c9,null));};exports[_0xce54('0x5c')]=function(_0x3e5520,_0x2a5901){return db[_0xce54('0x52')]['describe']()[_0xce54('0x24')](respondWithResult(_0x2a5901,null))['catch'](handleError(_0x2a5901,null));};var interaction_log=require('../../config/logger')(_0xce54('0x5d'));exports[_0xce54('0x5e')]=function(_0x10f9c4,_0x5b4909,_0x1fc826){var _0x291806={'agent':{},'channel':'openchannel'};if(_0x10f9c4['body']['id']){delete _0x10f9c4['body']['id'];}_0x10f9c4[_0xce54('0x59')][_0xce54('0x5f')]=!![];_0x10f9c4[_0xce54('0x59')]['readAt']=moment()[_0xce54('0x60')](_0xce54('0x61'));_0x10f9c4[_0xce54('0x59')][_0xce54('0x62')]=_0x10f9c4[_0xce54('0x59')][_0xce54('0x62')]||_0x10f9c4['user']['id'];_0x291806['agent']['id']=_0x10f9c4[_0xce54('0x59')][_0xce54('0x62')];return db['OpenchannelMessage'][_0xce54('0x58')]({'where':{'id':_0x10f9c4[_0xce54('0x63')]['id'],'UserId':null}})['then'](handleEntityNotFound(_0x5b4909,null))[_0xce54('0x24')](saveUpdates(_0x10f9c4[_0xce54('0x59')],null))[_0xce54('0x24')](function(_0x1bbc66){if(_0x1bbc66){_0x291806[_0xce54('0x2c')]=_0x1bbc66[_0xce54('0x64')]({'plain':!![]});return db[_0xce54('0x65')][_0xce54('0x58')]({'where':{'id':_0x1bbc66[_0xce54('0x66')]}});}return null;})[_0xce54('0x24')](handleEntityNotFound(_0x5b4909,null))['then'](function(_0x408b02){if(_0x408b02){return _0x408b02[_0xce54('0x5a')]({'UserId':_0x10f9c4[_0xce54('0x59')][_0xce54('0x62')],'read1stAt':_[_0xce54('0x67')](_0x408b02[_0xce54('0x68')])?moment()[_0xce54('0x60')](_0xce54('0x61')):undefined});}return null;})['then'](function(_0x5af7a3){if(_0x5af7a3){_0x291806[_0xce54('0x69')]=_0x5af7a3[_0xce54('0x64')]({'plain':!![]});interaction_log[_0xce54('0x2d')](_0xce54('0x6a'),_0x10f9c4[_0xce54('0x6b')]['id'],_0x10f9c4[_0xce54('0x6b')][_0xce54('0x3c')],_0x10f9c4['user']['role'],_0x291806[_0xce54('0x69')]['id'],_0x10f9c4['body']?JSON[_0xce54('0x29')](_0x10f9c4[_0xce54('0x59')]):_0xce54('0x6c'));return respondWithRpcPromise(_0xce54('0x6d'),_0xce54('0x6e'),_0x291806);}return null;})[_0xce54('0x24')](function(_0x4dc37e){var _0x1d76c0='SELECT\x20*\x20FROM\x20cm_contacts\x20WHERE\x20id\x20=\x20'+_0x4dc37e[_0xce54('0x2c')][_0xce54('0x6f')];return db['sequelize'][_0xce54('0x42')](_0x1d76c0,{'type':db[_0xce54('0x70')]['QueryTypes']['SELECT'],'raw':!![]})[_0xce54('0x24')](function(_0x322e95){return _0x322e95;});})[_0xce54('0x24')](function(_0x3cbed6){if(_0x3cbed6){_0x291806[_0xce54('0x2c')]['contact']=_0x3cbed6[0x0];if(!_0x10f9c4['body']['UserId'])return;return db[_0xce54('0x71')][_0xce54('0x58')]({'where':{'id':_0x10f9c4[_0xce54('0x59')][_0xce54('0x62')],'role':_0xce54('0x72')},'attributes':['id','name','fullname',_0xce54('0x73'),_0xce54('0x74')],'raw':!![]});}return null;})['then'](function(_0x3893a3){if(!_0x3893a3)return null;_0x291806[_0xce54('0x2c')]['agent']=_0x3893a3;return _0x291806;})[_0xce54('0x24')](function(_0x11c170){if(_0x11c170){if(_0x10f9c4[_0xce54('0x59')][_0xce54('0x75')]){_0x291806[_0xce54('0x2c')][_0xce54('0x76')]=util[_0xce54('0x60')]('SIP/%s',_0x10f9c4[_0xce54('0x6b')][_0xce54('0x3c')]);_0x291806[_0xce54('0x2c')][_0xce54('0x77')]=_0x291806['channel'];_0x291806[_0xce54('0x2c')]['motionChannel']=_0x291806[_0xce54('0x77')];_0x291806[_0xce54('0x2c')][_0xce54('0x78')]=_0xce54('0x5e');return respondWithRpcPromise(_0xce54('0x79'),_0xce54('0x79'),{'event':_0xce54('0x7a'),'message':_0x291806['message']},client9002)[_0xce54('0x24')](function(){return _0x291806;});}return _0x291806;}return null;})[_0xce54('0x24')](respondWithResult(_0x5b4909,null))[_0xce54('0x2f')](handleError(_0x5b4909,null));};var interaction_log=require('../../config/logger')(_0xce54('0x5d'));exports[_0xce54('0x39')]=function(_0x2283bf,_0x1b029e,_0x5b20d1){var _0x5f3617={'agent':{},'channel':_0xce54('0x7b')};if(_0x2283bf['body']['id']){delete _0x2283bf[_0xce54('0x59')]['id'];}_0x2283bf[_0xce54('0x59')][_0xce54('0x62')]=_0x2283bf['body'][_0xce54('0x62')]||_0x2283bf['user']['id'];_0x5f3617[_0xce54('0x72')]['id']=_0x2283bf[_0xce54('0x59')][_0xce54('0x62')];return db['OpenchannelMessage']['find']({'where':{'id':_0x2283bf[_0xce54('0x63')]['id'],'UserId':null}})[_0xce54('0x24')](handleEntityNotFound(_0x1b029e,null))[_0xce54('0x24')](function(_0x3c7f61){if(_0x3c7f61){_0x5f3617[_0xce54('0x2c')]=_0x3c7f61[_0xce54('0x64')]({'plain':!![]});return db[_0xce54('0x65')][_0xce54('0x58')]({'where':{'id':_0x3c7f61[_0xce54('0x66')]}});}return null;})[_0xce54('0x24')](handleEntityNotFound(_0x1b029e,null))[_0xce54('0x24')](function(_0x10b7a1){if(_0x10b7a1){_0x5f3617[_0xce54('0x69')]=_0x10b7a1['get']({'plain':!![]});interaction_log[_0xce54('0x2d')]('[OPENCHANNELMESSAGE:REJECT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s',_0x2283bf[_0xce54('0x6b')]['id'],_0x2283bf['user'][_0xce54('0x3c')],_0x2283bf[_0xce54('0x6b')][_0xce54('0x7c')],_0x5f3617[_0xce54('0x69')]['id'],_0x2283bf[_0xce54('0x59')]?JSON[_0xce54('0x29')](_0x2283bf[_0xce54('0x59')]):_0xce54('0x6c'));return respondWithRpcPromise(_0xce54('0x7d'),'rejectMessage',_0x5f3617);}return null;})[_0xce54('0x24')](function(_0x268d42){var _0x1de925=_0xce54('0x7e')+_0x268d42[_0xce54('0x2c')][_0xce54('0x6f')];return db[_0xce54('0x7f')]['query'](_0x1de925,{'type':db[_0xce54('0x70')][_0xce54('0x80')]['SELECT'],'raw':!![]})[_0xce54('0x24')](function(_0x1bdc9c){return _0x1bdc9c;});})[_0xce54('0x24')](function(_0x3e040a){if(_0x3e040a){_0x5f3617['message']['contact']=_0x3e040a[0x0];if(!_0x2283bf[_0xce54('0x59')][_0xce54('0x62')])return;return db[_0xce54('0x71')][_0xce54('0x58')]({'where':{'id':_0x2283bf[_0xce54('0x59')][_0xce54('0x62')],'role':_0xce54('0x72')},'attributes':['id',_0xce54('0x3c'),'fullname','email','internal'],'raw':!![]});}return null;})[_0xce54('0x24')](function(_0x13d9ea){if(!_0x13d9ea)return null;_0x5f3617[_0xce54('0x2c')][_0xce54('0x72')]=_0x13d9ea;return _0x5f3617;})[_0xce54('0x24')](function(_0x5a9e53){if(_0x5a9e53){_0x5a9e53[_0xce54('0x2c')]['interface']=util[_0xce54('0x60')]('SIP/%s',_0x2283bf[_0xce54('0x6b')][_0xce54('0x3c')]);_0x5a9e53[_0xce54('0x2c')][_0xce54('0x77')]=_0x5f3617[_0xce54('0x77')];_0x5a9e53['message'][_0xce54('0x81')]=_0x5f3617['channel'];_0x5a9e53[_0xce54('0x2c')][_0xce54('0x78')]=_0xce54('0x39');respondWithRpcPromise(_0xce54('0x79'),_0xce54('0x79'),{'event':'rejectmessage','message':_0x5a9e53['message']},client9002);return _0x5f3617;}return null;})[_0xce54('0x24')](respondWithResult(_0x1b029e,null))[_0xce54('0x2f')](handleError(_0x1b029e,null));};
\ No newline at end of file
index a8eee7d..748c3d1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0x1daa=['hasOwnProperty','exports','events','OpenchannelMessage','setMaxListeners','save','remove','emit'];(function(_0x27459d,_0xf21824){var _0x2fa6c4=function(_0x59963f){while(--_0x59963f){_0x27459d['push'](_0x27459d['shift']());}};_0x2fa6c4(++_0xf21824);}(_0x1daa,0x17a));var _0xa1da=function(_0x22aabe,_0x1667d4){_0x22aabe=_0x22aabe-0x0;var _0x7ae05=_0x1daa[_0x22aabe];return _0x7ae05;};'use strict';var EventEmitter=require(_0xa1da('0x0'));var OpenchannelMessage=require('../../mysqldb')['db'][_0xa1da('0x1')];var OpenchannelMessageEvents=new EventEmitter();OpenchannelMessageEvents[_0xa1da('0x2')](0x0);var events={'afterCreate':_0xa1da('0x3'),'afterUpdate':'update','afterDestroy':_0xa1da('0x4')};function emitEvent(_0x5b93f7){return function(_0x44fde4,_0x434cb5,_0x41ad1d){OpenchannelMessageEvents[_0xa1da('0x5')](_0x5b93f7+':'+_0x44fde4['id'],_0x44fde4);OpenchannelMessageEvents[_0xa1da('0x5')](_0x5b93f7,_0x44fde4);_0x41ad1d(null);};}for(var e in events){if(events[_0xa1da('0x6')](e)){var event=events[e];OpenchannelMessage['hook'](e,emitEvent(event));}}module[_0xa1da('0x7')]=OpenchannelMessageEvents;
\ No newline at end of file
index ca86899..c254920 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0x2bb2=['openchannel_messages','fti_openchannel_messages','body','FULLTEXT','models','get','direction','out','secret','isNil','UserId','findOne','OpenchannelInteractionId','then','createdAt','toLowerCase','catch','error','CmContact','OpenchannelAccount','find','OpenchannelAccountId','OpenchannelInteraction','Interactions','info','OpenchannelMessage,\x20%s,\x20%s','afterCreate','format','Forwarding\x20message\x20%d\x20to\x20%s','Interaction','omit','Contact','POST','replyUri','GET','Message\x20%d\x20forwarded\x20to\x20%s','threadId','update','inspect','finally','utf8mb4','utf8mb4_unicode_ci','../../config/logger','api','moment','request-promise','path','rimraf','../../config/environment','OpenchannelMessage'];(function(_0x1504ff,_0x5defdc){var _0x1d613e=function(_0x33816c){while(--_0x33816c){_0x1504ff['push'](_0x1504ff['shift']());}};_0x1d613e(++_0x5defdc);}(_0x2bb2,0x124));var _0x22bb=function(_0x383d46,_0x21a277){_0x383d46=_0x383d46-0x0;var _0xa53c2a=_0x2bb2[_0x383d46];return _0xa53c2a;};'use strict';var _=require('lodash');var util=require('util');var logger=require(_0x22bb('0x0'))(_0x22bb('0x1'));var moment=require(_0x22bb('0x2'));var BPromise=require('bluebird');var rp=require(_0x22bb('0x3'));var fs=require('fs');var path=require(_0x22bb('0x4'));var rimraf=require(_0x22bb('0x5'));var config=require(_0x22bb('0x6'));var attributes=require('./openchannelMessage.attributes');module['exports']=function(_0x150a93,_0x2d05f4){return _0x150a93['define'](_0x22bb('0x7'),attributes,{'tableName':_0x22bb('0x8'),'paranoid':![],'indexes':[{'name':_0x22bb('0x9'),'fields':[_0x22bb('0xa')],'type':_0x22bb('0xb')}],'timestamps':!![],'hooks':{'afterCreate':function(_0xf5648d,_0x26cc4f,_0x2a283b){var _0x4087ae=_0x150a93[_0x22bb('0xc')];var _0xc91138=_0xf5648d[_0x22bb('0xd')]({'plain':!![]});if(_0xc91138[_0x22bb('0xe')]['toLowerCase']()==='in'||_0xc91138[_0x22bb('0xe')]['toLowerCase']()===_0x22bb('0xf')&&!_0xc91138[_0x22bb('0x10')]&&!_[_0x22bb('0x11')](_0xc91138[_0x22bb('0x12')])){_0x4087ae['OpenchannelInteraction'][_0x22bb('0x13')]({'where':{'id':_0xc91138[_0x22bb('0x14')]}})[_0x22bb('0x15')](function(_0x4fbb6){if(_0x4fbb6){_0x4fbb6['update']({'lastMsgAt':_0xc91138[_0x22bb('0x16')],'lastMsgDirection':_0xc91138[_0x22bb('0xe')][_0x22bb('0x17')]()});}})[_0x22bb('0x18')](function(_0x7fd999){console[_0x22bb('0x19')](_0x7fd999);});}if(_0xc91138[_0x22bb('0xe')]===_0x22bb('0xf')&&!_0xc91138[_0x22bb('0x10')]){var _0x4aeef4;_0x4087ae[_0x22bb('0x1a')]['describe']()['then'](function(_0x3b150d){return _0x4087ae[_0x22bb('0x1b')][_0x22bb('0x1c')]({'where':{'id':_0xc91138[_0x22bb('0x1d')]},'include':[{'model':_0x4087ae[_0x22bb('0x1e')],'as':_0x22bb('0x1f'),'where':{'id':_0xc91138[_0x22bb('0x14')]},'limit':0x1,'include':[{'model':_0x4087ae[_0x22bb('0x1a')],'as':'Contact','attributes':_['keys'](_0x3b150d)}]}]});})[_0x22bb('0x15')](function(_0x39ab8c){_0x4aeef4=_0x39ab8c[_0x22bb('0xd')]({'plain':!![]});if(_0x4aeef4&&_0x4aeef4['replyUri']){logger[_0x22bb('0x20')](_0x22bb('0x21'),_0x22bb('0x22'),util[_0x22bb('0x23')](_0x22bb('0x24'),_0xc91138['id'],_0x4aeef4['replyUri']));if(_0x4aeef4[_0x22bb('0x1f')]&&_0x4aeef4[_0x22bb('0x1f')]['length']){_0xc91138[_0x22bb('0x25')]=_[_0x22bb('0x26')](_0x4aeef4[_0x22bb('0x1f')][0x0],'Contact');_0xc91138[_0x22bb('0x27')]=_0x4aeef4[_0x22bb('0x1f')][0x0][_0x22bb('0x27')];}var _0x26cc4f={'method':_0x22bb('0x28'),'uri':encodeURI(_0x4aeef4[_0x22bb('0x29')]),'json':!![],'resolveWithFullResponse':!![]};switch(_0x26cc4f['method']){case _0x22bb('0x2a'):_0x26cc4f['qs']=_0xc91138;break;case _0x22bb('0x28'):_0x26cc4f[_0x22bb('0xa')]=_0xc91138;break;}return rp(_0x26cc4f)[_0x22bb('0x15')](function(_0x29a446){logger['info']('OpenchannelMessage,\x20%s,\x20%s',_0x22bb('0x22'),util[_0x22bb('0x23')](_0x22bb('0x2b'),_0xc91138['id'],_0x4aeef4[_0x22bb('0x29')]));if(_0x29a446['body'][_0x22bb('0x2c')]&&_0x29a446[_0x22bb('0xa')][_0x22bb('0x2c')]!=_0xc91138[_0x22bb('0x25')]['threadId']){return _0x4087ae[_0x22bb('0x1e')][_0x22bb('0x2d')]({'threadId':_0x29a446[_0x22bb('0xa')][_0x22bb('0x2c')]},{'where':{'id':_0xc91138[_0x22bb('0x25')]['id']}});}else{return;}})[_0x22bb('0x15')](function(){return _0xf5648d[_0x22bb('0x2d')]({'read':!![]});})[_0x22bb('0x18')](function(_0x61ae44){logger['error'](_0x22bb('0x21'),_0x22bb('0x22'),util[_0x22bb('0x2e')](_0x61ae44,{'showHidden':![],'depth':null}));_0x2a283b();});}else{_0x2a283b();}})[_0x22bb('0x2f')](function(){_0x2a283b();});}else{_0x2a283b();}}},'charset':_0x22bb('0x30'),'collate':_0x22bb('0x31')});};
\ No newline at end of file
index 82fdff8..9158690 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0x2ef3=['lodash','util','moment','bluebird','randomstring','ioredis','../../config/utils','../../config/logger','../../config/environment','jayson/promise','redis','defaults','localhost','socket.io-emitter','./openchannelMessage.socket','register','request','then','OpenchannelMessage,\x20%s,\x20%s','debug','request\x20sent','stringify','code','error','message','result','catch','CreateOpenchannelMessage','create','options','info'];(function(_0x18e77d,_0x3ee711){var _0x513b54=function(_0xb60b0f){while(--_0xb60b0f){_0x18e77d['push'](_0x18e77d['shift']());}};_0x513b54(++_0x3ee711);}(_0x2ef3,0xba));var _0x32ef=function(_0x4ed5c7,_0x39d9f5){_0x4ed5c7=_0x4ed5c7-0x0;var _0x5c9ec3=_0x2ef3[_0x4ed5c7];return _0x5c9ec3;};'use strict';var _=require(_0x32ef('0x0'));var util=require(_0x32ef('0x1'));var moment=require(_0x32ef('0x2'));var BPromise=require(_0x32ef('0x3'));var rs=require(_0x32ef('0x4'));var fs=require('fs');var Redis=require(_0x32ef('0x5'));var db=require('../../mysqldb')['db'];var utils=require(_0x32ef('0x6'));var logger=require(_0x32ef('0x7'))('rpc');var config=require(_0x32ef('0x8'));var jayson=require(_0x32ef('0x9'));var client=jayson['client']['http']({'port':0x232a});config[_0x32ef('0xa')]=_[_0x32ef('0xb')](config[_0x32ef('0xa')],{'host':_0x32ef('0xc'),'port':0x18eb});var socket=require(_0x32ef('0xd'))(new Redis(config[_0x32ef('0xa')]));require(_0x32ef('0xe'))[_0x32ef('0xf')](socket);function respondWithRpcPromise(_0x28275c,_0x77df79,_0x56eb42){return new BPromise(function(_0x5780e9,_0x401d0b){return client[_0x32ef('0x10')](_0x28275c,_0x56eb42)[_0x32ef('0x11')](function(_0x1499c2){logger['info'](_0x32ef('0x12'),_0x77df79,'request\x20sent');logger[_0x32ef('0x13')]('OpenchannelMessage,\x20%s,\x20%s,\x20%s',_0x77df79,_0x32ef('0x14'),JSON[_0x32ef('0x15')](_0x1499c2));if(_0x1499c2['error']){if(_0x1499c2['error'][_0x32ef('0x16')]===0x1f4){logger['error'](_0x32ef('0x12'),_0x77df79,_0x1499c2[_0x32ef('0x17')][_0x32ef('0x18')]);return _0x401d0b(_0x1499c2[_0x32ef('0x17')]['message']);}logger['error']('OpenchannelMessage,\x20%s,\x20%s',_0x77df79,_0x1499c2[_0x32ef('0x17')][_0x32ef('0x18')]);return _0x5780e9(_0x1499c2[_0x32ef('0x17')]['message']);}else{logger['info'](_0x32ef('0x12'),_0x77df79,_0x32ef('0x14'));_0x5780e9(_0x1499c2[_0x32ef('0x19')]['message']);}})[_0x32ef('0x1a')](function(_0x33e230){logger['error'](_0x32ef('0x12'),_0x77df79,_0x33e230);_0x401d0b(_0x33e230);});});}exports[_0x32ef('0x1b')]=function(_0x26aff3){var _0x251084=this;return new Promise(function(_0x445cda,_0x3aec05){return db['OpenchannelMessage'][_0x32ef('0x1c')](_0x26aff3['body'],{'raw':_0x26aff3[_0x32ef('0x1d')]?_0x26aff3[_0x32ef('0x1d')]['raw']===undefined?!![]:![]:!![]})[_0x32ef('0x11')](function(_0x97780){logger[_0x32ef('0x1e')]('CreateOpenchannelMessage',_0x26aff3);logger['debug'](_0x32ef('0x1b'),_0x26aff3,JSON[_0x32ef('0x15')](_0x97780));_0x445cda(_0x97780);})[_0x32ef('0x1a')](function(_0x478bef){logger['error'](_0x32ef('0x1b'),_0x478bef['message'],_0x26aff3);_0x3aec05(_0x251084['error'](0x1f4,_0x478bef[_0x32ef('0x18')]));});});};
\ No newline at end of file
index b6ad10e..1ee8998 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0xa751=['register','length','./openchannelMessage.events','save','remove','update','emit'];(function(_0x5f09c5,_0x2bfca0){var _0x426ad9=function(_0x18fe5f){while(--_0x18fe5f){_0x5f09c5['push'](_0x5f09c5['shift']());}};_0x426ad9(++_0x2bfca0);}(_0xa751,0x175));var _0x1a75=function(_0x9df6a7,_0x1510c6){_0x9df6a7=_0x9df6a7-0x0;var _0x5ee98d=_0xa751[_0x9df6a7];return _0x5ee98d;};'use strict';var OpenchannelMessageEvents=require(_0x1a75('0x0'));var events=[_0x1a75('0x1'),_0x1a75('0x2'),_0x1a75('0x3')];function createListener(_0x558e61,_0x52638){return function(_0x4cee1b){_0x52638[_0x1a75('0x4')](_0x558e61,_0x4cee1b);};}function removeListener(_0x95fa7,_0x2ea393){return function(){OpenchannelMessageEvents['removeListener'](_0x95fa7,_0x2ea393);};}exports[_0x1a75('0x5')]=function(_0x220b14){for(var _0x1719c1=0x0,_0x2af95b=events[_0x1a75('0x6')];_0x1719c1<_0x2af95b;_0x1719c1++){var _0x692ac0=events[_0x1719c1];var _0x4537f6=createListener('openchannelMessage:'+_0x692ac0,_0x220b14);OpenchannelMessageEvents['on'](_0x692ac0,_0x4537f6);}};
\ No newline at end of file
index 6ceaaef..bb2c796 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0x3371=['put','update','delete','destroy','removeTeams','/:id/users','removeAgents','exports','util','path','express','Router','../../components/auth/service','../../components/interaction/service','get','isAuthenticated','index','describe','/:id','show','getMembers','/:id/teams','getTeams','getAgents','post','addTeams'];(function(_0x75f869,_0x3690d6){var _0x10af8b=function(_0x22d3ff){while(--_0x22d3ff){_0x75f869['push'](_0x75f869['shift']());}};_0x10af8b(++_0x3690d6);}(_0x3371,0xbe));var _0x1337=function(_0x1d8ba9,_0x1b2c15){_0x1d8ba9=_0x1d8ba9-0x0;var _0x4b9184=_0x3371[_0x1d8ba9];return _0x4b9184;};'use strict';var multer=require('multer');var util=require(_0x1337('0x0'));var path=require(_0x1337('0x1'));var timeout=require('connect-timeout');var express=require(_0x1337('0x2'));var router=express[_0x1337('0x3')]();var fs_extra=require('fs-extra');var auth=require(_0x1337('0x4'));var interaction=require(_0x1337('0x5'));var config=require('../../config/environment');var controller=require('./openchannelQueue.controller');router[_0x1337('0x6')]('/',auth[_0x1337('0x7')](),controller[_0x1337('0x8')]);router[_0x1337('0x6')]('/describe',auth['isAuthenticated'](),controller[_0x1337('0x9')]);router['get'](_0x1337('0xa'),auth[_0x1337('0x7')](),controller[_0x1337('0xb')]);router[_0x1337('0x6')]('/:id/members',auth[_0x1337('0x7')](),controller[_0x1337('0xc')]);router[_0x1337('0x6')](_0x1337('0xd'),auth[_0x1337('0x7')](),controller[_0x1337('0xe')]);router['get']('/:id/users',auth['isAuthenticated'](),controller[_0x1337('0xf')]);router[_0x1337('0x10')]('/',auth['isAuthenticated'](),controller['create']);router[_0x1337('0x10')](_0x1337('0xd'),auth[_0x1337('0x7')](),controller[_0x1337('0x11')]);router[_0x1337('0x10')]('/:id/users',auth['isAuthenticated'](),controller['addAgents']);router[_0x1337('0x12')](_0x1337('0xa'),auth[_0x1337('0x7')](),controller[_0x1337('0x13')]);router[_0x1337('0x14')](_0x1337('0xa'),auth[_0x1337('0x7')](),controller[_0x1337('0x15')]);router[_0x1337('0x14')](_0x1337('0xd'),auth[_0x1337('0x7')](),controller[_0x1337('0x16')]);router['delete'](_0x1337('0x17'),auth[_0x1337('0x7')](),controller[_0x1337('0x18')]);module[_0x1337('0x19')]=router;
\ No newline at end of file
index 89ea1b5..b673d76 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0x74cf=['beepall','roundrobin','sequelize','exports','STRING','name','INTEGER','ENUM','rrmemory'];(function(_0x59a3a2,_0x18817a){var _0x5e0f81=function(_0x51a4b3){while(--_0x51a4b3){_0x59a3a2['push'](_0x59a3a2['shift']());}};_0x5e0f81(++_0x18817a);}(_0x74cf,0x1bb));var _0xf74c=function(_0x13d577,_0x54156b){_0x13d577=_0x13d577-0x0;var _0x54304e=_0x74cf[_0x13d577];return _0x54304e;};'use strict';var Sequelize=require(_0xf74c('0x0'));module[_0xf74c('0x1')]={'name':{'type':Sequelize[_0xf74c('0x2')],'unique':_0xf74c('0x3'),'validate':{'notEmpty':!![],'is':/^[A-Za-z0-9\.\_]+$/i}},'description':{'type':Sequelize[_0xf74c('0x2')]},'timeout':{'type':Sequelize[_0xf74c('0x4')],'validate':{'min':0x1,'max':0x20c49b}},'strategy':{'type':Sequelize[_0xf74c('0x5')](_0xf74c('0x6'),_0xf74c('0x7'),_0xf74c('0x8'))}};
\ No newline at end of file
index 4d04406..39943ae 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0xa979=['sox','to-csv','ejs','lodash','squel','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','defaults','redis','localhost','socket.io-emitter','./openchannelQueue.socket','register','sendStatus','status','end','json','offset','undefined','limit','count','set','apply','reject','update','destroy','then','get','OpenchannelQueues','error','stack','name','send','index','map','OpenchannelQueue','rawAttributes','fieldName','type','key','model','query','keys','filters','intersection','attributes','fields','length','nolimit','sort','where','filter','merge','VIRTUAL','options','includeAll','include','findAll','rows','params','find','catch','create','body','user','UserProfileSection','autoAssociation','UserProfileResource','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','describe','getMembers','findOne','order','pick','UserOpenchannelQueue','findAndCountAll','agent','updatedAt','createdAt','format','%s/%s','SIP','getTeams','Team','hasOwnProperty','User','Agents','online','voicePause','interface','sequelize','transaction','addTeams','each','findOrCreate','forEach','userOpenchannelQueue:save','removeTeams','select','field','from','team_has_openchannel_queues','join','user_has_teams','ut.TeamId\x20=\x20tq.TeamId','OpenchannelQueueId\x20=\x20?','clone','ut.UserId\x20=\x20?','push','toString','every','all','union','ids','isEmpty','removeAgents','userOpenchannelQueue:remove','addAgents','omit','emit','isArray','getAgents','eml-format','fast-json-patch','request-promise','moment','mustache','util','path'];(function(_0xfae23b,_0x2be4ba){var _0x200640=function(_0x4ae258){while(--_0x4ae258){_0xfae23b['push'](_0xfae23b['shift']());}};_0x200640(++_0x2be4ba);}(_0xa979,0x197));var _0x9a97=function(_0x5adf08,_0x4528e1){_0x5adf08=_0x5adf08-0x0;var _0x1f721e=_0xa979[_0x5adf08];return _0x1f721e;};'use strict';var emlformat=require(_0x9a97('0x0'));var rimraf=require('rimraf');var zipdir=require('zip-dir');var jsonpatch=require(_0x9a97('0x1'));var rp=require(_0x9a97('0x2'));var moment=require(_0x9a97('0x3'));var BPromise=require('bluebird');var Mustache=require(_0x9a97('0x4'));var util=require(_0x9a97('0x5'));var path=require(_0x9a97('0x6'));var sox=require(_0x9a97('0x7'));var csv=require(_0x9a97('0x8'));var ejs=require(_0x9a97('0x9'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x9a97('0xa'));var squel=require(_0x9a97('0xb'));var crypto=require('crypto');var jsforce=require('jsforce');var deskjs=require(_0x9a97('0xc'));var toCsv=require(_0x9a97('0x8'));var querystring=require(_0x9a97('0xd'));var Papa=require(_0x9a97('0xe'));var Redis=require(_0x9a97('0xf'));var authService=require(_0x9a97('0x10'));var qs=require(_0x9a97('0x11'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require('../../config/license/hardware');var logger=require(_0x9a97('0x12'))(_0x9a97('0x13'));var utils=require(_0x9a97('0x14'));var config=require(_0x9a97('0x15'));var licenseUtil=require(_0x9a97('0x16'));var db=require('../../mysqldb')['db'];config['redis']=_[_0x9a97('0x17')](config[_0x9a97('0x18')],{'host':_0x9a97('0x19'),'port':0x18eb});var socket=require(_0x9a97('0x1a'))(new Redis(config[_0x9a97('0x18')]));require(_0x9a97('0x1b'))[_0x9a97('0x1c')](socket);function respondWithStatusCode(_0x412901,_0x4c3ba0){_0x4c3ba0=_0x4c3ba0||0xcc;return function(_0x10a2ee){if(_0x10a2ee){return _0x412901[_0x9a97('0x1d')](_0x4c3ba0);}return _0x412901[_0x9a97('0x1e')](_0x4c3ba0)[_0x9a97('0x1f')]();};}function respondWithResult(_0x3aadcb,_0x112ee1){_0x112ee1=_0x112ee1||0xc8;return function(_0x4dc486){if(_0x4dc486){return _0x3aadcb[_0x9a97('0x1e')](_0x112ee1)[_0x9a97('0x20')](_0x4dc486);}};}function respondWithFilteredResult(_0x367e15,_0x156e9e){return function(_0x34d7c6){if(_0x34d7c6){var _0x106388=typeof _0x156e9e[_0x9a97('0x21')]===_0x9a97('0x22')&&typeof _0x156e9e[_0x9a97('0x23')]===_0x9a97('0x22');var _0x5e23d0=_0x34d7c6['count'];var _0x27e91b=_0x106388?0x0:_0x156e9e[_0x9a97('0x21')];var _0x525309=_0x106388?_0x34d7c6[_0x9a97('0x24')]:_0x156e9e['offset']+_0x156e9e[_0x9a97('0x23')];var _0x186e6f;if(_0x525309>=_0x5e23d0){_0x525309=_0x5e23d0;_0x186e6f=0xc8;}else{_0x186e6f=0xce;}_0x367e15[_0x9a97('0x1e')](_0x186e6f);return _0x367e15[_0x9a97('0x25')]('Content-Range',_0x27e91b+'-'+_0x525309+'/'+_0x5e23d0)[_0x9a97('0x20')](_0x34d7c6);}return null;};}function patchUpdates(_0x5b15a1){return function(_0x2cf88c){try{jsonpatch[_0x9a97('0x26')](_0x2cf88c,_0x5b15a1,!![]);}catch(_0x8e3a97){return BPromise[_0x9a97('0x27')](_0x8e3a97);}return _0x2cf88c['save']();};}function saveUpdates(_0x1954b0,_0x5b19df){return function(_0x5d79fa){if(_0x5d79fa){return _0x5d79fa[_0x9a97('0x28')](_0x1954b0)['then'](function(_0x3fc08d){return _0x3fc08d;});}return null;};}function removeEntity(_0x17bdcc,_0x5c7ac2){return function(_0x2f44b1){if(_0x2f44b1){return _0x2f44b1[_0x9a97('0x29')]()[_0x9a97('0x2a')](function(){var _0x446c29=_0x2f44b1[_0x9a97('0x2b')]({'plain':!![]});var _0x568f8d=_0x9a97('0x2c');return db['UserProfileResource'][_0x9a97('0x29')]({'where':{'type':_0x568f8d,'resourceId':_0x446c29['id']}})[_0x9a97('0x2a')](function(){return _0x2f44b1;});})[_0x9a97('0x2a')](function(){_0x17bdcc[_0x9a97('0x1e')](0xcc)[_0x9a97('0x1f')]();});}};}function handleEntityNotFound(_0x3c1ebc,_0x34782b){return function(_0x3f8c8d){if(!_0x3f8c8d){_0x3c1ebc[_0x9a97('0x1d')](0x194);}return _0x3f8c8d;};}function handleError(_0x7e1de9,_0x1454f6){_0x1454f6=_0x1454f6||0x1f4;return function(_0x2c4db2){logger[_0x9a97('0x2d')](_0x2c4db2[_0x9a97('0x2e')]);if(_0x2c4db2[_0x9a97('0x2f')]){delete _0x2c4db2[_0x9a97('0x2f')];}_0x7e1de9[_0x9a97('0x1e')](_0x1454f6)[_0x9a97('0x30')](_0x2c4db2);};}exports[_0x9a97('0x31')]=function(_0x4fa8a3,_0x43d431){var _0x3e22d5={},_0x55fb1e={},_0x45c902={'count':0x0,'rows':[]};var _0x263874=_[_0x9a97('0x32')](db[_0x9a97('0x33')][_0x9a97('0x34')],function(_0x14d061){return{'name':_0x14d061[_0x9a97('0x35')],'type':_0x14d061[_0x9a97('0x36')][_0x9a97('0x37')]};});_0x55fb1e[_0x9a97('0x38')]=_[_0x9a97('0x32')](_0x263874,_0x9a97('0x2f'));_0x55fb1e[_0x9a97('0x39')]=_[_0x9a97('0x3a')](_0x4fa8a3[_0x9a97('0x39')]);_0x55fb1e[_0x9a97('0x3b')]=_[_0x9a97('0x3c')](_0x55fb1e[_0x9a97('0x38')],_0x55fb1e[_0x9a97('0x39')]);_0x3e22d5[_0x9a97('0x3d')]=_[_0x9a97('0x3c')](_0x55fb1e[_0x9a97('0x38')],qs[_0x9a97('0x3e')](_0x4fa8a3['query']['fields']));_0x3e22d5[_0x9a97('0x3d')]=_0x3e22d5[_0x9a97('0x3d')][_0x9a97('0x3f')]?_0x3e22d5[_0x9a97('0x3d')]:_0x55fb1e['model'];if(!_0x4fa8a3[_0x9a97('0x39')]['hasOwnProperty'](_0x9a97('0x40'))){_0x3e22d5[_0x9a97('0x23')]=qs['limit'](_0x4fa8a3[_0x9a97('0x39')]['limit']);_0x3e22d5[_0x9a97('0x21')]=qs[_0x9a97('0x21')](_0x4fa8a3[_0x9a97('0x39')][_0x9a97('0x21')]);}_0x3e22d5['order']=qs[_0x9a97('0x41')](_0x4fa8a3['query']['sort']);_0x3e22d5[_0x9a97('0x42')]=qs[_0x9a97('0x3b')](_['pick'](_0x4fa8a3[_0x9a97('0x39')],_0x55fb1e['filters']),_0x263874);if(_0x4fa8a3[_0x9a97('0x39')][_0x9a97('0x43')]){_0x3e22d5[_0x9a97('0x42')]=_[_0x9a97('0x44')](_0x3e22d5['where'],{'$or':_[_0x9a97('0x32')](_0x263874,function(_0x3f1a57){if(_0x3f1a57['type']!==_0x9a97('0x45')){var _0x5c4188={};_0x5c4188[_0x3f1a57['name']]={'$like':'%'+_0x4fa8a3[_0x9a97('0x39')][_0x9a97('0x43')]+'%'};return _0x5c4188;}})});}_0x3e22d5=_[_0x9a97('0x44')]({},_0x3e22d5,_0x4fa8a3[_0x9a97('0x46')]);var _0xd83cf7={'where':_0x3e22d5[_0x9a97('0x42')]};return db[_0x9a97('0x33')]['count'](_0xd83cf7)[_0x9a97('0x2a')](function(_0x2e07f0){_0x45c902[_0x9a97('0x24')]=_0x2e07f0;if(_0x4fa8a3['query'][_0x9a97('0x47')]){_0x3e22d5[_0x9a97('0x48')]=[{'all':!![]}];}return db['OpenchannelQueue'][_0x9a97('0x49')](_0x3e22d5);})[_0x9a97('0x2a')](function(_0x424384){_0x45c902[_0x9a97('0x4a')]=_0x424384;return _0x45c902;})[_0x9a97('0x2a')](respondWithFilteredResult(_0x43d431,_0x3e22d5))['catch'](handleError(_0x43d431,null));};exports['show']=function(_0x375bca,_0x4157a8){var _0xb85576={'raw':!![],'where':{'id':_0x375bca[_0x9a97('0x4b')]['id']}},_0x559950={};_0x559950[_0x9a97('0x38')]=_[_0x9a97('0x3a')](db[_0x9a97('0x33')][_0x9a97('0x34')]);_0x559950[_0x9a97('0x39')]=_['keys'](_0x375bca[_0x9a97('0x39')]);_0x559950[_0x9a97('0x3b')]=_[_0x9a97('0x3c')](_0x559950[_0x9a97('0x38')],_0x559950[_0x9a97('0x39')]);_0xb85576[_0x9a97('0x3d')]=_[_0x9a97('0x3c')](_0x559950[_0x9a97('0x38')],qs[_0x9a97('0x3e')](_0x375bca[_0x9a97('0x39')][_0x9a97('0x3e')]));_0xb85576[_0x9a97('0x3d')]=_0xb85576[_0x9a97('0x3d')][_0x9a97('0x3f')]?_0xb85576[_0x9a97('0x3d')]:_0x559950[_0x9a97('0x38')];if(_0x375bca['query'][_0x9a97('0x47')]){_0xb85576[_0x9a97('0x48')]=[{'all':!![]}];}_0xb85576=_[_0x9a97('0x44')]({},_0xb85576,_0x375bca[_0x9a97('0x46')]);return db['OpenchannelQueue'][_0x9a97('0x4c')](_0xb85576)[_0x9a97('0x2a')](handleEntityNotFound(_0x4157a8,null))[_0x9a97('0x2a')](respondWithResult(_0x4157a8,null))[_0x9a97('0x4d')](handleError(_0x4157a8,null));};exports[_0x9a97('0x4e')]=function(_0xc35ec9,_0x3965d5){return db['OpenchannelQueue'][_0x9a97('0x4e')](_0xc35ec9[_0x9a97('0x4f')],{})[_0x9a97('0x2a')](function(_0x519831){var _0x4e9cf3=_0xc35ec9[_0x9a97('0x50')][_0x9a97('0x2b')]({'plain':!![]});if(!_0x4e9cf3)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x4e9cf3['role']===_0x9a97('0x50')){var _0x4f9f39=_0x519831['get']({'plain':!![]});var _0x589252='OpenchannelQueues';return db[_0x9a97('0x51')][_0x9a97('0x4c')]({'where':{'name':_0x589252,'userProfileId':_0x4e9cf3['userProfileId']},'raw':!![]})[_0x9a97('0x2a')](function(_0x400918){if(_0x400918&&_0x400918[_0x9a97('0x52')]===0x0){return db[_0x9a97('0x53')]['create']({'name':_0x4f9f39[_0x9a97('0x2f')],'resourceId':_0x4f9f39['id'],'type':_0x400918['name'],'sectionId':_0x400918['id']},{})[_0x9a97('0x2a')](function(){return _0x519831;});}else{return _0x519831;}})[_0x9a97('0x4d')](function(_0x2ad60e){logger['error'](_0x9a97('0x54'),_0x2ad60e);throw _0x2ad60e;});}return _0x519831;})[_0x9a97('0x2a')](respondWithResult(_0x3965d5,0xc9))[_0x9a97('0x4d')](handleError(_0x3965d5,null));};exports[_0x9a97('0x28')]=function(_0x930983,_0x169770){if(_0x930983[_0x9a97('0x4f')]['id']){delete _0x930983[_0x9a97('0x4f')]['id'];}return db[_0x9a97('0x33')][_0x9a97('0x4c')]({'where':{'id':_0x930983['params']['id']}})[_0x9a97('0x2a')](handleEntityNotFound(_0x169770,null))['then'](saveUpdates(_0x930983[_0x9a97('0x4f')],null))['then'](respondWithResult(_0x169770,null))['catch'](handleError(_0x169770,null));};exports[_0x9a97('0x29')]=function(_0x11b6f7,_0xf39495){return db[_0x9a97('0x33')][_0x9a97('0x4c')]({'where':{'id':_0x11b6f7[_0x9a97('0x4b')]['id']}})[_0x9a97('0x2a')](handleEntityNotFound(_0xf39495,null))['then'](removeEntity(_0xf39495,null))['catch'](handleError(_0xf39495,null));};exports[_0x9a97('0x55')]=function(_0x2d6a30,_0x4f168c){return db[_0x9a97('0x33')][_0x9a97('0x55')]()[_0x9a97('0x2a')](respondWithResult(_0x4f168c,null))[_0x9a97('0x4d')](handleError(_0x4f168c,null));};exports[_0x9a97('0x56')]=function(_0x1b5e01,_0x4b47b9,_0x1c2232){var _0x234c39={'raw':!![],'where':{}},_0x263c4e={},_0x45d834;return db[_0x9a97('0x33')][_0x9a97('0x57')]({'where':{'id':_0x1b5e01[_0x9a97('0x4b')]['id']}})['then'](handleEntityNotFound(_0x4b47b9,null))[_0x9a97('0x2a')](function(_0x151100){if(_0x151100){_0x45d834=_0x151100[_0x9a97('0x2b')]({'plain':!![]});_0x263c4e[_0x9a97('0x38')]=_[_0x9a97('0x3a')](db['UserOpenchannelQueue'][_0x9a97('0x34')]);_0x263c4e[_0x9a97('0x39')]=_['keys'](_0x1b5e01[_0x9a97('0x39')]);_0x263c4e[_0x9a97('0x3b')]=_[_0x9a97('0x3c')](_0x263c4e[_0x9a97('0x38')],_0x263c4e[_0x9a97('0x39')]);_0x234c39[_0x9a97('0x3d')]=_[_0x9a97('0x3c')](_0x263c4e['model'],qs['fields'](_0x1b5e01['query'][_0x9a97('0x3e')]));_0x234c39[_0x9a97('0x3d')]=_0x234c39[_0x9a97('0x3d')][_0x9a97('0x3f')]?_0x234c39[_0x9a97('0x3d')]:_0x263c4e['model'];if(!_0x1b5e01[_0x9a97('0x39')]['hasOwnProperty'](_0x9a97('0x40'))){_0x234c39[_0x9a97('0x23')]=qs[_0x9a97('0x23')](_0x1b5e01[_0x9a97('0x39')][_0x9a97('0x23')]);_0x234c39['offset']=qs[_0x9a97('0x21')](_0x1b5e01[_0x9a97('0x39')][_0x9a97('0x21')]);}_0x234c39[_0x9a97('0x58')]=qs[_0x9a97('0x41')](_0x1b5e01[_0x9a97('0x39')]['sort']);_0x234c39[_0x9a97('0x42')]=qs[_0x9a97('0x3b')](_[_0x9a97('0x59')](_0x1b5e01[_0x9a97('0x39')],_0x263c4e['filters']));_0x234c39['where']['OpenchannelQueueId']=_0x151100['id'];if(_0x1b5e01['query'][_0x9a97('0x43')]){_0x234c39[_0x9a97('0x42')]=_['merge'](_0x234c39[_0x9a97('0x42')],{'$or':_[_0x9a97('0x32')](_0x234c39['attributes'],function(_0x1d51a1){var _0x3f68d5={};_0x3f68d5[_0x1d51a1]={'$like':'%'+_0x1b5e01['query'][_0x9a97('0x43')]+'%'};return _0x3f68d5;})});}_0x234c39=_[_0x9a97('0x44')]({},_0x234c39,_0x1b5e01[_0x9a97('0x46')]);return db[_0x9a97('0x5a')][_0x9a97('0x49')](_0x234c39);}})[_0x9a97('0x2a')](function(_0x396799){if(_0x396799){return db['User'][_0x9a97('0x5b')]({'where':{'id':_[_0x9a97('0x32')](_0x396799,'UserId'),'role':_0x9a97('0x5c')},'attributes':['id',_0x9a97('0x2f'),'openchannelPause',_0x9a97('0x5d'),_0x9a97('0x5e')]});}})[_0x9a97('0x2a')](function(_0x578fc6){if(_0x578fc6){return{'count':_0x578fc6[_0x9a97('0x24')],'rows':_[_0x9a97('0x32')](_0x578fc6['rows'],function(_0x11634c){return{'membername':_0x11634c[_0x9a97('0x2f')],'UserId':_0x11634c['id'],'queue_name':_0x45d834[_0x9a97('0x2f')],'OpenchannelQueueId':_0x45d834['id'],'interface':util[_0x9a97('0x5f')](_0x9a97('0x60'),_0x9a97('0x61'),_0x11634c[_0x9a97('0x2f')]),'penalty':0x0,'paused':_0x11634c['openchannelPause'],'createdAt':_0x11634c[_0x9a97('0x5e')],'updatedAt':_0x11634c[_0x9a97('0x5d')]};})};}else{return{'count':0x0,'rows':[]};}})[_0x9a97('0x2a')](respondWithFilteredResult(_0x4b47b9,_0x234c39))[_0x9a97('0x4d')](handleError(_0x4b47b9,null));};exports[_0x9a97('0x62')]=function(_0x295ee6,_0x30e30e,_0x3e4c72){var _0x5b660b={};var _0x45355e={};var _0x4d87ab;var _0x48a7d1;return db[_0x9a97('0x33')]['findOne']({'where':{'id':_0x295ee6[_0x9a97('0x4b')]['id']}})[_0x9a97('0x2a')](handleEntityNotFound(_0x30e30e,null))[_0x9a97('0x2a')](function(_0x493e7c){if(_0x493e7c){_0x4d87ab=_0x493e7c;_0x45355e[_0x9a97('0x38')]=_['keys'](db[_0x9a97('0x63')][_0x9a97('0x34')]);_0x45355e[_0x9a97('0x39')]=_[_0x9a97('0x3a')](_0x295ee6[_0x9a97('0x39')]);_0x45355e['filters']=_[_0x9a97('0x3c')](_0x45355e[_0x9a97('0x38')],_0x45355e['query']);_0x5b660b['attributes']=_[_0x9a97('0x3c')](_0x45355e['model'],qs['fields'](_0x295ee6[_0x9a97('0x39')][_0x9a97('0x3e')]));_0x5b660b[_0x9a97('0x3d')]=_0x5b660b[_0x9a97('0x3d')]['length']?_0x5b660b['attributes']:_0x45355e[_0x9a97('0x38')];_0x5b660b[_0x9a97('0x58')]=qs[_0x9a97('0x41')](_0x295ee6[_0x9a97('0x39')][_0x9a97('0x41')]);_0x5b660b['where']=qs[_0x9a97('0x3b')](_['pick'](_0x295ee6[_0x9a97('0x39')],_0x45355e['filters']));if(_0x295ee6[_0x9a97('0x39')][_0x9a97('0x43')]){_0x5b660b['where']=_[_0x9a97('0x44')](_0x5b660b[_0x9a97('0x42')],{'$or':_[_0x9a97('0x32')](_0x5b660b['attributes'],function(_0x4cbec9){var _0x20c9ca={};_0x20c9ca[_0x4cbec9]={'$like':'%'+_0x295ee6[_0x9a97('0x39')][_0x9a97('0x43')]+'%'};return _0x20c9ca;})});}_0x5b660b=_['merge']({},_0x5b660b,_0x295ee6[_0x9a97('0x46')]);return _0x4d87ab[_0x9a97('0x62')](_0x5b660b);}})[_0x9a97('0x2a')](function(_0x1d905a){if(_0x1d905a){_0x48a7d1=_0x1d905a['length'];if(!_0x295ee6[_0x9a97('0x39')][_0x9a97('0x64')](_0x9a97('0x40'))){_0x5b660b[_0x9a97('0x23')]=qs[_0x9a97('0x23')](_0x295ee6[_0x9a97('0x39')]['limit']);_0x5b660b[_0x9a97('0x21')]=qs['offset'](_0x295ee6[_0x9a97('0x39')]['offset']);}return _0x4d87ab[_0x9a97('0x62')](_0x5b660b);}})[_0x9a97('0x2a')](function(_0x5317a0){if(_0x5317a0){return _0x5317a0?{'count':_0x48a7d1,'rows':_0x5317a0}:null;}})['then'](respondWithResult(_0x30e30e,null))[_0x9a97('0x4d')](handleError(_0x30e30e,null));};exports['addTeams']=function(_0xb9c3e2,_0x253d84,_0x3d9ce3){var _0x1a226a=_0xb9c3e2['body']['ids'];return db[_0x9a97('0x63')][_0x9a97('0x49')]({'where':{'id':_0x1a226a},'attributes':['id'],'include':[{'model':db[_0x9a97('0x65')],'as':_0x9a97('0x66'),'attributes':['id',_0x9a97('0x2f'),_0x9a97('0x67'),_0x9a97('0x68'),_0x9a97('0x69')],'raw':!![]}]})[_0x9a97('0x2a')](function(_0x2c1823){if(_0x2c1823){var _0x1e8f7b=_['flatMap'](_0x2c1823,function(_0x2d9686){var _0x3d6964=_0x2d9686[_0x9a97('0x2b')]({'plain':!![]});return _0x3d6964[_0x9a97('0x66')];});return db['OpenchannelQueue'][_0x9a97('0x4c')]({'where':{'id':_0xb9c3e2[_0x9a97('0x4b')]['id']}})['then'](function(_0x35e2a4){return db[_0x9a97('0x6a')][_0x9a97('0x6b')](function(_0x4c052c){return _0x35e2a4[_0x9a97('0x6c')](_0x1a226a,{'transaction':_0x4c052c})[_0x9a97('0x2a')](function(){return BPromise[_0x9a97('0x6d')](_0x1e8f7b,function(_0x50bf5c){return db['UserOpenchannelQueue'][_0x9a97('0x6e')]({'where':{'UserId':_0x50bf5c['id'],'OpenchannelQueueId':_0xb9c3e2[_0x9a97('0x4b')]['id']},'transaction':_0x4c052c});});})[_0x9a97('0x2a')](function(){_0x1e8f7b[_0x9a97('0x6f')](function(_0x1323ee){socket['emit'](_0x9a97('0x70'),{'UserId':_0x1323ee['id'],'OpenchannelQueueId':_0x35e2a4['id']});});});});});}})['then'](respondWithStatusCode(_0x253d84,null))[_0x9a97('0x4d')](handleError(_0x253d84,null));};exports[_0x9a97('0x71')]=function(_0x53b82a,_0x51a311,_0x576a9c){return db[_0x9a97('0x63')][_0x9a97('0x49')]({'where':{'id':_0x53b82a[_0x9a97('0x39')]['ids']},'attributes':['id'],'include':[{'model':db[_0x9a97('0x65')],'as':_0x9a97('0x66'),'attributes':['id'],'raw':!![]}]})[_0x9a97('0x2a')](handleEntityNotFound(_0x51a311,null))['then'](function(_0x56e85a){var _0x21491d=_[_0x9a97('0x32')](_0x56e85a,'id');var _0x20ff9b=[];var _0x10db3e=[];var _0x1f36b9=squel[_0x9a97('0x72')]();_0x1f36b9[_0x9a97('0x73')]('tq.TeamId')[_0x9a97('0x74')](_0x9a97('0x75'),'tq')[_0x9a97('0x76')](_0x9a97('0x77'),'ut',_0x9a97('0x78'))[_0x9a97('0x42')](_0x9a97('0x79'),_0x53b82a[_0x9a97('0x4b')]['id']);for(var _0x1ea6ab=0x0;_0x1ea6ab<_0x56e85a[_0x9a97('0x3f')];_0x1ea6ab+=0x1){let _0x54ef15=_0x56e85a[_0x1ea6ab];for(var _0x4c6255=0x0;_0x4c6255<_0x54ef15['Agents']['length'];_0x4c6255+=0x1){let _0x4a73a9=_0x54ef15[_0x9a97('0x66')][_0x4c6255];var _0x474938=_0x1f36b9[_0x9a97('0x7a')]();_0x474938[_0x9a97('0x42')](_0x9a97('0x7b'),_0x4a73a9['id']);_0x10db3e[_0x9a97('0x7c')](db[_0x9a97('0x6a')][_0x9a97('0x39')](_0x474938[_0x9a97('0x7d')](),{'type':db[_0x9a97('0x6a')]['QueryTypes']['SELECT']})[_0x9a97('0x2a')](function(_0x2b8250){if(_0x2b8250[_0x9a97('0x3f')]===0x1){return _0x4a73a9['id'];}else{var _0x218e87=_[_0x9a97('0x7e')](_['map'](_0x2b8250,'TeamId'),function(_0x6509dc){return _['includes'](_0x21491d,_0x6509dc);});if(_0x218e87){return _0x4a73a9['id'];}}}));}}return BPromise[_0x9a97('0x7f')](_0x10db3e)[_0x9a97('0x2a')](function(_0x245e50){_0x20ff9b=_(_0x20ff9b)[_0x9a97('0x80')](_0x245e50)['compact']()['value']();return db['OpenchannelQueue']['find']({'where':{'id':_0x53b82a[_0x9a97('0x4b')]['id']}})[_0x9a97('0x2a')](function(_0x23f57e){return db['sequelize'][_0x9a97('0x6b')](function(_0x22eb3e){return _0x23f57e[_0x9a97('0x71')](_0x53b82a[_0x9a97('0x39')][_0x9a97('0x81')],{'transaction':_0x22eb3e})[_0x9a97('0x2a')](function(){if(!_[_0x9a97('0x82')](_0x20ff9b)){return _0x23f57e[_0x9a97('0x83')](_0x20ff9b,{'transaction':_0x22eb3e});}})[_0x9a97('0x2a')](function(){_0x20ff9b['forEach'](function(_0x3eee0e){socket['emit'](_0x9a97('0x84'),{'UserId':_0x3eee0e,'OpenchannelQueueId':_0x23f57e['id']});});});});});});})['then'](respondWithStatusCode(_0x51a311,null))[_0x9a97('0x4d')](handleError(_0x51a311,null));};exports[_0x9a97('0x85')]=function(_0x44fd1c,_0x494e69,_0x1952db){return db[_0x9a97('0x33')][_0x9a97('0x4c')]({'where':{'id':_0x44fd1c[_0x9a97('0x4b')]['id']}})[_0x9a97('0x2a')](handleEntityNotFound(_0x494e69,null))[_0x9a97('0x2a')](function(_0x3b722d){if(_0x3b722d){return _0x3b722d[_0x9a97('0x85')](_0x44fd1c['body'][_0x9a97('0x81')],_[_0x9a97('0x86')](_0x44fd1c[_0x9a97('0x4f')],['ids','id'])||{})['spread'](function(_0x2a69eb){for(var _0x1cb355=0x0;_0x1cb355<_0x44fd1c['body'][_0x9a97('0x81')][_0x9a97('0x3f')];_0x1cb355+=0x1){socket[_0x9a97('0x87')](_0x9a97('0x70'),{'UserId':Number(_0x44fd1c[_0x9a97('0x4f')][_0x9a97('0x81')][_0x1cb355]),'OpenchannelQueueId':Number(_0x44fd1c['params']['id'])});}return _0x2a69eb;});}})['then'](respondWithResult(_0x494e69,null))['catch'](handleError(_0x494e69,null));};exports[_0x9a97('0x83')]=function(_0x74dea0,_0x3b5995,_0x15b927){return db[_0x9a97('0x33')][_0x9a97('0x4c')]({'where':{'id':_0x74dea0[_0x9a97('0x4b')]['id']}})['then'](handleEntityNotFound(_0x3b5995,null))[_0x9a97('0x2a')](function(_0x3173a8){if(_0x3173a8){return _0x3173a8[_0x9a97('0x83')](_0x74dea0[_0x9a97('0x39')][_0x9a97('0x81')])[_0x9a97('0x2a')](function(){if(_[_0x9a97('0x88')](_0x74dea0[_0x9a97('0x39')]['ids'])){for(var _0x3cab55=0x0;_0x3cab55<_0x74dea0[_0x9a97('0x39')]['ids'][_0x9a97('0x3f')];_0x3cab55+=0x1){socket[_0x9a97('0x87')](_0x9a97('0x84'),{'UserId':Number(_0x74dea0['query'][_0x9a97('0x81')][_0x3cab55]),'OpenchannelQueueId':Number(_0x74dea0[_0x9a97('0x4b')]['id'])});}}else{socket[_0x9a97('0x87')](_0x9a97('0x84'),{'UserId':Number(_0x74dea0[_0x9a97('0x39')][_0x9a97('0x81')]),'OpenchannelQueueId':Number(_0x74dea0[_0x9a97('0x4b')]['id'])});}});}})[_0x9a97('0x2a')](respondWithStatusCode(_0x3b5995,null))[_0x9a97('0x4d')](handleError(_0x3b5995,null));};exports[_0x9a97('0x89')]=function(_0x1123fa,_0x1094cc,_0x4c1f47){var _0x11e669={};var _0x2b1d25={};var _0x253444;var _0x4c4167;return db['OpenchannelQueue']['findOne']({'where':{'id':_0x1123fa[_0x9a97('0x4b')]['id']}})[_0x9a97('0x2a')](handleEntityNotFound(_0x1094cc,null))['then'](function(_0x3c00c5){if(_0x3c00c5){_0x253444=_0x3c00c5;_0x2b1d25[_0x9a97('0x38')]=_[_0x9a97('0x3a')](db['User'][_0x9a97('0x34')]);_0x2b1d25['query']=_[_0x9a97('0x3a')](_0x1123fa[_0x9a97('0x39')]);_0x2b1d25[_0x9a97('0x3b')]=_['intersection'](_0x2b1d25[_0x9a97('0x38')],_0x2b1d25['query']);_0x11e669['attributes']=_[_0x9a97('0x3c')](_0x2b1d25[_0x9a97('0x38')],qs[_0x9a97('0x3e')](_0x1123fa[_0x9a97('0x39')][_0x9a97('0x3e')]));_0x11e669['attributes']=_0x11e669['attributes'][_0x9a97('0x3f')]?_0x11e669[_0x9a97('0x3d')]:_0x2b1d25['model'];_0x11e669['order']=qs[_0x9a97('0x41')](_0x1123fa[_0x9a97('0x39')][_0x9a97('0x41')]);_0x11e669['where']=qs[_0x9a97('0x3b')](_[_0x9a97('0x59')](_0x1123fa[_0x9a97('0x39')],_0x2b1d25[_0x9a97('0x3b')]));if(_0x1123fa[_0x9a97('0x39')]['filter']){_0x11e669[_0x9a97('0x42')]=_[_0x9a97('0x44')](_0x11e669['where'],{'$or':_[_0x9a97('0x32')](_0x11e669[_0x9a97('0x3d')],function(_0xcd7761){var _0x2dc8d6={};_0x2dc8d6[_0xcd7761]={'$like':'%'+_0x1123fa[_0x9a97('0x39')][_0x9a97('0x43')]+'%'};return _0x2dc8d6;})});}_0x11e669=_[_0x9a97('0x44')]({},_0x11e669,_0x1123fa[_0x9a97('0x46')]);return _0x253444[_0x9a97('0x89')](_0x11e669);}})['then'](function(_0x153028){if(_0x153028){_0x4c4167=_0x153028[_0x9a97('0x3f')];if(!_0x1123fa[_0x9a97('0x39')]['hasOwnProperty']('nolimit')){_0x11e669[_0x9a97('0x23')]=qs['limit'](_0x1123fa[_0x9a97('0x39')][_0x9a97('0x23')]);_0x11e669[_0x9a97('0x21')]=qs[_0x9a97('0x21')](_0x1123fa[_0x9a97('0x39')]['offset']);}return _0x253444[_0x9a97('0x89')](_0x11e669);}})[_0x9a97('0x2a')](function(_0x1aee90){if(_0x1aee90){return _0x1aee90?{'count':_0x4c4167,'rows':_0x1aee90}:null;}})[_0x9a97('0x2a')](respondWithResult(_0x1094cc,null))['catch'](handleError(_0x1094cc,null));};
\ No newline at end of file
index 15d5f05..0785fb9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0xc53e=['hook','exports','events','../../mysqldb','save','update','remove','emit','hasOwnProperty'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0xc53e,0x6e));var _0xec53=function(_0x550d12,_0x5384bd){_0x550d12=_0x550d12-0x0;var _0x12103d=_0xc53e[_0x550d12];return _0x12103d;};'use strict';var EventEmitter=require(_0xec53('0x0'));var OpenchannelQueue=require(_0xec53('0x1'))['db']['OpenchannelQueue'];var OpenchannelQueueEvents=new EventEmitter();OpenchannelQueueEvents['setMaxListeners'](0x0);var events={'afterCreate':_0xec53('0x2'),'afterUpdate':_0xec53('0x3'),'afterDestroy':_0xec53('0x4')};function emitEvent(_0x2ad366){return function(_0x59b02d,_0x6b91a4,_0x1f1594){OpenchannelQueueEvents[_0xec53('0x5')](_0x2ad366+':'+_0x59b02d['id'],_0x59b02d);OpenchannelQueueEvents[_0xec53('0x5')](_0x2ad366,_0x59b02d);_0x1f1594(null);};}for(var e in events){if(events[_0xec53('0x6')](e)){var event=events[e];OpenchannelQueue[_0xec53('0x7')](e,emitEvent(event));}}module[_0xec53('0x8')]=OpenchannelQueueEvents;
\ No newline at end of file
index ca7018b..b8bdbf5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0x0490=['rimraf','../../config/environment','./openchannelQueue.attributes','exports','define','OpenchannelQueue','openchannel_queues','lodash','util','../../config/logger','api','bluebird','request-promise','path'];(function(_0x6bc35d,_0x1041b8){var _0x53a61e=function(_0x13a86e){while(--_0x13a86e){_0x6bc35d['push'](_0x6bc35d['shift']());}};_0x53a61e(++_0x1041b8);}(_0x0490,0xf5));var _0x0049=function(_0x393296,_0x721403){_0x393296=_0x393296-0x0;var _0x2dee6f=_0x0490[_0x393296];return _0x2dee6f;};'use strict';var _=require(_0x0049('0x0'));var util=require(_0x0049('0x1'));var logger=require(_0x0049('0x2'))(_0x0049('0x3'));var moment=require('moment');var BPromise=require(_0x0049('0x4'));var rp=require(_0x0049('0x5'));var fs=require('fs');var path=require(_0x0049('0x6'));var rimraf=require(_0x0049('0x7'));var config=require(_0x0049('0x8'));var attributes=require(_0x0049('0x9'));module[_0x0049('0xa')]=function(_0x47b6b4,_0x2385d8){return _0x47b6b4[_0x0049('0xb')](_0x0049('0xc'),attributes,{'tableName':_0x0049('0xd'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 8029339..ca47417 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0xfa7a=['catch','OpenchannelQueue','options','where','attributes','limit','include','map','model','GetOpenchannelQueue','stringify','find','raw','ShowOpenchannelQueue','lodash','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','redis','defaults','localhost','./openchannelQueue.socket','request','then','info','OpenchannelQueue,\x20%s,\x20%s','request\x20sent','error','code','message'];(function(_0x3e704d,_0x5727ea){var _0x3b26d4=function(_0x206187){while(--_0x206187){_0x3e704d['push'](_0x3e704d['shift']());}};_0x3b26d4(++_0x5727ea);}(_0xfa7a,0x7d));var _0xafa7=function(_0x320b86,_0x3575b8){_0x320b86=_0x320b86-0x0;var _0x5c5312=_0xfa7a[_0x320b86];return _0x5c5312;};'use strict';var _=require(_0xafa7('0x0'));var util=require('util');var moment=require('moment');var BPromise=require(_0xafa7('0x1'));var rs=require(_0xafa7('0x2'));var fs=require('fs');var Redis=require(_0xafa7('0x3'));var db=require(_0xafa7('0x4'))['db'];var utils=require(_0xafa7('0x5'));var logger=require(_0xafa7('0x6'))(_0xafa7('0x7'));var config=require(_0xafa7('0x8'));var jayson=require(_0xafa7('0x9'));var client=jayson[_0xafa7('0xa')]['http']({'port':0x232a});config[_0xafa7('0xb')]=_[_0xafa7('0xc')](config[_0xafa7('0xb')],{'host':_0xafa7('0xd'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0xafa7('0xb')]));require(_0xafa7('0xe'))['register'](socket);function respondWithRpcPromise(_0x5f5cda,_0xa70b06,_0x1e38f9){return new BPromise(function(_0xe9599,_0x3eb2a9){return client[_0xafa7('0xf')](_0x5f5cda,_0x1e38f9)[_0xafa7('0x10')](function(_0x491c60){logger[_0xafa7('0x11')](_0xafa7('0x12'),_0xa70b06,_0xafa7('0x13'));logger['debug']('OpenchannelQueue,\x20%s,\x20%s,\x20%s',_0xa70b06,_0xafa7('0x13'),JSON['stringify'](_0x491c60));if(_0x491c60[_0xafa7('0x14')]){if(_0x491c60['error'][_0xafa7('0x15')]===0x1f4){logger['error'](_0xafa7('0x12'),_0xa70b06,_0x491c60[_0xafa7('0x14')][_0xafa7('0x16')]);return _0x3eb2a9(_0x491c60[_0xafa7('0x14')]['message']);}logger[_0xafa7('0x14')](_0xafa7('0x12'),_0xa70b06,_0x491c60['error'][_0xafa7('0x16')]);return _0xe9599(_0x491c60[_0xafa7('0x14')][_0xafa7('0x16')]);}else{logger[_0xafa7('0x11')](_0xafa7('0x12'),_0xa70b06,_0xafa7('0x13'));_0xe9599(_0x491c60['result'][_0xafa7('0x16')]);}})[_0xafa7('0x17')](function(_0x11a56d){logger[_0xafa7('0x14')](_0xafa7('0x12'),_0xa70b06,_0x11a56d);_0x3eb2a9(_0x11a56d);});});}exports['GetOpenchannelQueue']=function(_0xf8aca2){var _0x11b56e=this;return new Promise(function(_0x2a53d3,_0x3723b4){return db[_0xafa7('0x18')]['findAll']({'raw':_0xf8aca2[_0xafa7('0x19')]?_0xf8aca2[_0xafa7('0x19')]['raw']===undefined?!![]:![]:!![],'where':_0xf8aca2[_0xafa7('0x19')]?_0xf8aca2[_0xafa7('0x19')][_0xafa7('0x1a')]||null:null,'attributes':_0xf8aca2[_0xafa7('0x19')]?_0xf8aca2['options'][_0xafa7('0x1b')]||null:null,'limit':_0xf8aca2['options']?_0xf8aca2[_0xafa7('0x19')][_0xafa7('0x1c')]||null:null,'include':_0xf8aca2[_0xafa7('0x19')]?_0xf8aca2[_0xafa7('0x19')][_0xafa7('0x1d')]?_[_0xafa7('0x1e')](_0xf8aca2[_0xafa7('0x19')]['include'],function(_0x51c4e6){return{'model':db[_0x51c4e6[_0xafa7('0x1f')]],'as':_0x51c4e6['as'],'attributes':_0x51c4e6[_0xafa7('0x1b')],'include':_0x51c4e6[_0xafa7('0x1d')]?_['map'](_0x51c4e6['include'],function(_0x40819f){return{'model':db[_0x40819f[_0xafa7('0x1f')]],'as':_0x40819f['as'],'attributes':_0x40819f[_0xafa7('0x1b')],'include':_0x40819f[_0xafa7('0x1d')]?_[_0xafa7('0x1e')](_0x40819f[_0xafa7('0x1d')],function(_0x510153){return{'model':db[_0x510153['model']],'as':_0x510153['as'],'attributes':_0x510153[_0xafa7('0x1b')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x33e08f){logger['info'](_0xafa7('0x20'),_0xf8aca2);logger['debug']('GetOpenchannelQueue',_0xf8aca2,JSON[_0xafa7('0x21')](_0x33e08f));_0x2a53d3(_0x33e08f);})[_0xafa7('0x17')](function(_0x2cf72d){logger[_0xafa7('0x14')](_0xafa7('0x20'),_0x2cf72d['message'],_0xf8aca2);_0x3723b4(_0x11b56e['error'](0x1f4,_0x2cf72d[_0xafa7('0x16')]));});});};exports['ShowOpenchannelQueue']=function(_0x3ce3fc){var _0x227a5d=this;return new Promise(function(_0x4ee978,_0x32318e){return db[_0xafa7('0x18')][_0xafa7('0x22')]({'raw':_0x3ce3fc[_0xafa7('0x19')]?_0x3ce3fc['options'][_0xafa7('0x23')]===undefined?!![]:![]:!![],'where':_0x3ce3fc[_0xafa7('0x19')]?_0x3ce3fc[_0xafa7('0x19')]['where']||null:null,'attributes':_0x3ce3fc['options']?_0x3ce3fc[_0xafa7('0x19')][_0xafa7('0x1b')]||null:null,'include':_0x3ce3fc[_0xafa7('0x19')]?_0x3ce3fc['options'][_0xafa7('0x1d')]?_[_0xafa7('0x1e')](_0x3ce3fc[_0xafa7('0x19')]['include'],function(_0x40cbb8){return{'model':db[_0x40cbb8['model']],'as':_0x40cbb8['as'],'attributes':_0x40cbb8[_0xafa7('0x1b')],'include':_0x40cbb8['include']?_[_0xafa7('0x1e')](_0x40cbb8[_0xafa7('0x1d')],function(_0x275787){return{'model':db[_0x275787['model']],'as':_0x275787['as'],'attributes':_0x275787[_0xafa7('0x1b')],'include':_0x275787['include']?_[_0xafa7('0x1e')](_0x275787[_0xafa7('0x1d')],function(_0x2814d6){return{'model':db[_0x2814d6['model']],'as':_0x2814d6['as'],'attributes':_0x2814d6[_0xafa7('0x1b')]};}):[]};}):[]};}):[]:[]})[_0xafa7('0x10')](function(_0x14e2c7){logger[_0xafa7('0x11')](_0xafa7('0x24'),_0x3ce3fc);logger['debug'](_0xafa7('0x24'),_0x3ce3fc,JSON[_0xafa7('0x21')](_0x14e2c7));_0x4ee978(_0x14e2c7);})[_0xafa7('0x17')](function(_0x179822){logger[_0xafa7('0x14')](_0xafa7('0x24'),_0x179822['message'],_0x3ce3fc);_0x32318e(_0x227a5d[_0xafa7('0x14')](0x1f4,_0x179822[_0xafa7('0x16')]));});});};
\ No newline at end of file
index 4db90b6..33fc78f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0x703a=['openchannelQueue:','save','remove','update','emit','removeListener','length'];(function(_0x266468,_0x172a1d){var _0x12dc02=function(_0x4d0f99){while(--_0x4d0f99){_0x266468['push'](_0x266468['shift']());}};_0x12dc02(++_0x172a1d);}(_0x703a,0x15f));var _0xa703=function(_0x486dca,_0x115467){_0x486dca=_0x486dca-0x0;var _0x2c7aa0=_0x703a[_0x486dca];return _0x2c7aa0;};'use strict';var OpenchannelQueueEvents=require('./openchannelQueue.events');var events=[_0xa703('0x0'),_0xa703('0x1'),_0xa703('0x2')];function createListener(_0x35003b,_0x23e384){return function(_0x24a21a){_0x23e384[_0xa703('0x3')](_0x35003b,_0x24a21a);};}function removeListener(_0x4f1b07,_0x4fc7ca){return function(){OpenchannelQueueEvents[_0xa703('0x4')](_0x4f1b07,_0x4fc7ca);};}exports['register']=function(_0x12e48b){for(var _0x5b472b=0x0,_0xceb35f=events[_0xa703('0x5')];_0x5b472b<_0xceb35f;_0x5b472b++){var _0x103146=events[_0x5b472b];var _0x451dfe=createListener(_0xa703('0x6')+_0x103146,_0x12e48b);OpenchannelQueueEvents['on'](_0x103146,_0x451dfe);}};
\ No newline at end of file
index de77552..90ee84c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0xadfa=['../../components/auth/service','../../components/interaction/service','../../config/environment','./openchannelQueueReport.controller','get','isAuthenticated','index','/describe','describe','/:id','show','post','create','put','update','destroy','exports','multer','util','connect-timeout','express','Router','fs-extra'];(function(_0x3314af,_0x433b48){var _0x3a2152=function(_0x319c80){while(--_0x319c80){_0x3314af['push'](_0x3314af['shift']());}};_0x3a2152(++_0x433b48);}(_0xadfa,0xb2));var _0xaadf=function(_0x636145,_0x405cb9){_0x636145=_0x636145-0x0;var _0x4d2edb=_0xadfa[_0x636145];return _0x4d2edb;};'use strict';var multer=require(_0xaadf('0x0'));var util=require(_0xaadf('0x1'));var path=require('path');var timeout=require(_0xaadf('0x2'));var express=require(_0xaadf('0x3'));var router=express[_0xaadf('0x4')]();var fs_extra=require(_0xaadf('0x5'));var auth=require(_0xaadf('0x6'));var interaction=require(_0xaadf('0x7'));var config=require(_0xaadf('0x8'));var controller=require(_0xaadf('0x9'));router[_0xaadf('0xa')]('/',auth[_0xaadf('0xb')](),controller[_0xaadf('0xc')]);router[_0xaadf('0xa')](_0xaadf('0xd'),auth[_0xaadf('0xb')](),controller[_0xaadf('0xe')]);router[_0xaadf('0xa')](_0xaadf('0xf'),auth['isAuthenticated'](),controller[_0xaadf('0x10')]);router[_0xaadf('0x11')]('/',auth[_0xaadf('0xb')](),controller[_0xaadf('0x12')]);router[_0xaadf('0x13')]('/:id',auth['isAuthenticated'](),controller[_0xaadf('0x14')]);router['delete']('/:id',auth[_0xaadf('0xb')](),controller[_0xaadf('0x15')]);module[_0xaadf('0x16')]=router;
\ No newline at end of file
index 028ff8d..f0df107 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0x8e3c=['sequelize','exports','STRING','DATE','moment'];(function(_0x4c12ce,_0x1e76c8){var _0x1c94ba=function(_0x40450e){while(--_0x40450e){_0x4c12ce['push'](_0x4c12ce['shift']());}};_0x1c94ba(++_0x1e76c8);}(_0x8e3c,0x14e));var _0xc8e3=function(_0xf1f0bc,_0x523550){_0xf1f0bc=_0xf1f0bc-0x0;var _0x2bc5d6=_0x8e3c[_0xf1f0bc];return _0x2bc5d6;};'use strict';var moment=require(_0xc8e3('0x0'));var Sequelize=require(_0xc8e3('0x1'));module[_0xc8e3('0x2')]={'uniqueid':{'type':Sequelize[_0xc8e3('0x3')],'allowNull':![]},'from':{'type':Sequelize['STRING']},'joinAt':{'type':Sequelize[_0xc8e3('0x4')]},'leaveAt':{'type':Sequelize[_0xc8e3('0x4')]},'acceptAt':{'type':Sequelize[_0xc8e3('0x4')]},'exitAt':{'type':Sequelize[_0xc8e3('0x4')]},'reason':{'type':Sequelize[_0xc8e3('0x3')]}};
\ No newline at end of file
index 7c37184..036b3db 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0xf4bd=['status','json','offset','undefined','limit','count','set','Content-Range','apply','reject','then','error','name','send','index','OpenchannelQueueReport','rawAttributes','fieldName','model','query','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','pick','filter','merge','map','type','options','includeAll','include','rows','catch','show','params','keys','find','create','body','destroy','describe','eml-format','rimraf','zip-dir','fast-json-patch','moment','bluebird','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/environment','../../config/license/util','../../mysqldb','sendStatus'];(function(_0x8c43de,_0x90ff31){var _0xa6591b=function(_0x469716){while(--_0x469716){_0x8c43de['push'](_0x8c43de['shift']());}};_0xa6591b(++_0x90ff31);}(_0xf4bd,0x117));var _0xdf4b=function(_0x4fc9e6,_0xc51915){_0x4fc9e6=_0x4fc9e6-0x0;var _0x551d28=_0xf4bd[_0x4fc9e6];return _0x551d28;};'use strict';var emlformat=require(_0xdf4b('0x0'));var rimraf=require(_0xdf4b('0x1'));var zipdir=require(_0xdf4b('0x2'));var jsonpatch=require(_0xdf4b('0x3'));var rp=require('request-promise');var moment=require(_0xdf4b('0x4'));var BPromise=require(_0xdf4b('0x5'));var Mustache=require(_0xdf4b('0x6'));var util=require(_0xdf4b('0x7'));var path=require(_0xdf4b('0x8'));var sox=require(_0xdf4b('0x9'));var csv=require('to-csv');var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0xdf4b('0xa'));var _=require(_0xdf4b('0xb'));var squel=require(_0xdf4b('0xc'));var crypto=require(_0xdf4b('0xd'));var jsforce=require(_0xdf4b('0xe'));var deskjs=require(_0xdf4b('0xf'));var toCsv=require(_0xdf4b('0x10'));var querystring=require(_0xdf4b('0x11'));var Papa=require(_0xdf4b('0x12'));var Redis=require(_0xdf4b('0x13'));var authService=require(_0xdf4b('0x14'));var qs=require(_0xdf4b('0x15'));var as=require(_0xdf4b('0x16'));var hardwareService=require(_0xdf4b('0x17'));var logger=require(_0xdf4b('0x18'))('api');var utils=require('../../config/utils');var config=require(_0xdf4b('0x19'));var licenseUtil=require(_0xdf4b('0x1a'));var db=require(_0xdf4b('0x1b'))['db'];function respondWithStatusCode(_0x4873e8,_0x11d832){_0x11d832=_0x11d832||0xcc;return function(_0x566772){if(_0x566772){return _0x4873e8[_0xdf4b('0x1c')](_0x11d832);}return _0x4873e8[_0xdf4b('0x1d')](_0x11d832)['end']();};}function respondWithResult(_0x58b91b,_0x6fbaec){_0x6fbaec=_0x6fbaec||0xc8;return function(_0x1ee7d5){if(_0x1ee7d5){return _0x58b91b['status'](_0x6fbaec)[_0xdf4b('0x1e')](_0x1ee7d5);}};}function respondWithFilteredResult(_0x5535b9,_0x577b7c){return function(_0x172d78){if(_0x172d78){var _0x88fec2=typeof _0x577b7c[_0xdf4b('0x1f')]===_0xdf4b('0x20')&&typeof _0x577b7c[_0xdf4b('0x21')]==='undefined';var _0x33ae02=_0x172d78['count'];var _0x246e7c=_0x88fec2?0x0:_0x577b7c[_0xdf4b('0x1f')];var _0x410a59=_0x88fec2?_0x172d78[_0xdf4b('0x22')]:_0x577b7c['offset']+_0x577b7c[_0xdf4b('0x21')];var _0x312bcb;if(_0x410a59>=_0x33ae02){_0x410a59=_0x33ae02;_0x312bcb=0xc8;}else{_0x312bcb=0xce;}_0x5535b9[_0xdf4b('0x1d')](_0x312bcb);return _0x5535b9[_0xdf4b('0x23')](_0xdf4b('0x24'),_0x246e7c+'-'+_0x410a59+'/'+_0x33ae02)[_0xdf4b('0x1e')](_0x172d78);}return null;};}function patchUpdates(_0x2cd58e){return function(_0x143597){try{jsonpatch[_0xdf4b('0x25')](_0x143597,_0x2cd58e,!![]);}catch(_0x1be936){return BPromise[_0xdf4b('0x26')](_0x1be936);}return _0x143597['save']();};}function saveUpdates(_0x255c0e,_0x23476a){return function(_0x5d26d0){if(_0x5d26d0){return _0x5d26d0['update'](_0x255c0e)['then'](function(_0x1da749){return _0x1da749;});}return null;};}function removeEntity(_0x4f7c82,_0xc59237){return function(_0x2807c2){if(_0x2807c2){return _0x2807c2['destroy']()[_0xdf4b('0x27')](function(){_0x4f7c82[_0xdf4b('0x1d')](0xcc)['end']();});}};}function handleEntityNotFound(_0x131193,_0xde4b7e){return function(_0x5e3204){if(!_0x5e3204){_0x131193[_0xdf4b('0x1c')](0x194);}return _0x5e3204;};}function handleError(_0x12bdf6,_0x33d1ba){_0x33d1ba=_0x33d1ba||0x1f4;return function(_0x5d7f94){logger[_0xdf4b('0x28')](_0x5d7f94['stack']);if(_0x5d7f94[_0xdf4b('0x29')]){delete _0x5d7f94[_0xdf4b('0x29')];}_0x12bdf6[_0xdf4b('0x1d')](_0x33d1ba)[_0xdf4b('0x2a')](_0x5d7f94);};}exports[_0xdf4b('0x2b')]=function(_0x1e1abf,_0xa7bd20){var _0x1d4b21={},_0x56888e={},_0x1ca2db={'count':0x0,'rows':[]};var _0x25705b=_['map'](db[_0xdf4b('0x2c')][_0xdf4b('0x2d')],function(_0x2fba5a){return{'name':_0x2fba5a[_0xdf4b('0x2e')],'type':_0x2fba5a['type']['key']};});_0x56888e[_0xdf4b('0x2f')]=_['map'](_0x25705b,_0xdf4b('0x29'));_0x56888e[_0xdf4b('0x30')]=_['keys'](_0x1e1abf['query']);_0x56888e[_0xdf4b('0x31')]=_[_0xdf4b('0x32')](_0x56888e[_0xdf4b('0x2f')],_0x56888e[_0xdf4b('0x30')]);_0x1d4b21[_0xdf4b('0x33')]=_[_0xdf4b('0x32')](_0x56888e[_0xdf4b('0x2f')],qs[_0xdf4b('0x34')](_0x1e1abf[_0xdf4b('0x30')][_0xdf4b('0x34')]));_0x1d4b21['attributes']=_0x1d4b21[_0xdf4b('0x33')][_0xdf4b('0x35')]?_0x1d4b21['attributes']:_0x56888e[_0xdf4b('0x2f')];if(!_0x1e1abf[_0xdf4b('0x30')][_0xdf4b('0x36')](_0xdf4b('0x37'))){_0x1d4b21[_0xdf4b('0x21')]=qs[_0xdf4b('0x21')](_0x1e1abf[_0xdf4b('0x30')][_0xdf4b('0x21')]);_0x1d4b21['offset']=qs[_0xdf4b('0x1f')](_0x1e1abf['query'][_0xdf4b('0x1f')]);}_0x1d4b21[_0xdf4b('0x38')]=qs[_0xdf4b('0x39')](_0x1e1abf[_0xdf4b('0x30')]['sort']);_0x1d4b21[_0xdf4b('0x3a')]=qs[_0xdf4b('0x31')](_[_0xdf4b('0x3b')](_0x1e1abf['query'],_0x56888e[_0xdf4b('0x31')]),_0x25705b);if(_0x1e1abf[_0xdf4b('0x30')][_0xdf4b('0x3c')]){_0x1d4b21['where']=_[_0xdf4b('0x3d')](_0x1d4b21[_0xdf4b('0x3a')],{'$or':_[_0xdf4b('0x3e')](_0x25705b,function(_0x2a0108){if(_0x2a0108[_0xdf4b('0x3f')]!=='VIRTUAL'){var _0x30d211={};_0x30d211[_0x2a0108[_0xdf4b('0x29')]]={'$like':'%'+_0x1e1abf['query'][_0xdf4b('0x3c')]+'%'};return _0x30d211;}})});}_0x1d4b21=_[_0xdf4b('0x3d')]({},_0x1d4b21,_0x1e1abf[_0xdf4b('0x40')]);var _0x3277f3={'where':_0x1d4b21[_0xdf4b('0x3a')]};return db[_0xdf4b('0x2c')][_0xdf4b('0x22')](_0x3277f3)[_0xdf4b('0x27')](function(_0x2dc4ec){_0x1ca2db[_0xdf4b('0x22')]=_0x2dc4ec;if(_0x1e1abf['query'][_0xdf4b('0x41')]){_0x1d4b21[_0xdf4b('0x42')]=[{'all':!![]}];}return db[_0xdf4b('0x2c')]['findAll'](_0x1d4b21);})[_0xdf4b('0x27')](function(_0x1f7a93){_0x1ca2db[_0xdf4b('0x43')]=_0x1f7a93;return _0x1ca2db;})[_0xdf4b('0x27')](respondWithFilteredResult(_0xa7bd20,_0x1d4b21))[_0xdf4b('0x44')](handleError(_0xa7bd20,null));};exports[_0xdf4b('0x45')]=function(_0x564bc8,_0x50108a){var _0x33aabd={'raw':!![],'where':{'id':_0x564bc8[_0xdf4b('0x46')]['id']}},_0xdb237e={};_0xdb237e[_0xdf4b('0x2f')]=_[_0xdf4b('0x47')](db[_0xdf4b('0x2c')][_0xdf4b('0x2d')]);_0xdb237e['query']=_['keys'](_0x564bc8['query']);_0xdb237e['filters']=_[_0xdf4b('0x32')](_0xdb237e['model'],_0xdb237e[_0xdf4b('0x30')]);_0x33aabd['attributes']=_[_0xdf4b('0x32')](_0xdb237e[_0xdf4b('0x2f')],qs[_0xdf4b('0x34')](_0x564bc8[_0xdf4b('0x30')][_0xdf4b('0x34')]));_0x33aabd[_0xdf4b('0x33')]=_0x33aabd[_0xdf4b('0x33')][_0xdf4b('0x35')]?_0x33aabd[_0xdf4b('0x33')]:_0xdb237e[_0xdf4b('0x2f')];if(_0x564bc8['query']['includeAll']){_0x33aabd[_0xdf4b('0x42')]=[{'all':!![]}];}_0x33aabd=_['merge']({},_0x33aabd,_0x564bc8[_0xdf4b('0x40')]);return db[_0xdf4b('0x2c')][_0xdf4b('0x48')](_0x33aabd)['then'](handleEntityNotFound(_0x50108a,null))[_0xdf4b('0x27')](respondWithResult(_0x50108a,null))[_0xdf4b('0x44')](handleError(_0x50108a,null));};exports[_0xdf4b('0x49')]=function(_0x133962,_0x5631ee){return db['OpenchannelQueueReport'][_0xdf4b('0x49')](_0x133962[_0xdf4b('0x4a')],{})[_0xdf4b('0x27')](respondWithResult(_0x5631ee,0xc9))[_0xdf4b('0x44')](handleError(_0x5631ee,null));};exports['update']=function(_0xd83a92,_0x1a873a){if(_0xd83a92[_0xdf4b('0x4a')]['id']){delete _0xd83a92[_0xdf4b('0x4a')]['id'];}return db[_0xdf4b('0x2c')]['find']({'where':{'id':_0xd83a92[_0xdf4b('0x46')]['id']}})[_0xdf4b('0x27')](handleEntityNotFound(_0x1a873a,null))[_0xdf4b('0x27')](saveUpdates(_0xd83a92[_0xdf4b('0x4a')],null))[_0xdf4b('0x27')](respondWithResult(_0x1a873a,null))[_0xdf4b('0x44')](handleError(_0x1a873a,null));};exports[_0xdf4b('0x4b')]=function(_0x54cc0d,_0x376d31){return db[_0xdf4b('0x2c')][_0xdf4b('0x48')]({'where':{'id':_0x54cc0d[_0xdf4b('0x46')]['id']}})['then'](handleEntityNotFound(_0x376d31,null))[_0xdf4b('0x27')](removeEntity(_0x376d31,null))[_0xdf4b('0x44')](handleError(_0x376d31,null));};exports[_0xdf4b('0x4c')]=function(_0x2ead96,_0x5dba31){return db[_0xdf4b('0x2c')][_0xdf4b('0x4c')]()['then'](respondWithResult(_0x5dba31,null))[_0xdf4b('0x44')](handleError(_0x5dba31,null));};
\ No newline at end of file
index 2f5b471..4760116 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x326f=['api','moment','bluebird','request-promise','path','rimraf','../../config/environment','./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
+var _0x814b=['../../config/logger','api','moment','bluebird','path','rimraf','../../config/environment','./openchannelQueueReport.attributes','exports','define','OpenchannelQueueReport','uniqueid','lodash','util'];(function(_0x333714,_0x3370ac){var _0x4c211e=function(_0x34219b){while(--_0x34219b){_0x333714['push'](_0x333714['shift']());}};_0x4c211e(++_0x3370ac);}(_0x814b,0x1a2));var _0xb814=function(_0x15876c,_0x510dd4){_0x15876c=_0x15876c-0x0;var _0x39d91b=_0x814b[_0x15876c];return _0x39d91b;};'use strict';var _=require(_0xb814('0x0'));var util=require(_0xb814('0x1'));var logger=require(_0xb814('0x2'))(_0xb814('0x3'));var moment=require(_0xb814('0x4'));var BPromise=require(_0xb814('0x5'));var rp=require('request-promise');var fs=require('fs');var path=require(_0xb814('0x6'));var rimraf=require(_0xb814('0x7'));var config=require(_0xb814('0x8'));var attributes=require(_0xb814('0x9'));module[_0xb814('0xa')]=function(_0x322a70,_0x53e507){return _0x322a70[_0xb814('0xb')](_0xb814('0xc'),attributes,{'tableName':'report_openchannel_queue','paranoid':![],'indexes':[{'name':_0xb814('0xd'),'fields':[_0xb814('0xd')]}],'timestamps':!![]});};
\ No newline at end of file
index df7104c..1aaf627 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0x94df=['moment','bluebird','randomstring','ioredis','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','request','then','info','OpenchannelQueueReport,\x20%s,\x20%s','request\x20sent','OpenchannelQueueReport,\x20%s,\x20%s,\x20%s','stringify','error','message','result','catch','CreateOpenchannelQueueReport','OpenchannelQueueReport','body','options','raw','update','where','UpdateOpenchannelQueueReport','debug','lodash','util'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x94df,0xa3));var _0xf94d=function(_0x4a0ccb,_0x86b460){_0x4a0ccb=_0x4a0ccb-0x0;var _0x21d0f1=_0x94df[_0x4a0ccb];return _0x21d0f1;};'use strict';var _=require(_0xf94d('0x0'));var util=require(_0xf94d('0x1'));var moment=require(_0xf94d('0x2'));var BPromise=require(_0xf94d('0x3'));var rs=require(_0xf94d('0x4'));var fs=require('fs');var Redis=require(_0xf94d('0x5'));var db=require('../../mysqldb')['db'];var utils=require(_0xf94d('0x6'));var logger=require(_0xf94d('0x7'))(_0xf94d('0x8'));var config=require(_0xf94d('0x9'));var jayson=require(_0xf94d('0xa'));var client=jayson[_0xf94d('0xb')][_0xf94d('0xc')]({'port':0x232a});function respondWithRpcPromise(_0x18a11a,_0x1ebc19,_0xf285b5){return new BPromise(function(_0x1832e9,_0x504670){return client[_0xf94d('0xd')](_0x18a11a,_0xf285b5)[_0xf94d('0xe')](function(_0x145f5b){logger[_0xf94d('0xf')](_0xf94d('0x10'),_0x1ebc19,_0xf94d('0x11'));logger['debug'](_0xf94d('0x12'),_0x1ebc19,_0xf94d('0x11'),JSON[_0xf94d('0x13')](_0x145f5b));if(_0x145f5b[_0xf94d('0x14')]){if(_0x145f5b[_0xf94d('0x14')]['code']===0x1f4){logger['error'](_0xf94d('0x10'),_0x1ebc19,_0x145f5b[_0xf94d('0x14')][_0xf94d('0x15')]);return _0x504670(_0x145f5b[_0xf94d('0x14')][_0xf94d('0x15')]);}logger[_0xf94d('0x14')]('OpenchannelQueueReport,\x20%s,\x20%s',_0x1ebc19,_0x145f5b[_0xf94d('0x14')][_0xf94d('0x15')]);return _0x1832e9(_0x145f5b[_0xf94d('0x14')][_0xf94d('0x15')]);}else{logger[_0xf94d('0xf')](_0xf94d('0x10'),_0x1ebc19,_0xf94d('0x11'));_0x1832e9(_0x145f5b[_0xf94d('0x16')]['message']);}})[_0xf94d('0x17')](function(_0x5cd967){logger[_0xf94d('0x14')]('OpenchannelQueueReport,\x20%s,\x20%s',_0x1ebc19,_0x5cd967);_0x504670(_0x5cd967);});});}exports[_0xf94d('0x18')]=function(_0x559e0c){var _0x30d231=this;return new Promise(function(_0x3bf001,_0x510eef){return db[_0xf94d('0x19')]['create'](_0x559e0c[_0xf94d('0x1a')],{'raw':_0x559e0c['options']?_0x559e0c[_0xf94d('0x1b')][_0xf94d('0x1c')]===undefined?!![]:![]:!![]})[_0xf94d('0xe')](function(_0x2ede5b){logger['info'](_0xf94d('0x18'),_0x559e0c);logger['debug'](_0xf94d('0x18'),_0x559e0c,JSON[_0xf94d('0x13')](_0x2ede5b));_0x3bf001(_0x2ede5b);})[_0xf94d('0x17')](function(_0x56e5f5){logger[_0xf94d('0x14')](_0xf94d('0x18'),_0x56e5f5[_0xf94d('0x15')],_0x559e0c);_0x510eef(_0x30d231[_0xf94d('0x14')](0x1f4,_0x56e5f5[_0xf94d('0x15')]));});});};exports['UpdateOpenchannelQueueReport']=function(_0x301d2e){var _0x51f7f8=this;return new Promise(function(_0x4701e1,_0x2564a3){return db[_0xf94d('0x19')][_0xf94d('0x1d')](_0x301d2e[_0xf94d('0x1a')],{'raw':_0x301d2e[_0xf94d('0x1b')]?_0x301d2e[_0xf94d('0x1b')][_0xf94d('0x1c')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x301d2e[_0xf94d('0x1b')]?_0x301d2e[_0xf94d('0x1b')][_0xf94d('0x1e')]||null:null,'attributes':_0x301d2e[_0xf94d('0x1b')]?_0x301d2e[_0xf94d('0x1b')]['attributes']||null:null,'limit':_0x301d2e['options']?_0x301d2e['options']['limit']||null:null})[_0xf94d('0xe')](function(_0x1e8242){logger['info'](_0xf94d('0x1f'),_0x301d2e);logger[_0xf94d('0x20')](_0xf94d('0x1f'),_0x301d2e,JSON['stringify'](_0x1e8242));_0x4701e1(_0x1e8242);})[_0xf94d('0x17')](function(_0x5ab0c8){logger[_0xf94d('0x14')](_0xf94d('0x1f'),_0x5ab0c8['message'],_0x301d2e);_0x2564a3(_0x51f7f8[_0xf94d('0x14')](0x1f4,_0x5ab0c8['message']));});});};
\ No newline at end of file
index 33e7e6b..8d2e3cd 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0x63ae=['../../components/interaction/service','../../config/environment','./openchannelTransferReport.controller','isAuthenticated','index','get','/describe','describe','/:id','show','create','put','update','delete','multer','util','path','express','fs-extra','../../components/auth/service'];(function(_0x47de26,_0x6f9ffd){var _0x4eca2a=function(_0x35b67a){while(--_0x35b67a){_0x47de26['push'](_0x47de26['shift']());}};_0x4eca2a(++_0x6f9ffd);}(_0x63ae,0x1ee));var _0xe63a=function(_0x37dae8,_0x5211cf){_0x37dae8=_0x37dae8-0x0;var _0x2cf73d=_0x63ae[_0x37dae8];return _0x2cf73d;};'use strict';var multer=require(_0xe63a('0x0'));var util=require(_0xe63a('0x1'));var path=require(_0xe63a('0x2'));var timeout=require('connect-timeout');var express=require(_0xe63a('0x3'));var router=express['Router']();var fs_extra=require(_0xe63a('0x4'));var auth=require(_0xe63a('0x5'));var interaction=require(_0xe63a('0x6'));var config=require(_0xe63a('0x7'));var controller=require(_0xe63a('0x8'));router['get']('/',auth[_0xe63a('0x9')](),controller[_0xe63a('0xa')]);router[_0xe63a('0xb')](_0xe63a('0xc'),auth['isAuthenticated'](),controller[_0xe63a('0xd')]);router[_0xe63a('0xb')](_0xe63a('0xe'),auth['isAuthenticated'](),controller[_0xe63a('0xf')]);router['post']('/',auth[_0xe63a('0x9')](),controller[_0xe63a('0x10')]);router[_0xe63a('0x11')](_0xe63a('0xe'),auth[_0xe63a('0x9')](),controller[_0xe63a('0x12')]);router[_0xe63a('0x13')](_0xe63a('0xe'),auth[_0xe63a('0x9')](),controller['destroy']);module['exports']=router;
\ No newline at end of file
index 7c87749..389503b 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(_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
+var _0x4b84=['moment','sequelize','ENUM','queue','DATE'];(function(_0x41dbab,_0x1a343f){var _0x499930=function(_0x151c99){while(--_0x151c99){_0x41dbab['push'](_0x41dbab['shift']());}};_0x499930(++_0x1a343f);}(_0x4b84,0x1cc));var _0x44b8=function(_0xe896bf,_0x4f8e5e){_0xe896bf=_0xe896bf-0x0;var _0x4c7a8a=_0x4b84[_0xe896bf];return _0x4c7a8a;};'use strict';var moment=require(_0x44b8('0x0'));var Sequelize=require(_0x44b8('0x1'));module['exports']={'uniqueid':{'type':Sequelize['STRING'],'allowNull':![]},'type':{'type':Sequelize[_0x44b8('0x2')]('account','agent',_0x44b8('0x3')),'allowNull':![],'defaultValue':_0x44b8('0x3')},'transferredAt':{'type':Sequelize[_0x44b8('0x4')],'allowNull':![],'defaultValue':Sequelize['NOW']}};
\ No newline at end of file
index 471cc10..3fbc124 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0x5d9b=['destroy','error','stack','name','send','index','OpenchannelTransferReport','rawAttributes','fieldName','type','key','model','query','filters','intersection','fields','attributes','length','hasOwnProperty','nolimit','order','sort','where','pick','merge','map','VIRTUAL','filter','options','include','findAll','rows','catch','show','params','keys','includeAll','create','body','find','describe','rimraf','zip-dir','fast-json-patch','moment','util','path','sox','to-csv','ejs','fs-extra','lodash','squel','jsforce','desk.js','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','json','offset','undefined','count','limit','set','Content-Range','apply','update','then'];(function(_0x1575bc,_0x22e95b){var _0x310cc7=function(_0x22b7e0){while(--_0x22b7e0){_0x1575bc['push'](_0x1575bc['shift']());}};_0x310cc7(++_0x22e95b);}(_0x5d9b,0x1b4));var _0xb5d9=function(_0x34a7e3,_0x4d1ba1){_0x34a7e3=_0x34a7e3-0x0;var _0x24ba06=_0x5d9b[_0x34a7e3];return _0x24ba06;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0xb5d9('0x0'));var zipdir=require(_0xb5d9('0x1'));var jsonpatch=require(_0xb5d9('0x2'));var rp=require('request-promise');var moment=require(_0xb5d9('0x3'));var BPromise=require('bluebird');var Mustache=require('mustache');var util=require(_0xb5d9('0x4'));var path=require(_0xb5d9('0x5'));var sox=require(_0xb5d9('0x6'));var csv=require(_0xb5d9('0x7'));var ejs=require(_0xb5d9('0x8'));var fs=require('fs');var fs_extra=require(_0xb5d9('0x9'));var _=require(_0xb5d9('0xa'));var squel=require(_0xb5d9('0xb'));var crypto=require('crypto');var jsforce=require(_0xb5d9('0xc'));var deskjs=require(_0xb5d9('0xd'));var toCsv=require(_0xb5d9('0x7'));var querystring=require('querystring');var Papa=require(_0xb5d9('0xe'));var Redis=require(_0xb5d9('0xf'));var authService=require(_0xb5d9('0x10'));var qs=require(_0xb5d9('0x11'));var as=require(_0xb5d9('0x12'));var hardwareService=require(_0xb5d9('0x13'));var logger=require(_0xb5d9('0x14'))(_0xb5d9('0x15'));var utils=require('../../config/utils');var config=require(_0xb5d9('0x16'));var licenseUtil=require(_0xb5d9('0x17'));var db=require(_0xb5d9('0x18'))['db'];function respondWithStatusCode(_0x27a4aa,_0xd1e365){_0xd1e365=_0xd1e365||0xcc;return function(_0x3c0ecd){if(_0x3c0ecd){return _0x27a4aa[_0xb5d9('0x19')](_0xd1e365);}return _0x27a4aa[_0xb5d9('0x1a')](_0xd1e365)[_0xb5d9('0x1b')]();};}function respondWithResult(_0x31e981,_0x15fd0f){_0x15fd0f=_0x15fd0f||0xc8;return function(_0x3429ef){if(_0x3429ef){return _0x31e981[_0xb5d9('0x1a')](_0x15fd0f)[_0xb5d9('0x1c')](_0x3429ef);}};}function respondWithFilteredResult(_0x442ce5,_0x2b9214){return function(_0x37aa82){if(_0x37aa82){var _0x3c9fb2=typeof _0x2b9214[_0xb5d9('0x1d')]===_0xb5d9('0x1e')&&typeof _0x2b9214['limit']==='undefined';var _0x82b67d=_0x37aa82[_0xb5d9('0x1f')];var _0x3d27a6=_0x3c9fb2?0x0:_0x2b9214[_0xb5d9('0x1d')];var _0x29821c=_0x3c9fb2?_0x37aa82[_0xb5d9('0x1f')]:_0x2b9214[_0xb5d9('0x1d')]+_0x2b9214[_0xb5d9('0x20')];var _0x5b2407;if(_0x29821c>=_0x82b67d){_0x29821c=_0x82b67d;_0x5b2407=0xc8;}else{_0x5b2407=0xce;}_0x442ce5['status'](_0x5b2407);return _0x442ce5[_0xb5d9('0x21')](_0xb5d9('0x22'),_0x3d27a6+'-'+_0x29821c+'/'+_0x82b67d)[_0xb5d9('0x1c')](_0x37aa82);}return null;};}function patchUpdates(_0x2c4dec){return function(_0xb6a4f3){try{jsonpatch[_0xb5d9('0x23')](_0xb6a4f3,_0x2c4dec,!![]);}catch(_0x55b032){return BPromise['reject'](_0x55b032);}return _0xb6a4f3['save']();};}function saveUpdates(_0xba06f0,_0x5742f2){return function(_0x47e566){if(_0x47e566){return _0x47e566[_0xb5d9('0x24')](_0xba06f0)[_0xb5d9('0x25')](function(_0xec02b){return _0xec02b;});}return null;};}function removeEntity(_0x2051f9,_0xc63429){return function(_0x501c22){if(_0x501c22){return _0x501c22[_0xb5d9('0x26')]()[_0xb5d9('0x25')](function(){_0x2051f9[_0xb5d9('0x1a')](0xcc)[_0xb5d9('0x1b')]();});}};}function handleEntityNotFound(_0x8050f7,_0x278fbf){return function(_0x2c28a2){if(!_0x2c28a2){_0x8050f7[_0xb5d9('0x19')](0x194);}return _0x2c28a2;};}function handleError(_0x92f759,_0x35ca92){_0x35ca92=_0x35ca92||0x1f4;return function(_0x1d0b9c){logger[_0xb5d9('0x27')](_0x1d0b9c[_0xb5d9('0x28')]);if(_0x1d0b9c[_0xb5d9('0x29')]){delete _0x1d0b9c[_0xb5d9('0x29')];}_0x92f759[_0xb5d9('0x1a')](_0x35ca92)[_0xb5d9('0x2a')](_0x1d0b9c);};}exports[_0xb5d9('0x2b')]=function(_0x2d1bde,_0x386016){var _0x3c21fa={},_0x11481e={},_0x55f3f4={'count':0x0,'rows':[]};var _0x249ce5=_['map'](db[_0xb5d9('0x2c')][_0xb5d9('0x2d')],function(_0xf850d6){return{'name':_0xf850d6[_0xb5d9('0x2e')],'type':_0xf850d6[_0xb5d9('0x2f')][_0xb5d9('0x30')]};});_0x11481e[_0xb5d9('0x31')]=_['map'](_0x249ce5,_0xb5d9('0x29'));_0x11481e['query']=_['keys'](_0x2d1bde[_0xb5d9('0x32')]);_0x11481e[_0xb5d9('0x33')]=_[_0xb5d9('0x34')](_0x11481e[_0xb5d9('0x31')],_0x11481e[_0xb5d9('0x32')]);_0x3c21fa['attributes']=_[_0xb5d9('0x34')](_0x11481e['model'],qs['fields'](_0x2d1bde['query'][_0xb5d9('0x35')]));_0x3c21fa[_0xb5d9('0x36')]=_0x3c21fa[_0xb5d9('0x36')][_0xb5d9('0x37')]?_0x3c21fa['attributes']:_0x11481e[_0xb5d9('0x31')];if(!_0x2d1bde[_0xb5d9('0x32')][_0xb5d9('0x38')](_0xb5d9('0x39'))){_0x3c21fa[_0xb5d9('0x20')]=qs['limit'](_0x2d1bde[_0xb5d9('0x32')][_0xb5d9('0x20')]);_0x3c21fa['offset']=qs[_0xb5d9('0x1d')](_0x2d1bde[_0xb5d9('0x32')][_0xb5d9('0x1d')]);}_0x3c21fa[_0xb5d9('0x3a')]=qs[_0xb5d9('0x3b')](_0x2d1bde[_0xb5d9('0x32')][_0xb5d9('0x3b')]);_0x3c21fa[_0xb5d9('0x3c')]=qs[_0xb5d9('0x33')](_[_0xb5d9('0x3d')](_0x2d1bde[_0xb5d9('0x32')],_0x11481e[_0xb5d9('0x33')]),_0x249ce5);if(_0x2d1bde[_0xb5d9('0x32')]['filter']){_0x3c21fa[_0xb5d9('0x3c')]=_[_0xb5d9('0x3e')](_0x3c21fa['where'],{'$or':_[_0xb5d9('0x3f')](_0x249ce5,function(_0x203860){if(_0x203860['type']!==_0xb5d9('0x40')){var _0x33239c={};_0x33239c[_0x203860['name']]={'$like':'%'+_0x2d1bde[_0xb5d9('0x32')][_0xb5d9('0x41')]+'%'};return _0x33239c;}})});}_0x3c21fa=_[_0xb5d9('0x3e')]({},_0x3c21fa,_0x2d1bde[_0xb5d9('0x42')]);var _0x56952c={'where':_0x3c21fa[_0xb5d9('0x3c')]};return db[_0xb5d9('0x2c')]['count'](_0x56952c)[_0xb5d9('0x25')](function(_0x595fab){_0x55f3f4[_0xb5d9('0x1f')]=_0x595fab;if(_0x2d1bde[_0xb5d9('0x32')]['includeAll']){_0x3c21fa[_0xb5d9('0x43')]=[{'all':!![]}];}return db[_0xb5d9('0x2c')][_0xb5d9('0x44')](_0x3c21fa);})[_0xb5d9('0x25')](function(_0x4505b4){_0x55f3f4[_0xb5d9('0x45')]=_0x4505b4;return _0x55f3f4;})[_0xb5d9('0x25')](respondWithFilteredResult(_0x386016,_0x3c21fa))[_0xb5d9('0x46')](handleError(_0x386016,null));};exports[_0xb5d9('0x47')]=function(_0x379f6b,_0x47d1bc){var _0x65e6cf={'raw':!![],'where':{'id':_0x379f6b[_0xb5d9('0x48')]['id']}},_0x781c8={};_0x781c8[_0xb5d9('0x31')]=_[_0xb5d9('0x49')](db[_0xb5d9('0x2c')][_0xb5d9('0x2d')]);_0x781c8['query']=_['keys'](_0x379f6b['query']);_0x781c8[_0xb5d9('0x33')]=_[_0xb5d9('0x34')](_0x781c8[_0xb5d9('0x31')],_0x781c8['query']);_0x65e6cf[_0xb5d9('0x36')]=_['intersection'](_0x781c8['model'],qs['fields'](_0x379f6b[_0xb5d9('0x32')][_0xb5d9('0x35')]));_0x65e6cf[_0xb5d9('0x36')]=_0x65e6cf[_0xb5d9('0x36')][_0xb5d9('0x37')]?_0x65e6cf[_0xb5d9('0x36')]:_0x781c8[_0xb5d9('0x31')];if(_0x379f6b[_0xb5d9('0x32')][_0xb5d9('0x4a')]){_0x65e6cf[_0xb5d9('0x43')]=[{'all':!![]}];}_0x65e6cf=_['merge']({},_0x65e6cf,_0x379f6b[_0xb5d9('0x42')]);return db[_0xb5d9('0x2c')]['find'](_0x65e6cf)['then'](handleEntityNotFound(_0x47d1bc,null))[_0xb5d9('0x25')](respondWithResult(_0x47d1bc,null))[_0xb5d9('0x46')](handleError(_0x47d1bc,null));};exports[_0xb5d9('0x4b')]=function(_0x21754f,_0x3ab9eb){return db[_0xb5d9('0x2c')][_0xb5d9('0x4b')](_0x21754f['body'],{})[_0xb5d9('0x25')](respondWithResult(_0x3ab9eb,0xc9))['catch'](handleError(_0x3ab9eb,null));};exports[_0xb5d9('0x24')]=function(_0x2e7616,_0x41e536){if(_0x2e7616[_0xb5d9('0x4c')]['id']){delete _0x2e7616[_0xb5d9('0x4c')]['id'];}return db[_0xb5d9('0x2c')]['find']({'where':{'id':_0x2e7616[_0xb5d9('0x48')]['id']}})[_0xb5d9('0x25')](handleEntityNotFound(_0x41e536,null))[_0xb5d9('0x25')](saveUpdates(_0x2e7616[_0xb5d9('0x4c')],null))['then'](respondWithResult(_0x41e536,null))[_0xb5d9('0x46')](handleError(_0x41e536,null));};exports['destroy']=function(_0x599501,_0x3f820e){return db[_0xb5d9('0x2c')][_0xb5d9('0x4d')]({'where':{'id':_0x599501[_0xb5d9('0x48')]['id']}})[_0xb5d9('0x25')](handleEntityNotFound(_0x3f820e,null))[_0xb5d9('0x25')](removeEntity(_0x3f820e,null))[_0xb5d9('0x46')](handleError(_0x3f820e,null));};exports[_0xb5d9('0x4e')]=function(_0x333d7d,_0x49654e){return db[_0xb5d9('0x2c')][_0xb5d9('0x4e')]()[_0xb5d9('0x25')](respondWithResult(_0x49654e,null))[_0xb5d9('0x46')](handleError(_0x49654e,null));};
\ No newline at end of file
index d73aa7e..4a31326 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0x2761=['report_openchannel_transfer','uniqueid','lodash','util','api','moment','bluebird','request-promise','../../config/environment','./openchannelTransferReport.attributes','exports','define'];(function(_0x12be2c,_0x1601aa){var _0x21ca0b=function(_0x43e78f){while(--_0x43e78f){_0x12be2c['push'](_0x12be2c['shift']());}};_0x21ca0b(++_0x1601aa);}(_0x2761,0xce));var _0x1276=function(_0x4b369d,_0x265eb8){_0x4b369d=_0x4b369d-0x0;var _0x571a98=_0x2761[_0x4b369d];return _0x571a98;};'use strict';var _=require(_0x1276('0x0'));var util=require(_0x1276('0x1'));var logger=require('../../config/logger')(_0x1276('0x2'));var moment=require(_0x1276('0x3'));var BPromise=require(_0x1276('0x4'));var rp=require(_0x1276('0x5'));var fs=require('fs');var path=require('path');var rimraf=require('rimraf');var config=require(_0x1276('0x6'));var attributes=require(_0x1276('0x7'));module[_0x1276('0x8')]=function(_0x30f4f5,_0x58d1f5){return _0x30f4f5[_0x1276('0x9')]('OpenchannelTransferReport',attributes,{'tableName':_0x1276('0xa'),'paranoid':![],'indexes':[{'name':_0x1276('0xb'),'fields':['uniqueid']}],'timestamps':!![]});};
\ No newline at end of file
index 9f23aef..7dc163e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0x1696=['catch','lodash','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','client','http','then','info','OpenchannelTransferReport,\x20%s,\x20%s','debug','OpenchannelTransferReport,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','code','error','message','result'];(function(_0x3bf5fe,_0x4356ff){var _0x3001ec=function(_0x66c0cc){while(--_0x66c0cc){_0x3bf5fe['push'](_0x3bf5fe['shift']());}};_0x3001ec(++_0x4356ff);}(_0x1696,0x79));var _0x6169=function(_0x39f814,_0x4076a6){_0x39f814=_0x39f814-0x0;var _0x2e04fd=_0x1696[_0x39f814];return _0x2e04fd;};'use strict';var _=require(_0x6169('0x0'));var util=require('util');var moment=require(_0x6169('0x1'));var BPromise=require(_0x6169('0x2'));var rs=require(_0x6169('0x3'));var fs=require('fs');var Redis=require(_0x6169('0x4'));var db=require(_0x6169('0x5'))['db'];var utils=require(_0x6169('0x6'));var logger=require(_0x6169('0x7'))(_0x6169('0x8'));var config=require(_0x6169('0x9'));var jayson=require('jayson/promise');var client=jayson[_0x6169('0xa')][_0x6169('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x277459,_0x6f5cec,_0x289333){return new BPromise(function(_0x2a1658,_0x40350b){return client['request'](_0x277459,_0x289333)[_0x6169('0xc')](function(_0x519a4d){logger[_0x6169('0xd')](_0x6169('0xe'),_0x6f5cec,'request\x20sent');logger[_0x6169('0xf')](_0x6169('0x10'),_0x6f5cec,_0x6169('0x11'),JSON[_0x6169('0x12')](_0x519a4d));if(_0x519a4d['error']){if(_0x519a4d['error'][_0x6169('0x13')]===0x1f4){logger[_0x6169('0x14')]('OpenchannelTransferReport,\x20%s,\x20%s',_0x6f5cec,_0x519a4d[_0x6169('0x14')][_0x6169('0x15')]);return _0x40350b(_0x519a4d[_0x6169('0x14')]['message']);}logger['error']('OpenchannelTransferReport,\x20%s,\x20%s',_0x6f5cec,_0x519a4d[_0x6169('0x14')][_0x6169('0x15')]);return _0x2a1658(_0x519a4d[_0x6169('0x14')][_0x6169('0x15')]);}else{logger[_0x6169('0xd')]('OpenchannelTransferReport,\x20%s,\x20%s',_0x6f5cec,_0x6169('0x11'));_0x2a1658(_0x519a4d[_0x6169('0x16')]['message']);}})[_0x6169('0x17')](function(_0x5afc48){logger[_0x6169('0x14')](_0x6169('0xe'),_0x6f5cec,_0x5afc48);_0x40350b(_0x5afc48);});});}
\ No newline at end of file
index 999b8d9..215c02e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0x0c74=['multer','util','connect-timeout','express','../../components/auth/service','../../components/interaction/service','../../config/environment','./pause.controller','get','isAuthenticated','index','/:id','show','post','create','put','delete','destroy','exports'];(function(_0x390752,_0x42cad3){var _0x5eca55=function(_0x529961){while(--_0x529961){_0x390752['push'](_0x390752['shift']());}};_0x5eca55(++_0x42cad3);}(_0x0c74,0x72));var _0x40c7=function(_0x32d423,_0x3b464){_0x32d423=_0x32d423-0x0;var _0x118ed4=_0x0c74[_0x32d423];return _0x118ed4;};'use strict';var multer=require(_0x40c7('0x0'));var util=require(_0x40c7('0x1'));var path=require('path');var timeout=require(_0x40c7('0x2'));var express=require(_0x40c7('0x3'));var router=express['Router']();var fs_extra=require('fs-extra');var auth=require(_0x40c7('0x4'));var interaction=require(_0x40c7('0x5'));var config=require(_0x40c7('0x6'));var controller=require(_0x40c7('0x7'));router[_0x40c7('0x8')]('/',auth[_0x40c7('0x9')](),controller[_0x40c7('0xa')]);router[_0x40c7('0x8')](_0x40c7('0xb'),auth[_0x40c7('0x9')](),controller[_0x40c7('0xc')]);router[_0x40c7('0xd')]('/',auth['isAuthenticated'](),controller[_0x40c7('0xe')]);router[_0x40c7('0xf')](_0x40c7('0xb'),auth[_0x40c7('0x9')](),controller['update']);router[_0x40c7('0x10')](_0x40c7('0xb'),auth[_0x40c7('0x9')](),controller[_0x40c7('0x11')]);module[_0x40c7('0x12')]=router;
\ No newline at end of file
index 6452f22..04ccee4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0x697f=['name'];(function(_0x25b4a4,_0x2e081b){var _0x707267=function(_0x440123){while(--_0x440123){_0x25b4a4['push'](_0x25b4a4['shift']());}};_0x707267(++_0x2e081b);}(_0x697f,0x1ec));var _0xf697=function(_0x2a3951,_0x33cd65){_0x2a3951=_0x2a3951-0x0;var _0x2d75b5=_0x697f[_0x2a3951];return _0x2d75b5;};'use strict';var Sequelize=require('sequelize');module['exports']={'name':{'type':Sequelize['STRING'],'unique':_0xf697('0x0'),'allowNull':![]},'description':{'type':Sequelize['STRING']}};
\ No newline at end of file
index b5a3360..bbd49f8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0x2056=['hasOwnProperty','nolimit','order','sort','where','pick','filter','merge','VIRTUAL','options','Pause','includeAll','findAll','catch','show','params','include','create','body','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','UserProfileSection','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','find','eml-format','rimraf','zip-dir','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','ejs','lodash','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','../../config/logger','api','../../config/environment','../../config/license/util','../../mysqldb','status','json','offset','undefined','limit','count','set','Content-Range','apply','reject','update','destroy','then','get','Pauses','UserProfileResource','error','name','send','map','rawAttributes','fieldName','model','keys','query','filters','intersection','fields','attributes','length'];(function(_0x52b9d1,_0x112aa8){var _0x352a31=function(_0x589829){while(--_0x589829){_0x52b9d1['push'](_0x52b9d1['shift']());}};_0x352a31(++_0x112aa8);}(_0x2056,0xbb));var _0x6205=function(_0x36e3ba,_0x1912e8){_0x36e3ba=_0x36e3ba-0x0;var _0x7972c7=_0x2056[_0x36e3ba];return _0x7972c7;};'use strict';var emlformat=require(_0x6205('0x0'));var rimraf=require(_0x6205('0x1'));var zipdir=require(_0x6205('0x2'));var jsonpatch=require('fast-json-patch');var rp=require(_0x6205('0x3'));var moment=require(_0x6205('0x4'));var BPromise=require(_0x6205('0x5'));var Mustache=require(_0x6205('0x6'));var util=require(_0x6205('0x7'));var path=require(_0x6205('0x8'));var sox=require(_0x6205('0x9'));var csv=require(_0x6205('0xa'));var ejs=require(_0x6205('0xb'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x6205('0xc'));var squel=require('squel');var crypto=require('crypto');var jsforce=require(_0x6205('0xd'));var deskjs=require(_0x6205('0xe'));var toCsv=require(_0x6205('0xa'));var querystring=require(_0x6205('0xf'));var Papa=require(_0x6205('0x10'));var Redis=require(_0x6205('0x11'));var authService=require(_0x6205('0x12'));var qs=require(_0x6205('0x13'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x6205('0x14'));var logger=require(_0x6205('0x15'))(_0x6205('0x16'));var utils=require('../../config/utils');var config=require(_0x6205('0x17'));var licenseUtil=require(_0x6205('0x18'));var db=require(_0x6205('0x19'))['db'];function respondWithStatusCode(_0x44fba9,_0x41dee0){_0x41dee0=_0x41dee0||0xcc;return function(_0x12409a){if(_0x12409a){return _0x44fba9['sendStatus'](_0x41dee0);}return _0x44fba9[_0x6205('0x1a')](_0x41dee0)['end']();};}function respondWithResult(_0x59e6c8,_0x32e4d7){_0x32e4d7=_0x32e4d7||0xc8;return function(_0x2861ad){if(_0x2861ad){return _0x59e6c8['status'](_0x32e4d7)[_0x6205('0x1b')](_0x2861ad);}};}function respondWithFilteredResult(_0x50d0c0,_0x38662d){return function(_0x348792){if(_0x348792){var _0x246bfb=typeof _0x38662d[_0x6205('0x1c')]===_0x6205('0x1d')&&typeof _0x38662d[_0x6205('0x1e')]==='undefined';var _0x33b94e=_0x348792[_0x6205('0x1f')];var _0x3b2012=_0x246bfb?0x0:_0x38662d[_0x6205('0x1c')];var _0xa3a87d=_0x246bfb?_0x348792[_0x6205('0x1f')]:_0x38662d[_0x6205('0x1c')]+_0x38662d['limit'];var _0x1668a6;if(_0xa3a87d>=_0x33b94e){_0xa3a87d=_0x33b94e;_0x1668a6=0xc8;}else{_0x1668a6=0xce;}_0x50d0c0[_0x6205('0x1a')](_0x1668a6);return _0x50d0c0[_0x6205('0x20')](_0x6205('0x21'),_0x3b2012+'-'+_0xa3a87d+'/'+_0x33b94e)[_0x6205('0x1b')](_0x348792);}return null;};}function patchUpdates(_0x181849){return function(_0x392cd4){try{jsonpatch[_0x6205('0x22')](_0x392cd4,_0x181849,!![]);}catch(_0x1ad13e){return BPromise[_0x6205('0x23')](_0x1ad13e);}return _0x392cd4['save']();};}function saveUpdates(_0x5d8a20,_0x2ab20a){return function(_0xade8e4){if(_0xade8e4){return _0xade8e4[_0x6205('0x24')](_0x5d8a20)['then'](function(_0xea08d1){return _0xea08d1;});}return null;};}function removeEntity(_0x479630,_0x50743e){return function(_0x2ed31f){if(_0x2ed31f){return _0x2ed31f[_0x6205('0x25')]()[_0x6205('0x26')](function(){var _0x1581a7=_0x2ed31f[_0x6205('0x27')]({'plain':!![]});var _0x2cc798=_0x6205('0x28');return db[_0x6205('0x29')][_0x6205('0x25')]({'where':{'type':_0x2cc798,'resourceId':_0x1581a7['id']}})[_0x6205('0x26')](function(){return _0x2ed31f;});})['then'](function(){_0x479630[_0x6205('0x1a')](0xcc)['end']();});}};}function handleEntityNotFound(_0x3b3a01,_0x4068ba){return function(_0xd5bc27){if(!_0xd5bc27){_0x3b3a01['sendStatus'](0x194);}return _0xd5bc27;};}function handleError(_0x111b5a,_0x505828){_0x505828=_0x505828||0x1f4;return function(_0x187605){logger[_0x6205('0x2a')](_0x187605['stack']);if(_0x187605[_0x6205('0x2b')]){delete _0x187605[_0x6205('0x2b')];}_0x111b5a[_0x6205('0x1a')](_0x505828)[_0x6205('0x2c')](_0x187605);};}exports['index']=function(_0xc28bfd,_0xab9055){var _0x7aa1e2={},_0x21b1fa={},_0xa707={'count':0x0,'rows':[]};var _0x196a20=_[_0x6205('0x2d')](db['Pause'][_0x6205('0x2e')],function(_0x115561){return{'name':_0x115561[_0x6205('0x2f')],'type':_0x115561['type']['key']};});_0x21b1fa[_0x6205('0x30')]=_[_0x6205('0x2d')](_0x196a20,_0x6205('0x2b'));_0x21b1fa['query']=_[_0x6205('0x31')](_0xc28bfd[_0x6205('0x32')]);_0x21b1fa[_0x6205('0x33')]=_[_0x6205('0x34')](_0x21b1fa[_0x6205('0x30')],_0x21b1fa[_0x6205('0x32')]);_0x7aa1e2['attributes']=_[_0x6205('0x34')](_0x21b1fa[_0x6205('0x30')],qs[_0x6205('0x35')](_0xc28bfd[_0x6205('0x32')][_0x6205('0x35')]));_0x7aa1e2[_0x6205('0x36')]=_0x7aa1e2[_0x6205('0x36')][_0x6205('0x37')]?_0x7aa1e2[_0x6205('0x36')]:_0x21b1fa[_0x6205('0x30')];if(!_0xc28bfd['query'][_0x6205('0x38')](_0x6205('0x39'))){_0x7aa1e2[_0x6205('0x1e')]=qs['limit'](_0xc28bfd[_0x6205('0x32')][_0x6205('0x1e')]);_0x7aa1e2[_0x6205('0x1c')]=qs[_0x6205('0x1c')](_0xc28bfd[_0x6205('0x32')][_0x6205('0x1c')]);}_0x7aa1e2[_0x6205('0x3a')]=qs['sort'](_0xc28bfd[_0x6205('0x32')][_0x6205('0x3b')]);_0x7aa1e2[_0x6205('0x3c')]=qs[_0x6205('0x33')](_[_0x6205('0x3d')](_0xc28bfd[_0x6205('0x32')],_0x21b1fa['filters']),_0x196a20);if(_0xc28bfd[_0x6205('0x32')][_0x6205('0x3e')]){_0x7aa1e2[_0x6205('0x3c')]=_[_0x6205('0x3f')](_0x7aa1e2['where'],{'$or':_['map'](_0x196a20,function(_0x3566af){if(_0x3566af['type']!==_0x6205('0x40')){var _0x387018={};_0x387018[_0x3566af[_0x6205('0x2b')]]={'$like':'%'+_0xc28bfd['query'][_0x6205('0x3e')]+'%'};return _0x387018;}})});}_0x7aa1e2=_[_0x6205('0x3f')]({},_0x7aa1e2,_0xc28bfd[_0x6205('0x41')]);var _0x599312={'where':_0x7aa1e2[_0x6205('0x3c')]};return db[_0x6205('0x42')][_0x6205('0x1f')](_0x599312)[_0x6205('0x26')](function(_0xf70fff){_0xa707[_0x6205('0x1f')]=_0xf70fff;if(_0xc28bfd[_0x6205('0x32')][_0x6205('0x43')]){_0x7aa1e2['include']=[{'all':!![]}];}return db['Pause'][_0x6205('0x44')](_0x7aa1e2);})[_0x6205('0x26')](function(_0x15850d){_0xa707['rows']=_0x15850d;return _0xa707;})[_0x6205('0x26')](respondWithFilteredResult(_0xab9055,_0x7aa1e2))[_0x6205('0x45')](handleError(_0xab9055,null));};exports[_0x6205('0x46')]=function(_0x2625a2,_0x5dd8ae){var _0x232f68={'raw':!![],'where':{'id':_0x2625a2[_0x6205('0x47')]['id']}},_0x770704={};_0x770704[_0x6205('0x30')]=_['keys'](db[_0x6205('0x42')][_0x6205('0x2e')]);_0x770704[_0x6205('0x32')]=_[_0x6205('0x31')](_0x2625a2[_0x6205('0x32')]);_0x770704['filters']=_[_0x6205('0x34')](_0x770704[_0x6205('0x30')],_0x770704[_0x6205('0x32')]);_0x232f68[_0x6205('0x36')]=_[_0x6205('0x34')](_0x770704[_0x6205('0x30')],qs[_0x6205('0x35')](_0x2625a2['query']['fields']));_0x232f68[_0x6205('0x36')]=_0x232f68[_0x6205('0x36')][_0x6205('0x37')]?_0x232f68['attributes']:_0x770704[_0x6205('0x30')];if(_0x2625a2['query'][_0x6205('0x43')]){_0x232f68[_0x6205('0x48')]=[{'all':!![]}];}_0x232f68=_[_0x6205('0x3f')]({},_0x232f68,_0x2625a2[_0x6205('0x41')]);return db['Pause']['find'](_0x232f68)['then'](handleEntityNotFound(_0x5dd8ae,null))[_0x6205('0x26')](respondWithResult(_0x5dd8ae,null))[_0x6205('0x45')](handleError(_0x5dd8ae,null));};exports[_0x6205('0x49')]=function(_0xf65d06,_0x28c6c5){return db['Pause'][_0x6205('0x49')](_0xf65d06[_0x6205('0x4a')],{})[_0x6205('0x26')](function(_0x3042d8){var _0x368f97=_0xf65d06[_0x6205('0x4b')]['get']({'plain':!![]});if(!_0x368f97)throw new Error(_0x6205('0x4c'));if(_0x368f97['role']===_0x6205('0x4b')){var _0x5763c6=_0x3042d8[_0x6205('0x27')]({'plain':!![]});var _0x910e4e=_0x6205('0x28');return db[_0x6205('0x4d')]['find']({'where':{'name':_0x910e4e,'userProfileId':_0x368f97['userProfileId']},'raw':!![]})[_0x6205('0x26')](function(_0x1e6503){if(_0x1e6503&&_0x1e6503[_0x6205('0x4e')]===0x0){return db['UserProfileResource'][_0x6205('0x49')]({'name':_0x5763c6[_0x6205('0x2b')],'resourceId':_0x5763c6['id'],'type':_0x1e6503[_0x6205('0x2b')],'sectionId':_0x1e6503['id']},{})[_0x6205('0x26')](function(){return _0x3042d8;});}else{return _0x3042d8;}})[_0x6205('0x45')](function(_0x3b1395){logger['error'](_0x6205('0x4f'),_0x3b1395);throw _0x3b1395;});}return _0x3042d8;})[_0x6205('0x26')](respondWithResult(_0x28c6c5,0xc9))[_0x6205('0x45')](handleError(_0x28c6c5,null));};exports['update']=function(_0x57c1f2,_0x3b3fd6){if(_0x57c1f2['body']['id']){delete _0x57c1f2['body']['id'];}return db['Pause'][_0x6205('0x50')]({'where':{'id':_0x57c1f2['params']['id']}})[_0x6205('0x26')](handleEntityNotFound(_0x3b3fd6,null))[_0x6205('0x26')](saveUpdates(_0x57c1f2[_0x6205('0x4a')],null))['then'](respondWithResult(_0x3b3fd6,null))['catch'](handleError(_0x3b3fd6,null));};exports[_0x6205('0x25')]=function(_0x3c0e0d,_0x191f4b){return db[_0x6205('0x42')][_0x6205('0x50')]({'where':{'id':_0x3c0e0d['params']['id']}})[_0x6205('0x26')](handleEntityNotFound(_0x191f4b,null))[_0x6205('0x26')](removeEntity(_0x191f4b,null))['catch'](handleError(_0x191f4b,null));};
\ No newline at end of file
index 3714210..f53cc65 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0x5fab=['api','moment','bluebird','request-promise','path','rimraf','../../config/environment','./pause.attributes','exports','Pause','tools_pauses','lodash','util'];(function(_0xfc0bf,_0x3ebd66){var _0x4ff23a=function(_0x256e25){while(--_0x256e25){_0xfc0bf['push'](_0xfc0bf['shift']());}};_0x4ff23a(++_0x3ebd66);}(_0x5fab,0x177));var _0xb5fa=function(_0x1b6c6d,_0x2983b0){_0x1b6c6d=_0x1b6c6d-0x0;var _0x290d9d=_0x5fab[_0x1b6c6d];return _0x290d9d;};'use strict';var _=require(_0xb5fa('0x0'));var util=require(_0xb5fa('0x1'));var logger=require('../../config/logger')(_0xb5fa('0x2'));var moment=require(_0xb5fa('0x3'));var BPromise=require(_0xb5fa('0x4'));var rp=require(_0xb5fa('0x5'));var fs=require('fs');var path=require(_0xb5fa('0x6'));var rimraf=require(_0xb5fa('0x7'));var config=require(_0xb5fa('0x8'));var attributes=require(_0xb5fa('0x9'));module[_0xb5fa('0xa')]=function(_0x44df89,_0x4a0249){return _0x44df89['define'](_0xb5fa('0xb'),attributes,{'tableName':_0xb5fa('0xc'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 0ec30fe..3e99b11 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb10b=['catch','lodash','moment','bluebird','randomstring','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','http','request','then','info','Pause,\x20%s,\x20%s','Pause,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','message','result','ShowPause','Pause','find','options','raw','where','attributes','map','include','model','debug'];(function(_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
+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(_0x25c1d1,_0x8efa9f){var _0x25a118=function(_0x273c2f){while(--_0x273c2f){_0x25c1d1['push'](_0x25c1d1['shift']());}};_0x25a118(++_0x8efa9f);}(_0x7a54,0x106));var _0x47a5=function(_0x37fb04,_0x15e149){_0x37fb04=_0x37fb04-0x0;var _0x2581bc=_0x7a54[_0x37fb04];return _0x2581bc;};'use strict';var _=require(_0x47a5('0x0'));var util=require(_0x47a5('0x1'));var moment=require(_0x47a5('0x2'));var BPromise=require('bluebird');var rs=require(_0x47a5('0x3'));var fs=require('fs');var Redis=require(_0x47a5('0x4'));var db=require('../../mysqldb')['db'];var utils=require(_0x47a5('0x5'));var logger=require(_0x47a5('0x6'))(_0x47a5('0x7'));var config=require(_0x47a5('0x8'));var jayson=require(_0x47a5('0x9'));var client=jayson['client'][_0x47a5('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x59199c,_0x343372,_0x30e405){return new BPromise(function(_0x506eda,_0x194fb0){return client['request'](_0x59199c,_0x30e405)['then'](function(_0x582352){logger[_0x47a5('0xb')](_0x47a5('0xc'),_0x343372,'request\x20sent');logger[_0x47a5('0xd')]('Pause,\x20%s,\x20%s,\x20%s',_0x343372,'request\x20sent',JSON[_0x47a5('0xe')](_0x582352));if(_0x582352[_0x47a5('0xf')]){if(_0x582352[_0x47a5('0xf')][_0x47a5('0x10')]===0x1f4){logger[_0x47a5('0xf')](_0x47a5('0xc'),_0x343372,_0x582352[_0x47a5('0xf')]['message']);return _0x194fb0(_0x582352[_0x47a5('0xf')][_0x47a5('0x11')]);}logger[_0x47a5('0xf')](_0x47a5('0xc'),_0x343372,_0x582352[_0x47a5('0xf')][_0x47a5('0x11')]);return _0x506eda(_0x582352[_0x47a5('0xf')][_0x47a5('0x11')]);}else{logger['info'](_0x47a5('0xc'),_0x343372,_0x47a5('0x12'));_0x506eda(_0x582352[_0x47a5('0x13')][_0x47a5('0x11')]);}})[_0x47a5('0x14')](function(_0x574af6){logger['error'](_0x47a5('0xc'),_0x343372,_0x574af6);_0x194fb0(_0x574af6);});});}exports['ShowPause']=function(_0x5247fd){var _0x423a81=this;return new Promise(function(_0xaf70a6,_0x2ce454){return db[_0x47a5('0x15')][_0x47a5('0x16')]({'raw':_0x5247fd[_0x47a5('0x17')]?_0x5247fd[_0x47a5('0x17')][_0x47a5('0x18')]===undefined?!![]:![]:!![],'where':_0x5247fd[_0x47a5('0x17')]?_0x5247fd['options'][_0x47a5('0x19')]||null:null,'attributes':_0x5247fd[_0x47a5('0x17')]?_0x5247fd['options'][_0x47a5('0x1a')]||null:null,'include':_0x5247fd[_0x47a5('0x17')]?_0x5247fd[_0x47a5('0x17')]['include']?_[_0x47a5('0x1b')](_0x5247fd[_0x47a5('0x17')][_0x47a5('0x1c')],function(_0x7a9f9e){return{'model':db[_0x7a9f9e['model']],'as':_0x7a9f9e['as'],'attributes':_0x7a9f9e[_0x47a5('0x1a')],'include':_0x7a9f9e[_0x47a5('0x1c')]?_['map'](_0x7a9f9e[_0x47a5('0x1c')],function(_0xc4cd63){return{'model':db[_0xc4cd63[_0x47a5('0x1d')]],'as':_0xc4cd63['as'],'attributes':_0xc4cd63[_0x47a5('0x1a')],'include':_0xc4cd63[_0x47a5('0x1c')]?_['map'](_0xc4cd63['include'],function(_0x136745){return{'model':db[_0x136745['model']],'as':_0x136745['as'],'attributes':_0x136745[_0x47a5('0x1a')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x23cb77){logger[_0x47a5('0xb')](_0x47a5('0x1e'),_0x5247fd);logger[_0x47a5('0xd')](_0x47a5('0x1e'),_0x5247fd,JSON[_0x47a5('0xe')](_0x23cb77));_0xaf70a6(_0x23cb77);})[_0x47a5('0x14')](function(_0x136b14){logger[_0x47a5('0xf')](_0x47a5('0x1e'),_0x136b14[_0x47a5('0x11')],_0x5247fd);_0x2ce454(_0x423a81[_0x47a5('0xf')](0x1f4,_0x136b14[_0x47a5('0x11')]));});});};
\ No newline at end of file
index 1af15b4..b66ff5f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0x9bde=['exports','util','connect-timeout','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./plugin.controller','get','index','/webhook','webhookGet','/:id','isAuthenticated','show','/:id/download','diskStorage','join','root','server/files/plugins','originalname','replace','format','extname','now','post','file','upload','webhookPost','put','delete'];(function(_0x2110dd,_0x1d2476){var _0x144ef1=function(_0x572a00){while(--_0x572a00){_0x2110dd['push'](_0x2110dd['shift']());}};_0x144ef1(++_0x1d2476);}(_0x9bde,0xe1));var _0xe9bd=function(_0x4de565,_0x6a2af){_0x4de565=_0x4de565-0x0;var _0x3af5cf=_0x9bde[_0x4de565];return _0x3af5cf;};'use strict';var multer=require('multer');var util=require(_0xe9bd('0x0'));var path=require('path');var timeout=require(_0xe9bd('0x1'));var express=require('express');var router=express[_0xe9bd('0x2')]();var fs_extra=require(_0xe9bd('0x3'));var auth=require(_0xe9bd('0x4'));var interaction=require(_0xe9bd('0x5'));var config=require(_0xe9bd('0x6'));var controller=require(_0xe9bd('0x7'));router[_0xe9bd('0x8')]('/',auth['isAuthenticated'](),controller[_0xe9bd('0x9')]);router[_0xe9bd('0x8')](_0xe9bd('0xa'),controller[_0xe9bd('0xb')]);router[_0xe9bd('0x8')](_0xe9bd('0xc'),auth[_0xe9bd('0xd')](),controller[_0xe9bd('0xe')]);router[_0xe9bd('0x8')](_0xe9bd('0xf'),auth['isAuthenticated'](),controller['download']);var upload=multer({'storage':multer[_0xe9bd('0x10')]({'destination':function(_0x145521,_0x2601ac,_0x581ab9){_0x581ab9(null,path[_0xe9bd('0x11')](config[_0xe9bd('0x12')],_0xe9bd('0x13')));},'filename':function(_0x141587,_0x5e022a,_0x2c1d98){_0x5e022a['originalname']=_0x5e022a[_0xe9bd('0x14')][_0xe9bd('0x15')](/[+@&\/\\#,+()$~%'":*?<>{}\s\\|]/g,'-');_0x2c1d98(null,util[_0xe9bd('0x16')]('%s-%s%s',path['basename'](_0x5e022a[_0xe9bd('0x14')],path[_0xe9bd('0x17')](_0x5e022a[_0xe9bd('0x14')])),Date[_0xe9bd('0x18')](),path[_0xe9bd('0x17')](_0x5e022a[_0xe9bd('0x14')])));}})});router[_0xe9bd('0x19')]('/',upload['single'](_0xe9bd('0x1a')),controller[_0xe9bd('0x1b')]);router[_0xe9bd('0x19')]('/webhook',controller[_0xe9bd('0x1c')]);router[_0xe9bd('0x1d')](_0xe9bd('0xc'),auth[_0xe9bd('0xd')](),controller['update']);router[_0xe9bd('0x1e')]('/:id',auth[_0xe9bd('0xd')](),controller['delete']);module[_0xe9bd('0x1f')]=router;
\ No newline at end of file
index 2c8dcb3..9f61786 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0x1879=['sequelize','ENUM','script','TEXT','STRING','The\x20physical\x20path\x20where\x20the\x20plugin\x20is\x20stored.','BOOLEAN','Indicates\x20whether\x20the\x20plugin\x20is\x20installed.\x20Updated\x20when\x20the\x20plugin\x20is\x20installed/uninstalled.','adminOnly','agentOnly','always','never','Indicates\x20whether\x20to\x20display\x20the\x20plugin\x20in\x20the\x20sidebar.'];(function(_0x20589d,_0x55d5bf){var _0x422de9=function(_0x44cbbb){while(--_0x44cbbb){_0x20589d['push'](_0x20589d['shift']());}};_0x422de9(++_0x55d5bf);}(_0x1879,0x1ad));var _0x9187=function(_0x59ae8f,_0x148344){_0x59ae8f=_0x59ae8f-0x0;var _0x3900b5=_0x1879[_0x59ae8f];return _0x3900b5;};'use strict';var Sequelize=require(_0x9187('0x0'));module['exports']={'name':{'type':Sequelize['STRING']},'type':{'type':Sequelize[_0x9187('0x1')]('html',_0x9187('0x2'))},'description':{'type':Sequelize[_0x9187('0x3')]},'version':{'type':Sequelize[_0x9187('0x3')]},'path':{'type':Sequelize[_0x9187('0x4')],'comment':_0x9187('0x5')},'active':{'type':Sequelize[_0x9187('0x6')],'defaultValue':0x0,'comment':_0x9187('0x7')},'sidebar':{'type':Sequelize['ENUM'](_0x9187('0x8'),_0x9187('0x9'),_0x9187('0xa'),_0x9187('0xb')),'defaultValue':_0x9187('0xa'),'comment':_0x9187('0xc')},'icon':{'type':Sequelize[_0x9187('0x4')]},'adminUrl':{'type':Sequelize[_0x9187('0x4')]},'agentUrl':{'type':Sequelize[_0x9187('0x4')]},'scriptName':{'type':Sequelize[_0x9187('0x4')]},'scriptPath':{'type':Sequelize[_0x9187('0x4')]}};
\ No newline at end of file
index e880ad8..43f8333 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0x8751=['http://localhost:','content-length','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','bluebird','mustache','util','path','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','querystring','papaparse','extract-zip','archiver','ioredis','../../components/auth/service','../../config/license/hardware','../../config/logger','api','../../config/license/util','../../mysqldb','defaults','redis','localhost','socket.io-emitter','./plugin.socket','register','sendStatus','status','end','offset','undefined','limit','count','set','Content-Range','apply','reject','save','update','then','destroy','Plugins','error','stack','name','send','index','map','rawAttributes','fieldName','type','key','query','keys','filters','intersection','model','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','pick','filter','merge','VIRTUAL','options','findAll','params','includeAll','Plugin','catch','download','find','join','root','server/files/plugins','format','%s.zip','createWriteStream','zip','warning','code','ENOENT','Sequelize','Error','Error\x20while\x20generating\x20the\x20zip\x20archive','glob','dirname','basename','node_modules/**/*','attachments/**/*','finalize','close','existsSync','Plugin\x20not\x20found','Error\x20while\x20downloading\x20the\x20plugin','unlinkSync','info','Download\x20completed','Temporary\x20file\x20removed','upload','file','filename','Plugin\x20upload\x20filepath:\x20%s','Plugin\x20upload\x20destination:\x20%s','readdirSync','Invalid\x20plugin\x20structure','lstatSync','isFile','some','manifest.json','Plugin\x20manifest\x20missing','readFileSync','parse','Invalid\x20manifest:\x20type\x20missing','version','Invalid\x20manifest:\x20version\x20not\x20specified','Invalid\x20manifest:\x20parameters\x20missing','parameters','views','Invalid\x20manifest:\x20views\x20missing','admin','agent','Invalid\x20manifest:\x20no\x20view\x20specified','Invalid\x20manifest:\x20script\x20name\x20missing','scriptPath','Invalid\x20manifest:\x20script\x20path\x20missing','Invalid\x20manifest:\x20invalid\x20type','description','sidebar','always','icon','html','test','Warning:\x20admin\x20view\x20not\x20specified','plugins','scriptName','create','body','userProfileId','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','user','UserProfileSection','autoAssociation','UserProfileResource','Zip\x20archive\x20removed','Extracted\x20folder\x20removed','delete','resolve','port','hostname','json','encoding','method','%s%s','headers','content-type','endsWith','statusCode','\x27PATH\x27\x20parameter\x20not\x20specified','\x27PORT\x27\x20parameter\x20not\x20specified'];(function(_0x2d2159,_0x16f5c2){var _0xc6d9ad=function(_0x29f4cb){while(--_0x29f4cb){_0x2d2159['push'](_0x2d2159['shift']());}};_0xc6d9ad(++_0x16f5c2);}(_0x8751,0x162));var _0x1875=function(_0x3eba39,_0xf2927d){_0x3eba39=_0x3eba39-0x0;var _0x567349=_0x8751[_0x3eba39];return _0x567349;};'use strict';var emlformat=require(_0x1875('0x0'));var rimraf=require(_0x1875('0x1'));var zipdir=require(_0x1875('0x2'));var jsonpatch=require(_0x1875('0x3'));var rp=require(_0x1875('0x4'));var moment=require('moment');var BPromise=require(_0x1875('0x5'));var Mustache=require(_0x1875('0x6'));var util=require(_0x1875('0x7'));var path=require(_0x1875('0x8'));var sox=require('sox');var csv=require(_0x1875('0x9'));var ejs=require(_0x1875('0xa'));var fs=require('fs');var fs_extra=require(_0x1875('0xb'));var _=require(_0x1875('0xc'));var squel=require(_0x1875('0xd'));var crypto=require(_0x1875('0xe'));var jsforce=require(_0x1875('0xf'));var deskjs=require(_0x1875('0x10'));var toCsv=require(_0x1875('0x9'));var querystring=require(_0x1875('0x11'));var Papa=require(_0x1875('0x12'));var extract=require(_0x1875('0x13'));var rimraf=require('rimraf');var archiver=require(_0x1875('0x14'));var Redis=require(_0x1875('0x15'));var authService=require(_0x1875('0x16'));var qs=require('../../components/parsers/qs');var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x1875('0x17'));var logger=require(_0x1875('0x18'))(_0x1875('0x19'));var utils=require('../../config/utils');var config=require('../../config/environment');var licenseUtil=require(_0x1875('0x1a'));var db=require(_0x1875('0x1b'))['db'];config['redis']=_[_0x1875('0x1c')](config[_0x1875('0x1d')],{'host':_0x1875('0x1e'),'port':0x18eb});var socket=require(_0x1875('0x1f'))(new Redis(config['redis']));require(_0x1875('0x20'))[_0x1875('0x21')](socket);function respondWithStatusCode(_0x2c42fe,_0x5c5010){_0x5c5010=_0x5c5010||0xcc;return function(_0x48bf59){if(_0x48bf59){return _0x2c42fe[_0x1875('0x22')](_0x5c5010);}return _0x2c42fe[_0x1875('0x23')](_0x5c5010)[_0x1875('0x24')]();};}function respondWithResult(_0x5ed725,_0x5b50cc){_0x5b50cc=_0x5b50cc||0xc8;return function(_0x30f963){if(_0x30f963){return _0x5ed725[_0x1875('0x23')](_0x5b50cc)['json'](_0x30f963);}};}function respondWithFilteredResult(_0x11dcf8,_0x2cef9b){return function(_0xdee8e6){if(_0xdee8e6){var _0x17338d=typeof _0x2cef9b[_0x1875('0x25')]===_0x1875('0x26')&&typeof _0x2cef9b[_0x1875('0x27')]===_0x1875('0x26');var _0x13135a=_0xdee8e6[_0x1875('0x28')];var _0xc9a9c=_0x17338d?0x0:_0x2cef9b[_0x1875('0x25')];var _0x37fff9=_0x17338d?_0xdee8e6[_0x1875('0x28')]:_0x2cef9b[_0x1875('0x25')]+_0x2cef9b[_0x1875('0x27')];var _0x2997b0;if(_0x37fff9>=_0x13135a){_0x37fff9=_0x13135a;_0x2997b0=0xc8;}else{_0x2997b0=0xce;}_0x11dcf8[_0x1875('0x23')](_0x2997b0);return _0x11dcf8[_0x1875('0x29')](_0x1875('0x2a'),_0xc9a9c+'-'+_0x37fff9+'/'+_0x13135a)['json'](_0xdee8e6);}return null;};}function patchUpdates(_0x9fb3d5){return function(_0x31a777){try{jsonpatch[_0x1875('0x2b')](_0x31a777,_0x9fb3d5,!![]);}catch(_0x5c8b24){return BPromise[_0x1875('0x2c')](_0x5c8b24);}return _0x31a777[_0x1875('0x2d')]();};}function saveUpdates(_0x4768b2,_0x1fc84e){return function(_0x23e8d7){if(_0x23e8d7){return _0x23e8d7[_0x1875('0x2e')](_0x4768b2)[_0x1875('0x2f')](function(_0x197cdf){return _0x197cdf;});}return null;};}function removeEntity(_0x25b15b,_0x19149a){return function(_0x50c3e4){if(_0x50c3e4){return _0x50c3e4[_0x1875('0x30')]()['then'](function(){var _0x3f96c4=_0x50c3e4['get']({'plain':!![]});var _0x51ba55=_0x1875('0x31');return db['UserProfileResource'][_0x1875('0x30')]({'where':{'type':_0x51ba55,'resourceId':_0x3f96c4['id']}})[_0x1875('0x2f')](function(){return _0x50c3e4;});})['then'](function(){_0x25b15b['status'](0xcc)[_0x1875('0x24')]();});}};}function handleEntityNotFound(_0x5560e2,_0x123db8){return function(_0x353969){if(!_0x353969){_0x5560e2[_0x1875('0x22')](0x194);}return _0x353969;};}function handleError(_0x3d535e,_0x291c78){_0x291c78=_0x291c78||0x1f4;return function(_0x39b2b1){logger[_0x1875('0x32')](_0x39b2b1[_0x1875('0x33')]);if(_0x39b2b1[_0x1875('0x34')]){delete _0x39b2b1[_0x1875('0x34')];}_0x3d535e[_0x1875('0x23')](_0x291c78)[_0x1875('0x35')](_0x39b2b1);};}exports[_0x1875('0x36')]=function(_0x565bd3,_0x5321ea){var _0x22e5cd={},_0x5386e6={},_0x327a89={'count':0x0,'rows':[]};var _0x43d6e6=_[_0x1875('0x37')](db['Plugin'][_0x1875('0x38')],function(_0x3cb4cb){return{'name':_0x3cb4cb[_0x1875('0x39')],'type':_0x3cb4cb[_0x1875('0x3a')][_0x1875('0x3b')]};});_0x5386e6['model']=_[_0x1875('0x37')](_0x43d6e6,'name');_0x5386e6[_0x1875('0x3c')]=_[_0x1875('0x3d')](_0x565bd3['query']);_0x5386e6[_0x1875('0x3e')]=_[_0x1875('0x3f')](_0x5386e6[_0x1875('0x40')],_0x5386e6[_0x1875('0x3c')]);_0x22e5cd[_0x1875('0x41')]=_[_0x1875('0x3f')](_0x5386e6[_0x1875('0x40')],qs['fields'](_0x565bd3[_0x1875('0x3c')][_0x1875('0x42')]));_0x22e5cd[_0x1875('0x41')]=_0x22e5cd['attributes'][_0x1875('0x43')]?_0x22e5cd[_0x1875('0x41')]:_0x5386e6[_0x1875('0x40')];if(!_0x565bd3[_0x1875('0x3c')][_0x1875('0x44')](_0x1875('0x45'))){_0x22e5cd[_0x1875('0x27')]=qs['limit'](_0x565bd3[_0x1875('0x3c')][_0x1875('0x27')]);_0x22e5cd[_0x1875('0x25')]=qs[_0x1875('0x25')](_0x565bd3[_0x1875('0x3c')][_0x1875('0x25')]);}_0x22e5cd[_0x1875('0x46')]=qs[_0x1875('0x47')](_0x565bd3[_0x1875('0x3c')]['sort']);_0x22e5cd[_0x1875('0x48')]=qs[_0x1875('0x3e')](_[_0x1875('0x49')](_0x565bd3[_0x1875('0x3c')],_0x5386e6['filters']),_0x43d6e6);if(_0x565bd3['query'][_0x1875('0x4a')]){_0x22e5cd[_0x1875('0x48')]=_[_0x1875('0x4b')](_0x22e5cd[_0x1875('0x48')],{'$or':_['map'](_0x43d6e6,function(_0x10a9ae){if(_0x10a9ae['type']!==_0x1875('0x4c')){var _0x35cf1c={};_0x35cf1c[_0x10a9ae[_0x1875('0x34')]]={'$like':'%'+_0x565bd3['query']['filter']+'%'};return _0x35cf1c;}})});}_0x22e5cd=_[_0x1875('0x4b')]({},_0x22e5cd,_0x565bd3[_0x1875('0x4d')]);var _0x4554a5={'where':_0x22e5cd['where']};return db['Plugin'][_0x1875('0x28')](_0x4554a5)[_0x1875('0x2f')](function(_0x184c84){_0x327a89[_0x1875('0x28')]=_0x184c84;if(_0x565bd3[_0x1875('0x3c')]['includeAll']){_0x22e5cd['include']=[{'all':!![]}];}return db['Plugin'][_0x1875('0x4e')](_0x22e5cd);})[_0x1875('0x2f')](function(_0x38f49e){_0x327a89['rows']=_0x38f49e;return _0x327a89;})[_0x1875('0x2f')](respondWithFilteredResult(_0x5321ea,_0x22e5cd))['catch'](handleError(_0x5321ea,null));};exports['show']=function(_0x7be3e9,_0x3d1f69){var _0x1a92cc={'raw':!![],'where':{'id':_0x7be3e9[_0x1875('0x4f')]['id']}},_0x534e70={};_0x534e70[_0x1875('0x40')]=_[_0x1875('0x3d')](db['Plugin'][_0x1875('0x38')]);_0x534e70[_0x1875('0x3c')]=_[_0x1875('0x3d')](_0x7be3e9[_0x1875('0x3c')]);_0x534e70[_0x1875('0x3e')]=_['intersection'](_0x534e70[_0x1875('0x40')],_0x534e70[_0x1875('0x3c')]);_0x1a92cc[_0x1875('0x41')]=_[_0x1875('0x3f')](_0x534e70[_0x1875('0x40')],qs[_0x1875('0x42')](_0x7be3e9['query'][_0x1875('0x42')]));_0x1a92cc[_0x1875('0x41')]=_0x1a92cc[_0x1875('0x41')]['length']?_0x1a92cc['attributes']:_0x534e70[_0x1875('0x40')];if(_0x7be3e9['query'][_0x1875('0x50')]){_0x1a92cc['include']=[{'all':!![]}];}_0x1a92cc=_[_0x1875('0x4b')]({},_0x1a92cc,_0x7be3e9[_0x1875('0x4d')]);return db[_0x1875('0x51')]['find'](_0x1a92cc)['then'](handleEntityNotFound(_0x3d1f69,null))[_0x1875('0x2f')](respondWithResult(_0x3d1f69,null))[_0x1875('0x52')](handleError(_0x3d1f69,null));};exports[_0x1875('0x53')]=function(_0x2eaeb9,_0x4a9583,_0x4970fb){return db[_0x1875('0x51')][_0x1875('0x54')]({'where':{'id':_0x2eaeb9['params']['id']},'attributes':['name','path'],'raw':!![]})[_0x1875('0x2f')](handleEntityNotFound(_0x4a9583,null))[_0x1875('0x2f')](function(_0x5426c9){if(_0x5426c9){var _0x16ab1e=path[_0x1875('0x55')](config[_0x1875('0x56')],_0x1875('0x57'),util[_0x1875('0x58')](_0x1875('0x59'),path['basename'](_0x5426c9['path'])));var _0x14f5e=fs[_0x1875('0x5a')](_0x16ab1e);var _0x37a716=archiver(_0x1875('0x5b'),{'zlib':{'level':0x9}});_0x37a716['on'](_0x1875('0x5c'),function(_0x3cd1e3){if(_0x3cd1e3[_0x1875('0x5d')]===_0x1875('0x5e')){logger[_0x1875('0x32')](_0x3cd1e3);}else{throw new db[(_0x1875('0x5f'))][(_0x1875('0x60'))](_0x1875('0x61'));}});_0x37a716['on'](_0x1875('0x32'),function(_0x5a9549){throw new db['Sequelize']['Error'](_0x1875('0x61'));});_0x37a716['pipe'](_0x14f5e);_0x37a716[_0x1875('0x62')]('**/*',{'cwd':path[_0x1875('0x55')](config['root'],_0x1875('0x57'),path[_0x1875('0x63')](_0x5426c9['path'])),'ignore':[path[_0x1875('0x55')](path[_0x1875('0x64')](_0x5426c9['path']),_0x1875('0x65')),path[_0x1875('0x55')](path[_0x1875('0x64')](_0x5426c9[_0x1875('0x8')]),_0x1875('0x66'))],'nodir':!![]})[_0x1875('0x67')]();_0x14f5e['on'](_0x1875('0x68'),function(){if(!fs[_0x1875('0x69')](_0x16ab1e)){throw new db[(_0x1875('0x5f'))][(_0x1875('0x60'))](_0x1875('0x6a'));}return _0x4a9583[_0x1875('0x53')](_0x16ab1e,util[_0x1875('0x58')](_0x1875('0x59'),path[_0x1875('0x64')](_0x5426c9['path'])),function(_0x1d385a){if(_0x1d385a){throw new db['Sequelize'][(_0x1875('0x60'))](_0x1875('0x6b'));}fs[_0x1875('0x6c')](_0x16ab1e);logger[_0x1875('0x6d')](_0x1875('0x6e'));logger[_0x1875('0x6d')](_0x1875('0x6f'));});});}return null;})[_0x1875('0x52')](handleError(_0x4a9583,null));};exports[_0x1875('0x70')]=function(_0xb89fa9,_0x1980eb,_0xdd4e71){var _0x36ce20=path[_0x1875('0x64')](_0xb89fa9[_0x1875('0x71')][_0x1875('0x72')],path['extname'](_0xb89fa9[_0x1875('0x71')]['filename']));var _0x30a379=path[_0x1875('0x55')](config['root'],_0x1875('0x57'),_0xb89fa9[_0x1875('0x71')][_0x1875('0x72')]);var _0x12fca8=path[_0x1875('0x55')](config[_0x1875('0x56')],_0x1875('0x57'),_0x36ce20);logger[_0x1875('0x6d')](_0x1875('0x73'),_0x30a379);logger[_0x1875('0x6d')](_0x1875('0x74'),_0x12fca8);try{fs['chmodSync'](_0x30a379,parseInt('0777',0x8));extract(_0x30a379,{'dir':_0x12fca8},function(_0x17da31){if(_0x17da31){logger[_0x1875('0x32')](_0x17da31);handleError(_0x17da31,!![]);};var _0xc3f765=fs[_0x1875('0x75')](_0x12fca8);if(_0xc3f765[_0x1875('0x43')]>0x1){removeReferences(_0x30a379,_0x12fca8);logger[_0x1875('0x32')]('Invalid\x20plugin\x20structure');return _0xdd4e71(new Error(_0x1875('0x76')));}var _0x17c535=fs[_0x1875('0x77')](path[_0x1875('0x55')](_0x12fca8,_0xc3f765[0x0]));if(_0x17c535[_0x1875('0x78')]()){removeReferences(_0x30a379,_0x12fca8);logger['error']('Invalid\x20plugin\x20structure');return _0xdd4e71(new Error('Invalid\x20plugin\x20structure'));}if(_0x17c535['isDirectory']()){var _0x5a6e01=fs[_0x1875('0x75')](path['join'](_0x12fca8,_0xc3f765[0x0]));if(_0x5a6e01[_0x1875('0x43')]===0x0){removeReferences(_0x30a379,_0x12fca8);logger[_0x1875('0x32')]('Invalid\x20plugin\x20structure');return _0xdd4e71(new Error(_0x1875('0x76')));}var _0x29afd5=_0x5a6e01[_0x1875('0x79')](function(_0x51ee1b){return _0x51ee1b===_0x1875('0x7a');});if(!_0x29afd5){return _0xdd4e71(new Error(_0x1875('0x7b')));}var _0x2e2a79=fs[_0x1875('0x7c')](path['join'](_0x12fca8,_0xc3f765[0x0],_0x1875('0x7a')));var _0xba1084=JSON[_0x1875('0x7d')](_0x2e2a79);if(_0x1875('0x26')==typeof _0xba1084['name']){return _0xdd4e71(new Error('Invalid\x20manifest:\x20name\x20missing'));}if(_0x1875('0x26')==typeof _0xba1084[_0x1875('0x3a')]){return _0xdd4e71(new Error(_0x1875('0x7e')));}if(_0x1875('0x26')==typeof _0xba1084[_0x1875('0x7f')]){return _0xdd4e71(new Error(_0x1875('0x80')));}if(_0x1875('0x26')==typeof _0xba1084['parameters']){return _0xdd4e71(new Error(_0x1875('0x81')));}if(_0xba1084['type']==='html'){if(_0x1875('0x26')==typeof _0xba1084[_0x1875('0x82')][_0x1875('0x83')]){return _0xdd4e71(new Error(_0x1875('0x84')));}if('undefined'==typeof _0xba1084[_0x1875('0x82')][_0x1875('0x83')][_0x1875('0x85')]&&'undefined'==typeof _0xba1084[_0x1875('0x82')]['views'][_0x1875('0x86')]){return _0xdd4e71(new Error(_0x1875('0x87')));}}else if(_0xba1084[_0x1875('0x3a')]==='script'){if(_0x1875('0x26')==typeof _0xba1084[_0x1875('0x82')]['scriptName']){return _0xdd4e71(new Error(_0x1875('0x88')));}if(_0x1875('0x26')==typeof _0xba1084['parameters'][_0x1875('0x89')]){return _0xdd4e71(new Error(_0x1875('0x8a')));}}else{return _0xdd4e71(new Error(_0x1875('0x8b')));}var _0x1824b1=_0xba1084['name'];var _0x3a9611=_0xba1084[_0x1875('0x8c')];var _0x53ccae=_0xba1084[_0x1875('0x3a')];var _0x995b92=_0xba1084[_0x1875('0x8d')]?_0xba1084[_0x1875('0x8d')]:_0x1875('0x8e');var _0x497fd4=_0xba1084[_0x1875('0x8f')]?_0xba1084[_0x1875('0x8f')]:'icon-apps';var _0x30576a='';var _0x4266a8='';var _0x650e6c='';var _0x1f470b='';var _0x954497=_0xba1084[_0x1875('0x7f')];if(_0x53ccae===_0x1875('0x90')){if(_0x1875('0x26')!=typeof _0xba1084[_0x1875('0x82')]['views'][_0x1875('0x85')]){var _0x2b3cc2=_0xba1084[_0x1875('0x82')][_0x1875('0x83')][_0x1875('0x85')];if(!/^(f|ht)tps?:\/\//i[_0x1875('0x91')](_0x2b3cc2)){_0x30576a=path[_0x1875('0x55')]('plugins',_0x36ce20,_0xc3f765[0x0],_0x2b3cc2);}else{_0x30576a=_0x2b3cc2;}}else{logger[_0x1875('0x6d')](_0x1875('0x92'));}if(_0x1875('0x26')!=typeof _0xba1084['parameters'][_0x1875('0x83')][_0x1875('0x86')]){var _0x13fdce=_0xba1084[_0x1875('0x82')][_0x1875('0x83')]['agent'];if(!/^(f|ht)tps?:\/\//i['test'](_0x13fdce)){_0x4266a8=path[_0x1875('0x55')](_0x1875('0x93'),_0x36ce20,_0xc3f765[0x0],_0x13fdce);}else{_0x4266a8=_0x13fdce;}}else{logger[_0x1875('0x6d')]('Warning:\x20agent\x20view\x20not\x20specified');}}else if(_0x53ccae==='script'){_0x650e6c=_0xba1084[_0x1875('0x82')][_0x1875('0x94')];_0x1f470b=_0xba1084[_0x1875('0x82')][_0x1875('0x89')];if(_0x1875('0x26')!=typeof _0xba1084[_0x1875('0x82')]['views']){if(_0x1875('0x26')!=typeof _0xba1084[_0x1875('0x82')][_0x1875('0x83')][_0x1875('0x85')]){var _0x2b3cc2=_0xba1084[_0x1875('0x82')][_0x1875('0x83')][_0x1875('0x85')];if(!/^(f|ht)tps?:\/\//i[_0x1875('0x91')](_0x2b3cc2)){_0x30576a=path['join'](_0x1875('0x93'),_0x36ce20,_0xc3f765[0x0],_0x2b3cc2);}else{_0x30576a=_0x2b3cc2;}}if(_0x1875('0x26')!=typeof _0xba1084[_0x1875('0x82')][_0x1875('0x83')][_0x1875('0x86')]){var _0x13fdce=_0xba1084['parameters'][_0x1875('0x83')]['agent'];if(!/^(f|ht)tps?:\/\//i[_0x1875('0x91')](_0x13fdce)){_0x4266a8=path[_0x1875('0x55')](_0x1875('0x93'),_0x36ce20,_0xc3f765[0x0],_0x13fdce);}else{_0x4266a8=_0x13fdce;}}}}var _0x2cfef2={'name':_0x1824b1,'description':_0x3a9611,'path':path[_0x1875('0x55')](_0x36ce20,_0xc3f765[0x0]),'type':_0x53ccae,'sidebar':_0x995b92,'icon':_0x497fd4,'adminUrl':_0x30576a,'agentUrl':_0x4266a8,'scriptName':_0x650e6c,'scriptPath':_0x1f470b,'version':_0x954497};removeReferences(_0x30a379,null);return db[_0x1875('0x51')][_0x1875('0x95')](_0x2cfef2)[_0x1875('0x2f')](function(_0x2831f1){var _0x5b1241={'role':_0xb89fa9[_0x1875('0x96')]['role'],'userProfileId':_0xb89fa9[_0x1875('0x96')][_0x1875('0x97')]};if(!_0x5b1241)throw new Error(_0x1875('0x98'));if(_0x5b1241[_0x1875('0x99')]===_0x1875('0x9a')){var _0x5b6981=_0x2831f1['get']({'plain':!![]});return db[_0x1875('0x9b')][_0x1875('0x54')]({'where':{'name':_0x1875('0x31'),'userProfileId':_0x5b1241[_0x1875('0x97')]},'raw':!![]})[_0x1875('0x2f')](function(_0x341492){if(_0x341492&&_0x341492[_0x1875('0x9c')]===0x0){return db[_0x1875('0x9d')][_0x1875('0x95')]({'name':_0x5b6981[_0x1875('0x34')],'resourceId':_0x5b6981['id'],'type':_0x341492[_0x1875('0x34')],'sectionId':_0x341492['id']},{})['then'](function(){return _0x2831f1;});}else{return _0x2831f1;}})[_0x1875('0x52')](function(_0x5ea84b){logger['error']('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x5ea84b);throw _0x5ea84b;});}return _0x2831f1;})[_0x1875('0x2f')](respondWithResult(_0x1980eb,null))[_0x1875('0x52')](handleError(_0x1980eb,null));}});}catch(_0x294032){_0x1980eb['status'](0x1f4)[_0x1875('0x35')](_0x294032);}};function removeReferences(_0x53eacf,_0x172fb3){try{if(_0x53eacf){fs[_0x1875('0x6c')](_0x53eacf);logger[_0x1875('0x6d')](_0x1875('0x9e'));}if(_0x172fb3){rimraf(_0x172fb3,function(){});logger[_0x1875('0x6d')](_0x1875('0x9f'));}}catch(_0x1d4319){logger['error'](_0x1d4319);}}exports[_0x1875('0x2e')]=function(_0x4f75fb,_0x1522f9,_0x64e914){return db[_0x1875('0x51')][_0x1875('0x54')]({'where':{'id':_0x4f75fb[_0x1875('0x4f')]['id']}})[_0x1875('0x2f')](handleEntityNotFound(_0x1522f9,null))['then'](saveUpdates(_0x4f75fb[_0x1875('0x96')],null))[_0x1875('0x2f')](respondWithResult(_0x1522f9,null))[_0x1875('0x52')](handleError(_0x1522f9,null));};exports[_0x1875('0xa0')]=function(_0x5b0609,_0x41c0f8,_0x10c5ea){return db[_0x1875('0x51')][_0x1875('0x54')]({'where':{'id':_0x5b0609[_0x1875('0x4f')]['id']}})[_0x1875('0x2f')](function(_0x23d597){if(_0x23d597){return _0x23d597[_0x1875('0x30')]();}})['then'](function(_0x3b475f){rimraf(path['join'](config[_0x1875('0x56')],_0x1875('0x57'),path[_0x1875('0x63')](_0x3b475f[_0x1875('0x8')])),function(){});return _0x3b475f;})['then'](handleEntityNotFound(_0x41c0f8,null))['then'](respondWithStatusCode(_0x41c0f8,null))['catch'](handleError(_0x41c0f8,null));};exports['webhookGet']=function(_0x90fe2d,_0xf52ef8,_0x2f4de7){return BPromise[_0x1875('0xa1')]()[_0x1875('0x2f')](function(){if(!_0x90fe2d[_0x1875('0x3c')][_0x1875('0x8')]){throw new Error('\x27PATH\x27\x20parameter\x20not\x20specified');}if(!_0x90fe2d['query'][_0x1875('0xa2')]){throw new Error('\x27PORT\x27\x20parameter\x20not\x20specified');}var _0x4aa8b6=_0x90fe2d[_0x1875('0x3c')][_0x1875('0xa3')]?_0x90fe2d[_0x1875('0x3c')][_0x1875('0xa3')]+':'+_0x90fe2d[_0x1875('0x3c')][_0x1875('0xa2')]:'http://localhost:'+_0x90fe2d[_0x1875('0x3c')][_0x1875('0xa2')];var _0x28e586=_0x90fe2d[_0x1875('0x3c')]['json']?_0x90fe2d[_0x1875('0x3c')][_0x1875('0xa4')]:!![];var _0x2e9d1f=_0x90fe2d[_0x1875('0x3c')]['encoding']?_0x90fe2d['query'][_0x1875('0xa5')]:null;var _0x2fe4e0={'method':_0x90fe2d[_0x1875('0xa6')],'uri':util[_0x1875('0x58')](_0x1875('0xa7'),_0x4aa8b6,_0x90fe2d[_0x1875('0x3c')][_0x1875('0x8')]),'json':_0x28e586,'resolveWithFullResponse':!![],'encoding':_0x2e9d1f,'qs':_0x90fe2d['query']};if(_0x90fe2d[_0x1875('0xa8')]){_0x2fe4e0[_0x1875('0xa8')]=_0x90fe2d[_0x1875('0xa8')];if(_0x2fe4e0[_0x1875('0xa8')]['content-length']){delete _0x2fe4e0[_0x1875('0xa8')]['content-length'];}}if(_0x2fe4e0[_0x1875('0xa8')][_0x1875('0xa9')]){delete _0x2fe4e0[_0x1875('0xa8')][_0x1875('0xa9')];}return rp(_0x2fe4e0);})[_0x1875('0x2f')](function(_0x1e1b0f){if(_0x1e1b0f){_0xf52ef8['set'](_0x1e1b0f['headers']);logger[_0x1875('0x6d')](_0x1e1b0f[_0x1875('0x96')]);if(_[_0x1875('0xaa')](_0x90fe2d[_0x1875('0x3c')]['path'],_0x1875('0x53'))&&_0x1e1b0f[_0x1875('0xab')]==0x1f4){return _0xf52ef8[_0x1875('0x22')](_0x1e1b0f[_0x1875('0xab')]);}else{return _0xf52ef8[_0x1875('0x23')](_0x1e1b0f[_0x1875('0xab')])['send'](_0x1e1b0f[_0x1875('0x96')]);}}else{return _0xf52ef8[_0x1875('0x22')](0xc8);}})[_0x1875('0x52')](handleError(_0xf52ef8,null));};exports['webhookPost']=function(_0xecbede,_0x57668a,_0x3d8001){return BPromise[_0x1875('0xa1')]()[_0x1875('0x2f')](function(){if(!_0xecbede[_0x1875('0x3c')][_0x1875('0x8')]){throw new Error(_0x1875('0xac'));}if(!_0xecbede[_0x1875('0x3c')][_0x1875('0xa2')]){throw new Error(_0x1875('0xad'));}var _0x44cae8=_0xecbede['query'][_0x1875('0xa3')]?_0xecbede[_0x1875('0x3c')][_0x1875('0xa3')]+':'+_0xecbede[_0x1875('0x3c')]['port']:_0x1875('0xae')+_0xecbede[_0x1875('0x3c')][_0x1875('0xa2')];var _0x17eeac=_0xecbede['query'][_0x1875('0xa4')]?_0xecbede['query'][_0x1875('0xa4')]:!![];var _0x396744=_0xecbede[_0x1875('0x3c')]['encoding']?_0xecbede[_0x1875('0x3c')][_0x1875('0xa5')]:null;var _0x24f90e={'method':_0xecbede[_0x1875('0xa6')],'uri':util[_0x1875('0x58')](_0x1875('0xa7'),_0x44cae8,_0xecbede['query']['path']),'json':_0x17eeac,'resolveWithFullResponse':!![],'encoding':_0x396744,'body':_0xecbede[_0x1875('0x96')]};if(_0xecbede[_0x1875('0xa8')]){_0x24f90e[_0x1875('0xa8')]=_0xecbede[_0x1875('0xa8')];if(_0x24f90e[_0x1875('0xa8')][_0x1875('0xaf')]){delete _0x24f90e[_0x1875('0xa8')][_0x1875('0xaf')];}}if(_0x24f90e[_0x1875('0xa8')]['content-type']){delete _0x24f90e[_0x1875('0xa8')][_0x1875('0xa9')];}return rp(_0x24f90e);})['then'](function(_0x3adff6){if(_0x3adff6){_0x57668a[_0x1875('0x29')](_0x3adff6[_0x1875('0xa8')]);logger['info'](_0x3adff6[_0x1875('0x96')]);return _0x57668a[_0x1875('0x23')](_0x3adff6[_0x1875('0xab')])[_0x1875('0x35')](_0x3adff6[_0x1875('0x96')]);}else{return _0x57668a[_0x1875('0x22')](0xc8);}})[_0x1875('0x52')](handleError(_0x57668a,null));};
\ No newline at end of file
index 1ff558d..2d79d54 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0x0686=['remove','emit','hasOwnProperty','hook','exports','events','../../mysqldb','Plugin','setMaxListeners','save','update'];(function(_0x4d8666,_0x2ff19d){var _0x37175b=function(_0x1b8de6){while(--_0x1b8de6){_0x4d8666['push'](_0x4d8666['shift']());}};_0x37175b(++_0x2ff19d);}(_0x0686,0x123));var _0x6068=function(_0x530137,_0x51d9d8){_0x530137=_0x530137-0x0;var _0x489927=_0x0686[_0x530137];return _0x489927;};'use strict';var EventEmitter=require(_0x6068('0x0'));var Plugin=require(_0x6068('0x1'))['db'][_0x6068('0x2')];var PluginEvents=new EventEmitter();PluginEvents[_0x6068('0x3')](0x0);var events={'afterCreate':_0x6068('0x4'),'afterUpdate':_0x6068('0x5'),'afterDestroy':_0x6068('0x6')};function emitEvent(_0x4c5db2){return function(_0x22449d,_0x4ccea4,_0x40526c){PluginEvents[_0x6068('0x7')](_0x4c5db2+':'+_0x22449d['id'],_0x22449d);PluginEvents[_0x6068('0x7')](_0x4c5db2,_0x22449d);_0x40526c(null);};}for(var e in events){if(events[_0x6068('0x8')](e)){var event=events[e];Plugin[_0x6068('0x9')](e,emitEvent(event));}}module[_0x6068('0xa')]=PluginEvents;
\ No newline at end of file
index 8c6a19f..5cfe867 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0xbcc7=['lodash','util','api','request-promise','rimraf','../../config/environment','exports','define','Plugin','plugins'];(function(_0x297fe8,_0x2c9c7e){var _0x337023=function(_0x17eda0){while(--_0x17eda0){_0x297fe8['push'](_0x297fe8['shift']());}};_0x337023(++_0x2c9c7e);}(_0xbcc7,0x19a));var _0x7bcc=function(_0x2adede,_0x41d13f){_0x2adede=_0x2adede-0x0;var _0x9b8411=_0xbcc7[_0x2adede];return _0x9b8411;};'use strict';var _=require(_0x7bcc('0x0'));var util=require(_0x7bcc('0x1'));var logger=require('../../config/logger')(_0x7bcc('0x2'));var moment=require('moment');var BPromise=require('bluebird');var rp=require(_0x7bcc('0x3'));var fs=require('fs');var path=require('path');var rimraf=require(_0x7bcc('0x4'));var config=require(_0x7bcc('0x5'));var attributes=require('./plugin.attributes');module[_0x7bcc('0x6')]=function(_0x24ff05,_0x82b2e1){return _0x24ff05[_0x7bcc('0x7')](_0x7bcc('0x8'),attributes,{'tableName':_0x7bcc('0x9'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 661c4ca..1baf98f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0xbe99=['error','code','message','catch','CreatePlugin','Plugin','create','body','options','raw','lodash','util','moment','bluebird','randomstring','../../mysqldb','../../config/logger','rpc','../../config/environment','jayson/promise','http','redis','localhost','socket.io-emitter','./plugin.socket','register','request','then','info','Plugin,\x20%s,\x20%s','request\x20sent','debug','stringify'];(function(_0x1f8464,_0x51ad8c){var _0x5691f0=function(_0x128a9c){while(--_0x128a9c){_0x1f8464['push'](_0x1f8464['shift']());}};_0x5691f0(++_0x51ad8c);}(_0xbe99,0x196));var _0x9be9=function(_0xf53094,_0x7be480){_0xf53094=_0xf53094-0x0;var _0x2013b0=_0xbe99[_0xf53094];return _0x2013b0;};'use strict';var _=require(_0x9be9('0x0'));var util=require(_0x9be9('0x1'));var moment=require(_0x9be9('0x2'));var BPromise=require(_0x9be9('0x3'));var rs=require(_0x9be9('0x4'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x9be9('0x5'))['db'];var utils=require('../../config/utils');var logger=require(_0x9be9('0x6'))(_0x9be9('0x7'));var config=require(_0x9be9('0x8'));var jayson=require(_0x9be9('0x9'));var client=jayson['client'][_0x9be9('0xa')]({'port':0x232a});config[_0x9be9('0xb')]=_['defaults'](config['redis'],{'host':_0x9be9('0xc'),'port':0x18eb});var socket=require(_0x9be9('0xd'))(new Redis(config[_0x9be9('0xb')]));require(_0x9be9('0xe'))[_0x9be9('0xf')](socket);function respondWithRpcPromise(_0x40a766,_0xc91d1c,_0x8e9f81){return new BPromise(function(_0x3f0d05,_0x385a13){return client[_0x9be9('0x10')](_0x40a766,_0x8e9f81)[_0x9be9('0x11')](function(_0x12adfb){logger[_0x9be9('0x12')](_0x9be9('0x13'),_0xc91d1c,_0x9be9('0x14'));logger[_0x9be9('0x15')]('Plugin,\x20%s,\x20%s,\x20%s',_0xc91d1c,_0x9be9('0x14'),JSON[_0x9be9('0x16')](_0x12adfb));if(_0x12adfb[_0x9be9('0x17')]){if(_0x12adfb[_0x9be9('0x17')][_0x9be9('0x18')]===0x1f4){logger['error'](_0x9be9('0x13'),_0xc91d1c,_0x12adfb[_0x9be9('0x17')][_0x9be9('0x19')]);return _0x385a13(_0x12adfb['error'][_0x9be9('0x19')]);}logger[_0x9be9('0x17')](_0x9be9('0x13'),_0xc91d1c,_0x12adfb[_0x9be9('0x17')][_0x9be9('0x19')]);return _0x3f0d05(_0x12adfb['error'][_0x9be9('0x19')]);}else{logger[_0x9be9('0x12')](_0x9be9('0x13'),_0xc91d1c,'request\x20sent');_0x3f0d05(_0x12adfb['result'][_0x9be9('0x19')]);}})[_0x9be9('0x1a')](function(_0x18a92a){logger['error']('Plugin,\x20%s,\x20%s',_0xc91d1c,_0x18a92a);_0x385a13(_0x18a92a);});});}exports[_0x9be9('0x1b')]=function(_0x356dea){var _0x217ce7=this;return new Promise(function(_0x380a8c,_0x1b041b){return db[_0x9be9('0x1c')][_0x9be9('0x1d')](_0x356dea[_0x9be9('0x1e')],{'raw':_0x356dea[_0x9be9('0x1f')]?_0x356dea[_0x9be9('0x1f')][_0x9be9('0x20')]===undefined?!![]:![]:!![]})[_0x9be9('0x11')](function(_0x599429){logger[_0x9be9('0x12')]('CreatePlugin',_0x356dea);logger[_0x9be9('0x15')](_0x9be9('0x1b'),_0x356dea,JSON[_0x9be9('0x16')](_0x599429));_0x380a8c(_0x599429);})[_0x9be9('0x1a')](function(_0x500e60){logger[_0x9be9('0x17')](_0x9be9('0x1b'),_0x500e60[_0x9be9('0x19')],_0x356dea);_0x1b041b(_0x217ce7[_0x9be9('0x17')](0x1f4,_0x500e60[_0x9be9('0x19')]));});});};
\ No newline at end of file
index 1e1058e..bd05c30 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0x51f0=['remove','update','removeListener','register','./plugin.events','save'];(function(_0x22f6a1,_0x31dfde){var _0x4bd20a=function(_0x144fc8){while(--_0x144fc8){_0x22f6a1['push'](_0x22f6a1['shift']());}};_0x4bd20a(++_0x31dfde);}(_0x51f0,0xa6));var _0x051f=function(_0x397e5f,_0x454c8f){_0x397e5f=_0x397e5f-0x0;var _0x5302b8=_0x51f0[_0x397e5f];return _0x5302b8;};'use strict';var PluginEvents=require(_0x051f('0x0'));var events=[_0x051f('0x1'),_0x051f('0x2'),_0x051f('0x3')];function createListener(_0x2daf37,_0x4b1fd6){return function(_0x185eb0){_0x4b1fd6['emit'](_0x2daf37,_0x185eb0);};}function removeListener(_0x5b172e,_0x3c6412){return function(){PluginEvents[_0x051f('0x4')](_0x5b172e,_0x3c6412);};}exports[_0x051f('0x5')]=function(_0x37b452){for(var _0x1f4803=0x0,_0x5fa4c6=events['length'];_0x1f4803<_0x5fa4c6;_0x1f4803++){var _0x5cbf72=events[_0x1f4803];var _0x132922=createListener('plugin:'+_0x5cbf72,_0x37b452);PluginEvents['on'](_0x5cbf72,_0x132922);}};
\ No newline at end of file
index 6f935c7..02a8dca 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(_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
+var _0xa9e0=['create','put','delete','destroy','exports','express','Router','../../components/auth/service','isAuthenticated','get','/:id','show','post'];(function(_0x1a8f9f,_0x7542b8){var _0x5e7343=function(_0xcc04c3){while(--_0xcc04c3){_0x1a8f9f['push'](_0x1a8f9f['shift']());}};_0x5e7343(++_0x7542b8);}(_0xa9e0,0x123));var _0x0a9e=function(_0x56482c,_0x16118d){_0x56482c=_0x56482c-0x0;var _0x5aae7a=_0xa9e0[_0x56482c];return _0x5aae7a;};'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 2051c75..7b9c52b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0xcea2=['then','express','motion2','length','catch','show','describe','params','create','body','script','join','../../files/plugins','cwd','chdir','dump','update','restart','stop','Unknown\x20status','delete','Unknown\x20id','lodash','../../config/logger','path','child_process','exec','status','json','stack','name','send','npm\x20install','info','index','list'];(function(_0x3c6bfe,_0x170147){var _0x1c7769=function(_0xe499c7){while(--_0xe499c7){_0x3c6bfe['push'](_0x3c6bfe['shift']());}};_0x1c7769(++_0x170147);}(_0xcea2,0x15a));var _0x2cea=function(_0x2c91e9,_0x2fb965){_0x2c91e9=_0x2c91e9-0x0;var _0x13f0ff=_0xcea2[_0x2c91e9];return _0x13f0ff;};'use strict';var _=require(_0x2cea('0x0'));var pm2=require('../../config/pm2');var logger=require(_0x2cea('0x1'))('api');var path=require(_0x2cea('0x2'));var exec=require(_0x2cea('0x3'))[_0x2cea('0x4')];var BPromise=require('bluebird');function handleEntityNotFound(_0x3ff73f,_0x46060b){return function(_0x11596e){if(!_0x11596e){_0x3ff73f['sendStatus'](0x194);;}return _0x11596e;};}function respondWithResult(_0x34f0f2,_0x485c26){_0x485c26=_0x485c26||0xc8;return function(_0x2d69ff){if(_0x2d69ff){return _0x34f0f2[_0x2cea('0x5')](_0x485c26)[_0x2cea('0x6')](_0x2d69ff);}return null;};}function handleError(_0x160cca,_0x11c5c0){_0x11c5c0=_0x11c5c0||0x1f4;return function(_0x1519f6){logger['error'](_0x1519f6[_0x2cea('0x7')]);if(_0x1519f6[_0x2cea('0x8')]){delete _0x1519f6[_0x2cea('0x8')];}_0x160cca[_0x2cea('0x5')](_0x11c5c0)[_0x2cea('0x9')](_0x1519f6);};}function execChildProcess(){return new BPromise(function(_0x439c4d,_0x4298a4){exec(_0x2cea('0xa'),function(_0x58a102,_0x5724b0,_0x2fe9cd){logger[_0x2cea('0xb')](_0x5724b0);logger['info'](_0x2fe9cd);if(_0x58a102){logger['error'](_0x58a102);return _0x4298a4(_0x58a102);}return _0x439c4d(_0x5724b0);});});}exports[_0x2cea('0xc')]=function(_0x4e0da7,_0xa4ce3d){return pm2[_0x2cea('0xd')]()[_0x2cea('0xe')](function(_0x5cf805){if(_0x5cf805){var _0x4d7f8b=_['reject'](_0x5cf805,function(_0x369c72){return _0x369c72['name']===_0x2cea('0xf')||_0x369c72[_0x2cea('0x8')]===_0x2cea('0x10');});return{'rows':_0x4d7f8b,'count':_0x4d7f8b[_0x2cea('0x11')]};}return null;})[_0x2cea('0xe')](respondWithResult(_0xa4ce3d,null))[_0x2cea('0x12')](handleError(_0xa4ce3d,null));};exports[_0x2cea('0x13')]=function(_0x1ead4c,_0x5eee09){return pm2[_0x2cea('0x14')](_0x1ead4c[_0x2cea('0x15')]['id'])[_0x2cea('0xe')](respondWithResult(_0x5eee09,null))[_0x2cea('0xe')](handleEntityNotFound(_0x5eee09,null))[_0x2cea('0x12')](handleError(_0x5eee09,null));};exports[_0x2cea('0x16')]=function(_0x5d75c4,_0x27375b){if(_0x5d75c4['body'][_0x2cea('0x8')]&&_0x5d75c4[_0x2cea('0x17')][_0x2cea('0x18')]){var _0x4fd3d5=path[_0x2cea('0x19')](__dirname,_0x2cea('0x1a'),_0x5d75c4[_0x2cea('0x17')][_0x2cea('0x18')]);var _0x3246bc=process[_0x2cea('0x1b')]();process[_0x2cea('0x1c')](path['dirname'](_0x4fd3d5));return execChildProcess()[_0x2cea('0xe')](function(_0x5e5b46){process[_0x2cea('0x1c')](_0x3246bc);return pm2['start']({'name':_0x5d75c4[_0x2cea('0x17')][_0x2cea('0x8')],'script':_0x4fd3d5});})['then'](function(_0x41d272){pm2[_0x2cea('0x1d')]();return _0x41d272[0x0];})[_0x2cea('0xe')](respondWithResult(_0x27375b,0xc9))[_0x2cea('0x12')](handleError(_0x27375b,null));}else{return _0x27375b[_0x2cea('0x5')](0x1f4)[_0x2cea('0x9')]({'message':'Missing\x20name\x20and/or\x20path'});}};exports[_0x2cea('0x1e')]=function(_0x32b6a3,_0x2bbe9b){if(_0x32b6a3[_0x2cea('0x17')]['id']){delete _0x32b6a3[_0x2cea('0x17')]['id'];}var _0x3ea40c={'online':_0x2cea('0x1f'),'stopped':_0x2cea('0x20')};if(_0x3ea40c['hasOwnProperty'](_0x32b6a3[_0x2cea('0x17')][_0x2cea('0x5')])){return pm2[_0x3ea40c[_0x32b6a3['body'][_0x2cea('0x5')]]](_0x32b6a3[_0x2cea('0x15')]['id'])[_0x2cea('0xe')](respondWithResult(_0x2bbe9b,0xc8))[_0x2cea('0x12')](handleError(_0x2bbe9b,null));}else{return _0x2bbe9b['status'](0x1f4)[_0x2cea('0x9')]({'message':_0x2cea('0x21')});}};exports['destroy']=function(_0x2bf4e9,_0x2e3d44){if(_0x2bf4e9[_0x2cea('0x17')]['id']){delete _0x2bf4e9[_0x2cea('0x17')]['id'];}if(_0x2bf4e9[_0x2cea('0x15')]['id']){return pm2[_0x2cea('0x22')](_0x2bf4e9[_0x2cea('0x15')]['id'])[_0x2cea('0xe')](function(_0x2e1cd6){pm2[_0x2cea('0x1d')]();return _0x2e1cd6[0x0];})[_0x2cea('0xe')](respondWithResult(_0x2e3d44,null))['catch'](handleError(_0x2e3d44,null));}else{return _0x2e3d44[_0x2cea('0x5')](0x1f4)[_0x2cea('0x9')]({'message':_0x2cea('0x23')});}};
\ No newline at end of file
index b9b3e58..785c2d5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0x61f5=['get','/queues','getQueues','exports','express','../../components/auth/service','./realtime.controller','/agents','getAgents'];(function(_0x3f3dc2,_0x1845e0){var _0x33f5aa=function(_0x898107){while(--_0x898107){_0x3f3dc2['push'](_0x3f3dc2['shift']());}};_0x33f5aa(++_0x1845e0);}(_0x61f5,0xaf));var _0x561f=function(_0x3e6729,_0x16d4af){_0x3e6729=_0x3e6729-0x0;var _0x535bcd=_0x61f5[_0x3e6729];return _0x535bcd;};'use strict';var express=require(_0x561f('0x0'));var router=express['Router']();var auth=require(_0x561f('0x1'));var controller=require(_0x561f('0x2'));router['get'](_0x561f('0x3'),auth['isAuthenticated'](),controller[_0x561f('0x4')]);router[_0x561f('0x5')](_0x561f('0x6'),auth['isAuthenticated'](),controller[_0x561f('0x7')]);module[_0x561f('0x8')]=router;
\ No newline at end of file
index dfc9baf..07b1a10 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0x63a3=['startCase','Queues','then','format','Unable\x20to\x20retrieve\x20RPC\x20%s\x20queues','result','catch','VoiceQueuesChannels','Unable\x20to\x20retrieve\x20voice\x20queues\x20channels','loggedIn','available','talking','paused','outbound','push','pTalking','message','dialActive','dialMethod','Trunk','startPredictive','startProgressive','erlangCalls','erlangAbandonmentRate','dialPredictiveInterval','dialPredictiveIntervalMinThreshold','predictiveIntervalAvailable','predictiveIntervalTotalCalls','predictiveIntervalDroppedCallsCallersExit','predictiveIntervalAvgHoldtime','predictiveIntervalAvgTalktime','map','get','loggedInDb','waiting','voice','busy','originated','find','merge','pick','filter','queue','length','some','internal','toString','getMembers','UserId','accountcode','online','voiceStatus','agents','User','Pause','findAll','QueueId','includes','toLowerCase','Invalid\x20channel','getChannels','globalQueueFilter','query','pause','*pause','channel','sort','validateSortParameter','getUpdatedSortOptions','fields','order','rows','getSortedAgentsIdsByStatus','getAgentIdsByStatus','rawAttributes','fieldName','type','key','role','agent','getOptions','sequelize','literal','FIELD(id,','forEach','user','userProfileId','Agents','extraQueryConditions','assign','UserProfile','findAndCountAll','filterAgentAttributes','globalStatus','Status','sortAgentsByStatus','getQueues','Queue','getResources','getRealtimeAgents','all','util','lodash','jayson/promise','../../components/realtime/agents','../../components/parsers/qs','../../config/utils','../../config/logger','api','../../mysqldb','client','http','offset','undefined','limit','count','status','set','json','error','stack','name','request'];(function(_0x556a5f,_0x56e10b){var _0x1aa0e5=function(_0x39e9a9){while(--_0x39e9a9){_0x556a5f['push'](_0x556a5f['shift']());}};_0x1aa0e5(++_0x56e10b);}(_0x63a3,0x1d6));var _0x363a=function(_0x28669c,_0x1f62c4){_0x28669c=_0x28669c-0x0;var _0x4a3af6=_0x63a3[_0x28669c];return _0x4a3af6;};'use strict';var util=require(_0x363a('0x0'));var _=require(_0x363a('0x1'));var jayson=require(_0x363a('0x2'));var rta=require(_0x363a('0x3'));var qs=require(_0x363a('0x4'));var utils=require(_0x363a('0x5'));var logger=require(_0x363a('0x6'))(_0x363a('0x7'));var db=require(_0x363a('0x8'))['db'];var amiClient=jayson[_0x363a('0x9')][_0x363a('0xa')]({'port':0x232a});var routingClient=jayson[_0x363a('0x9')][_0x363a('0xa')]({'port':0x232c});function respondWithFilteredResult(_0x46ac88,_0x10cf9c){return function(_0x1e176f){if(_0x1e176f){var _0x10478b=typeof _0x10cf9c[_0x363a('0xb')]===_0x363a('0xc')&&typeof _0x10cf9c[_0x363a('0xd')]===_0x363a('0xc');var _0x62a09c=_0x1e176f[_0x363a('0xe')];var _0x3481e4=_0x10478b?0x0:_0x10cf9c[_0x363a('0xb')];var _0x34736b=_0x10478b?_0x1e176f[_0x363a('0xe')]:_0x10cf9c[_0x363a('0xb')]+_0x10cf9c[_0x363a('0xd')];var _0x2da023;if(_0x34736b>=_0x62a09c){_0x34736b=_0x62a09c;_0x2da023=0xc8;}else{_0x2da023=0xce;}_0x46ac88[_0x363a('0xf')](_0x2da023);return _0x46ac88[_0x363a('0x10')]('Content-Range',_0x3481e4+'-'+_0x34736b+'/'+_0x62a09c)[_0x363a('0x11')](_0x1e176f);}return null;};}function handleError(_0x20f457,_0x4b8402){_0x4b8402=_0x4b8402||0x1f4;return function(_0x17511f){logger[_0x363a('0x12')](_0x17511f[_0x363a('0x13')]);if(_0x17511f['name']){delete _0x17511f[_0x363a('0x14')];}_0x20f457[_0x363a('0xf')](_0x4b8402)['send'](_0x17511f);};}function getRealtimeQueues(_0x383089,_0x145219){return new Promise(function(_0x32d4eb,_0x32e2d4){var _0x1167f8=_0x145219==='voice'?amiClient:routingClient;return _0x1167f8[_0x363a('0x15')](_[_0x363a('0x16')](_0x145219)+_0x363a('0x17'),_0x383089)[_0x363a('0x18')](function(_0x5f3ae4){if(_0x5f3ae4[_0x363a('0x12')])throw new Error(util[_0x363a('0x19')](_0x363a('0x1a'),_0x145219));return _0x32d4eb(_0x5f3ae4[_0x363a('0x1b')]);})[_0x363a('0x1c')](function(_0xd3362a){_0x32e2d4(_0xd3362a);});});}function getRealtimeVoiceQueueChannels(){return new Promise(function(_0x451fbe,_0x1b702a){return amiClient[_0x363a('0x15')](_0x363a('0x1d'),{})[_0x363a('0x18')](function(_0x15b461){if(_0x15b461['error'])throw new Error(_0x363a('0x1e'));return _0x451fbe(_0x15b461['result']);})[_0x363a('0x1c')](function(_0x17784f){_0x1b702a(_0x17784f);});});}function initializeQueues(_0xe3bf24,_0x2f9da5,_0x4d7ebe,_0x16cdb1){var _0x50312c=[_0x363a('0x1f'),_0x363a('0x20'),'waiting',_0x363a('0x21'),_0x363a('0x22')];if(_0x4d7ebe==='voice'&&_0x16cdb1===_0x363a('0x23')){_0x50312c[_0x363a('0x24')](_0x363a('0x25'),'originated',_0x363a('0x26'),_0x363a('0x27'),_0x363a('0x28'),_0x363a('0x29'),_0x363a('0x2a'),_0x363a('0x2b'),_0x363a('0x2c'),'erlangCallToSecond',_0x363a('0x2d'),'erlangBusyFactor',_0x363a('0x2e'),'dialPredictiveIntervalMaxThreshold',_0x363a('0x2f'),_0x363a('0x30'),_0x363a('0x31'),'predictiveIntervalAnsweredCalls','predictiveIntervalDroppedCallsTimeout',_0x363a('0x32'),_0x363a('0x33'),_0x363a('0x34'));}return _0xe3bf24[_0x363a('0x35')](function(_0x3c761c){var _0x3d6874=_0x3c761c[_0x363a('0x36')]({'plain':!![]});_0x3d6874['agents']=[];_0x3d6874['paused']=0x0;_0x3d6874[_0x363a('0x37')]=0x0;_0x3d6874[_0x363a('0x1f')]=0x0;_0x3d6874[_0x363a('0x20')]=0x0;_0x3d6874[_0x363a('0x38')]=0x0;if(_0x4d7ebe===_0x363a('0x39')){_0x3d6874[_0x363a('0x21')]=0x0;_0x3d6874[_0x363a('0x3a')]=0x0;if(_0x16cdb1==='outbound'){_0x3d6874[_0x363a('0x25')]=0x0;_0x3d6874[_0x363a('0x3b')]=0x0;}}var _0x1a6ecb=_[_0x363a('0x3c')](_0x2f9da5,['id',_0x3d6874['id']]);if(_0x1a6ecb)_[_0x363a('0x3d')](_0x3d6874,_[_0x363a('0x3e')](_0x1a6ecb,_0x50312c));return _0x3d6874;});}function updateAgentVoiceStatus(_0x370022,_0x598dda,_0x499892){var _0x4d1f75=_[_0x363a('0x3f')](_0x499892,[_0x363a('0x40'),_0x598dda[_0x363a('0x14')]]);if(_0x4d1f75[_0x363a('0x41')]===0x0)return _0x370022[_0x363a('0x3a')]=!![];if(_[_0x363a('0x42')](_0x4d1f75,['connectedlinenum',_0x370022[_0x363a('0x43')][_0x363a('0x44')]()]))return _0x370022[_0x363a('0x21')]=!![];if(!_0x370022[_0x363a('0x21')])return _0x370022['busy']=!![];}function getVoiceQueueAgents(_0x21cae2,_0x48f0ed,_0x2cee69,_0x9f2994){var _0x697e81=_[_0x363a('0x3c')](_0x48f0ed,['id',_0x21cae2['id']]);if(!_0x697e81)return _0x21cae2;return _0x697e81[_0x363a('0x45')]({'raw':!![]})[_0x363a('0x18')](function(_0x2605c1){for(var _0x29d2f3=0x0;_0x29d2f3<_0x2605c1[_0x363a('0x41')];_0x29d2f3++){var _0x13339b=_[_0x363a('0x3c')](_0x2cee69,['id',_0x2605c1[_0x29d2f3]['UserId']]);if(!_0x13339b){_0x13339b={'id':_0x2605c1[_0x29d2f3][_0x363a('0x46')],'name':_0x2605c1[_0x29d2f3][_0x363a('0x46')],'accountcode':'','online':![]};}var _0x9abe71={'id':_0x13339b['id'],'name':_0x13339b['name'],'internal':_0x13339b[_0x363a('0x47')],'online':Boolean(_0x13339b[_0x363a('0x48')]),'paused':Boolean(_0x2605c1[_0x29d2f3][_0x363a('0x22')])};if(_0x13339b[_0x363a('0x49')]==='talking')updateAgentVoiceStatus(_0x9abe71,_0x21cae2,_0x9f2994);if(_0x9abe71[_0x363a('0x48')])_0x21cae2[_0x363a('0x37')]++;if(_0x9abe71[_0x363a('0x3a')])_0x21cae2[_0x363a('0x3a')]++;if(_0x9abe71['paused']&&!_0x9abe71['busy']&&!_0x9abe71[_0x363a('0x21')])_0x21cae2[_0x363a('0x22')]++;_0x21cae2[_0x363a('0x4a')][_0x363a('0x24')](_0x9abe71);}return _0x21cae2;});}function getQueueAgents(_0x53eb4f,_0xaf29ab,_0x149b97){var _0x4ba4b2=_0x363a('0x4b')+_[_0x363a('0x16')](_0x149b97)+'Queue';var _0x4f19ca=_0x149b97+_0x363a('0x4c');return db[_0x4ba4b2][_0x363a('0x4d')]({'where':{[_[_0x363a('0x16')](_0x149b97)+_0x363a('0x4e')]:_0x53eb4f['id']},'raw':!![]})[_0x363a('0x18')](function(_0x278d9e){for(var _0x3b1c7b=0x0;_0x3b1c7b<_0x278d9e['length'];_0x3b1c7b++){var _0x3f5b4e=_[_0x363a('0x3c')](_0xaf29ab,['id',_0x278d9e[_0x3b1c7b][_0x363a('0x46')]]);if(!_0x3f5b4e){_0x3f5b4e={'id':_0x278d9e[_0x3b1c7b][_0x363a('0x46')],'name':_0x278d9e[_0x3b1c7b][_0x363a('0x46')],'online':![],['pauseField']:![]};}var _0x2b74bf={'id':_0x3f5b4e['id'],'name':_0x3f5b4e['name'],'online':Boolean(_0x3f5b4e[_0x363a('0x48')]),'paused':Boolean(_0x3f5b4e[_0x4f19ca])};if(_0x2b74bf[_0x363a('0x48')])_0x53eb4f[_0x363a('0x37')]++;_0x53eb4f[_0x363a('0x4a')]['push'](_0x2b74bf);}return _0x53eb4f;});}function validateChannel(_0xb012fa){var _0x1ef750=utils['getChannels']();if(!_[_0x363a('0x4f')](_0x1ef750,_0xb012fa[_0x363a('0x50')]()))throw new Error(_0x363a('0x51'));return _0xb012fa[_0x363a('0x50')]();}exports['getAgents']=function(_0x3a6483,_0x30cf76){var _0x399de8={'count':0x0,'rows':[]};var _0x1adb3c={};var _0x276c1b;var _0x294116;var _0x1aeacd;var _0x3c640f;var _0x1285cd=utils[_0x363a('0x52')]();var _0xbe8e57=_0x3a6483['query'][_0x363a('0x53')];var _0x1a43cb=_0x3a6483[_0x363a('0x54')]['globalStatusFilter'];var _0x5887a6=_0x3a6483[_0x363a('0x54')]['pauseTypeFilter'];var _0x7919ab=_0x1a43cb===_0x363a('0x55')||_0x1a43cb===_0x363a('0x56')?!![]:![];var _0x30b3cc=[];var _0x2fd0f9;Promise['resolve']()[_0x363a('0x18')](function(){if(_0x3a6483[_0x363a('0x54')]['channel']){_0x276c1b=validateChannel(_0x3a6483[_0x363a('0x54')][_0x363a('0x57')]);}if(!_0x3a6483['query'][_0x363a('0x58')]||!_0x3a6483['query'][_0x363a('0x58')]['includes']('globalStatus')){_0x3a6483[_0x363a('0x54')]['sort']=rta[_0x363a('0x59')](_0x3a6483['query']['sort']);return;}var _0x200139=rta[_0x363a('0x5a')](_0x3a6483[_0x363a('0x54')][_0x363a('0x58')]);_0x3a6483[_0x363a('0x54')]['sort']=_0x200139[_0x363a('0x5b')]['join'](',');_0x294116=_0x200139[_0x363a('0x5c')];})[_0x363a('0x18')](function(){if(!_0xbe8e57){return[];}return rta['getAgentIdsByQueues'](_0xbe8e57,_0x276c1b);})[_0x363a('0x18')](function(_0x4e0302){_0x30b3cc=_0x4e0302;return rta['getRealtimeAgents']();})['then'](function(_0x413370){_0x3c640f=_0x413370[_0x363a('0x5d')];if((!_0x1a43cb||_0x7919ab)&&!_0x294116){return _0x30b3cc;}if(_0x294116&&!_0x1a43cb){return rta[_0x363a('0x5e')](_0x3c640f,_0x30b3cc,_0x294116);}else{return rta[_0x363a('0x5f')](_0x3c640f,_0x30b3cc,_0x1a43cb);}})[_0x363a('0x18')](function(_0x823987){_0x30b3cc=_0x823987;var _0x2cd476=![];if(_0x30b3cc[_0x363a('0x41')]===0x0){if(_0xbe8e57||_0x1a43cb){_0x2cd476=!![];}if(_0x7919ab){_0x2cd476=![];}}if(_0x2cd476){return _0x399de8;}var _0x218ac8=_[_0x363a('0x35')](db['User'][_0x363a('0x60')],function(_0xd8f61f){return{'name':_0xd8f61f[_0x363a('0x61')],'type':_0xd8f61f[_0x363a('0x62')][_0x363a('0x63')]};});_0x3a6483[_0x363a('0x54')][_0x363a('0x64')]=_0x363a('0x65');_0x3a6483['query'][_0x363a('0x48')]=!![];_0x1adb3c=qs[_0x363a('0x66')](_0x218ac8,_0x3a6483);_0x1adb3c['raw']=!![];var _0x4ea644=[];if(_0x30b3cc[_0x363a('0x41')]>0x0){_0x4ea644[_0x363a('0x24')]({'id':{'$in':_0x30b3cc}});if(_0x294116&&!_0x1a43cb){_0x2fd0f9=[db[_0x363a('0x67')][_0x363a('0x68')](_0x363a('0x69')+_0x30b3cc+')')];_0x1adb3c[_0x363a('0x5c')]=_0x2fd0f9;}}if(_0x7919ab){_0x1285cd[_0x363a('0x6a')](function(_0x52318f){var _0x5b120f=!![];if(_0x1a43cb===_0x363a('0x56')&&_0x276c1b!==_0x52318f){_0x5b120f=![];}_0x4ea644[_0x363a('0x24')]({[_0x52318f+'Pause']:_0x5b120f});});if(_0x5887a6){_0x4ea644['push']({'pauseType':_0x5887a6});}}else if(_0x1a43cb){_0x1285cd[_0x363a('0x6a')](function(_0x27c934){_0x4ea644[_0x363a('0x24')]({[_0x27c934+_0x363a('0x4c')]:![]});});}_0x1adb3c['where']=_[_0x363a('0x3d')](_0x1adb3c['where'],{'$and':_0x4ea644});if(_0x3a6483[_0x363a('0x6b')][_0x363a('0x64')]===_0x363a('0x6b')){var _0x4f9f3f={'params':{'id':_0x3a6483['user'][_0x363a('0x6c')]},'query':{'section':_0x363a('0x6d'),'role':'agent','online':!![],'raw':!![],'ids':_0x30b3cc,'customSorting':_0x2fd0f9}};if(_0x7919ab){_0x4f9f3f[_0x363a('0x54')][_0x363a('0x6e')]=_0x4ea644;}_0x4f9f3f[_0x363a('0x54')]=Object[_0x363a('0x6f')](_0x4f9f3f[_0x363a('0x54')],_0x3a6483['query']);delete _0x4f9f3f[_0x363a('0x54')]['id'];return db[_0x363a('0x70')]['getResources'](_0x4f9f3f);}return db[_0x363a('0x4b')][_0x363a('0x71')](_0x1adb3c);})['then'](function(_0x26508d){_0x399de8['count']=_0x26508d[_0x363a('0xe')];_0x1aeacd=_0x26508d['rows'];return _0x1aeacd[_0x363a('0x35')](function(_0x7c309){var _0x5b86aa=_['find'](_0x3c640f,['id',_0x7c309['id']]);if(_0x5b86aa){var _0x48a8fe=rta[_0x363a('0x72')](_0x5b86aa);_[_0x363a('0x3d')](_0x7c309,_0x48a8fe);}_0x7c309[_0x363a('0x73')]=rta['getAgentStatus'](_0x7c309);if(_0x7c309['globalStatus'][_0x363a('0x4f')](_0x363a('0x55'))){_0x1285cd[_0x363a('0x6a')](function(_0x32bcb7){if(_0x7c309[_0x32bcb7+_0x363a('0x4c')]){_0x7c309[_0x32bcb7+_0x363a('0x74')]=_0x363a('0x55');}});}return _0x7c309;});})[_0x363a('0x18')](function(_0x22d891){if(!_0x294116||_0x2fd0f9){return _0x22d891;}return rta[_0x363a('0x75')](_0x22d891,_0x294116);})[_0x363a('0x18')](function(_0x2ef2fa){_0x399de8[_0x363a('0x5d')]=_0x2ef2fa;return _0x399de8;})['then'](respondWithFilteredResult(_0x30cf76,_0x1adb3c))['catch'](handleError(_0x30cf76,null));};exports[_0x363a('0x76')]=function(_0x1f1123,_0x45ad97){var _0x2ba5f7={'count':0x0,'rows':[]},_0x4eee71={},_0xe3847b,_0x2b7851,_0x5d61b9,_0x42c57e,_0x4b0fa0;Promise['resolve']()[_0x363a('0x18')](function(){if(_0x1f1123[_0x363a('0x54')][_0x363a('0x57')])_0xe3847b=validateChannel(_0x1f1123[_0x363a('0x54')][_0x363a('0x57')]);var _0x163ab5=_[_0x363a('0x16')](_0xe3847b)+_0x363a('0x77');var _0x647a50=_['map'](db[_0x163ab5][_0x363a('0x60')],function(_0xd76c1a){return{'name':_0xd76c1a[_0x363a('0x61')],'type':_0xd76c1a[_0x363a('0x62')]['key']};});_0x4eee71=qs[_0x363a('0x66')](_0x647a50,_0x1f1123);if(_0x1f1123[_0x363a('0x6b')][_0x363a('0x64')]===_0x363a('0x6b')){var _0x59bed5={'params':{'id':_0x1f1123['user'][_0x363a('0x6c')]},'query':{'section':_0xe3847b===_0x363a('0x39')&&_0x1f1123[_0x363a('0x54')][_0x363a('0x62')]==='outbound'?'QueueCampaigns':_[_0x363a('0x16')](_0xe3847b)+_0x363a('0x17'),'type':_0x1f1123[_0x363a('0x54')]['type'],'nolimit':!![],'sort':_0x363a('0x14'),'filter':_0x1f1123[_0x363a('0x54')]['filter']}};return db['UserProfile'][_0x363a('0x78')](_0x59bed5);}return db[_0x163ab5][_0x363a('0x71')](_0x4eee71);})[_0x363a('0x18')](function(_0xe61472){_0x2ba5f7[_0x363a('0xe')]=_0xe61472[_0x363a('0xe')];_0x2b7851=_0xe61472['rows'];return getRealtimeQueues(_0x1f1123,_0xe3847b);})[_0x363a('0x18')](function(_0x39127d){_0x42c57e=_0x39127d[_0x363a('0x5d')];return rta[_0x363a('0x79')]();})[_0x363a('0x18')](function(_0x36c883){_0x5d61b9=_0x36c883[_0x363a('0x5d')];if(_0xe3847b!=_0x363a('0x39'))return;return getRealtimeVoiceQueueChannels();})[_0x363a('0x18')](function(_0x548025){_0x4b0fa0=_0x548025?_0x548025[_0x363a('0x5d')]:[];return initializeQueues(_0x2b7851,_0x42c57e,_0xe3847b,_0x1f1123[_0x363a('0x54')][_0x363a('0x62')]);})[_0x363a('0x18')](function(_0x3769c4){var _0x4e6b6a=_0x3769c4[_0x363a('0x35')](function(_0x576f5a){if(_0xe3847b===_0x363a('0x39'))return getVoiceQueueAgents(_0x576f5a,_0x2b7851,_0x5d61b9,_0x4b0fa0);else return getQueueAgents(_0x576f5a,_0x5d61b9,_0xe3847b);});return Promise[_0x363a('0x7a')](_0x4e6b6a);})[_0x363a('0x18')](function(_0x52ae9d){_0x2ba5f7[_0x363a('0x5d')]=_0x52ae9d;return _0x2ba5f7;})[_0x363a('0x18')](respondWithFilteredResult(_0x45ad97,_0x4eee71))[_0x363a('0x1c')](handleError(_0x45ad97,null));};
\ No newline at end of file
index a819307..073e261 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(_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
+var _0x9c44=['express','Router','fs-extra','../../components/auth/service','exports','path','connect-timeout'];(function(_0x522ae8,_0x3b637e){var _0x3189b9=function(_0x3115d4){while(--_0x3115d4){_0x522ae8['push'](_0x522ae8['shift']());}};_0x3189b9(++_0x3b637e);}(_0x9c44,0x178));var _0x49c4=function(_0x1caf6a,_0x26a5bf){_0x1caf6a=_0x1caf6a-0x0;var _0x1bf493=_0x9c44[_0x1caf6a];return _0x1bf493;};'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 1ca3694..e3c63a7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0xa381=['INTEGER','sequelize','exports','DATE','STRING'];(function(_0x1667df,_0x266940){var _0x341abf=function(_0x123c3f){while(--_0x123c3f){_0x1667df['push'](_0x1667df['shift']());}};_0x341abf(++_0x266940);}(_0xa381,0x79));var _0x1a38=function(_0x2a0052,_0x4197c1){_0x2a0052=_0x2a0052-0x0;var _0xe789e6=_0xa381[_0x2a0052];return _0xe789e6;};'use strict';var Sequelize=require(_0x1a38('0x0'));module[_0x1a38('0x1')]={'state':{'type':Sequelize['INTEGER'](0x2)},'statedesc':{'type':Sequelize['STRING']},'scheduledat':{'type':Sequelize[_0x1a38('0x2')]},'uniqueid':{'type':Sequelize[_0x1a38('0x3')]},'starttime':{'type':Sequelize[_0x1a38('0x2')]},'responsetime':{'type':Sequelize['DATE']},'ringtime':{'type':Sequelize[_0x1a38('0x4')],'defaultValue':0x0},'campaign':{'type':Sequelize[_0x1a38('0x3')]},'campaigntype':{'type':Sequelize[_0x1a38('0x3')]},'membername':{'type':Sequelize[_0x1a38('0x3')]}};
\ No newline at end of file
index 8622756..43084af 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0xc3b9=['api','moment','request-promise','path','rimraf','../../config/environment','./reportAgentPreview.attributes','exports','define','ReportAgentPreview','report_agent_preview','lodash','util'];(function(_0x20b30e,_0x1908c7){var _0x5073ba=function(_0x271542){while(--_0x271542){_0x20b30e['push'](_0x20b30e['shift']());}};_0x5073ba(++_0x1908c7);}(_0xc3b9,0x73));var _0x9c3b=function(_0x19fa2e,_0x15755b){_0x19fa2e=_0x19fa2e-0x0;var _0x2118ec=_0xc3b9[_0x19fa2e];return _0x2118ec;};'use strict';var _=require(_0x9c3b('0x0'));var util=require(_0x9c3b('0x1'));var logger=require('../../config/logger')(_0x9c3b('0x2'));var moment=require(_0x9c3b('0x3'));var BPromise=require('bluebird');var rp=require(_0x9c3b('0x4'));var fs=require('fs');var path=require(_0x9c3b('0x5'));var rimraf=require(_0x9c3b('0x6'));var config=require(_0x9c3b('0x7'));var attributes=require(_0x9c3b('0x8'));module[_0x9c3b('0x9')]=function(_0x16c750,_0x4af64e){return _0x16c750[_0x9c3b('0xa')](_0x9c3b('0xb'),attributes,{'tableName':_0x9c3b('0xc'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 8301c22..c62a173 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0x61be=['../../config/logger','../../config/environment','jayson/promise','client','http','then','info','request\x20sent','debug','ReportAgentPreview,\x20%s,\x20%s,\x20%s','stringify','error','code','message','ReportAgentPreview,\x20%s,\x20%s','catch','CreateReportAgentPreview','body','options','raw','lodash','moment','bluebird','randomstring','ioredis','../../config/utils'];(function(_0x4ef734,_0x5826d){var _0x33a7cb=function(_0x127a2b){while(--_0x127a2b){_0x4ef734['push'](_0x4ef734['shift']());}};_0x33a7cb(++_0x5826d);}(_0x61be,0x166));var _0xe61b=function(_0x4b9023,_0x4592cc){_0x4b9023=_0x4b9023-0x0;var _0x502620=_0x61be[_0x4b9023];return _0x502620;};'use strict';var _=require(_0xe61b('0x0'));var util=require('util');var moment=require(_0xe61b('0x1'));var BPromise=require(_0xe61b('0x2'));var rs=require(_0xe61b('0x3'));var fs=require('fs');var Redis=require(_0xe61b('0x4'));var db=require('../../mysqldb')['db'];var utils=require(_0xe61b('0x5'));var logger=require(_0xe61b('0x6'))('rpc');var config=require(_0xe61b('0x7'));var jayson=require(_0xe61b('0x8'));var client=jayson[_0xe61b('0x9')][_0xe61b('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x3a2695,_0x211154,_0x5e894a){return new BPromise(function(_0x54e14c,_0x15c08f){return client['request'](_0x3a2695,_0x5e894a)[_0xe61b('0xb')](function(_0x7fec92){logger[_0xe61b('0xc')]('ReportAgentPreview,\x20%s,\x20%s',_0x211154,_0xe61b('0xd'));logger[_0xe61b('0xe')](_0xe61b('0xf'),_0x211154,'request\x20sent',JSON[_0xe61b('0x10')](_0x7fec92));if(_0x7fec92[_0xe61b('0x11')]){if(_0x7fec92[_0xe61b('0x11')][_0xe61b('0x12')]===0x1f4){logger[_0xe61b('0x11')]('ReportAgentPreview,\x20%s,\x20%s',_0x211154,_0x7fec92[_0xe61b('0x11')][_0xe61b('0x13')]);return _0x15c08f(_0x7fec92[_0xe61b('0x11')]['message']);}logger[_0xe61b('0x11')]('ReportAgentPreview,\x20%s,\x20%s',_0x211154,_0x7fec92[_0xe61b('0x11')]['message']);return _0x54e14c(_0x7fec92['error'][_0xe61b('0x13')]);}else{logger[_0xe61b('0xc')](_0xe61b('0x14'),_0x211154,'request\x20sent');_0x54e14c(_0x7fec92['result'][_0xe61b('0x13')]);}})[_0xe61b('0x15')](function(_0x28a033){logger[_0xe61b('0x11')]('ReportAgentPreview,\x20%s,\x20%s',_0x211154,_0x28a033);_0x15c08f(_0x28a033);});});}exports[_0xe61b('0x16')]=function(_0x461952){var _0x5d327c=this;return new Promise(function(_0x3ef301,_0x39a15d){return db['ReportAgentPreview']['create'](_0x461952[_0xe61b('0x17')],{'raw':_0x461952[_0xe61b('0x18')]?_0x461952[_0xe61b('0x18')][_0xe61b('0x19')]===undefined?!![]:![]:!![]})[_0xe61b('0xb')](function(_0x532f8c){logger['info'](_0xe61b('0x16'),_0x461952);logger['debug'](_0xe61b('0x16'),_0x461952,JSON['stringify'](_0x532f8c));_0x3ef301(_0x532f8c);})[_0xe61b('0x15')](function(_0x25453b){logger[_0xe61b('0x11')](_0xe61b('0x16'),_0x25453b[_0xe61b('0x13')],_0x461952);_0x39a15d(_0x5d327c[_0xe61b('0x11')](0x1f4,_0x25453b[_0xe61b('0x13')]));});});};
\ No newline at end of file
index d9f722d..30b140b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0x8c5c=['campaigns','/fax/accounts','faxAccounts','/chat/queues/waitinginteractions','chatQueuesWaitingInteractions','openchannelQueuesWaitingInteractions','openchannelQueuesIdWaitingInteractions','/sms/queues/waitinginteractions','smsQueuesWaitingInteractions','/whatsapp/queues/waitinginteractions','/fax/queues/waitinginteractions','/mail/queues/:id/notify','mail','/mail/queues/:id','post','queueNotify','chat','showChatQueues','/fax/queues/:id/notify','fax','/fax/queues/:id','showFaxQueues','/openchannel/queues/:id/notify','openchannel','/sms/queues/:id/notify','/whatsapp/queues/:id/notify','/sms/queues/:id','showSmsQueues','/whatsapp/queues/:id','showWhatsappQueues','/agents/:id/notify','agentNotify','exports','multer','util','path','express','Router','../../components/auth/service','./rpc.controller','get','/voice/channels','isAuthenticated','voiceChannels','/voice/channels/:uniqueid/mixmonitor','/voice/channels/:uniqueid/stopmixmonitor','/voice/queues','voiceQueues','/chat/queues','chatQueues','/mail/queues','mailQueues','/mail/accounts','mailAccounts','/openchannel/queues','/sms/queues','smsQueues','/whatsapp/queues','/fax/queues','/voice/queues/preview/:id','voiceQueuesPreview','voiceQueuesChannels','voiceQueuesChannel','/voice/queues/channels/:uniqueid/hangup','/voice/queues/channels/:uniqueid/redirect/:exten','voiceQueuesChannelRedirect','/voice/queues/:id','showVoiceQueues','put','updateVoiceQueue','/outbound','outbound','/outbound/channels','outboundChannels','/agents','agentCapacity','trunks'];(function(_0x2c03cf,_0x21b185){var _0x41ea72=function(_0x27223e){while(--_0x27223e){_0x2c03cf['push'](_0x2c03cf['shift']());}};_0x41ea72(++_0x21b185);}(_0x8c5c,0x1a2));var _0xc8c5=function(_0x295cb5,_0x32946d){_0x295cb5=_0x295cb5-0x0;var _0x4fa439=_0x8c5c[_0x295cb5];return _0x4fa439;};'use strict';var multer=require(_0xc8c5('0x0'));var util=require(_0xc8c5('0x1'));var path=require(_0xc8c5('0x2'));var express=require(_0xc8c5('0x3'));var router=express[_0xc8c5('0x4')]();var auth=require(_0xc8c5('0x5'));var controller=require(_0xc8c5('0x6'));router[_0xc8c5('0x7')](_0xc8c5('0x8'),auth[_0xc8c5('0x9')](),controller[_0xc8c5('0xa')]);router[_0xc8c5('0x7')](_0xc8c5('0xb'),auth[_0xc8c5('0x9')](),controller['voiceChannelMixMonitor']);router['get'](_0xc8c5('0xc'),auth[_0xc8c5('0x9')](),controller['voiceChannelStopMixMonitor']);router[_0xc8c5('0x7')](_0xc8c5('0xd'),auth[_0xc8c5('0x9')](),controller[_0xc8c5('0xe')]);router[_0xc8c5('0x7')](_0xc8c5('0xf'),auth[_0xc8c5('0x9')](),controller[_0xc8c5('0x10')]);router[_0xc8c5('0x7')](_0xc8c5('0x11'),auth[_0xc8c5('0x9')](),controller[_0xc8c5('0x12')]);router[_0xc8c5('0x7')](_0xc8c5('0x13'),auth[_0xc8c5('0x9')](),controller[_0xc8c5('0x14')]);router['get'](_0xc8c5('0x15'),auth[_0xc8c5('0x9')](),controller['openchannelQueues']);router[_0xc8c5('0x7')](_0xc8c5('0x16'),auth['isAuthenticated'](),controller[_0xc8c5('0x17')]);router[_0xc8c5('0x7')](_0xc8c5('0x18'),auth[_0xc8c5('0x9')](),controller['whatsappQueues']);router[_0xc8c5('0x7')](_0xc8c5('0x19'),auth[_0xc8c5('0x9')](),controller['faxQueues']);router[_0xc8c5('0x7')](_0xc8c5('0x1a'),auth[_0xc8c5('0x9')](),controller[_0xc8c5('0x1b')]);router[_0xc8c5('0x7')]('/voice/queues/channels',auth[_0xc8c5('0x9')](),controller[_0xc8c5('0x1c')]);router[_0xc8c5('0x7')]('/voice/queues/channels/:uniqueid',auth[_0xc8c5('0x9')](),controller[_0xc8c5('0x1d')]);router[_0xc8c5('0x7')](_0xc8c5('0x1e'),auth[_0xc8c5('0x9')](),controller['voiceQueuesChannelHangup']);router[_0xc8c5('0x7')](_0xc8c5('0x1f'),auth[_0xc8c5('0x9')](),controller[_0xc8c5('0x20')]);router[_0xc8c5('0x7')](_0xc8c5('0x21'),auth[_0xc8c5('0x9')](),controller[_0xc8c5('0x22')]);router[_0xc8c5('0x23')](_0xc8c5('0x21'),auth[_0xc8c5('0x9')](),controller[_0xc8c5('0x24')]);router[_0xc8c5('0x7')](_0xc8c5('0x25'),auth[_0xc8c5('0x9')](),controller[_0xc8c5('0x26')]);router[_0xc8c5('0x7')](_0xc8c5('0x27'),auth[_0xc8c5('0x9')](),controller[_0xc8c5('0x28')]);router['get'](_0xc8c5('0x29'),auth[_0xc8c5('0x9')](),controller['agents']);router[_0xc8c5('0x23')]('/agents/:id/capacity',auth[_0xc8c5('0x9')](),controller[_0xc8c5('0x2a')]);router[_0xc8c5('0x7')]('/telephones',auth['isAuthenticated'](),controller['telephones']);router['get']('/trunks',auth[_0xc8c5('0x9')](),controller[_0xc8c5('0x2b')]);router['get']('/campaigns',auth[_0xc8c5('0x9')](),controller[_0xc8c5('0x2c')]);router[_0xc8c5('0x7')](_0xc8c5('0x2d'),auth[_0xc8c5('0x9')](),controller[_0xc8c5('0x2e')]);router['get'](_0xc8c5('0x2f'),auth[_0xc8c5('0x9')](),controller[_0xc8c5('0x30')]);router['get']('/mail/queues/waitinginteractions',auth['isAuthenticated'](),controller['mailQueuesWaitingInteractions']);router[_0xc8c5('0x7')]('/openchannel/queues/waitinginteractions',auth[_0xc8c5('0x9')](),controller[_0xc8c5('0x31')]);router[_0xc8c5('0x7')]('/openchannel/queues/:id/waitinginteractions',auth[_0xc8c5('0x9')](),controller[_0xc8c5('0x32')]);router[_0xc8c5('0x7')](_0xc8c5('0x33'),auth[_0xc8c5('0x9')](),controller[_0xc8c5('0x34')]);router[_0xc8c5('0x7')](_0xc8c5('0x35'),auth['isAuthenticated'](),controller['whatsappQueuesWaitingInteractions']);router[_0xc8c5('0x7')](_0xc8c5('0x36'),auth[_0xc8c5('0x9')](),controller['faxQueuesWaitingInteractions']);router['post'](_0xc8c5('0x37'),auth[_0xc8c5('0x9')](),controller['queueNotify'](_0xc8c5('0x38')));router[_0xc8c5('0x7')](_0xc8c5('0x39'),auth[_0xc8c5('0x9')](),controller['showMailQueues']);router[_0xc8c5('0x3a')]('/chat/queues/:id/notify',auth[_0xc8c5('0x9')](),controller[_0xc8c5('0x3b')](_0xc8c5('0x3c')));router[_0xc8c5('0x7')]('/chat/queues/:id',auth[_0xc8c5('0x9')](),controller[_0xc8c5('0x3d')]);router['post'](_0xc8c5('0x3e'),auth[_0xc8c5('0x9')](),controller[_0xc8c5('0x3b')](_0xc8c5('0x3f')));router[_0xc8c5('0x7')](_0xc8c5('0x40'),auth[_0xc8c5('0x9')](),controller[_0xc8c5('0x41')]);router[_0xc8c5('0x3a')](_0xc8c5('0x42'),auth['isAuthenticated'](),controller[_0xc8c5('0x3b')](_0xc8c5('0x43')));router[_0xc8c5('0x7')]('/openchannel/queues/:id',auth[_0xc8c5('0x9')](),controller['showOpenchannelQueues']);router[_0xc8c5('0x3a')](_0xc8c5('0x44'),auth[_0xc8c5('0x9')](),controller[_0xc8c5('0x3b')]('sms'));router[_0xc8c5('0x3a')](_0xc8c5('0x45'),auth[_0xc8c5('0x9')](),controller['queueNotify']('whatsapp'));router[_0xc8c5('0x7')](_0xc8c5('0x46'),auth['isAuthenticated'](),controller[_0xc8c5('0x47')]);router[_0xc8c5('0x7')](_0xc8c5('0x48'),auth[_0xc8c5('0x9')](),controller[_0xc8c5('0x49')]);router[_0xc8c5('0x3a')](_0xc8c5('0x4a'),auth[_0xc8c5('0x9')](),controller[_0xc8c5('0x4b')]);module[_0xc8c5('0x4c')]=router;
\ No newline at end of file
index cf98cb1..b1937e9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0x6aa7=['rows','find','VoiceChannels','query','then','voiceChannelMixMonitor','VoiceChannelMixMonitor','params','voiceChannelStopMixMonitor','VoiceChannelStopMixMonitor','merge','voiceQueues','VoiceQueues','showVoiceQueues','updateVoiceQueue','UpdateVoiceQueue','body','voiceQueuesPreview','voiceQueuesChannels','VoiceQueuesChannels','VoiceQueuesChannel','voiceQueuesChannelHangup','VoiceQueuesChannelHangup','voiceQueuesChannelRedirect','VoiceQueuesChannelRedirect','outbound','Outbound','outboundChannels','OutboundChannels','agents','Agents','agentCapacity','interaction','hasOwnProperty','MemberReport','findAll','user','INTERACTION','format','YYYY-MM-DD\x20HH:mm:ss','length','updateAttributes','findOrCreate','interface','SIP/%s','agent','internal','AgentCapacity','telephones','Telephones','trunks','Trunks','campaigns','Campaigns','chatQueues','showChatQueues','mailQueues','showMailQueues','MailQueues','mailAccounts','openchannelQueues','OpenchannelQueues','showOpenchannelQueues','smsQueues','showSmsQueues','SmsQueues','whatsappQueues','WhatsappQueues','showWhatsappQueues','FaxQueues','showFaxQueues','chatQueuesWaitingInteractions','mailQueuesWaitingInteractions','MailQueuesWaitingInteractions','openchannelQueuesWaitingInteractions','OpenchannelQueuesWaitingInteractions','type','queue_id','uniq','value','indexOf','filter','smsQueuesWaitingInteractions','SmsQueuesWaitingInteractions','whatsappQueuesWaitingInteractions','WhatsappQueuesWaitingInteractions','FaxQueuesWaitingInteractions','Website','Account','Queue','\x20Queue\x20not\x20found','Message','messageId','\x20Message\x20not\x20found','update','Interaction','queue','MessageId','InteractionId','From','TransferReport','create','Start','*,*,*,*','channel','Channel\x20field\x20is\x20mandatory','capitalize','chat','User','findOne','Agent\x20not\x20found','agentTransferTimeout','bluebird','lodash','util','../../mysqldb','../../config/logger','jayson/promise','client','http','request','error','code','message','result','catch','status','json','sendStatus','name','send','isNil'];(function(_0x5614a3,_0x1ebbb3){var _0x15f60c=function(_0x213c69){while(--_0x213c69){_0x5614a3['push'](_0x5614a3['shift']());}};_0x15f60c(++_0x1ebbb3);}(_0x6aa7,0x178));var _0x76aa=function(_0x17f219,_0x2cbb18){_0x17f219=_0x17f219-0x0;var _0x2fc957=_0x6aa7[_0x17f219];return _0x2fc957;};'use strict';var BPromise=require(_0x76aa('0x0'));var moment=require('moment');var _=require(_0x76aa('0x1'));var util=require(_0x76aa('0x2'));var db=require(_0x76aa('0x3'))['db'];var logger=require(_0x76aa('0x4'))('api');var jayson=require(_0x76aa('0x5'));var amiClient=jayson[_0x76aa('0x6')][_0x76aa('0x7')]({'port':0x232a});var mailClient=jayson['client']['http']({'port':0x232b});var routingClient=jayson[_0x76aa('0x6')]['http']({'port':0x232c});function respondWithRpcPromise(_0x32dee5,_0x36d12b,_0xa9b695){return new BPromise(function(_0x56d6bc,_0x3dae33){var _0x266bd5=_0xa9b695?_0xa9b695:amiClient;return _0x266bd5[_0x76aa('0x8')](_0x32dee5,_0x36d12b)['then'](function(_0xcd99aa){if(_0xcd99aa[_0x76aa('0x9')]){if(_0xcd99aa[_0x76aa('0x9')][_0x76aa('0xa')]===0x1f4){return _0x3dae33(_0xcd99aa[_0x76aa('0x9')][_0x76aa('0xb')]);}return _0x56d6bc(_0xcd99aa[_0x76aa('0x9')][_0x76aa('0xb')]);}else{_0x56d6bc(_0xcd99aa[_0x76aa('0xc')]);}})[_0x76aa('0xd')](function(_0x5e5f47){_0x3dae33(_0x5e5f47);});});}function respondWithResult(_0x112c39,_0x5df49c){_0x5df49c=_0x5df49c||0xc8;return function(_0x226536){if(_0x226536){return _0x112c39[_0x76aa('0xe')](_0x5df49c)[_0x76aa('0xf')](_0x226536);}return _0x112c39[_0x76aa('0x10')](0x194);};}function handleError(_0x10432c,_0x4e309f){_0x4e309f=_0x4e309f||0x1f4;return function(_0x5f5b59){logger[_0x76aa('0x9')](_0x5f5b59['stack']);if(_0x5f5b59[_0x76aa('0x11')]){delete _0x5f5b59[_0x76aa('0x11')];}_0x10432c['status'](_0x4e309f)[_0x76aa('0x12')](_0x5f5b59);};}function findById(_0x550d9a){return function(_0x328381){if(!_['isNil'](_0x550d9a)&&!_[_0x76aa('0x13')](_0x328381)&&!_[_0x76aa('0x13')](_0x328381[_0x76aa('0x14')])){return _[_0x76aa('0x15')](_0x328381[_0x76aa('0x14')],function(_0x3ead3f){return _0x3ead3f['id']==_0x550d9a;});}return null;};}exports['voiceChannels']=function(_0x5d6202,_0x256636){return respondWithRpcPromise(_0x76aa('0x16'),_0x5d6202[_0x76aa('0x17')])[_0x76aa('0x18')](respondWithResult(_0x256636,null))[_0x76aa('0xd')](handleError(_0x256636,null));};exports[_0x76aa('0x19')]=function(_0x19af92,_0x2eaf48){return respondWithRpcPromise(_0x76aa('0x1a'),_['merge'](_0x19af92[_0x76aa('0x17')],_0x19af92[_0x76aa('0x1b')]))[_0x76aa('0x18')](respondWithResult(_0x2eaf48,null))['catch'](handleError(_0x2eaf48,null));};exports[_0x76aa('0x1c')]=function(_0x189cb6,_0x31252f){return respondWithRpcPromise(_0x76aa('0x1d'),_[_0x76aa('0x1e')](_0x189cb6[_0x76aa('0x17')],_0x189cb6[_0x76aa('0x1b')]))[_0x76aa('0x18')](respondWithResult(_0x31252f,null))[_0x76aa('0xd')](handleError(_0x31252f,null));};exports[_0x76aa('0x1f')]=function(_0x37f1ab,_0x26b75e){return respondWithRpcPromise(_0x76aa('0x20'),_0x37f1ab['query'])[_0x76aa('0x18')](respondWithResult(_0x26b75e,null))[_0x76aa('0xd')](handleError(_0x26b75e,null));};exports[_0x76aa('0x21')]=function(_0x2e7ab4,_0xa1e6){return respondWithRpcPromise(_0x76aa('0x20'),_0x2e7ab4[_0x76aa('0x17')])[_0x76aa('0x18')](findById(_0x2e7ab4[_0x76aa('0x1b')]['id']))[_0x76aa('0x18')](respondWithResult(_0xa1e6,null))['catch'](handleError(_0xa1e6,null));};exports[_0x76aa('0x22')]=function(_0x5a8030,_0x994550){return respondWithRpcPromise(_0x76aa('0x23'),_[_0x76aa('0x1e')](_0x5a8030[_0x76aa('0x24')],_0x5a8030[_0x76aa('0x1b')]))[_0x76aa('0x18')](respondWithResult(_0x994550,null))[_0x76aa('0xd')](handleError(_0x994550,null));};exports[_0x76aa('0x25')]=function(_0x19fd4f,_0x3ea05a){return respondWithRpcPromise('VoiceQueuesPreview',_[_0x76aa('0x1e')](_0x19fd4f[_0x76aa('0x17')],_0x19fd4f[_0x76aa('0x1b')]))[_0x76aa('0x18')](respondWithResult(_0x3ea05a,null))[_0x76aa('0xd')](handleError(_0x3ea05a,null));};exports[_0x76aa('0x26')]=function(_0x35a705,_0x4eb57a){return respondWithRpcPromise(_0x76aa('0x27'),_0x35a705[_0x76aa('0x17')])['then'](respondWithResult(_0x4eb57a,null))[_0x76aa('0xd')](handleError(_0x4eb57a,null));};exports['voiceQueuesChannel']=function(_0x2e2ba3,_0x4c90b6){return respondWithRpcPromise(_0x76aa('0x28'),_['merge'](_0x2e2ba3['query'],_0x2e2ba3[_0x76aa('0x1b')]))[_0x76aa('0x18')](respondWithResult(_0x4c90b6,null))[_0x76aa('0xd')](handleError(_0x4c90b6,null));};exports[_0x76aa('0x29')]=function(_0x595a0f,_0x592596){return respondWithRpcPromise(_0x76aa('0x2a'),_[_0x76aa('0x1e')](_0x595a0f[_0x76aa('0x17')],_0x595a0f[_0x76aa('0x1b')]))[_0x76aa('0x18')](respondWithResult(_0x592596,null))['catch'](handleError(_0x592596,null));};exports[_0x76aa('0x2b')]=function(_0x5c77f1,_0x5086f5){return respondWithRpcPromise(_0x76aa('0x2c'),_[_0x76aa('0x1e')](_0x5c77f1[_0x76aa('0x17')],_0x5c77f1[_0x76aa('0x1b')]))['then'](respondWithResult(_0x5086f5,null))[_0x76aa('0xd')](handleError(_0x5086f5,null));};exports[_0x76aa('0x2d')]=function(_0x2eea79,_0x4e131a){return respondWithRpcPromise(_0x76aa('0x2e'),_0x2eea79[_0x76aa('0x17')])[_0x76aa('0x18')](respondWithResult(_0x4e131a,null))[_0x76aa('0xd')](handleError(_0x4e131a,null));};exports[_0x76aa('0x2f')]=function(_0x982e62,_0x878903){return respondWithRpcPromise(_0x76aa('0x30'),_0x982e62[_0x76aa('0x17')])['then'](respondWithResult(_0x878903,null))[_0x76aa('0xd')](handleError(_0x878903,null));};exports[_0x76aa('0x31')]=function(_0x4a5a96,_0xa824e8){var _0x64612e;return respondWithRpcPromise(_0x76aa('0x32'),_0x4a5a96['query'])['then'](function(_0x153a47){_0x64612e=_0x153a47;return respondWithRpcPromise(_0x76aa('0x32'),_0x4a5a96[_0x76aa('0x17')],routingClient);})[_0x76aa('0x18')](function(_0x50599f){return _[_0x76aa('0x1e')]({},_0x50599f,_0x64612e);})[_0x76aa('0x18')](respondWithResult(_0xa824e8,null))[_0x76aa('0xd')](handleError(_0xa824e8,null));};exports[_0x76aa('0x33')]=function(_0x1138b5,_0x4aa2f3){if(_0x1138b5[_0x76aa('0x24')]&&_0x1138b5['body'][_0x76aa('0x34')]&&_0x1138b5['user']&&_0x1138b5['user']['name']){for(var _0x144f0a in _0x1138b5['body']['interaction']){if(_0x1138b5['body'][_0x76aa('0x34')][_0x76aa('0x35')](_0x144f0a)){db[_0x76aa('0x36')][_0x76aa('0x37')]({'where':{'channel':_0x144f0a,'membername':_0x1138b5[_0x76aa('0x38')]['name'],'type':_0x76aa('0x39'),'exitAt':null,'uniqueid':_0x1138b5[_0x76aa('0x24')][_0x76aa('0x34')][_0x144f0a]&&_0x1138b5[_0x76aa('0x24')][_0x76aa('0x34')][_0x144f0a]['length']?{'$notIn':_0x1138b5[_0x76aa('0x24')][_0x76aa('0x34')][_0x144f0a]}:{'$ne':null}}})['then'](function(_0x2d3441){var _0x5a984e=moment()[_0x76aa('0x3a')](_0x76aa('0x3b'));for(var _0x31930b=0x0,_0x18fd3e=_0x2d3441[_0x76aa('0x3c')];_0x31930b<_0x18fd3e;_0x31930b+=0x1){_0x2d3441[_0x31930b][_0x76aa('0x3d')]({'exitAt':_0x5a984e});}});for(var _0x2e229d=0x0;_0x2e229d<_0x1138b5[_0x76aa('0x24')][_0x76aa('0x34')][_0x144f0a][_0x76aa('0x3c')];_0x2e229d+=0x1){db['MemberReport'][_0x76aa('0x3e')]({'where':{'channel':_0x144f0a,'membername':_0x1138b5['user'][_0x76aa('0x11')],'type':_0x76aa('0x39'),'uniqueid':_0x1138b5[_0x76aa('0x24')][_0x76aa('0x34')][_0x144f0a][_0x2e229d],'exitAt':null},'defaults':{'channel':_0x144f0a,'membername':_0x1138b5['user']['name'],'interface':_[_0x76aa('0x13')](_0x1138b5['user'][_0x76aa('0x3f')])?util[_0x76aa('0x3a')](_0x76aa('0x40'),_0x1138b5[_0x76aa('0x38')][_0x76aa('0x11')]):_0x1138b5[_0x76aa('0x38')]['interface'],'type':'INTERACTION','enterAt':moment()[_0x76aa('0x3a')](_0x76aa('0x3b')),'role':_0x76aa('0x41'),'internal':_0x1138b5[_0x76aa('0x38')][_0x76aa('0x42')],'uniqueid':_0x1138b5[_0x76aa('0x24')]['interaction'][_0x144f0a][_0x2e229d]}});}}}}return respondWithRpcPromise(_0x76aa('0x43'),{'id':_0x1138b5[_0x76aa('0x1b')]['id'],'capacity':_0x1138b5[_0x76aa('0x24')]['capacity']},routingClient)[_0x76aa('0x18')](respondWithResult(_0x4aa2f3,null))['catch'](handleError(_0x4aa2f3,null));};exports[_0x76aa('0x44')]=function(_0x5e1d84,_0x339b0d){return respondWithRpcPromise(_0x76aa('0x45'),_0x5e1d84[_0x76aa('0x17')])[_0x76aa('0x18')](respondWithResult(_0x339b0d,null))[_0x76aa('0xd')](handleError(_0x339b0d,null));};exports[_0x76aa('0x46')]=function(_0x953726,_0x4f2c2b){return respondWithRpcPromise(_0x76aa('0x47'),_0x953726['query'])[_0x76aa('0x18')](respondWithResult(_0x4f2c2b,null))[_0x76aa('0xd')](handleError(_0x4f2c2b,null));};exports[_0x76aa('0x48')]=function(_0x53be10,_0x3fa7ec){return respondWithRpcPromise(_0x76aa('0x49'),_0x53be10[_0x76aa('0x17')])['then'](respondWithResult(_0x3fa7ec,null))[_0x76aa('0xd')](handleError(_0x3fa7ec,null));};exports[_0x76aa('0x4a')]=function(_0x27fc84,_0x1fd2b6){return respondWithRpcPromise('ChatQueues',_0x27fc84[_0x76aa('0x17')],routingClient)[_0x76aa('0x18')](respondWithResult(_0x1fd2b6,null))[_0x76aa('0xd')](handleError(_0x1fd2b6,null));};exports[_0x76aa('0x4b')]=function(_0x2027f8,_0xf7732){return respondWithRpcPromise('ChatQueues',_0x2027f8[_0x76aa('0x17')],routingClient)[_0x76aa('0x18')](findById(_0x2027f8[_0x76aa('0x1b')]['id']))[_0x76aa('0x18')](respondWithResult(_0xf7732,null))[_0x76aa('0xd')](handleError(_0xf7732,null));};exports[_0x76aa('0x4c')]=function(_0x37babe,_0x51893b){return respondWithRpcPromise('MailQueues',_0x37babe[_0x76aa('0x17')],routingClient)[_0x76aa('0x18')](respondWithResult(_0x51893b,null))['catch'](handleError(_0x51893b,null));};exports[_0x76aa('0x4d')]=function(_0x1e6f3c,_0x4f832d){return respondWithRpcPromise(_0x76aa('0x4e'),_0x1e6f3c[_0x76aa('0x17')],routingClient)[_0x76aa('0x18')](findById(_0x1e6f3c[_0x76aa('0x1b')]['id']))[_0x76aa('0x18')](respondWithResult(_0x4f832d,null))[_0x76aa('0xd')](handleError(_0x4f832d,null));};exports[_0x76aa('0x4f')]=function(_0x30573a,_0x69b1af){return respondWithRpcPromise('MailAccounts',_0x30573a[_0x76aa('0x17')],mailClient)['then'](respondWithResult(_0x69b1af,null))[_0x76aa('0xd')](handleError(_0x69b1af,null));};exports[_0x76aa('0x50')]=function(_0x2fef92,_0x16cc85){return respondWithRpcPromise(_0x76aa('0x51'),_0x2fef92[_0x76aa('0x17')],routingClient)[_0x76aa('0x18')](respondWithResult(_0x16cc85,null))[_0x76aa('0xd')](handleError(_0x16cc85,null));};exports[_0x76aa('0x52')]=function(_0x5eceba,_0x267fcf){return respondWithRpcPromise(_0x76aa('0x51'),_0x5eceba[_0x76aa('0x17')],routingClient)[_0x76aa('0x18')](findById(_0x5eceba[_0x76aa('0x1b')]['id']))[_0x76aa('0x18')](respondWithResult(_0x267fcf,null))[_0x76aa('0xd')](handleError(_0x267fcf,null));};exports[_0x76aa('0x53')]=function(_0x5546b6,_0x364d05){return respondWithRpcPromise('SmsQueues',_0x5546b6[_0x76aa('0x17')],routingClient)[_0x76aa('0x18')](respondWithResult(_0x364d05,null))[_0x76aa('0xd')](handleError(_0x364d05,null));};exports[_0x76aa('0x54')]=function(_0x3a82fe,_0x234dc4){return respondWithRpcPromise(_0x76aa('0x55'),_0x3a82fe['query'],routingClient)[_0x76aa('0x18')](findById(_0x3a82fe[_0x76aa('0x1b')]['id']))['then'](respondWithResult(_0x234dc4,null))['catch'](handleError(_0x234dc4,null));};exports[_0x76aa('0x56')]=function(_0x13389d,_0x5295a7){return respondWithRpcPromise(_0x76aa('0x57'),_0x13389d[_0x76aa('0x17')],routingClient)[_0x76aa('0x18')](respondWithResult(_0x5295a7,null))['catch'](handleError(_0x5295a7,null));};exports[_0x76aa('0x58')]=function(_0x47f733,_0xf31e1f){return respondWithRpcPromise(_0x76aa('0x57'),_0x47f733[_0x76aa('0x17')],routingClient)[_0x76aa('0x18')](findById(_0x47f733['params']['id']))['then'](respondWithResult(_0xf31e1f,null))[_0x76aa('0xd')](handleError(_0xf31e1f,null));};exports['faxQueues']=function(_0x2a8fd3,_0x28feb2){return respondWithRpcPromise(_0x76aa('0x59'),_0x2a8fd3[_0x76aa('0x17')],routingClient)[_0x76aa('0x18')](respondWithResult(_0x28feb2,null))[_0x76aa('0xd')](handleError(_0x28feb2,null));};exports[_0x76aa('0x5a')]=function(_0x223c92,_0xa19c1c){return respondWithRpcPromise('FaxQueues',_0x223c92[_0x76aa('0x17')],routingClient)[_0x76aa('0x18')](findById(_0x223c92[_0x76aa('0x1b')]['id']))[_0x76aa('0x18')](respondWithResult(_0xa19c1c,null))['catch'](handleError(_0xa19c1c,null));};exports['faxAccounts']=function(_0x557c11,_0x1a01ac){return respondWithRpcPromise('FaxAccounts',_0x557c11[_0x76aa('0x17')])[_0x76aa('0x18')](respondWithResult(_0x1a01ac,null))[_0x76aa('0xd')](handleError(_0x1a01ac,null));};exports[_0x76aa('0x5b')]=function(_0x5754fa,_0x7eb34e){return respondWithRpcPromise('ChatQueuesWaitingInteractions',_0x5754fa[_0x76aa('0x17')],routingClient)[_0x76aa('0x18')](respondWithResult(_0x7eb34e,null))[_0x76aa('0xd')](handleError(_0x7eb34e,null));};exports[_0x76aa('0x5c')]=function(_0x1037fb,_0x496e66){return respondWithRpcPromise(_0x76aa('0x5d'),_0x1037fb[_0x76aa('0x17')],routingClient)[_0x76aa('0x18')](respondWithResult(_0x496e66,null))[_0x76aa('0xd')](handleError(_0x496e66,null));};exports[_0x76aa('0x5e')]=function(_0x22432d,_0x1d9c6e){return respondWithRpcPromise(_0x76aa('0x5f'),_0x22432d['query'],routingClient)[_0x76aa('0x18')](respondWithResult(_0x1d9c6e,null))[_0x76aa('0xd')](handleError(_0x1d9c6e,null));};exports['openchannelQueuesIdWaitingInteractions']=function(_0x3c1b98,_0x215463){return respondWithRpcPromise(_0x76aa('0x5f'),_0x3c1b98[_0x76aa('0x17')],routingClient)[_0x76aa('0x18')](function(_0x51b101){if(_0x3c1b98[_0x76aa('0x17')]['type']!==undefined){var _0xdb821b=_(_0x51b101['rows'])['filter']([_0x3c1b98[_0x76aa('0x17')][_0x76aa('0x60')],_0x3c1b98['params']['id']])['map'](_0x76aa('0x61'))[_0x76aa('0x62')]()[_0x76aa('0x63')]();return _0x51b101['rows']['filter'](function(_0x17efc6){return _0xdb821b[_0x76aa('0x64')](_0x17efc6[_0x76aa('0x61')])>-0x1;});}else{return _0x51b101['rows'][_0x76aa('0x65')](function(_0x4c773a){return _0x4c773a[_0x76aa('0x61')]===parseInt(_0x3c1b98[_0x76aa('0x1b')]['id']);});}})[_0x76aa('0x18')](respondWithResult(_0x215463,null))[_0x76aa('0xd')](handleError(_0x215463,null));};exports[_0x76aa('0x66')]=function(_0x486d86,_0x5a79ba){return respondWithRpcPromise(_0x76aa('0x67'),_0x486d86[_0x76aa('0x17')],routingClient)[_0x76aa('0x18')](respondWithResult(_0x5a79ba,null))['catch'](handleError(_0x5a79ba,null));};exports[_0x76aa('0x68')]=function(_0x3b6e44,_0x2ce07f){return respondWithRpcPromise(_0x76aa('0x69'),_0x3b6e44[_0x76aa('0x17')],routingClient)['then'](respondWithResult(_0x2ce07f,null))[_0x76aa('0xd')](handleError(_0x2ce07f,null));};exports['faxQueuesWaitingInteractions']=function(_0x213f7f,_0xca8769){return respondWithRpcPromise(_0x76aa('0x6a'),_0x213f7f[_0x76aa('0x17')],routingClient)[_0x76aa('0x18')](respondWithResult(_0xca8769,null))[_0x76aa('0xd')](handleError(_0xca8769,null));};exports['queueNotify']=function(_0x555682){return function(_0x547411,_0x47dd29){var _0x490fa4,_0x2203c3;var _0x22f44f=_['capitalize'](_0x555682);var _0x5c2c91=_0x555682==='chat'?_0x76aa('0x6b'):_0x76aa('0x6c');return db[_0x22f44f+_0x76aa('0x6d')]['findOne']({'raw':!![],'where':{'id':_0x547411['params']['id']}})[_0x76aa('0x18')](function(_0x45edd0){if(_[_0x76aa('0x13')](_0x45edd0)){throw new Error(_0x22f44f+_0x76aa('0x6e'));}_0x490fa4=_0x45edd0;return db[_0x22f44f+_0x76aa('0x6f')]['findOne']({'where':{'id':_0x547411['body'][_0x76aa('0x70')]},'include':[{'model':db[_0x22f44f+'Interaction'],'as':'Interaction'},{'model':db[_0x22f44f+_0x5c2c91],'as':'Account'}]});})[_0x76aa('0x18')](function(_0xbb1ccd){if(_['isNil'](_0xbb1ccd)){throw new Error(_0x22f44f+_0x76aa('0x71'));}_0x2203c3=_0xbb1ccd;return _0xbb1ccd[_0x76aa('0x72')]({'read':0x0,'readAt':null,'UserId':null});})['then'](function(){var _0x22063f={'uniqueid':_0x555682+'.'+_0x2203c3['id']+'.'+_0x2203c3[_0x76aa('0x73')]['id'],'FromUserId':_0x547411[_0x76aa('0x38')]['id'],'type':_0x76aa('0x74')};_0x22063f[_0x22f44f+_0x76aa('0x75')]=_0x2203c3['id'];_0x22063f[_0x22f44f+_0x76aa('0x76')]=_0x2203c3[_0x76aa('0x73')]['id'];_0x22063f[_0x76aa('0x77')+_0x22f44f+_0x5c2c91+'Id']=_0x2203c3[_0x76aa('0x6c')]['id'];_0x22063f['To'+_0x22f44f+'QueueId']=_0x490fa4['id'];return db[_0x22f44f+_0x76aa('0x78')][_0x76aa('0x79')](_0x22063f);})['then'](function(){return respondWithRpcPromise(_0x76aa('0x7a'),{'channel':_0x555682,'interaction':_0x2203c3[_0x76aa('0x73')],'message':_0x2203c3,'account':_0x2203c3[_0x76aa('0x6c')],'applications':[{'id':0x0,'priority':0x1,'app':'queue','appdata':_0x490fa4[_0x76aa('0x11')]+','+(_0x2203c3[_0x76aa('0x6c')]['queueTransferTimeout']||0x12c),'interval':_0x76aa('0x7b')}]},routingClient);})[_0x76aa('0x18')](respondWithResult(_0x47dd29,null))[_0x76aa('0xd')](handleError(_0x47dd29,null));};};exports['agentNotify']=function(_0xae152a,_0x202acb){var _0x50a51f,_0x5aabe5;if(_['isNil'](_0xae152a[_0x76aa('0x24')][_0x76aa('0x7c')])){throw new Error(_0x76aa('0x7d'));}var _0x16643e=_0xae152a['body']['channel'];var _0x4a449c=_[_0x76aa('0x7e')](_0x16643e);var _0x59876c=_0x16643e===_0x76aa('0x7f')?_0x76aa('0x6b'):'Account';return db[_0x76aa('0x80')][_0x76aa('0x81')]({'raw':!![],'where':{'id':_0xae152a['params']['id'],'role':_0x76aa('0x41')}})[_0x76aa('0x18')](function(_0x41200c){if(_[_0x76aa('0x13')](_0x41200c)){throw new Error(_0x76aa('0x82'));}_0x50a51f=_0x41200c;return db[_0x4a449c+_0x76aa('0x6f')]['findOne']({'where':{'id':_0xae152a[_0x76aa('0x24')]['messageId']},'include':[{'model':db[_0x4a449c+'Interaction'],'as':'Interaction'},{'model':db[_0x4a449c+_0x59876c],'as':'Account'}]});})['then'](function(_0xb65e0b){if(_[_0x76aa('0x13')](_0xb65e0b)){throw new Error(_0x4a449c+_0x76aa('0x71'));}_0x5aabe5=_0xb65e0b;return _0xb65e0b[_0x76aa('0x72')]({'read':0x0,'readAt':null,'UserId':null});})['then'](function(){var _0x447103={'uniqueid':_0x16643e+'.'+_0x5aabe5['id']+'.'+_0x5aabe5[_0x76aa('0x73')]['id'],'FromUserId':_0xae152a[_0x76aa('0x38')]['id'],'type':_0x76aa('0x74'),'ToUserId':_0x50a51f['id']};_0x447103[_0x4a449c+_0x76aa('0x75')]=_0x5aabe5['id'];_0x447103[_0x4a449c+'InteractionId']=_0x5aabe5[_0x76aa('0x73')]['id'];_0x447103[_0x76aa('0x77')+_0x4a449c+_0x59876c+'Id']=_0x5aabe5[_0x76aa('0x6c')]['id'];return db[_0x4a449c+_0x76aa('0x78')][_0x76aa('0x79')](_0x447103);})[_0x76aa('0x18')](function(){return respondWithRpcPromise(_0x76aa('0x7a'),{'channel':_0x16643e,'interaction':_0x5aabe5['Interaction'],'message':_0x5aabe5,'account':_0x5aabe5[_0x76aa('0x6c')],'applications':[{'id':0x0,'priority':0x1,'app':_0x76aa('0x41'),'appdata':_0x50a51f['name']+','+(_0x5aabe5['Account'][_0x76aa('0x83')]||0x12c),'interval':_0x76aa('0x7b')}]},routingClient);})['then'](respondWithResult(_0x202acb,null))[_0x76aa('0xd')](handleError(_0x202acb,null));};
\ No newline at end of file
index ba31532..6f0b0d3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0xd2c2=['destroy','exports','multer','util','path','connect-timeout','express','Router','../../components/auth/service','../../components/interaction/service','../../config/environment','./schedule.controller','get','isAuthenticated','index','/:id','show','create','update'];(function(_0x9659d,_0x5d6e9e){var _0x22e74c=function(_0x5e8f8b){while(--_0x5e8f8b){_0x9659d['push'](_0x9659d['shift']());}};_0x22e74c(++_0x5d6e9e);}(_0xd2c2,0xc0));var _0x2d2c=function(_0x2ad388,_0x217ba1){_0x2ad388=_0x2ad388-0x0;var _0x33c38a=_0xd2c2[_0x2ad388];return _0x33c38a;};'use strict';var multer=require(_0x2d2c('0x0'));var util=require(_0x2d2c('0x1'));var path=require(_0x2d2c('0x2'));var timeout=require(_0x2d2c('0x3'));var express=require(_0x2d2c('0x4'));var router=express[_0x2d2c('0x5')]();var fs_extra=require('fs-extra');var auth=require(_0x2d2c('0x6'));var interaction=require(_0x2d2c('0x7'));var config=require(_0x2d2c('0x8'));var controller=require(_0x2d2c('0x9'));router[_0x2d2c('0xa')]('/',auth[_0x2d2c('0xb')](),controller[_0x2d2c('0xc')]);router[_0x2d2c('0xa')](_0x2d2c('0xd'),auth[_0x2d2c('0xb')](),controller[_0x2d2c('0xe')]);router[_0x2d2c('0xa')]('/:id/run',auth[_0x2d2c('0xb')](),controller['run']);router['post']('/',auth[_0x2d2c('0xb')](),controller[_0x2d2c('0xf')]);router['put'](_0x2d2c('0xd'),auth[_0x2d2c('0xb')](),controller[_0x2d2c('0x10')]);router['delete'](_0x2d2c('0xd'),auth[_0x2d2c('0xb')](),controller[_0x2d2c('0x11')]);module[_0x2d2c('0x12')]=router;
\ No newline at end of file
index 79aa08b..14e379a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0x5f26=['minutes','csv','pdf','xlsx','custom','TEXT','sequelize','exports','STRING','0\x200\x20*\x20*\x20*','DATE','INTEGER','ENUM','years','months','weeks','days'];(function(_0x59129a,_0x33e435){var _0x28812c=function(_0x17668d){while(--_0x17668d){_0x59129a['push'](_0x59129a['shift']());}};_0x28812c(++_0x33e435);}(_0x5f26,0x1af));var _0x65f2=function(_0x58ab89,_0xf01b2d){_0x58ab89=_0x58ab89-0x0;var _0xb93c04=_0x5f26[_0x58ab89];return _0xb93c04;};'use strict';var Sequelize=require(_0x65f2('0x0'));module[_0x65f2('0x1')]={'name':{'type':Sequelize[_0x65f2('0x2')],'allowNull':![]},'description':{'type':Sequelize[_0x65f2('0x2')]},'active':{'type':Sequelize['BOOLEAN'],'allowNull':![],'defaultValue':![]},'cron':{'type':Sequelize[_0x65f2('0x2')],'allowNull':![],'defaultValue':_0x65f2('0x3')},'startAt':{'type':Sequelize['DATE'],'allowNull':![]},'endAt':{'type':Sequelize[_0x65f2('0x4')],'allowNull':![]},'subtractNumber':{'type':Sequelize[_0x65f2('0x5')],'allowNull':![],'defaultValue':0x1,'validate':{'min':0x1}},'subtractUnit':{'type':Sequelize[_0x65f2('0x6')](_0x65f2('0x7'),'quarters',_0x65f2('0x8'),_0x65f2('0x9'),_0x65f2('0xa'),'hours',_0x65f2('0xb')),'allowNull':![],'defaultValue':_0x65f2('0xa')},'output':{'type':Sequelize['ENUM'](_0x65f2('0xc'),_0x65f2('0xd'),_0x65f2('0xe')),'allowNull':![],'defaultValue':_0x65f2('0xc')},'type':{'type':Sequelize['ENUM'](_0x65f2('0xf'),'default'),'allowNull':![],'defaultValue':'custom'},'sendMail':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'email':{'type':Sequelize[_0x65f2('0x2')]},'cc':{'type':Sequelize['TEXT']},'bcc':{'type':Sequelize[_0x65f2('0x10')]},'sendIfEmpty':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]}};
\ No newline at end of file
index 6dc317c..0ea2faf 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0x715a=['find','catch','create','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','user','UserProfileSection','userProfileId','error','body','params','run','../../config/schedule','eml-format','rimraf','fast-json-patch','request-promise','moment','mustache','path','ejs','fs-extra','squel','crypto','jsforce','desk.js','to-csv','querystring','papaparse','ioredis','../../components/parsers/qs','../../config/logger','api','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','json','offset','count','limit','set','Content-Range','apply','save','update','destroy','then','get','Scheduler','UserProfileResource','stack','name','send','Schedule','rawAttributes','fieldName','key','model','map','query','keys','filters','intersection','attributes','fields','hasOwnProperty','nolimit','sort','where','pick','filter','VIRTUAL','options','include','rows','show','length'];(function(_0x1c9fc5,_0x3ca335){var _0x4eea03=function(_0x191625){while(--_0x191625){_0x1c9fc5['push'](_0x1c9fc5['shift']());}};_0x4eea03(++_0x3ca335);}(_0x715a,0x14d));var _0xa715=function(_0x49db96,_0x309563){_0x49db96=_0x49db96-0x0;var _0x1fc26e=_0x715a[_0x49db96];return _0x1fc26e;};'use strict';var emlformat=require(_0xa715('0x0'));var rimraf=require(_0xa715('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0xa715('0x2'));var rp=require(_0xa715('0x3'));var moment=require(_0xa715('0x4'));var BPromise=require('bluebird');var Mustache=require(_0xa715('0x5'));var util=require('util');var path=require(_0xa715('0x6'));var sox=require('sox');var csv=require('to-csv');var ejs=require(_0xa715('0x7'));var fs=require('fs');var fs_extra=require(_0xa715('0x8'));var _=require('lodash');var squel=require(_0xa715('0x9'));var crypto=require(_0xa715('0xa'));var jsforce=require(_0xa715('0xb'));var deskjs=require(_0xa715('0xc'));var toCsv=require(_0xa715('0xd'));var querystring=require(_0xa715('0xe'));var Papa=require(_0xa715('0xf'));var Redis=require(_0xa715('0x10'));var authService=require('../../components/auth/service');var qs=require(_0xa715('0x11'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require('../../config/license/hardware');var logger=require(_0xa715('0x12'))(_0xa715('0x13'));var utils=require('../../config/utils');var config=require(_0xa715('0x14'));var licenseUtil=require(_0xa715('0x15'));var db=require(_0xa715('0x16'))['db'];function respondWithStatusCode(_0x42e9c5,_0x2a4777){_0x2a4777=_0x2a4777||0xcc;return function(_0x5a8a42){if(_0x5a8a42){return _0x42e9c5[_0xa715('0x17')](_0x2a4777);}return _0x42e9c5[_0xa715('0x18')](_0x2a4777)[_0xa715('0x19')]();};}function respondWithResult(_0x13eca8,_0x4a9f00){_0x4a9f00=_0x4a9f00||0xc8;return function(_0x31fab7){if(_0x31fab7){return _0x13eca8[_0xa715('0x18')](_0x4a9f00)[_0xa715('0x1a')](_0x31fab7);}};}function respondWithFilteredResult(_0x45b3b0,_0x5b8eca){return function(_0x1e0297){if(_0x1e0297){var _0x35e5d4=typeof _0x5b8eca['offset']==='undefined'&&typeof _0x5b8eca['limit']==='undefined';var _0x28612a=_0x1e0297['count'];var _0x1970bb=_0x35e5d4?0x0:_0x5b8eca[_0xa715('0x1b')];var _0xfeef27=_0x35e5d4?_0x1e0297[_0xa715('0x1c')]:_0x5b8eca[_0xa715('0x1b')]+_0x5b8eca[_0xa715('0x1d')];var _0x470e8c;if(_0xfeef27>=_0x28612a){_0xfeef27=_0x28612a;_0x470e8c=0xc8;}else{_0x470e8c=0xce;}_0x45b3b0[_0xa715('0x18')](_0x470e8c);return _0x45b3b0[_0xa715('0x1e')](_0xa715('0x1f'),_0x1970bb+'-'+_0xfeef27+'/'+_0x28612a)[_0xa715('0x1a')](_0x1e0297);}return null;};}function patchUpdates(_0x3c7d7c){return function(_0x4b43b8){try{jsonpatch[_0xa715('0x20')](_0x4b43b8,_0x3c7d7c,!![]);}catch(_0x165f9e){return BPromise['reject'](_0x165f9e);}return _0x4b43b8[_0xa715('0x21')]();};}function saveUpdates(_0x28f954,_0x20bde0){return function(_0x3c5622){if(_0x3c5622){return _0x3c5622[_0xa715('0x22')](_0x28f954)['then'](function(_0x337bed){return _0x337bed;});}return null;};}function removeEntity(_0x3799bb,_0x217b1d){return function(_0x257ae6){if(_0x257ae6){return _0x257ae6[_0xa715('0x23')]()[_0xa715('0x24')](function(){var _0x433945=_0x257ae6[_0xa715('0x25')]({'plain':!![]});var _0x408424=_0xa715('0x26');return db[_0xa715('0x27')][_0xa715('0x23')]({'where':{'type':_0x408424,'resourceId':_0x433945['id']}})[_0xa715('0x24')](function(){return _0x257ae6;});})[_0xa715('0x24')](function(){_0x3799bb[_0xa715('0x18')](0xcc)[_0xa715('0x19')]();});}};}function handleEntityNotFound(_0x81e6aa,_0x359d0f){return function(_0xd0b182){if(!_0xd0b182){_0x81e6aa[_0xa715('0x17')](0x194);}return _0xd0b182;};}function handleError(_0x1231d3,_0x3a2107){_0x3a2107=_0x3a2107||0x1f4;return function(_0x174e73){logger['error'](_0x174e73[_0xa715('0x28')]);if(_0x174e73[_0xa715('0x29')]){delete _0x174e73[_0xa715('0x29')];}_0x1231d3[_0xa715('0x18')](_0x3a2107)[_0xa715('0x2a')](_0x174e73);};}exports['index']=function(_0x3ba840,_0x4ca8f0){var _0x4d6893={},_0x1733d8={},_0x2a4639={'count':0x0,'rows':[]};var _0x59c5f2=_['map'](db[_0xa715('0x2b')][_0xa715('0x2c')],function(_0x4eca13){return{'name':_0x4eca13[_0xa715('0x2d')],'type':_0x4eca13['type'][_0xa715('0x2e')]};});_0x1733d8[_0xa715('0x2f')]=_[_0xa715('0x30')](_0x59c5f2,_0xa715('0x29'));_0x1733d8[_0xa715('0x31')]=_[_0xa715('0x32')](_0x3ba840[_0xa715('0x31')]);_0x1733d8[_0xa715('0x33')]=_[_0xa715('0x34')](_0x1733d8[_0xa715('0x2f')],_0x1733d8[_0xa715('0x31')]);_0x4d6893[_0xa715('0x35')]=_[_0xa715('0x34')](_0x1733d8['model'],qs['fields'](_0x3ba840['query'][_0xa715('0x36')]));_0x4d6893[_0xa715('0x35')]=_0x4d6893[_0xa715('0x35')]['length']?_0x4d6893['attributes']:_0x1733d8[_0xa715('0x2f')];if(!_0x3ba840[_0xa715('0x31')][_0xa715('0x37')](_0xa715('0x38'))){_0x4d6893[_0xa715('0x1d')]=qs[_0xa715('0x1d')](_0x3ba840[_0xa715('0x31')]['limit']);_0x4d6893[_0xa715('0x1b')]=qs['offset'](_0x3ba840['query'][_0xa715('0x1b')]);}_0x4d6893['order']=qs['sort'](_0x3ba840[_0xa715('0x31')][_0xa715('0x39')]);_0x4d6893[_0xa715('0x3a')]=qs[_0xa715('0x33')](_[_0xa715('0x3b')](_0x3ba840['query'],_0x1733d8[_0xa715('0x33')]),_0x59c5f2);if(_0x3ba840['query'][_0xa715('0x3c')]){_0x4d6893['where']=_['merge'](_0x4d6893[_0xa715('0x3a')],{'$or':_[_0xa715('0x30')](_0x59c5f2,function(_0x4377d3){if(_0x4377d3['type']!==_0xa715('0x3d')){var _0x73aaec={};_0x73aaec[_0x4377d3[_0xa715('0x29')]]={'$like':'%'+_0x3ba840[_0xa715('0x31')][_0xa715('0x3c')]+'%'};return _0x73aaec;}})});}_0x4d6893=_['merge']({},_0x4d6893,_0x3ba840[_0xa715('0x3e')]);var _0x1410ab={'where':_0x4d6893[_0xa715('0x3a')]};return db[_0xa715('0x2b')]['count'](_0x1410ab)[_0xa715('0x24')](function(_0x19b56a){_0x2a4639[_0xa715('0x1c')]=_0x19b56a;if(_0x3ba840[_0xa715('0x31')]['includeAll']){_0x4d6893[_0xa715('0x3f')]=[{'all':!![]}];}return db[_0xa715('0x2b')]['findAll'](_0x4d6893);})[_0xa715('0x24')](function(_0x36625d){_0x2a4639[_0xa715('0x40')]=_0x36625d;return _0x2a4639;})[_0xa715('0x24')](respondWithFilteredResult(_0x4ca8f0,_0x4d6893))['catch'](handleError(_0x4ca8f0,null));};exports[_0xa715('0x41')]=function(_0x8231c0,_0x347543){var _0x182771={'raw':![],'where':{'id':_0x8231c0['params']['id']}},_0x45fa40={};_0x45fa40[_0xa715('0x2f')]=_[_0xa715('0x32')](db[_0xa715('0x2b')]['rawAttributes']);_0x45fa40[_0xa715('0x31')]=_[_0xa715('0x32')](_0x8231c0[_0xa715('0x31')]);_0x45fa40['filters']=_[_0xa715('0x34')](_0x45fa40[_0xa715('0x2f')],_0x45fa40[_0xa715('0x31')]);_0x182771['attributes']=_[_0xa715('0x34')](_0x45fa40[_0xa715('0x2f')],qs[_0xa715('0x36')](_0x8231c0[_0xa715('0x31')][_0xa715('0x36')]));_0x182771[_0xa715('0x35')]=_0x182771[_0xa715('0x35')][_0xa715('0x42')]?_0x182771[_0xa715('0x35')]:_0x45fa40[_0xa715('0x2f')];if(_0x8231c0[_0xa715('0x31')]['includeAll']){_0x182771[_0xa715('0x3f')]=[{'all':!![]}];}_0x182771=_['merge']({},_0x182771,_0x8231c0[_0xa715('0x3e')]);return db[_0xa715('0x2b')][_0xa715('0x43')](_0x182771)[_0xa715('0x24')](handleEntityNotFound(_0x347543,null))[_0xa715('0x24')](respondWithResult(_0x347543,null))[_0xa715('0x44')](handleError(_0x347543,null));};exports[_0xa715('0x45')]=function(_0x2c6c6d,_0x310d13){return db[_0xa715('0x2b')][_0xa715('0x45')](_0x2c6c6d['body'],{})[_0xa715('0x24')](function(_0x59315a){var _0x58a567=_0x2c6c6d['user'][_0xa715('0x25')]({'plain':!![]});if(!_0x58a567)throw new Error(_0xa715('0x46'));if(_0x58a567[_0xa715('0x47')]===_0xa715('0x48')){var _0x3678e1=_0x59315a[_0xa715('0x25')]({'plain':!![]});var _0x3d3615=_0xa715('0x26');return db[_0xa715('0x49')][_0xa715('0x43')]({'where':{'name':_0x3d3615,'userProfileId':_0x58a567[_0xa715('0x4a')]},'raw':!![]})[_0xa715('0x24')](function(_0x1c5638){if(_0x1c5638&&_0x1c5638['autoAssociation']===0x0){return db[_0xa715('0x27')][_0xa715('0x45')]({'name':_0x3678e1[_0xa715('0x29')],'resourceId':_0x3678e1['id'],'type':_0x1c5638['name'],'sectionId':_0x1c5638['id']},{})['then'](function(){return _0x59315a;});}else{return _0x59315a;}})['catch'](function(_0xb6c096){logger[_0xa715('0x4b')]('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0xb6c096);throw _0xb6c096;});}return _0x59315a;})[_0xa715('0x24')](respondWithResult(_0x310d13,0xc9))['catch'](handleError(_0x310d13,null));};exports['update']=function(_0x1d1a09,_0x46ea09){if(_0x1d1a09[_0xa715('0x4c')]['id']){delete _0x1d1a09[_0xa715('0x4c')]['id'];}return db[_0xa715('0x2b')]['find']({'where':{'id':_0x1d1a09[_0xa715('0x4d')]['id']}})['then'](handleEntityNotFound(_0x46ea09,null))['then'](saveUpdates(_0x1d1a09[_0xa715('0x4c')],null))['then'](respondWithResult(_0x46ea09,null))[_0xa715('0x44')](handleError(_0x46ea09,null));};exports[_0xa715('0x23')]=function(_0x18c9ef,_0x55b980){return db[_0xa715('0x2b')][_0xa715('0x43')]({'where':{'id':_0x18c9ef['params']['id']}})['then'](handleEntityNotFound(_0x55b980,null))[_0xa715('0x24')](removeEntity(_0x55b980,null))[_0xa715('0x44')](handleError(_0x55b980,null));};exports[_0xa715('0x4e')]=function(_0x1c3e77,_0x525cf4,_0x20d583){var _0x106d80=require(_0xa715('0x4f'));return db['Schedule']['find']({'where':{'id':_0x1c3e77[_0xa715('0x4d')]['id']},'raw':!![]})[_0xa715('0x24')](handleEntityNotFound(_0x525cf4,null))[_0xa715('0x24')](function(){_0x106d80[_0xa715('0x4e')](_0x1c3e77[_0xa715('0x4d')]['id']);})['then'](respondWithStatusCode(_0x525cf4,null))[_0xa715('0x44')](handleError(_0x525cf4,null));};
\ No newline at end of file
index 4d5ee92..e2fa4cc 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0x0f1f=['Schedule','lodash','util','path','rimraf','../../config/environment','./schedule.attributes','exports','define'];(function(_0x2a886c,_0x25af63){var _0x448316=function(_0x443048){while(--_0x443048){_0x2a886c['push'](_0x2a886c['shift']());}};_0x448316(++_0x25af63);}(_0x0f1f,0x157));var _0xf0f1=function(_0x4c12ec,_0x2e9103){_0x4c12ec=_0x4c12ec-0x0;var _0x3ae42c=_0x0f1f[_0x4c12ec];return _0x3ae42c;};'use strict';var _=require(_0xf0f1('0x0'));var util=require(_0xf0f1('0x1'));var logger=require('../../config/logger')('api');var moment=require('moment');var BPromise=require('bluebird');var rp=require('request-promise');var fs=require('fs');var path=require(_0xf0f1('0x2'));var rimraf=require(_0xf0f1('0x3'));var config=require(_0xf0f1('0x4'));var attributes=require(_0xf0f1('0x5'));module[_0xf0f1('0x6')]=function(_0x59ded0,_0x22b0f1){return _0x59ded0[_0xf0f1('0x7')](_0xf0f1('0x8'),attributes,{'tableName':'tools_schedules','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index b022299..af55589 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0x37dc=['moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','jayson/promise','client','http','then','Schedule,\x20%s,\x20%s','debug','Schedule,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','code','message','result','catch','lodash','util'];(function(_0x5b54fd,_0x1a8bf1){var _0x4b14e4=function(_0x6b736b){while(--_0x6b736b){_0x5b54fd['push'](_0x5b54fd['shift']());}};_0x4b14e4(++_0x1a8bf1);}(_0x37dc,0x136));var _0xc37d=function(_0x3dabfe,_0x4c1151){_0x3dabfe=_0x3dabfe-0x0;var _0x286523=_0x37dc[_0x3dabfe];return _0x286523;};'use strict';var _=require(_0xc37d('0x0'));var util=require(_0xc37d('0x1'));var moment=require(_0xc37d('0x2'));var BPromise=require(_0xc37d('0x3'));var rs=require(_0xc37d('0x4'));var fs=require('fs');var Redis=require(_0xc37d('0x5'));var db=require(_0xc37d('0x6'))['db'];var utils=require(_0xc37d('0x7'));var logger=require(_0xc37d('0x8'))(_0xc37d('0x9'));var config=require('../../config/environment');var jayson=require(_0xc37d('0xa'));var client=jayson[_0xc37d('0xb')][_0xc37d('0xc')]({'port':0x232a});function respondWithRpcPromise(_0x2a5285,_0xc9fa94,_0x18b5d7){return new BPromise(function(_0x5091b1,_0x2c620c){return client['request'](_0x2a5285,_0x18b5d7)[_0xc37d('0xd')](function(_0x26bc93){logger['info'](_0xc37d('0xe'),_0xc9fa94,'request\x20sent');logger[_0xc37d('0xf')](_0xc37d('0x10'),_0xc9fa94,_0xc37d('0x11'),JSON[_0xc37d('0x12')](_0x26bc93));if(_0x26bc93[_0xc37d('0x13')]){if(_0x26bc93[_0xc37d('0x13')][_0xc37d('0x14')]===0x1f4){logger[_0xc37d('0x13')](_0xc37d('0xe'),_0xc9fa94,_0x26bc93[_0xc37d('0x13')][_0xc37d('0x15')]);return _0x2c620c(_0x26bc93['error']['message']);}logger[_0xc37d('0x13')]('Schedule,\x20%s,\x20%s',_0xc9fa94,_0x26bc93['error'][_0xc37d('0x15')]);return _0x5091b1(_0x26bc93[_0xc37d('0x13')][_0xc37d('0x15')]);}else{logger['info'](_0xc37d('0xe'),_0xc9fa94,_0xc37d('0x11'));_0x5091b1(_0x26bc93[_0xc37d('0x16')][_0xc37d('0x15')]);}})[_0xc37d('0x17')](function(_0x58602a){logger[_0xc37d('0x13')]('Schedule,\x20%s,\x20%s',_0xc9fa94,_0x58602a);_0x2c620c(_0x58602a);});});}
\ No newline at end of file
index cfa7e63..892dccb 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0xe124=['download','create','put','update','delete','multer','util','path','connect-timeout','Router','fs-extra','../../components/auth/service','../../config/environment','./screenRecording.controller','isAuthenticated','index','get','/describe','describe','/:id'];(function(_0x14add3,_0x13ce8d){var _0x4a174f=function(_0x2b3ed7){while(--_0x2b3ed7){_0x14add3['push'](_0x14add3['shift']());}};_0x4a174f(++_0x13ce8d);}(_0xe124,0xa5));var _0x4e12=function(_0x184027,_0x1eb86a){_0x184027=_0x184027-0x0;var _0x2a8b82=_0xe124[_0x184027];return _0x2a8b82;};'use strict';var multer=require(_0x4e12('0x0'));var util=require(_0x4e12('0x1'));var path=require(_0x4e12('0x2'));var timeout=require(_0x4e12('0x3'));var express=require('express');var router=express[_0x4e12('0x4')]();var fs_extra=require(_0x4e12('0x5'));var auth=require(_0x4e12('0x6'));var interaction=require('../../components/interaction/service');var config=require(_0x4e12('0x7'));var controller=require(_0x4e12('0x8'));router['get']('/',auth[_0x4e12('0x9')](),controller[_0x4e12('0xa')]);router[_0x4e12('0xb')](_0x4e12('0xc'),auth[_0x4e12('0x9')](),controller[_0x4e12('0xd')]);router[_0x4e12('0xb')](_0x4e12('0xe'),auth[_0x4e12('0x9')](),controller['show']);router[_0x4e12('0xb')]('/:id/download',auth[_0x4e12('0x9')](),controller[_0x4e12('0xf')]);router['post']('/',auth[_0x4e12('0x9')](),controller[_0x4e12('0x10')]);router[_0x4e12('0x11')](_0x4e12('0xe'),auth[_0x4e12('0x9')](),controller[_0x4e12('0x12')]);router[_0x4e12('0x13')](_0x4e12('0xe'),auth[_0x4e12('0x9')](),controller['destroy']);module['exports']=router;
\ No newline at end of file
index e7b5541..4d30aeb 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0xa2cb=['format','MM-DD-YYYY\x20HH:mm','toString','createdAt','updatedAt','sequelize','moment','../../config/environment','exports','VIRTUAL','getDataValue','value','STRING','setDataValue','INTEGER','startedAt','subtract','closedAt','duration','DATE'];(function(_0x2641f9,_0x26715f){var _0x585741=function(_0x2d1462){while(--_0x2d1462){_0x2641f9['push'](_0x2641f9['shift']());}};_0x585741(++_0x26715f);}(_0xa2cb,0x7d));var _0xba2c=function(_0x5c88be,_0x2fb134){_0x5c88be=_0x5c88be-0x0;var _0x58a8a6=_0xa2cb[_0x5c88be];return _0x58a8a6;};'use strict';var Sequelize=require(_0xba2c('0x0'));var moment=require(_0xba2c('0x1'));var path=require('path');var config=require(_0xba2c('0x2'));module[_0xba2c('0x3')]={'format':{'type':Sequelize[_0xba2c('0x4')],'get':function(){return this[_0xba2c('0x5')](_0xba2c('0x6'))?path['extname'](this['getDataValue']('value')):undefined;}},'interactionid':{'type':Sequelize['STRING']},'channel':{'type':Sequelize['STRING']},'value':{'type':Sequelize[_0xba2c('0x7')],'set':function(_0x54e503){var _0x19c898=_0x54e503['replace'](/\\/g,'/');this[_0xba2c('0x8')](_0xba2c('0x6'),_0x19c898);}},'rating':{'type':Sequelize['INTEGER'],'validate':{'max':0x5,'min':0x0}},'duration':{'type':Sequelize[_0xba2c('0x9')],'set':function(_0x1045fe){this['setDataValue'](_0xba2c('0xa'),moment()[_0xba2c('0xb')](_0x1045fe,'ms'));this[_0xba2c('0x8')](_0xba2c('0xc'),moment());this['setDataValue'](_0xba2c('0xd'),_0x1045fe);}},'startedAt':{'type':Sequelize[_0xba2c('0xe')],'get':function(){return moment(this[_0xba2c('0x5')](_0xba2c('0xa')))[_0xba2c('0xf')](_0xba2c('0x10'))[_0xba2c('0x11')]();}},'closedAt':{'type':Sequelize[_0xba2c('0xe')],'get':function(){return moment(this[_0xba2c('0x5')](_0xba2c('0xc')))['format'](_0xba2c('0x10'))[_0xba2c('0x11')]();}},'createdAt':{'type':Sequelize[_0xba2c('0xe')],'get':function(){return moment(this[_0xba2c('0x5')](_0xba2c('0x12')))[_0xba2c('0xf')](_0xba2c('0x10'))[_0xba2c('0x11')]();}},'updatedAt':{'type':Sequelize[_0xba2c('0xe')],'get':function(){return moment(this['getDataValue'](_0xba2c('0x13')))[_0xba2c('0xf')](_0xba2c('0x10'))[_0xba2c('0x11')]();}}};
\ No newline at end of file
index c53bd80..1e5ad04 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0xa630=['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','../../mysqldb','status','json','offset','limit','undefined','count','Content-Range','apply','reject','save','update','then','destroy','error','stack','name','send','map','ScreenRecording','type','key','model','differenceBy','format','query','keys','intersection','fields','attributes','length','order','filters','pick','filter','where','merge','VIRTUAL','include','findAll','rows','catch','show','params','rawAttributes','includeAll','options','find','create','body','createdAt','value','describe','../../components/encryptor','root','server/files/screen_recordings','%s.cypher','existsSync','decryptFile','secrets','recording','join','ScreenRecording\x20not\x20found','filename','extname','download','message','Not\x20found','isNil','Entity\x20not\x20found','info','cancellazione\x20fisica\x20documento\x20%s','File:\x20\x22','\x22\x20trovato\x20eseguo\x20la\x20cancellazione','unlinkSync','.cypher','eml-format','rimraf','request-promise','bluebird','util','path','sox','to-csv','ejs','lodash'];(function(_0x50a0c2,_0x4befab){var _0x5ebadd=function(_0x3a3342){while(--_0x3a3342){_0x50a0c2['push'](_0x50a0c2['shift']());}};_0x5ebadd(++_0x4befab);}(_0xa630,0xbe));var _0x0a63=function(_0x1aa87e,_0x20503a){_0x1aa87e=_0x1aa87e-0x0;var _0x1e699a=_0xa630[_0x1aa87e];return _0x1e699a;};'use strict';var emlformat=require(_0x0a63('0x0'));var rimraf=require(_0x0a63('0x1'));var zipdir=require('zip-dir');var jsonpatch=require('fast-json-patch');var rp=require(_0x0a63('0x2'));var moment=require('moment');var BPromise=require(_0x0a63('0x3'));var Mustache=require('mustache');var util=require(_0x0a63('0x4'));var path=require(_0x0a63('0x5'));var sox=require(_0x0a63('0x6'));var csv=require(_0x0a63('0x7'));var ejs=require(_0x0a63('0x8'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x0a63('0x9'));var squel=require(_0x0a63('0xa'));var crypto=require(_0x0a63('0xb'));var jsforce=require(_0x0a63('0xc'));var deskjs=require(_0x0a63('0xd'));var toCsv=require(_0x0a63('0x7'));var querystring=require('querystring');var Papa=require(_0x0a63('0xe'));var Redis=require(_0x0a63('0xf'));var authService=require(_0x0a63('0x10'));var qs=require(_0x0a63('0x11'));var as=require(_0x0a63('0x12'));var hardwareService=require(_0x0a63('0x13'));var logger=require(_0x0a63('0x14'))(_0x0a63('0x15'));var utils=require(_0x0a63('0x16'));var config=require(_0x0a63('0x17'));var licenseUtil=require('../../config/license/util');var db=require(_0x0a63('0x18'))['db'];function respondWithStatusCode(_0x420043,_0x2fce86){_0x2fce86=_0x2fce86||0xcc;return function(_0x3d6323){if(_0x3d6323){return _0x420043['sendStatus'](_0x2fce86);}return _0x420043[_0x0a63('0x19')](_0x2fce86)['end']();};}function respondWithResult(_0x331e99,_0x19e922){_0x19e922=_0x19e922||0xc8;return function(_0x26b2bc){if(_0x26b2bc){return _0x331e99[_0x0a63('0x19')](_0x19e922)[_0x0a63('0x1a')](_0x26b2bc);}};}function respondWithFilteredResult(_0x23b49d,_0x552b1f){return function(_0x1e3251){if(_0x1e3251){var _0x524a98=typeof _0x552b1f[_0x0a63('0x1b')]==='undefined'&&typeof _0x552b1f[_0x0a63('0x1c')]===_0x0a63('0x1d');var _0x36a9e8=_0x1e3251[_0x0a63('0x1e')];var _0x1f7481=_0x524a98?0x0:_0x552b1f[_0x0a63('0x1b')];var _0x30f292=_0x524a98?_0x1e3251[_0x0a63('0x1e')]:_0x552b1f[_0x0a63('0x1b')]+_0x552b1f[_0x0a63('0x1c')];var _0x2ad167;if(_0x30f292>=_0x36a9e8){_0x30f292=_0x36a9e8;_0x2ad167=0xc8;}else{_0x2ad167=0xce;}_0x23b49d['status'](_0x2ad167);return _0x23b49d['set'](_0x0a63('0x1f'),_0x1f7481+'-'+_0x30f292+'/'+_0x36a9e8)['json'](_0x1e3251);}return null;};}function patchUpdates(_0x2fc87c){return function(_0x5937df){try{jsonpatch[_0x0a63('0x20')](_0x5937df,_0x2fc87c,!![]);}catch(_0x41d6b8){return BPromise[_0x0a63('0x21')](_0x41d6b8);}return _0x5937df[_0x0a63('0x22')]();};}function saveUpdates(_0x5da46b,_0x398a16){return function(_0x4c225a){if(_0x4c225a){return _0x4c225a[_0x0a63('0x23')](_0x5da46b)[_0x0a63('0x24')](function(_0x1bf64a){return _0x1bf64a;});}return null;};}function removeEntity(_0x20c114,_0x343273){return function(_0x1f929f){if(_0x1f929f){return _0x1f929f[_0x0a63('0x25')]()[_0x0a63('0x24')](function(){_0x20c114['status'](0xcc)['end']();});}};}function handleEntityNotFound(_0x55fb70,_0x4c8637){return function(_0xeacfc9){if(!_0xeacfc9){_0x55fb70['sendStatus'](0x194);}return _0xeacfc9;};}function handleError(_0x496c93,_0x2133cf){_0x2133cf=_0x2133cf||0x1f4;return function(_0x1d5448){logger[_0x0a63('0x26')](_0x1d5448[_0x0a63('0x27')]);if(_0x1d5448['name']){delete _0x1d5448[_0x0a63('0x28')];}_0x496c93[_0x0a63('0x19')](_0x2133cf)[_0x0a63('0x29')](_0x1d5448);};}exports['index']=function(_0x34239b,_0xcf409){var _0x1b7bdb={},_0x145090={},_0x32a52b={'count':0x0,'rows':[]};var _0x4577b6=_[_0x0a63('0x2a')](db[_0x0a63('0x2b')]['rawAttributes'],function(_0x58cc71){return{'name':_0x58cc71['fieldName'],'type':_0x58cc71[_0x0a63('0x2c')][_0x0a63('0x2d')]};});_0x145090[_0x0a63('0x2e')]=_[_0x0a63('0x2f')](_[_0x0a63('0x2a')](_0x4577b6,'name'),[_0x0a63('0x30')]);_0x145090[_0x0a63('0x31')]=_[_0x0a63('0x32')](_0x34239b[_0x0a63('0x31')]);_0x145090['filters']=_[_0x0a63('0x33')](_0x145090[_0x0a63('0x2e')],_0x145090['query']);_0x1b7bdb['attributes']=_[_0x0a63('0x33')](_0x145090['model'],qs['fields'](_0x34239b[_0x0a63('0x31')][_0x0a63('0x34')]));_0x1b7bdb['attributes']=_0x1b7bdb[_0x0a63('0x35')][_0x0a63('0x36')]?_0x1b7bdb[_0x0a63('0x35')]:_0x145090[_0x0a63('0x2e')];if(!_0x34239b[_0x0a63('0x31')]['hasOwnProperty']('nolimit')){_0x1b7bdb[_0x0a63('0x1c')]=qs[_0x0a63('0x1c')](_0x34239b[_0x0a63('0x31')][_0x0a63('0x1c')]);_0x1b7bdb[_0x0a63('0x1b')]=qs[_0x0a63('0x1b')](_0x34239b['query'][_0x0a63('0x1b')]);}_0x1b7bdb[_0x0a63('0x37')]=qs['sort'](_0x34239b[_0x0a63('0x31')]['sort']);_0x1b7bdb['where']=qs[_0x0a63('0x38')](_[_0x0a63('0x39')](_0x34239b[_0x0a63('0x31')],_0x145090['filters']),_0x4577b6);if(_0x34239b[_0x0a63('0x31')][_0x0a63('0x3a')]){_0x1b7bdb[_0x0a63('0x3b')]=_[_0x0a63('0x3c')](_0x1b7bdb[_0x0a63('0x3b')],{'$or':_[_0x0a63('0x2a')](_0x4577b6,function(_0x604a45){if(_0x604a45['type']!==_0x0a63('0x3d')){var _0x1c7e67={};_0x1c7e67[_0x604a45[_0x0a63('0x28')]]={'$like':'%'+_0x34239b['query']['filter']+'%'};return _0x1c7e67;}})});}_0x1b7bdb=_[_0x0a63('0x3c')]({},_0x1b7bdb,_0x34239b['options']);var _0x1a01f4={'where':_0x1b7bdb[_0x0a63('0x3b')]};return db[_0x0a63('0x2b')]['count'](_0x1a01f4)[_0x0a63('0x24')](function(_0x14c737){_0x32a52b[_0x0a63('0x1e')]=_0x14c737;if(_0x34239b[_0x0a63('0x31')]['includeAll']){_0x1b7bdb[_0x0a63('0x3e')]=[{'all':!![]}];}return db[_0x0a63('0x2b')][_0x0a63('0x3f')](_0x1b7bdb);})[_0x0a63('0x24')](function(_0xf18ace){_0x32a52b[_0x0a63('0x40')]=_0xf18ace;return _0x32a52b;})['then'](respondWithFilteredResult(_0xcf409,_0x1b7bdb))[_0x0a63('0x41')](handleError(_0xcf409,null));};exports[_0x0a63('0x42')]=function(_0x347a0b,_0x793502){var _0x20fa0d={'raw':![],'where':{'id':_0x347a0b[_0x0a63('0x43')]['id']}},_0x2482ca={};_0x2482ca[_0x0a63('0x2e')]=_[_0x0a63('0x32')](db[_0x0a63('0x2b')][_0x0a63('0x44')]);_0x2482ca[_0x0a63('0x31')]=_[_0x0a63('0x32')](_0x347a0b[_0x0a63('0x31')]);_0x2482ca[_0x0a63('0x38')]=_[_0x0a63('0x33')](_0x2482ca[_0x0a63('0x2e')],_0x2482ca[_0x0a63('0x31')]);_0x20fa0d['attributes']=_[_0x0a63('0x33')](_0x2482ca['model'],qs['fields'](_0x347a0b[_0x0a63('0x31')][_0x0a63('0x34')]));_0x20fa0d[_0x0a63('0x35')]=_0x20fa0d[_0x0a63('0x35')][_0x0a63('0x36')]?_0x20fa0d[_0x0a63('0x35')]:_0x2482ca[_0x0a63('0x2e')];if(_0x347a0b[_0x0a63('0x31')][_0x0a63('0x45')]){_0x20fa0d[_0x0a63('0x3e')]=[{'all':!![]}];}_0x20fa0d=_[_0x0a63('0x3c')]({},_0x20fa0d,_0x347a0b[_0x0a63('0x46')]);return db[_0x0a63('0x2b')][_0x0a63('0x47')](_0x20fa0d)[_0x0a63('0x24')](handleEntityNotFound(_0x793502,null))[_0x0a63('0x24')](respondWithResult(_0x793502,null))[_0x0a63('0x41')](handleError(_0x793502,null));};exports[_0x0a63('0x48')]=function(_0x366887,_0x148e0a){return db['ScreenRecording'][_0x0a63('0x48')](_0x366887[_0x0a63('0x49')],{})['then'](respondWithResult(_0x148e0a,0xc9))['catch'](handleError(_0x148e0a,null));};exports['update']=function(_0x485f20,_0x36d066){if(_0x485f20[_0x0a63('0x49')]['id']){delete _0x485f20['body']['id'];}delete _0x485f20[_0x0a63('0x49')]['duration'];delete _0x485f20[_0x0a63('0x49')][_0x0a63('0x4a')];delete _0x485f20['body']['closedAt'];delete _0x485f20['body'][_0x0a63('0x4b')];return db[_0x0a63('0x2b')][_0x0a63('0x47')]({'where':{'id':_0x485f20[_0x0a63('0x43')]['id']}})[_0x0a63('0x24')](handleEntityNotFound(_0x36d066,null))['then'](saveUpdates(_0x485f20[_0x0a63('0x49')],null))[_0x0a63('0x24')](respondWithResult(_0x36d066,null))[_0x0a63('0x41')](handleError(_0x36d066,null));};exports[_0x0a63('0x4c')]=function(_0x3575ae,_0x4a5b6e){return db[_0x0a63('0x2b')][_0x0a63('0x4c')]()[_0x0a63('0x24')](respondWithResult(_0x4a5b6e,null))[_0x0a63('0x41')](handleError(_0x4a5b6e,null));};exports['download']=function(_0x35b688,_0x3bd10c,_0x337bef){var _0x330550=require(_0x0a63('0x4d'));var _0x258ed3=![];var _0x4d4e20={};if(_0x35b688[_0x0a63('0x31')][_0x0a63('0x2c')]&&_0x35b688[_0x0a63('0x31')][_0x0a63('0x2c')]==='uniqueid'){_0x4d4e20['uniqueid']=_0x35b688[_0x0a63('0x43')]['id'];}else{_0x4d4e20['id']=_0x35b688[_0x0a63('0x43')]['id'];}return db[_0x0a63('0x2b')][_0x0a63('0x47')]({'where':_0x4d4e20,'attributes':['id',_0x0a63('0x4b')],'raw':!![]})['then'](handleEntityNotFound(_0x3bd10c,null))['then'](function(_0x58b3a8){if(_0x58b3a8){var _0x42c1bb=path['join'](config[_0x0a63('0x4e')],_0x0a63('0x4f'),_0x58b3a8[_0x0a63('0x4b')]);var _0x5d77e3=util['format'](_0x0a63('0x50'),_0x42c1bb);if(fs[_0x0a63('0x51')](_0x5d77e3)){_0x258ed3=!![];return _0x330550[_0x0a63('0x52')](_0x5d77e3,_0x42c1bb,config[_0x0a63('0x53')][_0x0a63('0x54')])[_0x0a63('0x24')](function(){return _0x58b3a8;});}return _0x58b3a8;}})[_0x0a63('0x24')](function(_0xc3415c){if(_0xc3415c){var _0xe454ef=path[_0x0a63('0x55')](config[_0x0a63('0x4e')],_0x0a63('0x4f'),_0xc3415c[_0x0a63('0x4b')]);if(!fs[_0x0a63('0x51')](_0xe454ef)){throw new db['Sequelize']['ValidationError'](_0x0a63('0x56'));}if(_0xc3415c[_0x0a63('0x57')]){return _0x3bd10c['download'](_0xe454ef,_0xc3415c[_0x0a63('0x57')]+path[_0x0a63('0x58')](_0xe454ef),function(){if(_0x258ed3){fs['unlink'](_0xe454ef);}});}else{return _0x3bd10c[_0x0a63('0x59')](_0xe454ef,function(_0x3053e4){if(_0x258ed3){fs['unlink'](_0xe454ef);}});}}})['catch'](function(_0x3b395a){if(_0x3b395a[_0x0a63('0x5a')]===_0x0a63('0x56')){_0x3bd10c['status'](0x194)[_0x0a63('0x29')](_0x0a63('0x5b'));}else{return handleError(_0x3bd10c,null);}});};exports[_0x0a63('0x25')]=function(_0x284dca,_0x15fc2e){return db['ScreenRecording'][_0x0a63('0x47')]({'where':{'id':_0x284dca[_0x0a63('0x43')]['id']}})[_0x0a63('0x24')](function(_0x1fa9cd){if(_[_0x0a63('0x5c')](_0x1fa9cd)){throw new ReferenceError(_0x0a63('0x5d'));}return _0x1fa9cd;})[_0x0a63('0x24')](function(_0x57313b){var _0x4571e7=path[_0x0a63('0x55')](config[_0x0a63('0x4e')],_0x0a63('0x4f'),_0x57313b[_0x0a63('0x4b')]);logger[_0x0a63('0x5e')](_0x0a63('0x5f'),_0x4571e7);if(!_[_0x0a63('0x5c')](_0x57313b['value'])&&fs['existsSync'](_0x4571e7)){logger[_0x0a63('0x5e')](_0x0a63('0x60')+_0x4571e7+_0x0a63('0x61'));fs[_0x0a63('0x62')](_0x4571e7);}_0x4571e7=_0x4571e7+_0x0a63('0x63');if(!_['isNil'](_0x57313b[_0x0a63('0x4b')])&&fs[_0x0a63('0x51')](_0x4571e7)){logger[_0x0a63('0x5e')](_0x0a63('0x60')+_0x4571e7+_0x0a63('0x61'));fs[_0x0a63('0x62')](_0x4571e7);}return _0x57313b;})[_0x0a63('0x24')](function(_0xe52dfd){if(!_0xe52dfd)throw new InternalError();return _0xe52dfd[_0x0a63('0x25')]();})[_0x0a63('0x24')](function(){_0x15fc2e[_0x0a63('0x19')](0xcc)['end']();})[_0x0a63('0x41')](handleError(_0x15fc2e,null));};
\ No newline at end of file
index 8325529..90e1bb9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0x3b0e=['./screenRecording.attributes','define','ScreenRecording','screen_recordings','interactionid','util','../../config/logger','api','bluebird','request-promise','path','rimraf','../../config/environment'];(function(_0x4bd855,_0x3ee757){var _0xc0d9c7=function(_0x15917e){while(--_0x15917e){_0x4bd855['push'](_0x4bd855['shift']());}};_0xc0d9c7(++_0x3ee757);}(_0x3b0e,0x171));var _0xe3b0=function(_0x27bdac,_0x41b3da){_0x27bdac=_0x27bdac-0x0;var _0x1cb5ed=_0x3b0e[_0x27bdac];return _0x1cb5ed;};'use strict';var _=require('lodash');var util=require(_0xe3b0('0x0'));var logger=require(_0xe3b0('0x1'))(_0xe3b0('0x2'));var moment=require('moment');var BPromise=require(_0xe3b0('0x3'));var rp=require(_0xe3b0('0x4'));var fs=require('fs');var path=require(_0xe3b0('0x5'));var rimraf=require(_0xe3b0('0x6'));var config=require(_0xe3b0('0x7'));var attributes=require(_0xe3b0('0x8'));module['exports']=function(_0x283259,_0x42edd2){return _0x283259[_0xe3b0('0x9')](_0xe3b0('0xa'),attributes,{'tableName':_0xe3b0('0xb'),'paranoid':![],'indexes':[{'name':'interactionid','fields':[_0xe3b0('0xc')]}],'timestamps':!![]});};
\ No newline at end of file
index b23fff7..682c026 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0xff42=['message','lodash','util','bluebird','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','request','then','info','ScreenRecording,\x20%s,\x20%s','request\x20sent','debug','ScreenRecording,\x20%s,\x20%s,\x20%s','stringify','code','error'];(function(_0x2dafbe,_0x5d04de){var _0x58a45a=function(_0x50ac96){while(--_0x50ac96){_0x2dafbe['push'](_0x2dafbe['shift']());}};_0x58a45a(++_0x5d04de);}(_0xff42,0x19f));var _0x2ff4=function(_0x20a584,_0xe384a5){_0x20a584=_0x20a584-0x0;var _0x4b41a8=_0xff42[_0x20a584];return _0x4b41a8;};'use strict';var _=require(_0x2ff4('0x0'));var util=require(_0x2ff4('0x1'));var moment=require('moment');var BPromise=require(_0x2ff4('0x2'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x2ff4('0x3'));var db=require(_0x2ff4('0x4'))['db'];var utils=require(_0x2ff4('0x5'));var logger=require(_0x2ff4('0x6'))(_0x2ff4('0x7'));var config=require(_0x2ff4('0x8'));var jayson=require(_0x2ff4('0x9'));var client=jayson[_0x2ff4('0xa')][_0x2ff4('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x5e3307,_0xd5dba8,_0x229fa8){return new BPromise(function(_0x35e9d1,_0x25e9f3){return client[_0x2ff4('0xc')](_0x5e3307,_0x229fa8)[_0x2ff4('0xd')](function(_0x2617c5){logger[_0x2ff4('0xe')](_0x2ff4('0xf'),_0xd5dba8,_0x2ff4('0x10'));logger[_0x2ff4('0x11')](_0x2ff4('0x12'),_0xd5dba8,_0x2ff4('0x10'),JSON[_0x2ff4('0x13')](_0x2617c5));if(_0x2617c5['error']){if(_0x2617c5['error'][_0x2ff4('0x14')]===0x1f4){logger[_0x2ff4('0x15')](_0x2ff4('0xf'),_0xd5dba8,_0x2617c5[_0x2ff4('0x15')][_0x2ff4('0x16')]);return _0x25e9f3(_0x2617c5[_0x2ff4('0x15')][_0x2ff4('0x16')]);}logger['error'](_0x2ff4('0xf'),_0xd5dba8,_0x2617c5['error'][_0x2ff4('0x16')]);return _0x35e9d1(_0x2617c5[_0x2ff4('0x15')][_0x2ff4('0x16')]);}else{logger[_0x2ff4('0xe')](_0x2ff4('0xf'),_0xd5dba8,'request\x20sent');_0x35e9d1(_0x2617c5['result']['message']);}})['catch'](function(_0x4f8d2b){logger['error'](_0x2ff4('0xf'),_0xd5dba8,_0x4f8d2b);_0x25e9f3(_0x4f8d2b);});});}
\ No newline at end of file
index e541946..5f37ae5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0x2934=['connect-timeout','express','Router','fs-extra','../../components/interaction/service','get','isAuthenticated','/now','/:id','/:id/logo','getLogo','getLogoLogin','gdpr','getPreferred','/:id/favicon','getFavicon','diskStorage','join','root','server/files/images/logos/','format','%s%s','logo','originalname','single','addLogo','extname','post','/:id/logo_login','file','addLogoLogin','preferred','/:id/preferred','addPreferred','favicon','update','exports','multer','util','path'];(function(_0x272cd3,_0x4b9a03){var _0x356a60=function(_0x4a1aa6){while(--_0x4a1aa6){_0x272cd3['push'](_0x272cd3['shift']());}};_0x356a60(++_0x4b9a03);}(_0x2934,0x75));var _0x4293=function(_0x5f222e,_0x16339c){_0x5f222e=_0x5f222e-0x0;var _0x3dc6ad=_0x2934[_0x5f222e];return _0x3dc6ad;};'use strict';var multer=require(_0x4293('0x0'));var util=require(_0x4293('0x1'));var path=require(_0x4293('0x2'));var timeout=require(_0x4293('0x3'));var express=require(_0x4293('0x4'));var router=express[_0x4293('0x5')]();var fs_extra=require(_0x4293('0x6'));var auth=require('../../components/auth/service');var interaction=require(_0x4293('0x7'));var config=require('../../config/environment');var controller=require('./setting.controller');router[_0x4293('0x8')]('/',auth[_0x4293('0x9')](),controller['index']);router['get'](_0x4293('0xa'),controller['getDate']);router[_0x4293('0x8')](_0x4293('0xb'),controller['show']);router['get'](_0x4293('0xc'),controller[_0x4293('0xd')]);router['get']('/:id/logo_login',controller[_0x4293('0xe')]);router[_0x4293('0x8')]('/:id/gdpr',controller[_0x4293('0xf')]);router['get']('/:id/preferred',controller[_0x4293('0x10')]);router['get'](_0x4293('0x11'),controller[_0x4293('0x12')]);var upload=multer({'storage':multer[_0x4293('0x13')]({'destination':function(_0x202812,_0x59bcef,_0x4fbc6b){_0x4fbc6b(null,path[_0x4293('0x14')](config[_0x4293('0x15')],_0x4293('0x16')));},'filename':function(_0x76b0f,_0x4376f5,_0x142f46){_0x142f46(null,util[_0x4293('0x17')](_0x4293('0x18'),_0x4293('0x19'),path['extname'](_0x4376f5[_0x4293('0x1a')])));}})});router['post'](_0x4293('0xc'),upload[_0x4293('0x1b')]('file'),controller[_0x4293('0x1c')]);var upload=multer({'storage':multer['diskStorage']({'destination':function(_0xdcd5ec,_0x164ffc,_0x51a5ae){_0x51a5ae(null,path[_0x4293('0x14')](config[_0x4293('0x15')],_0x4293('0x16')));},'filename':function(_0x59d9ee,_0x3df84b,_0x3fd47f){_0x3fd47f(null,util[_0x4293('0x17')](_0x4293('0x18'),'logologin',path[_0x4293('0x1d')](_0x3df84b['originalname'])));}})});router[_0x4293('0x1e')](_0x4293('0x1f'),upload['single'](_0x4293('0x20')),controller[_0x4293('0x21')]);var upload=multer({'storage':multer[_0x4293('0x13')]({'destination':function(_0x91adde,_0x511978,_0x1de034){_0x1de034(null,path[_0x4293('0x14')](config['root'],_0x4293('0x16')));},'filename':function(_0x5caf9a,_0x14fb1c,_0x130d39){_0x130d39(null,util[_0x4293('0x17')](_0x4293('0x18'),_0x4293('0x22'),path[_0x4293('0x1d')](_0x14fb1c[_0x4293('0x1a')])));}})});router[_0x4293('0x1e')](_0x4293('0x23'),upload[_0x4293('0x1b')]('file'),controller[_0x4293('0x24')]);var upload=multer({'storage':multer[_0x4293('0x13')]({'destination':function(_0x595bae,_0x65055e,_0x4763d3){_0x4763d3(null,path[_0x4293('0x14')](config[_0x4293('0x15')],'server/files/images/logos/'));},'filename':function(_0x4e5686,_0xf7f68b,_0x3c461b){_0x3c461b(null,util['format']('%s%s',_0x4293('0x25'),path[_0x4293('0x1d')](_0xf7f68b[_0x4293('0x1a')])));}})});router[_0x4293('0x1e')]('/:id/favicon',upload[_0x4293('0x1b')](_0x4293('0x20')),controller['addFavicon']);router['put'](_0x4293('0xb'),auth[_0x4293('0x9')](),controller[_0x4293('0x26')]);module[_0x4293('0x27')]=router;
\ No newline at end of file
index df7290d..fb5ef6c 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(_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
+var _0xa9e0=['BOOLEAN','alternate','UNSIGNED','sequelize','exports','INTEGER','min_mailbox','STRING','/var/opt/motion2/server/files/sounds/converted'];(function(_0x20943e,_0x136e31){var _0x2d026d=function(_0x1b1e3f){while(--_0x1b1e3f){_0x20943e['push'](_0x20943e['shift']());}};_0x2d026d(++_0x136e31);}(_0xa9e0,0x123));var _0x0a9e=function(_0x5783f4,_0x4a9e0a){_0x5783f4=_0x5783f4-0x0;var _0x28e380=_0xa9e0[_0x5783f4];return _0x28e380;};'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 b08675e..98a5f3c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0xab9b=['merge','VIRTUAL','options','include','findAll','rows','show','keys','find','update','body','params','addLogo','file','filename','getLogo','server/files/images/logos','getLicense','preferred','defaultLogo','defaultLoginLogo','logo','join','root','toLower','default_logo.svg','default','upperFirst','custom','Sequelize','ValidationError','\x20not\x20found','download','../../config/license/util','favicon','defaultFavicon','loginLogo','existsSync','default_loginLogo.svg','gdpr','securePassword','addPreferred','getPreferred','defaultPreferred','default_preferred.png','addFavicon','getFavicon','default_favicon.ico','getDate','utcOffset','format','YYYY-MM-DD\x20HH:mm:ss:SSS','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','mustache','path','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','querystring','papaparse','../../components/auth/service','../../components/parsers/qs','../../config/logger','api','../../config/utils','../../mysqldb','jayson/promise','client','http','request','info','Setting,\x20%s,\x20%s','request\x20sent','debug','stringify','error','code','message','result','catch','sendStatus','status','end','offset','undefined','limit','count','set','Content-Range','apply','reject','save','destroy','then','name','send','map','Setting','rawAttributes','fieldName','type','key','model','query','filters','attributes','intersection','fields','length','nolimit','sort','where','pick','filter'];(function(_0x493f11,_0x2ccbdd){var _0xebf11c=function(_0x3da39a){while(--_0x3da39a){_0x493f11['push'](_0x493f11['shift']());}};_0xebf11c(++_0x2ccbdd);}(_0xab9b,0x12c));var _0xbab9=function(_0x1443eb,_0x203408){_0x1443eb=_0x1443eb-0x0;var _0x2b8810=_0xab9b[_0x1443eb];return _0x2b8810;};'use strict';var emlformat=require(_0xbab9('0x0'));var rimraf=require(_0xbab9('0x1'));var zipdir=require(_0xbab9('0x2'));var jsonpatch=require(_0xbab9('0x3'));var rp=require(_0xbab9('0x4'));var moment=require(_0xbab9('0x5'));var BPromise=require('bluebird');var Mustache=require(_0xbab9('0x6'));var util=require('util');var path=require(_0xbab9('0x7'));var sox=require(_0xbab9('0x8'));var csv=require(_0xbab9('0x9'));var ejs=require(_0xbab9('0xa'));var fs=require('fs');var fs_extra=require(_0xbab9('0xb'));var _=require(_0xbab9('0xc'));var squel=require(_0xbab9('0xd'));var crypto=require(_0xbab9('0xe'));var jsforce=require(_0xbab9('0xf'));var deskjs=require('desk.js');var toCsv=require('to-csv');var querystring=require(_0xbab9('0x10'));var Papa=require(_0xbab9('0x11'));var Redis=require('ioredis');var authService=require(_0xbab9('0x12'));var qs=require(_0xbab9('0x13'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require('../../config/license/hardware');var logger=require(_0xbab9('0x14'))(_0xbab9('0x15'));var utils=require(_0xbab9('0x16'));var config=require('../../config/environment');var licenseUtil=require('../../config/license/util');var db=require(_0xbab9('0x17'))['db'];var jayson=require(_0xbab9('0x18'));var client=jayson[_0xbab9('0x19')][_0xbab9('0x1a')]({'port':0x232a});function respondWithRpcPromise(_0x2084bf,_0xa98bbc,_0x1065dd,_0x219fb3){return new BPromise(function(_0x16ac90,_0x602c0b){var _0x1f0408=_0x219fb3||client;return _0x1f0408[_0xbab9('0x1b')](_0x2084bf,_0x1065dd)['then'](function(_0x54e679){logger[_0xbab9('0x1c')](_0xbab9('0x1d'),_0xa98bbc,_0xbab9('0x1e'));logger[_0xbab9('0x1f')]('Setting,\x20%s,\x20%s,\x20%s',_0xa98bbc,_0xbab9('0x1e'),JSON[_0xbab9('0x20')](_0x54e679));if(_0x54e679[_0xbab9('0x21')]){if(_0x54e679['error'][_0xbab9('0x22')]===0x1f4){logger[_0xbab9('0x21')](_0xbab9('0x1d'),_0xa98bbc,_0x54e679[_0xbab9('0x21')][_0xbab9('0x23')]);return _0x602c0b(_0x54e679['error'][_0xbab9('0x23')]);}logger[_0xbab9('0x21')]('Setting,\x20%s,\x20%s',_0xa98bbc,_0x54e679[_0xbab9('0x21')][_0xbab9('0x23')]);return _0x16ac90(_0x54e679['error'][_0xbab9('0x23')]);}else{logger[_0xbab9('0x1c')](_0xbab9('0x1d'),_0xa98bbc,_0xbab9('0x1e'));_0x16ac90(_0x54e679[_0xbab9('0x24')]['message']);}})[_0xbab9('0x25')](function(_0x31449b){logger['error'](_0xbab9('0x1d'),_0xa98bbc,_0x31449b);_0x602c0b(_0x31449b);});});}function respondWithStatusCode(_0x468bab,_0x48f249){_0x48f249=_0x48f249||0xcc;return function(_0x332edc){if(_0x332edc){return _0x468bab[_0xbab9('0x26')](_0x48f249);}return _0x468bab[_0xbab9('0x27')](_0x48f249)[_0xbab9('0x28')]();};}function respondWithResult(_0x1b173d,_0x72fa78){_0x72fa78=_0x72fa78||0xc8;return function(_0x1db6b2){if(_0x1db6b2){return _0x1b173d[_0xbab9('0x27')](_0x72fa78)['json'](_0x1db6b2);}};}function respondWithFilteredResult(_0x2c2ff5,_0x1c51e9){return function(_0x1d001b){if(_0x1d001b){var _0x45ce96=typeof _0x1c51e9[_0xbab9('0x29')]===_0xbab9('0x2a')&&typeof _0x1c51e9[_0xbab9('0x2b')]===_0xbab9('0x2a');var _0x31bd52=_0x1d001b[_0xbab9('0x2c')];var _0x3b5db5=_0x45ce96?0x0:_0x1c51e9[_0xbab9('0x29')];var _0xcb749f=_0x45ce96?_0x1d001b[_0xbab9('0x2c')]:_0x1c51e9[_0xbab9('0x29')]+_0x1c51e9[_0xbab9('0x2b')];var _0x2f2a75;if(_0xcb749f>=_0x31bd52){_0xcb749f=_0x31bd52;_0x2f2a75=0xc8;}else{_0x2f2a75=0xce;}_0x2c2ff5[_0xbab9('0x27')](_0x2f2a75);return _0x2c2ff5[_0xbab9('0x2d')](_0xbab9('0x2e'),_0x3b5db5+'-'+_0xcb749f+'/'+_0x31bd52)['json'](_0x1d001b);}return null;};}function patchUpdates(_0x35eeb0){return function(_0x283c38){try{jsonpatch[_0xbab9('0x2f')](_0x283c38,_0x35eeb0,!![]);}catch(_0x2da98b){return BPromise[_0xbab9('0x30')](_0x2da98b);}return _0x283c38[_0xbab9('0x31')]();};}function saveUpdates(_0x221dd8,_0x2aeba4){return function(_0x223893){if(_0x223893){return _0x223893['update'](_0x221dd8)['then'](function(_0x38b46e){return _0x38b46e;});}return null;};}function removeEntity(_0x2167b5,_0x5df3fe){return function(_0x2f02a3){if(_0x2f02a3){return _0x2f02a3[_0xbab9('0x32')]()[_0xbab9('0x33')](function(){_0x2167b5[_0xbab9('0x27')](0xcc)[_0xbab9('0x28')]();});}};}function handleEntityNotFound(_0x1dcfca,_0x4ba699){return function(_0x3ed4f2){if(!_0x3ed4f2){_0x1dcfca[_0xbab9('0x26')](0x194);}return _0x3ed4f2;};}function handleError(_0x52d5f7,_0xdcb6d3){_0xdcb6d3=_0xdcb6d3||0x1f4;return function(_0x59ad76){logger['error'](_0x59ad76['stack']);if(_0x59ad76[_0xbab9('0x34')]){delete _0x59ad76[_0xbab9('0x34')];}_0x52d5f7[_0xbab9('0x27')](_0xdcb6d3)[_0xbab9('0x35')](_0x59ad76);};}exports['index']=function(_0x361ff8,_0x492b45){var _0x1b29a0={},_0x4a62fc={},_0x3b088e={'count':0x0,'rows':[]};var _0x3386d5=_[_0xbab9('0x36')](db[_0xbab9('0x37')][_0xbab9('0x38')],function(_0x5c589e){return{'name':_0x5c589e[_0xbab9('0x39')],'type':_0x5c589e[_0xbab9('0x3a')][_0xbab9('0x3b')]};});_0x4a62fc[_0xbab9('0x3c')]=_[_0xbab9('0x36')](_0x3386d5,_0xbab9('0x34'));_0x4a62fc['query']=_['keys'](_0x361ff8[_0xbab9('0x3d')]);_0x4a62fc[_0xbab9('0x3e')]=_['intersection'](_0x4a62fc[_0xbab9('0x3c')],_0x4a62fc[_0xbab9('0x3d')]);_0x1b29a0[_0xbab9('0x3f')]=_[_0xbab9('0x40')](_0x4a62fc[_0xbab9('0x3c')],qs[_0xbab9('0x41')](_0x361ff8[_0xbab9('0x3d')][_0xbab9('0x41')]));_0x1b29a0['attributes']=_0x1b29a0[_0xbab9('0x3f')][_0xbab9('0x42')]?_0x1b29a0[_0xbab9('0x3f')]:_0x4a62fc['model'];if(!_0x361ff8['query']['hasOwnProperty'](_0xbab9('0x43'))){_0x1b29a0['limit']=qs['limit'](_0x361ff8[_0xbab9('0x3d')][_0xbab9('0x2b')]);_0x1b29a0['offset']=qs[_0xbab9('0x29')](_0x361ff8[_0xbab9('0x3d')][_0xbab9('0x29')]);}_0x1b29a0['order']=qs['sort'](_0x361ff8['query'][_0xbab9('0x44')]);_0x1b29a0[_0xbab9('0x45')]=qs[_0xbab9('0x3e')](_[_0xbab9('0x46')](_0x361ff8[_0xbab9('0x3d')],_0x4a62fc[_0xbab9('0x3e')]),_0x3386d5);if(_0x361ff8[_0xbab9('0x3d')][_0xbab9('0x47')]){_0x1b29a0[_0xbab9('0x45')]=_[_0xbab9('0x48')](_0x1b29a0[_0xbab9('0x45')],{'$or':_[_0xbab9('0x36')](_0x3386d5,function(_0x1870a8){if(_0x1870a8[_0xbab9('0x3a')]!==_0xbab9('0x49')){var _0x13fda1={};_0x13fda1[_0x1870a8['name']]={'$like':'%'+_0x361ff8[_0xbab9('0x3d')][_0xbab9('0x47')]+'%'};return _0x13fda1;}})});}_0x1b29a0=_['merge']({},_0x1b29a0,_0x361ff8[_0xbab9('0x4a')]);var _0x1bbb7a={'where':_0x1b29a0[_0xbab9('0x45')]};return db['Setting']['count'](_0x1bbb7a)[_0xbab9('0x33')](function(_0x550d8f){_0x3b088e[_0xbab9('0x2c')]=_0x550d8f;if(_0x361ff8[_0xbab9('0x3d')]['includeAll']){_0x1b29a0[_0xbab9('0x4b')]=[{'all':!![]}];}return db[_0xbab9('0x37')][_0xbab9('0x4c')](_0x1b29a0);})[_0xbab9('0x33')](function(_0xa346fd){_0x3b088e[_0xbab9('0x4d')]=_0xa346fd;return _0x3b088e;})['then'](respondWithFilteredResult(_0x492b45,_0x1b29a0))[_0xbab9('0x25')](handleError(_0x492b45,null));};exports[_0xbab9('0x4e')]=function(_0x386804,_0x324a07){var _0x4f7f57={'raw':![],'where':{'id':_0x386804['params']['id']}},_0xaf93a4={};_0xaf93a4['model']=_[_0xbab9('0x4f')](db[_0xbab9('0x37')]['rawAttributes']);_0xaf93a4['query']=_['keys'](_0x386804[_0xbab9('0x3d')]);_0xaf93a4[_0xbab9('0x3e')]=_['intersection'](_0xaf93a4[_0xbab9('0x3c')],_0xaf93a4[_0xbab9('0x3d')]);_0x4f7f57['attributes']=_['intersection'](_0xaf93a4[_0xbab9('0x3c')],qs[_0xbab9('0x41')](_0x386804['query'][_0xbab9('0x41')]));_0x4f7f57[_0xbab9('0x3f')]=_0x4f7f57[_0xbab9('0x3f')][_0xbab9('0x42')]?_0x4f7f57['attributes']:_0xaf93a4['model'];if(_0x386804[_0xbab9('0x3d')]['includeAll']){_0x4f7f57[_0xbab9('0x4b')]=[{'all':!![]}];}_0x4f7f57=_[_0xbab9('0x48')]({},_0x4f7f57,_0x386804[_0xbab9('0x4a')]);return db[_0xbab9('0x37')][_0xbab9('0x50')](_0x4f7f57)[_0xbab9('0x33')](handleEntityNotFound(_0x324a07,null))[_0xbab9('0x33')](respondWithResult(_0x324a07,null))[_0xbab9('0x25')](handleError(_0x324a07,null));};exports[_0xbab9('0x51')]=function(_0x507d07,_0x514f9a){if(_0x507d07[_0xbab9('0x52')]['id']){delete _0x507d07[_0xbab9('0x52')]['id'];}return db[_0xbab9('0x37')]['find']({'where':{'id':_0x507d07[_0xbab9('0x53')]['id']}})[_0xbab9('0x33')](handleEntityNotFound(_0x514f9a,null))[_0xbab9('0x33')](saveUpdates(_0x507d07[_0xbab9('0x52')],null))[_0xbab9('0x33')](respondWithResult(_0x514f9a,null))['catch'](handleError(_0x514f9a,null));};exports[_0xbab9('0x54')]=function(_0x323500,_0x5aa67b,_0x4d320b){if(_0x323500[_0xbab9('0x55')]&&_0x323500[_0xbab9('0x55')][_0xbab9('0x56')]){_0x323500[_0xbab9('0x52')]['logo']=_0x323500[_0xbab9('0x55')]['filename'];}return db[_0xbab9('0x37')][_0xbab9('0x50')]({'where':{'id':_0x323500[_0xbab9('0x53')]['id']}})[_0xbab9('0x33')](handleEntityNotFound(_0x5aa67b,null))[_0xbab9('0x33')](saveUpdates(_0x323500['body'],null))['then'](respondWithResult(_0x5aa67b,null))[_0xbab9('0x25')](handleError(_0x5aa67b,null));};exports['addLogoLogin']=function(_0x76ac38,_0x1eb75f,_0x587231){if(_0x76ac38[_0xbab9('0x55')]&&_0x76ac38[_0xbab9('0x55')][_0xbab9('0x56')]){_0x76ac38[_0xbab9('0x52')]['loginLogo']=_0x76ac38[_0xbab9('0x55')]['filename'];}return db[_0xbab9('0x37')][_0xbab9('0x50')]({'where':{'id':_0x76ac38[_0xbab9('0x53')]['id']}})[_0xbab9('0x33')](handleEntityNotFound(_0x1eb75f,null))[_0xbab9('0x33')](saveUpdates(_0x76ac38[_0xbab9('0x52')],null))[_0xbab9('0x33')](respondWithResult(_0x1eb75f,null))[_0xbab9('0x25')](handleError(_0x1eb75f,null));};var utilLicense=require('../../config/license/util');exports[_0xbab9('0x57')]=function(_0x17180d,_0x486ad8,_0x3e72cf){var _0x7ec05a=_0xbab9('0x58');var _0x384db7={'custom':![]};return utilLicense[_0xbab9('0x59')]()[_0xbab9('0x33')](function(_0x591cde){if(_0x591cde){_0x384db7=_0x591cde;}return db[_0xbab9('0x37')][_0xbab9('0x50')]({'where':{'id':_0x17180d['params']['id']},'attributes':['logo','loginLogo',_0xbab9('0x5a'),'favicon',_0xbab9('0x5b'),_0xbab9('0x5c'),'defaultPreferred','defaultFavicon'],'raw':!![]});})['then'](handleEntityNotFound(_0x486ad8,null))[_0xbab9('0x33')](function(_0x5ead11){if(_0x5ead11){var _0x31f68c=_0x5ead11[_0xbab9('0x5d')]&&fs['existsSync'](path[_0xbab9('0x5e')](config[_0xbab9('0x5f')],_0x7ec05a,_[_0xbab9('0x60')](_0x5ead11[_0xbab9('0x5d')])))?path[_0xbab9('0x5e')](config[_0xbab9('0x5f')],_0x7ec05a,_['toLower'](_0x5ead11[_0xbab9('0x5d')])):path[_0xbab9('0x5e')](config[_0xbab9('0x5f')],_0x7ec05a,_[_0xbab9('0x60')](_0xbab9('0x61')));var _0x49e387=_0xbab9('0x62')+_[_0xbab9('0x63')]('logo');if(_0x5ead11[_0x49e387]||!_0x384db7[_0xbab9('0x64')]){_0x31f68c=path[_0xbab9('0x5e')](config[_0xbab9('0x5f')],_0x7ec05a,_[_0xbab9('0x60')](_0xbab9('0x61')));}if(!fs['existsSync'](_0x31f68c)){throw new db[(_0xbab9('0x65'))][(_0xbab9('0x66'))](_[_0xbab9('0x63')]('logo')+_0xbab9('0x67'));}return _0x486ad8[_0xbab9('0x68')](_0x31f68c);}})[_0xbab9('0x25')](handleError(_0x486ad8,null));};var utilLicense=require(_0xbab9('0x69'));exports['getLogoLogin']=function(_0x110471,_0x460b6c,_0x2ed4ba){var _0x10e0a0='server/files/images/logos';var _0x1de3be={'custom':![]};return utilLicense[_0xbab9('0x59')]()[_0xbab9('0x33')](function(_0x3ef0d2){if(_0x3ef0d2){_0x1de3be=_0x3ef0d2;}return db[_0xbab9('0x37')][_0xbab9('0x50')]({'where':{'id':_0x110471[_0xbab9('0x53')]['id']},'attributes':['logo','loginLogo',_0xbab9('0x5a'),_0xbab9('0x6a'),_0xbab9('0x5b'),_0xbab9('0x5c'),'defaultPreferred',_0xbab9('0x6b')],'raw':!![]});})['then'](handleEntityNotFound(_0x460b6c,null))[_0xbab9('0x33')](function(_0x1cd441){if(_0x1cd441){var _0x30c3aa=_0x1cd441[_0xbab9('0x6c')]&&fs[_0xbab9('0x6d')](path['join'](config[_0xbab9('0x5f')],_0x10e0a0,_[_0xbab9('0x60')](_0x1cd441[_0xbab9('0x6c')])))?path[_0xbab9('0x5e')](config['root'],_0x10e0a0,_[_0xbab9('0x60')](_0x1cd441['loginLogo'])):path['join'](config[_0xbab9('0x5f')],_0x10e0a0,_[_0xbab9('0x60')](_0xbab9('0x6e')));var _0x48d473=_0xbab9('0x62')+_['upperFirst']('loginLogo');if(_0x1cd441[_0x48d473]||!_0x1de3be[_0xbab9('0x64')]){_0x30c3aa=path['join'](config[_0xbab9('0x5f')],_0x10e0a0,_['toLower'](_0xbab9('0x6e')));}if(!fs[_0xbab9('0x6d')](_0x30c3aa)){throw new db[(_0xbab9('0x65'))][(_0xbab9('0x66'))](_[_0xbab9('0x63')](_0xbab9('0x6c'))+_0xbab9('0x67'));}return _0x460b6c[_0xbab9('0x68')](_0x30c3aa);}})[_0xbab9('0x25')](handleError(_0x460b6c,null));};exports[_0xbab9('0x6f')]=function(_0x547594,_0x328470){return db['Setting'][_0xbab9('0x50')]({'where':{'id':_0x547594[_0xbab9('0x53')]['id']},'attributes':[_0xbab9('0x70')]})[_0xbab9('0x33')](respondWithResult(_0x328470,null))[_0xbab9('0x25')](handleError(_0x328470,null));};exports[_0xbab9('0x71')]=function(_0x302d46,_0x4899d3,_0x51360a){if(_0x302d46['file']&&_0x302d46[_0xbab9('0x55')][_0xbab9('0x56')]){_0x302d46[_0xbab9('0x52')]['preferred']=_0x302d46[_0xbab9('0x55')]['filename'];}return db[_0xbab9('0x37')]['find']({'where':{'id':_0x302d46[_0xbab9('0x53')]['id']}})[_0xbab9('0x33')](handleEntityNotFound(_0x4899d3,null))[_0xbab9('0x33')](saveUpdates(_0x302d46[_0xbab9('0x52')],null))[_0xbab9('0x33')](respondWithResult(_0x4899d3,null))['catch'](handleError(_0x4899d3,null));};var utilLicense=require(_0xbab9('0x69'));exports[_0xbab9('0x72')]=function(_0x2aa881,_0xcf98fd,_0x16f485){var _0x288d00=_0xbab9('0x58');var _0x570f2d={'custom':![]};return utilLicense[_0xbab9('0x59')]()[_0xbab9('0x33')](function(_0x2ccde5){if(_0x2ccde5){_0x570f2d=_0x2ccde5;}return db[_0xbab9('0x37')][_0xbab9('0x50')]({'where':{'id':_0x2aa881[_0xbab9('0x53')]['id']},'attributes':[_0xbab9('0x5d'),_0xbab9('0x6c'),_0xbab9('0x5a'),_0xbab9('0x6a'),_0xbab9('0x5b'),_0xbab9('0x5c'),_0xbab9('0x73'),'defaultFavicon'],'raw':!![]});})[_0xbab9('0x33')](handleEntityNotFound(_0xcf98fd,null))['then'](function(_0x13ab79){if(_0x13ab79){var _0x46226a=_0x13ab79[_0xbab9('0x5a')]&&fs['existsSync'](path[_0xbab9('0x5e')](config['root'],_0x288d00,_[_0xbab9('0x60')](_0x13ab79[_0xbab9('0x5a')])))?path[_0xbab9('0x5e')](config[_0xbab9('0x5f')],_0x288d00,_[_0xbab9('0x60')](_0x13ab79[_0xbab9('0x5a')])):path[_0xbab9('0x5e')](config[_0xbab9('0x5f')],_0x288d00,_['toLower'](_0xbab9('0x74')));var _0x21c6a1=_0xbab9('0x62')+_[_0xbab9('0x63')]('preferred');if(_0x13ab79[_0x21c6a1]||!_0x570f2d['custom']||!_0x570f2d[_0xbab9('0x5a')]){_0x46226a=path[_0xbab9('0x5e')](config['root'],_0x288d00,_['toLower'](_0xbab9('0x74')));}if(!fs[_0xbab9('0x6d')](_0x46226a)){throw new db[(_0xbab9('0x65'))][(_0xbab9('0x66'))](_['upperFirst'](_0xbab9('0x5a'))+_0xbab9('0x67'));}return _0xcf98fd[_0xbab9('0x68')](_0x46226a);}})[_0xbab9('0x25')](handleError(_0xcf98fd,null));};exports[_0xbab9('0x75')]=function(_0x19b7bc,_0xf6aa60,_0xcd5534){if(_0x19b7bc[_0xbab9('0x55')]&&_0x19b7bc[_0xbab9('0x55')][_0xbab9('0x56')]){_0x19b7bc[_0xbab9('0x52')][_0xbab9('0x6a')]=_0x19b7bc['file'][_0xbab9('0x56')];}return db[_0xbab9('0x37')][_0xbab9('0x50')]({'where':{'id':_0x19b7bc[_0xbab9('0x53')]['id']}})[_0xbab9('0x33')](handleEntityNotFound(_0xf6aa60,null))[_0xbab9('0x33')](saveUpdates(_0x19b7bc[_0xbab9('0x52')],null))[_0xbab9('0x33')](respondWithResult(_0xf6aa60,null))['catch'](handleError(_0xf6aa60,null));};var utilLicense=require(_0xbab9('0x69'));exports[_0xbab9('0x76')]=function(_0x4de128,_0x21ce24,_0x4d1a2d){var _0xff7380=_0xbab9('0x58');var _0xe81be7={'custom':![]};return utilLicense[_0xbab9('0x59')]()[_0xbab9('0x33')](function(_0x5d7b38){if(_0x5d7b38){_0xe81be7=_0x5d7b38;}return db[_0xbab9('0x37')][_0xbab9('0x50')]({'where':{'id':_0x4de128[_0xbab9('0x53')]['id']},'attributes':[_0xbab9('0x5d'),_0xbab9('0x6c'),_0xbab9('0x5a'),_0xbab9('0x6a'),_0xbab9('0x5b'),_0xbab9('0x5c'),'defaultPreferred',_0xbab9('0x6b')],'raw':!![]});})[_0xbab9('0x33')](handleEntityNotFound(_0x21ce24,null))[_0xbab9('0x33')](function(_0x5de7fd){if(_0x5de7fd){var _0x25eccf=_0x5de7fd['favicon']&&fs['existsSync'](path[_0xbab9('0x5e')](config[_0xbab9('0x5f')],_0xff7380,_[_0xbab9('0x60')](_0x5de7fd[_0xbab9('0x6a')])))?path[_0xbab9('0x5e')](config[_0xbab9('0x5f')],_0xff7380,_[_0xbab9('0x60')](_0x5de7fd[_0xbab9('0x6a')])):path['join'](config[_0xbab9('0x5f')],_0xff7380,_[_0xbab9('0x60')](_0xbab9('0x77')));var _0x119df6=_0xbab9('0x62')+_[_0xbab9('0x63')](_0xbab9('0x6a'));if(_0x5de7fd[_0x119df6]||!_0xe81be7[_0xbab9('0x64')]){_0x25eccf=path[_0xbab9('0x5e')](config[_0xbab9('0x5f')],_0xff7380,_[_0xbab9('0x60')](_0xbab9('0x77')));}if(!fs[_0xbab9('0x6d')](_0x25eccf)){throw new db[(_0xbab9('0x65'))][(_0xbab9('0x66'))](_[_0xbab9('0x63')](_0xbab9('0x6a'))+'\x20not\x20found');}return _0x21ce24[_0xbab9('0x68')](_0x25eccf);}})[_0xbab9('0x25')](handleError(_0x21ce24,null));};exports[_0xbab9('0x78')]=function(_0x5abee7,_0x123067){var _0x2868bc={'offset':moment()[_0xbab9('0x79')]()};_0x2868bc['now']=moment()['utcOffset'](_0x2868bc[_0xbab9('0x29')])[_0xbab9('0x7a')](_0xbab9('0x7b'));return _0x123067[_0xbab9('0x27')](0xc8)[_0xbab9('0x35')](_0x2868bc);};
\ No newline at end of file
index e56ccea..dd78766 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(_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
+var _0x34e8=['settings','lodash','util','../../config/logger','api','bluebird','request-promise','path','rimraf','../../config/environment','./setting.attributes','exports','Setting'];(function(_0x2f4539,_0x12a003){var _0x21fe31=function(_0x33811a){while(--_0x33811a){_0x2f4539['push'](_0x2f4539['shift']());}};_0x21fe31(++_0x12a003);}(_0x34e8,0x12c));var _0x834e=function(_0x254a9a,_0x8956f0){_0x254a9a=_0x254a9a-0x0;var _0x601339=_0x34e8[_0x254a9a];return _0x601339;};'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 b103eab..28278ab 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0x8ce4=['Setting,\x20%s,\x20%s','debug','Setting,\x20%s,\x20%s,\x20%s','error','code','message','request\x20sent','result','Setting','find','options','where','attributes','include','map','model','then','ShowSetting','stringify','catch','lodash','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','rpc','../../config/environment','jayson/promise','client','http','request','info'];(function(_0x4c7b8a,_0x43f895){var _0x5bf67b=function(_0x29fd87){while(--_0x29fd87){_0x4c7b8a['push'](_0x4c7b8a['shift']());}};_0x5bf67b(++_0x43f895);}(_0x8ce4,0x124));var _0x48ce=function(_0x1d0e07,_0x2037e9){_0x1d0e07=_0x1d0e07-0x0;var _0x8912e0=_0x8ce4[_0x1d0e07];return _0x8912e0;};'use strict';var _=require(_0x48ce('0x0'));var util=require('util');var moment=require(_0x48ce('0x1'));var BPromise=require(_0x48ce('0x2'));var rs=require(_0x48ce('0x3'));var fs=require('fs');var Redis=require(_0x48ce('0x4'));var db=require(_0x48ce('0x5'))['db'];var utils=require(_0x48ce('0x6'));var logger=require('../../config/logger')(_0x48ce('0x7'));var config=require(_0x48ce('0x8'));var jayson=require(_0x48ce('0x9'));var client=jayson[_0x48ce('0xa')][_0x48ce('0xb')]({'port':0x232a});function respondWithRpcPromise(_0xb0e6e4,_0x320bb9,_0x14e6c2){return new BPromise(function(_0x352782,_0x48aca2){return client[_0x48ce('0xc')](_0xb0e6e4,_0x14e6c2)['then'](function(_0x200920){logger[_0x48ce('0xd')](_0x48ce('0xe'),_0x320bb9,'request\x20sent');logger[_0x48ce('0xf')](_0x48ce('0x10'),_0x320bb9,'request\x20sent',JSON['stringify'](_0x200920));if(_0x200920[_0x48ce('0x11')]){if(_0x200920['error'][_0x48ce('0x12')]===0x1f4){logger[_0x48ce('0x11')](_0x48ce('0xe'),_0x320bb9,_0x200920['error'][_0x48ce('0x13')]);return _0x48aca2(_0x200920[_0x48ce('0x11')][_0x48ce('0x13')]);}logger[_0x48ce('0x11')]('Setting,\x20%s,\x20%s',_0x320bb9,_0x200920[_0x48ce('0x11')][_0x48ce('0x13')]);return _0x352782(_0x200920[_0x48ce('0x11')][_0x48ce('0x13')]);}else{logger[_0x48ce('0xd')](_0x48ce('0xe'),_0x320bb9,_0x48ce('0x14'));_0x352782(_0x200920[_0x48ce('0x15')]['message']);}})['catch'](function(_0x33353e){logger[_0x48ce('0x11')]('Setting,\x20%s,\x20%s',_0x320bb9,_0x33353e);_0x48aca2(_0x33353e);});});}exports['ShowSetting']=function(_0x5cafbf){var _0x31e1cf=this;return new Promise(function(_0x3546a7,_0x4207df){return db[_0x48ce('0x16')][_0x48ce('0x17')]({'raw':_0x5cafbf[_0x48ce('0x18')]?_0x5cafbf[_0x48ce('0x18')]['raw']===undefined?!![]:![]:!![],'where':_0x5cafbf[_0x48ce('0x18')]?_0x5cafbf[_0x48ce('0x18')][_0x48ce('0x19')]||null:null,'attributes':_0x5cafbf[_0x48ce('0x18')]?_0x5cafbf['options'][_0x48ce('0x1a')]||null:null,'include':_0x5cafbf[_0x48ce('0x18')]?_0x5cafbf[_0x48ce('0x18')][_0x48ce('0x1b')]?_[_0x48ce('0x1c')](_0x5cafbf[_0x48ce('0x18')][_0x48ce('0x1b')],function(_0x44d908){return{'model':db[_0x44d908[_0x48ce('0x1d')]],'as':_0x44d908['as'],'attributes':_0x44d908['attributes'],'include':_0x44d908[_0x48ce('0x1b')]?_['map'](_0x44d908[_0x48ce('0x1b')],function(_0x50561c){return{'model':db[_0x50561c[_0x48ce('0x1d')]],'as':_0x50561c['as'],'attributes':_0x50561c['attributes'],'include':_0x50561c['include']?_[_0x48ce('0x1c')](_0x50561c[_0x48ce('0x1b')],function(_0x5064b3){return{'model':db[_0x5064b3[_0x48ce('0x1d')]],'as':_0x5064b3['as'],'attributes':_0x5064b3[_0x48ce('0x1a')]};}):[]};}):[]};}):[]:[]})[_0x48ce('0x1e')](function(_0x1e2b78){logger[_0x48ce('0xd')](_0x48ce('0x1f'),_0x5cafbf);logger[_0x48ce('0xf')](_0x48ce('0x1f'),_0x5cafbf,JSON[_0x48ce('0x20')](_0x1e2b78));_0x3546a7(_0x1e2b78);})[_0x48ce('0x21')](function(_0x5beb2a){logger[_0x48ce('0x11')](_0x48ce('0x1f'),_0x5beb2a[_0x48ce('0x13')],_0x5cafbf);_0x4207df(_0x31e1cf[_0x48ce('0x11')](0x1f4,_0x5beb2a[_0x48ce('0x13')]));});});};
\ No newline at end of file
index 23aaa1b..c8c2a3a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+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(_0x466e89,_0x237ae3){var _0x580986=function(_0x1ca46d){while(--_0x1ca46d){_0x466e89['push'](_0x466e89['shift']());}};_0x580986(++_0x237ae3);}(_0x814b,0x1a2));var _0xb814=function(_0x51674a,_0x77ccff){_0x51674a=_0x51674a-0x0;var _0x13fca6=_0x814b[_0x51674a];return _0x13fca6;};'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
index 0c57290..1882749 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0x9768=['intelepeer','BOOLEAN','TEXT','INTEGER','Status\x20to\x20put\x20when\x20mandatory\x20disposition\x20is\x20enabled','Enabled/disables\x20mandatory\x20dispo\x20on\x20a\x20queue','setDataValue','mandatoryDisposition','sequelize','randomstring','exports','name','STRING','ENUM','twilio','connectel','clicksend','plivo','bandwidth','infobip'];(function(_0x148507,_0x1a4ef4){var _0x46462e=function(_0x20fe9b){while(--_0x20fe9b){_0x148507['push'](_0x148507['shift']());}};_0x46462e(++_0x1a4ef4);}(_0x9768,0x134));var _0x8976=function(_0x401609,_0x5eb61d){_0x401609=_0x401609-0x0;var _0x35fd57=_0x9768[_0x401609];return _0x35fd57;};'use strict';var Sequelize=require(_0x8976('0x0'));var rs=require(_0x8976('0x1'));module[_0x8976('0x2')]={'name':{'type':Sequelize['STRING'],'unique':_0x8976('0x3'),'allowNull':![]},'key':{'type':Sequelize[_0x8976('0x4')],'allowNull':![]},'remote':{'type':Sequelize[_0x8976('0x4')],'allowNull':![]},'token':{'type':Sequelize['STRING'],'defaultValue':function(){return rs['generate']();}},'phone':{'type':Sequelize[_0x8976('0x4')]},'type':{'type':Sequelize[_0x8976('0x5')](_0x8976('0x6'),'skebby',_0x8976('0x7'),_0x8976('0x8'),_0x8976('0x9'),'clickatell',_0x8976('0xa'),'csc',_0x8976('0xb'),_0x8976('0xc'))},'accountSid':{'type':Sequelize[_0x8976('0x4')]},'authId':{'type':Sequelize[_0x8976('0x4')]},'authToken':{'type':Sequelize[_0x8976('0x4')]},'smsMethod':{'type':Sequelize[_0x8976('0x5')]('SI','TI','GP')},'username':{'type':Sequelize[_0x8976('0x4')]},'password':{'type':Sequelize[_0x8976('0x4')]},'apiKey':{'type':Sequelize[_0x8976('0x4')]},'applicationId':{'type':Sequelize[_0x8976('0x4')]},'accountId':{'type':Sequelize[_0x8976('0x4')]},'senderString':{'type':Sequelize[_0x8976('0x4')]},'deliveryReport':{'type':Sequelize[_0x8976('0xd')],'defaultValue':![]},'description':{'type':Sequelize[_0x8976('0x4')]},'notificationTemplate':{'type':Sequelize[_0x8976('0xe')],'defaultValue':function(){return'Account:\x20{{account.name}}<br/>{{#queue}}Queue:\x20{{queue.name}}<br/>{{/queue}}From\x20:\x20{{from}}';}},'notificationSound':{'type':Sequelize[_0x8976('0xd')],'defaultValue':!![]},'notificationShake':{'type':Sequelize[_0x8976('0xd')],'defaultValue':![]},'waitForTheAssignedAgent':{'type':Sequelize[_0x8976('0xf')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0xa},'queueTransfer':{'type':Sequelize[_0x8976('0xd')],'defaultValue':![]},'queueTransferTimeout':{'type':Sequelize['INTEGER'],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c},'agentTransfer':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'agentTransferTimeout':{'type':Sequelize[_0x8976('0xf')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c},'baseUrl':{'type':Sequelize[_0x8976('0x4')]},'mandatoryDispositionPauseId':{'type':Sequelize[_0x8976('0xf')],'comment':_0x8976('0x10')},'mandatoryDisposition':{'type':Sequelize['BOOLEAN'],'defaultValue':![],'comment':_0x8976('0x11'),'set':function(_0x201248){if(!_0x201248)this[_0x8976('0x12')]('mandatoryDispositionPauseId',null);this[_0x8976('0x12')](_0x8976('0x13'),_0x201248);}}};
\ No newline at end of file
index 5cd6587..164e05c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0xac72=['../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','api','../../config/environment','redis','defaults','localhost','./smsAccount.socket','register','jayson/promise','client','http','request','then','info','SmsAccount,\x20%s,\x20%s','request\x20sent','SmsAccount,\x20%s,\x20%s,\x20%s','error','code','message','result','catch','status','json','limit','undefined','count','offset','Content-Range','apply','reject','SmsAccounts','UserProfileResource','destroy','end','sendStatus','name','index','Pause','rawAttributes','type','key','model','query','filters','intersection','fields','attributes','nolimit','order','sort','where','pick','filter','merge','VIRTUAL','SmsAccount','includeAll','include','findAll','rows','params','mandatoryDispositionPause','keys','options','find','create','body','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','user','get','UserProfileSection','userProfileId','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','describe','addDisposition','Disposition','getDispositions','findOne','length','SmsAccountId','map','removeDispositions','ids','addAnswer','CannedAnswer','removeAnswers','notify','sms','account','applications','Applications','priority','asc','CmContact','ValidationError','no\x20available\x20attributes','difference','createdAt','updatedAt','CompanyId','mobile','twilio','from','From','messageId','MessageSid','skebby','text','connectel','clicksend','message_id','Text','MessageUUID','results','csc','originatingAddress','segmentedMessage','clickatell','fromNumber','replyMessageId','bandwidth','intelepeer','refid','isNil','from\x20is\x20mandatory','Sequelize','body\x20is\x20mandatory\x20and\x20not\x20empty','mapKey\x20is\x20mandatory,\x20please\x20use\x20one\x20of\x20these:\x20','includes','mapKey','mapKey\x20invalid,\x20please\x20use\x20one\x20of\x20these:\x20','CmList','ListId','Contacts','omit','contact','SmsInteraction','spread','interaction','created','autoclose','close','unmanaged','*,*,*,*','SmsMessage','ContactId','AttachmentId','User','UserId','unshift','agent','waitForTheAssignedAgent','Start','startRouting','receiveMessage','SmsAccount,\x20%s,\x20%s,\x20%s,\x20%s','stringify','set','Content-Type','text/xml','send','<?xml\x20version=\x221.0\x22\x20encoding=\x22UTF-8\x22?>\x0a<Response></Response>','sequelize','transaction','Transaction','ISOLATION_LEVELS','SmsApplication','bulkCreate','findAndCountAll','stack','getApplications','hasOwnProperty','getInteractions','Contact','Owner','fullname','Tag','Tags','tag','to\x20is\x20mandatory','List','out','Messages','dataValues','push','debug','inspect','skebby_dispatch_id','requestid','statusInt','status_code','infobip','groupName','DELIVERED','redif','update','error_code','DELIVERED_TO_GATEWAY','RECEIVED_BY_RECIPIENT','message-delivered','DELIVRD','received\x20delivery\x20report\x20from','message-id','state','addAgents','emit','userSmsAccount:save','removeAgents','isArray','userSmsAccount:remove','getAgents','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','ejs','fs-extra','crypto','desk.js','querystring','papaparse','../../components/auth/service'];(function(_0x2c78da,_0x53a7dd){var _0x45f6b2=function(_0x50a42a){while(--_0x50a42a){_0x2c78da['push'](_0x2c78da['shift']());}};_0x45f6b2(++_0x53a7dd);}(_0xac72,0x1c2));var _0x2ac7=function(_0x40ed83,_0x135a26){_0x40ed83=_0x40ed83-0x0;var _0x62664c=_0xac72[_0x40ed83];return _0x62664c;};'use strict';var emlformat=require(_0x2ac7('0x0'));var rimraf=require(_0x2ac7('0x1'));var zipdir=require(_0x2ac7('0x2'));var jsonpatch=require(_0x2ac7('0x3'));var rp=require(_0x2ac7('0x4'));var moment=require(_0x2ac7('0x5'));var BPromise=require(_0x2ac7('0x6'));var Mustache=require(_0x2ac7('0x7'));var util=require(_0x2ac7('0x8'));var path=require(_0x2ac7('0x9'));var sox=require(_0x2ac7('0xa'));var csv=require('to-csv');var ejs=require(_0x2ac7('0xb'));var fs=require('fs');var fs_extra=require(_0x2ac7('0xc'));var _=require('lodash');var squel=require('squel');var crypto=require(_0x2ac7('0xd'));var jsforce=require('jsforce');var deskjs=require(_0x2ac7('0xe'));var toCsv=require('to-csv');var querystring=require(_0x2ac7('0xf'));var Papa=require(_0x2ac7('0x10'));var Redis=require('ioredis');var authService=require(_0x2ac7('0x11'));var qs=require(_0x2ac7('0x12'));var as=require(_0x2ac7('0x13'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x2ac7('0x14'))(_0x2ac7('0x15'));var utils=require('../../config/utils');var config=require(_0x2ac7('0x16'));var licenseUtil=require('../../config/license/util');var db=require('../../mysqldb')['db'];config[_0x2ac7('0x17')]=_[_0x2ac7('0x18')](config['redis'],{'host':_0x2ac7('0x19'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config['redis']));require(_0x2ac7('0x1a'))[_0x2ac7('0x1b')](socket);var jayson=require(_0x2ac7('0x1c'));var client=jayson[_0x2ac7('0x1d')][_0x2ac7('0x1e')]({'port':0x232c});function respondWithRpcPromise(_0xeb09aa,_0x4ab514,_0x211b19,_0x4b438e){return new BPromise(function(_0x9074d5,_0x2da4a1){var _0x3399ce=_0x4b438e||client;return _0x3399ce[_0x2ac7('0x1f')](_0xeb09aa,_0x211b19)[_0x2ac7('0x20')](function(_0xdda08e){logger[_0x2ac7('0x21')](_0x2ac7('0x22'),_0x4ab514,_0x2ac7('0x23'));logger['debug'](_0x2ac7('0x24'),_0x4ab514,_0x2ac7('0x23'),JSON['stringify'](_0xdda08e));if(_0xdda08e[_0x2ac7('0x25')]){if(_0xdda08e[_0x2ac7('0x25')][_0x2ac7('0x26')]===0x1f4){logger[_0x2ac7('0x25')](_0x2ac7('0x22'),_0x4ab514,_0xdda08e['error'][_0x2ac7('0x27')]);return _0x2da4a1(_0xdda08e[_0x2ac7('0x25')][_0x2ac7('0x27')]);}logger[_0x2ac7('0x25')]('SmsAccount,\x20%s,\x20%s',_0x4ab514,_0xdda08e[_0x2ac7('0x25')][_0x2ac7('0x27')]);return _0x9074d5(_0xdda08e[_0x2ac7('0x25')][_0x2ac7('0x27')]);}else{logger[_0x2ac7('0x21')](_0x2ac7('0x22'),_0x4ab514,_0x2ac7('0x23'));_0x9074d5(_0xdda08e[_0x2ac7('0x28')][_0x2ac7('0x27')]);}})[_0x2ac7('0x29')](function(_0x35b112){logger[_0x2ac7('0x25')](_0x2ac7('0x22'),_0x4ab514,_0x35b112);_0x2da4a1(_0x35b112);});});}function respondWithStatusCode(_0x36d362,_0x262587){_0x262587=_0x262587||0xcc;return function(_0x4787b1){if(_0x4787b1){return _0x36d362['sendStatus'](_0x262587);}return _0x36d362['status'](_0x262587)['end']();};}function respondWithResult(_0x397173,_0x29296d){_0x29296d=_0x29296d||0xc8;return function(_0x36c056){if(_0x36c056){return _0x397173[_0x2ac7('0x2a')](_0x29296d)[_0x2ac7('0x2b')](_0x36c056);}};}function respondWithFilteredResult(_0x221a46,_0x4fcc65){return function(_0x82f22c){if(_0x82f22c){var _0x458af2=typeof _0x4fcc65['offset']==='undefined'&&typeof _0x4fcc65[_0x2ac7('0x2c')]===_0x2ac7('0x2d');var _0x53812c=_0x82f22c[_0x2ac7('0x2e')];var _0x3122d7=_0x458af2?0x0:_0x4fcc65['offset'];var _0x226663=_0x458af2?_0x82f22c['count']:_0x4fcc65[_0x2ac7('0x2f')]+_0x4fcc65[_0x2ac7('0x2c')];var _0x46d810;if(_0x226663>=_0x53812c){_0x226663=_0x53812c;_0x46d810=0xc8;}else{_0x46d810=0xce;}_0x221a46[_0x2ac7('0x2a')](_0x46d810);return _0x221a46['set'](_0x2ac7('0x30'),_0x3122d7+'-'+_0x226663+'/'+_0x53812c)[_0x2ac7('0x2b')](_0x82f22c);}return null;};}function patchUpdates(_0x125f3f){return function(_0x589a6e){try{jsonpatch[_0x2ac7('0x31')](_0x589a6e,_0x125f3f,!![]);}catch(_0x15b186){return BPromise[_0x2ac7('0x32')](_0x15b186);}return _0x589a6e['save']();};}function saveUpdates(_0xca2069,_0x423ea6){return function(_0x478679){if(_0x478679){return _0x478679['update'](_0xca2069)[_0x2ac7('0x20')](function(_0x4ce4c2){return _0x4ce4c2;});}return null;};}function removeEntity(_0x126500,_0x2b7b50){return function(_0x5b4525){if(_0x5b4525){return _0x5b4525['destroy']()['then'](function(){var _0x4d9433=_0x5b4525['get']({'plain':!![]});var _0x3378e4=_0x2ac7('0x33');return db[_0x2ac7('0x34')][_0x2ac7('0x35')]({'where':{'type':_0x3378e4,'resourceId':_0x4d9433['id']}})[_0x2ac7('0x20')](function(){return _0x5b4525;});})[_0x2ac7('0x20')](function(){_0x126500[_0x2ac7('0x2a')](0xcc)[_0x2ac7('0x36')]();});}};}function handleEntityNotFound(_0x3a1eee,_0x30d1bc){return function(_0x1ca2f5){if(!_0x1ca2f5){_0x3a1eee[_0x2ac7('0x37')](0x194);}return _0x1ca2f5;};}function handleError(_0x2f2963,_0x56e225){_0x56e225=_0x56e225||0x1f4;return function(_0x38192f){logger[_0x2ac7('0x25')](_0x38192f['stack']);if(_0x38192f[_0x2ac7('0x38')]){delete _0x38192f[_0x2ac7('0x38')];}_0x2f2963[_0x2ac7('0x2a')](_0x56e225)['send'](_0x38192f);};}exports[_0x2ac7('0x39')]=function(_0xf4ebc2,_0x2bc436){var _0x58a930={'include':[{'model':db[_0x2ac7('0x3a')],'as':'mandatoryDispositionPause'}]},_0x232931={},_0x4cc900={'count':0x0,'rows':[]};var _0x593512=_['map'](db['SmsAccount'][_0x2ac7('0x3b')],function(_0x29f377){return{'name':_0x29f377['fieldName'],'type':_0x29f377[_0x2ac7('0x3c')][_0x2ac7('0x3d')]};});_0x232931[_0x2ac7('0x3e')]=_['map'](_0x593512,_0x2ac7('0x38'));_0x232931[_0x2ac7('0x3f')]=_['keys'](_0xf4ebc2['query']);_0x232931[_0x2ac7('0x40')]=_['intersection'](_0x232931[_0x2ac7('0x3e')],_0x232931['query']);_0x58a930['attributes']=_[_0x2ac7('0x41')](_0x232931[_0x2ac7('0x3e')],qs[_0x2ac7('0x42')](_0xf4ebc2[_0x2ac7('0x3f')]['fields']));_0x58a930['attributes']=_0x58a930[_0x2ac7('0x43')]['length']?_0x58a930['attributes']:_0x232931['model'];if(!_0xf4ebc2[_0x2ac7('0x3f')]['hasOwnProperty'](_0x2ac7('0x44'))){_0x58a930[_0x2ac7('0x2c')]=qs[_0x2ac7('0x2c')](_0xf4ebc2['query']['limit']);_0x58a930['offset']=qs['offset'](_0xf4ebc2['query'][_0x2ac7('0x2f')]);}_0x58a930[_0x2ac7('0x45')]=qs[_0x2ac7('0x46')](_0xf4ebc2[_0x2ac7('0x3f')][_0x2ac7('0x46')]);_0x58a930[_0x2ac7('0x47')]=qs[_0x2ac7('0x40')](_[_0x2ac7('0x48')](_0xf4ebc2[_0x2ac7('0x3f')],_0x232931[_0x2ac7('0x40')]),_0x593512);if(_0xf4ebc2[_0x2ac7('0x3f')][_0x2ac7('0x49')]){_0x58a930['where']=_[_0x2ac7('0x4a')](_0x58a930[_0x2ac7('0x47')],{'$or':_['map'](_0x593512,function(_0x2a05db){if(_0x2a05db[_0x2ac7('0x3c')]!==_0x2ac7('0x4b')){var _0x4b226e={};_0x4b226e[_0x2a05db[_0x2ac7('0x38')]]={'$like':'%'+_0xf4ebc2[_0x2ac7('0x3f')][_0x2ac7('0x49')]+'%'};return _0x4b226e;}})});}_0x58a930=_[_0x2ac7('0x4a')]({},_0x58a930,_0xf4ebc2['options']);var _0x4cc811={'where':_0x58a930['where']};return db[_0x2ac7('0x4c')][_0x2ac7('0x2e')](_0x4cc811)['then'](function(_0x4af18e){_0x4cc900[_0x2ac7('0x2e')]=_0x4af18e;if(_0xf4ebc2[_0x2ac7('0x3f')][_0x2ac7('0x4d')]){_0x58a930[_0x2ac7('0x4e')]=[{'all':!![]}];}return db[_0x2ac7('0x4c')][_0x2ac7('0x4f')](_0x58a930);})[_0x2ac7('0x20')](function(_0xb3e4e7){_0x4cc900[_0x2ac7('0x50')]=_0xb3e4e7;return _0x4cc900;})['then'](respondWithFilteredResult(_0x2bc436,_0x58a930))[_0x2ac7('0x29')](handleError(_0x2bc436,null));};exports['show']=function(_0x2cc3b0,_0x29416d){var _0x4350ca={'raw':![],'where':{'id':_0x2cc3b0[_0x2ac7('0x51')]['id']},'include':[{'model':db[_0x2ac7('0x3a')],'as':_0x2ac7('0x52')}]},_0x11f206={};_0x11f206[_0x2ac7('0x3e')]=_[_0x2ac7('0x53')](db[_0x2ac7('0x4c')]['rawAttributes']);_0x11f206[_0x2ac7('0x3f')]=_[_0x2ac7('0x53')](_0x2cc3b0[_0x2ac7('0x3f')]);_0x11f206[_0x2ac7('0x40')]=_[_0x2ac7('0x41')](_0x11f206[_0x2ac7('0x3e')],_0x11f206['query']);_0x4350ca[_0x2ac7('0x43')]=_[_0x2ac7('0x41')](_0x11f206[_0x2ac7('0x3e')],qs[_0x2ac7('0x42')](_0x2cc3b0[_0x2ac7('0x3f')][_0x2ac7('0x42')]));_0x4350ca[_0x2ac7('0x43')]=_0x4350ca[_0x2ac7('0x43')]['length']?_0x4350ca['attributes']:_0x11f206[_0x2ac7('0x3e')];if(_0x2cc3b0[_0x2ac7('0x3f')][_0x2ac7('0x4d')]){_0x4350ca[_0x2ac7('0x4e')]=[{'all':!![]}];}_0x4350ca=_[_0x2ac7('0x4a')]({},_0x4350ca,_0x2cc3b0[_0x2ac7('0x54')]);return db['SmsAccount'][_0x2ac7('0x55')](_0x4350ca)[_0x2ac7('0x20')](handleEntityNotFound(_0x29416d,null))['then'](respondWithResult(_0x29416d,null))['catch'](handleError(_0x29416d,null));};exports[_0x2ac7('0x56')]=function(_0x59c17c,_0xb847fa){return db[_0x2ac7('0x4c')][_0x2ac7('0x56')](_0x59c17c[_0x2ac7('0x57')],{})[_0x2ac7('0x20')](function(_0x4b017b){var _0x3ded44=_0x59c17c['user']['get']({'plain':!![]});if(!_0x3ded44)throw new Error(_0x2ac7('0x58'));if(_0x3ded44[_0x2ac7('0x59')]===_0x2ac7('0x5a')){var _0x331167=_0x4b017b[_0x2ac7('0x5b')]({'plain':!![]});var _0xab53d0=_0x2ac7('0x33');return db[_0x2ac7('0x5c')][_0x2ac7('0x55')]({'where':{'name':_0xab53d0,'userProfileId':_0x3ded44[_0x2ac7('0x5d')]},'raw':!![]})[_0x2ac7('0x20')](function(_0x11a070){if(_0x11a070&&_0x11a070[_0x2ac7('0x5e')]===0x0){return db['UserProfileResource'][_0x2ac7('0x56')]({'name':_0x331167[_0x2ac7('0x38')],'resourceId':_0x331167['id'],'type':_0x11a070[_0x2ac7('0x38')],'sectionId':_0x11a070['id']},{})['then'](function(){return _0x4b017b;});}else{return _0x4b017b;}})['catch'](function(_0x246c80){logger[_0x2ac7('0x25')](_0x2ac7('0x5f'),_0x246c80);throw _0x246c80;});}return _0x4b017b;})[_0x2ac7('0x20')](respondWithResult(_0xb847fa,0xc9))['catch'](handleError(_0xb847fa,null));};exports['update']=function(_0x4f2689,_0xa50eb1){if(_0x4f2689[_0x2ac7('0x57')]['id']){delete _0x4f2689['body']['id'];}return db[_0x2ac7('0x4c')][_0x2ac7('0x55')]({'where':{'id':_0x4f2689['params']['id']},'include':[{'model':db[_0x2ac7('0x3a')],'as':_0x2ac7('0x52')}]})[_0x2ac7('0x20')](handleEntityNotFound(_0xa50eb1,null))[_0x2ac7('0x20')](saveUpdates(_0x4f2689[_0x2ac7('0x57')],null))[_0x2ac7('0x20')](respondWithResult(_0xa50eb1,null))[_0x2ac7('0x29')](handleError(_0xa50eb1,null));};exports[_0x2ac7('0x35')]=function(_0x5f1676,_0x34335f){return db[_0x2ac7('0x4c')][_0x2ac7('0x55')]({'where':{'id':_0x5f1676['params']['id']}})[_0x2ac7('0x20')](handleEntityNotFound(_0x34335f,null))['then'](removeEntity(_0x34335f,null))['catch'](handleError(_0x34335f,null));};exports['describe']=function(_0x41da00,_0x121d4e){return db[_0x2ac7('0x4c')][_0x2ac7('0x60')]()[_0x2ac7('0x20')](respondWithResult(_0x121d4e,null))['catch'](handleError(_0x121d4e,null));};exports[_0x2ac7('0x61')]=function(_0x9f60fd,_0x4f4eb6,_0x278381){if(_0x9f60fd[_0x2ac7('0x57')]['id']){delete _0x9f60fd[_0x2ac7('0x57')]['id'];}return db[_0x2ac7('0x4c')][_0x2ac7('0x55')]({'where':{'id':_0x9f60fd[_0x2ac7('0x51')]['id']}})[_0x2ac7('0x20')](handleEntityNotFound(_0x4f4eb6,null))['then'](function(_0x4ca0f3){if(_0x4ca0f3){_0x9f60fd[_0x2ac7('0x57')]['SmsAccountId']=_0x4ca0f3['id'];return db[_0x2ac7('0x62')]['create'](_0x9f60fd[_0x2ac7('0x57')]);}})['then'](respondWithResult(_0x4f4eb6,null))[_0x2ac7('0x29')](handleError(_0x4f4eb6,null));};exports[_0x2ac7('0x63')]=function(_0x247eb3,_0x3c193c,_0x28319b){var _0x3bea23={'raw':![],'where':{}};var _0x44abd4={};var _0x1d1a0f={'count':0x0,'rows':[]};return db[_0x2ac7('0x4c')][_0x2ac7('0x64')]({'where':{'id':_0x247eb3[_0x2ac7('0x51')]['id']}})['then'](handleEntityNotFound(_0x3c193c,null))['then'](function(_0x317d69){if(_0x317d69){_0x44abd4[_0x2ac7('0x3e')]=_[_0x2ac7('0x53')](db['Disposition'][_0x2ac7('0x3b')]);_0x44abd4[_0x2ac7('0x3f')]=_[_0x2ac7('0x53')](_0x247eb3[_0x2ac7('0x3f')]);_0x44abd4[_0x2ac7('0x40')]=_[_0x2ac7('0x41')](_0x44abd4[_0x2ac7('0x3e')],_0x44abd4[_0x2ac7('0x3f')]);_0x3bea23[_0x2ac7('0x43')]=_[_0x2ac7('0x41')](_0x44abd4[_0x2ac7('0x3e')],qs[_0x2ac7('0x42')](_0x247eb3[_0x2ac7('0x3f')]['fields']));_0x3bea23['attributes']=_0x3bea23['attributes'][_0x2ac7('0x65')]?_0x3bea23['attributes']:_0x44abd4[_0x2ac7('0x3e')];if(!_0x247eb3['query']['hasOwnProperty'](_0x2ac7('0x44'))){_0x3bea23[_0x2ac7('0x2c')]=qs[_0x2ac7('0x2c')](_0x247eb3['query'][_0x2ac7('0x2c')]);_0x3bea23['offset']=qs[_0x2ac7('0x2f')](_0x247eb3['query'][_0x2ac7('0x2f')]);}_0x3bea23[_0x2ac7('0x45')]=qs[_0x2ac7('0x46')](_0x247eb3[_0x2ac7('0x3f')][_0x2ac7('0x46')]);_0x3bea23['where']=qs[_0x2ac7('0x40')](_[_0x2ac7('0x48')](_0x247eb3[_0x2ac7('0x3f')],_0x44abd4[_0x2ac7('0x40')]));_0x3bea23[_0x2ac7('0x47')][_0x2ac7('0x66')]=_0x317d69['id'];if(_0x247eb3[_0x2ac7('0x3f')][_0x2ac7('0x49')]){_0x3bea23[_0x2ac7('0x47')]=_[_0x2ac7('0x4a')](_0x3bea23['where'],{'$or':_[_0x2ac7('0x67')](_0x3bea23[_0x2ac7('0x43')],function(_0x4b03f7){var _0x51b6f6={};_0x51b6f6[_0x4b03f7]={'$like':'%'+_0x247eb3['query']['filter']+'%'};return _0x51b6f6;})});}_0x3bea23=_[_0x2ac7('0x4a')]({},_0x3bea23,_0x247eb3[_0x2ac7('0x54')]);return db[_0x2ac7('0x62')][_0x2ac7('0x2e')]({'where':_0x3bea23[_0x2ac7('0x47')]})[_0x2ac7('0x20')](function(_0x6703f1){_0x1d1a0f['count']=_0x6703f1;if(_0x247eb3[_0x2ac7('0x3f')][_0x2ac7('0x4d')]){_0x3bea23['include']=[{'all':!![]}];}return db['Disposition'][_0x2ac7('0x4f')](_0x3bea23);})['then'](function(_0x2ca39f){_0x1d1a0f[_0x2ac7('0x50')]=_0x2ca39f;return _0x1d1a0f;});}})[_0x2ac7('0x20')](respondWithFilteredResult(_0x3c193c,_0x3bea23))[_0x2ac7('0x29')](handleError(_0x3c193c,null));};exports[_0x2ac7('0x68')]=function(_0xca277f,_0x14ae66,_0x2062a2){return db[_0x2ac7('0x4c')][_0x2ac7('0x55')]({'where':{'id':_0xca277f[_0x2ac7('0x51')]['id']}})[_0x2ac7('0x20')](handleEntityNotFound(_0x14ae66,null))[_0x2ac7('0x20')](function(_0x968a79){if(_0x968a79){return _0x968a79[_0x2ac7('0x68')](_0xca277f[_0x2ac7('0x3f')][_0x2ac7('0x69')]);}})[_0x2ac7('0x20')](respondWithStatusCode(_0x14ae66,null))['catch'](handleError(_0x14ae66,null));};exports[_0x2ac7('0x6a')]=function(_0x4d4680,_0x21cfd2,_0x5a17fc){if(_0x4d4680[_0x2ac7('0x57')]['id']){delete _0x4d4680[_0x2ac7('0x57')]['id'];}return db['SmsAccount'][_0x2ac7('0x55')]({'where':{'id':_0x4d4680[_0x2ac7('0x51')]['id']}})['then'](handleEntityNotFound(_0x21cfd2,null))['then'](function(_0x27599e){if(_0x27599e){_0x4d4680['body'][_0x2ac7('0x66')]=_0x27599e['id'];return db[_0x2ac7('0x6b')][_0x2ac7('0x56')](_0x4d4680[_0x2ac7('0x57')]);}})['then'](respondWithResult(_0x21cfd2,null))[_0x2ac7('0x29')](handleError(_0x21cfd2,null));};exports['getAnswers']=function(_0x2581ee,_0x28e1e2,_0x243cf6){var _0xb461b={'raw':![],'where':{}};var _0xfcbafe={};var _0x3f91c5={'count':0x0,'rows':[]};return db['SmsAccount'][_0x2ac7('0x64')]({'where':{'id':_0x2581ee['params']['id']}})[_0x2ac7('0x20')](handleEntityNotFound(_0x28e1e2,null))[_0x2ac7('0x20')](function(_0x2097c4){if(_0x2097c4){_0xfcbafe['model']=_[_0x2ac7('0x53')](db[_0x2ac7('0x6b')]['rawAttributes']);_0xfcbafe[_0x2ac7('0x3f')]=_[_0x2ac7('0x53')](_0x2581ee['query']);_0xfcbafe['filters']=_['intersection'](_0xfcbafe['model'],_0xfcbafe[_0x2ac7('0x3f')]);_0xb461b[_0x2ac7('0x43')]=_['intersection'](_0xfcbafe[_0x2ac7('0x3e')],qs[_0x2ac7('0x42')](_0x2581ee['query']['fields']));_0xb461b['attributes']=_0xb461b[_0x2ac7('0x43')][_0x2ac7('0x65')]?_0xb461b[_0x2ac7('0x43')]:_0xfcbafe[_0x2ac7('0x3e')];if(!_0x2581ee['query']['hasOwnProperty'](_0x2ac7('0x44'))){_0xb461b[_0x2ac7('0x2c')]=qs[_0x2ac7('0x2c')](_0x2581ee[_0x2ac7('0x3f')]['limit']);_0xb461b[_0x2ac7('0x2f')]=qs['offset'](_0x2581ee['query'][_0x2ac7('0x2f')]);}_0xb461b['order']=qs[_0x2ac7('0x46')](_0x2581ee[_0x2ac7('0x3f')][_0x2ac7('0x46')]);_0xb461b[_0x2ac7('0x47')]=qs['filters'](_['pick'](_0x2581ee[_0x2ac7('0x3f')],_0xfcbafe[_0x2ac7('0x40')]));_0xb461b[_0x2ac7('0x47')]['SmsAccountId']=_0x2097c4['id'];if(_0x2581ee[_0x2ac7('0x3f')][_0x2ac7('0x49')]){_0xb461b[_0x2ac7('0x47')]=_[_0x2ac7('0x4a')](_0xb461b[_0x2ac7('0x47')],{'$or':_['map'](_0xb461b[_0x2ac7('0x43')],function(_0xf0eddd){var _0x4d7254={};_0x4d7254[_0xf0eddd]={'$like':'%'+_0x2581ee[_0x2ac7('0x3f')][_0x2ac7('0x49')]+'%'};return _0x4d7254;})});}_0xb461b=_[_0x2ac7('0x4a')]({},_0xb461b,_0x2581ee[_0x2ac7('0x54')]);return db[_0x2ac7('0x6b')]['count']({'where':_0xb461b[_0x2ac7('0x47')]})[_0x2ac7('0x20')](function(_0x434cc9){_0x3f91c5[_0x2ac7('0x2e')]=_0x434cc9;if(_0x2581ee[_0x2ac7('0x3f')][_0x2ac7('0x4d')]){_0xb461b[_0x2ac7('0x4e')]=[{'all':!![]}];}return db['CannedAnswer'][_0x2ac7('0x4f')](_0xb461b);})['then'](function(_0x9bb1ad){_0x3f91c5[_0x2ac7('0x50')]=_0x9bb1ad;return _0x3f91c5;});}})[_0x2ac7('0x20')](respondWithFilteredResult(_0x28e1e2,_0xb461b))[_0x2ac7('0x29')](handleError(_0x28e1e2,null));};exports[_0x2ac7('0x6c')]=function(_0x1ba6dc,_0x308283,_0x2d91a8){return db[_0x2ac7('0x4c')][_0x2ac7('0x55')]({'where':{'id':_0x1ba6dc[_0x2ac7('0x51')]['id']}})['then'](handleEntityNotFound(_0x308283,null))[_0x2ac7('0x20')](function(_0x1d3011){if(_0x1d3011){return _0x1d3011[_0x2ac7('0x6c')](_0x1ba6dc[_0x2ac7('0x3f')]['ids']);}})[_0x2ac7('0x20')](respondWithStatusCode(_0x308283,null))[_0x2ac7('0x29')](handleError(_0x308283,null));};exports[_0x2ac7('0x6d')]=function(_0x1daed8,_0x2403be,_0x2e6989){var _0x5e1270={'channel':_0x2ac7('0x6e')};var _0x213214=[];var _0x8a9e48=[];var _0x339b4e={};return db[_0x2ac7('0x4c')][_0x2ac7('0x55')]({'where':{'id':_0x1daed8[_0x2ac7('0x51')]['id']},'include':[{'model':db['SmsApplication'],'as':'Applications'}]})[_0x2ac7('0x20')](handleEntityNotFound(_0x2403be,null))[_0x2ac7('0x20')](function(_0x2adf2b){_0x5e1270[_0x2ac7('0x6f')]=_0x2adf2b;_0x5e1270[_0x2ac7('0x70')]=_['orderBy'](_0x2adf2b[_0x2ac7('0x71')],[_0x2ac7('0x72')],[_0x2ac7('0x73')]);if(_0x5e1270[_0x2ac7('0x6f')][_0x2ac7('0x71')]){delete _0x5e1270[_0x2ac7('0x6f')][_0x2ac7('0x71')];}return db[_0x2ac7('0x74')][_0x2ac7('0x60')]();})[_0x2ac7('0x20')](function(_0x317be8){if(!_0x317be8){throw new db['Sequelize'][(_0x2ac7('0x75'))](_0x2ac7('0x76'));}_0x213214=_[_0x2ac7('0x77')](_[_0x2ac7('0x53')](_0x317be8),[_0x2ac7('0x78'),'updatedAt']);_0x8a9e48=_['difference'](_[_0x2ac7('0x53')](_0x317be8),[_0x2ac7('0x78'),_0x2ac7('0x79'),_0x2ac7('0x7a'),'ListId']);_0x5e1270['body']={'mapKey':_0x2ac7('0x7b')};if(_0x5e1270['account']['type']){switch(_0x5e1270[_0x2ac7('0x6f')][_0x2ac7('0x3c')]){case _0x2ac7('0x7c'):_0x5e1270[_0x2ac7('0x57')][_0x2ac7('0x7d')]=_0x1daed8['body'][_0x2ac7('0x7e')];_0x5e1270[_0x2ac7('0x57')][_0x2ac7('0x57')]=_0x1daed8['body']['Body'];_0x5e1270[_0x2ac7('0x57')][_0x2ac7('0x7f')]=_0x1daed8['body'][_0x2ac7('0x80')];break;case _0x2ac7('0x81'):_0x5e1270[_0x2ac7('0x57')][_0x2ac7('0x7d')]='+'+_0x1daed8[_0x2ac7('0x57')]['sender'];_0x5e1270[_0x2ac7('0x57')][_0x2ac7('0x57')]=_0x1daed8[_0x2ac7('0x57')][_0x2ac7('0x82')];break;case _0x2ac7('0x83'):_0x5e1270['body']['from']=_0x1daed8[_0x2ac7('0x57')][_0x2ac7('0x7d')];_0x5e1270[_0x2ac7('0x57')][_0x2ac7('0x57')]=_0x1daed8[_0x2ac7('0x57')][_0x2ac7('0x27')];break;case _0x2ac7('0x84'):_0x5e1270[_0x2ac7('0x57')][_0x2ac7('0x7d')]=_0x1daed8[_0x2ac7('0x57')][_0x2ac7('0x7d')];_0x5e1270[_0x2ac7('0x57')][_0x2ac7('0x57')]=_0x1daed8[_0x2ac7('0x57')][_0x2ac7('0x57')];_0x5e1270[_0x2ac7('0x57')]['messageId']=_0x1daed8[_0x2ac7('0x57')][_0x2ac7('0x85')];break;case'plivo':_0x5e1270[_0x2ac7('0x57')][_0x2ac7('0x7d')]=_0x1daed8[_0x2ac7('0x57')][_0x2ac7('0x7e')];_0x5e1270['body'][_0x2ac7('0x57')]=_0x1daed8[_0x2ac7('0x57')][_0x2ac7('0x86')];_0x5e1270[_0x2ac7('0x57')][_0x2ac7('0x7f')]=_0x1daed8[_0x2ac7('0x57')][_0x2ac7('0x87')];break;case'infobip':_0x5e1270[_0x2ac7('0x57')][_0x2ac7('0x7d')]='+'+_0x1daed8[_0x2ac7('0x57')][_0x2ac7('0x88')][0x0][_0x2ac7('0x7d')];_0x5e1270[_0x2ac7('0x57')][_0x2ac7('0x57')]=_0x1daed8[_0x2ac7('0x57')][_0x2ac7('0x88')][0x0]['text'];_0x5e1270[_0x2ac7('0x57')]['messageId']=_0x1daed8[_0x2ac7('0x57')][_0x2ac7('0x88')][0x0][_0x2ac7('0x7f')];break;case _0x2ac7('0x89'):_0x5e1270[_0x2ac7('0x57')][_0x2ac7('0x7d')]=_0x1daed8[_0x2ac7('0x57')][_0x2ac7('0x8a')];_0x5e1270[_0x2ac7('0x57')]['body']=_0x1daed8[_0x2ac7('0x57')][_0x2ac7('0x8b')]['message'];break;case _0x2ac7('0x8c'):_0x5e1270[_0x2ac7('0x57')][_0x2ac7('0x7d')]=_0x1daed8['body'][_0x2ac7('0x8d')];_0x5e1270[_0x2ac7('0x57')][_0x2ac7('0x57')]=_0x1daed8['body']['text'];_0x5e1270[_0x2ac7('0x57')]['messageId']=_0x1daed8[_0x2ac7('0x57')][_0x2ac7('0x8e')];break;case _0x2ac7('0x8f'):_0x5e1270[_0x2ac7('0x57')]['messageId']=_0x1daed8[_0x2ac7('0x57')][0x0]['message']['id'];_0x5e1270[_0x2ac7('0x57')][_0x2ac7('0x7d')]=_0x1daed8['body'][0x0][_0x2ac7('0x27')]['from'];_0x5e1270[_0x2ac7('0x57')][_0x2ac7('0x57')]=_0x1daed8[_0x2ac7('0x57')][0x0]['message']['text'];break;case _0x2ac7('0x90'):_0x5e1270[_0x2ac7('0x57')]['from']=_0x1daed8[_0x2ac7('0x57')][_0x2ac7('0x7d')];_0x5e1270[_0x2ac7('0x57')][_0x2ac7('0x57')]=_0x1daed8[_0x2ac7('0x57')]['message'];_0x5e1270[_0x2ac7('0x57')][_0x2ac7('0x7f')]=_0x1daed8[_0x2ac7('0x57')][_0x2ac7('0x91')];break;}}if(_0x5e1270[_0x2ac7('0x57')]['id']){delete _0x5e1270[_0x2ac7('0x57')]['id'];}if(_[_0x2ac7('0x92')](_0x5e1270[_0x2ac7('0x57')]['from'])){throw new db['Sequelize']['ValidationError'](_0x2ac7('0x93'));}if(_[_0x2ac7('0x92')](_0x5e1270[_0x2ac7('0x57')][_0x2ac7('0x57')])||_0x5e1270[_0x2ac7('0x57')]['body']===''){throw new db[(_0x2ac7('0x94'))][(_0x2ac7('0x75'))](_0x2ac7('0x95'));}if(_[_0x2ac7('0x92')](_0x5e1270[_0x2ac7('0x57')]['mapKey'])){throw new db[(_0x2ac7('0x94'))][(_0x2ac7('0x75'))](_0x2ac7('0x96')+_0x8a9e48);}if(!_[_0x2ac7('0x97')](_0x8a9e48,_0x5e1270['body'][_0x2ac7('0x98')])){throw new db[(_0x2ac7('0x94'))][(_0x2ac7('0x75'))](_0x2ac7('0x99')+_0x8a9e48);}_0x339b4e[_0x5e1270[_0x2ac7('0x57')][_0x2ac7('0x98')]]=_0x5e1270['body'][_0x2ac7('0x7d')];return db[_0x2ac7('0x9a')]['find']({'where':{'id':_0x5e1270[_0x2ac7('0x6f')][_0x2ac7('0x9b')]},'include':[{'model':db[_0x2ac7('0x74')],'as':_0x2ac7('0x9c'),'where':_0x339b4e,'limit':0x1,'order':[[_0x2ac7('0x79'),'DESC']]}]});})['then'](handleEntityNotFound(_0x2403be,null))[_0x2ac7('0x20')](function(_0x4d9caa){if(_0x4d9caa){_0x5e1270['list']=_[_0x2ac7('0x9d')](_0x4d9caa,[_0x2ac7('0x9c')]);if(_0x4d9caa[_0x2ac7('0x9c')]['length']){return _0x4d9caa[_0x2ac7('0x9c')][0x0];}var _0xdf784=_[_0x2ac7('0x18')](_0x5e1270[_0x2ac7('0x57')],{'firstName':_0x5e1270[_0x2ac7('0x57')][_0x2ac7('0x7d')],'ListId':_0x4d9caa['id']});_0xdf784[_0x5e1270[_0x2ac7('0x57')][_0x2ac7('0x98')]]=_0x5e1270[_0x2ac7('0x57')][_0x2ac7('0x7d')];return db[_0x2ac7('0x74')][_0x2ac7('0x56')](_0xdf784,{'fields':_0x213214,'raw':!![]});}})[_0x2ac7('0x20')](handleEntityNotFound(_0x2403be,null))[_0x2ac7('0x20')](function(_0x335078){if(_0x335078){_0x5e1270[_0x2ac7('0x9e')]=_0x335078;var _0x30bdd4={'ContactId':_0x335078['id'],'phone':_0x5e1270[_0x2ac7('0x57')][_0x2ac7('0x7d')],'SmsAccountId':_0x1daed8[_0x2ac7('0x51')]['id']};var _0x4e6878={'ContactId':_0x335078['id'],'SmsAccountId':_0x1daed8['params']['id'],'closed':![]};return db[_0x2ac7('0x9f')]['find']({'where':_0x4e6878})[_0x2ac7('0x20')](function(_0x55f0ca){if(_0x55f0ca){return[_0x55f0ca,![]];}return db[_0x2ac7('0x9f')][_0x2ac7('0x56')](_0x30bdd4)[_0x2ac7('0x20')](function(_0x54b512){return[_0x54b512,!![]];});});}})[_0x2ac7('0xa0')](function(_0x4a9280,_0xd22d4a){_0x5e1270[_0x2ac7('0xa1')]=_0x4a9280['get']({'plain':!![]});_0x5e1270['interaction'][_0x2ac7('0xa2')]=![];if(_0xd22d4a){if(_0x5e1270[_0x2ac7('0x6f')][_0x2ac7('0xa3')]){_0x5e1270[_0x2ac7('0x70')]['push']({'id':0x0,'priority':_0x5e1270[_0x2ac7('0x70')]['length']+0x1,'app':_0x2ac7('0xa4'),'appdata':_0x2ac7('0xa5'),'interval':_0x2ac7('0xa6')});}_0x5e1270[_0x2ac7('0xa1')][_0x2ac7('0xa2')]=!![];}return db[_0x2ac7('0xa7')][_0x2ac7('0x56')]({'phone':_0x5e1270['body'][_0x2ac7('0x7d')],'messageId':_0x5e1270[_0x2ac7('0x57')]['messageId'],'body':_0x5e1270[_0x2ac7('0x57')][_0x2ac7('0x57')],'SmsAccountId':_0x1daed8[_0x2ac7('0x51')]['id'],'SmsInteractionId':_0x4a9280['id'],'direction':'in','ContactId':_0x4a9280[_0x2ac7('0xa8')],'AttachmentId':_0x5e1270[_0x2ac7('0x57')][_0x2ac7('0xa9')]});})['then'](function(_0x22b8d9){_0x5e1270[_0x2ac7('0x27')]=_0x22b8d9;if(_0x5e1270['interaction']['UserId']){return db[_0x2ac7('0xaa')][_0x2ac7('0x55')]({'attributes':['id',_0x2ac7('0x38')],'where':{'id':_0x5e1270['interaction'][_0x2ac7('0xab')]}})[_0x2ac7('0x20')](function(_0x555c20){if(_0x555c20){_0x5e1270[_0x2ac7('0x70')][_0x2ac7('0xac')]({'id':0x0,'priority':0x0,'app':_0x2ac7('0xad'),'appdata':_0x555c20[_0x2ac7('0x38')]+','+(_0x5e1270[_0x2ac7('0x6f')][_0x2ac7('0xae')]||0xa),'interval':_0x2ac7('0xa6')});}return respondWithRpcPromise(_0x2ac7('0xaf'),'startRouting',_0x5e1270);});}return respondWithRpcPromise('Start',_0x2ac7('0xb0'),_0x5e1270);})[_0x2ac7('0x20')](function(_0x50bfb3){if(_0x50bfb3){var _0x5c6795=0xc8;var _0x4cb51c=_0x2ac7('0xb1');logger[_0x2ac7('0x21')]('SmsAccount,\x20%s,\x20%s,\x20%s',_0x4cb51c,_0x5c6795,'entity\x20found');logger['debug'](_0x2ac7('0xb2'),_0x4cb51c,_0x5c6795,'entity\x20found',JSON[_0x2ac7('0xb3')](_0x50bfb3));if(_0x5e1270['account']['type']==='twilio'){return _0x2403be['status'](_0x5c6795)[_0x2ac7('0xb4')](_0x2ac7('0xb5'),_0x2ac7('0xb6'))[_0x2ac7('0xb7')](_0x2ac7('0xb8'));}else{return _0x2403be[_0x2ac7('0x2a')](_0x5c6795)[_0x2ac7('0x2b')](_0x50bfb3);}}})[_0x2ac7('0x29')](handleError(_0x2403be,null));};exports['addApplications']=function(_0x4d6e14,_0x415d22){var _0x177002=_0x4d6e14[_0x2ac7('0x51')]['id'];var _0x3d3fa1=_0x4d6e14[_0x2ac7('0x57')];var _0x5b457c=0xc8;var _0xcfdb2a=null;return db[_0x2ac7('0xb9')][_0x2ac7('0xba')]({'isolationLevel':db[_0x2ac7('0xb9')][_0x2ac7('0xbb')][_0x2ac7('0xbc')]['READ_COMMITTED']},function(_0xe2fb91){return db['SmsAccount']['findOne']({'where':{'id':_0x177002},'transaction':_0xe2fb91})[_0x2ac7('0x20')](function(_0x18a028){if(_0x18a028){return db['SmsApplication']['destroy']({'where':{'SmsAccountId':_0x177002},'transaction':_0xe2fb91})[_0x2ac7('0x20')](function(){var _0x13fcf7=_[_0x2ac7('0x67')](_0x3d3fa1,function(_0x135eab){_0x135eab['SmsAccountId']=_0x177002;return _0x135eab;});return db[_0x2ac7('0xbd')][_0x2ac7('0xbe')](_0x13fcf7,{'transaction':_0xe2fb91});});}else{_0x5b457c=0x194;_0xcfdb2a=[];}});})['then'](function(){if(_0x5b457c!==0x194){return db[_0x2ac7('0xbd')][_0x2ac7('0xbf')]({'where':{'SmsAccountId':_0x177002},'order':'priority'})['then'](function(_0x416c15){_0xcfdb2a=_0x416c15;});}})[_0x2ac7('0x29')](function(_0x2a0829){_0x5b457c=0x1f4;logger[_0x2ac7('0x25')](_0x2a0829[_0x2ac7('0xc0')]);if(_0x2a0829[_0x2ac7('0x38')]){delete _0x2a0829[_0x2ac7('0x38')];}_0xcfdb2a=_0x2a0829;})['finally'](function(){if(_0xcfdb2a===null){_0x415d22[_0x2ac7('0x37')](_0x5b457c);}else{if(_0x5b457c===0x1f4){_0x415d22['status'](_0x5b457c)['send'](_0xcfdb2a);}else{_0x415d22[_0x2ac7('0x2a')](_0x5b457c)[_0x2ac7('0x2b')](_0xcfdb2a);}}});};exports[_0x2ac7('0xc1')]=function(_0x38de08,_0xba9044,_0x3f4fc6){var _0x5cc4ea={};var _0x5e97d5={};var _0x17a449;var _0x32baba;return db[_0x2ac7('0x4c')][_0x2ac7('0x64')]({'where':{'id':_0x38de08['params']['id']}})[_0x2ac7('0x20')](handleEntityNotFound(_0xba9044,null))[_0x2ac7('0x20')](function(_0x2d00de){if(_0x2d00de){_0x17a449=_0x2d00de;_0x5e97d5[_0x2ac7('0x3e')]=_[_0x2ac7('0x53')](db[_0x2ac7('0xbd')][_0x2ac7('0x3b')]);_0x5e97d5[_0x2ac7('0x3f')]=_[_0x2ac7('0x53')](_0x38de08[_0x2ac7('0x3f')]);_0x5e97d5[_0x2ac7('0x40')]=_[_0x2ac7('0x41')](_0x5e97d5[_0x2ac7('0x3e')],_0x5e97d5[_0x2ac7('0x3f')]);_0x5cc4ea[_0x2ac7('0x43')]=_[_0x2ac7('0x41')](_0x5e97d5[_0x2ac7('0x3e')],qs[_0x2ac7('0x42')](_0x38de08['query'][_0x2ac7('0x42')]));_0x5cc4ea[_0x2ac7('0x43')]=_0x5cc4ea[_0x2ac7('0x43')][_0x2ac7('0x65')]?_0x5cc4ea[_0x2ac7('0x43')]:_0x5e97d5['model'];_0x5cc4ea[_0x2ac7('0x45')]=qs[_0x2ac7('0x46')](_0x38de08[_0x2ac7('0x3f')]['sort']);_0x5cc4ea['where']=qs[_0x2ac7('0x40')](_[_0x2ac7('0x48')](_0x38de08[_0x2ac7('0x3f')],_0x5e97d5[_0x2ac7('0x40')]));if(_0x38de08[_0x2ac7('0x3f')][_0x2ac7('0x49')]){_0x5cc4ea['where']=_[_0x2ac7('0x4a')](_0x5cc4ea[_0x2ac7('0x47')],{'$or':_['map'](_0x5cc4ea[_0x2ac7('0x43')],function(_0x558e2a){var _0xbcbd3a={};_0xbcbd3a[_0x558e2a]={'$like':'%'+_0x38de08[_0x2ac7('0x3f')][_0x2ac7('0x49')]+'%'};return _0xbcbd3a;})});}_0x5cc4ea=_[_0x2ac7('0x4a')]({},_0x5cc4ea,_0x38de08['options']);return _0x17a449['getApplications'](_0x5cc4ea);}})[_0x2ac7('0x20')](function(_0x3c4e19){if(_0x3c4e19){_0x32baba=_0x3c4e19[_0x2ac7('0x65')];if(!_0x38de08[_0x2ac7('0x3f')][_0x2ac7('0xc2')](_0x2ac7('0x44'))){_0x5cc4ea['limit']=qs[_0x2ac7('0x2c')](_0x38de08['query']['limit']);_0x5cc4ea['offset']=qs[_0x2ac7('0x2f')](_0x38de08[_0x2ac7('0x3f')]['offset']);}return _0x17a449[_0x2ac7('0xc1')](_0x5cc4ea);}})[_0x2ac7('0x20')](function(_0x3d1eb2){if(_0x3d1eb2){return _0x3d1eb2?{'count':_0x32baba,'rows':_0x3d1eb2}:null;}})['then'](respondWithResult(_0xba9044,null))['catch'](handleError(_0xba9044,null));};exports[_0x2ac7('0xc3')]=function(_0xe96d1f,_0x3bfd12,_0x29a4f6){var _0x4babab={'raw':![],'where':{}};var _0x495b62={};var _0x3bbddd={'count':0x0,'rows':[]};return db[_0x2ac7('0x4c')][_0x2ac7('0x64')]({'where':{'id':_0xe96d1f['params']['id']}})[_0x2ac7('0x20')](handleEntityNotFound(_0x3bfd12,null))[_0x2ac7('0x20')](function(_0x58fb76){if(_0x58fb76){_0x495b62[_0x2ac7('0x3e')]=_[_0x2ac7('0x53')](db[_0x2ac7('0x9f')]['rawAttributes']);_0x495b62[_0x2ac7('0x3f')]=_[_0x2ac7('0x53')](_0xe96d1f['query']);_0x495b62['filters']=_['intersection'](_0x495b62[_0x2ac7('0x3e')],_0x495b62[_0x2ac7('0x3f')]);_0x4babab[_0x2ac7('0x43')]=_[_0x2ac7('0x41')](_0x495b62[_0x2ac7('0x3e')],qs[_0x2ac7('0x42')](_0xe96d1f[_0x2ac7('0x3f')]['fields']));_0x4babab['attributes']=_0x4babab[_0x2ac7('0x43')]['length']?_0x4babab[_0x2ac7('0x43')]:_0x495b62[_0x2ac7('0x3e')];if(!_0xe96d1f['query'][_0x2ac7('0xc2')](_0x2ac7('0x44'))){_0x4babab[_0x2ac7('0x2c')]=qs[_0x2ac7('0x2c')](_0xe96d1f[_0x2ac7('0x3f')]['limit']);_0x4babab[_0x2ac7('0x2f')]=qs[_0x2ac7('0x2f')](_0xe96d1f[_0x2ac7('0x3f')][_0x2ac7('0x2f')]);}_0x4babab[_0x2ac7('0x45')]=qs[_0x2ac7('0x46')](_0xe96d1f[_0x2ac7('0x3f')]['sort']);_0x4babab[_0x2ac7('0x47')]=qs['filters'](_['pick'](_0xe96d1f[_0x2ac7('0x3f')],_0x495b62['filters']));_0x4babab['where']['SmsAccountId']=_0x58fb76['id'];if(_0xe96d1f[_0x2ac7('0x3f')][_0x2ac7('0x49')]){_0x4babab[_0x2ac7('0x47')]=_[_0x2ac7('0x4a')](_0x4babab[_0x2ac7('0x47')],{'$or':_[_0x2ac7('0x67')](_0x4babab[_0x2ac7('0x43')],function(_0x199df0){var _0x44b866={};_0x44b866[_0x199df0]={'$like':'%'+_0xe96d1f[_0x2ac7('0x3f')][_0x2ac7('0x49')]+'%'};return _0x44b866;})});}_0x4babab=_['merge']({},_0x4babab,_0xe96d1f[_0x2ac7('0x54')]);return db[_0x2ac7('0x9f')][_0x2ac7('0x2e')]({'where':_0x4babab[_0x2ac7('0x47')]})['then'](function(_0x2d012c){_0x3bbddd['count']=_0x2d012c;if(_0xe96d1f[_0x2ac7('0x3f')][_0x2ac7('0x4d')]){_0x4babab['include']=[{'model':db[_0x2ac7('0x74')],'as':_0x2ac7('0xc4'),'required':![]},{'model':db[_0x2ac7('0xaa')],'as':_0x2ac7('0xc5'),'attributes':[_0x2ac7('0x38'),_0x2ac7('0xc6'),'internal'],'required':![]},{'model':db[_0x2ac7('0xc7')],'as':_0x2ac7('0xc8'),'attributes':['id','name','color'],'where':_0xe96d1f[_0x2ac7('0x3f')][_0x2ac7('0xc9')]?{'id':_0xe96d1f[_0x2ac7('0x3f')][_0x2ac7('0xc9')]}:undefined,'required':_0xe96d1f[_0x2ac7('0x3f')]['tag']?!![]:![]}];}return db[_0x2ac7('0x9f')][_0x2ac7('0x4f')](_0x4babab);})['then'](function(_0x1e6442){_0x3bbddd[_0x2ac7('0x50')]=_0x1e6442;return _0x3bbddd;});}})['then'](respondWithFilteredResult(_0x3bfd12,_0x4babab))[_0x2ac7('0x29')](handleError(_0x3bfd12,null));};exports['send']=function(_0x1a7850,_0x17779d,_0x534b16){var _0x2664bd,_0xa9df26,_0x43902a;if(_[_0x2ac7('0x92')](_0x1a7850[_0x2ac7('0x57')]['body'])||_0x1a7850[_0x2ac7('0x57')]['body']===''){throw new db[(_0x2ac7('0x94'))][(_0x2ac7('0x75'))]('body\x20is\x20mandatory\x20and\x20not\x20empty');}if(_[_0x2ac7('0x92')](_0x1a7850[_0x2ac7('0x57')]['to'])){throw new db[(_0x2ac7('0x94'))][(_0x2ac7('0x75'))](_0x2ac7('0xca'));}_0x2664bd=_0x1a7850['body']['to'];return db[_0x2ac7('0x4c')]['find']({'where':{'id':_0x1a7850['params']['id']},'include':[{'model':db[_0x2ac7('0x9a')],'as':_0x2ac7('0xcb'),'include':[{'model':db[_0x2ac7('0x74')],'as':_0x2ac7('0x9c'),'where':{'mobile':_0x2664bd},'limit':0x1,'order':[[_0x2ac7('0x79'),'DESC']]}]}]})[_0x2ac7('0x20')](handleEntityNotFound(_0x17779d,null))[_0x2ac7('0x20')](function(_0x387ea1){if(_0x387ea1&&_0x387ea1[_0x2ac7('0xcb')]){_0xa9df26=_0x387ea1[_0x2ac7('0x5b')]({'plain':!![]});if(_0xa9df26[_0x2ac7('0xcb')]&&_0xa9df26[_0x2ac7('0xcb')][_0x2ac7('0x9c')]['length']){return _0xa9df26[_0x2ac7('0xcb')]['Contacts'][0x0];}return db['CmContact'][_0x2ac7('0x56')](_[_0x2ac7('0x18')](_0x1a7850[_0x2ac7('0x57')],{'firstName':_0x2664bd,'mobile':_0x2664bd,'phone':_0x2664bd,'ListId':_0xa9df26['ListId']}));}})['then'](handleEntityNotFound(_0x17779d,null))['then'](function(_0xf52876){if(_0xf52876){_0x43902a=_0xf52876;return db[_0x2ac7('0x9f')][_0x2ac7('0x55')]({'where':{'ContactId':_0x43902a['id'],'closed':![],'SmsAccountId':_0xa9df26['id']}})[_0x2ac7('0x20')](function(_0x4d7f42){if(_0x4d7f42){return[_0x4d7f42,![]];}return db[_0x2ac7('0x9f')]['create']({'UserId':_0x1a7850['user']['id'],'ContactId':_0x43902a['id'],'SmsAccountId':_0xa9df26['id'],'phone':_0x2664bd,'firstMsgDirection':_0x2ac7('0xcc'),'Messages':[_['merge'](_0x1a7850[_0x2ac7('0x57')],{'read':![],'body':_0x1a7850[_0x2ac7('0x57')]['body'],'phone':_0x2664bd,'SmsAccountId':_0xa9df26['id'],'UserId':_0x1a7850[_0x2ac7('0x5a')]['id'],'ContactId':_0x43902a['id']})]},{'include':[{'model':db[_0x2ac7('0xa7')],'as':_0x2ac7('0xcd')}]})[_0x2ac7('0x20')](function(_0x363b57){return[_0x363b57,!![]];});});}})[_0x2ac7('0xa0')](function(_0x5a0e86,_0x142f0f){if(_0x142f0f){return _0x5a0e86;}return db['SmsMessage'][_0x2ac7('0x56')](_[_0x2ac7('0x4a')](_0x1a7850[_0x2ac7('0x57')],{'read':![],'body':_0x1a7850[_0x2ac7('0x57')][_0x2ac7('0x57')],'phone':_0x2664bd,'SmsAccountId':_0xa9df26['id'],'SmsInteractionId':_0x5a0e86['id'],'UserId':_0x1a7850['user']['id'],'ContactId':_0x43902a['id']}))[_0x2ac7('0x20')](function(_0x1cbef6){_0x5a0e86[_0x2ac7('0xce')]['Messages']=[];_0x5a0e86['dataValues']['Messages'][_0x2ac7('0xcf')](_0x1cbef6[_0x2ac7('0xce')]);return _0x5a0e86;});})[_0x2ac7('0x20')](respondWithResult(_0x17779d,null))[_0x2ac7('0x29')](handleError(_0x17779d,null));};exports[_0x2ac7('0x2a')]=function(_0x3e0f8b,_0x41bf43,_0x590a48){if(_0x3e0f8b[_0x2ac7('0x57')]['id']){delete _0x3e0f8b[_0x2ac7('0x57')]['id'];}var _0x39a185,_0x522d19,_0x558c73;return db[_0x2ac7('0x4c')][_0x2ac7('0x55')]({'where':{'id':_0x3e0f8b[_0x2ac7('0x51')]['id']}})[_0x2ac7('0x20')](handleEntityNotFound(_0x41bf43,null))[_0x2ac7('0x20')](function(_0x2b7833){if(_0x2b7833){_0x558c73=_0x2b7833;logger[_0x2ac7('0xd0')](_0x2ac7('0x24'),_0x2ac7('0x2a'),'received\x20delivery\x20report\x20from',_0x2b7833[_0x2ac7('0x3c')],util[_0x2ac7('0xd1')](_0x3e0f8b[_0x2ac7('0x57')],{'showHidden':![],'depth':null}));switch(_0x2b7833['type']){case _0x2ac7('0x81'):if(_0x3e0f8b[_0x2ac7('0x57')][_0x2ac7('0xd2')]&&_0x3e0f8b['body'][_0x2ac7('0x2a')]){_0x522d19=_0x3e0f8b[_0x2ac7('0x57')][_0x2ac7('0x2a')];return db[_0x2ac7('0xa7')][_0x2ac7('0x55')]({'where':{'messageId':_0x3e0f8b['body'][_0x2ac7('0xd2')]}});}break;case _0x2ac7('0x83'):if(_0x3e0f8b['body'][_0x2ac7('0xd3')]&&_0x3e0f8b['body'][_0x2ac7('0xd4')]){_0x522d19=_0x3e0f8b[_0x2ac7('0x57')]['statusInt'];return db[_0x2ac7('0xa7')][_0x2ac7('0x55')]({'where':{'messageId':_0x3e0f8b[_0x2ac7('0x57')][_0x2ac7('0xd3')]}});}break;case _0x2ac7('0x84'):if(_0x3e0f8b['body']['message_id']&&_0x3e0f8b[_0x2ac7('0x57')][_0x2ac7('0xd5')]){_0x522d19=_0x3e0f8b[_0x2ac7('0x57')]['status_code'];return db[_0x2ac7('0xa7')][_0x2ac7('0x55')]({'where':{'messageId':_0x3e0f8b[_0x2ac7('0x57')][_0x2ac7('0x85')]}});}break;case _0x2ac7('0xd6'):var _0x229134=_0x3e0f8b[_0x2ac7('0x57')][_0x2ac7('0x88')][0x0];if(_0x229134[_0x2ac7('0x7f')]&&_0x229134[_0x2ac7('0x2a')][_0x2ac7('0xd7')]===_0x2ac7('0xd8')){_0x522d19=_0x229134[_0x2ac7('0x2a')][_0x2ac7('0xd7')];return db[_0x2ac7('0xa7')]['find']({'where':{'messageId':_0x229134[_0x2ac7('0x7f')]}});}break;case _0x2ac7('0x8c'):if(_0x3e0f8b['body']['messageId']&&_0x3e0f8b['body'][_0x2ac7('0x2a')]){_0x522d19=_0x3e0f8b[_0x2ac7('0x57')][_0x2ac7('0x2a')];return db[_0x2ac7('0xa7')][_0x2ac7('0x55')]({'where':{'messageId':_0x3e0f8b[_0x2ac7('0x57')][_0x2ac7('0x7f')]}});}break;case'bandwidth':if(_0x3e0f8b[_0x2ac7('0x57')][0x0][_0x2ac7('0x27')]['id']){_0x522d19=_0x3e0f8b[_0x2ac7('0x57')][0x0][_0x2ac7('0x3c')];return db['SmsMessage']['find']({'where':{'messageId':_0x3e0f8b[_0x2ac7('0x57')][0x0]['message']['id']}});}break;case'intelepeer':if(_0x3e0f8b[_0x2ac7('0x57')][_0x2ac7('0xd9')]&&_0x3e0f8b['body'][_0x2ac7('0x2a')]){_0x522d19=_0x3e0f8b[_0x2ac7('0x57')][_0x2ac7('0x2a')];return db['SmsMessage'][_0x2ac7('0x55')]({'where':{'messageId':_0x3e0f8b[_0x2ac7('0x57')]['redif']}});}break;}}})[_0x2ac7('0x20')](handleEntityNotFound(_0x41bf43,null))['then'](function(_0x4c346c){if(_0x4c346c){_0x39a185=_0x4c346c;switch(_0x558c73[_0x2ac7('0x3c')]){case _0x2ac7('0x81'):if(_0x522d19===_0x2ac7('0xd8')){return _0x39a185[_0x2ac7('0xda')]({'read':!![]});}else{logger['error'](_0x2ac7('0x24'),_0x2ac7('0x2a'),'skebby',util['inspect'](_0x3e0f8b[_0x2ac7('0x57')],{'showHidden':![],'depth':null}));}break;case _0x2ac7('0x83'):if(_0x522d19==='1'){return _0x39a185[_0x2ac7('0xda')]({'read':!![]});}else{logger[_0x2ac7('0x25')](_0x2ac7('0x24'),_0x2ac7('0x2a'),'skebby',util[_0x2ac7('0xd1')](_0x3e0f8b[_0x2ac7('0x57')],{'showHidden':![],'depth':null}));}break;case _0x2ac7('0x84'):if(!_0x3e0f8b[_0x2ac7('0x57')][_0x2ac7('0xdb')]&&_0x522d19>=0xc8&&_0x522d19<=0xce){return _0x39a185['update']({'read':!![]});}else{logger[_0x2ac7('0x25')](_0x2ac7('0x24'),_0x2ac7('0x2a'),_0x2ac7('0x84'),util['inspect'](_0x3e0f8b[_0x2ac7('0x57')],{'showHidden':![],'depth':null}));}break;case _0x2ac7('0xd6'):var _0x2e123e=_0x3e0f8b[_0x2ac7('0x57')][_0x2ac7('0x88')][0x0];if(_0x2e123e[_0x2ac7('0x2a')][_0x2ac7('0xd7')]==='DELIVERED'){return _0x39a185['update']({'read':!![]});}else{logger[_0x2ac7('0x25')](_0x2ac7('0x24'),_0x2ac7('0x2a'),'infobip',util[_0x2ac7('0xd1')](_0x3e0f8b['body'],{'showHidden':![],'depth':null}));}break;case _0x2ac7('0x8c'):if(_0x522d19==_0x2ac7('0xdc')||_0x522d19==_0x2ac7('0xdd')){return _0x39a185[_0x2ac7('0xda')]({'read':!![]});}else{logger[_0x2ac7('0x25')](_0x2ac7('0x24'),_0x2ac7('0x2a'),_0x2ac7('0x8c'),util[_0x2ac7('0xd1')](_0x3e0f8b[_0x2ac7('0x57')],{'showHidden':![],'depth':null}));}break;case'bandwidth':if(_0x522d19==_0x2ac7('0xde')){return _0x39a185[_0x2ac7('0xda')]({'read':!![]});}else{logger[_0x2ac7('0x25')](_0x2ac7('0x24'),_0x2ac7('0x2a'),_0x2ac7('0x8f'),util['inspect'](_0x3e0f8b[_0x2ac7('0x57')],{'showHidden':![],'depth':null}));}break;case _0x2ac7('0x90'):if(_0x522d19===_0x2ac7('0xdf')||_0x522d19==='ACCEPTD'){return _0x39a185[_0x2ac7('0xda')]({'read':!![]});}else{logger[_0x2ac7('0x25')](_0x2ac7('0x24'),_0x2ac7('0x2a'),_0x2ac7('0x90'),util[_0x2ac7('0xd1')](_0x3e0f8b['body'],{'showHidden':![],'depth':null}));}break;}return _0x39a185;}})[_0x2ac7('0x20')](respondWithResult(_0x41bf43,null))['catch'](handleError(_0x41bf43,null));};exports['statusGet']=function(_0x21a830,_0x2ecdc2,_0x178af7){var _0x5a9013,_0x171ad8,_0x57a090;return db[_0x2ac7('0x4c')][_0x2ac7('0x55')]({'where':{'id':_0x21a830['params']['id']}})[_0x2ac7('0x20')](handleEntityNotFound(_0x2ecdc2,null))['then'](function(_0x3355e0){if(_0x3355e0){_0x57a090=_0x3355e0;logger[_0x2ac7('0xd0')](_0x2ac7('0x24'),_0x2ac7('0x2a'),_0x2ac7('0xe0'),_0x3355e0[_0x2ac7('0x3c')],util['inspect'](_0x21a830[_0x2ac7('0x3f')],{'showHidden':![],'depth':null}));switch(_0x3355e0[_0x2ac7('0x3c')]){case _0x2ac7('0x89'):if(_0x21a830[_0x2ac7('0x3f')][_0x2ac7('0xe1')]&&_0x21a830[_0x2ac7('0x3f')]['state']){_0x171ad8=_0x21a830[_0x2ac7('0x3f')][_0x2ac7('0xe2')];return db[_0x2ac7('0xa7')]['find']({'where':{'messageId':_0x21a830[_0x2ac7('0x3f')][_0x2ac7('0xe1')]}});}break;}}})['then'](handleEntityNotFound(_0x2ecdc2,null))[_0x2ac7('0x20')](function(_0x4e66b3){if(_0x4e66b3){_0x5a9013=_0x4e66b3;switch(_0x57a090[_0x2ac7('0x3c')]){case'csc':if(_0x171ad8==='2'||_0x171ad8==='6'){return _0x5a9013['update']({'read':!![]});}else{logger[_0x2ac7('0x25')](_0x2ac7('0x24'),_0x2ac7('0x2a'),'csc',util[_0x2ac7('0xd1')](_0x21a830[_0x2ac7('0x3f')],{'showHidden':![],'depth':null}));};break;}return _0x5a9013;}})[_0x2ac7('0x20')](respondWithResult(_0x2ecdc2,null))['catch'](handleError(_0x2ecdc2,null));};exports[_0x2ac7('0xe3')]=function(_0x34a40e,_0x3d304e,_0x46da1d){return db[_0x2ac7('0x4c')]['find']({'where':{'id':_0x34a40e[_0x2ac7('0x51')]['id']}})[_0x2ac7('0x20')](handleEntityNotFound(_0x3d304e,null))[_0x2ac7('0x20')](function(_0x56ba35){if(_0x56ba35){return _0x56ba35['addAgents'](_0x34a40e[_0x2ac7('0x57')][_0x2ac7('0x69')],_['omit'](_0x34a40e[_0x2ac7('0x57')],[_0x2ac7('0x69'),'id'])||{})[_0x2ac7('0xa0')](function(_0x235f05){for(var _0xd1e354=0x0;_0xd1e354<_0x34a40e[_0x2ac7('0x57')][_0x2ac7('0x69')][_0x2ac7('0x65')];_0xd1e354+=0x1){socket[_0x2ac7('0xe4')](_0x2ac7('0xe5'),{'UserId':Number(_0x34a40e[_0x2ac7('0x57')][_0x2ac7('0x69')][_0xd1e354]),'SmsAccountId':Number(_0x34a40e[_0x2ac7('0x51')]['id'])});}return _0x235f05;});}})[_0x2ac7('0x20')](respondWithResult(_0x3d304e,null))[_0x2ac7('0x29')](handleError(_0x3d304e,null));};exports[_0x2ac7('0xe6')]=function(_0x43b4c2,_0x4fa000,_0x4aa631){return db['SmsAccount'][_0x2ac7('0x55')]({'where':{'id':_0x43b4c2['params']['id']}})[_0x2ac7('0x20')](handleEntityNotFound(_0x4fa000,null))[_0x2ac7('0x20')](function(_0x10da14){if(_0x10da14){return _0x10da14[_0x2ac7('0xe6')](_0x43b4c2[_0x2ac7('0x3f')]['ids'])[_0x2ac7('0x20')](function(){if(_[_0x2ac7('0xe7')](_0x43b4c2['query']['ids'])){for(var _0x3fd2cc=0x0;_0x3fd2cc<_0x43b4c2[_0x2ac7('0x3f')][_0x2ac7('0x69')][_0x2ac7('0x65')];_0x3fd2cc+=0x1){socket['emit'](_0x2ac7('0xe8'),{'UserId':Number(_0x43b4c2[_0x2ac7('0x3f')][_0x2ac7('0x69')][_0x3fd2cc]),'SmsAccountId':Number(_0x43b4c2[_0x2ac7('0x51')]['id'])});}}else{socket[_0x2ac7('0xe4')](_0x2ac7('0xe8'),{'UserId':Number(_0x43b4c2[_0x2ac7('0x3f')]['ids']),'SmsAccountId':Number(_0x43b4c2['params']['id'])});}});}})['then'](respondWithStatusCode(_0x4fa000,null))[_0x2ac7('0x29')](handleError(_0x4fa000,null));};exports[_0x2ac7('0xe9')]=function(_0x528a41,_0x152b54,_0x268381){var _0x16126a={};var _0x3d7024={};var _0x33f018;var _0xf518f8;return db[_0x2ac7('0x4c')]['findOne']({'where':{'id':_0x528a41[_0x2ac7('0x51')]['id']}})[_0x2ac7('0x20')](handleEntityNotFound(_0x152b54,null))[_0x2ac7('0x20')](function(_0x2a2374){if(_0x2a2374){_0x33f018=_0x2a2374;_0x3d7024[_0x2ac7('0x3e')]=_[_0x2ac7('0x53')](db[_0x2ac7('0xaa')][_0x2ac7('0x3b')]);_0x3d7024[_0x2ac7('0x3f')]=_[_0x2ac7('0x53')](_0x528a41[_0x2ac7('0x3f')]);_0x3d7024[_0x2ac7('0x40')]=_[_0x2ac7('0x41')](_0x3d7024[_0x2ac7('0x3e')],_0x3d7024[_0x2ac7('0x3f')]);_0x16126a['attributes']=_[_0x2ac7('0x41')](_0x3d7024['model'],qs[_0x2ac7('0x42')](_0x528a41[_0x2ac7('0x3f')][_0x2ac7('0x42')]));_0x16126a[_0x2ac7('0x43')]=_0x16126a[_0x2ac7('0x43')][_0x2ac7('0x65')]?_0x16126a[_0x2ac7('0x43')]:_0x3d7024['model'];_0x16126a['order']=qs[_0x2ac7('0x46')](_0x528a41[_0x2ac7('0x3f')][_0x2ac7('0x46')]);_0x16126a[_0x2ac7('0x47')]=qs[_0x2ac7('0x40')](_[_0x2ac7('0x48')](_0x528a41[_0x2ac7('0x3f')],_0x3d7024[_0x2ac7('0x40')]));if(_0x528a41[_0x2ac7('0x3f')][_0x2ac7('0x49')]){_0x16126a['where']=_['merge'](_0x16126a['where'],{'$or':_[_0x2ac7('0x67')](_0x16126a['attributes'],function(_0x4817c2){var _0x46d089={};_0x46d089[_0x4817c2]={'$like':'%'+_0x528a41[_0x2ac7('0x3f')][_0x2ac7('0x49')]+'%'};return _0x46d089;})});}_0x16126a=_['merge']({},_0x16126a,_0x528a41[_0x2ac7('0x54')]);return _0x33f018[_0x2ac7('0xe9')](_0x16126a);}})['then'](function(_0x17b92e){if(_0x17b92e){_0xf518f8=_0x17b92e[_0x2ac7('0x65')];if(!_0x528a41[_0x2ac7('0x3f')][_0x2ac7('0xc2')]('nolimit')){_0x16126a[_0x2ac7('0x2c')]=qs[_0x2ac7('0x2c')](_0x528a41['query'][_0x2ac7('0x2c')]);_0x16126a[_0x2ac7('0x2f')]=qs[_0x2ac7('0x2f')](_0x528a41[_0x2ac7('0x3f')][_0x2ac7('0x2f')]);}return _0x33f018[_0x2ac7('0xe9')](_0x16126a);}})[_0x2ac7('0x20')](function(_0x73cefb){if(_0x73cefb){return _0x73cefb?{'count':_0xf518f8,'rows':_0x73cefb}:null;}})[_0x2ac7('0x20')](respondWithResult(_0x152b54,null))['catch'](handleError(_0x152b54,null));};
\ No newline at end of file
index ebf47d1..5e90077 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0x8317=['remove','emit','hook','exports','events','../../mysqldb','SmsAccount','setMaxListeners','update'];(function(_0xaa0309,_0x1c8008){var _0x5de7ce=function(_0x3aa6ae){while(--_0x3aa6ae){_0xaa0309['push'](_0xaa0309['shift']());}};_0x5de7ce(++_0x1c8008);}(_0x8317,0x12d));var _0x7831=function(_0x26515b,_0x1c51be){_0x26515b=_0x26515b-0x0;var _0x505982=_0x8317[_0x26515b];return _0x505982;};'use strict';var EventEmitter=require(_0x7831('0x0'));var SmsAccount=require(_0x7831('0x1'))['db'][_0x7831('0x2')];var SmsAccountEvents=new EventEmitter();SmsAccountEvents[_0x7831('0x3')](0x0);var events={'afterCreate':'save','afterUpdate':_0x7831('0x4'),'afterDestroy':_0x7831('0x5')};function emitEvent(_0x16cbb2){return function(_0x96e850,_0x3b6642,_0x3c87b8){SmsAccountEvents[_0x7831('0x6')](_0x16cbb2+':'+_0x96e850['id'],_0x96e850);SmsAccountEvents[_0x7831('0x6')](_0x16cbb2,_0x96e850);_0x3c87b8(null);};}for(var e in events){if(events['hasOwnProperty'](e)){var event=events[e];SmsAccount[_0x7831('0x7')](e,emitEvent(event));}}module[_0x7831('0x8')]=SmsAccountEvents;
\ No newline at end of file
index 3e3622b..a810c6a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0x48ec=['path','rimraf','./smsAccount.attributes','exports','define','sms_accounts','../../config/logger','bluebird','request-promise'];(function(_0xa148b7,_0x2f3eb2){var _0x51efd3=function(_0x34bcec){while(--_0x34bcec){_0xa148b7['push'](_0xa148b7['shift']());}};_0x51efd3(++_0x2f3eb2);}(_0x48ec,0x1da));var _0xc48e=function(_0x2d6c3a,_0x350a69){_0x2d6c3a=_0x2d6c3a-0x0;var _0x3e686=_0x48ec[_0x2d6c3a];return _0x3e686;};'use strict';var _=require('lodash');var util=require('util');var logger=require(_0xc48e('0x0'))('api');var moment=require('moment');var BPromise=require(_0xc48e('0x1'));var rp=require(_0xc48e('0x2'));var fs=require('fs');var path=require(_0xc48e('0x3'));var rimraf=require(_0xc48e('0x4'));var config=require('../../config/environment');var attributes=require(_0xc48e('0x5'));module[_0xc48e('0x6')]=function(_0x154fa2,_0x1a3433){return _0x154fa2[_0xc48e('0x7')]('SmsAccount',attributes,{'tableName':_0xc48e('0x8'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index fe6599d..9aa93a9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0x0e66=['register','request','then','info','SmsAccount,\x20%s,\x20%s','request\x20sent','SmsAccount,\x20%s,\x20%s,\x20%s','stringify','error','message','result','catch','ShowSmsAccount','find','raw','options','attributes','include','model','lodash','moment','bluebird','ioredis','../../config/utils','../../config/environment','client','http','defaults','redis','localhost','./smsAccount.socket'];(function(_0x45e505,_0x1bf5b3){var _0x52001f=function(_0x12114b){while(--_0x12114b){_0x45e505['push'](_0x45e505['shift']());}};_0x52001f(++_0x1bf5b3);}(_0x0e66,0x12a));var _0x60e6=function(_0x244862,_0x3da79e){_0x244862=_0x244862-0x0;var _0x2bce23=_0x0e66[_0x244862];return _0x2bce23;};'use strict';var _=require(_0x60e6('0x0'));var util=require('util');var moment=require(_0x60e6('0x1'));var BPromise=require(_0x60e6('0x2'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x60e6('0x3'));var db=require('../../mysqldb')['db'];var utils=require(_0x60e6('0x4'));var logger=require('../../config/logger')('rpc');var config=require(_0x60e6('0x5'));var jayson=require('jayson/promise');var client=jayson[_0x60e6('0x6')][_0x60e6('0x7')]({'port':0x232a});config['redis']=_[_0x60e6('0x8')](config[_0x60e6('0x9')],{'host':_0x60e6('0xa'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0x60e6('0x9')]));require(_0x60e6('0xb'))[_0x60e6('0xc')](socket);function respondWithRpcPromise(_0x5f25e1,_0x631659,_0x13a55b){return new BPromise(function(_0x217f72,_0x49e9c7){return client[_0x60e6('0xd')](_0x5f25e1,_0x13a55b)[_0x60e6('0xe')](function(_0x454b09){logger[_0x60e6('0xf')](_0x60e6('0x10'),_0x631659,_0x60e6('0x11'));logger['debug'](_0x60e6('0x12'),_0x631659,_0x60e6('0x11'),JSON[_0x60e6('0x13')](_0x454b09));if(_0x454b09[_0x60e6('0x14')]){if(_0x454b09[_0x60e6('0x14')]['code']===0x1f4){logger[_0x60e6('0x14')](_0x60e6('0x10'),_0x631659,_0x454b09['error']['message']);return _0x49e9c7(_0x454b09[_0x60e6('0x14')][_0x60e6('0x15')]);}logger[_0x60e6('0x14')](_0x60e6('0x10'),_0x631659,_0x454b09[_0x60e6('0x14')][_0x60e6('0x15')]);return _0x217f72(_0x454b09[_0x60e6('0x14')][_0x60e6('0x15')]);}else{logger[_0x60e6('0xf')](_0x60e6('0x10'),_0x631659,_0x60e6('0x11'));_0x217f72(_0x454b09[_0x60e6('0x16')][_0x60e6('0x15')]);}})[_0x60e6('0x17')](function(_0x3180d6){logger['error']('SmsAccount,\x20%s,\x20%s',_0x631659,_0x3180d6);_0x49e9c7(_0x3180d6);});});}exports[_0x60e6('0x18')]=function(_0x5e8489){var _0x5c9d02=this;return new Promise(function(_0x519d10,_0x42b951){return db['SmsAccount'][_0x60e6('0x19')]({'raw':_0x5e8489['options']?_0x5e8489['options'][_0x60e6('0x1a')]===undefined?!![]:![]:!![],'where':_0x5e8489['options']?_0x5e8489[_0x60e6('0x1b')]['where']||null:null,'attributes':_0x5e8489[_0x60e6('0x1b')]?_0x5e8489[_0x60e6('0x1b')][_0x60e6('0x1c')]||null:null,'include':_0x5e8489[_0x60e6('0x1b')]?_0x5e8489['options'][_0x60e6('0x1d')]?_['map'](_0x5e8489[_0x60e6('0x1b')][_0x60e6('0x1d')],function(_0x1ce2ad){return{'model':db[_0x1ce2ad[_0x60e6('0x1e')]],'as':_0x1ce2ad['as'],'attributes':_0x1ce2ad['attributes'],'include':_0x1ce2ad[_0x60e6('0x1d')]?_['map'](_0x1ce2ad[_0x60e6('0x1d')],function(_0x18efb8){return{'model':db[_0x18efb8[_0x60e6('0x1e')]],'as':_0x18efb8['as'],'attributes':_0x18efb8[_0x60e6('0x1c')],'include':_0x18efb8[_0x60e6('0x1d')]?_['map'](_0x18efb8[_0x60e6('0x1d')],function(_0x5ad34c){return{'model':db[_0x5ad34c[_0x60e6('0x1e')]],'as':_0x5ad34c['as'],'attributes':_0x5ad34c[_0x60e6('0x1c')]};}):[]};}):[]};}):[]:[]})[_0x60e6('0xe')](function(_0x5722d6){logger[_0x60e6('0xf')](_0x60e6('0x18'),_0x5e8489);logger['debug'](_0x60e6('0x18'),_0x5e8489,JSON[_0x60e6('0x13')](_0x5722d6));_0x519d10(_0x5722d6);})[_0x60e6('0x17')](function(_0x105c13){logger[_0x60e6('0x14')](_0x60e6('0x18'),_0x105c13[_0x60e6('0x15')],_0x5e8489);_0x42b951(_0x5c9d02[_0x60e6('0x14')](0x1f4,_0x105c13[_0x60e6('0x15')]));});});};
\ No newline at end of file
index a62b583..9d49f00 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa9e0=['register','length','smsAccount:','./smsAccount.events','save','remove','emit','removeListener'];(function(_0x122ef9,_0x451d2a){var _0x42fba0=function(_0x17c9d3){while(--_0x17c9d3){_0x122ef9['push'](_0x122ef9['shift']());}};_0x42fba0(++_0x451d2a);}(_0xa9e0,0x123));var _0x0a9e=function(_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
+var _0xa9e0=['register','length','smsAccount:','./smsAccount.events','save','remove','emit','removeListener'];(function(_0x4a9fb1,_0x273043){var _0x348672=function(_0x142b69){while(--_0x142b69){_0x4a9fb1['push'](_0x4a9fb1['shift']());}};_0x348672(++_0x273043);}(_0xa9e0,0x123));var _0x0a9e=function(_0x24237f,_0x4cf32c){_0x24237f=_0x24237f-0x0;var _0x48298e=_0xa9e0[_0x24237f];return _0x48298e;};'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 8337108..6fb5f3d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0x55ca=['update','delete','/:id','destroy','exports','multer','util','Router','fs-extra','../../components/interaction/service','../../config/environment','./smsApplication.controller','get','isAuthenticated','index','show','create'];(function(_0x4d14bb,_0x1a4b13){var _0x4a85ea=function(_0x352e4d){while(--_0x352e4d){_0x4d14bb['push'](_0x4d14bb['shift']());}};_0x4a85ea(++_0x1a4b13);}(_0x55ca,0x126));var _0xa55c=function(_0x3c6125,_0x3b2a9c){_0x3c6125=_0x3c6125-0x0;var _0x2f47b8=_0x55ca[_0x3c6125];return _0x2f47b8;};'use strict';var multer=require(_0xa55c('0x0'));var util=require(_0xa55c('0x1'));var path=require('path');var timeout=require('connect-timeout');var express=require('express');var router=express[_0xa55c('0x2')]();var fs_extra=require(_0xa55c('0x3'));var auth=require('../../components/auth/service');var interaction=require(_0xa55c('0x4'));var config=require(_0xa55c('0x5'));var controller=require(_0xa55c('0x6'));router[_0xa55c('0x7')]('/',auth[_0xa55c('0x8')](),controller[_0xa55c('0x9')]);router[_0xa55c('0x7')]('/:id',auth[_0xa55c('0x8')](),controller[_0xa55c('0xa')]);router['post']('/',auth[_0xa55c('0x8')](),controller[_0xa55c('0xb')]);router['put']('/:id',auth[_0xa55c('0x8')](),controller[_0xa55c('0xc')]);router[_0xa55c('0xd')](_0xa55c('0xe'),auth[_0xa55c('0x8')](),controller[_0xa55c('0xf')]);module[_0xa55c('0x10')]=router;
\ No newline at end of file
index 79c056a..f8b0e37 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0xada2=['STRING','*,*,*,*','sequelize','INTEGER','noop','TEXT'];(function(_0x2f5e76,_0x124be9){var _0x4e198a=function(_0x2b046b){while(--_0x2b046b){_0x2f5e76['push'](_0x2f5e76['shift']());}};_0x4e198a(++_0x124be9);}(_0xada2,0xc2));var _0x2ada=function(_0x37344d,_0x239f6c){_0x37344d=_0x37344d-0x0;var _0x32fd1d=_0xada2[_0x37344d];return _0x32fd1d;};'use strict';var Sequelize=require(_0x2ada('0x0'));module['exports']={'priority':{'type':Sequelize[_0x2ada('0x1')],'allowNull':![]},'app':{'type':Sequelize['STRING'],'allowNull':![],'defaultValue':_0x2ada('0x2')},'appdata':{'type':Sequelize[_0x2ada('0x3')]()},'description':{'type':Sequelize[_0x2ada('0x4')]},'interval':{'type':Sequelize[_0x2ada('0x4')],'defaultValue':_0x2ada('0x5')}};
\ No newline at end of file
index 2d4fd51..2883c3a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0xac8b=['jsforce','querystring','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','api','../../config/utils','../../config/environment','../../config/license/util','sendStatus','status','json','offset','undefined','limit','count','set','Content-Range','apply','reject','update','then','end','stack','name','send','SmsApplication','rawAttributes','fieldName','type','model','map','query','keys','filters','intersection','attributes','fields','length','nolimit','sort','where','merge','filter','includeAll','include','findAll','rows','catch','show','options','create','body','find','params','destroy','rimraf','zip-dir','request-promise','moment','bluebird','mustache','util','path','to-csv','squel','crypto'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0xac8b,0x18d));var _0xbac8=function(_0x1d24eb,_0x12295b){_0x1d24eb=_0x1d24eb-0x0;var _0x1dc576=_0xac8b[_0x1d24eb];return _0x1dc576;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0xbac8('0x0'));var zipdir=require(_0xbac8('0x1'));var jsonpatch=require('fast-json-patch');var rp=require(_0xbac8('0x2'));var moment=require(_0xbac8('0x3'));var BPromise=require(_0xbac8('0x4'));var Mustache=require(_0xbac8('0x5'));var util=require(_0xbac8('0x6'));var path=require(_0xbac8('0x7'));var sox=require('sox');var csv=require(_0xbac8('0x8'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require('fs-extra');var _=require('lodash');var squel=require(_0xbac8('0x9'));var crypto=require(_0xbac8('0xa'));var jsforce=require(_0xbac8('0xb'));var deskjs=require('desk.js');var toCsv=require(_0xbac8('0x8'));var querystring=require(_0xbac8('0xc'));var Papa=require('papaparse');var Redis=require(_0xbac8('0xd'));var authService=require(_0xbac8('0xe'));var qs=require(_0xbac8('0xf'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0xbac8('0x10'));var logger=require('../../config/logger')(_0xbac8('0x11'));var utils=require(_0xbac8('0x12'));var config=require(_0xbac8('0x13'));var licenseUtil=require(_0xbac8('0x14'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x4a4dcb,_0x53e18e){_0x53e18e=_0x53e18e||0xcc;return function(_0x1dac13){if(_0x1dac13){return _0x4a4dcb[_0xbac8('0x15')](_0x53e18e);}return _0x4a4dcb[_0xbac8('0x16')](_0x53e18e)['end']();};}function respondWithResult(_0x2a8a5e,_0x71ebbf){_0x71ebbf=_0x71ebbf||0xc8;return function(_0x33fc8f){if(_0x33fc8f){return _0x2a8a5e[_0xbac8('0x16')](_0x71ebbf)[_0xbac8('0x17')](_0x33fc8f);}};}function respondWithFilteredResult(_0x484283,_0x1f9631){return function(_0x4be826){if(_0x4be826){var _0x13a290=typeof _0x1f9631[_0xbac8('0x18')]===_0xbac8('0x19')&&typeof _0x1f9631[_0xbac8('0x1a')]===_0xbac8('0x19');var _0x4720ef=_0x4be826[_0xbac8('0x1b')];var _0xffc9a3=_0x13a290?0x0:_0x1f9631['offset'];var _0x2b45c3=_0x13a290?_0x4be826[_0xbac8('0x1b')]:_0x1f9631['offset']+_0x1f9631[_0xbac8('0x1a')];var _0x456740;if(_0x2b45c3>=_0x4720ef){_0x2b45c3=_0x4720ef;_0x456740=0xc8;}else{_0x456740=0xce;}_0x484283[_0xbac8('0x16')](_0x456740);return _0x484283[_0xbac8('0x1c')](_0xbac8('0x1d'),_0xffc9a3+'-'+_0x2b45c3+'/'+_0x4720ef)[_0xbac8('0x17')](_0x4be826);}return null;};}function patchUpdates(_0x4d2fdf){return function(_0x1b6e6b){try{jsonpatch[_0xbac8('0x1e')](_0x1b6e6b,_0x4d2fdf,!![]);}catch(_0x218ada){return BPromise[_0xbac8('0x1f')](_0x218ada);}return _0x1b6e6b['save']();};}function saveUpdates(_0x13bb38,_0x197f6e){return function(_0x42628d){if(_0x42628d){return _0x42628d[_0xbac8('0x20')](_0x13bb38)[_0xbac8('0x21')](function(_0xc81ef4){return _0xc81ef4;});}return null;};}function removeEntity(_0x10cb76,_0xb7b347){return function(_0x4ff871){if(_0x4ff871){return _0x4ff871['destroy']()['then'](function(){_0x10cb76[_0xbac8('0x16')](0xcc)[_0xbac8('0x22')]();});}};}function handleEntityNotFound(_0x3b7b98,_0x2a3078){return function(_0x1f379a){if(!_0x1f379a){_0x3b7b98[_0xbac8('0x15')](0x194);}return _0x1f379a;};}function handleError(_0x31202a,_0x1a2064){_0x1a2064=_0x1a2064||0x1f4;return function(_0x1dd51b){logger['error'](_0x1dd51b[_0xbac8('0x23')]);if(_0x1dd51b[_0xbac8('0x24')]){delete _0x1dd51b[_0xbac8('0x24')];}_0x31202a[_0xbac8('0x16')](_0x1a2064)[_0xbac8('0x25')](_0x1dd51b);};}exports['index']=function(_0x4b839e,_0x37787a){var _0x14db48={},_0x2546ee={},_0x241866={'count':0x0,'rows':[]};var _0x51360c=_['map'](db[_0xbac8('0x26')][_0xbac8('0x27')],function(_0x165b7b){return{'name':_0x165b7b[_0xbac8('0x28')],'type':_0x165b7b[_0xbac8('0x29')]['key']};});_0x2546ee[_0xbac8('0x2a')]=_[_0xbac8('0x2b')](_0x51360c,'name');_0x2546ee[_0xbac8('0x2c')]=_[_0xbac8('0x2d')](_0x4b839e[_0xbac8('0x2c')]);_0x2546ee[_0xbac8('0x2e')]=_[_0xbac8('0x2f')](_0x2546ee[_0xbac8('0x2a')],_0x2546ee[_0xbac8('0x2c')]);_0x14db48[_0xbac8('0x30')]=_['intersection'](_0x2546ee[_0xbac8('0x2a')],qs[_0xbac8('0x31')](_0x4b839e[_0xbac8('0x2c')][_0xbac8('0x31')]));_0x14db48['attributes']=_0x14db48[_0xbac8('0x30')][_0xbac8('0x32')]?_0x14db48[_0xbac8('0x30')]:_0x2546ee[_0xbac8('0x2a')];if(!_0x4b839e[_0xbac8('0x2c')]['hasOwnProperty'](_0xbac8('0x33'))){_0x14db48[_0xbac8('0x1a')]=qs[_0xbac8('0x1a')](_0x4b839e[_0xbac8('0x2c')][_0xbac8('0x1a')]);_0x14db48[_0xbac8('0x18')]=qs['offset'](_0x4b839e[_0xbac8('0x2c')][_0xbac8('0x18')]);}_0x14db48['order']=qs['sort'](_0x4b839e[_0xbac8('0x2c')][_0xbac8('0x34')]);_0x14db48['where']=qs[_0xbac8('0x2e')](_['pick'](_0x4b839e[_0xbac8('0x2c')],_0x2546ee['filters']),_0x51360c);if(_0x4b839e[_0xbac8('0x2c')]['filter']){_0x14db48[_0xbac8('0x35')]=_[_0xbac8('0x36')](_0x14db48['where'],{'$or':_[_0xbac8('0x2b')](_0x51360c,function(_0x583d84){if(_0x583d84[_0xbac8('0x29')]!=='VIRTUAL'){var _0x232b31={};_0x232b31[_0x583d84[_0xbac8('0x24')]]={'$like':'%'+_0x4b839e[_0xbac8('0x2c')][_0xbac8('0x37')]+'%'};return _0x232b31;}})});}_0x14db48=_[_0xbac8('0x36')]({},_0x14db48,_0x4b839e['options']);var _0x1e02ff={'where':_0x14db48[_0xbac8('0x35')]};return db['SmsApplication'][_0xbac8('0x1b')](_0x1e02ff)['then'](function(_0x3636bf){_0x241866['count']=_0x3636bf;if(_0x4b839e[_0xbac8('0x2c')][_0xbac8('0x38')]){_0x14db48[_0xbac8('0x39')]=[{'all':!![]}];}return db[_0xbac8('0x26')][_0xbac8('0x3a')](_0x14db48);})[_0xbac8('0x21')](function(_0x4437a8){_0x241866[_0xbac8('0x3b')]=_0x4437a8;return _0x241866;})[_0xbac8('0x21')](respondWithFilteredResult(_0x37787a,_0x14db48))[_0xbac8('0x3c')](handleError(_0x37787a,null));};exports[_0xbac8('0x3d')]=function(_0x30266f,_0x198721){var _0x192295={'raw':!![],'where':{'id':_0x30266f['params']['id']}},_0x330c0c={};_0x330c0c['model']=_[_0xbac8('0x2d')](db['SmsApplication'][_0xbac8('0x27')]);_0x330c0c[_0xbac8('0x2c')]=_['keys'](_0x30266f[_0xbac8('0x2c')]);_0x330c0c[_0xbac8('0x2e')]=_[_0xbac8('0x2f')](_0x330c0c[_0xbac8('0x2a')],_0x330c0c[_0xbac8('0x2c')]);_0x192295[_0xbac8('0x30')]=_[_0xbac8('0x2f')](_0x330c0c[_0xbac8('0x2a')],qs[_0xbac8('0x31')](_0x30266f['query'][_0xbac8('0x31')]));_0x192295[_0xbac8('0x30')]=_0x192295[_0xbac8('0x30')]['length']?_0x192295[_0xbac8('0x30')]:_0x330c0c[_0xbac8('0x2a')];if(_0x30266f[_0xbac8('0x2c')][_0xbac8('0x38')]){_0x192295[_0xbac8('0x39')]=[{'all':!![]}];}_0x192295=_[_0xbac8('0x36')]({},_0x192295,_0x30266f[_0xbac8('0x3e')]);return db['SmsApplication']['find'](_0x192295)[_0xbac8('0x21')](handleEntityNotFound(_0x198721,null))['then'](respondWithResult(_0x198721,null))[_0xbac8('0x3c')](handleError(_0x198721,null));};exports[_0xbac8('0x3f')]=function(_0x3a46d1,_0x3713db){return db[_0xbac8('0x26')][_0xbac8('0x3f')](_0x3a46d1[_0xbac8('0x40')],{})[_0xbac8('0x21')](respondWithResult(_0x3713db,0xc9))[_0xbac8('0x3c')](handleError(_0x3713db,null));};exports['update']=function(_0x4a3ce8,_0x18ebef){if(_0x4a3ce8[_0xbac8('0x40')]['id']){delete _0x4a3ce8[_0xbac8('0x40')]['id'];}return db['SmsApplication'][_0xbac8('0x41')]({'where':{'id':_0x4a3ce8[_0xbac8('0x42')]['id']}})['then'](handleEntityNotFound(_0x18ebef,null))[_0xbac8('0x21')](saveUpdates(_0x4a3ce8[_0xbac8('0x40')],null))['then'](respondWithResult(_0x18ebef,null))['catch'](handleError(_0x18ebef,null));};exports[_0xbac8('0x43')]=function(_0x856056,_0x39e166){return db[_0xbac8('0x26')][_0xbac8('0x41')]({'where':{'id':_0x856056[_0xbac8('0x42')]['id']}})[_0xbac8('0x21')](handleEntityNotFound(_0x39e166,null))[_0xbac8('0x21')](removeEntity(_0x39e166,null))[_0xbac8('0x3c')](handleError(_0x39e166,null));};
\ No newline at end of file
index 28002da..2f7f0ee 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0xd10b=['rimraf','./smsApplication.attributes','exports','define','SmsApplication','sms_applications','utf8mb4','utf8mb4_unicode_ci','lodash','util','../../config/logger','api','moment','bluebird','request-promise','path'];(function(_0x36bff5,_0x3156cb){var _0x80ade5=function(_0x5eee65){while(--_0x5eee65){_0x36bff5['push'](_0x36bff5['shift']());}};_0x80ade5(++_0x3156cb);}(_0xd10b,0xf8));var _0xbd10=function(_0x3a1489,_0x5b325f){_0x3a1489=_0x3a1489-0x0;var _0x10decd=_0xd10b[_0x3a1489];return _0x10decd;};'use strict';var _=require(_0xbd10('0x0'));var util=require(_0xbd10('0x1'));var logger=require(_0xbd10('0x2'))(_0xbd10('0x3'));var moment=require(_0xbd10('0x4'));var BPromise=require(_0xbd10('0x5'));var rp=require(_0xbd10('0x6'));var fs=require('fs');var path=require(_0xbd10('0x7'));var rimraf=require(_0xbd10('0x8'));var config=require('../../config/environment');var attributes=require(_0xbd10('0x9'));module[_0xbd10('0xa')]=function(_0x12e5bd,_0x3e2ac8){return _0x12e5bd[_0xbd10('0xb')](_0xbd10('0xc'),attributes,{'tableName':_0xbd10('0xd'),'paranoid':![],'indexes':[],'timestamps':!![],'charset':_0xbd10('0xe'),'collate':_0xbd10('0xf')});};
\ No newline at end of file
index d9fc53a..269ab64 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0xe797=['util','moment','bluebird','randomstring','ioredis','../../config/utils','../../config/logger','../../config/environment','jayson/promise','client','request','then','SmsApplication,\x20%s,\x20%s','request\x20sent','debug','SmsApplication,\x20%s,\x20%s,\x20%s','stringify','error','code','message','info','result','lodash'];(function(_0x39096d,_0x51f8a0){var _0x13da4f=function(_0x11e6b2){while(--_0x11e6b2){_0x39096d['push'](_0x39096d['shift']());}};_0x13da4f(++_0x51f8a0);}(_0xe797,0x12a));var _0x7e79=function(_0x1d1227,_0x5bfecf){_0x1d1227=_0x1d1227-0x0;var _0x3d2ee8=_0xe797[_0x1d1227];return _0x3d2ee8;};'use strict';var _=require(_0x7e79('0x0'));var util=require(_0x7e79('0x1'));var moment=require(_0x7e79('0x2'));var BPromise=require(_0x7e79('0x3'));var rs=require(_0x7e79('0x4'));var fs=require('fs');var Redis=require(_0x7e79('0x5'));var db=require('../../mysqldb')['db'];var utils=require(_0x7e79('0x6'));var logger=require(_0x7e79('0x7'))('rpc');var config=require(_0x7e79('0x8'));var jayson=require(_0x7e79('0x9'));var client=jayson[_0x7e79('0xa')]['http']({'port':0x232a});function respondWithRpcPromise(_0x4fdfa1,_0x9dd35a,_0x358bd6){return new BPromise(function(_0x484e66,_0x54aab5){return client[_0x7e79('0xb')](_0x4fdfa1,_0x358bd6)[_0x7e79('0xc')](function(_0x134e89){logger['info'](_0x7e79('0xd'),_0x9dd35a,_0x7e79('0xe'));logger[_0x7e79('0xf')](_0x7e79('0x10'),_0x9dd35a,_0x7e79('0xe'),JSON[_0x7e79('0x11')](_0x134e89));if(_0x134e89[_0x7e79('0x12')]){if(_0x134e89[_0x7e79('0x12')][_0x7e79('0x13')]===0x1f4){logger['error'](_0x7e79('0xd'),_0x9dd35a,_0x134e89['error'][_0x7e79('0x14')]);return _0x54aab5(_0x134e89['error'][_0x7e79('0x14')]);}logger[_0x7e79('0x12')](_0x7e79('0xd'),_0x9dd35a,_0x134e89[_0x7e79('0x12')]['message']);return _0x484e66(_0x134e89[_0x7e79('0x12')][_0x7e79('0x14')]);}else{logger[_0x7e79('0x15')](_0x7e79('0xd'),_0x9dd35a,_0x7e79('0xe'));_0x484e66(_0x134e89[_0x7e79('0x16')][_0x7e79('0x14')]);}})['catch'](function(_0x2ec0c7){logger[_0x7e79('0x12')](_0x7e79('0xd'),_0x9dd35a,_0x2ec0c7);_0x54aab5(_0x2ec0c7);});});}
\ No newline at end of file
index 67e35a8..48a44a7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0x5c00=['smsinteraction:addtags','addTags','/:id','smsinteraction:update','update','delete','smsinteraction:destroy','destroy','removeTags','exports','multer','util','path','express','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','get','isAuthenticated','index','describe','show','/:id/messages','getMessages','post','create','addMessage','/:id/tags','tracked','sms'];(function(_0x17d9e3,_0x1f969c){var _0x14192d=function(_0x159745){while(--_0x159745){_0x17d9e3['push'](_0x17d9e3['shift']());}};_0x14192d(++_0x1f969c);}(_0x5c00,0x17e));var _0x05c0=function(_0x5b142f,_0x10815a){_0x5b142f=_0x5b142f-0x0;var _0x327bbd=_0x5c00[_0x5b142f];return _0x327bbd;};'use strict';var multer=require(_0x05c0('0x0'));var util=require(_0x05c0('0x1'));var path=require(_0x05c0('0x2'));var timeout=require('connect-timeout');var express=require(_0x05c0('0x3'));var router=express['Router']();var fs_extra=require(_0x05c0('0x4'));var auth=require(_0x05c0('0x5'));var interaction=require(_0x05c0('0x6'));var config=require(_0x05c0('0x7'));var controller=require('./smsInteraction.controller');router[_0x05c0('0x8')]('/',auth[_0x05c0('0x9')](),controller[_0x05c0('0xa')]);router[_0x05c0('0x8')]('/describe',auth[_0x05c0('0x9')](),controller[_0x05c0('0xb')]);router[_0x05c0('0x8')]('/:id',auth[_0x05c0('0x9')](),controller[_0x05c0('0xc')]);router[_0x05c0('0x8')](_0x05c0('0xd'),auth[_0x05c0('0x9')](),controller[_0x05c0('0xe')]);router['get']('/:id/download',auth[_0x05c0('0x9')](),controller['download']);router[_0x05c0('0xf')]('/',auth[_0x05c0('0x9')](),controller[_0x05c0('0x10')]);router['post'](_0x05c0('0xd'),auth['isAuthenticated'](),controller[_0x05c0('0x11')]);router[_0x05c0('0xf')](_0x05c0('0x12'),auth[_0x05c0('0x9')](),interaction[_0x05c0('0x13')](_0x05c0('0x14'),_0x05c0('0x15')),controller[_0x05c0('0x16')]);router['put'](_0x05c0('0x17'),auth[_0x05c0('0x9')](),interaction[_0x05c0('0x13')](_0x05c0('0x14'),_0x05c0('0x18')),controller[_0x05c0('0x19')]);router[_0x05c0('0x1a')](_0x05c0('0x17'),auth[_0x05c0('0x9')](),interaction['tracked'](_0x05c0('0x14'),_0x05c0('0x1b')),controller[_0x05c0('0x1c')]);router['delete'](_0x05c0('0x12'),auth[_0x05c0('0x9')](),controller[_0x05c0('0x1d')]);module[_0x05c0('0x1e')]=router;
\ No newline at end of file
index a6c26d8..4c76e31 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0x2428=['out','moment','exports','BOOLEAN','DATE','STRING','ENUM'];(function(_0x2ed88f,_0x5bc5ae){var _0x17ca96=function(_0x2be0dc){while(--_0x2be0dc){_0x2ed88f['push'](_0x2ed88f['shift']());}};_0x17ca96(++_0x5bc5ae);}(_0x2428,0xd3));var _0x8242=function(_0x501633,_0x54670d){_0x501633=_0x501633-0x0;var _0x15df56=_0x2428[_0x501633];return _0x15df56;};'use strict';var Sequelize=require('sequelize');var moment=require(_0x8242('0x0'));module[_0x8242('0x1')]={'closed':{'type':Sequelize[_0x8242('0x2')],'defaultValue':![]},'closedAt':{'type':Sequelize[_0x8242('0x3')]},'disposition':{'type':Sequelize[_0x8242('0x4')]},'secondDisposition':{'type':Sequelize[_0x8242('0x4')]},'thirdDisposition':{'type':Sequelize[_0x8242('0x4')]},'note':{'type':Sequelize[_0x8242('0x4')]},'phone':{'type':Sequelize[_0x8242('0x4')]},'read1stAt':{'type':Sequelize[_0x8242('0x3')]},'firstMsgDirection':{'type':Sequelize[_0x8242('0x5')]('in','out'),'defaultValue':'in','allowNull':![]},'lastMsgAt':{'type':Sequelize[_0x8242('0x3')]},'lastMsgDirection':{'type':Sequelize[_0x8242('0x5')]('in',_0x8242('0x6')),'defaultValue':'in','allowNull':![]},'autoreplyExecuted':{'type':Sequelize[_0x8242('0x2')],'defaultValue':![]}};
\ No newline at end of file
index 63f4382..ce40446 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0x143e=['socket.io-emitter','redis','register','sendStatus','status','end','json','undefined','limit','offset','count','set','Content-Range','update','then','destroy','error','stack','send','index','map','SmsInteraction','fieldName','type','key','getOptions','findAll','query','user','catch','show','keys','rawAttributes','intersection','model','fields','length','attributes','includeAll','include','create','body','find','params','describe','addMessage','SmsMessage','ids','omit','findOne','filters','order','sort','where','SmsInteractionId','merge','$gte','split','YYYY-MM-DD\x20HH:mm:ss','options','setTags','Tag','name','smsInteractionTags:save','removeTags','download','unix','toString','root','server','files','tmp','transcript-%d-%s.zip','join','push','User','CmContact','Contact','firstName','lastName','Messages','direction','secret','read','SmsAccount','Owner','fullname','mkdirSync','Account','N.A.','createdAt','format','closed','closedAt','disposition','filter','out','System','value','views','downloadInteraction.ejs','createPdfFromHTML','log','err','unlinkSync','rimraf','zip-dir','bluebird','util','path','ejs','lodash','../../components/interaction/service','../../components/parsers/qs','../../components/export/pdf','api','../../mysqldb','localhost'];(function(_0x4f7d25,_0x3f1883){var _0x508de2=function(_0x398f59){while(--_0x398f59){_0x4f7d25['push'](_0x4f7d25['shift']());}};_0x508de2(++_0x3f1883);}(_0x143e,0xdf));var _0xe143=function(_0xe3626f,_0x43cf94){_0xe3626f=_0xe3626f-0x0;var _0x399787=_0x143e[_0xe3626f];return _0x399787;};'use strict';var rimraf=require(_0xe143('0x0'));var zipdir=require(_0xe143('0x1'));var moment=require('moment');var BPromise=require(_0xe143('0x2'));var util=require(_0xe143('0x3'));var path=require(_0xe143('0x4'));var ejs=require(_0xe143('0x5'));var fs=require('fs');var _=require(_0xe143('0x6'));var Redis=require('ioredis');var interaction=require(_0xe143('0x7'));var qs=require(_0xe143('0x8'));var pdf=require(_0xe143('0x9'));var logger=require('../../config/logger')(_0xe143('0xa'));var config=require('../../config/environment');var db=require(_0xe143('0xb'))['db'];config['redis']=_['defaults'](config['redis'],{'host':_0xe143('0xc'),'port':0x18eb});var socket=require(_0xe143('0xd'))(new Redis(config[_0xe143('0xe')]));require('./smsInteraction.socket')[_0xe143('0xf')](socket);function respondWithStatusCode(_0x26d2a1,_0x477126){_0x477126=_0x477126||0xcc;return function(_0x5bb4fb){if(_0x5bb4fb){return _0x26d2a1[_0xe143('0x10')](_0x477126);}return _0x26d2a1[_0xe143('0x11')](_0x477126)[_0xe143('0x12')]();};}function respondWithResult(_0x1a9c16,_0x4d83de){_0x4d83de=_0x4d83de||0xc8;return function(_0x325aeb){if(_0x325aeb){return _0x1a9c16[_0xe143('0x11')](_0x4d83de)[_0xe143('0x13')](_0x325aeb);}};}function respondWithFilteredResult(_0x4c7427,_0x52e06f){return function(_0x461ab0){if(_0x461ab0){var _0x5ed875=typeof _0x52e06f['offset']===_0xe143('0x14')&&typeof _0x52e06f[_0xe143('0x15')]==='undefined';var _0x4bf241=_0x461ab0['count'];var _0x167d3b=_0x5ed875?0x0:_0x52e06f[_0xe143('0x16')];var _0xd3d58a=_0x5ed875?_0x461ab0[_0xe143('0x17')]:_0x52e06f[_0xe143('0x16')]+_0x52e06f[_0xe143('0x15')];var _0x4926fe;if(_0xd3d58a>=_0x4bf241){_0xd3d58a=_0x4bf241;_0x4926fe=0xc8;}else{_0x4926fe=0xce;}_0x4c7427[_0xe143('0x11')](_0x4926fe);return _0x4c7427[_0xe143('0x18')](_0xe143('0x19'),_0x167d3b+'-'+_0xd3d58a+'/'+_0x4bf241)[_0xe143('0x13')](_0x461ab0);}return null;};}function saveUpdates(_0x55db7f){return function(_0x1e636a){if(_0x1e636a){return _0x1e636a[_0xe143('0x1a')](_0x55db7f)[_0xe143('0x1b')](function(_0x4525db){return _0x4525db;});}return null;};}function removeEntity(_0x1a747a){return function(_0x4a4b61){if(_0x4a4b61){return _0x4a4b61[_0xe143('0x1c')]()['then'](function(){_0x1a747a[_0xe143('0x11')](0xcc)[_0xe143('0x12')]();});}};}function handleEntityNotFound(_0x345cb8){return function(_0x405bb3){if(!_0x405bb3){_0x345cb8[_0xe143('0x10')](0x194);}return _0x405bb3;};}function handleError(_0x53071b,_0x1741c3){_0x1741c3=_0x1741c3||0x1f4;return function(_0x1062b9){logger[_0xe143('0x1d')](_0x1062b9[_0xe143('0x1e')]);if(_0x1062b9['name']){delete _0x1062b9['name'];}_0x53071b[_0xe143('0x11')](_0x1741c3)[_0xe143('0x1f')](_0x1062b9);};}exports[_0xe143('0x20')]=function(_0x2fdff9,_0x1f2ce5){var _0x11dfb6={};var _0x44e05c=_[_0xe143('0x21')](db[_0xe143('0x22')]['rawAttributes'],function(_0x8c171f){return{'name':_0x8c171f[_0xe143('0x23')],'type':_0x8c171f[_0xe143('0x24')][_0xe143('0x25')]};});_0x11dfb6=qs[_0xe143('0x26')](_0x44e05c,_0x2fdff9);return interaction[_0xe143('0x27')]('sms',_0x2fdff9[_0xe143('0x28')],_0x2fdff9[_0xe143('0x29')],_0x11dfb6,_0x44e05c)[_0xe143('0x1b')](respondWithFilteredResult(_0x1f2ce5,_0x11dfb6))[_0xe143('0x2a')](handleError(_0x1f2ce5,null));};exports[_0xe143('0x2b')]=function(_0x1fffef,_0x499cbd){var _0x4c67d5={'raw':![],'where':{'id':_0x1fffef['params']['id']}},_0xfc8f23={};_0xfc8f23['model']=_[_0xe143('0x2c')](db[_0xe143('0x22')][_0xe143('0x2d')]);_0xfc8f23[_0xe143('0x28')]=_[_0xe143('0x2c')](_0x1fffef['query']);_0xfc8f23['filters']=_['intersection'](_0xfc8f23['model'],_0xfc8f23[_0xe143('0x28')]);_0x4c67d5['attributes']=_[_0xe143('0x2e')](_0xfc8f23[_0xe143('0x2f')],qs[_0xe143('0x30')](_0x1fffef[_0xe143('0x28')][_0xe143('0x30')]));_0x4c67d5['attributes']=_0x4c67d5['attributes'][_0xe143('0x31')]?_0x4c67d5[_0xe143('0x32')]:_0xfc8f23[_0xe143('0x2f')];if(_0x1fffef[_0xe143('0x28')][_0xe143('0x33')]){_0x4c67d5[_0xe143('0x34')]=[{'all':!![]}];}_0x4c67d5=_['merge']({},_0x4c67d5,_0x1fffef['options']);return db[_0xe143('0x22')]['find'](_0x4c67d5)['then'](handleEntityNotFound(_0x499cbd,null))[_0xe143('0x1b')](respondWithResult(_0x499cbd,null))[_0xe143('0x2a')](handleError(_0x499cbd,null));};exports[_0xe143('0x35')]=function(_0x5dcdd7,_0x12a593){return db[_0xe143('0x22')]['create'](_0x5dcdd7[_0xe143('0x36')],{})[_0xe143('0x1b')](respondWithResult(_0x12a593,0xc9))[_0xe143('0x2a')](handleError(_0x12a593,null));};exports['update']=function(_0x23ef02,_0x448cc8){if(_0x23ef02[_0xe143('0x36')]['id']){delete _0x23ef02[_0xe143('0x36')]['id'];}return db[_0xe143('0x22')][_0xe143('0x37')]({'where':{'id':_0x23ef02[_0xe143('0x38')]['id']}})[_0xe143('0x1b')](handleEntityNotFound(_0x448cc8,null))[_0xe143('0x1b')](saveUpdates(_0x23ef02[_0xe143('0x36')],null))['then'](respondWithResult(_0x448cc8,null))[_0xe143('0x2a')](handleError(_0x448cc8,null));};exports[_0xe143('0x1c')]=function(_0x51fc25,_0x490f99){return db[_0xe143('0x22')][_0xe143('0x37')]({'where':{'id':_0x51fc25[_0xe143('0x38')]['id']}})[_0xe143('0x1b')](handleEntityNotFound(_0x490f99,null))[_0xe143('0x1b')](removeEntity(_0x490f99,null))[_0xe143('0x2a')](handleError(_0x490f99,null));};exports[_0xe143('0x39')]=function(_0x45b9bf,_0x2c802f){return db['SmsInteraction'][_0xe143('0x39')]()[_0xe143('0x1b')](respondWithResult(_0x2c802f,null))[_0xe143('0x2a')](handleError(_0x2c802f,null));};exports[_0xe143('0x3a')]=function(_0x3df315,_0x79dfcc){return db[_0xe143('0x3b')][_0xe143('0x37')]({'where':{'id':_0x3df315[_0xe143('0x38')]['id']}})[_0xe143('0x1b')](handleEntityNotFound(_0x79dfcc,null))[_0xe143('0x1b')](function(_0xd4d91){if(_0xd4d91){return _0xd4d91[_0xe143('0x3a')](_0x3df315['body'][_0xe143('0x3c')],_[_0xe143('0x3d')](_0x3df315['body'],[_0xe143('0x3c'),'id'])||{});}})[_0xe143('0x1b')](respondWithResult(_0x79dfcc,null))[_0xe143('0x2a')](handleError(_0x79dfcc,null));};exports['getMessages']=function(_0x878329,_0x128fb8){var _0x2c474f={'raw':![],'where':{}};var _0x5defce={};var _0x25dc67={'count':0x0,'rows':[]};return db[_0xe143('0x22')][_0xe143('0x3e')]({'where':{'id':_0x878329[_0xe143('0x38')]['id']}})[_0xe143('0x1b')](handleEntityNotFound(_0x128fb8,null))[_0xe143('0x1b')](function(_0x312233){if(_0x312233){_0x5defce['model']=_['keys'](db['SmsMessage']['rawAttributes']);_0x5defce['query']=_[_0xe143('0x2c')](_0x878329[_0xe143('0x28')]);_0x5defce[_0xe143('0x3f')]=_['intersection'](_0x5defce[_0xe143('0x2f')],_0x5defce[_0xe143('0x28')]);_0x2c474f[_0xe143('0x32')]=_[_0xe143('0x2e')](_0x5defce[_0xe143('0x2f')],qs[_0xe143('0x30')](_0x878329[_0xe143('0x28')][_0xe143('0x30')]));_0x2c474f[_0xe143('0x32')]=_0x2c474f[_0xe143('0x32')]['length']?_0x2c474f[_0xe143('0x32')]:_0x5defce[_0xe143('0x2f')];if(!_0x878329[_0xe143('0x28')]['hasOwnProperty']('nolimit')){_0x2c474f[_0xe143('0x15')]=qs[_0xe143('0x15')](_0x878329[_0xe143('0x28')][_0xe143('0x15')]);_0x2c474f[_0xe143('0x16')]=qs['offset'](_0x878329[_0xe143('0x28')][_0xe143('0x16')]);}_0x2c474f[_0xe143('0x40')]=qs[_0xe143('0x41')](_0x878329['query'][_0xe143('0x41')]);_0x2c474f['where']=qs[_0xe143('0x3f')](_['pick'](_0x878329[_0xe143('0x28')],_0x5defce['filters']));_0x2c474f[_0xe143('0x42')][_0xe143('0x43')]=_0x312233['id'];if(_0x878329[_0xe143('0x28')]['filter']){_0x2c474f['where']=_[_0xe143('0x44')](_0x2c474f[_0xe143('0x42')],{'$or':_[_0xe143('0x21')](_0x2c474f['attributes'],function(_0x5e3c49){var _0x1d6993={};_0x1d6993[_0x5e3c49]={'$like':'%'+_0x878329[_0xe143('0x28')]['filter']+'%'};return _0x1d6993;})});}if(_0x878329[_0xe143('0x28')][_0xe143('0x45')]){var _0x58288d=_0x878329[_0xe143('0x28')][_0xe143('0x45')][_0xe143('0x46')](',');var _0x40ee09={};_0x40ee09[_0x58288d[0x0]]={'$gte':moment(_0x58288d[0x1])['format'](_0xe143('0x47'))};_0x2c474f[_0xe143('0x42')]=_[_0xe143('0x44')](_0x2c474f['where'],_0x40ee09);}_0x2c474f=_[_0xe143('0x44')]({},_0x2c474f,_0x878329[_0xe143('0x48')]);return db[_0xe143('0x3b')][_0xe143('0x17')]({'where':_0x2c474f['where']})['then'](function(_0x124cef){_0x25dc67[_0xe143('0x17')]=_0x124cef;if(_0x878329[_0xe143('0x28')]['includeAll']){_0x2c474f[_0xe143('0x34')]=[{'all':!![]}];}return db[_0xe143('0x3b')][_0xe143('0x27')](_0x2c474f);})[_0xe143('0x1b')](function(_0x5cf944){_0x25dc67['rows']=_0x5cf944;return _0x25dc67;});}})[_0xe143('0x1b')](respondWithFilteredResult(_0x128fb8,_0x2c474f))[_0xe143('0x2a')](handleError(_0x128fb8,null));};exports['addTags']=function(_0x321b27,_0x1d3d1){return db[_0xe143('0x22')][_0xe143('0x37')]({'where':{'id':_0x321b27[_0xe143('0x38')]['id']}})[_0xe143('0x1b')](handleEntityNotFound(_0x1d3d1,null))[_0xe143('0x1b')](function(_0x9e5c79){if(_0x9e5c79){return _0x9e5c79[_0xe143('0x49')](_0x321b27[_0xe143('0x36')]['ids'],_[_0xe143('0x3d')](_0x321b27[_0xe143('0x36')],[_0xe143('0x3c'),'id'])||{})['spread'](function(){return db[_0xe143('0x4a')]['findAll']({'attributes':['id',_0xe143('0x4b'),'color'],'where':{'id':_0x321b27[_0xe143('0x36')][_0xe143('0x3c')]}});})[_0xe143('0x1b')](function(_0x24a3ba){socket['emit'](_0xe143('0x4c'),{'id':Number(_0x321b27[_0xe143('0x38')]['id']),'tags':_0x24a3ba||[]});return{'id':Number(_0x321b27[_0xe143('0x38')]['id']),'tags':_0x24a3ba||[]};});}})[_0xe143('0x1b')](respondWithResult(_0x1d3d1,null))[_0xe143('0x2a')](handleError(_0x1d3d1,null));};exports['removeTags']=function(_0x2bbbcd,_0xfafc3c){return db[_0xe143('0x22')]['find']({'where':{'id':_0x2bbbcd['params']['id']}})[_0xe143('0x1b')](handleEntityNotFound(_0xfafc3c,null))[_0xe143('0x1b')](function(_0x1e3e09){if(_0x1e3e09){return _0x1e3e09[_0xe143('0x4d')](_0x2bbbcd[_0xe143('0x28')][_0xe143('0x3c')]);}})['then'](respondWithStatusCode(_0xfafc3c,null))[_0xe143('0x2a')](handleError(_0xfafc3c,null));};exports[_0xe143('0x4e')]=function(_0x204035,_0x3bcfdd){var _0x28f6c4=moment()[_0xe143('0x4f')]()[_0xe143('0x50')]();var _0x52932b=path['join'](config[_0xe143('0x51')],_0xe143('0x52'),_0xe143('0x53'),_0xe143('0x54'));var _0x4e31ec=path['join'](_0x52932b,_0x28f6c4);var _0x7e231d=util['format'](_0xe143('0x55'),_0x204035['params']['id'],_0x28f6c4);var _0x4b1b97=path[_0xe143('0x56')](_0x52932b,_0x7e231d);var _0x5cf3b1=[];_0x5cf3b1[_0xe143('0x57')]({'model':db['User'],'as':_0xe143('0x58'),'attributes':['id','fullname'],'raw':!![]});_0x5cf3b1[_0xe143('0x57')]({'model':db[_0xe143('0x59')],'as':_0xe143('0x5a'),'attributes':['id',_0xe143('0x5b'),_0xe143('0x5c')],'raw':!![]});var _0x47641a=[{'model':db['SmsMessage'],'as':_0xe143('0x5d'),'attributes':['id',_0xe143('0x36'),'createdAt',_0xe143('0x5e'),_0xe143('0x5f'),_0xe143('0x60')],'include':_0x5cf3b1}];_0x47641a[_0xe143('0x57')]({'model':db[_0xe143('0x61')],'as':'Account','attributes':['id',_0xe143('0x4b')]});_0x47641a['push']({'model':db[_0xe143('0x58')],'as':_0xe143('0x62'),'attributes':['id',_0xe143('0x63')]});return db['SmsInteraction'][_0xe143('0x37')]({'where':{'id':_0x204035[_0xe143('0x38')]['id']},'include':_0x47641a})[_0xe143('0x1b')](handleEntityNotFound(_0x3bcfdd,null))[_0xe143('0x1b')](function(_0x4230e0){if(_0x4230e0){var _0x344854=_0x4230e0['get']({'plain':!![]});fs[_0xe143('0x64')](_0x4e31ec);var _0x1d4c13={'channel':'Sms','account':_0x344854[_0xe143('0x65')][_0xe143('0x4b')],'agent':_0x344854[_0xe143('0x62')]?_0x344854[_0xe143('0x62')][_0xe143('0x63')]:_0xe143('0x66'),'createdAt':moment(_0x344854[_0xe143('0x67')])[_0xe143('0x68')](_0xe143('0x47'))[_0xe143('0x50')](),'closedAt':_0x344854[_0xe143('0x69')]?moment(_0x344854[_0xe143('0x6a')])[_0xe143('0x68')](_0xe143('0x47'))[_0xe143('0x50')]():'','disposition':_0x344854[_0xe143('0x6b')],'messages':_(_0x344854[_0xe143('0x5d')])[_0xe143('0x6c')]({'secret':![]})[_0xe143('0x21')](function(_0x2ab059){return{'date':moment(_0x2ab059[_0xe143('0x67')])['format'](_0xe143('0x47'))[_0xe143('0x50')](),'sender':_0x2ab059['direction']===_0xe143('0x6d')?_0x2ab059[_0xe143('0x58')]?_0x2ab059['User'][_0xe143('0x63')]:_0xe143('0x6e'):_0x2ab059['Contact'][_0xe143('0x5b')]+(_0x2ab059[_0xe143('0x5a')][_0xe143('0x5c')]?'\x20'+_0x2ab059[_0xe143('0x5a')][_0xe143('0x5c')]:''),'body':_0x2ab059['body'],'direction':_0x2ab059[_0xe143('0x5e')]===_0xe143('0x6d')?'A':'C','secret':_0x2ab059[_0xe143('0x5f')],'read':_0x2ab059[_0xe143('0x60')]};})[_0xe143('0x6f')]()};return ejs['renderFile'](path[_0xe143('0x56')](config[_0xe143('0x51')],_0xe143('0x52'),_0xe143('0x70'),_0xe143('0x71')),{'interaction':_0x1d4c13})[_0xe143('0x1b')](function(_0x59fdba){var _0x2775a1=path[_0xe143('0x56')](_0x4e31ec,'transcript-'+_0x344854['id']+'-'+_0x28f6c4+'.pdf');var _0x3b9d91={'path':_0x2775a1,'channel':'Sms','interactionId':_0x344854['id']};return pdf[_0xe143('0x72')](_0x59fdba,_0x3b9d91);})[_0xe143('0x1b')](function(){return new BPromise(function(_0x2bde3f,_0x4afd89){zipdir(_0x4e31ec,{'saveTo':_0x4b1b97},function(_0x3b6220,_0x469c28){if(_0x3b6220)return _0x4afd89(_0x3b6220);return _0x2bde3f(_0x469c28);});})[_0xe143('0x1b')](function(){return new BPromise(function(_0x37d743,_0x3d4a91){rimraf(_0x4e31ec,function(_0xcaa8ba){if(_0xcaa8ba)_0x3d4a91(_0xcaa8ba);return _0x37d743();});});})[_0xe143('0x1b')](function(){return _0x3bcfdd[_0xe143('0x4e')](_0x4b1b97,_0x7e231d,function(_0x1b78c7){if(_0x1b78c7){console[_0xe143('0x73')](_0xe143('0x74'),_0x1b78c7);}else{fs[_0xe143('0x75')](_0x4b1b97);}});});});}else{return _0x3bcfdd['sendStatus'](0xc8);}})[_0xe143('0x2a')](handleError(_0x3bcfdd,null));};
\ No newline at end of file
index bd13661..1c03b0c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0x6343=['then','map','findAll','setDataValue','emit','hasOwnProperty','hook','exports','SmsInteraction','../../mysqldb','remove'];(function(_0x7241c6,_0x33641a){var _0x565fc=function(_0x18910a){while(--_0x18910a){_0x7241c6['push'](_0x7241c6['shift']());}};_0x565fc(++_0x33641a);}(_0x6343,0x168));var _0x3634=function(_0x44267d,_0x2de9b0){_0x44267d=_0x44267d-0x0;var _0x425e7e=_0x6343[_0x44267d];return _0x425e7e;};'use strict';var EventEmitter=require('events');var SmsInteraction=require('../../mysqldb')['db'][_0x3634('0x0')];var SmsMessage=require(_0x3634('0x1'))['db']['SmsMessage'];var SmsInteractionEvents=new EventEmitter();SmsInteractionEvents['setMaxListeners'](0x0);var events={'afterCreate':'save','afterUpdate':'update','afterDestroy':_0x3634('0x2')};function emitEvent(_0x420510){return function(_0x57c5e4,_0x247964,_0x388c18){_0x57c5e4['getUsers']({'attributes':['id'],'raw':!![]})[_0x3634('0x3')](function(_0xd40513){_0x57c5e4['setDataValue']('Users',_0xd40513[_0x3634('0x4')](function(_0x1bcdb2){return{'id':_0x1bcdb2['id']};}));return SmsMessage[_0x3634('0x5')]({'where':{'SmsInteractionId':_0x57c5e4['id'],'direction':'in','read':![]},'raw':!![]});})[_0x3634('0x3')](function(_0x2e8e8b){_0x57c5e4[_0x3634('0x6')]('unreadMessages',_0x2e8e8b['length']);SmsInteractionEvents[_0x3634('0x7')](_0x420510+':'+_0x57c5e4['id'],_0x57c5e4);SmsInteractionEvents[_0x3634('0x7')](_0x420510,_0x57c5e4);_0x388c18(null);})['catch'](_0x388c18(null));};}for(var e in events){if(events[_0x3634('0x8')](e)){var event=events[e];SmsInteraction[_0x3634('0x9')](e,emitEvent(event));}}module[_0x3634('0xa')]=SmsInteractionEvents;
\ No newline at end of file
index b45291d..f1d940f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0x1708=['format','YYYY-MM-DD\x20HH:mm:ss','lodash','../../config/logger','api','moment','bluebird','path','rimraf','../../config/environment','./smsInteraction.attributes','exports','define','SmsInteraction','changed','closedAt'];(function(_0x22b68a,_0x2bffc3){var _0x1ac67a=function(_0x25f9d5){while(--_0x25f9d5){_0x22b68a['push'](_0x22b68a['shift']());}};_0x1ac67a(++_0x2bffc3);}(_0x1708,0x192));var _0x8170=function(_0x4e410f,_0x22beb7){_0x4e410f=_0x4e410f-0x0;var _0x3cd25c=_0x1708[_0x4e410f];return _0x3cd25c;};'use strict';var _=require(_0x8170('0x0'));var util=require('util');var logger=require(_0x8170('0x1'))(_0x8170('0x2'));var moment=require(_0x8170('0x3'));var BPromise=require(_0x8170('0x4'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x8170('0x5'));var rimraf=require(_0x8170('0x6'));var config=require(_0x8170('0x7'));var attributes=require(_0x8170('0x8'));module[_0x8170('0x9')]=function(_0x5ef6b5,_0x35b982){return _0x5ef6b5[_0x8170('0xa')](_0x8170('0xb'),attributes,{'tableName':'sms_interactions','paranoid':![],'indexes':[],'timestamps':!![],'hooks':{'beforeUpdate':function(_0x49d220,_0x577b67,_0x292b6e){if(_0x49d220[_0x8170('0xc')]('closed')){_0x49d220[_0x8170('0xd')]=moment()[_0x8170('0xe')](_0x8170('0xf'));}_0x292b6e(null,_0x49d220);}}});};
\ No newline at end of file
index 9c3980b..97850bd 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0x0cb3=['ids','omit','AddTags','lodash','util','moment','bluebird','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','defaults','redis','localhost','./smsInteraction.socket','register','request','then','info','SmsInteraction,\x20%s,\x20%s','request\x20sent','debug','stringify','error','code','message','result','catch','UpdateSmsInteraction','SmsInteraction','update','body','options','raw','where','attributes','limit','find','addTags'];(function(_0x1bb47b,_0x54e02e){var _0x566418=function(_0x4ceb66){while(--_0x4ceb66){_0x1bb47b['push'](_0x1bb47b['shift']());}};_0x566418(++_0x54e02e);}(_0x0cb3,0x15b));var _0x30cb=function(_0x2e67f7,_0x3111ab){_0x2e67f7=_0x2e67f7-0x0;var _0x175e11=_0x0cb3[_0x2e67f7];return _0x175e11;};'use strict';var _=require(_0x30cb('0x0'));var util=require(_0x30cb('0x1'));var moment=require(_0x30cb('0x2'));var BPromise=require(_0x30cb('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require('ioredis');var db=require(_0x30cb('0x4'))['db'];var utils=require(_0x30cb('0x5'));var logger=require(_0x30cb('0x6'))(_0x30cb('0x7'));var config=require(_0x30cb('0x8'));var jayson=require(_0x30cb('0x9'));var client=jayson[_0x30cb('0xa')][_0x30cb('0xb')]({'port':0x232a});config['redis']=_[_0x30cb('0xc')](config[_0x30cb('0xd')],{'host':_0x30cb('0xe'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0x30cb('0xd')]));require(_0x30cb('0xf'))[_0x30cb('0x10')](socket);function respondWithRpcPromise(_0xe293b8,_0x5066fa,_0x3d6bf6){return new BPromise(function(_0x187c4c,_0x84141a){return client[_0x30cb('0x11')](_0xe293b8,_0x3d6bf6)[_0x30cb('0x12')](function(_0x36ab0d){logger[_0x30cb('0x13')](_0x30cb('0x14'),_0x5066fa,_0x30cb('0x15'));logger[_0x30cb('0x16')]('SmsInteraction,\x20%s,\x20%s,\x20%s',_0x5066fa,_0x30cb('0x15'),JSON[_0x30cb('0x17')](_0x36ab0d));if(_0x36ab0d[_0x30cb('0x18')]){if(_0x36ab0d[_0x30cb('0x18')][_0x30cb('0x19')]===0x1f4){logger['error'](_0x30cb('0x14'),_0x5066fa,_0x36ab0d[_0x30cb('0x18')]['message']);return _0x84141a(_0x36ab0d['error'][_0x30cb('0x1a')]);}logger['error'](_0x30cb('0x14'),_0x5066fa,_0x36ab0d[_0x30cb('0x18')][_0x30cb('0x1a')]);return _0x187c4c(_0x36ab0d[_0x30cb('0x18')]['message']);}else{logger[_0x30cb('0x13')](_0x30cb('0x14'),_0x5066fa,_0x30cb('0x15'));_0x187c4c(_0x36ab0d[_0x30cb('0x1b')][_0x30cb('0x1a')]);}})[_0x30cb('0x1c')](function(_0x994997){logger['error']('SmsInteraction,\x20%s,\x20%s',_0x5066fa,_0x994997);_0x84141a(_0x994997);});});}exports[_0x30cb('0x1d')]=function(_0x5e5759){var _0x5dbd3a=this;return new Promise(function(_0x48c06f,_0x42c19a){return db[_0x30cb('0x1e')][_0x30cb('0x1f')](_0x5e5759[_0x30cb('0x20')],{'raw':_0x5e5759['options']?_0x5e5759[_0x30cb('0x21')][_0x30cb('0x22')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x5e5759['options']?_0x5e5759[_0x30cb('0x21')][_0x30cb('0x23')]||null:null,'attributes':_0x5e5759[_0x30cb('0x21')]?_0x5e5759[_0x30cb('0x21')][_0x30cb('0x24')]||null:null,'limit':_0x5e5759[_0x30cb('0x21')]?_0x5e5759[_0x30cb('0x21')][_0x30cb('0x25')]||null:null})[_0x30cb('0x12')](function(_0x2095d3){logger[_0x30cb('0x13')](_0x30cb('0x1d'),_0x5e5759);logger[_0x30cb('0x16')]('UpdateSmsInteraction',_0x5e5759,JSON[_0x30cb('0x17')](_0x2095d3));_0x48c06f(_0x2095d3);})[_0x30cb('0x1c')](function(_0x47ac78){logger['error'](_0x30cb('0x1d'),_0x47ac78[_0x30cb('0x1a')],_0x5e5759);_0x42c19a(_0x5dbd3a['error'](0x1f4,_0x47ac78['message']));});});};exports['AddTagsToSmsInteraction']=function(_0x2d6ef2){return new Promise(function(_0x2d7da0,_0x5e4ca1){return db[_0x30cb('0x1e')][_0x30cb('0x26')]({'where':_0x2d6ef2[_0x30cb('0x21')]?_0x2d6ef2['options'][_0x30cb('0x23')]||null:null})[_0x30cb('0x12')](function(_0x554d2b){if(_0x554d2b){return _0x554d2b[_0x30cb('0x27')](_0x2d6ef2['body'][_0x30cb('0x28')],_[_0x30cb('0x29')](_0x2d6ef2[_0x30cb('0x20')],[_0x30cb('0x28'),'id'])||{});}})['spread'](function(_0x5e6617){logger[_0x30cb('0x13')](_0x30cb('0x2a'),_0x2d6ef2);logger[_0x30cb('0x16')](_0x30cb('0x2a'),_0x2d6ef2,JSON[_0x30cb('0x17')](_0x5e6617));_0x2d7da0(_0x5e6617);})['catch'](function(_0x155a9f){logger[_0x30cb('0x18')](_0x30cb('0x2a'),_0x155a9f[_0x30cb('0x1a')],_0x2d6ef2);_0x5e4ca1(_this[_0x30cb('0x18')](0x1f4,_0x155a9f['message']));});});};
\ No newline at end of file
index 63419cc..7fd473e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0x1b8c=['update','register','smsInteraction:','./smsInteraction.events','save','remove'];(function(_0x5c18cf,_0x21e920){var _0x26f627=function(_0x33d601){while(--_0x33d601){_0x5c18cf['push'](_0x5c18cf['shift']());}};_0x26f627(++_0x21e920);}(_0x1b8c,0x117));var _0xc1b8=function(_0x4f051c,_0x2179a9){_0x4f051c=_0x4f051c-0x0;var _0x46f207=_0x1b8c[_0x4f051c];return _0x46f207;};'use strict';var SmsInteractionEvents=require(_0xc1b8('0x0'));var events=[_0xc1b8('0x1'),_0xc1b8('0x2'),_0xc1b8('0x3')];function createListener(_0xe5c241,_0x452765){return function(_0x607e19){_0x452765['emit'](_0xe5c241,_0x607e19);};}function removeListener(_0x283dab,_0x292d5f){return function(){SmsInteractionEvents['removeListener'](_0x283dab,_0x292d5f);};}exports[_0xc1b8('0x4')]=function(_0xbed548){for(var _0x569b73=0x0,_0x4df880=events['length'];_0x569b73<_0x4df880;_0x569b73++){var _0x48a282=events[_0x569b73];var _0x11314c=createListener(_0xc1b8('0x5')+_0x48a282,_0xbed548);SmsInteractionEvents['on'](_0x48a282,_0x11314c);}};
\ No newline at end of file
index fbb7fb2..9c4b768 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0xdfcf=['path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./smsMessage.controller','get','isAuthenticated','index','/describe','describe','/:id','show','post','sms','smsmessage:create','/:id/status','status','put','update','/:id/accept','accept','/:id/reject','reject','delete','destroy','util'];(function(_0x515db7,_0x7e2ff9){var _0x1a2d77=function(_0x8b9718){while(--_0x8b9718){_0x515db7['push'](_0x515db7['shift']());}};_0x1a2d77(++_0x7e2ff9);}(_0xdfcf,0x185));var _0xfdfc=function(_0xc8a931,_0x260690){_0xc8a931=_0xc8a931-0x0;var _0x28bd27=_0xdfcf[_0xc8a931];return _0x28bd27;};'use strict';var multer=require('multer');var util=require(_0xfdfc('0x0'));var path=require(_0xfdfc('0x1'));var timeout=require(_0xfdfc('0x2'));var express=require(_0xfdfc('0x3'));var router=express[_0xfdfc('0x4')]();var fs_extra=require(_0xfdfc('0x5'));var auth=require(_0xfdfc('0x6'));var interaction=require(_0xfdfc('0x7'));var config=require(_0xfdfc('0x8'));var controller=require(_0xfdfc('0x9'));router[_0xfdfc('0xa')]('/',auth[_0xfdfc('0xb')](),controller[_0xfdfc('0xc')]);router[_0xfdfc('0xa')](_0xfdfc('0xd'),auth[_0xfdfc('0xb')](),controller[_0xfdfc('0xe')]);router['get'](_0xfdfc('0xf'),auth[_0xfdfc('0xb')](),controller[_0xfdfc('0x10')]);router[_0xfdfc('0x11')]('/',auth[_0xfdfc('0xb')](),interaction['tracked'](_0xfdfc('0x12'),_0xfdfc('0x13')),controller['create']);router[_0xfdfc('0x11')](_0xfdfc('0x14'),controller[_0xfdfc('0x15')]);router[_0xfdfc('0x16')]('/:id',auth[_0xfdfc('0xb')](),controller[_0xfdfc('0x17')]);router[_0xfdfc('0x16')](_0xfdfc('0x18'),auth['isAuthenticated'](),controller[_0xfdfc('0x19')]);router[_0xfdfc('0x16')](_0xfdfc('0x1a'),auth[_0xfdfc('0xb')](),controller[_0xfdfc('0x1b')]);router[_0xfdfc('0x1c')](_0xfdfc('0xf'),auth[_0xfdfc('0xb')](),controller[_0xfdfc('0x1d')]);module['exports']=router;
\ No newline at end of file
index ac3c375..42d270c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0xe364=['DATE','exports','TEXT','BOOLEAN','out','STRING'];(function(_0x368c33,_0x482cb1){var _0x4e1884=function(_0x46ce3c){while(--_0x46ce3c){_0x368c33['push'](_0x368c33['shift']());}};_0x4e1884(++_0x482cb1);}(_0xe364,0x1c3));var _0x4e36=function(_0x406e46,_0x5799cb){_0x406e46=_0x406e46-0x0;var _0x4a3742=_0xe364[_0x406e46];return _0x4a3742;};'use strict';var Sequelize=require('sequelize');module[_0x4e36('0x0')]={'body':{'type':Sequelize[_0x4e36('0x1')]('medium'),'allowNull':![]},'read':{'type':Sequelize[_0x4e36('0x2')],'defaultValue':![]},'direction':{'type':Sequelize['ENUM']('in',_0x4e36('0x3')),'defaultValue':_0x4e36('0x3'),'allowNull':![]},'messageId':{'type':Sequelize[_0x4e36('0x4')](0xbe)},'phone':{'type':Sequelize[_0x4e36('0x4')]},'readAt':{'type':Sequelize[_0x4e36('0x5')]},'secret':{'type':Sequelize[_0x4e36('0x2')],'defaultValue':![]},'providerName':{'type':Sequelize[_0x4e36('0x4')]},'providerResponse':{'type':Sequelize[_0x4e36('0x1')]}};
\ No newline at end of file
index ba9aec3..2ccf8de 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0x9e38=['contact','User','agent','fullname','email','manual','interface','SIP/%s','channel','motionChannel','EventManager','acceptmessage','SmsInteractionId','[SMSMESSAGE:REJECT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s','rejectMessage','internal','event','SmsAccount','SmsAccountId','received\x20delivery\x20report\x20from','twilio','MessageSid','messageId','plivo','MessageUUID','indexOf','sent','Status','SmsAccount,\x20%s,\x20%s,\x20%s','plivio','inspect','infobip','results','groupName','DELIVERED','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','ejs','lodash','squel','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/environment','../../config/license/util','../../mysqldb','defaults','localhost','socket.io-emitter','redis','./smsMessage.socket','register','jayson/promise','client','http','SmsMessage,\x20%s,\x20%s','request\x20sent','debug','SmsMessage,\x20%s,\x20%s,\x20%s','error','message','info','result','catch','sendStatus','end','status','json','offset','undefined','limit','count','Content-Range','apply','reject','destroy','name','send','index','map','SmsMessage','rawAttributes','type','key','query','keys','filters','model','attributes','intersection','fields','length','hasOwnProperty','nolimit','sort','where','merge','filter','then','include','findAll','show','params','includeAll','options','create','body','update','find','describe','sms-interactions','accept','sms','read','readAt','format','YYYY-MM-DD\x20HH:mm:ss','UserId','SmsInteraction','isNil','read1stAt','interaction','get','user','role','stringify','null','AcceptMessage','acceptMessage','SELECT\x20*\x20FROM\x20cm_contacts\x20WHERE\x20id\x20=\x20','ContactId','sequelize','Sequelize','QueryTypes','SELECT'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x9e38,0x155));var _0x89e3=function(_0x4565bf,_0x5ad9d6){_0x4565bf=_0x4565bf-0x0;var _0x5610ba=_0x9e38[_0x4565bf];return _0x5610ba;};'use strict';var emlformat=require(_0x89e3('0x0'));var rimraf=require(_0x89e3('0x1'));var zipdir=require(_0x89e3('0x2'));var jsonpatch=require(_0x89e3('0x3'));var rp=require(_0x89e3('0x4'));var moment=require(_0x89e3('0x5'));var BPromise=require(_0x89e3('0x6'));var Mustache=require(_0x89e3('0x7'));var util=require(_0x89e3('0x8'));var path=require(_0x89e3('0x9'));var sox=require(_0x89e3('0xa'));var csv=require(_0x89e3('0xb'));var ejs=require(_0x89e3('0xc'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x89e3('0xd'));var squel=require(_0x89e3('0xe'));var crypto=require(_0x89e3('0xf'));var jsforce=require(_0x89e3('0x10'));var deskjs=require(_0x89e3('0x11'));var toCsv=require(_0x89e3('0xb'));var querystring=require(_0x89e3('0x12'));var Papa=require(_0x89e3('0x13'));var Redis=require(_0x89e3('0x14'));var authService=require(_0x89e3('0x15'));var qs=require('../../components/parsers/qs');var as=require(_0x89e3('0x16'));var hardwareService=require(_0x89e3('0x17'));var logger=require(_0x89e3('0x18'))(_0x89e3('0x19'));var utils=require('../../config/utils');var config=require(_0x89e3('0x1a'));var licenseUtil=require(_0x89e3('0x1b'));var db=require(_0x89e3('0x1c'))['db'];config['redis']=_[_0x89e3('0x1d')](config['redis'],{'host':_0x89e3('0x1e'),'port':0x18eb});var socket=require(_0x89e3('0x1f'))(new Redis(config[_0x89e3('0x20')]));require(_0x89e3('0x21'))[_0x89e3('0x22')](socket);var jayson=require(_0x89e3('0x23'));var client=jayson[_0x89e3('0x24')][_0x89e3('0x25')]({'port':0x232c});var client9002=jayson[_0x89e3('0x24')][_0x89e3('0x25')]({'port':0x232a});function respondWithRpcPromise(_0x3439bc,_0x16742e,_0x462ec6,_0x1bce47){return new BPromise(function(_0x3d8792,_0x48a479){var _0x38688a=_0x1bce47||client;return _0x38688a['request'](_0x3439bc,_0x462ec6)['then'](function(_0x1a4555){logger['info'](_0x89e3('0x26'),_0x16742e,_0x89e3('0x27'));logger[_0x89e3('0x28')](_0x89e3('0x29'),_0x16742e,_0x89e3('0x27'),JSON['stringify'](_0x1a4555));if(_0x1a4555[_0x89e3('0x2a')]){if(_0x1a4555[_0x89e3('0x2a')]['code']===0x1f4){logger[_0x89e3('0x2a')](_0x89e3('0x26'),_0x16742e,_0x1a4555['error'][_0x89e3('0x2b')]);return _0x48a479(_0x1a4555[_0x89e3('0x2a')]['message']);}logger[_0x89e3('0x2a')](_0x89e3('0x26'),_0x16742e,_0x1a4555[_0x89e3('0x2a')][_0x89e3('0x2b')]);return _0x3d8792(_0x1a4555[_0x89e3('0x2a')]['message']);}else{logger[_0x89e3('0x2c')](_0x89e3('0x26'),_0x16742e,_0x89e3('0x27'));_0x3d8792(_0x1a4555[_0x89e3('0x2d')][_0x89e3('0x2b')]);}})[_0x89e3('0x2e')](function(_0x39e6d6){logger[_0x89e3('0x2a')](_0x89e3('0x26'),_0x16742e,_0x39e6d6);_0x48a479(_0x39e6d6);});});}function respondWithStatusCode(_0x3f8eef,_0x502b57){_0x502b57=_0x502b57||0xcc;return function(_0x2cccbc){if(_0x2cccbc){return _0x3f8eef[_0x89e3('0x2f')](_0x502b57);}return _0x3f8eef['status'](_0x502b57)[_0x89e3('0x30')]();};}function respondWithResult(_0x229fcb,_0x33789c){_0x33789c=_0x33789c||0xc8;return function(_0x1bc573){if(_0x1bc573){return _0x229fcb[_0x89e3('0x31')](_0x33789c)[_0x89e3('0x32')](_0x1bc573);}};}function respondWithFilteredResult(_0x1583c2,_0x11b276){return function(_0x349cb6){if(_0x349cb6){var _0x590904=typeof _0x11b276[_0x89e3('0x33')]===_0x89e3('0x34')&&typeof _0x11b276[_0x89e3('0x35')]===_0x89e3('0x34');var _0x27212=_0x349cb6[_0x89e3('0x36')];var _0xd341e1=_0x590904?0x0:_0x11b276['offset'];var _0x2cb5b9=_0x590904?_0x349cb6[_0x89e3('0x36')]:_0x11b276[_0x89e3('0x33')]+_0x11b276[_0x89e3('0x35')];var _0x29605f;if(_0x2cb5b9>=_0x27212){_0x2cb5b9=_0x27212;_0x29605f=0xc8;}else{_0x29605f=0xce;}_0x1583c2[_0x89e3('0x31')](_0x29605f);return _0x1583c2['set'](_0x89e3('0x37'),_0xd341e1+'-'+_0x2cb5b9+'/'+_0x27212)[_0x89e3('0x32')](_0x349cb6);}return null;};}function patchUpdates(_0x59f13d){return function(_0x3c02ce){try{jsonpatch[_0x89e3('0x38')](_0x3c02ce,_0x59f13d,!![]);}catch(_0x438275){return BPromise[_0x89e3('0x39')](_0x438275);}return _0x3c02ce['save']();};}function saveUpdates(_0x1355bb,_0x2d4210){return function(_0x4ce94a){if(_0x4ce94a){return _0x4ce94a['update'](_0x1355bb)['then'](function(_0x5a0d03){return _0x5a0d03;});}return null;};}function removeEntity(_0x4deaa0,_0x11b574){return function(_0x537b19){if(_0x537b19){return _0x537b19[_0x89e3('0x3a')]()['then'](function(){_0x4deaa0['status'](0xcc)[_0x89e3('0x30')]();});}};}function handleEntityNotFound(_0x4b6de6,_0x4393d5){return function(_0x1b3492){if(!_0x1b3492){_0x4b6de6[_0x89e3('0x2f')](0x194);}return _0x1b3492;};}function handleError(_0x177f29,_0x18ca74){_0x18ca74=_0x18ca74||0x1f4;return function(_0xfc6828){logger['error'](_0xfc6828['stack']);if(_0xfc6828[_0x89e3('0x3b')]){delete _0xfc6828[_0x89e3('0x3b')];}_0x177f29['status'](_0x18ca74)[_0x89e3('0x3c')](_0xfc6828);};}exports[_0x89e3('0x3d')]=function(_0x43f61e,_0x238abc){var _0x1ffd68={},_0x45455={},_0x1eb5c2={'count':0x0,'rows':[]};var _0x291c7b=_[_0x89e3('0x3e')](db[_0x89e3('0x3f')][_0x89e3('0x40')],function(_0x2609bb){return{'name':_0x2609bb['fieldName'],'type':_0x2609bb[_0x89e3('0x41')][_0x89e3('0x42')]};});_0x45455['model']=_[_0x89e3('0x3e')](_0x291c7b,_0x89e3('0x3b'));_0x45455[_0x89e3('0x43')]=_[_0x89e3('0x44')](_0x43f61e[_0x89e3('0x43')]);_0x45455[_0x89e3('0x45')]=_['intersection'](_0x45455[_0x89e3('0x46')],_0x45455[_0x89e3('0x43')]);_0x1ffd68[_0x89e3('0x47')]=_[_0x89e3('0x48')](_0x45455[_0x89e3('0x46')],qs[_0x89e3('0x49')](_0x43f61e[_0x89e3('0x43')][_0x89e3('0x49')]));_0x1ffd68[_0x89e3('0x47')]=_0x1ffd68['attributes'][_0x89e3('0x4a')]?_0x1ffd68[_0x89e3('0x47')]:_0x45455[_0x89e3('0x46')];if(!_0x43f61e[_0x89e3('0x43')][_0x89e3('0x4b')](_0x89e3('0x4c'))){_0x1ffd68[_0x89e3('0x35')]=qs['limit'](_0x43f61e[_0x89e3('0x43')][_0x89e3('0x35')]);_0x1ffd68[_0x89e3('0x33')]=qs[_0x89e3('0x33')](_0x43f61e['query'][_0x89e3('0x33')]);}_0x1ffd68['order']=qs[_0x89e3('0x4d')](_0x43f61e['query'][_0x89e3('0x4d')]);_0x1ffd68[_0x89e3('0x4e')]=qs[_0x89e3('0x45')](_['pick'](_0x43f61e['query'],_0x45455[_0x89e3('0x45')]),_0x291c7b);if(_0x43f61e[_0x89e3('0x43')]['filter']){_0x1ffd68[_0x89e3('0x4e')]=_[_0x89e3('0x4f')](_0x1ffd68[_0x89e3('0x4e')],{'$or':_['map'](_0x291c7b,function(_0xfe6b3a){if(_0xfe6b3a[_0x89e3('0x41')]!=='VIRTUAL'){var _0x15c105={};_0x15c105[_0xfe6b3a[_0x89e3('0x3b')]]={'$like':'%'+_0x43f61e['query'][_0x89e3('0x50')]+'%'};return _0x15c105;}})});}_0x1ffd68=_['merge']({},_0x1ffd68,_0x43f61e['options']);var _0x50a208={'where':_0x1ffd68['where']};return db[_0x89e3('0x3f')][_0x89e3('0x36')](_0x50a208)[_0x89e3('0x51')](function(_0x199819){_0x1eb5c2[_0x89e3('0x36')]=_0x199819;if(_0x43f61e[_0x89e3('0x43')]['includeAll']){_0x1ffd68[_0x89e3('0x52')]=[{'all':!![]}];}return db['SmsMessage'][_0x89e3('0x53')](_0x1ffd68);})[_0x89e3('0x51')](function(_0x36d2de){_0x1eb5c2['rows']=_0x36d2de;return _0x1eb5c2;})[_0x89e3('0x51')](respondWithFilteredResult(_0x238abc,_0x1ffd68))[_0x89e3('0x2e')](handleError(_0x238abc,null));};exports[_0x89e3('0x54')]=function(_0x8ed152,_0x14bc57){var _0x566c02={'raw':!![],'where':{'id':_0x8ed152[_0x89e3('0x55')]['id']}},_0x5c96bd={};_0x5c96bd[_0x89e3('0x46')]=_[_0x89e3('0x44')](db['SmsMessage'][_0x89e3('0x40')]);_0x5c96bd[_0x89e3('0x43')]=_[_0x89e3('0x44')](_0x8ed152[_0x89e3('0x43')]);_0x5c96bd[_0x89e3('0x45')]=_['intersection'](_0x5c96bd[_0x89e3('0x46')],_0x5c96bd[_0x89e3('0x43')]);_0x566c02[_0x89e3('0x47')]=_[_0x89e3('0x48')](_0x5c96bd['model'],qs['fields'](_0x8ed152[_0x89e3('0x43')]['fields']));_0x566c02['attributes']=_0x566c02['attributes'][_0x89e3('0x4a')]?_0x566c02[_0x89e3('0x47')]:_0x5c96bd['model'];if(_0x8ed152[_0x89e3('0x43')][_0x89e3('0x56')]){_0x566c02[_0x89e3('0x52')]=[{'all':!![]}];}_0x566c02=_['merge']({},_0x566c02,_0x8ed152[_0x89e3('0x57')]);return db['SmsMessage']['find'](_0x566c02)['then'](handleEntityNotFound(_0x14bc57,null))[_0x89e3('0x51')](respondWithResult(_0x14bc57,null))['catch'](handleError(_0x14bc57,null));};exports['create']=function(_0x385115,_0x43cec2){return db[_0x89e3('0x3f')][_0x89e3('0x58')](_0x385115[_0x89e3('0x59')],{})[_0x89e3('0x51')](respondWithResult(_0x43cec2,0xc9))[_0x89e3('0x2e')](handleError(_0x43cec2,null));};exports[_0x89e3('0x5a')]=function(_0x5df6fe,_0x3679da){if(_0x5df6fe[_0x89e3('0x59')]['id']){delete _0x5df6fe[_0x89e3('0x59')]['id'];}return db[_0x89e3('0x3f')]['find']({'where':{'id':_0x5df6fe[_0x89e3('0x55')]['id']}})[_0x89e3('0x51')](handleEntityNotFound(_0x3679da,null))[_0x89e3('0x51')](saveUpdates(_0x5df6fe['body'],null))[_0x89e3('0x51')](respondWithResult(_0x3679da,null))[_0x89e3('0x2e')](handleError(_0x3679da,null));};exports[_0x89e3('0x3a')]=function(_0x480750,_0x43cb7b){return db[_0x89e3('0x3f')][_0x89e3('0x5b')]({'where':{'id':_0x480750[_0x89e3('0x55')]['id']}})[_0x89e3('0x51')](handleEntityNotFound(_0x43cb7b,null))[_0x89e3('0x51')](removeEntity(_0x43cb7b,null))[_0x89e3('0x2e')](handleError(_0x43cb7b,null));};exports[_0x89e3('0x5c')]=function(_0x4fc367,_0x53be89){return db[_0x89e3('0x3f')][_0x89e3('0x5c')]()[_0x89e3('0x51')](respondWithResult(_0x53be89,null))['catch'](handleError(_0x53be89,null));};var interaction_log=require(_0x89e3('0x18'))(_0x89e3('0x5d'));exports[_0x89e3('0x5e')]=function(_0x5a2a4f,_0x473fe0,_0x428244){var _0x416420={'agent':{},'channel':_0x89e3('0x5f')};if(_0x5a2a4f['body']['id']){delete _0x5a2a4f['body']['id'];}_0x5a2a4f[_0x89e3('0x59')][_0x89e3('0x60')]=!![];_0x5a2a4f['body'][_0x89e3('0x61')]=moment()[_0x89e3('0x62')](_0x89e3('0x63'));_0x5a2a4f[_0x89e3('0x59')]['UserId']=_0x5a2a4f[_0x89e3('0x59')][_0x89e3('0x64')]||_0x5a2a4f['user']['id'];_0x416420['agent']['id']=_0x5a2a4f['body']['UserId'];return db[_0x89e3('0x3f')][_0x89e3('0x5b')]({'where':{'id':_0x5a2a4f[_0x89e3('0x55')]['id'],'UserId':null}})[_0x89e3('0x51')](handleEntityNotFound(_0x473fe0,null))['then'](saveUpdates(_0x5a2a4f[_0x89e3('0x59')],null))[_0x89e3('0x51')](function(_0x3588f0){if(_0x3588f0){_0x416420[_0x89e3('0x2b')]=_0x3588f0['get']({'plain':!![]});return db[_0x89e3('0x65')][_0x89e3('0x5b')]({'where':{'id':_0x3588f0['SmsInteractionId']}});}return null;})[_0x89e3('0x51')](handleEntityNotFound(_0x473fe0,null))['then'](function(_0xdc5131){if(_0xdc5131){return _0xdc5131[_0x89e3('0x5a')]({'UserId':_0x5a2a4f['body'][_0x89e3('0x64')],'read1stAt':_[_0x89e3('0x66')](_0xdc5131[_0x89e3('0x67')])?moment()[_0x89e3('0x62')](_0x89e3('0x63')):undefined});}return null;})['then'](function(_0x491b42){if(_0x491b42){_0x416420[_0x89e3('0x68')]=_0x491b42[_0x89e3('0x69')]({'plain':!![]});interaction_log[_0x89e3('0x2c')]('[SMSMESSAGE:ACCEPT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s',_0x5a2a4f['user']['id'],_0x5a2a4f[_0x89e3('0x6a')][_0x89e3('0x3b')],_0x5a2a4f[_0x89e3('0x6a')][_0x89e3('0x6b')],_0x416420[_0x89e3('0x68')]['id'],_0x5a2a4f[_0x89e3('0x59')]?JSON[_0x89e3('0x6c')](_0x5a2a4f[_0x89e3('0x59')]):_0x89e3('0x6d'));return respondWithRpcPromise(_0x89e3('0x6e'),_0x89e3('0x6f'),_0x416420);}return null;})[_0x89e3('0x51')](function(_0x610dd9){var _0x5e9825=_0x89e3('0x70')+_0x610dd9[_0x89e3('0x2b')][_0x89e3('0x71')];return db[_0x89e3('0x72')]['query'](_0x5e9825,{'type':db[_0x89e3('0x73')][_0x89e3('0x74')][_0x89e3('0x75')],'raw':!![]})[_0x89e3('0x51')](function(_0x262275){return _0x262275;});})['then'](function(_0x299e44){if(_0x299e44){_0x416420['message'][_0x89e3('0x76')]=_0x299e44[0x0];if(!_0x5a2a4f[_0x89e3('0x59')]['UserId'])return;return db[_0x89e3('0x77')][_0x89e3('0x5b')]({'where':{'id':_0x5a2a4f[_0x89e3('0x59')][_0x89e3('0x64')],'role':_0x89e3('0x78')},'attributes':['id',_0x89e3('0x3b'),_0x89e3('0x79'),_0x89e3('0x7a'),'internal'],'raw':!![]});}return null;})[_0x89e3('0x51')](function(_0x56a1e3){if(!_0x56a1e3)return null;_0x416420[_0x89e3('0x2b')][_0x89e3('0x78')]=_0x56a1e3;return _0x416420;})[_0x89e3('0x51')](function(_0x2e8ce0){if(_0x2e8ce0){if(_0x5a2a4f['body'][_0x89e3('0x7b')]){_0x416420[_0x89e3('0x2b')][_0x89e3('0x7c')]=util[_0x89e3('0x62')](_0x89e3('0x7d'),_0x5a2a4f[_0x89e3('0x6a')]['name']);_0x416420['message'][_0x89e3('0x7e')]=_0x416420['channel'];_0x416420['message'][_0x89e3('0x7f')]=_0x416420[_0x89e3('0x7e')];_0x416420['message']['event']='accept';return respondWithRpcPromise(_0x89e3('0x80'),'EventManager',{'event':_0x89e3('0x81'),'message':_0x416420[_0x89e3('0x2b')]},client9002)[_0x89e3('0x51')](function(){return _0x416420;});}return _0x416420;}return null;})['then'](respondWithResult(_0x473fe0,null))[_0x89e3('0x2e')](handleError(_0x473fe0,null));};var interaction_log=require(_0x89e3('0x18'))(_0x89e3('0x5d'));exports[_0x89e3('0x39')]=function(_0xc45e02,_0x5e0415,_0xb81df4){var _0x3f4948={'agent':{},'channel':_0x89e3('0x5f')};if(_0xc45e02['body']['id']){delete _0xc45e02[_0x89e3('0x59')]['id'];}_0xc45e02[_0x89e3('0x59')][_0x89e3('0x64')]=_0xc45e02[_0x89e3('0x59')]['UserId']||_0xc45e02[_0x89e3('0x6a')]['id'];_0x3f4948[_0x89e3('0x78')]['id']=_0xc45e02[_0x89e3('0x59')][_0x89e3('0x64')];return db['SmsMessage']['find']({'where':{'id':_0xc45e02['params']['id'],'UserId':null}})[_0x89e3('0x51')](handleEntityNotFound(_0x5e0415,null))[_0x89e3('0x51')](function(_0x345366){if(_0x345366){_0x3f4948[_0x89e3('0x2b')]=_0x345366[_0x89e3('0x69')]({'plain':!![]});return db[_0x89e3('0x65')][_0x89e3('0x5b')]({'where':{'id':_0x345366[_0x89e3('0x82')]}});}return null;})['then'](handleEntityNotFound(_0x5e0415,null))['then'](function(_0x79b7e4){if(_0x79b7e4){_0x3f4948[_0x89e3('0x68')]=_0x79b7e4[_0x89e3('0x69')]({'plain':!![]});interaction_log['info'](_0x89e3('0x83'),_0xc45e02[_0x89e3('0x6a')]['id'],_0xc45e02[_0x89e3('0x6a')]['name'],_0xc45e02[_0x89e3('0x6a')]['role'],_0x3f4948['interaction']['id'],_0xc45e02[_0x89e3('0x59')]?JSON[_0x89e3('0x6c')](_0xc45e02[_0x89e3('0x59')]):_0x89e3('0x6d'));return respondWithRpcPromise('RejectMessage',_0x89e3('0x84'),_0x3f4948);}return null;})[_0x89e3('0x51')](function(_0x36b191){var _0x53159a=_0x89e3('0x70')+_0x36b191[_0x89e3('0x2b')]['ContactId'];return db['sequelize']['query'](_0x53159a,{'type':db[_0x89e3('0x73')][_0x89e3('0x74')]['SELECT'],'raw':!![]})[_0x89e3('0x51')](function(_0xc73c23){return _0xc73c23;});})[_0x89e3('0x51')](function(_0x1512bc){if(_0x1512bc){_0x3f4948[_0x89e3('0x2b')][_0x89e3('0x76')]=_0x1512bc[0x0];if(!_0xc45e02[_0x89e3('0x59')]['UserId'])return;return db[_0x89e3('0x77')]['find']({'where':{'id':_0xc45e02['body'][_0x89e3('0x64')],'role':_0x89e3('0x78')},'attributes':['id',_0x89e3('0x3b'),_0x89e3('0x79'),_0x89e3('0x7a'),_0x89e3('0x85')],'raw':!![]});}return null;})[_0x89e3('0x51')](function(_0x418cb1){if(!_0x418cb1)return null;_0x3f4948[_0x89e3('0x2b')]['agent']=_0x418cb1;return _0x3f4948;})[_0x89e3('0x51')](function(_0x8f7e96){if(_0x8f7e96){_0x8f7e96[_0x89e3('0x2b')]['interface']=util['format'](_0x89e3('0x7d'),_0xc45e02[_0x89e3('0x6a')][_0x89e3('0x3b')]);_0x8f7e96[_0x89e3('0x2b')][_0x89e3('0x7e')]=_0x3f4948[_0x89e3('0x7e')];_0x8f7e96[_0x89e3('0x2b')][_0x89e3('0x7f')]=_0x3f4948[_0x89e3('0x7e')];_0x8f7e96[_0x89e3('0x2b')][_0x89e3('0x86')]=_0x89e3('0x39');respondWithRpcPromise('EventManager','EventManager',{'event':'rejectmessage','message':_0x8f7e96[_0x89e3('0x2b')]},client9002);return _0x3f4948;}return null;})[_0x89e3('0x51')](respondWithResult(_0x5e0415,null))['catch'](handleError(_0x5e0415,null));};exports[_0x89e3('0x31')]=function(_0x4851e5,_0x2c9d86,_0x44a9bb){if(_0x4851e5[_0x89e3('0x59')]['id']){delete _0x4851e5[_0x89e3('0x59')]['id'];}var _0x2892dd;return db[_0x89e3('0x3f')][_0x89e3('0x5b')]({'where':{'id':_0x4851e5[_0x89e3('0x55')]['id']}})[_0x89e3('0x51')](handleEntityNotFound(_0x2c9d86,null))[_0x89e3('0x51')](function(_0xa4b4f6){if(_0xa4b4f6){_0x2892dd=_0xa4b4f6;return db[_0x89e3('0x87')][_0x89e3('0x5b')]({'where':{'id':_0xa4b4f6[_0x89e3('0x88')]}});}})[_0x89e3('0x51')](handleEntityNotFound(_0x2c9d86,null))[_0x89e3('0x51')](function(_0x2d09e0){if(_0x2d09e0){logger[_0x89e3('0x28')](_0x89e3('0x29'),_0x89e3('0x31'),_0x89e3('0x89'),_0x2d09e0[_0x89e3('0x41')],util['inspect'](_0x4851e5[_0x89e3('0x59')],{'showHidden':![],'depth':null}));switch(_0x2d09e0[_0x89e3('0x41')]){case _0x89e3('0x8a'):if(_0x4851e5[_0x89e3('0x59')][_0x89e3('0x8b')]&&_0x4851e5[_0x89e3('0x59')][_0x89e3('0x8b')]===_0x2892dd[_0x89e3('0x8c')]){return _0x2892dd['update']({'read':!![]});}else{logger[_0x89e3('0x2a')]('SmsAccount,\x20%s,\x20%s,\x20%s',_0x89e3('0x31'),_0x89e3('0x8a'),util['inspect'](_0x4851e5[_0x89e3('0x59')],{'showHidden':![],'depth':null}));}break;case _0x89e3('0x8d'):if(_0x4851e5['body']['MessageUUID']&&_0x4851e5[_0x89e3('0x59')][_0x89e3('0x8e')]===_0x2892dd[_0x89e3('0x8c')]&&_[_0x89e3('0x8f')]([_0x89e3('0x90'),'delivered'],_0x4851e5['body'][_0x89e3('0x91')])>=0x0){return _0x2892dd[_0x89e3('0x5a')]({'read':!![]});}else{logger[_0x89e3('0x2a')](_0x89e3('0x92'),_0x89e3('0x31'),_0x89e3('0x93'),util[_0x89e3('0x94')](_0x4851e5[_0x89e3('0x59')],{'showHidden':![],'depth':null}));}break;case _0x89e3('0x95'):var _0x835e23=_0x4851e5['body'][_0x89e3('0x96')][0x0];if(_0x835e23[_0x89e3('0x31')][_0x89e3('0x97')]===_0x89e3('0x98')){return _0x2892dd[_0x89e3('0x5a')]({'read':!![]});}else{logger[_0x89e3('0x2a')](_0x89e3('0x92'),_0x89e3('0x31'),_0x89e3('0x95'),util[_0x89e3('0x94')](_0x4851e5[_0x89e3('0x59')],{'showHidden':![],'depth':null}));}break;}return _0x2892dd;}})[_0x89e3('0x51')](respondWithResult(_0x2c9d86,null))[_0x89e3('0x2e')](handleError(_0x2c9d86,null));};
\ No newline at end of file
index 223e5d6..d1c650c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0x694d=['emit','hasOwnProperty','exports','../../mysqldb','SmsMessage','save','update','remove'];(function(_0x4bcb40,_0x2e1686){var _0x51252a=function(_0x490d99){while(--_0x490d99){_0x4bcb40['push'](_0x4bcb40['shift']());}};_0x51252a(++_0x2e1686);}(_0x694d,0x9b));var _0xd694=function(_0x48c9e6,_0x19d30e){_0x48c9e6=_0x48c9e6-0x0;var _0x5a4c6a=_0x694d[_0x48c9e6];return _0x5a4c6a;};'use strict';var EventEmitter=require('events');var SmsMessage=require(_0xd694('0x0'))['db'][_0xd694('0x1')];var SmsMessageEvents=new EventEmitter();SmsMessageEvents['setMaxListeners'](0x0);var events={'afterCreate':_0xd694('0x2'),'afterUpdate':_0xd694('0x3'),'afterDestroy':_0xd694('0x4')};function emitEvent(_0x408b57){return function(_0x6083d6,_0x35bdfb,_0xb38d91){SmsMessageEvents[_0xd694('0x5')](_0x408b57+':'+_0x6083d6['id'],_0x6083d6);SmsMessageEvents[_0xd694('0x5')](_0x408b57,_0x6083d6);_0xb38d91(null);};}for(var e in events){if(events[_0xd694('0x6')](e)){var event=events[e];SmsMessage['hook'](e,emitEvent(event));}}module[_0xd694('0x7')]=SmsMessageEvents;
\ No newline at end of file
index c3c625d..1cdbe99 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0xcba9=['uuid','UTF-8','apiMessageId','bandwidth','https://messaging.bandwidth.com/api/v2/users/','accountId','applicationId','Basic\x20%s','https://api.intelepeer.com/_rest/v4/app/sms/send','Bearer\x20','code','https://api.intelepeer.com/_rest/v4/app/sms/mdr','refid','status','intelepeer','Token\x20not\x20received','finally','utf8mb4','utf8mb4_unicode_ci','lodash','util','../../config/logger','api','moment','bluebird','request-promise','path','../../config/environment','./smsMessage.attributes','define','SmsMessage','fti_sms_messages','FULLTEXT','models','direction','toLowerCase','out','secret','isNil','UserId','SmsInteractionId','SmsInteraction','findOne','update','createdAt','catch','error','SmsAccount','find','then','type','twilio','authToken','phone','accountSid','messages','create','body','remote','/status?token=','token','sid','SmsMessage,\x20%s,\x20%s,\x20%s','inspect','Missing\x20parameters:\x20phone,\x20accountSid\x20or\x20authToken','https://api.skebby.it/API/v1.0/REST/','password','smsMethod','login?username=','username','&password=','GET','split','POST','user_key','session_key','total_sent','deliveryReport','read','afterCreate','skebby','Missing\x20parameters:\x20username,\x20password','connectel','senderString','https://smsapi.connectel.se/api/v2/send/','requestid','Missing\x20parameters:\x20authToken','xCALLY\x20Motion','format','%s:%s','https://rest.clicksend.com/v3/sms/send','toString','base64','http_code','queued_count','head','data','clickSend','plivo','authId','/api/sms/messages/','https://api.plivo.com/v1/Account/%s/Message/','message_uuid','infobip','baseUrl','/auth/1/session','application/json','messageId','Missing\x20parameters:\x20base_url','csc','crypto','login','sender','text','timestamp','keys','sort','length','apiKey','md5','digest','hex','/external/get/send.php?','id_sms','Missing\x20parameters:\x20apiKey','clickatell'];(function(_0x1d2687,_0x3086ac){var _0x15d02d=function(_0x31a661){while(--_0x31a661){_0x1d2687['push'](_0x1d2687['shift']());}};_0x15d02d(++_0x3086ac);}(_0xcba9,0x10f));var _0x9cba=function(_0x365918,_0x125dc9){_0x365918=_0x365918-0x0;var _0x44a812=_0xcba9[_0x365918];return _0x44a812;};'use strict';var _=require(_0x9cba('0x0'));var util=require(_0x9cba('0x1'));var logger=require(_0x9cba('0x2'))(_0x9cba('0x3'));var moment=require(_0x9cba('0x4'));var BPromise=require(_0x9cba('0x5'));var rp=require(_0x9cba('0x6'));var fs=require('fs');var path=require(_0x9cba('0x7'));var rimraf=require('rimraf');var config=require(_0x9cba('0x8'));var attributes=require(_0x9cba('0x9'));module['exports']=function(_0xe7926f,_0x39cfd1){return _0xe7926f[_0x9cba('0xa')](_0x9cba('0xb'),attributes,{'tableName':'sms_messages','paranoid':![],'indexes':[{'name':'messageId','fields':['messageId']},{'name':_0x9cba('0xc'),'fields':['body'],'type':_0x9cba('0xd')}],'timestamps':!![],'hooks':{'afterCreate':function(_0x3752b7,_0x15f4c2,_0x1d046f){var _0x2566ad=_0xe7926f[_0x9cba('0xe')];var _0x2f8c2d=_0x3752b7['get']({'plain':!![]});if(_0x2f8c2d['direction']['toLowerCase']()==='in'||_0x2f8c2d[_0x9cba('0xf')][_0x9cba('0x10')]()===_0x9cba('0x11')&&!_0x2f8c2d[_0x9cba('0x12')]&&!_[_0x9cba('0x13')](_0x2f8c2d[_0x9cba('0x14')])&&!_[_0x9cba('0x13')](_0x2f8c2d[_0x9cba('0x15')])){_0x2566ad[_0x9cba('0x16')][_0x9cba('0x17')]({'where':{'id':_0x2f8c2d[_0x9cba('0x15')]}})['then'](function(_0x3dad81){if(_0x3dad81){_0x3dad81[_0x9cba('0x18')]({'lastMsgAt':_0x2f8c2d[_0x9cba('0x19')],'lastMsgDirection':_0x2f8c2d[_0x9cba('0xf')]['toLowerCase']()});}})[_0x9cba('0x1a')](function(_0x40b75f){console[_0x9cba('0x1b')](_0x40b75f);});}if(_0x2f8c2d[_0x9cba('0xf')]===_0x9cba('0x11')&&!_0x2f8c2d[_0x9cba('0x12')]){var _0x300bb4;_0x2566ad[_0x9cba('0x1c')][_0x9cba('0x1d')]({'where':{'id':_0x2f8c2d['SmsAccountId']},'raw':!![]})[_0x9cba('0x1e')](function(_0x3be7d2){_0x300bb4=_0x3be7d2;if(_0x300bb4&&_0x300bb4[_0x9cba('0x1f')]){switch(_0x300bb4[_0x9cba('0x1f')]){case _0x9cba('0x20'):var _0x407b6a=require('twilio');if(_0x300bb4['accountSid']&&_0x300bb4[_0x9cba('0x21')]&&_0x300bb4[_0x9cba('0x22')]){var _0x2bb251=new _0x407b6a(_0x300bb4[_0x9cba('0x23')],_0x300bb4['authToken']);_0x2bb251[_0x9cba('0x24')][_0x9cba('0x25')]({'body':_0x2f8c2d[_0x9cba('0x26')],'to':_0x2f8c2d['phone'],'from':_0x300bb4['phone'],'statusCallback':_0x300bb4[_0x9cba('0x27')]+'/api/sms/messages/'+_0x2f8c2d['id']+_0x9cba('0x28')+_0x300bb4[_0x9cba('0x29')]})['then'](function(_0xa76fef){if(_0xa76fef[_0x9cba('0x2a')]){return _0x3752b7[_0x9cba('0x18')]({'messageId':_0xa76fef['sid']});}})['catch'](function(_0x4ddc53){logger[_0x9cba('0x1b')](_0x9cba('0x2b'),'afterCreate',_0x9cba('0x20'),util[_0x9cba('0x2c')](_0x4ddc53,{'showHidden':![],'depth':null}));});}else{logger['error']('SmsMessage,\x20%s,\x20%s,\x20%s','afterCreate',_0x9cba('0x20'),_0x9cba('0x2d'));}break;case'skebby':var _0x4e21e3=_0x9cba('0x2e');if(_0x300bb4['username']&&_0x300bb4[_0x9cba('0x2f')]){var _0x18e1d8={'recipient':[_0x2f8c2d[_0x9cba('0x22')]],'message':_0x2f8c2d['body'],'message_type':_0x300bb4[_0x9cba('0x30')]};if(_0x300bb4[_0x9cba('0x30')]&&_0x300bb4['smsMethod']!=='SI'){_0x18e1d8['sender']=_0x300bb4[_0x9cba('0x22')];}var _0x20fa6a={'url':_0x4e21e3+_0x9cba('0x31')+_0x300bb4[_0x9cba('0x32')]+_0x9cba('0x33')+_0x300bb4[_0x9cba('0x2f')],'method':_0x9cba('0x34')};rp(_0x20fa6a)[_0x9cba('0x1e')](function(_0x256d0b){var _0x40a2f5=_0x256d0b[_0x9cba('0x35')](';');var _0x20a3ad={'user_key':_0x40a2f5[0x0],'session_key':_0x40a2f5[0x1]};_0x20fa6a={'url':_0x4e21e3+'sms','method':_0x9cba('0x36'),'headers':{'user_key':_0x20a3ad[_0x9cba('0x37')],'Session_key':_0x20a3ad[_0x9cba('0x38')]},'json':!![],'body':_0x18e1d8};return rp(_0x20fa6a);})['then'](function(_0x460faf){if(_0x460faf[_0x9cba('0x39')]>=0x1){var _0x1f41aa={'messageId':_0x460faf['internal_order_id']};if(_0x300bb4['smsMethod']!=='GP'||!_0x300bb4[_0x9cba('0x3a')]){_0x1f41aa[_0x9cba('0x3b')]=!![];}return _0x3752b7[_0x9cba('0x18')](_0x1f41aa);}else{return logger[_0x9cba('0x1b')](_0x9cba('0x2b'),_0x9cba('0x3c'),_0x9cba('0x3d'),util[_0x9cba('0x2c')](_0x460faf,{'showHidden':![],'depth':null}));}})[_0x9cba('0x1a')](function(_0x19bb57){return logger['error']('SmsMessage,\x20%s,\x20%s,\x20%s','afterCreate',_0x9cba('0x3d'),util[_0x9cba('0x2c')](_0x19bb57,{'showHidden':![],'depth':null}));});}else{logger[_0x9cba('0x1b')](_0x9cba('0x2b'),'afterCreate',_0x9cba('0x3d'),_0x9cba('0x3e'));}break;case _0x9cba('0x3f'):if(_0x300bb4[_0x9cba('0x21')]){var _0x1c2129={'recipient':_0x2f8c2d[_0x9cba('0x22')],'message':_0x2f8c2d[_0x9cba('0x26')],'sender':_0x300bb4[_0x9cba('0x40')]||_0x300bb4[_0x9cba('0x22')],'authorization':_0x300bb4['authToken']};var _0x15f4c2={'method':'POST','uri':_0x9cba('0x41'),'body':_0x1c2129,'json':!![]};rp(_0x15f4c2)[_0x9cba('0x1e')](function(_0x35e554){var _0x30a1ce={'messageId':_0x35e554[_0x9cba('0x42')]};if(!_0x300bb4[_0x9cba('0x3a')]){_0x30a1ce['read']=!![];}return _0x3752b7[_0x9cba('0x18')](_0x30a1ce);})[_0x9cba('0x1a')](function(_0x42130a){logger[_0x9cba('0x1b')](_0x9cba('0x2b'),_0x9cba('0x3c'),_0x9cba('0x3f'),util[_0x9cba('0x2c')](_0x42130a,{'showHidden':![],'depth':null}));});}else{logger[_0x9cba('0x1b')](_0x9cba('0x2b'),_0x9cba('0x3c'),_0x9cba('0x3f'),_0x9cba('0x43'));}break;case'clicksend':if(_0x300bb4['username']&&_0x300bb4[_0x9cba('0x2f')]){var _0x1c2129={'messages':[{'source':_0x9cba('0x44'),'to':_0x2f8c2d[_0x9cba('0x22')],'body':_0x2f8c2d[_0x9cba('0x26')],'from':_0x300bb4[_0x9cba('0x40')]||_0x300bb4[_0x9cba('0x22')]}]};var _0x2f576b=util[_0x9cba('0x45')](_0x9cba('0x46'),_0x300bb4[_0x9cba('0x32')],_0x300bb4[_0x9cba('0x2f')]);var _0x15f4c2={'method':_0x9cba('0x36'),'uri':_0x9cba('0x47'),'body':_0x1c2129,'headers':{'Authorization':util[_0x9cba('0x45')]('Basic\x20%s',new Buffer(_0x2f576b)[_0x9cba('0x48')](_0x9cba('0x49')))},'json':!![]};rp(_0x15f4c2)[_0x9cba('0x1e')](function(_0x5cb638){if(_0x5cb638[_0x9cba('0x4a')]>=0xc8&&_0x5cb638[_0x9cba('0x4a')]<=0xce){if(_0x5cb638['data']&&_0x5cb638['data'][_0x9cba('0x4b')]>0x0){var _0x5a3afc=_[_0x9cba('0x4c')](_0x5cb638[_0x9cba('0x4d')]['messages']);var _0x2675eb={'messageId':_0x5a3afc['message_id']};if(!_0x300bb4[_0x9cba('0x3a')]){_0x2675eb['read']=!![];}return _0x3752b7[_0x9cba('0x18')](_0x2675eb);}else{logger['error'](_0x9cba('0x2b'),'afterCreate',_0x9cba('0x4e'),util['inspect'](_0x5cb638,{'showHidden':![],'depth':null}));}}else{logger['error'](_0x9cba('0x2b'),_0x9cba('0x3c'),'clickSend',util[_0x9cba('0x2c')](_0x5cb638,{'showHidden':![],'depth':null}));}})[_0x9cba('0x1a')](function(_0x152323){logger[_0x9cba('0x1b')](_0x9cba('0x2b'),_0x9cba('0x3c'),_0x9cba('0x4e'),util['inspect'](_0x152323,{'showHidden':![],'depth':null}));});}else{logger[_0x9cba('0x1b')](_0x9cba('0x2b'),_0x9cba('0x3c'),_0x9cba('0x4e'),'Missing\x20parameters:\x20username,\x20password');}break;case _0x9cba('0x4f'):if(_0x300bb4[_0x9cba('0x50')]&&_0x300bb4['authToken']){var _0x1c2129={'dst':_0x2f8c2d[_0x9cba('0x22')],'text':_0x2f8c2d['body'],'src':_0x300bb4[_0x9cba('0x40')]||_0x300bb4['phone'],'url':_0x300bb4['remote']+_0x9cba('0x51')+_0x2f8c2d['id']+_0x9cba('0x28')+_0x300bb4[_0x9cba('0x29')]};var _0x2f576b=util[_0x9cba('0x45')]('%s:%s',_0x300bb4[_0x9cba('0x50')],_0x300bb4[_0x9cba('0x21')]);var _0x15f4c2={'method':_0x9cba('0x36'),'uri':util[_0x9cba('0x45')](_0x9cba('0x52'),_0x300bb4[_0x9cba('0x50')]),'body':_0x1c2129,'headers':{'Authorization':util['format']('Basic\x20%s',new Buffer(_0x2f576b)[_0x9cba('0x48')]('base64'))},'json':!![]};rp(_0x15f4c2)[_0x9cba('0x1e')](function(_0x2b786e){var _0x416bcc={'messageId':_0x2b786e[_0x9cba('0x53')][0x0]};return _0x3752b7[_0x9cba('0x18')](_0x416bcc);})[_0x9cba('0x1a')](function(_0x5eefb3){logger[_0x9cba('0x1b')]('SmsMessage,\x20%s,\x20%s,\x20%s','afterCreate',_0x9cba('0x4f'),util[_0x9cba('0x2c')](_0x5eefb3,{'showHidden':![],'depth':null}));});}else{logger[_0x9cba('0x1b')](_0x9cba('0x2b'),'afterCreate',_0x9cba('0x4f'),'Missing\x20parameters:\x20authId,\x20authToken');}break;case _0x9cba('0x54'):if(_0x300bb4[_0x9cba('0x32')]&&_0x300bb4[_0x9cba('0x2f')]){if(_0x300bb4['baseUrl']){var _0x40a461={'method':'POST','uri':_0x300bb4[_0x9cba('0x55')]+_0x9cba('0x56'),'body':{'username':_0x300bb4[_0x9cba('0x32')],'password':_0x300bb4[_0x9cba('0x2f')]},'json':!![]};return rp(_0x40a461)[_0x9cba('0x1e')](function(_0x39db60){var _0x5e8d8a={'method':'POST','uri':_0x300bb4[_0x9cba('0x55')]+'/sms/2/text/advanced','body':{'messages':[{'from':_0x300bb4[_0x9cba('0x22')],'destinations':[{'to':_0x2f8c2d[_0x9cba('0x22')]}],'text':_0x2f8c2d[_0x9cba('0x26')],'notifyUrl':_0x300bb4[_0x9cba('0x27')]+'/api/sms/messages/'+_0x2f8c2d['id']+'/status?token='+_0x300bb4[_0x9cba('0x29')],'notifyContentType':_0x9cba('0x57'),'callbackData':_0x300bb4[_0x9cba('0x22')]+';'+_0x2f8c2d['body']}]},'headers':{'Authorization':'IBSSO\x20'+_0x39db60[_0x9cba('0x29')]},'json':!![]};return rp(_0x5e8d8a)['then'](function(_0xaf586c){if(_0xaf586c[_0x9cba('0x24')]){var _0x59c838={'messageId':_0xaf586c[_0x9cba('0x24')][0x0][_0x9cba('0x58')]};if(!_0x300bb4['deliveryReport']){_0x59c838[_0x9cba('0x3b')]=!![];}return _0x3752b7[_0x9cba('0x18')](_0x59c838);}else{return logger[_0x9cba('0x1b')]('SmsMessage,\x20%s,\x20%s,\x20%s',_0x9cba('0x3c'),_0x9cba('0x54'),util[_0x9cba('0x2c')](_0xaf586c,{'showHidden':![],'depth':null}));}});})[_0x9cba('0x1a')](function(_0x5d781c){return logger[_0x9cba('0x1b')](_0x9cba('0x2b'),_0x9cba('0x3c'),_0x9cba('0x54'),util['inspect'](_0x5d781c,{'showHidden':![],'depth':null}));});}else{logger[_0x9cba('0x1b')](_0x9cba('0x2b'),_0x9cba('0x3c'),_0x9cba('0x54'),_0x9cba('0x59'));}}else{logger[_0x9cba('0x1b')](_0x9cba('0x2b'),_0x9cba('0x3c'),_0x9cba('0x54'),_0x9cba('0x3e'));}break;case _0x9cba('0x5a'):var _0x55d5c2=require(_0x9cba('0x5b'));if(_0x300bb4['apiKey']){var _0x246686={};_0x246686[_0x9cba('0x5c')]=_0x300bb4[_0x9cba('0x32')];_0x246686['phone']=_0x2f8c2d[_0x9cba('0x22')];_0x246686[_0x9cba('0x5d')]=_0x300bb4[_0x9cba('0x22')];_0x246686[_0x9cba('0x5e')]=_0x2f8c2d[_0x9cba('0x26')];_0x246686[_0x9cba('0x5f')]=+new Date();var _0x9aec41='';var _0x34aefb='';var _0x435e41=Object[_0x9cba('0x60')](_0x246686);_0x435e41[_0x9cba('0x61')]();for(var _0x15a8ca=0x0;_0x15a8ca<_0x435e41[_0x9cba('0x62')];_0x15a8ca++){if(_0x9aec41!=''){_0x9aec41+='&';}_0x9aec41+=_0x435e41[_0x15a8ca]+'='+encodeURIComponent(_0x246686[_0x435e41[_0x15a8ca]]);_0x34aefb+=_0x246686[_0x435e41[_0x15a8ca]];}_0x34aefb+=_0x300bb4[_0x9cba('0x63')];_0x34aefb=_0x55d5c2['createHash'](_0x9cba('0x64'))[_0x9cba('0x18')](_0x34aefb)[_0x9cba('0x65')](_0x9cba('0x66'));if(_0x9aec41!==''){_0x9aec41+='&';}_0x9aec41+='signature='+_0x34aefb;var _0x20fa6a={'method':_0x9cba('0x34'),'uri':_0x300bb4['baseUrl']+_0x9cba('0x67')+_0x9aec41,'json':!![]};return rp(_0x20fa6a)[_0x9cba('0x1e')](function(_0x1d04f0){var _0x3335a8=Object[_0x9cba('0x60')](_0x1d04f0);if(_0x1d04f0[_0x3335a8[0x0]][_0x9cba('0x1b')]&&parseInt(_0x1d04f0[_0x3335a8[0x0]]['error'])===0x0){var _0x1d2784={'messageId':_0x1d04f0[_0x3335a8[0x0]][_0x9cba('0x68')]};if(!_0x300bb4[_0x9cba('0x3a')]){_0x1d2784['read']=!![];}return _0x3752b7['update'](_0x1d2784);}else{return logger['error'](_0x9cba('0x2b'),_0x9cba('0x3c'),_0x9cba('0x5a'),util[_0x9cba('0x2c')](_0x1d04f0[_0x9cba('0x1b')],{'showHidden':![],'depth':null}));}})[_0x9cba('0x1a')](function(_0x35e627){return logger[_0x9cba('0x1b')](_0x9cba('0x2b'),_0x9cba('0x3c'),_0x9cba('0x5a'),util['inspect'](_0x35e627,{'showHidden':![],'depth':null}));});}else{logger['error']('SmsMessage,\x20%s,\x20%s,\x20%s',_0x9cba('0x3c'),_0x9cba('0x5a'),_0x9cba('0x69'));}break;case _0x9cba('0x6a'):if(_0x300bb4['apiKey']){var _0x2d62a7={'method':_0x9cba('0x36'),'uri':'https://platform.clickatell.com/messages','headers':{'Authorization':_0x300bb4['apiKey']},'body':{'content':_0x2f8c2d[_0x9cba('0x26')],'to':[_0x2f8c2d[_0x9cba('0x22')]],'from':_0x300bb4[_0x9cba('0x22')],'binary':![],'clientMessageId':_0x9cba('0x6b'),'charset':_0x9cba('0x6c')},'json':!![]};rp(_0x2d62a7)[_0x9cba('0x1e')](function(_0x478194){if(!_0x478194[_0x9cba('0x1b')]){var _0x22709f={'messageId':_0x478194['messages'][0x0][_0x9cba('0x6d')]};if(!_0x300bb4[_0x9cba('0x3a')]){_0x22709f[_0x9cba('0x3b')]=!![];}return _0x3752b7[_0x9cba('0x18')](_0x22709f);}else{return logger[_0x9cba('0x1b')]('SmsMessage,\x20%s,\x20%s,\x20%s',_0x9cba('0x3c'),_0x9cba('0x6a'),util[_0x9cba('0x2c')](_0x478194[_0x9cba('0x1b')],{'showHidden':![],'depth':null}));}})[_0x9cba('0x1a')](function(_0x1a5803){return logger[_0x9cba('0x1b')](_0x9cba('0x2b'),'afterCreate','clickatell',util['inspect'](_0x1a5803,{'showHidden':![],'depth':null}));});}else{logger['error'](_0x9cba('0x2b'),_0x9cba('0x3c'),_0x9cba('0x6a'),_0x9cba('0x69'));}break;case _0x9cba('0x6e'):if(_0x300bb4[_0x9cba('0x32')]&&_0x300bb4[_0x9cba('0x2f')]){var _0x2f576b=util[_0x9cba('0x45')]('%s:%s',_0x300bb4['username'],_0x300bb4[_0x9cba('0x2f')]);var _0x15f4c2={'method':'POST','uri':_0x9cba('0x6f')+_0x300bb4[_0x9cba('0x70')]+'/messages','body':{'to':[_0x2f8c2d[_0x9cba('0x22')]],'text':_0x2f8c2d['body'],'from':_0x300bb4[_0x9cba('0x22')],'applicationId':_0x300bb4[_0x9cba('0x71')]},'headers':{'Authorization':util['format'](_0x9cba('0x72'),new Buffer(_0x2f576b)[_0x9cba('0x48')](_0x9cba('0x49')))},'json':!![]};rp(_0x15f4c2)['then'](function(_0x2df614){if(_0x2df614['id']){var _0x243a38={'messageId':_0x2df614['id']};return _0x3752b7['update'](_0x243a38);}else{logger['error']('SmsMessage,\x20%s,\x20%s,\x20%s',_0x9cba('0x3c'),_0x9cba('0x6e'),util[_0x9cba('0x2c')](_0x2df614,{'showHidden':![],'depth':null}));}})[_0x9cba('0x1a')](function(_0x11e83f){logger[_0x9cba('0x1b')](_0x9cba('0x2b'),_0x9cba('0x3c'),_0x9cba('0x6e'),util['inspect'](_0x11e83f,{'showHidden':![],'depth':null}));});}else{logger[_0x9cba('0x1b')]('SmsMessage,\x20%s,\x20%s,\x20%s',_0x9cba('0x3c'),_0x9cba('0x6e'),_0x9cba('0x3e'));}break;case'intelepeer':if(_0x300bb4[_0x9cba('0x63')]){var _0x4475e2={};var _0x20fa6a={'method':'POST','uri':_0x9cba('0x73'),'headers':{'Authorization':_0x9cba('0x74')+_0x300bb4[_0x9cba('0x63')],'Content-Type':_0x9cba('0x57')},'body':{'from':_0x300bb4[_0x9cba('0x22')],'to':_0x2f8c2d[_0x9cba('0x22')],'text':_0x2f8c2d[_0x9cba('0x26')]},'json':!![]};return rp(_0x20fa6a)[_0x9cba('0x1e')](function(_0x1f2289){if(_0x1f2289[_0x9cba('0x75')]==0xca){_0x4475e2['message']=_0x1f2289;var _0x5757c8={'method':_0x9cba('0x36'),'uri':_0x9cba('0x76'),'headers':{'Authorization':'Bearer\x20'+_0x300bb4[_0x9cba('0x63')],'Content-Type':_0x9cba('0x57')},'body':{'refid':_0x4475e2['message'][_0x9cba('0x77')]},'json':!![]};return rp(_0x5757c8)[_0x9cba('0x1e')](function(_0x290160){_0x4475e2[_0x9cba('0x78')]=_0x290160;var _0x21f769={'messageId':_0x4475e2['message'][_0x9cba('0x77')],'read':!![]};return _0x3752b7[_0x9cba('0x18')](_0x21f769);});}else{return logger[_0x9cba('0x1b')]('SmsMessage,\x20%s,\x20%s,\x20%s',_0x9cba('0x3c'),'intelepeer',util[_0x9cba('0x2c')](_0x1f2289,{'showHidden':![],'depth':null}));}})['catch'](function(_0x57740d){return logger[_0x9cba('0x1b')](_0x9cba('0x2b'),_0x9cba('0x3c'),_0x9cba('0x79'),util[_0x9cba('0x2c')](_0x57740d,{'showHidden':![],'depth':null}));});}else{return logger[_0x9cba('0x1b')](_0x9cba('0x2b'),_0x9cba('0x3c'),_0x9cba('0x79'),_0x9cba('0x7a'));}break;}}})[_0x9cba('0x7b')](function(){_0x1d046f();});}else{_0x1d046f();}}},'charset':_0x9cba('0x7c'),'collate':_0x9cba('0x7d')});};
\ No newline at end of file
index 56b8dc8..eca3c6b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0xd817=['catch','CreateSmsMessage','create','body','options','raw','stringify','lodash','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','defaults','redis','localhost','./smsMessage.socket','register','request','then','request\x20sent','debug','SmsMessage,\x20%s,\x20%s,\x20%s','error','code','message','info','SmsMessage,\x20%s,\x20%s','result'];(function(_0xc11e96,_0x2f0502){var _0x25e1ae=function(_0x7dde59){while(--_0x7dde59){_0xc11e96['push'](_0xc11e96['shift']());}};_0x25e1ae(++_0x2f0502);}(_0xd817,0x67));var _0x7d81=function(_0x47bc5e,_0x6fc500){_0x47bc5e=_0x47bc5e-0x0;var _0x323a59=_0xd817[_0x47bc5e];return _0x323a59;};'use strict';var _=require(_0x7d81('0x0'));var util=require('util');var moment=require('moment');var BPromise=require('bluebird');var rs=require(_0x7d81('0x1'));var fs=require('fs');var Redis=require(_0x7d81('0x2'));var db=require(_0x7d81('0x3'))['db'];var utils=require(_0x7d81('0x4'));var logger=require(_0x7d81('0x5'))(_0x7d81('0x6'));var config=require(_0x7d81('0x7'));var jayson=require(_0x7d81('0x8'));var client=jayson['client']['http']({'port':0x232a});config['redis']=_[_0x7d81('0x9')](config[_0x7d81('0xa')],{'host':_0x7d81('0xb'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config['redis']));require(_0x7d81('0xc'))[_0x7d81('0xd')](socket);function respondWithRpcPromise(_0x3ad05a,_0x4e733d,_0x50f86c){return new BPromise(function(_0x296311,_0xc16650){return client[_0x7d81('0xe')](_0x3ad05a,_0x50f86c)[_0x7d81('0xf')](function(_0x49550f){logger['info']('SmsMessage,\x20%s,\x20%s',_0x4e733d,_0x7d81('0x10'));logger[_0x7d81('0x11')](_0x7d81('0x12'),_0x4e733d,_0x7d81('0x10'),JSON['stringify'](_0x49550f));if(_0x49550f[_0x7d81('0x13')]){if(_0x49550f[_0x7d81('0x13')][_0x7d81('0x14')]===0x1f4){logger[_0x7d81('0x13')]('SmsMessage,\x20%s,\x20%s',_0x4e733d,_0x49550f[_0x7d81('0x13')][_0x7d81('0x15')]);return _0xc16650(_0x49550f[_0x7d81('0x13')]['message']);}logger[_0x7d81('0x13')]('SmsMessage,\x20%s,\x20%s',_0x4e733d,_0x49550f[_0x7d81('0x13')][_0x7d81('0x15')]);return _0x296311(_0x49550f[_0x7d81('0x13')][_0x7d81('0x15')]);}else{logger[_0x7d81('0x16')](_0x7d81('0x17'),_0x4e733d,_0x7d81('0x10'));_0x296311(_0x49550f[_0x7d81('0x18')][_0x7d81('0x15')]);}})[_0x7d81('0x19')](function(_0x3b2aba){logger[_0x7d81('0x13')](_0x7d81('0x17'),_0x4e733d,_0x3b2aba);_0xc16650(_0x3b2aba);});});}exports[_0x7d81('0x1a')]=function(_0xee82a3){var _0x3c63e0=this;return new Promise(function(_0x2084c8,_0x27ed75){return db['SmsMessage'][_0x7d81('0x1b')](_0xee82a3[_0x7d81('0x1c')],{'raw':_0xee82a3[_0x7d81('0x1d')]?_0xee82a3[_0x7d81('0x1d')][_0x7d81('0x1e')]===undefined?!![]:![]:!![]})[_0x7d81('0xf')](function(_0x2e3726){logger[_0x7d81('0x16')](_0x7d81('0x1a'),_0xee82a3);logger['debug'](_0x7d81('0x1a'),_0xee82a3,JSON[_0x7d81('0x1f')](_0x2e3726));_0x2084c8(_0x2e3726);})['catch'](function(_0x5a94c1){logger[_0x7d81('0x13')](_0x7d81('0x1a'),_0x5a94c1[_0x7d81('0x15')],_0xee82a3);_0x27ed75(_0x3c63e0[_0x7d81('0x13')](0x1f4,_0x5a94c1[_0x7d81('0x15')]));});});};
\ No newline at end of file
index 05c9e49..278cf1e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0x4f58=['remove','emit','removeListener','register','length','./smsMessage.events','save'];(function(_0x2a558d,_0x2df0ff){var _0xa7bc9c=function(_0x12a30e){while(--_0x12a30e){_0x2a558d['push'](_0x2a558d['shift']());}};_0xa7bc9c(++_0x2df0ff);}(_0x4f58,0x12b));var _0x84f5=function(_0xa41e1d,_0x1d09de){_0xa41e1d=_0xa41e1d-0x0;var _0x1e1a0b=_0x4f58[_0xa41e1d];return _0x1e1a0b;};'use strict';var SmsMessageEvents=require(_0x84f5('0x0'));var events=[_0x84f5('0x1'),_0x84f5('0x2'),'update'];function createListener(_0x2a32cb,_0x166423){return function(_0x31e427){_0x166423[_0x84f5('0x3')](_0x2a32cb,_0x31e427);};}function removeListener(_0x1e5293,_0x88f6f0){return function(){SmsMessageEvents[_0x84f5('0x4')](_0x1e5293,_0x88f6f0);};}exports[_0x84f5('0x5')]=function(_0x4aa114){for(var _0x34b5cd=0x0,_0x3e429c=events[_0x84f5('0x6')];_0x34b5cd<_0x3e429c;_0x34b5cd++){var _0x5c0863=events[_0x34b5cd];var _0x5379ae=createListener('smsMessage:'+_0x5c0863,_0x4aa114);SmsMessageEvents['on'](_0x5c0863,_0x5379ae);}};
\ No newline at end of file
index 1da89fc..19da750 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0xc742=['/:id/members','getMembers','getTeams','/:id/users','post','/:id/teams','addTeams','addAgents','put','update','delete','destroy','removeTeams','removeAgents','exports','multer','util','connect-timeout','express','Router','fs-extra','../../config/environment','get','isAuthenticated','index','/describe','describe','/:id','show'];(function(_0x56ba92,_0xb3c986){var _0x8fe94d=function(_0x23b21c){while(--_0x23b21c){_0x56ba92['push'](_0x56ba92['shift']());}};_0x8fe94d(++_0xb3c986);}(_0xc742,0xda));var _0x2c74=function(_0x31b619,_0x237281){_0x31b619=_0x31b619-0x0;var _0xcc1368=_0xc742[_0x31b619];return _0xcc1368;};'use strict';var multer=require(_0x2c74('0x0'));var util=require(_0x2c74('0x1'));var path=require('path');var timeout=require(_0x2c74('0x2'));var express=require(_0x2c74('0x3'));var router=express[_0x2c74('0x4')]();var fs_extra=require(_0x2c74('0x5'));var auth=require('../../components/auth/service');var interaction=require('../../components/interaction/service');var config=require(_0x2c74('0x6'));var controller=require('./smsQueue.controller');router[_0x2c74('0x7')]('/',auth[_0x2c74('0x8')](),controller[_0x2c74('0x9')]);router[_0x2c74('0x7')](_0x2c74('0xa'),auth['isAuthenticated'](),controller[_0x2c74('0xb')]);router['get'](_0x2c74('0xc'),auth[_0x2c74('0x8')](),controller[_0x2c74('0xd')]);router['get'](_0x2c74('0xe'),auth[_0x2c74('0x8')](),controller[_0x2c74('0xf')]);router[_0x2c74('0x7')]('/:id/teams',auth[_0x2c74('0x8')](),controller[_0x2c74('0x10')]);router[_0x2c74('0x7')](_0x2c74('0x11'),auth[_0x2c74('0x8')](),controller['getAgents']);router[_0x2c74('0x12')]('/',auth['isAuthenticated'](),controller['create']);router[_0x2c74('0x12')](_0x2c74('0x13'),auth[_0x2c74('0x8')](),controller[_0x2c74('0x14')]);router['post'](_0x2c74('0x11'),auth['isAuthenticated'](),controller[_0x2c74('0x15')]);router[_0x2c74('0x16')]('/:id',auth[_0x2c74('0x8')](),controller[_0x2c74('0x17')]);router[_0x2c74('0x18')](_0x2c74('0xc'),auth[_0x2c74('0x8')](),controller[_0x2c74('0x19')]);router[_0x2c74('0x18')](_0x2c74('0x13'),auth['isAuthenticated'](),controller[_0x2c74('0x1a')]);router[_0x2c74('0x18')](_0x2c74('0x11'),auth[_0x2c74('0x8')](),controller[_0x2c74('0x1b')]);module[_0x2c74('0x1c')]=router;
\ No newline at end of file
index a59ee7a..503dde1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0x6c26=['roundrobin','sequelize','name','STRING','INTEGER','ENUM','beepall'];(function(_0x2a990c,_0x241e85){var _0x47d328=function(_0xdad74){while(--_0xdad74){_0x2a990c['push'](_0x2a990c['shift']());}};_0x47d328(++_0x241e85);}(_0x6c26,0xda));var _0x66c2=function(_0x28f3c2,_0x2522f7){_0x28f3c2=_0x28f3c2-0x0;var _0x2a2483=_0x6c26[_0x28f3c2];return _0x2a2483;};'use strict';var Sequelize=require(_0x66c2('0x0'));module['exports']={'name':{'type':Sequelize['STRING'],'unique':_0x66c2('0x1'),'validate':{'notEmpty':!![],'is':/^[A-Za-z0-9\.\_]+$/i}},'description':{'type':Sequelize[_0x66c2('0x2')]},'timeout':{'type':Sequelize[_0x66c2('0x3')],'validate':{'min':0x1,'max':0x20c49b}},'strategy':{'type':Sequelize[_0x66c2('0x4')]('rrmemory',_0x66c2('0x5'),_0x66c2('0x6'))}};
\ No newline at end of file
index 50bdd57..d258365 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0x1740=['ids','Agents','interface','flatMap','sequelize','transaction','findOrCreate','forEach','emit','removeTeams','field','tq.TeamId','from','team_has_sms_queues','join','SmsQueueId\x20=\x20?','clone','ut.UserId\x20=\x20?','push','toString','QueryTypes','SELECT','TeamId','includes','union','value','isEmpty','removeAgents','userSmsQueue:remove','addAgents','omit','spread','isArray','getAgents','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','mustache','util','to-csv','ejs','lodash','squel','jsforce','desk.js','querystring','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/license/util','../../mysqldb','redis','defaults','socket.io-emitter','./smsQueue.socket','register','sendStatus','status','end','json','offset','undefined','limit','count','set','Content-Range','apply','reject','save','update','then','destroy','get','UserProfileResource','stack','name','index','map','SmsQueue','rawAttributes','fieldName','key','model','query','keys','filters','intersection','attributes','fields','length','nolimit','order','sort','where','filter','type','VIRTUAL','merge','options','includeAll','findAll','rows','catch','show','params','create','body','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','SmsQueues','UserProfileSection','find','userProfileId','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','describe','getMembers','findOne','UserSmsQueue','hasOwnProperty','SmsQueueId','User','UserId','agent','updatedAt','createdAt','format','%s/%s','SIP','smsPause','getTeams','Team','pick','addTeams'];(function(_0x1d24eb,_0x12295b){var _0x1dc576=function(_0x4d5770){while(--_0x4d5770){_0x1d24eb['push'](_0x1d24eb['shift']());}};_0x1dc576(++_0x12295b);}(_0x1740,0x1c6));var _0x0174=function(_0xb259f0,_0xc73f52){_0xb259f0=_0xb259f0-0x0;var _0x343e7d=_0x1740[_0xb259f0];return _0x343e7d;};'use strict';var emlformat=require(_0x0174('0x0'));var rimraf=require(_0x0174('0x1'));var zipdir=require(_0x0174('0x2'));var jsonpatch=require(_0x0174('0x3'));var rp=require(_0x0174('0x4'));var moment=require(_0x0174('0x5'));var BPromise=require('bluebird');var Mustache=require(_0x0174('0x6'));var util=require(_0x0174('0x7'));var path=require('path');var sox=require('sox');var csv=require(_0x0174('0x8'));var ejs=require(_0x0174('0x9'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x0174('0xa'));var squel=require(_0x0174('0xb'));var crypto=require('crypto');var jsforce=require(_0x0174('0xc'));var deskjs=require(_0x0174('0xd'));var toCsv=require(_0x0174('0x8'));var querystring=require(_0x0174('0xe'));var Papa=require('papaparse');var Redis=require(_0x0174('0xf'));var authService=require('../../components/auth/service');var qs=require(_0x0174('0x10'));var as=require(_0x0174('0x11'));var hardwareService=require(_0x0174('0x12'));var logger=require(_0x0174('0x13'))(_0x0174('0x14'));var utils=require('../../config/utils');var config=require('../../config/environment');var licenseUtil=require(_0x0174('0x15'));var db=require(_0x0174('0x16'))['db'];config[_0x0174('0x17')]=_[_0x0174('0x18')](config['redis'],{'host':'localhost','port':0x18eb});var socket=require(_0x0174('0x19'))(new Redis(config[_0x0174('0x17')]));require(_0x0174('0x1a'))[_0x0174('0x1b')](socket);function respondWithStatusCode(_0x5951a7,_0x1c7e38){_0x1c7e38=_0x1c7e38||0xcc;return function(_0x513aba){if(_0x513aba){return _0x5951a7[_0x0174('0x1c')](_0x1c7e38);}return _0x5951a7[_0x0174('0x1d')](_0x1c7e38)[_0x0174('0x1e')]();};}function respondWithResult(_0x59f22a,_0x2954c1){_0x2954c1=_0x2954c1||0xc8;return function(_0x3b05d3){if(_0x3b05d3){return _0x59f22a[_0x0174('0x1d')](_0x2954c1)[_0x0174('0x1f')](_0x3b05d3);}};}function respondWithFilteredResult(_0x8130e,_0x495cd3){return function(_0x12ef40){if(_0x12ef40){var _0x34674d=typeof _0x495cd3[_0x0174('0x20')]===_0x0174('0x21')&&typeof _0x495cd3[_0x0174('0x22')]===_0x0174('0x21');var _0x19ba81=_0x12ef40['count'];var _0x1b7b78=_0x34674d?0x0:_0x495cd3[_0x0174('0x20')];var _0xd49d9b=_0x34674d?_0x12ef40[_0x0174('0x23')]:_0x495cd3[_0x0174('0x20')]+_0x495cd3[_0x0174('0x22')];var _0x57d296;if(_0xd49d9b>=_0x19ba81){_0xd49d9b=_0x19ba81;_0x57d296=0xc8;}else{_0x57d296=0xce;}_0x8130e[_0x0174('0x1d')](_0x57d296);return _0x8130e[_0x0174('0x24')](_0x0174('0x25'),_0x1b7b78+'-'+_0xd49d9b+'/'+_0x19ba81)[_0x0174('0x1f')](_0x12ef40);}return null;};}function patchUpdates(_0xc5bab9){return function(_0x4fd211){try{jsonpatch[_0x0174('0x26')](_0x4fd211,_0xc5bab9,!![]);}catch(_0x563afe){return BPromise[_0x0174('0x27')](_0x563afe);}return _0x4fd211[_0x0174('0x28')]();};}function saveUpdates(_0x207622,_0x26da7d){return function(_0x2096b4){if(_0x2096b4){return _0x2096b4[_0x0174('0x29')](_0x207622)[_0x0174('0x2a')](function(_0x3866fd){return _0x3866fd;});}return null;};}function removeEntity(_0x196c70,_0x3282f4){return function(_0x35fb4d){if(_0x35fb4d){return _0x35fb4d[_0x0174('0x2b')]()[_0x0174('0x2a')](function(){var _0x4aa08e=_0x35fb4d[_0x0174('0x2c')]({'plain':!![]});var _0xf7e0c5='SmsQueues';return db[_0x0174('0x2d')][_0x0174('0x2b')]({'where':{'type':_0xf7e0c5,'resourceId':_0x4aa08e['id']}})['then'](function(){return _0x35fb4d;});})['then'](function(){_0x196c70[_0x0174('0x1d')](0xcc)[_0x0174('0x1e')]();});}};}function handleEntityNotFound(_0x33675f,_0x5094e7){return function(_0x56968e){if(!_0x56968e){_0x33675f[_0x0174('0x1c')](0x194);}return _0x56968e;};}function handleError(_0x4a5cc4,_0x369e29){_0x369e29=_0x369e29||0x1f4;return function(_0x4a9501){logger['error'](_0x4a9501[_0x0174('0x2e')]);if(_0x4a9501['name']){delete _0x4a9501[_0x0174('0x2f')];}_0x4a5cc4[_0x0174('0x1d')](_0x369e29)['send'](_0x4a9501);};}exports[_0x0174('0x30')]=function(_0x2e859d,_0x516be8){var _0x352f57={},_0x6952db={},_0x74524e={'count':0x0,'rows':[]};var _0x56cda7=_[_0x0174('0x31')](db[_0x0174('0x32')][_0x0174('0x33')],function(_0x5b0382){return{'name':_0x5b0382[_0x0174('0x34')],'type':_0x5b0382['type'][_0x0174('0x35')]};});_0x6952db[_0x0174('0x36')]=_[_0x0174('0x31')](_0x56cda7,'name');_0x6952db[_0x0174('0x37')]=_[_0x0174('0x38')](_0x2e859d['query']);_0x6952db[_0x0174('0x39')]=_[_0x0174('0x3a')](_0x6952db[_0x0174('0x36')],_0x6952db['query']);_0x352f57[_0x0174('0x3b')]=_[_0x0174('0x3a')](_0x6952db[_0x0174('0x36')],qs[_0x0174('0x3c')](_0x2e859d[_0x0174('0x37')][_0x0174('0x3c')]));_0x352f57[_0x0174('0x3b')]=_0x352f57[_0x0174('0x3b')][_0x0174('0x3d')]?_0x352f57[_0x0174('0x3b')]:_0x6952db[_0x0174('0x36')];if(!_0x2e859d[_0x0174('0x37')]['hasOwnProperty'](_0x0174('0x3e'))){_0x352f57[_0x0174('0x22')]=qs[_0x0174('0x22')](_0x2e859d[_0x0174('0x37')]['limit']);_0x352f57[_0x0174('0x20')]=qs['offset'](_0x2e859d[_0x0174('0x37')][_0x0174('0x20')]);}_0x352f57[_0x0174('0x3f')]=qs[_0x0174('0x40')](_0x2e859d[_0x0174('0x37')][_0x0174('0x40')]);_0x352f57[_0x0174('0x41')]=qs['filters'](_['pick'](_0x2e859d[_0x0174('0x37')],_0x6952db['filters']),_0x56cda7);if(_0x2e859d[_0x0174('0x37')][_0x0174('0x42')]){_0x352f57[_0x0174('0x41')]=_['merge'](_0x352f57[_0x0174('0x41')],{'$or':_['map'](_0x56cda7,function(_0x1c246b){if(_0x1c246b[_0x0174('0x43')]!==_0x0174('0x44')){var _0x5cc6c8={};_0x5cc6c8[_0x1c246b[_0x0174('0x2f')]]={'$like':'%'+_0x2e859d[_0x0174('0x37')][_0x0174('0x42')]+'%'};return _0x5cc6c8;}})});}_0x352f57=_[_0x0174('0x45')]({},_0x352f57,_0x2e859d[_0x0174('0x46')]);var _0x104261={'where':_0x352f57['where']};return db[_0x0174('0x32')]['count'](_0x104261)[_0x0174('0x2a')](function(_0x5d2a6e){_0x74524e['count']=_0x5d2a6e;if(_0x2e859d[_0x0174('0x37')][_0x0174('0x47')]){_0x352f57['include']=[{'all':!![]}];}return db[_0x0174('0x32')][_0x0174('0x48')](_0x352f57);})[_0x0174('0x2a')](function(_0x7d0022){_0x74524e[_0x0174('0x49')]=_0x7d0022;return _0x74524e;})['then'](respondWithFilteredResult(_0x516be8,_0x352f57))[_0x0174('0x4a')](handleError(_0x516be8,null));};exports[_0x0174('0x4b')]=function(_0x9e4243,_0x2ab2e2){var _0x4159e3={'raw':!![],'where':{'id':_0x9e4243[_0x0174('0x4c')]['id']}},_0x4a002b={};_0x4a002b['model']=_[_0x0174('0x38')](db[_0x0174('0x32')]['rawAttributes']);_0x4a002b['query']=_[_0x0174('0x38')](_0x9e4243[_0x0174('0x37')]);_0x4a002b[_0x0174('0x39')]=_[_0x0174('0x3a')](_0x4a002b[_0x0174('0x36')],_0x4a002b[_0x0174('0x37')]);_0x4159e3[_0x0174('0x3b')]=_[_0x0174('0x3a')](_0x4a002b[_0x0174('0x36')],qs[_0x0174('0x3c')](_0x9e4243['query'][_0x0174('0x3c')]));_0x4159e3[_0x0174('0x3b')]=_0x4159e3[_0x0174('0x3b')][_0x0174('0x3d')]?_0x4159e3[_0x0174('0x3b')]:_0x4a002b['model'];if(_0x9e4243[_0x0174('0x37')][_0x0174('0x47')]){_0x4159e3['include']=[{'all':!![]}];}_0x4159e3=_[_0x0174('0x45')]({},_0x4159e3,_0x9e4243[_0x0174('0x46')]);return db[_0x0174('0x32')]['find'](_0x4159e3)[_0x0174('0x2a')](handleEntityNotFound(_0x2ab2e2,null))[_0x0174('0x2a')](respondWithResult(_0x2ab2e2,null))[_0x0174('0x4a')](handleError(_0x2ab2e2,null));};exports['create']=function(_0x448273,_0x3a0638){return db['SmsQueue'][_0x0174('0x4d')](_0x448273[_0x0174('0x4e')],{})[_0x0174('0x2a')](function(_0x4d8fcc){var _0x34b610=_0x448273[_0x0174('0x4f')][_0x0174('0x2c')]({'plain':!![]});if(!_0x34b610)throw new Error(_0x0174('0x50'));if(_0x34b610['role']==='user'){var _0xe5286f=_0x4d8fcc[_0x0174('0x2c')]({'plain':!![]});var _0x3a140f=_0x0174('0x51');return db[_0x0174('0x52')][_0x0174('0x53')]({'where':{'name':_0x3a140f,'userProfileId':_0x34b610[_0x0174('0x54')]},'raw':!![]})[_0x0174('0x2a')](function(_0x283625){if(_0x283625&&_0x283625[_0x0174('0x55')]===0x0){return db[_0x0174('0x2d')][_0x0174('0x4d')]({'name':_0xe5286f['name'],'resourceId':_0xe5286f['id'],'type':_0x283625[_0x0174('0x2f')],'sectionId':_0x283625['id']},{})[_0x0174('0x2a')](function(){return _0x4d8fcc;});}else{return _0x4d8fcc;}})[_0x0174('0x4a')](function(_0x5a858f){logger['error'](_0x0174('0x56'),_0x5a858f);throw _0x5a858f;});}return _0x4d8fcc;})[_0x0174('0x2a')](respondWithResult(_0x3a0638,0xc9))['catch'](handleError(_0x3a0638,null));};exports[_0x0174('0x29')]=function(_0x37c0db,_0x5ddb6b){if(_0x37c0db[_0x0174('0x4e')]['id']){delete _0x37c0db[_0x0174('0x4e')]['id'];}return db[_0x0174('0x32')][_0x0174('0x53')]({'where':{'id':_0x37c0db[_0x0174('0x4c')]['id']}})[_0x0174('0x2a')](handleEntityNotFound(_0x5ddb6b,null))[_0x0174('0x2a')](saveUpdates(_0x37c0db['body'],null))['then'](respondWithResult(_0x5ddb6b,null))[_0x0174('0x4a')](handleError(_0x5ddb6b,null));};exports[_0x0174('0x2b')]=function(_0x5f3197,_0x3ab6ab){return db[_0x0174('0x32')]['find']({'where':{'id':_0x5f3197[_0x0174('0x4c')]['id']}})['then'](handleEntityNotFound(_0x3ab6ab,null))[_0x0174('0x2a')](removeEntity(_0x3ab6ab,null))['catch'](handleError(_0x3ab6ab,null));};exports['describe']=function(_0x171ee4,_0x35157d){return db[_0x0174('0x32')][_0x0174('0x57')]()[_0x0174('0x2a')](respondWithResult(_0x35157d,null))[_0x0174('0x4a')](handleError(_0x35157d,null));};exports[_0x0174('0x58')]=function(_0x2973b1,_0x56111,_0x33cd4d){var _0x9d444f={'raw':!![],'where':{}},_0x4a2e59={},_0x59e514;return db[_0x0174('0x32')][_0x0174('0x59')]({'where':{'id':_0x2973b1[_0x0174('0x4c')]['id']}})[_0x0174('0x2a')](handleEntityNotFound(_0x56111,null))[_0x0174('0x2a')](function(_0x163279){if(_0x163279){_0x59e514=_0x163279[_0x0174('0x2c')]({'plain':!![]});_0x4a2e59[_0x0174('0x36')]=_[_0x0174('0x38')](db[_0x0174('0x5a')][_0x0174('0x33')]);_0x4a2e59[_0x0174('0x37')]=_['keys'](_0x2973b1[_0x0174('0x37')]);_0x4a2e59[_0x0174('0x39')]=_[_0x0174('0x3a')](_0x4a2e59[_0x0174('0x36')],_0x4a2e59['query']);_0x9d444f['attributes']=_['intersection'](_0x4a2e59[_0x0174('0x36')],qs['fields'](_0x2973b1[_0x0174('0x37')][_0x0174('0x3c')]));_0x9d444f[_0x0174('0x3b')]=_0x9d444f['attributes'][_0x0174('0x3d')]?_0x9d444f[_0x0174('0x3b')]:_0x4a2e59[_0x0174('0x36')];if(!_0x2973b1['query'][_0x0174('0x5b')](_0x0174('0x3e'))){_0x9d444f[_0x0174('0x22')]=qs[_0x0174('0x22')](_0x2973b1[_0x0174('0x37')][_0x0174('0x22')]);_0x9d444f[_0x0174('0x20')]=qs[_0x0174('0x20')](_0x2973b1[_0x0174('0x37')]['offset']);}_0x9d444f[_0x0174('0x3f')]=qs[_0x0174('0x40')](_0x2973b1[_0x0174('0x37')][_0x0174('0x40')]);_0x9d444f[_0x0174('0x41')]=qs[_0x0174('0x39')](_['pick'](_0x2973b1[_0x0174('0x37')],_0x4a2e59[_0x0174('0x39')]));_0x9d444f[_0x0174('0x41')][_0x0174('0x5c')]=_0x163279['id'];if(_0x2973b1['query'][_0x0174('0x42')]){_0x9d444f[_0x0174('0x41')]=_[_0x0174('0x45')](_0x9d444f[_0x0174('0x41')],{'$or':_[_0x0174('0x31')](_0x9d444f[_0x0174('0x3b')],function(_0x5614b2){var _0x315ada={};_0x315ada[_0x5614b2]={'$like':'%'+_0x2973b1[_0x0174('0x37')][_0x0174('0x42')]+'%'};return _0x315ada;})});}_0x9d444f=_[_0x0174('0x45')]({},_0x9d444f,_0x2973b1[_0x0174('0x46')]);return db[_0x0174('0x5a')][_0x0174('0x48')](_0x9d444f);}})[_0x0174('0x2a')](function(_0x2b38e8){if(_0x2b38e8){return db[_0x0174('0x5d')]['findAndCountAll']({'where':{'id':_['map'](_0x2b38e8,_0x0174('0x5e')),'role':_0x0174('0x5f')},'attributes':['id',_0x0174('0x2f'),'smsPause',_0x0174('0x60'),_0x0174('0x61')]});}})[_0x0174('0x2a')](function(_0x56748f){if(_0x56748f){return{'count':_0x56748f['count'],'rows':_[_0x0174('0x31')](_0x56748f[_0x0174('0x49')],function(_0x554b77){return{'membername':_0x554b77['name'],'UserId':_0x554b77['id'],'queue_name':_0x59e514[_0x0174('0x2f')],'SmsQueueId':_0x59e514['id'],'interface':util[_0x0174('0x62')](_0x0174('0x63'),_0x0174('0x64'),_0x554b77[_0x0174('0x2f')]),'penalty':0x0,'paused':_0x554b77[_0x0174('0x65')],'createdAt':_0x554b77['createdAt'],'updatedAt':_0x554b77[_0x0174('0x60')]};})};}else{return{'count':0x0,'rows':[]};}})['then'](respondWithFilteredResult(_0x56111,_0x9d444f))[_0x0174('0x4a')](handleError(_0x56111,null));};exports[_0x0174('0x66')]=function(_0x24ab3b,_0x522282,_0x345b76){var _0x7265c6={};var _0x57cc3e={};var _0x15990b;var _0xf74f34;return db['SmsQueue'][_0x0174('0x59')]({'where':{'id':_0x24ab3b[_0x0174('0x4c')]['id']}})[_0x0174('0x2a')](handleEntityNotFound(_0x522282,null))[_0x0174('0x2a')](function(_0x45ce58){if(_0x45ce58){_0x15990b=_0x45ce58;_0x57cc3e[_0x0174('0x36')]=_[_0x0174('0x38')](db[_0x0174('0x67')][_0x0174('0x33')]);_0x57cc3e[_0x0174('0x37')]=_[_0x0174('0x38')](_0x24ab3b['query']);_0x57cc3e[_0x0174('0x39')]=_['intersection'](_0x57cc3e[_0x0174('0x36')],_0x57cc3e[_0x0174('0x37')]);_0x7265c6[_0x0174('0x3b')]=_[_0x0174('0x3a')](_0x57cc3e[_0x0174('0x36')],qs[_0x0174('0x3c')](_0x24ab3b[_0x0174('0x37')][_0x0174('0x3c')]));_0x7265c6['attributes']=_0x7265c6[_0x0174('0x3b')][_0x0174('0x3d')]?_0x7265c6[_0x0174('0x3b')]:_0x57cc3e[_0x0174('0x36')];_0x7265c6['order']=qs[_0x0174('0x40')](_0x24ab3b[_0x0174('0x37')][_0x0174('0x40')]);_0x7265c6[_0x0174('0x41')]=qs[_0x0174('0x39')](_[_0x0174('0x68')](_0x24ab3b[_0x0174('0x37')],_0x57cc3e[_0x0174('0x39')]));if(_0x24ab3b['query'][_0x0174('0x42')]){_0x7265c6[_0x0174('0x41')]=_[_0x0174('0x45')](_0x7265c6['where'],{'$or':_['map'](_0x7265c6[_0x0174('0x3b')],function(_0x34f947){var _0x5f1d75={};_0x5f1d75[_0x34f947]={'$like':'%'+_0x24ab3b[_0x0174('0x37')][_0x0174('0x42')]+'%'};return _0x5f1d75;})});}_0x7265c6=_[_0x0174('0x45')]({},_0x7265c6,_0x24ab3b[_0x0174('0x46')]);return _0x15990b[_0x0174('0x66')](_0x7265c6);}})[_0x0174('0x2a')](function(_0x1e5c78){if(_0x1e5c78){_0xf74f34=_0x1e5c78[_0x0174('0x3d')];if(!_0x24ab3b[_0x0174('0x37')][_0x0174('0x5b')]('nolimit')){_0x7265c6[_0x0174('0x22')]=qs[_0x0174('0x22')](_0x24ab3b[_0x0174('0x37')][_0x0174('0x22')]);_0x7265c6[_0x0174('0x20')]=qs[_0x0174('0x20')](_0x24ab3b['query'][_0x0174('0x20')]);}return _0x15990b[_0x0174('0x66')](_0x7265c6);}})['then'](function(_0xb30ca1){if(_0xb30ca1){return _0xb30ca1?{'count':_0xf74f34,'rows':_0xb30ca1}:null;}})[_0x0174('0x2a')](respondWithResult(_0x522282,null))[_0x0174('0x4a')](handleError(_0x522282,null));};exports[_0x0174('0x69')]=function(_0x1ddcd8,_0x58265e,_0x13dc0c){var _0x27e37e=_0x1ddcd8['body'][_0x0174('0x6a')];return db[_0x0174('0x67')][_0x0174('0x48')]({'where':{'id':_0x27e37e},'attributes':['id'],'include':[{'model':db[_0x0174('0x5d')],'as':_0x0174('0x6b'),'attributes':['id',_0x0174('0x2f'),'online','voicePause',_0x0174('0x6c')],'raw':!![]}]})[_0x0174('0x2a')](function(_0x48d9af){if(_0x48d9af){var _0x50f8d2=_[_0x0174('0x6d')](_0x48d9af,function(_0x11139e){var _0x1e524f=_0x11139e[_0x0174('0x2c')]({'plain':!![]});return _0x1e524f['Agents'];});return db[_0x0174('0x32')][_0x0174('0x53')]({'where':{'id':_0x1ddcd8[_0x0174('0x4c')]['id']}})[_0x0174('0x2a')](function(_0x4c1d84){return db[_0x0174('0x6e')][_0x0174('0x6f')](function(_0x2268bc){return _0x4c1d84['addTeams'](_0x27e37e,{'transaction':_0x2268bc})[_0x0174('0x2a')](function(){return BPromise['each'](_0x50f8d2,function(_0x3ae4a0){return db[_0x0174('0x5a')][_0x0174('0x70')]({'where':{'UserId':_0x3ae4a0['id'],'SmsQueueId':_0x1ddcd8[_0x0174('0x4c')]['id']},'transaction':_0x2268bc});});})[_0x0174('0x2a')](function(){_0x50f8d2[_0x0174('0x71')](function(_0x3ff2a4){socket[_0x0174('0x72')]('userSmsQueue:save',{'UserId':_0x3ff2a4['id'],'SmsQueueId':_0x4c1d84['id']});});});});});}})['then'](respondWithStatusCode(_0x58265e,null))[_0x0174('0x4a')](handleError(_0x58265e,null));};exports[_0x0174('0x73')]=function(_0x207ded,_0x3ec5f7,_0x5993ec){return db[_0x0174('0x67')][_0x0174('0x48')]({'where':{'id':_0x207ded[_0x0174('0x37')]['ids']},'attributes':['id'],'include':[{'model':db[_0x0174('0x5d')],'as':'Agents','attributes':['id'],'raw':!![]}]})[_0x0174('0x2a')](handleEntityNotFound(_0x3ec5f7,null))[_0x0174('0x2a')](function(_0x464ff6){var _0x3a1039=_[_0x0174('0x31')](_0x464ff6,'id');var _0x223da7=[];var _0x22e1e8=[];var _0x8c1a=squel['select']();_0x8c1a[_0x0174('0x74')](_0x0174('0x75'))[_0x0174('0x76')](_0x0174('0x77'),'tq')[_0x0174('0x78')]('user_has_teams','ut','ut.TeamId\x20=\x20tq.TeamId')[_0x0174('0x41')](_0x0174('0x79'),_0x207ded[_0x0174('0x4c')]['id']);for(var _0x4141b1=0x0;_0x4141b1<_0x464ff6[_0x0174('0x3d')];_0x4141b1+=0x1){let _0x48f87a=_0x464ff6[_0x4141b1];for(var _0x4e785d=0x0;_0x4e785d<_0x48f87a['Agents']['length'];_0x4e785d+=0x1){let _0x48533e=_0x48f87a[_0x0174('0x6b')][_0x4e785d];var _0x498bfa=_0x8c1a[_0x0174('0x7a')]();_0x498bfa[_0x0174('0x41')](_0x0174('0x7b'),_0x48533e['id']);_0x22e1e8[_0x0174('0x7c')](db[_0x0174('0x6e')][_0x0174('0x37')](_0x498bfa[_0x0174('0x7d')](),{'type':db['sequelize'][_0x0174('0x7e')][_0x0174('0x7f')]})[_0x0174('0x2a')](function(_0x547949){if(_0x547949['length']===0x1){return _0x48533e['id'];}else{var _0x69b336=_['every'](_['map'](_0x547949,_0x0174('0x80')),function(_0x29e9b7){return _[_0x0174('0x81')](_0x3a1039,_0x29e9b7);});if(_0x69b336){return _0x48533e['id'];}}}));}}return BPromise['all'](_0x22e1e8)[_0x0174('0x2a')](function(_0x3498e4){_0x223da7=_(_0x223da7)[_0x0174('0x82')](_0x3498e4)['compact']()[_0x0174('0x83')]();return db['SmsQueue'][_0x0174('0x53')]({'where':{'id':_0x207ded[_0x0174('0x4c')]['id']}})[_0x0174('0x2a')](function(_0x4fba24){return db[_0x0174('0x6e')]['transaction'](function(_0x272201){return _0x4fba24[_0x0174('0x73')](_0x207ded[_0x0174('0x37')][_0x0174('0x6a')],{'transaction':_0x272201})[_0x0174('0x2a')](function(){if(!_[_0x0174('0x84')](_0x223da7)){return _0x4fba24[_0x0174('0x85')](_0x223da7,{'transaction':_0x272201});}})[_0x0174('0x2a')](function(){_0x223da7[_0x0174('0x71')](function(_0x1a8b80){socket[_0x0174('0x72')](_0x0174('0x86'),{'UserId':_0x1a8b80,'SmsQueueId':_0x4fba24['id']});});});});});});})['then'](respondWithStatusCode(_0x3ec5f7,null))['catch'](handleError(_0x3ec5f7,null));};exports[_0x0174('0x87')]=function(_0x2de584,_0x4068c3,_0x28bd2c){return db[_0x0174('0x32')][_0x0174('0x53')]({'where':{'id':_0x2de584['params']['id']}})['then'](handleEntityNotFound(_0x4068c3,null))[_0x0174('0x2a')](function(_0x5cf98d){if(_0x5cf98d){return _0x5cf98d['addAgents'](_0x2de584[_0x0174('0x4e')][_0x0174('0x6a')],_[_0x0174('0x88')](_0x2de584[_0x0174('0x4e')],[_0x0174('0x6a'),'id'])||{})[_0x0174('0x89')](function(_0x261800){for(var _0x3608a9=0x0;_0x3608a9<_0x2de584['body'][_0x0174('0x6a')]['length'];_0x3608a9+=0x1){socket['emit']('userSmsQueue:save',{'UserId':Number(_0x2de584[_0x0174('0x4e')][_0x0174('0x6a')][_0x3608a9]),'SmsQueueId':Number(_0x2de584[_0x0174('0x4c')]['id'])});}return _0x261800;});}})[_0x0174('0x2a')](respondWithResult(_0x4068c3,null))['catch'](handleError(_0x4068c3,null));};exports['removeAgents']=function(_0x1b18cb,_0x3d5995,_0x195883){return db['SmsQueue'][_0x0174('0x53')]({'where':{'id':_0x1b18cb[_0x0174('0x4c')]['id']}})['then'](handleEntityNotFound(_0x3d5995,null))[_0x0174('0x2a')](function(_0x4e2555){if(_0x4e2555){return _0x4e2555[_0x0174('0x85')](_0x1b18cb['query'][_0x0174('0x6a')])[_0x0174('0x2a')](function(){if(_[_0x0174('0x8a')](_0x1b18cb[_0x0174('0x37')][_0x0174('0x6a')])){for(var _0x298f87=0x0;_0x298f87<_0x1b18cb[_0x0174('0x37')][_0x0174('0x6a')]['length'];_0x298f87+=0x1){socket['emit'](_0x0174('0x86'),{'UserId':Number(_0x1b18cb[_0x0174('0x37')][_0x0174('0x6a')][_0x298f87]),'SmsQueueId':Number(_0x1b18cb[_0x0174('0x4c')]['id'])});}}else{socket[_0x0174('0x72')](_0x0174('0x86'),{'UserId':Number(_0x1b18cb[_0x0174('0x37')][_0x0174('0x6a')]),'SmsQueueId':Number(_0x1b18cb[_0x0174('0x4c')]['id'])});}});}})[_0x0174('0x2a')](respondWithStatusCode(_0x3d5995,null))['catch'](handleError(_0x3d5995,null));};exports[_0x0174('0x8b')]=function(_0x10b743,_0x586bf0,_0x33691d){var _0x15acdb={};var _0x414cc6={};var _0x59c9a6;var _0x3a74f1;return db['SmsQueue'][_0x0174('0x59')]({'where':{'id':_0x10b743[_0x0174('0x4c')]['id']}})[_0x0174('0x2a')](handleEntityNotFound(_0x586bf0,null))[_0x0174('0x2a')](function(_0x446879){if(_0x446879){_0x59c9a6=_0x446879;_0x414cc6['model']=_[_0x0174('0x38')](db[_0x0174('0x5d')]['rawAttributes']);_0x414cc6[_0x0174('0x37')]=_[_0x0174('0x38')](_0x10b743[_0x0174('0x37')]);_0x414cc6[_0x0174('0x39')]=_['intersection'](_0x414cc6[_0x0174('0x36')],_0x414cc6[_0x0174('0x37')]);_0x15acdb[_0x0174('0x3b')]=_[_0x0174('0x3a')](_0x414cc6['model'],qs['fields'](_0x10b743[_0x0174('0x37')]['fields']));_0x15acdb['attributes']=_0x15acdb[_0x0174('0x3b')][_0x0174('0x3d')]?_0x15acdb[_0x0174('0x3b')]:_0x414cc6[_0x0174('0x36')];_0x15acdb[_0x0174('0x3f')]=qs[_0x0174('0x40')](_0x10b743[_0x0174('0x37')][_0x0174('0x40')]);_0x15acdb[_0x0174('0x41')]=qs['filters'](_[_0x0174('0x68')](_0x10b743[_0x0174('0x37')],_0x414cc6[_0x0174('0x39')]));if(_0x10b743['query'][_0x0174('0x42')]){_0x15acdb['where']=_['merge'](_0x15acdb[_0x0174('0x41')],{'$or':_[_0x0174('0x31')](_0x15acdb['attributes'],function(_0x82d46a){var _0x43c0f2={};_0x43c0f2[_0x82d46a]={'$like':'%'+_0x10b743[_0x0174('0x37')]['filter']+'%'};return _0x43c0f2;})});}_0x15acdb=_[_0x0174('0x45')]({},_0x15acdb,_0x10b743[_0x0174('0x46')]);return _0x59c9a6[_0x0174('0x8b')](_0x15acdb);}})[_0x0174('0x2a')](function(_0x2c3124){if(_0x2c3124){_0x3a74f1=_0x2c3124[_0x0174('0x3d')];if(!_0x10b743['query'][_0x0174('0x5b')](_0x0174('0x3e'))){_0x15acdb[_0x0174('0x22')]=qs[_0x0174('0x22')](_0x10b743[_0x0174('0x37')][_0x0174('0x22')]);_0x15acdb['offset']=qs['offset'](_0x10b743[_0x0174('0x37')][_0x0174('0x20')]);}return _0x59c9a6[_0x0174('0x8b')](_0x15acdb);}})[_0x0174('0x2a')](function(_0x5bbaae){if(_0x5bbaae){return _0x5bbaae?{'count':_0x3a74f1,'rows':_0x5bbaae}:null;}})['then'](respondWithResult(_0x586bf0,null))[_0x0174('0x4a')](handleError(_0x586bf0,null));};
\ No newline at end of file
index c5fcaf5..c2b9dd2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0x889e=['hook','exports','events','../../mysqldb','save','update','remove','emit','hasOwnProperty'];(function(_0x18ba1d,_0x331838){var _0x1ca063=function(_0x4461a4){while(--_0x4461a4){_0x18ba1d['push'](_0x18ba1d['shift']());}};_0x1ca063(++_0x331838);}(_0x889e,0x1cd));var _0xe889=function(_0x45e60b,_0x4b1bd0){_0x45e60b=_0x45e60b-0x0;var _0x56bb77=_0x889e[_0x45e60b];return _0x56bb77;};'use strict';var EventEmitter=require(_0xe889('0x0'));var SmsQueue=require(_0xe889('0x1'))['db']['SmsQueue'];var SmsQueueEvents=new EventEmitter();SmsQueueEvents['setMaxListeners'](0x0);var events={'afterCreate':_0xe889('0x2'),'afterUpdate':_0xe889('0x3'),'afterDestroy':_0xe889('0x4')};function emitEvent(_0x1c1e9d){return function(_0x3b8347,_0x962f86,_0x3920fc){SmsQueueEvents[_0xe889('0x5')](_0x1c1e9d+':'+_0x3b8347['id'],_0x3b8347);SmsQueueEvents[_0xe889('0x5')](_0x1c1e9d,_0x3b8347);_0x3920fc(null);};}for(var e in events){if(events[_0xe889('0x6')](e)){var event=events[e];SmsQueue[_0xe889('0x7')](e,emitEvent(event));}}module[_0xe889('0x8')]=SmsQueueEvents;
\ No newline at end of file
index 64a0b38..b08ba28 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0x96da=['define','SmsQueue','sms_queues','lodash','../../config/logger','api','moment','bluebird','request-promise','rimraf','../../config/environment','./smsQueue.attributes','exports'];(function(_0x30cfa0,_0x442ca3){var _0x41c0f0=function(_0xe749ff){while(--_0xe749ff){_0x30cfa0['push'](_0x30cfa0['shift']());}};_0x41c0f0(++_0x442ca3);}(_0x96da,0x85));var _0xa96d=function(_0x3ce56f,_0x7dd413){_0x3ce56f=_0x3ce56f-0x0;var _0x5fa5d0=_0x96da[_0x3ce56f];return _0x5fa5d0;};'use strict';var _=require(_0xa96d('0x0'));var util=require('util');var logger=require(_0xa96d('0x1'))(_0xa96d('0x2'));var moment=require(_0xa96d('0x3'));var BPromise=require(_0xa96d('0x4'));var rp=require(_0xa96d('0x5'));var fs=require('fs');var path=require('path');var rimraf=require(_0xa96d('0x6'));var config=require(_0xa96d('0x7'));var attributes=require(_0xa96d('0x8'));module[_0xa96d('0x9')]=function(_0x183848,_0x1c86ef){return _0x183848[_0xa96d('0xa')](_0xa96d('0xb'),attributes,{'tableName':_0xa96d('0xc'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index f1bfe23..eb9036c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0x0c1f=['then','info','SmsQueue,\x20%s,\x20%s','request\x20sent','debug','error','code','message','result','catch','GetSmsQueue','findAll','options','raw','where','attributes','limit','include','map','model','stringify','ShowSmsQueue','find','lodash','bluebird','randomstring','ioredis','../../config/utils','../../config/logger','rpc','../../config/environment','http','redis','localhost','./smsQueue.socket','request'];(function(_0x44f8b1,_0x2bcbb3){var _0x371bc6=function(_0x4d5405){while(--_0x4d5405){_0x44f8b1['push'](_0x44f8b1['shift']());}};_0x371bc6(++_0x2bcbb3);}(_0x0c1f,0xef));var _0xf0c1=function(_0x11cd17,_0x489e02){_0x11cd17=_0x11cd17-0x0;var _0x3343ad=_0x0c1f[_0x11cd17];return _0x3343ad;};'use strict';var _=require(_0xf0c1('0x0'));var util=require('util');var moment=require('moment');var BPromise=require(_0xf0c1('0x1'));var rs=require(_0xf0c1('0x2'));var fs=require('fs');var Redis=require(_0xf0c1('0x3'));var db=require('../../mysqldb')['db'];var utils=require(_0xf0c1('0x4'));var logger=require(_0xf0c1('0x5'))(_0xf0c1('0x6'));var config=require(_0xf0c1('0x7'));var jayson=require('jayson/promise');var client=jayson['client'][_0xf0c1('0x8')]({'port':0x232a});config[_0xf0c1('0x9')]=_['defaults'](config['redis'],{'host':_0xf0c1('0xa'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config['redis']));require(_0xf0c1('0xb'))['register'](socket);function respondWithRpcPromise(_0x46866d,_0x4fd802,_0x2d071b){return new BPromise(function(_0x1cef55,_0xade1d9){return client[_0xf0c1('0xc')](_0x46866d,_0x2d071b)[_0xf0c1('0xd')](function(_0xa83159){logger[_0xf0c1('0xe')](_0xf0c1('0xf'),_0x4fd802,_0xf0c1('0x10'));logger[_0xf0c1('0x11')]('SmsQueue,\x20%s,\x20%s,\x20%s',_0x4fd802,'request\x20sent',JSON['stringify'](_0xa83159));if(_0xa83159[_0xf0c1('0x12')]){if(_0xa83159['error'][_0xf0c1('0x13')]===0x1f4){logger['error'](_0xf0c1('0xf'),_0x4fd802,_0xa83159[_0xf0c1('0x12')][_0xf0c1('0x14')]);return _0xade1d9(_0xa83159[_0xf0c1('0x12')]['message']);}logger[_0xf0c1('0x12')](_0xf0c1('0xf'),_0x4fd802,_0xa83159['error'][_0xf0c1('0x14')]);return _0x1cef55(_0xa83159[_0xf0c1('0x12')][_0xf0c1('0x14')]);}else{logger[_0xf0c1('0xe')](_0xf0c1('0xf'),_0x4fd802,_0xf0c1('0x10'));_0x1cef55(_0xa83159[_0xf0c1('0x15')]['message']);}})[_0xf0c1('0x16')](function(_0x5edf79){logger['error'](_0xf0c1('0xf'),_0x4fd802,_0x5edf79);_0xade1d9(_0x5edf79);});});}exports[_0xf0c1('0x17')]=function(_0x26b24a){var _0x49cb3f=this;return new Promise(function(_0x4b343a,_0x2b3a0a){return db['SmsQueue'][_0xf0c1('0x18')]({'raw':_0x26b24a[_0xf0c1('0x19')]?_0x26b24a['options'][_0xf0c1('0x1a')]===undefined?!![]:![]:!![],'where':_0x26b24a[_0xf0c1('0x19')]?_0x26b24a[_0xf0c1('0x19')][_0xf0c1('0x1b')]||null:null,'attributes':_0x26b24a[_0xf0c1('0x19')]?_0x26b24a[_0xf0c1('0x19')][_0xf0c1('0x1c')]||null:null,'limit':_0x26b24a[_0xf0c1('0x19')]?_0x26b24a[_0xf0c1('0x19')][_0xf0c1('0x1d')]||null:null,'include':_0x26b24a[_0xf0c1('0x19')]?_0x26b24a[_0xf0c1('0x19')][_0xf0c1('0x1e')]?_[_0xf0c1('0x1f')](_0x26b24a[_0xf0c1('0x19')]['include'],function(_0x45d2d8){return{'model':db[_0x45d2d8[_0xf0c1('0x20')]],'as':_0x45d2d8['as'],'attributes':_0x45d2d8[_0xf0c1('0x1c')],'include':_0x45d2d8[_0xf0c1('0x1e')]?_[_0xf0c1('0x1f')](_0x45d2d8[_0xf0c1('0x1e')],function(_0x1ba4af){return{'model':db[_0x1ba4af[_0xf0c1('0x20')]],'as':_0x1ba4af['as'],'attributes':_0x1ba4af[_0xf0c1('0x1c')],'include':_0x1ba4af[_0xf0c1('0x1e')]?_['map'](_0x1ba4af[_0xf0c1('0x1e')],function(_0x4c2e76){return{'model':db[_0x4c2e76[_0xf0c1('0x20')]],'as':_0x4c2e76['as'],'attributes':_0x4c2e76[_0xf0c1('0x1c')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x5d861c){logger[_0xf0c1('0xe')](_0xf0c1('0x17'),_0x26b24a);logger['debug']('GetSmsQueue',_0x26b24a,JSON[_0xf0c1('0x21')](_0x5d861c));_0x4b343a(_0x5d861c);})['catch'](function(_0x1665c8){logger[_0xf0c1('0x12')](_0xf0c1('0x17'),_0x1665c8[_0xf0c1('0x14')],_0x26b24a);_0x2b3a0a(_0x49cb3f['error'](0x1f4,_0x1665c8[_0xf0c1('0x14')]));});});};exports[_0xf0c1('0x22')]=function(_0x42de4a){var _0x382d45=this;return new Promise(function(_0x4f0a38,_0x513ffb){return db['SmsQueue'][_0xf0c1('0x23')]({'raw':_0x42de4a['options']?_0x42de4a['options'][_0xf0c1('0x1a')]===undefined?!![]:![]:!![],'where':_0x42de4a[_0xf0c1('0x19')]?_0x42de4a['options']['where']||null:null,'attributes':_0x42de4a['options']?_0x42de4a['options'][_0xf0c1('0x1c')]||null:null,'include':_0x42de4a[_0xf0c1('0x19')]?_0x42de4a[_0xf0c1('0x19')]['include']?_['map'](_0x42de4a[_0xf0c1('0x19')]['include'],function(_0xa07db3){return{'model':db[_0xa07db3['model']],'as':_0xa07db3['as'],'attributes':_0xa07db3['attributes'],'include':_0xa07db3[_0xf0c1('0x1e')]?_[_0xf0c1('0x1f')](_0xa07db3[_0xf0c1('0x1e')],function(_0x1cff79){return{'model':db[_0x1cff79[_0xf0c1('0x20')]],'as':_0x1cff79['as'],'attributes':_0x1cff79[_0xf0c1('0x1c')],'include':_0x1cff79[_0xf0c1('0x1e')]?_[_0xf0c1('0x1f')](_0x1cff79[_0xf0c1('0x1e')],function(_0x1b1aa9){return{'model':db[_0x1b1aa9['model']],'as':_0x1b1aa9['as'],'attributes':_0x1b1aa9[_0xf0c1('0x1c')]};}):[]};}):[]};}):[]:[]})[_0xf0c1('0xd')](function(_0x4ef484){logger[_0xf0c1('0xe')](_0xf0c1('0x22'),_0x42de4a);logger[_0xf0c1('0x11')](_0xf0c1('0x22'),_0x42de4a,JSON[_0xf0c1('0x21')](_0x4ef484));_0x4f0a38(_0x4ef484);})[_0xf0c1('0x16')](function(_0x225a46){logger[_0xf0c1('0x12')](_0xf0c1('0x22'),_0x225a46[_0xf0c1('0x14')],_0x42de4a);_0x513ffb(_0x382d45[_0xf0c1('0x12')](0x1f4,_0x225a46[_0xf0c1('0x14')]));});});};
\ No newline at end of file
index c084983..71a9210 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0xd814=['remove','removeListener','register','length','smsQueue:','save'];(function(_0x45dbc6,_0x38f3a3){var _0x23d6cc=function(_0x3125eb){while(--_0x3125eb){_0x45dbc6['push'](_0x45dbc6['shift']());}};_0x23d6cc(++_0x38f3a3);}(_0xd814,0xe3));var _0x4d81=function(_0x5329b4,_0x110a50){_0x5329b4=_0x5329b4-0x0;var _0x37b582=_0xd814[_0x5329b4];return _0x37b582;};'use strict';var SmsQueueEvents=require('./smsQueue.events');var events=[_0x4d81('0x0'),_0x4d81('0x1'),'update'];function createListener(_0x3ea184,_0x125cb3){return function(_0x1c72d3){_0x125cb3['emit'](_0x3ea184,_0x1c72d3);};}function removeListener(_0x4c3011,_0x273c58){return function(){SmsQueueEvents[_0x4d81('0x2')](_0x4c3011,_0x273c58);};}exports[_0x4d81('0x3')]=function(_0xf98536){for(var _0x35f70e=0x0,_0x2f1351=events[_0x4d81('0x4')];_0x35f70e<_0x2f1351;_0x35f70e++){var _0x5053c5=events[_0x35f70e];var _0x227426=createListener(_0x4d81('0x5')+_0x5053c5,_0xf98536);SmsQueueEvents['on'](_0x5053c5,_0x227426);}};
\ No newline at end of file
index eff74cf..807d303 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0xcee8=['/:id','show','create','delete','destroy','exports','multer','util','path','connect-timeout','express','Router','../../components/auth/service','../../components/interaction/service','../../config/environment','./smsQueueReport.controller','isAuthenticated','index','get'];(function(_0x3ae049,_0x4a56f1){var _0x2a870c=function(_0xdae22d){while(--_0xdae22d){_0x3ae049['push'](_0x3ae049['shift']());}};_0x2a870c(++_0x4a56f1);}(_0xcee8,0xb1));var _0x8cee=function(_0x46dd5,_0x2c3f33){_0x46dd5=_0x46dd5-0x0;var _0x6adc33=_0xcee8[_0x46dd5];return _0x6adc33;};'use strict';var multer=require(_0x8cee('0x0'));var util=require(_0x8cee('0x1'));var path=require(_0x8cee('0x2'));var timeout=require(_0x8cee('0x3'));var express=require(_0x8cee('0x4'));var router=express[_0x8cee('0x5')]();var fs_extra=require('fs-extra');var auth=require(_0x8cee('0x6'));var interaction=require(_0x8cee('0x7'));var config=require(_0x8cee('0x8'));var controller=require(_0x8cee('0x9'));router['get']('/',auth[_0x8cee('0xa')](),controller[_0x8cee('0xb')]);router['get']('/describe',auth[_0x8cee('0xa')](),controller['describe']);router[_0x8cee('0xc')](_0x8cee('0xd'),auth[_0x8cee('0xa')](),controller[_0x8cee('0xe')]);router['post']('/',auth[_0x8cee('0xa')](),controller[_0x8cee('0xf')]);router['put'](_0x8cee('0xd'),auth[_0x8cee('0xa')](),controller['update']);router[_0x8cee('0x10')]('/:id',auth[_0x8cee('0xa')](),controller[_0x8cee('0x11')]);module[_0x8cee('0x12')]=router;
\ No newline at end of file
index 0feea68..7e6596a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0x0b56=['exports','STRING','DATE'];(function(_0x35b18a,_0x6b2fbe){var _0x4db1bd=function(_0x389e62){while(--_0x389e62){_0x35b18a['push'](_0x35b18a['shift']());}};_0x4db1bd(++_0x6b2fbe);}(_0x0b56,0xf9));var _0x60b5=function(_0x62f2d,_0x14d819){_0x62f2d=_0x62f2d-0x0;var _0x4d8bee=_0x0b56[_0x62f2d];return _0x4d8bee;};'use strict';var moment=require('moment');var Sequelize=require('sequelize');module[_0x60b5('0x0')]={'uniqueid':{'type':Sequelize[_0x60b5('0x1')],'allowNull':![]},'from':{'type':Sequelize[_0x60b5('0x1')]},'joinAt':{'type':Sequelize[_0x60b5('0x2')]},'leaveAt':{'type':Sequelize['DATE']},'acceptAt':{'type':Sequelize[_0x60b5('0x2')]},'exitAt':{'type':Sequelize[_0x60b5('0x2')]},'reason':{'type':Sequelize['STRING']}};
\ No newline at end of file
index 0a73e05..c80b1a3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0x7380=['VIRTUAL','options','includeAll','include','findAll','rows','show','params','keys','length','find','catch','create','body','describe','eml-format','fast-json-patch','mustache','util','path','sox','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','to-csv','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../config/utils','sendStatus','status','offset','undefined','count','limit','set','Content-Range','json','apply','save','update','then','end','error','stack','name','send','index','map','SmsQueueReport','rawAttributes','fieldName','key','query','filters','intersection','attributes','model','fields','hasOwnProperty','order','sort','where','pick','filter','merge','type'];(function(_0x5ebf44,_0x4e543e){var _0x2fef12=function(_0x59d629){while(--_0x59d629){_0x5ebf44['push'](_0x5ebf44['shift']());}};_0x2fef12(++_0x4e543e);}(_0x7380,0x137));var _0x0738=function(_0x49c057,_0xc808ed){_0x49c057=_0x49c057-0x0;var _0xd8f0e6=_0x7380[_0x49c057];return _0xd8f0e6;};'use strict';var emlformat=require(_0x0738('0x0'));var rimraf=require('rimraf');var zipdir=require('zip-dir');var jsonpatch=require(_0x0738('0x1'));var rp=require('request-promise');var moment=require('moment');var BPromise=require('bluebird');var Mustache=require(_0x0738('0x2'));var util=require(_0x0738('0x3'));var path=require(_0x0738('0x4'));var sox=require(_0x0738('0x5'));var csv=require('to-csv');var ejs=require(_0x0738('0x6'));var fs=require('fs');var fs_extra=require(_0x0738('0x7'));var _=require(_0x0738('0x8'));var squel=require(_0x0738('0x9'));var crypto=require(_0x0738('0xa'));var jsforce=require(_0x0738('0xb'));var deskjs=require(_0x0738('0xc'));var toCsv=require(_0x0738('0xd'));var querystring=require('querystring');var Papa=require('papaparse');var Redis=require(_0x0738('0xe'));var authService=require(_0x0738('0xf'));var qs=require(_0x0738('0x10'));var as=require(_0x0738('0x11'));var hardwareService=require(_0x0738('0x12'));var logger=require(_0x0738('0x13'))('api');var utils=require(_0x0738('0x14'));var config=require('../../config/environment');var licenseUtil=require('../../config/license/util');var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x340de4,_0x309f7c){_0x309f7c=_0x309f7c||0xcc;return function(_0x3604f4){if(_0x3604f4){return _0x340de4[_0x0738('0x15')](_0x309f7c);}return _0x340de4[_0x0738('0x16')](_0x309f7c)['end']();};}function respondWithResult(_0x449344,_0x26e6d7){_0x26e6d7=_0x26e6d7||0xc8;return function(_0x45f9c4){if(_0x45f9c4){return _0x449344[_0x0738('0x16')](_0x26e6d7)['json'](_0x45f9c4);}};}function respondWithFilteredResult(_0x49fa65,_0x38eaa0){return function(_0x2543ba){if(_0x2543ba){var _0x5bded9=typeof _0x38eaa0[_0x0738('0x17')]===_0x0738('0x18')&&typeof _0x38eaa0['limit']===_0x0738('0x18');var _0xd7b719=_0x2543ba['count'];var _0xf229ba=_0x5bded9?0x0:_0x38eaa0[_0x0738('0x17')];var _0x4d77a=_0x5bded9?_0x2543ba[_0x0738('0x19')]:_0x38eaa0[_0x0738('0x17')]+_0x38eaa0[_0x0738('0x1a')];var _0x338557;if(_0x4d77a>=_0xd7b719){_0x4d77a=_0xd7b719;_0x338557=0xc8;}else{_0x338557=0xce;}_0x49fa65[_0x0738('0x16')](_0x338557);return _0x49fa65[_0x0738('0x1b')](_0x0738('0x1c'),_0xf229ba+'-'+_0x4d77a+'/'+_0xd7b719)[_0x0738('0x1d')](_0x2543ba);}return null;};}function patchUpdates(_0x7f1a8){return function(_0x502c14){try{jsonpatch[_0x0738('0x1e')](_0x502c14,_0x7f1a8,!![]);}catch(_0xd5ebcd){return BPromise['reject'](_0xd5ebcd);}return _0x502c14[_0x0738('0x1f')]();};}function saveUpdates(_0x6325cc,_0x1997a8){return function(_0x77ef74){if(_0x77ef74){return _0x77ef74[_0x0738('0x20')](_0x6325cc)[_0x0738('0x21')](function(_0x3a3714){return _0x3a3714;});}return null;};}function removeEntity(_0x148643,_0x3d201b){return function(_0x4b944b){if(_0x4b944b){return _0x4b944b['destroy']()[_0x0738('0x21')](function(){_0x148643[_0x0738('0x16')](0xcc)[_0x0738('0x22')]();});}};}function handleEntityNotFound(_0xdcd16c,_0x7b5274){return function(_0x4e88c5){if(!_0x4e88c5){_0xdcd16c['sendStatus'](0x194);}return _0x4e88c5;};}function handleError(_0x4fca3c,_0x5f04af){_0x5f04af=_0x5f04af||0x1f4;return function(_0x42d578){logger[_0x0738('0x23')](_0x42d578[_0x0738('0x24')]);if(_0x42d578[_0x0738('0x25')]){delete _0x42d578[_0x0738('0x25')];}_0x4fca3c[_0x0738('0x16')](_0x5f04af)[_0x0738('0x26')](_0x42d578);};}exports[_0x0738('0x27')]=function(_0x549671,_0x1f6e01){var _0x5995fc={},_0x278afe={},_0x5c7eb4={'count':0x0,'rows':[]};var _0x9dd257=_[_0x0738('0x28')](db[_0x0738('0x29')][_0x0738('0x2a')],function(_0x4978f0){return{'name':_0x4978f0[_0x0738('0x2b')],'type':_0x4978f0['type'][_0x0738('0x2c')]};});_0x278afe['model']=_[_0x0738('0x28')](_0x9dd257,'name');_0x278afe[_0x0738('0x2d')]=_['keys'](_0x549671[_0x0738('0x2d')]);_0x278afe[_0x0738('0x2e')]=_[_0x0738('0x2f')](_0x278afe['model'],_0x278afe[_0x0738('0x2d')]);_0x5995fc[_0x0738('0x30')]=_[_0x0738('0x2f')](_0x278afe[_0x0738('0x31')],qs[_0x0738('0x32')](_0x549671[_0x0738('0x2d')]['fields']));_0x5995fc[_0x0738('0x30')]=_0x5995fc[_0x0738('0x30')]['length']?_0x5995fc[_0x0738('0x30')]:_0x278afe[_0x0738('0x31')];if(!_0x549671[_0x0738('0x2d')][_0x0738('0x33')]('nolimit')){_0x5995fc[_0x0738('0x1a')]=qs['limit'](_0x549671[_0x0738('0x2d')][_0x0738('0x1a')]);_0x5995fc['offset']=qs[_0x0738('0x17')](_0x549671['query']['offset']);}_0x5995fc[_0x0738('0x34')]=qs[_0x0738('0x35')](_0x549671[_0x0738('0x2d')][_0x0738('0x35')]);_0x5995fc[_0x0738('0x36')]=qs[_0x0738('0x2e')](_[_0x0738('0x37')](_0x549671[_0x0738('0x2d')],_0x278afe[_0x0738('0x2e')]),_0x9dd257);if(_0x549671[_0x0738('0x2d')][_0x0738('0x38')]){_0x5995fc[_0x0738('0x36')]=_[_0x0738('0x39')](_0x5995fc[_0x0738('0x36')],{'$or':_[_0x0738('0x28')](_0x9dd257,function(_0x182750){if(_0x182750[_0x0738('0x3a')]!==_0x0738('0x3b')){var _0x4aeaed={};_0x4aeaed[_0x182750[_0x0738('0x25')]]={'$like':'%'+_0x549671[_0x0738('0x2d')]['filter']+'%'};return _0x4aeaed;}})});}_0x5995fc=_[_0x0738('0x39')]({},_0x5995fc,_0x549671[_0x0738('0x3c')]);var _0xe38f9e={'where':_0x5995fc[_0x0738('0x36')]};return db[_0x0738('0x29')][_0x0738('0x19')](_0xe38f9e)[_0x0738('0x21')](function(_0x32f056){_0x5c7eb4[_0x0738('0x19')]=_0x32f056;if(_0x549671[_0x0738('0x2d')][_0x0738('0x3d')]){_0x5995fc[_0x0738('0x3e')]=[{'all':!![]}];}return db[_0x0738('0x29')][_0x0738('0x3f')](_0x5995fc);})['then'](function(_0x211b2c){_0x5c7eb4[_0x0738('0x40')]=_0x211b2c;return _0x5c7eb4;})[_0x0738('0x21')](respondWithFilteredResult(_0x1f6e01,_0x5995fc))['catch'](handleError(_0x1f6e01,null));};exports[_0x0738('0x41')]=function(_0x261b6a,_0x580471){var _0x52f62f={'raw':!![],'where':{'id':_0x261b6a[_0x0738('0x42')]['id']}},_0x122688={};_0x122688[_0x0738('0x31')]=_[_0x0738('0x43')](db[_0x0738('0x29')]['rawAttributes']);_0x122688['query']=_[_0x0738('0x43')](_0x261b6a['query']);_0x122688['filters']=_['intersection'](_0x122688[_0x0738('0x31')],_0x122688[_0x0738('0x2d')]);_0x52f62f[_0x0738('0x30')]=_[_0x0738('0x2f')](_0x122688[_0x0738('0x31')],qs[_0x0738('0x32')](_0x261b6a['query']['fields']));_0x52f62f[_0x0738('0x30')]=_0x52f62f[_0x0738('0x30')][_0x0738('0x44')]?_0x52f62f[_0x0738('0x30')]:_0x122688['model'];if(_0x261b6a[_0x0738('0x2d')][_0x0738('0x3d')]){_0x52f62f[_0x0738('0x3e')]=[{'all':!![]}];}_0x52f62f=_['merge']({},_0x52f62f,_0x261b6a[_0x0738('0x3c')]);return db[_0x0738('0x29')][_0x0738('0x45')](_0x52f62f)[_0x0738('0x21')](handleEntityNotFound(_0x580471,null))[_0x0738('0x21')](respondWithResult(_0x580471,null))[_0x0738('0x46')](handleError(_0x580471,null));};exports[_0x0738('0x47')]=function(_0x3bf6f4,_0x3b7ec6){return db[_0x0738('0x29')][_0x0738('0x47')](_0x3bf6f4[_0x0738('0x48')],{})[_0x0738('0x21')](respondWithResult(_0x3b7ec6,0xc9))[_0x0738('0x46')](handleError(_0x3b7ec6,null));};exports[_0x0738('0x20')]=function(_0x4c5c03,_0x3f39eb){if(_0x4c5c03[_0x0738('0x48')]['id']){delete _0x4c5c03[_0x0738('0x48')]['id'];}return db[_0x0738('0x29')][_0x0738('0x45')]({'where':{'id':_0x4c5c03[_0x0738('0x42')]['id']}})[_0x0738('0x21')](handleEntityNotFound(_0x3f39eb,null))['then'](saveUpdates(_0x4c5c03[_0x0738('0x48')],null))[_0x0738('0x21')](respondWithResult(_0x3f39eb,null))[_0x0738('0x46')](handleError(_0x3f39eb,null));};exports['destroy']=function(_0x52e2a2,_0x1c4745){return db[_0x0738('0x29')]['find']({'where':{'id':_0x52e2a2[_0x0738('0x42')]['id']}})['then'](handleEntityNotFound(_0x1c4745,null))['then'](removeEntity(_0x1c4745,null))[_0x0738('0x46')](handleError(_0x1c4745,null));};exports[_0x0738('0x49')]=function(_0x731c9e,_0x1e36c4){return db['SmsQueueReport'][_0x0738('0x49')]()['then'](respondWithResult(_0x1e36c4,null))[_0x0738('0x46')](handleError(_0x1e36c4,null));};
\ No newline at end of file
index 5686f0c..c7ce4fe 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd8b0=['define','report_sms_queue','uniqueid','lodash','util','bluebird','request-promise','path','rimraf','../../config/environment'];(function(_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
+var _0xe706=['../../config/logger','moment','bluebird','request-promise','path','rimraf','../../config/environment','./smsQueueReport.attributes','exports','define','SmsQueueReport','report_sms_queue','uniqueid','lodash','util'];(function(_0x395097,_0x6babd0){var _0x19f253=function(_0x4ba8fa){while(--_0x4ba8fa){_0x395097['push'](_0x395097['shift']());}};_0x19f253(++_0x6babd0);}(_0xe706,0xa3));var _0x6e70=function(_0x3d197f,_0x3186d3){_0x3d197f=_0x3d197f-0x0;var _0x37c656=_0xe706[_0x3d197f];return _0x37c656;};'use strict';var _=require(_0x6e70('0x0'));var util=require(_0x6e70('0x1'));var logger=require(_0x6e70('0x2'))('api');var moment=require(_0x6e70('0x3'));var BPromise=require(_0x6e70('0x4'));var rp=require(_0x6e70('0x5'));var fs=require('fs');var path=require(_0x6e70('0x6'));var rimraf=require(_0x6e70('0x7'));var config=require(_0x6e70('0x8'));var attributes=require(_0x6e70('0x9'));module[_0x6e70('0xa')]=function(_0x1b0389,_0x4381d1){return _0x1b0389[_0x6e70('0xb')](_0x6e70('0xc'),attributes,{'tableName':_0x6e70('0xd'),'paranoid':![],'indexes':[{'name':_0x6e70('0xe'),'fields':[_0x6e70('0xe')]}],'timestamps':!![]});};
\ No newline at end of file
index a5a8494..2b43743 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0xe657=['message','info','result','CreateSmsQueueReport','SmsQueueReport','body','options','raw','UpdateSmsQueueReport','update','where','limit','lodash','util','moment','randomstring','ioredis','../../config/utils','rpc','jayson/promise','client','http','request','then','SmsQueueReport,\x20%s,\x20%s','request\x20sent','debug','stringify','error','code'];(function(_0x2d2768,_0x2b96b2){var _0x4f4150=function(_0x4dd51b){while(--_0x4dd51b){_0x2d2768['push'](_0x2d2768['shift']());}};_0x4f4150(++_0x2b96b2);}(_0xe657,0x1ce));var _0x7e65=function(_0x9d10a9,_0x268525){_0x9d10a9=_0x9d10a9-0x0;var _0x3f8c26=_0xe657[_0x9d10a9];return _0x3f8c26;};'use strict';var _=require(_0x7e65('0x0'));var util=require(_0x7e65('0x1'));var moment=require(_0x7e65('0x2'));var BPromise=require('bluebird');var rs=require(_0x7e65('0x3'));var fs=require('fs');var Redis=require(_0x7e65('0x4'));var db=require('../../mysqldb')['db'];var utils=require(_0x7e65('0x5'));var logger=require('../../config/logger')(_0x7e65('0x6'));var config=require('../../config/environment');var jayson=require(_0x7e65('0x7'));var client=jayson[_0x7e65('0x8')][_0x7e65('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x127f5d,_0x1b3caf,_0x9819c0){return new BPromise(function(_0x243f87,_0x39400a){return client[_0x7e65('0xa')](_0x127f5d,_0x9819c0)[_0x7e65('0xb')](function(_0x239c6a){logger['info'](_0x7e65('0xc'),_0x1b3caf,_0x7e65('0xd'));logger[_0x7e65('0xe')]('SmsQueueReport,\x20%s,\x20%s,\x20%s',_0x1b3caf,_0x7e65('0xd'),JSON[_0x7e65('0xf')](_0x239c6a));if(_0x239c6a[_0x7e65('0x10')]){if(_0x239c6a['error'][_0x7e65('0x11')]===0x1f4){logger['error']('SmsQueueReport,\x20%s,\x20%s',_0x1b3caf,_0x239c6a['error'][_0x7e65('0x12')]);return _0x39400a(_0x239c6a[_0x7e65('0x10')][_0x7e65('0x12')]);}logger['error'](_0x7e65('0xc'),_0x1b3caf,_0x239c6a[_0x7e65('0x10')][_0x7e65('0x12')]);return _0x243f87(_0x239c6a[_0x7e65('0x10')][_0x7e65('0x12')]);}else{logger[_0x7e65('0x13')](_0x7e65('0xc'),_0x1b3caf,'request\x20sent');_0x243f87(_0x239c6a[_0x7e65('0x14')][_0x7e65('0x12')]);}})['catch'](function(_0x17b581){logger['error'](_0x7e65('0xc'),_0x1b3caf,_0x17b581);_0x39400a(_0x17b581);});});}exports[_0x7e65('0x15')]=function(_0x16cd08){var _0x577e8b=this;return new Promise(function(_0x1cfb58,_0x1d11dd){return db[_0x7e65('0x16')]['create'](_0x16cd08[_0x7e65('0x17')],{'raw':_0x16cd08[_0x7e65('0x18')]?_0x16cd08[_0x7e65('0x18')][_0x7e65('0x19')]===undefined?!![]:![]:!![]})[_0x7e65('0xb')](function(_0x38a4dd){logger['info'](_0x7e65('0x15'),_0x16cd08);logger[_0x7e65('0xe')]('CreateSmsQueueReport',_0x16cd08,JSON[_0x7e65('0xf')](_0x38a4dd));_0x1cfb58(_0x38a4dd);})['catch'](function(_0x35fd0c){logger[_0x7e65('0x10')](_0x7e65('0x15'),_0x35fd0c['message'],_0x16cd08);_0x1d11dd(_0x577e8b[_0x7e65('0x10')](0x1f4,_0x35fd0c[_0x7e65('0x12')]));});});};exports[_0x7e65('0x1a')]=function(_0x11a101){var _0x4f7de8=this;return new Promise(function(_0x28a73c,_0x48f6f1){return db[_0x7e65('0x16')][_0x7e65('0x1b')](_0x11a101[_0x7e65('0x17')],{'raw':_0x11a101[_0x7e65('0x18')]?_0x11a101[_0x7e65('0x18')][_0x7e65('0x19')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x11a101[_0x7e65('0x18')]?_0x11a101[_0x7e65('0x18')][_0x7e65('0x1c')]||null:null,'attributes':_0x11a101[_0x7e65('0x18')]?_0x11a101[_0x7e65('0x18')]['attributes']||null:null,'limit':_0x11a101['options']?_0x11a101[_0x7e65('0x18')][_0x7e65('0x1d')]||null:null})[_0x7e65('0xb')](function(_0x556e6d){logger[_0x7e65('0x13')](_0x7e65('0x1a'),_0x11a101);logger[_0x7e65('0xe')]('UpdateSmsQueueReport',_0x11a101,JSON[_0x7e65('0xf')](_0x556e6d));_0x28a73c(_0x556e6d);})['catch'](function(_0x35cdeb){logger[_0x7e65('0x10')](_0x7e65('0x1a'),_0x35cdeb[_0x7e65('0x12')],_0x11a101);_0x48f6f1(_0x4f7de8[_0x7e65('0x10')](0x1f4,_0x35cdeb[_0x7e65('0x12')]));});});};
\ No newline at end of file
index 02b0978..b8471cd 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0xa990=['exports','multer','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','./smsTransferReport.controller','get','isAuthenticated','index','/describe','describe','/:id','post','update','delete','destroy'];(function(_0x1c9c1b,_0x4e86fc){var _0x132cc0=function(_0x8cbc43){while(--_0x8cbc43){_0x1c9c1b['push'](_0x1c9c1b['shift']());}};_0x132cc0(++_0x4e86fc);}(_0xa990,0xc9));var _0x0a99=function(_0x5e5b21,_0x371aaf){_0x5e5b21=_0x5e5b21-0x0;var _0x4e4004=_0xa990[_0x5e5b21];return _0x4e4004;};'use strict';var multer=require(_0x0a99('0x0'));var util=require(_0x0a99('0x1'));var path=require(_0x0a99('0x2'));var timeout=require(_0x0a99('0x3'));var express=require(_0x0a99('0x4'));var router=express[_0x0a99('0x5')]();var fs_extra=require(_0x0a99('0x6'));var auth=require(_0x0a99('0x7'));var interaction=require('../../components/interaction/service');var config=require('../../config/environment');var controller=require(_0x0a99('0x8'));router[_0x0a99('0x9')]('/',auth[_0x0a99('0xa')](),controller[_0x0a99('0xb')]);router[_0x0a99('0x9')](_0x0a99('0xc'),auth[_0x0a99('0xa')](),controller[_0x0a99('0xd')]);router[_0x0a99('0x9')](_0x0a99('0xe'),auth[_0x0a99('0xa')](),controller['show']);router[_0x0a99('0xf')]('/',auth[_0x0a99('0xa')](),controller['create']);router['put'](_0x0a99('0xe'),auth[_0x0a99('0xa')](),controller[_0x0a99('0x10')]);router[_0x0a99('0x11')](_0x0a99('0xe'),auth['isAuthenticated'](),controller[_0x0a99('0x12')]);module[_0x0a99('0x13')]=router;
\ No newline at end of file
index e57b161..7ad961c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0xf3cd=['exports','STRING','ENUM','account','queue','DATE','moment','sequelize'];(function(_0xbcc63b,_0x33b814){var _0x4cf6ee=function(_0x582399){while(--_0x582399){_0xbcc63b['push'](_0xbcc63b['shift']());}};_0x4cf6ee(++_0x33b814);}(_0xf3cd,0xfe));var _0xdf3c=function(_0x44474f,_0x431580){_0x44474f=_0x44474f-0x0;var _0x427d97=_0xf3cd[_0x44474f];return _0x427d97;};'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 3216bc0..7d7f3d7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0x02e0=['mustache','util','path','sox','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','sendStatus','status','end','json','offset','undefined','count','limit','apply','update','error','stack','name','send','index','map','rawAttributes','fieldName','type','key','model','query','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','where','merge','filter','options','SmsTransferReport','then','include','findAll','catch','show','params','keys','find','create','body','destroy','eml-format','rimraf','zip-dir','request-promise','moment','bluebird'];(function(_0x56115a,_0x227ea5){var _0x5d9da1=function(_0x50126f){while(--_0x50126f){_0x56115a['push'](_0x56115a['shift']());}};_0x5d9da1(++_0x227ea5);}(_0x02e0,0x15d));var _0x002e=function(_0x3be1f8,_0x3948d4){_0x3be1f8=_0x3be1f8-0x0;var _0xbdbc40=_0x02e0[_0x3be1f8];return _0xbdbc40;};'use strict';var emlformat=require(_0x002e('0x0'));var rimraf=require(_0x002e('0x1'));var zipdir=require(_0x002e('0x2'));var jsonpatch=require('fast-json-patch');var rp=require(_0x002e('0x3'));var moment=require(_0x002e('0x4'));var BPromise=require(_0x002e('0x5'));var Mustache=require(_0x002e('0x6'));var util=require(_0x002e('0x7'));var path=require(_0x002e('0x8'));var sox=require(_0x002e('0x9'));var csv=require('to-csv');var ejs=require(_0x002e('0xa'));var fs=require('fs');var fs_extra=require(_0x002e('0xb'));var _=require(_0x002e('0xc'));var squel=require('squel');var crypto=require(_0x002e('0xd'));var jsforce=require(_0x002e('0xe'));var deskjs=require(_0x002e('0xf'));var toCsv=require('to-csv');var querystring=require(_0x002e('0x10'));var Papa=require(_0x002e('0x11'));var Redis=require(_0x002e('0x12'));var authService=require(_0x002e('0x13'));var qs=require('../../components/parsers/qs');var as=require(_0x002e('0x14'));var hardwareService=require(_0x002e('0x15'));var logger=require(_0x002e('0x16'))('api');var utils=require('../../config/utils');var config=require(_0x002e('0x17'));var licenseUtil=require('../../config/license/util');var db=require(_0x002e('0x18'))['db'];function respondWithStatusCode(_0x270d0e,_0x188fe1){_0x188fe1=_0x188fe1||0xcc;return function(_0x316f47){if(_0x316f47){return _0x270d0e[_0x002e('0x19')](_0x188fe1);}return _0x270d0e[_0x002e('0x1a')](_0x188fe1)[_0x002e('0x1b')]();};}function respondWithResult(_0x34de7f,_0x3514df){_0x3514df=_0x3514df||0xc8;return function(_0x53fbd1){if(_0x53fbd1){return _0x34de7f['status'](_0x3514df)[_0x002e('0x1c')](_0x53fbd1);}};}function respondWithFilteredResult(_0x368e9e,_0x5ae8a0){return function(_0x1a7f45){if(_0x1a7f45){var _0x316db2=typeof _0x5ae8a0[_0x002e('0x1d')]===_0x002e('0x1e')&&typeof _0x5ae8a0['limit']==='undefined';var _0x153c10=_0x1a7f45[_0x002e('0x1f')];var _0x52aa0b=_0x316db2?0x0:_0x5ae8a0['offset'];var _0x508919=_0x316db2?_0x1a7f45[_0x002e('0x1f')]:_0x5ae8a0[_0x002e('0x1d')]+_0x5ae8a0[_0x002e('0x20')];var _0x341bd7;if(_0x508919>=_0x153c10){_0x508919=_0x153c10;_0x341bd7=0xc8;}else{_0x341bd7=0xce;}_0x368e9e[_0x002e('0x1a')](_0x341bd7);return _0x368e9e['set']('Content-Range',_0x52aa0b+'-'+_0x508919+'/'+_0x153c10)['json'](_0x1a7f45);}return null;};}function patchUpdates(_0xfd2906){return function(_0x3fb5f4){try{jsonpatch[_0x002e('0x21')](_0x3fb5f4,_0xfd2906,!![]);}catch(_0x50a83f){return BPromise['reject'](_0x50a83f);}return _0x3fb5f4['save']();};}function saveUpdates(_0x717eca,_0x1f8586){return function(_0x5acd1c){if(_0x5acd1c){return _0x5acd1c[_0x002e('0x22')](_0x717eca)['then'](function(_0x5be130){return _0x5be130;});}return null;};}function removeEntity(_0x249018,_0x26ae36){return function(_0x4acc1e){if(_0x4acc1e){return _0x4acc1e['destroy']()['then'](function(){_0x249018['status'](0xcc)[_0x002e('0x1b')]();});}};}function handleEntityNotFound(_0x1ec71b,_0x5308cf){return function(_0x104471){if(!_0x104471){_0x1ec71b[_0x002e('0x19')](0x194);}return _0x104471;};}function handleError(_0x4ce922,_0x878a4c){_0x878a4c=_0x878a4c||0x1f4;return function(_0x32ff22){logger[_0x002e('0x23')](_0x32ff22[_0x002e('0x24')]);if(_0x32ff22[_0x002e('0x25')]){delete _0x32ff22[_0x002e('0x25')];}_0x4ce922[_0x002e('0x1a')](_0x878a4c)[_0x002e('0x26')](_0x32ff22);};}exports[_0x002e('0x27')]=function(_0x3240fd,_0x32a9c7){var _0x126bbb={},_0x240913={},_0x8fa19={'count':0x0,'rows':[]};var _0x2fea94=_[_0x002e('0x28')](db['SmsTransferReport'][_0x002e('0x29')],function(_0x51a407){return{'name':_0x51a407[_0x002e('0x2a')],'type':_0x51a407[_0x002e('0x2b')][_0x002e('0x2c')]};});_0x240913[_0x002e('0x2d')]=_[_0x002e('0x28')](_0x2fea94,_0x002e('0x25'));_0x240913[_0x002e('0x2e')]=_['keys'](_0x3240fd['query']);_0x240913[_0x002e('0x2f')]=_[_0x002e('0x30')](_0x240913['model'],_0x240913['query']);_0x126bbb[_0x002e('0x31')]=_[_0x002e('0x30')](_0x240913['model'],qs['fields'](_0x3240fd['query'][_0x002e('0x32')]));_0x126bbb['attributes']=_0x126bbb[_0x002e('0x31')][_0x002e('0x33')]?_0x126bbb['attributes']:_0x240913[_0x002e('0x2d')];if(!_0x3240fd['query'][_0x002e('0x34')](_0x002e('0x35'))){_0x126bbb['limit']=qs[_0x002e('0x20')](_0x3240fd[_0x002e('0x2e')][_0x002e('0x20')]);_0x126bbb[_0x002e('0x1d')]=qs[_0x002e('0x1d')](_0x3240fd[_0x002e('0x2e')]['offset']);}_0x126bbb[_0x002e('0x36')]=qs['sort'](_0x3240fd['query']['sort']);_0x126bbb[_0x002e('0x37')]=qs[_0x002e('0x2f')](_['pick'](_0x3240fd[_0x002e('0x2e')],_0x240913[_0x002e('0x2f')]),_0x2fea94);if(_0x3240fd[_0x002e('0x2e')]['filter']){_0x126bbb[_0x002e('0x37')]=_[_0x002e('0x38')](_0x126bbb['where'],{'$or':_[_0x002e('0x28')](_0x2fea94,function(_0x25da3b){if(_0x25da3b[_0x002e('0x2b')]!=='VIRTUAL'){var _0x1bae04={};_0x1bae04[_0x25da3b[_0x002e('0x25')]]={'$like':'%'+_0x3240fd[_0x002e('0x2e')][_0x002e('0x39')]+'%'};return _0x1bae04;}})});}_0x126bbb=_[_0x002e('0x38')]({},_0x126bbb,_0x3240fd[_0x002e('0x3a')]);var _0x49400f={'where':_0x126bbb[_0x002e('0x37')]};return db[_0x002e('0x3b')]['count'](_0x49400f)[_0x002e('0x3c')](function(_0x37f8df){_0x8fa19['count']=_0x37f8df;if(_0x3240fd[_0x002e('0x2e')]['includeAll']){_0x126bbb[_0x002e('0x3d')]=[{'all':!![]}];}return db[_0x002e('0x3b')][_0x002e('0x3e')](_0x126bbb);})[_0x002e('0x3c')](function(_0x1ba74b){_0x8fa19['rows']=_0x1ba74b;return _0x8fa19;})[_0x002e('0x3c')](respondWithFilteredResult(_0x32a9c7,_0x126bbb))[_0x002e('0x3f')](handleError(_0x32a9c7,null));};exports[_0x002e('0x40')]=function(_0x4c5986,_0x16faf8){var _0x3fc255={'raw':!![],'where':{'id':_0x4c5986[_0x002e('0x41')]['id']}},_0x5ef151={};_0x5ef151[_0x002e('0x2d')]=_[_0x002e('0x42')](db[_0x002e('0x3b')][_0x002e('0x29')]);_0x5ef151['query']=_[_0x002e('0x42')](_0x4c5986[_0x002e('0x2e')]);_0x5ef151[_0x002e('0x2f')]=_[_0x002e('0x30')](_0x5ef151[_0x002e('0x2d')],_0x5ef151[_0x002e('0x2e')]);_0x3fc255['attributes']=_[_0x002e('0x30')](_0x5ef151[_0x002e('0x2d')],qs['fields'](_0x4c5986['query'][_0x002e('0x32')]));_0x3fc255[_0x002e('0x31')]=_0x3fc255[_0x002e('0x31')][_0x002e('0x33')]?_0x3fc255[_0x002e('0x31')]:_0x5ef151[_0x002e('0x2d')];if(_0x4c5986[_0x002e('0x2e')]['includeAll']){_0x3fc255[_0x002e('0x3d')]=[{'all':!![]}];}_0x3fc255=_[_0x002e('0x38')]({},_0x3fc255,_0x4c5986[_0x002e('0x3a')]);return db[_0x002e('0x3b')][_0x002e('0x43')](_0x3fc255)[_0x002e('0x3c')](handleEntityNotFound(_0x16faf8,null))[_0x002e('0x3c')](respondWithResult(_0x16faf8,null))['catch'](handleError(_0x16faf8,null));};exports[_0x002e('0x44')]=function(_0x105e06,_0x1dbe4c){return db[_0x002e('0x3b')]['create'](_0x105e06[_0x002e('0x45')],{})['then'](respondWithResult(_0x1dbe4c,0xc9))[_0x002e('0x3f')](handleError(_0x1dbe4c,null));};exports['update']=function(_0xe07977,_0x426711){if(_0xe07977[_0x002e('0x45')]['id']){delete _0xe07977[_0x002e('0x45')]['id'];}return db[_0x002e('0x3b')][_0x002e('0x43')]({'where':{'id':_0xe07977['params']['id']}})['then'](handleEntityNotFound(_0x426711,null))[_0x002e('0x3c')](saveUpdates(_0xe07977[_0x002e('0x45')],null))[_0x002e('0x3c')](respondWithResult(_0x426711,null))[_0x002e('0x3f')](handleError(_0x426711,null));};exports[_0x002e('0x46')]=function(_0x15c8eb,_0x15411f){return db[_0x002e('0x3b')][_0x002e('0x43')]({'where':{'id':_0x15c8eb[_0x002e('0x41')]['id']}})['then'](handleEntityNotFound(_0x15411f,null))['then'](removeEntity(_0x15411f,null))['catch'](handleError(_0x15411f,null));};exports['describe']=function(_0x3a5074,_0x164923){return db[_0x002e('0x3b')]['describe']()[_0x002e('0x3c')](respondWithResult(_0x164923,null))[_0x002e('0x3f')](handleError(_0x164923,null));};
\ No newline at end of file
index 2525abf..96f2da7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0x06b0=['bluebird','request-promise','path','../../config/environment','./smsTransferReport.attributes','exports','report_sms_transfer','uniqueid','lodash','../../config/logger','api','moment'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x06b0,0x74));var _0x006b=function(_0x438f68,_0x103e6f){_0x438f68=_0x438f68-0x0;var _0x137043=_0x06b0[_0x438f68];return _0x137043;};'use strict';var _=require(_0x006b('0x0'));var util=require('util');var logger=require(_0x006b('0x1'))(_0x006b('0x2'));var moment=require(_0x006b('0x3'));var BPromise=require(_0x006b('0x4'));var rp=require(_0x006b('0x5'));var fs=require('fs');var path=require(_0x006b('0x6'));var rimraf=require('rimraf');var config=require(_0x006b('0x7'));var attributes=require(_0x006b('0x8'));module[_0x006b('0x9')]=function(_0x5e021a,_0x1f9838){return _0x5e021a['define']('SmsTransferReport',attributes,{'tableName':_0x006b('0xa'),'paranoid':![],'indexes':[{'name':_0x006b('0xb'),'fields':[_0x006b('0xb')]}],'timestamps':!![]});};
\ No newline at end of file
index 116494c..3c9339b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0x4b1f=['stringify','error','code','SmsTransferReport,\x20%s,\x20%s','message','lodash','util','bluebird','randomstring','ioredis','../../config/utils','../../config/logger','rpc','client','http','then','info','debug','SmsTransferReport,\x20%s,\x20%s,\x20%s','request\x20sent'];(function(_0x4e55a9,_0x241b22){var _0x4a9b67=function(_0x2a3bd1){while(--_0x2a3bd1){_0x4e55a9['push'](_0x4e55a9['shift']());}};_0x4a9b67(++_0x241b22);}(_0x4b1f,0x195));var _0xf4b1=function(_0x59ee6f,_0x450239){_0x59ee6f=_0x59ee6f-0x0;var _0x4c0979=_0x4b1f[_0x59ee6f];return _0x4c0979;};'use strict';var _=require(_0xf4b1('0x0'));var util=require(_0xf4b1('0x1'));var moment=require('moment');var BPromise=require(_0xf4b1('0x2'));var rs=require(_0xf4b1('0x3'));var fs=require('fs');var Redis=require(_0xf4b1('0x4'));var db=require('../../mysqldb')['db'];var utils=require(_0xf4b1('0x5'));var logger=require(_0xf4b1('0x6'))(_0xf4b1('0x7'));var config=require('../../config/environment');var jayson=require('jayson/promise');var client=jayson[_0xf4b1('0x8')][_0xf4b1('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x310db5,_0x3b9c78,_0x1abfc7){return new BPromise(function(_0x50738c,_0x59cf77){return client['request'](_0x310db5,_0x1abfc7)[_0xf4b1('0xa')](function(_0x53a786){logger[_0xf4b1('0xb')]('SmsTransferReport,\x20%s,\x20%s',_0x3b9c78,'request\x20sent');logger[_0xf4b1('0xc')](_0xf4b1('0xd'),_0x3b9c78,_0xf4b1('0xe'),JSON[_0xf4b1('0xf')](_0x53a786));if(_0x53a786[_0xf4b1('0x10')]){if(_0x53a786[_0xf4b1('0x10')][_0xf4b1('0x11')]===0x1f4){logger[_0xf4b1('0x10')](_0xf4b1('0x12'),_0x3b9c78,_0x53a786[_0xf4b1('0x10')][_0xf4b1('0x13')]);return _0x59cf77(_0x53a786[_0xf4b1('0x10')][_0xf4b1('0x13')]);}logger['error']('SmsTransferReport,\x20%s,\x20%s',_0x3b9c78,_0x53a786[_0xf4b1('0x10')]['message']);return _0x50738c(_0x53a786['error'][_0xf4b1('0x13')]);}else{logger['info']('SmsTransferReport,\x20%s,\x20%s',_0x3b9c78,_0xf4b1('0xe'));_0x50738c(_0x53a786['result']['message']);}})['catch'](function(_0x5cb2a1){logger[_0xf4b1('0x10')](_0xf4b1('0x12'),_0x3b9c78,_0x5cb2a1);_0x59cf77(_0x5cb2a1);});});}
\ No newline at end of file
index 92e3c2f..d870a2b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0x4453=['/:id/download','download','diskStorage','join','root','server/files/sounds/original/','originalname','replace','format','%s-%s%s','extname','now','post','single','file','create','put','update','delete','exports','multer','util','connect-timeout','express','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./sound.controller','get','isAuthenticated','index','/:id','show'];(function(_0x10295c,_0x511f04){var _0x69de23=function(_0x5cc6a8){while(--_0x5cc6a8){_0x10295c['push'](_0x10295c['shift']());}};_0x69de23(++_0x511f04);}(_0x4453,0x9c));var _0x3445=function(_0x54313f,_0x2cbd66){_0x54313f=_0x54313f-0x0;var _0x4ae0a6=_0x4453[_0x54313f];return _0x4ae0a6;};'use strict';var multer=require(_0x3445('0x0'));var util=require(_0x3445('0x1'));var path=require('path');var timeout=require(_0x3445('0x2'));var express=require(_0x3445('0x3'));var router=express['Router']();var fs_extra=require(_0x3445('0x4'));var auth=require(_0x3445('0x5'));var interaction=require(_0x3445('0x6'));var config=require(_0x3445('0x7'));var controller=require(_0x3445('0x8'));router[_0x3445('0x9')]('/',auth[_0x3445('0xa')](),controller[_0x3445('0xb')]);router[_0x3445('0x9')](_0x3445('0xc'),auth['isAuthenticated'](),controller[_0x3445('0xd')]);router[_0x3445('0x9')](_0x3445('0xe'),auth[_0x3445('0xa')](),controller[_0x3445('0xf')]);var upload=multer({'storage':multer[_0x3445('0x10')]({'destination':function(_0x1e1a82,_0x4cd19d,_0x879532){_0x879532(null,path[_0x3445('0x11')](config[_0x3445('0x12')],_0x3445('0x13')));},'filename':function(_0x4b51a3,_0xfced7c,_0x3d8fe5){_0xfced7c[_0x3445('0x14')]=_0xfced7c[_0x3445('0x14')][_0x3445('0x15')](/[+@&\/\\#,+()$~%'":*?<>{}\s\\|]/g,'-');_0x3d8fe5(null,util[_0x3445('0x16')](_0x3445('0x17'),path['basename'](_0xfced7c['originalname'],path[_0x3445('0x18')](_0xfced7c['originalname'])),Date[_0x3445('0x19')](),path['extname'](_0xfced7c[_0x3445('0x14')])));}})});router[_0x3445('0x1a')]('/',upload[_0x3445('0x1b')](_0x3445('0x1c')),controller[_0x3445('0x1d')]);router[_0x3445('0x1e')](_0x3445('0xc'),auth['isAuthenticated'](),controller[_0x3445('0x1f')]);router[_0x3445('0x20')]('/:id',auth[_0x3445('0xa')](),controller[_0x3445('0x20')]);module[_0x3445('0x21')]=router;
\ No newline at end of file
index b6c2b67..7b37982 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0x897d=['BIGINT','INTEGER','sequelize','exports','STRING','name','FLOAT'];(function(_0x48245e,_0x178e51){var _0x4e5e30=function(_0x428bfd){while(--_0x428bfd){_0x48245e['push'](_0x48245e['shift']());}};_0x4e5e30(++_0x178e51);}(_0x897d,0x80));var _0xd897=function(_0x29d082,_0x9da22c){_0x29d082=_0x29d082-0x0;var _0x5e5f78=_0x897d[_0x29d082];return _0x5e5f78;};'use strict';var Sequelize=require(_0xd897('0x0'));module[_0xd897('0x1')]={'name':{'type':Sequelize[_0xd897('0x2')],'unique':_0xd897('0x3'),'allowNull':![]},'save_name':{'type':Sequelize[_0xd897('0x2')]},'display_name':{'type':Sequelize[_0xd897('0x2')],'defaultValue':''},'description':{'type':Sequelize[_0xd897('0x2')]},'original_format':{'type':Sequelize[_0xd897('0x2')]},'original_duration':{'type':Sequelize[_0xd897('0x4')]},'original_sampleCount':{'type':Sequelize[_0xd897('0x5')]},'original_channelCount':{'type':Sequelize[_0xd897('0x6')]},'original_bitRate':{'type':Sequelize[_0xd897('0x5')]},'original_sampleRate':{'type':Sequelize[_0xd897('0x6')]},'converted_format':{'type':Sequelize[_0xd897('0x2')]},'converted_duration':{'type':Sequelize[_0xd897('0x4')]},'converted_sampleCount':{'type':Sequelize[_0xd897('0x5')]},'converted_channelCount':{'type':Sequelize[_0xd897('0x6')]},'converted_bitRate':{'type':Sequelize[_0xd897('0x5')]},'converted_sampleRate':{'type':Sequelize[_0xd897('0x6')]}};
\ No newline at end of file
index 2f24007..8db6786 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0xa8b2=['request-promise','bluebird','mustache','path','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','desk.js','querystring','papaparse','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','json','offset','undefined','limit','count','Content-Range','reject','save','update','then','get','Sounds','UserProfileResource','error','stack','name','send','index','Sound','rawAttributes','fieldName','type','key','model','query','filters','intersection','attributes','fields','length','hasOwnProperty','order','sort','where','merge','map','VIRTUAL','filter','options','include','findAll','catch','show','params','keys','includeAll','find','download','save_name','converted_format','join','root','server/files/sounds/converted','format','%s.%s','create','file','originalname','extname','basename','filename','server/files/sounds/original','info','chmodSync','0777','transcode','wav','unlinkSync','src','original_duration','duration','original_sampleCount','sampleCount','original_channelCount','channelCount','original_bitRate','bitRate','sampleRate','dest','converted_duration','converted_sampleCount','converted_bitRate','converted_sampleRate','body','role','Unable\x20to\x20retrieve\x20the\x20current\x20user','UserProfileSection','userProfileId','autoAssociation','start','description','delete','destroy','eml-format','rimraf','zip-dir','fast-json-patch'];(function(_0x2c4126,_0x5c64ac){var _0x686b39=function(_0x359860){while(--_0x359860){_0x2c4126['push'](_0x2c4126['shift']());}};_0x686b39(++_0x5c64ac);}(_0xa8b2,0x77));var _0x2a8b=function(_0x46c06c,_0x7493eb){_0x46c06c=_0x46c06c-0x0;var _0x2c53ea=_0xa8b2[_0x46c06c];return _0x2c53ea;};'use strict';var emlformat=require(_0x2a8b('0x0'));var rimraf=require(_0x2a8b('0x1'));var zipdir=require(_0x2a8b('0x2'));var jsonpatch=require(_0x2a8b('0x3'));var rp=require(_0x2a8b('0x4'));var moment=require('moment');var BPromise=require(_0x2a8b('0x5'));var Mustache=require(_0x2a8b('0x6'));var util=require('util');var path=require(_0x2a8b('0x7'));var sox=require(_0x2a8b('0x8'));var csv=require(_0x2a8b('0x9'));var ejs=require(_0x2a8b('0xa'));var fs=require('fs');var fs_extra=require(_0x2a8b('0xb'));var _=require(_0x2a8b('0xc'));var squel=require(_0x2a8b('0xd'));var crypto=require(_0x2a8b('0xe'));var jsforce=require('jsforce');var deskjs=require(_0x2a8b('0xf'));var toCsv=require('to-csv');var querystring=require(_0x2a8b('0x10'));var Papa=require(_0x2a8b('0x11'));var Redis=require('ioredis');var authService=require(_0x2a8b('0x12'));var qs=require(_0x2a8b('0x13'));var as=require(_0x2a8b('0x14'));var hardwareService=require(_0x2a8b('0x15'));var logger=require(_0x2a8b('0x16'))('api');var utils=require(_0x2a8b('0x17'));var config=require(_0x2a8b('0x18'));var licenseUtil=require(_0x2a8b('0x19'));var db=require(_0x2a8b('0x1a'))['db'];function respondWithStatusCode(_0x530eb7,_0x137411){_0x137411=_0x137411||0xcc;return function(_0x38c741){if(_0x38c741){return _0x530eb7[_0x2a8b('0x1b')](_0x137411);}return _0x530eb7[_0x2a8b('0x1c')](_0x137411)[_0x2a8b('0x1d')]();};}function respondWithResult(_0x529c54,_0x276f9e){_0x276f9e=_0x276f9e||0xc8;return function(_0xce226d){if(_0xce226d){return _0x529c54[_0x2a8b('0x1c')](_0x276f9e)[_0x2a8b('0x1e')](_0xce226d);}};}function respondWithFilteredResult(_0x63a78,_0x24adaa){return function(_0x3b9da7){if(_0x3b9da7){var _0x1baea8=typeof _0x24adaa[_0x2a8b('0x1f')]===_0x2a8b('0x20')&&typeof _0x24adaa[_0x2a8b('0x21')]===_0x2a8b('0x20');var _0x21f12f=_0x3b9da7['count'];var _0x3ddd05=_0x1baea8?0x0:_0x24adaa['offset'];var _0x31dd1a=_0x1baea8?_0x3b9da7[_0x2a8b('0x22')]:_0x24adaa[_0x2a8b('0x1f')]+_0x24adaa[_0x2a8b('0x21')];var _0x1864c5;if(_0x31dd1a>=_0x21f12f){_0x31dd1a=_0x21f12f;_0x1864c5=0xc8;}else{_0x1864c5=0xce;}_0x63a78[_0x2a8b('0x1c')](_0x1864c5);return _0x63a78['set'](_0x2a8b('0x23'),_0x3ddd05+'-'+_0x31dd1a+'/'+_0x21f12f)[_0x2a8b('0x1e')](_0x3b9da7);}return null;};}function patchUpdates(_0x16b7ec){return function(_0xc7ff3d){try{jsonpatch['apply'](_0xc7ff3d,_0x16b7ec,!![]);}catch(_0x405b29){return BPromise[_0x2a8b('0x24')](_0x405b29);}return _0xc7ff3d[_0x2a8b('0x25')]();};}function saveUpdates(_0x2dff21,_0x536591){return function(_0x13911a){if(_0x13911a){return _0x13911a[_0x2a8b('0x26')](_0x2dff21)[_0x2a8b('0x27')](function(_0x56b681){return _0x56b681;});}return null;};}function removeEntity(_0x583d63,_0x12f72b){return function(_0x3d0ad4){if(_0x3d0ad4){return _0x3d0ad4['destroy']()[_0x2a8b('0x27')](function(){var _0x547f20=_0x3d0ad4[_0x2a8b('0x28')]({'plain':!![]});var _0x592788=_0x2a8b('0x29');return db[_0x2a8b('0x2a')]['destroy']({'where':{'type':_0x592788,'resourceId':_0x547f20['id']}})[_0x2a8b('0x27')](function(){return _0x3d0ad4;});})['then'](function(){_0x583d63[_0x2a8b('0x1c')](0xcc)[_0x2a8b('0x1d')]();});}};}function handleEntityNotFound(_0x36d87f,_0x41ed0c){return function(_0x135070){if(!_0x135070){_0x36d87f[_0x2a8b('0x1b')](0x194);}return _0x135070;};}function handleError(_0x4863f5,_0x1f783f){_0x1f783f=_0x1f783f||0x1f4;return function(_0x5806ea){logger[_0x2a8b('0x2b')](_0x5806ea[_0x2a8b('0x2c')]);if(_0x5806ea[_0x2a8b('0x2d')]){delete _0x5806ea[_0x2a8b('0x2d')];}_0x4863f5[_0x2a8b('0x1c')](_0x1f783f)[_0x2a8b('0x2e')](_0x5806ea);};}exports[_0x2a8b('0x2f')]=function(_0x2ddcd5,_0x401ac2){var _0x3b165c={},_0x48b025={},_0x26f8eb={'count':0x0,'rows':[]};var _0x4987bd=_['map'](db[_0x2a8b('0x30')][_0x2a8b('0x31')],function(_0x5b0d1c){return{'name':_0x5b0d1c[_0x2a8b('0x32')],'type':_0x5b0d1c[_0x2a8b('0x33')][_0x2a8b('0x34')]};});_0x48b025[_0x2a8b('0x35')]=_['map'](_0x4987bd,_0x2a8b('0x2d'));_0x48b025[_0x2a8b('0x36')]=_['keys'](_0x2ddcd5[_0x2a8b('0x36')]);_0x48b025[_0x2a8b('0x37')]=_[_0x2a8b('0x38')](_0x48b025['model'],_0x48b025[_0x2a8b('0x36')]);_0x3b165c[_0x2a8b('0x39')]=_[_0x2a8b('0x38')](_0x48b025[_0x2a8b('0x35')],qs[_0x2a8b('0x3a')](_0x2ddcd5[_0x2a8b('0x36')][_0x2a8b('0x3a')]));_0x3b165c[_0x2a8b('0x39')]=_0x3b165c[_0x2a8b('0x39')][_0x2a8b('0x3b')]?_0x3b165c[_0x2a8b('0x39')]:_0x48b025[_0x2a8b('0x35')];if(!_0x2ddcd5[_0x2a8b('0x36')][_0x2a8b('0x3c')]('nolimit')){_0x3b165c[_0x2a8b('0x21')]=qs[_0x2a8b('0x21')](_0x2ddcd5[_0x2a8b('0x36')][_0x2a8b('0x21')]);_0x3b165c['offset']=qs[_0x2a8b('0x1f')](_0x2ddcd5[_0x2a8b('0x36')][_0x2a8b('0x1f')]);}_0x3b165c[_0x2a8b('0x3d')]=qs[_0x2a8b('0x3e')](_0x2ddcd5[_0x2a8b('0x36')][_0x2a8b('0x3e')]);_0x3b165c[_0x2a8b('0x3f')]=qs[_0x2a8b('0x37')](_['pick'](_0x2ddcd5[_0x2a8b('0x36')],_0x48b025['filters']),_0x4987bd);if(_0x2ddcd5[_0x2a8b('0x36')]['filter']){_0x3b165c['where']=_[_0x2a8b('0x40')](_0x3b165c['where'],{'$or':_[_0x2a8b('0x41')](_0x4987bd,function(_0x535551){if(_0x535551[_0x2a8b('0x33')]!==_0x2a8b('0x42')){var _0x321ca6={};_0x321ca6[_0x535551[_0x2a8b('0x2d')]]={'$like':'%'+_0x2ddcd5[_0x2a8b('0x36')][_0x2a8b('0x43')]+'%'};return _0x321ca6;}})});}_0x3b165c=_[_0x2a8b('0x40')]({},_0x3b165c,_0x2ddcd5[_0x2a8b('0x44')]);var _0x21ccfc={'where':_0x3b165c['where']};return db[_0x2a8b('0x30')][_0x2a8b('0x22')](_0x21ccfc)[_0x2a8b('0x27')](function(_0x3f5581){_0x26f8eb[_0x2a8b('0x22')]=_0x3f5581;if(_0x2ddcd5[_0x2a8b('0x36')]['includeAll']){_0x3b165c[_0x2a8b('0x45')]=[{'all':!![]}];}return db['Sound'][_0x2a8b('0x46')](_0x3b165c);})[_0x2a8b('0x27')](function(_0x294dc7){_0x26f8eb['rows']=_0x294dc7;return _0x26f8eb;})[_0x2a8b('0x27')](respondWithFilteredResult(_0x401ac2,_0x3b165c))[_0x2a8b('0x47')](handleError(_0x401ac2,null));};exports[_0x2a8b('0x48')]=function(_0x40d82e,_0x2ad7c6){var _0x5d56e3={'raw':!![],'where':{'id':_0x40d82e[_0x2a8b('0x49')]['id']}},_0x305c13={};_0x305c13[_0x2a8b('0x35')]=_[_0x2a8b('0x4a')](db[_0x2a8b('0x30')][_0x2a8b('0x31')]);_0x305c13[_0x2a8b('0x36')]=_[_0x2a8b('0x4a')](_0x40d82e['query']);_0x305c13[_0x2a8b('0x37')]=_['intersection'](_0x305c13[_0x2a8b('0x35')],_0x305c13[_0x2a8b('0x36')]);_0x5d56e3[_0x2a8b('0x39')]=_[_0x2a8b('0x38')](_0x305c13[_0x2a8b('0x35')],qs[_0x2a8b('0x3a')](_0x40d82e[_0x2a8b('0x36')]['fields']));_0x5d56e3[_0x2a8b('0x39')]=_0x5d56e3['attributes'][_0x2a8b('0x3b')]?_0x5d56e3[_0x2a8b('0x39')]:_0x305c13[_0x2a8b('0x35')];if(_0x40d82e[_0x2a8b('0x36')][_0x2a8b('0x4b')]){_0x5d56e3[_0x2a8b('0x45')]=[{'all':!![]}];}_0x5d56e3=_[_0x2a8b('0x40')]({},_0x5d56e3,_0x40d82e[_0x2a8b('0x44')]);return db[_0x2a8b('0x30')][_0x2a8b('0x4c')](_0x5d56e3)[_0x2a8b('0x27')](handleEntityNotFound(_0x2ad7c6,null))['then'](respondWithResult(_0x2ad7c6,null))[_0x2a8b('0x47')](handleError(_0x2ad7c6,null));};exports[_0x2a8b('0x4d')]=function(_0x146330,_0x368716,_0x575925){return db['Sound'][_0x2a8b('0x4c')]({'where':{'id':_0x146330[_0x2a8b('0x49')]['id']},'attributes':[_0x2a8b('0x2d'),_0x2a8b('0x4e'),_0x2a8b('0x4f')],'raw':!![]})[_0x2a8b('0x27')](handleEntityNotFound(_0x368716,null))[_0x2a8b('0x27')](function(_0x46368e){if(_0x46368e){if(!fs['existsSync'](path[_0x2a8b('0x50')](config[_0x2a8b('0x51')],_0x2a8b('0x52'),_0x46368e[_0x2a8b('0x4e')]+'.'+_0x46368e[_0x2a8b('0x4f')]))){throw new db['Sequelize']['ValidationError']('Sound\x20not\x20found');}return _0x368716[_0x2a8b('0x4d')](path[_0x2a8b('0x50')](config[_0x2a8b('0x51')],_0x2a8b('0x52'),util[_0x2a8b('0x53')](_0x2a8b('0x54'),_0x46368e[_0x2a8b('0x4e')],_0x46368e[_0x2a8b('0x4f')])),util[_0x2a8b('0x53')]('%s.%s',_0x46368e[_0x2a8b('0x2d')],_0x46368e[_0x2a8b('0x4f')]));}return null;})[_0x2a8b('0x47')](handleError(_0x368716,null));};exports[_0x2a8b('0x55')]=function(_0xff313e,_0x1e6b5f,_0x3279f8){var _0x21ea61={'name':path['basename'](_0xff313e[_0x2a8b('0x56')][_0x2a8b('0x57')],path[_0x2a8b('0x58')](_0xff313e['file'][_0x2a8b('0x57')])),'save_name':path[_0x2a8b('0x59')](_0xff313e[_0x2a8b('0x56')][_0x2a8b('0x5a')],path[_0x2a8b('0x58')](_0xff313e['file']['filename'])),'original_format':path['extname'](_0xff313e[_0x2a8b('0x56')][_0x2a8b('0x57')])['substring'](0x1),'converted_format':'wav'};var _0x1253fd=path[_0x2a8b('0x50')](config['root'],_0x2a8b('0x5b'),_0xff313e['file'][_0x2a8b('0x5a')]);var _0x152081=path[_0x2a8b('0x50')](config['root'],'server/files/sounds/converted',util['format'](_0x2a8b('0x54'),path[_0x2a8b('0x59')](_0xff313e[_0x2a8b('0x56')][_0x2a8b('0x5a')],path[_0x2a8b('0x58')](_0xff313e[_0x2a8b('0x56')]['filename'])),_0x21ea61[_0x2a8b('0x4f')]));logger[_0x2a8b('0x5c')]('Sound\x20upload\x20filepath:\x20%s',_0x1253fd);logger[_0x2a8b('0x5c')]('Sound\x20upload\x20destination:\x20%s',_0x152081);try{fs[_0x2a8b('0x5d')](_0x1253fd,parseInt(_0x2a8b('0x5e'),0x8));var _0x48b584=sox[_0x2a8b('0x5f')](_0x1253fd,_0x152081,{'sampleRate':0x1f40,'format':_0x2a8b('0x60'),'channelCount':0x1,'bitRate':0xc0*0x400,'compressionQuality':0x5});_0x48b584['on']('error',function(_0x57ef42){fs[_0x2a8b('0x61')](_0x1253fd);_0x1e6b5f[_0x2a8b('0x1c')](0x1f4)['send'](_0x57ef42);});_0x48b584['on'](_0x2a8b('0x62'),function(_0x2551eb){_0x21ea61[_0x2a8b('0x63')]=isNaN(_0x2551eb[_0x2a8b('0x64')])?null:_0x2551eb[_0x2a8b('0x64')]*0x3e8;_0x21ea61[_0x2a8b('0x65')]=isNaN(_0x2551eb[_0x2a8b('0x66')])?null:_0x2551eb[_0x2a8b('0x66')];_0x21ea61[_0x2a8b('0x67')]=isNaN(_0x2551eb[_0x2a8b('0x68')])?null:_0x2551eb[_0x2a8b('0x68')];_0x21ea61[_0x2a8b('0x69')]=isNaN(_0x2551eb[_0x2a8b('0x6a')])?null:_0x2551eb[_0x2a8b('0x6a')];_0x21ea61['original_sampleRate']=isNaN(_0x2551eb[_0x2a8b('0x6b')])?null:_0x2551eb[_0x2a8b('0x6b')];});_0x48b584['on'](_0x2a8b('0x6c'),function(_0x55e164){_0x21ea61[_0x2a8b('0x6d')]=isNaN(_0x55e164[_0x2a8b('0x64')])?null:_0x55e164[_0x2a8b('0x64')]*0x3e8;_0x21ea61[_0x2a8b('0x6e')]=isNaN(_0x55e164['sampleCount'])?null:_0x55e164[_0x2a8b('0x66')];_0x21ea61['converted_channelCount']=isNaN(_0x55e164[_0x2a8b('0x68')])?null:_0x55e164[_0x2a8b('0x68')];_0x21ea61[_0x2a8b('0x6f')]=isNaN(_0x55e164[_0x2a8b('0x6a')])?null:_0x55e164[_0x2a8b('0x6a')];_0x21ea61[_0x2a8b('0x70')]=isNaN(_0x55e164[_0x2a8b('0x6b')])?null:_0x55e164['sampleRate'];});_0x48b584['on'](_0x2a8b('0x1d'),function(){fs[_0x2a8b('0x5d')](_0x152081,parseInt(_0x2a8b('0x5e'),0x8));return db['Sound'][_0x2a8b('0x55')](_0x21ea61)[_0x2a8b('0x27')](function(_0x149837){var _0x987052={'role':_0xff313e[_0x2a8b('0x71')][_0x2a8b('0x72')],'userProfileId':_0xff313e[_0x2a8b('0x71')]['userProfileId']};if(!_0x987052)throw new Error(_0x2a8b('0x73'));if(_0x987052[_0x2a8b('0x72')]==='user'){var _0x583d71=_0x149837[_0x2a8b('0x28')]({'plain':!![]});return db[_0x2a8b('0x74')][_0x2a8b('0x4c')]({'where':{'name':_0x2a8b('0x29'),'userProfileId':_0x987052[_0x2a8b('0x75')]},'raw':!![]})[_0x2a8b('0x27')](function(_0x455947){if(_0x455947&&_0x455947[_0x2a8b('0x76')]===0x0){return db[_0x2a8b('0x2a')]['create']({'name':_0x583d71[_0x2a8b('0x2d')],'resourceId':_0x583d71['id'],'type':_0x455947[_0x2a8b('0x2d')],'sectionId':_0x455947['id']},{})[_0x2a8b('0x27')](function(){return _0x149837;});}else{return _0x149837;}})[_0x2a8b('0x47')](function(_0x5df252){logger[_0x2a8b('0x2b')]('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x5df252);throw _0x5df252;});}return _0x149837;})[_0x2a8b('0x27')](respondWithResult(_0x1e6b5f,null))[_0x2a8b('0x47')](handleError(_0x1e6b5f,null));});_0x48b584[_0x2a8b('0x77')]();}catch(_0x2b39cf){_0x1e6b5f[_0x2a8b('0x1c')](0x1f4)['send'](_0x2b39cf);}};exports[_0x2a8b('0x26')]=function(_0x3bdf76,_0x5bc9a6,_0x35ef33){return db['Sound']['find']({'where':{'id':_0x3bdf76[_0x2a8b('0x49')]['id']}})['then'](handleEntityNotFound(_0x5bc9a6,null))[_0x2a8b('0x27')](saveUpdates(_['pick'](_0x3bdf76[_0x2a8b('0x71')],[_0x2a8b('0x2d'),_0x2a8b('0x78')]),null))[_0x2a8b('0x27')](respondWithResult(_0x5bc9a6,null))['catch'](handleError(_0x5bc9a6,null));};exports[_0x2a8b('0x79')]=function(_0x51e025,_0x5d513c,_0x3f8337){return db[_0x2a8b('0x30')]['find']({'where':{'id':_0x51e025[_0x2a8b('0x49')]['id']}})[_0x2a8b('0x27')](function(_0x533a20){if(_0x533a20){return _0x533a20[_0x2a8b('0x7a')]();}})[_0x2a8b('0x27')](function(_0x23405a){var _0x24a8f7=path[_0x2a8b('0x50')](config['root'],_0x2a8b('0x5b'),util[_0x2a8b('0x53')](_0x2a8b('0x54'),_0x23405a[_0x2a8b('0x4e')],_0x23405a['original_format']));var _0x29f6a6=path[_0x2a8b('0x50')](config[_0x2a8b('0x51')],'server/files/sounds/converted',util[_0x2a8b('0x53')](_0x2a8b('0x54'),_0x23405a[_0x2a8b('0x4e')],_0x23405a[_0x2a8b('0x4f')]));fs[_0x2a8b('0x61')](_0x24a8f7);fs[_0x2a8b('0x61')](_0x29f6a6);return _0x23405a;})[_0x2a8b('0x27')](function(_0x33e978){if(_0x33e978){return _0x5d513c[_0x2a8b('0x1c')](0xcc)[_0x2a8b('0x1d')]();}})['then'](handleEntityNotFound(_0x5d513c,null))[_0x2a8b('0x47')](handleError(_0x5d513c,null));};
\ No newline at end of file
index aeaa237..b30bcde 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0xf378=['Sound','lodash','util','../../config/logger','moment','request-promise','path','rimraf','../../config/environment','./sound.attributes','exports','define'];(function(_0x5d8ac2,_0x511035){var _0x1ffcb5=function(_0x3e4326){while(--_0x3e4326){_0x5d8ac2['push'](_0x5d8ac2['shift']());}};_0x1ffcb5(++_0x511035);}(_0xf378,0x139));var _0x8f37=function(_0x50a0c2,_0x4befab){_0x50a0c2=_0x50a0c2-0x0;var _0x5ebadd=_0xf378[_0x50a0c2];return _0x5ebadd;};'use strict';var _=require(_0x8f37('0x0'));var util=require(_0x8f37('0x1'));var logger=require(_0x8f37('0x2'))('api');var moment=require(_0x8f37('0x3'));var BPromise=require('bluebird');var rp=require(_0x8f37('0x4'));var fs=require('fs');var path=require(_0x8f37('0x5'));var rimraf=require(_0x8f37('0x6'));var config=require(_0x8f37('0x7'));var attributes=require(_0x8f37('0x8'));module[_0x8f37('0x9')]=function(_0x470f2d,_0x2b2976){return _0x470f2d[_0x8f37('0xa')](_0x8f37('0xb'),attributes,{'tableName':'tools_sounds','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 2c97b23..08c57bc 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0xa056=['include','model','map','ShowSound','lodash','util','randomstring','ioredis','../../mysqldb','../../config/logger','../../config/environment','client','http','request','then','info','Sound,\x20%s,\x20%s','request\x20sent','debug','Sound,\x20%s,\x20%s,\x20%s','stringify','error','message','catch','options','raw','attributes'];(function(_0x40a045,_0x516f0e){var _0x1a687c=function(_0x48c9fe){while(--_0x48c9fe){_0x40a045['push'](_0x40a045['shift']());}};_0x1a687c(++_0x516f0e);}(_0xa056,0x199));var _0x6a05=function(_0x278e51,_0x1e9e58){_0x278e51=_0x278e51-0x0;var _0x232954=_0xa056[_0x278e51];return _0x232954;};'use strict';var _=require(_0x6a05('0x0'));var util=require(_0x6a05('0x1'));var moment=require('moment');var BPromise=require('bluebird');var rs=require(_0x6a05('0x2'));var fs=require('fs');var Redis=require(_0x6a05('0x3'));var db=require(_0x6a05('0x4'))['db'];var utils=require('../../config/utils');var logger=require(_0x6a05('0x5'))('rpc');var config=require(_0x6a05('0x6'));var jayson=require('jayson/promise');var client=jayson[_0x6a05('0x7')][_0x6a05('0x8')]({'port':0x232a});function respondWithRpcPromise(_0x38acb5,_0x8c8ee,_0x2aab42){return new BPromise(function(_0x159c35,_0x4fc2cf){return client[_0x6a05('0x9')](_0x38acb5,_0x2aab42)[_0x6a05('0xa')](function(_0x4ed156){logger[_0x6a05('0xb')](_0x6a05('0xc'),_0x8c8ee,_0x6a05('0xd'));logger[_0x6a05('0xe')](_0x6a05('0xf'),_0x8c8ee,_0x6a05('0xd'),JSON[_0x6a05('0x10')](_0x4ed156));if(_0x4ed156[_0x6a05('0x11')]){if(_0x4ed156[_0x6a05('0x11')]['code']===0x1f4){logger[_0x6a05('0x11')](_0x6a05('0xc'),_0x8c8ee,_0x4ed156[_0x6a05('0x11')]['message']);return _0x4fc2cf(_0x4ed156[_0x6a05('0x11')][_0x6a05('0x12')]);}logger[_0x6a05('0x11')](_0x6a05('0xc'),_0x8c8ee,_0x4ed156[_0x6a05('0x11')]['message']);return _0x159c35(_0x4ed156[_0x6a05('0x11')][_0x6a05('0x12')]);}else{logger['info'](_0x6a05('0xc'),_0x8c8ee,_0x6a05('0xd'));_0x159c35(_0x4ed156['result']['message']);}})[_0x6a05('0x13')](function(_0x44f97e){logger['error'](_0x6a05('0xc'),_0x8c8ee,_0x44f97e);_0x4fc2cf(_0x44f97e);});});}exports['ShowSound']=function(_0x4332a5){var _0x4dbbc2=this;return new Promise(function(_0x72dbfa,_0x26e055){return db['Sound']['find']({'raw':_0x4332a5[_0x6a05('0x14')]?_0x4332a5[_0x6a05('0x14')][_0x6a05('0x15')]===undefined?!![]:![]:!![],'where':_0x4332a5[_0x6a05('0x14')]?_0x4332a5[_0x6a05('0x14')]['where']||null:null,'attributes':_0x4332a5['options']?_0x4332a5['options'][_0x6a05('0x16')]||null:null,'include':_0x4332a5[_0x6a05('0x14')]?_0x4332a5[_0x6a05('0x14')][_0x6a05('0x17')]?_['map'](_0x4332a5['options']['include'],function(_0x7e3c8f){return{'model':db[_0x7e3c8f[_0x6a05('0x18')]],'as':_0x7e3c8f['as'],'attributes':_0x7e3c8f[_0x6a05('0x16')],'include':_0x7e3c8f[_0x6a05('0x17')]?_[_0x6a05('0x19')](_0x7e3c8f['include'],function(_0xf9573f){return{'model':db[_0xf9573f[_0x6a05('0x18')]],'as':_0xf9573f['as'],'attributes':_0xf9573f[_0x6a05('0x16')],'include':_0xf9573f[_0x6a05('0x17')]?_[_0x6a05('0x19')](_0xf9573f[_0x6a05('0x17')],function(_0x4a2b63){return{'model':db[_0x4a2b63['model']],'as':_0x4a2b63['as'],'attributes':_0x4a2b63[_0x6a05('0x16')]};}):[]};}):[]};}):[]:[]})[_0x6a05('0xa')](function(_0x4960a4){logger[_0x6a05('0xb')](_0x6a05('0x1a'),_0x4332a5);logger['debug'](_0x6a05('0x1a'),_0x4332a5,JSON[_0x6a05('0x10')](_0x4960a4));_0x72dbfa(_0x4960a4);})[_0x6a05('0x13')](function(_0x373711){logger[_0x6a05('0x11')]('ShowSound',_0x373711['message'],_0x4332a5);_0x26e055(_0x4dbbc2[_0x6a05('0x11')](0x1f4,_0x373711[_0x6a05('0x12')]));});});};
\ No newline at end of file
index 48fe4a7..28d739d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0x14a0=['get','isAuthenticated','/:id','show','create','delete','destroy','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','./squareMessage.controller'];(function(_0x38cd50,_0x5cbff0){var _0x56ea40=function(_0x284258){while(--_0x284258){_0x38cd50['push'](_0x38cd50['shift']());}};_0x56ea40(++_0x5cbff0);}(_0x14a0,0x8e));var _0x014a=function(_0xfa2704,_0x482a51){_0xfa2704=_0xfa2704-0x0;var _0x3608ab=_0x14a0[_0xfa2704];return _0x3608ab;};'use strict';var multer=require('multer');var util=require(_0x014a('0x0'));var path=require(_0x014a('0x1'));var timeout=require(_0x014a('0x2'));var express=require(_0x014a('0x3'));var router=express[_0x014a('0x4')]();var fs_extra=require(_0x014a('0x5'));var auth=require(_0x014a('0x6'));var interaction=require('../../components/interaction/service');var config=require('../../config/environment');var controller=require(_0x014a('0x7'));router[_0x014a('0x8')]('/',auth[_0x014a('0x9')](),controller['index']);router['get'](_0x014a('0xa'),auth[_0x014a('0x9')](),controller[_0x014a('0xb')]);router['post']('/',auth['isAuthenticated'](),controller[_0x014a('0xc')]);router['put']('/:id',auth['isAuthenticated'](),controller['update']);router[_0x014a('0xd')]('/:id',auth[_0x014a('0x9')](),controller[_0x014a('0xe')]);module['exports']=router;
\ No newline at end of file
index 678623b..21ffc84 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0x6250=['STRING','exports','medium','ENUM','out'];(function(_0x2dc84d,_0xa70394){var _0x3a8bea=function(_0xeb5918){while(--_0xeb5918){_0x2dc84d['push'](_0x2dc84d['shift']());}};_0x3a8bea(++_0xa70394);}(_0x6250,0xfb));var _0x0625=function(_0x2bea84,_0x3e7ab8){_0x2bea84=_0x2bea84-0x0;var _0x2f7a84=_0x6250[_0x2bea84];return _0x2f7a84;};'use strict';var Sequelize=require('sequelize');module[_0x0625('0x0')]={'uniqueid':{'type':Sequelize['STRING']},'body':{'type':Sequelize['TEXT'](_0x0625('0x1')),'allowNull':![]},'direction':{'type':Sequelize[_0x0625('0x2')]('in',_0x0625('0x3')),'defaultValue':_0x0625('0x3'),'allowNull':![]},'providerName':{'type':Sequelize[_0x0625('0x4')]},'providerResponse':{'type':Sequelize['TEXT']}};
\ No newline at end of file
index e795be9..3a20b66 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0xade9=['Content-Range','apply','reject','save','update','then','destroy','error','stack','name','send','map','SquareMessage','type','model','query','keys','filters','intersection','attributes','fields','length','hasOwnProperty','order','sort','where','pick','merge','VIRTUAL','includeAll','findAll','show','params','include','options','find','catch','create','body','eml-format','rimraf','zip-dir','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','squel','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','api','../../config/utils','../../config/license/util','../../mysqldb','sendStatus','status','undefined','count','offset','limit','set'];(function(_0x46f1a6,_0xc7a582){var _0x38429a=function(_0x31adae){while(--_0x31adae){_0x46f1a6['push'](_0x46f1a6['shift']());}};_0x38429a(++_0xc7a582);}(_0xade9,0x194));var _0x9ade=function(_0x28a465,_0x558c2c){_0x28a465=_0x28a465-0x0;var _0x258386=_0xade9[_0x28a465];return _0x258386;};'use strict';var emlformat=require(_0x9ade('0x0'));var rimraf=require(_0x9ade('0x1'));var zipdir=require(_0x9ade('0x2'));var jsonpatch=require('fast-json-patch');var rp=require(_0x9ade('0x3'));var moment=require(_0x9ade('0x4'));var BPromise=require(_0x9ade('0x5'));var Mustache=require(_0x9ade('0x6'));var util=require(_0x9ade('0x7'));var path=require(_0x9ade('0x8'));var sox=require(_0x9ade('0x9'));var csv=require(_0x9ade('0xa'));var ejs=require(_0x9ade('0xb'));var fs=require('fs');var fs_extra=require(_0x9ade('0xc'));var _=require('lodash');var squel=require(_0x9ade('0xd'));var crypto=require(_0x9ade('0xe'));var jsforce=require(_0x9ade('0xf'));var deskjs=require(_0x9ade('0x10'));var toCsv=require(_0x9ade('0xa'));var querystring=require(_0x9ade('0x11'));var Papa=require(_0x9ade('0x12'));var Redis=require(_0x9ade('0x13'));var authService=require(_0x9ade('0x14'));var qs=require(_0x9ade('0x15'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x9ade('0x16'));var logger=require('../../config/logger')(_0x9ade('0x17'));var utils=require(_0x9ade('0x18'));var config=require('../../config/environment');var licenseUtil=require(_0x9ade('0x19'));var db=require(_0x9ade('0x1a'))['db'];function respondWithStatusCode(_0x110bba,_0x133590){_0x133590=_0x133590||0xcc;return function(_0x157851){if(_0x157851){return _0x110bba[_0x9ade('0x1b')](_0x133590);}return _0x110bba[_0x9ade('0x1c')](_0x133590)['end']();};}function respondWithResult(_0x4f6ef1,_0x43ab3c){_0x43ab3c=_0x43ab3c||0xc8;return function(_0x177e99){if(_0x177e99){return _0x4f6ef1[_0x9ade('0x1c')](_0x43ab3c)['json'](_0x177e99);}};}function respondWithFilteredResult(_0x4b22c4,_0x4dec6f){return function(_0x1558cd){if(_0x1558cd){var _0x3858b3=typeof _0x4dec6f['offset']==='undefined'&&typeof _0x4dec6f['limit']===_0x9ade('0x1d');var _0x43dd42=_0x1558cd[_0x9ade('0x1e')];var _0x351bea=_0x3858b3?0x0:_0x4dec6f['offset'];var _0x589537=_0x3858b3?_0x1558cd[_0x9ade('0x1e')]:_0x4dec6f[_0x9ade('0x1f')]+_0x4dec6f[_0x9ade('0x20')];var _0x3ac980;if(_0x589537>=_0x43dd42){_0x589537=_0x43dd42;_0x3ac980=0xc8;}else{_0x3ac980=0xce;}_0x4b22c4[_0x9ade('0x1c')](_0x3ac980);return _0x4b22c4[_0x9ade('0x21')](_0x9ade('0x22'),_0x351bea+'-'+_0x589537+'/'+_0x43dd42)['json'](_0x1558cd);}return null;};}function patchUpdates(_0x3ee2a4){return function(_0x2a5c8a){try{jsonpatch[_0x9ade('0x23')](_0x2a5c8a,_0x3ee2a4,!![]);}catch(_0x2ff097){return BPromise[_0x9ade('0x24')](_0x2ff097);}return _0x2a5c8a[_0x9ade('0x25')]();};}function saveUpdates(_0x9e3c64,_0x434fd0){return function(_0x195d5c){if(_0x195d5c){return _0x195d5c[_0x9ade('0x26')](_0x9e3c64)[_0x9ade('0x27')](function(_0x3fbbae){return _0x3fbbae;});}return null;};}function removeEntity(_0x501120,_0x16f198){return function(_0x1f0c20){if(_0x1f0c20){return _0x1f0c20[_0x9ade('0x28')]()[_0x9ade('0x27')](function(){_0x501120[_0x9ade('0x1c')](0xcc)['end']();});}};}function handleEntityNotFound(_0x2b6453,_0x37f46e){return function(_0xd3cf00){if(!_0xd3cf00){_0x2b6453[_0x9ade('0x1b')](0x194);}return _0xd3cf00;};}function handleError(_0x4fcefb,_0x348da0){_0x348da0=_0x348da0||0x1f4;return function(_0x44b6e6){logger[_0x9ade('0x29')](_0x44b6e6[_0x9ade('0x2a')]);if(_0x44b6e6['name']){delete _0x44b6e6[_0x9ade('0x2b')];}_0x4fcefb['status'](_0x348da0)[_0x9ade('0x2c')](_0x44b6e6);};}exports['index']=function(_0x44c52f,_0xc09c42){var _0x1dd731={},_0x431378={},_0x75118f={'count':0x0,'rows':[]};var _0x5df0a0=_[_0x9ade('0x2d')](db[_0x9ade('0x2e')]['rawAttributes'],function(_0x4c8458){return{'name':_0x4c8458['fieldName'],'type':_0x4c8458[_0x9ade('0x2f')]['key']};});_0x431378[_0x9ade('0x30')]=_[_0x9ade('0x2d')](_0x5df0a0,_0x9ade('0x2b'));_0x431378[_0x9ade('0x31')]=_[_0x9ade('0x32')](_0x44c52f[_0x9ade('0x31')]);_0x431378[_0x9ade('0x33')]=_[_0x9ade('0x34')](_0x431378['model'],_0x431378['query']);_0x1dd731[_0x9ade('0x35')]=_[_0x9ade('0x34')](_0x431378['model'],qs[_0x9ade('0x36')](_0x44c52f[_0x9ade('0x31')][_0x9ade('0x36')]));_0x1dd731[_0x9ade('0x35')]=_0x1dd731[_0x9ade('0x35')][_0x9ade('0x37')]?_0x1dd731[_0x9ade('0x35')]:_0x431378[_0x9ade('0x30')];if(!_0x44c52f[_0x9ade('0x31')][_0x9ade('0x38')]('nolimit')){_0x1dd731[_0x9ade('0x20')]=qs['limit'](_0x44c52f[_0x9ade('0x31')][_0x9ade('0x20')]);_0x1dd731[_0x9ade('0x1f')]=qs[_0x9ade('0x1f')](_0x44c52f[_0x9ade('0x31')][_0x9ade('0x1f')]);}_0x1dd731[_0x9ade('0x39')]=qs[_0x9ade('0x3a')](_0x44c52f[_0x9ade('0x31')]['sort']);_0x1dd731[_0x9ade('0x3b')]=qs['filters'](_[_0x9ade('0x3c')](_0x44c52f['query'],_0x431378['filters']),_0x5df0a0);if(_0x44c52f[_0x9ade('0x31')]['filter']){_0x1dd731[_0x9ade('0x3b')]=_[_0x9ade('0x3d')](_0x1dd731[_0x9ade('0x3b')],{'$or':_[_0x9ade('0x2d')](_0x5df0a0,function(_0xa08b59){if(_0xa08b59['type']!==_0x9ade('0x3e')){var _0x8ac06a={};_0x8ac06a[_0xa08b59[_0x9ade('0x2b')]]={'$like':'%'+_0x44c52f[_0x9ade('0x31')]['filter']+'%'};return _0x8ac06a;}})});}_0x1dd731=_[_0x9ade('0x3d')]({},_0x1dd731,_0x44c52f['options']);var _0x2e7928={'where':_0x1dd731[_0x9ade('0x3b')]};return db['SquareMessage'][_0x9ade('0x1e')](_0x2e7928)[_0x9ade('0x27')](function(_0x5e40f4){_0x75118f['count']=_0x5e40f4;if(_0x44c52f[_0x9ade('0x31')][_0x9ade('0x3f')]){_0x1dd731['include']=[{'all':!![]}];}return db[_0x9ade('0x2e')][_0x9ade('0x40')](_0x1dd731);})[_0x9ade('0x27')](function(_0x468fb4){_0x75118f['rows']=_0x468fb4;return _0x75118f;})[_0x9ade('0x27')](respondWithFilteredResult(_0xc09c42,_0x1dd731))['catch'](handleError(_0xc09c42,null));};exports[_0x9ade('0x41')]=function(_0x273446,_0x5acaab){var _0x3dd1c7={'raw':!![],'where':{'id':_0x273446[_0x9ade('0x42')]['id']}},_0x4c539b={};_0x4c539b[_0x9ade('0x30')]=_[_0x9ade('0x32')](db['SquareMessage']['rawAttributes']);_0x4c539b[_0x9ade('0x31')]=_[_0x9ade('0x32')](_0x273446[_0x9ade('0x31')]);_0x4c539b[_0x9ade('0x33')]=_[_0x9ade('0x34')](_0x4c539b['model'],_0x4c539b[_0x9ade('0x31')]);_0x3dd1c7[_0x9ade('0x35')]=_[_0x9ade('0x34')](_0x4c539b[_0x9ade('0x30')],qs[_0x9ade('0x36')](_0x273446[_0x9ade('0x31')][_0x9ade('0x36')]));_0x3dd1c7['attributes']=_0x3dd1c7['attributes'][_0x9ade('0x37')]?_0x3dd1c7[_0x9ade('0x35')]:_0x4c539b['model'];if(_0x273446['query'][_0x9ade('0x3f')]){_0x3dd1c7[_0x9ade('0x43')]=[{'all':!![]}];}_0x3dd1c7=_['merge']({},_0x3dd1c7,_0x273446[_0x9ade('0x44')]);return db[_0x9ade('0x2e')][_0x9ade('0x45')](_0x3dd1c7)[_0x9ade('0x27')](handleEntityNotFound(_0x5acaab,null))[_0x9ade('0x27')](respondWithResult(_0x5acaab,null))[_0x9ade('0x46')](handleError(_0x5acaab,null));};exports['create']=function(_0x2957eb,_0x101d23){return db[_0x9ade('0x2e')][_0x9ade('0x47')](_0x2957eb[_0x9ade('0x48')],{})['then'](respondWithResult(_0x101d23,0xc9))[_0x9ade('0x46')](handleError(_0x101d23,null));};exports[_0x9ade('0x26')]=function(_0x47cf26,_0x29ac7e){if(_0x47cf26[_0x9ade('0x48')]['id']){delete _0x47cf26[_0x9ade('0x48')]['id'];}return db[_0x9ade('0x2e')]['find']({'where':{'id':_0x47cf26[_0x9ade('0x42')]['id']}})[_0x9ade('0x27')](handleEntityNotFound(_0x29ac7e,null))[_0x9ade('0x27')](saveUpdates(_0x47cf26[_0x9ade('0x48')],null))[_0x9ade('0x27')](respondWithResult(_0x29ac7e,null))[_0x9ade('0x46')](handleError(_0x29ac7e,null));};exports[_0x9ade('0x28')]=function(_0x207aa5,_0xada99d){return db[_0x9ade('0x2e')][_0x9ade('0x45')]({'where':{'id':_0x207aa5[_0x9ade('0x42')]['id']}})[_0x9ade('0x27')](handleEntityNotFound(_0xada99d,null))[_0x9ade('0x27')](removeEntity(_0xada99d,null))[_0x9ade('0x46')](handleError(_0xada99d,null));};
\ No newline at end of file
index 729423d..e212a8b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0x72d1=['../../config/environment','./squareMessage.attributes','exports','define','SquareMessage','square_messages','lodash','util','../../config/logger','api','moment','bluebird','request-promise','path','rimraf'];(function(_0x104e43,_0x1ca142){var _0x484ed7=function(_0x593cd0){while(--_0x593cd0){_0x104e43['push'](_0x104e43['shift']());}};_0x484ed7(++_0x1ca142);}(_0x72d1,0xe7));var _0x172d=function(_0x5bd98b,_0x22bf1c){_0x5bd98b=_0x5bd98b-0x0;var _0x49efe7=_0x72d1[_0x5bd98b];return _0x49efe7;};'use strict';var _=require(_0x172d('0x0'));var util=require(_0x172d('0x1'));var logger=require(_0x172d('0x2'))(_0x172d('0x3'));var moment=require(_0x172d('0x4'));var BPromise=require(_0x172d('0x5'));var rp=require(_0x172d('0x6'));var fs=require('fs');var path=require(_0x172d('0x7'));var rimraf=require(_0x172d('0x8'));var config=require(_0x172d('0x9'));var attributes=require(_0x172d('0xa'));module[_0x172d('0xb')]=function(_0x582255,_0x414d8d){return _0x582255[_0x172d('0xc')](_0x172d('0xd'),attributes,{'tableName':_0x172d('0xe'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index bf487fb..929f894 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0x90d1=['error','code','message','catch','CreateSquareMessage','SquareMessage','body','options','debug','lodash','util','bluebird','randomstring','../../mysqldb','../../config/utils','rpc','jayson/promise','then','info','SquareMessage,\x20%s,\x20%s','request\x20sent','SquareMessage,\x20%s,\x20%s,\x20%s','stringify'];(function(_0x8b631b,_0x386724){var _0x3e6832=function(_0x17a132){while(--_0x17a132){_0x8b631b['push'](_0x8b631b['shift']());}};_0x3e6832(++_0x386724);}(_0x90d1,0xd8));var _0x190d=function(_0x59a5d0,_0x4b3308){_0x59a5d0=_0x59a5d0-0x0;var _0x6840ac=_0x90d1[_0x59a5d0];return _0x6840ac;};'use strict';var _=require(_0x190d('0x0'));var util=require(_0x190d('0x1'));var moment=require('moment');var BPromise=require(_0x190d('0x2'));var rs=require(_0x190d('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x190d('0x4'))['db'];var utils=require(_0x190d('0x5'));var logger=require('../../config/logger')(_0x190d('0x6'));var config=require('../../config/environment');var jayson=require(_0x190d('0x7'));var client=jayson['client']['http']({'port':0x232a});function respondWithRpcPromise(_0xab5e91,_0x48f104,_0x4c5269){return new BPromise(function(_0x306939,_0x1d8f28){return client['request'](_0xab5e91,_0x4c5269)[_0x190d('0x8')](function(_0xd82e0a){logger[_0x190d('0x9')](_0x190d('0xa'),_0x48f104,_0x190d('0xb'));logger['debug'](_0x190d('0xc'),_0x48f104,_0x190d('0xb'),JSON[_0x190d('0xd')](_0xd82e0a));if(_0xd82e0a[_0x190d('0xe')]){if(_0xd82e0a[_0x190d('0xe')][_0x190d('0xf')]===0x1f4){logger['error'](_0x190d('0xa'),_0x48f104,_0xd82e0a[_0x190d('0xe')][_0x190d('0x10')]);return _0x1d8f28(_0xd82e0a[_0x190d('0xe')]['message']);}logger[_0x190d('0xe')](_0x190d('0xa'),_0x48f104,_0xd82e0a[_0x190d('0xe')]['message']);return _0x306939(_0xd82e0a[_0x190d('0xe')][_0x190d('0x10')]);}else{logger[_0x190d('0x9')](_0x190d('0xa'),_0x48f104,_0x190d('0xb'));_0x306939(_0xd82e0a['result'][_0x190d('0x10')]);}})[_0x190d('0x11')](function(_0x10cf0a){logger[_0x190d('0xe')]('SquareMessage,\x20%s,\x20%s',_0x48f104,_0x10cf0a);_0x1d8f28(_0x10cf0a);});});}exports[_0x190d('0x12')]=function(_0x42e3c1){var _0x24157c=this;return new Promise(function(_0x48d531,_0x1aabb5){return db[_0x190d('0x13')]['create'](_0x42e3c1[_0x190d('0x14')],{'raw':_0x42e3c1[_0x190d('0x15')]?_0x42e3c1['options']['raw']===undefined?!![]:![]:!![]})[_0x190d('0x8')](function(_0xa789fb){logger[_0x190d('0x9')](_0x190d('0x12'),_0x42e3c1);logger[_0x190d('0x16')](_0x190d('0x12'),_0x42e3c1,JSON[_0x190d('0xd')](_0xa789fb));_0x48d531(_0xa789fb);})[_0x190d('0x11')](function(_0x803cc0){logger[_0x190d('0xe')](_0x190d('0x12'),_0x803cc0[_0x190d('0x10')],_0x42e3c1);_0x1aabb5(_0x24157c[_0x190d('0xe')](0x1f4,_0x803cc0[_0x190d('0x10')]));});});};
\ No newline at end of file
index c92442f..c1a0b45 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0xd440=['../../components/interaction/service','../../config/environment','./squareOdbc.controller','get','isAuthenticated','/:id','show','15s','test','post','create','update','destroy','exports','multer','util','path','connect-timeout','Router','fs-extra'];(function(_0x51a24f,_0xaeaba0){var _0x290883=function(_0x368eff){while(--_0x368eff){_0x51a24f['push'](_0x51a24f['shift']());}};_0x290883(++_0xaeaba0);}(_0xd440,0x18a));var _0x0d44=function(_0x9a09b4,_0x585cf9){_0x9a09b4=_0x9a09b4-0x0;var _0x55923c=_0xd440[_0x9a09b4];return _0x55923c;};'use strict';var multer=require(_0x0d44('0x0'));var util=require(_0x0d44('0x1'));var path=require(_0x0d44('0x2'));var timeout=require(_0x0d44('0x3'));var express=require('express');var router=express[_0x0d44('0x4')]();var fs_extra=require(_0x0d44('0x5'));var auth=require('../../components/auth/service');var interaction=require(_0x0d44('0x6'));var config=require(_0x0d44('0x7'));var controller=require(_0x0d44('0x8'));router[_0x0d44('0x9')]('/',auth[_0x0d44('0xa')](),controller['index']);router['get'](_0x0d44('0xb'),auth['isAuthenticated'](),controller[_0x0d44('0xc')]);router[_0x0d44('0x9')]('/:id/test',auth[_0x0d44('0xa')](),timeout(_0x0d44('0xd')),controller[_0x0d44('0xe')]);router[_0x0d44('0xf')]('/',auth[_0x0d44('0xa')](),controller[_0x0d44('0x10')]);router['put'](_0x0d44('0xb'),auth[_0x0d44('0xa')](),controller[_0x0d44('0x11')]);router['delete'](_0x0d44('0xb'),auth['isAuthenticated'](),controller[_0x0d44('0x12')]);module[_0x0d44('0x13')]=router;
\ No newline at end of file
index d703de8..0d902f5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0x492d=['name','sequelize','exports','STRING'];(function(_0x735da9,_0x38b186){var _0x39160b=function(_0x5cb870){while(--_0x5cb870){_0x735da9['push'](_0x735da9['shift']());}};_0x39160b(++_0x38b186);}(_0x492d,0x1bd));var _0xd492=function(_0x42ff60,_0x229c48){_0x42ff60=_0x42ff60-0x0;var _0x2a424e=_0x492d[_0x42ff60];return _0x2a424e;};'use strict';var Sequelize=require(_0xd492('0x0'));module[_0xd492('0x1')]={'name':{'type':Sequelize[_0xd492('0x2')],'unique':_0xd492('0x3'),'allowNull':![]},'dsn':{'type':Sequelize[_0xd492('0x2')]},'description':{'type':Sequelize[_0xd492('0x2')]}};
\ No newline at end of file
index 56672e0..a4a05d8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0xd350=['catch','create','body','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','ODBC','UserProfileSection','autoAssociation','UserProfileResource','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','dsn','odbc','closeSync','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','path','to-csv','ejs','fs-extra','squel','jsforce','desk.js','querystring','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','sendStatus','status','end','json','offset','undefined','limit','set','Content-Range','reject','update','then','destroy','get','error','stack','name','index','SquareOdbc','rawAttributes','type','key','model','query','keys','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','pick','filter','where','merge','map','VIRTUAL','count','includeAll','include','findAll','show','params','options','find'];(function(_0x307a31,_0x314af3){var _0x3a9d4a=function(_0x48bd0f){while(--_0x48bd0f){_0x307a31['push'](_0x307a31['shift']());}};_0x3a9d4a(++_0x314af3);}(_0xd350,0xba));var _0x0d35=function(_0x430f44,_0x4ae21b){_0x430f44=_0x430f44-0x0;var _0x1f6b0f=_0xd350[_0x430f44];return _0x1f6b0f;};'use strict';var emlformat=require(_0x0d35('0x0'));var rimraf=require(_0x0d35('0x1'));var zipdir=require(_0x0d35('0x2'));var jsonpatch=require(_0x0d35('0x3'));var rp=require(_0x0d35('0x4'));var moment=require(_0x0d35('0x5'));var BPromise=require(_0x0d35('0x6'));var Mustache=require(_0x0d35('0x7'));var util=require('util');var path=require(_0x0d35('0x8'));var sox=require('sox');var csv=require(_0x0d35('0x9'));var ejs=require(_0x0d35('0xa'));var fs=require('fs');var fs_extra=require(_0x0d35('0xb'));var _=require('lodash');var squel=require(_0x0d35('0xc'));var crypto=require('crypto');var jsforce=require(_0x0d35('0xd'));var deskjs=require(_0x0d35('0xe'));var toCsv=require(_0x0d35('0x9'));var querystring=require(_0x0d35('0xf'));var Papa=require('papaparse');var Redis=require(_0x0d35('0x10'));var authService=require('../../components/auth/service');var qs=require(_0x0d35('0x11'));var as=require(_0x0d35('0x12'));var hardwareService=require(_0x0d35('0x13'));var logger=require(_0x0d35('0x14'))(_0x0d35('0x15'));var utils=require(_0x0d35('0x16'));var config=require(_0x0d35('0x17'));var licenseUtil=require('../../config/license/util');var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x27f7e9,_0x13728a){_0x13728a=_0x13728a||0xcc;return function(_0x2417ee){if(_0x2417ee){return _0x27f7e9[_0x0d35('0x18')](_0x13728a);}return _0x27f7e9[_0x0d35('0x19')](_0x13728a)[_0x0d35('0x1a')]();};}function respondWithResult(_0x603ec6,_0x13080a){_0x13080a=_0x13080a||0xc8;return function(_0x5f58ac){if(_0x5f58ac){return _0x603ec6[_0x0d35('0x19')](_0x13080a)[_0x0d35('0x1b')](_0x5f58ac);}};}function respondWithFilteredResult(_0x983f51,_0x557309){return function(_0x214429){if(_0x214429){var _0x20b4f9=typeof _0x557309[_0x0d35('0x1c')]===_0x0d35('0x1d')&&typeof _0x557309[_0x0d35('0x1e')]===_0x0d35('0x1d');var _0x229441=_0x214429['count'];var _0x30dcd5=_0x20b4f9?0x0:_0x557309['offset'];var _0x5b9053=_0x20b4f9?_0x214429['count']:_0x557309[_0x0d35('0x1c')]+_0x557309[_0x0d35('0x1e')];var _0x12d87b;if(_0x5b9053>=_0x229441){_0x5b9053=_0x229441;_0x12d87b=0xc8;}else{_0x12d87b=0xce;}_0x983f51['status'](_0x12d87b);return _0x983f51[_0x0d35('0x1f')](_0x0d35('0x20'),_0x30dcd5+'-'+_0x5b9053+'/'+_0x229441)[_0x0d35('0x1b')](_0x214429);}return null;};}function patchUpdates(_0x42b754){return function(_0x4b8459){try{jsonpatch['apply'](_0x4b8459,_0x42b754,!![]);}catch(_0x486335){return BPromise[_0x0d35('0x21')](_0x486335);}return _0x4b8459['save']();};}function saveUpdates(_0x5e1187,_0x948018){return function(_0x562e0f){if(_0x562e0f){return _0x562e0f[_0x0d35('0x22')](_0x5e1187)[_0x0d35('0x23')](function(_0x23b33d){return _0x23b33d;});}return null;};}function removeEntity(_0x55bfbe,_0x57aa62){return function(_0xceee6c){if(_0xceee6c){return _0xceee6c[_0x0d35('0x24')]()['then'](function(){var _0x5c4899=_0xceee6c[_0x0d35('0x25')]({'plain':!![]});var _0x472cb5='ODBC';return db['UserProfileResource'][_0x0d35('0x24')]({'where':{'type':_0x472cb5,'resourceId':_0x5c4899['id']}})['then'](function(){return _0xceee6c;});})[_0x0d35('0x23')](function(){_0x55bfbe[_0x0d35('0x19')](0xcc)[_0x0d35('0x1a')]();});}};}function handleEntityNotFound(_0x5b2070,_0x108f42){return function(_0x30ca6b){if(!_0x30ca6b){_0x5b2070[_0x0d35('0x18')](0x194);}return _0x30ca6b;};}function handleError(_0x437a88,_0x17fa37){_0x17fa37=_0x17fa37||0x1f4;return function(_0x5eefd3){logger[_0x0d35('0x26')](_0x5eefd3[_0x0d35('0x27')]);if(_0x5eefd3[_0x0d35('0x28')]){delete _0x5eefd3[_0x0d35('0x28')];}_0x437a88[_0x0d35('0x19')](_0x17fa37)['send'](_0x5eefd3);};}exports[_0x0d35('0x29')]=function(_0x59b65d,_0x358334){var _0x41e595={},_0x129647={},_0x965ba5={'count':0x0,'rows':[]};var _0x487a23=_['map'](db[_0x0d35('0x2a')][_0x0d35('0x2b')],function(_0x341d42){return{'name':_0x341d42['fieldName'],'type':_0x341d42[_0x0d35('0x2c')][_0x0d35('0x2d')]};});_0x129647[_0x0d35('0x2e')]=_['map'](_0x487a23,_0x0d35('0x28'));_0x129647[_0x0d35('0x2f')]=_[_0x0d35('0x30')](_0x59b65d[_0x0d35('0x2f')]);_0x129647[_0x0d35('0x31')]=_[_0x0d35('0x32')](_0x129647[_0x0d35('0x2e')],_0x129647[_0x0d35('0x2f')]);_0x41e595[_0x0d35('0x33')]=_[_0x0d35('0x32')](_0x129647['model'],qs[_0x0d35('0x34')](_0x59b65d['query'][_0x0d35('0x34')]));_0x41e595[_0x0d35('0x33')]=_0x41e595[_0x0d35('0x33')][_0x0d35('0x35')]?_0x41e595[_0x0d35('0x33')]:_0x129647[_0x0d35('0x2e')];if(!_0x59b65d[_0x0d35('0x2f')][_0x0d35('0x36')](_0x0d35('0x37'))){_0x41e595[_0x0d35('0x1e')]=qs[_0x0d35('0x1e')](_0x59b65d[_0x0d35('0x2f')][_0x0d35('0x1e')]);_0x41e595[_0x0d35('0x1c')]=qs[_0x0d35('0x1c')](_0x59b65d['query'][_0x0d35('0x1c')]);}_0x41e595[_0x0d35('0x38')]=qs['sort'](_0x59b65d[_0x0d35('0x2f')][_0x0d35('0x39')]);_0x41e595['where']=qs[_0x0d35('0x31')](_[_0x0d35('0x3a')](_0x59b65d[_0x0d35('0x2f')],_0x129647[_0x0d35('0x31')]),_0x487a23);if(_0x59b65d[_0x0d35('0x2f')][_0x0d35('0x3b')]){_0x41e595[_0x0d35('0x3c')]=_[_0x0d35('0x3d')](_0x41e595['where'],{'$or':_[_0x0d35('0x3e')](_0x487a23,function(_0x2d5d4b){if(_0x2d5d4b[_0x0d35('0x2c')]!==_0x0d35('0x3f')){var _0x85482={};_0x85482[_0x2d5d4b[_0x0d35('0x28')]]={'$like':'%'+_0x59b65d[_0x0d35('0x2f')]['filter']+'%'};return _0x85482;}})});}_0x41e595=_['merge']({},_0x41e595,_0x59b65d['options']);var _0x5c0818={'where':_0x41e595['where']};return db[_0x0d35('0x2a')][_0x0d35('0x40')](_0x5c0818)['then'](function(_0x1c0842){_0x965ba5[_0x0d35('0x40')]=_0x1c0842;if(_0x59b65d[_0x0d35('0x2f')][_0x0d35('0x41')]){_0x41e595[_0x0d35('0x42')]=[{'all':!![]}];}return db[_0x0d35('0x2a')][_0x0d35('0x43')](_0x41e595);})[_0x0d35('0x23')](function(_0x554bc2){_0x965ba5['rows']=_0x554bc2;return _0x965ba5;})['then'](respondWithFilteredResult(_0x358334,_0x41e595))['catch'](handleError(_0x358334,null));};exports[_0x0d35('0x44')]=function(_0x3c0e15,_0x6f47bb){var _0x228948={'raw':!![],'where':{'id':_0x3c0e15[_0x0d35('0x45')]['id']}},_0x8cca61={};_0x8cca61[_0x0d35('0x2e')]=_[_0x0d35('0x30')](db[_0x0d35('0x2a')]['rawAttributes']);_0x8cca61[_0x0d35('0x2f')]=_[_0x0d35('0x30')](_0x3c0e15[_0x0d35('0x2f')]);_0x8cca61[_0x0d35('0x31')]=_[_0x0d35('0x32')](_0x8cca61[_0x0d35('0x2e')],_0x8cca61[_0x0d35('0x2f')]);_0x228948[_0x0d35('0x33')]=_[_0x0d35('0x32')](_0x8cca61[_0x0d35('0x2e')],qs['fields'](_0x3c0e15['query'][_0x0d35('0x34')]));_0x228948['attributes']=_0x228948[_0x0d35('0x33')][_0x0d35('0x35')]?_0x228948['attributes']:_0x8cca61['model'];if(_0x3c0e15['query'][_0x0d35('0x41')]){_0x228948[_0x0d35('0x42')]=[{'all':!![]}];}_0x228948=_['merge']({},_0x228948,_0x3c0e15[_0x0d35('0x46')]);return db[_0x0d35('0x2a')][_0x0d35('0x47')](_0x228948)[_0x0d35('0x23')](handleEntityNotFound(_0x6f47bb,null))[_0x0d35('0x23')](respondWithResult(_0x6f47bb,null))[_0x0d35('0x48')](handleError(_0x6f47bb,null));};exports['create']=function(_0x2a2eb8,_0xf587db){return db['SquareOdbc'][_0x0d35('0x49')](_0x2a2eb8[_0x0d35('0x4a')],{})[_0x0d35('0x23')](function(_0x31d11f){var _0x43dafd=_0x2a2eb8[_0x0d35('0x4b')][_0x0d35('0x25')]({'plain':!![]});if(!_0x43dafd)throw new Error(_0x0d35('0x4c'));if(_0x43dafd[_0x0d35('0x4d')]===_0x0d35('0x4b')){var _0x4fae86=_0x31d11f[_0x0d35('0x25')]({'plain':!![]});var _0x239c66=_0x0d35('0x4e');return db[_0x0d35('0x4f')][_0x0d35('0x47')]({'where':{'name':_0x239c66,'userProfileId':_0x43dafd['userProfileId']},'raw':!![]})[_0x0d35('0x23')](function(_0x1fd92c){if(_0x1fd92c&&_0x1fd92c[_0x0d35('0x50')]===0x0){return db[_0x0d35('0x51')][_0x0d35('0x49')]({'name':_0x4fae86[_0x0d35('0x28')],'resourceId':_0x4fae86['id'],'type':_0x1fd92c[_0x0d35('0x28')],'sectionId':_0x1fd92c['id']},{})['then'](function(){return _0x31d11f;});}else{return _0x31d11f;}})[_0x0d35('0x48')](function(_0x1491f6){logger['error'](_0x0d35('0x52'),_0x1491f6);throw _0x1491f6;});}return _0x31d11f;})[_0x0d35('0x23')](respondWithResult(_0xf587db,0xc9))[_0x0d35('0x48')](handleError(_0xf587db,null));};exports[_0x0d35('0x22')]=function(_0xc2933c,_0x300983){if(_0xc2933c[_0x0d35('0x4a')]['id']){delete _0xc2933c[_0x0d35('0x4a')]['id'];}return db[_0x0d35('0x2a')]['find']({'where':{'id':_0xc2933c[_0x0d35('0x45')]['id']}})[_0x0d35('0x23')](handleEntityNotFound(_0x300983,null))[_0x0d35('0x23')](saveUpdates(_0xc2933c[_0x0d35('0x4a')],null))[_0x0d35('0x23')](respondWithResult(_0x300983,null))[_0x0d35('0x48')](handleError(_0x300983,null));};exports[_0x0d35('0x24')]=function(_0x460de9,_0x1332e9){return db[_0x0d35('0x2a')]['find']({'where':{'id':_0x460de9['params']['id']}})[_0x0d35('0x23')](handleEntityNotFound(_0x1332e9,null))[_0x0d35('0x23')](removeEntity(_0x1332e9,null))['catch'](handleError(_0x1332e9,null));};exports['test']=function(_0x5a2364,_0xd2f8e2,_0x4bc1b2){var _0x279a29;return db[_0x0d35('0x2a')][_0x0d35('0x47')]({'where':{'id':_0x5a2364[_0x0d35('0x45')]['id']},'attributes':['id',_0x0d35('0x53')]})[_0x0d35('0x23')](handleEntityNotFound(_0xd2f8e2,null))[_0x0d35('0x23')](function(_0xcbd08f){if(_0xcbd08f){var _0x2069e2=require(_0x0d35('0x54'))();_0x2069e2['openSync'](_0xcbd08f[_0x0d35('0x53')]);_0x2069e2[_0x0d35('0x55')]();return _0xcbd08f;}})['then'](respondWithResult(_0xd2f8e2,null))[_0x0d35('0x48')](handleError(_0xd2f8e2,null));};
\ No newline at end of file
index 6dd7543..9e7ac17 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0x3eba=['./squareOdbc.attributes','exports','util','../../config/logger','api','moment','bluebird','request-promise','path','../../config/environment'];(function(_0xfdd26c,_0x325d43){var _0x1b6ec0=function(_0xe9523){while(--_0xe9523){_0xfdd26c['push'](_0xfdd26c['shift']());}};_0x1b6ec0(++_0x325d43);}(_0x3eba,0x70));var _0xa3eb=function(_0x995cb6,_0x145e0a){_0x995cb6=_0x995cb6-0x0;var _0x11876c=_0x3eba[_0x995cb6];return _0x11876c;};'use strict';var _=require('lodash');var util=require(_0xa3eb('0x0'));var logger=require(_0xa3eb('0x1'))(_0xa3eb('0x2'));var moment=require(_0xa3eb('0x3'));var BPromise=require(_0xa3eb('0x4'));var rp=require(_0xa3eb('0x5'));var fs=require('fs');var path=require(_0xa3eb('0x6'));var rimraf=require('rimraf');var config=require(_0xa3eb('0x7'));var attributes=require(_0xa3eb('0x8'));module[_0xa3eb('0x9')]=function(_0xabfb7e,_0x506555){return _0xabfb7e['define']('SquareOdbc',attributes,{'tableName':'square_odbc','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 392cb98..52edcfb 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0xc21d=['raw','where','attributes','include','model','map','stringify','catch','lodash','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','then','SquareOdbc,\x20%s,\x20%s','request\x20sent','debug','error','message','info','result','ShowSquareOdbc','SquareOdbc','find','options'];(function(_0x141497,_0x5ed27f){var _0x57a73d=function(_0x6bb045){while(--_0x6bb045){_0x141497['push'](_0x141497['shift']());}};_0x57a73d(++_0x5ed27f);}(_0xc21d,0x110));var _0xdc21=function(_0x38a6c6,_0x4062ca){_0x38a6c6=_0x38a6c6-0x0;var _0x142f0a=_0xc21d[_0x38a6c6];return _0x142f0a;};'use strict';var _=require(_0xdc21('0x0'));var util=require('util');var moment=require(_0xdc21('0x1'));var BPromise=require(_0xdc21('0x2'));var rs=require(_0xdc21('0x3'));var fs=require('fs');var Redis=require(_0xdc21('0x4'));var db=require(_0xdc21('0x5'))['db'];var utils=require(_0xdc21('0x6'));var logger=require(_0xdc21('0x7'))(_0xdc21('0x8'));var config=require(_0xdc21('0x9'));var jayson=require(_0xdc21('0xa'));var client=jayson[_0xdc21('0xb')][_0xdc21('0xc')]({'port':0x232a});function respondWithRpcPromise(_0x51f746,_0x4f2988,_0x3e7f29){return new BPromise(function(_0x5a3296,_0x2d000a){return client['request'](_0x51f746,_0x3e7f29)[_0xdc21('0xd')](function(_0x4f1352){logger['info'](_0xdc21('0xe'),_0x4f2988,_0xdc21('0xf'));logger[_0xdc21('0x10')]('SquareOdbc,\x20%s,\x20%s,\x20%s',_0x4f2988,_0xdc21('0xf'),JSON['stringify'](_0x4f1352));if(_0x4f1352[_0xdc21('0x11')]){if(_0x4f1352[_0xdc21('0x11')]['code']===0x1f4){logger[_0xdc21('0x11')](_0xdc21('0xe'),_0x4f2988,_0x4f1352['error'][_0xdc21('0x12')]);return _0x2d000a(_0x4f1352[_0xdc21('0x11')][_0xdc21('0x12')]);}logger['error'](_0xdc21('0xe'),_0x4f2988,_0x4f1352[_0xdc21('0x11')][_0xdc21('0x12')]);return _0x5a3296(_0x4f1352[_0xdc21('0x11')][_0xdc21('0x12')]);}else{logger[_0xdc21('0x13')]('SquareOdbc,\x20%s,\x20%s',_0x4f2988,_0xdc21('0xf'));_0x5a3296(_0x4f1352[_0xdc21('0x14')]['message']);}})['catch'](function(_0x3aa4cb){logger[_0xdc21('0x11')](_0xdc21('0xe'),_0x4f2988,_0x3aa4cb);_0x2d000a(_0x3aa4cb);});});}exports[_0xdc21('0x15')]=function(_0x2137e5){var _0x3fe883=this;return new Promise(function(_0x2dad1d,_0x341847){return db[_0xdc21('0x16')][_0xdc21('0x17')]({'raw':_0x2137e5[_0xdc21('0x18')]?_0x2137e5[_0xdc21('0x18')][_0xdc21('0x19')]===undefined?!![]:![]:!![],'where':_0x2137e5[_0xdc21('0x18')]?_0x2137e5[_0xdc21('0x18')][_0xdc21('0x1a')]||null:null,'attributes':_0x2137e5['options']?_0x2137e5[_0xdc21('0x18')][_0xdc21('0x1b')]||null:null,'include':_0x2137e5[_0xdc21('0x18')]?_0x2137e5[_0xdc21('0x18')][_0xdc21('0x1c')]?_['map'](_0x2137e5[_0xdc21('0x18')][_0xdc21('0x1c')],function(_0xa23a1d){return{'model':db[_0xa23a1d[_0xdc21('0x1d')]],'as':_0xa23a1d['as'],'attributes':_0xa23a1d[_0xdc21('0x1b')],'include':_0xa23a1d[_0xdc21('0x1c')]?_[_0xdc21('0x1e')](_0xa23a1d[_0xdc21('0x1c')],function(_0x4ff6ab){return{'model':db[_0x4ff6ab[_0xdc21('0x1d')]],'as':_0x4ff6ab['as'],'attributes':_0x4ff6ab[_0xdc21('0x1b')],'include':_0x4ff6ab[_0xdc21('0x1c')]?_[_0xdc21('0x1e')](_0x4ff6ab[_0xdc21('0x1c')],function(_0x189a79){return{'model':db[_0x189a79[_0xdc21('0x1d')]],'as':_0x189a79['as'],'attributes':_0x189a79['attributes']};}):[]};}):[]};}):[]:[]})['then'](function(_0x576612){logger[_0xdc21('0x13')]('ShowSquareOdbc',_0x2137e5);logger['debug'](_0xdc21('0x15'),_0x2137e5,JSON[_0xdc21('0x1f')](_0x576612));_0x2dad1d(_0x576612);})[_0xdc21('0x20')](function(_0xe5453){logger[_0xdc21('0x11')]('ShowSquareOdbc',_0xe5453[_0xdc21('0x12')],_0x2137e5);_0x341847(_0x3fe883[_0xdc21('0x11')](0x1f4,_0xe5453['message']));});});};
\ No newline at end of file
index e14074a..15e0df0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0xfa36=['../../config/environment','./squareProject.controller','get','isAuthenticated','index','/:id','show','post','create','put','update','destroy','multer','util','path','connect-timeout','express','Router'];(function(_0x3d8584,_0x4d1305){var _0x483de0=function(_0x3e43a3){while(--_0x3e43a3){_0x3d8584['push'](_0x3d8584['shift']());}};_0x483de0(++_0x4d1305);}(_0xfa36,0xe4));var _0x6fa3=function(_0x4fdb2e,_0x1f0ad9){_0x4fdb2e=_0x4fdb2e-0x0;var _0x2f415a=_0xfa36[_0x4fdb2e];return _0x2f415a;};'use strict';var multer=require(_0x6fa3('0x0'));var util=require(_0x6fa3('0x1'));var path=require(_0x6fa3('0x2'));var timeout=require(_0x6fa3('0x3'));var express=require(_0x6fa3('0x4'));var router=express[_0x6fa3('0x5')]();var fs_extra=require('fs-extra');var auth=require('../../components/auth/service');var interaction=require('../../components/interaction/service');var config=require(_0x6fa3('0x6'));var controller=require(_0x6fa3('0x7'));router[_0x6fa3('0x8')]('/',auth[_0x6fa3('0x9')](),controller[_0x6fa3('0xa')]);router['get'](_0x6fa3('0xb'),auth[_0x6fa3('0x9')](),controller[_0x6fa3('0xc')]);router[_0x6fa3('0xd')]('/',auth['isAuthenticated'](),controller[_0x6fa3('0xe')]);router[_0x6fa3('0xf')](_0x6fa3('0xb'),auth[_0x6fa3('0x9')](),controller[_0x6fa3('0x10')]);router['delete']('/:id',auth['isAuthenticated'](),controller[_0x6fa3('0x11')]);module['exports']=router;
\ No newline at end of file
index 0e8702e..6df9c41 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0x1203=['name','TEXT','BLOB','long','getDataValue','preproduction','toString','utf8','production','DATE','sequelize','exports','STRING'];(function(_0x46a067,_0x46e333){var _0x277daf=function(_0x456e19){while(--_0x456e19){_0x46a067['push'](_0x46a067['shift']());}};_0x277daf(++_0x46e333);}(_0x1203,0x8c));var _0x3120=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x1203[_0x3dd15e];return _0x231fd0;};'use strict';var Sequelize=require(_0x3120('0x0'));module[_0x3120('0x1')]={'name':{'type':Sequelize[_0x3120('0x2')],'unique':_0x3120('0x3'),'allowNull':![]},'description':{'type':Sequelize[_0x3120('0x2')]},'notes':{'type':Sequelize[_0x3120('0x4')]},'preproduction':{'type':Sequelize[_0x3120('0x5')](_0x3120('0x6')),'get':function(){if(this[_0x3120('0x7')](_0x3120('0x8'))){return this[_0x3120('0x7')](_0x3120('0x8'))[_0x3120('0x9')](_0x3120('0xa'));}}},'production':{'type':Sequelize[_0x3120('0x5')](_0x3120('0x6')),'get':function(){if(this['getDataValue'](_0x3120('0xb'))){return this[_0x3120('0x7')]('production')['toString']('utf8');}}},'savedAt':{'type':Sequelize[_0x3120('0xc')]},'publishedAt':{'type':Sequelize[_0x3120('0xc')]}};
\ No newline at end of file
index 223ab5e..a1088ef 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0x598a=['sendStatus','error','stack','name','send','index','map','SquareProject','rawAttributes','fieldName','type','model','keys','query','filters','fields','attributes','length','hasOwnProperty','nolimit','order','sort','where','pick','filter','VIRTUAL','options','includeAll','findAll','catch','intersection','include','find','create','user','get','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','body','params','production','ioredis','../../components/parsers/qs','../../config/logger','api','../../config/environment','../../mysqldb','redis','defaults','localhost','./squareProject.socket','register','status','json','undefined','count','offset','limit','set','Content-Range','update','then','UserProfileResource','destroy','publish','agi','stringify','end'];(function(_0x3c0072,_0xd2a943){var _0x14e3b1=function(_0x1817c9){while(--_0x1817c9){_0x3c0072['push'](_0x3c0072['shift']());}};_0x14e3b1(++_0xd2a943);}(_0x598a,0xf5));var _0xa598=function(_0x2dbb96,_0x17916f){_0x2dbb96=_0x2dbb96-0x0;var _0x1c6eb3=_0x598a[_0x2dbb96];return _0x1c6eb3;};'use strict';var _=require('lodash');var Redis=require(_0xa598('0x0'));var qs=require(_0xa598('0x1'));var logger=require(_0xa598('0x2'))(_0xa598('0x3'));var config=require(_0xa598('0x4'));var db=require(_0xa598('0x5'))['db'];config[_0xa598('0x6')]=_[_0xa598('0x7')](config[_0xa598('0x6')],{'host':_0xa598('0x8'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0xa598('0x6')]));require(_0xa598('0x9'))[_0xa598('0xa')](socket);function respondWithResult(_0x45abd8,_0x526d53){_0x526d53=_0x526d53||0xc8;return function(_0x3ca691){if(_0x3ca691){return _0x45abd8[_0xa598('0xb')](_0x526d53)[_0xa598('0xc')](_0x3ca691);}};}function respondWithFilteredResult(_0x370b8e,_0xf42a2c){return function(_0x365941){if(_0x365941){var _0x5b8d1c=typeof _0xf42a2c['offset']===_0xa598('0xd')&&typeof _0xf42a2c['limit']===_0xa598('0xd');var _0x19701d=_0x365941[_0xa598('0xe')];var _0x4de758=_0x5b8d1c?0x0:_0xf42a2c[_0xa598('0xf')];var _0x426287=_0x5b8d1c?_0x365941[_0xa598('0xe')]:_0xf42a2c[_0xa598('0xf')]+_0xf42a2c[_0xa598('0x10')];var _0x5625ed;if(_0x426287>=_0x19701d){_0x426287=_0x19701d;_0x5625ed=0xc8;}else{_0x5625ed=0xce;}_0x370b8e['status'](_0x5625ed);return _0x370b8e[_0xa598('0x11')](_0xa598('0x12'),_0x4de758+'-'+_0x426287+'/'+_0x19701d)[_0xa598('0xc')](_0x365941);}return null;};}function saveUpdates(_0x1cf3f5){return function(_0x2e477f){if(_0x2e477f){return _0x2e477f[_0xa598('0x13')](_0x1cf3f5)[_0xa598('0x14')](function(_0x108139){return _0x108139;});}return null;};}function removeEntity(_0x13d34c){return function(_0x9139b6){if(_0x9139b6){return _0x9139b6['destroy']()['then'](function(){var _0x3448e3=_0x9139b6['get']({'plain':!![]});var _0x34b0b4='SquareProjects';return db[_0xa598('0x15')][_0xa598('0x16')]({'where':{'type':_0x34b0b4,'resourceId':_0x3448e3['id']}})[_0xa598('0x14')](function(){return _0x9139b6;});})[_0xa598('0x14')](function(){var _0x52b0d2=new Redis(config[_0xa598('0x6')]);_0x52b0d2[_0xa598('0x17')](_0xa598('0x18'),JSON[_0xa598('0x19')]({'id':_0x9139b6['id'],'deleted':!![]}));})[_0xa598('0x14')](function(){_0x13d34c['status'](0xcc)[_0xa598('0x1a')]();});}};}function handleEntityNotFound(_0x3d9f69){return function(_0x2c8e86){if(!_0x2c8e86){_0x3d9f69[_0xa598('0x1b')](0x194);}return _0x2c8e86;};}function handleError(_0x4f35db,_0x104fba){_0x104fba=_0x104fba||0x1f4;return function(_0x5060a8){logger[_0xa598('0x1c')](_0x5060a8[_0xa598('0x1d')]);if(_0x5060a8[_0xa598('0x1e')]){delete _0x5060a8['name'];}_0x4f35db[_0xa598('0xb')](_0x104fba)[_0xa598('0x1f')](_0x5060a8);};}exports[_0xa598('0x20')]=function(_0x47e716,_0x5344bb){var _0x1da1f6={},_0x439443={},_0x46bdda={'count':0x0,'rows':[]};var _0x554131=_[_0xa598('0x21')](db[_0xa598('0x22')][_0xa598('0x23')],function(_0x21a8ea){return{'name':_0x21a8ea[_0xa598('0x24')],'type':_0x21a8ea[_0xa598('0x25')]['key']};});_0x439443[_0xa598('0x26')]=_['map'](_0x554131,'name');_0x439443['query']=_[_0xa598('0x27')](_0x47e716[_0xa598('0x28')]);_0x439443[_0xa598('0x29')]=_['intersection'](_0x439443[_0xa598('0x26')],_0x439443[_0xa598('0x28')]);_0x1da1f6['attributes']=_['intersection'](_0x439443[_0xa598('0x26')],qs['fields'](_0x47e716[_0xa598('0x28')][_0xa598('0x2a')]));_0x1da1f6[_0xa598('0x2b')]=_0x1da1f6[_0xa598('0x2b')][_0xa598('0x2c')]?_0x1da1f6[_0xa598('0x2b')]:_0x439443[_0xa598('0x26')];if(!_0x47e716['query'][_0xa598('0x2d')](_0xa598('0x2e'))){_0x1da1f6[_0xa598('0x10')]=qs[_0xa598('0x10')](_0x47e716[_0xa598('0x28')][_0xa598('0x10')]);_0x1da1f6[_0xa598('0xf')]=qs[_0xa598('0xf')](_0x47e716[_0xa598('0x28')]['offset']);}_0x1da1f6[_0xa598('0x2f')]=qs[_0xa598('0x30')](_0x47e716[_0xa598('0x28')]['sort']);_0x1da1f6[_0xa598('0x31')]=qs[_0xa598('0x29')](_[_0xa598('0x32')](_0x47e716[_0xa598('0x28')],_0x439443[_0xa598('0x29')]),_0x554131);if(_0x47e716[_0xa598('0x28')][_0xa598('0x33')]){_0x1da1f6['where']=_['merge'](_0x1da1f6[_0xa598('0x31')],{'$or':_[_0xa598('0x21')](_0x554131,function(_0x3e1db4){if(_0x3e1db4['type']!==_0xa598('0x34')){var _0x25e1d5={};_0x25e1d5[_0x3e1db4[_0xa598('0x1e')]]={'$like':'%'+_0x47e716[_0xa598('0x28')][_0xa598('0x33')]+'%'};return _0x25e1d5;}})});}_0x1da1f6=_['merge']({},_0x1da1f6,_0x47e716[_0xa598('0x35')]);var _0x2435d1={'where':_0x1da1f6['where']};return db['SquareProject'][_0xa598('0xe')](_0x2435d1)[_0xa598('0x14')](function(_0x1cf45e){_0x46bdda[_0xa598('0xe')]=_0x1cf45e;if(_0x47e716[_0xa598('0x28')][_0xa598('0x36')]){_0x1da1f6['include']=[{'all':!![]}];}return db['SquareProject'][_0xa598('0x37')](_0x1da1f6);})['then'](function(_0x34da90){_0x46bdda['rows']=_0x34da90;return _0x46bdda;})['then'](respondWithFilteredResult(_0x5344bb,_0x1da1f6))[_0xa598('0x38')](handleError(_0x5344bb,null));};exports['show']=function(_0x20892f,_0xbb1e4a){var _0x2a42b8={'raw':![],'where':{'id':_0x20892f['params']['id']}},_0x2a76e4={};_0x2a76e4['model']=_['keys'](db[_0xa598('0x22')][_0xa598('0x23')]);_0x2a76e4['query']=_[_0xa598('0x27')](_0x20892f[_0xa598('0x28')]);_0x2a76e4[_0xa598('0x29')]=_[_0xa598('0x39')](_0x2a76e4[_0xa598('0x26')],_0x2a76e4[_0xa598('0x28')]);_0x2a42b8[_0xa598('0x2b')]=_[_0xa598('0x39')](_0x2a76e4[_0xa598('0x26')],qs[_0xa598('0x2a')](_0x20892f['query'][_0xa598('0x2a')]));_0x2a42b8['attributes']=_0x2a42b8['attributes']['length']?_0x2a42b8[_0xa598('0x2b')]:_0x2a76e4[_0xa598('0x26')];if(_0x20892f[_0xa598('0x28')][_0xa598('0x36')]){_0x2a42b8[_0xa598('0x3a')]=[{'all':!![]}];}_0x2a42b8=_['merge']({},_0x2a42b8,_0x20892f[_0xa598('0x35')]);return db[_0xa598('0x22')][_0xa598('0x3b')](_0x2a42b8)['then'](handleEntityNotFound(_0xbb1e4a,null))[_0xa598('0x14')](respondWithResult(_0xbb1e4a,null))['catch'](handleError(_0xbb1e4a,null));};exports[_0xa598('0x3c')]=function(_0x4b642f,_0x37867b){return db['SquareProject'][_0xa598('0x3c')](_0x4b642f['body'],{})[_0xa598('0x14')](function(_0x108c31){var _0x1a94e9=_0x4b642f[_0xa598('0x3d')]['get']({'plain':!![]});if(!_0x1a94e9)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x1a94e9['role']===_0xa598('0x3d')){var _0x2bba8e=_0x108c31[_0xa598('0x3e')]({'plain':!![]});var _0x28b40e='SquareProjects';return db['UserProfileSection'][_0xa598('0x3b')]({'where':{'name':_0x28b40e,'userProfileId':_0x1a94e9['userProfileId']},'raw':!![]})[_0xa598('0x14')](function(_0x268853){if(_0x268853&&_0x268853[_0xa598('0x3f')]===0x0){return db[_0xa598('0x15')]['create']({'name':_0x2bba8e[_0xa598('0x1e')],'resourceId':_0x2bba8e['id'],'type':_0x268853[_0xa598('0x1e')],'sectionId':_0x268853['id']},{})[_0xa598('0x14')](function(){return _0x108c31;});}else{return _0x108c31;}})['catch'](function(_0x28d1a4){logger[_0xa598('0x1c')](_0xa598('0x40'),_0x28d1a4);throw _0x28d1a4;});}return _0x108c31;})[_0xa598('0x14')](respondWithResult(_0x37867b,0xc9))['catch'](handleError(_0x37867b,null));};exports[_0xa598('0x13')]=function(_0x45af4d,_0x1542ae){if(_0x45af4d[_0xa598('0x41')]['id']){delete _0x45af4d['body']['id'];}return db[_0xa598('0x22')][_0xa598('0x3b')]({'where':{'id':_0x45af4d[_0xa598('0x42')]['id']}})[_0xa598('0x14')](handleEntityNotFound(_0x1542ae,null))['then'](saveUpdates(_0x45af4d[_0xa598('0x41')],null))[_0xa598('0x14')](function(_0x2d3db4){if(!_0x2d3db4)return;var _0x596f4f=_0x2d3db4['get']({'plain':!![]});return _0x596f4f;})[_0xa598('0x14')](function(_0x52c649){var _0x435a2e=new Redis(config[_0xa598('0x6')]);_0x435a2e[_0xa598('0x17')](_0xa598('0x18'),JSON[_0xa598('0x19')](_[_0xa598('0x32')](_0x52c649,['id',_0xa598('0x1e'),_0xa598('0x43')])));return _0x52c649;})['then'](respondWithResult(_0x1542ae,null))[_0xa598('0x38')](handleError(_0x1542ae,null));};exports[_0xa598('0x16')]=function(_0x220944,_0x4bb699){return db['SquareProject'][_0xa598('0x3b')]({'where':{'id':_0x220944[_0xa598('0x42')]['id']}})[_0xa598('0x14')](handleEntityNotFound(_0x4bb699,null))[_0xa598('0x14')](removeEntity(_0x4bb699,null))[_0xa598('0x38')](handleError(_0x4bb699,null));};
\ No newline at end of file
index 92b1e74..d384f20 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0xf482=['update','emit','hook','events','../../mysqldb','SquareProject','save'];(function(_0x46d281,_0x335eaa){var _0x273dbd=function(_0x405c79){while(--_0x405c79){_0x46d281['push'](_0x46d281['shift']());}};_0x273dbd(++_0x335eaa);}(_0xf482,0x73));var _0x2f48=function(_0x2c2511,_0x43ca3c){_0x2c2511=_0x2c2511-0x0;var _0x15e3ce=_0xf482[_0x2c2511];return _0x15e3ce;};'use strict';var EventEmitter=require(_0x2f48('0x0'));var SquareProject=require(_0x2f48('0x1'))['db'][_0x2f48('0x2')];var SquareProjectEvents=new EventEmitter();SquareProjectEvents['setMaxListeners'](0x0);var events={'afterCreate':_0x2f48('0x3'),'afterUpdate':_0x2f48('0x4'),'afterDestroy':'remove'};function emitEvent(_0x383a91){return function(_0x537c42,_0x1ec5ef,_0xcbb6bb){SquareProjectEvents[_0x2f48('0x5')](_0x383a91+':'+_0x537c42['id'],_0x537c42);SquareProjectEvents[_0x2f48('0x5')](_0x383a91,_0x537c42);_0xcbb6bb(null);};}for(var e in events){if(events['hasOwnProperty'](e)){var event=events[e];SquareProject[_0x2f48('0x6')](e,emitEvent(event));}}module['exports']=SquareProjectEvents;
\ No newline at end of file
index b1e3a2e..2748c21 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0xacde=['format','production','YYYY-MM-DD\x20HH:mm:ss','lodash','util','../../config/logger','moment','request-promise','rimraf','../../config/environment','./squareProject.attributes','exports','SquareProject','square_projects','changed','preproduction','savedAt'];(function(_0x21e92d,_0x1a41d6){var _0x4f39ac=function(_0x27eaeb){while(--_0x27eaeb){_0x21e92d['push'](_0x21e92d['shift']());}};_0x4f39ac(++_0x1a41d6);}(_0xacde,0x9c));var _0xeacd=function(_0x385d89,_0x2fe099){_0x385d89=_0x385d89-0x0;var _0x1454e8=_0xacde[_0x385d89];return _0x1454e8;};'use strict';var _=require(_0xeacd('0x0'));var util=require(_0xeacd('0x1'));var logger=require(_0xeacd('0x2'))('api');var moment=require(_0xeacd('0x3'));var BPromise=require('bluebird');var rp=require(_0xeacd('0x4'));var fs=require('fs');var path=require('path');var rimraf=require(_0xeacd('0x5'));var config=require(_0xeacd('0x6'));var attributes=require(_0xeacd('0x7'));module[_0xeacd('0x8')]=function(_0x5047ac,_0x1daf12){return _0x5047ac['define'](_0xeacd('0x9'),attributes,{'tableName':_0xeacd('0xa'),'paranoid':![],'indexes':[],'timestamps':!![],'hooks':{'beforeUpdate':function(_0x5544d1,_0x4b91df,_0x16f4de){if(_0x5544d1[_0xeacd('0xb')](_0xeacd('0xc'))){_0x5544d1[_0xeacd('0xd')]=moment()[_0xeacd('0xe')]('YYYY-MM-DD\x20HH:mm:ss');}if(_0x5544d1[_0xeacd('0xb')](_0xeacd('0xf'))){_0x5544d1['publishedAt']=moment()['format'](_0xeacd('0x10'));}_0x16f4de(null,_0x5544d1);}}});};
\ No newline at end of file
index 4364ecd..da571b8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0x1e21=['./squareProject.socket','SquareProject','findAll','options','raw','where','attributes','limit','include','model','map','then','info','GetSquareProjects','stringify','catch','error','message','ShowSquareProject','find','debug','../../mysqldb','../../config/logger','rpc','defaults','localhost','socket.io-emitter','redis'];(function(_0x3b5e25,_0x2dfa10){var _0x5b9fe2=function(_0x13e85b){while(--_0x13e85b){_0x3b5e25['push'](_0x3b5e25['shift']());}};_0x5b9fe2(++_0x2dfa10);}(_0x1e21,0x1b9));var _0x11e2=function(_0x3dd401,_0x567e91){_0x3dd401=_0x3dd401-0x0;var _0x19f3bc=_0x1e21[_0x3dd401];return _0x19f3bc;};'use strict';var _=require('lodash');var Redis=require('ioredis');var db=require(_0x11e2('0x0'))['db'];var logger=require(_0x11e2('0x1'))(_0x11e2('0x2'));var config=require('../../config/environment');config['redis']=_[_0x11e2('0x3')](config['redis'],{'host':_0x11e2('0x4'),'port':0x18eb});var socket=require(_0x11e2('0x5'))(new Redis(config[_0x11e2('0x6')]));require(_0x11e2('0x7'))['register'](socket);exports['GetSquareProjects']=function(_0x1caa6f){var _0x5fad92=this;return new Promise(function(_0x471b8a,_0x3d1eaf){return db[_0x11e2('0x8')][_0x11e2('0x9')]({'raw':_0x1caa6f[_0x11e2('0xa')]?_0x1caa6f[_0x11e2('0xa')][_0x11e2('0xb')]===undefined?!![]:![]:!![],'where':_0x1caa6f[_0x11e2('0xa')]?_0x1caa6f[_0x11e2('0xa')][_0x11e2('0xc')]||null:null,'attributes':_0x1caa6f[_0x11e2('0xa')]?_0x1caa6f[_0x11e2('0xa')][_0x11e2('0xd')]||null:null,'limit':_0x1caa6f['options']?_0x1caa6f[_0x11e2('0xa')][_0x11e2('0xe')]||null:null,'include':_0x1caa6f['options']?_0x1caa6f[_0x11e2('0xa')][_0x11e2('0xf')]?_['map'](_0x1caa6f[_0x11e2('0xa')][_0x11e2('0xf')],function(_0x41fcb3){return{'model':db[_0x41fcb3[_0x11e2('0x10')]],'as':_0x41fcb3['as'],'attributes':_0x41fcb3[_0x11e2('0xd')],'include':_0x41fcb3[_0x11e2('0xf')]?_[_0x11e2('0x11')](_0x41fcb3[_0x11e2('0xf')],function(_0x49513f){return{'model':db[_0x49513f['model']],'as':_0x49513f['as'],'attributes':_0x49513f[_0x11e2('0xd')],'include':_0x49513f[_0x11e2('0xf')]?_[_0x11e2('0x11')](_0x49513f[_0x11e2('0xf')],function(_0x41df8e){return{'model':db[_0x41df8e[_0x11e2('0x10')]],'as':_0x41df8e['as'],'attributes':_0x41df8e['attributes']};}):[]};}):[]};}):[]:[]})[_0x11e2('0x12')](function(_0x15c9bd){logger[_0x11e2('0x13')]('GetSquareProjects',_0x1caa6f);logger['debug'](_0x11e2('0x14'),_0x1caa6f,JSON[_0x11e2('0x15')](_0x15c9bd));_0x471b8a(_0x15c9bd);})[_0x11e2('0x16')](function(_0xccf6a4){logger[_0x11e2('0x17')](_0x11e2('0x14'),_0xccf6a4['message'],_0x1caa6f);_0x3d1eaf(_0x5fad92['error'](0x1f4,_0xccf6a4[_0x11e2('0x18')]));});});};exports[_0x11e2('0x19')]=function(_0x176bad){var _0x214106=this;return new Promise(function(_0x45c5db,_0x5dbcfd){return db['SquareProject'][_0x11e2('0x1a')]({'raw':_0x176bad[_0x11e2('0xa')]?_0x176bad[_0x11e2('0xa')][_0x11e2('0xb')]===undefined?!![]:![]:!![],'where':_0x176bad[_0x11e2('0xa')]?_0x176bad[_0x11e2('0xa')]['where']||null:null,'attributes':_0x176bad[_0x11e2('0xa')]?_0x176bad[_0x11e2('0xa')][_0x11e2('0xd')]||null:null,'include':_0x176bad[_0x11e2('0xa')]?_0x176bad[_0x11e2('0xa')][_0x11e2('0xf')]?_['map'](_0x176bad[_0x11e2('0xa')][_0x11e2('0xf')],function(_0x2cd3ec){return{'model':db[_0x2cd3ec[_0x11e2('0x10')]],'as':_0x2cd3ec['as'],'attributes':_0x2cd3ec[_0x11e2('0xd')],'include':_0x2cd3ec[_0x11e2('0xf')]?_[_0x11e2('0x11')](_0x2cd3ec['include'],function(_0x3e3f40){return{'model':db[_0x3e3f40[_0x11e2('0x10')]],'as':_0x3e3f40['as'],'attributes':_0x3e3f40[_0x11e2('0xd')],'include':_0x3e3f40[_0x11e2('0xf')]?_[_0x11e2('0x11')](_0x3e3f40[_0x11e2('0xf')],function(_0x261903){return{'model':db[_0x261903[_0x11e2('0x10')]],'as':_0x261903['as'],'attributes':_0x261903[_0x11e2('0xd')]};}):[]};}):[]};}):[]:[]})[_0x11e2('0x12')](function(_0x577f9d){logger[_0x11e2('0x13')]('ShowSquareProject',_0x176bad);logger[_0x11e2('0x1b')](_0x11e2('0x19'),_0x176bad,JSON[_0x11e2('0x15')](_0x577f9d));_0x45c5db(_0x577f9d);})[_0x11e2('0x16')](function(_0x1beae2){logger[_0x11e2('0x17')](_0x11e2('0x19'),_0x1beae2['message'],_0x176bad);_0x5dbcfd(_0x214106[_0x11e2('0x17')](0x1f4,_0x1beae2[_0x11e2('0x18')]));});});};
\ No newline at end of file
index 056bb38..ee48bc0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0x842a=['./squareProject.events','remove','update','register','length'];(function(_0x58dbc7,_0x328198){var _0x19581c=function(_0x27b7da){while(--_0x27b7da){_0x58dbc7['push'](_0x58dbc7['shift']());}};_0x19581c(++_0x328198);}(_0x842a,0x1d6));var _0xa842=function(_0x4a8bad,_0x4bfb2f){_0x4a8bad=_0x4a8bad-0x0;var _0x30cf32=_0x842a[_0x4a8bad];return _0x30cf32;};'use strict';var SquareProjectEvents=require(_0xa842('0x0'));var events=['save',_0xa842('0x1'),_0xa842('0x2')];function createListener(_0x3716df,_0x6fddf2){return function(_0x15071a){_0x6fddf2['emit'](_0x3716df,_0x15071a);};}function removeListener(_0x421527,_0x4c6d8d){return function(){SquareProjectEvents['removeListener'](_0x421527,_0x4c6d8d);};}exports[_0xa842('0x3')]=function(_0x50e63e){for(var _0x924af7=0x0,_0x2380cc=events[_0xa842('0x4')];_0x924af7<_0x2380cc;_0x924af7++){var _0x1d1d5a=events[_0x924af7];var _0x328c32=createListener('squareProject:'+_0x1d1d5a,_0x50e63e);SquareProjectEvents['on'](_0x1d1d5a,_0x328c32);}};
\ No newline at end of file
index 9e95d9e..844a566 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0x4975=['Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./squareRecording.controller','get','index','/:id','isAuthenticated','show','/:id/download','download','post','create','put','update','destroy','exports','multer','path','connect-timeout','express'];(function(_0x1d8c86,_0x35919a){var _0x47c8a5=function(_0x39346d){while(--_0x39346d){_0x1d8c86['push'](_0x1d8c86['shift']());}};_0x47c8a5(++_0x35919a);}(_0x4975,0x86));var _0x5497=function(_0x203284,_0x55f90e){_0x203284=_0x203284-0x0;var _0x1cb367=_0x4975[_0x203284];return _0x1cb367;};'use strict';var multer=require(_0x5497('0x0'));var util=require('util');var path=require(_0x5497('0x1'));var timeout=require(_0x5497('0x2'));var express=require(_0x5497('0x3'));var router=express[_0x5497('0x4')]();var fs_extra=require(_0x5497('0x5'));var auth=require(_0x5497('0x6'));var interaction=require(_0x5497('0x7'));var config=require(_0x5497('0x8'));var controller=require(_0x5497('0x9'));router[_0x5497('0xa')]('/',auth['isAuthenticated'](),controller[_0x5497('0xb')]);router['get'](_0x5497('0xc'),auth[_0x5497('0xd')](),controller[_0x5497('0xe')]);router['get'](_0x5497('0xf'),auth['isAuthenticated'](),controller[_0x5497('0x10')]);router[_0x5497('0x11')]('/',auth[_0x5497('0xd')](),controller[_0x5497('0x12')]);router[_0x5497('0x13')](_0x5497('0xc'),auth[_0x5497('0xd')](),controller[_0x5497('0x14')]);router['delete']('/:id',auth['isAuthenticated'](),controller[_0x5497('0x15')]);module[_0x5497('0x16')]=router;
\ No newline at end of file
index d1672c3..8a5e48f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0x207c=['savePath','substring','exports','STRING','VIRTUAL','getDataValue'];(function(_0x4812f6,_0x420c2e){var _0x2c555a=function(_0x259be4){while(--_0x259be4){_0x4812f6['push'](_0x4812f6['shift']());}};_0x2c555a(++_0x420c2e);}(_0x207c,0x1e8));var _0xc207=function(_0x2f25ed,_0x3e0622){_0x2f25ed=_0x2f25ed-0x0;var _0x19c980=_0x207c[_0x2f25ed];return _0x19c980;};'use strict';var Sequelize=require('sequelize');module[_0xc207('0x0')]={'uniqueid':{'type':Sequelize[_0xc207('0x1')]},'callerid':{'type':Sequelize[_0xc207('0x1')]},'calleridname':{'type':Sequelize[_0xc207('0x1')]},'context':{'type':Sequelize[_0xc207('0x1')]},'extension':{'type':Sequelize[_0xc207('0x1')]},'priority':{'type':Sequelize[_0xc207('0x1')]},'accountcode':{'type':Sequelize['STRING']},'dnid':{'type':Sequelize[_0xc207('0x1')]},'projectName':{'type':Sequelize['STRING']},'saveName':{'type':Sequelize['STRING']},'filename':{'type':Sequelize['STRING']},'savePath':{'type':Sequelize[_0xc207('0x1')]},'format':{'type':Sequelize[_0xc207('0x2')],'get':function(){var _0x3395e4='';var _0x59ff6f=this[_0xc207('0x3')](_0xc207('0x4'));if(_0x59ff6f){_0x3395e4=_0x59ff6f[_0xc207('0x5')](_0x59ff6f['lastIndexOf']('.'));}return _0x3395e4;}}};
\ No newline at end of file
index 56851f4..88d0820 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0x410d=['Content-Range','apply','reject','save','update','then','destroy','error','stack','name','send','index','map','SquareRecording','rawAttributes','type','key','model','query','filters','attributes','intersection','fields','length','hasOwnProperty','nolimit','order','sort','where','pick','merge','VIRTUAL','filter','options','includeAll','include','findAll','rows','catch','show','params','keys','find','create','body','../../components/encryptor','uniqueid','savePath','filename','decryptFile','secrets','recording','Sequelize','ValidationError','SquareRecording\x20not\x20found','download','extname','unlink','message','isNil','Entity\x20not\x20found','info','cancellazione\x20fisica\x20documento\x20%s','existsSync','File:\x20\x22','\x22\x20trovato\x20eseguo\x20la\x20cancellazione','unlinkSync','.cypher','end','eml-format','rimraf','zip-dir','fast-json-patch','moment','mustache','util','path','to-csv','ejs','fs-extra','jsforce','querystring','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','json','limit','undefined','count','offset','set'];(function(_0x199f1e,_0x5b414d){var _0x2bdab9=function(_0x2fb095){while(--_0x2fb095){_0x199f1e['push'](_0x199f1e['shift']());}};_0x2bdab9(++_0x5b414d);}(_0x410d,0x10d));var _0xd410=function(_0x13ce0c,_0x3f2a0d){_0x13ce0c=_0x13ce0c-0x0;var _0x4388fb=_0x410d[_0x13ce0c];return _0x4388fb;};'use strict';var emlformat=require(_0xd410('0x0'));var rimraf=require(_0xd410('0x1'));var zipdir=require(_0xd410('0x2'));var jsonpatch=require(_0xd410('0x3'));var rp=require('request-promise');var moment=require(_0xd410('0x4'));var BPromise=require('bluebird');var Mustache=require(_0xd410('0x5'));var util=require(_0xd410('0x6'));var path=require(_0xd410('0x7'));var sox=require('sox');var csv=require(_0xd410('0x8'));var ejs=require(_0xd410('0x9'));var fs=require('fs');var fs_extra=require(_0xd410('0xa'));var _=require('lodash');var squel=require('squel');var crypto=require('crypto');var jsforce=require(_0xd410('0xb'));var deskjs=require('desk.js');var toCsv=require(_0xd410('0x8'));var querystring=require(_0xd410('0xc'));var Papa=require('papaparse');var Redis=require(_0xd410('0xd'));var authService=require(_0xd410('0xe'));var qs=require(_0xd410('0xf'));var as=require(_0xd410('0x10'));var hardwareService=require(_0xd410('0x11'));var logger=require(_0xd410('0x12'))(_0xd410('0x13'));var utils=require('../../config/utils');var config=require(_0xd410('0x14'));var licenseUtil=require(_0xd410('0x15'));var db=require(_0xd410('0x16'))['db'];function respondWithStatusCode(_0x4604f8,_0x32121b){_0x32121b=_0x32121b||0xcc;return function(_0x42eff5){if(_0x42eff5){return _0x4604f8[_0xd410('0x17')](_0x32121b);}return _0x4604f8['status'](_0x32121b)['end']();};}function respondWithResult(_0x5207fe,_0x102b98){_0x102b98=_0x102b98||0xc8;return function(_0x142d19){if(_0x142d19){return _0x5207fe[_0xd410('0x18')](_0x102b98)[_0xd410('0x19')](_0x142d19);}};}function respondWithFilteredResult(_0x2bc24a,_0x535ff8){return function(_0x400ffc){if(_0x400ffc){var _0x4863ec=typeof _0x535ff8['offset']==='undefined'&&typeof _0x535ff8[_0xd410('0x1a')]===_0xd410('0x1b');var _0x2bbb37=_0x400ffc[_0xd410('0x1c')];var _0x51d63e=_0x4863ec?0x0:_0x535ff8['offset'];var _0x47cb4b=_0x4863ec?_0x400ffc['count']:_0x535ff8[_0xd410('0x1d')]+_0x535ff8['limit'];var _0x4ef616;if(_0x47cb4b>=_0x2bbb37){_0x47cb4b=_0x2bbb37;_0x4ef616=0xc8;}else{_0x4ef616=0xce;}_0x2bc24a['status'](_0x4ef616);return _0x2bc24a[_0xd410('0x1e')](_0xd410('0x1f'),_0x51d63e+'-'+_0x47cb4b+'/'+_0x2bbb37)[_0xd410('0x19')](_0x400ffc);}return null;};}function patchUpdates(_0x320ea9){return function(_0x491c44){try{jsonpatch[_0xd410('0x20')](_0x491c44,_0x320ea9,!![]);}catch(_0x2fc7a9){return BPromise[_0xd410('0x21')](_0x2fc7a9);}return _0x491c44[_0xd410('0x22')]();};}function saveUpdates(_0x5a5d57,_0xb254e8){return function(_0x2d338e){if(_0x2d338e){return _0x2d338e[_0xd410('0x23')](_0x5a5d57)[_0xd410('0x24')](function(_0x5b6b74){return _0x5b6b74;});}return null;};}function removeEntity(_0x4836cb,_0x17571d){return function(_0x1cd5e1){if(_0x1cd5e1){return _0x1cd5e1[_0xd410('0x25')]()[_0xd410('0x24')](function(){_0x4836cb[_0xd410('0x18')](0xcc)['end']();});}};}function handleEntityNotFound(_0x45a285,_0x4266c7){return function(_0x1e7e01){if(!_0x1e7e01){_0x45a285[_0xd410('0x17')](0x194);}return _0x1e7e01;};}function handleError(_0x52af70,_0x3efadf){_0x3efadf=_0x3efadf||0x1f4;return function(_0x1b626c){logger[_0xd410('0x26')](_0x1b626c[_0xd410('0x27')]);if(_0x1b626c['name']){delete _0x1b626c[_0xd410('0x28')];}_0x52af70[_0xd410('0x18')](_0x3efadf)[_0xd410('0x29')](_0x1b626c);};}exports[_0xd410('0x2a')]=function(_0x402cca,_0x53b083){var _0x1221ec={},_0x443e9d={},_0x530418={'count':0x0,'rows':[]};var _0x576301=_[_0xd410('0x2b')](db[_0xd410('0x2c')][_0xd410('0x2d')],function(_0x34bc6b){return{'name':_0x34bc6b['fieldName'],'type':_0x34bc6b[_0xd410('0x2e')][_0xd410('0x2f')]};});_0x443e9d[_0xd410('0x30')]=_[_0xd410('0x2b')](_0x576301,_0xd410('0x28'));_0x443e9d[_0xd410('0x31')]=_['keys'](_0x402cca[_0xd410('0x31')]);_0x443e9d[_0xd410('0x32')]=_['intersection'](_0x443e9d[_0xd410('0x30')],_0x443e9d['query']);_0x1221ec[_0xd410('0x33')]=_[_0xd410('0x34')](_0x443e9d[_0xd410('0x30')],qs['fields'](_0x402cca[_0xd410('0x31')][_0xd410('0x35')]));_0x1221ec[_0xd410('0x33')]=_0x1221ec['attributes'][_0xd410('0x36')]?_0x1221ec[_0xd410('0x33')]:_0x443e9d[_0xd410('0x30')];if(!_0x402cca['query'][_0xd410('0x37')](_0xd410('0x38'))){_0x1221ec[_0xd410('0x1a')]=qs[_0xd410('0x1a')](_0x402cca[_0xd410('0x31')][_0xd410('0x1a')]);_0x1221ec[_0xd410('0x1d')]=qs[_0xd410('0x1d')](_0x402cca['query'][_0xd410('0x1d')]);}_0x1221ec[_0xd410('0x39')]=qs[_0xd410('0x3a')](_0x402cca['query'][_0xd410('0x3a')]);_0x1221ec[_0xd410('0x3b')]=qs[_0xd410('0x32')](_[_0xd410('0x3c')](_0x402cca[_0xd410('0x31')],_0x443e9d['filters']),_0x576301);if(_0x402cca[_0xd410('0x31')]['filter']){_0x1221ec[_0xd410('0x3b')]=_[_0xd410('0x3d')](_0x1221ec[_0xd410('0x3b')],{'$or':_['map'](_0x576301,function(_0x347dc4){if(_0x347dc4[_0xd410('0x2e')]!==_0xd410('0x3e')){var _0x429037={};_0x429037[_0x347dc4[_0xd410('0x28')]]={'$like':'%'+_0x402cca[_0xd410('0x31')][_0xd410('0x3f')]+'%'};return _0x429037;}})});}_0x1221ec=_[_0xd410('0x3d')]({},_0x1221ec,_0x402cca[_0xd410('0x40')]);var _0x29e15a={'where':_0x1221ec[_0xd410('0x3b')]};return db[_0xd410('0x2c')][_0xd410('0x1c')](_0x29e15a)[_0xd410('0x24')](function(_0x533737){_0x530418[_0xd410('0x1c')]=_0x533737;if(_0x402cca[_0xd410('0x31')][_0xd410('0x41')]){_0x1221ec[_0xd410('0x42')]=[{'all':!![]}];}return db['SquareRecording'][_0xd410('0x43')](_0x1221ec);})[_0xd410('0x24')](function(_0x3922d1){_0x530418[_0xd410('0x44')]=_0x3922d1;return _0x530418;})[_0xd410('0x24')](respondWithFilteredResult(_0x53b083,_0x1221ec))[_0xd410('0x45')](handleError(_0x53b083,null));};exports[_0xd410('0x46')]=function(_0xbf097,_0x31acf9){var _0x3d0cd9={'raw':!![],'where':{'id':_0xbf097[_0xd410('0x47')]['id']}},_0x3432d3={};_0x3432d3[_0xd410('0x30')]=_[_0xd410('0x48')](db['SquareRecording']['rawAttributes']);_0x3432d3['query']=_[_0xd410('0x48')](_0xbf097[_0xd410('0x31')]);_0x3432d3['filters']=_[_0xd410('0x34')](_0x3432d3[_0xd410('0x30')],_0x3432d3[_0xd410('0x31')]);_0x3d0cd9[_0xd410('0x33')]=_[_0xd410('0x34')](_0x3432d3[_0xd410('0x30')],qs['fields'](_0xbf097[_0xd410('0x31')]['fields']));_0x3d0cd9['attributes']=_0x3d0cd9['attributes'][_0xd410('0x36')]?_0x3d0cd9[_0xd410('0x33')]:_0x3432d3[_0xd410('0x30')];if(_0xbf097['query']['includeAll']){_0x3d0cd9[_0xd410('0x42')]=[{'all':!![]}];}_0x3d0cd9=_[_0xd410('0x3d')]({},_0x3d0cd9,_0xbf097['options']);return db[_0xd410('0x2c')][_0xd410('0x49')](_0x3d0cd9)['then'](handleEntityNotFound(_0x31acf9,null))[_0xd410('0x24')](respondWithResult(_0x31acf9,null))[_0xd410('0x45')](handleError(_0x31acf9,null));};exports[_0xd410('0x4a')]=function(_0x1e5a6f,_0x5a3694){return db[_0xd410('0x2c')][_0xd410('0x4a')](_0x1e5a6f['body'],{})[_0xd410('0x24')](respondWithResult(_0x5a3694,0xc9))[_0xd410('0x45')](handleError(_0x5a3694,null));};exports[_0xd410('0x23')]=function(_0x302efe,_0x1dae5c){if(_0x302efe[_0xd410('0x4b')]['id']){delete _0x302efe['body']['id'];}return db[_0xd410('0x2c')][_0xd410('0x49')]({'where':{'id':_0x302efe[_0xd410('0x47')]['id']}})['then'](handleEntityNotFound(_0x1dae5c,null))[_0xd410('0x24')](saveUpdates(_0x302efe[_0xd410('0x4b')],null))[_0xd410('0x24')](respondWithResult(_0x1dae5c,null))[_0xd410('0x45')](handleError(_0x1dae5c,null));};exports['download']=function(_0x37bfe7,_0x20231a,_0x2d032d){var _0x4dcc81=require(_0xd410('0x4c'));var _0x4a7733=![];var _0x294c28={};if(_0x37bfe7[_0xd410('0x31')]['type']&&_0x37bfe7[_0xd410('0x31')][_0xd410('0x2e')]===_0xd410('0x4d')){_0x294c28[_0xd410('0x4d')]=_0x37bfe7[_0xd410('0x47')]['id'];}else{_0x294c28['id']=_0x37bfe7[_0xd410('0x47')]['id'];}return db[_0xd410('0x2c')][_0xd410('0x49')]({'where':_0x294c28,'attributes':['id',_0xd410('0x4e'),_0xd410('0x4f')],'raw':!![]})['then'](handleEntityNotFound(_0x20231a,null))['then'](function(_0x210f7e){if(_0x210f7e){var _0x608d9a=_0x210f7e[_0xd410('0x4e')];var _0x3fbcde=util['format']('%s.cypher',_0x608d9a);if(fs['existsSync'](_0x3fbcde)){_0x4a7733=!![];return _0x4dcc81[_0xd410('0x50')](_0x3fbcde,_0x608d9a,config[_0xd410('0x51')][_0xd410('0x52')])['then'](function(){return _0x210f7e;});}return _0x210f7e;}})[_0xd410('0x24')](function(_0x3c30f2){if(_0x3c30f2){var _0x12db43=_0x3c30f2[_0xd410('0x4e')];if(!fs['existsSync'](_0x12db43)){throw new db[(_0xd410('0x53'))][(_0xd410('0x54'))](_0xd410('0x55'));}if(_0x3c30f2[_0xd410('0x4f')]){return _0x20231a[_0xd410('0x56')](_0x12db43,_0x3c30f2['filename']+path[_0xd410('0x57')](_0x12db43),function(){if(_0x4a7733){fs[_0xd410('0x58')](_0x12db43);}});}else{return _0x20231a[_0xd410('0x56')](_0x12db43,function(_0x1db8f5){if(_0x4a7733){fs['unlink'](_0x12db43);}});}}})[_0xd410('0x45')](function(_0x3d5edb){if(_0x3d5edb[_0xd410('0x59')]===_0xd410('0x55')){_0x20231a[_0xd410('0x18')](0x194)[_0xd410('0x29')]('Not\x20found');}else{return handleError(_0x20231a,null);}});};exports[_0xd410('0x25')]=function(_0x4644ba,_0xfb8be3){return db[_0xd410('0x2c')][_0xd410('0x49')]({'where':{'id':_0x4644ba[_0xd410('0x47')]['id']}})[_0xd410('0x24')](function(_0x2ebb0d){if(_[_0xd410('0x5a')](_0x2ebb0d)){throw new ReferenceError(_0xd410('0x5b'));}return _0x2ebb0d;})[_0xd410('0x24')](function(_0x2bacb9){var _0x2334cb=_0x2bacb9[_0xd410('0x4e')];logger[_0xd410('0x5c')](_0xd410('0x5d'),_0x2334cb);if(!_[_0xd410('0x5a')](_0x2bacb9[_0xd410('0x4e')])&&fs[_0xd410('0x5e')](_0x2334cb)){logger[_0xd410('0x5c')](_0xd410('0x5f')+_0x2334cb+_0xd410('0x60'));fs[_0xd410('0x61')](_0x2334cb);}_0x2334cb=_0x2334cb+_0xd410('0x62');if(!_[_0xd410('0x5a')](_0x2bacb9[_0xd410('0x4e')])&&fs[_0xd410('0x5e')](_0x2334cb)){logger[_0xd410('0x5c')]('File:\x20\x22'+_0x2334cb+_0xd410('0x60'));fs[_0xd410('0x61')](_0x2334cb);}return _0x2bacb9;})[_0xd410('0x24')](function(_0x5a7af2){if(!_0x5a7af2)throw new InternalError();return _0x5a7af2[_0xd410('0x25')]();})[_0xd410('0x24')](function(){_0xfb8be3[_0xd410('0x18')](0xcc)[_0xd410('0x63')]();})[_0xd410('0x45')](handleError(_0xfb8be3,null));};
\ No newline at end of file
index 35b573f..670e850 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0x8921=['api','moment','bluebird','request-promise','path','rimraf','../../config/environment','./squareRecording.attributes','exports','SquareRecording','square_recordings','lodash','../../config/logger'];(function(_0x4ad17e,_0x4cf44b){var _0x309136=function(_0x676636){while(--_0x676636){_0x4ad17e['push'](_0x4ad17e['shift']());}};_0x309136(++_0x4cf44b);}(_0x8921,0x9a));var _0x1892=function(_0x531712,_0x3a2e32){_0x531712=_0x531712-0x0;var _0xd7e880=_0x8921[_0x531712];return _0xd7e880;};'use strict';var _=require(_0x1892('0x0'));var util=require('util');var logger=require(_0x1892('0x1'))(_0x1892('0x2'));var moment=require(_0x1892('0x3'));var BPromise=require(_0x1892('0x4'));var rp=require(_0x1892('0x5'));var fs=require('fs');var path=require(_0x1892('0x6'));var rimraf=require(_0x1892('0x7'));var config=require(_0x1892('0x8'));var attributes=require(_0x1892('0x9'));module[_0x1892('0xa')]=function(_0x40e2e5,_0x238d31){return _0x40e2e5['define'](_0x1892('0xb'),attributes,{'tableName':_0x1892('0xc'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index bc2b2fc..4705465 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0xb225=['lodash','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/logger','../../config/environment','client','request','then','info','SquareRecording,\x20%s,\x20%s','request\x20sent','debug','stringify','error','message','result','catch','CreateSquareRecording','SquareRecording','create','options','raw'];(function(_0x31e5cb,_0x2f5adf){var _0x4170df=function(_0x31c53e){while(--_0x31c53e){_0x31e5cb['push'](_0x31e5cb['shift']());}};_0x4170df(++_0x2f5adf);}(_0xb225,0x12c));var _0x5b22=function(_0x1aeda2,_0x1217eb){_0x1aeda2=_0x1aeda2-0x0;var _0x32dc6d=_0xb225[_0x1aeda2];return _0x32dc6d;};'use strict';var _=require(_0x5b22('0x0'));var util=require('util');var moment=require(_0x5b22('0x1'));var BPromise=require(_0x5b22('0x2'));var rs=require(_0x5b22('0x3'));var fs=require('fs');var Redis=require(_0x5b22('0x4'));var db=require(_0x5b22('0x5'))['db'];var utils=require('../../config/utils');var logger=require(_0x5b22('0x6'))('rpc');var config=require(_0x5b22('0x7'));var jayson=require('jayson/promise');var client=jayson[_0x5b22('0x8')]['http']({'port':0x232a});function respondWithRpcPromise(_0x1330e4,_0x293bd6,_0x93a213){return new BPromise(function(_0x1ecada,_0x2bfe02){return client[_0x5b22('0x9')](_0x1330e4,_0x93a213)[_0x5b22('0xa')](function(_0x58aebc){logger[_0x5b22('0xb')](_0x5b22('0xc'),_0x293bd6,_0x5b22('0xd'));logger[_0x5b22('0xe')]('SquareRecording,\x20%s,\x20%s,\x20%s',_0x293bd6,'request\x20sent',JSON[_0x5b22('0xf')](_0x58aebc));if(_0x58aebc[_0x5b22('0x10')]){if(_0x58aebc['error']['code']===0x1f4){logger[_0x5b22('0x10')](_0x5b22('0xc'),_0x293bd6,_0x58aebc[_0x5b22('0x10')]['message']);return _0x2bfe02(_0x58aebc[_0x5b22('0x10')][_0x5b22('0x11')]);}logger[_0x5b22('0x10')](_0x5b22('0xc'),_0x293bd6,_0x58aebc[_0x5b22('0x10')]['message']);return _0x1ecada(_0x58aebc['error'][_0x5b22('0x11')]);}else{logger[_0x5b22('0xb')]('SquareRecording,\x20%s,\x20%s',_0x293bd6,_0x5b22('0xd'));_0x1ecada(_0x58aebc[_0x5b22('0x12')][_0x5b22('0x11')]);}})[_0x5b22('0x13')](function(_0x4ecbf6){logger[_0x5b22('0x10')](_0x5b22('0xc'),_0x293bd6,_0x4ecbf6);_0x2bfe02(_0x4ecbf6);});});}exports[_0x5b22('0x14')]=function(_0x1a5bc0){var _0x1d5adf=this;return new Promise(function(_0x207559,_0x48ea13){return db[_0x5b22('0x15')][_0x5b22('0x16')](_0x1a5bc0['body'],{'raw':_0x1a5bc0['options']?_0x1a5bc0[_0x5b22('0x17')][_0x5b22('0x18')]===undefined?!![]:![]:!![]})[_0x5b22('0xa')](function(_0x18e043){logger[_0x5b22('0xb')](_0x5b22('0x14'),_0x1a5bc0);logger[_0x5b22('0xe')](_0x5b22('0x14'),_0x1a5bc0,JSON[_0x5b22('0xf')](_0x18e043));_0x207559(_0x18e043);})[_0x5b22('0x13')](function(_0x167ff4){logger[_0x5b22('0x10')]('CreateSquareRecording',_0x167ff4[_0x5b22('0x11')],_0x1a5bc0);_0x48ea13(_0x1d5adf[_0x5b22('0x10')](0x1f4,_0x167ff4[_0x5b22('0x11')]));});});};
\ No newline at end of file
index d729d62..d4a55ce 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(_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
+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(_0x2b8077,_0x453634){var _0x308091=function(_0x426df7){while(--_0x426df7){_0x2b8077['push'](_0x2b8077['shift']());}};_0x308091(++_0x453634);}(_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
index ad6d3e7..13c26bf 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0x61da=['DATE','sequelize','STRING'];(function(_0x27ffc3,_0x6a9a3f){var _0x139f94=function(_0x26d528){while(--_0x26d528){_0x27ffc3['push'](_0x27ffc3['shift']());}};_0x139f94(++_0x6a9a3f);}(_0x61da,0x18a));var _0xa61d=function(_0x3d1fc2,_0x20c677){_0x3d1fc2=_0x3d1fc2-0x0;var _0x7b4ff=_0x61da[_0x3d1fc2];return _0x7b4ff;};'use strict';var Sequelize=require(_0xa61d('0x0'));module['exports']={'network':{'type':Sequelize[_0xa61d('0x1')]},'network_script':{'type':Sequelize['STRING']},'request':{'type':Sequelize[_0xa61d('0x1')]},'channel':{'type':Sequelize['STRING']},'language':{'type':Sequelize[_0xa61d('0x1')]},'type':{'type':Sequelize[_0xa61d('0x1')]},'uniqueid':{'type':Sequelize[_0xa61d('0x1')]},'version':{'type':Sequelize[_0xa61d('0x1')]},'callerid':{'type':Sequelize[_0xa61d('0x1')]},'calleridname':{'type':Sequelize[_0xa61d('0x1')]},'callingpres':{'type':Sequelize[_0xa61d('0x1')]},'callingani2':{'type':Sequelize['STRING']},'callington':{'type':Sequelize[_0xa61d('0x1')]},'callingtns':{'type':Sequelize[_0xa61d('0x1')]},'dnid':{'type':Sequelize[_0xa61d('0x1')]},'rdnis':{'type':Sequelize[_0xa61d('0x1')]},'context':{'type':Sequelize[_0xa61d('0x1')]},'extension':{'type':Sequelize[_0xa61d('0x1')]},'priority':{'type':Sequelize['STRING']},'enhanced':{'type':Sequelize[_0xa61d('0x1')]},'accountcode':{'type':Sequelize['STRING']},'threadid':{'type':Sequelize[_0xa61d('0x1')]},'project_name':{'type':Sequelize[_0xa61d('0x1')]},'joinAt':{'type':Sequelize[_0xa61d('0x2')]},'leaveAt':{'type':Sequelize[_0xa61d('0x2')]},'bot':{'type':Sequelize['BOOLEAN'],'defaultValue':![]}};
\ No newline at end of file
index 5b0b6f9..fdb88ea 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0x0e8c=['SquareReport','rawAttributes','fieldName','type','query','keys','filters','model','attributes','fields','length','nolimit','limit','sort','where','pick','filter','merge','VIRTUAL','options','includeAll','include','findAll','rows','catch','show','params','intersection','find','create','body','describe','eml-format','rimraf','zip-dir','fast-json-patch','moment','bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','lodash','crypto','jsforce','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','json','offset','undefined','count','set','Content-Range','apply','save','update','then','destroy','name','send','map'];(function(_0xf9c519,_0x3753ca){var _0x339807=function(_0x19a60a){while(--_0x19a60a){_0xf9c519['push'](_0xf9c519['shift']());}};_0x339807(++_0x3753ca);}(_0x0e8c,0x6d));var _0xc0e8=function(_0x4565bf,_0x5ad9d6){_0x4565bf=_0x4565bf-0x0;var _0x5610ba=_0x0e8c[_0x4565bf];return _0x5610ba;};'use strict';var emlformat=require(_0xc0e8('0x0'));var rimraf=require(_0xc0e8('0x1'));var zipdir=require(_0xc0e8('0x2'));var jsonpatch=require(_0xc0e8('0x3'));var rp=require('request-promise');var moment=require(_0xc0e8('0x4'));var BPromise=require(_0xc0e8('0x5'));var Mustache=require(_0xc0e8('0x6'));var util=require(_0xc0e8('0x7'));var path=require(_0xc0e8('0x8'));var sox=require(_0xc0e8('0x9'));var csv=require(_0xc0e8('0xa'));var ejs=require(_0xc0e8('0xb'));var fs=require('fs');var fs_extra=require(_0xc0e8('0xc'));var _=require(_0xc0e8('0xd'));var squel=require('squel');var crypto=require(_0xc0e8('0xe'));var jsforce=require(_0xc0e8('0xf'));var deskjs=require('desk.js');var toCsv=require('to-csv');var querystring=require(_0xc0e8('0x10'));var Papa=require(_0xc0e8('0x11'));var Redis=require(_0xc0e8('0x12'));var authService=require(_0xc0e8('0x13'));var qs=require(_0xc0e8('0x14'));var as=require(_0xc0e8('0x15'));var hardwareService=require(_0xc0e8('0x16'));var logger=require(_0xc0e8('0x17'))(_0xc0e8('0x18'));var utils=require('../../config/utils');var config=require(_0xc0e8('0x19'));var licenseUtil=require(_0xc0e8('0x1a'));var db=require(_0xc0e8('0x1b'))['db'];function respondWithStatusCode(_0x1dc315,_0x116c51){_0x116c51=_0x116c51||0xcc;return function(_0x42e0f7){if(_0x42e0f7){return _0x1dc315[_0xc0e8('0x1c')](_0x116c51);}return _0x1dc315[_0xc0e8('0x1d')](_0x116c51)[_0xc0e8('0x1e')]();};}function respondWithResult(_0x20d416,_0x415f19){_0x415f19=_0x415f19||0xc8;return function(_0x51509d){if(_0x51509d){return _0x20d416[_0xc0e8('0x1d')](_0x415f19)[_0xc0e8('0x1f')](_0x51509d);}};}function respondWithFilteredResult(_0x1d52bc,_0x1a2c03){return function(_0x57205e){if(_0x57205e){var _0x3914e6=typeof _0x1a2c03[_0xc0e8('0x20')]===_0xc0e8('0x21')&&typeof _0x1a2c03['limit']===_0xc0e8('0x21');var _0x3119a8=_0x57205e[_0xc0e8('0x22')];var _0x5eb9b0=_0x3914e6?0x0:_0x1a2c03[_0xc0e8('0x20')];var _0x179863=_0x3914e6?_0x57205e[_0xc0e8('0x22')]:_0x1a2c03[_0xc0e8('0x20')]+_0x1a2c03['limit'];var _0x1b4510;if(_0x179863>=_0x3119a8){_0x179863=_0x3119a8;_0x1b4510=0xc8;}else{_0x1b4510=0xce;}_0x1d52bc[_0xc0e8('0x1d')](_0x1b4510);return _0x1d52bc[_0xc0e8('0x23')](_0xc0e8('0x24'),_0x5eb9b0+'-'+_0x179863+'/'+_0x3119a8)[_0xc0e8('0x1f')](_0x57205e);}return null;};}function patchUpdates(_0x1314fd){return function(_0x465b9f){try{jsonpatch[_0xc0e8('0x25')](_0x465b9f,_0x1314fd,!![]);}catch(_0x306eb1){return BPromise['reject'](_0x306eb1);}return _0x465b9f[_0xc0e8('0x26')]();};}function saveUpdates(_0x2adcf6,_0x18faf3){return function(_0x5dc5d0){if(_0x5dc5d0){return _0x5dc5d0[_0xc0e8('0x27')](_0x2adcf6)[_0xc0e8('0x28')](function(_0x4759c9){return _0x4759c9;});}return null;};}function removeEntity(_0x46490e,_0x3c9f4a){return function(_0x49d8d4){if(_0x49d8d4){return _0x49d8d4[_0xc0e8('0x29')]()[_0xc0e8('0x28')](function(){_0x46490e[_0xc0e8('0x1d')](0xcc)[_0xc0e8('0x1e')]();});}};}function handleEntityNotFound(_0x3e45fb,_0x33965f){return function(_0x3a78e6){if(!_0x3a78e6){_0x3e45fb[_0xc0e8('0x1c')](0x194);}return _0x3a78e6;};}function handleError(_0x3f4747,_0x5b4c23){_0x5b4c23=_0x5b4c23||0x1f4;return function(_0x2f9ccc){logger['error'](_0x2f9ccc['stack']);if(_0x2f9ccc[_0xc0e8('0x2a')]){delete _0x2f9ccc[_0xc0e8('0x2a')];}_0x3f4747[_0xc0e8('0x1d')](_0x5b4c23)[_0xc0e8('0x2b')](_0x2f9ccc);};}exports['index']=function(_0x25c224,_0x296148){var _0x161540={},_0x3904ff={},_0xa7f072={'count':0x0,'rows':[]};var _0x56bb43=_[_0xc0e8('0x2c')](db[_0xc0e8('0x2d')][_0xc0e8('0x2e')],function(_0x54b0c1){return{'name':_0x54b0c1[_0xc0e8('0x2f')],'type':_0x54b0c1[_0xc0e8('0x30')]['key']};});_0x3904ff['model']=_[_0xc0e8('0x2c')](_0x56bb43,_0xc0e8('0x2a'));_0x3904ff[_0xc0e8('0x31')]=_[_0xc0e8('0x32')](_0x25c224['query']);_0x3904ff[_0xc0e8('0x33')]=_['intersection'](_0x3904ff[_0xc0e8('0x34')],_0x3904ff[_0xc0e8('0x31')]);_0x161540[_0xc0e8('0x35')]=_['intersection'](_0x3904ff[_0xc0e8('0x34')],qs[_0xc0e8('0x36')](_0x25c224[_0xc0e8('0x31')][_0xc0e8('0x36')]));_0x161540['attributes']=_0x161540[_0xc0e8('0x35')][_0xc0e8('0x37')]?_0x161540[_0xc0e8('0x35')]:_0x3904ff[_0xc0e8('0x34')];if(!_0x25c224['query']['hasOwnProperty'](_0xc0e8('0x38'))){_0x161540['limit']=qs[_0xc0e8('0x39')](_0x25c224[_0xc0e8('0x31')][_0xc0e8('0x39')]);_0x161540['offset']=qs['offset'](_0x25c224[_0xc0e8('0x31')]['offset']);}_0x161540['order']=qs[_0xc0e8('0x3a')](_0x25c224[_0xc0e8('0x31')][_0xc0e8('0x3a')]);_0x161540[_0xc0e8('0x3b')]=qs[_0xc0e8('0x33')](_[_0xc0e8('0x3c')](_0x25c224[_0xc0e8('0x31')],_0x3904ff['filters']),_0x56bb43);if(_0x25c224[_0xc0e8('0x31')][_0xc0e8('0x3d')]){_0x161540[_0xc0e8('0x3b')]=_[_0xc0e8('0x3e')](_0x161540[_0xc0e8('0x3b')],{'$or':_[_0xc0e8('0x2c')](_0x56bb43,function(_0x32ff62){if(_0x32ff62['type']!==_0xc0e8('0x3f')){var _0xa41587={};_0xa41587[_0x32ff62['name']]={'$like':'%'+_0x25c224[_0xc0e8('0x31')][_0xc0e8('0x3d')]+'%'};return _0xa41587;}})});}_0x161540=_[_0xc0e8('0x3e')]({},_0x161540,_0x25c224[_0xc0e8('0x40')]);var _0x39ea75={'where':_0x161540['where']};return db[_0xc0e8('0x2d')]['count'](_0x39ea75)[_0xc0e8('0x28')](function(_0xa750bc){_0xa7f072['count']=_0xa750bc;if(_0x25c224[_0xc0e8('0x31')][_0xc0e8('0x41')]){_0x161540[_0xc0e8('0x42')]=[{'all':!![]}];}return db[_0xc0e8('0x2d')][_0xc0e8('0x43')](_0x161540);})['then'](function(_0x404cfe){_0xa7f072[_0xc0e8('0x44')]=_0x404cfe;return _0xa7f072;})[_0xc0e8('0x28')](respondWithFilteredResult(_0x296148,_0x161540))[_0xc0e8('0x45')](handleError(_0x296148,null));};exports[_0xc0e8('0x46')]=function(_0x30d4b8,_0x13b162){var _0x49920f={'raw':!![],'where':{'id':_0x30d4b8[_0xc0e8('0x47')]['id']}},_0x2424f3={};_0x2424f3['model']=_[_0xc0e8('0x32')](db[_0xc0e8('0x2d')][_0xc0e8('0x2e')]);_0x2424f3[_0xc0e8('0x31')]=_[_0xc0e8('0x32')](_0x30d4b8[_0xc0e8('0x31')]);_0x2424f3[_0xc0e8('0x33')]=_[_0xc0e8('0x48')](_0x2424f3[_0xc0e8('0x34')],_0x2424f3[_0xc0e8('0x31')]);_0x49920f[_0xc0e8('0x35')]=_[_0xc0e8('0x48')](_0x2424f3[_0xc0e8('0x34')],qs[_0xc0e8('0x36')](_0x30d4b8[_0xc0e8('0x31')][_0xc0e8('0x36')]));_0x49920f['attributes']=_0x49920f[_0xc0e8('0x35')]['length']?_0x49920f[_0xc0e8('0x35')]:_0x2424f3[_0xc0e8('0x34')];if(_0x30d4b8[_0xc0e8('0x31')][_0xc0e8('0x41')]){_0x49920f[_0xc0e8('0x42')]=[{'all':!![]}];}_0x49920f=_[_0xc0e8('0x3e')]({},_0x49920f,_0x30d4b8[_0xc0e8('0x40')]);return db[_0xc0e8('0x2d')][_0xc0e8('0x49')](_0x49920f)[_0xc0e8('0x28')](handleEntityNotFound(_0x13b162,null))[_0xc0e8('0x28')](respondWithResult(_0x13b162,null))[_0xc0e8('0x45')](handleError(_0x13b162,null));};exports[_0xc0e8('0x4a')]=function(_0x434eba,_0x1964bd){return db[_0xc0e8('0x2d')][_0xc0e8('0x4a')](_0x434eba[_0xc0e8('0x4b')],{})[_0xc0e8('0x28')](respondWithResult(_0x1964bd,0xc9))['catch'](handleError(_0x1964bd,null));};exports[_0xc0e8('0x27')]=function(_0x55e746,_0x33b1d1){if(_0x55e746[_0xc0e8('0x4b')]['id']){delete _0x55e746['body']['id'];}return db['SquareReport']['find']({'where':{'id':_0x55e746[_0xc0e8('0x47')]['id']}})['then'](handleEntityNotFound(_0x33b1d1,null))['then'](saveUpdates(_0x55e746[_0xc0e8('0x4b')],null))['then'](respondWithResult(_0x33b1d1,null))['catch'](handleError(_0x33b1d1,null));};exports['destroy']=function(_0x46bb01,_0x1a6e87){return db[_0xc0e8('0x2d')][_0xc0e8('0x49')]({'where':{'id':_0x46bb01[_0xc0e8('0x47')]['id']}})[_0xc0e8('0x28')](handleEntityNotFound(_0x1a6e87,null))['then'](removeEntity(_0x1a6e87,null))[_0xc0e8('0x45')](handleError(_0x1a6e87,null));};exports['describe']=function(_0x20198e,_0x4487af){return db[_0xc0e8('0x2d')][_0xc0e8('0x4c')]()[_0xc0e8('0x28')](respondWithResult(_0x4487af,null))[_0xc0e8('0x45')](handleError(_0x4487af,null));};
\ No newline at end of file
index 37cd9b9..d7ecf97 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0x6747=['SquareReport','report_square','uid_pname','uniqueid','project_name','leaveAt','lodash','util','../../config/logger','api','moment','bluebird','request-promise','rimraf','../../config/environment','./squareReport.attributes','exports','define'];(function(_0x6357d3,_0x2c271d){var _0x35c1ac=function(_0x34bfc1){while(--_0x34bfc1){_0x6357d3['push'](_0x6357d3['shift']());}};_0x35c1ac(++_0x2c271d);}(_0x6747,0xa8));var _0x7674=function(_0x4f39fd,_0x36d85f){_0x4f39fd=_0x4f39fd-0x0;var _0x4ef809=_0x6747[_0x4f39fd];return _0x4ef809;};'use strict';var _=require(_0x7674('0x0'));var util=require(_0x7674('0x1'));var logger=require(_0x7674('0x2'))(_0x7674('0x3'));var moment=require(_0x7674('0x4'));var BPromise=require(_0x7674('0x5'));var rp=require(_0x7674('0x6'));var fs=require('fs');var path=require('path');var rimraf=require(_0x7674('0x7'));var config=require(_0x7674('0x8'));var attributes=require(_0x7674('0x9'));module[_0x7674('0xa')]=function(_0x64dd44,_0x201476){return _0x64dd44[_0x7674('0xb')](_0x7674('0xc'),attributes,{'tableName':_0x7674('0xd'),'paranoid':![],'indexes':[{'name':_0x7674('0xe'),'fields':[_0x7674('0xf'),_0x7674('0x10')]},{'name':_0x7674('0x11'),'fields':[_0x7674('0x11')]}],'timestamps':!![]});};
\ No newline at end of file
index 7000ce7..d19674f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0x049a=['result','catch','CreateSquareReport','SquareReport','create','body','options','raw','then','update','where','attributes','limit','UpdateSquareReport','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/logger','../../config/environment','jayson/promise','request','info','SquareReport,\x20%s,\x20%s','debug','SquareReport,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','code','message'];(function(_0x20a584,_0xe384a5){var _0x4b41a8=function(_0x2127c6){while(--_0x2127c6){_0x20a584['push'](_0x20a584['shift']());}};_0x4b41a8(++_0xe384a5);}(_0x049a,0x92));var _0xa049=function(_0x58ceb9,_0x5601df){_0x58ceb9=_0x58ceb9-0x0;var _0x3d0ff5=_0x049a[_0x58ceb9];return _0x3d0ff5;};'use strict';var _=require('lodash');var util=require(_0xa049('0x0'));var moment=require(_0xa049('0x1'));var BPromise=require(_0xa049('0x2'));var rs=require(_0xa049('0x3'));var fs=require('fs');var Redis=require(_0xa049('0x4'));var db=require(_0xa049('0x5'))['db'];var utils=require('../../config/utils');var logger=require(_0xa049('0x6'))('rpc');var config=require(_0xa049('0x7'));var jayson=require(_0xa049('0x8'));var client=jayson['client']['http']({'port':0x232a});function respondWithRpcPromise(_0x2aa95a,_0x5d7a82,_0x17033e){return new BPromise(function(_0x3c4002,_0x19556d){return client[_0xa049('0x9')](_0x2aa95a,_0x17033e)['then'](function(_0x4b55ec){logger[_0xa049('0xa')](_0xa049('0xb'),_0x5d7a82,'request\x20sent');logger[_0xa049('0xc')](_0xa049('0xd'),_0x5d7a82,_0xa049('0xe'),JSON[_0xa049('0xf')](_0x4b55ec));if(_0x4b55ec[_0xa049('0x10')]){if(_0x4b55ec['error'][_0xa049('0x11')]===0x1f4){logger['error'](_0xa049('0xb'),_0x5d7a82,_0x4b55ec[_0xa049('0x10')][_0xa049('0x12')]);return _0x19556d(_0x4b55ec['error'][_0xa049('0x12')]);}logger[_0xa049('0x10')](_0xa049('0xb'),_0x5d7a82,_0x4b55ec[_0xa049('0x10')][_0xa049('0x12')]);return _0x3c4002(_0x4b55ec[_0xa049('0x10')][_0xa049('0x12')]);}else{logger[_0xa049('0xa')](_0xa049('0xb'),_0x5d7a82,_0xa049('0xe'));_0x3c4002(_0x4b55ec[_0xa049('0x13')][_0xa049('0x12')]);}})[_0xa049('0x14')](function(_0x31accf){logger[_0xa049('0x10')]('SquareReport,\x20%s,\x20%s',_0x5d7a82,_0x31accf);_0x19556d(_0x31accf);});});}exports[_0xa049('0x15')]=function(_0x21d28b){var _0x312a0d=this;return new Promise(function(_0x5cb239,_0x34f715){return db[_0xa049('0x16')][_0xa049('0x17')](_0x21d28b[_0xa049('0x18')],{'raw':_0x21d28b[_0xa049('0x19')]?_0x21d28b[_0xa049('0x19')][_0xa049('0x1a')]===undefined?!![]:![]:!![]})[_0xa049('0x1b')](function(_0x2cffb5){logger[_0xa049('0xa')](_0xa049('0x15'),_0x21d28b);logger[_0xa049('0xc')]('CreateSquareReport',_0x21d28b,JSON[_0xa049('0xf')](_0x2cffb5));_0x5cb239(_0x2cffb5);})[_0xa049('0x14')](function(_0xb1fb8f){logger[_0xa049('0x10')](_0xa049('0x15'),_0xb1fb8f[_0xa049('0x12')],_0x21d28b);_0x34f715(_0x312a0d['error'](0x1f4,_0xb1fb8f[_0xa049('0x12')]));});});};exports['UpdateSquareReport']=function(_0x2f720f){var _0x5eaca7=this;return new Promise(function(_0x5683a4,_0x49be2f){return db[_0xa049('0x16')][_0xa049('0x1c')](_0x2f720f[_0xa049('0x18')],{'raw':_0x2f720f['options']?_0x2f720f[_0xa049('0x19')]['raw']===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x2f720f[_0xa049('0x19')]?_0x2f720f[_0xa049('0x19')][_0xa049('0x1d')]||null:null,'attributes':_0x2f720f[_0xa049('0x19')]?_0x2f720f['options'][_0xa049('0x1e')]||null:null,'limit':_0x2f720f[_0xa049('0x19')]?_0x2f720f[_0xa049('0x19')][_0xa049('0x1f')]||null:null})['then'](function(_0x2d091d){logger[_0xa049('0xa')](_0xa049('0x20'),_0x2f720f);logger[_0xa049('0xc')]('UpdateSquareReport',_0x2f720f,JSON[_0xa049('0xf')](_0x2d091d));_0x5683a4(_0x2d091d);})[_0xa049('0x14')](function(_0x380edf){logger['error'](_0xa049('0x20'),_0x380edf[_0xa049('0x12')],_0x2f720f);_0x49be2f(_0x5eaca7['error'](0x1f4,_0x380edf[_0xa049('0x12')]));});});};
\ No newline at end of file
index 643b8f1..05983d2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0xc2f5=['util','path','connect-timeout','fs-extra','../../components/auth/service','../../components/interaction/service','./squareReportDetail.controller','get','isAuthenticated','index','/describe','describe','show','create','put','/:id','update','delete','destroy','exports','multer'];(function(_0x2aab28,_0x2628f1){var _0xe8b309=function(_0x58a7fe){while(--_0x58a7fe){_0x2aab28['push'](_0x2aab28['shift']());}};_0xe8b309(++_0x2628f1);}(_0xc2f5,0x18e));var _0x5c2f=function(_0x4c20f8,_0x1255e1){_0x4c20f8=_0x4c20f8-0x0;var _0x1e8a8a=_0xc2f5[_0x4c20f8];return _0x1e8a8a;};'use strict';var multer=require(_0x5c2f('0x0'));var util=require(_0x5c2f('0x1'));var path=require(_0x5c2f('0x2'));var timeout=require(_0x5c2f('0x3'));var express=require('express');var router=express['Router']();var fs_extra=require(_0x5c2f('0x4'));var auth=require(_0x5c2f('0x5'));var interaction=require(_0x5c2f('0x6'));var config=require('../../config/environment');var controller=require(_0x5c2f('0x7'));router[_0x5c2f('0x8')]('/',auth[_0x5c2f('0x9')](),controller[_0x5c2f('0xa')]);router[_0x5c2f('0x8')](_0x5c2f('0xb'),auth[_0x5c2f('0x9')](),controller[_0x5c2f('0xc')]);router['get']('/:id',auth[_0x5c2f('0x9')](),controller[_0x5c2f('0xd')]);router['post']('/',auth['isAuthenticated'](),controller[_0x5c2f('0xe')]);router[_0x5c2f('0xf')](_0x5c2f('0x10'),auth['isAuthenticated'](),controller[_0x5c2f('0x11')]);router[_0x5c2f('0x12')]('/:id',auth[_0x5c2f('0x9')](),controller[_0x5c2f('0x13')]);module[_0x5c2f('0x14')]=router;
\ No newline at end of file
index e630274..8f9d238 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0xb5d5=['TEXT','exports','STRING'];(function(_0x19950b,_0x53d0d7){var _0x3c6b41=function(_0x3924ad){while(--_0x3924ad){_0x19950b['push'](_0x19950b['shift']());}};_0x3c6b41(++_0x53d0d7);}(_0xb5d5,0x1c0));var _0x5b5d=function(_0x4cb11f,_0x3db4d4){_0x4cb11f=_0x4cb11f-0x0;var _0x49b5c5=_0xb5d5[_0x4cb11f];return _0x49b5c5;};'use strict';var Sequelize=require('sequelize');module[_0x5b5d('0x0')]={'uniqueid':{'type':Sequelize['STRING']},'node':{'type':Sequelize[_0x5b5d('0x1')]},'application':{'type':Sequelize[_0x5b5d('0x1')]},'data':{'type':Sequelize[_0x5b5d('0x2')]},'project_name':{'type':Sequelize[_0x5b5d('0x1')]},'callerid':{'type':Sequelize[_0x5b5d('0x1')]}};
\ No newline at end of file
index 2d67c37..23c0025 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0xad95=['limit','count','Content-Range','reject','save','update','destroy','then','end','error','name','send','index','map','SquareDetailsReport','fieldName','type','key','query','intersection','model','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','filters','filter','merge','VIRTUAL','options','includeAll','include','catch','show','keys','find','create','body','params','describe','eml-format','rimraf','zip-dir','moment','bluebird','path','lodash','squel','crypto','jsforce','desk.js','querystring','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','api','../../config/environment','../../config/license/util','../../mysqldb','status','json','offset','undefined'];(function(_0x3832f9,_0x59c443){var _0x37418c=function(_0x133ee9){while(--_0x133ee9){_0x3832f9['push'](_0x3832f9['shift']());}};_0x37418c(++_0x59c443);}(_0xad95,0x70));var _0x5ad9=function(_0x4bf87b,_0x117797){_0x4bf87b=_0x4bf87b-0x0;var _0x1b8cee=_0xad95[_0x4bf87b];return _0x1b8cee;};'use strict';var emlformat=require(_0x5ad9('0x0'));var rimraf=require(_0x5ad9('0x1'));var zipdir=require(_0x5ad9('0x2'));var jsonpatch=require('fast-json-patch');var rp=require('request-promise');var moment=require(_0x5ad9('0x3'));var BPromise=require(_0x5ad9('0x4'));var Mustache=require('mustache');var util=require('util');var path=require(_0x5ad9('0x5'));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(_0x5ad9('0x6'));var squel=require(_0x5ad9('0x7'));var crypto=require(_0x5ad9('0x8'));var jsforce=require(_0x5ad9('0x9'));var deskjs=require(_0x5ad9('0xa'));var toCsv=require('to-csv');var querystring=require(_0x5ad9('0xb'));var Papa=require('papaparse');var Redis=require('ioredis');var authService=require(_0x5ad9('0xc'));var qs=require(_0x5ad9('0xd'));var as=require(_0x5ad9('0xe'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x5ad9('0xf'))(_0x5ad9('0x10'));var utils=require('../../config/utils');var config=require(_0x5ad9('0x11'));var licenseUtil=require(_0x5ad9('0x12'));var db=require(_0x5ad9('0x13'))['db'];function respondWithStatusCode(_0x3b2718,_0x262ce4){_0x262ce4=_0x262ce4||0xcc;return function(_0xc7e5e9){if(_0xc7e5e9){return _0x3b2718['sendStatus'](_0x262ce4);}return _0x3b2718['status'](_0x262ce4)['end']();};}function respondWithResult(_0x431358,_0x4519ad){_0x4519ad=_0x4519ad||0xc8;return function(_0x52cb37){if(_0x52cb37){return _0x431358[_0x5ad9('0x14')](_0x4519ad)[_0x5ad9('0x15')](_0x52cb37);}};}function respondWithFilteredResult(_0x3f16ef,_0x543743){return function(_0x3da125){if(_0x3da125){var _0x32b0bd=typeof _0x543743[_0x5ad9('0x16')]===_0x5ad9('0x17')&&typeof _0x543743[_0x5ad9('0x18')]===_0x5ad9('0x17');var _0x521cc3=_0x3da125[_0x5ad9('0x19')];var _0x54f392=_0x32b0bd?0x0:_0x543743[_0x5ad9('0x16')];var _0x28682f=_0x32b0bd?_0x3da125[_0x5ad9('0x19')]:_0x543743[_0x5ad9('0x16')]+_0x543743[_0x5ad9('0x18')];var _0x2ba5c0;if(_0x28682f>=_0x521cc3){_0x28682f=_0x521cc3;_0x2ba5c0=0xc8;}else{_0x2ba5c0=0xce;}_0x3f16ef[_0x5ad9('0x14')](_0x2ba5c0);return _0x3f16ef['set'](_0x5ad9('0x1a'),_0x54f392+'-'+_0x28682f+'/'+_0x521cc3)['json'](_0x3da125);}return null;};}function patchUpdates(_0x49363b){return function(_0x3356e5){try{jsonpatch['apply'](_0x3356e5,_0x49363b,!![]);}catch(_0xded166){return BPromise[_0x5ad9('0x1b')](_0xded166);}return _0x3356e5[_0x5ad9('0x1c')]();};}function saveUpdates(_0xebbe63,_0x1274f7){return function(_0x57b2ba){if(_0x57b2ba){return _0x57b2ba[_0x5ad9('0x1d')](_0xebbe63)['then'](function(_0x807b05){return _0x807b05;});}return null;};}function removeEntity(_0x5b816d,_0x570d3c){return function(_0x524249){if(_0x524249){return _0x524249[_0x5ad9('0x1e')]()[_0x5ad9('0x1f')](function(){_0x5b816d[_0x5ad9('0x14')](0xcc)[_0x5ad9('0x20')]();});}};}function handleEntityNotFound(_0x1252e6,_0x36da5f){return function(_0x11d919){if(!_0x11d919){_0x1252e6['sendStatus'](0x194);}return _0x11d919;};}function handleError(_0x54e9dd,_0xe6540f){_0xe6540f=_0xe6540f||0x1f4;return function(_0x4f3889){logger[_0x5ad9('0x21')](_0x4f3889['stack']);if(_0x4f3889[_0x5ad9('0x22')]){delete _0x4f3889['name'];}_0x54e9dd['status'](_0xe6540f)[_0x5ad9('0x23')](_0x4f3889);};}exports[_0x5ad9('0x24')]=function(_0x49b3df,_0x509d41){var _0x3942fa={},_0x129804={},_0x1b6faf={'count':0x0,'rows':[]};var _0x2ad078=_[_0x5ad9('0x25')](db[_0x5ad9('0x26')]['rawAttributes'],function(_0x132ec6){return{'name':_0x132ec6[_0x5ad9('0x27')],'type':_0x132ec6[_0x5ad9('0x28')][_0x5ad9('0x29')]};});_0x129804['model']=_['map'](_0x2ad078,_0x5ad9('0x22'));_0x129804[_0x5ad9('0x2a')]=_['keys'](_0x49b3df['query']);_0x129804['filters']=_[_0x5ad9('0x2b')](_0x129804[_0x5ad9('0x2c')],_0x129804['query']);_0x3942fa[_0x5ad9('0x2d')]=_[_0x5ad9('0x2b')](_0x129804[_0x5ad9('0x2c')],qs[_0x5ad9('0x2e')](_0x49b3df['query']['fields']));_0x3942fa[_0x5ad9('0x2d')]=_0x3942fa[_0x5ad9('0x2d')][_0x5ad9('0x2f')]?_0x3942fa[_0x5ad9('0x2d')]:_0x129804[_0x5ad9('0x2c')];if(!_0x49b3df['query'][_0x5ad9('0x30')](_0x5ad9('0x31'))){_0x3942fa[_0x5ad9('0x18')]=qs[_0x5ad9('0x18')](_0x49b3df[_0x5ad9('0x2a')][_0x5ad9('0x18')]);_0x3942fa['offset']=qs[_0x5ad9('0x16')](_0x49b3df[_0x5ad9('0x2a')]['offset']);}_0x3942fa[_0x5ad9('0x32')]=qs[_0x5ad9('0x33')](_0x49b3df['query'][_0x5ad9('0x33')]);_0x3942fa[_0x5ad9('0x34')]=qs[_0x5ad9('0x35')](_['pick'](_0x49b3df[_0x5ad9('0x2a')],_0x129804[_0x5ad9('0x35')]),_0x2ad078);if(_0x49b3df[_0x5ad9('0x2a')][_0x5ad9('0x36')]){_0x3942fa['where']=_[_0x5ad9('0x37')](_0x3942fa[_0x5ad9('0x34')],{'$or':_[_0x5ad9('0x25')](_0x2ad078,function(_0x143700){if(_0x143700[_0x5ad9('0x28')]!==_0x5ad9('0x38')){var _0x1f0c06={};_0x1f0c06[_0x143700[_0x5ad9('0x22')]]={'$like':'%'+_0x49b3df[_0x5ad9('0x2a')]['filter']+'%'};return _0x1f0c06;}})});}_0x3942fa=_[_0x5ad9('0x37')]({},_0x3942fa,_0x49b3df[_0x5ad9('0x39')]);var _0x41d733={'where':_0x3942fa[_0x5ad9('0x34')]};return db[_0x5ad9('0x26')]['count'](_0x41d733)[_0x5ad9('0x1f')](function(_0xbbfaa0){_0x1b6faf[_0x5ad9('0x19')]=_0xbbfaa0;if(_0x49b3df['query'][_0x5ad9('0x3a')]){_0x3942fa[_0x5ad9('0x3b')]=[{'all':!![]}];}return db[_0x5ad9('0x26')]['findAll'](_0x3942fa);})[_0x5ad9('0x1f')](function(_0x5cfe5b){_0x1b6faf['rows']=_0x5cfe5b;return _0x1b6faf;})[_0x5ad9('0x1f')](respondWithFilteredResult(_0x509d41,_0x3942fa))[_0x5ad9('0x3c')](handleError(_0x509d41,null));};exports[_0x5ad9('0x3d')]=function(_0x24f377,_0x5b8608){var _0x526fda={'raw':!![],'where':{'id':_0x24f377['params']['id']}},_0x552c39={};_0x552c39[_0x5ad9('0x2c')]=_['keys'](db[_0x5ad9('0x26')]['rawAttributes']);_0x552c39[_0x5ad9('0x2a')]=_[_0x5ad9('0x3e')](_0x24f377[_0x5ad9('0x2a')]);_0x552c39[_0x5ad9('0x35')]=_[_0x5ad9('0x2b')](_0x552c39[_0x5ad9('0x2c')],_0x552c39[_0x5ad9('0x2a')]);_0x526fda[_0x5ad9('0x2d')]=_[_0x5ad9('0x2b')](_0x552c39['model'],qs[_0x5ad9('0x2e')](_0x24f377[_0x5ad9('0x2a')][_0x5ad9('0x2e')]));_0x526fda[_0x5ad9('0x2d')]=_0x526fda[_0x5ad9('0x2d')]['length']?_0x526fda[_0x5ad9('0x2d')]:_0x552c39['model'];if(_0x24f377['query']['includeAll']){_0x526fda[_0x5ad9('0x3b')]=[{'all':!![]}];}_0x526fda=_[_0x5ad9('0x37')]({},_0x526fda,_0x24f377[_0x5ad9('0x39')]);return db['SquareDetailsReport'][_0x5ad9('0x3f')](_0x526fda)[_0x5ad9('0x1f')](handleEntityNotFound(_0x5b8608,null))[_0x5ad9('0x1f')](respondWithResult(_0x5b8608,null))[_0x5ad9('0x3c')](handleError(_0x5b8608,null));};exports['create']=function(_0x126086,_0x420677){return db[_0x5ad9('0x26')][_0x5ad9('0x40')](_0x126086['body'],{})[_0x5ad9('0x1f')](respondWithResult(_0x420677,0xc9))[_0x5ad9('0x3c')](handleError(_0x420677,null));};exports[_0x5ad9('0x1d')]=function(_0x1e03f,_0x479bbc){if(_0x1e03f[_0x5ad9('0x41')]['id']){delete _0x1e03f[_0x5ad9('0x41')]['id'];}return db['SquareDetailsReport'][_0x5ad9('0x3f')]({'where':{'id':_0x1e03f['params']['id']}})[_0x5ad9('0x1f')](handleEntityNotFound(_0x479bbc,null))[_0x5ad9('0x1f')](saveUpdates(_0x1e03f[_0x5ad9('0x41')],null))[_0x5ad9('0x1f')](respondWithResult(_0x479bbc,null))[_0x5ad9('0x3c')](handleError(_0x479bbc,null));};exports[_0x5ad9('0x1e')]=function(_0xa0f426,_0x2c3945){return db[_0x5ad9('0x26')][_0x5ad9('0x3f')]({'where':{'id':_0xa0f426[_0x5ad9('0x42')]['id']}})[_0x5ad9('0x1f')](handleEntityNotFound(_0x2c3945,null))[_0x5ad9('0x1f')](removeEntity(_0x2c3945,null))[_0x5ad9('0x3c')](handleError(_0x2c3945,null));};exports[_0x5ad9('0x43')]=function(_0x5a6cec,_0x17fc69){return db[_0x5ad9('0x26')][_0x5ad9('0x43')]()[_0x5ad9('0x1f')](respondWithResult(_0x17fc69,null))[_0x5ad9('0x3c')](handleError(_0x17fc69,null));};
\ No newline at end of file
index 561e8d1..ead0f9f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0xf96d=['../../config/logger','api','moment','bluebird','request-promise','rimraf','define','SquareDetailsReport','report_square_details','lodash'];(function(_0x303c30,_0x16edcb){var _0x43161b=function(_0x3330ff){while(--_0x3330ff){_0x303c30['push'](_0x303c30['shift']());}};_0x43161b(++_0x16edcb);}(_0xf96d,0x153));var _0xdf96=function(_0x2db65a,_0x4f28c5){_0x2db65a=_0x2db65a-0x0;var _0x3694cf=_0xf96d[_0x2db65a];return _0x3694cf;};'use strict';var _=require(_0xdf96('0x0'));var util=require('util');var logger=require(_0xdf96('0x1'))(_0xdf96('0x2'));var moment=require(_0xdf96('0x3'));var BPromise=require(_0xdf96('0x4'));var rp=require(_0xdf96('0x5'));var fs=require('fs');var path=require('path');var rimraf=require(_0xdf96('0x6'));var config=require('../../config/environment');var attributes=require('./squareReportDetail.attributes');module['exports']=function(_0x548cb9,_0x47f789){return _0x548cb9[_0xdf96('0x7')](_0xdf96('0x8'),attributes,{'tableName':_0xdf96('0x9'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 8d8f235..6ee08fb 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0x5a13=['CreateSquareDetailsReport','SquareDetailsReport','create','body','options','raw','lodash','util','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','then','SquareDetailsReport,\x20%s,\x20%s','request\x20sent','stringify','code','message','error','info','result','catch'];(function(_0x1d5716,_0x5699c5){var _0x451464=function(_0x177274){while(--_0x177274){_0x1d5716['push'](_0x1d5716['shift']());}};_0x451464(++_0x5699c5);}(_0x5a13,0x145));var _0x35a1=function(_0x52f836,_0x32080b){_0x52f836=_0x52f836-0x0;var _0x50e6f1=_0x5a13[_0x52f836];return _0x50e6f1;};'use strict';var _=require(_0x35a1('0x0'));var util=require(_0x35a1('0x1'));var moment=require('moment');var BPromise=require(_0x35a1('0x2'));var rs=require(_0x35a1('0x3'));var fs=require('fs');var Redis=require(_0x35a1('0x4'));var db=require(_0x35a1('0x5'))['db'];var utils=require(_0x35a1('0x6'));var logger=require(_0x35a1('0x7'))(_0x35a1('0x8'));var config=require(_0x35a1('0x9'));var jayson=require(_0x35a1('0xa'));var client=jayson[_0x35a1('0xb')][_0x35a1('0xc')]({'port':0x232a});function respondWithRpcPromise(_0x407b26,_0x10a34f,_0x3aa00e){return new BPromise(function(_0x58afca,_0x57d9fd){return client['request'](_0x407b26,_0x3aa00e)[_0x35a1('0xd')](function(_0x103ec8){logger['info'](_0x35a1('0xe'),_0x10a34f,_0x35a1('0xf'));logger['debug']('SquareDetailsReport,\x20%s,\x20%s,\x20%s',_0x10a34f,_0x35a1('0xf'),JSON[_0x35a1('0x10')](_0x103ec8));if(_0x103ec8['error']){if(_0x103ec8['error'][_0x35a1('0x11')]===0x1f4){logger['error'](_0x35a1('0xe'),_0x10a34f,_0x103ec8['error'][_0x35a1('0x12')]);return _0x57d9fd(_0x103ec8[_0x35a1('0x13')][_0x35a1('0x12')]);}logger[_0x35a1('0x13')](_0x35a1('0xe'),_0x10a34f,_0x103ec8[_0x35a1('0x13')][_0x35a1('0x12')]);return _0x58afca(_0x103ec8[_0x35a1('0x13')][_0x35a1('0x12')]);}else{logger[_0x35a1('0x14')](_0x35a1('0xe'),_0x10a34f,_0x35a1('0xf'));_0x58afca(_0x103ec8[_0x35a1('0x15')][_0x35a1('0x12')]);}})[_0x35a1('0x16')](function(_0x251d32){logger[_0x35a1('0x13')](_0x35a1('0xe'),_0x10a34f,_0x251d32);_0x57d9fd(_0x251d32);});});}exports[_0x35a1('0x17')]=function(_0x1de373){var _0x5e4317=this;return new Promise(function(_0x3b17dc,_0xbeb751){return db[_0x35a1('0x18')][_0x35a1('0x19')](_0x1de373[_0x35a1('0x1a')],{'raw':_0x1de373[_0x35a1('0x1b')]?_0x1de373[_0x35a1('0x1b')][_0x35a1('0x1c')]===undefined?!![]:![]:!![]})[_0x35a1('0xd')](function(_0x5929e5){logger[_0x35a1('0x14')](_0x35a1('0x17'),_0x1de373);logger['debug'](_0x35a1('0x17'),_0x1de373,JSON[_0x35a1('0x10')](_0x5929e5));_0x3b17dc(_0x5929e5);})['catch'](function(_0xc13bad){logger['error'](_0x35a1('0x17'),_0xc13bad[_0x35a1('0x12')],_0x1de373);_0xbeb751(_0x5e4317[_0x35a1('0x13')](0x1f4,_0xc13bad['message']));});});};
\ No newline at end of file
index 91e111d..1bef94d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0x158b=['./system.controller','get','isAuthenticated','index','/process/:pid/kill','exports','Router'];(function(_0x382c73,_0x199cab){var _0x1dd0bf=function(_0x358747){while(--_0x358747){_0x382c73['push'](_0x382c73['shift']());}};_0x1dd0bf(++_0x199cab);}(_0x158b,0x164));var _0xb158=function(_0x1b3b7c,_0x3fda07){_0x1b3b7c=_0x1b3b7c-0x0;var _0x5480b8=_0x158b[_0x1b3b7c];return _0x5480b8;};'use strict';var express=require('express');var router=express[_0xb158('0x0')]();var auth=require('../../components/auth/service');var controller=require(_0xb158('0x1'));router[_0xb158('0x2')]('/',auth[_0xb158('0x3')](),controller[_0xb158('0x4')]);router['get'](_0xb158('0x5'),auth[_0xb158('0x3')](),controller['killProcess']);module[_0xb158('0x6')]=router;
\ No newline at end of file
index 31ae52d..f4598a6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0xdac3=['index','getAllData','then','catch','json','killProcess','ps\x20-p\x20%s\x20-ww\x20-o\x20args','pid','length','indexOf','Process\x20with\x20pid\x20%s\x20not\x20found!','kill','params','SIGINT','format','Process\x20with\x20pid\x20%s\x20killed\x20correctly','systeminformation','child_process','api','bluebird','lodash','error','<%-\x20name\x20%>,\x20%s,\x20%s,\x20%s','name','status','send'];(function(_0x2dec70,_0x24aeab){var _0x3ea6af=function(_0x36b4cc){while(--_0x36b4cc){_0x2dec70['push'](_0x2dec70['shift']());}};_0x3ea6af(++_0x24aeab);}(_0xdac3,0x12e));var _0x3dac=function(_0x5dcff6,_0x4a8796){_0x5dcff6=_0x5dcff6-0x0;var _0x2699cd=_0xdac3[_0x5dcff6];return _0x2699cd;};'use strict';var info=require(_0x3dac('0x0'));var exec=require(_0x3dac('0x1'))['exec'];var logger=require('../../config/logger')(_0x3dac('0x2'));var util=require('util');var BPromise=require(_0x3dac('0x3'));var _=require(_0x3dac('0x4'));function handleError(_0x3fce9c,_0x24a01c,_0x1bb43b){_0x24a01c=_0x24a01c||0x1f4;return function(_0x3a09c1){logger[_0x3dac('0x5')](_0x3dac('0x6'),_0x1bb43b,_0x24a01c,util['inspect'](_0x3a09c1,{'showHidden':![],'depth':null}));delete _0x3a09c1[_0x3dac('0x7')];_0x3fce9c[_0x3dac('0x8')](_0x24a01c)[_0x3dac('0x9')](_0x3a09c1);};}exports[_0x3dac('0xa')]=function(_0x19cc28,_0x4409a2){return info[_0x3dac('0xb')]()[_0x3dac('0xc')](function(_0x3a6bf2){return _0x4409a2['status'](0xc8)['json'](_0x3a6bf2);})[_0x3dac('0xd')](function(_0xa16adf){return _0x4409a2[_0x3dac('0x8')](0x1f4)[_0x3dac('0xe')](_0xa16adf);});};exports[_0x3dac('0xf')]=function(_0x1335fd,_0x5b2fb6){var _0x363931=['components/import/cm'];return new BPromise(function(_0x14d1e5,_0x57f2e7){return exec(util['format'](_0x3dac('0x10'),_0x1335fd['params'][_0x3dac('0x11')]),function(_0x32fe20,_0x15d542,_0x5a1bfe){if(_0x32fe20){return _0x57f2e7(_0x32fe20);}return _0x14d1e5(_0x15d542);});})[_0x3dac('0xc')](function(_0x32e283){var _0x332a21=![];var _0x1c3df5=_0x32e283['split'](/\n/);for(var _0x1b0fdd=0x0,_0x340785=_0x363931[_0x3dac('0x12')];_0x1b0fdd<_0x340785,_0x332a21===![];_0x1b0fdd+=0x1){if(_0x32e283[_0x3dac('0x13')](_0x363931[_0x1b0fdd])>=0x0){_0x332a21=!![];}}if(!_0x332a21){throw new Error(util['format'](_0x3dac('0x14'),_0x1335fd['params'][_0x3dac('0x11')]));}process[_0x3dac('0x15')](_0x1335fd[_0x3dac('0x16')][_0x3dac('0x11')],_0x3dac('0x17'));return _0x5b2fb6[_0x3dac('0x8')](0xc8)['json']({'message':util[_0x3dac('0x18')](_0x3dac('0x19'),_0x1335fd['params']['pid'])});})['catch'](handleError(_0x5b2fb6,null,_0x3dac('0xf')));};
\ No newline at end of file
index a72f014..f2412ce 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0xdf78=['util','path','connect-timeout','Router','fs-extra','../../components/auth/service','../../config/environment','./tag.controller','get','isAuthenticated','/:id','post','create','put','delete','destroy','exports','multer'];(function(_0x5608a3,_0x5b33c5){var _0x1ed50a=function(_0x959171){while(--_0x959171){_0x5608a3['push'](_0x5608a3['shift']());}};_0x1ed50a(++_0x5b33c5);}(_0xdf78,0x143));var _0x8df7=function(_0xdb2e16,_0x1ead6d){_0xdb2e16=_0xdb2e16-0x0;var _0x5ea442=_0xdf78[_0xdb2e16];return _0x5ea442;};'use strict';var multer=require(_0x8df7('0x0'));var util=require(_0x8df7('0x1'));var path=require(_0x8df7('0x2'));var timeout=require(_0x8df7('0x3'));var express=require('express');var router=express[_0x8df7('0x4')]();var fs_extra=require(_0x8df7('0x5'));var auth=require(_0x8df7('0x6'));var interaction=require('../../components/interaction/service');var config=require(_0x8df7('0x7'));var controller=require(_0x8df7('0x8'));router[_0x8df7('0x9')]('/',auth[_0x8df7('0xa')](),controller['index']);router[_0x8df7('0x9')](_0x8df7('0xb'),auth[_0x8df7('0xa')](),controller['show']);router[_0x8df7('0xc')]('/',auth['isAuthenticated'](),controller[_0x8df7('0xd')]);router[_0x8df7('0xe')](_0x8df7('0xb'),auth[_0x8df7('0xa')](),controller['update']);router[_0x8df7('0xf')](_0x8df7('0xb'),auth['isAuthenticated'](),controller[_0x8df7('0x10')]);module[_0x8df7('0x11')]=router;
\ No newline at end of file
index 6f8972a..d7d78e0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0xa887=['#0091EA','sequelize','STRING','name'];(function(_0x7ba231,_0x50bd16){var _0x36d7c7=function(_0x39c481){while(--_0x39c481){_0x7ba231['push'](_0x7ba231['shift']());}};_0x36d7c7(++_0x50bd16);}(_0xa887,0x89));var _0x7a88=function(_0x432682,_0x253044){_0x432682=_0x432682-0x0;var _0x463d05=_0xa887[_0x432682];return _0x463d05;};'use strict';var Sequelize=require(_0x7a88('0x0'));module['exports']={'name':{'type':Sequelize[_0x7a88('0x1')],'unique':_0x7a88('0x2'),'allowNull':![],'validate':{'is':/[A-Za-z0-9._\\+*!-]+/,'notEmpty':!![]}},'color':{'type':Sequelize['STRING'],'defaultValue':_0x7a88('0x3')},'description':{'type':Sequelize[_0x7a88('0x1')]}};
\ No newline at end of file
index 0ebb84b..c49cd6d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0xd52d=['destroy','get','Tags','UserProfileResource','sendStatus','error','name','send','map','Tag','rawAttributes','fieldName','type','key','model','query','keys','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','pick','filter','merge','options','includeAll','findAll','rows','show','params','include','find','catch','create','body','role','user','userProfileId','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','rimraf','zip-dir','request-promise','mustache','util','path','sox','to-csv','ejs','fs-extra','lodash','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/environment','../../config/license/util','../../mysqldb','status','end','json','offset','limit','count','set','apply','reject','update','then'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0xd52d,0x1c7));var _0xdd52=function(_0x5e8feb,_0x880b83){_0x5e8feb=_0x5e8feb-0x0;var _0x17c66a=_0xd52d[_0x5e8feb];return _0x17c66a;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0xdd52('0x0'));var zipdir=require(_0xdd52('0x1'));var jsonpatch=require('fast-json-patch');var rp=require(_0xdd52('0x2'));var moment=require('moment');var BPromise=require('bluebird');var Mustache=require(_0xdd52('0x3'));var util=require(_0xdd52('0x4'));var path=require(_0xdd52('0x5'));var sox=require(_0xdd52('0x6'));var csv=require(_0xdd52('0x7'));var ejs=require(_0xdd52('0x8'));var fs=require('fs');var fs_extra=require(_0xdd52('0x9'));var _=require(_0xdd52('0xa'));var squel=require('squel');var crypto=require(_0xdd52('0xb'));var jsforce=require(_0xdd52('0xc'));var deskjs=require(_0xdd52('0xd'));var toCsv=require(_0xdd52('0x7'));var querystring=require(_0xdd52('0xe'));var Papa=require(_0xdd52('0xf'));var Redis=require(_0xdd52('0x10'));var authService=require(_0xdd52('0x11'));var qs=require(_0xdd52('0x12'));var as=require(_0xdd52('0x13'));var hardwareService=require(_0xdd52('0x14'));var logger=require(_0xdd52('0x15'))(_0xdd52('0x16'));var utils=require('../../config/utils');var config=require(_0xdd52('0x17'));var licenseUtil=require(_0xdd52('0x18'));var db=require(_0xdd52('0x19'))['db'];function respondWithStatusCode(_0x2e940f,_0x19283f){_0x19283f=_0x19283f||0xcc;return function(_0xee8463){if(_0xee8463){return _0x2e940f['sendStatus'](_0x19283f);}return _0x2e940f[_0xdd52('0x1a')](_0x19283f)[_0xdd52('0x1b')]();};}function respondWithResult(_0x2e5642,_0x55b823){_0x55b823=_0x55b823||0xc8;return function(_0x3f6585){if(_0x3f6585){return _0x2e5642[_0xdd52('0x1a')](_0x55b823)[_0xdd52('0x1c')](_0x3f6585);}};}function respondWithFilteredResult(_0x181876,_0x336797){return function(_0x12c6da){if(_0x12c6da){var _0x25a2b7=typeof _0x336797[_0xdd52('0x1d')]==='undefined'&&typeof _0x336797[_0xdd52('0x1e')]==='undefined';var _0x2822be=_0x12c6da[_0xdd52('0x1f')];var _0x4568dc=_0x25a2b7?0x0:_0x336797[_0xdd52('0x1d')];var _0x4dc017=_0x25a2b7?_0x12c6da[_0xdd52('0x1f')]:_0x336797[_0xdd52('0x1d')]+_0x336797[_0xdd52('0x1e')];var _0x13f667;if(_0x4dc017>=_0x2822be){_0x4dc017=_0x2822be;_0x13f667=0xc8;}else{_0x13f667=0xce;}_0x181876['status'](_0x13f667);return _0x181876[_0xdd52('0x20')]('Content-Range',_0x4568dc+'-'+_0x4dc017+'/'+_0x2822be)[_0xdd52('0x1c')](_0x12c6da);}return null;};}function patchUpdates(_0x56e1db){return function(_0x30c411){try{jsonpatch[_0xdd52('0x21')](_0x30c411,_0x56e1db,!![]);}catch(_0x5a671a){return BPromise[_0xdd52('0x22')](_0x5a671a);}return _0x30c411['save']();};}function saveUpdates(_0x38c153,_0x59a041){return function(_0x14cd54){if(_0x14cd54){return _0x14cd54[_0xdd52('0x23')](_0x38c153)[_0xdd52('0x24')](function(_0xfd321){return _0xfd321;});}return null;};}function removeEntity(_0x1e8dbb,_0x455e74){return function(_0x3ce226){if(_0x3ce226){return _0x3ce226[_0xdd52('0x25')]()['then'](function(){var _0x1cedeb=_0x3ce226[_0xdd52('0x26')]({'plain':!![]});var _0x592f15=_0xdd52('0x27');return db[_0xdd52('0x28')][_0xdd52('0x25')]({'where':{'type':_0x592f15,'resourceId':_0x1cedeb['id']}})[_0xdd52('0x24')](function(){return _0x3ce226;});})['then'](function(){_0x1e8dbb[_0xdd52('0x1a')](0xcc)[_0xdd52('0x1b')]();});}};}function handleEntityNotFound(_0x70ed7b,_0x54edf6){return function(_0x515e78){if(!_0x515e78){_0x70ed7b[_0xdd52('0x29')](0x194);}return _0x515e78;};}function handleError(_0x4e8290,_0x38b4ae){_0x38b4ae=_0x38b4ae||0x1f4;return function(_0x3f96bd){logger[_0xdd52('0x2a')](_0x3f96bd['stack']);if(_0x3f96bd['name']){delete _0x3f96bd[_0xdd52('0x2b')];}_0x4e8290[_0xdd52('0x1a')](_0x38b4ae)[_0xdd52('0x2c')](_0x3f96bd);};}exports['index']=function(_0x48548d,_0x9b6070){var _0x566658={},_0x29c940={},_0x271353={'count':0x0,'rows':[]};var _0x1e1b3e=_[_0xdd52('0x2d')](db[_0xdd52('0x2e')][_0xdd52('0x2f')],function(_0x219226){return{'name':_0x219226[_0xdd52('0x30')],'type':_0x219226[_0xdd52('0x31')][_0xdd52('0x32')]};});_0x29c940[_0xdd52('0x33')]=_[_0xdd52('0x2d')](_0x1e1b3e,_0xdd52('0x2b'));_0x29c940[_0xdd52('0x34')]=_[_0xdd52('0x35')](_0x48548d[_0xdd52('0x34')]);_0x29c940[_0xdd52('0x36')]=_[_0xdd52('0x37')](_0x29c940[_0xdd52('0x33')],_0x29c940[_0xdd52('0x34')]);_0x566658[_0xdd52('0x38')]=_['intersection'](_0x29c940[_0xdd52('0x33')],qs[_0xdd52('0x39')](_0x48548d['query']['fields']));_0x566658['attributes']=_0x566658[_0xdd52('0x38')][_0xdd52('0x3a')]?_0x566658[_0xdd52('0x38')]:_0x29c940[_0xdd52('0x33')];if(!_0x48548d[_0xdd52('0x34')][_0xdd52('0x3b')](_0xdd52('0x3c'))){_0x566658[_0xdd52('0x1e')]=qs[_0xdd52('0x1e')](_0x48548d[_0xdd52('0x34')]['limit']);_0x566658[_0xdd52('0x1d')]=qs[_0xdd52('0x1d')](_0x48548d[_0xdd52('0x34')][_0xdd52('0x1d')]);}_0x566658[_0xdd52('0x3d')]=qs[_0xdd52('0x3e')](_0x48548d[_0xdd52('0x34')][_0xdd52('0x3e')]);_0x566658[_0xdd52('0x3f')]=qs[_0xdd52('0x36')](_[_0xdd52('0x40')](_0x48548d[_0xdd52('0x34')],_0x29c940[_0xdd52('0x36')]),_0x1e1b3e);if(_0x48548d[_0xdd52('0x34')][_0xdd52('0x41')]){_0x566658[_0xdd52('0x3f')]=_[_0xdd52('0x42')](_0x566658[_0xdd52('0x3f')],{'$or':_[_0xdd52('0x2d')](_0x1e1b3e,function(_0x2c3f3c){if(_0x2c3f3c[_0xdd52('0x31')]!=='VIRTUAL'){var _0x4c2e3b={};_0x4c2e3b[_0x2c3f3c[_0xdd52('0x2b')]]={'$like':'%'+_0x48548d[_0xdd52('0x34')][_0xdd52('0x41')]+'%'};return _0x4c2e3b;}})});}_0x566658=_[_0xdd52('0x42')]({},_0x566658,_0x48548d[_0xdd52('0x43')]);var _0x136b01={'where':_0x566658[_0xdd52('0x3f')]};return db[_0xdd52('0x2e')][_0xdd52('0x1f')](_0x136b01)[_0xdd52('0x24')](function(_0x4efd40){_0x271353[_0xdd52('0x1f')]=_0x4efd40;if(_0x48548d[_0xdd52('0x34')][_0xdd52('0x44')]){_0x566658['include']=[{'all':!![]}];}return db[_0xdd52('0x2e')][_0xdd52('0x45')](_0x566658);})[_0xdd52('0x24')](function(_0x2968b5){_0x271353[_0xdd52('0x46')]=_0x2968b5;return _0x271353;})[_0xdd52('0x24')](respondWithFilteredResult(_0x9b6070,_0x566658))['catch'](handleError(_0x9b6070,null));};exports[_0xdd52('0x47')]=function(_0x3b79cf,_0x1cd269){var _0x4cac5c={'raw':!![],'where':{'id':_0x3b79cf[_0xdd52('0x48')]['id']}},_0x9fd63f={};_0x9fd63f['model']=_[_0xdd52('0x35')](db['Tag'][_0xdd52('0x2f')]);_0x9fd63f['query']=_['keys'](_0x3b79cf['query']);_0x9fd63f[_0xdd52('0x36')]=_[_0xdd52('0x37')](_0x9fd63f[_0xdd52('0x33')],_0x9fd63f[_0xdd52('0x34')]);_0x4cac5c[_0xdd52('0x38')]=_[_0xdd52('0x37')](_0x9fd63f['model'],qs[_0xdd52('0x39')](_0x3b79cf[_0xdd52('0x34')][_0xdd52('0x39')]));_0x4cac5c['attributes']=_0x4cac5c[_0xdd52('0x38')][_0xdd52('0x3a')]?_0x4cac5c[_0xdd52('0x38')]:_0x9fd63f[_0xdd52('0x33')];if(_0x3b79cf['query'][_0xdd52('0x44')]){_0x4cac5c[_0xdd52('0x49')]=[{'all':!![]}];}_0x4cac5c=_['merge']({},_0x4cac5c,_0x3b79cf[_0xdd52('0x43')]);return db[_0xdd52('0x2e')][_0xdd52('0x4a')](_0x4cac5c)['then'](handleEntityNotFound(_0x1cd269,null))['then'](respondWithResult(_0x1cd269,null))[_0xdd52('0x4b')](handleError(_0x1cd269,null));};exports[_0xdd52('0x4c')]=function(_0x1017d6,_0x5adb59){return db[_0xdd52('0x2e')]['create'](_0x1017d6[_0xdd52('0x4d')],{})[_0xdd52('0x24')](function(_0x29e730){var _0x4d0f37=_0x1017d6['user'][_0xdd52('0x26')]({'plain':!![]});if(!_0x4d0f37)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x4d0f37[_0xdd52('0x4e')]===_0xdd52('0x4f')){var _0x1ff2c3=_0x29e730[_0xdd52('0x26')]({'plain':!![]});var _0x2387ed=_0xdd52('0x27');return db['UserProfileSection'][_0xdd52('0x4a')]({'where':{'name':_0x2387ed,'userProfileId':_0x4d0f37[_0xdd52('0x50')]},'raw':!![]})[_0xdd52('0x24')](function(_0x411a69){if(_0x411a69&&_0x411a69['autoAssociation']===0x0){return db[_0xdd52('0x28')][_0xdd52('0x4c')]({'name':_0x1ff2c3[_0xdd52('0x2b')],'resourceId':_0x1ff2c3['id'],'type':_0x411a69['name'],'sectionId':_0x411a69['id']},{})[_0xdd52('0x24')](function(){return _0x29e730;});}else{return _0x29e730;}})[_0xdd52('0x4b')](function(_0x19bc88){logger[_0xdd52('0x2a')](_0xdd52('0x51'),_0x19bc88);throw _0x19bc88;});}return _0x29e730;})['then'](respondWithResult(_0x5adb59,0xc9))[_0xdd52('0x4b')](handleError(_0x5adb59,null));};exports[_0xdd52('0x23')]=function(_0x26133c,_0x41fcb6){if(_0x26133c[_0xdd52('0x4d')]['id']){delete _0x26133c['body']['id'];}return db[_0xdd52('0x2e')][_0xdd52('0x4a')]({'where':{'id':_0x26133c['params']['id']}})['then'](handleEntityNotFound(_0x41fcb6,null))[_0xdd52('0x24')](saveUpdates(_0x26133c['body'],null))[_0xdd52('0x24')](respondWithResult(_0x41fcb6,null))[_0xdd52('0x4b')](handleError(_0x41fcb6,null));};exports['destroy']=function(_0x1e6f5a,_0x5365ff){return db['Tag']['find']({'where':{'id':_0x1e6f5a[_0xdd52('0x48')]['id']}})[_0xdd52('0x24')](handleEntityNotFound(_0x5365ff,null))[_0xdd52('0x24')](removeEntity(_0x5365ff,null))[_0xdd52('0x4b')](handleError(_0x5365ff,null));};
\ No newline at end of file
index f3699b4..2fa0f94 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0xad7f=['Tag','lodash','util','../../config/logger','api','moment','bluebird','request-promise','path','rimraf','../../config/environment','exports'];(function(_0x2cea6d,_0x355ab5){var _0x270aef=function(_0x551e0c){while(--_0x551e0c){_0x2cea6d['push'](_0x2cea6d['shift']());}};_0x270aef(++_0x355ab5);}(_0xad7f,0x1a5));var _0xfad7=function(_0x1753e0,_0x32ccd4){_0x1753e0=_0x1753e0-0x0;var _0xc9f908=_0xad7f[_0x1753e0];return _0xc9f908;};'use strict';var _=require(_0xfad7('0x0'));var util=require(_0xfad7('0x1'));var logger=require(_0xfad7('0x2'))(_0xfad7('0x3'));var moment=require(_0xfad7('0x4'));var BPromise=require(_0xfad7('0x5'));var rp=require(_0xfad7('0x6'));var fs=require('fs');var path=require(_0xfad7('0x7'));var rimraf=require(_0xfad7('0x8'));var config=require(_0xfad7('0x9'));var attributes=require('./tag.attributes');module[_0xfad7('0xa')]=function(_0x5b067d,_0x57774f){return _0x5b067d['define'](_0xfad7('0xb'),attributes,{'tableName':'tools_tags','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index e43494a..240508e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0x202c=['message','catch','lodash','bluebird','randomstring','ioredis','../../config/utils','../../config/logger','rpc','../../config/environment','client','http','request','then','info','Tag,\x20%s,\x20%s','request\x20sent','debug','Tag,\x20%s,\x20%s,\x20%s','stringify','error','code'];(function(_0x1ae7b0,_0x2301a2){var _0x2d83dc=function(_0x32a63f){while(--_0x32a63f){_0x1ae7b0['push'](_0x1ae7b0['shift']());}};_0x2d83dc(++_0x2301a2);}(_0x202c,0x178));var _0xc202=function(_0x3a47bc,_0x42f74d){_0x3a47bc=_0x3a47bc-0x0;var _0x42b79b=_0x202c[_0x3a47bc];return _0x42b79b;};'use strict';var _=require(_0xc202('0x0'));var util=require('util');var moment=require('moment');var BPromise=require(_0xc202('0x1'));var rs=require(_0xc202('0x2'));var fs=require('fs');var Redis=require(_0xc202('0x3'));var db=require('../../mysqldb')['db'];var utils=require(_0xc202('0x4'));var logger=require(_0xc202('0x5'))(_0xc202('0x6'));var config=require(_0xc202('0x7'));var jayson=require('jayson/promise');var client=jayson[_0xc202('0x8')][_0xc202('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x59563a,_0xc2b3eb,_0x574549){return new BPromise(function(_0x872c1a,_0x5978fe){return client[_0xc202('0xa')](_0x59563a,_0x574549)[_0xc202('0xb')](function(_0x36fcb7){logger[_0xc202('0xc')](_0xc202('0xd'),_0xc2b3eb,_0xc202('0xe'));logger[_0xc202('0xf')](_0xc202('0x10'),_0xc2b3eb,_0xc202('0xe'),JSON[_0xc202('0x11')](_0x36fcb7));if(_0x36fcb7[_0xc202('0x12')]){if(_0x36fcb7['error'][_0xc202('0x13')]===0x1f4){logger[_0xc202('0x12')](_0xc202('0xd'),_0xc2b3eb,_0x36fcb7[_0xc202('0x12')][_0xc202('0x14')]);return _0x5978fe(_0x36fcb7[_0xc202('0x12')][_0xc202('0x14')]);}logger['error'](_0xc202('0xd'),_0xc2b3eb,_0x36fcb7[_0xc202('0x12')]['message']);return _0x872c1a(_0x36fcb7['error']['message']);}else{logger[_0xc202('0xc')]('Tag,\x20%s,\x20%s',_0xc2b3eb,_0xc202('0xe'));_0x872c1a(_0x36fcb7['result'][_0xc202('0x14')]);}})[_0xc202('0x15')](function(_0x3018c8){logger[_0xc202('0x12')](_0xc202('0xd'),_0xc2b3eb,_0x3018c8);_0x5978fe(_0x3018c8);});});}
\ No newline at end of file
index 7377a83..02ee863 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(_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
+var _0xa9e0=['Router','../../components/auth/service','../../components/interaction/service','../../config/environment','./team.controller','get','index','/:id','getQueues','/:id/users','isAuthenticated','getAgents','post','addQueues','addAgents','update','delete','removeAgents','multer','util','path'];(function(_0x46698a,_0x8de1e4){var _0x356db0=function(_0x19e83c){while(--_0x19e83c){_0x46698a['push'](_0x46698a['shift']());}};_0x356db0(++_0x8de1e4);}(_0xa9e0,0x123));var _0x0a9e=function(_0x1b349a,_0x22222c){_0x1b349a=_0x1b349a-0x0;var _0x5d1f7c=_0xa9e0[_0x1b349a];return _0x5d1f7c;};'use strict';var multer=require(_0x0a9e('0x0'));var util=require(_0x0a9e('0x1'));var path=require(_0x0a9e('0x2'));var timeout=require('connect-timeout');var express=require('express');var router=express[_0x0a9e('0x3')]();var fs_extra=require('fs-extra');var auth=require(_0x0a9e('0x4'));var interaction=require(_0x0a9e('0x5'));var config=require(_0x0a9e('0x6'));var controller=require(_0x0a9e('0x7'));router[_0x0a9e('0x8')]('/',auth['isAuthenticated'](),controller[_0x0a9e('0x9')]);router[_0x0a9e('0x8')](_0x0a9e('0xa'),auth['isAuthenticated'](),controller['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 74c3cb6..2ec86b7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0xbaf0=['name','exports','STRING'];(function(_0x18aaaf,_0x385db6){var _0x52d892=function(_0x1ac6da){while(--_0x1ac6da){_0x18aaaf['push'](_0x18aaaf['shift']());}};_0x52d892(++_0x385db6);}(_0xbaf0,0x12a));var _0x0baf=function(_0x5ddb1c,_0x5ea4df){_0x5ddb1c=_0x5ddb1c-0x0;var _0x354adc=_0xbaf0[_0x5ddb1c];return _0x354adc;};'use strict';var Sequelize=require('sequelize');module[_0x0baf('0x0')]={'name':{'type':Sequelize[_0x0baf('0x1')],'allowNull':![],'unique':_0x0baf('0x2')},'description':{'type':Sequelize[_0x0baf('0x1')]}};
\ No newline at end of file
index ef3ab71..3aff4f0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0x1ea7=['VoiceQueueId','UserVoiceQueue','SELECT\x20MailQueueId\x20FROM\x20team_has_mail_queues\x20WHERE\x20TeamId\x20=\x20','SmsQueueId','UserSmsQueue','SELECT\x20ChatQueueId\x20FROM\x20team_has_chat_queues\x20WHERE\x20TeamId\x20=\x20','ChatQueueId','UserChatQueue','SELECT\x20FaxQueueId\x20FROM\x20team_has_fax_queues\x20WHERE\x20TeamId\x20=\x20','FaxQueueId','SELECT\x20OpenchannelQueueId\x20FROM\x20team_has_openchannel_queues\x20WHERE\x20TeamId\x20=\x20','OpenchannelQueueId','WhatsappQueueId','UserWhatsappQueue','TeamVoicePrefix','UserVoicePrefix','getQueues','findOne','channel','isValidChannel','ValidationError','Unknown\x20channel','toLowerCase','Queue','get','capitalize','add','Queues','ids','removeQueues','remove','addAgents','isArray','Voice','Mail','Sms','Whatsapp','TeamVoiceQueue','penalty','findOrCreate','emit','Queue:save','QueueId','voicePause','isNil','interface','format','all','upsert','VoicePrefixId','removeAgents','Chat','Fax','Openchannel','UserVoiceQueueRt','getAgents','hasOwnProperty','eml-format','rimraf','zip-dir','moment','mustache','path','sox','to-csv','fs-extra','lodash','squel','crypto','querystring','papaparse','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/environment','../../config/license/util','../../mysqldb','defaults','redis','localhost','socket.io-emitter','register','sendStatus','status','end','offset','undefined','count','limit','set','json','apply','save','update','stack','name','index','map','Team','rawAttributes','fieldName','type','key','model','query','filters','intersection','attributes','fields','length','nolimit','order','sort','where','pick','filter','merge','VIRTUAL','options','then','include','findAll','rows','catch','show','params','keys','find','create','body','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','Teams','UserProfileSection','autoAssociation','UserProfileResource','error','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','destroy','sequelize','transaction','Sequelize','QueryTypes','SELECT','UserId','SELECT\x20VoiceQueueId\x20FROM\x20team_has_voice_queues\x20WHERE\x20TeamId\x20=\x20'];(function(_0x38bf47,_0x143031){var _0x5094d2=function(_0xf7ab50){while(--_0xf7ab50){_0x38bf47['push'](_0x38bf47['shift']());}};_0x5094d2(++_0x143031);}(_0x1ea7,0xcf));var _0x71ea=function(_0x3b14ad,_0x5e4401){_0x3b14ad=_0x3b14ad-0x0;var _0x392677=_0x1ea7[_0x3b14ad];return _0x392677;};'use strict';var emlformat=require(_0x71ea('0x0'));var rimraf=require(_0x71ea('0x1'));var zipdir=require(_0x71ea('0x2'));var jsonpatch=require('fast-json-patch');var rp=require('request-promise');var moment=require(_0x71ea('0x3'));var BPromise=require('bluebird');var Mustache=require(_0x71ea('0x4'));var util=require('util');var path=require(_0x71ea('0x5'));var sox=require(_0x71ea('0x6'));var csv=require(_0x71ea('0x7'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x71ea('0x8'));var _=require(_0x71ea('0x9'));var squel=require(_0x71ea('0xa'));var crypto=require(_0x71ea('0xb'));var jsforce=require('jsforce');var deskjs=require('desk.js');var toCsv=require(_0x71ea('0x7'));var querystring=require(_0x71ea('0xc'));var Papa=require(_0x71ea('0xd'));var Redis=require(_0x71ea('0xe'));var authService=require('../../components/auth/service');var qs=require(_0x71ea('0xf'));var as=require(_0x71ea('0x10'));var hardwareService=require(_0x71ea('0x11'));var logger=require(_0x71ea('0x12'))(_0x71ea('0x13'));var utils=require('../../config/utils');var config=require(_0x71ea('0x14'));var licenseUtil=require(_0x71ea('0x15'));var db=require(_0x71ea('0x16'))['db'];config['redis']=_[_0x71ea('0x17')](config[_0x71ea('0x18')],{'host':_0x71ea('0x19'),'port':0x18eb});var socket=require(_0x71ea('0x1a'))(new Redis(config['redis']));require('./team.socket')[_0x71ea('0x1b')](socket);function respondWithStatusCode(_0x3f5780,_0x4a6955){_0x4a6955=_0x4a6955||0xcc;return function(_0x351285){if(_0x351285){return _0x3f5780[_0x71ea('0x1c')](_0x4a6955);}return _0x3f5780[_0x71ea('0x1d')](_0x4a6955)[_0x71ea('0x1e')]();};}function respondWithResult(_0x2bcff5,_0x266dd0){_0x266dd0=_0x266dd0||0xc8;return function(_0x1139f4){if(_0x1139f4){return _0x2bcff5[_0x71ea('0x1d')](_0x266dd0)['json'](_0x1139f4);}};}function respondWithFilteredResult(_0xb68a0b,_0x11676c){return function(_0x14ce2a){if(_0x14ce2a){var _0x39cb60=typeof _0x11676c[_0x71ea('0x1f')]==='undefined'&&typeof _0x11676c['limit']===_0x71ea('0x20');var _0x13ea36=_0x14ce2a['count'];var _0x1556fd=_0x39cb60?0x0:_0x11676c[_0x71ea('0x1f')];var _0x5a20dd=_0x39cb60?_0x14ce2a[_0x71ea('0x21')]:_0x11676c[_0x71ea('0x1f')]+_0x11676c[_0x71ea('0x22')];var _0x3382d2;if(_0x5a20dd>=_0x13ea36){_0x5a20dd=_0x13ea36;_0x3382d2=0xc8;}else{_0x3382d2=0xce;}_0xb68a0b[_0x71ea('0x1d')](_0x3382d2);return _0xb68a0b[_0x71ea('0x23')]('Content-Range',_0x1556fd+'-'+_0x5a20dd+'/'+_0x13ea36)[_0x71ea('0x24')](_0x14ce2a);}return null;};}function patchUpdates(_0x57eecd){return function(_0x106282){try{jsonpatch[_0x71ea('0x25')](_0x106282,_0x57eecd,!![]);}catch(_0x57d545){return BPromise['reject'](_0x57d545);}return _0x106282[_0x71ea('0x26')]();};}function saveUpdates(_0x4a56e5,_0x3dd25c){return function(_0x3362f7){if(_0x3362f7){return _0x3362f7[_0x71ea('0x27')](_0x4a56e5)['then'](function(_0x2f0e1f){return _0x2f0e1f;});}return null;};}function handleEntityNotFound(_0x104a30,_0x53f662){return function(_0x1bfd07){if(!_0x1bfd07){_0x104a30['sendStatus'](0x194);}return _0x1bfd07;};}function handleError(_0x11a9a6,_0xaad63a){_0xaad63a=_0xaad63a||0x1f4;return function(_0x5b2241){logger['error'](_0x5b2241[_0x71ea('0x28')]);if(_0x5b2241[_0x71ea('0x29')]){delete _0x5b2241[_0x71ea('0x29')];}_0x11a9a6['status'](_0xaad63a)['send'](_0x5b2241);};}exports[_0x71ea('0x2a')]=function(_0x37c6a8,_0x15a220){var _0x324937={},_0x37cd08={},_0x5353a4={'count':0x0,'rows':[]};var _0x1f8489=_[_0x71ea('0x2b')](db[_0x71ea('0x2c')][_0x71ea('0x2d')],function(_0x591d18){return{'name':_0x591d18[_0x71ea('0x2e')],'type':_0x591d18[_0x71ea('0x2f')][_0x71ea('0x30')]};});_0x37cd08[_0x71ea('0x31')]=_['map'](_0x1f8489,'name');_0x37cd08[_0x71ea('0x32')]=_['keys'](_0x37c6a8[_0x71ea('0x32')]);_0x37cd08[_0x71ea('0x33')]=_[_0x71ea('0x34')](_0x37cd08[_0x71ea('0x31')],_0x37cd08[_0x71ea('0x32')]);_0x324937[_0x71ea('0x35')]=_[_0x71ea('0x34')](_0x37cd08[_0x71ea('0x31')],qs[_0x71ea('0x36')](_0x37c6a8[_0x71ea('0x32')][_0x71ea('0x36')]));_0x324937[_0x71ea('0x35')]=_0x324937[_0x71ea('0x35')][_0x71ea('0x37')]?_0x324937[_0x71ea('0x35')]:_0x37cd08[_0x71ea('0x31')];if(!_0x37c6a8[_0x71ea('0x32')]['hasOwnProperty'](_0x71ea('0x38'))){_0x324937[_0x71ea('0x22')]=qs['limit'](_0x37c6a8['query']['limit']);_0x324937['offset']=qs[_0x71ea('0x1f')](_0x37c6a8[_0x71ea('0x32')][_0x71ea('0x1f')]);}_0x324937[_0x71ea('0x39')]=qs[_0x71ea('0x3a')](_0x37c6a8[_0x71ea('0x32')][_0x71ea('0x3a')]);_0x324937[_0x71ea('0x3b')]=qs[_0x71ea('0x33')](_[_0x71ea('0x3c')](_0x37c6a8[_0x71ea('0x32')],_0x37cd08[_0x71ea('0x33')]),_0x1f8489);if(_0x37c6a8[_0x71ea('0x32')][_0x71ea('0x3d')]){_0x324937[_0x71ea('0x3b')]=_[_0x71ea('0x3e')](_0x324937[_0x71ea('0x3b')],{'$or':_[_0x71ea('0x2b')](_0x1f8489,function(_0x4c201c){if(_0x4c201c['type']!==_0x71ea('0x3f')){var _0x59d283={};_0x59d283[_0x4c201c['name']]={'$like':'%'+_0x37c6a8['query']['filter']+'%'};return _0x59d283;}})});}_0x324937=_[_0x71ea('0x3e')]({},_0x324937,_0x37c6a8[_0x71ea('0x40')]);var _0x207e90={'where':_0x324937['where']};return db[_0x71ea('0x2c')][_0x71ea('0x21')](_0x207e90)[_0x71ea('0x41')](function(_0x5cfc91){_0x5353a4[_0x71ea('0x21')]=_0x5cfc91;if(_0x37c6a8['query']['includeAll']){_0x324937[_0x71ea('0x42')]=[{'all':!![]}];}return db[_0x71ea('0x2c')][_0x71ea('0x43')](_0x324937);})['then'](function(_0x131a0d){_0x5353a4[_0x71ea('0x44')]=_0x131a0d;return _0x5353a4;})['then'](respondWithFilteredResult(_0x15a220,_0x324937))[_0x71ea('0x45')](handleError(_0x15a220,null));};exports[_0x71ea('0x46')]=function(_0x531f11,_0x184cc9){var _0x43c16d={'raw':![],'where':{'id':_0x531f11[_0x71ea('0x47')]['id']}},_0x3fbafb={};_0x3fbafb['model']=_[_0x71ea('0x48')](db[_0x71ea('0x2c')]['rawAttributes']);_0x3fbafb[_0x71ea('0x32')]=_['keys'](_0x531f11[_0x71ea('0x32')]);_0x3fbafb[_0x71ea('0x33')]=_[_0x71ea('0x34')](_0x3fbafb[_0x71ea('0x31')],_0x3fbafb[_0x71ea('0x32')]);_0x43c16d[_0x71ea('0x35')]=_[_0x71ea('0x34')](_0x3fbafb[_0x71ea('0x31')],qs[_0x71ea('0x36')](_0x531f11['query']['fields']));_0x43c16d[_0x71ea('0x35')]=_0x43c16d[_0x71ea('0x35')][_0x71ea('0x37')]?_0x43c16d[_0x71ea('0x35')]:_0x3fbafb[_0x71ea('0x31')];if(_0x531f11[_0x71ea('0x32')]['includeAll']){_0x43c16d[_0x71ea('0x42')]=[{'all':!![]}];}_0x43c16d=_[_0x71ea('0x3e')]({},_0x43c16d,_0x531f11[_0x71ea('0x40')]);return db[_0x71ea('0x2c')][_0x71ea('0x49')](_0x43c16d)['then'](handleEntityNotFound(_0x184cc9,null))[_0x71ea('0x41')](respondWithResult(_0x184cc9,null))['catch'](handleError(_0x184cc9,null));};exports[_0x71ea('0x4a')]=function(_0x1cefb8,_0x9bbcc3){return db[_0x71ea('0x2c')][_0x71ea('0x4a')](_0x1cefb8[_0x71ea('0x4b')],{})[_0x71ea('0x41')](function(_0x34a989){var _0x1040bf=_0x1cefb8[_0x71ea('0x4c')]['get']({'plain':!![]});if(!_0x1040bf)throw new Error(_0x71ea('0x4d'));if(_0x1040bf[_0x71ea('0x4e')]===_0x71ea('0x4c')){var _0x2c56e6=_0x34a989['get']({'plain':!![]});var _0x12f348=_0x71ea('0x4f');return db[_0x71ea('0x50')][_0x71ea('0x49')]({'where':{'name':_0x12f348,'userProfileId':_0x1040bf['userProfileId']},'raw':!![]})[_0x71ea('0x41')](function(_0x3be9c6){if(_0x3be9c6&&_0x3be9c6[_0x71ea('0x51')]===0x0){return db[_0x71ea('0x52')][_0x71ea('0x4a')]({'name':_0x2c56e6[_0x71ea('0x29')],'resourceId':_0x2c56e6['id'],'type':_0x3be9c6[_0x71ea('0x29')],'sectionId':_0x3be9c6['id']},{})['then'](function(){return _0x34a989;});}else{return _0x34a989;}})[_0x71ea('0x45')](function(_0x30b803){logger[_0x71ea('0x53')](_0x71ea('0x54'),_0x30b803);throw _0x30b803;});}return _0x34a989;})[_0x71ea('0x41')](respondWithResult(_0x9bbcc3,0xc9))[_0x71ea('0x45')](handleError(_0x9bbcc3,null));};exports[_0x71ea('0x27')]=function(_0x295c08,_0x23c34){if(_0x295c08[_0x71ea('0x4b')]['id']){delete _0x295c08['body']['id'];}return db['Team']['find']({'where':{'id':_0x295c08[_0x71ea('0x47')]['id']}})['then'](handleEntityNotFound(_0x23c34,null))[_0x71ea('0x41')](saveUpdates(_0x295c08[_0x71ea('0x4b')],null))['then'](respondWithResult(_0x23c34,null))['catch'](handleError(_0x23c34,null));};exports[_0x71ea('0x55')]=function(_0x3c92ae,_0x144096){var _0x5c0806=_0x3c92ae[_0x71ea('0x47')]['id'];var _0x4501f7=[];return db[_0x71ea('0x56')][_0x71ea('0x57')](function(_0x21a29b){var _0x1611b4='SELECT\x20UserId\x20FROM\x20user_has_teams\x20WHERE\x20TeamId\x20=\x20'+_0x5c0806;return db[_0x71ea('0x56')][_0x71ea('0x32')](_0x1611b4,{'type':db[_0x71ea('0x58')][_0x71ea('0x59')][_0x71ea('0x5a')],'raw':!![],'transaction':_0x21a29b})[_0x71ea('0x41')](function(_0x5b696d){_0x4501f7=_[_0x71ea('0x2b')](_0x5b696d,function(_0x150d1e){return Number(_0x150d1e[_0x71ea('0x5b')]);});})[_0x71ea('0x41')](function(){var _0x18564b=_0x71ea('0x5c')+_0x5c0806;return db['sequelize'][_0x71ea('0x32')](_0x18564b,{'type':db['Sequelize']['QueryTypes'][_0x71ea('0x5a')],'raw':!![],'transaction':_0x21a29b});})[_0x71ea('0x41')](function(_0x1a0901){var _0x96b848=_[_0x71ea('0x2b')](_0x1a0901,function(_0x56b5fc){return Number(_0x56b5fc[_0x71ea('0x5d')]);});return db[_0x71ea('0x5e')]['destroy']({'where':{'UserId':{'$in':_0x4501f7},'VoiceQueueId':{'$in':_0x96b848}},'transaction':_0x21a29b});})['then'](function(){var _0x2095d3=_0x71ea('0x5f')+_0x5c0806;return db[_0x71ea('0x56')]['query'](_0x2095d3,{'type':db[_0x71ea('0x58')]['QueryTypes'][_0x71ea('0x5a')],'raw':!![],'transaction':_0x21a29b});})[_0x71ea('0x41')](function(_0x262f1e){var _0x485e9c=_[_0x71ea('0x2b')](_0x262f1e,function(_0x5e9653){return Number(_0x5e9653['MailQueueId']);});return db['UserMailQueue'][_0x71ea('0x55')]({'where':{'UserId':{'$in':_0x4501f7},'MailQueueId':{'$in':_0x485e9c}},'transaction':_0x21a29b});})[_0x71ea('0x41')](function(){var _0x4f603e='SELECT\x20SmsQueueId\x20FROM\x20team_has_sms_queues\x20WHERE\x20TeamId\x20=\x20'+_0x5c0806;return db[_0x71ea('0x56')]['query'](_0x4f603e,{'type':db['Sequelize'][_0x71ea('0x59')]['SELECT'],'raw':!![],'transaction':_0x21a29b});})[_0x71ea('0x41')](function(_0x18d7f9){var _0x4fda19=_['map'](_0x18d7f9,function(_0x44dd93){return Number(_0x44dd93[_0x71ea('0x60')]);});return db[_0x71ea('0x61')][_0x71ea('0x55')]({'where':{'UserId':{'$in':_0x4501f7},'SmsQueueId':{'$in':_0x4fda19}},'transaction':_0x21a29b});})[_0x71ea('0x41')](function(){var _0x42572c=_0x71ea('0x62')+_0x5c0806;return db['sequelize'][_0x71ea('0x32')](_0x42572c,{'type':db[_0x71ea('0x58')][_0x71ea('0x59')][_0x71ea('0x5a')],'raw':!![],'transaction':_0x21a29b});})[_0x71ea('0x41')](function(_0x31a773){var _0x220c35=_[_0x71ea('0x2b')](_0x31a773,function(_0x2c7711){return Number(_0x2c7711[_0x71ea('0x63')]);});return db[_0x71ea('0x64')][_0x71ea('0x55')]({'where':{'UserId':{'$in':_0x4501f7},'ChatQueueId':{'$in':_0x220c35}},'transaction':_0x21a29b});})['then'](function(){var _0xf45ee2=_0x71ea('0x65')+_0x5c0806;return db[_0x71ea('0x56')][_0x71ea('0x32')](_0xf45ee2,{'type':db[_0x71ea('0x58')][_0x71ea('0x59')]['SELECT'],'raw':!![],'transaction':_0x21a29b});})['then'](function(_0x347eea){var _0x162e52=_[_0x71ea('0x2b')](_0x347eea,function(_0xfb4ce4){return Number(_0xfb4ce4[_0x71ea('0x66')]);});return db['UserFaxQueue'][_0x71ea('0x55')]({'where':{'UserId':{'$in':_0x4501f7},'FaxQueueId':{'$in':_0x162e52}},'transaction':_0x21a29b});})[_0x71ea('0x41')](function(){var _0x1a1220=_0x71ea('0x67')+_0x5c0806;return db['sequelize'][_0x71ea('0x32')](_0x1a1220,{'type':db[_0x71ea('0x58')][_0x71ea('0x59')][_0x71ea('0x5a')],'raw':!![],'transaction':_0x21a29b});})[_0x71ea('0x41')](function(_0x2e77ca){var _0x55bc58=_[_0x71ea('0x2b')](_0x2e77ca,function(_0x5afffa){return Number(_0x5afffa[_0x71ea('0x68')]);});return db['UserOpenchannelQueue'][_0x71ea('0x55')]({'where':{'UserId':{'$in':_0x4501f7},'OpenchannelQueueId':{'$in':_0x55bc58}},'transaction':_0x21a29b});})[_0x71ea('0x41')](function(){var _0x217fe7='SELECT\x20WhatsappQueueId\x20FROM\x20team_has_whatsapp_queues\x20WHERE\x20TeamId\x20=\x20'+_0x5c0806;return db[_0x71ea('0x56')][_0x71ea('0x32')](_0x217fe7,{'type':db[_0x71ea('0x58')][_0x71ea('0x59')][_0x71ea('0x5a')],'raw':!![],'transaction':_0x21a29b});})[_0x71ea('0x41')](function(_0x29ff9a){var _0x23d38c=_[_0x71ea('0x2b')](_0x29ff9a,function(_0x252846){return Number(_0x252846[_0x71ea('0x69')]);});return db[_0x71ea('0x6a')][_0x71ea('0x55')]({'where':{'UserId':{'$in':_0x4501f7},'WhatsappQueueId':{'$in':_0x23d38c}},'transaction':_0x21a29b});})['then'](function(){return db[_0x71ea('0x6b')]['find']({'where':{'TeamId':_0x5c0806}});})[_0x71ea('0x41')](function(_0x540fe5){if(_0x540fe5===null){return;}return db[_0x71ea('0x6c')][_0x71ea('0x55')]({'where':{'UserId':{'$in':_0x4501f7},'VoicePrefixId':_0x540fe5['VoicePrefixId']},'transaction':_0x21a29b});})['then'](function(){return db[_0x71ea('0x2c')]['destroy']({'where':{'id':_0x5c0806},'cascade':!![],'transaction':_0x21a29b});})['then'](function(_0x3ad383){if(_0x3ad383===0x0){_0x144096['sendStatus'](0x194);}else{return db['UserProfileResource'][_0x71ea('0x55')]({'where':{'type':_0x71ea('0x4f'),'resourceId':_0x5c0806},'cascade':!![],'transaction':_0x21a29b})[_0x71ea('0x41')](function(){_0x144096['status'](0xcc)[_0x71ea('0x1e')]();});}})[_0x71ea('0x45')](function(_0x5e3fbe){_0x144096[_0x71ea('0x1d')](0x1f4)['send'](_0x5e3fbe);});});};exports[_0x71ea('0x6d')]=function(_0x8ba054,_0x38666f,_0x38951a){return db[_0x71ea('0x2c')][_0x71ea('0x6e')]({'where':{'id':_0x8ba054[_0x71ea('0x47')]['id']}})[_0x71ea('0x41')](handleEntityNotFound(_0x38666f,null))[_0x71ea('0x41')](function(_0x5c43ff){if(!_0x8ba054[_0x71ea('0x32')][_0x71ea('0x6f')]||!utils[_0x71ea('0x70')](_0x8ba054[_0x71ea('0x32')][_0x71ea('0x6f')])){throw new db[(_0x71ea('0x58'))][(_0x71ea('0x71'))](_0x71ea('0x72'));}var _0x36119e={};var _0x4ab911={};_0x4ab911[_0x71ea('0x31')]=_[_0x71ea('0x48')](db[_['capitalize'](_0x8ba054[_0x71ea('0x32')][_0x71ea('0x6f')][_0x71ea('0x73')]())+_0x71ea('0x74')][_0x71ea('0x2d')]);_0x4ab911[_0x71ea('0x32')]=_[_0x71ea('0x48')](_0x8ba054[_0x71ea('0x32')]);_0x4ab911[_0x71ea('0x33')]=_['intersection'](_0x4ab911['model'],_0x4ab911['query']);_0x36119e[_0x71ea('0x35')]=_['intersection'](_0x4ab911[_0x71ea('0x31')],qs[_0x71ea('0x36')](_0x8ba054[_0x71ea('0x32')][_0x71ea('0x36')]));_0x36119e['attributes']=_0x36119e[_0x71ea('0x35')]['length']?_0x36119e[_0x71ea('0x35')]:_0x4ab911['model'];_0x36119e['limit']=qs[_0x71ea('0x22')](_0x8ba054[_0x71ea('0x32')][_0x71ea('0x22')]);_0x36119e['offset']=qs[_0x71ea('0x1f')](_0x8ba054['query'][_0x71ea('0x1f')]);_0x36119e['order']=qs[_0x71ea('0x3a')](_0x8ba054['query']['sort']);_0x36119e[_0x71ea('0x3b')]=qs[_0x71ea('0x33')](_[_0x71ea('0x3c')](_0x8ba054['query'],_0x4ab911[_0x71ea('0x33')]));_0x36119e=_['merge']({},_0x36119e,_0x8ba054['options']);return _0x5c43ff[_0x71ea('0x75')+_[_0x71ea('0x76')](_0x8ba054['query']['channel'][_0x71ea('0x73')]())+'Queues'](_0x36119e);})[_0x71ea('0x41')](respondWithResult(_0x38666f,null))[_0x71ea('0x45')](handleError(_0x38666f,null));};exports['addQueues']=function(_0x41721c,_0x447984,_0x3fbf32){return db[_0x71ea('0x2c')][_0x71ea('0x6e')]({'where':{'id':_0x41721c[_0x71ea('0x47')]['id']}})[_0x71ea('0x41')](function(_0x252277){if(_0x252277){if(!_0x41721c['body'][_0x71ea('0x6f')]||!utils[_0x71ea('0x70')](_0x41721c['body'][_0x71ea('0x6f')])){throw new db[(_0x71ea('0x58'))][(_0x71ea('0x71'))]('Unknown\x20channel');}return _0x252277[_0x71ea('0x77')+_[_0x71ea('0x76')](_0x41721c[_0x71ea('0x4b')][_0x71ea('0x6f')][_0x71ea('0x73')]())+_0x71ea('0x78')](_0x41721c['body'][_0x71ea('0x79')]);}return null;})[_0x71ea('0x41')](handleEntityNotFound(_0x447984,null))[_0x71ea('0x41')](respondWithStatusCode(_0x447984,null))[_0x71ea('0x45')](handleError(_0x447984,null));};exports[_0x71ea('0x7a')]=function(_0x5015c1,_0x1802dd,_0x327fbc){return db[_0x71ea('0x2c')][_0x71ea('0x6e')]({'where':{'id':_0x5015c1[_0x71ea('0x47')]['id']}})['then'](function(_0x421d44){if(_0x421d44){if(!_0x5015c1[_0x71ea('0x32')][_0x71ea('0x6f')]||!utils['isValidChannel'](_0x5015c1[_0x71ea('0x32')][_0x71ea('0x6f')])){throw new db[(_0x71ea('0x58'))][(_0x71ea('0x71'))]('Unknown\x20channel');}return _0x421d44[_0x71ea('0x7b')+_[_0x71ea('0x76')](_0x5015c1[_0x71ea('0x32')][_0x71ea('0x6f')]['toLowerCase']())+_0x71ea('0x78')](_0x5015c1['query'][_0x71ea('0x79')]);}return null;})[_0x71ea('0x41')](handleEntityNotFound(_0x1802dd,null))['then'](respondWithStatusCode(_0x1802dd,null))[_0x71ea('0x45')](handleError(_0x1802dd,null));};exports[_0x71ea('0x7c')]=function(_0x4be957,_0x47c04c){var _0x2a2ced=_[_0x71ea('0x7d')](_0x4be957[_0x71ea('0x4b')][_0x71ea('0x79')])?_0x4be957[_0x71ea('0x4b')][_0x71ea('0x79')]:[_0x4be957['body']['ids']];var _0x3560f0=_0x4be957[_0x71ea('0x47')]['id'];return db[_0x71ea('0x2c')]['find']({'where':{'id':_0x3560f0}})[_0x71ea('0x41')](handleEntityNotFound(_0x47c04c,null))[_0x71ea('0x41')](function(_0x414162){if(_0x414162){var _0x51cdda=[_0x71ea('0x7e'),'Chat',_0x71ea('0x7f'),_0x71ea('0x80'),'Fax','Openchannel',_0x71ea('0x81')];return db['sequelize'][_0x71ea('0x57')](function(_0x545ed0){var _0x59888b=_[_0x71ea('0x2b')](_0x51cdda,function(_0xf25572){var _0x567dde={'attributes':['id',_0x71ea('0x29')]};if(_0xf25572===_0x71ea('0x7e')){_0x567dde['through']={'attributes':['penalty']};}return _0x414162['get'+_0xf25572+_0x71ea('0x78')](_0x567dde)[_0x71ea('0x41')](function(_0x12a063){var _0x40dd4a=_[_0x71ea('0x2b')](_0x12a063,function(_0x3a88b1){var _0x4ab4dd=_[_0x71ea('0x2b')](_0x2a2ced,function(_0x8bd480){var _0x321f30={'where':{'UserId':_0x8bd480,[_0xf25572+'QueueId']:_0x3a88b1['id']},'transaction':_0x545ed0};if(_0xf25572==='Voice'){_0x321f30['defaults']={'penalty':_0x3a88b1[_0x71ea('0x82')][_0x71ea('0x83')]};}return db['User'+_0xf25572+_0x71ea('0x74')][_0x71ea('0x84')](_0x321f30)[_0x71ea('0x41')](function(){socket[_0x71ea('0x85')](_0x71ea('0x4c')+_0xf25572+_0x71ea('0x86'),{'UserId':_0x8bd480,[_0xf25572+_0x71ea('0x87')]:_0x3a88b1['id']});if(_0xf25572!=='Voice'){return;}return db['User'][_0x71ea('0x43')]({'where':{'id':_0x2a2ced,'online':0x1},'attributes':['id','name','online',_0x71ea('0x88'),'interface'],'raw':!![]})[_0x71ea('0x41')](function(_0xb485d9){var _0x37af41=_['map'](_0xb485d9,function(_0x12d16a){return db['UserVoiceQueueRt']['upsert']({'membername':_0x12d16a[_0x71ea('0x29')],'UserId':_0x12d16a['id'],'queue_name':_0x3a88b1[_0x71ea('0x29')],'VoiceQueueId':_0x3a88b1['id'],'interface':_[_0x71ea('0x89')](_0x12d16a[_0x71ea('0x8a')])?util[_0x71ea('0x8b')]('SIP/%s',_0x12d16a[_0x71ea('0x29')]):_0x12d16a[_0x71ea('0x8a')],'paused':_0x12d16a['voicePause']||![],'penalty':_0x3a88b1[_0x71ea('0x82')][_0x71ea('0x83')]},{'transaction':_0x545ed0});});return Promise['all'](_0x37af41);});});});return Promise[_0x71ea('0x8c')](_0x4ab4dd);});return Promise[_0x71ea('0x8c')](_0x40dd4a);})[_0x71ea('0x41')](function(){return db['TeamVoicePrefix']['findOne']({'where':{'teamId':_0x3560f0}})[_0x71ea('0x41')](function(_0x13c86e){if(_0x13c86e){var _0x4fa593=_[_0x71ea('0x2b')](_0x2a2ced,function(_0x179957){db[_0x71ea('0x6c')][_0x71ea('0x8d')]({'UserId':_0x179957,'VoicePrefixId':_0x13c86e[_0x71ea('0x8e')]});});return Promise[_0x71ea('0x8c')](_0x4fa593);}});});});return Promise[_0x71ea('0x8c')](_0x59888b)['then'](function(){return _0x414162[_0x71ea('0x7c')](_0x2a2ced,{'transaction':_0x545ed0})['spread'](function(_0x4c5996){return _0x4c5996;});});});}})[_0x71ea('0x41')](respondWithResult(_0x47c04c,null))['catch'](handleError(_0x47c04c,null));};exports[_0x71ea('0x8f')]=function(_0x15fcbb,_0x24859a){var _0x4e1568=_[_0x71ea('0x7d')](_0x15fcbb[_0x71ea('0x32')]['ids'])?_0x15fcbb[_0x71ea('0x32')][_0x71ea('0x79')]:[_0x15fcbb[_0x71ea('0x32')][_0x71ea('0x79')]];var _0x3d85e7=_0x15fcbb[_0x71ea('0x47')]['id'];return db[_0x71ea('0x2c')][_0x71ea('0x49')]({'where':{'id':_0x3d85e7}})[_0x71ea('0x41')](handleEntityNotFound(_0x24859a,null))[_0x71ea('0x41')](function(_0x4c9e7e){if(_0x4c9e7e){var _0x3cf91b=[_0x71ea('0x7e'),_0x71ea('0x90'),_0x71ea('0x7f'),_0x71ea('0x80'),_0x71ea('0x91'),_0x71ea('0x92'),_0x71ea('0x81')];return db[_0x71ea('0x56')][_0x71ea('0x57')](function(_0x5adfd0){var _0x5eee51=_[_0x71ea('0x2b')](_0x3cf91b,function(_0x2c0417){var _0xcb9dc7={'attributes':['id',_0x71ea('0x29')]};return _0x4c9e7e[_0x71ea('0x75')+_0x2c0417+_0x71ea('0x78')](_0xcb9dc7)[_0x71ea('0x41')](function(_0x226868){var _0x188c7b=_[_0x71ea('0x2b')](_0x226868,function(_0xae756d){return _0xae756d[_0x71ea('0x8f')](_0x4e1568,{'transaction':_0x5adfd0})[_0x71ea('0x41')](function(){var _0x485db1=_[_0x71ea('0x2b')](_0x4e1568,function(_0xf691e7){socket['emit'](_0x71ea('0x4c')+_0x2c0417+'Queue:remove',{'UserId':Number(_0xf691e7),[_0x2c0417+_0x71ea('0x87')]:_0xae756d['id']});if(_0x2c0417!==_0x71ea('0x7e')){return;}return db[_0x71ea('0x93')][_0x71ea('0x55')]({'where':{'VoiceQueueId':_0xae756d['id'],'UserId':_0xf691e7},'transaction':_0x5adfd0});});return Promise[_0x71ea('0x8c')](_0x485db1);});});return Promise[_0x71ea('0x8c')](_0x188c7b);});});return Promise['all'](_0x5eee51)[_0x71ea('0x41')](function(){return _0x4c9e7e['removeAgents'](_0x4e1568,{'transaction':_0x5adfd0});})[_0x71ea('0x41')](function(){return db[_0x71ea('0x6b')][_0x71ea('0x6e')]({'where':{'teamId':_0x3d85e7}})['then'](function(_0x4daf16){if(_0x4daf16){var _0x2eb28a=_[_0x71ea('0x2b')](_0x4e1568,function(_0x20519d){db[_0x71ea('0x6c')][_0x71ea('0x55')]({'where':{'UserId':_0x20519d,'VoicePrefixId':_0x4daf16['VoicePrefixId']}});});return Promise[_0x71ea('0x8c')](_0x2eb28a);}});});});}})[_0x71ea('0x41')](respondWithStatusCode(_0x24859a,null))[_0x71ea('0x45')](handleError(_0x24859a,null));};exports['getAgents']=function(_0x4b198f,_0x1713c7,_0x16dc83){var _0x449dac={};var _0x1a7994={};var _0x1da957;var _0x70042d;return db['Team']['findOne']({'where':{'id':_0x4b198f[_0x71ea('0x47')]['id']}})[_0x71ea('0x41')](handleEntityNotFound(_0x1713c7,null))[_0x71ea('0x41')](function(_0x5dbfc8){if(_0x5dbfc8){_0x1da957=_0x5dbfc8;_0x1a7994[_0x71ea('0x31')]=_[_0x71ea('0x48')](db['User'][_0x71ea('0x2d')]);_0x1a7994[_0x71ea('0x32')]=_['keys'](_0x4b198f[_0x71ea('0x32')]);_0x1a7994[_0x71ea('0x33')]=_[_0x71ea('0x34')](_0x1a7994[_0x71ea('0x31')],_0x1a7994[_0x71ea('0x32')]);_0x449dac[_0x71ea('0x35')]=_[_0x71ea('0x34')](_0x1a7994[_0x71ea('0x31')],qs[_0x71ea('0x36')](_0x4b198f[_0x71ea('0x32')][_0x71ea('0x36')]));_0x449dac[_0x71ea('0x35')]=_0x449dac[_0x71ea('0x35')][_0x71ea('0x37')]?_0x449dac[_0x71ea('0x35')]:_0x1a7994[_0x71ea('0x31')];_0x449dac[_0x71ea('0x39')]=qs[_0x71ea('0x3a')](_0x4b198f[_0x71ea('0x32')][_0x71ea('0x3a')]);_0x449dac['where']=qs[_0x71ea('0x33')](_['pick'](_0x4b198f[_0x71ea('0x32')],_0x1a7994[_0x71ea('0x33')]));if(_0x4b198f[_0x71ea('0x32')][_0x71ea('0x3d')]){_0x449dac[_0x71ea('0x3b')]=_['merge'](_0x449dac['where'],{'$or':_[_0x71ea('0x2b')](_0x449dac['attributes'],function(_0x3a5abe){var _0x3d8721={};_0x3d8721[_0x3a5abe]={'$like':'%'+_0x4b198f[_0x71ea('0x32')][_0x71ea('0x3d')]+'%'};return _0x3d8721;})});}_0x449dac=_[_0x71ea('0x3e')]({},_0x449dac,_0x4b198f[_0x71ea('0x40')]);return _0x1da957[_0x71ea('0x94')](_0x449dac);}})[_0x71ea('0x41')](function(_0x32af22){if(_0x32af22){_0x70042d=_0x32af22[_0x71ea('0x37')];if(!_0x4b198f[_0x71ea('0x32')][_0x71ea('0x95')](_0x71ea('0x38'))){_0x449dac[_0x71ea('0x22')]=qs[_0x71ea('0x22')](_0x4b198f[_0x71ea('0x32')][_0x71ea('0x22')]);_0x449dac['offset']=qs[_0x71ea('0x1f')](_0x4b198f[_0x71ea('0x32')]['offset']);}return _0x1da957[_0x71ea('0x94')](_0x449dac);}})['then'](function(_0x17d102){if(_0x17d102){return _0x17d102?{'count':_0x70042d,'rows':_0x17d102}:null;}})[_0x71ea('0x41')](respondWithResult(_0x1713c7,null))[_0x71ea('0x45')](handleError(_0x1713c7,null));};
\ No newline at end of file
index 00bdaec..00b7c8f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0xf75b=['../../mysqldb','setMaxListeners','save','update','remove','emit','hasOwnProperty'];(function(_0x3b8bb3,_0x29136d){var _0x420eb8=function(_0x36379c){while(--_0x36379c){_0x3b8bb3['push'](_0x3b8bb3['shift']());}};_0x420eb8(++_0x29136d);}(_0xf75b,0xf5));var _0xbf75=function(_0x5a019b,_0x38372b){_0x5a019b=_0x5a019b-0x0;var _0x463c25=_0xf75b[_0x5a019b];return _0x463c25;};'use strict';var EventEmitter=require('events');var Team=require(_0xbf75('0x0'))['db']['Team'];var TeamEvents=new EventEmitter();TeamEvents[_0xbf75('0x1')](0x0);var events={'afterCreate':_0xbf75('0x2'),'afterUpdate':_0xbf75('0x3'),'afterDestroy':_0xbf75('0x4')};function emitEvent(_0x3e8503){return function(_0x56c3c1,_0x39cf6b,_0x553d16){TeamEvents[_0xbf75('0x5')](_0x3e8503+':'+_0x56c3c1['id'],_0x56c3c1);TeamEvents[_0xbf75('0x5')](_0x3e8503,_0x56c3c1);_0x553d16(null);};}for(var e in events){if(events[_0xbf75('0x6')](e)){var event=events[e];Team['hook'](e,emitEvent(event));}}module['exports']=TeamEvents;
\ No newline at end of file
index 2e1abca..29ad40a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0x0d1c=['Chat','Fax','Mail','Openchannel','Voice','resolve','then','all','lodash','./team.attributes','get','Queues','map','setDataValue','channel','catch','exports','define','Team','teams'];(function(_0x4a5930,_0x4146b1){var _0x46a994=function(_0x4568bf){while(--_0x4568bf){_0x4a5930['push'](_0x4a5930['shift']());}};_0x46a994(++_0x4146b1);}(_0x0d1c,0x6c));var _0xc0d1=function(_0x55ac62,_0x52db07){_0x55ac62=_0x55ac62-0x0;var _0x192471=_0x0d1c[_0x55ac62];return _0x192471;};'use strict';var _=require(_0xc0d1('0x0'));var attributes=require(_0xc0d1('0x1'));function getQueuesByChannel(_0xc027db,_0x4a825f){var _0x4fc09b=_0xc0d1('0x2')+_0x4a825f+_0xc0d1('0x3');return _0xc027db[_0x4fc09b]()['then'](function(_0x100cd0){return _[_0xc0d1('0x4')](_0x100cd0,function(_0x4aa58c){_0x4aa58c[_0xc0d1('0x5')](_0xc0d1('0x6'),_0x4a825f);return _0x4aa58c;});})[_0xc0d1('0x7')](function(_0x4d9ba6){throw _0x4d9ba6;});}module[_0xc0d1('0x8')]=function(_0x453bcf){return _0x453bcf[_0xc0d1('0x9')](_0xc0d1('0xa'),attributes,{'tableName':_0xc0d1('0xb'),'paranoid':![],'indexes':[],'timestamps':!![],'instanceMethods':{'getAssociatedQueues':function(){var _0x1a94e5=this;var _0x3dd736=[_0xc0d1('0xc'),_0xc0d1('0xd'),_0xc0d1('0xe'),_0xc0d1('0xf'),'Sms',_0xc0d1('0x10'),'Whatsapp'];return Promise[_0xc0d1('0x11')]()[_0xc0d1('0x12')](function(){var _0x3a5674=_[_0xc0d1('0x4')](_0x3dd736,function(_0x31481a){return getQueuesByChannel(_0x1a94e5,_0x31481a);});return Promise[_0xc0d1('0x13')](_0x3a5674);})[_0xc0d1('0x7')](function(_0x197564){throw _0x197564;});}}});};
\ No newline at end of file
index 5ddde92..1c83043 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0x0773=['bluebird','randomstring','../../mysqldb','../../config/logger','rpc','../../config/environment','jayson/promise','client','redis','defaults','localhost','socket.io-emitter','./team.socket','register','request','then','info','Team,\x20%s,\x20%s','request\x20sent','debug','Team,\x20%s,\x20%s,\x20%s','stringify','error','code','message','catch','util'];(function(_0x17aeae,_0x4d6a1a){var _0x15b37b=function(_0x4863b8){while(--_0x4863b8){_0x17aeae['push'](_0x17aeae['shift']());}};_0x15b37b(++_0x4d6a1a);}(_0x0773,0xa1));var _0x3077=function(_0x1ae0d6,_0x317781){_0x1ae0d6=_0x1ae0d6-0x0;var _0x56263f=_0x0773[_0x1ae0d6];return _0x56263f;};'use strict';var _=require('lodash');var util=require(_0x3077('0x0'));var moment=require('moment');var BPromise=require(_0x3077('0x1'));var rs=require(_0x3077('0x2'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x3077('0x3'))['db'];var utils=require('../../config/utils');var logger=require(_0x3077('0x4'))(_0x3077('0x5'));var config=require(_0x3077('0x6'));var jayson=require(_0x3077('0x7'));var client=jayson[_0x3077('0x8')]['http']({'port':0x232a});config[_0x3077('0x9')]=_[_0x3077('0xa')](config[_0x3077('0x9')],{'host':_0x3077('0xb'),'port':0x18eb});var socket=require(_0x3077('0xc'))(new Redis(config['redis']));require(_0x3077('0xd'))[_0x3077('0xe')](socket);function respondWithRpcPromise(_0x59e45e,_0x35ab25,_0x826343){return new BPromise(function(_0x2b6f7f,_0x9e11f8){return client[_0x3077('0xf')](_0x59e45e,_0x826343)[_0x3077('0x10')](function(_0x299b39){logger[_0x3077('0x11')](_0x3077('0x12'),_0x35ab25,_0x3077('0x13'));logger[_0x3077('0x14')](_0x3077('0x15'),_0x35ab25,_0x3077('0x13'),JSON[_0x3077('0x16')](_0x299b39));if(_0x299b39['error']){if(_0x299b39[_0x3077('0x17')][_0x3077('0x18')]===0x1f4){logger[_0x3077('0x17')]('Team,\x20%s,\x20%s',_0x35ab25,_0x299b39[_0x3077('0x17')][_0x3077('0x19')]);return _0x9e11f8(_0x299b39[_0x3077('0x17')][_0x3077('0x19')]);}logger['error'](_0x3077('0x12'),_0x35ab25,_0x299b39[_0x3077('0x17')]['message']);return _0x2b6f7f(_0x299b39[_0x3077('0x17')][_0x3077('0x19')]);}else{logger[_0x3077('0x11')](_0x3077('0x12'),_0x35ab25,_0x3077('0x13'));_0x2b6f7f(_0x299b39['result'][_0x3077('0x19')]);}})[_0x3077('0x1a')](function(_0xffacee){logger[_0x3077('0x17')](_0x3077('0x12'),_0x35ab25,_0xffacee);_0x9e11f8(_0xffacee);});});}
\ No newline at end of file
index 3e102c1..ab22aca 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0xefdd=['emit','register','team:','./team.events','save','update'];(function(_0x2ab0ff,_0x26ef02){var _0x1167d1=function(_0x4e6197){while(--_0x4e6197){_0x2ab0ff['push'](_0x2ab0ff['shift']());}};_0x1167d1(++_0x26ef02);}(_0xefdd,0x75));var _0xdefd=function(_0x16323d,_0x312512){_0x16323d=_0x16323d-0x0;var _0x23e4ed=_0xefdd[_0x16323d];return _0x23e4ed;};'use strict';var TeamEvents=require(_0xdefd('0x0'));var events=[_0xdefd('0x1'),'remove',_0xdefd('0x2')];function createListener(_0x38a2ba,_0xea411b){return function(_0x27b6c5){_0xea411b[_0xdefd('0x3')](_0x38a2ba,_0x27b6c5);};}function removeListener(_0x53b08d,_0x585428){return function(){TeamEvents['removeListener'](_0x53b08d,_0x585428);};}exports[_0xdefd('0x4')]=function(_0x27025e){for(var _0x34eb0a=0x0,_0x525fc9=events['length'];_0x34eb0a<_0x525fc9;_0x34eb0a++){var _0x1d2823=events[_0x34eb0a];var _0x522843=createListener(_0xdefd('0x5')+_0x1d2823,_0x27025e);TeamEvents['on'](_0x1d2823,_0x522843);}};
\ No newline at end of file
index 4ccd3fe..c268ccf 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0x2f90=['INTEGER','exports'];(function(_0x2d982d,_0x121028){var _0x4f36b0=function(_0x11f3a9){while(--_0x11f3a9){_0x2d982d['push'](_0x2d982d['shift']());}};_0x4f36b0(++_0x121028);}(_0x2f90,0x1e9));var _0x02f9=function(_0x17096a,_0x1e0570){_0x17096a=_0x17096a-0x0;var _0x19c462=_0x2f90[_0x17096a];return _0x19c462;};'use strict';var Sequelize=require('sequelize');module[_0x02f9('0x0')]={'TeamId':{'type':Sequelize[_0x02f9('0x1')]},'VoicePrefixId':{'type':Sequelize[_0x02f9('0x1')]}};
\ No newline at end of file
index c871b1e..e0848aa 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0xfbac=['../../config/logger','api','moment','bluebird','request-promise','../../config/environment','./teamVoicePrefix.attributes','TeamVoicePrefix','util'];(function(_0x531a94,_0xbf2864){var _0x4ad3e1=function(_0x5e98b4){while(--_0x5e98b4){_0x531a94['push'](_0x531a94['shift']());}};_0x4ad3e1(++_0xbf2864);}(_0xfbac,0x167));var _0xcfba=function(_0x20fba6,_0x12b882){_0x20fba6=_0x20fba6-0x0;var _0x42f5f8=_0xfbac[_0x20fba6];return _0x42f5f8;};'use strict';var _=require('lodash');var util=require(_0xcfba('0x0'));var logger=require(_0xcfba('0x1'))(_0xcfba('0x2'));var moment=require(_0xcfba('0x3'));var BPromise=require(_0xcfba('0x4'));var rp=require(_0xcfba('0x5'));var fs=require('fs');var path=require('path');var rimraf=require('rimraf');var config=require(_0xcfba('0x6'));var attributes=require(_0xcfba('0x7'));module['exports']=function(_0x4eec09,_0x3bb3af){return _0x4eec09['define'](_0xcfba('0x8'),attributes,{'tableName':'team_has_voice_prefixes','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index be964ca..b2f779b 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(_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
+var _0xd8b0=['Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','multer','util'];(function(_0x5a58e1,_0x5cf833){var _0x1061d4=function(_0x54071d){while(--_0x54071d){_0x5a58e1['push'](_0x5a58e1['shift']());}};_0x1061d4(++_0x5cf833);}(_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 1ef236a..9efa785 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0xbe6f=['exports','sequelize'];(function(_0x36ee51,_0x1eba8d){var _0x3e90ce=function(_0x163937){while(--_0x163937){_0x36ee51['push'](_0x36ee51['shift']());}};_0x3e90ce(++_0x1eba8d);}(_0xbe6f,0x105));var _0xfbe6=function(_0x351532,_0x9f2fca){_0x351532=_0x351532-0x0;var _0x110d1b=_0xbe6f[_0x351532];return _0x110d1b;};'use strict';var Sequelize=require(_0xfbe6('0x0'));module[_0xfbe6('0x1')]={'penalty':{'type':Sequelize['INTEGER'],'defaultValue':0x0}};
\ No newline at end of file
index 337a610..324c41e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0xcee8=['team_has_voice_queues','lodash','util','../../config/logger','api','moment','bluebird','path','rimraf','../../config/environment','./teamVoiceQueue.attributes'];(function(_0x4b784d,_0x5efb2f){var _0x2cdeaf=function(_0x106242){while(--_0x106242){_0x4b784d['push'](_0x4b784d['shift']());}};_0x2cdeaf(++_0x5efb2f);}(_0xcee8,0xb1));var _0x8cee=function(_0x1d6824,_0x118363){_0x1d6824=_0x1d6824-0x0;var _0xe7e08d=_0xcee8[_0x1d6824];return _0xe7e08d;};'use strict';var _=require(_0x8cee('0x0'));var util=require(_0x8cee('0x1'));var logger=require(_0x8cee('0x2'))(_0x8cee('0x3'));var moment=require(_0x8cee('0x4'));var BPromise=require(_0x8cee('0x5'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x8cee('0x6'));var rimraf=require(_0x8cee('0x7'));var config=require(_0x8cee('0x8'));var attributes=require(_0x8cee('0x9'));module['exports']=function(_0x295471,_0xfea4e3){return _0x295471['define']('TeamVoiceQueue',attributes,{'tableName':_0x8cee('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index c539008..f2dbbe1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0x5580=['bluebird','randomstring','../../mysqldb','../../config/logger','rpc','../../config/environment','jayson/promise','client','then','TeamVoiceQueue,\x20%s,\x20%s','request\x20sent','TeamVoiceQueue,\x20%s,\x20%s,\x20%s','stringify','error','code','message','info','catch','lodash','moment'];(function(_0x1c5037,_0x52e4d0){var _0x1e6ead=function(_0x24ed26){while(--_0x24ed26){_0x1c5037['push'](_0x1c5037['shift']());}};_0x1e6ead(++_0x52e4d0);}(_0x5580,0x102));var _0x0558=function(_0x488604,_0xc6871f){_0x488604=_0x488604-0x0;var _0x147d42=_0x5580[_0x488604];return _0x147d42;};'use strict';var _=require(_0x0558('0x0'));var util=require('util');var moment=require(_0x0558('0x1'));var BPromise=require(_0x0558('0x2'));var rs=require(_0x0558('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x0558('0x4'))['db'];var utils=require('../../config/utils');var logger=require(_0x0558('0x5'))(_0x0558('0x6'));var config=require(_0x0558('0x7'));var jayson=require(_0x0558('0x8'));var client=jayson[_0x0558('0x9')]['http']({'port':0x232a});function respondWithRpcPromise(_0x482fa9,_0x522b61,_0x52fb7b){return new BPromise(function(_0x459621,_0x5b8630){return client['request'](_0x482fa9,_0x52fb7b)[_0x0558('0xa')](function(_0x3a9957){logger['info'](_0x0558('0xb'),_0x522b61,_0x0558('0xc'));logger['debug'](_0x0558('0xd'),_0x522b61,'request\x20sent',JSON[_0x0558('0xe')](_0x3a9957));if(_0x3a9957[_0x0558('0xf')]){if(_0x3a9957[_0x0558('0xf')][_0x0558('0x10')]===0x1f4){logger[_0x0558('0xf')](_0x0558('0xb'),_0x522b61,_0x3a9957[_0x0558('0xf')][_0x0558('0x11')]);return _0x5b8630(_0x3a9957[_0x0558('0xf')]['message']);}logger['error'](_0x0558('0xb'),_0x522b61,_0x3a9957['error'][_0x0558('0x11')]);return _0x459621(_0x3a9957['error'][_0x0558('0x11')]);}else{logger[_0x0558('0x12')](_0x0558('0xb'),_0x522b61,_0x0558('0xc'));_0x459621(_0x3a9957['result'][_0x0558('0x11')]);}})[_0x0558('0x13')](function(_0x5be68c){logger[_0x0558('0xf')](_0x0558('0xb'),_0x522b61,_0x5be68c);_0x5b8630(_0x5be68c);});});}
\ No newline at end of file
index ad89e85..fc7efa6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0x5ea2=['get','/:id','show','post','create','update','delete','destroy','exports','multer','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../config/environment','isAuthenticated','index'];(function(_0x21a4b1,_0x59cfbd){var _0x1f54b1=function(_0x23df55){while(--_0x23df55){_0x21a4b1['push'](_0x21a4b1['shift']());}};_0x1f54b1(++_0x59cfbd);}(_0x5ea2,0x99));var _0x25ea=function(_0x4967c3,_0x2e7eec){_0x4967c3=_0x4967c3-0x0;var _0x109104=_0x5ea2[_0x4967c3];return _0x109104;};'use strict';var multer=require(_0x25ea('0x0'));var util=require('util');var path=require('path');var timeout=require(_0x25ea('0x1'));var express=require(_0x25ea('0x2'));var router=express[_0x25ea('0x3')]();var fs_extra=require(_0x25ea('0x4'));var auth=require(_0x25ea('0x5'));var interaction=require('../../components/interaction/service');var config=require(_0x25ea('0x6'));var controller=require('./template.controller');router['get']('/',auth[_0x25ea('0x7')](),controller[_0x25ea('0x8')]);router[_0x25ea('0x9')](_0x25ea('0xa'),auth[_0x25ea('0x7')](),controller[_0x25ea('0xb')]);router[_0x25ea('0xc')]('/',auth[_0x25ea('0x7')](),controller[_0x25ea('0xd')]);router['put'](_0x25ea('0xa'),auth[_0x25ea('0x7')](),controller[_0x25ea('0xe')]);router[_0x25ea('0xf')]('/:id',auth[_0x25ea('0x7')](),controller[_0x25ea('0x10')]);module[_0x25ea('0x11')]=router;
\ No newline at end of file
index 0014a45..4f4791e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0x5084=['sequelize','exports','STRING','TEXT'];(function(_0x5e792d,_0x3406fd){var _0x2b63d9=function(_0x3768ab){while(--_0x3768ab){_0x5e792d['push'](_0x5e792d['shift']());}};_0x2b63d9(++_0x3406fd);}(_0x5084,0xfc));var _0x4508=function(_0x4dde5c,_0xac81d6){_0x4dde5c=_0x4dde5c-0x0;var _0x3fb977=_0x5084[_0x4dde5c];return _0x3fb977;};'use strict';var Sequelize=require(_0x4508('0x0'));module[_0x4508('0x1')]={'name':{'type':Sequelize[_0x4508('0x2')]},'description':{'type':Sequelize[_0x4508('0x2')]},'html':{'type':Sequelize[_0x4508('0x3')]}};
\ No newline at end of file
index 8b43eb9..8e0b14d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0x94a9=['map','Template','rawAttributes','fieldName','type','key','query','keys','filters','intersection','model','attributes','fields','length','hasOwnProperty','nolimit','sort','where','pick','filter','VIRTUAL','merge','options','includeAll','include','findAll','rows','catch','show','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','params','eml-format','rimraf','zip-dir','request-promise','bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','lodash','crypto','jsforce','desk.js','papaparse','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/environment','../../config/license/util','../../mysqldb','status','end','json','offset','undefined','limit','count','set','Content-Range','apply','reject','update','then','destroy','get','Templates','UserProfileResource','sendStatus','error','stack','name','index'];(function(_0x1d2b94,_0x261dc2){var _0x1acc9f=function(_0x58a332){while(--_0x58a332){_0x1d2b94['push'](_0x1d2b94['shift']());}};_0x1acc9f(++_0x261dc2);}(_0x94a9,0x7e));var _0x994a=function(_0x5d50b9,_0x24c390){_0x5d50b9=_0x5d50b9-0x0;var _0x2ef861=_0x94a9[_0x5d50b9];return _0x2ef861;};'use strict';var emlformat=require(_0x994a('0x0'));var rimraf=require(_0x994a('0x1'));var zipdir=require(_0x994a('0x2'));var jsonpatch=require('fast-json-patch');var rp=require(_0x994a('0x3'));var moment=require('moment');var BPromise=require(_0x994a('0x4'));var Mustache=require(_0x994a('0x5'));var util=require(_0x994a('0x6'));var path=require(_0x994a('0x7'));var sox=require(_0x994a('0x8'));var csv=require(_0x994a('0x9'));var ejs=require(_0x994a('0xa'));var fs=require('fs');var fs_extra=require(_0x994a('0xb'));var _=require(_0x994a('0xc'));var squel=require('squel');var crypto=require(_0x994a('0xd'));var jsforce=require(_0x994a('0xe'));var deskjs=require(_0x994a('0xf'));var toCsv=require(_0x994a('0x9'));var querystring=require('querystring');var Papa=require(_0x994a('0x10'));var Redis=require('ioredis');var authService=require(_0x994a('0x11'));var qs=require(_0x994a('0x12'));var as=require(_0x994a('0x13'));var hardwareService=require(_0x994a('0x14'));var logger=require('../../config/logger')('api');var utils=require('../../config/utils');var config=require(_0x994a('0x15'));var licenseUtil=require(_0x994a('0x16'));var db=require(_0x994a('0x17'))['db'];function respondWithStatusCode(_0x1c9845,_0x44852a){_0x44852a=_0x44852a||0xcc;return function(_0x31f264){if(_0x31f264){return _0x1c9845['sendStatus'](_0x44852a);}return _0x1c9845[_0x994a('0x18')](_0x44852a)[_0x994a('0x19')]();};}function respondWithResult(_0xadbf5d,_0x8cbeb3){_0x8cbeb3=_0x8cbeb3||0xc8;return function(_0x2ba7cd){if(_0x2ba7cd){return _0xadbf5d['status'](_0x8cbeb3)[_0x994a('0x1a')](_0x2ba7cd);}};}function respondWithFilteredResult(_0x8103eb,_0x3ccccf){return function(_0x2c314f){if(_0x2c314f){var _0x2357f3=typeof _0x3ccccf[_0x994a('0x1b')]===_0x994a('0x1c')&&typeof _0x3ccccf[_0x994a('0x1d')]===_0x994a('0x1c');var _0x377e69=_0x2c314f[_0x994a('0x1e')];var _0x5aa9ee=_0x2357f3?0x0:_0x3ccccf[_0x994a('0x1b')];var _0x178ed9=_0x2357f3?_0x2c314f[_0x994a('0x1e')]:_0x3ccccf[_0x994a('0x1b')]+_0x3ccccf[_0x994a('0x1d')];var _0x4e7448;if(_0x178ed9>=_0x377e69){_0x178ed9=_0x377e69;_0x4e7448=0xc8;}else{_0x4e7448=0xce;}_0x8103eb[_0x994a('0x18')](_0x4e7448);return _0x8103eb[_0x994a('0x1f')](_0x994a('0x20'),_0x5aa9ee+'-'+_0x178ed9+'/'+_0x377e69)[_0x994a('0x1a')](_0x2c314f);}return null;};}function patchUpdates(_0x196c03){return function(_0x3b889a){try{jsonpatch[_0x994a('0x21')](_0x3b889a,_0x196c03,!![]);}catch(_0x4017b9){return BPromise[_0x994a('0x22')](_0x4017b9);}return _0x3b889a['save']();};}function saveUpdates(_0xf6a342,_0x10b863){return function(_0x35d6dc){if(_0x35d6dc){return _0x35d6dc[_0x994a('0x23')](_0xf6a342)[_0x994a('0x24')](function(_0x487b4f){return _0x487b4f;});}return null;};}function removeEntity(_0x1dac5f,_0x251d8d){return function(_0x12977b){if(_0x12977b){return _0x12977b[_0x994a('0x25')]()['then'](function(){var _0x5d3fe8=_0x12977b[_0x994a('0x26')]({'plain':!![]});var _0x2c4808=_0x994a('0x27');return db[_0x994a('0x28')][_0x994a('0x25')]({'where':{'type':_0x2c4808,'resourceId':_0x5d3fe8['id']}})['then'](function(){return _0x12977b;});})['then'](function(){_0x1dac5f['status'](0xcc)[_0x994a('0x19')]();});}};}function handleEntityNotFound(_0x2e42e5,_0x5f1f93){return function(_0x367656){if(!_0x367656){_0x2e42e5[_0x994a('0x29')](0x194);}return _0x367656;};}function handleError(_0x2226af,_0xdcb25){_0xdcb25=_0xdcb25||0x1f4;return function(_0x1691f2){logger[_0x994a('0x2a')](_0x1691f2[_0x994a('0x2b')]);if(_0x1691f2[_0x994a('0x2c')]){delete _0x1691f2[_0x994a('0x2c')];}_0x2226af['status'](_0xdcb25)['send'](_0x1691f2);};}exports[_0x994a('0x2d')]=function(_0xb0f7f8,_0x57e2a8){var _0x4f149c={},_0x32bbd1={},_0x36b6b8={'count':0x0,'rows':[]};var _0x386523=_[_0x994a('0x2e')](db[_0x994a('0x2f')][_0x994a('0x30')],function(_0x1cf14c){return{'name':_0x1cf14c[_0x994a('0x31')],'type':_0x1cf14c[_0x994a('0x32')][_0x994a('0x33')]};});_0x32bbd1['model']=_[_0x994a('0x2e')](_0x386523,'name');_0x32bbd1[_0x994a('0x34')]=_[_0x994a('0x35')](_0xb0f7f8[_0x994a('0x34')]);_0x32bbd1[_0x994a('0x36')]=_[_0x994a('0x37')](_0x32bbd1[_0x994a('0x38')],_0x32bbd1[_0x994a('0x34')]);_0x4f149c[_0x994a('0x39')]=_[_0x994a('0x37')](_0x32bbd1[_0x994a('0x38')],qs[_0x994a('0x3a')](_0xb0f7f8[_0x994a('0x34')][_0x994a('0x3a')]));_0x4f149c['attributes']=_0x4f149c[_0x994a('0x39')][_0x994a('0x3b')]?_0x4f149c[_0x994a('0x39')]:_0x32bbd1['model'];if(!_0xb0f7f8[_0x994a('0x34')][_0x994a('0x3c')](_0x994a('0x3d'))){_0x4f149c[_0x994a('0x1d')]=qs[_0x994a('0x1d')](_0xb0f7f8['query']['limit']);_0x4f149c[_0x994a('0x1b')]=qs[_0x994a('0x1b')](_0xb0f7f8[_0x994a('0x34')][_0x994a('0x1b')]);}_0x4f149c['order']=qs[_0x994a('0x3e')](_0xb0f7f8[_0x994a('0x34')][_0x994a('0x3e')]);_0x4f149c[_0x994a('0x3f')]=qs[_0x994a('0x36')](_[_0x994a('0x40')](_0xb0f7f8[_0x994a('0x34')],_0x32bbd1[_0x994a('0x36')]),_0x386523);if(_0xb0f7f8[_0x994a('0x34')][_0x994a('0x41')]){_0x4f149c[_0x994a('0x3f')]=_['merge'](_0x4f149c[_0x994a('0x3f')],{'$or':_[_0x994a('0x2e')](_0x386523,function(_0x99e98b){if(_0x99e98b['type']!==_0x994a('0x42')){var _0x123d33={};_0x123d33[_0x99e98b['name']]={'$like':'%'+_0xb0f7f8['query'][_0x994a('0x41')]+'%'};return _0x123d33;}})});}_0x4f149c=_[_0x994a('0x43')]({},_0x4f149c,_0xb0f7f8[_0x994a('0x44')]);var _0x22fb74={'where':_0x4f149c[_0x994a('0x3f')]};return db[_0x994a('0x2f')][_0x994a('0x1e')](_0x22fb74)[_0x994a('0x24')](function(_0x5c6a80){_0x36b6b8[_0x994a('0x1e')]=_0x5c6a80;if(_0xb0f7f8[_0x994a('0x34')][_0x994a('0x45')]){_0x4f149c[_0x994a('0x46')]=[{'all':!![]}];}return db['Template'][_0x994a('0x47')](_0x4f149c);})[_0x994a('0x24')](function(_0x8a5bc5){_0x36b6b8[_0x994a('0x48')]=_0x8a5bc5;return _0x36b6b8;})[_0x994a('0x24')](respondWithFilteredResult(_0x57e2a8,_0x4f149c))[_0x994a('0x49')](handleError(_0x57e2a8,null));};exports[_0x994a('0x4a')]=function(_0x3ff259,_0x2cbc8a){var _0x4005f0={'raw':!![],'where':{'id':_0x3ff259['params']['id']}},_0x5e2774={};_0x5e2774['model']=_[_0x994a('0x35')](db['Template']['rawAttributes']);_0x5e2774[_0x994a('0x34')]=_[_0x994a('0x35')](_0x3ff259[_0x994a('0x34')]);_0x5e2774['filters']=_['intersection'](_0x5e2774[_0x994a('0x38')],_0x5e2774[_0x994a('0x34')]);_0x4005f0[_0x994a('0x39')]=_[_0x994a('0x37')](_0x5e2774[_0x994a('0x38')],qs[_0x994a('0x3a')](_0x3ff259[_0x994a('0x34')][_0x994a('0x3a')]));_0x4005f0['attributes']=_0x4005f0[_0x994a('0x39')][_0x994a('0x3b')]?_0x4005f0[_0x994a('0x39')]:_0x5e2774[_0x994a('0x38')];if(_0x3ff259['query'][_0x994a('0x45')]){_0x4005f0[_0x994a('0x46')]=[{'all':!![]}];}_0x4005f0=_[_0x994a('0x43')]({},_0x4005f0,_0x3ff259[_0x994a('0x44')]);return db[_0x994a('0x2f')]['find'](_0x4005f0)[_0x994a('0x24')](handleEntityNotFound(_0x2cbc8a,null))[_0x994a('0x24')](respondWithResult(_0x2cbc8a,null))[_0x994a('0x49')](handleError(_0x2cbc8a,null));};exports['create']=function(_0x5e1cfa,_0x38281a){return db[_0x994a('0x2f')][_0x994a('0x4b')](_0x5e1cfa[_0x994a('0x4c')],{})[_0x994a('0x24')](function(_0x3b1023){var _0x3afaee=_0x5e1cfa[_0x994a('0x4d')][_0x994a('0x26')]({'plain':!![]});if(!_0x3afaee)throw new Error(_0x994a('0x4e'));if(_0x3afaee[_0x994a('0x4f')]===_0x994a('0x4d')){var _0x28f929=_0x3b1023[_0x994a('0x26')]({'plain':!![]});var _0x29f156=_0x994a('0x27');return db[_0x994a('0x50')][_0x994a('0x51')]({'where':{'name':_0x29f156,'userProfileId':_0x3afaee[_0x994a('0x52')]},'raw':!![]})[_0x994a('0x24')](function(_0xc37a09){if(_0xc37a09&&_0xc37a09[_0x994a('0x53')]===0x0){return db[_0x994a('0x28')]['create']({'name':_0x28f929['name'],'resourceId':_0x28f929['id'],'type':_0xc37a09[_0x994a('0x2c')],'sectionId':_0xc37a09['id']},{})[_0x994a('0x24')](function(){return _0x3b1023;});}else{return _0x3b1023;}})[_0x994a('0x49')](function(_0x3d65a1){logger[_0x994a('0x2a')](_0x994a('0x54'),_0x3d65a1);throw _0x3d65a1;});}return _0x3b1023;})[_0x994a('0x24')](respondWithResult(_0x38281a,0xc9))[_0x994a('0x49')](handleError(_0x38281a,null));};exports['update']=function(_0x1fc2f4,_0x1fa72a){if(_0x1fc2f4[_0x994a('0x4c')]['id']){delete _0x1fc2f4[_0x994a('0x4c')]['id'];}return db['Template'][_0x994a('0x51')]({'where':{'id':_0x1fc2f4[_0x994a('0x55')]['id']}})[_0x994a('0x24')](handleEntityNotFound(_0x1fa72a,null))[_0x994a('0x24')](saveUpdates(_0x1fc2f4[_0x994a('0x4c')],null))[_0x994a('0x24')](respondWithResult(_0x1fa72a,null))[_0x994a('0x49')](handleError(_0x1fa72a,null));};exports[_0x994a('0x25')]=function(_0x477bfa,_0x3f58dd){return db[_0x994a('0x2f')]['find']({'where':{'id':_0x477bfa[_0x994a('0x55')]['id']}})[_0x994a('0x24')](handleEntityNotFound(_0x3f58dd,null))[_0x994a('0x24')](removeEntity(_0x3f58dd,null))[_0x994a('0x49')](handleError(_0x3f58dd,null));};
\ No newline at end of file
index 5798966..ed760da 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0x2e54=['define','Template','tools_templates','lodash','util','../../config/logger','api','bluebird','request-promise','path','rimraf','exports'];(function(_0x41930d,_0x478ed3){var _0x455ade=function(_0x24cb07){while(--_0x24cb07){_0x41930d['push'](_0x41930d['shift']());}};_0x455ade(++_0x478ed3);}(_0x2e54,0x1e3));var _0x42e5=function(_0x3aa787,_0x7e1a57){_0x3aa787=_0x3aa787-0x0;var _0x5f145d=_0x2e54[_0x3aa787];return _0x5f145d;};'use strict';var _=require(_0x42e5('0x0'));var util=require(_0x42e5('0x1'));var logger=require(_0x42e5('0x2'))(_0x42e5('0x3'));var moment=require('moment');var BPromise=require(_0x42e5('0x4'));var rp=require(_0x42e5('0x5'));var fs=require('fs');var path=require(_0x42e5('0x6'));var rimraf=require(_0x42e5('0x7'));var config=require('../../config/environment');var attributes=require('./template.attributes');module[_0x42e5('0x8')]=function(_0x44f158,_0x34a6b0){return _0x44f158[_0x42e5('0x9')](_0x42e5('0xa'),attributes,{'tableName':_0x42e5('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 334ee80..5da14c8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0x0dc1=['stringify','error','code','message','result','catch','GetTemplate','findAll','options','raw','where','attributes','limit','map','include','model','then','lodash','util','moment','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','client','http','request','info','Template,\x20%s,\x20%s','request\x20sent','debug','Template,\x20%s,\x20%s,\x20%s'];(function(_0x3c3eb7,_0x55343d){var _0x108733=function(_0x5bd6f6){while(--_0x5bd6f6){_0x3c3eb7['push'](_0x3c3eb7['shift']());}};_0x108733(++_0x55343d);}(_0x0dc1,0xb6));var _0x10dc=function(_0x352094,_0x4ab63c){_0x352094=_0x352094-0x0;var _0x226e43=_0x0dc1[_0x352094];return _0x226e43;};'use strict';var _=require(_0x10dc('0x0'));var util=require(_0x10dc('0x1'));var moment=require(_0x10dc('0x2'));var BPromise=require('bluebird');var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x10dc('0x3'));var db=require(_0x10dc('0x4'))['db'];var utils=require(_0x10dc('0x5'));var logger=require(_0x10dc('0x6'))(_0x10dc('0x7'));var config=require('../../config/environment');var jayson=require('jayson/promise');var client=jayson[_0x10dc('0x8')][_0x10dc('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x598abe,_0x4c5536,_0x2343ff){return new BPromise(function(_0x36f69c,_0x3cc9ac){return client[_0x10dc('0xa')](_0x598abe,_0x2343ff)['then'](function(_0x4dee9d){logger[_0x10dc('0xb')](_0x10dc('0xc'),_0x4c5536,_0x10dc('0xd'));logger[_0x10dc('0xe')](_0x10dc('0xf'),_0x4c5536,_0x10dc('0xd'),JSON[_0x10dc('0x10')](_0x4dee9d));if(_0x4dee9d[_0x10dc('0x11')]){if(_0x4dee9d[_0x10dc('0x11')][_0x10dc('0x12')]===0x1f4){logger[_0x10dc('0x11')](_0x10dc('0xc'),_0x4c5536,_0x4dee9d[_0x10dc('0x11')]['message']);return _0x3cc9ac(_0x4dee9d[_0x10dc('0x11')]['message']);}logger['error'](_0x10dc('0xc'),_0x4c5536,_0x4dee9d[_0x10dc('0x11')][_0x10dc('0x13')]);return _0x36f69c(_0x4dee9d[_0x10dc('0x11')][_0x10dc('0x13')]);}else{logger['info']('Template,\x20%s,\x20%s',_0x4c5536,_0x10dc('0xd'));_0x36f69c(_0x4dee9d[_0x10dc('0x14')]['message']);}})[_0x10dc('0x15')](function(_0x97659){logger[_0x10dc('0x11')](_0x10dc('0xc'),_0x4c5536,_0x97659);_0x3cc9ac(_0x97659);});});}exports[_0x10dc('0x16')]=function(_0x1dbcb8){var _0x1cba20=this;return new Promise(function(_0x48aabe,_0x511936){return db['Template'][_0x10dc('0x17')]({'raw':_0x1dbcb8[_0x10dc('0x18')]?_0x1dbcb8[_0x10dc('0x18')][_0x10dc('0x19')]===undefined?!![]:![]:!![],'where':_0x1dbcb8[_0x10dc('0x18')]?_0x1dbcb8['options'][_0x10dc('0x1a')]||null:null,'attributes':_0x1dbcb8[_0x10dc('0x18')]?_0x1dbcb8[_0x10dc('0x18')][_0x10dc('0x1b')]||null:null,'limit':_0x1dbcb8[_0x10dc('0x18')]?_0x1dbcb8['options'][_0x10dc('0x1c')]||null:null,'include':_0x1dbcb8[_0x10dc('0x18')]?_0x1dbcb8[_0x10dc('0x18')]['include']?_[_0x10dc('0x1d')](_0x1dbcb8[_0x10dc('0x18')][_0x10dc('0x1e')],function(_0x42e044){return{'model':db[_0x42e044[_0x10dc('0x1f')]],'as':_0x42e044['as'],'attributes':_0x42e044[_0x10dc('0x1b')],'include':_0x42e044[_0x10dc('0x1e')]?_[_0x10dc('0x1d')](_0x42e044[_0x10dc('0x1e')],function(_0x555c5d){return{'model':db[_0x555c5d[_0x10dc('0x1f')]],'as':_0x555c5d['as'],'attributes':_0x555c5d[_0x10dc('0x1b')],'include':_0x555c5d['include']?_[_0x10dc('0x1d')](_0x555c5d['include'],function(_0x220c71){return{'model':db[_0x220c71[_0x10dc('0x1f')]],'as':_0x220c71['as'],'attributes':_0x220c71[_0x10dc('0x1b')]};}):[]};}):[]};}):[]:[]})[_0x10dc('0x20')](function(_0x53d095){logger[_0x10dc('0xb')](_0x10dc('0x16'),_0x1dbcb8);logger[_0x10dc('0xe')](_0x10dc('0x16'),_0x1dbcb8,JSON[_0x10dc('0x10')](_0x53d095));_0x48aabe(_0x53d095);})[_0x10dc('0x15')](function(_0x446067){logger[_0x10dc('0x11')](_0x10dc('0x16'),_0x446067['message'],_0x1dbcb8);_0x511936(_0x1cba20[_0x10dc('0x11')](0x1f4,_0x446067['message']));});});};
\ No newline at end of file
index 8b50287..a0cd8a8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0x42cd=['./trigger.controller','get','isAuthenticated','/:id','/:id/all_conditions','/:id/any_conditions','getAnyConditions','/:id/actions','getActions','post','create','addAllCondition','addAnyCondition','addAction','put','update','delete','destroy','exports','multer','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment'];(function(_0x363fa0,_0x449500){var _0x475672=function(_0x5b4043){while(--_0x5b4043){_0x363fa0['push'](_0x363fa0['shift']());}};_0x475672(++_0x449500);}(_0x42cd,0x17f));var _0xd42c=function(_0x2ce9d,_0x4ff962){_0x2ce9d=_0x2ce9d-0x0;var _0x578428=_0x42cd[_0x2ce9d];return _0x578428;};'use strict';var multer=require(_0xd42c('0x0'));var util=require('util');var path=require(_0xd42c('0x1'));var timeout=require(_0xd42c('0x2'));var express=require(_0xd42c('0x3'));var router=express[_0xd42c('0x4')]();var fs_extra=require(_0xd42c('0x5'));var auth=require(_0xd42c('0x6'));var interaction=require(_0xd42c('0x7'));var config=require(_0xd42c('0x8'));var controller=require(_0xd42c('0x9'));router[_0xd42c('0xa')]('/',auth[_0xd42c('0xb')](),controller['index']);router[_0xd42c('0xa')](_0xd42c('0xc'),auth[_0xd42c('0xb')](),controller['show']);router[_0xd42c('0xa')](_0xd42c('0xd'),auth['isAuthenticated'](),controller['getAllConditions']);router[_0xd42c('0xa')](_0xd42c('0xe'),auth[_0xd42c('0xb')](),controller[_0xd42c('0xf')]);router[_0xd42c('0xa')](_0xd42c('0x10'),auth[_0xd42c('0xb')](),controller[_0xd42c('0x11')]);router[_0xd42c('0x12')]('/',auth[_0xd42c('0xb')](),controller[_0xd42c('0x13')]);router['post'](_0xd42c('0xd'),auth[_0xd42c('0xb')](),controller[_0xd42c('0x14')]);router['post'](_0xd42c('0xe'),auth[_0xd42c('0xb')](),controller[_0xd42c('0x15')]);router[_0xd42c('0x12')](_0xd42c('0x10'),auth[_0xd42c('0xb')](),controller[_0xd42c('0x16')]);router[_0xd42c('0x17')]('/:id',auth['isAuthenticated'](),controller[_0xd42c('0x18')]);router[_0xd42c('0x19')](_0xd42c('0xc'),auth[_0xd42c('0xb')](),controller[_0xd42c('0x1a')]);module[_0xd42c('0x1b')]=router;
\ No newline at end of file
index 28769e2..6c25939 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0xcfd8=['BOOLEAN','exports','STRING'];(function(_0x54c583,_0xf8c8cb){var _0x14d514=function(_0x2ba980){while(--_0x2ba980){_0x54c583['push'](_0x54c583['shift']());}};_0x14d514(++_0xf8c8cb);}(_0xcfd8,0x103));var _0x8cfd=function(_0x2d460c,_0x4f08c0){_0x2d460c=_0x2d460c-0x0;var _0xf6fc4c=_0xcfd8[_0x2d460c];return _0xf6fc4c;};'use strict';var Sequelize=require('sequelize');module[_0x8cfd('0x0')]={'name':{'type':Sequelize[_0x8cfd('0x1')]},'channel':{'type':Sequelize[_0x8cfd('0x1')]},'description':{'type':Sequelize[_0x8cfd('0x1')]},'status':{'type':Sequelize[_0x8cfd('0x2')],'defaultValue':![]}};
\ No newline at end of file
index 8e55189..6974166 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0xe207=['name','send','index','map','rawAttributes','fieldName','model','query','filters','intersection','fields','attributes','length','hasOwnProperty','limit','order','where','pick','filter','merge','type','VIRTUAL','options','Trigger','includeAll','findAll','rows','params','keys','find','catch','create','body','user','role','UserProfileSection','userProfileId','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','addAllCondition','TriggerAllId','Condition','TriggerAnyId','getAllConditions','findOne','sort','nolimit','getAnyConditions','addAction','Action','getActions','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','sox','to-csv','ejs','fs-extra','lodash','squel','jsforce','desk.js','querystring','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','json','offset','undefined','count','set','Content-Range','reject','save','update','then','destroy','get','UserProfileResource','status','error'];(function(_0x1b53b1,_0x3153a1){var _0x56390b=function(_0x47f376){while(--_0x47f376){_0x1b53b1['push'](_0x1b53b1['shift']());}};_0x56390b(++_0x3153a1);}(_0xe207,0x1a7));var _0x7e20=function(_0x40d373,_0x2f6b0b){_0x40d373=_0x40d373-0x0;var _0x2e1cfc=_0xe207[_0x40d373];return _0x2e1cfc;};'use strict';var emlformat=require(_0x7e20('0x0'));var rimraf=require(_0x7e20('0x1'));var zipdir=require(_0x7e20('0x2'));var jsonpatch=require(_0x7e20('0x3'));var rp=require(_0x7e20('0x4'));var moment=require(_0x7e20('0x5'));var BPromise=require(_0x7e20('0x6'));var Mustache=require(_0x7e20('0x7'));var util=require(_0x7e20('0x8'));var path=require('path');var sox=require(_0x7e20('0x9'));var csv=require(_0x7e20('0xa'));var ejs=require(_0x7e20('0xb'));var fs=require('fs');var fs_extra=require(_0x7e20('0xc'));var _=require(_0x7e20('0xd'));var squel=require(_0x7e20('0xe'));var crypto=require('crypto');var jsforce=require(_0x7e20('0xf'));var deskjs=require(_0x7e20('0x10'));var toCsv=require(_0x7e20('0xa'));var querystring=require(_0x7e20('0x11'));var Papa=require('papaparse');var Redis=require('ioredis');var authService=require(_0x7e20('0x12'));var qs=require('../../components/parsers/qs');var as=require(_0x7e20('0x13'));var hardwareService=require(_0x7e20('0x14'));var logger=require(_0x7e20('0x15'))(_0x7e20('0x16'));var utils=require('../../config/utils');var config=require(_0x7e20('0x17'));var licenseUtil=require(_0x7e20('0x18'));var db=require(_0x7e20('0x19'))['db'];function respondWithStatusCode(_0x121ed9,_0x4f3722){_0x4f3722=_0x4f3722||0xcc;return function(_0x2e3903){if(_0x2e3903){return _0x121ed9[_0x7e20('0x1a')](_0x4f3722);}return _0x121ed9['status'](_0x4f3722)['end']();};}function respondWithResult(_0x32c3eb,_0x57b446){_0x57b446=_0x57b446||0xc8;return function(_0x2ff1f9){if(_0x2ff1f9){return _0x32c3eb['status'](_0x57b446)[_0x7e20('0x1b')](_0x2ff1f9);}};}function respondWithFilteredResult(_0x1f1fce,_0x2c0693){return function(_0x9ef07b){if(_0x9ef07b){var _0x70c01b=typeof _0x2c0693[_0x7e20('0x1c')]==='undefined'&&typeof _0x2c0693['limit']===_0x7e20('0x1d');var _0x5e225a=_0x9ef07b[_0x7e20('0x1e')];var _0x677d6b=_0x70c01b?0x0:_0x2c0693[_0x7e20('0x1c')];var _0x422c12=_0x70c01b?_0x9ef07b[_0x7e20('0x1e')]:_0x2c0693['offset']+_0x2c0693['limit'];var _0x5d12df;if(_0x422c12>=_0x5e225a){_0x422c12=_0x5e225a;_0x5d12df=0xc8;}else{_0x5d12df=0xce;}_0x1f1fce['status'](_0x5d12df);return _0x1f1fce[_0x7e20('0x1f')](_0x7e20('0x20'),_0x677d6b+'-'+_0x422c12+'/'+_0x5e225a)[_0x7e20('0x1b')](_0x9ef07b);}return null;};}function patchUpdates(_0x3e7c33){return function(_0x8d6f03){try{jsonpatch['apply'](_0x8d6f03,_0x3e7c33,!![]);}catch(_0xb5fb44){return BPromise[_0x7e20('0x21')](_0xb5fb44);}return _0x8d6f03[_0x7e20('0x22')]();};}function saveUpdates(_0x6d99ca,_0x24e352){return function(_0x5930f2){if(_0x5930f2){return _0x5930f2[_0x7e20('0x23')](_0x6d99ca)[_0x7e20('0x24')](function(_0x1a049d){return _0x1a049d;});}return null;};}function removeEntity(_0x4e8bbe,_0x4b939c){return function(_0x20648a){if(_0x20648a){return _0x20648a[_0x7e20('0x25')]()['then'](function(){var _0x5327c7=_0x20648a[_0x7e20('0x26')]({'plain':!![]});var _0x2955dd='Triggers';return db[_0x7e20('0x27')][_0x7e20('0x25')]({'where':{'type':_0x2955dd,'resourceId':_0x5327c7['id']}})[_0x7e20('0x24')](function(){return _0x20648a;});})['then'](function(){_0x4e8bbe[_0x7e20('0x28')](0xcc)['end']();});}};}function handleEntityNotFound(_0xd4aef1,_0x1d0a00){return function(_0x35128e){if(!_0x35128e){_0xd4aef1['sendStatus'](0x194);}return _0x35128e;};}function handleError(_0x3788ca,_0x29e0c5){_0x29e0c5=_0x29e0c5||0x1f4;return function(_0x269f17){logger[_0x7e20('0x29')](_0x269f17['stack']);if(_0x269f17[_0x7e20('0x2a')]){delete _0x269f17[_0x7e20('0x2a')];}_0x3788ca[_0x7e20('0x28')](_0x29e0c5)[_0x7e20('0x2b')](_0x269f17);};}exports[_0x7e20('0x2c')]=function(_0x5eb02b,_0x1cfe7b){var _0x5359aa={},_0x4dc83e={},_0xfa5d41={'count':0x0,'rows':[]};var _0x88f8df=_[_0x7e20('0x2d')](db['Trigger'][_0x7e20('0x2e')],function(_0x32a437){return{'name':_0x32a437[_0x7e20('0x2f')],'type':_0x32a437['type']['key']};});_0x4dc83e[_0x7e20('0x30')]=_[_0x7e20('0x2d')](_0x88f8df,'name');_0x4dc83e['query']=_['keys'](_0x5eb02b[_0x7e20('0x31')]);_0x4dc83e[_0x7e20('0x32')]=_[_0x7e20('0x33')](_0x4dc83e[_0x7e20('0x30')],_0x4dc83e[_0x7e20('0x31')]);_0x5359aa['attributes']=_[_0x7e20('0x33')](_0x4dc83e[_0x7e20('0x30')],qs['fields'](_0x5eb02b[_0x7e20('0x31')][_0x7e20('0x34')]));_0x5359aa[_0x7e20('0x35')]=_0x5359aa[_0x7e20('0x35')][_0x7e20('0x36')]?_0x5359aa[_0x7e20('0x35')]:_0x4dc83e['model'];if(!_0x5eb02b[_0x7e20('0x31')][_0x7e20('0x37')]('nolimit')){_0x5359aa[_0x7e20('0x38')]=qs[_0x7e20('0x38')](_0x5eb02b[_0x7e20('0x31')]['limit']);_0x5359aa[_0x7e20('0x1c')]=qs[_0x7e20('0x1c')](_0x5eb02b[_0x7e20('0x31')][_0x7e20('0x1c')]);}_0x5359aa[_0x7e20('0x39')]=qs['sort'](_0x5eb02b[_0x7e20('0x31')]['sort']);_0x5359aa[_0x7e20('0x3a')]=qs[_0x7e20('0x32')](_[_0x7e20('0x3b')](_0x5eb02b[_0x7e20('0x31')],_0x4dc83e[_0x7e20('0x32')]),_0x88f8df);if(_0x5eb02b['query'][_0x7e20('0x3c')]){_0x5359aa[_0x7e20('0x3a')]=_[_0x7e20('0x3d')](_0x5359aa[_0x7e20('0x3a')],{'$or':_['map'](_0x88f8df,function(_0x77d8ce){if(_0x77d8ce[_0x7e20('0x3e')]!==_0x7e20('0x3f')){var _0x35427f={};_0x35427f[_0x77d8ce[_0x7e20('0x2a')]]={'$like':'%'+_0x5eb02b[_0x7e20('0x31')][_0x7e20('0x3c')]+'%'};return _0x35427f;}})});}_0x5359aa=_[_0x7e20('0x3d')]({},_0x5359aa,_0x5eb02b[_0x7e20('0x40')]);var _0x143e73={'where':_0x5359aa[_0x7e20('0x3a')]};return db[_0x7e20('0x41')][_0x7e20('0x1e')](_0x143e73)[_0x7e20('0x24')](function(_0x49b27c){_0xfa5d41[_0x7e20('0x1e')]=_0x49b27c;if(_0x5eb02b[_0x7e20('0x31')][_0x7e20('0x42')]){_0x5359aa['include']=[{'all':!![]}];}return db[_0x7e20('0x41')][_0x7e20('0x43')](_0x5359aa);})[_0x7e20('0x24')](function(_0x4d3d93){_0xfa5d41[_0x7e20('0x44')]=_0x4d3d93;return _0xfa5d41;})[_0x7e20('0x24')](respondWithFilteredResult(_0x1cfe7b,_0x5359aa))['catch'](handleError(_0x1cfe7b,null));};exports['show']=function(_0x45a6af,_0x4b31fb){var _0x303e02={'raw':![],'where':{'id':_0x45a6af[_0x7e20('0x45')]['id']}},_0x5ee589={};_0x5ee589['model']=_[_0x7e20('0x46')](db[_0x7e20('0x41')]['rawAttributes']);_0x5ee589[_0x7e20('0x31')]=_[_0x7e20('0x46')](_0x45a6af[_0x7e20('0x31')]);_0x5ee589[_0x7e20('0x32')]=_[_0x7e20('0x33')](_0x5ee589[_0x7e20('0x30')],_0x5ee589[_0x7e20('0x31')]);_0x303e02[_0x7e20('0x35')]=_[_0x7e20('0x33')](_0x5ee589[_0x7e20('0x30')],qs[_0x7e20('0x34')](_0x45a6af[_0x7e20('0x31')]['fields']));_0x303e02[_0x7e20('0x35')]=_0x303e02[_0x7e20('0x35')][_0x7e20('0x36')]?_0x303e02['attributes']:_0x5ee589[_0x7e20('0x30')];if(_0x45a6af['query'][_0x7e20('0x42')]){_0x303e02['include']=[{'all':!![]}];}_0x303e02=_[_0x7e20('0x3d')]({},_0x303e02,_0x45a6af[_0x7e20('0x40')]);return db[_0x7e20('0x41')][_0x7e20('0x47')](_0x303e02)[_0x7e20('0x24')](handleEntityNotFound(_0x4b31fb,null))[_0x7e20('0x24')](respondWithResult(_0x4b31fb,null))[_0x7e20('0x48')](handleError(_0x4b31fb,null));};exports[_0x7e20('0x49')]=function(_0x15537a,_0x9022ba){return db[_0x7e20('0x41')][_0x7e20('0x49')](_0x15537a[_0x7e20('0x4a')],{})[_0x7e20('0x24')](function(_0x38b1dd){var _0x41d99a=_0x15537a[_0x7e20('0x4b')][_0x7e20('0x26')]({'plain':!![]});if(!_0x41d99a)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x41d99a[_0x7e20('0x4c')]===_0x7e20('0x4b')){var _0x3e94a1=_0x38b1dd[_0x7e20('0x26')]({'plain':!![]});var _0xd9121='Triggers';return db[_0x7e20('0x4d')][_0x7e20('0x47')]({'where':{'name':_0xd9121,'userProfileId':_0x41d99a[_0x7e20('0x4e')]},'raw':!![]})[_0x7e20('0x24')](function(_0x17f55e){if(_0x17f55e&&_0x17f55e[_0x7e20('0x4f')]===0x0){return db['UserProfileResource'][_0x7e20('0x49')]({'name':_0x3e94a1['name'],'resourceId':_0x3e94a1['id'],'type':_0x17f55e[_0x7e20('0x2a')],'sectionId':_0x17f55e['id']},{})[_0x7e20('0x24')](function(){return _0x38b1dd;});}else{return _0x38b1dd;}})[_0x7e20('0x48')](function(_0x15b8e1){logger['error'](_0x7e20('0x50'),_0x15b8e1);throw _0x15b8e1;});}return _0x38b1dd;})[_0x7e20('0x24')](respondWithResult(_0x9022ba,0xc9))[_0x7e20('0x48')](handleError(_0x9022ba,null));};exports['update']=function(_0x22ff7f,_0x5cb54b){if(_0x22ff7f[_0x7e20('0x4a')]['id']){delete _0x22ff7f['body']['id'];}return db['Trigger'][_0x7e20('0x47')]({'where':{'id':_0x22ff7f[_0x7e20('0x45')]['id']}})['then'](handleEntityNotFound(_0x5cb54b,null))['then'](saveUpdates(_0x22ff7f[_0x7e20('0x4a')],null))['then'](respondWithResult(_0x5cb54b,null))['catch'](handleError(_0x5cb54b,null));};exports[_0x7e20('0x25')]=function(_0x1c29c2,_0x574ba6){return db[_0x7e20('0x41')]['find']({'where':{'id':_0x1c29c2['params']['id']}})[_0x7e20('0x24')](handleEntityNotFound(_0x574ba6,null))[_0x7e20('0x24')](removeEntity(_0x574ba6,null))[_0x7e20('0x48')](handleError(_0x574ba6,null));};exports[_0x7e20('0x51')]=function(_0x25c688,_0x304098,_0x4834fd){if(_0x25c688[_0x7e20('0x4a')]['id']){delete _0x25c688[_0x7e20('0x4a')]['id'];}return db[_0x7e20('0x41')]['find']({'where':{'id':_0x25c688[_0x7e20('0x45')]['id']}})[_0x7e20('0x24')](handleEntityNotFound(_0x304098,null))[_0x7e20('0x24')](function(_0x3b446c){if(_0x3b446c){_0x25c688[_0x7e20('0x4a')][_0x7e20('0x52')]=_0x3b446c['id'];return db[_0x7e20('0x53')][_0x7e20('0x49')](_0x25c688[_0x7e20('0x4a')]);}})[_0x7e20('0x24')](respondWithResult(_0x304098,null))[_0x7e20('0x48')](handleError(_0x304098,null));};exports['addAnyCondition']=function(_0x4f067b,_0x102a83,_0x113bc3){if(_0x4f067b[_0x7e20('0x4a')]['id']){delete _0x4f067b[_0x7e20('0x4a')]['id'];}return db[_0x7e20('0x41')][_0x7e20('0x47')]({'where':{'id':_0x4f067b[_0x7e20('0x45')]['id']}})['then'](handleEntityNotFound(_0x102a83,null))[_0x7e20('0x24')](function(_0xf3ff80){if(_0xf3ff80){_0x4f067b[_0x7e20('0x4a')][_0x7e20('0x54')]=_0xf3ff80['id'];return db['Condition'][_0x7e20('0x49')](_0x4f067b[_0x7e20('0x4a')]);}})[_0x7e20('0x24')](respondWithResult(_0x102a83,null))[_0x7e20('0x48')](handleError(_0x102a83,null));};exports[_0x7e20('0x55')]=function(_0x3392a9,_0x457f0f,_0x59ca77){var _0x2026fc={};var _0x51908c={};var _0x55bda3;var _0x40c20b;return db[_0x7e20('0x41')][_0x7e20('0x56')]({'where':{'id':_0x3392a9[_0x7e20('0x45')]['id']}})['then'](handleEntityNotFound(_0x457f0f,null))[_0x7e20('0x24')](function(_0x5eb5e8){if(_0x5eb5e8){_0x55bda3=_0x5eb5e8;_0x51908c[_0x7e20('0x30')]=_['keys'](db[_0x7e20('0x53')][_0x7e20('0x2e')]);_0x51908c[_0x7e20('0x31')]=_[_0x7e20('0x46')](_0x3392a9['query']);_0x51908c[_0x7e20('0x32')]=_[_0x7e20('0x33')](_0x51908c[_0x7e20('0x30')],_0x51908c['query']);_0x2026fc[_0x7e20('0x35')]=_['intersection'](_0x51908c[_0x7e20('0x30')],qs[_0x7e20('0x34')](_0x3392a9['query'][_0x7e20('0x34')]));_0x2026fc[_0x7e20('0x35')]=_0x2026fc[_0x7e20('0x35')][_0x7e20('0x36')]?_0x2026fc[_0x7e20('0x35')]:_0x51908c[_0x7e20('0x30')];_0x2026fc[_0x7e20('0x39')]=qs[_0x7e20('0x57')](_0x3392a9['query'][_0x7e20('0x57')]);_0x2026fc[_0x7e20('0x3a')]=qs['filters'](_[_0x7e20('0x3b')](_0x3392a9[_0x7e20('0x31')],_0x51908c[_0x7e20('0x32')]));if(_0x3392a9['query']['filter']){_0x2026fc[_0x7e20('0x3a')]=_[_0x7e20('0x3d')](_0x2026fc[_0x7e20('0x3a')],{'$or':_[_0x7e20('0x2d')](_0x2026fc['attributes'],function(_0x59cecd){var _0x220289={};_0x220289[_0x59cecd]={'$like':'%'+_0x3392a9[_0x7e20('0x31')][_0x7e20('0x3c')]+'%'};return _0x220289;})});}_0x2026fc=_[_0x7e20('0x3d')]({},_0x2026fc,_0x3392a9[_0x7e20('0x40')]);return _0x55bda3[_0x7e20('0x55')](_0x2026fc);}})[_0x7e20('0x24')](function(_0x2893eb){if(_0x2893eb){_0x40c20b=_0x2893eb[_0x7e20('0x36')];if(!_0x3392a9['query'][_0x7e20('0x37')](_0x7e20('0x58'))){_0x2026fc[_0x7e20('0x38')]=qs['limit'](_0x3392a9[_0x7e20('0x31')]['limit']);_0x2026fc[_0x7e20('0x1c')]=qs[_0x7e20('0x1c')](_0x3392a9[_0x7e20('0x31')]['offset']);}return _0x55bda3[_0x7e20('0x55')](_0x2026fc);}})[_0x7e20('0x24')](function(_0x38e4ae){if(_0x38e4ae){return _0x38e4ae?{'count':_0x40c20b,'rows':_0x38e4ae}:null;}})[_0x7e20('0x24')](respondWithResult(_0x457f0f,null))[_0x7e20('0x48')](handleError(_0x457f0f,null));};exports[_0x7e20('0x59')]=function(_0x1b95ab,_0x568bc5,_0x3539c7){var _0x1f4f00={};var _0x38fc90={};var _0x58c1d9;var _0x2c4c4b;return db[_0x7e20('0x41')][_0x7e20('0x56')]({'where':{'id':_0x1b95ab[_0x7e20('0x45')]['id']}})[_0x7e20('0x24')](handleEntityNotFound(_0x568bc5,null))[_0x7e20('0x24')](function(_0x483b37){if(_0x483b37){_0x58c1d9=_0x483b37;_0x38fc90[_0x7e20('0x30')]=_['keys'](db[_0x7e20('0x53')][_0x7e20('0x2e')]);_0x38fc90[_0x7e20('0x31')]=_[_0x7e20('0x46')](_0x1b95ab[_0x7e20('0x31')]);_0x38fc90[_0x7e20('0x32')]=_[_0x7e20('0x33')](_0x38fc90[_0x7e20('0x30')],_0x38fc90[_0x7e20('0x31')]);_0x1f4f00[_0x7e20('0x35')]=_['intersection'](_0x38fc90[_0x7e20('0x30')],qs[_0x7e20('0x34')](_0x1b95ab['query'][_0x7e20('0x34')]));_0x1f4f00['attributes']=_0x1f4f00[_0x7e20('0x35')][_0x7e20('0x36')]?_0x1f4f00[_0x7e20('0x35')]:_0x38fc90[_0x7e20('0x30')];_0x1f4f00['order']=qs[_0x7e20('0x57')](_0x1b95ab['query'][_0x7e20('0x57')]);_0x1f4f00['where']=qs[_0x7e20('0x32')](_['pick'](_0x1b95ab[_0x7e20('0x31')],_0x38fc90['filters']));if(_0x1b95ab[_0x7e20('0x31')][_0x7e20('0x3c')]){_0x1f4f00[_0x7e20('0x3a')]=_['merge'](_0x1f4f00[_0x7e20('0x3a')],{'$or':_[_0x7e20('0x2d')](_0x1f4f00[_0x7e20('0x35')],function(_0x5396c1){var _0x4c320c={};_0x4c320c[_0x5396c1]={'$like':'%'+_0x1b95ab[_0x7e20('0x31')][_0x7e20('0x3c')]+'%'};return _0x4c320c;})});}_0x1f4f00=_[_0x7e20('0x3d')]({},_0x1f4f00,_0x1b95ab[_0x7e20('0x40')]);return _0x58c1d9[_0x7e20('0x59')](_0x1f4f00);}})['then'](function(_0x1ea804){if(_0x1ea804){_0x2c4c4b=_0x1ea804[_0x7e20('0x36')];if(!_0x1b95ab[_0x7e20('0x31')][_0x7e20('0x37')](_0x7e20('0x58'))){_0x1f4f00[_0x7e20('0x38')]=qs[_0x7e20('0x38')](_0x1b95ab[_0x7e20('0x31')][_0x7e20('0x38')]);_0x1f4f00[_0x7e20('0x1c')]=qs[_0x7e20('0x1c')](_0x1b95ab[_0x7e20('0x31')][_0x7e20('0x1c')]);}return _0x58c1d9['getAnyConditions'](_0x1f4f00);}})[_0x7e20('0x24')](function(_0x59b5ce){if(_0x59b5ce){return _0x59b5ce?{'count':_0x2c4c4b,'rows':_0x59b5ce}:null;}})[_0x7e20('0x24')](respondWithResult(_0x568bc5,null))[_0x7e20('0x48')](handleError(_0x568bc5,null));};exports[_0x7e20('0x5a')]=function(_0x2ddefc,_0x10fbf7,_0x5e7dbd){if(_0x2ddefc[_0x7e20('0x4a')]['id']){delete _0x2ddefc[_0x7e20('0x4a')]['id'];}return db[_0x7e20('0x41')][_0x7e20('0x47')]({'where':{'id':_0x2ddefc[_0x7e20('0x45')]['id']}})[_0x7e20('0x24')](handleEntityNotFound(_0x10fbf7,null))['then'](function(_0x5332a6){if(_0x5332a6){_0x2ddefc[_0x7e20('0x4a')]['TriggerId']=_0x5332a6['id'];return db[_0x7e20('0x5b')][_0x7e20('0x49')](_0x2ddefc[_0x7e20('0x4a')]);}})['then'](respondWithResult(_0x10fbf7,null))[_0x7e20('0x48')](handleError(_0x10fbf7,null));};exports[_0x7e20('0x5c')]=function(_0xb3afd5,_0x89214e,_0x44d1a7){var _0x100a3c={};var _0x38b1df={};var _0x151826;var _0x43d939;return db[_0x7e20('0x41')][_0x7e20('0x56')]({'where':{'id':_0xb3afd5[_0x7e20('0x45')]['id']}})[_0x7e20('0x24')](handleEntityNotFound(_0x89214e,null))[_0x7e20('0x24')](function(_0x5d53b9){if(_0x5d53b9){_0x151826=_0x5d53b9;_0x38b1df['model']=_[_0x7e20('0x46')](db[_0x7e20('0x5b')][_0x7e20('0x2e')]);_0x38b1df[_0x7e20('0x31')]=_[_0x7e20('0x46')](_0xb3afd5[_0x7e20('0x31')]);_0x38b1df[_0x7e20('0x32')]=_[_0x7e20('0x33')](_0x38b1df[_0x7e20('0x30')],_0x38b1df[_0x7e20('0x31')]);_0x100a3c[_0x7e20('0x35')]=_['intersection'](_0x38b1df[_0x7e20('0x30')],qs['fields'](_0xb3afd5[_0x7e20('0x31')][_0x7e20('0x34')]));_0x100a3c[_0x7e20('0x35')]=_0x100a3c[_0x7e20('0x35')][_0x7e20('0x36')]?_0x100a3c[_0x7e20('0x35')]:_0x38b1df[_0x7e20('0x30')];_0x100a3c[_0x7e20('0x39')]=qs[_0x7e20('0x57')](_0xb3afd5[_0x7e20('0x31')]['sort']);_0x100a3c['where']=qs[_0x7e20('0x32')](_[_0x7e20('0x3b')](_0xb3afd5[_0x7e20('0x31')],_0x38b1df[_0x7e20('0x32')]));if(_0xb3afd5[_0x7e20('0x31')][_0x7e20('0x3c')]){_0x100a3c[_0x7e20('0x3a')]=_['merge'](_0x100a3c[_0x7e20('0x3a')],{'$or':_[_0x7e20('0x2d')](_0x100a3c['attributes'],function(_0x4efad6){var _0x480e7f={};_0x480e7f[_0x4efad6]={'$like':'%'+_0xb3afd5[_0x7e20('0x31')][_0x7e20('0x3c')]+'%'};return _0x480e7f;})});}_0x100a3c=_[_0x7e20('0x3d')]({},_0x100a3c,_0xb3afd5[_0x7e20('0x40')]);return _0x151826[_0x7e20('0x5c')](_0x100a3c);}})[_0x7e20('0x24')](function(_0x419544){if(_0x419544){_0x43d939=_0x419544[_0x7e20('0x36')];if(!_0xb3afd5[_0x7e20('0x31')][_0x7e20('0x37')](_0x7e20('0x58'))){_0x100a3c['limit']=qs[_0x7e20('0x38')](_0xb3afd5[_0x7e20('0x31')][_0x7e20('0x38')]);_0x100a3c[_0x7e20('0x1c')]=qs['offset'](_0xb3afd5[_0x7e20('0x31')]['offset']);}return _0x151826[_0x7e20('0x5c')](_0x100a3c);}})[_0x7e20('0x24')](function(_0x2968cc){if(_0x2968cc){return _0x2968cc?{'count':_0x43d939,'rows':_0x2968cc}:null;}})['then'](respondWithResult(_0x89214e,null))[_0x7e20('0x48')](handleError(_0x89214e,null));};
\ No newline at end of file
index 81cf122..5128d13 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0x47c7=['api','bluebird','request-promise','rimraf','../../config/environment','./trigger.attributes','exports','Trigger','tools_triggers','lodash','../../config/logger'];(function(_0x419e7d,_0x211592){var _0x307649=function(_0x20c06a){while(--_0x20c06a){_0x419e7d['push'](_0x419e7d['shift']());}};_0x307649(++_0x211592);}(_0x47c7,0x1ab));var _0x747c=function(_0x1bd323,_0x1c16ab){_0x1bd323=_0x1bd323-0x0;var _0x13097b=_0x47c7[_0x1bd323];return _0x13097b;};'use strict';var _=require(_0x747c('0x0'));var util=require('util');var logger=require(_0x747c('0x1'))(_0x747c('0x2'));var moment=require('moment');var BPromise=require(_0x747c('0x3'));var rp=require(_0x747c('0x4'));var fs=require('fs');var path=require('path');var rimraf=require(_0x747c('0x5'));var config=require(_0x747c('0x6'));var attributes=require(_0x747c('0x7'));module[_0x747c('0x8')]=function(_0x5e991e,_0xa1148a){return _0x5e991e['define'](_0x747c('0x9'),attributes,{'tableName':_0x747c('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index d92d4cf..3908566 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0x9206=['where','attributes','limit','map','include','model','ShowTrigger','find','raw','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','../../config/environment','jayson/promise','client','request','then','info','Trigger,\x20%s,\x20%s','request\x20sent','debug','Trigger,\x20%s,\x20%s,\x20%s','stringify','error','code','message','catch','GetTrigger','Trigger','findAll','options'];(function(_0x43cd9f,_0x57d758){var _0x5cf244=function(_0xb0bd94){while(--_0xb0bd94){_0x43cd9f['push'](_0x43cd9f['shift']());}};_0x5cf244(++_0x57d758);}(_0x9206,0x131));var _0x6920=function(_0x25f47e,_0x2f765b){_0x25f47e=_0x25f47e-0x0;var _0x4478a1=_0x9206[_0x25f47e];return _0x4478a1;};'use strict';var _=require(_0x6920('0x0'));var util=require(_0x6920('0x1'));var moment=require(_0x6920('0x2'));var BPromise=require(_0x6920('0x3'));var rs=require(_0x6920('0x4'));var fs=require('fs');var Redis=require(_0x6920('0x5'));var db=require(_0x6920('0x6'))['db'];var utils=require(_0x6920('0x7'));var logger=require(_0x6920('0x8'))('rpc');var config=require(_0x6920('0x9'));var jayson=require(_0x6920('0xa'));var client=jayson[_0x6920('0xb')]['http']({'port':0x232a});function respondWithRpcPromise(_0x25d3e6,_0x30751f,_0x5301ac){return new BPromise(function(_0x1bdaa2,_0x8e8c57){return client[_0x6920('0xc')](_0x25d3e6,_0x5301ac)[_0x6920('0xd')](function(_0x20c3d8){logger[_0x6920('0xe')](_0x6920('0xf'),_0x30751f,_0x6920('0x10'));logger[_0x6920('0x11')](_0x6920('0x12'),_0x30751f,'request\x20sent',JSON[_0x6920('0x13')](_0x20c3d8));if(_0x20c3d8['error']){if(_0x20c3d8[_0x6920('0x14')][_0x6920('0x15')]===0x1f4){logger[_0x6920('0x14')](_0x6920('0xf'),_0x30751f,_0x20c3d8[_0x6920('0x14')]['message']);return _0x8e8c57(_0x20c3d8[_0x6920('0x14')][_0x6920('0x16')]);}logger[_0x6920('0x14')](_0x6920('0xf'),_0x30751f,_0x20c3d8[_0x6920('0x14')][_0x6920('0x16')]);return _0x1bdaa2(_0x20c3d8[_0x6920('0x14')]['message']);}else{logger[_0x6920('0xe')](_0x6920('0xf'),_0x30751f,'request\x20sent');_0x1bdaa2(_0x20c3d8['result'][_0x6920('0x16')]);}})[_0x6920('0x17')](function(_0x21339d){logger[_0x6920('0x14')](_0x6920('0xf'),_0x30751f,_0x21339d);_0x8e8c57(_0x21339d);});});}exports[_0x6920('0x18')]=function(_0x4a1f1a){var _0x183fcf=this;return new Promise(function(_0x5c20be,_0x2319a1){return db[_0x6920('0x19')][_0x6920('0x1a')]({'raw':_0x4a1f1a[_0x6920('0x1b')]?_0x4a1f1a[_0x6920('0x1b')]['raw']===undefined?!![]:![]:!![],'where':_0x4a1f1a[_0x6920('0x1b')]?_0x4a1f1a[_0x6920('0x1b')][_0x6920('0x1c')]||null:null,'attributes':_0x4a1f1a[_0x6920('0x1b')]?_0x4a1f1a[_0x6920('0x1b')][_0x6920('0x1d')]||null:null,'limit':_0x4a1f1a[_0x6920('0x1b')]?_0x4a1f1a[_0x6920('0x1b')][_0x6920('0x1e')]||null:null,'include':_0x4a1f1a[_0x6920('0x1b')]?_0x4a1f1a[_0x6920('0x1b')]['include']?_[_0x6920('0x1f')](_0x4a1f1a[_0x6920('0x1b')][_0x6920('0x20')],function(_0x544f7b){return{'model':db[_0x544f7b[_0x6920('0x21')]],'as':_0x544f7b['as'],'attributes':_0x544f7b['attributes'],'include':_0x544f7b[_0x6920('0x20')]?_['map'](_0x544f7b[_0x6920('0x20')],function(_0x55730a){return{'model':db[_0x55730a[_0x6920('0x21')]],'as':_0x55730a['as'],'attributes':_0x55730a['attributes'],'include':_0x55730a[_0x6920('0x20')]?_['map'](_0x55730a[_0x6920('0x20')],function(_0x295825){return{'model':db[_0x295825[_0x6920('0x21')]],'as':_0x295825['as'],'attributes':_0x295825[_0x6920('0x1d')]};}):[]};}):[]};}):[]:[]})[_0x6920('0xd')](function(_0x4b5b6c){logger[_0x6920('0xe')](_0x6920('0x18'),_0x4a1f1a);logger[_0x6920('0x11')](_0x6920('0x18'),_0x4a1f1a,JSON['stringify'](_0x4b5b6c));_0x5c20be(_0x4b5b6c);})[_0x6920('0x17')](function(_0x5522b2){logger[_0x6920('0x14')](_0x6920('0x18'),_0x5522b2['message'],_0x4a1f1a);_0x2319a1(_0x183fcf[_0x6920('0x14')](0x1f4,_0x5522b2[_0x6920('0x16')]));});});};exports[_0x6920('0x22')]=function(_0x25d207){var _0x1e54d6=this;return new Promise(function(_0x5539ba,_0xcc3f4b){return db[_0x6920('0x19')][_0x6920('0x23')]({'raw':_0x25d207[_0x6920('0x1b')]?_0x25d207['options'][_0x6920('0x24')]===undefined?!![]:![]:!![],'where':_0x25d207[_0x6920('0x1b')]?_0x25d207['options'][_0x6920('0x1c')]||null:null,'attributes':_0x25d207['options']?_0x25d207[_0x6920('0x1b')][_0x6920('0x1d')]||null:null,'include':_0x25d207['options']?_0x25d207[_0x6920('0x1b')]['include']?_[_0x6920('0x1f')](_0x25d207[_0x6920('0x1b')][_0x6920('0x20')],function(_0x1d8965){return{'model':db[_0x1d8965[_0x6920('0x21')]],'as':_0x1d8965['as'],'attributes':_0x1d8965[_0x6920('0x1d')],'include':_0x1d8965[_0x6920('0x20')]?_['map'](_0x1d8965[_0x6920('0x20')],function(_0x3b9d5a){return{'model':db[_0x3b9d5a[_0x6920('0x21')]],'as':_0x3b9d5a['as'],'attributes':_0x3b9d5a[_0x6920('0x1d')],'include':_0x3b9d5a[_0x6920('0x20')]?_[_0x6920('0x1f')](_0x3b9d5a[_0x6920('0x20')],function(_0x50689a){return{'model':db[_0x50689a[_0x6920('0x21')]],'as':_0x50689a['as'],'attributes':_0x50689a[_0x6920('0x1d')]};}):[]};}):[]};}):[]:[]})['then'](function(_0xeb9c52){logger[_0x6920('0xe')](_0x6920('0x22'),_0x25d207);logger['debug'](_0x6920('0x22'),_0x25d207,JSON[_0x6920('0x13')](_0xeb9c52));_0x5539ba(_0xeb9c52);})[_0x6920('0x17')](function(_0x5c8bb0){logger[_0x6920('0x14')]('ShowTrigger',_0x5c8bb0[_0x6920('0x16')],_0x25d207);_0xcc3f4b(_0x1e54d6[_0x6920('0x14')](0x1f4,_0x5c8bb0['message']));});});};
\ No newline at end of file
index d9dda43..006e273 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0xce34=['create','update','delete','destroy','exports','multer','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./trunk.controller','get','isAuthenticated','index','/:id','show','post','/:id/clone','clone'];(function(_0x4c4055,_0x46ac5){var _0x23c83b=function(_0x325dd4){while(--_0x325dd4){_0x4c4055['push'](_0x4c4055['shift']());}};_0x23c83b(++_0x46ac5);}(_0xce34,0x1b5));var _0x4ce3=function(_0x545fae,_0x8ef952){_0x545fae=_0x545fae-0x0;var _0x41ef66=_0xce34[_0x545fae];return _0x41ef66;};'use strict';var multer=require(_0x4ce3('0x0'));var util=require(_0x4ce3('0x1'));var path=require(_0x4ce3('0x2'));var timeout=require(_0x4ce3('0x3'));var express=require(_0x4ce3('0x4'));var router=express[_0x4ce3('0x5')]();var fs_extra=require(_0x4ce3('0x6'));var auth=require(_0x4ce3('0x7'));var interaction=require(_0x4ce3('0x8'));var config=require(_0x4ce3('0x9'));var controller=require(_0x4ce3('0xa'));router[_0x4ce3('0xb')]('/',auth[_0x4ce3('0xc')](),controller[_0x4ce3('0xd')]);router[_0x4ce3('0xb')](_0x4ce3('0xe'),auth[_0x4ce3('0xc')](),controller[_0x4ce3('0xf')]);router[_0x4ce3('0x10')](_0x4ce3('0x11'),auth[_0x4ce3('0xc')](),controller[_0x4ce3('0x12')]);router[_0x4ce3('0x10')]('/',auth[_0x4ce3('0xc')](),controller[_0x4ce3('0x13')]);router['put']('/:id',auth[_0x4ce3('0xc')](),controller[_0x4ce3('0x14')]);router[_0x4ce3('0x15')](_0x4ce3('0xe'),auth[_0x4ce3('0xc')](),controller[_0x4ce3('0x16')]);module[_0x4ce3('0x17')]=router;
\ No newline at end of file
index 2f36ba6..0dd2542 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0x8c91=['uas','pai','fingerprint','certificate','passive','actpass','nonat','update,nonat','BOOLEAN','sequelize','exports','ENUM','friend','user','peer','STRING','from-voip-provider','ALLOWED_NOT_SCREENED','ALLOWED_PASSED_SCREEN','PROHIB_NOT_SCREENED','PROHIB_PASSED_SCREEN','PROHIB','setDataValue','transport','join','getDataValue','String\x20is\x20deprecated.\x20Please\x20use\x20an\x20Array\x20as\x20[\x22udp\x22,\x20\x22tcp\x22]','shortinfo','inband','yes','update','force_rport,comedia','nat','split','String\x20is\x20deprecated.\x20Please\x20use\x20an\x20Array\x20as\x20[\x22force_rport\x22,\x20\x22comedia\x22]','all','ulaw;alaw;gsm','allow','String\x20is\x20deprecated.\x20Please\x20use\x20an\x20Array\x20as\x20[\x22ulaw\x22,\x20\x22alaw\x22,\x20\x22alaw\x22]','insecure','String\x20is\x20deprecated.\x20Please\x20use\x20an\x20Array\x20as\x20[\x22port\x22,\x20\x22invite\x22]','never','INTEGER','\x22\x22\x20<>','accept','originate'];(function(_0xe78a72,_0x176939){var _0x6eda5f=function(_0x11fc4c){while(--_0x11fc4c){_0xe78a72['push'](_0xe78a72['shift']());}};_0x6eda5f(++_0x176939);}(_0x8c91,0xc1));var _0x18c9=function(_0xc7e724,_0x23d897){_0xc7e724=_0xc7e724-0x0;var _0x26c90e=_0x8c91[_0xc7e724];return _0x26c90e;};'use strict';var Sequelize=require(_0x18c9('0x0'));module[_0x18c9('0x1')]={'name':{'type':Sequelize['STRING'],'allowNull':![],'unique':'name','validate':{'notEmpty':!![],'is':/^[A-Za-z0-9\.\_]+$/i}},'type':{'type':Sequelize[_0x18c9('0x2')](_0x18c9('0x3'),_0x18c9('0x4'),_0x18c9('0x5')),'allowNull':![],'defaultValue':_0x18c9('0x3')},'context':{'type':Sequelize[_0x18c9('0x6')],'allowNull':![],'defaultValue':_0x18c9('0x7')},'callingpres':{'type':Sequelize[_0x18c9('0x2')](_0x18c9('0x8'),_0x18c9('0x9'),'ALLOWED_FAILED_SCREEN','ALLOWED',_0x18c9('0xa'),_0x18c9('0xb'),'PROHIB_FAILED_SCREEN',_0x18c9('0xc'))},'deny':{'type':Sequelize[_0x18c9('0x6')]},'permit':{'type':Sequelize['STRING']},'secret':{'type':Sequelize[_0x18c9('0x6')]},'md5secret':{'type':Sequelize[_0x18c9('0x6')]},'remotesecret':{'type':Sequelize['STRING']},'transport':{'type':Sequelize[_0x18c9('0x6')],'defaultValue':'udp','set':function(_0x2f2626){this[_0x18c9('0xd')](_0x18c9('0xe'),_0x2f2626?_0x2f2626[_0x18c9('0xf')](','):null);},'get':function(){return this[_0x18c9('0x10')]('transport')?this[_0x18c9('0x10')](_0x18c9('0xe'))['split'](','):null;},'comment':_0x18c9('0x11')},'dtmfmode':{'type':Sequelize['ENUM']('rfc2833','info',_0x18c9('0x12'),_0x18c9('0x13'),'auto'),'defaultValue':'rfc2833'},'directmedia':{'type':Sequelize[_0x18c9('0x2')](_0x18c9('0x14'),'no','nonat',_0x18c9('0x15'),'outgoing'),'defaultValue':'no'},'directrtpsetup':{'type':Sequelize['ENUM'](_0x18c9('0x14'),'no'),'defaultValue':'no'},'directmediapermit':{'type':Sequelize[_0x18c9('0x6')]},'directmediadeny':{'type':Sequelize[_0x18c9('0x6')]},'nat':{'type':Sequelize[_0x18c9('0x6')],'defaultValue':_0x18c9('0x16'),'set':function(_0x5905d7){this[_0x18c9('0xd')](_0x18c9('0x17'),_0x5905d7?_0x5905d7[_0x18c9('0xf')](','):null);},'get':function(){return this['getDataValue'](_0x18c9('0x17'))?this[_0x18c9('0x10')](_0x18c9('0x17'))[_0x18c9('0x18')](','):null;},'comment':_0x18c9('0x19')},'callgroup':{'type':Sequelize['STRING']},'namedcallgroup':{'type':Sequelize['STRING']},'pickupgroup':{'type':Sequelize['STRING']},'namedpickupgroup':{'type':Sequelize[_0x18c9('0x6')]},'language':{'type':Sequelize[_0x18c9('0x6')],'defaultValue':'en'},'tonezone':{'type':Sequelize[_0x18c9('0x6')],'allowNull':!![]},'disallow':{'type':Sequelize[_0x18c9('0x6')],'defaultValue':_0x18c9('0x1a')},'allow':{'type':Sequelize[_0x18c9('0x6')],'allowNull':![],'defaultValue':_0x18c9('0x1b'),'set':function(_0x3479fe){this[_0x18c9('0xd')]('allow',_0x3479fe?_0x3479fe[_0x18c9('0xf')](';'):_0x18c9('0x1b'));},'get':function(){return this[_0x18c9('0x10')]('allow')?this['getDataValue'](_0x18c9('0x1c'))['split'](';'):null;},'comment':_0x18c9('0x1d')},'autoframing':{'type':Sequelize['ENUM'](_0x18c9('0x14'),'no')},'insecure':{'type':Sequelize[_0x18c9('0x6')],'defaultValue':'port,invite','set':function(_0x38da47){this[_0x18c9('0xd')]('insecure',_0x38da47?_0x38da47[_0x18c9('0xf')](','):null);},'get':function(){return this[_0x18c9('0x10')](_0x18c9('0x1e'))?this[_0x18c9('0x10')](_0x18c9('0x1e'))['split'](','):null;},'comment':_0x18c9('0x1f')},'trustrpid':{'type':Sequelize[_0x18c9('0x2')]('yes','no'),'defaultValue':'no'},'trust_id_outbound':{'type':Sequelize['ENUM'](_0x18c9('0x14'),'no'),'defaultValue':'no'},'progressinband':{'type':Sequelize['ENUM'](_0x18c9('0x14'),'no',_0x18c9('0x20'))},'promiscredir':{'type':Sequelize[_0x18c9('0x2')](_0x18c9('0x14'),'no')},'useclientcode':{'type':Sequelize[_0x18c9('0x2')](_0x18c9('0x14'),'no')},'accountcode':{'type':Sequelize[_0x18c9('0x21')](0xb)},'setvar':{'type':Sequelize[_0x18c9('0x6')]},'callerid':{'type':Sequelize[_0x18c9('0x6')],'defaultValue':_0x18c9('0x22')},'amaflags':{'type':Sequelize[_0x18c9('0x6')]},'callcounter':{'type':Sequelize['ENUM'](_0x18c9('0x14'),'no'),'defaultValue':_0x18c9('0x14')},'busylevel':{'type':Sequelize[_0x18c9('0x21')](0xb)},'allowoverlap':{'type':Sequelize[_0x18c9('0x2')]('yes','no')},'allowsubscribe':{'type':Sequelize[_0x18c9('0x2')](_0x18c9('0x14'),'no')},'allowtransfer':{'type':Sequelize['ENUM'](_0x18c9('0x14'),'no')},'ignoresdpversion':{'type':Sequelize[_0x18c9('0x2')](_0x18c9('0x14'),'no')},'subscribecontext':{'type':Sequelize[_0x18c9('0x6')]},'template':{'type':Sequelize['STRING']},'videosupport':{'type':Sequelize[_0x18c9('0x2')]('yes','no','always'),'defaultValue':'no'},'maxcallbitrate':{'type':Sequelize['INTEGER'](0xb)},'rfc2833compensate':{'type':Sequelize['ENUM'](_0x18c9('0x14'),'no')},'mailbox':{'type':Sequelize['STRING']},'session_timers':{'type':Sequelize['ENUM'](_0x18c9('0x23'),'refuse',_0x18c9('0x24'))},'session_expires':{'type':Sequelize['INTEGER'](0xb)},'session_minse':{'type':Sequelize['INTEGER'](0xb)},'session_refresher':{'type':Sequelize[_0x18c9('0x2')]('uac',_0x18c9('0x25')),'defaultValue':'uas'},'t38pt_usertpsource':{'type':Sequelize[_0x18c9('0x6')]},'regexten':{'type':Sequelize[_0x18c9('0x6')]},'fromdomain':{'type':Sequelize[_0x18c9('0x6')]},'fromuser':{'type':Sequelize['STRING']},'port':{'type':Sequelize['INTEGER'](0x5)},'qualify':{'type':Sequelize[_0x18c9('0x2')](_0x18c9('0x14'),'no'),'defaultValue':_0x18c9('0x14')},'keepalive':{'type':Sequelize[_0x18c9('0x21')](0xb)},'defaultip':{'type':Sequelize[_0x18c9('0x6')]},'defaultuser':{'type':Sequelize['STRING']},'rtptimeout':{'type':Sequelize[_0x18c9('0x21')](0xb)},'rtpholdtimeout':{'type':Sequelize[_0x18c9('0x21')](0xb)},'rtpkeepalive':{'type':Sequelize[_0x18c9('0x21')](0xb)},'sendrpid':{'type':Sequelize[_0x18c9('0x2')](_0x18c9('0x14'),'no',_0x18c9('0x26')),'defaultValue':'no'},'outboundproxy':{'type':Sequelize[_0x18c9('0x6')]},'callbackextension':{'type':Sequelize[_0x18c9('0x6')]},'timert1':{'type':Sequelize[_0x18c9('0x21')](0xb)},'timerb':{'type':Sequelize[_0x18c9('0x21')](0xb)},'qualifyfreq':{'type':Sequelize[_0x18c9('0x21')](0xb)},'contactpermit':{'type':Sequelize[_0x18c9('0x6')]},'contactdeny':{'type':Sequelize['STRING']},'contactacl':{'type':Sequelize[_0x18c9('0x6')]},'unsolicited_mailbox':{'type':Sequelize['STRING']},'use_q850_reason':{'type':Sequelize['STRING']},'maxforwards':{'type':Sequelize[_0x18c9('0x21')](0xb)},'encryption':{'type':Sequelize[_0x18c9('0x2')](_0x18c9('0x14'),'no'),'defaultValue':'no'},'avpf':{'type':Sequelize['ENUM'](_0x18c9('0x14'),'no')},'force_avp':{'type':Sequelize[_0x18c9('0x2')](_0x18c9('0x14'),'no')},'icesupport':{'type':Sequelize[_0x18c9('0x2')](_0x18c9('0x14'),'no')},'dtlsenable':{'type':Sequelize[_0x18c9('0x2')]('yes','no')},'dtlsverify':{'type':Sequelize[_0x18c9('0x2')](_0x18c9('0x14'),'no',_0x18c9('0x27'),_0x18c9('0x28'))},'dtlsrekey':{'type':Sequelize[_0x18c9('0x21')](0xb)},'dtlscertfile':{'type':Sequelize['STRING']},'dtlsprivatekey':{'type':Sequelize[_0x18c9('0x6')]},'dtlscipher':{'type':Sequelize[_0x18c9('0x6')]},'dtlscafile':{'type':Sequelize[_0x18c9('0x6')]},'dtlscapath':{'type':Sequelize[_0x18c9('0x6')]},'dtlssetup':{'type':Sequelize['ENUM']('active',_0x18c9('0x29'),_0x18c9('0x2a')),'allowNull':!![]},'dtlsfingerprint':{'type':Sequelize[_0x18c9('0x6')]},'usereqphone':{'type':Sequelize[_0x18c9('0x2')](_0x18c9('0x14'),'no'),'defaultValue':'no'},'recordonfeature':{'type':Sequelize['STRING']},'recordofffeature':{'type':Sequelize['STRING']},'call_limit':{'type':Sequelize[_0x18c9('0x21')](0xb),'defaultValue':0x3e8},'registertrying':{'type':Sequelize[_0x18c9('0x2')]('yes','no')},'subscribemwi':{'type':Sequelize['ENUM'](_0x18c9('0x14'),'no')},'vmexten':{'type':Sequelize[_0x18c9('0x6')]},'mohinterpret':{'type':Sequelize['STRING']},'mohsuggest':{'type':Sequelize['STRING']},'parkinglot':{'type':Sequelize[_0x18c9('0x6')]},'description':{'type':Sequelize[_0x18c9('0x6')]},'host':{'type':Sequelize[_0x18c9('0x6')],'defaultValue':'dynamic'},'canreinvite':{'type':Sequelize[_0x18c9('0x2')]('yes','no',_0x18c9('0x2b'),_0x18c9('0x15'),_0x18c9('0x2c')),'defaultValue':'no'},'registry':{'type':Sequelize[_0x18c9('0x6')]},'otherFields':{'type':Sequelize[_0x18c9('0x6')]},'active':{'type':Sequelize[_0x18c9('0x2d')],'allowNull':![],'defaultValue':!![]},'t38pt_udptl':{'type':Sequelize['STRING'],'defaultValue':'no'}};
\ No newline at end of file
index 6197b0f..abf7305 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x98a8=['../../mysqldb','jayson/promise','client','request','Trunk,\x20%s,\x20%s','debug','request\x20sent','error','code','message','info','catch','sendStatus','status','end','offset','undefined','limit','count','set','Content-Range','json','apply','reject','update','then','destroy','get','Trunks','UserProfileResource','stack','name','map','fieldName','model','query','filters','attributes','intersection','fields','length','hasOwnProperty','nolimit','order','sort','where','filter','merge','VIRTUAL','options','Trunk','include','show','params','keys','rawAttributes','includeAll','clone','find','createdAt','updatedAt','body','omit','create','user','role','UserProfileSection','userProfileId','autoAssociation','findAll','readFileSync','root','server/files/templates/trunk.ejs','join','server/files/templates/registry.ejs','utf8','render','writeFileSync','/etc/asterisk/sip_xcally_trunks.conf','registry','/etc/asterisk/sip_xcally_registers.conf','Reload','chan_sip.so','Unable\x20to\x20retrieve\x20the\x20current\x20user','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','util','path','sox','to-csv','ejs','lodash','crypto','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/environment'];(function(_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
+var _0x34e8=['limit','count','set','Content-Range','json','apply','save','update','destroy','get','Trunks','UserProfileResource','stack','name','index','map','Trunk','key','query','keys','intersection','model','attributes','hasOwnProperty','nolimit','order','sort','filters','pick','filter','where','merge','type','VIRTUAL','options','includeAll','include','findAll','rows','catch','show','params','fields','length','find','clone','rawAttributes','omit','createdAt','updatedAt','body','create','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','userProfileId','autoAssociation','join','root','server/files/templates/trunk.ejs','utf8','readFileSync','writeFileSync','/etc/asterisk/sip_xcally_trunks.conf','render','Reload','chan_sip.so','UserProfileSection','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','/etc/asterisk/sip_xcally_registers.conf','eml-format','rimraf','zip-dir','fast-json-patch','moment','bluebird','mustache','util','path','sox','to-csv','fs-extra','squel','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','jayson/promise','client','then','info','Trunk,\x20%s,\x20%s','debug','Trunk,\x20%s,\x20%s,\x20%s','request\x20sent','error','code','message','result','sendStatus','status','end','offset','undefined'];(function(_0x27841e,_0x45435f){var _0x30d008=function(_0x2d2a60){while(--_0x2d2a60){_0x27841e['push'](_0x27841e['shift']());}};_0x30d008(++_0x45435f);}(_0x34e8,0x12c));var _0x834e=function(_0x32c053,_0x1a7c2a){_0x32c053=_0x32c053-0x0;var _0x43dce9=_0x34e8[_0x32c053];return _0x43dce9;};'use strict';var emlformat=require(_0x834e('0x0'));var rimraf=require(_0x834e('0x1'));var zipdir=require(_0x834e('0x2'));var jsonpatch=require(_0x834e('0x3'));var rp=require('request-promise');var moment=require(_0x834e('0x4'));var BPromise=require(_0x834e('0x5'));var Mustache=require(_0x834e('0x6'));var util=require(_0x834e('0x7'));var path=require(_0x834e('0x8'));var sox=require(_0x834e('0x9'));var csv=require(_0x834e('0xa'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x834e('0xb'));var _=require('lodash');var squel=require(_0x834e('0xc'));var crypto=require(_0x834e('0xd'));var jsforce=require(_0x834e('0xe'));var deskjs=require(_0x834e('0xf'));var toCsv=require(_0x834e('0xa'));var querystring=require(_0x834e('0x10'));var Papa=require(_0x834e('0x11'));var Redis=require(_0x834e('0x12'));var authService=require(_0x834e('0x13'));var qs=require(_0x834e('0x14'));var as=require(_0x834e('0x15'));var hardwareService=require(_0x834e('0x16'));var logger=require(_0x834e('0x17'))(_0x834e('0x18'));var utils=require(_0x834e('0x19'));var config=require(_0x834e('0x1a'));var licenseUtil=require(_0x834e('0x1b'));var db=require('../../mysqldb')['db'];var jayson=require(_0x834e('0x1c'));var client=jayson[_0x834e('0x1d')]['http']({'port':0x232a});function respondWithRpcPromise(_0x23848e,_0x2d95f2,_0x28e659,_0x21cc0a){return new BPromise(function(_0x50e860,_0x43156c){var _0x302cbd=_0x21cc0a||client;return _0x302cbd['request'](_0x23848e,_0x28e659)[_0x834e('0x1e')](function(_0x4a9cdc){logger[_0x834e('0x1f')](_0x834e('0x20'),_0x2d95f2,'request\x20sent');logger[_0x834e('0x21')](_0x834e('0x22'),_0x2d95f2,_0x834e('0x23'),JSON['stringify'](_0x4a9cdc));if(_0x4a9cdc[_0x834e('0x24')]){if(_0x4a9cdc[_0x834e('0x24')][_0x834e('0x25')]===0x1f4){logger[_0x834e('0x24')](_0x834e('0x20'),_0x2d95f2,_0x4a9cdc[_0x834e('0x24')][_0x834e('0x26')]);return _0x43156c(_0x4a9cdc['error'][_0x834e('0x26')]);}logger[_0x834e('0x24')](_0x834e('0x20'),_0x2d95f2,_0x4a9cdc[_0x834e('0x24')]['message']);return _0x50e860(_0x4a9cdc[_0x834e('0x24')][_0x834e('0x26')]);}else{logger['info'](_0x834e('0x20'),_0x2d95f2,_0x834e('0x23'));_0x50e860(_0x4a9cdc[_0x834e('0x27')]['message']);}})['catch'](function(_0x231619){logger[_0x834e('0x24')]('Trunk,\x20%s,\x20%s',_0x2d95f2,_0x231619);_0x43156c(_0x231619);});});}function respondWithStatusCode(_0x25ee1d,_0x1dc1e0){_0x1dc1e0=_0x1dc1e0||0xcc;return function(_0x58f4fd){if(_0x58f4fd){return _0x25ee1d[_0x834e('0x28')](_0x1dc1e0);}return _0x25ee1d[_0x834e('0x29')](_0x1dc1e0)[_0x834e('0x2a')]();};}function respondWithResult(_0x561cd2,_0x24fcf7){_0x24fcf7=_0x24fcf7||0xc8;return function(_0x3e310f){if(_0x3e310f){return _0x561cd2['status'](_0x24fcf7)['json'](_0x3e310f);}};}function respondWithFilteredResult(_0x1e713a,_0x508a1d){return function(_0x2826ec){if(_0x2826ec){var _0x3f1b0b=typeof _0x508a1d[_0x834e('0x2b')]===_0x834e('0x2c')&&typeof _0x508a1d[_0x834e('0x2d')]===_0x834e('0x2c');var _0x491919=_0x2826ec['count'];var _0x4dc64a=_0x3f1b0b?0x0:_0x508a1d['offset'];var _0x2c7a8d=_0x3f1b0b?_0x2826ec[_0x834e('0x2e')]:_0x508a1d[_0x834e('0x2b')]+_0x508a1d['limit'];var _0xb5bc06;if(_0x2c7a8d>=_0x491919){_0x2c7a8d=_0x491919;_0xb5bc06=0xc8;}else{_0xb5bc06=0xce;}_0x1e713a[_0x834e('0x29')](_0xb5bc06);return _0x1e713a[_0x834e('0x2f')](_0x834e('0x30'),_0x4dc64a+'-'+_0x2c7a8d+'/'+_0x491919)[_0x834e('0x31')](_0x2826ec);}return null;};}function patchUpdates(_0x390119){return function(_0x3d149d){try{jsonpatch[_0x834e('0x32')](_0x3d149d,_0x390119,!![]);}catch(_0x278db3){return BPromise['reject'](_0x278db3);}return _0x3d149d[_0x834e('0x33')]();};}function saveUpdates(_0x5cad11,_0x2c75c2){return function(_0x3787b0){if(_0x3787b0){return _0x3787b0[_0x834e('0x34')](_0x5cad11)[_0x834e('0x1e')](function(_0x444366){return _0x444366;});}return null;};}function removeEntity(_0x4689c2,_0x4696a1){return function(_0x38cd29){if(_0x38cd29){return _0x38cd29[_0x834e('0x35')]()[_0x834e('0x1e')](function(){var _0x5bd232=_0x38cd29[_0x834e('0x36')]({'plain':!![]});var _0x2f408a=_0x834e('0x37');return db[_0x834e('0x38')]['destroy']({'where':{'type':_0x2f408a,'resourceId':_0x5bd232['id']}})[_0x834e('0x1e')](function(){return _0x38cd29;});})[_0x834e('0x1e')](function(){_0x4689c2['status'](0xcc)['end']();});}};}function handleEntityNotFound(_0x59385a,_0x3e58fa){return function(_0x41bf4d){if(!_0x41bf4d){_0x59385a[_0x834e('0x28')](0x194);}return _0x41bf4d;};}function handleError(_0x34fefb,_0x339e28){_0x339e28=_0x339e28||0x1f4;return function(_0x1b76dd){logger['error'](_0x1b76dd[_0x834e('0x39')]);if(_0x1b76dd['name']){delete _0x1b76dd[_0x834e('0x3a')];}_0x34fefb[_0x834e('0x29')](_0x339e28)['send'](_0x1b76dd);};}exports[_0x834e('0x3b')]=function(_0x2f56c7,_0x491c28){var _0x481f70={},_0x388711={},_0xd0d43a={'count':0x0,'rows':[]};var _0x2e9383=_[_0x834e('0x3c')](db[_0x834e('0x3d')]['rawAttributes'],function(_0x1c5ed6){return{'name':_0x1c5ed6['fieldName'],'type':_0x1c5ed6['type'][_0x834e('0x3e')]};});_0x388711['model']=_[_0x834e('0x3c')](_0x2e9383,_0x834e('0x3a'));_0x388711[_0x834e('0x3f')]=_[_0x834e('0x40')](_0x2f56c7[_0x834e('0x3f')]);_0x388711['filters']=_[_0x834e('0x41')](_0x388711[_0x834e('0x42')],_0x388711[_0x834e('0x3f')]);_0x481f70['attributes']=_[_0x834e('0x41')](_0x388711[_0x834e('0x42')],qs['fields'](_0x2f56c7[_0x834e('0x3f')]['fields']));_0x481f70[_0x834e('0x43')]=_0x481f70[_0x834e('0x43')]['length']?_0x481f70['attributes']:_0x388711[_0x834e('0x42')];if(!_0x2f56c7[_0x834e('0x3f')][_0x834e('0x44')](_0x834e('0x45'))){_0x481f70[_0x834e('0x2d')]=qs[_0x834e('0x2d')](_0x2f56c7[_0x834e('0x3f')]['limit']);_0x481f70[_0x834e('0x2b')]=qs['offset'](_0x2f56c7[_0x834e('0x3f')]['offset']);}_0x481f70[_0x834e('0x46')]=qs['sort'](_0x2f56c7[_0x834e('0x3f')][_0x834e('0x47')]);_0x481f70['where']=qs[_0x834e('0x48')](_[_0x834e('0x49')](_0x2f56c7[_0x834e('0x3f')],_0x388711[_0x834e('0x48')]),_0x2e9383);if(_0x2f56c7[_0x834e('0x3f')][_0x834e('0x4a')]){_0x481f70[_0x834e('0x4b')]=_[_0x834e('0x4c')](_0x481f70[_0x834e('0x4b')],{'$or':_[_0x834e('0x3c')](_0x2e9383,function(_0x5f3943){if(_0x5f3943[_0x834e('0x4d')]!==_0x834e('0x4e')){var _0x47a8a9={};_0x47a8a9[_0x5f3943[_0x834e('0x3a')]]={'$like':'%'+_0x2f56c7[_0x834e('0x3f')][_0x834e('0x4a')]+'%'};return _0x47a8a9;}})});}_0x481f70=_[_0x834e('0x4c')]({},_0x481f70,_0x2f56c7[_0x834e('0x4f')]);var _0x4264b8={'where':_0x481f70['where']};return db['Trunk'][_0x834e('0x2e')](_0x4264b8)[_0x834e('0x1e')](function(_0x30568e){_0xd0d43a[_0x834e('0x2e')]=_0x30568e;if(_0x2f56c7[_0x834e('0x3f')][_0x834e('0x50')]){_0x481f70[_0x834e('0x51')]=[{'all':!![]}];}return db[_0x834e('0x3d')][_0x834e('0x52')](_0x481f70);})[_0x834e('0x1e')](function(_0xf02f0d){_0xd0d43a[_0x834e('0x53')]=_0xf02f0d;return _0xd0d43a;})[_0x834e('0x1e')](respondWithFilteredResult(_0x491c28,_0x481f70))[_0x834e('0x54')](handleError(_0x491c28,null));};exports[_0x834e('0x55')]=function(_0x1a3855,_0x3df078){var _0x32b8f7={'raw':![],'where':{'id':_0x1a3855[_0x834e('0x56')]['id']}},_0x420841={};_0x420841['model']=_[_0x834e('0x40')](db[_0x834e('0x3d')]['rawAttributes']);_0x420841[_0x834e('0x3f')]=_[_0x834e('0x40')](_0x1a3855['query']);_0x420841[_0x834e('0x48')]=_[_0x834e('0x41')](_0x420841[_0x834e('0x42')],_0x420841[_0x834e('0x3f')]);_0x32b8f7[_0x834e('0x43')]=_[_0x834e('0x41')](_0x420841[_0x834e('0x42')],qs['fields'](_0x1a3855[_0x834e('0x3f')][_0x834e('0x57')]));_0x32b8f7[_0x834e('0x43')]=_0x32b8f7[_0x834e('0x43')][_0x834e('0x58')]?_0x32b8f7[_0x834e('0x43')]:_0x420841[_0x834e('0x42')];if(_0x1a3855[_0x834e('0x3f')]['includeAll']){_0x32b8f7[_0x834e('0x51')]=[{'all':!![]}];}_0x32b8f7=_['merge']({},_0x32b8f7,_0x1a3855[_0x834e('0x4f')]);return db['Trunk'][_0x834e('0x59')](_0x32b8f7)['then'](handleEntityNotFound(_0x3df078,null))['then'](respondWithResult(_0x3df078,null))[_0x834e('0x54')](handleError(_0x3df078,null));};exports[_0x834e('0x5a')]=function(_0x5291ae,_0x5be43d){var _0x2c8155={'where':{'id':_0x5291ae[_0x834e('0x56')]['id']}},_0x2452b4={};_0x2452b4[_0x834e('0x42')]=_[_0x834e('0x40')](db[_0x834e('0x3d')][_0x834e('0x5b')]);_0x2c8155[_0x834e('0x43')]=_['intersection'](_0x2452b4[_0x834e('0x42')],qs[_0x834e('0x57')](_0x5291ae['query'][_0x834e('0x57')]));_0x2c8155['attributes']=_0x2c8155[_0x834e('0x43')][_0x834e('0x58')]?_0x2c8155['attributes']:_0x2452b4[_0x834e('0x42')];if(_0x5291ae[_0x834e('0x3f')][_0x834e('0x50')]){_0x2c8155[_0x834e('0x51')]=[{'all':!![]}];}_0x2c8155=_['merge']({},_0x2c8155,_0x5291ae[_0x834e('0x4f')]);return db[_0x834e('0x3d')][_0x834e('0x59')](_0x2c8155)['then'](handleEntityNotFound(_0x5be43d,null))[_0x834e('0x1e')](function(_0x1fcae9){if(_0x1fcae9){var _0x3a7683=_0x1fcae9[_0x834e('0x36')]({'plain':!![]});_0x3a7683=qs[_0x834e('0x5c')](_0x3a7683,['id',_0x834e('0x5d'),_0x834e('0x5e')]);_0x5291ae[_0x834e('0x5f')]=_[_0x834e('0x5c')](_0x5291ae[_0x834e('0x5f')],['id',_0x834e('0x5d'),_0x834e('0x5e')]);return db[_0x834e('0x3d')][_0x834e('0x60')](_[_0x834e('0x4c')](_0x3a7683,_0x5291ae[_0x834e('0x5f')]),{'include':_0x5291ae[_0x834e('0x3f')][_0x834e('0x50')]?[{'all':!![]}]:undefined})[_0x834e('0x1e')](function(_0x3e3467){var _0xed4081=_0x5291ae[_0x834e('0x61')]['get']({'plain':!![]});if(!_0xed4081)throw new Error(_0x834e('0x62'));if(_0xed4081[_0x834e('0x63')]===_0x834e('0x61')){var _0x36cc14=_0x3e3467['get']({'plain':!![]});var _0x30faa8='Trunks';return db['UserProfileSection'][_0x834e('0x59')]({'where':{'name':_0x30faa8,'userProfileId':_0xed4081[_0x834e('0x64')]},'raw':!![]})[_0x834e('0x1e')](function(_0xe79465){if(_0xe79465&&_0xe79465[_0x834e('0x65')]===0x0){return db[_0x834e('0x38')][_0x834e('0x60')]({'name':_0x36cc14[_0x834e('0x3a')],'resourceId':_0x36cc14['id'],'type':_0xe79465['name'],'sectionId':_0xe79465['id']},{})[_0x834e('0x1e')](function(){return _0x3e3467;});}else{return _0x3e3467;}})['catch'](function(_0x17e223){logger[_0x834e('0x24')]('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x17e223);throw _0x17e223;});}return _0x3e3467;});}})['then'](respondWithResult(_0x5be43d,0xc9))[_0x834e('0x54')](handleError(_0x5be43d,null));};exports[_0x834e('0x60')]=function(_0x363cc2,_0x2cca07,_0x2c41bd){var _0x5a4854;return db[_0x834e('0x3d')][_0x834e('0x60')](_0x363cc2[_0x834e('0x5f')],{'raw':!![]})[_0x834e('0x1e')](function(_0x3181af){_0x5a4854=_0x3181af;return db[_0x834e('0x3d')][_0x834e('0x52')]({'raw':!![]});})[_0x834e('0x1e')](function(_0x376f72){var _0x324f67=fs['readFileSync'](path[_0x834e('0x66')](config[_0x834e('0x67')],_0x834e('0x68')),_0x834e('0x69'));var _0x51cfab=fs[_0x834e('0x6a')](path['join'](config['root'],'server/files/templates/registry.ejs'),_0x834e('0x69'));var _0x332d8f=ejs['render'](_0x324f67,{'trunks':_0x376f72||[]});fs[_0x834e('0x6b')](_0x834e('0x6c'),_0x332d8f);if(_0x5a4854['registry']){var _0x353246=ejs[_0x834e('0x6d')](_0x51cfab,{'trunks':_0x376f72||[]});fs['writeFileSync']('/etc/asterisk/sip_xcally_registers.conf',_0x353246);}})[_0x834e('0x1e')](function(){return respondWithRpcPromise(_0x834e('0x6e'),_0x834e('0x60'),{'module':_0x834e('0x6f')});})[_0x834e('0x1e')](function(){var _0x493239=_0x363cc2[_0x834e('0x61')]['get']({'plain':!![]});if(!_0x493239)throw new Error(_0x834e('0x62'));if(_0x493239[_0x834e('0x63')]===_0x834e('0x61')){var _0x5afb41=_0x5a4854[_0x834e('0x36')]({'plain':!![]});return db[_0x834e('0x70')]['find']({'where':{'name':_0x834e('0x37'),'userProfileId':_0x493239[_0x834e('0x64')]},'raw':!![]})[_0x834e('0x1e')](function(_0x50d0a3){if(_0x50d0a3&&_0x50d0a3[_0x834e('0x65')]===0x0){return db[_0x834e('0x38')][_0x834e('0x60')]({'name':_0x5afb41[_0x834e('0x3a')],'resourceId':_0x5afb41['id'],'type':_0x50d0a3[_0x834e('0x3a')],'sectionId':_0x50d0a3['id']},{})[_0x834e('0x1e')](function(){return _0x5a4854;});}else{return _0x5a4854;}})[_0x834e('0x54')](function(_0x23b5d9){logger[_0x834e('0x24')](_0x834e('0x71'),_0x23b5d9);throw _0x23b5d9;});}return _0x5a4854;})['then'](respondWithResult(_0x2cca07,0xc9))['catch'](handleError(_0x2cca07,null));};exports['update']=function(_0x36ede9,_0x1135a5,_0x313c03){var _0x37fa2c;return db[_0x834e('0x3d')]['find']({'where':{'id':_0x36ede9['params']['id']}})[_0x834e('0x1e')](handleEntityNotFound(_0x1135a5,null))[_0x834e('0x1e')](saveUpdates(_0x36ede9[_0x834e('0x5f')],null))[_0x834e('0x1e')](function(_0x40a705){if(_0x40a705){_0x37fa2c=_0x40a705;return db['Trunk'][_0x834e('0x52')]({'raw':!![]});}})[_0x834e('0x1e')](function(_0x113714){if(_0x113714){var _0x4e1735=fs[_0x834e('0x6a')](path[_0x834e('0x66')](config[_0x834e('0x67')],_0x834e('0x68')),_0x834e('0x69'));var _0x585d02=fs['readFileSync'](path[_0x834e('0x66')](config[_0x834e('0x67')],'server/files/templates/registry.ejs'),_0x834e('0x69'));var _0x509427=ejs[_0x834e('0x6d')](_0x4e1735,{'trunks':_0x113714||[]});fs[_0x834e('0x6b')](_0x834e('0x6c'),_0x509427);var _0x53012d=ejs[_0x834e('0x6d')](_0x585d02,{'trunks':_0x113714||[]});fs['writeFileSync']('/etc/asterisk/sip_xcally_registers.conf',_0x53012d);return respondWithRpcPromise('Reload',_0x834e('0x34'),{'module':_0x834e('0x6f')});}return null;})[_0x834e('0x1e')](function(_0x1d76c6){if(_0x1d76c6){return _0x37fa2c;}})[_0x834e('0x1e')](respondWithResult(_0x1135a5,null))[_0x834e('0x54')](handleError(_0x1135a5,null));};exports[_0x834e('0x35')]=function(_0x179892,_0x17e61a,_0x53f6e3){var _0x2f775a;return db['Trunk'][_0x834e('0x59')]({'where':{'id':_0x179892[_0x834e('0x56')]['id']}})[_0x834e('0x1e')](handleEntityNotFound(_0x17e61a,null))[_0x834e('0x1e')](removeEntity(_0x17e61a,null))[_0x834e('0x1e')](function(){return db[_0x834e('0x3d')]['findAll']({'raw':!![]});})['then'](function(_0xeb096d){var _0x2a854a=fs['readFileSync'](path[_0x834e('0x66')](config[_0x834e('0x67')],_0x834e('0x68')),_0x834e('0x69'));var _0xc75f5e=fs['readFileSync'](path[_0x834e('0x66')](config[_0x834e('0x67')],'server/files/templates/registry.ejs'),'utf8');var _0x5ede29=ejs[_0x834e('0x6d')](_0x2a854a,{'trunks':_0xeb096d});var _0x1f3e26=ejs['render'](_0xc75f5e,{'trunks':_0xeb096d});fs[_0x834e('0x6b')](_0x834e('0x6c'),_0x5ede29);fs['writeFileSync'](_0x834e('0x72'),_0x1f3e26);return respondWithRpcPromise('Reload','destroy',{'module':_0x834e('0x6f')});})[_0x834e('0x54')](handleError(_0x17e61a,null));};
\ No newline at end of file
index eb21792..6b81149 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0xb916=['tools_trunks','lodash','util','../../config/logger','moment','bluebird','request-promise','../../config/environment','./trunk.attributes','Trunk'];(function(_0x4bfade,_0xb26c0e){var _0x272465=function(_0x3b38cb){while(--_0x3b38cb){_0x4bfade['push'](_0x4bfade['shift']());}};_0x272465(++_0xb26c0e);}(_0xb916,0x173));var _0x6b91=function(_0x26cab7,_0x1ccfca){_0x26cab7=_0x26cab7-0x0;var _0x31ba06=_0xb916[_0x26cab7];return _0x31ba06;};'use strict';var _=require(_0x6b91('0x0'));var util=require(_0x6b91('0x1'));var logger=require(_0x6b91('0x2'))('api');var moment=require(_0x6b91('0x3'));var BPromise=require(_0x6b91('0x4'));var rp=require(_0x6b91('0x5'));var fs=require('fs');var path=require('path');var rimraf=require('rimraf');var config=require(_0x6b91('0x6'));var attributes=require(_0x6b91('0x7'));module['exports']=function(_0x3762a1,_0x380737){return _0x3762a1['define'](_0x6b91('0x8'),attributes,{'tableName':_0x6b91('0x9'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 1259e6e..d9f660d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0xd08f=['error','code','message','catch','Trunk','findAll','options','raw','attributes','limit','include','map','model','GetTrunk','ShowTrunk','find','debug','lodash','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','then','info','Trunk,\x20%s,\x20%s','request\x20sent','Trunk,\x20%s,\x20%s,\x20%s','stringify'];(function(_0x138f59,_0x1b53fb){var _0x3d114d=function(_0x1f9461){while(--_0x1f9461){_0x138f59['push'](_0x138f59['shift']());}};_0x3d114d(++_0x1b53fb);}(_0xd08f,0x1e5));var _0xfd08=function(_0x5524a4,_0x335747){_0x5524a4=_0x5524a4-0x0;var _0x53469d=_0xd08f[_0x5524a4];return _0x53469d;};'use strict';var _=require(_0xfd08('0x0'));var util=require('util');var moment=require(_0xfd08('0x1'));var BPromise=require(_0xfd08('0x2'));var rs=require(_0xfd08('0x3'));var fs=require('fs');var Redis=require(_0xfd08('0x4'));var db=require(_0xfd08('0x5'))['db'];var utils=require(_0xfd08('0x6'));var logger=require(_0xfd08('0x7'))(_0xfd08('0x8'));var config=require(_0xfd08('0x9'));var jayson=require(_0xfd08('0xa'));var client=jayson[_0xfd08('0xb')][_0xfd08('0xc')]({'port':0x232a});function respondWithRpcPromise(_0x4112aa,_0x1e1999,_0x36cefa){return new BPromise(function(_0x169c7f,_0x23e77e){return client['request'](_0x4112aa,_0x36cefa)[_0xfd08('0xd')](function(_0x5699df){logger[_0xfd08('0xe')](_0xfd08('0xf'),_0x1e1999,_0xfd08('0x10'));logger['debug'](_0xfd08('0x11'),_0x1e1999,_0xfd08('0x10'),JSON[_0xfd08('0x12')](_0x5699df));if(_0x5699df[_0xfd08('0x13')]){if(_0x5699df[_0xfd08('0x13')][_0xfd08('0x14')]===0x1f4){logger[_0xfd08('0x13')](_0xfd08('0xf'),_0x1e1999,_0x5699df[_0xfd08('0x13')][_0xfd08('0x15')]);return _0x23e77e(_0x5699df['error'][_0xfd08('0x15')]);}logger[_0xfd08('0x13')]('Trunk,\x20%s,\x20%s',_0x1e1999,_0x5699df[_0xfd08('0x13')]['message']);return _0x169c7f(_0x5699df['error']['message']);}else{logger[_0xfd08('0xe')](_0xfd08('0xf'),_0x1e1999,_0xfd08('0x10'));_0x169c7f(_0x5699df['result']['message']);}})[_0xfd08('0x16')](function(_0x203d8b){logger[_0xfd08('0x13')]('Trunk,\x20%s,\x20%s',_0x1e1999,_0x203d8b);_0x23e77e(_0x203d8b);});});}exports['GetTrunk']=function(_0x494b75){var _0x5664b5=this;return new Promise(function(_0x5376f5,_0x35443d){return db[_0xfd08('0x17')][_0xfd08('0x18')]({'raw':_0x494b75[_0xfd08('0x19')]?_0x494b75[_0xfd08('0x19')][_0xfd08('0x1a')]===undefined?!![]:![]:!![],'where':_0x494b75[_0xfd08('0x19')]?_0x494b75['options']['where']||null:null,'attributes':_0x494b75[_0xfd08('0x19')]?_0x494b75[_0xfd08('0x19')][_0xfd08('0x1b')]||null:null,'limit':_0x494b75['options']?_0x494b75['options'][_0xfd08('0x1c')]||null:null,'include':_0x494b75[_0xfd08('0x19')]?_0x494b75[_0xfd08('0x19')][_0xfd08('0x1d')]?_[_0xfd08('0x1e')](_0x494b75[_0xfd08('0x19')][_0xfd08('0x1d')],function(_0x5b4f25){return{'model':db[_0x5b4f25[_0xfd08('0x1f')]],'as':_0x5b4f25['as'],'attributes':_0x5b4f25['attributes'],'include':_0x5b4f25[_0xfd08('0x1d')]?_[_0xfd08('0x1e')](_0x5b4f25[_0xfd08('0x1d')],function(_0x30fb7f){return{'model':db[_0x30fb7f[_0xfd08('0x1f')]],'as':_0x30fb7f['as'],'attributes':_0x30fb7f['attributes'],'include':_0x30fb7f['include']?_['map'](_0x30fb7f['include'],function(_0x15c821){return{'model':db[_0x15c821['model']],'as':_0x15c821['as'],'attributes':_0x15c821[_0xfd08('0x1b')]};}):[]};}):[]};}):[]:[]})[_0xfd08('0xd')](function(_0x1fcc24){logger[_0xfd08('0xe')](_0xfd08('0x20'),_0x494b75);logger['debug']('GetTrunk',_0x494b75,JSON[_0xfd08('0x12')](_0x1fcc24));_0x5376f5(_0x1fcc24);})[_0xfd08('0x16')](function(_0x4f52fa){logger[_0xfd08('0x13')]('GetTrunk',_0x4f52fa[_0xfd08('0x15')],_0x494b75);_0x35443d(_0x5664b5['error'](0x1f4,_0x4f52fa[_0xfd08('0x15')]));});});};exports[_0xfd08('0x21')]=function(_0xe07496){var _0x46dfbf=this;return new Promise(function(_0x142e28,_0xdc6333){return db[_0xfd08('0x17')][_0xfd08('0x22')]({'raw':_0xe07496[_0xfd08('0x19')]?_0xe07496[_0xfd08('0x19')][_0xfd08('0x1a')]===undefined?!![]:![]:!![],'where':_0xe07496['options']?_0xe07496[_0xfd08('0x19')]['where']||null:null,'attributes':_0xe07496['options']?_0xe07496[_0xfd08('0x19')]['attributes']||null:null,'include':_0xe07496[_0xfd08('0x19')]?_0xe07496[_0xfd08('0x19')][_0xfd08('0x1d')]?_[_0xfd08('0x1e')](_0xe07496[_0xfd08('0x19')][_0xfd08('0x1d')],function(_0x853900){return{'model':db[_0x853900['model']],'as':_0x853900['as'],'attributes':_0x853900['attributes'],'include':_0x853900[_0xfd08('0x1d')]?_[_0xfd08('0x1e')](_0x853900[_0xfd08('0x1d')],function(_0x451a3e){return{'model':db[_0x451a3e['model']],'as':_0x451a3e['as'],'attributes':_0x451a3e[_0xfd08('0x1b')],'include':_0x451a3e[_0xfd08('0x1d')]?_[_0xfd08('0x1e')](_0x451a3e[_0xfd08('0x1d')],function(_0x3035cf){return{'model':db[_0x3035cf[_0xfd08('0x1f')]],'as':_0x3035cf['as'],'attributes':_0x3035cf[_0xfd08('0x1b')]};}):[]};}):[]};}):[]:[]})[_0xfd08('0xd')](function(_0x2fe016){logger['info'](_0xfd08('0x21'),_0xe07496);logger[_0xfd08('0x23')](_0xfd08('0x21'),_0xe07496,JSON[_0xfd08('0x12')](_0x2fe016));_0x142e28(_0x2fe016);})[_0xfd08('0x16')](function(_0x4cfe49){logger['error'](_0xfd08('0x21'),_0x4cfe49[_0xfd08('0x15')],_0xe07496);_0xdc6333(_0x46dfbf[_0xfd08('0x13')](0x1f4,_0x4cfe49[_0xfd08('0x15')]));});});};
\ No newline at end of file
index f924943..072333c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0x6816=['isAuthenticated','update','exports','express','Router','put','/:id'];(function(_0x418acd,_0x4cd668){var _0x1cdd27=function(_0x282877){while(--_0x282877){_0x418acd['push'](_0x418acd['shift']());}};_0x1cdd27(++_0x4cd668);}(_0x6816,0x16f));var _0x6681=function(_0x578dc0,_0x5a87e3){_0x578dc0=_0x578dc0-0x0;var _0x5eb1f6=_0x6816[_0x578dc0];return _0x5eb1f6;};'use strict';var express=require(_0x6681('0x0'));var router=express[_0x6681('0x1')]();var auth=require('../../components/auth/service');var controller=require('./user-setting.controller');router[_0x6681('0x2')](_0x6681('0x3'),auth[_0x6681('0x4')](),controller[_0x6681('0x5')]);module[_0x6681('0x6')]=router;
\ No newline at end of file
index 39168bd..b294cd3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0x363b=['error','warning','debug','exports','ENUM','DATE','INTEGER','sequelize'];(function(_0x430ea6,_0x58db3b){var _0x8c837=function(_0x1123ef){while(--_0x1123ef){_0x430ea6['push'](_0x430ea6['shift']());}};_0x8c837(++_0x58db3b);}(_0x363b,0x147));var _0xb363=function(_0x2f601d,_0x301d41){_0x2f601d=_0x2f601d-0x0;var _0x1c702=_0x363b[_0x2f601d];return _0x1c702;};'use strict';var Sequelize=require(_0xb363('0x0'));const CLIENT_SIDE_LOG_LEVELS=[_0xb363('0x1'),_0xb363('0x2'),'info',_0xb363('0x3')];module[_0xb363('0x4')]={'clientSideLoggingLevel':{'type':Sequelize[_0xb363('0x5')](CLIENT_SIDE_LOG_LEVELS),'allowNull':![],'defaultValue':'error','validate':{'isIn':[CLIENT_SIDE_LOG_LEVELS]}},'clientSideLoggingEnabled':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'clientSideLoggingScopes':{'type':Sequelize['TEXT'],'allowNull':!![]},'clientSideLoggingEnabledSince':{'type':Sequelize[_0xb363('0x6')],'allowNull':!![],'defaultValue':null},'UserId':{'type':Sequelize[_0xb363('0x7')],'unique':'UserId'}};
\ No newline at end of file
index ec2b845..fda523f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0x8c99=['localhost','json','update','then','sendStatus','error','stack','name','send','user','admin','Unauthorized','params','Invalid\x20user\x20setting\x20id','UserSetting','find','body','catch','lodash','ioredis','../../config/logger','api','../../config/environment','../../mysqldb','socket.io-emitter','redis','./user-setting.socket','register','defaults'];(function(_0x24c086,_0x58503a){var _0x437816=function(_0x5ca169){while(--_0x5ca169){_0x24c086['push'](_0x24c086['shift']());}};_0x437816(++_0x58503a);}(_0x8c99,0x1a8));var _0x98c9=function(_0x6d6a66,_0x2924af){_0x6d6a66=_0x6d6a66-0x0;var _0x11eb6e=_0x8c99[_0x6d6a66];return _0x11eb6e;};'use strict';var _=require(_0x98c9('0x0'));var Redis=require(_0x98c9('0x1'));var logger=require(_0x98c9('0x2'))(_0x98c9('0x3'));var config=require(_0x98c9('0x4'));var db=require(_0x98c9('0x5'))['db'];var socket=require(_0x98c9('0x6'))(new Redis(config[_0x98c9('0x7')]));require(_0x98c9('0x8'))[_0x98c9('0x9')](socket);config[_0x98c9('0x7')]=_[_0x98c9('0xa')](config['redis'],{'host':_0x98c9('0xb'),'port':0x18eb});function respondWithResult(_0x2ed2b6,_0x538465){_0x538465=_0x538465||0xc8;return function(_0x4af8a6){if(_0x4af8a6){return _0x2ed2b6['status'](_0x538465)[_0x98c9('0xc')](_0x4af8a6);}};}function saveUpdates(_0x132061){return function(_0x29f80a){if(_0x29f80a){return _0x29f80a[_0x98c9('0xd')](_0x132061)[_0x98c9('0xe')](function(_0x598a27){return _0x598a27;});}return null;};}function handleEntityNotFound(_0x2e5914){return function(_0xa4762){if(!_0xa4762){_0x2e5914[_0x98c9('0xf')](0x194);}return _0xa4762;};}function handleError(_0x14a6e6,_0x3e748c){_0x3e748c=_0x3e748c||0x1f4;return function(_0x4b05ea){logger[_0x98c9('0x10')](_0x4b05ea[_0x98c9('0x11')]);if(_0x4b05ea[_0x98c9('0x12')]){delete _0x4b05ea[_0x98c9('0x12')];}_0x14a6e6['status'](_0x3e748c)[_0x98c9('0x13')](_0x4b05ea);};}exports[_0x98c9('0xd')]=function(_0xcc9162,_0x107d0c){if(_0xcc9162[_0x98c9('0x14')]['role']!==_0x98c9('0x15'))throw new Error(_0x98c9('0x16'));if(isNaN(Number(_0xcc9162[_0x98c9('0x17')]['id'])))throw new Error(_0x98c9('0x18'));return db[_0x98c9('0x19')][_0x98c9('0x1a')]({'where':{'id':_0xcc9162[_0x98c9('0x17')]['id']}})[_0x98c9('0xe')](handleEntityNotFound(_0x107d0c,null))[_0x98c9('0xe')](saveUpdates(_0xcc9162[_0x98c9('0x1b')],null))[_0x98c9('0xe')](respondWithResult(_0x107d0c,null))[_0x98c9('0x1c')](handleError(_0x107d0c,null));};
\ No newline at end of file
index 77de2ae..d0174c3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0x2a43=['setMaxListeners','save','update','emit','hasOwnProperty','exports','events'];(function(_0x1655bb,_0x5a82ae){var _0x5e2020=function(_0x1ccfb4){while(--_0x1ccfb4){_0x1655bb['push'](_0x1655bb['shift']());}};_0x5e2020(++_0x5a82ae);}(_0x2a43,0x1bf));var _0x32a4=function(_0x4ccbcf,_0x3b3cf3){_0x4ccbcf=_0x4ccbcf-0x0;var _0x12c197=_0x2a43[_0x4ccbcf];return _0x12c197;};'use strict';var EventEmitter=require(_0x32a4('0x0'));var UserSetting=require('../../mysqldb')['db']['UserSetting'];var UserSettingEvents=new EventEmitter();UserSettingEvents[_0x32a4('0x1')](0x0);var events={'afterCreate':_0x32a4('0x2'),'afterUpdate':_0x32a4('0x3'),'afterDestroy':'remove'};function emitEvent(_0x328384){return function(_0x2d6757,_0xbe3e6b,_0x328abc){UserSettingEvents['emit'](_0x328384+':'+_0x2d6757['id'],_0x2d6757);UserSettingEvents[_0x32a4('0x4')](_0x328384,_0x2d6757);_0x328abc(null);};}for(var e in events){if(events[_0x32a4('0x5')](e)){var event=events[e];UserSetting['hook'](e,emitEvent(event));}}module[_0x32a4('0x6')]=UserSettingEvents;
\ No newline at end of file
index 13c75d8..ac28415 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0x4a47=['clientSideLoggingEnabledSince','./user-setting.attributes','exports','define','UserSetting'];(function(_0x21c6a8,_0x23a057){var _0x2c68f8=function(_0x1373ff){while(--_0x1373ff){_0x21c6a8['push'](_0x21c6a8['shift']());}};_0x2c68f8(++_0x23a057);}(_0x4a47,0xb5));var _0x74a4=function(_0x291d3f,_0x3ef99f){_0x291d3f=_0x291d3f-0x0;var _0x242080=_0x4a47[_0x291d3f];return _0x242080;};'use strict';var attributes=require(_0x74a4('0x0'));module[_0x74a4('0x1')]=function(_0x1e77a1){return _0x1e77a1[_0x74a4('0x2')](_0x74a4('0x3'),attributes,{'tableName':'user_settings','paranoid':![],'indexes':[],'timestamps':!![],'hooks':{'beforeUpdate':function(_0x24cff9){if(!_0x24cff9['clientSideLoggingEnabled'])_0x24cff9[_0x74a4('0x4')]=null;else if(_0x24cff9[_0x74a4('0x4')]===null)_0x24cff9['clientSideLoggingEnabledSince']=new Date();}}});};
\ No newline at end of file
index 329fac1..3b94b1a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0x0ab4=['./user-setting.events','save','remove','update','emit','UserId','register','length'];(function(_0x17f567,_0x243a98){var _0x4285d2=function(_0x25815c){while(--_0x25815c){_0x17f567['push'](_0x17f567['shift']());}};_0x4285d2(++_0x243a98);}(_0x0ab4,0x68));var _0x40ab=function(_0x321bb2,_0x202794){_0x321bb2=_0x321bb2-0x0;var _0x9c12ed=_0x0ab4[_0x321bb2];return _0x9c12ed;};'use strict';var UserSettingEvents=require(_0x40ab('0x0'));var events=[_0x40ab('0x1'),_0x40ab('0x2'),_0x40ab('0x3')];function createListener(_0x47360e,_0x36f289){return function(_0x1f0db){_0x36f289[_0x40ab('0x4')](_0x47360e,_0x1f0db);if(_0x47360e==='user-setting:update'){_0x36f289[_0x40ab('0x4')]('user-setting:update:user-'+_0x1f0db[_0x40ab('0x5')],_0x1f0db);}};}exports[_0x40ab('0x6')]=function(_0x4d92f0){for(var _0x3079c4=0x0,_0x309e47=events[_0x40ab('0x7')];_0x3079c4<_0x309e47;_0x3079c4++){var _0x18da5c=events[_0x3079c4];var _0x427729=createListener('user-setting:'+_0x18da5c,_0x4d92f0);UserSettingEvents['on'](_0x18da5c,_0x427729);}};
\ No newline at end of file
index 10abb32..9a609a0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0x4627=['getMailInteractions','/:id/fax/interactions','/:id/teams','/:id/agents','getAgents','/:id/prefixes','/:id/fax_accounts','getFaxAccounts','/:id/mail_accounts','getMailAccounts','/:id/openchannel_accounts','getOpenchannelAccounts','/:id/sms_accounts','getSmsAccounts','getChatWebsites','/:id/whatsapp_accounts','getWhatsappAccounts','/:id/scheduled_calls','getScheduledCalls','/:id/api_key','post','/:id/contacts','addContacts','create','/create_many','bulkCreate','diskStorage','root','server/files/images/','format','now','originalname','file','addAvatar','login','/:id/unpause','addTeams','addChatInteractions','/:id/mail_interactions','/:id/fax_interactions','addFaxInteractions','/:id/sms_interactions','addSmsInteractions','/:id/openchannel_interactions','addOpenchannelInteractions','addWhatsappInteractions','addFaxAccounts','addOpenchannelAccounts','addSmsAccounts','/:id/chat_websites','addWhatsappAccounts','createApiKey','put','/:id/password','delete','removeQueues','removeTeams','removeChatInteractions','removeMailInteractions','removeFaxInteractions','removeSmsInteractions','removeOpenchannelInteractions','/:id/whatsapp_interactions','removeWhatsappInteractions','removeFaxAccounts','removeMailAccounts','removeOpenchannelAccounts','removeWhatsappAccounts','removeApiKey','multer','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./user.controller','get','isAuthenticated','/describe','describe','/whoami','whoami','/presence','/:id','show','/:id/avatar','getAvatar','getContacts','/:id/queues','getQueues','/:id/queues_rt','getVoiceQueuesRt','/:id/recordings','getRecordings','/:id/screen_recordings','getScreenRecordings','getChatInteractions','/:id/openchannel/interactions','getOpenchannelInteractions','/:id/mail/interactions'];(function(_0x840046,_0x262d5b){var _0x453739=function(_0x40f8e6){while(--_0x40f8e6){_0x840046['push'](_0x840046['shift']());}};_0x453739(++_0x262d5b);}(_0x4627,0x115));var _0x7462=function(_0x3b0731,_0xcf9925){_0x3b0731=_0x3b0731-0x0;var _0x4204d7=_0x4627[_0x3b0731];return _0x4204d7;};'use strict';var multer=require(_0x7462('0x0'));var util=require(_0x7462('0x1'));var path=require(_0x7462('0x2'));var timeout=require(_0x7462('0x3'));var express=require(_0x7462('0x4'));var router=express[_0x7462('0x5')]();var fs_extra=require(_0x7462('0x6'));var auth=require(_0x7462('0x7'));var interaction=require(_0x7462('0x8'));var config=require(_0x7462('0x9'));var controller=require(_0x7462('0xa'));router[_0x7462('0xb')]('/',auth[_0x7462('0xc')](),controller['index']);router[_0x7462('0xb')](_0x7462('0xd'),auth[_0x7462('0xc')](),controller[_0x7462('0xe')]);router[_0x7462('0xb')](_0x7462('0xf'),auth[_0x7462('0xc')](),controller[_0x7462('0x10')]);router[_0x7462('0xb')](_0x7462('0x11'),auth[_0x7462('0xc')](),controller['getPresence']);router['get'](_0x7462('0x12'),auth[_0x7462('0xc')](),controller[_0x7462('0x13')]);router[_0x7462('0xb')](_0x7462('0x14'),controller[_0x7462('0x15')]);router[_0x7462('0xb')]('/:id/open_tabs',auth['isAuthenticated'](),controller['getOpenTabs']);router[_0x7462('0xb')]('/:id/contacts',auth[_0x7462('0xc')](),controller[_0x7462('0x16')]);router[_0x7462('0xb')](_0x7462('0x17'),auth['isAuthenticated'](),controller[_0x7462('0x18')]);router[_0x7462('0xb')](_0x7462('0x19'),auth[_0x7462('0xc')](),controller[_0x7462('0x1a')]);router[_0x7462('0xb')]('/:id/groups',auth[_0x7462('0xc')](),controller['getGroups']);router[_0x7462('0xb')](_0x7462('0x1b'),auth[_0x7462('0xc')](),controller[_0x7462('0x1c')]);router['get'](_0x7462('0x1d'),auth['isAuthenticated'](),controller[_0x7462('0x1e')]);router[_0x7462('0xb')]('/:id/chat/interactions',auth[_0x7462('0xc')](),controller[_0x7462('0x1f')]);router['get'](_0x7462('0x20'),auth[_0x7462('0xc')](),controller[_0x7462('0x21')]);router[_0x7462('0xb')](_0x7462('0x22'),auth[_0x7462('0xc')](),controller[_0x7462('0x23')]);router[_0x7462('0xb')]('/:id/sms/interactions',auth[_0x7462('0xc')](),controller['getSmsInteractions']);router[_0x7462('0xb')](_0x7462('0x24'),auth[_0x7462('0xc')](),controller['getFaxInteractions']);router[_0x7462('0xb')]('/:id/whatsapp/interactions',auth[_0x7462('0xc')](),controller['getWhatsappInteractions']);router['get'](_0x7462('0x25'),auth[_0x7462('0xc')](),controller['getTeams']);router['get']('/:id/lists',auth['isAuthenticated'](),controller['getLists']);router[_0x7462('0xb')](_0x7462('0x26'),auth['isAuthenticated'](),controller[_0x7462('0x27')]);router[_0x7462('0xb')](_0x7462('0x28'),auth[_0x7462('0xc')](),controller['getVoicePrefixes']);router[_0x7462('0xb')](_0x7462('0x29'),auth[_0x7462('0xc')](),controller[_0x7462('0x2a')]);router[_0x7462('0xb')](_0x7462('0x2b'),auth[_0x7462('0xc')](),controller[_0x7462('0x2c')]);router[_0x7462('0xb')](_0x7462('0x2d'),auth['isAuthenticated'](),controller[_0x7462('0x2e')]);router['get'](_0x7462('0x2f'),auth[_0x7462('0xc')](),controller[_0x7462('0x30')]);router[_0x7462('0xb')]('/:id/chat_websites',auth[_0x7462('0xc')](),controller[_0x7462('0x31')]);router[_0x7462('0xb')](_0x7462('0x32'),auth[_0x7462('0xc')](),controller[_0x7462('0x33')]);router['get'](_0x7462('0x34'),auth['isAuthenticated'](),controller[_0x7462('0x35')]);router['get'](_0x7462('0x36'),auth[_0x7462('0xc')](),controller['getApiKey']);router[_0x7462('0x37')](_0x7462('0x38'),auth[_0x7462('0xc')](),controller[_0x7462('0x39')]);router[_0x7462('0x37')]('/',auth[_0x7462('0xc')](),controller[_0x7462('0x3a')]);router[_0x7462('0x37')](_0x7462('0x3b'),auth[_0x7462('0xc')](),controller[_0x7462('0x3c')]);router[_0x7462('0x37')](_0x7462('0x17'),auth[_0x7462('0xc')](),controller['addQueues']);var upload=multer({'storage':multer[_0x7462('0x3d')]({'destination':function(_0x92edff,_0xb65b90,_0x3b8391){_0x3b8391(null,path['join'](config[_0x7462('0x3e')],_0x7462('0x3f')));},'filename':function(_0x270d30,_0x44e9c9,_0xc30ad7){_0xc30ad7(null,util[_0x7462('0x40')]('%s-%s',Date[_0x7462('0x41')](),_0x44e9c9[_0x7462('0x42')]));}})});router[_0x7462('0x37')](_0x7462('0x14'),upload['single'](_0x7462('0x43')),controller[_0x7462('0x44')]);router[_0x7462('0x37')]('/:id/login',auth[_0x7462('0xc')](),controller[_0x7462('0x45')]);router[_0x7462('0x37')]('/:id/logout',auth[_0x7462('0xc')](),controller['logout']);router[_0x7462('0x37')]('/:id/pause',auth['isAuthenticated'](),controller['pause']);router[_0x7462('0x37')](_0x7462('0x46'),auth[_0x7462('0xc')](),controller['unpause']);router['post']('/:id/teams',auth[_0x7462('0xc')](),controller[_0x7462('0x47')]);router['post']('/:id/chat_interactions',auth[_0x7462('0xc')](),controller[_0x7462('0x48')]);router[_0x7462('0x37')](_0x7462('0x49'),auth['isAuthenticated'](),controller['addMailInteractions']);router[_0x7462('0x37')](_0x7462('0x4a'),auth[_0x7462('0xc')](),controller[_0x7462('0x4b')]);router['post'](_0x7462('0x4c'),auth[_0x7462('0xc')](),controller[_0x7462('0x4d')]);router['post'](_0x7462('0x4e'),auth['isAuthenticated'](),controller[_0x7462('0x4f')]);router['post']('/:id/whatsapp_interactions',auth[_0x7462('0xc')](),controller[_0x7462('0x50')]);router[_0x7462('0x37')](_0x7462('0x29'),auth[_0x7462('0xc')](),controller[_0x7462('0x51')]);router[_0x7462('0x37')](_0x7462('0x2b'),auth[_0x7462('0xc')](),controller['addMailAccounts']);router['post'](_0x7462('0x2d'),auth['isAuthenticated'](),controller[_0x7462('0x52')]);router['post'](_0x7462('0x2f'),auth[_0x7462('0xc')](),controller[_0x7462('0x53')]);router[_0x7462('0x37')](_0x7462('0x54'),auth['isAuthenticated'](),controller['addChatWebsites']);router[_0x7462('0x37')](_0x7462('0x32'),auth[_0x7462('0xc')](),controller[_0x7462('0x55')]);router[_0x7462('0x37')](_0x7462('0x36'),auth['isAuthenticated'](),controller[_0x7462('0x56')]);router[_0x7462('0x57')](_0x7462('0x12'),auth[_0x7462('0xc')](),controller['update']);router[_0x7462('0x57')](_0x7462('0x58'),auth[_0x7462('0xc')](),controller['changePassword']);router[_0x7462('0x59')]('/:id/queues',auth[_0x7462('0xc')](),controller[_0x7462('0x5a')]);router['delete']('/:id/teams',auth[_0x7462('0xc')](),controller[_0x7462('0x5b')]);router[_0x7462('0x59')](_0x7462('0x12'),auth[_0x7462('0xc')](),controller['destroy']);router[_0x7462('0x59')]('/:id/chat_interactions',auth[_0x7462('0xc')](),controller[_0x7462('0x5c')]);router[_0x7462('0x59')](_0x7462('0x49'),auth[_0x7462('0xc')](),controller[_0x7462('0x5d')]);router[_0x7462('0x59')](_0x7462('0x4a'),auth[_0x7462('0xc')](),controller[_0x7462('0x5e')]);router['delete'](_0x7462('0x4c'),auth[_0x7462('0xc')](),controller[_0x7462('0x5f')]);router[_0x7462('0x59')]('/:id/openchannel_interactions',auth[_0x7462('0xc')](),controller[_0x7462('0x60')]);router[_0x7462('0x59')](_0x7462('0x61'),auth['isAuthenticated'](),controller[_0x7462('0x62')]);router[_0x7462('0x59')](_0x7462('0x29'),auth[_0x7462('0xc')](),controller[_0x7462('0x63')]);router[_0x7462('0x59')](_0x7462('0x2b'),auth['isAuthenticated'](),controller[_0x7462('0x64')]);router[_0x7462('0x59')]('/:id/openchannel_accounts',auth[_0x7462('0xc')](),controller[_0x7462('0x65')]);router[_0x7462('0x59')](_0x7462('0x2f'),auth['isAuthenticated'](),controller['removeSmsAccounts']);router[_0x7462('0x59')](_0x7462('0x54'),auth[_0x7462('0xc')](),controller['removeChatWebsites']);router[_0x7462('0x59')](_0x7462('0x32'),auth[_0x7462('0xc')](),controller[_0x7462('0x66')]);router['delete'](_0x7462('0x36'),auth[_0x7462('0xc')](),controller[_0x7462('0x67')]);module['exports']=router;
\ No newline at end of file
index f6af1f0..ff8c1ca 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0x70e0=['refuse','originate','uac','uas','fingerprint','update,nonat','TEXT','showWebBar','get','isArray','wss','udp','encryption','avpf','force_avp','icesupport','dtlsenable','dtlsverify','dtlssetup','dtlsprivatekey','rtcp_mux','actpass','dtlscertfile','/etc/pki/tls/certs/motion.crt','/etc/pki/tls/private/motion.key','permissions','map','VIRTUAL','phoneBarEnableScreenRecordingByAgent','true','false','screenrecording','blocked','blockedAt','loginAttempts','sequelize','moment','util','STRING','name','setDataValue','The\x20name\x20of\x20the\x20user','fullname','callerid','format','\x22%s\x22\x20<%s>','getDataValue','internal','email','toLowerCase','ENUM','admin','user','agent','telephone','INTEGER','BOOLEAN','DATE','dynamic','friend','peer','ALLOWED_NOT_SCREENED','ALLOWED_PASSED_SCREEN','PROHIB_NOT_SCREENED','PROHIB_PASSED_SCREEN','PROHIB_FAILED_SCREEN','join','transport','split','rfc2833','info','shortinfo','inband','auto','yes','nonat','update','outgoing','force_rport,comedia','nat','ulaw;alaw;gsm','allow','insecure','\x22\x22\x20<>','always','accept'];(function(_0x4c793b,_0x102bdd){var _0x4daf0f=function(_0x2b09e7){while(--_0x2b09e7){_0x4c793b['push'](_0x4c793b['shift']());}};_0x4daf0f(++_0x102bdd);}(_0x70e0,0x17b));var _0x070e=function(_0x4b6bf1,_0x66eb6){_0x4b6bf1=_0x4b6bf1-0x0;var _0x5d2471=_0x70e0[_0x4b6bf1];return _0x5d2471;};'use strict';var Sequelize=require(_0x070e('0x0'));var moment=require(_0x070e('0x1'));var util=require(_0x070e('0x2'));var _=require('lodash');module['exports']={'name':{'type':Sequelize[_0x070e('0x3')],'allowNull':![],'unique':_0x070e('0x4'),'validate':{'notEmpty':!![],'is':/^[A-Za-z0-9\.\_]+$/i},'set':function(_0x277d32){this[_0x070e('0x5')]('name',_0x277d32);this[_0x070e('0x5')]('defaultuser',_0x277d32);},'comment':_0x070e('0x6')},'fullname':{'type':Sequelize['STRING'],'allowNull':![],'set':function(_0x56e420){this['setDataValue'](_0x070e('0x7'),_0x56e420);this[_0x070e('0x5')](_0x070e('0x8'),util[_0x070e('0x9')](_0x070e('0xa'),_0x56e420,this[_0x070e('0xb')](_0x070e('0xc'))));}},'alias':{'type':Sequelize['STRING']},'email':{'type':Sequelize['STRING'],'allowNull':![],'unique':_0x070e('0xd'),'validate':{'isEmail':!![]},'set':function(_0x2e3e5e){if(_0x2e3e5e){this[_0x070e('0x5')](_0x070e('0xd'),_0x2e3e5e[_0x070e('0xe')]());}}},'role':{'type':Sequelize[_0x070e('0xf')](_0x070e('0x10'),_0x070e('0x11'),_0x070e('0x12'),_0x070e('0x13')),'allowNull':![]},'password':{'type':Sequelize[_0x070e('0x3')],'allowNull':![],'validate':{'notEmpty':!![]}},'provider':{'type':Sequelize['STRING'],'defaultValue':'local'},'internal':{'type':Sequelize[_0x070e('0x14')](0xb),'allowNull':![],'unique':'internal','set':function(_0x4a33d2){this['setDataValue'](_0x070e('0xc'),_0x4a33d2);this[_0x070e('0x5')]('accountcode',_0x4a33d2);this['setDataValue'](_0x070e('0x8'),util[_0x070e('0x9')](_0x070e('0xa'),this[_0x070e('0xb')]('fullname'),_0x4a33d2));}},'salt':{'type':Sequelize['STRING']},'phone':{'type':Sequelize[_0x070e('0x3')]},'mobile':{'type':Sequelize[_0x070e('0x3')]},'address':{'type':Sequelize[_0x070e('0x3')]},'zipcode':{'type':Sequelize[_0x070e('0x3')]},'userpic':{'type':Sequelize[_0x070e('0x3')]},'city':{'type':Sequelize['STRING']},'country':{'type':Sequelize[_0x070e('0x3')]},'online':{'type':Sequelize[_0x070e('0x15')],'defaultValue':![]},'lastLoginAt':{'type':Sequelize[_0x070e('0x16')]},'voicePause':{'type':Sequelize[_0x070e('0x15')],'defaultValue':![]},'chatPause':{'type':Sequelize[_0x070e('0x15')],'defaultValue':![]},'mailPause':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'faxPause':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'smsPause':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'whatsappPause':{'type':Sequelize[_0x070e('0x15')],'defaultValue':![]},'openchannelPause':{'type':Sequelize[_0x070e('0x15')],'defaultValue':![]},'pauseType':{'type':Sequelize[_0x070e('0x3')],'defaultValue':'DEFAULT\x20PAUSE'},'lastPauseAt':{'type':Sequelize[_0x070e('0x16')]},'chatCapacity':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'mailCapacity':{'type':Sequelize[_0x070e('0x14')],'defaultValue':0x0},'faxCapacity':{'type':Sequelize[_0x070e('0x14')],'defaultValue':0x0},'smsCapacity':{'type':Sequelize[_0x070e('0x14')],'defaultValue':0x0},'whatsappCapacity':{'type':Sequelize[_0x070e('0x14')],'defaultValue':0x0},'openchannelCapacity':{'type':Sequelize[_0x070e('0x14')],'defaultValue':0x0},'phoneBarAutoAnswer':{'type':Sequelize[_0x070e('0x15')],'defaultValue':![]},'phoneBarEnableSettings':{'type':Sequelize[_0x070e('0x15')],'defaultValue':!![]},'phoneBarListenPort':{'type':Sequelize[_0x070e('0x14')](0x5),'defaultValue':0x1428},'phoneBarExpires':{'type':Sequelize['INTEGER'](0x5),'defaultValue':0x78},'phoneBarRemoteControl':{'type':Sequelize[_0x070e('0x15')],'defaultValue':![]},'phoneBarRemoteControlPort':{'type':Sequelize[_0x070e('0x14')],'defaultValue':0x26a0},'phoneBarEnableRecording':{'type':Sequelize[_0x070e('0x15')],'defaultValue':![]},'phoneBarRingInUse':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'chanspy':{'type':Sequelize[_0x070e('0x15')],'defaultValue':![]},'description':{'type':Sequelize['STRING'],'allowNull':!![]},'host':{'type':Sequelize['STRING'],'allowNull':!![],'defaultValue':_0x070e('0x17')},'ipaddr':{'type':Sequelize[_0x070e('0x3')],'allowNull':!![]},'port':{'type':Sequelize[_0x070e('0x14')](0x5),'allowNull':!![]},'regseconds':{'type':Sequelize[_0x070e('0x14')](0xb),'allowNull':!![]},'fullcontact':{'type':Sequelize[_0x070e('0x3')],'allowNull':!![]},'regserver':{'type':Sequelize['STRING'],'allowNull':!![]},'useragent':{'type':Sequelize[_0x070e('0x3')],'allowNull':!![]},'lastms':{'type':Sequelize[_0x070e('0x14')](0xb),'allowNull':!![]},'type':{'type':Sequelize[_0x070e('0xf')](_0x070e('0x18'),_0x070e('0x11'),_0x070e('0x19')),'allowNull':!![],'defaultValue':_0x070e('0x18')},'context':{'type':Sequelize[_0x070e('0x3')],'allowNull':!![],'defaultValue':'from-sip'},'callingpres':{'type':Sequelize[_0x070e('0xf')](_0x070e('0x1a'),_0x070e('0x1b'),'ALLOWED_FAILED_SCREEN','ALLOWED',_0x070e('0x1c'),_0x070e('0x1d'),_0x070e('0x1e'),'PROHIB'),'allowNull':!![]},'deny':{'type':Sequelize[_0x070e('0x3')],'allowNull':!![]},'permit':{'type':Sequelize[_0x070e('0x3')],'allowNull':!![]},'secret':{'type':Sequelize[_0x070e('0x3')],'allowNull':!![]},'md5secret':{'type':Sequelize[_0x070e('0x3')],'allowNull':!![]},'remotesecret':{'type':Sequelize['STRING'],'allowNull':!![]},'transport':{'type':Sequelize['STRING'],'allowNull':!![],'defaultValue':'udp','set':function(_0x59c5b4){this[_0x070e('0x5')]('transport',_0x59c5b4?_0x59c5b4[_0x070e('0x1f')](','):null);},'get':function(){return this[_0x070e('0xb')]('transport')?this['getDataValue'](_0x070e('0x20'))[_0x070e('0x21')](','):null;},'comment':'String\x20is\x20deprecated.\x20Please\x20use\x20an\x20Array\x20as\x20[\x22udp\x22,\x20\x22tcp\x22]'},'dtmfmode':{'type':Sequelize['ENUM'](_0x070e('0x22'),_0x070e('0x23'),_0x070e('0x24'),_0x070e('0x25'),_0x070e('0x26')),'allowNull':!![],'defaultValue':'rfc2833'},'directmedia':{'type':Sequelize['ENUM'](_0x070e('0x27'),'no',_0x070e('0x28'),_0x070e('0x29'),_0x070e('0x2a')),'allowNull':!![],'defaultValue':'no'},'directrtpsetup':{'type':Sequelize[_0x070e('0xf')]('yes','no'),'allowNull':!![],'defaultValue':'no'},'directmediapermit':{'type':Sequelize[_0x070e('0x3')],'allowNull':!![]},'directmediadeny':{'type':Sequelize[_0x070e('0x3')],'allowNull':!![]},'nat':{'type':Sequelize['STRING'],'allowNull':!![],'defaultValue':_0x070e('0x2b'),'set':function(_0x34746e){this['setDataValue']('nat',_0x34746e?_0x34746e['join'](','):null);},'get':function(){return this[_0x070e('0xb')](_0x070e('0x2c'))?this[_0x070e('0xb')](_0x070e('0x2c'))[_0x070e('0x21')](','):null;},'comment':'String\x20is\x20deprecated.\x20Please\x20use\x20an\x20Array\x20as\x20[\x22force_rport\x22,\x20\x22comedia\x22]'},'callgroup':{'type':Sequelize[_0x070e('0x3')]},'namedcallgroup':{'type':Sequelize[_0x070e('0x3')]},'pickupgroup':{'type':Sequelize[_0x070e('0x3')]},'namedpickupgroup':{'type':Sequelize['STRING']},'language':{'type':Sequelize[_0x070e('0x3')],'defaultValue':'en'},'tonezone':{'type':Sequelize[_0x070e('0x3')]},'disallow':{'type':Sequelize[_0x070e('0x3')],'allowNull':![],'defaultValue':'all'},'allow':{'type':Sequelize[_0x070e('0x3')],'allowNull':![],'defaultValue':_0x070e('0x2d'),'set':function(_0x4800a9){this[_0x070e('0x5')]('allow',_0x4800a9?_0x4800a9[_0x070e('0x1f')](';'):_0x070e('0x2d'));},'get':function(){return this[_0x070e('0xb')](_0x070e('0x2e'))?this[_0x070e('0xb')]('allow')[_0x070e('0x21')](';'):null;},'comment':'String\x20is\x20deprecated.\x20Please\x20use\x20an\x20Array\x20as\x20[\x22ulaw\x22,\x20\x22alaw\x22,\x20\x22gsm\x22]'},'autoframing':{'type':Sequelize['ENUM'](_0x070e('0x27'),'no'),'allowNull':!![]},'insecure':{'type':Sequelize[_0x070e('0x3')],'allowNull':!![],'set':function(_0x38879f){this['setDataValue'](_0x070e('0x2f'),_0x38879f?_0x38879f[_0x070e('0x1f')](','):null);},'get':function(){return this[_0x070e('0xb')](_0x070e('0x2f'))?this['getDataValue'](_0x070e('0x2f'))['split'](','):null;},'comment':'String\x20is\x20deprecated.\x20Please\x20use\x20an\x20Array\x20as\x20[\x22port\x22,\x20\x22invite\x22]'},'trustrpid':{'type':Sequelize['ENUM'](_0x070e('0x27'),'no'),'allowNull':!![],'defaultValue':'no'},'trust_id_outbound':{'type':Sequelize[_0x070e('0xf')](_0x070e('0x27'),'no'),'allowNull':!![],'defaultValue':'no'},'progressinband':{'type':Sequelize[_0x070e('0xf')](_0x070e('0x27'),'no','never'),'allowNull':!![]},'promiscredir':{'type':Sequelize[_0x070e('0xf')]('yes','no'),'allowNull':!![]},'useclientcode':{'type':Sequelize[_0x070e('0xf')](_0x070e('0x27'),'no'),'allowNull':!![]},'accountcode':{'type':Sequelize[_0x070e('0x14')](0xb),'allowNull':!![]},'setvar':{'type':Sequelize['STRING'],'allowNull':!![]},'callerid':{'type':Sequelize['STRING'],'allowNull':!![],'defaultValue':_0x070e('0x30')},'amaflags':{'type':Sequelize['STRING'],'allowNull':!![]},'callcounter':{'type':Sequelize[_0x070e('0xf')](_0x070e('0x27'),'no'),'allowNull':!![],'defaultValue':_0x070e('0x27')},'busylevel':{'type':Sequelize['INTEGER'](0xb),'allowNull':!![]},'allowoverlap':{'type':Sequelize[_0x070e('0xf')](_0x070e('0x27'),'no'),'allowNull':!![]},'allowsubscribe':{'type':Sequelize['ENUM']('yes','no'),'allowNull':!![]},'allowtransfer':{'type':Sequelize[_0x070e('0xf')](_0x070e('0x27'),'no'),'allowNull':!![]},'ignoresdpversion':{'type':Sequelize[_0x070e('0xf')](_0x070e('0x27'),'no'),'allowNull':!![]},'subscribecontext':{'type':Sequelize[_0x070e('0x3')],'allowNull':!![]},'template':{'type':Sequelize['STRING'],'allowNull':!![]},'videosupport':{'type':Sequelize[_0x070e('0xf')](_0x070e('0x27'),'no',_0x070e('0x31')),'allowNull':!![],'defaultValue':'no'},'maxcallbitrate':{'type':Sequelize[_0x070e('0x14')](0xb),'allowNull':!![]},'rfc2833compensate':{'type':Sequelize[_0x070e('0xf')](_0x070e('0x27'),'no'),'allowNull':!![]},'mailbox':{'type':Sequelize[_0x070e('0x3')],'allowNull':!![]},'session_timers':{'type':Sequelize[_0x070e('0xf')](_0x070e('0x32'),_0x070e('0x33'),_0x070e('0x34')),'allowNull':!![]},'session_expires':{'type':Sequelize[_0x070e('0x14')](0xb),'allowNull':!![]},'session_minse':{'type':Sequelize[_0x070e('0x14')](0xb),'allowNull':!![]},'session_refresher':{'type':Sequelize[_0x070e('0xf')](_0x070e('0x35'),'uas'),'allowNull':!![],'defaultValue':_0x070e('0x36')},'t38pt_usertpsource':{'type':Sequelize[_0x070e('0x3')],'allowNull':!![]},'regexten':{'type':Sequelize[_0x070e('0x3')],'allowNull':!![]},'fromdomain':{'type':Sequelize[_0x070e('0x3')],'allowNull':!![]},'fromuser':{'type':Sequelize[_0x070e('0x3')],'allowNull':!![]},'qualify':{'type':Sequelize[_0x070e('0xf')](_0x070e('0x27'),'no'),'allowNull':!![],'defaultValue':_0x070e('0x27')},'keepalive':{'type':Sequelize[_0x070e('0x14')](0xb),'allowNull':!![]},'defaultip':{'type':Sequelize['STRING'],'allowNull':!![]},'defaultuser':{'type':Sequelize[_0x070e('0x3')],'allowNull':!![]},'rtptimeout':{'type':Sequelize['INTEGER'](0xb),'allowNull':!![]},'rtpholdtimeout':{'type':Sequelize[_0x070e('0x14')](0xb),'allowNull':!![]},'rtpkeepalive':{'type':Sequelize[_0x070e('0x14')](0xb),'allowNull':!![]},'sendrpid':{'type':Sequelize['ENUM'](_0x070e('0x27'),'no'),'allowNull':!![],'defaultValue':'no'},'outboundproxy':{'type':Sequelize[_0x070e('0x3')],'allowNull':!![]},'callbackextension':{'type':Sequelize[_0x070e('0x3')],'allowNull':!![]},'timert1':{'type':Sequelize[_0x070e('0x14')](0xb),'allowNull':!![]},'timerb':{'type':Sequelize[_0x070e('0x14')](0xb),'allowNull':!![]},'qualifyfreq':{'type':Sequelize[_0x070e('0x14')](0xb),'allowNull':!![]},'contactpermit':{'type':Sequelize[_0x070e('0x3')],'allowNull':!![]},'contactdeny':{'type':Sequelize['STRING'],'allowNull':!![]},'contactacl':{'type':Sequelize[_0x070e('0x3')],'allowNull':!![]},'unsolicited_mailbox':{'type':Sequelize['STRING'],'allowNull':!![]},'use_q850_reason':{'type':Sequelize['STRING'],'allowNull':!![]},'maxforwards':{'type':Sequelize[_0x070e('0x14')](0xb),'allowNull':!![]},'encryption':{'type':Sequelize[_0x070e('0xf')](_0x070e('0x27'),'no'),'allowNull':!![],'defaultValue':'no'},'avpf':{'type':Sequelize[_0x070e('0xf')](_0x070e('0x27'),'no'),'allowNull':!![]},'force_avp':{'type':Sequelize[_0x070e('0xf')](_0x070e('0x27'),'no'),'allowNull':!![]},'icesupport':{'type':Sequelize[_0x070e('0xf')]('yes','no'),'allowNull':!![]},'dtlsenable':{'type':Sequelize[_0x070e('0xf')]('yes','no'),'allowNull':!![]},'dtlsverify':{'type':Sequelize['ENUM'](_0x070e('0x27'),'no',_0x070e('0x37'),'certificate'),'allowNull':!![]},'dtlsrekey':{'type':Sequelize[_0x070e('0x14')](0xb),'allowNull':!![]},'dtlscertfile':{'type':Sequelize[_0x070e('0x3')],'allowNull':!![]},'dtlsprivatekey':{'type':Sequelize[_0x070e('0x3')],'allowNull':!![]},'dtlscipher':{'type':Sequelize[_0x070e('0x3')],'allowNull':!![]},'dtlscafile':{'type':Sequelize[_0x070e('0x3')],'allowNull':!![]},'dtlscapath':{'type':Sequelize[_0x070e('0x3')],'allowNull':!![]},'dtlssetup':{'type':Sequelize[_0x070e('0xf')]('active','passive','actpass'),'allowNull':!![]},'dtlsfingerprint':{'type':Sequelize[_0x070e('0x3')],'allowNull':!![]},'usereqphone':{'type':Sequelize[_0x070e('0xf')](_0x070e('0x27'),'no'),'allowNull':!![],'defaultValue':'no'},'recordonfeature':{'type':Sequelize[_0x070e('0x3')],'allowNull':!![]},'recordofffeature':{'type':Sequelize['STRING'],'allowNull':!![]},'call_limit':{'type':Sequelize[_0x070e('0x14')](0xb),'allowNull':!![],'defaultValue':0xa},'registertrying':{'type':Sequelize['ENUM'](_0x070e('0x27'),'no'),'allowNull':!![]},'subscribemwi':{'type':Sequelize[_0x070e('0xf')](_0x070e('0x27'),'no'),'allowNull':!![]},'vmexten':{'type':Sequelize[_0x070e('0x3')],'allowNull':!![]},'mohinterpret':{'type':Sequelize[_0x070e('0x3')],'allowNull':!![]},'mohsuggest':{'type':Sequelize[_0x070e('0x3')],'allowNull':!![]},'parkinglot':{'type':Sequelize['STRING'],'allowNull':!![]},'canreinvite':{'type':Sequelize[_0x070e('0xf')](_0x070e('0x27'),'no',_0x070e('0x28'),'update',_0x070e('0x38')),'allowNull':!![],'defaultValue':'no'},'loginInPause':{'type':Sequelize[_0x070e('0x15')],'defaultValue':![]},'resetPasswordToken':{'type':Sequelize['STRING']},'resetPasswordExpires':{'type':Sequelize[_0x070e('0x16')]},'passwordResetAt':{'type':Sequelize['DATE'],'defaultValue':null},'previousPasswords':{'type':Sequelize[_0x070e('0x39')]},'showWebBar':{'type':Sequelize['INTEGER'],'defaultValue':0x0,'set':function(_0x4cb86f){this['setDataValue'](_0x070e('0x3a'),_0x4cb86f);var _0x1ae5cb=this[_0x070e('0x3b')]({'plain':!![]});switch(_0x4cb86f){case 0x0:case 0x1:var _0x122198=_0x1ae5cb[_0x070e('0x20')]?_[_0x070e('0x3c')](_0x1ae5cb['transport'])?_0x1ae5cb[_0x070e('0x20')]['join']():_0x1ae5cb[_0x070e('0x20')]:'udp';if(_0x122198===_0x070e('0x3d')){_0x122198=_0x070e('0x3e');}this['setDataValue'](_0x070e('0x20'),_0x122198);this['setDataValue'](_0x070e('0x3f'),'no');this[_0x070e('0x5')](_0x070e('0x40'),null);this[_0x070e('0x5')](_0x070e('0x41'),null);this[_0x070e('0x5')](_0x070e('0x42'),null);this[_0x070e('0x5')](_0x070e('0x43'),null);this[_0x070e('0x5')](_0x070e('0x44'),null);this[_0x070e('0x5')](_0x070e('0x45'),null);this[_0x070e('0x5')]('dtlscertfile',null);this[_0x070e('0x5')](_0x070e('0x46'),null);this[_0x070e('0x5')](_0x070e('0x47'),'no');break;case 0x2:this['setDataValue'](_0x070e('0x20'),_0x070e('0x3d'));this[_0x070e('0x5')](_0x070e('0x3f'),_0x070e('0x27'));this[_0x070e('0x5')]('avpf',_0x070e('0x27'));this[_0x070e('0x5')](_0x070e('0x41'),_0x070e('0x27'));this['setDataValue'](_0x070e('0x42'),'yes');this[_0x070e('0x5')](_0x070e('0x43'),_0x070e('0x27'));this[_0x070e('0x5')](_0x070e('0x44'),'no');this['setDataValue'](_0x070e('0x45'),_0x070e('0x48'));this[_0x070e('0x5')](_0x070e('0x49'),_0x1ae5cb['dtlscertfile']||_0x070e('0x4a'));this['setDataValue'](_0x070e('0x46'),_0x1ae5cb[_0x070e('0x46')]||_0x070e('0x4b'));this['setDataValue'](_0x070e('0x47'),'yes');break;default:}}},'permissions':{'type':Sequelize[_0x070e('0x39')],'set':function(_0x5ce157){this[_0x070e('0x5')](_0x070e('0x4c'),_0x5ce157?_0x5ce157['join'](','):[]);},'get':function(){return this[_0x070e('0xb')]('permissions')?_[_0x070e('0x4d')](this[_0x070e('0xb')]('permissions')['split'](','),function(_0x29ee66){return parseInt(_0x29ee66,0xa);}):[];}},'phoneBarUnconditionalNumber':{'type':Sequelize[_0x070e('0x3')]},'phoneBarNoReplyNumber':{'type':Sequelize[_0x070e('0x3')]},'phoneBarBusyNumber':{'type':Sequelize[_0x070e('0x3')]},'phoneBarUnconditional':{'type':Sequelize[_0x070e('0x15')],'defaultValue':![]},'phoneBarNoReply':{'type':Sequelize[_0x070e('0x15')],'defaultValue':![]},'phoneBarBusy':{'type':Sequelize[_0x070e('0x15')],'defaultValue':![]},'phoneBarDnd':{'type':Sequelize[_0x070e('0x15')],'defaultValue':!![]},'phoneBarUnansweredCallBadge':{'type':Sequelize[_0x070e('0x15')],'defaultValue':!![]},'phoneBarEnableDtmfTone':{'type':Sequelize[_0x070e('0x15')],'defaultValue':![]},'phoneBarAutoAnswerDelay':{'type':Sequelize[_0x070e('0x14')],'defaultValue':0x0},'extensionMonitor':{'type':Sequelize[_0x070e('0x3')],'defaultValue':''},'crudPermissions':{'type':Sequelize[_0x070e('0x14')],'defaultValue':0x0},'rtcp_mux':{'type':Sequelize['ENUM'](_0x070e('0x27'),'no'),'defaultValue':'no'},'allowmessenger':{'type':Sequelize[_0x070e('0x15')],'defaultValue':!![]},'phoneBarOutboundProxy':{'type':Sequelize['STRING']},'phoneBarEnableJaws':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'phoneBarEnableScreenRecordingByAgent':{'type':Sequelize[_0x070e('0x15')],'defaultValue':![]},'phoneBarEnableVideoRecording':{'type':Sequelize[_0x070e('0x4e')],'get':function(){return this[_0x070e('0xb')](_0x070e('0x4f'))?this[_0x070e('0xb')](_0x070e('0x4f')):![];}},'phoneBarEnableAutomaticScreenRecording':{'type':Sequelize[_0x070e('0x15')],'defaultValue':![]},'phoneBarPrefixRequired':{'type':Sequelize[_0x070e('0x15')],'defaultValue':![]},'hotdesk':{'type':Sequelize[_0x070e('0x15')],'defaultValue':![]},'interface':{'type':Sequelize[_0x070e('0x3')],'defaultValue':null},'privacyEnabled':{'type':Sequelize[_0x070e('0x15')],'defaultValue':![]},'apiKeyNonce':{'type':Sequelize[_0x070e('0x3')],'allowNull':!![]},'apiKeyIat':{'type':Sequelize[_0x070e('0x3')],'allowNull':!![]},'screenrecording':{'type':Sequelize['BOOLEAN'],'defaultValue':![],'set':function(_0x4f720f){if(typeof _0x4f720f==='string'){var _0x1624cd=_0x4f720f==='1'?!![]:_0x4f720f==='0'?![]:_0x4f720f===_0x070e('0x50')?!![]:_0x4f720f===_0x070e('0x51')?![]:![];this[_0x070e('0x5')]('screenrecording',_0x1624cd);}else{this[_0x070e('0x5')](_0x070e('0x52'),_0x4f720f);}}},'blocked':{'type':Sequelize[_0x070e('0x15')],'defaultValue':![],'set':function(_0xd74f9c){this[_0x070e('0x5')](_0x070e('0x53'),_0xd74f9c);if(_0xd74f9c===!![]){this['setDataValue'](_0x070e('0x54'),moment());this['setDataValue'](_0x070e('0x55'),0x0);}else{this[_0x070e('0x5')](_0x070e('0x54'),null);}}},'blockedAt':{'type':Sequelize[_0x070e('0x16')],'defaultValue':null},'loginAttempts':{'type':Sequelize[_0x070e('0x14')],'defaultValue':0x0},'disabled':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'settingsEnabled':{'type':Sequelize[_0x070e('0x15')],'defaultValue':!![]},'wssPort':{'type':Sequelize[_0x070e('0x14')](0x5)['UNSIGNED'],'defaultValue':0x1f99},'downloadAttachments':{'type':Sequelize[_0x070e('0x15')],'defaultValue':!![]},'downloadOmnichannelInteractions':{'type':Sequelize[_0x070e('0x15')],'defaultValue':!![]},'downloadVoiceRecordings':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'ignorePauseForPreviewCalls':{'type':Sequelize[_0x070e('0x15')],'defaultValue':![]},'selectRecallMeCampaign':{'type':Sequelize[_0x070e('0x15')],'defaultValue':![]},'adSsoEnabled':{'type':Sequelize[_0x070e('0x15')],'defaultValue':![]},'chatAutoanswer':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'chatAutoanswerDelay':{'type':Sequelize[_0x070e('0x14')],'defaultValue':0x0},'emailAutoanswer':{'type':Sequelize[_0x070e('0x15')],'defaultValue':![]},'emailAutoanswerDelay':{'type':Sequelize[_0x070e('0x14')],'defaultValue':0x0},'smsAutoanswer':{'type':Sequelize[_0x070e('0x15')],'defaultValue':![]},'smsAutoanswerDelay':{'type':Sequelize[_0x070e('0x14')],'defaultValue':0x0},'openchannelAutoanswer':{'type':Sequelize[_0x070e('0x15')],'defaultValue':![]},'openchannelAutoanswerDelay':{'type':Sequelize[_0x070e('0x14')],'defaultValue':0x0},'faxAutoanswer':{'type':Sequelize[_0x070e('0x15')],'defaultValue':![]},'faxAutoanswerDelay':{'type':Sequelize[_0x070e('0x14')],'defaultValue':0x0},'whatsappAutoanswer':{'type':Sequelize[_0x070e('0x15')],'defaultValue':![]},'whatsappAutoanswerDelay':{'type':Sequelize[_0x070e('0x14')],'defaultValue':0x0}};
\ No newline at end of file
index 3b7677e..42747e4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0x6e75=['addMailInteractions','user_has_mail_interactions:save','removeMailInteractions','user_has_mail_interactions:remove','addFaxInteractions','removeFaxInteractions','user_has_fax_interactions:remove','addSmsInteractions','user_has_sms_interactions:save','removeSmsInteractions','user_has_sms_interactions:remove','addOpenchannelInteractions','user_has_openchannel_interactions:save','removeOpenchannelInteractions','user_has_openchannel_interactions:remove','user_has_whatsapp_interactions:save','removeWhatsappInteractions','getVoicePrefixes','VoicePrefix','getFaxAccounts','addFaxAccounts','removeFaxAccounts','getMailAccounts','MailAccount','addMailAccounts','OpenchannelAccount','getOpenchannelAccounts','addOpenchannelAccounts','removeOpenchannelAccounts','SmsAccount','getSmsAccounts','addSmsAccounts','removeSmsAccounts','getChatWebsites','ChatWebsite','addChatWebsites','removeChatWebsites','getWhatsappAccounts','WhatsappAccount','addWhatsappAccounts','removeWhatsappAccounts','CmHopper','$and','$or','$gt','$gte','$lt','$lte','$ne','$eq','$not','$between','$in','$like','$notLike','$iLike','$notILike','$contains','$contained','$any','firstName','Contact','getApiKey','token','No\x20API\x20access\x20key\x20found!','You\x20don\x27t\x20have\x20sufficient\x20privileges\x20to\x20access\x20this\x20resource.','createApiKey','generateApiKey','nonce','removeApiKey','apiKeyNonce','apiKeyIat','API\x20key\x20not\x20available','whoami','send','Unable\x20to\x20retrieve\x20the\x20current\x20user','getPresence','queues','inbound','flatten','col','toString','asc','desc','uniqBy','orderBy','Unable\x20to\x20retrieve\x20RPC\x20agents\x20(AMI)','Unable\x20to\x20retrieve\x20RPC\x20agents\x20(Routing)','voicePause','idle','unknown','unavailable','ringing','voiceStatus','charAt','slice','QueryTypes','select','ui.','InteractionId','field','ui.createdAt','user_has_','_interactions','ui.UserId\x20=\x20?','OpenTabs','moment','path','lodash','squel','jayson/promise','../../components/parsers/qs','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../errors/api','APIBadRequestError','handleError','socket.io-emitter','redis','./user.socket','register','defaults','localhost','client','http','request','then','info','User,\x20%s,\x20%s','request\x20sent','debug','User,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','sendStatus','status','json','offset','limit','undefined','count','set','Content-Range','update','emit','userNotification:recalc:','destroy','get','role','Users','user','agent','telephone','filter','ignore','map','value','includes','find','name','UserProfileResource','index','User','fieldName','type','key','password','salt','getOptions','where','includeAll','include','query','userSetting','true','UserSetting','attributes','findAll','openTabs','rows','length','chat','dataValues','sms','push','mail','openchannel','whatsapp','all','show','params','model','keys','rawAttributes','intersection','fields','merge','options','fax','body','describe','omit','ids','Setting','findById','securePassword','max','isNil','internal','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','VoiceMail','permissions','101','102','103','113','110','104','106','107','108','109','111','create','Unauthorized','admin','Unauthorized.\x20You\x20must\x20be\x20an\x20administrator\x20in\x20order\x20to\x20create\x20an\x20user','Unauthorized.\x20You\x20must\x20be\x20an\x20administrator\x20in\x20order\x20to\x20create\x20another\x20administrator','checkUserLimits','settingsEnabled','userProfileId','UserProfileSection','Telephones','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','Agents','isEmpty','compact','changePassword','oldPassword','newPassword','Sequelize','ValidationError','Invalid\x20body\x20format.\x20Use\x20oldPassword\x20and\x20newPassword','Wrong\x20credentials','New\x20password\x20must\x20be\x20different\x20from\x20old\x20password','Invalid\x20body\x20format.\x20Use\x20newPassword','findOne','enforcePasswordHistory','validatePasswordPattern','previousPasswords','validatePasswordHistory','passwordHistoryLimit','updatePasswordsHistory','channel','online','loginInPause','interface','isValidChannel','add','capitalize','toLowerCase','Queues','penalty','spread','QueueId','Queue:save','voice','VoiceQueue','SIP/%s','upsert','removeQueues','Unknown\x20channel','isArray','Queue:remove','UserVoiceQueueRt','addAvatar','userpic','file','filename','join','root','server/files/images/logos/default_profile.png','download','existsSync','server/files/images/','getOpenTabs','ChatOpenTabs','CHAT','createdAt','FaxOpenTabs','FAX','OpenchannelOpenTabs','OPENCHANNEL','MailOpenTabs','MAIL','SMS','WhatsappOpenTabs','WHATSAPP','concat','getContacts','CmContact','filters','order','sort','hasOwnProperty','List','Tag','Tags','tag','nolimit','Queue','Unknown\x20role','getVoiceQueuesRt','pick','getGroups','ChatGroup','UserId','VoiceRecording','getScreenRecordings','ScreenRecording','getChatInteractions','ChatInteraction','getOpenchannelInteractions','MailInteraction','SmsInteraction','getSmsInteractions','FaxInteraction','getFaxInteractions','WhatsappInteraction','getWhatsappInteractions','login','phone','format','LOCAL/%s@from-sip/n','intrf','user:forcelogout','headers','x-forwarded-for','connection','socket','remoteAddress','getVoiceQueues','forEach','getChannels','YYYY-MM-DD\x20HH:mm:ss','LOGIN','device','PAUSE','LOGININPAUSE','MemberReport','isMiddleware','resolve','logout','pause','updateAttributes','DEFAULT\x20PAUSE','bulkCreate','unpause','Channel\x20parameter\x20%s\x20is\x20invalid','mailPause','chatPause','faxPause','openchannelPause','smsPause','whatsappPause','pauseType','lastPauseAt','User\x20with\x20id\x20%s\x20not\x20found','getTeams','Team','addTeams','transaction','getAssociatedQueues','flattenDeep','addAgent','getDataValue','Voice','UserVoicePrefix','VoicePrefixId','getLists','getAgents','values','You\x20can\x27t\x20delete\x20yourself','addChatInteractions','user_has_chat_interactions:save','removeChatInteractions','user_has_chat_interactions:remove'];(function(_0x1232e7,_0x3808cd){var _0x29a410=function(_0x297a02){while(--_0x297a02){_0x1232e7['push'](_0x1232e7['shift']());}};_0x29a410(++_0x3808cd);}(_0x6e75,0x6a));var _0x56e7=function(_0x14add3,_0x13ce8d){_0x14add3=_0x14add3-0x0;var _0x4a174f=_0x6e75[_0x14add3];return _0x4a174f;};'use strict';var moment=require(_0x56e7('0x0'));var util=require('util');var path=require(_0x56e7('0x1'));var fs=require('fs');var _=require(_0x56e7('0x2'));var squel=require(_0x56e7('0x3'));var jayson=require(_0x56e7('0x4'));var Redis=require('ioredis');var authService=require('../../components/auth/service');var qs=require(_0x56e7('0x5'));var logger=require(_0x56e7('0x6'))(_0x56e7('0x7'));var utils=require(_0x56e7('0x8'));var config=require(_0x56e7('0x9'));var licenseUtil=require(_0x56e7('0xa'));var APIBadRequestError=require(_0x56e7('0xb'))[_0x56e7('0xc')];var APINotFoundError=require(_0x56e7('0xb'))['APINotFoundError'];var APIHandleError=require(_0x56e7('0xb'))[_0x56e7('0xd')];var db=require('../../mysqldb')['db'];var socket=require(_0x56e7('0xe'))(new Redis(config[_0x56e7('0xf')]));require(_0x56e7('0x10'))[_0x56e7('0x11')](socket);config[_0x56e7('0xf')]=_[_0x56e7('0x12')](config[_0x56e7('0xf')],{'host':_0x56e7('0x13'),'port':0x18eb});var amiClient=jayson[_0x56e7('0x14')][_0x56e7('0x15')]({'port':0x232a});var values;function respondWithRpcPromise(_0x3ac352,_0x34bb8f,_0x5c98f9,_0xf88d67){return new Promise(function(_0x1395bd,_0x3937de){var _0x51f792=_0xf88d67||amiClient;return _0x51f792[_0x56e7('0x16')](_0x3ac352,_0x5c98f9)[_0x56e7('0x17')](function(_0x56e091){logger[_0x56e7('0x18')](_0x56e7('0x19'),_0x34bb8f,_0x56e7('0x1a'));logger[_0x56e7('0x1b')](_0x56e7('0x1c'),_0x34bb8f,'request\x20sent',JSON[_0x56e7('0x1d')](_0x56e091));if(_0x56e091[_0x56e7('0x1e')]){if(_0x56e091[_0x56e7('0x1e')][_0x56e7('0x1f')]===0x1f4){logger[_0x56e7('0x1e')](_0x56e7('0x19'),_0x34bb8f,_0x56e091[_0x56e7('0x1e')][_0x56e7('0x20')]);return _0x3937de(_0x56e091[_0x56e7('0x1e')]['message']);}logger[_0x56e7('0x1e')](_0x56e7('0x19'),_0x34bb8f,_0x56e091[_0x56e7('0x1e')][_0x56e7('0x20')]);return _0x1395bd(_0x56e091[_0x56e7('0x1e')][_0x56e7('0x20')]);}else{logger[_0x56e7('0x18')]('User,\x20%s,\x20%s',_0x34bb8f,_0x56e7('0x1a'));_0x1395bd(_0x56e091[_0x56e7('0x21')]['message']);}})[_0x56e7('0x22')](function(_0x3cdfb4){logger[_0x56e7('0x1e')](_0x56e7('0x19'),_0x34bb8f,_0x3cdfb4);_0x3937de(_0x3cdfb4);});});}function respondWithStatusCode(_0x16d3f0,_0x2d531a){_0x2d531a=_0x2d531a||0xcc;return function(_0x1b9682){if(_0x1b9682){return _0x16d3f0[_0x56e7('0x23')](_0x2d531a);}return _0x16d3f0[_0x56e7('0x24')](_0x2d531a)['end']();};}function respondWithResult(_0x8271d4,_0x10208d){_0x10208d=_0x10208d||0xc8;return function(_0x4d1d56){if(_0x4d1d56){return _0x8271d4['status'](_0x10208d)[_0x56e7('0x25')](_0x4d1d56);}};}function respondWithFilteredResult(_0x5cb8ff,_0x4c067b){return function(_0x48a081){if(_0x48a081){var _0x11bd06=typeof _0x4c067b[_0x56e7('0x26')]==='undefined'&&typeof _0x4c067b[_0x56e7('0x27')]===_0x56e7('0x28');var _0x57fcc6=_0x48a081['count'];var _0x4b0933=_0x11bd06?0x0:_0x4c067b[_0x56e7('0x26')];var _0x248bce=_0x11bd06?_0x48a081[_0x56e7('0x29')]:_0x4c067b[_0x56e7('0x26')]+_0x4c067b[_0x56e7('0x27')];var _0x28514b;if(_0x248bce>=_0x57fcc6){_0x248bce=_0x57fcc6;_0x28514b=0xc8;}else{_0x28514b=0xce;}_0x5cb8ff[_0x56e7('0x24')](_0x28514b);return _0x5cb8ff[_0x56e7('0x2a')](_0x56e7('0x2b'),_0x4b0933+'-'+_0x248bce+'/'+_0x57fcc6)[_0x56e7('0x25')](_0x48a081);}return null;};}function saveUpdates(_0x2a3262){return function(_0x3670b9){if(_0x3670b9){return _0x3670b9[_0x56e7('0x2c')](_0x2a3262)[_0x56e7('0x17')](function(_0x1ca36f){socket[_0x56e7('0x2d')](_0x56e7('0x2e')+_0x1ca36f['id'],{});return _0x1ca36f;});}return null;};}function removeEntity(_0x73baa9){return function(_0xcc509a){if(_0xcc509a){return _0xcc509a[_0x56e7('0x2f')]()[_0x56e7('0x17')](function(){var _0x2bea29=_0xcc509a[_0x56e7('0x30')]({'plain':!![]});if(_0x2bea29[_0x56e7('0x31')]==='admin')return;var _0x24b4b4=[{'name':_0x56e7('0x32'),'value':_0x56e7('0x33'),'ignore':!![]},{'name':'Agents','value':_0x56e7('0x34'),'ignore':![]},{'name':'Telephones','value':_0x56e7('0x35'),'ignore':![]}];var _0x4954bf=_(_0x24b4b4)[_0x56e7('0x36')](_0x56e7('0x37'))[_0x56e7('0x38')]('value')[_0x56e7('0x39')]();if(_[_0x56e7('0x3a')](_0x4954bf,_0x2bea29[_0x56e7('0x31')])){return;}var _0x4c67a9=_[_0x56e7('0x3b')](_0x24b4b4,[_0x56e7('0x39'),_0x2bea29[_0x56e7('0x31')]])[_0x56e7('0x3c')];return db[_0x56e7('0x3d')]['destroy']({'where':{'type':_0x4c67a9,'resourceId':_0x2bea29['id']}})[_0x56e7('0x17')](function(){return _0xcc509a;});})[_0x56e7('0x17')](function(){_0x73baa9[_0x56e7('0x24')](0xcc)['end']();});}};}function handleEntityNotFound(_0x5068a2){return function(_0x4707c7){if(!_0x4707c7){_0x5068a2[_0x56e7('0x23')](0x194);}return _0x4707c7;};}function handleError(_0x4ec7d6,_0x2836c8){_0x2836c8=_0x2836c8||0x1f4;return function(_0x4f65c0){logger[_0x56e7('0x1e')](_0x4f65c0['stack']);if(_0x4f65c0[_0x56e7('0x3c')]){delete _0x4f65c0[_0x56e7('0x3c')];}_0x4ec7d6[_0x56e7('0x24')](_0x2836c8)['send'](_0x4f65c0);};}exports[_0x56e7('0x3e')]=function(_0x22fb91,_0x1daf6a){var _0x11726d={},_0x28e0d1={'count':0x0,'rows':[]};var _0x427721=_(db[_0x56e7('0x3f')]['rawAttributes'])[_0x56e7('0x38')](function(_0x575a8c){return{'name':_0x575a8c[_0x56e7('0x40')],'type':_0x575a8c[_0x56e7('0x41')][_0x56e7('0x42')]};})['filter'](function(_0x533788){return!_[_0x56e7('0x3a')]([_0x56e7('0x43'),_0x56e7('0x44')],_0x533788[_0x56e7('0x3c')]);})['value']();_0x11726d=qs[_0x56e7('0x45')](_0x427721,_0x22fb91);var _0x412fc0={'where':_0x11726d[_0x56e7('0x46')]};return db['User'][_0x56e7('0x29')](_0x412fc0)[_0x56e7('0x17')](function(_0x41f20d){_0x28e0d1['count']=_0x41f20d;if(_0x22fb91['query'][_0x56e7('0x47')]){_0x11726d[_0x56e7('0x48')]=[{'all':!![]}];}if(_0x22fb91[_0x56e7('0x49')][_0x56e7('0x4a')]===_0x56e7('0x4b')){_0x11726d['include']=[{'model':db[_0x56e7('0x4c')],'as':_0x56e7('0x4a')}];}if(!_[_0x56e7('0x3a')](_0x11726d[_0x56e7('0x4d')],'id')){_0x11726d[_0x56e7('0x4d')]['push']('id');}return db[_0x56e7('0x3f')][_0x56e7('0x4e')](_0x11726d);})[_0x56e7('0x17')](function(_0x15170c){_0x28e0d1['rows']=_0x15170c;if(_0x22fb91[_0x56e7('0x49')][_0x56e7('0x4f')]===_0x56e7('0x4b')){var _0x4125f3=[];for(var _0xe464dc=0x0;_0xe464dc<_0x28e0d1[_0x56e7('0x50')][_0x56e7('0x51')];_0xe464dc++){_0x4125f3['push'](get_open_tabs(_0x56e7('0x52'),_0x28e0d1[_0x56e7('0x50')][_0xe464dc][_0x56e7('0x53')]));_0x4125f3['push'](get_open_tabs(_0x56e7('0x54'),_0x28e0d1[_0x56e7('0x50')][_0xe464dc][_0x56e7('0x53')]));_0x4125f3[_0x56e7('0x55')](get_open_tabs('fax',_0x28e0d1[_0x56e7('0x50')][_0xe464dc][_0x56e7('0x53')]));_0x4125f3['push'](get_open_tabs(_0x56e7('0x56'),_0x28e0d1['rows'][_0xe464dc][_0x56e7('0x53')]));_0x4125f3[_0x56e7('0x55')](get_open_tabs(_0x56e7('0x57'),_0x28e0d1[_0x56e7('0x50')][_0xe464dc][_0x56e7('0x53')]));_0x4125f3['push'](get_open_tabs(_0x56e7('0x58'),_0x28e0d1['rows'][_0xe464dc][_0x56e7('0x53')]));}return Promise[_0x56e7('0x59')](_0x4125f3)[_0x56e7('0x17')](function(){return _0x28e0d1;});}else{return _0x28e0d1;}})[_0x56e7('0x17')](respondWithFilteredResult(_0x1daf6a,_0x11726d))[_0x56e7('0x22')](handleError(_0x1daf6a,null));};exports[_0x56e7('0x5a')]=function(_0x27cedf,_0x33ee54){var _0x184c34={'raw':![],'where':{'id':_0x27cedf[_0x56e7('0x5b')]['id']}},_0x394f83={};_0x394f83[_0x56e7('0x5c')]=_['differenceBy'](_[_0x56e7('0x5d')](db[_0x56e7('0x3f')][_0x56e7('0x5e')]),[_0x56e7('0x43'),_0x56e7('0x44')]);_0x394f83[_0x56e7('0x49')]=_[_0x56e7('0x5d')](_0x27cedf[_0x56e7('0x49')]);_0x394f83['filters']=_[_0x56e7('0x5f')](_0x394f83['model'],_0x394f83[_0x56e7('0x49')]);_0x184c34[_0x56e7('0x4d')]=_[_0x56e7('0x5f')](_0x394f83[_0x56e7('0x5c')],qs['fields'](_0x27cedf['query'][_0x56e7('0x60')]));_0x184c34[_0x56e7('0x4d')]=_0x184c34[_0x56e7('0x4d')][_0x56e7('0x51')]?_0x184c34[_0x56e7('0x4d')]:_0x394f83[_0x56e7('0x5c')];if(_0x27cedf[_0x56e7('0x49')]['includeAll']){_0x184c34['include']=[{'all':!![]}];}if(_0x27cedf[_0x56e7('0x49')][_0x56e7('0x4a')]===_0x56e7('0x4b')){_0x184c34[_0x56e7('0x48')]=[{'model':db[_0x56e7('0x4c')],'as':_0x56e7('0x4a')}];}_0x184c34=_[_0x56e7('0x61')]({},_0x184c34,_0x27cedf[_0x56e7('0x62')]);if(!_['includes'](_0x184c34[_0x56e7('0x4d')],'id')){_0x184c34[_0x56e7('0x4d')]['push']('id');}return db[_0x56e7('0x3f')][_0x56e7('0x3b')](_0x184c34)[_0x56e7('0x17')](handleEntityNotFound(_0x33ee54,null))[_0x56e7('0x17')](function(_0x56cdb3){var _0xba46df=[];values=_0x56cdb3;if(_0x27cedf[_0x56e7('0x49')]['openTabs']===_0x56e7('0x4b')){_0xba46df[_0x56e7('0x55')](get_open_tabs(_0x56e7('0x52'),_0x56cdb3['dataValues']));_0xba46df[_0x56e7('0x55')](get_open_tabs(_0x56e7('0x54'),_0x56cdb3[_0x56e7('0x53')]));_0xba46df[_0x56e7('0x55')](get_open_tabs(_0x56e7('0x57'),_0x56cdb3[_0x56e7('0x53')]));_0xba46df['push'](get_open_tabs('whatsapp',_0x56cdb3['dataValues']));_0xba46df['push'](get_open_tabs(_0x56e7('0x63'),_0x56cdb3[_0x56e7('0x53')]));_0xba46df[_0x56e7('0x55')](get_open_tabs(_0x56e7('0x56'),_0x56cdb3[_0x56e7('0x53')]));return Promise[_0x56e7('0x59')](_0xba46df);}else{return values;}})[_0x56e7('0x17')](function(){return values;})['then'](respondWithResult(_0x33ee54,null))['catch'](handleError(_0x33ee54,null));};exports[_0x56e7('0x2c')]=function(_0x2a0f39,_0x3973dc){if(_0x2a0f39[_0x56e7('0x64')]['id']){delete _0x2a0f39[_0x56e7('0x64')]['id'];}delete _0x2a0f39[_0x56e7('0x64')][_0x56e7('0x31')];return db[_0x56e7('0x3f')]['find']({'where':{'id':_0x2a0f39[_0x56e7('0x5b')]['id']}})['then'](handleEntityNotFound(_0x3973dc,null))[_0x56e7('0x17')](saveUpdates(_0x2a0f39[_0x56e7('0x64')],null))[_0x56e7('0x17')](respondWithResult(_0x3973dc,null))[_0x56e7('0x22')](handleError(_0x3973dc,null));};exports['describe']=function(_0x20fa34,_0x247104){return db['User'][_0x56e7('0x65')]()[_0x56e7('0x17')](respondWithResult(_0x247104,null))['catch'](handleError(_0x247104,null));};exports['addContacts']=function(_0x13ae70,_0x3ae317){return db[_0x56e7('0x3f')][_0x56e7('0x3b')]({'where':{'id':_0x13ae70['params']['id']}})['then'](handleEntityNotFound(_0x3ae317,null))[_0x56e7('0x17')](function(_0xbb3592){if(_0xbb3592){return _0xbb3592['addContacts'](_0x13ae70[_0x56e7('0x64')]['ids'],_[_0x56e7('0x66')](_0x13ae70[_0x56e7('0x64')],[_0x56e7('0x67'),'id'])||{});}})['then'](respondWithResult(_0x3ae317,null))[_0x56e7('0x22')](handleError(_0x3ae317,null));};function validateUser(_0x52a660){return new Promise(function(_0x2f16c9,_0x4e24e5){if(_0x52a660['internal'])return _0x2f16c9(_0x52a660);return db[_0x56e7('0x68')][_0x56e7('0x69')](0x1)['then'](function(_0x150226){if(_0x150226[_0x56e7('0x6a')])authService['validatePasswordPattern'](_0x52a660['password']);db[_0x56e7('0x3f')][_0x56e7('0x6b')]('internal')[_0x56e7('0x17')](function(_0x3bb9e2){if(_[_0x56e7('0x6c')](_0x3bb9e2)){_0x52a660[_0x56e7('0x6d')]=_0x150226[_0x56e7('0x6e')]||0x1;return;}if(_[_0x56e7('0x6c')](_0x150226[_0x56e7('0x6e')])||_0x150226['min_internal']===_0x3bb9e2){_0x52a660[_0x56e7('0x6d')]=_0x3bb9e2+0x1;return;}if(_0x150226[_0x56e7('0x6e')]>_0x3bb9e2){_0x52a660[_0x56e7('0x6d')]=_0x150226['min_internal'];return;}return db[_0x56e7('0x6f')][_0x56e7('0x49')](_0x56e7('0x70'),{'type':db[_0x56e7('0x6f')]['QueryTypes'][_0x56e7('0x71')]})['then'](function(_0x39384b){if(_0x39384b&&_0x39384b[_0x56e7('0x51')]){for(var _0x3fe01a=0x0,_0x48d9f0=_0x39384b[_0x56e7('0x51')];_0x3fe01a<_0x48d9f0&&_[_0x56e7('0x6c')](_0x52a660[_0x56e7('0x6d')]);_0x3fe01a++){if(_0x150226[_0x56e7('0x6e')]<=_0x39384b[_0x3fe01a][_0x56e7('0x72')]){_0x52a660[_0x56e7('0x6d')]=_0x39384b[_0x3fe01a][_0x56e7('0x72')];}else if(_0x150226['min_internal']>_0x39384b[_0x3fe01a][_0x56e7('0x72')]&&_0x150226[_0x56e7('0x6e')]<=_0x39384b[_0x3fe01a]['to']){_0x52a660[_0x56e7('0x6d')]=_0x150226[_0x56e7('0x6e')];}}}if(_[_0x56e7('0x6c')](_0x52a660[_0x56e7('0x6d')])){_0x52a660[_0x56e7('0x6d')]=_0x3bb9e2+0x1;}return _0x2f16c9(_0x52a660);});});})['catch'](function(_0xd214a9){_0x4e24e5(_0xd214a9);});});}function updateUser(_0x27e2de){return new Promise(function(_0x10f059,_0x951d55){try{if(_0x27e2de[_0x56e7('0x73')]){_0x27e2de[_0x56e7('0x74')]=_0x27e2de[_0x56e7('0x6d')];_0x27e2de[_0x56e7('0x75')]={'mailbox':_0x27e2de[_0x56e7('0x6d')],'password':_0x27e2de[_0x56e7('0x43')],'fullname':_0x27e2de['fullname'],'email':_0x27e2de['email']};}if(_0x27e2de[_0x56e7('0x31')]===_0x56e7('0x34')){if(!_0x27e2de['permissions'])_0x27e2de[_0x56e7('0x76')]=[_0x56e7('0x77'),_0x56e7('0x78'),_0x56e7('0x79'),_0x56e7('0x7a'),_0x56e7('0x7b'),_0x56e7('0x7c'),'105',_0x56e7('0x7d'),_0x56e7('0x7e'),_0x56e7('0x7f'),_0x56e7('0x80'),'100',_0x56e7('0x81'),'114','115'];}_0x10f059(_0x27e2de);}catch(_0xcd2ea5){_0x951d55(_0xcd2ea5);}});}exports[_0x56e7('0x82')]=function(_0x548d04,_0x407e9e){if(_0x548d04[_0x56e7('0x33')][_0x56e7('0x31')]===_0x56e7('0x34'))throw new Error(_0x56e7('0x83'));if(_0x548d04[_0x56e7('0x64')][_0x56e7('0x31')]==='user'&&_0x548d04[_0x56e7('0x33')][_0x56e7('0x31')]!==_0x56e7('0x84')){throw new Error(_0x56e7('0x85'));}if(_0x548d04['body'][_0x56e7('0x31')]===_0x56e7('0x84')&&_0x548d04[_0x56e7('0x33')][_0x56e7('0x31')]!=='admin'){throw new Error(_0x56e7('0x86'));}return licenseUtil[_0x56e7('0x87')]([_0x548d04[_0x56e7('0x64')]])[_0x56e7('0x17')](function(){return validateUser(_0x548d04[_0x56e7('0x64')]);})['then'](function(_0x335f34){return updateUser(_0x335f34)['then'](function(_0x1c5449){if(_0x1c5449[_0x56e7('0x31')]==='admin'){_0x1c5449[_0x56e7('0x88')]=_0x548d04[_0x56e7('0x33')][_0x56e7('0x88')];delete _0x1c5449[_0x56e7('0x89')];}return _0x1c5449;});})[_0x56e7('0x17')](function(_0xac5466){return db['User']['create'](_0xac5466,{'include':[{'model':db[_0x56e7('0x75')],'as':_0x56e7('0x75')}]});})[_0x56e7('0x17')](function(_0x3a513f){if(_0x548d04[_0x56e7('0x64')]['role']===_0x56e7('0x33'))return _0x3a513f;if(_0x548d04[_0x56e7('0x33')][_0x56e7('0x31')]!==_0x56e7('0x33'))return _0x3a513f;return db[_0x56e7('0x8a')]['find']({'where':{'name':_0x3a513f[_0x56e7('0x31')]===_0x56e7('0x34')?'Agents':_0x56e7('0x8b'),'userProfileId':_0x548d04[_0x56e7('0x33')][_0x56e7('0x89')]},'raw':!![]})[_0x56e7('0x17')](function(_0xa504f0){if(!_0xa504f0||_0xa504f0[_0x56e7('0x8c')]!=0x0)return _0x3a513f;return db[_0x56e7('0x3d')]['create']({'name':_0x3a513f[_0x56e7('0x3c')],'resourceId':_0x3a513f['id'],'type':_0xa504f0[_0x56e7('0x3c')],'sectionId':_0xa504f0['id']},{})[_0x56e7('0x17')](function(){return _0x3a513f;});})[_0x56e7('0x22')](function(_0x177bb8){logger['error'](_0x56e7('0x8d'),_0x177bb8);throw _0x177bb8;});})['then'](respondWithResult(_0x407e9e,0xc9))[_0x56e7('0x22')](handleError(_0x407e9e,null));};exports['bulkCreate']=function(_0x3d8e25,_0xcc5f78){var _0x4b1ddd=_0x3d8e25[_0x56e7('0x64')];var _0x5d3797=[];if(_0x3d8e25[_0x56e7('0x33')][_0x56e7('0x31')]===_0x56e7('0x34'))throw new Error(_0x56e7('0x83'));if(_[_0x56e7('0x8e')](_0x4b1ddd,['role',_0x56e7('0x33')])&&_0x3d8e25[_0x56e7('0x33')][_0x56e7('0x31')]!==_0x56e7('0x84')){throw new Error(_0x56e7('0x85'));}if(_['some'](_0x4b1ddd,['role','admin'])&&_0x3d8e25[_0x56e7('0x33')]['role']!=='admin'){throw new Error(_0x56e7('0x8f'));}return licenseUtil[_0x56e7('0x87')](_0x4b1ddd)[_0x56e7('0x17')](function(){return validateUser(_0x4b1ddd[0x0]);})['then'](function(){for(var _0x74d9ad=0x1;_0x74d9ad<_0x4b1ddd[_0x56e7('0x51')];_0x74d9ad++){var _0x564ad4=_0x4b1ddd[_0x74d9ad-0x1][_0x56e7('0x6d')];if(!_0x4b1ddd[_0x74d9ad]['internal'])_0x4b1ddd[_0x74d9ad]['internal']=_0x564ad4+0x1;_0x5d3797[_0x56e7('0x55')](validateUser(_0x4b1ddd[_0x74d9ad]));}return Promise[_0x56e7('0x59')](_0x5d3797);})['then'](function(){_0x5d3797=[];for(var _0x14f167=0x0;_0x14f167<_0x4b1ddd[_0x56e7('0x51')];_0x14f167++){_0x5d3797[_0x56e7('0x55')](updateUser(_0x4b1ddd[_0x14f167]));}return Promise[_0x56e7('0x59')](_0x5d3797);})['then'](function(){_0x5d3797=_0x4b1ddd[_0x56e7('0x38')](function(_0x2366ad){return db[_0x56e7('0x3f')]['create'](_0x2366ad,{'include':[{'model':db[_0x56e7('0x75')],'as':'VoiceMail'}]})[_0x56e7('0x17')](function(_0x45dfc6){_0x2366ad['id']=_0x45dfc6['id'];return _0x2366ad;});});return Promise[_0x56e7('0x59')](_0x5d3797);})['then'](function(_0x437b84){if(_0x3d8e25[_0x56e7('0x64')][_0x56e7('0x31')]===_0x56e7('0x33'))return _0x437b84;if(_0x3d8e25[_0x56e7('0x33')][_0x56e7('0x31')]!==_0x56e7('0x33'))return _0x437b84;var _0x3074b6=_[_0x56e7('0x8e')](_0x437b84,function(_0x103de9){return _0x103de9['role']===_0x56e7('0x34')||_0x103de9[_0x56e7('0x31')]==='telephone';});if(!_0x3074b6)return _0x437b84;return db[_0x56e7('0x8a')][_0x56e7('0x4e')]({'where':{'name':{'$or':[_0x56e7('0x90'),_0x56e7('0x8b')]},'userProfileId':_0x3d8e25[_0x56e7('0x33')]['userProfileId']},'raw':!![]})[_0x56e7('0x17')](function(_0x33df5c){if(_[_0x56e7('0x91')](_0x33df5c)||!_[_0x56e7('0x8e')](_0x33df5c,[_0x56e7('0x8c'),0x0]))return _0x437b84;_0x5d3797=[];var _0x4d98c2=_(_0x33df5c)[_0x56e7('0x38')](function(_0x288c3f){if(_0x288c3f[_0x56e7('0x8c')]===0x1)return;return _0x288c3f[_0x56e7('0x3c')]==='Agents'?_0x56e7('0x34'):_0x56e7('0x35');})[_0x56e7('0x92')]()['value']();for(var _0xf7895f=0x0;_0xf7895f<_0x437b84['length'];_0xf7895f++){if(!_[_0x56e7('0x3a')](_0x4d98c2,_0x437b84[_0xf7895f][_0x56e7('0x31')]))return;var _0x2ec7e8=_0x437b84[_0xf7895f][_0x56e7('0x31')]===_0x56e7('0x34')?_0x56e7('0x90'):_0x56e7('0x8b');_0x5d3797[_0x56e7('0x55')](db[_0x56e7('0x3d')]['create']({'name':_0x437b84[_0xf7895f][_0x56e7('0x3c')],'resourceId':_0x437b84[_0xf7895f]['id'],'type':_0x2ec7e8,'sectionId':_[_0x56e7('0x3b')](_0x33df5c,[_0x56e7('0x3c'),_0x2ec7e8])['id']},{}));}return Promise[_0x56e7('0x59')](_0x5d3797);});})[_0x56e7('0x17')](respondWithResult(_0xcc5f78,0xc9))['catch'](handleError(_0xcc5f78,null));};exports[_0x56e7('0x93')]=function(_0x4add3d,_0x386b39){if(_0x4add3d[_0x56e7('0x64')]['id']){delete _0x4add3d[_0x56e7('0x64')]['id'];}return db[_0x56e7('0x3f')][_0x56e7('0x3b')]({'where':{'id':_0x4add3d[_0x56e7('0x5b')]['id']}})[_0x56e7('0x17')](function(_0x4549d9){if(!_0x4549d9)return null;if(_0x4549d9['id']===_0x4add3d[_0x56e7('0x33')]['id']){if(!_0x4add3d['body'][_0x56e7('0x94')]||!_0x4add3d[_0x56e7('0x64')][_0x56e7('0x95')]){throw new db[(_0x56e7('0x96'))][(_0x56e7('0x97'))](_0x56e7('0x98'));}if(!_0x4549d9['authenticate'](_0x4add3d[_0x56e7('0x64')][_0x56e7('0x94')])){throw new db[(_0x56e7('0x96'))]['ValidationError'](_0x56e7('0x99'));}if(_0x4add3d[_0x56e7('0x64')][_0x56e7('0x94')]===_0x4add3d[_0x56e7('0x64')]['newPassword']){throw new db[(_0x56e7('0x96'))][(_0x56e7('0x97'))](_0x56e7('0x9a'));}}else if(_0x4add3d['user'][_0x56e7('0x31')]===_0x56e7('0x84')){if(!_0x4add3d[_0x56e7('0x64')][_0x56e7('0x95')]){throw new db[(_0x56e7('0x96'))]['ValidationError'](_0x56e7('0x9b'));}}else if(_0x4add3d['user'][_0x56e7('0x31')]===_0x56e7('0x33')){if(!_0x4add3d[_0x56e7('0x64')][_0x56e7('0x95')]){throw new db[(_0x56e7('0x96'))]['ValidationError'](_0x56e7('0x9b'));}if(_0x4549d9[_0x56e7('0x31')]!=='agent'){throw new db[(_0x56e7('0x96'))][(_0x56e7('0x97'))](_0x56e7('0x83'));}}else{throw new db[(_0x56e7('0x96'))]['ValidationError'](_0x56e7('0x83'));}return _0x4549d9;})[_0x56e7('0x17')](handleEntityNotFound(_0x386b39,null))[_0x56e7('0x17')](function(_0x4625ed){return db['Setting'][_0x56e7('0x9c')]({'attributes':['id',_0x56e7('0x6a'),_0x56e7('0x9d'),'passwordHistoryLimit']})[_0x56e7('0x17')](function(_0x403596){if(_0x403596['securePassword'])authService[_0x56e7('0x9e')](_0x4add3d['body'][_0x56e7('0x95')]);if(!_0x403596[_0x56e7('0x9d')]||!_0x4625ed[_0x56e7('0x9f')])return _0x4625ed;authService[_0x56e7('0xa0')](_0x4add3d['body'][_0x56e7('0x95')],_0x4625ed[_0x56e7('0x9f')],_0x403596[_0x56e7('0xa1')]);return _0x4625ed;})[_0x56e7('0x17')](saveUpdates({'password':_0x4add3d[_0x56e7('0x64')][_0x56e7('0x95')],'passwordResetAt':_0x4add3d[_0x56e7('0x33')]['id']==_0x4add3d[_0x56e7('0x5b')]['id']?moment():null,'previousPasswords':authService[_0x56e7('0xa2')](_0x4add3d['body']['newPassword'],_0x4625ed['previousPasswords'])},null));})[_0x56e7('0x17')](respondWithResult(_0x386b39,null))[_0x56e7('0x22')](handleError(_0x386b39,null));};exports['addQueues']=function(_0x432fcb,_0x4369ac){var _0x59292a=_0x432fcb[_0x56e7('0x64')][_0x56e7('0xa3')];return db[_0x56e7('0x3f')][_0x56e7('0x3b')]({'where':{'id':_0x432fcb[_0x56e7('0x5b')]['id']},'attributes':['id',_0x56e7('0x3c'),'role',_0x56e7('0xa4'),_0x56e7('0xa5'),'voicePause',_0x56e7('0xa6')]})['then'](handleEntityNotFound(_0x4369ac,null))[_0x56e7('0x17')](function(_0x5d054f){if(_0x5d054f){if(!utils[_0x56e7('0xa7')](_0x59292a)){throw new db[(_0x56e7('0x96'))]['ValidationError']('Unknown\x20channel');}return _0x5d054f[_0x56e7('0xa8')+_[_0x56e7('0xa9')](_0x59292a[_0x56e7('0xaa')]())+_0x56e7('0xab')](_0x432fcb['body'][_0x56e7('0x67')],{'penalty':_0x432fcb[_0x56e7('0x64')][_0x56e7('0xac')]||0x0})[_0x56e7('0xad')](function(_0x47af1a){for(var _0x8cb26e=0x0;_0x8cb26e<_0x432fcb[_0x56e7('0x64')][_0x56e7('0x67')][_0x56e7('0x51')];_0x8cb26e+=0x1){var _0x25a286={'UserId':Number(_0x432fcb[_0x56e7('0x5b')]['id'])};_0x25a286[_['capitalize'](_0x59292a[_0x56e7('0xaa')]())+_0x56e7('0xae')]=Number(_0x432fcb[_0x56e7('0x64')]['ids'][_0x8cb26e]);socket['emit'](_0x56e7('0x33')+_[_0x56e7('0xa9')](_0x59292a[_0x56e7('0xaa')]())+_0x56e7('0xaf'),_0x25a286);}return _0x47af1a;})[_0x56e7('0x17')](function(){if(_0x59292a===_0x56e7('0xb0')){return db[_0x56e7('0xb1')][_0x56e7('0x4e')]({'where':{'id':_0x432fcb['body'][_0x56e7('0x67')]||[]},'raw':!![],'attributes':['id',_0x56e7('0x3c')]});}})[_0x56e7('0x17')](function(_0x5d3011){var _0x1bbc8b=_0x5d054f[_0x56e7('0x30')]({'plain':!![]});var _0x966339=[];if(_0x59292a===_0x56e7('0xb0')&&_0x1bbc8b[_0x56e7('0x31')]==='agent'&&_0x1bbc8b[_0x56e7('0xa4')]){for(let _0x2bf161=0x0;_0x2bf161<_0x5d3011[_0x56e7('0x51')];_0x2bf161+=0x1){_0x966339['push']({'membername':_0x1bbc8b['name'],'UserId':_0x1bbc8b['id'],'queue_name':_0x5d3011[_0x2bf161][_0x56e7('0x3c')],'VoiceQueueId':_0x5d3011[_0x2bf161]['id'],'interface':_['isNil'](_0x1bbc8b[_0x56e7('0xa6')])?util['format'](_0x56e7('0xb2'),_0x1bbc8b[_0x56e7('0x3c')]):_0x1bbc8b[_0x56e7('0xa6')],'paused':_0x1bbc8b['voicePause']||![],'penalty':_0x432fcb['body'][_0x56e7('0xac')]||0x0});}return Promise[_0x56e7('0x59')](_0x966339[_0x56e7('0x38')](function(_0x2e1a9d){return db['UserVoiceQueueRt'][_0x56e7('0xb3')](_0x2e1a9d);}));}return _0x5d054f;});}})['then'](respondWithStatusCode(_0x4369ac,null))[_0x56e7('0x22')](handleError(_0x4369ac,null));};exports[_0x56e7('0xb4')]=function(_0x3e8de0,_0x1811ee){var _0x2dbbfd,_0x506010;return db[_0x56e7('0x3f')][_0x56e7('0x3b')]({'where':{'id':_0x3e8de0[_0x56e7('0x5b')]['id']},'attributes':['id',_0x56e7('0x3c'),_0x56e7('0x31')]})[_0x56e7('0x17')](handleEntityNotFound(_0x1811ee,null))[_0x56e7('0x17')](function(_0x170d82){if(_0x170d82){_0x2dbbfd=_0x170d82;if(!_0x3e8de0[_0x56e7('0x49')][_0x56e7('0xa3')]||!utils[_0x56e7('0xa7')](_0x3e8de0[_0x56e7('0x49')][_0x56e7('0xa3')])){throw new db['Sequelize'][(_0x56e7('0x97'))](_0x56e7('0xb5'));}return _0x170d82['remove'+_['capitalize'](_0x3e8de0[_0x56e7('0x49')]['channel'][_0x56e7('0xaa')]())+_0x56e7('0xab')](_0x3e8de0[_0x56e7('0x49')][_0x56e7('0x67')]);}})[_0x56e7('0x17')](function(_0x19ebe0){if(_[_0x56e7('0xb6')](_0x3e8de0[_0x56e7('0x49')][_0x56e7('0x67')])){for(var _0x10d00b=0x0;_0x10d00b<_0x3e8de0[_0x56e7('0x49')]['ids'][_0x56e7('0x51')];_0x10d00b+=0x1){_0x506010={'UserId':Number(_0x3e8de0[_0x56e7('0x5b')]['id'])};_0x506010[_[_0x56e7('0xa9')](_0x3e8de0[_0x56e7('0x49')][_0x56e7('0xa3')][_0x56e7('0xaa')]())+_0x56e7('0xae')]=Number(_0x3e8de0[_0x56e7('0x49')][_0x56e7('0x67')][_0x10d00b]);socket[_0x56e7('0x2d')](_0x56e7('0x33')+_[_0x56e7('0xa9')](_0x3e8de0['query'][_0x56e7('0xa3')][_0x56e7('0xaa')]())+'Queue:remove',_0x506010);}}else{_0x506010={'UserId':Number(_0x3e8de0[_0x56e7('0x5b')]['id'])};_0x506010[_[_0x56e7('0xa9')](_0x3e8de0[_0x56e7('0x49')][_0x56e7('0xa3')][_0x56e7('0xaa')]())+_0x56e7('0xae')]=Number(_0x3e8de0[_0x56e7('0x49')][_0x56e7('0x67')]);socket[_0x56e7('0x2d')]('user'+_[_0x56e7('0xa9')](_0x3e8de0[_0x56e7('0x49')][_0x56e7('0xa3')][_0x56e7('0xaa')]())+_0x56e7('0xb7'),_0x506010);}return _0x19ebe0;})[_0x56e7('0x17')](function(){if(_0x3e8de0[_0x56e7('0x49')][_0x56e7('0xa3')]===_0x56e7('0xb0')){return db[_0x56e7('0xb8')][_0x56e7('0x2f')]({'where':{'UserId':_0x3e8de0[_0x56e7('0x5b')]['id'],'VoiceQueueId':_0x3e8de0[_0x56e7('0x49')][_0x56e7('0x67')]},'individualHooks':!![]})[_0x56e7('0x17')](function(){return _0x2dbbfd;});}return _0x2dbbfd;})[_0x56e7('0x17')](respondWithStatusCode(_0x1811ee,null))['catch'](handleError(_0x1811ee,null));};exports[_0x56e7('0xb9')]=function(_0x50a100,_0x5ccc89){_0x50a100[_0x56e7('0x64')][_0x56e7('0xba')]=_0x50a100[_0x56e7('0xbb')][_0x56e7('0xbc')];return db['User']['find']({'where':{'id':_0x50a100[_0x56e7('0x5b')]['id']}})[_0x56e7('0x17')](handleEntityNotFound(_0x5ccc89,null))[_0x56e7('0x17')](saveUpdates(_0x50a100['body'],null))[_0x56e7('0x17')](respondWithResult(_0x5ccc89,null))['catch'](handleError(_0x5ccc89,null));};exports['getAvatar']=function(_0x271952,_0x1f4b4d){var _0x5978a8=path[_0x56e7('0xbd')](config[_0x56e7('0xbe')],_0x56e7('0xbf'));return db[_0x56e7('0x3f')][_0x56e7('0x3b')]({'where':{'id':_0x271952[_0x56e7('0x5b')]['id']},'attributes':['id',_0x56e7('0xba')],'raw':!![]})[_0x56e7('0x17')](handleEntityNotFound(_0x1f4b4d,null))[_0x56e7('0x17')](function(_0x4891c7){if(_0x4891c7){if(_[_0x56e7('0x6c')](_0x4891c7[_0x56e7('0xba')])){return _0x1f4b4d[_0x56e7('0xc0')](_0x5978a8);}else{if(!fs[_0x56e7('0xc1')](path['join'](config['root'],'server/files/images/',_0x4891c7[_0x56e7('0xba')]))){return _0x1f4b4d[_0x56e7('0xc0')](_0x5978a8);}return _0x1f4b4d[_0x56e7('0xc0')](path[_0x56e7('0xbd')](config['root'],_0x56e7('0xc2'),_0x4891c7['userpic']));}}})[_0x56e7('0x22')](handleError(_0x1f4b4d,null));};exports[_0x56e7('0xc3')]=function(_0xfa8aff,_0x66a9e7){return db[_0x56e7('0x3f')]['find']({'where':{'id':_0xfa8aff[_0x56e7('0x5b')]['id']},'attributes':['id']})[_0x56e7('0x17')](handleEntityNotFound(_0x66a9e7,null))['then'](function(_0x263281){var _0x4b46d1=[];values=_0x263281[_0x56e7('0x53')];_0x4b46d1['push'](get_open_tabs(_0x56e7('0x52'),_0x263281['dataValues']));_0x4b46d1[_0x56e7('0x55')](get_open_tabs(_0x56e7('0x54'),_0x263281[_0x56e7('0x53')]));_0x4b46d1[_0x56e7('0x55')](get_open_tabs(_0x56e7('0x57'),_0x263281[_0x56e7('0x53')]));_0x4b46d1['push'](get_open_tabs('whatsapp',_0x263281['dataValues']));_0x4b46d1[_0x56e7('0x55')](get_open_tabs(_0x56e7('0x63'),_0x263281[_0x56e7('0x53')]));_0x4b46d1[_0x56e7('0x55')](get_open_tabs(_0x56e7('0x56'),_0x263281[_0x56e7('0x53')]));return Promise['all'](_0x4b46d1);})[_0x56e7('0x17')](function(_0x3cf61a){if(_0x3cf61a){var _0x21e168=_[_0x56e7('0x38')](values[_0x56e7('0xc4')],function(_0x5a9e75){return{'channel':_0x56e7('0xc5'),'id':_0x5a9e75['id'],'createdAt':_0x5a9e75[_0x56e7('0xc6')]};});var _0x4cdeae=_['map'](values[_0x56e7('0xc7')],function(_0x27c1d){return{'channel':_0x56e7('0xc8'),'id':_0x27c1d['id'],'createdAt':_0x27c1d[_0x56e7('0xc6')]};});var _0x52e5a1=_[_0x56e7('0x38')](values[_0x56e7('0xc9')],function(_0x2ed5af){return{'channel':_0x56e7('0xca'),'id':_0x2ed5af['id'],'createdAt':_0x2ed5af[_0x56e7('0xc6')]};});var _0x40aca3=_[_0x56e7('0x38')](values[_0x56e7('0xcb')],function(_0x2cb98e){return{'channel':_0x56e7('0xcc'),'id':_0x2cb98e['id'],'createdAt':_0x2cb98e[_0x56e7('0xc6')]};});var _0x103b8a=_[_0x56e7('0x38')](values['SmsOpenTabs'],function(_0x278114){return{'channel':_0x56e7('0xcd'),'id':_0x278114['id'],'createdAt':_0x278114[_0x56e7('0xc6')]};});var _0x58a494=_[_0x56e7('0x38')](values[_0x56e7('0xce')],function(_0x166ca8){return{'channel':_0x56e7('0xcf'),'id':_0x166ca8['id'],'createdAt':_0x166ca8[_0x56e7('0xc6')]};});var _0x391f75=_[_0x56e7('0xd0')](_0x21e168,_0x4cdeae,_0x52e5a1,_0x40aca3,_0x103b8a,_0x58a494);var _0x2471d0={'count':_0x391f75[_0x56e7('0x51')],'rows':_0x391f75};return _0x2471d0;}else return null;})['then'](respondWithResult(_0x66a9e7,null))[_0x56e7('0x22')](handleError(_0x66a9e7,null));};exports[_0x56e7('0xd1')]=function(_0xccb679,_0x37752a){var _0x31268f={};var _0xe8a58f={};var _0x26ebfd;var _0x37950c;return db[_0x56e7('0x3f')][_0x56e7('0x9c')]({'where':{'id':_0xccb679[_0x56e7('0x5b')]['id']}})[_0x56e7('0x17')](handleEntityNotFound(_0x37752a,null))[_0x56e7('0x17')](function(_0x3aaa93){if(_0x3aaa93){_0x26ebfd=_0x3aaa93;_0xe8a58f[_0x56e7('0x5c')]=_[_0x56e7('0x5d')](db[_0x56e7('0xd2')][_0x56e7('0x5e')]);_0xe8a58f[_0x56e7('0x49')]=_[_0x56e7('0x5d')](_0xccb679[_0x56e7('0x49')]);_0xe8a58f[_0x56e7('0xd3')]=_['intersection'](_0xe8a58f[_0x56e7('0x5c')],_0xe8a58f[_0x56e7('0x49')]);_0x31268f['attributes']=_[_0x56e7('0x5f')](_0xe8a58f[_0x56e7('0x5c')],qs[_0x56e7('0x60')](_0xccb679[_0x56e7('0x49')][_0x56e7('0x60')]));_0x31268f[_0x56e7('0x4d')]=_0x31268f[_0x56e7('0x4d')][_0x56e7('0x51')]?_0x31268f['attributes']:_0xe8a58f[_0x56e7('0x5c')];_0x31268f[_0x56e7('0xd4')]=qs[_0x56e7('0xd5')](_0xccb679[_0x56e7('0x49')][_0x56e7('0xd5')]);_0x31268f[_0x56e7('0x46')]=qs['filters'](_['pick'](_0xccb679[_0x56e7('0x49')],_0xe8a58f[_0x56e7('0xd3')]));if(_0xccb679[_0x56e7('0x49')][_0x56e7('0x36')]){_0x31268f[_0x56e7('0x46')]=_[_0x56e7('0x61')](_0x31268f['where'],{'$or':_['map'](_0x31268f[_0x56e7('0x4d')],function(_0x23f08b){var _0x25daa9={};_0x25daa9[_0x23f08b]={'$like':'%'+_0xccb679[_0x56e7('0x49')][_0x56e7('0x36')]+'%'};return _0x25daa9;})});}_0x31268f=_['merge']({},_0x31268f,_0xccb679['options']);return _0x26ebfd[_0x56e7('0xd1')](_0x31268f);}})[_0x56e7('0x17')](function(_0x5d6055){if(_0x5d6055){_0x37950c=_0x5d6055[_0x56e7('0x51')];if(_0xccb679[_0x56e7('0x49')][_0x56e7('0xd6')](_0x56e7('0x47'))){_0x31268f['include']=[{'model':db['CmList'],'as':_0x56e7('0xd7'),'required':![]},{'model':db[_0x56e7('0xd8')],'as':_0x56e7('0xd9'),'attributes':['id',_0x56e7('0x3c'),'color'],'where':_0xccb679['query'][_0x56e7('0xda')]?{'id':_0xccb679[_0x56e7('0x49')]['tag']}:undefined,'required':_0xccb679[_0x56e7('0x49')][_0x56e7('0xda')]?!![]:![]}];}if(!_0xccb679[_0x56e7('0x49')][_0x56e7('0xd6')](_0x56e7('0xdb'))){_0x31268f[_0x56e7('0x27')]=qs[_0x56e7('0x27')](_0xccb679[_0x56e7('0x49')]['limit']);_0x31268f[_0x56e7('0x26')]=qs[_0x56e7('0x26')](_0xccb679[_0x56e7('0x49')][_0x56e7('0x26')]);}return _0x26ebfd[_0x56e7('0xd1')](_0x31268f);}})[_0x56e7('0x17')](function(_0x16d30b){if(_0x16d30b){return _0x16d30b?{'count':_0x37950c,'rows':_0x16d30b}:null;}})['then'](respondWithResult(_0x37752a,null))[_0x56e7('0x22')](handleError(_0x37752a,null));};exports['getQueues']=function(_0x28a947,_0x452f8d){var _0x465cb4;var _0x2e44c0={};var _0x3406fe;return db[_0x56e7('0x3f')]['findOne']({'where':{'id':_0x28a947['params']['id']},'attributes':['id',_0x56e7('0x3c'),'role']})[_0x56e7('0x17')](handleEntityNotFound(_0x452f8d,null))[_0x56e7('0x17')](function(_0x1c6c59){if(!utils[_0x56e7('0xa7')](_0x28a947[_0x56e7('0x49')][_0x56e7('0xa3')])){throw new db[(_0x56e7('0x96'))][(_0x56e7('0x97'))]('Unknown\x20channel');}_0x465cb4=_0x1c6c59;var _0xcafd0c={};_0xcafd0c[_0x56e7('0x5c')]=_[_0x56e7('0x5d')](db[_[_0x56e7('0xa9')](_0x28a947[_0x56e7('0x49')]['channel'])+_0x56e7('0xdc')][_0x56e7('0x5e')]);_0xcafd0c[_0x56e7('0x49')]=_[_0x56e7('0x5d')](_0x28a947[_0x56e7('0x49')]);_0xcafd0c[_0x56e7('0xd3')]=_[_0x56e7('0x5f')](_0xcafd0c[_0x56e7('0x5c')],_0xcafd0c[_0x56e7('0x49')]);_0x2e44c0[_0x56e7('0x4d')]=_[_0x56e7('0x5f')](_0xcafd0c[_0x56e7('0x5c')],qs[_0x56e7('0x60')](_0x28a947['query'][_0x56e7('0x60')]));_0x2e44c0[_0x56e7('0x4d')]=_0x2e44c0[_0x56e7('0x4d')]['length']?_0x2e44c0['attributes']:_0xcafd0c[_0x56e7('0x5c')];_0x2e44c0['order']=qs['sort'](_0x28a947[_0x56e7('0x49')][_0x56e7('0xd5')]);_0x2e44c0['where']=qs[_0x56e7('0xd3')](_['pick'](_0x28a947[_0x56e7('0x49')],_0xcafd0c[_0x56e7('0xd3')]));if(_0x28a947['query'][_0x56e7('0x36')]){_0x2e44c0['where']=_[_0x56e7('0x61')](_0x2e44c0['where'],{'$or':_[_0x56e7('0x38')](_0x2e44c0['attributes'],function(_0x5f4a38){var _0x5b4c6b={};_0x5b4c6b[_0x5f4a38]={'$like':'%'+_0x28a947[_0x56e7('0x49')]['filter']+'%'};return _0x5b4c6b;})});}_0x2e44c0=_[_0x56e7('0x61')]({},_0x2e44c0,_0x28a947['options']);switch(_0x465cb4[_0x56e7('0x31')]){case _0x56e7('0x84'):return db[_[_0x56e7('0xa9')](_0x28a947['query'][_0x56e7('0xa3')])+_0x56e7('0xdc')][_0x56e7('0x4e')](_0x2e44c0);case _0x56e7('0x33'):case _0x56e7('0x34'):return _0x465cb4['get'+_[_0x56e7('0xa9')](_0x28a947[_0x56e7('0x49')][_0x56e7('0xa3')])+'Queues'](_0x2e44c0);default:throw new db[(_0x56e7('0x96'))][(_0x56e7('0x97'))](_0x56e7('0xdd'));}})[_0x56e7('0x17')](function(_0x8714a3){_0x3406fe=_0x8714a3[_0x56e7('0x51')];if(!_0x28a947[_0x56e7('0x49')][_0x56e7('0xd6')]('nolimit')){_0x2e44c0[_0x56e7('0x27')]=qs['limit'](_0x28a947['query']['limit']);_0x2e44c0[_0x56e7('0x26')]=qs[_0x56e7('0x26')](_0x28a947[_0x56e7('0x49')][_0x56e7('0x26')]);}switch(_0x465cb4[_0x56e7('0x31')]){case _0x56e7('0x84'):return db[_[_0x56e7('0xa9')](_0x28a947['query'][_0x56e7('0xa3')])+'Queue']['findAll'](_0x2e44c0);case _0x56e7('0x33'):case _0x56e7('0x34'):return _0x465cb4[_0x56e7('0x30')+_['capitalize'](_0x28a947[_0x56e7('0x49')]['channel'])+_0x56e7('0xab')](_0x2e44c0);}})[_0x56e7('0x17')](function(_0x1a6e4d){return{'count':_0x3406fe,'rows':_0x1a6e4d};})['then'](respondWithResult(_0x452f8d,null))[_0x56e7('0x22')](handleError(_0x452f8d,null));};exports[_0x56e7('0xde')]=function(_0x4ea756,_0x506034){var _0x3e31ef={};var _0x49c7dc={};var _0x5bebab;var _0x6bad8d;return db[_0x56e7('0x3f')][_0x56e7('0x9c')]({'where':{'id':_0x4ea756[_0x56e7('0x5b')]['id']}})[_0x56e7('0x17')](handleEntityNotFound(_0x506034,null))['then'](function(_0x435d97){if(_0x435d97){_0x5bebab=_0x435d97;_0x49c7dc[_0x56e7('0x5c')]=_['keys'](db[_0x56e7('0xb8')][_0x56e7('0x5e')]);_0x49c7dc['query']=_[_0x56e7('0x5d')](_0x4ea756[_0x56e7('0x49')]);_0x49c7dc[_0x56e7('0xd3')]=_['intersection'](_0x49c7dc[_0x56e7('0x5c')],_0x49c7dc['query']);_0x3e31ef[_0x56e7('0x4d')]=_[_0x56e7('0x5f')](_0x49c7dc[_0x56e7('0x5c')],qs[_0x56e7('0x60')](_0x4ea756[_0x56e7('0x49')][_0x56e7('0x60')]));_0x3e31ef[_0x56e7('0x4d')]=_0x3e31ef[_0x56e7('0x4d')][_0x56e7('0x51')]?_0x3e31ef[_0x56e7('0x4d')]:_0x49c7dc[_0x56e7('0x5c')];_0x3e31ef[_0x56e7('0xd4')]=qs['sort'](_0x4ea756[_0x56e7('0x49')][_0x56e7('0xd5')]);_0x3e31ef[_0x56e7('0x46')]=qs['filters'](_[_0x56e7('0xdf')](_0x4ea756['query'],_0x49c7dc['filters']));if(_0x4ea756['query']['filter']){_0x3e31ef[_0x56e7('0x46')]=_['merge'](_0x3e31ef[_0x56e7('0x46')],{'$or':_[_0x56e7('0x38')](_0x3e31ef[_0x56e7('0x4d')],function(_0x346dd1){var _0x5f398c={};_0x5f398c[_0x346dd1]={'$like':'%'+_0x4ea756[_0x56e7('0x49')][_0x56e7('0x36')]+'%'};return _0x5f398c;})});}_0x3e31ef=_[_0x56e7('0x61')]({},_0x3e31ef,_0x4ea756[_0x56e7('0x62')]);return _0x5bebab[_0x56e7('0xde')](_0x3e31ef);}})[_0x56e7('0x17')](function(_0x255766){if(_0x255766){_0x6bad8d=_0x255766['length'];if(!_0x4ea756[_0x56e7('0x49')][_0x56e7('0xd6')](_0x56e7('0xdb'))){_0x3e31ef[_0x56e7('0x27')]=qs['limit'](_0x4ea756[_0x56e7('0x49')][_0x56e7('0x27')]);_0x3e31ef[_0x56e7('0x26')]=qs[_0x56e7('0x26')](_0x4ea756[_0x56e7('0x49')][_0x56e7('0x26')]);}return _0x5bebab[_0x56e7('0xde')](_0x3e31ef);}})['then'](function(_0x3b13cd){if(_0x3b13cd){return _0x3b13cd?{'count':_0x6bad8d,'rows':_0x3b13cd}:null;}})[_0x56e7('0x17')](respondWithResult(_0x506034,null))[_0x56e7('0x22')](handleError(_0x506034,null));};exports[_0x56e7('0xe0')]=function(_0x35bdc9,_0x37fb54){var _0x4fa441={};var _0x26ac55={};var _0x53b603;var _0x1d97da;return db[_0x56e7('0x3f')][_0x56e7('0x9c')]({'where':{'id':_0x35bdc9[_0x56e7('0x5b')]['id']}})[_0x56e7('0x17')](handleEntityNotFound(_0x37fb54,null))[_0x56e7('0x17')](function(_0x5b07a5){if(_0x5b07a5){_0x53b603=_0x5b07a5;_0x26ac55[_0x56e7('0x5c')]=_[_0x56e7('0x5d')](db[_0x56e7('0xe1')][_0x56e7('0x5e')]);_0x26ac55[_0x56e7('0x49')]=_[_0x56e7('0x5d')](_0x35bdc9[_0x56e7('0x49')]);_0x26ac55[_0x56e7('0xd3')]=_[_0x56e7('0x5f')](_0x26ac55[_0x56e7('0x5c')],_0x26ac55[_0x56e7('0x49')]);_0x4fa441[_0x56e7('0x4d')]=_['intersection'](_0x26ac55[_0x56e7('0x5c')],qs[_0x56e7('0x60')](_0x35bdc9[_0x56e7('0x49')][_0x56e7('0x60')]));_0x4fa441[_0x56e7('0x4d')]=_0x4fa441['attributes'][_0x56e7('0x51')]?_0x4fa441[_0x56e7('0x4d')]:_0x26ac55['model'];_0x4fa441['order']=qs[_0x56e7('0xd5')](_0x35bdc9[_0x56e7('0x49')][_0x56e7('0xd5')]);_0x4fa441[_0x56e7('0x46')]=qs[_0x56e7('0xd3')](_[_0x56e7('0xdf')](_0x35bdc9['query'],_0x26ac55[_0x56e7('0xd3')]));if(_0x35bdc9[_0x56e7('0x49')][_0x56e7('0x36')]){_0x4fa441[_0x56e7('0x46')]=_['merge'](_0x4fa441[_0x56e7('0x46')],{'$or':_[_0x56e7('0x38')](_0x4fa441[_0x56e7('0x4d')],function(_0x1248f5){var _0x3ebc82={};_0x3ebc82[_0x1248f5]={'$like':'%'+_0x35bdc9['query'][_0x56e7('0x36')]+'%'};return _0x3ebc82;})});}_0x4fa441=_[_0x56e7('0x61')]({},_0x4fa441,_0x35bdc9[_0x56e7('0x62')]);return _0x53b603[_0x56e7('0xe0')](_0x4fa441);}})[_0x56e7('0x17')](function(_0x2e418b){if(_0x2e418b){_0x1d97da=_0x2e418b['length'];if(!_0x35bdc9[_0x56e7('0x49')][_0x56e7('0xd6')](_0x56e7('0xdb'))){_0x4fa441[_0x56e7('0x27')]=qs[_0x56e7('0x27')](_0x35bdc9[_0x56e7('0x49')][_0x56e7('0x27')]);_0x4fa441[_0x56e7('0x26')]=qs[_0x56e7('0x26')](_0x35bdc9[_0x56e7('0x49')]['offset']);}return _0x53b603[_0x56e7('0xe0')](_0x4fa441);}})[_0x56e7('0x17')](function(_0x48210a){if(_0x48210a){return _0x48210a?{'count':_0x1d97da,'rows':_0x48210a}:null;}})[_0x56e7('0x17')](respondWithResult(_0x37fb54,null))[_0x56e7('0x22')](handleError(_0x37fb54,null));};exports['getRecordings']=function(_0x134d73,_0x484a73){var _0x3b3dd4={'raw':!![],'where':{}};var _0x5af106={};var _0x2c0535={'count':0x0,'rows':[]};return db['User'][_0x56e7('0x9c')]({'where':{'id':_0x134d73[_0x56e7('0x5b')]['id']}})[_0x56e7('0x17')](handleEntityNotFound(_0x484a73,null))[_0x56e7('0x17')](function(_0x4767c2){if(_0x4767c2){_0x5af106['model']=_[_0x56e7('0x5d')](db['VoiceRecording']['rawAttributes']);_0x5af106[_0x56e7('0x49')]=_['keys'](_0x134d73['query']);_0x5af106[_0x56e7('0xd3')]=_[_0x56e7('0x5f')](_0x5af106[_0x56e7('0x5c')],_0x5af106['query']);_0x3b3dd4['attributes']=_[_0x56e7('0x5f')](_0x5af106[_0x56e7('0x5c')],qs[_0x56e7('0x60')](_0x134d73[_0x56e7('0x49')][_0x56e7('0x60')]));_0x3b3dd4[_0x56e7('0x4d')]=_0x3b3dd4[_0x56e7('0x4d')][_0x56e7('0x51')]?_0x3b3dd4[_0x56e7('0x4d')]:_0x5af106['model'];if(!_0x134d73[_0x56e7('0x49')][_0x56e7('0xd6')](_0x56e7('0xdb'))){_0x3b3dd4[_0x56e7('0x27')]=qs[_0x56e7('0x27')](_0x134d73[_0x56e7('0x49')][_0x56e7('0x27')]);_0x3b3dd4[_0x56e7('0x26')]=qs[_0x56e7('0x26')](_0x134d73['query'][_0x56e7('0x26')]);}_0x3b3dd4[_0x56e7('0xd4')]=qs[_0x56e7('0xd5')](_0x134d73[_0x56e7('0x49')][_0x56e7('0xd5')]);_0x3b3dd4['where']=qs[_0x56e7('0xd3')](_[_0x56e7('0xdf')](_0x134d73[_0x56e7('0x49')],_0x5af106['filters']));_0x3b3dd4[_0x56e7('0x46')][_0x56e7('0xe2')]=_0x4767c2['id'];if(_0x134d73['query'][_0x56e7('0x36')]){_0x3b3dd4[_0x56e7('0x46')]=_[_0x56e7('0x61')](_0x3b3dd4[_0x56e7('0x46')],{'$or':_[_0x56e7('0x38')](_0x3b3dd4[_0x56e7('0x4d')],function(_0x4ce01f){var _0x341bd4={};_0x341bd4[_0x4ce01f]={'$like':'%'+_0x134d73[_0x56e7('0x49')]['filter']+'%'};return _0x341bd4;})});}_0x3b3dd4=_['merge']({},_0x3b3dd4,_0x134d73[_0x56e7('0x62')]);return db['VoiceRecording'][_0x56e7('0x29')]({'where':_0x3b3dd4['where']})[_0x56e7('0x17')](function(_0x3859b4){_0x2c0535[_0x56e7('0x29')]=_0x3859b4;if(_0x134d73[_0x56e7('0x49')]['includeAll']){_0x3b3dd4[_0x56e7('0x48')]=[{'all':!![]}];}return db[_0x56e7('0xe3')][_0x56e7('0x4e')](_0x3b3dd4);})[_0x56e7('0x17')](function(_0x552cfa){_0x2c0535['rows']=_0x552cfa;return _0x2c0535;});}})[_0x56e7('0x17')](respondWithFilteredResult(_0x484a73,_0x3b3dd4))[_0x56e7('0x22')](handleError(_0x484a73,null));};exports[_0x56e7('0xe4')]=function(_0x1b84b5,_0xd9c4f6){var _0x39b8a={'raw':!![],'where':{}};var _0xb8cfa5={};var _0x2d8a45={'count':0x0,'rows':[]};return db[_0x56e7('0x3f')]['findOne']({'where':{'id':_0x1b84b5[_0x56e7('0x5b')]['id']}})[_0x56e7('0x17')](handleEntityNotFound(_0xd9c4f6,null))[_0x56e7('0x17')](function(_0x2b795b){if(_0x2b795b){_0xb8cfa5[_0x56e7('0x5c')]=_[_0x56e7('0x5d')](db[_0x56e7('0xe5')][_0x56e7('0x5e')]);_0xb8cfa5['query']=_[_0x56e7('0x5d')](_0x1b84b5[_0x56e7('0x49')]);_0xb8cfa5[_0x56e7('0xd3')]=_[_0x56e7('0x5f')](_0xb8cfa5[_0x56e7('0x5c')],_0xb8cfa5[_0x56e7('0x49')]);_0x39b8a[_0x56e7('0x4d')]=_[_0x56e7('0x5f')](_0xb8cfa5[_0x56e7('0x5c')],qs[_0x56e7('0x60')](_0x1b84b5['query'][_0x56e7('0x60')]));_0x39b8a[_0x56e7('0x4d')]=_0x39b8a[_0x56e7('0x4d')]['length']?_0x39b8a['attributes']:_0xb8cfa5[_0x56e7('0x5c')];if(!_0x1b84b5[_0x56e7('0x49')]['hasOwnProperty'](_0x56e7('0xdb'))){_0x39b8a[_0x56e7('0x27')]=qs[_0x56e7('0x27')](_0x1b84b5[_0x56e7('0x49')][_0x56e7('0x27')]);_0x39b8a[_0x56e7('0x26')]=qs[_0x56e7('0x26')](_0x1b84b5[_0x56e7('0x49')][_0x56e7('0x26')]);}_0x39b8a[_0x56e7('0xd4')]=qs['sort'](_0x1b84b5[_0x56e7('0x49')][_0x56e7('0xd5')]);_0x39b8a['where']=qs[_0x56e7('0xd3')](_[_0x56e7('0xdf')](_0x1b84b5[_0x56e7('0x49')],_0xb8cfa5['filters']));_0x39b8a['where']['UserId']=_0x2b795b['id'];if(_0x1b84b5[_0x56e7('0x49')]['filter']){_0x39b8a[_0x56e7('0x46')]=_[_0x56e7('0x61')](_0x39b8a[_0x56e7('0x46')],{'$or':_[_0x56e7('0x38')](_0x39b8a['attributes'],function(_0x75b594){var _0x409c66={};_0x409c66[_0x75b594]={'$like':'%'+_0x1b84b5[_0x56e7('0x49')][_0x56e7('0x36')]+'%'};return _0x409c66;})});}_0x39b8a=_[_0x56e7('0x61')]({},_0x39b8a,_0x1b84b5[_0x56e7('0x62')]);return db[_0x56e7('0xe5')][_0x56e7('0x29')]({'where':_0x39b8a['where']})[_0x56e7('0x17')](function(_0x3edcc5){_0x2d8a45[_0x56e7('0x29')]=_0x3edcc5;if(_0x1b84b5[_0x56e7('0x49')][_0x56e7('0x47')]){_0x39b8a['include']=[{'all':!![]}];}return db[_0x56e7('0xe5')][_0x56e7('0x4e')](_0x39b8a);})[_0x56e7('0x17')](function(_0x428a67){_0x2d8a45['rows']=_0x428a67;return _0x2d8a45;});}})['then'](respondWithFilteredResult(_0xd9c4f6,_0x39b8a))[_0x56e7('0x22')](handleError(_0xd9c4f6,null));};exports[_0x56e7('0xe6')]=function(_0x33811a,_0x3aaa34){var _0x35d359={};var _0x4c4fe1={};var _0x3d6af5;var _0x55e49a;return db['User']['findOne']({'where':{'id':_0x33811a['params']['id']}})[_0x56e7('0x17')](handleEntityNotFound(_0x3aaa34,null))[_0x56e7('0x17')](function(_0xb77a97){if(_0xb77a97){_0x3d6af5=_0xb77a97;_0x4c4fe1['model']=_[_0x56e7('0x5d')](db[_0x56e7('0xe7')][_0x56e7('0x5e')]);_0x4c4fe1[_0x56e7('0x49')]=_[_0x56e7('0x5d')](_0x33811a[_0x56e7('0x49')]);_0x4c4fe1['filters']=_['intersection'](_0x4c4fe1[_0x56e7('0x5c')],_0x4c4fe1[_0x56e7('0x49')]);_0x35d359[_0x56e7('0x4d')]=_['intersection'](_0x4c4fe1[_0x56e7('0x5c')],qs[_0x56e7('0x60')](_0x33811a[_0x56e7('0x49')][_0x56e7('0x60')]));_0x35d359[_0x56e7('0x4d')]=_0x35d359[_0x56e7('0x4d')][_0x56e7('0x51')]?_0x35d359['attributes']:_0x4c4fe1['model'];_0x35d359[_0x56e7('0xd4')]=qs[_0x56e7('0xd5')](_0x33811a['query'][_0x56e7('0xd5')]);_0x35d359[_0x56e7('0x46')]=qs[_0x56e7('0xd3')](_[_0x56e7('0xdf')](_0x33811a[_0x56e7('0x49')],_0x4c4fe1[_0x56e7('0xd3')]));if(_0x33811a['query'][_0x56e7('0x36')]){_0x35d359[_0x56e7('0x46')]=_[_0x56e7('0x61')](_0x35d359[_0x56e7('0x46')],{'$or':_[_0x56e7('0x38')](_0x35d359[_0x56e7('0x4d')],function(_0x23bdac){var _0x318656={};_0x318656[_0x23bdac]={'$like':'%'+_0x33811a['query']['filter']+'%'};return _0x318656;})});}_0x35d359=_[_0x56e7('0x61')]({},_0x35d359,_0x33811a[_0x56e7('0x62')]);return _0x3d6af5['getChatInteractions'](_0x35d359);}})[_0x56e7('0x17')](function(_0xb82bf0){if(_0xb82bf0){_0x55e49a=_0xb82bf0[_0x56e7('0x51')];if(!_0x33811a[_0x56e7('0x49')][_0x56e7('0xd6')](_0x56e7('0xdb'))){_0x35d359[_0x56e7('0x27')]=qs[_0x56e7('0x27')](_0x33811a[_0x56e7('0x49')][_0x56e7('0x27')]);_0x35d359[_0x56e7('0x26')]=qs[_0x56e7('0x26')](_0x33811a[_0x56e7('0x49')][_0x56e7('0x26')]);}return _0x3d6af5['getChatInteractions'](_0x35d359);}})[_0x56e7('0x17')](function(_0x3551fd){if(_0x3551fd){return _0x3551fd?{'count':_0x55e49a,'rows':_0x3551fd}:null;}})[_0x56e7('0x17')](respondWithResult(_0x3aaa34,null))[_0x56e7('0x22')](handleError(_0x3aaa34,null));};exports[_0x56e7('0xe8')]=function(_0x403652,_0x1ce460){var _0x101374={};var _0x2cb159={};var _0x55b8bd;var _0x483414;return db[_0x56e7('0x3f')]['findOne']({'where':{'id':_0x403652['params']['id']}})[_0x56e7('0x17')](handleEntityNotFound(_0x1ce460,null))[_0x56e7('0x17')](function(_0x101e7e){if(_0x101e7e){_0x55b8bd=_0x101e7e;_0x2cb159['model']=_[_0x56e7('0x5d')](db['OpenchannelInteraction'][_0x56e7('0x5e')]);_0x2cb159[_0x56e7('0x49')]=_[_0x56e7('0x5d')](_0x403652[_0x56e7('0x49')]);_0x2cb159[_0x56e7('0xd3')]=_[_0x56e7('0x5f')](_0x2cb159[_0x56e7('0x5c')],_0x2cb159['query']);_0x101374[_0x56e7('0x4d')]=_['intersection'](_0x2cb159['model'],qs['fields'](_0x403652[_0x56e7('0x49')][_0x56e7('0x60')]));_0x101374[_0x56e7('0x4d')]=_0x101374['attributes'][_0x56e7('0x51')]?_0x101374[_0x56e7('0x4d')]:_0x2cb159[_0x56e7('0x5c')];_0x101374['order']=qs[_0x56e7('0xd5')](_0x403652[_0x56e7('0x49')][_0x56e7('0xd5')]);_0x101374['where']=qs[_0x56e7('0xd3')](_['pick'](_0x403652[_0x56e7('0x49')],_0x2cb159[_0x56e7('0xd3')]));if(_0x403652['query']['filter']){_0x101374[_0x56e7('0x46')]=_[_0x56e7('0x61')](_0x101374['where'],{'$or':_[_0x56e7('0x38')](_0x101374[_0x56e7('0x4d')],function(_0xeb30b1){var _0x3cb15d={};_0x3cb15d[_0xeb30b1]={'$like':'%'+_0x403652[_0x56e7('0x49')][_0x56e7('0x36')]+'%'};return _0x3cb15d;})});}_0x101374=_[_0x56e7('0x61')]({},_0x101374,_0x403652[_0x56e7('0x62')]);return _0x55b8bd[_0x56e7('0xe8')](_0x101374);}})['then'](function(_0x23515b){if(_0x23515b){_0x483414=_0x23515b['length'];if(!_0x403652[_0x56e7('0x49')][_0x56e7('0xd6')](_0x56e7('0xdb'))){_0x101374[_0x56e7('0x27')]=qs[_0x56e7('0x27')](_0x403652[_0x56e7('0x49')][_0x56e7('0x27')]);_0x101374[_0x56e7('0x26')]=qs[_0x56e7('0x26')](_0x403652['query'][_0x56e7('0x26')]);}return _0x55b8bd[_0x56e7('0xe8')](_0x101374);}})['then'](function(_0x313fbf){if(_0x313fbf){return _0x313fbf?{'count':_0x483414,'rows':_0x313fbf}:null;}})[_0x56e7('0x17')](respondWithResult(_0x1ce460,null))[_0x56e7('0x22')](handleError(_0x1ce460,null));};exports['getMailInteractions']=function(_0x53477b,_0x3c6e75){var _0x5a2ce3={'raw':!![],'where':{}};var _0x2d9976={};var _0x323d42={'count':0x0,'rows':[]};return db[_0x56e7('0x3f')][_0x56e7('0x9c')]({'where':{'id':_0x53477b[_0x56e7('0x5b')]['id']}})['then'](handleEntityNotFound(_0x3c6e75,null))['then'](function(_0x2cf67b){if(_0x2cf67b){_0x2d9976[_0x56e7('0x5c')]=_[_0x56e7('0x5d')](db[_0x56e7('0xe9')][_0x56e7('0x5e')]);_0x2d9976[_0x56e7('0x49')]=_[_0x56e7('0x5d')](_0x53477b['query']);_0x2d9976[_0x56e7('0xd3')]=_[_0x56e7('0x5f')](_0x2d9976[_0x56e7('0x5c')],_0x2d9976['query']);_0x5a2ce3[_0x56e7('0x4d')]=_[_0x56e7('0x5f')](_0x2d9976[_0x56e7('0x5c')],qs[_0x56e7('0x60')](_0x53477b[_0x56e7('0x49')][_0x56e7('0x60')]));_0x5a2ce3[_0x56e7('0x4d')]=_0x5a2ce3['attributes']['length']?_0x5a2ce3[_0x56e7('0x4d')]:_0x2d9976[_0x56e7('0x5c')];if(!_0x53477b[_0x56e7('0x49')][_0x56e7('0xd6')](_0x56e7('0xdb'))){_0x5a2ce3[_0x56e7('0x27')]=qs[_0x56e7('0x27')](_0x53477b['query']['limit']);_0x5a2ce3[_0x56e7('0x26')]=qs[_0x56e7('0x26')](_0x53477b[_0x56e7('0x49')][_0x56e7('0x26')]);}_0x5a2ce3[_0x56e7('0xd4')]=qs[_0x56e7('0xd5')](_0x53477b['query']['sort']);_0x5a2ce3[_0x56e7('0x46')]=qs[_0x56e7('0xd3')](_[_0x56e7('0xdf')](_0x53477b[_0x56e7('0x49')],_0x2d9976[_0x56e7('0xd3')]));_0x5a2ce3['where']['UserId']=_0x2cf67b['id'];if(_0x53477b[_0x56e7('0x49')][_0x56e7('0x36')]){_0x5a2ce3[_0x56e7('0x46')]=_['merge'](_0x5a2ce3[_0x56e7('0x46')],{'$or':_[_0x56e7('0x38')](_0x5a2ce3[_0x56e7('0x4d')],function(_0x42d501){var _0x2ba272={};_0x2ba272[_0x42d501]={'$like':'%'+_0x53477b[_0x56e7('0x49')][_0x56e7('0x36')]+'%'};return _0x2ba272;})});}_0x5a2ce3=_[_0x56e7('0x61')]({},_0x5a2ce3,_0x53477b[_0x56e7('0x62')]);return db[_0x56e7('0xe9')][_0x56e7('0x29')]({'where':_0x5a2ce3[_0x56e7('0x46')]})[_0x56e7('0x17')](function(_0x13ab1b){_0x323d42[_0x56e7('0x29')]=_0x13ab1b;if(_0x53477b[_0x56e7('0x49')]['includeAll']){_0x5a2ce3[_0x56e7('0x48')]=[{'all':!![]}];}return db[_0x56e7('0xe9')][_0x56e7('0x4e')](_0x5a2ce3);})[_0x56e7('0x17')](function(_0x4b2a67){_0x323d42[_0x56e7('0x50')]=_0x4b2a67;return _0x323d42;});}})[_0x56e7('0x17')](respondWithFilteredResult(_0x3c6e75,_0x5a2ce3))[_0x56e7('0x22')](handleError(_0x3c6e75,null));};exports['getSmsInteractions']=function(_0x6e9ee7,_0x4f2bd6){var _0x3b1832={};var _0x5623f7={};var _0x463270;var _0x27e56e;return db[_0x56e7('0x3f')][_0x56e7('0x9c')]({'where':{'id':_0x6e9ee7[_0x56e7('0x5b')]['id']}})[_0x56e7('0x17')](handleEntityNotFound(_0x4f2bd6,null))[_0x56e7('0x17')](function(_0x1a53bb){if(_0x1a53bb){_0x463270=_0x1a53bb;_0x5623f7['model']=_[_0x56e7('0x5d')](db[_0x56e7('0xea')][_0x56e7('0x5e')]);_0x5623f7['query']=_[_0x56e7('0x5d')](_0x6e9ee7[_0x56e7('0x49')]);_0x5623f7[_0x56e7('0xd3')]=_[_0x56e7('0x5f')](_0x5623f7[_0x56e7('0x5c')],_0x5623f7['query']);_0x3b1832[_0x56e7('0x4d')]=_[_0x56e7('0x5f')](_0x5623f7['model'],qs[_0x56e7('0x60')](_0x6e9ee7[_0x56e7('0x49')]['fields']));_0x3b1832[_0x56e7('0x4d')]=_0x3b1832[_0x56e7('0x4d')][_0x56e7('0x51')]?_0x3b1832[_0x56e7('0x4d')]:_0x5623f7[_0x56e7('0x5c')];_0x3b1832[_0x56e7('0xd4')]=qs[_0x56e7('0xd5')](_0x6e9ee7[_0x56e7('0x49')][_0x56e7('0xd5')]);_0x3b1832[_0x56e7('0x46')]=qs[_0x56e7('0xd3')](_['pick'](_0x6e9ee7[_0x56e7('0x49')],_0x5623f7[_0x56e7('0xd3')]));if(_0x6e9ee7[_0x56e7('0x49')][_0x56e7('0x36')]){_0x3b1832['where']=_[_0x56e7('0x61')](_0x3b1832[_0x56e7('0x46')],{'$or':_['map'](_0x3b1832['attributes'],function(_0xb4d91c){var _0xbc4ade={};_0xbc4ade[_0xb4d91c]={'$like':'%'+_0x6e9ee7[_0x56e7('0x49')]['filter']+'%'};return _0xbc4ade;})});}_0x3b1832=_[_0x56e7('0x61')]({},_0x3b1832,_0x6e9ee7[_0x56e7('0x62')]);return _0x463270[_0x56e7('0xeb')](_0x3b1832);}})['then'](function(_0xbcabf6){if(_0xbcabf6){_0x27e56e=_0xbcabf6[_0x56e7('0x51')];if(!_0x6e9ee7['query'][_0x56e7('0xd6')](_0x56e7('0xdb'))){_0x3b1832[_0x56e7('0x27')]=qs[_0x56e7('0x27')](_0x6e9ee7[_0x56e7('0x49')][_0x56e7('0x27')]);_0x3b1832['offset']=qs[_0x56e7('0x26')](_0x6e9ee7[_0x56e7('0x49')][_0x56e7('0x26')]);}return _0x463270[_0x56e7('0xeb')](_0x3b1832);}})['then'](function(_0x512195){if(_0x512195){return _0x512195?{'count':_0x27e56e,'rows':_0x512195}:null;}})[_0x56e7('0x17')](respondWithResult(_0x4f2bd6,null))[_0x56e7('0x22')](handleError(_0x4f2bd6,null));};exports['getFaxInteractions']=function(_0x34f793,_0x56e302){var _0x552c96={};var _0x1ce242={};var _0x5280f3;var _0x5dd608;return db['User'][_0x56e7('0x9c')]({'where':{'id':_0x34f793[_0x56e7('0x5b')]['id']}})['then'](handleEntityNotFound(_0x56e302,null))['then'](function(_0xb68101){if(_0xb68101){_0x5280f3=_0xb68101;_0x1ce242[_0x56e7('0x5c')]=_['keys'](db[_0x56e7('0xec')]['rawAttributes']);_0x1ce242['query']=_[_0x56e7('0x5d')](_0x34f793[_0x56e7('0x49')]);_0x1ce242['filters']=_[_0x56e7('0x5f')](_0x1ce242['model'],_0x1ce242[_0x56e7('0x49')]);_0x552c96[_0x56e7('0x4d')]=_[_0x56e7('0x5f')](_0x1ce242[_0x56e7('0x5c')],qs[_0x56e7('0x60')](_0x34f793[_0x56e7('0x49')]['fields']));_0x552c96[_0x56e7('0x4d')]=_0x552c96['attributes'][_0x56e7('0x51')]?_0x552c96[_0x56e7('0x4d')]:_0x1ce242[_0x56e7('0x5c')];_0x552c96[_0x56e7('0xd4')]=qs[_0x56e7('0xd5')](_0x34f793[_0x56e7('0x49')][_0x56e7('0xd5')]);_0x552c96[_0x56e7('0x46')]=qs['filters'](_['pick'](_0x34f793['query'],_0x1ce242['filters']));if(_0x34f793[_0x56e7('0x49')][_0x56e7('0x36')]){_0x552c96[_0x56e7('0x46')]=_[_0x56e7('0x61')](_0x552c96[_0x56e7('0x46')],{'$or':_['map'](_0x552c96[_0x56e7('0x4d')],function(_0x51cba3){var _0x324167={};_0x324167[_0x51cba3]={'$like':'%'+_0x34f793[_0x56e7('0x49')][_0x56e7('0x36')]+'%'};return _0x324167;})});}_0x552c96=_['merge']({},_0x552c96,_0x34f793[_0x56e7('0x62')]);return _0x5280f3[_0x56e7('0xed')](_0x552c96);}})[_0x56e7('0x17')](function(_0x45e61a){if(_0x45e61a){_0x5dd608=_0x45e61a[_0x56e7('0x51')];if(!_0x34f793[_0x56e7('0x49')][_0x56e7('0xd6')](_0x56e7('0xdb'))){_0x552c96['limit']=qs[_0x56e7('0x27')](_0x34f793[_0x56e7('0x49')][_0x56e7('0x27')]);_0x552c96[_0x56e7('0x26')]=qs['offset'](_0x34f793[_0x56e7('0x49')][_0x56e7('0x26')]);}return _0x5280f3['getFaxInteractions'](_0x552c96);}})[_0x56e7('0x17')](function(_0x1d8c97){if(_0x1d8c97){return _0x1d8c97?{'count':_0x5dd608,'rows':_0x1d8c97}:null;}})[_0x56e7('0x17')](respondWithResult(_0x56e302,null))[_0x56e7('0x22')](handleError(_0x56e302,null));};exports['getWhatsappInteractions']=function(_0x4361f0,_0x14ecfd){var _0xc36080={};var _0xdefda7={};var _0x428915;var _0x1a71c4;return db['User'][_0x56e7('0x9c')]({'where':{'id':_0x4361f0[_0x56e7('0x5b')]['id']}})[_0x56e7('0x17')](handleEntityNotFound(_0x14ecfd,null))[_0x56e7('0x17')](function(_0x405102){if(_0x405102){_0x428915=_0x405102;_0xdefda7['model']=_[_0x56e7('0x5d')](db[_0x56e7('0xee')]['rawAttributes']);_0xdefda7['query']=_[_0x56e7('0x5d')](_0x4361f0[_0x56e7('0x49')]);_0xdefda7[_0x56e7('0xd3')]=_['intersection'](_0xdefda7[_0x56e7('0x5c')],_0xdefda7[_0x56e7('0x49')]);_0xc36080[_0x56e7('0x4d')]=_[_0x56e7('0x5f')](_0xdefda7['model'],qs[_0x56e7('0x60')](_0x4361f0[_0x56e7('0x49')]['fields']));_0xc36080[_0x56e7('0x4d')]=_0xc36080[_0x56e7('0x4d')][_0x56e7('0x51')]?_0xc36080['attributes']:_0xdefda7[_0x56e7('0x5c')];_0xc36080[_0x56e7('0xd4')]=qs[_0x56e7('0xd5')](_0x4361f0[_0x56e7('0x49')][_0x56e7('0xd5')]);_0xc36080['where']=qs[_0x56e7('0xd3')](_[_0x56e7('0xdf')](_0x4361f0[_0x56e7('0x49')],_0xdefda7[_0x56e7('0xd3')]));if(_0x4361f0[_0x56e7('0x49')][_0x56e7('0x36')]){_0xc36080[_0x56e7('0x46')]=_[_0x56e7('0x61')](_0xc36080[_0x56e7('0x46')],{'$or':_[_0x56e7('0x38')](_0xc36080[_0x56e7('0x4d')],function(_0x3c1bcf){var _0x384285={};_0x384285[_0x3c1bcf]={'$like':'%'+_0x4361f0[_0x56e7('0x49')][_0x56e7('0x36')]+'%'};return _0x384285;})});}_0xc36080=_[_0x56e7('0x61')]({},_0xc36080,_0x4361f0[_0x56e7('0x62')]);return _0x428915[_0x56e7('0xef')](_0xc36080);}})[_0x56e7('0x17')](function(_0x51f7cb){if(_0x51f7cb){_0x1a71c4=_0x51f7cb[_0x56e7('0x51')];if(!_0x4361f0[_0x56e7('0x49')][_0x56e7('0xd6')](_0x56e7('0xdb'))){_0xc36080[_0x56e7('0x27')]=qs[_0x56e7('0x27')](_0x4361f0[_0x56e7('0x49')][_0x56e7('0x27')]);_0xc36080[_0x56e7('0x26')]=qs[_0x56e7('0x26')](_0x4361f0['query'][_0x56e7('0x26')]);}return _0x428915[_0x56e7('0xef')](_0xc36080);}})[_0x56e7('0x17')](function(_0x43c832){if(_0x43c832){return _0x43c832?{'count':_0x1a71c4,'rows':_0x43c832}:null;}})[_0x56e7('0x17')](respondWithResult(_0x14ecfd,null))[_0x56e7('0x22')](handleError(_0x14ecfd,null));};exports[_0x56e7('0xf0')]=function(_0x395538,_0x560875,_0x4843b5){var _0x48bba0;var _0x50bf22;var _0xae678e;var _0x20f816=!_['isNil'](_0x395538['params']['id'])?_0x395538[_0x56e7('0x5b')]['id']:!_['isNil'](_0x395538[_0x56e7('0x33')]['id'])?_0x395538['user']['id']:null;return db['User'][_0x56e7('0x3b')]({'where':{'id':_0x20f816,'role':{'$or':['admin',_0x56e7('0x33'),_0x56e7('0x34')]}},'attributes':['id',_0x56e7('0x3c'),_0x56e7('0xf1'),'mobile',_0x56e7('0x31'),_0x56e7('0x6d'),'loginInPause']})[_0x56e7('0x17')](function(_0x57b850){if(_0x57b850){if(_0x57b850['role']===_0x56e7('0x34')){_0x48bba0=_0x57b850;if(_0x395538['body'][_0x56e7('0xa6')]){_0xae678e=util[_0x56e7('0xf2')](_0x56e7('0xf3'),_0x48bba0[_0x395538[_0x56e7('0x64')][_0x56e7('0xa6')]]);}else if(_0x395538[_0x56e7('0x64')][_0x56e7('0xf4')]){_0xae678e=util[_0x56e7('0xf2')](_0x56e7('0xb2'),_0x395538[_0x56e7('0x64')][_0x56e7('0xf4')]);}else{_0xae678e=util[_0x56e7('0xf2')](_0x56e7('0xb2'),_0x48bba0[_0x56e7('0x3c')]);}socket['to'](util[_0x56e7('0xf2')]('user:%s',_0x48bba0[_0x56e7('0x3c')]))[_0x56e7('0x2d')](_0x56e7('0xf5'),{'user':{'id':_0x48bba0['id'],'name':_0x48bba0[_0x56e7('0x3c')]},'ip':_0x395538[_0x56e7('0xf6')][_0x56e7('0xf7')]||_0x395538[_0x56e7('0xf8')]['remoteAddress']||_0x395538[_0x56e7('0xf9')][_0x56e7('0xfa')]||_0x395538[_0x56e7('0xf8')]['socket'][_0x56e7('0xfa')]});return db['UserVoiceQueueRt'][_0x56e7('0x2f')]({'where':{'membername':_0x48bba0[_0x56e7('0x3c')]},'individualHooks':!![]});}}else{throw new db[(_0x56e7('0x96'))][(_0x56e7('0x97'))]('User\x20not\x20found\x20or\x20not\x20allowed\x20to\x20perform\x20login\x20method');}})[_0x56e7('0x17')](function(){if(_0x48bba0){return _0x48bba0[_0x56e7('0xfb')]({'raw':!![]});}})[_0x56e7('0x17')](function(_0x103ccc){if(_0x48bba0){if(_0x103ccc){_0x50bf22=_0x103ccc;if(_0x50bf22[_0x56e7('0x51')]){var _0x34b4fc=_0x50bf22['map'](function(_0x5ab871){var _0x550cb9={'membername':_0x48bba0['name'],'UserId':_0x48bba0['id'],'queue_name':_0x5ab871[_0x56e7('0x3c')],'VoiceQueueId':_0x5ab871['id'],'interface':_0xae678e,'paused':_0x48bba0['loginInPause']||![],'penalty':_0x5ab871['UserVoiceQueue.penalty']||0x0};return db[_0x56e7('0xb8')][_0x56e7('0xb3')](_0x550cb9);});return Promise[_0x56e7('0x59')](_0x34b4fc);}}}})[_0x56e7('0x17')](function(){if(_0x48bba0){return db['MemberReport'][_0x56e7('0x4e')]({'where':{'membername':_0x48bba0[_0x56e7('0x3c')],'exitAt':null}});}})[_0x56e7('0x17')](function(_0x373cae){if(_0x48bba0){var _0x470737=[];_0x373cae[_0x56e7('0xfc')](function(_0x3ae62c){_0x470737[_0x56e7('0x55')](_0x3ae62c['update']({'exitAt':moment()[_0x56e7('0xf2')]('YYYY-MM-DD\x20HH:mm:ss')}));});return Promise['all'](_0x470737);}})[_0x56e7('0x17')](function(){if(_0x48bba0){var _0x43dce2=[];var _0x271272=[];var _0x2e982e=utils[_0x56e7('0xfd')]();var _0x535872={'membername':_0x48bba0['name'],'interface':_0xae678e,'enterAt':moment()[_0x56e7('0xf2')](_0x56e7('0xfe')),'role':_0x48bba0[_0x56e7('0x31')],'internal':_0x48bba0[_0x56e7('0x6d')]};_0x2e982e[_0x56e7('0xfc')](function(_0x308578){_0x43dce2['push'](_[_0x56e7('0x61')]({'channel':_0x308578,'type':_0x56e7('0xff'),'data1':_0x395538[_0x56e7('0x64')][_0x56e7('0x100')],'data2':_0xae678e},_0x535872));if(_0x48bba0[_0x56e7('0xa5')]){_0x271272['push'](_['merge']({'channel':_0x308578,'type':_0x56e7('0x101'),'data1':_0x56e7('0x102')},_0x535872));}});return db[_0x56e7('0x103')]['bulkCreate'](_0x43dce2[_0x56e7('0xd0')](_0x271272),{'individualHooks':!![]});}})[_0x56e7('0x17')](function(){if(_0x48bba0){return _0x48bba0[_0x56e7('0x2c')]({'online':!![],'lastLoginAt':moment()[_0x56e7('0xf2')](_0x56e7('0xfe')),'voicePause':_0x48bba0[_0x56e7('0xa5')]||![],'mailPause':_0x48bba0[_0x56e7('0xa5')]||![],'chatPause':_0x48bba0[_0x56e7('0xa5')]||![],'faxPause':_0x48bba0[_0x56e7('0xa5')]||![],'smsPause':_0x48bba0['loginInPause']||![],'openchannelPause':_0x48bba0[_0x56e7('0xa5')]||![],'whatsappPause':_0x48bba0['loginInPause']||![],'pauseType':_0x48bba0[_0x56e7('0xa5')]?_0x56e7('0x102'):null,'interface':_0xae678e,'lastPauseAt':moment()[_0x56e7('0xf2')](_0x56e7('0xfe'))});}})['then'](function(_0x3f3c25){if(_0x395538[_0x56e7('0x104')]){return _0x4843b5();}else{return Promise[_0x56e7('0x105')](_0x3f3c25)['then'](respondWithResult(_0x560875,null));}})[_0x56e7('0x22')](handleError(_0x560875,null));};exports[_0x56e7('0x106')]=function(_0x3ca8c1,_0xc373c5){var _0x5886af;return db[_0x56e7('0x3f')][_0x56e7('0x3b')]({'where':{'id':_0x3ca8c1[_0x56e7('0x5b')]['id'],'role':_0x56e7('0x34')},'attributes':['id','name',_0x56e7('0x31')]})[_0x56e7('0x17')](handleEntityNotFound(_0xc373c5,null))[_0x56e7('0x17')](function(_0x5e26a2){if(_0x5e26a2){_0x5886af=_0x5e26a2;return db[_0x56e7('0xb8')][_0x56e7('0x2f')]({'where':{'membername':_0x5886af[_0x56e7('0x3c')]},'individualHooks':!![]});}})[_0x56e7('0x17')](function(){return db[_0x56e7('0x103')]['findAll']({'where':{'membername':_0x5886af[_0x56e7('0x3c')],'exitAt':null}});})[_0x56e7('0x17')](function(_0x15db67){var _0x44af6b=[];_0x15db67[_0x56e7('0xfc')](function(_0x1488c7){_0x44af6b[_0x56e7('0x55')](_0x1488c7[_0x56e7('0x2c')]({'exitAt':moment()['format'](_0x56e7('0xfe'))}));});return Promise['all'](_0x44af6b);})[_0x56e7('0x17')](function(){return _0x5886af[_0x56e7('0x2c')]({'online':![],'voicePause':![],'mailPause':![],'chatPause':![],'faxPause':![],'smsPause':![],'openchannelPause':![],'whatsappPause':![],'interface':null});})['then'](respondWithResult(_0xc373c5,null))[_0x56e7('0x22')](handleError(_0xc373c5,null));};exports[_0x56e7('0x107')]=function(_0x284955,_0x39ebf6){var _0x17f22d;return db[_0x56e7('0xb8')][_0x56e7('0x2c')]({'paused':0x1},{'where':{'UserId':_0x284955['params']['id']},'individualHooks':!![]})[_0x56e7('0x17')](function(){return db[_0x56e7('0x3f')][_0x56e7('0x3b')]({'where':{'id':_0x284955[_0x56e7('0x5b')]['id'],'role':'agent'},'attributes':['id','name','role','internal',_0x56e7('0xa6'),_0x56e7('0xa4')]});})[_0x56e7('0x17')](handleEntityNotFound(_0x39ebf6,null))['then'](function(_0x49b22f){if(_0x49b22f){_0x17f22d=_0x49b22f;return respondWithRpcPromise('QueuePause',_0x56e7('0x107'),{'id':_0x17f22d['id'],'name':_0x17f22d[_0x56e7('0x3c')],'pause':!![]});}})['then'](function(){if(_0x17f22d){return db['MemberReport']['findAll']({'where':{'membername':_0x17f22d[_0x56e7('0x3c')],'type':_0x56e7('0x101'),'exitAt':null}});}})[_0x56e7('0x17')](function(_0x4d633f){if(_0x4d633f[_0x56e7('0x51')]){var _0x34d655=moment()[_0x56e7('0xf2')](_0x56e7('0xfe'));for(var _0x418fd8=0x0,_0x2f7549=_0x4d633f['length'];_0x418fd8<_0x2f7549;_0x418fd8++){_0x4d633f[_0x418fd8][_0x56e7('0x108')]({'exitAt':_0x34d655});}}})[_0x56e7('0x17')](function(){var _0x4d13dc=[];var _0x3d8774=utils[_0x56e7('0xfd')]();_0x3d8774[_0x56e7('0xfc')](function(_0x213313){_0x4d13dc[_0x56e7('0x55')]({'channel':_0x213313,'membername':_0x17f22d[_0x56e7('0x3c')],'interface':_[_0x56e7('0x6c')](_0x17f22d[_0x56e7('0xa6')])?util[_0x56e7('0xf2')]('SIP/%s',_0x17f22d[_0x56e7('0x3c')]):_0x17f22d[_0x56e7('0xa6')],'type':_0x56e7('0x101'),'enterAt':moment()['format']('YYYY-MM-DD\x20HH:mm:ss'),'data1':_0x284955[_0x56e7('0x64')][_0x56e7('0x41')]||_0x56e7('0x109'),'role':_0x17f22d[_0x56e7('0x31')],'internal':_0x17f22d[_0x56e7('0x6d')]});});return db[_0x56e7('0x103')][_0x56e7('0x10a')](_0x4d13dc,{'individualHooks':!![]});})[_0x56e7('0x17')](function(){return _0x17f22d[_0x56e7('0x2c')]({'voicePause':!![],'mailPause':!![],'chatPause':!![],'faxPause':!![],'smsPause':!![],'whatsappPause':!![],'openchannelPause':!![],'pauseType':_0x284955[_0x56e7('0x64')][_0x56e7('0x41')]||_0x56e7('0x109'),'lastPauseAt':moment()[_0x56e7('0xf2')]('YYYY-MM-DD\x20HH:mm:ss')});})[_0x56e7('0x17')](respondWithResult(_0x39ebf6,null))['catch'](handleError(_0x39ebf6,null));};exports[_0x56e7('0x10b')]=function(_0x1310d6,_0x1a7d48){if(_0x1310d6[_0x56e7('0x64')][_0x56e7('0xa3')]&&!utils[_0x56e7('0xa7')](_0x1310d6[_0x56e7('0x64')][_0x56e7('0xa3')])){throw new APIBadRequestError(util[_0x56e7('0xf2')](_0x56e7('0x10c'),_0x1310d6['body'][_0x56e7('0xa3')]));}return db[_0x56e7('0x3f')][_0x56e7('0x3b')]({'where':{'id':_0x1310d6[_0x56e7('0x5b')]['id']},'attributes':['id',_0x56e7('0x3c'),_0x56e7('0x31'),_0x56e7('0x6d'),_0x56e7('0xa6'),_0x56e7('0xa4'),'voicePause',_0x56e7('0x10d'),_0x56e7('0x10e'),_0x56e7('0x10f'),_0x56e7('0x110'),_0x56e7('0x111'),_0x56e7('0x112'),_0x56e7('0x113'),_0x56e7('0x114')]})[_0x56e7('0x17')](function(_0x3fdbf1){if(!_0x3fdbf1){throw new APINotFoundError(util[_0x56e7('0xf2')](_0x56e7('0x115'),_0x1310d6[_0x56e7('0x5b')]['id']));}return _0x3fdbf1['unpause'](_0x1310d6[_0x56e7('0x64')][_0x56e7('0xa3')]);})['then'](respondWithResult(_0x1a7d48,null))[_0x56e7('0x22')](APIHandleError(_0x1a7d48));};exports[_0x56e7('0x116')]=function(_0x546d64,_0x394200){var _0xd6834c={};var _0x29bff6={};var _0x300687;var _0xd3401e;return db[_0x56e7('0x3f')][_0x56e7('0x9c')]({'where':{'id':_0x546d64[_0x56e7('0x5b')]['id']}})['then'](handleEntityNotFound(_0x394200,null))[_0x56e7('0x17')](function(_0xfa4f07){if(_0xfa4f07){_0x300687=_0xfa4f07;_0x29bff6['model']=_[_0x56e7('0x5d')](db[_0x56e7('0x117')]['rawAttributes']);_0x29bff6[_0x56e7('0x49')]=_['keys'](_0x546d64[_0x56e7('0x49')]);_0x29bff6[_0x56e7('0xd3')]=_[_0x56e7('0x5f')](_0x29bff6[_0x56e7('0x5c')],_0x29bff6['query']);_0xd6834c[_0x56e7('0x4d')]=_[_0x56e7('0x5f')](_0x29bff6[_0x56e7('0x5c')],qs['fields'](_0x546d64['query'][_0x56e7('0x60')]));_0xd6834c[_0x56e7('0x4d')]=_0xd6834c[_0x56e7('0x4d')][_0x56e7('0x51')]?_0xd6834c[_0x56e7('0x4d')]:_0x29bff6[_0x56e7('0x5c')];_0xd6834c['order']=qs[_0x56e7('0xd5')](_0x546d64[_0x56e7('0x49')]['sort']);_0xd6834c[_0x56e7('0x46')]=qs['filters'](_[_0x56e7('0xdf')](_0x546d64['query'],_0x29bff6[_0x56e7('0xd3')]));if(_0x546d64[_0x56e7('0x49')][_0x56e7('0x36')]){_0xd6834c['where']=_[_0x56e7('0x61')](_0xd6834c[_0x56e7('0x46')],{'$or':_[_0x56e7('0x38')](_0xd6834c[_0x56e7('0x4d')],function(_0x305757){var _0x28512a={};_0x28512a[_0x305757]={'$like':'%'+_0x546d64[_0x56e7('0x49')][_0x56e7('0x36')]+'%'};return _0x28512a;})});}_0xd6834c=_[_0x56e7('0x61')]({},_0xd6834c,_0x546d64[_0x56e7('0x62')]);return _0x300687[_0x56e7('0x116')](_0xd6834c);}})[_0x56e7('0x17')](function(_0x4b7181){if(_0x4b7181){_0xd3401e=_0x4b7181[_0x56e7('0x51')];if(!_0x546d64['query'][_0x56e7('0xd6')](_0x56e7('0xdb'))){_0xd6834c[_0x56e7('0x27')]=qs[_0x56e7('0x27')](_0x546d64['query'][_0x56e7('0x27')]);_0xd6834c[_0x56e7('0x26')]=qs[_0x56e7('0x26')](_0x546d64[_0x56e7('0x49')][_0x56e7('0x26')]);}return _0x300687[_0x56e7('0x116')](_0xd6834c);}})[_0x56e7('0x17')](function(_0x2116ce){if(_0x2116ce){return _0x2116ce?{'count':_0xd3401e,'rows':_0x2116ce}:null;}})[_0x56e7('0x17')](respondWithResult(_0x394200,null))[_0x56e7('0x22')](handleError(_0x394200,null));};exports[_0x56e7('0x118')]=function(_0x37561b,_0x1657a5){var _0x5e78bf=_0x37561b[_0x56e7('0x5b')]['id'];var _0x2a27cb=_0x37561b[_0x56e7('0x64')]?_0x37561b[_0x56e7('0x64')][_0x56e7('0x67')]:null;var _0x20c444=[];return Promise[_0x56e7('0x105')]()[_0x56e7('0x17')](function(){if(!_0x2a27cb)throw new APIBadRequestError('Body\x20parameter\x20\x27ids\x27\x20is\x20required');})[_0x56e7('0x17')](function(){return db[_0x56e7('0x3f')][_0x56e7('0x9c')]({'where':{'id':_0x5e78bf}});})[_0x56e7('0x17')](function(_0x41801a){if(!_0x41801a)throw new APINotFoundError(util[_0x56e7('0xf2')](_0x56e7('0x115'),_0x37561b[_0x56e7('0x5b')]['id']));return db[_0x56e7('0x6f')][_0x56e7('0x119')](function(_0x839a41){return _0x41801a[_0x56e7('0x118')](_0x2a27cb,{'transaction':_0x839a41})[_0x56e7('0x17')](function(){return db['Team'][_0x56e7('0x4e')]({'where':{'id':{'$in':_0x2a27cb}}});})[_0x56e7('0x17')](function(_0x3cbcba){var _0x313ee3=_[_0x56e7('0x38')](_0x3cbcba,function(_0x3b09a1){return _0x3b09a1[_0x56e7('0x11a')]();});return Promise[_0x56e7('0x59')](_0x313ee3);})[_0x56e7('0x17')](function(_0x5333a8){_0x20c444=_[_0x56e7('0x11b')](_0x5333a8);var _0x5da66c=_[_0x56e7('0x38')](_0x20c444,function(_0x176e0e){return _0x176e0e[_0x56e7('0x11c')](_0x41801a['id'],{'transaction':_0x839a41});});return Promise[_0x56e7('0x59')](_0x5da66c);})[_0x56e7('0x17')](function(){if(!_0x41801a['online'])return;var _0x35a1d7=_[_0x56e7('0x36')](_0x20c444,function(_0xf5e9d9){return _0xf5e9d9[_0x56e7('0x11d')]('channel')===_0x56e7('0x11e');});var _0x1876b9=_['map'](_0x35a1d7,function(_0x214788){return db[_0x56e7('0xb8')][_0x56e7('0xb3')]({'membername':_0x41801a[_0x56e7('0x3c')],'UserId':_0x41801a['id'],'queue_name':_0x214788[_0x56e7('0x3c')],'VoiceQueueId':_0x214788['id'],'interface':_[_0x56e7('0x6c')](_0x41801a[_0x56e7('0xa6')])?util[_0x56e7('0xf2')](_0x56e7('0xb2'),_0x41801a[_0x56e7('0x3c')]):_0x41801a[_0x56e7('0xa6')],'paused':_0x41801a['voicePause']||![],'penalty':_0x41801a[_0x56e7('0xac')]},{'transaction':_0x839a41});});return Promise[_0x56e7('0x59')](_0x1876b9);})[_0x56e7('0x17')](function(){return db['TeamVoicePrefix'][_0x56e7('0x4e')]({'where':{'teamId':{'$in':_0x2a27cb}}});})[_0x56e7('0x17')](function(_0x21c69d){var _0x13a22b=_[_0x56e7('0x38')](_0x21c69d,function(_0x37a908){return db[_0x56e7('0x11f')][_0x56e7('0x82')]({'UserId':_0x41801a['id'],'VoicePrefixId':_0x37a908['VoicePrefixId']},{'transaction':_0x839a41});});return Promise[_0x56e7('0x59')](_0x13a22b);});});})[_0x56e7('0x17')](function(){for(var _0x2eb0b8=0x0;_0x2eb0b8<_0x20c444[_0x56e7('0x51')];_0x2eb0b8++){var _0x5daaab=_0x20c444[_0x2eb0b8][_0x56e7('0x11d')]('channel');var _0x51ac2f=_0x5daaab+_0x56e7('0xae');socket[_0x56e7('0x2d')](_0x56e7('0x33')+_0x5daaab+_0x56e7('0xaf'),{'UserId':_0x5e78bf,['queueField']:_0x20c444[_0x2eb0b8]['id']});}})[_0x56e7('0x17')](respondWithStatusCode(_0x1657a5,null))['catch'](APIHandleError(_0x1657a5));};exports['removeTeams']=function(_0x3a5e40,_0x360af9){var _0x2cc363=_0x3a5e40[_0x56e7('0x5b')]['id'];var _0x235f8b=null;if(_0x3a5e40[_0x56e7('0x49')][_0x56e7('0x67')]){_0x235f8b=_[_0x56e7('0xb6')](_0x3a5e40[_0x56e7('0x49')][_0x56e7('0x67')])?_0x3a5e40[_0x56e7('0x49')][_0x56e7('0x67')]:[_0x3a5e40[_0x56e7('0x49')]['ids']];}var _0x572e0d=[];return Promise[_0x56e7('0x105')]()[_0x56e7('0x17')](function(){if(!_0x235f8b)throw new APIBadRequestError('Query\x20parameter\x20\x27ids\x27\x20is\x20required');})[_0x56e7('0x17')](function(){return db['User'][_0x56e7('0x9c')]({'where':{'id':_0x2cc363}});})[_0x56e7('0x17')](function(_0x15c97b){if(!_0x15c97b)throw new APINotFoundError(util[_0x56e7('0xf2')](_0x56e7('0x115'),_0x3a5e40[_0x56e7('0x5b')]['id']));return db[_0x56e7('0x6f')][_0x56e7('0x119')](function(_0x425e1b){return _0x15c97b['removeTeams'](_0x235f8b,{'transaction':_0x425e1b})[_0x56e7('0x17')](function(){return db[_0x56e7('0x117')]['findAll']({'where':{'id':{'$in':_0x235f8b}}});})[_0x56e7('0x17')](function(_0x2ada35){var _0x57f7cd=_[_0x56e7('0x38')](_0x2ada35,function(_0x5856d9){return _0x5856d9[_0x56e7('0x11a')]();});return Promise['all'](_0x57f7cd);})[_0x56e7('0x17')](function(_0x2889c5){_0x572e0d=_[_0x56e7('0x11b')](_0x2889c5);var _0x14908d=_[_0x56e7('0x38')](_0x572e0d,function(_0x5647b5){return _0x5647b5['removeAgent'](_0x15c97b['id'],{'transaction':_0x425e1b});});return Promise[_0x56e7('0x59')](_0x14908d);})[_0x56e7('0x17')](function(){if(!_0x15c97b[_0x56e7('0xa4')])return;var _0x754846=_[_0x56e7('0x36')](_0x572e0d,function(_0x37e672){return _0x37e672[_0x56e7('0x11d')](_0x56e7('0xa3'))===_0x56e7('0x11e');});var _0x31506a=_[_0x56e7('0x38')](_0x754846,function(_0x430529){return db[_0x56e7('0xb8')][_0x56e7('0x2f')]({'where':{'VoiceQueueId':_0x430529['id'],'UserId':_0x15c97b['id']},'transaction':_0x425e1b});});return Promise[_0x56e7('0x59')](_0x31506a);})[_0x56e7('0x17')](function(){return db['TeamVoicePrefix'][_0x56e7('0x4e')]({'where':{'teamId':{'$in':_0x235f8b}}});})['then'](function(_0xa76675){var _0x583874=_[_0x56e7('0x38')](_0xa76675,function(_0x3f0144){return db['UserVoicePrefix']['destroy']({'where':{'UserId':_0x15c97b['id'],'VoicePrefixId':_0x3f0144[_0x56e7('0x120')]}},{'transaction':_0x425e1b});});return Promise[_0x56e7('0x59')](_0x583874);});});})[_0x56e7('0x17')](function(){for(var _0x39399d=0x0;_0x39399d<_0x572e0d['length'];_0x39399d++){var _0x5ad920=_0x572e0d[_0x39399d][_0x56e7('0x11d')](_0x56e7('0xa3'));var _0x8dd92f=_0x5ad920+_0x56e7('0xae');socket[_0x56e7('0x2d')](_0x56e7('0x33')+_0x5ad920+'Queue:remove',{'UserId':_0x2cc363,['queueField']:_0x572e0d[_0x39399d]['id']});}})[_0x56e7('0x17')](respondWithStatusCode(_0x360af9,null))[_0x56e7('0x22')](APIHandleError(_0x360af9));};exports['getLists']=function(_0x1019a0,_0x34aa1d){var _0x3efcdb={};var _0x168e8f={};var _0x3d6f5f;var _0x14f926;return db[_0x56e7('0x3f')][_0x56e7('0x9c')]({'where':{'id':_0x1019a0[_0x56e7('0x5b')]['id']}})['then'](handleEntityNotFound(_0x34aa1d,null))['then'](function(_0x367f70){if(_0x367f70){_0x3d6f5f=_0x367f70;_0x168e8f[_0x56e7('0x5c')]=_[_0x56e7('0x5d')](db['CmList'][_0x56e7('0x5e')]);_0x168e8f[_0x56e7('0x49')]=_[_0x56e7('0x5d')](_0x1019a0['query']);_0x168e8f['filters']=_[_0x56e7('0x5f')](_0x168e8f[_0x56e7('0x5c')],_0x168e8f['query']);_0x3efcdb[_0x56e7('0x4d')]=_[_0x56e7('0x5f')](_0x168e8f[_0x56e7('0x5c')],qs['fields'](_0x1019a0[_0x56e7('0x49')]['fields']));_0x3efcdb[_0x56e7('0x4d')]=_0x3efcdb[_0x56e7('0x4d')]['length']?_0x3efcdb['attributes']:_0x168e8f[_0x56e7('0x5c')];_0x3efcdb[_0x56e7('0xd4')]=qs[_0x56e7('0xd5')](_0x1019a0[_0x56e7('0x49')][_0x56e7('0xd5')]);_0x3efcdb[_0x56e7('0x46')]=qs[_0x56e7('0xd3')](_[_0x56e7('0xdf')](_0x1019a0['query'],_0x168e8f[_0x56e7('0xd3')]));if(_0x1019a0[_0x56e7('0x49')][_0x56e7('0x36')]){_0x3efcdb['where']=_[_0x56e7('0x61')](_0x3efcdb[_0x56e7('0x46')],{'$or':_[_0x56e7('0x38')](_0x3efcdb['attributes'],function(_0x45ff36){var _0xe71054={};_0xe71054[_0x45ff36]={'$like':'%'+_0x1019a0['query'][_0x56e7('0x36')]+'%'};return _0xe71054;})});}_0x3efcdb=_[_0x56e7('0x61')]({},_0x3efcdb,_0x1019a0[_0x56e7('0x62')]);return _0x3d6f5f[_0x56e7('0x121')](_0x3efcdb);}})[_0x56e7('0x17')](function(_0x58245f){if(_0x58245f){_0x14f926=_0x58245f[_0x56e7('0x51')];if(!_0x1019a0[_0x56e7('0x49')]['hasOwnProperty'](_0x56e7('0xdb'))){_0x3efcdb['limit']=qs[_0x56e7('0x27')](_0x1019a0[_0x56e7('0x49')]['limit']);_0x3efcdb[_0x56e7('0x26')]=qs[_0x56e7('0x26')](_0x1019a0[_0x56e7('0x49')][_0x56e7('0x26')]);}return _0x3d6f5f[_0x56e7('0x121')](_0x3efcdb);}})[_0x56e7('0x17')](function(_0x2fed46){if(_0x2fed46){return _0x2fed46?{'count':_0x14f926,'rows':_0x2fed46}:null;}})['then'](respondWithResult(_0x34aa1d,null))['catch'](handleError(_0x34aa1d,null));};exports[_0x56e7('0x122')]=function(_0x1101ae,_0x18d534){var _0x16f62f={};var _0x364db0={};var _0x35f67c;return db[_0x56e7('0x3f')][_0x56e7('0x9c')]({'where':{'id':_0x1101ae[_0x56e7('0x5b')]['id']}})[_0x56e7('0x17')](handleEntityNotFound(_0x18d534,null))[_0x56e7('0x17')](function(_0x5d128a){if(_0x5d128a){_0x35f67c=_0x5d128a;_0x364db0[_0x56e7('0x5c')]=_[_0x56e7('0x5d')](db['User'][_0x56e7('0x5e')]);_0x364db0[_0x56e7('0x49')]=_[_0x56e7('0x5d')](_0x1101ae[_0x56e7('0x49')]);_0x364db0[_0x56e7('0xd3')]=_[_0x56e7('0x5f')](_0x364db0['model'],_0x364db0[_0x56e7('0x49')]);_0x16f62f['attributes']=_[_0x56e7('0x5f')](_0x364db0[_0x56e7('0x5c')],qs[_0x56e7('0x60')](_0x1101ae[_0x56e7('0x49')]['fields']));_0x16f62f[_0x56e7('0x4d')]=_0x16f62f['attributes']['length']?_0x16f62f['attributes']:_0x364db0[_0x56e7('0x5c')];_0x16f62f['order']=qs[_0x56e7('0xd5')](_0x1101ae[_0x56e7('0x49')][_0x56e7('0xd5')]);_0x16f62f[_0x56e7('0x46')]=qs[_0x56e7('0xd3')](_[_0x56e7('0xdf')](_0x1101ae[_0x56e7('0x49')],_0x364db0['filters']));if(_0x1101ae[_0x56e7('0x49')][_0x56e7('0x36')]){_0x16f62f['where']=_[_0x56e7('0x61')](_0x16f62f[_0x56e7('0x46')],{'$or':_[_0x56e7('0x38')](_0x16f62f[_0x56e7('0x4d')],function(_0x351b82){var _0x462f8c={};_0x462f8c[_0x351b82]={'$like':'%'+_0x1101ae[_0x56e7('0x49')]['filter']+'%'};return _0x462f8c;})});}_0x16f62f[_0x56e7('0x5c')]=db[_0x56e7('0x3f')];_0x16f62f['as']=_0x56e7('0x90');_0x16f62f=_[_0x56e7('0x61')]({},_0x16f62f,_0x1101ae[_0x56e7('0x62')]);return _0x35f67c[_0x56e7('0xfb')]({'include':[_0x16f62f]});}})['then'](function(_0x52fe7d){if(_0x52fe7d){var _0x1ee71={},_0x282b85=[];for(var _0x5a6b24=0x0;_0x5a6b24<_0x52fe7d['length'];_0x5a6b24+=0x1){for(var _0x19c25d=0x0,_0x526196;_0x19c25d<_0x52fe7d[_0x5a6b24][_0x56e7('0x90')][_0x56e7('0x51')];_0x19c25d+=0x1){_0x526196=_0x52fe7d[_0x5a6b24][_0x56e7('0x90')][_0x19c25d][_0x56e7('0x30')]({'plain':!![]});_0x1ee71[_0x526196['id']]=_0x526196;}}_0x1ee71=_[_0x56e7('0x123')](_0x1ee71);for(var _0x2ca291=qs[_0x56e7('0x26')](_0x1101ae[_0x56e7('0x49')][_0x56e7('0x26')]);_0x2ca291<_0x1ee71[_0x56e7('0x51')]&&_0x282b85[_0x56e7('0x51')]<qs[_0x56e7('0x27')](_0x1101ae[_0x56e7('0x49')][_0x56e7('0x27')]);_0x2ca291+=0x1){if(_0x1ee71[_0x2ca291]){_0x282b85[_0x56e7('0x55')](_0x1ee71[_0x2ca291]);}}return{'count':_0x1ee71[_0x56e7('0x51')],'rows':_0x282b85};}})[_0x56e7('0x17')](respondWithResult(_0x18d534,null))['catch'](handleError(_0x18d534,null));};exports[_0x56e7('0x2f')]=function(_0x3edce8,_0x49d054){if(_0x3edce8[_0x56e7('0x33')]['id']==_0x3edce8[_0x56e7('0x5b')]['id']){return _0x49d054[_0x56e7('0x24')](0x1f4)['send']({'message':_0x56e7('0x124')});}return db[_0x56e7('0x3f')][_0x56e7('0x3b')]({'where':{'id':_0x3edce8[_0x56e7('0x5b')]['id']}})[_0x56e7('0x17')](handleEntityNotFound(_0x49d054,null))[_0x56e7('0x17')](removeEntity(_0x49d054,null))[_0x56e7('0x22')](handleError(_0x49d054,null));};exports[_0x56e7('0x125')]=function(_0x38b0cf,_0x33e9d8){return db[_0x56e7('0x3f')][_0x56e7('0x3b')]({'where':{'id':_0x38b0cf['params']['id']}})[_0x56e7('0x17')](handleEntityNotFound(_0x33e9d8,null))[_0x56e7('0x17')](function(_0x51ee6c){if(_0x51ee6c){return _0x51ee6c['addChatInteractions'](_0x38b0cf[_0x56e7('0x64')]['ids'],_[_0x56e7('0x66')](_0x38b0cf[_0x56e7('0x64')],['ids','id'])||{})[_0x56e7('0xad')](function(){for(var _0x5cf753=0x0;_0x5cf753<_0x38b0cf['body']['ids']['length'];_0x5cf753+=0x1){socket['emit'](_0x56e7('0x126'),{'ChatInteractionId':Number(_0x38b0cf['body'][_0x56e7('0x67')][_0x5cf753]),'UserId':Number(_0x38b0cf[_0x56e7('0x5b')]['id'])});}return _0x38b0cf[_0x56e7('0x64')][_0x56e7('0x67')];});}})[_0x56e7('0x17')](respondWithResult(_0x33e9d8,null))[_0x56e7('0x22')](handleError(_0x33e9d8,null));};exports[_0x56e7('0x127')]=function(_0x166314,_0x2a0f1d){return db['User'][_0x56e7('0x3b')]({'where':{'id':_0x166314['params']['id']}})[_0x56e7('0x17')](handleEntityNotFound(_0x2a0f1d,null))[_0x56e7('0x17')](function(_0x232988){if(_0x232988){return _0x232988[_0x56e7('0x127')](_0x166314[_0x56e7('0x49')][_0x56e7('0x67')])['then'](function(){if(_['isArray'](_0x166314['query'][_0x56e7('0x67')])){for(var _0x326104=0x0;_0x326104<_0x166314[_0x56e7('0x49')][_0x56e7('0x67')][_0x56e7('0x51')];_0x326104+=0x1){socket[_0x56e7('0x2d')](_0x56e7('0x128'),{'ChatInteractionId':Number(_0x166314[_0x56e7('0x49')][_0x56e7('0x67')][_0x326104]),'UserId':Number(_0x166314[_0x56e7('0x5b')]['id'])});}}else{socket[_0x56e7('0x2d')](_0x56e7('0x128'),{'ChatInteractionId':Number(_0x166314[_0x56e7('0x49')]['ids']),'UserId':Number(_0x166314[_0x56e7('0x5b')]['id'])});}});}})[_0x56e7('0x17')](respondWithStatusCode(_0x2a0f1d,null))[_0x56e7('0x22')](handleError(_0x2a0f1d,null));};exports[_0x56e7('0x129')]=function(_0x58e339,_0x48c6ed){return db['User'][_0x56e7('0x3b')]({'where':{'id':_0x58e339['params']['id']}})[_0x56e7('0x17')](handleEntityNotFound(_0x48c6ed,null))['then'](function(_0x3fe3b8){if(_0x3fe3b8){return _0x3fe3b8[_0x56e7('0x129')](_0x58e339[_0x56e7('0x64')]['ids'],_[_0x56e7('0x66')](_0x58e339[_0x56e7('0x64')],[_0x56e7('0x67'),'id'])||{})['spread'](function(){for(var _0x32cb05=0x0;_0x32cb05<_0x58e339['body'][_0x56e7('0x67')]['length'];_0x32cb05+=0x1){socket[_0x56e7('0x2d')](_0x56e7('0x12a'),{'MailInteractionId':Number(_0x58e339[_0x56e7('0x64')][_0x56e7('0x67')][_0x32cb05]),'UserId':Number(_0x58e339[_0x56e7('0x5b')]['id'])});}return _0x58e339[_0x56e7('0x64')]['ids'];});}})[_0x56e7('0x17')](respondWithResult(_0x48c6ed,null))[_0x56e7('0x22')](handleError(_0x48c6ed,null));};exports[_0x56e7('0x12b')]=function(_0x2d7a62,_0x276853){return db['User'][_0x56e7('0x3b')]({'where':{'id':_0x2d7a62[_0x56e7('0x5b')]['id']}})[_0x56e7('0x17')](handleEntityNotFound(_0x276853,null))['then'](function(_0x25c28e){if(_0x25c28e){return _0x25c28e[_0x56e7('0x12b')](_0x2d7a62[_0x56e7('0x49')][_0x56e7('0x67')])[_0x56e7('0x17')](function(){if(_[_0x56e7('0xb6')](_0x2d7a62[_0x56e7('0x49')][_0x56e7('0x67')])){for(var _0x52b454=0x0;_0x52b454<_0x2d7a62['query'][_0x56e7('0x67')][_0x56e7('0x51')];_0x52b454+=0x1){socket[_0x56e7('0x2d')](_0x56e7('0x12c'),{'MailInteractionId':Number(_0x2d7a62[_0x56e7('0x49')][_0x56e7('0x67')][_0x52b454]),'UserId':Number(_0x2d7a62[_0x56e7('0x5b')]['id'])});}}else{socket[_0x56e7('0x2d')](_0x56e7('0x12c'),{'MailInteractionId':Number(_0x2d7a62[_0x56e7('0x49')][_0x56e7('0x67')]),'UserId':Number(_0x2d7a62[_0x56e7('0x5b')]['id'])});}});}})[_0x56e7('0x17')](respondWithStatusCode(_0x276853,null))[_0x56e7('0x22')](handleError(_0x276853,null));};exports['addFaxInteractions']=function(_0x10f5fa,_0xfa70f){return db[_0x56e7('0x3f')][_0x56e7('0x3b')]({'where':{'id':_0x10f5fa[_0x56e7('0x5b')]['id']}})[_0x56e7('0x17')](handleEntityNotFound(_0xfa70f,null))[_0x56e7('0x17')](function(_0x44c11d){if(_0x44c11d){return _0x44c11d[_0x56e7('0x12d')](_0x10f5fa[_0x56e7('0x64')][_0x56e7('0x67')],_[_0x56e7('0x66')](_0x10f5fa['body'],[_0x56e7('0x67'),'id'])||{})[_0x56e7('0xad')](function(){for(var _0x34d6ba=0x0;_0x34d6ba<_0x10f5fa[_0x56e7('0x64')]['ids'][_0x56e7('0x51')];_0x34d6ba+=0x1){socket[_0x56e7('0x2d')]('user_has_fax_interactions:save',{'FaxInteractionId':Number(_0x10f5fa[_0x56e7('0x64')][_0x56e7('0x67')][_0x34d6ba]),'UserId':Number(_0x10f5fa[_0x56e7('0x5b')]['id'])});}return _0x10f5fa[_0x56e7('0x64')][_0x56e7('0x67')];});}})['then'](respondWithResult(_0xfa70f,null))[_0x56e7('0x22')](handleError(_0xfa70f,null));};exports[_0x56e7('0x12e')]=function(_0x1de5d7,_0x55e499){return db[_0x56e7('0x3f')][_0x56e7('0x3b')]({'where':{'id':_0x1de5d7[_0x56e7('0x5b')]['id']}})['then'](handleEntityNotFound(_0x55e499,null))[_0x56e7('0x17')](function(_0x8eae6b){if(_0x8eae6b){return _0x8eae6b[_0x56e7('0x12e')](_0x1de5d7[_0x56e7('0x49')]['ids'])['then'](function(){if(_[_0x56e7('0xb6')](_0x1de5d7[_0x56e7('0x49')]['ids'])){for(var _0x31d995=0x0;_0x31d995<_0x1de5d7[_0x56e7('0x49')][_0x56e7('0x67')][_0x56e7('0x51')];_0x31d995+=0x1){socket[_0x56e7('0x2d')]('user_has_fax_interactions:remove',{'FaxInteractionId':Number(_0x1de5d7[_0x56e7('0x49')][_0x56e7('0x67')][_0x31d995]),'UserId':Number(_0x1de5d7['params']['id'])});}}else{socket[_0x56e7('0x2d')](_0x56e7('0x12f'),{'FaxInteractionId':Number(_0x1de5d7[_0x56e7('0x49')][_0x56e7('0x67')]),'UserId':Number(_0x1de5d7['params']['id'])});}});}})[_0x56e7('0x17')](respondWithStatusCode(_0x55e499,null))[_0x56e7('0x22')](handleError(_0x55e499,null));};exports[_0x56e7('0x130')]=function(_0xaf3741,_0x169cb8){return db['User'][_0x56e7('0x3b')]({'where':{'id':_0xaf3741['params']['id']}})[_0x56e7('0x17')](handleEntityNotFound(_0x169cb8,null))['then'](function(_0x5e6164){if(_0x5e6164){return _0x5e6164['addSmsInteractions'](_0xaf3741[_0x56e7('0x64')][_0x56e7('0x67')],_[_0x56e7('0x66')](_0xaf3741[_0x56e7('0x64')],[_0x56e7('0x67'),'id'])||{})[_0x56e7('0xad')](function(){for(var _0x179047=0x0;_0x179047<_0xaf3741[_0x56e7('0x64')]['ids'][_0x56e7('0x51')];_0x179047+=0x1){socket[_0x56e7('0x2d')](_0x56e7('0x131'),{'SmsInteractionId':Number(_0xaf3741['body'][_0x56e7('0x67')][_0x179047]),'UserId':Number(_0xaf3741[_0x56e7('0x5b')]['id'])});}return _0xaf3741[_0x56e7('0x64')][_0x56e7('0x67')];});}})[_0x56e7('0x17')](respondWithResult(_0x169cb8,null))['catch'](handleError(_0x169cb8,null));};exports[_0x56e7('0x132')]=function(_0x2f34cb,_0x23173a){return db[_0x56e7('0x3f')]['find']({'where':{'id':_0x2f34cb[_0x56e7('0x5b')]['id']}})[_0x56e7('0x17')](handleEntityNotFound(_0x23173a,null))['then'](function(_0x15c431){if(_0x15c431){return _0x15c431[_0x56e7('0x132')](_0x2f34cb[_0x56e7('0x49')][_0x56e7('0x67')])[_0x56e7('0x17')](function(){if(_[_0x56e7('0xb6')](_0x2f34cb[_0x56e7('0x49')][_0x56e7('0x67')])){for(var _0x3e3e19=0x0;_0x3e3e19<_0x2f34cb[_0x56e7('0x49')]['ids']['length'];_0x3e3e19+=0x1){socket['emit']('user_has_sms_interactions:remove',{'SmsInteractionId':Number(_0x2f34cb[_0x56e7('0x49')]['ids'][_0x3e3e19]),'UserId':Number(_0x2f34cb[_0x56e7('0x5b')]['id'])});}}else{socket[_0x56e7('0x2d')](_0x56e7('0x133'),{'SmsInteractionId':Number(_0x2f34cb['query'][_0x56e7('0x67')]),'UserId':Number(_0x2f34cb[_0x56e7('0x5b')]['id'])});}});}})[_0x56e7('0x17')](respondWithStatusCode(_0x23173a,null))['catch'](handleError(_0x23173a,null));};exports[_0x56e7('0x134')]=function(_0x333920,_0x1b361f){return db[_0x56e7('0x3f')][_0x56e7('0x3b')]({'where':{'id':_0x333920[_0x56e7('0x5b')]['id']}})[_0x56e7('0x17')](handleEntityNotFound(_0x1b361f,null))[_0x56e7('0x17')](function(_0x54d419){if(_0x54d419){return _0x54d419[_0x56e7('0x134')](_0x333920['body']['ids'],_[_0x56e7('0x66')](_0x333920[_0x56e7('0x64')],['ids','id'])||{})[_0x56e7('0xad')](function(){for(var _0x240126=0x0;_0x240126<_0x333920[_0x56e7('0x64')][_0x56e7('0x67')]['length'];_0x240126+=0x1){socket[_0x56e7('0x2d')](_0x56e7('0x135'),{'OpenchannelInteractionId':Number(_0x333920[_0x56e7('0x64')]['ids'][_0x240126]),'UserId':Number(_0x333920['params']['id'])});}return _0x333920['body'][_0x56e7('0x67')];});}})['then'](respondWithResult(_0x1b361f,null))[_0x56e7('0x22')](handleError(_0x1b361f,null));};exports[_0x56e7('0x136')]=function(_0x4c9a48,_0x3b99a2){return db[_0x56e7('0x3f')]['find']({'where':{'id':_0x4c9a48['params']['id']}})['then'](handleEntityNotFound(_0x3b99a2,null))[_0x56e7('0x17')](function(_0xee91d0){if(_0xee91d0){return _0xee91d0[_0x56e7('0x136')](_0x4c9a48[_0x56e7('0x49')][_0x56e7('0x67')])[_0x56e7('0x17')](function(){if(_['isArray'](_0x4c9a48[_0x56e7('0x49')]['ids'])){for(var _0x1d3f9b=0x0;_0x1d3f9b<_0x4c9a48[_0x56e7('0x49')][_0x56e7('0x67')][_0x56e7('0x51')];_0x1d3f9b+=0x1){socket[_0x56e7('0x2d')]('user_has_openchannel_interactions:remove',{'OpenchannelInteractionId':Number(_0x4c9a48[_0x56e7('0x49')][_0x56e7('0x67')][_0x1d3f9b]),'UserId':Number(_0x4c9a48[_0x56e7('0x5b')]['id'])});}}else{socket[_0x56e7('0x2d')](_0x56e7('0x137'),{'OpenchannelInteractionId':Number(_0x4c9a48[_0x56e7('0x49')][_0x56e7('0x67')]),'UserId':Number(_0x4c9a48[_0x56e7('0x5b')]['id'])});}});}})[_0x56e7('0x17')](respondWithStatusCode(_0x3b99a2,null))[_0x56e7('0x22')](handleError(_0x3b99a2,null));};exports['addWhatsappInteractions']=function(_0x3d797a,_0x4e81d5){return db['User'][_0x56e7('0x3b')]({'where':{'id':_0x3d797a[_0x56e7('0x5b')]['id']}})[_0x56e7('0x17')](handleEntityNotFound(_0x4e81d5,null))[_0x56e7('0x17')](function(_0x530e2a){if(_0x530e2a){return _0x530e2a['addWhatsappInteractions'](_0x3d797a['body']['ids'],_[_0x56e7('0x66')](_0x3d797a[_0x56e7('0x64')],['ids','id'])||{})[_0x56e7('0xad')](function(){for(var _0x405d9c=0x0;_0x405d9c<_0x3d797a[_0x56e7('0x64')][_0x56e7('0x67')][_0x56e7('0x51')];_0x405d9c+=0x1){socket[_0x56e7('0x2d')](_0x56e7('0x138'),{'WhatsappInteractionId':Number(_0x3d797a[_0x56e7('0x64')][_0x56e7('0x67')][_0x405d9c]),'UserId':Number(_0x3d797a[_0x56e7('0x5b')]['id'])});}return _0x3d797a[_0x56e7('0x64')][_0x56e7('0x67')];});}})[_0x56e7('0x17')](respondWithResult(_0x4e81d5,null))[_0x56e7('0x22')](handleError(_0x4e81d5,null));};exports[_0x56e7('0x139')]=function(_0x3e5a86,_0x26cc18){return db[_0x56e7('0x3f')][_0x56e7('0x3b')]({'where':{'id':_0x3e5a86[_0x56e7('0x5b')]['id']}})[_0x56e7('0x17')](handleEntityNotFound(_0x26cc18,null))[_0x56e7('0x17')](function(_0x2c9547){if(_0x2c9547){return _0x2c9547['removeWhatsappInteractions'](_0x3e5a86[_0x56e7('0x49')][_0x56e7('0x67')]);}})[_0x56e7('0x17')](respondWithStatusCode(_0x26cc18,null))['catch'](handleError(_0x26cc18,null));};exports[_0x56e7('0x13a')]=function(_0x40cf99,_0x51c9fc){var _0x3cf37b={};var _0x22f7e2={};var _0x2bc5a9;var _0x5e86d0;return db[_0x56e7('0x3f')]['findOne']({'where':{'id':_0x40cf99[_0x56e7('0x5b')]['id']}})[_0x56e7('0x17')](handleEntityNotFound(_0x51c9fc,null))['then'](function(_0x56261b){if(_0x56261b){_0x2bc5a9=_0x56261b;_0x22f7e2[_0x56e7('0x5c')]=_[_0x56e7('0x5d')](db[_0x56e7('0x13b')][_0x56e7('0x5e')]);_0x22f7e2[_0x56e7('0x49')]=_[_0x56e7('0x5d')](_0x40cf99[_0x56e7('0x49')]);_0x22f7e2[_0x56e7('0xd3')]=_[_0x56e7('0x5f')](_0x22f7e2[_0x56e7('0x5c')],_0x22f7e2[_0x56e7('0x49')]);_0x3cf37b[_0x56e7('0x4d')]=_[_0x56e7('0x5f')](_0x22f7e2[_0x56e7('0x5c')],qs[_0x56e7('0x60')](_0x40cf99['query']['fields']));_0x3cf37b['attributes']=_0x3cf37b[_0x56e7('0x4d')][_0x56e7('0x51')]?_0x3cf37b[_0x56e7('0x4d')]:_0x22f7e2[_0x56e7('0x5c')];_0x3cf37b[_0x56e7('0xd4')]=qs[_0x56e7('0xd5')](_0x40cf99[_0x56e7('0x49')]['sort']);_0x3cf37b[_0x56e7('0x46')]=qs['filters'](_[_0x56e7('0xdf')](_0x40cf99[_0x56e7('0x49')],_0x22f7e2[_0x56e7('0xd3')]));if(_0x40cf99[_0x56e7('0x49')]['filter']){_0x3cf37b[_0x56e7('0x46')]=_[_0x56e7('0x61')](_0x3cf37b['where'],{'$or':_['map'](_0x3cf37b['attributes'],function(_0x43d88e){var _0x1c19c1={};_0x1c19c1[_0x43d88e]={'$like':'%'+_0x40cf99[_0x56e7('0x49')][_0x56e7('0x36')]+'%'};return _0x1c19c1;})});}_0x3cf37b=_[_0x56e7('0x61')]({},_0x3cf37b,_0x40cf99[_0x56e7('0x62')]);return _0x2bc5a9['getVoicePrefixes'](_0x3cf37b);}})[_0x56e7('0x17')](function(_0xf98564){if(_0xf98564){_0x5e86d0=_0xf98564[_0x56e7('0x51')];if(!_0x40cf99[_0x56e7('0x49')][_0x56e7('0xd6')]('nolimit')){_0x3cf37b[_0x56e7('0x27')]=qs[_0x56e7('0x27')](_0x40cf99['query']['limit']);_0x3cf37b['offset']=qs['offset'](_0x40cf99['query'][_0x56e7('0x26')]);}return _0x2bc5a9['getVoicePrefixes'](_0x3cf37b);}})['then'](function(_0x5c5497){if(_0x5c5497){return _0x5c5497?{'count':_0x5e86d0,'rows':_0x5c5497}:null;}})[_0x56e7('0x17')](respondWithResult(_0x51c9fc,null))[_0x56e7('0x22')](handleError(_0x51c9fc,null));};exports[_0x56e7('0x13c')]=function(_0x19842b,_0x1595ff){var _0x2321cf={};var _0xfd7462={};var _0x274b0c;var _0x182ea5;return db['User'][_0x56e7('0x9c')]({'where':{'id':_0x19842b[_0x56e7('0x5b')]['id']}})[_0x56e7('0x17')](handleEntityNotFound(_0x1595ff,null))['then'](function(_0x19906a){if(_0x19906a){_0x274b0c=_0x19906a;_0xfd7462[_0x56e7('0x5c')]=_[_0x56e7('0x5d')](db['FaxAccount'][_0x56e7('0x5e')]);_0xfd7462[_0x56e7('0x49')]=_['keys'](_0x19842b[_0x56e7('0x49')]);_0xfd7462['filters']=_[_0x56e7('0x5f')](_0xfd7462[_0x56e7('0x5c')],_0xfd7462[_0x56e7('0x49')]);_0x2321cf[_0x56e7('0x4d')]=_[_0x56e7('0x5f')](_0xfd7462[_0x56e7('0x5c')],qs[_0x56e7('0x60')](_0x19842b['query'][_0x56e7('0x60')]));_0x2321cf[_0x56e7('0x4d')]=_0x2321cf[_0x56e7('0x4d')]['length']?_0x2321cf['attributes']:_0xfd7462['model'];_0x2321cf[_0x56e7('0xd4')]=qs[_0x56e7('0xd5')](_0x19842b['query'][_0x56e7('0xd5')]);_0x2321cf[_0x56e7('0x46')]=qs[_0x56e7('0xd3')](_[_0x56e7('0xdf')](_0x19842b[_0x56e7('0x49')],_0xfd7462['filters']));if(_0x19842b[_0x56e7('0x49')][_0x56e7('0x36')]){_0x2321cf['where']=_[_0x56e7('0x61')](_0x2321cf[_0x56e7('0x46')],{'$or':_[_0x56e7('0x38')](_0x2321cf[_0x56e7('0x4d')],function(_0x392f4b){var _0x23af58={};_0x23af58[_0x392f4b]={'$like':'%'+_0x19842b[_0x56e7('0x49')][_0x56e7('0x36')]+'%'};return _0x23af58;})});}_0x2321cf=_['merge']({},_0x2321cf,_0x19842b[_0x56e7('0x62')]);return _0x274b0c[_0x56e7('0x13c')](_0x2321cf);}})[_0x56e7('0x17')](function(_0x29a208){if(_0x29a208){_0x182ea5=_0x29a208['length'];if(!_0x19842b['query'][_0x56e7('0xd6')](_0x56e7('0xdb'))){_0x2321cf[_0x56e7('0x27')]=qs['limit'](_0x19842b['query'][_0x56e7('0x27')]);_0x2321cf[_0x56e7('0x26')]=qs['offset'](_0x19842b['query'][_0x56e7('0x26')]);}return _0x274b0c[_0x56e7('0x13c')](_0x2321cf);}})['then'](function(_0x22a4f2){if(_0x22a4f2){return _0x22a4f2?{'count':_0x182ea5,'rows':_0x22a4f2}:null;}})[_0x56e7('0x17')](respondWithResult(_0x1595ff,null))[_0x56e7('0x22')](handleError(_0x1595ff,null));};exports[_0x56e7('0x13d')]=function(_0x48f61c,_0x380545){return db[_0x56e7('0x3f')][_0x56e7('0x3b')]({'where':{'id':_0x48f61c[_0x56e7('0x5b')]['id']}})[_0x56e7('0x17')](handleEntityNotFound(_0x380545,null))[_0x56e7('0x17')](function(_0x141f23){if(_0x141f23){return _0x141f23['addFaxAccounts'](_0x48f61c[_0x56e7('0x64')][_0x56e7('0x67')],_[_0x56e7('0x66')](_0x48f61c[_0x56e7('0x64')],[_0x56e7('0x67'),'id'])||{});}})[_0x56e7('0x17')](respondWithResult(_0x380545,null))[_0x56e7('0x22')](handleError(_0x380545,null));};exports[_0x56e7('0x13e')]=function(_0xa1304b,_0x337cb0){return db[_0x56e7('0x3f')][_0x56e7('0x3b')]({'where':{'id':_0xa1304b[_0x56e7('0x5b')]['id']}})[_0x56e7('0x17')](handleEntityNotFound(_0x337cb0,null))[_0x56e7('0x17')](function(_0x5ef311){if(_0x5ef311){return _0x5ef311['removeFaxAccounts'](_0xa1304b[_0x56e7('0x49')]['ids']);}})[_0x56e7('0x17')](respondWithStatusCode(_0x337cb0,null))[_0x56e7('0x22')](handleError(_0x337cb0,null));};exports[_0x56e7('0x13f')]=function(_0x3dae19,_0x370a78){var _0x497fba={};var _0x471573={};var _0x1a79a6;var _0x20ab09;return db[_0x56e7('0x3f')]['findOne']({'where':{'id':_0x3dae19[_0x56e7('0x5b')]['id']}})[_0x56e7('0x17')](handleEntityNotFound(_0x370a78,null))[_0x56e7('0x17')](function(_0x278916){if(_0x278916){_0x1a79a6=_0x278916;_0x471573['model']=_['keys'](db[_0x56e7('0x140')][_0x56e7('0x5e')]);_0x471573[_0x56e7('0x49')]=_[_0x56e7('0x5d')](_0x3dae19[_0x56e7('0x49')]);_0x471573[_0x56e7('0xd3')]=_[_0x56e7('0x5f')](_0x471573[_0x56e7('0x5c')],_0x471573[_0x56e7('0x49')]);_0x497fba[_0x56e7('0x4d')]=_[_0x56e7('0x5f')](_0x471573[_0x56e7('0x5c')],qs[_0x56e7('0x60')](_0x3dae19[_0x56e7('0x49')][_0x56e7('0x60')]));_0x497fba['attributes']=_0x497fba[_0x56e7('0x4d')]['length']?_0x497fba['attributes']:_0x471573[_0x56e7('0x5c')];_0x497fba[_0x56e7('0xd4')]=qs[_0x56e7('0xd5')](_0x3dae19[_0x56e7('0x49')][_0x56e7('0xd5')]);_0x497fba['where']=qs[_0x56e7('0xd3')](_[_0x56e7('0xdf')](_0x3dae19[_0x56e7('0x49')],_0x471573[_0x56e7('0xd3')]));if(_0x3dae19['query'][_0x56e7('0x36')]){_0x497fba['where']=_['merge'](_0x497fba[_0x56e7('0x46')],{'$or':_[_0x56e7('0x38')](_0x497fba['attributes'],function(_0x299d7b){var _0x2fafd4={};_0x2fafd4[_0x299d7b]={'$like':'%'+_0x3dae19[_0x56e7('0x49')][_0x56e7('0x36')]+'%'};return _0x2fafd4;})});}_0x497fba=_[_0x56e7('0x61')]({},_0x497fba,_0x3dae19[_0x56e7('0x62')]);return _0x1a79a6[_0x56e7('0x13f')](_0x497fba);}})[_0x56e7('0x17')](function(_0x479f5a){if(_0x479f5a){_0x20ab09=_0x479f5a[_0x56e7('0x51')];if(!_0x3dae19['query'][_0x56e7('0xd6')](_0x56e7('0xdb'))){_0x497fba[_0x56e7('0x27')]=qs[_0x56e7('0x27')](_0x3dae19[_0x56e7('0x49')][_0x56e7('0x27')]);_0x497fba[_0x56e7('0x26')]=qs[_0x56e7('0x26')](_0x3dae19[_0x56e7('0x49')]['offset']);}return _0x1a79a6[_0x56e7('0x13f')](_0x497fba);}})[_0x56e7('0x17')](function(_0x472758){if(_0x472758){return _0x472758?{'count':_0x20ab09,'rows':_0x472758}:null;}})[_0x56e7('0x17')](respondWithResult(_0x370a78,null))['catch'](handleError(_0x370a78,null));};exports[_0x56e7('0x141')]=function(_0x186a86,_0x3428f9){return db[_0x56e7('0x3f')]['find']({'where':{'id':_0x186a86[_0x56e7('0x5b')]['id']}})['then'](handleEntityNotFound(_0x3428f9,null))[_0x56e7('0x17')](function(_0x5e217b){if(_0x5e217b){return _0x5e217b[_0x56e7('0x141')](_0x186a86['body'][_0x56e7('0x67')],_[_0x56e7('0x66')](_0x186a86[_0x56e7('0x64')],[_0x56e7('0x67'),'id'])||{});}})[_0x56e7('0x17')](respondWithResult(_0x3428f9,null))['catch'](handleError(_0x3428f9,null));};exports['removeMailAccounts']=function(_0x2497da,_0x4938db){return db[_0x56e7('0x3f')][_0x56e7('0x3b')]({'where':{'id':_0x2497da[_0x56e7('0x5b')]['id']}})['then'](handleEntityNotFound(_0x4938db,null))[_0x56e7('0x17')](function(_0x132f9a){if(_0x132f9a){return _0x132f9a['removeMailAccounts'](_0x2497da['query'][_0x56e7('0x67')]);}})['then'](respondWithStatusCode(_0x4938db,null))['catch'](handleError(_0x4938db,null));};exports['getOpenchannelAccounts']=function(_0x3c865a,_0x21a30b){var _0x90d73={};var _0x3e34b2={};var _0x2f2e16;var _0x765669;return db[_0x56e7('0x3f')]['findOne']({'where':{'id':_0x3c865a['params']['id']}})['then'](handleEntityNotFound(_0x21a30b,null))[_0x56e7('0x17')](function(_0x94fe12){if(_0x94fe12){_0x2f2e16=_0x94fe12;_0x3e34b2[_0x56e7('0x5c')]=_[_0x56e7('0x5d')](db[_0x56e7('0x142')]['rawAttributes']);_0x3e34b2[_0x56e7('0x49')]=_['keys'](_0x3c865a[_0x56e7('0x49')]);_0x3e34b2[_0x56e7('0xd3')]=_[_0x56e7('0x5f')](_0x3e34b2[_0x56e7('0x5c')],_0x3e34b2[_0x56e7('0x49')]);_0x90d73[_0x56e7('0x4d')]=_[_0x56e7('0x5f')](_0x3e34b2[_0x56e7('0x5c')],qs[_0x56e7('0x60')](_0x3c865a['query'][_0x56e7('0x60')]));_0x90d73['attributes']=_0x90d73['attributes'][_0x56e7('0x51')]?_0x90d73['attributes']:_0x3e34b2[_0x56e7('0x5c')];_0x90d73[_0x56e7('0xd4')]=qs['sort'](_0x3c865a[_0x56e7('0x49')][_0x56e7('0xd5')]);_0x90d73[_0x56e7('0x46')]=qs[_0x56e7('0xd3')](_[_0x56e7('0xdf')](_0x3c865a['query'],_0x3e34b2['filters']));if(_0x3c865a['query'][_0x56e7('0x36')]){_0x90d73[_0x56e7('0x46')]=_[_0x56e7('0x61')](_0x90d73[_0x56e7('0x46')],{'$or':_[_0x56e7('0x38')](_0x90d73[_0x56e7('0x4d')],function(_0x3c7cde){var _0x5c1952={};_0x5c1952[_0x3c7cde]={'$like':'%'+_0x3c865a[_0x56e7('0x49')][_0x56e7('0x36')]+'%'};return _0x5c1952;})});}_0x90d73=_[_0x56e7('0x61')]({},_0x90d73,_0x3c865a[_0x56e7('0x62')]);return _0x2f2e16[_0x56e7('0x143')](_0x90d73);}})['then'](function(_0x5f44eb){if(_0x5f44eb){_0x765669=_0x5f44eb[_0x56e7('0x51')];if(!_0x3c865a['query'][_0x56e7('0xd6')](_0x56e7('0xdb'))){_0x90d73['limit']=qs[_0x56e7('0x27')](_0x3c865a[_0x56e7('0x49')][_0x56e7('0x27')]);_0x90d73[_0x56e7('0x26')]=qs[_0x56e7('0x26')](_0x3c865a[_0x56e7('0x49')]['offset']);}return _0x2f2e16['getOpenchannelAccounts'](_0x90d73);}})['then'](function(_0x138b52){if(_0x138b52){return _0x138b52?{'count':_0x765669,'rows':_0x138b52}:null;}})[_0x56e7('0x17')](respondWithResult(_0x21a30b,null))[_0x56e7('0x22')](handleError(_0x21a30b,null));};exports[_0x56e7('0x144')]=function(_0x1df9d9,_0x58b9eb){return db['User'][_0x56e7('0x3b')]({'where':{'id':_0x1df9d9['params']['id']}})['then'](handleEntityNotFound(_0x58b9eb,null))['then'](function(_0x52cd7a){if(_0x52cd7a){return _0x52cd7a[_0x56e7('0x144')](_0x1df9d9['body']['ids'],_[_0x56e7('0x66')](_0x1df9d9[_0x56e7('0x64')],[_0x56e7('0x67'),'id'])||{});}})[_0x56e7('0x17')](respondWithResult(_0x58b9eb,null))[_0x56e7('0x22')](handleError(_0x58b9eb,null));};exports[_0x56e7('0x145')]=function(_0x561fa,_0x27bc10){return db[_0x56e7('0x3f')]['find']({'where':{'id':_0x561fa[_0x56e7('0x5b')]['id']}})[_0x56e7('0x17')](handleEntityNotFound(_0x27bc10,null))[_0x56e7('0x17')](function(_0x4a7dd5){if(_0x4a7dd5){return _0x4a7dd5['removeOpenchannelAccounts'](_0x561fa[_0x56e7('0x49')][_0x56e7('0x67')]);}})[_0x56e7('0x17')](respondWithStatusCode(_0x27bc10,null))[_0x56e7('0x22')](handleError(_0x27bc10,null));};exports['getSmsAccounts']=function(_0x43c83c,_0x3f173c){var _0x479301={};var _0x1a36ce={};var _0x1fd063;var _0xe723f3;return db['User'][_0x56e7('0x9c')]({'where':{'id':_0x43c83c[_0x56e7('0x5b')]['id']}})[_0x56e7('0x17')](handleEntityNotFound(_0x3f173c,null))[_0x56e7('0x17')](function(_0x5143cc){if(_0x5143cc){_0x1fd063=_0x5143cc;_0x1a36ce['model']=_['keys'](db[_0x56e7('0x146')][_0x56e7('0x5e')]);_0x1a36ce[_0x56e7('0x49')]=_[_0x56e7('0x5d')](_0x43c83c[_0x56e7('0x49')]);_0x1a36ce[_0x56e7('0xd3')]=_['intersection'](_0x1a36ce[_0x56e7('0x5c')],_0x1a36ce[_0x56e7('0x49')]);_0x479301[_0x56e7('0x4d')]=_[_0x56e7('0x5f')](_0x1a36ce[_0x56e7('0x5c')],qs[_0x56e7('0x60')](_0x43c83c[_0x56e7('0x49')][_0x56e7('0x60')]));_0x479301['attributes']=_0x479301[_0x56e7('0x4d')][_0x56e7('0x51')]?_0x479301['attributes']:_0x1a36ce['model'];_0x479301[_0x56e7('0xd4')]=qs[_0x56e7('0xd5')](_0x43c83c['query'][_0x56e7('0xd5')]);_0x479301[_0x56e7('0x46')]=qs[_0x56e7('0xd3')](_[_0x56e7('0xdf')](_0x43c83c[_0x56e7('0x49')],_0x1a36ce['filters']));if(_0x43c83c[_0x56e7('0x49')]['filter']){_0x479301[_0x56e7('0x46')]=_['merge'](_0x479301[_0x56e7('0x46')],{'$or':_[_0x56e7('0x38')](_0x479301[_0x56e7('0x4d')],function(_0x535384){var _0x38c567={};_0x38c567[_0x535384]={'$like':'%'+_0x43c83c[_0x56e7('0x49')][_0x56e7('0x36')]+'%'};return _0x38c567;})});}_0x479301=_[_0x56e7('0x61')]({},_0x479301,_0x43c83c[_0x56e7('0x62')]);return _0x1fd063[_0x56e7('0x147')](_0x479301);}})['then'](function(_0x37e0dd){if(_0x37e0dd){_0xe723f3=_0x37e0dd[_0x56e7('0x51')];if(!_0x43c83c[_0x56e7('0x49')][_0x56e7('0xd6')]('nolimit')){_0x479301[_0x56e7('0x27')]=qs[_0x56e7('0x27')](_0x43c83c[_0x56e7('0x49')][_0x56e7('0x27')]);_0x479301[_0x56e7('0x26')]=qs[_0x56e7('0x26')](_0x43c83c[_0x56e7('0x49')][_0x56e7('0x26')]);}return _0x1fd063[_0x56e7('0x147')](_0x479301);}})[_0x56e7('0x17')](function(_0x2537fe){if(_0x2537fe){return _0x2537fe?{'count':_0xe723f3,'rows':_0x2537fe}:null;}})[_0x56e7('0x17')](respondWithResult(_0x3f173c,null))[_0x56e7('0x22')](handleError(_0x3f173c,null));};exports['addSmsAccounts']=function(_0x28142b,_0x55bf32){return db[_0x56e7('0x3f')][_0x56e7('0x3b')]({'where':{'id':_0x28142b[_0x56e7('0x5b')]['id']}})[_0x56e7('0x17')](handleEntityNotFound(_0x55bf32,null))['then'](function(_0x1734be){if(_0x1734be){return _0x1734be[_0x56e7('0x148')](_0x28142b[_0x56e7('0x64')][_0x56e7('0x67')],_[_0x56e7('0x66')](_0x28142b[_0x56e7('0x64')],[_0x56e7('0x67'),'id'])||{});}})[_0x56e7('0x17')](respondWithResult(_0x55bf32,null))['catch'](handleError(_0x55bf32,null));};exports[_0x56e7('0x149')]=function(_0x4229d7,_0x438004){return db[_0x56e7('0x3f')][_0x56e7('0x3b')]({'where':{'id':_0x4229d7['params']['id']}})[_0x56e7('0x17')](handleEntityNotFound(_0x438004,null))[_0x56e7('0x17')](function(_0x3adbf6){if(_0x3adbf6){return _0x3adbf6[_0x56e7('0x149')](_0x4229d7[_0x56e7('0x49')][_0x56e7('0x67')]);}})[_0x56e7('0x17')](respondWithStatusCode(_0x438004,null))[_0x56e7('0x22')](handleError(_0x438004,null));};exports[_0x56e7('0x14a')]=function(_0x4f1a83,_0x423aa7){var _0x52f6df={};var _0x2e7f64={};var _0x9f2fed;var _0x403b1f;return db[_0x56e7('0x3f')][_0x56e7('0x9c')]({'where':{'id':_0x4f1a83[_0x56e7('0x5b')]['id']}})[_0x56e7('0x17')](handleEntityNotFound(_0x423aa7,null))[_0x56e7('0x17')](function(_0x5ee229){if(_0x5ee229){_0x9f2fed=_0x5ee229;_0x2e7f64[_0x56e7('0x5c')]=_[_0x56e7('0x5d')](db[_0x56e7('0x14b')][_0x56e7('0x5e')]);_0x2e7f64[_0x56e7('0x49')]=_['keys'](_0x4f1a83[_0x56e7('0x49')]);_0x2e7f64[_0x56e7('0xd3')]=_[_0x56e7('0x5f')](_0x2e7f64[_0x56e7('0x5c')],_0x2e7f64[_0x56e7('0x49')]);_0x52f6df[_0x56e7('0x4d')]=_[_0x56e7('0x5f')](_0x2e7f64[_0x56e7('0x5c')],qs[_0x56e7('0x60')](_0x4f1a83['query'][_0x56e7('0x60')]));_0x52f6df[_0x56e7('0x4d')]=_0x52f6df[_0x56e7('0x4d')][_0x56e7('0x51')]?_0x52f6df[_0x56e7('0x4d')]:_0x2e7f64['model'];_0x52f6df[_0x56e7('0xd4')]=qs[_0x56e7('0xd5')](_0x4f1a83[_0x56e7('0x49')][_0x56e7('0xd5')]);_0x52f6df['where']=qs['filters'](_[_0x56e7('0xdf')](_0x4f1a83['query'],_0x2e7f64[_0x56e7('0xd3')]));if(_0x4f1a83[_0x56e7('0x49')]['filter']){_0x52f6df[_0x56e7('0x46')]=_[_0x56e7('0x61')](_0x52f6df[_0x56e7('0x46')],{'$or':_[_0x56e7('0x38')](_0x52f6df['attributes'],function(_0x103966){var _0x35efbc={};_0x35efbc[_0x103966]={'$like':'%'+_0x4f1a83[_0x56e7('0x49')][_0x56e7('0x36')]+'%'};return _0x35efbc;})});}_0x52f6df=_[_0x56e7('0x61')]({},_0x52f6df,_0x4f1a83['options']);return _0x9f2fed[_0x56e7('0x14a')](_0x52f6df);}})['then'](function(_0x2f9fca){if(_0x2f9fca){_0x403b1f=_0x2f9fca[_0x56e7('0x51')];if(!_0x4f1a83[_0x56e7('0x49')][_0x56e7('0xd6')](_0x56e7('0xdb'))){_0x52f6df[_0x56e7('0x27')]=qs[_0x56e7('0x27')](_0x4f1a83[_0x56e7('0x49')][_0x56e7('0x27')]);_0x52f6df[_0x56e7('0x26')]=qs['offset'](_0x4f1a83[_0x56e7('0x49')][_0x56e7('0x26')]);}return _0x9f2fed['getChatWebsites'](_0x52f6df);}})[_0x56e7('0x17')](function(_0x20e605){if(_0x20e605){return _0x20e605?{'count':_0x403b1f,'rows':_0x20e605}:null;}})[_0x56e7('0x17')](respondWithResult(_0x423aa7,null))['catch'](handleError(_0x423aa7,null));};exports[_0x56e7('0x14c')]=function(_0x138bbf,_0x5bc7f2){return db[_0x56e7('0x3f')][_0x56e7('0x3b')]({'where':{'id':_0x138bbf[_0x56e7('0x5b')]['id']}})[_0x56e7('0x17')](handleEntityNotFound(_0x5bc7f2,null))[_0x56e7('0x17')](function(_0x41e9bf){if(_0x41e9bf){return _0x41e9bf[_0x56e7('0x14c')](_0x138bbf[_0x56e7('0x64')][_0x56e7('0x67')],_[_0x56e7('0x66')](_0x138bbf[_0x56e7('0x64')],[_0x56e7('0x67'),'id'])||{});}})[_0x56e7('0x17')](respondWithResult(_0x5bc7f2,null))[_0x56e7('0x22')](handleError(_0x5bc7f2,null));};exports[_0x56e7('0x14d')]=function(_0x3df852,_0x16cb8a){return db['User'][_0x56e7('0x3b')]({'where':{'id':_0x3df852[_0x56e7('0x5b')]['id']}})['then'](handleEntityNotFound(_0x16cb8a,null))[_0x56e7('0x17')](function(_0x4f59cb){if(_0x4f59cb){return _0x4f59cb[_0x56e7('0x14d')](_0x3df852[_0x56e7('0x49')][_0x56e7('0x67')]);}})['then'](respondWithStatusCode(_0x16cb8a,null))[_0x56e7('0x22')](handleError(_0x16cb8a,null));};exports[_0x56e7('0x14e')]=function(_0x4cf618,_0x54d49a){var _0x4cbcec={};var _0x21f74f={};var _0x89f11b;var _0x2daf7e;return db[_0x56e7('0x3f')]['findOne']({'where':{'id':_0x4cf618[_0x56e7('0x5b')]['id']}})[_0x56e7('0x17')](handleEntityNotFound(_0x54d49a,null))[_0x56e7('0x17')](function(_0x1bb2ff){if(_0x1bb2ff){_0x89f11b=_0x1bb2ff;_0x21f74f[_0x56e7('0x5c')]=_['keys'](db[_0x56e7('0x14f')][_0x56e7('0x5e')]);_0x21f74f[_0x56e7('0x49')]=_['keys'](_0x4cf618[_0x56e7('0x49')]);_0x21f74f[_0x56e7('0xd3')]=_[_0x56e7('0x5f')](_0x21f74f['model'],_0x21f74f[_0x56e7('0x49')]);_0x4cbcec['attributes']=_[_0x56e7('0x5f')](_0x21f74f[_0x56e7('0x5c')],qs[_0x56e7('0x60')](_0x4cf618[_0x56e7('0x49')][_0x56e7('0x60')]));_0x4cbcec[_0x56e7('0x4d')]=_0x4cbcec[_0x56e7('0x4d')][_0x56e7('0x51')]?_0x4cbcec[_0x56e7('0x4d')]:_0x21f74f[_0x56e7('0x5c')];_0x4cbcec['order']=qs['sort'](_0x4cf618[_0x56e7('0x49')][_0x56e7('0xd5')]);_0x4cbcec[_0x56e7('0x46')]=qs[_0x56e7('0xd3')](_[_0x56e7('0xdf')](_0x4cf618[_0x56e7('0x49')],_0x21f74f[_0x56e7('0xd3')]));if(_0x4cf618[_0x56e7('0x49')]['filter']){_0x4cbcec[_0x56e7('0x46')]=_[_0x56e7('0x61')](_0x4cbcec['where'],{'$or':_[_0x56e7('0x38')](_0x4cbcec[_0x56e7('0x4d')],function(_0x3e6884){var _0x4b9ff6={};_0x4b9ff6[_0x3e6884]={'$like':'%'+_0x4cf618[_0x56e7('0x49')][_0x56e7('0x36')]+'%'};return _0x4b9ff6;})});}_0x4cbcec=_[_0x56e7('0x61')]({},_0x4cbcec,_0x4cf618[_0x56e7('0x62')]);return _0x89f11b[_0x56e7('0x14e')](_0x4cbcec);}})[_0x56e7('0x17')](function(_0x26113c){if(_0x26113c){_0x2daf7e=_0x26113c['length'];if(!_0x4cf618[_0x56e7('0x49')][_0x56e7('0xd6')](_0x56e7('0xdb'))){_0x4cbcec[_0x56e7('0x27')]=qs['limit'](_0x4cf618[_0x56e7('0x49')]['limit']);_0x4cbcec['offset']=qs[_0x56e7('0x26')](_0x4cf618[_0x56e7('0x49')][_0x56e7('0x26')]);}return _0x89f11b[_0x56e7('0x14e')](_0x4cbcec);}})[_0x56e7('0x17')](function(_0x5bc6cd){if(_0x5bc6cd){return _0x5bc6cd?{'count':_0x2daf7e,'rows':_0x5bc6cd}:null;}})[_0x56e7('0x17')](respondWithResult(_0x54d49a,null))[_0x56e7('0x22')](handleError(_0x54d49a,null));};exports['addWhatsappAccounts']=function(_0x3734f4,_0x489f62){return db[_0x56e7('0x3f')][_0x56e7('0x3b')]({'where':{'id':_0x3734f4[_0x56e7('0x5b')]['id']}})[_0x56e7('0x17')](handleEntityNotFound(_0x489f62,null))[_0x56e7('0x17')](function(_0x239f4c){if(_0x239f4c){return _0x239f4c[_0x56e7('0x150')](_0x3734f4[_0x56e7('0x64')]['ids'],_[_0x56e7('0x66')](_0x3734f4[_0x56e7('0x64')],[_0x56e7('0x67'),'id'])||{});}})[_0x56e7('0x17')](respondWithResult(_0x489f62,null))['catch'](handleError(_0x489f62,null));};exports[_0x56e7('0x151')]=function(_0x2dbcb6,_0x347006){return db[_0x56e7('0x3f')][_0x56e7('0x3b')]({'where':{'id':_0x2dbcb6[_0x56e7('0x5b')]['id']}})['then'](handleEntityNotFound(_0x347006,null))[_0x56e7('0x17')](function(_0x254e6b){if(_0x254e6b){return _0x254e6b[_0x56e7('0x151')](_0x2dbcb6[_0x56e7('0x49')]['ids']);}})[_0x56e7('0x17')](respondWithStatusCode(_0x347006,null))[_0x56e7('0x22')](handleError(_0x347006,null));};exports['getScheduledCalls']=function(_0x3e208c,_0x481c0c){var _0x293ff8={},_0x3067db={},_0x5b3112={'count':0x0,'rows':[]};var _0x2ddeea=db[_0x56e7('0x152')][_0x56e7('0x5e')];_0x3067db[_0x56e7('0x5c')]=_[_0x56e7('0x5d')](_0x2ddeea);_0x3067db['query']=_['keys'](_0x3e208c[_0x56e7('0x49')]);_0x3067db[_0x56e7('0xd3')]=_[_0x56e7('0x5f')](_0x3067db[_0x56e7('0x5c')],_0x3067db[_0x56e7('0x49')]);_0x3067db[_0x56e7('0xd3')]=_[_0x56e7('0xd0')](_0x3067db[_0x56e7('0xd3')],[_0x56e7('0x153'),_0x56e7('0x154'),_0x56e7('0x155'),_0x56e7('0x156'),_0x56e7('0x157'),_0x56e7('0x158'),_0x56e7('0x159'),_0x56e7('0x15a'),_0x56e7('0x15b'),_0x56e7('0x15c'),'$notBetween',_0x56e7('0x15d'),'$notIn',_0x56e7('0x15e'),_0x56e7('0x15f'),_0x56e7('0x160'),_0x56e7('0x161'),'$like','$overlap',_0x56e7('0x162'),_0x56e7('0x163'),_0x56e7('0x164')]);_0x293ff8[_0x56e7('0x4d')]=_[_0x56e7('0x5f')](_0x3067db[_0x56e7('0x5c')],qs[_0x56e7('0x60')](_0x3e208c[_0x56e7('0x49')][_0x56e7('0x60')]));_0x293ff8[_0x56e7('0x4d')]=_0x293ff8[_0x56e7('0x4d')][_0x56e7('0x51')]?_0x293ff8['attributes']:_0x3067db[_0x56e7('0x5c')];if(!_0x3e208c['query'][_0x56e7('0xd6')](_0x56e7('0xdb'))){_0x293ff8[_0x56e7('0x27')]=qs[_0x56e7('0x27')](_0x3e208c[_0x56e7('0x49')][_0x56e7('0x27')]);_0x293ff8['offset']=qs[_0x56e7('0x26')](_0x3e208c[_0x56e7('0x49')][_0x56e7('0x26')]);}_0x293ff8[_0x56e7('0xd4')]=qs['sort'](_0x3e208c['query'][_0x56e7('0xd5')]);_0x293ff8[_0x56e7('0x46')]=qs['filters'](_['pick'](_0x3e208c['query'],_0x3067db['filters']));if(_0x3e208c[_0x56e7('0x49')][_0x56e7('0x36')]){_0x293ff8['where']=_['merge'](_0x293ff8[_0x56e7('0x46')],{'$or':_[_0x56e7('0x38')](_0x293ff8['attributes'],function(_0xd2c2e1){var _0x4e3d4d={};_0x4e3d4d[_0xd2c2e1]={'$like':'%'+_0x3e208c['query'][_0x56e7('0x36')]+'%'};return _0x4e3d4d;})});}_0x293ff8[_0x56e7('0x46')]={'$and':[_0x293ff8[_0x56e7('0x46')],{'$or':[{'UserId':_0x3e208c[_0x56e7('0x5b')]['id']},{'OwnerId':_0x3e208c[_0x56e7('0x5b')]['id']}]}]};_0x293ff8=_[_0x56e7('0x61')]({},_0x293ff8,_0x3e208c[_0x56e7('0x62')]);var _0x3e459a={'where':_0x293ff8['where']};return db['CmHopper'][_0x56e7('0x29')](_0x3e459a)[_0x56e7('0x17')](function(_0x5ebba2){_0x5b3112[_0x56e7('0x29')]=_0x5ebba2;if(_0x3e208c[_0x56e7('0x49')][_0x56e7('0x47')]){_0x293ff8[_0x56e7('0x48')]=[{'attributes':['id',_0x56e7('0x165'),'lastName','phone'],'model':db[_0x56e7('0xd2')],'as':_0x56e7('0x166')},{'attributes':['id','name','dialActive'],'model':db[_0x56e7('0xb1')],'as':_0x56e7('0xdc')}];}return db[_0x56e7('0x152')][_0x56e7('0x4e')](_0x293ff8);})[_0x56e7('0x17')](function(_0x121b67){_0x5b3112['rows']=_0x121b67;return _0x5b3112;})['then'](respondWithFilteredResult(_0x481c0c,_0x293ff8))[_0x56e7('0x22')](handleError(_0x481c0c,null));};exports[_0x56e7('0x167')]=function(_0x2aeac0,_0x390c6d){if(!_[_0x56e7('0x6c')](_0x2aeac0[_0x56e7('0x33')]['id'])&&(_0x2aeac0[_0x56e7('0x33')][_0x56e7('0x31')]=='admin'||_0x2aeac0[_0x56e7('0x33')][_0x56e7('0x31')]==_0x56e7('0x33'))){return db[_0x56e7('0x3f')]['findOne']({'where':{'id':_0x2aeac0[_0x56e7('0x5b')]['id']},'raw':!![]})[_0x56e7('0x17')](function(_0x1f8f29){return authService['retrieveApiKey'](_0x1f8f29);})['then'](function(_0xd4c699){if(_0xd4c699){return _0x390c6d[_0x56e7('0x24')](0xc8)[_0x56e7('0x25')]({'api_key':_0xd4c699[_0x56e7('0x168')]});}else{return _0x390c6d[_0x56e7('0x24')](0xcc)[_0x56e7('0x25')]({'message':_0x56e7('0x169')});}})[_0x56e7('0x22')](handleError(_0x390c6d,0x193));}else{return _0x390c6d[_0x56e7('0x24')](0x191)[_0x56e7('0x25')]({'message':_0x56e7('0x16a')});}};exports[_0x56e7('0x16b')]=function(_0x4219ae,_0x5c7c18){if(!_[_0x56e7('0x6c')](_0x4219ae[_0x56e7('0x33')]['id'])&&(_0x4219ae[_0x56e7('0x33')]['role']=='admin'||_0x4219ae[_0x56e7('0x33')][_0x56e7('0x31')]==_0x56e7('0x33'))){return db[_0x56e7('0x3f')][_0x56e7('0x3b')]({'where':{'id':_0x4219ae[_0x56e7('0x5b')]['id']}})[_0x56e7('0x17')](function(_0x160ce3){return authService[_0x56e7('0x16c')](_0x160ce3);})[_0x56e7('0x17')](function(_0x1f3e47){return db[_0x56e7('0x3f')]['update']({'apiKeyIat':_0x1f3e47['iat'],'apiKeyNonce':_0x1f3e47[_0x56e7('0x16d')]},{'where':{'id':_0x4219ae[_0x56e7('0x5b')]['id']}})['then'](function(){return _0x5c7c18[_0x56e7('0x24')](0xc8)[_0x56e7('0x25')]({'api_key':_0x1f3e47[_0x56e7('0x168')]});});})[_0x56e7('0x22')](handleError(_0x5c7c18,0x193));}else{return _0x5c7c18[_0x56e7('0x24')](0x191)[_0x56e7('0x25')]({'message':_0x56e7('0x16a')});}};exports[_0x56e7('0x16e')]=function(_0x4aa3aa,_0x56d778){if(!_[_0x56e7('0x6c')](_0x4aa3aa[_0x56e7('0x33')]['id'])&&(_0x4aa3aa[_0x56e7('0x33')]['role']=='admin'||_0x4aa3aa[_0x56e7('0x33')][_0x56e7('0x31')]=='user')){return db['User'][_0x56e7('0x3b')]({'where':{'id':_0x4aa3aa['params']['id']}})[_0x56e7('0x17')](handleEntityNotFound(_0x56d778,null))[_0x56e7('0x17')](function(_0x284707){if(_0x284707&&_0x284707[_0x56e7('0x16f')]&&_0x284707[_0x56e7('0x170')])return _0x284707;else throw{'message':_0x56e7('0x171')};})[_0x56e7('0x17')](function(){return db[_0x56e7('0x3f')][_0x56e7('0x2c')]({'apiKeyNonce':null,'apiKeyIat':null},{'where':{'id':_0x4aa3aa[_0x56e7('0x5b')]['id']}});})[_0x56e7('0x17')](respondWithStatusCode(_0x56d778,0xc8))[_0x56e7('0x22')](handleError(_0x56d778,0x193));}else{return _0x56d778[_0x56e7('0x24')](0x191)['json']({'message':_0x56e7('0x16a')});}};exports[_0x56e7('0x172')]=function(_0x488ba5,_0xeea8a4){var _0x52fcc1=_0x488ba5['user'][_0x56e7('0x30')]({'plain':!![]});if(!_0x52fcc1){return _0xeea8a4[_0x56e7('0x24')](0x191)[_0x56e7('0x173')](_0x56e7('0x174'));}else{Promise['resolve']()[_0x56e7('0x17')](function(){if(_0x488ba5[_0x56e7('0x49')][_0x56e7('0x4a')]!==_0x56e7('0x4b'))return;return _0x488ba5[_0x56e7('0x33')]['getUserSetting']();})[_0x56e7('0x17')](function(_0x37e80f){if(!_0x37e80f)return;return _0x37e80f[_0x56e7('0x30')]({'plain':!![]});})[_0x56e7('0x17')](function(_0x3158c0){_0x52fcc1[_0x56e7('0x4a')]=_0x3158c0;return _0xeea8a4['status'](0xc8)[_0x56e7('0x25')](_0x52fcc1);});}};exports[_0x56e7('0x175')]=function(_0xb70651,_0x46e9b2){var _0x64f173={'offset':0x0},_0x107dca={'count':0x0,'rows':[]};Promise['resolve']()[_0x56e7('0x17')](function(){if(!_0xb70651[_0x56e7('0x49')][_0x56e7('0x36')]&&!_0xb70651[_0x56e7('0x49')]['teams']&&!_0xb70651['query']['queues'])return[];return Promise[_0x56e7('0x105')]()[_0x56e7('0x17')](function(){var _0x483110=[];if(!_['isEmpty'](_0xb70651['query']['teams'])){_0x483110[_0x56e7('0x55')](db[_0x56e7('0x117')]['findAll']({'attributes':['id',_0x56e7('0x3c')],'where':{'id':_0xb70651[_0x56e7('0x49')]['teams']}}));}if(!_[_0x56e7('0x91')](_0xb70651['query'][_0x56e7('0x176')])){_0x483110[_0x56e7('0x55')](db[_0x56e7('0xb1')][_0x56e7('0x4e')]({'attributes':['id','name'],'type':_0x56e7('0x177'),'where':{'id':_0xb70651[_0x56e7('0x49')][_0x56e7('0x176')]}}));}return Promise[_0x56e7('0x59')](_0x483110);})[_0x56e7('0x17')](function(_0x4e8104){var _0x222473=_[_0x56e7('0x178')](_0x4e8104)[_0x56e7('0x38')](function(_0x29e2ca){return _0x29e2ca[_0x56e7('0x122')]({'attributes':['id',_0x56e7('0x3c'),_0x56e7('0x6d'),'online'],'raw':!![]});});return Promise[_0x56e7('0x59')](_0x222473);})[_0x56e7('0x17')](function(_0x5c38ca){var _0x140392=_[_0x56e7('0x178')](_0x5c38ca);if(!_0xb70651[_0x56e7('0x49')][_0x56e7('0x36')])return _0x140392;if(_[_0x56e7('0x91')](_0x140392)){return db[_0x56e7('0x3f')][_0x56e7('0x4e')]({'attributes':['id',_0x56e7('0x3c'),_0x56e7('0x6d'),_0x56e7('0xa4')],'where':{'role':_0x56e7('0x34'),'$or':[db[_0x56e7('0x6f')][_0x56e7('0x46')](db[_0x56e7('0x6f')]['fn']('lower',db[_0x56e7('0x6f')][_0x56e7('0x179')](_0x56e7('0x3c'))),{'$like':'%'+_0xb70651[_0x56e7('0x49')][_0x56e7('0x36')][_0x56e7('0xaa')]()+'%'}),{'internal':{'$like':'%'+_0xb70651[_0x56e7('0x49')][_0x56e7('0x36')]+'%'}}]},'raw':!![]});}else{return _(_0x140392)[_0x56e7('0x178')]()[_0x56e7('0x36')](function(_0x36ff40){return _0x36ff40[_0x56e7('0x3c')]['toLowerCase']()['includes'](_0xb70651[_0x56e7('0x49')][_0x56e7('0x36')]['toLowerCase']())||_0x36ff40[_0x56e7('0x6d')][_0x56e7('0x17a')]()[_0x56e7('0x3a')](_0xb70651[_0x56e7('0x49')]['filter']);})[_0x56e7('0x39')]();}})[_0x56e7('0x17')](function(_0x4c6c63){var _0x5d7668=_0x56e7('0x3c');var _0x38a3d7=_0x56e7('0x17b');if(_0xb70651[_0x56e7('0x49')][_0x56e7('0xd5')]){_0x38a3d7=_0xb70651[_0x56e7('0x49')][_0x56e7('0xd5')][0x0]==='-'?_0x56e7('0x17c'):'asc';_0x5d7668=_0x38a3d7===_0x56e7('0x17b')?_0xb70651[_0x56e7('0x49')]['sort']:_0xb70651[_0x56e7('0x49')][_0x56e7('0xd5')]['substring'](0x1);}return _(_0x4c6c63)[_0x56e7('0x17d')]('id')[_0x56e7('0x17e')]([function(_0x3b6a81){return _0x5d7668===_0x56e7('0x3c')?_0x3b6a81[_0x5d7668][_0x56e7('0xaa')]():_0x3b6a81[_0x5d7668];}],[_0x38a3d7])[_0x56e7('0x38')](function(_0x46b014){return _['pick'](_0x46b014,['id',_0x56e7('0x3c'),_0x56e7('0x6d'),_0x56e7('0xa4')]);})[_0x56e7('0x39')]();})[_0x56e7('0x17')](function(_0x1e0bba){return amiClient[_0x56e7('0x16')](_0x56e7('0x90'),_0xb70651)[_0x56e7('0x17')](function(_0x17613a){if(_0x17613a[_0x56e7('0x1e')])throw new Error(_0x56e7('0x17f'));var _0x10af1e=_0x17613a[_0x56e7('0x21')];var _0xba9f87=jayson[_0x56e7('0x14')][_0x56e7('0x15')]({'port':0x232c});return _0xba9f87[_0x56e7('0x16')](_0x56e7('0x90'),_0xb70651)['then'](function(_0x70e7d){if(_0x70e7d[_0x56e7('0x1e')])throw new Error(_0x56e7('0x180'));var _0x559ec1=_0x70e7d[_0x56e7('0x21')];return _[_0x56e7('0x61')]({},_0x559ec1,_0x10af1e);});})[_0x56e7('0x17')](function(_0x3424d7){return _[_0x56e7('0x38')](_0x1e0bba,function(_0x18dc9f){var _0x5effa1=_[_0x56e7('0x3b')](_0x3424d7[_0x56e7('0x50')],['id',_0x18dc9f['id']]);if(!_0x5effa1||!_0x18dc9f[_0x56e7('0xa4')]){_0x18dc9f[_0x56e7('0x24')]='offline';}else if(_0x5effa1[_0x56e7('0x181')]){_0x18dc9f['status']=_0x56e7('0x107');}else{_0x18dc9f['status']=_[_0x56e7('0x3a')]([_0x56e7('0x182'),_0x56e7('0x183'),_0x56e7('0x184'),_0x56e7('0x185'),null,undefined],_0x5effa1[_0x56e7('0x186')])?_0x56e7('0xa4'):'busy';}return _0x18dc9f;});});});})[_0x56e7('0x17')](function(_0x575a41){if(!_0xb70651['query'][_0x56e7('0xd6')](_0x56e7('0xdb'))){_0x64f173['limit']=qs['limit'](_0xb70651['query'][_0x56e7('0x27')]||0xa);_0x64f173[_0x56e7('0x26')]=qs[_0x56e7('0x26')](_0xb70651['query'][_0x56e7('0x26')]);}_0x107dca[_0x56e7('0x29')]=_0x575a41[_0x56e7('0x51')];_0x107dca[_0x56e7('0x50')]=_0x64f173[_0x56e7('0x27')]?_0x575a41['slice'](_0x64f173['offset'],_0x64f173[_0x56e7('0x26')]+_0x64f173[_0x56e7('0x27')]):_0x575a41;return _0x107dca;})[_0x56e7('0x17')](respondWithFilteredResult(_0x46e9b2,_0x64f173))[_0x56e7('0x22')](handleError(_0x46e9b2,null));};function get_open_tabs(_0x2aaca6,_0x29bb41){var _0x3976da=_0x2aaca6[_0x56e7('0x187')](0x0)['toUpperCase']()+_0x2aaca6[_0x56e7('0x188')](0x1);var _0x32ac1e={'type':db[_0x56e7('0x96')][_0x56e7('0x189')][_0x56e7('0x71')],'raw':!![]};return new Promise(function(_0xbd40d6,_0x23dae9){var _0x2b7cc2=squel[_0x56e7('0x18a')]()['field'](_0x56e7('0x18b')+_0x3976da+_0x56e7('0x18c'),'id')[_0x56e7('0x18d')](_0x56e7('0x18e'))[_0x56e7('0x72')](_0x56e7('0x18f')+_0x2aaca6+_0x56e7('0x190'),'ui')[_0x56e7('0x46')](_0x56e7('0x191'),_0x29bb41['id']);return db[_0x56e7('0x6f')]['query'](_0x2b7cc2[_0x56e7('0x17a')](),_0x32ac1e)[_0x56e7('0x17')](function(_0xd0ed7c){_0x29bb41[_0x3976da+_0x56e7('0x192')]=_0xd0ed7c;_0xbd40d6(_0xd0ed7c);})[_0x56e7('0x22')](function(_0x1289d6){_0x23dae9(_0x1289d6);});});}
\ No newline at end of file
index 5b230f9..81f1529 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0x66b3=['emit','events','../../mysqldb','save'];(function(_0x563eb4,_0x29bbae){var _0x97db86=function(_0x5f144f){while(--_0x5f144f){_0x563eb4['push'](_0x563eb4['shift']());}};_0x97db86(++_0x29bbae);}(_0x66b3,0x13d));var _0x366b=function(_0x20fbde,_0x3b2f68){_0x20fbde=_0x20fbde-0x0;var _0x499964=_0x66b3[_0x20fbde];return _0x499964;};'use strict';var EventEmitter=require(_0x366b('0x0'));var User=require(_0x366b('0x1'))['db']['User'];var UserEvents=new EventEmitter();UserEvents['setMaxListeners'](0x0);var events={'afterCreate':_0x366b('0x2'),'afterUpdate':'update','afterDestroy':'remove'};function emitEvent(_0xb60e15){return function(_0x1ce7e1,_0x1c19a6,_0x24fe6b){UserEvents[_0x366b('0x3')](_0xb60e15+':'+_0x1ce7e1['id'],_0x1ce7e1);UserEvents['emit'](_0xb60e15,_0x1ce7e1);_0x24fe6b(null);};}for(var e in events){if(events['hasOwnProperty'](e)){var event=events[e];User['hook'](e,emitEvent(event));}}module['exports']=UserEvents;
\ No newline at end of file
index 29aca85..3c53579 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0x0e17=['util','md5','moment','lodash','jayson/promise','./user.attributes','google','length','context','from-sip','system','format','%s%s','push','merge','chanspy','MixMonitor','${UNIQUEID}.%s,a','recordingFormat','auth','Authenticate','password','ChanSpy','SIP/%s,%s','name','options','join','record','wav','WAV','gsm','Set','CDR(type)=internal','extensionMonitor','includes','_XCALLY_MIXMONITOR_UNIQUEID=${UNIQUEID}','_XCALLY_MIXMONITOR_FORMAT=%s','Dial','Hangup','priority','defaults','findAll','internal','catch','exports','models','define','User','utf8','utf8_bin','userProfileId','resolve','UserProfile','find','then','updateMd5Password','updatePassword','changed','privacyEnabled','concat','createUserSetting','error','bulkCreate','VoiceExtension','destroy','encryptPassword','function','Missing\x20Callback','randomBytes','toString','from','salt','base64','sha1','pbkdf2','indexOf','provider','Invalid\x20password','makeSalt',':asterisk:','md5secret','client','request','Agents','Unable\x20to\x20retrieve\x20RPC\x20agent\x20(Routing)','result','voice','http','QueuePause','findOne','PAUSE','channel','MemberReport','map','update','YYYY-MM-DD\x20HH:mm:ss','voicePause','mailPause','chatPause','faxPause','whatsappPause','openchannelPause','Pause','getRealtimeData','../../config/utils','Status','bluebird','crypto'];(function(_0x45783c,_0x49c56d){var _0x1161da=function(_0x3c5d41){while(--_0x3c5d41){_0x45783c['push'](_0x45783c['shift']());}};_0x1161da(++_0x49c56d);}(_0x0e17,0xd6));var _0x70e1=function(_0x48ceed,_0xb8f30f){_0x48ceed=_0x48ceed-0x0;var _0x38fed0=_0x0e17[_0x48ceed];return _0x38fed0;};'use strict';var BPromise=require(_0x70e1('0x0'));var crypto=require(_0x70e1('0x1'));var util=require(_0x70e1('0x2'));var md5=require(_0x70e1('0x3'));var moment=require(_0x70e1('0x4'));var _=require(_0x70e1('0x5'));var jayson=require(_0x70e1('0x6'));var attributes=require(_0x70e1('0x7'));var authTypes=[_0x70e1('0x8')];var validatePresenceOf=function(_0x2c62b8){return _0x2c62b8&&_0x2c62b8[_0x70e1('0x9')];};var getChanSpyApplications=function(_0x1df334,_0x4cb0b1,_0xc64213){var _0x16a2ad={'context':_0x1df334[_0x70e1('0xa')]||_0x70e1('0xb'),'type':_0x70e1('0xc'),'isApp':![],'UserId':_0x1df334['id']};var _0x2c45c3=[];for(var _0x5ac686=0x0,_0x58d96a=0x1;_0x5ac686<_0xc64213[_0x70e1('0x9')];_0x5ac686++,_0x58d96a=0x1){var _0x4fc01f={'exten':util[_0x70e1('0xd')](_0x70e1('0xe'),_0xc64213[_0x5ac686]['prefix'],_0x4cb0b1),'ChanSpyId':_0xc64213[_0x5ac686]['id']};_0x2c45c3[_0x70e1('0xf')](_[_0x70e1('0x10')]({'app':'Set','appdata':util[_0x70e1('0xd')]('CDR(type)=%s',_0x70e1('0x11')),'priority':_0x58d96a++},_0x16a2ad,_0x4fc01f));if(_0xc64213[_0x5ac686]['record']){_0x2c45c3[_0x70e1('0xf')](_[_0x70e1('0x10')]({'app':_0x70e1('0x12'),'appdata':util[_0x70e1('0xd')](_0x70e1('0x13'),_0xc64213[_0x5ac686][_0x70e1('0x14')]),'priority':_0x58d96a++},_0x16a2ad,_0x4fc01f));}if(_0xc64213[_0x5ac686][_0x70e1('0x15')]){_0x2c45c3[_0x70e1('0xf')](_[_0x70e1('0x10')]({'app':_0x70e1('0x16'),'appdata':_0xc64213[_0x5ac686][_0x70e1('0x17')],'priority':_0x58d96a++},_0x16a2ad,_0x4fc01f));}_0x2c45c3['push'](_[_0x70e1('0x10')]({'app':_0x70e1('0x18'),'appdata':util[_0x70e1('0xd')](_0x70e1('0x19'),_0x1df334[_0x70e1('0x1a')],_0xc64213[_0x5ac686][_0x70e1('0x1b')]?_0xc64213[_0x5ac686][_0x70e1('0x1b')][_0x70e1('0x1c')](''):''),'priority':_0x58d96a++},_0x16a2ad,_0x4fc01f));if(_0xc64213[_0x5ac686][_0x70e1('0x1d')]){_0x2c45c3[_0x70e1('0xf')](_[_0x70e1('0x10')]({'app':'StopMixMonitor','priority':_0x58d96a++},_0x16a2ad,_0x4fc01f));}}return _0x2c45c3;};var getUserApplications=function(_0x5a7f4e,_0x1002b6){var _0x2234a4=[_0x70e1('0x1e'),_0x70e1('0x1f'),_0x70e1('0x20')];var _0x2d9130={'context':_0x5a7f4e[_0x70e1('0xa')]||_0x70e1('0xb'),'exten':_0x1002b6,'type':_0x70e1('0xc'),'isApp':![],'UserId':_0x5a7f4e['id']};var _0x42400c=[{'app':_0x70e1('0x21'),'appdata':_0x70e1('0x22')}];if(_0x5a7f4e[_0x70e1('0x23')]&&_[_0x70e1('0x24')](_0x2234a4,_0x5a7f4e[_0x70e1('0x23')])){_0x42400c[_0x70e1('0xf')]({'app':'Set','appdata':_0x70e1('0x25')});_0x42400c['push']({'app':'Set','appdata':util[_0x70e1('0xd')](_0x70e1('0x26'),_0x5a7f4e[_0x70e1('0x23')])});_0x42400c[_0x70e1('0xf')]({'app':_0x70e1('0x27'),'appdata':util[_0x70e1('0xd')]('SIP/%s,,tTxXU(xcally-mixmonitor-context)',_0x5a7f4e[_0x70e1('0x1a')])});}else{_0x42400c[_0x70e1('0xf')]({'app':_0x70e1('0x27'),'appdata':util[_0x70e1('0xd')]('SIP/%s,,tTxX',_0x5a7f4e[_0x70e1('0x1a')])});}_0x42400c[_0x70e1('0xf')]({'app':_0x70e1('0x28')});for(var _0x57ca4e=0x0;_0x57ca4e<_0x42400c[_0x70e1('0x9')];_0x57ca4e++){_0x42400c[_0x57ca4e][_0x70e1('0x29')]=_0x57ca4e+0x1;_0x42400c[_0x57ca4e]=_[_0x70e1('0x2a')](_0x42400c[_0x57ca4e],_0x2d9130);}return _0x42400c;};var getChanSpyPromise=function(_0x22a814,_0x40c316){return new BPromise(function(_0x33aab0,_0x49a5a9){return _0x22a814['VoiceChanSpy'][_0x70e1('0x2b')]()['then'](function(_0x5bc816){if(_0x5bc816){var _0x1e84b0=getChanSpyApplications(_0x40c316,_0x40c316[_0x70e1('0x2c')],_0x5bc816);if(_0x40c316[_0x70e1('0x2c')]!=_0x40c316['name']){_0x1e84b0=_0x1e84b0['concat'](getChanSpyApplications(_0x40c316,_0x40c316['name'],_0x5bc816));}return _0x33aab0(_0x1e84b0);}return _0x33aab0([]);})[_0x70e1('0x2d')](function(_0x401a06){_0x49a5a9(_0x401a06);});});};module[_0x70e1('0x2e')]=function(_0x3069fb){var _0x3679a7=_0x3069fb[_0x70e1('0x2f')];return _0x3069fb[_0x70e1('0x30')](_0x70e1('0x31'),attributes,{'tableName':'users','charset':_0x70e1('0x32'),'collate':_0x70e1('0x33'),'hooks':{'beforeCreate':function(_0x4f4430,_0x1e09fe,_0xff98fb){var _0x3352ae=typeof _0x4f4430[_0x70e1('0x34')]==='undefined'?BPromise[_0x70e1('0x35')](null):_0x3679a7[_0x70e1('0x36')][_0x70e1('0x37')]({'where':{'id':_0x4f4430[_0x70e1('0x34')]}});_0x3352ae[_0x70e1('0x38')](function(_0x3ee7fb){if(_0x3ee7fb){_0x4f4430['privacyEnabled']=_0x3ee7fb['privacyEnabled'];}})['then'](function(){_0x4f4430[_0x70e1('0x39')]();_0x4f4430[_0x70e1('0x3a')](_0xff98fb);})[_0x70e1('0x2d')](function(_0x5ce87c){_0xff98fb(_0x5ce87c);});},'beforeUpdate':function(_0x515f62,_0x38afa4,_0x29b5a6){Promise['resolve']()[_0x70e1('0x38')](function(){if(_0x515f62[_0x70e1('0x3b')](_0x70e1('0x34'))===![])return;return _0x3679a7[_0x70e1('0x36')][_0x70e1('0x37')]({'where':{'id':_0x515f62[_0x70e1('0x34')]}})[_0x70e1('0x38')](function(_0x389c68){if(_0x389c68)_0x515f62['privacyEnabled']=_0x389c68[_0x70e1('0x3c')];return;});})[_0x70e1('0x38')](function(){if(_0x515f62['changed']('password')){_0x515f62['updateMd5Password']();return _0x515f62['updatePassword'](_0x29b5a6);}_0x29b5a6();})[_0x70e1('0x2d')](function(_0x4429eb){_0x29b5a6(_0x4429eb);});},'afterCreate':function(_0x8f2d4f,_0x2b600c,_0xc208dc){var _0x427e0a=getUserApplications(_0x8f2d4f,_0x8f2d4f[_0x70e1('0x2c')]);if(_0x8f2d4f[_0x70e1('0x2c')]!=_0x8f2d4f[_0x70e1('0x1a')]){_0x427e0a=_0x427e0a[_0x70e1('0x3d')](getUserApplications(_0x8f2d4f,_0x8f2d4f['name']));}return Promise[_0x70e1('0x35')]()[_0x70e1('0x38')](function(){if(!_0x8f2d4f['userSetting']){return _0x8f2d4f[_0x70e1('0x3e')]({'clientSideLoggingLevel':_0x70e1('0x3f'),'clientSideLoggingEnabled':![]});}})['then'](function(){return _0x3679a7['VoiceExtension'][_0x70e1('0x40')](_0x427e0a);})['then'](function(){if(_0x8f2d4f['chanspy']){return getChanSpyPromise(_0x3679a7,_0x8f2d4f);}})[_0x70e1('0x38')](function(_0x5c903d){if(_0x5c903d&&_0x5c903d[_0x70e1('0x9')]){return _0x3679a7['VoiceExtension'][_0x70e1('0x40')](_0x5c903d);}})['then'](function(){_0xc208dc();})['catch'](function(_0x1ad9d3){_0xc208dc(_0x1ad9d3);});},'afterUpdate':function(_0x443804,_0x3c9a98,_0x126486){return BPromise[_0x70e1('0x35')]()[_0x70e1('0x38')](function(){if(_0x443804[_0x70e1('0x3b')]('chanspy')||_0x443804[_0x70e1('0x3b')](_0x70e1('0xa'))){return _0x3679a7[_0x70e1('0x41')][_0x70e1('0x42')]({'where':{'UserId':_0x443804['id'],'type':'system','ChanSpyId':{'$ne':null}}})['then'](function(){if(_0x443804[_0x70e1('0x11')]){return getChanSpyPromise(_0x3679a7,_0x443804)[_0x70e1('0x38')](function(_0x595d69){if(_0x595d69&&_0x595d69[_0x70e1('0x9')]){return _0x3679a7['VoiceExtension'][_0x70e1('0x40')](_0x595d69);}});}});}})['then'](function(){if(_0x443804[_0x70e1('0x3b')](_0x70e1('0x23'))||_0x443804['changed'](_0x70e1('0xa'))){return _0x3679a7[_0x70e1('0x41')]['destroy']({'where':{'UserId':_0x443804['id'],'type':_0x70e1('0xc'),'ChanSpyId':null}})[_0x70e1('0x38')](function(){var _0x20c335=getUserApplications(_0x443804,_0x443804[_0x70e1('0x2c')]);if(_0x443804[_0x70e1('0x2c')]!=_0x443804['name']){_0x20c335=_0x20c335[_0x70e1('0x3d')](getUserApplications(_0x443804,_0x443804[_0x70e1('0x1a')]));}return _0x3679a7[_0x70e1('0x41')][_0x70e1('0x40')](_0x20c335);});}})[_0x70e1('0x38')](function(){_0x126486();})[_0x70e1('0x2d')](function(_0x21897e){_0x126486(_0x21897e);});},'afterDestroy':function(_0x2229ca){return _0x3679a7[_0x70e1('0x41')][_0x70e1('0x42')]({'where':{'UserId':_0x2229ca['id'],'type':_0x70e1('0xc')}});}},'instanceMethods':{'authenticate':function(_0xf30d81,_0x3fa968){if(!_0x3fa968){return this[_0x70e1('0x17')]===this[_0x70e1('0x43')](_0xf30d81);}var _0x25e431=this;this[_0x70e1('0x43')](_0xf30d81,function(_0x1de95e,_0x3d409f){if(_0x1de95e){_0x3fa968(_0x1de95e);}if(_0x25e431[_0x70e1('0x17')]===_0x3d409f){_0x3fa968(null,!![]);}else{_0x3fa968(null,![]);}});},'makeSalt':function(_0x5924b8,_0x37095b){var _0x4bb827=0x10;if(typeof arguments[0x0]===_0x70e1('0x44')){_0x37095b=arguments[0x0];_0x5924b8=_0x4bb827;}else if(typeof arguments[0x1]===_0x70e1('0x44')){_0x37095b=arguments[0x1];}else{throw new Error(_0x70e1('0x45'));}if(!_0x5924b8){_0x5924b8=_0x4bb827;}return crypto[_0x70e1('0x46')](_0x5924b8,function(_0x3311f6,_0x257fa6){if(_0x3311f6){_0x37095b(_0x3311f6);}return _0x37095b(null,_0x257fa6[_0x70e1('0x47')]('base64'));});},'encryptPassword':function(_0x446c86,_0x5e9777){if(!_0x446c86||!this['salt']){return _0x5e9777?_0x5e9777(null):null;}var _0x13339c=0x2710;var _0x8e50ae=0x40;var _0x10cee0=Buffer[_0x70e1('0x48')](this[_0x70e1('0x49')],_0x70e1('0x4a'));if(!_0x5e9777){return crypto['pbkdf2Sync'](_0x446c86,_0x10cee0,_0x13339c,_0x8e50ae,_0x70e1('0x4b'))[_0x70e1('0x47')](_0x70e1('0x4a'));}return crypto[_0x70e1('0x4c')](_0x446c86,_0x10cee0,_0x13339c,_0x8e50ae,_0x70e1('0x4b'),function(_0x303ea6,_0x2f6c45){if(_0x303ea6){_0x5e9777(_0x303ea6);}return _0x5e9777(null,_0x2f6c45[_0x70e1('0x47')](_0x70e1('0x4a')));});},'updatePassword':function(_0xa2b7d3){if(!this[_0x70e1('0x17')]){return _0xa2b7d3(null);}if(!validatePresenceOf(this[_0x70e1('0x17')])&&authTypes[_0x70e1('0x4d')](this[_0x70e1('0x4e')])===-0x1){_0xa2b7d3(new Error(_0x70e1('0x4f')));}var _0x53f2a3=this;this[_0x70e1('0x50')](function(_0x3d91b5,_0x3d3e6e){if(_0x3d91b5){return _0xa2b7d3(_0x3d91b5);}_0x53f2a3[_0x70e1('0x49')]=_0x3d3e6e;_0x53f2a3[_0x70e1('0x43')](_0x53f2a3['password'],function(_0x36f3bd,_0x1627c1){if(_0x36f3bd){_0xa2b7d3(_0x36f3bd);}_0x53f2a3['password']=_0x1627c1;_0xa2b7d3(null);});});},'updateMd5Password':function(){this['md5secret']=md5(this['name']+_0x70e1('0x51')+this['password']);return this[_0x70e1('0x52')];},'getRealtimeData':function(){var _0x194ffc={'id':this['id']};var _0x43dcc9=jayson[_0x70e1('0x53')]['http']({'port':0x232a});var _0x1cb64d=jayson[_0x70e1('0x53')]['http']({'port':0x232c});var _0x5e45d0={};var _0x141685={};return _0x43dcc9[_0x70e1('0x54')](_0x70e1('0x55'),_0x194ffc)[_0x70e1('0x38')](function(_0x4457f9){if(_0x4457f9[_0x70e1('0x3f')]){throw new Error('Unable\x20to\x20retrieve\x20RPC\x20agent\x20(AMI)');}_0x5e45d0=_0x4457f9['result'];return _0x1cb64d[_0x70e1('0x54')](_0x70e1('0x55'),_0x194ffc);})[_0x70e1('0x38')](function(_0x391dd9){if(_0x391dd9[_0x70e1('0x3f')]){throw new Error(_0x70e1('0x56'));}_0x141685=_0x391dd9[_0x70e1('0x57')];var _0x2a198a=_[_0x70e1('0x10')]({},_0x5e45d0,_0x141685);return _0x2a198a;})[_0x70e1('0x2d')](function(_0x1655bc){throw _0x1655bc;});},'unpause':function(_0x4ef6b1,_0xbceac9='manual'){var _0x469a81=this;var _0x29945d={};return Promise[_0x70e1('0x35')]()['then'](function(){if(!_0x4ef6b1||_0x4ef6b1===_0x70e1('0x58')&&_0xbceac9==='manual'){var _0x2f0fba=jayson[_0x70e1('0x53')][_0x70e1('0x59')]({'port':0x232a});return _0x2f0fba[_0x70e1('0x54')](_0x70e1('0x5a'),{'id':_0x469a81['id'],'name':_0x469a81[_0x70e1('0x1a')],'pause':![]})[_0x70e1('0x38')](function(_0x2bf3b2){if(_0x2bf3b2[_0x70e1('0x3f')]){throw new Error(util['format']('Unable\x20to\x20unpause\x20agent\x20%s:$s',_0x469a81['id'],_0x469a81[_0x70e1('0x1a')]));}return _0x2bf3b2['result']['message'];});}})[_0x70e1('0x38')](function(){if(!_0x4ef6b1||_0x4ef6b1===_0x70e1('0x58')){return _0x3679a7['UserVoiceQueueRt']['update']({'paused':0x0},{'where':{'UserId':_0x469a81['id']},'individualHooks':!![]});}})[_0x70e1('0x38')](function(){var _0x3ce5f2=!_0x4ef6b1?_0x70e1('0x2b'):_0x70e1('0x5b');var _0x408ebc={'membername':_0x469a81['name'],'type':_0x70e1('0x5c'),'exitAt':null};if(_0x4ef6b1){_0x408ebc[_0x70e1('0x5d')]=_0x4ef6b1;}return _0x3679a7[_0x70e1('0x5e')][_0x3ce5f2]({'where':_0x408ebc});})[_0x70e1('0x38')](function(_0x3c736b){if(_0x3c736b){var _0x3b2af7=Array['isArray'](_0x3c736b)?_0x3c736b:[_0x3c736b];var _0x3cd605=_0x3b2af7[_0x70e1('0x5f')](function(_0x2e21a3){return _0x2e21a3[_0x70e1('0x60')]({'exitAt':moment()[_0x70e1('0xd')](_0x70e1('0x61')),'data2':_0xbceac9});});return Promise['all'](_0x3cd605);}})[_0x70e1('0x38')](function(){if(!_0x4ef6b1){_0x29945d[_0x70e1('0x62')]=![];_0x29945d[_0x70e1('0x63')]=![];_0x29945d[_0x70e1('0x64')]=![];_0x29945d[_0x70e1('0x65')]=![];_0x29945d['smsPause']=![];_0x29945d[_0x70e1('0x66')]=![];_0x29945d[_0x70e1('0x67')]=![];}else{_0x29945d[_0x4ef6b1+_0x70e1('0x68')]=![];}return _0x469a81[_0x70e1('0x69')]();})['then'](function(_0x10ed71){var _0xdc3b3a=require(_0x70e1('0x6a'));var _0x124b01=_0xdc3b3a['getChannels']();_0x124b01['forEach'](function(_0x431de3){var _0x24fc38=_0x431de3+_0x70e1('0x6b');_0x469a81['setDataValue']([_0x24fc38],_0x10ed71[_0x24fc38]);});return _0x469a81['update'](_0x29945d);})[_0x70e1('0x2d')](function(_0x425735){throw _0x425735;});}}});};
\ No newline at end of file
index c16283a..bd6141f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0x15b3=['getChannels','forEach','push','format','SIP/%s','PAUSE','DEFAULT\x20PAUSE','role','internal','body','bulkCreate','type','UnpauseUser','channel','isValidChannel','Channel\x20parameter\x20%s\x20is\x20invalid','findOne','online','mailPause','faxPause','openchannelPause','smsPause','whatsappPause','lastPauseAt','params','unpause','LogoutUser','destroy','all','LoginUser','mobile','phone','loginInPause','count','agent','getLicense','agents','Maximum\x20login\x20has\x20been\x20reached','getVoiceQueues','upsert','UserVoiceQueue.penalty','merge','callysquare','LOGININPAUSE','lodash','util','moment','bluebird','ioredis','../../config/utils','../../config/logger','rpc','../../config/environment','redis','defaults','localhost','socket.io-emitter','./user.socket','GetUser','User','options','raw','where','attributes','include','map','model','then','stringify','catch','message','error','ShowUser','find','info','debug','name','interface','UserVoiceQueueRt','update','MemberReport','findAll','length','YYYY-MM-DD\x20HH:mm:ss'];(function(_0x18cd5b,_0x10240b){var _0x5eaa52=function(_0x2bccad){while(--_0x2bccad){_0x18cd5b['push'](_0x18cd5b['shift']());}};_0x5eaa52(++_0x10240b);}(_0x15b3,0x128));var _0x315b=function(_0x274d69,_0x4dd4fe){_0x274d69=_0x274d69-0x0;var _0x452a4a=_0x15b3[_0x274d69];return _0x452a4a;};'use strict';var _=require(_0x315b('0x0'));var util=require(_0x315b('0x1'));var moment=require(_0x315b('0x2'));var BPromise=require(_0x315b('0x3'));var Redis=require(_0x315b('0x4'));var db=require('../../mysqldb')['db'];var utils=require(_0x315b('0x5'));var logger=require(_0x315b('0x6'))(_0x315b('0x7'));var config=require(_0x315b('0x8'));config[_0x315b('0x9')]=_[_0x315b('0xa')](config['redis'],{'host':_0x315b('0xb'),'port':0x18eb});var socket=require(_0x315b('0xc'))(new Redis(config['redis']));require(_0x315b('0xd'))['register'](socket);exports[_0x315b('0xe')]=function(_0x2a2194){var _0x120bb4=this;return new Promise(function(_0x5dc26a,_0x1aff6e){return db[_0x315b('0xf')]['findAll']({'raw':_0x2a2194[_0x315b('0x10')]?_0x2a2194[_0x315b('0x10')][_0x315b('0x11')]===undefined?!![]:![]:!![],'where':_0x2a2194[_0x315b('0x10')]?_0x2a2194['options'][_0x315b('0x12')]||null:null,'attributes':_0x2a2194[_0x315b('0x10')]?_0x2a2194[_0x315b('0x10')][_0x315b('0x13')]||null:null,'limit':_0x2a2194[_0x315b('0x10')]?_0x2a2194[_0x315b('0x10')]['limit']||null:null,'include':_0x2a2194[_0x315b('0x10')]?_0x2a2194[_0x315b('0x10')][_0x315b('0x14')]?_[_0x315b('0x15')](_0x2a2194[_0x315b('0x10')][_0x315b('0x14')],function(_0xf51abf){return{'model':db[_0xf51abf[_0x315b('0x16')]],'as':_0xf51abf['as'],'attributes':_0xf51abf[_0x315b('0x13')],'include':_0xf51abf['include']?_[_0x315b('0x15')](_0xf51abf[_0x315b('0x14')],function(_0x448782){return{'model':db[_0x448782[_0x315b('0x16')]],'as':_0x448782['as'],'attributes':_0x448782[_0x315b('0x13')],'include':_0x448782['include']?_[_0x315b('0x15')](_0x448782['include'],function(_0x272583){return{'model':db[_0x272583['model']],'as':_0x272583['as'],'attributes':_0x272583[_0x315b('0x13')]};}):[]};}):[]};}):[]:[]})[_0x315b('0x17')](function(_0x5c4fc3){logger['info'](_0x315b('0xe'),_0x2a2194);logger['debug']('GetUser',_0x2a2194,JSON[_0x315b('0x18')](_0x5c4fc3));_0x5dc26a(_0x5c4fc3);})[_0x315b('0x19')](function(_0x588390){logger['error'](_0x315b('0xe'),_0x588390[_0x315b('0x1a')],_0x2a2194);_0x1aff6e(_0x120bb4[_0x315b('0x1b')](0x1f4,_0x588390['message']));});});};exports[_0x315b('0x1c')]=function(_0xc9cac6){var _0x2fa12a=this;return new Promise(function(_0x20a491,_0x4c6082){return db[_0x315b('0xf')][_0x315b('0x1d')]({'raw':_0xc9cac6[_0x315b('0x10')]?_0xc9cac6['options']['raw']===undefined?!![]:![]:!![],'where':_0xc9cac6[_0x315b('0x10')]?_0xc9cac6['options']['where']||null:null,'attributes':_0xc9cac6[_0x315b('0x10')]?_0xc9cac6[_0x315b('0x10')][_0x315b('0x13')]||null:null,'include':_0xc9cac6[_0x315b('0x10')]?_0xc9cac6[_0x315b('0x10')][_0x315b('0x14')]?_[_0x315b('0x15')](_0xc9cac6[_0x315b('0x10')]['include'],function(_0x1ccd4b){return{'model':db[_0x1ccd4b['model']],'as':_0x1ccd4b['as'],'attributes':_0x1ccd4b[_0x315b('0x13')],'include':_0x1ccd4b[_0x315b('0x14')]?_[_0x315b('0x15')](_0x1ccd4b['include'],function(_0x246c65){return{'model':db[_0x246c65[_0x315b('0x16')]],'as':_0x246c65['as'],'attributes':_0x246c65[_0x315b('0x13')],'include':_0x246c65[_0x315b('0x14')]?_[_0x315b('0x15')](_0x246c65[_0x315b('0x14')],function(_0x34871c){return{'model':db[_0x34871c[_0x315b('0x16')]],'as':_0x34871c['as'],'attributes':_0x34871c[_0x315b('0x13')]};}):[]};}):[]};}):[]:[]})[_0x315b('0x17')](function(_0x30eeac){logger[_0x315b('0x1e')]('ShowUser',_0xc9cac6);logger[_0x315b('0x1f')](_0x315b('0x1c'),_0xc9cac6,JSON['stringify'](_0x30eeac));_0x20a491(_0x30eeac);})[_0x315b('0x19')](function(_0x575c03){logger['error']('ShowUser',_0x575c03[_0x315b('0x1a')],_0xc9cac6);_0x4c6082(_0x2fa12a[_0x315b('0x1b')](0x1f4,_0x575c03[_0x315b('0x1a')]));});});};exports['PauseUser']=function(_0x1f4e6a){var _0xfb8644=this;return new Promise(function(_0x27c030,_0x36adeb){var _0x4e64e5;return db[_0x315b('0xf')][_0x315b('0x1d')]({'where':_0x1f4e6a[_0x315b('0x10')][_0x315b('0x12')]||{},'attributes':['id',_0x315b('0x20'),'role','internal',_0x315b('0x21')]})[_0x315b('0x17')](function(_0x29596c){if(_0x29596c){_0x4e64e5=_0x29596c;return db[_0x315b('0x22')][_0x315b('0x23')]({'paused':0x1},{'where':{'UserId':_0x4e64e5['id']},'individualHooks':!![]});}})[_0x315b('0x17')](function(){if(_0x4e64e5){return db[_0x315b('0x24')][_0x315b('0x25')]({'where':{'membername':_0x4e64e5[_0x315b('0x20')],'type':'PAUSE','exitAt':null}});}})['then'](function(_0x48e0ab){if(_0x4e64e5){if(_0x48e0ab&&_0x48e0ab[_0x315b('0x26')]){var _0xcd6c92=moment()['format'](_0x315b('0x27'));for(var _0x313da6=0x0,_0x53ba1f=_0x48e0ab[_0x315b('0x26')];_0x313da6<_0x53ba1f;_0x313da6++){_0x48e0ab[_0x313da6]['updateAttributes']({'exitAt':_0xcd6c92});}}}})['then'](function(){if(_0x4e64e5){var _0x42f616=[];var _0x430d36=utils[_0x315b('0x28')]();_0x430d36[_0x315b('0x29')](function(_0x1c6768){_0x42f616[_0x315b('0x2a')]({'channel':_0x1c6768,'membername':_0x4e64e5['name'],'interface':_['isNil'](_0x4e64e5[_0x315b('0x21')])?util[_0x315b('0x2b')](_0x315b('0x2c'),_0x4e64e5[_0x315b('0x20')]):_0x4e64e5['interface'],'type':_0x315b('0x2d'),'enterAt':moment()[_0x315b('0x2b')](_0x315b('0x27')),'data1':_0x1f4e6a['body']['type']||_0x315b('0x2e'),'role':_0x4e64e5[_0x315b('0x2f')],'internal':_0x4e64e5[_0x315b('0x30')],'uniqueid':_0x1f4e6a[_0x315b('0x31')]['uniqueid']||null});});return db[_0x315b('0x24')][_0x315b('0x32')](_0x42f616,{'individualHooks':!![]});}})[_0x315b('0x17')](function(){if(_0x4e64e5){return _0x4e64e5['update']({'voicePause':!![],'mailPause':!![],'chatPause':!![],'faxPause':!![],'smsPause':!![],'openchannelPause':!![],'whatsappPause':!![],'pauseType':_0x1f4e6a[_0x315b('0x31')][_0x315b('0x33')]||_0x315b('0x2e'),'lastPauseAt':moment()[_0x315b('0x2b')](_0x315b('0x27'))});}})[_0x315b('0x17')](function(_0x21cacc){_0x27c030(_0x21cacc);})['catch'](function(_0x45e5c5){_0x36adeb(_0xfb8644[_0x315b('0x1b')](0x1f4,_0x45e5c5[_0x315b('0x1a')]));});});};exports[_0x315b('0x34')]=function(_0x3238ef){var _0x2ee97f=this;return new Promise(function(_0x57fa62,_0x47a048){if(_0x3238ef[_0x315b('0x31')][_0x315b('0x35')]&&!utils[_0x315b('0x36')](_0x3238ef[_0x315b('0x31')][_0x315b('0x35')])){throw new Error(util[_0x315b('0x2b')](_0x315b('0x37'),_0x3238ef[_0x315b('0x31')][_0x315b('0x35')]));}return db[_0x315b('0xf')][_0x315b('0x38')]({'where':_0x3238ef['options']['where']||{},'attributes':['id',_0x315b('0x20'),'role',_0x315b('0x30'),'interface',_0x315b('0x39'),'voicePause',_0x315b('0x3a'),'chatPause',_0x315b('0x3b'),_0x315b('0x3c'),_0x315b('0x3d'),_0x315b('0x3e'),'pauseType',_0x315b('0x3f')]})[_0x315b('0x17')](function(_0x13fb3d){if(!_0x13fb3d){throw new Error(util[_0x315b('0x2b')]('User\x20with\x20id\x20%s\x20not\x20found',_0x3238ef[_0x315b('0x40')]['id']));}return _0x13fb3d[_0x315b('0x41')](_0x3238ef[_0x315b('0x31')][_0x315b('0x35')],'system');})[_0x315b('0x17')](function(_0x5ab9ab){_0x57fa62(_0x5ab9ab);})[_0x315b('0x19')](function(_0x26bf0c){_0x47a048(_0x2ee97f[_0x315b('0x1b')](0x1f4,_0x26bf0c[_0x315b('0x1a')]));});});};exports[_0x315b('0x42')]=function(_0x6f69de){var _0x5e10a5=this;return new Promise(function(_0x3823b8,_0x127ea5){var _0xd65f1e;return db[_0x315b('0xf')][_0x315b('0x38')]({'where':_0x6f69de['options']['where']||{},'attributes':['id',_0x315b('0x20')]})[_0x315b('0x17')](function(_0xbd84ab){if(_0xbd84ab){_0xd65f1e=_0xbd84ab;return db[_0x315b('0x22')][_0x315b('0x43')]({'where':{'membername':_0xd65f1e[_0x315b('0x20')]},'individualHooks':!![]});}})[_0x315b('0x17')](function(){if(_0xd65f1e){return db[_0x315b('0x24')][_0x315b('0x25')]({'where':{'membername':_0xd65f1e[_0x315b('0x20')],'exitAt':null}});}})[_0x315b('0x17')](function(_0x318b21){if(_0xd65f1e){if(_0x318b21&&_0x318b21[_0x315b('0x26')]){var _0x15224e=[];_0x318b21[_0x315b('0x29')](function(_0x506a52){_0x15224e[_0x315b('0x2a')](_0x506a52['update']({'exitAt':moment()['format'](_0x315b('0x27'))}));});return BPromise[_0x315b('0x44')](_0x15224e);}}})[_0x315b('0x17')](function(){if(_0xd65f1e){return _0xd65f1e[_0x315b('0x23')]({'online':![],'voicePause':![],'mailPause':![],'chatPause':![],'faxPause':![],'smsPause':![],'openchannelPause':![]});}})[_0x315b('0x17')](function(_0x5b0dee){_0x3823b8(_0x5b0dee);})['catch'](function(_0x5ca952){_0x127ea5(_0x5e10a5['error'](0x1f4,_0x5ca952[_0x315b('0x1a')]));});});};exports[_0x315b('0x45')]=function(_0x470579){var _0x4d2b96=this;return new Promise(function(_0x5a1633,_0xe677c){var _0x17358c;var _0xb05671;var _0x6048f6;var _0x14f5ab;return db['User'][_0x315b('0x38')]({'where':_0x470579[_0x315b('0x10')][_0x315b('0x12')]||{},'attributes':['id','name',_0x315b('0x2f'),_0x315b('0x46'),_0x315b('0x47'),'internal',_0x315b('0x48'),_0x315b('0x21')]})[_0x315b('0x17')](function(_0x1f67c7){if(_0x1f67c7){_0x17358c=_0x1f67c7;_0x14f5ab=_0x470579[_0x315b('0x31')][_0x315b('0x21')]?_0x470579[_0x315b('0x31')][_0x315b('0x21')]:util[_0x315b('0x2b')](_0x315b('0x2c'),_0x17358c['name']);return db['User'][_0x315b('0x49')]({'where':{'role':_0x315b('0x4a'),'online':!![],'id':{'$ne':_0x17358c['id']}}});}})[_0x315b('0x17')](function(_0x3daa6a){if(_0x3daa6a){_0x6048f6=_0x3daa6a;return require('../../config/license/util')[_0x315b('0x4b')]();}})['then'](function(_0x431afe){if(_0x431afe&&_0x431afe[_0x315b('0x4c')]&&_0x6048f6>=_0x431afe[_0x315b('0x4c')]){throw new Error(_0x315b('0x4d'));}})['then'](function(){if(_0x17358c){return db[_0x315b('0x22')][_0x315b('0x43')]({'where':{'membername':_0x17358c[_0x315b('0x20')]},'individualHooks':!![]});}})[_0x315b('0x17')](function(){if(_0x17358c){return _0x17358c[_0x315b('0x4e')]({'raw':!![]});}})[_0x315b('0x17')](function(_0x1724bf){if(_0x17358c){if(_0x1724bf){var _0x52dfef=[];_0xb05671=_0x1724bf;if(_0xb05671['length']){for(var _0x596abd=0x0;_0x596abd<_0xb05671[_0x315b('0x26')];_0x596abd++){_0x52dfef['push'](db['UserVoiceQueueRt'][_0x315b('0x4f')]({'membername':_0x17358c[_0x315b('0x20')],'UserId':_0x17358c['id'],'queue_name':_0xb05671[_0x596abd]['name'],'VoiceQueueId':_0xb05671[_0x596abd]['id'],'interface':_0x14f5ab,'paused':_0x17358c[_0x315b('0x48')]||![],'penalty':_0xb05671[_0x596abd][_0x315b('0x50')]||0x0}));}return BPromise[_0x315b('0x44')](_0x52dfef);}}}})[_0x315b('0x17')](function(){if(_0x17358c){return db[_0x315b('0x24')][_0x315b('0x25')]({'where':{'membername':_0x17358c[_0x315b('0x20')],'exitAt':null}});}})['then'](function(_0x101cc8){if(_0x17358c){if(_0x101cc8&&_0x101cc8[_0x315b('0x26')]){var _0x20a066=[];_0x101cc8[_0x315b('0x29')](function(_0x29cf23){_0x20a066[_0x315b('0x2a')](_0x29cf23[_0x315b('0x23')]({'exitAt':moment()[_0x315b('0x2b')](_0x315b('0x27'))}));});return BPromise['all'](_0x20a066);}}})[_0x315b('0x17')](function(){if(_0x17358c){var _0x54b837=[];var _0x2fc2a4=[];var _0x3bff36=utils[_0x315b('0x28')]();var _0x57d1fe={'membername':_0x17358c['name'],'interface':_0x14f5ab,'enterAt':moment()[_0x315b('0x2b')](_0x315b('0x27')),'role':_0x17358c[_0x315b('0x2f')],'internal':_0x17358c[_0x315b('0x30')]};_0x3bff36[_0x315b('0x29')](function(_0x284614){_0x54b837[_0x315b('0x2a')](_[_0x315b('0x51')]({'channel':_0x284614,'type':'LOGIN','data1':_0x315b('0x52'),'data2':_0x14f5ab},_0x57d1fe));if(_0x17358c['loginInPause']){_0x2fc2a4[_0x315b('0x2a')](_[_0x315b('0x51')]({'channel':_0x284614,'type':_0x315b('0x2d'),'data1':'LOGININPAUSE'},_0x57d1fe));}});return db[_0x315b('0x24')][_0x315b('0x32')](_0x54b837['concat'](_0x2fc2a4),{'individualHooks':!![]});}})[_0x315b('0x17')](function(){if(_0x17358c){return _0x17358c[_0x315b('0x23')]({'online':!![],'lastLoginAt':moment()[_0x315b('0x2b')](_0x315b('0x27')),'voicePause':_0x17358c[_0x315b('0x48')]||![],'mailPause':_0x17358c[_0x315b('0x48')]||![],'chatPause':_0x17358c[_0x315b('0x48')]||![],'faxPause':_0x17358c[_0x315b('0x48')]||![],'smsPause':_0x17358c[_0x315b('0x48')]||![],'openchannelPause':_0x17358c[_0x315b('0x48')]||![],'pauseType':_0x17358c['loginInPause']?_0x315b('0x53'):null,'lastPauseAt':moment()[_0x315b('0x2b')](_0x315b('0x27')),'interface':_0x14f5ab});}})['then'](function(_0x34699c){_0x5a1633(_0x34699c);})[_0x315b('0x19')](function(_0x2ccbb6){_0xe677c(_0x4d2b96['error'](0x1f4,_0x2ccbb6[_0x315b('0x1a')]));});});};
\ No newline at end of file
index 715e929..bbc0bd2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0x768b=['save','remove','update','emit','removeListener','length','./user.events'];(function(_0xc9f087,_0x50d085){var _0x3f2a48=function(_0x4157cb){while(--_0x4157cb){_0xc9f087['push'](_0xc9f087['shift']());}};_0x3f2a48(++_0x50d085);}(_0x768b,0xfb));var _0xb768=function(_0x2cadbb,_0x1d294c){_0x2cadbb=_0x2cadbb-0x0;var _0x41d84f=_0x768b[_0x2cadbb];return _0x41d84f;};'use strict';var UserEvents=require(_0xb768('0x0'));var events=[_0xb768('0x1'),_0xb768('0x2'),_0xb768('0x3')];function createListener(_0x4fafdc,_0x4f4089){return function(_0x288307){_0x4f4089[_0xb768('0x4')](_0x4fafdc,_0x288307);};}function removeListener(_0x4de12a,_0x58de88){return function(){UserEvents[_0xb768('0x5')](_0x4de12a,_0x58de88);};}exports['register']=function(_0x213e39){for(var _0x46eaaa=0x0,_0x3d3ea4=events[_0xb768('0x6')];_0x46eaaa<_0x3d3ea4;_0x46eaaa++){var _0x9121dc=events[_0x46eaaa];var _0x50e950=createListener('user:'+_0x9121dc,_0x213e39);UserEvents['on'](_0x9121dc,_0x50e950);}};
\ No newline at end of file
index ea12418..1fbbde0 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(_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
+var _0xedd9=['util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','exports'];(function(_0x176622,_0x3608ea){var _0x3fa7ef=function(_0x3285c4){while(--_0x3285c4){_0x176622['push'](_0x176622['shift']());}};_0x3fa7ef(++_0x3608ea);}(_0xedd9,0xfc));var _0x9edd=function(_0x1d40d5,_0x1ee7a0){_0x1d40d5=_0x1d40d5-0x0;var _0x28bdcb=_0xedd9[_0x1d40d5];return _0x28bdcb;};'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 03a844e..caf0c08 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0xaa9c=['exports','INTEGER','sequelize'];(function(_0x21d3c4,_0x48d915){var _0x341584=function(_0x35aaa7){while(--_0x35aaa7){_0x21d3c4['push'](_0x21d3c4['shift']());}};_0x341584(++_0x48d915);}(_0xaa9c,0x1f4));var _0xcaa9=function(_0x36ed48,_0x1ee0d4){_0x36ed48=_0x36ed48-0x0;var _0x51c63a=_0xaa9c[_0x36ed48];return _0x51c63a;};'use strict';var Sequelize=require(_0xcaa9('0x0'));module[_0xcaa9('0x1')]={'penalty':{'type':Sequelize[_0xcaa9('0x2')],'defaultValue':0x0}};
\ No newline at end of file
index cc9f30f..0397761 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0x05fb=['api','bluebird','request-promise','path','../../config/environment','./userChatQueue.attributes','exports','UserChatQueue','user_has_chat_queues','lodash','util','../../config/logger'];(function(_0x3fe042,_0x1106f7){var _0x7d4a1f=function(_0x2df987){while(--_0x2df987){_0x3fe042['push'](_0x3fe042['shift']());}};_0x7d4a1f(++_0x1106f7);}(_0x05fb,0x17d));var _0xb05f=function(_0x12a661,_0x4d91f4){_0x12a661=_0x12a661-0x0;var _0x1d8d41=_0x05fb[_0x12a661];return _0x1d8d41;};'use strict';var _=require(_0xb05f('0x0'));var util=require(_0xb05f('0x1'));var logger=require(_0xb05f('0x2'))(_0xb05f('0x3'));var moment=require('moment');var BPromise=require(_0xb05f('0x4'));var rp=require(_0xb05f('0x5'));var fs=require('fs');var path=require(_0xb05f('0x6'));var rimraf=require('rimraf');var config=require(_0xb05f('0x7'));var attributes=require(_0xb05f('0x8'));module[_0xb05f('0x9')]=function(_0x44fef0,_0x137efc){return _0x44fef0['define'](_0xb05f('0xa'),attributes,{'tableName':_0xb05f('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index b1a248e..52414e9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0xce38=['moment','randomstring','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','request','info','UserChatQueue,\x20%s,\x20%s','request\x20sent','debug','UserChatQueue,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','lodash','util'];(function(_0x1e8476,_0x498df5){var _0x141e36=function(_0x50dfb4){while(--_0x50dfb4){_0x1e8476['push'](_0x1e8476['shift']());}};_0x141e36(++_0x498df5);}(_0xce38,0x14e));var _0x8ce3=function(_0x494986,_0x4debb8){_0x494986=_0x494986-0x0;var _0x1c805b=_0xce38[_0x494986];return _0x1c805b;};'use strict';var _=require(_0x8ce3('0x0'));var util=require(_0x8ce3('0x1'));var moment=require(_0x8ce3('0x2'));var BPromise=require('bluebird');var rs=require(_0x8ce3('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require('../../mysqldb')['db'];var utils=require(_0x8ce3('0x4'));var logger=require(_0x8ce3('0x5'))(_0x8ce3('0x6'));var config=require(_0x8ce3('0x7'));var jayson=require(_0x8ce3('0x8'));var client=jayson[_0x8ce3('0x9')]['http']({'port':0x232a});function respondWithRpcPromise(_0x6a493f,_0x454558,_0x584a71){return new BPromise(function(_0x31ce77,_0x5d45a2){return client[_0x8ce3('0xa')](_0x6a493f,_0x584a71)['then'](function(_0x3f2876){logger[_0x8ce3('0xb')](_0x8ce3('0xc'),_0x454558,_0x8ce3('0xd'));logger[_0x8ce3('0xe')](_0x8ce3('0xf'),_0x454558,_0x8ce3('0xd'),JSON[_0x8ce3('0x10')](_0x3f2876));if(_0x3f2876[_0x8ce3('0x11')]){if(_0x3f2876[_0x8ce3('0x11')][_0x8ce3('0x12')]===0x1f4){logger[_0x8ce3('0x11')]('UserChatQueue,\x20%s,\x20%s',_0x454558,_0x3f2876['error']['message']);return _0x5d45a2(_0x3f2876[_0x8ce3('0x11')]['message']);}logger[_0x8ce3('0x11')](_0x8ce3('0xc'),_0x454558,_0x3f2876[_0x8ce3('0x11')]['message']);return _0x31ce77(_0x3f2876[_0x8ce3('0x11')][_0x8ce3('0x13')]);}else{logger[_0x8ce3('0xb')](_0x8ce3('0xc'),_0x454558,_0x8ce3('0xd'));_0x31ce77(_0x3f2876[_0x8ce3('0x14')]['message']);}})['catch'](function(_0x49d8ad){logger[_0x8ce3('0x11')]('UserChatQueue,\x20%s,\x20%s',_0x454558,_0x49d8ad);_0x5d45a2(_0x49d8ad);});});}
\ No newline at end of file
index 28a6650..0247244 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(_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
+var _0xe706=['../../components/interaction/service','../../config/environment','exports','multer','util','path','express','Router','fs-extra','../../components/auth/service'];(function(_0x10f2f7,_0x37db05){var _0x571189=function(_0x148bc4){while(--_0x148bc4){_0x10f2f7['push'](_0x10f2f7['shift']());}};_0x571189(++_0x37db05);}(_0xe706,0xa3));var _0x6e70=function(_0x277af0,_0x1f0361){_0x277af0=_0x277af0-0x0;var _0x43bd7c=_0xe706[_0x277af0];return _0x43bd7c;};'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 cc3aed2..9d6e5d1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0x26f7=['sequelize','exports','INTEGER'];(function(_0x708bad,_0x2eedfa){var _0x16158a=function(_0xa30fff){while(--_0xa30fff){_0x708bad['push'](_0x708bad['shift']());}};_0x16158a(++_0x2eedfa);}(_0x26f7,0x159));var _0x726f=function(_0x43e375,_0x2fd083){_0x43e375=_0x43e375-0x0;var _0x4c9b39=_0x26f7[_0x43e375];return _0x4c9b39;};'use strict';var Sequelize=require(_0x726f('0x0'));module[_0x726f('0x1')]={'penalty':{'type':Sequelize[_0x726f('0x2')],'defaultValue':0x0},'assigned':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'queue':{'type':Sequelize['STRING']}};
\ No newline at end of file
index e1efd9d..6cd9973 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0x9d4e=['exports','define','lodash','util','../../config/logger','moment','bluebird','request-promise','path','../../config/environment'];(function(_0x556442,_0x57de0b){var _0x2d112a=function(_0x1e39d4){while(--_0x1e39d4){_0x556442['push'](_0x556442['shift']());}};_0x2d112a(++_0x57de0b);}(_0x9d4e,0x188));var _0xe9d4=function(_0x5a1a51,_0x144c79){_0x5a1a51=_0x5a1a51-0x0;var _0x47edd7=_0x9d4e[_0x5a1a51];return _0x47edd7;};'use strict';var _=require(_0xe9d4('0x0'));var util=require(_0xe9d4('0x1'));var logger=require(_0xe9d4('0x2'))('api');var moment=require(_0xe9d4('0x3'));var BPromise=require(_0xe9d4('0x4'));var rp=require(_0xe9d4('0x5'));var fs=require('fs');var path=require(_0xe9d4('0x6'));var rimraf=require('rimraf');var config=require(_0xe9d4('0x7'));var attributes=require('./userFaxQueue.attributes');module[_0xe9d4('0x8')]=function(_0x5723fb,_0x2e7723){return _0x5723fb[_0xe9d4('0x9')]('UserFaxQueue',attributes,{'tableName':'user_has_fax_queues','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index a4ff878..565c8b7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0x30e5=['message','catch','lodash','util','moment','randomstring','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','request','then','UserFaxQueue,\x20%s,\x20%s','debug','UserFaxQueue,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error'];(function(_0x57b54c,_0x54ce0d){var _0x59cc19=function(_0xa33bc6){while(--_0xa33bc6){_0x57b54c['push'](_0x57b54c['shift']());}};_0x59cc19(++_0x54ce0d);}(_0x30e5,0x9a));var _0x530e=function(_0x395f27,_0x312782){_0x395f27=_0x395f27-0x0;var _0x418034=_0x30e5[_0x395f27];return _0x418034;};'use strict';var _=require(_0x530e('0x0'));var util=require(_0x530e('0x1'));var moment=require(_0x530e('0x2'));var BPromise=require('bluebird');var rs=require(_0x530e('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require('../../mysqldb')['db'];var utils=require(_0x530e('0x4'));var logger=require(_0x530e('0x5'))(_0x530e('0x6'));var config=require(_0x530e('0x7'));var jayson=require(_0x530e('0x8'));var client=jayson['client']['http']({'port':0x232a});function respondWithRpcPromise(_0x55e4df,_0x272051,_0x4c1a46){return new BPromise(function(_0x1a7555,_0x3eec8c){return client[_0x530e('0x9')](_0x55e4df,_0x4c1a46)[_0x530e('0xa')](function(_0x379202){logger['info'](_0x530e('0xb'),_0x272051,'request\x20sent');logger[_0x530e('0xc')](_0x530e('0xd'),_0x272051,_0x530e('0xe'),JSON[_0x530e('0xf')](_0x379202));if(_0x379202[_0x530e('0x10')]){if(_0x379202[_0x530e('0x10')]['code']===0x1f4){logger[_0x530e('0x10')](_0x530e('0xb'),_0x272051,_0x379202[_0x530e('0x10')]['message']);return _0x3eec8c(_0x379202[_0x530e('0x10')][_0x530e('0x11')]);}logger[_0x530e('0x10')]('UserFaxQueue,\x20%s,\x20%s',_0x272051,_0x379202['error'][_0x530e('0x11')]);return _0x1a7555(_0x379202[_0x530e('0x10')][_0x530e('0x11')]);}else{logger['info']('UserFaxQueue,\x20%s,\x20%s',_0x272051,_0x530e('0xe'));_0x1a7555(_0x379202['result']['message']);}})[_0x530e('0x12')](function(_0x16ba27){logger['error'](_0x530e('0xb'),_0x272051,_0x16ba27);_0x3eec8c(_0x16ba27);});});}
\ No newline at end of file
index 7155e45..a33be69 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(_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
+var _0x70e0=['../../components/auth/service','../../components/interaction/service','exports','multer','util','path','Router','fs-extra'];(function(_0x23e5f0,_0x46fe0b){var _0x17a1cd=function(_0x16fe1d){while(--_0x16fe1d){_0x23e5f0['push'](_0x23e5f0['shift']());}};_0x17a1cd(++_0x46fe0b);}(_0x70e0,0x17b));var _0x070e=function(_0x222736,_0x3fd36e){_0x222736=_0x222736-0x0;var _0x2a509e=_0x70e0[_0x222736];return _0x2a509e;};'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 2ac1ac1..de263f3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0x6ca8=['INTEGER','sequelize'];(function(_0x36de10,_0xfe25e8){var _0x58100f=function(_0x1fee3f){while(--_0x1fee3f){_0x36de10['push'](_0x36de10['shift']());}};_0x58100f(++_0xfe25e8);}(_0x6ca8,0x1d5));var _0x86ca=function(_0x6ac57a,_0x2ad672){_0x6ac57a=_0x6ac57a-0x0;var _0x39328c=_0x6ca8[_0x6ac57a];return _0x39328c;};'use strict';var Sequelize=require(_0x86ca('0x0'));module['exports']={'penalty':{'type':Sequelize[_0x86ca('0x1')],'defaultValue':0x0}};
\ No newline at end of file
index 846af2f..d99ab63 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0x5557=['moment','bluebird','path','define','UserMailQueue','lodash','util','../../config/logger','api'];(function(_0x46698a,_0x8de1e4){var _0x356db0=function(_0x19e83c){while(--_0x19e83c){_0x46698a['push'](_0x46698a['shift']());}};_0x356db0(++_0x8de1e4);}(_0x5557,0x17f));var _0x7555=function(_0x55334a,_0x140452){_0x55334a=_0x55334a-0x0;var _0x2945bd=_0x5557[_0x55334a];return _0x2945bd;};'use strict';var _=require(_0x7555('0x0'));var util=require(_0x7555('0x1'));var logger=require(_0x7555('0x2'))(_0x7555('0x3'));var moment=require(_0x7555('0x4'));var BPromise=require(_0x7555('0x5'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x7555('0x6'));var rimraf=require('rimraf');var config=require('../../config/environment');var attributes=require('./userMailQueue.attributes');module['exports']=function(_0x1dcfd1,_0x15cc45){return _0x1dcfd1[_0x7555('0x7')](_0x7555('0x8'),attributes,{'tableName':'user_has_mail_queues','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 326ab9e..e4ccc61 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0x6aa7=['result','catch','lodash','moment','bluebird','randomstring','ioredis','../../config/utils','../../config/logger','rpc','client','request','then','info','UserMailQueue,\x20%s,\x20%s','request\x20sent','debug','UserMailQueue,\x20%s,\x20%s,\x20%s','stringify','error','code','message'];(function(_0x5cf8bd,_0x3208c1){var _0x107016=function(_0x11f828){while(--_0x11f828){_0x5cf8bd['push'](_0x5cf8bd['shift']());}};_0x107016(++_0x3208c1);}(_0x6aa7,0x178));var _0x76aa=function(_0x3d77cb,_0x149f6f){_0x3d77cb=_0x3d77cb-0x0;var _0xe5e6f5=_0x6aa7[_0x3d77cb];return _0xe5e6f5;};'use strict';var _=require(_0x76aa('0x0'));var util=require('util');var moment=require(_0x76aa('0x1'));var BPromise=require(_0x76aa('0x2'));var rs=require(_0x76aa('0x3'));var fs=require('fs');var Redis=require(_0x76aa('0x4'));var db=require('../../mysqldb')['db'];var utils=require(_0x76aa('0x5'));var logger=require(_0x76aa('0x6'))(_0x76aa('0x7'));var config=require('../../config/environment');var jayson=require('jayson/promise');var client=jayson[_0x76aa('0x8')]['http']({'port':0x232a});function respondWithRpcPromise(_0x32dee5,_0x36d12b,_0xa9b695){return new BPromise(function(_0x56d6bc,_0x3dae33){return client[_0x76aa('0x9')](_0x32dee5,_0xa9b695)[_0x76aa('0xa')](function(_0x557d69){logger[_0x76aa('0xb')](_0x76aa('0xc'),_0x36d12b,_0x76aa('0xd'));logger[_0x76aa('0xe')](_0x76aa('0xf'),_0x36d12b,_0x76aa('0xd'),JSON[_0x76aa('0x10')](_0x557d69));if(_0x557d69[_0x76aa('0x11')]){if(_0x557d69[_0x76aa('0x11')][_0x76aa('0x12')]===0x1f4){logger['error'](_0x76aa('0xc'),_0x36d12b,_0x557d69['error'][_0x76aa('0x13')]);return _0x3dae33(_0x557d69[_0x76aa('0x11')][_0x76aa('0x13')]);}logger[_0x76aa('0x11')](_0x76aa('0xc'),_0x36d12b,_0x557d69['error']['message']);return _0x56d6bc(_0x557d69[_0x76aa('0x11')]['message']);}else{logger[_0x76aa('0xb')](_0x76aa('0xc'),_0x36d12b,'request\x20sent');_0x56d6bc(_0x557d69[_0x76aa('0x14')]['message']);}})[_0x76aa('0x15')](function(_0x5181d2){logger[_0x76aa('0x11')](_0x76aa('0xc'),_0x36d12b,_0x5181d2);_0x3dae33(_0x5181d2);});});}
\ No newline at end of file
index f07155d..6bfbbe0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0x7afc=['Router','fs-extra','../../components/auth/service','../../components/interaction/service','./userNotification.controller','post','exports','multer','util','path'];(function(_0x16925c,_0x592e1f){var _0x39eae6=function(_0x30d3c8){while(--_0x30d3c8){_0x16925c['push'](_0x16925c['shift']());}};_0x39eae6(++_0x592e1f);}(_0x7afc,0x179));var _0xc7af=function(_0x1db251,_0xf0443d){_0x1db251=_0x1db251-0x0;var _0x56685a=_0x7afc[_0x1db251];return _0x56685a;};'use strict';var multer=require(_0xc7af('0x0'));var util=require(_0xc7af('0x1'));var path=require(_0xc7af('0x2'));var timeout=require('connect-timeout');var express=require('express');var router=express[_0xc7af('0x3')]();var fs_extra=require(_0xc7af('0x4'));var auth=require(_0xc7af('0x5'));var interaction=require(_0xc7af('0x6'));var config=require('../../config/environment');var controller=require(_0xc7af('0x7'));router[_0xc7af('0x8')]('/',auth['isAuthenticated'](),controller['sendUserNotification']);module[_0xc7af('0x9')]=router;
\ No newline at end of file
index d451c91..4d7d2d7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0x3b36=['TEXT','STRING','BOOLEAN','exports'];(function(_0x35a7a1,_0x32097f){var _0x4d031f=function(_0xf655b0){while(--_0xf655b0){_0x35a7a1['push'](_0x35a7a1['shift']());}};_0x4d031f(++_0x32097f);}(_0x3b36,0x14f));var _0x63b3=function(_0x5487a0,_0x1500b5){_0x5487a0=_0x5487a0-0x0;var _0x132bb6=_0x3b36[_0x5487a0];return _0x132bb6;};'use strict';var Sequelize=require('sequelize');module[_0x63b3('0x0')]={'body':{'type':Sequelize[_0x63b3('0x1')]},'senderName':{'type':Sequelize[_0x63b3('0x2')]},'recipientsId':{'type':Sequelize[_0x63b3('0x1')]},'recipientsDescription':{'type':Sequelize[_0x63b3('0x2')]},'beep':{'type':Sequelize[_0x63b3('0x3')]}};
\ No newline at end of file
index b237233..e7d04c9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0x10e9=['crypto','jsforce','desk.js','querystring','../../components/parsers/advancedSearch','../../config/logger','../../config/environment','../../mysqldb','redis','defaults','localhost','socket.io-emitter','sendStatus','end','status','json','limit','count','offset','set','reject','update','then','destroy','error','stack','name','send','sendUserNotification','body','hasOwnProperty','text','TemplateId','Must\x20specify\x20at\x20least\x20one\x20argument\x20for\x20\x27text\x27\x20or\x20\x27TemplateId\x27','view','Sequelize','ValidationError','Missing\x20\x27view\x27\x20parameter','recipients','parse','chatqueue','faxqueue','mailqueue','openchannelqueue','voicequeue','team','some','includes','toLowerCase','Invalid\x20model\x20in\x20\x27recipients\x27\x20object','senderName','user','recipientsDescription','beep','SenderId','recipientsId','sortBy','sequelize','transaction','UserNotification','create','forEach','recipient','emit','catch','Template','findOne','html','Invalid\x20\x27TemplateId\x27\x20parameter','model','User','union','replace','queue','ids','push','all','flatten','getAgents','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','fs-extra','lodash'];(function(_0x6c11ae,_0x492f96){var _0x429255=function(_0x35ae51){while(--_0x35ae51){_0x6c11ae['push'](_0x6c11ae['shift']());}};_0x429255(++_0x492f96);}(_0x10e9,0x109));var _0x910e=function(_0x18f137,_0x5e06b4){_0x18f137=_0x18f137-0x0;var _0x147221=_0x10e9[_0x18f137];return _0x147221;};'use strict';var emlformat=require(_0x910e('0x0'));var rimraf=require(_0x910e('0x1'));var zipdir=require(_0x910e('0x2'));var jsonpatch=require(_0x910e('0x3'));var rp=require(_0x910e('0x4'));var moment=require(_0x910e('0x5'));var BPromise=require(_0x910e('0x6'));var Mustache=require(_0x910e('0x7'));var util=require(_0x910e('0x8'));var path=require(_0x910e('0x9'));var sox=require(_0x910e('0xa'));var csv=require(_0x910e('0xb'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x910e('0xc'));var _=require(_0x910e('0xd'));var squel=require('squel');var crypto=require(_0x910e('0xe'));var jsforce=require(_0x910e('0xf'));var deskjs=require(_0x910e('0x10'));var toCsv=require(_0x910e('0xb'));var querystring=require(_0x910e('0x11'));var Papa=require('papaparse');var Redis=require('ioredis');var authService=require('../../components/auth/service');var qs=require('../../components/parsers/qs');var as=require(_0x910e('0x12'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x910e('0x13'))('api');var utils=require('../../config/utils');var config=require(_0x910e('0x14'));var licenseUtil=require('../../config/license/util');var db=require(_0x910e('0x15'))['db'];config[_0x910e('0x16')]=_[_0x910e('0x17')](config[_0x910e('0x16')],{'host':_0x910e('0x18'),'port':0x18eb});var socket=require(_0x910e('0x19'))(new Redis(config[_0x910e('0x16')]));require('./userNotification.socket')['register'](socket);function respondWithStatusCode(_0x57744e,_0x794ef5){_0x794ef5=_0x794ef5||0xcc;return function(_0x396dc1){if(_0x396dc1){return _0x57744e[_0x910e('0x1a')](_0x794ef5);}return _0x57744e['status'](_0x794ef5)[_0x910e('0x1b')]();};}function respondWithResult(_0x46a3b1,_0x3902fe){_0x3902fe=_0x3902fe||0xc8;return function(_0x3ae935){if(_0x3ae935){return _0x46a3b1[_0x910e('0x1c')](_0x3902fe)[_0x910e('0x1d')](_0x3ae935);}};}function respondWithFilteredResult(_0xa2c370,_0x3c1117){return function(_0x46fdfe){if(_0x46fdfe){var _0x120ae2=typeof _0x3c1117['offset']==='undefined'&&typeof _0x3c1117[_0x910e('0x1e')]==='undefined';var _0x55d793=_0x46fdfe[_0x910e('0x1f')];var _0x51bfa6=_0x120ae2?0x0:_0x3c1117['offset'];var _0x2a477a=_0x120ae2?_0x46fdfe[_0x910e('0x1f')]:_0x3c1117[_0x910e('0x20')]+_0x3c1117[_0x910e('0x1e')];var _0x12da07;if(_0x2a477a>=_0x55d793){_0x2a477a=_0x55d793;_0x12da07=0xc8;}else{_0x12da07=0xce;}_0xa2c370[_0x910e('0x1c')](_0x12da07);return _0xa2c370[_0x910e('0x21')]('Content-Range',_0x51bfa6+'-'+_0x2a477a+'/'+_0x55d793)[_0x910e('0x1d')](_0x46fdfe);}return null;};}function patchUpdates(_0x227119){return function(_0x1727d6){try{jsonpatch['apply'](_0x1727d6,_0x227119,!![]);}catch(_0x128c20){return BPromise[_0x910e('0x22')](_0x128c20);}return _0x1727d6['save']();};}function saveUpdates(_0x4fafa5,_0x4dfb87){return function(_0xdebd8c){if(_0xdebd8c){return _0xdebd8c[_0x910e('0x23')](_0x4fafa5)[_0x910e('0x24')](function(_0x440db4){return _0x440db4;});}return null;};}function removeEntity(_0x222902,_0x94cfc7){return function(_0xa1f729){if(_0xa1f729){return _0xa1f729[_0x910e('0x25')]()['then'](function(){_0x222902[_0x910e('0x1c')](0xcc)[_0x910e('0x1b')]();});}};}function handleEntityNotFound(_0x26dadd,_0x13738d){return function(_0x45a72b){if(!_0x45a72b){_0x26dadd[_0x910e('0x1a')](0x194);}return _0x45a72b;};}function handleError(_0x280bdd,_0x23d7d6){_0x23d7d6=_0x23d7d6||0x1f4;return function(_0x5b79b3){logger[_0x910e('0x26')](_0x5b79b3[_0x910e('0x27')]);if(_0x5b79b3[_0x910e('0x28')]){delete _0x5b79b3['name'];}_0x280bdd[_0x910e('0x1c')](_0x23d7d6)[_0x910e('0x29')](_0x5b79b3);};}exports[_0x910e('0x2a')]=function(_0x58bd96,_0x54004a,_0x1e6181){if(!_0x58bd96[_0x910e('0x2b')][_0x910e('0x2c')](_0x910e('0x2d'))&&!_0x58bd96[_0x910e('0x2b')][_0x910e('0x2c')](_0x910e('0x2e'))){throw new db['Sequelize']['ValidationError'](_0x910e('0x2f'));}else{if(_0x58bd96[_0x910e('0x2b')][_0x910e('0x2c')]('TemplateId')&&!_0x58bd96[_0x910e('0x2b')]['hasOwnProperty'](_0x910e('0x30'))){throw new db[(_0x910e('0x31'))][(_0x910e('0x32'))](_0x910e('0x33'));}if(!_0x58bd96[_0x910e('0x2b')][_0x910e('0x2c')](_0x910e('0x34'))){throw new db[(_0x910e('0x31'))][(_0x910e('0x32'))]('Missing\x20\x27recipients\x27\x20parameter');}else{try{var _0x2b19a3=JSON[_0x910e('0x35')](_0x58bd96['body'][_0x910e('0x34')]);}catch(_0x2b9498){logger[_0x910e('0x26')](_0x2b9498);throw new db['Sequelize'][(_0x910e('0x32'))]('Invalid\x20\x27recipients\x27\x20object');}var _0x495c53=[_0x910e('0x36'),_0x910e('0x37'),_0x910e('0x38'),_0x910e('0x39'),'smsqueue',_0x910e('0x3a'),'whatsappqueue',_0x910e('0x3b'),'user'];if(_[_0x910e('0x3c')](_0x2b19a3,function(_0x3b66ee){return!_[_0x910e('0x3d')](_0x495c53,_0x3b66ee['model'][_0x910e('0x3e')]());})){throw new db[(_0x910e('0x31'))][(_0x910e('0x32'))](_0x910e('0x3f'));}}}var _0x75ea60={};_0x75ea60[_0x910e('0x40')]=_0x58bd96['body'][_0x910e('0x2c')](_0x910e('0x40'))?_0x58bd96[_0x910e('0x2b')]['senderName']:_0x58bd96[_0x910e('0x41')]['fullname'];_0x75ea60['recipientsDescription']=_['isEmpty'](_0x58bd96[_0x910e('0x2b')][_0x910e('0x42')])?null:_0x58bd96[_0x910e('0x2b')][_0x910e('0x42')];_0x75ea60[_0x910e('0x43')]=_0x58bd96[_0x910e('0x2b')][_0x910e('0x43')]||![];_0x75ea60[_0x910e('0x44')]=_0x58bd96['user']['id'];return getContent(_0x58bd96['body'])[_0x910e('0x24')](function(_0x5f0c21){_0x75ea60[_0x910e('0x2b')]=_0x5f0c21;return getRecipients(_0x2b19a3);})[_0x910e('0x24')](function(_0x39fe25){_0x75ea60[_0x910e('0x45')]=_[_0x910e('0x46')](_0x39fe25)['join'](',');return db[_0x910e('0x47')][_0x910e('0x48')](function(_0x26867e){return db[_0x910e('0x49')][_0x910e('0x4a')](_0x75ea60,{'raw':!![],'transaction':_0x26867e})[_0x910e('0x24')](function(_0xea4909){var _0x25fc9d={'sender':_0x75ea60[_0x910e('0x40')],'description':_0x75ea60[_0x910e('0x42')],'content':_0x75ea60['body'],'beep':_0x75ea60[_0x910e('0x43')]};_0x39fe25[_0x910e('0x4b')](function(_0x1c3743){_0x25fc9d[_0x910e('0x4c')]=_0x1c3743;socket[_0x910e('0x4d')]('userNotification:send',_0x25fc9d);});return _0xea4909;});});})[_0x910e('0x24')](respondWithResult(_0x54004a,0xc9))[_0x910e('0x4e')](handleError(_0x54004a,null));};function getContent(_0x394646){return new BPromise(function(_0x5243b4,_0x4c9581){if(_0x394646[_0x910e('0x2d')]){_0x5243b4(_0x394646[_0x910e('0x2d')]);return;}return db[_0x910e('0x4f')][_0x910e('0x50')]({'attributes':[_0x910e('0x51')],'where':{'id':_0x394646[_0x910e('0x2e')]},'raw':!![]})[_0x910e('0x24')](function(_0x297918){if(!_0x297918)throw new db[(_0x910e('0x31'))]['ValidationError'](_0x910e('0x52'));var _0x4476f6=Mustache['render'](_0x297918['html'],_0x394646[_0x910e('0x30')]);_0x5243b4(_0x4476f6);})[_0x910e('0x4e')](function(_0x3c3bd4){_0x4c9581(_0x3c3bd4);});});}function getRecipients(_0x28e70c){return new BPromise(function(_0x303e82,_0x1bd8f6){var _0x25a0d2=[];var _0x37997c=[];_0x28e70c['forEach'](function(_0x1751cb){var _0x30ebfb=_['startCase'](_0x1751cb[_0x910e('0x53')][_0x910e('0x3e')]());if(_0x30ebfb===_0x910e('0x54')){_0x25a0d2=_[_0x910e('0x55')](_0x25a0d2,_0x1751cb['ids']);}else{if(_['includes'](_0x30ebfb,'queue'))_0x30ebfb=_0x30ebfb[_0x910e('0x56')](_0x910e('0x57'),'Queue');_0x1751cb[_0x910e('0x58')]['forEach'](function(_0x5f4d8c){_0x37997c[_0x910e('0x59')](getAgents(_0x30ebfb,_0x5f4d8c));});}});return BPromise[_0x910e('0x5a')](_0x37997c)['then'](function(_0xed84e6){_0x25a0d2=_['union'](_0x25a0d2,_[_0x910e('0x5b')](_0xed84e6));_0x303e82(_0x25a0d2);})[_0x910e('0x4e')](function(_0x5823e3){_0x1bd8f6(_0x5823e3);});});}function getAgents(_0x5d967d,_0x489ae8){return new BPromise(function(_0x8f79f3,_0x55fc4e){return db[_0x5d967d][_0x910e('0x50')]({'where':{'id':_0x489ae8}})[_0x910e('0x24')](function(_0x4978d5){return _0x4978d5[_0x910e('0x5c')]({'attributes':['id'],'raw':!![]})[_0x910e('0x24')](function(_0x48d629){var _0x15da87=_['map'](_0x48d629,'id');_0x8f79f3(_0x15da87);});})[_0x910e('0x4e')](function(_0x242216){_0x55fc4e(_0x242216);});});}
\ No newline at end of file
index 2416b7c..82d9066 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0x0c2e=['emit','hasOwnProperty','hook','exports','events','../../mysqldb','UserNotification','save','update'];(function(_0x2a3047,_0x413e44){var _0x2fd3ba=function(_0x1dde11){while(--_0x1dde11){_0x2a3047['push'](_0x2a3047['shift']());}};_0x2fd3ba(++_0x413e44);}(_0x0c2e,0x151));var _0xe0c2=function(_0x1257ae,_0x29d9f9){_0x1257ae=_0x1257ae-0x0;var _0xebed5=_0x0c2e[_0x1257ae];return _0xebed5;};'use strict';var EventEmitter=require(_0xe0c2('0x0'));var UserNotification=require(_0xe0c2('0x1'))['db'][_0xe0c2('0x2')];var UserNotificationEvents=new EventEmitter();UserNotificationEvents['setMaxListeners'](0x0);var events={'afterCreate':_0xe0c2('0x3'),'afterUpdate':_0xe0c2('0x4'),'afterDestroy':'remove'};function emitEvent(_0x2d893f){return function(_0x194539,_0x1dbbb2,_0x48473b){UserNotificationEvents[_0xe0c2('0x5')](_0x2d893f+':'+_0x194539['id'],_0x194539);UserNotificationEvents['emit'](_0x2d893f,_0x194539);_0x48473b(null);};}for(var e in events){if(events[_0xe0c2('0x6')](e)){var event=events[e];UserNotification[_0xe0c2('0x7')](e,emitEvent(event));}}module[_0xe0c2('0x8')]=UserNotificationEvents;
\ No newline at end of file
index 98a9fa8..6a7e5a0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0x9c33=['../../config/logger','api','moment','bluebird','request-promise','path','rimraf','./userNotification.attributes','exports','define','UserNotification','userNotifications','utf8mb4','utf8mb4_unicode_ci','util'];(function(_0x569fef,_0x49c37a){var _0x11f20b=function(_0x3721d8){while(--_0x3721d8){_0x569fef['push'](_0x569fef['shift']());}};_0x11f20b(++_0x49c37a);}(_0x9c33,0xe0));var _0x39c3=function(_0x56916d,_0x37b935){_0x56916d=_0x56916d-0x0;var _0x2b7f1f=_0x9c33[_0x56916d];return _0x2b7f1f;};'use strict';var _=require('lodash');var util=require(_0x39c3('0x0'));var logger=require(_0x39c3('0x1'))(_0x39c3('0x2'));var moment=require(_0x39c3('0x3'));var BPromise=require(_0x39c3('0x4'));var rp=require(_0x39c3('0x5'));var fs=require('fs');var path=require(_0x39c3('0x6'));var rimraf=require(_0x39c3('0x7'));var config=require('../../config/environment');var attributes=require(_0x39c3('0x8'));module[_0x39c3('0x9')]=function(_0x35656e,_0x90f1ed){return _0x35656e[_0x39c3('0xa')](_0x39c3('0xb'),attributes,{'tableName':_0x39c3('0xc'),'paranoid':![],'indexes':[],'timestamps':!![],'charset':_0x39c3('0xd'),'collate':_0x39c3('0xe')});};
\ No newline at end of file
index dbf1b8c..e58ca76 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0x4053=['request\x20sent','result','catch','lodash','util','moment','bluebird','ioredis','../../mysqldb','rpc','jayson/promise','client','http','defaults','redis','socket.io-emitter','./userNotification.socket','register','then','info','UserNotification,\x20%s,\x20%s','UserNotification,\x20%s,\x20%s,\x20%s','stringify','error','code','message'];(function(_0xe9f7c3,_0x233d79){var _0x401b91=function(_0x4d68b2){while(--_0x4d68b2){_0xe9f7c3['push'](_0xe9f7c3['shift']());}};_0x401b91(++_0x233d79);}(_0x4053,0x1f1));var _0x3405=function(_0x4ff939,_0x5f54ea){_0x4ff939=_0x4ff939-0x0;var _0x3f8ba8=_0x4053[_0x4ff939];return _0x3f8ba8;};'use strict';var _=require(_0x3405('0x0'));var util=require(_0x3405('0x1'));var moment=require(_0x3405('0x2'));var BPromise=require(_0x3405('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x3405('0x4'));var db=require(_0x3405('0x5'))['db'];var utils=require('../../config/utils');var logger=require('../../config/logger')(_0x3405('0x6'));var config=require('../../config/environment');var jayson=require(_0x3405('0x7'));var client=jayson[_0x3405('0x8')][_0x3405('0x9')]({'port':0x232a});config['redis']=_[_0x3405('0xa')](config[_0x3405('0xb')],{'host':'localhost','port':0x18eb});var socket=require(_0x3405('0xc'))(new Redis(config[_0x3405('0xb')]));require(_0x3405('0xd'))[_0x3405('0xe')](socket);function respondWithRpcPromise(_0x2f33e3,_0x38700b,_0x35402e){return new BPromise(function(_0x1273cf,_0x45fe41){return client['request'](_0x2f33e3,_0x35402e)[_0x3405('0xf')](function(_0x55068c){logger[_0x3405('0x10')](_0x3405('0x11'),_0x38700b,'request\x20sent');logger['debug'](_0x3405('0x12'),_0x38700b,'request\x20sent',JSON[_0x3405('0x13')](_0x55068c));if(_0x55068c['error']){if(_0x55068c[_0x3405('0x14')][_0x3405('0x15')]===0x1f4){logger['error'](_0x3405('0x11'),_0x38700b,_0x55068c['error']['message']);return _0x45fe41(_0x55068c['error'][_0x3405('0x16')]);}logger[_0x3405('0x14')](_0x3405('0x11'),_0x38700b,_0x55068c[_0x3405('0x14')]['message']);return _0x1273cf(_0x55068c[_0x3405('0x14')][_0x3405('0x16')]);}else{logger[_0x3405('0x10')](_0x3405('0x11'),_0x38700b,_0x3405('0x17'));_0x1273cf(_0x55068c[_0x3405('0x18')][_0x3405('0x16')]);}})[_0x3405('0x19')](function(_0x7415d3){logger[_0x3405('0x14')]('UserNotification,\x20%s,\x20%s',_0x38700b,_0x7415d3);_0x45fe41(_0x7415d3);});});}
\ No newline at end of file
index d6f62c6..3ac0996 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0xc709=['remove','update','emit','register','userNotification:','./userNotification.events','save'];(function(_0xc19d03,_0x144924){var _0x46123b=function(_0x2dbe20){while(--_0x2dbe20){_0xc19d03['push'](_0xc19d03['shift']());}};_0x46123b(++_0x144924);}(_0xc709,0x132));var _0x9c70=function(_0x11946c,_0x12152c){_0x11946c=_0x11946c-0x0;var _0x383935=_0xc709[_0x11946c];return _0x383935;};'use strict';var UserNotificationEvents=require(_0x9c70('0x0'));var events=[_0x9c70('0x1'),_0x9c70('0x2'),_0x9c70('0x3')];function createListener(_0x3cae09,_0x4ed470){return function(_0x4b9019){_0x4ed470[_0x9c70('0x4')](_0x3cae09,_0x4b9019);};}function removeListener(_0x3f8a29,_0x5efb24){return function(){UserNotificationEvents['removeListener'](_0x3f8a29,_0x5efb24);};}exports[_0x9c70('0x5')]=function(_0x4e986d){for(var _0x1f2a21=0x0,_0x6208eb=events['length'];_0x1f2a21<_0x6208eb;_0x1f2a21++){var _0x3cc5b5=events[_0x1f2a21];var _0x128cef=createListener(_0x9c70('0x6')+_0x3cc5b5,_0x4e986d);UserNotificationEvents['on'](_0x3cc5b5,_0x128cef);}};
\ No newline at end of file
index e78e9a5..e7ccb78 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(_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
+var _0xcb91=['express','Router','../../components/auth/service','../../components/interaction/service','exports','path','connect-timeout'];(function(_0x38bcf8,_0x424e1d){var _0x1803dd=function(_0x2a4961){while(--_0x2a4961){_0x38bcf8['push'](_0x38bcf8['shift']());}};_0x1803dd(++_0x424e1d);}(_0xcb91,0x1a9));var _0x1cb9=function(_0x2a4095,_0x13f4f0){_0x2a4095=_0x2a4095-0x0;var _0x52eeab=_0xcb91[_0x2a4095];return _0x52eeab;};'use strict';var multer=require('multer');var util=require('util');var path=require(_0x1cb9('0x0'));var timeout=require(_0x1cb9('0x1'));var express=require(_0x1cb9('0x2'));var router=express[_0x1cb9('0x3')]();var fs_extra=require('fs-extra');var auth=require(_0x1cb9('0x4'));var interaction=require(_0x1cb9('0x5'));var config=require('../../config/environment');module[_0x1cb9('0x6')]=router;
\ No newline at end of file
index 834242a..568f534 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0xef1c=['sequelize','exports'];(function(_0x4757de,_0x500dc5){var _0x178ec8=function(_0x3c05a6){while(--_0x3c05a6){_0x4757de['push'](_0x4757de['shift']());}};_0x178ec8(++_0x500dc5);}(_0xef1c,0x176));var _0xcef1=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0xef1c[_0x3dd15e];return _0x231fd0;};'use strict';var Sequelize=require(_0xcef1('0x0'));module[_0xcef1('0x1')]={'penalty':{'type':Sequelize['INTEGER'],'defaultValue':0x0}};
\ No newline at end of file
index 9fdfc5c..be3bf70 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0x4be3=['define','UserOpenchannelQueue','lodash','util','../../config/logger','moment','bluebird','request-promise','path','rimraf','../../config/environment','./userOpenchannelQueue.attributes','exports'];(function(_0x2b2b33,_0x56606f){var _0x229157=function(_0x52b63e){while(--_0x52b63e){_0x2b2b33['push'](_0x2b2b33['shift']());}};_0x229157(++_0x56606f);}(_0x4be3,0x9e));var _0x34be=function(_0x4508df,_0x277fd7){_0x4508df=_0x4508df-0x0;var _0x3d80ec=_0x4be3[_0x4508df];return _0x3d80ec;};'use strict';var _=require(_0x34be('0x0'));var util=require(_0x34be('0x1'));var logger=require(_0x34be('0x2'))('api');var moment=require(_0x34be('0x3'));var BPromise=require(_0x34be('0x4'));var rp=require(_0x34be('0x5'));var fs=require('fs');var path=require(_0x34be('0x6'));var rimraf=require(_0x34be('0x7'));var config=require(_0x34be('0x8'));var attributes=require(_0x34be('0x9'));module[_0x34be('0xa')]=function(_0x2e61f0,_0x1835c0){return _0x2e61f0[_0x34be('0xb')](_0x34be('0xc'),attributes,{'tableName':'user_has_openchannel_queues','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 5a55dc3..26525cf 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0xec98=['catch','lodash','util','randomstring','ioredis','../../config/utils','../../config/logger','rpc','../../config/environment','client','http','request','then','info','UserOpenchannelQueue,\x20%s,\x20%s','request\x20sent','debug','stringify','error','code','message','result'];(function(_0x59d065,_0x1144e2){var _0x74fd3c=function(_0x20eea5){while(--_0x20eea5){_0x59d065['push'](_0x59d065['shift']());}};_0x74fd3c(++_0x1144e2);}(_0xec98,0x14b));var _0x8ec9=function(_0x338627,_0x20b189){_0x338627=_0x338627-0x0;var _0x3f03b1=_0xec98[_0x338627];return _0x3f03b1;};'use strict';var _=require(_0x8ec9('0x0'));var util=require(_0x8ec9('0x1'));var moment=require('moment');var BPromise=require('bluebird');var rs=require(_0x8ec9('0x2'));var fs=require('fs');var Redis=require(_0x8ec9('0x3'));var db=require('../../mysqldb')['db'];var utils=require(_0x8ec9('0x4'));var logger=require(_0x8ec9('0x5'))(_0x8ec9('0x6'));var config=require(_0x8ec9('0x7'));var jayson=require('jayson/promise');var client=jayson[_0x8ec9('0x8')][_0x8ec9('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x40f487,_0x46ce28,_0x21228d){return new BPromise(function(_0x3f8b33,_0x116334){return client[_0x8ec9('0xa')](_0x40f487,_0x21228d)[_0x8ec9('0xb')](function(_0x5a9137){logger[_0x8ec9('0xc')](_0x8ec9('0xd'),_0x46ce28,_0x8ec9('0xe'));logger[_0x8ec9('0xf')]('UserOpenchannelQueue,\x20%s,\x20%s,\x20%s',_0x46ce28,_0x8ec9('0xe'),JSON[_0x8ec9('0x10')](_0x5a9137));if(_0x5a9137[_0x8ec9('0x11')]){if(_0x5a9137[_0x8ec9('0x11')][_0x8ec9('0x12')]===0x1f4){logger[_0x8ec9('0x11')](_0x8ec9('0xd'),_0x46ce28,_0x5a9137[_0x8ec9('0x11')]['message']);return _0x116334(_0x5a9137[_0x8ec9('0x11')]['message']);}logger[_0x8ec9('0x11')](_0x8ec9('0xd'),_0x46ce28,_0x5a9137[_0x8ec9('0x11')][_0x8ec9('0x13')]);return _0x3f8b33(_0x5a9137[_0x8ec9('0x11')]['message']);}else{logger[_0x8ec9('0xc')](_0x8ec9('0xd'),_0x46ce28,_0x8ec9('0xe'));_0x3f8b33(_0x5a9137[_0x8ec9('0x14')]['message']);}})[_0x8ec9('0x15')](function(_0x470f0d){logger[_0x8ec9('0x11')](_0x8ec9('0xd'),_0x46ce28,_0x470f0d);_0x116334(_0x470f0d);});});}
\ No newline at end of file
index d2097c1..e1c5dc8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0xe813=['./userProfile.controller','get','isAuthenticated','describe','/:id','/:id/resources','create','/:id/clone','post','addSections','addResources','put','update','delete','destroy','/:id/sections','removeSections','exports','multer','util','path','express','Router','fs-extra','../../components/auth/service','../../config/environment'];(function(_0x4d8cb7,_0x4255e5){var _0x47dfde=function(_0x486326){while(--_0x486326){_0x4d8cb7['push'](_0x4d8cb7['shift']());}};_0x47dfde(++_0x4255e5);}(_0xe813,0x198));var _0x3e81=function(_0x2e913b,_0x4b7071){_0x2e913b=_0x2e913b-0x0;var _0x173899=_0xe813[_0x2e913b];return _0x173899;};'use strict';var multer=require(_0x3e81('0x0'));var util=require(_0x3e81('0x1'));var path=require(_0x3e81('0x2'));var timeout=require('connect-timeout');var express=require(_0x3e81('0x3'));var router=express[_0x3e81('0x4')]();var fs_extra=require(_0x3e81('0x5'));var auth=require(_0x3e81('0x6'));var interaction=require('../../components/interaction/service');var config=require(_0x3e81('0x7'));var controller=require(_0x3e81('0x8'));router[_0x3e81('0x9')]('/',auth['isAuthenticated'](),controller['index']);router[_0x3e81('0x9')]('/describe',auth[_0x3e81('0xa')](),controller[_0x3e81('0xb')]);router[_0x3e81('0x9')](_0x3e81('0xc'),auth[_0x3e81('0xa')](),controller['show']);router[_0x3e81('0x9')]('/:id/sections',auth[_0x3e81('0xa')](),controller['getSections']);router[_0x3e81('0x9')](_0x3e81('0xd'),auth[_0x3e81('0xa')](),controller['getResources']);router['post']('/',auth['isAuthenticated'](),controller[_0x3e81('0xe')]);router['post'](_0x3e81('0xf'),auth[_0x3e81('0xa')](),controller['clone']);router[_0x3e81('0x10')]('/:id/sections',auth[_0x3e81('0xa')](),controller[_0x3e81('0x11')]);router[_0x3e81('0x10')](_0x3e81('0xd'),auth[_0x3e81('0xa')](),controller[_0x3e81('0x12')]);router[_0x3e81('0x13')]('/:id',auth[_0x3e81('0xa')](),controller[_0x3e81('0x14')]);router[_0x3e81('0x15')](_0x3e81('0xc'),auth[_0x3e81('0xa')](),controller[_0x3e81('0x16')]);router[_0x3e81('0x15')](_0x3e81('0x17'),auth['isAuthenticated'](),controller[_0x3e81('0x18')]);router[_0x3e81('0x15')](_0x3e81('0xd'),auth[_0x3e81('0xa')](),controller['removeResources']);module[_0x3e81('0x19')]=router;
\ No newline at end of file
index b277025..5ff2b1b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0x9d38=['setDataValue','crudPermissions','join','getDataValue','BOOLEAN','sequelize','exports','STRING'];(function(_0x3c4178,_0x3e22c4){var _0x3a5d54=function(_0x39aeb6){while(--_0x39aeb6){_0x3c4178['push'](_0x3c4178['shift']());}};_0x3a5d54(++_0x3e22c4);}(_0x9d38,0x11d));var _0x89d3=function(_0x1e97c1,_0x1e5541){_0x1e97c1=_0x1e97c1-0x0;var _0x358b0f=_0x9d38[_0x1e97c1];return _0x358b0f;};'use strict';var Sequelize=require(_0x89d3('0x0'));module[_0x89d3('0x1')]={'name':{'type':Sequelize[_0x89d3('0x2')],'allowNull':![],'unique':'name'},'crudPermissions':{'type':Sequelize[_0x89d3('0x2')],'set':function(_0x311a51){this[_0x89d3('0x3')](_0x89d3('0x4'),_0x311a51?_0x311a51[_0x89d3('0x5')](''):[]);},'get':function(){return this[_0x89d3('0x6')](_0x89d3('0x4'))?this['getDataValue'](_0x89d3('0x4'))['split'](''):[];},'allowNull':![],'defaultValue':'r'},'description':{'type':Sequelize[_0x89d3('0x2')],'allowNull':!![]},'privacyEnabled':{'type':Sequelize[_0x89d3('0x7')],'defaultValue':![]},'downloadAttachments':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'downloadCallySquareRecordings':{'type':Sequelize[_0x89d3('0x7')],'defaultValue':!![]},'downloadContactManagerLists':{'type':Sequelize[_0x89d3('0x7')],'defaultValue':!![]},'downloadJscriptySessions':{'type':Sequelize[_0x89d3('0x7')],'defaultValue':!![]},'downloadOmnichannelInteractions':{'type':Sequelize[_0x89d3('0x7')],'defaultValue':!![]},'downloadScreenRecordings':{'type':Sequelize[_0x89d3('0x7')],'defaultValue':!![]},'downloadVoiceRecordings':{'type':Sequelize[_0x89d3('0x7')],'defaultValue':!![]}};
\ No newline at end of file
index 95852e2..aef0d33 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0x8561=['resourceId','Plugin','addResources','bulkCreate','removeResources','getResources','Missing\x20section\x20parameter','hasOwnProperty','nolimit','No\x20User\x20Profile\x20found\x20for\x20id\x20','rimraf','zip-dir','request-promise','bluebird','util','sox','to-csv','lodash','jsforce','ioredis','../../components/auth/service','../../config/license/hardware','api','../../config/utils','../../config/environment','../../mysqldb','redis','localhost','socket.io-emitter','./userProfile.socket','register','sendStatus','status','end','offset','undefined','count','limit','set','Content-Range','json','apply','reject','update','then','error','name','send','index','map','UserProfile','rawAttributes','fieldName','key','model','query','keys','intersection','attributes','fields','length','order','sort','where','filters','pick','filter','merge','type','options','includeAll','include','findAll','catch','params','find','create','body','clone','get','omit','createdAt','updatedAt','crudPermissions','sequelize','transaction','UserProfileSection','each','sectionId','userProfileId','Resources','destroy','describe','addSections','push','removeSections','ids','enabled','includes','isEmpty','subsections','autoAssociation','UserProfileResource','findOne','Dashboard','forEach'];(function(_0x4f9dc9,_0x51aea3){var _0xb5420d=function(_0x1e5ada){while(--_0x1e5ada){_0x4f9dc9['push'](_0x4f9dc9['shift']());}};_0xb5420d(++_0x51aea3);}(_0x8561,0x1b2));var _0x1856=function(_0x4d3b77,_0x3c789c){_0x4d3b77=_0x4d3b77-0x0;var _0x1a716a=_0x8561[_0x4d3b77];return _0x1a716a;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x1856('0x0'));var zipdir=require(_0x1856('0x1'));var jsonpatch=require('fast-json-patch');var rp=require(_0x1856('0x2'));var moment=require('moment');var BPromise=require(_0x1856('0x3'));var Mustache=require('mustache');var util=require(_0x1856('0x4'));var path=require('path');var sox=require(_0x1856('0x5'));var csv=require(_0x1856('0x6'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x1856('0x7'));var squel=require('squel');var crypto=require('crypto');var jsforce=require(_0x1856('0x8'));var deskjs=require('desk.js');var toCsv=require('to-csv');var querystring=require('querystring');var Papa=require('papaparse');var Redis=require(_0x1856('0x9'));var authService=require(_0x1856('0xa'));var qs=require('../../components/parsers/qs');var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x1856('0xb'));var logger=require('../../config/logger')(_0x1856('0xc'));var utils=require(_0x1856('0xd'));var config=require(_0x1856('0xe'));var licenseUtil=require('../../config/license/util');var db=require(_0x1856('0xf'))['db'];config[_0x1856('0x10')]=_['defaults'](config[_0x1856('0x10')],{'host':_0x1856('0x11'),'port':0x18eb});var socket=require(_0x1856('0x12'))(new Redis(config['redis']));require(_0x1856('0x13'))[_0x1856('0x14')](socket);function respondWithStatusCode(_0x208118,_0x4f5660){_0x4f5660=_0x4f5660||0xcc;return function(_0xf3d2d2){if(_0xf3d2d2){return _0x208118[_0x1856('0x15')](_0x4f5660);}return _0x208118[_0x1856('0x16')](_0x4f5660)[_0x1856('0x17')]();};}function respondWithResult(_0x41d5bc,_0x4bb985){_0x4bb985=_0x4bb985||0xc8;return function(_0x258649){if(_0x258649){return _0x41d5bc['status'](_0x4bb985)['json'](_0x258649);}};}function respondWithFilteredResult(_0x340bcd,_0x5513cd){return function(_0x4ccc42){if(_0x4ccc42){var _0x1de74a=typeof _0x5513cd[_0x1856('0x18')]==='undefined'&&typeof _0x5513cd['limit']===_0x1856('0x19');var _0x40d229=_0x4ccc42[_0x1856('0x1a')];var _0x17ed21=_0x1de74a?0x0:_0x5513cd[_0x1856('0x18')];var _0x2e32d6=_0x1de74a?_0x4ccc42['count']:_0x5513cd[_0x1856('0x18')]+_0x5513cd[_0x1856('0x1b')];var _0x1dd95d;if(_0x2e32d6>=_0x40d229){_0x2e32d6=_0x40d229;_0x1dd95d=0xc8;}else{_0x1dd95d=0xce;}_0x340bcd[_0x1856('0x16')](_0x1dd95d);return _0x340bcd[_0x1856('0x1c')](_0x1856('0x1d'),_0x17ed21+'-'+_0x2e32d6+'/'+_0x40d229)[_0x1856('0x1e')](_0x4ccc42);}return null;};}function patchUpdates(_0x4dd5b2){return function(_0x54749f){try{jsonpatch[_0x1856('0x1f')](_0x54749f,_0x4dd5b2,!![]);}catch(_0x31df72){return BPromise[_0x1856('0x20')](_0x31df72);}return _0x54749f['save']();};}function saveUpdates(_0x389ed6,_0x327010){return function(_0x19c209){if(_0x19c209){return _0x19c209[_0x1856('0x21')](_0x389ed6)['then'](function(_0xfd069f){return _0xfd069f;});}return null;};}function removeEntity(_0x25b98d,_0x195546){return function(_0x258ad1){if(_0x258ad1){return _0x258ad1['destroy']()[_0x1856('0x22')](function(){_0x25b98d[_0x1856('0x16')](0xcc)['end']();});}};}function handleEntityNotFound(_0x353d7d,_0x5c5a90){return function(_0x46d381){if(!_0x46d381){_0x353d7d['sendStatus'](0x194);}return _0x46d381;};}function handleError(_0x29df8d,_0xe36144){_0xe36144=_0xe36144||0x1f4;return function(_0x1416b3){logger[_0x1856('0x23')](_0x1416b3['stack']);if(_0x1416b3[_0x1856('0x24')]){delete _0x1416b3[_0x1856('0x24')];}_0x29df8d[_0x1856('0x16')](_0xe36144)[_0x1856('0x25')](_0x1416b3);};}exports[_0x1856('0x26')]=function(_0x42782a,_0x4b0deb){var _0x2fbe7b={},_0x16ca12={},_0x35428a={'count':0x0,'rows':[]};var _0x48e78f=_[_0x1856('0x27')](db[_0x1856('0x28')][_0x1856('0x29')],function(_0x5e0e2e){return{'name':_0x5e0e2e[_0x1856('0x2a')],'type':_0x5e0e2e['type'][_0x1856('0x2b')]};});_0x16ca12[_0x1856('0x2c')]=_[_0x1856('0x27')](_0x48e78f,_0x1856('0x24'));_0x16ca12[_0x1856('0x2d')]=_[_0x1856('0x2e')](_0x42782a[_0x1856('0x2d')]);_0x16ca12['filters']=_[_0x1856('0x2f')](_0x16ca12[_0x1856('0x2c')],_0x16ca12[_0x1856('0x2d')]);_0x2fbe7b[_0x1856('0x30')]=_[_0x1856('0x2f')](_0x16ca12['model'],qs[_0x1856('0x31')](_0x42782a[_0x1856('0x2d')][_0x1856('0x31')]));_0x2fbe7b['attributes']=_0x2fbe7b[_0x1856('0x30')][_0x1856('0x32')]?_0x2fbe7b[_0x1856('0x30')]:_0x16ca12[_0x1856('0x2c')];if(!_0x42782a[_0x1856('0x2d')]['hasOwnProperty']('nolimit')){_0x2fbe7b['limit']=qs[_0x1856('0x1b')](_0x42782a['query'][_0x1856('0x1b')]);_0x2fbe7b[_0x1856('0x18')]=qs['offset'](_0x42782a['query'][_0x1856('0x18')]);}_0x2fbe7b[_0x1856('0x33')]=qs[_0x1856('0x34')](_0x42782a[_0x1856('0x2d')]['sort']);_0x2fbe7b[_0x1856('0x35')]=qs[_0x1856('0x36')](_[_0x1856('0x37')](_0x42782a[_0x1856('0x2d')],_0x16ca12[_0x1856('0x36')]),_0x48e78f);if(_0x42782a[_0x1856('0x2d')][_0x1856('0x38')]){_0x2fbe7b['where']=_[_0x1856('0x39')](_0x2fbe7b[_0x1856('0x35')],{'$or':_['map'](_0x48e78f,function(_0x1d7c71){if(_0x1d7c71[_0x1856('0x3a')]!=='VIRTUAL'){var _0x5d8178={};_0x5d8178[_0x1d7c71[_0x1856('0x24')]]={'$like':'%'+_0x42782a[_0x1856('0x2d')][_0x1856('0x38')]+'%'};return _0x5d8178;}})});}_0x2fbe7b=_[_0x1856('0x39')]({},_0x2fbe7b,_0x42782a[_0x1856('0x3b')]);var _0x2049d1={'where':_0x2fbe7b['where']};return db[_0x1856('0x28')]['count'](_0x2049d1)[_0x1856('0x22')](function(_0x15608f){_0x35428a['count']=_0x15608f;if(_0x42782a[_0x1856('0x2d')][_0x1856('0x3c')]){_0x2fbe7b[_0x1856('0x3d')]=[{'all':!![]}];}return db[_0x1856('0x28')][_0x1856('0x3e')](_0x2fbe7b);})[_0x1856('0x22')](function(_0xf534ab){_0x35428a['rows']=_0xf534ab;return _0x35428a;})['then'](respondWithFilteredResult(_0x4b0deb,_0x2fbe7b))[_0x1856('0x3f')](handleError(_0x4b0deb,null));};exports['show']=function(_0x490daf,_0x41b4b7){var _0x5d448b={'raw':![],'where':{'id':_0x490daf[_0x1856('0x40')]['id']}},_0x591e24={};_0x591e24[_0x1856('0x2c')]=_[_0x1856('0x2e')](db[_0x1856('0x28')][_0x1856('0x29')]);_0x591e24[_0x1856('0x2d')]=_[_0x1856('0x2e')](_0x490daf[_0x1856('0x2d')]);_0x591e24[_0x1856('0x36')]=_[_0x1856('0x2f')](_0x591e24['model'],_0x591e24[_0x1856('0x2d')]);_0x5d448b[_0x1856('0x30')]=_[_0x1856('0x2f')](_0x591e24[_0x1856('0x2c')],qs[_0x1856('0x31')](_0x490daf['query'][_0x1856('0x31')]));_0x5d448b[_0x1856('0x30')]=_0x5d448b[_0x1856('0x30')][_0x1856('0x32')]?_0x5d448b[_0x1856('0x30')]:_0x591e24['model'];if(_0x490daf[_0x1856('0x2d')][_0x1856('0x3c')]){_0x5d448b[_0x1856('0x3d')]=[{'all':!![]}];}_0x5d448b=_['merge']({},_0x5d448b,_0x490daf['options']);return db['UserProfile'][_0x1856('0x41')](_0x5d448b)[_0x1856('0x22')](handleEntityNotFound(_0x41b4b7,null))[_0x1856('0x22')](respondWithResult(_0x41b4b7,null))[_0x1856('0x3f')](handleError(_0x41b4b7,null));};exports[_0x1856('0x42')]=function(_0x4b2aa7,_0x24bf19){return db[_0x1856('0x28')][_0x1856('0x42')](_0x4b2aa7[_0x1856('0x43')],{})['then'](respondWithResult(_0x24bf19,0xc9))[_0x1856('0x3f')](handleError(_0x24bf19,null));};exports[_0x1856('0x44')]=function(_0x4f0cf1,_0xfe027a){var _0x30d326={'where':{'id':_0x4f0cf1[_0x1856('0x40')]['id']}},_0x26c6b2={};_0x26c6b2[_0x1856('0x2c')]=_[_0x1856('0x2e')](db[_0x1856('0x28')][_0x1856('0x29')]);_0x30d326['attributes']=_[_0x1856('0x2f')](_0x26c6b2['model'],qs['fields'](_0x4f0cf1[_0x1856('0x2d')]['fields']));_0x30d326[_0x1856('0x30')]=_0x30d326[_0x1856('0x30')][_0x1856('0x32')]?_0x30d326[_0x1856('0x30')]:_0x26c6b2[_0x1856('0x2c')];if(_0x4f0cf1[_0x1856('0x2d')]['includeAll']){_0x30d326[_0x1856('0x3d')]=[{'all':!![]}];}_0x30d326=_[_0x1856('0x39')]({},_0x30d326,_0x4f0cf1['options']);return db[_0x1856('0x28')][_0x1856('0x41')](_0x30d326)[_0x1856('0x22')](handleEntityNotFound(_0xfe027a,null))[_0x1856('0x22')](function(_0x5beae8){if(_0x5beae8){var _0x1dfe52=_0x5beae8[_0x1856('0x45')]({'plain':!![]});_0x1dfe52=qs[_0x1856('0x46')](_0x1dfe52,['id',_0x1856('0x47'),_0x1856('0x48'),_0x1856('0x49')]);_0x4f0cf1['body']=_['omit'](_0x4f0cf1[_0x1856('0x43')],['id',_0x1856('0x47'),'updatedAt']);return db[_0x1856('0x4a')][_0x1856('0x4b')](function(_0x15d3b4){return db[_0x1856('0x28')][_0x1856('0x42')](_['merge'](_0x1dfe52,_0x4f0cf1[_0x1856('0x43')]),{'include':_0x4f0cf1[_0x1856('0x2d')][_0x1856('0x3c')]?[{'all':!![]}]:undefined,'transaction':_0x15d3b4})[_0x1856('0x22')](function(_0xec318d){var _0x1f091b=_0xec318d[_0x1856('0x45')]({'plain':!![]});return db[_0x1856('0x4c')]['findAll']({'where':{'userProfileId':_0x4f0cf1[_0x1856('0x40')]['id']},'raw':!![]})[_0x1856('0x22')](function(_0x5d0fa7){if(_0x5d0fa7){return BPromise[_0x1856('0x4d')](_0x5d0fa7,function(_0x4f405d){return new BPromise(function(_0x5f4146,_0x2301ae){if(_0x4f405d['autoAssociation']===null||_0x4f405d['autoAssociation']===0x1)_0x5f4146(null);return db['UserProfileResource'][_0x1856('0x3e')]({'where':{'sectionId':_0x4f405d['id']},'raw':!![]})[_0x1856('0x22')](function(_0x98740a){var _0x242e54=_[_0x1856('0x27')](_0x98740a,function(_0x616f88){return qs[_0x1856('0x46')](_0x616f88,['id','createdAt',_0x1856('0x48'),_0x1856('0x4e')]);});_0x5f4146(_0x242e54);})[_0x1856('0x3f')](function(_0x1fa112){_0x2301ae(_0x1fa112);});})[_0x1856('0x22')](function(_0x1e3ba7){var _0x1b9d76=qs['omit'](_0x4f405d,['id',_0x1856('0x47'),'updatedAt']);_0x1b9d76[_0x1856('0x4f')]=_0x1f091b['id'];if(_0x1e3ba7)_0x1b9d76[_0x1856('0x50')]=_0x1e3ba7;return _0x1b9d76;})[_0x1856('0x22')](function(_0x4db713){return db['UserProfileSection'][_0x1856('0x42')](_0x4db713,{'include':[{'model':db['UserProfileResource'],'as':'Resources'}],'raw':!![],'transaction':_0x15d3b4});});})[_0x1856('0x22')](function(){return _0x1f091b;});}});});});}})[_0x1856('0x22')](respondWithResult(_0xfe027a,0xc9))[_0x1856('0x3f')](handleError(_0xfe027a,null));};exports[_0x1856('0x21')]=function(_0x23102e,_0x238deb){if(_0x23102e['body']['id']){delete _0x23102e[_0x1856('0x43')]['id'];}return db[_0x1856('0x28')]['find']({'where':{'id':_0x23102e[_0x1856('0x40')]['id']}})['then'](handleEntityNotFound(_0x238deb,null))['then'](saveUpdates(_0x23102e[_0x1856('0x43')],null))[_0x1856('0x22')](respondWithResult(_0x238deb,null))[_0x1856('0x3f')](handleError(_0x238deb,null));};exports[_0x1856('0x51')]=function(_0x33b81c,_0xe46272){return db[_0x1856('0x28')]['find']({'where':{'id':_0x33b81c[_0x1856('0x40')]['id']}})[_0x1856('0x22')](handleEntityNotFound(_0xe46272,null))[_0x1856('0x22')](removeEntity(_0xe46272,null))[_0x1856('0x3f')](handleError(_0xe46272,null));};exports[_0x1856('0x52')]=function(_0x7eef75,_0x5d4452){return db[_0x1856('0x28')]['describe']()[_0x1856('0x22')](respondWithResult(_0x5d4452,null))[_0x1856('0x3f')](handleError(_0x5d4452,null));};exports[_0x1856('0x53')]=function(_0x2eb1ab,_0x1cb324){var _0x480b2e=_0x2eb1ab[_0x1856('0x43')];return db[_0x1856('0x28')][_0x1856('0x41')]({'where':{'id':_0x2eb1ab['params']['id']}})[_0x1856('0x22')](handleEntityNotFound(_0x1cb324,null))[_0x1856('0x22')](function(_0x59e77d){if(_0x59e77d){return db[_0x1856('0x4a')][_0x1856('0x4b')](function(_0x57dd34){return db[_0x1856('0x4c')][_0x1856('0x51')]({'where':{'userProfileId':_0x2eb1ab[_0x1856('0x40')]['id'],'sectionId':_[_0x1856('0x27')](_0x480b2e,function(_0x4302c8){return _0x4302c8[_0x1856('0x4e')];})},'transaction':_0x57dd34})[_0x1856('0x22')](function(){var _0x265eb7=_[_0x1856('0x27')](_0x480b2e,function(_0x2c73a5){_0x2c73a5[_0x1856('0x4f')]=_0x2eb1ab[_0x1856('0x40')]['id'];return _0x2c73a5;});var _0x4f8a1b=[];return BPromise[_0x1856('0x4d')](_0x265eb7,function(_0x47d7f0){return db[_0x1856('0x4c')][_0x1856('0x42')](_0x47d7f0,{'include':[{'model':db['UserProfileResource'],'as':_0x1856('0x50')}],'raw':!![],'transaction':_0x57dd34})[_0x1856('0x22')](function(_0x40e835){_0x4f8a1b[_0x1856('0x54')](_0x40e835[_0x1856('0x45')]({'plain':!![]}));});})['then'](function(){return _0x4f8a1b;});});});}})[_0x1856('0x22')](function(_0x16c3c9){return _0x16c3c9;})['then'](respondWithResult(_0x1cb324,null))['catch'](handleError(_0x1cb324,null));};exports[_0x1856('0x55')]=function(_0x19468a,_0x3309f2){var _0x47d835;return db[_0x1856('0x28')][_0x1856('0x41')]({'where':{'id':_0x19468a[_0x1856('0x40')]['id']},'attributes':['id',_0x1856('0x24')]})[_0x1856('0x22')](handleEntityNotFound(_0x3309f2,null))[_0x1856('0x22')](function(_0x13d825){if(_0x13d825){_0x47d835=_0x13d825;return db['UserProfileSection'][_0x1856('0x51')]({'where':{'userProfileId':_0x19468a[_0x1856('0x40')]['id'],'sectionId':_0x19468a[_0x1856('0x2d')][_0x1856('0x56')]}});}})[_0x1856('0x22')](function(){return _0x47d835;})['then'](respondWithStatusCode(_0x3309f2,null))[_0x1856('0x3f')](handleError(_0x3309f2,null));};exports['getSections']=function(_0x4a8d87,_0x3afdf7){var _0x5101ee=[];var _0x546c57=[];return db['UserProfileSection'][_0x1856('0x3e')]({'where':{'userProfileId':_0x4a8d87[_0x1856('0x40')]['id']},'raw':!![]})[_0x1856('0x22')](function(_0x5d2d32){_0x5101ee=_[_0x1856('0x38')](_0x5d2d32,function(_0x4db0c5){return _0x4db0c5[_0x1856('0x57')]===0x1||_[_0x1856('0x58')]([0x3eb,0x709],_0x4db0c5[_0x1856('0x4e')]);});if(!_[_0x1856('0x59')](_0x5101ee)){return _[_0x1856('0x27')](_0x5101ee,function(_0x13487e){return _0x13487e[_0x1856('0x4e')];});}else{return;}})['then'](function(_0x47a0ca){if(_0x47a0ca)_0x546c57=_0x47a0ca;if(_[_0x1856('0x58')](_0x546c57,0x64)){var _0x2e5c86=_[_0x1856('0x41')](_0x5101ee,{'sectionId':0x64});return hasDefaultDashboard(_0x2e5c86)[_0x1856('0x22')](function(_0x44b0da){return _[_0x1856('0x27')](_0x5101ee,function(_0x22bf2e){if(_0x22bf2e[_0x1856('0x4e')]===0x64){_0x22bf2e[_0x1856('0x5a')]=_0x44b0da;}return _0x22bf2e;});});}else{return;}})[_0x1856('0x22')](function(_0x3ee424){if(_0x3ee424)_0x5101ee=_0x3ee424;if(_[_0x1856('0x58')](_0x546c57,0x3eb)){var _0x5a17f8=_[_0x1856('0x41')](_0x5101ee,{'sectionId':0x3eb});return getCustomDashboards(_0x5a17f8)[_0x1856('0x22')](function(_0x365831){return _['map'](_0x5101ee,function(_0x5a30cc){if(_0x5a17f8[_0x1856('0x57')]){if(_0x5a30cc['sectionId']===0x3eb){_0x5a30cc[_0x1856('0x5a')]=_0x365831;}}else{if(_0x5a30cc[_0x1856('0x4e')]===0x64){_0x5a30cc[_0x1856('0x5a')]=_0x365831;}}return _0x5a30cc;});});}else{return;}})[_0x1856('0x22')](function(_0x34207d){if(_0x34207d)_0x5101ee=_0x34207d;if(_['includes'](_0x546c57,0x709)){var _0x5383f7=_[_0x1856('0x41')](_0x5101ee,{'sectionId':0x709});return getPlugins(_0x5383f7)[_0x1856('0x22')](function(_0x2c754b){if(_0x5383f7[_0x1856('0x57')]){return _[_0x1856('0x27')](_0x5101ee,function(_0x58adb7){if(_0x58adb7[_0x1856('0x4e')]===0x709){_0x58adb7[_0x1856('0x5a')]=_0x2c754b;}return _0x58adb7;});}else{var _0x130576={'sectionId':0x76c,'enabled':0x1,'subsections':_0x2c754b};var _0x44f942=_['map'](_0x5101ee);_0x44f942[_0x1856('0x54')](_0x130576);return _0x44f942;}});}else{return;}})['then'](function(_0x5bc978){if(_0x5bc978)_0x5101ee=_0x5bc978;return _['filter'](_0x5101ee,['enabled',0x1]);})[_0x1856('0x22')](respondWithResult(_0x3afdf7,null))['catch'](handleError(_0x3afdf7,null));};function hasDefaultDashboard(_0x1852f2){var _0x267c66=[0x65];return new BPromise(function(_0x28327e,_0x3f68f1){try{if(_0x1852f2[_0x1856('0x5b')]){_0x28327e(_0x267c66);}else{return db[_0x1856('0x5c')][_0x1856('0x5d')]({'where':{'sectionId':_0x1852f2['id']},'raw':!![]})[_0x1856('0x22')](function(_0x5aacb6){_0x5aacb6?_0x28327e(_0x267c66):_0x28327e();});}}catch(_0x2d0b15){_0x3f68f1(_0x2d0b15);}});}function getCustomDashboards(_0x232c57){var _0x495027=[];return new BPromise(function(_0x2ca6d8,_0x245723){try{if(_0x232c57[_0x1856('0x5b')]){return db[_0x1856('0x5e')][_0x1856('0x3e')]({'raw':!![]})[_0x1856('0x22')](function(_0x37b433){_0x37b433['forEach'](function(_0x2e10ba){_0x495027[_0x1856('0x54')](_0x2e10ba['id']+0x1869f);});_0x2ca6d8(_0x495027);});}else{return db[_0x1856('0x5c')]['findAll']({'where':{'sectionId':_0x232c57['id']},'raw':!![]})[_0x1856('0x22')](function(_0x24ce0d){_0x24ce0d[_0x1856('0x5f')](function(_0x1766e6){_0x495027['push'](_0x1766e6[_0x1856('0x60')]+0x1869f);});_0x2ca6d8(_0x495027);});}}catch(_0x39a60c){_0x245723(_0x39a60c);}});}function getPlugins(_0x58f88c){var _0x2a9b68=[];return new BPromise(function(_0x1aa4eb,_0x53fc19){try{if(_0x58f88c[_0x1856('0x5b')]){return db[_0x1856('0x61')][_0x1856('0x3e')]({'raw':!![]})[_0x1856('0x22')](function(_0x45e4ee){_0x45e4ee[_0x1856('0x5f')](function(_0x463894){_0x2a9b68[_0x1856('0x54')](_0x463894['id']+0x15b38);});_0x1aa4eb(_0x2a9b68);});}else{return db[_0x1856('0x5c')][_0x1856('0x3e')]({'where':{'sectionId':_0x58f88c['id']},'raw':!![]})[_0x1856('0x22')](function(_0x542bed){_0x542bed[_0x1856('0x5f')](function(_0x33a510){_0x2a9b68['push'](_0x33a510['resourceId']+0x15b38);});_0x1aa4eb(_0x2a9b68);});}}catch(_0x162938){_0x53fc19(_0x162938);}});}exports[_0x1856('0x62')]=function(_0x5b8553,_0x5c125c){return db[_0x1856('0x28')][_0x1856('0x41')]({'where':{'id':_0x5b8553[_0x1856('0x40')]['id']}})[_0x1856('0x22')](handleEntityNotFound(_0x5c125c,null))['then'](function(_0x2684bf){if(_0x2684bf){return db['sequelize'][_0x1856('0x4b')](function(_0xd3ba60){return db['UserProfileSection'][_0x1856('0x3e')]({'where':{'userProfileId':_0x5b8553[_0x1856('0x40')]['id']},'attributes':['id'],'raw':!![]})[_0x1856('0x22')](function(_0xa2b655){if(_0xa2b655){return db[_0x1856('0x4c')][_0x1856('0x51')]({'where':{'userProfileId':_0x5b8553[_0x1856('0x40')]['id'],'id':_[_0x1856('0x27')](_0xa2b655,function(_0x27722d){return _0x27722d['id'];})},'transaction':_0xd3ba60});}})[_0x1856('0x22')](function(_0x7d8476){var _0x341937=_[_0x1856('0x27')](_0x5b8553['body'],function(_0x8533b6){_0x8533b6[_0x1856('0x4f')]=_0x5b8553['params']['id'];return _0x8533b6;});return db[_0x1856('0x4c')][_0x1856('0x63')](_0x341937,{'raw':!![],'transaction':_0xd3ba60});})[_0x1856('0x22')](function(_0x39239a){var _0x45a1dc=_['filter'](_[_0x1856('0x27')](_0x39239a,function(_0x24191a){return _0x24191a['get']({'plain':!![]});}),{'includeAll':![]});if(_0x45a1dc){return db[_0x1856('0x4c')][_0x1856('0x3e')]({'where':{'userProfileId':_0x5b8553[_0x1856('0x40')]['id'],'sectionId':_[_0x1856('0x27')](_0x45a1dc,function(_0x44b175){return _0x44b175[_0x1856('0x4e')];})},'attributes':['id',_0x1856('0x4e')],'raw':!![]})[_0x1856('0x22')](function(_0x4b3f30){var _0x3e76f0=_[_0x1856('0x27')](_0x5b8553[_0x1856('0x43')],function(_0x6242db){_0x6242db[_0x1856('0x4f')]=_0x5b8553[_0x1856('0x40')]['id'];return _0x6242db;});return db['UserProfileResource']['bulkCreate'](_0x3e76f0,{'raw':!![],'transaction':_0xd3ba60});});}})[_0x1856('0x3f')](handleError(_0x5c125c,null));});}})[_0x1856('0x22')](function(_0xbab618){var _0x19c401=_['map'](_0xbab618,function(_0x2e2d0b){return _0x2e2d0b['get']({'plain':!![]});});})[_0x1856('0x22')](respondWithResult(_0x5c125c,null))[_0x1856('0x3f')](handleError(_0x5c125c,null));};exports[_0x1856('0x64')]=function(_0x23a22e,_0x4e2ef7,_0x4064da){return db[_0x1856('0x28')]['find']({'where':{'id':_0x23a22e[_0x1856('0x40')]['id']}})[_0x1856('0x22')](handleEntityNotFound(_0x4e2ef7,null))[_0x1856('0x22')](function(_0x4e3859){if(_0x4e3859){return _0x4e3859[_0x1856('0x64')](_0x23a22e[_0x1856('0x2d')][_0x1856('0x56')]);}})[_0x1856('0x22')](respondWithStatusCode(_0x4e2ef7,null))[_0x1856('0x3f')](handleError(_0x4e2ef7,null));};exports[_0x1856('0x65')]=function(_0x412032,_0x4fa62f){var _0x268656={};if(!_0x412032[_0x1856('0x2d')]['section'])throw new Error(_0x1856('0x66'));if(!_0x412032[_0x1856('0x2d')][_0x1856('0x67')](_0x1856('0x68'))){_0x268656['limit']=qs[_0x1856('0x1b')](_0x412032[_0x1856('0x2d')][_0x1856('0x1b')]);_0x268656['offset']=qs[_0x1856('0x18')](_0x412032[_0x1856('0x2d')][_0x1856('0x18')]);}return db[_0x1856('0x28')][_0x1856('0x41')]({'where':{'id':_0x412032[_0x1856('0x40')]['id']}})[_0x1856('0x22')](function(_0x243696){if(!_0x243696)throw new Error(_0x1856('0x69')+_0x412032[_0x1856('0x40')]['id']);return db['UserProfile']['getResources'](_0x412032);})[_0x1856('0x22')](respondWithFilteredResult(_0x4fa62f,_0x268656))[_0x1856('0x3f')](handleError(_0x4fa62f,null));};
\ No newline at end of file
index e6b01f9..ec9af40 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0x0650=['update','emit','exports','events','UserProfile','setMaxListeners'];(function(_0x5af628,_0x8d19d3){var _0x55e8e6=function(_0xbac449){while(--_0xbac449){_0x5af628['push'](_0x5af628['shift']());}};_0x55e8e6(++_0x8d19d3);}(_0x0650,0xed));var _0x0065=function(_0x3a00f6,_0x1bf634){_0x3a00f6=_0x3a00f6-0x0;var _0x151ff5=_0x0650[_0x3a00f6];return _0x151ff5;};'use strict';var EventEmitter=require(_0x0065('0x0'));var UserProfile=require('../../mysqldb')['db'][_0x0065('0x1')];var UserProfileEvents=new EventEmitter();UserProfileEvents[_0x0065('0x2')](0x0);var events={'afterCreate':'save','afterUpdate':_0x0065('0x3'),'afterDestroy':'remove'};function emitEvent(_0x2e05a4){return function(_0x8260ba,_0x3dd8c6,_0x4b15b1){UserProfileEvents[_0x0065('0x4')](_0x2e05a4+':'+_0x8260ba['id'],_0x8260ba);UserProfileEvents['emit'](_0x2e05a4,_0x8260ba);_0x4b15b1(null);};}for(var e in events){if(events['hasOwnProperty'](e)){var event=events[e];UserProfile['hook'](e,emitEvent(event));}}module[_0x0065('0x5')]=UserProfileEvents;
\ No newline at end of file
index dbc1521..9099da5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0xb482=['voicequeues','queuecampaigns','VoiceQueues','users','User','Users','user','ZendeskAccount','salesforceaccounts','SalesforceAccount','freshdeskaccounts','FreshdeskAccount','SugarcrmAccount','deskaccounts','DeskAccount','zohoaccounts','ZohoAccount','vtigeraccounts','CannedAnswer','dispositions','Disposition','pauses','Schedule','sounds','Sound','tags','Tag','templates','Template','triggers','Trigger','Trunk','Variable','plugins','reportId','metrics','AnalyticMetric','charAt','toUpperCase','slice','QueryTypes','SELECT','ui.','ui.createdAt','from','user_has_','where','ui.UserId\x20=\x20?','sequelize','query','toString','OpenTabs','define','UserProfile','user_profiles','raw','section','mergeResources','Invalid\x20section\x20\x27','isEmpty','length','push','UserProfileSection','find','params','ignore','union','autoAssociation','all','filters','intersection','attributes','fields','hasOwnProperty','nolimit','limit','offset','order','sort','pick','merge','key','VIRTUAL','foreignKey','forEach','AnalyticExtractedReport','include','default','DefaultReports','custom','CustomReports','ids','customSorting','extraQueryConditions','count','Tags','color','tag','rows','openTabs','true','chat','dataValues','sms','fax','mail','openchannel','./userProfile.attributes','squel','exports','models','filter','field','value','findAll','then','catch','model','associatedResources','resolve','UserProfileResource','map','resourceId','type','toLowerCase','squareprojects','SquareProject','odbc','SquareOdbc','parentSections','SquareProjects','name','projectName','childModel','JscriptyProject','contacts','Lists','ListId','companies','CmCompany','globalcustomfields','CmCustomField','chatqueues','ChatQueue','chatwebsites','faxqueues','FaxQueue','inboundroutes','internalroutes','outboundroutes','VoiceExtension','contexts','voicemails','VoiceMail','Agents','membername','agent','Telephones','role','telephone','queue','VoiceQueue','inbound','QueueCampaigns','musiconholds','chanspies','voiceprefixes','VoicePrefix','ivrcampaigns','mailqueues','MailQueue','mailaccounts','MailAccount','mailsubstatuses','MailSubstatus','openchannelqueues','OpenchannelQueue','OpenchannelAccount','SmsQueue','smsaccounts','SmsAccount','whatsappqueues','WhatsappQueue','whatsappaccounts','WhatsappAccount','Team'];(function(_0x710815,_0x520da8){var _0x5b3b89=function(_0x2e1a8e){while(--_0x2e1a8e){_0x710815['push'](_0x710815['shift']());}};_0x5b3b89(++_0x520da8);}(_0xb482,0x125));var _0x2b48=function(_0x266c40,_0x491fa6){_0x266c40=_0x266c40-0x0;var _0x2dbdca=_0xb482[_0x266c40];return _0x2dbdca;};'use strict';var _=require('lodash');var attributes=require(_0x2b48('0x0'));var qs=require('../../components/parsers/qs');var squel=require(_0x2b48('0x1'));module[_0x2b48('0x2')]=function(_0x187ccb){var _0x300283=_0x187ccb[_0x2b48('0x3')];function _0x31a82e(_0x2cec18,_0x1edfc3){return new Promise(function(_0x4fa7d3,_0x3a3e81){if(!_0x1edfc3)return _0x4fa7d3(null);var _0x3da84c=_0x1edfc3[_0x2b48('0x4')]?{[_0x1edfc3['filter'][_0x2b48('0x5')]]:_0x1edfc3[_0x2b48('0x4')][_0x2b48('0x6')]}:undefined;return _0x300283[_0x2cec18][_0x2b48('0x7')]({'where':_0x3da84c,'raw':!![]})[_0x2b48('0x8')](function(_0x30d71e){_0x1edfc3['associatedResources']=_['map'](_0x30d71e,'id');_0x4fa7d3(_0x1edfc3);})[_0x2b48('0x9')](function(_0x3bea85){_0x3a3e81(_0x3bea85);});});}function _0x5a68e4(_0x96495d,_0x3af603){return new Promise(function(_0x296180,_0x3cff24){var _0x330df1=_0x96495d[_0x2b48('0x4')]?{[_0x96495d[_0x2b48('0x4')][_0x2b48('0x5')]]:_0x96495d[_0x2b48('0x4')][_0x2b48('0x6')]}:undefined;return _0x300283[_0x96495d[_0x2b48('0xa')]][_0x2b48('0x7')]({'where':_0x330df1,'raw':!![]})[_0x2b48('0x8')](function(_0x5da9c3){_0x3af603[_0x2b48('0xb')]=_['map'](_0x5da9c3,function(_0x964215){return _0x964215['name'];});_0x296180(_0x3af603);})['catch'](function(_0x5ca33f){_0x3cff24(_0x5ca33f);});});}function _0x5fa4f(_0x174a7f,_0x96b50b,_0xdfbb13){if(!_0x96b50b)return Promise[_0x2b48('0xc')](null);return new Promise(function(_0x37a472,_0x16d1a0){return _0x300283[_0x2b48('0xd')][_0x2b48('0x7')]({'where':{'sectionId':_0x96b50b['id']},'raw':!![]})[_0x2b48('0x8')](function(_0x528e81){if(_0x174a7f[_0x2b48('0x5')]&&_0x174a7f[_0x2b48('0x5')]!=='id'){_0x96b50b['associatedResources']=_[_0x2b48('0xe')](_0x528e81,function(_0x7dbe35){return _0x7dbe35[_0x174a7f['field']];});}else{if(_0xdfbb13==='AnalyticExtractedReport'){_0x96b50b[_0x2b48('0xb')]=_[_0x2b48('0xe')](_0x528e81,function(_0x30e639){return{'id':_0x30e639[_0x2b48('0xf')],'type':_0x30e639[_0x2b48('0x10')]};});}else{_0x96b50b[_0x2b48('0xb')]=_[_0x2b48('0xe')](_0x528e81,function(_0x324c22){return _0x324c22['resourceId'];});}}_0x37a472(_0x96b50b);})[_0x2b48('0x9')](function(_0x38414d){_0x16d1a0(_0x38414d);});});}function _0x455643(_0x5e36f1,_0x289f27){var _0x25f12a={'parentSections':[]};switch(_0x5e36f1[_0x2b48('0x11')]()){case _0x2b48('0x12'):_0x25f12a['childModel']=_0x2b48('0x13');break;case _0x2b48('0x14'):_0x25f12a['childModel']=_0x2b48('0x15');break;case'squarerecordings':_0x25f12a['childModel']='SquareRecording';_0x25f12a[_0x2b48('0x16')]=[{'name':_0x2b48('0x17'),'field':_0x2b48('0x18'),'foreignKey':_0x2b48('0x19')}];break;case'projects':_0x25f12a[_0x2b48('0x1a')]=_0x2b48('0x1b');break;case _0x2b48('0x1c'):_0x25f12a[_0x2b48('0x1a')]='CmContact';_0x25f12a[_0x2b48('0x16')]=[{'name':_0x2b48('0x1d'),'field':'id','foreignKey':_0x2b48('0x1e')}];break;case'lists':_0x25f12a['childModel']='CmList';break;case _0x2b48('0x1f'):_0x25f12a['childModel']=_0x2b48('0x20');break;case _0x2b48('0x21'):_0x25f12a[_0x2b48('0x1a')]=_0x2b48('0x22');break;case _0x2b48('0x23'):_0x25f12a[_0x2b48('0x1a')]=_0x2b48('0x24');break;case _0x2b48('0x25'):_0x25f12a[_0x2b48('0x1a')]='ChatWebsite';break;case _0x2b48('0x26'):_0x25f12a[_0x2b48('0x1a')]=_0x2b48('0x27');break;case'faxaccounts':_0x25f12a[_0x2b48('0x1a')]='FaxAccount';break;case _0x2b48('0x28'):case _0x2b48('0x29'):case _0x2b48('0x2a'):_0x25f12a[_0x2b48('0x1a')]=_0x2b48('0x2b');break;case _0x2b48('0x2c'):_0x25f12a[_0x2b48('0x1a')]='VoiceContext';break;case _0x2b48('0x2d'):_0x25f12a['childModel']=_0x2b48('0x2e');break;case'voicerecordings':_0x25f12a[_0x2b48('0x1a')]='VoiceRecording';_0x25f12a[_0x2b48('0x16')]=[{'name':_0x2b48('0x2f'),'field':_0x2b48('0x18'),'foreignKey':_0x2b48('0x30'),'model':'User','filter':{'field':'role','value':[_0x2b48('0x31')]}},{'name':_0x2b48('0x32'),'field':_0x2b48('0x18'),'foreignKey':_0x2b48('0x30'),'model':'User','filter':{'field':_0x2b48('0x33'),'value':[_0x2b48('0x34')]}},{'name':'VoiceQueues','field':'name','foreignKey':_0x2b48('0x35'),'model':_0x2b48('0x36'),'filter':{'field':_0x2b48('0x10'),'value':[_0x2b48('0x37')]}},{'name':_0x2b48('0x38'),'field':'name','foreignKey':_0x2b48('0x35'),'model':_0x2b48('0x36'),'filter':{'field':_0x2b48('0x10'),'value':['outbound']}}];break;case _0x2b48('0x39'):_0x25f12a[_0x2b48('0x1a')]='VoiceMusicOnHold';break;case _0x2b48('0x3a'):_0x25f12a[_0x2b48('0x1a')]='VoiceChanSpy';break;case _0x2b48('0x3b'):_0x25f12a['childModel']=_0x2b48('0x3c');break;case _0x2b48('0x3d'):_0x25f12a['childModel']='Campaign';break;case _0x2b48('0x3e'):_0x25f12a[_0x2b48('0x1a')]=_0x2b48('0x3f');break;case _0x2b48('0x40'):_0x25f12a['childModel']=_0x2b48('0x41');break;case _0x2b48('0x42'):_0x25f12a[_0x2b48('0x1a')]=_0x2b48('0x43');break;case _0x2b48('0x44'):_0x25f12a['childModel']=_0x2b48('0x45');break;case'openchannelaccounts':_0x25f12a[_0x2b48('0x1a')]=_0x2b48('0x46');break;case'smsqueues':_0x25f12a[_0x2b48('0x1a')]=_0x2b48('0x47');break;case _0x2b48('0x48'):_0x25f12a[_0x2b48('0x1a')]=_0x2b48('0x49');break;case _0x2b48('0x4a'):_0x25f12a[_0x2b48('0x1a')]=_0x2b48('0x4b');break;case _0x2b48('0x4c'):_0x25f12a[_0x2b48('0x1a')]=_0x2b48('0x4d');break;case'teams':_0x25f12a[_0x2b48('0x1a')]=_0x2b48('0x4e');break;case _0x2b48('0x4f'):case _0x2b48('0x50'):_0x25f12a['childModel']=_0x2b48('0x36');if(_0x289f27){_0x25f12a['parentSections']=[{'name':_0x2b48('0x51')},{'name':_0x2b48('0x38')}];}break;case _0x2b48('0x52'):case'agents':case'telephones':_0x25f12a['childModel']=_0x2b48('0x53');if(_0x289f27){_0x25f12a[_0x2b48('0x16')]=[{'name':_0x2b48('0x54'),'filter':{'field':_0x2b48('0x33'),'value':['admin',_0x2b48('0x55')]},'ignore':!![]},{'name':_0x2b48('0x2f')},{'name':_0x2b48('0x32')}];}break;case'zendeskaccounts':_0x25f12a['childModel']=_0x2b48('0x56');break;case _0x2b48('0x57'):_0x25f12a['childModel']=_0x2b48('0x58');break;case _0x2b48('0x59'):_0x25f12a[_0x2b48('0x1a')]=_0x2b48('0x5a');break;case'sugarcrmaccounts':_0x25f12a['childModel']=_0x2b48('0x5b');break;case _0x2b48('0x5c'):_0x25f12a[_0x2b48('0x1a')]=_0x2b48('0x5d');break;case _0x2b48('0x5e'):_0x25f12a[_0x2b48('0x1a')]=_0x2b48('0x5f');break;case _0x2b48('0x60'):_0x25f12a['childModel']=_0x2b48('0x53');break;case'cannedanswers':_0x25f12a[_0x2b48('0x1a')]=_0x2b48('0x61');break;case _0x2b48('0x62'):_0x25f12a[_0x2b48('0x1a')]=_0x2b48('0x63');break;case'customdashboards':_0x25f12a[_0x2b48('0x1a')]='Dashboard';break;case'intervals':_0x25f12a[_0x2b48('0x1a')]='Interval';break;case _0x2b48('0x64'):_0x25f12a[_0x2b48('0x1a')]='Pause';break;case'scheduler':_0x25f12a[_0x2b48('0x1a')]=_0x2b48('0x65');break;case _0x2b48('0x66'):_0x25f12a[_0x2b48('0x1a')]=_0x2b48('0x67');break;case _0x2b48('0x68'):_0x25f12a[_0x2b48('0x1a')]=_0x2b48('0x69');break;case _0x2b48('0x6a'):_0x25f12a[_0x2b48('0x1a')]=_0x2b48('0x6b');break;case _0x2b48('0x6c'):_0x25f12a[_0x2b48('0x1a')]=_0x2b48('0x6d');break;case'trunks':_0x25f12a[_0x2b48('0x1a')]=_0x2b48('0x6e');break;case'variables':_0x25f12a[_0x2b48('0x1a')]=_0x2b48('0x6f');break;case _0x2b48('0x70'):_0x25f12a[_0x2b48('0x1a')]='Plugin';break;case'extractedreports':_0x25f12a['childModel']='AnalyticExtractedReport';_0x25f12a[_0x2b48('0x16')]=[{'name':'Reports','field':'id','foreignKey':_0x2b48('0x71')}];break;case _0x2b48('0x72'):_0x25f12a['childModel']=_0x2b48('0x73');break;}return _0x25f12a;}function _0x525ed3(_0x5b9a66,_0x23f234){var _0x214873=_0x5b9a66[_0x2b48('0x74')](0x0)[_0x2b48('0x75')]()+_0x5b9a66[_0x2b48('0x76')](0x1);var _0x8d98ec={'type':_0x300283['Sequelize'][_0x2b48('0x77')][_0x2b48('0x78')],'raw':!![]};return new Promise(function(_0x5d54a9,_0x10adf1){var _0x5b8ef9=squel['select']()[_0x2b48('0x5')](_0x2b48('0x79')+_0x214873+'InteractionId','id')[_0x2b48('0x5')](_0x2b48('0x7a'))[_0x2b48('0x7b')](_0x2b48('0x7c')+_0x5b9a66+'_interactions','ui')[_0x2b48('0x7d')](_0x2b48('0x7e'),_0x23f234['id']);return _0x300283[_0x2b48('0x7f')][_0x2b48('0x80')](_0x5b8ef9[_0x2b48('0x81')](),_0x8d98ec)[_0x2b48('0x8')](function(_0x2b51a1){_0x23f234[_0x214873+_0x2b48('0x82')]=_0x2b51a1;_0x5d54a9(_0x2b51a1);})[_0x2b48('0x9')](function(_0x4eaa90){_0x10adf1(_0x4eaa90);});});}return _0x187ccb[_0x2b48('0x83')](_0x2b48('0x84'),attributes,{'tableName':_0x2b48('0x85'),'paranoid':![],'indexes':[],'timestamps':!![],'classMethods':{'getResources':function(_0x341ecd){var _0x377b12={'raw':_0x341ecd[_0x2b48('0x80')][_0x2b48('0x86')],'where':{}};var _0x2a0fb1={};var _0x388128={'count':0x0,'rows':[]};var _0x28803c=_0x341ecd[_0x2b48('0x80')][_0x2b48('0x87')];var _0x5483d3=_0x341ecd[_0x2b48('0x80')][_0x2b48('0x88')]||![];var _0x3857a9=_0x455643(_0x28803c,_0x5483d3);if(!_0x3857a9[_0x2b48('0x1a')])throw new Error(_0x2b48('0x89')+_0x28803c+'\x27');var _0x17f90f=[{'name':_0x28803c}];if(!_[_0x2b48('0x8a')](_0x3857a9[_0x2b48('0x16')]))_0x17f90f=_0x3857a9[_0x2b48('0x16')];var _0x1a579b=[];for(var _0x2292fa=0x0;_0x2292fa<_0x17f90f[_0x2b48('0x8b')];_0x2292fa++){_0x1a579b[_0x2b48('0x8c')](_0x300283[_0x2b48('0x8d')][_0x2b48('0x8e')]({'where':{'userProfileId':_0x341ecd[_0x2b48('0x8f')]['id'],'name':_0x17f90f[_0x2292fa][_0x2b48('0x18')]},'raw':!![]}));}return Promise['all'](_0x1a579b)[_0x2b48('0x8')](function(_0x269fa8){var _0x236c76=_[_0x2b48('0x4')](_0x269fa8,function(_0x1919c4){return _0x1919c4?_0x1919c4:undefined;});var _0x38b741=_[_0x2b48('0x4')](_0x17f90f,[_0x2b48('0x90'),!![]]);var _0x2a57e4=_[_0x2b48('0x8a')](_0x236c76)&&_[_0x2b48('0x8a')](_0x38b741)?null:_[_0x2b48('0x91')](_0x38b741,_0x236c76);if(!_0x2a57e4)return null;var _0x3bcc9f=[];for(var _0x20fcea=0x0;_0x20fcea<_0x2a57e4[_0x2b48('0x8b')];_0x20fcea++){var _0xa84aee=_[_0x2b48('0x8e')](_0x17f90f,function(_0x173580){return _0x2a57e4[_0x20fcea]?_0x173580['name']===_0x2a57e4[_0x20fcea][_0x2b48('0x18')]:null;});if(_0xa84aee){if(_0x2a57e4[_0x20fcea][_0x2b48('0x90')]){_0x3bcc9f['push'](_0x31a82e(_0x3857a9[_0x2b48('0x1a')],_0x2a57e4[_0x20fcea]));}else{if(!_0x2a57e4[_0x20fcea][_0x2b48('0x92')]){_0x3bcc9f['push'](_0x5fa4f(_0xa84aee,_0x2a57e4[_0x20fcea],_0x3857a9[_0x2b48('0x1a')]));}else{if(_0xa84aee[_0x2b48('0xa')]){_0x3bcc9f[_0x2b48('0x8c')](_0x5a68e4(_0xa84aee,_0x2a57e4[_0x20fcea]));}}}}}return Promise[_0x2b48('0x93')](_0x3bcc9f);})['then'](function(_0x1d52ee){var _0x144d0c=_0x1d52ee;var _0xacfce5=null;if(_0x144d0c){_0xacfce5=_0x144d0c[_0x2b48('0x8b')]===0x1?_0x144d0c[0x0]:null;}if(!_0xacfce5&&!_0x144d0c)return _0x388128;var _0x35dafb=_0x300283[_0x3857a9[_0x2b48('0x1a')]]['rawAttributes'];_0x2a0fb1[_0x2b48('0xa')]=_['keys'](_0x35dafb);_0x2a0fb1[_0x2b48('0x80')]=_['keys'](_0x341ecd[_0x2b48('0x80')]);_0x2a0fb1[_0x2b48('0x94')]=_[_0x2b48('0x95')](_0x2a0fb1[_0x2b48('0xa')],_0x2a0fb1[_0x2b48('0x80')]);_0x377b12[_0x2b48('0x96')]=_[_0x2b48('0x95')](_0x2a0fb1[_0x2b48('0xa')],qs[_0x2b48('0x97')](_0x341ecd[_0x2b48('0x80')]['fields']));_0x377b12[_0x2b48('0x96')]=_0x377b12['attributes'][_0x2b48('0x8b')]?_0x377b12[_0x2b48('0x96')]:_0x2a0fb1[_0x2b48('0xa')];if(!_0x341ecd[_0x2b48('0x80')][_0x2b48('0x98')](_0x2b48('0x99'))){_0x377b12[_0x2b48('0x9a')]=qs[_0x2b48('0x9a')](_0x341ecd['query'][_0x2b48('0x9a')]);_0x377b12[_0x2b48('0x9b')]=qs[_0x2b48('0x9b')](_0x341ecd[_0x2b48('0x80')]['offset']);}_0x377b12[_0x2b48('0x9c')]=qs[_0x2b48('0x9d')](_0x341ecd['query'][_0x2b48('0x9d')]);_0x377b12[_0x2b48('0x7d')]=qs[_0x2b48('0x94')](_[_0x2b48('0x9e')](_0x341ecd[_0x2b48('0x80')],_0x2a0fb1[_0x2b48('0x94')]));if(_0x341ecd[_0x2b48('0x80')][_0x2b48('0x4')]){_0x377b12['where']=_[_0x2b48('0x9f')](_0x377b12[_0x2b48('0x7d')],{'$or':_['map'](_0x35dafb,function(_0x12e674){if(_0x12e674['type'][_0x2b48('0xa0')]!==_0x2b48('0xa1')){var _0x5592ef={};_0x5592ef[_0x12e674[_0x2b48('0x5')]]={'$like':'%'+_0x341ecd[_0x2b48('0x80')][_0x2b48('0x4')]+'%'};return _0x5592ef;}})});}var _0x4098d7=[];var _0x270a25=null;var _0x256e89={};if(_0xacfce5){_0x270a25=_[_0x2b48('0x8e')](_0x17f90f,[_0x2b48('0x18'),_0xacfce5['name']]);if(_0x270a25['field']){_0x256e89={};if(_0x3857a9['childModel']==='AnalyticExtractedReport'){_0x256e89[_0x270a25[_0x2b48('0xa2')]]=_[_0x2b48('0xe')](_0xacfce5[_0x2b48('0xb')],'id');}else{_0x256e89[_0x270a25[_0x2b48('0xa2')]]=_0xacfce5[_0x2b48('0xb')];}_0x4098d7[_0x2b48('0x8c')](_0x256e89);}else{_0x377b12[_0x2b48('0x7d')]['id']=_0xacfce5[_0x2b48('0xb')];}}else{for(var _0x35157b=0x0;_0x35157b<_0x144d0c[_0x2b48('0x8b')];_0x35157b++){_0x270a25=_[_0x2b48('0x8e')](_0x17f90f,[_0x2b48('0x18'),_0x144d0c[_0x35157b]['name']]);if(_0x270a25[_0x2b48('0x5')]){_0x256e89={};_0x256e89[_0x270a25[_0x2b48('0xa2')]]=_0x144d0c[_0x35157b][_0x2b48('0xb')];_0x4098d7[_0x2b48('0x8c')](_0x256e89);}else{if(!_0x377b12[_0x2b48('0x7d')]['id'])_0x377b12[_0x2b48('0x7d')]['id']=[];_0x144d0c[_0x35157b]['associatedResources'][_0x2b48('0xa3')](function(_0x1497cd){_0x377b12[_0x2b48('0x7d')]['id'][_0x2b48('0x8c')](_0x1497cd);});}}}if(!_[_0x2b48('0x8a')](_0x4098d7)){_0x377b12['where']=_[_0x2b48('0x9f')](_0x377b12[_0x2b48('0x7d')],{'$and':{'$or':_0x4098d7}});}_0x377b12=_[_0x2b48('0x9f')]({},_0x377b12,_0x341ecd['options']);if(_0xacfce5&&!_0xacfce5[_0x2b48('0x92')]&&_0x3857a9[_0x2b48('0x1a')]===_0x2b48('0xa4')){if(_0x341ecd[_0x2b48('0x80')]['includeAll']){_0x377b12[_0x2b48('0xa5')]=[{'all':!![]}];}return _0x300283[_0x3857a9['childModel']][_0x2b48('0x7')](_0x377b12)['then'](function(_0x325a0b){var _0x973c01=[];_0x325a0b[_0x2b48('0xa3')](function(_0xef1bdd){var _0x2b2fd3;switch(_0xef1bdd['reportType']){case _0x2b48('0xa6'):_0x2b2fd3=_[_0x2b48('0x8e')](_0xacfce5[_0x2b48('0xb')],function(_0x3dfee3){return _0x3dfee3['id']===_0xef1bdd[_0x2b48('0x71')]&&_0x3dfee3[_0x2b48('0x10')]===_0x2b48('0xa7');});break;case _0x2b48('0xa8'):_0x2b2fd3=_['find'](_0xacfce5[_0x2b48('0xb')],function(_0x27d7e0){return _0x27d7e0['id']===_0xef1bdd[_0x2b48('0x71')]&&_0x27d7e0['type']===_0x2b48('0xa9');});break;}if(_0x2b2fd3)_0x973c01['push'](_0xef1bdd);});_0x388128['count']=_0x973c01['length'];_0x388128['rows']=_0x973c01;return _0x388128;});}else{if(!_[_0x2b48('0x8a')](_0x341ecd[_0x2b48('0x80')][_0x2b48('0xaa')])){_0x377b12['where']['id']=_0x377b12[_0x2b48('0x7d')]['id']?_['intersection'](_0x377b12[_0x2b48('0x7d')]['id'],_0x341ecd[_0x2b48('0x80')][_0x2b48('0xaa')]):_0x341ecd[_0x2b48('0x80')][_0x2b48('0xaa')];if(_0x341ecd[_0x2b48('0x80')][_0x2b48('0xab')]){_0x377b12['order']=_0x341ecd[_0x2b48('0x80')][_0x2b48('0xab')];}}if(_0x341ecd[_0x2b48('0x80')][_0x2b48('0xac')]){_0x377b12['where']=_[_0x2b48('0x9f')](_0x377b12[_0x2b48('0x7d')],{'$and':_0x341ecd['query'][_0x2b48('0xac')]});}return _0x300283[_0x3857a9[_0x2b48('0x1a')]][_0x2b48('0xad')]({'where':_0x377b12[_0x2b48('0x7d')]})[_0x2b48('0x8')](function(_0x1fbb30){_0x388128['count']=_0x1fbb30;if(_0x341ecd[_0x2b48('0x80')]['includeAll']){if(_0x3857a9[_0x2b48('0x1a')]==='CmContact'){_0x377b12[_0x2b48('0xa5')]=[{'model':_0x300283[_0x2b48('0x69')],'as':_0x2b48('0xae'),'attributes':['id',_0x2b48('0x18'),_0x2b48('0xaf')],'required':_0x341ecd['query'][_0x2b48('0xb0')]?!![]:![]},{'model':_0x300283[_0x2b48('0x69')],'as':'ThroughTags','attributes':['id',_0x2b48('0x18'),'color'],'through':_0x341ecd['query'][_0x2b48('0xb0')]?{'attributes':[],'where':{'TagId':_0x341ecd[_0x2b48('0x80')][_0x2b48('0xb0')]||undefined}}:{},'required':_0x341ecd[_0x2b48('0x80')][_0x2b48('0xb0')]?!![]:![]}];}else{_0x377b12[_0x2b48('0xa5')]=[{'all':!![]}];}}return _0x300283[_0x3857a9[_0x2b48('0x1a')]][_0x2b48('0x7')](_0x377b12);})[_0x2b48('0x8')](function(_0x2ee387){_0x388128[_0x2b48('0xb1')]=_0x2ee387;if(_0x28803c===_0x2b48('0x2f')&&_0x341ecd[_0x2b48('0x80')][_0x2b48('0xb2')]===_0x2b48('0xb3')){var _0x190782=[];for(var _0x491a0c=0x0;_0x491a0c<_0x388128['rows'][_0x2b48('0x8b')];_0x491a0c++){_0x190782[_0x2b48('0x8c')](_0x525ed3(_0x2b48('0xb4'),_0x388128['rows'][_0x491a0c][_0x2b48('0xb5')]));_0x190782[_0x2b48('0x8c')](_0x525ed3(_0x2b48('0xb6'),_0x388128['rows'][_0x491a0c]['dataValues']));_0x190782[_0x2b48('0x8c')](_0x525ed3(_0x2b48('0xb7'),_0x388128[_0x2b48('0xb1')][_0x491a0c]['dataValues']));_0x190782[_0x2b48('0x8c')](_0x525ed3(_0x2b48('0xb8'),_0x388128[_0x2b48('0xb1')][_0x491a0c][_0x2b48('0xb5')]));_0x190782[_0x2b48('0x8c')](_0x525ed3(_0x2b48('0xb9'),_0x388128[_0x2b48('0xb1')][_0x491a0c][_0x2b48('0xb5')]));_0x190782[_0x2b48('0x8c')](_0x525ed3('whatsapp',_0x388128[_0x2b48('0xb1')][_0x491a0c][_0x2b48('0xb5')]));}return Promise[_0x2b48('0x93')](_0x190782)[_0x2b48('0x8')](function(){return _0x388128;});}return _0x388128;});}});}}});};
\ No newline at end of file
index fb7b447..92d0050 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0x6209=['ioredis','../../mysqldb','../../config/logger','rpc','../../config/environment','client','http','redis','defaults','socket.io-emitter','./userProfile.socket','register','then','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'];(function(_0xdbbce3,_0xaf0065){var _0x1a78c9=function(_0x444aac){while(--_0x444aac){_0xdbbce3['push'](_0xdbbce3['shift']());}};_0x1a78c9(++_0xaf0065);}(_0x6209,0x1e8));var _0x9620=function(_0x2dafbe,_0x5d04de){_0x2dafbe=_0x2dafbe-0x0;var _0x58a45a=_0x6209[_0x2dafbe];return _0x58a45a;};'use strict';var _=require(_0x9620('0x0'));var util=require(_0x9620('0x1'));var moment=require(_0x9620('0x2'));var BPromise=require(_0x9620('0x3'));var rs=require(_0x9620('0x4'));var fs=require('fs');var Redis=require(_0x9620('0x5'));var db=require(_0x9620('0x6'))['db'];var utils=require('../../config/utils');var logger=require(_0x9620('0x7'))(_0x9620('0x8'));var config=require(_0x9620('0x9'));var jayson=require('jayson/promise');var client=jayson[_0x9620('0xa')][_0x9620('0xb')]({'port':0x232a});config[_0x9620('0xc')]=_[_0x9620('0xd')](config['redis'],{'host':'localhost','port':0x18eb});var socket=require(_0x9620('0xe'))(new Redis(config['redis']));require(_0x9620('0xf'))[_0x9620('0x10')](socket);function respondWithRpcPromise(_0x186b36,_0x10e8c3,_0x4764e6){return new BPromise(function(_0xec897,_0x30fa46){return client['request'](_0x186b36,_0x4764e6)[_0x9620('0x11')](function(_0x52bb7c){logger[_0x9620('0x12')](_0x9620('0x13'),_0x10e8c3,_0x9620('0x14'));logger[_0x9620('0x15')](_0x9620('0x16'),_0x10e8c3,_0x9620('0x14'),JSON[_0x9620('0x17')](_0x52bb7c));if(_0x52bb7c[_0x9620('0x18')]){if(_0x52bb7c[_0x9620('0x18')][_0x9620('0x19')]===0x1f4){logger['error']('UserProfile,\x20%s,\x20%s',_0x10e8c3,_0x52bb7c[_0x9620('0x18')][_0x9620('0x1a')]);return _0x30fa46(_0x52bb7c['error'][_0x9620('0x1a')]);}logger[_0x9620('0x18')](_0x9620('0x13'),_0x10e8c3,_0x52bb7c[_0x9620('0x18')]['message']);return _0xec897(_0x52bb7c[_0x9620('0x18')][_0x9620('0x1a')]);}else{logger['info'](_0x9620('0x13'),_0x10e8c3,'request\x20sent');_0xec897(_0x52bb7c[_0x9620('0x1b')][_0x9620('0x1a')]);}})[_0x9620('0x1c')](function(_0x3a7a3a){logger[_0x9620('0x18')]('UserProfile,\x20%s,\x20%s',_0x10e8c3,_0x3a7a3a);_0x30fa46(_0x3a7a3a);});});}
\ No newline at end of file
index 9c5270b..2dbd993 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0x858d=['register','userProfile:','./userProfile.events','update','emit','removeListener'];(function(_0x5db2f9,_0x41b2a8){var _0x233cc9=function(_0x3fb83f){while(--_0x3fb83f){_0x5db2f9['push'](_0x5db2f9['shift']());}};_0x233cc9(++_0x41b2a8);}(_0x858d,0xec));var _0xd858=function(_0x34682d,_0x2349ec){_0x34682d=_0x34682d-0x0;var _0x7b5e22=_0x858d[_0x34682d];return _0x7b5e22;};'use strict';var UserProfileEvents=require(_0xd858('0x0'));var events=['save','remove',_0xd858('0x1')];function createListener(_0x5c48f2,_0x1cb537){return function(_0x49367d){_0x1cb537[_0xd858('0x2')](_0x5c48f2,_0x49367d);};}function removeListener(_0x5b1711,_0x343038){return function(){UserProfileEvents[_0xd858('0x3')](_0x5b1711,_0x343038);};}exports[_0xd858('0x4')]=function(_0x35deeb){for(var _0x3301ba=0x0,_0x21b09d=events['length'];_0x3301ba<_0x21b09d;_0x3301ba++){var _0x4b5de1=events[_0x3301ba];var _0x49dfc2=createListener(_0xd858('0x5')+_0x4b5de1,_0x35deeb);UserProfileEvents['on'](_0x4b5de1,_0x49dfc2);}};
\ No newline at end of file
index a41d341..9368f7a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0x5259=['express','Router','../../components/interaction/service','../../config/environment','./userProfileResource.controller','get','isAuthenticated','index','describe','/:id','show','post','create','put','update','delete','destroy','util','connect-timeout'];(function(_0x68dac,_0x305522){var _0x20e498=function(_0x32b3fd){while(--_0x32b3fd){_0x68dac['push'](_0x68dac['shift']());}};_0x20e498(++_0x305522);}(_0x5259,0x1ec));var _0x9525=function(_0x4bb65a,_0x43f40d){_0x4bb65a=_0x4bb65a-0x0;var _0x3df7cb=_0x5259[_0x4bb65a];return _0x3df7cb;};'use strict';var multer=require('multer');var util=require(_0x9525('0x0'));var path=require('path');var timeout=require(_0x9525('0x1'));var express=require(_0x9525('0x2'));var router=express[_0x9525('0x3')]();var fs_extra=require('fs-extra');var auth=require('../../components/auth/service');var interaction=require(_0x9525('0x4'));var config=require(_0x9525('0x5'));var controller=require(_0x9525('0x6'));router[_0x9525('0x7')]('/',auth[_0x9525('0x8')](),controller[_0x9525('0x9')]);router[_0x9525('0x7')]('/describe',auth[_0x9525('0x8')](),controller[_0x9525('0xa')]);router[_0x9525('0x7')](_0x9525('0xb'),auth[_0x9525('0x8')](),controller[_0x9525('0xc')]);router[_0x9525('0xd')]('/',auth[_0x9525('0x8')](),controller[_0x9525('0xe')]);router[_0x9525('0xf')](_0x9525('0xb'),auth[_0x9525('0x8')](),controller[_0x9525('0x10')]);router[_0x9525('0x11')](_0x9525('0xb'),auth['isAuthenticated'](),controller[_0x9525('0x12')]);module['exports']=router;
\ No newline at end of file
index 2d1006f..ec5a143 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0x9aeb=['exports','STRING','sequelize'];(function(_0x4f14a8,_0x3aedad){var _0xd1a37f=function(_0x1653b4){while(--_0x1653b4){_0x4f14a8['push'](_0x4f14a8['shift']());}};_0xd1a37f(++_0x3aedad);}(_0x9aeb,0xce));var _0xb9ae=function(_0x5476fa,_0x5340be){_0x5476fa=_0x5476fa-0x0;var _0x3f8fdf=_0x9aeb[_0x5476fa];return _0x3f8fdf;};'use strict';var Sequelize=require(_0xb9ae('0x0'));module[_0xb9ae('0x1')]={'name':{'type':Sequelize['STRING'],'allowNull':![]},'resourceId':{'type':Sequelize['INTEGER'],'allowNull':![]},'type':{'type':Sequelize[_0xb9ae('0x2')],'allowNull':![]}};
\ No newline at end of file
index 6255b1f..bc86708 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0x90b1=['intersection','model','attributes','fields','length','hasOwnProperty','nolimit','order','pick','filter','merge','where','type','options','UserProfileResource','includeAll','rows','include','find','catch','body','params','describe','eml-format','rimraf','zip-dir','moment','bluebird','mustache','util','fs-extra','lodash','squel','crypto','jsforce','desk.js','to-csv','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/environment','../../config/license/util','sendStatus','status','end','json','offset','undefined','count','limit','set','Content-Range','then','destroy','error','name','send','index','map','rawAttributes','fieldName','key','keys','query','filters'];(function(_0x3a02f5,_0x1deab0){var _0xb6b772=function(_0x5cd820){while(--_0x5cd820){_0x3a02f5['push'](_0x3a02f5['shift']());}};_0xb6b772(++_0x1deab0);}(_0x90b1,0x1bb));var _0x190b=function(_0x11c212,_0x21e7c8){_0x11c212=_0x11c212-0x0;var _0x330a23=_0x90b1[_0x11c212];return _0x330a23;};'use strict';var emlformat=require(_0x190b('0x0'));var rimraf=require(_0x190b('0x1'));var zipdir=require(_0x190b('0x2'));var jsonpatch=require('fast-json-patch');var rp=require('request-promise');var moment=require(_0x190b('0x3'));var BPromise=require(_0x190b('0x4'));var Mustache=require(_0x190b('0x5'));var util=require(_0x190b('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(_0x190b('0x7'));var _=require(_0x190b('0x8'));var squel=require(_0x190b('0x9'));var crypto=require(_0x190b('0xa'));var jsforce=require(_0x190b('0xb'));var deskjs=require(_0x190b('0xc'));var toCsv=require(_0x190b('0xd'));var querystring=require('querystring');var Papa=require(_0x190b('0xe'));var Redis=require(_0x190b('0xf'));var authService=require(_0x190b('0x10'));var qs=require(_0x190b('0x11'));var as=require(_0x190b('0x12'));var hardwareService=require(_0x190b('0x13'));var logger=require(_0x190b('0x14'))(_0x190b('0x15'));var utils=require('../../config/utils');var config=require(_0x190b('0x16'));var licenseUtil=require(_0x190b('0x17'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x4d63ac,_0x596c48){_0x596c48=_0x596c48||0xcc;return function(_0x286c81){if(_0x286c81){return _0x4d63ac[_0x190b('0x18')](_0x596c48);}return _0x4d63ac[_0x190b('0x19')](_0x596c48)[_0x190b('0x1a')]();};}function respondWithResult(_0x2e12d4,_0x13544c){_0x13544c=_0x13544c||0xc8;return function(_0x1ff180){if(_0x1ff180){return _0x2e12d4[_0x190b('0x19')](_0x13544c)[_0x190b('0x1b')](_0x1ff180);}};}function respondWithFilteredResult(_0x1a046f,_0xab346){return function(_0x3e8781){if(_0x3e8781){var _0x3fbfc3=typeof _0xab346[_0x190b('0x1c')]===_0x190b('0x1d')&&typeof _0xab346['limit']===_0x190b('0x1d');var _0x5efbed=_0x3e8781[_0x190b('0x1e')];var _0x21e458=_0x3fbfc3?0x0:_0xab346[_0x190b('0x1c')];var _0x16c009=_0x3fbfc3?_0x3e8781['count']:_0xab346[_0x190b('0x1c')]+_0xab346[_0x190b('0x1f')];var _0x441a2b;if(_0x16c009>=_0x5efbed){_0x16c009=_0x5efbed;_0x441a2b=0xc8;}else{_0x441a2b=0xce;}_0x1a046f[_0x190b('0x19')](_0x441a2b);return _0x1a046f[_0x190b('0x20')](_0x190b('0x21'),_0x21e458+'-'+_0x16c009+'/'+_0x5efbed)['json'](_0x3e8781);}return null;};}function patchUpdates(_0x3ed24c){return function(_0x14f0a5){try{jsonpatch['apply'](_0x14f0a5,_0x3ed24c,!![]);}catch(_0xb4c32b){return BPromise['reject'](_0xb4c32b);}return _0x14f0a5['save']();};}function saveUpdates(_0xcd15e5,_0x42e7f2){return function(_0x332006){if(_0x332006){return _0x332006['update'](_0xcd15e5)[_0x190b('0x22')](function(_0x2e633e){return _0x2e633e;});}return null;};}function removeEntity(_0x16e989,_0x292ce3){return function(_0x3b8c74){if(_0x3b8c74){return _0x3b8c74[_0x190b('0x23')]()[_0x190b('0x22')](function(){_0x16e989['status'](0xcc)['end']();});}};}function handleEntityNotFound(_0x262a63,_0x1a5f86){return function(_0x50605b){if(!_0x50605b){_0x262a63['sendStatus'](0x194);}return _0x50605b;};}function handleError(_0x3260d5,_0x4e2a93){_0x4e2a93=_0x4e2a93||0x1f4;return function(_0x328e5e){logger[_0x190b('0x24')](_0x328e5e['stack']);if(_0x328e5e[_0x190b('0x25')]){delete _0x328e5e[_0x190b('0x25')];}_0x3260d5['status'](_0x4e2a93)[_0x190b('0x26')](_0x328e5e);};}exports[_0x190b('0x27')]=function(_0x359b4a,_0x494f3f){var _0x536d7b={},_0x3730cc={},_0x4d5f3f={'count':0x0,'rows':[]};var _0x14be2c=_[_0x190b('0x28')](db['UserProfileResource'][_0x190b('0x29')],function(_0x580b92){return{'name':_0x580b92[_0x190b('0x2a')],'type':_0x580b92['type'][_0x190b('0x2b')]};});_0x3730cc['model']=_[_0x190b('0x28')](_0x14be2c,_0x190b('0x25'));_0x3730cc['query']=_[_0x190b('0x2c')](_0x359b4a[_0x190b('0x2d')]);_0x3730cc[_0x190b('0x2e')]=_[_0x190b('0x2f')](_0x3730cc[_0x190b('0x30')],_0x3730cc[_0x190b('0x2d')]);_0x536d7b[_0x190b('0x31')]=_[_0x190b('0x2f')](_0x3730cc['model'],qs['fields'](_0x359b4a[_0x190b('0x2d')][_0x190b('0x32')]));_0x536d7b['attributes']=_0x536d7b[_0x190b('0x31')][_0x190b('0x33')]?_0x536d7b[_0x190b('0x31')]:_0x3730cc[_0x190b('0x30')];if(!_0x359b4a[_0x190b('0x2d')][_0x190b('0x34')](_0x190b('0x35'))){_0x536d7b['limit']=qs['limit'](_0x359b4a[_0x190b('0x2d')][_0x190b('0x1f')]);_0x536d7b[_0x190b('0x1c')]=qs['offset'](_0x359b4a[_0x190b('0x2d')][_0x190b('0x1c')]);}_0x536d7b[_0x190b('0x36')]=qs['sort'](_0x359b4a[_0x190b('0x2d')]['sort']);_0x536d7b['where']=qs[_0x190b('0x2e')](_[_0x190b('0x37')](_0x359b4a['query'],_0x3730cc[_0x190b('0x2e')]),_0x14be2c);if(_0x359b4a[_0x190b('0x2d')][_0x190b('0x38')]){_0x536d7b['where']=_[_0x190b('0x39')](_0x536d7b[_0x190b('0x3a')],{'$or':_['map'](_0x14be2c,function(_0x5d006d){if(_0x5d006d[_0x190b('0x3b')]!=='VIRTUAL'){var _0x46bdba={};_0x46bdba[_0x5d006d[_0x190b('0x25')]]={'$like':'%'+_0x359b4a[_0x190b('0x2d')][_0x190b('0x38')]+'%'};return _0x46bdba;}})});}_0x536d7b=_['merge']({},_0x536d7b,_0x359b4a[_0x190b('0x3c')]);var _0x5f118c={'where':_0x536d7b[_0x190b('0x3a')]};return db[_0x190b('0x3d')]['count'](_0x5f118c)[_0x190b('0x22')](function(_0x2a75d2){_0x4d5f3f[_0x190b('0x1e')]=_0x2a75d2;if(_0x359b4a['query'][_0x190b('0x3e')]){_0x536d7b['include']=[{'all':!![]}];}return db['UserProfileResource']['findAll'](_0x536d7b);})[_0x190b('0x22')](function(_0x3aef1d){_0x4d5f3f[_0x190b('0x3f')]=_0x3aef1d;return _0x4d5f3f;})[_0x190b('0x22')](respondWithFilteredResult(_0x494f3f,_0x536d7b))['catch'](handleError(_0x494f3f,null));};exports['show']=function(_0x4045b7,_0x492240){var _0x110891={'raw':![],'where':{'id':_0x4045b7['params']['id']}},_0x3d67f0={};_0x3d67f0[_0x190b('0x30')]=_[_0x190b('0x2c')](db[_0x190b('0x3d')]['rawAttributes']);_0x3d67f0[_0x190b('0x2d')]=_[_0x190b('0x2c')](_0x4045b7['query']);_0x3d67f0[_0x190b('0x2e')]=_['intersection'](_0x3d67f0[_0x190b('0x30')],_0x3d67f0[_0x190b('0x2d')]);_0x110891[_0x190b('0x31')]=_['intersection'](_0x3d67f0[_0x190b('0x30')],qs['fields'](_0x4045b7[_0x190b('0x2d')][_0x190b('0x32')]));_0x110891[_0x190b('0x31')]=_0x110891[_0x190b('0x31')][_0x190b('0x33')]?_0x110891[_0x190b('0x31')]:_0x3d67f0[_0x190b('0x30')];if(_0x4045b7['query'][_0x190b('0x3e')]){_0x110891[_0x190b('0x40')]=[{'all':!![]}];}_0x110891=_[_0x190b('0x39')]({},_0x110891,_0x4045b7['options']);return db[_0x190b('0x3d')][_0x190b('0x41')](_0x110891)[_0x190b('0x22')](handleEntityNotFound(_0x492240,null))[_0x190b('0x22')](respondWithResult(_0x492240,null))[_0x190b('0x42')](handleError(_0x492240,null));};exports['create']=function(_0x1f2262,_0xadc789){return db[_0x190b('0x3d')]['create'](_0x1f2262[_0x190b('0x43')],{})[_0x190b('0x22')](respondWithResult(_0xadc789,0xc9))[_0x190b('0x42')](handleError(_0xadc789,null));};exports['update']=function(_0x4cb561,_0x14958e){if(_0x4cb561[_0x190b('0x43')]['id']){delete _0x4cb561[_0x190b('0x43')]['id'];}return db[_0x190b('0x3d')][_0x190b('0x41')]({'where':{'id':_0x4cb561[_0x190b('0x44')]['id']}})['then'](handleEntityNotFound(_0x14958e,null))[_0x190b('0x22')](saveUpdates(_0x4cb561[_0x190b('0x43')],null))[_0x190b('0x22')](respondWithResult(_0x14958e,null))['catch'](handleError(_0x14958e,null));};exports[_0x190b('0x23')]=function(_0x38c135,_0x215ab6){return db['UserProfileResource'][_0x190b('0x41')]({'where':{'id':_0x38c135[_0x190b('0x44')]['id']}})[_0x190b('0x22')](handleEntityNotFound(_0x215ab6,null))[_0x190b('0x22')](removeEntity(_0x215ab6,null))[_0x190b('0x42')](handleError(_0x215ab6,null));};exports[_0x190b('0x45')]=function(_0x33cc78,_0x2ea1c8){return db[_0x190b('0x3d')][_0x190b('0x45')]()[_0x190b('0x22')](respondWithResult(_0x2ea1c8,null))['catch'](handleError(_0x2ea1c8,null));};
\ No newline at end of file
index 008acb8..5620e25 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0x42a2=['compositeIndex','resourceId','sectionId','lodash','../../config/logger','api','moment','request-promise','path','rimraf','../../config/environment','./userProfileResource.attributes','exports','define','UserProfileResource','user_profile_has_resources'];(function(_0x14add3,_0x13ce8d){var _0x4a174f=function(_0x2b3ed7){while(--_0x2b3ed7){_0x14add3['push'](_0x14add3['shift']());}};_0x4a174f(++_0x13ce8d);}(_0x42a2,0x1a3));var _0x242a=function(_0x31a371,_0x50828e){_0x31a371=_0x31a371-0x0;var _0x2a5bd6=_0x42a2[_0x31a371];return _0x2a5bd6;};'use strict';var _=require(_0x242a('0x0'));var util=require('util');var logger=require(_0x242a('0x1'))(_0x242a('0x2'));var moment=require(_0x242a('0x3'));var BPromise=require('bluebird');var rp=require(_0x242a('0x4'));var fs=require('fs');var path=require(_0x242a('0x5'));var rimraf=require(_0x242a('0x6'));var config=require(_0x242a('0x7'));var attributes=require(_0x242a('0x8'));module[_0x242a('0x9')]=function(_0x51799e,_0x6490c5){return _0x51799e[_0x242a('0xa')](_0x242a('0xb'),attributes,{'tableName':_0x242a('0xc'),'paranoid':![],'indexes':[{'name':_0x242a('0xd'),'fields':[_0x242a('0xe'),_0x242a('0xf')]}],'timestamps':!![]});};
\ No newline at end of file
index d3050f2..fb39881 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0xd193=['rpc','jayson/promise','client','http','request','then','info','request\x20sent','debug','UserProfileResource,\x20%s,\x20%s,\x20%s','stringify','error','code','UserProfileResource,\x20%s,\x20%s','message','result','catch','lodash','util','moment','bluebird','../../mysqldb','../../config/utils','../../config/logger'];(function(_0x1d5947,_0x33c907){var _0xcf82a1=function(_0x108a96){while(--_0x108a96){_0x1d5947['push'](_0x1d5947['shift']());}};_0xcf82a1(++_0x33c907);}(_0xd193,0x119));var _0x3d19=function(_0x52a47f,_0x255c1e){_0x52a47f=_0x52a47f-0x0;var _0x36ecb9=_0xd193[_0x52a47f];return _0x36ecb9;};'use strict';var _=require(_0x3d19('0x0'));var util=require(_0x3d19('0x1'));var moment=require(_0x3d19('0x2'));var BPromise=require(_0x3d19('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require('ioredis');var db=require(_0x3d19('0x4'))['db'];var utils=require(_0x3d19('0x5'));var logger=require(_0x3d19('0x6'))(_0x3d19('0x7'));var config=require('../../config/environment');var jayson=require(_0x3d19('0x8'));var client=jayson[_0x3d19('0x9')][_0x3d19('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x3ebfaa,_0x29d860,_0x304c91){return new BPromise(function(_0x29d989,_0x1b72f5){return client[_0x3d19('0xb')](_0x3ebfaa,_0x304c91)[_0x3d19('0xc')](function(_0x4d392e){logger[_0x3d19('0xd')]('UserProfileResource,\x20%s,\x20%s',_0x29d860,_0x3d19('0xe'));logger[_0x3d19('0xf')](_0x3d19('0x10'),_0x29d860,_0x3d19('0xe'),JSON[_0x3d19('0x11')](_0x4d392e));if(_0x4d392e['error']){if(_0x4d392e[_0x3d19('0x12')][_0x3d19('0x13')]===0x1f4){logger['error'](_0x3d19('0x14'),_0x29d860,_0x4d392e[_0x3d19('0x12')][_0x3d19('0x15')]);return _0x1b72f5(_0x4d392e[_0x3d19('0x12')][_0x3d19('0x15')]);}logger[_0x3d19('0x12')](_0x3d19('0x14'),_0x29d860,_0x4d392e[_0x3d19('0x12')][_0x3d19('0x15')]);return _0x29d989(_0x4d392e[_0x3d19('0x12')]['message']);}else{logger[_0x3d19('0xd')](_0x3d19('0x14'),_0x29d860,_0x3d19('0xe'));_0x29d989(_0x4d392e[_0x3d19('0x16')][_0x3d19('0x15')]);}})[_0x3d19('0x17')](function(_0x344cee){logger['error'](_0x3d19('0x14'),_0x29d860,_0x344cee);_0x1b72f5(_0x344cee);});});}
\ No newline at end of file
index 23380ff..c824124 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0x21f1=['describe','post','/:id','update','delete','destroy','exports','multer','util','../../components/auth/service','../../components/interaction/service','../../config/environment','./userProfileSection.controller','get','isAuthenticated','index','/describe'];(function(_0x1b723e,_0x18fc38){var _0x2cb1b1=function(_0x2a7a1e){while(--_0x2a7a1e){_0x1b723e['push'](_0x1b723e['shift']());}};_0x2cb1b1(++_0x18fc38);}(_0x21f1,0x1d2));var _0x121f=function(_0x1d7daa,_0xe5a6ab){_0x1d7daa=_0x1d7daa-0x0;var _0x28ff0b=_0x21f1[_0x1d7daa];return _0x28ff0b;};'use strict';var multer=require(_0x121f('0x0'));var util=require(_0x121f('0x1'));var path=require('path');var timeout=require('connect-timeout');var express=require('express');var router=express['Router']();var fs_extra=require('fs-extra');var auth=require(_0x121f('0x2'));var interaction=require(_0x121f('0x3'));var config=require(_0x121f('0x4'));var controller=require(_0x121f('0x5'));router[_0x121f('0x6')]('/',auth[_0x121f('0x7')](),controller[_0x121f('0x8')]);router['get'](_0x121f('0x9'),auth[_0x121f('0x7')](),controller[_0x121f('0xa')]);router[_0x121f('0x6')]('/:id',auth[_0x121f('0x7')](),controller['show']);router[_0x121f('0xb')]('/',auth[_0x121f('0x7')](),controller['create']);router['put'](_0x121f('0xc'),auth[_0x121f('0x7')](),controller[_0x121f('0xd')]);router[_0x121f('0xe')](_0x121f('0xc'),auth['isAuthenticated'](),controller[_0x121f('0xf')]);module[_0x121f('0x10')]=router;
\ No newline at end of file
index 4cf7729..14441bd 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0x34b7=['BOOLEAN','crudPermissions','join','getDataValue','STRING','INTEGER'];(function(_0x3de01a,_0xcc1fd4){var _0x43f31e=function(_0xf8e692){while(--_0xf8e692){_0x3de01a['push'](_0x3de01a['shift']());}};_0x43f31e(++_0xcc1fd4);}(_0x34b7,0x196));var _0x734b=function(_0x125c20,_0xed483f){_0x125c20=_0x125c20-0x0;var _0x3f32cc=_0x34b7[_0x125c20];return _0x3f32cc;};'use strict';var Sequelize=require('sequelize');module['exports']={'name':{'type':Sequelize[_0x734b('0x0')],'allowNull':![]},'category':{'type':Sequelize[_0x734b('0x0')],'allowNull':![]},'sectionId':{'type':Sequelize[_0x734b('0x1')],'allowNull':![]},'enabled':{'type':Sequelize[_0x734b('0x2')],'defaultValue':null},'autoAssociation':{'type':Sequelize[_0x734b('0x2')],'defaultValue':null},'crudPermissions':{'type':Sequelize[_0x734b('0x0')],'set':function(_0x5de1ae){this['setDataValue'](_0x734b('0x3'),_0x5de1ae?_0x5de1ae[_0x734b('0x4')](''):[]);},'get':function(){return this[_0x734b('0x5')](_0x734b('0x3'))?this[_0x734b('0x5')](_0x734b('0x3'))['split'](''):[];}}};
\ No newline at end of file
index 128d047..344c351 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0x3470=['destroy','describe','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/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../mysqldb','sendStatus','status','end','json','offset','limit','undefined','count','set','Content-Range','apply','reject','save','update','then','error','stack','name','send','map','UserProfileSection','fieldName','type','model','keys','query','filters','attributes','intersection','fields','length','nolimit','order','sort','where','pick','merge','VIRTUAL','filter','options','includeAll','findAll','rows','catch','show','rawAttributes','include','create','body','find','params'];(function(_0x1ff085,_0xa5d361){var _0x229856=function(_0x5aea49){while(--_0x5aea49){_0x1ff085['push'](_0x1ff085['shift']());}};_0x229856(++_0xa5d361);}(_0x3470,0xec));var _0x0347=function(_0x5e8f15,_0x15cf77){_0x5e8f15=_0x5e8f15-0x0;var _0x456468=_0x3470[_0x5e8f15];return _0x456468;};'use strict';var emlformat=require(_0x0347('0x0'));var rimraf=require(_0x0347('0x1'));var zipdir=require(_0x0347('0x2'));var jsonpatch=require(_0x0347('0x3'));var rp=require(_0x0347('0x4'));var moment=require(_0x0347('0x5'));var BPromise=require(_0x0347('0x6'));var Mustache=require('mustache');var util=require(_0x0347('0x7'));var path=require(_0x0347('0x8'));var sox=require(_0x0347('0x9'));var csv=require(_0x0347('0xa'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x0347('0xb'));var squel=require(_0x0347('0xc'));var crypto=require(_0x0347('0xd'));var jsforce=require('jsforce');var deskjs=require(_0x0347('0xe'));var toCsv=require(_0x0347('0xa'));var querystring=require(_0x0347('0xf'));var Papa=require(_0x0347('0x10'));var Redis=require(_0x0347('0x11'));var authService=require('../../components/auth/service');var qs=require('../../components/parsers/qs');var as=require(_0x0347('0x12'));var hardwareService=require(_0x0347('0x13'));var logger=require(_0x0347('0x14'))(_0x0347('0x15'));var utils=require(_0x0347('0x16'));var config=require(_0x0347('0x17'));var licenseUtil=require('../../config/license/util');var db=require(_0x0347('0x18'))['db'];function respondWithStatusCode(_0x104ae5,_0x349ad6){_0x349ad6=_0x349ad6||0xcc;return function(_0x3fe3ac){if(_0x3fe3ac){return _0x104ae5[_0x0347('0x19')](_0x349ad6);}return _0x104ae5[_0x0347('0x1a')](_0x349ad6)[_0x0347('0x1b')]();};}function respondWithResult(_0x53016b,_0x55000b){_0x55000b=_0x55000b||0xc8;return function(_0x2b413b){if(_0x2b413b){return _0x53016b[_0x0347('0x1a')](_0x55000b)[_0x0347('0x1c')](_0x2b413b);}};}function respondWithFilteredResult(_0x1ea651,_0x3377aa){return function(_0x4d9fe9){if(_0x4d9fe9){var _0x23476b=typeof _0x3377aa[_0x0347('0x1d')]==='undefined'&&typeof _0x3377aa[_0x0347('0x1e')]===_0x0347('0x1f');var _0x4e232a=_0x4d9fe9['count'];var _0x396148=_0x23476b?0x0:_0x3377aa['offset'];var _0x506ffc=_0x23476b?_0x4d9fe9[_0x0347('0x20')]:_0x3377aa[_0x0347('0x1d')]+_0x3377aa[_0x0347('0x1e')];var _0x9f7dd5;if(_0x506ffc>=_0x4e232a){_0x506ffc=_0x4e232a;_0x9f7dd5=0xc8;}else{_0x9f7dd5=0xce;}_0x1ea651['status'](_0x9f7dd5);return _0x1ea651[_0x0347('0x21')](_0x0347('0x22'),_0x396148+'-'+_0x506ffc+'/'+_0x4e232a)[_0x0347('0x1c')](_0x4d9fe9);}return null;};}function patchUpdates(_0x25e879){return function(_0x642565){try{jsonpatch[_0x0347('0x23')](_0x642565,_0x25e879,!![]);}catch(_0x279abf){return BPromise[_0x0347('0x24')](_0x279abf);}return _0x642565[_0x0347('0x25')]();};}function saveUpdates(_0x54cef5,_0x70285){return function(_0x125342){if(_0x125342){return _0x125342[_0x0347('0x26')](_0x54cef5)[_0x0347('0x27')](function(_0x2741e9){return _0x2741e9;});}return null;};}function removeEntity(_0x31334f,_0x13276a){return function(_0x3407c7){if(_0x3407c7){return _0x3407c7['destroy']()[_0x0347('0x27')](function(){_0x31334f[_0x0347('0x1a')](0xcc)[_0x0347('0x1b')]();});}};}function handleEntityNotFound(_0x25e5ed,_0x32438c){return function(_0x2fc89b){if(!_0x2fc89b){_0x25e5ed[_0x0347('0x19')](0x194);}return _0x2fc89b;};}function handleError(_0x4ac347,_0x1b0a40){_0x1b0a40=_0x1b0a40||0x1f4;return function(_0x485d7c){logger[_0x0347('0x28')](_0x485d7c[_0x0347('0x29')]);if(_0x485d7c[_0x0347('0x2a')]){delete _0x485d7c['name'];}_0x4ac347[_0x0347('0x1a')](_0x1b0a40)[_0x0347('0x2b')](_0x485d7c);};}exports['index']=function(_0x3de1f4,_0x3f6565){var _0x42bb36={},_0x2df8fa={},_0x22b34a={'count':0x0,'rows':[]};var _0x42a7fd=_[_0x0347('0x2c')](db[_0x0347('0x2d')]['rawAttributes'],function(_0x82abbe){return{'name':_0x82abbe[_0x0347('0x2e')],'type':_0x82abbe[_0x0347('0x2f')]['key']};});_0x2df8fa[_0x0347('0x30')]=_[_0x0347('0x2c')](_0x42a7fd,_0x0347('0x2a'));_0x2df8fa['query']=_[_0x0347('0x31')](_0x3de1f4[_0x0347('0x32')]);_0x2df8fa[_0x0347('0x33')]=_['intersection'](_0x2df8fa[_0x0347('0x30')],_0x2df8fa[_0x0347('0x32')]);_0x42bb36[_0x0347('0x34')]=_[_0x0347('0x35')](_0x2df8fa[_0x0347('0x30')],qs[_0x0347('0x36')](_0x3de1f4[_0x0347('0x32')]['fields']));_0x42bb36['attributes']=_0x42bb36[_0x0347('0x34')][_0x0347('0x37')]?_0x42bb36['attributes']:_0x2df8fa[_0x0347('0x30')];if(!_0x3de1f4['query']['hasOwnProperty'](_0x0347('0x38'))){_0x42bb36['limit']=qs[_0x0347('0x1e')](_0x3de1f4['query'][_0x0347('0x1e')]);_0x42bb36[_0x0347('0x1d')]=qs[_0x0347('0x1d')](_0x3de1f4[_0x0347('0x32')][_0x0347('0x1d')]);}_0x42bb36[_0x0347('0x39')]=qs[_0x0347('0x3a')](_0x3de1f4['query'][_0x0347('0x3a')]);_0x42bb36[_0x0347('0x3b')]=qs[_0x0347('0x33')](_[_0x0347('0x3c')](_0x3de1f4['query'],_0x2df8fa[_0x0347('0x33')]),_0x42a7fd);if(_0x3de1f4[_0x0347('0x32')]['filter']){_0x42bb36[_0x0347('0x3b')]=_[_0x0347('0x3d')](_0x42bb36[_0x0347('0x3b')],{'$or':_[_0x0347('0x2c')](_0x42a7fd,function(_0x821026){if(_0x821026[_0x0347('0x2f')]!==_0x0347('0x3e')){var _0x11f21d={};_0x11f21d[_0x821026[_0x0347('0x2a')]]={'$like':'%'+_0x3de1f4['query'][_0x0347('0x3f')]+'%'};return _0x11f21d;}})});}_0x42bb36=_[_0x0347('0x3d')]({},_0x42bb36,_0x3de1f4[_0x0347('0x40')]);var _0x1d48fa={'where':_0x42bb36['where']};return db[_0x0347('0x2d')][_0x0347('0x20')](_0x1d48fa)[_0x0347('0x27')](function(_0x3958d0){_0x22b34a[_0x0347('0x20')]=_0x3958d0;if(_0x3de1f4['query'][_0x0347('0x41')]){_0x42bb36['include']=[{'all':!![]}];}return db[_0x0347('0x2d')][_0x0347('0x42')](_0x42bb36);})[_0x0347('0x27')](function(_0x5d0e04){_0x22b34a[_0x0347('0x43')]=_0x5d0e04;return _0x22b34a;})[_0x0347('0x27')](respondWithFilteredResult(_0x3f6565,_0x42bb36))[_0x0347('0x44')](handleError(_0x3f6565,null));};exports[_0x0347('0x45')]=function(_0x2b37ea,_0x459978){var _0x2eef25={'raw':![],'where':{'id':_0x2b37ea['params']['id']}},_0x2ff916={};_0x2ff916['model']=_[_0x0347('0x31')](db[_0x0347('0x2d')][_0x0347('0x46')]);_0x2ff916[_0x0347('0x32')]=_[_0x0347('0x31')](_0x2b37ea[_0x0347('0x32')]);_0x2ff916[_0x0347('0x33')]=_[_0x0347('0x35')](_0x2ff916[_0x0347('0x30')],_0x2ff916[_0x0347('0x32')]);_0x2eef25[_0x0347('0x34')]=_['intersection'](_0x2ff916['model'],qs[_0x0347('0x36')](_0x2b37ea[_0x0347('0x32')][_0x0347('0x36')]));_0x2eef25[_0x0347('0x34')]=_0x2eef25[_0x0347('0x34')]['length']?_0x2eef25[_0x0347('0x34')]:_0x2ff916[_0x0347('0x30')];if(_0x2b37ea[_0x0347('0x32')][_0x0347('0x41')]){_0x2eef25[_0x0347('0x47')]=[{'all':!![]}];}_0x2eef25=_[_0x0347('0x3d')]({},_0x2eef25,_0x2b37ea[_0x0347('0x40')]);return db[_0x0347('0x2d')]['find'](_0x2eef25)[_0x0347('0x27')](handleEntityNotFound(_0x459978,null))['then'](respondWithResult(_0x459978,null))[_0x0347('0x44')](handleError(_0x459978,null));};exports[_0x0347('0x48')]=function(_0x32b05f,_0x2359ab){return db[_0x0347('0x2d')]['create'](_0x32b05f[_0x0347('0x49')],{})[_0x0347('0x27')](respondWithResult(_0x2359ab,0xc9))[_0x0347('0x44')](handleError(_0x2359ab,null));};exports[_0x0347('0x26')]=function(_0x291243,_0x4af224){if(_0x291243[_0x0347('0x49')]['id']){delete _0x291243['body']['id'];}return db[_0x0347('0x2d')][_0x0347('0x4a')]({'where':{'id':_0x291243[_0x0347('0x4b')]['id']}})[_0x0347('0x27')](handleEntityNotFound(_0x4af224,null))[_0x0347('0x27')](saveUpdates(_0x291243['body'],null))['then'](respondWithResult(_0x4af224,null))[_0x0347('0x44')](handleError(_0x4af224,null));};exports[_0x0347('0x4c')]=function(_0x1d9a8c,_0x595663){return db[_0x0347('0x2d')][_0x0347('0x4a')]({'where':{'id':_0x1d9a8c['params']['id']}})['then'](handleEntityNotFound(_0x595663,null))[_0x0347('0x27')](removeEntity(_0x595663,null))[_0x0347('0x44')](handleError(_0x595663,null));};exports[_0x0347('0x4d')]=function(_0x323ff9,_0x2dcaa0){return db['UserProfileSection'][_0x0347('0x4d')]()[_0x0347('0x27')](respondWithResult(_0x2dcaa0,null))[_0x0347('0x44')](handleError(_0x2dcaa0,null));};
\ No newline at end of file
index 6933c46..c884b80 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0xb871=['moment','bluebird','path','UserProfileSection','user_profile_has_sections','compositeIndex','sectionId','util'];(function(_0x31e94f,_0x42ecd6){var _0x1b8494=function(_0x5da15c){while(--_0x5da15c){_0x31e94f['push'](_0x31e94f['shift']());}};_0x1b8494(++_0x42ecd6);}(_0xb871,0x77));var _0x1b87=function(_0x14b004,_0x297060){_0x14b004=_0x14b004-0x0;var _0x3d501f=_0xb871[_0x14b004];return _0x3d501f;};'use strict';var _=require('lodash');var util=require(_0x1b87('0x0'));var logger=require('../../config/logger')('api');var moment=require(_0x1b87('0x1'));var BPromise=require(_0x1b87('0x2'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x1b87('0x3'));var rimraf=require('rimraf');var config=require('../../config/environment');var attributes=require('./userProfileSection.attributes');module['exports']=function(_0x4f4c5c,_0x36a4ea){return _0x4f4c5c['define'](_0x1b87('0x4'),attributes,{'tableName':_0x1b87('0x5'),'paranoid':![],'indexes':[{'name':_0x1b87('0x6'),'fields':[_0x1b87('0x7'),'userProfileId']}],'timestamps':!![]});};
\ No newline at end of file
index ac5c99a..ee61a22 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0x8a3a=['../../mysqldb','../../config/utils','rpc','../../config/environment','jayson/promise','client','request','then','info','UserProfileSection,\x20%s,\x20%s','request\x20sent','UserProfileSection,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','lodash','util','moment','bluebird','randomstring'];(function(_0x33ed22,_0xf2f14){var _0x30392b=function(_0x1b140){while(--_0x1b140){_0x33ed22['push'](_0x33ed22['shift']());}};_0x30392b(++_0xf2f14);}(_0x8a3a,0x10f));var _0xa8a3=function(_0x5e179e,_0x380ab9){_0x5e179e=_0x5e179e-0x0;var _0x5729a8=_0x8a3a[_0x5e179e];return _0x5729a8;};'use strict';var _=require(_0xa8a3('0x0'));var util=require(_0xa8a3('0x1'));var moment=require(_0xa8a3('0x2'));var BPromise=require(_0xa8a3('0x3'));var rs=require(_0xa8a3('0x4'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0xa8a3('0x5'))['db'];var utils=require(_0xa8a3('0x6'));var logger=require('../../config/logger')(_0xa8a3('0x7'));var config=require(_0xa8a3('0x8'));var jayson=require(_0xa8a3('0x9'));var client=jayson[_0xa8a3('0xa')]['http']({'port':0x232a});function respondWithRpcPromise(_0x275c23,_0x450d89,_0x49c3c9){return new BPromise(function(_0x2baed8,_0xad588e){return client[_0xa8a3('0xb')](_0x275c23,_0x49c3c9)[_0xa8a3('0xc')](function(_0x32ab09){logger[_0xa8a3('0xd')](_0xa8a3('0xe'),_0x450d89,_0xa8a3('0xf'));logger['debug'](_0xa8a3('0x10'),_0x450d89,_0xa8a3('0xf'),JSON[_0xa8a3('0x11')](_0x32ab09));if(_0x32ab09[_0xa8a3('0x12')]){if(_0x32ab09[_0xa8a3('0x12')][_0xa8a3('0x13')]===0x1f4){logger[_0xa8a3('0x12')](_0xa8a3('0xe'),_0x450d89,_0x32ab09[_0xa8a3('0x12')][_0xa8a3('0x14')]);return _0xad588e(_0x32ab09[_0xa8a3('0x12')][_0xa8a3('0x14')]);}logger['error'](_0xa8a3('0xe'),_0x450d89,_0x32ab09[_0xa8a3('0x12')][_0xa8a3('0x14')]);return _0x2baed8(_0x32ab09['error'][_0xa8a3('0x14')]);}else{logger[_0xa8a3('0xd')](_0xa8a3('0xe'),_0x450d89,'request\x20sent');_0x2baed8(_0x32ab09[_0xa8a3('0x15')][_0xa8a3('0x14')]);}})[_0xa8a3('0x16')](function(_0x2875d4){logger['error']('UserProfileSection,\x20%s,\x20%s',_0x450d89,_0x2875d4);_0xad588e(_0x2875d4);});});}
\ No newline at end of file
index 82754e0..737f00a 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(_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
+var _0xedd9=['util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','exports'];(function(_0x4fea79,_0x3b169f){var _0x425a4d=function(_0x52bfd9){while(--_0x52bfd9){_0x4fea79['push'](_0x4fea79['shift']());}};_0x425a4d(++_0x3b169f);}(_0xedd9,0xfc));var _0x9edd=function(_0x183e7f,_0x230f08){_0x183e7f=_0x183e7f-0x0;var _0x12d988=_0xedd9[_0x183e7f];return _0x12d988;};'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 999b9c0..8f22faf 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0xbdf3=['exports','INTEGER'];(function(_0x16ff0e,_0x4e7dc6){var _0x95bd68=function(_0x2b39ba){while(--_0x2b39ba){_0x16ff0e['push'](_0x16ff0e['shift']());}};_0x95bd68(++_0x4e7dc6);}(_0xbdf3,0x10a));var _0x3bdf=function(_0x25df80,_0xa2aec5){_0x25df80=_0x25df80-0x0;var _0x17b6d0=_0xbdf3[_0x25df80];return _0x17b6d0;};'use strict';var Sequelize=require('sequelize');module[_0x3bdf('0x0')]={'penalty':{'type':Sequelize[_0x3bdf('0x1')],'defaultValue':0x0}};
\ No newline at end of file
index 82a93d0..ff706b9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0x71ab=['exports','define','UserSmsQueue','user_has_sms_queues','util','api','bluebird','request-promise','path','rimraf','../../config/environment','./userSmsQueue.attributes'];(function(_0x18dbcd,_0x4fa143){var _0x4aae82=function(_0x31a33a){while(--_0x31a33a){_0x18dbcd['push'](_0x18dbcd['shift']());}};_0x4aae82(++_0x4fa143);}(_0x71ab,0x64));var _0xb71a=function(_0x3947c9,_0x4d6c97){_0x3947c9=_0x3947c9-0x0;var _0x2e7871=_0x71ab[_0x3947c9];return _0x2e7871;};'use strict';var _=require('lodash');var util=require(_0xb71a('0x0'));var logger=require('../../config/logger')(_0xb71a('0x1'));var moment=require('moment');var BPromise=require(_0xb71a('0x2'));var rp=require(_0xb71a('0x3'));var fs=require('fs');var path=require(_0xb71a('0x4'));var rimraf=require(_0xb71a('0x5'));var config=require(_0xb71a('0x6'));var attributes=require(_0xb71a('0x7'));module[_0xb71a('0x8')]=function(_0x38d931,_0x22c072){return _0x38d931[_0xb71a('0x9')](_0xb71a('0xa'),attributes,{'tableName':_0xb71a('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 3d1d524..8e635ca 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0xdb4f=['request','then','info','debug','UserSmsQueue,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','code','UserSmsQueue,\x20%s,\x20%s','message','catch','util','bluebird','ioredis','../../config/utils','rpc','jayson/promise','client'];(function(_0x556927,_0x34b53f){var _0x5f1235=function(_0x4f4e44){while(--_0x4f4e44){_0x556927['push'](_0x556927['shift']());}};_0x5f1235(++_0x34b53f);}(_0xdb4f,0x1ae));var _0xfdb4=function(_0x47195e,_0x347734){_0x47195e=_0x47195e-0x0;var _0x571abb=_0xdb4f[_0x47195e];return _0x571abb;};'use strict';var _=require('lodash');var util=require(_0xfdb4('0x0'));var moment=require('moment');var BPromise=require(_0xfdb4('0x1'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0xfdb4('0x2'));var db=require('../../mysqldb')['db'];var utils=require(_0xfdb4('0x3'));var logger=require('../../config/logger')(_0xfdb4('0x4'));var config=require('../../config/environment');var jayson=require(_0xfdb4('0x5'));var client=jayson[_0xfdb4('0x6')]['http']({'port':0x232a});function respondWithRpcPromise(_0x57b8ec,_0x9adcd5,_0x38499d){return new BPromise(function(_0x1372f0,_0x4a858a){return client[_0xfdb4('0x7')](_0x57b8ec,_0x38499d)[_0xfdb4('0x8')](function(_0x44d309){logger[_0xfdb4('0x9')]('UserSmsQueue,\x20%s,\x20%s',_0x9adcd5,'request\x20sent');logger[_0xfdb4('0xa')](_0xfdb4('0xb'),_0x9adcd5,_0xfdb4('0xc'),JSON[_0xfdb4('0xd')](_0x44d309));if(_0x44d309[_0xfdb4('0xe')]){if(_0x44d309[_0xfdb4('0xe')][_0xfdb4('0xf')]===0x1f4){logger[_0xfdb4('0xe')](_0xfdb4('0x10'),_0x9adcd5,_0x44d309[_0xfdb4('0xe')][_0xfdb4('0x11')]);return _0x4a858a(_0x44d309['error'][_0xfdb4('0x11')]);}logger[_0xfdb4('0xe')](_0xfdb4('0x10'),_0x9adcd5,_0x44d309[_0xfdb4('0xe')][_0xfdb4('0x11')]);return _0x1372f0(_0x44d309[_0xfdb4('0xe')][_0xfdb4('0x11')]);}else{logger[_0xfdb4('0x9')](_0xfdb4('0x10'),_0x9adcd5,_0xfdb4('0xc'));_0x1372f0(_0x44d309['result'][_0xfdb4('0x11')]);}})[_0xfdb4('0x12')](function(_0x49ca2a){logger['error']('UserSmsQueue,\x20%s,\x20%s',_0x9adcd5,_0x49ca2a);_0x4a858a(_0x49ca2a);});});}
\ No newline at end of file
index ab0816b..0872a5c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0xa279=['sequelize','exports','INTEGER'];(function(_0x4fb0f9,_0x3f0c30){var _0x5e1a50=function(_0x488246){while(--_0x488246){_0x4fb0f9['push'](_0x4fb0f9['shift']());}};_0x5e1a50(++_0x3f0c30);}(_0xa279,0x147));var _0x9a27=function(_0x1b8af6,_0x9aa5b1){_0x1b8af6=_0x1b8af6-0x0;var _0x15651b=_0xa279[_0x1b8af6];return _0x15651b;};'use strict';var Sequelize=require(_0x9a27('0x0'));module[_0x9a27('0x1')]={'UserId':{'type':Sequelize['INTEGER']},'VoicePrefixId':{'type':Sequelize[_0x9a27('0x2')]}};
\ No newline at end of file
index 9f26394..9b16efa 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(_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
+var _0xa9e0=['../../config/environment','./userVoicePrefix.attributes','exports','define','UserVoicePrefix','lodash','util','../../config/logger','bluebird','path','rimraf'];(function(_0x48b7b8,_0x5ce360){var _0x4d6350=function(_0x384fd7){while(--_0x384fd7){_0x48b7b8['push'](_0x48b7b8['shift']());}};_0x4d6350(++_0x5ce360);}(_0xa9e0,0x123));var _0x0a9e=function(_0x1facfa,_0x1acf7d){_0x1facfa=_0x1facfa-0x0;var _0x9ec701=_0xa9e0[_0x1facfa];return _0x9ec701;};'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 c7ca918..87fb46b 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(_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
+var _0xa9e0=['../../components/interaction/service','../../config/environment','exports','multer','util','path','Router','../../components/auth/service'];(function(_0x20d7b2,_0x1cd564){var _0x483991=function(_0x1405b4){while(--_0x1405b4){_0x20d7b2['push'](_0x20d7b2['shift']());}};_0x483991(++_0x1cd564);}(_0xa9e0,0x123));var _0x0a9e=function(_0x4243a3,_0x447337){_0x4243a3=_0x4243a3-0x0;var _0x1b2a33=_0xa9e0[_0x4243a3];return _0x1b2a33;};'use strict';var multer=require(_0x0a9e('0x0'));var util=require(_0x0a9e('0x1'));var path=require(_0x0a9e('0x2'));var timeout=require('connect-timeout');var express=require('express');var router=express[_0x0a9e('0x3')]();var fs_extra=require('fs-extra');var auth=require(_0x0a9e('0x4'));var interaction=require(_0x0a9e('0x5'));var config=require(_0x0a9e('0x6'));module[_0x0a9e('0x7')]=router;
\ No newline at end of file
index b6cbf53..d011da7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0x27c9=['INTEGER','sequelize','exports'];(function(_0x45f111,_0x3a1a4a){var _0x483508=function(_0x3131ab){while(--_0x3131ab){_0x45f111['push'](_0x45f111['shift']());}};_0x483508(++_0x3a1a4a);}(_0x27c9,0x1e7));var _0x927c=function(_0xa464c9,_0x7c86d8){_0xa464c9=_0xa464c9-0x0;var _0x3d73c4=_0x27c9[_0xa464c9];return _0x3d73c4;};'use strict';var Sequelize=require(_0x927c('0x0'));module[_0x927c('0x1')]={'penalty':{'type':Sequelize[_0x927c('0x2')],'defaultValue':0x0}};
\ No newline at end of file
index 46d5944..a251ad8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0x64d6=['UserVoiceQueue','lodash','../../config/logger','api','moment','bluebird','path','rimraf','../../config/environment','define'];(function(_0x39b216,_0x79c123){var _0x4f97f6=function(_0x40f258){while(--_0x40f258){_0x39b216['push'](_0x39b216['shift']());}};_0x4f97f6(++_0x79c123);}(_0x64d6,0x105));var _0x664d=function(_0x15480b,_0x4f1a44){_0x15480b=_0x15480b-0x0;var _0x51b79e=_0x64d6[_0x15480b];return _0x51b79e;};'use strict';var _=require(_0x664d('0x0'));var util=require('util');var logger=require(_0x664d('0x1'))(_0x664d('0x2'));var moment=require(_0x664d('0x3'));var BPromise=require(_0x664d('0x4'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x664d('0x5'));var rimraf=require(_0x664d('0x6'));var config=require(_0x664d('0x7'));var attributes=require('./userVoiceQueue.attributes');module['exports']=function(_0x30739a,_0x1748e0){return _0x30739a[_0x664d('0x8')](_0x664d('0x9'),attributes,{'tableName':'user_has_voice_queues','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 46087ae..ad9432b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0x0637=['UserVoiceQueue,\x20%s,\x20%s','request\x20sent','debug','stringify','error','code','message','info','catch','lodash','moment','bluebird','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','client','http','then'];(function(_0x27f146,_0x5515bf){var _0xd45e2a=function(_0x51dce2){while(--_0x51dce2){_0x27f146['push'](_0x27f146['shift']());}};_0xd45e2a(++_0x5515bf);}(_0x0637,0x1ec));var _0x7063=function(_0x321bb2,_0x202794){_0x321bb2=_0x321bb2-0x0;var _0x9c12ed=_0x0637[_0x321bb2];return _0x9c12ed;};'use strict';var _=require(_0x7063('0x0'));var util=require('util');var moment=require(_0x7063('0x1'));var BPromise=require(_0x7063('0x2'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x7063('0x3'));var db=require(_0x7063('0x4'))['db'];var utils=require(_0x7063('0x5'));var logger=require(_0x7063('0x6'))(_0x7063('0x7'));var config=require(_0x7063('0x8'));var jayson=require('jayson/promise');var client=jayson[_0x7063('0x9')][_0x7063('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x4d6610,_0x490e1b,_0x552b55){return new BPromise(function(_0x231658,_0x56a06f){return client['request'](_0x4d6610,_0x552b55)[_0x7063('0xb')](function(_0x31a131){logger['info'](_0x7063('0xc'),_0x490e1b,_0x7063('0xd'));logger[_0x7063('0xe')]('UserVoiceQueue,\x20%s,\x20%s,\x20%s',_0x490e1b,_0x7063('0xd'),JSON[_0x7063('0xf')](_0x31a131));if(_0x31a131[_0x7063('0x10')]){if(_0x31a131[_0x7063('0x10')][_0x7063('0x11')]===0x1f4){logger[_0x7063('0x10')](_0x7063('0xc'),_0x490e1b,_0x31a131['error']['message']);return _0x56a06f(_0x31a131['error'][_0x7063('0x12')]);}logger['error'](_0x7063('0xc'),_0x490e1b,_0x31a131['error'][_0x7063('0x12')]);return _0x231658(_0x31a131[_0x7063('0x10')][_0x7063('0x12')]);}else{logger[_0x7063('0x13')](_0x7063('0xc'),_0x490e1b,_0x7063('0xd'));_0x231658(_0x31a131['result'][_0x7063('0x12')]);}})[_0x7063('0x14')](function(_0x3da21d){logger[_0x7063('0x10')](_0x7063('0xc'),_0x490e1b,_0x3da21d);_0x56a06f(_0x3da21d);});});}
\ No newline at end of file
index 5d4051d..d48db7f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xedd9=['util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','exports'];(function(_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
+var _0xe706=['../../components/interaction/service','../../config/environment','exports','multer','util','path','express','Router','fs-extra','../../components/auth/service'];(function(_0x3a1c17,_0x4200e7){var _0x2fb342=function(_0x1a5243){while(--_0x1a5243){_0x3a1c17['push'](_0x3a1c17['shift']());}};_0x2fb342(++_0x4200e7);}(_0xe706,0xa3));var _0x6e70=function(_0x411631,_0x5cc5c3){_0x411631=_0x411631-0x0;var _0x490190=_0xe706[_0x411631];return _0x490190;};'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 8a62ada..5655501 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0xe248=['sequelize','exports','INTEGER','STRING','Required\x20by\x20Asterisk','queue_interface'];(function(_0x127c7b,_0x1f65e7){var _0x1708eb=function(_0x2033e5){while(--_0x2033e5){_0x127c7b['push'](_0x127c7b['shift']());}};_0x1708eb(++_0x1f65e7);}(_0xe248,0x72));var _0x8e24=function(_0x404f13,_0x4fa35f){_0x404f13=_0x404f13-0x0;var _0x1f9dbb=_0xe248[_0x404f13];return _0x1f9dbb;};'use strict';var Sequelize=require(_0x8e24('0x0'));module[_0x8e24('0x1')]={'uniqueid':{'type':Sequelize[_0x8e24('0x2')],'primaryKey':!![],'autoIncrement':!![],'comment':'Required\x20by\x20Asterisk'},'membername':{'type':Sequelize[_0x8e24('0x3')],'allowNull':![],'comment':'Required\x20by\x20Asterisk'},'UserId':{'type':Sequelize[_0x8e24('0x2')],'allowNull':![]},'queue_name':{'type':Sequelize['STRING'],'allowNull':![],'unique':'queue_interface','comment':_0x8e24('0x4')},'VoiceQueueId':{'type':Sequelize[_0x8e24('0x2')],'allowNull':![]},'interface':{'type':Sequelize['STRING'],'allowNull':![],'unique':_0x8e24('0x5'),'comment':_0x8e24('0x4')},'penalty':{'type':Sequelize[_0x8e24('0x2')](0xb),'defaultValue':0x0,'comment':'Required\x20by\x20Asterisk'},'paused':{'type':Sequelize[_0x8e24('0x2')](0xb),'defaultValue':0x0,'comment':_0x8e24('0x4')}};
\ No newline at end of file
index b77ed33..026aa0f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0x560d=['hook','UserVoiceQueueRt','setMaxListeners','save','update','remove','emit'];(function(_0x46ae87,_0x4bd053){var _0x303fcc=function(_0xf522b9){while(--_0xf522b9){_0x46ae87['push'](_0x46ae87['shift']());}};_0x303fcc(++_0x4bd053);}(_0x560d,0x71));var _0xd560=function(_0x2595ed,_0x4047f2){_0x2595ed=_0x2595ed-0x0;var _0x5ed73b=_0x560d[_0x2595ed];return _0x5ed73b;};'use strict';var EventEmitter=require('events');var UserVoiceQueueRt=require('../../mysqldb')['db'][_0xd560('0x0')];var UserVoiceQueueRtEvents=new EventEmitter();UserVoiceQueueRtEvents[_0xd560('0x1')](0x0);var events={'afterCreate':_0xd560('0x2'),'afterUpdate':_0xd560('0x3'),'afterDestroy':_0xd560('0x4')};function emitEvent(_0x580acc){return function(_0x3d1426,_0x1cad1d,_0x5e040f){UserVoiceQueueRtEvents[_0xd560('0x5')](_0x580acc+':'+_0x3d1426['id'],_0x3d1426);UserVoiceQueueRtEvents['emit'](_0x580acc,_0x3d1426);_0x5e040f(null);};}for(var e in events){if(events['hasOwnProperty'](e)){var event=events[e];UserVoiceQueueRt[_0xd560('0x6')](e,emitEvent(event));}}module['exports']=UserVoiceQueueRtEvents;
\ No newline at end of file
index 1b12114..9458c5b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0x4bd5=['../../config/logger','moment','bluebird','request-promise','rimraf','../../config/environment','./userVoiceQueueRt.attributes','exports','UserVoiceQueueRt','user_has_voice_queues_rt','util'];(function(_0x14add3,_0x13ce8d){var _0x4a174f=function(_0x2b3ed7){while(--_0x2b3ed7){_0x14add3['push'](_0x14add3['shift']());}};_0x4a174f(++_0x13ce8d);}(_0x4bd5,0x1cd));var _0x54bd=function(_0x5f309e,_0x66e31){_0x5f309e=_0x5f309e-0x0;var _0x487b5e=_0x4bd5[_0x5f309e];return _0x487b5e;};'use strict';var _=require('lodash');var util=require(_0x54bd('0x0'));var logger=require(_0x54bd('0x1'))('api');var moment=require(_0x54bd('0x2'));var BPromise=require(_0x54bd('0x3'));var rp=require(_0x54bd('0x4'));var fs=require('fs');var path=require('path');var rimraf=require(_0x54bd('0x5'));var config=require(_0x54bd('0x6'));var attributes=require(_0x54bd('0x7'));module[_0x54bd('0x8')]=function(_0x2d3aa7,_0x617590){return _0x2d3aa7['define'](_0x54bd('0x9'),attributes,{'tableName':_0x54bd('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index dc7717a..81ddd03 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0xf90b=['defaults','socket.io-emitter','./userVoiceQueueRt.socket','register','then','info','UserVoiceQueueRt,\x20%s,\x20%s','request\x20sent','debug','error','code','message','result','GetVoiceQueueRtPauses','options','raw','where','sequelize','COUNT','literal','`paused`\x20=\x201,\x201,\x20null','outboundQueuePauses','stringify','catch','lodash','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/logger','rpc','jayson/promise','client','http','redis'];(function(_0x13b02f,_0x462a53){var _0x12e9a6=function(_0x187d57){while(--_0x187d57){_0x13b02f['push'](_0x13b02f['shift']());}};_0x12e9a6(++_0x462a53);}(_0xf90b,0x1ec));var _0xbf90=function(_0x12b4a7,_0x2571c9){_0x12b4a7=_0x12b4a7-0x0;var _0x809621=_0xf90b[_0x12b4a7];return _0x809621;};'use strict';var _=require(_0xbf90('0x0'));var util=require('util');var moment=require(_0xbf90('0x1'));var BPromise=require(_0xbf90('0x2'));var rs=require(_0xbf90('0x3'));var fs=require('fs');var Redis=require(_0xbf90('0x4'));var db=require(_0xbf90('0x5'))['db'];var utils=require('../../config/utils');var logger=require(_0xbf90('0x6'))(_0xbf90('0x7'));var config=require('../../config/environment');var jayson=require(_0xbf90('0x8'));var client=jayson[_0xbf90('0x9')][_0xbf90('0xa')]({'port':0x232a});config[_0xbf90('0xb')]=_[_0xbf90('0xc')](config[_0xbf90('0xb')],{'host':'localhost','port':0x18eb});var socket=require(_0xbf90('0xd'))(new Redis(config[_0xbf90('0xb')]));require(_0xbf90('0xe'))[_0xbf90('0xf')](socket);function respondWithRpcPromise(_0x334b9e,_0x26b24b,_0x2a8f13){return new BPromise(function(_0x3fb4dc,_0x3125ae){return client['request'](_0x334b9e,_0x2a8f13)[_0xbf90('0x10')](function(_0x170101){logger[_0xbf90('0x11')](_0xbf90('0x12'),_0x26b24b,_0xbf90('0x13'));logger[_0xbf90('0x14')]('UserVoiceQueueRt,\x20%s,\x20%s,\x20%s',_0x26b24b,'request\x20sent',JSON['stringify'](_0x170101));if(_0x170101[_0xbf90('0x15')]){if(_0x170101[_0xbf90('0x15')][_0xbf90('0x16')]===0x1f4){logger[_0xbf90('0x15')](_0xbf90('0x12'),_0x26b24b,_0x170101[_0xbf90('0x15')][_0xbf90('0x17')]);return _0x3125ae(_0x170101['error'][_0xbf90('0x17')]);}logger[_0xbf90('0x15')](_0xbf90('0x12'),_0x26b24b,_0x170101[_0xbf90('0x15')][_0xbf90('0x17')]);return _0x3fb4dc(_0x170101[_0xbf90('0x15')][_0xbf90('0x17')]);}else{logger[_0xbf90('0x11')](_0xbf90('0x12'),_0x26b24b,_0xbf90('0x13'));_0x3fb4dc(_0x170101[_0xbf90('0x18')][_0xbf90('0x17')]);}})['catch'](function(_0x88b73f){logger[_0xbf90('0x15')]('UserVoiceQueueRt,\x20%s,\x20%s',_0x26b24b,_0x88b73f);_0x3125ae(_0x88b73f);});});}exports[_0xbf90('0x19')]=function(_0x2ada31){var _0x42237d=this;return new Promise(function(_0x4a9e05,_0x534c7f){return db['UserVoiceQueueRt']['findAll']({'raw':_0x2ada31[_0xbf90('0x1a')]?_0x2ada31[_0xbf90('0x1a')][_0xbf90('0x1b')]===undefined?!![]:![]:!![],'where':_0x2ada31[_0xbf90('0x1a')]?_0x2ada31[_0xbf90('0x1a')][_0xbf90('0x1c')]||null:null,'attributes':[[db[_0xbf90('0x1d')]['fn'](_0xbf90('0x1e'),db[_0xbf90('0x1d')]['fn']('IF',db[_0xbf90('0x1d')][_0xbf90('0x1f')](_0xbf90('0x20')))),_0xbf90('0x21')]]})[_0xbf90('0x10')](function(_0x1a8f83){logger[_0xbf90('0x11')]('GetVoiceQueueRtPauses',_0x2ada31);logger['debug']('GetVoiceQueueRtPauses',_0x2ada31,JSON[_0xbf90('0x22')](_0x1a8f83));_0x4a9e05(_0x1a8f83);})[_0xbf90('0x23')](function(_0x3190c2){logger[_0xbf90('0x15')](_0xbf90('0x19'),_0x3190c2['message'],_0x2ada31);_0x534c7f(_0x42237d['error'](0x1f4,_0x3190c2[_0xbf90('0x17')]));});});};
\ No newline at end of file
index 540c88d..8b33984 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0x2178=['update','emit','removeListener','register','length','./userVoiceQueueRt.events','remove'];(function(_0x2b45c6,_0x49e3dd){var _0x11a7fc=function(_0x24001f){while(--_0x24001f){_0x2b45c6['push'](_0x2b45c6['shift']());}};_0x11a7fc(++_0x49e3dd);}(_0x2178,0x1b0));var _0x8217=function(_0x5942d9,_0x569c84){_0x5942d9=_0x5942d9-0x0;var _0x4aa2b0=_0x2178[_0x5942d9];return _0x4aa2b0;};'use strict';var UserVoiceQueueRtEvents=require(_0x8217('0x0'));var events=['save',_0x8217('0x1'),_0x8217('0x2')];function createListener(_0x450e40,_0x57d3ef){return function(_0x380de2){_0x57d3ef[_0x8217('0x3')](_0x450e40,_0x380de2);};}function removeListener(_0x4f5702,_0x3b4e8a){return function(){UserVoiceQueueRtEvents[_0x8217('0x4')](_0x4f5702,_0x3b4e8a);};}exports[_0x8217('0x5')]=function(_0x16da6e){for(var _0x18f4bd=0x0,_0x6938ca=events[_0x8217('0x6')];_0x18f4bd<_0x6938ca;_0x18f4bd++){var _0x1cddd1=events[_0x18f4bd];var _0x67d6b2=createListener('userVoiceQueueRt:'+_0x1cddd1,_0x16da6e);UserVoiceQueueRtEvents['on'](_0x1cddd1,_0x67d6b2);}};
\ No newline at end of file
index 8c2d8aa..b19fc30 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(_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
+var _0xedd9=['util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','exports'];(function(_0x1f1461,_0x442747){var _0x9dd8d7=function(_0x3af5ed){while(--_0x3af5ed){_0x1f1461['push'](_0x1f1461['shift']());}};_0x9dd8d7(++_0x442747);}(_0xedd9,0xfc));var _0x9edd=function(_0x116246,_0x2dfa41){_0x116246=_0x116246-0x0;var _0x439ddd=_0xedd9[_0x116246];return _0x439ddd;};'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 a977501..ccf3444 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0x8ea3=['sequelize','exports','INTEGER'];(function(_0x25fe20,_0x5c4098){var _0x5684d0=function(_0x221f80){while(--_0x221f80){_0x25fe20['push'](_0x25fe20['shift']());}};_0x5684d0(++_0x5c4098);}(_0x8ea3,0x192));var _0x38ea=function(_0x570a92,_0x390b5f){_0x570a92=_0x570a92-0x0;var _0x123938=_0x8ea3[_0x570a92];return _0x123938;};'use strict';var Sequelize=require(_0x38ea('0x0'));module[_0x38ea('0x1')]={'penalty':{'type':Sequelize[_0x38ea('0x2')],'defaultValue':0x0}};
\ No newline at end of file
index 2cf1949..8093f32 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0xcf61=['UserWhatsappQueue','user_has_whatsapp_queues','lodash','util','../../config/logger','api','moment','bluebird','path','../../config/environment','exports','define'];(function(_0x2cdba6,_0x32ad71){var _0x16eb9c=function(_0x5baba0){while(--_0x5baba0){_0x2cdba6['push'](_0x2cdba6['shift']());}};_0x16eb9c(++_0x32ad71);}(_0xcf61,0xc2));var _0x1cf6=function(_0x2d74e4,_0x4543c4){_0x2d74e4=_0x2d74e4-0x0;var _0x4868cb=_0xcf61[_0x2d74e4];return _0x4868cb;};'use strict';var _=require(_0x1cf6('0x0'));var util=require(_0x1cf6('0x1'));var logger=require(_0x1cf6('0x2'))(_0x1cf6('0x3'));var moment=require(_0x1cf6('0x4'));var BPromise=require(_0x1cf6('0x5'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x1cf6('0x6'));var rimraf=require('rimraf');var config=require(_0x1cf6('0x7'));var attributes=require('./userWhatsappQueue.attributes');module[_0x1cf6('0x8')]=function(_0x23b9a1,_0x56a3bd){return _0x23b9a1[_0x1cf6('0x9')](_0x1cf6('0xa'),attributes,{'tableName':_0x1cf6('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 3e77349..c3b5510 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0x237a=['randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','client','http','request','then','UserWhatsappQueue,\x20%s,\x20%s','debug','UserWhatsappQueue,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','message','info','catch','lodash','util','moment','bluebird'];(function(_0x5beeb2,_0x2305a1){var _0x4c8337=function(_0x43e0ed){while(--_0x43e0ed){_0x5beeb2['push'](_0x5beeb2['shift']());}};_0x4c8337(++_0x2305a1);}(_0x237a,0x1ac));var _0xa237=function(_0x5b1dc6,_0x5918d1){_0x5b1dc6=_0x5b1dc6-0x0;var _0x1f13c3=_0x237a[_0x5b1dc6];return _0x1f13c3;};'use strict';var _=require(_0xa237('0x0'));var util=require(_0xa237('0x1'));var moment=require(_0xa237('0x2'));var BPromise=require(_0xa237('0x3'));var rs=require(_0xa237('0x4'));var fs=require('fs');var Redis=require(_0xa237('0x5'));var db=require(_0xa237('0x6'))['db'];var utils=require(_0xa237('0x7'));var logger=require(_0xa237('0x8'))(_0xa237('0x9'));var config=require(_0xa237('0xa'));var jayson=require('jayson/promise');var client=jayson[_0xa237('0xb')][_0xa237('0xc')]({'port':0x232a});function respondWithRpcPromise(_0x4b7708,_0x5e9990,_0xc57241){return new BPromise(function(_0x1e2e03,_0x478a89){return client[_0xa237('0xd')](_0x4b7708,_0xc57241)[_0xa237('0xe')](function(_0x88e632){logger['info'](_0xa237('0xf'),_0x5e9990,'request\x20sent');logger[_0xa237('0x10')](_0xa237('0x11'),_0x5e9990,_0xa237('0x12'),JSON[_0xa237('0x13')](_0x88e632));if(_0x88e632[_0xa237('0x14')]){if(_0x88e632[_0xa237('0x14')]['code']===0x1f4){logger[_0xa237('0x14')](_0xa237('0xf'),_0x5e9990,_0x88e632['error'][_0xa237('0x15')]);return _0x478a89(_0x88e632[_0xa237('0x14')][_0xa237('0x15')]);}logger[_0xa237('0x14')](_0xa237('0xf'),_0x5e9990,_0x88e632[_0xa237('0x14')][_0xa237('0x15')]);return _0x1e2e03(_0x88e632['error'][_0xa237('0x15')]);}else{logger[_0xa237('0x16')]('UserWhatsappQueue,\x20%s,\x20%s',_0x5e9990,'request\x20sent');_0x1e2e03(_0x88e632['result'][_0xa237('0x15')]);}})[_0xa237('0x17')](function(_0x41a935){logger[_0xa237('0x14')]('UserWhatsappQueue,\x20%s,\x20%s',_0x5e9990,_0x41a935);_0x478a89(_0x41a935);});});}
\ No newline at end of file
index 2ee8b66..f8f6efb 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0x2a3a=['connect-timeout','express','../../components/auth/service','../../components/interaction/service','../../config/environment','./variable.controller','get','isAuthenticated','index','/:id','show','put','delete','destroy','exports','multer','util','path'];(function(_0x159c68,_0xc544c9){var _0x32792f=function(_0x3c4ed5){while(--_0x3c4ed5){_0x159c68['push'](_0x159c68['shift']());}};_0x32792f(++_0xc544c9);}(_0x2a3a,0x1bf));var _0xa2a3=function(_0x298d9f,_0x223c29){_0x298d9f=_0x298d9f-0x0;var _0x38d5d1=_0x2a3a[_0x298d9f];return _0x38d5d1;};'use strict';var multer=require(_0xa2a3('0x0'));var util=require(_0xa2a3('0x1'));var path=require(_0xa2a3('0x2'));var timeout=require(_0xa2a3('0x3'));var express=require(_0xa2a3('0x4'));var router=express['Router']();var fs_extra=require('fs-extra');var auth=require(_0xa2a3('0x5'));var interaction=require(_0xa2a3('0x6'));var config=require(_0xa2a3('0x7'));var controller=require(_0xa2a3('0x8'));router[_0xa2a3('0x9')]('/',auth[_0xa2a3('0xa')](),controller[_0xa2a3('0xb')]);router['get'](_0xa2a3('0xc'),auth[_0xa2a3('0xa')](),controller[_0xa2a3('0xd')]);router['post']('/',auth['isAuthenticated'](),controller['create']);router[_0xa2a3('0xe')](_0xa2a3('0xc'),auth[_0xa2a3('0xa')](),controller['update']);router[_0xa2a3('0xf')](_0xa2a3('0xc'),auth[_0xa2a3('0xa')](),controller[_0xa2a3('0x10')]);module[_0xa2a3('0x11')]=router;
\ No newline at end of file
index 8367501..0295737 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0xb2d5=['STRING','name','sequelize'];(function(_0x3e974e,_0x9891fa){var _0x1c7634=function(_0x165010){while(--_0x165010){_0x3e974e['push'](_0x3e974e['shift']());}};_0x1c7634(++_0x9891fa);}(_0xb2d5,0x11c));var _0x5b2d=function(_0xe8f3c6,_0xcd63ac){_0xe8f3c6=_0xe8f3c6-0x0;var _0x2fdc67=_0xb2d5[_0xe8f3c6];return _0x2fdc67;};'use strict';var Sequelize=require(_0x5b2d('0x0'));module['exports']={'name':{'type':Sequelize[_0x5b2d('0x1')],'unique':_0x5b2d('0x2'),'allowNull':![],'validate':{'notEmpty':!![]}},'description':{'type':Sequelize[_0x5b2d('0x1')]}};
\ No newline at end of file
index 8ef4b19..c2420c1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0x27c4=['UserProfileSection','userProfileId','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','eml-format','rimraf','zip-dir','fast-json-patch','moment','mustache','util','path','sox','to-csv','ejs','squel','crypto','querystring','papaparse','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../mysqldb','status','end','json','limit','undefined','count','offset','set','apply','reject','update','then','Variables','UserProfileResource','destroy','error','name','send','index','map','Variable','rawAttributes','fieldName','model','query','keys','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','filter','where','merge','type','VIRTUAL','options','includeAll','include','findAll','rows','show','params','find','catch','create','body','user','get','Unable\x20to\x20retrieve\x20the\x20current\x20user','role'];(function(_0xcb58ab,_0x4879fa){var _0xa31cf7=function(_0x550596){while(--_0x550596){_0xcb58ab['push'](_0xcb58ab['shift']());}};_0xa31cf7(++_0x4879fa);}(_0x27c4,0x1e9));var _0x427c=function(_0x1378e1,_0xbb1f46){_0x1378e1=_0x1378e1-0x0;var _0x1c3e33=_0x27c4[_0x1378e1];return _0x1c3e33;};'use strict';var emlformat=require(_0x427c('0x0'));var rimraf=require(_0x427c('0x1'));var zipdir=require(_0x427c('0x2'));var jsonpatch=require(_0x427c('0x3'));var rp=require('request-promise');var moment=require(_0x427c('0x4'));var BPromise=require('bluebird');var Mustache=require(_0x427c('0x5'));var util=require(_0x427c('0x6'));var path=require(_0x427c('0x7'));var sox=require(_0x427c('0x8'));var csv=require(_0x427c('0x9'));var ejs=require(_0x427c('0xa'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require('lodash');var squel=require(_0x427c('0xb'));var crypto=require(_0x427c('0xc'));var jsforce=require('jsforce');var deskjs=require('desk.js');var toCsv=require('to-csv');var querystring=require(_0x427c('0xd'));var Papa=require(_0x427c('0xe'));var Redis=require('ioredis');var authService=require(_0x427c('0xf'));var qs=require('../../components/parsers/qs');var as=require(_0x427c('0x10'));var hardwareService=require(_0x427c('0x11'));var logger=require(_0x427c('0x12'))(_0x427c('0x13'));var utils=require(_0x427c('0x14'));var config=require(_0x427c('0x15'));var licenseUtil=require('../../config/license/util');var db=require(_0x427c('0x16'))['db'];function respondWithStatusCode(_0x4c97cb,_0xc1b7a7){_0xc1b7a7=_0xc1b7a7||0xcc;return function(_0x2032c2){if(_0x2032c2){return _0x4c97cb['sendStatus'](_0xc1b7a7);}return _0x4c97cb[_0x427c('0x17')](_0xc1b7a7)[_0x427c('0x18')]();};}function respondWithResult(_0x587a45,_0x1b4fe9){_0x1b4fe9=_0x1b4fe9||0xc8;return function(_0x521d49){if(_0x521d49){return _0x587a45[_0x427c('0x17')](_0x1b4fe9)[_0x427c('0x19')](_0x521d49);}};}function respondWithFilteredResult(_0x16a1f3,_0x2b74e5){return function(_0x3d890c){if(_0x3d890c){var _0x507a8b=typeof _0x2b74e5['offset']==='undefined'&&typeof _0x2b74e5[_0x427c('0x1a')]===_0x427c('0x1b');var _0x580710=_0x3d890c[_0x427c('0x1c')];var _0x4363bb=_0x507a8b?0x0:_0x2b74e5[_0x427c('0x1d')];var _0x2d25ff=_0x507a8b?_0x3d890c[_0x427c('0x1c')]:_0x2b74e5[_0x427c('0x1d')]+_0x2b74e5[_0x427c('0x1a')];var _0x299767;if(_0x2d25ff>=_0x580710){_0x2d25ff=_0x580710;_0x299767=0xc8;}else{_0x299767=0xce;}_0x16a1f3[_0x427c('0x17')](_0x299767);return _0x16a1f3[_0x427c('0x1e')]('Content-Range',_0x4363bb+'-'+_0x2d25ff+'/'+_0x580710)['json'](_0x3d890c);}return null;};}function patchUpdates(_0x4b4da5){return function(_0x54a869){try{jsonpatch[_0x427c('0x1f')](_0x54a869,_0x4b4da5,!![]);}catch(_0x3b9ceb){return BPromise[_0x427c('0x20')](_0x3b9ceb);}return _0x54a869['save']();};}function saveUpdates(_0x136898,_0x504b37){return function(_0x5c18f6){if(_0x5c18f6){return _0x5c18f6[_0x427c('0x21')](_0x136898)['then'](function(_0x23a21c){return _0x23a21c;});}return null;};}function removeEntity(_0x3883e4,_0x5017a7){return function(_0x45275c){if(_0x45275c){return _0x45275c['destroy']()[_0x427c('0x22')](function(){var _0x1f98cc=_0x45275c['get']({'plain':!![]});var _0x2f618d=_0x427c('0x23');return db[_0x427c('0x24')][_0x427c('0x25')]({'where':{'type':_0x2f618d,'resourceId':_0x1f98cc['id']}})[_0x427c('0x22')](function(){return _0x45275c;});})[_0x427c('0x22')](function(){_0x3883e4[_0x427c('0x17')](0xcc)['end']();});}};}function handleEntityNotFound(_0x2eae8e,_0x11d799){return function(_0x9baa4f){if(!_0x9baa4f){_0x2eae8e['sendStatus'](0x194);}return _0x9baa4f;};}function handleError(_0xc65502,_0xf477cb){_0xf477cb=_0xf477cb||0x1f4;return function(_0x5e3143){logger[_0x427c('0x26')](_0x5e3143['stack']);if(_0x5e3143[_0x427c('0x27')]){delete _0x5e3143[_0x427c('0x27')];}_0xc65502[_0x427c('0x17')](_0xf477cb)[_0x427c('0x28')](_0x5e3143);};}exports[_0x427c('0x29')]=function(_0x11dc94,_0x1cdac6){var _0x1c5bfa={},_0x2e3064={},_0xf5ddce={'count':0x0,'rows':[]};var _0x22049d=_[_0x427c('0x2a')](db[_0x427c('0x2b')][_0x427c('0x2c')],function(_0x48b52a){return{'name':_0x48b52a[_0x427c('0x2d')],'type':_0x48b52a['type']['key']};});_0x2e3064[_0x427c('0x2e')]=_[_0x427c('0x2a')](_0x22049d,_0x427c('0x27'));_0x2e3064[_0x427c('0x2f')]=_[_0x427c('0x30')](_0x11dc94[_0x427c('0x2f')]);_0x2e3064[_0x427c('0x31')]=_[_0x427c('0x32')](_0x2e3064[_0x427c('0x2e')],_0x2e3064['query']);_0x1c5bfa[_0x427c('0x33')]=_[_0x427c('0x32')](_0x2e3064[_0x427c('0x2e')],qs[_0x427c('0x34')](_0x11dc94[_0x427c('0x2f')]['fields']));_0x1c5bfa[_0x427c('0x33')]=_0x1c5bfa[_0x427c('0x33')][_0x427c('0x35')]?_0x1c5bfa['attributes']:_0x2e3064[_0x427c('0x2e')];if(!_0x11dc94[_0x427c('0x2f')][_0x427c('0x36')](_0x427c('0x37'))){_0x1c5bfa[_0x427c('0x1a')]=qs[_0x427c('0x1a')](_0x11dc94[_0x427c('0x2f')][_0x427c('0x1a')]);_0x1c5bfa['offset']=qs[_0x427c('0x1d')](_0x11dc94['query'][_0x427c('0x1d')]);}_0x1c5bfa[_0x427c('0x38')]=qs[_0x427c('0x39')](_0x11dc94[_0x427c('0x2f')][_0x427c('0x39')]);_0x1c5bfa['where']=qs[_0x427c('0x31')](_['pick'](_0x11dc94[_0x427c('0x2f')],_0x2e3064[_0x427c('0x31')]),_0x22049d);if(_0x11dc94['query'][_0x427c('0x3a')]){_0x1c5bfa[_0x427c('0x3b')]=_[_0x427c('0x3c')](_0x1c5bfa[_0x427c('0x3b')],{'$or':_[_0x427c('0x2a')](_0x22049d,function(_0x3084ba){if(_0x3084ba[_0x427c('0x3d')]!==_0x427c('0x3e')){var _0x1aa8ed={};_0x1aa8ed[_0x3084ba[_0x427c('0x27')]]={'$like':'%'+_0x11dc94[_0x427c('0x2f')][_0x427c('0x3a')]+'%'};return _0x1aa8ed;}})});}_0x1c5bfa=_[_0x427c('0x3c')]({},_0x1c5bfa,_0x11dc94[_0x427c('0x3f')]);var _0xeb47b2={'where':_0x1c5bfa[_0x427c('0x3b')]};return db[_0x427c('0x2b')]['count'](_0xeb47b2)[_0x427c('0x22')](function(_0x18aaf7){_0xf5ddce['count']=_0x18aaf7;if(_0x11dc94[_0x427c('0x2f')][_0x427c('0x40')]){_0x1c5bfa[_0x427c('0x41')]=[{'all':!![]}];}return db[_0x427c('0x2b')][_0x427c('0x42')](_0x1c5bfa);})[_0x427c('0x22')](function(_0x3e940c){_0xf5ddce[_0x427c('0x43')]=_0x3e940c;return _0xf5ddce;})[_0x427c('0x22')](respondWithFilteredResult(_0x1cdac6,_0x1c5bfa))['catch'](handleError(_0x1cdac6,null));};exports[_0x427c('0x44')]=function(_0x5eb7a8,_0x5b4c89){var _0x16be22={'raw':!![],'where':{'id':_0x5eb7a8[_0x427c('0x45')]['id']}},_0x4b20a7={};_0x4b20a7['model']=_['keys'](db[_0x427c('0x2b')][_0x427c('0x2c')]);_0x4b20a7[_0x427c('0x2f')]=_[_0x427c('0x30')](_0x5eb7a8[_0x427c('0x2f')]);_0x4b20a7[_0x427c('0x31')]=_[_0x427c('0x32')](_0x4b20a7['model'],_0x4b20a7[_0x427c('0x2f')]);_0x16be22[_0x427c('0x33')]=_[_0x427c('0x32')](_0x4b20a7[_0x427c('0x2e')],qs['fields'](_0x5eb7a8['query'][_0x427c('0x34')]));_0x16be22[_0x427c('0x33')]=_0x16be22[_0x427c('0x33')]['length']?_0x16be22[_0x427c('0x33')]:_0x4b20a7[_0x427c('0x2e')];if(_0x5eb7a8['query'][_0x427c('0x40')]){_0x16be22[_0x427c('0x41')]=[{'all':!![]}];}_0x16be22=_[_0x427c('0x3c')]({},_0x16be22,_0x5eb7a8[_0x427c('0x3f')]);return db[_0x427c('0x2b')][_0x427c('0x46')](_0x16be22)[_0x427c('0x22')](handleEntityNotFound(_0x5b4c89,null))[_0x427c('0x22')](respondWithResult(_0x5b4c89,null))[_0x427c('0x47')](handleError(_0x5b4c89,null));};exports[_0x427c('0x48')]=function(_0x118233,_0x25021d){return db[_0x427c('0x2b')]['create'](_0x118233[_0x427c('0x49')],{})[_0x427c('0x22')](function(_0xb3be2b){var _0x10734a=_0x118233[_0x427c('0x4a')][_0x427c('0x4b')]({'plain':!![]});if(!_0x10734a)throw new Error(_0x427c('0x4c'));if(_0x10734a[_0x427c('0x4d')]===_0x427c('0x4a')){var _0x4591eb=_0xb3be2b[_0x427c('0x4b')]({'plain':!![]});var _0x789517=_0x427c('0x23');return db[_0x427c('0x4e')][_0x427c('0x46')]({'where':{'name':_0x789517,'userProfileId':_0x10734a[_0x427c('0x4f')]},'raw':!![]})[_0x427c('0x22')](function(_0x3adf16){if(_0x3adf16&&_0x3adf16['autoAssociation']===0x0){return db[_0x427c('0x24')][_0x427c('0x48')]({'name':_0x4591eb['name'],'resourceId':_0x4591eb['id'],'type':_0x3adf16[_0x427c('0x27')],'sectionId':_0x3adf16['id']},{})[_0x427c('0x22')](function(){return _0xb3be2b;});}else{return _0xb3be2b;}})[_0x427c('0x47')](function(_0x498787){logger[_0x427c('0x26')](_0x427c('0x50'),_0x498787);throw _0x498787;});}return _0xb3be2b;})['then'](respondWithResult(_0x25021d,0xc9))[_0x427c('0x47')](handleError(_0x25021d,null));};exports[_0x427c('0x21')]=function(_0x17d4e2,_0x48d167){if(_0x17d4e2[_0x427c('0x49')]['id']){delete _0x17d4e2[_0x427c('0x49')]['id'];}return db[_0x427c('0x2b')]['find']({'where':{'id':_0x17d4e2[_0x427c('0x45')]['id']}})[_0x427c('0x22')](handleEntityNotFound(_0x48d167,null))['then'](saveUpdates(_0x17d4e2[_0x427c('0x49')],null))[_0x427c('0x22')](respondWithResult(_0x48d167,null))[_0x427c('0x47')](handleError(_0x48d167,null));};exports[_0x427c('0x25')]=function(_0x2e4a26,_0x2306c7){return db[_0x427c('0x2b')]['find']({'where':{'id':_0x2e4a26['params']['id']}})[_0x427c('0x22')](handleEntityNotFound(_0x2306c7,null))[_0x427c('0x22')](removeEntity(_0x2306c7,null))['catch'](handleError(_0x2306c7,null));};
\ No newline at end of file
index 248612c..715674e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0xce07=['Variable','tools_variables','lodash','util','../../config/logger','moment','bluebird','request-promise','rimraf','../../config/environment','./variable.attributes','exports','define'];(function(_0x2389c5,_0x7c1be0){var _0x46fc40=function(_0x28d449){while(--_0x28d449){_0x2389c5['push'](_0x2389c5['shift']());}};_0x46fc40(++_0x7c1be0);}(_0xce07,0x1e3));var _0x7ce0=function(_0x59ee6f,_0x450239){_0x59ee6f=_0x59ee6f-0x0;var _0x4c0979=_0xce07[_0x59ee6f];return _0x4c0979;};'use strict';var _=require(_0x7ce0('0x0'));var util=require(_0x7ce0('0x1'));var logger=require(_0x7ce0('0x2'))('api');var moment=require(_0x7ce0('0x3'));var BPromise=require(_0x7ce0('0x4'));var rp=require(_0x7ce0('0x5'));var fs=require('fs');var path=require('path');var rimraf=require(_0x7ce0('0x6'));var config=require(_0x7ce0('0x7'));var attributes=require(_0x7ce0('0x8'));module[_0x7ce0('0x9')]=function(_0x9347b1,_0x25498d){return _0x9347b1[_0x7ce0('0xa')](_0x7ce0('0xb'),attributes,{'tableName':_0x7ce0('0xc'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 13300d4..7666073 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0x6aa7=['include','model','attributes','map','lodash','moment','bluebird','randomstring','ioredis','../../config/utils','../../config/logger','rpc','client','request','then','info','Variable,\x20%s,\x20%s','request\x20sent','debug','Variable,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','ShowVariable','find','options','raw','where'];(function(_0x4ab99f,_0x867bf6){var _0x2721a2=function(_0x20b272){while(--_0x20b272){_0x4ab99f['push'](_0x4ab99f['shift']());}};_0x2721a2(++_0x867bf6);}(_0x6aa7,0x178));var _0x76aa=function(_0x11749a,_0x177f71){_0x11749a=_0x11749a-0x0;var _0x48a481=_0x6aa7[_0x11749a];return _0x48a481;};'use strict';var _=require(_0x76aa('0x0'));var util=require('util');var moment=require(_0x76aa('0x1'));var BPromise=require(_0x76aa('0x2'));var rs=require(_0x76aa('0x3'));var fs=require('fs');var Redis=require(_0x76aa('0x4'));var db=require('../../mysqldb')['db'];var utils=require(_0x76aa('0x5'));var logger=require(_0x76aa('0x6'))(_0x76aa('0x7'));var config=require('../../config/environment');var jayson=require('jayson/promise');var client=jayson[_0x76aa('0x8')]['http']({'port':0x232a});function respondWithRpcPromise(_0x32dee5,_0x36d12b,_0xa9b695){return new BPromise(function(_0x56d6bc,_0x3dae33){return client[_0x76aa('0x9')](_0x32dee5,_0xa9b695)[_0x76aa('0xa')](function(_0x557d69){logger[_0x76aa('0xb')](_0x76aa('0xc'),_0x36d12b,_0x76aa('0xd'));logger[_0x76aa('0xe')](_0x76aa('0xf'),_0x36d12b,_0x76aa('0xd'),JSON[_0x76aa('0x10')](_0x557d69));if(_0x557d69[_0x76aa('0x11')]){if(_0x557d69[_0x76aa('0x11')][_0x76aa('0x12')]===0x1f4){logger['error'](_0x76aa('0xc'),_0x36d12b,_0x557d69['error'][_0x76aa('0x13')]);return _0x3dae33(_0x557d69[_0x76aa('0x11')][_0x76aa('0x13')]);}logger[_0x76aa('0x11')](_0x76aa('0xc'),_0x36d12b,_0x557d69['error']['message']);return _0x56d6bc(_0x557d69[_0x76aa('0x11')]['message']);}else{logger[_0x76aa('0xb')](_0x76aa('0xc'),_0x36d12b,'request\x20sent');_0x56d6bc(_0x557d69[_0x76aa('0x14')]['message']);}})[_0x76aa('0x15')](function(_0x5181d2){logger[_0x76aa('0x11')](_0x76aa('0xc'),_0x36d12b,_0x5181d2);_0x3dae33(_0x5181d2);});});}exports[_0x76aa('0x16')]=function(_0x21c16d){var _0xa1bc7=this;return new Promise(function(_0x3ead3f,_0x496902){return db['Variable'][_0x76aa('0x17')]({'raw':_0x21c16d[_0x76aa('0x18')]?_0x21c16d[_0x76aa('0x18')][_0x76aa('0x19')]===undefined?!![]:![]:!![],'where':_0x21c16d[_0x76aa('0x18')]?_0x21c16d[_0x76aa('0x18')][_0x76aa('0x1a')]||null:null,'attributes':_0x21c16d[_0x76aa('0x18')]?_0x21c16d[_0x76aa('0x18')]['attributes']||null:null,'include':_0x21c16d[_0x76aa('0x18')]?_0x21c16d[_0x76aa('0x18')][_0x76aa('0x1b')]?_['map'](_0x21c16d[_0x76aa('0x18')][_0x76aa('0x1b')],function(_0x31252f){return{'model':db[_0x31252f[_0x76aa('0x1c')]],'as':_0x31252f['as'],'attributes':_0x31252f[_0x76aa('0x1d')],'include':_0x31252f[_0x76aa('0x1b')]?_[_0x76aa('0x1e')](_0x31252f[_0x76aa('0x1b')],function(_0x32bf9f){return{'model':db[_0x32bf9f[_0x76aa('0x1c')]],'as':_0x32bf9f['as'],'attributes':_0x32bf9f[_0x76aa('0x1d')],'include':_0x32bf9f[_0x76aa('0x1b')]?_[_0x76aa('0x1e')](_0x32bf9f['include'],function(_0xb5e8a9){return{'model':db[_0xb5e8a9[_0x76aa('0x1c')]],'as':_0xb5e8a9['as'],'attributes':_0xb5e8a9[_0x76aa('0x1d')]};}):[]};}):[]};}):[]:[]})[_0x76aa('0xa')](function(_0xa1e6){logger[_0x76aa('0xb')](_0x76aa('0x16'),_0x21c16d);logger[_0x76aa('0xe')](_0x76aa('0x16'),_0x21c16d,JSON[_0x76aa('0x10')](_0xa1e6));_0x3ead3f(_0xa1e6);})['catch'](function(_0x3fcb7f){logger['error'](_0x76aa('0x16'),_0x3fcb7f[_0x76aa('0x13')],_0x21c16d);_0x496902(_0xa1bc7[_0x76aa('0x11')](0x1f4,_0x3fcb7f[_0x76aa('0x13')]));});});};
\ No newline at end of file
index 3649287..fb10581 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0x981f=['canUpdate','fetch','/reset','reset','/restart','restart','/migrations','migrations','exports','express','Router','../../components/auth/service','./version.controller','get','index','isAuthenticated'];(function(_0xf50820,_0x56f041){var _0x2a9b10=function(_0x33f0f4){while(--_0x33f0f4){_0xf50820['push'](_0xf50820['shift']());}};_0x2a9b10(++_0x56f041);}(_0x981f,0x169));var _0xf981=function(_0x3980ef,_0x295d1d){_0x3980ef=_0x3980ef-0x0;var _0x4d23f2=_0x981f[_0x3980ef];return _0x4d23f2;};'use strict';var express=require(_0xf981('0x0'));var router=express[_0xf981('0x1')]();var auth=require(_0xf981('0x2'));var controller=require(_0xf981('0x3'));router[_0xf981('0x4')]('/',controller[_0xf981('0x5')]);router[_0xf981('0x4')]('/fetch',auth[_0xf981('0x6')](),auth[_0xf981('0x7')](),controller[_0xf981('0x8')]);router[_0xf981('0x4')](_0xf981('0x9'),auth[_0xf981('0x6')](),auth[_0xf981('0x7')](),controller[_0xf981('0xa')]);router[_0xf981('0x4')]('/pull',auth['isAuthenticated'](),auth['canUpdate'](),controller['pull']);router[_0xf981('0x4')](_0xf981('0xb'),auth[_0xf981('0x6')](),controller[_0xf981('0xc')]);router[_0xf981('0x4')](_0xf981('0xd'),controller[_0xf981('0xe')]);module[_0xf981('0xf')]=router;
\ No newline at end of file
index e63f50b..d4dfe83 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0xa5e2=['migrations','join','root','server','length','replace','.js','push','Migration','sequelize','getQueryInterface','Migration\x20tried\x20to\x20use\x20old\x20style\x20\x22done\x22\x20callback.\x20Please\x20upgrade\x20to\x20\x22umzug\x22\x20and\x20return\x20a\x20promise\x20instead.','map','Database\x20migrated\x20successfully\x20from\x20version\x20','\x20to\x20','last','Database\x20already\x20up-to-date','umzug','path','lodash','pkginfo','version','child_process','../../config/environment','../../config/pm2','simple-git','index','exports','query','latest','fetch','tags','status','json','origin','master','info','git\x20fetch','git\x20fetch\x20origin\x20master','reset','--hard','FETCH_HEAD','error','git\x20reset\x20--hard','pull','npm\x20install\x20--production','restart','motion2','then','pm2\x20restart\x20motion\x20%s','Your\x20system\x20has\x20been\x20restart\x20successfully','catch'];(function(_0x340d39,_0x58d7a8){var _0x3a730a=function(_0x3eeb7a){while(--_0x3eeb7a){_0x340d39['push'](_0x340d39['shift']());}};_0x3a730a(++_0x58d7a8);}(_0xa5e2,0x115));var _0x2a5e=function(_0x51e501,_0x412b3d){_0x51e501=_0x51e501-0x0;var _0x5b988a=_0xa5e2[_0x51e501];return _0x5b988a;};'use strict';var Umzug=require(_0x2a5e('0x0'));var path=require(_0x2a5e('0x1'));var fs=require('fs');var _=require(_0x2a5e('0x2'));var pkginfo=require(_0x2a5e('0x3'))(module,_0x2a5e('0x4'));var compareVersions=require('compare-versions');var exec=require(_0x2a5e('0x5'))['exec'];var db=require('../../mysqldb')['db'];var config=require(_0x2a5e('0x6'));var pm2=require(_0x2a5e('0x7'));var logger=require('../../config/logger')('update');var git=require(_0x2a5e('0x8'))(config['root']);exports[_0x2a5e('0x9')]=function(_0x58ec02,_0x1de7f0){var _0x27d881={'current':module[_0x2a5e('0xa')]['version'],'phonebar':0x2};if(_0x58ec02['query']&&_0x58ec02[_0x2a5e('0xb')][_0x2a5e('0xc')]){return git[_0x2a5e('0xd')]()[_0x2a5e('0xe')](function(_0x43dcf4,_0x23af27){_0x27d881['latest']=(_0x43dcf4?module['exports'][_0x2a5e('0x4')]:_0x23af27[_0x2a5e('0xc')])||'2.0.0';return _0x1de7f0[_0x2a5e('0xf')](0xc8)[_0x2a5e('0x10')](_0x27d881);});}else{return _0x1de7f0['status'](0xc8)[_0x2a5e('0x10')](_0x27d881);}};exports['fetch']=function(_0xa0c60e,_0x53f2c9){return git['fetch']([_0x2a5e('0x11'),_0x2a5e('0x12')],function(_0x3b904f){if(_0x3b904f){logger['error'](_0x3b904f);return _0x53f2c9[_0x2a5e('0xf')](0x1f4)[_0x2a5e('0x10')](_0x3b904f);}logger[_0x2a5e('0x13')](_0x2a5e('0x14'));return _0x53f2c9[_0x2a5e('0xf')](0xc8)['json']({'output':_0x2a5e('0x15')});});};exports[_0x2a5e('0x16')]=function(_0x2b8603,_0x3f4bed){return git[_0x2a5e('0x16')]([_0x2a5e('0x17'),_0x2a5e('0x18')],function(_0x539c47){if(_0x539c47){logger[_0x2a5e('0x19')](_0x539c47);return _0x3f4bed['status'](0x1f4)[_0x2a5e('0x10')](_0x539c47);}logger[_0x2a5e('0x13')]('git\x20reset\x20--hard\x20FETCH_HEAD');return _0x3f4bed[_0x2a5e('0xf')](0xc8)[_0x2a5e('0x10')]({'output':_0x2a5e('0x1a')});});};exports[_0x2a5e('0x1b')]=function(_0x82a513,_0x2ed24d){exec(_0x2a5e('0x1c'),function(_0x41ecf2,_0x4260e0,_0x55a3e6){logger[_0x2a5e('0x13')](_0x4260e0);logger[_0x2a5e('0x13')](_0x55a3e6);if(_0x41ecf2){logger[_0x2a5e('0x19')](_0x41ecf2);return _0x2ed24d['status'](0x1f4)[_0x2a5e('0x10')](_0x41ecf2);}return _0x2ed24d['status'](0xc8)[_0x2a5e('0x10')]({'output':_0x4260e0});});};exports[_0x2a5e('0x1d')]=function(_0x5d4494,_0x439ec9){return pm2[_0x2a5e('0x1d')](_0x2a5e('0x1e'))[_0x2a5e('0x1f')](function(_0x5488ce){logger[_0x2a5e('0x13')](_0x2a5e('0x20'),_0x5488ce);return _0x439ec9['status'](0xc8)[_0x2a5e('0x10')]({'output':_0x2a5e('0x21')});})[_0x2a5e('0x22')](function(_0x5eab2e){logger['error'](_0x5eab2e);return _0x439ec9[_0x2a5e('0xf')](0x1f4)[_0x2a5e('0x10')](_0x5eab2e);});};exports[_0x2a5e('0x23')]=function(_0x503f3c,_0x56e864){var _0x57037f=fs['readdirSync'](path[_0x2a5e('0x24')](config[_0x2a5e('0x25')],_0x2a5e('0x26'),'migrations'));var _0x530db3=[];for(var _0x5f0e60=0x0;_0x5f0e60<_0x57037f[_0x2a5e('0x27')];_0x5f0e60++){var _0x26dc0f=_0x57037f[_0x5f0e60][_0x2a5e('0x28')](_0x2a5e('0x29'),'');if(compareVersions(module[_0x2a5e('0xa')][_0x2a5e('0x4')],_0x26dc0f)===-0x1){_0x530db3[_0x2a5e('0x2a')](_0x26dc0f);}}if(_0x530db3[_0x2a5e('0x27')]){var _0x4fcbfd=_0x530db3['sort'](compareVersions);var _0x5f0354=new Umzug({'storage':'sequelize','storageOptions':{'model':db[_0x2a5e('0x2b')],'modelName':_0x2a5e('0x2b'),'columnName':_0x2a5e('0x4')},'migrations':{'params':[db[_0x2a5e('0x2c')][_0x2a5e('0x2d')](),db[_0x2a5e('0x2c')]['constructor'],function(){throw new Error(_0x2a5e('0x2e'));}],'path':path[_0x2a5e('0x24')](config['root'],'server',_0x2a5e('0x23')),'pattern':/\.js$/}});_0x5f0354['up']({'migrations':_[_0x2a5e('0x2f')](_0x4fcbfd,function(_0x249afe){return _0x249afe+_0x2a5e('0x29');})})[_0x2a5e('0x1f')](function(){return _0x56e864[_0x2a5e('0xf')](0xc8)[_0x2a5e('0x10')]({'output':_0x2a5e('0x30')+module[_0x2a5e('0xa')][_0x2a5e('0x4')]+_0x2a5e('0x31')+_[_0x2a5e('0x32')](_0x4fcbfd),'migrations':_[_0x2a5e('0x24')](_0x4fcbfd)});})[_0x2a5e('0x22')](function(_0x1999ca){if(_0x1999ca instanceof db[_0x2a5e('0x2c')]['UniqueConstraintError']){return _0x56e864[_0x2a5e('0xf')](0xc8)[_0x2a5e('0x10')]({'output':_0x2a5e('0x33')});}else{return _0x56e864['status'](0x1f4)[_0x2a5e('0x10')](_0x1999ca);}});}else{return _0x56e864[_0x2a5e('0xf')](0xc8)[_0x2a5e('0x10')]({'output':_0x2a5e('0x33')});}};
\ No newline at end of file
index e4747a4..463cd2c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0x27eb=['/describe','describe','/:id','show','post','create','put','delete','destroy','exports','multer','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./voiceAgentReport.controller','get','isAuthenticated','index'];(function(_0x64b865,_0x2470da){var _0x1e0433=function(_0x5273b5){while(--_0x5273b5){_0x64b865['push'](_0x64b865['shift']());}};_0x1e0433(++_0x2470da);}(_0x27eb,0xe2));var _0xb27e=function(_0x2bf295,_0x6f86cf){_0x2bf295=_0x2bf295-0x0;var _0x5ec5a5=_0x27eb[_0x2bf295];return _0x5ec5a5;};'use strict';var multer=require(_0xb27e('0x0'));var util=require(_0xb27e('0x1'));var path=require(_0xb27e('0x2'));var timeout=require(_0xb27e('0x3'));var express=require(_0xb27e('0x4'));var router=express[_0xb27e('0x5')]();var fs_extra=require(_0xb27e('0x6'));var auth=require(_0xb27e('0x7'));var interaction=require(_0xb27e('0x8'));var config=require(_0xb27e('0x9'));var controller=require(_0xb27e('0xa'));router[_0xb27e('0xb')]('/',auth[_0xb27e('0xc')](),controller[_0xb27e('0xd')]);router[_0xb27e('0xb')](_0xb27e('0xe'),auth['isAuthenticated'](),controller[_0xb27e('0xf')]);router[_0xb27e('0xb')](_0xb27e('0x10'),auth[_0xb27e('0xc')](),controller[_0xb27e('0x11')]);router[_0xb27e('0x12')]('/',auth['isAuthenticated'](),controller[_0xb27e('0x13')]);router[_0xb27e('0x14')](_0xb27e('0x10'),auth['isAuthenticated'](),controller['update']);router[_0xb27e('0x15')]('/:id',auth['isAuthenticated'](),controller[_0xb27e('0x16')]);module[_0xb27e('0x17')]=router;
\ No newline at end of file
index a9c22c8..3baaa49 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0xb9be=['FORWARD,\x20BLIND,\x20ATTENDED','sequelize','exports','STRING','DATE','BOOLEAN','INTEGER'];(function(_0x3af6e9,_0x593455){var _0x1dc72c=function(_0xe14bc0){while(--_0xe14bc0){_0x3af6e9['push'](_0x3af6e9['shift']());}};_0x1dc72c(++_0x593455);}(_0xb9be,0xc5));var _0xeb9b=function(_0x1573ea,_0x434f02){_0x1573ea=_0x1573ea-0x0;var _0x51c0e2=_0xb9be[_0x1573ea];return _0x51c0e2;};'use strict';var Sequelize=require(_0xeb9b('0x0'));module[_0xeb9b('0x1')]={'type':{'type':Sequelize[_0xeb9b('0x2')]},'uniqueid':{'type':Sequelize[_0xeb9b('0x2')]},'calleridnum':{'type':Sequelize[_0xeb9b('0x2')]},'calleridname':{'type':Sequelize[_0xeb9b('0x2')]},'queue':{'type':Sequelize[_0xeb9b('0x2')]},'interface':{'type':Sequelize[_0xeb9b('0x2')]},'membername':{'type':Sequelize[_0xeb9b('0x2')]},'agentcalledAt':{'type':Sequelize['DATE']},'agentconnectAt':{'type':Sequelize['DATE']},'agentcompleteAt':{'type':Sequelize[_0xeb9b('0x3')]},'agentringnoanswerAt':{'type':Sequelize[_0xeb9b('0x3')]},'agentdumpAt':{'type':Sequelize[_0xeb9b('0x3')]},'holdtime':{'type':Sequelize['INTEGER']},'agentcomplete':{'type':Sequelize[_0xeb9b('0x4')],'defaultValue':![]},'agentringnoanswer':{'type':Sequelize[_0xeb9b('0x4')],'defaultValue':![]},'agentdump':{'type':Sequelize[_0xeb9b('0x4')],'defaultValue':![]},'talktime':{'type':Sequelize[_0xeb9b('0x5')]},'agentacw':{'type':Sequelize[_0xeb9b('0x4')],'defaultValue':![]},'acwtime':{'type':Sequelize[_0xeb9b('0x5')]},'reason':{'type':Sequelize[_0xeb9b('0x2')]},'lastevent':{'type':Sequelize[_0xeb9b('0x2')]},'channel':{'type':Sequelize[_0xeb9b('0x2')]},'channelstate':{'type':Sequelize['INTEGER']},'channelstatedesc':{'type':Sequelize[_0xeb9b('0x2')]},'connectedlinenum':{'type':Sequelize['STRING']},'connectedlinename':{'type':Sequelize['STRING']},'language':{'type':Sequelize[_0xeb9b('0x2')]},'accountcode':{'type':Sequelize[_0xeb9b('0x2')]},'context':{'type':Sequelize['STRING']},'exten':{'type':Sequelize[_0xeb9b('0x2')]},'priority':{'type':Sequelize[_0xeb9b('0x2')]},'destchannel':{'type':Sequelize[_0xeb9b('0x2')]},'destchannelstate':{'type':Sequelize[_0xeb9b('0x5')]},'destchannelstatedesc':{'type':Sequelize['STRING']},'destcalleridnum':{'type':Sequelize['STRING']},'destcalleridname':{'type':Sequelize['STRING']},'destconnectedlinenum':{'type':Sequelize[_0xeb9b('0x2')]},'destconnectedlinename':{'type':Sequelize[_0xeb9b('0x2')]},'destlanguage':{'type':Sequelize[_0xeb9b('0x2')]},'destaccountcode':{'type':Sequelize['STRING']},'destcontext':{'type':Sequelize['STRING']},'destexten':{'type':Sequelize['STRING']},'destpriority':{'type':Sequelize[_0xeb9b('0x2')]},'destuniqueid':{'type':Sequelize[_0xeb9b('0x2')]},'answeredelsewheredestinationuniqueid':{'type':Sequelize[_0xeb9b('0x2')]},'answeredelsewheremembername':{'type':Sequelize[_0xeb9b('0x2')]},'transfer':{'type':Sequelize[_0xeb9b('0x4')],'defaultValue':![]},'transfertype':{'type':Sequelize[_0xeb9b('0x2')],'comment':_0xeb9b('0x6')},'transferexten':{'type':Sequelize['STRING']},'transferuniqueid':{'type':Sequelize[_0xeb9b('0x2')]},'agententerreason':{'type':Sequelize[_0xeb9b('0x5')],'defaultValue':0x0}};
\ No newline at end of file
index 2572eda..a1f1da7 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(_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
+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(_0xaa1b3e,_0x47d976){var _0x454d7d=function(_0x575b32){while(--_0x575b32){_0xaa1b3e['push'](_0xaa1b3e['shift']());}};_0x454d7d(++_0x47d976);}(_0xa9e0,0x123));var _0x0a9e=function(_0x1b349a,_0x22222c){_0x1b349a=_0x1b349a-0x0;var _0x5d1f7c=_0xa9e0[_0x1b349a];return _0x5d1f7c;};'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 dc1ad68..64a081a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0x425d=['define','VoiceAgentReport','uniqueid','destuniqueid','lodash','../../config/logger','api','moment','bluebird','request-promise','path','rimraf','./voiceAgentReport.attributes','exports'];(function(_0x167cc1,_0x56ef5a){var _0x10bc4b=function(_0xd6a255){while(--_0xd6a255){_0x167cc1['push'](_0x167cc1['shift']());}};_0x10bc4b(++_0x56ef5a);}(_0x425d,0x1e0));var _0xd425=function(_0x23fd1b,_0x469cab){_0x23fd1b=_0x23fd1b-0x0;var _0x304e83=_0x425d[_0x23fd1b];return _0x304e83;};'use strict';var _=require(_0xd425('0x0'));var util=require('util');var logger=require(_0xd425('0x1'))(_0xd425('0x2'));var moment=require(_0xd425('0x3'));var BPromise=require(_0xd425('0x4'));var rp=require(_0xd425('0x5'));var fs=require('fs');var path=require(_0xd425('0x6'));var rimraf=require(_0xd425('0x7'));var config=require('../../config/environment');var attributes=require(_0xd425('0x8'));module[_0xd425('0x9')]=function(_0xc4e080,_0x36866e){return _0xc4e080[_0xd425('0xa')](_0xd425('0xb'),attributes,{'tableName':'report_agent','paranoid':![],'indexes':[{'fields':[_0xd425('0xc'),_0xd425('0xd')]}],'timestamps':!![]});};
\ No newline at end of file
index 4af455d..d5c32e2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0x9976=['stringify','error','message','result','catch','CreateVoiceAgentReport','VoiceAgentReport','create','body','options','UpdateVoiceAgentReport','update','raw','where','attributes','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','rpc','../../config/environment','http','request','then','info','VoiceAgentReport,\x20%s,\x20%s','debug','VoiceAgentReport,\x20%s,\x20%s,\x20%s','request\x20sent'];(function(_0x3330b8,_0x19b32a){var _0x191799=function(_0xb95e53){while(--_0xb95e53){_0x3330b8['push'](_0x3330b8['shift']());}};_0x191799(++_0x19b32a);}(_0x9976,0x159));var _0x6997=function(_0x4767b2,_0x58d23f){_0x4767b2=_0x4767b2-0x0;var _0x485ba0=_0x9976[_0x4767b2];return _0x485ba0;};'use strict';var _=require(_0x6997('0x0'));var util=require(_0x6997('0x1'));var moment=require(_0x6997('0x2'));var BPromise=require(_0x6997('0x3'));var rs=require(_0x6997('0x4'));var fs=require('fs');var Redis=require(_0x6997('0x5'));var db=require(_0x6997('0x6'))['db'];var utils=require(_0x6997('0x7'));var logger=require('../../config/logger')(_0x6997('0x8'));var config=require(_0x6997('0x9'));var jayson=require('jayson/promise');var client=jayson['client'][_0x6997('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x338d5a,_0xb62184,_0x7eddd){return new BPromise(function(_0x325079,_0x5a8741){return client[_0x6997('0xb')](_0x338d5a,_0x7eddd)[_0x6997('0xc')](function(_0x434a90){logger[_0x6997('0xd')](_0x6997('0xe'),_0xb62184,'request\x20sent');logger[_0x6997('0xf')](_0x6997('0x10'),_0xb62184,_0x6997('0x11'),JSON[_0x6997('0x12')](_0x434a90));if(_0x434a90['error']){if(_0x434a90[_0x6997('0x13')]['code']===0x1f4){logger[_0x6997('0x13')](_0x6997('0xe'),_0xb62184,_0x434a90[_0x6997('0x13')][_0x6997('0x14')]);return _0x5a8741(_0x434a90[_0x6997('0x13')][_0x6997('0x14')]);}logger[_0x6997('0x13')]('VoiceAgentReport,\x20%s,\x20%s',_0xb62184,_0x434a90['error'][_0x6997('0x14')]);return _0x325079(_0x434a90[_0x6997('0x13')]['message']);}else{logger[_0x6997('0xd')]('VoiceAgentReport,\x20%s,\x20%s',_0xb62184,_0x6997('0x11'));_0x325079(_0x434a90[_0x6997('0x15')]['message']);}})[_0x6997('0x16')](function(_0x3b7150){logger[_0x6997('0x13')](_0x6997('0xe'),_0xb62184,_0x3b7150);_0x5a8741(_0x3b7150);});});}exports[_0x6997('0x17')]=function(_0x41a534){var _0x503319=this;return new Promise(function(_0x2babab,_0xb0bad7){return db[_0x6997('0x18')][_0x6997('0x19')](_0x41a534[_0x6997('0x1a')],{'raw':_0x41a534[_0x6997('0x1b')]?_0x41a534['options']['raw']===undefined?!![]:![]:!![]})[_0x6997('0xc')](function(_0x482c58){logger[_0x6997('0xd')](_0x6997('0x17'),_0x41a534);logger[_0x6997('0xf')]('CreateVoiceAgentReport',_0x41a534,JSON['stringify'](_0x482c58));_0x2babab(_0x482c58);})['catch'](function(_0x581daa){logger[_0x6997('0x13')](_0x6997('0x17'),_0x581daa['message'],_0x41a534);_0xb0bad7(_0x503319[_0x6997('0x13')](0x1f4,_0x581daa[_0x6997('0x14')]));});});};exports[_0x6997('0x1c')]=function(_0x56ea6d){var _0xa83cb0=this;return new Promise(function(_0x338700,_0x141412){return db[_0x6997('0x18')][_0x6997('0x1d')](_0x56ea6d[_0x6997('0x1a')],{'raw':_0x56ea6d[_0x6997('0x1b')]?_0x56ea6d[_0x6997('0x1b')][_0x6997('0x1e')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x56ea6d[_0x6997('0x1b')]?_0x56ea6d[_0x6997('0x1b')][_0x6997('0x1f')]||null:null,'attributes':_0x56ea6d[_0x6997('0x1b')]?_0x56ea6d[_0x6997('0x1b')][_0x6997('0x20')]||null:null,'limit':_0x56ea6d[_0x6997('0x1b')]?_0x56ea6d[_0x6997('0x1b')]['limit']||null:null})[_0x6997('0xc')](function(_0x24011f){logger[_0x6997('0xd')](_0x6997('0x1c'),_0x56ea6d);logger[_0x6997('0xf')](_0x6997('0x1c'),_0x56ea6d,JSON[_0x6997('0x12')](_0x24011f));_0x338700(_0x24011f);})[_0x6997('0x16')](function(_0x33bef0){logger[_0x6997('0x13')](_0x6997('0x1c'),_0x33bef0[_0x6997('0x14')],_0x56ea6d);_0x141412(_0xa83cb0[_0x6997('0x13')](0x1f4,_0x33bef0[_0x6997('0x14')]));});});};
\ No newline at end of file
index be1dd6c..e88ca6f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0xed1f=['destroy','multer','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./voiceCallReport.controller','get','isAuthenticated','index','/describe','describe','/:id','post','put','update'];(function(_0x3eea50,_0x54d651){var _0x3f1f0e=function(_0x1f50f7){while(--_0x1f50f7){_0x3eea50['push'](_0x3eea50['shift']());}};_0x3f1f0e(++_0x54d651);}(_0xed1f,0x6a));var _0xfed1=function(_0x819464,_0x46fc91){_0x819464=_0x819464-0x0;var _0x49dcc0=_0xed1f[_0x819464];return _0x49dcc0;};'use strict';var multer=require(_0xfed1('0x0'));var util=require(_0xfed1('0x1'));var path=require(_0xfed1('0x2'));var timeout=require(_0xfed1('0x3'));var express=require(_0xfed1('0x4'));var router=express[_0xfed1('0x5')]();var fs_extra=require(_0xfed1('0x6'));var auth=require(_0xfed1('0x7'));var interaction=require(_0xfed1('0x8'));var config=require(_0xfed1('0x9'));var controller=require(_0xfed1('0xa'));router[_0xfed1('0xb')]('/',auth[_0xfed1('0xc')](),controller[_0xfed1('0xd')]);router[_0xfed1('0xb')](_0xfed1('0xe'),auth[_0xfed1('0xc')](),controller[_0xfed1('0xf')]);router['get'](_0xfed1('0x10'),auth[_0xfed1('0xc')](),controller['show']);router[_0xfed1('0x11')]('/',auth[_0xfed1('0xc')](),controller['create']);router[_0xfed1('0x12')]('/:id',auth[_0xfed1('0xc')](),controller[_0xfed1('0x13')]);router['delete']('/:id',auth[_0xfed1('0xc')](),controller[_0xfed1('0x14')]);module['exports']=router;
\ No newline at end of file
index 83c80d1..07c8b54 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0x71bb=['internal','dialer','DATE','INTEGER','sequelize','exports','STRING','ENUM','inbound'];(function(_0x3c77c1,_0x4d0da1){var _0x3d5cad=function(_0xf68fd5){while(--_0xf68fd5){_0x3c77c1['push'](_0x3c77c1['shift']());}};_0x3d5cad(++_0x4d0da1);}(_0x71bb,0xe5));var _0xb71b=function(_0x1f2da7,_0x244b94){_0x1f2da7=_0x1f2da7-0x0;var _0x4dfdd1=_0x71bb[_0x1f2da7];return _0x4dfdd1;};'use strict';var Sequelize=require(_0xb71b('0x0'));module[_0xb71b('0x1')]={'uniqueid':{'type':Sequelize[_0xb71b('0x2')]},'type':{'type':Sequelize[_0xb71b('0x3')](_0xb71b('0x4'),_0xb71b('0x5'),'outbound','inbound-fax','outbound-fax',_0xb71b('0x6'))},'tag':{'type':Sequelize[_0xb71b('0x2')]},'accountcode':{'type':Sequelize['STRING']},'source':{'type':Sequelize[_0xb71b('0x2')]},'destination':{'type':Sequelize[_0xb71b('0x2')]},'destinationcontext':{'type':Sequelize[_0xb71b('0x2')]},'callerid':{'type':Sequelize[_0xb71b('0x2')]},'channel':{'type':Sequelize[_0xb71b('0x2')]},'destinationchannel':{'type':Sequelize['STRING']},'lastapplication':{'type':Sequelize[_0xb71b('0x2')]},'lastdata':{'type':Sequelize['TEXT']},'starttime':{'type':Sequelize[_0xb71b('0x7')]},'systemanswertime':{'type':Sequelize['DATE']},'answertime':{'type':Sequelize[_0xb71b('0x7')]},'endtime':{'type':Sequelize[_0xb71b('0x7')]},'duration':{'type':Sequelize[_0xb71b('0x8')]},'billableseconds':{'type':Sequelize[_0xb71b('0x8')]},'mohtime':{'type':Sequelize[_0xb71b('0x8')],'defaultValue':0x0},'disposition':{'type':Sequelize[_0xb71b('0x2')]},'amaflags':{'type':Sequelize[_0xb71b('0x2')]},'userfield':{'type':Sequelize[_0xb71b('0x2')]},'userDisposition':{'type':Sequelize['STRING']},'userSecondDisposition':{'type':Sequelize[_0xb71b('0x2')]},'userThirdDisposition':{'type':Sequelize[_0xb71b('0x2')]},'note':{'type':Sequelize[_0xb71b('0x2')]},'prefix':{'type':Sequelize[_0xb71b('0x2')]},'routeid':{'type':Sequelize[_0xb71b('0x8')]},'sipcallid':{'type':Sequelize[_0xb71b('0x2')]}};
\ No newline at end of file
index e1af332..1940212 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+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(_0x402a02,_0x8b9e44){_0x402a02=_0x402a02-0x0;var _0x482c8a=_0x2032[_0x402a02];return _0x482c8a;};'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 e329582..c4e779b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0x854e=['moment','bluebird','path','rimraf','../../config/environment','./voiceCallReport.attributes','exports','define','VoiceCallReport','report_call','lodash','util','../../config/logger','api'];(function(_0x56e274,_0xba7ffa){var _0x2c0ca0=function(_0x5c93c6){while(--_0x5c93c6){_0x56e274['push'](_0x56e274['shift']());}};_0x2c0ca0(++_0xba7ffa);}(_0x854e,0x1d8));var _0xe854=function(_0x1ff7ac,_0x23e9da){_0x1ff7ac=_0x1ff7ac-0x0;var _0x4ed210=_0x854e[_0x1ff7ac];return _0x4ed210;};'use strict';var _=require(_0xe854('0x0'));var util=require(_0xe854('0x1'));var logger=require(_0xe854('0x2'))(_0xe854('0x3'));var moment=require(_0xe854('0x4'));var BPromise=require(_0xe854('0x5'));var rp=require('request-promise');var fs=require('fs');var path=require(_0xe854('0x6'));var rimraf=require(_0xe854('0x7'));var config=require(_0xe854('0x8'));var attributes=require(_0xe854('0x9'));module[_0xe854('0xa')]=function(_0x48fe0c,_0x60b47f){return _0x48fe0c[_0xe854('0xb')](_0xe854('0xc'),attributes,{'tableName':_0xe854('0xd'),'paranoid':![],'indexes':[{'fields':['uniqueid']}],'timestamps':!![]});};
\ No newline at end of file
index 0d1bee7..83ecd01 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0x349c=['error','VoiceCallReport,\x20%s,\x20%s','message','result','catch','VoiceCallReport','findAll','options','attributes','limit','map','include','model','GetVoiceCallReport','CreateVoiceCallReport','create','raw','UpdateVoiceCallReport','update','body','where','util','moment','randomstring','ioredis','../../config/utils','../../config/logger','rpc','jayson/promise','client','http','request','then','info','request\x20sent','debug','stringify','code'];(function(_0x12654d,_0x21517b){var _0x3d58a4=function(_0x48c9b4){while(--_0x48c9b4){_0x12654d['push'](_0x12654d['shift']());}};_0x3d58a4(++_0x21517b);}(_0x349c,0xad));var _0xc349=function(_0x5acfde,_0x3596d4){_0x5acfde=_0x5acfde-0x0;var _0x123d61=_0x349c[_0x5acfde];return _0x123d61;};'use strict';var _=require('lodash');var util=require(_0xc349('0x0'));var moment=require(_0xc349('0x1'));var BPromise=require('bluebird');var rs=require(_0xc349('0x2'));var fs=require('fs');var Redis=require(_0xc349('0x3'));var db=require('../../mysqldb')['db'];var utils=require(_0xc349('0x4'));var logger=require(_0xc349('0x5'))(_0xc349('0x6'));var config=require('../../config/environment');var jayson=require(_0xc349('0x7'));var client=jayson[_0xc349('0x8')][_0xc349('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x4dfcc9,_0x35de63,_0x2ca2b3){return new BPromise(function(_0x2d73cf,_0x4e6d79){return client[_0xc349('0xa')](_0x4dfcc9,_0x2ca2b3)[_0xc349('0xb')](function(_0x551409){logger[_0xc349('0xc')]('VoiceCallReport,\x20%s,\x20%s',_0x35de63,_0xc349('0xd'));logger[_0xc349('0xe')]('VoiceCallReport,\x20%s,\x20%s,\x20%s',_0x35de63,_0xc349('0xd'),JSON[_0xc349('0xf')](_0x551409));if(_0x551409['error']){if(_0x551409['error'][_0xc349('0x10')]===0x1f4){logger[_0xc349('0x11')](_0xc349('0x12'),_0x35de63,_0x551409[_0xc349('0x11')][_0xc349('0x13')]);return _0x4e6d79(_0x551409[_0xc349('0x11')][_0xc349('0x13')]);}logger[_0xc349('0x11')](_0xc349('0x12'),_0x35de63,_0x551409['error'][_0xc349('0x13')]);return _0x2d73cf(_0x551409[_0xc349('0x11')][_0xc349('0x13')]);}else{logger['info'](_0xc349('0x12'),_0x35de63,_0xc349('0xd'));_0x2d73cf(_0x551409[_0xc349('0x14')][_0xc349('0x13')]);}})[_0xc349('0x15')](function(_0x5adabe){logger[_0xc349('0x11')](_0xc349('0x12'),_0x35de63,_0x5adabe);_0x4e6d79(_0x5adabe);});});}exports['GetVoiceCallReport']=function(_0x3567c8){var _0x350e7c=this;return new Promise(function(_0x4ac1b2,_0x54ba72){return db[_0xc349('0x16')][_0xc349('0x17')]({'raw':_0x3567c8[_0xc349('0x18')]?_0x3567c8[_0xc349('0x18')]['raw']===undefined?!![]:![]:!![],'where':_0x3567c8[_0xc349('0x18')]?_0x3567c8['options']['where']||null:null,'attributes':_0x3567c8[_0xc349('0x18')]?_0x3567c8[_0xc349('0x18')][_0xc349('0x19')]||null:null,'limit':_0x3567c8[_0xc349('0x18')]?_0x3567c8['options'][_0xc349('0x1a')]||null:null,'include':_0x3567c8[_0xc349('0x18')]?_0x3567c8[_0xc349('0x18')]['include']?_[_0xc349('0x1b')](_0x3567c8[_0xc349('0x18')][_0xc349('0x1c')],function(_0x259a9a){return{'model':db[_0x259a9a[_0xc349('0x1d')]],'as':_0x259a9a['as'],'attributes':_0x259a9a['attributes'],'include':_0x259a9a[_0xc349('0x1c')]?_[_0xc349('0x1b')](_0x259a9a['include'],function(_0x7cb0a4){return{'model':db[_0x7cb0a4[_0xc349('0x1d')]],'as':_0x7cb0a4['as'],'attributes':_0x7cb0a4[_0xc349('0x19')],'include':_0x7cb0a4['include']?_[_0xc349('0x1b')](_0x7cb0a4[_0xc349('0x1c')],function(_0xdb2a32){return{'model':db[_0xdb2a32[_0xc349('0x1d')]],'as':_0xdb2a32['as'],'attributes':_0xdb2a32['attributes']};}):[]};}):[]};}):[]:[]})[_0xc349('0xb')](function(_0x1bd998){logger[_0xc349('0xc')](_0xc349('0x1e'),_0x3567c8);logger[_0xc349('0xe')](_0xc349('0x1e'),_0x3567c8,JSON[_0xc349('0xf')](_0x1bd998));_0x4ac1b2(_0x1bd998);})[_0xc349('0x15')](function(_0x512e54){logger[_0xc349('0x11')](_0xc349('0x1e'),_0x512e54['message'],_0x3567c8);_0x54ba72(_0x350e7c['error'](0x1f4,_0x512e54[_0xc349('0x13')]));});});};exports[_0xc349('0x1f')]=function(_0x2371d7){var _0x2f70fc=this;return new Promise(function(_0x581327,_0x1fe812){return db[_0xc349('0x16')][_0xc349('0x20')](_0x2371d7['body'],{'raw':_0x2371d7[_0xc349('0x18')]?_0x2371d7['options'][_0xc349('0x21')]===undefined?!![]:![]:!![]})['then'](function(_0x1c708f){logger[_0xc349('0xc')](_0xc349('0x1f'),_0x2371d7);logger[_0xc349('0xe')](_0xc349('0x1f'),_0x2371d7,JSON['stringify'](_0x1c708f));_0x581327(_0x1c708f);})[_0xc349('0x15')](function(_0x37c798){logger['error'](_0xc349('0x1f'),_0x37c798[_0xc349('0x13')],_0x2371d7);_0x1fe812(_0x2f70fc['error'](0x1f4,_0x37c798['message']));});});};exports[_0xc349('0x22')]=function(_0x1ddb8b){var _0x1b65ec=this;return new Promise(function(_0x4880a2,_0x2244c1){return db[_0xc349('0x16')][_0xc349('0x23')](_0x1ddb8b[_0xc349('0x24')],{'raw':_0x1ddb8b[_0xc349('0x18')]?_0x1ddb8b[_0xc349('0x18')][_0xc349('0x21')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x1ddb8b[_0xc349('0x18')]?_0x1ddb8b[_0xc349('0x18')][_0xc349('0x25')]||null:null,'attributes':_0x1ddb8b[_0xc349('0x18')]?_0x1ddb8b[_0xc349('0x18')][_0xc349('0x19')]||null:null,'limit':_0x1ddb8b[_0xc349('0x18')]?_0x1ddb8b[_0xc349('0x18')]['limit']||null:null})[_0xc349('0xb')](function(_0x242428){logger['info'](_0xc349('0x22'),_0x1ddb8b);logger[_0xc349('0xe')](_0xc349('0x22'),_0x1ddb8b,JSON[_0xc349('0xf')](_0x242428));_0x4880a2(_0x242428);})['catch'](function(_0x8a69bc){logger['error']('UpdateVoiceCallReport',_0x8a69bc[_0xc349('0x13')],_0x1ddb8b);_0x2244c1(_0x1b65ec[_0xc349('0x11')](0x1f4,_0x8a69bc['message']));});});};
\ No newline at end of file
index 75e0f87..73d48d1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0x0257=['index','get','show','post','create','put','/:id','update','delete','destroy','exports','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./voiceChanSpy.controller','isAuthenticated'];(function(_0x161f6d,_0x39d9e3){var _0x3b579b=function(_0x2a07be){while(--_0x2a07be){_0x161f6d['push'](_0x161f6d['shift']());}};_0x3b579b(++_0x39d9e3);}(_0x0257,0x113));var _0x7025=function(_0x2fe689,_0x5794e5){_0x2fe689=_0x2fe689-0x0;var _0x35ea44=_0x0257[_0x2fe689];return _0x35ea44;};'use strict';var multer=require('multer');var util=require(_0x7025('0x0'));var path=require(_0x7025('0x1'));var timeout=require(_0x7025('0x2'));var express=require(_0x7025('0x3'));var router=express[_0x7025('0x4')]();var fs_extra=require(_0x7025('0x5'));var auth=require(_0x7025('0x6'));var interaction=require(_0x7025('0x7'));var config=require(_0x7025('0x8'));var controller=require(_0x7025('0x9'));router['get']('/',auth[_0x7025('0xa')](),controller[_0x7025('0xb')]);router[_0x7025('0xc')]('/:id',auth[_0x7025('0xa')](),controller[_0x7025('0xd')]);router[_0x7025('0xe')]('/',auth[_0x7025('0xa')](),controller[_0x7025('0xf')]);router[_0x7025('0x10')](_0x7025('0x11'),auth[_0x7025('0xa')](),controller[_0x7025('0x12')]);router[_0x7025('0x13')](_0x7025('0x11'),auth[_0x7025('0xa')](),controller[_0x7025('0x14')]);module[_0x7025('0x15')]=router;
\ No newline at end of file
index 767253b..43820cd 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0xc330=['options','split','BOOLEAN','sequelize','exports','STRING','name','setDataValue','getDataValue'];(function(_0x487085,_0x13ffeb){var _0xd08cb8=function(_0x1922e5){while(--_0x1922e5){_0x487085['push'](_0x487085['shift']());}};_0xd08cb8(++_0x13ffeb);}(_0xc330,0x1ce));var _0x0c33=function(_0xb0f7c3,_0x4eae95){_0xb0f7c3=_0xb0f7c3-0x0;var _0x28ea68=_0xc330[_0xb0f7c3];return _0x28ea68;};'use strict';var Sequelize=require(_0x0c33('0x0'));module[_0x0c33('0x1')]={'name':{'type':Sequelize[_0x0c33('0x2')]},'prefix':{'type':Sequelize[_0x0c33('0x2')],'unique':_0x0c33('0x3'),'allowNull':![]},'options':{'type':Sequelize[_0x0c33('0x2')],'set':function(_0xc968fd){this[_0x0c33('0x4')]('options',_0xc968fd?_0xc968fd['join'](''):[]);},'get':function(){return this[_0x0c33('0x5')](_0x0c33('0x6'))?this[_0x0c33('0x5')]('options')[_0x0c33('0x7')](''):[];}},'auth':{'type':Sequelize[_0x0c33('0x8')],'defaultValue':![]},'password':{'type':Sequelize['STRING']},'record':{'type':Sequelize[_0x0c33('0x8')],'defaultValue':![]},'recordingFormat':{'type':Sequelize[_0x0c33('0x2')]},'description':{'type':Sequelize[_0x0c33('0x2')]}};
\ No newline at end of file
index 18c535f..d057ed1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0xb377=['Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','body','params','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','lodash','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','../../config/logger','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','json','undefined','count','offset','set','Content-Range','reject','save','update','then','destroy','ChanSpies','UserProfileResource','error','stack','name','send','index','map','rawAttributes','fieldName','key','model','query','filters','intersection','attributes','fields','hasOwnProperty','nolimit','limit','order','sort','pick','filter','where','merge','type','VIRTUAL','options','VoiceChanSpy','includeAll','include','findAll','rows','keys','length','find','catch','create','user','get','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','userProfileId','autoAssociation'];(function(_0x455580,_0x5cd4dd){var _0x7aabc2=function(_0x10bf94){while(--_0x10bf94){_0x455580['push'](_0x455580['shift']());}};_0x7aabc2(++_0x5cd4dd);}(_0xb377,0x1b6));var _0x7b37=function(_0x44b06a,_0x34ae5d){_0x44b06a=_0x44b06a-0x0;var _0x25982e=_0xb377[_0x44b06a];return _0x25982e;};'use strict';var emlformat=require(_0x7b37('0x0'));var rimraf=require(_0x7b37('0x1'));var zipdir=require(_0x7b37('0x2'));var jsonpatch=require(_0x7b37('0x3'));var rp=require(_0x7b37('0x4'));var moment=require(_0x7b37('0x5'));var BPromise=require(_0x7b37('0x6'));var Mustache=require(_0x7b37('0x7'));var util=require(_0x7b37('0x8'));var path=require(_0x7b37('0x9'));var sox=require(_0x7b37('0xa'));var csv=require(_0x7b37('0xb'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x7b37('0xc'));var squel=require('squel');var crypto=require('crypto');var jsforce=require(_0x7b37('0xd'));var deskjs=require(_0x7b37('0xe'));var toCsv=require(_0x7b37('0xb'));var querystring=require(_0x7b37('0xf'));var Papa=require(_0x7b37('0x10'));var Redis=require(_0x7b37('0x11'));var authService=require(_0x7b37('0x12'));var qs=require(_0x7b37('0x13'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x7b37('0x14'));var logger=require(_0x7b37('0x15'))('api');var utils=require('../../config/utils');var config=require(_0x7b37('0x16'));var licenseUtil=require(_0x7b37('0x17'));var db=require(_0x7b37('0x18'))['db'];function respondWithStatusCode(_0x194f78,_0x1b8dc3){_0x1b8dc3=_0x1b8dc3||0xcc;return function(_0x1edd5a){if(_0x1edd5a){return _0x194f78[_0x7b37('0x19')](_0x1b8dc3);}return _0x194f78[_0x7b37('0x1a')](_0x1b8dc3)[_0x7b37('0x1b')]();};}function respondWithResult(_0x33a337,_0x1a381a){_0x1a381a=_0x1a381a||0xc8;return function(_0x19ce67){if(_0x19ce67){return _0x33a337[_0x7b37('0x1a')](_0x1a381a)[_0x7b37('0x1c')](_0x19ce67);}};}function respondWithFilteredResult(_0xbfdc78,_0x17e9e4){return function(_0x456318){if(_0x456318){var _0x4ee80c=typeof _0x17e9e4['offset']===_0x7b37('0x1d')&&typeof _0x17e9e4['limit']==='undefined';var _0x32ee3e=_0x456318[_0x7b37('0x1e')];var _0x1447aa=_0x4ee80c?0x0:_0x17e9e4['offset'];var _0x29a9dd=_0x4ee80c?_0x456318[_0x7b37('0x1e')]:_0x17e9e4[_0x7b37('0x1f')]+_0x17e9e4['limit'];var _0x58c906;if(_0x29a9dd>=_0x32ee3e){_0x29a9dd=_0x32ee3e;_0x58c906=0xc8;}else{_0x58c906=0xce;}_0xbfdc78[_0x7b37('0x1a')](_0x58c906);return _0xbfdc78[_0x7b37('0x20')](_0x7b37('0x21'),_0x1447aa+'-'+_0x29a9dd+'/'+_0x32ee3e)[_0x7b37('0x1c')](_0x456318);}return null;};}function patchUpdates(_0x30bf66){return function(_0x51851a){try{jsonpatch['apply'](_0x51851a,_0x30bf66,!![]);}catch(_0x57f7f2){return BPromise[_0x7b37('0x22')](_0x57f7f2);}return _0x51851a[_0x7b37('0x23')]();};}function saveUpdates(_0x73370a,_0x200f17){return function(_0x184bdd){if(_0x184bdd){return _0x184bdd[_0x7b37('0x24')](_0x73370a)[_0x7b37('0x25')](function(_0x58bae2){return _0x58bae2;});}return null;};}function removeEntity(_0x4066ea,_0x2e60d9){return function(_0x550744){if(_0x550744){return _0x550744[_0x7b37('0x26')]()['then'](function(){var _0x1d9645=_0x550744['get']({'plain':!![]});var _0x5cf943=_0x7b37('0x27');return db[_0x7b37('0x28')][_0x7b37('0x26')]({'where':{'type':_0x5cf943,'resourceId':_0x1d9645['id']}})[_0x7b37('0x25')](function(){return _0x550744;});})[_0x7b37('0x25')](function(){_0x4066ea[_0x7b37('0x1a')](0xcc)['end']();});}};}function handleEntityNotFound(_0x20a3cc,_0xdc5403){return function(_0x8df2fc){if(!_0x8df2fc){_0x20a3cc[_0x7b37('0x19')](0x194);}return _0x8df2fc;};}function handleError(_0x3c405f,_0x1e0433){_0x1e0433=_0x1e0433||0x1f4;return function(_0x46810f){logger[_0x7b37('0x29')](_0x46810f[_0x7b37('0x2a')]);if(_0x46810f['name']){delete _0x46810f[_0x7b37('0x2b')];}_0x3c405f[_0x7b37('0x1a')](_0x1e0433)[_0x7b37('0x2c')](_0x46810f);};}exports[_0x7b37('0x2d')]=function(_0x50ac54,_0x2949c6){var _0x3282b9={},_0x9c4451={},_0x3e408c={'count':0x0,'rows':[]};var _0x212185=_[_0x7b37('0x2e')](db['VoiceChanSpy'][_0x7b37('0x2f')],function(_0x4a1def){return{'name':_0x4a1def[_0x7b37('0x30')],'type':_0x4a1def['type'][_0x7b37('0x31')]};});_0x9c4451[_0x7b37('0x32')]=_[_0x7b37('0x2e')](_0x212185,'name');_0x9c4451[_0x7b37('0x33')]=_['keys'](_0x50ac54['query']);_0x9c4451[_0x7b37('0x34')]=_[_0x7b37('0x35')](_0x9c4451['model'],_0x9c4451[_0x7b37('0x33')]);_0x3282b9[_0x7b37('0x36')]=_['intersection'](_0x9c4451['model'],qs[_0x7b37('0x37')](_0x50ac54['query']['fields']));_0x3282b9['attributes']=_0x3282b9[_0x7b37('0x36')]['length']?_0x3282b9['attributes']:_0x9c4451[_0x7b37('0x32')];if(!_0x50ac54[_0x7b37('0x33')][_0x7b37('0x38')](_0x7b37('0x39'))){_0x3282b9[_0x7b37('0x3a')]=qs[_0x7b37('0x3a')](_0x50ac54[_0x7b37('0x33')]['limit']);_0x3282b9[_0x7b37('0x1f')]=qs[_0x7b37('0x1f')](_0x50ac54[_0x7b37('0x33')][_0x7b37('0x1f')]);}_0x3282b9[_0x7b37('0x3b')]=qs[_0x7b37('0x3c')](_0x50ac54[_0x7b37('0x33')][_0x7b37('0x3c')]);_0x3282b9['where']=qs[_0x7b37('0x34')](_[_0x7b37('0x3d')](_0x50ac54['query'],_0x9c4451[_0x7b37('0x34')]),_0x212185);if(_0x50ac54[_0x7b37('0x33')][_0x7b37('0x3e')]){_0x3282b9[_0x7b37('0x3f')]=_[_0x7b37('0x40')](_0x3282b9[_0x7b37('0x3f')],{'$or':_[_0x7b37('0x2e')](_0x212185,function(_0x2fc886){if(_0x2fc886[_0x7b37('0x41')]!==_0x7b37('0x42')){var _0x494f67={};_0x494f67[_0x2fc886[_0x7b37('0x2b')]]={'$like':'%'+_0x50ac54[_0x7b37('0x33')][_0x7b37('0x3e')]+'%'};return _0x494f67;}})});}_0x3282b9=_[_0x7b37('0x40')]({},_0x3282b9,_0x50ac54[_0x7b37('0x43')]);var _0x3cf5bb={'where':_0x3282b9[_0x7b37('0x3f')]};return db[_0x7b37('0x44')]['count'](_0x3cf5bb)['then'](function(_0x26a060){_0x3e408c[_0x7b37('0x1e')]=_0x26a060;if(_0x50ac54[_0x7b37('0x33')][_0x7b37('0x45')]){_0x3282b9[_0x7b37('0x46')]=[{'all':!![]}];}return db[_0x7b37('0x44')][_0x7b37('0x47')](_0x3282b9);})[_0x7b37('0x25')](function(_0x46a960){_0x3e408c[_0x7b37('0x48')]=_0x46a960;return _0x3e408c;})[_0x7b37('0x25')](respondWithFilteredResult(_0x2949c6,_0x3282b9))['catch'](handleError(_0x2949c6,null));};exports['show']=function(_0x72d424,_0x4ffc92){var _0x4297d6={'raw':![],'where':{'id':_0x72d424['params']['id']}},_0x2e708e={};_0x2e708e['model']=_[_0x7b37('0x49')](db[_0x7b37('0x44')]['rawAttributes']);_0x2e708e[_0x7b37('0x33')]=_['keys'](_0x72d424[_0x7b37('0x33')]);_0x2e708e[_0x7b37('0x34')]=_[_0x7b37('0x35')](_0x2e708e[_0x7b37('0x32')],_0x2e708e[_0x7b37('0x33')]);_0x4297d6[_0x7b37('0x36')]=_[_0x7b37('0x35')](_0x2e708e[_0x7b37('0x32')],qs[_0x7b37('0x37')](_0x72d424[_0x7b37('0x33')][_0x7b37('0x37')]));_0x4297d6[_0x7b37('0x36')]=_0x4297d6[_0x7b37('0x36')][_0x7b37('0x4a')]?_0x4297d6['attributes']:_0x2e708e['model'];if(_0x72d424[_0x7b37('0x33')][_0x7b37('0x45')]){_0x4297d6[_0x7b37('0x46')]=[{'all':!![]}];}_0x4297d6=_['merge']({},_0x4297d6,_0x72d424['options']);return db[_0x7b37('0x44')][_0x7b37('0x4b')](_0x4297d6)[_0x7b37('0x25')](handleEntityNotFound(_0x4ffc92,null))[_0x7b37('0x25')](respondWithResult(_0x4ffc92,null))[_0x7b37('0x4c')](handleError(_0x4ffc92,null));};exports[_0x7b37('0x4d')]=function(_0x1e1e6d,_0x18b647){return db[_0x7b37('0x44')]['create'](_0x1e1e6d['body'],{})['then'](function(_0x2a50f5){var _0x5bbbca=_0x1e1e6d[_0x7b37('0x4e')][_0x7b37('0x4f')]({'plain':!![]});if(!_0x5bbbca)throw new Error(_0x7b37('0x50'));if(_0x5bbbca[_0x7b37('0x51')]==='user'){var _0x1e6480=_0x2a50f5[_0x7b37('0x4f')]({'plain':!![]});var _0x336b1b=_0x7b37('0x27');return db['UserProfileSection']['find']({'where':{'name':_0x336b1b,'userProfileId':_0x5bbbca[_0x7b37('0x52')]},'raw':!![]})[_0x7b37('0x25')](function(_0x4b9dab){if(_0x4b9dab&&_0x4b9dab[_0x7b37('0x53')]===0x0){return db[_0x7b37('0x28')]['create']({'name':_0x1e6480[_0x7b37('0x2b')],'resourceId':_0x1e6480['id'],'type':_0x4b9dab[_0x7b37('0x2b')],'sectionId':_0x4b9dab['id']},{})[_0x7b37('0x25')](function(){return _0x2a50f5;});}else{return _0x2a50f5;}})['catch'](function(_0x495af9){logger[_0x7b37('0x29')](_0x7b37('0x54'),_0x495af9);throw _0x495af9;});}return _0x2a50f5;})[_0x7b37('0x25')](respondWithResult(_0x18b647,0xc9))['catch'](handleError(_0x18b647,null));};exports[_0x7b37('0x24')]=function(_0x3483b6,_0x2f90b1){if(_0x3483b6[_0x7b37('0x55')]['id']){delete _0x3483b6[_0x7b37('0x55')]['id'];}return db['VoiceChanSpy']['find']({'where':{'id':_0x3483b6[_0x7b37('0x56')]['id']}})[_0x7b37('0x25')](handleEntityNotFound(_0x2f90b1,null))[_0x7b37('0x25')](saveUpdates(_0x3483b6['body'],null))[_0x7b37('0x25')](respondWithResult(_0x2f90b1,null))['catch'](handleError(_0x2f90b1,null));};exports[_0x7b37('0x26')]=function(_0xff2e8b,_0x26c1a0){return db[_0x7b37('0x44')][_0x7b37('0x4b')]({'where':{'id':_0xff2e8b['params']['id']}})[_0x7b37('0x25')](handleEntityNotFound(_0x26c1a0,null))[_0x7b37('0x25')](removeEntity(_0x26c1a0,null))[_0x7b37('0x4c')](handleError(_0x26c1a0,null));};
\ No newline at end of file
index 1347961..5bdd170 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0x6a94=['bulkCreate','VoiceExtension','destroy','lodash','util','bluebird','./voiceChanSpy.attributes','context','from-sip','format','%s%s','prefix','system','push','merge','Set','chanspy','record','MixMonitor','${UNIQUEID}.%s,a','recordingFormat','auth','Authenticate','password','ChanSpy','options','join','StopMixMonitor','length','concat','internal','name','findAll','agent','catch','exports','models','voice_chanspy','then'];(function(_0x122ecf,_0x22a4ba){var _0x4195ac=function(_0x2d0b2f){while(--_0x2d0b2f){_0x122ecf['push'](_0x122ecf['shift']());}};_0x4195ac(++_0x22a4ba);}(_0x6a94,0xed));var _0x46a9=function(_0x296984,_0x262665){_0x296984=_0x296984-0x0;var _0x262482=_0x6a94[_0x296984];return _0x262482;};'use strict';var _=require(_0x46a9('0x0'));var util=require(_0x46a9('0x1'));var BPromise=require(_0x46a9('0x2'));var attributes=require(_0x46a9('0x3'));var getUserApplications=function(_0x4ecd6c,_0x216cc1,_0x1d13d1){var _0x2bce27=0x1;var _0x74bb0d=[];var _0x32fa59={'context':_0x216cc1[_0x46a9('0x4')]||_0x46a9('0x5'),'exten':util[_0x46a9('0x6')](_0x46a9('0x7'),_0x4ecd6c[_0x46a9('0x8')],_0x1d13d1),'type':_0x46a9('0x9'),'isApp':![],'ChanSpyId':_0x4ecd6c['id'],'UserId':_0x216cc1['id']};_0x74bb0d[_0x46a9('0xa')](_[_0x46a9('0xb')]({'app':_0x46a9('0xc'),'appdata':util[_0x46a9('0x6')]('CDR(type)=%s',_0x46a9('0xd')),'priority':_0x2bce27++},_0x32fa59));if(_0x4ecd6c[_0x46a9('0xe')]){_0x74bb0d['push'](_[_0x46a9('0xb')]({'app':_0x46a9('0xf'),'appdata':util[_0x46a9('0x6')](_0x46a9('0x10'),_0x4ecd6c[_0x46a9('0x11')]),'priority':_0x2bce27++},_0x32fa59));}if(_0x4ecd6c[_0x46a9('0x12')]){_0x74bb0d[_0x46a9('0xa')](_[_0x46a9('0xb')]({'app':_0x46a9('0x13'),'appdata':_0x4ecd6c[_0x46a9('0x14')],'priority':_0x2bce27++},_0x32fa59));}_0x74bb0d[_0x46a9('0xa')](_[_0x46a9('0xb')]({'app':_0x46a9('0x15'),'appdata':util[_0x46a9('0x6')]('SIP/%s,%s',_0x216cc1['name'],_0x4ecd6c['options']?_0x4ecd6c[_0x46a9('0x16')][_0x46a9('0x17')](''):''),'priority':_0x2bce27++},_0x32fa59));if(_0x4ecd6c[_0x46a9('0xe')]){_0x74bb0d['push'](_[_0x46a9('0xb')]({'app':_0x46a9('0x18'),'priority':_0x2bce27++},_0x32fa59));}return _0x74bb0d;};var getChanSpyApplications=function(_0x4cc4c6,_0x56a9df){var _0x17e942=[];for(var _0x15c490=0x0,_0x5c31a2=0x1;_0x15c490<_0x56a9df[_0x46a9('0x19')];_0x15c490++,_0x5c31a2=0x1){_0x17e942=_0x17e942[_0x46a9('0x1a')](getUserApplications(_0x4cc4c6,_0x56a9df[_0x15c490],_0x56a9df[_0x15c490][_0x46a9('0x1b')]));if(_0x56a9df[_0x15c490][_0x46a9('0x1b')]!=_0x56a9df[_0x15c490][_0x46a9('0x1c')]){_0x17e942=_0x17e942[_0x46a9('0x1a')](getUserApplications(_0x4cc4c6,_0x56a9df[_0x15c490],_0x56a9df[_0x15c490][_0x46a9('0x1c')]));}}return _0x17e942;};var getChanSpyPromise=function(_0x3f15be,_0x84c5a0){return new BPromise(function(_0x5ca716,_0x391914){return _0x3f15be['User'][_0x46a9('0x1d')]({'attributes':['id',_0x46a9('0x1c'),'internal'],'where':{'role':_0x46a9('0x1e'),'chanspy':!![]},'raw':!![]})['then'](function(_0x5337c2){if(_0x5337c2){return _0x5ca716(getChanSpyApplications(_0x84c5a0,_0x5337c2));}return _0x5ca716([]);})[_0x46a9('0x1f')](function(_0x2b1da4){_0x391914(_0x2b1da4);});});};module[_0x46a9('0x20')]=function(_0x3bbd2a,_0x6eae2d){var _0xb5ee1d=_0x3bbd2a[_0x46a9('0x21')];return _0x3bbd2a['define']('VoiceChanSpy',attributes,{'tableName':_0x46a9('0x22'),'paranoid':![],'indexes':[],'timestamps':!![],'hooks':{'afterCreate':function(_0x3145f6,_0x57ca1c,_0x180ae5){return getChanSpyPromise(_0xb5ee1d,_0x3145f6)[_0x46a9('0x23')](function(_0x581c62){if(_0x581c62&&_0x581c62[_0x46a9('0x19')]){return _0xb5ee1d['VoiceExtension'][_0x46a9('0x24')](_0x581c62);}})[_0x46a9('0x23')](function(){_0x180ae5();})[_0x46a9('0x1f')](function(_0x5d26b0){_0x180ae5(_0x5d26b0);});},'afterUpdate':function(_0xad236c,_0x1fde34,_0x21e5c7){return _0xb5ee1d[_0x46a9('0x25')][_0x46a9('0x26')]({'where':{'ChanSpyId':_0xad236c['id']}})['then'](function(){return getChanSpyPromise(_0xb5ee1d,_0xad236c);})[_0x46a9('0x23')](function(_0x5bda7b){if(_0x5bda7b&&_0x5bda7b[_0x46a9('0x19')]){return _0xb5ee1d[_0x46a9('0x25')][_0x46a9('0x24')](_0x5bda7b);}})['then'](function(){_0x21e5c7();})[_0x46a9('0x1f')](function(_0x35f86c){_0x21e5c7(_0x35f86c);});},'afterDestroy':function(_0x314429,_0x52a5d9,_0x354a0b){return _0xb5ee1d[_0x46a9('0x25')][_0x46a9('0x26')]({'where':{'ChanSpyId':_0x314429['id']}})['then'](function(){_0x354a0b();})[_0x46a9('0x1f')](function(_0x2a84f1){_0x354a0b(_0x2a84f1);});}}});};
\ No newline at end of file
index 502fe01..2405188 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0x54f3=['moment','bluebird','randomstring','ioredis','../../config/logger','rpc','../../config/environment','http','then','info','VoiceChanSpy,\x20%s,\x20%s','VoiceChanSpy,\x20%s,\x20%s,\x20%s','request\x20sent','error','message','catch','util'];(function(_0x58a5b0,_0x333896){var _0x3357af=function(_0x5069d1){while(--_0x5069d1){_0x58a5b0['push'](_0x58a5b0['shift']());}};_0x3357af(++_0x333896);}(_0x54f3,0x120));var _0x354f=function(_0x57b54c,_0x54ce0d){_0x57b54c=_0x57b54c-0x0;var _0x59cc19=_0x54f3[_0x57b54c];return _0x59cc19;};'use strict';var _=require('lodash');var util=require(_0x354f('0x0'));var moment=require(_0x354f('0x1'));var BPromise=require(_0x354f('0x2'));var rs=require(_0x354f('0x3'));var fs=require('fs');var Redis=require(_0x354f('0x4'));var db=require('../../mysqldb')['db'];var utils=require('../../config/utils');var logger=require(_0x354f('0x5'))(_0x354f('0x6'));var config=require(_0x354f('0x7'));var jayson=require('jayson/promise');var client=jayson['client'][_0x354f('0x8')]({'port':0x232a});function respondWithRpcPromise(_0x51cd16,_0x1da503,_0x4311ad){return new BPromise(function(_0x2f111a,_0x173e1d){return client['request'](_0x51cd16,_0x4311ad)[_0x354f('0x9')](function(_0x5d1e5d){logger[_0x354f('0xa')](_0x354f('0xb'),_0x1da503,'request\x20sent');logger['debug'](_0x354f('0xc'),_0x1da503,_0x354f('0xd'),JSON['stringify'](_0x5d1e5d));if(_0x5d1e5d[_0x354f('0xe')]){if(_0x5d1e5d[_0x354f('0xe')]['code']===0x1f4){logger[_0x354f('0xe')](_0x354f('0xb'),_0x1da503,_0x5d1e5d[_0x354f('0xe')][_0x354f('0xf')]);return _0x173e1d(_0x5d1e5d[_0x354f('0xe')][_0x354f('0xf')]);}logger[_0x354f('0xe')]('VoiceChanSpy,\x20%s,\x20%s',_0x1da503,_0x5d1e5d[_0x354f('0xe')][_0x354f('0xf')]);return _0x2f111a(_0x5d1e5d[_0x354f('0xe')]['message']);}else{logger[_0x354f('0xa')](_0x354f('0xb'),_0x1da503,_0x354f('0xd'));_0x2f111a(_0x5d1e5d['result']['message']);}})[_0x354f('0x10')](function(_0x1d7627){logger[_0x354f('0xe')](_0x354f('0xb'),_0x1da503,_0x1d7627);_0x173e1d(_0x1d7627);});});}
\ No newline at end of file
index f771e17..a32f4de 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0xd9ab=['destroy','exports','multer','util','path','connect-timeout','express','Router','../../components/auth/service','../../components/interaction/service','../../config/environment','./voiceContext.controller','get','isAuthenticated','index','/:id','show','post','put','update'];(function(_0x4fa8a3,_0x1b9754){var _0x47303c=function(_0x15329d){while(--_0x15329d){_0x4fa8a3['push'](_0x4fa8a3['shift']());}};_0x47303c(++_0x1b9754);}(_0xd9ab,0x1ce));var _0xbd9a=function(_0x36eaaa,_0x326732){_0x36eaaa=_0x36eaaa-0x0;var _0x461349=_0xd9ab[_0x36eaaa];return _0x461349;};'use strict';var multer=require(_0xbd9a('0x0'));var util=require(_0xbd9a('0x1'));var path=require(_0xbd9a('0x2'));var timeout=require(_0xbd9a('0x3'));var express=require(_0xbd9a('0x4'));var router=express[_0xbd9a('0x5')]();var fs_extra=require('fs-extra');var auth=require(_0xbd9a('0x6'));var interaction=require(_0xbd9a('0x7'));var config=require(_0xbd9a('0x8'));var controller=require(_0xbd9a('0x9'));router[_0xbd9a('0xa')]('/',auth[_0xbd9a('0xb')](),controller[_0xbd9a('0xc')]);router[_0xbd9a('0xa')](_0xbd9a('0xd'),auth[_0xbd9a('0xb')](),controller[_0xbd9a('0xe')]);router[_0xbd9a('0xf')]('/',auth[_0xbd9a('0xb')](),controller['create']);router[_0xbd9a('0x10')](_0xbd9a('0xd'),auth['isAuthenticated'](),controller[_0xbd9a('0x11')]);router['delete']('/:id',auth[_0xbd9a('0xb')](),controller[_0xbd9a('0x12')]);module[_0xbd9a('0x13')]=router;
\ No newline at end of file
index 577d930..c5df0eb 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0xea0a=['BOOLEAN','sequelize','name','STRING'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0xea0a,0x99));var _0xaea0=function(_0xd6a5a5,_0x18b8a1){_0xd6a5a5=_0xd6a5a5-0x0;var _0x2522e7=_0xea0a[_0xd6a5a5];return _0x2522e7;};'use strict';var Sequelize=require(_0xaea0('0x0'));module['exports']={'name':{'type':Sequelize['STRING'],'unique':_0xaea0('0x1')},'description':{'type':Sequelize[_0xaea0('0x2')],'allowNull':!![]},'defaultEntry':{'type':Sequelize[_0xaea0('0x3')],'defaultValue':0x0}};
\ No newline at end of file
index 92a7d7b..6503e0b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0x91dd=['readFileSync','join','root','server/files/templates/context.ejs','utf8','render','writeFileSync','/etc/asterisk/extensions_xcally_contexts.conf','chan_sip.so','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','userProfileId','autoAssociation','create','find','params','Reload','eml-format','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','lodash','crypto','jsforce','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/utils','../../config/license/util','../../mysqldb','jayson/promise','client','http','request','then','info','VoiceContext,\x20%s,\x20%s','request\x20sent','VoiceContext,\x20%s,\x20%s,\x20%s','error','code','message','result','catch','sendStatus','status','end','json','limit','undefined','count','offset','set','Content-Range','apply','update','get','Contexts','UserProfileResource','destroy','stack','index','VoiceContext','rawAttributes','fieldName','key','model','map','name','query','keys','filters','intersection','attributes','fields','length','hasOwnProperty','sort','where','filter','merge','type','VIRTUAL','options','includeAll','include','findAll','rows','body'];(function(_0xf06330,_0x487a3a){var _0x2e24b0=function(_0x4df5ba){while(--_0x4df5ba){_0xf06330['push'](_0xf06330['shift']());}};_0x2e24b0(++_0x487a3a);}(_0x91dd,0x73));var _0xd91d=function(_0x3d5f20,_0x4a097c){_0x3d5f20=_0x3d5f20-0x0;var _0x1f5566=_0x91dd[_0x3d5f20];return _0x1f5566;};'use strict';var emlformat=require(_0xd91d('0x0'));var rimraf=require('rimraf');var zipdir=require('zip-dir');var jsonpatch=require('fast-json-patch');var rp=require(_0xd91d('0x1'));var moment=require(_0xd91d('0x2'));var BPromise=require(_0xd91d('0x3'));var Mustache=require(_0xd91d('0x4'));var util=require(_0xd91d('0x5'));var path=require(_0xd91d('0x6'));var sox=require(_0xd91d('0x7'));var csv=require(_0xd91d('0x8'));var ejs=require(_0xd91d('0x9'));var fs=require('fs');var fs_extra=require(_0xd91d('0xa'));var _=require(_0xd91d('0xb'));var squel=require('squel');var crypto=require(_0xd91d('0xc'));var jsforce=require(_0xd91d('0xd'));var deskjs=require('desk.js');var toCsv=require(_0xd91d('0x8'));var querystring=require(_0xd91d('0xe'));var Papa=require(_0xd91d('0xf'));var Redis=require(_0xd91d('0x10'));var authService=require(_0xd91d('0x11'));var qs=require(_0xd91d('0x12'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require('../../config/license/hardware');var logger=require('../../config/logger')('api');var utils=require(_0xd91d('0x13'));var config=require('../../config/environment');var licenseUtil=require(_0xd91d('0x14'));var db=require(_0xd91d('0x15'))['db'];var jayson=require(_0xd91d('0x16'));var client=jayson[_0xd91d('0x17')][_0xd91d('0x18')]({'port':0x232a});function respondWithRpcPromise(_0x3c968d,_0x3c9038,_0x54bb79,_0x16b150){return new BPromise(function(_0x1989b2,_0x5192e0){var _0x45bfd7=_0x16b150||client;return _0x45bfd7[_0xd91d('0x19')](_0x3c968d,_0x54bb79)[_0xd91d('0x1a')](function(_0x4ef730){logger[_0xd91d('0x1b')](_0xd91d('0x1c'),_0x3c9038,_0xd91d('0x1d'));logger['debug'](_0xd91d('0x1e'),_0x3c9038,_0xd91d('0x1d'),JSON['stringify'](_0x4ef730));if(_0x4ef730[_0xd91d('0x1f')]){if(_0x4ef730[_0xd91d('0x1f')][_0xd91d('0x20')]===0x1f4){logger[_0xd91d('0x1f')](_0xd91d('0x1c'),_0x3c9038,_0x4ef730[_0xd91d('0x1f')][_0xd91d('0x21')]);return _0x5192e0(_0x4ef730[_0xd91d('0x1f')][_0xd91d('0x21')]);}logger[_0xd91d('0x1f')]('VoiceContext,\x20%s,\x20%s',_0x3c9038,_0x4ef730['error']['message']);return _0x1989b2(_0x4ef730[_0xd91d('0x1f')][_0xd91d('0x21')]);}else{logger['info']('VoiceContext,\x20%s,\x20%s',_0x3c9038,_0xd91d('0x1d'));_0x1989b2(_0x4ef730[_0xd91d('0x22')][_0xd91d('0x21')]);}})[_0xd91d('0x23')](function(_0x25b1f0){logger[_0xd91d('0x1f')](_0xd91d('0x1c'),_0x3c9038,_0x25b1f0);_0x5192e0(_0x25b1f0);});});}function respondWithStatusCode(_0xf002f6,_0x52c720){_0x52c720=_0x52c720||0xcc;return function(_0x6b3e4b){if(_0x6b3e4b){return _0xf002f6[_0xd91d('0x24')](_0x52c720);}return _0xf002f6[_0xd91d('0x25')](_0x52c720)[_0xd91d('0x26')]();};}function respondWithResult(_0x542128,_0x14bf3f){_0x14bf3f=_0x14bf3f||0xc8;return function(_0x10e108){if(_0x10e108){return _0x542128[_0xd91d('0x25')](_0x14bf3f)[_0xd91d('0x27')](_0x10e108);}};}function respondWithFilteredResult(_0x2e6446,_0x4baa3b){return function(_0x425da3){if(_0x425da3){var _0x574f3c=typeof _0x4baa3b['offset']==='undefined'&&typeof _0x4baa3b[_0xd91d('0x28')]===_0xd91d('0x29');var _0x608cec=_0x425da3[_0xd91d('0x2a')];var _0x4cd39c=_0x574f3c?0x0:_0x4baa3b['offset'];var _0x2d279e=_0x574f3c?_0x425da3['count']:_0x4baa3b[_0xd91d('0x2b')]+_0x4baa3b[_0xd91d('0x28')];var _0x9979b;if(_0x2d279e>=_0x608cec){_0x2d279e=_0x608cec;_0x9979b=0xc8;}else{_0x9979b=0xce;}_0x2e6446[_0xd91d('0x25')](_0x9979b);return _0x2e6446[_0xd91d('0x2c')](_0xd91d('0x2d'),_0x4cd39c+'-'+_0x2d279e+'/'+_0x608cec)[_0xd91d('0x27')](_0x425da3);}return null;};}function patchUpdates(_0x48aea6){return function(_0x4b19be){try{jsonpatch[_0xd91d('0x2e')](_0x4b19be,_0x48aea6,!![]);}catch(_0x18f39f){return BPromise['reject'](_0x18f39f);}return _0x4b19be['save']();};}function saveUpdates(_0x1ed6ab,_0x32cc34){return function(_0x1d42b8){if(_0x1d42b8){return _0x1d42b8[_0xd91d('0x2f')](_0x1ed6ab)[_0xd91d('0x1a')](function(_0x31c241){return _0x31c241;});}return null;};}function removeEntity(_0x12e6cf,_0x5c7592){return function(_0x27afe5){if(_0x27afe5){return _0x27afe5['destroy']()['then'](function(){var _0x1f45f1=_0x27afe5[_0xd91d('0x30')]({'plain':!![]});var _0x1f6c21=_0xd91d('0x31');return db[_0xd91d('0x32')][_0xd91d('0x33')]({'where':{'type':_0x1f6c21,'resourceId':_0x1f45f1['id']}})[_0xd91d('0x1a')](function(){return _0x27afe5;});})[_0xd91d('0x1a')](function(){_0x12e6cf[_0xd91d('0x25')](0xcc)[_0xd91d('0x26')]();});}};}function handleEntityNotFound(_0x1f28c3,_0x428cf4){return function(_0x3029fa){if(!_0x3029fa){_0x1f28c3[_0xd91d('0x24')](0x194);}return _0x3029fa;};}function handleError(_0x29fa56,_0x225cbc){_0x225cbc=_0x225cbc||0x1f4;return function(_0x4f7da2){logger[_0xd91d('0x1f')](_0x4f7da2[_0xd91d('0x34')]);if(_0x4f7da2['name']){delete _0x4f7da2['name'];}_0x29fa56[_0xd91d('0x25')](_0x225cbc)['send'](_0x4f7da2);};}exports[_0xd91d('0x35')]=function(_0x4d89a1,_0x1d9973){var _0x50fdef={},_0x114aed={},_0x3f49dd={'count':0x0,'rows':[]};var _0x3ee400=_['map'](db[_0xd91d('0x36')][_0xd91d('0x37')],function(_0x392f58){return{'name':_0x392f58[_0xd91d('0x38')],'type':_0x392f58['type'][_0xd91d('0x39')]};});_0x114aed[_0xd91d('0x3a')]=_[_0xd91d('0x3b')](_0x3ee400,_0xd91d('0x3c'));_0x114aed[_0xd91d('0x3d')]=_[_0xd91d('0x3e')](_0x4d89a1[_0xd91d('0x3d')]);_0x114aed[_0xd91d('0x3f')]=_[_0xd91d('0x40')](_0x114aed[_0xd91d('0x3a')],_0x114aed[_0xd91d('0x3d')]);_0x50fdef[_0xd91d('0x41')]=_[_0xd91d('0x40')](_0x114aed[_0xd91d('0x3a')],qs[_0xd91d('0x42')](_0x4d89a1[_0xd91d('0x3d')][_0xd91d('0x42')]));_0x50fdef[_0xd91d('0x41')]=_0x50fdef[_0xd91d('0x41')][_0xd91d('0x43')]?_0x50fdef[_0xd91d('0x41')]:_0x114aed[_0xd91d('0x3a')];if(!_0x4d89a1['query'][_0xd91d('0x44')]('nolimit')){_0x50fdef['limit']=qs[_0xd91d('0x28')](_0x4d89a1[_0xd91d('0x3d')]['limit']);_0x50fdef[_0xd91d('0x2b')]=qs['offset'](_0x4d89a1[_0xd91d('0x3d')][_0xd91d('0x2b')]);}_0x50fdef['order']=qs[_0xd91d('0x45')](_0x4d89a1[_0xd91d('0x3d')][_0xd91d('0x45')]);_0x50fdef[_0xd91d('0x46')]=qs[_0xd91d('0x3f')](_['pick'](_0x4d89a1['query'],_0x114aed[_0xd91d('0x3f')]),_0x3ee400);if(_0x4d89a1[_0xd91d('0x3d')][_0xd91d('0x47')]){_0x50fdef[_0xd91d('0x46')]=_[_0xd91d('0x48')](_0x50fdef[_0xd91d('0x46')],{'$or':_['map'](_0x3ee400,function(_0x2dd851){if(_0x2dd851[_0xd91d('0x49')]!==_0xd91d('0x4a')){var _0x456896={};_0x456896[_0x2dd851[_0xd91d('0x3c')]]={'$like':'%'+_0x4d89a1[_0xd91d('0x3d')]['filter']+'%'};return _0x456896;}})});}_0x50fdef=_[_0xd91d('0x48')]({},_0x50fdef,_0x4d89a1[_0xd91d('0x4b')]);var _0x321e83={'where':_0x50fdef[_0xd91d('0x46')]};return db['VoiceContext'][_0xd91d('0x2a')](_0x321e83)['then'](function(_0x526b9b){_0x3f49dd[_0xd91d('0x2a')]=_0x526b9b;if(_0x4d89a1[_0xd91d('0x3d')][_0xd91d('0x4c')]){_0x50fdef[_0xd91d('0x4d')]=[{'all':!![]}];}return db[_0xd91d('0x36')][_0xd91d('0x4e')](_0x50fdef);})['then'](function(_0xde5db4){_0x3f49dd[_0xd91d('0x4f')]=_0xde5db4;return _0x3f49dd;})['then'](respondWithFilteredResult(_0x1d9973,_0x50fdef))[_0xd91d('0x23')](handleError(_0x1d9973,null));};exports['show']=function(_0x142475,_0x1cb639){var _0xe78521={'raw':![],'where':{'id':_0x142475['params']['id']}},_0x4edd41={};_0x4edd41['model']=_[_0xd91d('0x3e')](db['VoiceContext'][_0xd91d('0x37')]);_0x4edd41[_0xd91d('0x3d')]=_['keys'](_0x142475[_0xd91d('0x3d')]);_0x4edd41[_0xd91d('0x3f')]=_[_0xd91d('0x40')](_0x4edd41['model'],_0x4edd41['query']);_0xe78521[_0xd91d('0x41')]=_['intersection'](_0x4edd41[_0xd91d('0x3a')],qs[_0xd91d('0x42')](_0x142475[_0xd91d('0x3d')]['fields']));_0xe78521['attributes']=_0xe78521[_0xd91d('0x41')][_0xd91d('0x43')]?_0xe78521[_0xd91d('0x41')]:_0x4edd41['model'];if(_0x142475[_0xd91d('0x3d')][_0xd91d('0x4c')]){_0xe78521[_0xd91d('0x4d')]=[{'all':!![]}];}_0xe78521=_[_0xd91d('0x48')]({},_0xe78521,_0x142475[_0xd91d('0x4b')]);return db[_0xd91d('0x36')]['find'](_0xe78521)[_0xd91d('0x1a')](handleEntityNotFound(_0x1cb639,null))[_0xd91d('0x1a')](respondWithResult(_0x1cb639,null))[_0xd91d('0x23')](handleError(_0x1cb639,null));};exports['create']=function(_0x57d138,_0x1f7b48,_0x240613){var _0xc2e38a;return db['VoiceContext']['create'](_0x57d138[_0xd91d('0x50')],{'raw':!![]})[_0xd91d('0x1a')](function(_0x1b8299){_0xc2e38a=_0x1b8299;return db[_0xd91d('0x36')][_0xd91d('0x4e')]({'raw':!![]});})[_0xd91d('0x1a')](function(_0x2f7237){var _0x3777a5=fs[_0xd91d('0x51')](path[_0xd91d('0x52')](config[_0xd91d('0x53')],_0xd91d('0x54')),_0xd91d('0x55'));var _0xd109c9=ejs[_0xd91d('0x56')](_0x3777a5,{'contexts':_0x2f7237||[]});fs[_0xd91d('0x57')](_0xd91d('0x58'),_0xd109c9);})[_0xd91d('0x1a')](function(){return respondWithRpcPromise('Reload','create',{'module':_0xd91d('0x59')});})['then'](function(){var _0x128e6d=_0x57d138[_0xd91d('0x5a')][_0xd91d('0x30')]({'plain':!![]});if(!_0x128e6d)throw new Error(_0xd91d('0x5b'));if(_0x128e6d['role']===_0xd91d('0x5a')){var _0x49065d=_0xc2e38a['get']({'plain':!![]});return db['UserProfileSection']['find']({'where':{'name':_0xd91d('0x31'),'userProfileId':_0x128e6d[_0xd91d('0x5c')]},'raw':!![]})[_0xd91d('0x1a')](function(_0x6c7bd4){if(_0x6c7bd4&&_0x6c7bd4[_0xd91d('0x5d')]===0x0){return db['UserProfileResource'][_0xd91d('0x5e')]({'name':_0x49065d[_0xd91d('0x3c')],'resourceId':_0x49065d['id'],'type':_0x6c7bd4['name'],'sectionId':_0x6c7bd4['id']},{})[_0xd91d('0x1a')](function(){return _0xc2e38a;});}else{return _0xc2e38a;}})[_0xd91d('0x23')](function(_0x123da7){logger['error']('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x123da7);throw _0x123da7;});}return _0xc2e38a;})[_0xd91d('0x1a')](respondWithResult(_0x1f7b48,0xc9))['catch'](handleError(_0x1f7b48,null));};exports[_0xd91d('0x2f')]=function(_0x456d70,_0x1e795b,_0x4b7446){var _0x5894ef;return db[_0xd91d('0x36')][_0xd91d('0x5f')]({'where':{'id':_0x456d70[_0xd91d('0x60')]['id']}})['then'](handleEntityNotFound(_0x1e795b,null))[_0xd91d('0x1a')](saveUpdates(_0x456d70[_0xd91d('0x50')],null))[_0xd91d('0x1a')](function(_0x59474a){if(_0x59474a){_0x5894ef=_0x59474a;return db[_0xd91d('0x36')][_0xd91d('0x4e')]({'raw':!![]});}})['then'](function(_0x3887fa){var _0x375a35=fs[_0xd91d('0x51')](path[_0xd91d('0x52')](config[_0xd91d('0x53')],_0xd91d('0x54')),_0xd91d('0x55'));var _0x1e716c=ejs['render'](_0x375a35,{'contexts':_0x3887fa||[]});fs['writeFileSync']('/etc/asterisk/extensions_xcally_contexts.conf',_0x1e716c);})[_0xd91d('0x1a')](function(){return respondWithRpcPromise(_0xd91d('0x61'),_0xd91d('0x2f'),{'module':'chan_sip.so'});})[_0xd91d('0x1a')](function(){return _0x5894ef;})[_0xd91d('0x1a')](respondWithResult(_0x1e795b,null))[_0xd91d('0x23')](handleError(_0x1e795b,null));};exports[_0xd91d('0x33')]=function(_0x52b19b,_0x33b377,_0x28347a){var _0x41449e;return db['VoiceContext'][_0xd91d('0x5f')]({'where':{'id':_0x52b19b[_0xd91d('0x60')]['id']}})[_0xd91d('0x1a')](handleEntityNotFound(_0x33b377,null))[_0xd91d('0x1a')](removeEntity(_0x33b377,null))['then'](function(){return db[_0xd91d('0x36')][_0xd91d('0x4e')]({'raw':!![]});})[_0xd91d('0x1a')](function(_0x302a0a){var _0x4530b7=fs[_0xd91d('0x51')](path['join'](config['root'],_0xd91d('0x54')),'utf8');var _0x144f27=ejs[_0xd91d('0x56')](_0x4530b7,{'contexts':_0x302a0a});fs[_0xd91d('0x57')](_0xd91d('0x58'),_0x144f27);return respondWithRpcPromise(_0xd91d('0x61'),_0xd91d('0x33'),{'module':'chan_sip.so'});})[_0xd91d('0x23')](handleError(_0x33b377,null));};
\ No newline at end of file
index 5c6bc9d..1c9e1f7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0x6c48=['VoiceContext','voice_contexts','lodash','../../config/logger','api','moment','bluebird','path','rimraf','../../config/environment','./voiceContext.attributes','exports','define'];(function(_0xd1d19a,_0x1933f0){var _0x52a79d=function(_0x5199e2){while(--_0x5199e2){_0xd1d19a['push'](_0xd1d19a['shift']());}};_0x52a79d(++_0x1933f0);}(_0x6c48,0xb8));var _0x86c4=function(_0x4bbf78,_0x102916){_0x4bbf78=_0x4bbf78-0x0;var _0x354286=_0x6c48[_0x4bbf78];return _0x354286;};'use strict';var _=require(_0x86c4('0x0'));var util=require('util');var logger=require(_0x86c4('0x1'))(_0x86c4('0x2'));var moment=require(_0x86c4('0x3'));var BPromise=require(_0x86c4('0x4'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x86c4('0x5'));var rimraf=require(_0x86c4('0x6'));var config=require(_0x86c4('0x7'));var attributes=require(_0x86c4('0x8'));module[_0x86c4('0x9')]=function(_0x4bb30c,_0x96e56a){return _0x4bb30c[_0x86c4('0xa')](_0x86c4('0xb'),attributes,{'tableName':_0x86c4('0xc'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index d25f327..0bb1879 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0x93ed=['result','catch','lodash','util','moment','bluebird','randomstring','../../mysqldb','../../config/logger','rpc','jayson/promise','client','http','request','then','request\x20sent','VoiceContext,\x20%s,\x20%s,\x20%s','stringify','error','VoiceContext,\x20%s,\x20%s','message'];(function(_0x43b06b,_0x1929c7){var _0x2c555b=function(_0x30fa8c){while(--_0x30fa8c){_0x43b06b['push'](_0x43b06b['shift']());}};_0x2c555b(++_0x1929c7);}(_0x93ed,0xfe));var _0xd93e=function(_0x32f8a2,_0x49c502){_0x32f8a2=_0x32f8a2-0x0;var _0x258cca=_0x93ed[_0x32f8a2];return _0x258cca;};'use strict';var _=require(_0xd93e('0x0'));var util=require(_0xd93e('0x1'));var moment=require(_0xd93e('0x2'));var BPromise=require(_0xd93e('0x3'));var rs=require(_0xd93e('0x4'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0xd93e('0x5'))['db'];var utils=require('../../config/utils');var logger=require(_0xd93e('0x6'))(_0xd93e('0x7'));var config=require('../../config/environment');var jayson=require(_0xd93e('0x8'));var client=jayson[_0xd93e('0x9')][_0xd93e('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x478305,_0xd74ab3,_0x4998bf){return new BPromise(function(_0x4ef1a1,_0x466fca){return client[_0xd93e('0xb')](_0x478305,_0x4998bf)[_0xd93e('0xc')](function(_0x14fc46){logger['info']('VoiceContext,\x20%s,\x20%s',_0xd74ab3,_0xd93e('0xd'));logger['debug'](_0xd93e('0xe'),_0xd74ab3,_0xd93e('0xd'),JSON[_0xd93e('0xf')](_0x14fc46));if(_0x14fc46[_0xd93e('0x10')]){if(_0x14fc46[_0xd93e('0x10')]['code']===0x1f4){logger[_0xd93e('0x10')](_0xd93e('0x11'),_0xd74ab3,_0x14fc46[_0xd93e('0x10')][_0xd93e('0x12')]);return _0x466fca(_0x14fc46[_0xd93e('0x10')]['message']);}logger['error']('VoiceContext,\x20%s,\x20%s',_0xd74ab3,_0x14fc46['error'][_0xd93e('0x12')]);return _0x4ef1a1(_0x14fc46[_0xd93e('0x10')][_0xd93e('0x12')]);}else{logger['info'](_0xd93e('0x11'),_0xd74ab3,'request\x20sent');_0x4ef1a1(_0x14fc46[_0xd93e('0x13')][_0xd93e('0x12')]);}})[_0xd93e('0x14')](function(_0x1ba021){logger[_0xd93e('0x10')](_0xd93e('0x11'),_0xd74ab3,_0x1ba021);_0x466fca(_0x1ba021);});});}
\ No newline at end of file
index 49fcf1e..c04e3d4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0xec4d=['multer','util','path','connect-timeout','express','Router','fs-extra','../../components/interaction/service','../../config/environment','./voiceDialReport.controller','/describe','isAuthenticated','get','/:id','show','post','create','delete','destroy'];(function(_0x383780,_0x350695){var _0x31cce9=function(_0x2d970d){while(--_0x2d970d){_0x383780['push'](_0x383780['shift']());}};_0x31cce9(++_0x350695);}(_0xec4d,0x98));var _0xdec4=function(_0x470f63,_0x48d80b){_0x470f63=_0x470f63-0x0;var _0x4f09e2=_0xec4d[_0x470f63];return _0x4f09e2;};'use strict';var multer=require(_0xdec4('0x0'));var util=require(_0xdec4('0x1'));var path=require(_0xdec4('0x2'));var timeout=require(_0xdec4('0x3'));var express=require(_0xdec4('0x4'));var router=express[_0xdec4('0x5')]();var fs_extra=require(_0xdec4('0x6'));var auth=require('../../components/auth/service');var interaction=require(_0xdec4('0x7'));var config=require(_0xdec4('0x8'));var controller=require(_0xdec4('0x9'));router['get']('/',auth['isAuthenticated'](),controller['index']);router['get'](_0xdec4('0xa'),auth[_0xdec4('0xb')](),controller['describe']);router[_0xdec4('0xc')](_0xdec4('0xd'),auth[_0xdec4('0xb')](),controller[_0xdec4('0xe')]);router[_0xdec4('0xf')]('/',auth[_0xdec4('0xb')](),controller[_0xdec4('0x10')]);router['put'](_0xdec4('0xd'),auth['isAuthenticated'](),controller['update']);router[_0xdec4('0x11')](_0xdec4('0xd'),auth[_0xdec4('0xb')](),controller[_0xdec4('0x12')]);module['exports']=router;
\ No newline at end of file
index 87ea64e..1f61c89 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0x55ca=['exports','STRING','INTEGER','DATE','sequelize'];(function(_0x1027f4,_0x474d45){var _0x53f658=function(_0x2d88d4){while(--_0x2d88d4){_0x1027f4['push'](_0x1027f4['shift']());}};_0x53f658(++_0x474d45);}(_0x55ca,0x126));var _0xa55c=function(_0x90dfad,_0x4d127a){_0x90dfad=_0x90dfad-0x0;var _0x8cdcc7=_0x55ca[_0x90dfad];return _0x8cdcc7;};'use strict';var Sequelize=require(_0xa55c('0x0'));module[_0xa55c('0x1')]={'privilege':{'type':Sequelize['STRING']},'channel':{'type':Sequelize['STRING']},'channelstate':{'type':Sequelize['INTEGER']},'channelstatedesc':{'type':Sequelize[_0xa55c('0x2')]},'calleridnum':{'type':Sequelize[_0xa55c('0x2')]},'calleridname':{'type':Sequelize['STRING']},'connectedlinenum':{'type':Sequelize[_0xa55c('0x2')]},'connectedlinename':{'type':Sequelize[_0xa55c('0x2')]},'language':{'type':Sequelize[_0xa55c('0x2')]},'accountcode':{'type':Sequelize[_0xa55c('0x2')]},'context':{'type':Sequelize[_0xa55c('0x2')]},'exten':{'type':Sequelize[_0xa55c('0x2')]},'priority':{'type':Sequelize[_0xa55c('0x3')]},'uniqueid':{'type':Sequelize['STRING']},'linkedid':{'type':Sequelize[_0xa55c('0x2')]},'destchannel':{'type':Sequelize[_0xa55c('0x2')]},'destchannelstate':{'type':Sequelize['INTEGER']},'destchannelstatedesc':{'type':Sequelize[_0xa55c('0x2')]},'destcalleridnum':{'type':Sequelize[_0xa55c('0x2')]},'destcalleridname':{'type':Sequelize['STRING']},'destconnectedlinenum':{'type':Sequelize['STRING']},'destconnectedlinename':{'type':Sequelize[_0xa55c('0x2')]},'destlanguage':{'type':Sequelize[_0xa55c('0x2')]},'destaccountcode':{'type':Sequelize[_0xa55c('0x2')]},'destcontext':{'type':Sequelize[_0xa55c('0x2')]},'destexten':{'type':Sequelize[_0xa55c('0x2')]},'destpriority':{'type':Sequelize[_0xa55c('0x3')]},'destuniqueid':{'type':Sequelize[_0xa55c('0x2')]},'destlinkedid':{'type':Sequelize[_0xa55c('0x2')]},'dialstring':{'type':Sequelize[_0xa55c('0x2')]},'dialstatus':{'type':Sequelize[_0xa55c('0x2')]},'starttime':{'type':Sequelize['DATE']},'answertime':{'type':Sequelize['DATE']},'endtime':{'type':Sequelize[_0xa55c('0x4')]},'lastevent':{'type':Sequelize['STRING'],'comment':'called,connect,complete'},'routeId':{'type':Sequelize['INTEGER']},'duration':{'type':Sequelize[_0xa55c('0x3')]},'holdtime':{'type':Sequelize[_0xa55c('0x3')]},'billableseconds':{'type':Sequelize[_0xa55c('0x3')]}};
\ No newline at end of file
index bdb6ef6..069b7ef 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0x6887=['filters','intersection','attributes','model','fields','length','hasOwnProperty','nolimit','order','sort','where','pick','filter','merge','type','VIRTUAL','options','includeAll','include','findAll','rows','show','params','find','catch','create','body','describe','eml-format','rimraf','request-promise','moment','bluebird','mustache','util','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','papaparse','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','end','status','json','limit','count','offset','set','Content-Range','apply','save','update','then','destroy','sendStatus','error','stack','name','send','index','map','VoiceDialReport','rawAttributes','fieldName','key','query','keys'];(function(_0x1d1779,_0x284147){var _0x2377e9=function(_0x299f6f){while(--_0x299f6f){_0x1d1779['push'](_0x1d1779['shift']());}};_0x2377e9(++_0x284147);}(_0x6887,0xba));var _0x7688=function(_0x2aea9e,_0x1f587f){_0x2aea9e=_0x2aea9e-0x0;var _0x430b92=_0x6887[_0x2aea9e];return _0x430b92;};'use strict';var emlformat=require(_0x7688('0x0'));var rimraf=require(_0x7688('0x1'));var zipdir=require('zip-dir');var jsonpatch=require('fast-json-patch');var rp=require(_0x7688('0x2'));var moment=require(_0x7688('0x3'));var BPromise=require(_0x7688('0x4'));var Mustache=require(_0x7688('0x5'));var util=require(_0x7688('0x6'));var path=require('path');var sox=require('sox');var csv=require(_0x7688('0x7'));var ejs=require(_0x7688('0x8'));var fs=require('fs');var fs_extra=require(_0x7688('0x9'));var _=require(_0x7688('0xa'));var squel=require(_0x7688('0xb'));var crypto=require(_0x7688('0xc'));var jsforce=require(_0x7688('0xd'));var deskjs=require(_0x7688('0xe'));var toCsv=require(_0x7688('0x7'));var querystring=require('querystring');var Papa=require(_0x7688('0xf'));var Redis=require('ioredis');var authService=require(_0x7688('0x10'));var qs=require(_0x7688('0x11'));var as=require(_0x7688('0x12'));var hardwareService=require(_0x7688('0x13'));var logger=require(_0x7688('0x14'))('api');var utils=require(_0x7688('0x15'));var config=require(_0x7688('0x16'));var licenseUtil=require(_0x7688('0x17'));var db=require(_0x7688('0x18'))['db'];function respondWithStatusCode(_0x5d5bed,_0x575e3f){_0x575e3f=_0x575e3f||0xcc;return function(_0x3ad886){if(_0x3ad886){return _0x5d5bed['sendStatus'](_0x575e3f);}return _0x5d5bed['status'](_0x575e3f)[_0x7688('0x19')]();};}function respondWithResult(_0x327f23,_0x5b01ae){_0x5b01ae=_0x5b01ae||0xc8;return function(_0x23037e){if(_0x23037e){return _0x327f23[_0x7688('0x1a')](_0x5b01ae)[_0x7688('0x1b')](_0x23037e);}};}function respondWithFilteredResult(_0x1ea3f5,_0x3dbaa3){return function(_0x473013){if(_0x473013){var _0x360421=typeof _0x3dbaa3['offset']==='undefined'&&typeof _0x3dbaa3[_0x7688('0x1c')]==='undefined';var _0x54ab77=_0x473013[_0x7688('0x1d')];var _0x181f67=_0x360421?0x0:_0x3dbaa3['offset'];var _0xc1058e=_0x360421?_0x473013['count']:_0x3dbaa3[_0x7688('0x1e')]+_0x3dbaa3[_0x7688('0x1c')];var _0xe6eaf2;if(_0xc1058e>=_0x54ab77){_0xc1058e=_0x54ab77;_0xe6eaf2=0xc8;}else{_0xe6eaf2=0xce;}_0x1ea3f5[_0x7688('0x1a')](_0xe6eaf2);return _0x1ea3f5[_0x7688('0x1f')](_0x7688('0x20'),_0x181f67+'-'+_0xc1058e+'/'+_0x54ab77)['json'](_0x473013);}return null;};}function patchUpdates(_0x418551){return function(_0x42313b){try{jsonpatch[_0x7688('0x21')](_0x42313b,_0x418551,!![]);}catch(_0x208c7e){return BPromise['reject'](_0x208c7e);}return _0x42313b[_0x7688('0x22')]();};}function saveUpdates(_0xc60735,_0x460442){return function(_0x9d82ad){if(_0x9d82ad){return _0x9d82ad[_0x7688('0x23')](_0xc60735)[_0x7688('0x24')](function(_0x4e2111){return _0x4e2111;});}return null;};}function removeEntity(_0x5332c4,_0x48eade){return function(_0x2fcdfb){if(_0x2fcdfb){return _0x2fcdfb[_0x7688('0x25')]()['then'](function(){_0x5332c4['status'](0xcc)['end']();});}};}function handleEntityNotFound(_0x66bee4,_0x59e265){return function(_0x4afe5f){if(!_0x4afe5f){_0x66bee4[_0x7688('0x26')](0x194);}return _0x4afe5f;};}function handleError(_0x2d1c0f,_0x166c9c){_0x166c9c=_0x166c9c||0x1f4;return function(_0x49ca98){logger[_0x7688('0x27')](_0x49ca98[_0x7688('0x28')]);if(_0x49ca98[_0x7688('0x29')]){delete _0x49ca98[_0x7688('0x29')];}_0x2d1c0f[_0x7688('0x1a')](_0x166c9c)[_0x7688('0x2a')](_0x49ca98);};}exports[_0x7688('0x2b')]=function(_0x2a45e3,_0x340ebd){var _0x2f2951={},_0x482705={},_0x1fdcbf={'count':0x0,'rows':[]};var _0x284e8a=_[_0x7688('0x2c')](db[_0x7688('0x2d')][_0x7688('0x2e')],function(_0x1ace36){return{'name':_0x1ace36[_0x7688('0x2f')],'type':_0x1ace36['type'][_0x7688('0x30')]};});_0x482705['model']=_[_0x7688('0x2c')](_0x284e8a,_0x7688('0x29'));_0x482705[_0x7688('0x31')]=_[_0x7688('0x32')](_0x2a45e3[_0x7688('0x31')]);_0x482705[_0x7688('0x33')]=_[_0x7688('0x34')](_0x482705['model'],_0x482705[_0x7688('0x31')]);_0x2f2951[_0x7688('0x35')]=_['intersection'](_0x482705[_0x7688('0x36')],qs[_0x7688('0x37')](_0x2a45e3['query'][_0x7688('0x37')]));_0x2f2951[_0x7688('0x35')]=_0x2f2951[_0x7688('0x35')][_0x7688('0x38')]?_0x2f2951[_0x7688('0x35')]:_0x482705['model'];if(!_0x2a45e3[_0x7688('0x31')][_0x7688('0x39')](_0x7688('0x3a'))){_0x2f2951[_0x7688('0x1c')]=qs[_0x7688('0x1c')](_0x2a45e3['query'][_0x7688('0x1c')]);_0x2f2951[_0x7688('0x1e')]=qs['offset'](_0x2a45e3[_0x7688('0x31')][_0x7688('0x1e')]);}_0x2f2951[_0x7688('0x3b')]=qs[_0x7688('0x3c')](_0x2a45e3[_0x7688('0x31')][_0x7688('0x3c')]);_0x2f2951[_0x7688('0x3d')]=qs[_0x7688('0x33')](_[_0x7688('0x3e')](_0x2a45e3['query'],_0x482705[_0x7688('0x33')]),_0x284e8a);if(_0x2a45e3[_0x7688('0x31')][_0x7688('0x3f')]){_0x2f2951[_0x7688('0x3d')]=_[_0x7688('0x40')](_0x2f2951[_0x7688('0x3d')],{'$or':_[_0x7688('0x2c')](_0x284e8a,function(_0x11e3f5){if(_0x11e3f5[_0x7688('0x41')]!==_0x7688('0x42')){var _0x27b63a={};_0x27b63a[_0x11e3f5[_0x7688('0x29')]]={'$like':'%'+_0x2a45e3[_0x7688('0x31')][_0x7688('0x3f')]+'%'};return _0x27b63a;}})});}_0x2f2951=_[_0x7688('0x40')]({},_0x2f2951,_0x2a45e3[_0x7688('0x43')]);var _0x283b4a={'where':_0x2f2951['where']};return db[_0x7688('0x2d')]['count'](_0x283b4a)[_0x7688('0x24')](function(_0x2ff3e4){_0x1fdcbf['count']=_0x2ff3e4;if(_0x2a45e3[_0x7688('0x31')][_0x7688('0x44')]){_0x2f2951[_0x7688('0x45')]=[{'all':!![]}];}return db[_0x7688('0x2d')][_0x7688('0x46')](_0x2f2951);})[_0x7688('0x24')](function(_0x2fae4c){_0x1fdcbf[_0x7688('0x47')]=_0x2fae4c;return _0x1fdcbf;})[_0x7688('0x24')](respondWithFilteredResult(_0x340ebd,_0x2f2951))['catch'](handleError(_0x340ebd,null));};exports[_0x7688('0x48')]=function(_0x1fc4fa,_0x528878){var _0x1acea6={'raw':!![],'where':{'id':_0x1fc4fa[_0x7688('0x49')]['id']}},_0x2e3864={};_0x2e3864[_0x7688('0x36')]=_[_0x7688('0x32')](db[_0x7688('0x2d')][_0x7688('0x2e')]);_0x2e3864[_0x7688('0x31')]=_[_0x7688('0x32')](_0x1fc4fa[_0x7688('0x31')]);_0x2e3864['filters']=_[_0x7688('0x34')](_0x2e3864['model'],_0x2e3864[_0x7688('0x31')]);_0x1acea6[_0x7688('0x35')]=_['intersection'](_0x2e3864[_0x7688('0x36')],qs[_0x7688('0x37')](_0x1fc4fa[_0x7688('0x31')][_0x7688('0x37')]));_0x1acea6[_0x7688('0x35')]=_0x1acea6[_0x7688('0x35')][_0x7688('0x38')]?_0x1acea6[_0x7688('0x35')]:_0x2e3864[_0x7688('0x36')];if(_0x1fc4fa['query']['includeAll']){_0x1acea6[_0x7688('0x45')]=[{'all':!![]}];}_0x1acea6=_[_0x7688('0x40')]({},_0x1acea6,_0x1fc4fa[_0x7688('0x43')]);return db[_0x7688('0x2d')][_0x7688('0x4a')](_0x1acea6)[_0x7688('0x24')](handleEntityNotFound(_0x528878,null))['then'](respondWithResult(_0x528878,null))[_0x7688('0x4b')](handleError(_0x528878,null));};exports[_0x7688('0x4c')]=function(_0x3eae2d,_0x140c49){return db['VoiceDialReport']['create'](_0x3eae2d[_0x7688('0x4d')],{})[_0x7688('0x24')](respondWithResult(_0x140c49,0xc9))[_0x7688('0x4b')](handleError(_0x140c49,null));};exports[_0x7688('0x23')]=function(_0x99deda,_0x5f606e){if(_0x99deda['body']['id']){delete _0x99deda[_0x7688('0x4d')]['id'];}return db['VoiceDialReport'][_0x7688('0x4a')]({'where':{'id':_0x99deda[_0x7688('0x49')]['id']}})[_0x7688('0x24')](handleEntityNotFound(_0x5f606e,null))[_0x7688('0x24')](saveUpdates(_0x99deda[_0x7688('0x4d')],null))[_0x7688('0x24')](respondWithResult(_0x5f606e,null))['catch'](handleError(_0x5f606e,null));};exports[_0x7688('0x25')]=function(_0x348eb0,_0x15e72b){return db[_0x7688('0x2d')]['find']({'where':{'id':_0x348eb0[_0x7688('0x49')]['id']}})[_0x7688('0x24')](handleEntityNotFound(_0x15e72b,null))[_0x7688('0x24')](removeEntity(_0x15e72b,null))[_0x7688('0x4b')](handleError(_0x15e72b,null));};exports[_0x7688('0x4e')]=function(_0x5888b6,_0x502c0a){return db[_0x7688('0x2d')]['describe']()['then'](respondWithResult(_0x502c0a,null))[_0x7688('0x4b')](handleError(_0x502c0a,null));};
\ No newline at end of file
index 2e64093..c2fdb56 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0x521e=['moment','bluebird','path','rimraf','../../config/environment','./voiceDialReport.attributes','report_dial','uniqueid','api'];(function(_0x275561,_0x4388db){var _0x1c1543=function(_0x500767){while(--_0x500767){_0x275561['push'](_0x275561['shift']());}};_0x1c1543(++_0x4388db);}(_0x521e,0x86));var _0xe521=function(_0x5b0782,_0x83f038){_0x5b0782=_0x5b0782-0x0;var _0x1a3804=_0x521e[_0x5b0782];return _0x1a3804;};'use strict';var _=require('lodash');var util=require('util');var logger=require('../../config/logger')(_0xe521('0x0'));var moment=require(_0xe521('0x1'));var BPromise=require(_0xe521('0x2'));var rp=require('request-promise');var fs=require('fs');var path=require(_0xe521('0x3'));var rimraf=require(_0xe521('0x4'));var config=require(_0xe521('0x5'));var attributes=require(_0xe521('0x6'));module['exports']=function(_0x3d1005,_0x2194b2){return _0x3d1005['define']('VoiceDialReport',attributes,{'tableName':_0xe521('0x7'),'paranoid':![],'indexes':[{'fields':[_0xe521('0x8')]}],'timestamps':!![]});};
\ No newline at end of file
index a04d898..d551331 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0xb69b=['limit','lodash','bluebird','randomstring','../../mysqldb','../../config/logger','rpc','jayson/promise','client','request','then','info','VoiceDialReport,\x20%s,\x20%s','debug','VoiceDialReport,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','code','message','result','CreateVoiceDialReport','VoiceDialReport','options','raw','catch','UpdateVoiceDialReport','update','where','attributes'];(function(_0x7a3247,_0x15cb12){var _0x1bfde5=function(_0x62bbef){while(--_0x62bbef){_0x7a3247['push'](_0x7a3247['shift']());}};_0x1bfde5(++_0x15cb12);}(_0xb69b,0x187));var _0xbb69=function(_0x3dc1bb,_0x11aec0){_0x3dc1bb=_0x3dc1bb-0x0;var _0x57be8c=_0xb69b[_0x3dc1bb];return _0x57be8c;};'use strict';var _=require(_0xbb69('0x0'));var util=require('util');var moment=require('moment');var BPromise=require(_0xbb69('0x1'));var rs=require(_0xbb69('0x2'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0xbb69('0x3'))['db'];var utils=require('../../config/utils');var logger=require(_0xbb69('0x4'))(_0xbb69('0x5'));var config=require('../../config/environment');var jayson=require(_0xbb69('0x6'));var client=jayson[_0xbb69('0x7')]['http']({'port':0x232a});function respondWithRpcPromise(_0x285d5c,_0x1f8030,_0x1e12bb){return new BPromise(function(_0x19853a,_0x2e6336){return client[_0xbb69('0x8')](_0x285d5c,_0x1e12bb)[_0xbb69('0x9')](function(_0x48ddf6){logger[_0xbb69('0xa')](_0xbb69('0xb'),_0x1f8030,'request\x20sent');logger[_0xbb69('0xc')](_0xbb69('0xd'),_0x1f8030,_0xbb69('0xe'),JSON[_0xbb69('0xf')](_0x48ddf6));if(_0x48ddf6[_0xbb69('0x10')]){if(_0x48ddf6[_0xbb69('0x10')][_0xbb69('0x11')]===0x1f4){logger['error']('VoiceDialReport,\x20%s,\x20%s',_0x1f8030,_0x48ddf6[_0xbb69('0x10')][_0xbb69('0x12')]);return _0x2e6336(_0x48ddf6['error'][_0xbb69('0x12')]);}logger[_0xbb69('0x10')](_0xbb69('0xb'),_0x1f8030,_0x48ddf6[_0xbb69('0x10')][_0xbb69('0x12')]);return _0x19853a(_0x48ddf6[_0xbb69('0x10')][_0xbb69('0x12')]);}else{logger[_0xbb69('0xa')](_0xbb69('0xb'),_0x1f8030,_0xbb69('0xe'));_0x19853a(_0x48ddf6[_0xbb69('0x13')][_0xbb69('0x12')]);}})['catch'](function(_0x1b3ed4){logger['error'](_0xbb69('0xb'),_0x1f8030,_0x1b3ed4);_0x2e6336(_0x1b3ed4);});});}exports[_0xbb69('0x14')]=function(_0x1fd875){var _0x208796=this;return new Promise(function(_0x76b1c0,_0x392bcb){return db[_0xbb69('0x15')]['create'](_0x1fd875['body'],{'raw':_0x1fd875[_0xbb69('0x16')]?_0x1fd875['options'][_0xbb69('0x17')]===undefined?!![]:![]:!![]})[_0xbb69('0x9')](function(_0x2a6dd3){logger[_0xbb69('0xa')](_0xbb69('0x14'),_0x1fd875);logger[_0xbb69('0xc')](_0xbb69('0x14'),_0x1fd875,JSON[_0xbb69('0xf')](_0x2a6dd3));_0x76b1c0(_0x2a6dd3);})[_0xbb69('0x18')](function(_0x1f4306){logger[_0xbb69('0x10')](_0xbb69('0x14'),_0x1f4306[_0xbb69('0x12')],_0x1fd875);_0x392bcb(_0x208796[_0xbb69('0x10')](0x1f4,_0x1f4306[_0xbb69('0x12')]));});});};exports[_0xbb69('0x19')]=function(_0x73abec){var _0x312fe1=this;return new Promise(function(_0x53c089,_0x4b78be){return db[_0xbb69('0x15')][_0xbb69('0x1a')](_0x73abec['body'],{'raw':_0x73abec[_0xbb69('0x16')]?_0x73abec['options'][_0xbb69('0x17')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x73abec[_0xbb69('0x16')]?_0x73abec['options'][_0xbb69('0x1b')]||null:null,'attributes':_0x73abec[_0xbb69('0x16')]?_0x73abec['options'][_0xbb69('0x1c')]||null:null,'limit':_0x73abec[_0xbb69('0x16')]?_0x73abec[_0xbb69('0x16')][_0xbb69('0x1d')]||null:null})[_0xbb69('0x9')](function(_0x5a9326){logger[_0xbb69('0xa')](_0xbb69('0x19'),_0x73abec);logger['debug'](_0xbb69('0x19'),_0x73abec,JSON['stringify'](_0x5a9326));_0x53c089(_0x5a9326);})[_0xbb69('0x18')](function(_0x1ccf09){logger[_0xbb69('0x10')](_0xbb69('0x19'),_0x1ccf09[_0xbb69('0x12')],_0x73abec);_0x4b78be(_0x312fe1[_0xbb69('0x10')](0x1f4,_0x1ccf09[_0xbb69('0x12')]));});});};
\ No newline at end of file
index 11503b4..462508c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0x118c=['../../config/environment','get','isAuthenticated','index','/:id','show','post','create','addApplications','update','exports','multer','util','path','connect-timeout','express','Router','../../components/auth/service','../../components/interaction/service'];(function(_0x108d5f,_0x33f82d){var _0x456ea3=function(_0x228200){while(--_0x228200){_0x108d5f['push'](_0x108d5f['shift']());}};_0x456ea3(++_0x33f82d);}(_0x118c,0x1d3));var _0xc118=function(_0x151ff0,_0x58f275){_0x151ff0=_0x151ff0-0x0;var _0x43075b=_0x118c[_0x151ff0];return _0x43075b;};'use strict';var multer=require(_0xc118('0x0'));var util=require(_0xc118('0x1'));var path=require(_0xc118('0x2'));var timeout=require(_0xc118('0x3'));var express=require(_0xc118('0x4'));var router=express[_0xc118('0x5')]();var fs_extra=require('fs-extra');var auth=require(_0xc118('0x6'));var interaction=require(_0xc118('0x7'));var config=require(_0xc118('0x8'));var controller=require('./voiceExtension.controller');router[_0xc118('0x9')]('/',auth[_0xc118('0xa')](),controller[_0xc118('0xb')]);router[_0xc118('0x9')](_0xc118('0xc'),auth[_0xc118('0xa')](),controller[_0xc118('0xd')]);router[_0xc118('0xe')]('/',auth[_0xc118('0xa')](),controller[_0xc118('0xf')]);router[_0xc118('0xe')]('/:id/applications',auth[_0xc118('0xa')](),controller[_0xc118('0x10')]);router['put'](_0xc118('0xc'),auth[_0xc118('0xa')](),controller[_0xc118('0x11')]);router['delete'](_0xc118('0xc'),auth['isAuthenticated'](),controller['destroy']);module[_0xc118('0x12')]=router;
\ No newline at end of file
index 5751fa7..ac7571b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0x6e2c=['compositeIndex','STRING','NoOp','ENUM','inbound','outbound','outbound-fax','system','any','*,*,*,*','INTEGER','BOOLEAN','exten','sequelize'];(function(_0x1f7839,_0x2a26e6){var _0x36b42e=function(_0x553222){while(--_0x553222){_0x1f7839['push'](_0x1f7839['shift']());}};_0x36b42e(++_0x2a26e6);}(_0x6e2c,0x125));var _0xc6e2=function(_0x2fa4a6,_0x49215a){_0x2fa4a6=_0x2fa4a6-0x0;var _0x468869=_0x6e2c[_0x2fa4a6];return _0x468869;};'use strict';var Sequelize=require(_0xc6e2('0x0'));module['exports']={'context':{'type':Sequelize['STRING'],'allowNull':![],'unique':_0xc6e2('0x1'),'validate':{'notEmpty':!![],'is':/[A-Za-z0-9._\+*!\-\[\]]+$/i}},'exten':{'type':Sequelize[_0xc6e2('0x2')],'allowNull':![],'unique':'compositeIndex'},'priority':{'type':Sequelize[_0xc6e2('0x2')],'allowNull':![],'defaultValue':'1','unique':'compositeIndex'},'tag':{'type':Sequelize['STRING'],'allowNull':![],'defaultValue':'--'},'app':{'type':Sequelize[_0xc6e2('0x2')],'allowNull':![],'defaultValue':_0xc6e2('0x3')},'appdata':{'type':Sequelize['STRING'](0x1000),'allowNull':!![],'defaultValue':''},'type':{'type':Sequelize[_0xc6e2('0x4')](_0xc6e2('0x5'),_0xc6e2('0x6'),'internal','inbound-fax',_0xc6e2('0x7'),_0xc6e2('0x8'),_0xc6e2('0x9')),'allowNull':![]},'description':{'type':Sequelize[_0xc6e2('0x2')]},'interval':{'type':Sequelize[_0xc6e2('0x2')],'allowNull':![],'defaultValue':_0xc6e2('0xa')},'IntervalId':{'type':Sequelize[_0xc6e2('0xb')]},'isApp':{'type':Sequelize[_0xc6e2('0xc')],'allowNull':![],'defaultValue':![]},'appType':{'type':Sequelize[_0xc6e2('0x2')],'defaultValue':null},'callerID':{'type':Sequelize['STRING'],'allowNull':!![]},'record':{'type':Sequelize[_0xc6e2('0xc')],'defaultValue':![]},'cutdigits':{'type':Sequelize[_0xc6e2('0xb')]},'recordingFormat':{'type':Sequelize[_0xc6e2('0x2')],'defaultValue':'wav'},'answer':{'type':Sequelize[_0xc6e2('0xc')],'defaultValue':!![]},'name':{'type':Sequelize['VIRTUAL'],'get':function(_0x1ee5db){return this['getDataValue'](_0xc6e2('0xd'));}},'alias':{'type':Sequelize[_0xc6e2('0x2')],'allowNull':!![]}};
\ No newline at end of file
index f199e79..a835ecd 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0x0f3a=['rawAttributes','fieldName','key','model','query','keys','filters','attributes','intersection','fields','length','hasOwnProperty','nolimit','sort','pick','merge','where','options','includeAll','findAll','rows','catch','show','include','params','create','startsWith','body','exten','concat','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','userProfileId','error','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','update','context','recordingFormat','mandatoryDisposition','alias','addApplications','sequelize','transaction','Transaction','READ_COMMITTED','isApp','createRouting','bulkCreate','findAndCountAll','cast(priority\x20as\x20unsigned)','finally','lodash','ioredis','api','../../config/environment','../../mysqldb','redis','defaults','socket.io-emitter','./voiceExtension.socket','register','status','end','json','offset','undefined','limit','count','set','Content-Range','destroy','then','get','InboundRoutes','inbound','OutboundRoutes','outbound','InternalRoutes','internal','filter','ignore','map','value','includes','type','find','name','sendStatus','stack','send','index','VoiceExtension'];(function(_0x50aa4b,_0x77f234){var _0x20fbd9=function(_0x52c967){while(--_0x52c967){_0x50aa4b['push'](_0x50aa4b['shift']());}};_0x20fbd9(++_0x77f234);}(_0x0f3a,0x147));var _0xa0f3=function(_0x2f314e,_0x5c0bfd){_0x2f314e=_0x2f314e-0x0;var _0x519bf2=_0x0f3a[_0x2f314e];return _0x519bf2;};'use strict';var _=require(_0xa0f3('0x0'));var Redis=require(_0xa0f3('0x1'));var qs=require('../../components/parsers/qs');var logger=require('../../config/logger')(_0xa0f3('0x2'));var config=require(_0xa0f3('0x3'));var db=require(_0xa0f3('0x4'))['db'];config[_0xa0f3('0x5')]=_[_0xa0f3('0x6')](config[_0xa0f3('0x5')],{'host':'localhost','port':0x18eb});var socket=require(_0xa0f3('0x7'))(new Redis(config[_0xa0f3('0x5')]));require(_0xa0f3('0x8'))[_0xa0f3('0x9')](socket);function respondWithStatusCode(_0x3bad5b,_0x2da0a5){_0x2da0a5=_0x2da0a5||0xcc;return function(_0x5dcee2){if(_0x5dcee2){return _0x3bad5b['sendStatus'](_0x2da0a5);}return _0x3bad5b[_0xa0f3('0xa')](_0x2da0a5)[_0xa0f3('0xb')]();};}function respondWithResult(_0xbe6d0,_0x5b70e5){_0x5b70e5=_0x5b70e5||0xc8;return function(_0x5a6861){if(_0x5a6861){return _0xbe6d0[_0xa0f3('0xa')](_0x5b70e5)[_0xa0f3('0xc')](_0x5a6861);}};}function respondWithFilteredResult(_0x55746d,_0x3eaff6){return function(_0x265845){if(_0x265845){var _0x388c18=typeof _0x3eaff6[_0xa0f3('0xd')]===_0xa0f3('0xe')&&typeof _0x3eaff6[_0xa0f3('0xf')]==='undefined';var _0x8156ba=_0x265845['count'];var _0x32b66e=_0x388c18?0x0:_0x3eaff6[_0xa0f3('0xd')];var _0xdc1d56=_0x388c18?_0x265845[_0xa0f3('0x10')]:_0x3eaff6['offset']+_0x3eaff6[_0xa0f3('0xf')];var _0x3198d1;if(_0xdc1d56>=_0x8156ba){_0xdc1d56=_0x8156ba;_0x3198d1=0xc8;}else{_0x3198d1=0xce;}_0x55746d[_0xa0f3('0xa')](_0x3198d1);return _0x55746d[_0xa0f3('0x11')](_0xa0f3('0x12'),_0x32b66e+'-'+_0xdc1d56+'/'+_0x8156ba)[_0xa0f3('0xc')](_0x265845);}return null;};}function removeEntity(_0x500b98){return function(_0x27a023){if(_0x27a023){return _0x27a023[_0xa0f3('0x13')]()[_0xa0f3('0x14')](function(){var _0x439a0c=_0x27a023[_0xa0f3('0x15')]({'plain':!![]});var _0x27bc23=[{'name':_0xa0f3('0x16'),'value':_0xa0f3('0x17'),'ignore':![]},{'name':_0xa0f3('0x18'),'value':_0xa0f3('0x19'),'ignore':![]},{'name':_0xa0f3('0x1a'),'value':_0xa0f3('0x1b'),'ignore':![]}];var _0x424829=_(_0x27bc23)[_0xa0f3('0x1c')](_0xa0f3('0x1d'))[_0xa0f3('0x1e')]('value')[_0xa0f3('0x1f')]();if(_[_0xa0f3('0x20')](_0x424829,_0x439a0c[_0xa0f3('0x21')])){return;}var _0x29debb=_[_0xa0f3('0x22')](_0x27bc23,[_0xa0f3('0x1f'),_0x439a0c[_0xa0f3('0x21')]])[_0xa0f3('0x23')];return db['UserProfileResource'][_0xa0f3('0x13')]({'where':{'type':_0x29debb,'resourceId':_0x439a0c['id']}})[_0xa0f3('0x14')](function(){return _0x27a023;});})['then'](function(){_0x500b98['status'](0xcc)['end']();});}};}function handleEntityNotFound(_0x5e09d3){return function(_0x50e993){if(!_0x50e993){_0x5e09d3[_0xa0f3('0x24')](0x194);}return _0x50e993;};}function handleError(_0x4ed9fc,_0x2fae99){_0x2fae99=_0x2fae99||0x1f4;return function(_0x596680){logger['error'](_0x596680[_0xa0f3('0x25')]);if(_0x596680[_0xa0f3('0x23')]){delete _0x596680[_0xa0f3('0x23')];}_0x4ed9fc[_0xa0f3('0xa')](_0x2fae99)[_0xa0f3('0x26')](_0x596680);};}exports[_0xa0f3('0x27')]=function(_0x2c2a25,_0x3d5a39){var _0x1939c2={},_0x54cf1c={},_0x494764={'count':0x0,'rows':[]};var _0xad6354=_['map'](db[_0xa0f3('0x28')][_0xa0f3('0x29')],function(_0x13a134){return{'name':_0x13a134[_0xa0f3('0x2a')],'type':_0x13a134[_0xa0f3('0x21')][_0xa0f3('0x2b')]};});_0x54cf1c[_0xa0f3('0x2c')]=_['map'](_0xad6354,'name');_0x54cf1c[_0xa0f3('0x2d')]=_[_0xa0f3('0x2e')](_0x2c2a25[_0xa0f3('0x2d')]);_0x54cf1c[_0xa0f3('0x2f')]=_['intersection'](_0x54cf1c[_0xa0f3('0x2c')],_0x54cf1c['query']);_0x1939c2[_0xa0f3('0x30')]=_[_0xa0f3('0x31')](_0x54cf1c[_0xa0f3('0x2c')],qs['fields'](_0x2c2a25[_0xa0f3('0x2d')][_0xa0f3('0x32')]));_0x1939c2[_0xa0f3('0x30')]=_0x1939c2[_0xa0f3('0x30')][_0xa0f3('0x33')]?_0x1939c2[_0xa0f3('0x30')]:_0x54cf1c[_0xa0f3('0x2c')];if(!_0x2c2a25[_0xa0f3('0x2d')][_0xa0f3('0x34')](_0xa0f3('0x35'))){_0x1939c2['limit']=qs[_0xa0f3('0xf')](_0x2c2a25[_0xa0f3('0x2d')][_0xa0f3('0xf')]);_0x1939c2[_0xa0f3('0xd')]=qs['offset'](_0x2c2a25[_0xa0f3('0x2d')][_0xa0f3('0xd')]);}_0x1939c2['order']=qs[_0xa0f3('0x36')](_0x2c2a25[_0xa0f3('0x2d')]['sort']);_0x1939c2['where']=qs[_0xa0f3('0x2f')](_[_0xa0f3('0x37')](_0x2c2a25[_0xa0f3('0x2d')],_0x54cf1c[_0xa0f3('0x2f')]),_0xad6354);if(_0x2c2a25['query'][_0xa0f3('0x1c')]){_0x1939c2['where']=_[_0xa0f3('0x38')](_0x1939c2[_0xa0f3('0x39')],{'$or':_['map'](_0xad6354,function(_0x1a8d69){if(_0x1a8d69['type']!=='VIRTUAL'){var _0x417f8a={};_0x417f8a[_0x1a8d69[_0xa0f3('0x23')]]={'$like':'%'+_0x2c2a25[_0xa0f3('0x2d')][_0xa0f3('0x1c')]+'%'};return _0x417f8a;}})});}_0x1939c2=_[_0xa0f3('0x38')]({},_0x1939c2,_0x2c2a25[_0xa0f3('0x3a')]);var _0x483b6c={'where':_0x1939c2[_0xa0f3('0x39')]};return db['VoiceExtension']['count'](_0x483b6c)[_0xa0f3('0x14')](function(_0x393261){_0x494764['count']=_0x393261;if(_0x2c2a25[_0xa0f3('0x2d')][_0xa0f3('0x3b')]){_0x1939c2['include']=[{'all':!![]}];}return db[_0xa0f3('0x28')][_0xa0f3('0x3c')](_0x1939c2);})[_0xa0f3('0x14')](function(_0x25c6ae){_0x494764[_0xa0f3('0x3d')]=_0x25c6ae;return _0x494764;})[_0xa0f3('0x14')](respondWithFilteredResult(_0x3d5a39,_0x1939c2))[_0xa0f3('0x3e')](handleError(_0x3d5a39,null));};exports[_0xa0f3('0x3f')]=function(_0x47b382,_0x8ba4d8){var _0x569633={'raw':![],'where':{'id':_0x47b382['params']['id']}},_0x8db3fa={};_0x8db3fa[_0xa0f3('0x2c')]=_[_0xa0f3('0x2e')](db[_0xa0f3('0x28')][_0xa0f3('0x29')]);_0x8db3fa[_0xa0f3('0x2d')]=_[_0xa0f3('0x2e')](_0x47b382[_0xa0f3('0x2d')]);_0x8db3fa[_0xa0f3('0x2f')]=_[_0xa0f3('0x31')](_0x8db3fa[_0xa0f3('0x2c')],_0x8db3fa[_0xa0f3('0x2d')]);_0x569633[_0xa0f3('0x30')]=_[_0xa0f3('0x31')](_0x8db3fa[_0xa0f3('0x2c')],qs[_0xa0f3('0x32')](_0x47b382[_0xa0f3('0x2d')][_0xa0f3('0x32')]));_0x569633['attributes']=_0x569633['attributes'][_0xa0f3('0x33')]?_0x569633['attributes']:_0x8db3fa[_0xa0f3('0x2c')];if(_0x47b382[_0xa0f3('0x2d')][_0xa0f3('0x3b')]){_0x569633[_0xa0f3('0x40')]=[{'all':!![]}];}_0x569633=_[_0xa0f3('0x38')]({},_0x569633,_0x47b382['options']);return db['VoiceExtension'][_0xa0f3('0x22')](_0x569633)['then'](handleEntityNotFound(_0x8ba4d8,null))[_0xa0f3('0x14')](respondWithResult(_0x8ba4d8,null))[_0xa0f3('0x3e')](handleError(_0x8ba4d8,null));};exports['destroy']=function(_0x52d388,_0x3a1746){return db[_0xa0f3('0x28')][_0xa0f3('0x22')]({'where':{'id':_0x52d388[_0xa0f3('0x41')]['id']}})[_0xa0f3('0x14')](handleEntityNotFound(_0x3a1746,null))[_0xa0f3('0x14')](removeEntity(_0x3a1746,null))[_0xa0f3('0x3e')](handleError(_0x3a1746,null));};exports[_0xa0f3('0x42')]=function(_0x2fb359,_0x2fcf78){if(_0x2fb359['body'][_0xa0f3('0x21')]===_0xa0f3('0x19')&&!_[_0xa0f3('0x43')](_0x2fb359[_0xa0f3('0x44')]['exten'],'_')){_0x2fb359[_0xa0f3('0x44')][_0xa0f3('0x45')]='_'[_0xa0f3('0x46')](_0x2fb359['body'][_0xa0f3('0x45')]);}return db[_0xa0f3('0x28')]['create'](_0x2fb359['body'],{'raw':![]})['then'](function(_0x335872){var _0x23d0bb=_0x2fb359[_0xa0f3('0x47')][_0xa0f3('0x15')]({'plain':!![]});if(!_0x23d0bb)throw new Error(_0xa0f3('0x48'));if(_0x23d0bb['role']===_0xa0f3('0x47')){var _0x23883a=_0x335872[_0xa0f3('0x15')]({'plain':!![]});var _0x2d7656=[{'name':'InboundRoutes','value':_0xa0f3('0x17')},{'name':'OutboundRoutes','value':_0xa0f3('0x19')},{'name':_0xa0f3('0x1a'),'value':_0xa0f3('0x1b')}];var _0x3a56f7=_[_0xa0f3('0x22')](_0x2d7656,[_0xa0f3('0x1f'),_0x23883a[_0xa0f3('0x21')]])[_0xa0f3('0x23')];return db['UserProfileSection'][_0xa0f3('0x22')]({'where':{'name':_0x3a56f7,'userProfileId':_0x23d0bb[_0xa0f3('0x49')]},'raw':!![]})[_0xa0f3('0x14')](function(_0x57bfb5){if(_0x57bfb5&&_0x57bfb5['autoAssociation']===0x0){return db['UserProfileResource'][_0xa0f3('0x42')]({'name':_0x23883a['name'],'resourceId':_0x23883a['id'],'type':_0x57bfb5[_0xa0f3('0x23')],'sectionId':_0x57bfb5['id']},{})[_0xa0f3('0x14')](function(){return _0x335872;});}else{return _0x335872;}})[_0xa0f3('0x3e')](function(_0x415402){logger[_0xa0f3('0x4a')](_0xa0f3('0x4b'),_0x415402);throw _0x415402;});}return _0x335872;})[_0xa0f3('0x14')](respondWithResult(_0x2fcf78,0xc9))[_0xa0f3('0x3e')](handleError(_0x2fcf78,null));};exports[_0xa0f3('0x4c')]=function(_0x36eab8,_0x50ac3a){if(_0x36eab8[_0xa0f3('0x44')]['id']){delete _0x36eab8[_0xa0f3('0x44')]['id'];}return db[_0xa0f3('0x28')][_0xa0f3('0x22')]({'where':{'id':_0x36eab8['params']['id']}})[_0xa0f3('0x14')](handleEntityNotFound(_0x50ac3a,null))[_0xa0f3('0x14')](function(_0x4bb55f){if(_0x4bb55f){return db[_0xa0f3('0x28')][_0xa0f3('0x4c')](_[_0xa0f3('0x37')](_0x36eab8[_0xa0f3('0x44')],[_0xa0f3('0x45'),_0xa0f3('0x4d'),'description',_0xa0f3('0x4e'),'cutdigits',_0xa0f3('0x4f'),_0xa0f3('0x50')]),{'where':{'context':_0x4bb55f[_0xa0f3('0x4d')],'exten':_0x4bb55f[_0xa0f3('0x45')]},'individualHooks':!![]})['then'](function(_0x280bd1){return _0x280bd1;});}return null;})[_0xa0f3('0x14')](respondWithStatusCode(_0x50ac3a,null))[_0xa0f3('0x3e')](handleError(_0x50ac3a,null));};exports[_0xa0f3('0x51')]=function(_0x491d6a,_0x4f1ae8){var _0x387709=_0x491d6a[_0xa0f3('0x41')]['id'];var _0x1d1b63=_0x491d6a[_0xa0f3('0x44')];var _0x3b9438=0xc8;var _0x44421b=null;return db[_0xa0f3('0x52')][_0xa0f3('0x53')]({'isolationLevel':db['sequelize'][_0xa0f3('0x54')]['ISOLATION_LEVELS'][_0xa0f3('0x55')]},function(_0x47f867){return db['VoiceExtension']['findOne']({'where':{'id':_0x387709},'transaction':_0x47f867})[_0xa0f3('0x14')](function(_0x45c702){if(_0x45c702){return db[_0xa0f3('0x28')]['destroy']({'where':{'VoiceExtensionId':_0x387709},'transaction':_0x47f867})['then'](function(){var _0x1833f5=_[_0xa0f3('0x1e')](_0x1d1b63,function(_0x1f9f24){_0x1f9f24['VoiceExtensionId']=_0x387709;_0x1f9f24[_0xa0f3('0x56')]=!![];return _0x1f9f24;});return _0x45c702[_0xa0f3('0x57')](_0x1833f5);})[_0xa0f3('0x14')](function(_0x26fbf7){return db['VoiceExtension'][_0xa0f3('0x58')](_0x26fbf7,{'transaction':_0x47f867});});}else{_0x3b9438=0x194;_0x44421b=[];}});})[_0xa0f3('0x14')](function(){if(_0x3b9438!==0x194){return db['VoiceExtension'][_0xa0f3('0x59')]({'where':{'isApp':!![],'VoiceExtensionId':_0x387709},'order':_0xa0f3('0x5a')})[_0xa0f3('0x14')](function(_0x2c2858){_0x44421b=_0x2c2858;});}})[_0xa0f3('0x3e')](function(_0x1a8c50){_0x3b9438=0x1f4;logger[_0xa0f3('0x4a')](_0x1a8c50[_0xa0f3('0x25')]);if(_0x1a8c50[_0xa0f3('0x23')]){delete _0x1a8c50['name'];}_0x44421b=_0x1a8c50;})[_0xa0f3('0x5b')](function(){if(_0x44421b===null){_0x4f1ae8[_0xa0f3('0x24')](_0x3b9438);}else{if(_0x3b9438===0x1f4){_0x4f1ae8[_0xa0f3('0xa')](_0x3b9438)[_0xa0f3('0x26')](_0x44421b);}else{_0x4f1ae8[_0xa0f3('0xa')](_0x3b9438)[_0xa0f3('0xc')](_0x44421b);}}});};
\ No newline at end of file
index 32b1530..1e5bbd8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0x1616=['remove','emit','hook','exports','VoiceExtension','save','update'];(function(_0x4cf98e,_0xba4b79){var _0x1623ac=function(_0x459bc0){while(--_0x459bc0){_0x4cf98e['push'](_0x4cf98e['shift']());}};_0x1623ac(++_0xba4b79);}(_0x1616,0x18c));var _0x6161=function(_0x36fc1f,_0x27c1c8){_0x36fc1f=_0x36fc1f-0x0;var _0x371281=_0x1616[_0x36fc1f];return _0x371281;};'use strict';var EventEmitter=require('events');var VoiceExtension=require('../../mysqldb')['db'][_0x6161('0x0')];var VoiceExtensionEvents=new EventEmitter();VoiceExtensionEvents['setMaxListeners'](0x0);var events={'afterCreate':_0x6161('0x1'),'afterUpdate':_0x6161('0x2'),'afterDestroy':_0x6161('0x3')};function emitEvent(_0x3aa28a){return function(_0xdd19d2,_0x22a706,_0xf0e0ae){VoiceExtensionEvents[_0x6161('0x4')](_0x3aa28a+':'+_0xdd19d2['id'],_0xdd19d2);VoiceExtensionEvents[_0x6161('0x4')](_0x3aa28a,_0xdd19d2);_0xf0e0ae(null);};}for(var e in events){if(events['hasOwnProperty'](e)){var event=events[e];VoiceExtension[_0x6161('0x5')](e,emitEvent(event));}}module[_0x6161('0x6')]=VoiceExtensionEvents;
\ No newline at end of file
index a219459..6e1fa72 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0x740a=['toLowerCase','CDR(tag)=','ExecIf','$[${LEN(${PREFIX-CALLERIDALL})}\x20>\x200]?Set(CALLERID(all)=${PREFIX-CALLERIDALL}):','callerID','Set(CALLERID(all)=','NoOp(No\x20number\x20available)','answer','playback','includes','app','appType','custom','$[${XCALLY-MOTION-ANSWER}=0]?Answer','XCALLY-MOTION-ANSWER=1','$[${XCALLY-MOTION-PROGRESS}=0]?Progress','XCALLY-MOTION-PROGRESS=1','splice',',${EXTEN},','outboundDial','appdata','priority','last','catch','define','VoiceExtension','get','then','concat','lodash','./voiceExtension.attributes','exports','models','CDR(type)=','type','context','exten','alias','Set','CDR(routeAlias)=','No\x20alias\x20set','inbound','CDR(routeid)=','XCALLY-MOTION-ANSWER=0','XCALLY-MOTION-PROGRESS=0','MONITOR_OPTIONS=ab','outbound','CDR(type)=outbound','NoOp','CDR(destination)=','cutdigits','${EXTEN:','${EXTEN}','$[${LEN(${CDR(prefix)})}\x20>\x200]?Goto(','):Goto(','CDR(prefix)=${EXTEN:0:','CDR(prefix)=noprefix','recordingFormat','push','_XCALLY_MIXMONITOR_UNIQUEID=${UNIQUEID}','_XCALLY_MIXMONITOR_FORMAT=','wav','trunk','timeout','options','url','split','length','param','phone','prefix','SIP','none','replace','join','isEmpty','Interval','findAll','interval','*,*,*,*','intervals','IntervalId','map','filter','hasOwnProperty','tag'];(function(_0x2ba21e,_0x887927){var _0xab4e12=function(_0x501188){while(--_0x501188){_0x2ba21e['push'](_0x2ba21e['shift']());}};_0xab4e12(++_0x887927);}(_0x740a,0x175));var _0xa740=function(_0x4dfd37,_0x53dbab){_0x4dfd37=_0x4dfd37-0x0;var _0xd2734e=_0x740a[_0x4dfd37];return _0xd2734e;};'use strict';var _=require(_0xa740('0x0'));var attributes=require(_0xa740('0x1'));module[_0xa740('0x2')]=function(_0x2e2eea){var _0x216cea=_0x2e2eea[_0xa740('0x3')];function _0x23caee(_0xd73d1e){var _0x4e3da6=0x2;var _0x308c48=[{'type':_0xd73d1e['type'],'app':'Set','appdata':_0xa740('0x4')+_0xd73d1e[_0xa740('0x5')],'context':_0xd73d1e[_0xa740('0x6')],'exten':_0xd73d1e[_0xa740('0x7')],'priority':_0x4e3da6++,'VoiceExtensionId':_0xd73d1e['id']},{'type':_0xd73d1e[_0xa740('0x5')],'app':_0xd73d1e[_0xa740('0x8')]?_0xa740('0x9'):'NoOp','appdata':_0xd73d1e[_0xa740('0x8')]?_0xa740('0xa')+_0xd73d1e[_0xa740('0x8')]:_0xa740('0xb'),'context':_0xd73d1e[_0xa740('0x6')],'exten':_0xd73d1e['exten'],'priority':_0x4e3da6++,'VoiceExtensionId':_0xd73d1e['id']}];if(_0xd73d1e['type']==='inbound'){_0x308c48['push']({'type':_0xa740('0xc'),'app':_0xa740('0x9'),'appdata':_0xa740('0xd')+_0xd73d1e['id'],'context':_0xd73d1e[_0xa740('0x6')],'exten':_0xd73d1e['exten'],'priority':_0x4e3da6++,'VoiceExtensionId':_0xd73d1e['id']});}_0x308c48['push']({'type':_0xd73d1e['type'],'app':_0xa740('0x9'),'appdata':_0xa740('0xe'),'context':_0xd73d1e[_0xa740('0x6')],'exten':_0xd73d1e[_0xa740('0x7')],'priority':_0x4e3da6++,'VoiceExtensionId':_0xd73d1e['id']},{'type':_0xd73d1e[_0xa740('0x5')],'app':_0xa740('0x9'),'appdata':_0xa740('0xf'),'context':_0xd73d1e[_0xa740('0x6')],'exten':_0xd73d1e[_0xa740('0x7')],'priority':_0x4e3da6++,'VoiceExtensionId':_0xd73d1e['id']},{'type':_0xd73d1e['type'],'app':'Set','appdata':_0xa740('0x10'),'context':_0xd73d1e['context'],'exten':_0xd73d1e[_0xa740('0x7')],'priority':_0x4e3da6++,'VoiceExtensionId':_0xd73d1e['id']});return _0x308c48;}function _0x455d33(_0x3428b5){var _0x19f510=0x2;var _0x3d63a5=[{'type':_0xa740('0x11'),'app':_0xa740('0x9'),'appdata':_0xa740('0x12'),'context':_0x3428b5['context'],'exten':_0x3428b5['exten'],'priority':_0x19f510++,'VoiceExtensionId':_0x3428b5['id']},{'type':_0xa740('0x11'),'app':_0x3428b5[_0xa740('0x8')]?_0xa740('0x9'):_0xa740('0x13'),'appdata':_0x3428b5['alias']?_0xa740('0xa')+_0x3428b5['alias']:_0xa740('0xb'),'context':_0x3428b5[_0xa740('0x6')],'exten':_0x3428b5[_0xa740('0x7')],'priority':_0x19f510++,'VoiceExtensionId':_0x3428b5['id']},{'type':_0xa740('0x11'),'app':_0xa740('0x9'),'appdata':_0xa740('0x14')+(_0x3428b5[_0xa740('0x15')]?_0xa740('0x16')+_0x3428b5['cutdigits']+'}':_0xa740('0x17')),'context':_0x3428b5[_0xa740('0x6')],'exten':_0x3428b5[_0xa740('0x7')],'priority':_0x19f510++,'VoiceExtensionId':_0x3428b5['id']},{'type':_0xa740('0x11'),'app':_0xa740('0x9'),'appdata':'CDR(routeid)='+_0x3428b5['id'],'context':_0x3428b5['context'],'exten':_0x3428b5[_0xa740('0x7')],'priority':_0x19f510++,'VoiceExtensionId':_0x3428b5['id']},{'type':'outbound','app':'ExecIf','appdata':_0xa740('0x18')+(_0x19f510+0x2)+_0xa740('0x19')+(_0x19f510+0x1)+')','context':_0x3428b5['context'],'exten':_0x3428b5[_0xa740('0x7')],'priority':_0x19f510++,'VoiceExtensionId':_0x3428b5['id']},{'type':_0xa740('0x11'),'app':'Set','appdata':_0x3428b5[_0xa740('0x15')]?_0xa740('0x1a')+_0x3428b5[_0xa740('0x15')]+'}':_0xa740('0x1b'),'context':_0x3428b5['context'],'exten':_0x3428b5['exten'],'priority':_0x19f510++,'VoiceExtensionId':_0x3428b5['id']},{'type':_0xa740('0x11'),'app':_0xa740('0x9'),'appdata':'XCALLY-MOTION-ANSWER=0','context':_0x3428b5[_0xa740('0x6')],'exten':_0x3428b5['exten'],'priority':_0x19f510++,'VoiceExtensionId':_0x3428b5['id']},{'type':_0xa740('0x11'),'app':_0xa740('0x9'),'appdata':_0xa740('0xf'),'context':_0x3428b5[_0xa740('0x6')],'exten':_0x3428b5[_0xa740('0x7')],'priority':_0x19f510++,'VoiceExtensionId':_0x3428b5['id']},{'type':'outbound','app':'Set','appdata':_0xa740('0x10'),'context':_0x3428b5[_0xa740('0x6')],'exten':_0x3428b5[_0xa740('0x7')],'priority':_0x19f510++,'VoiceExtensionId':_0x3428b5['id']},{'type':_0xa740('0x11'),'app':_0xa740('0x9'),'appdata':'outboundrouteid='+_0x3428b5['id'],'context':_0x3428b5[_0xa740('0x6')],'exten':_0x3428b5[_0xa740('0x7')],'priority':_0x19f510++,'VoiceExtensionId':_0x3428b5['id']}];if(_0x3428b5['hasOwnProperty'](_0xa740('0x1c'))&&_0x3428b5[_0xa740('0x1c')]!=='none'){_0x3d63a5[_0xa740('0x1d')]({'type':_0xa740('0x11'),'app':_0xa740('0x9'),'appdata':_0xa740('0x1e'),'context':_0x3428b5[_0xa740('0x6')],'exten':_0x3428b5['exten'],'priority':_0x19f510++,'VoiceExtensionId':_0x3428b5['id']},{'type':_0xa740('0x11'),'app':_0xa740('0x9'),'appdata':_0xa740('0x1f')+_0x3428b5[_0xa740('0x1c')]||_0xa740('0x20'),'context':_0x3428b5[_0xa740('0x6')],'exten':_0x3428b5[_0xa740('0x7')],'priority':_0x19f510++,'VoiceExtensionId':_0x3428b5['id']});}return _0x3d63a5;}function _0x233864(_0x54a079,_0x4acc3d){var _0x262c68=[{'name':_0xa740('0x21'),'param':0x0},{'name':_0xa740('0x22'),'param':0x1},{'name':_0xa740('0x23'),'param':0x2},{'name':_0xa740('0x24'),'param':0x3}];var _0x1983e7={};var _0x2c293d=_0x4acc3d[_0xa740('0x25')](',');var _0x31147a=[];for(var _0x19cb15=0x0;_0x19cb15<_0x262c68[_0xa740('0x26')];_0x19cb15++){switch(_0x262c68[_0x19cb15]['name']){case _0xa740('0x21'):_0x1983e7['trunk']=_0x2c293d[_0x262c68[_0x19cb15][_0xa740('0x27')]]['split']('/')[0x1];_0x1983e7[_0xa740('0x28')]=_0x2c293d[_0x262c68[_0x19cb15][_0xa740('0x27')]][_0xa740('0x25')]('/')[0x2];_0x1983e7[_0xa740('0x29')]=_0x1983e7[_0xa740('0x28')]?_0x1983e7[_0xa740('0x28')][_0xa740('0x25')]('$')[0x0]:undefined;_0x1983e7['phone']=_0x54a079[_0xa740('0x15')]?(_0x1983e7[_0xa740('0x29')]||'')+_0xa740('0x16')+_0x54a079[_0xa740('0x15')]+'}':(_0x1983e7[_0xa740('0x29')]||'')+_0xa740('0x17');_0x31147a[_0x262c68[_0x19cb15]['param']]=[_0xa740('0x2a'),_0x1983e7['trunk'],_0x1983e7[_0xa740('0x28')]]['join']('/');break;case _0xa740('0x23'):_0x1983e7['options']=_0x2c293d[_0x262c68[_0x19cb15][_0xa740('0x27')]];if(_0x54a079[_0xa740('0x1c')]!==_0xa740('0x2b')){if(_0x1983e7[_0xa740('0x23')]['indexOf']('U(xcally-mixmonitor-context)')<0x0){_0x1983e7['options']+='U(xcally-mixmonitor-context)';}}else{_0x1983e7[_0xa740('0x23')]=_0x1983e7[_0xa740('0x23')][_0xa740('0x2c')]('U(xcally-mixmonitor-context)','');}_0x31147a[_0x262c68[_0x19cb15][_0xa740('0x27')]]=_0x1983e7[_0xa740('0x23')];break;default:_0x31147a[_0x262c68[_0x19cb15][_0xa740('0x27')]]=_0x2c293d[_0x262c68[_0x19cb15][_0xa740('0x27')]];}}return _0x31147a[_0xa740('0x2d')](',');}function _0x15aeec(_0x556838,_0x4a8a3f,_0x175106){return new Promise(function(_0x198b10,_0x4da2cf){var _0x311364=[];if(_[_0xa740('0x2e')](_0x4a8a3f))return _0x198b10(_0x311364);_0x216cea[_0xa740('0x2f')][_0xa740('0x30')]({'attributes':['id','interval','IntervalId'],'raw':!![]})['then'](function(_0x452ffb){for(var _0x231832=0x0,_0x2809b0=0x0;_0x231832<_0x4a8a3f['length'];_0x231832++,_0x2809b0=0x0){var _0x494e08=_0x4a8a3f[_0x231832];var _0x2c1d33=[];var _0x46dbee=[];delete _0x494e08['id'];if(_0x494e08[_0xa740('0x31')]!==_0xa740('0x32')){_0x494e08[_0xa740('0x33')]=[_0x494e08[_0xa740('0x31')]];}else{_0x494e08[_0xa740('0x33')]=_0x494e08[_0xa740('0x34')]?_[_0xa740('0x35')](_[_0xa740('0x36')](_0x452ffb,{'IntervalId':_0x494e08['IntervalId']}),'interval'):[];}_0x494e08[_0xa740('0x6')]=_0x556838[_0xa740('0x6')];_0x494e08[_0xa740('0x7')]=_0x556838['exten'];if(_0x494e08[_0xa740('0x5')])_0x494e08['type']=_0x494e08[_0xa740('0x5')]['toLowerCase']();if(_0x556838[_0xa740('0x5')]===_0xa740('0x11')){if(_0x494e08[_0xa740('0x37')](_0xa740('0x38'))&&_0x494e08[_0xa740('0x38')]&&_0x494e08['tag']!=='--'){_0x2c1d33[_0xa740('0x1d')]({'type':_0x494e08['type'][_0xa740('0x39')](),'app':_0xa740('0x9'),'appdata':_0xa740('0x3a')+_0x494e08[_0xa740('0x38')],'context':_0x556838[_0xa740('0x6')],'exten':_0x556838[_0xa740('0x7')],'priority':_0x494e08['intervals']['length']+_0x175106+_0x2809b0++,'VoiceExtensionId':_0x556838['id']});}_0x2c1d33[_0xa740('0x1d')]({'type':_0x494e08[_0xa740('0x5')][_0xa740('0x39')](),'app':_0xa740('0x3b'),'appdata':_0xa740('0x3c')+(_0x494e08[_0xa740('0x3d')]?_0xa740('0x3e')+_0x494e08[_0xa740('0x3d')]+')':_0xa740('0x3f')),'context':_0x556838['context'],'exten':_0x556838[_0xa740('0x7')],'priority':_0x494e08[_0xa740('0x33')][_0xa740('0x26')]+_0x175106+_0x2809b0++,'VoiceExtensionId':_0x556838['id']});}else{if(_0x494e08[_0xa740('0x37')](_0xa740('0x40'))){if(['queue',_0xa740('0x41')][_0xa740('0x42')](_0x494e08[_0xa740('0x43')][_0xa740('0x39')]())&&_0x494e08[_0xa740('0x44')]!==_0xa740('0x45')){if(_0x494e08[_0xa740('0x40')]){_0x2c1d33['push']({'type':_0x494e08['type'][_0xa740('0x39')](),'app':'ExecIf','appdata':_0xa740('0x46'),'context':_0x556838[_0xa740('0x6')],'exten':_0x556838[_0xa740('0x7')],'priority':_0x494e08[_0xa740('0x33')][_0xa740('0x26')]+_0x175106+_0x2809b0++,'VoiceExtensionId':_0x556838['id']});_0x2c1d33[_0xa740('0x1d')]({'type':_0x494e08['type']['toLowerCase'](),'app':_0xa740('0x9'),'appdata':_0xa740('0x47'),'context':_0x556838[_0xa740('0x6')],'exten':_0x556838[_0xa740('0x7')],'priority':_0x494e08[_0xa740('0x33')]['length']+_0x175106+_0x2809b0++,'VoiceExtensionId':_0x556838['id']});}else{_0x2c1d33['push']({'type':_0x494e08[_0xa740('0x5')][_0xa740('0x39')](),'app':_0xa740('0x3b'),'appdata':_0xa740('0x48'),'context':_0x556838[_0xa740('0x6')],'exten':_0x556838[_0xa740('0x7')],'priority':_0x494e08['intervals'][_0xa740('0x26')]+_0x175106+_0x2809b0++,'VoiceExtensionId':_0x556838['id']});_0x2c1d33[_0xa740('0x1d')]({'type':_0x494e08[_0xa740('0x5')]['toLowerCase'](),'app':_0xa740('0x9'),'appdata':_0xa740('0x49'),'context':_0x556838['context'],'exten':_0x556838[_0xa740('0x7')],'priority':_0x494e08[_0xa740('0x33')][_0xa740('0x26')]+_0x175106+_0x2809b0++,'VoiceExtensionId':_0x556838['id']});}}}}for(var _0x58eb75=0x0;_0x58eb75<_0x494e08[_0xa740('0x33')][_0xa740('0x26')];_0x58eb75++){var _0x3d08a2=_0x175106+_0x494e08[_0xa740('0x33')][_0xa740('0x26')];var _0x5239cc=_0x58eb75===_0x494e08[_0xa740('0x33')][_0xa740('0x26')]-0x1?_0x175106+_0x2c1d33['length']+_0x46dbee[_0xa740('0x26')]+0x2:_0x175106+_0x58eb75+0x1;_0x2c1d33[_0xa740('0x4a')](_0x58eb75,0x0,{'type':_0x556838[_0xa740('0x5')],'app':'GotoIfTime','appdata':_0x494e08['intervals'][_0x58eb75]+'?'+_0x556838['context']+_0xa740('0x4b')+_0x3d08a2+':'+_0x556838['context']+_0xa740('0x4b')+_0x5239cc,'exten':_0x556838[_0xa740('0x7')],'context':_0x556838['context'],'priority':_0x175106+_0x58eb75,'VoiceExtensionId':_0x556838['id']});}if(_0x494e08['appType']===_0xa740('0x4c'))_0x494e08[_0xa740('0x4d')]=_0x233864(_0x556838,_0x494e08[_0xa740('0x4d')]);_0x494e08[_0xa740('0x4e')]=_0x2c1d33[_0xa740('0x26')]?_['last'](_0x2c1d33)[_0xa740('0x4e')]+0x1:_0x175106;_0x311364=_['concat'](_0x311364,_0x2c1d33,[_0x494e08],_0x46dbee);_0x175106=_[_0xa740('0x4f')](_0x311364)['priority']+0x1;}return _0x198b10(_0x311364);})[_0xa740('0x50')](function(_0x5df99d){_0x4da2cf(_0x5df99d);});});}return _0x2e2eea[_0xa740('0x51')](_0xa740('0x52'),attributes,{'tableName':'voice_extensions','paranoid':![],'indexes':[],'timestamps':!![],'instanceMethods':{'createRouting':function(_0x3ef091){var _0x1f33d2=this[_0xa740('0x53')]({'plain':!![]});var _0x427605=_0x1f33d2[_0xa740('0x5')]==='outbound'?_0x455d33(_0x1f33d2):_0x23caee(_0x1f33d2);return _0x15aeec(_0x1f33d2,_0x3ef091,_[_0xa740('0x4f')](_0x427605)[_0xa740('0x4e')]+0x1)[_0xa740('0x54')](function(_0x4b4862){var _0x5f0671=_[_0xa740('0x55')](_0x427605,_0x4b4862);_0x5f0671[_0xa740('0x1d')]({'type':_0x1f33d2['type'],'app':'Hangup','exten':_0x1f33d2[_0xa740('0x7')],'context':_0x1f33d2[_0xa740('0x6')],'priority':_['last'](_0x5f0671)[_0xa740('0x4e')]+0x1,'VoiceExtensionId':_0x1f33d2['id']});return _0x5f0671;});}}});};
\ No newline at end of file
index 9b4fcc5..2c36fa2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0x78d3=['ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','redis','socket.io-emitter','./voiceExtension.socket','register','request','request\x20sent','debug','stringify','error','code','VoiceExtension,\x20%s,\x20%s','message','info','result','catch','GetVoiceExtension','VoiceExtension','findAll','options','raw','where','limit','include','map','model','attributes','lodash','util','moment','bluebird','randomstring'];(function(_0x2559b2,_0x38d502){var _0x54b0e4=function(_0x355edc){while(--_0x355edc){_0x2559b2['push'](_0x2559b2['shift']());}};_0x54b0e4(++_0x38d502);}(_0x78d3,0x73));var _0x378d=function(_0x59888f,_0x209cf8){_0x59888f=_0x59888f-0x0;var _0x3d690c=_0x78d3[_0x59888f];return _0x3d690c;};'use strict';var _=require(_0x378d('0x0'));var util=require(_0x378d('0x1'));var moment=require(_0x378d('0x2'));var BPromise=require(_0x378d('0x3'));var rs=require(_0x378d('0x4'));var fs=require('fs');var Redis=require(_0x378d('0x5'));var db=require(_0x378d('0x6'))['db'];var utils=require(_0x378d('0x7'));var logger=require(_0x378d('0x8'))(_0x378d('0x9'));var config=require(_0x378d('0xa'));var jayson=require(_0x378d('0xb'));var client=jayson[_0x378d('0xc')][_0x378d('0xd')]({'port':0x232a});config['redis']=_['defaults'](config[_0x378d('0xe')],{'host':'localhost','port':0x18eb});var socket=require(_0x378d('0xf'))(new Redis(config[_0x378d('0xe')]));require(_0x378d('0x10'))[_0x378d('0x11')](socket);function respondWithRpcPromise(_0x43da5f,_0x12d960,_0x53a4b6){return new BPromise(function(_0x1c4d11,_0x21bf21){return client[_0x378d('0x12')](_0x43da5f,_0x53a4b6)['then'](function(_0x378254){logger['info']('VoiceExtension,\x20%s,\x20%s',_0x12d960,_0x378d('0x13'));logger[_0x378d('0x14')]('VoiceExtension,\x20%s,\x20%s,\x20%s',_0x12d960,_0x378d('0x13'),JSON[_0x378d('0x15')](_0x378254));if(_0x378254[_0x378d('0x16')]){if(_0x378254['error'][_0x378d('0x17')]===0x1f4){logger['error'](_0x378d('0x18'),_0x12d960,_0x378254[_0x378d('0x16')][_0x378d('0x19')]);return _0x21bf21(_0x378254[_0x378d('0x16')][_0x378d('0x19')]);}logger['error'](_0x378d('0x18'),_0x12d960,_0x378254['error'][_0x378d('0x19')]);return _0x1c4d11(_0x378254[_0x378d('0x16')][_0x378d('0x19')]);}else{logger[_0x378d('0x1a')](_0x378d('0x18'),_0x12d960,'request\x20sent');_0x1c4d11(_0x378254[_0x378d('0x1b')]['message']);}})[_0x378d('0x1c')](function(_0x4067d9){logger[_0x378d('0x16')](_0x378d('0x18'),_0x12d960,_0x4067d9);_0x21bf21(_0x4067d9);});});}exports[_0x378d('0x1d')]=function(_0x11584b){var _0x1c9244=this;return new Promise(function(_0x521d40,_0x5a936c){return db[_0x378d('0x1e')][_0x378d('0x1f')]({'raw':_0x11584b['options']?_0x11584b[_0x378d('0x20')][_0x378d('0x21')]===undefined?!![]:![]:!![],'where':_0x11584b[_0x378d('0x20')]?_0x11584b[_0x378d('0x20')][_0x378d('0x22')]||null:null,'attributes':_0x11584b['options']?_0x11584b[_0x378d('0x20')]['attributes']||null:null,'limit':_0x11584b[_0x378d('0x20')]?_0x11584b[_0x378d('0x20')][_0x378d('0x23')]||null:null,'include':_0x11584b['options']?_0x11584b[_0x378d('0x20')][_0x378d('0x24')]?_[_0x378d('0x25')](_0x11584b['options'][_0x378d('0x24')],function(_0x22fee7){return{'model':db[_0x22fee7[_0x378d('0x26')]],'as':_0x22fee7['as'],'attributes':_0x22fee7[_0x378d('0x27')],'include':_0x22fee7[_0x378d('0x24')]?_[_0x378d('0x25')](_0x22fee7[_0x378d('0x24')],function(_0x34ffa7){return{'model':db[_0x34ffa7['model']],'as':_0x34ffa7['as'],'attributes':_0x34ffa7['attributes'],'include':_0x34ffa7[_0x378d('0x24')]?_['map'](_0x34ffa7[_0x378d('0x24')],function(_0x292b73){return{'model':db[_0x292b73[_0x378d('0x26')]],'as':_0x292b73['as'],'attributes':_0x292b73[_0x378d('0x27')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x59945b){logger[_0x378d('0x1a')]('GetVoiceExtension',_0x11584b);logger['debug']('GetVoiceExtension',_0x11584b,JSON[_0x378d('0x15')](_0x59945b));_0x521d40(_0x59945b);})['catch'](function(_0x4d1de5){logger[_0x378d('0x16')]('GetVoiceExtension',_0x4d1de5[_0x378d('0x19')],_0x11584b);_0x5a936c(_0x1c9244[_0x378d('0x16')](0x1f4,_0x4d1de5[_0x378d('0x19')]));});});};
\ No newline at end of file
index e3d1ddb..78555b6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0x7a54=['remove','emit','removeListener','register','length','voiceExtension:','./voiceExtension.events','save'];(function(_0x1e1153,_0x3f4fe2){var _0x3177de=function(_0x34d08d){while(--_0x34d08d){_0x1e1153['push'](_0x1e1153['shift']());}};_0x3177de(++_0x3f4fe2);}(_0x7a54,0x106));var _0x47a5=function(_0x41623d,_0x41dd9a){_0x41623d=_0x41623d-0x0;var _0x5723c3=_0x7a54[_0x41623d];return _0x5723c3;};'use strict';var VoiceExtensionEvents=require(_0x47a5('0x0'));var events=[_0x47a5('0x1'),_0x47a5('0x2'),'update'];function createListener(_0x1d33e,_0x4086cd){return function(_0x4880bf){_0x4086cd[_0x47a5('0x3')](_0x1d33e,_0x4880bf);};}function removeListener(_0x11bf85,_0x2a1a7e){return function(){VoiceExtensionEvents[_0x47a5('0x4')](_0x11bf85,_0x2a1a7e);};}exports[_0x47a5('0x5')]=function(_0x545a97){for(var _0x3d5629=0x0,_0x59199c=events[_0x47a5('0x6')];_0x3d5629<_0x59199c;_0x3d5629++){var _0x30e405=events[_0x3d5629];var _0x506eda=createListener(_0x47a5('0x7')+_0x30e405,_0x545a97);VoiceExtensionEvents['on'](_0x30e405,_0x506eda);}};
\ No newline at end of file
index 486a97b..10c4e24 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0xb016=['get','isAuthenticated','index','show','getMessages','post','create','update','delete','multer','util','express','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment'];(function(_0x1a1dd7,_0x9e586a){var _0x5e5ac6=function(_0x6b7c37){while(--_0x6b7c37){_0x1a1dd7['push'](_0x1a1dd7['shift']());}};_0x5e5ac6(++_0x9e586a);}(_0xb016,0x159));var _0x6b01=function(_0x3d9bf6,_0x2a9d03){_0x3d9bf6=_0x3d9bf6-0x0;var _0x17bb59=_0xb016[_0x3d9bf6];return _0x17bb59;};'use strict';var multer=require(_0x6b01('0x0'));var util=require(_0x6b01('0x1'));var path=require('path');var timeout=require('connect-timeout');var express=require(_0x6b01('0x2'));var router=express['Router']();var fs_extra=require(_0x6b01('0x3'));var auth=require(_0x6b01('0x4'));var interaction=require(_0x6b01('0x5'));var config=require(_0x6b01('0x6'));var controller=require('./voiceMail.controller');router[_0x6b01('0x7')]('/',auth[_0x6b01('0x8')](),controller[_0x6b01('0x9')]);router['get']('/:id',auth[_0x6b01('0x8')](),controller[_0x6b01('0xa')]);router['get']('/:id/messages',auth[_0x6b01('0x8')](),controller[_0x6b01('0xb')]);router[_0x6b01('0xc')]('/',auth[_0x6b01('0x8')](),controller[_0x6b01('0xd')]);router['put']('/:id',auth[_0x6b01('0x8')](),controller[_0x6b01('0xe')]);router[_0x6b01('0xf')]('/:id',auth[_0x6b01('0x8')](),controller['destroy']);module['exports']=router;
\ No newline at end of file
index 596e8cd..42e0d1e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0xc7be=['TIMESTAMP','INTEGER','VIRTUAL','getDataValue','fullname','\x20-\x20','mailbox','sequelize','exports','STRING','contest_mailbox','setDataValue','trim','central','ENUM','yes','TINYINT(4)'];(function(_0x4884ba,_0x476151){var _0x53bef4=function(_0x451d39){while(--_0x451d39){_0x4884ba['push'](_0x4884ba['shift']());}};_0x53bef4(++_0x476151);}(_0xc7be,0x7e));var _0xec7b=function(_0x1417e3,_0x25ff15){_0x1417e3=_0x1417e3-0x0;var _0xf3b83f=_0xc7be[_0x1417e3];return _0xf3b83f;};'use strict';var Sequelize=require(_0xec7b('0x0'));module[_0xec7b('0x1')]={'customer_id':{'type':Sequelize[_0xec7b('0x2')]},'context':{'type':Sequelize[_0xec7b('0x2')],'defaultValue':'from-voicemail','unique':'contest_mailbox'},'mailbox':{'type':Sequelize[_0xec7b('0x2')],'defaultValue':'','allowNull':![],'unique':_0xec7b('0x3')},'password':{'type':Sequelize[_0xec7b('0x2')]},'fullname':{'type':Sequelize[_0xec7b('0x2')]},'email':{'type':Sequelize[_0xec7b('0x2')],'validate':{'isEmail':!![]},'set':function(_0x2e44d7){this[_0xec7b('0x4')]('email',typeof _0x2e44d7==='string'&&_0x2e44d7[_0xec7b('0x5')]()?_0x2e44d7[_0xec7b('0x5')]():null);}},'pager':{'type':Sequelize[_0xec7b('0x2')]},'tz':{'type':Sequelize[_0xec7b('0x2')],'defaultValue':_0xec7b('0x6')},'attach':{'type':Sequelize[_0xec7b('0x7')]('yes','no'),'defaultValue':'yes','allowNull':![]},'saycid':{'type':Sequelize['ENUM'](_0xec7b('0x8'),'no'),'defaultValue':_0xec7b('0x8'),'allowNull':![]},'dialout':{'type':Sequelize[_0xec7b('0x2')]},'callback':{'type':Sequelize['STRING']},'review':{'type':Sequelize[_0xec7b('0x7')](_0xec7b('0x8'),'no'),'defaultValue':'no','allowNull':![]},'operator':{'type':Sequelize[_0xec7b('0x7')](_0xec7b('0x8'),'no'),'defaultValue':'no','allowNull':![]},'envelope':{'type':Sequelize[_0xec7b('0x7')](_0xec7b('0x8'),'no'),'defaultValue':'no','allowNull':![]},'sayduration':{'type':Sequelize['ENUM']('yes','no'),'defaultValue':'no','allowNull':![]},'saydurationm':{'type':_0xec7b('0x9'),'defaultValue':0x1,'allowNull':![]},'sendvoicemail':{'type':Sequelize[_0xec7b('0x7')](_0xec7b('0x8'),'no'),'defaultValue':'no','allowNull':![]},'delete':{'type':Sequelize['ENUM'](_0xec7b('0x8'),'no'),'defaultValue':'no','allowNull':![]},'nextaftercmd':{'type':Sequelize[_0xec7b('0x7')](_0xec7b('0x8'),'no'),'defaultValue':_0xec7b('0x8'),'allowNull':![]},'forcename':{'type':Sequelize[_0xec7b('0x7')](_0xec7b('0x8'),'no'),'defaultValue':'no','allowNull':![]},'forcegreetings':{'type':Sequelize[_0xec7b('0x7')](_0xec7b('0x8'),'no'),'defaultValue':'no','allowNull':![]},'hidefromdir':{'type':Sequelize['ENUM']('yes','no'),'defaultValue':_0xec7b('0x8'),'allowNull':![]},'stamp':{'type':_0xec7b('0xa')},'emailsubject':{'type':Sequelize[_0xec7b('0x2')]},'emailbody':{'type':Sequelize['STRING']},'maxsecs':{'type':Sequelize['INTEGER'](0xff),'defaultValue':0xb4,'allowNull':![]},'maxmsg':{'type':Sequelize[_0xec7b('0xb')](0xff),'defaultValue':0x64,'allowNull':![]},'name':{'type':Sequelize[_0xec7b('0xc')],'get':function(){return this[_0xec7b('0xd')](_0xec7b('0xe'))+_0xec7b('0xf')+this[_0xec7b('0xd')](_0xec7b('0x10'));}}};
\ No newline at end of file
index 5e1c9b7..1765e8c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0x5423=['offset','undefined','count','limit','set','Content-Range','reject','destroy','get','Voicemails','UserProfileResource','then','error','stack','name','send','map','VoiceMail','rawAttributes','fieldName','type','key','query','model','attributes','fields','nolimit','order','sort','where','filters','filter','merge','VIRTUAL','includeAll','include','findAll','catch','show','keys','intersection','length','options','find','create','body','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','UserProfileSection','update','params','getMessages','findOne','VoiceMailMessage','pick','findAndCountAll','eml-format','rimraf','fast-json-patch','request-promise','bluebird','mustache','util','path','to-csv','ejs','fs-extra','lodash','squel','desk.js','papaparse','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','json'];(function(_0x112785,_0x1ecaf3){var _0x584596=function(_0x38a29c){while(--_0x38a29c){_0x112785['push'](_0x112785['shift']());}};_0x584596(++_0x1ecaf3);}(_0x5423,0xe3));var _0x3542=function(_0x46e3fc,_0x34ae25){_0x46e3fc=_0x46e3fc-0x0;var _0x1b0242=_0x5423[_0x46e3fc];return _0x1b0242;};'use strict';var emlformat=require(_0x3542('0x0'));var rimraf=require(_0x3542('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0x3542('0x2'));var rp=require(_0x3542('0x3'));var moment=require('moment');var BPromise=require(_0x3542('0x4'));var Mustache=require(_0x3542('0x5'));var util=require(_0x3542('0x6'));var path=require(_0x3542('0x7'));var sox=require('sox');var csv=require(_0x3542('0x8'));var ejs=require(_0x3542('0x9'));var fs=require('fs');var fs_extra=require(_0x3542('0xa'));var _=require(_0x3542('0xb'));var squel=require(_0x3542('0xc'));var crypto=require('crypto');var jsforce=require('jsforce');var deskjs=require(_0x3542('0xd'));var toCsv=require(_0x3542('0x8'));var querystring=require('querystring');var Papa=require(_0x3542('0xe'));var Redis=require(_0x3542('0xf'));var authService=require('../../components/auth/service');var qs=require(_0x3542('0x10'));var as=require(_0x3542('0x11'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x3542('0x12'))(_0x3542('0x13'));var utils=require(_0x3542('0x14'));var config=require(_0x3542('0x15'));var licenseUtil=require(_0x3542('0x16'));var db=require(_0x3542('0x17'))['db'];function respondWithStatusCode(_0x1cf710,_0x43e977){_0x43e977=_0x43e977||0xcc;return function(_0x4ee86){if(_0x4ee86){return _0x1cf710[_0x3542('0x18')](_0x43e977);}return _0x1cf710[_0x3542('0x19')](_0x43e977)[_0x3542('0x1a')]();};}function respondWithResult(_0x15863d,_0x4bac5b){_0x4bac5b=_0x4bac5b||0xc8;return function(_0x14fe57){if(_0x14fe57){return _0x15863d['status'](_0x4bac5b)[_0x3542('0x1b')](_0x14fe57);}};}function respondWithFilteredResult(_0x13fe0b,_0xc33d42){return function(_0x546fbd){if(_0x546fbd){var _0x270312=typeof _0xc33d42[_0x3542('0x1c')]===_0x3542('0x1d')&&typeof _0xc33d42['limit']===_0x3542('0x1d');var _0x23b0de=_0x546fbd[_0x3542('0x1e')];var _0x3d5199=_0x270312?0x0:_0xc33d42['offset'];var _0x32df3f=_0x270312?_0x546fbd['count']:_0xc33d42[_0x3542('0x1c')]+_0xc33d42[_0x3542('0x1f')];var _0x4d93bc;if(_0x32df3f>=_0x23b0de){_0x32df3f=_0x23b0de;_0x4d93bc=0xc8;}else{_0x4d93bc=0xce;}_0x13fe0b[_0x3542('0x19')](_0x4d93bc);return _0x13fe0b[_0x3542('0x20')](_0x3542('0x21'),_0x3d5199+'-'+_0x32df3f+'/'+_0x23b0de)[_0x3542('0x1b')](_0x546fbd);}return null;};}function patchUpdates(_0x212950){return function(_0x4a7695){try{jsonpatch['apply'](_0x4a7695,_0x212950,!![]);}catch(_0x4c58f1){return BPromise[_0x3542('0x22')](_0x4c58f1);}return _0x4a7695['save']();};}function saveUpdates(_0x1d5488,_0x551645){return function(_0x1d5f1e){if(_0x1d5f1e){return _0x1d5f1e['update'](_0x1d5488)['then'](function(_0x3eacd0){return _0x3eacd0;});}return null;};}function removeEntity(_0xe3f983,_0x5ae097){return function(_0x5d05b2){if(_0x5d05b2){return _0x5d05b2[_0x3542('0x23')]()['then'](function(){var _0x160caa=_0x5d05b2[_0x3542('0x24')]({'plain':!![]});var _0x1e0723=_0x3542('0x25');return db[_0x3542('0x26')][_0x3542('0x23')]({'where':{'type':_0x1e0723,'resourceId':_0x160caa['id']}})[_0x3542('0x27')](function(){return _0x5d05b2;});})[_0x3542('0x27')](function(){_0xe3f983[_0x3542('0x19')](0xcc)[_0x3542('0x1a')]();});}};}function handleEntityNotFound(_0xfdfe62,_0x4462c4){return function(_0x220021){if(!_0x220021){_0xfdfe62[_0x3542('0x18')](0x194);}return _0x220021;};}function handleError(_0x1cab35,_0x39050a){_0x39050a=_0x39050a||0x1f4;return function(_0x303412){logger[_0x3542('0x28')](_0x303412[_0x3542('0x29')]);if(_0x303412['name']){delete _0x303412[_0x3542('0x2a')];}_0x1cab35[_0x3542('0x19')](_0x39050a)[_0x3542('0x2b')](_0x303412);};}exports['index']=function(_0x402c97,_0xc6f23b){var _0x2e883a={},_0x30b5e8={},_0x5c882f={'count':0x0,'rows':[]};var _0x5a274b=_[_0x3542('0x2c')](db[_0x3542('0x2d')][_0x3542('0x2e')],function(_0x44e8f7){return{'name':_0x44e8f7[_0x3542('0x2f')],'type':_0x44e8f7[_0x3542('0x30')][_0x3542('0x31')]};});_0x30b5e8['model']=_['map'](_0x5a274b,_0x3542('0x2a'));_0x30b5e8['query']=_['keys'](_0x402c97[_0x3542('0x32')]);_0x30b5e8['filters']=_['intersection'](_0x30b5e8[_0x3542('0x33')],_0x30b5e8[_0x3542('0x32')]);_0x2e883a[_0x3542('0x34')]=_['intersection'](_0x30b5e8[_0x3542('0x33')],qs['fields'](_0x402c97[_0x3542('0x32')][_0x3542('0x35')]));_0x2e883a['attributes']=_0x2e883a[_0x3542('0x34')]['length']?_0x2e883a[_0x3542('0x34')]:_0x30b5e8[_0x3542('0x33')];if(!_0x402c97[_0x3542('0x32')]['hasOwnProperty'](_0x3542('0x36'))){_0x2e883a['limit']=qs[_0x3542('0x1f')](_0x402c97[_0x3542('0x32')][_0x3542('0x1f')]);_0x2e883a[_0x3542('0x1c')]=qs[_0x3542('0x1c')](_0x402c97[_0x3542('0x32')][_0x3542('0x1c')]);}_0x2e883a[_0x3542('0x37')]=qs[_0x3542('0x38')](_0x402c97[_0x3542('0x32')][_0x3542('0x38')]);_0x2e883a[_0x3542('0x39')]=qs[_0x3542('0x3a')](_['pick'](_0x402c97[_0x3542('0x32')],_0x30b5e8['filters']),_0x5a274b);if(_0x402c97['query'][_0x3542('0x3b')]){_0x2e883a[_0x3542('0x39')]=_[_0x3542('0x3c')](_0x2e883a[_0x3542('0x39')],{'$or':_[_0x3542('0x2c')](_0x5a274b,function(_0x21aec3){if(_0x21aec3[_0x3542('0x30')]!==_0x3542('0x3d')){var _0x53eac6={};_0x53eac6[_0x21aec3[_0x3542('0x2a')]]={'$like':'%'+_0x402c97['query'][_0x3542('0x3b')]+'%'};return _0x53eac6;}})});}_0x2e883a=_[_0x3542('0x3c')]({},_0x2e883a,_0x402c97['options']);var _0x371aba={'where':_0x2e883a[_0x3542('0x39')]};return db['VoiceMail'][_0x3542('0x1e')](_0x371aba)[_0x3542('0x27')](function(_0x5e1b29){_0x5c882f[_0x3542('0x1e')]=_0x5e1b29;if(_0x402c97[_0x3542('0x32')][_0x3542('0x3e')]){_0x2e883a[_0x3542('0x3f')]=[{'all':!![]}];}return db[_0x3542('0x2d')][_0x3542('0x40')](_0x2e883a);})[_0x3542('0x27')](function(_0x4bf45a){_0x5c882f['rows']=_0x4bf45a;return _0x5c882f;})[_0x3542('0x27')](respondWithFilteredResult(_0xc6f23b,_0x2e883a))[_0x3542('0x41')](handleError(_0xc6f23b,null));};exports[_0x3542('0x42')]=function(_0xdeebd3,_0x170749){var _0x53a024={'raw':!![],'where':{'id':_0xdeebd3['params']['id']}},_0x3e6a49={};_0x3e6a49[_0x3542('0x33')]=_[_0x3542('0x43')](db[_0x3542('0x2d')]['rawAttributes']);_0x3e6a49[_0x3542('0x32')]=_[_0x3542('0x43')](_0xdeebd3['query']);_0x3e6a49[_0x3542('0x3a')]=_[_0x3542('0x44')](_0x3e6a49[_0x3542('0x33')],_0x3e6a49[_0x3542('0x32')]);_0x53a024[_0x3542('0x34')]=_[_0x3542('0x44')](_0x3e6a49[_0x3542('0x33')],qs[_0x3542('0x35')](_0xdeebd3['query']['fields']));_0x53a024['attributes']=_0x53a024[_0x3542('0x34')][_0x3542('0x45')]?_0x53a024[_0x3542('0x34')]:_0x3e6a49[_0x3542('0x33')];if(_0xdeebd3[_0x3542('0x32')][_0x3542('0x3e')]){_0x53a024[_0x3542('0x3f')]=[{'all':!![]}];}_0x53a024=_['merge']({},_0x53a024,_0xdeebd3[_0x3542('0x46')]);return db[_0x3542('0x2d')][_0x3542('0x47')](_0x53a024)[_0x3542('0x27')](handleEntityNotFound(_0x170749,null))['then'](respondWithResult(_0x170749,null))[_0x3542('0x41')](handleError(_0x170749,null));};exports[_0x3542('0x48')]=function(_0x55b43a,_0x528f8c){return db[_0x3542('0x2d')][_0x3542('0x48')](_0x55b43a[_0x3542('0x49')],{})[_0x3542('0x27')](function(_0x244f3a){var _0x1a2ecf=_0x55b43a[_0x3542('0x4a')]['get']({'plain':!![]});if(!_0x1a2ecf)throw new Error(_0x3542('0x4b'));if(_0x1a2ecf[_0x3542('0x4c')]===_0x3542('0x4a')){var _0x392c6e=_0x244f3a[_0x3542('0x24')]({'plain':!![]});var _0x28be34=_0x3542('0x25');return db[_0x3542('0x4d')][_0x3542('0x47')]({'where':{'name':_0x28be34,'userProfileId':_0x1a2ecf['userProfileId']},'raw':!![]})['then'](function(_0x15af28){if(_0x15af28&&_0x15af28['autoAssociation']===0x0){return db['UserProfileResource']['create']({'name':_0x392c6e[_0x3542('0x2a')],'resourceId':_0x392c6e['id'],'type':_0x15af28[_0x3542('0x2a')],'sectionId':_0x15af28['id']},{})[_0x3542('0x27')](function(){return _0x244f3a;});}else{return _0x244f3a;}})['catch'](function(_0x2db495){logger[_0x3542('0x28')]('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x2db495);throw _0x2db495;});}return _0x244f3a;})[_0x3542('0x27')](respondWithResult(_0x528f8c,0xc9))[_0x3542('0x41')](handleError(_0x528f8c,null));};exports[_0x3542('0x4e')]=function(_0x196c59,_0x179249){if(_0x196c59['body']['id']){delete _0x196c59[_0x3542('0x49')]['id'];}return db[_0x3542('0x2d')][_0x3542('0x47')]({'where':{'id':_0x196c59[_0x3542('0x4f')]['id']}})[_0x3542('0x27')](handleEntityNotFound(_0x179249,null))['then'](saveUpdates(_0x196c59['body'],null))[_0x3542('0x27')](respondWithResult(_0x179249,null))[_0x3542('0x41')](handleError(_0x179249,null));};exports[_0x3542('0x23')]=function(_0x5de994,_0x1dfac3){return db[_0x3542('0x2d')][_0x3542('0x47')]({'where':{'id':_0x5de994[_0x3542('0x4f')]['id']}})[_0x3542('0x27')](handleEntityNotFound(_0x1dfac3,null))['then'](removeEntity(_0x1dfac3,null))['catch'](handleError(_0x1dfac3,null));};exports[_0x3542('0x50')]=function(_0x4cd6fd,_0x1fd8c8,_0x3610b7){return db['VoiceMail'][_0x3542('0x51')]({'where':{'id':_0x4cd6fd[_0x3542('0x4f')]['id']}})[_0x3542('0x27')](handleEntityNotFound(_0x1fd8c8,null))[_0x3542('0x27')](function(_0x60b9c0){var _0x52a75b;var _0x4cb73f={},_0x271dd0={};_0x271dd0['model']=_[_0x3542('0x43')](db[_0x3542('0x52')][_0x3542('0x2e')]);_0x271dd0['query']=_[_0x3542('0x43')](_0x4cd6fd[_0x3542('0x32')]);_0x271dd0[_0x3542('0x3a')]=_[_0x3542('0x44')](_0x271dd0[_0x3542('0x33')],_0x271dd0[_0x3542('0x32')]);_0x4cb73f['attributes']=_[_0x3542('0x44')](_0x271dd0[_0x3542('0x33')],qs[_0x3542('0x35')](_0x4cd6fd[_0x3542('0x32')][_0x3542('0x35')]));_0x4cb73f[_0x3542('0x34')]=_0x4cb73f['attributes'][_0x3542('0x45')]?_0x4cb73f[_0x3542('0x34')]:_0x271dd0[_0x3542('0x33')];if(!_0x4cd6fd[_0x3542('0x32')]['hasOwnProperty'](_0x3542('0x36'))){_0x4cb73f[_0x3542('0x1f')]=qs['limit'](_0x4cd6fd['query'][_0x3542('0x1f')]);_0x4cb73f['offset']=qs[_0x3542('0x1c')](_0x4cd6fd['query']['offset']);}_0x4cb73f[_0x3542('0x37')]=qs[_0x3542('0x38')](_0x4cd6fd[_0x3542('0x32')][_0x3542('0x38')]);_0x4cb73f[_0x3542('0x39')]=qs[_0x3542('0x3a')](_[_0x3542('0x53')](_0x4cd6fd['query'],_0x271dd0[_0x3542('0x3a')]));if(_0x4cd6fd[_0x3542('0x32')][_0x3542('0x3b')]){_0x4cb73f[_0x3542('0x39')]=_[_0x3542('0x3c')](_0x4cb73f['where'],{'$or':_[_0x3542('0x2c')](_0x4cb73f[_0x3542('0x34')],function(_0x2c5546){var _0x361c42={};_0x361c42[_0x2c5546]={'$like':'%'+_0x4cd6fd[_0x3542('0x32')][_0x3542('0x3b')]+'%'};return _0x361c42;})});}_0x4cb73f[_0x3542('0x39')]=_['merge'](_0x4cb73f[_0x3542('0x39')],{'mailboxuser':_0x60b9c0['mailbox']});_0x4cb73f=_[_0x3542('0x3c')]({},_0x4cb73f,_0x4cd6fd[_0x3542('0x46')]);return db[_0x3542('0x52')][_0x3542('0x54')](_0x4cb73f)['then'](respondWithFilteredResult(_0x1fd8c8,_0x4cb73f));})['catch'](handleError(_0x1fd8c8,null));};
\ No newline at end of file
index 62dc915..3a7ab4b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0xb94a=['../../config/logger','api','bluebird','request-promise','rimraf','../../config/environment','define','voice_voicemail','mailbox_context','mailbox','context','util'];(function(_0x1437fe,_0x3c58d5){var _0x5afb46=function(_0x3d0ee0){while(--_0x3d0ee0){_0x1437fe['push'](_0x1437fe['shift']());}};_0x5afb46(++_0x3c58d5);}(_0xb94a,0x83));var _0xab94=function(_0x5c42e0,_0x1ad521){_0x5c42e0=_0x5c42e0-0x0;var _0x55151c=_0xb94a[_0x5c42e0];return _0x55151c;};'use strict';var _=require('lodash');var util=require(_0xab94('0x0'));var logger=require(_0xab94('0x1'))(_0xab94('0x2'));var moment=require('moment');var BPromise=require(_0xab94('0x3'));var rp=require(_0xab94('0x4'));var fs=require('fs');var path=require('path');var rimraf=require(_0xab94('0x5'));var config=require(_0xab94('0x6'));var attributes=require('./voiceMail.attributes');module['exports']=function(_0x4d1752,_0x538634){return _0x4d1752[_0xab94('0x7')]('VoiceMail',attributes,{'tableName':_0xab94('0x8'),'paranoid':![],'indexes':[{'name':_0xab94('0x9'),'fields':[_0xab94('0xa'),_0xab94('0xb')]}],'timestamps':!![]});};
\ No newline at end of file
index cce3423..7675da7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0x9dce=['../../config/utils','rpc','../../config/environment','jayson/promise','http','request','then','info','VoiceMail,\x20%s,\x20%s','debug','request\x20sent','error','message','result','lodash','util','randomstring','../../mysqldb'];(function(_0x3ba748,_0x4b8fb9){var _0x5b04e2=function(_0x16bb9e){while(--_0x16bb9e){_0x3ba748['push'](_0x3ba748['shift']());}};_0x5b04e2(++_0x4b8fb9);}(_0x9dce,0x176));var _0xe9dc=function(_0x3d248a,_0x3695ff){_0x3d248a=_0x3d248a-0x0;var _0x102889=_0x9dce[_0x3d248a];return _0x102889;};'use strict';var _=require(_0xe9dc('0x0'));var util=require(_0xe9dc('0x1'));var moment=require('moment');var BPromise=require('bluebird');var rs=require(_0xe9dc('0x2'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0xe9dc('0x3'))['db'];var utils=require(_0xe9dc('0x4'));var logger=require('../../config/logger')(_0xe9dc('0x5'));var config=require(_0xe9dc('0x6'));var jayson=require(_0xe9dc('0x7'));var client=jayson['client'][_0xe9dc('0x8')]({'port':0x232a});function respondWithRpcPromise(_0x496b19,_0x29482f,_0x4ad069){return new BPromise(function(_0x2295bd,_0x3e25fd){return client[_0xe9dc('0x9')](_0x496b19,_0x4ad069)[_0xe9dc('0xa')](function(_0x227999){logger[_0xe9dc('0xb')](_0xe9dc('0xc'),_0x29482f,'request\x20sent');logger[_0xe9dc('0xd')]('VoiceMail,\x20%s,\x20%s,\x20%s',_0x29482f,_0xe9dc('0xe'),JSON['stringify'](_0x227999));if(_0x227999['error']){if(_0x227999[_0xe9dc('0xf')]['code']===0x1f4){logger['error'](_0xe9dc('0xc'),_0x29482f,_0x227999[_0xe9dc('0xf')][_0xe9dc('0x10')]);return _0x3e25fd(_0x227999['error'][_0xe9dc('0x10')]);}logger[_0xe9dc('0xf')](_0xe9dc('0xc'),_0x29482f,_0x227999[_0xe9dc('0xf')][_0xe9dc('0x10')]);return _0x2295bd(_0x227999[_0xe9dc('0xf')][_0xe9dc('0x10')]);}else{logger['info'](_0xe9dc('0xc'),_0x29482f,'request\x20sent');_0x2295bd(_0x227999[_0xe9dc('0x11')][_0xe9dc('0x10')]);}})['catch'](function(_0x3c882c){logger[_0xe9dc('0xf')]('VoiceMail,\x20%s,\x20%s',_0x29482f,_0x3c882c);_0x3e25fd(_0x3c882c);});});}
\ No newline at end of file
index 54bc1a7..75a9c93 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0x1f85=['index','/:id','show','/:id/download','create','put','update','delete','destroy','exports','multer','util','path','connect-timeout','express','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','get','isAuthenticated'];(function(_0x6a47c,_0x2cbd54){var _0x1b8c47=function(_0x3b6b90){while(--_0x3b6b90){_0x6a47c['push'](_0x6a47c['shift']());}};_0x1b8c47(++_0x2cbd54);}(_0x1f85,0xf1));var _0x51f8=function(_0x29e011,_0x2a2996){_0x29e011=_0x29e011-0x0;var _0x1b46bd=_0x1f85[_0x29e011];return _0x1b46bd;};'use strict';var multer=require(_0x51f8('0x0'));var util=require(_0x51f8('0x1'));var path=require(_0x51f8('0x2'));var timeout=require(_0x51f8('0x3'));var express=require(_0x51f8('0x4'));var router=express['Router']();var fs_extra=require(_0x51f8('0x5'));var auth=require(_0x51f8('0x6'));var interaction=require(_0x51f8('0x7'));var config=require(_0x51f8('0x8'));var controller=require('./voiceMailMessage.controller');router[_0x51f8('0x9')]('/',auth[_0x51f8('0xa')](),controller[_0x51f8('0xb')]);router[_0x51f8('0x9')](_0x51f8('0xc'),auth[_0x51f8('0xa')](),controller[_0x51f8('0xd')]);router[_0x51f8('0x9')](_0x51f8('0xe'),auth['isAuthenticated'](),controller['download']);router['post']('/',auth[_0x51f8('0xa')](),controller[_0x51f8('0xf')]);router[_0x51f8('0x10')](_0x51f8('0xc'),auth[_0x51f8('0xa')](),controller[_0x51f8('0x11')]);router[_0x51f8('0x12')](_0x51f8('0xc'),auth[_0x51f8('0xa')](),controller[_0x51f8('0x13')]);module[_0x51f8('0x14')]=router;
\ No newline at end of file
index 9bd0cda..dddef48 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0x7fb3=['CURRENT_TIMESTAMP\x20ON\x20UPDATE\x20CURRENT_TIMESTAMP','sequelize','exports','VIRTUAL','INTEGER','STRING','BLOB','long','TIMESTAMP','literal'];(function(_0x9ec0f2,_0x4f9208){var _0x22e898=function(_0x4699b3){while(--_0x4699b3){_0x9ec0f2['push'](_0x9ec0f2['shift']());}};_0x22e898(++_0x4f9208);}(_0x7fb3,0x105));var _0x37fb=function(_0x52b395,_0x1afa64){_0x52b395=_0x52b395-0x0;var _0x55d9d4=_0x7fb3[_0x52b395];return _0x55d9d4;};'use strict';var Sequelize=require(_0x37fb('0x0'));module[_0x37fb('0x1')]={'name':{'type':Sequelize[_0x37fb('0x2')],'get':function(_0x5d2621){return this['getDataValue']('id');}},'msgnum':{'type':Sequelize[_0x37fb('0x3')](0xb),'defaultValue':0x0,'allowNull':![]},'dir':{'type':Sequelize['STRING'],'defaultValue':''},'context':{'type':Sequelize[_0x37fb('0x4')],'defaultValue':''},'macrocontext':{'type':Sequelize['STRING'],'defaultValue':''},'callerid':{'type':Sequelize[_0x37fb('0x4')],'defaultValue':''},'origtime':{'type':Sequelize[_0x37fb('0x4')],'defaultValue':''},'duration':{'type':Sequelize[_0x37fb('0x4')],'defaultValue':''},'mailboxuser':{'type':Sequelize[_0x37fb('0x4')],'defaultValue':''},'mailboxcontext':{'type':Sequelize['STRING'],'defaultValue':''},'recording':{'type':Sequelize[_0x37fb('0x5')](_0x37fb('0x6')),'defaultValue':null},'flag':{'type':Sequelize[_0x37fb('0x4')],'defaultValue':''},'msg_id':{'type':Sequelize[_0x37fb('0x4')],'defaultValue':''},'stamp':{'type':_0x37fb('0x7'),'defaultValue':Sequelize[_0x37fb('0x8')](_0x37fb('0x9'))}};
\ No newline at end of file
index 280ee9f..947e14a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0x9fdd=['rawAttributes','fieldName','type','model','map','query','keys','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','sort','where','pick','filter','merge','VIRTUAL','options','count','includeAll','findAll','catch','show','params','include','find','body','download','recording','msg_id','Sequelize','ValidationError','Content-Disposition','.wav\x22','rimraf','request-promise','moment','bluebird','mustache','util','path','to-csv','fs-extra','lodash','squel','crypto','jsforce','desk.js','querystring','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../mysqldb','sendStatus','status','end','json','offset','undefined','limit','set','Content-Range','apply','save','update','destroy','then','stack','name','VoiceMailMessage'];(function(_0x2d1ef6,_0x2b8753){var _0x1c0a44=function(_0x2409a8){while(--_0x2409a8){_0x2d1ef6['push'](_0x2d1ef6['shift']());}};_0x1c0a44(++_0x2b8753);}(_0x9fdd,0x10c));var _0xd9fd=function(_0x3f0ab3,_0x72f40a){_0x3f0ab3=_0x3f0ab3-0x0;var _0x27ee35=_0x9fdd[_0x3f0ab3];return _0x27ee35;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0xd9fd('0x0'));var zipdir=require('zip-dir');var jsonpatch=require('fast-json-patch');var rp=require(_0xd9fd('0x1'));var moment=require(_0xd9fd('0x2'));var BPromise=require(_0xd9fd('0x3'));var Mustache=require(_0xd9fd('0x4'));var util=require(_0xd9fd('0x5'));var path=require(_0xd9fd('0x6'));var sox=require('sox');var csv=require(_0xd9fd('0x7'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0xd9fd('0x8'));var _=require(_0xd9fd('0x9'));var squel=require(_0xd9fd('0xa'));var crypto=require(_0xd9fd('0xb'));var jsforce=require(_0xd9fd('0xc'));var deskjs=require(_0xd9fd('0xd'));var toCsv=require(_0xd9fd('0x7'));var querystring=require(_0xd9fd('0xe'));var Papa=require('papaparse');var Redis=require('ioredis');var authService=require(_0xd9fd('0xf'));var qs=require(_0xd9fd('0x10'));var as=require(_0xd9fd('0x11'));var hardwareService=require(_0xd9fd('0x12'));var logger=require(_0xd9fd('0x13'))(_0xd9fd('0x14'));var utils=require(_0xd9fd('0x15'));var config=require('../../config/environment');var licenseUtil=require('../../config/license/util');var db=require(_0xd9fd('0x16'))['db'];function respondWithStatusCode(_0x2f1772,_0x5db328){_0x5db328=_0x5db328||0xcc;return function(_0x2f1d9a){if(_0x2f1d9a){return _0x2f1772[_0xd9fd('0x17')](_0x5db328);}return _0x2f1772[_0xd9fd('0x18')](_0x5db328)[_0xd9fd('0x19')]();};}function respondWithResult(_0x535468,_0x5753cd){_0x5753cd=_0x5753cd||0xc8;return function(_0x21314a){if(_0x21314a){return _0x535468[_0xd9fd('0x18')](_0x5753cd)[_0xd9fd('0x1a')](_0x21314a);}};}function respondWithFilteredResult(_0x14d105,_0xa3e077){return function(_0x5ac33a){if(_0x5ac33a){var _0x5751da=typeof _0xa3e077[_0xd9fd('0x1b')]===_0xd9fd('0x1c')&&typeof _0xa3e077[_0xd9fd('0x1d')]===_0xd9fd('0x1c');var _0x19dc77=_0x5ac33a['count'];var _0x3b90b0=_0x5751da?0x0:_0xa3e077[_0xd9fd('0x1b')];var _0x73420=_0x5751da?_0x5ac33a['count']:_0xa3e077[_0xd9fd('0x1b')]+_0xa3e077[_0xd9fd('0x1d')];var _0x2f82d9;if(_0x73420>=_0x19dc77){_0x73420=_0x19dc77;_0x2f82d9=0xc8;}else{_0x2f82d9=0xce;}_0x14d105[_0xd9fd('0x18')](_0x2f82d9);return _0x14d105[_0xd9fd('0x1e')](_0xd9fd('0x1f'),_0x3b90b0+'-'+_0x73420+'/'+_0x19dc77)[_0xd9fd('0x1a')](_0x5ac33a);}return null;};}function patchUpdates(_0x44823b){return function(_0x414ad7){try{jsonpatch[_0xd9fd('0x20')](_0x414ad7,_0x44823b,!![]);}catch(_0x5c3ef2){return BPromise['reject'](_0x5c3ef2);}return _0x414ad7[_0xd9fd('0x21')]();};}function saveUpdates(_0x25517c,_0x47acfd){return function(_0x23f5da){if(_0x23f5da){return _0x23f5da[_0xd9fd('0x22')](_0x25517c)['then'](function(_0x5c726f){return _0x5c726f;});}return null;};}function removeEntity(_0x4bba78,_0x445722){return function(_0x151472){if(_0x151472){return _0x151472[_0xd9fd('0x23')]()[_0xd9fd('0x24')](function(){_0x4bba78[_0xd9fd('0x18')](0xcc)[_0xd9fd('0x19')]();});}};}function handleEntityNotFound(_0x56ff27,_0xbe0fec){return function(_0x50a59b){if(!_0x50a59b){_0x56ff27[_0xd9fd('0x17')](0x194);}return _0x50a59b;};}function handleError(_0xd5075f,_0x243c93){_0x243c93=_0x243c93||0x1f4;return function(_0x18b14e){logger['error'](_0x18b14e[_0xd9fd('0x25')]);if(_0x18b14e['name']){delete _0x18b14e[_0xd9fd('0x26')];}_0xd5075f[_0xd9fd('0x18')](_0x243c93)['send'](_0x18b14e);};}exports['index']=function(_0x380138,_0x4d9d96){var _0x36d45b={},_0x45dfa1={},_0x114ce7={'count':0x0,'rows':[]};var _0x4bf273=_['map'](db[_0xd9fd('0x27')][_0xd9fd('0x28')],function(_0xde5bca){return{'name':_0xde5bca[_0xd9fd('0x29')],'type':_0xde5bca[_0xd9fd('0x2a')]['key']};});_0x45dfa1[_0xd9fd('0x2b')]=_['differenceBy'](_[_0xd9fd('0x2c')](_0x4bf273,_0xd9fd('0x26')),[_0xd9fd('0x26')]);_0x45dfa1[_0xd9fd('0x2d')]=_[_0xd9fd('0x2e')](_0x380138['query']);_0x45dfa1[_0xd9fd('0x2f')]=_[_0xd9fd('0x30')](_0x45dfa1['model'],_0x45dfa1['query']);_0x36d45b[_0xd9fd('0x31')]=_[_0xd9fd('0x30')](_0x45dfa1[_0xd9fd('0x2b')],qs[_0xd9fd('0x32')](_0x380138[_0xd9fd('0x2d')][_0xd9fd('0x32')]));_0x36d45b[_0xd9fd('0x31')]=_0x36d45b[_0xd9fd('0x31')][_0xd9fd('0x33')]?_0x36d45b[_0xd9fd('0x31')]:_0x45dfa1[_0xd9fd('0x2b')];if(!_0x380138[_0xd9fd('0x2d')][_0xd9fd('0x34')](_0xd9fd('0x35'))){_0x36d45b[_0xd9fd('0x1d')]=qs[_0xd9fd('0x1d')](_0x380138[_0xd9fd('0x2d')][_0xd9fd('0x1d')]);_0x36d45b['offset']=qs[_0xd9fd('0x1b')](_0x380138[_0xd9fd('0x2d')]['offset']);}_0x36d45b['order']=qs[_0xd9fd('0x36')](_0x380138[_0xd9fd('0x2d')][_0xd9fd('0x36')]);_0x36d45b[_0xd9fd('0x37')]=qs[_0xd9fd('0x2f')](_[_0xd9fd('0x38')](_0x380138[_0xd9fd('0x2d')],_0x45dfa1[_0xd9fd('0x2f')]),_0x4bf273);if(_0x380138['query'][_0xd9fd('0x39')]){_0x36d45b['where']=_[_0xd9fd('0x3a')](_0x36d45b[_0xd9fd('0x37')],{'$or':_[_0xd9fd('0x2c')](_0x4bf273,function(_0x266718){if(_0x266718['type']!==_0xd9fd('0x3b')){var _0xcc5c85={};_0xcc5c85[_0x266718[_0xd9fd('0x26')]]={'$like':'%'+_0x380138[_0xd9fd('0x2d')][_0xd9fd('0x39')]+'%'};return _0xcc5c85;}})});}_0x36d45b=_[_0xd9fd('0x3a')]({},_0x36d45b,_0x380138[_0xd9fd('0x3c')]);var _0x3b1b59={'where':_0x36d45b[_0xd9fd('0x37')]};return db[_0xd9fd('0x27')]['count'](_0x3b1b59)[_0xd9fd('0x24')](function(_0x47f14a){_0x114ce7[_0xd9fd('0x3d')]=_0x47f14a;if(_0x380138[_0xd9fd('0x2d')][_0xd9fd('0x3e')]){_0x36d45b['include']=[{'all':!![]}];}return db[_0xd9fd('0x27')][_0xd9fd('0x3f')](_0x36d45b);})[_0xd9fd('0x24')](function(_0x5258ea){_0x114ce7['rows']=_0x5258ea;return _0x114ce7;})['then'](respondWithFilteredResult(_0x4d9d96,_0x36d45b))[_0xd9fd('0x40')](handleError(_0x4d9d96,null));};exports[_0xd9fd('0x41')]=function(_0x5e3b03,_0x3a1bfd){var _0x2e0d86={'raw':!![],'where':{'id':_0x5e3b03[_0xd9fd('0x42')]['id']}},_0x3736c2={};_0x3736c2[_0xd9fd('0x2b')]=_[_0xd9fd('0x2e')](db[_0xd9fd('0x27')]['rawAttributes']);_0x3736c2[_0xd9fd('0x2d')]=_[_0xd9fd('0x2e')](_0x5e3b03[_0xd9fd('0x2d')]);_0x3736c2[_0xd9fd('0x2f')]=_[_0xd9fd('0x30')](_0x3736c2[_0xd9fd('0x2b')],_0x3736c2['query']);_0x2e0d86['attributes']=_['intersection'](_0x3736c2[_0xd9fd('0x2b')],qs[_0xd9fd('0x32')](_0x5e3b03[_0xd9fd('0x2d')][_0xd9fd('0x32')]));_0x2e0d86[_0xd9fd('0x31')]=_0x2e0d86[_0xd9fd('0x31')][_0xd9fd('0x33')]?_0x2e0d86['attributes']:_0x3736c2[_0xd9fd('0x2b')];if(_0x5e3b03['query'][_0xd9fd('0x3e')]){_0x2e0d86[_0xd9fd('0x43')]=[{'all':!![]}];}_0x2e0d86=_[_0xd9fd('0x3a')]({},_0x2e0d86,_0x5e3b03[_0xd9fd('0x3c')]);return db[_0xd9fd('0x27')][_0xd9fd('0x44')](_0x2e0d86)[_0xd9fd('0x24')](handleEntityNotFound(_0x3a1bfd,null))[_0xd9fd('0x24')](respondWithResult(_0x3a1bfd,null))[_0xd9fd('0x40')](handleError(_0x3a1bfd,null));};exports['create']=function(_0x43ef32,_0x1de8a6){return db['VoiceMailMessage']['create'](_0x43ef32['body'],{})[_0xd9fd('0x24')](respondWithResult(_0x1de8a6,0xc9))[_0xd9fd('0x40')](handleError(_0x1de8a6,null));};exports['update']=function(_0x24948a,_0x1aa152){if(_0x24948a[_0xd9fd('0x45')]['id']){delete _0x24948a[_0xd9fd('0x45')]['id'];}return db['VoiceMailMessage'][_0xd9fd('0x44')]({'where':{'id':_0x24948a[_0xd9fd('0x42')]['id']}})[_0xd9fd('0x24')](handleEntityNotFound(_0x1aa152,null))['then'](saveUpdates(_0x24948a[_0xd9fd('0x45')],null))[_0xd9fd('0x24')](respondWithResult(_0x1aa152,null))['catch'](handleError(_0x1aa152,null));};exports[_0xd9fd('0x23')]=function(_0x17fb95,_0x262834){return db['VoiceMailMessage'][_0xd9fd('0x44')]({'where':{'id':_0x17fb95['params']['id']}})['then'](handleEntityNotFound(_0x262834,null))[_0xd9fd('0x24')](removeEntity(_0x262834,null))['catch'](handleError(_0x262834,null));};exports[_0xd9fd('0x46')]=function(_0x5512a3,_0x3c125b,_0x4e39a5){return db[_0xd9fd('0x27')][_0xd9fd('0x44')]({'where':{'id':_0x5512a3['params']['id']},'attributes':['id',_0xd9fd('0x47'),_0xd9fd('0x48')]})[_0xd9fd('0x24')](handleEntityNotFound(_0x3c125b,null))['then'](function(_0x38f355){if(_0x38f355){if(!_0x38f355[_0xd9fd('0x47')]){throw new db[(_0xd9fd('0x49'))][(_0xd9fd('0x4a'))]('VoiceMailMessage\x20not\x20found');}var _0x17b9db={'Content-Type':'audio/wav','Content-Disposition':'attachment'};if(_0x38f355[_0xd9fd('0x48')]){_0x17b9db[_0xd9fd('0x4b')]='attachment;\x20filename=\x22'+_0x38f355[_0xd9fd('0x48')]+_0xd9fd('0x4c');}_0x3c125b[_0xd9fd('0x1e')](_0x17b9db);return _0x3c125b['send'](new Buffer(_0x38f355['recording']));}})[_0xd9fd('0x40')](handleError(_0x3c125b,null));};
\ No newline at end of file
index d42f924..8d88281 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0xf5bc=['lodash','util','api','moment','bluebird','request-promise','path','rimraf','../../config/environment','./voiceMailMessage.attributes','define','VoiceMailMessage','voice_voicemail_messages','dir'];(function(_0x35b195,_0x8893d5){var _0x2433bf=function(_0x22be07){while(--_0x22be07){_0x35b195['push'](_0x35b195['shift']());}};_0x2433bf(++_0x8893d5);}(_0xf5bc,0xc4));var _0xcf5b=function(_0x4b369d,_0x265eb8){_0x4b369d=_0x4b369d-0x0;var _0x571a98=_0xf5bc[_0x4b369d];return _0x571a98;};'use strict';var _=require(_0xcf5b('0x0'));var util=require(_0xcf5b('0x1'));var logger=require('../../config/logger')(_0xcf5b('0x2'));var moment=require(_0xcf5b('0x3'));var BPromise=require(_0xcf5b('0x4'));var rp=require(_0xcf5b('0x5'));var fs=require('fs');var path=require(_0xcf5b('0x6'));var rimraf=require(_0xcf5b('0x7'));var config=require(_0xcf5b('0x8'));var attributes=require(_0xcf5b('0x9'));module['exports']=function(_0x3567c0,_0x5e869e){return _0x3567c0[_0xcf5b('0xa')](_0xcf5b('0xb'),attributes,{'tableName':_0xcf5b('0xc'),'paranoid':![],'indexes':[{'name':_0xcf5b('0xd'),'fields':['dir']}],'timestamps':![]});};
\ No newline at end of file
index d6e0ee7..9c950eb 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0x7c29=['util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','request','info','VoiceMailMessage,\x20%s,\x20%s','request\x20sent','debug','code','error','message','result','catch'];(function(_0x8a5e4a,_0x1739f3){var _0xe4bf9d=function(_0x3e1eb2){while(--_0x3e1eb2){_0x8a5e4a['push'](_0x8a5e4a['shift']());}};_0xe4bf9d(++_0x1739f3);}(_0x7c29,0x18c));var _0x97c2=function(_0x3c3ce3,_0x379750){_0x3c3ce3=_0x3c3ce3-0x0;var _0x1edb5d=_0x7c29[_0x3c3ce3];return _0x1edb5d;};'use strict';var _=require('lodash');var util=require(_0x97c2('0x0'));var moment=require(_0x97c2('0x1'));var BPromise=require(_0x97c2('0x2'));var rs=require(_0x97c2('0x3'));var fs=require('fs');var Redis=require(_0x97c2('0x4'));var db=require(_0x97c2('0x5'))['db'];var utils=require(_0x97c2('0x6'));var logger=require(_0x97c2('0x7'))(_0x97c2('0x8'));var config=require(_0x97c2('0x9'));var jayson=require(_0x97c2('0xa'));var client=jayson[_0x97c2('0xb')]['http']({'port':0x232a});function respondWithRpcPromise(_0x5771fd,_0x54b8c1,_0x56871c){return new BPromise(function(_0x707cc3,_0x1f3ede){return client[_0x97c2('0xc')](_0x5771fd,_0x56871c)['then'](function(_0x4a834b){logger[_0x97c2('0xd')](_0x97c2('0xe'),_0x54b8c1,_0x97c2('0xf'));logger[_0x97c2('0x10')]('VoiceMailMessage,\x20%s,\x20%s,\x20%s',_0x54b8c1,_0x97c2('0xf'),JSON['stringify'](_0x4a834b));if(_0x4a834b['error']){if(_0x4a834b['error'][_0x97c2('0x11')]===0x1f4){logger[_0x97c2('0x12')](_0x97c2('0xe'),_0x54b8c1,_0x4a834b[_0x97c2('0x12')]['message']);return _0x1f3ede(_0x4a834b['error'][_0x97c2('0x13')]);}logger['error'](_0x97c2('0xe'),_0x54b8c1,_0x4a834b[_0x97c2('0x12')][_0x97c2('0x13')]);return _0x707cc3(_0x4a834b['error'][_0x97c2('0x13')]);}else{logger[_0x97c2('0xd')](_0x97c2('0xe'),_0x54b8c1,'request\x20sent');_0x707cc3(_0x4a834b[_0x97c2('0x14')]['message']);}})[_0x97c2('0x15')](function(_0x32dcaa){logger[_0x97c2('0x12')](_0x97c2('0xe'),_0x54b8c1,_0x32dcaa);_0x1f3ede(_0x32dcaa);});});}
\ No newline at end of file
index cbfbd56..d1f8a34 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0x74d2=['destroy','removeSound','exports','multer','util','path','Router','../../components/auth/service','../../components/interaction/service','../../config/environment','./voiceMusicOnHold.controller','get','isAuthenticated','index','/:id','show','/:id/sounds','post','create','addSound','put','update','delete'];(function(_0x43b77a,_0x1a7948){var _0x3f5b10=function(_0x37da88){while(--_0x37da88){_0x43b77a['push'](_0x43b77a['shift']());}};_0x3f5b10(++_0x1a7948);}(_0x74d2,0x1b8));var _0x274d=function(_0x41382c,_0xc3ffd1){_0x41382c=_0x41382c-0x0;var _0x4da35b=_0x74d2[_0x41382c];return _0x4da35b;};'use strict';var multer=require(_0x274d('0x0'));var util=require(_0x274d('0x1'));var path=require(_0x274d('0x2'));var timeout=require('connect-timeout');var express=require('express');var router=express[_0x274d('0x3')]();var fs_extra=require('fs-extra');var auth=require(_0x274d('0x4'));var interaction=require(_0x274d('0x5'));var config=require(_0x274d('0x6'));var controller=require(_0x274d('0x7'));router[_0x274d('0x8')]('/',auth[_0x274d('0x9')](),controller[_0x274d('0xa')]);router['get'](_0x274d('0xb'),auth[_0x274d('0x9')](),controller[_0x274d('0xc')]);router['get'](_0x274d('0xd'),auth[_0x274d('0x9')](),controller['getSounds']);router[_0x274d('0xe')]('/',auth[_0x274d('0x9')](),controller[_0x274d('0xf')]);router[_0x274d('0xe')](_0x274d('0xd'),auth[_0x274d('0x9')](),controller[_0x274d('0x10')]);router[_0x274d('0x11')]('/:id',auth[_0x274d('0x9')](),controller[_0x274d('0x12')]);router[_0x274d('0x13')](_0x274d('0xb'),auth[_0x274d('0x9')](),controller[_0x274d('0x14')]);router[_0x274d('0x13')]('/:id/sounds/:id2',auth[_0x274d('0x9')](),controller[_0x274d('0x15')]);module[_0x274d('0x16')]=router;
\ No newline at end of file
index 1df7522..29fa69c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0x067c=['ENUM','mp3nb','quietmp3nb','quietmp3','mp3','files','STRING','TIMESTAMP','BOOLEAN','sequelize','exports','name'];(function(_0x181afb,_0x318e34){var _0x1405cb=function(_0x1f9d69){while(--_0x1f9d69){_0x181afb['push'](_0x181afb['shift']());}};_0x1405cb(++_0x318e34);}(_0x067c,0x159));var _0xc067=function(_0x562faa,_0x23adc7){_0x562faa=_0x562faa-0x0;var _0xc70f59=_0x067c[_0x562faa];return _0xc70f59;};'use strict';var Sequelize=require(_0xc067('0x0'));module[_0xc067('0x1')]={'name':{'type':Sequelize['STRING'],'allowNull':![],'unique':_0xc067('0x2')},'mode':{'type':Sequelize[_0xc067('0x3')]('custom','files',_0xc067('0x4'),_0xc067('0x5'),_0xc067('0x6'),_0xc067('0x7')),'allowNull':!![],'defaultValue':_0xc067('0x8')},'directory':{'type':Sequelize[_0xc067('0x9')],'allowNull':!![]},'application':{'type':Sequelize[_0xc067('0x9')],'allowNull':!![]},'digit':{'type':Sequelize[_0xc067('0x9')],'allowNull':!![]},'sort':{'type':Sequelize[_0xc067('0x9')],'allowNull':!![],'defaultValue':'alpha'},'format':{'type':Sequelize['STRING'],'allowNull':!![]},'stamp':{'type':_0xc067('0xa')},'defaultEntry':{'type':Sequelize[_0xc067('0xb')],'defaultValue':0x0}};
\ No newline at end of file
index 2a7d2ea..d52a3e0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0x7058=['zip-dir','fast-json-patch','request-promise','mustache','util','path','sox','to-csv','ejs','squel','crypto','jsforce','desk.js','querystring','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','end','status','json','limit','undefined','offset','count','set','Content-Range','reject','save','update','then','destroy','get','MusicOnHolds','UserProfileResource','error','stack','name','send','map','fieldName','type','key','model','query','keys','filters','attributes','fields','length','order','sort','pick','filter','where','merge','VIRTUAL','options','VoiceMusicOnHold','includeAll','findAll','rows','catch','show','params','rawAttributes','intersection','find','body','sequelize','transaction','mode','join','root','files','mkdirSync','directory','0777','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','userProfileId','autoAssociation','create','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','unlinkSync','rmdirSync','ValidationError','addSound','Sound','findOne','save_name','converted_format','createdAt','server/files/sounds/converted','format','%s.%s','basename','extname','server/files/moh','symlinkSync','Sequelize','removeSound','id2','getSounds','hasOwnProperty','eml-format','rimraf'];(function(_0x50f392,_0x1d8441){var _0x5926f2=function(_0x17df32){while(--_0x17df32){_0x50f392['push'](_0x50f392['shift']());}};_0x5926f2(++_0x1d8441);}(_0x7058,0x157));var _0x8705=function(_0x126558,_0x143c9a){_0x126558=_0x126558-0x0;var _0x1f6d14=_0x7058[_0x126558];return _0x1f6d14;};'use strict';var emlformat=require(_0x8705('0x0'));var rimraf=require(_0x8705('0x1'));var zipdir=require(_0x8705('0x2'));var jsonpatch=require(_0x8705('0x3'));var rp=require(_0x8705('0x4'));var moment=require('moment');var BPromise=require('bluebird');var Mustache=require(_0x8705('0x5'));var util=require(_0x8705('0x6'));var path=require(_0x8705('0x7'));var sox=require(_0x8705('0x8'));var csv=require(_0x8705('0x9'));var ejs=require(_0x8705('0xa'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require('lodash');var squel=require(_0x8705('0xb'));var crypto=require(_0x8705('0xc'));var jsforce=require(_0x8705('0xd'));var deskjs=require(_0x8705('0xe'));var toCsv=require(_0x8705('0x9'));var querystring=require(_0x8705('0xf'));var Papa=require('papaparse');var Redis=require(_0x8705('0x10'));var authService=require(_0x8705('0x11'));var qs=require(_0x8705('0x12'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x8705('0x13'));var logger=require(_0x8705('0x14'))(_0x8705('0x15'));var utils=require(_0x8705('0x16'));var config=require(_0x8705('0x17'));var licenseUtil=require(_0x8705('0x18'));var db=require(_0x8705('0x19'))['db'];function respondWithStatusCode(_0x37dcc5,_0x5e1ab2){_0x5e1ab2=_0x5e1ab2||0xcc;return function(_0x3e1c38){if(_0x3e1c38){return _0x37dcc5[_0x8705('0x1a')](_0x5e1ab2);}return _0x37dcc5['status'](_0x5e1ab2)[_0x8705('0x1b')]();};}function respondWithResult(_0x4157d4,_0x13033e){_0x13033e=_0x13033e||0xc8;return function(_0x201e64){if(_0x201e64){return _0x4157d4[_0x8705('0x1c')](_0x13033e)[_0x8705('0x1d')](_0x201e64);}};}function respondWithFilteredResult(_0x396320,_0x55a2c1){return function(_0x57ff4a){if(_0x57ff4a){var _0x214428=typeof _0x55a2c1['offset']==='undefined'&&typeof _0x55a2c1[_0x8705('0x1e')]===_0x8705('0x1f');var _0x160d2d=_0x57ff4a['count'];var _0x1c6fb2=_0x214428?0x0:_0x55a2c1[_0x8705('0x20')];var _0x43bd54=_0x214428?_0x57ff4a[_0x8705('0x21')]:_0x55a2c1[_0x8705('0x20')]+_0x55a2c1[_0x8705('0x1e')];var _0x5cc0aa;if(_0x43bd54>=_0x160d2d){_0x43bd54=_0x160d2d;_0x5cc0aa=0xc8;}else{_0x5cc0aa=0xce;}_0x396320['status'](_0x5cc0aa);return _0x396320[_0x8705('0x22')](_0x8705('0x23'),_0x1c6fb2+'-'+_0x43bd54+'/'+_0x160d2d)[_0x8705('0x1d')](_0x57ff4a);}return null;};}function patchUpdates(_0x5c08aa){return function(_0x4eb395){try{jsonpatch['apply'](_0x4eb395,_0x5c08aa,!![]);}catch(_0x5ac36f){return BPromise[_0x8705('0x24')](_0x5ac36f);}return _0x4eb395[_0x8705('0x25')]();};}function saveUpdates(_0x21091d,_0xb5d917){return function(_0xa29b1a){if(_0xa29b1a){return _0xa29b1a[_0x8705('0x26')](_0x21091d)[_0x8705('0x27')](function(_0x4f2fcd){return _0x4f2fcd;});}return null;};}function removeEntity(_0x3803ba,_0x18abdd){return function(_0x3ba441){if(_0x3ba441){return _0x3ba441[_0x8705('0x28')]()['then'](function(){var _0x2b1b4c=_0x3ba441[_0x8705('0x29')]({'plain':!![]});var _0x19bc58=_0x8705('0x2a');return db[_0x8705('0x2b')]['destroy']({'where':{'type':_0x19bc58,'resourceId':_0x2b1b4c['id']}})[_0x8705('0x27')](function(){return _0x3ba441;});})[_0x8705('0x27')](function(){_0x3803ba[_0x8705('0x1c')](0xcc)[_0x8705('0x1b')]();});}};}function handleEntityNotFound(_0x15642c,_0x5c4314){return function(_0x1fb2f6){if(!_0x1fb2f6){_0x15642c[_0x8705('0x1a')](0x194);}return _0x1fb2f6;};}function handleError(_0x2df026,_0x160e0a){_0x160e0a=_0x160e0a||0x1f4;return function(_0x2b3c78){logger[_0x8705('0x2c')](_0x2b3c78[_0x8705('0x2d')]);if(_0x2b3c78[_0x8705('0x2e')]){delete _0x2b3c78[_0x8705('0x2e')];}_0x2df026[_0x8705('0x1c')](_0x160e0a)[_0x8705('0x2f')](_0x2b3c78);};}exports['index']=function(_0x45847b,_0x138ab4){var _0x46ae0d={},_0x264ea6={},_0x303a83={'count':0x0,'rows':[]};var _0x100cce=_[_0x8705('0x30')](db['VoiceMusicOnHold']['rawAttributes'],function(_0x4bb8d2){return{'name':_0x4bb8d2[_0x8705('0x31')],'type':_0x4bb8d2[_0x8705('0x32')][_0x8705('0x33')]};});_0x264ea6[_0x8705('0x34')]=_[_0x8705('0x30')](_0x100cce,_0x8705('0x2e'));_0x264ea6[_0x8705('0x35')]=_[_0x8705('0x36')](_0x45847b[_0x8705('0x35')]);_0x264ea6[_0x8705('0x37')]=_['intersection'](_0x264ea6['model'],_0x264ea6[_0x8705('0x35')]);_0x46ae0d[_0x8705('0x38')]=_['intersection'](_0x264ea6[_0x8705('0x34')],qs[_0x8705('0x39')](_0x45847b[_0x8705('0x35')]['fields']));_0x46ae0d[_0x8705('0x38')]=_0x46ae0d[_0x8705('0x38')][_0x8705('0x3a')]?_0x46ae0d['attributes']:_0x264ea6['model'];if(!_0x45847b[_0x8705('0x35')]['hasOwnProperty']('nolimit')){_0x46ae0d[_0x8705('0x1e')]=qs[_0x8705('0x1e')](_0x45847b[_0x8705('0x35')][_0x8705('0x1e')]);_0x46ae0d['offset']=qs[_0x8705('0x20')](_0x45847b['query'][_0x8705('0x20')]);}_0x46ae0d[_0x8705('0x3b')]=qs[_0x8705('0x3c')](_0x45847b[_0x8705('0x35')][_0x8705('0x3c')]);delete _0x45847b[_0x8705('0x35')][_0x8705('0x3c')];_0x46ae0d['where']=qs[_0x8705('0x37')](_[_0x8705('0x3d')](_0x45847b['query'],_0x264ea6[_0x8705('0x37')]),_0x100cce);if(_0x45847b['query'][_0x8705('0x3e')]){_0x46ae0d[_0x8705('0x3f')]=_[_0x8705('0x40')](_0x46ae0d[_0x8705('0x3f')],{'$or':_['map'](_0x100cce,function(_0x224a78){if(_0x224a78['type']!==_0x8705('0x41')){var _0x49674={};_0x49674[_0x224a78[_0x8705('0x2e')]]={'$like':'%'+_0x45847b[_0x8705('0x35')][_0x8705('0x3e')]+'%'};return _0x49674;}})});}_0x46ae0d=_[_0x8705('0x40')]({},_0x46ae0d,_0x45847b[_0x8705('0x42')]);var _0x3b8180={'where':_0x46ae0d[_0x8705('0x3f')]};return db[_0x8705('0x43')][_0x8705('0x21')](_0x3b8180)[_0x8705('0x27')](function(_0x315ee6){_0x303a83[_0x8705('0x21')]=_0x315ee6;if(_0x45847b[_0x8705('0x35')][_0x8705('0x44')]){_0x46ae0d['include']=[{'all':!![]}];}return db[_0x8705('0x43')][_0x8705('0x45')](_0x46ae0d);})[_0x8705('0x27')](function(_0x230e9d){_0x303a83[_0x8705('0x46')]=_0x230e9d;return _0x303a83;})[_0x8705('0x27')](respondWithFilteredResult(_0x138ab4,_0x46ae0d))[_0x8705('0x47')](handleError(_0x138ab4,null));};exports[_0x8705('0x48')]=function(_0x4ed130,_0x369d48){var _0x22be69={'raw':![],'where':{'id':_0x4ed130[_0x8705('0x49')]['id']}},_0x1b45ad={};_0x1b45ad[_0x8705('0x34')]=_['keys'](db[_0x8705('0x43')][_0x8705('0x4a')]);_0x1b45ad[_0x8705('0x35')]=_[_0x8705('0x36')](_0x4ed130['query']);_0x1b45ad[_0x8705('0x37')]=_[_0x8705('0x4b')](_0x1b45ad['model'],_0x1b45ad[_0x8705('0x35')]);_0x22be69[_0x8705('0x38')]=_[_0x8705('0x4b')](_0x1b45ad['model'],qs['fields'](_0x4ed130[_0x8705('0x35')][_0x8705('0x39')]));_0x22be69[_0x8705('0x38')]=_0x22be69[_0x8705('0x38')][_0x8705('0x3a')]?_0x22be69[_0x8705('0x38')]:_0x1b45ad[_0x8705('0x34')];if(_0x4ed130[_0x8705('0x35')][_0x8705('0x44')]){_0x22be69['include']=[{'all':!![]}];}_0x22be69=_['merge']({},_0x22be69,_0x4ed130['options']);return db['VoiceMusicOnHold'][_0x8705('0x4c')](_0x22be69)[_0x8705('0x27')](handleEntityNotFound(_0x369d48,null))[_0x8705('0x27')](respondWithResult(_0x369d48,null))[_0x8705('0x47')](handleError(_0x369d48,null));};exports[_0x8705('0x26')]=function(_0x2418de,_0x1da328){if(_0x2418de[_0x8705('0x4d')]['id']){delete _0x2418de[_0x8705('0x4d')]['id'];}return db[_0x8705('0x43')][_0x8705('0x4c')]({'where':{'id':_0x2418de[_0x8705('0x49')]['id']}})[_0x8705('0x27')](handleEntityNotFound(_0x1da328,null))[_0x8705('0x27')](saveUpdates(_0x2418de[_0x8705('0x4d')],null))[_0x8705('0x27')](respondWithResult(_0x1da328,null))['catch'](handleError(_0x1da328,null));};exports['create']=function(_0x3792e6,_0x53c082,_0x41f9da){return db[_0x8705('0x4e')][_0x8705('0x4f')](function(_0x53a3bb){if(_0x3792e6[_0x8705('0x4d')][_0x8705('0x50')]==='files'){_0x3792e6['body']['directory']=path[_0x8705('0x51')](config[_0x8705('0x52')],'server/files/moh',_0x3792e6['body']['name']);}return db[_0x8705('0x43')]['create'](_0x3792e6[_0x8705('0x4d')],{'transaction':_0x53a3bb})[_0x8705('0x27')](function(_0x1c2a28){if(_0x3792e6[_0x8705('0x4d')]['mode']===_0x8705('0x53')){fs[_0x8705('0x54')](_0x1c2a28[_0x8705('0x55')],parseInt(_0x8705('0x56'),0x8));}var _0x379dfd=_0x3792e6[_0x8705('0x57')][_0x8705('0x29')]({'plain':!![]});if(!_0x379dfd)throw new Error(_0x8705('0x58'));if(_0x379dfd[_0x8705('0x59')]===_0x8705('0x57')){var _0x8a552c=_0x1c2a28['get']({'plain':!![]});return db['UserProfileSection'][_0x8705('0x4c')]({'where':{'name':_0x8705('0x2a'),'userProfileId':_0x379dfd[_0x8705('0x5a')]},'raw':!![]})[_0x8705('0x27')](function(_0x107495){if(_0x107495&&_0x107495[_0x8705('0x5b')]===0x0){return db[_0x8705('0x2b')][_0x8705('0x5c')]({'name':_0x8a552c['name'],'resourceId':_0x8a552c['id'],'type':_0x107495[_0x8705('0x2e')],'sectionId':_0x107495['id']},{})[_0x8705('0x27')](function(){return _0x1c2a28;});}else{return _0x1c2a28;}})[_0x8705('0x47')](function(_0x2ddd5b){logger[_0x8705('0x2c')](_0x8705('0x5d'),_0x2ddd5b);});}return _0x1c2a28;});})['then'](respondWithResult(_0x53c082,0xc9))[_0x8705('0x47')](handleError(_0x53c082,null));};exports[_0x8705('0x28')]=function(_0x60f026,_0x59a498,_0x5a8556){var _0x2663e3;return db[_0x8705('0x43')][_0x8705('0x4c')]({'where':{'id':_0x60f026[_0x8705('0x49')]['id']}})[_0x8705('0x27')](function(_0x2ce39d){if(_0x2ce39d){return db['sequelize'][_0x8705('0x4f')](function(_0x1c43df){return _0x2ce39d[_0x8705('0x28')]({'transaction':_0x1c43df,'raw':!![]})[_0x8705('0x27')](function(_0x1925c3){if(_0x1925c3[_0x8705('0x55')]){fs['readdirSync'](_0x1925c3[_0x8705('0x55')])['forEach'](function(_0x167cc1){fs[_0x8705('0x5e')](path[_0x8705('0x51')](_0x1925c3[_0x8705('0x55')],_0x167cc1));});fs[_0x8705('0x5f')](_0x1925c3[_0x8705('0x55')]);}return _0x1925c3;});})[_0x8705('0x47')](function(_0x11d64c){throw new db['Sequelize'][(_0x8705('0x60'))](_0x11d64c['message']);});}})[_0x8705('0x27')](handleEntityNotFound(_0x59a498,null))[_0x8705('0x27')](removeEntity(_0x59a498,null))['catch'](handleError(_0x59a498,null));};exports[_0x8705('0x61')]=function(_0xf6893d,_0x3035ea,_0x2eca5c){return db['sequelize'][_0x8705('0x4f')](function(_0x4e8fa5){var _0x1c7ecd;return db[_0x8705('0x43')][_0x8705('0x4c')]({'where':{'id':_0xf6893d['params']['id']}})['then'](function(_0xc2403){if(_0xc2403){_0x1c7ecd=_0xc2403;return _0xc2403[_0x8705('0x61')](_0xf6893d['body']['id'],{'transaction':_0x4e8fa5});}})[_0x8705('0x27')](function(_0x22a32e){if(_0x22a32e){return db[_0x8705('0x62')][_0x8705('0x63')]({'where':{'id':_0xf6893d[_0x8705('0x4d')]['id']},'attributes':['id',_0x8705('0x2e'),_0x8705('0x64'),_0x8705('0x65'),_0x8705('0x66')],'raw':!![]});}})['then'](function(_0x49d564){if(_0x49d564){var _0x30c460=path[_0x8705('0x51')](config['root'],_0x8705('0x67'),util[_0x8705('0x68')](_0x8705('0x69'),path[_0x8705('0x6a')](_0x49d564[_0x8705('0x64')],path[_0x8705('0x6b')](_0x49d564[_0x8705('0x64')])),_0x49d564[_0x8705('0x65')]));var _0x1ee198=path[_0x8705('0x51')](config[_0x8705('0x52')],_0x8705('0x6c'),_0x1c7ecd['name'],util[_0x8705('0x68')](_0x8705('0x69'),_0x49d564['name'],_0x49d564[_0x8705('0x65')]));fs[_0x8705('0x6d')](_0x30c460,_0x1ee198);return _0x49d564;}})[_0x8705('0x47')](function(_0x3955c4){throw new db[(_0x8705('0x6e'))]['ValidationError'](_0x3955c4['message']);});})['then'](handleEntityNotFound(_0x3035ea,null))['then'](respondWithResult(_0x3035ea,0xc9))[_0x8705('0x47')](handleError(_0x3035ea,null));};exports['removeSound']=function(_0x45d613,_0x53d774,_0x2fff0d){return db['sequelize'][_0x8705('0x4f')](function(_0x56c75f){var _0x31f0a3;return db['VoiceMusicOnHold'][_0x8705('0x63')]({'where':{'id':_0x45d613['params']['id']}})[_0x8705('0x27')](handleEntityNotFound(_0x53d774,null))[_0x8705('0x27')](function(_0x3b1143){if(_0x3b1143){_0x31f0a3=_0x3b1143;return _0x3b1143[_0x8705('0x6f')](_0x45d613[_0x8705('0x49')][_0x8705('0x70')]);}})[_0x8705('0x27')](function(_0x32bf57){if(_0x32bf57){return db[_0x8705('0x62')]['findOne']({'where':{'id':_0x45d613[_0x8705('0x49')]['id2']},'attributes':['id',_0x8705('0x2e'),_0x8705('0x64'),'converted_format',_0x8705('0x66')],'raw':!![]});}})['then'](function(_0x1bfa03){if(_0x1bfa03){fs[_0x8705('0x5e')](path[_0x8705('0x51')](_0x31f0a3[_0x8705('0x55')],util['format'](_0x8705('0x69'),_0x1bfa03[_0x8705('0x2e')],_0x1bfa03[_0x8705('0x65')])));return _0x1bfa03;}})[_0x8705('0x47')](function(_0x4426f3){throw new db[(_0x8705('0x6e'))]['ValidationError'](_0x4426f3['message']);});})[_0x8705('0x27')](handleEntityNotFound(_0x53d774,null))[_0x8705('0x27')](respondWithStatusCode(_0x53d774,0xcc))['catch'](handleError(_0x53d774,null));};exports['getSounds']=function(_0x46dda5,_0x2914f8,_0x45d292){var _0x340fbb={};var _0x4d29c7={};var _0x571313;var _0x2fb859;return db[_0x8705('0x43')][_0x8705('0x63')]({'where':{'id':_0x46dda5[_0x8705('0x49')]['id']}})[_0x8705('0x27')](handleEntityNotFound(_0x2914f8,null))['then'](function(_0x3cda59){if(_0x3cda59){_0x571313=_0x3cda59;_0x4d29c7['model']=_['keys'](db['Sound'][_0x8705('0x4a')]);_0x4d29c7[_0x8705('0x35')]=_[_0x8705('0x36')](_0x46dda5['query']);_0x4d29c7['filters']=_[_0x8705('0x4b')](_0x4d29c7[_0x8705('0x34')],_0x4d29c7['query']);_0x340fbb[_0x8705('0x38')]=_[_0x8705('0x4b')](_0x4d29c7[_0x8705('0x34')],qs[_0x8705('0x39')](_0x46dda5[_0x8705('0x35')][_0x8705('0x39')]));_0x340fbb[_0x8705('0x38')]=_0x340fbb[_0x8705('0x38')][_0x8705('0x3a')]?_0x340fbb[_0x8705('0x38')]:_0x4d29c7['model'];_0x340fbb[_0x8705('0x3b')]=qs['sort'](_0x46dda5[_0x8705('0x35')][_0x8705('0x3c')]);_0x340fbb[_0x8705('0x3f')]=qs['filters'](_[_0x8705('0x3d')](_0x46dda5['query'],_0x4d29c7[_0x8705('0x37')]));if(_0x46dda5[_0x8705('0x35')][_0x8705('0x3e')]){_0x340fbb[_0x8705('0x3f')]=_[_0x8705('0x40')](_0x340fbb[_0x8705('0x3f')],{'$or':_[_0x8705('0x30')](_0x340fbb[_0x8705('0x38')],function(_0x2e2e01){var _0x31a1a0={};_0x31a1a0[_0x2e2e01]={'$like':'%'+_0x46dda5[_0x8705('0x35')][_0x8705('0x3e')]+'%'};return _0x31a1a0;})});}_0x340fbb=_['merge']({},_0x340fbb,_0x46dda5['options']);return _0x571313[_0x8705('0x71')](_0x340fbb);}})['then'](function(_0x2c06f7){if(_0x2c06f7){_0x2fb859=_0x2c06f7['length'];if(!_0x46dda5[_0x8705('0x35')][_0x8705('0x72')]('nolimit')){_0x340fbb['limit']=qs[_0x8705('0x1e')](_0x46dda5[_0x8705('0x35')][_0x8705('0x1e')]);_0x340fbb[_0x8705('0x20')]=qs[_0x8705('0x20')](_0x46dda5[_0x8705('0x35')]['offset']);}return _0x571313[_0x8705('0x71')](_0x340fbb);}})[_0x8705('0x27')](function(_0x59bfd9){if(_0x59bfd9){return _0x59bfd9?{'count':_0x2fb859,'rows':_0x59bfd9}:null;}})[_0x8705('0x27')](respondWithResult(_0x2914f8,null))[_0x8705('0x47')](handleError(_0x2914f8,null));};
\ No newline at end of file
index 47d4019..091afe3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0xdd4d=['lodash','util','moment','bluebird','path','rimraf','../../config/environment','exports','define','VoiceMusicOnHold'];(function(_0x432fca,_0xb0b1b5){var _0x3adba4=function(_0x5e3ae4){while(--_0x5e3ae4){_0x432fca['push'](_0x432fca['shift']());}};_0x3adba4(++_0xb0b1b5);}(_0xdd4d,0x14a));var _0xddd4=function(_0x112a10,_0x1588bb){_0x112a10=_0x112a10-0x0;var _0x1c31d3=_0xdd4d[_0x112a10];return _0x1c31d3;};'use strict';var _=require(_0xddd4('0x0'));var util=require(_0xddd4('0x1'));var logger=require('../../config/logger')('api');var moment=require(_0xddd4('0x2'));var BPromise=require(_0xddd4('0x3'));var rp=require('request-promise');var fs=require('fs');var path=require(_0xddd4('0x4'));var rimraf=require(_0xddd4('0x5'));var config=require(_0xddd4('0x6'));var attributes=require('./voiceMusicOnHold.attributes');module[_0xddd4('0x7')]=function(_0x2b0983,_0x2fdd5c){return _0x2b0983[_0xddd4('0x8')](_0xddd4('0x9'),attributes,{'tableName':'voice_musiconhold','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 2de7553..7dc11a8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0713=['VoiceMusicOnHold,\x20%s,\x20%s','request\x20sent','debug','VoiceMusicOnHold,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','request','then','info'];(function(_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
+var _0xa9e0=['http','info','VoiceMusicOnHold,\x20%s,\x20%s','request\x20sent','debug','VoiceMusicOnHold,\x20%s,\x20%s,\x20%s','code','error','message','result','catch','lodash','util','moment','ioredis','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise'];(function(_0x673cef,_0x4aa1e5){var _0x1c6f19=function(_0x1df2b4){while(--_0x1df2b4){_0x673cef['push'](_0x673cef['shift']());}};_0x1c6f19(++_0x4aa1e5);}(_0xa9e0,0x123));var _0x0a9e=function(_0x1ddedd,_0x485606){_0x1ddedd=_0x1ddedd-0x0;var _0xa3e1ac=_0xa9e0[_0x1ddedd];return _0xa3e1ac;};'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 347ab9a..462fd3e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0xaced=['/:id','update','destroy','delete','removeAgents','exports','multer','util','path','connect-timeout','express','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','get','/describe','isAuthenticated','describe','show','/:id/users','getAgents','/:id/teams','post','addTeams','put'];(function(_0x211b96,_0x4ba2c9){var _0x11a1e7=function(_0x58e855){while(--_0x58e855){_0x211b96['push'](_0x211b96['shift']());}};_0x11a1e7(++_0x4ba2c9);}(_0xaced,0x18c));var _0xdace=function(_0x5d3a28,_0x3cade6){_0x5d3a28=_0x5d3a28-0x0;var _0x588bad=_0xaced[_0x5d3a28];return _0x588bad;};'use strict';var multer=require(_0xdace('0x0'));var util=require(_0xdace('0x1'));var path=require(_0xdace('0x2'));var timeout=require(_0xdace('0x3'));var express=require(_0xdace('0x4'));var router=express['Router']();var fs_extra=require(_0xdace('0x5'));var auth=require(_0xdace('0x6'));var interaction=require(_0xdace('0x7'));var config=require(_0xdace('0x8'));var controller=require('./voicePrefix.controller');router[_0xdace('0x9')]('/',auth['isAuthenticated'](),controller['index']);router[_0xdace('0x9')](_0xdace('0xa'),auth[_0xdace('0xb')](),controller[_0xdace('0xc')]);router['get']('/:id',auth[_0xdace('0xb')](),controller[_0xdace('0xd')]);router[_0xdace('0x9')](_0xdace('0xe'),auth['isAuthenticated'](),controller[_0xdace('0xf')]);router[_0xdace('0x9')](_0xdace('0x10'),auth[_0xdace('0xb')](),controller['getTeams']);router[_0xdace('0x11')]('/',auth[_0xdace('0xb')](),controller['create']);router['post']('/:id/users',auth[_0xdace('0xb')](),controller['addAgents']);router[_0xdace('0x11')](_0xdace('0x10'),auth[_0xdace('0xb')](),controller[_0xdace('0x12')]);router[_0xdace('0x13')](_0xdace('0x14'),auth['isAuthenticated'](),controller[_0xdace('0x15')]);router['delete'](_0xdace('0x14'),auth[_0xdace('0xb')](),controller[_0xdace('0x16')]);router[_0xdace('0x17')](_0xdace('0xe'),auth[_0xdace('0xb')](),controller[_0xdace('0x18')]);router[_0xdace('0x17')]('/:id/teams',auth['isAuthenticated'](),controller['removeTeams']);module[_0xdace('0x19')]=router;
\ No newline at end of file
index 2857b8b..52b1646 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0xa16e=['exports','name','VIRTUAL','system-','getDataValue','STRING','INTEGER','sequelize'];(function(_0x1830d8,_0x103c82){var _0x1b4545=function(_0x101538){while(--_0x101538){_0x1830d8['push'](_0x1830d8['shift']());}};_0x1b4545(++_0x103c82);}(_0xa16e,0x197));var _0xea16=function(_0x589258,_0x245d44){_0x589258=_0x589258-0x0;var _0x4981e9=_0xa16e[_0x589258];return _0x4981e9;};'use strict';var Sequelize=require(_0xea16('0x0'));module[_0xea16('0x1')]={'name':{'type':Sequelize['STRING'],'allowNull':![],'unique':_0xea16('0x2')},'prefix':{'type':Sequelize[_0xea16('0x3')],'get':function(_0x302b9a){return _0xea16('0x4')+this[_0xea16('0x5')](_0xea16('0x2'))+'-';}},'description':{'type':Sequelize[_0xea16('0x6')]},'callerIdAll':{'type':Sequelize[_0xea16('0x6')]},'VoiceExtensionId':{'type':Sequelize[_0xea16('0x7')]}};
\ No newline at end of file
index 52678ac..f1d6df8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0x93e9=['VoicePrefixId','bulkCreate','Extensions\x20creation\x20failed','push','CDR(prefix)=','PREFIX-CALLERIDALL=','callerIdAll','No\x20callerid\x20available','${EXTEN:','length','charAt','body','system-','addAgents','ids','omit','spread','emit','userVoicePrefix:save','removeAgents','isArray','userVoicePrefix:remove','getAgents','findOne','User','getTeams','options','addTeams','Agents','voicePause','flatMap','each','TeamVoicePrefix','upsert','UserVoicePrefix','forEach','Team','select','field','tq.TeamId','from','team_has_voice_prefixes','join','ut.TeamId\x20=\x20tq.TeamId','VoicePrefixId\x20=\x20?','clone','ut.UserId\x20=\x20?','toString','QueryTypes','every','TeamId','includes','compact','isEmpty','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','path','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','../../config/logger','../../config/environment','../../mysqldb','redis','localhost','socket.io-emitter','./voicePrefix.socket','register','sendStatus','status','end','json','offset','undefined','limit','count','Content-Range','apply','reject','save','update','then','destroy','get','VoicePrefixes','UserProfileResource','error','stack','name','send','map','VoicePrefix','rawAttributes','type','query','keys','filters','intersection','model','attributes','fields','hasOwnProperty','nolimit','order','sort','where','pick','filter','merge','VIRTUAL','findAll','rows','show','params','includeAll','include','catch','find','describe','create','sequelize','transaction','VoiceExtension','VoiceExtensionId','user','userProfileId','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','context','from-sip','app','system','appdata','prefix','NoOp'];(function(_0x53e4cd,_0x5d930f){var _0x312dd9=function(_0x282341){while(--_0x282341){_0x53e4cd['push'](_0x53e4cd['shift']());}};_0x312dd9(++_0x5d930f);}(_0x93e9,0xcc));var _0x993e=function(_0x5ef2e5,_0x496362){_0x5ef2e5=_0x5ef2e5-0x0;var _0x2ddbb3=_0x93e9[_0x5ef2e5];return _0x2ddbb3;};'use strict';var emlformat=require(_0x993e('0x0'));var rimraf=require(_0x993e('0x1'));var zipdir=require(_0x993e('0x2'));var jsonpatch=require(_0x993e('0x3'));var rp=require(_0x993e('0x4'));var moment=require(_0x993e('0x5'));var BPromise=require(_0x993e('0x6'));var Mustache=require('mustache');var util=require('util');var path=require(_0x993e('0x7'));var sox=require(_0x993e('0x8'));var csv=require(_0x993e('0x9'));var ejs=require(_0x993e('0xa'));var fs=require('fs');var fs_extra=require(_0x993e('0xb'));var _=require(_0x993e('0xc'));var squel=require(_0x993e('0xd'));var crypto=require(_0x993e('0xe'));var jsforce=require('jsforce');var deskjs=require(_0x993e('0xf'));var toCsv=require(_0x993e('0x9'));var querystring=require(_0x993e('0x10'));var Papa=require(_0x993e('0x11'));var Redis=require(_0x993e('0x12'));var authService=require(_0x993e('0x13'));var qs=require(_0x993e('0x14'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x993e('0x15'));var logger=require(_0x993e('0x16'))('api');var utils=require('../../config/utils');var config=require(_0x993e('0x17'));var licenseUtil=require('../../config/license/util');var db=require(_0x993e('0x18'))['db'];config['redis']=_['defaults'](config[_0x993e('0x19')],{'host':_0x993e('0x1a'),'port':0x18eb});var socket=require(_0x993e('0x1b'))(new Redis(config[_0x993e('0x19')]));require(_0x993e('0x1c'))[_0x993e('0x1d')](socket);function respondWithStatusCode(_0x34ddda,_0x20f32a){_0x20f32a=_0x20f32a||0xcc;return function(_0x2a184b){if(_0x2a184b){return _0x34ddda[_0x993e('0x1e')](_0x20f32a);}return _0x34ddda[_0x993e('0x1f')](_0x20f32a)[_0x993e('0x20')]();};}function respondWithResult(_0x3df0e7,_0x125322){_0x125322=_0x125322||0xc8;return function(_0x1f267f){if(_0x1f267f){return _0x3df0e7[_0x993e('0x1f')](_0x125322)[_0x993e('0x21')](_0x1f267f);}};}function respondWithFilteredResult(_0x526e06,_0x22f7cc){return function(_0x1acd21){if(_0x1acd21){var _0x3cc2b9=typeof _0x22f7cc[_0x993e('0x22')]===_0x993e('0x23')&&typeof _0x22f7cc[_0x993e('0x24')]==='undefined';var _0x11cd41=_0x1acd21[_0x993e('0x25')];var _0x1eaf57=_0x3cc2b9?0x0:_0x22f7cc[_0x993e('0x22')];var _0x130a8a=_0x3cc2b9?_0x1acd21[_0x993e('0x25')]:_0x22f7cc[_0x993e('0x22')]+_0x22f7cc[_0x993e('0x24')];var _0x4bbe9c;if(_0x130a8a>=_0x11cd41){_0x130a8a=_0x11cd41;_0x4bbe9c=0xc8;}else{_0x4bbe9c=0xce;}_0x526e06[_0x993e('0x1f')](_0x4bbe9c);return _0x526e06['set'](_0x993e('0x26'),_0x1eaf57+'-'+_0x130a8a+'/'+_0x11cd41)[_0x993e('0x21')](_0x1acd21);}return null;};}function patchUpdates(_0x32b09e){return function(_0x5ba2a1){try{jsonpatch[_0x993e('0x27')](_0x5ba2a1,_0x32b09e,!![]);}catch(_0x13db4e){return BPromise[_0x993e('0x28')](_0x13db4e);}return _0x5ba2a1[_0x993e('0x29')]();};}function saveUpdates(_0x3b45ef,_0x328d22){return function(_0xa1c83e){if(_0xa1c83e){return _0xa1c83e[_0x993e('0x2a')](_0x3b45ef)[_0x993e('0x2b')](function(_0x18f6ac){return _0x18f6ac;});}return null;};}function removeEntity(_0x3fe099,_0x3603fa){return function(_0x4fe471){if(_0x4fe471){return _0x4fe471[_0x993e('0x2c')]()[_0x993e('0x2b')](function(){var _0x52b727=_0x4fe471[_0x993e('0x2d')]({'plain':!![]});var _0x4f5cc1=_0x993e('0x2e');return db[_0x993e('0x2f')][_0x993e('0x2c')]({'where':{'type':_0x4f5cc1,'resourceId':_0x52b727['id']}})[_0x993e('0x2b')](function(){return _0x4fe471;});})['then'](function(){_0x3fe099['status'](0xcc)[_0x993e('0x20')]();});}};}function handleEntityNotFound(_0x466d63,_0x4a4f00){return function(_0x223af0){if(!_0x223af0){_0x466d63[_0x993e('0x1e')](0x194);}return _0x223af0;};}function handleError(_0x248354,_0x4c5ee3){_0x4c5ee3=_0x4c5ee3||0x1f4;return function(_0x2495b7){logger[_0x993e('0x30')](_0x2495b7[_0x993e('0x31')]);if(_0x2495b7[_0x993e('0x32')]){delete _0x2495b7[_0x993e('0x32')];}_0x248354['status'](_0x4c5ee3)[_0x993e('0x33')](_0x2495b7);};}exports['index']=function(_0x782298,_0x5ba163){var _0x1da357={},_0x567ed4={},_0x3b9c3c={'count':0x0,'rows':[]};var _0x2ce5d5=_[_0x993e('0x34')](db[_0x993e('0x35')][_0x993e('0x36')],function(_0x360e2d){return{'name':_0x360e2d['fieldName'],'type':_0x360e2d[_0x993e('0x37')]['key']};});_0x567ed4['model']=_[_0x993e('0x34')](_0x2ce5d5,'name');_0x567ed4[_0x993e('0x38')]=_[_0x993e('0x39')](_0x782298[_0x993e('0x38')]);_0x567ed4[_0x993e('0x3a')]=_[_0x993e('0x3b')](_0x567ed4[_0x993e('0x3c')],_0x567ed4[_0x993e('0x38')]);_0x1da357[_0x993e('0x3d')]=_[_0x993e('0x3b')](_0x567ed4[_0x993e('0x3c')],qs[_0x993e('0x3e')](_0x782298[_0x993e('0x38')][_0x993e('0x3e')]));_0x1da357[_0x993e('0x3d')]=_0x1da357[_0x993e('0x3d')]['length']?_0x1da357[_0x993e('0x3d')]:_0x567ed4[_0x993e('0x3c')];if(!_0x782298[_0x993e('0x38')][_0x993e('0x3f')](_0x993e('0x40'))){_0x1da357[_0x993e('0x24')]=qs[_0x993e('0x24')](_0x782298[_0x993e('0x38')][_0x993e('0x24')]);_0x1da357['offset']=qs[_0x993e('0x22')](_0x782298['query'][_0x993e('0x22')]);}_0x1da357[_0x993e('0x41')]=qs[_0x993e('0x42')](_0x782298[_0x993e('0x38')][_0x993e('0x42')]);_0x1da357[_0x993e('0x43')]=qs[_0x993e('0x3a')](_[_0x993e('0x44')](_0x782298['query'],_0x567ed4[_0x993e('0x3a')]),_0x2ce5d5);if(_0x782298['query'][_0x993e('0x45')]){_0x1da357['where']=_[_0x993e('0x46')](_0x1da357[_0x993e('0x43')],{'$or':_[_0x993e('0x34')](_0x2ce5d5,function(_0x1f1327){if(_0x1f1327[_0x993e('0x37')]!==_0x993e('0x47')){var _0xb728cf={};_0xb728cf[_0x1f1327[_0x993e('0x32')]]={'$like':'%'+_0x782298['query'][_0x993e('0x45')]+'%'};return _0xb728cf;}})});}_0x1da357=_['merge']({},_0x1da357,_0x782298['options']);var _0x1a2712={'where':_0x1da357[_0x993e('0x43')]};return db[_0x993e('0x35')]['count'](_0x1a2712)[_0x993e('0x2b')](function(_0x40719d){_0x3b9c3c[_0x993e('0x25')]=_0x40719d;if(_0x782298['query']['includeAll']){_0x1da357['include']=[{'all':!![]}];}return db[_0x993e('0x35')][_0x993e('0x48')](_0x1da357);})[_0x993e('0x2b')](function(_0x539c9d){_0x3b9c3c[_0x993e('0x49')]=_0x539c9d;return _0x3b9c3c;})[_0x993e('0x2b')](respondWithFilteredResult(_0x5ba163,_0x1da357))['catch'](handleError(_0x5ba163,null));};exports[_0x993e('0x4a')]=function(_0x5f7563,_0x5074a6){var _0x258795={'raw':![],'where':{'id':_0x5f7563[_0x993e('0x4b')]['id']}},_0x576ea={};_0x576ea['model']=_['keys'](db['VoicePrefix'][_0x993e('0x36')]);_0x576ea[_0x993e('0x38')]=_[_0x993e('0x39')](_0x5f7563[_0x993e('0x38')]);_0x576ea['filters']=_[_0x993e('0x3b')](_0x576ea[_0x993e('0x3c')],_0x576ea[_0x993e('0x38')]);_0x258795[_0x993e('0x3d')]=_[_0x993e('0x3b')](_0x576ea[_0x993e('0x3c')],qs['fields'](_0x5f7563['query'][_0x993e('0x3e')]));_0x258795[_0x993e('0x3d')]=_0x258795['attributes']['length']?_0x258795[_0x993e('0x3d')]:_0x576ea[_0x993e('0x3c')];if(_0x5f7563[_0x993e('0x38')][_0x993e('0x4c')]){_0x258795[_0x993e('0x4d')]=[{'all':!![]}];}_0x258795=_[_0x993e('0x46')]({},_0x258795,_0x5f7563['options']);return db[_0x993e('0x35')]['find'](_0x258795)[_0x993e('0x2b')](handleEntityNotFound(_0x5074a6,null))[_0x993e('0x2b')](respondWithResult(_0x5074a6,null))[_0x993e('0x4e')](handleError(_0x5074a6,null));};exports[_0x993e('0x2c')]=function(_0x2cba37,_0x276b99){return db[_0x993e('0x35')][_0x993e('0x4f')]({'where':{'id':_0x2cba37['params']['id']}})[_0x993e('0x2b')](handleEntityNotFound(_0x276b99,null))[_0x993e('0x2b')](removeEntity(_0x276b99,null))[_0x993e('0x4e')](handleError(_0x276b99,null));};exports['describe']=function(_0x355912,_0x53c1e9){return db[_0x993e('0x35')][_0x993e('0x50')]()['then'](respondWithResult(_0x53c1e9,null))[_0x993e('0x4e')](handleError(_0x53c1e9,null));};exports[_0x993e('0x51')]=function(_0x579c43,_0x3809ef){var _0x207e27;return db[_0x993e('0x52')][_0x993e('0x53')](function(_0x2e368e){return db['VoicePrefix']['create'](_0x579c43['body'],{'transaction':_0x2e368e})[_0x993e('0x2b')](function(_0x29f8a5){_0x207e27=_0x29f8a5[_0x993e('0x2d')]({'plain':!![]});return db[_0x993e('0x54')][_0x993e('0x4f')]({'where':{'id':_0x207e27[_0x993e('0x55')]},'raw':!![]})['then'](function(_0x3a897d){return createVoicePrefixExtensions(_0x207e27,_0x3a897d,_0x2e368e);});});})[_0x993e('0x2b')](function(){var _0x15c8ed=_0x579c43['user'][_0x993e('0x2d')]({'plain':!![]});if(!_0x15c8ed)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x15c8ed['role']===_0x993e('0x56')){var _0x37d7b1=_0x207e27;return db['UserProfileSection'][_0x993e('0x4f')]({'where':{'name':'VoicePrefixes','userProfileId':_0x15c8ed[_0x993e('0x57')]},'raw':!![]})[_0x993e('0x2b')](function(_0x4a0dbd){if(_0x4a0dbd&&_0x4a0dbd['autoAssociation']===0x0){return db[_0x993e('0x2f')][_0x993e('0x51')]({'name':_0x37d7b1[_0x993e('0x32')],'resourceId':_0x37d7b1['id'],'type':_0x4a0dbd[_0x993e('0x32')],'sectionId':_0x4a0dbd['id']},{})[_0x993e('0x2b')](function(){return _0x207e27;});}else{return _0x207e27;}})[_0x993e('0x4e')](function(_0x4f9225){logger[_0x993e('0x30')](_0x993e('0x58'),_0x4f9225);throw _0x4f9225;});}return _0x207e27;})['then'](respondWithResult(_0x3809ef,null))[_0x993e('0x4e')](handleError(_0x3809ef,null));};function Extension(_0x473e00,_0x1b2113,_0x5ebaec,_0x426341){this[_0x993e('0x59')]=_0x993e('0x5a');this['exten']=_0x473e00;this[_0x993e('0x5b')]=_0x5ebaec;this[_0x993e('0x37')]=_0x993e('0x5c');this['description']='Voice\x20Prefix\x20Extension';this['priority']=_0x1b2113;this[_0x993e('0x5d')]=_0x426341;}function createVoicePrefixExtensions(_0x98d16c,_0x3a3d29,_0x411484){return new BPromise(function(_0xc62106,_0x55a347){var _0x18367f=new Extension(formatPrefixName(_0x98d16c[_0x993e('0x5e')]),0x1,_0x993e('0x5f'),'Voice\x20Prefix');_0x18367f[_0x993e('0x60')]=_0x98d16c['id'];return db[_0x993e('0x54')][_0x993e('0x51')](_0x18367f,{'transaction':_0x411484})[_0x993e('0x2b')](function(_0x5e4ab1){var _0x54417b=_0x5e4ab1[_0x993e('0x2d')]({'plain':!![]});var _0x51cec9=_['map'](addVoicePrefixExtensions(_0x98d16c,_0x3a3d29),function(_0x17c7f7){_0x17c7f7[_0x993e('0x55')]=_0x54417b['id'];_0x17c7f7[_0x993e('0x60')]=_0x98d16c['id'];return _0x17c7f7;});return db[_0x993e('0x54')][_0x993e('0x61')](_0x51cec9,{'transaction':_0x411484})[_0x993e('0x2b')](function(_0x211204){if(!_0x211204){return _0x55a347(_0x993e('0x62'));}else{return _0xc62106(_0x211204);}})[_0x993e('0x4e')](function(_0x113395){return _0x55a347(_0x113395);});});;});};function addVoicePrefixExtensions(_0x300a93,_0x44def2){var _0x2ddc16=[];var _0x609430=formatPrefixName(_0x300a93[_0x993e('0x5e')]);_0x2ddc16[_0x993e('0x63')](new Extension(_0x609430,0x2,'Set',_0x993e('0x64')+_0x300a93[_0x993e('0x32')]));if(_0x300a93['callerIdAll']){_0x2ddc16[_0x993e('0x63')](new Extension(_0x609430,0x3,'Set',_0x993e('0x65')+_0x300a93[_0x993e('0x66')]));}else{_0x2ddc16[_0x993e('0x63')](new Extension(_0x609430,0x3,'NoOp',_0x993e('0x67')));}_0x2ddc16['push'](new Extension(_0x609430,0x4,'goto',_0x44def2[_0x993e('0x59')]+','+_0x993e('0x68')+(0x8+_0x300a93[_0x993e('0x32')][_0x993e('0x69')])+'}'+','+0x1));return _0x2ddc16;}function formatPrefixName(_0x2a243a){var _0x5194de='_';for(var _0x120d51=0x0;_0x120d51<_0x2a243a[_0x993e('0x69')];_0x120d51++){if(_0x2a243a[_0x993e('0x6a')](_0x120d51)=='-'){_0x5194de+=_0x2a243a['charAt'](_0x120d51);}else{_0x5194de+='['+_0x2a243a[_0x993e('0x6a')](_0x120d51)+']';}}_0x5194de+='.';return _0x5194de;}exports['update']=function(_0x1ab10e,_0x6ef96,_0x42288d){var _0x5afba1=_0x1ab10e[_0x993e('0x6b')];_0x5afba1[_0x993e('0x5e')]=_0x993e('0x6c')+_0x5afba1[_0x993e('0x32')]+'-';return db[_0x993e('0x52')][_0x993e('0x53')](function(_0x108cad){return db[_0x993e('0x35')][_0x993e('0x2a')](_0x5afba1,{'where':{'id':_0x5afba1['id']},'transaction':_0x108cad})[_0x993e('0x2b')](function(){return db['VoiceExtension'][_0x993e('0x2c')]({'where':{'VoicePrefixId':_0x5afba1['id']},'transaction':_0x108cad})[_0x993e('0x2b')](function(){return db[_0x993e('0x54')][_0x993e('0x4f')]({'where':{'id':_0x5afba1[_0x993e('0x55')]},'raw':!![]})[_0x993e('0x2b')](function(_0x282c53){return createVoicePrefixExtensions(_0x5afba1,_0x282c53,_0x108cad);});});});})[_0x993e('0x2b')](function(){return db['VoicePrefix']['findById'](_0x5afba1['id']);})[_0x993e('0x2b')](respondWithResult(_0x6ef96,null))['catch'](handleError(_0x6ef96,null));};exports[_0x993e('0x6d')]=function(_0x444da6,_0x2ce913,_0x49788e){return db[_0x993e('0x35')]['find']({'where':{'id':_0x444da6[_0x993e('0x4b')]['id']}})[_0x993e('0x2b')](handleEntityNotFound(_0x2ce913,null))[_0x993e('0x2b')](function(_0x40768a){if(_0x40768a){return _0x40768a[_0x993e('0x6d')](_0x444da6[_0x993e('0x6b')][_0x993e('0x6e')],_[_0x993e('0x6f')](_0x444da6['body'],['ids','id'])||{})[_0x993e('0x70')](function(_0x5a70ff){for(var _0x2fb182=0x0;_0x2fb182<_0x444da6[_0x993e('0x6b')][_0x993e('0x6e')][_0x993e('0x69')];_0x2fb182+=0x1){socket[_0x993e('0x71')](_0x993e('0x72'),{'UserId':Number(_0x444da6[_0x993e('0x6b')][_0x993e('0x6e')][_0x2fb182]),'VoicePrefixId':Number(_0x444da6[_0x993e('0x4b')]['id'])});}return _0x5a70ff;});}})[_0x993e('0x2b')](respondWithResult(_0x2ce913,null))['catch'](handleError(_0x2ce913,null));};exports[_0x993e('0x73')]=function(_0x14347f,_0x4a0002,_0x4742d9){return db[_0x993e('0x35')][_0x993e('0x4f')]({'where':{'id':_0x14347f[_0x993e('0x4b')]['id']}})[_0x993e('0x2b')](handleEntityNotFound(_0x4a0002,null))[_0x993e('0x2b')](function(_0x4157b6){if(_0x4157b6){return _0x4157b6[_0x993e('0x73')](_0x14347f[_0x993e('0x38')]['ids'])[_0x993e('0x2b')](function(){if(_[_0x993e('0x74')](_0x14347f[_0x993e('0x38')][_0x993e('0x6e')])){for(var _0x53ce16=0x0;_0x53ce16<_0x14347f['query'][_0x993e('0x6e')]['length'];_0x53ce16+=0x1){socket[_0x993e('0x71')](_0x993e('0x75'),{'UserId':Number(_0x14347f[_0x993e('0x38')][_0x993e('0x6e')][_0x53ce16]),'VoicePrefixId':Number(_0x14347f[_0x993e('0x4b')]['id'])});}}else{socket[_0x993e('0x71')](_0x993e('0x75'),{'UserId':Number(_0x14347f[_0x993e('0x38')][_0x993e('0x6e')]),'VoicePrefixId':Number(_0x14347f[_0x993e('0x4b')]['id'])});}});}})['then'](respondWithStatusCode(_0x4a0002,null))[_0x993e('0x4e')](handleError(_0x4a0002,null));};exports[_0x993e('0x76')]=function(_0x3abd3a,_0x278c2a,_0x3f6347){var _0x1a3967={};var _0x1079e7={};var _0x5c634a;var _0x47c3b6;return db[_0x993e('0x35')][_0x993e('0x77')]({'where':{'id':_0x3abd3a[_0x993e('0x4b')]['id']}})[_0x993e('0x2b')](handleEntityNotFound(_0x278c2a,null))[_0x993e('0x2b')](function(_0x53b0c8){if(_0x53b0c8){_0x5c634a=_0x53b0c8;_0x1079e7['model']=_['keys'](db[_0x993e('0x78')][_0x993e('0x36')]);_0x1079e7[_0x993e('0x38')]=_[_0x993e('0x39')](_0x3abd3a[_0x993e('0x38')]);_0x1079e7['filters']=_[_0x993e('0x3b')](_0x1079e7[_0x993e('0x3c')],_0x1079e7[_0x993e('0x38')]);_0x1a3967['attributes']=_[_0x993e('0x3b')](_0x1079e7[_0x993e('0x3c')],qs[_0x993e('0x3e')](_0x3abd3a[_0x993e('0x38')][_0x993e('0x3e')]));_0x1a3967[_0x993e('0x3d')]=_0x1a3967['attributes'][_0x993e('0x69')]?_0x1a3967['attributes']:_0x1079e7['model'];_0x1a3967['order']=qs['sort'](_0x3abd3a[_0x993e('0x38')][_0x993e('0x42')]);_0x1a3967[_0x993e('0x43')]=qs[_0x993e('0x3a')](_[_0x993e('0x44')](_0x3abd3a[_0x993e('0x38')],_0x1079e7[_0x993e('0x3a')]));if(_0x3abd3a[_0x993e('0x38')][_0x993e('0x45')]){_0x1a3967['where']=_[_0x993e('0x46')](_0x1a3967['where'],{'$or':_[_0x993e('0x34')](_0x1a3967[_0x993e('0x3d')],function(_0x3e7793){var _0x65c6f0={};_0x65c6f0[_0x3e7793]={'$like':'%'+_0x3abd3a[_0x993e('0x38')][_0x993e('0x45')]+'%'};return _0x65c6f0;})});}_0x1a3967=_[_0x993e('0x46')]({},_0x1a3967,_0x3abd3a['options']);return _0x5c634a[_0x993e('0x76')](_0x1a3967);}})[_0x993e('0x2b')](function(_0x285c93){if(_0x285c93){_0x47c3b6=_0x285c93['length'];if(!_0x3abd3a[_0x993e('0x38')][_0x993e('0x3f')](_0x993e('0x40'))){_0x1a3967['limit']=qs[_0x993e('0x24')](_0x3abd3a[_0x993e('0x38')][_0x993e('0x24')]);_0x1a3967[_0x993e('0x22')]=qs[_0x993e('0x22')](_0x3abd3a[_0x993e('0x38')][_0x993e('0x22')]);}return _0x5c634a[_0x993e('0x76')](_0x1a3967);}})['then'](function(_0x412d21){if(_0x412d21){return _0x412d21?{'count':_0x47c3b6,'rows':_0x412d21}:null;}})['then'](respondWithResult(_0x278c2a,null))[_0x993e('0x4e')](handleError(_0x278c2a,null));};exports[_0x993e('0x79')]=function(_0x4d6d94,_0x505f28,_0x4e2ccf){var _0x4506cb={};var _0x31e947={};var _0x7800d4;var _0x4e1fcf;return db[_0x993e('0x35')][_0x993e('0x77')]({'where':{'id':_0x4d6d94[_0x993e('0x4b')]['id']}})[_0x993e('0x2b')](handleEntityNotFound(_0x505f28,null))['then'](function(_0xc35545){if(_0xc35545){_0x7800d4=_0xc35545;_0x31e947['model']=_[_0x993e('0x39')](db['Team']['rawAttributes']);_0x31e947[_0x993e('0x38')]=_[_0x993e('0x39')](_0x4d6d94[_0x993e('0x38')]);_0x31e947[_0x993e('0x3a')]=_['intersection'](_0x31e947['model'],_0x31e947['query']);_0x4506cb[_0x993e('0x3d')]=_['intersection'](_0x31e947[_0x993e('0x3c')],qs[_0x993e('0x3e')](_0x4d6d94[_0x993e('0x38')][_0x993e('0x3e')]));_0x4506cb[_0x993e('0x3d')]=_0x4506cb['attributes'][_0x993e('0x69')]?_0x4506cb[_0x993e('0x3d')]:_0x31e947['model'];_0x4506cb[_0x993e('0x41')]=qs['sort'](_0x4d6d94[_0x993e('0x38')][_0x993e('0x42')]);_0x4506cb[_0x993e('0x43')]=qs[_0x993e('0x3a')](_[_0x993e('0x44')](_0x4d6d94[_0x993e('0x38')],_0x31e947[_0x993e('0x3a')]));if(_0x4d6d94[_0x993e('0x38')][_0x993e('0x45')]){_0x4506cb['where']=_[_0x993e('0x46')](_0x4506cb['where'],{'$or':_[_0x993e('0x34')](_0x4506cb[_0x993e('0x3d')],function(_0x50dd66){var _0x48acd5={};_0x48acd5[_0x50dd66]={'$like':'%'+_0x4d6d94[_0x993e('0x38')][_0x993e('0x45')]+'%'};return _0x48acd5;})});}_0x4506cb=_['merge']({},_0x4506cb,_0x4d6d94[_0x993e('0x7a')]);return _0x7800d4[_0x993e('0x79')](_0x4506cb);}})[_0x993e('0x2b')](function(_0xc56e5a){if(_0xc56e5a){_0x4e1fcf=_0xc56e5a['length'];if(!_0x4d6d94[_0x993e('0x38')][_0x993e('0x3f')](_0x993e('0x40'))){_0x4506cb[_0x993e('0x24')]=qs[_0x993e('0x24')](_0x4d6d94['query'][_0x993e('0x24')]);_0x4506cb[_0x993e('0x22')]=qs[_0x993e('0x22')](_0x4d6d94[_0x993e('0x38')][_0x993e('0x22')]);}return _0x7800d4[_0x993e('0x79')](_0x4506cb);}})[_0x993e('0x2b')](function(_0x5d2b00){if(_0x5d2b00){return _0x5d2b00?{'count':_0x4e1fcf,'rows':_0x5d2b00}:null;}})[_0x993e('0x2b')](respondWithResult(_0x505f28,null))['catch'](handleError(_0x505f28,null));};exports[_0x993e('0x7b')]=function(_0x8dc65,_0x4a5755,_0x43b5c5){var _0x4d53d1=_0x8dc65['body'][_0x993e('0x6e')];var _0x371be2;return db['Team'][_0x993e('0x48')]({'where':{'id':_0x4d53d1},'attributes':['id'],'include':[{'model':db[_0x993e('0x78')],'as':_0x993e('0x7c'),'attributes':['id',_0x993e('0x32'),'online',_0x993e('0x7d'),'interface'],'raw':!![]}]})[_0x993e('0x2b')](function(_0x5c9960){if(_0x5c9960){_0x371be2=_0x5c9960;var _0x4286a0=_[_0x993e('0x7e')](_0x5c9960,function(_0x2540e4){var _0x56a23a=_0x2540e4['get']({'plain':!![]});return _0x56a23a[_0x993e('0x7c')];});return db[_0x993e('0x35')][_0x993e('0x4f')]({'where':{'id':_0x8dc65[_0x993e('0x4b')]['id']}})['then'](function(_0x37409f){return db['sequelize'][_0x993e('0x53')](function(_0xa16043){return _0x37409f[_0x993e('0x7b')](_0x4d53d1,{'transaction':_0xa16043})['then'](function(){return BPromise[_0x993e('0x7f')](_0x371be2,function(_0x30f7a3){return db[_0x993e('0x80')][_0x993e('0x81')]({'TeamId':_0x30f7a3['id'],'VoicePrefixId':_0x8dc65[_0x993e('0x4b')]['id']},{'transaction':_0xa16043});});})[_0x993e('0x2b')](function(){return BPromise[_0x993e('0x7f')](_0x4286a0,function(_0x3e61d2){return db[_0x993e('0x82')]['findOrCreate']({'where':{'UserId':_0x3e61d2['id'],'VoicePrefixId':_0x8dc65['params']['id']},'transaction':_0xa16043});});})['then'](function(){_0x4286a0[_0x993e('0x83')](function(_0x47c230){socket[_0x993e('0x71')](_0x993e('0x72'),{'UserId':_0x47c230['id'],'VoicePrefixId':_0x37409f['id']});});});});});}})[_0x993e('0x2b')](respondWithStatusCode(_0x4a5755,null))[_0x993e('0x4e')](handleError(_0x4a5755,null));};exports['removeTeams']=function(_0x548dfb,_0x123dcd,_0x4e7340){return db[_0x993e('0x84')][_0x993e('0x48')]({'where':{'id':_0x548dfb[_0x993e('0x38')][_0x993e('0x6e')]},'attributes':['id'],'include':[{'model':db['User'],'as':_0x993e('0x7c'),'attributes':['id'],'raw':!![]}]})['then'](handleEntityNotFound(_0x123dcd,null))['then'](function(_0x242374){var _0x1a3779=_[_0x993e('0x34')](_0x242374,'id');var _0x366809=[];var _0x11ba3a=[];var _0x1b2ca0=squel[_0x993e('0x85')]();_0x1b2ca0[_0x993e('0x86')](_0x993e('0x87'))[_0x993e('0x88')](_0x993e('0x89'),'tq')[_0x993e('0x8a')]('user_has_teams','ut',_0x993e('0x8b'))[_0x993e('0x43')](_0x993e('0x8c'),_0x548dfb[_0x993e('0x4b')]['id']);for(var _0x23ecf0=0x0;_0x23ecf0<_0x242374[_0x993e('0x69')];_0x23ecf0+=0x1){let _0x2fcfaa=_0x242374[_0x23ecf0];for(var _0x5303c9=0x0;_0x5303c9<_0x2fcfaa[_0x993e('0x7c')]['length'];_0x5303c9+=0x1){let _0x5d5dc8=_0x2fcfaa[_0x993e('0x7c')][_0x5303c9];var _0x102393=_0x1b2ca0[_0x993e('0x8d')]();_0x102393['where'](_0x993e('0x8e'),_0x5d5dc8['id']);_0x11ba3a[_0x993e('0x63')](db[_0x993e('0x52')][_0x993e('0x38')](_0x102393[_0x993e('0x8f')](),{'type':db[_0x993e('0x52')][_0x993e('0x90')]['SELECT']})[_0x993e('0x2b')](function(_0x6ee3c0){if(_0x6ee3c0['length']===0x1){return _0x5d5dc8['id'];}else{var _0x58fee1=_[_0x993e('0x91')](_[_0x993e('0x34')](_0x6ee3c0,_0x993e('0x92')),function(_0x2f0669){return _[_0x993e('0x93')](_0x1a3779,_0x2f0669);});if(_0x58fee1){return _0x5d5dc8['id'];}}}));}}return BPromise['all'](_0x11ba3a)[_0x993e('0x2b')](function(_0x3725b5){_0x366809=_(_0x366809)['union'](_0x3725b5)[_0x993e('0x94')]()['value']();return db[_0x993e('0x35')][_0x993e('0x4f')]({'where':{'id':_0x548dfb['params']['id']}})[_0x993e('0x2b')](function(_0x5ee2e0){return db[_0x993e('0x52')][_0x993e('0x53')](function(_0x289772){return _0x5ee2e0['removeTeams'](_0x548dfb['query'][_0x993e('0x6e')],{'transaction':_0x289772})[_0x993e('0x2b')](function(){if(!_[_0x993e('0x95')](_0x366809)){return _0x5ee2e0[_0x993e('0x73')](_0x366809,{'transaction':_0x289772});}})[_0x993e('0x2b')](function(){_0x366809[_0x993e('0x83')](function(_0x366f8f){socket[_0x993e('0x71')](_0x993e('0x75'),{'UserId':_0x366f8f,'VoicePrefixId':_0x5ee2e0['id']});});});});});});})['then'](respondWithStatusCode(_0x123dcd,null))[_0x993e('0x4e')](handleError(_0x123dcd,null));};
\ No newline at end of file
index c0e28da..86b31df 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0x88a3=['hook','exports','events','../../mysqldb','VoicePrefix','setMaxListeners','save','update','remove','emit','hasOwnProperty'];(function(_0x4099fd,_0x1c865e){var _0x442ed3=function(_0x338c8e){while(--_0x338c8e){_0x4099fd['push'](_0x4099fd['shift']());}};_0x442ed3(++_0x1c865e);}(_0x88a3,0x1f1));var _0x388a=function(_0x548200,_0x3241b8){_0x548200=_0x548200-0x0;var _0x1a6d74=_0x88a3[_0x548200];return _0x1a6d74;};'use strict';var EventEmitter=require(_0x388a('0x0'));var VoicePrefix=require(_0x388a('0x1'))['db'][_0x388a('0x2')];var VoicePrefixEvents=new EventEmitter();VoicePrefixEvents[_0x388a('0x3')](0x0);var events={'afterCreate':_0x388a('0x4'),'afterUpdate':_0x388a('0x5'),'afterDestroy':_0x388a('0x6')};function emitEvent(_0x1030ad){return function(_0x2dc4a5,_0x556129,_0x57faa9){VoicePrefixEvents[_0x388a('0x7')](_0x1030ad+':'+_0x2dc4a5['id'],_0x2dc4a5);VoicePrefixEvents[_0x388a('0x7')](_0x1030ad,_0x2dc4a5);_0x57faa9(null);};}for(var e in events){if(events[_0x388a('0x8')](e)){var event=events[e];VoicePrefix[_0x388a('0x9')](e,emitEvent(event));}}module[_0x388a('0xa')]=VoicePrefixEvents;
\ No newline at end of file
index db93227..84b2759 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0x4611=['define','voice_prefixes','lodash','moment','request-promise','path','rimraf','../../config/environment'];(function(_0x5e22f9,_0x1c0895){var _0x559530=function(_0x463d09){while(--_0x463d09){_0x5e22f9['push'](_0x5e22f9['shift']());}};_0x559530(++_0x1c0895);}(_0x4611,0x13a));var _0x1461=function(_0x212856,_0x1a505a){_0x212856=_0x212856-0x0;var _0x26f0c1=_0x4611[_0x212856];return _0x26f0c1;};'use strict';var _=require(_0x1461('0x0'));var util=require('util');var logger=require('../../config/logger')('api');var moment=require(_0x1461('0x1'));var BPromise=require('bluebird');var rp=require(_0x1461('0x2'));var fs=require('fs');var path=require(_0x1461('0x3'));var rimraf=require(_0x1461('0x4'));var config=require(_0x1461('0x5'));var attributes=require('./voicePrefix.attributes');module['exports']=function(_0x1a73b6,_0x3a2fb8){return _0x1a73b6[_0x1461('0x6')]('VoicePrefix',attributes,{'tableName':_0x1461('0x7'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 7850c73..9e4b1cb 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0x2432=['result','catch','lodash','util','moment','bluebird','ioredis','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','redis','defaults','localhost','socket.io-emitter','./voicePrefix.socket','register','request','then','info','VoicePrefix,\x20%s,\x20%s','request\x20sent','VoicePrefix,\x20%s,\x20%s,\x20%s','stringify','error','code','message'];(function(_0x38a3fe,_0x399d3c){var _0x3ce1c6=function(_0xf72439){while(--_0xf72439){_0x38a3fe['push'](_0x38a3fe['shift']());}};_0x3ce1c6(++_0x399d3c);}(_0x2432,0x7a));var _0x2243=function(_0x47a145,_0x5b3471){_0x47a145=_0x47a145-0x0;var _0x58dd42=_0x2432[_0x47a145];return _0x58dd42;};'use strict';var _=require(_0x2243('0x0'));var util=require(_0x2243('0x1'));var moment=require(_0x2243('0x2'));var BPromise=require(_0x2243('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x2243('0x4'));var db=require('../../mysqldb')['db'];var utils=require(_0x2243('0x5'));var logger=require(_0x2243('0x6'))(_0x2243('0x7'));var config=require(_0x2243('0x8'));var jayson=require(_0x2243('0x9'));var client=jayson[_0x2243('0xa')][_0x2243('0xb')]({'port':0x232a});config[_0x2243('0xc')]=_[_0x2243('0xd')](config['redis'],{'host':_0x2243('0xe'),'port':0x18eb});var socket=require(_0x2243('0xf'))(new Redis(config[_0x2243('0xc')]));require(_0x2243('0x10'))[_0x2243('0x11')](socket);function respondWithRpcPromise(_0x3cf586,_0x2af366,_0x446bef){return new BPromise(function(_0x361f08,_0x2456b2){return client[_0x2243('0x12')](_0x3cf586,_0x446bef)[_0x2243('0x13')](function(_0x1db7a3){logger[_0x2243('0x14')](_0x2243('0x15'),_0x2af366,_0x2243('0x16'));logger['debug'](_0x2243('0x17'),_0x2af366,_0x2243('0x16'),JSON[_0x2243('0x18')](_0x1db7a3));if(_0x1db7a3[_0x2243('0x19')]){if(_0x1db7a3['error'][_0x2243('0x1a')]===0x1f4){logger['error'](_0x2243('0x15'),_0x2af366,_0x1db7a3['error'][_0x2243('0x1b')]);return _0x2456b2(_0x1db7a3[_0x2243('0x19')][_0x2243('0x1b')]);}logger[_0x2243('0x19')]('VoicePrefix,\x20%s,\x20%s',_0x2af366,_0x1db7a3['error'][_0x2243('0x1b')]);return _0x361f08(_0x1db7a3[_0x2243('0x19')][_0x2243('0x1b')]);}else{logger[_0x2243('0x14')](_0x2243('0x15'),_0x2af366,_0x2243('0x16'));_0x361f08(_0x1db7a3[_0x2243('0x1c')][_0x2243('0x1b')]);}})[_0x2243('0x1d')](function(_0x199414){logger[_0x2243('0x19')]('VoicePrefix,\x20%s,\x20%s',_0x2af366,_0x199414);_0x2456b2(_0x199414);});});}
\ No newline at end of file
index a44d597..73e6fa7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0x3f19=['length','voicePrefix:','./voicePrefix.events','emit','register'];(function(_0x432682,_0x253044){var _0x463d05=function(_0xa73403){while(--_0xa73403){_0x432682['push'](_0x432682['shift']());}};_0x463d05(++_0x253044);}(_0x3f19,0xc0));var _0x93f1=function(_0x291d3f,_0x3ef99f){_0x291d3f=_0x291d3f-0x0;var _0x242080=_0x3f19[_0x291d3f];return _0x242080;};'use strict';var VoicePrefixEvents=require(_0x93f1('0x0'));var events=['save','remove','update'];function createListener(_0x33bddc,_0x4d1cac){return function(_0x452cf9){_0x4d1cac[_0x93f1('0x1')](_0x33bddc,_0x452cf9);};}function removeListener(_0x3bd3fa,_0x2057aa){return function(){VoicePrefixEvents['removeListener'](_0x3bd3fa,_0x2057aa);};}exports[_0x93f1('0x2')]=function(_0x522769){for(var _0x999026=0x0,_0x425c6f=events[_0x93f1('0x3')];_0x999026<_0x425c6f;_0x999026++){var _0xdaa92=events[_0x999026];var _0x5d7374=createListener(_0x93f1('0x4')+_0xdaa92,_0x522769);VoicePrefixEvents['on'](_0xdaa92,_0x5d7374);}};
\ No newline at end of file
index 6e38f59..db7d687 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(_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
+var _0xa9e0=['addAgents','/:id/blacklists','addBlackLists','update','delete','destroy','removeTeams','removeAgents','removeLists','removeBlackLists','exports','multer','util','path','Router','../../components/auth/service','../../components/interaction/service','../../config/environment','./voiceQueue.controller','get','index','/:id','getHoppers','/:id/hopper_histories','isAuthenticated','getHopperHistories','/:id/hopper_black','getHopperBlacks','/:id/teams','/:id/users','getAgents','/:id/members','getMembers','/:id/lists','getLists','post','create','/:id/clone','clone','addTeams'];(function(_0x5d96ee,_0x523278){var _0x39092b=function(_0x4ae30b){while(--_0x4ae30b){_0x5d96ee['push'](_0x5d96ee['shift']());}};_0x39092b(++_0x523278);}(_0xa9e0,0x123));var _0x0a9e=function(_0x173d7e,_0x3242fd){_0x173d7e=_0x173d7e-0x0;var _0x2220d6=_0xa9e0[_0x173d7e];return _0x2220d6;};'use strict';var multer=require(_0x0a9e('0x0'));var util=require(_0x0a9e('0x1'));var path=require(_0x0a9e('0x2'));var timeout=require('connect-timeout');var express=require('express');var router=express[_0x0a9e('0x3')]();var fs_extra=require('fs-extra');var auth=require(_0x0a9e('0x4'));var interaction=require(_0x0a9e('0x5'));var config=require(_0x0a9e('0x6'));var controller=require(_0x0a9e('0x7'));router[_0x0a9e('0x8')]('/',auth['isAuthenticated'](),controller[_0x0a9e('0x9')]);router[_0x0a9e('0x8')](_0x0a9e('0xa'),auth['isAuthenticated'](),controller['show']);router[_0x0a9e('0x8')]('/:id/hoppers',auth['isAuthenticated'](),controller[_0x0a9e('0xb')]);router[_0x0a9e('0x8')](_0x0a9e('0xc'),auth[_0x0a9e('0xd')](),controller[_0x0a9e('0xe')]);router[_0x0a9e('0x8')]('/:id/hopper_finals',auth['isAuthenticated'](),controller['getHopperFinals']);router['get'](_0x0a9e('0xf'),auth[_0x0a9e('0xd')](),controller[_0x0a9e('0x10')]);router[_0x0a9e('0x8')](_0x0a9e('0x11'),auth[_0x0a9e('0xd')](),controller['getTeams']);router[_0x0a9e('0x8')](_0x0a9e('0x12'),auth[_0x0a9e('0xd')](),controller[_0x0a9e('0x13')]);router[_0x0a9e('0x8')](_0x0a9e('0x14'),auth['isAuthenticated'](),controller[_0x0a9e('0x15')]);router['get'](_0x0a9e('0x16'),auth['isAuthenticated'](),controller[_0x0a9e('0x17')]);router[_0x0a9e('0x8')]('/:id/blacklists',auth[_0x0a9e('0xd')](),controller['getBlackLists']);router[_0x0a9e('0x18')]('/',auth[_0x0a9e('0xd')](),controller[_0x0a9e('0x19')]);router[_0x0a9e('0x18')](_0x0a9e('0x1a'),auth[_0x0a9e('0xd')](),controller[_0x0a9e('0x1b')]);router[_0x0a9e('0x18')](_0x0a9e('0x11'),auth[_0x0a9e('0xd')](),controller[_0x0a9e('0x1c')]);router[_0x0a9e('0x18')]('/:id/users',auth[_0x0a9e('0xd')](),controller[_0x0a9e('0x1d')]);router['post'](_0x0a9e('0x16'),auth['isAuthenticated'](),controller['addLists']);router[_0x0a9e('0x18')](_0x0a9e('0x1e'),auth[_0x0a9e('0xd')](),controller[_0x0a9e('0x1f')]);router['put'](_0x0a9e('0xa'),auth[_0x0a9e('0xd')](),controller[_0x0a9e('0x20')]);router[_0x0a9e('0x21')](_0x0a9e('0xa'),auth[_0x0a9e('0xd')](),controller[_0x0a9e('0x22')]);router['delete']('/:id/teams',auth[_0x0a9e('0xd')](),controller[_0x0a9e('0x23')]);router[_0x0a9e('0x21')](_0x0a9e('0x12'),auth['isAuthenticated'](),controller[_0x0a9e('0x24')]);router['delete'](_0x0a9e('0x16'),auth['isAuthenticated'](),controller[_0x0a9e('0x25')]);router[_0x0a9e('0x21')](_0x0a9e('0x1e'),auth[_0x0a9e('0xd')](),controller[_0x0a9e('0x26')]);module[_0x0a9e('0x27')]=router;
\ No newline at end of file
index a380af3..f0c87e5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0x4f56=['Active/Disactive\x20AMD','#AMD\x20Maximum\x20Number\x20Of\x20Words','#AMD\x20Silence\x20Threshold\x20(min:0,\x20max:32767)','#AMD\x20Maximum\x20Word\x20Length','#RecallMe\x20Timeout\x20(min:1)','DESC','ASC','#NoSuchNumber\x20Retry\x20(min:1,\x20max:999)','#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\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','STRING','name','ENUM','inbound','leastrecent','fewestcalls','random','rrmemory','linear','wrandom','rrordered','ringall','setDataValue','strategy','getDataValue','type','booked','roundrobin','progressive','power','INTEGER','yes','once','TEXT','periodic_announce','join','joinempty','split','leavewhenempty','acw','wrapuptime','BOOLEAN','Active/Disactive\x20Campaign','preview','predictive','Dial\x20Method.','UNSIGNED','Max\x209999\x20channels,\x200\x20means\x20unlimited.','FLOAT','Power\x20Level:\x20Calls\x20for\x20agents\x20(min:1,\x20max:10).','agentBusyFactor','dropRate','Only\x20for\x20predictive\x20method.','Predictive\x20Optimization\x20Percentage\x20(min:\x201,\x20max:\x2095)','Interval\x20Predictive\x20Minutes\x20(min:5\x20max:30)','tTxX','https://wiki.asterisk.org/wiki/display/AST/Asterisk+13+Application_Queue','AGI\x20queue\x20option\x20(use:\x20agi://127.0.0.1/square,<project_name>)','#Congestion\x20Retry\x20(min:1,\x20max:999)','Congestion\x20Retry\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)','#Busy\x20Retry\x20(min:1,\x20max:999)','Busy\x20Retry\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)','#NoAnswer\x20Retry\x20(min:1,\x20max:999)','07:00-22:00,*,*,*','never','onlyIfOpen','always'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x4f56,0xaf));var _0x64f5=function(_0x51d030,_0x2211bd){_0x51d030=_0x51d030-0x0;var _0xc62e0d=_0x4f56[_0x51d030];return _0xc62e0d;};'use strict';var Sequelize=require(_0x64f5('0x0'));module[_0x64f5('0x1')]={'name':{'type':Sequelize[_0x64f5('0x2')],'allowNull':![],'unique':_0x64f5('0x3'),'validate':{'notEmpty':!![],'is':/^[A-Za-z0-9\.\_]+$/i}},'type':{'type':Sequelize[_0x64f5('0x4')](_0x64f5('0x5'),'outbound'),'allowNull':![],'defaultValue':_0x64f5('0x5')},'musiconhold':{'type':Sequelize[_0x64f5('0x2')],'defaultValue':'default'},'announce':{'type':Sequelize[_0x64f5('0x2')],'defaultValue':''},'strategy':{'type':Sequelize['ENUM']('rr','ringall',_0x64f5('0x6'),_0x64f5('0x7'),_0x64f5('0x8'),_0x64f5('0x9'),_0x64f5('0xa'),_0x64f5('0xb'),_0x64f5('0xc')),'allowNull':![],'defaultValue':_0x64f5('0xd'),'set':function(_0x262424){this[_0x64f5('0xe')](_0x64f5('0xf'),_0x262424?_0x262424:_0x64f5('0x9'));},'get':function(){var _0x402eaf=this[_0x64f5('0x10')](_0x64f5('0x11'));var _0x745e63=this[_0x64f5('0x10')]('dialMethod');var _0x26b72d=this['getDataValue'](_0x64f5('0xf'));if(_0x402eaf===_0x64f5('0x5')){return _0x26b72d;}if(_0x745e63===_0x64f5('0x12')&&_0x26b72d===_0x64f5('0x9')||_0x745e63==='booked'&&_0x26b72d===_0x64f5('0x13')){return _0x26b72d;}if(_0x745e63===_0x64f5('0x14')||_0x745e63==='predictive'||_0x745e63===_0x64f5('0x15')){return _0x26b72d;}return null;}},'servicelevel':{'type':Sequelize['INTEGER'](0xb),'defaultValue':0x0},'context':{'type':Sequelize[_0x64f5('0x2')],'defaultValue':null},'penaltymemberslimit':{'type':Sequelize['INTEGER'](0xb)},'timeout':{'type':Sequelize[_0x64f5('0x16')](0xb),'defaultValue':0xf},'retry':{'type':Sequelize[_0x64f5('0x16')](0xb),'defaultValue':0x2},'timeoutpriority':{'type':Sequelize[_0x64f5('0x2')]},'weight':{'type':Sequelize['INTEGER'](0xb),'allowNull':!![],'defaultValue':0x0},'wrapuptime':{'type':Sequelize[_0x64f5('0x16')](0xb),'defaultValue':0x0},'autofill':{'type':Sequelize[_0x64f5('0x4')](_0x64f5('0x17'),'no'),'defaultValue':_0x64f5('0x17')},'autopause':{'type':Sequelize['ENUM'](_0x64f5('0x17'),'no','all'),'defaultValue':'no'},'autopausedelay':{'type':Sequelize[_0x64f5('0x16')](0xb)},'autopausebusy':{'type':Sequelize[_0x64f5('0x4')]('yes','no'),'defaultValue':'no'},'autopauseunavail':{'type':Sequelize[_0x64f5('0x4')](_0x64f5('0x17'),'no'),'defaultValue':'no'},'maxlen':{'type':Sequelize['INTEGER'](0xb),'defaultValue':0x0},'setinterfacevar':{'type':Sequelize['ENUM'](_0x64f5('0x17'),'no'),'defaultValue':'no'},'setqueueentryvar':{'type':Sequelize['ENUM'](_0x64f5('0x17'),'no'),'defautValue':'no'},'setqueuevar':{'type':Sequelize['ENUM'](_0x64f5('0x17'),'no'),'defaultValue':'no'},'eventmemberstatus':{'type':Sequelize[_0x64f5('0x4')](_0x64f5('0x17'),'no'),'defaultValue':'no'},'membermacro':{'type':Sequelize['STRING'],'allowNull':!![]},'membergosub':{'type':Sequelize['STRING'],'allowNull':!![]},'announce_frequency':{'type':Sequelize[_0x64f5('0x16')](0xb),'defaultValue':0x0},'min_announce_frequency':{'type':Sequelize[_0x64f5('0x16')](0xb),'defaultValue':0x0},'periodic_announce_frequency':{'type':Sequelize[_0x64f5('0x16')](0xb),'defaultValue':0x0},'random_periodic_announce':{'type':Sequelize[_0x64f5('0x4')](_0x64f5('0x17'),'no'),'defaultValue':'no'},'relative_periodic_announce':{'type':Sequelize[_0x64f5('0x4')]('yes','no'),'defaultValue':_0x64f5('0x17')},'announce_holdtime':{'type':Sequelize['ENUM']('yes','no',_0x64f5('0x18')),'defaultValue':'no'},'announce_position':{'type':Sequelize[_0x64f5('0x2')],'defaultValue':'no'},'announce_to_first_user':{'type':Sequelize[_0x64f5('0x4')]('yes','no')},'announce_position_limit':{'type':Sequelize[_0x64f5('0x16')](0xb)},'announce_round_seconds':{'type':Sequelize['ENUM']('0','5','10','15','20','30'),'defaultValue':'0'},'monitor_format':{'type':Sequelize['STRING'],'defaultValue':''},'monitor_type':{'type':Sequelize['STRING']},'queue_youarenext':{'type':Sequelize[_0x64f5('0x2')],'defaultValue':null},'queue_thereare':{'type':Sequelize[_0x64f5('0x2')],'defaultValue':null},'queue_callswaiting':{'type':Sequelize[_0x64f5('0x2')],'defaultValue':null},'queue_holdtime':{'type':Sequelize['STRING'],'defaultValue':null},'queue_minute':{'type':Sequelize[_0x64f5('0x2')],'allowNull':!![],'defaultValue':null},'queue_minutes':{'type':Sequelize['STRING'],'defaultValue':null},'queue_seconds':{'type':Sequelize[_0x64f5('0x2')],'defaultValue':null},'queue_thankyou':{'type':Sequelize[_0x64f5('0x2')],'defaultValue':null},'queue_reporthold':{'type':Sequelize[_0x64f5('0x2')]},'queue_quantity1':{'type':Sequelize['STRING']},'queue_quantity2':{'type':Sequelize[_0x64f5('0x2')]},'queue_periodic_announce':{'type':Sequelize[_0x64f5('0x2')]},'queue_less_than':{'type':Sequelize[_0x64f5('0x2')]},'periodic_announce':{'type':Sequelize[_0x64f5('0x19')],'set':function(_0x284e65){this[_0x64f5('0xe')](_0x64f5('0x1a'),_0x284e65?_0x284e65[_0x64f5('0x1b')](','):[]);},'get':function(){return this[_0x64f5('0x10')](_0x64f5('0x1a'))?this[_0x64f5('0x10')]('periodic_announce')['split'](','):[];}},'joinempty':{'type':Sequelize[_0x64f5('0x2')],'defaultValue':_0x64f5('0x17'),'set':function(_0x444866){this['setDataValue'](_0x64f5('0x1c'),_0x444866?_0x444866[_0x64f5('0x1b')](','):undefined);},'get':function(){return this[_0x64f5('0x10')](_0x64f5('0x1c'))?this[_0x64f5('0x10')](_0x64f5('0x1c'))[_0x64f5('0x1d')](','):undefined;}},'leavewhenempty':{'type':Sequelize[_0x64f5('0x2')],'defaultValue':'no','set':function(_0x2b2d59){this[_0x64f5('0xe')](_0x64f5('0x1e'),_0x2b2d59?_0x2b2d59['join'](','):undefined);},'get':function(){return this['getDataValue'](_0x64f5('0x1e'))?this[_0x64f5('0x10')](_0x64f5('0x1e'))[_0x64f5('0x1d')](','):undefined;}},'reportholdtime':{'type':Sequelize[_0x64f5('0x4')](_0x64f5('0x17'),'no'),'defaultValue':'no'},'ringinuse':{'type':Sequelize['ENUM'](_0x64f5('0x17'),'no'),'defaultValue':'no'},'memberdelay':{'type':Sequelize[_0x64f5('0x16')](0xb),'defaultValue':0x0},'timeoutrestart':{'type':Sequelize[_0x64f5('0x4')](_0x64f5('0x17'),'no'),'defaultValue':'no'},'defaultrule':{'type':Sequelize['STRING']},'description':{'type':Sequelize[_0x64f5('0x2')]},'acw':{'type':Sequelize['BOOLEAN'],'defaultValue':0x0,'set':function(_0x35970a){this[_0x64f5('0xe')](_0x64f5('0x1f'),_0x35970a);if(_0x35970a){if(this[_0x64f5('0x10')]('wrapuptime')<0x2){this['setDataValue'](_0x64f5('0x20'),0x2);}}}},'acwTimeout':{'type':Sequelize[_0x64f5('0x16')](0xb),'defaultValue':0xa},'dialActive':{'type':Sequelize[_0x64f5('0x21')],'defaultValue':0x0,'comment':_0x64f5('0x22')},'dialMethod':{'type':Sequelize[_0x64f5('0x4')](_0x64f5('0x23'),_0x64f5('0x14'),'power',_0x64f5('0x24'),'booked'),'defaultValue':'progressive','comment':_0x64f5('0x25')},'dialLimitChannel':{'type':Sequelize['INTEGER'](0x4)[_0x64f5('0x26')],'defaultValue':0x0,'validate':{'min':0x0,'max':0x270f},'comment':_0x64f5('0x27')},'dialLimitQueue':{'type':Sequelize['INTEGER'](0x4)['UNSIGNED'],'defaultValue':0x0,'validate':{'min':0x0,'max':0x270f},'comment':'Max\x209999\x20member\x20in\x20queue(min:1,\x20max:9999),\x200\x20means\x20unlimited.'},'dialPowerLevel':{'type':Sequelize[_0x64f5('0x28')](0x2)[_0x64f5('0x26')],'defaultValue':0x1,'validate':{'min':0x1,'max':0xa},'comment':_0x64f5('0x29')},'dialPredictiveOptimization':{'type':Sequelize[_0x64f5('0x4')](_0x64f5('0x2a'),_0x64f5('0x2b')),'defaultValue':_0x64f5('0x2b'),'comment':_0x64f5('0x2c')},'dialPredictiveOptimizationPercentage':{'type':Sequelize[_0x64f5('0x28')](0x2)[_0x64f5('0x26')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x5f},'comment':_0x64f5('0x2d')},'dialPredictiveInterval':{'type':Sequelize[_0x64f5('0x16')](0x3)[_0x64f5('0x26')],'defaultValue':0xa,'validate':{'min':0x5,'max':0x1e},'comment':_0x64f5('0x2e')},'dialOriginateCallerIdName':{'type':Sequelize[_0x64f5('0x2')]},'dialOriginateCallerIdNumber':{'type':Sequelize['STRING']},'dialOriginateTimeout':{'type':Sequelize['INTEGER'](0x3)[_0x64f5('0x26')],'defaultValue':0x1e,'validate':{'min':0x1,'max':0x3e7},'comment':'Originate\x20Timeout\x20Seconds\x20(min:1,\x20max:999)'},'dialQueueOptions':{'type':Sequelize['STRING'],'defaultValue':_0x64f5('0x2f'),'comment':_0x64f5('0x30')},'dialQueueTimeout':{'type':Sequelize[_0x64f5('0x16')](0x3)[_0x64f5('0x26')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':'Queue\x20Timeout\x20Seconds\x20(min:1,\x20max:999)'},'dialQueueProject':{'type':Sequelize[_0x64f5('0x2')],'comment':_0x64f5('0x31')},'dialCongestionMaxRetry':{'type':Sequelize[_0x64f5('0x16')](0x3)['UNSIGNED'],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':_0x64f5('0x32')},'dialCongestionRetryFrequency':{'type':Sequelize[_0x64f5('0x16')](0x5)[_0x64f5('0x26')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0x64f5('0x33')},'dialBusyMaxRetry':{'type':Sequelize['INTEGER'](0x3)[_0x64f5('0x26')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':_0x64f5('0x34')},'dialBusyRetryFrequency':{'type':Sequelize[_0x64f5('0x16')](0x5)['UNSIGNED'],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0x64f5('0x35')},'dialNoAnswerMaxRetry':{'type':Sequelize[_0x64f5('0x16')](0x3)[_0x64f5('0x26')],'defaultValue':0x3,'comment':_0x64f5('0x36')},'dialNoAnswerRetryFrequency':{'type':Sequelize[_0x64f5('0x16')](0x5)[_0x64f5('0x26')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':'NoAnswer\x20Retry\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)'},'dialGlobalMaxRetry':{'type':Sequelize['INTEGER'](0x3)[_0x64f5('0x26')],'validate':{'min':0x1,'max':0x3e7},'defaultValue':0x4,'comment':'#Global\x20Max\x20Retry\x20(min:1,\x20max:999)'},'dialTimezone':{'type':Sequelize[_0x64f5('0x2')],'defaultValue':null},'dialGlobalInterval':{'type':Sequelize['STRING'],'defaultValue':_0x64f5('0x37')},'dialPrefix':{'type':Sequelize[_0x64f5('0x2')],'defaultValue':null},'dialCheckDuplicateType':{'type':Sequelize['ENUM']('always',_0x64f5('0x38'),_0x64f5('0x39')),'defaultValue':_0x64f5('0x3a')},'dialAMDActive':{'type':Sequelize[_0x64f5('0x21')],'defaultValue':0x0,'comment':_0x64f5('0x3b')},'dialAMDInitialSilence':{'type':Sequelize['INTEGER'](0x9)[_0x64f5('0x26')],'defaultValue':0x9c4,'validate':{'min':0x0},'comment':'#AMD\x20Initial\x20Silence'},'dialAMDGreeting':{'type':Sequelize[_0x64f5('0x16')](0x9)[_0x64f5('0x26')],'defaultValue':0x5dc,'validate':{'min':0x0},'comment':'#AMD\x20Greeting'},'dialAMDAfterGreetingSilence':{'type':Sequelize[_0x64f5('0x16')](0x9)[_0x64f5('0x26')],'defaultValue':0x320,'validate':{'min':0x0},'comment':'#AMD\x20After\x20Greeting\x20Silence'},'dialAMDTotalAnalysisTime':{'type':Sequelize[_0x64f5('0x16')](0x9)[_0x64f5('0x26')],'defaultValue':0x1388,'validate':{'min':0x0},'comment':'#AMD\x20Total\x20Analysis\x20Time'},'dialAMDMinWordLength':{'type':Sequelize[_0x64f5('0x16')](0x9)[_0x64f5('0x26')],'defaultValue':0x64,'validate':{'min':0x0},'comment':'#AMD\x20Min\x20Word\x20Length'},'dialAMDBetweenWordsSilence':{'type':Sequelize[_0x64f5('0x16')](0x9)[_0x64f5('0x26')],'defaultValue':0x32,'validate':{'min':0x0},'comment':'#AMD\x20Between\x20Words\x20Silence'},'dialAMDMaximumNumberOfWords':{'type':Sequelize['INTEGER'](0x9)['UNSIGNED'],'defaultValue':0x3,'validate':{'min':0x0},'comment':_0x64f5('0x3c')},'dialAMDSilenceThreshold':{'type':Sequelize[_0x64f5('0x16')](0x5)[_0x64f5('0x26')],'validate':{'min':0x0,'max':0x7fff},'defaultValue':0x100,'comment':_0x64f5('0x3d')},'dialAMDMaximumWordLength':{'type':Sequelize[_0x64f5('0x16')](0x9)['UNSIGNED'],'defaultValue':0x1388,'validate':{'min':0x0},'comment':_0x64f5('0x3e')},'dialRecallMeTimeout':{'type':Sequelize['INTEGER'](0x5)['UNSIGNED'],'validate':{'min':0x1},'defaultValue':0x1e,'comment':_0x64f5('0x3f')},'dialRecallInQueue':{'type':Sequelize[_0x64f5('0x21')],'defaultValue':0x0,'comment':'Active/Disactive\x20Recall\x20In\x20Queue'},'dialOrderByScheduledAt':{'type':Sequelize[_0x64f5('0x4')](_0x64f5('0x40'),_0x64f5('0x41')),'defaultValue':_0x64f5('0x40')},'dialQueueProject2':{'type':Sequelize[_0x64f5('0x2')],'comment':_0x64f5('0x31')},'dialAgiAfterHangupClient':{'type':Sequelize[_0x64f5('0x21')],'defaultValue':![]},'dialAgiAfterHangupAgent':{'type':Sequelize[_0x64f5('0x21')],'defaultValue':![]},'dialRandomLastDigitCallerIdNumber':{'type':Sequelize['INTEGER'](0x3)[_0x64f5('0x26')],'validate':{'min':0x0,'max':0xf},'defaultValue':0x0,'comment':'Random\x20Last\x20Digit\x20(min:1,\x20max:15)'},'dialCutDigit':{'type':Sequelize[_0x64f5('0x16')](0x3)['UNSIGNED'],'validate':{'min':0x0,'max':0xf},'defaultValue':0x0,'comment':'Cut\x20Digit\x20(min:1,\x20max:15)'},'dialNoSuchNumberMaxRetry':{'type':Sequelize[_0x64f5('0x16')](0x3)[_0x64f5('0x26')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':_0x64f5('0x42')},'dialNoSuchNumberRetryFrequency':{'type':Sequelize[_0x64f5('0x16')](0x5)['UNSIGNED'],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':'NoSuchNumber\x20Retry\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)'},'dialDropMaxRetry':{'type':Sequelize[_0x64f5('0x16')](0x3)['UNSIGNED'],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':_0x64f5('0x43')},'dialDropRetryFrequency':{'type':Sequelize['INTEGER'](0x5)[_0x64f5('0x26')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0x64f5('0x44')},'dialAbandonedMaxRetry':{'type':Sequelize[_0x64f5('0x16')](0x3)[_0x64f5('0x26')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':_0x64f5('0x45')},'dialAbandonedRetryFrequency':{'type':Sequelize['INTEGER'](0x5)[_0x64f5('0x26')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0x64f5('0x46')},'dialMachineMaxRetry':{'type':Sequelize[_0x64f5('0x16')](0x3)['UNSIGNED'],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':_0x64f5('0x47')},'dialMachineRetryFrequency':{'type':Sequelize[_0x64f5('0x16')](0x5)['UNSIGNED'],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0x64f5('0x48')},'dialAgentRejectMaxRetry':{'type':Sequelize[_0x64f5('0x16')](0x3)[_0x64f5('0x26')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':'#AgentReject\x20Retry\x20(min:1,\x20max:999)'},'dialAgentRejectRetryFrequency':{'type':Sequelize[_0x64f5('0x16')](0x5)[_0x64f5('0x26')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0x64f5('0x49')},'mandatoryDispositionPauseId':{'type':Sequelize['INTEGER'],'allowNull':!![],'comment':_0x64f5('0x4a')},'mandatoryDisposition':{'type':Sequelize['BOOLEAN'],'defaultValue':![],'comment':_0x64f5('0x4b'),'set':function(_0x109800){if(!_0x109800)this[_0x64f5('0xe')](_0x64f5('0x4c'),null);this[_0x64f5('0xe')](_0x64f5('0x4d'),_0x109800);}},'dialPredictiveIntervalMaxThreshold':{'type':Sequelize[_0x64f5('0x16')](0x3)['UNSIGNED'],'defaultValue':0x14,'validate':{'min':0x1,'max':0x64}},'dialPredictiveIntervalMinThreshold':{'type':Sequelize['INTEGER'](0x3)[_0x64f5('0x26')],'defaultValue':0xa,'validate':{'min':0x1,'max':0x64}},'dialPreviewAutoRecallMe':{'type':Sequelize[_0x64f5('0x21')],'defaultValue':!![]},'callAdditionalPhoneAfterMin':{'type':Sequelize['INTEGER'](0x3)[_0x64f5('0x26')],'defaultValue':0x4},'dialPreviewRecallmeReminder':{'type':Sequelize[_0x64f5('0x21')],'defaultValue':![]}};
\ No newline at end of file
index 27955b4..366c2f5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0xeff8=['COALESCE(phone,\x27\x27)','cm_hopper','onlyIfOpen','CmListId','phone\x20IS\x20NOT\x20NULL','CmHopperId','ci.item','ci.OrderBy+1','h.ContactId=ci.CmContactId','h.scheduledat=?','ci.ItemClass=?','removeLists','addBlackLists','cm_hopper_black','NOW()','removeBlackLists','eml-format','rimraf','fast-json-patch','request-promise','moment','mustache','util','path','sox','ejs','fs-extra','lodash','squel','jsforce','desk.js','to-csv','querystring','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','api','../../config/environment','../../config/license/util','defaults','redis','localhost','socket.io-emitter','register','sendStatus','status','end','offset','undefined','limit','count','set','json','apply','reject','save','then','destroy','VoiceQueues','inbound','QueueCampaigns','outbound','map','value','type','find','name','UserProfileResource','error','VoiceQueue','rawAttributes','fieldName','key','query','keys','filters','model','attributes','fields','length','nolimit','order','sort','where','pick','filter','merge','options','includeAll','include','rows','params','intersection','catch','create','body','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','get','UserProfileSection','userProfileId','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','clone','omit','updatedAt','createdAt','update','getHoppers','findOne','CmHopper','hasOwnProperty','VoiceQueueId','findAll','getHopperHistories','CmHopperHistory','getHopperFinals','CmHopperFinal','getHopperBlacks','CmHopperBlack','getTeams','Team','addTeams','teams','User','Agents','voicePause','interface','forEach','penalty','transaction','upsert','UserVoiceQueue','UserVoiceQueueRt','isNil','SIP/%s','emit','removeTeams','select','field','tq.TeamId','from','team_has_voice_queues','join','ut.TeamId\x20=\x20tq.TeamId','ut.UserId\x20=\x20?','push','sequelize','toString','QueryTypes','SELECT','TeamId','includes','all','compact','ids','isEmpty','removeAgents','userVoiceQueue:remove','addAgents','userVoiceQueue:save','online','format','isArray','getAgents','getMembers','getLists','addLists','spread','dialCheckDuplicateType','always','insert','into','fromQuery','phone','scheduledAt','ContactId','ListId','cm_contacts','deletedAt\x20IS\x20NULL','ListId\x20=\x20?','phone\x20NOT\x20IN\x20(?)','COALESCE(calleridnum,\x27\x27)','cm_hopper_final','VoiceQueueId\x20=\x20?'];(function(_0x122582,_0xc7828e){var _0x17c799=function(_0x209f3e){while(--_0x209f3e){_0x122582['push'](_0x122582['shift']());}};_0x17c799(++_0xc7828e);}(_0xeff8,0x186));var _0x8eff=function(_0x465028,_0x4570ac){_0x465028=_0x465028-0x0;var _0xb783d4=_0xeff8[_0x465028];return _0xb783d4;};'use strict';var emlformat=require(_0x8eff('0x0'));var rimraf=require(_0x8eff('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0x8eff('0x2'));var rp=require(_0x8eff('0x3'));var moment=require(_0x8eff('0x4'));var BPromise=require('bluebird');var Mustache=require(_0x8eff('0x5'));var util=require(_0x8eff('0x6'));var path=require(_0x8eff('0x7'));var sox=require(_0x8eff('0x8'));var csv=require('to-csv');var ejs=require(_0x8eff('0x9'));var fs=require('fs');var fs_extra=require(_0x8eff('0xa'));var _=require(_0x8eff('0xb'));var squel=require(_0x8eff('0xc'));var crypto=require('crypto');var jsforce=require(_0x8eff('0xd'));var deskjs=require(_0x8eff('0xe'));var toCsv=require(_0x8eff('0xf'));var querystring=require(_0x8eff('0x10'));var Papa=require('papaparse');var Redis=require('ioredis');var authService=require(_0x8eff('0x11'));var qs=require(_0x8eff('0x12'));var as=require(_0x8eff('0x13'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x8eff('0x14'))(_0x8eff('0x15'));var utils=require('../../config/utils');var config=require(_0x8eff('0x16'));var licenseUtil=require(_0x8eff('0x17'));var db=require('../../mysqldb')['db'];config['redis']=_[_0x8eff('0x18')](config[_0x8eff('0x19')],{'host':_0x8eff('0x1a'),'port':0x18eb});var socket=require(_0x8eff('0x1b'))(new Redis(config[_0x8eff('0x19')]));require('./voiceQueue.socket')[_0x8eff('0x1c')](socket);function respondWithStatusCode(_0x212a2e,_0x372ee8){_0x372ee8=_0x372ee8||0xcc;return function(_0x1af3d6){if(_0x1af3d6){return _0x212a2e[_0x8eff('0x1d')](_0x372ee8);}return _0x212a2e[_0x8eff('0x1e')](_0x372ee8)[_0x8eff('0x1f')]();};}function respondWithResult(_0xdbb753,_0x16a4eb){_0x16a4eb=_0x16a4eb||0xc8;return function(_0x427902){if(_0x427902){return _0xdbb753[_0x8eff('0x1e')](_0x16a4eb)['json'](_0x427902);}};}function respondWithFilteredResult(_0x32b791,_0x38fb15){return function(_0x3cd1dc){if(_0x3cd1dc){var _0x20ec2a=typeof _0x38fb15[_0x8eff('0x20')]===_0x8eff('0x21')&&typeof _0x38fb15[_0x8eff('0x22')]===_0x8eff('0x21');var _0x1b003c=_0x3cd1dc[_0x8eff('0x23')];var _0x453c7a=_0x20ec2a?0x0:_0x38fb15[_0x8eff('0x20')];var _0x1e9ad0=_0x20ec2a?_0x3cd1dc[_0x8eff('0x23')]:_0x38fb15[_0x8eff('0x20')]+_0x38fb15[_0x8eff('0x22')];var _0x5e157c;if(_0x1e9ad0>=_0x1b003c){_0x1e9ad0=_0x1b003c;_0x5e157c=0xc8;}else{_0x5e157c=0xce;}_0x32b791[_0x8eff('0x1e')](_0x5e157c);return _0x32b791[_0x8eff('0x24')]('Content-Range',_0x453c7a+'-'+_0x1e9ad0+'/'+_0x1b003c)[_0x8eff('0x25')](_0x3cd1dc);}return null;};}function patchUpdates(_0x5ea31f){return function(_0x2fe360){try{jsonpatch[_0x8eff('0x26')](_0x2fe360,_0x5ea31f,!![]);}catch(_0x1ccc79){return BPromise[_0x8eff('0x27')](_0x1ccc79);}return _0x2fe360[_0x8eff('0x28')]();};}function saveUpdates(_0x4e891c,_0x179814){return function(_0x350927){if(_0x350927){return _0x350927['update'](_0x4e891c)[_0x8eff('0x29')](function(_0x5ec3d7){return _0x5ec3d7;});}return null;};}function removeEntity(_0x40404b,_0x3b698b){return function(_0xd60d94){if(_0xd60d94){return _0xd60d94[_0x8eff('0x2a')]()[_0x8eff('0x29')](function(){var _0x2e8067=_0xd60d94['get']({'plain':!![]});var _0x3e1607=[{'name':_0x8eff('0x2b'),'value':_0x8eff('0x2c'),'ignore':![]},{'name':_0x8eff('0x2d'),'value':_0x8eff('0x2e'),'ignore':![]}];var _0x85cccb=_(_0x3e1607)['filter']('ignore')[_0x8eff('0x2f')](_0x8eff('0x30'))[_0x8eff('0x30')]();if(_['includes'](_0x85cccb,_0x2e8067[_0x8eff('0x31')])){return;}var _0x2f8ad9=_[_0x8eff('0x32')](_0x3e1607,[_0x8eff('0x30'),_0x2e8067[_0x8eff('0x31')]])[_0x8eff('0x33')];return db[_0x8eff('0x34')][_0x8eff('0x2a')]({'where':{'type':_0x2f8ad9,'resourceId':_0x2e8067['id']}})[_0x8eff('0x29')](function(){return _0xd60d94;});})[_0x8eff('0x29')](function(){_0x40404b[_0x8eff('0x1e')](0xcc)[_0x8eff('0x1f')]();});}};}function handleEntityNotFound(_0x5e0ecb,_0x2ad4b7){return function(_0x165f8e){if(!_0x165f8e){_0x5e0ecb[_0x8eff('0x1d')](0x194);}return _0x165f8e;};}function handleError(_0x7da1fb,_0x50f211){_0x50f211=_0x50f211||0x1f4;return function(_0x1f2240){logger[_0x8eff('0x35')](_0x1f2240['stack']);if(_0x1f2240['name']){delete _0x1f2240[_0x8eff('0x33')];}_0x7da1fb[_0x8eff('0x1e')](_0x50f211)['send'](_0x1f2240);};}exports['index']=function(_0x51ec38,_0x315691){var _0x5f5b79={},_0x45d9d4={},_0x59c9cc={'count':0x0,'rows':[]};var _0x2bb00f=_[_0x8eff('0x2f')](db[_0x8eff('0x36')][_0x8eff('0x37')],function(_0x3e53a2){return{'name':_0x3e53a2[_0x8eff('0x38')],'type':_0x3e53a2['type'][_0x8eff('0x39')]};});_0x45d9d4['model']=_[_0x8eff('0x2f')](_0x2bb00f,'name');_0x45d9d4[_0x8eff('0x3a')]=_[_0x8eff('0x3b')](_0x51ec38[_0x8eff('0x3a')]);_0x45d9d4[_0x8eff('0x3c')]=_['intersection'](_0x45d9d4[_0x8eff('0x3d')],_0x45d9d4[_0x8eff('0x3a')]);_0x5f5b79[_0x8eff('0x3e')]=_['intersection'](_0x45d9d4[_0x8eff('0x3d')],qs[_0x8eff('0x3f')](_0x51ec38[_0x8eff('0x3a')][_0x8eff('0x3f')]));_0x5f5b79[_0x8eff('0x3e')]=_0x5f5b79[_0x8eff('0x3e')][_0x8eff('0x40')]?_0x5f5b79[_0x8eff('0x3e')]:_0x45d9d4[_0x8eff('0x3d')];if(!_0x51ec38['query']['hasOwnProperty'](_0x8eff('0x41'))){_0x5f5b79[_0x8eff('0x22')]=qs[_0x8eff('0x22')](_0x51ec38[_0x8eff('0x3a')][_0x8eff('0x22')]);_0x5f5b79[_0x8eff('0x20')]=qs[_0x8eff('0x20')](_0x51ec38['query'][_0x8eff('0x20')]);}_0x5f5b79[_0x8eff('0x42')]=qs['sort'](_0x51ec38[_0x8eff('0x3a')][_0x8eff('0x43')]);_0x5f5b79[_0x8eff('0x44')]=qs[_0x8eff('0x3c')](_[_0x8eff('0x45')](_0x51ec38[_0x8eff('0x3a')],_0x45d9d4[_0x8eff('0x3c')]),_0x2bb00f);if(_0x51ec38[_0x8eff('0x3a')][_0x8eff('0x46')]){_0x5f5b79['where']=_[_0x8eff('0x47')](_0x5f5b79[_0x8eff('0x44')],{'$or':_[_0x8eff('0x2f')](_0x2bb00f,function(_0x2fa131){if(_0x2fa131[_0x8eff('0x31')]!=='VIRTUAL'){var _0x1a2b2e={};_0x1a2b2e[_0x2fa131['name']]={'$like':'%'+_0x51ec38[_0x8eff('0x3a')][_0x8eff('0x46')]+'%'};return _0x1a2b2e;}})});}_0x5f5b79=_[_0x8eff('0x47')]({},_0x5f5b79,_0x51ec38[_0x8eff('0x48')]);var _0x52787f={'where':_0x5f5b79[_0x8eff('0x44')]};return db[_0x8eff('0x36')][_0x8eff('0x23')](_0x52787f)['then'](function(_0x5bb88d){_0x59c9cc[_0x8eff('0x23')]=_0x5bb88d;if(_0x51ec38[_0x8eff('0x3a')][_0x8eff('0x49')]){_0x5f5b79[_0x8eff('0x4a')]=[{'all':!![]}];}return db[_0x8eff('0x36')]['findAll'](_0x5f5b79);})[_0x8eff('0x29')](function(_0x51aa5d){_0x59c9cc[_0x8eff('0x4b')]=_0x51aa5d;return _0x59c9cc;})[_0x8eff('0x29')](respondWithFilteredResult(_0x315691,_0x5f5b79))['catch'](handleError(_0x315691,null));};exports['show']=function(_0x47ecff,_0x494388){var _0x4b0b41={'raw':![],'where':{'id':_0x47ecff[_0x8eff('0x4c')]['id']}},_0x4feeae={};_0x4feeae[_0x8eff('0x3d')]=_[_0x8eff('0x3b')](db[_0x8eff('0x36')][_0x8eff('0x37')]);_0x4feeae[_0x8eff('0x3a')]=_[_0x8eff('0x3b')](_0x47ecff[_0x8eff('0x3a')]);_0x4feeae[_0x8eff('0x3c')]=_[_0x8eff('0x4d')](_0x4feeae['model'],_0x4feeae[_0x8eff('0x3a')]);_0x4b0b41['attributes']=_[_0x8eff('0x4d')](_0x4feeae[_0x8eff('0x3d')],qs[_0x8eff('0x3f')](_0x47ecff[_0x8eff('0x3a')][_0x8eff('0x3f')]));_0x4b0b41[_0x8eff('0x3e')]=_0x4b0b41[_0x8eff('0x3e')][_0x8eff('0x40')]?_0x4b0b41[_0x8eff('0x3e')]:_0x4feeae[_0x8eff('0x3d')];if(_0x47ecff[_0x8eff('0x3a')][_0x8eff('0x49')]){_0x4b0b41['include']=[{'all':!![]}];}_0x4b0b41=_[_0x8eff('0x47')]({},_0x4b0b41,_0x47ecff[_0x8eff('0x48')]);return db[_0x8eff('0x36')][_0x8eff('0x32')](_0x4b0b41)[_0x8eff('0x29')](handleEntityNotFound(_0x494388,null))[_0x8eff('0x29')](respondWithResult(_0x494388,null))[_0x8eff('0x4e')](handleError(_0x494388,null));};exports[_0x8eff('0x4f')]=function(_0x2c54e2,_0x483418){return db['VoiceQueue'][_0x8eff('0x4f')](_0x2c54e2[_0x8eff('0x50')],{})[_0x8eff('0x29')](function(_0x203e80){var _0xb99749=_0x2c54e2[_0x8eff('0x51')]['get']({'plain':!![]});if(!_0xb99749)throw new Error(_0x8eff('0x52'));if(_0xb99749[_0x8eff('0x53')]===_0x8eff('0x51')){var _0x4caf8b=_0x203e80[_0x8eff('0x54')]({'plain':!![]});var _0x84bc6=[{'name':_0x8eff('0x2b'),'value':_0x8eff('0x2c')},{'name':'QueueCampaigns','value':_0x8eff('0x2e')}];var _0x161f89=_[_0x8eff('0x32')](_0x84bc6,[_0x8eff('0x30'),_0x4caf8b[_0x8eff('0x31')]])[_0x8eff('0x33')];return db[_0x8eff('0x55')]['find']({'where':{'name':_0x161f89,'userProfileId':_0xb99749[_0x8eff('0x56')]},'raw':!![]})[_0x8eff('0x29')](function(_0x3a6d5e){if(_0x3a6d5e&&_0x3a6d5e[_0x8eff('0x57')]===0x0){return db[_0x8eff('0x34')]['create']({'name':_0x4caf8b[_0x8eff('0x33')],'resourceId':_0x4caf8b['id'],'type':_0x3a6d5e[_0x8eff('0x33')],'sectionId':_0x3a6d5e['id']},{})[_0x8eff('0x29')](function(){return _0x203e80;});}else{return _0x203e80;}})['catch'](function(_0x2c4c38){logger['error'](_0x8eff('0x58'),_0x2c4c38);throw _0x2c4c38;});}return _0x203e80;})[_0x8eff('0x29')](respondWithResult(_0x483418,0xc9))[_0x8eff('0x4e')](handleError(_0x483418,null));};exports[_0x8eff('0x59')]=function(_0x3d82b6,_0xa6355e){var _0x1b1b88={'where':{'id':_0x3d82b6['params']['id']}},_0x552006={};_0x552006[_0x8eff('0x3d')]=_['keys'](db[_0x8eff('0x36')][_0x8eff('0x37')]);_0x1b1b88[_0x8eff('0x3e')]=_[_0x8eff('0x4d')](_0x552006[_0x8eff('0x3d')],qs['fields'](_0x3d82b6[_0x8eff('0x3a')][_0x8eff('0x3f')]));_0x1b1b88[_0x8eff('0x3e')]=_0x1b1b88[_0x8eff('0x3e')][_0x8eff('0x40')]?_0x1b1b88[_0x8eff('0x3e')]:_0x552006['model'];if(_0x3d82b6[_0x8eff('0x3a')]['includeAll']){_0x1b1b88[_0x8eff('0x4a')]=[{'all':!![]}];}_0x1b1b88=_[_0x8eff('0x47')]({},_0x1b1b88,_0x3d82b6['options']);return db[_0x8eff('0x36')][_0x8eff('0x32')](_0x1b1b88)[_0x8eff('0x29')](handleEntityNotFound(_0xa6355e,null))[_0x8eff('0x29')](function(_0x26ce78){if(_0x26ce78){var _0x35467c=_0x26ce78[_0x8eff('0x54')]({'plain':!![]});_0x35467c=qs[_0x8eff('0x5a')](_0x35467c,['id','createdAt',_0x8eff('0x5b')]);_0x3d82b6['body']=_['omit'](_0x3d82b6[_0x8eff('0x50')],['id',_0x8eff('0x5c'),'updatedAt']);return db[_0x8eff('0x36')][_0x8eff('0x4f')](_['merge'](_0x35467c,_0x3d82b6[_0x8eff('0x50')]),{'include':_0x3d82b6[_0x8eff('0x3a')]['includeAll']?[{'all':!![]}]:undefined})[_0x8eff('0x29')](function(_0x1c6ee1){var _0x3229ba=_0x3d82b6[_0x8eff('0x51')][_0x8eff('0x54')]({'plain':!![]});if(!_0x3229ba)throw new Error(_0x8eff('0x52'));if(_0x3229ba[_0x8eff('0x53')]==='user'){var _0x479a4b=_0x1c6ee1[_0x8eff('0x54')]({'plain':!![]});var _0x34b2e5=[{'name':_0x8eff('0x2b'),'value':_0x8eff('0x2c')},{'name':_0x8eff('0x2d'),'value':_0x8eff('0x2e')}];var _0xcc85ff=_['find'](_0x34b2e5,['value',_0x479a4b[_0x8eff('0x31')]])['name'];return db['UserProfileSection']['find']({'where':{'name':_0xcc85ff,'userProfileId':_0x3229ba[_0x8eff('0x56')]},'raw':!![]})[_0x8eff('0x29')](function(_0x461026){if(_0x461026&&_0x461026[_0x8eff('0x57')]===0x0){return db[_0x8eff('0x34')][_0x8eff('0x4f')]({'name':_0x479a4b[_0x8eff('0x33')],'resourceId':_0x479a4b['id'],'type':_0x461026[_0x8eff('0x33')],'sectionId':_0x461026['id']},{})['then'](function(){return _0x1c6ee1;});}else{return _0x1c6ee1;}})[_0x8eff('0x4e')](function(_0x5492df){logger[_0x8eff('0x35')](_0x8eff('0x58'),_0x5492df);throw _0x5492df;});}return _0x1c6ee1;});}})[_0x8eff('0x29')](respondWithResult(_0xa6355e,0xc9))[_0x8eff('0x4e')](handleError(_0xa6355e,null));};exports[_0x8eff('0x5d')]=function(_0x2f65de,_0x570728){if(_0x2f65de[_0x8eff('0x50')]['id']){delete _0x2f65de['body']['id'];}return db[_0x8eff('0x36')][_0x8eff('0x32')]({'where':{'id':_0x2f65de[_0x8eff('0x4c')]['id']}})[_0x8eff('0x29')](handleEntityNotFound(_0x570728,null))[_0x8eff('0x29')](saveUpdates(_0x2f65de[_0x8eff('0x50')],null))[_0x8eff('0x29')](respondWithResult(_0x570728,null))[_0x8eff('0x4e')](handleError(_0x570728,null));};exports[_0x8eff('0x2a')]=function(_0x592ae5,_0x7629f0){return db[_0x8eff('0x36')][_0x8eff('0x32')]({'where':{'id':_0x592ae5[_0x8eff('0x4c')]['id']}})[_0x8eff('0x29')](handleEntityNotFound(_0x7629f0,null))[_0x8eff('0x29')](removeEntity(_0x7629f0,null))[_0x8eff('0x4e')](handleError(_0x7629f0,null));};exports[_0x8eff('0x5e')]=function(_0x3350b8,_0x123673,_0x4ef11d){var _0x503527={'raw':![],'where':{}};var _0x5da127={};var _0x5f3443={'count':0x0,'rows':[]};return db[_0x8eff('0x36')][_0x8eff('0x5f')]({'where':{'id':_0x3350b8[_0x8eff('0x4c')]['id']}})[_0x8eff('0x29')](handleEntityNotFound(_0x123673,null))[_0x8eff('0x29')](function(_0x125ea4){if(_0x125ea4){_0x5da127[_0x8eff('0x3d')]=_['keys'](db[_0x8eff('0x60')][_0x8eff('0x37')]);_0x5da127[_0x8eff('0x3a')]=_[_0x8eff('0x3b')](_0x3350b8['query']);_0x5da127[_0x8eff('0x3c')]=_[_0x8eff('0x4d')](_0x5da127['model'],_0x5da127[_0x8eff('0x3a')]);_0x503527[_0x8eff('0x3e')]=_[_0x8eff('0x4d')](_0x5da127['model'],qs['fields'](_0x3350b8['query'][_0x8eff('0x3f')]));_0x503527[_0x8eff('0x3e')]=_0x503527[_0x8eff('0x3e')][_0x8eff('0x40')]?_0x503527[_0x8eff('0x3e')]:_0x5da127[_0x8eff('0x3d')];if(!_0x3350b8[_0x8eff('0x3a')][_0x8eff('0x61')](_0x8eff('0x41'))){_0x503527[_0x8eff('0x22')]=qs[_0x8eff('0x22')](_0x3350b8['query'][_0x8eff('0x22')]);_0x503527['offset']=qs[_0x8eff('0x20')](_0x3350b8[_0x8eff('0x3a')]['offset']);}_0x503527[_0x8eff('0x42')]=qs['sort'](_0x3350b8[_0x8eff('0x3a')][_0x8eff('0x43')]);_0x503527[_0x8eff('0x44')]=qs[_0x8eff('0x3c')](_[_0x8eff('0x45')](_0x3350b8['query'],_0x5da127[_0x8eff('0x3c')]));_0x503527[_0x8eff('0x44')][_0x8eff('0x62')]=_0x125ea4['id'];if(_0x3350b8[_0x8eff('0x3a')][_0x8eff('0x46')]){_0x503527[_0x8eff('0x44')]=_[_0x8eff('0x47')](_0x503527[_0x8eff('0x44')],{'$or':_[_0x8eff('0x2f')](_0x503527[_0x8eff('0x3e')],function(_0x43bbce){var _0x52383c={};_0x52383c[_0x43bbce]={'$like':'%'+_0x3350b8[_0x8eff('0x3a')][_0x8eff('0x46')]+'%'};return _0x52383c;})});}_0x503527=_[_0x8eff('0x47')]({},_0x503527,_0x3350b8[_0x8eff('0x48')]);return db[_0x8eff('0x60')]['count']({'where':_0x503527[_0x8eff('0x44')]})[_0x8eff('0x29')](function(_0x5c7e6e){_0x5f3443['count']=_0x5c7e6e;if(_0x3350b8[_0x8eff('0x3a')][_0x8eff('0x49')]){_0x503527[_0x8eff('0x4a')]=[{'all':!![]}];}return db[_0x8eff('0x60')][_0x8eff('0x63')](_0x503527);})[_0x8eff('0x29')](function(_0x5f258c){_0x5f3443[_0x8eff('0x4b')]=_0x5f258c;return _0x5f3443;});}})['then'](respondWithFilteredResult(_0x123673,_0x503527))[_0x8eff('0x4e')](handleError(_0x123673,null));};exports[_0x8eff('0x64')]=function(_0x57878e,_0x386c1c,_0x484289){var _0x506c3f={'raw':!![],'where':{}};var _0x4522b={};var _0x525779={'count':0x0,'rows':[]};return db[_0x8eff('0x36')][_0x8eff('0x5f')]({'where':{'id':_0x57878e['params']['id']}})[_0x8eff('0x29')](handleEntityNotFound(_0x386c1c,null))[_0x8eff('0x29')](function(_0x50dd68){if(_0x50dd68){_0x4522b[_0x8eff('0x3d')]=_[_0x8eff('0x3b')](db[_0x8eff('0x65')][_0x8eff('0x37')]);_0x4522b[_0x8eff('0x3a')]=_[_0x8eff('0x3b')](_0x57878e[_0x8eff('0x3a')]);_0x4522b[_0x8eff('0x3c')]=_[_0x8eff('0x4d')](_0x4522b['model'],_0x4522b['query']);_0x506c3f['attributes']=_[_0x8eff('0x4d')](_0x4522b[_0x8eff('0x3d')],qs[_0x8eff('0x3f')](_0x57878e['query'][_0x8eff('0x3f')]));_0x506c3f[_0x8eff('0x3e')]=_0x506c3f[_0x8eff('0x3e')][_0x8eff('0x40')]?_0x506c3f[_0x8eff('0x3e')]:_0x4522b[_0x8eff('0x3d')];if(!_0x57878e['query'][_0x8eff('0x61')]('nolimit')){_0x506c3f[_0x8eff('0x22')]=qs[_0x8eff('0x22')](_0x57878e[_0x8eff('0x3a')][_0x8eff('0x22')]);_0x506c3f[_0x8eff('0x20')]=qs[_0x8eff('0x20')](_0x57878e[_0x8eff('0x3a')]['offset']);}_0x506c3f[_0x8eff('0x42')]=qs[_0x8eff('0x43')](_0x57878e[_0x8eff('0x3a')][_0x8eff('0x43')]);_0x506c3f[_0x8eff('0x44')]=qs['filters'](_[_0x8eff('0x45')](_0x57878e[_0x8eff('0x3a')],_0x4522b[_0x8eff('0x3c')]));_0x506c3f['where']['VoiceQueueId']=_0x50dd68['id'];if(_0x57878e[_0x8eff('0x3a')][_0x8eff('0x46')]){_0x506c3f[_0x8eff('0x44')]=_['merge'](_0x506c3f[_0x8eff('0x44')],{'$or':_['map'](_0x506c3f['attributes'],function(_0x10b9ac){var _0x6bc93b={};_0x6bc93b[_0x10b9ac]={'$like':'%'+_0x57878e[_0x8eff('0x3a')][_0x8eff('0x46')]+'%'};return _0x6bc93b;})});}_0x506c3f=_[_0x8eff('0x47')]({},_0x506c3f,_0x57878e[_0x8eff('0x48')]);return db[_0x8eff('0x65')][_0x8eff('0x23')]({'where':_0x506c3f[_0x8eff('0x44')]})[_0x8eff('0x29')](function(_0x274f4e){_0x525779[_0x8eff('0x23')]=_0x274f4e;if(_0x57878e['query'][_0x8eff('0x49')]){_0x506c3f[_0x8eff('0x4a')]=[{'all':!![]}];}return db[_0x8eff('0x65')][_0x8eff('0x63')](_0x506c3f);})[_0x8eff('0x29')](function(_0x4e4713){_0x525779[_0x8eff('0x4b')]=_0x4e4713;return _0x525779;});}})[_0x8eff('0x29')](respondWithFilteredResult(_0x386c1c,_0x506c3f))[_0x8eff('0x4e')](handleError(_0x386c1c,null));};exports[_0x8eff('0x66')]=function(_0x516d1b,_0x5db7b8,_0x339451){var _0x111056={'raw':!![],'where':{}};var _0x38eff3={};var _0x32d427={'count':0x0,'rows':[]};return db['VoiceQueue'][_0x8eff('0x5f')]({'where':{'id':_0x516d1b[_0x8eff('0x4c')]['id']}})[_0x8eff('0x29')](handleEntityNotFound(_0x5db7b8,null))[_0x8eff('0x29')](function(_0x35d8fe){if(_0x35d8fe){_0x38eff3[_0x8eff('0x3d')]=_[_0x8eff('0x3b')](db[_0x8eff('0x67')][_0x8eff('0x37')]);_0x38eff3['query']=_[_0x8eff('0x3b')](_0x516d1b['query']);_0x38eff3[_0x8eff('0x3c')]=_[_0x8eff('0x4d')](_0x38eff3[_0x8eff('0x3d')],_0x38eff3['query']);_0x111056[_0x8eff('0x3e')]=_['intersection'](_0x38eff3[_0x8eff('0x3d')],qs[_0x8eff('0x3f')](_0x516d1b['query'][_0x8eff('0x3f')]));_0x111056[_0x8eff('0x3e')]=_0x111056[_0x8eff('0x3e')][_0x8eff('0x40')]?_0x111056[_0x8eff('0x3e')]:_0x38eff3[_0x8eff('0x3d')];if(!_0x516d1b['query'][_0x8eff('0x61')](_0x8eff('0x41'))){_0x111056[_0x8eff('0x22')]=qs['limit'](_0x516d1b[_0x8eff('0x3a')][_0x8eff('0x22')]);_0x111056['offset']=qs[_0x8eff('0x20')](_0x516d1b[_0x8eff('0x3a')][_0x8eff('0x20')]);}_0x111056[_0x8eff('0x42')]=qs['sort'](_0x516d1b[_0x8eff('0x3a')]['sort']);_0x111056[_0x8eff('0x44')]=qs[_0x8eff('0x3c')](_[_0x8eff('0x45')](_0x516d1b[_0x8eff('0x3a')],_0x38eff3['filters']));_0x111056[_0x8eff('0x44')]['VoiceQueueId']=_0x35d8fe['id'];if(_0x516d1b[_0x8eff('0x3a')][_0x8eff('0x46')]){_0x111056[_0x8eff('0x44')]=_[_0x8eff('0x47')](_0x111056[_0x8eff('0x44')],{'$or':_['map'](_0x111056[_0x8eff('0x3e')],function(_0x36712f){var _0x3665ab={};_0x3665ab[_0x36712f]={'$like':'%'+_0x516d1b[_0x8eff('0x3a')][_0x8eff('0x46')]+'%'};return _0x3665ab;})});}_0x111056=_[_0x8eff('0x47')]({},_0x111056,_0x516d1b[_0x8eff('0x48')]);return db[_0x8eff('0x67')]['count']({'where':_0x111056[_0x8eff('0x44')]})[_0x8eff('0x29')](function(_0x517b2c){_0x32d427['count']=_0x517b2c;if(_0x516d1b[_0x8eff('0x3a')]['includeAll']){_0x111056['include']=[{'all':!![]}];}return db[_0x8eff('0x67')][_0x8eff('0x63')](_0x111056);})['then'](function(_0x290591){_0x32d427[_0x8eff('0x4b')]=_0x290591;return _0x32d427;});}})[_0x8eff('0x29')](respondWithFilteredResult(_0x5db7b8,_0x111056))['catch'](handleError(_0x5db7b8,null));};exports[_0x8eff('0x68')]=function(_0x35be0a,_0x5e0cd9,_0x3ea1a2){var _0x5a7681={'raw':!![],'where':{}};var _0x401967={};var _0x4998cf={'count':0x0,'rows':[]};return db['VoiceQueue']['findOne']({'where':{'id':_0x35be0a[_0x8eff('0x4c')]['id']}})[_0x8eff('0x29')](handleEntityNotFound(_0x5e0cd9,null))[_0x8eff('0x29')](function(_0x26d11b){if(_0x26d11b){_0x401967[_0x8eff('0x3d')]=_[_0x8eff('0x3b')](db[_0x8eff('0x69')][_0x8eff('0x37')]);_0x401967[_0x8eff('0x3a')]=_[_0x8eff('0x3b')](_0x35be0a[_0x8eff('0x3a')]);_0x401967['filters']=_['intersection'](_0x401967[_0x8eff('0x3d')],_0x401967[_0x8eff('0x3a')]);_0x5a7681[_0x8eff('0x3e')]=_[_0x8eff('0x4d')](_0x401967[_0x8eff('0x3d')],qs[_0x8eff('0x3f')](_0x35be0a[_0x8eff('0x3a')][_0x8eff('0x3f')]));_0x5a7681[_0x8eff('0x3e')]=_0x5a7681['attributes'][_0x8eff('0x40')]?_0x5a7681[_0x8eff('0x3e')]:_0x401967[_0x8eff('0x3d')];if(!_0x35be0a[_0x8eff('0x3a')][_0x8eff('0x61')](_0x8eff('0x41'))){_0x5a7681['limit']=qs['limit'](_0x35be0a[_0x8eff('0x3a')][_0x8eff('0x22')]);_0x5a7681[_0x8eff('0x20')]=qs[_0x8eff('0x20')](_0x35be0a[_0x8eff('0x3a')]['offset']);}_0x5a7681[_0x8eff('0x42')]=qs['sort'](_0x35be0a['query'][_0x8eff('0x43')]);_0x5a7681[_0x8eff('0x44')]=qs[_0x8eff('0x3c')](_['pick'](_0x35be0a[_0x8eff('0x3a')],_0x401967[_0x8eff('0x3c')]));_0x5a7681[_0x8eff('0x44')][_0x8eff('0x62')]=_0x26d11b['id'];if(_0x35be0a[_0x8eff('0x3a')][_0x8eff('0x46')]){_0x5a7681['where']=_[_0x8eff('0x47')](_0x5a7681['where'],{'$or':_[_0x8eff('0x2f')](_0x5a7681[_0x8eff('0x3e')],function(_0xbdcc8f){var _0xe31770={};_0xe31770[_0xbdcc8f]={'$like':'%'+_0x35be0a[_0x8eff('0x3a')][_0x8eff('0x46')]+'%'};return _0xe31770;})});}_0x5a7681=_['merge']({},_0x5a7681,_0x35be0a['options']);return db[_0x8eff('0x69')][_0x8eff('0x23')]({'where':_0x5a7681[_0x8eff('0x44')]})[_0x8eff('0x29')](function(_0x92358e){_0x4998cf['count']=_0x92358e;if(_0x35be0a[_0x8eff('0x3a')][_0x8eff('0x49')]){_0x5a7681[_0x8eff('0x4a')]=[{'all':!![]}];}return db['CmHopperBlack']['findAll'](_0x5a7681);})[_0x8eff('0x29')](function(_0x1a09cb){_0x4998cf[_0x8eff('0x4b')]=_0x1a09cb;return _0x4998cf;});}})[_0x8eff('0x29')](respondWithFilteredResult(_0x5e0cd9,_0x5a7681))[_0x8eff('0x4e')](handleError(_0x5e0cd9,null));};exports[_0x8eff('0x6a')]=function(_0x2c13ab,_0x36f1a5,_0x4b6e21){var _0x483ca8={};var _0x192ba5={};var _0x38d3f2;var _0x1d2328;return db[_0x8eff('0x36')][_0x8eff('0x5f')]({'where':{'id':_0x2c13ab[_0x8eff('0x4c')]['id']}})[_0x8eff('0x29')](handleEntityNotFound(_0x36f1a5,null))['then'](function(_0x1e4d64){if(_0x1e4d64){_0x38d3f2=_0x1e4d64;_0x192ba5[_0x8eff('0x3d')]=_[_0x8eff('0x3b')](db[_0x8eff('0x6b')][_0x8eff('0x37')]);_0x192ba5[_0x8eff('0x3a')]=_['keys'](_0x2c13ab['query']);_0x192ba5['filters']=_[_0x8eff('0x4d')](_0x192ba5[_0x8eff('0x3d')],_0x192ba5[_0x8eff('0x3a')]);_0x483ca8[_0x8eff('0x3e')]=_[_0x8eff('0x4d')](_0x192ba5[_0x8eff('0x3d')],qs['fields'](_0x2c13ab[_0x8eff('0x3a')][_0x8eff('0x3f')]));_0x483ca8[_0x8eff('0x3e')]=_0x483ca8[_0x8eff('0x3e')][_0x8eff('0x40')]?_0x483ca8[_0x8eff('0x3e')]:_0x192ba5[_0x8eff('0x3d')];_0x483ca8[_0x8eff('0x42')]=qs[_0x8eff('0x43')](_0x2c13ab[_0x8eff('0x3a')][_0x8eff('0x43')]);_0x483ca8[_0x8eff('0x44')]=qs['filters'](_[_0x8eff('0x45')](_0x2c13ab[_0x8eff('0x3a')],_0x192ba5[_0x8eff('0x3c')]));if(_0x2c13ab[_0x8eff('0x3a')][_0x8eff('0x46')]){_0x483ca8[_0x8eff('0x44')]=_['merge'](_0x483ca8[_0x8eff('0x44')],{'$or':_[_0x8eff('0x2f')](_0x483ca8[_0x8eff('0x3e')],function(_0x5398e8){var _0x491901={};_0x491901[_0x5398e8]={'$like':'%'+_0x2c13ab[_0x8eff('0x3a')]['filter']+'%'};return _0x491901;})});}_0x483ca8=_['merge']({},_0x483ca8,_0x2c13ab[_0x8eff('0x48')]);return _0x38d3f2[_0x8eff('0x6a')](_0x483ca8);}})[_0x8eff('0x29')](function(_0x2b99a0){if(_0x2b99a0){_0x1d2328=_0x2b99a0[_0x8eff('0x40')];if(!_0x2c13ab[_0x8eff('0x3a')][_0x8eff('0x61')](_0x8eff('0x41'))){_0x483ca8['limit']=qs[_0x8eff('0x22')](_0x2c13ab[_0x8eff('0x3a')][_0x8eff('0x22')]);_0x483ca8[_0x8eff('0x20')]=qs['offset'](_0x2c13ab[_0x8eff('0x3a')][_0x8eff('0x20')]);}return _0x38d3f2[_0x8eff('0x6a')](_0x483ca8);}})[_0x8eff('0x29')](function(_0xf5b651){if(_0xf5b651){return _0xf5b651?{'count':_0x1d2328,'rows':_0xf5b651}:null;}})[_0x8eff('0x29')](respondWithResult(_0x36f1a5,null))[_0x8eff('0x4e')](handleError(_0x36f1a5,null));};exports[_0x8eff('0x6c')]=function(_0x291740,_0x33dfd6,_0xc0d82){var _0x103dcf=_0x291740[_0x8eff('0x50')][_0x8eff('0x6d')];var _0x2e9b3c=_[_0x8eff('0x2f')](_0x103dcf,'id');return db[_0x8eff('0x6b')][_0x8eff('0x63')]({'where':{'id':_0x2e9b3c},'attributes':['id'],'include':[{'model':db[_0x8eff('0x6e')],'as':_0x8eff('0x6f'),'attributes':['id','name','online',_0x8eff('0x70'),_0x8eff('0x71')],'raw':!![]}]})[_0x8eff('0x29')](function(_0x2d846c){if(_0x2d846c){var _0xdf3044=_['flatMap'](_0x2d846c,function(_0x1194c2){var _0x31c50a=_0x1194c2[_0x8eff('0x54')]({'plain':!![]});_0x31c50a[_0x8eff('0x6f')][_0x8eff('0x72')](function(_0x12d33a){_0x12d33a[_0x8eff('0x73')]=_['find'](_0x103dcf,{'id':_0x31c50a['id']})[_0x8eff('0x73')];});return _0x31c50a[_0x8eff('0x6f')];});return db[_0x8eff('0x36')][_0x8eff('0x32')]({'where':{'id':_0x291740[_0x8eff('0x4c')]['id']}})[_0x8eff('0x29')](function(_0x385108){return db['sequelize'][_0x8eff('0x74')](function(_0x598e48){return _0x385108[_0x8eff('0x6c')](_0x2e9b3c,{'transaction':_0x598e48})[_0x8eff('0x29')](function(){return BPromise['each'](_0x103dcf,function(_0x305413){return db['TeamVoiceQueue'][_0x8eff('0x75')]({'TeamId':_0x305413['id'],'VoiceQueueId':_0x291740[_0x8eff('0x4c')]['id'],'penalty':_0x305413[_0x8eff('0x73')]},{'transaction':_0x598e48});});})[_0x8eff('0x29')](function(){return BPromise['each'](_0xdf3044,function(_0x335dee){return db[_0x8eff('0x76')]['findOrCreate']({'where':{'UserId':_0x335dee['id'],'VoiceQueueId':_0x291740[_0x8eff('0x4c')]['id']},'defaults':{'penalty':_0x335dee[_0x8eff('0x73')]},'transaction':_0x598e48});});})[_0x8eff('0x29')](function(){return BPromise['each'](_['filter'](_0xdf3044,{'online':!![]}),function(_0x1eb977){return db[_0x8eff('0x77')]['upsert']({'membername':_0x1eb977['name'],'UserId':_0x1eb977['id'],'queue_name':_0x385108[_0x8eff('0x33')],'VoiceQueueId':_0x385108['id'],'interface':_[_0x8eff('0x78')](_0x1eb977[_0x8eff('0x71')])?util['format'](_0x8eff('0x79'),_0x1eb977[_0x8eff('0x33')]):_0x1eb977[_0x8eff('0x71')],'paused':_0x1eb977[_0x8eff('0x70')]||![],'penalty':_0x1eb977[_0x8eff('0x73')]},{'transaction':_0x598e48});});})['then'](function(){_0xdf3044[_0x8eff('0x72')](function(_0x29f6d2){socket[_0x8eff('0x7a')]('userVoiceQueue:save',{'UserId':_0x29f6d2['id'],'VoiceQueueId':_0x385108['id']});});});});});}})[_0x8eff('0x29')](respondWithStatusCode(_0x33dfd6,null))[_0x8eff('0x4e')](handleError(_0x33dfd6,null));};exports[_0x8eff('0x7b')]=function(_0x202f62,_0x349983,_0x2e420c){return db[_0x8eff('0x6b')]['findAll']({'where':{'id':_0x202f62[_0x8eff('0x3a')]['ids']},'attributes':['id'],'include':[{'model':db[_0x8eff('0x6e')],'as':_0x8eff('0x6f'),'attributes':['id'],'raw':!![]}]})[_0x8eff('0x29')](handleEntityNotFound(_0x349983,null))[_0x8eff('0x29')](function(_0x1ae192){var _0x390347=_[_0x8eff('0x2f')](_0x1ae192,'id');var _0x40fc65=[];var _0x1e1e37=[];var _0x4581bd=squel[_0x8eff('0x7c')]();_0x4581bd[_0x8eff('0x7d')](_0x8eff('0x7e'))[_0x8eff('0x7f')](_0x8eff('0x80'),'tq')[_0x8eff('0x81')]('user_has_teams','ut',_0x8eff('0x82'))[_0x8eff('0x44')]('VoiceQueueId\x20=\x20?',_0x202f62[_0x8eff('0x4c')]['id']);for(var _0x4c5d80=0x0;_0x4c5d80<_0x1ae192[_0x8eff('0x40')];_0x4c5d80+=0x1){let _0x4cd219=_0x1ae192[_0x4c5d80];for(var _0xf37a97=0x0;_0xf37a97<_0x4cd219[_0x8eff('0x6f')]['length'];_0xf37a97+=0x1){let _0x775a67=_0x4cd219['Agents'][_0xf37a97];var _0x10fe53=_0x4581bd[_0x8eff('0x59')]();_0x10fe53[_0x8eff('0x44')](_0x8eff('0x83'),_0x775a67['id']);_0x1e1e37[_0x8eff('0x84')](db[_0x8eff('0x85')][_0x8eff('0x3a')](_0x10fe53[_0x8eff('0x86')](),{'type':db[_0x8eff('0x85')][_0x8eff('0x87')][_0x8eff('0x88')]})['then'](function(_0x2b5724){if(_0x2b5724['length']===0x1){return _0x775a67['id'];}else{var _0x4f4f6b=_['every'](_[_0x8eff('0x2f')](_0x2b5724,_0x8eff('0x89')),function(_0x220890){return _[_0x8eff('0x8a')](_0x390347,_0x220890);});if(_0x4f4f6b){return _0x775a67['id'];}}}));}}return BPromise[_0x8eff('0x8b')](_0x1e1e37)[_0x8eff('0x29')](function(_0x32aaaa){_0x40fc65=_(_0x40fc65)['union'](_0x32aaaa)[_0x8eff('0x8c')]()['value']();return db[_0x8eff('0x36')][_0x8eff('0x32')]({'where':{'id':_0x202f62[_0x8eff('0x4c')]['id']}})[_0x8eff('0x29')](function(_0x4ac6dd){return db[_0x8eff('0x85')][_0x8eff('0x74')](function(_0x1ae5f1){return _0x4ac6dd[_0x8eff('0x7b')](_0x202f62['query'][_0x8eff('0x8d')],{'transaction':_0x1ae5f1})['then'](function(){if(!_[_0x8eff('0x8e')](_0x40fc65)){return _0x4ac6dd[_0x8eff('0x8f')](_0x40fc65,{'transaction':_0x1ae5f1})[_0x8eff('0x29')](function(){return db[_0x8eff('0x77')]['destroy']({'where':{'VoiceQueueId':_0x202f62[_0x8eff('0x4c')]['id'],'UserId':_0x40fc65},'transaction':_0x1ae5f1});});}})[_0x8eff('0x29')](function(){_0x40fc65[_0x8eff('0x72')](function(_0x44b8ed){socket['emit'](_0x8eff('0x90'),{'UserId':_0x44b8ed,'VoiceQueueId':_0x4ac6dd['id']});});});});});});})[_0x8eff('0x29')](respondWithStatusCode(_0x349983,null))['catch'](handleError(_0x349983,null));};exports[_0x8eff('0x91')]=function(_0x3a0931,_0x58c541,_0x1b6463){var _0x310ae9,_0x370734;return db[_0x8eff('0x36')][_0x8eff('0x32')]({'where':{'id':_0x3a0931[_0x8eff('0x4c')]['id']}})[_0x8eff('0x29')](handleEntityNotFound(_0x58c541,null))[_0x8eff('0x29')](function(_0x1932df){if(_0x1932df){_0x370734=_0x1932df;return _0x1932df['addAgents'](_0x3a0931[_0x8eff('0x50')][_0x8eff('0x8d')],_['omit'](_0x3a0931[_0x8eff('0x50')],[_0x8eff('0x8d'),'id'])||{})['spread'](function(_0xd293b1){for(var _0x119d81=0x0;_0x119d81<_0x3a0931[_0x8eff('0x50')][_0x8eff('0x8d')][_0x8eff('0x40')];_0x119d81+=0x1){socket[_0x8eff('0x7a')](_0x8eff('0x92'),{'UserId':Number(_0x3a0931[_0x8eff('0x50')][_0x8eff('0x8d')][_0x119d81]),'VoiceQueueId':Number(_0x3a0931[_0x8eff('0x4c')]['id'])});}return _0xd293b1;});}})['then'](function(_0x49106c){_0x310ae9=_0x49106c||[];if(_0x370734){return db[_0x8eff('0x6e')]['findAll']({'where':{'id':_0x3a0931[_0x8eff('0x50')]['ids']},'attributes':['id',_0x8eff('0x33'),'online',_0x8eff('0x70'),_0x8eff('0x71')],'raw':!![]});}})[_0x8eff('0x29')](function(_0x4819fe){if(!_['isEmpty'](_0x4819fe)){var _0x1d5567=[];for(var _0x3ec2fc=0x0;_0x3ec2fc<_0x4819fe['length'];_0x3ec2fc++){if(_0x4819fe[_0x3ec2fc][_0x8eff('0x93')]){_0x1d5567[_0x8eff('0x84')](db[_0x8eff('0x77')][_0x8eff('0x75')]({'membername':_0x4819fe[_0x3ec2fc][_0x8eff('0x33')],'UserId':_0x4819fe[_0x3ec2fc]['id'],'queue_name':_0x370734[_0x8eff('0x33')],'VoiceQueueId':_0x370734['id'],'interface':_[_0x8eff('0x78')](_0x4819fe[_0x3ec2fc]['interface'])?util[_0x8eff('0x94')]('SIP/%s',_0x4819fe[_0x3ec2fc]['name']):_0x4819fe[_0x3ec2fc][_0x8eff('0x71')],'paused':_0x4819fe[_0x3ec2fc]['voicePause']||![],'penalty':_0x3a0931[_0x8eff('0x50')][_0x8eff('0x73')]||0x0}));}}return BPromise[_0x8eff('0x8b')](_0x1d5567);}})['then'](function(){return _0x310ae9;})[_0x8eff('0x29')](respondWithResult(_0x58c541,null))[_0x8eff('0x4e')](handleError(_0x58c541,null));};exports[_0x8eff('0x8f')]=function(_0x18c965,_0x4e452f,_0x2b9ab8){return db[_0x8eff('0x36')][_0x8eff('0x32')]({'where':{'id':_0x18c965[_0x8eff('0x4c')]['id']}})[_0x8eff('0x29')](handleEntityNotFound(_0x4e452f,null))[_0x8eff('0x29')](function(_0x5c485f){if(_0x5c485f){return _0x5c485f[_0x8eff('0x8f')](_0x18c965[_0x8eff('0x3a')][_0x8eff('0x8d')])[_0x8eff('0x29')](function(){if(_[_0x8eff('0x95')](_0x18c965[_0x8eff('0x3a')][_0x8eff('0x8d')])){for(var _0x510d06=0x0;_0x510d06<_0x18c965[_0x8eff('0x3a')][_0x8eff('0x8d')][_0x8eff('0x40')];_0x510d06+=0x1){socket[_0x8eff('0x7a')](_0x8eff('0x90'),{'UserId':Number(_0x18c965[_0x8eff('0x3a')][_0x8eff('0x8d')][_0x510d06]),'VoiceQueueId':Number(_0x18c965[_0x8eff('0x4c')]['id'])});}}else{socket[_0x8eff('0x7a')](_0x8eff('0x90'),{'UserId':Number(_0x18c965[_0x8eff('0x3a')][_0x8eff('0x8d')]),'VoiceQueueId':Number(_0x18c965[_0x8eff('0x4c')]['id'])});}});}})[_0x8eff('0x29')](function(_0x327709){return db['UserVoiceQueueRt'][_0x8eff('0x2a')]({'where':{'VoiceQueueId':_0x18c965['params']['id'],'UserId':_0x18c965['query'][_0x8eff('0x8d')]}})[_0x8eff('0x29')](function(){return _0x327709;});})[_0x8eff('0x29')](respondWithStatusCode(_0x4e452f,null))['catch'](handleError(_0x4e452f,null));};exports['getAgents']=function(_0x48f774,_0x2f494e,_0x1bce47){var _0x42165b={};var _0x1f3502={};var _0x2f968a;var _0xb942e6;return db[_0x8eff('0x36')][_0x8eff('0x5f')]({'where':{'id':_0x48f774['params']['id']}})[_0x8eff('0x29')](handleEntityNotFound(_0x2f494e,null))[_0x8eff('0x29')](function(_0x4588ca){if(_0x4588ca){_0x2f968a=_0x4588ca;_0x1f3502[_0x8eff('0x3d')]=_[_0x8eff('0x3b')](db[_0x8eff('0x6e')][_0x8eff('0x37')]);_0x1f3502['query']=_[_0x8eff('0x3b')](_0x48f774[_0x8eff('0x3a')]);_0x1f3502[_0x8eff('0x3c')]=_[_0x8eff('0x4d')](_0x1f3502[_0x8eff('0x3d')],_0x1f3502[_0x8eff('0x3a')]);_0x42165b['attributes']=_['intersection'](_0x1f3502['model'],qs[_0x8eff('0x3f')](_0x48f774['query'][_0x8eff('0x3f')]));_0x42165b[_0x8eff('0x3e')]=_0x42165b['attributes']['length']?_0x42165b['attributes']:_0x1f3502[_0x8eff('0x3d')];_0x42165b[_0x8eff('0x42')]=qs[_0x8eff('0x43')](_0x48f774[_0x8eff('0x3a')][_0x8eff('0x43')]);_0x42165b[_0x8eff('0x44')]=qs[_0x8eff('0x3c')](_['pick'](_0x48f774[_0x8eff('0x3a')],_0x1f3502[_0x8eff('0x3c')]));if(_0x48f774[_0x8eff('0x3a')][_0x8eff('0x46')]){_0x42165b[_0x8eff('0x44')]=_[_0x8eff('0x47')](_0x42165b[_0x8eff('0x44')],{'$or':_[_0x8eff('0x2f')](_0x42165b[_0x8eff('0x3e')],function(_0x468830){var _0x1c5d76={};_0x1c5d76[_0x468830]={'$like':'%'+_0x48f774[_0x8eff('0x3a')][_0x8eff('0x46')]+'%'};return _0x1c5d76;})});}_0x42165b=_[_0x8eff('0x47')]({},_0x42165b,_0x48f774[_0x8eff('0x48')]);return _0x2f968a[_0x8eff('0x96')](_0x42165b);}})[_0x8eff('0x29')](function(_0x59426b){if(_0x59426b){_0xb942e6=_0x59426b[_0x8eff('0x40')];if(!_0x48f774[_0x8eff('0x3a')][_0x8eff('0x61')]('nolimit')){_0x42165b['limit']=qs[_0x8eff('0x22')](_0x48f774[_0x8eff('0x3a')]['limit']);_0x42165b[_0x8eff('0x20')]=qs[_0x8eff('0x20')](_0x48f774[_0x8eff('0x3a')][_0x8eff('0x20')]);}return _0x2f968a[_0x8eff('0x96')](_0x42165b);}})[_0x8eff('0x29')](function(_0x13d20b){if(_0x13d20b){return _0x13d20b?{'count':_0xb942e6,'rows':_0x13d20b}:null;}})['then'](respondWithResult(_0x2f494e,null))['catch'](handleError(_0x2f494e,null));};exports[_0x8eff('0x97')]=function(_0x2bfd90,_0x17767c,_0x29419b){var _0x5912cd={};var _0xab5c65={};var _0x555ff7;var _0x3e0f5a;return db['VoiceQueue'][_0x8eff('0x5f')]({'where':{'id':_0x2bfd90['params']['id']}})[_0x8eff('0x29')](handleEntityNotFound(_0x17767c,null))[_0x8eff('0x29')](function(_0x57b896){if(_0x57b896){_0x555ff7=_0x57b896;_0xab5c65[_0x8eff('0x3d')]=_[_0x8eff('0x3b')](db[_0x8eff('0x77')][_0x8eff('0x37')]);_0xab5c65[_0x8eff('0x3a')]=_[_0x8eff('0x3b')](_0x2bfd90[_0x8eff('0x3a')]);_0xab5c65[_0x8eff('0x3c')]=_[_0x8eff('0x4d')](_0xab5c65['model'],_0xab5c65[_0x8eff('0x3a')]);_0x5912cd['attributes']=_[_0x8eff('0x4d')](_0xab5c65[_0x8eff('0x3d')],qs['fields'](_0x2bfd90[_0x8eff('0x3a')]['fields']));_0x5912cd[_0x8eff('0x3e')]=_0x5912cd[_0x8eff('0x3e')][_0x8eff('0x40')]?_0x5912cd[_0x8eff('0x3e')]:_0xab5c65[_0x8eff('0x3d')];_0x5912cd['order']=qs['sort'](_0x2bfd90[_0x8eff('0x3a')]['sort']);_0x5912cd['where']=qs[_0x8eff('0x3c')](_['pick'](_0x2bfd90[_0x8eff('0x3a')],_0xab5c65[_0x8eff('0x3c')]));if(_0x2bfd90['query'][_0x8eff('0x46')]){_0x5912cd[_0x8eff('0x44')]=_[_0x8eff('0x47')](_0x5912cd['where'],{'$or':_[_0x8eff('0x2f')](_0x5912cd['attributes'],function(_0x3c9d20){var _0xddb511={};_0xddb511[_0x3c9d20]={'$like':'%'+_0x2bfd90['query'][_0x8eff('0x46')]+'%'};return _0xddb511;})});}_0x5912cd=_[_0x8eff('0x47')]({},_0x5912cd,_0x2bfd90[_0x8eff('0x48')]);return _0x555ff7['getMembers'](_0x5912cd);}})[_0x8eff('0x29')](function(_0x4a4b2e){if(_0x4a4b2e){_0x3e0f5a=_0x4a4b2e[_0x8eff('0x40')];if(!_0x2bfd90[_0x8eff('0x3a')][_0x8eff('0x61')](_0x8eff('0x41'))){_0x5912cd[_0x8eff('0x22')]=qs[_0x8eff('0x22')](_0x2bfd90['query'][_0x8eff('0x22')]);_0x5912cd['offset']=qs[_0x8eff('0x20')](_0x2bfd90[_0x8eff('0x3a')][_0x8eff('0x20')]);}return _0x555ff7[_0x8eff('0x97')](_0x5912cd);}})[_0x8eff('0x29')](function(_0x31a6f6){return _0x31a6f6?{'count':_0x3e0f5a,'rows':_0x31a6f6}:null;})[_0x8eff('0x29')](respondWithResult(_0x17767c,null))[_0x8eff('0x4e')](handleError(_0x17767c,null));};exports[_0x8eff('0x98')]=function(_0x4e20f5,_0x31d103,_0x4b0140){var _0x39f5e3={};var _0x4f8a8d={};var _0x336241;var _0x52a37f;return db[_0x8eff('0x36')][_0x8eff('0x5f')]({'where':{'id':_0x4e20f5[_0x8eff('0x4c')]['id']}})[_0x8eff('0x29')](handleEntityNotFound(_0x31d103,null))[_0x8eff('0x29')](function(_0x666aba){if(_0x666aba){_0x336241=_0x666aba;_0x4f8a8d['model']=_[_0x8eff('0x3b')](db['CmList'][_0x8eff('0x37')]);_0x4f8a8d[_0x8eff('0x3a')]=_['keys'](_0x4e20f5[_0x8eff('0x3a')]);_0x4f8a8d[_0x8eff('0x3c')]=_[_0x8eff('0x4d')](_0x4f8a8d['model'],_0x4f8a8d[_0x8eff('0x3a')]);_0x39f5e3[_0x8eff('0x3e')]=_[_0x8eff('0x4d')](_0x4f8a8d[_0x8eff('0x3d')],qs[_0x8eff('0x3f')](_0x4e20f5[_0x8eff('0x3a')]['fields']));_0x39f5e3[_0x8eff('0x3e')]=_0x39f5e3[_0x8eff('0x3e')][_0x8eff('0x40')]?_0x39f5e3[_0x8eff('0x3e')]:_0x4f8a8d[_0x8eff('0x3d')];_0x39f5e3[_0x8eff('0x42')]=qs['sort'](_0x4e20f5[_0x8eff('0x3a')][_0x8eff('0x43')]);_0x39f5e3[_0x8eff('0x44')]=qs[_0x8eff('0x3c')](_[_0x8eff('0x45')](_0x4e20f5[_0x8eff('0x3a')],_0x4f8a8d[_0x8eff('0x3c')]));if(_0x4e20f5[_0x8eff('0x3a')]['filter']){_0x39f5e3['where']=_[_0x8eff('0x47')](_0x39f5e3[_0x8eff('0x44')],{'$or':_[_0x8eff('0x2f')](_0x39f5e3[_0x8eff('0x3e')],function(_0x68d2ce){var _0x3e05b5={};_0x3e05b5[_0x68d2ce]={'$like':'%'+_0x4e20f5[_0x8eff('0x3a')][_0x8eff('0x46')]+'%'};return _0x3e05b5;})});}_0x39f5e3=_[_0x8eff('0x47')]({},_0x39f5e3,_0x4e20f5[_0x8eff('0x48')]);return _0x336241['getLists'](_0x39f5e3);}})['then'](function(_0x59d496){if(_0x59d496){_0x52a37f=_0x59d496[_0x8eff('0x40')];if(!_0x4e20f5[_0x8eff('0x3a')][_0x8eff('0x61')]('nolimit')){_0x39f5e3['limit']=qs[_0x8eff('0x22')](_0x4e20f5['query'][_0x8eff('0x22')]);_0x39f5e3[_0x8eff('0x20')]=qs[_0x8eff('0x20')](_0x4e20f5[_0x8eff('0x3a')][_0x8eff('0x20')]);}return _0x336241[_0x8eff('0x98')](_0x39f5e3);}})[_0x8eff('0x29')](function(_0x2ecaca){if(_0x2ecaca){return _0x2ecaca?{'count':_0x52a37f,'rows':_0x2ecaca}:null;}})[_0x8eff('0x29')](respondWithResult(_0x31d103,null))[_0x8eff('0x4e')](handleError(_0x31d103,null));};exports[_0x8eff('0x99')]=function(_0x5d9696,_0x3f2550,_0x18db9f){var _0xfdee5c=moment()[_0x8eff('0x94')]('YYYY-MM-DD\x20HH:mm:ss');var _0x4bc36,_0x1598ef;return db[_0x8eff('0x36')][_0x8eff('0x32')]({'where':{'id':_0x5d9696['params']['id']}})[_0x8eff('0x29')](handleEntityNotFound(_0x3f2550,null))[_0x8eff('0x29')](function(_0x662c1b){if(_0x662c1b){_0x1598ef=_0x662c1b;return _0x662c1b['addLists'](_0x5d9696[_0x8eff('0x50')]['ids'],_[_0x8eff('0x5a')](_0x5d9696[_0x8eff('0x50')],['ids','id'])||{});}return null;})[_0x8eff('0x9a')](function(_0x3436b4){var _0x47ba7e;_0x4bc36=_0x3436b4||[];var _0x5c34ed=[];if(_0x3436b4){for(var _0x259de8=0x0;_0x259de8<_0x3436b4[_0x8eff('0x40')];_0x259de8+=0x1){var _0x19a9df=_0x3436b4[_0x259de8][_0x8eff('0x54')]({'plain':!![]});_0x1598ef[_0x8eff('0x9b')]=_0x5d9696[_0x8eff('0x50')][_0x8eff('0x9b')]?_0x5d9696['body'][_0x8eff('0x9b')]:_0x1598ef[_0x8eff('0x9b')];switch(_0x1598ef[_0x8eff('0x9b')]){case _0x8eff('0x9c'):_0x47ba7e=squel[_0x8eff('0x9d')]()[_0x8eff('0x9e')]('cm_hopper')[_0x8eff('0x9f')]([_0x8eff('0xa0'),_0x8eff('0xa1'),_0x8eff('0xa2'),'ListId',_0x8eff('0x62'),_0x8eff('0x5c'),'updatedAt'],squel[_0x8eff('0x7c')]()[_0x8eff('0x7d')](_0x8eff('0xa0'),_0x8eff('0xa0'))['field']('\x27'+_0xfdee5c+'\x27',_0x8eff('0xa1'))[_0x8eff('0x7d')]('id',_0x8eff('0xa2'))[_0x8eff('0x7d')](_0x19a9df['CmListId'][_0x8eff('0x86')](),_0x8eff('0xa3'))[_0x8eff('0x7d')](_0x5d9696['params']['id'][_0x8eff('0x86')](),'VoiceQueueId')[_0x8eff('0x7d')]('\x27'+_0xfdee5c+'\x27',_0x8eff('0x5c'))['field']('\x27'+_0xfdee5c+'\x27',_0x8eff('0x5b'))['from'](_0x8eff('0xa4'))[_0x8eff('0x44')](_0x8eff('0xa5'))['where'](_0x8eff('0xa6'),_0x19a9df['CmListId'][_0x8eff('0x86')]())[_0x8eff('0x44')]('phone\x20IS\x20NOT\x20NULL')[_0x8eff('0x44')](_0x8eff('0xa7'),squel[_0x8eff('0x7c')]()[_0x8eff('0x7d')](_0x8eff('0xa8'))['from'](_0x8eff('0xa9'))['where'](_0x8eff('0xaa'),_0x5d9696[_0x8eff('0x4c')]['id'][_0x8eff('0x86')]()))['where'](_0x8eff('0xa7'),squel['select']()[_0x8eff('0x7d')](_0x8eff('0xab'))[_0x8eff('0x7f')](_0x8eff('0xac'))[_0x8eff('0x44')](_0x8eff('0xaa'),_0x5d9696['params']['id'][_0x8eff('0x86')]())))[_0x8eff('0x86')]();break;case _0x8eff('0xad'):_0x47ba7e=squel['insert']()[_0x8eff('0x9e')](_0x8eff('0xac'))[_0x8eff('0x9f')]([_0x8eff('0xa0'),_0x8eff('0xa1'),_0x8eff('0xa2'),_0x8eff('0xa3'),_0x8eff('0x62'),'createdAt',_0x8eff('0x5b')],squel[_0x8eff('0x7c')]()[_0x8eff('0x7d')](_0x8eff('0xa0'),_0x8eff('0xa0'))[_0x8eff('0x7d')]('\x27'+_0xfdee5c+'\x27',_0x8eff('0xa1'))[_0x8eff('0x7d')]('id',_0x8eff('0xa2'))[_0x8eff('0x7d')](_0x19a9df[_0x8eff('0xae')]['toString'](),_0x8eff('0xa3'))[_0x8eff('0x7d')](_0x5d9696['params']['id'][_0x8eff('0x86')](),'VoiceQueueId')[_0x8eff('0x7d')]('\x27'+_0xfdee5c+'\x27',_0x8eff('0x5c'))[_0x8eff('0x7d')]('\x27'+_0xfdee5c+'\x27',_0x8eff('0x5b'))[_0x8eff('0x7f')](_0x8eff('0xa4'))[_0x8eff('0x44')](_0x8eff('0xa5'))[_0x8eff('0x44')](_0x8eff('0xa6'),_0x19a9df[_0x8eff('0xae')][_0x8eff('0x86')]())[_0x8eff('0x44')](_0x8eff('0xaf'))[_0x8eff('0x44')]('phone\x20NOT\x20IN\x20(?)',squel[_0x8eff('0x7c')]()[_0x8eff('0x7d')](_0x8eff('0xab'))[_0x8eff('0x7f')](_0x8eff('0xac'))[_0x8eff('0x44')](_0x8eff('0xaa'),_0x5d9696[_0x8eff('0x4c')]['id']['toString']())))[_0x8eff('0x86')]();break;default:_0x47ba7e=squel[_0x8eff('0x9d')]()[_0x8eff('0x9e')]('cm_hopper')[_0x8eff('0x9f')]([_0x8eff('0xa0'),_0x8eff('0xa1'),_0x8eff('0xa2'),_0x8eff('0xa3'),_0x8eff('0x62'),'createdAt','updatedAt'],squel[_0x8eff('0x7c')]()[_0x8eff('0x7d')]('phone',_0x8eff('0xa0'))[_0x8eff('0x7d')]('\x27'+_0xfdee5c+'\x27',_0x8eff('0xa1'))['field']('id',_0x8eff('0xa2'))['field'](_0x19a9df[_0x8eff('0xae')][_0x8eff('0x86')](),_0x8eff('0xa3'))[_0x8eff('0x7d')](_0x5d9696[_0x8eff('0x4c')]['id'][_0x8eff('0x86')](),'VoiceQueueId')['field']('\x27'+_0xfdee5c+'\x27',_0x8eff('0x5c'))['field']('\x27'+_0xfdee5c+'\x27',_0x8eff('0x5b'))[_0x8eff('0x7f')](_0x8eff('0xa4'))['where'](_0x8eff('0xa5'))[_0x8eff('0x44')]('ListId\x20=\x20?',_0x19a9df[_0x8eff('0xae')][_0x8eff('0x86')]())['where'](_0x8eff('0xaf')))['toString']();}_0x5c34ed[_0x8eff('0x84')](db[_0x8eff('0x85')][_0x8eff('0x3a')](_0x47ba7e));}return BPromise['all'](_0x5c34ed);}})[_0x8eff('0x29')](function(){var _0x402668=[];var _0x1cc0a7=squel[_0x8eff('0x9d')]()['into']('cm_hopper_additional_phones')[_0x8eff('0x9f')]([_0x8eff('0xb0'),_0x8eff('0xa0'),'OrderBy','createdAt','updatedAt'],squel['select']()[_0x8eff('0x7d')]('h.id')[_0x8eff('0x7d')](_0x8eff('0xb1'))[_0x8eff('0x7d')](_0x8eff('0xb2'))[_0x8eff('0x7d')]('\x27'+_0xfdee5c+'\x27',_0x8eff('0x5c'))['field']('\x27'+_0xfdee5c+'\x27',_0x8eff('0x5b'))[_0x8eff('0x7f')]('cm_contact_has_items','ci')['join'](_0x8eff('0xac'),'h',_0x8eff('0xb3'))[_0x8eff('0x44')](_0x8eff('0xb4'),_0xfdee5c)[_0x8eff('0x44')](_0x8eff('0xb5'),'PHONE'))[_0x8eff('0x86')]();_0x402668[_0x8eff('0x84')](db[_0x8eff('0x85')]['query'](_0x1cc0a7));return BPromise[_0x8eff('0x8b')](_0x402668);})['then'](function(){return _0x4bc36;})[_0x8eff('0x29')](respondWithResult(_0x3f2550,null))['catch'](handleError(_0x3f2550,null));};exports['removeLists']=function(_0x473875,_0x573691,_0x33b654){return db[_0x8eff('0x36')]['find']({'where':{'id':_0x473875['params']['id']}})[_0x8eff('0x29')](handleEntityNotFound(_0x573691,null))['then'](function(_0xd35859){if(_0xd35859){return _0xd35859[_0x8eff('0xb6')](_0x473875['query']['ids']);}})[_0x8eff('0x29')](function(_0x1fad35){if(_0x1fad35){return db['CmHopper'][_0x8eff('0x2a')]({'where':{'ListId':_0x473875[_0x8eff('0x3a')][_0x8eff('0x8d')],'VoiceQueueId':_0x473875['params']['id']}})[_0x8eff('0x29')](function(){return _0x1fad35;});}})[_0x8eff('0x29')](respondWithStatusCode(_0x573691,null))['catch'](handleError(_0x573691,null));};exports['getBlackLists']=function(_0x24be94,_0x35b46b,_0x41b65e){var _0x44aa71={};var _0x2ae62a={};var _0x3b1e9a;var _0x34e9c5;return db['VoiceQueue']['findOne']({'where':{'id':_0x24be94[_0x8eff('0x4c')]['id']}})['then'](handleEntityNotFound(_0x35b46b,null))['then'](function(_0x1fe534){if(_0x1fe534){_0x3b1e9a=_0x1fe534;_0x2ae62a[_0x8eff('0x3d')]=_[_0x8eff('0x3b')](db['CmList'][_0x8eff('0x37')]);_0x2ae62a[_0x8eff('0x3a')]=_[_0x8eff('0x3b')](_0x24be94['query']);_0x2ae62a[_0x8eff('0x3c')]=_[_0x8eff('0x4d')](_0x2ae62a['model'],_0x2ae62a[_0x8eff('0x3a')]);_0x44aa71[_0x8eff('0x3e')]=_[_0x8eff('0x4d')](_0x2ae62a[_0x8eff('0x3d')],qs[_0x8eff('0x3f')](_0x24be94[_0x8eff('0x3a')][_0x8eff('0x3f')]));_0x44aa71[_0x8eff('0x3e')]=_0x44aa71[_0x8eff('0x3e')]['length']?_0x44aa71['attributes']:_0x2ae62a[_0x8eff('0x3d')];_0x44aa71[_0x8eff('0x42')]=qs[_0x8eff('0x43')](_0x24be94[_0x8eff('0x3a')][_0x8eff('0x43')]);_0x44aa71[_0x8eff('0x44')]=qs[_0x8eff('0x3c')](_['pick'](_0x24be94[_0x8eff('0x3a')],_0x2ae62a[_0x8eff('0x3c')]));if(_0x24be94['query']['filter']){_0x44aa71['where']=_[_0x8eff('0x47')](_0x44aa71[_0x8eff('0x44')],{'$or':_[_0x8eff('0x2f')](_0x44aa71[_0x8eff('0x3e')],function(_0x1cb91a){var _0x395ab9={};_0x395ab9[_0x1cb91a]={'$like':'%'+_0x24be94[_0x8eff('0x3a')]['filter']+'%'};return _0x395ab9;})});}_0x44aa71=_[_0x8eff('0x47')]({},_0x44aa71,_0x24be94['options']);return _0x3b1e9a['getBlackLists'](_0x44aa71);}})['then'](function(_0x52400d){if(_0x52400d){_0x34e9c5=_0x52400d[_0x8eff('0x40')];if(!_0x24be94[_0x8eff('0x3a')][_0x8eff('0x61')](_0x8eff('0x41'))){_0x44aa71[_0x8eff('0x22')]=qs[_0x8eff('0x22')](_0x24be94[_0x8eff('0x3a')]['limit']);_0x44aa71[_0x8eff('0x20')]=qs[_0x8eff('0x20')](_0x24be94[_0x8eff('0x3a')][_0x8eff('0x20')]);}return _0x3b1e9a['getBlackLists'](_0x44aa71);}})[_0x8eff('0x29')](function(_0x4ded7b){if(_0x4ded7b){return _0x4ded7b?{'count':_0x34e9c5,'rows':_0x4ded7b}:null;}})[_0x8eff('0x29')](respondWithResult(_0x35b46b,null))[_0x8eff('0x4e')](handleError(_0x35b46b,null));};exports[_0x8eff('0xb7')]=function(_0x541958,_0x516bef,_0x148c2f){var _0x3bc0c8,_0x1e73d4;return db[_0x8eff('0x36')][_0x8eff('0x32')]({'where':{'id':_0x541958[_0x8eff('0x4c')]['id']}})['then'](handleEntityNotFound(_0x516bef,null))[_0x8eff('0x29')](function(_0x386ba2){if(_0x386ba2){_0x1e73d4=_0x386ba2;return _0x386ba2[_0x8eff('0xb7')](_0x541958[_0x8eff('0x50')]['ids'],_['omit'](_0x541958[_0x8eff('0x50')],[_0x8eff('0x8d'),'id'])||{});}return null;})[_0x8eff('0x9a')](function(_0x39128f){var _0x15ac83;_0x3bc0c8=_0x39128f||[];var _0x2659a3=[];if(_0x39128f){for(var _0x568fd0=0x0;_0x568fd0<_0x39128f['length'];_0x568fd0+=0x1){var _0x2c8284=_0x39128f[_0x568fd0][_0x8eff('0x54')]({'plain':!![]});_0x15ac83=squel['insert']()[_0x8eff('0x9e')](_0x8eff('0xb8'))[_0x8eff('0x9f')]([_0x8eff('0xa0'),_0x8eff('0xa2'),_0x8eff('0xa3'),_0x8eff('0x62'),'createdAt','updatedAt'],squel[_0x8eff('0x7c')]()[_0x8eff('0x7d')](_0x8eff('0xa0'),_0x8eff('0xa0'))[_0x8eff('0x7d')]('id',_0x8eff('0xa2'))[_0x8eff('0x7d')](_0x2c8284[_0x8eff('0xae')][_0x8eff('0x86')](),'ListId')[_0x8eff('0x7d')](_0x541958['params']['id'][_0x8eff('0x86')](),_0x8eff('0x62'))[_0x8eff('0x7d')](_0x8eff('0xb9'),_0x8eff('0x5c'))[_0x8eff('0x7d')](_0x8eff('0xb9'),_0x8eff('0x5b'))[_0x8eff('0x7f')](_0x8eff('0xa4'))[_0x8eff('0x44')](_0x8eff('0xa5'))[_0x8eff('0x44')](_0x8eff('0xa6'),_0x2c8284[_0x8eff('0xae')][_0x8eff('0x86')]())[_0x8eff('0x44')]('phone\x20IS\x20NOT\x20NULL'))[_0x8eff('0x86')]();_0x2659a3[_0x8eff('0x84')](db[_0x8eff('0x85')]['query'](_0x15ac83));}return BPromise[_0x8eff('0x8b')](_0x2659a3);}})[_0x8eff('0x29')](function(){return _0x3bc0c8;})['then'](respondWithResult(_0x516bef,null))['catch'](handleError(_0x516bef,null));};exports[_0x8eff('0xba')]=function(_0x372813,_0x268763,_0x56db36){return db[_0x8eff('0x36')][_0x8eff('0x32')]({'where':{'id':_0x372813[_0x8eff('0x4c')]['id']}})[_0x8eff('0x29')](handleEntityNotFound(_0x268763,null))[_0x8eff('0x29')](function(_0x3e9fa9){if(_0x3e9fa9){return _0x3e9fa9[_0x8eff('0xba')](_0x372813[_0x8eff('0x3a')][_0x8eff('0x8d')]);}})[_0x8eff('0x29')](function(_0x1bfde5){if(_0x1bfde5){return db[_0x8eff('0x69')][_0x8eff('0x2a')]({'where':{'ListId':_0x372813[_0x8eff('0x3a')]['ids'],'VoiceQueueId':_0x372813['params']['id']}})[_0x8eff('0x29')](function(){return _0x1bfde5;});}})['then'](respondWithStatusCode(_0x268763,null))[_0x8eff('0x4e')](handleError(_0x268763,null));};
\ No newline at end of file
index fafefe4..e81d119 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0xc7e9=['VoiceQueue','setMaxListeners','update','remove','emit','exports','events','../../mysqldb'];(function(_0x343cdb,_0x3e7eb3){var _0x118d14=function(_0x37fcec){while(--_0x37fcec){_0x343cdb['push'](_0x343cdb['shift']());}};_0x118d14(++_0x3e7eb3);}(_0xc7e9,0x15e));var _0x9c7e=function(_0x346737,_0x3e6081){_0x346737=_0x346737-0x0;var _0x1ade2e=_0xc7e9[_0x346737];return _0x1ade2e;};'use strict';var EventEmitter=require(_0x9c7e('0x0'));var VoiceQueue=require(_0x9c7e('0x1'))['db'][_0x9c7e('0x2')];var VoiceQueueEvents=new EventEmitter();VoiceQueueEvents[_0x9c7e('0x3')](0x0);var events={'afterCreate':'save','afterUpdate':_0x9c7e('0x4'),'afterDestroy':_0x9c7e('0x5')};function emitEvent(_0x3aa56c){return function(_0x209953,_0x3501fb,_0x1df7ae){VoiceQueueEvents[_0x9c7e('0x6')](_0x3aa56c+':'+_0x209953['id'],_0x209953);VoiceQueueEvents[_0x9c7e('0x6')](_0x3aa56c,_0x209953);_0x1df7ae(null);};}for(var e in events){if(events['hasOwnProperty'](e)){var event=events[e];VoiceQueue['hook'](e,emitEvent(event));}}module[_0x9c7e('0x7')]=VoiceQueueEvents;
\ No newline at end of file
index 74dfc34..c508ae9 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(_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
+var _0x70e0=['voice_queues','lodash','util','../../config/logger','bluebird','request-promise','path','rimraf','./voiceQueue.attributes'];(function(_0x2e1af3,_0x2a077b){var _0x4150cd=function(_0x1e08f3){while(--_0x1e08f3){_0x2e1af3['push'](_0x2e1af3['shift']());}};_0x4150cd(++_0x2a077b);}(_0x70e0,0x17b));var _0x070e=function(_0x398e07,_0x16ac8a){_0x398e07=_0x398e07-0x0;var _0x54c008=_0x70e0[_0x398e07];return _0x54c008;};'use strict';var _=require(_0x070e('0x0'));var util=require(_0x070e('0x1'));var logger=require(_0x070e('0x2'))('api');var moment=require('moment');var BPromise=require(_0x070e('0x3'));var rp=require(_0x070e('0x4'));var fs=require('fs');var path=require(_0x070e('0x5'));var rimraf=require(_0x070e('0x6'));var config=require('../../config/environment');var attributes=require(_0x070e('0x7'));module['exports']=function(_0x46fe68,_0x4b041d){return _0x46fe68['define']('VoiceQueue',attributes,{'tableName':_0x070e('0x8'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 2a78d62..d01a8b6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0x32a1=['jayson/promise','client','http','redis','defaults','localhost','socket.io-emitter','./voiceQueue.socket','register','request','then','info','debug','VoiceQueue,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','message','VoiceQueue,\x20%s,\x20%s','catch','GetVoiceQueue','VoiceQueue','findAll','raw','options','limit','include','map','model','attributes','ShowVoiceQueue','find','where','util','moment','bluebird','randomstring','../../mysqldb','../../config/logger','rpc','../../config/environment'];(function(_0x5abd9d,_0x43ac13){var _0x1977cf=function(_0x404212){while(--_0x404212){_0x5abd9d['push'](_0x5abd9d['shift']());}};_0x1977cf(++_0x43ac13);}(_0x32a1,0x117));var _0x132a=function(_0x329397,_0x102228){_0x329397=_0x329397-0x0;var _0x126bf9=_0x32a1[_0x329397];return _0x126bf9;};'use strict';var _=require('lodash');var util=require(_0x132a('0x0'));var moment=require(_0x132a('0x1'));var BPromise=require(_0x132a('0x2'));var rs=require(_0x132a('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x132a('0x4'))['db'];var utils=require('../../config/utils');var logger=require(_0x132a('0x5'))(_0x132a('0x6'));var config=require(_0x132a('0x7'));var jayson=require(_0x132a('0x8'));var client=jayson[_0x132a('0x9')][_0x132a('0xa')]({'port':0x232a});config[_0x132a('0xb')]=_[_0x132a('0xc')](config['redis'],{'host':_0x132a('0xd'),'port':0x18eb});var socket=require(_0x132a('0xe'))(new Redis(config['redis']));require(_0x132a('0xf'))[_0x132a('0x10')](socket);function respondWithRpcPromise(_0x437673,_0x394aa7,_0x10c39b){return new BPromise(function(_0x1d50de,_0x5b824d){return client[_0x132a('0x11')](_0x437673,_0x10c39b)[_0x132a('0x12')](function(_0x5bce58){logger[_0x132a('0x13')]('VoiceQueue,\x20%s,\x20%s',_0x394aa7,'request\x20sent');logger[_0x132a('0x14')](_0x132a('0x15'),_0x394aa7,_0x132a('0x16'),JSON[_0x132a('0x17')](_0x5bce58));if(_0x5bce58[_0x132a('0x18')]){if(_0x5bce58[_0x132a('0x18')]['code']===0x1f4){logger[_0x132a('0x18')]('VoiceQueue,\x20%s,\x20%s',_0x394aa7,_0x5bce58[_0x132a('0x18')][_0x132a('0x19')]);return _0x5b824d(_0x5bce58[_0x132a('0x18')][_0x132a('0x19')]);}logger[_0x132a('0x18')](_0x132a('0x1a'),_0x394aa7,_0x5bce58['error']['message']);return _0x1d50de(_0x5bce58[_0x132a('0x18')]['message']);}else{logger[_0x132a('0x13')](_0x132a('0x1a'),_0x394aa7,_0x132a('0x16'));_0x1d50de(_0x5bce58['result']['message']);}})[_0x132a('0x1b')](function(_0x3d93d3){logger[_0x132a('0x18')]('VoiceQueue,\x20%s,\x20%s',_0x394aa7,_0x3d93d3);_0x5b824d(_0x3d93d3);});});}exports[_0x132a('0x1c')]=function(_0x1abc78){var _0x2342d6=this;return new Promise(function(_0x19105c,_0x231ff5){return db[_0x132a('0x1d')][_0x132a('0x1e')]({'raw':_0x1abc78['options']?_0x1abc78['options'][_0x132a('0x1f')]===undefined?!![]:![]:!![],'where':_0x1abc78['options']?_0x1abc78[_0x132a('0x20')]['where']||null:null,'attributes':_0x1abc78[_0x132a('0x20')]?_0x1abc78[_0x132a('0x20')]['attributes']||null:null,'limit':_0x1abc78[_0x132a('0x20')]?_0x1abc78['options'][_0x132a('0x21')]||null:null,'include':_0x1abc78[_0x132a('0x20')]?_0x1abc78['options'][_0x132a('0x22')]?_[_0x132a('0x23')](_0x1abc78[_0x132a('0x20')][_0x132a('0x22')],function(_0x433ead){return{'model':db[_0x433ead[_0x132a('0x24')]],'as':_0x433ead['as'],'attributes':_0x433ead[_0x132a('0x25')],'include':_0x433ead['include']?_[_0x132a('0x23')](_0x433ead[_0x132a('0x22')],function(_0x5966a1){return{'model':db[_0x5966a1[_0x132a('0x24')]],'as':_0x5966a1['as'],'attributes':_0x5966a1['attributes'],'include':_0x5966a1[_0x132a('0x22')]?_[_0x132a('0x23')](_0x5966a1[_0x132a('0x22')],function(_0x29f1f4){return{'model':db[_0x29f1f4['model']],'as':_0x29f1f4['as'],'attributes':_0x29f1f4[_0x132a('0x25')]};}):[]};}):[]};}):[]:[]})[_0x132a('0x12')](function(_0xf9daf1){logger[_0x132a('0x13')](_0x132a('0x1c'),_0x1abc78);logger[_0x132a('0x14')](_0x132a('0x1c'),_0x1abc78,JSON[_0x132a('0x17')](_0xf9daf1));_0x19105c(_0xf9daf1);})[_0x132a('0x1b')](function(_0x97ab98){logger[_0x132a('0x18')](_0x132a('0x1c'),_0x97ab98[_0x132a('0x19')],_0x1abc78);_0x231ff5(_0x2342d6[_0x132a('0x18')](0x1f4,_0x97ab98['message']));});});};exports[_0x132a('0x26')]=function(_0x184902){var _0x3f7e1e=this;return new Promise(function(_0x25a59f,_0xee8a41){return db[_0x132a('0x1d')][_0x132a('0x27')]({'raw':_0x184902[_0x132a('0x20')]?_0x184902[_0x132a('0x20')][_0x132a('0x1f')]===undefined?!![]:![]:!![],'where':_0x184902[_0x132a('0x20')]?_0x184902[_0x132a('0x20')][_0x132a('0x28')]||null:null,'attributes':_0x184902[_0x132a('0x20')]?_0x184902[_0x132a('0x20')][_0x132a('0x25')]||null:null,'include':_0x184902['options']?_0x184902[_0x132a('0x20')][_0x132a('0x22')]?_['map'](_0x184902[_0x132a('0x20')][_0x132a('0x22')],function(_0x5e3675){return{'model':db[_0x5e3675[_0x132a('0x24')]],'as':_0x5e3675['as'],'attributes':_0x5e3675['attributes'],'include':_0x5e3675[_0x132a('0x22')]?_['map'](_0x5e3675['include'],function(_0x5e1e65){return{'model':db[_0x5e1e65[_0x132a('0x24')]],'as':_0x5e1e65['as'],'attributes':_0x5e1e65[_0x132a('0x25')],'include':_0x5e1e65[_0x132a('0x22')]?_['map'](_0x5e1e65[_0x132a('0x22')],function(_0x572ccc){return{'model':db[_0x572ccc[_0x132a('0x24')]],'as':_0x572ccc['as'],'attributes':_0x572ccc[_0x132a('0x25')]};}):[]};}):[]};}):[]:[]})[_0x132a('0x12')](function(_0x131811){logger[_0x132a('0x13')](_0x132a('0x26'),_0x184902);logger['debug'](_0x132a('0x26'),_0x184902,JSON[_0x132a('0x17')](_0x131811));_0x25a59f(_0x131811);})[_0x132a('0x1b')](function(_0x3f787f){logger['error'](_0x132a('0x26'),_0x3f787f[_0x132a('0x19')],_0x184902);_0xee8a41(_0x3f7e1e[_0x132a('0x18')](0x1f4,_0x3f787f[_0x132a('0x19')]));});});};
\ No newline at end of file
index fe45c1e..6c7cd72 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0xe4de=['update','emit','removeListener','register','length'];(function(_0x57ddf3,_0x3a1c10){var _0x50ae54=function(_0x2726a5){while(--_0x2726a5){_0x57ddf3['push'](_0x57ddf3['shift']());}};_0x50ae54(++_0x3a1c10);}(_0xe4de,0xff));var _0xee4d=function(_0x4457c1,_0x3cbfb7){_0x4457c1=_0x4457c1-0x0;var _0x423928=_0xe4de[_0x4457c1];return _0x423928;};'use strict';var VoiceQueueEvents=require('./voiceQueue.events');var events=['save','remove',_0xee4d('0x0')];function createListener(_0x1d2edd,_0x20e583){return function(_0x3c9274){_0x20e583[_0xee4d('0x1')](_0x1d2edd,_0x3c9274);};}function removeListener(_0x44a9a9,_0x54d964){return function(){VoiceQueueEvents[_0xee4d('0x2')](_0x44a9a9,_0x54d964);};}exports[_0xee4d('0x3')]=function(_0x32dcdc){for(var _0x36216a=0x0,_0x54b01e=events[_0xee4d('0x4')];_0x36216a<_0x54b01e;_0x36216a++){var _0x4bfe6c=events[_0x36216a];var _0x2524d0=createListener('voiceQueue:'+_0x4bfe6c,_0x32dcdc);VoiceQueueEvents['on'](_0x4bfe6c,_0x2524d0);}};
\ No newline at end of file
index 93c3d42..f175cb1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0xac5f=['create','put','delete','destroy','exports','util','path','connect-timeout','express','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./voiceQueueReport.controller','get','isAuthenticated','index','/describe','describe','/:id','post'];(function(_0x44585b,_0x5c43fc){var _0x173bf9=function(_0x21787c){while(--_0x21787c){_0x44585b['push'](_0x44585b['shift']());}};_0x173bf9(++_0x5c43fc);}(_0xac5f,0x1be));var _0xfac5=function(_0x219991,_0x5569c7){_0x219991=_0x219991-0x0;var _0x40d835=_0xac5f[_0x219991];return _0x40d835;};'use strict';var multer=require('multer');var util=require(_0xfac5('0x0'));var path=require(_0xfac5('0x1'));var timeout=require(_0xfac5('0x2'));var express=require(_0xfac5('0x3'));var router=express['Router']();var fs_extra=require(_0xfac5('0x4'));var auth=require(_0xfac5('0x5'));var interaction=require(_0xfac5('0x6'));var config=require(_0xfac5('0x7'));var controller=require(_0xfac5('0x8'));router[_0xfac5('0x9')]('/',auth[_0xfac5('0xa')](),controller[_0xfac5('0xb')]);router['get'](_0xfac5('0xc'),auth[_0xfac5('0xa')](),controller[_0xfac5('0xd')]);router['get']('/index',auth[_0xfac5('0xa')](),controller['getVoiceQueuesReport']);router[_0xfac5('0x9')](_0xfac5('0xe'),auth['isAuthenticated'](),controller['show']);router[_0xfac5('0xf')]('/',auth['isAuthenticated'](),controller[_0xfac5('0x10')]);router[_0xfac5('0x11')]('/:id',auth[_0xfac5('0xa')](),controller['update']);router[_0xfac5('0x12')]('/:id',auth[_0xfac5('0xa')](),controller[_0xfac5('0x13')]);module[_0xfac5('0x14')]=router;
\ No newline at end of file
index a690c35..6298cfe 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0x60ce=['sequelize','exports','STRING','DATE','getDataValue','queuecallerjoinAt','format','diff','seconds','setDataValue','queuecallerleaveAt','holdtime','INTEGER','BOOLEAN','FORWARD,\x20BLIND,\x20ATTENDED'];(function(_0x50779e,_0xa07f09){var _0xc08e57=function(_0x5b6337){while(--_0x5b6337){_0x50779e['push'](_0x50779e['shift']());}};_0xc08e57(++_0xa07f09);}(_0x60ce,0x195));var _0xe60c=function(_0x2bec0c,_0x5357b5){_0x2bec0c=_0x2bec0c-0x0;var _0x38b58b=_0x60ce[_0x2bec0c];return _0x38b58b;};'use strict';var Sequelize=require(_0xe60c('0x0'));var moment=require('moment');module[_0xe60c('0x1')]={'type':{'type':Sequelize['STRING']},'uniqueid':{'type':Sequelize[_0xe60c('0x2')]},'calleridnum':{'type':Sequelize['STRING']},'calleridname':{'type':Sequelize['STRING']},'queue':{'type':Sequelize['STRING']},'queuecallerjoinAt':{'type':Sequelize[_0xe60c('0x3')]},'queuecallerleaveAt':{'type':Sequelize[_0xe60c('0x3')],'set':function(_0x4af721){var _0x48a63e=moment(_0x4af721);var _0x465897=moment(this[_0xe60c('0x4')](_0xe60c('0x5')))[_0xe60c('0x6')]('YYYY-MM-DD\x20HH:mm:ss');var _0x4c44c8=_0x48a63e[_0xe60c('0x7')](_0x465897,_0xe60c('0x8'));this[_0xe60c('0x9')](_0xe60c('0xa'),_0x4af721);this[_0xe60c('0x9')](_0xe60c('0xb'),_0x4c44c8||null);}},'position':{'type':Sequelize[_0xe60c('0xc')]},'count':{'type':Sequelize['INTEGER']},'queuecallerabandon':{'type':Sequelize[_0xe60c('0xd')],'defaultValue':![]},'queuecallerabandonAt':{'type':Sequelize[_0xe60c('0x3')]},'queuecallercomplete':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'queuecallercompleteAt':{'type':Sequelize['DATE']},'queuecallerexit':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'queuecallerexitAt':{'type':Sequelize['DATE']},'queuecallerexitreason':{'type':Sequelize[_0xe60c('0x2')],'comment':'COMPLETEDBYCALLER,\x20COMPLETEDBYAGENT,\x20FORWARDTRANFER,\x20BLINDTRANSFER,\x20ATTENDEDTRANSFER,\x20EXITWITHKEY,\x20TIMEOUT'},'originalposition':{'type':Sequelize[_0xe60c('0xc')]},'channel':{'type':Sequelize['STRING']},'connectedlinenum':{'type':Sequelize['STRING']},'connectedlinename':{'type':Sequelize[_0xe60c('0x2')]},'accountcode':{'type':Sequelize['STRING']},'context':{'type':Sequelize[_0xe60c('0x2')]},'exten':{'type':Sequelize['STRING']},'priority':{'type':Sequelize[_0xe60c('0x2')]},'holdtime':{'type':Sequelize['INTEGER']},'mohtime':{'type':Sequelize[_0xe60c('0xc')],'defaultValue':0x0},'assigned':{'type':Sequelize[_0xe60c('0xd')],'defaultValue':![]},'lastAssignedTo':{'type':Sequelize['STRING']},'transfer':{'type':Sequelize[_0xe60c('0xd')],'defaultValue':![]},'transfertype':{'type':Sequelize[_0xe60c('0x2')],'comment':_0xe60c('0xe')},'transferexten':{'type':Sequelize[_0xe60c('0x2')]},'transferuniqueid':{'type':Sequelize[_0xe60c('0x2')]},'disposition':{'type':Sequelize[_0xe60c('0x2')]},'secondDisposition':{'type':Sequelize['STRING']},'thirdDisposition':{'type':Sequelize[_0xe60c('0x2')]},'queuecallerenterreason':{'type':Sequelize[_0xe60c('0xc')],'defaultValue':0x0},'note':{'type':Sequelize['STRING']}};
\ No newline at end of file
index ce3624f..2f0906b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0x5dc8=['fs-extra','lodash','squel','jsforce','querystring','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','../../config/utils','../../mysqldb','defaults','redis','./voiceQueueReport.socket','register','end','status','offset','undefined','count','limit','set','Content-Range','json','apply','reject','save','update','then','destroy','error','name','send','index','map','VoiceQueueReport','rawAttributes','fieldName','type','key','model','query','keys','filters','intersection','fields','attributes','length','nolimit','order','sort','pick','merge','filter','options','where','findAll','show','includeAll','include','catch','create','body','find','params','describe','rimraf','zip-dir','fast-json-patch','bluebird','mustache','util','path','to-csv','ejs'];(function(_0x50b42e,_0xb51410){var _0x291091=function(_0x3c1f23){while(--_0x3c1f23){_0x50b42e['push'](_0x50b42e['shift']());}};_0x291091(++_0xb51410);}(_0x5dc8,0x8d));var _0x85dc=function(_0x30414a,_0x3c8ed5){_0x30414a=_0x30414a-0x0;var _0x77ca87=_0x5dc8[_0x30414a];return _0x77ca87;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x85dc('0x0'));var zipdir=require(_0x85dc('0x1'));var jsonpatch=require(_0x85dc('0x2'));var rp=require('request-promise');var moment=require('moment');var BPromise=require(_0x85dc('0x3'));var Mustache=require(_0x85dc('0x4'));var util=require(_0x85dc('0x5'));var path=require(_0x85dc('0x6'));var sox=require('sox');var csv=require(_0x85dc('0x7'));var ejs=require(_0x85dc('0x8'));var fs=require('fs');var fs_extra=require(_0x85dc('0x9'));var _=require(_0x85dc('0xa'));var squel=require(_0x85dc('0xb'));var crypto=require('crypto');var jsforce=require(_0x85dc('0xc'));var deskjs=require('desk.js');var toCsv=require('to-csv');var querystring=require(_0x85dc('0xd'));var Papa=require('papaparse');var Redis=require('ioredis');var authService=require(_0x85dc('0xe'));var qs=require(_0x85dc('0xf'));var as=require(_0x85dc('0x10'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x85dc('0x11'))('api');var utils=require(_0x85dc('0x12'));var config=require('../../config/environment');var licenseUtil=require('../../config/license/util');var db=require(_0x85dc('0x13'))['db'];config['redis']=_[_0x85dc('0x14')](config[_0x85dc('0x15')],{'host':'localhost','port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0x85dc('0x15')]));require(_0x85dc('0x16'))[_0x85dc('0x17')](socket);function respondWithStatusCode(_0x3a3eee,_0x4871ac){_0x4871ac=_0x4871ac||0xcc;return function(_0x4ffd3a){if(_0x4ffd3a){return _0x3a3eee['sendStatus'](_0x4871ac);}return _0x3a3eee['status'](_0x4871ac)[_0x85dc('0x18')]();};}function respondWithResult(_0x77e997,_0x8e323c){_0x8e323c=_0x8e323c||0xc8;return function(_0x4ad72d){if(_0x4ad72d){return _0x77e997[_0x85dc('0x19')](_0x8e323c)['json'](_0x4ad72d);}};}function respondWithFilteredResult(_0x3b1145,_0x3123b6){return function(_0x19bac2){if(_0x19bac2){var _0x2ba027=typeof _0x3123b6[_0x85dc('0x1a')]===_0x85dc('0x1b')&&typeof _0x3123b6['limit']===_0x85dc('0x1b');var _0x86bb3f=_0x19bac2[_0x85dc('0x1c')];var _0x3b0d2d=_0x2ba027?0x0:_0x3123b6[_0x85dc('0x1a')];var _0x58c8b5=_0x2ba027?_0x19bac2[_0x85dc('0x1c')]:_0x3123b6['offset']+_0x3123b6[_0x85dc('0x1d')];var _0x1486ce;if(_0x58c8b5>=_0x86bb3f){_0x58c8b5=_0x86bb3f;_0x1486ce=0xc8;}else{_0x1486ce=0xce;}_0x3b1145[_0x85dc('0x19')](_0x1486ce);return _0x3b1145[_0x85dc('0x1e')](_0x85dc('0x1f'),_0x3b0d2d+'-'+_0x58c8b5+'/'+_0x86bb3f)[_0x85dc('0x20')](_0x19bac2);}return null;};}function patchUpdates(_0xe60021){return function(_0x5180e2){try{jsonpatch[_0x85dc('0x21')](_0x5180e2,_0xe60021,!![]);}catch(_0x532cc1){return BPromise[_0x85dc('0x22')](_0x532cc1);}return _0x5180e2[_0x85dc('0x23')]();};}function saveUpdates(_0x365a00,_0x5f376a){return function(_0x3db49e){if(_0x3db49e){return _0x3db49e[_0x85dc('0x24')](_0x365a00)[_0x85dc('0x25')](function(_0x1aad18){return _0x1aad18;});}return null;};}function removeEntity(_0x1b5533,_0x5176b5){return function(_0x5e5279){if(_0x5e5279){return _0x5e5279[_0x85dc('0x26')]()[_0x85dc('0x25')](function(){_0x1b5533[_0x85dc('0x19')](0xcc)['end']();});}};}function handleEntityNotFound(_0x2d1724,_0x1b27c6){return function(_0x573e54){if(!_0x573e54){_0x2d1724['sendStatus'](0x194);}return _0x573e54;};}function handleError(_0x39d6bb,_0x95db19){_0x95db19=_0x95db19||0x1f4;return function(_0x38a904){logger[_0x85dc('0x27')](_0x38a904['stack']);if(_0x38a904['name']){delete _0x38a904[_0x85dc('0x28')];}_0x39d6bb[_0x85dc('0x19')](_0x95db19)[_0x85dc('0x29')](_0x38a904);};}exports[_0x85dc('0x2a')]=function(_0xb10703,_0x81c247){var _0x3347e0={},_0x1c49c9={},_0x4d0f24={'count':0x0,'rows':[]};var _0x4b123e=_[_0x85dc('0x2b')](db[_0x85dc('0x2c')][_0x85dc('0x2d')],function(_0x2ada2e){return{'name':_0x2ada2e[_0x85dc('0x2e')],'type':_0x2ada2e[_0x85dc('0x2f')][_0x85dc('0x30')]};});_0x1c49c9[_0x85dc('0x31')]=_[_0x85dc('0x2b')](_0x4b123e,_0x85dc('0x28'));_0x1c49c9[_0x85dc('0x32')]=_[_0x85dc('0x33')](_0xb10703['query']);_0x1c49c9[_0x85dc('0x34')]=_[_0x85dc('0x35')](_0x1c49c9[_0x85dc('0x31')],_0x1c49c9['query']);_0x3347e0['attributes']=_[_0x85dc('0x35')](_0x1c49c9[_0x85dc('0x31')],qs[_0x85dc('0x36')](_0xb10703['query'][_0x85dc('0x36')]));_0x3347e0[_0x85dc('0x37')]=_0x3347e0[_0x85dc('0x37')][_0x85dc('0x38')]?_0x3347e0[_0x85dc('0x37')]:_0x1c49c9[_0x85dc('0x31')];if(!_0xb10703[_0x85dc('0x32')]['hasOwnProperty'](_0x85dc('0x39'))){_0x3347e0[_0x85dc('0x1d')]=qs[_0x85dc('0x1d')](_0xb10703[_0x85dc('0x32')][_0x85dc('0x1d')]);_0x3347e0[_0x85dc('0x1a')]=qs[_0x85dc('0x1a')](_0xb10703[_0x85dc('0x32')][_0x85dc('0x1a')]);}_0x3347e0[_0x85dc('0x3a')]=qs[_0x85dc('0x3b')](_0xb10703[_0x85dc('0x32')][_0x85dc('0x3b')]);_0x3347e0['where']=qs['filters'](_[_0x85dc('0x3c')](_0xb10703[_0x85dc('0x32')],_0x1c49c9[_0x85dc('0x34')]),_0x4b123e);if(_0xb10703[_0x85dc('0x32')]['filter']){_0x3347e0['where']=_[_0x85dc('0x3d')](_0x3347e0['where'],{'$or':_[_0x85dc('0x2b')](_0x4b123e,function(_0x1ccd74){if(_0x1ccd74[_0x85dc('0x2f')]!=='VIRTUAL'){var _0xaa59db={};_0xaa59db[_0x1ccd74[_0x85dc('0x28')]]={'$like':'%'+_0xb10703[_0x85dc('0x32')][_0x85dc('0x3e')]+'%'};return _0xaa59db;}})});}_0x3347e0=_['merge']({},_0x3347e0,_0xb10703[_0x85dc('0x3f')]);var _0x2ef621={'where':_0x3347e0[_0x85dc('0x40')]};return db[_0x85dc('0x2c')]['count'](_0x2ef621)[_0x85dc('0x25')](function(_0x52ee11){_0x4d0f24[_0x85dc('0x1c')]=_0x52ee11;if(_0xb10703['query']['includeAll']){_0x3347e0['include']=[{'all':!![]}];}return db[_0x85dc('0x2c')][_0x85dc('0x41')](_0x3347e0);})['then'](function(_0x162040){_0x4d0f24['rows']=_0x162040;return _0x4d0f24;})[_0x85dc('0x25')](respondWithFilteredResult(_0x81c247,_0x3347e0))['catch'](handleError(_0x81c247,null));};exports[_0x85dc('0x42')]=function(_0x5c62dd,_0x33d1e0){var _0x2946f5={'raw':![],'where':{'id':_0x5c62dd['params']['id']}},_0x53b35a={};_0x53b35a[_0x85dc('0x31')]=_[_0x85dc('0x33')](db[_0x85dc('0x2c')][_0x85dc('0x2d')]);_0x53b35a[_0x85dc('0x32')]=_[_0x85dc('0x33')](_0x5c62dd[_0x85dc('0x32')]);_0x53b35a[_0x85dc('0x34')]=_['intersection'](_0x53b35a[_0x85dc('0x31')],_0x53b35a[_0x85dc('0x32')]);_0x2946f5[_0x85dc('0x37')]=_['intersection'](_0x53b35a['model'],qs[_0x85dc('0x36')](_0x5c62dd['query']['fields']));_0x2946f5[_0x85dc('0x37')]=_0x2946f5[_0x85dc('0x37')][_0x85dc('0x38')]?_0x2946f5[_0x85dc('0x37')]:_0x53b35a[_0x85dc('0x31')];if(_0x5c62dd[_0x85dc('0x32')][_0x85dc('0x43')]){_0x2946f5[_0x85dc('0x44')]=[{'all':!![]}];}_0x2946f5=_[_0x85dc('0x3d')]({},_0x2946f5,_0x5c62dd[_0x85dc('0x3f')]);return db['VoiceQueueReport']['find'](_0x2946f5)[_0x85dc('0x25')](handleEntityNotFound(_0x33d1e0,null))['then'](respondWithResult(_0x33d1e0,null))[_0x85dc('0x45')](handleError(_0x33d1e0,null));};exports[_0x85dc('0x46')]=function(_0x432462,_0x57aacc){return db['VoiceQueueReport'][_0x85dc('0x46')](_0x432462['body'],{})[_0x85dc('0x25')](respondWithResult(_0x57aacc,0xc9))[_0x85dc('0x45')](handleError(_0x57aacc,null));};exports[_0x85dc('0x24')]=function(_0xa56f3e,_0x3505ea){if(_0xa56f3e['body']['id']){delete _0xa56f3e[_0x85dc('0x47')]['id'];}return db[_0x85dc('0x2c')][_0x85dc('0x48')]({'where':{'id':_0xa56f3e[_0x85dc('0x49')]['id']}})[_0x85dc('0x25')](handleEntityNotFound(_0x3505ea,null))['then'](saveUpdates(_0xa56f3e[_0x85dc('0x47')],null))[_0x85dc('0x25')](respondWithResult(_0x3505ea,null))['catch'](handleError(_0x3505ea,null));};exports['destroy']=function(_0x2b9d50,_0x415db7){return db[_0x85dc('0x2c')]['find']({'where':{'id':_0x2b9d50[_0x85dc('0x49')]['id']}})[_0x85dc('0x25')](handleEntityNotFound(_0x415db7,null))['then'](removeEntity(_0x415db7,null))[_0x85dc('0x45')](handleError(_0x415db7,null));};exports[_0x85dc('0x4a')]=function(_0x202bf9,_0x5d0ab8){return db[_0x85dc('0x2c')]['describe']()[_0x85dc('0x25')](respondWithResult(_0x5d0ab8,null))[_0x85dc('0x45')](handleError(_0x5d0ab8,null));};exports['getVoiceQueuesReport']=function(_0x52e928,_0x234bac){var _0x42b2a6={},_0x136962={},_0x109d9a={'count':0x0,'rows':[]};_0x136962['model']=_[_0x85dc('0x33')](db[_0x85dc('0x2c')][_0x85dc('0x2d')]);_0x136962['query']=_[_0x85dc('0x33')](_0x52e928['query']);_0x136962[_0x85dc('0x34')]=_[_0x85dc('0x35')](_0x136962[_0x85dc('0x31')],_0x136962[_0x85dc('0x32')]);_0x42b2a6['attributes']=_['intersection'](_0x136962[_0x85dc('0x31')],qs['fields'](_0x52e928['query'][_0x85dc('0x36')]));_0x42b2a6['attributes']=_0x42b2a6[_0x85dc('0x37')][_0x85dc('0x38')]?_0x42b2a6['attributes']:_0x136962[_0x85dc('0x31')];if(!_0x52e928['query']['hasOwnProperty'](_0x85dc('0x39'))){_0x42b2a6[_0x85dc('0x1d')]=qs[_0x85dc('0x1d')](_0x52e928[_0x85dc('0x32')][_0x85dc('0x1d')]);_0x42b2a6[_0x85dc('0x1a')]=qs['offset'](_0x52e928['query'][_0x85dc('0x1a')]);}_0x42b2a6[_0x85dc('0x3a')]=qs[_0x85dc('0x3b')](_0x52e928[_0x85dc('0x32')][_0x85dc('0x3b')]);_0x42b2a6['where']=qs['filters'](_[_0x85dc('0x3c')](_0x52e928[_0x85dc('0x32')],_0x136962[_0x85dc('0x34')]));if(_0x52e928[_0x85dc('0x32')][_0x85dc('0x3e')]){_0x42b2a6['where']=_[_0x85dc('0x3d')](_0x42b2a6[_0x85dc('0x40')],{'$or':_['map'](_0x42b2a6[_0x85dc('0x37')],function(_0x27aed0){var _0x2f7224={};_0x2f7224[_0x27aed0]={'$like':'%'+_0x52e928['query'][_0x85dc('0x3e')]+'%'};return _0x2f7224;})});}_0x42b2a6=_['merge']({},_0x42b2a6,_0x52e928[_0x85dc('0x3f')]);var _0x42529d={'where':_0x42b2a6[_0x85dc('0x40')]};return db['VoiceQueueReport'][_0x85dc('0x1c')](_0x42529d)[_0x85dc('0x25')](function(_0x4ab582){_0x109d9a[_0x85dc('0x1c')]=_0x4ab582;if(_0x52e928['query'][_0x85dc('0x43')]){_0x42b2a6['include']=[{'all':!![]}];}return db[_0x85dc('0x2c')][_0x85dc('0x41')](_0x42b2a6);})[_0x85dc('0x25')](function(_0xaaa70c){_0x109d9a['rows']=_0xaaa70c;return _0x109d9a;})[_0x85dc('0x25')](respondWithFilteredResult(_0x234bac,_0x42b2a6,'getVoiceQueuesReport'))[_0x85dc('0x45')](handleError(_0x234bac,null,'getVoiceQueuesReport'));};
\ No newline at end of file
index 18907a9..daff9ad 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0x6e93=['setMaxListeners','update','emit','hook','exports','events','../../mysqldb','VoiceQueueReport'];(function(_0x4709c0,_0x3396c7){var _0x13348b=function(_0x426235){while(--_0x426235){_0x4709c0['push'](_0x4709c0['shift']());}};_0x13348b(++_0x3396c7);}(_0x6e93,0x14d));var _0x36e9=function(_0x390305,_0x4018e3){_0x390305=_0x390305-0x0;var _0x398acf=_0x6e93[_0x390305];return _0x398acf;};'use strict';var EventEmitter=require(_0x36e9('0x0'));var VoiceQueueReport=require(_0x36e9('0x1'))['db'][_0x36e9('0x2')];var VoiceQueueReportEvents=new EventEmitter();VoiceQueueReportEvents[_0x36e9('0x3')](0x0);var events={'afterCreate':'save','afterUpdate':_0x36e9('0x4'),'afterDestroy':'remove'};function emitEvent(_0x348ada){return function(_0x1637fc,_0x36ca79,_0x59c29d){VoiceQueueReportEvents['emit'](_0x348ada+':'+_0x1637fc['id'],_0x1637fc);VoiceQueueReportEvents[_0x36e9('0x5')](_0x348ada,_0x1637fc);_0x59c29d(null);};}for(var e in events){if(events['hasOwnProperty'](e)){var event=events[e];VoiceQueueReport[_0x36e9('0x6')](e,emitEvent(event));}}module[_0x36e9('0x7')]=VoiceQueueReportEvents;
\ No newline at end of file
index 3aab890..459ec3f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0x0d4d=['path','../../config/environment','./voiceQueueReport.attributes','define','report_queue','calleridnum','lodash','util','../../config/logger','api','moment','bluebird'];(function(_0x17d9e3,_0x1f969c){var _0x14192d=function(_0x159745){while(--_0x159745){_0x17d9e3['push'](_0x17d9e3['shift']());}};_0x14192d(++_0x1f969c);}(_0x0d4d,0x132));var _0xd0d4=function(_0x2391a3,_0x3d106b){_0x2391a3=_0x2391a3-0x0;var _0x2ca251=_0x0d4d[_0x2391a3];return _0x2ca251;};'use strict';var _=require(_0xd0d4('0x0'));var util=require(_0xd0d4('0x1'));var logger=require(_0xd0d4('0x2'))(_0xd0d4('0x3'));var moment=require(_0xd0d4('0x4'));var BPromise=require(_0xd0d4('0x5'));var rp=require('request-promise');var fs=require('fs');var path=require(_0xd0d4('0x6'));var rimraf=require('rimraf');var config=require(_0xd0d4('0x7'));var attributes=require(_0xd0d4('0x8'));module['exports']=function(_0x34d93b,_0x3db5ab){return _0x34d93b[_0xd0d4('0x9')]('VoiceQueueReport',attributes,{'tableName':_0xd0d4('0xa'),'paranoid':![],'indexes':[{'fields':['uniqueid']},{'fields':[_0xd0d4('0xb')]}],'timestamps':!![]});};
\ No newline at end of file
index 0842822..e0c75a1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0xaee3=['util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','rpc','../../config/environment','jayson/promise','client','http','socket.io-emitter','redis','register','request','request\x20sent','stringify','error','code','VoiceQueueReport,\x20%s,\x20%s','message','info','catch','VoiceQueueReport','options','raw','attributes','limit','include','map','model','then','GetVoiceQueueReport','debug','CreateVoiceQueueReport','create','body','UpdateVoiceQueueReport','update','where','lodash'];(function(_0x33ab36,_0x5e3d72){var _0x114ec7=function(_0x4df71f){while(--_0x4df71f){_0x33ab36['push'](_0x33ab36['shift']());}};_0x114ec7(++_0x5e3d72);}(_0xaee3,0x1cd));var _0x3aee=function(_0x1589dd,_0x2b9d22){_0x1589dd=_0x1589dd-0x0;var _0x1bddd1=_0xaee3[_0x1589dd];return _0x1bddd1;};'use strict';var _=require(_0x3aee('0x0'));var util=require(_0x3aee('0x1'));var moment=require(_0x3aee('0x2'));var BPromise=require(_0x3aee('0x3'));var rs=require(_0x3aee('0x4'));var fs=require('fs');var Redis=require(_0x3aee('0x5'));var db=require(_0x3aee('0x6'))['db'];var utils=require(_0x3aee('0x7'));var logger=require('../../config/logger')(_0x3aee('0x8'));var config=require(_0x3aee('0x9'));var jayson=require(_0x3aee('0xa'));var client=jayson[_0x3aee('0xb')][_0x3aee('0xc')]({'port':0x232a});config['redis']=_['defaults'](config['redis'],{'host':'localhost','port':0x18eb});var socket=require(_0x3aee('0xd'))(new Redis(config[_0x3aee('0xe')]));require('./voiceQueueReport.socket')[_0x3aee('0xf')](socket);function respondWithRpcPromise(_0x365f5f,_0x52196b,_0x56dcb1){return new BPromise(function(_0x2d7b5a,_0x234457){return client[_0x3aee('0x10')](_0x365f5f,_0x56dcb1)['then'](function(_0x5cde35){logger['info']('VoiceQueueReport,\x20%s,\x20%s',_0x52196b,_0x3aee('0x11'));logger['debug']('VoiceQueueReport,\x20%s,\x20%s,\x20%s',_0x52196b,_0x3aee('0x11'),JSON[_0x3aee('0x12')](_0x5cde35));if(_0x5cde35[_0x3aee('0x13')]){if(_0x5cde35[_0x3aee('0x13')][_0x3aee('0x14')]===0x1f4){logger[_0x3aee('0x13')](_0x3aee('0x15'),_0x52196b,_0x5cde35[_0x3aee('0x13')][_0x3aee('0x16')]);return _0x234457(_0x5cde35[_0x3aee('0x13')][_0x3aee('0x16')]);}logger[_0x3aee('0x13')](_0x3aee('0x15'),_0x52196b,_0x5cde35[_0x3aee('0x13')][_0x3aee('0x16')]);return _0x2d7b5a(_0x5cde35[_0x3aee('0x13')][_0x3aee('0x16')]);}else{logger[_0x3aee('0x17')](_0x3aee('0x15'),_0x52196b,'request\x20sent');_0x2d7b5a(_0x5cde35['result']['message']);}})[_0x3aee('0x18')](function(_0x1ea837){logger[_0x3aee('0x13')]('VoiceQueueReport,\x20%s,\x20%s',_0x52196b,_0x1ea837);_0x234457(_0x1ea837);});});}exports['GetVoiceQueueReport']=function(_0x71047c){var _0x8457c6=this;return new Promise(function(_0x39580c,_0x1d5fa3){return db[_0x3aee('0x19')]['findAll']({'raw':_0x71047c[_0x3aee('0x1a')]?_0x71047c[_0x3aee('0x1a')][_0x3aee('0x1b')]===undefined?!![]:![]:!![],'where':_0x71047c['options']?_0x71047c[_0x3aee('0x1a')]['where']||null:null,'attributes':_0x71047c[_0x3aee('0x1a')]?_0x71047c[_0x3aee('0x1a')][_0x3aee('0x1c')]||null:null,'limit':_0x71047c['options']?_0x71047c['options'][_0x3aee('0x1d')]||null:null,'include':_0x71047c[_0x3aee('0x1a')]?_0x71047c[_0x3aee('0x1a')][_0x3aee('0x1e')]?_[_0x3aee('0x1f')](_0x71047c[_0x3aee('0x1a')][_0x3aee('0x1e')],function(_0x1a9190){return{'model':db[_0x1a9190['model']],'as':_0x1a9190['as'],'attributes':_0x1a9190[_0x3aee('0x1c')],'include':_0x1a9190[_0x3aee('0x1e')]?_[_0x3aee('0x1f')](_0x1a9190[_0x3aee('0x1e')],function(_0x209a38){return{'model':db[_0x209a38[_0x3aee('0x20')]],'as':_0x209a38['as'],'attributes':_0x209a38[_0x3aee('0x1c')],'include':_0x209a38[_0x3aee('0x1e')]?_[_0x3aee('0x1f')](_0x209a38[_0x3aee('0x1e')],function(_0x5635e2){return{'model':db[_0x5635e2[_0x3aee('0x20')]],'as':_0x5635e2['as'],'attributes':_0x5635e2['attributes']};}):[]};}):[]};}):[]:[]})[_0x3aee('0x21')](function(_0x2859f7){logger['info'](_0x3aee('0x22'),_0x71047c);logger[_0x3aee('0x23')](_0x3aee('0x22'),_0x71047c,JSON[_0x3aee('0x12')](_0x2859f7));_0x39580c(_0x2859f7);})['catch'](function(_0x39043c){logger[_0x3aee('0x13')](_0x3aee('0x22'),_0x39043c[_0x3aee('0x16')],_0x71047c);_0x1d5fa3(_0x8457c6[_0x3aee('0x13')](0x1f4,_0x39043c[_0x3aee('0x16')]));});});};exports[_0x3aee('0x24')]=function(_0x559dd6){var _0x458e34=this;return new Promise(function(_0x5c53ef,_0x18777c){return db['VoiceQueueReport'][_0x3aee('0x25')](_0x559dd6[_0x3aee('0x26')],{'raw':_0x559dd6[_0x3aee('0x1a')]?_0x559dd6[_0x3aee('0x1a')][_0x3aee('0x1b')]===undefined?!![]:![]:!![]})[_0x3aee('0x21')](function(_0x20fcec){logger['info']('CreateVoiceQueueReport',_0x559dd6);logger[_0x3aee('0x23')](_0x3aee('0x24'),_0x559dd6,JSON['stringify'](_0x20fcec));_0x5c53ef(_0x20fcec);})[_0x3aee('0x18')](function(_0x171000){logger['error'](_0x3aee('0x24'),_0x171000[_0x3aee('0x16')],_0x559dd6);_0x18777c(_0x458e34[_0x3aee('0x13')](0x1f4,_0x171000['message']));});});};exports[_0x3aee('0x27')]=function(_0x42dc38){var _0x20bf93=this;return new Promise(function(_0xa1d2b0,_0x21b4e6){return db[_0x3aee('0x19')][_0x3aee('0x28')](_0x42dc38[_0x3aee('0x26')],{'raw':_0x42dc38[_0x3aee('0x1a')]?_0x42dc38['options'][_0x3aee('0x1b')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x42dc38['options']?_0x42dc38[_0x3aee('0x1a')][_0x3aee('0x29')]||null:null,'attributes':_0x42dc38[_0x3aee('0x1a')]?_0x42dc38[_0x3aee('0x1a')][_0x3aee('0x1c')]||null:null,'limit':_0x42dc38[_0x3aee('0x1a')]?_0x42dc38[_0x3aee('0x1a')][_0x3aee('0x1d')]||null:null})['then'](function(_0x1ef16d){logger[_0x3aee('0x17')](_0x3aee('0x27'),_0x42dc38);logger[_0x3aee('0x23')](_0x3aee('0x27'),_0x42dc38,JSON[_0x3aee('0x12')](_0x1ef16d));_0xa1d2b0(_0x1ef16d);})[_0x3aee('0x18')](function(_0x1ae6d0){logger[_0x3aee('0x13')]('UpdateVoiceQueueReport',_0x1ae6d0[_0x3aee('0x16')],_0x42dc38);_0x21b4e6(_0x20bf93['error'](0x1f4,_0x1ae6d0[_0x3aee('0x16')]));});});};
\ No newline at end of file
index 3c1e1e7..8447eab 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0x41d9=['remove','update','register','voiceQueueReport:','./voiceQueueReport.events','save'];(function(_0xd5f575,_0x48da18){var _0x13f533=function(_0x3186b7){while(--_0x3186b7){_0xd5f575['push'](_0xd5f575['shift']());}};_0x13f533(++_0x48da18);}(_0x41d9,0x13c));var _0x941d=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x41d9[_0x3dd15e];return _0x231fd0;};'use strict';var VoiceQueueReportEvents=require(_0x941d('0x0'));var events=[_0x941d('0x1'),_0x941d('0x2'),_0x941d('0x3')];function createListener(_0x29bc6a,_0x17cec5){return function(_0x202bd8){_0x17cec5['emit'](_0x29bc6a,_0x202bd8);};}function removeListener(_0x446c52,_0x832a33){return function(){VoiceQueueReportEvents['removeListener'](_0x446c52,_0x832a33);};}exports[_0x941d('0x4')]=function(_0x19dd41){for(var _0x56e384=0x0,_0x179094=events['length'];_0x56e384<_0x179094;_0x56e384++){var _0x3825df=events[_0x56e384];var _0xa9021c=createListener(_0x941d('0x5')+_0x3825df,_0x19dd41);VoiceQueueReportEvents['on'](_0x3825df,_0xa9021c);}};
\ No newline at end of file
index a21fd6c..38a0df1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0xe313=['isAuthenticated','index','/:id','show','create','update','delete','destroy','exports','multer','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','get'];(function(_0x3bf83f,_0x181cac){var _0x22c4a9=function(_0xb3ff0d){while(--_0xb3ff0d){_0x3bf83f['push'](_0x3bf83f['shift']());}};_0x22c4a9(++_0x181cac);}(_0xe313,0xe5));var _0x3e31=function(_0x106a02,_0x366260){_0x106a02=_0x106a02-0x0;var _0x29dc32=_0xe313[_0x106a02];return _0x29dc32;};'use strict';var multer=require(_0x3e31('0x0'));var util=require(_0x3e31('0x1'));var path=require(_0x3e31('0x2'));var timeout=require(_0x3e31('0x3'));var express=require(_0x3e31('0x4'));var router=express[_0x3e31('0x5')]();var fs_extra=require(_0x3e31('0x6'));var auth=require(_0x3e31('0x7'));var interaction=require(_0x3e31('0x8'));var config=require(_0x3e31('0x9'));var controller=require('./voiceQueuesLog.controller');router[_0x3e31('0xa')]('/',auth[_0x3e31('0xb')](),controller[_0x3e31('0xc')]);router[_0x3e31('0xa')](_0x3e31('0xd'),auth['isAuthenticated'](),controller[_0x3e31('0xe')]);router['post']('/',auth[_0x3e31('0xb')](),controller[_0x3e31('0xf')]);router['put'](_0x3e31('0xd'),auth['isAuthenticated'](),controller[_0x3e31('0x10')]);router[_0x3e31('0x11')](_0x3e31('0xd'),auth[_0x3e31('0xb')](),controller[_0x3e31('0x12')]);module[_0x3e31('0x13')]=router;
\ No newline at end of file
index c36de6b..2c2fc77 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0x6784=['moment','exports','STRING','DATE','sequelize'];(function(_0x1c6ef2,_0x8d926a){var _0x404b8c=function(_0x4fdf1e){while(--_0x4fdf1e){_0x1c6ef2['push'](_0x1c6ef2['shift']());}};_0x404b8c(++_0x8d926a);}(_0x6784,0x130));var _0x4678=function(_0x352e09,_0x37a7da){_0x352e09=_0x352e09-0x0;var _0x1b7094=_0x6784[_0x352e09];return _0x1b7094;};'use strict';var Sequelize=require(_0x4678('0x0'));var moment=require(_0x4678('0x1'));module[_0x4678('0x2')]={'time':{'type':Sequelize[_0x4678('0x3')]},'callid':{'type':Sequelize['STRING'],'allowNull':![],'defaultValue':''},'queuename':{'type':Sequelize[_0x4678('0x3')],'allowNull':![],'defaultValue':''},'agent':{'type':Sequelize[_0x4678('0x3')],'allowNull':![],'defaultValue':''},'event':{'type':Sequelize['STRING'],'allowNull':![],'defaultValue':''},'data':{'type':Sequelize[_0x4678('0x3')],'allowNull':![],'defaultValue':''},'data1':{'type':Sequelize[_0x4678('0x3')],'allowNull':![],'defaultValue':''},'data2':{'type':Sequelize['STRING'],'allowNull':![],'defaultValue':''},'data3':{'type':Sequelize[_0x4678('0x3')],'allowNull':![],'defaultValue':''},'data4':{'type':Sequelize[_0x4678('0x3')],'allowNull':![],'defaultValue':''},'data5':{'type':Sequelize[_0x4678('0x3')],'allowNull':![],'defaultValue':''},'dtm':{'type':Sequelize[_0x4678('0x4')],'allowNull':![],'defaultValue':Sequelize['literal']('CURRENT_TIMESTAMP\x20ON\x20UPDATE\x20CURRENT_TIMESTAMP')}};
\ No newline at end of file
index 89d33c0..2c424b7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0x5a62=['catch','options','find','create','body','eml-format','zip-dir','request-promise','moment','mustache','util','sox','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','to-csv','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../mysqldb','status','end','json','offset','undefined','limit','count','set','apply','reject','save','update','then','destroy','sendStatus','map','VoiceQueuesLog','rawAttributes','fieldName','type','key','name','query','keys','filters','intersection','model','attributes','fields','length','nolimit','order','sort','pick','filter','where','merge','include','findAll','rows'];(function(_0x21f968,_0x3444ac){var _0x4dece7=function(_0x36a877){while(--_0x36a877){_0x21f968['push'](_0x21f968['shift']());}};_0x4dece7(++_0x3444ac);}(_0x5a62,0x163));var _0x25a6=function(_0x2d34d6,_0x397ff9){_0x2d34d6=_0x2d34d6-0x0;var _0x1d3d12=_0x5a62[_0x2d34d6];return _0x1d3d12;};'use strict';var emlformat=require(_0x25a6('0x0'));var rimraf=require('rimraf');var zipdir=require(_0x25a6('0x1'));var jsonpatch=require('fast-json-patch');var rp=require(_0x25a6('0x2'));var moment=require(_0x25a6('0x3'));var BPromise=require('bluebird');var Mustache=require(_0x25a6('0x4'));var util=require(_0x25a6('0x5'));var path=require('path');var sox=require(_0x25a6('0x6'));var csv=require('to-csv');var ejs=require(_0x25a6('0x7'));var fs=require('fs');var fs_extra=require(_0x25a6('0x8'));var _=require(_0x25a6('0x9'));var squel=require(_0x25a6('0xa'));var crypto=require(_0x25a6('0xb'));var jsforce=require(_0x25a6('0xc'));var deskjs=require(_0x25a6('0xd'));var toCsv=require(_0x25a6('0xe'));var querystring=require(_0x25a6('0xf'));var Papa=require(_0x25a6('0x10'));var Redis=require(_0x25a6('0x11'));var authService=require(_0x25a6('0x12'));var qs=require('../../components/parsers/qs');var as=require(_0x25a6('0x13'));var hardwareService=require(_0x25a6('0x14'));var logger=require(_0x25a6('0x15'))(_0x25a6('0x16'));var utils=require(_0x25a6('0x17'));var config=require('../../config/environment');var licenseUtil=require('../../config/license/util');var db=require(_0x25a6('0x18'))['db'];function respondWithStatusCode(_0x1d1ce0,_0x5c7fdb){_0x5c7fdb=_0x5c7fdb||0xcc;return function(_0x391daa){if(_0x391daa){return _0x1d1ce0['sendStatus'](_0x5c7fdb);}return _0x1d1ce0[_0x25a6('0x19')](_0x5c7fdb)[_0x25a6('0x1a')]();};}function respondWithResult(_0x31d122,_0x51ef23){_0x51ef23=_0x51ef23||0xc8;return function(_0x19d672){if(_0x19d672){return _0x31d122[_0x25a6('0x19')](_0x51ef23)[_0x25a6('0x1b')](_0x19d672);}};}function respondWithFilteredResult(_0x53c9ab,_0x61e44e){return function(_0x149bcb){if(_0x149bcb){var _0x5c60db=typeof _0x61e44e[_0x25a6('0x1c')]===_0x25a6('0x1d')&&typeof _0x61e44e[_0x25a6('0x1e')]===_0x25a6('0x1d');var _0x5b765e=_0x149bcb['count'];var _0x53646c=_0x5c60db?0x0:_0x61e44e['offset'];var _0x390c86=_0x5c60db?_0x149bcb[_0x25a6('0x1f')]:_0x61e44e[_0x25a6('0x1c')]+_0x61e44e[_0x25a6('0x1e')];var _0x289115;if(_0x390c86>=_0x5b765e){_0x390c86=_0x5b765e;_0x289115=0xc8;}else{_0x289115=0xce;}_0x53c9ab['status'](_0x289115);return _0x53c9ab[_0x25a6('0x20')]('Content-Range',_0x53646c+'-'+_0x390c86+'/'+_0x5b765e)[_0x25a6('0x1b')](_0x149bcb);}return null;};}function patchUpdates(_0x520187){return function(_0x35a9c7){try{jsonpatch[_0x25a6('0x21')](_0x35a9c7,_0x520187,!![]);}catch(_0x4a79b7){return BPromise[_0x25a6('0x22')](_0x4a79b7);}return _0x35a9c7[_0x25a6('0x23')]();};}function saveUpdates(_0x2116df,_0x2aa252){return function(_0x3e97ef){if(_0x3e97ef){return _0x3e97ef[_0x25a6('0x24')](_0x2116df)[_0x25a6('0x25')](function(_0x24b9ae){return _0x24b9ae;});}return null;};}function removeEntity(_0x4a701b,_0x45c0c5){return function(_0x593d61){if(_0x593d61){return _0x593d61[_0x25a6('0x26')]()[_0x25a6('0x25')](function(){_0x4a701b['status'](0xcc)[_0x25a6('0x1a')]();});}};}function handleEntityNotFound(_0x4bcdd3,_0x46c088){return function(_0x178207){if(!_0x178207){_0x4bcdd3[_0x25a6('0x27')](0x194);}return _0x178207;};}function handleError(_0x68e1ec,_0x3ff7bd){_0x3ff7bd=_0x3ff7bd||0x1f4;return function(_0x1856ad){logger['error'](_0x1856ad['stack']);if(_0x1856ad['name']){delete _0x1856ad['name'];}_0x68e1ec['status'](_0x3ff7bd)['send'](_0x1856ad);};}exports['index']=function(_0x1afe43,_0x7be6fe){var _0x1285a7={},_0x5bcc18={},_0x445e7c={'count':0x0,'rows':[]};var _0x5628b3=_[_0x25a6('0x28')](db[_0x25a6('0x29')][_0x25a6('0x2a')],function(_0x11b8df){return{'name':_0x11b8df[_0x25a6('0x2b')],'type':_0x11b8df[_0x25a6('0x2c')][_0x25a6('0x2d')]};});_0x5bcc18['model']=_[_0x25a6('0x28')](_0x5628b3,_0x25a6('0x2e'));_0x5bcc18[_0x25a6('0x2f')]=_[_0x25a6('0x30')](_0x1afe43[_0x25a6('0x2f')]);_0x5bcc18[_0x25a6('0x31')]=_[_0x25a6('0x32')](_0x5bcc18[_0x25a6('0x33')],_0x5bcc18[_0x25a6('0x2f')]);_0x1285a7[_0x25a6('0x34')]=_[_0x25a6('0x32')](_0x5bcc18[_0x25a6('0x33')],qs[_0x25a6('0x35')](_0x1afe43[_0x25a6('0x2f')][_0x25a6('0x35')]));_0x1285a7[_0x25a6('0x34')]=_0x1285a7['attributes'][_0x25a6('0x36')]?_0x1285a7[_0x25a6('0x34')]:_0x5bcc18[_0x25a6('0x33')];if(!_0x1afe43[_0x25a6('0x2f')]['hasOwnProperty'](_0x25a6('0x37'))){_0x1285a7['limit']=qs[_0x25a6('0x1e')](_0x1afe43['query']['limit']);_0x1285a7['offset']=qs[_0x25a6('0x1c')](_0x1afe43[_0x25a6('0x2f')][_0x25a6('0x1c')]);}_0x1285a7[_0x25a6('0x38')]=qs[_0x25a6('0x39')](_0x1afe43['query'][_0x25a6('0x39')]);_0x1285a7['where']=qs[_0x25a6('0x31')](_[_0x25a6('0x3a')](_0x1afe43[_0x25a6('0x2f')],_0x5bcc18[_0x25a6('0x31')]),_0x5628b3);if(_0x1afe43[_0x25a6('0x2f')][_0x25a6('0x3b')]){_0x1285a7[_0x25a6('0x3c')]=_[_0x25a6('0x3d')](_0x1285a7['where'],{'$or':_[_0x25a6('0x28')](_0x5628b3,function(_0x45a033){if(_0x45a033[_0x25a6('0x2c')]!=='VIRTUAL'){var _0x365acb={};_0x365acb[_0x45a033[_0x25a6('0x2e')]]={'$like':'%'+_0x1afe43[_0x25a6('0x2f')]['filter']+'%'};return _0x365acb;}})});}_0x1285a7=_['merge']({},_0x1285a7,_0x1afe43['options']);var _0x3df728={'where':_0x1285a7[_0x25a6('0x3c')]};return db['VoiceQueuesLog'][_0x25a6('0x1f')](_0x3df728)['then'](function(_0x3a4c1f){_0x445e7c['count']=_0x3a4c1f;if(_0x1afe43[_0x25a6('0x2f')]['includeAll']){_0x1285a7[_0x25a6('0x3e')]=[{'all':!![]}];}return db['VoiceQueuesLog'][_0x25a6('0x3f')](_0x1285a7);})[_0x25a6('0x25')](function(_0x4ea48b){_0x445e7c[_0x25a6('0x40')]=_0x4ea48b;return _0x445e7c;})[_0x25a6('0x25')](respondWithFilteredResult(_0x7be6fe,_0x1285a7))[_0x25a6('0x41')](handleError(_0x7be6fe,null));};exports['show']=function(_0x366112,_0x21cf33){var _0x5610a3={'raw':!![],'where':{'id':_0x366112['params']['id']}},_0x32adc3={};_0x32adc3[_0x25a6('0x33')]=_[_0x25a6('0x30')](db[_0x25a6('0x29')][_0x25a6('0x2a')]);_0x32adc3[_0x25a6('0x2f')]=_[_0x25a6('0x30')](_0x366112[_0x25a6('0x2f')]);_0x32adc3['filters']=_[_0x25a6('0x32')](_0x32adc3['model'],_0x32adc3[_0x25a6('0x2f')]);_0x5610a3[_0x25a6('0x34')]=_[_0x25a6('0x32')](_0x32adc3[_0x25a6('0x33')],qs[_0x25a6('0x35')](_0x366112['query'][_0x25a6('0x35')]));_0x5610a3[_0x25a6('0x34')]=_0x5610a3[_0x25a6('0x34')]['length']?_0x5610a3[_0x25a6('0x34')]:_0x32adc3[_0x25a6('0x33')];if(_0x366112['query']['includeAll']){_0x5610a3[_0x25a6('0x3e')]=[{'all':!![]}];}_0x5610a3=_[_0x25a6('0x3d')]({},_0x5610a3,_0x366112[_0x25a6('0x42')]);return db['VoiceQueuesLog'][_0x25a6('0x43')](_0x5610a3)[_0x25a6('0x25')](handleEntityNotFound(_0x21cf33,null))[_0x25a6('0x25')](respondWithResult(_0x21cf33,null))[_0x25a6('0x41')](handleError(_0x21cf33,null));};exports['create']=function(_0x546f05,_0x59f3b1){return db[_0x25a6('0x29')][_0x25a6('0x44')](_0x546f05['body'],{})[_0x25a6('0x25')](respondWithResult(_0x59f3b1,0xc9))[_0x25a6('0x41')](handleError(_0x59f3b1,null));};exports[_0x25a6('0x24')]=function(_0x28618b,_0x19d274){if(_0x28618b[_0x25a6('0x45')]['id']){delete _0x28618b['body']['id'];}return db[_0x25a6('0x29')][_0x25a6('0x43')]({'where':{'id':_0x28618b['params']['id']}})[_0x25a6('0x25')](handleEntityNotFound(_0x19d274,null))['then'](saveUpdates(_0x28618b[_0x25a6('0x45')],null))['then'](respondWithResult(_0x19d274,null))[_0x25a6('0x41')](handleError(_0x19d274,null));};exports[_0x25a6('0x26')]=function(_0x126a0d,_0xd8132d){return db[_0x25a6('0x29')][_0x25a6('0x43')]({'where':{'id':_0x126a0d['params']['id']}})[_0x25a6('0x25')](handleEntityNotFound(_0xd8132d,null))[_0x25a6('0x25')](removeEntity(_0xd8132d,null))[_0x25a6('0x41')](handleError(_0xd8132d,null));};
\ No newline at end of file
index 16f5ab1..9bd54b8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0x37d7=['request-promise','rimraf','../../config/environment','./voiceQueuesLog.attributes','exports','define','VoiceQueuesLog','voice_queues_log','event','dtm','lodash','util','../../config/logger','api','moment'];(function(_0x2c91e9,_0x2fb965){var _0x13f0ff=function(_0xb39edf){while(--_0xb39edf){_0x2c91e9['push'](_0x2c91e9['shift']());}};_0x13f0ff(++_0x2fb965);}(_0x37d7,0x163));var _0x737d=function(_0x180cd0,_0x386c6e){_0x180cd0=_0x180cd0-0x0;var _0x49fc32=_0x37d7[_0x180cd0];return _0x49fc32;};'use strict';var _=require(_0x737d('0x0'));var util=require(_0x737d('0x1'));var logger=require(_0x737d('0x2'))(_0x737d('0x3'));var moment=require(_0x737d('0x4'));var BPromise=require('bluebird');var rp=require(_0x737d('0x5'));var fs=require('fs');var path=require('path');var rimraf=require(_0x737d('0x6'));var config=require(_0x737d('0x7'));var attributes=require(_0x737d('0x8'));module[_0x737d('0x9')]=function(_0x1e1c26,_0x14b91c){return _0x1e1c26[_0x737d('0xa')](_0x737d('0xb'),attributes,{'tableName':_0x737d('0xc'),'paranoid':![],'indexes':[{'name':'event_dtm','fields':[_0x737d('0xd'),_0x737d('0xe')]}],'timestamps':![]});};
\ No newline at end of file
index bada2d9..31e6916 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0x12c9=['moment','randomstring','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','debug','request\x20sent','stringify','error','code','VoiceQueuesLog,\x20%s,\x20%s','message','info','result','catch','lodash'];(function(_0x33d6de,_0x4db95a){var _0x290775=function(_0x5e09c5){while(--_0x5e09c5){_0x33d6de['push'](_0x33d6de['shift']());}};_0x290775(++_0x4db95a);}(_0x12c9,0x9f));var _0x912c=function(_0x517417,_0x4b8fe3){_0x517417=_0x517417-0x0;var _0x1f33c5=_0x12c9[_0x517417];return _0x1f33c5;};'use strict';var _=require(_0x912c('0x0'));var util=require('util');var moment=require(_0x912c('0x1'));var BPromise=require('bluebird');var rs=require(_0x912c('0x2'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x912c('0x3'))['db'];var utils=require(_0x912c('0x4'));var logger=require(_0x912c('0x5'))(_0x912c('0x6'));var config=require(_0x912c('0x7'));var jayson=require(_0x912c('0x8'));var client=jayson[_0x912c('0x9')]['http']({'port':0x232a});function respondWithRpcPromise(_0x31a317,_0xf08f88,_0x4745c5){return new BPromise(function(_0x486e08,_0x2d86b9){return client['request'](_0x31a317,_0x4745c5)['then'](function(_0x28a597){logger['info']('VoiceQueuesLog,\x20%s,\x20%s',_0xf08f88,'request\x20sent');logger[_0x912c('0xa')]('VoiceQueuesLog,\x20%s,\x20%s,\x20%s',_0xf08f88,_0x912c('0xb'),JSON[_0x912c('0xc')](_0x28a597));if(_0x28a597[_0x912c('0xd')]){if(_0x28a597[_0x912c('0xd')][_0x912c('0xe')]===0x1f4){logger[_0x912c('0xd')](_0x912c('0xf'),_0xf08f88,_0x28a597['error'][_0x912c('0x10')]);return _0x2d86b9(_0x28a597[_0x912c('0xd')][_0x912c('0x10')]);}logger['error']('VoiceQueuesLog,\x20%s,\x20%s',_0xf08f88,_0x28a597[_0x912c('0xd')][_0x912c('0x10')]);return _0x486e08(_0x28a597['error'][_0x912c('0x10')]);}else{logger[_0x912c('0x11')]('VoiceQueuesLog,\x20%s,\x20%s',_0xf08f88,'request\x20sent');_0x486e08(_0x28a597[_0x912c('0x12')][_0x912c('0x10')]);}})[_0x912c('0x13')](function(_0x533f99){logger[_0x912c('0xd')](_0x912c('0xf'),_0xf08f88,_0x533f99);_0x2d86b9(_0x533f99);});});}
\ No newline at end of file
index fce808e..b4fc335 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0x4b3a=['/describe','show','/:id/download','download','/:id/downloads','downloads','/:id/transcribe','post','create','runTranscribe','put','/:id','update','destroy','exports','multer','path','connect-timeout','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','get','isAuthenticated','index'];(function(_0x4f6d08,_0x1b3dd0){var _0x53a9c6=function(_0x2e0e0f){while(--_0x2e0e0f){_0x4f6d08['push'](_0x4f6d08['shift']());}};_0x53a9c6(++_0x1b3dd0);}(_0x4b3a,0x1e3));var _0xa4b3=function(_0x561f23,_0x1e0d85){_0x561f23=_0x561f23-0x0;var _0x2cd48b=_0x4b3a[_0x561f23];return _0x2cd48b;};'use strict';var multer=require(_0xa4b3('0x0'));var util=require('util');var path=require(_0xa4b3('0x1'));var timeout=require(_0xa4b3('0x2'));var express=require('express');var router=express[_0xa4b3('0x3')]();var fs_extra=require(_0xa4b3('0x4'));var auth=require(_0xa4b3('0x5'));var interaction=require(_0xa4b3('0x6'));var config=require(_0xa4b3('0x7'));var controller=require('./voiceRecording.controller');router[_0xa4b3('0x8')]('/',auth[_0xa4b3('0x9')](),controller[_0xa4b3('0xa')]);router[_0xa4b3('0x8')](_0xa4b3('0xb'),auth[_0xa4b3('0x9')](),controller['describe']);router[_0xa4b3('0x8')]('/:id',auth[_0xa4b3('0x9')](),controller[_0xa4b3('0xc')]);router['get'](_0xa4b3('0xd'),auth['isAuthenticated'](),controller[_0xa4b3('0xe')]);router[_0xa4b3('0x8')](_0xa4b3('0xf'),controller[_0xa4b3('0x10')]);router['get'](_0xa4b3('0x11'),auth['isAuthenticated'](),controller['downloadTranscribe']);router[_0xa4b3('0x12')]('/',auth[_0xa4b3('0x9')](),controller[_0xa4b3('0x13')]);router[_0xa4b3('0x12')](_0xa4b3('0x11'),auth[_0xa4b3('0x9')](),controller[_0xa4b3('0x14')]);router[_0xa4b3('0x15')](_0xa4b3('0x16'),auth['isAuthenticated'](),controller[_0xa4b3('0x17')]);router['delete']('/:id',auth[_0xa4b3('0x9')](),controller[_0xa4b3('0x18')]);module[_0xa4b3('0x19')]=router;
\ No newline at end of file
index faf97ed..a50dd50 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(_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
+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(_0x2be8c2,_0x14a4b5){var _0x97f531=function(_0xcee58d){while(--_0xcee58d){_0x2be8c2['push'](_0x2be8c2['shift']());}};_0x97f531(++_0x14a4b5);}(_0xa9e0,0x123));var _0x0a9e=function(_0x4fc9e6,_0xc51915){_0x4fc9e6=_0x4fc9e6-0x0;var _0x551d28=_0xa9e0[_0x4fc9e6];return _0x551d28;};'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 08b5090..ed35cf2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0x46e6=['[RUNTRANSCRIPT][%d]\x20Transcription\x20job\x20%s\x20created','TranscriptionJob','TranscriptionJobName','transcribeName','transcribeStatus','TranscriptionJobStatus','runTranscribe','findOne','transcribe','transcribeAccountId','language','Sequelize','Transcribe\x20not\x20configured','runSentiment','sentimentAccountId','CloudProvider','Cloud\x20Provider\x20not\x20available','data1','data2','Cloud\x20Provider\x20not\x20configured','transcribeRegion','Buckets','Name','[RUNTRANSCRIPT][%d]\x20Bucket\x20%s\x20available','NEW','[RUNTRANSCRIPT][%d]\x20Transcript\x20action\x20already\x20requested','tempSentiment','updateAttributes','downloadTranscribe','fileText','root','/server/files/transcribes/transcribe_','.txt','Transcript\x20not\x20available','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','to-csv','ejs','lodash','squel','crypto','jsforce','desk.js','querystring','papaparse','aws-sdk','uuid/v4','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','json','offset','undefined','limit','count','reject','save','update','then','destroy','error','stack','name','index','map','rawAttributes','fieldName','key','model','differenceBy','format','query','keys','filters','intersection','fields','attributes','length','nolimit','sort','where','pick','filter','VIRTUAL','merge','options','VoiceRecording','includeAll','findAll','rows','catch','show','include','find','create','body','describe','download','../../components/encryptor','type','uniqueid','params','value','%s.cypher','secrets','recording','ValidationError','VoiceRecording\x20not\x20found','filename','unlink','message','send','Not\x20found','downloads','sequelize','MD5','token','$and','push','decryptFile','isNil','Entity\x20not\x20found','cancellazione\x20fisica\x20documento\x20%s','existsSync','File:\x20\x22','unlinkSync','info','\x22\x20trovato\x20eseguo\x20la\x20cancellazione','listBuckets','createBucket','TranscribeService','[RUNTRANSCRIPT][%d]\x20Starting\x20voice\x20recording\x20upload\x20in\x20bucket\x20%s','basename','readFileSync','Location','bucket','Bucket','location','[RUNTRANSCRIPT][%d]\x20Sending\x20transcribe\x20request'];(function(_0xe656a1,_0x4bde64){var _0x14d944=function(_0x51c272){while(--_0x51c272){_0xe656a1['push'](_0xe656a1['shift']());}};_0x14d944(++_0x4bde64);}(_0x46e6,0x15c));var _0x646e=function(_0x154a15,_0x5e14bd){_0x154a15=_0x154a15-0x0;var _0x4931fc=_0x46e6[_0x154a15];return _0x4931fc;};'use strict';var emlformat=require(_0x646e('0x0'));var rimraf=require(_0x646e('0x1'));var zipdir=require(_0x646e('0x2'));var jsonpatch=require(_0x646e('0x3'));var rp=require(_0x646e('0x4'));var moment=require(_0x646e('0x5'));var BPromise=require(_0x646e('0x6'));var Mustache=require(_0x646e('0x7'));var util=require(_0x646e('0x8'));var path=require(_0x646e('0x9'));var sox=require('sox');var csv=require(_0x646e('0xa'));var ejs=require(_0x646e('0xb'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x646e('0xc'));var squel=require(_0x646e('0xd'));var crypto=require(_0x646e('0xe'));var jsforce=require(_0x646e('0xf'));var deskjs=require(_0x646e('0x10'));var toCsv=require(_0x646e('0xa'));var querystring=require(_0x646e('0x11'));var Papa=require(_0x646e('0x12'));var AWS=require(_0x646e('0x13'));var uuidv4=require(_0x646e('0x14'));var Redis=require(_0x646e('0x15'));var authService=require(_0x646e('0x16'));var qs=require(_0x646e('0x17'));var as=require(_0x646e('0x18'));var hardwareService=require(_0x646e('0x19'));var logger=require(_0x646e('0x1a'))(_0x646e('0x1b'));var utils=require('../../config/utils');var config=require(_0x646e('0x1c'));var licenseUtil=require(_0x646e('0x1d'));var db=require(_0x646e('0x1e'))['db'];function respondWithStatusCode(_0x5ad53d,_0x3e511f){_0x3e511f=_0x3e511f||0xcc;return function(_0x5d9815){if(_0x5d9815){return _0x5ad53d[_0x646e('0x1f')](_0x3e511f);}return _0x5ad53d[_0x646e('0x20')](_0x3e511f)[_0x646e('0x21')]();};}function respondWithResult(_0x4707cd,_0x20aebd){_0x20aebd=_0x20aebd||0xc8;return function(_0x3b4ed2){if(_0x3b4ed2){return _0x4707cd[_0x646e('0x20')](_0x20aebd)[_0x646e('0x22')](_0x3b4ed2);}};}function respondWithFilteredResult(_0x260a96,_0x488137){return function(_0x5e3a7a){if(_0x5e3a7a){var _0x25c80f=typeof _0x488137[_0x646e('0x23')]===_0x646e('0x24')&&typeof _0x488137[_0x646e('0x25')]===_0x646e('0x24');var _0x23a9ff=_0x5e3a7a[_0x646e('0x26')];var _0xe71491=_0x25c80f?0x0:_0x488137[_0x646e('0x23')];var _0x57866a=_0x25c80f?_0x5e3a7a[_0x646e('0x26')]:_0x488137['offset']+_0x488137[_0x646e('0x25')];var _0x100160;if(_0x57866a>=_0x23a9ff){_0x57866a=_0x23a9ff;_0x100160=0xc8;}else{_0x100160=0xce;}_0x260a96['status'](_0x100160);return _0x260a96['set']('Content-Range',_0xe71491+'-'+_0x57866a+'/'+_0x23a9ff)['json'](_0x5e3a7a);}return null;};}function patchUpdates(_0x36b459){return function(_0x201f32){try{jsonpatch['apply'](_0x201f32,_0x36b459,!![]);}catch(_0x1433b2){return BPromise[_0x646e('0x27')](_0x1433b2);}return _0x201f32[_0x646e('0x28')]();};}function saveUpdates(_0x206e04,_0x2eec9a){return function(_0xacd8b5){if(_0xacd8b5){return _0xacd8b5[_0x646e('0x29')](_0x206e04)[_0x646e('0x2a')](function(_0x29a989){return _0x29a989;});}return null;};}function removeEntity(_0x1fa911,_0x15eb39){return function(_0x5afc4c){if(_0x5afc4c){return _0x5afc4c[_0x646e('0x2b')]()[_0x646e('0x2a')](function(){_0x1fa911[_0x646e('0x20')](0xcc)[_0x646e('0x21')]();});}};}function handleEntityNotFound(_0x3f7477,_0x2f566e){return function(_0x722ea5){if(!_0x722ea5){_0x3f7477['sendStatus'](0x194);}return _0x722ea5;};}function handleError(_0x506396,_0x427964){_0x427964=_0x427964||0x1f4;return function(_0x59b4a8){logger[_0x646e('0x2c')](_0x59b4a8[_0x646e('0x2d')]);if(_0x59b4a8[_0x646e('0x2e')]){delete _0x59b4a8['name'];}_0x506396[_0x646e('0x20')](_0x427964)['send'](_0x59b4a8);};}exports[_0x646e('0x2f')]=function(_0x1b023c,_0x208509){var _0x2d254d={},_0x236dd0={},_0x204bf4={'count':0x0,'rows':[]};var _0x283aa6=_[_0x646e('0x30')](db['VoiceRecording'][_0x646e('0x31')],function(_0x5bcb24){return{'name':_0x5bcb24[_0x646e('0x32')],'type':_0x5bcb24['type'][_0x646e('0x33')]};});_0x236dd0[_0x646e('0x34')]=_[_0x646e('0x35')](_[_0x646e('0x30')](_0x283aa6,_0x646e('0x2e')),[_0x646e('0x36')]);_0x236dd0[_0x646e('0x37')]=_[_0x646e('0x38')](_0x1b023c[_0x646e('0x37')]);_0x236dd0[_0x646e('0x39')]=_['intersection'](_0x236dd0[_0x646e('0x34')],_0x236dd0[_0x646e('0x37')]);_0x2d254d['attributes']=_[_0x646e('0x3a')](_0x236dd0['model'],qs[_0x646e('0x3b')](_0x1b023c[_0x646e('0x37')][_0x646e('0x3b')]));_0x2d254d[_0x646e('0x3c')]=_0x2d254d[_0x646e('0x3c')][_0x646e('0x3d')]?_0x2d254d['attributes']:_0x236dd0['model'];if(!_0x1b023c['query']['hasOwnProperty'](_0x646e('0x3e'))){_0x2d254d[_0x646e('0x25')]=qs[_0x646e('0x25')](_0x1b023c['query']['limit']);_0x2d254d[_0x646e('0x23')]=qs[_0x646e('0x23')](_0x1b023c[_0x646e('0x37')][_0x646e('0x23')]);}_0x2d254d['order']=qs[_0x646e('0x3f')](_0x1b023c[_0x646e('0x37')][_0x646e('0x3f')]);_0x2d254d[_0x646e('0x40')]=qs['filters'](_[_0x646e('0x41')](_0x1b023c[_0x646e('0x37')],_0x236dd0['filters']),_0x283aa6);if(_0x1b023c[_0x646e('0x37')][_0x646e('0x42')]){_0x2d254d['where']=_['merge'](_0x2d254d[_0x646e('0x40')],{'$or':_[_0x646e('0x30')](_0x283aa6,function(_0x58309f){if(_0x58309f['type']!==_0x646e('0x43')){var _0xf7ad1e={};_0xf7ad1e[_0x58309f['name']]={'$like':'%'+_0x1b023c[_0x646e('0x37')][_0x646e('0x42')]+'%'};return _0xf7ad1e;}})});}_0x2d254d=_[_0x646e('0x44')]({},_0x2d254d,_0x1b023c[_0x646e('0x45')]);var _0x2bcdc2={'where':_0x2d254d['where']};return db[_0x646e('0x46')][_0x646e('0x26')](_0x2bcdc2)[_0x646e('0x2a')](function(_0x292a2f){_0x204bf4[_0x646e('0x26')]=_0x292a2f;if(_0x1b023c[_0x646e('0x37')][_0x646e('0x47')]){_0x2d254d['include']=[{'all':!![]}];}return db[_0x646e('0x46')][_0x646e('0x48')](_0x2d254d);})[_0x646e('0x2a')](function(_0xa6d4a3){_0x204bf4[_0x646e('0x49')]=_0xa6d4a3;return _0x204bf4;})[_0x646e('0x2a')](respondWithFilteredResult(_0x208509,_0x2d254d))[_0x646e('0x4a')](handleError(_0x208509,null));};exports[_0x646e('0x4b')]=function(_0x460ab8,_0x3fe3b4){var _0x2092de={'raw':![],'where':{'id':_0x460ab8['params']['id']}},_0x5bab13={};_0x5bab13[_0x646e('0x34')]=_['keys'](db[_0x646e('0x46')][_0x646e('0x31')]);_0x5bab13[_0x646e('0x37')]=_[_0x646e('0x38')](_0x460ab8['query']);_0x5bab13[_0x646e('0x39')]=_[_0x646e('0x3a')](_0x5bab13[_0x646e('0x34')],_0x5bab13[_0x646e('0x37')]);_0x2092de['attributes']=_[_0x646e('0x3a')](_0x5bab13['model'],qs[_0x646e('0x3b')](_0x460ab8['query'][_0x646e('0x3b')]));_0x2092de[_0x646e('0x3c')]=_0x2092de['attributes'][_0x646e('0x3d')]?_0x2092de[_0x646e('0x3c')]:_0x5bab13[_0x646e('0x34')];if(_0x460ab8['query'][_0x646e('0x47')]){_0x2092de[_0x646e('0x4c')]=[{'all':!![]}];}_0x2092de=_['merge']({},_0x2092de,_0x460ab8[_0x646e('0x45')]);return db[_0x646e('0x46')][_0x646e('0x4d')](_0x2092de)[_0x646e('0x2a')](handleEntityNotFound(_0x3fe3b4,null))[_0x646e('0x2a')](respondWithResult(_0x3fe3b4,null))[_0x646e('0x4a')](handleError(_0x3fe3b4,null));};exports[_0x646e('0x4e')]=function(_0x833e1e,_0x421637){return db[_0x646e('0x46')][_0x646e('0x4e')](_0x833e1e[_0x646e('0x4f')],{})['then'](respondWithResult(_0x421637,0xc9))['catch'](handleError(_0x421637,null));};exports[_0x646e('0x29')]=function(_0x5d56ff,_0x4b1233){if(_0x5d56ff[_0x646e('0x4f')]['id']){delete _0x5d56ff[_0x646e('0x4f')]['id'];}return db[_0x646e('0x46')][_0x646e('0x4d')]({'where':{'id':_0x5d56ff['params']['id']}})['then'](handleEntityNotFound(_0x4b1233,null))['then'](saveUpdates(_0x5d56ff[_0x646e('0x4f')],null))[_0x646e('0x2a')](respondWithResult(_0x4b1233,null))['catch'](handleError(_0x4b1233,null));};exports[_0x646e('0x50')]=function(_0x4cf16b,_0x1caaec){return db[_0x646e('0x46')][_0x646e('0x50')]()[_0x646e('0x2a')](respondWithResult(_0x1caaec,null))[_0x646e('0x4a')](handleError(_0x1caaec,null));};exports[_0x646e('0x51')]=function(_0x445527,_0x554a24,_0x58e3e0){var _0x4dd173=require(_0x646e('0x52'));var _0x42b79a=![];var _0x10dec9={};if(_0x445527['query'][_0x646e('0x53')]&&_0x445527[_0x646e('0x37')][_0x646e('0x53')]===_0x646e('0x54')){_0x10dec9[_0x646e('0x54')]=_0x445527['params']['id'];}else{_0x10dec9['id']=_0x445527[_0x646e('0x55')]['id'];}return db['VoiceRecording']['find']({'where':_0x10dec9,'attributes':['id','value'],'raw':!![]})['then'](handleEntityNotFound(_0x554a24,null))[_0x646e('0x2a')](function(_0x4c618e){if(_0x4c618e){var _0x427bd9=_0x4c618e[_0x646e('0x56')];var _0x4349b6=util[_0x646e('0x36')](_0x646e('0x57'),_0x427bd9);if(fs['existsSync'](_0x4349b6)){_0x42b79a=!![];return _0x4dd173['decryptFile'](_0x4349b6,_0x427bd9,config[_0x646e('0x58')][_0x646e('0x59')])[_0x646e('0x2a')](function(){return _0x4c618e;});}return _0x4c618e;}})[_0x646e('0x2a')](function(_0x251fe1){if(_0x251fe1){var _0x1189df=_0x251fe1[_0x646e('0x56')];if(!fs['existsSync'](_0x1189df)){throw new db['Sequelize'][(_0x646e('0x5a'))](_0x646e('0x5b'));}if(_0x251fe1['filename']){return _0x554a24[_0x646e('0x51')](_0x1189df,_0x251fe1[_0x646e('0x5c')]+path['extname'](_0x1189df),function(){if(_0x42b79a){fs[_0x646e('0x5d')](_0x1189df);}});}else{return _0x554a24[_0x646e('0x51')](_0x1189df,function(_0x2f84bc){if(_0x42b79a){fs[_0x646e('0x5d')](_0x1189df);}});}}})[_0x646e('0x4a')](function(_0x89d0e3){if(_0x89d0e3[_0x646e('0x5e')]==='VoiceRecording\x20not\x20found'){_0x554a24[_0x646e('0x20')](0x194)[_0x646e('0x5f')](_0x646e('0x60'));}else{return handleError(_0x554a24,null);}});};exports[_0x646e('0x61')]=function(_0xfa54c9,_0x56e937,_0x55e285){var _0x50436a=require(_0x646e('0x52'));var _0x3320db=![];var _0x56b8ac={'$and':[db['sequelize']['where'](db[_0x646e('0x62')]['fn'](_0x646e('0x63'),db[_0x646e('0x62')]['col'](_0x646e('0x54'))),_0xfa54c9[_0x646e('0x37')][_0x646e('0x64')])]};if(_0xfa54c9[_0x646e('0x37')][_0x646e('0x53')]&&_0xfa54c9[_0x646e('0x37')][_0x646e('0x53')]===_0x646e('0x54')){_0x56b8ac[_0x646e('0x65')][_0x646e('0x66')]({'uniqueid':_0xfa54c9['params']['id']});}else{_0x56b8ac[_0x646e('0x65')][_0x646e('0x66')]({'id':_0xfa54c9['params']['id']});}return db[_0x646e('0x46')][_0x646e('0x4d')]({'where':_0x56b8ac,'attributes':['id',_0x646e('0x56')],'raw':!![]})['then'](handleEntityNotFound(_0x56e937,null))[_0x646e('0x2a')](function(_0x4b7011){if(_0x4b7011){var _0x2fca6b=util[_0x646e('0x36')](_0x646e('0x57'),_0x4b7011[_0x646e('0x56')]);if(fs['existsSync'](_0x2fca6b)){_0x3320db=!![];return _0x50436a[_0x646e('0x67')](_0x2fca6b,_0x4b7011[_0x646e('0x56')],config['secrets']['recording'])[_0x646e('0x2a')](function(){return _0x4b7011;});}return _0x4b7011;}})[_0x646e('0x2a')](function(_0x3f8da5){if(_0x3f8da5){if(!fs['existsSync'](_0x3f8da5[_0x646e('0x56')])){throw new db['Sequelize'][(_0x646e('0x5a'))](_0x646e('0x5b'));}if(_0x3f8da5[_0x646e('0x5c')]){return _0x56e937[_0x646e('0x51')](_0x3f8da5['value'],_0x3f8da5[_0x646e('0x5c')]+path['extname'](_0x3f8da5[_0x646e('0x56')]),function(){if(_0x3320db){fs[_0x646e('0x5d')](_0x3f8da5[_0x646e('0x56')]);}});}else{return _0x56e937['download'](_0x3f8da5[_0x646e('0x56')],function(_0x46fb45){if(_0x3320db){fs[_0x646e('0x5d')](_0x3f8da5[_0x646e('0x56')]);}});}}})[_0x646e('0x4a')](handleError(_0x56e937,null));};exports[_0x646e('0x2b')]=function(_0x1a5bc5,_0x1f2b8d){return db['VoiceRecording'][_0x646e('0x4d')]({'where':{'id':_0x1a5bc5[_0x646e('0x55')]['id']}})[_0x646e('0x2a')](function(_0xae0b3e){if(_[_0x646e('0x68')](_0xae0b3e)){throw new ReferenceError(_0x646e('0x69'));}return _0xae0b3e;})['then'](function(_0x186a2e){var _0x62f048=_0x186a2e[_0x646e('0x56')];logger['info'](_0x646e('0x6a'),_0x62f048);if(!_['isNil'](_0x186a2e[_0x646e('0x56')])&&fs[_0x646e('0x6b')](_0x62f048)){logger['info'](_0x646e('0x6c')+_0x62f048+'\x22\x20trovato\x20eseguo\x20la\x20cancellazione');fs[_0x646e('0x6d')](_0x62f048);}_0x62f048=_0x62f048+'.cypher';if(!_[_0x646e('0x68')](_0x186a2e[_0x646e('0x56')])&&fs[_0x646e('0x6b')](_0x62f048)){logger[_0x646e('0x6e')](_0x646e('0x6c')+_0x62f048+_0x646e('0x6f'));fs[_0x646e('0x6d')](_0x62f048);}return _0x186a2e;})['then'](function(_0x11f4a0){if(!_0x11f4a0)throw new InternalError();return _0x11f4a0[_0x646e('0x2b')]();})['then'](function(){_0x1f2b8d['status'](0xcc)[_0x646e('0x21')]();})['catch'](handleError(_0x1f2b8d,null));};function getBucketslist(_0x3291dc,_0x1daa79,_0x3ec15b){return new Promise(function(_0xf953cd,_0x55fcb0){var _0x576888=new AWS['S3']({'accessKeyId':_0x1daa79,'secretAccessKey':_0x3291dc,'region':_0x3ec15b});_0x576888[_0x646e('0x70')]({},function(_0x20d098,_0x10e14b){if(_0x20d098){return _0x55fcb0(_0x20d098);}else{return _0xf953cd(_0x10e14b);}});});}function createBucket(_0x2c3356,_0x1b67d9,_0x4e0ab4,_0x284804){return new Promise(function(_0x175a3c,_0x9636ea){var _0x1f083e=new AWS['S3']({'accessKeyId':_0x1b67d9,'secretAccessKey':_0x2c3356,'region':_0x4e0ab4});_0x1f083e[_0x646e('0x71')]({'Bucket':_0x284804},function(_0x4dc931,_0x3d7e83){if(_0x4dc931){return _0x9636ea(_0x4dc931);}else{return _0x175a3c(_0x3d7e83);}});});}function uploadFile(_0x1f6334,_0x329269,_0x5277ba,_0xa7b254,_0xc21117,_0x382adc){return new Promise(function(_0x11e9f6,_0x3f18fd){var _0x53438e=new AWS['S3']({'accessKeyId':_0x329269,'secretAccessKey':_0x1f6334,'region':_0x5277ba});_0x53438e['upload']({'Bucket':_0xa7b254,'Key':_0xc21117,'Body':_0x382adc},function(_0x5313b0,_0x111f1b){if(_0x5313b0){return _0x3f18fd(_0x5313b0);}else{return _0x11e9f6(_0x111f1b);}});});}function startTranscribe(_0x15aef4,_0x42f0cd,_0x1f837a,_0x2f7869,_0x4ded71,_0x5dc4ca){return new Promise(function(_0x27fe02,_0x2dbceb){var _0x22a49e=new AWS[(_0x646e('0x72'))]({'accessKeyId':_0x42f0cd,'secretAccessKey':_0x15aef4,'region':_0x1f837a});_0x22a49e['startTranscriptionJob']({'TranscriptionJobName':_0x2f7869,'LanguageCode':_0x4ded71,'Media':{'MediaFileUri':_0x5dc4ca}},function(_0x9e256b,_0x249ebb){if(_0x9e256b){return _0x2dbceb(_0x9e256b);}else{return _0x27fe02(_0x249ebb);}});});}function transcribe(_0x4db93e,_0x232220,_0x23c9f8,_0x357155,_0x33f1fb,_0x32b9ce,_0x7b433a){return new Promise(function(_0x5b04d9,_0x6ecc70){var _0x47e1a1={};logger[_0x646e('0x6e')](util[_0x646e('0x36')](_0x646e('0x73'),_0x4db93e,_0x33f1fb));return uploadFile(_0x232220,_0x23c9f8,_0x357155,_0x33f1fb,path[_0x646e('0x74')](_0x32b9ce),fs[_0x646e('0x75')](_0x32b9ce))[_0x646e('0x2a')](function(_0x2ef92a){logger[_0x646e('0x6e')](util[_0x646e('0x36')]('[RUNTRANSCRIPT][%d]\x20Voice\x20recording\x20uploaded\x20in\x20bucket\x20%s\x20(%s)',_0x4db93e,_0x33f1fb,_0x2ef92a[_0x646e('0x76')]));_0x47e1a1[_0x646e('0x77')]=_0x2ef92a[_0x646e('0x78')];_0x47e1a1[_0x646e('0x79')]=_0x2ef92a[_0x646e('0x76')];logger[_0x646e('0x6e')](util[_0x646e('0x36')](_0x646e('0x7a'),_0x4db93e));return startTranscribe(_0x232220,_0x23c9f8,_0x357155,uuidv4(),_0x7b433a,_0x2ef92a[_0x646e('0x76')]);})[_0x646e('0x2a')](function(_0x2c8e12){logger[_0x646e('0x6e')](util['format'](_0x646e('0x7b'),_0x4db93e,_0x2c8e12[_0x646e('0x7c')][_0x646e('0x7d')]));_0x47e1a1[_0x646e('0x7e')]=_0x2c8e12[_0x646e('0x7c')][_0x646e('0x7d')];_0x47e1a1[_0x646e('0x7f')]=_0x2c8e12[_0x646e('0x7c')][_0x646e('0x80')];return _0x5b04d9(_0x47e1a1);})[_0x646e('0x4a')](function(_0x5ee1e5){return _0x6ecc70(_0x5ee1e5);});});}exports[_0x646e('0x81')]=function(_0xfbc17b,_0x3a63bd,_0x213105){var _0x4c8ee9;var _0x35bbb5;var _0x57d378;var _0x591246=require(_0x646e('0x52'));return db[_0x646e('0x46')][_0x646e('0x82')]({'where':{'id':_0xfbc17b[_0x646e('0x55')]['id']}})[_0x646e('0x2a')](function(_0x99909a){if(_0x99909a){var _0x4b3d3e=util[_0x646e('0x36')]('%s.cypher',_0x99909a['value']);if(fs[_0x646e('0x6b')](_0x4b3d3e)){cypher=!![];return _0x591246['decryptFile'](_0x4b3d3e,_0x99909a['value'],config[_0x646e('0x58')]['recording'])['then'](function(){return _0x99909a;});}return _0x99909a;}})[_0x646e('0x2a')](function(_0x239b68){if(!_0x239b68){throw new db['Sequelize'][(_0x646e('0x5a'))]('Voice\x20Recording\x20not\x20found');}_0x35bbb5=_0x239b68;return db['Setting'][_0x646e('0x82')]({'where':{'id':0x1}});})[_0x646e('0x2a')](handleEntityNotFound(_0x3a63bd,null))[_0x646e('0x2a')](function(_0x180e74){if(_0x180e74){_0x4c8ee9=_0x180e74;if(!_0x4c8ee9[_0x646e('0x83')]||!_0x4c8ee9[_0x646e('0x84')]||!_0x4c8ee9['transcribeRegion']||!_0x4c8ee9[_0x646e('0x85')]||!_0x4c8ee9[_0x646e('0x77')]){throw new db[(_0x646e('0x86'))][(_0x646e('0x5a'))](_0x646e('0x87'));}if(_0xfbc17b[_0x646e('0x4f')][_0x646e('0x88')]&&(!_0x4c8ee9['sentiment']||!_0x4c8ee9[_0x646e('0x89')]||!_0x4c8ee9['sentimentRegion']||!_0x4c8ee9[_0x646e('0x85')]||!_0x4c8ee9['bucket'])){throw new db[(_0x646e('0x86'))][(_0x646e('0x5a'))]('Sentiment\x20Analysis\x20not\x20configured');}return db[_0x646e('0x8a')]['findOne']({'where':{'id':_0x4c8ee9[_0x646e('0x84')]}});}})[_0x646e('0x2a')](function(_0x40b85e){if(!_0x40b85e){throw new db[(_0x646e('0x86'))][(_0x646e('0x5a'))](_0x646e('0x8b'));}if(!_0x40b85e[_0x646e('0x8c')]||!_0x40b85e[_0x646e('0x8d')]){throw new db[(_0x646e('0x86'))][(_0x646e('0x5a'))](_0x646e('0x8e'));}_0x57d378=_0x40b85e;return getBucketslist(_0x57d378[_0x646e('0x8c')],_0x57d378[_0x646e('0x8d')],_0x4c8ee9[_0x646e('0x8f')]);})['then'](function(_0x18f06e){if(_0x18f06e&&_0x18f06e[_0x646e('0x90')]){var _0x133f06=_[_0x646e('0x4d')](_0x18f06e[_0x646e('0x90')],function(_0x3a1cdb){return _0x3a1cdb[_0x646e('0x91')]===_0x4c8ee9['bucket'];});if(!_0x133f06){logger[_0x646e('0x6e')](util['format']('[RUNTRANSCRIPT][%d]\x20Bucket\x20%s\x20not\x20available',_0xfbc17b[_0x646e('0x55')]['id'],_0x4c8ee9[_0x646e('0x77')]));return createBucket(_0x57d378[_0x646e('0x8c')],_0x57d378[_0x646e('0x8d')],_0x4c8ee9[_0x646e('0x8f')],_0x4c8ee9[_0x646e('0x77')]);}logger[_0x646e('0x6e')](util[_0x646e('0x36')](_0x646e('0x92'),_0xfbc17b[_0x646e('0x55')]['id'],_0x4c8ee9['bucket']));return;}})[_0x646e('0x2a')](function(_0x7866c9){if(_0x35bbb5[_0x646e('0x7f')]===_0x646e('0x93')){return transcribe(_0xfbc17b[_0x646e('0x55')]['id'],_0x57d378[_0x646e('0x8c')],_0x57d378[_0x646e('0x8d')],_0x4c8ee9[_0x646e('0x8f')],_0x4c8ee9[_0x646e('0x77')],_0x35bbb5['value'],_0x4c8ee9[_0x646e('0x85')]);}else{logger['info'](util['format'](_0x646e('0x94'),_0xfbc17b[_0x646e('0x55')]['id']));return{'transcribeStatus':'IN_PROGRESS'};}})[_0x646e('0x2a')](function(_0x488e6c){if(_0x488e6c){_0x488e6c[_0x646e('0x95')]=_0xfbc17b[_0x646e('0x4f')][_0x646e('0x88')];return _0x35bbb5[_0x646e('0x96')](_0x488e6c);}})['then'](respondWithResult(_0x3a63bd,null))[_0x646e('0x4a')](handleError(_0x3a63bd,null));};function writeFile(_0xfdbf2e,_0x2f6352){return new Promise(function(_0x19dc01,_0x324d78){fs['writeFile'](_0x2f6352,_0xfdbf2e,function(_0x5aff7b,_0x43e35a){if(_0x5aff7b){return _0x324d78(_0x5aff7b);}else{return _0x19dc01(_0x43e35a);}});});}exports[_0x646e('0x97')]=function(_0x5d433d,_0x427ba0,_0x53b317){return db[_0x646e('0x46')]['findOne']({'where':{'id':_0x5d433d[_0x646e('0x55')]['id']}})[_0x646e('0x2a')](handleEntityNotFound(_0x427ba0))[_0x646e('0x2a')](function(_0x47934d){if(_0x47934d&&_0x47934d[_0x646e('0x98')]){var _0x56f625=_0x47934d[_0x646e('0x98')];var _0x3732cd=config[_0x646e('0x99')]+_0x646e('0x9a')+_0x47934d['id']+_0x646e('0x9b');if(fs[_0x646e('0x6b')](_0x3732cd)){return _0x3732cd;}return writeFile(_0x56f625,_0x3732cd)[_0x646e('0x2a')](function(){return _0x3732cd;});}else{throw new db['Sequelize']['ValidationError'](_0x646e('0x9c'));}})[_0x646e('0x2a')](function(_0x18d60c){return _0x427ba0[_0x646e('0x51')](_0x18d60c);})[_0x646e('0x4a')](handleError(_0x427ba0));};
\ No newline at end of file
index 5bb1640..956aa64 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0x636f=['uniqueid','transcribeStatus','define','VoiceRecording','voice_recordings'];(function(_0x9791c4,_0x283c9f){var _0x36d7c9=function(_0x7c66df){while(--_0x7c66df){_0x9791c4['push'](_0x9791c4['shift']());}};_0x36d7c9(++_0x283c9f);}(_0x636f,0x188));var _0xf636=function(_0x397e5f,_0x454c8f){_0x397e5f=_0x397e5f-0x0;var _0x5302b8=_0x636f[_0x397e5f];return _0x5302b8;};'use strict';var attributes=require('./voiceRecording.attributes');module['exports']=function(_0x352490,_0x1d8b93){return _0x352490[_0xf636('0x0')](_0xf636('0x1'),attributes,{'tableName':_0xf636('0x2'),'paranoid':![],'indexes':[{'name':'uniqueid','fields':[_0xf636('0x3')]},{'name':_0xf636('0x4'),'fields':[_0xf636('0x4')]}],'timestamps':!![]});};
\ No newline at end of file
index 43b54da..20e2405 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0x524e=['UpdateVoiceRecording','catch','CreateVoiceRecording','../../components/encryptor','Setting','findOne','callRecordingEncryption','create','body','existsSync','value','%s.cypher','recording','unlink','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','http','request','then','info','VoiceRecording,\x20%s,\x20%s','request\x20sent','debug','VoiceRecording,\x20%s,\x20%s,\x20%s','stringify','error','code','message','VoiceRecording','update','options','where','attributes','limit'];(function(_0x5b644e,_0x2e5e07){var _0x49c6bf=function(_0x3032d9){while(--_0x3032d9){_0x5b644e['push'](_0x5b644e['shift']());}};_0x49c6bf(++_0x2e5e07);}(_0x524e,0x15e));var _0xe524=function(_0x14c09e,_0x10a2b6){_0x14c09e=_0x14c09e-0x0;var _0x584181=_0x524e[_0x14c09e];return _0x584181;};'use strict';var _=require('lodash');var util=require('util');var moment=require(_0xe524('0x0'));var BPromise=require(_0xe524('0x1'));var rs=require(_0xe524('0x2'));var fs=require('fs');var Redis=require(_0xe524('0x3'));var db=require(_0xe524('0x4'))['db'];var utils=require(_0xe524('0x5'));var logger=require(_0xe524('0x6'))(_0xe524('0x7'));var config=require(_0xe524('0x8'));var jayson=require(_0xe524('0x9'));var client=jayson['client'][_0xe524('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x41e1a3,_0x347bed,_0x533c14){return new BPromise(function(_0x384935,_0x3e4cda){return client[_0xe524('0xb')](_0x41e1a3,_0x533c14)[_0xe524('0xc')](function(_0x991924){logger[_0xe524('0xd')](_0xe524('0xe'),_0x347bed,_0xe524('0xf'));logger[_0xe524('0x10')](_0xe524('0x11'),_0x347bed,_0xe524('0xf'),JSON[_0xe524('0x12')](_0x991924));if(_0x991924[_0xe524('0x13')]){if(_0x991924[_0xe524('0x13')][_0xe524('0x14')]===0x1f4){logger[_0xe524('0x13')]('VoiceRecording,\x20%s,\x20%s',_0x347bed,_0x991924['error'][_0xe524('0x15')]);return _0x3e4cda(_0x991924[_0xe524('0x13')][_0xe524('0x15')]);}logger[_0xe524('0x13')](_0xe524('0xe'),_0x347bed,_0x991924['error'][_0xe524('0x15')]);return _0x384935(_0x991924['error'][_0xe524('0x15')]);}else{logger[_0xe524('0xd')]('VoiceRecording,\x20%s,\x20%s',_0x347bed,_0xe524('0xf'));_0x384935(_0x991924['result'][_0xe524('0x15')]);}})['catch'](function(_0x29a031){logger['error']('VoiceRecording,\x20%s,\x20%s',_0x347bed,_0x29a031);_0x3e4cda(_0x29a031);});});}exports['UpdateVoiceRecording']=function(_0x3a4027){var _0x4f1dfb=this;return new Promise(function(_0x11b2a1,_0x238f8f){return db[_0xe524('0x16')][_0xe524('0x17')](_0x3a4027['body'],{'raw':_0x3a4027[_0xe524('0x18')]?_0x3a4027[_0xe524('0x18')]['raw']===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x3a4027[_0xe524('0x18')]?_0x3a4027[_0xe524('0x18')][_0xe524('0x19')]||null:null,'attributes':_0x3a4027[_0xe524('0x18')]?_0x3a4027[_0xe524('0x18')][_0xe524('0x1a')]||null:null,'limit':_0x3a4027[_0xe524('0x18')]?_0x3a4027[_0xe524('0x18')][_0xe524('0x1b')]||null:null})['then'](function(_0x7d1f92){logger['info']('UpdateVoiceRecording',_0x3a4027);logger[_0xe524('0x10')](_0xe524('0x1c'),_0x3a4027,JSON[_0xe524('0x12')](_0x7d1f92));_0x11b2a1(_0x7d1f92);})[_0xe524('0x1d')](function(_0x599d5d){logger[_0xe524('0x13')]('UpdateVoiceRecording',_0x599d5d[_0xe524('0x15')],_0x3a4027);_0x238f8f(_0x4f1dfb[_0xe524('0x13')](0x1f4,_0x599d5d[_0xe524('0x15')]));});});};exports[_0xe524('0x1e')]=function(_0x4102d9){var _0xfd5965=this;return new Promise(function(_0x2141db,_0x583cc3){var _0x58a896=require(_0xe524('0x1f'));var _0x45abad;return db[_0xe524('0x20')][_0xe524('0x21')]({'attributes':['id',_0xe524('0x22')],'where':{'id':0x1},'raw':!![]})['then'](function(_0x52f140){_0x45abad=_0x52f140;return db[_0xe524('0x16')][_0xe524('0x23')](_0x4102d9[_0xe524('0x24')]);})[_0xe524('0xc')](function(_0x25c0a1){if(_0x45abad['callRecordingEncryption']&&fs[_0xe524('0x25')](_0x25c0a1[_0xe524('0x26')])){var _0x4a4e15=util['format'](_0xe524('0x27'),_0x25c0a1[_0xe524('0x26')]);return _0x58a896['encryptFile'](_0x25c0a1[_0xe524('0x26')],_0x4a4e15,config['secrets'][_0xe524('0x28')])['then'](function(){fs[_0xe524('0x29')](_0x25c0a1[_0xe524('0x26')]);logger[_0xe524('0xd')]('CreateVoiceRecording\x20file\x20encrypted');return _0x25c0a1;});}return _0x25c0a1;})[_0xe524('0xc')](function(_0x5238c9){logger[_0xe524('0xd')](_0xe524('0x1e'),_0x4102d9);logger[_0xe524('0x10')]('CreateVoiceRecording',_0x4102d9,JSON[_0xe524('0x12')](_0x5238c9));_0x2141db(_0x5238c9);})[_0xe524('0x1d')](function(_0x49c43e){logger[_0xe524('0x13')](_0xe524('0x1e'),_0x49c43e[_0xe524('0x15')],_0x4102d9);_0x583cc3(_0xfd5965[_0xe524('0x13')](0x1f4,_0x49c43e['message']));});});};
\ No newline at end of file
index f4cdd38..4aba515 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0x72ac=['Router','../../components/auth/service','../../components/interaction/service','./voiceTransferReport.controller','isAuthenticated','index','get','/describe','/:id','post','create','update','destroy','exports','multer','util','connect-timeout','express'];(function(_0x256b72,_0x340985){var _0x2183e3=function(_0xf7fd37){while(--_0xf7fd37){_0x256b72['push'](_0x256b72['shift']());}};_0x2183e3(++_0x340985);}(_0x72ac,0x9e));var _0xc72a=function(_0x4337b4,_0x25732b){_0x4337b4=_0x4337b4-0x0;var _0x55da4e=_0x72ac[_0x4337b4];return _0x55da4e;};'use strict';var multer=require(_0xc72a('0x0'));var util=require(_0xc72a('0x1'));var path=require('path');var timeout=require(_0xc72a('0x2'));var express=require(_0xc72a('0x3'));var router=express[_0xc72a('0x4')]();var fs_extra=require('fs-extra');var auth=require(_0xc72a('0x5'));var interaction=require(_0xc72a('0x6'));var config=require('../../config/environment');var controller=require(_0xc72a('0x7'));router['get']('/',auth[_0xc72a('0x8')](),controller[_0xc72a('0x9')]);router[_0xc72a('0xa')](_0xc72a('0xb'),auth['isAuthenticated'](),controller['describe']);router[_0xc72a('0xa')](_0xc72a('0xc'),auth[_0xc72a('0x8')](),controller['show']);router[_0xc72a('0xd')]('/',auth[_0xc72a('0x8')](),controller[_0xc72a('0xe')]);router['put']('/:id',auth[_0xc72a('0x8')](),controller[_0xc72a('0xf')]);router['delete']('/:id',auth[_0xc72a('0x8')](),controller[_0xc72a('0x10')]);module[_0xc72a('0x11')]=router;
\ No newline at end of file
index 077a508..07b9709 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0xcdd2=['attended','STRING','sequelize','moment','exports','ENUM'];(function(_0x1c258e,_0xc809f6){var _0x1145b0=function(_0x3b031e){while(--_0x3b031e){_0x1c258e['push'](_0x1c258e['shift']());}};_0x1145b0(++_0xc809f6);}(_0xcdd2,0xce));var _0x2cdd=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0xcdd2[_0x3dd15e];return _0x231fd0;};'use strict';var Sequelize=require(_0x2cdd('0x0'));var moment=require(_0x2cdd('0x1'));module[_0x2cdd('0x2')]={'type':{'type':Sequelize[_0x2cdd('0x3')]('blind',_0x2cdd('0x4'))},'result':{'type':Sequelize[_0x2cdd('0x5')]},'transfererchannel':{'type':Sequelize[_0x2cdd('0x5')]},'transferercalleridnum':{'type':Sequelize[_0x2cdd('0x5')]},'transferercalleridname':{'type':Sequelize['STRING']},'transfererconnectedlinenum':{'type':Sequelize[_0x2cdd('0x5')]},'transfererconnectedlinename':{'type':Sequelize[_0x2cdd('0x5')]},'transfereraccountcode':{'type':Sequelize[_0x2cdd('0x5')]},'transferercontext':{'type':Sequelize['STRING']},'transfererexten':{'type':Sequelize[_0x2cdd('0x5')]},'transfererlinkedid':{'type':Sequelize['STRING']},'transfereechannel':{'type':Sequelize[_0x2cdd('0x5')]},'transfereecalleridnum':{'type':Sequelize[_0x2cdd('0x5')]},'transfereecalleridname':{'type':Sequelize[_0x2cdd('0x5')]},'transfereeconnectedlinenum':{'type':Sequelize[_0x2cdd('0x5')]},'transfereeconnectedlinename':{'type':Sequelize[_0x2cdd('0x5')]},'transfereeaccountcode':{'type':Sequelize[_0x2cdd('0x5')]},'transfereecontext':{'type':Sequelize[_0x2cdd('0x5')]},'transfereeexten':{'type':Sequelize[_0x2cdd('0x5')]},'transfereelinkedid':{'type':Sequelize[_0x2cdd('0x5')]},'isexternal':{'type':Sequelize[_0x2cdd('0x3')]('Yes','No')},'context':{'type':Sequelize[_0x2cdd('0x5')]},'extension':{'type':Sequelize['STRING']}};
\ No newline at end of file
index 11b6f4c..8f04082 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0x0c08=['../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../config/utils','../../config/environment','../../mysqldb','sendStatus','status','end','offset','undefined','limit','count','set','json','reject','then','destroy','stack','name','send','index','map','VoiceTransferReport','fieldName','type','keys','query','intersection','model','fields','length','attributes','hasOwnProperty','nolimit','sort','where','filters','pick','merge','VIRTUAL','filter','options','include','findAll','rows','catch','show','params','rawAttributes','includeAll','find','create','update','body','describe','eml-format','zip-dir','request-promise','util','path','sox','to-csv','fs-extra','lodash','squel','crypto','papaparse'];(function(_0x22e46b,_0x11aadf){var _0x56f953=function(_0x4a15b0){while(--_0x4a15b0){_0x22e46b['push'](_0x22e46b['shift']());}};_0x56f953(++_0x11aadf);}(_0x0c08,0x1d7));var _0x80c0=function(_0x8abd64,_0x539570){_0x8abd64=_0x8abd64-0x0;var _0xd2511e=_0x0c08[_0x8abd64];return _0xd2511e;};'use strict';var emlformat=require(_0x80c0('0x0'));var rimraf=require('rimraf');var zipdir=require(_0x80c0('0x1'));var jsonpatch=require('fast-json-patch');var rp=require(_0x80c0('0x2'));var moment=require('moment');var BPromise=require('bluebird');var Mustache=require('mustache');var util=require(_0x80c0('0x3'));var path=require(_0x80c0('0x4'));var sox=require(_0x80c0('0x5'));var csv=require(_0x80c0('0x6'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x80c0('0x7'));var _=require(_0x80c0('0x8'));var squel=require(_0x80c0('0x9'));var crypto=require(_0x80c0('0xa'));var jsforce=require('jsforce');var deskjs=require('desk.js');var toCsv=require(_0x80c0('0x6'));var querystring=require('querystring');var Papa=require(_0x80c0('0xb'));var Redis=require('ioredis');var authService=require('../../components/auth/service');var qs=require(_0x80c0('0xc'));var as=require(_0x80c0('0xd'));var hardwareService=require(_0x80c0('0xe'));var logger=require(_0x80c0('0xf'))('api');var utils=require(_0x80c0('0x10'));var config=require(_0x80c0('0x11'));var licenseUtil=require('../../config/license/util');var db=require(_0x80c0('0x12'))['db'];function respondWithStatusCode(_0x3c5ab4,_0x296840){_0x296840=_0x296840||0xcc;return function(_0x4fafca){if(_0x4fafca){return _0x3c5ab4[_0x80c0('0x13')](_0x296840);}return _0x3c5ab4[_0x80c0('0x14')](_0x296840)[_0x80c0('0x15')]();};}function respondWithResult(_0x9593d8,_0x2541eb){_0x2541eb=_0x2541eb||0xc8;return function(_0x2cd194){if(_0x2cd194){return _0x9593d8[_0x80c0('0x14')](_0x2541eb)['json'](_0x2cd194);}};}function respondWithFilteredResult(_0x55a966,_0x2c1648){return function(_0x2f9b29){if(_0x2f9b29){var _0x51ef8c=typeof _0x2c1648[_0x80c0('0x16')]===_0x80c0('0x17')&&typeof _0x2c1648[_0x80c0('0x18')]===_0x80c0('0x17');var _0x2eaab5=_0x2f9b29['count'];var _0xccaebb=_0x51ef8c?0x0:_0x2c1648[_0x80c0('0x16')];var _0x566857=_0x51ef8c?_0x2f9b29[_0x80c0('0x19')]:_0x2c1648['offset']+_0x2c1648[_0x80c0('0x18')];var _0x8b8174;if(_0x566857>=_0x2eaab5){_0x566857=_0x2eaab5;_0x8b8174=0xc8;}else{_0x8b8174=0xce;}_0x55a966[_0x80c0('0x14')](_0x8b8174);return _0x55a966[_0x80c0('0x1a')]('Content-Range',_0xccaebb+'-'+_0x566857+'/'+_0x2eaab5)[_0x80c0('0x1b')](_0x2f9b29);}return null;};}function patchUpdates(_0x2142a6){return function(_0x42092c){try{jsonpatch['apply'](_0x42092c,_0x2142a6,!![]);}catch(_0x119bf6){return BPromise[_0x80c0('0x1c')](_0x119bf6);}return _0x42092c['save']();};}function saveUpdates(_0x37d17b,_0x6ad926){return function(_0x20c780){if(_0x20c780){return _0x20c780['update'](_0x37d17b)[_0x80c0('0x1d')](function(_0xe86a13){return _0xe86a13;});}return null;};}function removeEntity(_0x1805e5,_0x3d2b38){return function(_0xa250f7){if(_0xa250f7){return _0xa250f7[_0x80c0('0x1e')]()[_0x80c0('0x1d')](function(){_0x1805e5[_0x80c0('0x14')](0xcc)[_0x80c0('0x15')]();});}};}function handleEntityNotFound(_0x2ca6d7,_0x474cee){return function(_0x10c830){if(!_0x10c830){_0x2ca6d7[_0x80c0('0x13')](0x194);}return _0x10c830;};}function handleError(_0xffd7fc,_0x482899){_0x482899=_0x482899||0x1f4;return function(_0xd370bc){logger['error'](_0xd370bc[_0x80c0('0x1f')]);if(_0xd370bc[_0x80c0('0x20')]){delete _0xd370bc[_0x80c0('0x20')];}_0xffd7fc['status'](_0x482899)[_0x80c0('0x21')](_0xd370bc);};}exports[_0x80c0('0x22')]=function(_0x588e3b,_0x5ef5c4){var _0x1693c1={},_0x1f0936={},_0x840940={'count':0x0,'rows':[]};var _0x221c10=_[_0x80c0('0x23')](db[_0x80c0('0x24')]['rawAttributes'],function(_0x5cb56a){return{'name':_0x5cb56a[_0x80c0('0x25')],'type':_0x5cb56a[_0x80c0('0x26')]['key']};});_0x1f0936['model']=_[_0x80c0('0x23')](_0x221c10,'name');_0x1f0936['query']=_[_0x80c0('0x27')](_0x588e3b[_0x80c0('0x28')]);_0x1f0936['filters']=_[_0x80c0('0x29')](_0x1f0936[_0x80c0('0x2a')],_0x1f0936[_0x80c0('0x28')]);_0x1693c1['attributes']=_['intersection'](_0x1f0936[_0x80c0('0x2a')],qs[_0x80c0('0x2b')](_0x588e3b[_0x80c0('0x28')][_0x80c0('0x2b')]));_0x1693c1['attributes']=_0x1693c1['attributes'][_0x80c0('0x2c')]?_0x1693c1[_0x80c0('0x2d')]:_0x1f0936['model'];if(!_0x588e3b[_0x80c0('0x28')][_0x80c0('0x2e')](_0x80c0('0x2f'))){_0x1693c1['limit']=qs['limit'](_0x588e3b[_0x80c0('0x28')][_0x80c0('0x18')]);_0x1693c1[_0x80c0('0x16')]=qs[_0x80c0('0x16')](_0x588e3b[_0x80c0('0x28')]['offset']);}_0x1693c1['order']=qs[_0x80c0('0x30')](_0x588e3b[_0x80c0('0x28')]['sort']);_0x1693c1[_0x80c0('0x31')]=qs[_0x80c0('0x32')](_[_0x80c0('0x33')](_0x588e3b[_0x80c0('0x28')],_0x1f0936[_0x80c0('0x32')]),_0x221c10);if(_0x588e3b[_0x80c0('0x28')]['filter']){_0x1693c1[_0x80c0('0x31')]=_[_0x80c0('0x34')](_0x1693c1[_0x80c0('0x31')],{'$or':_['map'](_0x221c10,function(_0x27df2f){if(_0x27df2f[_0x80c0('0x26')]!==_0x80c0('0x35')){var _0x782270={};_0x782270[_0x27df2f[_0x80c0('0x20')]]={'$like':'%'+_0x588e3b[_0x80c0('0x28')][_0x80c0('0x36')]+'%'};return _0x782270;}})});}_0x1693c1=_[_0x80c0('0x34')]({},_0x1693c1,_0x588e3b[_0x80c0('0x37')]);var _0x3f8e4c={'where':_0x1693c1[_0x80c0('0x31')]};return db[_0x80c0('0x24')][_0x80c0('0x19')](_0x3f8e4c)[_0x80c0('0x1d')](function(_0x30baa8){_0x840940[_0x80c0('0x19')]=_0x30baa8;if(_0x588e3b['query']['includeAll']){_0x1693c1[_0x80c0('0x38')]=[{'all':!![]}];}return db[_0x80c0('0x24')][_0x80c0('0x39')](_0x1693c1);})['then'](function(_0x5ae88a){_0x840940[_0x80c0('0x3a')]=_0x5ae88a;return _0x840940;})[_0x80c0('0x1d')](respondWithFilteredResult(_0x5ef5c4,_0x1693c1))[_0x80c0('0x3b')](handleError(_0x5ef5c4,null));};exports[_0x80c0('0x3c')]=function(_0x2f5911,_0x2842e0){var _0x57ca0={'raw':!![],'where':{'id':_0x2f5911[_0x80c0('0x3d')]['id']}},_0x51af39={};_0x51af39[_0x80c0('0x2a')]=_[_0x80c0('0x27')](db['VoiceTransferReport'][_0x80c0('0x3e')]);_0x51af39[_0x80c0('0x28')]=_[_0x80c0('0x27')](_0x2f5911[_0x80c0('0x28')]);_0x51af39[_0x80c0('0x32')]=_['intersection'](_0x51af39['model'],_0x51af39[_0x80c0('0x28')]);_0x57ca0[_0x80c0('0x2d')]=_[_0x80c0('0x29')](_0x51af39[_0x80c0('0x2a')],qs[_0x80c0('0x2b')](_0x2f5911[_0x80c0('0x28')]['fields']));_0x57ca0[_0x80c0('0x2d')]=_0x57ca0[_0x80c0('0x2d')][_0x80c0('0x2c')]?_0x57ca0['attributes']:_0x51af39[_0x80c0('0x2a')];if(_0x2f5911['query'][_0x80c0('0x3f')]){_0x57ca0[_0x80c0('0x38')]=[{'all':!![]}];}_0x57ca0=_['merge']({},_0x57ca0,_0x2f5911[_0x80c0('0x37')]);return db[_0x80c0('0x24')][_0x80c0('0x40')](_0x57ca0)[_0x80c0('0x1d')](handleEntityNotFound(_0x2842e0,null))[_0x80c0('0x1d')](respondWithResult(_0x2842e0,null))[_0x80c0('0x3b')](handleError(_0x2842e0,null));};exports[_0x80c0('0x41')]=function(_0x3a9572,_0x35f840){return db[_0x80c0('0x24')][_0x80c0('0x41')](_0x3a9572['body'],{})[_0x80c0('0x1d')](respondWithResult(_0x35f840,0xc9))['catch'](handleError(_0x35f840,null));};exports[_0x80c0('0x42')]=function(_0xe9981c,_0x1edc3c){if(_0xe9981c[_0x80c0('0x43')]['id']){delete _0xe9981c['body']['id'];}return db['VoiceTransferReport'][_0x80c0('0x40')]({'where':{'id':_0xe9981c[_0x80c0('0x3d')]['id']}})[_0x80c0('0x1d')](handleEntityNotFound(_0x1edc3c,null))[_0x80c0('0x1d')](saveUpdates(_0xe9981c[_0x80c0('0x43')],null))[_0x80c0('0x1d')](respondWithResult(_0x1edc3c,null))[_0x80c0('0x3b')](handleError(_0x1edc3c,null));};exports[_0x80c0('0x1e')]=function(_0x543654,_0x156c14){return db[_0x80c0('0x24')][_0x80c0('0x40')]({'where':{'id':_0x543654[_0x80c0('0x3d')]['id']}})[_0x80c0('0x1d')](handleEntityNotFound(_0x156c14,null))[_0x80c0('0x1d')](removeEntity(_0x156c14,null))[_0x80c0('0x3b')](handleError(_0x156c14,null));};exports[_0x80c0('0x44')]=function(_0x3cd4d7,_0x3011aa){return db[_0x80c0('0x24')][_0x80c0('0x44')]()[_0x80c0('0x1d')](respondWithResult(_0x3011aa,null))['catch'](handleError(_0x3011aa,null));};
\ No newline at end of file
index 93b0801..e5d2241 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0x8738=['./voiceTransferReport.attributes','define','VoiceTransferReport','report_call_transfer','api','bluebird','path','rimraf','../../config/environment'];(function(_0x461b64,_0x315ef8){var _0x1792d8=function(_0x1ef7ca){while(--_0x1ef7ca){_0x461b64['push'](_0x461b64['shift']());}};_0x1792d8(++_0x315ef8);}(_0x8738,0x1b4));var _0x8873=function(_0x24d1b6,_0x2c7ab6){_0x24d1b6=_0x24d1b6-0x0;var _0x27faec=_0x8738[_0x24d1b6];return _0x27faec;};'use strict';var _=require('lodash');var util=require('util');var logger=require('../../config/logger')(_0x8873('0x0'));var moment=require('moment');var BPromise=require(_0x8873('0x1'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x8873('0x2'));var rimraf=require(_0x8873('0x3'));var config=require(_0x8873('0x4'));var attributes=require(_0x8873('0x5'));module['exports']=function(_0x1ceb83,_0x386813){return _0x1ceb83[_0x8873('0x6')](_0x8873('0x7'),attributes,{'tableName':_0x8873('0x8'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 0c2661a..b72984b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0xe088=['http','then','VoiceTransferReport,\x20%s,\x20%s','request\x20sent','debug','stringify','error','code','message','info','result','catch','CreateVoiceTransferReport','create','body','options','raw','moment','bluebird','ioredis','../../config/utils','rpc','../../config/environment'];(function(_0x29c8c9,_0x42d29d){var _0x2d00ad=function(_0x2691b1){while(--_0x2691b1){_0x29c8c9['push'](_0x29c8c9['shift']());}};_0x2d00ad(++_0x42d29d);}(_0xe088,0x13c));var _0x8e08=function(_0x10eb6b,_0x3fe155){_0x10eb6b=_0x10eb6b-0x0;var _0x3a3ab1=_0xe088[_0x10eb6b];return _0x3a3ab1;};'use strict';var _=require('lodash');var util=require('util');var moment=require(_0x8e08('0x0'));var BPromise=require(_0x8e08('0x1'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x8e08('0x2'));var db=require('../../mysqldb')['db'];var utils=require(_0x8e08('0x3'));var logger=require('../../config/logger')(_0x8e08('0x4'));var config=require(_0x8e08('0x5'));var jayson=require('jayson/promise');var client=jayson['client'][_0x8e08('0x6')]({'port':0x232a});function respondWithRpcPromise(_0x172f72,_0x43bd2d,_0x29f1c7){return new BPromise(function(_0x1b1b43,_0x1f0657){return client['request'](_0x172f72,_0x29f1c7)[_0x8e08('0x7')](function(_0x4581f0){logger['info'](_0x8e08('0x8'),_0x43bd2d,_0x8e08('0x9'));logger[_0x8e08('0xa')]('VoiceTransferReport,\x20%s,\x20%s,\x20%s',_0x43bd2d,_0x8e08('0x9'),JSON[_0x8e08('0xb')](_0x4581f0));if(_0x4581f0[_0x8e08('0xc')]){if(_0x4581f0[_0x8e08('0xc')][_0x8e08('0xd')]===0x1f4){logger[_0x8e08('0xc')](_0x8e08('0x8'),_0x43bd2d,_0x4581f0['error'][_0x8e08('0xe')]);return _0x1f0657(_0x4581f0[_0x8e08('0xc')][_0x8e08('0xe')]);}logger['error'](_0x8e08('0x8'),_0x43bd2d,_0x4581f0['error'][_0x8e08('0xe')]);return _0x1b1b43(_0x4581f0['error'][_0x8e08('0xe')]);}else{logger[_0x8e08('0xf')](_0x8e08('0x8'),_0x43bd2d,_0x8e08('0x9'));_0x1b1b43(_0x4581f0[_0x8e08('0x10')][_0x8e08('0xe')]);}})[_0x8e08('0x11')](function(_0x5d48f2){logger[_0x8e08('0xc')]('VoiceTransferReport,\x20%s,\x20%s',_0x43bd2d,_0x5d48f2);_0x1f0657(_0x5d48f2);});});}exports[_0x8e08('0x12')]=function(_0x11d7ca){var _0x167c58=this;return new Promise(function(_0x25fe45,_0x5e4e78){return db['VoiceTransferReport'][_0x8e08('0x13')](_0x11d7ca[_0x8e08('0x14')],{'raw':_0x11d7ca['options']?_0x11d7ca[_0x8e08('0x15')][_0x8e08('0x16')]===undefined?!![]:![]:!![]})['then'](function(_0xd092b0){logger[_0x8e08('0xf')](_0x8e08('0x12'),_0x11d7ca);logger[_0x8e08('0xa')](_0x8e08('0x12'),_0x11d7ca,JSON[_0x8e08('0xb')](_0xd092b0));_0x25fe45(_0xd092b0);})[_0x8e08('0x11')](function(_0x2e3c35){logger[_0x8e08('0xc')](_0x8e08('0x12'),_0x2e3c35[_0x8e08('0xe')],_0x11d7ca);_0x5e4e78(_0x167c58[_0x8e08('0xc')](0x1f4,_0x2e3c35['message']));});});};
\ No newline at end of file
index d87f190..0315661 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0xf4eb=['/hangup','isAuthenticated','isWebrtcLicence','hangup','/hold','hold','/unhold','unhold','/calls','calls','transfer','exports','express','/originate','originate','post'];(function(_0x55cb5e,_0x1aee2d){var _0x31fdd2=function(_0x3e3359){while(--_0x3e3359){_0x55cb5e['push'](_0x55cb5e['shift']());}};_0x31fdd2(++_0x1aee2d);}(_0xf4eb,0xec));var _0xbf4e=function(_0x358821,_0xeb8f05){_0x358821=_0x358821-0x0;var _0x367e07=_0xf4eb[_0x358821];return _0x367e07;};'use strict';var express=require(_0xbf4e('0x0'));var router=express['Router']();var auth=require('../../components/auth/service');var controller=require('./webbar.controller');router['post'](_0xbf4e('0x1'),auth['isAuthenticated'](),auth['isWebrtcLicence'](),controller[_0xbf4e('0x2')]);router[_0xbf4e('0x3')](_0xbf4e('0x4'),auth[_0xbf4e('0x5')](),auth[_0xbf4e('0x6')](),controller[_0xbf4e('0x7')]);router[_0xbf4e('0x3')]('/answer',auth[_0xbf4e('0x5')](),auth['isWebrtcLicence'](),controller['answer']);router[_0xbf4e('0x3')](_0xbf4e('0x8'),auth[_0xbf4e('0x5')](),auth[_0xbf4e('0x6')](),controller[_0xbf4e('0x9')]);router[_0xbf4e('0x3')](_0xbf4e('0xa'),auth['isAuthenticated'](),auth['isWebrtcLicence'](),controller[_0xbf4e('0xb')]);router['post'](_0xbf4e('0xc'),auth[_0xbf4e('0x5')](),auth['isWebrtcLicence'](),controller[_0xbf4e('0xd')]);router['post']('/transfer',auth[_0xbf4e('0x5')](),auth[_0xbf4e('0x6')](),controller[_0xbf4e('0xe')]);module[_0xbf4e('0xf')]=router;
\ No newline at end of file
index e786236..b216837 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0x5db8=['callerId','callbackUrl','entityFound:','format','user:%s','webbar:originate','originate\x20executed!','hangup','hangup\x20fired:','sessionId','webbar:hangup','hangup\x20executed!','answer','answer\x20fired:','webbar:answer','answer\x20executed!','hold','hold\x20fired:','webbar:hold','hold\x20executed!','webbar:unhold','unhold\x20executed!','calls','calls\x20fired:','VoiceChannels','UserId','transfer','transfer\x20fired:','transferNumber','webbar:transfer','transfer\x20executed!','path','lodash','../../mysqldb','util','bluebird','jayson/promise','../../config/logger','webbarapi','ioredis','redis','localhost','socket.io-emitter','validate','userId\x20is\x20required','callNumber\x20is\x20required','string','number','sessionId\x20is\x20required','transferNumber\x20is\x20required','info','stringify','emit','handleError:','error','stack','name','status','send','NotFound','request','code','message','result','catch','findOne','agent','then','all','filter','rows','length','\x20not\x20found!','originate','originate\x20fired:','body','json','userId'];(function(_0x46698a,_0x8de1e4){var _0x356db0=function(_0x19e83c){while(--_0x19e83c){_0x46698a['push'](_0x46698a['shift']());}};_0x356db0(++_0x8de1e4);}(_0x5db8,0xbb));var _0x85db=function(_0x323419,_0x2a6172){_0x323419=_0x323419-0x0;var _0x4c0be7=_0x5db8[_0x323419];return _0x4c0be7;};'use strict';var path=require(_0x85db('0x0'));var fs=require('fs');var _=require(_0x85db('0x1'));var db=require(_0x85db('0x2'))['db'];var config=require('../../config/environment');var util=require(_0x85db('0x3'));var BPromise=require(_0x85db('0x4'));var jayson=require(_0x85db('0x5'));var amiClient=jayson['client']['http']({'port':0x232a});var logger=require(_0x85db('0x6'))(_0x85db('0x7'));var Redis=require(_0x85db('0x8'));config[_0x85db('0x9')]=_['defaults'](config['redis'],{'host':_0x85db('0xa'),'port':0x18eb});var io=require(_0x85db('0xb'))(new Redis(config[_0x85db('0x9')]));var Schema=require(_0x85db('0xc'));var originateValidation=new Schema({'userId':{'type':'number','required':[!![],_0x85db('0xd')]},'callNumber':{'type':'string','required':[!![],_0x85db('0xe')]},'callerId':{'type':_0x85db('0xf')},'callbackUrl':{'type':_0x85db('0xf')}});var hangupValidation=new Schema({'userId':{'type':_0x85db('0x10'),'required':[!![],'userId\x20is\x20required']},'sessionId':{'type':'string','required':![]}});var answerValidation=new Schema({'userId':{'type':'number','required':[!![],_0x85db('0xd')]},'sessionId':{'type':_0x85db('0xf'),'required':![]}});var transferValidation=new Schema({'userId':{'type':'number','required':[!![],_0x85db('0xd')]},'sessionId':{'type':'string','required':[!![],_0x85db('0x11')]},'transferNumber':{'type':_0x85db('0xf'),'required':[!![],_0x85db('0x12')]}});var holdValidation=new Schema({'userId':{'type':_0x85db('0x10'),'required':[!![],_0x85db('0xd')]},'sessionId':{'type':_0x85db('0xf'),'required':![]}});var unholdValidation=new Schema({'userId':{'type':_0x85db('0x10'),'required':[!![],_0x85db('0xd')]},'sessionId':{'type':_0x85db('0xf'),'required':![]}});var callsValidation=new Schema({'userId':{'type':_0x85db('0x10'),'required':[!![],_0x85db('0xd')]}});var conferenceValidation=new Schema({'userId':{'type':_0x85db('0x10'),'required':[!![],_0x85db('0xd')]}});function emit(_0x5ccfef,_0x27bd65,_0x175622){logger[_0x85db('0x13')](_0x5ccfef,_0x27bd65,JSON[_0x85db('0x14')](_0x175622));io['to'](_0x5ccfef)[_0x85db('0x15')](_0x27bd65,_0x175622);}function handleError(_0x396afa){return function(_0x3209b3){console['log'](_0x85db('0x16'),_0x3209b3,_0x3209b3 instanceof RangeError);logger[_0x85db('0x17')](_0x3209b3[_0x85db('0x18')]);if(_0x3209b3 instanceof RangeError){if(_0x3209b3[_0x85db('0x19')]){delete _0x3209b3[_0x85db('0x19')];}_0x396afa[_0x85db('0x1a')](0x194)[_0x85db('0x1b')](_0x3209b3);}else{if(_0x3209b3[_0x85db('0x19')]){delete _0x3209b3[_0x85db('0x19')];}_0x396afa[_0x85db('0x1a')](0x1f4)['send'](_0x3209b3);}};}function checkError(){return function(_0x36a2af){if(!_0x36a2af){throw new RangeError(_0x85db('0x1c'));}return _0x36a2af;};}function respondWithRpcPromise(_0xc812d2,_0x470c81){return new BPromise(function(_0x44c122,_0x3842d7){var _0x3a7148=amiClient;return _0x3a7148[_0x85db('0x1d')](_0xc812d2,_0x470c81)['then'](function(_0xfffea2){if(_0xfffea2[_0x85db('0x17')]){if(_0xfffea2[_0x85db('0x17')][_0x85db('0x1e')]===0x1f4){return _0x3842d7(_0xfffea2[_0x85db('0x17')][_0x85db('0x1f')]);}return _0x44c122(_0xfffea2['error'][_0x85db('0x1f')]);}else{_0x44c122(_0xfffea2[_0x85db('0x20')]);}})[_0x85db('0x21')](function(_0x54ba03){_0x3842d7(_0x54ba03);});});}function getAgent(_0x5467ad){return db['User'][_0x85db('0x22')]({'where':{'id':_0x5467ad,'role':_0x85db('0x23')}})[_0x85db('0x24')](checkError());}function getAgentCheckSession(_0x51b748,_0x71c6f4){return new BPromise(function(_0xc2abb8,_0xdfff49){var _0x574bcc=respondWithRpcPromise('VoiceChannels');var _0x299013=getAgent(_0x51b748);Promise[_0x85db('0x25')]([_0x574bcc,_0x299013])[_0x85db('0x24')](function(_0x226540){var _0x397afc=_0x226540[0x0];var _0x16ee2a=_0x226540[0x1];var _0x8af4a4=_[_0x85db('0x26')](_0x397afc[_0x85db('0x27')],function(_0x1edc8d){return _0x1edc8d['UserId']==_0x16ee2a['id']&&_0x1edc8d['sessionId']==_0x71c6f4;});if(_0x8af4a4[_0x85db('0x28')]==0x1){_0xc2abb8(_0x16ee2a);}else{_0xdfff49(new RangeError('sessionId\x20'+_0x71c6f4+_0x85db('0x29')));}});});}exports[_0x85db('0x2a')]=function(_0x5abdb7,_0x1d15b0){logger[_0x85db('0x13')](_0x85db('0x2b'),_0x5abdb7[_0x85db('0x2c')]);var _0x515a06=originateValidation[_0x85db('0xc')](_0x5abdb7[_0x85db('0x2c')]);if(_0x515a06[_0x85db('0x28')]>0x0){return _0x1d15b0[_0x85db('0x1a')](0x190)[_0x85db('0x2d')](_0x515a06);}var _0x4808a4=_0x5abdb7[_0x85db('0x2c')][_0x85db('0x2e')];var _0x232175=_0x5abdb7[_0x85db('0x2c')]['callNumber'];var _0xfe3cd9=_0x5abdb7[_0x85db('0x2c')][_0x85db('0x2f')];var _0x536398=_0x5abdb7['body'][_0x85db('0x30')];return getAgent(_0x4808a4)[_0x85db('0x24')](function(_0x4980b7){logger[_0x85db('0x13')](_0x85db('0x31'),_0x4980b7[_0x85db('0x19')]);emit(util[_0x85db('0x32')](_0x85db('0x33'),_0x4980b7[_0x85db('0x19')]),_0x85db('0x34'),{'callNumber':_0x232175,'callerId':_0xfe3cd9,'callbackUrl':_0x536398});return _0x1d15b0[_0x85db('0x1a')](0xc8)[_0x85db('0x2d')]({'error':![],'message':_0x85db('0x35')});})[_0x85db('0x21')](handleError(_0x1d15b0));};exports[_0x85db('0x36')]=function(_0x54bc6f,_0x35e938){logger[_0x85db('0x13')](_0x85db('0x37'),_0x54bc6f[_0x85db('0x2c')]);var _0x57a77a=hangupValidation[_0x85db('0xc')](_0x54bc6f[_0x85db('0x2c')]);if(_0x57a77a[_0x85db('0x28')]>0x0){return _0x35e938[_0x85db('0x1a')](0x190)['json'](_0x57a77a);}var _0x5dfe91=_0x54bc6f['body']['userId'];var _0x4d5ff9=_0x54bc6f[_0x85db('0x2c')][_0x85db('0x38')];return getAgent(_0x5dfe91)[_0x85db('0x24')](function(_0x17f649){logger[_0x85db('0x13')]('entityFound:',_0x17f649['name']);emit(util[_0x85db('0x32')]('user:%s',_0x17f649[_0x85db('0x19')]),_0x85db('0x39'),{'sessionId':_0x4d5ff9});return _0x35e938['status'](0xc8)['json']({'error':![],'message':_0x85db('0x3a')});})[_0x85db('0x21')](handleError(_0x35e938));};exports[_0x85db('0x3b')]=function(_0x73eb93,_0x24f8dc){logger['info'](_0x85db('0x3c'),_0x73eb93[_0x85db('0x2c')]);var _0x115720=answerValidation['validate'](_0x73eb93['body']);if(_0x115720['length']>0x0){return _0x24f8dc[_0x85db('0x1a')](0x190)[_0x85db('0x2d')](_0x115720);}var _0x116cb3=_0x73eb93['body']['userId'];var _0x3e4dbc=_0x73eb93['body'][_0x85db('0x38')];return getAgent(_0x116cb3)[_0x85db('0x24')](function(_0x374515){logger['info'](_0x85db('0x31'),_0x374515[_0x85db('0x19')]);emit(util[_0x85db('0x32')](_0x85db('0x33'),_0x374515[_0x85db('0x19')]),_0x85db('0x3d'),{'sessionId':_0x3e4dbc});return _0x24f8dc[_0x85db('0x1a')](0xc8)[_0x85db('0x2d')]({'error':![],'message':_0x85db('0x3e')});})['catch'](handleError(_0x24f8dc));};exports[_0x85db('0x3f')]=function(_0x1b9ab8,_0x30c7a0){logger[_0x85db('0x13')](_0x85db('0x40'),_0x1b9ab8[_0x85db('0x2c')]);var _0x4acd1c=holdValidation[_0x85db('0xc')](_0x1b9ab8[_0x85db('0x2c')]);if(_0x4acd1c[_0x85db('0x28')]>0x0){return _0x30c7a0['status'](0x190)['json'](_0x4acd1c);}var _0x1350ae=_0x1b9ab8['body'][_0x85db('0x2e')];var _0x85181f=_0x1b9ab8[_0x85db('0x2c')][_0x85db('0x38')];return getAgent(_0x1350ae)[_0x85db('0x24')](function(_0x5e1455){logger['info'](_0x85db('0x31'),_0x5e1455[_0x85db('0x19')]);emit(util[_0x85db('0x32')](_0x85db('0x33'),_0x5e1455[_0x85db('0x19')]),_0x85db('0x41'),{'sessionId':_0x85181f});return _0x30c7a0[_0x85db('0x1a')](0xc8)[_0x85db('0x2d')]({'error':![],'message':_0x85db('0x42')});})[_0x85db('0x21')](handleError(_0x30c7a0));};exports['unhold']=function(_0x69c505,_0x2c4ae4){logger['info']('unhold\x20fired:',_0x69c505[_0x85db('0x2c')]);var _0x306be6=unholdValidation['validate'](_0x69c505['body']);if(_0x306be6[_0x85db('0x28')]>0x0){return _0x2c4ae4[_0x85db('0x1a')](0x190)['json'](_0x306be6);}var _0x101388=_0x69c505[_0x85db('0x2c')][_0x85db('0x2e')];var _0xd3cedb=_0x69c505[_0x85db('0x2c')][_0x85db('0x38')];return getAgent(_0x101388)[_0x85db('0x24')](function(_0x438ce7){logger[_0x85db('0x13')](_0x85db('0x31'),_0x438ce7['name']);emit(util['format'](_0x85db('0x33'),_0x438ce7[_0x85db('0x19')]),_0x85db('0x43'),{'sessionId':_0xd3cedb});return _0x2c4ae4[_0x85db('0x1a')](0xc8)[_0x85db('0x2d')]({'error':![],'message':_0x85db('0x44')});})[_0x85db('0x21')](handleError(_0x2c4ae4));};exports[_0x85db('0x45')]=function(_0x34b54e,_0x1e6f60){logger[_0x85db('0x13')](_0x85db('0x46'),_0x1e6f60[_0x85db('0x2c')]);var _0x425e61=callsValidation['validate'](_0x34b54e[_0x85db('0x2c')]);if(_0x425e61[_0x85db('0x28')]>0x0){return _0x1e6f60['status'](0x190)[_0x85db('0x2d')](_0x425e61);}var _0x40a009=_0x34b54e[_0x85db('0x2c')][_0x85db('0x2e')];var _0x992a63=respondWithRpcPromise(_0x85db('0x47'));var _0x43b095=getAgent(_0x40a009);return Promise['all']([_0x992a63,_0x43b095])[_0x85db('0x24')](function(_0x355be9){var _0x4d7e50=_0x355be9[0x0];var _0x5b38c6=_0x355be9[0x1];var _0x1e910e=_['filter'](_0x4d7e50[_0x85db('0x27')],function(_0x42ca02){return _0x42ca02[_0x85db('0x48')]==_0x5b38c6['id'];});return _0x1e6f60[_0x85db('0x1a')](0xc8)['json']({'count':_0x1e910e[_0x85db('0x28')],'rows':_0x1e910e});})['catch'](handleError(_0x1e6f60));};exports['conference']=function(_0x493ab3,_0x367e3e){logger[_0x85db('0x13')]('conference\x20fired:',_0x493ab3[_0x85db('0x2c')]);var _0x1249a6=conferenceValidation['validate'](_0x493ab3[_0x85db('0x2c')]);if(_0x1249a6[_0x85db('0x28')]>0x0){return _0x367e3e[_0x85db('0x1a')](0x190)[_0x85db('0x2d')](_0x1249a6);}var _0x42eddd=_0x493ab3[_0x85db('0x2c')]['userId'];return getAgent(_0x42eddd)[_0x85db('0x24')](function(_0x427250){logger[_0x85db('0x13')](_0x85db('0x31'),_0x427250[_0x85db('0x19')]);emit(util[_0x85db('0x32')](_0x85db('0x33'),_0x427250[_0x85db('0x19')]),'webbar:conference');return _0x367e3e['status'](0xc8)['json']({'error':![],'message':'conference\x20executed!'});})[_0x85db('0x21')](handleError(_0x367e3e));};exports[_0x85db('0x49')]=function(_0x88626d,_0x239027){logger[_0x85db('0x13')](_0x85db('0x4a'),_0x88626d['body']);var _0x367ebe=transferValidation[_0x85db('0xc')](_0x88626d[_0x85db('0x2c')]);if(_0x367ebe[_0x85db('0x28')]>0x0){return _0x239027['status'](0x190)[_0x85db('0x2d')](_0x367ebe);}var _0x3dc6f0=_0x88626d[_0x85db('0x2c')][_0x85db('0x2e')];var _0x4d042c=_0x88626d[_0x85db('0x2c')][_0x85db('0x38')];var _0x2af26e=_0x88626d[_0x85db('0x2c')][_0x85db('0x4b')];return getAgent(_0x3dc6f0)['then'](function(_0x4667a5){logger[_0x85db('0x13')](_0x85db('0x31'),_0x4667a5[_0x85db('0x19')]);emit(util[_0x85db('0x32')]('user:%s',_0x4667a5[_0x85db('0x19')]),_0x85db('0x4c'),{'sessionId':_0x4d042c,'transferNumber':_0x2af26e});return _0x239027[_0x85db('0x1a')](0xc8)[_0x85db('0x2d')]({'error':![],'message':_0x85db('0x4d')});})['catch'](handleError(_0x239027));};
\ No newline at end of file
index 3558f93..bad3589 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0x8e3f=['addDisposition','addAgents','addApplications','/:id/notify','/:id/send','send','put','update','destroy','delete','removeAnswers','removeAgents','exports','multer','util','path','express','Router','fs-extra','../../components/interaction/service','../../config/environment','get','isAuthenticated','index','describe','/:id','show','/:id/dispositions','getDispositions','/:id/canned_answers','getAnswers','/:id/users','getAgents','/:id/applications','post','create'];(function(_0x2296d7,_0xad404f){var _0x4dfad5=function(_0x47d9a3){while(--_0x47d9a3){_0x2296d7['push'](_0x2296d7['shift']());}};_0x4dfad5(++_0xad404f);}(_0x8e3f,0xc1));var _0xf8e3=function(_0x321bb2,_0x202794){_0x321bb2=_0x321bb2-0x0;var _0x9c12ed=_0x8e3f[_0x321bb2];return _0x9c12ed;};'use strict';var multer=require(_0xf8e3('0x0'));var util=require(_0xf8e3('0x1'));var path=require(_0xf8e3('0x2'));var timeout=require('connect-timeout');var express=require(_0xf8e3('0x3'));var router=express[_0xf8e3('0x4')]();var fs_extra=require(_0xf8e3('0x5'));var auth=require('../../components/auth/service');var interaction=require(_0xf8e3('0x6'));var config=require(_0xf8e3('0x7'));var controller=require('./whatsappAccount.controller');router[_0xf8e3('0x8')]('/',auth[_0xf8e3('0x9')](),controller[_0xf8e3('0xa')]);router[_0xf8e3('0x8')]('/describe',auth[_0xf8e3('0x9')](),controller[_0xf8e3('0xb')]);router[_0xf8e3('0x8')](_0xf8e3('0xc'),auth[_0xf8e3('0x9')](),controller[_0xf8e3('0xd')]);router[_0xf8e3('0x8')](_0xf8e3('0xe'),auth[_0xf8e3('0x9')](),controller[_0xf8e3('0xf')]);router[_0xf8e3('0x8')](_0xf8e3('0x10'),auth['isAuthenticated'](),controller[_0xf8e3('0x11')]);router[_0xf8e3('0x8')](_0xf8e3('0x12'),auth['isAuthenticated'](),controller[_0xf8e3('0x13')]);router[_0xf8e3('0x8')](_0xf8e3('0x14'),auth[_0xf8e3('0x9')](),controller['getApplications']);router[_0xf8e3('0x15')]('/',auth[_0xf8e3('0x9')](),controller[_0xf8e3('0x16')]);router['post'](_0xf8e3('0xe'),auth['isAuthenticated'](),controller[_0xf8e3('0x17')]);router[_0xf8e3('0x15')](_0xf8e3('0x10'),auth['isAuthenticated'](),controller['addAnswer']);router[_0xf8e3('0x15')](_0xf8e3('0x12'),auth[_0xf8e3('0x9')](),controller[_0xf8e3('0x18')]);router[_0xf8e3('0x15')](_0xf8e3('0x14'),auth[_0xf8e3('0x9')](),controller[_0xf8e3('0x19')]);router[_0xf8e3('0x15')](_0xf8e3('0x1a'),controller['notify']);router[_0xf8e3('0x15')](_0xf8e3('0x1b'),auth[_0xf8e3('0x9')](),controller[_0xf8e3('0x1c')]);router[_0xf8e3('0x1d')](_0xf8e3('0xc'),auth[_0xf8e3('0x9')](),controller[_0xf8e3('0x1e')]);router['delete'](_0xf8e3('0xc'),auth[_0xf8e3('0x9')](),controller[_0xf8e3('0x1f')]);router[_0xf8e3('0x20')]('/:id/dispositions',auth[_0xf8e3('0x9')](),controller['removeDispositions']);router[_0xf8e3('0x20')](_0xf8e3('0x10'),auth[_0xf8e3('0x9')](),controller[_0xf8e3('0x21')]);router[_0xf8e3('0x20')](_0xf8e3('0x12'),auth['isAuthenticated'](),controller[_0xf8e3('0x22')]);module[_0xf8e3('0x23')]=router;
\ No newline at end of file
index bfaf1a3..9527fac 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0x0c75=['TEXT','Account:\x20{{account.name}}<br/>{{#queue}}Queue:\x20{{queue.name}}<br/>{{/queue}}From\x20:\x20{{from}}','BOOLEAN','INTEGER','Status\x20to\x20put\x20when\x20mandatory\x20disposition\x20is\x20enabled','Enabled/disables\x20mandatory\x20dispo\x20on\x20a\x20queue','setDataValue','sequelize','randomstring','exports','STRING','generate','ENUM','twilio','sinch'];(function(_0x5b6cf1,_0x32fdcd){var _0x46278c=function(_0x53fd9b){while(--_0x53fd9b){_0x5b6cf1['push'](_0x5b6cf1['shift']());}};_0x46278c(++_0x32fdcd);}(_0x0c75,0x124));var _0x50c7=function(_0x2641f9,_0x26715f){_0x2641f9=_0x2641f9-0x0;var _0x585741=_0x0c75[_0x2641f9];return _0x585741;};'use strict';var Sequelize=require(_0x50c7('0x0'));var rs=require(_0x50c7('0x1'));module[_0x50c7('0x2')]={'name':{'type':Sequelize[_0x50c7('0x3')],'unique':'name','allowNull':![]},'key':{'type':Sequelize[_0x50c7('0x3')],'allowNull':![]},'remote':{'type':Sequelize[_0x50c7('0x3')],'allowNull':![]},'token':{'type':Sequelize['STRING'],'defaultValue':function(){return rs[_0x50c7('0x4')]();}},'phone':{'type':Sequelize[_0x50c7('0x3')]},'type':{'type':Sequelize[_0x50c7('0x5')](_0x50c7('0x6'),_0x50c7('0x7'))},'accountSid':{'type':Sequelize[_0x50c7('0x3')]},'baseUrl':{'type':Sequelize[_0x50c7('0x3')]},'authToken':{'type':Sequelize[_0x50c7('0x3')]},'notificationTemplate':{'type':Sequelize[_0x50c7('0x8')],'defaultValue':function(){return _0x50c7('0x9');}},'notificationSound':{'type':Sequelize[_0x50c7('0xa')],'defaultValue':![]},'notificationShake':{'type':Sequelize[_0x50c7('0xa')],'defaultValue':![]},'waitForTheAssignedAgent':{'type':Sequelize[_0x50c7('0xb')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0xa},'queueTransfer':{'type':Sequelize[_0x50c7('0xa')],'defaultValue':![]},'queueTransferTimeout':{'type':Sequelize[_0x50c7('0xb')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c},'agentTransfer':{'type':Sequelize[_0x50c7('0xa')],'defaultValue':![]},'agentTransferTimeout':{'type':Sequelize[_0x50c7('0xb')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c},'mandatoryDispositionPauseId':{'type':Sequelize['INTEGER'],'comment':_0x50c7('0xc')},'mandatoryDisposition':{'type':Sequelize['BOOLEAN'],'defaultValue':![],'comment':_0x50c7('0xd'),'set':function(_0x3253dd){if(!_0x3253dd){this[_0x50c7('0xe')]('mandatoryDispositionPauseId',null);}this['setDataValue']('mandatoryDisposition',_0x3253dd);}},'description':{'type':Sequelize[_0x50c7('0x3')]}};
\ No newline at end of file
index ad19aae..43b0dea 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0xc892=['Disposition','getDispositions','findOne','length','removeDispositions','ids','addAnswer','getAnswers','CannedAnswer','removeAnswers','addAgents','omit','spread','emit','userWhatsappAccount:save','removeAgents','isArray','userWhatsappAccount:remove','User','getAgents','addApplications','sequelize','transaction','ISOLATION_LEVELS','READ_COMMITTED','WhatsappApplication','bulkCreate','findAndCountAll','priority','finally','getApplications','Applications','account','type','statuses','state','read','WhatsappMessage','message_id','applications','orderBy','asc','CmContact','Sequelize','ValidationError','difference','createdAt','updatedAt','CompanyId','ListId','twilio','from','From','replace','whatsapp:','Body','messageId','MessageSid','sinch','notifications','isNil','from\x20is\x20mandatory','body\x20is\x20mandatory\x20and\x20not\x20empty','mapKey','includes','mapKey\x20invalid,\x20please\x20use\x20one\x20of\x20these:\x20','CmList','Contacts','list','contact','WhatsappInteraction','interaction','created','push','close','*,*,*,*','ContactId','AttachmentId','UserId','unshift','agent','waitForTheAssignedAgent','Start','receiveMessage','entity\x20found','WhatsappAccount,\x20%s,\x20%s,\x20%s,\x20%s','Content-Type','text/xml','List','DESC','Messages','dataValues','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','path','to-csv','fs-extra','lodash','squel','crypto','jsforce','querystring','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','defaults','redis','localhost','socket.io-emitter','register','jayson/promise','request','info','WhatsappAccount,\x20%s,\x20%s','WhatsappAccount,\x20%s,\x20%s,\x20%s','request\x20sent','error','code','message','result','catch','sendStatus','status','end','json','limit','undefined','count','offset','set','apply','reject','save','update','then','destroy','WhatsappAccounts','UserProfileResource','stack','name','send','index','Pause','mandatoryDispositionPause','map','WhatsappAccount','rawAttributes','fieldName','key','model','query','filters','intersection','attributes','hasOwnProperty','nolimit','order','sort','where','pick','filter','merge','VIRTUAL','options','includeAll','include','findAll','rows','show','params','keys','fields','find','create','body','user','get','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','userProfileId','autoAssociation','describe','WhatsappAccountId'];(function(_0x528e39,_0x4da628){var _0x30430f=function(_0x8f3afa){while(--_0x8f3afa){_0x528e39['push'](_0x528e39['shift']());}};_0x30430f(++_0x4da628);}(_0xc892,0x11f));var _0x2c89=function(_0x2f6928,_0x1aa4cd){_0x2f6928=_0x2f6928-0x0;var _0x102350=_0xc892[_0x2f6928];return _0x102350;};'use strict';var emlformat=require(_0x2c89('0x0'));var rimraf=require(_0x2c89('0x1'));var zipdir=require(_0x2c89('0x2'));var jsonpatch=require(_0x2c89('0x3'));var rp=require(_0x2c89('0x4'));var moment=require(_0x2c89('0x5'));var BPromise=require(_0x2c89('0x6'));var Mustache=require('mustache');var util=require('util');var path=require(_0x2c89('0x7'));var sox=require('sox');var csv=require(_0x2c89('0x8'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x2c89('0x9'));var _=require(_0x2c89('0xa'));var squel=require(_0x2c89('0xb'));var crypto=require(_0x2c89('0xc'));var jsforce=require(_0x2c89('0xd'));var deskjs=require('desk.js');var toCsv=require(_0x2c89('0x8'));var querystring=require(_0x2c89('0xe'));var Papa=require('papaparse');var Redis=require(_0x2c89('0xf'));var authService=require('../../components/auth/service');var qs=require(_0x2c89('0x10'));var as=require(_0x2c89('0x11'));var hardwareService=require(_0x2c89('0x12'));var logger=require(_0x2c89('0x13'))(_0x2c89('0x14'));var utils=require(_0x2c89('0x15'));var config=require(_0x2c89('0x16'));var licenseUtil=require(_0x2c89('0x17'));var db=require(_0x2c89('0x18'))['db'];config['redis']=_[_0x2c89('0x19')](config[_0x2c89('0x1a')],{'host':_0x2c89('0x1b'),'port':0x18eb});var socket=require(_0x2c89('0x1c'))(new Redis(config[_0x2c89('0x1a')]));require('./whatsappAccount.socket')[_0x2c89('0x1d')](socket);var jayson=require(_0x2c89('0x1e'));var client=jayson['client']['http']({'port':0x232c});function respondWithRpcPromise(_0x100ba2,_0x59bc82,_0x592cf6,_0x4cc8b0){return new BPromise(function(_0x1d0d14,_0xcf6631){var _0x3b1648=_0x4cc8b0||client;return _0x3b1648[_0x2c89('0x1f')](_0x100ba2,_0x592cf6)['then'](function(_0x292f06){logger[_0x2c89('0x20')](_0x2c89('0x21'),_0x59bc82,'request\x20sent');logger['debug'](_0x2c89('0x22'),_0x59bc82,_0x2c89('0x23'),JSON['stringify'](_0x292f06));if(_0x292f06[_0x2c89('0x24')]){if(_0x292f06[_0x2c89('0x24')][_0x2c89('0x25')]===0x1f4){logger[_0x2c89('0x24')](_0x2c89('0x21'),_0x59bc82,_0x292f06[_0x2c89('0x24')][_0x2c89('0x26')]);return _0xcf6631(_0x292f06[_0x2c89('0x24')][_0x2c89('0x26')]);}logger[_0x2c89('0x24')](_0x2c89('0x21'),_0x59bc82,_0x292f06['error'][_0x2c89('0x26')]);return _0x1d0d14(_0x292f06[_0x2c89('0x24')]['message']);}else{logger[_0x2c89('0x20')](_0x2c89('0x21'),_0x59bc82,_0x2c89('0x23'));_0x1d0d14(_0x292f06[_0x2c89('0x27')]['message']);}})[_0x2c89('0x28')](function(_0x5a963a){logger[_0x2c89('0x24')]('WhatsappAccount,\x20%s,\x20%s',_0x59bc82,_0x5a963a);_0xcf6631(_0x5a963a);});});}function respondWithStatusCode(_0x2270dd,_0x1f7df2){_0x1f7df2=_0x1f7df2||0xcc;return function(_0xc5764b){if(_0xc5764b){return _0x2270dd[_0x2c89('0x29')](_0x1f7df2);}return _0x2270dd[_0x2c89('0x2a')](_0x1f7df2)[_0x2c89('0x2b')]();};}function respondWithResult(_0x5e328e,_0x3b88ba){_0x3b88ba=_0x3b88ba||0xc8;return function(_0xb8c01c){if(_0xb8c01c){return _0x5e328e[_0x2c89('0x2a')](_0x3b88ba)[_0x2c89('0x2c')](_0xb8c01c);}};}function respondWithFilteredResult(_0x3e8e58,_0x1d6a7f){return function(_0x1c39d2){if(_0x1c39d2){var _0x17345e=typeof _0x1d6a7f['offset']==='undefined'&&typeof _0x1d6a7f[_0x2c89('0x2d')]===_0x2c89('0x2e');var _0x51226c=_0x1c39d2[_0x2c89('0x2f')];var _0x5c2b90=_0x17345e?0x0:_0x1d6a7f['offset'];var _0x1964d5=_0x17345e?_0x1c39d2[_0x2c89('0x2f')]:_0x1d6a7f[_0x2c89('0x30')]+_0x1d6a7f[_0x2c89('0x2d')];var _0x46366c;if(_0x1964d5>=_0x51226c){_0x1964d5=_0x51226c;_0x46366c=0xc8;}else{_0x46366c=0xce;}_0x3e8e58['status'](_0x46366c);return _0x3e8e58[_0x2c89('0x31')]('Content-Range',_0x5c2b90+'-'+_0x1964d5+'/'+_0x51226c)[_0x2c89('0x2c')](_0x1c39d2);}return null;};}function patchUpdates(_0x4c6a11){return function(_0x446c2d){try{jsonpatch[_0x2c89('0x32')](_0x446c2d,_0x4c6a11,!![]);}catch(_0x2164fa){return BPromise[_0x2c89('0x33')](_0x2164fa);}return _0x446c2d[_0x2c89('0x34')]();};}function saveUpdates(_0x1fcb3b,_0x2be433){return function(_0x2ebb31){if(_0x2ebb31){return _0x2ebb31[_0x2c89('0x35')](_0x1fcb3b)[_0x2c89('0x36')](function(_0xb6f706){return _0xb6f706;});}return null;};}function removeEntity(_0x5310eb,_0x1c35b6){return function(_0x41552c){if(_0x41552c){return _0x41552c[_0x2c89('0x37')]()['then'](function(){var _0x367a9f=_0x41552c['get']({'plain':!![]});var _0x4619d2=_0x2c89('0x38');return db[_0x2c89('0x39')][_0x2c89('0x37')]({'where':{'type':_0x4619d2,'resourceId':_0x367a9f['id']}})[_0x2c89('0x36')](function(){return _0x41552c;});})[_0x2c89('0x36')](function(){_0x5310eb[_0x2c89('0x2a')](0xcc)[_0x2c89('0x2b')]();});}};}function handleEntityNotFound(_0x2228d2,_0x3fd3dd){return function(_0x22c970){if(!_0x22c970){_0x2228d2[_0x2c89('0x29')](0x194);}return _0x22c970;};}function handleError(_0x18b7e8,_0x6beb5f){_0x6beb5f=_0x6beb5f||0x1f4;return function(_0x1ff93e){logger[_0x2c89('0x24')](_0x1ff93e[_0x2c89('0x3a')]);if(_0x1ff93e[_0x2c89('0x3b')]){delete _0x1ff93e['name'];}_0x18b7e8[_0x2c89('0x2a')](_0x6beb5f)[_0x2c89('0x3c')](_0x1ff93e);};}exports[_0x2c89('0x3d')]=function(_0x2c7367,_0x59d55a){var _0x22ecdd={'include':[{'model':db[_0x2c89('0x3e')],'as':_0x2c89('0x3f')}]},_0x1ae22e={},_0x23b3ce={'count':0x0,'rows':[]};var _0x1397e7=_[_0x2c89('0x40')](db[_0x2c89('0x41')][_0x2c89('0x42')],function(_0x349cc8){return{'name':_0x349cc8[_0x2c89('0x43')],'type':_0x349cc8['type'][_0x2c89('0x44')]};});_0x1ae22e[_0x2c89('0x45')]=_[_0x2c89('0x40')](_0x1397e7,_0x2c89('0x3b'));_0x1ae22e[_0x2c89('0x46')]=_['keys'](_0x2c7367[_0x2c89('0x46')]);_0x1ae22e[_0x2c89('0x47')]=_[_0x2c89('0x48')](_0x1ae22e[_0x2c89('0x45')],_0x1ae22e[_0x2c89('0x46')]);_0x22ecdd[_0x2c89('0x49')]=_[_0x2c89('0x48')](_0x1ae22e[_0x2c89('0x45')],qs['fields'](_0x2c7367[_0x2c89('0x46')]['fields']));_0x22ecdd[_0x2c89('0x49')]=_0x22ecdd['attributes']['length']?_0x22ecdd[_0x2c89('0x49')]:_0x1ae22e[_0x2c89('0x45')];if(!_0x2c7367[_0x2c89('0x46')][_0x2c89('0x4a')](_0x2c89('0x4b'))){_0x22ecdd['limit']=qs[_0x2c89('0x2d')](_0x2c7367['query']['limit']);_0x22ecdd['offset']=qs[_0x2c89('0x30')](_0x2c7367[_0x2c89('0x46')][_0x2c89('0x30')]);}_0x22ecdd[_0x2c89('0x4c')]=qs[_0x2c89('0x4d')](_0x2c7367['query'][_0x2c89('0x4d')]);_0x22ecdd[_0x2c89('0x4e')]=qs[_0x2c89('0x47')](_[_0x2c89('0x4f')](_0x2c7367[_0x2c89('0x46')],_0x1ae22e[_0x2c89('0x47')]),_0x1397e7);if(_0x2c7367[_0x2c89('0x46')][_0x2c89('0x50')]){_0x22ecdd[_0x2c89('0x4e')]=_[_0x2c89('0x51')](_0x22ecdd[_0x2c89('0x4e')],{'$or':_[_0x2c89('0x40')](_0x1397e7,function(_0x18cae1){if(_0x18cae1['type']!==_0x2c89('0x52')){var _0x342988={};_0x342988[_0x18cae1[_0x2c89('0x3b')]]={'$like':'%'+_0x2c7367[_0x2c89('0x46')]['filter']+'%'};return _0x342988;}})});}_0x22ecdd=_[_0x2c89('0x51')]({},_0x22ecdd,_0x2c7367[_0x2c89('0x53')]);var _0x517f61={'where':_0x22ecdd[_0x2c89('0x4e')]};return db['WhatsappAccount'][_0x2c89('0x2f')](_0x517f61)['then'](function(_0x5db25d){_0x23b3ce[_0x2c89('0x2f')]=_0x5db25d;if(_0x2c7367[_0x2c89('0x46')][_0x2c89('0x54')]){_0x22ecdd[_0x2c89('0x55')]=[{'all':!![]}];}return db[_0x2c89('0x41')][_0x2c89('0x56')](_0x22ecdd);})[_0x2c89('0x36')](function(_0x5b0f10){_0x23b3ce[_0x2c89('0x57')]=_0x5b0f10;return _0x23b3ce;})[_0x2c89('0x36')](respondWithFilteredResult(_0x59d55a,_0x22ecdd))['catch'](handleError(_0x59d55a,null));};exports[_0x2c89('0x58')]=function(_0x3970ee,_0x3b3287){var _0x494470={'raw':![],'where':{'id':_0x3970ee[_0x2c89('0x59')]['id']},'include':[{'model':db[_0x2c89('0x3e')],'as':_0x2c89('0x3f')}]},_0x2a29c6={};_0x2a29c6[_0x2c89('0x45')]=_[_0x2c89('0x5a')](db[_0x2c89('0x41')]['rawAttributes']);_0x2a29c6[_0x2c89('0x46')]=_[_0x2c89('0x5a')](_0x3970ee[_0x2c89('0x46')]);_0x2a29c6[_0x2c89('0x47')]=_[_0x2c89('0x48')](_0x2a29c6[_0x2c89('0x45')],_0x2a29c6[_0x2c89('0x46')]);_0x494470[_0x2c89('0x49')]=_['intersection'](_0x2a29c6[_0x2c89('0x45')],qs[_0x2c89('0x5b')](_0x3970ee['query'][_0x2c89('0x5b')]));_0x494470[_0x2c89('0x49')]=_0x494470[_0x2c89('0x49')]['length']?_0x494470[_0x2c89('0x49')]:_0x2a29c6[_0x2c89('0x45')];if(_0x3970ee[_0x2c89('0x46')][_0x2c89('0x54')]){_0x494470['include']=[{'all':!![]}];}_0x494470=_[_0x2c89('0x51')]({},_0x494470,_0x3970ee['options']);return db['WhatsappAccount'][_0x2c89('0x5c')](_0x494470)['then'](handleEntityNotFound(_0x3b3287,null))[_0x2c89('0x36')](respondWithResult(_0x3b3287,null))[_0x2c89('0x28')](handleError(_0x3b3287,null));};exports[_0x2c89('0x5d')]=function(_0x2a2451,_0x3c14f7){return db[_0x2c89('0x41')][_0x2c89('0x5d')](_0x2a2451[_0x2c89('0x5e')],{})[_0x2c89('0x36')](function(_0x57e4ac){var _0x5defa1=_0x2a2451[_0x2c89('0x5f')][_0x2c89('0x60')]({'plain':!![]});if(!_0x5defa1)throw new Error(_0x2c89('0x61'));if(_0x5defa1[_0x2c89('0x62')]===_0x2c89('0x5f')){var _0x39e60a=_0x57e4ac[_0x2c89('0x60')]({'plain':!![]});var _0x11d0e3=_0x2c89('0x38');return db['UserProfileSection'][_0x2c89('0x5c')]({'where':{'name':_0x11d0e3,'userProfileId':_0x5defa1[_0x2c89('0x63')]},'raw':!![]})['then'](function(_0x9e84e2){if(_0x9e84e2&&_0x9e84e2[_0x2c89('0x64')]===0x0){return db[_0x2c89('0x39')][_0x2c89('0x5d')]({'name':_0x39e60a[_0x2c89('0x3b')],'resourceId':_0x39e60a['id'],'type':_0x9e84e2['name'],'sectionId':_0x9e84e2['id']},{})[_0x2c89('0x36')](function(){return _0x57e4ac;});}else{return _0x57e4ac;}})['catch'](function(_0x11c99f){logger[_0x2c89('0x24')]('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x11c99f);throw _0x11c99f;});}return _0x57e4ac;})[_0x2c89('0x36')](respondWithResult(_0x3c14f7,0xc9))[_0x2c89('0x28')](handleError(_0x3c14f7,null));};exports[_0x2c89('0x35')]=function(_0x1f7718,_0x28e3aa){if(_0x1f7718['body']['id']){delete _0x1f7718[_0x2c89('0x5e')]['id'];}return db[_0x2c89('0x41')]['find']({'where':{'id':_0x1f7718[_0x2c89('0x59')]['id']},'include':[{'model':db[_0x2c89('0x3e')],'as':_0x2c89('0x3f')}]})[_0x2c89('0x36')](handleEntityNotFound(_0x28e3aa,null))[_0x2c89('0x36')](saveUpdates(_0x1f7718[_0x2c89('0x5e')],null))[_0x2c89('0x36')](respondWithResult(_0x28e3aa,null))[_0x2c89('0x28')](handleError(_0x28e3aa,null));};exports[_0x2c89('0x37')]=function(_0x219c27,_0x67788b){return db[_0x2c89('0x41')]['find']({'where':{'id':_0x219c27[_0x2c89('0x59')]['id']}})[_0x2c89('0x36')](handleEntityNotFound(_0x67788b,null))[_0x2c89('0x36')](removeEntity(_0x67788b,null))[_0x2c89('0x28')](handleError(_0x67788b,null));};exports[_0x2c89('0x65')]=function(_0x3576ee,_0x4ea053){return db[_0x2c89('0x41')][_0x2c89('0x65')]()[_0x2c89('0x36')](respondWithResult(_0x4ea053,null))[_0x2c89('0x28')](handleError(_0x4ea053,null));};exports['addDisposition']=function(_0x4707b3,_0x294398,_0x45fa51){if(_0x4707b3['body']['id']){delete _0x4707b3[_0x2c89('0x5e')]['id'];}return db[_0x2c89('0x41')][_0x2c89('0x5c')]({'where':{'id':_0x4707b3[_0x2c89('0x59')]['id']}})[_0x2c89('0x36')](handleEntityNotFound(_0x294398,null))[_0x2c89('0x36')](function(_0x28dd8f){if(_0x28dd8f){_0x4707b3[_0x2c89('0x5e')][_0x2c89('0x66')]=_0x28dd8f['id'];return db[_0x2c89('0x67')][_0x2c89('0x5d')](_0x4707b3['body']);}})[_0x2c89('0x36')](respondWithResult(_0x294398,null))[_0x2c89('0x28')](handleError(_0x294398,null));};exports[_0x2c89('0x68')]=function(_0x184355,_0x2b42f8,_0x5588cd){var _0xa4ec36={'raw':![],'where':{}};var _0x371195={};var _0x44ff3f={'count':0x0,'rows':[]};return db[_0x2c89('0x41')][_0x2c89('0x69')]({'where':{'id':_0x184355[_0x2c89('0x59')]['id']}})[_0x2c89('0x36')](handleEntityNotFound(_0x2b42f8,null))[_0x2c89('0x36')](function(_0x3969c3){if(_0x3969c3){_0x371195[_0x2c89('0x45')]=_['keys'](db[_0x2c89('0x67')][_0x2c89('0x42')]);_0x371195[_0x2c89('0x46')]=_[_0x2c89('0x5a')](_0x184355[_0x2c89('0x46')]);_0x371195[_0x2c89('0x47')]=_['intersection'](_0x371195['model'],_0x371195[_0x2c89('0x46')]);_0xa4ec36[_0x2c89('0x49')]=_[_0x2c89('0x48')](_0x371195[_0x2c89('0x45')],qs[_0x2c89('0x5b')](_0x184355[_0x2c89('0x46')][_0x2c89('0x5b')]));_0xa4ec36[_0x2c89('0x49')]=_0xa4ec36[_0x2c89('0x49')][_0x2c89('0x6a')]?_0xa4ec36[_0x2c89('0x49')]:_0x371195[_0x2c89('0x45')];if(!_0x184355['query'][_0x2c89('0x4a')](_0x2c89('0x4b'))){_0xa4ec36[_0x2c89('0x2d')]=qs['limit'](_0x184355[_0x2c89('0x46')][_0x2c89('0x2d')]);_0xa4ec36[_0x2c89('0x30')]=qs[_0x2c89('0x30')](_0x184355['query'][_0x2c89('0x30')]);}_0xa4ec36[_0x2c89('0x4c')]=qs[_0x2c89('0x4d')](_0x184355['query'][_0x2c89('0x4d')]);_0xa4ec36[_0x2c89('0x4e')]=qs[_0x2c89('0x47')](_[_0x2c89('0x4f')](_0x184355[_0x2c89('0x46')],_0x371195[_0x2c89('0x47')]));_0xa4ec36[_0x2c89('0x4e')]['WhatsappAccountId']=_0x3969c3['id'];if(_0x184355[_0x2c89('0x46')]['filter']){_0xa4ec36[_0x2c89('0x4e')]=_[_0x2c89('0x51')](_0xa4ec36[_0x2c89('0x4e')],{'$or':_[_0x2c89('0x40')](_0xa4ec36[_0x2c89('0x49')],function(_0x152a4f){var _0x26814c={};_0x26814c[_0x152a4f]={'$like':'%'+_0x184355['query'][_0x2c89('0x50')]+'%'};return _0x26814c;})});}_0xa4ec36=_[_0x2c89('0x51')]({},_0xa4ec36,_0x184355[_0x2c89('0x53')]);return db['Disposition'][_0x2c89('0x2f')]({'where':_0xa4ec36[_0x2c89('0x4e')]})[_0x2c89('0x36')](function(_0x252466){_0x44ff3f[_0x2c89('0x2f')]=_0x252466;if(_0x184355[_0x2c89('0x46')][_0x2c89('0x54')]){_0xa4ec36[_0x2c89('0x55')]=[{'all':!![]}];}return db[_0x2c89('0x67')][_0x2c89('0x56')](_0xa4ec36);})['then'](function(_0x47acdc){_0x44ff3f[_0x2c89('0x57')]=_0x47acdc;return _0x44ff3f;});}})[_0x2c89('0x36')](respondWithFilteredResult(_0x2b42f8,_0xa4ec36))[_0x2c89('0x28')](handleError(_0x2b42f8,null));};exports[_0x2c89('0x6b')]=function(_0x3d26d1,_0x1ed4c3,_0x5d10d2){return db[_0x2c89('0x41')][_0x2c89('0x5c')]({'where':{'id':_0x3d26d1[_0x2c89('0x59')]['id']}})[_0x2c89('0x36')](handleEntityNotFound(_0x1ed4c3,null))['then'](function(_0x26ff79){if(_0x26ff79){return _0x26ff79['removeDispositions'](_0x3d26d1[_0x2c89('0x46')][_0x2c89('0x6c')]);}})['then'](respondWithStatusCode(_0x1ed4c3,null))[_0x2c89('0x28')](handleError(_0x1ed4c3,null));};exports[_0x2c89('0x6d')]=function(_0x54ad64,_0x5d8901,_0x22c388){if(_0x54ad64[_0x2c89('0x5e')]['id']){delete _0x54ad64[_0x2c89('0x5e')]['id'];}return db[_0x2c89('0x41')]['find']({'where':{'id':_0x54ad64[_0x2c89('0x59')]['id']}})[_0x2c89('0x36')](handleEntityNotFound(_0x5d8901,null))[_0x2c89('0x36')](function(_0x10177e){if(_0x10177e){_0x54ad64[_0x2c89('0x5e')][_0x2c89('0x66')]=_0x10177e['id'];return db['CannedAnswer'][_0x2c89('0x5d')](_0x54ad64[_0x2c89('0x5e')]);}})[_0x2c89('0x36')](respondWithResult(_0x5d8901,null))[_0x2c89('0x28')](handleError(_0x5d8901,null));};exports[_0x2c89('0x6e')]=function(_0x4ca702,_0x524ee7,_0x2e9866){var _0x21a5de={'raw':![],'where':{}};var _0x52e723={};var _0x2acaa9={'count':0x0,'rows':[]};return db[_0x2c89('0x41')][_0x2c89('0x69')]({'where':{'id':_0x4ca702[_0x2c89('0x59')]['id']}})[_0x2c89('0x36')](handleEntityNotFound(_0x524ee7,null))[_0x2c89('0x36')](function(_0x3b9976){if(_0x3b9976){_0x52e723[_0x2c89('0x45')]=_[_0x2c89('0x5a')](db[_0x2c89('0x6f')]['rawAttributes']);_0x52e723[_0x2c89('0x46')]=_[_0x2c89('0x5a')](_0x4ca702[_0x2c89('0x46')]);_0x52e723[_0x2c89('0x47')]=_['intersection'](_0x52e723[_0x2c89('0x45')],_0x52e723[_0x2c89('0x46')]);_0x21a5de['attributes']=_[_0x2c89('0x48')](_0x52e723[_0x2c89('0x45')],qs[_0x2c89('0x5b')](_0x4ca702[_0x2c89('0x46')]['fields']));_0x21a5de[_0x2c89('0x49')]=_0x21a5de['attributes'][_0x2c89('0x6a')]?_0x21a5de[_0x2c89('0x49')]:_0x52e723[_0x2c89('0x45')];if(!_0x4ca702[_0x2c89('0x46')][_0x2c89('0x4a')](_0x2c89('0x4b'))){_0x21a5de[_0x2c89('0x2d')]=qs['limit'](_0x4ca702[_0x2c89('0x46')]['limit']);_0x21a5de[_0x2c89('0x30')]=qs[_0x2c89('0x30')](_0x4ca702[_0x2c89('0x46')][_0x2c89('0x30')]);}_0x21a5de['order']=qs['sort'](_0x4ca702[_0x2c89('0x46')][_0x2c89('0x4d')]);_0x21a5de[_0x2c89('0x4e')]=qs[_0x2c89('0x47')](_[_0x2c89('0x4f')](_0x4ca702[_0x2c89('0x46')],_0x52e723[_0x2c89('0x47')]));_0x21a5de[_0x2c89('0x4e')][_0x2c89('0x66')]=_0x3b9976['id'];if(_0x4ca702[_0x2c89('0x46')][_0x2c89('0x50')]){_0x21a5de[_0x2c89('0x4e')]=_[_0x2c89('0x51')](_0x21a5de['where'],{'$or':_[_0x2c89('0x40')](_0x21a5de[_0x2c89('0x49')],function(_0x1d49f0){var _0x50d891={};_0x50d891[_0x1d49f0]={'$like':'%'+_0x4ca702[_0x2c89('0x46')][_0x2c89('0x50')]+'%'};return _0x50d891;})});}_0x21a5de=_[_0x2c89('0x51')]({},_0x21a5de,_0x4ca702[_0x2c89('0x53')]);return db[_0x2c89('0x6f')][_0x2c89('0x2f')]({'where':_0x21a5de[_0x2c89('0x4e')]})[_0x2c89('0x36')](function(_0x50b93f){_0x2acaa9[_0x2c89('0x2f')]=_0x50b93f;if(_0x4ca702[_0x2c89('0x46')][_0x2c89('0x54')]){_0x21a5de[_0x2c89('0x55')]=[{'all':!![]}];}return db[_0x2c89('0x6f')][_0x2c89('0x56')](_0x21a5de);})['then'](function(_0x7771fc){_0x2acaa9[_0x2c89('0x57')]=_0x7771fc;return _0x2acaa9;});}})[_0x2c89('0x36')](respondWithFilteredResult(_0x524ee7,_0x21a5de))[_0x2c89('0x28')](handleError(_0x524ee7,null));};exports[_0x2c89('0x70')]=function(_0x371589,_0x2868af,_0x5f42f7){return db['WhatsappAccount'][_0x2c89('0x5c')]({'where':{'id':_0x371589[_0x2c89('0x59')]['id']}})['then'](handleEntityNotFound(_0x2868af,null))[_0x2c89('0x36')](function(_0x5d8371){if(_0x5d8371){return _0x5d8371[_0x2c89('0x70')](_0x371589['query'][_0x2c89('0x6c')]);}})['then'](respondWithStatusCode(_0x2868af,null))['catch'](handleError(_0x2868af,null));};exports[_0x2c89('0x71')]=function(_0x476360,_0x34a4b6,_0x2ad611){return db[_0x2c89('0x41')][_0x2c89('0x5c')]({'where':{'id':_0x476360[_0x2c89('0x59')]['id']}})[_0x2c89('0x36')](handleEntityNotFound(_0x34a4b6,null))[_0x2c89('0x36')](function(_0x481e31){if(_0x481e31){return _0x481e31[_0x2c89('0x71')](_0x476360[_0x2c89('0x5e')][_0x2c89('0x6c')],_[_0x2c89('0x72')](_0x476360[_0x2c89('0x5e')],[_0x2c89('0x6c'),'id'])||{})[_0x2c89('0x73')](function(_0x24ff7e){for(var _0x1ed117=0x0;_0x1ed117<_0x476360[_0x2c89('0x5e')][_0x2c89('0x6c')][_0x2c89('0x6a')];_0x1ed117+=0x1){socket[_0x2c89('0x74')](_0x2c89('0x75'),{'UserId':Number(_0x476360[_0x2c89('0x5e')][_0x2c89('0x6c')][_0x1ed117]),'WhatsappAccountId':Number(_0x476360[_0x2c89('0x59')]['id'])});}return _0x24ff7e;});}})[_0x2c89('0x36')](respondWithResult(_0x34a4b6,null))[_0x2c89('0x28')](handleError(_0x34a4b6,null));};exports['removeAgents']=function(_0x177c0c,_0x2972fc,_0x10dc98){return db[_0x2c89('0x41')]['find']({'where':{'id':_0x177c0c[_0x2c89('0x59')]['id']}})[_0x2c89('0x36')](handleEntityNotFound(_0x2972fc,null))[_0x2c89('0x36')](function(_0xe394d4){if(_0xe394d4){return _0xe394d4[_0x2c89('0x76')](_0x177c0c[_0x2c89('0x46')][_0x2c89('0x6c')])[_0x2c89('0x36')](function(){if(_[_0x2c89('0x77')](_0x177c0c[_0x2c89('0x46')][_0x2c89('0x6c')])){for(var _0x7f3dd0=0x0;_0x7f3dd0<_0x177c0c[_0x2c89('0x46')][_0x2c89('0x6c')]['length'];_0x7f3dd0+=0x1){socket[_0x2c89('0x74')](_0x2c89('0x78'),{'UserId':Number(_0x177c0c['query']['ids'][_0x7f3dd0]),'WhatsappAccountId':Number(_0x177c0c['params']['id'])});}}else{socket[_0x2c89('0x74')](_0x2c89('0x78'),{'UserId':Number(_0x177c0c['query'][_0x2c89('0x6c')]),'WhatsappAccountId':Number(_0x177c0c[_0x2c89('0x59')]['id'])});}});}})[_0x2c89('0x36')](respondWithStatusCode(_0x2972fc,null))[_0x2c89('0x28')](handleError(_0x2972fc,null));};exports['getAgents']=function(_0x461a36,_0x1402fd,_0x541a77){var _0x4bf111={};var _0x597d58={};var _0x3930ee;var _0x16b4ff;return db[_0x2c89('0x41')]['findOne']({'where':{'id':_0x461a36[_0x2c89('0x59')]['id']}})[_0x2c89('0x36')](handleEntityNotFound(_0x1402fd,null))[_0x2c89('0x36')](function(_0x58ccab){if(_0x58ccab){_0x3930ee=_0x58ccab;_0x597d58['model']=_['keys'](db[_0x2c89('0x79')][_0x2c89('0x42')]);_0x597d58[_0x2c89('0x46')]=_[_0x2c89('0x5a')](_0x461a36[_0x2c89('0x46')]);_0x597d58[_0x2c89('0x47')]=_['intersection'](_0x597d58[_0x2c89('0x45')],_0x597d58[_0x2c89('0x46')]);_0x4bf111[_0x2c89('0x49')]=_[_0x2c89('0x48')](_0x597d58[_0x2c89('0x45')],qs[_0x2c89('0x5b')](_0x461a36[_0x2c89('0x46')][_0x2c89('0x5b')]));_0x4bf111[_0x2c89('0x49')]=_0x4bf111[_0x2c89('0x49')][_0x2c89('0x6a')]?_0x4bf111[_0x2c89('0x49')]:_0x597d58['model'];_0x4bf111[_0x2c89('0x4c')]=qs[_0x2c89('0x4d')](_0x461a36[_0x2c89('0x46')][_0x2c89('0x4d')]);_0x4bf111[_0x2c89('0x4e')]=qs['filters'](_[_0x2c89('0x4f')](_0x461a36[_0x2c89('0x46')],_0x597d58['filters']));if(_0x461a36['query'][_0x2c89('0x50')]){_0x4bf111[_0x2c89('0x4e')]=_[_0x2c89('0x51')](_0x4bf111[_0x2c89('0x4e')],{'$or':_[_0x2c89('0x40')](_0x4bf111[_0x2c89('0x49')],function(_0x57c09a){var _0x20219f={};_0x20219f[_0x57c09a]={'$like':'%'+_0x461a36[_0x2c89('0x46')]['filter']+'%'};return _0x20219f;})});}_0x4bf111=_[_0x2c89('0x51')]({},_0x4bf111,_0x461a36[_0x2c89('0x53')]);return _0x3930ee[_0x2c89('0x7a')](_0x4bf111);}})[_0x2c89('0x36')](function(_0x3c20a2){if(_0x3c20a2){_0x16b4ff=_0x3c20a2['length'];if(!_0x461a36[_0x2c89('0x46')][_0x2c89('0x4a')]('nolimit')){_0x4bf111['limit']=qs['limit'](_0x461a36[_0x2c89('0x46')][_0x2c89('0x2d')]);_0x4bf111[_0x2c89('0x30')]=qs[_0x2c89('0x30')](_0x461a36[_0x2c89('0x46')][_0x2c89('0x30')]);}return _0x3930ee[_0x2c89('0x7a')](_0x4bf111);}})[_0x2c89('0x36')](function(_0x31b395){if(_0x31b395){return _0x31b395?{'count':_0x16b4ff,'rows':_0x31b395}:null;}})[_0x2c89('0x36')](respondWithResult(_0x1402fd,null))[_0x2c89('0x28')](handleError(_0x1402fd,null));};exports[_0x2c89('0x7b')]=function(_0x3d045c,_0x4185cf){var _0x2db3f9=_0x3d045c['params']['id'];var _0x13b5c6=_0x3d045c[_0x2c89('0x5e')];var _0x25a93c=0xc8;var _0x153887=null;return db[_0x2c89('0x7c')][_0x2c89('0x7d')]({'isolationLevel':db[_0x2c89('0x7c')]['Transaction'][_0x2c89('0x7e')][_0x2c89('0x7f')]},function(_0x152ec3){return db[_0x2c89('0x41')][_0x2c89('0x69')]({'where':{'id':_0x2db3f9},'transaction':_0x152ec3})[_0x2c89('0x36')](function(_0x1b46ac){if(_0x1b46ac){return db[_0x2c89('0x80')][_0x2c89('0x37')]({'where':{'WhatsappAccountId':_0x2db3f9},'transaction':_0x152ec3})[_0x2c89('0x36')](function(){var _0x109ac3=_[_0x2c89('0x40')](_0x13b5c6,function(_0x1a67d7){_0x1a67d7[_0x2c89('0x66')]=_0x2db3f9;return _0x1a67d7;});return db[_0x2c89('0x80')][_0x2c89('0x81')](_0x109ac3,{'transaction':_0x152ec3});});}else{_0x25a93c=0x194;_0x153887=[];}});})['then'](function(){if(_0x25a93c!==0x194){return db[_0x2c89('0x80')][_0x2c89('0x82')]({'where':{'WhatsappAccountId':_0x2db3f9},'order':_0x2c89('0x83')})['then'](function(_0x2eb39b){_0x153887=_0x2eb39b;});}})['catch'](function(_0x1fba1e){_0x25a93c=0x1f4;logger['error'](_0x1fba1e[_0x2c89('0x3a')]);if(_0x1fba1e[_0x2c89('0x3b')]){delete _0x1fba1e[_0x2c89('0x3b')];}_0x153887=_0x1fba1e;})[_0x2c89('0x84')](function(){if(_0x153887===null){_0x4185cf[_0x2c89('0x29')](_0x25a93c);}else{if(_0x25a93c===0x1f4){_0x4185cf[_0x2c89('0x2a')](_0x25a93c)[_0x2c89('0x3c')](_0x153887);}else{_0x4185cf[_0x2c89('0x2a')](_0x25a93c)[_0x2c89('0x2c')](_0x153887);}}});};exports[_0x2c89('0x85')]=function(_0x22efff,_0xcb6c57,_0x1d6793){var _0x230a58={};var _0x5de86d={};var _0x5e177e;var _0xdf7fea;return db[_0x2c89('0x41')][_0x2c89('0x69')]({'where':{'id':_0x22efff[_0x2c89('0x59')]['id']}})[_0x2c89('0x36')](handleEntityNotFound(_0xcb6c57,null))['then'](function(_0x1d0a32){if(_0x1d0a32){_0x5e177e=_0x1d0a32;_0x5de86d[_0x2c89('0x45')]=_[_0x2c89('0x5a')](db[_0x2c89('0x80')][_0x2c89('0x42')]);_0x5de86d[_0x2c89('0x46')]=_[_0x2c89('0x5a')](_0x22efff['query']);_0x5de86d[_0x2c89('0x47')]=_['intersection'](_0x5de86d[_0x2c89('0x45')],_0x5de86d[_0x2c89('0x46')]);_0x230a58['attributes']=_[_0x2c89('0x48')](_0x5de86d[_0x2c89('0x45')],qs[_0x2c89('0x5b')](_0x22efff[_0x2c89('0x46')][_0x2c89('0x5b')]));_0x230a58[_0x2c89('0x49')]=_0x230a58[_0x2c89('0x49')][_0x2c89('0x6a')]?_0x230a58[_0x2c89('0x49')]:_0x5de86d[_0x2c89('0x45')];_0x230a58[_0x2c89('0x4c')]=qs[_0x2c89('0x4d')](_0x22efff[_0x2c89('0x46')][_0x2c89('0x4d')]);_0x230a58['where']=qs[_0x2c89('0x47')](_[_0x2c89('0x4f')](_0x22efff[_0x2c89('0x46')],_0x5de86d['filters']));if(_0x22efff[_0x2c89('0x46')][_0x2c89('0x50')]){_0x230a58[_0x2c89('0x4e')]=_[_0x2c89('0x51')](_0x230a58[_0x2c89('0x4e')],{'$or':_['map'](_0x230a58[_0x2c89('0x49')],function(_0x258a73){var _0x3b9af2={};_0x3b9af2[_0x258a73]={'$like':'%'+_0x22efff[_0x2c89('0x46')][_0x2c89('0x50')]+'%'};return _0x3b9af2;})});}_0x230a58=_[_0x2c89('0x51')]({},_0x230a58,_0x22efff['options']);return _0x5e177e[_0x2c89('0x85')](_0x230a58);}})[_0x2c89('0x36')](function(_0x102a38){if(_0x102a38){_0xdf7fea=_0x102a38[_0x2c89('0x6a')];if(!_0x22efff[_0x2c89('0x46')][_0x2c89('0x4a')](_0x2c89('0x4b'))){_0x230a58[_0x2c89('0x2d')]=qs[_0x2c89('0x2d')](_0x22efff['query'][_0x2c89('0x2d')]);_0x230a58[_0x2c89('0x30')]=qs[_0x2c89('0x30')](_0x22efff[_0x2c89('0x46')][_0x2c89('0x30')]);}return _0x5e177e[_0x2c89('0x85')](_0x230a58);}})[_0x2c89('0x36')](function(_0x47267a){if(_0x47267a){return _0x47267a?{'count':_0xdf7fea,'rows':_0x47267a}:null;}})['then'](respondWithResult(_0xcb6c57,null))[_0x2c89('0x28')](handleError(_0xcb6c57,null));};exports['notify']=function(_0x1a3b66,_0x1c4073,_0x349c42){var _0x574f6c={'channel':'whatsapp'};var _0x22554e=[];var _0x4593d2=[];var _0x4c47a0={};return db[_0x2c89('0x41')]['find']({'where':{'id':_0x1a3b66[_0x2c89('0x59')]['id']},'include':[{'model':db[_0x2c89('0x80')],'as':_0x2c89('0x86')}]})[_0x2c89('0x36')](handleEntityNotFound(_0x1c4073,null))[_0x2c89('0x36')](function(_0x21d10a){_0x574f6c[_0x2c89('0x87')]=_0x21d10a;if(_0x574f6c[_0x2c89('0x87')]&&_0x574f6c['account'][_0x2c89('0x88')]==='sinch'&&_0x1a3b66[_0x2c89('0x5e')][_0x2c89('0x89')]){if(_0x1a3b66[_0x2c89('0x5e')]['statuses']['length']===0x0)return;if(_0x1a3b66[_0x2c89('0x5e')][_0x2c89('0x89')][0x0][_0x2c89('0x8a')]!==_0x2c89('0x8b'))return;return db[_0x2c89('0x8c')]['update']({'read':!![],'readAt':_0x1a3b66[_0x2c89('0x5e')][_0x2c89('0x89')][0x0]['timestamp']},{'where':{'messageId':_0x1a3b66[_0x2c89('0x5e')][_0x2c89('0x89')][0x0][_0x2c89('0x8d')]},'individualHooks':!![]})[_0x2c89('0x36')](function(_0x208354){return _0x1c4073[_0x2c89('0x2a')](0xc8)['json'](_0x208354);});}_0x574f6c[_0x2c89('0x8e')]=_[_0x2c89('0x8f')](_0x21d10a[_0x2c89('0x86')],['priority'],[_0x2c89('0x90')]);if(_0x574f6c[_0x2c89('0x87')][_0x2c89('0x86')]){delete _0x574f6c[_0x2c89('0x87')][_0x2c89('0x86')];}return db[_0x2c89('0x91')][_0x2c89('0x65')]()[_0x2c89('0x36')](function(_0x1a119e){if(!_0x1a119e){throw new db[(_0x2c89('0x92'))][(_0x2c89('0x93'))]('no\x20available\x20attributes');}_0x22554e=_[_0x2c89('0x94')](_[_0x2c89('0x5a')](_0x1a119e),[_0x2c89('0x95'),_0x2c89('0x96')]);_0x4593d2=_[_0x2c89('0x94')](_[_0x2c89('0x5a')](_0x1a119e),[_0x2c89('0x95'),'updatedAt',_0x2c89('0x97'),_0x2c89('0x98')]);_0x574f6c[_0x2c89('0x5e')]={'mapKey':'mobile'};if(_0x574f6c['account']&&_0x574f6c['account']['type']===_0x2c89('0x99')){_0x574f6c['body'][_0x2c89('0x9a')]=_0x1a3b66[_0x2c89('0x5e')][_0x2c89('0x9b')][_0x2c89('0x9c')](_0x2c89('0x9d'),'');_0x574f6c['body'][_0x2c89('0x5e')]=_0x1a3b66[_0x2c89('0x5e')][_0x2c89('0x9e')];_0x574f6c[_0x2c89('0x5e')][_0x2c89('0x9f')]=_0x1a3b66[_0x2c89('0x5e')][_0x2c89('0xa0')];}if(_0x574f6c['account']&&_0x574f6c['account'][_0x2c89('0x88')]===_0x2c89('0xa1')){_0x574f6c[_0x2c89('0x5e')][_0x2c89('0x9a')]=_0x1a3b66[_0x2c89('0x5e')][_0x2c89('0xa2')][0x0][_0x2c89('0x9a')];_0x574f6c[_0x2c89('0x5e')][_0x2c89('0x5e')]=_0x1a3b66[_0x2c89('0x5e')][_0x2c89('0xa2')][0x0][_0x2c89('0x26')]['body'];_0x574f6c[_0x2c89('0x5e')]['messageId']=_0x1a3b66['body']['notifications'][0x0]['message_id'];}if(_0x574f6c['body']['id']){delete _0x574f6c['body']['id'];}if(_[_0x2c89('0xa3')](_0x574f6c[_0x2c89('0x5e')][_0x2c89('0x9a')])){throw new db[(_0x2c89('0x92'))][(_0x2c89('0x93'))](_0x2c89('0xa4'));}if(_[_0x2c89('0xa3')](_0x574f6c[_0x2c89('0x5e')]['body'])||_0x574f6c[_0x2c89('0x5e')]['body']===''){throw new db['Sequelize'][(_0x2c89('0x93'))](_0x2c89('0xa5'));}if(_[_0x2c89('0xa3')](_0x574f6c['body'][_0x2c89('0xa6')])){throw new db['Sequelize'][(_0x2c89('0x93'))]('mapKey\x20is\x20mandatory,\x20please\x20use\x20one\x20of\x20these:\x20'+_0x4593d2);}if(!_[_0x2c89('0xa7')](_0x4593d2,_0x574f6c[_0x2c89('0x5e')][_0x2c89('0xa6')])){throw new db[(_0x2c89('0x92'))][(_0x2c89('0x93'))](_0x2c89('0xa8')+_0x4593d2);}_0x4c47a0[_0x574f6c[_0x2c89('0x5e')][_0x2c89('0xa6')]]=_0x574f6c[_0x2c89('0x5e')]['from'];return db[_0x2c89('0xa9')][_0x2c89('0x5c')]({'where':{'id':_0x574f6c[_0x2c89('0x87')]['ListId']},'include':[{'model':db['CmContact'],'as':_0x2c89('0xaa'),'where':_0x4c47a0,'limit':0x1,'order':[[_0x2c89('0x96'),'DESC']]}]});})['then'](handleEntityNotFound(_0x1c4073,null))[_0x2c89('0x36')](function(_0x1ce6e2){if(_0x1ce6e2){_0x574f6c[_0x2c89('0xab')]=_[_0x2c89('0x72')](_0x1ce6e2,[_0x2c89('0xaa')]);if(_0x1ce6e2[_0x2c89('0xaa')][_0x2c89('0x6a')]){return _0x1ce6e2['Contacts'][0x0];}var _0xe13588=_['defaults'](_0x574f6c['body'],{'firstName':_0x574f6c[_0x2c89('0x5e')]['from'],'ListId':_0x1ce6e2['id']});_0xe13588[_0x574f6c[_0x2c89('0x5e')]['mapKey']]=_0x574f6c[_0x2c89('0x5e')]['from'];return db['CmContact']['create'](_0xe13588,{'fields':_0x22554e,'raw':!![]});}})[_0x2c89('0x36')](handleEntityNotFound(_0x1c4073,null))['then'](function(_0x397b25){if(_0x397b25){_0x574f6c[_0x2c89('0xac')]=_0x397b25;var _0x420cb9={'ContactId':_0x397b25['id'],'phone':_0x574f6c[_0x2c89('0x5e')]['from'],'WhatsappAccountId':_0x1a3b66[_0x2c89('0x59')]['id']};var _0x438bf8={'ContactId':_0x397b25['id'],'WhatsappAccountId':_0x1a3b66[_0x2c89('0x59')]['id'],'closed':![]};return db[_0x2c89('0xad')][_0x2c89('0x5c')]({'where':_0x438bf8})[_0x2c89('0x36')](function(_0x544590){if(_0x544590){return[_0x544590,![]];}return db[_0x2c89('0xad')][_0x2c89('0x5d')](_0x420cb9)[_0x2c89('0x36')](function(_0x322745){return[_0x322745,!![]];});});}})[_0x2c89('0x73')](function(_0x4ac274,_0x9e55cd){_0x574f6c[_0x2c89('0xae')]=_0x4ac274[_0x2c89('0x60')]({'plain':!![]});_0x574f6c[_0x2c89('0xae')][_0x2c89('0xaf')]=![];if(_0x9e55cd){if(_0x574f6c[_0x2c89('0x87')]['autoclose']){_0x574f6c['applications'][_0x2c89('0xb0')]({'id':0x0,'priority':_0x574f6c['applications'][_0x2c89('0x6a')]+0x1,'app':_0x2c89('0xb1'),'appdata':'unmanaged','interval':_0x2c89('0xb2')});}_0x574f6c[_0x2c89('0xae')][_0x2c89('0xaf')]=!![];}return db['WhatsappMessage'][_0x2c89('0x5d')]({'phone':_0x574f6c['body'][_0x2c89('0x9a')],'messageId':_0x574f6c[_0x2c89('0x5e')][_0x2c89('0x9f')],'body':_0x574f6c['body'][_0x2c89('0x5e')],'WhatsappAccountId':_0x1a3b66['params']['id'],'WhatsappInteractionId':_0x4ac274['id'],'direction':'in','ContactId':_0x4ac274[_0x2c89('0xb3')],'AttachmentId':_0x574f6c[_0x2c89('0x5e')][_0x2c89('0xb4')]});})[_0x2c89('0x36')](function(_0x457dc8){_0x574f6c[_0x2c89('0x26')]=_0x457dc8;if(_0x574f6c['interaction']['UserId']){return db[_0x2c89('0x79')][_0x2c89('0x5c')]({'attributes':['id',_0x2c89('0x3b')],'where':{'id':_0x574f6c[_0x2c89('0xae')][_0x2c89('0xb5')]}})[_0x2c89('0x36')](function(_0x454a72){if(_0x454a72){_0x574f6c[_0x2c89('0x8e')][_0x2c89('0xb6')]({'id':0x0,'priority':0x0,'app':_0x2c89('0xb7'),'appdata':_0x454a72[_0x2c89('0x3b')]+','+(_0x574f6c[_0x2c89('0x87')][_0x2c89('0xb8')]||0xa),'interval':_0x2c89('0xb2')});}return respondWithRpcPromise(_0x2c89('0xb9'),'startRouting',_0x574f6c);});}return respondWithRpcPromise(_0x2c89('0xb9'),'startRouting',_0x574f6c);})[_0x2c89('0x36')](function(_0x45fe2a){if(_0x45fe2a){var _0x3a1273=0xc8;var _0x332ff4=_0x2c89('0xba');logger[_0x2c89('0x20')]('WhatsappAccount,\x20%s,\x20%s,\x20%s',_0x332ff4,_0x3a1273,_0x2c89('0xbb'));logger['debug'](_0x2c89('0xbc'),_0x332ff4,_0x3a1273,_0x2c89('0xbb'),JSON['stringify'](_0x45fe2a));if(_0x574f6c['account']['type']==='twilio'){return _0x1c4073['status'](_0x3a1273)['set'](_0x2c89('0xbd'),_0x2c89('0xbe'))['send']('<?xml\x20version=\x221.0\x22\x20encoding=\x22UTF-8\x22?>\x0a<Response></Response>');}else{return _0x1c4073['status'](_0x3a1273)[_0x2c89('0x2c')](_0x45fe2a);}}});})[_0x2c89('0x28')](handleError(_0x1c4073,null));};exports[_0x2c89('0x3c')]=function(_0x9d198b,_0x49339f,_0x318837){var _0x2d943d,_0x4eacb7,_0x3161a6;if(_['isNil'](_0x9d198b['body'][_0x2c89('0x5e')])||_0x9d198b[_0x2c89('0x5e')][_0x2c89('0x5e')]===''){throw new db[(_0x2c89('0x92'))]['ValidationError']('body\x20is\x20mandatory\x20and\x20not\x20empty');}if(_[_0x2c89('0xa3')](_0x9d198b[_0x2c89('0x5e')]['to'])){throw new db[(_0x2c89('0x92'))][(_0x2c89('0x93'))]('to\x20is\x20mandatory');}_0x2d943d=_0x9d198b[_0x2c89('0x5e')]['to'];return db[_0x2c89('0x41')]['find']({'where':{'id':_0x9d198b[_0x2c89('0x59')]['id']},'include':[{'model':db[_0x2c89('0xa9')],'as':_0x2c89('0xbf'),'include':[{'model':db[_0x2c89('0x91')],'as':_0x2c89('0xaa'),'where':{'mobile':_0x2d943d},'limit':0x1,'order':[[_0x2c89('0x96'),_0x2c89('0xc0')]]}]}]})[_0x2c89('0x36')](handleEntityNotFound(_0x49339f,null))[_0x2c89('0x36')](function(_0x476531){if(_0x476531&&_0x476531[_0x2c89('0xbf')]){_0x4eacb7=_0x476531[_0x2c89('0x60')]({'plain':!![]});if(_0x4eacb7[_0x2c89('0xbf')]&&_0x4eacb7[_0x2c89('0xbf')][_0x2c89('0xaa')][_0x2c89('0x6a')]){return _0x4eacb7[_0x2c89('0xbf')]['Contacts'][0x0];}return db[_0x2c89('0x91')][_0x2c89('0x5d')](_[_0x2c89('0x19')](_0x9d198b[_0x2c89('0x5e')],{'firstName':_0x2d943d,'mobile':_0x2d943d,'phone':_0x2d943d,'ListId':_0x4eacb7[_0x2c89('0x98')]}));}})[_0x2c89('0x36')](handleEntityNotFound(_0x49339f,null))[_0x2c89('0x36')](function(_0x40275b){if(_0x40275b){_0x3161a6=_0x40275b;return db[_0x2c89('0xad')]['find']({'where':{'ContactId':_0x3161a6['id'],'closed':![],'WhatsappAccountId':_0x4eacb7['id']}})[_0x2c89('0x36')](function(_0x2ad1f2){if(_0x2ad1f2){return[_0x2ad1f2,![]];}return db[_0x2c89('0xad')][_0x2c89('0x5d')]({'UserId':_0x9d198b['user']['id'],'ContactId':_0x3161a6['id'],'WhatsappAccountId':_0x4eacb7['id'],'phone':_0x2d943d,'firstMsgDirection':'out','Messages':[_[_0x2c89('0x51')](_0x9d198b[_0x2c89('0x5e')],{'read':![],'body':_0x9d198b['body'][_0x2c89('0x5e')],'phone':_0x2d943d,'WhatsappAccountId':_0x4eacb7['id'],'UserId':_0x9d198b[_0x2c89('0x5f')]['id'],'ContactId':_0x3161a6['id']})]},{'include':[{'model':db['WhatsappMessage'],'as':_0x2c89('0xc1')}]})[_0x2c89('0x36')](function(_0x1fb09){return[_0x1fb09,!![]];});});}})['spread'](function(_0x110450,_0x2b7a02){if(_0x2b7a02){return _0x110450;}return db['WhatsappMessage'][_0x2c89('0x5d')](_[_0x2c89('0x51')](_0x9d198b['body'],{'read':![],'body':_0x9d198b[_0x2c89('0x5e')][_0x2c89('0x5e')],'phone':_0x2d943d,'WhatsappAccountId':_0x4eacb7['id'],'WhatsappInteractionId':_0x110450['id'],'UserId':_0x9d198b[_0x2c89('0x5f')]['id'],'ContactId':_0x3161a6['id']}))[_0x2c89('0x36')](function(_0x1d96a3){_0x110450[_0x2c89('0xc2')]['Messages']=[];_0x110450['dataValues'][_0x2c89('0xc1')][_0x2c89('0xb0')](_0x1d96a3['dataValues']);return _0x110450;});})[_0x2c89('0x36')](respondWithResult(_0x49339f,null))[_0x2c89('0x28')](handleError(_0x49339f,null));};
\ No newline at end of file
index e8b8090..dbbdec4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0xf37a=['events','../../mysqldb','setMaxListeners','update','remove','emit','hasOwnProperty'];(function(_0x1c8c28,_0x3ee093){var _0x1f59b4=function(_0x29bcc0){while(--_0x29bcc0){_0x1c8c28['push'](_0x1c8c28['shift']());}};_0x1f59b4(++_0x3ee093);}(_0xf37a,0x16c));var _0xaf37=function(_0x5eaa7d,_0x4d9d8b){_0x5eaa7d=_0x5eaa7d-0x0;var _0x1a96fd=_0xf37a[_0x5eaa7d];return _0x1a96fd;};'use strict';var EventEmitter=require(_0xaf37('0x0'));var WhatsappAccount=require(_0xaf37('0x1'))['db']['WhatsappAccount'];var WhatsappAccountEvents=new EventEmitter();WhatsappAccountEvents[_0xaf37('0x2')](0x0);var events={'afterCreate':'save','afterUpdate':_0xaf37('0x3'),'afterDestroy':_0xaf37('0x4')};function emitEvent(_0x5765c6){return function(_0x44e1f5,_0x49fd55,_0x4becb8){WhatsappAccountEvents[_0xaf37('0x5')](_0x5765c6+':'+_0x44e1f5['id'],_0x44e1f5);WhatsappAccountEvents['emit'](_0x5765c6,_0x44e1f5);_0x4becb8(null);};}for(var e in events){if(events[_0xaf37('0x6')](e)){var event=events[e];WhatsappAccount['hook'](e,emitEvent(event));}}module['exports']=WhatsappAccountEvents;
\ No newline at end of file
index 5359a4f..b37d6ff 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0xba00=['whatsapp_accounts','lodash','../../config/logger','moment','bluebird','request-promise','path','../../config/environment','exports','define','WhatsappAccount'];(function(_0x4565bf,_0x5ad9d6){var _0x5610ba=function(_0x170988){while(--_0x170988){_0x4565bf['push'](_0x4565bf['shift']());}};_0x5610ba(++_0x5ad9d6);}(_0xba00,0x12a));var _0x0ba0=function(_0x5ed60a,_0x4d61d3){_0x5ed60a=_0x5ed60a-0x0;var _0x866689=_0xba00[_0x5ed60a];return _0x866689;};'use strict';var _=require(_0x0ba0('0x0'));var util=require('util');var logger=require(_0x0ba0('0x1'))('api');var moment=require(_0x0ba0('0x2'));var BPromise=require(_0x0ba0('0x3'));var rp=require(_0x0ba0('0x4'));var fs=require('fs');var path=require(_0x0ba0('0x5'));var rimraf=require('rimraf');var config=require(_0x0ba0('0x6'));var attributes=require('./whatsappAccount.attributes');module[_0x0ba0('0x7')]=function(_0x518d43,_0x1d7ad2){return _0x518d43[_0x0ba0('0x8')](_0x0ba0('0x9'),attributes,{'tableName':_0x0ba0('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 5adc62b..b72230c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0x2caf=['./whatsappAccount.socket','request\x20sent','debug','WhatsappAccount,\x20%s,\x20%s,\x20%s','error','code','message','WhatsappAccount,\x20%s,\x20%s','info','catch','ShowWhatsappAccount','WhatsappAccount','options','raw','where','attributes','include','map','model','then','stringify','lodash','util','moment','bluebird','randomstring','ioredis','../../config/utils','../../config/logger','../../config/environment','jayson/promise','client','redis','defaults','localhost'];(function(_0x26c4af,_0x78c60d){var _0x3ef7a2=function(_0x198895){while(--_0x198895){_0x26c4af['push'](_0x26c4af['shift']());}};_0x3ef7a2(++_0x78c60d);}(_0x2caf,0x10a));var _0xf2ca=function(_0x2388d1,_0x51aacb){_0x2388d1=_0x2388d1-0x0;var _0x4440fc=_0x2caf[_0x2388d1];return _0x4440fc;};'use strict';var _=require(_0xf2ca('0x0'));var util=require(_0xf2ca('0x1'));var moment=require(_0xf2ca('0x2'));var BPromise=require(_0xf2ca('0x3'));var rs=require(_0xf2ca('0x4'));var fs=require('fs');var Redis=require(_0xf2ca('0x5'));var db=require('../../mysqldb')['db'];var utils=require(_0xf2ca('0x6'));var logger=require(_0xf2ca('0x7'))('rpc');var config=require(_0xf2ca('0x8'));var jayson=require(_0xf2ca('0x9'));var client=jayson[_0xf2ca('0xa')]['http']({'port':0x232a});config[_0xf2ca('0xb')]=_[_0xf2ca('0xc')](config[_0xf2ca('0xb')],{'host':_0xf2ca('0xd'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0xf2ca('0xb')]));require(_0xf2ca('0xe'))['register'](socket);function respondWithRpcPromise(_0x5da58c,_0x25b53d,_0x5eaf41){return new BPromise(function(_0x3ad5a1,_0x137f94){return client['request'](_0x5da58c,_0x5eaf41)['then'](function(_0x4b06ac){logger['info']('WhatsappAccount,\x20%s,\x20%s',_0x25b53d,_0xf2ca('0xf'));logger[_0xf2ca('0x10')](_0xf2ca('0x11'),_0x25b53d,_0xf2ca('0xf'),JSON['stringify'](_0x4b06ac));if(_0x4b06ac[_0xf2ca('0x12')]){if(_0x4b06ac['error'][_0xf2ca('0x13')]===0x1f4){logger[_0xf2ca('0x12')]('WhatsappAccount,\x20%s,\x20%s',_0x25b53d,_0x4b06ac[_0xf2ca('0x12')][_0xf2ca('0x14')]);return _0x137f94(_0x4b06ac[_0xf2ca('0x12')]['message']);}logger[_0xf2ca('0x12')](_0xf2ca('0x15'),_0x25b53d,_0x4b06ac[_0xf2ca('0x12')][_0xf2ca('0x14')]);return _0x3ad5a1(_0x4b06ac['error']['message']);}else{logger[_0xf2ca('0x16')](_0xf2ca('0x15'),_0x25b53d,'request\x20sent');_0x3ad5a1(_0x4b06ac['result'][_0xf2ca('0x14')]);}})[_0xf2ca('0x17')](function(_0x5a10fa){logger[_0xf2ca('0x12')]('WhatsappAccount,\x20%s,\x20%s',_0x25b53d,_0x5a10fa);_0x137f94(_0x5a10fa);});});}exports[_0xf2ca('0x18')]=function(_0x5c0ec0){var _0x515c1b=this;return new Promise(function(_0x2cf262,_0x3a3f6b){return db[_0xf2ca('0x19')]['find']({'raw':_0x5c0ec0[_0xf2ca('0x1a')]?_0x5c0ec0[_0xf2ca('0x1a')][_0xf2ca('0x1b')]===undefined?!![]:![]:!![],'where':_0x5c0ec0[_0xf2ca('0x1a')]?_0x5c0ec0[_0xf2ca('0x1a')][_0xf2ca('0x1c')]||null:null,'attributes':_0x5c0ec0[_0xf2ca('0x1a')]?_0x5c0ec0[_0xf2ca('0x1a')][_0xf2ca('0x1d')]||null:null,'include':_0x5c0ec0[_0xf2ca('0x1a')]?_0x5c0ec0['options'][_0xf2ca('0x1e')]?_[_0xf2ca('0x1f')](_0x5c0ec0[_0xf2ca('0x1a')][_0xf2ca('0x1e')],function(_0x30b163){return{'model':db[_0x30b163[_0xf2ca('0x20')]],'as':_0x30b163['as'],'attributes':_0x30b163[_0xf2ca('0x1d')],'include':_0x30b163[_0xf2ca('0x1e')]?_[_0xf2ca('0x1f')](_0x30b163[_0xf2ca('0x1e')],function(_0x5a8c65){return{'model':db[_0x5a8c65[_0xf2ca('0x20')]],'as':_0x5a8c65['as'],'attributes':_0x5a8c65['attributes'],'include':_0x5a8c65[_0xf2ca('0x1e')]?_[_0xf2ca('0x1f')](_0x5a8c65[_0xf2ca('0x1e')],function(_0x4908f5){return{'model':db[_0x4908f5['model']],'as':_0x4908f5['as'],'attributes':_0x4908f5[_0xf2ca('0x1d')]};}):[]};}):[]};}):[]:[]})[_0xf2ca('0x21')](function(_0x6ef6f1){logger[_0xf2ca('0x16')](_0xf2ca('0x18'),_0x5c0ec0);logger[_0xf2ca('0x10')](_0xf2ca('0x18'),_0x5c0ec0,JSON[_0xf2ca('0x22')](_0x6ef6f1));_0x2cf262(_0x6ef6f1);})['catch'](function(_0x2aa1af){logger['error'](_0xf2ca('0x18'),_0x2aa1af[_0xf2ca('0x14')],_0x5c0ec0);_0x3a3f6b(_0x515c1b[_0xf2ca('0x12')](0x1f4,_0x2aa1af[_0xf2ca('0x14')]));});});};
\ No newline at end of file
index 2730658..1544cc5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0xf2fa=['register','length','whatsappAccount:','./whatsappAccount.events','save','removeListener'];(function(_0x13b02f,_0x462a53){var _0x12e9a6=function(_0x187d57){while(--_0x187d57){_0x13b02f['push'](_0x13b02f['shift']());}};_0x12e9a6(++_0x462a53);}(_0xf2fa,0x75));var _0xaf2f=function(_0x20a584,_0xe384a5){_0x20a584=_0x20a584-0x0;var _0x4b41a8=_0xf2fa[_0x20a584];return _0x4b41a8;};'use strict';var WhatsappAccountEvents=require(_0xaf2f('0x0'));var events=[_0xaf2f('0x1'),'remove','update'];function createListener(_0x1407bd,_0x1f755b){return function(_0xe48c10){_0x1f755b['emit'](_0x1407bd,_0xe48c10);};}function removeListener(_0x4c7a64,_0x3d1961){return function(){WhatsappAccountEvents[_0xaf2f('0x2')](_0x4c7a64,_0x3d1961);};}exports[_0xaf2f('0x3')]=function(_0x196180){for(var _0x601d2a=0x0,_0xb5da25=events[_0xaf2f('0x4')];_0x601d2a<_0xb5da25;_0x601d2a++){var _0x4d45ee=events[_0x601d2a];var _0x4cf0cf=createListener(_0xaf2f('0x5')+_0x4d45ee,_0x196180);WhatsappAccountEvents['on'](_0x4d45ee,_0x4cf0cf);}};
\ No newline at end of file
index 09913d7..d55541d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0xeb57=['express','fs-extra','../../components/auth/service','../../config/environment','./whatsappApplication.controller','isAuthenticated','index','get','/:id','show','post','create','put','update','destroy','connect-timeout'];(function(_0x4c440b,_0x3ea627){var _0x2d48cf=function(_0x56bac7){while(--_0x56bac7){_0x4c440b['push'](_0x4c440b['shift']());}};_0x2d48cf(++_0x3ea627);}(_0xeb57,0x1df));var _0x7eb5=function(_0x43f939,_0xcb2598){_0x43f939=_0x43f939-0x0;var _0x1be640=_0xeb57[_0x43f939];return _0x1be640;};'use strict';var multer=require('multer');var util=require('util');var path=require('path');var timeout=require(_0x7eb5('0x0'));var express=require(_0x7eb5('0x1'));var router=express['Router']();var fs_extra=require(_0x7eb5('0x2'));var auth=require(_0x7eb5('0x3'));var interaction=require('../../components/interaction/service');var config=require(_0x7eb5('0x4'));var controller=require(_0x7eb5('0x5'));router['get']('/',auth[_0x7eb5('0x6')](),controller[_0x7eb5('0x7')]);router[_0x7eb5('0x8')](_0x7eb5('0x9'),auth[_0x7eb5('0x6')](),controller[_0x7eb5('0xa')]);router[_0x7eb5('0xb')]('/',auth[_0x7eb5('0x6')](),controller[_0x7eb5('0xc')]);router[_0x7eb5('0xd')]('/:id',auth[_0x7eb5('0x6')](),controller[_0x7eb5('0xe')]);router['delete'](_0x7eb5('0x9'),auth['isAuthenticated'](),controller[_0x7eb5('0xf')]);module['exports']=router;
\ No newline at end of file
index 9268463..74aa7eb 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0xea4d=['TEXT','sequelize','exports','INTEGER','STRING','noop'];(function(_0x59c301,_0x359c50){var _0x3866b9=function(_0x2d380e){while(--_0x2d380e){_0x59c301['push'](_0x59c301['shift']());}};_0x3866b9(++_0x359c50);}(_0xea4d,0x175));var _0xdea4=function(_0x1b9d4b,_0xebc94f){_0x1b9d4b=_0x1b9d4b-0x0;var _0x12c0c6=_0xea4d[_0x1b9d4b];return _0x12c0c6;};'use strict';var Sequelize=require(_0xdea4('0x0'));module[_0xdea4('0x1')]={'priority':{'type':Sequelize[_0xdea4('0x2')],'allowNull':![]},'app':{'type':Sequelize[_0xdea4('0x3')],'allowNull':![],'defaultValue':_0xdea4('0x4')},'appdata':{'type':Sequelize[_0xdea4('0x5')]()},'description':{'type':Sequelize[_0xdea4('0x3')]},'interval':{'type':Sequelize[_0xdea4('0x3')],'defaultValue':'*,*,*,*'}};
\ No newline at end of file
index 81002e2..65b9c6d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0x5a13=['moment','bluebird','util','sox','lodash','squel','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','end','status','json','offset','undefined','count','limit','Content-Range','reject','then','destroy','error','stack','name','send','index','map','WhatsappApplication','rawAttributes','fieldName','type','key','model','query','keys','filters','intersection','fields','attributes','length','hasOwnProperty','nolimit','order','sort','pick','filter','merge','where','VIRTUAL','options','includeAll','include','catch','show','find','create','body','update','params','rimraf','zip-dir','fast-json-patch','request-promise'];(function(_0x47c39d,_0x119449){var _0x2658ba=function(_0x5271e7){while(--_0x5271e7){_0x47c39d['push'](_0x47c39d['shift']());}};_0x2658ba(++_0x119449);}(_0x5a13,0x92));var _0x35a1=function(_0x3c22ff,_0x155493){_0x3c22ff=_0x3c22ff-0x0;var _0x2fac49=_0x5a13[_0x3c22ff];return _0x2fac49;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x35a1('0x0'));var zipdir=require(_0x35a1('0x1'));var jsonpatch=require(_0x35a1('0x2'));var rp=require(_0x35a1('0x3'));var moment=require(_0x35a1('0x4'));var BPromise=require(_0x35a1('0x5'));var Mustache=require('mustache');var util=require(_0x35a1('0x6'));var path=require('path');var sox=require(_0x35a1('0x7'));var csv=require('to-csv');var ejs=require('ejs');var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x35a1('0x8'));var squel=require(_0x35a1('0x9'));var crypto=require(_0x35a1('0xa'));var jsforce=require(_0x35a1('0xb'));var deskjs=require(_0x35a1('0xc'));var toCsv=require('to-csv');var querystring=require(_0x35a1('0xd'));var Papa=require(_0x35a1('0xe'));var Redis=require(_0x35a1('0xf'));var authService=require(_0x35a1('0x10'));var qs=require(_0x35a1('0x11'));var as=require(_0x35a1('0x12'));var hardwareService=require(_0x35a1('0x13'));var logger=require(_0x35a1('0x14'))(_0x35a1('0x15'));var utils=require('../../config/utils');var config=require(_0x35a1('0x16'));var licenseUtil=require(_0x35a1('0x17'));var db=require(_0x35a1('0x18'))['db'];function respondWithStatusCode(_0x398b62,_0x2c5ba0){_0x2c5ba0=_0x2c5ba0||0xcc;return function(_0x48212d){if(_0x48212d){return _0x398b62[_0x35a1('0x19')](_0x2c5ba0);}return _0x398b62['status'](_0x2c5ba0)[_0x35a1('0x1a')]();};}function respondWithResult(_0x360a5e,_0x51c277){_0x51c277=_0x51c277||0xc8;return function(_0x1ddfb9){if(_0x1ddfb9){return _0x360a5e[_0x35a1('0x1b')](_0x51c277)[_0x35a1('0x1c')](_0x1ddfb9);}};}function respondWithFilteredResult(_0x440481,_0x4faa68){return function(_0xac42ac){if(_0xac42ac){var _0x156a6a=typeof _0x4faa68[_0x35a1('0x1d')]===_0x35a1('0x1e')&&typeof _0x4faa68['limit']===_0x35a1('0x1e');var _0xaa8549=_0xac42ac['count'];var _0x274954=_0x156a6a?0x0:_0x4faa68[_0x35a1('0x1d')];var _0x4e477a=_0x156a6a?_0xac42ac[_0x35a1('0x1f')]:_0x4faa68[_0x35a1('0x1d')]+_0x4faa68[_0x35a1('0x20')];var _0x3931bb;if(_0x4e477a>=_0xaa8549){_0x4e477a=_0xaa8549;_0x3931bb=0xc8;}else{_0x3931bb=0xce;}_0x440481[_0x35a1('0x1b')](_0x3931bb);return _0x440481['set'](_0x35a1('0x21'),_0x274954+'-'+_0x4e477a+'/'+_0xaa8549)[_0x35a1('0x1c')](_0xac42ac);}return null;};}function patchUpdates(_0x4b978e){return function(_0x50f6d1){try{jsonpatch['apply'](_0x50f6d1,_0x4b978e,!![]);}catch(_0x5f557b){return BPromise[_0x35a1('0x22')](_0x5f557b);}return _0x50f6d1['save']();};}function saveUpdates(_0x3e24a3,_0x240565){return function(_0x151e40){if(_0x151e40){return _0x151e40['update'](_0x3e24a3)[_0x35a1('0x23')](function(_0x5eef97){return _0x5eef97;});}return null;};}function removeEntity(_0x228d72,_0x31272b){return function(_0x11aa01){if(_0x11aa01){return _0x11aa01[_0x35a1('0x24')]()[_0x35a1('0x23')](function(){_0x228d72[_0x35a1('0x1b')](0xcc)['end']();});}};}function handleEntityNotFound(_0x269a49,_0x3883a7){return function(_0x4e9a35){if(!_0x4e9a35){_0x269a49[_0x35a1('0x19')](0x194);}return _0x4e9a35;};}function handleError(_0x138727,_0x47d9e9){_0x47d9e9=_0x47d9e9||0x1f4;return function(_0x1fe9bd){logger[_0x35a1('0x25')](_0x1fe9bd[_0x35a1('0x26')]);if(_0x1fe9bd[_0x35a1('0x27')]){delete _0x1fe9bd[_0x35a1('0x27')];}_0x138727[_0x35a1('0x1b')](_0x47d9e9)[_0x35a1('0x28')](_0x1fe9bd);};}exports[_0x35a1('0x29')]=function(_0x5f9764,_0x516595){var _0x44d0dc={},_0x44f0f4={},_0x4d22b2={'count':0x0,'rows':[]};var _0x5c9e67=_[_0x35a1('0x2a')](db[_0x35a1('0x2b')][_0x35a1('0x2c')],function(_0x2672c6){return{'name':_0x2672c6[_0x35a1('0x2d')],'type':_0x2672c6[_0x35a1('0x2e')][_0x35a1('0x2f')]};});_0x44f0f4[_0x35a1('0x30')]=_['map'](_0x5c9e67,'name');_0x44f0f4[_0x35a1('0x31')]=_[_0x35a1('0x32')](_0x5f9764[_0x35a1('0x31')]);_0x44f0f4[_0x35a1('0x33')]=_['intersection'](_0x44f0f4[_0x35a1('0x30')],_0x44f0f4['query']);_0x44d0dc['attributes']=_[_0x35a1('0x34')](_0x44f0f4[_0x35a1('0x30')],qs[_0x35a1('0x35')](_0x5f9764['query'][_0x35a1('0x35')]));_0x44d0dc[_0x35a1('0x36')]=_0x44d0dc[_0x35a1('0x36')][_0x35a1('0x37')]?_0x44d0dc[_0x35a1('0x36')]:_0x44f0f4[_0x35a1('0x30')];if(!_0x5f9764[_0x35a1('0x31')][_0x35a1('0x38')](_0x35a1('0x39'))){_0x44d0dc['limit']=qs[_0x35a1('0x20')](_0x5f9764[_0x35a1('0x31')][_0x35a1('0x20')]);_0x44d0dc[_0x35a1('0x1d')]=qs[_0x35a1('0x1d')](_0x5f9764[_0x35a1('0x31')][_0x35a1('0x1d')]);}_0x44d0dc[_0x35a1('0x3a')]=qs[_0x35a1('0x3b')](_0x5f9764['query'][_0x35a1('0x3b')]);_0x44d0dc['where']=qs[_0x35a1('0x33')](_[_0x35a1('0x3c')](_0x5f9764[_0x35a1('0x31')],_0x44f0f4[_0x35a1('0x33')]),_0x5c9e67);if(_0x5f9764['query'][_0x35a1('0x3d')]){_0x44d0dc['where']=_[_0x35a1('0x3e')](_0x44d0dc[_0x35a1('0x3f')],{'$or':_['map'](_0x5c9e67,function(_0x4615ad){if(_0x4615ad['type']!==_0x35a1('0x40')){var _0x46f53e={};_0x46f53e[_0x4615ad['name']]={'$like':'%'+_0x5f9764['query']['filter']+'%'};return _0x46f53e;}})});}_0x44d0dc=_[_0x35a1('0x3e')]({},_0x44d0dc,_0x5f9764[_0x35a1('0x41')]);var _0x12df1a={'where':_0x44d0dc[_0x35a1('0x3f')]};return db['WhatsappApplication'][_0x35a1('0x1f')](_0x12df1a)['then'](function(_0x1587ef){_0x4d22b2[_0x35a1('0x1f')]=_0x1587ef;if(_0x5f9764[_0x35a1('0x31')][_0x35a1('0x42')]){_0x44d0dc[_0x35a1('0x43')]=[{'all':!![]}];}return db[_0x35a1('0x2b')]['findAll'](_0x44d0dc);})[_0x35a1('0x23')](function(_0xbdbaf4){_0x4d22b2['rows']=_0xbdbaf4;return _0x4d22b2;})[_0x35a1('0x23')](respondWithFilteredResult(_0x516595,_0x44d0dc))[_0x35a1('0x44')](handleError(_0x516595,null));};exports[_0x35a1('0x45')]=function(_0x565b66,_0x47d7ec){var _0xb0ca7d={'raw':!![],'where':{'id':_0x565b66['params']['id']}},_0x56f134={};_0x56f134[_0x35a1('0x30')]=_[_0x35a1('0x32')](db[_0x35a1('0x2b')][_0x35a1('0x2c')]);_0x56f134[_0x35a1('0x31')]=_['keys'](_0x565b66[_0x35a1('0x31')]);_0x56f134[_0x35a1('0x33')]=_[_0x35a1('0x34')](_0x56f134[_0x35a1('0x30')],_0x56f134[_0x35a1('0x31')]);_0xb0ca7d[_0x35a1('0x36')]=_[_0x35a1('0x34')](_0x56f134[_0x35a1('0x30')],qs[_0x35a1('0x35')](_0x565b66['query'][_0x35a1('0x35')]));_0xb0ca7d[_0x35a1('0x36')]=_0xb0ca7d[_0x35a1('0x36')]['length']?_0xb0ca7d[_0x35a1('0x36')]:_0x56f134['model'];if(_0x565b66[_0x35a1('0x31')]['includeAll']){_0xb0ca7d[_0x35a1('0x43')]=[{'all':!![]}];}_0xb0ca7d=_[_0x35a1('0x3e')]({},_0xb0ca7d,_0x565b66[_0x35a1('0x41')]);return db[_0x35a1('0x2b')][_0x35a1('0x46')](_0xb0ca7d)[_0x35a1('0x23')](handleEntityNotFound(_0x47d7ec,null))[_0x35a1('0x23')](respondWithResult(_0x47d7ec,null))[_0x35a1('0x44')](handleError(_0x47d7ec,null));};exports[_0x35a1('0x47')]=function(_0x102247,_0x1e31d6){return db[_0x35a1('0x2b')]['create'](_0x102247[_0x35a1('0x48')],{})[_0x35a1('0x23')](respondWithResult(_0x1e31d6,0xc9))[_0x35a1('0x44')](handleError(_0x1e31d6,null));};exports[_0x35a1('0x49')]=function(_0x41801b,_0x218179){if(_0x41801b['body']['id']){delete _0x41801b[_0x35a1('0x48')]['id'];}return db[_0x35a1('0x2b')][_0x35a1('0x46')]({'where':{'id':_0x41801b[_0x35a1('0x4a')]['id']}})[_0x35a1('0x23')](handleEntityNotFound(_0x218179,null))[_0x35a1('0x23')](saveUpdates(_0x41801b[_0x35a1('0x48')],null))[_0x35a1('0x23')](respondWithResult(_0x218179,null))[_0x35a1('0x44')](handleError(_0x218179,null));};exports[_0x35a1('0x24')]=function(_0x5c61a3,_0x1e669b){return db[_0x35a1('0x2b')][_0x35a1('0x46')]({'where':{'id':_0x5c61a3[_0x35a1('0x4a')]['id']}})[_0x35a1('0x23')](handleEntityNotFound(_0x1e669b,null))[_0x35a1('0x23')](removeEntity(_0x1e669b,null))[_0x35a1('0x44')](handleError(_0x1e669b,null));};
\ No newline at end of file
index bdb62a0..9e73b02 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0x6737=['utf8mb4_unicode_ci','util','../../config/logger','moment','bluebird','request-promise','path','../../config/environment','./whatsappApplication.attributes'];(function(_0x465028,_0x4570ac){var _0xb783d4=function(_0x5458c5){while(--_0x5458c5){_0x465028['push'](_0x465028['shift']());}};_0xb783d4(++_0x4570ac);}(_0x6737,0xe2));var _0x7673=function(_0x5c8ee2,_0x35b074){_0x5c8ee2=_0x5c8ee2-0x0;var _0x5ea672=_0x6737[_0x5c8ee2];return _0x5ea672;};'use strict';var _=require('lodash');var util=require(_0x7673('0x0'));var logger=require(_0x7673('0x1'))('api');var moment=require(_0x7673('0x2'));var BPromise=require(_0x7673('0x3'));var rp=require(_0x7673('0x4'));var fs=require('fs');var path=require(_0x7673('0x5'));var rimraf=require('rimraf');var config=require(_0x7673('0x6'));var attributes=require(_0x7673('0x7'));module['exports']=function(_0x2f5edc,_0x15230f){return _0x2f5edc['define']('WhatsappApplication',attributes,{'tableName':'whatsapp_applications','paranoid':![],'indexes':[],'timestamps':!![],'charset':'utf8mb4','collate':_0x7673('0x8')});};
\ No newline at end of file
index 7bf7420..cbdb7e4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0x7bae=['rpc','../../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','moment','bluebird','ioredis','../../config/utils','../../config/logger'];(function(_0x321bb2,_0x202794){var _0x9c12ed=function(_0x263dd3){while(--_0x263dd3){_0x321bb2['push'](_0x321bb2['shift']());}};_0x9c12ed(++_0x202794);}(_0x7bae,0x13b));var _0xe7ba=function(_0x334841,_0x2bbc4c){_0x334841=_0x334841-0x0;var _0x5beb4b=_0x7bae[_0x334841];return _0x5beb4b;};'use strict';var _=require('lodash');var util=require('util');var moment=require(_0xe7ba('0x0'));var BPromise=require(_0xe7ba('0x1'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0xe7ba('0x2'));var db=require('../../mysqldb')['db'];var utils=require(_0xe7ba('0x3'));var logger=require(_0xe7ba('0x4'))(_0xe7ba('0x5'));var config=require(_0xe7ba('0x6'));var jayson=require(_0xe7ba('0x7'));var client=jayson[_0xe7ba('0x8')][_0xe7ba('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x3c5e59,_0x10b307,_0x34fb18){return new BPromise(function(_0x160565,_0x27b1d5){return client[_0xe7ba('0xa')](_0x3c5e59,_0x34fb18)[_0xe7ba('0xb')](function(_0x588f08){logger[_0xe7ba('0xc')](_0xe7ba('0xd'),_0x10b307,_0xe7ba('0xe'));logger[_0xe7ba('0xf')](_0xe7ba('0x10'),_0x10b307,_0xe7ba('0xe'),JSON[_0xe7ba('0x11')](_0x588f08));if(_0x588f08[_0xe7ba('0x12')]){if(_0x588f08[_0xe7ba('0x12')]['code']===0x1f4){logger[_0xe7ba('0x12')]('WhatsappApplication,\x20%s,\x20%s',_0x10b307,_0x588f08[_0xe7ba('0x12')][_0xe7ba('0x13')]);return _0x27b1d5(_0x588f08[_0xe7ba('0x12')][_0xe7ba('0x13')]);}logger[_0xe7ba('0x12')](_0xe7ba('0xd'),_0x10b307,_0x588f08['error']['message']);return _0x160565(_0x588f08[_0xe7ba('0x12')][_0xe7ba('0x13')]);}else{logger[_0xe7ba('0xc')]('WhatsappApplication,\x20%s,\x20%s',_0x10b307,_0xe7ba('0xe'));_0x160565(_0x588f08['result']['message']);}})['catch'](function(_0x393f75){logger['error'](_0xe7ba('0xd'),_0x10b307,_0x393f75);_0x27b1d5(_0x393f75);});});}
\ No newline at end of file
index 8d08375..854e669 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0xa630=['/:id/messages','getMessages','/:id/download','download','post','create','tracked','whatsapp','whatsappinteraction:addtags','addTags','put','update','delete','whatsappinteraction:destroy','destroy','/:id/tags','multer','util','express','fs-extra','../../components/interaction/service','../../config/environment','./whatsappInteraction.controller','get','isAuthenticated','/describe','describe','/:id','show'];(function(_0x2d1cd9,_0x4c26f9){var _0x21b523=function(_0x146167){while(--_0x146167){_0x2d1cd9['push'](_0x2d1cd9['shift']());}};_0x21b523(++_0x4c26f9);}(_0xa630,0xbe));var _0x0a63=function(_0x115bc2,_0x2c07a0){_0x115bc2=_0x115bc2-0x0;var _0x309985=_0xa630[_0x115bc2];return _0x309985;};'use strict';var multer=require(_0x0a63('0x0'));var util=require(_0x0a63('0x1'));var path=require('path');var timeout=require('connect-timeout');var express=require(_0x0a63('0x2'));var router=express['Router']();var fs_extra=require(_0x0a63('0x3'));var auth=require('../../components/auth/service');var interaction=require(_0x0a63('0x4'));var config=require(_0x0a63('0x5'));var controller=require(_0x0a63('0x6'));router[_0x0a63('0x7')]('/',auth[_0x0a63('0x8')](),controller['index']);router[_0x0a63('0x7')](_0x0a63('0x9'),auth[_0x0a63('0x8')](),controller[_0x0a63('0xa')]);router[_0x0a63('0x7')](_0x0a63('0xb'),auth['isAuthenticated'](),controller[_0x0a63('0xc')]);router[_0x0a63('0x7')](_0x0a63('0xd'),auth[_0x0a63('0x8')](),controller[_0x0a63('0xe')]);router[_0x0a63('0x7')](_0x0a63('0xf'),auth[_0x0a63('0x8')](),controller[_0x0a63('0x10')]);router[_0x0a63('0x11')]('/',auth['isAuthenticated'](),controller[_0x0a63('0x12')]);router[_0x0a63('0x11')](_0x0a63('0xd'),auth[_0x0a63('0x8')](),controller['addMessage']);router[_0x0a63('0x11')]('/:id/tags',auth[_0x0a63('0x8')](),interaction[_0x0a63('0x13')](_0x0a63('0x14'),_0x0a63('0x15')),controller[_0x0a63('0x16')]);router[_0x0a63('0x17')](_0x0a63('0xb'),auth[_0x0a63('0x8')](),interaction['tracked'](_0x0a63('0x14'),'whatsappinteraction:update'),controller[_0x0a63('0x18')]);router[_0x0a63('0x19')](_0x0a63('0xb'),auth[_0x0a63('0x8')](),interaction[_0x0a63('0x13')](_0x0a63('0x14'),_0x0a63('0x1a')),controller[_0x0a63('0x1b')]);router[_0x0a63('0x19')](_0x0a63('0x1c'),auth[_0x0a63('0x8')](),controller['removeTags']);module['exports']=router;
\ No newline at end of file
index 6908a47..4f41cce 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0x37c5=['exports','BOOLEAN','DATE','STRING','out','ENUM','moment'];(function(_0x26120e,_0x5de509){var _0x362934=function(_0x2eb30e){while(--_0x2eb30e){_0x26120e['push'](_0x26120e['shift']());}};_0x362934(++_0x5de509);}(_0x37c5,0xa7));var _0x537c=function(_0x46c159,_0x2bd322){_0x46c159=_0x46c159-0x0;var _0x1d3d7a=_0x37c5[_0x46c159];return _0x1d3d7a;};'use strict';var Sequelize=require('sequelize');var moment=require(_0x537c('0x0'));module[_0x537c('0x1')]={'closed':{'type':Sequelize[_0x537c('0x2')],'defaultValue':![]},'closedAt':{'type':Sequelize[_0x537c('0x3')]},'disposition':{'type':Sequelize[_0x537c('0x4')]},'secondDisposition':{'type':Sequelize[_0x537c('0x4')]},'thirdDisposition':{'type':Sequelize[_0x537c('0x4')]},'note':{'type':Sequelize[_0x537c('0x4')]},'phone':{'type':Sequelize[_0x537c('0x4')]},'read1stAt':{'type':Sequelize[_0x537c('0x3')]},'firstMsgDirection':{'type':Sequelize['ENUM']('in',_0x537c('0x5')),'defaultValue':'in','allowNull':![]},'lastMsgAt':{'type':Sequelize[_0x537c('0x3')]},'lastMsgDirection':{'type':Sequelize[_0x537c('0x6')]('in','out'),'defaultValue':'in','allowNull':![]},'autoreplyExecuted':{'type':Sequelize[_0x537c('0x2')],'defaultValue':![]}};
\ No newline at end of file
index 143e5b6..5197e38 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0xa302=['user','catch','show','model','keys','query','intersection','attributes','fields','length','includeAll','include','merge','options','create','update','body','find','params','describe','WhatsappMessage','ids','omit','getMessages','hasOwnProperty','nolimit','order','sort','filters','pick','WhatsappInteractionId','where','filter','$gte','split','format','YYYY-MM-DD\x20HH:mm:ss','findAll','rows','addTags','setTags','Tag','color','whatsappInteractionTags:save','removeTags','download','unix','join','root','server','files','attachments','transcript-%d-%s.zip','User','push','CmContact','firstName','lastName','Attachment','createdAt','secret','WhatsappAccount','Account','Owner','mkdirSync','Whatsapp','N.A.','toString','closed','closedAt','disposition','basename','existsSync','createReadStream','createWriteStream','direction','System','Contact','out','read','value','renderFile','views','downloadInteraction.ejs','.pdf','createPdfFromHTML','log','err','unlinkSync','rimraf','zip-dir','moment','bluebird','util','path','ejs','lodash','../../components/interaction/service','../../components/parsers/qs','../../components/export/pdf','../../config/logger','api','../../config/environment','../../mysqldb','redis','localhost','socket.io-emitter','register','sendStatus','end','status','json','offset','undefined','count','limit','Content-Range','destroy','then','error','stack','name','send','index','map','WhatsappInteraction','rawAttributes','type','key','whatsapp'];(function(_0x1428d9,_0xded63c){var _0x438019=function(_0x31c37d){while(--_0x31c37d){_0x1428d9['push'](_0x1428d9['shift']());}};_0x438019(++_0xded63c);}(_0xa302,0x1df));var _0x2a30=function(_0xa148b7,_0x2f3eb2){_0xa148b7=_0xa148b7-0x0;var _0x51efd3=_0xa302[_0xa148b7];return _0x51efd3;};'use strict';var rimraf=require(_0x2a30('0x0'));var zipdir=require(_0x2a30('0x1'));var moment=require(_0x2a30('0x2'));var BPromise=require(_0x2a30('0x3'));var util=require(_0x2a30('0x4'));var path=require(_0x2a30('0x5'));var ejs=require(_0x2a30('0x6'));var fs=require('fs');var _=require(_0x2a30('0x7'));var Redis=require('ioredis');var interaction=require(_0x2a30('0x8'));var qs=require(_0x2a30('0x9'));var pdf=require(_0x2a30('0xa'));var logger=require(_0x2a30('0xb'))(_0x2a30('0xc'));var config=require(_0x2a30('0xd'));var db=require(_0x2a30('0xe'))['db'];config[_0x2a30('0xf')]=_['defaults'](config[_0x2a30('0xf')],{'host':_0x2a30('0x10'),'port':0x18eb});var socket=require(_0x2a30('0x11'))(new Redis(config[_0x2a30('0xf')]));require('./whatsappInteraction.socket')[_0x2a30('0x12')](socket);function respondWithStatusCode(_0xf2992a,_0x38e224){_0x38e224=_0x38e224||0xcc;return function(_0x45c4a3){if(_0x45c4a3){return _0xf2992a[_0x2a30('0x13')](_0x38e224);}return _0xf2992a['status'](_0x38e224)[_0x2a30('0x14')]();};}function respondWithResult(_0x5579b4,_0x586c79){_0x586c79=_0x586c79||0xc8;return function(_0x2ae7fc){if(_0x2ae7fc){return _0x5579b4[_0x2a30('0x15')](_0x586c79)[_0x2a30('0x16')](_0x2ae7fc);}};}function respondWithFilteredResult(_0x38fca3,_0x140e8f){return function(_0x3f4c6d){if(_0x3f4c6d){var _0x33173d=typeof _0x140e8f[_0x2a30('0x17')]===_0x2a30('0x18')&&typeof _0x140e8f['limit']===_0x2a30('0x18');var _0x458951=_0x3f4c6d[_0x2a30('0x19')];var _0x5f1459=_0x33173d?0x0:_0x140e8f[_0x2a30('0x17')];var _0xd6cbac=_0x33173d?_0x3f4c6d[_0x2a30('0x19')]:_0x140e8f[_0x2a30('0x17')]+_0x140e8f[_0x2a30('0x1a')];var _0x41d000;if(_0xd6cbac>=_0x458951){_0xd6cbac=_0x458951;_0x41d000=0xc8;}else{_0x41d000=0xce;}_0x38fca3[_0x2a30('0x15')](_0x41d000);return _0x38fca3['set'](_0x2a30('0x1b'),_0x5f1459+'-'+_0xd6cbac+'/'+_0x458951)[_0x2a30('0x16')](_0x3f4c6d);}return null;};}function saveUpdates(_0x3ca495){return function(_0x31281d){if(_0x31281d){return _0x31281d['update'](_0x3ca495)['then'](function(_0xd46ad1){return _0xd46ad1;});}return null;};}function removeEntity(_0x3b7704){return function(_0x31251f){if(_0x31251f){return _0x31251f[_0x2a30('0x1c')]()[_0x2a30('0x1d')](function(){_0x3b7704[_0x2a30('0x15')](0xcc)[_0x2a30('0x14')]();});}};}function handleEntityNotFound(_0x3f432b){return function(_0x3a5b44){if(!_0x3a5b44){_0x3f432b[_0x2a30('0x13')](0x194);}return _0x3a5b44;};}function handleError(_0x5c383a,_0x52cbf2){_0x52cbf2=_0x52cbf2||0x1f4;return function(_0x3ac216){logger[_0x2a30('0x1e')](_0x3ac216[_0x2a30('0x1f')]);if(_0x3ac216[_0x2a30('0x20')]){delete _0x3ac216[_0x2a30('0x20')];}_0x5c383a[_0x2a30('0x15')](_0x52cbf2)[_0x2a30('0x21')](_0x3ac216);};}exports[_0x2a30('0x22')]=function(_0x4a82e5,_0x1aba4d){var _0x326923={};var _0x32fa1b=_[_0x2a30('0x23')](db[_0x2a30('0x24')][_0x2a30('0x25')],function(_0x410138){return{'name':_0x410138['fieldName'],'type':_0x410138[_0x2a30('0x26')][_0x2a30('0x27')]};});_0x326923=qs['getOptions'](_0x32fa1b,_0x4a82e5);return interaction['findAll'](_0x2a30('0x28'),_0x4a82e5['query'],_0x4a82e5[_0x2a30('0x29')],_0x326923,_0x32fa1b)[_0x2a30('0x1d')](respondWithFilteredResult(_0x1aba4d,_0x326923))[_0x2a30('0x2a')](handleError(_0x1aba4d,null));};exports[_0x2a30('0x2b')]=function(_0x97b90a,_0x23f0af){var _0x2e9023={'raw':![],'where':{'id':_0x97b90a['params']['id']}},_0x354106={};_0x354106[_0x2a30('0x2c')]=_[_0x2a30('0x2d')](db[_0x2a30('0x24')]['rawAttributes']);_0x354106[_0x2a30('0x2e')]=_['keys'](_0x97b90a[_0x2a30('0x2e')]);_0x354106['filters']=_[_0x2a30('0x2f')](_0x354106[_0x2a30('0x2c')],_0x354106[_0x2a30('0x2e')]);_0x2e9023[_0x2a30('0x30')]=_[_0x2a30('0x2f')](_0x354106['model'],qs[_0x2a30('0x31')](_0x97b90a[_0x2a30('0x2e')]['fields']));_0x2e9023[_0x2a30('0x30')]=_0x2e9023['attributes'][_0x2a30('0x32')]?_0x2e9023[_0x2a30('0x30')]:_0x354106[_0x2a30('0x2c')];if(_0x97b90a['query'][_0x2a30('0x33')]){_0x2e9023[_0x2a30('0x34')]=[{'all':!![]}];}_0x2e9023=_[_0x2a30('0x35')]({},_0x2e9023,_0x97b90a[_0x2a30('0x36')]);return db['WhatsappInteraction']['find'](_0x2e9023)[_0x2a30('0x1d')](handleEntityNotFound(_0x23f0af,null))[_0x2a30('0x1d')](respondWithResult(_0x23f0af,null))['catch'](handleError(_0x23f0af,null));};exports[_0x2a30('0x37')]=function(_0x2484e0,_0x27f20f){return db[_0x2a30('0x24')][_0x2a30('0x37')](_0x2484e0['body'],{})[_0x2a30('0x1d')](respondWithResult(_0x27f20f,0xc9))[_0x2a30('0x2a')](handleError(_0x27f20f,null));};exports[_0x2a30('0x38')]=function(_0x4804e2,_0x2b8ed9){if(_0x4804e2[_0x2a30('0x39')]['id']){delete _0x4804e2[_0x2a30('0x39')]['id'];}return db[_0x2a30('0x24')][_0x2a30('0x3a')]({'where':{'id':_0x4804e2['params']['id']}})[_0x2a30('0x1d')](handleEntityNotFound(_0x2b8ed9,null))[_0x2a30('0x1d')](saveUpdates(_0x4804e2['body'],null))['then'](respondWithResult(_0x2b8ed9,null))[_0x2a30('0x2a')](handleError(_0x2b8ed9,null));};exports['destroy']=function(_0xc806f8,_0x34d535){return db[_0x2a30('0x24')][_0x2a30('0x3a')]({'where':{'id':_0xc806f8[_0x2a30('0x3b')]['id']}})['then'](handleEntityNotFound(_0x34d535,null))['then'](removeEntity(_0x34d535,null))[_0x2a30('0x2a')](handleError(_0x34d535,null));};exports[_0x2a30('0x3c')]=function(_0x54365c,_0x2c8c43){return db[_0x2a30('0x24')][_0x2a30('0x3c')]()[_0x2a30('0x1d')](respondWithResult(_0x2c8c43,null))[_0x2a30('0x2a')](handleError(_0x2c8c43,null));};exports['addMessage']=function(_0x26446b,_0xa6dbcc){return db[_0x2a30('0x3d')][_0x2a30('0x3a')]({'where':{'id':_0x26446b[_0x2a30('0x3b')]['id']}})[_0x2a30('0x1d')](handleEntityNotFound(_0xa6dbcc,null))[_0x2a30('0x1d')](function(_0x2c7797){if(_0x2c7797){return _0x2c7797['addMessage'](_0x26446b[_0x2a30('0x39')][_0x2a30('0x3e')],_[_0x2a30('0x3f')](_0x26446b['body'],[_0x2a30('0x3e'),'id'])||{});}})[_0x2a30('0x1d')](respondWithResult(_0xa6dbcc,null))[_0x2a30('0x2a')](handleError(_0xa6dbcc,null));};exports[_0x2a30('0x40')]=function(_0x3d5d5f,_0x28a730){var _0x3c04c5={'raw':![],'where':{}};var _0x40cdcb={};var _0x29453a={'count':0x0,'rows':[]};return db[_0x2a30('0x24')]['findOne']({'where':{'id':_0x3d5d5f['params']['id']}})[_0x2a30('0x1d')](handleEntityNotFound(_0x28a730,null))[_0x2a30('0x1d')](function(_0x56ad15){if(_0x56ad15){_0x40cdcb[_0x2a30('0x2c')]=_[_0x2a30('0x2d')](db[_0x2a30('0x3d')]['rawAttributes']);_0x40cdcb[_0x2a30('0x2e')]=_[_0x2a30('0x2d')](_0x3d5d5f['query']);_0x40cdcb['filters']=_[_0x2a30('0x2f')](_0x40cdcb['model'],_0x40cdcb[_0x2a30('0x2e')]);_0x3c04c5['attributes']=_[_0x2a30('0x2f')](_0x40cdcb[_0x2a30('0x2c')],qs[_0x2a30('0x31')](_0x3d5d5f[_0x2a30('0x2e')][_0x2a30('0x31')]));_0x3c04c5[_0x2a30('0x30')]=_0x3c04c5[_0x2a30('0x30')][_0x2a30('0x32')]?_0x3c04c5['attributes']:_0x40cdcb[_0x2a30('0x2c')];if(!_0x3d5d5f[_0x2a30('0x2e')][_0x2a30('0x41')](_0x2a30('0x42'))){_0x3c04c5['limit']=qs[_0x2a30('0x1a')](_0x3d5d5f['query']['limit']);_0x3c04c5['offset']=qs['offset'](_0x3d5d5f[_0x2a30('0x2e')][_0x2a30('0x17')]);}_0x3c04c5[_0x2a30('0x43')]=qs[_0x2a30('0x44')](_0x3d5d5f[_0x2a30('0x2e')][_0x2a30('0x44')]);_0x3c04c5['where']=qs[_0x2a30('0x45')](_[_0x2a30('0x46')](_0x3d5d5f[_0x2a30('0x2e')],_0x40cdcb[_0x2a30('0x45')]));_0x3c04c5['where'][_0x2a30('0x47')]=_0x56ad15['id'];if(_0x3d5d5f[_0x2a30('0x2e')]['filter']){_0x3c04c5['where']=_['merge'](_0x3c04c5[_0x2a30('0x48')],{'$or':_[_0x2a30('0x23')](_0x3c04c5['attributes'],function(_0x894c7){var _0x324e51={};_0x324e51[_0x894c7]={'$like':'%'+_0x3d5d5f[_0x2a30('0x2e')][_0x2a30('0x49')]+'%'};return _0x324e51;})});}if(_0x3d5d5f['query'][_0x2a30('0x4a')]){var _0x2cdfa5=_0x3d5d5f[_0x2a30('0x2e')][_0x2a30('0x4a')][_0x2a30('0x4b')](',');var _0x4da62d={};_0x4da62d[_0x2cdfa5[0x0]]={'$gte':moment(_0x2cdfa5[0x1])[_0x2a30('0x4c')](_0x2a30('0x4d'))};_0x3c04c5[_0x2a30('0x48')]=_[_0x2a30('0x35')](_0x3c04c5[_0x2a30('0x48')],_0x4da62d);}_0x3c04c5=_[_0x2a30('0x35')]({},_0x3c04c5,_0x3d5d5f['options']);return db['WhatsappMessage']['count']({'where':_0x3c04c5[_0x2a30('0x48')]})[_0x2a30('0x1d')](function(_0x1a4eed){_0x29453a[_0x2a30('0x19')]=_0x1a4eed;if(_0x3d5d5f[_0x2a30('0x2e')][_0x2a30('0x33')]){_0x3c04c5[_0x2a30('0x34')]=[{'all':!![]}];}return db[_0x2a30('0x3d')][_0x2a30('0x4e')](_0x3c04c5);})['then'](function(_0x46af39){_0x29453a[_0x2a30('0x4f')]=_0x46af39;return _0x29453a;});}})[_0x2a30('0x1d')](respondWithFilteredResult(_0x28a730,_0x3c04c5))['catch'](handleError(_0x28a730,null));};exports[_0x2a30('0x50')]=function(_0x4ac011,_0x4a5c77){return db[_0x2a30('0x24')][_0x2a30('0x3a')]({'where':{'id':_0x4ac011[_0x2a30('0x3b')]['id']}})[_0x2a30('0x1d')](handleEntityNotFound(_0x4a5c77,null))[_0x2a30('0x1d')](function(_0x787196){if(_0x787196){return _0x787196[_0x2a30('0x51')](_0x4ac011[_0x2a30('0x39')]['ids'],_['omit'](_0x4ac011['body'],[_0x2a30('0x3e'),'id'])||{})['spread'](function(){return db[_0x2a30('0x52')][_0x2a30('0x4e')]({'attributes':['id',_0x2a30('0x20'),_0x2a30('0x53')],'where':{'id':_0x4ac011['body'][_0x2a30('0x3e')]}});})[_0x2a30('0x1d')](function(_0x4d479f){socket['emit'](_0x2a30('0x54'),{'id':Number(_0x4ac011[_0x2a30('0x3b')]['id']),'tags':_0x4d479f||[]});return{'id':Number(_0x4ac011['params']['id']),'tags':_0x4d479f||[]};});}})[_0x2a30('0x1d')](respondWithResult(_0x4a5c77,null))[_0x2a30('0x2a')](handleError(_0x4a5c77,null));};exports[_0x2a30('0x55')]=function(_0x5807e8,_0x58b8b9){return db[_0x2a30('0x24')][_0x2a30('0x3a')]({'where':{'id':_0x5807e8[_0x2a30('0x3b')]['id']}})[_0x2a30('0x1d')](handleEntityNotFound(_0x58b8b9,null))[_0x2a30('0x1d')](function(_0x5676ce){if(_0x5676ce){return _0x5676ce['removeTags'](_0x5807e8['query']['ids']);}})[_0x2a30('0x1d')](respondWithStatusCode(_0x58b8b9,null))[_0x2a30('0x2a')](handleError(_0x58b8b9,null));};exports[_0x2a30('0x56')]=function(_0x2cb37f,_0x58ef02){var _0x282e6a=moment()[_0x2a30('0x57')]()['toString']();var _0x2caa33=path[_0x2a30('0x58')](config[_0x2a30('0x59')],_0x2a30('0x5a'),'files','tmp');var _0x203172=path[_0x2a30('0x58')](config['root'],_0x2a30('0x5a'),_0x2a30('0x5b'),_0x2a30('0x5c'));var _0x43d342=path['join'](_0x2caa33,_0x282e6a);var _0x2309cf=util[_0x2a30('0x4c')](_0x2a30('0x5d'),_0x2cb37f[_0x2a30('0x3b')]['id'],_0x282e6a);var _0x3cf735=path[_0x2a30('0x58')](_0x2caa33,_0x2309cf);var _0x48232c=[];_0x48232c['push']({'model':db['User'],'as':_0x2a30('0x5e'),'attributes':['id','fullname'],'raw':!![]});_0x48232c[_0x2a30('0x5f')]({'model':db[_0x2a30('0x60')],'as':'Contact','attributes':['id',_0x2a30('0x61'),_0x2a30('0x62')],'raw':!![]});if(_0x2cb37f[_0x2a30('0x2e')][_0x2a30('0x5c')]){_0x48232c[_0x2a30('0x5f')]({'model':db['Attachment'],'as':_0x2a30('0x63'),'raw':!![]});}var _0x17731c=[{'model':db[_0x2a30('0x3d')],'as':'Messages','attributes':['id',_0x2a30('0x39'),_0x2a30('0x64'),'direction',_0x2a30('0x65'),'read'],'include':_0x48232c}];_0x17731c[_0x2a30('0x5f')]({'model':db[_0x2a30('0x66')],'as':_0x2a30('0x67'),'attributes':['id','name']});_0x17731c[_0x2a30('0x5f')]({'model':db['User'],'as':_0x2a30('0x68'),'attributes':['id','fullname']});return db[_0x2a30('0x24')][_0x2a30('0x3a')]({'where':{'id':_0x2cb37f[_0x2a30('0x3b')]['id']},'include':_0x17731c})['then'](handleEntityNotFound(_0x58ef02,null))[_0x2a30('0x1d')](function(_0x5f3e3e){if(_0x5f3e3e){var _0x4f8e55=_0x5f3e3e['get']({'plain':!![]});fs[_0x2a30('0x69')](_0x43d342);var _0x5d11f1={'channel':_0x2a30('0x6a'),'account':_0x4f8e55[_0x2a30('0x67')][_0x2a30('0x20')],'agent':_0x4f8e55['Owner']?_0x4f8e55['Owner']['fullname']:_0x2a30('0x6b'),'createdAt':moment(_0x4f8e55[_0x2a30('0x64')])[_0x2a30('0x4c')](_0x2a30('0x4d'))[_0x2a30('0x6c')](),'closedAt':_0x4f8e55[_0x2a30('0x6d')]?moment(_0x4f8e55[_0x2a30('0x6e')])[_0x2a30('0x4c')]('YYYY-MM-DD\x20HH:mm:ss')[_0x2a30('0x6c')]():'','disposition':_0x4f8e55[_0x2a30('0x6f')],'messages':_(_0x4f8e55['Messages'])['filter']({'secret':![]})['map'](function(_0x17edcc){if(_0x17edcc[_0x2a30('0x63')]){var _0x49649c=path[_0x2a30('0x58')](_0x203172,_0x17edcc[_0x2a30('0x63')][_0x2a30('0x70')]);if(fs[_0x2a30('0x71')](_0x49649c)){fs[_0x2a30('0x72')](_0x49649c)['pipe'](fs[_0x2a30('0x73')](path[_0x2a30('0x58')](_0x43d342,_0x17edcc['Attachment']['basename'])));}}return{'date':moment(_0x17edcc['createdAt'])[_0x2a30('0x4c')]('YYYY-MM-DD\x20HH:mm:ss')[_0x2a30('0x6c')](),'sender':_0x17edcc[_0x2a30('0x74')]==='out'?_0x17edcc[_0x2a30('0x5e')]?_0x17edcc[_0x2a30('0x5e')]['fullname']:_0x2a30('0x75'):_0x17edcc[_0x2a30('0x76')][_0x2a30('0x61')]+(_0x17edcc[_0x2a30('0x76')][_0x2a30('0x62')]?'\x20'+_0x17edcc[_0x2a30('0x76')][_0x2a30('0x62')]:''),'body':_0x17edcc[_0x2a30('0x63')]?_0x17edcc[_0x2a30('0x63')][_0x2a30('0x70')]:_0x17edcc[_0x2a30('0x39')],'direction':_0x17edcc[_0x2a30('0x74')]===_0x2a30('0x77')?'A':'C','secret':_0x17edcc['secret'],'read':_0x17edcc[_0x2a30('0x78')],'attachment':_0x17edcc[_0x2a30('0x63')]};})[_0x2a30('0x79')]()};return ejs[_0x2a30('0x7a')](path[_0x2a30('0x58')](config[_0x2a30('0x59')],_0x2a30('0x5a'),_0x2a30('0x7b'),_0x2a30('0x7c')),{'interaction':_0x5d11f1})[_0x2a30('0x1d')](function(_0xddb96d){var _0x506c40=path[_0x2a30('0x58')](_0x43d342,'transcript-'+_0x4f8e55['id']+'-'+_0x282e6a+_0x2a30('0x7d'));var _0x44abf4={'path':_0x506c40,'channel':'Whatsapp','interactionId':_0x4f8e55['id']};return pdf[_0x2a30('0x7e')](_0xddb96d,_0x44abf4);})[_0x2a30('0x1d')](function(){return new BPromise(function(_0x27fdf5,_0x29ce0e){zipdir(_0x43d342,{'saveTo':_0x3cf735},function(_0x44283f,_0x295695){if(_0x44283f)return _0x29ce0e(_0x44283f);return _0x27fdf5(_0x295695);});})[_0x2a30('0x1d')](function(){return new BPromise(function(_0x48043a,_0x14ba74){rimraf(_0x43d342,function(_0x5d1684){if(_0x5d1684)_0x14ba74(_0x5d1684);return _0x48043a();});});})[_0x2a30('0x1d')](function(){return _0x58ef02[_0x2a30('0x56')](_0x3cf735,_0x2309cf,function(_0x4695b5){if(_0x4695b5){console[_0x2a30('0x7f')](_0x2a30('0x80'),_0x4695b5);}else{fs[_0x2a30('0x81')](_0x3cf735);}});});});}else{return _0x58ef02['sendStatus'](0xc8);}})[_0x2a30('0x2a')](handleError(_0x58ef02,null));};
\ No newline at end of file
index 840d0f0..a0636a4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0xbde2=['setDataValue','Users','map','unreadMessages','length','emit','catch','hasOwnProperty','hook','exports','../../mysqldb','WhatsappInteraction','setMaxListeners','save','update','then'];(function(_0x479b34,_0x5a8461){var _0x59984c=function(_0x29fe30){while(--_0x29fe30){_0x479b34['push'](_0x479b34['shift']());}};_0x59984c(++_0x5a8461);}(_0xbde2,0x7a));var _0x2bde=function(_0x3294d2,_0x20ddcf){_0x3294d2=_0x3294d2-0x0;var _0x5dd392=_0xbde2[_0x3294d2];return _0x5dd392;};'use strict';var EventEmitter=require('events');var WhatsappInteraction=require(_0x2bde('0x0'))['db'][_0x2bde('0x1')];var WhatsappMessage=require(_0x2bde('0x0'))['db']['WhatsappMessage'];var WhatsappInteractionEvents=new EventEmitter();WhatsappInteractionEvents[_0x2bde('0x2')](0x0);var events={'afterCreate':_0x2bde('0x3'),'afterUpdate':_0x2bde('0x4'),'afterDestroy':'remove'};function emitEvent(_0x3622bb){return function(_0x211d7c,_0x2a8d2e,_0x3b3039){_0x211d7c['getUsers']({'attributes':['id'],'raw':!![]})[_0x2bde('0x5')](function(_0x7b834d){_0x211d7c[_0x2bde('0x6')](_0x2bde('0x7'),_0x7b834d[_0x2bde('0x8')](function(_0x27eda4){return{'id':_0x27eda4['id']};}));return WhatsappMessage['findAll']({'where':{'WhatsappInteractionId':_0x211d7c['id'],'direction':'in','read':![]},'raw':!![]});})['then'](function(_0x4a4bf0){_0x211d7c[_0x2bde('0x6')](_0x2bde('0x9'),_0x4a4bf0[_0x2bde('0xa')]);WhatsappInteractionEvents['emit'](_0x3622bb+':'+_0x211d7c['id'],_0x211d7c);WhatsappInteractionEvents[_0x2bde('0xb')](_0x3622bb,_0x211d7c);_0x3b3039(null);})[_0x2bde('0xc')](_0x3b3039(null));};}for(var e in events){if(events[_0x2bde('0xd')](e)){var event=events[e];WhatsappInteraction[_0x2bde('0xe')](e,emitEvent(event));}}module[_0x2bde('0xf')]=WhatsappInteractionEvents;
\ No newline at end of file
index 35000e1..f119044 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0xe7f8=['lodash','util','../../config/logger','api','moment','bluebird','request-promise','path','../../config/environment','./whatsappInteraction.attributes','define','changed','closedAt','format','YYYY-MM-DD\x20HH:mm:ss'];(function(_0x321bb2,_0x202794){var _0x9c12ed=function(_0x263dd3){while(--_0x263dd3){_0x321bb2['push'](_0x321bb2['shift']());}};_0x9c12ed(++_0x202794);}(_0xe7f8,0x1b3));var _0x8e7f=function(_0x39a7a7,_0x3dcf10){_0x39a7a7=_0x39a7a7-0x0;var _0x15a012=_0xe7f8[_0x39a7a7];return _0x15a012;};'use strict';var _=require(_0x8e7f('0x0'));var util=require(_0x8e7f('0x1'));var logger=require(_0x8e7f('0x2'))(_0x8e7f('0x3'));var moment=require(_0x8e7f('0x4'));var BPromise=require(_0x8e7f('0x5'));var rp=require(_0x8e7f('0x6'));var fs=require('fs');var path=require(_0x8e7f('0x7'));var rimraf=require('rimraf');var config=require(_0x8e7f('0x8'));var attributes=require(_0x8e7f('0x9'));module['exports']=function(_0x41b817,_0x2df4b6){return _0x41b817[_0x8e7f('0xa')]('WhatsappInteraction',attributes,{'tableName':'whatsapp_interactions','paranoid':![],'indexes':[],'timestamps':!![],'hooks':{'beforeUpdate':function(_0x453020,_0x5d580e,_0x392e9a){if(_0x453020[_0x8e7f('0xb')]('closed')){_0x453020[_0x8e7f('0xc')]=moment()[_0x8e7f('0xd')](_0x8e7f('0xe'));}_0x392e9a(null,_0x453020);}}});};
\ No newline at end of file
index 6878ee0..9129880 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0xd566=['redis','defaults','localhost','socket.io-emitter','./whatsappInteraction.socket','register','request','then','info','WhatsappInteraction,\x20%s,\x20%s','request\x20sent','debug','WhatsappInteraction,\x20%s,\x20%s,\x20%s','stringify','error','message','result','catch','update','options','raw','where','attributes','limit','UpdateWhatsappInteraction','AddTagsToWhatsappInteraction','WhatsappInteraction','find','addTags','body','omit','AddTags','lodash','util','moment','randomstring','ioredis','../../mysqldb','../../config/logger','rpc','../../config/environment','client'];(function(_0x5465db,_0x4d5502){var _0x2f1917=function(_0xc46f34){while(--_0xc46f34){_0x5465db['push'](_0x5465db['shift']());}};_0x2f1917(++_0x4d5502);}(_0xd566,0x170));var _0x6d56=function(_0x4b369d,_0x265eb8){_0x4b369d=_0x4b369d-0x0;var _0x571a98=_0xd566[_0x4b369d];return _0x571a98;};'use strict';var _=require(_0x6d56('0x0'));var util=require(_0x6d56('0x1'));var moment=require(_0x6d56('0x2'));var BPromise=require('bluebird');var rs=require(_0x6d56('0x3'));var fs=require('fs');var Redis=require(_0x6d56('0x4'));var db=require(_0x6d56('0x5'))['db'];var utils=require('../../config/utils');var logger=require(_0x6d56('0x6'))(_0x6d56('0x7'));var config=require(_0x6d56('0x8'));var jayson=require('jayson/promise');var client=jayson[_0x6d56('0x9')]['http']({'port':0x232a});config[_0x6d56('0xa')]=_[_0x6d56('0xb')](config[_0x6d56('0xa')],{'host':_0x6d56('0xc'),'port':0x18eb});var socket=require(_0x6d56('0xd'))(new Redis(config['redis']));require(_0x6d56('0xe'))[_0x6d56('0xf')](socket);function respondWithRpcPromise(_0x227443,_0x517c0b,_0x408b3a){return new BPromise(function(_0x24d9c5,_0x59ee8){return client[_0x6d56('0x10')](_0x227443,_0x408b3a)[_0x6d56('0x11')](function(_0x5e6b51){logger[_0x6d56('0x12')](_0x6d56('0x13'),_0x517c0b,_0x6d56('0x14'));logger[_0x6d56('0x15')](_0x6d56('0x16'),_0x517c0b,_0x6d56('0x14'),JSON[_0x6d56('0x17')](_0x5e6b51));if(_0x5e6b51[_0x6d56('0x18')]){if(_0x5e6b51[_0x6d56('0x18')]['code']===0x1f4){logger[_0x6d56('0x18')](_0x6d56('0x13'),_0x517c0b,_0x5e6b51['error'][_0x6d56('0x19')]);return _0x59ee8(_0x5e6b51[_0x6d56('0x18')][_0x6d56('0x19')]);}logger['error'](_0x6d56('0x13'),_0x517c0b,_0x5e6b51[_0x6d56('0x18')]['message']);return _0x24d9c5(_0x5e6b51[_0x6d56('0x18')][_0x6d56('0x19')]);}else{logger[_0x6d56('0x12')](_0x6d56('0x13'),_0x517c0b,_0x6d56('0x14'));_0x24d9c5(_0x5e6b51[_0x6d56('0x1a')][_0x6d56('0x19')]);}})[_0x6d56('0x1b')](function(_0x505e74){logger[_0x6d56('0x18')](_0x6d56('0x13'),_0x517c0b,_0x505e74);_0x59ee8(_0x505e74);});});}exports['UpdateWhatsappInteraction']=function(_0x3892b0){var _0x15c007=this;return new Promise(function(_0x4fc546,_0x261a74){return db['WhatsappInteraction'][_0x6d56('0x1c')](_0x3892b0['body'],{'raw':_0x3892b0[_0x6d56('0x1d')]?_0x3892b0[_0x6d56('0x1d')][_0x6d56('0x1e')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x3892b0[_0x6d56('0x1d')]?_0x3892b0[_0x6d56('0x1d')][_0x6d56('0x1f')]||null:null,'attributes':_0x3892b0['options']?_0x3892b0[_0x6d56('0x1d')][_0x6d56('0x20')]||null:null,'limit':_0x3892b0['options']?_0x3892b0[_0x6d56('0x1d')][_0x6d56('0x21')]||null:null})['then'](function(_0xdffd4a){logger[_0x6d56('0x12')](_0x6d56('0x22'),_0x3892b0);logger[_0x6d56('0x15')](_0x6d56('0x22'),_0x3892b0,JSON[_0x6d56('0x17')](_0xdffd4a));_0x4fc546(_0xdffd4a);})[_0x6d56('0x1b')](function(_0x217520){logger[_0x6d56('0x18')]('UpdateWhatsappInteraction',_0x217520[_0x6d56('0x19')],_0x3892b0);_0x261a74(_0x15c007['error'](0x1f4,_0x217520[_0x6d56('0x19')]));});});};exports[_0x6d56('0x23')]=function(_0x2836b6){return new Promise(function(_0x312982,_0x34bbbc){return db[_0x6d56('0x24')][_0x6d56('0x25')]({'where':_0x2836b6[_0x6d56('0x1d')]?_0x2836b6[_0x6d56('0x1d')][_0x6d56('0x1f')]||null:null})['then'](function(_0x129280){if(_0x129280){return _0x129280[_0x6d56('0x26')](_0x2836b6[_0x6d56('0x27')]['ids'],_[_0x6d56('0x28')](_0x2836b6[_0x6d56('0x27')],['ids','id'])||{});}})['spread'](function(_0xe21426){logger[_0x6d56('0x12')](_0x6d56('0x29'),_0x2836b6);logger[_0x6d56('0x15')]('AddTags',_0x2836b6,JSON[_0x6d56('0x17')](_0xe21426));_0x312982(_0xe21426);})[_0x6d56('0x1b')](function(_0x240bad){logger[_0x6d56('0x18')](_0x6d56('0x29'),_0x240bad[_0x6d56('0x19')],_0x2836b6);_0x34bbbc(_this[_0x6d56('0x18')](0x1f4,_0x240bad['message']));});});};
\ No newline at end of file
index 3ea4bc1..6554557 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0xd590=['whatsappInteraction:','./whatsappInteraction.events','remove','update','emit','removeListener','register'];(function(_0xbb3938,_0x487a1e){var _0x222558=function(_0x3f7c8c){while(--_0x3f7c8c){_0xbb3938['push'](_0xbb3938['shift']());}};_0x222558(++_0x487a1e);}(_0xd590,0x86));var _0x0d59=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0xd590[_0x3dd15e];return _0x231fd0;};'use strict';var WhatsappInteractionEvents=require(_0x0d59('0x0'));var events=['save',_0x0d59('0x1'),_0x0d59('0x2')];function createListener(_0x30161d,_0x3af517){return function(_0x54a85f){_0x3af517[_0x0d59('0x3')](_0x30161d,_0x54a85f);};}function removeListener(_0xa91d60,_0x225b3f){return function(){WhatsappInteractionEvents[_0x0d59('0x4')](_0xa91d60,_0x225b3f);};}exports[_0x0d59('0x5')]=function(_0x453471){for(var _0x4c52ba=0x0,_0x3b4d2c=events['length'];_0x4c52ba<_0x3b4d2c;_0x4c52ba++){var _0x10f6a4=events[_0x4c52ba];var _0x57c6e1=createListener(_0x0d59('0x6')+_0x10f6a4,_0x453471);WhatsappInteractionEvents['on'](_0x10f6a4,_0x57c6e1);}};
\ No newline at end of file
index 8830a5b..61760e7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0x4b4e=['post','tracked','whatsapp','whatsappmessage:create','create','status','put','update','/:id/accept','/:id/reject','reject','delete','destroy','exports','util','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../config/environment','isAuthenticated','index','get','/describe','describe','/:id','show'];(function(_0x495aff,_0x3546ed){var _0x3ca99e=function(_0x123395){while(--_0x123395){_0x495aff['push'](_0x495aff['shift']());}};_0x3ca99e(++_0x3546ed);}(_0x4b4e,0x17a));var _0xe4b4=function(_0x4a373d,_0x3d017f){_0x4a373d=_0x4a373d-0x0;var _0x4ff28c=_0x4b4e[_0x4a373d];return _0x4ff28c;};'use strict';var multer=require('multer');var util=require(_0xe4b4('0x0'));var path=require('path');var timeout=require(_0xe4b4('0x1'));var express=require(_0xe4b4('0x2'));var router=express[_0xe4b4('0x3')]();var fs_extra=require(_0xe4b4('0x4'));var auth=require(_0xe4b4('0x5'));var interaction=require('../../components/interaction/service');var config=require(_0xe4b4('0x6'));var controller=require('./whatsappMessage.controller');router['get']('/',auth[_0xe4b4('0x7')](),controller[_0xe4b4('0x8')]);router[_0xe4b4('0x9')](_0xe4b4('0xa'),auth[_0xe4b4('0x7')](),controller[_0xe4b4('0xb')]);router[_0xe4b4('0x9')](_0xe4b4('0xc'),auth[_0xe4b4('0x7')](),controller[_0xe4b4('0xd')]);router[_0xe4b4('0xe')]('/',auth[_0xe4b4('0x7')](),interaction[_0xe4b4('0xf')](_0xe4b4('0x10'),_0xe4b4('0x11')),controller[_0xe4b4('0x12')]);router[_0xe4b4('0xe')]('/:id/status',controller[_0xe4b4('0x13')]);router[_0xe4b4('0x14')](_0xe4b4('0xc'),auth[_0xe4b4('0x7')](),controller[_0xe4b4('0x15')]);router['put'](_0xe4b4('0x16'),auth[_0xe4b4('0x7')](),controller['accept']);router[_0xe4b4('0x14')](_0xe4b4('0x17'),auth[_0xe4b4('0x7')](),controller[_0xe4b4('0x18')]);router[_0xe4b4('0x19')]('/:id',auth[_0xe4b4('0x7')](),controller[_0xe4b4('0x1a')]);module[_0xe4b4('0x1b')]=router;
\ No newline at end of file
index b9df949..073b11d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0x8463=['DATE','TEXT','sequelize','medium','BOOLEAN','ENUM','out','STRING'];(function(_0x14add3,_0x13ce8d){var _0x4a174f=function(_0x2b3ed7){while(--_0x2b3ed7){_0x14add3['push'](_0x14add3['shift']());}};_0x4a174f(++_0x13ce8d);}(_0x8463,0x1b2));var _0x3846=function(_0x2cbaf6,_0x377abf){_0x2cbaf6=_0x2cbaf6-0x0;var _0x1f163f=_0x8463[_0x2cbaf6];return _0x1f163f;};'use strict';var Sequelize=require(_0x3846('0x0'));module['exports']={'body':{'type':Sequelize['TEXT'](_0x3846('0x1')),'allowNull':![]},'read':{'type':Sequelize[_0x3846('0x2')],'defaultValue':![]},'direction':{'type':Sequelize[_0x3846('0x3')]('in',_0x3846('0x4')),'defaultValue':'out','allowNull':![]},'messageId':{'type':Sequelize['STRING'](0xbe)},'phone':{'type':Sequelize[_0x3846('0x5')]},'readAt':{'type':Sequelize[_0x3846('0x6')]},'secret':{'type':Sequelize[_0x3846('0x2')],'defaultValue':![]},'providerName':{'type':Sequelize[_0x3846('0x5')]},'providerResponse':{'type':Sequelize[_0x3846('0x7')]}};
\ No newline at end of file
index 8fdd33c..8921ea3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0x4ec0=['sendStatus','stack','name','index','map','WhatsappMessage','rawAttributes','fieldName','type','key','model','query','keys','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','filters','pick','filter','merge','VIRTUAL','options','then','includeAll','include','findAll','show','find','create','body','params','describe','whatsapp-interactions','accept','read','readAt','format','YYYY-MM-DD\x20HH:mm:ss','UserId','user','agent','get','WhatsappInteractionId','isNil','interaction','[WHATSAPPMESSAGE:ACCEPT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s','role','null','AcceptMessage','SELECT\x20*\x20FROM\x20cm_contacts\x20WHERE\x20id\x20=\x20','ContactId','sequelize','Sequelize','QueryTypes','SELECT','fullname','email','internal','interface','SIP/%s','channel','EventManager','acceptmessage','reject','whatsapp','[WHATSAPPMESSAGE:REJECT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s','RejectMessage','rejectMessage','contact','User','motionChannel','event','rejectmessage','WhatsappAccount','WhatsappAccountId','inspect','twilio','MessageSid','messageId','MessageStatus','fast-json-patch','request-promise','moment','bluebird','mustache','path','sox','to-csv','fs-extra','squel','desk.js','querystring','papaparse','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../config/utils','../../config/environment','../../mysqldb','redis','socket.io-emitter','register','jayson/promise','client','request','info','WhatsappMessage,\x20%s,\x20%s','request\x20sent','debug','WhatsappMessage,\x20%s,\x20%s,\x20%s','stringify','error','code','message','catch','status','end','json','undefined','count','offset','limit','Content-Range','apply','update','destroy'];(function(_0x5a5f58,_0x2d7b66){var _0x3bf51c=function(_0xbde756){while(--_0xbde756){_0x5a5f58['push'](_0x5a5f58['shift']());}};_0x3bf51c(++_0x2d7b66);}(_0x4ec0,0xdc));var _0x04ec=function(_0x4b5f21,_0x4bd84b){_0x4b5f21=_0x4b5f21-0x0;var _0x37e5e9=_0x4ec0[_0x4b5f21];return _0x37e5e9;};'use strict';var emlformat=require('eml-format');var rimraf=require('rimraf');var zipdir=require('zip-dir');var jsonpatch=require(_0x04ec('0x0'));var rp=require(_0x04ec('0x1'));var moment=require(_0x04ec('0x2'));var BPromise=require(_0x04ec('0x3'));var Mustache=require(_0x04ec('0x4'));var util=require('util');var path=require(_0x04ec('0x5'));var sox=require(_0x04ec('0x6'));var csv=require(_0x04ec('0x7'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x04ec('0x8'));var _=require('lodash');var squel=require(_0x04ec('0x9'));var crypto=require('crypto');var jsforce=require('jsforce');var deskjs=require(_0x04ec('0xa'));var toCsv=require(_0x04ec('0x7'));var querystring=require(_0x04ec('0xb'));var Papa=require(_0x04ec('0xc'));var Redis=require(_0x04ec('0xd'));var authService=require('../../components/auth/service');var qs=require(_0x04ec('0xe'));var as=require(_0x04ec('0xf'));var hardwareService=require(_0x04ec('0x10'));var logger=require(_0x04ec('0x11'))('api');var utils=require(_0x04ec('0x12'));var config=require(_0x04ec('0x13'));var licenseUtil=require('../../config/license/util');var db=require(_0x04ec('0x14'))['db'];config['redis']=_['defaults'](config[_0x04ec('0x15')],{'host':'localhost','port':0x18eb});var socket=require(_0x04ec('0x16'))(new Redis(config[_0x04ec('0x15')]));require('./whatsappMessage.socket')[_0x04ec('0x17')](socket);var jayson=require(_0x04ec('0x18'));var client=jayson[_0x04ec('0x19')]['http']({'port':0x232c});var client9002=jayson[_0x04ec('0x19')]['http']({'port':0x232a});function respondWithRpcPromise(_0x531be9,_0x5d2cd5,_0x2ee6b5,_0x23860b){return new BPromise(function(_0xc71a1d,_0x4103df){var _0x2a7621=_0x23860b||client;return _0x2a7621[_0x04ec('0x1a')](_0x531be9,_0x2ee6b5)['then'](function(_0x3fa11f){logger[_0x04ec('0x1b')](_0x04ec('0x1c'),_0x5d2cd5,_0x04ec('0x1d'));logger[_0x04ec('0x1e')](_0x04ec('0x1f'),_0x5d2cd5,_0x04ec('0x1d'),JSON[_0x04ec('0x20')](_0x3fa11f));if(_0x3fa11f[_0x04ec('0x21')]){if(_0x3fa11f[_0x04ec('0x21')][_0x04ec('0x22')]===0x1f4){logger[_0x04ec('0x21')]('WhatsappMessage,\x20%s,\x20%s',_0x5d2cd5,_0x3fa11f[_0x04ec('0x21')]['message']);return _0x4103df(_0x3fa11f['error'][_0x04ec('0x23')]);}logger[_0x04ec('0x21')](_0x04ec('0x1c'),_0x5d2cd5,_0x3fa11f['error'][_0x04ec('0x23')]);return _0xc71a1d(_0x3fa11f['error']['message']);}else{logger[_0x04ec('0x1b')](_0x04ec('0x1c'),_0x5d2cd5,_0x04ec('0x1d'));_0xc71a1d(_0x3fa11f['result'][_0x04ec('0x23')]);}})[_0x04ec('0x24')](function(_0x5a1d46){logger['error'](_0x04ec('0x1c'),_0x5d2cd5,_0x5a1d46);_0x4103df(_0x5a1d46);});});}function respondWithStatusCode(_0xd12bd3,_0x36e84d){_0x36e84d=_0x36e84d||0xcc;return function(_0x2bb078){if(_0x2bb078){return _0xd12bd3['sendStatus'](_0x36e84d);}return _0xd12bd3[_0x04ec('0x25')](_0x36e84d)[_0x04ec('0x26')]();};}function respondWithResult(_0x45a51e,_0x16e0fa){_0x16e0fa=_0x16e0fa||0xc8;return function(_0x3b7f94){if(_0x3b7f94){return _0x45a51e['status'](_0x16e0fa)[_0x04ec('0x27')](_0x3b7f94);}};}function respondWithFilteredResult(_0x29610f,_0x2820e6){return function(_0x16ea75){if(_0x16ea75){var _0x1e6a21=typeof _0x2820e6['offset']==='undefined'&&typeof _0x2820e6['limit']===_0x04ec('0x28');var _0x4cdca4=_0x16ea75[_0x04ec('0x29')];var _0x5d0ab5=_0x1e6a21?0x0:_0x2820e6[_0x04ec('0x2a')];var _0x246fbf=_0x1e6a21?_0x16ea75[_0x04ec('0x29')]:_0x2820e6[_0x04ec('0x2a')]+_0x2820e6[_0x04ec('0x2b')];var _0x1e3649;if(_0x246fbf>=_0x4cdca4){_0x246fbf=_0x4cdca4;_0x1e3649=0xc8;}else{_0x1e3649=0xce;}_0x29610f[_0x04ec('0x25')](_0x1e3649);return _0x29610f['set'](_0x04ec('0x2c'),_0x5d0ab5+'-'+_0x246fbf+'/'+_0x4cdca4)[_0x04ec('0x27')](_0x16ea75);}return null;};}function patchUpdates(_0x5e97d3){return function(_0x306ab9){try{jsonpatch[_0x04ec('0x2d')](_0x306ab9,_0x5e97d3,!![]);}catch(_0x450600){return BPromise['reject'](_0x450600);}return _0x306ab9['save']();};}function saveUpdates(_0x3441be,_0xd152a4){return function(_0x75adeb){if(_0x75adeb){return _0x75adeb[_0x04ec('0x2e')](_0x3441be)['then'](function(_0x4ee785){return _0x4ee785;});}return null;};}function removeEntity(_0x11266e,_0x1e79e6){return function(_0x106982){if(_0x106982){return _0x106982[_0x04ec('0x2f')]()['then'](function(){_0x11266e[_0x04ec('0x25')](0xcc)['end']();});}};}function handleEntityNotFound(_0x4b0f78,_0x56ece3){return function(_0x53ae4c){if(!_0x53ae4c){_0x4b0f78[_0x04ec('0x30')](0x194);}return _0x53ae4c;};}function handleError(_0x4cf896,_0x1a9c4a){_0x1a9c4a=_0x1a9c4a||0x1f4;return function(_0x4c3c06){logger['error'](_0x4c3c06[_0x04ec('0x31')]);if(_0x4c3c06[_0x04ec('0x32')]){delete _0x4c3c06[_0x04ec('0x32')];}_0x4cf896[_0x04ec('0x25')](_0x1a9c4a)['send'](_0x4c3c06);};}exports[_0x04ec('0x33')]=function(_0x5f6192,_0x2739a5){var _0x1956cd={},_0xd22eca={},_0x1915f3={'count':0x0,'rows':[]};var _0x4fb71d=_[_0x04ec('0x34')](db[_0x04ec('0x35')][_0x04ec('0x36')],function(_0x4095ec){return{'name':_0x4095ec[_0x04ec('0x37')],'type':_0x4095ec[_0x04ec('0x38')][_0x04ec('0x39')]};});_0xd22eca[_0x04ec('0x3a')]=_['map'](_0x4fb71d,'name');_0xd22eca[_0x04ec('0x3b')]=_[_0x04ec('0x3c')](_0x5f6192[_0x04ec('0x3b')]);_0xd22eca['filters']=_[_0x04ec('0x3d')](_0xd22eca['model'],_0xd22eca[_0x04ec('0x3b')]);_0x1956cd[_0x04ec('0x3e')]=_[_0x04ec('0x3d')](_0xd22eca[_0x04ec('0x3a')],qs[_0x04ec('0x3f')](_0x5f6192[_0x04ec('0x3b')][_0x04ec('0x3f')]));_0x1956cd[_0x04ec('0x3e')]=_0x1956cd[_0x04ec('0x3e')][_0x04ec('0x40')]?_0x1956cd[_0x04ec('0x3e')]:_0xd22eca[_0x04ec('0x3a')];if(!_0x5f6192[_0x04ec('0x3b')][_0x04ec('0x41')](_0x04ec('0x42'))){_0x1956cd[_0x04ec('0x2b')]=qs[_0x04ec('0x2b')](_0x5f6192[_0x04ec('0x3b')][_0x04ec('0x2b')]);_0x1956cd[_0x04ec('0x2a')]=qs[_0x04ec('0x2a')](_0x5f6192[_0x04ec('0x3b')]['offset']);}_0x1956cd[_0x04ec('0x43')]=qs[_0x04ec('0x44')](_0x5f6192[_0x04ec('0x3b')][_0x04ec('0x44')]);_0x1956cd[_0x04ec('0x45')]=qs[_0x04ec('0x46')](_[_0x04ec('0x47')](_0x5f6192[_0x04ec('0x3b')],_0xd22eca['filters']),_0x4fb71d);if(_0x5f6192['query'][_0x04ec('0x48')]){_0x1956cd[_0x04ec('0x45')]=_[_0x04ec('0x49')](_0x1956cd[_0x04ec('0x45')],{'$or':_[_0x04ec('0x34')](_0x4fb71d,function(_0x244b88){if(_0x244b88[_0x04ec('0x38')]!==_0x04ec('0x4a')){var _0x42edd1={};_0x42edd1[_0x244b88[_0x04ec('0x32')]]={'$like':'%'+_0x5f6192[_0x04ec('0x3b')][_0x04ec('0x48')]+'%'};return _0x42edd1;}})});}_0x1956cd=_[_0x04ec('0x49')]({},_0x1956cd,_0x5f6192[_0x04ec('0x4b')]);var _0x23be70={'where':_0x1956cd['where']};return db[_0x04ec('0x35')][_0x04ec('0x29')](_0x23be70)[_0x04ec('0x4c')](function(_0x2e544a){_0x1915f3[_0x04ec('0x29')]=_0x2e544a;if(_0x5f6192[_0x04ec('0x3b')][_0x04ec('0x4d')]){_0x1956cd[_0x04ec('0x4e')]=[{'all':!![]}];}return db[_0x04ec('0x35')][_0x04ec('0x4f')](_0x1956cd);})[_0x04ec('0x4c')](function(_0x202458){_0x1915f3['rows']=_0x202458;return _0x1915f3;})[_0x04ec('0x4c')](respondWithFilteredResult(_0x2739a5,_0x1956cd))['catch'](handleError(_0x2739a5,null));};exports[_0x04ec('0x50')]=function(_0x1123d9,_0xed857){var _0x589604={'raw':!![],'where':{'id':_0x1123d9['params']['id']}},_0xaf9871={};_0xaf9871[_0x04ec('0x3a')]=_[_0x04ec('0x3c')](db[_0x04ec('0x35')][_0x04ec('0x36')]);_0xaf9871[_0x04ec('0x3b')]=_[_0x04ec('0x3c')](_0x1123d9[_0x04ec('0x3b')]);_0xaf9871[_0x04ec('0x46')]=_[_0x04ec('0x3d')](_0xaf9871[_0x04ec('0x3a')],_0xaf9871[_0x04ec('0x3b')]);_0x589604['attributes']=_['intersection'](_0xaf9871[_0x04ec('0x3a')],qs[_0x04ec('0x3f')](_0x1123d9['query']['fields']));_0x589604['attributes']=_0x589604[_0x04ec('0x3e')][_0x04ec('0x40')]?_0x589604[_0x04ec('0x3e')]:_0xaf9871['model'];if(_0x1123d9[_0x04ec('0x3b')][_0x04ec('0x4d')]){_0x589604[_0x04ec('0x4e')]=[{'all':!![]}];}_0x589604=_[_0x04ec('0x49')]({},_0x589604,_0x1123d9[_0x04ec('0x4b')]);return db[_0x04ec('0x35')][_0x04ec('0x51')](_0x589604)['then'](handleEntityNotFound(_0xed857,null))['then'](respondWithResult(_0xed857,null))[_0x04ec('0x24')](handleError(_0xed857,null));};exports[_0x04ec('0x52')]=function(_0x64aab1,_0x1e9ac9){return db[_0x04ec('0x35')][_0x04ec('0x52')](_0x64aab1[_0x04ec('0x53')],{})[_0x04ec('0x4c')](respondWithResult(_0x1e9ac9,0xc9))[_0x04ec('0x24')](handleError(_0x1e9ac9,null));};exports[_0x04ec('0x2e')]=function(_0x2ce080,_0x399144){if(_0x2ce080[_0x04ec('0x53')]['id']){delete _0x2ce080[_0x04ec('0x53')]['id'];}return db['WhatsappMessage'][_0x04ec('0x51')]({'where':{'id':_0x2ce080['params']['id']}})[_0x04ec('0x4c')](handleEntityNotFound(_0x399144,null))[_0x04ec('0x4c')](saveUpdates(_0x2ce080[_0x04ec('0x53')],null))[_0x04ec('0x4c')](respondWithResult(_0x399144,null))[_0x04ec('0x24')](handleError(_0x399144,null));};exports[_0x04ec('0x2f')]=function(_0x323901,_0x904d9a){return db['WhatsappMessage']['find']({'where':{'id':_0x323901[_0x04ec('0x54')]['id']}})[_0x04ec('0x4c')](handleEntityNotFound(_0x904d9a,null))[_0x04ec('0x4c')](removeEntity(_0x904d9a,null))[_0x04ec('0x24')](handleError(_0x904d9a,null));};exports[_0x04ec('0x55')]=function(_0x3b29d9,_0x50e6a2){return db[_0x04ec('0x35')][_0x04ec('0x55')]()[_0x04ec('0x4c')](respondWithResult(_0x50e6a2,null))[_0x04ec('0x24')](handleError(_0x50e6a2,null));};var interaction_log=require('../../config/logger')(_0x04ec('0x56'));exports[_0x04ec('0x57')]=function(_0x38ba1d,_0x524001,_0x374e07){var _0x1e7f63={'agent':{},'channel':'whatsapp'};if(_0x38ba1d[_0x04ec('0x53')]['id']){delete _0x38ba1d[_0x04ec('0x53')]['id'];}_0x38ba1d['body'][_0x04ec('0x58')]=!![];_0x38ba1d[_0x04ec('0x53')][_0x04ec('0x59')]=moment()[_0x04ec('0x5a')](_0x04ec('0x5b'));_0x38ba1d[_0x04ec('0x53')][_0x04ec('0x5c')]=_0x38ba1d[_0x04ec('0x53')]['UserId']||_0x38ba1d[_0x04ec('0x5d')]['id'];_0x1e7f63[_0x04ec('0x5e')]['id']=_0x38ba1d['body'][_0x04ec('0x5c')];return db[_0x04ec('0x35')]['find']({'where':{'id':_0x38ba1d[_0x04ec('0x54')]['id'],'UserId':null}})[_0x04ec('0x4c')](handleEntityNotFound(_0x524001,null))['then'](saveUpdates(_0x38ba1d[_0x04ec('0x53')],null))[_0x04ec('0x4c')](function(_0x59908b){if(_0x59908b){_0x1e7f63[_0x04ec('0x23')]=_0x59908b[_0x04ec('0x5f')]({'plain':!![]});return db['WhatsappInteraction']['find']({'where':{'id':_0x59908b[_0x04ec('0x60')]}});}return null;})[_0x04ec('0x4c')](handleEntityNotFound(_0x524001,null))['then'](function(_0x54c536){if(_0x54c536){return _0x54c536['update']({'UserId':_0x38ba1d[_0x04ec('0x53')][_0x04ec('0x5c')],'read1stAt':_[_0x04ec('0x61')](_0x54c536['read1stAt'])?moment()[_0x04ec('0x5a')](_0x04ec('0x5b')):undefined});}return null;})['then'](function(_0x2a7efe){if(_0x2a7efe){_0x1e7f63[_0x04ec('0x62')]=_0x2a7efe['get']({'plain':!![]});interaction_log[_0x04ec('0x1b')](_0x04ec('0x63'),_0x38ba1d[_0x04ec('0x5d')]['id'],_0x38ba1d['user'][_0x04ec('0x32')],_0x38ba1d[_0x04ec('0x5d')][_0x04ec('0x64')],_0x1e7f63[_0x04ec('0x62')]['id'],_0x38ba1d['body']?JSON[_0x04ec('0x20')](_0x38ba1d[_0x04ec('0x53')]):_0x04ec('0x65'));return respondWithRpcPromise(_0x04ec('0x66'),'acceptMessage',_0x1e7f63);}return null;})[_0x04ec('0x4c')](function(_0x2ff33e){var _0xdaba24=_0x04ec('0x67')+_0x2ff33e[_0x04ec('0x23')][_0x04ec('0x68')];return db[_0x04ec('0x69')][_0x04ec('0x3b')](_0xdaba24,{'type':db[_0x04ec('0x6a')][_0x04ec('0x6b')][_0x04ec('0x6c')],'raw':!![]})[_0x04ec('0x4c')](function(_0x47d668){return _0x47d668;});})[_0x04ec('0x4c')](function(_0x17b41e){if(_0x17b41e){_0x1e7f63[_0x04ec('0x23')]['contact']=_0x17b41e[0x0];if(!_0x38ba1d[_0x04ec('0x53')][_0x04ec('0x5c')])return;return db['User']['find']({'where':{'id':_0x38ba1d[_0x04ec('0x53')][_0x04ec('0x5c')],'role':_0x04ec('0x5e')},'attributes':['id',_0x04ec('0x32'),_0x04ec('0x6d'),_0x04ec('0x6e'),_0x04ec('0x6f')],'raw':!![]});}return null;})[_0x04ec('0x4c')](function(_0x22b5a0){if(!_0x22b5a0)return null;_0x1e7f63['message'][_0x04ec('0x5e')]=_0x22b5a0;return _0x1e7f63;})[_0x04ec('0x4c')](function(_0x217ccb){if(_0x217ccb){if(_0x38ba1d['body']['manual']){_0x1e7f63[_0x04ec('0x23')][_0x04ec('0x70')]=util[_0x04ec('0x5a')](_0x04ec('0x71'),_0x38ba1d[_0x04ec('0x5d')][_0x04ec('0x32')]);_0x1e7f63[_0x04ec('0x23')][_0x04ec('0x72')]=_0x1e7f63['channel'];_0x1e7f63['message']['motionChannel']=_0x1e7f63[_0x04ec('0x72')];_0x1e7f63[_0x04ec('0x23')]['event']=_0x04ec('0x57');return respondWithRpcPromise(_0x04ec('0x73'),_0x04ec('0x73'),{'event':_0x04ec('0x74'),'message':_0x1e7f63['message']},client9002)[_0x04ec('0x4c')](function(){return _0x1e7f63;});}return _0x1e7f63;}return null;})[_0x04ec('0x4c')](respondWithResult(_0x524001,null))[_0x04ec('0x24')](handleError(_0x524001,null));};var interaction_log=require(_0x04ec('0x11'))('whatsapp-interactions');exports[_0x04ec('0x75')]=function(_0x255fa2,_0x288c5b,_0x5d6247){var _0x2d07ae={'agent':{},'channel':_0x04ec('0x76')};if(_0x255fa2[_0x04ec('0x53')]['id']){delete _0x255fa2[_0x04ec('0x53')]['id'];}_0x255fa2['body'][_0x04ec('0x5c')]=_0x255fa2[_0x04ec('0x53')][_0x04ec('0x5c')]||_0x255fa2['user']['id'];_0x2d07ae[_0x04ec('0x5e')]['id']=_0x255fa2[_0x04ec('0x53')][_0x04ec('0x5c')];return db[_0x04ec('0x35')]['find']({'where':{'id':_0x255fa2['params']['id'],'UserId':null}})[_0x04ec('0x4c')](handleEntityNotFound(_0x288c5b,null))[_0x04ec('0x4c')](function(_0x3e88d5){if(_0x3e88d5){_0x2d07ae[_0x04ec('0x23')]=_0x3e88d5['get']({'plain':!![]});return db['WhatsappInteraction'][_0x04ec('0x51')]({'where':{'id':_0x3e88d5['WhatsappInteractionId']}});}return null;})[_0x04ec('0x4c')](handleEntityNotFound(_0x288c5b,null))[_0x04ec('0x4c')](function(_0x17c828){if(_0x17c828){_0x2d07ae[_0x04ec('0x62')]=_0x17c828[_0x04ec('0x5f')]({'plain':!![]});interaction_log[_0x04ec('0x1b')](_0x04ec('0x77'),_0x255fa2[_0x04ec('0x5d')]['id'],_0x255fa2[_0x04ec('0x5d')][_0x04ec('0x32')],_0x255fa2[_0x04ec('0x5d')][_0x04ec('0x64')],_0x2d07ae[_0x04ec('0x62')]['id'],_0x255fa2[_0x04ec('0x53')]?JSON[_0x04ec('0x20')](_0x255fa2[_0x04ec('0x53')]):_0x04ec('0x65'));return respondWithRpcPromise(_0x04ec('0x78'),_0x04ec('0x79'),_0x2d07ae);}return null;})['then'](function(_0x3cc4e9){var _0x1132f7=_0x04ec('0x67')+_0x3cc4e9['message']['ContactId'];return db['sequelize'][_0x04ec('0x3b')](_0x1132f7,{'type':db[_0x04ec('0x6a')]['QueryTypes'][_0x04ec('0x6c')],'raw':!![]})[_0x04ec('0x4c')](function(_0x5bcdfb){return _0x5bcdfb;});})[_0x04ec('0x4c')](function(_0x2fcf22){if(_0x2fcf22){_0x2d07ae[_0x04ec('0x23')][_0x04ec('0x7a')]=_0x2fcf22[0x0];if(!_0x255fa2[_0x04ec('0x53')][_0x04ec('0x5c')])return;return db[_0x04ec('0x7b')][_0x04ec('0x51')]({'where':{'id':_0x255fa2['body']['UserId'],'role':'agent'},'attributes':['id',_0x04ec('0x32'),_0x04ec('0x6d'),_0x04ec('0x6e'),_0x04ec('0x6f')],'raw':!![]});}return null;})['then'](function(_0x340273){if(!_0x340273)return null;_0x2d07ae['message'][_0x04ec('0x5e')]=_0x340273;return _0x2d07ae;})['then'](function(_0x349ac0){if(_0x349ac0){_0x349ac0[_0x04ec('0x23')][_0x04ec('0x70')]=util[_0x04ec('0x5a')](_0x04ec('0x71'),_0x255fa2['user'][_0x04ec('0x32')]);_0x349ac0[_0x04ec('0x23')][_0x04ec('0x72')]=_0x2d07ae[_0x04ec('0x72')];_0x349ac0['message'][_0x04ec('0x7c')]=_0x2d07ae[_0x04ec('0x72')];_0x349ac0[_0x04ec('0x23')][_0x04ec('0x7d')]=_0x04ec('0x75');respondWithRpcPromise(_0x04ec('0x73'),'EventManager',{'event':_0x04ec('0x7e'),'message':_0x349ac0[_0x04ec('0x23')]},client9002);return _0x2d07ae;}return null;})[_0x04ec('0x4c')](respondWithResult(_0x288c5b,null))[_0x04ec('0x24')](handleError(_0x288c5b,null));};exports[_0x04ec('0x25')]=function(_0x4a0160,_0x58bba3,_0x231426){if(_0x4a0160[_0x04ec('0x53')]['id']){delete _0x4a0160['body']['id'];}var _0xa17a16;return db['WhatsappMessage'][_0x04ec('0x51')]({'where':{'id':_0x4a0160[_0x04ec('0x54')]['id']}})[_0x04ec('0x4c')](handleEntityNotFound(_0x58bba3,null))[_0x04ec('0x4c')](function(_0xb1224a){if(_0xb1224a){_0xa17a16=_0xb1224a;return db[_0x04ec('0x7f')][_0x04ec('0x51')]({'where':{'id':_0xb1224a[_0x04ec('0x80')]}});}})['then'](handleEntityNotFound(_0x58bba3,null))[_0x04ec('0x4c')](function(_0x1f9a03){if(_0x1f9a03){logger[_0x04ec('0x1e')]('WhatsppMessage,\x20%s,\x20%s,\x20%s','status','received\x20delivery\x20report\x20from',_0x1f9a03[_0x04ec('0x38')],util[_0x04ec('0x81')](_0x4a0160['body'],{'showHidden':![],'depth':null}));switch(_0x1f9a03[_0x04ec('0x38')]){case _0x04ec('0x82'):if(_0x4a0160['body'][_0x04ec('0x83')]&&_0x4a0160[_0x04ec('0x53')][_0x04ec('0x83')]===_0xa17a16[_0x04ec('0x84')]&&_0x4a0160[_0x04ec('0x53')][_0x04ec('0x85')]&&_0x4a0160[_0x04ec('0x53')][_0x04ec('0x85')]===_0x04ec('0x58')){return _0xa17a16[_0x04ec('0x2e')]({'read':!![]});}else{logger[_0x04ec('0x21')]('WhatsappAccount,\x20%s,\x20%s,\x20%s',_0x04ec('0x25'),_0x04ec('0x82'),util['inspect'](_0x4a0160[_0x04ec('0x53')],{'showHidden':![],'depth':null}));}break;}return _0xa17a16;}})[_0x04ec('0x4c')](respondWithResult(_0x58bba3,null))[_0x04ec('0x24')](handleError(_0x58bba3,null));};
\ No newline at end of file
index 6990d0e..2c28e14 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0xe130=['../../mysqldb','setMaxListeners','save','update','remove','emit','hook','events'];(function(_0x462185,_0x5d641a){var _0x31760c=function(_0x907aad){while(--_0x907aad){_0x462185['push'](_0x462185['shift']());}};_0x31760c(++_0x5d641a);}(_0xe130,0x127));var _0x0e13=function(_0x51cfeb,_0x5515c2){_0x51cfeb=_0x51cfeb-0x0;var _0x2dcdcc=_0xe130[_0x51cfeb];return _0x2dcdcc;};'use strict';var EventEmitter=require(_0x0e13('0x0'));var WhatsappMessage=require(_0x0e13('0x1'))['db']['WhatsappMessage'];var WhatsappMessageEvents=new EventEmitter();WhatsappMessageEvents[_0x0e13('0x2')](0x0);var events={'afterCreate':_0x0e13('0x3'),'afterUpdate':_0x0e13('0x4'),'afterDestroy':_0x0e13('0x5')};function emitEvent(_0x449ddd){return function(_0x504f15,_0x1489a9,_0x223c28){WhatsappMessageEvents[_0x0e13('0x6')](_0x449ddd+':'+_0x504f15['id'],_0x504f15);WhatsappMessageEvents[_0x0e13('0x6')](_0x449ddd,_0x504f15);_0x223c28(null);};}for(var e in events){if(events['hasOwnProperty'](e)){var event=events[e];WhatsappMessage[_0x0e13('0x7')](e,emitEvent(event));}}module['exports']=WhatsappMessageEvents;
\ No newline at end of file
index e11ac1e..2c9b9f9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0x5f30=['application/json','message_id','err','utf8mb4','utf8mb4_unicode_ci','lodash','api','request-promise','node-fetch','path','../../config/environment','./whatsappMessage.attributes','exports','define','WhatsappMessage','whatsapp_messages','messageId','fti_whatsapp_messages','body','FULLTEXT','direction','toLowerCase','out','secret','isNil','UserId','WhatsappInteraction','findOne','WhatsappInteractionId','then','update','createdAt','catch','error','WhatsappAccount','find','WhatsappAccountId','type','twilio','accountSid','authToken','phone','messages','create','whatsapp:','/api/whatsapp/messages/','/status?token=','token','sid','WhatsappMessage,\x20%s,\x20%s,\x20%s','afterCreate','inspect','Missing\x20parameters:\x20phone,\x20accountSid\x20or\x20authToken','baseUrl','/messages/','POST','Bearer\x20'];(function(_0x5a86bf,_0x4f2560){var _0x1b2611=function(_0x25dd24){while(--_0x25dd24){_0x5a86bf['push'](_0x5a86bf['shift']());}};_0x1b2611(++_0x4f2560);}(_0x5f30,0xe9));var _0x05f3=function(_0x4540ee,_0xfdf682){_0x4540ee=_0x4540ee-0x0;var _0x5443d1=_0x5f30[_0x4540ee];return _0x5443d1;};'use strict';var _=require(_0x05f3('0x0'));var util=require('util');var logger=require('../../config/logger')(_0x05f3('0x1'));var moment=require('moment');var BPromise=require('bluebird');var rp=require(_0x05f3('0x2'));var fetch=require(_0x05f3('0x3'));var fs=require('fs');var path=require(_0x05f3('0x4'));var rimraf=require('rimraf');var config=require(_0x05f3('0x5'));var attributes=require(_0x05f3('0x6'));module[_0x05f3('0x7')]=function(_0x1dc586,_0x2b008a){return _0x1dc586[_0x05f3('0x8')](_0x05f3('0x9'),attributes,{'tableName':_0x05f3('0xa'),'paranoid':![],'indexes':[{'name':_0x05f3('0xb'),'fields':[_0x05f3('0xb')]},{'name':_0x05f3('0xc'),'fields':[_0x05f3('0xd')],'type':_0x05f3('0xe')}],'timestamps':!![],'hooks':{'afterCreate':function(_0x3f0515,_0x2ea2f8,_0x56744e){var _0x38febe=_0x1dc586['models'];var _0x608b3e=_0x3f0515['get']({'plain':!![]});if(_0x608b3e[_0x05f3('0xf')][_0x05f3('0x10')]()==='in'||_0x608b3e[_0x05f3('0xf')][_0x05f3('0x10')]()===_0x05f3('0x11')&&!_0x608b3e[_0x05f3('0x12')]&&!_[_0x05f3('0x13')](_0x608b3e[_0x05f3('0x14')])){_0x38febe[_0x05f3('0x15')][_0x05f3('0x16')]({'where':{'id':_0x608b3e[_0x05f3('0x17')]}})[_0x05f3('0x18')](function(_0x3c4c17){if(_0x3c4c17){_0x3c4c17[_0x05f3('0x19')]({'lastMsgAt':_0x608b3e[_0x05f3('0x1a')],'lastMsgDirection':_0x608b3e[_0x05f3('0xf')][_0x05f3('0x10')]()});}})[_0x05f3('0x1b')](function(_0x56caa5){console[_0x05f3('0x1c')](_0x56caa5);});}if(_0x608b3e[_0x05f3('0xf')]===_0x05f3('0x11')&&!_0x608b3e['secret']){var _0x4bb59f;_0x38febe[_0x05f3('0x1d')][_0x05f3('0x1e')]({'where':{'id':_0x608b3e[_0x05f3('0x1f')]},'raw':!![]})[_0x05f3('0x18')](function(_0x315c40){_0x4bb59f=_0x315c40;if(_0x4bb59f&&_0x4bb59f['type']){switch(_0x4bb59f[_0x05f3('0x20')]){case _0x05f3('0x21'):var _0x26df46=require(_0x05f3('0x21'));if(_0x4bb59f[_0x05f3('0x22')]&&_0x4bb59f[_0x05f3('0x23')]&&_0x4bb59f[_0x05f3('0x24')]){var _0x1025ba=new _0x26df46(_0x4bb59f['accountSid'],_0x4bb59f[_0x05f3('0x23')]);_0x1025ba[_0x05f3('0x25')][_0x05f3('0x26')]({'body':_0x608b3e[_0x05f3('0xd')],'to':_0x05f3('0x27')+_0x608b3e[_0x05f3('0x24')],'from':_0x05f3('0x27')+_0x4bb59f[_0x05f3('0x24')],'statusCallback':_0x4bb59f['remote']+_0x05f3('0x28')+_0x608b3e['id']+_0x05f3('0x29')+_0x4bb59f[_0x05f3('0x2a')]})['then'](function(_0x5960b9){if(_0x5960b9[_0x05f3('0x2b')]){return _0x3f0515[_0x05f3('0x19')]({'messageId':_0x5960b9[_0x05f3('0x2b')]});}})[_0x05f3('0x1b')](function(_0x2841c9){logger[_0x05f3('0x1c')](_0x05f3('0x2c'),_0x05f3('0x2d'),'twilio',util[_0x05f3('0x2e')](_0x2841c9,{'showHidden':![],'depth':null}));});}else{logger[_0x05f3('0x1c')]('WhatsappMessage,\x20%s,\x20%s,\x20%s',_0x05f3('0x2d'),_0x05f3('0x21'),_0x05f3('0x2f'));}break;case'sinch':var _0x4c2259=_0x4bb59f[_0x05f3('0x22')];var _0x516f4e=_0x4bb59f['authToken'];var _0x8276ea=_0x4bb59f[_0x05f3('0x30')]+'/whatsapp/v1/'+_0x4c2259+_0x05f3('0x31');var _0x5eccf3={'to':[_0x608b3e[_0x05f3('0x24')]],'message':{'type':'text','text':_0x608b3e['body']}};var _0x4981fb={'method':_0x05f3('0x32'),'uri':_0x8276ea,'headers':{'Authorization':_0x05f3('0x33')+_0x516f4e,'Content-Type':_0x05f3('0x34')},'body':_0x5eccf3,'json':!![]};rp(_0x4981fb)[_0x05f3('0x18')](function(_0x3cfe34){if(_0x3cfe34['statuses'][0x0][_0x05f3('0x35')]){return _0x3f0515[_0x05f3('0x19')]({'messageId':_0x3cfe34['statuses'][0x0]['message_id']});}})['catch'](function(_0x9257ec){logger[_0x05f3('0x36')]('WhatsappMessage,\x20%s',_0x9257ec);});break;}}})['finally'](function(){_0x56744e();});}else{_0x56744e();}}},'charset':_0x05f3('0x37'),'collate':_0x05f3('0x38')});};
\ No newline at end of file
index 67c4612..ddc19a0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0x814a=['WhatsappMessage,\x20%s,\x20%s','request\x20sent','debug','stringify','error','code','message','result','WhatsappMessage','create','body','options','raw','CreateWhatsappMessage','catch','lodash','util','moment','bluebird','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','jayson/promise','client','redis','defaults','localhost','./whatsappMessage.socket','register','request','then','info'];(function(_0x2f2cb8,_0x417d38){var _0x5a7add=function(_0xc1da1d){while(--_0xc1da1d){_0x2f2cb8['push'](_0x2f2cb8['shift']());}};_0x5a7add(++_0x417d38);}(_0x814a,0x185));var _0xa814=function(_0x3f050c,_0x379efd){_0x3f050c=_0x3f050c-0x0;var _0x21d1d5=_0x814a[_0x3f050c];return _0x21d1d5;};'use strict';var _=require(_0xa814('0x0'));var util=require(_0xa814('0x1'));var moment=require(_0xa814('0x2'));var BPromise=require(_0xa814('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0xa814('0x4'));var db=require(_0xa814('0x5'))['db'];var utils=require(_0xa814('0x6'));var logger=require(_0xa814('0x7'))(_0xa814('0x8'));var config=require('../../config/environment');var jayson=require(_0xa814('0x9'));var client=jayson[_0xa814('0xa')]['http']({'port':0x232a});config[_0xa814('0xb')]=_[_0xa814('0xc')](config[_0xa814('0xb')],{'host':_0xa814('0xd'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config['redis']));require(_0xa814('0xe'))[_0xa814('0xf')](socket);function respondWithRpcPromise(_0x5be83d,_0xfe3eb9,_0x30afd1){return new BPromise(function(_0x135290,_0x1e1b29){return client[_0xa814('0x10')](_0x5be83d,_0x30afd1)[_0xa814('0x11')](function(_0x23941b){logger[_0xa814('0x12')](_0xa814('0x13'),_0xfe3eb9,_0xa814('0x14'));logger[_0xa814('0x15')]('WhatsappMessage,\x20%s,\x20%s,\x20%s',_0xfe3eb9,_0xa814('0x14'),JSON[_0xa814('0x16')](_0x23941b));if(_0x23941b[_0xa814('0x17')]){if(_0x23941b[_0xa814('0x17')][_0xa814('0x18')]===0x1f4){logger[_0xa814('0x17')](_0xa814('0x13'),_0xfe3eb9,_0x23941b['error'][_0xa814('0x19')]);return _0x1e1b29(_0x23941b[_0xa814('0x17')][_0xa814('0x19')]);}logger[_0xa814('0x17')]('WhatsappMessage,\x20%s,\x20%s',_0xfe3eb9,_0x23941b[_0xa814('0x17')][_0xa814('0x19')]);return _0x135290(_0x23941b[_0xa814('0x17')]['message']);}else{logger[_0xa814('0x12')](_0xa814('0x13'),_0xfe3eb9,_0xa814('0x14'));_0x135290(_0x23941b[_0xa814('0x1a')][_0xa814('0x19')]);}})['catch'](function(_0x142404){logger[_0xa814('0x17')](_0xa814('0x13'),_0xfe3eb9,_0x142404);_0x1e1b29(_0x142404);});});}exports['CreateWhatsappMessage']=function(_0x55935b){var _0x57be9a=this;return new Promise(function(_0x86a153,_0xbf10ee){return db[_0xa814('0x1b')][_0xa814('0x1c')](_0x55935b[_0xa814('0x1d')],{'raw':_0x55935b[_0xa814('0x1e')]?_0x55935b[_0xa814('0x1e')][_0xa814('0x1f')]===undefined?!![]:![]:!![]})['then'](function(_0x138eff){logger[_0xa814('0x12')](_0xa814('0x20'),_0x55935b);logger['debug']('CreateWhatsappMessage',_0x55935b,JSON[_0xa814('0x16')](_0x138eff));_0x86a153(_0x138eff);})[_0xa814('0x21')](function(_0x1485eb){logger[_0xa814('0x17')](_0xa814('0x20'),_0x1485eb['message'],_0x55935b);_0xbf10ee(_0x57be9a['error'](0x1f4,_0x1485eb['message']));});});};
\ No newline at end of file
index 1cbfed6..e8d1ac0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0xcdf7=['save','update','emit','removeListener','length','whatsappMessage:','./whatsappMessage.events'];(function(_0x32c7ac,_0x32fe70){var _0x1f3dd5=function(_0xe7ff2b){while(--_0xe7ff2b){_0x32c7ac['push'](_0x32c7ac['shift']());}};_0x1f3dd5(++_0x32fe70);}(_0xcdf7,0xbc));var _0x7cdf=function(_0xe099fc,_0x343f35){_0xe099fc=_0xe099fc-0x0;var _0x8bc394=_0xcdf7[_0xe099fc];return _0x8bc394;};'use strict';var WhatsappMessageEvents=require(_0x7cdf('0x0'));var events=[_0x7cdf('0x1'),'remove',_0x7cdf('0x2')];function createListener(_0x534ac5,_0x30bb9f){return function(_0x1e5915){_0x30bb9f[_0x7cdf('0x3')](_0x534ac5,_0x1e5915);};}function removeListener(_0x2d1ff1,_0x2f416c){return function(){WhatsappMessageEvents[_0x7cdf('0x4')](_0x2d1ff1,_0x2f416c);};}exports['register']=function(_0x3fbdfb){for(var _0x15e375=0x0,_0x11d1b7=events[_0x7cdf('0x5')];_0x15e375<_0x11d1b7;_0x15e375++){var _0x3fad73=events[_0x15e375];var _0xf4aa8c=createListener(_0x7cdf('0x6')+_0x3fad73,_0x3fbdfb);WhatsappMessageEvents['on'](_0x3fad73,_0xf4aa8c);}};
\ No newline at end of file
index f06a283..0046e3f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0xc150=['/:id/teams','addTeams','addAgents','update','delete','destroy','removeTeams','removeAgents','exports','multer','util','express','fs-extra','../../components/auth/service','../../config/environment','get','isAuthenticated','/describe','describe','/:id','show','/:id/members','getMembers','/:id/users','getAgents','post','create'];(function(_0xfb0281,_0x3ff38b){var _0x408dd3=function(_0x5d8017){while(--_0x5d8017){_0xfb0281['push'](_0xfb0281['shift']());}};_0x408dd3(++_0x3ff38b);}(_0xc150,0x19e));var _0x0c15=function(_0x5be8fe,_0x4a9935){_0x5be8fe=_0x5be8fe-0x0;var _0x1f4ee3=_0xc150[_0x5be8fe];return _0x1f4ee3;};'use strict';var multer=require(_0x0c15('0x0'));var util=require(_0x0c15('0x1'));var path=require('path');var timeout=require('connect-timeout');var express=require(_0x0c15('0x2'));var router=express['Router']();var fs_extra=require(_0x0c15('0x3'));var auth=require(_0x0c15('0x4'));var interaction=require('../../components/interaction/service');var config=require(_0x0c15('0x5'));var controller=require('./whatsappQueue.controller');router[_0x0c15('0x6')]('/',auth[_0x0c15('0x7')](),controller['index']);router['get'](_0x0c15('0x8'),auth[_0x0c15('0x7')](),controller[_0x0c15('0x9')]);router['get'](_0x0c15('0xa'),auth[_0x0c15('0x7')](),controller[_0x0c15('0xb')]);router['get'](_0x0c15('0xc'),auth[_0x0c15('0x7')](),controller[_0x0c15('0xd')]);router[_0x0c15('0x6')]('/:id/teams',auth[_0x0c15('0x7')](),controller['getTeams']);router[_0x0c15('0x6')](_0x0c15('0xe'),auth[_0x0c15('0x7')](),controller[_0x0c15('0xf')]);router[_0x0c15('0x10')]('/',auth['isAuthenticated'](),controller[_0x0c15('0x11')]);router[_0x0c15('0x10')](_0x0c15('0x12'),auth[_0x0c15('0x7')](),controller[_0x0c15('0x13')]);router[_0x0c15('0x10')](_0x0c15('0xe'),auth['isAuthenticated'](),controller[_0x0c15('0x14')]);router['put'](_0x0c15('0xa'),auth[_0x0c15('0x7')](),controller[_0x0c15('0x15')]);router[_0x0c15('0x16')]('/:id',auth['isAuthenticated'](),controller[_0x0c15('0x17')]);router[_0x0c15('0x16')](_0x0c15('0x12'),auth[_0x0c15('0x7')](),controller[_0x0c15('0x18')]);router[_0x0c15('0x16')](_0x0c15('0xe'),auth[_0x0c15('0x7')](),controller[_0x0c15('0x19')]);module[_0x0c15('0x1a')]=router;
\ No newline at end of file
index ec99d6e..1cb98a0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0x0fec=['beepall','roundrobin','sequelize','exports','STRING','ENUM'];(function(_0x6d6015,_0x1bd8ee){var _0x320f10=function(_0x17c451){while(--_0x17c451){_0x6d6015['push'](_0x6d6015['shift']());}};_0x320f10(++_0x1bd8ee);}(_0x0fec,0x1ca));var _0xc0fe=function(_0x1b2f7f,_0x1e1e92){_0x1b2f7f=_0x1b2f7f-0x0;var _0xdb20d3=_0x0fec[_0x1b2f7f];return _0xdb20d3;};'use strict';var Sequelize=require(_0xc0fe('0x0'));module[_0xc0fe('0x1')]={'name':{'type':Sequelize[_0xc0fe('0x2')],'unique':'name','validate':{'notEmpty':!![],'is':/^[A-Za-z0-9\.\_]+$/i}},'timeout':{'type':Sequelize['INTEGER'],'validate':{'min':0x1,'max':0x20c49b}},'strategy':{'type':Sequelize[_0xc0fe('0x3')]('rrmemory',_0xc0fe('0x4'),_0xc0fe('0x5'))},'description':{'type':Sequelize['STRING']}};
\ No newline at end of file
index cc52a14..fd3a0f2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0xc0a5=['sequelize','transaction','each','findOrCreate','forEach','emit','removeTeams','ids','field','from','join','ut.TeamId\x20=\x20tq.TeamId','WhatsappQueueId\x20=\x20?','clone','ut.UserId\x20=\x20?','push','toString','QueryTypes','SELECT','every','TeamId','includes','all','union','compact','value','removeAgents','userWhatsappQueue:remove','addAgents','omit','spread','userWhatsappQueue:save','isArray','getAgents','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','ejs','fs-extra','squel','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/parsers/advancedSearch','api','../../config/utils','../../config/license/util','../../mysqldb','redis','defaults','localhost','socket.io-emitter','./whatsappQueue.socket','register','sendStatus','status','offset','undefined','limit','count','set','Content-Range','reject','then','destroy','get','WhatsappQueues','end','error','stack','name','send','index','map','WhatsappQueue','rawAttributes','fieldName','type','key','model','query','attributes','intersection','fields','length','order','sort','where','filters','pick','merge','VIRTUAL','filter','options','includeAll','findAll','catch','params','keys','include','create','body','user','UserProfileSection','userProfileId','autoAssociation','UserProfileResource','update','find','describe','getMembers','findOne','UserWhatsappQueue','hasOwnProperty','WhatsappQueueId','User','findAndCountAll','agent','updatedAt','createdAt','rows','format','SIP','Team','getTeams','nolimit','addTeams','Agents','voicePause'];(function(_0x28c27f,_0x2137e5){var _0x44b22e=function(_0x7cef0f){while(--_0x7cef0f){_0x28c27f['push'](_0x28c27f['shift']());}};_0x44b22e(++_0x2137e5);}(_0xc0a5,0x1ba));var _0x5c0a=function(_0x46d0c9,_0x526bfa){_0x46d0c9=_0x46d0c9-0x0;var _0x174506=_0xc0a5[_0x46d0c9];return _0x174506;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x5c0a('0x0'));var zipdir=require(_0x5c0a('0x1'));var jsonpatch=require(_0x5c0a('0x2'));var rp=require(_0x5c0a('0x3'));var moment=require(_0x5c0a('0x4'));var BPromise=require(_0x5c0a('0x5'));var Mustache=require(_0x5c0a('0x6'));var util=require('util');var path=require('path');var sox=require('sox');var csv=require('to-csv');var ejs=require(_0x5c0a('0x7'));var fs=require('fs');var fs_extra=require(_0x5c0a('0x8'));var _=require('lodash');var squel=require(_0x5c0a('0x9'));var crypto=require(_0x5c0a('0xa'));var jsforce=require(_0x5c0a('0xb'));var deskjs=require(_0x5c0a('0xc'));var toCsv=require('to-csv');var querystring=require(_0x5c0a('0xd'));var Papa=require(_0x5c0a('0xe'));var Redis=require(_0x5c0a('0xf'));var authService=require('../../components/auth/service');var qs=require('../../components/parsers/qs');var as=require(_0x5c0a('0x10'));var hardwareService=require('../../config/license/hardware');var logger=require('../../config/logger')(_0x5c0a('0x11'));var utils=require(_0x5c0a('0x12'));var config=require('../../config/environment');var licenseUtil=require(_0x5c0a('0x13'));var db=require(_0x5c0a('0x14'))['db'];config[_0x5c0a('0x15')]=_[_0x5c0a('0x16')](config[_0x5c0a('0x15')],{'host':_0x5c0a('0x17'),'port':0x18eb});var socket=require(_0x5c0a('0x18'))(new Redis(config[_0x5c0a('0x15')]));require(_0x5c0a('0x19'))[_0x5c0a('0x1a')](socket);function respondWithStatusCode(_0x2bd9d1,_0x39db53){_0x39db53=_0x39db53||0xcc;return function(_0x462fbb){if(_0x462fbb){return _0x2bd9d1[_0x5c0a('0x1b')](_0x39db53);}return _0x2bd9d1[_0x5c0a('0x1c')](_0x39db53)['end']();};}function respondWithResult(_0x1ccd16,_0x135728){_0x135728=_0x135728||0xc8;return function(_0x37de59){if(_0x37de59){return _0x1ccd16[_0x5c0a('0x1c')](_0x135728)['json'](_0x37de59);}};}function respondWithFilteredResult(_0x217314,_0x4a1bf8){return function(_0x4f5e06){if(_0x4f5e06){var _0x118c88=typeof _0x4a1bf8[_0x5c0a('0x1d')]===_0x5c0a('0x1e')&&typeof _0x4a1bf8[_0x5c0a('0x1f')]===_0x5c0a('0x1e');var _0x533afd=_0x4f5e06[_0x5c0a('0x20')];var _0x93794b=_0x118c88?0x0:_0x4a1bf8['offset'];var _0x46fa5f=_0x118c88?_0x4f5e06[_0x5c0a('0x20')]:_0x4a1bf8[_0x5c0a('0x1d')]+_0x4a1bf8[_0x5c0a('0x1f')];var _0x558341;if(_0x46fa5f>=_0x533afd){_0x46fa5f=_0x533afd;_0x558341=0xc8;}else{_0x558341=0xce;}_0x217314[_0x5c0a('0x1c')](_0x558341);return _0x217314[_0x5c0a('0x21')](_0x5c0a('0x22'),_0x93794b+'-'+_0x46fa5f+'/'+_0x533afd)['json'](_0x4f5e06);}return null;};}function patchUpdates(_0x504895){return function(_0x23c440){try{jsonpatch['apply'](_0x23c440,_0x504895,!![]);}catch(_0x23960e){return BPromise[_0x5c0a('0x23')](_0x23960e);}return _0x23c440['save']();};}function saveUpdates(_0x30455b,_0x2eef31){return function(_0x534ba7){if(_0x534ba7){return _0x534ba7['update'](_0x30455b)[_0x5c0a('0x24')](function(_0x566862){return _0x566862;});}return null;};}function removeEntity(_0x23e4f8,_0x4f24eb){return function(_0x5023d1){if(_0x5023d1){return _0x5023d1[_0x5c0a('0x25')]()[_0x5c0a('0x24')](function(){var _0x3f3f1c=_0x5023d1[_0x5c0a('0x26')]({'plain':!![]});var _0x296720=_0x5c0a('0x27');return db['UserProfileResource'][_0x5c0a('0x25')]({'where':{'type':_0x296720,'resourceId':_0x3f3f1c['id']}})[_0x5c0a('0x24')](function(){return _0x5023d1;});})['then'](function(){_0x23e4f8[_0x5c0a('0x1c')](0xcc)[_0x5c0a('0x28')]();});}};}function handleEntityNotFound(_0xd70bcf,_0x21fc97){return function(_0x31940a){if(!_0x31940a){_0xd70bcf[_0x5c0a('0x1b')](0x194);}return _0x31940a;};}function handleError(_0x42341c,_0x4eb4a3){_0x4eb4a3=_0x4eb4a3||0x1f4;return function(_0x56540c){logger[_0x5c0a('0x29')](_0x56540c[_0x5c0a('0x2a')]);if(_0x56540c[_0x5c0a('0x2b')]){delete _0x56540c['name'];}_0x42341c[_0x5c0a('0x1c')](_0x4eb4a3)[_0x5c0a('0x2c')](_0x56540c);};}exports[_0x5c0a('0x2d')]=function(_0x2891cc,_0x29bbc8){var _0x3ac86e={},_0xba3f06={},_0x1ab2ce={'count':0x0,'rows':[]};var _0x1de9cd=_[_0x5c0a('0x2e')](db[_0x5c0a('0x2f')][_0x5c0a('0x30')],function(_0x24cb72){return{'name':_0x24cb72[_0x5c0a('0x31')],'type':_0x24cb72[_0x5c0a('0x32')][_0x5c0a('0x33')]};});_0xba3f06[_0x5c0a('0x34')]=_[_0x5c0a('0x2e')](_0x1de9cd,_0x5c0a('0x2b'));_0xba3f06[_0x5c0a('0x35')]=_['keys'](_0x2891cc[_0x5c0a('0x35')]);_0xba3f06['filters']=_['intersection'](_0xba3f06['model'],_0xba3f06[_0x5c0a('0x35')]);_0x3ac86e[_0x5c0a('0x36')]=_[_0x5c0a('0x37')](_0xba3f06[_0x5c0a('0x34')],qs['fields'](_0x2891cc[_0x5c0a('0x35')][_0x5c0a('0x38')]));_0x3ac86e[_0x5c0a('0x36')]=_0x3ac86e[_0x5c0a('0x36')][_0x5c0a('0x39')]?_0x3ac86e[_0x5c0a('0x36')]:_0xba3f06[_0x5c0a('0x34')];if(!_0x2891cc['query']['hasOwnProperty']('nolimit')){_0x3ac86e[_0x5c0a('0x1f')]=qs[_0x5c0a('0x1f')](_0x2891cc['query'][_0x5c0a('0x1f')]);_0x3ac86e[_0x5c0a('0x1d')]=qs['offset'](_0x2891cc[_0x5c0a('0x35')][_0x5c0a('0x1d')]);}_0x3ac86e[_0x5c0a('0x3a')]=qs[_0x5c0a('0x3b')](_0x2891cc[_0x5c0a('0x35')][_0x5c0a('0x3b')]);_0x3ac86e[_0x5c0a('0x3c')]=qs[_0x5c0a('0x3d')](_[_0x5c0a('0x3e')](_0x2891cc[_0x5c0a('0x35')],_0xba3f06[_0x5c0a('0x3d')]),_0x1de9cd);if(_0x2891cc[_0x5c0a('0x35')]['filter']){_0x3ac86e[_0x5c0a('0x3c')]=_[_0x5c0a('0x3f')](_0x3ac86e[_0x5c0a('0x3c')],{'$or':_['map'](_0x1de9cd,function(_0x361c9a){if(_0x361c9a['type']!==_0x5c0a('0x40')){var _0x49a2b7={};_0x49a2b7[_0x361c9a[_0x5c0a('0x2b')]]={'$like':'%'+_0x2891cc['query'][_0x5c0a('0x41')]+'%'};return _0x49a2b7;}})});}_0x3ac86e=_['merge']({},_0x3ac86e,_0x2891cc[_0x5c0a('0x42')]);var _0x48e600={'where':_0x3ac86e[_0x5c0a('0x3c')]};return db[_0x5c0a('0x2f')][_0x5c0a('0x20')](_0x48e600)[_0x5c0a('0x24')](function(_0x59ec63){_0x1ab2ce[_0x5c0a('0x20')]=_0x59ec63;if(_0x2891cc['query'][_0x5c0a('0x43')]){_0x3ac86e['include']=[{'all':!![]}];}return db[_0x5c0a('0x2f')][_0x5c0a('0x44')](_0x3ac86e);})[_0x5c0a('0x24')](function(_0xa8b3fa){_0x1ab2ce['rows']=_0xa8b3fa;return _0x1ab2ce;})[_0x5c0a('0x24')](respondWithFilteredResult(_0x29bbc8,_0x3ac86e))[_0x5c0a('0x45')](handleError(_0x29bbc8,null));};exports['show']=function(_0x126541,_0x4e0ef9){var _0x4ca831={'raw':!![],'where':{'id':_0x126541[_0x5c0a('0x46')]['id']}},_0x2ec16c={};_0x2ec16c[_0x5c0a('0x34')]=_['keys'](db['WhatsappQueue'][_0x5c0a('0x30')]);_0x2ec16c[_0x5c0a('0x35')]=_[_0x5c0a('0x47')](_0x126541[_0x5c0a('0x35')]);_0x2ec16c[_0x5c0a('0x3d')]=_[_0x5c0a('0x37')](_0x2ec16c['model'],_0x2ec16c['query']);_0x4ca831[_0x5c0a('0x36')]=_[_0x5c0a('0x37')](_0x2ec16c['model'],qs[_0x5c0a('0x38')](_0x126541['query'][_0x5c0a('0x38')]));_0x4ca831['attributes']=_0x4ca831['attributes'][_0x5c0a('0x39')]?_0x4ca831[_0x5c0a('0x36')]:_0x2ec16c[_0x5c0a('0x34')];if(_0x126541[_0x5c0a('0x35')][_0x5c0a('0x43')]){_0x4ca831[_0x5c0a('0x48')]=[{'all':!![]}];}_0x4ca831=_[_0x5c0a('0x3f')]({},_0x4ca831,_0x126541[_0x5c0a('0x42')]);return db['WhatsappQueue']['find'](_0x4ca831)['then'](handleEntityNotFound(_0x4e0ef9,null))[_0x5c0a('0x24')](respondWithResult(_0x4e0ef9,null))[_0x5c0a('0x45')](handleError(_0x4e0ef9,null));};exports[_0x5c0a('0x49')]=function(_0x52b795,_0x4a9c5a){return db[_0x5c0a('0x2f')][_0x5c0a('0x49')](_0x52b795[_0x5c0a('0x4a')],{})[_0x5c0a('0x24')](function(_0x1c24e8){var _0x48efcb=_0x52b795[_0x5c0a('0x4b')][_0x5c0a('0x26')]({'plain':!![]});if(!_0x48efcb)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x48efcb['role']===_0x5c0a('0x4b')){var _0x37dfed=_0x1c24e8[_0x5c0a('0x26')]({'plain':!![]});var _0x260a24=_0x5c0a('0x27');return db[_0x5c0a('0x4c')]['find']({'where':{'name':_0x260a24,'userProfileId':_0x48efcb[_0x5c0a('0x4d')]},'raw':!![]})[_0x5c0a('0x24')](function(_0x59e3b8){if(_0x59e3b8&&_0x59e3b8[_0x5c0a('0x4e')]===0x0){return db[_0x5c0a('0x4f')][_0x5c0a('0x49')]({'name':_0x37dfed[_0x5c0a('0x2b')],'resourceId':_0x37dfed['id'],'type':_0x59e3b8[_0x5c0a('0x2b')],'sectionId':_0x59e3b8['id']},{})[_0x5c0a('0x24')](function(){return _0x1c24e8;});}else{return _0x1c24e8;}})['catch'](function(_0x21d0a4){logger[_0x5c0a('0x29')]('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x21d0a4);throw _0x21d0a4;});}return _0x1c24e8;})[_0x5c0a('0x24')](respondWithResult(_0x4a9c5a,0xc9))['catch'](handleError(_0x4a9c5a,null));};exports[_0x5c0a('0x50')]=function(_0x3802b0,_0x5f04ad){if(_0x3802b0['body']['id']){delete _0x3802b0[_0x5c0a('0x4a')]['id'];}return db[_0x5c0a('0x2f')][_0x5c0a('0x51')]({'where':{'id':_0x3802b0[_0x5c0a('0x46')]['id']}})[_0x5c0a('0x24')](handleEntityNotFound(_0x5f04ad,null))['then'](saveUpdates(_0x3802b0[_0x5c0a('0x4a')],null))[_0x5c0a('0x24')](respondWithResult(_0x5f04ad,null))[_0x5c0a('0x45')](handleError(_0x5f04ad,null));};exports[_0x5c0a('0x25')]=function(_0xc4613e,_0x46b2d9){return db[_0x5c0a('0x2f')]['find']({'where':{'id':_0xc4613e['params']['id']}})[_0x5c0a('0x24')](handleEntityNotFound(_0x46b2d9,null))['then'](removeEntity(_0x46b2d9,null))['catch'](handleError(_0x46b2d9,null));};exports[_0x5c0a('0x52')]=function(_0x2c4542,_0x4438c2){return db[_0x5c0a('0x2f')][_0x5c0a('0x52')]()[_0x5c0a('0x24')](respondWithResult(_0x4438c2,null))[_0x5c0a('0x45')](handleError(_0x4438c2,null));};exports[_0x5c0a('0x53')]=function(_0x3725b3,_0x51cb10,_0x372a39){var _0x194198={'raw':!![],'where':{}},_0x477c24={},_0x5bfb7d;return db[_0x5c0a('0x2f')][_0x5c0a('0x54')]({'where':{'id':_0x3725b3[_0x5c0a('0x46')]['id']}})[_0x5c0a('0x24')](handleEntityNotFound(_0x51cb10,null))[_0x5c0a('0x24')](function(_0x40a8ad){if(_0x40a8ad){_0x5bfb7d=_0x40a8ad['get']({'plain':!![]});_0x477c24['model']=_[_0x5c0a('0x47')](db[_0x5c0a('0x55')][_0x5c0a('0x30')]);_0x477c24[_0x5c0a('0x35')]=_[_0x5c0a('0x47')](_0x3725b3[_0x5c0a('0x35')]);_0x477c24[_0x5c0a('0x3d')]=_[_0x5c0a('0x37')](_0x477c24[_0x5c0a('0x34')],_0x477c24[_0x5c0a('0x35')]);_0x194198[_0x5c0a('0x36')]=_[_0x5c0a('0x37')](_0x477c24[_0x5c0a('0x34')],qs[_0x5c0a('0x38')](_0x3725b3[_0x5c0a('0x35')][_0x5c0a('0x38')]));_0x194198[_0x5c0a('0x36')]=_0x194198[_0x5c0a('0x36')]['length']?_0x194198['attributes']:_0x477c24[_0x5c0a('0x34')];if(!_0x3725b3[_0x5c0a('0x35')][_0x5c0a('0x56')]('nolimit')){_0x194198[_0x5c0a('0x1f')]=qs[_0x5c0a('0x1f')](_0x3725b3[_0x5c0a('0x35')]['limit']);_0x194198['offset']=qs[_0x5c0a('0x1d')](_0x3725b3['query'][_0x5c0a('0x1d')]);}_0x194198[_0x5c0a('0x3a')]=qs[_0x5c0a('0x3b')](_0x3725b3[_0x5c0a('0x35')][_0x5c0a('0x3b')]);_0x194198[_0x5c0a('0x3c')]=qs[_0x5c0a('0x3d')](_['pick'](_0x3725b3[_0x5c0a('0x35')],_0x477c24[_0x5c0a('0x3d')]));_0x194198[_0x5c0a('0x3c')][_0x5c0a('0x57')]=_0x40a8ad['id'];if(_0x3725b3[_0x5c0a('0x35')][_0x5c0a('0x41')]){_0x194198[_0x5c0a('0x3c')]=_[_0x5c0a('0x3f')](_0x194198['where'],{'$or':_[_0x5c0a('0x2e')](_0x194198[_0x5c0a('0x36')],function(_0x3a93cf){var _0x21708e={};_0x21708e[_0x3a93cf]={'$like':'%'+_0x3725b3['query'][_0x5c0a('0x41')]+'%'};return _0x21708e;})});}_0x194198=_[_0x5c0a('0x3f')]({},_0x194198,_0x3725b3[_0x5c0a('0x42')]);return db[_0x5c0a('0x55')][_0x5c0a('0x44')](_0x194198);}})[_0x5c0a('0x24')](function(_0x1e1fc2){if(_0x1e1fc2){return db[_0x5c0a('0x58')][_0x5c0a('0x59')]({'where':{'id':_[_0x5c0a('0x2e')](_0x1e1fc2,'UserId'),'role':_0x5c0a('0x5a')},'attributes':['id',_0x5c0a('0x2b'),'whatsappPause',_0x5c0a('0x5b'),_0x5c0a('0x5c')]});}})['then'](function(_0x59e08f){if(_0x59e08f){return{'count':_0x59e08f[_0x5c0a('0x20')],'rows':_['map'](_0x59e08f[_0x5c0a('0x5d')],function(_0x1210c6){return{'membername':_0x1210c6['name'],'UserId':_0x1210c6['id'],'queue_name':_0x5bfb7d[_0x5c0a('0x2b')],'WhatsappQueueId':_0x5bfb7d['id'],'interface':util[_0x5c0a('0x5e')]('%s/%s',_0x5c0a('0x5f'),_0x1210c6[_0x5c0a('0x2b')]),'penalty':0x0,'paused':_0x1210c6['whatsappPause'],'createdAt':_0x1210c6['createdAt'],'updatedAt':_0x1210c6[_0x5c0a('0x5b')]};})};}else{return{'count':0x0,'rows':[]};}})[_0x5c0a('0x24')](respondWithFilteredResult(_0x51cb10,_0x194198))[_0x5c0a('0x45')](handleError(_0x51cb10,null));};exports['getTeams']=function(_0x13b58a,_0x4c965d,_0x193468){var _0x32a4fe={};var _0x6ad50={};var _0x2d5442;var _0x4d7c5d;return db[_0x5c0a('0x2f')][_0x5c0a('0x54')]({'where':{'id':_0x13b58a['params']['id']}})['then'](handleEntityNotFound(_0x4c965d,null))[_0x5c0a('0x24')](function(_0x302f57){if(_0x302f57){_0x2d5442=_0x302f57;_0x6ad50['model']=_[_0x5c0a('0x47')](db[_0x5c0a('0x60')][_0x5c0a('0x30')]);_0x6ad50[_0x5c0a('0x35')]=_['keys'](_0x13b58a[_0x5c0a('0x35')]);_0x6ad50[_0x5c0a('0x3d')]=_[_0x5c0a('0x37')](_0x6ad50[_0x5c0a('0x34')],_0x6ad50[_0x5c0a('0x35')]);_0x32a4fe[_0x5c0a('0x36')]=_['intersection'](_0x6ad50[_0x5c0a('0x34')],qs['fields'](_0x13b58a[_0x5c0a('0x35')]['fields']));_0x32a4fe[_0x5c0a('0x36')]=_0x32a4fe['attributes'][_0x5c0a('0x39')]?_0x32a4fe[_0x5c0a('0x36')]:_0x6ad50['model'];_0x32a4fe['order']=qs[_0x5c0a('0x3b')](_0x13b58a['query'][_0x5c0a('0x3b')]);_0x32a4fe[_0x5c0a('0x3c')]=qs[_0x5c0a('0x3d')](_[_0x5c0a('0x3e')](_0x13b58a[_0x5c0a('0x35')],_0x6ad50[_0x5c0a('0x3d')]));if(_0x13b58a[_0x5c0a('0x35')]['filter']){_0x32a4fe[_0x5c0a('0x3c')]=_[_0x5c0a('0x3f')](_0x32a4fe['where'],{'$or':_[_0x5c0a('0x2e')](_0x32a4fe[_0x5c0a('0x36')],function(_0x47f39b){var _0xd26561={};_0xd26561[_0x47f39b]={'$like':'%'+_0x13b58a[_0x5c0a('0x35')][_0x5c0a('0x41')]+'%'};return _0xd26561;})});}_0x32a4fe=_['merge']({},_0x32a4fe,_0x13b58a[_0x5c0a('0x42')]);return _0x2d5442[_0x5c0a('0x61')](_0x32a4fe);}})[_0x5c0a('0x24')](function(_0x2d5dec){if(_0x2d5dec){_0x4d7c5d=_0x2d5dec[_0x5c0a('0x39')];if(!_0x13b58a[_0x5c0a('0x35')][_0x5c0a('0x56')](_0x5c0a('0x62'))){_0x32a4fe[_0x5c0a('0x1f')]=qs['limit'](_0x13b58a[_0x5c0a('0x35')][_0x5c0a('0x1f')]);_0x32a4fe['offset']=qs['offset'](_0x13b58a['query'][_0x5c0a('0x1d')]);}return _0x2d5442[_0x5c0a('0x61')](_0x32a4fe);}})[_0x5c0a('0x24')](function(_0x4132b4){if(_0x4132b4){return _0x4132b4?{'count':_0x4d7c5d,'rows':_0x4132b4}:null;}})['then'](respondWithResult(_0x4c965d,null))['catch'](handleError(_0x4c965d,null));};exports[_0x5c0a('0x63')]=function(_0x3aeff9,_0x269590,_0x14bb79){var _0x240c0a=_0x3aeff9['body']['ids'];return db[_0x5c0a('0x60')]['findAll']({'where':{'id':_0x240c0a},'attributes':['id'],'include':[{'model':db['User'],'as':_0x5c0a('0x64'),'attributes':['id',_0x5c0a('0x2b'),'online',_0x5c0a('0x65'),'interface'],'raw':!![]}]})[_0x5c0a('0x24')](function(_0x513bb6){if(_0x513bb6){var _0x14ea0f=_['flatMap'](_0x513bb6,function(_0x55bdca){var _0x309b3b=_0x55bdca[_0x5c0a('0x26')]({'plain':!![]});return _0x309b3b[_0x5c0a('0x64')];});return db['WhatsappQueue'][_0x5c0a('0x51')]({'where':{'id':_0x3aeff9[_0x5c0a('0x46')]['id']}})[_0x5c0a('0x24')](function(_0x47c24a){return db[_0x5c0a('0x66')][_0x5c0a('0x67')](function(_0x432071){return _0x47c24a['addTeams'](_0x240c0a,{'transaction':_0x432071})[_0x5c0a('0x24')](function(){return BPromise[_0x5c0a('0x68')](_0x14ea0f,function(_0x1353bb){return db[_0x5c0a('0x55')][_0x5c0a('0x69')]({'where':{'UserId':_0x1353bb['id'],'WhatsappQueueId':_0x3aeff9['params']['id']},'transaction':_0x432071});});})[_0x5c0a('0x24')](function(){_0x14ea0f[_0x5c0a('0x6a')](function(_0x372e60){socket[_0x5c0a('0x6b')]('userWhatsappQueue:save',{'UserId':_0x372e60['id'],'WhatsappQueueId':_0x47c24a['id']});});});});});}})['then'](respondWithStatusCode(_0x269590,null))[_0x5c0a('0x45')](handleError(_0x269590,null));};exports[_0x5c0a('0x6c')]=function(_0x4750f3,_0x24b1b4,_0x283c9f){return db[_0x5c0a('0x60')][_0x5c0a('0x44')]({'where':{'id':_0x4750f3[_0x5c0a('0x35')][_0x5c0a('0x6d')]},'attributes':['id'],'include':[{'model':db[_0x5c0a('0x58')],'as':_0x5c0a('0x64'),'attributes':['id'],'raw':!![]}]})[_0x5c0a('0x24')](handleEntityNotFound(_0x24b1b4,null))['then'](function(_0x704b93){var _0x52c357=_[_0x5c0a('0x2e')](_0x704b93,'id');var _0x2385cf=[];var _0x224ba8=[];var _0x1e4aa8=squel['select']();_0x1e4aa8[_0x5c0a('0x6e')]('tq.TeamId')[_0x5c0a('0x6f')]('team_has_whatsapp_queues','tq')[_0x5c0a('0x70')]('user_has_teams','ut',_0x5c0a('0x71'))[_0x5c0a('0x3c')](_0x5c0a('0x72'),_0x4750f3[_0x5c0a('0x46')]['id']);for(var _0x40edae=0x0;_0x40edae<_0x704b93[_0x5c0a('0x39')];_0x40edae+=0x1){let _0x4262aa=_0x704b93[_0x40edae];for(var _0x3fc651=0x0;_0x3fc651<_0x4262aa[_0x5c0a('0x64')][_0x5c0a('0x39')];_0x3fc651+=0x1){let _0x4a87da=_0x4262aa['Agents'][_0x3fc651];var _0x4ec626=_0x1e4aa8[_0x5c0a('0x73')]();_0x4ec626[_0x5c0a('0x3c')](_0x5c0a('0x74'),_0x4a87da['id']);_0x224ba8[_0x5c0a('0x75')](db[_0x5c0a('0x66')][_0x5c0a('0x35')](_0x4ec626[_0x5c0a('0x76')](),{'type':db[_0x5c0a('0x66')][_0x5c0a('0x77')][_0x5c0a('0x78')]})[_0x5c0a('0x24')](function(_0x625336){if(_0x625336['length']===0x1){return _0x4a87da['id'];}else{var _0x3fa16e=_[_0x5c0a('0x79')](_[_0x5c0a('0x2e')](_0x625336,_0x5c0a('0x7a')),function(_0x4b2281){return _[_0x5c0a('0x7b')](_0x52c357,_0x4b2281);});if(_0x3fa16e){return _0x4a87da['id'];}}}));}}return BPromise[_0x5c0a('0x7c')](_0x224ba8)[_0x5c0a('0x24')](function(_0x5790cc){_0x2385cf=_(_0x2385cf)[_0x5c0a('0x7d')](_0x5790cc)[_0x5c0a('0x7e')]()[_0x5c0a('0x7f')]();return db[_0x5c0a('0x2f')][_0x5c0a('0x51')]({'where':{'id':_0x4750f3[_0x5c0a('0x46')]['id']}})['then'](function(_0x26ec1a){return db[_0x5c0a('0x66')][_0x5c0a('0x67')](function(_0x7b0c9d){return _0x26ec1a[_0x5c0a('0x6c')](_0x4750f3[_0x5c0a('0x35')][_0x5c0a('0x6d')],{'transaction':_0x7b0c9d})[_0x5c0a('0x24')](function(){if(!_['isEmpty'](_0x2385cf)){return _0x26ec1a[_0x5c0a('0x80')](_0x2385cf,{'transaction':_0x7b0c9d});}})[_0x5c0a('0x24')](function(){_0x2385cf['forEach'](function(_0x365ddf){socket[_0x5c0a('0x6b')](_0x5c0a('0x81'),{'UserId':_0x365ddf,'WhatsappQueueId':_0x26ec1a['id']});});});});});});})[_0x5c0a('0x24')](respondWithStatusCode(_0x24b1b4,null))[_0x5c0a('0x45')](handleError(_0x24b1b4,null));};exports[_0x5c0a('0x82')]=function(_0x5793d5,_0x1c18b7,_0x29af23){return db['WhatsappQueue'][_0x5c0a('0x51')]({'where':{'id':_0x5793d5[_0x5c0a('0x46')]['id']}})[_0x5c0a('0x24')](handleEntityNotFound(_0x1c18b7,null))['then'](function(_0x3d6d89){if(_0x3d6d89){return _0x3d6d89[_0x5c0a('0x82')](_0x5793d5[_0x5c0a('0x4a')]['ids'],_[_0x5c0a('0x83')](_0x5793d5[_0x5c0a('0x4a')],[_0x5c0a('0x6d'),'id'])||{})[_0x5c0a('0x84')](function(_0x3a29ed){for(var _0x3a4212=0x0;_0x3a4212<_0x5793d5[_0x5c0a('0x4a')][_0x5c0a('0x6d')]['length'];_0x3a4212+=0x1){socket[_0x5c0a('0x6b')](_0x5c0a('0x85'),{'UserId':Number(_0x5793d5[_0x5c0a('0x4a')][_0x5c0a('0x6d')][_0x3a4212]),'WhatsappQueueId':Number(_0x5793d5[_0x5c0a('0x46')]['id'])});}return _0x3a29ed;});}})[_0x5c0a('0x24')](respondWithResult(_0x1c18b7,null))[_0x5c0a('0x45')](handleError(_0x1c18b7,null));};exports[_0x5c0a('0x80')]=function(_0x4cf8f2,_0x223f42,_0x171d53){return db[_0x5c0a('0x2f')]['find']({'where':{'id':_0x4cf8f2[_0x5c0a('0x46')]['id']}})[_0x5c0a('0x24')](handleEntityNotFound(_0x223f42,null))['then'](function(_0x260d14){if(_0x260d14){return _0x260d14[_0x5c0a('0x80')](_0x4cf8f2[_0x5c0a('0x35')][_0x5c0a('0x6d')])[_0x5c0a('0x24')](function(){if(_[_0x5c0a('0x86')](_0x4cf8f2[_0x5c0a('0x35')][_0x5c0a('0x6d')])){for(var _0x1bf8c9=0x0;_0x1bf8c9<_0x4cf8f2[_0x5c0a('0x35')][_0x5c0a('0x6d')][_0x5c0a('0x39')];_0x1bf8c9+=0x1){socket['emit']('userWhatsappQueue:remove',{'UserId':Number(_0x4cf8f2[_0x5c0a('0x35')][_0x5c0a('0x6d')][_0x1bf8c9]),'WhatsappQueueId':Number(_0x4cf8f2[_0x5c0a('0x46')]['id'])});}}else{socket['emit'](_0x5c0a('0x81'),{'UserId':Number(_0x4cf8f2[_0x5c0a('0x35')]['ids']),'WhatsappQueueId':Number(_0x4cf8f2['params']['id'])});}});}})[_0x5c0a('0x24')](respondWithStatusCode(_0x223f42,null))['catch'](handleError(_0x223f42,null));};exports[_0x5c0a('0x87')]=function(_0x43900e,_0x27b65f,_0x2e790a){var _0x3b437c={};var _0x73b5dc={};var _0x2fc9f5;var _0x4d970d;return db['WhatsappQueue'][_0x5c0a('0x54')]({'where':{'id':_0x43900e[_0x5c0a('0x46')]['id']}})[_0x5c0a('0x24')](handleEntityNotFound(_0x27b65f,null))[_0x5c0a('0x24')](function(_0x11c29c){if(_0x11c29c){_0x2fc9f5=_0x11c29c;_0x73b5dc[_0x5c0a('0x34')]=_[_0x5c0a('0x47')](db[_0x5c0a('0x58')][_0x5c0a('0x30')]);_0x73b5dc['query']=_['keys'](_0x43900e[_0x5c0a('0x35')]);_0x73b5dc[_0x5c0a('0x3d')]=_[_0x5c0a('0x37')](_0x73b5dc[_0x5c0a('0x34')],_0x73b5dc['query']);_0x3b437c[_0x5c0a('0x36')]=_[_0x5c0a('0x37')](_0x73b5dc['model'],qs[_0x5c0a('0x38')](_0x43900e[_0x5c0a('0x35')][_0x5c0a('0x38')]));_0x3b437c['attributes']=_0x3b437c[_0x5c0a('0x36')]['length']?_0x3b437c[_0x5c0a('0x36')]:_0x73b5dc[_0x5c0a('0x34')];_0x3b437c[_0x5c0a('0x3a')]=qs['sort'](_0x43900e[_0x5c0a('0x35')][_0x5c0a('0x3b')]);_0x3b437c[_0x5c0a('0x3c')]=qs[_0x5c0a('0x3d')](_[_0x5c0a('0x3e')](_0x43900e[_0x5c0a('0x35')],_0x73b5dc[_0x5c0a('0x3d')]));if(_0x43900e[_0x5c0a('0x35')][_0x5c0a('0x41')]){_0x3b437c[_0x5c0a('0x3c')]=_[_0x5c0a('0x3f')](_0x3b437c[_0x5c0a('0x3c')],{'$or':_['map'](_0x3b437c[_0x5c0a('0x36')],function(_0x410be4){var _0x9fa61c={};_0x9fa61c[_0x410be4]={'$like':'%'+_0x43900e[_0x5c0a('0x35')][_0x5c0a('0x41')]+'%'};return _0x9fa61c;})});}_0x3b437c=_[_0x5c0a('0x3f')]({},_0x3b437c,_0x43900e['options']);return _0x2fc9f5[_0x5c0a('0x87')](_0x3b437c);}})['then'](function(_0x2fe714){if(_0x2fe714){_0x4d970d=_0x2fe714[_0x5c0a('0x39')];if(!_0x43900e['query'][_0x5c0a('0x56')](_0x5c0a('0x62'))){_0x3b437c['limit']=qs[_0x5c0a('0x1f')](_0x43900e[_0x5c0a('0x35')][_0x5c0a('0x1f')]);_0x3b437c[_0x5c0a('0x1d')]=qs[_0x5c0a('0x1d')](_0x43900e['query'][_0x5c0a('0x1d')]);}return _0x2fc9f5['getAgents'](_0x3b437c);}})[_0x5c0a('0x24')](function(_0x4ec376){if(_0x4ec376){return _0x4ec376?{'count':_0x4d970d,'rows':_0x4ec376}:null;}})['then'](respondWithResult(_0x27b65f,null))['catch'](handleError(_0x27b65f,null));};
\ No newline at end of file
index 02524b4..1556565 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0x2252=['remove','emit','exports','../../mysqldb','WhatsappQueue','save'];(function(_0x56e33c,_0x1c5e09){var _0x377592=function(_0x53c170){while(--_0x53c170){_0x56e33c['push'](_0x56e33c['shift']());}};_0x377592(++_0x1c5e09);}(_0x2252,0x7b));var _0x2225=function(_0x20c8cf,_0x16c7b3){_0x20c8cf=_0x20c8cf-0x0;var _0x4a3f18=_0x2252[_0x20c8cf];return _0x4a3f18;};'use strict';var EventEmitter=require('events');var WhatsappQueue=require(_0x2225('0x0'))['db'][_0x2225('0x1')];var WhatsappQueueEvents=new EventEmitter();WhatsappQueueEvents['setMaxListeners'](0x0);var events={'afterCreate':_0x2225('0x2'),'afterUpdate':'update','afterDestroy':_0x2225('0x3')};function emitEvent(_0x461529){return function(_0x5a667c,_0x3b2a99,_0x4272cc){WhatsappQueueEvents[_0x2225('0x4')](_0x461529+':'+_0x5a667c['id'],_0x5a667c);WhatsappQueueEvents[_0x2225('0x4')](_0x461529,_0x5a667c);_0x4272cc(null);};}for(var e in events){if(events['hasOwnProperty'](e)){var event=events[e];WhatsappQueue['hook'](e,emitEvent(event));}}module[_0x2225('0x5')]=WhatsappQueueEvents;
\ No newline at end of file
index 037c406..dea95ad 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0x3175=['bluebird','request-promise','rimraf','../../config/environment','./whatsappQueue.attributes','exports','define','WhatsappQueue','whatsapp_queues','lodash','util','../../config/logger','api','moment'];(function(_0x182fff,_0x568aee){var _0x1b4171=function(_0x212d46){while(--_0x212d46){_0x182fff['push'](_0x182fff['shift']());}};_0x1b4171(++_0x568aee);}(_0x3175,0x1f3));var _0x5317=function(_0x4a45b4,_0x59804f){_0x4a45b4=_0x4a45b4-0x0;var _0x1a99c9=_0x3175[_0x4a45b4];return _0x1a99c9;};'use strict';var _=require(_0x5317('0x0'));var util=require(_0x5317('0x1'));var logger=require(_0x5317('0x2'))(_0x5317('0x3'));var moment=require(_0x5317('0x4'));var BPromise=require(_0x5317('0x5'));var rp=require(_0x5317('0x6'));var fs=require('fs');var path=require('path');var rimraf=require(_0x5317('0x7'));var config=require(_0x5317('0x8'));var attributes=require(_0x5317('0x9'));module[_0x5317('0xa')]=function(_0x3808c,_0x5e11ac){return _0x3808c[_0x5317('0xb')](_0x5317('0xc'),attributes,{'tableName':_0x5317('0xd'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index d34145b..1d804d7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0x00fe=['request\x20sent','stringify','error','code','message','info','result','WhatsappQueue','findAll','options','raw','where','attributes','include','model','map','GetWhatsappQueue','debug','catch','ShowWhatsappQueue','find','util','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','redis','localhost','socket.io-emitter','./whatsappQueue.socket','register','request','then','WhatsappQueue,\x20%s,\x20%s'];(function(_0x2cbd00,_0x426448){var _0x49d174=function(_0x319bab){while(--_0x319bab){_0x2cbd00['push'](_0x2cbd00['shift']());}};_0x49d174(++_0x426448);}(_0x00fe,0x1d8));var _0xe00f=function(_0x539fb2,_0x5b6718){_0x539fb2=_0x539fb2-0x0;var _0x4d583d=_0x00fe[_0x539fb2];return _0x4d583d;};'use strict';var _=require('lodash');var util=require(_0xe00f('0x0'));var moment=require('moment');var BPromise=require(_0xe00f('0x1'));var rs=require(_0xe00f('0x2'));var fs=require('fs');var Redis=require(_0xe00f('0x3'));var db=require(_0xe00f('0x4'))['db'];var utils=require(_0xe00f('0x5'));var logger=require(_0xe00f('0x6'))(_0xe00f('0x7'));var config=require(_0xe00f('0x8'));var jayson=require(_0xe00f('0x9'));var client=jayson[_0xe00f('0xa')][_0xe00f('0xb')]({'port':0x232a});config['redis']=_['defaults'](config[_0xe00f('0xc')],{'host':_0xe00f('0xd'),'port':0x18eb});var socket=require(_0xe00f('0xe'))(new Redis(config[_0xe00f('0xc')]));require(_0xe00f('0xf'))[_0xe00f('0x10')](socket);function respondWithRpcPromise(_0x39bca9,_0x433330,_0x46c3ac){return new BPromise(function(_0x687743,_0x1cb493){return client[_0xe00f('0x11')](_0x39bca9,_0x46c3ac)[_0xe00f('0x12')](function(_0x2ee475){logger['info'](_0xe00f('0x13'),_0x433330,_0xe00f('0x14'));logger['debug']('WhatsappQueue,\x20%s,\x20%s,\x20%s',_0x433330,_0xe00f('0x14'),JSON[_0xe00f('0x15')](_0x2ee475));if(_0x2ee475[_0xe00f('0x16')]){if(_0x2ee475[_0xe00f('0x16')][_0xe00f('0x17')]===0x1f4){logger[_0xe00f('0x16')](_0xe00f('0x13'),_0x433330,_0x2ee475[_0xe00f('0x16')][_0xe00f('0x18')]);return _0x1cb493(_0x2ee475[_0xe00f('0x16')][_0xe00f('0x18')]);}logger[_0xe00f('0x16')](_0xe00f('0x13'),_0x433330,_0x2ee475[_0xe00f('0x16')][_0xe00f('0x18')]);return _0x687743(_0x2ee475[_0xe00f('0x16')]['message']);}else{logger[_0xe00f('0x19')](_0xe00f('0x13'),_0x433330,_0xe00f('0x14'));_0x687743(_0x2ee475[_0xe00f('0x1a')][_0xe00f('0x18')]);}})['catch'](function(_0x856338){logger['error'](_0xe00f('0x13'),_0x433330,_0x856338);_0x1cb493(_0x856338);});});}exports['GetWhatsappQueue']=function(_0x37781c){var _0x392e86=this;return new Promise(function(_0x539d8f,_0x4fac88){return db[_0xe00f('0x1b')][_0xe00f('0x1c')]({'raw':_0x37781c['options']?_0x37781c[_0xe00f('0x1d')][_0xe00f('0x1e')]===undefined?!![]:![]:!![],'where':_0x37781c[_0xe00f('0x1d')]?_0x37781c['options'][_0xe00f('0x1f')]||null:null,'attributes':_0x37781c[_0xe00f('0x1d')]?_0x37781c[_0xe00f('0x1d')][_0xe00f('0x20')]||null:null,'limit':_0x37781c['options']?_0x37781c[_0xe00f('0x1d')]['limit']||null:null,'include':_0x37781c['options']?_0x37781c[_0xe00f('0x1d')][_0xe00f('0x21')]?_['map'](_0x37781c[_0xe00f('0x1d')][_0xe00f('0x21')],function(_0x1cda25){return{'model':db[_0x1cda25[_0xe00f('0x22')]],'as':_0x1cda25['as'],'attributes':_0x1cda25[_0xe00f('0x20')],'include':_0x1cda25[_0xe00f('0x21')]?_[_0xe00f('0x23')](_0x1cda25[_0xe00f('0x21')],function(_0x5fcc1a){return{'model':db[_0x5fcc1a['model']],'as':_0x5fcc1a['as'],'attributes':_0x5fcc1a['attributes'],'include':_0x5fcc1a[_0xe00f('0x21')]?_['map'](_0x5fcc1a[_0xe00f('0x21')],function(_0x144028){return{'model':db[_0x144028[_0xe00f('0x22')]],'as':_0x144028['as'],'attributes':_0x144028[_0xe00f('0x20')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x293697){logger[_0xe00f('0x19')](_0xe00f('0x24'),_0x37781c);logger[_0xe00f('0x25')]('GetWhatsappQueue',_0x37781c,JSON[_0xe00f('0x15')](_0x293697));_0x539d8f(_0x293697);})[_0xe00f('0x26')](function(_0x1bce55){logger[_0xe00f('0x16')](_0xe00f('0x24'),_0x1bce55['message'],_0x37781c);_0x4fac88(_0x392e86[_0xe00f('0x16')](0x1f4,_0x1bce55[_0xe00f('0x18')]));});});};exports[_0xe00f('0x27')]=function(_0x2737b0){var _0x205624=this;return new Promise(function(_0x78cde0,_0x3975ae){return db[_0xe00f('0x1b')][_0xe00f('0x28')]({'raw':_0x2737b0[_0xe00f('0x1d')]?_0x2737b0[_0xe00f('0x1d')]['raw']===undefined?!![]:![]:!![],'where':_0x2737b0['options']?_0x2737b0[_0xe00f('0x1d')][_0xe00f('0x1f')]||null:null,'attributes':_0x2737b0[_0xe00f('0x1d')]?_0x2737b0[_0xe00f('0x1d')][_0xe00f('0x20')]||null:null,'include':_0x2737b0[_0xe00f('0x1d')]?_0x2737b0[_0xe00f('0x1d')][_0xe00f('0x21')]?_['map'](_0x2737b0['options'][_0xe00f('0x21')],function(_0x3500f0){return{'model':db[_0x3500f0['model']],'as':_0x3500f0['as'],'attributes':_0x3500f0[_0xe00f('0x20')],'include':_0x3500f0[_0xe00f('0x21')]?_['map'](_0x3500f0[_0xe00f('0x21')],function(_0x27bf6d){return{'model':db[_0x27bf6d[_0xe00f('0x22')]],'as':_0x27bf6d['as'],'attributes':_0x27bf6d[_0xe00f('0x20')],'include':_0x27bf6d[_0xe00f('0x21')]?_[_0xe00f('0x23')](_0x27bf6d[_0xe00f('0x21')],function(_0x1c8eee){return{'model':db[_0x1c8eee[_0xe00f('0x22')]],'as':_0x1c8eee['as'],'attributes':_0x1c8eee[_0xe00f('0x20')]};}):[]};}):[]};}):[]:[]})[_0xe00f('0x12')](function(_0x384fd0){logger[_0xe00f('0x19')](_0xe00f('0x27'),_0x2737b0);logger[_0xe00f('0x25')](_0xe00f('0x27'),_0x2737b0,JSON[_0xe00f('0x15')](_0x384fd0));_0x78cde0(_0x384fd0);})[_0xe00f('0x26')](function(_0x3fcc15){logger[_0xe00f('0x16')](_0xe00f('0x27'),_0x3fcc15[_0xe00f('0x18')],_0x2737b0);_0x3975ae(_0x205624[_0xe00f('0x16')](0x1f4,_0x3fcc15[_0xe00f('0x18')]));});});};
\ No newline at end of file
index ea926ff..4704aa4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0x8b04=['removeListener','register','whatsappQueue:','./whatsappQueue.events','save','update'];(function(_0x209941,_0x5c9988){var _0x1e8729=function(_0x51a9b8){while(--_0x51a9b8){_0x209941['push'](_0x209941['shift']());}};_0x1e8729(++_0x5c9988);}(_0x8b04,0x7b));var _0x48b0=function(_0x3b405d,_0x56499f){_0x3b405d=_0x3b405d-0x0;var _0x38be63=_0x8b04[_0x3b405d];return _0x38be63;};'use strict';var WhatsappQueueEvents=require(_0x48b0('0x0'));var events=[_0x48b0('0x1'),'remove',_0x48b0('0x2')];function createListener(_0x14c2e3,_0x35cac5){return function(_0x42b274){_0x35cac5['emit'](_0x14c2e3,_0x42b274);};}function removeListener(_0x5f109a,_0x2d4b9d){return function(){WhatsappQueueEvents[_0x48b0('0x3')](_0x5f109a,_0x2d4b9d);};}exports[_0x48b0('0x4')]=function(_0x3f0fef){for(var _0x5f5643=0x0,_0x18b206=events['length'];_0x5f5643<_0x18b206;_0x5f5643++){var _0x4c473d=events[_0x5f5643];var _0x4ab49a=createListener(_0x48b0('0x5')+_0x4c473d,_0x3f0fef);WhatsappQueueEvents['on'](_0x4c473d,_0x4ab49a);}};
\ No newline at end of file
index 22a17fc..7f7d612 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0x1299=['../../config/environment','isAuthenticated','index','get','/describe','describe','/:id','show','create','update','delete','destroy','exports','multer','path','connect-timeout','fs-extra','../../components/auth/service'];(function(_0x1cf57b,_0x3df3e2){var _0x3f7c17=function(_0x11168f){while(--_0x11168f){_0x1cf57b['push'](_0x1cf57b['shift']());}};_0x3f7c17(++_0x3df3e2);}(_0x1299,0x79));var _0x9129=function(_0x19fa09,_0x4e1727){_0x19fa09=_0x19fa09-0x0;var _0x19e343=_0x1299[_0x19fa09];return _0x19e343;};'use strict';var multer=require(_0x9129('0x0'));var util=require('util');var path=require(_0x9129('0x1'));var timeout=require(_0x9129('0x2'));var express=require('express');var router=express['Router']();var fs_extra=require(_0x9129('0x3'));var auth=require(_0x9129('0x4'));var interaction=require('../../components/interaction/service');var config=require(_0x9129('0x5'));var controller=require('./whatsappQueueReport.controller');router['get']('/',auth[_0x9129('0x6')](),controller[_0x9129('0x7')]);router[_0x9129('0x8')](_0x9129('0x9'),auth[_0x9129('0x6')](),controller[_0x9129('0xa')]);router[_0x9129('0x8')](_0x9129('0xb'),auth[_0x9129('0x6')](),controller[_0x9129('0xc')]);router['post']('/',auth['isAuthenticated'](),controller[_0x9129('0xd')]);router['put'](_0x9129('0xb'),auth[_0x9129('0x6')](),controller[_0x9129('0xe')]);router[_0x9129('0xf')](_0x9129('0xb'),auth[_0x9129('0x6')](),controller[_0x9129('0x10')]);module[_0x9129('0x11')]=router;
\ No newline at end of file
index 80c2c18..b6ee50e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0x9957=['exports','STRING','DATE','sequelize'];(function(_0x2020a0,_0x44bc0e){var _0x2a3233=function(_0x11aa03){while(--_0x11aa03){_0x2020a0['push'](_0x2020a0['shift']());}};_0x2a3233(++_0x44bc0e);}(_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
index f6810d9..3c98dd1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0xd87e=['squel','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/utils','../../config/license/util','../../mysqldb','sendStatus','status','end','json','offset','undefined','limit','count','set','Content-Range','save','then','destroy','error','stack','name','send','rawAttributes','fieldName','key','model','map','query','keys','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','pick','filter','merge','type','VIRTUAL','options','WhatsappQueueReport','includeAll','findAll','rows','catch','show','params','include','find','create','body','describe','eml-format','rimraf','fast-json-patch','request-promise','moment','mustache','path','sox','ejs'];(function(_0x4186cc,_0x217d4c){var _0xdd76ac=function(_0x2466a3){while(--_0x2466a3){_0x4186cc['push'](_0x4186cc['shift']());}};_0xdd76ac(++_0x217d4c);}(_0xd87e,0x1bf));var _0xed87=function(_0x15be92,_0x4c9b9e){_0x15be92=_0x15be92-0x0;var _0x6dbea1=_0xd87e[_0x15be92];return _0x6dbea1;};'use strict';var emlformat=require(_0xed87('0x0'));var rimraf=require(_0xed87('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0xed87('0x2'));var rp=require(_0xed87('0x3'));var moment=require(_0xed87('0x4'));var BPromise=require('bluebird');var Mustache=require(_0xed87('0x5'));var util=require('util');var path=require(_0xed87('0x6'));var sox=require(_0xed87('0x7'));var csv=require('to-csv');var ejs=require(_0xed87('0x8'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require('lodash');var squel=require(_0xed87('0x9'));var crypto=require(_0xed87('0xa'));var jsforce=require(_0xed87('0xb'));var deskjs=require(_0xed87('0xc'));var toCsv=require('to-csv');var querystring=require(_0xed87('0xd'));var Papa=require(_0xed87('0xe'));var Redis=require(_0xed87('0xf'));var authService=require(_0xed87('0x10'));var qs=require(_0xed87('0x11'));var as=require(_0xed87('0x12'));var hardwareService=require(_0xed87('0x13'));var logger=require('../../config/logger')(_0xed87('0x14'));var utils=require(_0xed87('0x15'));var config=require('../../config/environment');var licenseUtil=require(_0xed87('0x16'));var db=require(_0xed87('0x17'))['db'];function respondWithStatusCode(_0x5e912e,_0x4ffc2d){_0x4ffc2d=_0x4ffc2d||0xcc;return function(_0x466f35){if(_0x466f35){return _0x5e912e[_0xed87('0x18')](_0x4ffc2d);}return _0x5e912e[_0xed87('0x19')](_0x4ffc2d)[_0xed87('0x1a')]();};}function respondWithResult(_0x16bfd6,_0x3865c5){_0x3865c5=_0x3865c5||0xc8;return function(_0x52dfe8){if(_0x52dfe8){return _0x16bfd6[_0xed87('0x19')](_0x3865c5)[_0xed87('0x1b')](_0x52dfe8);}};}function respondWithFilteredResult(_0x1722a6,_0x1e9a3d){return function(_0x2f2fd3){if(_0x2f2fd3){var _0xd34e0e=typeof _0x1e9a3d[_0xed87('0x1c')]===_0xed87('0x1d')&&typeof _0x1e9a3d[_0xed87('0x1e')]==='undefined';var _0x3db5ea=_0x2f2fd3[_0xed87('0x1f')];var _0x2c386a=_0xd34e0e?0x0:_0x1e9a3d[_0xed87('0x1c')];var _0x5f4076=_0xd34e0e?_0x2f2fd3[_0xed87('0x1f')]:_0x1e9a3d[_0xed87('0x1c')]+_0x1e9a3d[_0xed87('0x1e')];var _0x3f9e08;if(_0x5f4076>=_0x3db5ea){_0x5f4076=_0x3db5ea;_0x3f9e08=0xc8;}else{_0x3f9e08=0xce;}_0x1722a6[_0xed87('0x19')](_0x3f9e08);return _0x1722a6[_0xed87('0x20')](_0xed87('0x21'),_0x2c386a+'-'+_0x5f4076+'/'+_0x3db5ea)[_0xed87('0x1b')](_0x2f2fd3);}return null;};}function patchUpdates(_0x3b7981){return function(_0x52e81c){try{jsonpatch['apply'](_0x52e81c,_0x3b7981,!![]);}catch(_0x5db546){return BPromise['reject'](_0x5db546);}return _0x52e81c[_0xed87('0x22')]();};}function saveUpdates(_0x5d3ec8,_0x4191a7){return function(_0x2b0b98){if(_0x2b0b98){return _0x2b0b98['update'](_0x5d3ec8)[_0xed87('0x23')](function(_0x505733){return _0x505733;});}return null;};}function removeEntity(_0x3d1641,_0x24962e){return function(_0x27799a){if(_0x27799a){return _0x27799a[_0xed87('0x24')]()[_0xed87('0x23')](function(){_0x3d1641['status'](0xcc)[_0xed87('0x1a')]();});}};}function handleEntityNotFound(_0x3c22b7,_0x41e0d4){return function(_0x320bcc){if(!_0x320bcc){_0x3c22b7[_0xed87('0x18')](0x194);}return _0x320bcc;};}function handleError(_0x289e38,_0x25a6f7){_0x25a6f7=_0x25a6f7||0x1f4;return function(_0x4735b3){logger[_0xed87('0x25')](_0x4735b3[_0xed87('0x26')]);if(_0x4735b3[_0xed87('0x27')]){delete _0x4735b3[_0xed87('0x27')];}_0x289e38[_0xed87('0x19')](_0x25a6f7)[_0xed87('0x28')](_0x4735b3);};}exports['index']=function(_0xb32b1c,_0x1c4a65){var _0x4eaa44={},_0x3dff74={},_0x33c367={'count':0x0,'rows':[]};var _0x21c93b=_['map'](db['WhatsappQueueReport'][_0xed87('0x29')],function(_0x428b75){return{'name':_0x428b75[_0xed87('0x2a')],'type':_0x428b75['type'][_0xed87('0x2b')]};});_0x3dff74[_0xed87('0x2c')]=_[_0xed87('0x2d')](_0x21c93b,_0xed87('0x27'));_0x3dff74[_0xed87('0x2e')]=_[_0xed87('0x2f')](_0xb32b1c[_0xed87('0x2e')]);_0x3dff74[_0xed87('0x30')]=_[_0xed87('0x31')](_0x3dff74['model'],_0x3dff74[_0xed87('0x2e')]);_0x4eaa44[_0xed87('0x32')]=_['intersection'](_0x3dff74[_0xed87('0x2c')],qs['fields'](_0xb32b1c[_0xed87('0x2e')][_0xed87('0x33')]));_0x4eaa44[_0xed87('0x32')]=_0x4eaa44[_0xed87('0x32')][_0xed87('0x34')]?_0x4eaa44[_0xed87('0x32')]:_0x3dff74[_0xed87('0x2c')];if(!_0xb32b1c[_0xed87('0x2e')][_0xed87('0x35')](_0xed87('0x36'))){_0x4eaa44[_0xed87('0x1e')]=qs['limit'](_0xb32b1c[_0xed87('0x2e')][_0xed87('0x1e')]);_0x4eaa44['offset']=qs[_0xed87('0x1c')](_0xb32b1c['query'][_0xed87('0x1c')]);}_0x4eaa44[_0xed87('0x37')]=qs['sort'](_0xb32b1c[_0xed87('0x2e')][_0xed87('0x38')]);_0x4eaa44[_0xed87('0x39')]=qs[_0xed87('0x30')](_[_0xed87('0x3a')](_0xb32b1c['query'],_0x3dff74[_0xed87('0x30')]),_0x21c93b);if(_0xb32b1c['query'][_0xed87('0x3b')]){_0x4eaa44['where']=_[_0xed87('0x3c')](_0x4eaa44[_0xed87('0x39')],{'$or':_[_0xed87('0x2d')](_0x21c93b,function(_0x217435){if(_0x217435[_0xed87('0x3d')]!==_0xed87('0x3e')){var _0x9e3356={};_0x9e3356[_0x217435[_0xed87('0x27')]]={'$like':'%'+_0xb32b1c[_0xed87('0x2e')]['filter']+'%'};return _0x9e3356;}})});}_0x4eaa44=_['merge']({},_0x4eaa44,_0xb32b1c[_0xed87('0x3f')]);var _0x206544={'where':_0x4eaa44[_0xed87('0x39')]};return db[_0xed87('0x40')][_0xed87('0x1f')](_0x206544)[_0xed87('0x23')](function(_0x5d1bd0){_0x33c367[_0xed87('0x1f')]=_0x5d1bd0;if(_0xb32b1c[_0xed87('0x2e')][_0xed87('0x41')]){_0x4eaa44['include']=[{'all':!![]}];}return db[_0xed87('0x40')][_0xed87('0x42')](_0x4eaa44);})[_0xed87('0x23')](function(_0x1b0092){_0x33c367[_0xed87('0x43')]=_0x1b0092;return _0x33c367;})[_0xed87('0x23')](respondWithFilteredResult(_0x1c4a65,_0x4eaa44))[_0xed87('0x44')](handleError(_0x1c4a65,null));};exports[_0xed87('0x45')]=function(_0x35bd1c,_0x406b73){var _0x5c6925={'raw':!![],'where':{'id':_0x35bd1c[_0xed87('0x46')]['id']}},_0x7e6cbb={};_0x7e6cbb[_0xed87('0x2c')]=_['keys'](db['WhatsappQueueReport'][_0xed87('0x29')]);_0x7e6cbb[_0xed87('0x2e')]=_[_0xed87('0x2f')](_0x35bd1c[_0xed87('0x2e')]);_0x7e6cbb['filters']=_[_0xed87('0x31')](_0x7e6cbb[_0xed87('0x2c')],_0x7e6cbb['query']);_0x5c6925[_0xed87('0x32')]=_[_0xed87('0x31')](_0x7e6cbb[_0xed87('0x2c')],qs[_0xed87('0x33')](_0x35bd1c[_0xed87('0x2e')][_0xed87('0x33')]));_0x5c6925[_0xed87('0x32')]=_0x5c6925[_0xed87('0x32')][_0xed87('0x34')]?_0x5c6925[_0xed87('0x32')]:_0x7e6cbb[_0xed87('0x2c')];if(_0x35bd1c['query'][_0xed87('0x41')]){_0x5c6925[_0xed87('0x47')]=[{'all':!![]}];}_0x5c6925=_[_0xed87('0x3c')]({},_0x5c6925,_0x35bd1c[_0xed87('0x3f')]);return db[_0xed87('0x40')][_0xed87('0x48')](_0x5c6925)[_0xed87('0x23')](handleEntityNotFound(_0x406b73,null))[_0xed87('0x23')](respondWithResult(_0x406b73,null))[_0xed87('0x44')](handleError(_0x406b73,null));};exports[_0xed87('0x49')]=function(_0x8aa499,_0x26c8f4){return db[_0xed87('0x40')][_0xed87('0x49')](_0x8aa499[_0xed87('0x4a')],{})[_0xed87('0x23')](respondWithResult(_0x26c8f4,0xc9))[_0xed87('0x44')](handleError(_0x26c8f4,null));};exports['update']=function(_0x2c7bef,_0x1a68a7){if(_0x2c7bef[_0xed87('0x4a')]['id']){delete _0x2c7bef['body']['id'];}return db[_0xed87('0x40')][_0xed87('0x48')]({'where':{'id':_0x2c7bef['params']['id']}})[_0xed87('0x23')](handleEntityNotFound(_0x1a68a7,null))[_0xed87('0x23')](saveUpdates(_0x2c7bef[_0xed87('0x4a')],null))[_0xed87('0x23')](respondWithResult(_0x1a68a7,null))['catch'](handleError(_0x1a68a7,null));};exports[_0xed87('0x24')]=function(_0x436e15,_0x3ca34c){return db[_0xed87('0x40')][_0xed87('0x48')]({'where':{'id':_0x436e15[_0xed87('0x46')]['id']}})[_0xed87('0x23')](handleEntityNotFound(_0x3ca34c,null))[_0xed87('0x23')](removeEntity(_0x3ca34c,null))[_0xed87('0x44')](handleError(_0x3ca34c,null));};exports[_0xed87('0x4b')]=function(_0x25a514,_0x18846f){return db[_0xed87('0x40')]['describe']()[_0xed87('0x23')](respondWithResult(_0x18846f,null))['catch'](handleError(_0x18846f,null));};
\ No newline at end of file
index 4095056..5b221ab 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0x76f3=['moment','bluebird','request-promise','path','../../config/environment','./whatsappQueueReport.attributes','exports','define','WhatsappQueueReport','uniqueid','lodash','util','api'];(function(_0x1af0de,_0x13350a){var _0x2ac28e=function(_0x42b7e5){while(--_0x42b7e5){_0x1af0de['push'](_0x1af0de['shift']());}};_0x2ac28e(++_0x13350a);}(_0x76f3,0x128));var _0x376f=function(_0x569d8e,_0x55d61e){_0x569d8e=_0x569d8e-0x0;var _0x50fe5c=_0x76f3[_0x569d8e];return _0x50fe5c;};'use strict';var _=require(_0x376f('0x0'));var util=require(_0x376f('0x1'));var logger=require('../../config/logger')(_0x376f('0x2'));var moment=require(_0x376f('0x3'));var BPromise=require(_0x376f('0x4'));var rp=require(_0x376f('0x5'));var fs=require('fs');var path=require(_0x376f('0x6'));var rimraf=require('rimraf');var config=require(_0x376f('0x7'));var attributes=require(_0x376f('0x8'));module[_0x376f('0x9')]=function(_0x33da68,_0x5eba03){return _0x33da68[_0x376f('0xa')](_0x376f('0xb'),attributes,{'tableName':'report_whatsapp_queue','paranoid':![],'indexes':[{'name':_0x376f('0xc'),'fields':[_0x376f('0xc')]}],'timestamps':!![]});};
\ No newline at end of file
index b5a3755..aac3470 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0x560a=['attributes','limit','catch','lodash','moment','randomstring','ioredis','../../mysqldb','rpc','../../config/environment','jayson/promise','client','request','then','info','WhatsappQueueReport,\x20%s,\x20%s','request\x20sent','debug','WhatsappQueueReport,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','CreateWhatsappQueueReport','WhatsappQueueReport','create','body','raw','UpdateWhatsappQueueReport','update','options','where'];(function(_0x15179f,_0x49c622){var _0x581434=function(_0x2a2950){while(--_0x2a2950){_0x15179f['push'](_0x15179f['shift']());}};_0x581434(++_0x49c622);}(_0x560a,0xea));var _0xa560=function(_0x3a7455,_0x46b004){_0x3a7455=_0x3a7455-0x0;var _0x216c72=_0x560a[_0x3a7455];return _0x216c72;};'use strict';var _=require(_0xa560('0x0'));var util=require('util');var moment=require(_0xa560('0x1'));var BPromise=require('bluebird');var rs=require(_0xa560('0x2'));var fs=require('fs');var Redis=require(_0xa560('0x3'));var db=require(_0xa560('0x4'))['db'];var utils=require('../../config/utils');var logger=require('../../config/logger')(_0xa560('0x5'));var config=require(_0xa560('0x6'));var jayson=require(_0xa560('0x7'));var client=jayson[_0xa560('0x8')]['http']({'port':0x232a});function respondWithRpcPromise(_0xf7f9cc,_0x5b8e0,_0x30f4ee){return new BPromise(function(_0x183ced,_0x18f5c3){return client[_0xa560('0x9')](_0xf7f9cc,_0x30f4ee)[_0xa560('0xa')](function(_0x2a8d5b){logger[_0xa560('0xb')](_0xa560('0xc'),_0x5b8e0,_0xa560('0xd'));logger[_0xa560('0xe')](_0xa560('0xf'),_0x5b8e0,'request\x20sent',JSON[_0xa560('0x10')](_0x2a8d5b));if(_0x2a8d5b[_0xa560('0x11')]){if(_0x2a8d5b[_0xa560('0x11')][_0xa560('0x12')]===0x1f4){logger[_0xa560('0x11')](_0xa560('0xc'),_0x5b8e0,_0x2a8d5b[_0xa560('0x11')]['message']);return _0x18f5c3(_0x2a8d5b[_0xa560('0x11')][_0xa560('0x13')]);}logger['error'](_0xa560('0xc'),_0x5b8e0,_0x2a8d5b['error'][_0xa560('0x13')]);return _0x183ced(_0x2a8d5b[_0xa560('0x11')][_0xa560('0x13')]);}else{logger['info'](_0xa560('0xc'),_0x5b8e0,_0xa560('0xd'));_0x183ced(_0x2a8d5b[_0xa560('0x14')][_0xa560('0x13')]);}})['catch'](function(_0x441fa6){logger[_0xa560('0x11')](_0xa560('0xc'),_0x5b8e0,_0x441fa6);_0x18f5c3(_0x441fa6);});});}exports[_0xa560('0x15')]=function(_0xcf1ca1){var _0x5e5bf6=this;return new Promise(function(_0x3b584d,_0x285d7e){return db[_0xa560('0x16')][_0xa560('0x17')](_0xcf1ca1[_0xa560('0x18')],{'raw':_0xcf1ca1['options']?_0xcf1ca1['options'][_0xa560('0x19')]===undefined?!![]:![]:!![]})[_0xa560('0xa')](function(_0x5cd7f6){logger[_0xa560('0xb')](_0xa560('0x15'),_0xcf1ca1);logger[_0xa560('0xe')](_0xa560('0x15'),_0xcf1ca1,JSON[_0xa560('0x10')](_0x5cd7f6));_0x3b584d(_0x5cd7f6);})['catch'](function(_0x639b2f){logger['error'](_0xa560('0x15'),_0x639b2f[_0xa560('0x13')],_0xcf1ca1);_0x285d7e(_0x5e5bf6[_0xa560('0x11')](0x1f4,_0x639b2f['message']));});});};exports[_0xa560('0x1a')]=function(_0x1cb173){var _0x4bf493=this;return new Promise(function(_0x2e942d,_0x294cb7){return db[_0xa560('0x16')][_0xa560('0x1b')](_0x1cb173[_0xa560('0x18')],{'raw':_0x1cb173['options']?_0x1cb173[_0xa560('0x1c')]['raw']===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x1cb173[_0xa560('0x1c')]?_0x1cb173[_0xa560('0x1c')][_0xa560('0x1d')]||null:null,'attributes':_0x1cb173['options']?_0x1cb173['options'][_0xa560('0x1e')]||null:null,'limit':_0x1cb173[_0xa560('0x1c')]?_0x1cb173[_0xa560('0x1c')][_0xa560('0x1f')]||null:null})[_0xa560('0xa')](function(_0x4638fd){logger[_0xa560('0xb')]('UpdateWhatsappQueueReport',_0x1cb173);logger[_0xa560('0xe')](_0xa560('0x1a'),_0x1cb173,JSON[_0xa560('0x10')](_0x4638fd));_0x2e942d(_0x4638fd);})[_0xa560('0x20')](function(_0x554613){logger[_0xa560('0x11')](_0xa560('0x1a'),_0x554613[_0xa560('0x13')],_0x1cb173);_0x294cb7(_0x4bf493['error'](0x1f4,_0x554613['message']));});});};
\ No newline at end of file
index 9206cd5..53e6a30 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0xac90=['index','isAuthenticated','describe','show','post','create','/:id','update','destroy','exports','multer','util','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./whatsappTransferReport.controller','get'];(function(_0x347b5b,_0x42eb2d){var _0x552b49=function(_0x432222){while(--_0x432222){_0x347b5b['push'](_0x347b5b['shift']());}};_0x552b49(++_0x42eb2d);}(_0xac90,0x145));var _0x0ac9=function(_0x1aba79,_0x335da1){_0x1aba79=_0x1aba79-0x0;var _0x3d2058=_0xac90[_0x1aba79];return _0x3d2058;};'use strict';var multer=require(_0x0ac9('0x0'));var util=require(_0x0ac9('0x1'));var path=require('path');var timeout=require(_0x0ac9('0x2'));var express=require(_0x0ac9('0x3'));var router=express[_0x0ac9('0x4')]();var fs_extra=require(_0x0ac9('0x5'));var auth=require(_0x0ac9('0x6'));var interaction=require(_0x0ac9('0x7'));var config=require(_0x0ac9('0x8'));var controller=require(_0x0ac9('0x9'));router[_0x0ac9('0xa')]('/',auth['isAuthenticated'](),controller[_0x0ac9('0xb')]);router[_0x0ac9('0xa')]('/describe',auth[_0x0ac9('0xc')](),controller[_0x0ac9('0xd')]);router['get']('/:id',auth[_0x0ac9('0xc')](),controller[_0x0ac9('0xe')]);router[_0x0ac9('0xf')]('/',auth[_0x0ac9('0xc')](),controller[_0x0ac9('0x10')]);router['put'](_0x0ac9('0x11'),auth['isAuthenticated'](),controller[_0x0ac9('0x12')]);router['delete'](_0x0ac9('0x11'),auth[_0x0ac9('0xc')](),controller[_0x0ac9('0x13')]);module[_0x0ac9('0x14')]=router;
\ No newline at end of file
index 2071063..3cdaa9a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0x7894=['ENUM','account','agent','DATE','sequelize','exports','STRING'];(function(_0x4f356e,_0x268105){var _0x431be4=function(_0x43cadf){while(--_0x43cadf){_0x4f356e['push'](_0x4f356e['shift']());}};_0x431be4(++_0x268105);}(_0x7894,0x170));var _0x4789=function(_0x1add60,_0x42bbf5){_0x1add60=_0x1add60-0x0;var _0x363adc=_0x7894[_0x1add60];return _0x363adc;};'use strict';var Sequelize=require(_0x4789('0x0'));module[_0x4789('0x1')]={'uniqueid':{'type':Sequelize[_0x4789('0x2')],'allowNull':![]},'type':{'type':Sequelize[_0x4789('0x3')](_0x4789('0x4'),_0x4789('0x5'),'queue'),'allowNull':![]},'transferredAt':{'type':Sequelize[_0x4789('0x6')]}};
\ No newline at end of file
index a8d32b5..b0af1c5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0x4fd6=['sendStatus','status','json','offset','undefined','count','limit','set','apply','reject','save','update','then','destroy','end','error','stack','name','send','index','map','WhatsappTransferReport','rawAttributes','fieldName','model','query','filters','intersection','attributes','fields','length','nolimit','order','sort','where','pick','merge','type','VIRTUAL','filter','includeAll','findAll','catch','show','params','keys','include','options','find','create','body','describe','eml-format','rimraf','zip-dir','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','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','../../mysqldb'];(function(_0x1f16d2,_0x432544){var _0x18eb8b=function(_0x5c7266){while(--_0x5c7266){_0x1f16d2['push'](_0x1f16d2['shift']());}};_0x18eb8b(++_0x432544);}(_0x4fd6,0x84));var _0x64fd=function(_0x22ccc0,_0x914457){_0x22ccc0=_0x22ccc0-0x0;var _0xe2af6a=_0x4fd6[_0x22ccc0];return _0xe2af6a;};'use strict';var emlformat=require(_0x64fd('0x0'));var rimraf=require(_0x64fd('0x1'));var zipdir=require(_0x64fd('0x2'));var jsonpatch=require('fast-json-patch');var rp=require(_0x64fd('0x3'));var moment=require(_0x64fd('0x4'));var BPromise=require(_0x64fd('0x5'));var Mustache=require(_0x64fd('0x6'));var util=require(_0x64fd('0x7'));var path=require(_0x64fd('0x8'));var sox=require(_0x64fd('0x9'));var csv=require(_0x64fd('0xa'));var ejs=require(_0x64fd('0xb'));var fs=require('fs');var fs_extra=require(_0x64fd('0xc'));var _=require(_0x64fd('0xd'));var squel=require(_0x64fd('0xe'));var crypto=require('crypto');var jsforce=require(_0x64fd('0xf'));var deskjs=require(_0x64fd('0x10'));var toCsv=require('to-csv');var querystring=require(_0x64fd('0x11'));var Papa=require('papaparse');var Redis=require(_0x64fd('0x12'));var authService=require(_0x64fd('0x13'));var qs=require(_0x64fd('0x14'));var as=require(_0x64fd('0x15'));var hardwareService=require(_0x64fd('0x16'));var logger=require(_0x64fd('0x17'))('api');var utils=require(_0x64fd('0x18'));var config=require(_0x64fd('0x19'));var licenseUtil=require(_0x64fd('0x1a'));var db=require(_0x64fd('0x1b'))['db'];function respondWithStatusCode(_0x2970ca,_0x160e7f){_0x160e7f=_0x160e7f||0xcc;return function(_0x80b99e){if(_0x80b99e){return _0x2970ca[_0x64fd('0x1c')](_0x160e7f);}return _0x2970ca[_0x64fd('0x1d')](_0x160e7f)['end']();};}function respondWithResult(_0x173ab3,_0x48fc36){_0x48fc36=_0x48fc36||0xc8;return function(_0x1eac35){if(_0x1eac35){return _0x173ab3['status'](_0x48fc36)[_0x64fd('0x1e')](_0x1eac35);}};}function respondWithFilteredResult(_0x3d5395,_0x103491){return function(_0x2f98d7){if(_0x2f98d7){var _0x5684be=typeof _0x103491[_0x64fd('0x1f')]===_0x64fd('0x20')&&typeof _0x103491['limit']===_0x64fd('0x20');var _0x2f4f1e=_0x2f98d7[_0x64fd('0x21')];var _0x69e149=_0x5684be?0x0:_0x103491['offset'];var _0x245eb9=_0x5684be?_0x2f98d7[_0x64fd('0x21')]:_0x103491['offset']+_0x103491[_0x64fd('0x22')];var _0x371fac;if(_0x245eb9>=_0x2f4f1e){_0x245eb9=_0x2f4f1e;_0x371fac=0xc8;}else{_0x371fac=0xce;}_0x3d5395[_0x64fd('0x1d')](_0x371fac);return _0x3d5395[_0x64fd('0x23')]('Content-Range',_0x69e149+'-'+_0x245eb9+'/'+_0x2f4f1e)['json'](_0x2f98d7);}return null;};}function patchUpdates(_0xa8b9ce){return function(_0x2a5e82){try{jsonpatch[_0x64fd('0x24')](_0x2a5e82,_0xa8b9ce,!![]);}catch(_0x4d2561){return BPromise[_0x64fd('0x25')](_0x4d2561);}return _0x2a5e82[_0x64fd('0x26')]();};}function saveUpdates(_0x5aeb0d,_0x2e5916){return function(_0x58d8ff){if(_0x58d8ff){return _0x58d8ff[_0x64fd('0x27')](_0x5aeb0d)[_0x64fd('0x28')](function(_0x27db43){return _0x27db43;});}return null;};}function removeEntity(_0x2adf9d,_0x3976b4){return function(_0x180883){if(_0x180883){return _0x180883[_0x64fd('0x29')]()[_0x64fd('0x28')](function(){_0x2adf9d['status'](0xcc)[_0x64fd('0x2a')]();});}};}function handleEntityNotFound(_0xd1a397,_0x30c932){return function(_0x2ac8b1){if(!_0x2ac8b1){_0xd1a397['sendStatus'](0x194);}return _0x2ac8b1;};}function handleError(_0x5b0d78,_0x5c665d){_0x5c665d=_0x5c665d||0x1f4;return function(_0x25ac6c){logger[_0x64fd('0x2b')](_0x25ac6c[_0x64fd('0x2c')]);if(_0x25ac6c[_0x64fd('0x2d')]){delete _0x25ac6c[_0x64fd('0x2d')];}_0x5b0d78['status'](_0x5c665d)[_0x64fd('0x2e')](_0x25ac6c);};}exports[_0x64fd('0x2f')]=function(_0x9cbd28,_0x56c8c6){var _0x36dbb6={},_0x8e5c4f={},_0x4bd736={'count':0x0,'rows':[]};var _0x5d1e0e=_[_0x64fd('0x30')](db[_0x64fd('0x31')][_0x64fd('0x32')],function(_0x4c0a7e){return{'name':_0x4c0a7e[_0x64fd('0x33')],'type':_0x4c0a7e['type']['key']};});_0x8e5c4f[_0x64fd('0x34')]=_[_0x64fd('0x30')](_0x5d1e0e,_0x64fd('0x2d'));_0x8e5c4f[_0x64fd('0x35')]=_['keys'](_0x9cbd28[_0x64fd('0x35')]);_0x8e5c4f[_0x64fd('0x36')]=_[_0x64fd('0x37')](_0x8e5c4f[_0x64fd('0x34')],_0x8e5c4f[_0x64fd('0x35')]);_0x36dbb6[_0x64fd('0x38')]=_[_0x64fd('0x37')](_0x8e5c4f['model'],qs[_0x64fd('0x39')](_0x9cbd28['query']['fields']));_0x36dbb6[_0x64fd('0x38')]=_0x36dbb6[_0x64fd('0x38')][_0x64fd('0x3a')]?_0x36dbb6[_0x64fd('0x38')]:_0x8e5c4f[_0x64fd('0x34')];if(!_0x9cbd28[_0x64fd('0x35')]['hasOwnProperty'](_0x64fd('0x3b'))){_0x36dbb6[_0x64fd('0x22')]=qs['limit'](_0x9cbd28['query'][_0x64fd('0x22')]);_0x36dbb6[_0x64fd('0x1f')]=qs[_0x64fd('0x1f')](_0x9cbd28[_0x64fd('0x35')][_0x64fd('0x1f')]);}_0x36dbb6[_0x64fd('0x3c')]=qs[_0x64fd('0x3d')](_0x9cbd28[_0x64fd('0x35')]['sort']);_0x36dbb6[_0x64fd('0x3e')]=qs[_0x64fd('0x36')](_[_0x64fd('0x3f')](_0x9cbd28['query'],_0x8e5c4f[_0x64fd('0x36')]),_0x5d1e0e);if(_0x9cbd28[_0x64fd('0x35')]['filter']){_0x36dbb6[_0x64fd('0x3e')]=_[_0x64fd('0x40')](_0x36dbb6['where'],{'$or':_['map'](_0x5d1e0e,function(_0x46491b){if(_0x46491b[_0x64fd('0x41')]!==_0x64fd('0x42')){var _0x3f3b4d={};_0x3f3b4d[_0x46491b['name']]={'$like':'%'+_0x9cbd28[_0x64fd('0x35')][_0x64fd('0x43')]+'%'};return _0x3f3b4d;}})});}_0x36dbb6=_[_0x64fd('0x40')]({},_0x36dbb6,_0x9cbd28['options']);var _0x2cd865={'where':_0x36dbb6[_0x64fd('0x3e')]};return db[_0x64fd('0x31')]['count'](_0x2cd865)[_0x64fd('0x28')](function(_0x55a48e){_0x4bd736['count']=_0x55a48e;if(_0x9cbd28[_0x64fd('0x35')][_0x64fd('0x44')]){_0x36dbb6['include']=[{'all':!![]}];}return db[_0x64fd('0x31')][_0x64fd('0x45')](_0x36dbb6);})[_0x64fd('0x28')](function(_0x33b73e){_0x4bd736['rows']=_0x33b73e;return _0x4bd736;})[_0x64fd('0x28')](respondWithFilteredResult(_0x56c8c6,_0x36dbb6))[_0x64fd('0x46')](handleError(_0x56c8c6,null));};exports[_0x64fd('0x47')]=function(_0x51e561,_0x5b6b7e){var _0x2f994d={'raw':!![],'where':{'id':_0x51e561[_0x64fd('0x48')]['id']}},_0x522413={};_0x522413[_0x64fd('0x34')]=_[_0x64fd('0x49')](db[_0x64fd('0x31')][_0x64fd('0x32')]);_0x522413[_0x64fd('0x35')]=_[_0x64fd('0x49')](_0x51e561['query']);_0x522413[_0x64fd('0x36')]=_[_0x64fd('0x37')](_0x522413['model'],_0x522413['query']);_0x2f994d['attributes']=_[_0x64fd('0x37')](_0x522413[_0x64fd('0x34')],qs[_0x64fd('0x39')](_0x51e561[_0x64fd('0x35')][_0x64fd('0x39')]));_0x2f994d[_0x64fd('0x38')]=_0x2f994d['attributes'][_0x64fd('0x3a')]?_0x2f994d['attributes']:_0x522413['model'];if(_0x51e561[_0x64fd('0x35')][_0x64fd('0x44')]){_0x2f994d[_0x64fd('0x4a')]=[{'all':!![]}];}_0x2f994d=_['merge']({},_0x2f994d,_0x51e561[_0x64fd('0x4b')]);return db[_0x64fd('0x31')][_0x64fd('0x4c')](_0x2f994d)['then'](handleEntityNotFound(_0x5b6b7e,null))[_0x64fd('0x28')](respondWithResult(_0x5b6b7e,null))[_0x64fd('0x46')](handleError(_0x5b6b7e,null));};exports[_0x64fd('0x4d')]=function(_0x1e62a0,_0xa22509){return db['WhatsappTransferReport']['create'](_0x1e62a0[_0x64fd('0x4e')],{})[_0x64fd('0x28')](respondWithResult(_0xa22509,0xc9))[_0x64fd('0x46')](handleError(_0xa22509,null));};exports[_0x64fd('0x27')]=function(_0x1d1088,_0x1a68c1){if(_0x1d1088[_0x64fd('0x4e')]['id']){delete _0x1d1088[_0x64fd('0x4e')]['id'];}return db[_0x64fd('0x31')]['find']({'where':{'id':_0x1d1088[_0x64fd('0x48')]['id']}})['then'](handleEntityNotFound(_0x1a68c1,null))[_0x64fd('0x28')](saveUpdates(_0x1d1088[_0x64fd('0x4e')],null))[_0x64fd('0x28')](respondWithResult(_0x1a68c1,null))[_0x64fd('0x46')](handleError(_0x1a68c1,null));};exports[_0x64fd('0x29')]=function(_0x31dc76,_0x34638c){return db[_0x64fd('0x31')][_0x64fd('0x4c')]({'where':{'id':_0x31dc76['params']['id']}})[_0x64fd('0x28')](handleEntityNotFound(_0x34638c,null))[_0x64fd('0x28')](removeEntity(_0x34638c,null))['catch'](handleError(_0x34638c,null));};exports[_0x64fd('0x4f')]=function(_0x135a8d,_0xe06906){return db['WhatsappTransferReport'][_0x64fd('0x4f')]()['then'](respondWithResult(_0xe06906,null))[_0x64fd('0x46')](handleError(_0xe06906,null));};
\ No newline at end of file
index 1c92515..7a70cb2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0x7144=['WhatsappTransferReport','report_whatsapp_transfer','uniqueid','lodash','util','api','moment','bluebird','request-promise','path','../../config/environment','./whatsappTransferReport.attributes','exports'];(function(_0x500785,_0x15e5ff){var _0x1f8bcc=function(_0x406983){while(--_0x406983){_0x500785['push'](_0x500785['shift']());}};_0x1f8bcc(++_0x15e5ff);}(_0x7144,0x13b));var _0x4714=function(_0x1a3271,_0x5d1da8){_0x1a3271=_0x1a3271-0x0;var _0x22b08f=_0x7144[_0x1a3271];return _0x22b08f;};'use strict';var _=require(_0x4714('0x0'));var util=require(_0x4714('0x1'));var logger=require('../../config/logger')(_0x4714('0x2'));var moment=require(_0x4714('0x3'));var BPromise=require(_0x4714('0x4'));var rp=require(_0x4714('0x5'));var fs=require('fs');var path=require(_0x4714('0x6'));var rimraf=require('rimraf');var config=require(_0x4714('0x7'));var attributes=require(_0x4714('0x8'));module[_0x4714('0x9')]=function(_0x52b4a1,_0x37ce22){return _0x52b4a1['define'](_0x4714('0xa'),attributes,{'tableName':_0x4714('0xb'),'paranoid':![],'indexes':[{'name':_0x4714('0xc'),'fields':[_0x4714('0xc')]}],'timestamps':!![]});};
\ No newline at end of file
index 07b5f4d..df78ce0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0xf695=['catch','lodash','util','moment','bluebird','randomstring','../../mysqldb','../../config/logger','rpc','jayson/promise','http','request','then','WhatsappTransferReport,\x20%s,\x20%s','request\x20sent','WhatsappTransferReport,\x20%s,\x20%s,\x20%s','stringify','error','code','message','info','result'];(function(_0x5213e9,_0x157746){var _0x2ea9f1=function(_0x5aa5a){while(--_0x5aa5a){_0x5213e9['push'](_0x5213e9['shift']());}};_0x2ea9f1(++_0x157746);}(_0xf695,0x14b));var _0x5f69=function(_0x56453e,_0x4921d5){_0x56453e=_0x56453e-0x0;var _0x2c850f=_0xf695[_0x56453e];return _0x2c850f;};'use strict';var _=require(_0x5f69('0x0'));var util=require(_0x5f69('0x1'));var moment=require(_0x5f69('0x2'));var BPromise=require(_0x5f69('0x3'));var rs=require(_0x5f69('0x4'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x5f69('0x5'))['db'];var utils=require('../../config/utils');var logger=require(_0x5f69('0x6'))(_0x5f69('0x7'));var config=require('../../config/environment');var jayson=require(_0x5f69('0x8'));var client=jayson['client'][_0x5f69('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x4d6b3c,_0x27a8f5,_0x200ead){return new BPromise(function(_0x12ba99,_0x37cdfe){return client[_0x5f69('0xa')](_0x4d6b3c,_0x200ead)[_0x5f69('0xb')](function(_0x41a37a){logger['info'](_0x5f69('0xc'),_0x27a8f5,_0x5f69('0xd'));logger['debug'](_0x5f69('0xe'),_0x27a8f5,_0x5f69('0xd'),JSON[_0x5f69('0xf')](_0x41a37a));if(_0x41a37a[_0x5f69('0x10')]){if(_0x41a37a['error'][_0x5f69('0x11')]===0x1f4){logger[_0x5f69('0x10')](_0x5f69('0xc'),_0x27a8f5,_0x41a37a[_0x5f69('0x10')][_0x5f69('0x12')]);return _0x37cdfe(_0x41a37a[_0x5f69('0x10')][_0x5f69('0x12')]);}logger['error'](_0x5f69('0xc'),_0x27a8f5,_0x41a37a[_0x5f69('0x10')]['message']);return _0x12ba99(_0x41a37a[_0x5f69('0x10')][_0x5f69('0x12')]);}else{logger[_0x5f69('0x13')](_0x5f69('0xc'),_0x27a8f5,_0x5f69('0xd'));_0x12ba99(_0x41a37a[_0x5f69('0x14')][_0x5f69('0x12')]);}})[_0x5f69('0x15')](function(_0x25b609){logger[_0x5f69('0x10')](_0x5f69('0xc'),_0x27a8f5,_0x25b609);_0x37cdfe(_0x25b609);});});}
\ No newline at end of file
index 764e60c..25f7c6a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0x29d4=['join','Offline\x20apps:','status','online','None','log','App\x20Ready!','catch','error','Server\x20failed\x20to\x20start\x20due\x20to\x20error:\x20%s','lodash','./config/seedDB','./config/license','./rpc','./config/environment','./config/logger','./config/pm2','./config/pm2/config','./config/schedule','./config/schedule/chat','./config/schedule/whatsapp','./config/schedule/transcribe','./config/schedule/cloud-provider','sequelize','then','default','listen','info','start','filter','exitCode','number','length','map','pm2_env','name','Online\x20apps:'];(function(_0x465a0c,_0x19d4d5){var _0x1e202e=function(_0x27bd8a){while(--_0x27bd8a){_0x465a0c['push'](_0x465a0c['shift']());}};_0x1e202e(++_0x19d4d5);}(_0x29d4,0x1a1));var _0x429d=function(_0x4dbaad,_0x730318){_0x4dbaad=_0x4dbaad-0x0;var _0x226c72=_0x29d4[_0x4dbaad];return _0x226c72;};'use strict';var _=require(_0x429d('0x0'));var db=require('./mysqldb')['db'];var seedDb=require(_0x429d('0x1'));var checkLicense=require(_0x429d('0x2'));var rpc=require(_0x429d('0x3'));var config=require(_0x429d('0x4'));var logger=require(_0x429d('0x5'))('app');var pm2=require(_0x429d('0x6'));var pm2Config=require(_0x429d('0x7'));var schedule=require(_0x429d('0x8'));var chat=require(_0x429d('0x9'));var whatsapp=require(_0x429d('0xa'));var transcribe=require(_0x429d('0xb'));var provider=require(_0x429d('0xc'));function main(){return db[_0x429d('0xd')]['sync']()[_0x429d('0xe')](function(){if(config['seedDB']){return seedDb[_0x429d('0xf')]();}})[_0x429d('0xe')](function(){return checkLicense[_0x429d('0xf')]();})['then'](function(){return rpc[_0x429d('0x10')]();})[_0x429d('0xe')](function(_0x5993cc){logger[_0x429d('0x11')](_0x5993cc);return chat[_0x429d('0x12')]();})[_0x429d('0xe')](function(){return whatsapp['start']();})[_0x429d('0xe')](function(){return schedule[_0x429d('0x12')]();})[_0x429d('0xe')](function(){return transcribe[_0x429d('0x12')]();})['then'](function(){return provider[_0x429d('0x12')]();})[_0x429d('0xe')](function(_0x43211b){logger['info'](_0x43211b);return pm2[_0x429d('0x12')](pm2Config);})[_0x429d('0xe')](function(_0x5c32ab){var _0x32d6b3=_0x5c32ab[_0x429d('0x13')](function(_0x1bfbdb){return typeof _0x1bfbdb[_0x429d('0x14')]===_0x429d('0x15')&&_0x1bfbdb[_0x429d('0x14')]>=0x0;});if(_0x32d6b3['length']>0x0){throw new Error(_0x32d6b3[_0x429d('0x16')]+'\x20processes\x20failed\x20at\x20startup:\x20'+_[_0x429d('0x17')](_0x32d6b3,function(_0x35830e){return'\x22'+_0x35830e[_0x429d('0x18')][_0x429d('0x19')]+'\x22';}));}logger['info'](_0x429d('0x1a'),_[_0x429d('0x17')](_[_0x429d('0x13')](_0x5c32ab,{'status':'online'}),_0x429d('0x19'))[_0x429d('0x1b')]());logger[_0x429d('0x11')](_0x429d('0x1c'),_[_0x429d('0x17')](_[_0x429d('0x13')](_0x5c32ab,function(_0x5a4093){return _0x5a4093[_0x429d('0x1d')]!==_0x429d('0x1e');}),_0x429d('0x19'))['join']()||_0x429d('0x1f'));console[_0x429d('0x20')](_0x429d('0x21'));})[_0x429d('0x22')](function(_0x2d0624){console[_0x429d('0x20')]('Server\x20failed\x20to\x20start\x20due\x20to\x20error!',_0x2d0624);logger[_0x429d('0x23')](_0x429d('0x24'),_0x2d0624);process['exit'](0x1);});}main();
\ No newline at end of file
index 5a8fd5f..3ccadfa 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0x008c=['The\x20password\x20must\x20be\x20different\x20from\x20the\x20last\x20one.\x20Please\x20choose\x20another\x20one.','updatePasswordsHistory','length','splice','unshift','encryptString','sign','session','payload','options','promisify','verify','randomBytes','hex','floor','HS512','toString','../../mysqldb','../../config/environment','../../config/license/hardware','../../config/license/util','../encryptor','jsonwebtoken','express-jwt','composable-middleware','basic-auth','crypto','bluebird','util','moment','secrets','role','name','userpic','permissions','mailPause','faxPause','openchannelPause','pauseType','showWebBar','lastLoginAt','lastPauseAt','crudPermissions','allowmessenger','phoneBarAutoAnswer','phoneBarDnd','phoneBarEnableRecording','phoneBarEnableDtmfTone','phoneBarEnableSettings','phoneBarExpires','hotdesk','interface','userProfileId','privacyEnabled','downloadAttachments','ignorePauseForPreviewCalls','chatAutoanswer','smsAutoanswerDelay','whatsappAutoanswerDelay','isChatInteractionAuthorized','isAuthenticated','use','user','params','closed','disposition','then','unmanaged','json','headers','startsWith','User','find','authenticate','pass','status','Wrong\x20credentials.','catch','Bearer','Unknown\x20authorization\x20format','query','apikey','getUuid','sub','Setting','findOne','blockDuration','isEqual','apiKeyNonce','nonce','disabled','Invalid\x20API\x20access\x20key','blocked','blockedAt','add','minutes','User\x20not\x20found.','User\x20object\x20not\x20found.','update','Forbidden','isWebrtcLicence','getLicense','webrtc','isMiddleware','setTokenCookie','It\x20looks\x20like\x20you\x20aren\x27t\x20logged\x20in,\x20please\x20try\x20again.','cookie','motion.token','redirect','send','retrieveApiKey','isNil','apiKeyIat','generateApiKey','regenerateApiKey','Please\x20use\x20the\x20previous\x20API\x20access\x20key\x20to\x20generate\x20a\x20new\x20one','validatePasswordPattern','test','Sequelize','ValidationError','The\x20password\x20must\x20be\x20at\x20least\x208\x20characters\x20long\x20and\x20have\x201\x20lowercase\x20character,\x201\x20uppercase\x20character,\x201\x20number\x20and\x201\x20special\x20character\x20~!@#$%^&-_=+[{]}.','decryptString','split','toLowerCase','format'];(function(_0x42245d,_0x51758f){var _0x4b211a=function(_0x2634e){while(--_0x2634e){_0x42245d['push'](_0x42245d['shift']());}};_0x4b211a(++_0x51758f);}(_0x008c,0x188));var _0xc008=function(_0x3b59d5,_0x1e23f2){_0x3b59d5=_0x3b59d5-0x0;var _0x30cc91=_0x008c[_0x3b59d5];return _0x30cc91;};'use strict';var db=require(_0xc008('0x0'))['db'];var config=require(_0xc008('0x1'));var hardwareConf=require(_0xc008('0x2'));var licenseUtil=require(_0xc008('0x3'));var encryptor=require(_0xc008('0x4'));var _=require('lodash');var jwt=require(_0xc008('0x5'));var expressJwt=require(_0xc008('0x6'));var compose=require(_0xc008('0x7'));var basicAuth=require(_0xc008('0x8'));var crypto=require(_0xc008('0x9'));var BPromise=require(_0xc008('0xa'));var util=require(_0xc008('0xb'));var moment=require(_0xc008('0xc'));var validateJwt=expressJwt({'secret':config[_0xc008('0xd')]['session']});var userAttributes=['id',_0xc008('0xe'),'fullname',_0xc008('0xf'),'internal','email',_0xc008('0x10'),_0xc008('0x11'),'md5secret','voicePause','chatPause',_0xc008('0x12'),_0xc008('0x13'),'smsPause',_0xc008('0x14'),_0xc008('0x15'),_0xc008('0x16'),_0xc008('0x17'),_0xc008('0x18'),_0xc008('0x19'),_0xc008('0x1a'),'passwordResetAt','alias',_0xc008('0x1b'),'phoneBarAutoAnswerDelay',_0xc008('0x1c'),_0xc008('0x1d'),_0xc008('0x1e'),_0xc008('0x1f'),_0xc008('0x20'),'phoneBarPrefixRequired','phoneBarRemoteControl','phoneBarRemoteControlPort',_0xc008('0x21'),_0xc008('0x22'),_0xc008('0x23'),_0xc008('0x24'),'settingsEnabled','wssPort','downloadVoiceRecordings','downloadOmnichannelInteractions',_0xc008('0x25'),_0xc008('0x26'),'selectRecallMeCampaign',_0xc008('0x27'),'chatAutoanswerDelay','emailAutoanswer','emailAutoanswerDelay','smsAutoanswer',_0xc008('0x28'),'openchannelAutoanswer','openchannelAutoanswerDelay','faxAutoanswer','faxAutoanswerDelay','whatsappAutoanswer',_0xc008('0x29')];exports[_0xc008('0x2a')]=function(){return this[_0xc008('0x2b')](!![])[_0xc008('0x2c')](function(_0x11cc75,_0x110128,_0x4f43e2){if(_0x11cc75[_0xc008('0x2d')]){_0x4f43e2();}else{return db['ChatInteraction']['findOne']({'where':{'id':_0x11cc75[_0xc008('0x2e')]['id']},'attributes':['id',_0xc008('0x2f'),_0xc008('0x30')],'raw':!![]})[_0xc008('0x31')](function(_0x5410f5){if(_0x5410f5&&_0x5410f5['closed']){return _0x110128['status'](_0x5410f5[_0xc008('0x30')]===_0xc008('0x32')?0x195:0x193)[_0xc008('0x33')]({'message':_0x5410f5[_0xc008('0x30')]==='unmanaged'?'Unmanaged.':'Forbidden.'});}else{_0x4f43e2();}})['catch'](function(_0x4caaf4){_0x4f43e2(_0x4caaf4);});}});};exports[_0xc008('0x2b')]=function isAuthenticated(_0x29ba43){return compose()[_0xc008('0x2c')](function(_0x529961,_0x24c14c,_0x32390d){var _0x209591;if(_0x529961[_0xc008('0x34')]['authorization']){if(_[_0xc008('0x35')](_0x529961[_0xc008('0x34')]['authorization'],'Basic')){var _0x539766=basicAuth(_0x529961);db[_0xc008('0x36')][_0xc008('0x37')]({'where':{'name':_0x539766[_0xc008('0xf')]}})[_0xc008('0x31')](function(_0x1de04b){if(!_0x1de04b||!_0x1de04b[_0xc008('0x38')](_0x539766[_0xc008('0x39')])){return _0x24c14c[_0xc008('0x3a')](0x191)[_0xc008('0x33')]({'message':_0xc008('0x3b')});}_0x529961[_0xc008('0x2d')]={'id':_0x1de04b['id']};_0x32390d();})[_0xc008('0x3c')](function(_0x596ee8){_0x32390d(_0x596ee8);});}else if(_[_0xc008('0x35')](_0x529961[_0xc008('0x34')]['authorization'],_0xc008('0x3d'))){validateJwt(_0x529961,_0x24c14c,_0x32390d);}else{if(_0x29ba43){_0x32390d();}else{return _0x24c14c[_0xc008('0x3a')](0x193)[_0xc008('0x33')]({'message':_0xc008('0x3e')});}}}else if(_0x529961[_0xc008('0x3f')][_0xc008('0x40')]){try{var _0x7cfbc5={'audience':hardwareConf[_0xc008('0x41')](),'issuer':hardwareConf[_0xc008('0x41')]()};verifyJwt(_0x529961['query'][_0xc008('0x40')],_0x7cfbc5)[_0xc008('0x31')](function(_0x459df4){return db[_0xc008('0x36')][_0xc008('0x37')]({'where':{'id':_0x459df4[_0xc008('0x42')]}})[_0xc008('0x31')](function(_0x5d0e06){_0x209591=_0x5d0e06;return db[_0xc008('0x43')][_0xc008('0x44')]({'where':{'id':0x1},'attributes':['allowedLoginAttempts',_0xc008('0x45')],'raw':!![]});})[_0xc008('0x31')](function(_0x5e38d5){if(!_0x209591||!_[_0xc008('0x46')](_0x209591[_0xc008('0x47')],_0x459df4[_0xc008('0x48')])){return _0x24c14c['status'](0x191)['json']({'message':'API\x20access\x20key\x20is\x20not\x20valid\x20anymore'});}if(_0x209591[_0xc008('0x49')]){return _0x24c14c['status'](0x191)[_0xc008('0x33')]({'message':_0xc008('0x4a')});}if(_0x209591[_0xc008('0x4b')]){if(_0x5e38d5[_0xc008('0x45')]>0x0){if(moment(_0x209591[_0xc008('0x4c')])[_0xc008('0x4d')](_0x5e38d5[_0xc008('0x45')],_0xc008('0x4e'))>moment()){return _0x24c14c[_0xc008('0x3a')](0x191)[_0xc008('0x33')]({'message':_0xc008('0x4a')});}}else{return _0x24c14c[_0xc008('0x3a')](0x191)[_0xc008('0x33')]({'message':_0xc008('0x4a')});}}_0x529961['user']={'id':_0x209591['id']};_0x32390d();});})[_0xc008('0x3c')](function(){return _0x24c14c[_0xc008('0x3a')](0x191)[_0xc008('0x33')]({'message':_0xc008('0x4a')});});}catch(_0x49a16d){_0x32390d(_0x49a16d);}}else if(_0x29ba43){_0x32390d();}else{return _0x24c14c[_0xc008('0x3a')](0x193)[_0xc008('0x33')]({'message':_0xc008('0x3e')});}})[_0xc008('0x2c')](function(_0x2d142d,_0x5706bb,_0x398cdd){if(_0x2d142d[_0xc008('0x2d')]){db[_0xc008('0x36')][_0xc008('0x37')]({'where':{'id':_0x2d142d[_0xc008('0x2d')]['id']},'attributes':userAttributes})['then'](function(_0xf4cc4b){if(!_0xf4cc4b){return _0x5706bb[_0xc008('0x3a')](0x194)[_0xc008('0x33')]({'message':_0xc008('0x4f')});}_0x2d142d['user']=_0xf4cc4b;_0x398cdd();})[_0xc008('0x3c')](function(_0xe37446){_0x398cdd(_0xe37446);});}else if(_0x29ba43){_0x398cdd();}else{return _0x5706bb[_0xc008('0x3a')](0x194)['json']({'message':_0xc008('0x50')});}});};exports['canUpdate']=function canUpdate(){return compose()[_0xc008('0x2c')](function(_0x5d3a72,_0x46fa8f,_0x213014){return licenseUtil['getLicense']()[_0xc008('0x31')](function(_0x24ba0f){if(_0x24ba0f[_0xc008('0x51')]){_0x213014();}else{return _0x46fa8f['status'](0x193)[_0xc008('0x33')]({'message':_0xc008('0x52')});}})[_0xc008('0x3c')](function(_0x44fc5d){_0x213014(_0x44fc5d);});});};exports[_0xc008('0x53')]=function isWebrtcLicence(){return compose()[_0xc008('0x2c')](function(_0x59ca2b,_0x47cafa,_0x5283a8){return licenseUtil[_0xc008('0x54')]()[_0xc008('0x31')](function(_0x103a83){if(_0x103a83[_0xc008('0x55')]){_0x5283a8();}else{return _0x47cafa[_0xc008('0x3a')](0x193)[_0xc008('0x33')]({'message':_0xc008('0x52')});}})[_0xc008('0x3c')](function(_0x572593){_0x5283a8(_0x572593);});});};exports['isMiddleware']=function(_0x516e43,_0x2d5a49,_0x2651cf){_0x516e43[_0xc008('0x56')]=!![];return _0x2651cf();};exports['signToken']=function signToken(_0x28bc33){return signJwt(_0x28bc33);};exports[_0xc008('0x57')]=function(_0x17ab1a,_0x1c2c50){if(!_0x17ab1a[_0xc008('0x2d')]){return _0x1c2c50[_0xc008('0x3a')](0x194)[_0xc008('0x33')]({'message':_0xc008('0x58')});}var _0x3fd7d9={'payload':{'id':_0x17ab1a[_0xc008('0x2d')]['id'],'role':_0x17ab1a['user']['role']},'options':{'expiresIn':0x15180}};return signJwt(_0x3fd7d9)[_0xc008('0x31')](function(_0x51cb14){_0x1c2c50[_0xc008('0x59')](_0xc008('0x5a'),_0x51cb14);_0x1c2c50[_0xc008('0x5b')]('/dashboards/general');})[_0xc008('0x3c')](function(_0x32b435){return _0x1c2c50[_0xc008('0x3a')](0x1f4)[_0xc008('0x5c')](_0x32b435);});};exports[_0xc008('0x5d')]=function(_0x51105f){if(_[_0xc008('0x5e')](_0x51105f[_0xc008('0x47')])||_['isNil'](_0x51105f[_0xc008('0x5f')])){return null;}else{return createJwt(_0x51105f);}};exports[_0xc008('0x60')]=function(_0x5b5fbf){_0x5b5fbf['apiKeyNonce']=generateNonce();_0x5b5fbf[_0xc008('0x5f')]=generateIssuedAt();return createJwt(_0x5b5fbf);};exports[_0xc008('0x61')]=function(_0x20947b,_0x30d0aa){var _0x14b6a0=_0x20947b['query']['apikey'];if(_0x14b6a0){var _0x34b72a={'nonce':_0x30d0aa['apiKeyNonce'],'iat':_0x30d0aa[_0xc008('0x5f')],'audience':hardwareConf[_0xc008('0x41')](),'issuer':hardwareConf[_0xc008('0x41')]()};return verifyJwt(_0x14b6a0,_0x34b72a)[_0xc008('0x31')](function(){return generateApiKey(_0x30d0aa);});}else{throw{'message':_0xc008('0x62')};}};exports[_0xc008('0x63')]=function(_0x49d8b0){var _0x2ea742=new RegExp(/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/);if(!_0x2ea742[_0xc008('0x64')](_0x49d8b0))throw new db[(_0xc008('0x65'))][(_0xc008('0x66'))](_0xc008('0x67'));return;};exports['validatePasswordHistory']=function(_0x41fae3,_0x4fdab4,_0x535e6e){var _0x5dbfca=encryptor[_0xc008('0x68')](_0x4fdab4)[_0xc008('0x69')](',');for(var _0x5dfb69=0x0;_0x5dfb69<_0x535e6e;_0x5dfb69++){if(!_0x5dbfca[_0x5dfb69])break;if(_0x41fae3['toLowerCase']()===_0x5dbfca[_0x5dfb69][_0xc008('0x6a')]()){var _0x2d8361=util[_0xc008('0x6b')]('The\x20password\x20must\x20be\x20different\x20from\x20the\x20previous\x20%d\x20passwords.\x20Please\x20choose\x20another\x20one.',_0x535e6e);if(_0x535e6e===0x1){_0x2d8361=_0xc008('0x6c');}throw new db[(_0xc008('0x65'))][(_0xc008('0x66'))](_0x2d8361);}}return;};exports[_0xc008('0x6d')]=function(_0x5baff1,_0x4022dd){var _0x4eaa6d=_0x4022dd?encryptor[_0xc008('0x68')](_0x4022dd)[_0xc008('0x69')](','):[];if(_0x4eaa6d[_0xc008('0x6e')]===0x5){_0x4eaa6d[_0xc008('0x6f')](-0x1,0x1);}_0x4eaa6d[_0xc008('0x70')](_0x5baff1);return encryptor[_0xc008('0x71')](_0x4eaa6d['join'](','));};function signJwt(_0x375e71){var _0x570001=BPromise['promisify'](jwt[_0xc008('0x72')],{'context':jwt});var _0x30aa1e=_0x375e71['secret']||config[_0xc008('0xd')][_0xc008('0x73')];return new BPromise(function(_0x3e373e,_0x4517c0){_0x570001(_0x375e71[_0xc008('0x74')],_0x30aa1e,_0x375e71[_0xc008('0x75')])[_0xc008('0x31')](function(_0x57ce9a){_0x3e373e(_0x57ce9a);})[_0xc008('0x3c')](function(_0x462e1e){_0x4517c0(_0x462e1e);});});}function verifyJwt(_0x3bfb15,_0x2a60e6,_0xb3ca0f){var _0x167425=BPromise[_0xc008('0x76')](jwt[_0xc008('0x77')],{'context':jwt});var _0xbc430a=_0xb3ca0f||config[_0xc008('0xd')][_0xc008('0x73')];return new BPromise(function(_0x2b5eb6,_0x131b81){_0x167425(_0x3bfb15,_0xbc430a,_0x2a60e6)[_0xc008('0x31')](function(_0x4e0251){_0x2b5eb6(_0x4e0251);})[_0xc008('0x3c')](function(_0x2e5467){_0x131b81(_0x2e5467);});});}function generateNonce(){return crypto[_0xc008('0x78')](0x10)['toString'](_0xc008('0x79'));}function generateIssuedAt(){return Math[_0xc008('0x7a')](Date['now']()/0x3e8)['toString']();}function createJwt(_0x1a03fd){var _0x2a4c2b={'payload':{'iat':_0x1a03fd[_0xc008('0x5f')],'nonce':_0x1a03fd[_0xc008('0x47')]},'options':{'algorithm':_0xc008('0x7b'),'subject':_0x1a03fd['id'][_0xc008('0x7c')](),'issuer':hardwareConf[_0xc008('0x41')](),'audience':hardwareConf[_0xc008('0x41')]()}};return signJwt(_0x2a4c2b)[_0xc008('0x31')](function(_0x1b059b){return{'iat':_0x1a03fd[_0xc008('0x5f')],'nonce':_0x1a03fd['apiKeyNonce'],'token':_0x1b059b};});}
\ No newline at end of file
index 5417ef6..de1dd3a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0x5f2f=['rows','catch','keys','filter','startsWith','cf_','map','CmCustomField','findOne','slice','length','fieldType','type','lodash','./sql-utils','../../mysqldb','findAll','skipContactsQuery','resolve','getContactsSubquery','then','search','parseQueryParameters','where','fields','user','clause','tags','skip','tag','countFilteredContacts','count','buildContactsQuery','getFilteredContacts'];(function(_0x89f23f,_0x5e0033){var _0x4a37af=function(_0x5e5e1a){while(--_0x5e5e1a){_0x89f23f['push'](_0x89f23f['shift']());}};_0x4a37af(++_0x5e0033);}(_0x5f2f,0x73));var _0xf5f2=function(_0x491614,_0x3ec4bf){_0x491614=_0x491614-0x0;var _0x596eb1=_0x5f2f[_0x491614];return _0x596eb1;};'use strict';var _=require(_0xf5f2('0x0'));var sqlUtils=require(_0xf5f2('0x1'));var db=require(_0xf5f2('0x2'))['db'];exports[_0xf5f2('0x3')]=function(_0x1172dd,_0x174bc7,_0x3c72ee,_0x107cf){var _0x501fbd={'count':0x0,'rows':[]};var _0x4854b6=sqlUtils[_0xf5f2('0x4')](_0x174bc7,_0x1172dd);if(_0x4854b6){return Promise[_0xf5f2('0x5')](_0x501fbd);}var _0xad7f65=sqlUtils[_0xf5f2('0x6')]();var _0x3133bc={};var _0x473100=![];var _0x5907aa=![];return Promise[_0xf5f2('0x5')]()[_0xf5f2('0x7')](function(){if(_0x1172dd[_0xf5f2('0x8')]){return sqlUtils['parseAdvancedSearchFilter'](_0x1172dd[_0xf5f2('0x8')],_0x107cf);}else{return sqlUtils[_0xf5f2('0x9')](_0x1172dd,_0x107cf);}})[_0xf5f2('0x7')](function(_0x4e0e6b){_0xad7f65[_0xf5f2('0xa')](_0x4e0e6b['default']);_0xad7f65['where'](_0x4e0e6b[_0xf5f2('0xb')]);_0xad7f65[_0xf5f2('0xa')](_0x4e0e6b['filter']);_0xad7f65[_0xf5f2('0xa')](_0x4e0e6b[_0xf5f2('0xc')][_0xf5f2('0xd')]);_0x3133bc=_0x4e0e6b[_0xf5f2('0xe')];_0x5907aa=_0x4e0e6b[_0xf5f2('0xc')][_0xf5f2('0xf')];return sqlUtils['checkListsRestrictions'](_0x174bc7,_0x1172dd,_0x5907aa);})[_0xf5f2('0x7')](function(_0xea612c){_0xad7f65[_0xf5f2('0xa')](_0xea612c);var _0x1c1a5c=_0x1172dd[_0xf5f2('0x8')]?_0x3133bc['ids']:_0x1172dd[_0xf5f2('0x10')];_0x473100=_0x1c1a5c?!![]:![];return sqlUtils[_0xf5f2('0x11')](_0xad7f65,_0x1c1a5c);})[_0xf5f2('0x7')](function(_0x1b6dd2){_0x501fbd[_0xf5f2('0x12')]=_0x1b6dd2;if(_0x501fbd[_0xf5f2('0x12')]===0x0){return;}return sqlUtils[_0xf5f2('0x13')](_0xad7f65,_0x1172dd[_0xf5f2('0xb')],_0x3c72ee,_0x473100,_0x3133bc[_0xf5f2('0xd')],_0x5907aa);})[_0xf5f2('0x7')](function(_0x20fccd){if(!_0x20fccd){return[];}return sqlUtils[_0xf5f2('0x14')](_0x20fccd,_0x1172dd,_0x3c72ee);})[_0xf5f2('0x7')](function(_0x3ee69){_0x501fbd[_0xf5f2('0x15')]=_0x3ee69;return _0x501fbd;})[_0xf5f2('0x16')](function(_0x1bf655){throw _0x1bf655;});};exports['describe']=function(){var _0x34706d={};var _0x47101e=[];return db['CmContact']['describe']()[_0xf5f2('0x7')](function(_0x388e6c){_0x34706d=_0x388e6c;var _0x4ae323=Object[_0xf5f2('0x17')](_0x34706d)[_0xf5f2('0x18')](function(_0x39e44a){return _[_0xf5f2('0x19')](_0x39e44a,_0xf5f2('0x1a'))?_0x39e44a:undefined;});var _0x4c691a=_0x4ae323[_0xf5f2('0x1b')](function(_0x4669a6){return db[_0xf5f2('0x1c')][_0xf5f2('0x1d')]({'where':{'id':_0x4669a6[_0xf5f2('0x1e')](0x3)},'raw':!![]});});return Promise['all'](_0x4c691a);})['then'](function(_0x5f1124){for(var _0x3f79d5=0x0;_0x3f79d5<_0x5f1124[_0xf5f2('0x1f')];_0x3f79d5++){if(_0x5f1124[_0x3f79d5]){var _0x1a5bb3=_0xf5f2('0x1a')+_0x5f1124[_0x3f79d5]['id'];_0x34706d[_0x1a5bb3][_0xf5f2('0x20')]=_0x5f1124[_0x3f79d5][_0xf5f2('0x21')];}}_0x47101e=_[_0xf5f2('0x1b')](Object[_0xf5f2('0x17')](_0x34706d),function(_0x4ab014){return{'name':_0x4ab014,'type':_0x34706d[_0x4ab014][_0xf5f2('0x21')]};});return _0x47101e;})[_0xf5f2('0x16')](function(_0x375ca8){throw _0x375ca8;});};
\ No newline at end of file
index bfee0d0..5aff2eb 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0x8d56=['then','role','length','c.ListId\x20IS\x20NULL','attributes','group','c.id','limit','offset','subqry.id','order','subqry.','DESC','findAll','keyBy','QueryTypes','SELECT','CmContact','sequelize','Tags','clone','COUNT(*)','isEmpty','t.id\x20IN\x20?','Sequelize','query','toString','exports','lodash','squel','../parsers/advancedSearch','../parsers/qs','../interaction/utils','../../mysqldb','agent','search','ListId','true','select','from','cm_contacts','where','c.deletedAt\x20IS\x20NULL','subqry','left_join','cm_user_has_contacts','uc.CmContactId\x20=\x20','.id','ct.CmContactId\x20=\x20','tools_tags','t.id\x20=\x20ct.TagId','firstName','phone','mobile','fax','email','createdAt','updatedAt','deletedAt','TagIds','includes','push','forEach','GROUP_CONCAT(DISTINCT\x20t.id)','field','expr','getSelectedTags','replace','split','MATCH\x20(c.firstName,\x20c.lastName,\x20c.phone,\x20c.mobile,\x20c.fax,\x20c.email)\x20AGAINST\x20(?\x20IN\x20BOOLEAN\x20MODE)','getFullTextValue','c.id\x20LIKE\x20?','c.phone\x20LIKE\x20?','c.mobile\x20LIKE\x20?','c.fax\x20LIKE\x20?','isEmail','c.email\x20LIKE\x20?','c.firstName\x20LIKE\x20?','c.lastName\x20LIKE\x20?','parseSearch','conditions','find','name','dateOfBirth','fieldType','datetime','DATE','buildExpression','type','default','text','start','value','end','Tag','map','tags','clause','and','ids','User','user','keys','some','compact','Contact','c.ListId\x20IN\x20?','\x20=\x20?','resolve','fields','tag'];(function(_0x4cf110,_0x2191d5){var _0x167568=function(_0x51fbc6){while(--_0x51fbc6){_0x4cf110['push'](_0x4cf110['shift']());}};_0x167568(++_0x2191d5);}(_0x8d56,0x169));var _0x68d5=function(_0x27a3cb,_0x4af597){_0x27a3cb=_0x27a3cb-0x0;var _0x54ff38=_0x8d56[_0x27a3cb];return _0x54ff38;};'use strict';var _=require(_0x68d5('0x0'));var squel=require(_0x68d5('0x1'));var as=require(_0x68d5('0x2'));var qs=require(_0x68d5('0x3'));var utils=require(_0x68d5('0x4'));var db=require(_0x68d5('0x5'))['db'];function skipContactsQuery(_0xf3a34,_0x45c3a2){var _0x5da5c1=![];if(_0xf3a34['role']===_0x68d5('0x6')&&!_0x45c3a2[_0x68d5('0x7')]&&!_0x45c3a2[_0x68d5('0x8')]&&_0x45c3a2['autocomplete']!==_0x68d5('0x9')){_0x5da5c1=!![];}return _0x5da5c1;}function getContactsSubquery(){return squel[_0x68d5('0xa')]()[_0x68d5('0xb')](_0x68d5('0xc'),'c')[_0x68d5('0xd')](_0x68d5('0xe'));}function applyJoinClauses(_0x5bec6c,_0x56ebed){var _0x1a6713=_0x56ebed?'c':_0x68d5('0xf');_0x5bec6c[_0x68d5('0x10')](_0x68d5('0x11'),'uc',_0x68d5('0x12')+_0x1a6713+_0x68d5('0x13'))[_0x68d5('0x10')]('cm_contact_has_tags','ct',_0x68d5('0x14')+_0x1a6713+'.id')[_0x68d5('0x10')](_0x68d5('0x15'),'t',_0x68d5('0x16'));return _0x5bec6c;}function addFieldsToQuery(_0x501b6e,_0x19e8f4,_0x143b8f,_0xb99da6,_0x5d27d8){var _0x57a3fa=_0x5d27d8?'c':'subqry';if(!_0x19e8f4){_0x19e8f4=['id',_0x68d5('0x17'),'lastName',_0x68d5('0x18'),_0x68d5('0x19'),_0x68d5('0x1a'),_0x68d5('0x1b'),_0x68d5('0x8'),'CompanyId',_0x68d5('0x1c'),_0x68d5('0x1d'),_0x68d5('0x1e'),_0x68d5('0x1f')];}else if(!_0x19e8f4[_0x68d5('0x20')]('id')){_0x19e8f4[_0x68d5('0x21')]('id');}var _0x15c519=_0x143b8f&&_0x5d27d8||!_0x143b8f&&!_0x5d27d8;if(_0xb99da6){_0x15c519=_0xb99da6&&_0x5d27d8||!_0xb99da6&&!_0x5d27d8;}_0x19e8f4[_0x68d5('0x22')](function(_0xe4b5ee){if(_0xe4b5ee===_0x68d5('0x1f')){if(_0x15c519){_0x501b6e['field'](_0x68d5('0x23'),_0xe4b5ee);}else if(_0x143b8f||_0xb99da6){_0x501b6e[_0x68d5('0x24')](_0x57a3fa+'.'+_0xe4b5ee);}}else{_0x501b6e[_0x68d5('0x24')](_0x57a3fa+'.'+_0xe4b5ee);}});return _0x501b6e;}function getSqlClauses(){var _0x29a821={'default':squel[_0x68d5('0x25')](),'fields':squel[_0x68d5('0x25')](),'filter':squel[_0x68d5('0x25')](),'tags':{'clause':squel[_0x68d5('0x25')](),'ids':null},'user':{'clause':squel[_0x68d5('0x25')](),'skip':![]}};return _0x29a821;}function parseTagParameter(_0xbb9039){var _0xbbe81a=squel[_0x68d5('0x25')]();if(_0xbb9039){var _0x1a5eee=utils[_0x68d5('0x26')](_0xbb9039);_0x1a5eee['forEach'](function(_0x3b1611){_0xbbe81a['or']('CONCAT(\x27,\x27,\x20subqry.TagIds,\x20\x27,\x27)\x20LIKE\x20?','%,'+_0x3b1611+',%');});}return _0xbbe81a;}function parseSearchFilter(_0xab005c){var _0x298940=squel[_0x68d5('0x25')]();if(_0xab005c){var _0x12e0a6=_0xab005c['replace']('\x5c','\x5c\x5c')[_0x68d5('0x27')](/'/g,'\x27\x27');if(_0x12e0a6[_0x68d5('0x28')]('\x20')['length']>0x1){_0x298940['or'](_0x68d5('0x29'),qs[_0x68d5('0x2a')](_0x12e0a6),null);}else{if(qs['isNumeric'](_0x12e0a6)){_0x298940['or'](_0x68d5('0x2b'),_0x12e0a6+'%');_0x298940['or'](_0x68d5('0x2c'),_0x12e0a6+'%');_0x298940['or'](_0x68d5('0x2d'),_0x12e0a6+'%');_0x298940['or'](_0x68d5('0x2e'),_0x12e0a6+'%');}else if(qs[_0x68d5('0x2f')](_0x12e0a6)){_0x298940['or'](_0x68d5('0x30'),_0x12e0a6+'%');}else{_0x298940['or'](_0x68d5('0x31'),'%'+_0x12e0a6+'%');_0x298940['or'](_0x68d5('0x32'),'%'+_0x12e0a6+'%');_0x298940['or'](_0x68d5('0x30'),'%'+_0x12e0a6+'%');}}}return _0x298940;}function parseAdvancedSearchFilter(_0x50e40d,_0x1b2c77){var _0x365e63=getSqlClauses();var _0x53c050=as[_0x68d5('0x33')](_0x50e40d);var _0x5dd6df=_0x53c050['sqlOperator'];for(var _0x5ef551=0x0;_0x5ef551<_0x53c050[_0x68d5('0x34')]['length'];_0x5ef551++){var _0x6645a3=_0x53c050[_0x68d5('0x34')][_0x5ef551];var _0x5611c6='c';var _0x31bd54=_[_0x68d5('0x35')](_0x1b2c77,[_0x68d5('0x36'),_0x6645a3[_0x68d5('0x24')]]);if(_0x31bd54){if(_0x6645a3[_0x68d5('0x24')]===_0x68d5('0x37')||_0x31bd54[_0x68d5('0x38')]===_0x68d5('0x39')){_0x6645a3['castTo']=_0x68d5('0x3a');}var _0x1f7993=as[_0x68d5('0x3b')](_0x5611c6,_0x31bd54[_0x68d5('0x3c')],_0x6645a3);_0x365e63[_0x68d5('0x3d')][_0x5dd6df](_0x1f7993[_0x68d5('0x3e')],_0x1f7993['value'][_0x68d5('0x3f')],_0x1f7993[_0x68d5('0x40')][_0x68d5('0x41')]);}else{if(_0x6645a3[_0x68d5('0x24')]===_0x68d5('0x42')){var _0x335293=_0x6645a3['value']['split'](',')[_0x68d5('0x43')](function(_0x2b9cd9){return Number(_0x2b9cd9);});var _0x133792=parseTagParameter(_0x335293);_0x365e63[_0x68d5('0x44')][_0x68d5('0x45')][_0x68d5('0x46')](_0x133792);_0x365e63[_0x68d5('0x44')][_0x68d5('0x47')]=_0x335293;}else if(_0x6645a3[_0x68d5('0x24')]===_0x68d5('0x48')){_0x365e63[_0x68d5('0x49')][_0x68d5('0x45')][_0x68d5('0x46')]('uc.UserId\x20=\x20?',_0x6645a3[_0x68d5('0x40')]);_0x365e63['user']['skip']=!![];}}}return _0x365e63;}function parseModelFields(_0x2b4c23,_0x33aa9c){var _0x2eb824=squel['expr']();var _0x5e3d29=_(_0x2b4c23)[_0x68d5('0x4a')]()['map'](function(_0x508c41){return _[_0x68d5('0x4b')](_0x33aa9c,[_0x68d5('0x36'),_0x508c41])?_0x508c41:undefined;})[_0x68d5('0x4c')]()[_0x68d5('0x40')]();if(_0x2b4c23[_0x68d5('0x4d')]){_0x5e3d29[_0x68d5('0x21')](_0x68d5('0x4d'));}if(_0x5e3d29['length']>0x0){_0x5e3d29['forEach'](function(_0x3afa51){if(_0x3afa51===_0x68d5('0x8')){_0x2eb824[_0x68d5('0x46')](_0x68d5('0x4e'),[]['concat'](_0x2b4c23[_0x3afa51]));}else if(_0x3afa51==='Contact'){var _0x42d835='%'+_0x2b4c23[_0x3afa51]+'%';_0x2eb824['and']('CONCAT_WS(\x27\x20\x27,\x20c.firstName,\x20c.lastName,\x20c.email)\x20LIKE\x20?',_0x42d835);}else{_0x2eb824[_0x68d5('0x46')]('c.'+_0x3afa51+_0x68d5('0x4f'),_0x2b4c23[_0x3afa51]);}});}return _0x2eb824;}function parseQueryParameters(_0x107261,_0xbe6768){var _0x4f8523=getSqlClauses();return Promise[_0x68d5('0x50')]()['then'](function(){return parseModelFields(_0x107261,_0xbe6768);})['then'](function(_0xe95a15){_0x4f8523[_0x68d5('0x51')]['and'](_0xe95a15);return parseTagParameter(_0x107261[_0x68d5('0x52')]);})['then'](function(_0x15d3b6){_0x4f8523[_0x68d5('0x44')][_0x68d5('0x45')]['and'](_0x15d3b6);return parseSearchFilter(_0x107261['filter']);})[_0x68d5('0x53')](function(_0x1df774){_0x4f8523['filter']=_0x1df774;return _0x4f8523;});}function checkListsRestrictions(_0x5b2e65,_0x53533a,_0x521b31){var _0x52530c=squel[_0x68d5('0x25')]();return Promise['resolve']()[_0x68d5('0x53')](function(){if(_0x53533a[_0x68d5('0x7')]&&_0x5b2e65[_0x68d5('0x54')]==='agent'&&!_0x521b31){return _0x5b2e65['getLists']({'attributes':['id'],'raw':!![]});}})[_0x68d5('0x53')](function(_0x33f519){if(_0x33f519){if(_0x33f519[_0x68d5('0x55')]===0x0){_0x52530c[_0x68d5('0x46')](_0x68d5('0x56'));}else{_0x52530c[_0x68d5('0x46')](_0x68d5('0x4e'),_['map'](_0x33f519,'id'));}}})[_0x68d5('0x53')](function(){return _0x52530c;});}function buildContactsQuery(_0x1bc364,_0x209cfb,_0x5c46d9,_0x3d6efd,_0x555990,_0x596c28){if(_0x209cfb){_0x209cfb=_0x5c46d9[_0x68d5('0x57')];}_0x1bc364=addFieldsToQuery(_0x1bc364,_0x209cfb,_0x3d6efd,_0x596c28,!![]);var _0x1312e4=squel[_0x68d5('0xa')]();_0x1312e4=addFieldsToQuery(_0x1312e4,_0x209cfb,_0x3d6efd,_0x596c28,![]);if(_0x3d6efd||_0x596c28){_0x1bc364=applyJoinClauses(_0x1bc364,!![]);_0x1bc364[_0x68d5('0x58')](_0x68d5('0x59'));if(_0x5c46d9[_0x68d5('0x5a')]){_0x1312e4[_0x68d5('0x5a')](_0x5c46d9[_0x68d5('0x5a')]);}if(_0x5c46d9[_0x68d5('0x5b')]){_0x1312e4['offset'](_0x5c46d9[_0x68d5('0x5b')]);}}else{_0x1312e4=applyJoinClauses(_0x1312e4,![]);_0x1312e4[_0x68d5('0x58')](_0x68d5('0x5c'));if(_0x5c46d9[_0x68d5('0x5a')]){_0x1bc364[_0x68d5('0x5a')](_0x5c46d9[_0x68d5('0x5a')]);}if(_0x5c46d9[_0x68d5('0x5b')]){_0x1bc364[_0x68d5('0x5b')](_0x5c46d9[_0x68d5('0x5b')]);}}_0x1312e4['having'](_0x555990);if(_0x5c46d9[_0x68d5('0x5d')]){_0x5c46d9[_0x68d5('0x5d')][_0x68d5('0x22')](function(_0x240649){_0x1bc364['order']('c.'+_0x240649[0x0],_0x240649[0x1]==='DESC'?![]:!![]);_0x1312e4['order'](_0x68d5('0x5e')+_0x240649[0x0],_0x240649[0x1]===_0x68d5('0x5f')?![]:!![]);});}_0x1312e4[_0x68d5('0xb')](_0x1bc364,_0x68d5('0xf'));return _0x1312e4;}function getFilteredContacts(_0x5b04b6){var _0x48521a=[];return db[_0x68d5('0x42')][_0x68d5('0x60')]({'attributes':['id',_0x68d5('0x36'),'color'],'raw':!![]})[_0x68d5('0x53')](function(_0x1accb5){_0x48521a=_[_0x68d5('0x61')](_0x1accb5,'id');var _0x56d6e5={'type':db['Sequelize'][_0x68d5('0x62')][_0x68d5('0x63')],'model':db[_0x68d5('0x64')],'mapToModel':!![],'nest':!![],'raw':!![]};return db[_0x68d5('0x65')]['query'](_0x5b04b6['toString'](),_0x56d6e5);})['then'](function(_0x351897){_0x351897['forEach'](function(_0x2e4281){if(_0x2e4281[_0x68d5('0x1f')]){_0x2e4281[_0x68d5('0x66')]=[];_0x2e4281['TagIds'][_0x68d5('0x28')](',')[_0x68d5('0x22')](function(_0x18e632){_0x2e4281[_0x68d5('0x66')][_0x68d5('0x21')](_0x48521a[_0x18e632]);});}delete _0x2e4281[_0x68d5('0x1f')];});return _0x351897;});}function countFilteredContacts(_0x24b906,_0x506347){var _0x21bbbc=_0x24b906[_0x68d5('0x67')]();_0x21bbbc[_0x68d5('0x24')](_0x68d5('0x68'));_0x21bbbc=applyJoinClauses(_0x21bbbc,!![]);_0x24b906[_0x68d5('0x58')](_0x68d5('0x59'));var _0x15cac8=utils[_0x68d5('0x26')](_0x506347);if(!_[_0x68d5('0x69')](_0x15cac8)){_0x21bbbc[_0x68d5('0xd')](_0x68d5('0x6a'),_0x15cac8);}var _0x130c8d={'type':db[_0x68d5('0x6b')][_0x68d5('0x62')][_0x68d5('0x63')],'raw':!![]};return db[_0x68d5('0x65')][_0x68d5('0x6c')](_0x21bbbc[_0x68d5('0x6d')](),_0x130c8d)['then'](function(_0x34d85a){return _0x34d85a[0x0][_0x68d5('0x68')];});}module[_0x68d5('0x6e')]={'buildContactsQuery':buildContactsQuery,'checkListsRestrictions':checkListsRestrictions,'countFilteredContacts':countFilteredContacts,'getContactsSubquery':getContactsSubquery,'getFilteredContacts':getFilteredContacts,'parseAdvancedSearchFilter':parseAdvancedSearchFilter,'parseQueryParameters':parseQueryParameters,'skipContactsQuery':skipContactsQuery};
\ No newline at end of file
index 84c9a2c..faa359e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0x6690=['../../config/environment','../../config/logger','app','secrets','session','aes-256-ctr','aes192','encrypt','algorithm','join','error','is\x20not\x20a\x20supported\x20algorithm.\x20Your\x20system\x20supports\x20the\x20following\x20algorithms:','test','getCiphers','filter','createReadStream','createWriteStream','createCipher','data','binary','write','final','end','close','unlink','decryptFile','createDecipher','update','secret','base64','decryptString','utf8','crypto','bluebird'];(function(_0x4aa838,_0x4aa14f){var _0x3abff0=function(_0x402d55){while(--_0x402d55){_0x4aa838['push'](_0x4aa838['shift']());}};_0x3abff0(++_0x4aa14f);}(_0x6690,0x64));var _0x0669=function(_0x37bd26,_0x5ad346){_0x37bd26=_0x37bd26-0x0;var _0xe83dc4=_0x6690[_0x37bd26];return _0xe83dc4;};'use strict';var crypto=require(_0x0669('0x0'));var fs=require('fs');var BPromise=require(_0x0669('0x1'));var _=require('lodash');var config=require(_0x0669('0x2'));var logger=require(_0x0669('0x3'))(_0x0669('0x4'));const AES_SUPPORTED_RX=/^aes(-)?\d{3}(-(cbc|cfb|ctr)(1|8)?){0,1}$/;const stringOptions={'secret':config[_0x0669('0x5')][_0x0669('0x6')],'algorithm':_0x0669('0x7')};const fileOptions={'algorithm':_0x0669('0x8')};if(config[_0x0669('0x9')]&&config['encrypt']['algorithm']){var isSupported=isAlgorithmSupported(config[_0x0669('0x9')][_0x0669('0xa')]);if(isSupported){fileOptions[_0x0669('0xa')]=config[_0x0669('0x9')]['algorithm'];}else{var supportedAlgorithms=getSupportedCiphers()[_0x0669('0xb')](',\x20');logger[_0x0669('0xc')](config['encrypt']['algorithm'],_0x0669('0xd'),supportedAlgorithms);}}function isASupportedCipher(_0x422bed){return AES_SUPPORTED_RX[_0x0669('0xe')](_0x422bed);}function getSupportedCiphers(){return crypto[_0x0669('0xf')]()[_0x0669('0x10')](isASupportedCipher);}function isAlgorithmSupported(_0x68a996){return getSupportedCiphers()['indexOf'](_0x68a996)>-0x1;}function combineOptions(_0xfdfe8d){var _0x2402d8={};for(var _0x455737 in fileOptions){if(fileOptions['hasOwnProperty'](_0x455737)){_0x2402d8[_0x455737]=fileOptions[_0x455737];}}if(_0xfdfe8d){for(var _0x6fb1c8 in _0xfdfe8d){if(_0xfdfe8d['hasOwnProperty'](_0x6fb1c8)){_0x2402d8[_0x6fb1c8]=_0xfdfe8d[_0x6fb1c8];}}}return _0x2402d8;}exports['encryptFile']=function(_0x501fbe,_0x58ad29,_0x593870,_0x1421c3){return new BPromise(function(_0x4485b4,_0x595a71){_0x1421c3=combineOptions(_0x1421c3);var _0x8ced50=new Buffer(_0x593870);var _0x1ad839=fs[_0x0669('0x11')](_0x501fbe);var _0x192dbd=fs[_0x0669('0x12')](_0x58ad29);var _0x34ccec=crypto[_0x0669('0x13')](_0x1421c3[_0x0669('0xa')],_0x8ced50);_0x1ad839['on'](_0x0669('0x14'),function(_0x5b075c){var _0x158e53=new Buffer(_0x34ccec['update'](_0x5b075c),_0x0669('0x15'));_0x192dbd[_0x0669('0x16')](_0x158e53);});_0x1ad839['on']('end',function(){try{var _0x4d7d7b=new Buffer(_0x34ccec[_0x0669('0x17')]('binary'),_0x0669('0x15'));_0x192dbd[_0x0669('0x16')](_0x4d7d7b);_0x192dbd[_0x0669('0x18')]();_0x192dbd['on'](_0x0669('0x19'),function(){return _0x4485b4(_0x58ad29);});}catch(_0x3183eb){fs[_0x0669('0x1a')](_0x58ad29);return _0x595a71(_0x3183eb);}});});};exports[_0x0669('0x1b')]=function(_0x4350f4,_0x51c0b4,_0xca01da,_0x16c480){return new BPromise(function(_0x38782f,_0xf0456d){_0x16c480=combineOptions(_0x16c480);var _0x27ca87=new Buffer(_0xca01da);var _0x27af4d=fs[_0x0669('0x11')](_0x4350f4);var _0x342148=fs[_0x0669('0x12')](_0x51c0b4);var _0x4725b1=crypto[_0x0669('0x1c')](_0x16c480[_0x0669('0xa')],_0x27ca87);_0x27af4d['on'](_0x0669('0x14'),function(_0x54351c){var _0x2a9d4d=new Buffer(_0x4725b1[_0x0669('0x1d')](_0x54351c),_0x0669('0x15'));_0x342148[_0x0669('0x16')](_0x2a9d4d);});_0x27af4d['on'](_0x0669('0x18'),function(){try{var _0x5d4dc5=new Buffer(_0x4725b1[_0x0669('0x17')](_0x0669('0x15')),'binary');_0x342148[_0x0669('0x16')](_0x5d4dc5);_0x342148[_0x0669('0x18')]();_0x342148['on'](_0x0669('0x19'),function(){return _0x38782f(_0x51c0b4);});}catch(_0x305fc6){fs['unlink'](_0x51c0b4);return _0xf0456d(_0x305fc6);}});});};exports['encryptString']=function(_0xcd60f,_0x488cce,_0x5640f9){var _0x54ef17=_0x5640f9||stringOptions[_0x0669('0xa')];var _0xed97c=_0x488cce||stringOptions[_0x0669('0x1e')];var _0x5420d3=crypto[_0x0669('0x13')](_0x54ef17,_0xed97c);var _0x3661a6=_0x5420d3['update'](_0xcd60f,'utf8',_0x0669('0x1f'));_0x3661a6+=_0x5420d3['final'](_0x0669('0x1f'));return _0x3661a6;};exports[_0x0669('0x20')]=function(_0x59384a,_0x4b0e31,_0x5d8ad0){var _0x6d8e2a=_0x5d8ad0||stringOptions['algorithm'];var _0x5df204=_0x4b0e31||stringOptions[_0x0669('0x1e')];var _0x52a629=crypto[_0x0669('0x1c')](_0x6d8e2a,_0x5df204);var _0x26bf34=_0x52a629[_0x0669('0x1d')](_0x59384a,_0x0669('0x1f'),_0x0669('0x21'));_0x26bf34+=_0x52a629[_0x0669('0x17')]('utf8');return _0x26bf34;};
\ No newline at end of file
index c20be25..0b90a20 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0x1095=['splitSizeCsv','then','sequelize','query','SELECT\x20count(*)\x20as\x20num\x20FROM\x20(%s)\x20t','QueryTypes','num','Empty','split','length','range','forEach','push','%s\x20limit\x20%d\x20OFFSET\x20%d','SELECT','dirname','basename','.csv','join','mkdirSync','each','csv','%s.%s','writeFileSync','zip','zip\x20finished','Extraction\x20report\x20with\x20id\x20%d\x20in\x20%s\x20format\x20completed','Completed','Error\x20during\x20extraction\x20report\x20with\x20id\x20%d\x20in\x20%s\x20format','inspect','Failed','path','lodash','to-csv','../../mysqldb','dbH','../../config/logger','analytics','argv','AnalyticExtractedReport','update','info','format','CSV','Setting','find'];(function(_0x2d3ab3,_0x47d90b){var _0x321f9e=function(_0x50a53d){while(--_0x50a53d){_0x2d3ab3['push'](_0x2d3ab3['shift']());}};_0x321f9e(++_0x47d90b);}(_0x1095,0x1bd));var _0x5109=function(_0x110c3d,_0x12ee06){_0x110c3d=_0x110c3d-0x0;var _0x226d67=_0x1095[_0x110c3d];return _0x226d67;};'use strict';var util=require('util');var path=require(_0x5109('0x0'));var _=require(_0x5109('0x1'));var csv=require(_0x5109('0x2'));var fs=require('fs');var BPromise=require('bluebird');var zipdir=require('zip-dir');var rimraf=require('rimraf');var db=require(_0x5109('0x3'))['db'];var dbH=require(_0x5109('0x3'))[_0x5109('0x4')];var logger=require(_0x5109('0x5'))(_0x5109('0x6'));var EXTRACTED_REPORT_ID=Number(process[_0x5109('0x7')][0x2]);var QUERY=process[_0x5109('0x7')][0x3];var PATH=process['argv'][0x4];var EXIT_CODE=0x0;function analyticExtractedReport(_0x6c57f,_0x32647d){var _0x253a38={'status':_0x6c57f};var _0x2f1f70={'where':{'id':EXTRACTED_REPORT_ID}};if(_0x32647d){_0x253a38['savename']=_0x32647d;}return db[_0x5109('0x8')][_0x5109('0x9')](_0x253a38,_0x2f1f70);}function main(){var _0x263ae1=0x1388;var _0x50c1d5;logger[_0x5109('0xa')](util[_0x5109('0xb')]('Start\x20extraction\x20report\x20with\x20id\x20%d\x20in\x20%s\x20format',EXTRACTED_REPORT_ID,_0x5109('0xc')));return db[_0x5109('0xd')][_0x5109('0xe')]({'where':{'id':0x1},'raw':!![],'attributes':['id','split',_0x5109('0xf')]})[_0x5109('0x10')](function(_0x1cd604){if(_0x1cd604){_0x50c1d5=_0x1cd604;_0x263ae1=_0x50c1d5[_0x5109('0xf')]||0x1388;}})[_0x5109('0x10')](function(){return dbH[_0x5109('0x11')][_0x5109('0x12')](util[_0x5109('0xb')](_0x5109('0x13'),QUERY),{'type':dbH[_0x5109('0x11')][_0x5109('0x14')]['SELECT']});})[_0x5109('0x10')](function(_0x507152){if(!_0x507152[0x0][_0x5109('0x15')]){return analyticExtractedReport(_0x5109('0x16'));}var _0x3f8f22=[];var _0x2fbaac=0x0;if(_0x50c1d5[_0x5109('0x17')]){if(_0x507152&&_0x507152[_0x5109('0x18')]){var _0x2e87bf=_[_0x5109('0x19')](_0x507152[0x0][_0x5109('0x15')]/_0x263ae1);var _0x8ddee3=Number['isInteger'](_0x507152[0x0][_0x5109('0x15')]/_0x263ae1)?_0x507152[0x0]['num']%_0x263ae1:0x0;_0x2e87bf[_0x5109('0x1a')](function(_0x32156c){if(_0x32156c>0x0){_0x2fbaac+=_0x263ae1;}_0x3f8f22[_0x5109('0x1b')](dbH['sequelize'][_0x5109('0x12')](util[_0x5109('0xb')](_0x5109('0x1c'),QUERY,_0x263ae1,_0x2fbaac),{'type':dbH[_0x5109('0x11')][_0x5109('0x14')]['SELECT']}));});if(_0x8ddee3>0x0){_0x2fbaac+=_0x263ae1;_0x3f8f22[_0x5109('0x1b')](dbH['sequelize'][_0x5109('0x12')](util[_0x5109('0xb')](_0x5109('0x1c'),QUERY,_0x8ddee3,_0x2fbaac),{'type':dbH['sequelize']['QueryTypes']['SELECT']}));}}}else{_0x3f8f22[_0x5109('0x1b')](dbH[_0x5109('0x11')][_0x5109('0x12')](QUERY,{'type':dbH[_0x5109('0x11')][_0x5109('0x14')][_0x5109('0x1d')]}));}var _0x19bbba=path[_0x5109('0x1e')](PATH);var _0x56112a=path[_0x5109('0x1f')](PATH,_0x5109('0x20'));var _0x5912e8=_0x50c1d5[_0x5109('0x17')]&&_0x3f8f22['length']>0x1;var _0x29fa45=[];if(!fs['existsSync'](path[_0x5109('0x21')](_0x19bbba,_0x56112a))&&_0x5912e8){fs[_0x5109('0x22')](path[_0x5109('0x21')](_0x19bbba,_0x56112a));}return BPromise[_0x5109('0x23')](_0x3f8f22,function(_0x13c963){_0x29fa45[_0x5109('0x1b')](_0x13c963);})[_0x5109('0x10')](function(){for(var _0x478ae4=0x0;_0x478ae4<_0x29fa45[_0x5109('0x18')];_0x478ae4+=0x1){var _0x4cf0e8;var _0x52d230=_0x29fa45[_0x478ae4];if(_0x5912e8){_0x4cf0e8=path['join'](_0x19bbba,_0x56112a,util[_0x5109('0xb')]('%s%d.%s',_0x56112a,_0x478ae4,_0x5109('0x24')));}else{_0x4cf0e8=path[_0x5109('0x21')](_0x19bbba,util[_0x5109('0xb')](_0x5109('0x25'),_0x56112a,_0x5109('0x24')));}fs[_0x5109('0x26')](_0x4cf0e8,csv(_0x52d230));}})[_0x5109('0x10')](function(){if(_0x5912e8){return new Promise(function(_0x26ccf5){zipdir(path[_0x5109('0x21')](_0x19bbba,_0x56112a),{'saveTo':path[_0x5109('0x21')](_0x19bbba,util[_0x5109('0xb')](_0x5109('0x25'),_0x56112a,_0x5109('0x27')))},function(_0x95cfd8,_0x4f8228){rimraf(path[_0x5109('0x21')](_0x19bbba,_0x56112a),function(){});_0x26ccf5(_0x5109('0x28'));});});}})[_0x5109('0x10')](function(){logger[_0x5109('0xa')](util[_0x5109('0xb')](_0x5109('0x29'),EXTRACTED_REPORT_ID,'CSV'));return analyticExtractedReport(_0x5109('0x2a'),_0x5912e8?util[_0x5109('0xb')]('%s.%s',_0x56112a,_0x5912e8?_0x5109('0x27'):'csv'):null);});})['catch'](function(_0x4631bc){logger[_0x5109('0xa')](util[_0x5109('0xb')](_0x5109('0x2b'),EXTRACTED_REPORT_ID,_0x5109('0xc')),util[_0x5109('0x2c')](_0x4631bc,{'showHidden':![],'depth':null}));EXIT_CODE=0x1;return analyticExtractedReport(_0x5109('0x2d'));})['finally'](function(){process['exit'](EXIT_CODE);});}main();
\ No newline at end of file
index 9ddb781..bd736f9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0x7abc=['Start\x20extraction\x20report\x20with\x20id\x20%d\x20in\x20%s\x20format','findOne','SELECT\x20count(*)\x20as\x20num\x20FROM\x20(%s)\x20t','catch','info','Error\x20during\x20extraction\x20report\x20with\x20id\x20%d\x20in\x20%s\x20format','inspect','Failed','/fonts/arial-regular.ttf','/fonts/arial-bold.ttf','/fonts/arial-italic.ttf','channel','interactionId','YYYY-MM-DD','toString','center','\x09\x09XCALLY\x20Motion\x20-\x20%s\x09\x09\x09\x09%d/%d\x09\x09\x09\x09%s','finish','error','end','createPdfFromHTML','createPdfKitDocument','path','lodash','util','moment','html-to-pdfmake','pdfmake/src/printer','zip-dir','rimraf','jsdom','JSDOM','bluebird','../../mysqldb','dbH','../../config/logger','analytics','argv','MMMM\x20Do\x20YYYY,\x20h:mm:ss\x20a','savename','AnalyticExtractedReport','update','map','pick','value','fill','auto','body','push','chunk','forEach','format','Name:\x20%s\x0aReport:\x20%s\x0aFrom:\x20%s\x20To:\x20%s','name','startDate','endDate','length','header','pageBreak','margin','footer','Arial','black','num','Empty','Setting','split','splitSizePdf','then','isInteger','sequelize','%s\x20limit\x20%d\x20OFFSET\x20%d','QueryTypes','SELECT','query','.pdf','join','mkdirSync','each','flatten','%s%d.%s','pdf','%s.%s','all','Extraction\x20report\x20with\x20id\x20%d\x20in\x20%s\x20format\x20completed','PDF','Completed'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x7abc,0xc5));var _0xc7ab=function(_0x56d3d4,_0x8e89b7){_0x56d3d4=_0x56d3d4-0x0;var _0xaa33a9=_0x7abc[_0x56d3d4];return _0xaa33a9;};'use strict';var _=require(_0xc7ab('0x0'));var fs=require('fs');var util=require(_0xc7ab('0x1'));var path=require('path');var moment=require(_0xc7ab('0x2'));var htmlToPdfmake=require(_0xc7ab('0x3'));var PdfPrinter=require(_0xc7ab('0x4'));var zipdir=require(_0xc7ab('0x5'));var rimraf=require(_0xc7ab('0x6'));var JSDOM=require(_0xc7ab('0x7'))[_0xc7ab('0x8')];var window=new JSDOM('')['window'];var BPromise=require(_0xc7ab('0x9'));var db=require('../../mysqldb')['db'];var dbH=require(_0xc7ab('0xa'))[_0xc7ab('0xb')];var logger=require(_0xc7ab('0xc'))(_0xc7ab('0xd'));var EXTRACTED_REPORT_ID=Number(process[_0xc7ab('0xe')][0x2]);var QUERY=process[_0xc7ab('0xe')][0x3];var PATH=process[_0xc7ab('0xe')][0x4];var NAME=process[_0xc7ab('0xe')][0x5];var FORMAT=_0xc7ab('0xf');var EXTRACTED_REPORT;var EXIT_CODE=0x0;function analyticExtractedReport(_0x4857de,_0xaa02ff){var _0x20584e={'status':_0x4857de};var _0x1c4c80={'where':{'id':EXTRACTED_REPORT_ID}};if(_0xaa02ff){_0x20584e[_0xc7ab('0x10')]=_0xaa02ff;}return db[_0xc7ab('0x11')][_0xc7ab('0x12')](_0x20584e,_0x1c4c80);}function getHeaders(_0x112275){return _[_0xc7ab('0x13')](_0x112275,function(_0x2ac7cb){return{'text':_0x2ac7cb,'style':'tableHeader'};});}function getRows(_0x5f2e16,_0x368420){return _[_0xc7ab('0x13')](_0x368420,function(_0x5ced72){return _(_0x5ced72)[_0xc7ab('0x14')](_0x5f2e16)[_0xc7ab('0x13')](function(_0x27a865){return _0x27a865?_['toString'](_0x27a865):'';})[_0xc7ab('0x15')]();});}function createTable(_0x99adf3,_0x1245c0){var _0x50c9f7={'widths':_[_0xc7ab('0x16')](Array(_0x99adf3['length']),0x91),'heights':function(_0x1673ba){return _0x1673ba===0x0?_0xc7ab('0x17'):0x32;},'dontBreakRows':!![],'headerRows':0x1,'body':[]};var _0x3cc143=getHeaders(_0x99adf3);_0x50c9f7[_0xc7ab('0x18')][_0xc7ab('0x19')](_0x3cc143);var _0x2eb3fa=getRows(_0x99adf3,_0x1245c0);_0x50c9f7['body']=_0x50c9f7[_0xc7ab('0x18')]['concat'](_0x2eb3fa);return _0x50c9f7;}function createTables(_0xb6d94a){var _0x1aaf5f=[];var _0x28f2b7=_[_0xc7ab('0x1a')](Object['keys'](_0xb6d94a[0x0]),0x5);_0x28f2b7[_0xc7ab('0x1b')](function(_0x48f1b5){_0x1aaf5f[_0xc7ab('0x19')](createTable(_0x48f1b5,_0xb6d94a));});return _0x1aaf5f;}function getPDFDocDefinition(_0x365bda){var _0x138ac6=util[_0xc7ab('0x1c')](_0xc7ab('0x1d'),NAME,EXTRACTED_REPORT[_0xc7ab('0x1e')],moment(EXTRACTED_REPORT[_0xc7ab('0x1f')])[_0xc7ab('0x1c')](FORMAT),moment(EXTRACTED_REPORT[_0xc7ab('0x20')])['format'](FORMAT));var _0x57e370=[];for(var _0x5df218=0x0;_0x5df218<_0x365bda[_0xc7ab('0x21')];_0x5df218++){var _0x477d9d=[];if(_0x5df218===0x0){_0x477d9d[_0xc7ab('0x19')]({'text':_0x138ac6,'style':_0xc7ab('0x22')});}var _0x456cf8={'table':_0x365bda[_0x5df218]};if(_0x5df218>0x0){_0x456cf8[_0xc7ab('0x23')]='before';_0x456cf8[_0xc7ab('0x24')]=[0x0,0x46,0x0,0x0];}_0x477d9d[_0xc7ab('0x19')](_0x456cf8);_0x57e370['push'](_0x477d9d);}return{'pageSize':'A4','pageOrientation':'landscape','content':_0x57e370,'footer':function(_0x332462,_0x5135c0){return{'text':_0x332462['toString']()+'\x20/\x20'+_0x5135c0,'style':_0xc7ab('0x25')};},'defaultStyle':{'font':_0xc7ab('0x26')},'styles':{'header':{'fontSize':0x12,'bold':!![],'margin':[0x0,0x0,0x0,0xa]},'tableHeader':{'bold':!![],'fontSize':0xd,'color':_0xc7ab('0x27')},'footer':{'alignment':'right','margin':[0x0,0x0,0x28,0x0]}}};}function extractReport(_0x17235e){var _0x55fb46=0x1388;var _0x4449c1;if(!_0x17235e[0x0][_0xc7ab('0x28')]){return analyticExtractedReport(_0xc7ab('0x29'));}return db[_0xc7ab('0x2a')]['find']({'where':{'id':0x1},'raw':!![],'attributes':['id',_0xc7ab('0x2b'),_0xc7ab('0x2c')]})[_0xc7ab('0x2d')](function(_0x43c4cb){if(_0x43c4cb){_0x4449c1=_0x43c4cb;_0x55fb46=_0x4449c1['splitSizePdf']||0x3e8;}})[_0xc7ab('0x2d')](function(){var _0x584c9d=[];var _0x459bb0=0x0;if(_0x4449c1['split']){if(_0x17235e&&_0x17235e[_0xc7ab('0x21')]){var _0x242fe6=_['range'](_0x17235e[0x0][_0xc7ab('0x28')]/_0x55fb46);var _0x4d4921=Number[_0xc7ab('0x2e')](_0x17235e[0x0][_0xc7ab('0x28')]/_0x55fb46)?_0x17235e[0x0][_0xc7ab('0x28')]%_0x55fb46:0x0;_0x242fe6[_0xc7ab('0x1b')](function(_0x1abc6b){if(_0x1abc6b>0x0){_0x459bb0+=_0x55fb46;}_0x584c9d[_0xc7ab('0x19')](dbH[_0xc7ab('0x2f')]['query'](util[_0xc7ab('0x1c')](_0xc7ab('0x30'),QUERY,_0x55fb46,_0x459bb0),{'type':dbH['sequelize'][_0xc7ab('0x31')][_0xc7ab('0x32')]}));});if(_0x4d4921>0x0){_0x459bb0+=_0x55fb46;_0x584c9d['push'](dbH['sequelize'][_0xc7ab('0x33')](util['format']('%s\x20limit\x20%d\x20OFFSET\x20%d',QUERY,_0x4d4921,_0x459bb0),{'type':dbH['sequelize'][_0xc7ab('0x31')][_0xc7ab('0x32')]}));}}}else{_0x584c9d[_0xc7ab('0x19')](dbH['sequelize'][_0xc7ab('0x33')](QUERY,{'type':dbH['sequelize']['QueryTypes'][_0xc7ab('0x32')]}));}var _0x403d17=path['dirname'](PATH);var _0x3687ef=path['basename'](PATH,_0xc7ab('0x34'));var _0x38fb5e=_0x4449c1[_0xc7ab('0x2b')]&&_0x584c9d['length']>0x1;var _0x56a236=[];if(!fs['existsSync'](path[_0xc7ab('0x35')](_0x403d17,_0x3687ef))&&_0x38fb5e){fs[_0xc7ab('0x36')](path[_0xc7ab('0x35')](_0x403d17,_0x3687ef));}return BPromise[_0xc7ab('0x37')](_0x584c9d,function(_0x4cbc4b){_0x56a236[_0xc7ab('0x19')](_0x4cbc4b);})[_0xc7ab('0x2d')](function(){var _0xaad3f6=[];for(var _0x7e5c57=0x0;_0x7e5c57<_0x56a236[_0xc7ab('0x21')];_0x7e5c57+=0x1){var _0x1dc170=_0x56a236[_0x7e5c57];var _0x1461d9=createTables(_[_0xc7ab('0x38')](_0x1dc170));var _0xd42028;var _0x227ba8=getPDFDocDefinition(_0x1461d9);var _0x494e52=getPDFPrinter();var _0x4e3c3b=_0x494e52['createPdfKitDocument'](_0x227ba8);if(_0x38fb5e){_0xd42028=path['join'](_0x403d17,_0x3687ef,util[_0xc7ab('0x1c')](_0xc7ab('0x39'),_0x3687ef,_0x7e5c57,_0xc7ab('0x3a')));}else{_0xd42028=path['join'](_0x403d17,util[_0xc7ab('0x1c')](_0xc7ab('0x3b'),_0x3687ef,_0xc7ab('0x3a')));}_0xaad3f6[_0xc7ab('0x19')](writePDFDocument(_0x4e3c3b,_0xd42028));}return Promise[_0xc7ab('0x3c')](_0xaad3f6);})['then'](function(){if(_0x38fb5e){return new Promise(function(_0x5e27d9){zipdir(path['join'](_0x403d17,_0x3687ef),{'saveTo':path[_0xc7ab('0x35')](_0x403d17,util[_0xc7ab('0x1c')]('%s.%s',_0x3687ef,'zip'))},function(){rimraf(path['join'](_0x403d17,_0x3687ef),function(){});_0x5e27d9('zip\x20finished');});});}})[_0xc7ab('0x2d')](function(){if(!_0x38fb5e)return;rimraf(path[_0xc7ab('0x35')](_0x403d17,_0x3687ef),function(){});})['then'](function(){logger['info'](util[_0xc7ab('0x1c')](_0xc7ab('0x3d'),EXTRACTED_REPORT_ID,_0xc7ab('0x3e')));return analyticExtractedReport(_0xc7ab('0x3f'),_0x38fb5e?util['format'](_0xc7ab('0x3b'),_0x3687ef,_0x38fb5e?'zip':_0xc7ab('0x3a')):null);});});}function main(){if(!EXTRACTED_REPORT_ID)return;logger['info'](util[_0xc7ab('0x1c')](_0xc7ab('0x40'),EXTRACTED_REPORT_ID,'PDF'));return db[_0xc7ab('0x11')][_0xc7ab('0x41')]({'where':{'id':EXTRACTED_REPORT_ID}})['then'](function(_0x2e54f6){EXTRACTED_REPORT=_0x2e54f6;return dbH['sequelize']['query'](util[_0xc7ab('0x1c')](_0xc7ab('0x42'),QUERY),{'type':dbH[_0xc7ab('0x2f')][_0xc7ab('0x31')][_0xc7ab('0x32')]});})[_0xc7ab('0x2d')](extractReport)[_0xc7ab('0x43')](function(_0x5d0f31){logger[_0xc7ab('0x44')](util[_0xc7ab('0x1c')](_0xc7ab('0x45'),EXTRACTED_REPORT_ID,_0xc7ab('0x3e')),util[_0xc7ab('0x46')](_0x5d0f31,{'showHidden':![],'depth':null}));EXIT_CODE=0x1;return analyticExtractedReport(_0xc7ab('0x47'));})['finally'](function(){process['exit'](EXIT_CODE);});}main();function getPDFPrinter(){var _0x7ca899=new PdfPrinter({'Arial':{'normal':__dirname+_0xc7ab('0x48'),'bold':__dirname+_0xc7ab('0x49'),'italics':__dirname+_0xc7ab('0x4a'),'bolditalics':__dirname+'/fonts/arial-bold-italic.ttf'}});return _0x7ca899;}function getPDFDocDefinitionFromHTML(_0x2a179d,_0x5073c6){var _0x57b15b=util[_0xc7ab('0x1c')]('%s\x20#%d',_0x5073c6[_0xc7ab('0x4b')],_0x5073c6[_0xc7ab('0x4c')]);var _0xb34fe0=moment()[_0xc7ab('0x1c')](_0xc7ab('0x4d'))[_0xc7ab('0x4e')]();var _0xaa54da=htmlToPdfmake(_0x2a179d,{'window':window,'tableAutoSize':!![]});return{'content':[_0xaa54da],'defaultStyle':{'font':'Arial'},'styles':{'header':{'fontSize':0x12,'bold':!![],'alignment':_0xc7ab('0x4f'),'margin':[0xa,0xa,0xa,0xa]},'footer':{'fontSize':0x9,'alignment':'center','margin':[0xa,0x14,0xa,0xa]},'textblock':{'fontSize':0xb},'textfield':{'bold':!![]},'messageContainer':{'fontSize':0xa},'messageInfo':{'bold':!![]},'interactionData':{'alignment':_0xc7ab('0x4f')}},'header':function(){return[{'text':'Interaction\x20Transcript','style':_0xc7ab('0x22')}];},'footer':function(_0x39a329,_0x19cfd8){return[{'text':util[_0xc7ab('0x1c')](_0xc7ab('0x50'),_0x57b15b,_0x39a329,_0x19cfd8,_0xb34fe0),'style':_0xc7ab('0x25')}];}};}function writePDFDocument(_0x1d693e,_0x3f774b){return new Promise(function(_0xb44cd,_0x2d020f){var _0x257b5f=_0x1d693e['pipe'](fs['createWriteStream'](_0x3f774b));_0x257b5f['on'](_0xc7ab('0x51'),function(){_0xb44cd(_0xc7ab('0x51'));});_0x257b5f['on'](_0xc7ab('0x52'),function(_0x38042b){_0x2d020f(_0x38042b);});_0x1d693e[_0xc7ab('0x53')]();});}exports[_0xc7ab('0x54')]=function(_0x11b6fc,_0x224ce3){var _0x3f5936=getPDFPrinter();var _0x232352=getPDFDocDefinitionFromHTML(_0x11b6fc,_0x224ce3);var _0x3966c5=_0x3f5936[_0xc7ab('0x55')](_0x232352);return writePDFDocument(_0x3966c5,_0x224ce3[_0xc7ab('0x56')])[_0xc7ab('0x43')](function(_0x27a0cc){throw _0x27a0cc;});};
\ No newline at end of file
index d174873..eefb089 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0x7200=['Empty','length','range','isInteger','forEach','push','%s\x20limit\x20%d\x20OFFSET\x20%d','basename','.xlsx','existsSync','join','%s%d.%s','xlsx','%s.%s','writeFileSync','binary','zip\x20finished','info','XLSX','zip','catch','Error\x20during\x20extraction\x20report\x20with\x20id\x20%d\x20in\x20%s\x20format','finally','exit','util','lodash','bluebird','zip-dir','rimraf','../../mysqldb','dbH','../../config/logger','analytics','argv','savename','AnalyticExtractedReport','update','Start\x20extraction\x20report\x20with\x20id\x20%d\x20in\x20%s\x20format','Setting','find','split','splitSizeXlsx','then','sequelize','query','format','SELECT\x20count(*)\x20as\x20num\x20FROM\x20(%s)\x20t','QueryTypes','SELECT','num'];(function(_0x4239bd,_0x1f310b){var _0x21f061=function(_0xbe0bca){while(--_0xbe0bca){_0x4239bd['push'](_0x4239bd['shift']());}};_0x21f061(++_0x1f310b);}(_0x7200,0x1a8));var _0x0720=function(_0x19f000,_0x39ac54){_0x19f000=_0x19f000-0x0;var _0x81cee0=_0x7200[_0x19f000];return _0x81cee0;};'use strict';var util=require(_0x0720('0x0'));var path=require('path');var _=require(_0x0720('0x1'));var fs=require('fs');var json2xls=require('json2xls');var BPromise=require(_0x0720('0x2'));var zipdir=require(_0x0720('0x3'));var rimraf=require(_0x0720('0x4'));var db=require(_0x0720('0x5'))['db'];var dbH=require('../../mysqldb')[_0x0720('0x6')];var logger=require(_0x0720('0x7'))(_0x0720('0x8'));var EXTRACTED_REPORT_ID=Number(process[_0x0720('0x9')][0x2]);var QUERY=process[_0x0720('0x9')][0x3];var PATH=process[_0x0720('0x9')][0x4];var EXIT_CODE=0x0;function analyticExtractedReport(_0x58b0e8,_0x361507){var _0x3327c3={'status':_0x58b0e8};var _0x18ccdf={'where':{'id':EXTRACTED_REPORT_ID}};if(_0x361507){_0x3327c3[_0x0720('0xa')]=_0x361507;}return db[_0x0720('0xb')][_0x0720('0xc')](_0x3327c3,_0x18ccdf);}function main(){var _0x1935fd=0x1388;var _0x465c07;logger['info'](util['format'](_0x0720('0xd'),EXTRACTED_REPORT_ID,'XLSX'));return db[_0x0720('0xe')][_0x0720('0xf')]({'where':{'id':0x1},'raw':!![],'attributes':['id',_0x0720('0x10'),_0x0720('0x11')]})[_0x0720('0x12')](function(_0x3497d2){if(_0x3497d2){_0x465c07=_0x3497d2;_0x1935fd=_0x465c07[_0x0720('0x11')]||0x1388;}})[_0x0720('0x12')](function(){return dbH[_0x0720('0x13')][_0x0720('0x14')](util[_0x0720('0x15')](_0x0720('0x16'),QUERY),{'type':dbH[_0x0720('0x13')][_0x0720('0x17')][_0x0720('0x18')]});})[_0x0720('0x12')](function(_0x306066){if(!_0x306066[0x0][_0x0720('0x19')]){return analyticExtractedReport(_0x0720('0x1a'));}var _0x38ded1=[];var _0x4a869d=0x0;if(_0x465c07[_0x0720('0x10')]){if(_0x306066&&_0x306066[_0x0720('0x1b')]){var _0x358040=_[_0x0720('0x1c')](_0x306066[0x0][_0x0720('0x19')]/_0x1935fd);var _0x1a1d5c=Number[_0x0720('0x1d')](_0x306066[0x0][_0x0720('0x19')]/_0x1935fd)?_0x306066[0x0][_0x0720('0x19')]%_0x1935fd:0x0;_0x358040[_0x0720('0x1e')](function(_0x2ae43e){if(_0x2ae43e>0x0){_0x4a869d+=_0x1935fd;}_0x38ded1[_0x0720('0x1f')](dbH[_0x0720('0x13')][_0x0720('0x14')](util['format'](_0x0720('0x20'),QUERY,_0x1935fd,_0x4a869d),{'type':dbH[_0x0720('0x13')]['QueryTypes'][_0x0720('0x18')]}));});if(_0x1a1d5c>0x0){_0x4a869d+=_0x1935fd;_0x38ded1['push'](dbH[_0x0720('0x13')]['query'](util[_0x0720('0x15')](_0x0720('0x20'),QUERY,_0x1a1d5c,_0x4a869d),{'type':dbH[_0x0720('0x13')][_0x0720('0x17')][_0x0720('0x18')]}));}}}else{_0x38ded1['push'](dbH[_0x0720('0x13')][_0x0720('0x14')](QUERY,{'type':dbH[_0x0720('0x13')][_0x0720('0x17')]['SELECT']}));}var _0x322f60=path['dirname'](PATH);var _0xa81c9d=path[_0x0720('0x21')](PATH,_0x0720('0x22'));var _0x1981ec=_0x465c07[_0x0720('0x10')]&&_0x38ded1[_0x0720('0x1b')]>0x1;var _0x29ff6e=[];if(!fs[_0x0720('0x23')](path['join'](_0x322f60,_0xa81c9d))&&_0x1981ec){fs['mkdirSync'](path[_0x0720('0x24')](_0x322f60,_0xa81c9d));}return BPromise['each'](_0x38ded1,function(_0x2a41a4){_0x29ff6e[_0x0720('0x1f')](_0x2a41a4);})[_0x0720('0x12')](function(){for(var _0x38ab22=0x0;_0x38ab22<_0x29ff6e[_0x0720('0x1b')];_0x38ab22+=0x1){var _0x2ec3cd;var _0x46655c=_0x29ff6e[_0x38ab22];if(_0x1981ec){_0x2ec3cd=path[_0x0720('0x24')](_0x322f60,_0xa81c9d,util[_0x0720('0x15')](_0x0720('0x25'),_0xa81c9d,_0x38ab22,_0x0720('0x26')));}else{_0x2ec3cd=path[_0x0720('0x24')](_0x322f60,util[_0x0720('0x15')](_0x0720('0x27'),_0xa81c9d,_0x0720('0x26')));}fs[_0x0720('0x28')](_0x2ec3cd,json2xls(_0x46655c),_0x0720('0x29'));}})['then'](function(){if(_0x1981ec){return new Promise(function(_0x3ae3ca){zipdir(path[_0x0720('0x24')](_0x322f60,_0xa81c9d),{'saveTo':path[_0x0720('0x24')](_0x322f60,util[_0x0720('0x15')](_0x0720('0x27'),_0xa81c9d,'zip'))},function(_0x9c8e3f,_0x21f902){rimraf(path['join'](_0x322f60,_0xa81c9d),function(){});_0x3ae3ca(_0x0720('0x2a'));});});}})['then'](function(){logger[_0x0720('0x2b')](util[_0x0720('0x15')]('Extraction\x20report\x20with\x20id\x20%d\x20in\x20%s\x20format\x20completed',EXTRACTED_REPORT_ID,_0x0720('0x2c')));return analyticExtractedReport('Completed',_0x1981ec?util[_0x0720('0x15')](_0x0720('0x27'),_0xa81c9d,_0x1981ec?_0x0720('0x2d'):_0x0720('0x26')):null);});})[_0x0720('0x2e')](function(_0x11b250){logger[_0x0720('0x2b')](util[_0x0720('0x15')](_0x0720('0x2f'),EXTRACTED_REPORT_ID,_0x0720('0x2c')),util['inspect'](_0x11b250,{'showHidden':![],'depth':null}));EXIT_CODE=0x1;return analyticExtractedReport('Failed');})[_0x0720('0x30')](function(){process[_0x0720('0x31')](EXIT_CODE);});}main();
\ No newline at end of file
index 44a296e..6cb9dc7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0xbc0f=['extensions','find','push','type','Set','format','CDR(type)=%s','context','VoiceExtensionId','outbound','extension','CDR(destination)=','${EXTEN:','cutdigits','${EXTEN}','CDR(routeid)=','ExecIf','$[${LEN(${CDR(prefix)})}\x20>\x200]?Goto(','):Goto(','CDR(prefix)=${EXTEN:0:','CDR(prefix)=noprefix','recordingFormat','none','_XCALLY_MIXMONITOR_UNIQUEID=${UNIQUEID}','wav','XCALLY-MOTION-ANSWER=0','XCALLY-MOTION-PROGRESS=0','MONITOR_OPTIONS=ab','toLowerCase','createdAt','interval','*,*,*,*','intervals','hasOwnProperty','tag','CDR(tag)=','callerID','length','$[${LEN(${PREFIX-CALLERIDALL})}\x20>\x200]?Set(CALLERID(all)=${PREFIX-CALLERIDALL}):NoOp(No\x20number\x20available)','answer','indexOf','app','appType','$[${XCALLY-MOTION-ANSWER}=0]?Answer','XCALLY-MOTION-ANSWER=1','$[${XCALLY-MOTION-PROGRESS}=0]?Progress','XCALLY-MOTION-PROGRESS=1','splice',',${EXTEN},','last','concat','Hangup','transaction','destroy','error','rewrite','lodash','util','Interval','findAll','then','models','IntervalId','uniq','map','exten','CAST(priority\x20AS\x20UNSIGNED)','queue','playback','priority'];(function(_0x160a68,_0x837a75){var _0x43334f=function(_0xdbdefc){while(--_0xdbdefc){_0x160a68['push'](_0x160a68['shift']());}};_0x43334f(++_0x837a75);}(_0xbc0f,0x1dc));var _0xfbc0=function(_0xc0a3d3,_0x2c8d00){_0xc0a3d3=_0xc0a3d3-0x0;var _0x3386e8=_0xbc0f[_0xc0a3d3];return _0x3386e8;};'use strict';var _=require(_0xfbc0('0x0'));var util=require(_0xfbc0('0x1'));function rewrite(_0x3381ee,_0x3fc804){var _0xea0f56=this;return _0x3381ee['models'][_0xfbc0('0x2')][_0xfbc0('0x3')]({'raw':!![]})[_0xfbc0('0x4')](function(_0x25cbb6){_0xea0f56['intervals']=_0x25cbb6;return _0x3381ee[_0xfbc0('0x5')]['VoiceExtension'][_0xfbc0('0x3')]({'where':{'IntervalId':_0x3fc804[_0xfbc0('0x6')]},'raw':!![]});})[_0xfbc0('0x4')](function(_0xdaf751){return _0x3381ee[_0xfbc0('0x5')]['VoiceExtension'][_0xfbc0('0x3')]({'where':{'exten':{'$in':_[_0xfbc0('0x7')](_[_0xfbc0('0x8')](_0xdaf751,_0xfbc0('0x9')))}},'order':[{'raw':_0xfbc0('0xa')}],'raw':!![]});})[_0xfbc0('0x4')](function(_0x30b496){var _0x1da49d=_['filter'](_0x30b496,{'priority':'1'});var _0x22d4b7=_['filter'](_0x30b496,{'isApp':0x1});var _0x487708=_['groupBy'](_0x22d4b7,_0xfbc0('0x9'));var _0x351dfd=[_0xfbc0('0xb'),_0xfbc0('0xc')];var _0x5d7481=[];var _0x41be41=[];for(var _0x389edd in _0x487708){if(_0x487708['hasOwnProperty'](_0x389edd)){_0xea0f56[_0xfbc0('0xd')]=0x2;_0xea0f56[_0xfbc0('0xe')]=[];_0xea0f56['extension']=_[_0xfbc0('0xf')](_0x1da49d,{'exten':_0x487708[_0x389edd][0x0][_0xfbc0('0x9')]});_0xea0f56[_0xfbc0('0xe')][_0xfbc0('0x10')]({'type':_0x487708[_0x389edd][0x0][_0xfbc0('0x11')],'app':_0xfbc0('0x12'),'appdata':util[_0xfbc0('0x13')](_0xfbc0('0x14'),_0x487708[_0x389edd][0x0][_0xfbc0('0x11')]),'context':_0x487708[_0x389edd][0x0][_0xfbc0('0x15')],'exten':_0x487708[_0x389edd][0x0][_0xfbc0('0x9')],'priority':_0xea0f56[_0xfbc0('0xd')]++,'VoiceExtensionId':_0x487708[_0x389edd][0x0][_0xfbc0('0x16')]});if(_0x487708[_0x389edd][0x0]['type']==='inbound'){_0xea0f56[_0xfbc0('0xe')][_0xfbc0('0x10')]({'type':_0x487708[_0x389edd][0x0][_0xfbc0('0x11')],'app':_0xfbc0('0x12'),'appdata':'CDR(routeid)='+_0x487708[_0x389edd][0x0][_0xfbc0('0x16')],'context':_0x487708[_0x389edd][0x0][_0xfbc0('0x15')],'exten':_0x487708[_0x389edd][0x0]['exten'],'priority':_0xea0f56[_0xfbc0('0xd')]++,'VoiceExtensionId':_0x487708[_0x389edd][0x0][_0xfbc0('0x16')]});}else if(_0x487708[_0x389edd][0x0][_0xfbc0('0x11')]===_0xfbc0('0x17')){if(_0xea0f56[_0xfbc0('0x18')]){_0xea0f56['extensions'][_0xfbc0('0x10')]({'type':_0x487708[_0x389edd][0x0][_0xfbc0('0x11')],'app':'Set','appdata':_0xfbc0('0x19')+(_0xea0f56[_0xfbc0('0x18')]['cutdigits']?_0xfbc0('0x1a')+_0xea0f56[_0xfbc0('0x18')][_0xfbc0('0x1b')]+'}':_0xfbc0('0x1c')),'context':_0x487708[_0x389edd][0x0][_0xfbc0('0x15')],'exten':_0x487708[_0x389edd][0x0]['exten'],'priority':_0xea0f56[_0xfbc0('0xd')]++,'VoiceExtensionId':_0x487708[_0x389edd][0x0][_0xfbc0('0x16')]});}_0xea0f56['extensions'][_0xfbc0('0x10')]({'type':_0x487708[_0x389edd][0x0][_0xfbc0('0x11')],'app':'Set','appdata':_0xfbc0('0x1d')+_0x487708[_0x389edd][0x0][_0xfbc0('0x16')],'context':_0x487708[_0x389edd][0x0][_0xfbc0('0x15')],'exten':_0x487708[_0x389edd][0x0][_0xfbc0('0x9')],'priority':_0xea0f56[_0xfbc0('0xd')]++,'VoiceExtensionId':_0x487708[_0x389edd][0x0][_0xfbc0('0x16')]});var _0x4141be=_0xea0f56[_0xfbc0('0xd')]++;_0xea0f56[_0xfbc0('0xe')][_0xfbc0('0x10')]({'type':_0x487708[_0x389edd][0x0][_0xfbc0('0x11')],'app':_0xfbc0('0x1e'),'appdata':_0xfbc0('0x1f')+(_0x4141be+0x2)+_0xfbc0('0x20')+(_0x4141be+0x1)+')','context':_0x487708[_0x389edd][0x0][_0xfbc0('0x15')],'exten':_0x487708[_0x389edd][0x0]['exten'],'priority':_0x4141be,'VoiceExtensionId':_0x487708[_0x389edd][0x0][_0xfbc0('0x16')]});if(_0xea0f56['extension']){_0xea0f56[_0xfbc0('0xe')][_0xfbc0('0x10')]({'type':_0x487708[_0x389edd][0x0][_0xfbc0('0x11')],'app':'Set','appdata':_0xea0f56['extension'][_0xfbc0('0x1b')]?_0xfbc0('0x21')+_0xea0f56[_0xfbc0('0x18')]['cutdigits']+'}':_0xfbc0('0x22'),'context':_0x487708[_0x389edd][0x0][_0xfbc0('0x15')],'exten':_0x487708[_0x389edd][0x0][_0xfbc0('0x9')],'priority':_0xea0f56['priority']++,'VoiceExtensionId':_0x487708[_0x389edd][0x0][_0xfbc0('0x16')]});}_0xea0f56[_0xfbc0('0xe')][_0xfbc0('0x10')]({'type':_0x487708[_0x389edd][0x0][_0xfbc0('0x11')],'app':_0xfbc0('0x12'),'appdata':'outboundrouteid='+_0x487708[_0x389edd][0x0][_0xfbc0('0x16')],'context':_0x487708[_0x389edd][0x0][_0xfbc0('0x15')],'exten':_0x487708[_0x389edd][0x0][_0xfbc0('0x9')],'priority':_0xea0f56[_0xfbc0('0xd')]++,'VoiceExtensionId':_0x487708[_0x389edd][0x0][_0xfbc0('0x16')]});if(_0xea0f56[_0xfbc0('0x18')]&&_0xea0f56[_0xfbc0('0x18')]['hasOwnProperty'](_0xfbc0('0x23'))&&_0xea0f56[_0xfbc0('0x18')]['recordingFormat']!==_0xfbc0('0x24')){_0xea0f56['extensions'][_0xfbc0('0x10')]({'type':_0x487708[_0x389edd][0x0][_0xfbc0('0x11')],'app':_0xfbc0('0x12'),'appdata':_0xfbc0('0x25'),'context':_0x487708[_0x389edd][0x0][_0xfbc0('0x15')],'exten':_0x487708[_0x389edd][0x0][_0xfbc0('0x9')],'priority':_0xea0f56[_0xfbc0('0xd')]++,'VoiceExtensionId':_0x487708[_0x389edd][0x0][_0xfbc0('0x16')]});_0xea0f56[_0xfbc0('0xe')][_0xfbc0('0x10')]({'type':_0x487708[_0x389edd][0x0][_0xfbc0('0x11')],'app':_0xfbc0('0x12'),'appdata':'_XCALLY_MIXMONITOR_FORMAT='+_0xea0f56[_0xfbc0('0x18')][_0xfbc0('0x23')]||_0xfbc0('0x26'),'context':_0x487708[_0x389edd][0x0]['context'],'exten':_0x487708[_0x389edd][0x0][_0xfbc0('0x9')],'priority':_0xea0f56[_0xfbc0('0xd')]++,'VoiceExtensionId':_0x487708[_0x389edd][0x0]['VoiceExtensionId']});}}_0xea0f56[_0xfbc0('0xe')][_0xfbc0('0x10')]({'type':_0x487708[_0x389edd][0x0][_0xfbc0('0x11')],'app':'Set','appdata':_0xfbc0('0x27'),'context':_0x487708[_0x389edd][0x0][_0xfbc0('0x15')],'exten':_0x487708[_0x389edd][0x0]['exten'],'priority':_0xea0f56[_0xfbc0('0xd')]++,'VoiceExtensionId':_0x487708[_0x389edd][0x0]['VoiceExtensionId']});_0xea0f56['extensions'][_0xfbc0('0x10')]({'type':_0x487708[_0x389edd][0x0]['type'],'app':'Set','appdata':_0xfbc0('0x28'),'context':_0x487708[_0x389edd][0x0]['context'],'exten':_0x487708[_0x389edd][0x0][_0xfbc0('0x9')],'priority':_0xea0f56['priority']++,'VoiceExtensionId':_0x487708[_0x389edd][0x0][_0xfbc0('0x16')]});_0xea0f56[_0xfbc0('0xe')][_0xfbc0('0x10')]({'type':_0x487708[_0x389edd][0x0]['type'],'app':_0xfbc0('0x12'),'appdata':_0xfbc0('0x29'),'context':_0x487708[_0x389edd][0x0][_0xfbc0('0x15')],'exten':_0x487708[_0x389edd][0x0][_0xfbc0('0x9')],'priority':_0xea0f56['priority']++,'VoiceExtensionId':_0x487708[_0x389edd][0x0][_0xfbc0('0x16')]});for(var _0xcc82b3=0x0,_0x8ad4b0=0x0;_0xcc82b3<_0x487708[_0x389edd]['length'];_0xcc82b3+=0x1,_0x8ad4b0=0x0){var _0x56fc72=_0x487708[_0x389edd][_0xcc82b3];if(_0x56fc72[_0xfbc0('0x11')]){_0x56fc72['type']=_0x56fc72[_0xfbc0('0x11')][_0xfbc0('0x2a')]();}var _0x4387c6=[];var _0x32316c=[];delete _0x56fc72['id'];delete _0x56fc72[_0xfbc0('0x2b')];delete _0x56fc72['updatedAt'];var _0x55cff7=_0x56fc72[_0xfbc0('0x2c')]!==_0xfbc0('0x2d')?[_0x56fc72[_0xfbc0('0x2c')]]:_0x56fc72[_0xfbc0('0x6')]?_['map'](_['filter'](_0xea0f56[_0xfbc0('0x2e')],{'IntervalId':_0x56fc72['IntervalId']}),'interval'):[];if(_0x56fc72[_0xfbc0('0x2f')](_0xfbc0('0x30'))){if(_0x56fc72[_0xfbc0('0x30')]&&_0x56fc72[_0xfbc0('0x30')]!=='--'){_0x4387c6[_0xfbc0('0x10')]({'type':_0x56fc72[_0xfbc0('0x11')],'app':_0xfbc0('0x12'),'appdata':_0xfbc0('0x31')+_0x56fc72[_0xfbc0('0x30')],'context':_0x56fc72['context'],'exten':_0x56fc72['exten'],'priority':_0x55cff7['length']+_0xea0f56[_0xfbc0('0xd')]+_0x8ad4b0++,'VoiceExtensionId':_0x56fc72[_0xfbc0('0x16')]});}}if(_0x56fc72[_0xfbc0('0x11')]==='outbound'&&_0x56fc72[_0xfbc0('0x2f')]('callerID')){if(_0x56fc72[_0xfbc0('0x32')]){_0x4387c6[_0xfbc0('0x10')]({'type':_0x56fc72['type'],'app':_0xfbc0('0x1e'),'appdata':'$[${LEN(${PREFIX-CALLERIDALL})}\x20>\x200]?Set(CALLERID(all)=${PREFIX-CALLERIDALL}):Set(CALLERID(all)='+_0x56fc72[_0xfbc0('0x32')]+')','context':_0x56fc72[_0xfbc0('0x15')],'exten':_0x56fc72[_0xfbc0('0x9')],'priority':_0x55cff7[_0xfbc0('0x33')]+_0xea0f56[_0xfbc0('0xd')]+_0x8ad4b0++,'VoiceExtensionId':_0x56fc72[_0xfbc0('0x16')]});}else{_0x4387c6[_0xfbc0('0x10')]({'type':_0x56fc72[_0xfbc0('0x11')],'app':_0xfbc0('0x1e'),'appdata':_0xfbc0('0x34'),'context':_0x56fc72[_0xfbc0('0x15')],'exten':_0x56fc72[_0xfbc0('0x9')],'priority':_0x55cff7[_0xfbc0('0x33')]+_0xea0f56[_0xfbc0('0xd')]+_0x8ad4b0++,'VoiceExtensionId':_0x56fc72['VoiceExtensionId']});}}if(_0x56fc72[_0xfbc0('0x2f')](_0xfbc0('0x35'))){if(_0x351dfd[_0xfbc0('0x36')](_0x56fc72[_0xfbc0('0x37')][_0xfbc0('0x2a')]())>=0x0&&_0x56fc72[_0xfbc0('0x38')]!=='custom'){if(_0x56fc72[_0xfbc0('0x35')]){_0x4387c6['push']({'type':_0x56fc72['type'],'app':_0xfbc0('0x1e'),'appdata':_0xfbc0('0x39'),'context':_0x56fc72[_0xfbc0('0x15')],'exten':_0x56fc72[_0xfbc0('0x9')],'priority':_0x55cff7[_0xfbc0('0x33')]+_0xea0f56['priority']+_0x8ad4b0++,'VoiceExtensionId':_0x56fc72[_0xfbc0('0x16')]});_0x4387c6[_0xfbc0('0x10')]({'type':_0x56fc72[_0xfbc0('0x11')],'app':_0xfbc0('0x12'),'appdata':_0xfbc0('0x3a'),'context':_0x56fc72[_0xfbc0('0x15')],'exten':_0x56fc72[_0xfbc0('0x9')],'priority':_0x55cff7['length']+_0xea0f56['priority']+_0x8ad4b0++,'VoiceExtensionId':_0x56fc72[_0xfbc0('0x16')]});}else{_0x4387c6['push']({'type':_0x56fc72[_0xfbc0('0x11')],'app':_0xfbc0('0x1e'),'appdata':_0xfbc0('0x3b'),'context':_0x56fc72[_0xfbc0('0x15')],'exten':_0x56fc72[_0xfbc0('0x9')],'priority':_0x55cff7[_0xfbc0('0x33')]+_0xea0f56[_0xfbc0('0xd')]+_0x8ad4b0++,'VoiceExtensionId':_0x56fc72[_0xfbc0('0x16')]});_0x4387c6['push']({'type':_0x56fc72[_0xfbc0('0x11')],'app':_0xfbc0('0x12'),'appdata':_0xfbc0('0x3c'),'context':_0x56fc72[_0xfbc0('0x15')],'exten':_0x56fc72[_0xfbc0('0x9')],'priority':_0x55cff7[_0xfbc0('0x33')]+_0xea0f56[_0xfbc0('0xd')]+_0x8ad4b0++,'VoiceExtensionId':_0x56fc72[_0xfbc0('0x16')]});}}}for(var _0x4599f3=0x0;_0x4599f3<_0x55cff7['length'];_0x4599f3+=0x1){var _0x3cf35c=_0xea0f56['priority']+_0x55cff7[_0xfbc0('0x33')];var _0x594c20=_0x4599f3===_0x55cff7[_0xfbc0('0x33')]-0x1?_0xea0f56[_0xfbc0('0xd')]+_0x4387c6['length']+_0x32316c[_0xfbc0('0x33')]+0x2:_0xea0f56['priority']+_0x4599f3+0x1;_0x4387c6[_0xfbc0('0x3d')](_0x4599f3,0x0,{'type':_0x56fc72['type'],'app':'GotoIfTime','appdata':_0x55cff7[_0x4599f3]+'?'+_0x56fc72[_0xfbc0('0x15')]+_0xfbc0('0x3e')+_0x3cf35c+':'+_0x56fc72[_0xfbc0('0x15')]+',${EXTEN},'+_0x594c20,'exten':_0x56fc72[_0xfbc0('0x9')],'context':_0x56fc72[_0xfbc0('0x15')],'priority':_0xea0f56[_0xfbc0('0xd')]+_0x4599f3,'VoiceExtensionId':_0x487708[_0x389edd][0x0][_0xfbc0('0x16')]});}_0x56fc72[_0xfbc0('0xd')]=_0x4387c6[_0xfbc0('0x33')]?_[_0xfbc0('0x3f')](_0x4387c6)[_0xfbc0('0xd')]+0x1:_0xea0f56[_0xfbc0('0xd')];_0xea0f56[_0xfbc0('0xd')]=(_0x32316c[_0xfbc0('0x33')]?_[_0xfbc0('0x3f')](_0x32316c)[_0xfbc0('0xd')]:_0x56fc72[_0xfbc0('0xd')])+0x1;_0xea0f56['extensions']=_[_0xfbc0('0x40')](_0xea0f56[_0xfbc0('0xe')],_0x4387c6,[_0x56fc72],_0x32316c);}_0xea0f56['extensions'][_0xfbc0('0x10')]({'type':_0x487708[_0x389edd][0x0][_0xfbc0('0x11')],'app':_0xfbc0('0x41'),'exten':_0x487708[_0x389edd][0x0][_0xfbc0('0x9')],'context':_0x487708[_0x389edd][0x0][_0xfbc0('0x15')],'priority':_0xea0f56[_0xfbc0('0xd')],'VoiceExtensionId':_0x487708[_0x389edd][0x0][_0xfbc0('0x16')]});_0x5d7481[_0xfbc0('0x10')](_0x487708[_0x389edd][0x0][_0xfbc0('0x16')]);_0x41be41=_['concat'](_0x41be41,_0xea0f56['extensions']);}}return _0x3381ee[_0xfbc0('0x42')](function(_0x2834dd){return _0x3381ee[_0xfbc0('0x5')]['VoiceExtension'][_0xfbc0('0x43')]({'where':{'VoiceExtensionId':{'$in':_0x5d7481}},'transaction':_0x2834dd})['then'](function(_0x2f4cd4){return _0x3381ee[_0xfbc0('0x5')]['VoiceExtension']['bulkCreate'](_['sortBy'](_0x41be41,_0xfbc0('0xd')),{'transaction':_0x2834dd});});});})['catch'](function(_0x43fb43){console[_0xfbc0('0x44')](_0x43fb43);});}exports[_0xfbc0('0x45')]=rewrite;
\ No newline at end of file
index c5b567a..f6784f3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0xc588=['BlackLists','all','Campaign','always','CampaignId','cmContact,\x20%s,\x20%s','generalCheckHopper','Error\x20processing\x20rows\x20block:','finally','contact:csv_','resolve','unlinkSync','SIGINT','info','CSV\x20import\x20process\x20stopped!','parse','duplicate','pause','CSV\x20parsed\x20correctly!','CSV\x20parse\x20error','Error\x20executing\x20contact\x20csv\x20import:','bluebird','util','lodash','squel','papaparse','ioredis','../../../mysqldb','../../../config/environment','../../../config/logger','api','redis','../../../api/cmContact/cmContact.socket','register','argv','null','Missing\x20filepath\x20parameter!','undefined','zipObject','split','Missing\x20ListId\x20parameter!','Missing\x20socket_timestamp\x20parameter!','error','test','isNil','The\x20row\x20is\x20empty\x20or\x20the\x20number\x20of\x20parameters\x20does\x20not\x20match\x20the\x20columns!','errors','length','message','join','hasOwnProperty','data','firstName\x20not\x20specified!','phone','phone\x20not\x20specified!','birthDate','isValid','email','email\x20format\x20is\x20not\x20valid!','ListId','find','Duplicate\x20Contact','CmContact','create','keys','then','pick','catch','Error\x20while\x20creating\x20contact:\x20','stringify','checkHopper','inspect','insert','into','fromQuery','scheduledAt','ContactId','createdAt','updatedAt','field','NOW()','toString','from','cm_contacts','where','deletedAt\x20IS\x20NULL','ListId\x20=\x20?','phone\x20IS\x20NOT\x20NULL','select','cm_hopper','\x20=\x20?','id\x20IN\x20?','str','phone\x20NOT\x20IN\x20(?)','cm_hopper_black','VoiceQueue','findAll','dialCheckDuplicateType','Lists','get','push','sequelize','query','VoiceQueueId','onlyIfOpen','outbound','CmList'];(function(_0x30a869,_0xbc8362){var _0x364f75=function(_0x43a613){while(--_0x43a613){_0x30a869['push'](_0x30a869['shift']());}};_0x364f75(++_0xbc8362);}(_0xc588,0x1c1));var _0x8c58=function(_0x55336a,_0x240d59){_0x55336a=_0x55336a-0x0;var _0x28ceb3=_0xc588[_0x55336a];return _0x28ceb3;};'use strict';var BPromise=require(_0x8c58('0x0'));var util=require(_0x8c58('0x1'));var _=require(_0x8c58('0x2'));var fs=require('fs');var squel=require(_0x8c58('0x3'));var Papa=require(_0x8c58('0x4'));var Redis=require(_0x8c58('0x5'));var db=require(_0x8c58('0x6'))['db'];var config=require(_0x8c58('0x7'));var logger=require(_0x8c58('0x8'))(_0x8c58('0x9'));config[_0x8c58('0xa')]=_['defaults'](config[_0x8c58('0xa')],{'host':'localhost','port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config['redis']));require(_0x8c58('0xb'))[_0x8c58('0xc')](socket);try{if(!process[_0x8c58('0xd')][0x2]||process[_0x8c58('0xd')][0x2]==='undefined'||process[_0x8c58('0xd')][0x2]===_0x8c58('0xe')){throw new Error(_0x8c58('0xf'));}var FILEPATH=process['argv'][0x2];if(!process[_0x8c58('0xd')][0x3]||process[_0x8c58('0xd')][0x3]===_0x8c58('0x10')||process[_0x8c58('0xd')][0x3]==='null'||!process[_0x8c58('0xd')][0x4]||process['argv'][0x4]===_0x8c58('0x10')||process[_0x8c58('0xd')][0x4]===_0x8c58('0xe')){throw new Error('Missing\x20binding\x20parameters!');}var FIELDS=_[_0x8c58('0x11')](process[_0x8c58('0xd')][0x3][_0x8c58('0x12')](','),process[_0x8c58('0xd')][0x4][_0x8c58('0x12')](','));if(!process['argv'][0x5]||process[_0x8c58('0xd')][0x5]==='undefined'||process[_0x8c58('0xd')][0x5]===_0x8c58('0xe')){throw new Error(_0x8c58('0x13'));}var LISTID=process[_0x8c58('0xd')][0x5];var COMPANYID=process[_0x8c58('0xd')][0x6]&&process['argv'][0x6]!=='undefined'&&process[_0x8c58('0xd')][0x6]!==_0x8c58('0xe')?process[_0x8c58('0xd')][0x6]:null;var DUPLICATES=process[_0x8c58('0xd')][0x7]&&process['argv'][0x7]!==_0x8c58('0x10')&&process[_0x8c58('0xd')][0x7]!==_0x8c58('0xe')?process[_0x8c58('0xd')][0x7]:null;if(!process[_0x8c58('0xd')][0x8]||process['argv'][0x8]===_0x8c58('0x10')||process[_0x8c58('0xd')][0x8]===_0x8c58('0xe')){throw new Error(_0x8c58('0x14'));}var SOCKET_TIMESTAMP=process[_0x8c58('0xd')][0x8];}catch(_0x212944){logger[_0x8c58('0x15')](_0x212944);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(_0x54dfb1,_0x39bddb,_0x4f61ae,_0x51f6f3){var _0x28c900={'message':_0x39bddb};_0x28c900[_0x54dfb1]=!![];if(_0x4f61ae){_0x28c900['contact']=_0x4f61ae;}if(_0x51f6f3){_0x28c900['index']=_0x51f6f3;}return _0x28c900;}function isEmail(_0xb26e9d){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))*$/[_0x8c58('0x16')](_0xb26e9d);}function checkRow(_0xa311c3,_0x342503,_0x50bb62){return new BPromise(function(_0x49603e,_0x18ffe7){if(_[_0x8c58('0x17')](_0xa311c3)){return _0x18ffe7(handleCheckRowError(_0x8c58('0x15'),_0x8c58('0x18'),null,_0x50bb62));}if(_0xa311c3[_0x8c58('0x19')]&&_0xa311c3[_0x8c58('0x19')][_0x8c58('0x1a')]){var _0x4241cf=_['map'](_0xa311c3[_0x8c58('0x19')],_0x8c58('0x1b'))[_0x8c58('0x1c')](';');return _0x18ffe7(handleCheckRowError(_0x8c58('0x15'),_0x4241cf,null,_0x50bb62));}var _0x3c47c9={};for(var _0x4d7226 in FIELDS){if(FIELDS[_0x8c58('0x1d')](_0x4d7226)&&FIELDS[_0x4d7226]){_0x3c47c9[_0x4d7226]=_0xa311c3[_0x8c58('0x1e')][0x0][FIELDS[_0x4d7226]]||_0xa311c3[_0x8c58('0x1e')][0x0]['\ufeff'+FIELDS[_0x4d7226]];}}if(!_0x3c47c9['firstName']){return _0x18ffe7(handleCheckRowError(_0x8c58('0x15'),_0x8c58('0x1f'),null,_0x50bb62));}if(!_0x3c47c9[_0x8c58('0x20')]){return _0x18ffe7(handleCheckRowError(_0x8c58('0x15'),_0x8c58('0x21'),null,_0x50bb62));}if(_0x3c47c9[_0x8c58('0x22')]){var _0x13feb2=moment(_0x3c47c9[_0x8c58('0x22')],'YYYY-MM-DD');if(!_0x13feb2[_0x8c58('0x23')]()){return _0x18ffe7(handleCheckRowError(_0x8c58('0x15'),'birthDate\x20format\x20is\x20invalid,\x20YYYY-MM-DD\x20format\x20is\x20supported!',null,_0x50bb62));}}if(_0x3c47c9[_0x8c58('0x24')]){if(!isEmail(_0x3c47c9[_0x8c58('0x24')])){return _0x18ffe7(handleCheckRowError(_0x8c58('0x15'),_0x8c58('0x25'),null,_0x50bb62));}}_0x3c47c9[_0x8c58('0x26')]=LISTID;_0x3c47c9['CompanyId']=COMPANYID||undefined;if(DUPLICATES&&DUPLICATES[_0x8c58('0x1a')]&&_0x342503){var _0x546533={};for(var _0x1cd5cf=0x0,_0x345ad5=DUPLICATES[_0x8c58('0x1a')];_0x1cd5cf<_0x345ad5;_0x1cd5cf+=0x1){_0x546533[DUPLICATES[_0x1cd5cf]]=_0x3c47c9[DUPLICATES[_0x1cd5cf]];}var _0xb2bb2b=_[_0x8c58('0x27')](_0x342503,_0x546533);if(_0xb2bb2b){return _0x18ffe7(handleCheckRowError('duplicate',_0x8c58('0x28'),_0xb2bb2b,_0x50bb62));}}return db[_0x8c58('0x29')][_0x8c58('0x2a')](_0x3c47c9,{'raw':!![],'hooks':![],'fields':_[_0x8c58('0x2b')](_0x3c47c9)})[_0x8c58('0x2c')](function(_0x38cd23){if(DUPLICATES&&DUPLICATES[_0x8c58('0x1a')]&&_0x342503){_0x342503['push'](_[_0x8c58('0x2d')](_0x3c47c9,DUPLICATES));}hopperContacts+=(hopperContacts?',':'')+_0x38cd23['id'];return _0x49603e();})[_0x8c58('0x2e')](function(_0x60577d){return _0x18ffe7(handleCheckRowError('error',_0x8c58('0x2f')+(_0x60577d[_0x8c58('0x1b')]||JSON[_0x8c58('0x30')](_0x60577d)),null,_0x50bb62));});});}function checkHopper(){function _0xf56f82(){return function(_0x228958){logger[_0x8c58('0x15')]('cmContact',_0x8c58('0x31'),util[_0x8c58('0x32')](_0x228958,{'showHidden':![],'depth':null}));};}var _0x31bc8b=function(_0x4a4de0,_0x4ee34d){var _0x3ce50d=squel[_0x8c58('0x33')]()[_0x8c58('0x34')]('cm_hopper')[_0x8c58('0x35')]([_0x8c58('0x20'),_0x8c58('0x36'),_0x8c58('0x37'),_0x8c58('0x26'),_0x4ee34d,_0x8c58('0x38'),_0x8c58('0x39')],squel['select']()[_0x8c58('0x3a')]('phone',_0x8c58('0x20'))[_0x8c58('0x3a')](_0x8c58('0x3b'),_0x8c58('0x36'))[_0x8c58('0x3a')]('id',_0x8c58('0x37'))['field'](LISTID['toString'](),_0x8c58('0x26'))[_0x8c58('0x3a')](_0x4a4de0['id'][_0x8c58('0x3c')](),_0x4ee34d)[_0x8c58('0x3a')](_0x8c58('0x3b'),_0x8c58('0x38'))[_0x8c58('0x3a')](_0x8c58('0x3b'),_0x8c58('0x39'))[_0x8c58('0x3d')](_0x8c58('0x3e'))[_0x8c58('0x3f')](_0x8c58('0x40'))[_0x8c58('0x3f')](_0x8c58('0x41'),LISTID[_0x8c58('0x3c')]())[_0x8c58('0x3f')](_0x8c58('0x42'))[_0x8c58('0x3f')]('phone\x20NOT\x20IN\x20(?)',squel[_0x8c58('0x43')]()[_0x8c58('0x3a')]('phone')[_0x8c58('0x3d')](_0x8c58('0x44'))['where'](_0x4ee34d+_0x8c58('0x45'),_0x4a4de0['id'][_0x8c58('0x3c')]())))[_0x8c58('0x3c')]();return _0x3ce50d;};var _0x56c106=function(_0x5b687d,_0x41bcc3){var _0x4fc506=squel[_0x8c58('0x33')]()[_0x8c58('0x34')]('cm_hopper')[_0x8c58('0x35')]([_0x8c58('0x20'),_0x8c58('0x36'),_0x8c58('0x37'),_0x8c58('0x26'),_0x41bcc3,_0x8c58('0x38'),_0x8c58('0x39')],squel[_0x8c58('0x43')]()[_0x8c58('0x3a')]('phone',_0x8c58('0x20'))[_0x8c58('0x3a')](_0x8c58('0x3b'),'scheduledAt')[_0x8c58('0x3a')]('id',_0x8c58('0x37'))['field'](LISTID[_0x8c58('0x3c')](),_0x8c58('0x26'))[_0x8c58('0x3a')](_0x5b687d['id']['toString'](),_0x41bcc3)[_0x8c58('0x3a')]('NOW()',_0x8c58('0x38'))[_0x8c58('0x3a')](_0x8c58('0x3b'),_0x8c58('0x39'))['from'](_0x8c58('0x3e'))[_0x8c58('0x3f')]('deletedAt\x20IS\x20NULL')[_0x8c58('0x3f')](_0x8c58('0x41'),LISTID[_0x8c58('0x3c')]())[_0x8c58('0x3f')](_0x8c58('0x46'),squel[_0x8c58('0x47')](hopperContacts))[_0x8c58('0x3f')](_0x8c58('0x42'))[_0x8c58('0x3f')](_0x8c58('0x48'),squel[_0x8c58('0x43')]()[_0x8c58('0x3a')]('calleridnum')['from']('cm_hopper_final')[_0x8c58('0x3f')](_0x41bcc3+_0x8c58('0x45'),_0x5b687d['id'][_0x8c58('0x3c')]()))[_0x8c58('0x3f')]('phone\x20NOT\x20IN\x20(?)',squel[_0x8c58('0x43')]()['field']('phone')[_0x8c58('0x3d')](_0x8c58('0x44'))[_0x8c58('0x3f')](_0x41bcc3+_0x8c58('0x45'),_0x5b687d['id'][_0x8c58('0x3c')]())))[_0x8c58('0x3c')]();return _0x4fc506;};function _0x5e4033(_0x4881f2,_0xe3664d){var _0x4800f4=squel[_0x8c58('0x33')]()[_0x8c58('0x34')](_0x8c58('0x44'))[_0x8c58('0x35')]([_0x8c58('0x20'),_0x8c58('0x36'),_0x8c58('0x37'),'ListId',_0xe3664d,'createdAt',_0x8c58('0x39')],squel[_0x8c58('0x43')]()['field']('phone',_0x8c58('0x20'))[_0x8c58('0x3a')](_0x8c58('0x3b'),_0x8c58('0x36'))[_0x8c58('0x3a')]('id',_0x8c58('0x37'))[_0x8c58('0x3a')](LISTID[_0x8c58('0x3c')](),'ListId')[_0x8c58('0x3a')](_0x4881f2['id']['toString'](),_0xe3664d)['field'](_0x8c58('0x3b'),_0x8c58('0x38'))[_0x8c58('0x3a')](_0x8c58('0x3b'),'updatedAt')[_0x8c58('0x3d')]('cm_contacts')[_0x8c58('0x3f')](_0x8c58('0x40'))[_0x8c58('0x3f')](_0x8c58('0x41'),LISTID[_0x8c58('0x3c')]())['where'](_0x8c58('0x46'),squel[_0x8c58('0x47')](hopperContacts))['where'](_0x8c58('0x42')))['toString']();return _0x4800f4;}function _0x26c9db(_0x8edd4d,_0x1f3141){var _0x14919f=squel[_0x8c58('0x33')]()[_0x8c58('0x34')](_0x8c58('0x49'))['fromQuery']([_0x8c58('0x20'),_0x8c58('0x37'),_0x8c58('0x26'),_0x1f3141,'createdAt',_0x8c58('0x39')],squel['select']()[_0x8c58('0x3a')]('phone',_0x8c58('0x20'))[_0x8c58('0x3a')]('id',_0x8c58('0x37'))['field'](LISTID['toString'](),'ListId')[_0x8c58('0x3a')](_0x8edd4d['id'][_0x8c58('0x3c')](),_0x1f3141)[_0x8c58('0x3a')](_0x8c58('0x3b'),_0x8c58('0x38'))[_0x8c58('0x3a')](_0x8c58('0x3b'),_0x8c58('0x39'))[_0x8c58('0x3d')](_0x8c58('0x3e'))['where'](_0x8c58('0x40'))['where'](_0x8c58('0x41'),LISTID[_0x8c58('0x3c')]())[_0x8c58('0x3f')]('id\x20IN\x20?',squel[_0x8c58('0x47')](hopperContacts))[_0x8c58('0x3f')]('phone\x20IS\x20NOT\x20NULL'))[_0x8c58('0x3c')]();return _0x14919f;}return db[_0x8c58('0x4a')][_0x8c58('0x4b')]({'where':{'type':'outbound'},'attributes':['id',_0x8c58('0x4c')],'include':[{'model':db['CmList'],'as':_0x8c58('0x4d'),'where':{'id':LISTID}}]})[_0x8c58('0x2c')](function(_0x3b36a1){var _0xe256ac=[];if(_0x3b36a1){var _0x2d058a;for(var _0x2c5adf=0x0,_0x4956ad;_0x2c5adf<_0x3b36a1[_0x8c58('0x1a')];_0x2c5adf+=0x1){_0x4956ad=_0x3b36a1[_0x2c5adf][_0x8c58('0x4e')]({'plain':!![]});switch(_0x4956ad[_0x8c58('0x4c')]){case'always':_0xe256ac[_0x8c58('0x4f')](db[_0x8c58('0x50')][_0x8c58('0x51')](_0x56c106(_0x4956ad,_0x8c58('0x52')))[_0x8c58('0x2c')](function(){})[_0x8c58('0x2e')](_0xf56f82()));break;case _0x8c58('0x53'):_0xe256ac[_0x8c58('0x4f')](db[_0x8c58('0x50')][_0x8c58('0x51')](_0x31bc8b(_0x4956ad,'VoiceQueueId'))[_0x8c58('0x2c')](function(){})[_0x8c58('0x2e')](_0xf56f82()));break;default:_0xe256ac[_0x8c58('0x4f')](db['sequelize'][_0x8c58('0x51')](_0x5e4033(_0x4956ad,_0x8c58('0x52')))[_0x8c58('0x2c')](function(){})[_0x8c58('0x2e')](_0xf56f82()));}}}return _0xe256ac;})['all']()[_0x8c58('0x2c')](function(){return db[_0x8c58('0x4a')][_0x8c58('0x4b')]({'where':{'type':_0x8c58('0x54')},'attributes':['id'],'include':[{'model':db[_0x8c58('0x55')],'as':_0x8c58('0x56'),'where':{'id':LISTID}}]})[_0x8c58('0x2c')](function(_0x3a2efd){var _0x200482=[];if(_0x3a2efd){var _0x54f77b;for(var _0x1b3d89=0x0,_0x5f3ee6;_0x1b3d89<_0x3a2efd[_0x8c58('0x1a')];_0x1b3d89+=0x1){_0x5f3ee6=_0x3a2efd[_0x1b3d89]['get']({'plain':!![]});_0x200482['push'](db[_0x8c58('0x50')][_0x8c58('0x51')](_0x26c9db(_0x5f3ee6,_0x8c58('0x52')))['then'](function(){})['catch'](_0xf56f82()));}}return _0x200482;})[_0x8c58('0x57')]();})[_0x8c58('0x2c')](function(){return db[_0x8c58('0x58')][_0x8c58('0x4b')]({'attributes':['id',_0x8c58('0x4c')],'include':[{'model':db['CmList'],'as':'Lists','where':{'id':LISTID}}]})[_0x8c58('0x2c')](function(_0x187c45){var _0xf42b0c=[];if(_0x187c45){for(var _0x4e0b8e=0x0,_0x164a1b;_0x4e0b8e<_0x187c45['length'];_0x4e0b8e+=0x1){_0x164a1b=_0x187c45[_0x4e0b8e][_0x8c58('0x4e')]({'plain':!![]});switch(_0x164a1b[_0x8c58('0x4c')]){case _0x8c58('0x59'):_0xf42b0c[_0x8c58('0x4f')](db[_0x8c58('0x50')][_0x8c58('0x51')](_0x56c106(_0x164a1b,_0x8c58('0x5a')))[_0x8c58('0x2c')](function(){})[_0x8c58('0x2e')](_0xf56f82()));break;case'onlyIfOpen':_0xf42b0c[_0x8c58('0x4f')](db[_0x8c58('0x50')][_0x8c58('0x51')](_0x31bc8b(_0x164a1b,_0x8c58('0x5a')))[_0x8c58('0x2c')](function(){})['catch'](_0xf56f82()));break;default:_0xf42b0c[_0x8c58('0x4f')](db[_0x8c58('0x50')][_0x8c58('0x51')](_0x5e4033(_0x164a1b,'CampaignId'))[_0x8c58('0x2c')](function(){})[_0x8c58('0x2e')](_0xf56f82()));}}}return _0xf42b0c;})[_0x8c58('0x57')]();})[_0x8c58('0x2c')](function(){return db[_0x8c58('0x58')][_0x8c58('0x4b')]({'attributes':['id'],'include':[{'model':db[_0x8c58('0x55')],'as':'BlackLists','where':{'id':LISTID}}]})['then'](function(_0xab07b1){var _0x929df3=[];if(_0xab07b1){for(var _0x4de848=0x0,_0x53184c;_0x4de848<_0xab07b1['length'];_0x4de848+=0x1){_0x53184c=_0xab07b1[_0x4de848][_0x8c58('0x4e')]({'plain':!![]});_0x929df3[_0x8c58('0x4f')](db[_0x8c58('0x50')][_0x8c58('0x51')](_0x26c9db(_0x53184c,'CampaignId'))[_0x8c58('0x2c')](function(){})['catch'](_0xf56f82()));}}return _0x929df3;})[_0x8c58('0x57')]();})[_0x8c58('0x2e')](function(_0x446156){logger[_0x8c58('0x15')](_0x8c58('0x5b'),_0x8c58('0x5c'),_0x446156['message']);});}var processPromises=function(_0x4b07a4){return BPromise[_0x8c58('0x57')](promises)['then'](function(_0x1500b6){})['catch'](function(_0x74392b){logger[_0x8c58('0x15')](_0x8c58('0x5d'),JSON[_0x8c58('0x30')](_0x74392b));})[_0x8c58('0x5e')](function(){socket['emit'](_0x8c58('0x5f')+SOCKET_TIMESTAMP,{'success':success,'errors':errors,'duplicates':duplicates,'rows':rows});promises=[];success=0x0;errors=0x0;duplicates=0x0;rows=[];if(_0x4b07a4){return _0x4b07a4['resume']();}});};var endCsv=function(){return BPromise[_0x8c58('0x60')]()[_0x8c58('0x2c')](function(){if(hopperContacts){return checkHopper();}})['then'](function(){socket['emit']('contact:csv_'+SOCKET_TIMESTAMP,{'finished':!![],'success':success,'errors':errors,'duplicates':duplicates,'rows':rows});try{fs[_0x8c58('0x61')](FILEPATH);}catch(_0xabe541){logger[_0x8c58('0x15')]('Unable\x20to\x20delete\x20temp\x20file:',JSON[_0x8c58('0x30')](_0xabe541));}finally{process['exit'](0x0);}});};process['on'](_0x8c58('0x62'),function(){logger[_0x8c58('0x63')](_0x8c58('0x64'));endCsv();});function main(){return BPromise['resolve']()[_0x8c58('0x2c')](function(){if(DUPLICATES){DUPLICATES=DUPLICATES[_0x8c58('0x12')](',');return db['CmContact']['findAll']({'where':{'ListId':LISTID},'attributes':DUPLICATES,'raw':!![]});}})['then'](function(_0xde2f4c){var _0x378aad=fs['createReadStream'](FILEPATH,{'highWaterMark':0xf*0x400*0x400});Papa[_0x8c58('0x65')](_0x378aad,{'header':!![],'skipEmptyLines':!![],'step':function(_0x5ca9a1,_0x36b663){total+=0x1;var _0x5e9851=total;promises[_0x8c58('0x4f')](checkRow(_0x5ca9a1,_0xde2f4c,_0x5e9851)[_0x8c58('0x2c')](function(){success+=0x1;})[_0x8c58('0x2e')](function(_0x37bc2b){if(_0x37bc2b['error']){errors+=0x1;delete _0x37bc2b[_0x8c58('0x15')];}else if(_0x37bc2b[_0x8c58('0x66')]){duplicates+=0x1;delete _0x37bc2b[_0x8c58('0x66')];}rows['push'](_0x37bc2b);}));if(total%0xc8===0x0){_0x36b663[_0x8c58('0x67')]();return processPromises(_0x36b663);}},'complete':function(){return processPromises()[_0x8c58('0x2c')](function(){logger[_0x8c58('0x63')](_0x8c58('0x68'));endCsv();});},'error':function(_0x572c71,_0x18353b){logger[_0x8c58('0x63')](_0x8c58('0x69'),JSON['stringify'](_0x572c71));endCsv();}});})[_0x8c58('0x2e')](function(_0x3c8b89){logger[_0x8c58('0x15')](_0x8c58('0x6a'),JSON[_0x8c58('0x30')](_0x3c8b89));});}main();
\ No newline at end of file
index 720e9fc..d496119 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0xc256=['Abort\x20parser','abort','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()','contactId','contactTypeId','orderBy','VoiceQueueId','voice_queues_has_cm_blacklists','campaigns','CampaignId','campaigns_has_cm_blacklists','DROP\x20TABLE\x20','affectedRows','emit','unlink','complete','argv','existsSync','file\x20doesn\x27t\x20exists','binding\x20doesn\x27t\x20exists','phone\x20is\x20mandatory','firstName\x20is\x20mandatory','ListId\x20is\x20mandatory','body\x20id\x20mandatory','No\x20agent\x20available','uncaughtException','path','lodash','papaparse','util','moment','squel','ioredis','../../../mysqldb','../../../config/environment','../../../config/environment/shared','import','defaults','redis','localhost','socket.io-emitter','format','YYYY-MM-DD\x20HH:mm:ss','test','field','phone','from','join','.id\x20=\x20','where','.dialCheckDuplicateType\x20IN\x20(','AdditionalPhones','length','push','all','then','split','isNil','filter','CmContactHasItem','findOne','update','updated','create','PHONE','inserted','cm_contacts.scheduledat','cm_contacts.ListId','cm_contacts.updatedAt','cm_contacts.priority','cm_contacts.UserId','insert','fromQuery','scheduledat','ContactId','ListId','createdAt','updatedAt','select','fields','cm_contacts','cm_contacts.ListId\x20=\x20','.CmListId','.CmListId\x20=\x20?','cm_contacts.createdAt\x20=\x20?','cm_contacts.phone\x20NOT\x20IN\x20(?)','cm_hopper','\x22always\x22','\x22onlyIfOpen\x22','toString','cm_contacts.phone','cm_contacts.createdAt','cm_hopper_black','ListId\x20=\x20?','\x20=\x20','date_add(cm_contacts.scheduledat,interval\x20','.offset-cm_contacts.utcOffset\x20minute)','into','priority','UserId','cm_contacts.id','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_contact_has_items','cm_contacts.id\x20=\x20cm_contact_has_items.CmContactId','cm_hopper.ListId\x20=\x20?','concat','CompanyId',')\x20NOT\x20IN\x20?','deletedAt\x20IS\x20NULL','id\x20IN\x20?','MIN(id)','min_id','info','error','exit','message','sequelize','query','spread','catch','campaigns.id','campaigns.dialTimezone','campaigns_has_cm_lists','campaigns_has_cm_lists.CmListId=','voice_queues.dialTimezone','voice_queues','voice_queues_has_cm_lists','voice_queues.id\x20=\x20voice_queues_has_cm_lists.VoiceQueueId','voice_queues_has_cm_lists.CmListId=','timezones','dialTimezone','set','offset','main','stringify','send','start','binding','clone','socket_timestamp','root','server/files/tmp','.csv','keys','includes','header','findAll','name','_description','writeFileSync','parse','rows','errors','data','find','hasOwnProperty','trim','replace','isValid','scheduledat\x20wrong\x20format\x20(YYYY-MM-DD\x20HH:mm:ss)','isNaN','isNumber','agent\x20not\x20exists','email','email\x20wrong\x20format','dateOfBirth','dateOfBirth\x20wrong\x20format\x20(YYYY-MM-DD)','utcOffset','\x20not\x20specified','itemTypeId','contact:import:'];(function(_0xc6f542,_0x3389bf){var _0x3c3e54=function(_0x48525d){while(--_0x48525d){_0xc6f542['push'](_0xc6f542['shift']());}};_0x3c3e54(++_0x3389bf);}(_0xc256,0xe3));var _0x6c25=function(_0x21d105,_0x157e99){_0x21d105=_0x21d105-0x0;var _0x2523dc=_0xc256[_0x21d105];return _0x2523dc;};'use strict';var fs=require('fs');var path=require(_0x6c25('0x0'));var _=require(_0x6c25('0x1'));var Papa=require(_0x6c25('0x2'));var util=require(_0x6c25('0x3'));var BPromise=require('bluebird');var moment=require(_0x6c25('0x4'));var squel=require(_0x6c25('0x5'));var Redis=require(_0x6c25('0x6'));var db=require(_0x6c25('0x7'))['db'];var config=require(_0x6c25('0x8'));var shared=require(_0x6c25('0x9'));var logger=require('../../../config/logger')(_0x6c25('0xa'));config['redis']=_[_0x6c25('0xb')](config[_0x6c25('0xc')],{'host':_0x6c25('0xd'),'port':0x18eb});var socket=require(_0x6c25('0xe'))(new Redis(config[_0x6c25('0xc')]));var stats={'finish':![],'errors':[],'rows':0x0,'affectedRows':0x0};var results=[];var promisesAdditionalPhones=[];var orderBy=0x0;var stopped=![];var NOW=moment()[_0x6c25('0xf')]('YYYY-MM-DD\x20HH:mm:ss');var contactItemTypes=[];var phoneDescriptions=[];var hasAdditionalPhones=![];var tmp_voice_queues;var tmp_campaigns;var tzOffset=0x0;var hasTZ;var NOW=moment()[_0x6c25('0xf')](_0x6c25('0x10'));function isEmail(_0x7c8ed0){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))*$/[_0x6c25('0x11')](_0x7c8ed0);}function selectNotIn(_0x5e08c1,_0x2185b9,_0x4f2b3c,_0x5099d4,_0x3c8953){return squel['select']()[_0x6c25('0x12')](_0x6c25('0x13'))[_0x6c25('0x14')](_0x5099d4)[_0x6c25('0x15')](_0x2185b9,null,_0x2185b9+_0x6c25('0x16')+_0x5099d4+'.'+_0x4f2b3c)[_0x6c25('0x17')](_0x5099d4+'.'+_0x4f2b3c+'\x20=\x20'+_0x5e08c1+'.'+_0x4f2b3c)[_0x6c25('0x17')](_0x2185b9+_0x6c25('0x18')+_0x3c8953[_0x6c25('0x15')]()+')');}function handleAdditionalPhones(){return new Promise(function(_0x5a2221,_0x4b28cf){promisesAdditionalPhones=[];return db['CmContact']['findAll']({'raw':!![],'attributes':['id',_0x6c25('0x19')],'where':{'createdAt':NOW,'AdditionalPhones':{'$ne':null}}})['then'](function(_0x1fee46){if(_0x1fee46!==null){var _0x2a8a41=[];for(var _0x377e4d=0x0;_0x377e4d<_0x1fee46[_0x6c25('0x1a')];_0x377e4d++){var _0x1383d7=_0x1fee46[_0x377e4d];_0x2a8a41[_0x6c25('0x1b')](insertAdditionalPhones(_0x1383d7));}}Promise[_0x6c25('0x1c')](_0x2a8a41)[_0x6c25('0x1d')](function(){_0x5a2221({'val':0x1});});});});}function insertAdditionalPhones(_0x4e4391){return new Promise(function(_0x2313d7,_0xbeba78){var _0x2c1862=_0x4e4391[_0x6c25('0x19')];var _0x5e874c=_0x2c1862['split'](';');var _0x1b8399=[];orderBy=0x0;for(var _0x1b33ba=0x0;_0x1b33ba<_0x5e874c[_0x6c25('0x1a')];_0x1b33ba++){_0x1b8399['push'](splitAdditionalPhone(_0x4e4391['id'],_0x5e874c[_0x1b33ba]));}Promise[_0x6c25('0x1c')](_0x1b8399)[_0x6c25('0x1d')](function(){_0x2313d7({'val':_0x5e874c['length']});});});}function splitAdditionalPhone(_0x348242,_0x9c4d1d){return new Promise(function(_0x3f342f,_0x512614){var _0xb4c552=_0x9c4d1d[_0x6c25('0x1e')](':');var _0x2db990=_0xb4c552[0x0];var _0x33a06c=_0xb4c552[0x1];if(!_[_0x6c25('0x1f')](_0x33a06c)){var _0x2a710b=_0x33a06c[_0x6c25('0x1e')]('|');var _0x51db45=[];for(var _0x248b50=0x0;_0x248b50<_0x2a710b['length'];_0x248b50++){if(_0x2a710b[_0x248b50]!==''){var _0x26cbfb=_[_0x6c25('0x20')](promisesAdditionalPhones,{'contactId':_0x348242,'phone':_0x2a710b[_0x248b50]});if(_0x26cbfb[_0x6c25('0x1a')]==0x0){orderBy++;promisesAdditionalPhones['push']({'contactId':_0x348242,'contactTypeId':_0x2db990,'phone':_0x2a710b[_0x248b50],'orderBy':orderBy});}}}_0x3f342f({'ok':0x1});}else _0x3f342f({'res':0x0});});}function createAdditionalPhone(_0x5635f4,_0x50fa17,_0x3159ec,_0x408e00){var _0x7490a5='';var _0xe5fa9d='';var _0xdeb752=_0x3159ec[_0x6c25('0x1e')]('§');_0x7490a5=_0xdeb752[0x0];if(_0xdeb752[_0x6c25('0x1a')]==0x2)_0xe5fa9d=_0xdeb752[0x1];return new Promise(function(_0x4ff2da,_0x4ee312){return db[_0x6c25('0x21')][_0x6c25('0x22')]({'where':{'CmContactId':_0x5635f4,'item':_0x7490a5}})[_0x6c25('0x1d')](function(_0x298867){if(_0x298867){return db[_0x6c25('0x21')][_0x6c25('0x23')]({'ItemTypeId':_0x50fa17,'description':_0xe5fa9d,'OrderBy':_0x408e00},{'where':{'CmContactId':_0x5635f4,'item':_0x7490a5}})[_0x6c25('0x1d')](function(_0x3d6fee){_0x4ff2da({'res':_0x6c25('0x24')});});}else{return db[_0x6c25('0x21')][_0x6c25('0x25')]({'CmContactId':_0x5635f4,'item':_0x7490a5,'description':_0xe5fa9d,'ItemTypeId':_0x50fa17,'OrderBy':_0x408e00,'ItemClass':_0x6c25('0x26')})[_0x6c25('0x1d')](function(_0x3c3ede){_0x4ff2da({'res':_0x6c25('0x27')});});}});});}function insertCmHopper(_0x294080,_0x5ef6e4,_0x3ae9bc,_0x264818,_0x280379){var _0x46e9ae=['cm_contacts.phone',_0x6c25('0x28'),'cm_contacts.id',_0x6c25('0x29'),_0x5ef6e4+'.'+_0x264818,'cm_contacts.createdAt',_0x6c25('0x2a'),_0x6c25('0x2b'),_0x6c25('0x2c'),'\x22'+_0x280379+'\x22'];return squel[_0x6c25('0x2d')]()['into']('cm_hopper')[_0x6c25('0x2e')]([_0x6c25('0x13'),_0x6c25('0x2f'),_0x6c25('0x30'),_0x6c25('0x31'),_0x264818,_0x6c25('0x32'),_0x6c25('0x33'),'priority','UserId','recallme'],squel[_0x6c25('0x34')]()[_0x6c25('0x35')](_0x46e9ae)[_0x6c25('0x14')](_0x5ef6e4)['join'](_0x6c25('0x36'),null,_0x6c25('0x37')+_0x5ef6e4+_0x6c25('0x38'))['join'](_0x3ae9bc,null,_0x3ae9bc+'.id\x20=\x20'+_0x5ef6e4+'.'+_0x264818)[_0x6c25('0x17')](_0x5ef6e4+_0x6c25('0x39'),_0x294080)[_0x6c25('0x17')](_0x6c25('0x3a'),NOW)[_0x6c25('0x17')](_0x6c25('0x3b'),selectNotIn(_0x5ef6e4,_0x3ae9bc,_0x264818,_0x6c25('0x3c'),[_0x6c25('0x3d'),_0x6c25('0x3e')]))[_0x6c25('0x17')](_0x6c25('0x3b'),selectNotIn(_0x5ef6e4,_0x3ae9bc,_0x264818,'cm_hopper',[_0x6c25('0x3d')])))[_0x6c25('0x3f')]();}function insertCmHopperBlack(_0xf79d60,_0xe63b84,_0x2db219,_0xb6618d){var _0x3fb2b1=[_0x6c25('0x40'),'cm_contacts.id',_0x6c25('0x29'),_0xe63b84+'.'+_0xb6618d,_0x6c25('0x41'),'cm_contacts.updatedAt'];return squel[_0x6c25('0x2d')]()['into'](_0x6c25('0x42'))[_0x6c25('0x2e')]([_0x6c25('0x13'),_0x6c25('0x30'),_0x6c25('0x31'),_0xb6618d,'createdAt',_0x6c25('0x33')],squel[_0x6c25('0x34')]()['fields'](_0x3fb2b1)[_0x6c25('0x14')](_0xe63b84)[_0x6c25('0x15')](_0x6c25('0x36'),null,_0x6c25('0x37')+_0xe63b84+_0x6c25('0x38'))['join'](_0x2db219,null,_0x2db219+_0x6c25('0x16')+_0xe63b84+'.'+_0xb6618d)[_0x6c25('0x17')](_0xe63b84+'.CmListId\x20=\x20?',_0xf79d60)[_0x6c25('0x17')]('cm_contacts.createdAt\x20=\x20?',NOW)[_0x6c25('0x17')](_0x6c25('0x3b'),squel[_0x6c25('0x34')]()[_0x6c25('0x12')]('phone')[_0x6c25('0x14')]('cm_hopper_black')[_0x6c25('0x17')](_0x6c25('0x43'),_0xf79d60)[_0x6c25('0x17')](_0xb6618d+_0x6c25('0x44')+_0xe63b84+'.'+_0xb6618d)))[_0x6c25('0x3f')]();}function insertTzCmHopper(_0x324755,_0x84329f,_0x4dad4d,_0x2ccd43,_0x3ec4c9,_0x30002c){var _0x1991a2=[_0x6c25('0x40'),_0x6c25('0x45')+_0x30002c+_0x6c25('0x46'),'cm_contacts.id',_0x6c25('0x29'),_0x84329f+'.'+_0x2ccd43,_0x6c25('0x41'),'cm_contacts.updatedAt',_0x6c25('0x2b'),_0x6c25('0x2c'),'\x22'+_0x3ec4c9+'\x22'];var _0x1c5cba=squel['insert']()[_0x6c25('0x47')](_0x6c25('0x3c'))[_0x6c25('0x2e')]([_0x6c25('0x13'),_0x6c25('0x2f'),_0x6c25('0x30'),_0x6c25('0x31'),_0x2ccd43,'createdAt',_0x6c25('0x33'),_0x6c25('0x48'),_0x6c25('0x49'),'recallme'],squel[_0x6c25('0x34')]()[_0x6c25('0x35')](_0x1991a2)[_0x6c25('0x14')](_0x84329f)[_0x6c25('0x15')]('cm_contacts',null,_0x6c25('0x37')+_0x84329f+_0x6c25('0x38'))[_0x6c25('0x15')](_0x4dad4d,null,_0x4dad4d+'.id\x20=\x20'+_0x84329f+'.'+_0x2ccd43)['join'](_0x30002c,null,_0x30002c+'.id\x20=\x20'+_0x84329f+'.'+_0x2ccd43)['where'](_0x84329f+_0x6c25('0x39'),_0x324755)[_0x6c25('0x17')](_0x6c25('0x3a'),NOW)[_0x6c25('0x17')](_0x6c25('0x3b'),selectNotIn(_0x84329f,_0x4dad4d,_0x2ccd43,_0x6c25('0x3c'),[_0x6c25('0x3d'),_0x6c25('0x3e')]))[_0x6c25('0x17')](_0x6c25('0x3b'),selectNotIn(_0x84329f,_0x4dad4d,_0x2ccd43,_0x6c25('0x3c'),[_0x6c25('0x3d')])))[_0x6c25('0x3f')]();return _0x1c5cba;}function insertTzCmHopperBlack(_0x3c7100,_0x5361fb,_0x143eb8,_0x388577){var _0x549e71=[_0x6c25('0x40'),_0x6c25('0x4a'),_0x6c25('0x29'),_0x5361fb+'.'+_0x388577,_0x6c25('0x41'),_0x6c25('0x2a')];return squel['insert']()[_0x6c25('0x47')](_0x6c25('0x42'))[_0x6c25('0x2e')](['phone',_0x6c25('0x30'),_0x6c25('0x31'),_0x388577,'createdAt',_0x6c25('0x33')],squel['select']()[_0x6c25('0x35')](_0x549e71)['from'](_0x5361fb)['join'](_0x6c25('0x36'),null,'cm_contacts.ListId\x20=\x20'+_0x5361fb+_0x6c25('0x38'))[_0x6c25('0x15')](_0x143eb8,null,_0x143eb8+_0x6c25('0x16')+_0x5361fb+'.'+_0x388577)['where'](_0x5361fb+_0x6c25('0x39'),_0x3c7100)[_0x6c25('0x17')]('cm_contacts.createdAt\x20=\x20?',NOW)[_0x6c25('0x17')]('cm_contacts.phone\x20NOT\x20IN\x20(?)',squel[_0x6c25('0x34')]()['field'](_0x6c25('0x13'))[_0x6c25('0x14')](_0x6c25('0x42'))[_0x6c25('0x17')](_0x6c25('0x43'),_0x3c7100)[_0x6c25('0x17')](_0x388577+_0x6c25('0x44')+_0x5361fb+'.'+_0x388577)))[_0x6c25('0x3f')]();}function insertCmHopperAdditionalPhones(_0x1bdafa){var _0xcf685=[_0x6c25('0x4b'),_0x6c25('0x4c'),_0x6c25('0x4d'),_0x6c25('0x4e'),'cm_contact_has_items.updatedAt'];return squel[_0x6c25('0x2d')]()[_0x6c25('0x47')](_0x6c25('0x4f'))[_0x6c25('0x2e')]([_0x6c25('0x50'),'phone',_0x6c25('0x51'),'createdAt',_0x6c25('0x33')],squel['select']()[_0x6c25('0x35')](_0xcf685)[_0x6c25('0x14')](_0x6c25('0x3c'))['join'](_0x6c25('0x36'),null,'cm_contacts.id\x20=\x20cm_hopper.ContactId')[_0x6c25('0x15')](_0x6c25('0x52'),null,_0x6c25('0x53'))[_0x6c25('0x17')](_0x6c25('0x54'),_0x1bdafa)[_0x6c25('0x17')]('cm_contacts.createdAt\x20=\x20?',NOW))['toString']();}function insertCmContact(_0x5ee02d,_0x5c0837,_0x4516f0,_0x1dcad9){var _0x2abf5d=_[_0x6c25('0x55')](_['keys'](_0x1dcad9),[_0x6c25('0x31'),_0x6c25('0x56'),_0x6c25('0x32'),_0x6c25('0x33')]);return squel[_0x6c25('0x2d')]()['into']('cm_contacts')[_0x6c25('0x2e')](_0x2abf5d,squel['select']()[_0x6c25('0x35')](_0x2abf5d)[_0x6c25('0x14')](_0x5c0837)['where']('('+_0x4516f0['join'](',')+_0x6c25('0x57'),squel[_0x6c25('0x34')]()['fields'](_0x4516f0)[_0x6c25('0x14')](_0x6c25('0x36'))[_0x6c25('0x17')]('ListId\x20=\x20?',_0x5ee02d)['where'](_0x6c25('0x58')))[_0x6c25('0x17')](_0x6c25('0x59'),squel[_0x6c25('0x34')]()[_0x6c25('0x12')](_0x6c25('0x5a'),_0x6c25('0x5b'))['from'](_0x5c0837)['group'](_0x4516f0['join'](','))))[_0x6c25('0x3f')]();}function handleStop(){logger[_0x6c25('0x5c')]('Received\x20SIGINT');stopped=!![];}function handleUncaughtException(_0x18bf0b){logger[_0x6c25('0x5d')](_0x18bf0b['message']);process[_0x6c25('0x5e')](0x1);}function handleError(_0x46e667,_0x442c93){stats['errors'][_0x6c25('0x1b')]({'name':_0x442c93['code'],'message':_0x442c93[_0x6c25('0x5f')],'row':_0x46e667});}function handleQuery(_0x1e2729){logger[_0x6c25('0x5c')](_0x1e2729);return db[_0x6c25('0x60')][_0x6c25('0x61')](_0x1e2729)[_0x6c25('0x62')](function(_0x104e58){results[_0x6c25('0x1b')](_0x104e58);})[_0x6c25('0x63')](function(_0x5ae7c6){logger[_0x6c25('0x5d')](_0x5ae7c6[_0x6c25('0x5f')]);});}function updateTzCampaigns(_0x574879){return new Promise(function(_0x9d7698,_0x607912){var _0x172b73=squel[_0x6c25('0x34')]()[_0x6c25('0x35')]([_0x6c25('0x64'),_0x6c25('0x65')])[_0x6c25('0x14')]('campaigns')[_0x6c25('0x15')](_0x6c25('0x66'),null,'campaigns.id\x20=\x20campaigns_has_cm_lists.CampaignId')['where'](_0x6c25('0x67')+_0x574879);db[_0x6c25('0x60')][_0x6c25('0x61')](_0x172b73[_0x6c25('0x3f')]())[_0x6c25('0x62')](function(_0x12f7b9){var _0x1d34ba=[];for(var _0x34eed0=0x0;_0x34eed0<_0x12f7b9['length'];_0x34eed0++){_0x1d34ba[_0x6c25('0x1b')](getTimezoneData(_0x12f7b9[_0x34eed0],tmp_campaigns));}BPromise['all'](_0x1d34ba)['then'](function(){_0x9d7698({'val':0x1});});})[_0x6c25('0x63')](function(_0x2e3c9b){logger[_0x6c25('0x5d')](_0x2e3c9b[_0x6c25('0x5f')]);_0x9d7698({'val':0x0});});});}function updateTzVoiceQueues(_0x4aa760){return new Promise(function(_0x535d3f,_0x25e7a9){var _0x218c8f=squel[_0x6c25('0x34')]()['fields'](['voice_queues.id',_0x6c25('0x68')])[_0x6c25('0x14')](_0x6c25('0x69'))['join'](_0x6c25('0x6a'),null,_0x6c25('0x6b'))[_0x6c25('0x17')](_0x6c25('0x6c')+_0x4aa760);db[_0x6c25('0x60')][_0x6c25('0x61')](_0x218c8f[_0x6c25('0x3f')]())[_0x6c25('0x62')](function(_0x211bc5){var _0x3a5cd4=[];for(var _0x4c9f64=0x0;_0x4c9f64<_0x211bc5['length'];_0x4c9f64++){_0x3a5cd4[_0x6c25('0x1b')](getTimezoneData(_0x211bc5[_0x4c9f64],tmp_voice_queues));}BPromise['all'](_0x3a5cd4)[_0x6c25('0x1d')](function(){_0x535d3f({'val':0x1});});})[_0x6c25('0x63')](function(_0x3bfbca){logger[_0x6c25('0x5d')](_0x3bfbca[_0x6c25('0x5f')]);_0x535d3f({'val':0x0});});});}function getTimezoneData(_0x39ce45,_0x275456){return new Promise(function(_0x1cb63c,_0x3e6a61){var _0x4ecb94=shared[_0x6c25('0x6d')];var _0x530de9=_0x4ecb94[_0x39ce45[_0x6c25('0x6e')]];if(_['isNil'](_0x530de9)){_0x1cb63c({'ret':0x1});}else{var _0x345dd0=_0x530de9['utcOffset'];var _0x8ce839=squel[_0x6c25('0x2d')]()[_0x6c25('0x47')](_0x275456)[_0x6c25('0x6f')]('id',_0x39ce45['id'])[_0x6c25('0x6f')](_0x6c25('0x70'),_0x345dd0)[_0x6c25('0x6f')]('dialTimezone',_0x39ce45[_0x6c25('0x6e')])['toString']();return db[_0x6c25('0x60')]['query'](_0x8ce839)[_0x6c25('0x62')](function(_0x4236ee){_0x1cb63c({'ret':0x1});})['catch'](function(_0xc1a6b7){logger[_0x6c25('0x5d')](_0xc1a6b7[_0x6c25('0x5f')]);_0x3e6a61({'ret':0x1});});}});}function handleTZQuery(_0x437a65){logger[_0x6c25('0x5c')](_0x437a65);return db['sequelize'][_0x6c25('0x61')](_0x437a65)[_0x6c25('0x62')](function(_0xf2c2a){})['catch'](function(_0x259c0e){logger[_0x6c25('0x5d')](_0x259c0e[_0x6c25('0x5f')]);});}function main(_0x334370,_0x57ce07,_0x1ec408,_0x2f4632){logger[_0x6c25('0x5c')](_0x6c25('0x71'),_0x334370,JSON[_0x6c25('0x72')](_0x57ce07));process[_0x6c25('0x73')](_0x6c25('0x74'));var _0xb25121=_0x57ce07[_0x6c25('0x75')];var _0x195537=_[_0x6c25('0x76')](_0xb25121);var _0x1f7317=_0x57ce07[_0x6c25('0x77')];var _0x453b88=path[_0x6c25('0x15')](config[_0x6c25('0x78')],_0x6c25('0x79'),_0x1f7317+_0x6c25('0x7a'));hasTZ=_[_0x6c25('0x7b')](_0xb25121)[_0x6c25('0x7c')](_0x6c25('0x6e'));var _0xa97e1d=_[_0x6c25('0x7b')](_0xb25121)[_0x6c25('0x15')]();logger[_0x6c25('0x5c')](_0x6c25('0x7d'),_0xa97e1d);db['ContactItemType'][_0x6c25('0x7e')]({'raw':!![],'attributes':['id','name']})[_0x6c25('0x1d')](function(_0x2d894b){for(var _0x2c6fd8=0x0;_0x2c6fd8<_0x2d894b[_0x6c25('0x1a')];_0x2c6fd8++){if(_0x2d894b[_0x2c6fd8][_0x6c25('0x7f')]in _0xb25121){contactItemTypes[_0x6c25('0x1b')](_0x2d894b[_0x2c6fd8]);delete _0x195537[_0x2d894b[_0x2c6fd8]['name']];hasAdditionalPhones=!![];}for(var _0x1916c2 in _0xb25121){if(_0x2d894b[_0x2c6fd8][_0x6c25('0x7f')]+_0x6c25('0x80')===_0x1916c2){phoneDescriptions['push']({'itemTypeId':_0x2d894b[_0x2c6fd8]['id'],'description':_0x1916c2});delete _0x195537[_0x1916c2];}}}if(hasAdditionalPhones)_0x195537[_0x6c25('0x19')]='';var _0x12c0ba=_['keys'](_0x195537)[_0x6c25('0x15')]();logger[_0x6c25('0x5c')](_0x6c25('0x7d'),_0x12c0ba);fs[_0x6c25('0x81')](_0x453b88,_0x12c0ba+'\x0a');Papa[_0x6c25('0x82')](fs['createReadStream'](_0x334370),{'header':!![],'skipEmptyLines':!![],'step':function(_0x1fe746,_0x4981dd){try{for(var _0x288e8e=0x0,_0x5806f1=[];_0x288e8e<_0x1fe746['data'][_0x6c25('0x1a')];_0x288e8e++){stats[_0x6c25('0x83')]+=0x1;if(_0x1fe746[_0x6c25('0x84')][_0x288e8e]){handleError(_0x1fe746[_0x6c25('0x85')][_0x288e8e],_0x1fe746['errors'][_0x288e8e]);}else{var _0x19c8c9=[];var _0x43aa08=[];var _0xddaf0f={};for(var _0x40a00b in _0xb25121){let _0x3c402e=contactItemTypes['find'](_0x2d9587=>_0x2d9587[_0x6c25('0x7f')]===_0x40a00b);let _0x5ce250=contactItemTypes[_0x6c25('0x86')](_0x55518b=>_0x55518b['name']+'_description'===_0x40a00b);if(_[_0x6c25('0x1f')](_0x3c402e)&&_[_0x6c25('0x1f')](_0x5ce250)){if(_0xb25121[_0x6c25('0x87')](_0x40a00b)){if(_0x1fe746[_0x6c25('0x85')][_0x288e8e][_0xb25121[_0x40a00b]]){var _0x536916=_[_0x6c25('0x88')](_0x1fe746[_0x6c25('0x85')][_0x288e8e][_0xb25121[_0x40a00b]][_0x6c25('0x89')](/"/g,'\x27'));switch(_0x40a00b){case _0x6c25('0x2f'):var _0x444d0e=moment(_0x536916,_0x6c25('0x10'),!![]);if(_0x444d0e[_0x6c25('0x8a')]()){_0x5806f1[_0x6c25('0x1b')]('\x22'+_0x536916+'\x22');}else{_0x19c8c9['push'](_0x6c25('0x8b'));}break;case'priority':var _0x2628e9=parseInt(_0x536916);_0x536916=_[_0x6c25('0x8c')](_0x2628e9)||_0x2628e9<0x0||_0x2628e9>0x4?_0x2f4632?0x3:0x2:_0x2628e9;_0x5806f1[_0x6c25('0x1b')]('\x22'+_0x536916+'\x22');break;case'UserId':var _0x4372ee=parseInt(_0x536916);if(_[_0x6c25('0x8d')](_0x4372ee)&&_[_0x6c25('0x7c')](_0x1ec408,_0x4372ee)){_0x5806f1['push']('\x22'+_0x4372ee+'\x22');}else{_0x19c8c9['push'](_0x6c25('0x8e'));}break;case _0x6c25('0x8f'):if(isEmail(_0x536916)){_0x5806f1[_0x6c25('0x1b')]('\x22'+_0x536916+'\x22');}else{_0x19c8c9[_0x6c25('0x1b')](_0x6c25('0x90'));}break;case _0x6c25('0x91'):var _0x14b1bb=moment(_0x536916,'YYYY-MM-DD',!![]);if(_0x14b1bb[_0x6c25('0x8a')]()){_0x5806f1['push']('\x22'+_0x536916+'\x22');}else{_0x19c8c9[_0x6c25('0x1b')](_0x6c25('0x92'));}break;case'dialTimezone':var _0x1dd8ef=shared[_0x6c25('0x6d')];var _0x38b058=_0x1dd8ef[_0x536916];if(!_[_0x6c25('0x1f')](_0x38b058)){var _0x16bd24=_0x38b058[_0x6c25('0x93')];_0x5806f1[_0x6c25('0x1b')]('\x22'+_0x536916+'\x22');_0x5806f1[_0x6c25('0x1b')]('\x22'+_0x16bd24+'\x22');}break;default:_0x5806f1['push']('\x22'+_0x536916+'\x22');}}else{switch(_0x40a00b){case'firstName':case _0x6c25('0x13'):_0x19c8c9[_0x6c25('0x1b')](_0x40a00b+_0x6c25('0x94'));break;default:_0x5806f1['push']('\x22\x22');}}}}else{var _0x11e673='';if(!_[_0x6c25('0x1f')](_0x3c402e)){if(!_0xddaf0f['hasOwnProperty'](_0x3c402e['id'])){if(!_[_0x6c25('0x1f')](_0x1fe746['data'][_0x288e8e][_0xb25121[_0x40a00b]])){var _0x536916=_['trim'](_0x1fe746[_0x6c25('0x85')][_0x288e8e][_0xb25121[_0x40a00b]][_0x6c25('0x89')](/"/g,'\x27'));var _0x451ddc=phoneDescriptions['find'](_0xe65219=>_0xe65219[_0x6c25('0x95')]===_0x3c402e['id']);if(!_['isNil'](_0x451ddc)){var _0x5bdf1a=_[_0x6c25('0x88')](_0x1fe746[_0x6c25('0x85')][_0x288e8e][_0xb25121[_0x451ddc['description']]]['replace'](/"/g,'\x27'));if(!_['isNil'](_0x5bdf1a))_0x536916=_0x536916+'§'+_0x5bdf1a;}if(_0x11e673=='')_0x11e673=_0x536916;else _0x11e673+='|'+_0x536916;}_0x43aa08['push'](_0x3c402e['id']+':'+_0x11e673);_0xddaf0f[_0x3c402e['id']]=0x1;}}}}if(hasAdditionalPhones){_0x5806f1[_0x6c25('0x1b')]('\x22'+_0x43aa08['join'](';')+'\x22');}if(_0x19c8c9[_0x6c25('0x1a')]){handleError(_0x1fe746[_0x6c25('0x85')][_0x288e8e],{'code':'SystemRow','message':_0x19c8c9[_0x6c25('0x15')]()});}else{fs['appendFileSync'](_0x453b88,_0x5806f1[_0x6c25('0x15')]()+'\x0a');}_0x5806f1=[];}if(!(stats[_0x6c25('0x83')]%0xc8)){socket['emit'](_0x6c25('0x96')+_0x1f7317,stats);stats[_0x6c25('0x84')]=[];}}if(stopped){logger['info'](_0x6c25('0x97'));_0x4981dd[_0x6c25('0x98')]();}}catch(_0x386c1b){handleError(_0x1fe746['data'][_0x288e8e],{'code':_0x6c25('0x99'),'message':_0x386c1b[_0x6c25('0x5f')]});logger['error'](_0x6c25('0x9a'),_0x386c1b[_0x6c25('0x5f')]);}},'complete':function(){try{var _0x32260d=[];var _0x143085=[];var _0xccce1b=_0x6c25('0x36');if(_0x57ce07['duplicates']&&_0x57ce07[_0x6c25('0x9b')][_0x6c25('0x1a')]){_0xccce1b=_0x6c25('0x9c')+_0x1f7317;_0x32260d['push'](_0x6c25('0x9d')+_0xccce1b+_0x6c25('0x9e'));}tmp_campaigns=_0x6c25('0x9f')+_0x1f7317;tmp_voice_queues=_0x6c25('0xa0')+_0x1f7317;_0x143085['push'](_0x6c25('0x9d')+tmp_campaigns+_0x6c25('0xa1'));_0x143085[_0x6c25('0x1b')](_0x6c25('0x9d')+tmp_voice_queues+_0x6c25('0xa1'));BPromise[_0x6c25('0xa2')](_0x143085,handleTZQuery)[_0x6c25('0x1d')](function(_0xe75094){updateTzCampaigns(_0x57ce07[_0x6c25('0x31')])[_0x6c25('0x1d')](function(_0x27ce3b){updateTzVoiceQueues(_0x57ce07[_0x6c25('0x31')])[_0x6c25('0x1d')](function(_0x14bbf4){if(hasTZ)_0x12c0ba=_0x12c0ba['replace'](_0x6c25('0x6e'),_0x6c25('0xa3'));var _0x394666=util[_0x6c25('0xf')](_0x6c25('0xa4'),_0x453b88,_0xccce1b,_0x12c0ba,_0x57ce07[_0x6c25('0x31')],_0x57ce07[_0x6c25('0x56')]||null,NOW,NOW);if(_['isNil'](_0xb25121[_0x6c25('0x2f')])){_0x394666+=_0x6c25('0xa5');}_0x32260d[_0x6c25('0x1b')](_0x394666);if(_0x57ce07[_0x6c25('0x9b')]&&_0x57ce07[_0x6c25('0x9b')][_0x6c25('0x1a')]){_0x32260d[_0x6c25('0x1b')](insertCmContact(_0x57ce07['ListId'],_0xccce1b,_0x57ce07[_0x6c25('0x9b')],_0xb25121));_0x32260d[_0x6c25('0x1b')]('DROP\x20TABLE\x20'+_0xccce1b+';');}BPromise[_0x6c25('0xa2')](_0x32260d,handleQuery)['then'](function(_0x46a4c0){BPromise['all']([handleAdditionalPhones()])[_0x6c25('0x1d')](function(){_0x32260d=[];for(var _0x2df13e=0x0;_0x2df13e<promisesAdditionalPhones['length'];_0x2df13e++){if(promisesAdditionalPhones[_0x2df13e][_0x6c25('0x13')]!='§'){_0x32260d[_0x6c25('0x1b')](createAdditionalPhone(promisesAdditionalPhones[_0x2df13e][_0x6c25('0xa6')],promisesAdditionalPhones[_0x2df13e][_0x6c25('0xa7')],promisesAdditionalPhones[_0x2df13e][_0x6c25('0x13')],promisesAdditionalPhones[_0x2df13e][_0x6c25('0xa8')]));}}BPromise[_0x6c25('0x1c')](_0x32260d)[_0x6c25('0x1d')](function(){_0x32260d=[];if(hasTZ){_0x32260d[_0x6c25('0x1b')](insertTzCmHopper(_0x57ce07['ListId'],_0x6c25('0x6a'),_0x6c25('0x69'),_0x6c25('0xa9'),_0x2f4632,tmp_voice_queues));_0x32260d[_0x6c25('0x1b')](insertTzCmHopperBlack(_0x57ce07[_0x6c25('0x31')],_0x6c25('0xaa'),_0x6c25('0x69'),_0x6c25('0xa9')));_0x32260d[_0x6c25('0x1b')](insertTzCmHopper(_0x57ce07[_0x6c25('0x31')],'campaigns_has_cm_lists',_0x6c25('0xab'),'CampaignId',_0x2f4632,tmp_campaigns));_0x32260d['push'](insertTzCmHopperBlack(_0x57ce07[_0x6c25('0x31')],'campaigns_has_cm_blacklists',_0x6c25('0xab'),_0x6c25('0xac')));_0x32260d[_0x6c25('0x1b')](insertCmHopperAdditionalPhones(_0x57ce07[_0x6c25('0x31')]));}else{_0x32260d[_0x6c25('0x1b')](insertCmHopper(_0x57ce07[_0x6c25('0x31')],_0x6c25('0x6a'),_0x6c25('0x69'),_0x6c25('0xa9'),_0x2f4632));_0x32260d[_0x6c25('0x1b')](insertCmHopperBlack(_0x57ce07[_0x6c25('0x31')],_0x6c25('0xaa'),_0x6c25('0x69'),_0x6c25('0xa9')));_0x32260d[_0x6c25('0x1b')](insertCmHopper(_0x57ce07[_0x6c25('0x31')],_0x6c25('0x66'),_0x6c25('0xab'),'CampaignId',_0x2f4632));_0x32260d[_0x6c25('0x1b')](insertCmHopperBlack(_0x57ce07[_0x6c25('0x31')],_0x6c25('0xad'),_0x6c25('0xab'),_0x6c25('0xac')));_0x32260d[_0x6c25('0x1b')](insertCmHopperAdditionalPhones(_0x57ce07[_0x6c25('0x31')]));}_0x32260d[_0x6c25('0x1b')](_0x6c25('0xae')+tmp_campaigns+';');_0x32260d[_0x6c25('0x1b')]('DROP\x20TABLE\x20'+tmp_voice_queues+';');BPromise[_0x6c25('0xa2')](_0x32260d,handleQuery)[_0x6c25('0x1d')](function(_0x50e4e8){stats['finish']=!![];stats['affectedRows']=_0x57ce07['duplicates']&&_0x57ce07[_0x6c25('0x9b')][_0x6c25('0x1a')]?results[0x2][_0x6c25('0xaf')]:results[0x0][_0x6c25('0xaf')];socket[_0x6c25('0xb0')](_0x6c25('0x96')+_0x1f7317,stats);fs['unlink'](_0x334370);fs[_0x6c25('0xb1')](_0x453b88);process[_0x6c25('0x5e')](0x0);})[_0x6c25('0x63')](function(_0x57bb2a){logger[_0x6c25('0x5d')](_0x57bb2a['message']);process['exit'](0x1);});});});})[_0x6c25('0x63')](function(_0x1a4243){logger['error'](_0x1a4243['message']);process[_0x6c25('0x5e')](0x1);});});});});}catch(_0x4cdaf6){logger[_0x6c25('0x5d')](_0x6c25('0xb2'),_0x4cdaf6['message']);process['exit'](0x1);}},'error':function(_0x52c851,_0x4a8a12,_0xbb7876,_0x16398f){throw new Error(_0x16398f);}});});}function validate(){if(process[_0x6c25('0xb3')]&&process[_0x6c25('0xb3')][_0x6c25('0x1a')]<0x4){throw new Error('arguments\x20<filename>\x20<parameters>\x20<agents>');}var _0x5410b2=path['join'](config[_0x6c25('0x78')],_0x6c25('0x79'),process[_0x6c25('0xb3')][0x2]);if(!fs[_0x6c25('0xb4')](_0x5410b2)){throw new Error(_0x6c25('0xb5'));}var _0x3771c5={};try{_0x3771c5=JSON[_0x6c25('0x82')](process[_0x6c25('0xb3')][0x3]);if(!_0x3771c5[_0x6c25('0x75')]){throw new Error(_0x6c25('0xb6'));}if(!_0x3771c5[_0x6c25('0x75')]['phone']){throw new Error(_0x6c25('0xb7'));}if(!_0x3771c5[_0x6c25('0x75')]['firstName']){throw new Error(_0x6c25('0xb8'));}var _0x1cc6ea=0x0;if(_0x3771c5[_0x6c25('0x75')][_0x6c25('0x49')]){_0x1cc6ea=0x1;}if(!_0x3771c5[_0x6c25('0x31')]){throw new Error(_0x6c25('0xb9'));}}catch(_0x1ba1bc){throw new Error(_0x6c25('0xba'));}var _0x313775=[];try{_0x313775=_['map'](JSON[_0x6c25('0x82')](process[_0x6c25('0xb3')][0x4]),'id');}catch(_0x61c8b3){logger['info'](_0x6c25('0xbb'));}main(_0x5410b2,_0x3771c5,_0x313775,_0x1cc6ea);}validate();process['on']('SIGINT',handleStop);process['on'](_0x6c25('0xbc'),handleUncaughtException);
\ No newline at end of file
index d95b740..a2bd737 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0x8caf=['UserId','recallme','cm_contacts','cm_contacts.ListId\x20=\x20','.id\x20=\x20','.CmListId\x20=\x20?','cm_contacts.phone\x20NOT\x20IN\x20(?)','cm_hopper','\x22always\x22','toString','fromQuery','fields','.CmListId','cm_contacts.createdAt\x20=\x20?','cm_hopper_black','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','createdAt','updatedAt','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?','id\x20IN\x20?','MIN(id)','min_id','group','info','Received\x20SIGINT','exit','errors','code','spread','catch','main','stringify','send','binding','clone','root','server/files/tmp','ContactItemType','findAll','name','_description','header','writeFileSync','parse','data','rows','find','hasOwnProperty','trim','replace','YYYY-MM-DD\x20HH:mm:ss','isValid','scheduledat\x20wrong\x20format\x20(YYYY-MM-DD\x20HH:mm:ss)','isNaN','isNumber','includes','email','dateOfBirth','YYYY-MM-DD','firstName','\x20not\x20specified','itemTypeId','description','SystemRow','emit','contact:import:','Abort\x20parser','abort','SystemError','step','CREATE\x20TABLE\x20','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','scheduledat',',\x20scheduledAt\x20=\x20NOW()','each','contact','contactId','orderBy','DROP\x20TABLE\x20','finish','unlink','complete','argv','existsSync','file\x20doesn\x27t\x20exists','binding\x20doesn\x27t\x20exists','ListId\x20is\x20mandatory','map','No\x20agent\x20available','SIGINT','uncaughtException','lodash','papaparse','util','bluebird','moment','squel','../../../mysqldb','../../../config/environment','../../../config/logger','import','redis','defaults','localhost','socket.io-emitter','format','test','select','field','from','join','where','\x20=\x20','.dialCheckDuplicateType\x20IN\x20(','sequelize','query','select\x20*\x20from\x20','length','isNil','phone','push','all','then','error','message','AdditionalPhones','split','filter','CmContactHasItem','update','create','PHONE','inserted','CmContact','cm_contacts.phone','cm_contacts.id','cm_contacts.ListId','cm_contacts.createdAt','cm_contacts.updatedAt','insert','into','ContactId','ListId','priority'];(function(_0x1203f,_0x554bbc){var _0x365f0a=function(_0x3531d0){while(--_0x3531d0){_0x1203f['push'](_0x1203f['shift']());}};_0x365f0a(++_0x554bbc);}(_0x8caf,0x1ab));var _0xf8ca=function(_0x1305e3,_0x43a724){_0x1305e3=_0x1305e3-0x0;var _0x1068e9=_0x8caf[_0x1305e3];return _0x1068e9;};'use strict';var fs=require('fs');var path=require('path');var _=require(_0xf8ca('0x0'));var Papa=require(_0xf8ca('0x1'));var util=require(_0xf8ca('0x2'));var BPromise=require(_0xf8ca('0x3'));var moment=require(_0xf8ca('0x4'));var squel=require(_0xf8ca('0x5'));var Redis=require('ioredis');var db=require(_0xf8ca('0x6'))['db'];var config=require(_0xf8ca('0x7'));var logger=require(_0xf8ca('0x8'))(_0xf8ca('0x9'));config[_0xf8ca('0xa')]=_[_0xf8ca('0xb')](config['redis'],{'host':_0xf8ca('0xc'),'port':0x18eb});var socket=require(_0xf8ca('0xd'))(new Redis(config[_0xf8ca('0xa')]));var stats={'finish':![],'errors':[],'rows':0x0,'affectedRows':0x0};var results=[];var promisesAdditionalPhones=[];var promisesContact=[];var orderBy=0x0;var updatedRows=0x0;var stopped=![];var NOW=moment()[_0xf8ca('0xe')]('YYYY-MM-DD\x20HH:mm:ss');var tempTableName='cm_contacts_temp_'+moment()[_0xf8ca('0xe')]('YYYYMMDDHHmmss');var contactItemTypes=[];var phoneDescriptions=[];var hasAdditionalPhones=![];function isEmail(_0x2f67c5){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))*$/[_0xf8ca('0xf')](_0x2f67c5);}function selectNotIn(_0x2daa43,_0x2be477,_0x5c6c83,_0x1db40d,_0x6f3f7b){return squel[_0xf8ca('0x10')]()[_0xf8ca('0x11')]('phone')[_0xf8ca('0x12')](_0x1db40d)[_0xf8ca('0x13')](_0x2be477,null,_0x2be477+'.id\x20=\x20'+_0x1db40d+'.'+_0x5c6c83)[_0xf8ca('0x14')](_0x1db40d+'.'+_0x5c6c83+_0xf8ca('0x15')+_0x2daa43+'.'+_0x5c6c83)[_0xf8ca('0x14')](_0x2be477+_0xf8ca('0x16')+_0x6f3f7b[_0xf8ca('0x13')]()+')');}function handleAdditionalPhones(){return new Promise(function(_0x45018e,_0xa1044e){promisesAdditionalPhones=[];promisesContact=[];return db[_0xf8ca('0x17')][_0xf8ca('0x18')](_0xf8ca('0x19')+tempTableName)['spread'](function(_0x1d2f82){if(_0x1d2f82!==null){var _0x28bd93=[];for(var _0x7d545c=0x0;_0x7d545c<_0x1d2f82[_0xf8ca('0x1a')];_0x7d545c++){var _0x1d1c35=_0x1d2f82[_0x7d545c];if(!_[_0xf8ca('0x1b')](_0x1d1c35[_0xf8ca('0x1c')])){if(!_[_0xf8ca('0x1b')](_0x1d1c35['AdditionalPhones']))_0x28bd93[_0xf8ca('0x1d')](insertAdditionalPhones(_0x1d1c35));promisesContact[_0xf8ca('0x1d')]({'contact':_0x1d1c35});}}}Promise[_0xf8ca('0x1e')](_0x28bd93)[_0xf8ca('0x1f')](function(){_0x45018e({'val':0x1});});})['catch'](function(_0x1b6cf4){logger[_0xf8ca('0x20')](_0x1b6cf4[_0xf8ca('0x21')]);});});}function insertAdditionalPhones(_0x2ce194){return new Promise(function(_0x18e8da,_0x2eec40){var _0x5df66a=_0x2ce194[_0xf8ca('0x22')];if(_['isNil'](_0x5df66a))_0x2eec40({'val':0x0});else{var _0x18e90b=_0x5df66a[_0xf8ca('0x23')](';');var _0x179a48=[];orderBy=0x0;for(var _0xb06bc2=0x0;_0xb06bc2<_0x18e90b[_0xf8ca('0x1a')];_0xb06bc2++){_0x179a48[_0xf8ca('0x1d')](splitAdditionalPhone(_0x2ce194['id'],_0x18e90b[_0xb06bc2]));}Promise['all'](_0x179a48)['then'](function(){_0x18e8da({'val':_0x18e90b[_0xf8ca('0x1a')]});});}});}function splitAdditionalPhone(_0x1d746a,_0x4962a5){return new Promise(function(_0x55b944,_0x4357a2){var _0x45fc0d=_0x4962a5[_0xf8ca('0x23')](':');var _0x12aefb=_0x45fc0d[0x0];var _0x13bb5b=_0x45fc0d[0x1];if(_0x13bb5b!==''){var _0xe36dce=_0x13bb5b['split']('|');var _0x2f71aa=[];for(var _0x19dfda=0x0;_0x19dfda<_0xe36dce[_0xf8ca('0x1a')];_0x19dfda++){if(_0xe36dce[_0x19dfda]!==''){var _0x366f49=_[_0xf8ca('0x24')](promisesAdditionalPhones,{'contactId':_0x1d746a,'phone':_0xe36dce[_0x19dfda]});if(_0x366f49[_0xf8ca('0x1a')]==0x0){orderBy++;promisesAdditionalPhones[_0xf8ca('0x1d')]({'contactId':_0x1d746a,'contactTypeId':_0x12aefb,'phone':_0xe36dce[_0x19dfda],'orderBy':orderBy});}}}_0x55b944({'ok':0x1});}else _0x55b944({'res':0x0});});}function createAdditionalPhone(_0x5de30d,_0x5d00a3,_0x207e74,_0x873e43){var _0x3a2ce4='';var _0x53b949='';var _0x1ff6c0=_0x207e74['split']('§');_0x3a2ce4=_0x1ff6c0[0x0];if(_0x1ff6c0['length']==0x2)_0x53b949=_0x1ff6c0[0x1];return new Promise(function(_0x90e8a3,_0x22b4a9){return db[_0xf8ca('0x25')]['findOne']({'where':{'CmContactId':_0x5de30d,'item':_0x3a2ce4}})[_0xf8ca('0x1f')](function(_0x38467c){if(_0x38467c){return db['CmContactHasItem'][_0xf8ca('0x26')]({'ItemTypeId':_0x5d00a3,'description':_0x53b949,'OrderBy':_0x873e43},{'where':{'CmContactId':_0x5de30d,'item':_0x3a2ce4}})['then'](function(_0x2bde15){_0x90e8a3({'res':'updated'});});}else{return db['CmContactHasItem'][_0xf8ca('0x27')]({'CmContactId':_0x5de30d,'item':_0x3a2ce4,'ItemTypeId':_0x5d00a3,'description':_0x53b949,'OrderBy':_0x873e43,'ItemClass':_0xf8ca('0x28')})[_0xf8ca('0x1f')](function(_0xc55869){_0x90e8a3({'res':_0xf8ca('0x29')});});}});});}function updateContact(_0x1431ab){return new Promise(function(_0x427850,_0x5679d1){var _0xb7189b=_0x1431ab['id'];delete _0x1431ab['id'];return db[_0xf8ca('0x2a')][_0xf8ca('0x26')](_0x1431ab,{'where':{'id':_0xb7189b}})[_0xf8ca('0x1f')](function(_0xe0165e){updatedRows+=0x1;return db['CmHopper'][_0xf8ca('0x26')]({'phone':_0x1431ab[_0xf8ca('0x1c')]},{'where':{'ContactId':_0xb7189b}})[_0xf8ca('0x1f')](function(_0x1e33dd){_0x427850({'ret':'OK'});});});});}function insertCmHopper(_0x1b5ab9,_0x16eda6,_0x2b60d5,_0x3df3ec,_0x569531){var _0x91e98=[_0xf8ca('0x2b'),'cm_contacts.scheduledat',_0xf8ca('0x2c'),_0xf8ca('0x2d'),_0x16eda6+'.'+_0x3df3ec,_0xf8ca('0x2e'),_0xf8ca('0x2f'),'cm_contacts.priority','cm_contacts.UserId','\x22'+_0x569531+'\x22'];return squel[_0xf8ca('0x30')]()[_0xf8ca('0x31')]('cm_hopper')['fromQuery'](['phone','scheduledat',_0xf8ca('0x32'),_0xf8ca('0x33'),_0x3df3ec,'createdAt','updatedAt',_0xf8ca('0x34'),_0xf8ca('0x35'),_0xf8ca('0x36')],squel[_0xf8ca('0x10')]()['fields'](_0x91e98)[_0xf8ca('0x12')](_0x16eda6)['join'](_0xf8ca('0x37'),null,_0xf8ca('0x38')+_0x16eda6+'.CmListId')['join'](_0x2b60d5,null,_0x2b60d5+_0xf8ca('0x39')+_0x16eda6+'.'+_0x3df3ec)[_0xf8ca('0x14')](_0x16eda6+_0xf8ca('0x3a'),_0x1b5ab9)[_0xf8ca('0x14')]('cm_contacts.createdAt\x20=\x20?',NOW)[_0xf8ca('0x14')](_0xf8ca('0x3b'),selectNotIn(_0x16eda6,_0x2b60d5,_0x3df3ec,_0xf8ca('0x3c'),[_0xf8ca('0x3d'),'\x22onlyIfOpen\x22']))[_0xf8ca('0x14')](_0xf8ca('0x3b'),selectNotIn(_0x16eda6,_0x2b60d5,_0x3df3ec,_0xf8ca('0x3c'),[_0xf8ca('0x3d')])))[_0xf8ca('0x3e')]();}function insertCmHopperBlack(_0x3089ae,_0x148073,_0x9d924,_0x118271){var _0x3c3ab8=[_0xf8ca('0x2b'),_0xf8ca('0x2c'),_0xf8ca('0x2d'),_0x148073+'.'+_0x118271,_0xf8ca('0x2e'),'cm_contacts.updatedAt'];return squel[_0xf8ca('0x30')]()[_0xf8ca('0x31')]('cm_hopper_black')[_0xf8ca('0x3f')]([_0xf8ca('0x1c'),'ContactId',_0xf8ca('0x33'),_0x118271,'createdAt','updatedAt'],squel['select']()[_0xf8ca('0x40')](_0x3c3ab8)[_0xf8ca('0x12')](_0x148073)[_0xf8ca('0x13')](_0xf8ca('0x37'),null,_0xf8ca('0x38')+_0x148073+_0xf8ca('0x41'))['join'](_0x9d924,null,_0x9d924+_0xf8ca('0x39')+_0x148073+'.'+_0x118271)[_0xf8ca('0x14')](_0x148073+_0xf8ca('0x3a'),_0x3089ae)['where'](_0xf8ca('0x42'),NOW)[_0xf8ca('0x14')]('cm_contacts.phone\x20NOT\x20IN\x20(?)',squel[_0xf8ca('0x10')]()[_0xf8ca('0x11')](_0xf8ca('0x1c'))[_0xf8ca('0x12')](_0xf8ca('0x43'))[_0xf8ca('0x14')](_0xf8ca('0x44'),_0x3089ae)['where'](_0x118271+_0xf8ca('0x45'),_0x148073+'.'+_0x118271)))[_0xf8ca('0x3e')]();}function insertCmHopperAdditionalPhones(_0x47e4a4){var _0x4161ab=[_0xf8ca('0x46'),_0xf8ca('0x47'),_0xf8ca('0x48'),_0xf8ca('0x49'),_0xf8ca('0x4a')];return squel[_0xf8ca('0x30')]()[_0xf8ca('0x31')](_0xf8ca('0x4b'))['fromQuery']([_0xf8ca('0x4c'),'phone',_0xf8ca('0x4d'),_0xf8ca('0x4e'),_0xf8ca('0x4f')],squel[_0xf8ca('0x10')]()['fields'](_0x4161ab)[_0xf8ca('0x12')](_0xf8ca('0x3c'))[_0xf8ca('0x13')](_0xf8ca('0x37'),null,_0xf8ca('0x50'))[_0xf8ca('0x13')](_0xf8ca('0x51'),null,_0xf8ca('0x52'))[_0xf8ca('0x14')](_0xf8ca('0x53'),_0x47e4a4)[_0xf8ca('0x14')](_0xf8ca('0x42'),NOW))['toString']();}function insertCmContact(_0x5d1fdb,_0xbf0fd2,_0x3d51d5,_0x200103){var _0x1f4d8f=_['concat'](_[_0xf8ca('0x54')](_0x200103),[_0xf8ca('0x33'),_0xf8ca('0x55'),_0xf8ca('0x4e'),_0xf8ca('0x4f')]);return squel[_0xf8ca('0x30')]()[_0xf8ca('0x31')](_0xf8ca('0x37'))['fromQuery'](_0x1f4d8f,squel[_0xf8ca('0x10')]()[_0xf8ca('0x40')](_0x1f4d8f)[_0xf8ca('0x12')](_0xbf0fd2)[_0xf8ca('0x14')]('('+_0x3d51d5['join'](',')+_0xf8ca('0x56'),squel[_0xf8ca('0x10')]()[_0xf8ca('0x40')](_0x3d51d5)[_0xf8ca('0x12')]('cm_contacts')[_0xf8ca('0x14')]('ListId\x20=\x20?',_0x5d1fdb))[_0xf8ca('0x14')](_0xf8ca('0x57'),squel[_0xf8ca('0x10')]()['field'](_0xf8ca('0x58'),_0xf8ca('0x59'))[_0xf8ca('0x12')](_0xbf0fd2)[_0xf8ca('0x5a')](_0x3d51d5[_0xf8ca('0x13')](','))))[_0xf8ca('0x3e')]();}function handleStop(){logger[_0xf8ca('0x5b')](_0xf8ca('0x5c'));stopped=!![];}function handleUncaughtException(_0x30cc68){logger['error'](_0x30cc68[_0xf8ca('0x21')]);process[_0xf8ca('0x5d')](0x1);}function handleError(_0xab1628,_0x112f48){stats[_0xf8ca('0x5e')][_0xf8ca('0x1d')]({'name':_0x112f48[_0xf8ca('0x5f')],'message':_0x112f48[_0xf8ca('0x21')],'row':_0xab1628});}function handleQuery(_0x1a9407){logger[_0xf8ca('0x5b')](_0x1a9407);return db[_0xf8ca('0x17')]['query'](_0x1a9407)[_0xf8ca('0x60')](function(_0x6bbfec){results[_0xf8ca('0x1d')](_0x6bbfec);})[_0xf8ca('0x61')](function(_0x358435){logger[_0xf8ca('0x20')](_0x358435[_0xf8ca('0x21')]);});}function main(_0x2d69b7,_0x5a9457,_0x2282e6,_0x27d5f5){logger[_0xf8ca('0x5b')](_0xf8ca('0x62'),_0x2d69b7,JSON[_0xf8ca('0x63')](_0x5a9457));process[_0xf8ca('0x64')]('start');var _0x3d2c8b=_0x5a9457[_0xf8ca('0x65')];var _0x3ac321=_[_0xf8ca('0x66')](_0x3d2c8b);var _0x43f6aa=_0x5a9457['socket_timestamp'];var _0x111823=path[_0xf8ca('0x13')](config[_0xf8ca('0x67')],_0xf8ca('0x68'),_0x43f6aa+'.csv');logger[_0xf8ca('0x5b')]('body',_0x5a9457);db[_0xf8ca('0x69')][_0xf8ca('0x6a')]({'raw':!![],'attributes':['id',_0xf8ca('0x6b')]})[_0xf8ca('0x1f')](function(_0x54fc82){for(var _0x4e5393=0x0;_0x4e5393<_0x54fc82['length'];_0x4e5393++){if(_0x54fc82[_0x4e5393][_0xf8ca('0x6b')]in _0x3d2c8b){contactItemTypes[_0xf8ca('0x1d')](_0x54fc82[_0x4e5393]);delete _0x3ac321[_0x54fc82[_0x4e5393][_0xf8ca('0x6b')]];hasAdditionalPhones=!![];}for(var _0x1e4e7b in _0x3d2c8b){if(_0x54fc82[_0x4e5393][_0xf8ca('0x6b')]+_0xf8ca('0x6c')===_0x1e4e7b){phoneDescriptions[_0xf8ca('0x1d')]({'itemTypeId':_0x54fc82[_0x4e5393]['id'],'description':_0x1e4e7b});delete _0x3ac321[_0x1e4e7b];}}}if(hasAdditionalPhones)_0x3ac321['AdditionalPhones']='';var _0x1079df=_[_0xf8ca('0x54')](_0x3ac321)[_0xf8ca('0x13')]();logger[_0xf8ca('0x5b')](_0xf8ca('0x6d'),_0x1079df);fs[_0xf8ca('0x6e')](_0x111823,_0x1079df+'\x0a');Papa[_0xf8ca('0x6f')](fs['createReadStream'](_0x2d69b7),{'header':!![],'skipEmptyLines':!![],'step':function(_0x3b2306,_0x417707){try{for(var _0x2f9375=0x0,_0x13b941=[];_0x2f9375<_0x3b2306[_0xf8ca('0x70')][_0xf8ca('0x1a')];_0x2f9375++){stats[_0xf8ca('0x71')]+=0x1;if(_0x3b2306[_0xf8ca('0x5e')][_0x2f9375]){handleError(_0x3b2306['data'][_0x2f9375],_0x3b2306[_0xf8ca('0x5e')][_0x2f9375]);}else{var _0x4a6247=[];var _0x1dee6e=[];var _0x42379d={};for(var _0x5c39c8 in _0x3d2c8b){let _0x1285ee=contactItemTypes[_0xf8ca('0x72')](_0x4c514f=>_0x4c514f[_0xf8ca('0x6b')]===_0x5c39c8);let _0x48e527=contactItemTypes['find'](_0x5ba366=>_0x5ba366['name']+'_description'===_0x5c39c8);if(_[_0xf8ca('0x1b')](_0x1285ee)&&_[_0xf8ca('0x1b')](_0x48e527)){if(_0x3d2c8b[_0xf8ca('0x73')](_0x5c39c8)){if(_0x3b2306[_0xf8ca('0x70')][_0x2f9375][_0x3d2c8b[_0x5c39c8]]){var _0x378d98=_[_0xf8ca('0x74')](_0x3b2306[_0xf8ca('0x70')][_0x2f9375][_0x3d2c8b[_0x5c39c8]][_0xf8ca('0x75')](/"/g,'\x27'));switch(_0x5c39c8){case'scheduledat':var _0x16a38a=moment(_0x378d98,_0xf8ca('0x76'),!![]);if(_0x16a38a[_0xf8ca('0x77')]()){_0x13b941[_0xf8ca('0x1d')]('\x22'+_0x378d98+'\x22');}else{_0x4a6247[_0xf8ca('0x1d')](_0xf8ca('0x78'));}break;case _0xf8ca('0x34'):var _0x541294=parseInt(_0x378d98);_0x378d98=_[_0xf8ca('0x79')](_0x541294)||_0x541294<0x0||_0x541294>0x4?_0x27d5f5?0x3:0x2:_0x541294;_0x13b941[_0xf8ca('0x1d')]('\x22'+_0x378d98+'\x22');break;case _0xf8ca('0x35'):var _0x402152=parseInt(_0x378d98);if(_[_0xf8ca('0x7a')](_0x402152)&&_[_0xf8ca('0x7b')](_0x2282e6,_0x402152)){_0x13b941[_0xf8ca('0x1d')]('\x22'+_0x402152+'\x22');}else{_0x4a6247['push']('agent\x20not\x20exists');}break;case _0xf8ca('0x7c'):if(isEmail(_0x378d98)){_0x13b941[_0xf8ca('0x1d')]('\x22'+_0x378d98+'\x22');}else{_0x4a6247['push']('email\x20wrong\x20format');}break;case _0xf8ca('0x7d'):var _0x431d8a=moment(_0x378d98,_0xf8ca('0x7e'),!![]);if(_0x431d8a['isValid']()){_0x13b941['push']('\x22'+_0x378d98+'\x22');}else{_0x4a6247[_0xf8ca('0x1d')]('dateOfBirth\x20wrong\x20format\x20(YYYY-MM-DD)');}break;default:_0x13b941[_0xf8ca('0x1d')]('\x22'+_0x378d98+'\x22');}}else{switch(_0x5c39c8){case _0xf8ca('0x7f'):case _0xf8ca('0x1c'):_0x4a6247[_0xf8ca('0x1d')](_0x5c39c8+_0xf8ca('0x80'));break;default:_0x13b941[_0xf8ca('0x1d')]('\x22\x22');}}}}else{var _0x18da9f='';if(!_[_0xf8ca('0x1b')](_0x1285ee)){if(!_0x42379d[_0xf8ca('0x73')](_0x1285ee['id'])){for(var _0x13b081=0x0;_0x13b081<_0x3d2c8b[_0x5c39c8]['length'];_0x13b081++){var _0x378d98=_[_0xf8ca('0x74')](_0x3b2306[_0xf8ca('0x70')][_0x2f9375][_0x3d2c8b[_0x5c39c8][_0x13b081]][_0xf8ca('0x75')](/"/g,'\x27'));var _0x4c71b0=phoneDescriptions[_0xf8ca('0x72')](_0x2c3e0b=>_0x2c3e0b[_0xf8ca('0x81')]===_0x1285ee['id']);if(!_[_0xf8ca('0x1b')](_0x4c71b0)){var _0x718411=_[_0xf8ca('0x74')](_0x3b2306[_0xf8ca('0x70')][_0x2f9375][_0x3d2c8b[_0x4c71b0[_0xf8ca('0x82')]][0x0]][_0xf8ca('0x75')](/"/g,'\x27'));if(!_[_0xf8ca('0x1b')](_0x718411))_0x378d98=_0x378d98+'§'+_0x718411;}if(_0x18da9f=='')_0x18da9f=_0x378d98;else _0x18da9f+='|'+_0x378d98;}_0x1dee6e[_0xf8ca('0x1d')](_0x1285ee['id']+':'+_0x18da9f);_0x42379d[_0x1285ee['id']]=0x1;}}}}if(hasAdditionalPhones){_0x13b941['push']('\x22'+_0x1dee6e[_0xf8ca('0x13')](';')+'\x22');}if(_0x4a6247[_0xf8ca('0x1a')]){handleError(_0x3b2306[_0xf8ca('0x70')][_0x2f9375],{'code':_0xf8ca('0x83'),'message':_0x4a6247[_0xf8ca('0x13')]()});}else{fs['appendFileSync'](_0x111823,_0x13b941['join']()+'\x0a');}_0x13b941=[];}if(!(stats['rows']%0xc8)){socket[_0xf8ca('0x84')](_0xf8ca('0x85')+_0x43f6aa,stats);stats[_0xf8ca('0x5e')]=[];}}if(stopped){logger['info'](_0xf8ca('0x86'));_0x417707[_0xf8ca('0x87')]();}}catch(_0x9361b9){handleError(_0x3b2306[_0xf8ca('0x70')][_0x2f9375],{'code':_0xf8ca('0x88'),'message':_0x9361b9['message']});logger[_0xf8ca('0x20')](_0xf8ca('0x89'),_0x9361b9['message']);}},'complete':function(){try{var _0x4ad235=[];var _0x48ea9e=tempTableName;_0x4ad235[_0xf8ca('0x1d')](_0xf8ca('0x8a')+_0x48ea9e+'\x20LIKE\x20cm_contacts;');logger[_0xf8ca('0x5b')](_0xf8ca('0x8b'),contactItemTypes[_0xf8ca('0x1a')]);var _0x553c21=util['format'](_0xf8ca('0x8c'),_0x111823,_0x48ea9e,_0x1079df,_0x5a9457[_0xf8ca('0x33')],_0x5a9457['CompanyId']||null,NOW,NOW);if(_[_0xf8ca('0x1b')](_0x3d2c8b[_0xf8ca('0x8d')])){_0x553c21+=_0xf8ca('0x8e');}_0x4ad235['push'](_0x553c21);BPromise[_0xf8ca('0x8f')](_0x4ad235,handleQuery)[_0xf8ca('0x1f')](function(_0x1c3fc9){BPromise[_0xf8ca('0x1e')]([handleAdditionalPhones()])[_0xf8ca('0x1f')](function(){_0x4ad235=[];for(var _0x2770f9=0x0;_0x2770f9<promisesContact[_0xf8ca('0x1a')];_0x2770f9++){_0x4ad235[_0xf8ca('0x1d')](updateContact(promisesContact[_0x2770f9][_0xf8ca('0x90')]));}BPromise['all'](_0x4ad235)[_0xf8ca('0x1f')](function(){_0x4ad235=[];for(var _0x11d149=0x0;_0x11d149<promisesAdditionalPhones['length'];_0x11d149++){_0x4ad235['push'](createAdditionalPhone(promisesAdditionalPhones[_0x11d149][_0xf8ca('0x91')],promisesAdditionalPhones[_0x11d149]['contactTypeId'],promisesAdditionalPhones[_0x11d149][_0xf8ca('0x1c')],promisesAdditionalPhones[_0x11d149][_0xf8ca('0x92')]));}BPromise[_0xf8ca('0x1e')](_0x4ad235)[_0xf8ca('0x1f')](function(){_0x4ad235=[];_0x4ad235[_0xf8ca('0x1d')](insertCmHopperAdditionalPhones(_0x5a9457[_0xf8ca('0x33')]));_0x4ad235[_0xf8ca('0x1d')](_0xf8ca('0x93')+_0x48ea9e+';');BPromise[_0xf8ca('0x8f')](_0x4ad235,handleQuery)[_0xf8ca('0x1f')](function(_0x4b3b5b){stats[_0xf8ca('0x94')]=!![];stats['affectedRows']=updatedRows;socket[_0xf8ca('0x84')]('contact:import:'+_0x43f6aa,stats);fs[_0xf8ca('0x95')](_0x2d69b7);fs['unlink'](_0x111823);process[_0xf8ca('0x5d')](0x0);})[_0xf8ca('0x61')](function(_0x1ce1c9){logger[_0xf8ca('0x20')](_0x1ce1c9[_0xf8ca('0x21')]);process[_0xf8ca('0x5d')](0x1);});});});});})[_0xf8ca('0x61')](function(_0x423bb3){logger[_0xf8ca('0x20')](_0x423bb3[_0xf8ca('0x21')]);process[_0xf8ca('0x5d')](0x1);});}catch(_0x3fd626){logger[_0xf8ca('0x20')](_0xf8ca('0x96'),_0x3fd626[_0xf8ca('0x21')]);process[_0xf8ca('0x5d')](0x1);}},'error':function(_0x596306,_0x21d33c,_0x123c9c,_0x39696e){throw new Error(_0x39696e);}});});}function validate(){if(process[_0xf8ca('0x97')]&&process[_0xf8ca('0x97')]['length']<0x4){throw new Error('arguments\x20<filename>\x20<parameters>\x20<agents>');}var _0x2db277=path['join'](config[_0xf8ca('0x67')],_0xf8ca('0x68'),process[_0xf8ca('0x97')][0x2]);if(!fs[_0xf8ca('0x98')](_0x2db277)){throw new Error(_0xf8ca('0x99'));}var _0x5c71c5={};try{_0x5c71c5=JSON[_0xf8ca('0x6f')](process[_0xf8ca('0x97')][0x3]);if(!_0x5c71c5[_0xf8ca('0x65')]){throw new Error(_0xf8ca('0x9a'));}var _0x363776=0x0;if(_0x5c71c5['binding'][_0xf8ca('0x35')]){_0x363776=0x1;}if(!_0x5c71c5[_0xf8ca('0x33')]){throw new Error(_0xf8ca('0x9b'));}}catch(_0x4fa01e){throw new Error('body\x20id\x20mandatory');}var _0x5c7aad=[];try{_0x5c7aad=_[_0xf8ca('0x9c')](JSON[_0xf8ca('0x6f')](process[_0xf8ca('0x97')][0x4]),'id');}catch(_0x4464bd){logger['info'](_0xf8ca('0x9d'));}main(_0x2db277,_0x5c71c5,_0x5c7aad,_0x363776);}validate();process['on'](_0xf8ca('0x9e'),handleStop);process['on'](_0xf8ca('0x9f'),handleUncaughtException);
\ No newline at end of file
index afc5370..c4fa0ce 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0x4964=['agentcompleteAt','holdtime','Talk\x20Time','talktime','***\x20Call\x20Info\x20***','Called\x20Number','Member\x20Name','starttime','Answer\x20Time','answertime','Duration','duration','billableseconds','getSubjects','string','[xCALLY\x20Ticket]','toLowerCase','voice','variable','queue','calleridnum','outbound','push','Outbound\x20Call','getDescriptions','inbound','keyValue','Caller\x20Number','Caller\x20Name','calleridname','Call\x20To','Queue','UniqueId','Date','agentcalledAt','***\x20Agent\x20Info\x20***','Agent\x20Name','destcalleridname','Agent\x20Number','destcalleridnum','***\x20Time\x20Info\x20***','Agent\x20Ring','Agent\x20Connect','Agent\x20Complete'];(function(_0x435150,_0x591cd9){var _0x13b3a4=function(_0x44eb28){while(--_0x44eb28){_0x435150['push'](_0x435150['shift']());}};_0x13b3a4(++_0x591cd9);}(_0x4964,0xe9));var _0x4496=function(_0x2eb5a8,_0x217c25){_0x2eb5a8=_0x2eb5a8-0x0;var _0x27b90e=_0x4964[_0x2eb5a8];return _0x27b90e;};'use strict';exports[_0x4496('0x0')]=function(_0x28c984,_0x226cf5){var _0x51ab0a=[{'type':_0x4496('0x1'),'content':_0x4496('0x2'),'variableName':null}];switch(_0x28c984[_0x4496('0x3')]()){case _0x4496('0x4'):switch(_0x226cf5[_0x4496('0x3')]()){case'inbound':_0x51ab0a['push']({'type':_0x4496('0x5'),'content':'','variableName':_0x4496('0x6')});_0x51ab0a['push']({'type':'variable','content':'','variableName':_0x4496('0x7')});break;case _0x4496('0x8'):_0x51ab0a[_0x4496('0x9')]({'type':_0x4496('0x1'),'content':_0x4496('0xa'),'variableName':null});_0x51ab0a['push']({'type':_0x4496('0x5'),'content':'','variableName':'destcalleridnum'});break;}}return _0x51ab0a;};exports[_0x4496('0xb')]=function(_0x27edbc,_0x535301){var _0x40cac7=[];switch(_0x27edbc[_0x4496('0x3')]()){case'voice':switch(_0x535301[_0x4496('0x3')]()){case _0x4496('0xc'):_0x40cac7=[{'type':'string','content':'***\x20Call\x20Info\x20***','key':null,'keyType':null,'variableName':null},{'type':_0x4496('0xd'),'content':'','key':_0x4496('0xe'),'keyType':_0x4496('0x5'),'variableName':_0x4496('0x7')},{'type':_0x4496('0xd'),'content':'','key':_0x4496('0xf'),'keyType':_0x4496('0x5'),'variableName':_0x4496('0x10')},{'type':_0x4496('0xd'),'content':'','key':_0x4496('0x11'),'keyType':'variable','variableName':'destexten'},{'type':_0x4496('0xd'),'content':'','key':_0x4496('0x12'),'keyType':_0x4496('0x5'),'variableName':'queue'},{'type':'keyValue','content':'','key':_0x4496('0x13'),'keyType':'variable','variableName':'uniqueid'},{'type':_0x4496('0xd'),'content':'','key':_0x4496('0x14'),'keyType':'variable','variableName':_0x4496('0x15')},{'type':_0x4496('0x1'),'content':_0x4496('0x16'),'key':null,'keyType':null,'variableName':null},{'type':'keyValue','content':'','key':_0x4496('0x17'),'keyType':_0x4496('0x5'),'variableName':_0x4496('0x18')},{'type':_0x4496('0xd'),'content':'','key':_0x4496('0x19'),'keyType':'variable','variableName':_0x4496('0x1a')},{'type':_0x4496('0x1'),'content':_0x4496('0x1b'),'key':null,'keyType':null,'variableName':null},{'type':_0x4496('0xd'),'content':'','key':_0x4496('0x1c'),'keyType':_0x4496('0x5'),'variableName':'agentcalledAt'},{'type':'keyValue','content':'','key':_0x4496('0x1d'),'keyType':_0x4496('0x5'),'variableName':'agentconnectAt'},{'type':_0x4496('0xd'),'content':'','key':_0x4496('0x1e'),'keyType':'variable','variableName':_0x4496('0x1f')},{'type':_0x4496('0xd'),'content':'','key':'Hold\x20Time','keyType':_0x4496('0x5'),'variableName':_0x4496('0x20')},{'type':_0x4496('0xd'),'content':'','key':_0x4496('0x21'),'keyType':_0x4496('0x5'),'variableName':_0x4496('0x22')}];break;case _0x4496('0x8'):_0x40cac7=[{'type':'string','content':_0x4496('0x23'),'variableName':null},{'type':'keyValue','content':'','key':_0x4496('0x24'),'keyType':_0x4496('0x5'),'keyContent':'','variableName':'destcalleridnum'},{'type':_0x4496('0xd'),'content':'','key':_0x4496('0x25'),'keyType':_0x4496('0x5'),'keyContent':'','variableName':'membername'},{'type':_0x4496('0xd'),'content':'','key':'UniqueId','keyType':_0x4496('0x5'),'keyContent':'','variableName':'uniqueid'},{'type':'keyValue','content':'','key':_0x4496('0x14'),'keyType':_0x4496('0x5'),'keyContent':'','variableName':_0x4496('0x26')},{'type':_0x4496('0x1'),'content':'***\x20Time\x20Info\x20***'},{'type':_0x4496('0xd'),'content':'','key':_0x4496('0x27'),'keyType':'variable','keyContent':'','variableName':_0x4496('0x28')},{'type':'keyValue','content':'','key':'Complete\x20Time','keyType':'variable','keyContent':'','variableName':'endtime'},{'type':'keyValue','content':'','key':_0x4496('0x29'),'keyType':_0x4496('0x5'),'keyContent':'','variableName':_0x4496('0x2a')},{'type':'keyValue','content':'','key':'Billable\x20Time','keyType':_0x4496('0x5'),'keyContent':'','variableName':_0x4496('0x2b')}];break;}}return _0x40cac7;};
\ No newline at end of file
index 69db076..55b775a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0x6944=['search','parseAdvancedSearchFilter','parseQueryParameters','where','body','contact','default','filter','user','read','tags','checkAccountsRestrictions','then','group','ids','countFilteredInteractions','having','clause','order','forEach','contactName','closed','getFilteredInteractions','rows','catch','tracked','omit','html','phone','fax','mobile','updateUser','lodash','./sql-utils','./utils','skipInteractionsQuery','resolve','getInteractionsQuery'];(function(_0x163d18,_0x5ec69b){var _0x34b6cc=function(_0x40d216){while(--_0x40d216){_0x163d18['push'](_0x163d18['shift']());}};_0x34b6cc(++_0x5ec69b);}(_0x6944,0x1c2));var _0x4694=function(_0x30aafb,_0x15166d){_0x30aafb=_0x30aafb-0x0;var _0x25f84f=_0x6944[_0x30aafb];return _0x25f84f;};'use strict';var _=require(_0x4694('0x0'));var sqlUtils=require(_0x4694('0x1'));var utils=require(_0x4694('0x2'));exports['findAll']=function(_0x565ff8,_0x1d2fa0,_0x3451e5,_0x255f89,_0x39d6a5){var _0x319b33={'count':0x0,'rows':[]};var _0x187173=sqlUtils[_0x4694('0x3')](_0x565ff8,_0x3451e5,_0x1d2fa0);if(_0x187173){return Promise[_0x4694('0x4')](_0x319b33);}var _0x4ba627=sqlUtils[_0x4694('0x5')](_0x565ff8);var _0x1a6610={};return Promise['resolve']()['then'](function(){if(_0x1d2fa0[_0x4694('0x6')]){return sqlUtils[_0x4694('0x7')](_0x1d2fa0['search'],_0x39d6a5);}else{return sqlUtils[_0x4694('0x8')](_0x565ff8,_0x1d2fa0,_0x39d6a5);}})['then'](function(_0x28db20){_0x4ba627[_0x4694('0x9')](_0x28db20[_0x4694('0xa')]);_0x4ba627['where'](_0x28db20[_0x4694('0xb')]);_0x4ba627['where'](_0x28db20[_0x4694('0xc')]);_0x4ba627[_0x4694('0x9')](_0x28db20['fields']);_0x4ba627['where'](_0x28db20[_0x4694('0xd')]);_0x4ba627[_0x4694('0x9')](_0x28db20[_0x4694('0xe')]);_0x4ba627['having'](_0x28db20[_0x4694('0xf')]);_0x1a6610=_0x28db20[_0x4694('0x10')];return sqlUtils[_0x4694('0x11')](_0x565ff8,_0x3451e5,_0x1d2fa0);})[_0x4694('0x12')](function(_0x10d17d){_0x4ba627['where'](_0x10d17d);_0x4ba627[_0x4694('0x13')]('i.id');var _0x541186=_0x1d2fa0[_0x4694('0x6')]?_0x1a6610[_0x4694('0x14')]:_0x1d2fa0['tag'];return sqlUtils[_0x4694('0x15')](_0x4ba627,_0x541186);})[_0x4694('0x12')](function(_0x248902){_0x319b33['count']=_0x248902['length'];if(_0x319b33['count']===0x0){return[];}_0x4ba627[_0x4694('0x16')](_0x1a6610[_0x4694('0x17')]);if(_0x255f89[_0x4694('0x18')]){_0x255f89['order'][_0x4694('0x19')](function(_0x5a2026){var _0x1b18db=_0x5a2026[0x0]===_0x4694('0x1a')?_0x5a2026[0x0]:'i.'+_0x5a2026[0x0];_0x4ba627[_0x4694('0x18')](_0x1b18db,_0x5a2026[0x1]==='DESC'?![]:!![]);if(_0x5a2026[0x0]===_0x4694('0x1b')){var _0x3e406b=sqlUtils['getClosedOrderClause'](_0x565ff8,_0x1d2fa0);_0x4ba627[_0x4694('0x18')](_0x3e406b,_0x5a2026[0x1]==='DESC'?![]:!![]);}});}return sqlUtils[_0x4694('0x1c')](_0x565ff8,_0x4ba627,_0x1d2fa0,_0x255f89);})[_0x4694('0x12')](function(_0x28442a){_0x319b33[_0x4694('0x1d')]=_0x28442a;return _0x319b33;})[_0x4694('0x1e')](function(_0x3062be){throw _0x3062be;});};exports[_0x4694('0x1f')]=function(_0x347cc0,_0x4eb59f){return function(_0x315130,_0x32d39c,_0xd623a4){var _0x856c6b=_0x315130[_0x4694('0xe')];var _0x86affa={};var _0x3750e2=_0x315130['query'];if(_0x86affa){_0x86affa=_['clone'](_0x315130['body']);_0x86affa=_[_0x4694('0x20')](_0x86affa,[_0x4694('0xa'),_0x4694('0x21'),_0x4694('0x22'),_0x4694('0x23'),_0x4694('0x24')]);}utils[_0x4694('0x25')](_0x856c6b,_0x86affa,_0x3750e2,_0x347cc0,_0x4eb59f);_0xd623a4(null);};};
\ No newline at end of file
index 0b99bcb..b6f5443 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0xc36d=['forEach','replace','{OPERATOR}','isNumeric','i.id\x20LIKE\x20?','whatsapp','includes','i.phone\x20LIKE\x20?','fax','i.fax\x20LIKE\x20?','openchannel','i.from\x20LIKE\x20?','isEmail','c.email\x20LIKE\x20?','getFullTextValue','MATCH\x20(me.plainBody,\x20me.subject)\x20AGAINST\x20(?\x20IN\x20BOOLEAN\x20MODE)','CONCAT(c.firstName,\x20\x27\x20\x27,\x20c.lastName)\x20LIKE\x20?','parseSearch','sqlOperator','conditions','name','buildExpression','default','start','value','end','unreadMessages','read','and','operator','$substring','split','contact','MATCH\x20(c.firstName,\x20c.lastName,\x20c.phone,\x20c.mobile,\x20c.fax,\x20c.email)\x20AGAINST\x20(?\x20IN\x20BOOLEAN\x20MODE)','ContactId','type','text','Tag','map','tags','clause','ids','User','user','CONCAT_WS(\x27\x20\x27,\x20o.name,\x20o.fullname)\x20LIKE\x20?','body','plainBody','keys','some','\x20IN\x20?','createdAt','parse','$gte','$lte','null','\x20IS\x20NULL','\x20=\x20?','then','fields','filter','capitalize','Websites','Accounts','agent','i.thirdDisposition','i.secondDisposition','i.disposition','mail','unshift','i.substatus','closed','shift','CONCAT_WS(\x27\x27,\x20','join','Interaction','SELECT','toString','merge','attributes','SUM(me.read\x20=\x200\x20AND\x20me.direction\x20=\x20\x27in\x27)','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.closed','i.closedAt','i.attach','i.lastMsgAt','i.lastMsgDirection','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','i.*','c.firstName','Contact.firstName','c.lastName','Contact.lastName','c.phone','Contact.phone','Contact.mobile','c.fax','Contact.fax','o.fullname','Owner.fullname','o.internal','Owner.internal','GROUP_CONCAT(DISTINCT\x20t.id)','TagIds','limit','offset','sequelize','query','Setting','findOne','enableEmailPreview','all','clone','COUNT(*)','where','t.id\x20IN\x20?','Sequelize','QueryTypes','lodash','squel','../parsers/advancedSearch','../parsers/qs','./update-interaction','updateInteraction','../../mysqldb','getAccountFK','role','search','select','field','color','tools_tags','getInteractionFK','u.id','u.fullname','ui.','from','left_join','users','u.id\x20=\x20ui.UserId','length','getInteractionsTables','interactions','cm_contacts','c.id\x20=\x20i.ContactId\x20AND\x20c.deletedAt\x20IS\x20NULL','o.id\x20=\x20i.UserId','a.id\x20=\x20i.','me.','interactionsTags','it.','\x20=\x20i.id','t.id\x20=\x20it.TagId','expr','getSelectedTags'];(function(_0x58dc25,_0x49b9d5){var _0x21b0a7=function(_0x38a186){while(--_0x38a186){_0x58dc25['push'](_0x58dc25['shift']());}};_0x21b0a7(++_0x49b9d5);}(_0xc36d,0x7d));var _0xdc36=function(_0x1e9d62,_0x25bb8e){_0x1e9d62=_0x1e9d62-0x0;var _0x56c490=_0xc36d[_0x1e9d62];return _0x56c490;};'use strict';var _=require(_0xdc36('0x0'));var squel=require(_0xdc36('0x1'));var as=require(_0xdc36('0x2'));var qs=require(_0xdc36('0x3'));var updateInteraction=require(_0xdc36('0x4'))[_0xdc36('0x5')];var utils=require('./utils');var db=require(_0xdc36('0x6'))['db'];function skipInteractionsQuery(_0x3431f9,_0x53ac17,_0x18c8fe){var _0xbc5223=![];var _0x186c58=utils[_0xdc36('0x7')](_0x3431f9);if(_0x53ac17[_0xdc36('0x8')]==='agent'&&!_0x18c8fe[_0xdc36('0x9')]&&!_0x18c8fe[_0x186c58]){_0xbc5223=!![];}return _0xbc5223;}function getTagsQuery(){return squel[_0xdc36('0xa')]()[_0xdc36('0xb')]('id')[_0xdc36('0xb')]('name')[_0xdc36('0xb')](_0xdc36('0xc'))['from'](_0xdc36('0xd'));}function getUsersQuery(_0x1cb73d,_0x2483bd){var _0x4c0614=utils[_0xdc36('0xe')](_0x1cb73d);var _0x18707d='user_has_'+_0x1cb73d+'_interactions';var _0x3107bc=squel[_0xdc36('0xa')]()[_0xdc36('0xb')](_0xdc36('0xf'))['field'](_0xdc36('0x10'))[_0xdc36('0xb')](_0xdc36('0x11')+_0x4c0614)[_0xdc36('0x12')](_0x18707d,'ui')[_0xdc36('0x13')](_0xdc36('0x14'),'u',_0xdc36('0x15'));if(_0x2483bd[_0xdc36('0x16')]>0x0){_0x3107bc['where'](_0xdc36('0x11')+_0x4c0614+'\x20IN\x20?',_['map'](_0x2483bd,'id'));}return _0x3107bc;}function getInteractionsQuery(_0x59c88f){var _0x64f61e=utils[_0xdc36('0x17')](_0x59c88f);var _0x5a498f=utils[_0xdc36('0x7')](_0x59c88f);var _0x219a73=utils[_0xdc36('0xe')](_0x59c88f);return squel[_0xdc36('0xa')]()[_0xdc36('0x12')](_0x64f61e[_0xdc36('0x18')],'i')['left_join'](_0xdc36('0x19'),'c',_0xdc36('0x1a'))['left_join'](_0xdc36('0x14'),'o',_0xdc36('0x1b'))[_0xdc36('0x13')](_0x64f61e['accounts'],'a',_0xdc36('0x1c')+_0x5a498f)[_0xdc36('0x13')](_0x64f61e['messages'],'me',_0xdc36('0x1d')+_0x219a73+'\x20=\x20i.id')['left_join'](_0x64f61e[_0xdc36('0x1e')],'it',_0xdc36('0x1f')+_0x219a73+_0xdc36('0x20'))[_0xdc36('0x13')](_0xdc36('0xd'),'t',_0xdc36('0x21'));}function getSqlClauses(){var _0x14b595={'body':squel[_0xdc36('0x22')](),'contact':squel['expr'](),'default':squel[_0xdc36('0x22')](),'fields':squel['expr'](),'filter':squel[_0xdc36('0x22')](),'read':squel[_0xdc36('0x22')](),'tags':{'clause':squel[_0xdc36('0x22')](),'ids':null},'user':squel['expr']()};return _0x14b595;}function parseTagParameter(_0xbc4322){var _0x6e3906=squel[_0xdc36('0x22')]();if(_0xbc4322){var _0x525935=utils[_0xdc36('0x23')](_0xbc4322);_0x525935[_0xdc36('0x24')](function(_0x2a596d){_0x6e3906['or']('CONCAT(\x27,\x27,\x20`TagIds`,\x20\x27,\x27)\x20LIKE\x20?','%,'+_0x2a596d+',%');});}return _0x6e3906;}function parseReadParameter(_0x3c39e3){var _0x2dcef7='';if(_0x3c39e3){_0x2dcef7='unreadMessages\x20{OPERATOR}\x200';if(_0x3c39e3==='1'){_0x2dcef7=_0x2dcef7[_0xdc36('0x25')](_0xdc36('0x26'),'=');}else{_0x2dcef7=_0x2dcef7['replace'](_0xdc36('0x26'),'>');}}return _0x2dcef7;}function parseSearchFilter(_0x5bba0b,_0x49bbf2){var _0x57785d=squel[_0xdc36('0x22')]();if(_0x49bbf2){var _0x2f2bb4=_0x49bbf2['replace']('\x5c','\x5c\x5c')[_0xdc36('0x25')](/'/g,'\x27\x27');if(qs[_0xdc36('0x27')](_0x2f2bb4)){_0x57785d['or'](_0xdc36('0x28'),_0x2f2bb4+'%');if(['sms',_0xdc36('0x29')][_0xdc36('0x2a')](_0x5bba0b)){_0x57785d['or'](_0xdc36('0x2b'),_0x2f2bb4+'%');}else if(_0x5bba0b===_0xdc36('0x2c')){_0x57785d['or'](_0xdc36('0x2d'),_0x2f2bb4+'%');}else if(_0x5bba0b===_0xdc36('0x2e')){_0x57785d['or'](_0xdc36('0x2f'),_0x2f2bb4+'%');}}else if(_0x5bba0b==='mail'&&qs[_0xdc36('0x30')](_0x2f2bb4)){_0x57785d['or'](_0xdc36('0x31'),_0x2f2bb4+'%');}else{if(_0x5bba0b==='mail'){_0x57785d['or']('MATCH\x20(i.to,\x20i.subject)\x20AGAINST\x20(?\x20IN\x20BOOLEAN\x20MODE)',qs[_0xdc36('0x32')](_0x2f2bb4))['or'](_0xdc36('0x33'),qs[_0xdc36('0x32')](_0x2f2bb4));}else{if(_0x5bba0b!=='fax'){_0x57785d['or']('MATCH\x20(me.body)\x20AGAINST\x20(?\x20IN\x20BOOLEAN\x20MODE)',qs[_0xdc36('0x32')](_0x2f2bb4));}_0x57785d['or'](_0xdc36('0x34'),_0x2f2bb4+'%');}}}return _0x57785d;}function parseAdvancedSearchFilter(_0x82a0c2,_0x24207a){var _0x302d69=getSqlClauses();var _0x254f24=as[_0xdc36('0x35')](_0x82a0c2);var _0x16303c=_0x254f24[_0xdc36('0x36')];for(var _0x368c75=0x0;_0x368c75<_0x254f24[_0xdc36('0x37')]['length'];_0x368c75++){var _0x1026f5=_0x254f24[_0xdc36('0x37')][_0x368c75];var _0x3e33da='i';var _0x413a00=_['find'](_0x24207a,[_0xdc36('0x38'),_0x1026f5[_0xdc36('0xb')]]);if(_0x413a00){var _0x27e86c=as[_0xdc36('0x39')](_0x3e33da,_0x413a00['type'],_0x1026f5);_0x302d69[_0xdc36('0x3a')][_0x16303c](_0x27e86c['text'],_0x27e86c['value'][_0xdc36('0x3b')],_0x27e86c[_0xdc36('0x3c')][_0xdc36('0x3d')]);}else{switch(_0x1026f5['field']){case _0xdc36('0x3e'):var _0x5abb6a=parseReadParameter(_0x1026f5[_0xdc36('0x3c')]);_0x302d69[_0xdc36('0x3f')][_0xdc36('0x40')](_0x5abb6a);break;case'Contact':if(_0x1026f5[_0xdc36('0x41')]===_0xdc36('0x42')){if(_0x1026f5[_0xdc36('0x3c')][_0xdc36('0x43')]('\x20')['length']>0x1){_0x302d69[_0xdc36('0x44')][_0x16303c](_0xdc36('0x45'),qs[_0xdc36('0x32')](_0x1026f5['value']),null);}else{var _0x51a43a='%'+_0x1026f5[_0xdc36('0x3c')]+'%';_0x302d69[_0xdc36('0x44')][_0x16303c]('c.firstName\x20LIKE\x20?\x20OR\x20c.lastName\x20LIKE\x20?\x20OR\x20c.email\x20LIKE\x20?',_0x51a43a,_0x51a43a,_0x51a43a);}}else{_0x413a00=_['find'](_0x24207a,[_0xdc36('0x38'),_0xdc36('0x46')]);_0x1026f5[_0xdc36('0xb')]=_0xdc36('0x46');_0x27e86c=as[_0xdc36('0x39')](_0x3e33da,_0x413a00[_0xdc36('0x47')],_0x1026f5);_0x302d69[_0xdc36('0x44')][_0x16303c](_0x27e86c[_0xdc36('0x48')],_0x27e86c[_0xdc36('0x3c')][_0xdc36('0x3b')],_0x27e86c[_0xdc36('0x3c')][_0xdc36('0x3d')]);}break;case _0xdc36('0x49'):var _0x17a716=_0x1026f5[_0xdc36('0x3c')][_0xdc36('0x43')](',')[_0xdc36('0x4a')](function(_0x16dcb7){return Number(_0x16dcb7);});var _0x3b4268=parseTagParameter(_0x17a716);_0x302d69[_0xdc36('0x4b')][_0xdc36('0x4c')][_0xdc36('0x40')](_0x3b4268);_0x302d69[_0xdc36('0x4b')][_0xdc36('0x4d')]=_0x17a716;break;case _0xdc36('0x4e'):if(_0x1026f5[_0xdc36('0x41')]==='$substring'){_0x302d69[_0xdc36('0x4f')][_0x16303c](_0xdc36('0x50'),'%'+_0x1026f5['value']+'%',null);}else{_0x413a00=_['find'](_0x24207a,[_0xdc36('0x38'),'UserId']);_0x1026f5[_0xdc36('0xb')]='UserId';_0x27e86c=as[_0xdc36('0x39')](_0x3e33da,_0x413a00[_0xdc36('0x47')],_0x1026f5);_0x302d69[_0xdc36('0x4f')][_0x16303c](_0x27e86c[_0xdc36('0x48')],_0x27e86c[_0xdc36('0x3c')][_0xdc36('0x3b')],_0x27e86c[_0xdc36('0x3c')][_0xdc36('0x3d')]);}break;case _0xdc36('0x51'):case _0xdc36('0x52'):_0x27e86c=as[_0xdc36('0x39')]('me',null,_0x1026f5);_0x302d69[_0xdc36('0x51')][_0x16303c](_0x27e86c[_0xdc36('0x48')],_0x27e86c[_0xdc36('0x3c')][_0xdc36('0x3b')],_0x27e86c[_0xdc36('0x3c')][_0xdc36('0x3d')]);break;}}}return _0x302d69;}function parseModelFields(_0x3399cc,_0x562c86,_0x58eaba){var _0x2263bb=utils[_0xdc36('0x7')](_0x3399cc);var _0x1dda57=squel[_0xdc36('0x22')]();var _0x205f76=_(_0x562c86)[_0xdc36('0x53')]()['map'](function(_0x1ff104){return _[_0xdc36('0x54')](_0x58eaba,[_0xdc36('0x38'),_0x1ff104])?_0x1ff104:undefined;})['compact']()[_0xdc36('0x3c')]();if(_0x205f76[_0xdc36('0x16')]>0x0){_0x205f76[_0xdc36('0x24')](function(_0xa07e3f){if(_0xa07e3f===_0x2263bb){_0x1dda57[_0xdc36('0x40')]('i.'+_0x2263bb+_0xdc36('0x55'),[]['concat'](_0x562c86[_0xa07e3f]));}else if(_0xa07e3f===_0xdc36('0x56')){var _0x31b52c=JSON[_0xdc36('0x57')](_0x562c86[_0xa07e3f])[_0xdc36('0x58')];var _0x2d7201=JSON[_0xdc36('0x57')](_0x562c86[_0xa07e3f])[_0xdc36('0x59')];_0x1dda57[_0xdc36('0x40')]('i.createdAt\x20BETWEEN\x20?\x20AND\x20?',_0x31b52c,_0x2d7201);}else{if(_0x562c86[_0xa07e3f]===_0xdc36('0x5a')){_0x1dda57[_0xdc36('0x40')]('i.'+_0xa07e3f+_0xdc36('0x5b'));}else{_0x1dda57[_0xdc36('0x40')]('i.'+_0xa07e3f+_0xdc36('0x5c'),_0x562c86[_0xa07e3f]);}}});}return _0x1dda57;}function parseQueryParameters(_0x187b00,_0x1e7332,_0xb26cf4){var _0x51d314=getSqlClauses();return Promise['resolve']()[_0xdc36('0x5d')](function(){return parseModelFields(_0x187b00,_0x1e7332,_0xb26cf4);})[_0xdc36('0x5d')](function(_0x5cb6cd){_0x51d314[_0xdc36('0x5e')][_0xdc36('0x40')](_0x5cb6cd);return parseReadParameter(_0x1e7332['read']);})['then'](function(_0x7a62c6){_0x51d314['read'][_0xdc36('0x40')](_0x7a62c6);return parseTagParameter(_0x1e7332['tag']);})[_0xdc36('0x5d')](function(_0x55c0c0){_0x51d314['tags'][_0xdc36('0x4c')]['and'](_0x55c0c0);return parseSearchFilter(_0x187b00,_0x1e7332[_0xdc36('0x5f')]);})[_0xdc36('0x5d')](function(_0x33b3d2){_0x51d314[_0xdc36('0x5f')]=_0x33b3d2;return _0x51d314;});}function checkAccountsRestrictions(_0x396a6a,_0x480937,_0xf47d2a){var _0x379a72=utils[_0xdc36('0x7')](_0x396a6a);var _0x4e62c2='get'+_[_0xdc36('0x60')](_0x396a6a)+(_0x396a6a==='chat'?_0xdc36('0x61'):_0xdc36('0x62'));var _0x3b9df0=squel[_0xdc36('0x22')]();return Promise['resolve']()['then'](function(){if(_0xf47d2a[_0xdc36('0x9')]&&_0x480937[_0xdc36('0x8')]===_0xdc36('0x63')){return _0x480937[_0x4e62c2]({'attributes':['id'],'raw':!![]});}})[_0xdc36('0x5d')](function(_0x22393e){if(_0x22393e){if(_0x22393e[_0xdc36('0x16')]===0x0){_0x3b9df0[_0xdc36('0x40')]('i.'+_0x379a72+_0xdc36('0x5b'));}else{_0x3b9df0[_0xdc36('0x40')]('i.'+_0x379a72+_0xdc36('0x55'),_['map'](_0x22393e,'id'));}}else if(!_0xf47d2a[_0x379a72]){_0x3b9df0[_0xdc36('0x40')]('i.'+_0x379a72+'\x20IS\x20NOT\x20NULL');}})[_0xdc36('0x5d')](function(){return _0x3b9df0;});}function getClosedOrderClause(_0x38fc44,_0x63528){var _0x35adec='';var _0x158a68=[_0xdc36('0x64'),_0xdc36('0x65'),_0xdc36('0x66')];if(_0x38fc44===_0xdc36('0x67')){_0x158a68[_0xdc36('0x68')](_0xdc36('0x69'));}if(_0x63528[_0xdc36('0x6a')]==='0'&&_0x38fc44===_0xdc36('0x67')){_0x35adec=_0xdc36('0x69');}else{if(_0x63528[_0xdc36('0x6a')]==='1'){_0x158a68[_0xdc36('0x6b')]();}_0x35adec=_0xdc36('0x6c')+_0x158a68[_0xdc36('0x6d')](',\x20')+')';}return _0x35adec;}function getFilteredInteractions(_0x414f5b,_0x25444e,_0x5e52e2,_0x327c04){var _0x26aa6a=utils[_0xdc36('0xe')](_0x414f5b);var _0x3f3767=_[_0xdc36('0x60')](_0x414f5b)+_0xdc36('0x6e');var _0x5ae258=[];var _0x2bf7cf=getTagsQuery();var _0xe0935e={'type':db['Sequelize']['QueryTypes'][_0xdc36('0x6f')],'raw':!![]};var _0x271004=[];var _0x9e867d=[];return db['sequelize']['query'](_0x2bf7cf[_0xdc36('0x70')](),_0xe0935e)[_0xdc36('0x5d')](function(_0x50a8ea){_0x5ae258=_['keyBy'](_0x50a8ea,'id');_0xe0935e=_[_0xdc36('0x71')](_0xe0935e,{'model':db[_0x3f3767],'mapToModel':!![],'nest':!![]});if(_0x5e52e2[_0xdc36('0x5e')]){_0x327c04[_0xdc36('0x72')][_0xdc36('0x24')](function(_0x118c99){_0x25444e[_0xdc36('0xb')]('i.'+_0x118c99);});}else{_0x25444e[_0xdc36('0xb')](_0xdc36('0x73'),'unreadMessages');_0x25444e[_0xdc36('0xb')]('a.key','Account.key');_0x25444e['field'](_0xdc36('0x74'),_0xdc36('0x75'));if(_0x414f5b===_0xdc36('0x67')){_0x25444e[_0xdc36('0xb')]('a.email',_0xdc36('0x76'));_0x25444e[_0xdc36('0xb')](_0xdc36('0x77'),_0xdc36('0x78'));_0x25444e[_0xdc36('0xb')]('i.id');_0x25444e['field']('i.createdAt');_0x25444e['field'](_0xdc36('0x79'));_0x25444e[_0xdc36('0xb')](_0xdc36('0x7a'));_0x25444e[_0xdc36('0xb')](_0xdc36('0x7b'));_0x25444e[_0xdc36('0xb')](_0xdc36('0x7c'));_0x25444e[_0xdc36('0xb')](_0xdc36('0x7d'));_0x25444e['field'](_0xdc36('0x7e'));_0x25444e[_0xdc36('0xb')]('i.subject');_0x25444e['field'](_0xdc36('0x66'));_0x25444e['field'](_0xdc36('0x65'));_0x25444e['field'](_0xdc36('0x64'));_0x25444e[_0xdc36('0xb')](_0xdc36('0x69'));_0x25444e['field']('i.to');_0x25444e['field'](_0xdc36('0x7f'));_0x25444e[_0xdc36('0xb')](_0xdc36('0x80'));_0x25444e[_0xdc36('0xb')](_0xdc36('0x81'));}else if(_0x414f5b==='openchannel'){_0x25444e[_0xdc36('0xb')](_0xdc36('0x82'),_0xdc36('0x78'));}else{_0x25444e['field']('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',_0xdc36('0x78'));}if(_0x414f5b!==_0xdc36('0x67')){_0x25444e[_0xdc36('0xb')](_0xdc36('0x83'));}_0x25444e[_0xdc36('0xb')](_0xdc36('0x84'),_0xdc36('0x85'));_0x25444e[_0xdc36('0xb')](_0xdc36('0x86'),_0xdc36('0x87'));_0x25444e['field']('c.email','Contact.email');_0x25444e['field'](_0xdc36('0x88'),_0xdc36('0x89'));_0x25444e[_0xdc36('0xb')]('c.mobile',_0xdc36('0x8a'));_0x25444e[_0xdc36('0xb')](_0xdc36('0x8b'),_0xdc36('0x8c'));_0x25444e['field'](_0xdc36('0x8d'),_0xdc36('0x8e'));_0x25444e[_0xdc36('0xb')](_0xdc36('0x8f'),_0xdc36('0x90'));_0x25444e[_0xdc36('0xb')](_0xdc36('0x91'),_0xdc36('0x92'));}if(_0x327c04[_0xdc36('0x93')]){_0x25444e[_0xdc36('0x93')](_0x327c04[_0xdc36('0x93')]);}if(_0x327c04[_0xdc36('0x94')]){_0x25444e['offset'](_0x327c04[_0xdc36('0x94')]);}return db[_0xdc36('0x95')][_0xdc36('0x96')](_0x25444e[_0xdc36('0x70')](),_0xe0935e);})[_0xdc36('0x5d')](function(_0x58cd17){_0x271004=_0x58cd17;var _0x391c7c=getUsersQuery(_0x414f5b,_0x271004);return db[_0xdc36('0x95')]['query'](_0x391c7c[_0xdc36('0x70')](),_0xe0935e);})[_0xdc36('0x5d')](function(_0x31ba3f){_0x9e867d=_['groupBy'](_0x31ba3f,_0x26aa6a);if(_0x414f5b===_0xdc36('0x67')){return db[_0xdc36('0x97')][_0xdc36('0x98')]({'attributes':[_0xdc36('0x99')],'raw':!![]});}})[_0xdc36('0x5d')](function(_0x2592ba){var _0x365f42=_0x2592ba?_0x2592ba[_0xdc36('0x99')]:undefined;var _0x5b9007=_0x271004[_0xdc36('0x4a')](function(_0x4d36d9){return updateInteraction(_0x4d36d9,_0x5ae258,_0x9e867d,_0x365f42);});return Promise[_0xdc36('0x9a')](_0x5b9007);});}function countFilteredInteractions(_0x3ab971,_0x3d2031){var _0x2634f1=_0x3ab971[_0xdc36('0x9b')]();_0x2634f1[_0xdc36('0xb')](_0xdc36('0x9c'));_0x2634f1['field'](_0xdc36('0x73'),_0xdc36('0x3e'));var _0x312fe0=utils[_0xdc36('0x23')](_0x3d2031);if(!_['isEmpty'](_0x312fe0)){_0x2634f1[_0xdc36('0x9d')](_0xdc36('0x9e'),_0x312fe0);}var _0x21a8e4={'type':db[_0xdc36('0x9f')][_0xdc36('0xa0')]['SELECT'],'raw':!![]};return db['sequelize'][_0xdc36('0x96')](_0x2634f1[_0xdc36('0x70')](),_0x21a8e4);}module['exports']={'checkAccountsRestrictions':checkAccountsRestrictions,'countFilteredInteractions':countFilteredInteractions,'getClosedOrderClause':getClosedOrderClause,'getFilteredInteractions':getFilteredInteractions,'getInteractionsQuery':getInteractionsQuery,'parseAdvancedSearchFilter':parseAdvancedSearchFilter,'parseQueryParameters':parseQueryParameters,'skipInteractionsQuery':skipInteractionsQuery};
\ No newline at end of file
index 2715c4b..9f76ad2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0xdf8a=['catch','updateInteraction','Users','Tags','TagIds','lodash','../../mysqldb','fullname','forEach','waiting','talking','answered','unmanaged','abandoned','total','closed','disposition','UserId','out','-id','then','plainBody','lastMsgText','trimStart'];(function(_0x1d5400,_0x567e3c){var _0x21d9fe=function(_0x23fb75){while(--_0x23fb75){_0x1d5400['push'](_0x1d5400['shift']());}};_0x21d9fe(++_0x567e3c);}(_0xdf8a,0x1cd));var _0xadf8=function(_0x385c76,_0xb97335){_0x385c76=_0x385c76-0x0;var _0x5c8367=_0xdf8a[_0x385c76];return _0x5c8367;};'use strict';var _=require(_0xadf8('0x0'));var db=require(_0xadf8('0x1'))['db'];function getInteractionUsers(_0x11d456,_0x3ac3be){return new Promise(function(_0x2618e9,_0x362e7c){try{var _0x5867cd=[];if(_0x3ac3be[_0x11d456]){_0x5867cd=_0x3ac3be[_0x11d456]['map'](function(_0x4daee6){return{'id':_0x4daee6['id'],'fullname':_0x4daee6[_0xadf8('0x2')]};});}return _0x2618e9(_0x5867cd);}catch(_0xd134bf){_0x362e7c(_0xd134bf);}});}function getInteractionTags(_0x35f5da,_0x8dc709){var _0x5196fe=[];if(_0x35f5da){_0x35f5da['split'](',')[_0xadf8('0x3')](function(_0x19d8e7){_0x5196fe['push'](_0x8dc709[_0x19d8e7]);});}return _0x5196fe;}function updateWaitingCounter(_0x277ca8){if(_0x277ca8['waiting']){_0x277ca8[_0xadf8('0x4')]-=0x1;}}function updateInteractionCounters(_0x509514){_0x509514[_0xadf8('0x4')]=0x0;_0x509514[_0xadf8('0x5')]=0x0;_0x509514[_0xadf8('0x6')]=0x0;_0x509514[_0xadf8('0x7')]=0x0;_0x509514[_0xadf8('0x8')]=0x0;_0x509514[_0xadf8('0x9')]=0x0;if(_0x509514[_0xadf8('0xa')]){if(_0x509514[_0xadf8('0xb')]==='abandoned'){_0x509514[_0xadf8('0x8')]+=0x1;updateWaitingCounter(_0x509514);}if(_0x509514[_0xadf8('0xc')]){_0x509514[_0xadf8('0x6')]+=0x1;if(_0x509514[_0xadf8('0x5')]){_0x509514['talking']-=0x1;}}else{if(_0x509514[_0xadf8('0xb')]){_0x509514[_0xadf8('0x7')]+=0x1;updateWaitingCounter(_0x509514);}}}else{if(!_0x509514['UserId']){_0x509514[_0xadf8('0x4')]+=0x1;}if(_0x509514['UserId']){_0x509514[_0xadf8('0x5')]+=0x1;updateWaitingCounter(_0x509514);}}_0x509514[_0xadf8('0x9')]+=0x1;return _0x509514;}function getLastMessageText(_0x4daf2f){return db['MailMessage']['findOne']({'where':{'$and':[{'MailInteractionId':_0x4daf2f['id']},{'$or':[{'direction':'in'},{'$and':[{'direction':_0xadf8('0xd')},{'secret':![]},{'UserId':{'$ne':null}}]}]}]},'attributes':['plainBody'],'order':_0xadf8('0xe'),'raw':!![]})[_0xadf8('0xf')](function(_0x5d2b0d){if(_0x5d2b0d&&_0x5d2b0d[_0xadf8('0x10')]){_0x4daf2f[_0xadf8('0x11')]=_[_0xadf8('0x12')](_0x5d2b0d[_0xadf8('0x10')]);}return _0x4daf2f;})[_0xadf8('0x13')](function(_0x3a7a25){throw _0x3a7a25;});}exports[_0xadf8('0x14')]=function(_0x5999b6,_0x1a00a8,_0xc4c5eb,_0x244f93){return new Promise(function(_0x2f4d5e,_0x2d667b){return getInteractionUsers(_0x5999b6['id'],_0xc4c5eb)[_0xadf8('0xf')](function(_0x4289fe){_0x5999b6[_0xadf8('0x15')]=_0x4289fe;return getInteractionTags(_0x5999b6['TagIds'],_0x1a00a8);})[_0xadf8('0xf')](function(_0x3fd0ec){_0x5999b6[_0xadf8('0x16')]=_0x3fd0ec;delete _0x5999b6[_0xadf8('0x17')];return updateInteractionCounters(_0x5999b6);})[_0xadf8('0xf')](function(_0x5cd6ce){if(_0x244f93){return getLastMessageText(_0x5cd6ce);}else{return _0x5cd6ce;}})[_0xadf8('0xf')](function(_0x5ae6f0){_0x2f4d5e(_0x5ae6f0);})['catch'](function(_0x27a023){_0x2d667b(_0x27a023);});});};
\ No newline at end of file
index 9d40e14..8784a26 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0x8f9b=['_interactions','_interaction_has_tags','_messages','user_has_','isArray','toLowerCase','[%s]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s','toUpperCase','name','stringify','Interaction','findOne','then','update','info','catch','error','exports','lodash','../../mysqldb','../../config/logger','mail-interactions','fax-interactions','sms-interactions','capitalize','chat','Account','InteractionId','upperFirst','websites','accounts'];(function(_0x273c39,_0x1052e6){var _0x46d6b5=function(_0x44f1fb){while(--_0x44f1fb){_0x273c39['push'](_0x273c39['shift']());}};_0x46d6b5(++_0x1052e6);}(_0x8f9b,0x148));var _0xb8f9=function(_0x1fc1a6,_0x1b13cd){_0x1fc1a6=_0x1fc1a6-0x0;var _0x4c7343=_0x8f9b[_0x1fc1a6];return _0x4c7343;};'use strict';var _=require(_0xb8f9('0x0'));var db=require(_0xb8f9('0x1'))['db'];var loggers={'openchannel':require(_0xb8f9('0x2'))('openchannel-interactions'),'mail':require(_0xb8f9('0x2'))(_0xb8f9('0x3')),'fax':require(_0xb8f9('0x2'))(_0xb8f9('0x4')),'sms':require(_0xb8f9('0x2'))(_0xb8f9('0x5')),'chat':require(_0xb8f9('0x2'))('chat-interactions'),'whatsapp':require(_0xb8f9('0x2'))('whatsapp-interactions')};function getAccountFK(_0x5c968c){return _[_0xb8f9('0x6')](_0x5c968c)+(_0x5c968c===_0xb8f9('0x7')?'Website':_0xb8f9('0x8'))+'Id';}function getInteractionFK(_0x4aa903){return _[_0xb8f9('0x6')](_0x4aa903)+_0xb8f9('0x9');}function getInteractionId(_0x4f058d,_0x37068f,_0x497cb4){if(_0x4f058d&&_0x4f058d[_[_0xb8f9('0xa')](_0x497cb4)+_0xb8f9('0x9')]){return _0x4f058d[_[_0xb8f9('0xa')](_0x497cb4)+'InteractionId'];}else if(_0x4f058d&&_0x4f058d['id']){return _0x4f058d['id'];}else if(_0x37068f&&_0x37068f['id']){return _0x37068f['id'];}else{return'unknown';}}function getInteractionsTables(_0x43dfde){return{'accounts':_0x43dfde+'_'+(_0x43dfde===_0xb8f9('0x7')?_0xb8f9('0xb'):_0xb8f9('0xc')),'interactions':_0x43dfde+_0xb8f9('0xd'),'interactionsTags':_0x43dfde+_0xb8f9('0xe'),'messages':_0x43dfde+_0xb8f9('0xf'),'userInteractions':_0xb8f9('0x10')+_0x43dfde+_0xb8f9('0xd')};}function getSelectedTags(_0x220cea){var _0xde35c4=[];if(_0x220cea){_0xde35c4=Array[_0xb8f9('0x11')](_0x220cea)?_0x220cea:[_0x220cea];}return _0xde35c4;}function log(_0xf24b6a,_0x3dc80c,_0x35e4b8,_0x3b480b,_0x181f74,_0x4a9fef){loggers[_0x181f74[_0xb8f9('0x12')]()][_0xf24b6a](_0xb8f9('0x13'),_0x4a9fef[_0xb8f9('0x14')](),_0x3dc80c?_0x3dc80c['id']:null,_0x3dc80c?_0x3dc80c[_0xb8f9('0x15')]:null,_0x3dc80c?_0x3dc80c['role']:null,getInteractionId(_0x35e4b8,_0x3b480b,_0x181f74),_0x35e4b8?JSON[_0xb8f9('0x16')](_0x35e4b8):'null');}function updateUser(_0x58d263,_0x2642fe,_0x161d9b,_0x205fbe,_0x3ba53c){db[_['upperFirst'](_0x205fbe)+_0xb8f9('0x17')][_0xb8f9('0x18')]({'where':{'id':getInteractionId(_0x2642fe,_0x161d9b,_0x205fbe)}})[_0xb8f9('0x19')](function(_0x2bdc8f){if(_0x2bdc8f){return _0x2bdc8f[_0xb8f9('0x1a')]({'UserId':_0x58d263?_0x58d263['id']:null});}})[_0xb8f9('0x19')](function(_0x4026b0){if(_0x4026b0){log(_0xb8f9('0x1b'),_0x58d263,_0x2642fe,_0x161d9b,_0x205fbe,_0x3ba53c);}})[_0xb8f9('0x1c')](function(){log(_0xb8f9('0x1d'),_0x58d263,_0x2642fe,_0x161d9b,_0x205fbe,_0x3ba53c);});}module[_0xb8f9('0x1e')]={'getAccountFK':getAccountFK,'getInteractionFK':getInteractionFK,'getInteractionsTables':getInteractionsTables,'getSelectedTags':getSelectedTags,'updateUser':updateUser};
\ No newline at end of file
index 90c2034..cb7f9ce 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0x47ea=['utf8','final','parse','hasOwnProperty','use','License','then','count','status','json','users','User','admin','user','composable-middleware','../../mysqldb','../../config/environment','data1','license','split','createDecipher','aes-256-ctr','format','%s:%s:%s','update','base64'];(function(_0x14add3,_0x13ce8d){var _0x4a174f=function(_0x2b3ed7){while(--_0x2b3ed7){_0x14add3['push'](_0x14add3['shift']());}};_0x4a174f(++_0x13ce8d);}(_0x47ea,0x146));var _0xa47e=function(_0x82140,_0x3a9d87){_0x82140=_0x82140-0x0;var _0x2b15a6=_0x47ea[_0x82140];return _0x2b15a6;};'use strict';var crypto=require('crypto');var util=require('util');var compose=require(_0xa47e('0x0'));var db=require(_0xa47e('0x1'))['db'];var config=require(_0xa47e('0x2'));function getValueFromLicense(_0xc4836d,_0x1d4b02){if(_0xc4836d&&_0x1d4b02){if(_0x1d4b02[_0xa47e('0x3')]&&_0x1d4b02[_0xa47e('0x4')]){var _0x87995d=_0x1d4b02[_0xa47e('0x3')];var _0x1508e1=_0x1d4b02[_0xa47e('0x4')];var _0x261ca4=_0x87995d[_0xa47e('0x5')]('-')[0x4];var _0x15bd7c=_0x87995d[_0xa47e('0x5')]('-')[0x0];var _0x450dad=crypto[_0xa47e('0x6')](_0xa47e('0x7'),util[_0xa47e('0x8')](_0xa47e('0x9'),_0x261ca4,_0x87995d,_0x15bd7c));var _0x2067af=_0x450dad[_0xa47e('0xa')](_0x1508e1,_0xa47e('0xb'),_0xa47e('0xc'));_0x2067af+=_0x450dad[_0xa47e('0xd')](_0xa47e('0xc'));var _0x2fcad7=JSON[_0xa47e('0xe')](_0x2067af);return _0x2fcad7[_0xa47e('0xf')](_0xc4836d)?_0x2fcad7[_0xc4836d]:null;}}return null;}function isLimit(_0x41a003,_0x9d9c67,_0x340571,_0x2ae3a9){var _0x51f58f=_0x9d9c67;return compose()[_0xa47e('0x10')](function(_0x2926e1,_0x11ed8a,_0x142943){return db[_0xa47e('0x11')]['findOne']({'where':{'id':0x1},'raw':!![]})[_0xa47e('0x12')](function(_0x4ca64){var _0x2bd106=getValueFromLicense(_0x41a003,_0x4ca64);return _0x2bd106?_0x2bd106:_0x51f58f;})[_0xa47e('0x12')](function(_0x598188){_0x51f58f=_0x598188;return _0x340571[_0xa47e('0x13')](_0x2ae3a9);})[_0xa47e('0x12')](function(_0x50a6b8){if(_0x50a6b8>=_0x51f58f){return _0x11ed8a[_0xa47e('0x14')](0x193)[_0xa47e('0x15')]({'message':util[_0xa47e('0x8')]('Maximum\x20%s\x20limit\x20have\x20been\x20reached',_0x41a003)});}_0x142943();})['catch'](function(_0x597977){_0x142943(_0x597977);});});}function isUserLimit(){return isLimit(_0xa47e('0x16'),0x1,db[_0xa47e('0x17')],{'where':{'$or':[{'role':_0xa47e('0x18')},{'role':_0xa47e('0x19')}]}});}exports['isUserLimit']=isUserLimit;
\ No newline at end of file
index b8cc765..092f34a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0x9f58=['\x20IS\x20NULL)','$in','NOT\x20IN\x20?','$eq','<>\x20?','$endsWith','LIKE\x20?','$lt','<\x20?','>\x20?','<=\x20?','$gte','>=\x20?','$between','BETWEEN\x20?\x20AND\x20?','$notIn','start','$substring','$startsWith','pop','utcOffset','seconds','lodash','moment','parseSearch','sqlOperator','startsWith','[$or]','and','replace','length','split','slice','forEach','shift','match','filter','indexOf','map','conditions','push','buildExpression','DATE','operator','value','includes','$gt','$lte','add','days','format','YYYY-MM-DD','castTo','text','CAST(','field','\x20AS\x20','$ne','\x20OR\x20'];(function(_0x485ddb,_0x479e38){var _0x67b744=function(_0x625dac){while(--_0x625dac){_0x485ddb['push'](_0x485ddb['shift']());}};_0x67b744(++_0x479e38);}(_0x9f58,0x13d));var _0x89f5=function(_0x20a584,_0xe384a5){_0x20a584=_0x20a584-0x0;var _0x4b41a8=_0x9f58[_0x20a584];return _0x4b41a8;};'use strict';var _=require(_0x89f5('0x0'));var moment=require(_0x89f5('0x1'));exports[_0x89f5('0x2')]=function(_0x4ee25e){var _0x25edcd={'conditions':[]};_0x25edcd[_0x89f5('0x3')]=_[_0x89f5('0x4')](_0x4ee25e,_0x89f5('0x5'))?'or':_0x89f5('0x6');var _0x5b7a6b=_0x4ee25e[_0x89f5('0x7')]('[$and]','')[_0x89f5('0x7')]('[$or]','')['split']('||');for(var _0x2598c4=0x0;_0x2598c4<_0x5b7a6b[_0x89f5('0x8')];_0x2598c4++){var _0x8c80a=_0x5b7a6b[_0x2598c4][_0x89f5('0x9')](':=');var _0xd36fb2=_0x8c80a[0x0];var _0x15f756=_0x8c80a[_0x89f5('0xa')](0x1);_0x15f756[_0x89f5('0xb')](function(_0x9803fe){var _0x25cd59=_0x9803fe[_0x89f5('0x9')]('[')[_0x89f5('0xc')]();var _0x524660=_0x9803fe[_0x89f5('0xd')](/\[(.*?)\]/g);_0x524660['forEach'](function(_0x3d0c22){var _0x16c8b5=_0x3d0c22[_0x89f5('0x9')]('[')[_0x89f5('0xe')](function(_0x31d1ef){return _0x31d1ef[_0x89f5('0xf')](']')>-0x1;})[_0x89f5('0x10')](function(_0x348bcb){return _0x348bcb['split'](']')[0x0];})[0x0];_0x25edcd[_0x89f5('0x11')][_0x89f5('0x12')]({'field':_0xd36fb2,'operator':_0x25cd59,'value':_0x16c8b5});});});}return _0x25edcd;};exports[_0x89f5('0x13')]=function(_0x52de90,_0xe3fa59,_0x3f49ea){var _0x5dcab8={};if(_0xe3fa59===_0x89f5('0x14')){if(_0x3f49ea['operator']==='$eq'){_0x3f49ea[_0x89f5('0x15')]='$between';_0x3f49ea[_0x89f5('0x16')]+=','+_0x3f49ea[_0x89f5('0x16')];}else if(_[_0x89f5('0x17')]([_0x89f5('0x18'),_0x89f5('0x19')],_0x3f49ea[_0x89f5('0x15')])){_0x3f49ea[_0x89f5('0x16')]=moment(_0x3f49ea['value'])[_0x89f5('0x1a')](0x1,_0x89f5('0x1b'))[_0x89f5('0x1c')](_0x89f5('0x1d'));}}if(_0x3f49ea[_0x89f5('0x1e')]){_0xe3fa59=_0x3f49ea[_0x89f5('0x1e')];_0x5dcab8[_0x89f5('0x1f')]=_0x89f5('0x20')+_0x52de90+'.'+_0x3f49ea[_0x89f5('0x21')]+_0x89f5('0x22')+_0x3f49ea[_0x89f5('0x1e')]+')\x20'+parseOperator(_0x3f49ea[_0x89f5('0x15')]);}else{_0x5dcab8[_0x89f5('0x1f')]=_0x52de90+'.'+_0x3f49ea['field']+'\x20'+parseOperator(_0x3f49ea[_0x89f5('0x15')]);}if(_[_0x89f5('0x17')]([_0x89f5('0x23'),'$notIn'],_0x3f49ea[_0x89f5('0x15')]))_0x5dcab8[_0x89f5('0x1f')]='('+_0x5dcab8[_0x89f5('0x1f')]+_0x89f5('0x24')+_0x52de90+'.'+_0x3f49ea[_0x89f5('0x21')]+_0x89f5('0x25');_0x5dcab8['value']=parseValue(_0xe3fa59,_0x3f49ea[_0x89f5('0x15')],_0x3f49ea[_0x89f5('0x16')]);return _0x5dcab8;};function parseOperator(_0x704d68){var _0x33a1c1;switch(_0x704d68){case _0x89f5('0x26'):_0x33a1c1='IN\x20?';break;case'$notIn':_0x33a1c1=_0x89f5('0x27');break;case _0x89f5('0x28'):_0x33a1c1='=\x20?';break;case _0x89f5('0x23'):_0x33a1c1=_0x89f5('0x29');break;case'$substring':case'$startsWith':case _0x89f5('0x2a'):_0x33a1c1=_0x89f5('0x2b');break;case _0x89f5('0x2c'):_0x33a1c1=_0x89f5('0x2d');break;case'$gt':_0x33a1c1=_0x89f5('0x2e');break;case _0x89f5('0x19'):_0x33a1c1=_0x89f5('0x2f');break;case _0x89f5('0x30'):_0x33a1c1=_0x89f5('0x31');break;case _0x89f5('0x32'):_0x33a1c1=_0x89f5('0x33');break;}return _0x33a1c1;}function parseValue(_0x2eaa2b,_0x2c4e60,_0x505b67){var _0x637700={'start':undefined,'end':undefined};switch(_0x2c4e60){case _0x89f5('0x26'):case _0x89f5('0x34'):_0x637700[_0x89f5('0x35')]=_0x505b67[_0x89f5('0x9')](',');break;case _0x89f5('0x36'):_0x637700[_0x89f5('0x35')]='%'+_0x505b67+'%';break;case _0x89f5('0x37'):_0x637700['start']=_0x505b67+'%';break;case _0x89f5('0x2a'):_0x637700['start']='%'+_0x505b67;break;case'$between':var _0x51b27b=_0x505b67['split'](',');var _0x505b67=_0x51b27b[_0x89f5('0xc')]();var _0x472da8=_0x51b27b[_0x89f5('0x38')]();if(_0x2eaa2b===_0x89f5('0x14')){_0x505b67=moment(_0x505b67)['utcOffset'](0x0,!![])[_0x89f5('0x1c')]();_0x472da8=moment(_0x472da8)[_0x89f5('0x39')](0x0,!![])[_0x89f5('0x1a')](0x17,'hours')[_0x89f5('0x1a')](0x3b,'minutes')[_0x89f5('0x1a')](0x3b,_0x89f5('0x3a'))[_0x89f5('0x1c')]();}_0x637700={'start':_0x505b67,'end':_0x472da8};break;default:_0x637700[_0x89f5('0x35')]=_0x505b67;break;}return _0x637700;}
\ No newline at end of file
index 3ac1bb8..0b6d6b4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0xe015=['cast','unsigned','substr','DESC','ASC','omit','isArray','length','isObject','isString','hasOwnProperty','isNumeric','getFullTextValue','forEach','replace','join','getOptions','query','$id','model','intersection','attributes','nolimit','offset','order','where','pick','filter','columns','name','value','VIRTUAL','lower','merge','options','lodash','sequelize','moment','keys','includes','parse','fields','split','filters','isEmpty','find','type','$gte','format','YYYY-MM-DD','utc','uniqueid','limit','sort','map','priority'];(function(_0x14add3,_0x13ce8d){var _0x4a174f=function(_0x2b3ed7){while(--_0x2b3ed7){_0x14add3['push'](_0x14add3['shift']());}};_0x4a174f(++_0x13ce8d);}(_0xe015,0x13b));var _0x5e01=function(_0x2be8c2,_0x14a4b5){_0x2be8c2=_0x2be8c2-0x0;var _0x97f531=_0xe015[_0x2be8c2];return _0x97f531;};'use strict';var _=require(_0x5e01('0x0'));var sequelize=require(_0x5e01('0x1'));var moment=require(_0x5e01('0x2'));var LIMIT_VALUE=0xfa;function hasSequelizeOperator(_0x5811ae){var _0x51f689=['ne'];try{var _0x46ed0d=JSON['parse'](_0x5811ae);var _0x2136cf=Object[_0x5e01('0x3')](_0x46ed0d)[0x0];return _0x51f689[_0x5e01('0x4')](_0x2136cf);}catch(_0x241c0e){return![];}}function getOperatorValue(_0x4ac3f1){var _0x1814cb=JSON[_0x5e01('0x5')](_0x4ac3f1);var _0x4de678=Object['keys'](_0x1814cb)[0x0];var _0x414f73=_0x1814cb[_0x4de678];return{['$'+_0x4de678]:_0x414f73};}exports[_0x5e01('0x6')]=function(_0x1420c2){var _0x40d31f=null;if(_0x1420c2){_0x40d31f=_0x1420c2[_0x5e01('0x7')](',');}return _0x40d31f;};exports[_0x5e01('0x8')]=function(_0x5b3938,_0x1c4a44){var _0x502518={};if(!_[_0x5e01('0x9')](_0x5b3938)){_['forOwn'](_0x5b3938,function(_0x3c2ea2,_0x406b26){try{if(_0x1c4a44){var _0x553a53=_[_0x5e01('0xa')](_0x1c4a44,{'name':_0x406b26})||{};if(hasSequelizeOperator(_0x3c2ea2)){_0x502518[_0x406b26]=getOperatorValue(_0x3c2ea2);}else if(_0x553a53[_0x5e01('0xb')]==='DATE'&&_['isPlainObject'](_0x3c2ea2)){var _0x3d0b04=JSON[_0x5e01('0x5')](_0x3c2ea2);var _0x468901={'$gte':moment(moment(_0x3d0b04[_0x5e01('0xc')])[_0x5e01('0xd')](_0x5e01('0xe')))['utc']()[_0x5e01('0xd')](),'$lte':moment(moment(_0x3d0b04['$lte'])['format'](_0x5e01('0xe')))[_0x5e01('0xf')]()['subtract'](0x1,'s')[_0x5e01('0xd')]()};_0x502518[_0x406b26]=_0x468901;}else if(_0x553a53['name']===_0x5e01('0x10')){_0x502518[_0x406b26]=_0x3c2ea2;}else{_0x502518[_0x406b26]=_['isArray'](_0x3c2ea2)?_0x3c2ea2:JSON[_0x5e01('0x5')](_0x3c2ea2);}}else{_0x502518[_0x406b26]=_['isArray'](_0x3c2ea2)?_0x3c2ea2:JSON[_0x5e01('0x5')](_0x3c2ea2);}}catch(_0x5eda1d){_0x502518[_0x406b26]=_0x3c2ea2['split'](',');}});}return _0x502518;};exports[_0x5e01('0x11')]=function(_0x42b4f8){_0x42b4f8=parseInt(_0x42b4f8,0xa);if(!_0x42b4f8||_0x42b4f8<0x0){_0x42b4f8=LIMIT_VALUE;}return _0x42b4f8;};exports['offset']=function(_0xce3f3f){_0xce3f3f=parseInt(_0xce3f3f,0xa);if(!_0xce3f3f||_0xce3f3f<0x0){_0xce3f3f=0x0;}return _0xce3f3f;};exports[_0x5e01('0x12')]=function(_0x36b4a7){var _0x45e543,_0x396cf3=null;if(_0x36b4a7){_0x45e543=_0x36b4a7[_0x5e01('0x7')](',');_0x396cf3=_[_0x5e01('0x13')](_0x45e543,function(_0x153eb1){if(_0x153eb1['indexOf']('-')===0x0){return[_0x153eb1===_0x5e01('0x14')?sequelize[_0x5e01('0x15')](sequelize['col'](_0x5e01('0x14')),_0x5e01('0x16')):_0x153eb1[_0x5e01('0x17')](0x1),_0x5e01('0x18')];}else{return[_0x153eb1===_0x5e01('0x14')?sequelize[_0x5e01('0x15')](sequelize['col'](_0x5e01('0x14')),_0x5e01('0x16')):_0x153eb1,_0x5e01('0x19')];}});}return _0x396cf3;};exports[_0x5e01('0x1a')]=function(_0x514ade,_0x557f06){if(_[_0x5e01('0x9')](_0x514ade)){return _0x514ade;}if(_[_0x5e01('0x1b')](_0x514ade)){for(var _0x4f94d0=0x0;_0x4f94d0<_0x514ade[_0x5e01('0x1c')];_0x4f94d0+=0x1){_0x514ade[_0x4f94d0]=this[_0x5e01('0x1a')](_0x514ade[_0x4f94d0],_0x557f06);}return _0x514ade;}if(!_[_0x5e01('0x1d')](_0x514ade)){return _0x514ade;}if(_[_0x5e01('0x1e')](_0x557f06)){_0x557f06=[_0x557f06];}if(!_['isArray'](_0x557f06)){return _0x514ade;}for(var _0x4d0ebe=0x0;_0x4d0ebe<_0x557f06[_0x5e01('0x1c')];_0x4d0ebe+=0x1){_['unset'](_0x514ade,_0x557f06[_0x4d0ebe]);}for(var _0x14b9f5 in _0x514ade){if(_0x514ade[_0x5e01('0x1f')](_0x14b9f5)){_0x514ade[_0x14b9f5]=this[_0x5e01('0x1a')](_0x514ade[_0x14b9f5],_0x557f06);}}return _0x514ade;};exports[_0x5e01('0x20')]=function(_0x592a61){return _0x592a61['match'](RegExp('^[+]?[0-9]*$'))?!![]:![];};exports['isEmail']=function(_0x350ab4){return _0x350ab4['match'](/^\S+@\S+$/)?!![]:![];};exports[_0x5e01('0x21')]=function(_0x37b32a){var _0xc6d3c2=[];_0x37b32a['split'](/[ ,]+/)[_0x5e01('0x22')](function(_0x36d7a8){_0x36d7a8=_0x36d7a8[_0x5e01('0x23')](/([^:]")"+/g,'$1');_0x36d7a8='+'+_0x36d7a8+'*';var _0x33b3b3=/[ `!@#$%^&*()_\-?~]/;if(_0x36d7a8['match'](_0x33b3b3))_0x36d7a8='\x22'+_0x36d7a8+'\x22';_0xc6d3c2['push'](_0x36d7a8);});return _0xc6d3c2[_0x5e01('0x24')]('\x20');};exports[_0x5e01('0x25')]=function(_0x308649,_0x207107,_0x350659){var _0x1a0ebe={},_0x2bc93b={};if(_0x207107[_0x5e01('0x26')][_0x5e01('0x27')]){_0x207107[_0x5e01('0x26')]['id']=_0x207107[_0x5e01('0x26')][_0x5e01('0x27')];delete _0x207107['query'][_0x5e01('0x27')];}_0x1a0ebe[_0x5e01('0x28')]=_[_0x5e01('0x13')](_0x308649,'name');_0x1a0ebe[_0x5e01('0x26')]=_[_0x5e01('0x3')](_0x207107['query']);_0x1a0ebe[_0x5e01('0x8')]=_[_0x5e01('0x29')](_0x1a0ebe[_0x5e01('0x28')],_0x1a0ebe['query']);_0x2bc93b[_0x5e01('0x2a')]=_[_0x5e01('0x29')](_0x1a0ebe[_0x5e01('0x28')],this[_0x5e01('0x6')](_0x207107[_0x5e01('0x26')][_0x5e01('0x6')]));_0x2bc93b[_0x5e01('0x2a')]=_0x2bc93b[_0x5e01('0x2a')][_0x5e01('0x1c')]?_0x2bc93b[_0x5e01('0x2a')]:_0x1a0ebe[_0x5e01('0x28')];if(!_0x207107[_0x5e01('0x26')][_0x5e01('0x1f')](_0x5e01('0x2b'))){_0x2bc93b[_0x5e01('0x11')]=this['limit'](_0x207107[_0x5e01('0x26')]['limit']);_0x2bc93b['offset']=this[_0x5e01('0x2c')](_0x207107[_0x5e01('0x26')][_0x5e01('0x2c')]);}_0x2bc93b[_0x5e01('0x2d')]=this[_0x5e01('0x12')](_0x207107['query'][_0x5e01('0x12')]);_0x2bc93b[_0x5e01('0x2e')]=this['filters'](_[_0x5e01('0x2f')](_0x207107[_0x5e01('0x26')],_0x1a0ebe[_0x5e01('0x8')]),_0x308649);if(_0x207107['query'][_0x5e01('0x30')]){var _0xfed2d2=_0x308649;var _0x503c8c=_0x207107[_0x5e01('0x26')][_0x5e01('0x30')];if(typeof _0x503c8c==='object'){_0xfed2d2=_['filter'](_0x308649,function(_0xce5f1b){return _['includes'](_0x503c8c[_0x5e01('0x31')],_0xce5f1b[_0x5e01('0x32')]);});_0x503c8c=_0x503c8c[_0x5e01('0x33')];}_0x2bc93b[_0x5e01('0x2e')]=_['merge'](_0x2bc93b[_0x5e01('0x2e')],{'$or':_[_0x5e01('0x13')](_0xfed2d2,function(_0x23275f){if(_0x23275f[_0x5e01('0xb')]!==_0x5e01('0x34')){if(_0x350659){return sequelize[_0x5e01('0x2e')](sequelize['fn'](_0x5e01('0x35'),sequelize['col'](_0x23275f[_0x5e01('0x32')])),{'$like':sequelize['fn'](_0x5e01('0x35'),'%'+_0x207107[_0x5e01('0x26')][_0x5e01('0x30')]+'%')});}else{var _0x1fb95f={};_0x1fb95f[_0x23275f['name']]={'$like':'%'+_0x207107[_0x5e01('0x26')][_0x5e01('0x30')]+'%'};return _0x1fb95f;}}})});}_0x2bc93b=_[_0x5e01('0x36')]({},_0x2bc93b,_0x207107[_0x5e01('0x37')]);return _0x2bc93b;};
\ No newline at end of file
index 2082f2e..dc5a62e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0xdeea=['client','http','chatPause','faxPause','mailPause','openchannelPause','smsPause','voicePause','whatsappPause','filter','length','unavailable','ringing','isNil','idle','voiceStatus','pause','every','chatStatus','faxStatus','mailStatus','openchannelStatus','smsStatus','request','then','error','Unable\x20to\x20retrieve\x20RPC\x20agents\x20(AMI)','result','Unable\x20to\x20retrieve\x20RPC\x20agents\x20(Routing)','catch','unknown','*pause','busy','getAgentStatus','isArray','startCase','Queue','findOne','flatten','map','uniq','value','getAgentIdsByQueues','includes','getAgentIdsByStatus','resolve','User','name','fullname','pauseType','find','merge','getSortedAgentsIdsByStatus','fields','globalStatus','order','ASC','substring','internal','sort','toLowerCase','DESC','sortAgentsByStatus','userpic','lastLoginAt','lastPauseAt','address','chatCapacity','openchannelCapacity','mailCapacity','whatsappCapacity','faxCapacity','chatCurrentCapacity','openchannelCurrentCapacity','mailCurrentCapacity','smsCurrentCapacity','whatsappCurrentCapacity','faxCurrentCapacity','chatStatusTime','openchannelStatusTime','smsStatusTime','whatsappStatusTime','voiceStatusTime','queue','destconnectedlinenum','screenrecording','phoneBarEnableScreenRecordingByAgent','phoneBarEnableAutomaticScreenRecording','routealias','online','pick','filterAgentAttributes','lodash','jayson/promise','../../mysqldb'];(function(_0x1e370a,_0x47dcd5){var _0x468fe8=function(_0x1a818b){while(--_0x1a818b){_0x1e370a['push'](_0x1e370a['shift']());}};_0x468fe8(++_0x47dcd5);}(_0xdeea,0x11a));var _0xadee=function(_0x5a9c0c,_0x4ec485){_0x5a9c0c=_0x5a9c0c-0x0;var _0x53c77d=_0xdeea[_0x5a9c0c];return _0x53c77d;};'use strict';var _=require(_0xadee('0x0'));var jayson=require(_0xadee('0x1'));var db=require(_0xadee('0x2'))['db'];var amiClient=jayson[_0xadee('0x3')][_0xadee('0x4')]({'port':0x232a});var routingClient=jayson[_0xadee('0x3')][_0xadee('0x4')]({'port':0x232c});function isAgentPaused(_0x299599,_0x634fd5){var _0x19ccf0=[_0x299599[_0xadee('0x5')],_0x299599[_0xadee('0x6')],_0x299599[_0xadee('0x7')],_0x299599[_0xadee('0x8')],_0x299599[_0xadee('0x9')],_0x299599[_0xadee('0xa')],_0x299599[_0xadee('0xb')]];if(!_0x634fd5)return _['every'](_0x19ccf0);var _0x7e6629=_[_0xadee('0xc')](_0x19ccf0);return _0x7e6629[_0xadee('0xd')]>0x0&&_0x7e6629[_0xadee('0xd')]<_0x19ccf0[_0xadee('0xd')]?!![]:![];}function isIdle(_0x3af88b){return _0x3af88b==='idle'||_0x3af88b==='unknown'||_0x3af88b===_0xadee('0xe')||_0x3af88b===_0xadee('0xf')||_[_0xadee('0x10')](_0x3af88b);}function isAgentIdle(_0x3594be){if(_0x3594be['voiceStatus']!==_0xadee('0x11')&&_0x3594be[_0xadee('0xa')]){_0x3594be[_0xadee('0x12')]=_0xadee('0x13');return![];}return _[_0xadee('0x14')]([_0x3594be[_0xadee('0x15')],_0x3594be[_0xadee('0x16')],_0x3594be[_0xadee('0x17')],_0x3594be[_0xadee('0x18')],_0x3594be[_0xadee('0x19')],_0x3594be[_0xadee('0x12')],_0x3594be['whatsappStatus']],isIdle);}function getRealtimeAgents(){return amiClient[_0xadee('0x1a')]('Agents',{})[_0xadee('0x1b')](function(_0x517be4){if(_0x517be4[_0xadee('0x1c')]){throw new Error(_0xadee('0x1d'));}var _0x40eb65=_0x517be4[_0xadee('0x1e')];return routingClient[_0xadee('0x1a')]('Agents',{})[_0xadee('0x1b')](function(_0x17220c){if(_0x17220c[_0xadee('0x1c')]){throw new Error(_0xadee('0x1f'));}var _0x23b0f1=_0x17220c[_0xadee('0x1e')];return _['merge']({},_0x40eb65,_0x23b0f1);});})[_0xadee('0x20')](function(_0x1bc7a4){throw _0x1bc7a4;});}exports['getRealtimeAgents']=getRealtimeAgents;function getAgentStatus(_0x5cdb85){var _0x575ea4=_0xadee('0x21');if(isAgentPaused(_0x5cdb85))_0x575ea4=_0xadee('0x13');else if(isAgentPaused(_0x5cdb85,!![]))_0x575ea4=_0xadee('0x22');else if(isAgentIdle(_0x5cdb85))_0x575ea4=_0xadee('0x11');else _0x575ea4=_0xadee('0x23');return _0x575ea4;}exports[_0xadee('0x24')]=getAgentStatus;function getAgentIdsByQueues(_0x1b9fa0,_0x3e23dd){var _0x2c579e=_[_0xadee('0x25')](_0x1b9fa0)?_0x1b9fa0:[_0x1b9fa0];var _0x1ef696=_[_0xadee('0x26')](_0x3e23dd)+_0xadee('0x27');var _0x4c6001=_['map'](_0x2c579e,function(_0xef71c3){return db[_0x1ef696][_0xadee('0x28')]({'where':{'id':_0xef71c3}})[_0xadee('0x1b')](function(_0xabf754){if(!_0xabf754)return[];return _0xabf754['getAgents']({'attributes':['id'],'raw':!![]});});});return Promise['all'](_0x4c6001)[_0xadee('0x1b')](function(_0x4d3107){var _0x37fb9f=_(_0x4d3107)[_0xadee('0x29')]()[_0xadee('0x2a')]('id')[_0xadee('0x2b')]()[_0xadee('0x2c')]();return _0x37fb9f;});}exports[_0xadee('0x2d')]=getAgentIdsByQueues;function getAgentIdsByStatus(_0x103dda,_0x297a55,_0x536ea8){try{if(_0x297a55[_0xadee('0xd')]>0x0){_0x103dda=_0x103dda['filter'](function(_0x4215d4){return _0x297a55[_0xadee('0x2e')](_0x4215d4['id']);});}var _0x2125eb=_0x103dda[_0xadee('0xc')](function(_0x11ee6a){var _0x4c3f6d=_0xadee('0x23');if(isAgentIdle(_0x11ee6a)){_0x4c3f6d=_0xadee('0x11');}return _0x4c3f6d===_0x536ea8;});return _[_0xadee('0x2a')](_0x2125eb,'id');}catch(_0x26127d){throw _0x26127d;}}exports[_0xadee('0x2f')]=getAgentIdsByStatus;function getSortedAgentsIdsByStatus(_0x2c6434,_0x9eab1d,_0x3decba){return Promise[_0xadee('0x30')]()[_0xadee('0x1b')](function(){if(_0x9eab1d[_0xadee('0xd')]>0x0){_0x2c6434=_0x2c6434['filter'](function(_0x59098a){return _0x9eab1d['includes'](_0x59098a['id']);});}return _0x2c6434;})[_0xadee('0x1b')](function(){return db[_0xadee('0x31')]['findAll']({'attributes':['id',_0xadee('0x32'),_0xadee('0x33'),'chatPause',_0xadee('0x6'),'mailPause',_0xadee('0x8'),_0xadee('0x9'),'voicePause',_0xadee('0xb'),_0xadee('0x34')],'where':{'id':{'$in':_[_0xadee('0x2a')](_0x2c6434,'id')}},'raw':!![]});})['then'](function(_0x53c162){return _0x53c162['map'](function(_0x15ad99){var _0x388f3a=_[_0xadee('0x35')](_0x2c6434,['id',_0x15ad99['id']]);var _0x22631d=filterAgentAttributes(_0x388f3a);_[_0xadee('0x36')](_0x15ad99,_0x22631d);_0x15ad99['globalStatus']=getAgentStatus(_0x15ad99);return _0x15ad99;});})[_0xadee('0x1b')](function(_0x195934){var _0x532192=sortAgentsByStatus(_0x195934,_0x3decba);return _[_0xadee('0x2a')](_0x532192,'id');})[_0xadee('0x20')](function(_0x315e68){throw _0x315e68;});}exports[_0xadee('0x37')]=getSortedAgentsIdsByStatus;function getUpdatedSortOptions(_0x474fdd){var _0x51b1aa={'fields':[],'order':null};var _0x1690d7=_0x474fdd['split'](',');_0x51b1aa[_0xadee('0x38')]=_[_0xadee('0xc')](_0x1690d7,function(_0x56ce28){if(!_0x56ce28[_0xadee('0x2e')](_0xadee('0x39'))){return!![];}_0x51b1aa[_0xadee('0x3a')]=_['startsWith'](_0x56ce28,'-')?'DESC':_0xadee('0x3b');return![];});return _0x51b1aa;}exports['getUpdatedSortOptions']=getUpdatedSortOptions;function validateSortParameter(_0x3724a0){if(_0x3724a0[_0xadee('0x2e')](_0xadee('0x33'))&&!_0x3724a0[_0xadee('0x2e')]('internal')){var _0x551ce6=_0x3724a0[_0xadee('0x3c')](0x0,_0x3724a0['indexOf']('fullname'));_0x3724a0+=','+_0x551ce6+_0xadee('0x3d');}return _0x3724a0;}exports['validateSortParameter']=validateSortParameter;function sortAgentsByStatus(_0x45d3c1,_0x5d9d65){var _0x3a9a8d=_0x45d3c1[_0xadee('0x3e')](function(_0x4345ca,_0x42b9d7){if(_0x4345ca[_0xadee('0x39')]===_0x42b9d7[_0xadee('0x39')]){if(_0x4345ca[_0xadee('0x39')]===_0xadee('0x13')){if(_0x5d9d65==='DESC'){return(_0x4345ca[_0xadee('0x34')]||'')<(_0x42b9d7['pauseType']||'')||_0x4345ca['fullname']['toLowerCase']()>_0x42b9d7[_0xadee('0x33')][_0xadee('0x3f')]()?0x1:-0x1;}else{return(_0x4345ca[_0xadee('0x34')]||'')<(_0x42b9d7[_0xadee('0x34')]||'')||_0x4345ca[_0xadee('0x33')]['toLowerCase']()>_0x42b9d7['fullname'][_0xadee('0x3f')]()?-0x1:0x1;}}else{if(_0x5d9d65===_0xadee('0x40')){return _0x4345ca[_0xadee('0x33')][_0xadee('0x3f')]()<_0x42b9d7[_0xadee('0x33')][_0xadee('0x3f')]()?0x1:-0x1;}else{return _0x4345ca['fullname'][_0xadee('0x3f')]()<_0x42b9d7[_0xadee('0x33')][_0xadee('0x3f')]()?-0x1:0x1;}}}else{if(_0x5d9d65==='DESC'){return _0x4345ca[_0xadee('0x39')]<_0x42b9d7[_0xadee('0x39')]?0x1:-0x1;}else{return _0x4345ca[_0xadee('0x39')]<_0x42b9d7[_0xadee('0x39')]?-0x1:0x1;}}});return _0x3a9a8d;}exports[_0xadee('0x41')]=sortAgentsByStatus;function filterAgentAttributes(_0xcf859c){var _0x1b070a=[_0xadee('0x42'),'online',_0xadee('0x43'),_0xadee('0x44'),_0xadee('0x34'),_0xadee('0x44'),_0xadee('0x3d'),_0xadee('0x45'),_0xadee('0x5'),_0xadee('0x8'),_0xadee('0x7'),_0xadee('0x9'),_0xadee('0xb'),_0xadee('0x6'),_0xadee('0xa'),_0xadee('0x46'),_0xadee('0x47'),_0xadee('0x48'),'smsCapacity',_0xadee('0x49'),_0xadee('0x4a'),_0xadee('0x4b'),_0xadee('0x4c'),_0xadee('0x4d'),_0xadee('0x4e'),_0xadee('0x4f'),_0xadee('0x50'),_0xadee('0x15'),_0xadee('0x18'),_0xadee('0x17'),_0xadee('0x19'),'whatsappStatus',_0xadee('0x16'),_0xadee('0x12'),_0xadee('0x51'),_0xadee('0x52'),'mailStatusTime',_0xadee('0x53'),_0xadee('0x54'),'faxStatusTime',_0xadee('0x55'),_0xadee('0x56'),_0xadee('0x57'),_0xadee('0x58'),_0xadee('0x59'),_0xadee('0x5a'),_0xadee('0x5b')];var _0x3219f8=[_0xadee('0x5'),_0xadee('0x8'),_0xadee('0x7'),'smsPause','whatsappPause','faxPause',_0xadee('0xa'),_0xadee('0x5c')];var _0x26b8fd=_(_0xcf859c)['omit'](_0x3219f8)[_0xadee('0x5d')](_0x1b070a)[_0xadee('0x2c')]();return _0x26b8fd;}exports[_0xadee('0x5e')]=filterAgentAttributes;
\ No newline at end of file
index ac34275..5d96d8b 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(_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
+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(_0x2fe58d,_0x36c8da){var _0x2d7de1=function(_0x3b5ce4){while(--_0x3b5ce4){_0x2fe58d['push'](_0x2fe58d['shift']());}};_0x2d7de1(++_0x36c8da);}(_0x9957,0x93));var _0x7995=function(_0x1ac595,_0x5d2081){_0x1ac595=_0x1ac595-0x0;var _0x455fff=_0x9957[_0x1ac595];return _0x455fff;};'use strict';var express=require(_0x7995('0x0'));var methodOverride=require(_0x7995('0x1'));var cookieParser=require(_0x7995('0x2'));var errorHandler=require(_0x7995('0x3'));var path=require('path');var passport=require(_0x7995('0x4'));var cors=require(_0x7995('0x5'));var config=require(_0x7995('0x6'));exports[_0x7995('0x7')]=function(_0x576d89){var _0x744bea=_0x576d89[_0x7995('0x8')](_0x7995('0x9'));if(_0x744bea===_0x7995('0xa')){_0x576d89[_0x7995('0xb')](_0x7995('0xc'),path['join'](config[_0x7995('0xd')],_0x7995('0xe')));}if(_0x744bea==='development'||_0x744bea===_0x7995('0xf')){_0x576d89[_0x7995('0xb')](_0x7995('0xc'),path[_0x7995('0x10')](config[_0x7995('0xd')],_0x7995('0x11')));_0x576d89[_0x7995('0x12')](errorHandler());}_0x576d89['set'](_0x7995('0x13'),function(_0x41c652,_0x581f22){if(this[_0x41c652]instanceof Date){_0x581f22=this[_0x41c652][_0x7995('0x14')]()[_0x7995('0x15')]('.')[0x0]+'Z';}return _0x581f22;});_0x576d89[_0x7995('0x12')](express[_0x7995('0x16')](_0x576d89[_0x7995('0x8')](_0x7995('0xc'))));_0x576d89[_0x7995('0xb')]('views',config['root']+_0x7995('0x17'));_0x576d89[_0x7995('0x18')](_0x7995('0x19'),require(_0x7995('0x1a'))[_0x7995('0x1b')]);_0x576d89[_0x7995('0xb')](_0x7995('0x1c'),_0x7995('0x19'));_0x576d89['use'](express[_0x7995('0x1d')]({'limit':'50mb','extended':!![]}));_0x576d89[_0x7995('0x12')](express[_0x7995('0x1e')]({'limit':_0x7995('0x1f')}));_0x576d89[_0x7995('0x12')](cors());_0x576d89[_0x7995('0x12')](methodOverride());_0x576d89[_0x7995('0x12')](cookieParser());_0x576d89['use'](passport['initialize']());};
\ No newline at end of file
index 70c9d98..043b756 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0xdfb4=['update','substring','lodash','crypto','child_process','execSync','../environment','networkInterfaces','orderBy','keys','filter','family','IPv4','internal','head','mac','00:00:00:00:00:00','address','cpus','map','model','join','createHash','md5','digest','hex','getUuid','test','licenseToken','dmidecode\x20--string\x20system-uuid','replace','hostname','macAddress'];(function(_0x3358ba,_0x24c5fc){var _0x296e73=function(_0x843ff3){while(--_0x843ff3){_0x3358ba['push'](_0x3358ba['shift']());}};_0x296e73(++_0x24c5fc);}(_0xdfb4,0x1af));var _0x4dfb=function(_0x34b13d,_0x296e46){_0x34b13d=_0x34b13d-0x0;var _0x36cb7b=_0xdfb4[_0x34b13d];return _0x36cb7b;};'use strict';var _=require(_0x4dfb('0x0'));var os=require('os');var crypto=require(_0x4dfb('0x1'));var machine=require('bimedia-machine-uuid');var exec=require(_0x4dfb('0x2'))[_0x4dfb('0x3')];var config=require(_0x4dfb('0x4'));function getInterfaces(){var _0x3b6398=[];var _0x5a8dd6=os[_0x4dfb('0x5')]();var _0x2a2d95=_[_0x4dfb('0x6')](_[_0x4dfb('0x7')](_0x5a8dd6));for(var _0x364a44=0x0;_0x364a44<_0x2a2d95['length'];_0x364a44++){var _0x5d5209=_0x5a8dd6[_0x2a2d95[_0x364a44]][_0x4dfb('0x8')](function(_0x542064){return _0x542064[_0x4dfb('0x9')]===_0x4dfb('0xa')&&_0x542064[_0x4dfb('0xb')]===![];});_0x3b6398=_0x3b6398['concat'](_0x5d5209);}return _0x3b6398;}function getFirstInterface(){var _0x31f398=_[_0x4dfb('0xc')](getInterfaces());return{'macAddress':_0x31f398&&_0x31f398[_0x4dfb('0xd')]?_0x31f398[_0x4dfb('0xd')]:_0x4dfb('0xe'),'ipAddress':_0x31f398&&_0x31f398[_0x4dfb('0xf')]?_0x31f398[_0x4dfb('0xf')]:'127.0.0.1'};}exports['getFirstInterface']=getFirstInterface;function getCPUhash(){var _0x1a0a50=_['orderBy'](os[_0x4dfb('0x10')]()[_0x4dfb('0x11')](function(_0x11fb83){return _0x11fb83[_0x4dfb('0x12')];}))[_0x4dfb('0x13')](':');return crypto[_0x4dfb('0x14')](_0x4dfb('0x15'))['update'](_0x1a0a50)[_0x4dfb('0x16')](_0x4dfb('0x17'));}exports[_0x4dfb('0x18')]=function(){var _0x45b634=os['platform']();var _0x29eb3a=/[0-9a-f-]{36}/;if(config['licenseToken']&&_0x29eb3a[_0x4dfb('0x19')](config[_0x4dfb('0x1a')])){return config[_0x4dfb('0x1a')];}else if(_0x45b634==='win32'){return exec(_0x4dfb('0x1b'),{'encoding':'utf8'})[_0x4dfb('0x1c')]('\x0d\x0a','');}else{var _0x2af6cd=getFirstInterface();var _0x4f05bf=getCPUhash();var _0x3111de=_0x4f05bf+'|'+os[_0x4dfb('0x1d')]()+'|'+_0x2af6cd[_0x4dfb('0x1e')]+'|'+_0x2af6cd['ipAddress'];var _0x392497=crypto[_0x4dfb('0x14')](_0x4dfb('0x15'))[_0x4dfb('0x1f')](_0x3111de)['digest']('hex');return _0x392497[_0x4dfb('0x20')](0x0,0x8)+'-'+_0x392497[_0x4dfb('0x20')](0x8,0xc)+'-'+_0x392497[_0x4dfb('0x20')](0xc,0x10)+'-'+_0x392497['substring'](0x10,0x14)+'-'+_0x392497[_0x4dfb('0x20')](0x14);}};
\ No newline at end of file
index c8d0332..a526b6d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0x50f9=['error','util','bluebird','pkginfo','../../components/encryptor','./hardware','../logger','https://www.xcallymotion.com','format','%s/api/servers/%s/check?version=%s','exports','version','GET','then','catch','get','data1','data2','license','info','THE\x20LICENSE\x20HAS\x20BEEN\x20ENABLED','THE\x20LICENSE\x20HAS\x20BEEN\x20DISABLED','Changed','NEW\x20UUID\x20DETECTED:\x20FROM\x20%s\x20TO\x20%s','%s\x20-\x20GRAY\x20PERIOD\x20STARTED\x20AT\x20%s','toUpperCase','update','encryptString','YYYY-MM-DD\x20HH:mm','diff','days','message','getUuid','License','findOrCreate','spread'];(function(_0x97524d,_0x416c5a){var _0xbaba14=function(_0x55aed3){while(--_0x55aed3){_0x97524d['push'](_0x97524d['shift']());}};_0xbaba14(++_0x416c5a);}(_0x50f9,0x91));var _0x950f=function(_0x390e8e,_0x563f39){_0x390e8e=_0x390e8e-0x0;var _0x3351fa=_0x50f9[_0x390e8e];return _0x3351fa;};'use strict';var util=require(_0x950f('0x0'));var moment=require('moment');var rp=require('request-promise');var BPromise=require(_0x950f('0x1'));var pkginfo=require(_0x950f('0x2'))(module,'version');var db=require('../../mysqldb')['db'];var encryptor=require(_0x950f('0x3'));var hardware=require(_0x950f('0x4'));var logger=require(_0x950f('0x5'))('license');var HOST=_0x950f('0x6');var TIME=0x3c*0x1388;var DAYS=0x7;var GRAY_PERIOD_REASON;var oldToken;var isOldTokenSent=![];function httpRequest(_0x22164a){return new BPromise(function(_0x3cacc7,_0x132130){var _0xbc38c3=util[_0x950f('0x7')](_0x950f('0x8'),HOST,_0x22164a,module[_0x950f('0x9')]['version']);if(oldToken){_0xbc38c3=util['format']('%s/api/servers/%s/check?version=%s&oldtoken=%s',HOST,_0x22164a,module[_0x950f('0x9')][_0x950f('0xa')],oldToken);}var _0x23dde8={'uri':_0xbc38c3,'method':_0x950f('0xb'),'timeout':0xea60,'json':!![]};return rp(_0x23dde8)[_0x950f('0xc')](function(_0x425088){_0x3cacc7(_0x425088);})[_0x950f('0xd')](function(_0x4ec626){_0x132130(_0x4ec626);});});}function manageLicense(_0x39af20,_0x9a3f59){var _0x9f98bc=_0x9a3f59[_0x950f('0xe')]({'plain':!![]});if(!isOldTokenSent&&_0x9f98bc[_0x950f('0xf')]!==_0x39af20&&!_0x9f98bc[_0x950f('0x10')]){oldToken=_0x9f98bc[_0x950f('0xf')];}httpRequest(_0x39af20)[_0x950f('0xc')](function(_0x5e626d){if(oldToken){oldToken=undefined;isOldTokenSent=!![];}if(_0x5e626d['active']){isOldTokenSent=![];if(!_0x9f98bc[_0x950f('0x11')]&&_0x9f98bc['license']!=_0x5e626d[_0x950f('0x11')]||_0x9f98bc[_0x950f('0x11')]&&_0x9f98bc[_0x950f('0x10')]){logger[_0x950f('0x12')](_0x950f('0x13'));}if(_0x9f98bc[_0x950f('0x11')]&&!_0x9f98bc[_0x950f('0x10')]&&_0x9f98bc[_0x950f('0x11')]!=_0x5e626d[_0x950f('0x11')]){logger[_0x950f('0x12')]('THE\x20LICENSE\x20HAS\x20BEEN\x20UPDATED');}if(_0x9f98bc['license']&&!_0x9f98bc[_0x950f('0x10')]&&_0x9f98bc[_0x950f('0x11')]==_0x5e626d[_0x950f('0x11')]){return _0x9a3f59;}return _0x9a3f59['update']({'data1':_0x39af20,'data2':null,'license':_0x5e626d[_0x950f('0x11')]});}else{if(_0x5e626d[_0x950f('0x11')]||_0x9f98bc[_0x950f('0x11')]){if(!_0x9f98bc[_0x950f('0x10')]){if(_0x9f98bc[_0x950f('0xf')]==_0x39af20){GRAY_PERIOD_REASON='Disabled';logger[_0x950f('0x12')](_0x950f('0x14'));}else{GRAY_PERIOD_REASON=_0x950f('0x15');logger[_0x950f('0x12')](_0x950f('0x16'),_0x9f98bc[_0x950f('0xf')],_0x39af20);}logger[_0x950f('0x12')](_0x950f('0x17'),GRAY_PERIOD_REASON[_0x950f('0x18')](),moment()[_0x950f('0x7')]('YYYY-MM-DD\x20HH:mm'));return _0x9a3f59[_0x950f('0x19')]({'data2':encryptor[_0x950f('0x1a')](moment()[_0x950f('0x7')](_0x950f('0x1b')))});}else{if(moment()[_0x950f('0x1c')](encryptor['decryptString'](_0x9f98bc['data2']),_0x950f('0x1d'))>DAYS){logger[_0x950f('0x12')]('DEMO\x20START\x20AT\x20%s',moment()['format'](_0x950f('0x1b')));isOldTokenSent=![];return _0x9a3f59['update']({'data1':_0x39af20,'data2':null,'license':null});}}}else{if(_0x9f98bc[_0x950f('0xf')]!=_0x39af20){logger[_0x950f('0x12')](_0x950f('0x16'),_0x9f98bc[_0x950f('0xf')],_0x39af20);return _0x9a3f59[_0x950f('0x19')]({'data1':_0x39af20,'data2':null,'license':null});}}}return _0x9a3f59;})[_0x950f('0xc')](function(_0x35bbd5){_0x9a3f59=_0x35bbd5;})[_0x950f('0xd')](function(_0x407da9){logger['error'](_0x407da9[_0x950f('0x1e')]);})['finally'](function(){setTimeout(function(){manageLicense(hardware[_0x950f('0x1f')](),_0x9a3f59);},TIME);});}function defaultLicense(){var _0x3aef57=hardware[_0x950f('0x1f')]();if(_0x3aef57){return db[_0x950f('0x20')][_0x950f('0x21')]({'where':{'id':0x1},'defaults':{'data1':_0x3aef57}})[_0x950f('0x22')](function(_0x5addcc,_0x3e70d4){logger[_0x950f('0x12')]('SERVICE\x20LICENSE\x20STARTED\x20%s',_0x3aef57);manageLicense(_0x3aef57,_0x5addcc);})[_0x950f('0xd')](function(_0x5753b0){logger[_0x950f('0x23')](_0x5753b0['message']);});}}exports['default']=defaultLicense;
\ No newline at end of file
index 054395e..3ed8f35 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0x8c59=['split','decryptString','format','%s:%s:%s','parse','demo','machineUuid','gray','deadline','add','days','grayReason','changed','disabled','data1','User','findAll','role','sequelize','col','count','admin','user','telephone','telephones','pick','countBy','License\x20limit\x20reached\x20for\x20users','exports','util','lodash','moment','bluebird','../../mysqldb','Demo\x20license','getUuid','2027-01-01T00:00:00.000Z','Breaking\x20license','defaults','then','catch','uuid','license','isEmpty','License\x20key\x20value\x20not\x20found','data2'];(function(_0x1abb18,_0x3960ec){var _0x2a4e44=function(_0x15895d){while(--_0x15895d){_0x1abb18['push'](_0x1abb18['shift']());}};_0x2a4e44(++_0x3960ec);}(_0x8c59,0x1bb));var _0x98c5=function(_0x5f1391,_0x19c132){_0x5f1391=_0x5f1391-0x0;var _0x50ebe3=_0x8c59[_0x5f1391];return _0x50ebe3;};'use strict';var util=require(_0x98c5('0x0'));var _=require(_0x98c5('0x1'));var moment=require(_0x98c5('0x2'));var BPromise=require(_0x98c5('0x3'));var hardware=require('./hardware');var encryptor=require('../../components/encryptor');var db=require(_0x98c5('0x4'))['db'];const demoLicense={'demo':!![],'agents':0x2,'telephones':0x0,'users':0x1,'expiration':'2027-01-01T00:00:00.000Z','chat':![],'mail':![],'fax':![],'messaging':![],'whatsapp':![],'cm':![],'dialer':![],'jscripty':![],'openchannel':![],'callysquare':0x2,'webrtc':![],'jaws':![],'custom':![],'description':_0x98c5('0x5'),'machineUuid':hardware[_0x98c5('0x6')](),'virtual':0x0,'voice':!![],'screenrecording':![],'preferred':![],'ai':![]};const breakingLicense={'breaking':!![],'demo':!![],'agents':0x2,'telephones':0x0,'users':0x1,'expiration':_0x98c5('0x7'),'chat':![],'mail':![],'fax':![],'messaging':![],'whatsapp':![],'cm':![],'dialer':![],'jscripty':![],'openchannel':![],'callysquare':0x2,'webrtc':![],'jaws':![],'custom':![],'update':![],'description':_0x98c5('0x8'),'machineUuid':hardware[_0x98c5('0x6')](),'virtual':0x0,'voice':!![],'screenrecording':![],'preferred':![],'ai':![]};function getLicense(_0x2e4c6e){return new BPromise(function(_0x1195c6,_0x52d88d){return db['License']['find'](_[_0x98c5('0x9')](_0x2e4c6e,{'raw':!![],'where':{'id':0x1}}))[_0x98c5('0xa')](function(_0x1cde2a){return checkLicense(_0x1cde2a,null);})[_0x98c5('0xa')](function(_0x30ecd1){_0x1195c6(_0x30ecd1);return;})[_0x98c5('0xb')](function(_0x175c58){_0x52d88d(_0x175c58);});});}function checkLicense(_0x15cdcc,_0x31197d){if(!_0x15cdcc){demoLicense[_0x98c5('0xc')]=_0x15cdcc['data1'];return demoLicense;}try{var _0x199913=_0x31197d||_0x15cdcc[_0x98c5('0xd')];if(_[_0x98c5('0xe')](_0x199913)){throw new Error(_0x98c5('0xf'));}var _0x3c3147=_0x15cdcc['data1'];var _0x543a71=_0x15cdcc[_0x98c5('0x10')];var _0x1ca6f0=_0x3c3147['split']('-')[0x4];var _0x504c4b=_0x3c3147[_0x98c5('0x11')]('-')[0x0];var _0x5dccdf=encryptor[_0x98c5('0x12')](_0x199913,util[_0x98c5('0x13')](_0x98c5('0x14'),_0x1ca6f0,_0x3c3147,_0x504c4b));var _0x3e712b=JSON[_0x98c5('0x15')](_0x5dccdf);_0x3e712b[_0x98c5('0x16')]=![];_0x3e712b[_0x98c5('0xc')]=_0x3c3147;_0x3e712b[_0x98c5('0x17')]=hardware[_0x98c5('0x6')]();if(_0x543a71){var _0x1e6571=encryptor[_0x98c5('0x12')](_0x543a71);_0x3e712b[_0x98c5('0x18')]=_0x1e6571;_0x3e712b[_0x98c5('0x19')]=moment(_0x1e6571)[_0x98c5('0x1a')](0x7,_0x98c5('0x1b'))[_0x98c5('0x13')]();_0x3e712b[_0x98c5('0x1c')]=_0x3e712b['uuid']!=_0x3e712b['machineUuid']?_0x98c5('0x1d'):_0x98c5('0x1e');}return _0x3e712b;}catch(_0x1960e7){breakingLicense['uuid']=_0x15cdcc[_0x98c5('0x1f')];breakingLicense['message']=_0x1960e7['message'];return breakingLicense;}}function getLimits(){return new BPromise(function(_0x97e962,_0x117073){getLicense()[_0x98c5('0xa')](function(_0x5ac0a3){return db[_0x98c5('0x20')][_0x98c5('0x21')]({'attributes':[_0x98c5('0x22'),[db[_0x98c5('0x23')]['fn']('COUNT',db[_0x98c5('0x23')][_0x98c5('0x24')]('role')),_0x98c5('0x25')]],'group':_0x98c5('0x22'),'where':{'role':{'$or':[_0x98c5('0x26'),_0x98c5('0x27'),_0x98c5('0x28')]}},'raw':!![]})[_0x98c5('0xa')](function(_0x39eec1){var _0x68f7e={'user':_0x5ac0a3['users']||0x0,'telephone':_0x5ac0a3[_0x98c5('0x29')]||0x0};_0x39eec1['forEach'](function(_0x388369){var _0x805f4d=_0x388369['role']===_0x98c5('0x26')?'user':_0x388369['role'];_0x68f7e[_0x805f4d]-=_0x388369[_0x98c5('0x25')];if(_0x68f7e[_0x805f4d]<0x0)_0x68f7e[_0x805f4d]=0x0;});_0x97e962(_0x68f7e);return;});})[_0x98c5('0xb')](function(_0x1a36b6){_0x117073(_0x1a36b6);});});}function checkUserLimits(_0x1bb09e){return new BPromise(function(_0x589bc0,_0x59dd73){getLimits()[_0x98c5('0xa')](function(_0x138e7b){var _0x1f2cd5=_[_0x98c5('0x2a')](_[_0x98c5('0x2b')](_0x1bb09e,_0x98c5('0x22')),[_0x98c5('0x26'),_0x98c5('0x27'),_0x98c5('0x28')]);var _0x1c3f08=(_0x1f2cd5[_0x98c5('0x26')]||0x0)+(_0x1f2cd5['user']||0x0);var _0x4bbebe=_0x1f2cd5[_0x98c5('0x28')]||0x0;if(_0x1c3f08>_0x138e7b[_0x98c5('0x27')])return _0x59dd73(_0x98c5('0x2c'));if(_0x4bbebe>_0x138e7b[_0x98c5('0x28')])return _0x59dd73('License\x20limit\x20reached\x20for\x20telephones');return _0x589bc0();})['catch'](function(_0x53b909){_0x59dd73(_0x53b909);});});}module[_0x98c5('0x2d')]={'checkLicense':checkLicense,'checkUserLimits':checkUserLimits,'getLicense':getLicense};
\ No newline at end of file
index d708c89..5b90109 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0x1a37=['exports','http://localhost:9000','myappanuglar-secret','app-id','secret'];(function(_0xa9eaa0,_0x4ba2b4){var _0x30897a=function(_0x2caa01){while(--_0x2caa01){_0xa9eaa0['push'](_0xa9eaa0['shift']());}};_0x30897a(++_0x4ba2b4);}(_0x1a37,0xb4));var _0x71a3=function(_0x618414,_0x1a7a60){_0x618414=_0x618414-0x0;var _0x21c19a=_0x1a37[_0x618414];return _0x21c19a;};'use strict';module[_0x71a3('0x0')]={'DOMAIN':_0x71a3('0x1'),'SESSION_SECRET':_0x71a3('0x2'),'GOOGLE_ID':_0x71a3('0x3'),'GOOGLE_SECRET':_0x71a3('0x4'),'DEBUG':''};
\ No newline at end of file
index 0c03606..73f5372 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0xa376=['fileLogger','exports','../utils/loggers'];(function(_0x46656b,_0x236220){var _0x4128b4=function(_0xc8f733){while(--_0xc8f733){_0x46656b['push'](_0x46656b['shift']());}};_0x4128b4(++_0x236220);}(_0xa376,0x12b));var _0x6a37=function(_0x4a0220,_0x1cf4c3){_0x4a0220=_0x4a0220-0x0;var _0x386424=_0xa376[_0x4a0220];return _0x386424;};'use strict';var fileLogger=require(_0x6a37('0x0'))[_0x6a37('0x1')];module[_0x6a37('0x2')]=fileLogger;
\ No newline at end of file
index e61d173..8f8e264 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0xeb58=['ami','agi','join','../../services/agi/index.js','../../services/email/index.js','../../services/routing/index.js','xdr','../../services/xdr/index.js','exports','path','express','../../services/express/index.js'];(function(_0x15d6e9,_0x5850f8){var _0x1729df=function(_0xbe678e){while(--_0xbe678e){_0x15d6e9['push'](_0x15d6e9['shift']());}};_0x1729df(++_0x5850f8);}(_0xeb58,0x1e9));var _0x8eb5=function(_0x55f870,_0x28eb9e){_0x55f870=_0x55f870-0x0;var _0x42e5f4=_0xeb58[_0x55f870];return _0x42e5f4;};'use strict';var path=require(_0x8eb5('0x0'));var os=require('os');var config={'apps':[{'name':_0x8eb5('0x1'),'script':path['join'](__dirname,_0x8eb5('0x2'))},{'name':_0x8eb5('0x3'),'script':path['join'](__dirname,'../../services/ami/index.js')},{'name':_0x8eb5('0x4'),'script':path[_0x8eb5('0x5')](__dirname,_0x8eb5('0x6'))},{'name':'email','script':path['join'](__dirname,_0x8eb5('0x7'))},{'name':'routing','script':path[_0x8eb5('0x5')](__dirname,_0x8eb5('0x8'))},{'name':_0x8eb5('0x9'),'script':path['join'](__dirname,_0x8eb5('0xa'))}]};module[_0x8eb5('0xb')]=config;
\ No newline at end of file
index 4731355..1f7ea3c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0xe248=['delete','dump','saved','./config','connect','connected','then','disconnect','stop','restart','list','describe'];(function(_0x2af506,_0x18ede1){var _0x43bcae=function(_0x16112c){while(--_0x16112c){_0x2af506['push'](_0x2af506['shift']());}};_0x43bcae(++_0x18ede1);}(_0xe248,0x13b));var _0x8e24=function(_0x2d7dfe,_0x3a189a){_0x2d7dfe=_0x2d7dfe-0x0;var _0x187e2b=_0xe248[_0x2d7dfe];return _0x187e2b;};'use strict';var pm2=require('pm2');var BPromise=require('bluebird');var config=require(_0x8e24('0x0'));function connect(){return new BPromise(function(_0x245370,_0x381f87){return pm2[_0x8e24('0x1')](function(_0x54e0bb){if(_0x54e0bb){return _0x381f87(_0x54e0bb);}return _0x245370(_0x8e24('0x2'));});});};exports['start']=function(_0x2b179f){return connect()[_0x8e24('0x3')](function(){return new BPromise(function(_0x405ebc,_0x143641){return pm2['start'](_0x2b179f,function(_0x200468,_0x281b9c){if(_0x200468){return _0x143641(_0x200468);}pm2[_0x8e24('0x4')]();return _0x405ebc(_0x281b9c);});});});};exports[_0x8e24('0x5')]=function(_0x28660e){return connect()[_0x8e24('0x3')](function(){return new BPromise(function(_0x351760,_0x2fc738){return pm2['stop'](_0x28660e,function(_0x28daf1,_0x187354){if(_0x28daf1){return _0x2fc738(_0x28daf1);}pm2[_0x8e24('0x4')]();return _0x351760(_0x187354);});});});};exports[_0x8e24('0x6')]=function(_0x2ff8c7){return connect()[_0x8e24('0x3')](function(){return new BPromise(function(_0x4c1702,_0x98fbd){return pm2['restart'](_0x2ff8c7,function(_0x526d7b,_0x468182){if(_0x526d7b){return _0x98fbd(_0x526d7b);}pm2[_0x8e24('0x4')]();return _0x4c1702(_0x468182);});});});};exports[_0x8e24('0x7')]=function(){return connect()[_0x8e24('0x3')](function(){return new BPromise(function(_0x381308,_0x588e76){return pm2[_0x8e24('0x7')](function(_0x5472fe,_0x3078f2){if(_0x5472fe){return _0x588e76(_0x5472fe);}pm2[_0x8e24('0x4')]();return _0x381308(_0x3078f2);});});});};exports[_0x8e24('0x8')]=function(_0x55d970){return connect()[_0x8e24('0x3')](function(){return new BPromise(function(_0x2ad975,_0x225cf3){return pm2[_0x8e24('0x8')](_0x55d970,function(_0x3dd5fd,_0x40b440){if(_0x3dd5fd){return _0x225cf3(_0x3dd5fd);}pm2[_0x8e24('0x4')]();return _0x2ad975(_0x40b440);});});});};exports['delete']=function(_0x26cd11){return connect()[_0x8e24('0x3')](function(){return new BPromise(function(_0x3c04d6,_0x7873a){return pm2[_0x8e24('0x9')](_0x26cd11,function(_0x28c887,_0x3070af){if(_0x28c887){return _0x7873a(_0x28c887);}pm2[_0x8e24('0x4')]();return _0x3c04d6(_0x3070af);});});});};exports['dump']=function(){return connect()[_0x8e24('0x3')](function(){return new BPromise(function(_0x54b9b9,_0x382c7a){return pm2[_0x8e24('0xa')](function(_0x32fffa){if(_0x32fffa){return _0x382c7a(_0x32fffa);}return _0x54b9b9(_0x8e24('0xb'));});});});};
\ No newline at end of file
index 4ff2a67..0afb7b9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0xaf42=['lastMsgAt','subtract','minutes','length','info','update','timeout','format','YYYY-MM-DD\x20HH:mm:ss','[CHAT]\x20Sending\x20updates\x20for\x20interactions:','emit','catch','error','[CHAT]\x20Error\x20closing\x20interactions','inspect','start','lodash','util','../../mysqldb','../logger','redis','defaults','localhost','socket.io-emitter','Setting','then','chatTimeout','ChatInteraction','findAll'];(function(_0x13b7fd,_0x4eaf7f){var _0x32a74a=function(_0x2c5d80){while(--_0x2c5d80){_0x13b7fd['push'](_0x13b7fd['shift']());}};_0x32a74a(++_0x4eaf7f);}(_0xaf42,0x67));var _0x2af4=function(_0x1e8f29,_0x1641bc){_0x1e8f29=_0x1e8f29-0x0;var _0x521dac=_0xaf42[_0x1e8f29];return _0x521dac;};'use strict';var _=require(_0x2af4('0x0'));var moment=require('moment');var Redis=require('ioredis');var util=require(_0x2af4('0x1'));var config=require('../../config/environment');var db=require(_0x2af4('0x2'))['db'];var logger=require(_0x2af4('0x3'))('schedule');config[_0x2af4('0x4')]=_[_0x2af4('0x5')](config[_0x2af4('0x4')],{'host':_0x2af4('0x6'),'port':0x18eb});var io=require(_0x2af4('0x7'))(new Redis(config[_0x2af4('0x4')]));function closeInteractions(){var _0x41e48b=0x0;var _0x5bb32f=[];return db[_0x2af4('0x8')]['find']({'raw':!![],'attributes':['id','chatTimeout'],'where':{'id':0x1}})[_0x2af4('0x9')](function(_0x3c0e06){_0x41e48b=_0x3c0e06[_0x2af4('0xa')];if(_0x41e48b){return db[_0x2af4('0xb')][_0x2af4('0xc')]({'raw':!![],'attributes':['id',_0x2af4('0xd')],'where':{'closed':![],'lastMsgAt':{'$lt':moment()[_0x2af4('0xe')](_0x3c0e06[_0x2af4('0xa')],_0x2af4('0xf'))}}});}else{return[];}})[_0x2af4('0x9')](function(_0x4ff568){if(_0x4ff568&&_0x4ff568[_0x2af4('0x10')]){_0x5bb32f=_['map'](_0x4ff568||[],'id');logger[_0x2af4('0x11')]('[CHAT]\x20Interactions\x20to\x20close:',_0x5bb32f['join']());return db[_0x2af4('0xb')][_0x2af4('0x12')]({'closeReason':'system','disposition':_0x2af4('0x13'),'closed':!![],'closedAt':moment()[_0x2af4('0x14')](_0x2af4('0x15'))},{'where':{'id':_0x5bb32f}});}})[_0x2af4('0x9')](function(){if(_0x5bb32f&&_0x5bb32f[_0x2af4('0x10')]){logger['info'](_0x2af4('0x16'),_0x5bb32f['join']());for(var _0x45f46d=0x0;_0x45f46d<_0x5bb32f[_0x2af4('0x10')];_0x45f46d++){io[_0x2af4('0x17')]('chatInteraction:update',{'id':_0x5bb32f[_0x45f46d],'closed':!![]});}}})[_0x2af4('0x18')](function(_0x16f8bd){logger[_0x2af4('0x19')](_0x2af4('0x1a'),_0x16f8bd?util[_0x2af4('0x1b')](_0x16f8bd,{'showHidden':![],'depth':null}):'');});}exports[_0x2af4('0x1c')]=function(){setInterval(function(){return closeInteractions();},0x3c*0x3e8);return closeInteractions();};
\ No newline at end of file
index 84548e9..1e15a0c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0x004f=['exports','../../api/cloudProvider/cloudProvider.oauth.js','startAllRefreshIntervals'];(function(_0x31b01c,_0x312a46){var _0x6ed241=function(_0x23b7af){while(--_0x23b7af){_0x31b01c['push'](_0x31b01c['shift']());}};_0x6ed241(++_0x312a46);}(_0x004f,0x1bd));var _0xf004=function(_0x54403f,_0x15ff64){_0x54403f=_0x54403f-0x0;var _0x600831=_0x004f[_0x54403f];return _0x600831;};'use strict';function start(){var _0xf57b43=require(_0xf004('0x0'));return _0xf57b43[_0xf004('0x1')]();}module[_0xf004('0x2')]={'intervals':{},'start':start};
\ No newline at end of file
index 6f63b6a..f049211 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0x1c16=['Schedule','findAll','MailServerOut','CloudProvider','map','toString','difference','intersection','length','exists','stop','deleteJob','delete\x20cron','toRun','my\x20id','resolve','run\x20job','cron','active','isBetween','startAt','start','stop\x20cron','endAt','update','update\x20cron','util','path','moment','cron-job-manager','bluebird','schedule','../../mysqldb','../../api/analyticCustomReport/analyticCustomReport.controller','../../api/analyticDefaultReport/analyticDefaultReport.controller','http','info','Try\x20to\x20send\x20a\x20mail\x20to','MailAccount','getSmtpOptions','\x22%s\x22\x20<%s>','name','email','user','format','subtractUnit','savename','%s.%s','basename','extname','zip','join','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','existsSync','sendIfEmpty','empty\x20file,\x20email\x20not\x20sent','SendMail','then','error','error\x20mail','catch','isNil','subtractNumber','subtractNumber\x20null\x20or\x20undefined','subtractUnit\x20null\x20or\x20undefined','subtract','YYYY-MM-DD\x20HH:mm:ss','output','DefaultReportId','exec\x20defaul\x20report\x20id:%s','runReport','exec\x20custom\x20report\x20id:%s','CustomReportId','no\x20report\x20id'];(function(_0x2e7bb6,_0x2ffce8){var _0x5eadee=function(_0x1a414d){while(--_0x1a414d){_0x2e7bb6['push'](_0x2e7bb6['shift']());}};_0x5eadee(++_0x2ffce8);}(_0x1c16,0x15a));var _0x61c1=function(_0x13f601,_0x4dc50f){_0x13f601=_0x13f601-0x0;var _0xad44c0=_0x1c16[_0x13f601];return _0xad44c0;};'use strict';var fs=require('fs');var util=require(_0x61c1('0x0'));var path=require(_0x61c1('0x1'));var _=require('lodash');var moment=require(_0x61c1('0x2'));var CronJobManager=require(_0x61c1('0x3'));var jayson=require('jayson/promise');var BPromise=require(_0x61c1('0x4'));var logger=require('../logger')(_0x61c1('0x5'));var db=require(_0x61c1('0x6'))['db'];var analyticCustomReportController=require(_0x61c1('0x7'));var analyticDefaultReportController=require(_0x61c1('0x8'));var client=jayson['client'][_0x61c1('0x9')]({'port':0x232b});var manager=new CronJobManager();function handleSendEmail(_0x4bef5,_0x524d80){return function(){logger[_0x61c1('0xa')](_0x61c1('0xb'),_0x4bef5['email']);var _0x4164ba=!![];var _0xf126b4=_0x4bef5[_0x61c1('0xc')][_0x61c1('0xd')]();var _0x8c6bf7={'account':_0xf126b4,'message':{'from':util['format'](_0x61c1('0xe'),_0x4bef5[_0x61c1('0xc')][_0x61c1('0xf')],_0x4bef5[_0x61c1('0xc')][_0x61c1('0x10')]||_0x4bef5[_0x61c1('0xc')]['Smtp'][_0x61c1('0x11')]),'to':_0x4bef5[_0x61c1('0x10')],'cc':_0x4bef5['cc'],'bcc':_0x4bef5['bcc'],'subject':util[_0x61c1('0x12')]('Report\x20%s\x20last\x20%s\x20%s',_0x524d80['name'],_0x4bef5['subtractNumber'],_0x4bef5[_0x61c1('0x13')])}};var _0x1c0e6e=path['join'](__dirname,'../../files/reports');var _0x774095=_0x524d80[_0x61c1('0x14')];var _0x447bd7=util['format'](_0x61c1('0x15'),path[_0x61c1('0x16')](_0x524d80['savename'],path[_0x61c1('0x17')](_0x524d80[_0x61c1('0x14')])),_0x61c1('0x18'));var _0x2deb65=path['join'](_0x1c0e6e,_0x774095);var _0x4cfafc=path[_0x61c1('0x19')](_0x1c0e6e,_0x447bd7);if(fs['existsSync'](_0x2deb65)){_0x524d80[_0x61c1('0x1a')]=_0x61c1('0x1b');_0x8c6bf7['message'][_0x61c1('0x1c')]=[{'filename':_0x774095,'path':_0x2deb65}];_0x8c6bf7[_0x61c1('0x1d')][_0x61c1('0x1e')]=util[_0x61c1('0x12')](_0x61c1('0x1f'),JSON[_0x61c1('0x20')](_0x524d80,null,0x2));}else if(fs[_0x61c1('0x21')](_0x4cfafc)){_0x524d80[_0x61c1('0x1a')]='Sent';_0x8c6bf7[_0x61c1('0x1d')][_0x61c1('0x1c')]=[{'filename':_0x447bd7,'path':_0x4cfafc}];}else{_0x8c6bf7[_0x61c1('0x1d')][_0x61c1('0x1e')]='Report\x20empty\x0aThis\x20is\x20an\x20automatically\x20generated\x20email\x20–\x20please\x20do\x20not\x20reply\x20to\x20this\x20email.\x0a\x0a';if(!_0x4bef5[_0x61c1('0x22')]){_0x4164ba=![];logger[_0x61c1('0xa')](_0x61c1('0x23'));}}if(_0x4164ba){return client['request'](_0x61c1('0x24'),_0x8c6bf7)[_0x61c1('0x25')](function(_0x1fc60a){if(_0x1fc60a[_0x61c1('0x26')]){return logger[_0x61c1('0x26')](_0x61c1('0x27'),JSON[_0x61c1('0x20')](_0x1fc60a));}return logger[_0x61c1('0xa')]('email\x20sent');})[_0x61c1('0x28')](function(_0x1ebd3a){return logger['error'](_0x61c1('0x27'),JSON['stringify'](_0x1ebd3a));});}};}function handleError(){return function(_0xff89e1){return logger[_0x61c1('0x26')](JSON[_0x61c1('0x20')](_0xff89e1));};}function handleResult(_0x28ecea){return function(_0x5086d9){logger[_0x61c1('0xa')]('data',JSON[_0x61c1('0x20')](_0x5086d9));if(_0x28ecea['MailAccount']&&_0x28ecea[_0x61c1('0xc')]['Smtp']&&!_[_0x61c1('0x29')](_0x28ecea[_0x61c1('0x10')])){setTimeout(handleSendEmail(_0x28ecea,_0x5086d9),0x3c*0x3e8);}};}function handleJob(_0x1adc3e){return function(){try{if(_[_0x61c1('0x29')](_0x1adc3e[_0x61c1('0x2a')])){return logger[_0x61c1('0xa')](_0x61c1('0x2b'));}if(_[_0x61c1('0x29')](_0x1adc3e['subtractUnit'])){return logger['info'](_0x61c1('0x2c'));}var _0x3fea73={'startDate':moment()[_0x61c1('0x2d')](_0x1adc3e[_0x61c1('0x2a')],_0x1adc3e[_0x61c1('0x13')])[_0x61c1('0x12')](_0x61c1('0x2e')),'endDate':moment()[_0x61c1('0x12')](_0x61c1('0x2e')),'type':'scheduled','output':_0x1adc3e[_0x61c1('0x2f')],'name':_0x1adc3e[_0x61c1('0xf')]};if(!_['isNil'](_0x1adc3e[_0x61c1('0x30')])){logger[_0x61c1('0xa')](_0x61c1('0x31'),_0x1adc3e[_0x61c1('0x30')]);return analyticDefaultReportController[_0x61c1('0x32')]({'id':_0x1adc3e[_0x61c1('0x30')]},_0x3fea73)[_0x61c1('0x25')](handleResult(_0x1adc3e))[_0x61c1('0x28')](handleError());}if(!_[_0x61c1('0x29')](_0x1adc3e['CustomReportId'])){logger[_0x61c1('0xa')](_0x61c1('0x33'),_0x1adc3e[_0x61c1('0x34')]);return analyticCustomReportController[_0x61c1('0x32')]({'id':_0x1adc3e[_0x61c1('0x34')]},_0x3fea73)[_0x61c1('0x25')](handleResult(_0x1adc3e))['catch'](handleError());}}catch(_0xd40128){logger[_0x61c1('0x26')](JSON[_0x61c1('0x20')](_0xd40128));}return logger[_0x61c1('0xa')](_0x61c1('0x35'));};}function getJobs(_0xbb088a){var _0x58feb0={};if(_0xbb088a){_0x58feb0['id']=_0xbb088a;}return db[_0x61c1('0x36')][_0x61c1('0x37')]({'where':_0x58feb0,'include':[{'model':db[_0x61c1('0xc')],'attributes':['id','name',_0x61c1('0x10')],'include':[{'model':db[_0x61c1('0x38')],'as':'Smtp','include':[{'model':db[_0x61c1('0x39')],'as':_0x61c1('0x39')}]}]}]})[_0x61c1('0x25')](function(_0x4518e6){var _0x354b49=_['keys'](manager['jobs']);var _0x350358=_[_0x61c1('0x3a')](_0x4518e6,function(_0x3eac47){return _0x3eac47['id'][_0x61c1('0x3b')]();});var _0x1d1b26=_['keyBy'](_0x4518e6,function(_0x2acaff){return _0x2acaff['id'][_0x61c1('0x3b')]();});var _0x598fd3=_0xbb088a?_0x350358:_[_0x61c1('0x3c')](_0x350358,_0x354b49);var _0x3b978d=_[_0x61c1('0x3d')](_0x350358,_0x354b49);var _0xcadf23=_[_0x61c1('0x3c')](_0x354b49,_0x350358);var _0x1c7fde;var _0x543a66;for(_0x1c7fde=0x0;_0x1c7fde<_0xcadf23[_0x61c1('0x3e')]&&!_0xbb088a;_0x1c7fde+=0x1){_0x543a66=_0xcadf23[_0x1c7fde][_0x61c1('0x3b')]();if(manager[_0x61c1('0x3f')](_0x543a66)){manager[_0x61c1('0x40')](_0x543a66);manager[_0x61c1('0x41')](_0x543a66);logger[_0x61c1('0xa')](_0x61c1('0x42'),_0x543a66);}}logger[_0x61c1('0xa')](_0x61c1('0x43'),JSON[_0x61c1('0x20')](_0x598fd3));for(_0x1c7fde=0x0;_0x1c7fde<_0x598fd3[_0x61c1('0x3e')];_0x1c7fde+=0x1){_0x543a66=_0x598fd3[_0x1c7fde][_0x61c1('0x3b')]();logger['info']('index',_0x543a66);if(_0xbb088a){logger[_0x61c1('0xa')](_0x61c1('0x44'),_0xbb088a);logger[_0x61c1('0xa')](JSON[_0x61c1('0x20')](_0x1d1b26[_0x543a66]));BPromise[_0x61c1('0x45')]()['then'](handleJob(_0x1d1b26[_0x543a66]));logger['info'](_0x61c1('0x46'),_0x1d1b26[_0x543a66]['name'],_0x1d1b26[_0x543a66]['cron']);}else if(_0x1d1b26[_0x543a66][_0x61c1('0x47')]&&_0x1d1b26[_0x543a66][_0x61c1('0x48')]&&moment()[_0x61c1('0x49')](_0x1d1b26[_0x543a66][_0x61c1('0x4a')],_0x1d1b26[_0x543a66]['endAt'])){manager['add'](_0x543a66,_0x1d1b26[_0x543a66]['cron'],handleJob(_0x1d1b26[_0x543a66]));manager[_0x61c1('0x4b')](_0x543a66);logger[_0x61c1('0xa')]('add\x20cron',_0x1d1b26[_0x543a66][_0x61c1('0xf')],_0x1d1b26[_0x543a66]['cron']);}else if(manager[_0x61c1('0x3f')](_0x543a66)){manager[_0x61c1('0x40')](_0x543a66);manager[_0x61c1('0x41')](_0x543a66);logger['info'](_0x61c1('0x4c'),_0x1d1b26[_0x543a66][_0x61c1('0xf')],_0x1d1b26[_0x543a66]['cron']);}}for(_0x1c7fde=0x0,_0x543a66;_0x1c7fde<_0x3b978d[_0x61c1('0x3e')]&&!_0xbb088a;_0x1c7fde+=0x1){_0x543a66=_0x3b978d[_0x1c7fde][_0x61c1('0x3b')]();if(manager['exists'](_0x543a66)){if(_0x1d1b26[_0x543a66]['cron']&&_0x1d1b26[_0x543a66][_0x61c1('0x48')]&&moment()[_0x61c1('0x49')](_0x1d1b26[_0x543a66]['startAt'],_0x1d1b26[_0x543a66][_0x61c1('0x4d')])){manager[_0x61c1('0x4e')](_0x543a66,_0x1d1b26[_0x543a66][_0x61c1('0x47')],handleJob(_0x1d1b26[_0x543a66]));logger['info'](_0x61c1('0x4f'),_0x1d1b26[_0x543a66][_0x61c1('0xf')],_0x1d1b26[_0x543a66]['cron']);}else{manager[_0x61c1('0x40')](_0x543a66);manager['deleteJob'](_0x543a66);logger['info'](_0x61c1('0x4c'),_0x1d1b26[_0x543a66][_0x61c1('0xf')],_0x1d1b26[_0x543a66][_0x61c1('0x47')]);}}}})[_0x61c1('0x28')](function(_0x633ada){logger['error'](JSON[_0x61c1('0x20')](_0x633ada));});}exports['run']=function(_0x5930f0){return getJobs(_0x5930f0);};exports[_0x61c1('0x4b')]=function(){setInterval(function(){return getJobs();},0x3c*0x3e8);return getJobs();};
\ No newline at end of file
index 25379f3..fee4b5e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0xb676=['transcript','update','[RECORDING:%d]\x20Voice\x20Recording\x20entry\x20updated','tempSentiment','Sequelize','ValidationError','Sentiment\x20Analysis\x20not\x20requested','sentimentAccountId','sentimentRegion','language','bucket','Sentiment\x20Analysis\x20not\x20configured','CloudProvider','findOne','Cloud\x20Provider\x20not\x20available','data1','Cloud\x20Provider\x20not\x20configured','[RECORDING:%d]\x20Requesting\x20sentiment\x20analysis','[RECORDING:%d]\x20Sentiment\x20Analysis\x20available','Sentiment','SentimentScore','Positive','Negative','Mixed','FAILED','[RECORDING:%d]\x20Transcript\x20Job\x20status\x20not\x20managed','resolve','sentiment','Neutral','COMPLETED','catch','name','SequelizeValidationError','[RECORDING:%d]\x20Error\x20running\x20Transcribe\x20&\x20Sentiment\x20Analysis','inspect','VoiceRecording','findAll','No\x20transcribe\x20job\x20to\x20check','Setting','Settings\x20not\x20available','transcribe','Transcribe\x20not\x20configured','transcribeAccountId','forEach','push','all','lodash','request-promise','util','bluebird','../../mysqldb','TranscribeService','Comprehend','substring','info','format','[RECORDING:%d]\x20Get\x20status\x20for\x20transcript\x20job\x20(%s)','transcribeName','data2','transcribeRegion','then','TranscriptionJob','TranscriptionJobStatus','fileText','Transcript','TranscriptFileUri','[RECORDING:%d]\x20Get\x20transcript','[RECORDING:%d]\x20Transcript\x20downloaded','results','transcripts','length'];(function(_0x594e9d,_0x883433){var _0x2f4839=function(_0x28e1d4){while(--_0x28e1d4){_0x594e9d['push'](_0x594e9d['shift']());}};_0x2f4839(++_0x883433);}(_0xb676,0xbc));var _0x6b67=function(_0x1caf6a,_0x26a5bf){_0x1caf6a=_0x1caf6a-0x0;var _0x1bf493=_0xb676[_0x1caf6a];return _0x1bf493;};var _=require(_0x6b67('0x0'));var AWS=require('aws-sdk');var rp=require(_0x6b67('0x1'));var util=require(_0x6b67('0x2'));var BPromise=require(_0x6b67('0x3'));var db=require(_0x6b67('0x4'))['db'];var logger=require('../../config/logger')('transcribe');function getTranscriptionJob(_0x1ed5cd,_0xa6e590,_0x4dee9f,_0xfe7fb8){return new Promise(function(_0x58628e,_0x16597c){var _0x45cab7=new AWS[(_0x6b67('0x5'))]({'accessKeyId':_0xa6e590,'secretAccessKey':_0x1ed5cd,'region':_0x4dee9f});_0x45cab7['getTranscriptionJob']({'TranscriptionJobName':_0xfe7fb8},function(_0x5659fc,_0x1f3234){if(_0x5659fc){return _0x16597c(_0x5659fc);}else{return _0x58628e(_0x1f3234);}});});}function sentiment(_0x43bfd4,_0x561a78,_0xd783d8,_0xe69a03,_0x58f003){return new Promise(function(_0x180e08,_0x3bcf98){var _0x37abb0=new AWS[(_0x6b67('0x6'))]({'accessKeyId':_0x561a78,'secretAccessKey':_0x43bfd4,'region':_0xd783d8});_0x37abb0['detectSentiment']({'Text':_0xe69a03,'LanguageCode':_0x58f003[_0x6b67('0x7')](0x0,0x2)},function(_0x48ea70,_0x1778d1){if(_0x48ea70){return _0x3bcf98(_0x48ea70);}else{return _0x180e08(_0x1778d1);}});});}function checkTranscribeJob(_0x25c0f8,_0x1ebceb,_0x2ab6c5){var _0x3e1bc6;return new BPromise(function(_0x30d92b,_0x4242c8){logger[_0x6b67('0x8')](util[_0x6b67('0x9')](_0x6b67('0xa'),_0x25c0f8['id'],_0x25c0f8[_0x6b67('0xb')]));return getTranscriptionJob(_0x2ab6c5['data1'],_0x2ab6c5[_0x6b67('0xc')],_0x1ebceb[_0x6b67('0xd')],_0x25c0f8['transcribeName'])[_0x6b67('0xe')](function(_0x1b6c60){logger[_0x6b67('0x8')](util[_0x6b67('0x9')]('[RECORDING:%d]\x20Status\x20of\x20transcript\x20job\x20(%s):\x20%s',_0x25c0f8['id'],_0x25c0f8[_0x6b67('0xb')],_0x1b6c60[_0x6b67('0xf')][_0x6b67('0x10')]));if(!_0x25c0f8[_0x6b67('0x11')]){switch(_0x1b6c60[_0x6b67('0xf')][_0x6b67('0x10')]){case'COMPLETED':var _0x1e01b9={'transcribeStatus':_0x1b6c60['TranscriptionJob'][_0x6b67('0x10')],'fileUri':_0x1b6c60[_0x6b67('0xf')][_0x6b67('0x12')][_0x6b67('0x13')]};logger['info'](util[_0x6b67('0x9')](_0x6b67('0x14'),_0x25c0f8['id']));return rp({'uri':_0x1b6c60[_0x6b67('0xf')]['Transcript'][_0x6b67('0x13')],'json':!![]})[_0x6b67('0xe')](function(_0x1fedd5){logger['info'](util[_0x6b67('0x9')](_0x6b67('0x15'),_0x25c0f8['id']));if(_0x1fedd5&&_0x1fedd5[_0x6b67('0x16')]&&_0x1fedd5[_0x6b67('0x16')][_0x6b67('0x17')]&&_0x1fedd5[_0x6b67('0x16')][_0x6b67('0x17')][_0x6b67('0x18')]){_0x1e01b9[_0x6b67('0x11')]='';for(var _0x39bfb2=0x0;_0x39bfb2<_0x1fedd5[_0x6b67('0x16')]['transcripts'][_0x6b67('0x18')];_0x39bfb2++){_0x1e01b9[_0x6b67('0x11')]+=_0x1fedd5[_0x6b67('0x16')]['transcripts'][_0x39bfb2][_0x6b67('0x19')]+'';}}return _0x25c0f8[_0x6b67('0x1a')](_0x1e01b9);})['then'](function(){logger[_0x6b67('0x8')](util[_0x6b67('0x9')](_0x6b67('0x1b'),_0x25c0f8['id']));if(!_0x25c0f8[_0x6b67('0x1c')]){throw new db[(_0x6b67('0x1d'))][(_0x6b67('0x1e'))](_0x6b67('0x1f'));}if(!_0x1ebceb['sentiment']||!_0x1ebceb[_0x6b67('0x20')]||!_0x1ebceb[_0x6b67('0x21')]||!_0x1ebceb[_0x6b67('0x22')]||!_0x1ebceb[_0x6b67('0x23')]){throw new db[(_0x6b67('0x1d'))][(_0x6b67('0x1e'))](_0x6b67('0x24'));}if(!_0x1e01b9[_0x6b67('0x11')]){throw new Error('Transcript\x20not\x20available');}if(_0x1ebceb[_0x6b67('0x20')]===_0x2ab6c5['id']){return _0x2ab6c5;}else{return db[_0x6b67('0x25')][_0x6b67('0x26')]({'where':{'id':_settings[_0x6b67('0x20')]}});}})[_0x6b67('0xe')](function(_0x1a7e6b){if(!_0x1a7e6b){throw new db['Sequelize']['ValidationError'](_0x6b67('0x27'));}if(!_0x1a7e6b[_0x6b67('0x28')]||!_0x1a7e6b[_0x6b67('0xc')]){throw new db[(_0x6b67('0x1d'))]['ValidationError'](_0x6b67('0x29'));}_0x3e1bc6=_0x1a7e6b;logger['info'](util[_0x6b67('0x9')](_0x6b67('0x2a'),_0x25c0f8['id']));return sentiment(_0x3e1bc6[_0x6b67('0x28')],_0x3e1bc6['data2'],_0x1ebceb[_0x6b67('0x21')],_0x1e01b9[_0x6b67('0x11')],_0x1ebceb[_0x6b67('0x22')]);})['then'](function(_0x44e09a){logger[_0x6b67('0x8')](util[_0x6b67('0x9')](_0x6b67('0x2b'),_0x25c0f8['id']));return _0x25c0f8[_0x6b67('0x1a')]({'sentiment':_0x44e09a[_0x6b67('0x2c')],'sPositive':_0x44e09a[_0x6b67('0x2d')][_0x6b67('0x2e')],'sNegative':_0x44e09a[_0x6b67('0x2d')][_0x6b67('0x2f')],'sMixed':_0x44e09a[_0x6b67('0x2d')][_0x6b67('0x30')],'sNeutral':_0x44e09a[_0x6b67('0x2d')]['Neutral']});})[_0x6b67('0xe')](function(){logger[_0x6b67('0x8')](util[_0x6b67('0x9')]('[RECORDING:%d]\x20Voice\x20Recording\x20entry\x20updated',_0x25c0f8['id']));_0x30d92b();});case _0x6b67('0x31'):return _0x25c0f8[_0x6b67('0x1a')]({'transcribeStatus':_0x6b67('0x31'),'failureReason':_0x1b6c60[_0x6b67('0xf')]['FailureReason']})['then'](function(){logger[_0x6b67('0x8')](util[_0x6b67('0x9')](_0x6b67('0x1b'),_0x25c0f8['id']));_0x30d92b();});default:logger[_0x6b67('0x8')](util[_0x6b67('0x9')](_0x6b67('0x32'),_0x25c0f8['id']));break;}}else{return BPromise[_0x6b67('0x33')]()[_0x6b67('0xe')](function(){if(!_0x25c0f8[_0x6b67('0x1c')]){throw new db[(_0x6b67('0x1d'))][(_0x6b67('0x1e'))](_0x6b67('0x1f'));}if(!_0x1ebceb[_0x6b67('0x34')]||!_0x1ebceb[_0x6b67('0x20')]||!_0x1ebceb[_0x6b67('0x21')]||!_0x1ebceb[_0x6b67('0x22')]||!_0x1ebceb['bucket']){throw new db['Sequelize'][(_0x6b67('0x1e'))](_0x6b67('0x24'));}if(!_0x25c0f8[_0x6b67('0x11')]){throw new Error('Transcript\x20not\x20available');}if(_0x1ebceb[_0x6b67('0x20')]===_0x2ab6c5['id']){return _0x2ab6c5;}else{return db['CloudProvider'][_0x6b67('0x26')]({'where':{'id':_settings[_0x6b67('0x20')]}});}})[_0x6b67('0xe')](function(_0x1f8224){if(!_0x1f8224){throw new db[(_0x6b67('0x1d'))][(_0x6b67('0x1e'))]('Cloud\x20Provider\x20not\x20available');}if(!_0x1f8224['data1']||!_0x1f8224['data2']){throw new db['Sequelize'][(_0x6b67('0x1e'))](_0x6b67('0x29'));}_0x3e1bc6=_0x1f8224;logger['info'](util[_0x6b67('0x9')](_0x6b67('0x2a'),_0x25c0f8['id']));return sentiment(_0x3e1bc6[_0x6b67('0x28')],_0x3e1bc6['data2'],_0x1ebceb[_0x6b67('0x21')],_0x25c0f8[_0x6b67('0x11')],_0x1ebceb['language']);})['then'](function(_0x47e592){logger[_0x6b67('0x8')](util['format']('[RECORDING:%d]\x20Sentiment\x20Analysis\x20available',_0x25c0f8['id']));return _0x25c0f8[_0x6b67('0x1a')]({'sentiment':_0x47e592[_0x6b67('0x2c')],'sPositive':_0x47e592['SentimentScore'][_0x6b67('0x2e')],'sNegative':_0x47e592[_0x6b67('0x2d')][_0x6b67('0x2f')],'sMixed':_0x47e592[_0x6b67('0x2d')][_0x6b67('0x30')],'sNeutral':_0x47e592[_0x6b67('0x2d')][_0x6b67('0x35')],'transcribeStatus':_0x6b67('0x36')});})['then'](function(){logger[_0x6b67('0x8')](util[_0x6b67('0x9')](_0x6b67('0x1b'),_0x25c0f8['id']));_0x30d92b();});}})[_0x6b67('0x37')](function(_0x32a5e3){if(_0x32a5e3){if(!_0x32a5e3['name']||_0x32a5e3[_0x6b67('0x38')]!==_0x6b67('0x39')){logger['error'](util[_0x6b67('0x9')](_0x6b67('0x3a'),_0x25c0f8['id']),util[_0x6b67('0x3b')](_0x32a5e3,{'showHidden':![],'depth':null}));}}_0x30d92b();});});}function checkTranscribe(){var _0x36a7c3;var _0x46efc4;var _0x7257d0;return db[_0x6b67('0x3c')][_0x6b67('0x3d')]({'where':{'transcribeStatus':'IN_PROGRESS'}})[_0x6b67('0xe')](function(_0x359807){if(!_0x359807||!_0x359807[_0x6b67('0x18')]){throw new db[(_0x6b67('0x1d'))]['ValidationError'](_0x6b67('0x3e'));}_0x36a7c3=_0x359807;return db[_0x6b67('0x3f')]['findOne']({'where':{'id':0x1}});})['then'](function(_0x3110b3){if(!_0x3110b3){throw new db[(_0x6b67('0x1d'))][(_0x6b67('0x1e'))](_0x6b67('0x40'));}_0x46efc4=_0x3110b3;if(!_0x46efc4[_0x6b67('0x41')]||!_0x46efc4['transcribeAccountId']||!_0x46efc4[_0x6b67('0xd')]||!_0x46efc4[_0x6b67('0x22')]||!_0x46efc4[_0x6b67('0x23')]){throw new db[(_0x6b67('0x1d'))][(_0x6b67('0x1e'))](_0x6b67('0x42'));}return db[_0x6b67('0x25')][_0x6b67('0x26')]({'where':{'id':_0x46efc4[_0x6b67('0x43')]}});})['then'](function(_0x3a6078){if(!_0x3a6078){throw new db[(_0x6b67('0x1d'))][(_0x6b67('0x1e'))](_0x6b67('0x27'));}if(!_0x3a6078[_0x6b67('0x28')]||!_0x3a6078[_0x6b67('0xc')]){throw new db['Sequelize'][(_0x6b67('0x1e'))]('Cloud\x20Provider\x20not\x20configured');}_0x7257d0=_0x3a6078;var _0x30a67=[];_0x36a7c3[_0x6b67('0x44')](function(_0x4437f2){_0x30a67[_0x6b67('0x45')](checkTranscribeJob(_0x4437f2,_0x46efc4,_0x7257d0));});return BPromise[_0x6b67('0x46')](_0x30a67);})['catch'](function(_0x4ee98a){if(_0x4ee98a){if(!_0x4ee98a[_0x6b67('0x38')]||_0x4ee98a[_0x6b67('0x38')]!=='SequelizeValidationError'){logger['error'](util[_0x6b67('0x3b')](_0x4ee98a,{'showHidden':![],'depth':null}));}}});}exports['start']=function(){setInterval(function(){return checkTranscribe();},0x3c*0x3e8);return checkTranscribe();};
\ No newline at end of file
index c8afc6d..8010707 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0x17bb=['hours','then','length','map','info','[WHATSAPP]\x20Interactions\x20to\x20close:','join','update','timeout','format','YYYY-MM-DD\x20HH:mm:ss','[WHATSAPP]\x20Sending\x20updates\x20for\x20interactions:','[WHATSAPP]\x20Error\x20closing\x20interactions','start','lodash','moment','ioredis','util','../../config/environment','../../mysqldb','schedule','redis','defaults','socket.io-emitter','WhatsappInteraction','findAll','subtract'];(function(_0x297fd3,_0x115406){var _0x2af381=function(_0x1dd31b){while(--_0x1dd31b){_0x297fd3['push'](_0x297fd3['shift']());}};_0x2af381(++_0x115406);}(_0x17bb,0x188));var _0xb17b=function(_0x321bb2,_0x202794){_0x321bb2=_0x321bb2-0x0;var _0x9c12ed=_0x17bb[_0x321bb2];return _0x9c12ed;};'use strict';var _=require(_0xb17b('0x0'));var moment=require(_0xb17b('0x1'));var Redis=require(_0xb17b('0x2'));var util=require(_0xb17b('0x3'));var config=require(_0xb17b('0x4'));var db=require(_0xb17b('0x5'))['db'];var logger=require('../logger')(_0xb17b('0x6'));config[_0xb17b('0x7')]=_[_0xb17b('0x8')](config[_0xb17b('0x7')],{'host':'localhost','port':0x18eb});var io=require(_0xb17b('0x9'))(new Redis(config['redis']));function closeInteractions(){var _0x1e4076=[];return db[_0xb17b('0xa')][_0xb17b('0xb')]({'raw':!![],'attributes':['id','lastMsgAt'],'where':{'closed':![],'lastMsgDirection':'in','lastMsgAt':{'$lt':moment()[_0xb17b('0xc')](0x18,_0xb17b('0xd'))}}})[_0xb17b('0xe')](function(_0xfcdd38){if(_0xfcdd38&&_0xfcdd38[_0xb17b('0xf')]){_0x1e4076=_[_0xb17b('0x10')](_0xfcdd38||[],'id');logger[_0xb17b('0x11')](_0xb17b('0x12'),_0x1e4076[_0xb17b('0x13')]());return db['WhatsappInteraction'][_0xb17b('0x14')]({'closeReason':'system','disposition':_0xb17b('0x15'),'closed':!![],'closedAt':moment()[_0xb17b('0x16')](_0xb17b('0x17'))},{'where':{'id':_0x1e4076}});}})['then'](function(){if(_0x1e4076&&_0x1e4076['length']){logger[_0xb17b('0x11')](_0xb17b('0x18'),_0x1e4076[_0xb17b('0x13')]());for(var _0xde29f5=0x0;_0xde29f5<_0x1e4076[_0xb17b('0xf')];_0xde29f5++){io['emit']('whatsappInteraction:update',{'id':_0x1e4076[_0xde29f5],'closed':!![]});}}})['catch'](function(_0x52b6d8){logger['error'](_0xb17b('0x19'),_0x52b6d8?util['inspect'](_0x52b6d8,{'showHidden':![],'depth':null}):'');});}exports[_0xb17b('0x1a')]=function(){setInterval(function(){return closeInteractions();},0x3c*0x3e8);return closeInteractions();};
\ No newline at end of file
index 681ce6b..9a1054d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0x9e16=['finished\x20populating','CmHopper','destroy','bulkCreate','hopper2','util','../mysqldb','push','Innocenzo','Biondo','@xcally.com','now','innocenzo.biondo','CmContact','then','log'];(function(_0x424a9a,_0x2dd9af){var _0xa7831c=function(_0x512534){while(--_0x512534){_0x424a9a['push'](_0x424a9a['shift']());}};_0xa7831c(++_0x2dd9af);}(_0x9e16,0xd5));var _0x69e1=function(_0xe35b73,_0xb8f149){_0xe35b73=_0xe35b73-0x0;var _0x5e9ece=_0x9e16[_0xe35b73];return _0x5e9ece;};'use strict';var util=require(_0x69e1('0x0'));var db=require(_0x69e1('0x1'))['db'];var contacts=[];var hopper=[];var contacts2=[];var hopper2=[];for(var i=0x1;i<=0x4b0;i+=0x1){contacts[_0x69e1('0x2')]({'id':i,'firstName':_0x69e1('0x3')+i,'lastName':_0x69e1('0x4')+i,'phone':0xf879fb460+i,'email':'innocenzo.biondo'+i+_0x69e1('0x5')});}for(var i=0x1;i<=0x4b0;i+=0x1){hopper[_0x69e1('0x2')]({'id':i,'active':![],'scheduledat':Date[_0x69e1('0x6')](),'countbusyretry':0x0,'countcongestionretry':0x0,'countnoanswerretry':0x0,'ContactId':i,'ListId':0x1,'UserId':0x1,'VoiceQueueId':0x3fd,'createdAt':Date[_0x69e1('0x6')](),'updatedAt':Date[_0x69e1('0x6')]()});}for(var i=0x4b1;i<=0x960;i+=0x1){contacts2[_0x69e1('0x2')]({'id':i,'firstName':_0x69e1('0x3')+i,'lastName':_0x69e1('0x4')+i,'phone':0xf879fb460+i,'email':_0x69e1('0x7')+i+_0x69e1('0x5')});}for(var i=0x4b1;i<=0x960;i+=0x1){hopper2[_0x69e1('0x2')]({'id':i,'active':![],'scheduledat':Date[_0x69e1('0x6')](),'countbusyretry':0x0,'countcongestionretry':0x0,'countnoanswerretry':0x0,'ContactId':i,'ListId':0x1,'UserId':0x1,'VoiceQueueId':0x3fd,'createdAt':Date['now'](),'updatedAt':Date[_0x69e1('0x6')]()});}db[_0x69e1('0x8')]['destroy']({'where':{}})[_0x69e1('0x9')](function(){return db[_0x69e1('0x8')]['bulkCreate'](contacts);})['then'](function(){console[_0x69e1('0xa')](_0x69e1('0xb'),'contacts1');return db[_0x69e1('0xc')][_0x69e1('0xd')]({'where':{}});})[_0x69e1('0x9')](function(){return db[_0x69e1('0xc')][_0x69e1('0xe')](hopper);})[_0x69e1('0x9')](function(){console[_0x69e1('0xa')]('finished\x20populating','hopper1');return db[_0x69e1('0x8')][_0x69e1('0xe')](contacts2);})['then'](function(){console[_0x69e1('0xa')](_0x69e1('0xb'),'contacts2');return db['CmHopper'][_0x69e1('0xe')](hopper2);})[_0x69e1('0x9')](function(){console[_0x69e1('0xa')]('finished\x20populating',_0x69e1('0xf'));})['catch'](function(_0x19b9ae){console[_0x69e1('0xa')](_0x19b9ae);});
\ No newline at end of file
index 5104850..6ce0bac 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0x294d=['yes','/etc/pki/tls/certs/motion.crt','/etc/pki/tls/private/motion.key','actpass','\x22%s\x22\x20<%s>','User','then','log','catch','util','../mysqldb','push','format','%s%s','agent','%s%s@xcally.com','udp','ulaw'];(function(_0x56a061,_0x53fb1b){var _0x105fa0=function(_0x164d08){while(--_0x164d08){_0x56a061['push'](_0x56a061['shift']());}};_0x105fa0(++_0x53fb1b);}(_0x294d,0x105));var _0xd294=function(_0x4de586,_0x183427){_0x4de586=_0x4de586-0x0;var _0x46baf5=_0x294d[_0x4de586];return _0x46baf5;};'use strict';var util=require(_0xd294('0x0'));var db=require(_0xd294('0x1'))['db'];var users=[];for(var i=0x1;i<=0xc8;i+=0x1){users[_0xd294('0x2')]({'name':util[_0xd294('0x3')](_0xd294('0x4'),_0xd294('0x5'),i),'fullname':util[_0xd294('0x3')](_0xd294('0x4'),'agent',i),'email':util[_0xd294('0x3')](_0xd294('0x6'),_0xd294('0x5'),i),'role':_0xd294('0x5'),'password':'password','internal':0xfa0+i,'type':'friend','transport':[_0xd294('0x7'),'ws','wss'],'disallow':['all'],'allow':[_0xd294('0x8')],'defaultuser':util[_0xd294('0x3')](_0xd294('0x4'),'agent',i),'encryption':_0xd294('0x9'),'avpf':_0xd294('0x9'),'force_avp':_0xd294('0x9'),'icesupport':_0xd294('0x9'),'dtlsenable':_0xd294('0x9'),'dtlsverify':'no','dtlscertfile':_0xd294('0xa'),'dtlsprivatekey':_0xd294('0xb'),'dtlssetup':_0xd294('0xc'),'callerid':util[_0xd294('0x3')](_0xd294('0xd'),util[_0xd294('0x3')]('%s%s','agent',i),0xfa0+i)});}db[_0xd294('0xe')]['bulkCreate'](users)[_0xd294('0xf')](function(){console[_0xd294('0x10')]('add\x20user');})[_0xd294('0x11')](function(_0x280229){console[_0xd294('0x10')](_0x280229);});
\ No newline at end of file
index e5f40a7..b5922a7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0x7e5b=['where','role','then','%s:queue:%s','user:%s','query','find','handshake','ChatInteraction','MailInteraction','FaxInteraction','SmsInteraction','OpenchannelInteraction','OpenchannelInteractions','WhatsappInteraction','WhatsappInteractions','format','admin','voice:inbound','voice:outbound','hasOwnProperty','include','push','ChatQueue','FaxQueue','SmsQueue','OpenchannelQueue','WhatsappQueue','Trunk','Campaign','user','userProfileId','MailQueue','agent','getFaxQueues','getSmsQueues','getOpenchannelQueues','length','voice','chat','fax','sms','whatsapp','telephone:%s','trunk:%s','leave','map','removeChatInteractions','MailInteractions','removeMailInteractions','emit','FaxInteractions','removeFaxInteractions','removeSmsInteractions','removeOpenchannelInteractions','user_has_openchannel_interactions:remove','catch','join','default','connection','setMaxListeners','address','remoteAddress','remotePort','log','SocketIO\x20','DISCONNECTED','CONNECTED','lodash','util','bluebird','../mysqldb','./environment','name','Agents','User','telephone','type','ivr','UserProfileSection','autoAssociation','VoiceQueues','ChatQueues','SmsQueues','MailQueues','findAll','Telephones','Trunks','IvrCampaigns','UserProfileResource','resourceId'];(function(_0x4c6a26,_0x43d1d2){var _0x1acd20=function(_0x296acc){while(--_0x296acc){_0x4c6a26['push'](_0x4c6a26['shift']());}};_0x1acd20(++_0x43d1d2);}(_0x7e5b,0x9f));var _0xb7e5=function(_0x277d0e,_0x15a986){_0x277d0e=_0x277d0e-0x0;var _0x56c8bc=_0x7e5b[_0x277d0e];return _0x56c8bc;};'use strict';var _=require(_0xb7e5('0x0'));var util=require(_0xb7e5('0x1'));var BPromise=require(_0xb7e5('0x2'));var db=require(_0xb7e5('0x3'))['db'];var config=require(_0xb7e5('0x4'));var queryQueues={'attributes':['id',_0xb7e5('0x5')],'include':[{'as':_0xb7e5('0x6'),'model':db[_0xb7e5('0x7')],'attributes':['id',_0xb7e5('0x5'),'role'],'raw':!![],'where':{'role':'agent'},'required':![]}]};var queryTelephones={'raw':!![],'attributes':['id',_0xb7e5('0x5')],'where':{'role':_0xb7e5('0x8')}};var queryTrunks={'raw':!![],'attributes':['id',_0xb7e5('0x5')]};var queryAgents={'raw':!![],'attributes':['id',_0xb7e5('0x5')],'where':{'role':'agent'}};var queryCampaigns={'raw':!![],'attributes':['id',_0xb7e5('0x5'),_0xb7e5('0x9')],'where':{'type':_0xb7e5('0xa')}};function getAssociatedResources(_0x2e0620,_0x554f17,_0x536713){return db[_0xb7e5('0xb')]['findOne']({'where':{'name':_0x2e0620,'userProfileId':_0x554f17},'raw':!![]})['then'](function(_0x48120b){if(_0x48120b){if(_0x48120b[_0xb7e5('0xc')]){switch(_0x2e0620){case _0xb7e5('0xd'):case _0xb7e5('0xe'):case'FaxQueues':case _0xb7e5('0xf'):case _0xb7e5('0x10'):case'OpenchannelQueues':case'WhatsappQueues':return db[_0x536713][_0xb7e5('0x11')](queryQueues);case _0xb7e5('0x12'):return db[_0x536713][_0xb7e5('0x11')](queryTelephones);case _0xb7e5('0x13'):return db[_0x536713]['findAll'](queryTrunks);case _0xb7e5('0x14'):return db[_0x536713][_0xb7e5('0x11')](queryCampaigns);}}else{return db[_0xb7e5('0x15')][_0xb7e5('0x11')]({'attributes':[_0xb7e5('0x16')],'where':{'sectionId':_0x48120b['id']},'raw':!![]})['then'](function(_0x355539){if(_0x355539){var _0x28940c={'where':{'id':_['map'](_0x355539,_0xb7e5('0x16'))},'raw':!![]};switch(_0x536713){case _0xb7e5('0x7'):_0x28940c[_0xb7e5('0x17')][_0xb7e5('0x18')]=_0xb7e5('0x8');break;case'Campaign':_0x28940c[_0xb7e5('0x17')]['type']=_0xb7e5('0xa');break;}return db[_0x536713][_0xb7e5('0x11')](_0x28940c);}else{return[];}});}}else{return[];}})[_0xb7e5('0x19')](function(_0xea2f3a){return _0xea2f3a;});}function joinOrLeaveQueues(_0x1ba06e,_0x234a90,_0x2f5b82,_0x1c51f7){_0x1ba06e[_0x234a90](util['format'](_0xb7e5('0x1a'),_0x2f5b82,_0x1c51f7[_0xb7e5('0x5')]));if(_0x1c51f7[_0xb7e5('0x6')]){for(var _0x473d4d=0x0;_0x473d4d<_0x1c51f7[_0xb7e5('0x6')]['length'];_0x473d4d+=0x1){_0x1ba06e[_0x234a90](util['format'](_0xb7e5('0x1b'),_0x1c51f7[_0xb7e5('0x6')][_0x473d4d][_0xb7e5('0x5')]));}}}function joinOrLeave(_0x198c06,_0x7b82bc,_0x1fc1bb){var _0x101899;if(_0x198c06['handshake'][_0xb7e5('0x1c')]['id']){db[_0xb7e5('0x7')][_0xb7e5('0x1d')]({'attributes':['id',_0xb7e5('0x5'),_0xb7e5('0x18'),'userProfileId'],'where':{'id':_0x198c06[_0xb7e5('0x1e')][_0xb7e5('0x1c')]['id']},'include':[{'model':db[_0xb7e5('0x1f')],'as':'ChatInteractions','attributes':['id'],'raw':!![]},{'model':db[_0xb7e5('0x20')],'as':'MailInteractions','attributes':['id'],'raw':!![]},{'model':db[_0xb7e5('0x21')],'as':'FaxInteractions','attributes':['id'],'raw':!![]},{'model':db[_0xb7e5('0x22')],'as':'SmsInteractions','attributes':['id'],'raw':!![]},{'model':db[_0xb7e5('0x23')],'as':_0xb7e5('0x24'),'attributes':['id'],'raw':!![]},{'model':db[_0xb7e5('0x25')],'as':_0xb7e5('0x26'),'attributes':['id'],'raw':!![]}]})['then'](function(_0x4b91b){if(_0x4b91b){_0x101899=_0x4b91b;_0x198c06[_0x7b82bc](util[_0xb7e5('0x27')](_0xb7e5('0x1b'),_0x4b91b[_0xb7e5('0x5')]));var _0x3c29e9=[];switch(_0x4b91b['role']){case _0xb7e5('0x28'):_0x198c06[_0x7b82bc](_0xb7e5('0x29'));_0x198c06[_0x7b82bc](_0xb7e5('0x2a'));if(queryQueues[_0xb7e5('0x2b')]('include')){delete queryQueues[_0xb7e5('0x2c')];}_0x3c29e9[_0xb7e5('0x2d')](db['VoiceQueue'][_0xb7e5('0x11')](queryQueues));_0x3c29e9[_0xb7e5('0x2d')](db[_0xb7e5('0x2e')]['findAll'](queryQueues));_0x3c29e9[_0xb7e5('0x2d')](db[_0xb7e5('0x2f')][_0xb7e5('0x11')](queryQueues));_0x3c29e9[_0xb7e5('0x2d')](db[_0xb7e5('0x30')][_0xb7e5('0x11')](queryQueues));_0x3c29e9[_0xb7e5('0x2d')](db['MailQueue']['findAll'](queryQueues));_0x3c29e9[_0xb7e5('0x2d')](db[_0xb7e5('0x31')][_0xb7e5('0x11')](queryQueues));_0x3c29e9[_0xb7e5('0x2d')](db[_0xb7e5('0x32')][_0xb7e5('0x11')](queryQueues));_0x3c29e9[_0xb7e5('0x2d')](db['User'][_0xb7e5('0x11')](queryTelephones));_0x3c29e9[_0xb7e5('0x2d')](db[_0xb7e5('0x33')]['findAll'](queryTrunks));_0x3c29e9[_0xb7e5('0x2d')](db[_0xb7e5('0x34')]['findAll'](queryCampaigns));_0x3c29e9['push'](db[_0xb7e5('0x7')][_0xb7e5('0x11')](queryAgents));break;case _0xb7e5('0x35'):_0x198c06[_0x7b82bc](_0xb7e5('0x29'));_0x198c06[_0x7b82bc](_0xb7e5('0x2a'));_0x3c29e9['push'](getAssociatedResources('VoiceQueues',_0x4b91b['userProfileId'],'VoiceQueue'));_0x3c29e9[_0xb7e5('0x2d')](getAssociatedResources('ChatQueues',_0x4b91b[_0xb7e5('0x36')],_0xb7e5('0x2e')));_0x3c29e9['push'](getAssociatedResources('FaxQueues',_0x4b91b[_0xb7e5('0x36')],_0xb7e5('0x2f')));_0x3c29e9['push'](getAssociatedResources('SmsQueues',_0x4b91b[_0xb7e5('0x36')],_0xb7e5('0x30')));_0x3c29e9['push'](getAssociatedResources(_0xb7e5('0x10'),_0x4b91b[_0xb7e5('0x36')],_0xb7e5('0x37')));_0x3c29e9['push'](getAssociatedResources('OpenchannelQueues',_0x4b91b[_0xb7e5('0x36')],_0xb7e5('0x31')));_0x3c29e9['push'](getAssociatedResources('WhatsappQueues',_0x4b91b[_0xb7e5('0x36')],_0xb7e5('0x32')));_0x3c29e9[_0xb7e5('0x2d')](getAssociatedResources(_0xb7e5('0x12'),_0x4b91b[_0xb7e5('0x36')],_0xb7e5('0x7')));_0x3c29e9[_0xb7e5('0x2d')](getAssociatedResources(_0xb7e5('0x13'),_0x4b91b[_0xb7e5('0x36')],_0xb7e5('0x33')));_0x3c29e9[_0xb7e5('0x2d')](getAssociatedResources('IvrCampaigns',_0x4b91b['userProfileId'],_0xb7e5('0x34')));_0x3c29e9[_0xb7e5('0x2d')](db[_0xb7e5('0x7')][_0xb7e5('0x11')](queryAgents));break;case _0xb7e5('0x38'):_0x198c06[_0x7b82bc](_0xb7e5('0x29'));_0x198c06[_0x7b82bc](_0xb7e5('0x2a'));_0x3c29e9[_0xb7e5('0x2d')](_0x4b91b['getVoiceQueues']({'attributes':['id','name']}));_0x3c29e9[_0xb7e5('0x2d')](_0x4b91b['getChatQueues']({'attributes':['id','name']}));_0x3c29e9['push'](_0x4b91b[_0xb7e5('0x39')]({'attributes':['id',_0xb7e5('0x5')]}));_0x3c29e9[_0xb7e5('0x2d')](_0x4b91b[_0xb7e5('0x3a')]({'attributes':['id','name']}));_0x3c29e9['push'](_0x4b91b['getMailQueues']({'attributes':['id',_0xb7e5('0x5')]}));_0x3c29e9['push'](_0x4b91b[_0xb7e5('0x3b')]({'attributes':['id','name']}));_0x3c29e9[_0xb7e5('0x2d')](_0x4b91b['getWhatsappQueues']({'attributes':['id','name']}));break;}return BPromise['all'](_0x3c29e9);}})[_0xb7e5('0x19')](function(_0x3f7366){if(_0x3f7366&&_0x3f7366[_0xb7e5('0x3c')]){for(var _0x1e388c=0x0;_0x1e388c<_0x3f7366[_0xb7e5('0x3c')];_0x1e388c+=0x1){for(var _0x26994b=0x0;_0x26994b<_0x3f7366[_0x1e388c]['length'];_0x26994b+=0x1){switch(_0x1e388c){case 0x0:joinOrLeaveQueues(_0x198c06,_0x7b82bc,_0xb7e5('0x3d'),_0x3f7366[_0x1e388c][_0x26994b]);break;case 0x1:joinOrLeaveQueues(_0x198c06,_0x7b82bc,_0xb7e5('0x3e'),_0x3f7366[_0x1e388c][_0x26994b]);break;case 0x2:joinOrLeaveQueues(_0x198c06,_0x7b82bc,_0xb7e5('0x3f'),_0x3f7366[_0x1e388c][_0x26994b]);break;case 0x3:joinOrLeaveQueues(_0x198c06,_0x7b82bc,_0xb7e5('0x40'),_0x3f7366[_0x1e388c][_0x26994b]);break;case 0x4:joinOrLeaveQueues(_0x198c06,_0x7b82bc,'mail',_0x3f7366[_0x1e388c][_0x26994b]);break;case 0x5:joinOrLeaveQueues(_0x198c06,_0x7b82bc,'openchannel',_0x3f7366[_0x1e388c][_0x26994b]);break;case 0x6:joinOrLeaveQueues(_0x198c06,_0x7b82bc,_0xb7e5('0x41'),_0x3f7366[_0x1e388c][_0x26994b]);break;case 0x7:if(_0x101899['role']!=='agent')_0x198c06[_0x7b82bc](util[_0xb7e5('0x27')](_0xb7e5('0x42'),_0x3f7366[_0x1e388c][_0x26994b][_0xb7e5('0x5')]));break;case 0x8:if(_0x101899[_0xb7e5('0x18')]!==_0xb7e5('0x38'))_0x198c06[_0x7b82bc](util[_0xb7e5('0x27')](_0xb7e5('0x43'),_0x3f7366[_0x1e388c][_0x26994b][_0xb7e5('0x5')]));break;case 0x9:if(_0x101899[_0xb7e5('0x18')]!==_0xb7e5('0x38'))_0x198c06[_0x7b82bc](util[_0xb7e5('0x27')]('campaign:%s:%s',_0x3f7366[_0x1e388c][_0x26994b][_0xb7e5('0x9')],_0x3f7366[_0x1e388c][_0x26994b][_0xb7e5('0x5')]));break;case 0xa:_0x198c06[_0x7b82bc](util[_0xb7e5('0x27')](_0xb7e5('0x1b'),_0x3f7366[_0x1e388c][_0x26994b][_0xb7e5('0x5')]));break;}}}}})[_0xb7e5('0x19')](function(){if(_0x7b82bc===_0xb7e5('0x44')){var _0x282548=_[_0xb7e5('0x45')](_0x101899['ChatInteractions'],'id');return _0x101899[_0xb7e5('0x46')](_0x282548)[_0xb7e5('0x19')](function(){for(var _0x39d896=0x0;_0x39d896<_0x282548[_0xb7e5('0x3c')];_0x39d896+=0x1){_0x1fc1bb['emit']('user_has_chat_interactions:remove',{'ChatInteractionId':Number(_0x282548[_0x39d896]),'UserId':Number(_0x101899['id'])});}});}})[_0xb7e5('0x19')](function(){if(_0x7b82bc===_0xb7e5('0x44')){var _0x4b7482=_[_0xb7e5('0x45')](_0x101899[_0xb7e5('0x47')],'id');return _0x101899[_0xb7e5('0x48')](_0x4b7482)['then'](function(){for(var _0x46c4ea=0x0;_0x46c4ea<_0x4b7482[_0xb7e5('0x3c')];_0x46c4ea+=0x1){_0x1fc1bb[_0xb7e5('0x49')]('user_has_mail_interactions:remove',{'MailInteractionId':Number(_0x4b7482[_0x46c4ea]),'UserId':Number(_0x101899['id'])});}});}})[_0xb7e5('0x19')](function(){if(_0x7b82bc==='leave'){var _0x4baaf4=_['map'](_0x101899[_0xb7e5('0x4a')],'id');return _0x101899[_0xb7e5('0x4b')](_0x4baaf4)[_0xb7e5('0x19')](function(){for(var _0x51f830=0x0;_0x51f830<_0x4baaf4['length'];_0x51f830+=0x1){_0x1fc1bb['emit']('user_has_fax_interactions:remove',{'FaxInteractionId':Number(_0x4baaf4[_0x51f830]),'UserId':Number(_0x101899['id'])});}});}})[_0xb7e5('0x19')](function(){if(_0x7b82bc==='leave'){var _0x4fc871=_[_0xb7e5('0x45')](_0x101899['SmsInteractions'],'id');return _0x101899[_0xb7e5('0x4c')](_0x4fc871)[_0xb7e5('0x19')](function(){for(var _0x1ff9bf=0x0;_0x1ff9bf<_0x4fc871[_0xb7e5('0x3c')];_0x1ff9bf+=0x1){_0x1fc1bb[_0xb7e5('0x49')]('user_has_sms_interactions:remove',{'SmsInteractionId':Number(_0x4fc871[_0x1ff9bf]),'UserId':Number(_0x101899['id'])});}});}})[_0xb7e5('0x19')](function(){if(_0x7b82bc===_0xb7e5('0x44')){var _0x15eca8=_['map'](_0x101899['OpenchannelInteractions'],'id');return _0x101899[_0xb7e5('0x4d')](_0x15eca8)[_0xb7e5('0x19')](function(){for(var _0xdb88b0=0x0;_0xdb88b0<_0x15eca8[_0xb7e5('0x3c')];_0xdb88b0+=0x1){_0x1fc1bb['emit'](_0xb7e5('0x4e'),{'OpenchannelInteractionId':Number(_0x15eca8[_0xdb88b0]),'UserId':Number(_0x101899['id'])});}});}})[_0xb7e5('0x19')](function(){if(_0x7b82bc===_0xb7e5('0x44')){var _0x3517bc=_[_0xb7e5('0x45')](_0x101899[_0xb7e5('0x26')],'id');return _0x101899['removeWhatsappInteractions'](_0x3517bc)[_0xb7e5('0x19')](function(){for(var _0x555d58=0x0;_0x555d58<_0x3517bc[_0xb7e5('0x3c')];_0x555d58+=0x1){_0x1fc1bb['emit']('user_has_whatsapp_interactions:remove',{'WhatsappInteractionId':Number(_0x3517bc[_0x555d58]),'UserId':Number(_0x101899['id'])});}});}})[_0xb7e5('0x4f')](function(_0x44e3f6){_0x198c06['log'](_0x44e3f6);});}}function onDisconnect(_0x307110,_0x4d3e15){joinOrLeave(_0x307110,_0xb7e5('0x44'),_0x4d3e15);}function onConnect(_0x2f0c46){joinOrLeave(_0x2f0c46,_0xb7e5('0x50'));}exports[_0xb7e5('0x51')]=function(_0x4671d0){_0x4671d0['on'](_0xb7e5('0x52'),function(_0x53164c){_0x53164c[_0xb7e5('0x53')](0x0);_0x53164c[_0xb7e5('0x54')]=_0x53164c['request'][_0xb7e5('0x52')][_0xb7e5('0x55')]+':'+_0x53164c['request'][_0xb7e5('0x52')][_0xb7e5('0x56')];_0x53164c['connectedAt']=new Date();_0x53164c[_0xb7e5('0x57')]=function(_0x11f994){console[_0xb7e5('0x57')](_0xb7e5('0x58')+_0x53164c['nsp'][_0xb7e5('0x5')]+'['+_0x53164c['address']+']',_0x11f994);};_0x53164c['on']('disconnect',function(){onDisconnect(_0x53164c,_0x4671d0);_0x53164c[_0xb7e5('0x57')](_0xb7e5('0x59'));});onConnect(_0x53164c);_0x53164c[_0xb7e5('0x57')](_0xb7e5('0x5a'));});};
\ No newline at end of file
index 99b1026..8485ade 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0x3bf4=['OpenchannelInteraction','Openchannel','OpenchannelMessage','request','EventManager','info','Trigger,\x20%s','error','get','channel','motionChannel','event','direction','resolve','then','ContactId','SELECT\x20*\x20FROM\x20cm_contacts\x20WHERE\x20id\x20=\x20','sequelize','query','contact','UserId','undefined','format','SIP/%s','name','agent','incomingmessage','outgoingmessage','AfterCreateMessage','offlineMessage','opened','Sequelize','QueryTypes','SELECT','interface','AfterCreate','changed','closed','substatus','AfterUpdate','find','fullname','email','internal','default','length','model','hook','callback','../../mysqldb','../logger','http','Chat','ChatInteraction','newinteraction','afterUpdate','closedinteraction','ChatMessage','newmessage','Sms','SmsInteraction','afterCreate','SmsMessage','WhatsappInteraction','Whatsapp','WhatsappMessage','Fax','FaxInteraction','FaxMessage','MailInteraction','Mail','MailMessage'];(function(_0xd26d2a,_0x2d9603){var _0x388395=function(_0x361e92){while(--_0x361e92){_0xd26d2a['push'](_0xd26d2a['shift']());}};_0x388395(++_0x2d9603);}(_0x3bf4,0x1e1));var _0x43bf=function(_0x5e8682,_0x58817b){_0x5e8682=_0x5e8682-0x0;var _0x44a92e=_0x3bf4[_0x5e8682];return _0x44a92e;};'use strict';var util=require('util');var db=require(_0x43bf('0x0'))['db'];var jayson=require('jayson/promise');var logger=require(_0x43bf('0x1'))('triggers');var client=jayson['client'][_0x43bf('0x2')]({'port':0x232a});var triggers=[{'channel':_0x43bf('0x3'),'model':_0x43bf('0x4'),'event':'afterCreate','condition':_0x43bf('0x5'),'callback':afterCreate},{'channel':_0x43bf('0x3'),'model':_0x43bf('0x4'),'event':_0x43bf('0x6'),'condition':_0x43bf('0x7'),'callback':afterUpdate},{'channel':_0x43bf('0x3'),'model':_0x43bf('0x8'),'event':'afterCreate','condition':_0x43bf('0x9'),'callback':afterCreateMessage},{'channel':_0x43bf('0x3'),'model':'ChatOfflineMessage','event':'afterCreate','condition':_0x43bf('0x9'),'callback':afterCreateOfflineMessage},{'channel':_0x43bf('0xa'),'model':_0x43bf('0xb'),'event':_0x43bf('0xc'),'condition':'newinteraction','callback':afterCreate},{'channel':_0x43bf('0xa'),'model':_0x43bf('0xb'),'event':'afterUpdate','condition':_0x43bf('0x7'),'callback':afterUpdate},{'channel':_0x43bf('0xa'),'model':_0x43bf('0xd'),'event':'afterCreate','condition':_0x43bf('0x9'),'callback':afterCreateMessage},{'channel':'Whatsapp','model':_0x43bf('0xe'),'event':_0x43bf('0xc'),'condition':_0x43bf('0x5'),'callback':afterCreate},{'channel':_0x43bf('0xf'),'model':_0x43bf('0xe'),'event':_0x43bf('0x6'),'condition':_0x43bf('0x7'),'callback':afterUpdate},{'channel':_0x43bf('0xf'),'model':_0x43bf('0x10'),'event':_0x43bf('0xc'),'condition':'newmessage','callback':afterCreateMessage},{'channel':_0x43bf('0x11'),'model':_0x43bf('0x12'),'event':_0x43bf('0xc'),'condition':_0x43bf('0x5'),'callback':afterCreate},{'channel':'Fax','model':_0x43bf('0x12'),'event':'afterUpdate','condition':_0x43bf('0x7'),'callback':afterUpdate},{'channel':_0x43bf('0x11'),'model':_0x43bf('0x13'),'event':_0x43bf('0xc'),'condition':_0x43bf('0x9'),'callback':afterCreateMessage},{'channel':'Mail','model':_0x43bf('0x14'),'event':_0x43bf('0xc'),'condition':_0x43bf('0x5'),'callback':afterCreate},{'channel':_0x43bf('0x15'),'model':_0x43bf('0x14'),'event':_0x43bf('0x6'),'condition':_0x43bf('0x7'),'callback':afterUpdate},{'channel':_0x43bf('0x15'),'model':_0x43bf('0x16'),'event':'afterCreate','condition':_0x43bf('0x9'),'callback':afterCreateMessage},{'channel':'Openchannel','model':_0x43bf('0x17'),'event':'afterCreate','condition':_0x43bf('0x5'),'callback':afterCreate},{'channel':_0x43bf('0x18'),'model':_0x43bf('0x17'),'event':_0x43bf('0x6'),'condition':_0x43bf('0x7'),'callback':afterUpdate},{'channel':_0x43bf('0x18'),'model':_0x43bf('0x19'),'event':_0x43bf('0xc'),'condition':_0x43bf('0x9'),'callback':afterCreateMessage}];function request(_0x381315){return client[_0x43bf('0x1a')](_0x43bf('0x1b'),_0x381315)['then'](function(_0x5ef871){logger[_0x43bf('0x1c')](_0x43bf('0x1d'),'EventManager',_0x5ef871);if(_0x5ef871[_0x43bf('0x1e')]){if(_0x5ef871[_0x43bf('0x1e')]['code']===0x1f4){logger[_0x43bf('0x1e')]('Trigger,\x20%s','EventManager',_0x5ef871[_0x43bf('0x1e')]);}}})['catch'](function(_0x51d8ff){logger[_0x43bf('0x1e')](_0x43bf('0x1d'),_0x43bf('0x1b'),_0x51d8ff);});}function afterCreateMessage(_0xc432e5){return function(_0x4f7cfc){_0x4f7cfc=_0x4f7cfc[_0x43bf('0x1f')]({'plain':!![]});_0x4f7cfc[_0x43bf('0x20')]=_0xc432e5;_0x4f7cfc[_0x43bf('0x21')]=_0xc432e5;_0x4f7cfc[_0x43bf('0x22')]=_0x4f7cfc[_0x43bf('0x23')];Promise[_0x43bf('0x24')]()[_0x43bf('0x25')](function(){if(typeof _0x4f7cfc[_0x43bf('0x26')]==='undefined')return null;var _0x42f05e=_0x43bf('0x27')+_0x4f7cfc[_0x43bf('0x26')];return db[_0x43bf('0x28')][_0x43bf('0x29')](_0x42f05e,{'type':db['Sequelize']['QueryTypes']['SELECT'],'raw':!![]});})[_0x43bf('0x25')](function(_0x5d433e){if(_0x5d433e){_0x4f7cfc[_0x43bf('0x2a')]=_0x5d433e[0x0];}if(typeof _0x4f7cfc[_0x43bf('0x2b')]===_0x43bf('0x2c'))return;return getAgent(_0x4f7cfc[_0x43bf('0x2b')]);})[_0x43bf('0x25')](function(_0x39d155){if(_0x39d155){_0x4f7cfc['interface']=util[_0x43bf('0x2d')](_0x43bf('0x2e'),_0x39d155[_0x43bf('0x2f')]);_0x4f7cfc[_0x43bf('0x30')]=_0x39d155;_0x4f7cfc[_0x43bf('0x20')]=_0xc432e5;return request({'event':_0x43bf('0x31'),'message':_0x4f7cfc});}else{return request({'event':_0x43bf('0x32'),'message':_0x4f7cfc});}})['catch'](function(_0x503826){logger[_0x43bf('0x1e')](_0x43bf('0x1d'),_0x43bf('0x33'),_0x503826);});};}function afterCreateOfflineMessage(_0x2fcefd){return function(_0x2ba1e9){_0x2ba1e9=_0x2ba1e9[_0x43bf('0x1f')]({'plain':!![]});_0x2ba1e9[_0x43bf('0x20')]=_0x2fcefd;_0x2ba1e9[_0x43bf('0x21')]=_0x2fcefd;_0x2ba1e9[_0x43bf('0x22')]=_0x43bf('0x34');return request({'event':_0x2ba1e9['event'],'message':_0x2ba1e9});};}function afterCreate(_0x363ada,_0xe0dc8){return function(_0x3559ed){_0x3559ed=_0x3559ed['get']({'plain':!![]});_0x3559ed[_0x43bf('0x20')]=_0x363ada;_0x3559ed['motionChannel']=_0x363ada;_0x3559ed[_0x43bf('0x22')]=_0x43bf('0x35');Promise['resolve']()['then'](function(){var _0x15b214=_0x43bf('0x27')+_0x3559ed[_0x43bf('0x26')];return db['sequelize']['query'](_0x15b214,{'type':db[_0x43bf('0x36')][_0x43bf('0x37')][_0x43bf('0x38')],'raw':!![]});})[_0x43bf('0x25')](function(_0x1d1de9){if(_0x1d1de9){_0x3559ed[_0x43bf('0x2a')]=_0x1d1de9[0x0];}if(typeof _0x3559ed[_0x43bf('0x2b')]==='undefined')return;return getAgent(_0x3559ed['UserId']);})[_0x43bf('0x25')](function(_0x20d698){if(_0x20d698){_0x3559ed[_0x43bf('0x39')]=util[_0x43bf('0x2d')](_0x43bf('0x2e'),_0x20d698[_0x43bf('0x2f')]);_0x3559ed['agent']=_0x20d698;}return request({'event':_0xe0dc8,'message':_0x3559ed});})['catch'](function(_0x23912a){logger[_0x43bf('0x1e')]('Trigger,\x20%s',_0x43bf('0x3a'),_0x23912a);});};}function afterUpdate(_0xfe777b){return function(_0x40d52f){var _0x260b63=_0x40d52f[_0x43bf('0x3b')](_0x43bf('0x3c'))&&_0x40d52f['closed'];var _0x5cd420=_0x40d52f[_0x43bf('0x3b')](_0x43bf('0x3d'));if(_0x260b63||_0x5cd420){var _0x37a8fb=_0x260b63?_0x43bf('0x7'):'substatus';var _0x140272=_0x40d52f['get']({'plain':!![]});_0x140272[_0x43bf('0x20')]=_0xfe777b;_0x140272[_0x43bf('0x21')]=_0xfe777b;_0x140272[_0x43bf('0x22')]=_0x260b63?_0x43bf('0x3c'):_0x43bf('0x3d');var _0x5136c9='SELECT\x20*\x20FROM\x20cm_contacts\x20WHERE\x20id\x20=\x20'+_0x140272['ContactId'];return db[_0x43bf('0x28')]['query'](_0x5136c9,{'type':db[_0x43bf('0x36')]['QueryTypes'][_0x43bf('0x38')],'raw':!![]})[_0x43bf('0x25')](function(_0x243bfb){if(_0x243bfb){_0x140272['contact']=_0x243bfb[0x0];}if(typeof _0x140272[_0x43bf('0x2b')]===_0x43bf('0x2c'))return;return getAgent(_0x140272[_0x43bf('0x2b')]);})[_0x43bf('0x25')](function(_0x43396){if(_0x43396){_0x140272[_0x43bf('0x39')]=util[_0x43bf('0x2d')]('SIP/%s',_0x43396[_0x43bf('0x2f')]);_0x140272[_0x43bf('0x30')]=_0x43396;}return request({'event':_0x37a8fb,'message':_0x140272});})['catch'](function(_0x36ee99){logger['error']('Trigger,\x20%s',_0x43bf('0x3e'),_0x36ee99);});}};}function getAgent(_0x332a18){return db['User'][_0x43bf('0x3f')]({'where':{'id':_0x332a18},'attributes':['id',_0x43bf('0x2f'),_0x43bf('0x40'),_0x43bf('0x41'),_0x43bf('0x42')],'raw':!![]})['then'](function(_0x19ae16){return _0x19ae16;});}exports[_0x43bf('0x43')]=function(){for(var _0x3ef99a=0x0;_0x3ef99a<triggers[_0x43bf('0x44')];_0x3ef99a+=0x1){if(db['hasOwnProperty'](triggers[_0x3ef99a][_0x43bf('0x45')])){db[triggers[_0x3ef99a][_0x43bf('0x45')]][_0x43bf('0x46')](triggers[_0x3ef99a][_0x43bf('0x22')],triggers[_0x3ef99a][_0x43bf('0x47')](triggers[_0x3ef99a][_0x43bf('0x20')]['toLowerCase'](),triggers[_0x3ef99a]['condition']));}}};
\ No newline at end of file
index 98d0581..6db6b7b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0x4d36=['whatsapp','openchannel','getChannels','isValidChannel','toLowerCase','includes','isUndefined','blockedAt','updateAttributes','getLicense','role','agent','User','then','agents','Maximum\x20login\x20has\x20been\x20reached','catch','bluebird','../mysqldb','./license/util','voice','chat','fax','sms'];(function(_0x3428ee,_0x4d9716){var _0x4e653c=function(_0x354c59){while(--_0x354c59){_0x3428ee['push'](_0x3428ee['shift']());}};_0x4e653c(++_0x4d9716);}(_0x4d36,0xe9));var _0x64d3=function(_0xce9195,_0x1963e1){_0xce9195=_0xce9195-0x0;var _0x530fe6=_0x4d36[_0xce9195];return _0x530fe6;};'use strict';var _=require('lodash');var BPromise=require(_0x64d3('0x0'));var db=require(_0x64d3('0x1'))['db'];var util=require(_0x64d3('0x2'));var channels=[_0x64d3('0x3'),'mail',_0x64d3('0x4'),_0x64d3('0x5'),_0x64d3('0x6'),_0x64d3('0x7'),_0x64d3('0x8')];exports[_0x64d3('0x9')]=function(){return channels;};exports[_0x64d3('0xa')]=function(_0x2b420a){_0x2b420a=_0x2b420a[_0x64d3('0xb')]();return _[_0x64d3('0xc')](channels,_0x2b420a);};exports['clearBlockUser']=function(_0x8edd37,_0x590526,_0x121430,_0x22463b){var _0x4162b9={'loginAttempts':_0x590526,'blocked':_0x121430};if(!_[_0x64d3('0xd')](_0x22463b)){_0x4162b9[_0x64d3('0xe')]=_0x22463b;}return _0x8edd37[_0x64d3('0xf')](_0x4162b9);};exports[_0x64d3('0x10')]=function(_0x50fe28){return new BPromise(function(_0x43a18e,_0x213f90){var _0x235733=0x0;if(_0x50fe28[_0x64d3('0x11')]!==_0x64d3('0x12')){_0x43a18e(_0x50fe28);}db[_0x64d3('0x13')]['count']({'where':{'role':_0x64d3('0x12'),'online':!![],'id':{'$ne':_0x50fe28['id']}}})[_0x64d3('0x14')](function(_0x2f31c5){_0x235733=_0x2f31c5;return util['getLicense']();})[_0x64d3('0x14')](function(_0xaa40ed){if(_0xaa40ed&&_0xaa40ed[_0x64d3('0x15')]&&_0x235733>=_0xaa40ed[_0x64d3('0x15')]){throw Error(_0x64d3('0x16'));}_0x43a18e(_0x50fe28);})[_0x64d3('0x17')](function(_0x17e191){_0x213f90(_0x17e191);});});};
\ No newline at end of file
index bc45280..dc1ee44 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0xbdb7=['Error','Bad\x20Request','Entity\x20not\x20found','inherits','Forbidden','OutOfInterval','Not\x20Found','status','util','../config/logger','api','message','Internal\x20Server\x20Error','name'];(function(_0x3ab565,_0x93c0c1){var _0x3f01a9=function(_0x373f39){while(--_0x373f39){_0x3ab565['push'](_0x3ab565['shift']());}};_0x3f01a9(++_0x93c0c1);}(_0xbdb7,0x12e));var _0x7bdb=function(_0x176f46,_0x1ae7d4){_0x176f46=_0x176f46-0x0;var _0x3e6691=_0xbdb7[_0x176f46];return _0x3e6691;};'use strict';var util=require(_0x7bdb('0x0'));var logger=require(_0x7bdb('0x1'))(_0x7bdb('0x2'));var APIError=function(_0x2a2c1c,_0x23c326){this[_0x7bdb('0x3')]=_0x2a2c1c||_0x7bdb('0x4');this[_0x7bdb('0x5')]=_0x23c326||_0x7bdb('0x6');util['inherits'](APIError,Error);};var APIBadRequestError=function(_0x28542c){this['message']=_0x28542c||'Bad\x20Request';this[_0x7bdb('0x5')]=_0x7bdb('0x7');util['inherits'](APIBadRequestError,APIError);};var APINotFoundError=function(_0x513cba){this[_0x7bdb('0x3')]=_0x513cba||_0x7bdb('0x8');this['name']='Not\x20Found';util[_0x7bdb('0x9')](APINotFoundError,APIError);};function getStatusCode(_0x1a6b61){switch(_0x1a6b61){case _0x7bdb('0x7'):return 0x190;case _0x7bdb('0xa'),_0x7bdb('0xb'):return 0x193;case _0x7bdb('0xc'):return 0x194;default:return 0x1f4;}}function handleError(_0x297724){return function(_0x258cc6){logger['error'](_0x258cc6['stack']);var _0x52b9b9=getStatusCode(_0x258cc6[_0x7bdb('0x5')]);if(_0x258cc6[_0x7bdb('0x5')])delete _0x258cc6['name'];return _0x297724[_0x7bdb('0xd')](_0x52b9b9)['send'](_0x258cc6);};}module['exports']={'APIError':APIError,'APIBadRequestError':APIBadRequestError,'APINotFoundError':APINotFoundError,'handleError':handleError};
\ No newline at end of file
index ad7df90..2112af8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0xdfb3=['send','status','render'];(function(_0x46e523,_0xe6fccb){var _0x5da0ee=function(_0x396682){while(--_0x396682){_0x46e523['push'](_0x46e523['shift']());}};_0x5da0ee(++_0xe6fccb);}(_0xdfb3,0xe2));var _0x3dfb=function(_0x5d7375,_0x358589){_0x5d7375=_0x5d7375-0x0;var _0x3f0da4=_0xdfb3[_0x5d7375];return _0x3f0da4;};'use strict';module['exports'][0x194]=function pageNotFound(_0x3551f7,_0x58ab65){var _0x49c415='404';var _0x5616b2=0x194;var _0x3d07f8={'status':_0x5616b2};_0x58ab65[_0x3dfb('0x0')](_0x3d07f8['status']);_0x58ab65[_0x3dfb('0x1')](_0x49c415,{},function(_0x3297dd,_0x36ce42){if(_0x3297dd){return _0x58ab65[_0x3dfb('0x0')](_0x3d07f8['status'])['json'](_0x3d07f8);}_0x58ab65[_0x3dfb('0x2')](_0x36ce42);});};
\ No newline at end of file
index fc1b62d..224ea8c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0x6eed=['ZohoAccount','../api/intZohoAccount/intZohoAccount.model','../api/intZohoConfiguration/intZohoConfiguration.model','ZohoField','ZendeskAccount','ZendeskConfiguration','ZendeskField','../api/intZendeskField/intZendeskField.model','FreshdeskAccount','../api/intFreshdeskAccount/intFreshdeskAccount.model','FreshdeskConfiguration','FreshdeskField','../api/intFreshdeskField/intFreshdeskField.model','VtigerAccount','../api/intVtigerAccount/intVtigerAccount.model','../api/intVtigerConfiguration/intVtigerConfiguration.model','VtigerField','ServicenowAccount','../api/intServicenowAccount/intServicenowAccount.model','ServicenowConfiguration','ServicenowField','../api/intServicenowField/intServicenowField.model','../api/intDynamics365Account/intDynamics365Account.model','Dynamics365Configuration','../api/intDynamics365Configuration/intDynamics365Configuration.model','../api/intDynamics365Field/intDynamics365Field.model','FreshsalesAccount','../api/intFreshsalesAccount/intFreshsalesAccount.model','FreshsalesConfiguration','../api/intFreshsalesConfiguration/intFreshsalesConfiguration.model','FreshsalesField','../api/intFreshsalesField/intFreshsalesField.model','../api/network/network.model','ChatInternalMessage','../api/chatInternalMessage/chatInternalMessage.model','JscriptyAnswerReport','../api/jscriptyAnswerReport/jscriptyAnswerReport.model','JscriptyQuestionReport','../api/jscriptyQuestionReport/jscriptyQuestionReport.model','JscriptySessionReport','../api/jscriptySessionReport/jscriptySessionReport.model','SmsQueueReport','SquareReport','../api/squareReport/squareReport.model','SquareDetailsReport','../api/squareReportDetail/squareReportDetail.model','../api/jscriptyProject/jscriptyProject.model','../api/setting/setting.model','SquareOdbc','../api/squareOdbc/squareOdbc.model','SquareProject','../api/squareRecording/squareRecording.model','SquareMessage','../api/squareMessage/squareMessage.model','../api/team/team.model','License','../api/license/license.model','Migration','../api/migration/migration.model','Attachment','../api/attachment/attachment.model','Plugin','MailTransferReport','../api/mailTransferReport/mailTransferReport.model','ChatTransferReport','../api/chatTransferReport/chatTransferReport.model','FaxTransferReport','../api/faxTransferReport/faxTransferReport.model','OpenchannelTransferReport','../api/openchannelTransferReport/openchannelTransferReport.model','CmList','../api/cmList/cmList.model','VoicePrefix','../api/voicePrefix/voicePrefix.model','UserProfile','../api/userProfile/userProfile.model','UserProfileResource','../api/userProfileResource/userProfileResource.model','UserNotification','../api/userNotification/userNotification.model','../api/whatsappAccount/whatsappAccount.model','WhatsappApplication','WhatsappInteraction','../api/whatsappInteraction/whatsappInteraction.model','WhatsappMessage','../api/whatsappMessage/whatsappMessage.model','WhatsappQueueReport','../api/whatsappQueueReport/whatsappQueueReport.model','WhatsappTransferReport','../api/whatsappTransferReport/whatsappTransferReport.model','WhatsappQueue','CloudProvider','../api/teamVoiceQueue/teamVoiceQueue.model','TeamVoicePrefix','UserSetting','../api/user-setting/user-setting.model','hasOne','VoiceMail','cascade','UserId','hasMany','Recordings','VoiceQueuesRt','HopperFinals','ReportAgentPreview','OpenchannelInteraction','OpenchannelInteractions','ChatInteraction','ChatInteractions','MailInteraction','MailInteractions','WhatsappInteractions','userProfileId','belongsToMany','Groups','chat_group_has_users','CmContact','Contacts','cm_user_has_contacts','Lists','Team','user_has_teams','user_has_mail_interactions','user_has_chat_interactions','FaxInteractions','user_has_fax_interactions','SmsInteractions','user_has_sms_interactions','user_has_openchannel_interactions','user_has_whatsapp_interactions','VoiceQueue','VoiceQueues','VoicePrefixes','UserVoicePrefix','UserMailQueue','FaxQueues','SmsQueues','OpenchannelQueue','OpenchannelQueues','UserOpenchannelQueue','WhatsappQueues','ChatWebsites','FaxAccounts','MailAccounts','user_has_mail_accounts','OpenchannelAccounts','SmsAccounts','user_has_sms_accounts','WhatsappAccount','WhatsappAccounts','user_has_whatsapp_accounts','VoiceChanSpy','SpiedAgents','ChanSpyId','Applications','moh_has_sounds','VoiceQueueId','Hoppers','CmHopperHistory','HopperHistories','HopperBlacks','JscriptySessions','belongsTo','TrunkId','TrunkBackupId','IntervalId','Pause','mandatoryDispositionPause','mandatoryDispositionPauseId','voice_queues_has_cm_lists','Agents','Teams','TeamVoiceQueue','BlackLists','voice_queues_has_cm_blacklists','ScreenRecording','Messages','mailbox','mailboxuser','VoiceCallReport','QueueCalls','uniqueid','AgentReports','Contact','CloudProviderId','restrict','MailAccountId','Smtp','Dispositions','Answers','Interactions','MailApplication','List','ListId','Template','TemplateId','MailQueue','team_has_mail_queues','MailInteractionId','Tag','mail_interaction_has_tags','Tags','ThroughTags','Users','Attachments','Interaction','Account','ChatWebsiteId','TagId','ContactId','Items','FaxAccountId','user_has_fax_accounts','FaxInteractionId','Owner','fax_interaction_has_tags','team_has_fax_queues','FaxQueueReport','SmsAccountId','SmsInteractionId','sms_interaction_has_tags','UserSmsQueue','SmsQueueId','team_has_sms_queues','OpenchannelAccountId','user_has_openchannel_accounts','OpenchannelQueueId','OpenchannelInteractionId','openchannel_interaction_has_tags','AttachmentId','team_has_openchannel_queues','ProactiveActions','Agent','Queue','ChatQueueId','Website','chat_interaction_has_tags','ChatInteractionId','team_has_chat_queues','ChatGroupId','Members','CompanyId','Phones','CmContactId','Company','cm_contact_has_tags','AdditionalPhones','Campaign','CampaignId','OwnerId','All','OneAll','AutomationAllId','OneAny','Actions','ParentId','Intervals','Extensions','MailApplications','ChatApplications','FaxApplications','DefaultReportId','Mohs','whatsapp_interaction_has_tags','ContactItemType','ItemType','ItemTypeId','Hopper','CmHopperId','AllConditions','AnyConditions','AnyCondition','TriggerAnyId','TriggerId','Fields','CustomReportId','MetricId','SalesforceConfiguration','Configurations','AccountId','SalesforceField','Subjects','FieldId','Subject','DescriptionId','Field','Variable','SubjectId','SugarcrmField','Description','VariableId','DeskConfiguration','int_desk_configuration_has_tags','ZohoConfiguration','Descriptions','int_freshdesk_configuration_has_tags','VtigerConfiguration','Dynamics365Account','Dynamics365Field','ChatQueueReport','FromId','ToId','SessionId','ProjectId','ChatQueues','team_has_whatsapp_queues','TrunkBackup','SquareProjectId','campaigns_has_cm_blacklists','ChatOfflineMessageId','FromMailAccountId','FromAccount','FromAgent','ToAgent','ToMailAccountId','ToAccount','FromUserId','ToUserId','ToChatQueueId','ToQueue','ToChatWebsiteId','FromFaxAccountId','ToFaxAccountId','FromOpenchannelAccountId','ToOpenchannelQueueId','SmsTransferReport','FromSmsAccountId','ToSmsQueueId','HopperHistory','cm_user_has_lists','sectionId','WhatsappInteractionId','WhatsappAccountId','FromWhatsappAccountId','ToWhatsappAccountId','ToQueueId','user','Imap','exports','../config/environment','lodash','jstz','sequelize','defaultsDeep','motion2','xC@LL1234','127.0.0.1','mysql','utf8mb4','utf8','utf8_general_ci','sequelizeHistory','name','username','password','options','User','import','../api/user/user.model','VoiceContext','../api/voiceContext/voiceContext.model','VoiceExtension','VoiceMusicOnHold','../api/voiceMusicOnHold/voiceMusicOnHold.model','../api/voiceQueue/voiceQueue.model','VoiceRecording','../api/voiceRecording/voiceRecording.model','../api/screenRecording/screenRecording.model','../api/voiceMail/voiceMail.model','VoiceMailMessage','../api/voiceCallReport/voiceCallReport.model','VoiceDialReport','../api/voiceDialReport/voiceDialReport.model','VoiceAgentReport','../api/voiceAgentReport/voiceAgentReport.model','VoiceQueueReport','../api/memberReport/memberReport.model','Trunk','VoiceTransferReport','../api/voiceTransferReport/voiceTransferReport.model','../api/userVoiceQueueRt/userVoiceQueueRt.model','UserVoiceQueue','../api/userVoiceQueue/userVoiceQueue.model','UserChatQueue','UserFaxQueue','../api/userFaxQueue/userFaxQueue.model','../api/userSmsQueue/userSmsQueue.model','../api/userOpenchannelQueue/userOpenchannelQueue.model','UserWhatsappQueue','MailServerIn','../api/mailServerIn/mailServerIn.model','MailServerOut','MailAccount','../api/mailAccount/mailAccount.model','../api/mailSubstatus/mailSubstatus.model','../api/mailInteraction/mailInteraction.model','MailMessage','../api/mailMessage/mailMessage.model','../api/mailApplication/mailApplication.model','MailQueueReport','../api/mailQueueReport/mailQueueReport.model','Dashboard','../api/dashboard/dashboard.model','DashboardItem','../api/dashboardItem/dashboardItem.model','FaxAccount','../api/faxAccount/faxAccount.model','FaxApplication','FaxInteraction','../api/faxInteraction/faxInteraction.model','FaxMessage','../api/faxMessage/faxMessage.model','FaxQueue','../api/faxQueueReport/faxQueueReport.model','SmsAccount','SmsApplication','../api/smsApplication/smsApplication.model','SmsInteraction','SmsMessage','../api/smsMessage/smsMessage.model','SmsQueue','../api/smsQueue/smsQueue.model','OpenchannelAccount','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/chatInteraction/chatInteraction.model','ChatMessage','../api/chatMessage/chatMessage.model','ChatOfflineMessage','../api/chatOfflineMessage/chatOfflineMessage.model','ChatQueue','../api/chatQueue/chatQueue.model','ChatGroup','../api/chatGroup/chatGroup.model','ChatProactiveAction','CmCompany','../api/cmContact/cmContact.model','CmHopper','CmHopperBlack','../api/cmHopperBlack/cmHopperBlack.model','CmHopperFinal','../api/cmHopperFinal/cmHopperFinal.model','../api/cmHopperHistory/cmHopperHistory.model','../api/reportAgentPreview/reportAgentPreview.model','../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','../api/pause/pause.model','../api/cdr/cdr.model','VoiceQueuesLog','Schedule','../api/schedule/schedule.model','Sound','../api/sound/sound.model','../api/contactItemType/contactItemType.model','CmContactHasItem','../api/cmContactHasItem/cmContactHasItem.model','CmHopperAdditionalPhone','../api/cmHopperAdditionalPhone/cmHopperAdditionalPhone.model','../api/template/template.model','Trigger','../api/trigger/trigger.model','../api/variable/variable.model','Integration','../api/integration/integration.model','IntegrationReport','../api/integrationReport/integrationReport.model','AnalyticCustomReport','../api/analyticCustomReport/analyticCustomReport.model','AnalyticDefaultReport','../api/analyticDefaultReport/analyticDefaultReport.model','AnalyticExtractedReport','../api/analyticExtractedReport/analyticExtractedReport.model','AnalyticMetric','../api/analyticMetric/analyticMetric.model','AnalyticFieldReport','../api/analyticFieldReport/analyticFieldReport.model','SalesforceAccount','../api/intSalesforceAccount/intSalesforceAccount.model','../api/intSalesforceField/intSalesforceField.model','SugarcrmAccount','../api/intSugarcrmAccount/intSugarcrmAccount.model','SugarcrmConfiguration','../api/intSugarcrmField/intSugarcrmField.model','DeskAccount','../api/intDeskAccount/intDeskAccount.model','DeskField'];(function(_0x520590,_0xf0c04f){var _0x4bc6f6=function(_0x120d2b){while(--_0x120d2b){_0x520590['push'](_0x520590['shift']());}};_0x4bc6f6(++_0xf0c04f);}(_0x6eed,0x153));var _0xd6ee=function(_0xa0c1e9,_0x2c75ff){_0xa0c1e9=_0xa0c1e9-0x0;var _0xcf62fe=_0x6eed[_0xa0c1e9];return _0xcf62fe;};'use strict';var config=require(_0xd6ee('0x0'));var Sequelize=require('sequelize');var _=require(_0xd6ee('0x1'));var jstz=require(_0xd6ee('0x2'));var timezone=jstz['determine']();config[_0xd6ee('0x3')]=_[_0xd6ee('0x4')](config[_0xd6ee('0x3')],{'database':_0xd6ee('0x5'),'username':'xcall','password':_0xd6ee('0x6'),'options':{'host':_0xd6ee('0x7'),'port':0xcea,'dialect':_0xd6ee('0x8'),'dialectOptions':{'charset':_0xd6ee('0x9')},'logging':![],'timezone':timezone['name'](),'define':{'charset':_0xd6ee('0xa'),'collate':_0xd6ee('0xb')}}});config[_0xd6ee('0xc')]=_[_0xd6ee('0x4')](config[_0xd6ee('0xc')],{'database':'motion2','username':'xcall','password':'xC@LL1234','options':{'host':_0xd6ee('0x7'),'port':0xcea,'dialect':'mysql','dialectOptions':{'charset':_0xd6ee('0x9')},'logging':![],'timezone':timezone[_0xd6ee('0xd')](),'define':{'charset':'utf8','collate':_0xd6ee('0xb')}}});var db={'Sequelize':Sequelize,'sequelize':new Sequelize(config['sequelize']['database'],config['sequelize'][_0xd6ee('0xe')],config['sequelize'][_0xd6ee('0xf')],config[_0xd6ee('0x3')][_0xd6ee('0x10')])};var dbH={'Sequelize':Sequelize,'sequelize':new Sequelize(config[_0xd6ee('0xc')]['database'],config[_0xd6ee('0xc')][_0xd6ee('0xe')],config[_0xd6ee('0xc')][_0xd6ee('0xf')],config[_0xd6ee('0xc')][_0xd6ee('0x10')])};db[_0xd6ee('0x11')]=db[_0xd6ee('0x3')][_0xd6ee('0x12')](_0xd6ee('0x13'));db['VoiceChanSpy']=db['sequelize'][_0xd6ee('0x12')]('../api/voiceChanSpy/voiceChanSpy.model');db[_0xd6ee('0x14')]=db[_0xd6ee('0x3')][_0xd6ee('0x12')](_0xd6ee('0x15'));db[_0xd6ee('0x16')]=db[_0xd6ee('0x3')][_0xd6ee('0x12')]('../api/voiceExtension/voiceExtension.model');db[_0xd6ee('0x17')]=db['sequelize'][_0xd6ee('0x12')](_0xd6ee('0x18'));db['VoiceQueue']=db[_0xd6ee('0x3')][_0xd6ee('0x12')](_0xd6ee('0x19'));db[_0xd6ee('0x1a')]=db[_0xd6ee('0x3')][_0xd6ee('0x12')](_0xd6ee('0x1b'));db['ScreenRecording']=db[_0xd6ee('0x3')][_0xd6ee('0x12')](_0xd6ee('0x1c'));db['VoiceMail']=db[_0xd6ee('0x3')][_0xd6ee('0x12')](_0xd6ee('0x1d'));db[_0xd6ee('0x1e')]=db[_0xd6ee('0x3')]['import']('../api/voiceMailMessage/voiceMailMessage.model');db['VoiceCallReport']=db[_0xd6ee('0x3')][_0xd6ee('0x12')](_0xd6ee('0x1f'));db[_0xd6ee('0x20')]=db[_0xd6ee('0x3')]['import'](_0xd6ee('0x21'));db[_0xd6ee('0x22')]=db[_0xd6ee('0x3')][_0xd6ee('0x12')](_0xd6ee('0x23'));db[_0xd6ee('0x24')]=db[_0xd6ee('0x3')][_0xd6ee('0x12')]('../api/voiceQueueReport/voiceQueueReport.model');db['MemberReport']=db[_0xd6ee('0x3')][_0xd6ee('0x12')](_0xd6ee('0x25'));db[_0xd6ee('0x26')]=db[_0xd6ee('0x3')][_0xd6ee('0x12')]('../api/trunk/trunk.model');db[_0xd6ee('0x27')]=db[_0xd6ee('0x3')]['import'](_0xd6ee('0x28'));db['UserVoiceQueueRt']=db[_0xd6ee('0x3')][_0xd6ee('0x12')](_0xd6ee('0x29'));db[_0xd6ee('0x2a')]=db[_0xd6ee('0x3')][_0xd6ee('0x12')](_0xd6ee('0x2b'));db[_0xd6ee('0x2c')]=db[_0xd6ee('0x3')][_0xd6ee('0x12')]('../api/userChatQueue/userChatQueue.model');db['UserMailQueue']=db[_0xd6ee('0x3')][_0xd6ee('0x12')]('../api/userMailQueue/userMailQueue.model');db[_0xd6ee('0x2d')]=db['sequelize']['import'](_0xd6ee('0x2e'));db['UserSmsQueue']=db[_0xd6ee('0x3')]['import'](_0xd6ee('0x2f'));db['UserOpenchannelQueue']=db['sequelize']['import'](_0xd6ee('0x30'));db[_0xd6ee('0x31')]=db['sequelize'][_0xd6ee('0x12')]('../api/userWhatsappQueue/userWhatsappQueue.model');db[_0xd6ee('0x32')]=db[_0xd6ee('0x3')][_0xd6ee('0x12')](_0xd6ee('0x33'));db[_0xd6ee('0x34')]=db[_0xd6ee('0x3')][_0xd6ee('0x12')]('../api/mailServerOut/mailServerOut.model');db[_0xd6ee('0x35')]=db['sequelize'][_0xd6ee('0x12')](_0xd6ee('0x36'));db['MailQueue']=db['sequelize']['import']('../api/mailQueue/mailQueue.model');db['MailSubstatus']=db[_0xd6ee('0x3')]['import'](_0xd6ee('0x37'));db['MailInteraction']=db[_0xd6ee('0x3')][_0xd6ee('0x12')](_0xd6ee('0x38'));db[_0xd6ee('0x39')]=db[_0xd6ee('0x3')][_0xd6ee('0x12')](_0xd6ee('0x3a'));db['MailApplication']=db[_0xd6ee('0x3')]['import'](_0xd6ee('0x3b'));db[_0xd6ee('0x3c')]=db[_0xd6ee('0x3')][_0xd6ee('0x12')](_0xd6ee('0x3d'));db[_0xd6ee('0x3e')]=db[_0xd6ee('0x3')][_0xd6ee('0x12')](_0xd6ee('0x3f'));db[_0xd6ee('0x40')]=db[_0xd6ee('0x3')][_0xd6ee('0x12')](_0xd6ee('0x41'));db[_0xd6ee('0x42')]=db['sequelize'][_0xd6ee('0x12')](_0xd6ee('0x43'));db[_0xd6ee('0x44')]=db[_0xd6ee('0x3')][_0xd6ee('0x12')]('../api/faxApplication/faxApplication.model');db[_0xd6ee('0x45')]=db[_0xd6ee('0x3')][_0xd6ee('0x12')](_0xd6ee('0x46'));db[_0xd6ee('0x47')]=db[_0xd6ee('0x3')][_0xd6ee('0x12')](_0xd6ee('0x48'));db[_0xd6ee('0x49')]=db[_0xd6ee('0x3')][_0xd6ee('0x12')]('../api/faxQueue/faxQueue.model');db['FaxQueueReport']=db[_0xd6ee('0x3')][_0xd6ee('0x12')](_0xd6ee('0x4a'));db[_0xd6ee('0x4b')]=db[_0xd6ee('0x3')][_0xd6ee('0x12')]('../api/smsAccount/smsAccount.model');db[_0xd6ee('0x4c')]=db['sequelize'][_0xd6ee('0x12')](_0xd6ee('0x4d'));db[_0xd6ee('0x4e')]=db['sequelize'][_0xd6ee('0x12')]('../api/smsInteraction/smsInteraction.model');db[_0xd6ee('0x4f')]=db[_0xd6ee('0x3')]['import'](_0xd6ee('0x50'));db[_0xd6ee('0x51')]=db[_0xd6ee('0x3')][_0xd6ee('0x12')](_0xd6ee('0x52'));db[_0xd6ee('0x53')]=db[_0xd6ee('0x3')]['import']('../api/openchannelAccount/openchannelAccount.model');db[_0xd6ee('0x54')]=db[_0xd6ee('0x3')][_0xd6ee('0x12')](_0xd6ee('0x55'));db['OpenchannelInteraction']=db[_0xd6ee('0x3')][_0xd6ee('0x12')](_0xd6ee('0x56'));db[_0xd6ee('0x57')]=db[_0xd6ee('0x3')][_0xd6ee('0x12')]('../api/openchannelMessage/openchannelMessage.model');db['OpenchannelQueue']=db['sequelize'][_0xd6ee('0x12')](_0xd6ee('0x58'));db[_0xd6ee('0x59')]=db['sequelize'][_0xd6ee('0x12')](_0xd6ee('0x5a'));db[_0xd6ee('0x5b')]=db[_0xd6ee('0x3')][_0xd6ee('0x12')](_0xd6ee('0x5c'));db[_0xd6ee('0x5d')]=db[_0xd6ee('0x3')][_0xd6ee('0x12')]('../api/chatApplication/chatApplication.model');db['ChatInteraction']=db['sequelize'][_0xd6ee('0x12')](_0xd6ee('0x5e'));db[_0xd6ee('0x5f')]=db[_0xd6ee('0x3')][_0xd6ee('0x12')](_0xd6ee('0x60'));db[_0xd6ee('0x61')]=db[_0xd6ee('0x3')]['import'](_0xd6ee('0x62'));db[_0xd6ee('0x63')]=db[_0xd6ee('0x3')][_0xd6ee('0x12')](_0xd6ee('0x64'));db[_0xd6ee('0x65')]=db[_0xd6ee('0x3')][_0xd6ee('0x12')](_0xd6ee('0x66'));db[_0xd6ee('0x67')]=db[_0xd6ee('0x3')][_0xd6ee('0x12')]('../api/chatProactiveAction/chatProactiveAction.model');db[_0xd6ee('0x68')]=db[_0xd6ee('0x3')][_0xd6ee('0x12')]('../api/cmCompany/cmCompany.model');db['CmContact']=db[_0xd6ee('0x3')][_0xd6ee('0x12')](_0xd6ee('0x69'));db[_0xd6ee('0x6a')]=db[_0xd6ee('0x3')][_0xd6ee('0x12')]('../api/cmHopper/cmHopper.model');db[_0xd6ee('0x6b')]=db[_0xd6ee('0x3')][_0xd6ee('0x12')](_0xd6ee('0x6c'));db[_0xd6ee('0x6d')]=db['sequelize'][_0xd6ee('0x12')](_0xd6ee('0x6e'));db['CmHopperHistory']=db[_0xd6ee('0x3')]['import'](_0xd6ee('0x6f'));db['ReportAgentPreview']=db[_0xd6ee('0x3')]['import'](_0xd6ee('0x70'));db['CmCustomField']=db['sequelize'][_0xd6ee('0x12')](_0xd6ee('0x71'));db[_0xd6ee('0x72')]=db['sequelize'][_0xd6ee('0x12')](_0xd6ee('0x73'));db[_0xd6ee('0x74')]=db['sequelize'][_0xd6ee('0x12')]('../api/automation/automation.model');db[_0xd6ee('0x75')]=db[_0xd6ee('0x3')]['import'](_0xd6ee('0x76'));db[_0xd6ee('0x77')]=db[_0xd6ee('0x3')][_0xd6ee('0x12')](_0xd6ee('0x78'));db[_0xd6ee('0x79')]=db['sequelize'][_0xd6ee('0x12')](_0xd6ee('0x7a'));db[_0xd6ee('0x7b')]=db['sequelize'][_0xd6ee('0x12')](_0xd6ee('0x7c'));db['Pause']=db[_0xd6ee('0x3')][_0xd6ee('0x12')](_0xd6ee('0x7d'));db['Cdr']=db[_0xd6ee('0x3')][_0xd6ee('0x12')](_0xd6ee('0x7e'));db[_0xd6ee('0x7f')]=db[_0xd6ee('0x3')][_0xd6ee('0x12')]('../api/voiceQueuesLog/voiceQueuesLog.model');db[_0xd6ee('0x80')]=db['sequelize']['import'](_0xd6ee('0x81'));db[_0xd6ee('0x82')]=db[_0xd6ee('0x3')][_0xd6ee('0x12')](_0xd6ee('0x83'));db['Tag']=db[_0xd6ee('0x3')]['import']('../api/tag/tag.model');db['ContactItemType']=db[_0xd6ee('0x3')]['import'](_0xd6ee('0x84'));db[_0xd6ee('0x85')]=db[_0xd6ee('0x3')][_0xd6ee('0x12')](_0xd6ee('0x86'));db[_0xd6ee('0x87')]=db[_0xd6ee('0x3')][_0xd6ee('0x12')](_0xd6ee('0x88'));db['Template']=db[_0xd6ee('0x3')][_0xd6ee('0x12')](_0xd6ee('0x89'));db[_0xd6ee('0x8a')]=db[_0xd6ee('0x3')][_0xd6ee('0x12')](_0xd6ee('0x8b'));db['Variable']=db['sequelize'][_0xd6ee('0x12')](_0xd6ee('0x8c'));db[_0xd6ee('0x8d')]=db[_0xd6ee('0x3')][_0xd6ee('0x12')](_0xd6ee('0x8e'));db[_0xd6ee('0x8f')]=db[_0xd6ee('0x3')][_0xd6ee('0x12')](_0xd6ee('0x90'));db[_0xd6ee('0x91')]=db[_0xd6ee('0x3')]['import'](_0xd6ee('0x92'));db[_0xd6ee('0x93')]=db[_0xd6ee('0x3')]['import'](_0xd6ee('0x94'));db[_0xd6ee('0x95')]=db['sequelize'][_0xd6ee('0x12')](_0xd6ee('0x96'));db[_0xd6ee('0x97')]=db['sequelize'][_0xd6ee('0x12')](_0xd6ee('0x98'));db[_0xd6ee('0x99')]=db[_0xd6ee('0x3')][_0xd6ee('0x12')](_0xd6ee('0x9a'));db['AnalyticTreeReport']=db[_0xd6ee('0x3')][_0xd6ee('0x12')]('../api/analyticTreeReport/analyticTreeReport.model');db[_0xd6ee('0x9b')]=db[_0xd6ee('0x3')][_0xd6ee('0x12')](_0xd6ee('0x9c'));db['SalesforceConfiguration']=db[_0xd6ee('0x3')]['import']('../api/intSalesforceConfiguration/intSalesforceConfiguration.model');db['SalesforceField']=db['sequelize'][_0xd6ee('0x12')](_0xd6ee('0x9d'));db[_0xd6ee('0x9e')]=db['sequelize']['import'](_0xd6ee('0x9f'));db[_0xd6ee('0xa0')]=db['sequelize']['import']('../api/intSugarcrmConfiguration/intSugarcrmConfiguration.model');db['SugarcrmField']=db[_0xd6ee('0x3')][_0xd6ee('0x12')](_0xd6ee('0xa1'));db[_0xd6ee('0xa2')]=db[_0xd6ee('0x3')][_0xd6ee('0x12')](_0xd6ee('0xa3'));db['DeskConfiguration']=db[_0xd6ee('0x3')]['import']('../api/intDeskConfiguration/intDeskConfiguration.model');db[_0xd6ee('0xa4')]=db['sequelize'][_0xd6ee('0x12')]('../api/intDeskField/intDeskField.model');db[_0xd6ee('0xa5')]=db['sequelize'][_0xd6ee('0x12')](_0xd6ee('0xa6'));db['ZohoConfiguration']=db['sequelize']['import'](_0xd6ee('0xa7'));db[_0xd6ee('0xa8')]=db[_0xd6ee('0x3')]['import']('../api/intZohoField/intZohoField.model');db[_0xd6ee('0xa9')]=db['sequelize'][_0xd6ee('0x12')]('../api/intZendeskAccount/intZendeskAccount.model');db[_0xd6ee('0xaa')]=db[_0xd6ee('0x3')][_0xd6ee('0x12')]('../api/intZendeskConfiguration/intZendeskConfiguration.model');db[_0xd6ee('0xab')]=db['sequelize'][_0xd6ee('0x12')](_0xd6ee('0xac'));db[_0xd6ee('0xad')]=db['sequelize']['import'](_0xd6ee('0xae'));db[_0xd6ee('0xaf')]=db[_0xd6ee('0x3')][_0xd6ee('0x12')]('../api/intFreshdeskConfiguration/intFreshdeskConfiguration.model');db[_0xd6ee('0xb0')]=db['sequelize']['import'](_0xd6ee('0xb1'));db[_0xd6ee('0xb2')]=db[_0xd6ee('0x3')]['import'](_0xd6ee('0xb3'));db['VtigerConfiguration']=db[_0xd6ee('0x3')][_0xd6ee('0x12')](_0xd6ee('0xb4'));db[_0xd6ee('0xb5')]=db[_0xd6ee('0x3')][_0xd6ee('0x12')]('../api/intVtigerField/intVtigerField.model');db[_0xd6ee('0xb6')]=db[_0xd6ee('0x3')][_0xd6ee('0x12')](_0xd6ee('0xb7'));db[_0xd6ee('0xb8')]=db[_0xd6ee('0x3')][_0xd6ee('0x12')]('../api/intServicenowConfiguration/intServicenowConfiguration.model');db[_0xd6ee('0xb9')]=db[_0xd6ee('0x3')][_0xd6ee('0x12')](_0xd6ee('0xba'));db['Dynamics365Account']=db[_0xd6ee('0x3')]['import'](_0xd6ee('0xbb'));db[_0xd6ee('0xbc')]=db[_0xd6ee('0x3')][_0xd6ee('0x12')](_0xd6ee('0xbd'));db['Dynamics365Field']=db[_0xd6ee('0x3')]['import'](_0xd6ee('0xbe'));db[_0xd6ee('0xbf')]=db[_0xd6ee('0x3')]['import'](_0xd6ee('0xc0'));db[_0xd6ee('0xc1')]=db[_0xd6ee('0x3')][_0xd6ee('0x12')](_0xd6ee('0xc2'));db[_0xd6ee('0xc3')]=db[_0xd6ee('0x3')]['import'](_0xd6ee('0xc4'));db[_0xd6ee('0x8d')]=db[_0xd6ee('0x3')]['import'](_0xd6ee('0x8e'));db['Network']=db[_0xd6ee('0x3')]['import'](_0xd6ee('0xc5'));db['ChatQueueReport']=db[_0xd6ee('0x3')][_0xd6ee('0x12')]('../api/chatQueueReport/chatQueueReport.model');db[_0xd6ee('0xc6')]=db[_0xd6ee('0x3')][_0xd6ee('0x12')](_0xd6ee('0xc7'));db[_0xd6ee('0xc8')]=db[_0xd6ee('0x3')][_0xd6ee('0x12')](_0xd6ee('0xc9'));db[_0xd6ee('0xca')]=db[_0xd6ee('0x3')]['import'](_0xd6ee('0xcb'));db[_0xd6ee('0xcc')]=db['sequelize']['import'](_0xd6ee('0xcd'));db[_0xd6ee('0xce')]=db['sequelize'][_0xd6ee('0x12')]('../api/smsQueueReport/smsQueueReport.model');db[_0xd6ee('0xcf')]=db[_0xd6ee('0x3')][_0xd6ee('0x12')](_0xd6ee('0xd0'));db[_0xd6ee('0xd1')]=db[_0xd6ee('0x3')][_0xd6ee('0x12')](_0xd6ee('0xd2'));db['JscriptyProject']=db[_0xd6ee('0x3')]['import'](_0xd6ee('0xd3'));db['Setting']=db[_0xd6ee('0x3')][_0xd6ee('0x12')](_0xd6ee('0xd4'));db[_0xd6ee('0xd5')]=db[_0xd6ee('0x3')][_0xd6ee('0x12')](_0xd6ee('0xd6'));db[_0xd6ee('0xd7')]=db[_0xd6ee('0x3')][_0xd6ee('0x12')]('../api/squareProject/squareProject.model');db['SquareRecording']=db[_0xd6ee('0x3')]['import'](_0xd6ee('0xd8'));db[_0xd6ee('0xd9')]=db[_0xd6ee('0x3')]['import'](_0xd6ee('0xda'));db['Team']=db[_0xd6ee('0x3')][_0xd6ee('0x12')](_0xd6ee('0xdb'));db[_0xd6ee('0xdc')]=db['sequelize'][_0xd6ee('0x12')](_0xd6ee('0xdd'));db['Campaign']=db['sequelize'][_0xd6ee('0x12')]('../api/campaign/campaign.model');db[_0xd6ee('0xde')]=db['sequelize'][_0xd6ee('0x12')](_0xd6ee('0xdf'));db[_0xd6ee('0xe0')]=db['sequelize'][_0xd6ee('0x12')](_0xd6ee('0xe1'));db[_0xd6ee('0xe2')]=db[_0xd6ee('0x3')][_0xd6ee('0x12')]('../api/plugin/plugin.model');db[_0xd6ee('0xe3')]=db['sequelize']['import'](_0xd6ee('0xe4'));db[_0xd6ee('0xe5')]=db[_0xd6ee('0x3')]['import'](_0xd6ee('0xe6'));db[_0xd6ee('0xe7')]=db[_0xd6ee('0x3')][_0xd6ee('0x12')](_0xd6ee('0xe8'));db[_0xd6ee('0xe9')]=db[_0xd6ee('0x3')][_0xd6ee('0x12')](_0xd6ee('0xea'));db['SmsTransferReport']=db[_0xd6ee('0x3')]['import']('../api/smsTransferReport/smsTransferReport.model');db[_0xd6ee('0xeb')]=db['sequelize'][_0xd6ee('0x12')](_0xd6ee('0xec'));db[_0xd6ee('0xed')]=db['sequelize'][_0xd6ee('0x12')](_0xd6ee('0xee'));db[_0xd6ee('0xef')]=db[_0xd6ee('0x3')][_0xd6ee('0x12')](_0xd6ee('0xf0'));db['UserProfileSection']=db['sequelize'][_0xd6ee('0x12')]('../api/userProfileSection/userProfileSection.model');db[_0xd6ee('0xf1')]=db['sequelize'][_0xd6ee('0x12')](_0xd6ee('0xf2'));db[_0xd6ee('0xf3')]=db[_0xd6ee('0x3')]['import'](_0xd6ee('0xf4'));db['WhatsappAccount']=db['sequelize'][_0xd6ee('0x12')](_0xd6ee('0xf5'));db[_0xd6ee('0xf6')]=db[_0xd6ee('0x3')][_0xd6ee('0x12')]('../api/whatsappApplication/whatsappApplication.model');db[_0xd6ee('0xf7')]=db[_0xd6ee('0x3')][_0xd6ee('0x12')](_0xd6ee('0xf8'));db[_0xd6ee('0xf9')]=db[_0xd6ee('0x3')][_0xd6ee('0x12')](_0xd6ee('0xfa'));db[_0xd6ee('0xfb')]=db[_0xd6ee('0x3')][_0xd6ee('0x12')](_0xd6ee('0xfc'));db[_0xd6ee('0xfd')]=db[_0xd6ee('0x3')]['import'](_0xd6ee('0xfe'));db[_0xd6ee('0xff')]=db['sequelize'][_0xd6ee('0x12')]('../api/whatsappQueue/whatsappQueue.model');db[_0xd6ee('0x100')]=db[_0xd6ee('0x3')][_0xd6ee('0x12')]('../api/cloudProvider/cloudProvider.model');db['TeamVoiceQueue']=db[_0xd6ee('0x3')][_0xd6ee('0x12')](_0xd6ee('0x101'));db[_0xd6ee('0x102')]=db['sequelize'][_0xd6ee('0x12')]('../api/teamVoicePrefix/teamVoicePrefix.model');db['UserVoicePrefix']=db[_0xd6ee('0x3')]['import']('../api/userVoicePrefix/userVoicePrefix.model');db[_0xd6ee('0x103')]=db['sequelize'][_0xd6ee('0x12')](_0xd6ee('0x104'));db['User'][_0xd6ee('0x105')](db[_0xd6ee('0x106')],{'as':'VoiceMail','onDelete':_0xd6ee('0x107'),'foreignKey':_0xd6ee('0x108')});db['User'][_0xd6ee('0x105')](db[_0xd6ee('0x103')],{'as':'userSetting','onDelete':_0xd6ee('0x107'),'foreignKey':_0xd6ee('0x108')});db['User'][_0xd6ee('0x109')](db[_0xd6ee('0x1a')],{'as':_0xd6ee('0x10a'),'foreignKey':_0xd6ee('0x108')});db['User'][_0xd6ee('0x109')](db['UserVoiceQueueRt'],{'as':_0xd6ee('0x10b'),'foreignKey':'UserId'});db['User']['hasMany'](db['VoiceExtension'],{'as':'Extensions','onDelete':_0xd6ee('0x107'),'hooks':!![]});db[_0xd6ee('0x11')][_0xd6ee('0x109')](db['CmHopperFinal'],{'as':_0xd6ee('0x10c'),'foreignKey':_0xd6ee('0x108')});db[_0xd6ee('0x11')][_0xd6ee('0x109')](db['CmHopperHistory'],{'as':'HopperHistory','foreignKey':'UserId'});db[_0xd6ee('0x11')][_0xd6ee('0x109')](db[_0xd6ee('0x10d')],{'as':_0xd6ee('0x10d'),'foreignKey':_0xd6ee('0x108')});db[_0xd6ee('0x11')][_0xd6ee('0x109')](db[_0xd6ee('0x10e')],{'as':_0xd6ee('0x10f'),'foreignKey':_0xd6ee('0x108')});db[_0xd6ee('0x11')][_0xd6ee('0x109')](db[_0xd6ee('0x110')],{'as':_0xd6ee('0x111'),'foreignKey':_0xd6ee('0x108')});db[_0xd6ee('0x11')][_0xd6ee('0x109')](db[_0xd6ee('0x4e')],{'as':'SmsInteractions','foreignKey':_0xd6ee('0x108')});db[_0xd6ee('0x11')]['hasMany'](db['FaxInteraction'],{'as':'FaxInteractions','foreignKey':_0xd6ee('0x108')});db[_0xd6ee('0x11')][_0xd6ee('0x109')](db[_0xd6ee('0x112')],{'as':_0xd6ee('0x113'),'foreignKey':_0xd6ee('0x108')});db[_0xd6ee('0x11')][_0xd6ee('0x109')](db[_0xd6ee('0xf7')],{'as':_0xd6ee('0x114'),'foreignKey':_0xd6ee('0x108')});db['User'][_0xd6ee('0x109')](db[_0xd6ee('0xf3')],{'as':'UserNotifications','foreignKey':'SenderId'});db[_0xd6ee('0x11')]['belongsTo'](db[_0xd6ee('0xef')],{'as':_0xd6ee('0xef'),'foreignKey':_0xd6ee('0x115')});db[_0xd6ee('0x11')][_0xd6ee('0x116')](db[_0xd6ee('0x65')],{'as':_0xd6ee('0x117'),'through':_0xd6ee('0x118')});db[_0xd6ee('0x11')]['belongsToMany'](db[_0xd6ee('0x119')],{'as':_0xd6ee('0x11a'),'through':_0xd6ee('0x11b')});db[_0xd6ee('0x11')][_0xd6ee('0x116')](db[_0xd6ee('0xeb')],{'as':_0xd6ee('0x11c'),'through':'cm_user_has_lists'});db[_0xd6ee('0x11')][_0xd6ee('0x116')](db[_0xd6ee('0x11d')],{'through':_0xd6ee('0x11e')});db[_0xd6ee('0x11')][_0xd6ee('0x116')](db[_0xd6ee('0x112')],{'as':'MailInteractions','through':_0xd6ee('0x11f')});db['User']['belongsToMany'](db['ChatInteraction'],{'as':_0xd6ee('0x111'),'through':_0xd6ee('0x120')});db[_0xd6ee('0x11')][_0xd6ee('0x116')](db[_0xd6ee('0x45')],{'as':_0xd6ee('0x121'),'through':_0xd6ee('0x122')});db[_0xd6ee('0x11')][_0xd6ee('0x116')](db[_0xd6ee('0x4e')],{'as':_0xd6ee('0x123'),'through':_0xd6ee('0x124')});db['User']['belongsToMany'](db[_0xd6ee('0x10e')],{'as':_0xd6ee('0x10f'),'through':_0xd6ee('0x125')});db[_0xd6ee('0x11')][_0xd6ee('0x116')](db['WhatsappInteraction'],{'as':_0xd6ee('0x114'),'through':_0xd6ee('0x126')});db['User'][_0xd6ee('0x116')](db[_0xd6ee('0x127')],{'as':_0xd6ee('0x128'),'through':'UserVoiceQueue','required':![]});db['User'][_0xd6ee('0x116')](db[_0xd6ee('0xed')],{'as':_0xd6ee('0x129'),'through':_0xd6ee('0x12a'),'required':![]});db[_0xd6ee('0x11')][_0xd6ee('0x116')](db['MailQueue'],{'as':'MailQueues','through':_0xd6ee('0x12b'),'required':![]});db[_0xd6ee('0x11')]['belongsToMany'](db[_0xd6ee('0x63')],{'as':'ChatQueues','through':_0xd6ee('0x2c'),'required':![],'hooks':!![]});db[_0xd6ee('0x11')][_0xd6ee('0x116')](db['FaxQueue'],{'as':_0xd6ee('0x12c'),'through':_0xd6ee('0x2d'),'required':![]});db[_0xd6ee('0x11')]['belongsToMany'](db[_0xd6ee('0x51')],{'as':_0xd6ee('0x12d'),'through':'UserSmsQueue','required':![]});db[_0xd6ee('0x11')][_0xd6ee('0x116')](db[_0xd6ee('0x12e')],{'as':_0xd6ee('0x12f'),'through':_0xd6ee('0x130'),'required':![]});db['User'][_0xd6ee('0x116')](db['WhatsappQueue'],{'as':_0xd6ee('0x131'),'through':_0xd6ee('0x31'),'required':![]});db[_0xd6ee('0x11')]['belongsToMany'](db[_0xd6ee('0xeb')],{'through':'cm_user_has_lists'});db[_0xd6ee('0x11')][_0xd6ee('0x116')](db[_0xd6ee('0x59')],{'as':_0xd6ee('0x132'),'through':'user_has_chat_websites'});db[_0xd6ee('0x11')][_0xd6ee('0x116')](db[_0xd6ee('0x42')],{'as':_0xd6ee('0x133'),'through':'user_has_fax_accounts'});db[_0xd6ee('0x11')][_0xd6ee('0x116')](db[_0xd6ee('0x35')],{'as':_0xd6ee('0x134'),'through':_0xd6ee('0x135')});db[_0xd6ee('0x11')][_0xd6ee('0x116')](db[_0xd6ee('0x53')],{'as':_0xd6ee('0x136'),'through':'user_has_openchannel_accounts'});db[_0xd6ee('0x11')][_0xd6ee('0x116')](db['SmsAccount'],{'as':_0xd6ee('0x137'),'through':_0xd6ee('0x138')});db[_0xd6ee('0x11')][_0xd6ee('0x116')](db[_0xd6ee('0x139')],{'as':_0xd6ee('0x13a'),'through':_0xd6ee('0x13b')});db[_0xd6ee('0x13c')][_0xd6ee('0x109')](db[_0xd6ee('0x16')],{'as':_0xd6ee('0x13d'),'onDelete':_0xd6ee('0x107'),'foreignKey':_0xd6ee('0x13e')});db[_0xd6ee('0x14')][_0xd6ee('0x109')](db[_0xd6ee('0x16')],{'onDelete':_0xd6ee('0x107')});db['VoiceExtension'][_0xd6ee('0x109')](db[_0xd6ee('0x16')],{'as':_0xd6ee('0x13f'),'onDelete':_0xd6ee('0x107')});db['VoiceMusicOnHold'][_0xd6ee('0x116')](db[_0xd6ee('0x82')],{'as':'Sounds','through':_0xd6ee('0x140')});db[_0xd6ee('0x127')]['hasMany'](db['UserVoiceQueueRt'],{'as':'Members','foreignKey':_0xd6ee('0x141')});db[_0xd6ee('0x127')][_0xd6ee('0x109')](db[_0xd6ee('0x6a')],{'as':_0xd6ee('0x142'),'foreignKey':'VoiceQueueId'});db[_0xd6ee('0x127')][_0xd6ee('0x109')](db[_0xd6ee('0x6d')],{'as':_0xd6ee('0x10c'),'foreignKey':_0xd6ee('0x141')});db['VoiceQueue'][_0xd6ee('0x109')](db[_0xd6ee('0x143')],{'as':_0xd6ee('0x144'),'foreignKey':_0xd6ee('0x141')});db[_0xd6ee('0x127')][_0xd6ee('0x109')](db[_0xd6ee('0x10d')],{'as':_0xd6ee('0x10d'),'foreignKey':_0xd6ee('0x141')});db[_0xd6ee('0x127')][_0xd6ee('0x109')](db['CmHopperBlack'],{'as':_0xd6ee('0x145'),'foreignKey':_0xd6ee('0x141')});db[_0xd6ee('0x127')][_0xd6ee('0x109')](db[_0xd6ee('0xcc')],{'as':_0xd6ee('0x146'),'foreignKey':_0xd6ee('0x141')});db[_0xd6ee('0x127')][_0xd6ee('0x147')](db[_0xd6ee('0x26')],{'as':'Trunk','foreignKey':_0xd6ee('0x148')});db[_0xd6ee('0x127')][_0xd6ee('0x147')](db[_0xd6ee('0x26')],{'as':'TrunkBackup','foreignKey':_0xd6ee('0x149')});db[_0xd6ee('0x127')][_0xd6ee('0x147')](db[_0xd6ee('0x7b')],{'as':_0xd6ee('0x7b'),'foreignKey':_0xd6ee('0x14a')});db[_0xd6ee('0x127')][_0xd6ee('0x147')](db[_0xd6ee('0x14b')],{'as':_0xd6ee('0x14c'),'foreignKey':_0xd6ee('0x14d')});db[_0xd6ee('0x127')][_0xd6ee('0x116')](db['CmList'],{'as':'Lists','through':_0xd6ee('0x14e')});db[_0xd6ee('0x127')][_0xd6ee('0x116')](db[_0xd6ee('0x11')],{'as':_0xd6ee('0x14f'),'through':_0xd6ee('0x2a')});db[_0xd6ee('0x127')][_0xd6ee('0x116')](db[_0xd6ee('0x11d')],{'as':_0xd6ee('0x150'),'through':_0xd6ee('0x151')});db['VoiceQueue']['belongsToMany'](db[_0xd6ee('0xeb')],{'as':_0xd6ee('0x152'),'through':_0xd6ee('0x153')});db['VoiceRecording']['belongsTo'](db[_0xd6ee('0x11')],{'as':'User','foreignKey':_0xd6ee('0x108')});db[_0xd6ee('0x154')]['belongsTo'](db[_0xd6ee('0x11')],{'as':'User','foreignKey':'UserId'});db[_0xd6ee('0x106')][_0xd6ee('0x109')](db[_0xd6ee('0x1e')],{'as':_0xd6ee('0x155'),'onDelete':_0xd6ee('0x107'),'foreignKey':'mailboxuser','sourceKey':_0xd6ee('0x156')});db[_0xd6ee('0x1e')][_0xd6ee('0x147')](db['VoiceMail'],{'foreignKey':_0xd6ee('0x157'),'targetKey':_0xd6ee('0x156')});db[_0xd6ee('0x158')]['hasMany'](db[_0xd6ee('0x24')],{'as':_0xd6ee('0x159'),'foreignKey':_0xd6ee('0x15a'),'constraints':![]});db[_0xd6ee('0x158')][_0xd6ee('0x109')](db['VoiceAgentReport'],{'as':_0xd6ee('0x15b'),'foreignKey':_0xd6ee('0x15a'),'constraints':![]});db[_0xd6ee('0x158')][_0xd6ee('0x147')](db[_0xd6ee('0x11')],{'as':_0xd6ee('0x11'),'foreignKey':'UserId'});db[_0xd6ee('0x158')][_0xd6ee('0x147')](db['CmContact'],{'as':_0xd6ee('0x15c'),'foreignKey':'ContactId'});db[_0xd6ee('0x32')][_0xd6ee('0x147')](db[_0xd6ee('0x35')],{'as':'MailAccount','foreignKey':'MailAccountId'});db['MailServerIn'][_0xd6ee('0x147')](db[_0xd6ee('0x100')],{'as':_0xd6ee('0x100'),'foreignKey':_0xd6ee('0x15d'),'onDelete':_0xd6ee('0x15e')});db[_0xd6ee('0x34')][_0xd6ee('0x147')](db[_0xd6ee('0x35')],{'as':_0xd6ee('0x35'),'foreignKey':_0xd6ee('0x15f')});db[_0xd6ee('0x34')][_0xd6ee('0x147')](db[_0xd6ee('0x100')],{'as':_0xd6ee('0x100'),'foreignKey':_0xd6ee('0x15d'),'onDelete':'restrict'});db[_0xd6ee('0x35')]['hasOne'](db[_0xd6ee('0x32')],{'as':'Imap','onDelete':'cascade'});db['MailAccount']['hasOne'](db[_0xd6ee('0x34')],{'as':_0xd6ee('0x160'),'onDelete':_0xd6ee('0x107')});db[_0xd6ee('0x35')]['hasMany'](db[_0xd6ee('0x77')],{'as':_0xd6ee('0x161'),'foreignKey':'MailAccountId','onDelete':_0xd6ee('0x107')});db[_0xd6ee('0x35')][_0xd6ee('0x109')](db[_0xd6ee('0x75')],{'as':_0xd6ee('0x162'),'foreignKey':_0xd6ee('0x15f')});db[_0xd6ee('0x35')][_0xd6ee('0x109')](db[_0xd6ee('0x39')],{'as':'Messages','foreignKey':'MailAccountId'});db[_0xd6ee('0x35')][_0xd6ee('0x109')](db[_0xd6ee('0x112')],{'as':_0xd6ee('0x163')});db['MailAccount'][_0xd6ee('0x109')](db[_0xd6ee('0x164')],{'as':_0xd6ee('0x13f')});db[_0xd6ee('0x35')][_0xd6ee('0x147')](db[_0xd6ee('0xeb')],{'as':_0xd6ee('0x165'),'foreignKey':_0xd6ee('0x166')});db[_0xd6ee('0x35')][_0xd6ee('0x147')](db[_0xd6ee('0x167')],{'as':_0xd6ee('0x167'),'foreignKey':_0xd6ee('0x168')});db['MailAccount']['belongsTo'](db['Pause'],{'as':_0xd6ee('0x14c'),'foreignKey':'mandatoryDispositionPauseId'});db[_0xd6ee('0x35')][_0xd6ee('0x116')](db[_0xd6ee('0x11')],{'as':_0xd6ee('0x14f'),'through':_0xd6ee('0x135')});db[_0xd6ee('0x169')][_0xd6ee('0x116')](db[_0xd6ee('0x11')],{'as':_0xd6ee('0x14f'),'through':'UserMailQueue'});db[_0xd6ee('0x169')]['belongsToMany'](db[_0xd6ee('0x11d')],{'through':_0xd6ee('0x16a'),'as':_0xd6ee('0x150')});db[_0xd6ee('0x112')][_0xd6ee('0x109')](db[_0xd6ee('0x39')],{'as':_0xd6ee('0x155'),'onDelete':_0xd6ee('0x107'),'foreignKey':_0xd6ee('0x16b')});db[_0xd6ee('0x112')][_0xd6ee('0x147')](db[_0xd6ee('0x35')],{'as':'Account','foreignKey':_0xd6ee('0x15f')});db['MailInteraction'][_0xd6ee('0x147')](db[_0xd6ee('0x119')],{'as':'Contact','foreignKey':'ContactId'});db[_0xd6ee('0x112')]['belongsTo'](db[_0xd6ee('0x11')],{'as':'Owner','foreignKey':_0xd6ee('0x108')});db[_0xd6ee('0x112')][_0xd6ee('0x116')](db[_0xd6ee('0x16c')],{'through':_0xd6ee('0x16d'),'as':_0xd6ee('0x16e')});db[_0xd6ee('0x112')][_0xd6ee('0x116')](db[_0xd6ee('0x16c')],{'through':_0xd6ee('0x16d'),'as':_0xd6ee('0x16f')});db[_0xd6ee('0x112')][_0xd6ee('0x116')](db[_0xd6ee('0x11')],{'as':_0xd6ee('0x170'),'through':_0xd6ee('0x11f'),'foreignKey':'MailInteractionId'});db[_0xd6ee('0x39')][_0xd6ee('0x109')](db['Attachment'],{'as':_0xd6ee('0x171'),'onDelete':_0xd6ee('0x107')});db['MailMessage'][_0xd6ee('0x147')](db[_0xd6ee('0x11')],{'as':'User'});db['MailMessage'][_0xd6ee('0x147')](db[_0xd6ee('0x119')],{'onDelete':'cascade','as':_0xd6ee('0x15c')});db[_0xd6ee('0x39')][_0xd6ee('0x147')](db[_0xd6ee('0x112')],{'as':_0xd6ee('0x172'),'foreignKey':'MailInteractionId'});db[_0xd6ee('0x39')][_0xd6ee('0x147')](db[_0xd6ee('0x35')],{'as':_0xd6ee('0x173'),'foreignKey':_0xd6ee('0x15f')});db[_0xd6ee('0x39')][_0xd6ee('0x147')](db[_0xd6ee('0x59')],{'as':_0xd6ee('0x59'),'foreignKey':_0xd6ee('0x174')});db['MailMessage']['belongsTo'](db[_0xd6ee('0x61')],{'as':'ChatOfflineMessage','foreignKey':'ChatOfflineMessageId'});db[_0xd6ee('0x164')][_0xd6ee('0x147')](db[_0xd6ee('0x11')],{'onDelete':_0xd6ee('0x15e')});db[_0xd6ee('0x164')][_0xd6ee('0x147')](db[_0xd6ee('0x169')],{'onDelete':'restrict'});db[_0xd6ee('0x164')][_0xd6ee('0x147')](db[_0xd6ee('0x35')],{'onDelete':_0xd6ee('0x15e')});db['MailApplication']['belongsTo'](db[_0xd6ee('0x7b')],{'onDelete':_0xd6ee('0x15e'),'foreignKey':'IntervalId'});db[_0xd6ee('0x164')][_0xd6ee('0x147')](db[_0xd6ee('0x16c')],{'onDelete':_0xd6ee('0x15e'),'foreignKey':_0xd6ee('0x175')});db[_0xd6ee('0x3c')][_0xd6ee('0x147')](db['MailAccount'],{});db[_0xd6ee('0x3c')][_0xd6ee('0x147')](db[_0xd6ee('0xeb')],{'as':'List','foreignKey':'ListId'});db[_0xd6ee('0x3c')][_0xd6ee('0x147')](db[_0xd6ee('0x119')],{'as':'Contact','foreignKey':_0xd6ee('0x176')});db[_0xd6ee('0x3c')][_0xd6ee('0x147')](db['MailInteraction'],{});db['MailQueueReport'][_0xd6ee('0x147')](db['MailMessage'],{});db[_0xd6ee('0x3c')][_0xd6ee('0x147')](db[_0xd6ee('0x11')],{});db[_0xd6ee('0x3c')][_0xd6ee('0x147')](db['MailQueue'],{});db[_0xd6ee('0x3e')][_0xd6ee('0x109')](db[_0xd6ee('0x40')],{'as':_0xd6ee('0x177'),'onDelete':_0xd6ee('0x107')});db[_0xd6ee('0x42')][_0xd6ee('0x109')](db[_0xd6ee('0x77')],{'as':_0xd6ee('0x161'),'foreignKey':_0xd6ee('0x178'),'onDelete':_0xd6ee('0x107')});db['FaxAccount']['hasMany'](db[_0xd6ee('0x75')],{'as':_0xd6ee('0x162'),'foreignKey':'FaxAccountId'});db[_0xd6ee('0x42')]['hasMany'](db[_0xd6ee('0x45')],{'as':_0xd6ee('0x163')});db[_0xd6ee('0x42')][_0xd6ee('0x109')](db[_0xd6ee('0x44')],{'as':_0xd6ee('0x13f')});db[_0xd6ee('0x42')][_0xd6ee('0x109')](db[_0xd6ee('0x16')],{'as':'Exntensions','onDelete':'cascade'});db['FaxAccount'][_0xd6ee('0x109')](db[_0xd6ee('0x47')],{'as':_0xd6ee('0x155')});db[_0xd6ee('0x42')][_0xd6ee('0x147')](db[_0xd6ee('0x26')],{'as':_0xd6ee('0x26')});db[_0xd6ee('0x42')][_0xd6ee('0x147')](db[_0xd6ee('0xeb')],{'as':'List','foreignKey':'ListId'});db[_0xd6ee('0x42')]['belongsTo'](db[_0xd6ee('0x14b')],{'as':_0xd6ee('0x14c'),'foreignKey':_0xd6ee('0x14d')});db[_0xd6ee('0x42')][_0xd6ee('0x116')](db[_0xd6ee('0x11')],{'as':_0xd6ee('0x14f'),'through':_0xd6ee('0x179')});db[_0xd6ee('0x44')]['belongsTo'](db[_0xd6ee('0x11')],{'onDelete':_0xd6ee('0x15e')});db[_0xd6ee('0x44')][_0xd6ee('0x147')](db[_0xd6ee('0x49')],{'onDelete':'restrict'});db[_0xd6ee('0x44')][_0xd6ee('0x147')](db[_0xd6ee('0x42')],{'onDelete':_0xd6ee('0x15e')});db[_0xd6ee('0x44')][_0xd6ee('0x147')](db['Tag'],{'onDelete':_0xd6ee('0x15e'),'foreignKey':_0xd6ee('0x175')});db['FaxInteraction']['hasMany'](db[_0xd6ee('0x47')],{'as':_0xd6ee('0x155'),'onDelete':_0xd6ee('0x107'),'foreignKey':_0xd6ee('0x17a')});db[_0xd6ee('0x45')][_0xd6ee('0x147')](db[_0xd6ee('0x42')],{'as':_0xd6ee('0x173'),'foreignKey':'FaxAccountId'});db[_0xd6ee('0x45')][_0xd6ee('0x147')](db['CmContact'],{'as':'Contact','foreignKey':_0xd6ee('0x176')});db['FaxInteraction'][_0xd6ee('0x147')](db[_0xd6ee('0x11')],{'as':_0xd6ee('0x17b'),'foreignKey':_0xd6ee('0x108')});db[_0xd6ee('0x45')][_0xd6ee('0x116')](db['Tag'],{'through':_0xd6ee('0x17c'),'as':_0xd6ee('0x16e')});db[_0xd6ee('0x45')][_0xd6ee('0x116')](db[_0xd6ee('0x16c')],{'through':'fax_interaction_has_tags','as':_0xd6ee('0x16f')});db[_0xd6ee('0x45')][_0xd6ee('0x116')](db[_0xd6ee('0x11')],{'as':_0xd6ee('0x170'),'through':'user_has_fax_interactions','foreignKey':'FaxInteractionId'});db['FaxMessage'][_0xd6ee('0x147')](db[_0xd6ee('0x11')],{'onDelete':'cascade','as':_0xd6ee('0x11')});db['FaxMessage'][_0xd6ee('0x147')](db[_0xd6ee('0x45')],{'as':_0xd6ee('0x172'),'foreignKey':'FaxInteractionId'});db['FaxMessage']['belongsTo'](db[_0xd6ee('0x119')],{'onDelete':_0xd6ee('0x107'),'as':_0xd6ee('0x15c')});db[_0xd6ee('0x47')][_0xd6ee('0x147')](db[_0xd6ee('0xe0')],{'as':_0xd6ee('0xe0'),'foreignKey':'AttachmentId'});db[_0xd6ee('0x47')][_0xd6ee('0x147')](db[_0xd6ee('0x42')],{'as':_0xd6ee('0x173'),'foreignKey':'FaxAccountId'});db[_0xd6ee('0x49')][_0xd6ee('0x116')](db['User'],{'as':'Agents','through':_0xd6ee('0x2d')});db[_0xd6ee('0x49')]['belongsToMany'](db[_0xd6ee('0x11d')],{'through':_0xd6ee('0x17d'),'as':_0xd6ee('0x150')});db[_0xd6ee('0x17e')][_0xd6ee('0x147')](db[_0xd6ee('0x42')],{});db[_0xd6ee('0x17e')][_0xd6ee('0x147')](db[_0xd6ee('0xeb')],{'as':_0xd6ee('0x165'),'foreignKey':_0xd6ee('0x166')});db['FaxQueueReport'][_0xd6ee('0x147')](db['CmContact'],{'as':_0xd6ee('0x15c'),'foreignKey':_0xd6ee('0x176')});db[_0xd6ee('0x17e')][_0xd6ee('0x147')](db[_0xd6ee('0x45')],{});db[_0xd6ee('0x17e')][_0xd6ee('0x147')](db['FaxMessage'],{});db[_0xd6ee('0x17e')][_0xd6ee('0x147')](db[_0xd6ee('0x11')],{});db[_0xd6ee('0x17e')][_0xd6ee('0x147')](db[_0xd6ee('0x49')],{});db['SmsAccount'][_0xd6ee('0x109')](db['Disposition'],{'as':_0xd6ee('0x161'),'foreignKey':_0xd6ee('0x17f'),'onDelete':_0xd6ee('0x107')});db[_0xd6ee('0x4b')][_0xd6ee('0x109')](db[_0xd6ee('0x75')],{'as':_0xd6ee('0x162'),'foreignKey':_0xd6ee('0x17f')});db[_0xd6ee('0x4b')][_0xd6ee('0x109')](db[_0xd6ee('0x4f')],{'as':_0xd6ee('0x155'),'foreignKey':_0xd6ee('0x17f')});db[_0xd6ee('0x4b')][_0xd6ee('0x109')](db[_0xd6ee('0x4e')],{'as':'Interactions'});db['SmsAccount'][_0xd6ee('0x109')](db[_0xd6ee('0x4c')],{'as':_0xd6ee('0x13f')});db[_0xd6ee('0x4b')][_0xd6ee('0x147')](db[_0xd6ee('0xeb')],{'as':_0xd6ee('0x165'),'foreignKey':_0xd6ee('0x166')});db[_0xd6ee('0x4b')]['belongsTo'](db[_0xd6ee('0x14b')],{'as':_0xd6ee('0x14c'),'foreignKey':_0xd6ee('0x14d')});db[_0xd6ee('0x4b')][_0xd6ee('0x116')](db[_0xd6ee('0x11')],{'as':_0xd6ee('0x14f'),'through':'user_has_sms_accounts'});db[_0xd6ee('0x4c')][_0xd6ee('0x147')](db[_0xd6ee('0x11')],{'onDelete':'restrict'});db[_0xd6ee('0x4c')][_0xd6ee('0x147')](db['SmsQueue'],{'onDelete':'restrict'});db[_0xd6ee('0x4c')][_0xd6ee('0x147')](db[_0xd6ee('0x4b')],{'onDelete':_0xd6ee('0x15e')});db[_0xd6ee('0x4c')]['belongsTo'](db[_0xd6ee('0x7b')],{'onDelete':_0xd6ee('0x15e'),'foreignKey':_0xd6ee('0x14a')});db[_0xd6ee('0x4c')]['belongsTo'](db[_0xd6ee('0x16c')],{'onDelete':_0xd6ee('0x15e'),'foreignKey':_0xd6ee('0x175')});db[_0xd6ee('0x4e')][_0xd6ee('0x109')](db['SmsMessage'],{'as':_0xd6ee('0x155'),'onDelete':_0xd6ee('0x107'),'foreignKey':_0xd6ee('0x180')});db[_0xd6ee('0x4e')][_0xd6ee('0x147')](db[_0xd6ee('0x4b')],{'as':_0xd6ee('0x173'),'foreignKey':_0xd6ee('0x17f')});db[_0xd6ee('0x4e')][_0xd6ee('0x147')](db[_0xd6ee('0x119')],{'as':_0xd6ee('0x15c'),'foreignKey':_0xd6ee('0x176')});db['SmsInteraction'][_0xd6ee('0x147')](db['User'],{'as':_0xd6ee('0x17b'),'foreignKey':'UserId'});db[_0xd6ee('0x4e')][_0xd6ee('0x116')](db['Tag'],{'through':_0xd6ee('0x181'),'as':'Tags'});db['SmsInteraction']['belongsToMany'](db[_0xd6ee('0x16c')],{'through':_0xd6ee('0x181'),'as':_0xd6ee('0x16f')});db['SmsInteraction']['belongsToMany'](db[_0xd6ee('0x11')],{'as':_0xd6ee('0x170'),'through':_0xd6ee('0x124'),'foreignKey':_0xd6ee('0x180')});db[_0xd6ee('0x4f')]['belongsTo'](db[_0xd6ee('0x11')],{'as':'User'});db[_0xd6ee('0x4f')][_0xd6ee('0x147')](db['CmContact'],{'onDelete':_0xd6ee('0x107'),'as':_0xd6ee('0x15c')});db[_0xd6ee('0x4f')][_0xd6ee('0x147')](db['SmsInteraction'],{'onDelete':_0xd6ee('0x107'),'as':_0xd6ee('0x172'),'foreignKey':_0xd6ee('0x180')});db[_0xd6ee('0x4f')]['belongsTo'](db[_0xd6ee('0x4b')],{'as':_0xd6ee('0x173'),'foreignKey':_0xd6ee('0x17f')});db[_0xd6ee('0x51')][_0xd6ee('0x116')](db[_0xd6ee('0x11')],{'as':'Agents','through':_0xd6ee('0x182'),'foreignKey':_0xd6ee('0x183')});db[_0xd6ee('0x51')][_0xd6ee('0x116')](db[_0xd6ee('0x11d')],{'through':_0xd6ee('0x184'),'as':_0xd6ee('0x150')});db[_0xd6ee('0x53')]['hasMany'](db[_0xd6ee('0x77')],{'as':_0xd6ee('0x161'),'foreignKey':_0xd6ee('0x185'),'onDelete':_0xd6ee('0x107')});db[_0xd6ee('0x53')][_0xd6ee('0x109')](db[_0xd6ee('0x75')],{'as':_0xd6ee('0x162'),'foreignKey':'OpenchannelAccountId'});db[_0xd6ee('0x53')][_0xd6ee('0x109')](db[_0xd6ee('0x10e')],{'as':_0xd6ee('0x163'),'foreignKey':_0xd6ee('0x185')});db[_0xd6ee('0x53')][_0xd6ee('0x109')](db[_0xd6ee('0x57')],{'as':'Messages','foreignKey':_0xd6ee('0x185')});db[_0xd6ee('0x53')]['hasMany'](db[_0xd6ee('0x54')],{'as':_0xd6ee('0x13f'),'foreignKey':_0xd6ee('0x185')});db[_0xd6ee('0x53')][_0xd6ee('0x147')](db[_0xd6ee('0xeb')],{'as':_0xd6ee('0x165'),'foreignKey':_0xd6ee('0x166')});db[_0xd6ee('0x53')][_0xd6ee('0x147')](db[_0xd6ee('0x14b')],{'as':_0xd6ee('0x14c'),'foreignKey':_0xd6ee('0x14d')});db[_0xd6ee('0x53')][_0xd6ee('0x116')](db[_0xd6ee('0x11')],{'as':_0xd6ee('0x14f'),'through':_0xd6ee('0x186')});db[_0xd6ee('0x54')][_0xd6ee('0x147')](db[_0xd6ee('0x11')],{'onDelete':_0xd6ee('0x15e')});db[_0xd6ee('0x54')]['belongsTo'](db[_0xd6ee('0x12e')],{'onDelete':_0xd6ee('0x15e'),'foreignKey':_0xd6ee('0x187')});db['OpenchannelApplication'][_0xd6ee('0x147')](db[_0xd6ee('0x53')],{'onDelete':_0xd6ee('0x15e'),'foreignKey':_0xd6ee('0x185')});db[_0xd6ee('0x54')][_0xd6ee('0x147')](db['Interval'],{'onDelete':_0xd6ee('0x15e'),'foreignKey':_0xd6ee('0x14a')});db[_0xd6ee('0x54')][_0xd6ee('0x147')](db[_0xd6ee('0x16c')],{'onDelete':_0xd6ee('0x15e'),'foreignKey':_0xd6ee('0x175')});db['OpenchannelInteraction']['hasMany'](db[_0xd6ee('0x57')],{'as':'Messages','onDelete':_0xd6ee('0x107'),'foreignKey':_0xd6ee('0x188')});db[_0xd6ee('0x10e')][_0xd6ee('0x147')](db[_0xd6ee('0x53')],{'as':_0xd6ee('0x173'),'foreignKey':_0xd6ee('0x185')});db[_0xd6ee('0x10e')]['belongsTo'](db[_0xd6ee('0x119')],{'as':'Contact','foreignKey':_0xd6ee('0x176')});db[_0xd6ee('0x10e')]['belongsTo'](db[_0xd6ee('0x11')],{'as':_0xd6ee('0x17b'),'foreignKey':'UserId'});db[_0xd6ee('0x10e')][_0xd6ee('0x116')](db['Tag'],{'through':'openchannel_interaction_has_tags','as':_0xd6ee('0x16e')});db['OpenchannelInteraction'][_0xd6ee('0x116')](db[_0xd6ee('0x16c')],{'through':_0xd6ee('0x189'),'as':_0xd6ee('0x16f')});db[_0xd6ee('0x10e')][_0xd6ee('0x116')](db['User'],{'as':_0xd6ee('0x170'),'through':_0xd6ee('0x125'),'foreignKey':_0xd6ee('0x188')});db[_0xd6ee('0x57')][_0xd6ee('0x147')](db[_0xd6ee('0x11')],{'onDelete':_0xd6ee('0x107'),'as':_0xd6ee('0x11')});db[_0xd6ee('0x57')]['belongsTo'](db[_0xd6ee('0x119')],{'onDelete':_0xd6ee('0x107'),'as':_0xd6ee('0x15c')});db[_0xd6ee('0x57')][_0xd6ee('0x147')](db[_0xd6ee('0x10e')],{'onDelete':_0xd6ee('0x107'),'as':_0xd6ee('0x172'),'foreignKey':'OpenchannelInteractionId'});db['OpenchannelMessage'][_0xd6ee('0x147')](db[_0xd6ee('0xe0')],{'as':'Attachment','foreignKey':_0xd6ee('0x18a')});db[_0xd6ee('0x57')][_0xd6ee('0x147')](db[_0xd6ee('0x53')],{'as':'Account','foreignKey':_0xd6ee('0x185')});db[_0xd6ee('0x12e')][_0xd6ee('0x116')](db[_0xd6ee('0x11')],{'as':'Agents','through':_0xd6ee('0x130'),'foreignKey':_0xd6ee('0x187')});db[_0xd6ee('0x12e')][_0xd6ee('0x116')](db[_0xd6ee('0x11d')],{'through':_0xd6ee('0x18b'),'as':_0xd6ee('0x150')});db[_0xd6ee('0x59')][_0xd6ee('0x109')](db['Disposition'],{'as':_0xd6ee('0x161'),'foreignKey':_0xd6ee('0x174'),'onDelete':_0xd6ee('0x107')});db[_0xd6ee('0x59')][_0xd6ee('0x109')](db['CannedAnswer'],{'as':_0xd6ee('0x162'),'foreignKey':_0xd6ee('0x174')});db[_0xd6ee('0x59')]['hasMany'](db[_0xd6ee('0x67')],{'as':_0xd6ee('0x18c')});db[_0xd6ee('0x59')][_0xd6ee('0x109')](db['ChatInteraction'],{'as':'Interactions'});db['ChatWebsite'][_0xd6ee('0x109')](db['ChatApplication'],{'as':'Applications'});db[_0xd6ee('0x59')][_0xd6ee('0x109')](db[_0xd6ee('0x5f')],{'as':_0xd6ee('0x155')});db[_0xd6ee('0x59')][_0xd6ee('0x147')](db[_0xd6ee('0xeb')],{'as':_0xd6ee('0x165'),'foreignKey':_0xd6ee('0x166')});db[_0xd6ee('0x59')][_0xd6ee('0x147')](db[_0xd6ee('0x7b')],{'as':'Interval','foreignKey':_0xd6ee('0x14a')});db['ChatWebsite'][_0xd6ee('0x147')](db[_0xd6ee('0x35')],{'as':_0xd6ee('0x35'),'foreignKey':'MailAccountId'});db[_0xd6ee('0x59')]['belongsTo'](db[_0xd6ee('0x14b')],{'as':_0xd6ee('0x14c'),'foreignKey':_0xd6ee('0x14d')});db[_0xd6ee('0x59')][_0xd6ee('0x116')](db['User'],{'as':_0xd6ee('0x14f'),'through':'user_has_chat_websites'});db['OpenchannelQueueReport'][_0xd6ee('0x147')](db[_0xd6ee('0x53')],{});db['OpenchannelQueueReport'][_0xd6ee('0x147')](db['CmList'],{'as':'List','foreignKey':'ListId'});db[_0xd6ee('0x5b')][_0xd6ee('0x147')](db[_0xd6ee('0x119')],{'as':'Contact','foreignKey':_0xd6ee('0x176')});db[_0xd6ee('0x5b')]['belongsTo'](db[_0xd6ee('0x10e')],{});db[_0xd6ee('0x5b')][_0xd6ee('0x147')](db[_0xd6ee('0x57')],{});db['OpenchannelQueueReport'][_0xd6ee('0x147')](db[_0xd6ee('0x11')],{});db[_0xd6ee('0x5b')]['belongsTo'](db[_0xd6ee('0x12e')],{});db[_0xd6ee('0x5d')]['belongsTo'](db['User'],{'as':_0xd6ee('0x18d'),'foreignKey':_0xd6ee('0x108'),'onDelete':_0xd6ee('0x15e')});db[_0xd6ee('0x5d')][_0xd6ee('0x147')](db['ChatQueue'],{'as':_0xd6ee('0x18e'),'foreignKey':_0xd6ee('0x18f'),'onDelete':_0xd6ee('0x15e')});db[_0xd6ee('0x5d')][_0xd6ee('0x147')](db[_0xd6ee('0x59')],{'as':_0xd6ee('0x190'),'foreignKey':_0xd6ee('0x174'),'onDelete':_0xd6ee('0x15e')});db[_0xd6ee('0x5d')]['belongsTo'](db['Tag'],{'onDelete':_0xd6ee('0x15e'),'foreignKey':_0xd6ee('0x175')});db[_0xd6ee('0x110')][_0xd6ee('0x109')](db[_0xd6ee('0x5f')],{'as':_0xd6ee('0x155'),'onDelete':_0xd6ee('0x107'),'foreignKey':'ChatInteractionId'});db[_0xd6ee('0x110')]['belongsTo'](db['ChatWebsite'],{'as':_0xd6ee('0x173'),'foreignKey':_0xd6ee('0x174')});db['ChatInteraction'][_0xd6ee('0x147')](db[_0xd6ee('0x119')],{'as':_0xd6ee('0x15c'),'foreignKey':_0xd6ee('0x176')});db['ChatInteraction']['belongsTo'](db[_0xd6ee('0x11')],{'as':_0xd6ee('0x17b'),'foreignKey':_0xd6ee('0x108')});db[_0xd6ee('0x110')][_0xd6ee('0x116')](db[_0xd6ee('0x16c')],{'through':_0xd6ee('0x191'),'as':_0xd6ee('0x16e')});db[_0xd6ee('0x110')][_0xd6ee('0x116')](db[_0xd6ee('0x16c')],{'through':_0xd6ee('0x191'),'as':_0xd6ee('0x16f')});db[_0xd6ee('0x110')][_0xd6ee('0x116')](db[_0xd6ee('0x11')],{'as':'Users','through':_0xd6ee('0x120'),'foreignKey':_0xd6ee('0x192')});db[_0xd6ee('0x5f')][_0xd6ee('0x147')](db[_0xd6ee('0x11')],{'onDelete':_0xd6ee('0x107'),'as':_0xd6ee('0x11')});db[_0xd6ee('0x5f')][_0xd6ee('0x147')](db[_0xd6ee('0x119')],{'onDelete':_0xd6ee('0x107'),'as':_0xd6ee('0x15c'),'foreignKey':_0xd6ee('0x176')});db['ChatMessage'][_0xd6ee('0x147')](db[_0xd6ee('0x110')],{'onDelete':_0xd6ee('0x107'),'as':_0xd6ee('0x172'),'foreignKey':_0xd6ee('0x192')});db[_0xd6ee('0x5f')][_0xd6ee('0x147')](db[_0xd6ee('0xe0')],{'as':_0xd6ee('0xe0'),'foreignKey':_0xd6ee('0x18a')});db['ChatMessage'][_0xd6ee('0x147')](db[_0xd6ee('0x59')],{'as':_0xd6ee('0x173'),'foreignKey':_0xd6ee('0x174')});db[_0xd6ee('0x61')][_0xd6ee('0x109')](db['Attachment'],{'as':_0xd6ee('0x171'),'foreignKey':'ChatOfflineMessageId','onDelete':'cascade','hooks':!![]});db['ChatOfflineMessage'][_0xd6ee('0x147')](db[_0xd6ee('0x119')],{'onDelete':_0xd6ee('0x107'),'as':_0xd6ee('0x15c'),'foreignKey':'ContactId'});db['ChatOfflineMessage'][_0xd6ee('0x147')](db['ChatWebsite'],{'as':_0xd6ee('0x173'),'foreignKey':'ChatWebsiteId'});db[_0xd6ee('0x63')][_0xd6ee('0x116')](db[_0xd6ee('0x11')],{'as':_0xd6ee('0x14f'),'through':_0xd6ee('0x2c'),'hooks':!![]});db[_0xd6ee('0x63')][_0xd6ee('0x116')](db['Team'],{'through':_0xd6ee('0x193'),'as':_0xd6ee('0x150')});db['ChatGroup'][_0xd6ee('0x109')](db['ChatInternalMessage'],{'as':_0xd6ee('0x155'),'foreignKey':_0xd6ee('0x194'),'onDelete':_0xd6ee('0x107')});db[_0xd6ee('0x65')][_0xd6ee('0x116')](db[_0xd6ee('0x11')],{'as':_0xd6ee('0x195'),'through':_0xd6ee('0x118')});db['ChatProactiveAction'][_0xd6ee('0x147')](db['ChatWebsite'],{'as':_0xd6ee('0x190'),'foreignKey':'ChatWebsiteId'});db[_0xd6ee('0x68')][_0xd6ee('0x109')](db[_0xd6ee('0x119')],{'as':_0xd6ee('0x11a'),'foreignKey':_0xd6ee('0x196')});db[_0xd6ee('0x119')][_0xd6ee('0x109')](db[_0xd6ee('0x85')],{'as':_0xd6ee('0x197'),'foreignKey':_0xd6ee('0x198')});db[_0xd6ee('0x119')][_0xd6ee('0x109')](db[_0xd6ee('0x6a')],{'as':_0xd6ee('0x142'),'foreignKey':'ContactId'});db['CmContact'][_0xd6ee('0x109')](db[_0xd6ee('0x6d')],{'as':_0xd6ee('0x10c'),'foreignKey':_0xd6ee('0x176')});db[_0xd6ee('0x119')]['hasMany'](db[_0xd6ee('0x143')],{'as':_0xd6ee('0x144'),'foreignKey':'ContactId'});db[_0xd6ee('0x119')][_0xd6ee('0x109')](db[_0xd6ee('0x10d')],{'as':'ReportAgentPreview','foreignKey':_0xd6ee('0x176')});db['CmContact'][_0xd6ee('0x109')](db['JscriptySessionReport'],{'as':'JscriptySessions','foreignKey':_0xd6ee('0x176')});db[_0xd6ee('0x119')]['hasMany'](db[_0xd6ee('0x10e')],{'as':_0xd6ee('0x10f'),'foreignKey':_0xd6ee('0x176'),'onDelete':_0xd6ee('0x15e')});db['CmContact'][_0xd6ee('0x109')](db['ChatInteraction'],{'as':'ChatInteractions','foreignKey':_0xd6ee('0x176'),'onDelete':_0xd6ee('0x15e')});db[_0xd6ee('0x119')][_0xd6ee('0x109')](db[_0xd6ee('0x4e')],{'as':_0xd6ee('0x123'),'foreignKey':_0xd6ee('0x176'),'onDelete':'restrict'});db[_0xd6ee('0x119')][_0xd6ee('0x109')](db[_0xd6ee('0x45')],{'as':_0xd6ee('0x121'),'foreignKey':_0xd6ee('0x176'),'onDelete':_0xd6ee('0x15e')});db['CmContact'][_0xd6ee('0x109')](db['MailInteraction'],{'as':_0xd6ee('0x113'),'foreignKey':_0xd6ee('0x176'),'onDelete':_0xd6ee('0x15e')});db[_0xd6ee('0x119')][_0xd6ee('0x147')](db['CmCompany'],{'as':_0xd6ee('0x199'),'foreignKey':_0xd6ee('0x196')});db[_0xd6ee('0x119')][_0xd6ee('0x147')](db[_0xd6ee('0xeb')],{'as':_0xd6ee('0x165'),'foreignKey':_0xd6ee('0x166'),'onDelete':_0xd6ee('0x107')});db[_0xd6ee('0x119')][_0xd6ee('0x116')](db[_0xd6ee('0x11')],{'as':'Users','through':'cm_user_has_contacts'});db[_0xd6ee('0x119')][_0xd6ee('0x116')](db[_0xd6ee('0x16c')],{'as':_0xd6ee('0x16e'),'through':_0xd6ee('0x19a')});db[_0xd6ee('0x119')][_0xd6ee('0x116')](db[_0xd6ee('0x16c')],{'through':_0xd6ee('0x19a'),'as':'ThroughTags'});db[_0xd6ee('0x6a')][_0xd6ee('0x109')](db[_0xd6ee('0x87')],{'as':_0xd6ee('0x19b'),'foreignKey':'CmHopperId'});db['CmHopper'][_0xd6ee('0x147')](db[_0xd6ee('0x119')],{'as':_0xd6ee('0x15c'),'foreignKey':'ContactId','onDelete':_0xd6ee('0x107')});db[_0xd6ee('0x6a')][_0xd6ee('0x147')](db[_0xd6ee('0xeb')],{'as':_0xd6ee('0x165'),'foreignKey':_0xd6ee('0x166'),'onDelete':_0xd6ee('0x107')});db['CmHopper'][_0xd6ee('0x147')](db[_0xd6ee('0x11')],{'as':'Agent','foreignKey':_0xd6ee('0x108')});db[_0xd6ee('0x6a')][_0xd6ee('0x147')](db['VoiceQueue'],{'as':_0xd6ee('0x18e'),'foreignKey':_0xd6ee('0x141'),'onDelete':_0xd6ee('0x107')});db[_0xd6ee('0x6a')][_0xd6ee('0x147')](db[_0xd6ee('0x19c')],{'as':_0xd6ee('0x19c'),'foreignKey':_0xd6ee('0x19d'),'onDelete':_0xd6ee('0x107')});db[_0xd6ee('0x6a')][_0xd6ee('0x147')](db[_0xd6ee('0x11')],{'as':_0xd6ee('0x17b'),'foreignKey':_0xd6ee('0x19e')});db[_0xd6ee('0x6b')][_0xd6ee('0x147')](db[_0xd6ee('0x119')],{'as':_0xd6ee('0x15c'),'foreignKey':_0xd6ee('0x176'),'onDelete':'cascade'});db[_0xd6ee('0x6b')]['belongsTo'](db['CmList'],{'as':_0xd6ee('0x165'),'foreignKey':_0xd6ee('0x166'),'onDelete':'cascade'});db[_0xd6ee('0x6b')][_0xd6ee('0x147')](db[_0xd6ee('0x127')],{'as':_0xd6ee('0x18e'),'foreignKey':_0xd6ee('0x141'),'onDelete':'cascade'});db[_0xd6ee('0x6b')][_0xd6ee('0x147')](db[_0xd6ee('0x19c')],{'as':_0xd6ee('0x19c'),'foreignKey':_0xd6ee('0x19d'),'onDelete':_0xd6ee('0x107')});db[_0xd6ee('0x74')][_0xd6ee('0x109')](db[_0xd6ee('0x79')],{'as':{'plural':_0xd6ee('0x19f'),'singular':_0xd6ee('0x1a0')},'foreignKey':_0xd6ee('0x1a1'),'onDelete':_0xd6ee('0x107'),'hooks':!![]});db[_0xd6ee('0x74')]['hasMany'](db[_0xd6ee('0x79')],{'as':{'plural':'Any','singular':_0xd6ee('0x1a2')},'foreignKey':'AutomationAnyId','onDelete':_0xd6ee('0x107'),'hooks':!![]});db[_0xd6ee('0x74')]['hasMany'](db[_0xd6ee('0x72')],{'as':_0xd6ee('0x1a3'),'foreignKey':'AutomationId','onDelete':_0xd6ee('0x107'),'hooks':!![]});db[_0xd6ee('0x77')]['hasMany'](db[_0xd6ee('0x77')],{'as':_0xd6ee('0x161'),'foreignKey':_0xd6ee('0x1a4'),'onDelete':_0xd6ee('0x107')});db[_0xd6ee('0x7b')][_0xd6ee('0x109')](db['Interval'],{'as':_0xd6ee('0x1a5'),'foreignKey':_0xd6ee('0x14a'),'onDelete':_0xd6ee('0x107'),'hooks':!![],'required':![]});db[_0xd6ee('0x7b')][_0xd6ee('0x109')](db[_0xd6ee('0x16')],{'as':_0xd6ee('0x1a6'),'foreignKey':'IntervalId','onDelete':_0xd6ee('0x15e')});db[_0xd6ee('0x7b')][_0xd6ee('0x109')](db[_0xd6ee('0x164')],{'as':_0xd6ee('0x1a7'),'foreignKey':'IntervalId'});db[_0xd6ee('0x7b')][_0xd6ee('0x109')](db['ChatApplication'],{'as':_0xd6ee('0x1a8'),'foreignKey':_0xd6ee('0x14a')});db[_0xd6ee('0x7b')][_0xd6ee('0x109')](db[_0xd6ee('0x44')],{'as':_0xd6ee('0x1a9'),'foreignKey':'IntervalId'});db[_0xd6ee('0x7b')][_0xd6ee('0x109')](db[_0xd6ee('0x4c')],{'as':'SmsApplications','foreignKey':'IntervalId'});db[_0xd6ee('0x80')]['belongsTo'](db[_0xd6ee('0x35')],{});db[_0xd6ee('0x80')][_0xd6ee('0x147')](db[_0xd6ee('0x93')],{'foreignKey':_0xd6ee('0x1aa')});db['Schedule'][_0xd6ee('0x147')](db[_0xd6ee('0x91')],{'foreignKey':'CustomReportId'});db['Sound']['belongsToMany'](db[_0xd6ee('0x17')],{'as':_0xd6ee('0x1ab'),'through':'moh_has_sounds','onDelete':_0xd6ee('0x15e')});db[_0xd6ee('0x16c')][_0xd6ee('0x116')](db[_0xd6ee('0x119')],{'through':_0xd6ee('0x19a')});db['Tag'][_0xd6ee('0x116')](db[_0xd6ee('0x110')],{'through':_0xd6ee('0x191')});db['Tag'][_0xd6ee('0x116')](db[_0xd6ee('0x112')],{'through':'mail_interaction_has_tags'});db[_0xd6ee('0x16c')]['belongsToMany'](db[_0xd6ee('0x4e')],{'through':_0xd6ee('0x181')});db[_0xd6ee('0x16c')][_0xd6ee('0x116')](db[_0xd6ee('0x45')],{'through':_0xd6ee('0x17c')});db[_0xd6ee('0x16c')][_0xd6ee('0x116')](db[_0xd6ee('0x10e')],{'through':_0xd6ee('0x189')});db[_0xd6ee('0x16c')][_0xd6ee('0x116')](db[_0xd6ee('0xf7')],{'through':_0xd6ee('0x1ac')});db[_0xd6ee('0x85')][_0xd6ee('0x147')](db[_0xd6ee('0x1ad')],{'as':_0xd6ee('0x1ae'),'foreignKey':_0xd6ee('0x1af')});db[_0xd6ee('0x87')][_0xd6ee('0x147')](db[_0xd6ee('0x6a')],{'as':_0xd6ee('0x1b0'),'foreignKey':_0xd6ee('0x1b1')});db['CmContactHasItem'][_0xd6ee('0x147')](db[_0xd6ee('0x119')],{'as':_0xd6ee('0x15c'),'foreignKey':_0xd6ee('0x198')});db[_0xd6ee('0x8a')][_0xd6ee('0x109')](db[_0xd6ee('0x79')],{'as':{'plural':_0xd6ee('0x1b2'),'singular':'AllCondition'},'foreignKey':'TriggerAllId','onDelete':_0xd6ee('0x107'),'hooks':!![]});db['Trigger'][_0xd6ee('0x109')](db[_0xd6ee('0x79')],{'as':{'plural':_0xd6ee('0x1b3'),'singular':_0xd6ee('0x1b4')},'foreignKey':_0xd6ee('0x1b5'),'onDelete':_0xd6ee('0x107'),'hooks':!![]});db[_0xd6ee('0x8a')][_0xd6ee('0x109')](db[_0xd6ee('0x72')],{'as':_0xd6ee('0x1a3'),'foreignKey':_0xd6ee('0x1b6'),'onDelete':_0xd6ee('0x107'),'hooks':!![]});db[_0xd6ee('0x91')][_0xd6ee('0x109')](db[_0xd6ee('0x99')],{'as':_0xd6ee('0x1b7'),'onDelete':_0xd6ee('0x107'),'foreignKey':_0xd6ee('0x1b8'),'hooks':!![]});db[_0xd6ee('0x93')]['hasMany'](db[_0xd6ee('0x99')],{'as':_0xd6ee('0x1b7'),'onDelete':'cascade','foreignKey':_0xd6ee('0x1aa')});db[_0xd6ee('0x97')][_0xd6ee('0x109')](db[_0xd6ee('0x99')],{'as':_0xd6ee('0x1b7'),'onDelete':_0xd6ee('0x107'),'foreignKey':_0xd6ee('0x1b9')});db[_0xd6ee('0x99')][_0xd6ee('0x147')](db[_0xd6ee('0x97')],{'foreignKey':_0xd6ee('0x1b9')});db[_0xd6ee('0x9b')]['hasMany'](db[_0xd6ee('0x1ba')],{'as':_0xd6ee('0x1bb'),'onDelete':_0xd6ee('0x107'),'foreignKey':_0xd6ee('0x1bc')});db['SalesforceConfiguration'][_0xd6ee('0x109')](db[_0xd6ee('0x1bd')],{'as':_0xd6ee('0x1be'),'onDelete':_0xd6ee('0x107'),'foreignKey':'SubjectId'});db[_0xd6ee('0x1ba')][_0xd6ee('0x109')](db[_0xd6ee('0x1bd')],{'as':'Descriptions','onDelete':_0xd6ee('0x107'),'foreignKey':'DescriptionId'});db[_0xd6ee('0x1ba')][_0xd6ee('0x109')](db[_0xd6ee('0x1bd')],{'as':_0xd6ee('0x1b7'),'onDelete':_0xd6ee('0x107'),'foreignKey':_0xd6ee('0x1bf')});db[_0xd6ee('0x1ba')][_0xd6ee('0x147')](db[_0xd6ee('0x9b')],{'as':_0xd6ee('0x173'),'foreignKey':'AccountId'});db[_0xd6ee('0x1bd')][_0xd6ee('0x109')](db[_0xd6ee('0x1bd')],{'as':_0xd6ee('0x1c0'),'foreignKey':'SubjectId'});db[_0xd6ee('0x1bd')]['hasMany'](db[_0xd6ee('0x1bd')],{'as':'Description','foreignKey':_0xd6ee('0x1c1')});db['SalesforceField']['hasMany'](db['SalesforceField'],{'as':_0xd6ee('0x1c2'),'foreignKey':_0xd6ee('0x1bf')});db[_0xd6ee('0x1bd')][_0xd6ee('0x147')](db[_0xd6ee('0x1c3')],{'as':_0xd6ee('0x1c3'),'foreignKey':'VariableId'});db['SugarcrmAccount']['hasMany'](db[_0xd6ee('0xa0')],{'as':_0xd6ee('0x1bb'),'onDelete':'cascade','foreignKey':_0xd6ee('0x1bc')});db[_0xd6ee('0xa0')][_0xd6ee('0x109')](db['SugarcrmField'],{'as':'Subjects','onDelete':'cascade','foreignKey':_0xd6ee('0x1c4')});db[_0xd6ee('0xa0')][_0xd6ee('0x109')](db[_0xd6ee('0x1c5')],{'as':'Descriptions','onDelete':_0xd6ee('0x107'),'foreignKey':_0xd6ee('0x1c1')});db['SugarcrmConfiguration'][_0xd6ee('0x109')](db[_0xd6ee('0x1c5')],{'as':_0xd6ee('0x1b7'),'onDelete':_0xd6ee('0x107'),'foreignKey':_0xd6ee('0x1bf')});db[_0xd6ee('0xa0')]['belongsTo'](db[_0xd6ee('0x9e')],{'as':_0xd6ee('0x173'),'foreignKey':_0xd6ee('0x1bc')});db['SugarcrmField'][_0xd6ee('0x109')](db[_0xd6ee('0x1c5')],{'as':_0xd6ee('0x1c0'),'foreignKey':'SubjectId'});db[_0xd6ee('0x1c5')]['hasMany'](db[_0xd6ee('0x1c5')],{'as':_0xd6ee('0x1c6'),'foreignKey':_0xd6ee('0x1c1')});db['SugarcrmField'][_0xd6ee('0x109')](db[_0xd6ee('0x1c5')],{'as':_0xd6ee('0x1c2'),'foreignKey':_0xd6ee('0x1bf')});db[_0xd6ee('0x1c5')][_0xd6ee('0x147')](db[_0xd6ee('0x1c3')],{'as':_0xd6ee('0x1c3'),'foreignKey':_0xd6ee('0x1c7')});db[_0xd6ee('0xa2')]['hasMany'](db[_0xd6ee('0x1c8')],{'as':_0xd6ee('0x1bb'),'onDelete':'cascade','foreignKey':_0xd6ee('0x1bc')});db['DeskConfiguration'][_0xd6ee('0x109')](db[_0xd6ee('0xa4')],{'as':_0xd6ee('0x1be'),'onDelete':_0xd6ee('0x107'),'foreignKey':_0xd6ee('0x1c4')});db['DeskConfiguration'][_0xd6ee('0x109')](db[_0xd6ee('0xa4')],{'as':'Descriptions','onDelete':_0xd6ee('0x107'),'foreignKey':_0xd6ee('0x1c1')});db[_0xd6ee('0x1c8')][_0xd6ee('0x109')](db[_0xd6ee('0xa4')],{'as':_0xd6ee('0x1b7'),'onDelete':_0xd6ee('0x107'),'foreignKey':'FieldId'});db[_0xd6ee('0x1c8')][_0xd6ee('0x147')](db['DeskAccount'],{'as':_0xd6ee('0x173'),'foreignKey':_0xd6ee('0x1bc')});db[_0xd6ee('0x1c8')]['belongsToMany'](db[_0xd6ee('0x16c')],{'through':_0xd6ee('0x1c9')});db[_0xd6ee('0xa4')][_0xd6ee('0x109')](db[_0xd6ee('0xa4')],{'as':_0xd6ee('0x1c0'),'foreignKey':_0xd6ee('0x1c4')});db[_0xd6ee('0xa4')][_0xd6ee('0x109')](db[_0xd6ee('0xa4')],{'as':_0xd6ee('0x1c6'),'foreignKey':_0xd6ee('0x1c1')});db['DeskField'][_0xd6ee('0x109')](db[_0xd6ee('0xa4')],{'as':_0xd6ee('0x1c2'),'foreignKey':_0xd6ee('0x1bf')});db[_0xd6ee('0xa4')][_0xd6ee('0x147')](db[_0xd6ee('0x1c3')],{'as':_0xd6ee('0x1c3'),'foreignKey':_0xd6ee('0x1c7')});db[_0xd6ee('0xa5')]['hasMany'](db[_0xd6ee('0x1ca')],{'as':_0xd6ee('0x1bb'),'onDelete':_0xd6ee('0x107'),'foreignKey':_0xd6ee('0x1bc')});db[_0xd6ee('0x1ca')][_0xd6ee('0x109')](db[_0xd6ee('0xa8')],{'as':'Subjects','onDelete':_0xd6ee('0x107'),'foreignKey':'SubjectId'});db['ZohoConfiguration'][_0xd6ee('0x109')](db[_0xd6ee('0xa8')],{'as':_0xd6ee('0x1cb'),'onDelete':_0xd6ee('0x107'),'foreignKey':_0xd6ee('0x1c1')});db[_0xd6ee('0x1ca')][_0xd6ee('0x109')](db[_0xd6ee('0xa8')],{'as':_0xd6ee('0x1b7'),'onDelete':_0xd6ee('0x107'),'foreignKey':_0xd6ee('0x1bf')});db[_0xd6ee('0x1ca')][_0xd6ee('0x147')](db['ZohoAccount'],{'as':_0xd6ee('0x173'),'foreignKey':'AccountId'});db[_0xd6ee('0xa8')][_0xd6ee('0x109')](db['ZohoField'],{'as':_0xd6ee('0x1c0'),'foreignKey':_0xd6ee('0x1c4')});db[_0xd6ee('0xa8')][_0xd6ee('0x109')](db[_0xd6ee('0xa8')],{'as':_0xd6ee('0x1c6'),'foreignKey':_0xd6ee('0x1c1')});db[_0xd6ee('0xa8')]['hasMany'](db[_0xd6ee('0xa8')],{'as':_0xd6ee('0x1c2'),'foreignKey':_0xd6ee('0x1bf')});db[_0xd6ee('0xa8')][_0xd6ee('0x147')](db['Variable'],{'as':'Variable','foreignKey':_0xd6ee('0x1c7')});db[_0xd6ee('0xa9')][_0xd6ee('0x109')](db[_0xd6ee('0xaa')],{'as':'Configurations','onDelete':_0xd6ee('0x107'),'foreignKey':_0xd6ee('0x1bc')});db[_0xd6ee('0xaa')][_0xd6ee('0x109')](db[_0xd6ee('0xab')],{'as':_0xd6ee('0x1be'),'foreignKey':_0xd6ee('0x1c4')});db[_0xd6ee('0xaa')]['hasMany'](db[_0xd6ee('0xab')],{'as':_0xd6ee('0x1cb'),'foreignKey':_0xd6ee('0x1c1')});db[_0xd6ee('0xaa')][_0xd6ee('0x109')](db['ZendeskField'],{'as':_0xd6ee('0x1b7'),'foreignKey':'FieldId'});db[_0xd6ee('0xaa')][_0xd6ee('0x147')](db[_0xd6ee('0xa9')],{'as':_0xd6ee('0x173'),'foreignKey':_0xd6ee('0x1bc')});db[_0xd6ee('0xaa')][_0xd6ee('0x116')](db['Tag'],{'through':'int_zendesk_configuration_has_tags'});db[_0xd6ee('0xab')][_0xd6ee('0x109')](db[_0xd6ee('0xab')],{'as':'Subject','foreignKey':_0xd6ee('0x1c4')});db[_0xd6ee('0xab')]['hasMany'](db[_0xd6ee('0xab')],{'as':_0xd6ee('0x1c6'),'foreignKey':_0xd6ee('0x1c1')});db[_0xd6ee('0xab')][_0xd6ee('0x109')](db[_0xd6ee('0xab')],{'as':_0xd6ee('0x1c2'),'foreignKey':_0xd6ee('0x1bf')});db[_0xd6ee('0xab')][_0xd6ee('0x147')](db[_0xd6ee('0x1c3')],{'as':_0xd6ee('0x1c3'),'foreignKey':'VariableId'});db[_0xd6ee('0xad')][_0xd6ee('0x109')](db[_0xd6ee('0xaf')],{'as':_0xd6ee('0x1bb'),'onDelete':_0xd6ee('0x107'),'foreignKey':_0xd6ee('0x1bc')});db[_0xd6ee('0xaf')][_0xd6ee('0x109')](db['FreshdeskField'],{'as':_0xd6ee('0x1be'),'onDelete':_0xd6ee('0x107'),'foreignKey':_0xd6ee('0x1c4')});db[_0xd6ee('0xaf')][_0xd6ee('0x109')](db[_0xd6ee('0xb0')],{'as':_0xd6ee('0x1cb'),'onDelete':_0xd6ee('0x107'),'foreignKey':_0xd6ee('0x1c1')});db[_0xd6ee('0xaf')][_0xd6ee('0x109')](db[_0xd6ee('0xb0')],{'as':_0xd6ee('0x1b7'),'onDelete':_0xd6ee('0x107'),'foreignKey':_0xd6ee('0x1bf')});db[_0xd6ee('0xaf')][_0xd6ee('0x147')](db['FreshdeskAccount'],{'as':_0xd6ee('0x173'),'foreignKey':_0xd6ee('0x1bc')});db[_0xd6ee('0xaf')][_0xd6ee('0x116')](db[_0xd6ee('0x16c')],{'through':_0xd6ee('0x1cc')});db['FreshdeskField'][_0xd6ee('0x109')](db['FreshdeskField'],{'as':'Subject','foreignKey':_0xd6ee('0x1c4')});db[_0xd6ee('0xb0')][_0xd6ee('0x109')](db['FreshdeskField'],{'as':'Description','foreignKey':_0xd6ee('0x1c1')});db['FreshdeskField']['hasMany'](db[_0xd6ee('0xb0')],{'as':_0xd6ee('0x1c2'),'foreignKey':'FieldId'});db['FreshdeskField'][_0xd6ee('0x147')](db[_0xd6ee('0x1c3')],{'as':_0xd6ee('0x1c3'),'foreignKey':_0xd6ee('0x1c7')});db[_0xd6ee('0xb2')][_0xd6ee('0x109')](db[_0xd6ee('0x1cd')],{'as':_0xd6ee('0x1bb'),'onDelete':'cascade','foreignKey':_0xd6ee('0x1bc')});db[_0xd6ee('0x1cd')][_0xd6ee('0x109')](db[_0xd6ee('0xb5')],{'as':_0xd6ee('0x1be'),'foreignKey':'SubjectId'});db['VtigerConfiguration'][_0xd6ee('0x109')](db[_0xd6ee('0xb5')],{'as':_0xd6ee('0x1cb'),'foreignKey':'DescriptionId'});db[_0xd6ee('0x1cd')]['hasMany'](db[_0xd6ee('0xb5')],{'as':'Fields','foreignKey':_0xd6ee('0x1bf')});db['VtigerConfiguration'][_0xd6ee('0x147')](db[_0xd6ee('0xb2')],{'as':_0xd6ee('0x173'),'foreignKey':_0xd6ee('0x1bc')});db[_0xd6ee('0xb5')][_0xd6ee('0x109')](db[_0xd6ee('0xb5')],{'as':'Subject','foreignKey':_0xd6ee('0x1c4')});db[_0xd6ee('0xb5')]['hasMany'](db[_0xd6ee('0xb5')],{'as':'Description','foreignKey':_0xd6ee('0x1c1')});db['VtigerField']['hasMany'](db[_0xd6ee('0xb5')],{'as':_0xd6ee('0x1c2'),'foreignKey':'FieldId'});db[_0xd6ee('0xb5')]['belongsTo'](db[_0xd6ee('0x1c3')],{'as':_0xd6ee('0x1c3'),'foreignKey':'VariableId'});db['ServicenowAccount']['hasMany'](db[_0xd6ee('0xb8')],{'as':_0xd6ee('0x1bb'),'onDelete':_0xd6ee('0x107'),'foreignKey':_0xd6ee('0x1bc')});db[_0xd6ee('0xb8')]['hasMany'](db['ServicenowField'],{'as':_0xd6ee('0x1be'),'foreignKey':_0xd6ee('0x1c4')});db['ServicenowConfiguration'][_0xd6ee('0x109')](db[_0xd6ee('0xb9')],{'as':'Descriptions','foreignKey':_0xd6ee('0x1c1')});db['ServicenowConfiguration'][_0xd6ee('0x109')](db[_0xd6ee('0xb9')],{'as':'Fields','foreignKey':_0xd6ee('0x1bf')});db['ServicenowConfiguration'][_0xd6ee('0x147')](db[_0xd6ee('0xb6')],{'as':_0xd6ee('0x173'),'foreignKey':_0xd6ee('0x1bc')});db[_0xd6ee('0xb9')][_0xd6ee('0x109')](db[_0xd6ee('0xb9')],{'as':'Subject','foreignKey':_0xd6ee('0x1c4')});db[_0xd6ee('0xb9')]['hasMany'](db[_0xd6ee('0xb9')],{'as':'Description','foreignKey':_0xd6ee('0x1c1')});db[_0xd6ee('0xb9')][_0xd6ee('0x109')](db[_0xd6ee('0xb9')],{'as':_0xd6ee('0x1c2'),'foreignKey':_0xd6ee('0x1bf')});db[_0xd6ee('0xb9')][_0xd6ee('0x147')](db[_0xd6ee('0x1c3')],{'as':'Variable','foreignKey':_0xd6ee('0x1c7')});db[_0xd6ee('0x1ce')]['hasMany'](db['Dynamics365Configuration'],{'as':'Configurations','onDelete':_0xd6ee('0x107'),'foreignKey':_0xd6ee('0x1bc')});db[_0xd6ee('0x1ce')][_0xd6ee('0x147')](db[_0xd6ee('0x100')],{'as':_0xd6ee('0x100'),'foreignKey':_0xd6ee('0x15d')});db[_0xd6ee('0xbc')]['hasMany'](db[_0xd6ee('0x1cf')],{'as':_0xd6ee('0x1be'),'onDelete':_0xd6ee('0x107'),'foreignKey':'SubjectId'});db[_0xd6ee('0xbc')][_0xd6ee('0x109')](db['Dynamics365Field'],{'as':'Descriptions','onDelete':_0xd6ee('0x107'),'foreignKey':'DescriptionId'});db[_0xd6ee('0xbc')][_0xd6ee('0x109')](db[_0xd6ee('0x1cf')],{'as':'Fields','onDelete':_0xd6ee('0x107'),'foreignKey':_0xd6ee('0x1bf')});db['Dynamics365Configuration'][_0xd6ee('0x147')](db['Dynamics365Account'],{'as':_0xd6ee('0x173'),'foreignKey':'AccountId'});db[_0xd6ee('0x1cf')][_0xd6ee('0x109')](db['Dynamics365Field'],{'as':_0xd6ee('0x1c0'),'foreignKey':_0xd6ee('0x1c4')});db[_0xd6ee('0x1cf')][_0xd6ee('0x109')](db['Dynamics365Field'],{'as':_0xd6ee('0x1c6'),'foreignKey':_0xd6ee('0x1c1')});db[_0xd6ee('0x1cf')]['hasMany'](db[_0xd6ee('0x1cf')],{'as':_0xd6ee('0x1c2'),'foreignKey':_0xd6ee('0x1bf')});db[_0xd6ee('0x1cf')]['belongsTo'](db[_0xd6ee('0x1c3')],{'as':'Variable','foreignKey':_0xd6ee('0x1c7')});db[_0xd6ee('0xbf')]['hasMany'](db[_0xd6ee('0xc1')],{'as':'Configurations','onDelete':_0xd6ee('0x107'),'foreignKey':_0xd6ee('0x1bc')});db['FreshsalesConfiguration']['hasMany'](db[_0xd6ee('0xc3')],{'as':'Subjects','foreignKey':_0xd6ee('0x1c4')});db[_0xd6ee('0xc1')][_0xd6ee('0x109')](db[_0xd6ee('0xc3')],{'as':_0xd6ee('0x1cb'),'foreignKey':_0xd6ee('0x1c1')});db[_0xd6ee('0xc1')]['hasMany'](db[_0xd6ee('0xc3')],{'as':_0xd6ee('0x1b7'),'foreignKey':_0xd6ee('0x1bf')});db[_0xd6ee('0xc1')][_0xd6ee('0x147')](db['FreshsalesAccount'],{'as':_0xd6ee('0x173'),'foreignKey':_0xd6ee('0x1bc')});db[_0xd6ee('0xc3')][_0xd6ee('0x109')](db[_0xd6ee('0xc3')],{'as':_0xd6ee('0x1c0'),'foreignKey':'SubjectId'});db[_0xd6ee('0xc3')][_0xd6ee('0x109')](db[_0xd6ee('0xc3')],{'as':_0xd6ee('0x1c6'),'foreignKey':_0xd6ee('0x1c1')});db[_0xd6ee('0xc3')][_0xd6ee('0x109')](db[_0xd6ee('0xc3')],{'as':'Field','foreignKey':_0xd6ee('0x1bf')});db['FreshsalesField'][_0xd6ee('0x147')](db[_0xd6ee('0x1c3')],{'as':'Variable','foreignKey':'VariableId'});db[_0xd6ee('0x1d0')][_0xd6ee('0x147')](db['ChatWebsite'],{});db['ChatQueueReport'][_0xd6ee('0x147')](db[_0xd6ee('0xeb')],{'as':'List','foreignKey':_0xd6ee('0x166')});db[_0xd6ee('0x1d0')][_0xd6ee('0x147')](db[_0xd6ee('0x119')],{'as':_0xd6ee('0x15c'),'foreignKey':_0xd6ee('0x176')});db[_0xd6ee('0x1d0')][_0xd6ee('0x147')](db['ChatInteraction'],{});db['ChatQueueReport'][_0xd6ee('0x147')](db[_0xd6ee('0x5f')],{});db[_0xd6ee('0x1d0')]['belongsTo'](db[_0xd6ee('0x11')],{});db[_0xd6ee('0x1d0')][_0xd6ee('0x147')](db[_0xd6ee('0x63')],{});db[_0xd6ee('0xc6')][_0xd6ee('0x147')](db['User'],{'onDelete':'cascade','foreignKey':_0xd6ee('0x1d1')});db['ChatInternalMessage'][_0xd6ee('0x147')](db[_0xd6ee('0x11')],{'onDelete':_0xd6ee('0x107'),'foreignKey':_0xd6ee('0x1d2')});db[_0xd6ee('0xcc')][_0xd6ee('0x109')](db[_0xd6ee('0xca')],{'foreignKey':'SessionId','onDelete':_0xd6ee('0x107')});db[_0xd6ee('0xcc')][_0xd6ee('0x109')](db['JscriptyAnswerReport'],{'foreignKey':_0xd6ee('0x1d3'),'onDelete':_0xd6ee('0x107')});db[_0xd6ee('0xce')][_0xd6ee('0x147')](db['SmsAccount'],{});db[_0xd6ee('0xce')][_0xd6ee('0x147')](db[_0xd6ee('0xeb')],{'as':'List','foreignKey':'ListId'});db['SmsQueueReport']['belongsTo'](db[_0xd6ee('0x119')],{'as':_0xd6ee('0x15c'),'foreignKey':'ContactId'});db[_0xd6ee('0xce')][_0xd6ee('0x147')](db[_0xd6ee('0x4e')],{});db['SmsQueueReport'][_0xd6ee('0x147')](db[_0xd6ee('0x4f')],{});db['SmsQueueReport']['belongsTo'](db[_0xd6ee('0x11')],{});db[_0xd6ee('0xce')][_0xd6ee('0x147')](db['SmsQueue'],{});db['JscriptyProject'][_0xd6ee('0x109')](db[_0xd6ee('0xcc')],{'foreignKey':'ProjectId'});db['JscriptyProject'][_0xd6ee('0x109')](db['JscriptyQuestionReport'],{'foreignKey':'ProjectId'});db['JscriptyProject'][_0xd6ee('0x109')](db[_0xd6ee('0xc8')],{'foreignKey':_0xd6ee('0x1d4')});db[_0xd6ee('0x11d')][_0xd6ee('0x116')](db[_0xd6ee('0x11')],{'as':_0xd6ee('0x14f'),'through':_0xd6ee('0x11e')});db['Team'][_0xd6ee('0x116')](db[_0xd6ee('0x127')],{'through':_0xd6ee('0x151'),'as':_0xd6ee('0x128')});db[_0xd6ee('0x11d')][_0xd6ee('0x116')](db[_0xd6ee('0x169')],{'through':'team_has_mail_queues','as':'MailQueues'});db['Team'][_0xd6ee('0x116')](db[_0xd6ee('0x63')],{'through':_0xd6ee('0x193'),'as':_0xd6ee('0x1d5')});db[_0xd6ee('0x11d')][_0xd6ee('0x116')](db[_0xd6ee('0x49')],{'through':_0xd6ee('0x17d'),'as':'FaxQueues'});db['Team'][_0xd6ee('0x116')](db['SmsQueue'],{'through':_0xd6ee('0x184'),'as':_0xd6ee('0x12d')});db['Team'][_0xd6ee('0x116')](db['OpenchannelQueue'],{'through':'team_has_openchannel_queues','as':_0xd6ee('0x12f')});db[_0xd6ee('0x11d')][_0xd6ee('0x116')](db[_0xd6ee('0xff')],{'through':_0xd6ee('0x1d6'),'as':_0xd6ee('0x131')});db[_0xd6ee('0x11d')]['belongsToMany'](db['VoicePrefix'],{'through':_0xd6ee('0x102'),'as':_0xd6ee('0x129')});db[_0xd6ee('0x19c')][_0xd6ee('0x109')](db['CmHopper'],{'as':_0xd6ee('0x142'),'foreignKey':_0xd6ee('0x19d')});db['Campaign']['hasMany'](db[_0xd6ee('0x6d')],{'as':'HopperFinals','foreignKey':'CampaignId'});db[_0xd6ee('0x19c')][_0xd6ee('0x109')](db[_0xd6ee('0x143')],{'as':'HopperHistories','foreignKey':_0xd6ee('0x19d')});db[_0xd6ee('0x19c')][_0xd6ee('0x109')](db[_0xd6ee('0x6b')],{'as':'HopperBlacks','foreignKey':_0xd6ee('0x19d')});db[_0xd6ee('0x19c')][_0xd6ee('0x147')](db[_0xd6ee('0x26')],{'as':_0xd6ee('0x26'),'foreignKey':_0xd6ee('0x148')});db[_0xd6ee('0x19c')][_0xd6ee('0x147')](db['Trunk'],{'as':_0xd6ee('0x1d7'),'foreignKey':_0xd6ee('0x149')});db[_0xd6ee('0x19c')][_0xd6ee('0x147')](db['Interval'],{'as':_0xd6ee('0x7b'),'foreignKey':_0xd6ee('0x14a')});db[_0xd6ee('0x19c')][_0xd6ee('0x147')](db[_0xd6ee('0xd7')],{'as':_0xd6ee('0xd7'),'foreignKey':_0xd6ee('0x1d8')});db[_0xd6ee('0x19c')]['belongsToMany'](db['CmList'],{'as':_0xd6ee('0x11c'),'through':'campaigns_has_cm_lists'});db[_0xd6ee('0x19c')][_0xd6ee('0x116')](db[_0xd6ee('0xeb')],{'as':_0xd6ee('0x152'),'through':_0xd6ee('0x1d9')});db[_0xd6ee('0xe0')][_0xd6ee('0x147')](db[_0xd6ee('0x61')],{'as':'ChatOfflineMessage','foreignKey':_0xd6ee('0x1da')});db[_0xd6ee('0xe3')][_0xd6ee('0x147')](db[_0xd6ee('0x39')],{});db[_0xd6ee('0xe3')]['belongsTo'](db[_0xd6ee('0x112')],{});db[_0xd6ee('0xe3')][_0xd6ee('0x147')](db[_0xd6ee('0x35')],{'foreignKey':_0xd6ee('0x1db'),'as':_0xd6ee('0x1dc')});db[_0xd6ee('0xe3')][_0xd6ee('0x147')](db[_0xd6ee('0x11')],{'foreignKey':'FromUserId','as':_0xd6ee('0x1dd')});db[_0xd6ee('0xe3')][_0xd6ee('0x147')](db[_0xd6ee('0x11')],{'foreignKey':'ToUserId','as':_0xd6ee('0x1de')});db[_0xd6ee('0xe3')][_0xd6ee('0x147')](db[_0xd6ee('0x169')],{'foreignKey':'ToMailQueueId','as':'ToQueue'});db[_0xd6ee('0xe3')][_0xd6ee('0x147')](db[_0xd6ee('0x35')],{'foreignKey':_0xd6ee('0x1df'),'as':_0xd6ee('0x1e0')});db[_0xd6ee('0xe5')][_0xd6ee('0x147')](db[_0xd6ee('0x5f')],{});db[_0xd6ee('0xe5')][_0xd6ee('0x147')](db[_0xd6ee('0x110')],{});db[_0xd6ee('0xe5')][_0xd6ee('0x147')](db[_0xd6ee('0x59')],{'foreignKey':'FromChatWebsiteId','as':_0xd6ee('0x1dc')});db[_0xd6ee('0xe5')][_0xd6ee('0x147')](db['User'],{'foreignKey':_0xd6ee('0x1e1'),'as':_0xd6ee('0x1dd')});db['ChatTransferReport'][_0xd6ee('0x147')](db['User'],{'foreignKey':_0xd6ee('0x1e2'),'as':'ToAgent'});db['ChatTransferReport'][_0xd6ee('0x147')](db['ChatQueue'],{'foreignKey':_0xd6ee('0x1e3'),'as':_0xd6ee('0x1e4')});db[_0xd6ee('0xe5')][_0xd6ee('0x147')](db[_0xd6ee('0x59')],{'foreignKey':_0xd6ee('0x1e5'),'as':_0xd6ee('0x1e0')});db['FaxTransferReport']['belongsTo'](db[_0xd6ee('0x47')],{});db[_0xd6ee('0xe7')][_0xd6ee('0x147')](db[_0xd6ee('0x45')],{});db['FaxTransferReport']['belongsTo'](db[_0xd6ee('0x42')],{'foreignKey':_0xd6ee('0x1e6'),'as':_0xd6ee('0x1dc')});db[_0xd6ee('0xe7')][_0xd6ee('0x147')](db[_0xd6ee('0x11')],{'foreignKey':_0xd6ee('0x1e1'),'as':_0xd6ee('0x1dd')});db[_0xd6ee('0xe7')][_0xd6ee('0x147')](db[_0xd6ee('0x11')],{'foreignKey':_0xd6ee('0x1e2'),'as':_0xd6ee('0x1de')});db[_0xd6ee('0xe7')][_0xd6ee('0x147')](db[_0xd6ee('0x49')],{'foreignKey':'ToFaxQueueId','as':_0xd6ee('0x1e4')});db[_0xd6ee('0xe7')][_0xd6ee('0x147')](db['FaxAccount'],{'foreignKey':_0xd6ee('0x1e7'),'as':'ToAccount'});db[_0xd6ee('0xe9')]['belongsTo'](db[_0xd6ee('0x57')],{});db[_0xd6ee('0xe9')][_0xd6ee('0x147')](db[_0xd6ee('0x10e')],{});db[_0xd6ee('0xe9')]['belongsTo'](db[_0xd6ee('0x53')],{'foreignKey':_0xd6ee('0x1e8'),'as':_0xd6ee('0x1dc')});db['OpenchannelTransferReport'][_0xd6ee('0x147')](db['User'],{'foreignKey':'FromUserId','as':'FromAgent'});db[_0xd6ee('0xe9')]['belongsTo'](db[_0xd6ee('0x11')],{'foreignKey':_0xd6ee('0x1e2'),'as':_0xd6ee('0x1de')});db[_0xd6ee('0xe9')][_0xd6ee('0x147')](db['OpenchannelQueue'],{'foreignKey':_0xd6ee('0x1e9'),'as':'ToQueue'});db[_0xd6ee('0xe9')][_0xd6ee('0x147')](db['OpenchannelAccount'],{'foreignKey':'ToOpenchannelAccountId','as':_0xd6ee('0x1e0')});db[_0xd6ee('0x1ea')]['belongsTo'](db[_0xd6ee('0x4f')],{});db['SmsTransferReport'][_0xd6ee('0x147')](db['SmsInteraction'],{});db[_0xd6ee('0x1ea')][_0xd6ee('0x147')](db['SmsAccount'],{'foreignKey':_0xd6ee('0x1eb'),'as':'FromAccount'});db[_0xd6ee('0x1ea')][_0xd6ee('0x147')](db[_0xd6ee('0x11')],{'foreignKey':'FromUserId','as':'FromAgent'});db[_0xd6ee('0x1ea')][_0xd6ee('0x147')](db[_0xd6ee('0x11')],{'foreignKey':_0xd6ee('0x1e2'),'as':'ToAgent'});db[_0xd6ee('0x1ea')]['belongsTo'](db[_0xd6ee('0x51')],{'foreignKey':_0xd6ee('0x1ec'),'as':_0xd6ee('0x1e4')});db['SmsTransferReport'][_0xd6ee('0x147')](db[_0xd6ee('0x4b')],{'foreignKey':'ToSmsAccountId','as':_0xd6ee('0x1e0')});db[_0xd6ee('0xeb')][_0xd6ee('0x109')](db[_0xd6ee('0x77')],{'as':_0xd6ee('0x161'),'foreignKey':_0xd6ee('0x166'),'onDelete':_0xd6ee('0x107')});db['CmList']['hasMany'](db['CmCustomField'],{'as':'CustomFields','foreignKey':_0xd6ee('0x166')});db[_0xd6ee('0xeb')][_0xd6ee('0x109')](db[_0xd6ee('0x119')],{'as':_0xd6ee('0x11a'),'onDelete':'cascade','foreignKey':_0xd6ee('0x166')});db[_0xd6ee('0xeb')][_0xd6ee('0x109')](db['CmHopperFinal'],{'as':'HopperFinals','foreignKey':_0xd6ee('0x166')});db[_0xd6ee('0xeb')][_0xd6ee('0x109')](db['CmHopperHistory'],{'as':_0xd6ee('0x1ed'),'foreignKey':_0xd6ee('0x166')});db[_0xd6ee('0xeb')]['hasMany'](db['ReportAgentPreview'],{'as':_0xd6ee('0x10d'),'foreignKey':_0xd6ee('0x166')});db[_0xd6ee('0xeb')][_0xd6ee('0x116')](db[_0xd6ee('0x127')],{'as':'Queues','through':'voice_queues_has_cm_lists'});db[_0xd6ee('0xeb')][_0xd6ee('0x116')](db[_0xd6ee('0x11')],{'as':'Agents','through':_0xd6ee('0x1ee')});db[_0xd6ee('0xed')][_0xd6ee('0x109')](db[_0xd6ee('0x16')],{'as':_0xd6ee('0x1a6'),'onDelete':'cascade'});db[_0xd6ee('0xed')][_0xd6ee('0x116')](db['User'],{'as':'Agents','through':_0xd6ee('0x12a')});db['VoicePrefix'][_0xd6ee('0x116')](db[_0xd6ee('0x11d')],{'through':_0xd6ee('0x102'),'as':_0xd6ee('0x150')});db[_0xd6ee('0xef')][_0xd6ee('0x109')](db[_0xd6ee('0x11')],{'as':_0xd6ee('0x170'),'foreignKey':'userProfileId'});db[_0xd6ee('0xef')][_0xd6ee('0x109')](db['UserProfileSection'],{'as':'UserProfileSections','foreignKey':_0xd6ee('0x115'),'onDelete':_0xd6ee('0x107')});db['UserProfileSection'][_0xd6ee('0x109')](db[_0xd6ee('0xf1')],{'as':'Resources','foreignKey':_0xd6ee('0x1ef'),'onDelete':_0xd6ee('0x107')});db[_0xd6ee('0x139')]['hasMany'](db[_0xd6ee('0x77')],{'as':_0xd6ee('0x161'),'foreignKey':'WhatsappAccountId','onDelete':_0xd6ee('0x107')});db[_0xd6ee('0x139')][_0xd6ee('0x109')](db[_0xd6ee('0x75')],{'as':_0xd6ee('0x162'),'foreignKey':'WhatsappAccountId'});db[_0xd6ee('0x139')][_0xd6ee('0x109')](db['WhatsappMessage'],{'as':_0xd6ee('0x155'),'foreignKey':'WhatsappAccountId'});db[_0xd6ee('0x139')]['hasMany'](db[_0xd6ee('0xf7')],{'as':'Interactions'});db[_0xd6ee('0x139')][_0xd6ee('0x109')](db[_0xd6ee('0xf6')],{'as':_0xd6ee('0x13f')});db[_0xd6ee('0x139')]['belongsTo'](db['CmList'],{'as':'List','foreignKey':_0xd6ee('0x166')});db[_0xd6ee('0x139')][_0xd6ee('0x147')](db[_0xd6ee('0x14b')],{'as':_0xd6ee('0x14c'),'foreignKey':'mandatoryDispositionPauseId'});db['WhatsappAccount'][_0xd6ee('0x116')](db['User'],{'as':_0xd6ee('0x14f'),'through':_0xd6ee('0x13b')});db[_0xd6ee('0xf6')][_0xd6ee('0x147')](db[_0xd6ee('0x11')],{'onDelete':'restrict'});db[_0xd6ee('0xf6')][_0xd6ee('0x147')](db['WhatsappQueue'],{'onDelete':_0xd6ee('0x15e')});db[_0xd6ee('0xf6')][_0xd6ee('0x147')](db[_0xd6ee('0x139')],{'onDelete':_0xd6ee('0x15e')});db[_0xd6ee('0xf6')][_0xd6ee('0x147')](db[_0xd6ee('0x7b')],{'onDelete':'restrict','foreignKey':_0xd6ee('0x14a')});db[_0xd6ee('0xf6')][_0xd6ee('0x147')](db[_0xd6ee('0x16c')],{'onDelete':_0xd6ee('0x15e'),'foreignKey':_0xd6ee('0x175')});db[_0xd6ee('0xf7')]['hasMany'](db[_0xd6ee('0xf9')],{'as':_0xd6ee('0x155'),'onDelete':_0xd6ee('0x107'),'foreignKey':_0xd6ee('0x1f0')});db[_0xd6ee('0xf7')][_0xd6ee('0x147')](db[_0xd6ee('0x139')],{'as':'Account','foreignKey':_0xd6ee('0x1f1')});db[_0xd6ee('0xf7')][_0xd6ee('0x147')](db['CmContact'],{'as':_0xd6ee('0x15c'),'foreignKey':_0xd6ee('0x176')});db[_0xd6ee('0xf7')][_0xd6ee('0x147')](db[_0xd6ee('0x11')],{'as':_0xd6ee('0x17b'),'foreignKey':'UserId'});db['WhatsappInteraction']['belongsToMany'](db[_0xd6ee('0x16c')],{'through':_0xd6ee('0x1ac'),'as':_0xd6ee('0x16e')});db['WhatsappInteraction'][_0xd6ee('0x116')](db[_0xd6ee('0x16c')],{'through':'whatsapp_interaction_has_tags','as':_0xd6ee('0x16f')});db['WhatsappInteraction'][_0xd6ee('0x116')](db[_0xd6ee('0x11')],{'as':_0xd6ee('0x170'),'through':_0xd6ee('0x126'),'foreignKey':_0xd6ee('0x1f0')});db[_0xd6ee('0xf9')][_0xd6ee('0x147')](db[_0xd6ee('0x11')],{'as':_0xd6ee('0x11')});db['WhatsappMessage'][_0xd6ee('0x147')](db[_0xd6ee('0x119')],{'onDelete':_0xd6ee('0x107'),'as':_0xd6ee('0x15c')});db['WhatsappMessage'][_0xd6ee('0x147')](db[_0xd6ee('0xf7')],{'onDelete':_0xd6ee('0x107'),'as':'Interaction','foreignKey':_0xd6ee('0x1f0')});db[_0xd6ee('0xf9')][_0xd6ee('0x147')](db[_0xd6ee('0x139')],{'as':_0xd6ee('0x173'),'foreignKey':_0xd6ee('0x1f1')});db['WhatsappQueueReport'][_0xd6ee('0x147')](db[_0xd6ee('0x139')],{});db[_0xd6ee('0xfb')][_0xd6ee('0x147')](db[_0xd6ee('0xeb')],{'as':'List','foreignKey':_0xd6ee('0x166')});db[_0xd6ee('0xfb')][_0xd6ee('0x147')](db['CmContact'],{'as':_0xd6ee('0x15c'),'foreignKey':'ContactId'});db[_0xd6ee('0xfb')][_0xd6ee('0x147')](db['WhatsappInteraction'],{});db['WhatsappQueueReport']['belongsTo'](db[_0xd6ee('0xff')],{});db[_0xd6ee('0xfb')][_0xd6ee('0x147')](db['WhatsappMessage'],{});db['WhatsappQueueReport'][_0xd6ee('0x147')](db[_0xd6ee('0x11')],{});db['WhatsappTransferReport'][_0xd6ee('0x147')](db[_0xd6ee('0xf9')],{});db[_0xd6ee('0xfd')][_0xd6ee('0x147')](db[_0xd6ee('0xf7')],{});db['WhatsappTransferReport'][_0xd6ee('0x147')](db[_0xd6ee('0x139')],{'foreignKey':_0xd6ee('0x1f2'),'as':'FromAccount'});db[_0xd6ee('0xfd')]['belongsTo'](db[_0xd6ee('0x139')],{'foreignKey':_0xd6ee('0x1f3'),'as':_0xd6ee('0x1e0')});db[_0xd6ee('0xfd')]['belongsTo'](db[_0xd6ee('0xff')],{'foreignKey':_0xd6ee('0x1f4'),'as':_0xd6ee('0x1e4')});db['WhatsappTransferReport']['belongsTo'](db[_0xd6ee('0x11')],{'foreignKey':_0xd6ee('0x1e1'),'as':_0xd6ee('0x1dd')});db[_0xd6ee('0xfd')][_0xd6ee('0x147')](db[_0xd6ee('0x11')],{'foreignKey':_0xd6ee('0x1e2'),'as':_0xd6ee('0x1de')});db[_0xd6ee('0xff')][_0xd6ee('0x116')](db[_0xd6ee('0x11')],{'as':_0xd6ee('0x14f'),'through':'UserWhatsappQueue','foreignKey':'WhatsappQueueId'});db[_0xd6ee('0xff')][_0xd6ee('0x116')](db[_0xd6ee('0x11d')],{'through':_0xd6ee('0x1d6'),'as':_0xd6ee('0x150')});db[_0xd6ee('0x103')]['belongsTo'](db[_0xd6ee('0x11')],{'as':_0xd6ee('0x1f5'),'foreignKey':_0xd6ee('0x108'),'onDelete':_0xd6ee('0x107'),'hooks':!![]});db[_0xd6ee('0x100')]['hasOne'](db[_0xd6ee('0x1ce')],{'as':_0xd6ee('0x1ce'),'onDelete':'restrict'});db[_0xd6ee('0x100')][_0xd6ee('0x105')](db[_0xd6ee('0x32')],{'as':_0xd6ee('0x1f6'),'onDelete':_0xd6ee('0x15e')});db['CloudProvider'][_0xd6ee('0x105')](db[_0xd6ee('0x34')],{'as':_0xd6ee('0x160'),'onDelete':_0xd6ee('0x15e')});module[_0xd6ee('0x1f7')]={'db':db,'dbH':dbH};
\ No newline at end of file
index 3c55a8d..2d0db50 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0xbc90=['./api/intZendeskConfiguration','/api/integrations/zendesk/fields','./api/intZendeskField','/api/integrations/freshdesk/accounts','./api/intFreshdeskAccount','./api/intFreshdeskConfiguration','./api/intFreshdeskField','./api/intVtigerAccount','/api/integrations/vtiger/configurations','/api/integrations/vtiger/fields','./api/intVtigerField','/api/integrations/servicenow/accounts','./api/intServicenowAccount','./api/intServicenowConfiguration','/api/integrations/servicenow/fields','./api/intServicenowField','/api/integrations/dynamics365/accounts','/api/integrations/dynamics365/configurations','./api/intDynamics365Configuration','/api/integrations/dynamics365/fields','./api/intDynamics365Field','./api/intFreshsalesAccount','./api/intFreshsalesConfiguration','/api/integrations/freshsales/fields','./api/intFreshsalesField','/api/networks','/api/chat/reports/queue','./api/chatQueueReport','/api/chat/internal/messages','./api/chatInternalMessage','/api/jscripty/answers/reports','./api/jscriptyAnswerReport','/api/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/settings','./api/setting','/api/square/odbc','./api/squareOdbc','/api/square/recordings','./api/squareRecording','/api/square/messages','./api/squareMessage','./api/license','./api/campaign','/api/migrations','/api/attachments','/api/plugins','./api/plugin','/api/mail/reports/transfer','./api/mailTransferReport','/api/chat/reports/transfer','./api/chatTransferReport','/api/fax/reports/transfer','/api/openchannel/reports/transfer','./api/openchannelTransferReport','/api/sms/reports/transfer','./api/smsTransferReport','/api/cm/lists','./api/cmList','/api/voice/prefixes','/api/userProfiles','./api/userProfile','./api/userProfileSection','/api/userProfile/resources','./api/userProfileResource','/api/userNotifications','/api/whatsapp/accounts','./api/whatsappAccount','./api/whatsappApplication','/api/whatsapp/interactions','./api/whatsappInteraction','/api/whatsapp/messages','/api/whatsapp/reports/queue','./api/whatsappQueueReport','./api/whatsappTransferReport','/api/whatsapp/queues','/api/cloudProviders','./api/cloudProvider','/api/realtime','./api/user-setting','/api/auth/local','./api/authLocal','/api/auth/google','./api/authGoogle','/api/auth/activedirectory','./api/authActiveDirectory','/api/jira','/api/rpc','./api/rpc','/api/version','./api/version','/api/system','./api/system','/api/webbar','./api/webbar','/api/logs','/apidoc','root','static','join','/www','/demo','/snippet','/plugins','route','get','resolve','appPath','/index.html','express','./errors','./config/environment','./utils/client-side-logger','./api/client-side-logs','default','then','/api/users','./api/user','use','/api/voice/chanspy','./api/voiceChanSpy','./api/voiceContext','./api/voiceExtension','/api/voice/queues','./api/voiceQueue','./api/voiceRecording','/api/screen/recordings','./api/screenRecording','./api/voiceMail','/api/voice/mails/messages','/api/voice/calls/reports','./api/voiceCallReport','./api/voiceDialReport','/api/voice/agents/reports','/api/voice/queues/reports','./api/voiceQueueReport','/api/members/reports','./api/memberReport','/api/trunks','./api/trunk','/api/voice/transfers/reports','./api/voiceTransferReport','/api/mail/out_servers','/api/mail/accounts','/api/mail/queues','/api/mail/substatuses','./api/mailSubstatus','/api/mail/interactions','./api/mailInteraction','/api/mail/messages','./api/mailMessage','/api/mail/reports/queue','./api/mailQueueReport','/api/dashboards','./api/dashboard','/api/dashboards/items','./api/dashboardItem','/api/fax/accounts','./api/faxAccount','/api/fax/applications','./api/faxApplication','./api/faxInteraction','/api/fax/messages','./api/faxMessage','/api/fax/queues','./api/faxQueue','/api/fax/reports/queue','./api/faxQueueReport','/api/sms/accounts','./api/smsAccount','./api/smsApplication','/api/sms/interactions','./api/smsInteraction','/api/sms/messages','/api/sms/queues','./api/smsQueue','/api/openchannel/accounts','./api/openchannelAccount','/api/openchannel/applications','./api/openchannelApplication','/api/openchannel/interactions','./api/openchannelInteraction','/api/openchannel/messages','/api/openchannel/queues','./api/openchannelQueue','/api/chat/websites','./api/openchannelQueueReport','/api/chat/applications','./api/chatApplication','/api/chat/interactions','./api/chatInteraction','/api/chat/messages','./api/chatMessage','./api/chatOfflineMessage','/api/chat/queues','./api/chatQueue','/api/chat/groups','./api/chatGroup','/api/chat/proactive_actions','./api/chatProactiveAction','/api/cm/companies','/api/cm/hopper_black','./api/cmHopperBlack','/api/cm/hopper_final','./api/cmHopperFinal','./api/cmHopperHistory','/api/cm/custom_fields','./api/cmCustomField','/api/actions','./api/action','/api/automations','./api/automation','/api/canned_answers','./api/cannedAnswer','/api/dispositions','./api/disposition','/api/conditions','./api/condition','/api/intervals','./api/interval','/api/cdr','./api/cdr','/api/voiceQueuesLog','./api/voiceQueuesLog','/api/sounds','/api/tags','./api/tag','/api/contact_item_types','./api/contactItemType','/api/cm_contact_has_items','./api/cmContactHasItem','/api/cm_hopper_additional_phones','./api/cmHopperAdditionalPhone','/api/templates','./api/template','/api/triggers','./api/trigger','/api/variables','./api/variable','/api/integrations','./api/integration','/api/integrations/reports','./api/integrationReport','/api/analytics/custom_reports','./api/analyticCustomReport','/api/analytics/default_reports','./api/analyticDefaultReport','/api/analytics/extracted_reports','./api/analyticExtractedReport','/api/analytics/metrics','./api/analyticMetric','/api/analytics/field_reports','./api/analyticFieldReport','/api/analytics/tree_reports','./api/analyticTreeReport','/api/integrations/salesforce/accounts','./api/intSalesforceAccount','/api/integrations/salesforce/configurations','./api/intSalesforceConfiguration','./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/intDeskConfiguration','/api/integrations/desk/fields','/api/integrations/zoho/accounts','./api/intZohoAccount','./api/intZohoConfiguration','/api/integrations/zoho/fields','./api/intZohoField','/api/integrations/zendesk/accounts','./api/intZendeskAccount','/api/integrations/zendesk/configurations'];(function(_0x3ee662,_0x697b37){var _0x2f0081=function(_0x134233){while(--_0x134233){_0x3ee662['push'](_0x3ee662['shift']());}};_0x2f0081(++_0x697b37);}(_0xbc90,0x76));var _0x0bc9=function(_0x513aa5,_0x1fba79){_0x513aa5=_0x513aa5-0x0;var _0x1a1a7c=_0xbc90[_0x513aa5];return _0x1a1a7c;};'use strict';var path=require('path');var express=require(_0x0bc9('0x0'));var errors=require(_0x0bc9('0x1'));var config=require(_0x0bc9('0x2'));var setupLoggers=require(_0x0bc9('0x3'))['setupLoggers'];var clientSideLogs=require(_0x0bc9('0x4'));exports[_0x0bc9('0x5')]=function(_0x19eccd){return setupLoggers(_0x19eccd)[_0x0bc9('0x6')](function(){_0x19eccd['use'](_0x0bc9('0x7'),require(_0x0bc9('0x8')));_0x19eccd[_0x0bc9('0x9')](_0x0bc9('0xa'),require(_0x0bc9('0xb')));_0x19eccd[_0x0bc9('0x9')]('/api/voice/contexts',require(_0x0bc9('0xc')));_0x19eccd[_0x0bc9('0x9')]('/api/voice/extensions',require(_0x0bc9('0xd')));_0x19eccd[_0x0bc9('0x9')]('/api/voice/mohs',require('./api/voiceMusicOnHold'));_0x19eccd['use'](_0x0bc9('0xe'),require(_0x0bc9('0xf')));_0x19eccd['use']('/api/voice/recordings',require(_0x0bc9('0x10')));_0x19eccd[_0x0bc9('0x9')](_0x0bc9('0x11'),require(_0x0bc9('0x12')));_0x19eccd[_0x0bc9('0x9')]('/api/voice/mails',require(_0x0bc9('0x13')));_0x19eccd[_0x0bc9('0x9')](_0x0bc9('0x14'),require('./api/voiceMailMessage'));_0x19eccd[_0x0bc9('0x9')](_0x0bc9('0x15'),require(_0x0bc9('0x16')));_0x19eccd[_0x0bc9('0x9')]('/api/voice/dials/reports',require(_0x0bc9('0x17')));_0x19eccd[_0x0bc9('0x9')](_0x0bc9('0x18'),require('./api/voiceAgentReport'));_0x19eccd[_0x0bc9('0x9')](_0x0bc9('0x19'),require(_0x0bc9('0x1a')));_0x19eccd[_0x0bc9('0x9')](_0x0bc9('0x1b'),require(_0x0bc9('0x1c')));_0x19eccd[_0x0bc9('0x9')](_0x0bc9('0x1d'),require(_0x0bc9('0x1e')));_0x19eccd[_0x0bc9('0x9')](_0x0bc9('0x1f'),require(_0x0bc9('0x20')));_0x19eccd[_0x0bc9('0x9')](_0x0bc9('0x21'),require('./api/mailServerOut'));_0x19eccd[_0x0bc9('0x9')](_0x0bc9('0x22'),require('./api/mailAccount'));_0x19eccd[_0x0bc9('0x9')](_0x0bc9('0x23'),require('./api/mailQueue'));_0x19eccd['use'](_0x0bc9('0x24'),require(_0x0bc9('0x25')));_0x19eccd['use'](_0x0bc9('0x26'),require(_0x0bc9('0x27')));_0x19eccd[_0x0bc9('0x9')](_0x0bc9('0x28'),require(_0x0bc9('0x29')));_0x19eccd[_0x0bc9('0x9')]('/api/mail/applications',require('./api/mailApplication'));_0x19eccd[_0x0bc9('0x9')](_0x0bc9('0x2a'),require(_0x0bc9('0x2b')));_0x19eccd['use'](_0x0bc9('0x2c'),require(_0x0bc9('0x2d')));_0x19eccd[_0x0bc9('0x9')](_0x0bc9('0x2e'),require(_0x0bc9('0x2f')));_0x19eccd[_0x0bc9('0x9')](_0x0bc9('0x30'),require(_0x0bc9('0x31')));_0x19eccd[_0x0bc9('0x9')](_0x0bc9('0x32'),require(_0x0bc9('0x33')));_0x19eccd[_0x0bc9('0x9')]('/api/fax/interactions',require(_0x0bc9('0x34')));_0x19eccd['use'](_0x0bc9('0x35'),require(_0x0bc9('0x36')));_0x19eccd[_0x0bc9('0x9')](_0x0bc9('0x37'),require(_0x0bc9('0x38')));_0x19eccd[_0x0bc9('0x9')](_0x0bc9('0x39'),require(_0x0bc9('0x3a')));_0x19eccd['use'](_0x0bc9('0x3b'),require(_0x0bc9('0x3c')));_0x19eccd[_0x0bc9('0x9')]('/api/sms/applications',require(_0x0bc9('0x3d')));_0x19eccd[_0x0bc9('0x9')](_0x0bc9('0x3e'),require(_0x0bc9('0x3f')));_0x19eccd[_0x0bc9('0x9')](_0x0bc9('0x40'),require('./api/smsMessage'));_0x19eccd[_0x0bc9('0x9')](_0x0bc9('0x41'),require(_0x0bc9('0x42')));_0x19eccd['use'](_0x0bc9('0x43'),require(_0x0bc9('0x44')));_0x19eccd[_0x0bc9('0x9')](_0x0bc9('0x45'),require(_0x0bc9('0x46')));_0x19eccd[_0x0bc9('0x9')](_0x0bc9('0x47'),require(_0x0bc9('0x48')));_0x19eccd[_0x0bc9('0x9')](_0x0bc9('0x49'),require('./api/openchannelMessage'));_0x19eccd['use'](_0x0bc9('0x4a'),require(_0x0bc9('0x4b')));_0x19eccd['use'](_0x0bc9('0x4c'),require('./api/chatWebsite'));_0x19eccd[_0x0bc9('0x9')]('/api/openchannel/reports/queue',require(_0x0bc9('0x4d')));_0x19eccd[_0x0bc9('0x9')](_0x0bc9('0x4e'),require(_0x0bc9('0x4f')));_0x19eccd[_0x0bc9('0x9')](_0x0bc9('0x50'),require(_0x0bc9('0x51')));_0x19eccd[_0x0bc9('0x9')](_0x0bc9('0x52'),require(_0x0bc9('0x53')));_0x19eccd['use']('/api/chat/offline_messages',require(_0x0bc9('0x54')));_0x19eccd[_0x0bc9('0x9')](_0x0bc9('0x55'),require(_0x0bc9('0x56')));_0x19eccd[_0x0bc9('0x9')](_0x0bc9('0x57'),require(_0x0bc9('0x58')));_0x19eccd['use'](_0x0bc9('0x59'),require(_0x0bc9('0x5a')));_0x19eccd['use'](_0x0bc9('0x5b'),require('./api/cmCompany'));_0x19eccd[_0x0bc9('0x9')]('/api/cm/contacts',require('./api/cmContact'));_0x19eccd[_0x0bc9('0x9')]('/api/cm/hopper',require('./api/cmHopper'));_0x19eccd[_0x0bc9('0x9')](_0x0bc9('0x5c'),require(_0x0bc9('0x5d')));_0x19eccd[_0x0bc9('0x9')](_0x0bc9('0x5e'),require(_0x0bc9('0x5f')));_0x19eccd['use']('/api/cm/hopper_history',require(_0x0bc9('0x60')));_0x19eccd[_0x0bc9('0x9')](_0x0bc9('0x61'),require(_0x0bc9('0x62')));_0x19eccd[_0x0bc9('0x9')](_0x0bc9('0x63'),require(_0x0bc9('0x64')));_0x19eccd[_0x0bc9('0x9')](_0x0bc9('0x65'),require(_0x0bc9('0x66')));_0x19eccd[_0x0bc9('0x9')](_0x0bc9('0x67'),require(_0x0bc9('0x68')));_0x19eccd[_0x0bc9('0x9')](_0x0bc9('0x69'),require(_0x0bc9('0x6a')));_0x19eccd[_0x0bc9('0x9')](_0x0bc9('0x6b'),require(_0x0bc9('0x6c')));_0x19eccd['use'](_0x0bc9('0x6d'),require(_0x0bc9('0x6e')));_0x19eccd['use']('/api/pauses',require('./api/pause'));_0x19eccd['use'](_0x0bc9('0x6f'),require(_0x0bc9('0x70')));_0x19eccd['use'](_0x0bc9('0x71'),require(_0x0bc9('0x72')));_0x19eccd[_0x0bc9('0x9')]('/api/schedules',require('./api/schedule'));_0x19eccd[_0x0bc9('0x9')](_0x0bc9('0x73'),require('./api/sound'));_0x19eccd[_0x0bc9('0x9')](_0x0bc9('0x74'),require(_0x0bc9('0x75')));_0x19eccd[_0x0bc9('0x9')](_0x0bc9('0x76'),require(_0x0bc9('0x77')));_0x19eccd['use'](_0x0bc9('0x78'),require(_0x0bc9('0x79')));_0x19eccd[_0x0bc9('0x9')](_0x0bc9('0x7a'),require(_0x0bc9('0x7b')));_0x19eccd['use'](_0x0bc9('0x7c'),require(_0x0bc9('0x7d')));_0x19eccd[_0x0bc9('0x9')](_0x0bc9('0x7e'),require(_0x0bc9('0x7f')));_0x19eccd[_0x0bc9('0x9')](_0x0bc9('0x80'),require(_0x0bc9('0x81')));_0x19eccd['use'](_0x0bc9('0x82'),require(_0x0bc9('0x83')));_0x19eccd[_0x0bc9('0x9')](_0x0bc9('0x84'),require(_0x0bc9('0x85')));_0x19eccd[_0x0bc9('0x9')](_0x0bc9('0x86'),require(_0x0bc9('0x87')));_0x19eccd[_0x0bc9('0x9')](_0x0bc9('0x88'),require(_0x0bc9('0x89')));_0x19eccd[_0x0bc9('0x9')](_0x0bc9('0x8a'),require(_0x0bc9('0x8b')));_0x19eccd[_0x0bc9('0x9')](_0x0bc9('0x8c'),require(_0x0bc9('0x8d')));_0x19eccd['use'](_0x0bc9('0x8e'),require(_0x0bc9('0x8f')));_0x19eccd['use'](_0x0bc9('0x90'),require(_0x0bc9('0x91')));_0x19eccd['use'](_0x0bc9('0x92'),require(_0x0bc9('0x93')));_0x19eccd[_0x0bc9('0x9')](_0x0bc9('0x94'),require(_0x0bc9('0x95')));_0x19eccd['use']('/api/integrations/salesforce/fields',require(_0x0bc9('0x96')));_0x19eccd['use'](_0x0bc9('0x97'),require(_0x0bc9('0x98')));_0x19eccd['use'](_0x0bc9('0x99'),require(_0x0bc9('0x9a')));_0x19eccd[_0x0bc9('0x9')](_0x0bc9('0x9b'),require(_0x0bc9('0x9c')));_0x19eccd[_0x0bc9('0x9')](_0x0bc9('0x9d'),require(_0x0bc9('0x9e')));_0x19eccd['use'](_0x0bc9('0x9f'),require(_0x0bc9('0xa0')));_0x19eccd['use'](_0x0bc9('0xa1'),require('./api/intDeskField'));_0x19eccd[_0x0bc9('0x9')](_0x0bc9('0xa2'),require(_0x0bc9('0xa3')));_0x19eccd[_0x0bc9('0x9')]('/api/integrations/zoho/configurations',require(_0x0bc9('0xa4')));_0x19eccd[_0x0bc9('0x9')](_0x0bc9('0xa5'),require(_0x0bc9('0xa6')));_0x19eccd[_0x0bc9('0x9')](_0x0bc9('0xa7'),require(_0x0bc9('0xa8')));_0x19eccd[_0x0bc9('0x9')](_0x0bc9('0xa9'),require(_0x0bc9('0xaa')));_0x19eccd[_0x0bc9('0x9')](_0x0bc9('0xab'),require(_0x0bc9('0xac')));_0x19eccd['use'](_0x0bc9('0xad'),require(_0x0bc9('0xae')));_0x19eccd['use']('/api/integrations/freshdesk/configurations',require(_0x0bc9('0xaf')));_0x19eccd[_0x0bc9('0x9')]('/api/integrations/freshdesk/fields',require(_0x0bc9('0xb0')));_0x19eccd[_0x0bc9('0x9')]('/api/integrations/vtiger/accounts',require(_0x0bc9('0xb1')));_0x19eccd[_0x0bc9('0x9')](_0x0bc9('0xb2'),require('./api/intVtigerConfiguration'));_0x19eccd[_0x0bc9('0x9')](_0x0bc9('0xb3'),require(_0x0bc9('0xb4')));_0x19eccd[_0x0bc9('0x9')](_0x0bc9('0xb5'),require(_0x0bc9('0xb6')));_0x19eccd[_0x0bc9('0x9')]('/api/integrations/servicenow/configurations',require(_0x0bc9('0xb7')));_0x19eccd[_0x0bc9('0x9')](_0x0bc9('0xb8'),require(_0x0bc9('0xb9')));_0x19eccd[_0x0bc9('0x9')](_0x0bc9('0xba'),require('./api/intDynamics365Account'));_0x19eccd[_0x0bc9('0x9')](_0x0bc9('0xbb'),require(_0x0bc9('0xbc')));_0x19eccd[_0x0bc9('0x9')](_0x0bc9('0xbd'),require(_0x0bc9('0xbe')));_0x19eccd[_0x0bc9('0x9')]('/api/integrations/freshsales/accounts',require(_0x0bc9('0xbf')));_0x19eccd['use']('/api/integrations/freshsales/configurations',require(_0x0bc9('0xc0')));_0x19eccd['use'](_0x0bc9('0xc1'),require(_0x0bc9('0xc2')));_0x19eccd[_0x0bc9('0x9')](_0x0bc9('0xc3'),require('./api/network'));_0x19eccd[_0x0bc9('0x9')](_0x0bc9('0xc4'),require(_0x0bc9('0xc5')));_0x19eccd[_0x0bc9('0x9')](_0x0bc9('0xc6'),require(_0x0bc9('0xc7')));_0x19eccd[_0x0bc9('0x9')](_0x0bc9('0xc8'),require(_0x0bc9('0xc9')));_0x19eccd[_0x0bc9('0x9')](_0x0bc9('0xca'),require(_0x0bc9('0xcb')));_0x19eccd[_0x0bc9('0x9')](_0x0bc9('0xcc'),require(_0x0bc9('0xcd')));_0x19eccd[_0x0bc9('0x9')](_0x0bc9('0xce'),require(_0x0bc9('0xcf')));_0x19eccd[_0x0bc9('0x9')](_0x0bc9('0xd0'),require(_0x0bc9('0xd1')));_0x19eccd[_0x0bc9('0x9')](_0x0bc9('0xd2'),require(_0x0bc9('0xd3')));_0x19eccd['use'](_0x0bc9('0xd4'),require('./api/jscriptyProject'));_0x19eccd[_0x0bc9('0x9')](_0x0bc9('0xd5'),require(_0x0bc9('0xd6')));_0x19eccd[_0x0bc9('0x9')](_0x0bc9('0xd7'),require(_0x0bc9('0xd8')));_0x19eccd[_0x0bc9('0x9')]('/api/square/projects',require('./api/squareProject'));_0x19eccd[_0x0bc9('0x9')](_0x0bc9('0xd9'),require(_0x0bc9('0xda')));_0x19eccd[_0x0bc9('0x9')](_0x0bc9('0xdb'),require(_0x0bc9('0xdc')));_0x19eccd['use']('/api/teams',require('./api/team'));_0x19eccd[_0x0bc9('0x9')]('/api/license',require(_0x0bc9('0xdd')));_0x19eccd[_0x0bc9('0x9')]('/api/campaigns',require(_0x0bc9('0xde')));_0x19eccd[_0x0bc9('0x9')](_0x0bc9('0xdf'),require('./api/migration'));_0x19eccd[_0x0bc9('0x9')](_0x0bc9('0xe0'),require('./api/attachment'));_0x19eccd[_0x0bc9('0x9')](_0x0bc9('0xe1'),require(_0x0bc9('0xe2')));_0x19eccd[_0x0bc9('0x9')](_0x0bc9('0xe3'),require(_0x0bc9('0xe4')));_0x19eccd['use'](_0x0bc9('0xe5'),require(_0x0bc9('0xe6')));_0x19eccd[_0x0bc9('0x9')](_0x0bc9('0xe7'),require('./api/faxTransferReport'));_0x19eccd['use'](_0x0bc9('0xe8'),require(_0x0bc9('0xe9')));_0x19eccd[_0x0bc9('0x9')](_0x0bc9('0xea'),require(_0x0bc9('0xeb')));_0x19eccd[_0x0bc9('0x9')](_0x0bc9('0xec'),require(_0x0bc9('0xed')));_0x19eccd['use'](_0x0bc9('0xee'),require('./api/voicePrefix'));_0x19eccd[_0x0bc9('0x9')](_0x0bc9('0xef'),require(_0x0bc9('0xf0')));_0x19eccd[_0x0bc9('0x9')]('/api/userProfile/sections',require(_0x0bc9('0xf1')));_0x19eccd[_0x0bc9('0x9')](_0x0bc9('0xf2'),require(_0x0bc9('0xf3')));_0x19eccd[_0x0bc9('0x9')](_0x0bc9('0xf4'),require('./api/userNotification'));_0x19eccd[_0x0bc9('0x9')](_0x0bc9('0xf5'),require(_0x0bc9('0xf6')));_0x19eccd['use']('/api/whatsapp/applications',require(_0x0bc9('0xf7')));_0x19eccd[_0x0bc9('0x9')](_0x0bc9('0xf8'),require(_0x0bc9('0xf9')));_0x19eccd[_0x0bc9('0x9')](_0x0bc9('0xfa'),require('./api/whatsappMessage'));_0x19eccd['use'](_0x0bc9('0xfb'),require(_0x0bc9('0xfc')));_0x19eccd['use']('/api/whatsapp/reports/transfer',require(_0x0bc9('0xfd')));_0x19eccd[_0x0bc9('0x9')](_0x0bc9('0xfe'),require('./api/whatsappQueue'));_0x19eccd['use'](_0x0bc9('0xff'),require(_0x0bc9('0x100')));_0x19eccd['use'](_0x0bc9('0x101'),require('./api/realtime'));_0x19eccd[_0x0bc9('0x9')]('/api/user-settings',require(_0x0bc9('0x102')));_0x19eccd[_0x0bc9('0x9')](_0x0bc9('0x103'),require(_0x0bc9('0x104')));_0x19eccd[_0x0bc9('0x9')](_0x0bc9('0x105'),require(_0x0bc9('0x106')));_0x19eccd[_0x0bc9('0x9')](_0x0bc9('0x107'),require(_0x0bc9('0x108')));_0x19eccd[_0x0bc9('0x9')](_0x0bc9('0x109'),require('./api/jira'));_0x19eccd[_0x0bc9('0x9')](_0x0bc9('0x10a'),require(_0x0bc9('0x10b')));_0x19eccd[_0x0bc9('0x9')](_0x0bc9('0x10c'),require(_0x0bc9('0x10d')));_0x19eccd[_0x0bc9('0x9')](_0x0bc9('0x10e'),require(_0x0bc9('0x10f')));_0x19eccd[_0x0bc9('0x9')]('/api/pm2',require('./api/pm2'));_0x19eccd[_0x0bc9('0x9')](_0x0bc9('0x110'),require(_0x0bc9('0x111')));_0x19eccd['use'](_0x0bc9('0x112'),clientSideLogs);_0x19eccd['use'](_0x0bc9('0x113'),express['static'](path['join'](config[_0x0bc9('0x114')],'/apidoc')));_0x19eccd[_0x0bc9('0x9')]('/www',express[_0x0bc9('0x115')](path[_0x0bc9('0x116')](config['root'],_0x0bc9('0x117'))));_0x19eccd['use']('/demo',express[_0x0bc9('0x115')](path['join'](config[_0x0bc9('0x114')],_0x0bc9('0x118'))));_0x19eccd[_0x0bc9('0x9')](_0x0bc9('0x119'),express[_0x0bc9('0x115')](path[_0x0bc9('0x116')](config['root'],'snippet','3.0.0')));_0x19eccd[_0x0bc9('0x9')](_0x0bc9('0x11a'),express['static'](path[_0x0bc9('0x116')](config[_0x0bc9('0x114')],'/server/files/plugins')));_0x19eccd[_0x0bc9('0x11b')]('/:url(api|auth|components|app|bower_components|assets)/*')[_0x0bc9('0x11c')](errors[0x194]);_0x19eccd[_0x0bc9('0x11b')]('/*')['get'](function(_0x49a213,_0x1e7267){_0x1e7267['sendFile'](path[_0x0bc9('0x11d')](_0x19eccd['get'](_0x0bc9('0x11e'))+_0x0bc9('0x11f')));});return _0x19eccd;});};
\ No newline at end of file
index 497c45e..b9df4e8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0x14b3=['../config/environment','../api/user/user.rpc','../api/voiceExtension/voiceExtension.rpc','merge','../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/mailServerIn/mailServerIn.rpc','../api/mailAccount/mailAccount.rpc','../api/mailQueue/mailQueue.rpc','../api/mailInteraction/mailInteraction.rpc','../api/mailApplication/mailApplication.rpc','../api/mailQueueReport/mailQueueReport.rpc','../api/faxAccount/faxAccount.rpc','../api/faxApplication/faxApplication.rpc','../api/faxInteraction/faxInteraction.rpc','../api/faxMessage/faxMessage.rpc','../api/faxQueue/faxQueue.rpc','../api/faxQueueReport/faxQueueReport.rpc','../api/smsInteraction/smsInteraction.rpc','../api/smsMessage/smsMessage.rpc','../api/openchannelApplication/openchannelApplication.rpc','../api/openchannelInteraction/openchannelInteraction.rpc','../api/openchannelMessage/openchannelMessage.rpc','../api/openchannelQueue/openchannelQueue.rpc','../api/openchannelQueueReport/openchannelQueueReport.rpc','../api/chatMessage/chatMessage.rpc','../api/cmContact/cmContact.rpc','../api/cmHopperFinal/cmHopperFinal.rpc','../api/cmHopperHistory/cmHopperHistory.rpc','../api/pause/pause.rpc','../api/sound/sound.rpc','../api/cmHopperAdditionalPhone/cmHopperAdditionalPhone.rpc','../api/trigger/trigger.rpc','../api/variable/variable.rpc','../api/intSalesforceAccount/intSalesforceAccount.rpc','../api/intSugarcrmAccount/intSugarcrmAccount.rpc','../api/intDeskAccount/intDeskAccount.rpc','../api/intZohoAccount/intZohoAccount.rpc','../api/intZendeskAccount/intZendeskAccount.rpc','../api/intVtigerAccount/intVtigerAccount.rpc','../api/intServicenowAccount/intServicenowAccount.rpc','../api/intDynamics365Account/intDynamics365Account.rpc','../api/squareReportDetail/squareReportDetail.rpc','../api/setting/setting.rpc','../api/squareRecording/squareRecording.rpc','../api/squareMessage/squareMessage.rpc','../api/campaign/campaign.rpc','../api/attachment/attachment.rpc','../api/plugin/plugin.rpc','../api/whatsappAccount/whatsappAccount.rpc','../api/whatsappInteraction/whatsappInteraction.rpc','../api/whatsappMessage/whatsappMessage.rpc','../api/whatsappQueue/whatsappQueue.rpc','server','http','port','rpc','error','listen','log','Express\x20RPC\x20server\x20listening\x20on\x20%s:%d!','RPC\x20listening\x20on\x20','jayson/promise','lodash'];(function(_0xfe4c8a,_0x193ddf){var _0x70e0cb=function(_0x167238){while(--_0x167238){_0xfe4c8a['push'](_0xfe4c8a['shift']());}};_0x70e0cb(++_0x193ddf);}(_0x14b3,0xcd));var _0x314b=function(_0xa08526,_0xd2a376){_0xa08526=_0xa08526-0x0;var _0x2684eb=_0x14b3[_0xa08526];return _0x2684eb;};'use strict';var jayson=require(_0x314b('0x0'));var _=require(_0x314b('0x1'));var config=require(_0x314b('0x2'));exports['listen']=function(){return new Promise(function(_0x3eb8ed,_0x27a255){var _0x5b4e08={};_0x5b4e08=_['merge'](_0x5b4e08,require(_0x314b('0x3')));_0x5b4e08=_['merge'](_0x5b4e08,require(_0x314b('0x4')));_0x5b4e08=_[_0x314b('0x5')](_0x5b4e08,require('../api/voiceQueue/voiceQueue.rpc'));_0x5b4e08=_[_0x314b('0x5')](_0x5b4e08,require(_0x314b('0x6')));_0x5b4e08=_[_0x314b('0x5')](_0x5b4e08,require(_0x314b('0x7')));_0x5b4e08=_[_0x314b('0x5')](_0x5b4e08,require(_0x314b('0x8')));_0x5b4e08=_[_0x314b('0x5')](_0x5b4e08,require(_0x314b('0x9')));_0x5b4e08=_[_0x314b('0x5')](_0x5b4e08,require(_0x314b('0xa')));_0x5b4e08=_[_0x314b('0x5')](_0x5b4e08,require(_0x314b('0xb')));_0x5b4e08=_['merge'](_0x5b4e08,require(_0x314b('0xc')));_0x5b4e08=_[_0x314b('0x5')](_0x5b4e08,require('../api/voiceTransferReport/voiceTransferReport.rpc'));_0x5b4e08=_[_0x314b('0x5')](_0x5b4e08,require('../api/userVoiceQueueRt/userVoiceQueueRt.rpc'));_0x5b4e08=_[_0x314b('0x5')](_0x5b4e08,require(_0x314b('0xd')));_0x5b4e08=_['merge'](_0x5b4e08,require(_0x314b('0xe')));_0x5b4e08=_['merge'](_0x5b4e08,require(_0x314b('0xf')));_0x5b4e08=_[_0x314b('0x5')](_0x5b4e08,require(_0x314b('0x10')));_0x5b4e08=_[_0x314b('0x5')](_0x5b4e08,require('../api/mailMessage/mailMessage.rpc'));_0x5b4e08=_['merge'](_0x5b4e08,require(_0x314b('0x11')));_0x5b4e08=_[_0x314b('0x5')](_0x5b4e08,require(_0x314b('0x12')));_0x5b4e08=_[_0x314b('0x5')](_0x5b4e08,require(_0x314b('0x13')));_0x5b4e08=_[_0x314b('0x5')](_0x5b4e08,require(_0x314b('0x14')));_0x5b4e08=_[_0x314b('0x5')](_0x5b4e08,require(_0x314b('0x15')));_0x5b4e08=_[_0x314b('0x5')](_0x5b4e08,require(_0x314b('0x16')));_0x5b4e08=_[_0x314b('0x5')](_0x5b4e08,require(_0x314b('0x17')));_0x5b4e08=_['merge'](_0x5b4e08,require(_0x314b('0x18')));_0x5b4e08=_[_0x314b('0x5')](_0x5b4e08,require('../api/smsAccount/smsAccount.rpc'));_0x5b4e08=_[_0x314b('0x5')](_0x5b4e08,require(_0x314b('0x19')));_0x5b4e08=_[_0x314b('0x5')](_0x5b4e08,require(_0x314b('0x1a')));_0x5b4e08=_[_0x314b('0x5')](_0x5b4e08,require('../api/smsQueue/smsQueue.rpc'));_0x5b4e08=_[_0x314b('0x5')](_0x5b4e08,require(_0x314b('0x1b')));_0x5b4e08=_['merge'](_0x5b4e08,require(_0x314b('0x1c')));_0x5b4e08=_[_0x314b('0x5')](_0x5b4e08,require(_0x314b('0x1d')));_0x5b4e08=_[_0x314b('0x5')](_0x5b4e08,require(_0x314b('0x1e')));_0x5b4e08=_[_0x314b('0x5')](_0x5b4e08,require(_0x314b('0x1f')));_0x5b4e08=_['merge'](_0x5b4e08,require('../api/chatInteraction/chatInteraction.rpc'));_0x5b4e08=_[_0x314b('0x5')](_0x5b4e08,require(_0x314b('0x20')));_0x5b4e08=_['merge'](_0x5b4e08,require('../api/chatQueue/chatQueue.rpc'));_0x5b4e08=_[_0x314b('0x5')](_0x5b4e08,require(_0x314b('0x21')));_0x5b4e08=_[_0x314b('0x5')](_0x5b4e08,require('../api/cmHopper/cmHopper.rpc'));_0x5b4e08=_['merge'](_0x5b4e08,require('../api/cmHopperBlack/cmHopperBlack.rpc'));_0x5b4e08=_[_0x314b('0x5')](_0x5b4e08,require(_0x314b('0x22')));_0x5b4e08=_[_0x314b('0x5')](_0x5b4e08,require(_0x314b('0x23')));_0x5b4e08=_[_0x314b('0x5')](_0x5b4e08,require('../api/reportAgentPreview/reportAgentPreview.rpc'));_0x5b4e08=_[_0x314b('0x5')](_0x5b4e08,require('../api/interval/interval.rpc'));_0x5b4e08=_[_0x314b('0x5')](_0x5b4e08,require(_0x314b('0x24')));_0x5b4e08=_[_0x314b('0x5')](_0x5b4e08,require(_0x314b('0x25')));_0x5b4e08=_[_0x314b('0x5')](_0x5b4e08,require(_0x314b('0x26')));_0x5b4e08=_['merge'](_0x5b4e08,require('../api/template/template.rpc'));_0x5b4e08=_[_0x314b('0x5')](_0x5b4e08,require(_0x314b('0x27')));_0x5b4e08=_[_0x314b('0x5')](_0x5b4e08,require(_0x314b('0x28')));_0x5b4e08=_[_0x314b('0x5')](_0x5b4e08,require(_0x314b('0x29')));_0x5b4e08=_[_0x314b('0x5')](_0x5b4e08,require(_0x314b('0x2a')));_0x5b4e08=_['merge'](_0x5b4e08,require(_0x314b('0x2b')));_0x5b4e08=_[_0x314b('0x5')](_0x5b4e08,require(_0x314b('0x2c')));_0x5b4e08=_[_0x314b('0x5')](_0x5b4e08,require(_0x314b('0x2d')));_0x5b4e08=_[_0x314b('0x5')](_0x5b4e08,require('../api/intFreshdeskAccount/intFreshdeskAccount.rpc'));_0x5b4e08=_[_0x314b('0x5')](_0x5b4e08,require(_0x314b('0x2e')));_0x5b4e08=_[_0x314b('0x5')](_0x5b4e08,require(_0x314b('0x2f')));_0x5b4e08=_[_0x314b('0x5')](_0x5b4e08,require(_0x314b('0x30')));_0x5b4e08=_[_0x314b('0x5')](_0x5b4e08,require('../api/intFreshsalesAccount/intFreshsalesAccount.rpc'));_0x5b4e08=_[_0x314b('0x5')](_0x5b4e08,require('../api/chatQueueReport/chatQueueReport.rpc'));_0x5b4e08=_[_0x314b('0x5')](_0x5b4e08,require('../api/smsQueueReport/smsQueueReport.rpc'));_0x5b4e08=_[_0x314b('0x5')](_0x5b4e08,require('../api/squareReport/squareReport.rpc'));_0x5b4e08=_[_0x314b('0x5')](_0x5b4e08,require(_0x314b('0x31')));_0x5b4e08=_[_0x314b('0x5')](_0x5b4e08,require(_0x314b('0x32')));_0x5b4e08=_['merge'](_0x5b4e08,require('../api/squareOdbc/squareOdbc.rpc'));_0x5b4e08=_[_0x314b('0x5')](_0x5b4e08,require('../api/squareProject/squareProject.rpc'));_0x5b4e08=_['merge'](_0x5b4e08,require(_0x314b('0x33')));_0x5b4e08=_['merge'](_0x5b4e08,require(_0x314b('0x34')));_0x5b4e08=_[_0x314b('0x5')](_0x5b4e08,require(_0x314b('0x35')));_0x5b4e08=_[_0x314b('0x5')](_0x5b4e08,require(_0x314b('0x36')));_0x5b4e08=_[_0x314b('0x5')](_0x5b4e08,require(_0x314b('0x37')));_0x5b4e08=_['merge'](_0x5b4e08,require(_0x314b('0x38')));_0x5b4e08=_[_0x314b('0x5')](_0x5b4e08,require(_0x314b('0x39')));_0x5b4e08=_[_0x314b('0x5')](_0x5b4e08,require(_0x314b('0x3a')));_0x5b4e08=_[_0x314b('0x5')](_0x5b4e08,require('../api/whatsappQueueReport/whatsappQueueReport.rpc'));_0x5b4e08=_[_0x314b('0x5')](_0x5b4e08,require(_0x314b('0x3b')));var _0x26d6b0=jayson[_0x314b('0x3c')](_0x5b4e08)[_0x314b('0x3d')]();var _0x4f2dc2=config['rpc'][_0x314b('0x3e')]||config[_0x314b('0x3e')]+0x1;var _0x3c906f=config[_0x314b('0x3f')]['ip']||'localhost';_0x26d6b0['on'](_0x314b('0x40'),function(_0x4bd9c9){return _0x27a255(_0x4bd9c9);});_0x26d6b0[_0x314b('0x41')](_0x4f2dc2,_0x3c906f,function(){console[_0x314b('0x42')](_0x314b('0x43'),_0x3c906f,_0x4f2dc2);require('../config/triggers')['default']();return _0x3eb8ed(_0x314b('0x44')+_0x3c906f+':'+_0x4f2dc2);});});};
\ No newline at end of file
index df7d4c4..4ade3c1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0x792a=['WAIT','noop','ID:%s\x20-\x20LABEL:\x20%s\x20-\x20MSG:\x20%s','label','exports','util','lodash','EventEmitter','setEncoding','utf8','headers','emit','ready','line','hangup','substring','520-Invalid','520\x20End\x20of\x20proper','no\x20code','replace','result=','indexOf','substr','split','length','match','error','E_AGI_SOCKET_ERROR','code','close','timeout','E_AGI_SOCKET_TIMEOUT','destroy','pipe','command','function','inherits','sendRequest','sync','ANSWER','prototype','getData','beep','GET\x20DATA\x20\x22%s\x22\x20%s\x20%s','format','exec','isArray','EXEC\x20%s\x20%s','join','SET\x20CONTEXT\x20%s','setExtension','SET\x20EXTENSION\x20%s','HANGUP','setVariable','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','setPriority','GOTO\x20%s\x20%s\x20%s','getVariable','GET\x20VARIABLE\x20\x22%s\x22','wav','RECORD\x20FILE\x20\x22%s\x22\x20\x22%s\x22\x20\x22%s\x22\x20%s\x20%s\x20%s','streamFile','STREAM\x20FILE\x20\x22%s\x22\x20\x22%s\x22','AGI','wait'];(function(_0x120600,_0x4f498b){var _0x164284=function(_0x545ef4){while(--_0x545ef4){_0x120600['push'](_0x120600['shift']());}};_0x164284(++_0x4f498b);}(_0x792a,0x131));var _0xa792=function(_0x1bac26,_0x686fbc){_0x1bac26=_0x1bac26-0x0;var _0x1aa39d=_0x792a[_0x1bac26];return _0x1aa39d;};'use strict';var util=require(_0xa792('0x0'));var _=require(_0xa792('0x1'));var EventEmitter=require('events')[_0xa792('0x2')];var AGIReply=require('./reply');var AGIError=require('./error');function AGIChannel(_0x3df8aa){var _0x49f2e2=this,_0x27033d=new AGIReply(),_0x44da05=![],_0x196539={};EventEmitter['call'](_0x49f2e2);_0x3df8aa[_0xa792('0x3')](_0xa792('0x4'));_0x3df8aa['setTimeout'](0x8*0x3c*0x3c*0x3e8);_0x27033d[_0xa792('0x3')](_0xa792('0x4'));_0x27033d['on'](_0xa792('0x5'),function(_0x479732){for(var _0x3cdf92 in _0x479732){_0x49f2e2[_0x3cdf92]=_0x479732[_0x3cdf92];}_0x49f2e2[_0xa792('0x6')](_0xa792('0x7'));});_0x27033d['on'](_0xa792('0x8'),function(_0x468d32){if(_0x468d32['toLowerCase']()==_0xa792('0x9')){_0x49f2e2[_0xa792('0x6')]('hangup');return;}if(_0x468d32[_0xa792('0xa')](0x0,0xb)==_0xa792('0xb')){_0x44da05=!![];}if(_0x44da05){_0x196539['rx']+=_0x468d32+'\x0a';if(_0x468d32['search'](_0xa792('0xc'))!=-0x1){_0x44da05=![];}}else{_0x196539['rx']=_0x468d32;}if(_0x44da05){return;}if(typeof _0x196539['cb']=='function'){var _0x483173=_0x196539['rx']['substring'](0x0,0x3),_0x2fddbe=null,_0x5d7b39=null;_0x483173=parseInt(_0x483173);if(isNaN(_0x483173)){_0x196539['cb'](null,{'code':0x1f4,'result':-0x1,'extra':_0xa792('0xd')});return;}if(_0x483173!=0xc8){_0x196539['cb'](null,{'code':_0x483173,'result':-0x1,'extra':'KO'});return;}_0x2fddbe=_0x196539['rx']['substring'](0x4)[_0xa792('0xe')](_0xa792('0xf'),'');if(_0x2fddbe[_0xa792('0x10')]('\x20')!=-0x1){_0x2fddbe=_0x2fddbe[_0xa792('0x11')](0x0,_0x2fddbe[_0xa792('0x10')]('\x20'));}if(_['startsWith'](_0x2fddbe,'-1')){_0x2fddbe=parseInt(_0x2fddbe);}_0x5d7b39=_0x196539['rx'][_0xa792('0x12')]('\x20');if(_0x5d7b39[_0xa792('0x13')]==0x3){_0x5d7b39=_0x5d7b39[0x2][_0xa792('0xa')](0x1,_0x5d7b39[0x2][_0xa792('0x13')]-0x1);}else if(_0x5d7b39[_0xa792('0x13')]>0x3){var _0x24ba94=/\((.+)\)/;var _0x36c034=_0x196539['rx'][_0xa792('0x14')](_0x24ba94);if(_0x36c034){_0x5d7b39=_0x36c034[0x1];}else{_0x5d7b39=null;}}else{_0x5d7b39=null;}_0x196539['cb'](null,{'code':_0x483173,'result':_0x2fddbe,'extra':_0x5d7b39});}});_0x3df8aa['on'](_0xa792('0x15'),function(_0x5ab926){_0x49f2e2[_0xa792('0x6')](_0xa792('0x15'),new AGIError(_0xa792('0x16'),_0x5ab926[_0xa792('0x17')]));});_0x3df8aa['on'](_0xa792('0x18'),function(){_0x49f2e2[_0xa792('0x6')](_0xa792('0x18'),new AGIError('E_AGI_SOCKET_CLOSE'));});_0x3df8aa['on'](_0xa792('0x19'),function(){_0x49f2e2[_0xa792('0x6')](_0xa792('0x19'),new AGIError(_0xa792('0x1a')));_0x3df8aa[_0xa792('0x1b')]();});_0x3df8aa[_0xa792('0x1c')](_0x27033d);this[_0xa792('0x1d')]=function(_0x2e40c3,_0x155098){var _0x2e40c3=_0x2e40c3||'',_0x155098=typeof _0x155098==_0xa792('0x1e')?_0x155098:new Function();_0x196539={'tx':_0x2e40c3,'rx':'','cb':_0x155098};_0x3df8aa['write'](_0x2e40c3+'\x0a');},this['close']=function(){_0x3df8aa[_0xa792('0x1b')]();};}util[_0xa792('0x1f')](AGIChannel,EventEmitter);AGIChannel['prototype'][_0xa792('0x20')]=function(_0x12c2df){return this[_0xa792('0x1d')][_0xa792('0x21')](this,_0x12c2df);};AGIChannel['prototype']['answer']=function(){return this[_0xa792('0x20')](_0xa792('0x22'));};AGIChannel[_0xa792('0x23')][_0xa792('0x24')]=function(_0x463242,_0x30a6e2,_0x7c4ed1){_0x463242=_0x463242===undefined?_0xa792('0x25'):_0x463242;_0x30a6e2=_0x30a6e2===undefined?'5':_0x30a6e2;_0x7c4ed1=_0x7c4ed1===undefined?'1':_0x7c4ed1;return this[_0xa792('0x20')](util['format'](_0xa792('0x26'),_0x463242,_0x30a6e2*0x3e8,_0x7c4ed1));};AGIChannel[_0xa792('0x23')]['noop']=function(_0xfb1328){_0xfb1328=_0xfb1328||'NO\x20MESSAGE';return this['sendRequest'](util[_0xa792('0x27')]('VERBOSE\x20\x22%s\x22',_0xfb1328));};AGIChannel[_0xa792('0x23')][_0xa792('0x28')]=function(_0x102939,_0x3aded4){if(_[_0xa792('0x29')](_0x3aded4)){return this[_0xa792('0x20')](util[_0xa792('0x27')](_0xa792('0x2a'),_0x102939,_0x3aded4[_0xa792('0x2b')](',')));}return this[_0xa792('0x20')](util[_0xa792('0x27')](_0xa792('0x2a'),_0x102939,_0x3aded4));};AGIChannel[_0xa792('0x23')]['setContext']=function(_0x2def8e){return this[_0xa792('0x20')](util[_0xa792('0x27')](_0xa792('0x2c'),_0x2def8e));};AGIChannel[_0xa792('0x23')][_0xa792('0x2d')]=function(_0x20ca90){return this[_0xa792('0x20')](util[_0xa792('0x27')](_0xa792('0x2e'),_0x20ca90));};AGIChannel[_0xa792('0x23')]['setPriority']=function(_0x17466e){return this[_0xa792('0x20')](util[_0xa792('0x27')]('SET\x20PRIORITY\x20%s',_0x17466e));};AGIChannel['prototype'][_0xa792('0x9')]=function(){return this[_0xa792('0x20')](_0xa792('0x2f'));};AGIChannel['prototype'][_0xa792('0x30')]=function(_0x4bf67d,_0x43dfe3){var _0x2ec5bc=_['isBoolean'](_0x43dfe3)||_[_0xa792('0x31')](_0x43dfe3)?_0x43dfe3[_0xa792('0x32')]():_0x43dfe3;return this[_0xa792('0x20')](util[_0xa792('0x27')](_0xa792('0x33'),_0x4bf67d,_0x2ec5bc?_0x2ec5bc[_0xa792('0x32')]()[_0xa792('0xe')](/(\r\n|\n|\r)/gm,'\x20'):''));};AGIChannel[_0xa792('0x23')][_0xa792('0x34')]=function(_0x24e395,_0x471ba1){return this[_0xa792('0x20')](util[_0xa792('0x27')](_0xa792('0x35'),_0x24e395,_0x471ba1));};AGIChannel[_0xa792('0x23')][_0xa792('0x36')]=function(_0x3dbfd1,_0x4cf951){return this[_0xa792('0x20')](util[_0xa792('0x27')](_0xa792('0x37'),_0x3dbfd1,_0x4cf951));};AGIChannel[_0xa792('0x23')][_0xa792('0x38')]=function(_0x3a7bd4,_0x5cfd88){return this['sendRequest'](util[_0xa792('0x27')](_0xa792('0x39'),_0x3a7bd4,_0x5cfd88));};AGIChannel[_0xa792('0x23')][_0xa792('0x3a')]=function(_0x30cdb6,_0x5e3565,_0x225e42){_0x5e3565=_0x5e3565||this[_0xa792('0x3b')];_0x225e42=_0x225e42||0x1;this['setContext'](_0x30cdb6);this[_0xa792('0x2d')](_0x5e3565);this[_0xa792('0x3c')](_0x225e42);return this['noop'](util[_0xa792('0x27')](_0xa792('0x3d'),_0x30cdb6,_0x5e3565,_0x225e42));};AGIChannel[_0xa792('0x23')][_0xa792('0x3e')]=function(_0x3a52ef){return this[_0xa792('0x20')](util['format'](_0xa792('0x3f'),_0x3a52ef));};AGIChannel[_0xa792('0x23')]['recordFile']=function(_0x253392,_0x93d4c2,_0x47f73c,_0x173e7d,_0x126edb,_0x24133c){_0x93d4c2=_0x93d4c2||_0xa792('0x40');_0x47f73c=_0x47f73c||'';_0x173e7d=_0x173e7d===undefined?-0x1:_0x173e7d==='-1'?-0x1:_0x173e7d*0x3e8;_0x126edb=_0x126edb===undefined?'':'s='+_0x126edb;_0x24133c=_0x24133c?'BEEP':'';return this['sendRequest'](util[_0xa792('0x27')](_0xa792('0x41'),_0x253392,_0x93d4c2,_0x47f73c,_0x173e7d,_0x24133c,_0x126edb));};AGIChannel[_0xa792('0x23')][_0xa792('0x42')]=function(_0x111fa0,_0x2e4e93){_0x2e4e93=_0x2e4e93||'';return this[_0xa792('0x20')](util[_0xa792('0x27')](_0xa792('0x43'),_0x111fa0,_0x2e4e93));};AGIChannel[_0xa792('0x23')]['agi']=function(_0x3467ab){return this[_0xa792('0x28')](_0xa792('0x44'),_0x3467ab);};AGIChannel['prototype'][_0xa792('0x45')]=function(_0x1c045b){return this[_0xa792('0x28')](_0xa792('0x46'),_0x1c045b);};AGIChannel[_0xa792('0x23')][_0xa792('0x15')]=function(_0x47b889,_0x123cec){this[_0xa792('0x47')](util[_0xa792('0x27')](_0xa792('0x48'),_0x47b889['id'],_0x47b889[_0xa792('0x49')],_0x123cec));return{'code':0x1f4,'result':'-1','extra':''};};module[_0xa792('0x4a')]=AGIChannel;
\ No newline at end of file
index 2cc5255..a401cb9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0xdb83=['message','name','exports','Undefined\x20error.','Argument\x20\x27port\x27\x20missing\x20in\x20function\x20call.','Server\x20closed.','[LICENSE]\x20Server\x20max\x20connection.\x20Count:\x20%s.','[LICENSE\x20VOICE]\x20Server\x20license\x20voice\x20disabled.','Socket\x20closed.','Socket\x20timeout.','Missing\x20\x27ivr.agi_network_script\x27.','E_AGI_UNDEFINED','push','apply'];(function(_0x3c68d0,_0x123150){var _0x4edc3e=function(_0x2d9849){while(--_0x2d9849){_0x3c68d0['push'](_0x3c68d0['shift']());}};_0x4edc3e(++_0x123150);}(_0xdb83,0x145));var _0x3db8=function(_0x39bf65,_0x114bd9){_0x39bf65=_0x39bf65-0x0;var _0x29e6ea=_0xdb83[_0x39bf65];return _0x29e6ea;};'use strict';var util=require('util');var error={'E_AGI_UNDEFINED':_0x3db8('0x0'),'E_AGI_ARGUMENT_PORT':_0x3db8('0x1'),'E_AGI_SERVER_ERROR':'Server\x20error.\x20Code:\x20%s.','E_AGI_SERVER_CLOSE':_0x3db8('0x2'),'E_AGI_SERVER_MAXCONNECTION':_0x3db8('0x3'),'E_AGI_SERVER_VOICE_DISABLED':_0x3db8('0x4'),'E_AGI_SOCKET_ERROR':'Socket\x20error.\x20Code:\x20%s.','E_AGI_SOCKET_CLOSE':_0x3db8('0x5'),'E_AGI_SOCKET_TIMEOUT':_0x3db8('0x6'),'E_AGI_COMMAND_EMPTY':'Empty\x20command.','E_AGI_IVR_AGI_NETWORK_SCRIPT':_0x3db8('0x7'),'E_AGI_IVR_ENTRY':'Missing\x20\x27ivr.entry\x27\x20menu.'};function AGIError(_0x47d38c){var _0x47d38c=_0x47d38c||null,_0x2d8c78=_0x2d8c78||[],_0x2bc42d=0x1,_0x369b77='';if(!error[_0x47d38c]){_0x47d38c=_0x3db8('0x8');}_0x2d8c78[_0x3db8('0x9')](error[_0x47d38c]);while(arguments[_0x2bc42d]){_0x2d8c78[_0x3db8('0x9')](arguments[_0x2bc42d]);_0x2bc42d++;}_0x369b77=util['format'][_0x3db8('0xa')](util,_0x2d8c78);this[_0x3db8('0xb')]=_0x369b77;this[_0x3db8('0xc')]=_0x47d38c;}module[_0x3db8('0xd')]=AGIError;
\ No newline at end of file
index f454fdd..81ef5d2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0x0497=['defaults','redis','agi','error','E_AGI_SERVER_ERROR','message','parse','emit','exports','lodash','events','EventEmitter','ioredis','../../config/environment'];(function(_0x1ca7ed,_0x2cccb4){var _0x5d706a=function(_0x304db1){while(--_0x304db1){_0x1ca7ed['push'](_0x1ca7ed['shift']());}};_0x5d706a(++_0x2cccb4);}(_0x0497,0x167));var _0x7049=function(_0x523cc7,_0x34b3d0){_0x523cc7=_0x523cc7-0x0;var _0x268b8b=_0x0497[_0x523cc7];return _0x268b8b;};'use strict';var _=require(_0x7049('0x0'));var EventEmitter=require(_0x7049('0x1'))[_0x7049('0x2')];var Redis=require(_0x7049('0x3'));var AGIError=require('./error');var config=require(_0x7049('0x4'));config['redis']=_[_0x7049('0x5')](config[_0x7049('0x6')],{'host':'localhost','port':0x18eb});var eventEmitter=new EventEmitter();var sub=new Redis(config['redis']);sub['subscribe'](_0x7049('0x7'),function(_0x5dfbbc){if(_0x5dfbbc)return eventEmitter['emit'](_0x7049('0x8'),new AGIError(_0x7049('0x9'),_0x5dfbbc));});sub['on'](_0x7049('0xa'),function(_0x4b6e72,_0x511b5b){if(_0x4b6e72!==_0x7049('0x7'))return;try{var _0x498e29=JSON[_0x7049('0xb')](_0x511b5b);eventEmitter[_0x7049('0xc')]('projectUpdate',_0x498e29);}catch(_0x5514cb){eventEmitter['emit'](_0x7049('0x8'),new AGIError(_0x7049('0x9'),_0x5514cb));}});module[_0x7049('0xd')]={'EventEmitter':eventEmitter};
\ No newline at end of file
index abd463f..d4ddf64 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0x4450=['../../../config/logger','agi','menu','getdigits','numberOfEdges','prototype','vertices','edges','size','relations','getVertex','traverseBFS','info','no\x20vertex\x20found','stop\x20traverse','length','no\x20edge/s\x20available','split','agicommand','target','default','invalid','vswitch','default\x20on\x20switch\x20not\x20found','includes','max\x20retry\x20reach','exports','lodash'];(function(_0x550e29,_0x4047f){var _0x3515b6=function(_0x303fe2){while(--_0x303fe2){_0x550e29['push'](_0x550e29['shift']());}};_0x3515b6(++_0x4047f);}(_0x4450,0xdf));var _0x0445=function(_0x418b7b,_0x1f9f7e){_0x418b7b=_0x418b7b-0x0;var _0x5d1c30=_0x4450[_0x418b7b];return _0x5d1c30;};'use strict';var _=require(_0x0445('0x0'));var logger=require(_0x0445('0x1'))(_0x0445('0x2'));var verticesWithRetry=[_0x0445('0x3'),_0x0445('0x4'),'getsecretdigits'];var Graph=function(){this['vertices']={};this['edges']={};this[_0x0445('0x5')]=0x0;};Graph[_0x0445('0x6')]['addVertex']=function(_0x1ba1ce){this[_0x0445('0x7')][_0x1ba1ce['id']]=_0x1ba1ce;this[_0x0445('0x8')][_0x1ba1ce['id']]=[];};Graph[_0x0445('0x6')]['addEdge']=function(_0x184901,_0x35e51c,_0x57e109){this[_0x0445('0x8')][_0x184901]['push']({'target':_0x35e51c,'condition':_0x57e109});this[_0x0445('0x5')]+=0x1;};Graph[_0x0445('0x6')][_0x0445('0x9')]=function(){return _[_0x0445('0x9')](this[_0x0445('0x7')]);};Graph[_0x0445('0x6')][_0x0445('0xa')]=function(){return this[_0x0445('0x5')];};Graph[_0x0445('0x6')][_0x0445('0xb')]=function(_0x5de654){return this['vertices'][_0x5de654];};Graph['prototype'][_0x0445('0xc')]=function(_0x5c81b1,_0x3c6522){if(!this[_0x0445('0x7')][_0x5c81b1]){return logger[_0x0445('0xd')](_0x0445('0xe'));}var _0x3be56a=_0x3c6522(this[_0x0445('0x7')][_0x5c81b1]);if(!_0x3be56a){return logger[_0x0445('0xd')](_0x0445('0xf'));}if(this[_0x0445('0x8')][_0x5c81b1][_0x0445('0x10')]===0x0){return logger['info'](_0x0445('0x11'));}for(var _0x163bf9=0x0,_0xdadb4c=[],_0x261e30=![];_0x163bf9<this[_0x0445('0x8')][_0x5c81b1][_0x0445('0x10')];_0x163bf9+=0x1){if(this['edges'][_0x5c81b1][_0x163bf9]['condition']){_0xdadb4c=this[_0x0445('0x8')][_0x5c81b1][_0x163bf9]['condition'][_0x0445('0x12')](',');for(var _0x4b56ef=0x0;_0x4b56ef<_0xdadb4c[_0x0445('0x10')];_0x4b56ef+=0x1){if(this['vertices'][_0x5c81b1][_0x0445('0x13')]==='vswitch'&&_0xdadb4c[_0x4b56ef]==='-'){_0x261e30=this[_0x0445('0x8')][_0x5c81b1][_0x163bf9][_0x0445('0x14')];logger[_0x0445('0xd')](_0x0445('0x15'),_0xdadb4c[_0x4b56ef],this[_0x0445('0x8')][_0x5c81b1][_0x163bf9][_0x0445('0x14')]);}else if(this['vertices'][_0x5c81b1][_0x0445('0x13')]==='menu'&&_0xdadb4c[_0x4b56ef]==='i'){_0x261e30=this[_0x0445('0x8')][_0x5c81b1][_0x163bf9]['target'];logger[_0x0445('0xd')](_0x0445('0x16'),_0xdadb4c[_0x4b56ef],this[_0x0445('0x8')][_0x5c81b1][_0x163bf9][_0x0445('0x14')]);}if(_0xdadb4c[_0x4b56ef]===_0x3be56a){return this['traverseBFS'](this['edges'][_0x5c81b1][_0x163bf9][_0x0445('0x14')],_0x3c6522);}}}else{return this[_0x0445('0xc')](this[_0x0445('0x8')][_0x5c81b1][_0x163bf9]['target'],_0x3c6522);}}if(_0xdadb4c[_0x0445('0x10')]){if(this[_0x0445('0x7')][_0x5c81b1][_0x0445('0x13')]===_0x0445('0x17')){if(_0x261e30){return this['traverseBFS'](_0x261e30,_0x3c6522);}return logger[_0x0445('0xd')](_0x0445('0x18'));}else if(_[_0x0445('0x19')](verticesWithRetry,this[_0x0445('0x7')][_0x5c81b1][_0x0445('0x13')])){if(_0x3be56a==='-'){return logger[_0x0445('0xd')](_0x0445('0x1a'));}if(_0x261e30&&_0x3be56a!=='t'){return this[_0x0445('0xc')](_0x261e30,_0x3c6522);}return this[_0x0445('0xc')](_0x5c81b1,_0x3c6522);}return logger['info']('condition\x20not\x20found');}};module[_0x0445('0x1b')]=Graph;
\ No newline at end of file
index ba6e9ba..702916f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0x77be=['createSquareReport','then','catch','hasOwnProperty','substring','debug','variables','stringify','[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','getLicense','callysquare','[LICENSE]\x20CHANNELS:\x20%s','[LICENSE]\x20CHANNELS:\x20UNLIMITED','[LICENSE]\x20VOICE\x20IS\x20DISABLED','getAll','[LICENSE]','finally','./server','listening','connection','syncho','util','../../config/environment','../../config/logger','agi','./rpc','./project','./events','EventEmitter','defaults','127.0.0.1','error','stack','findIndex','deleted','log','Cally\x20Square\x20server\x20listening\x20on\x20port\x20%d!','port','info','format','[LISTENING]\x20Cally\x20Square\x20listening\x20%s:%d','name','message','[%s]\x20%s','[ERROR]\x20%s','[CLOSE]\x20%s\x20project:\x20from\x20\x22%s\x22\x20<%s>\x20to\x20extension\x20%s\x20with\x20uniqueid\x20%s','calleridname','callerid','dnid','uniqueid','[HANGUP]\x20%s\x20project:\x20from\x20\x22%s\x22\x20<%s>\x20to\x20extension\x20%s\x20with\x20uniqueid\x20%s','arg_1','evtHangup'];(function(_0x700804,_0x2c91bf){var _0x4a6511=function(_0x2dea75){while(--_0x2dea75){_0x700804['push'](_0x700804['shift']());}};_0x4a6511(++_0x2c91bf);}(_0x77be,0x93));var _0xe77b=function(_0x2b19bb,_0x1b7118){_0x2b19bb=_0x2b19bb-0x0;var _0x407c1e=_0x77be[_0x2b19bb];return _0x407c1e;};'use strict';var _=require('lodash');var syncho=require(_0xe77b('0x0'));var util=require(_0xe77b('0x1'));var config=require(_0xe77b('0x2'));var logger=require(_0xe77b('0x3'))(_0xe77b('0x4'));var utilLicense=require('../../config/license/util');var rpc=require(_0xe77b('0x5'));var Project=require(_0xe77b('0x6'));var AGIEmitter=require(_0xe77b('0x7'))[_0xe77b('0x8')];var projects=[];config[_0xe77b('0x4')]=_[_0xe77b('0x9')](config['agi'],{'ip':_0xe77b('0xa'),'port':0x11dd});AGIEmitter['on']('projectUpdate',projectUpdateHandler);function connectionHandler(_0x4e7f6e){process['nextTick'](function(){syncho(function(){try{setChannelVariables(_0x4e7f6e);agiHandler(_0x4e7f6e);}catch(_0xf1772){logger[_0xe77b('0xb')](_0xf1772[_0xe77b('0xc')]);}});});}function projectUpdateHandler(_0x11bed4){try{var _0x338603=_[_0xe77b('0xd')](projects,['id',_0x11bed4['id']]);if(_0x338603>-0x1){if(_0x11bed4[_0xe77b('0xe')]===!![]){projects['splice'](_0x338603,0x1);}else{projects[_0x338603]=_0x11bed4;}}else{projects['push'](_0x11bed4);}}catch(_0x102f51){logger['error'](_0x102f51[_0xe77b('0xc')]);}}function listeningHandler(){console[_0xe77b('0xf')](_0xe77b('0x10'),config[_0xe77b('0x4')][_0xe77b('0x11')]);logger[_0xe77b('0x12')](util[_0xe77b('0x13')](_0xe77b('0x14'),config[_0xe77b('0x4')]['ip'],config[_0xe77b('0x4')][_0xe77b('0x11')]));}function errorHandler(_0x5e757b){if(_0x5e757b&&_0x5e757b[_0xe77b('0x15')]&&_0x5e757b[_0xe77b('0x16')]){logger['error'](util[_0xe77b('0x13')](_0xe77b('0x17'),_0x5e757b[_0xe77b('0x15')],_0x5e757b[_0xe77b('0x16')]));}else{logger[_0xe77b('0xb')](util['format'](_0xe77b('0x18'),_0x5e757b[_0xe77b('0xc')]));}}function closeHandler(){logger[_0xe77b('0x12')](util[_0xe77b('0x13')](_0xe77b('0x19'),this['arg_1'],this[_0xe77b('0x1a')],this[_0xe77b('0x1b')],this[_0xe77b('0x1c')],this[_0xe77b('0x1d')]));try{createSquareReport(this);}catch(_0x103d03){logger['error'](_0x103d03[_0xe77b('0xc')]);}}function timeoutHandler(){logger[_0xe77b('0x12')](util['format']('[TIMEOUT]\x20%s\x20project:\x20from\x20\x22%s\x22\x20<%s>\x20to\x20extension\x20%s\x20with\x20uniqueid\x20%s',this['arg_1'],this[_0xe77b('0x1a')],this['callerid'],this[_0xe77b('0x1c')],this['uniqueid']));}function hangupHandler(){logger['info'](util['format'](_0xe77b('0x1e'),this[_0xe77b('0x1f')],this[_0xe77b('0x1a')],this[_0xe77b('0x1b')],this[_0xe77b('0x1c')],this[_0xe77b('0x1d')]));this[_0xe77b('0x20')]=!![];}function createSquareReport(_0x5b2474,_0x26f65d){rpc[_0xe77b('0x21')](_0x5b2474)[_0xe77b('0x22')](function(_0x439338){if(_0x26f65d){_0x26f65d(null,_0x439338);}})[_0xe77b('0x23')](function(_0x1a60d7){if(_0x26f65d){_0x26f65d(null,_0x1a60d7);}});}function setChannelVariables(_0x23f43e){for(var _0x31ce5f in _0x23f43e){if(_0x23f43e[_0xe77b('0x24')](_0x31ce5f)){if(_0x31ce5f['indexOf']('agi_')===0x0){_0x23f43e[_0x31ce5f[_0xe77b('0x25')](0x4)]=_0x23f43e[_0x31ce5f];delete _0x23f43e[_0x31ce5f];}}}}function agiHandler(_0x33cedb){logger[_0xe77b('0x26')](_0xe77b('0x27'),JSON[_0xe77b('0x28')](_0x33cedb,null,0x2));logger[_0xe77b('0x12')](util[_0xe77b('0x13')](_0xe77b('0x29'),_0x33cedb[_0xe77b('0x1f')],_0x33cedb[_0xe77b('0x1a')],_0x33cedb[_0xe77b('0x1b')],_0x33cedb[_0xe77b('0x1c')],_0x33cedb[_0xe77b('0x1d')]));_0x33cedb['on']('error',errorHandler);_0x33cedb['on'](_0xe77b('0x2a'),closeHandler);_0x33cedb['on'](_0xe77b('0x2b'),timeoutHandler);_0x33cedb[_0xe77b('0x20')]=![];_0x33cedb['on']('hangup',hangupHandler);var _0x22a708=_[_0xe77b('0x2c')](projects,[_0xe77b('0x15'),_0x33cedb[_0xe77b('0x1f')]]);if(!_0x22a708)return Project[_0xe77b('0x2d')](_0x33cedb);if(!_0x22a708[_0xe77b('0x2e')])return Project[_0xe77b('0x2f')](_0x33cedb);return Project[_0xe77b('0x30')](_0x22a708,_0x33cedb);}function main(){var _0x1cd898;return utilLicense[_0xe77b('0x31')]()['then'](function(_0x40bd64){if(!_0x40bd64)return;if(_0x40bd64['voice']){if(_0x40bd64[_0xe77b('0x32')]&&_0x40bd64[_0xe77b('0x32')]>0x0){logger[_0xe77b('0x12')](util[_0xe77b('0x13')](_0xe77b('0x33'),_0x40bd64['callysquare']));_0x1cd898=_0x40bd64[_0xe77b('0x32')];}else{logger['info'](_0xe77b('0x34'));}}else{logger[_0xe77b('0x12')](_0xe77b('0x35'));_0x1cd898=-0x1;}})[_0xe77b('0x22')](function(){return Project[_0xe77b('0x36')]();})[_0xe77b('0x22')](function(_0x11d666){projects=_0x11d666;return;})[_0xe77b('0x23')](function(_0x2dfe04){logger[_0xe77b('0xb')](_0xe77b('0x37'),_0x2dfe04[_0xe77b('0xc')]);})[_0xe77b('0x38')](function(){var _0xfbd27b=require(_0xe77b('0x39'))(config[_0xe77b('0x4')][_0xe77b('0x11')],config[_0xe77b('0x4')]['ip'],_0x1cd898);_0xfbd27b['on']('error',errorHandler);_0xfbd27b['on'](_0xe77b('0x3a'),listeningHandler);_0xfbd27b['on'](_0xe77b('0x3b'),connectionHandler);_0xfbd27b['on'](_0xe77b('0x2a'),closeHandler);});}main();
\ No newline at end of file
index c170c49..290c1ed 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0x32d6=['bluebird','jayson/promise','client','http','request','then','error','message','result','sendMailMessage'];(function(_0x36f95d,_0x1719b2){var _0x59233d=function(_0x58bc80){while(--_0x58bc80){_0x36f95d['push'](_0x36f95d['shift']());}};_0x59233d(++_0x1719b2);}(_0x32d6,0xe6));var _0x632d=function(_0x2cfdab,_0x5c9a63){_0x2cfdab=_0x2cfdab-0x0;var _0x46a4f6=_0x32d6[_0x2cfdab];return _0x46a4f6;};'use strict';var BPromise=require(_0x632d('0x0'));var jayson=require(_0x632d('0x1'));var client=jayson[_0x632d('0x2')][_0x632d('0x3')]({'port':0x232b});function request(_0x1013e5,_0x6a0a68){return new BPromise(function(_0x3cb7eb,_0x57a2fc){return client[_0x632d('0x4')](_0x1013e5,_0x6a0a68)[_0x632d('0x5')](function(_0x419849){if(_0x419849[_0x632d('0x6')]){return _0x57a2fc(_0x419849[_0x632d('0x6')][_0x632d('0x7')]);}else{return _0x3cb7eb(_0x419849[_0x632d('0x8')]);}})['catch'](function(_0x29c258){return _0x57a2fc(_0x29c258);});});}exports[_0x632d('0x9')]=function(_0x83c5c0,_0x24629d){return request('SendMail',{'account':_0x83c5c0,'message':_0x24629d});};
\ No newline at end of file
index e6db9aa..cdcfea0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0x401f=['addVertex','isArray','length','source','target','addEdge','value','toJson','mxGraphModel','root','inspect','production','start','debug','stringify','joinAt','YYYY-MM-DD\x20HH:mm:ss','omit','mxCell','info','format','[START\x20TRAVERSE]\x20%s\x20project:\x20from\x20\x22%s\x22\x20<%s>\x20to\x20extension\x20%s\x20with\x20uniqueid\x20%s','arg_1','calleridname','dnid','uniqueid','clear','agicommand','gotoc\x20block\x20stop\x20traverse\x20BFS','context','extension','priority','response','code','result','evtHangup','isUndefined','finally','[FINALLY\x20TRAVERSE]\x20%s\x20project:\x20from\x20\x22%s\x22\x20<%s>\x20to\x20extension\x20%s\x20with\x20uniqueid\x20%s','callerid','traverseBFS','toString','agicommand\x20not\x20found','[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\x20published','exports','lodash','moment','xml2json','util','agi','./mailRpc','./graph','./vertices','error','Unable\x20to\x20download\x20CallySquare\x20projects','stack','hasOwnProperty','maxRetry','retry'];(function(_0x87b561,_0x13ba37){var _0x11ce9d=function(_0x25f880){while(--_0x25f880){_0x87b561['push'](_0x87b561['shift']());}};_0x11ce9d(++_0x13ba37);}(_0x401f,0x16c));var _0xf401=function(_0x1716a9,_0xbfef51){_0x1716a9=_0x1716a9-0x0;var _0x28d8f9=_0x401f[_0x1716a9];return _0x28d8f9;};'use strict';var _=require(_0xf401('0x0'));var moment=require(_0xf401('0x1'));var parser=require(_0xf401('0x2'));var util=require(_0xf401('0x3'));var logger=require('../../config/logger')(_0xf401('0x4'));var rpc=require('./rpc');var mailRpc=require(_0xf401('0x5'));var Graph=require(_0xf401('0x6'));var Vertices=require(_0xf401('0x7'));var AGI_CODE_SUCCESS=0xc8;var AGI_RESULT_ERROR=-0x1;function getAll(){return rpc['getSquareProjects']()['catch'](function(_0x169e9d){logger[_0xf401('0x8')](_0xf401('0x9'),_0x169e9d[_0xf401('0xa')]);return[];});}function addVertex(_0x2688de,_0x1ec9ee,_0x22a309){_0x1ec9ee['agicommand']=_0x22a309;if(_0x1ec9ee[_0xf401('0xb')]('retry')){_0x1ec9ee[_0xf401('0xc')]=parseInt(_0x1ec9ee[_0xf401('0xd')],0xa);}_0x2688de[_0xf401('0xe')](_['omit'](_0x1ec9ee,'mxCell'));}function initGraph(_0x27be68,_0x2c8105){var _0x482eb8=new Graph();for(var _0x5b4f0d in _0x27be68){if(_0x27be68[_0xf401('0xb')](_0x5b4f0d)){if(_[_0xf401('0xf')](_0x27be68[_0x5b4f0d])){for(var _0x514d38=0x0;_0x514d38<_0x27be68[_0x5b4f0d][_0xf401('0x10')];_0x514d38+=0x1){addVertex(_0x482eb8,_0x27be68[_0x5b4f0d][_0x514d38],_0x5b4f0d);}}else{addVertex(_0x482eb8,_0x27be68[_0x5b4f0d],_0x5b4f0d);}}}for(var _0x4a7cdd=0x0;_0x4a7cdd<_0x2c8105[_0xf401('0x10')];_0x4a7cdd+=0x1){if(_0x2c8105[_0x4a7cdd][_0xf401('0x11')]&&_0x2c8105[_0x4a7cdd][_0xf401('0x12')]){_0x482eb8[_0xf401('0x13')](_0x2c8105[_0x4a7cdd]['source'],_0x2c8105[_0x4a7cdd][_0xf401('0x12')],_0x2c8105[_0x4a7cdd][_0xf401('0x14')]);}}return _0x482eb8;}function getRoot(_0x351c65){return parser[_0xf401('0x15')](_0x351c65,{'object':!![]})[_0xf401('0x16')][_0xf401('0x17')];}function inspect(_0x8eadf3){return util[_0xf401('0x18')](_0x8eadf3,{'showHidden':![],'depth':null});}function initialize(_0x2225df,_0xd5aa8e){var _0x1fe066=getRoot(_0x2225df[_0xf401('0x19')]);if(!_0x1fe066||!_0x1fe066[_0xf401('0x1a')])return;var _0x451237,_0x36b2b6,_0x25a01f;logger[_0xf401('0x1b')](_0xf401('0x17'),JSON[_0xf401('0x1c')](_0x1fe066,null,0x2));_0xd5aa8e[_0xf401('0x1d')]=moment()['format'](_0xf401('0x1e'));_0x451237=initGraph(_[_0xf401('0x1f')](_0x1fe066,_0xf401('0x20')),_0x1fe066[_0xf401('0x20')]);_0x36b2b6=new Vertices(_0xd5aa8e,rpc,mailRpc);logger[_0xf401('0x21')](util[_0xf401('0x22')](_0xf401('0x23'),_0xd5aa8e[_0xf401('0x24')],_0xd5aa8e[_0xf401('0x25')],_0xd5aa8e['callerid'],_0xd5aa8e[_0xf401('0x26')],_0xd5aa8e[_0xf401('0x27')]));_0x451237['traverseBFS'](_0x1fe066[_0xf401('0x1a')]['id'],function(_0x329f94){try{_0x329f94=_0x36b2b6[_0xf401('0x28')](_0x329f94);logger['debug']('vertex',JSON['stringify'](_0x329f94,null,0x2));if(_0x329f94[_0xf401('0x29')]==='gotoc'){logger[_0xf401('0x21')](_0xf401('0x2a'));_0xd5aa8e[_0xf401('0x2b')]=_0x329f94['context']||_0xd5aa8e['context'];_0xd5aa8e[_0xf401('0x2c')]=_0x329f94[_0xf401('0x2c')];_0xd5aa8e['priority']=_0x329f94[_0xf401('0x2d')]?_0x329f94['priority']-0x1:0x1;return null;}else if(_0x329f94&&_0x36b2b6[_0x329f94[_0xf401('0x29')]]){_0x25a01f=_0x36b2b6[_0x329f94['agicommand']](_0x329f94);logger[_0xf401('0x21')](_0xf401('0x2e'),JSON[_0xf401('0x1c')](_0x25a01f,null,0x2));if(_0x25a01f&&_0x25a01f[_0xf401('0x2f')]===AGI_CODE_SUCCESS&&_0x25a01f[_0xf401('0x30')]!==AGI_RESULT_ERROR&&!_0xd5aa8e[_0xf401('0x31')]){logger[_0xf401('0x1b')](_0xf401('0x2e'),inspect(_0x25a01f));return _[_0xf401('0x32')](_0x25a01f[_0xf401('0x30')])?null:_0x25a01f[_0xf401('0x30')]['toString']();}else{logger[_0xf401('0x8')](_0xf401('0x2e'),inspect(_0x25a01f));return null;}}else{logger[_0xf401('0x8')]('agicommand\x20not\x20found');return null;}}catch(_0x46a601){logger[_0xf401('0x8')](_0x46a601[_0xf401('0xa')]);return null;}});if(_0x1fe066[_0xf401('0x33')]){logger['info'](util[_0xf401('0x22')](_0xf401('0x34'),_0xd5aa8e[_0xf401('0x24')],_0xd5aa8e[_0xf401('0x25')],_0xd5aa8e[_0xf401('0x35')],_0xd5aa8e[_0xf401('0x26')],_0xd5aa8e[_0xf401('0x27')]));_0x451237[_0xf401('0x36')](_0x1fe066[_0xf401('0x33')]['id'],function(_0x47d1a2){try{_0x47d1a2=_0x36b2b6[_0xf401('0x28')](_0x47d1a2);logger[_0xf401('0x1b')]('vertex',JSON['stringify'](_0x47d1a2,null,0x2));if(_0x47d1a2&&_0x36b2b6[_0x47d1a2[_0xf401('0x29')]]){_0x25a01f=_0x36b2b6[_0x47d1a2[_0xf401('0x29')]](_0x47d1a2);if(_0x25a01f){logger[_0xf401('0x1b')](_0xf401('0x2e'),inspect(_0x25a01f));return _[_0xf401('0x32')](_0x25a01f['result'])?null:_0x25a01f['result'][_0xf401('0x37')]();}else{logger[_0xf401('0x8')](_0xf401('0x2e'),inspect(_0x25a01f));return null;}}else{logger['error'](_0xf401('0x38'));return null;}}catch(_0x5a0bb6){logger['error'](_0x5a0bb6[_0xf401('0xa')]);return null;}});}logger[_0xf401('0x21')](util[_0xf401('0x22')](_0xf401('0x39'),_0xd5aa8e['arg_1'],_0xd5aa8e[_0xf401('0x25')],_0xd5aa8e[_0xf401('0x35')],_0xd5aa8e[_0xf401('0x26')],_0xd5aa8e[_0xf401('0x27')]));logger[_0xf401('0x21')](util[_0xf401('0x22')](_0xf401('0x3a'),_0xd5aa8e[_0xf401('0x2b')],_0xd5aa8e[_0xf401('0x2c')],parseInt(_0xd5aa8e[_0xf401('0x2d')],0xa)+0x1));_0xd5aa8e[_0xf401('0x3b')](_0xd5aa8e[_0xf401('0x2b')],_0xd5aa8e['extension'],parseInt(_0xd5aa8e[_0xf401('0x2d')],0xa)+0x1);_0xd5aa8e[_0xf401('0x3c')]();}function handleNotFound(_0x4ada9c){logger[_0xf401('0x8')](util[_0xf401('0x22')]('Project\x20%s\x20not\x20found',_0x4ada9c[_0xf401('0x24')]));_0x4ada9c[_0xf401('0x3b')](_0x4ada9c[_0xf401('0x2b')],_0x4ada9c[_0xf401('0x2c')],parseInt(_0x4ada9c[_0xf401('0x2d')],0xa)+0x1);_0x4ada9c[_0xf401('0x3c')]();}function handleUnpublished(_0x1eb0df){logger[_0xf401('0x8')](util['format'](_0xf401('0x3d'),_0x1eb0df[_0xf401('0x24')]));_0x1eb0df['continueAt'](_0x1eb0df[_0xf401('0x2b')],_0x1eb0df[_0xf401('0x2c')],parseInt(_0x1eb0df[_0xf401('0x2d')],0xa)+0x1);_0x1eb0df[_0xf401('0x3c')]();}module[_0xf401('0x3e')]={'getAll':getAll,'handleNotFound':handleNotFound,'handleUnpublished':handleUnpublished,'initialize':initialize};
\ No newline at end of file
index d6e5789..4573803 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0xa063=['_localBuffer','_inBody','prototype','\x0d\x0a\x0d\x0a','toString','indexOf','substring','length','slice','trim','emit','headers','line','exports','util','call'];(function(_0x1c3e42,_0x1a4fe9){var _0x348fdc=function(_0x597394){while(--_0x597394){_0x1c3e42['push'](_0x1c3e42['shift']());}};_0x348fdc(++_0x1a4fe9);}(_0xa063,0x1ee));var _0x3a06=function(_0x5bc02b,_0x18dae8){_0x5bc02b=_0x5bc02b-0x0;var _0x4c08a6=_0xa063[_0x5bc02b];return _0x4c08a6;};'use strict';var util=require(_0x3a06('0x0'));var Transform=require('stream')['Transform'];function AGIReply(_0x116384){Transform[_0x3a06('0x1')](this,_0x116384);this[_0x3a06('0x2')]='';this[_0x3a06('0x3')]=![];}util['inherits'](AGIReply,Transform);AGIReply[_0x3a06('0x4')]['_transform']=function(_0x421890,_0x536da9,_0x15c888){var _0x3f4996='\x0a',_0x318edf=['\x0a\x0a',_0x3a06('0x5')],_0x494bbe=-0x1,_0x229bee=-0x1,_0xa28ebf='',_0x58ceaa=0x0,_0x272e2a='',_0x6ba4e6='';this[_0x3a06('0x2')]+=_0x421890[_0x3a06('0x6')]();_0x272e2a=this['_localBuffer'];if(!this['_inBody']){_0x58ceaa=0x0;while(_0x318edf[_0x58ceaa]){while((_0x229bee=_0x272e2a[_0x3a06('0x7')](_0x318edf[_0x58ceaa]))!=-0x1){_0xa28ebf=_0x318edf[_0x58ceaa];_0x6ba4e6=_0x272e2a[_0x3a06('0x8')](0x0,_0x229bee);_0x272e2a=_0x272e2a[_0x3a06('0x8')](_0x229bee+_0xa28ebf[_0x3a06('0x9')]);var _0x2d7406=_0x6ba4e6['split'](_0x3f4996),_0x5c8c00=0x0,_0x2ff96c={},_0x256b9a='',_0x482c89='',_0x335320=-0x1;while(_0x2d7406[_0x5c8c00]){_0x335320=_0x2d7406[_0x5c8c00][_0x3a06('0x7')](':');if(_0x335320!=-0x1){_0x256b9a=_0x2d7406[_0x5c8c00][_0x3a06('0xa')](0x0,_0x335320)[_0x3a06('0xb')]();_0x482c89=_0x2d7406[_0x5c8c00][_0x3a06('0xa')](_0x335320+0x1)['trim']();if(_0x256b9a[_0x3a06('0x9')]>0x0){_0x2ff96c[_0x256b9a]=_0x482c89;}}else{}_0x5c8c00++;}this[_0x3a06('0xc')](_0x3a06('0xd'),_0x2ff96c);this[_0x3a06('0x3')]=!![];}_0x58ceaa++;}this[_0x3a06('0x2')]=_0x272e2a;}else{while((_0x494bbe=_0x272e2a['indexOf'](_0x3f4996))!=-0x1){_0x6ba4e6=_0x272e2a[_0x3a06('0x8')](0x0,_0x494bbe);this[_0x3a06('0xc')](_0x3a06('0xe'),_0x6ba4e6);_0x272e2a=_0x272e2a[_0x3a06('0x8')](_0x494bbe+_0x3f4996[_0x3a06('0x9')]);}this['_localBuffer']=_0x272e2a;}_0x15c888();};module[_0x3a06('0xf')]=AGIReply;
\ No newline at end of file
index 455e34d..13a3b8a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0xe0b2=['moment','jayson/promise','client','http','request','then','error','message','catch','getSquareProjects','GetSquareProjects','name','production','getSquareProject','ShowSquareProject','getMailAccountById','ShowMailAccount','MailServerOut','CloudProvider','email','getSquareProjectById','getVoiceQueueById','ShowVoiceQueue','getVariableById','getSquareOdbcById','ShowSquareOdbc','dsn','getContactByPhone','GetContactByPhone','phone','getSoundById','ShowSound','save_name','getIntervalById','ShowInterval','Intervals','ShowSmsAccount','createSmsMessage','CreateSmsMessage','createSquareDetailsReport','CreateSquareDetailsReport','createSquareReport','CreateSquareReport','merge','format','YYYY-MM-DD\x20HH:mm:ss','createSquareRecording','CreateSquareRecording','createSquareMessage','createCmContact','ShowCmHopper','getPauseById','ShowPause','LoginUser','agentPause','PauseUser','UnpauseUser','agentLogout','LogoutUser'];(function(_0x1dbb16,_0x2b953b){var _0x1891bb=function(_0x166ed1){while(--_0x166ed1){_0x1dbb16['push'](_0x1dbb16['shift']());}};_0x1891bb(++_0x2b953b);}(_0xe0b2,0xec));var _0x2e0b=function(_0x46350a,_0x2401b4){_0x46350a=_0x46350a-0x0;var _0x46b086=_0xe0b2[_0x46350a];return _0x46b086;};'use strict';var _=require('lodash');var moment=require(_0x2e0b('0x0'));var jayson=require(_0x2e0b('0x1'));var client=jayson[_0x2e0b('0x2')][_0x2e0b('0x3')]({'port':0x2329});function request(_0x406b1c,_0x187b65){return new Promise(function(_0x46deb8,_0x56b694){return client[_0x2e0b('0x4')](_0x406b1c,_0x187b65)[_0x2e0b('0x5')](function(_0x1426a8){if(_0x1426a8[_0x2e0b('0x6')]){return _0x56b694(_0x1426a8[_0x2e0b('0x6')][_0x2e0b('0x7')]);}else{return _0x46deb8(_0x1426a8['result']);}})[_0x2e0b('0x8')](function(_0x504ea6){return _0x56b694(_0x504ea6);});});}exports[_0x2e0b('0x9')]=function(){return request(_0x2e0b('0xa'),{'options':{'raw':![],'attributes':['id',_0x2e0b('0xb'),_0x2e0b('0xc')]}});};exports[_0x2e0b('0xd')]=function(_0x173f25){return request(_0x2e0b('0xe'),{'options':{'raw':![],'where':{'name':_0x173f25},'attributes':[_0x2e0b('0xc')]}});};exports[_0x2e0b('0xf')]=function(_0x4fc22f){return request(_0x2e0b('0x10'),{'options':{'raw':![],'where':{'id':_0x4fc22f},'include':[{'model':_0x2e0b('0x11'),'as':'Smtp','include':[{'model':'CloudProvider','as':_0x2e0b('0x12')}]}],'attributes':['id',_0x2e0b('0xb'),_0x2e0b('0x13')],'smtp':!![]}});};exports[_0x2e0b('0x14')]=function(_0x2a7d19){return request(_0x2e0b('0xe'),{'options':{'where':{'id':_0x2a7d19},'attributes':[_0x2e0b('0xb')]}});};exports[_0x2e0b('0x15')]=function(_0x188928){return request(_0x2e0b('0x16'),{'options':{'where':{'id':_0x188928},'attributes':[_0x2e0b('0xb')]}});};exports[_0x2e0b('0x17')]=function(_0x5d0d0c){return request('ShowVariable',{'options':{'where':{'id':_0x5d0d0c},'attributes':['name']}});};exports[_0x2e0b('0x18')]=function(_0x4bcc46){return request(_0x2e0b('0x19'),{'options':{'where':{'id':_0x4bcc46},'attributes':[_0x2e0b('0x1a')]}});};exports['getUserById']=function(_0x589079){return request('ShowUser',{'options':{'where':{'id':_0x589079},'attributes':[_0x2e0b('0xb')]}});};exports[_0x2e0b('0x1b')]=function(_0x1c86a6){return request(_0x2e0b('0x1c'),{'options':{'where':{'phone':_0x1c86a6[_0x2e0b('0x1d')]},'attributes':['id']}});};exports['getTrunkById']=function(_0x2b2e7b){return request('ShowTrunk',{'options':{'where':{'id':_0x2b2e7b},'attributes':[_0x2e0b('0xb')]}});};exports[_0x2e0b('0x1e')]=function(_0x4b5b6d){return request(_0x2e0b('0x1f'),{'options':{'where':{'id':_0x4b5b6d},'attributes':[_0x2e0b('0x20')]}});};exports[_0x2e0b('0x21')]=function(_0x43341a){return request(_0x2e0b('0x22'),{'options':{'raw':![],'where':{'id':_0x43341a},'include':[{'model':'Interval','as':_0x2e0b('0x23')}]}});};exports['getSmsAccountById']=function(_0x49d111){return request(_0x2e0b('0x24'),{'options':{'where':{'id':_0x49d111},'attributes':['id',_0x2e0b('0xb')]}});};exports[_0x2e0b('0x25')]=function(_0x5688c6){return request(_0x2e0b('0x26'),{'body':_0x5688c6});};exports[_0x2e0b('0x27')]=function(_0x20b662){return request(_0x2e0b('0x28'),{'body':_0x20b662});};exports[_0x2e0b('0x29')]=function(_0x1a7857){return request(_0x2e0b('0x2a'),{'body':_[_0x2e0b('0x2b')](_0x1a7857,{'project_name':_0x1a7857['arg_1'],'prev_project_name':_0x1a7857['arg_2']||'','is_subproject':_0x1a7857['arg_2']?!![]:![],'leaveAt':moment()[_0x2e0b('0x2c')](_0x2e0b('0x2d'))})});};exports[_0x2e0b('0x2e')]=function(_0x452080){return request(_0x2e0b('0x2f'),{'body':_0x452080});};exports[_0x2e0b('0x30')]=function(_0x2d46bf){return request('CreateSquareMessage',{'body':_0x2d46bf});};exports[_0x2e0b('0x31')]=function(_0x12cca8){return request(_0x2e0b('0x32'),{'options':{'raw':![],'where':{'phone':_0x12cca8[_0x2e0b('0x1d')],'ListId':_0x12cca8['ListId']}}})[_0x2e0b('0x5')](function(_0x49e19e){if(_0x49e19e){return _0x49e19e;}return request('CreateCmContact',{'body':_0x12cca8});});};exports[_0x2e0b('0x33')]=function(_0x15d3ca){return request(_0x2e0b('0x34'),{'options':{'where':{'id':_0x15d3ca},'attributes':[_0x2e0b('0xb')]}});};exports['agentLogin']=function(_0x4b0216,_0x517509){return request(_0x2e0b('0x35'),{'body':{'interface':_0x517509},'options':{'where':_0x4b0216}});};exports[_0x2e0b('0x36')]=function(_0x2cbfbd,_0x20e62d,_0x3a72a6){return request(_0x2e0b('0x37'),{'body':{'type':_0x20e62d,'uniqueid':_0x3a72a6},'options':{'where':_0x2cbfbd}});};exports['agentUnpause']=function(_0x257572){return request(_0x2e0b('0x38'),{'body':{},'options':{'where':_0x257572}});};exports[_0x2e0b('0x39')]=function(_0x5c0e15){return request(_0x2e0b('0x3a'),{'body':{},'options':{'where':_0x5c0e15}});};
\ No newline at end of file
index 6d36082..21a186b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0xadf0=['exports','./lex'];(function(_0x35fdf7,_0x40169b){var _0x28c858=function(_0x161412){while(--_0x161412){_0x35fdf7['push'](_0x35fdf7['shift']());}};_0x28c858(++_0x40169b);}(_0xadf0,0x12d));var _0x0adf=function(_0x46c1ce,_0xb42a38){_0x46c1ce=_0x46c1ce-0x0;var _0x33275f=_0xadf0[_0x46c1ce];return _0x33275f;};var polly=require('./polly');var lex=require(_0x0adf('0x0'));module[_0x0adf('0x1')]={'polly':polly,'lex':lex};
\ No newline at end of file
index 6e6c02b..1a8a92f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+'use strict';var lex=require('./lib/api');module['exports']=function(_0x46400f,_0xa5f6b7,_0x4a08d4,_0x5080f5,_0x229028,_0x1fdf5b){return lex(_0x46400f,_0xa5f6b7,_0x4a08d4,_0x5080f5,_0x229028,_0x1fdf5b);};
\ No newline at end of file
index 580a36a..9268be9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0xa9e0=['LexRuntime','bluebird','aws-sdk','slots','hasOwnProperty'];(function(_0x43f5f9,_0x497f8e){var _0x3e97b8=function(_0x189a2f){while(--_0x189a2f){_0x43f5f9['push'](_0x43f5f9['shift']());}};_0x3e97b8(++_0x497f8e);}(_0xa9e0,0x123));var _0x0a9e=function(_0x13ea00,_0x12f610){_0x13ea00=_0x13ea00-0x0;var _0x1f7347=_0xa9e0[_0x13ea00];return _0x1f7347;};'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 1c14bd8..00d119b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0x3f65=['./lib/api'];(function(_0x193acd,_0x521ed9){var _0x2471dd=function(_0x234a24){while(--_0x234a24){_0x193acd['push'](_0x193acd['shift']());}};_0x2471dd(++_0x521ed9);}(_0x3f65,0x1a3));var _0x53f6=function(_0x2496c6,_0x228592){_0x2496c6=_0x2496c6-0x0;var _0x17029c=_0x3f65[_0x2496c6];return _0x17029c;};'use strict';var polly=require(_0x53f6('0x0'));module['exports']=function(_0x42939b,_0x2d5a1b,_0x288b05,_0x40f1,_0x208c35,_0x4fd32c,_0x12e5bf){return polly(_0x42939b,_0x2d5a1b,_0x288b05,_0x40f1,_0x208c35,_0x4fd32c,_0x12e5bf);};
\ No newline at end of file
index 97f39b9..ffe8da9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0x2cce=['writeFile','Invalid\x20data\x20response\x20from\x20aws\x20Polly!','No\x20data\x20response\x20from\x20aws\x20Polly!','exports','Polly','mp3','path','bluebird','randomstring','aws-sdk','AudioStream'];(function(_0x14ed36,_0x53035f){var _0x3a9023=function(_0x2da332){while(--_0x2da332){_0x14ed36['push'](_0x14ed36['shift']());}};_0x3a9023(++_0x53035f);}(_0x2cce,0x69));var _0xe2cc=function(_0x14339c,_0x3b39fb){_0x14339c=_0x14339c-0x0;var _0x1d3346=_0x2cce[_0x14339c];return _0x1d3346;};'use strict';var fs=require('fs');var path=require(_0xe2cc('0x0'));var BPromise=require(_0xe2cc('0x1'));var rs=require(_0xe2cc('0x2'));var AWS=require(_0xe2cc('0x3'));function pollyResult(_0x561cc9,_0x3eb929,_0x3d5865){return new BPromise(function(_0x5f7b6e,_0x5f06ed){_0x561cc9['synthesizeSpeech'](_0x3eb929,function(_0x43ed68,_0x4326e2){if(_0x43ed68){_0x5f06ed(_0x43ed68);}else if(_0x4326e2){if(_0x4326e2[_0xe2cc('0x4')]instanceof Buffer){fs[_0xe2cc('0x5')](_0x3d5865,_0x4326e2[_0xe2cc('0x4')],function(_0x27c4dc){if(_0x27c4dc){_0x5f06ed(_0x27c4dc);}else{_0x5f7b6e();}});}else{_0x5f06ed(new Error(_0xe2cc('0x6')));}}else{_0x5f06ed(new Error(_0xe2cc('0x7')));}});});}module[_0xe2cc('0x8')]=function(_0x31c8fe,_0x24e2ef,_0x58462e,_0x48da4e,_0x11d570,_0x489521,_0x91ba6){var _0x277327=new AWS[(_0xe2cc('0x9'))]({'accessKeyId':_0x31c8fe,'secretAccessKey':_0x24e2ef,'region':_0x58462e});var _0x553476={'Text':_0x11d570,'TextType':_0x489521||'text','OutputFormat':_0xe2cc('0xa'),'VoiceId':_0x48da4e};return pollyResult(_0x277327,_0x553476,_0x91ba6);};
\ No newline at end of file
index 633c69c..561045b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0xbce9=['exports','./lib/api'];(function(_0x4b3ffc,_0x424d8c){var _0x168597=function(_0x377216){while(--_0x377216){_0x4b3ffc['push'](_0x4b3ffc['shift']());}};_0x168597(++_0x424d8c);}(_0xbce9,0x18b));var _0x9bce=function(_0x53d4f7,_0x1e0f8c){_0x53d4f7=_0x53d4f7-0x0;var _0x339e61=_0xbce9[_0x53d4f7];return _0x339e61;};'use strict';var asr=require(_0x9bce('0x0'));module[_0x9bce('0x1')]=function(_0x344211,_0x5a98c6,_0x38ecf1,_0x2641b6){return asr(_0x344211,_0x5a98c6,_0x38ecf1);};
\ No newline at end of file
index 1ed0e74..244c924 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0x99e9=['bluebird','https://speech.googleapis.com','exports','string','filepath\x20should\x20be\x20a\x20string','length','key\x20should\x20be\x20a\x20string','lang\x20should\x20be\x20a\x20string','readFileSync','toString','base64','POST','/v1/speech:recognize?key=','LINEAR16','8000'];(function(_0x20a584,_0xe384a5){var _0x4b41a8=function(_0x2127c6){while(--_0x2127c6){_0x20a584['push'](_0x20a584['shift']());}};_0x4b41a8(++_0xe384a5);}(_0x99e9,0xb4));var _0x999e=function(_0x409ad2,_0x5129c1){_0x409ad2=_0x409ad2-0x0;var _0x595b5f=_0x99e9[_0x409ad2];return _0x595b5f;};'use strict';var url=require('url');var BPromise=require(_0x999e('0x0'));var fs=require('fs');var host=_0x999e('0x1');module[_0x999e('0x2')]=function(_0x1c6fa0,_0x4aaeb4,_0x19a818){return new BPromise(function(_0x2f803e,_0x3aac27){var _0x4e2112;if(typeof _0x1c6fa0!==_0x999e('0x3')||_0x1c6fa0['length']===0x0){return _0x3aac27(_0x999e('0x4'));}if(typeof _0x4aaeb4!==_0x999e('0x3')||_0x4aaeb4[_0x999e('0x5')]===0x0){return _0x3aac27(_0x999e('0x6'));}if(typeof _0x19a818!=='undefined'&&(typeof _0x19a818!==_0x999e('0x3')||_0x19a818[_0x999e('0x5')]===0x0)){return _0x3aac27(_0x999e('0x7'));}try{_0x4e2112=fs[_0x999e('0x8')](_0x1c6fa0)[_0x999e('0x9')](_0x999e('0xa'));}catch(_0x3f2c24){return _0x3aac27(_0x3f2c24);}return _0x2f803e({'method':_0x999e('0xb'),'uri':host+_0x999e('0xc')+_0x4aaeb4,'body':{'config':{'encoding':_0x999e('0xd'),'sampleRateHertz':_0x999e('0xe'),'languageCode':_0x19a818},'audio':{'content':_0x4e2112}},'json':!![]});});};
\ No newline at end of file
index 0d5de21..cbf1eec 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0x82fa=['exports','./asr'];(function(_0x5ca751,_0x4fc1d1){var _0x4891a4=function(_0x1b7c42){while(--_0x1b7c42){_0x5ca751['push'](_0x5ca751['shift']());}};_0x4891a4(++_0x4fc1d1);}(_0x82fa,0x18b));var _0xa82f=function(_0x2c67fe,_0x32235a){_0x2c67fe=_0x2c67fe-0x0;var _0x24009b=_0x82fa[_0x2c67fe];return _0x24009b;};var asr=require(_0xa82f('0x0'));module[_0xa82f('0x1')]={'asr':asr};
\ No newline at end of file
index 99b16b0..986c6dd 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0x996b=['toString','googleCloudTTS','https://texttospeech.googleapis.com/v1/','?key=','ssml','input','voice','audioConfig','MP3','text:synthesize','POST','audioContent','writeFile','.wav','googleCloudTTS\x20path','googleTTS','https://translate.google.com/_/TranslateWebserverUi/data/batchexecute','utf8','application/x-www-form-urlencoded','f.req=','stringify','jQ1olc','null','slice','parse\x20response\x20failed:\x0a','length','text\x20length\x20limit\x20reached','lang\x20\x22','\x22\x20might\x20not\x20exist','.mp3','goggleTTS\x20path','googleASR','asr','uri','results','map','alternatives','transcript','confidence','join','googleASR\x20transcription','googleASR\x20confidence','catch','[%s]\x20%s:%s','name','message','textRequest','result','resolvedQuery','action','actionIncomplete','fulfillment','speech','score','status','endConversation','isFallbackIntent','googleDialogflowV2','SessionsClient','queryResult','allRequiredParamsPresent','diagnosticInfo','fields','end_conversation','boolValue','intent','displayName','isFallback','languageCode','fulfillmentText','tildeASR','awsPolly','polly','awsLex','lex','format','model=%s','freeform=3','sestekNDA','nda','text','channelData','CustomActionData','AudioFromTts','Data','audiofile','dirName','apiai-promise','bluebird','http','https','md5','request-promise','randomstring','sox','google-tts-api','parse','util','./google','./sestek','./tilde','../../../config/logger','protocol','https:','host','WHAT_EVER','request\x20to\x20','\x20failed,\x20status\x20code\x20=\x20','statusCode','statusMessage','createWriteStream','finish','info','finish\x20download\x20file','close','unlink','error','pipe','end','path','get','data','wav','error\x20convert','finish\x20to\x20convert','start','resolve','tmp','generate','writeFileSync','base64','then','chmodSync','777','split','readFileSync'];(function(_0x5a6644,_0x45d612){var _0x3a2a5d=function(_0x54159e){while(--_0x54159e){_0x5a6644['push'](_0x5a6644['shift']());}};_0x3a2a5d(++_0x45d612);}(_0x996b,0xdf));var _0xb996=function(_0x56ed89,_0x855415){_0x56ed89=_0x56ed89-0x0;var _0x377eb2=_0x996b[_0x56ed89];return _0x377eb2;};'use strict';var apiai=require(_0xb996('0x0'));var BPromise=require(_0xb996('0x1'));var dialogflow=require('dialogflow');var fs=require('fs');var http=require(_0xb996('0x2'));var https=require(_0xb996('0x3'));var md5=require(_0xb996('0x4'));var path=require('path');var querystring=require('querystring');var rp=require(_0xb996('0x5'));var rs=require(_0xb996('0x6'));var sox=require(_0xb996('0x7'));var tts=require(_0xb996('0x8'));var urlParse=require('url')[_0xb996('0x9')];var util=require(_0xb996('0xa'));var aws=require('./aws');var google=require(_0xb996('0xb'));var sestek=require(_0xb996('0xc'));var tilde=require(_0xb996('0xd'));var logger=require(_0xb996('0xe'))('agi');var ISPEECH_API='https://api.ispeech.org/api/rest';function downloadFile(_0x4daf47,_0x499840){return new BPromise(function(_0x5c5fc9,_0x3ce882){var _0x364d13=urlParse(_0x4daf47);var _0x1333f2=_0x364d13[_0xb996('0xf')]===_0xb996('0x10')?https:http;var _0x53d0e5={'host':_0x364d13[_0xb996('0x11')],'path':_0x364d13['path'],'headers':{'user-agent':_0xb996('0x12')}};_0x1333f2['get'](_0x53d0e5,function(_0x3890fb){if(_0x3890fb['statusCode']!==0xc8){logger['error'](_0xb996('0x13')+_0x4daf47+_0xb996('0x14')+_0x3890fb[_0xb996('0x15')]+'\x20('+_0x3890fb[_0xb996('0x16')]+')');_0x3ce882(new Error(_0xb996('0x13')+_0x4daf47+_0xb996('0x14')+_0x3890fb[_0xb996('0x15')]+'\x20('+_0x3890fb[_0xb996('0x16')]+')'));return;}var _0x83dd56=fs[_0xb996('0x17')](_0x499840);_0x83dd56['on'](_0xb996('0x18'),function(){logger[_0xb996('0x19')](_0xb996('0x1a'));_0x83dd56[_0xb996('0x1b')](_0x5c5fc9);});_0x83dd56['on']('error',function(_0x3aa473){fs[_0xb996('0x1c')](_0x499840);logger[_0xb996('0x1d')]('download\x20error',_0x3aa473);_0x3ce882(_0x3aa473);});_0x3890fb[_0xb996('0x1e')](_0x83dd56);})['on']('error',function(_0x53597d){logger[_0xb996('0x1d')](_0x53597d);_0x3ce882(_0x53597d);})[_0xb996('0x1f')]();});}function uploadFile(_0x1a143b){return new BPromise(function(_0x518262,_0x35161e){var _0x37de75=urlParse(_0x1a143b);var _0x8003e3=_0x37de75[_0xb996('0xf')]===_0xb996('0x10')?https:http;var _0x5ffcc5={'host':_0x37de75[_0xb996('0x11')],'path':_0x37de75[_0xb996('0x20')],'headers':{'user-agent':_0xb996('0x12')}};_0x8003e3[_0xb996('0x21')](_0x5ffcc5,function(_0x3e5d66){if(_0x3e5d66[_0xb996('0x15')]!==0xc8){_0x35161e(new Error('request\x20to\x20'+_0x1a143b+'\x20failed,\x20status\x20code\x20=\x20'+_0x3e5d66[_0xb996('0x15')]+'\x20('+_0x3e5d66[_0xb996('0x16')]+')'));return;}var _0x483c74='';_0x3e5d66['on'](_0xb996('0x22'),function(_0x42ed13){_0x483c74+=_0x42ed13;});_0x3e5d66['on'](_0xb996('0x1f'),function(){_0x518262(_0x483c74);});})['on'](_0xb996('0x1d'),function(_0xf786b9){_0x35161e(_0xf786b9);})[_0xb996('0x1f')]();});}function convertFile(_0x13d776,_0x4c83ff){return new BPromise(function(_0xa95e23,_0x15e9e4){var _0x4d773a=sox['transcode'](_0x13d776,_0x4c83ff,{'sampleRate':0x1f40,'format':_0xb996('0x23'),'channelCount':0x1,'bitRate':0xc0*0x400,'compressionQuality':0x5});_0x4d773a['on'](_0xb996('0x1d'),function(_0x521600){logger['error'](_0xb996('0x24'),_0x521600);_0x15e9e4(_0x521600);});_0x4d773a['on'](_0xb996('0x1f'),function(){logger['info'](_0xb996('0x25'));_0xa95e23();});_0x4d773a[_0xb996('0x26')]();});}function base64Decode(_0x3bc025,_0x2ec3ad){var _0x3585ed=path[_0xb996('0x27')](__dirname,_0xb996('0x28'),rs[_0xb996('0x29')](0x4)+'.wav');fs[_0xb996('0x2a')](_0x3585ed,_0x3bc025,_0xb996('0x2b'));return convertFile(_0x3585ed,_0x2ec3ad)[_0xb996('0x2c')](function(){try{fs[_0xb996('0x1c')](_0x3585ed);fs[_0xb996('0x2d')](_0x2ec3ad,_0xb996('0x2e'));}catch(_0x33a360){logger[_0xb996('0x1d')](_0x33a360);}return _0x2ec3ad[_0xb996('0x2f')]('.')[0x0];});}function base64Encode(_0x406de5){var _0x439de5=fs[_0xb996('0x30')](_0x406de5);return new Buffer(_0x439de5)[_0xb996('0x31')]('base64');}exports[_0xb996('0x32')]=function(_0x2118ec,_0x47ee7b,_0x34c945,_0x39cc2f,_0x2ce128,_0x689d2){var _0x3f28b8,_0x1f2325;var _0x16de5b=_0xb996('0x33');var _0x1fb4b1=_0xb996('0x34')+_0x2118ec;var _0x2d9357={};if(_0x47ee7b===_0xb996('0x35')){_0x2d9357[_0xb996('0x36')]={'ssml':_0x34c945};}else{_0x2d9357[_0xb996('0x36')]={'text':_0x34c945};};_0x2d9357[_0xb996('0x37')]={'languageCode':_0x39cc2f,'ssmlGender':_0x2ce128};_0x2d9357[_0xb996('0x38')]={'audioEncoding':_0xb996('0x39'),'sampleRateHertz':0x1f40};var _0xb9f76={'url':_0x16de5b+_0xb996('0x3a')+_0x1fb4b1,'method':_0xb996('0x3b'),'json':!![],'body':_0x2d9357};return rp(_0xb9f76)[_0xb996('0x2c')](function(_0x30be3f){return new BPromise(function(_0x2fde51,_0xb33843){_0x3f28b8=path['resolve'](__dirname,_0xb996('0x28'),rs[_0xb996('0x29')](0x4)+'.mp3');var _0x27968e=Buffer['from'](_0x30be3f[_0xb996('0x3c')],_0xb996('0x2b'));return fs[_0xb996('0x3d')](_0x3f28b8,_0x27968e,function(_0x1fa53c){_0xb33843(_0x1fa53c);},function(_0x2867ee){fs[_0xb996('0x2d')](_0x3f28b8,_0xb996('0x2e'));_0x2fde51(_0x2867ee);});});})[_0xb996('0x2c')](function(_0x3fa459){_0x1f2325=path['resolve'](__dirname,_0xb996('0x28'),rs[_0xb996('0x29')](0x4)+_0xb996('0x3e'));return convertFile(_0x3f28b8,_0x1f2325);})[_0xb996('0x2c')](function(){try{fs['unlink'](_0x3f28b8);fs[_0xb996('0x2d')](_0x1f2325,'777');}catch(_0x4ecd5b){logger['error'](_0x4ecd5b);}logger[_0xb996('0x19')](_0xb996('0x3f'),_0x1f2325[_0xb996('0x2f')]('.')[0x0]);return _0x1f2325[_0xb996('0x2f')]('.')[0x0];});};exports[_0xb996('0x40')]=function(_0x4416a8,_0x4f4e10){var _0xda5109=_0xb996('0x41');var _0x1f7f5e,_0x1fb250;var _0x5abfbc;var _0x2b41fa={'encoding':_0xb996('0x42'),'method':_0xb996('0x3b'),'timeout':0x2710,'url':_0xda5109,'headers':{'Content-Type':_0xb996('0x43')},'body':_0xb996('0x44')+encodeURIComponent(JSON[_0xb996('0x45')]([[[_0xb996('0x46'),JSON[_0xb996('0x45')]([_0x4416a8,_0x4f4e10||'en',![],_0xb996('0x47')]),null,'generic']]]))};return rp(_0x2b41fa)['then'](function(_0x134e92){try{_0x5abfbc=eval(_0x134e92[_0xb996('0x48')](0x5))[0x0][0x2];}catch(_0x181a5e){throw new Error(_0xb996('0x49')+_0x134e92['data']);}if(!_0x5abfbc){if(_0x4416a8[_0xb996('0x4a')]>0xc8){throw new Error(_0xb996('0x4b'));}else{throw new Error(_0xb996('0x4c')+_0x4f4e10+_0xb996('0x4d'));}}try{_0x5abfbc=eval(_0x5abfbc)[0x0];}catch(_0x2a8172){throw new Error(_0xb996('0x49')+res[_0xb996('0x22')]);}const _0x212bb6=_0x5abfbc;_0x1f7f5e=path[_0xb996('0x27')](__dirname,_0xb996('0x28'),rs[_0xb996('0x29')](0x4)+_0xb996('0x4e'));fs['writeFileSync'](_0x1f7f5e,_0x5abfbc,{'encoding':'base64'});_0x1fb250=path[_0xb996('0x27')](__dirname,_0xb996('0x28'),rs[_0xb996('0x29')](0x4)+_0xb996('0x3e'));return convertFile(_0x1f7f5e,_0x1fb250);})[_0xb996('0x2c')](function(){try{fs[_0xb996('0x1c')](_0x1f7f5e);fs[_0xb996('0x2d')](_0x1fb250,_0xb996('0x2e'));}catch(_0x14cb69){logger['error'](_0x14cb69);}logger[_0xb996('0x19')](_0xb996('0x4f'),_0x1fb250[_0xb996('0x2f')]('.')[0x0]);return _0x1fb250[_0xb996('0x2f')]('.')[0x0];});};exports[_0xb996('0x50')]=function(_0x1472e3,_0x36afb4,_0x251974){return google[_0xb996('0x51')](_0x1472e3,_0x36afb4,_0x251974)['then'](function(_0x12301e){logger[_0xb996('0x19')](_0x12301e[_0xb996('0x52')]);return rp(_0x12301e);})[_0xb996('0x2c')](function(_0x161daf){var _0x273240='';var _0x4ae897=0x0;try{fs[_0xb996('0x1c')](_0x1472e3);}catch(_0x20b33d){logger[_0xb996('0x1d')](_0x20b33d);}if(_0x161daf&&_0x161daf[_0xb996('0x53')]){_0x273240=_0x161daf[_0xb996('0x53')][_0xb996('0x54')](function(_0x5c2b2f){return _0x5c2b2f&&_0x5c2b2f[_0xb996('0x55')][0x0]&&_0x5c2b2f['alternatives'][0x0][_0xb996('0x56')]?_0x5c2b2f[_0xb996('0x55')][0x0][_0xb996('0x56')]:'';})['join']('\x0a');_0x4ae897=_0x161daf['results'][_0xb996('0x54')](function(_0x2864a3){return _0x2864a3&&_0x2864a3[_0xb996('0x55')][0x0]&&_0x2864a3[_0xb996('0x55')][0x0][_0xb996('0x57')]?_0x2864a3[_0xb996('0x55')][0x0][_0xb996('0x57')]:0x0;})[_0xb996('0x58')]('\x0a');}logger['info'](_0xb996('0x59'),_0x273240);logger[_0xb996('0x19')](_0xb996('0x5a'),_0x4ae897);return{'transcript':_0x273240,'confidence':_0x4ae897};})[_0xb996('0x5b')](function(_0x36cf64){logger['error'](_0xb996('0x5c'),_0x36cf64[_0xb996('0x15')],_0x36cf64[_0xb996('0x5d')],_0x36cf64[_0xb996('0x5e')]);});};exports['googleDialogflow']=function(_0x2c97bd,_0x29ba47,_0x59d44f,_0x2199b2){var _0x4e2843=apiai(_0x29ba47,{'language':_0x2199b2||'en'});return _0x4e2843[_0xb996('0x5f')](_0x59d44f,{'sessionId':md5(_0x2c97bd)})[_0xb996('0x2c')](function(_0x12f5ec){logger[_0xb996('0x19')](JSON[_0xb996('0x45')](_0x12f5ec));return{'source':_0x12f5ec[_0xb996('0x60')]['source'],'resolvedQuery':_0x12f5ec[_0xb996('0x60')][_0xb996('0x61')],'action':_0x12f5ec[_0xb996('0x60')][_0xb996('0x62')],'actionIncomplete':_0x12f5ec[_0xb996('0x60')][_0xb996('0x63')],'speech':_0x12f5ec['result'][_0xb996('0x64')][_0xb996('0x65')],'score':_0x12f5ec['result'][_0xb996('0x66')],'statusCode':_0x12f5ec[_0xb996('0x67')]['code'],'endConversation':_0x12f5ec['result']['metadata'][_0xb996('0x68')]||![],'isFallbackIntent':_0x12f5ec['result']['metadata'][_0xb996('0x69')]};});};exports[_0xb996('0x6a')]=function(_0x5839f6,_0x163bac,_0x4af1c1,_0x514add,_0x9f9220,_0x43d3c6){var _0x50ef14=_0x514add['replace'](/\\n/g,'\x0a');var _0xaeb3a8={'credentials':{'private_key':_0x50ef14,'client_email':_0x4af1c1}};var _0x1a44fa=new dialogflow[(_0xb996('0x6b'))](_0xaeb3a8);var _0x1eaf30=_0x1a44fa['sessionPath'](_0x163bac,md5(_0x5839f6));var _0x1e73dc={'session':_0x1eaf30,'queryInput':{'text':{'text':_0x9f9220,'languageCode':_0x43d3c6}}};return _0x1a44fa['detectIntent'](_0x1e73dc)[_0xb996('0x2c')](function(_0x24d705){if(_0x24d705&&_0x24d705['length']){logger['info']('Dialogflow\x20V2\x20response:',JSON[_0xb996('0x45')](_0x24d705));var _0x5d97bf=_0x24d705[0x0];if(_0x5d97bf){var _0x41b312={'action':_0x5d97bf['queryResult']['action'],'allRequiredParamsPresent':_0x5d97bf[_0xb996('0x6c')][_0xb996('0x6d')],'endConversation':_0x5d97bf['queryResult'][_0xb996('0x6e')]&&_0x5d97bf['queryResult'][_0xb996('0x6e')]['fields']?_0x5d97bf[_0xb996('0x6c')][_0xb996('0x6e')][_0xb996('0x6f')][_0xb996('0x70')][_0xb996('0x71')]:![],'fulfillmentText':_0x5d97bf[_0xb996('0x6c')]['fulfillmentText'],'intentName':_0x5d97bf[_0xb996('0x6c')][_0xb996('0x72')][_0xb996('0x5d')],'intentDisplayName':_0x5d97bf[_0xb996('0x6c')][_0xb996('0x72')][_0xb996('0x73')],'isFallbackIntent':_0x5d97bf[_0xb996('0x6c')][_0xb996('0x72')][_0xb996('0x74')],'languageCode':_0x5d97bf[_0xb996('0x6c')][_0xb996('0x75')],'queryText':_0x5d97bf[_0xb996('0x6c')]['queryText'],'responseId':_0x5d97bf['responseId'],'score':_0x5d97bf[_0xb996('0x6c')]['intentDetectionConfidence'],'speech':_0x5d97bf['queryResult'][_0xb996('0x76')],'providerResponse':JSON[_0xb996('0x45')](_0x24d705)};return _0x41b312;}}});};exports[_0xb996('0x77')]=function(_0x48b610,_0x213547,_0x5941ba,_0xc4e843){return tilde[_0xb996('0x51')](_0x48b610,_0x213547,_0x5941ba,_0xc4e843)[_0xb996('0x2c')](function(_0x357c31){try{fs[_0xb996('0x1c')](_0x48b610);}catch(_0x548107){logger[_0xb996('0x1d')](_0x548107);}logger['info']('Tilde\x20ASR\x20transcription',_0x357c31[_0xb996('0x56')]);logger[_0xb996('0x19')]('Tilde\x20ASR\x20confidence',_0x357c31[_0xb996('0x57')]);return _0x357c31;});};exports[_0xb996('0x78')]=function(_0x4ba7f8,_0x44112d,_0x44adfb,_0x1a75dc,_0x140358,_0x1a57a6){var _0x1eb081=path[_0xb996('0x27')](__dirname,'tmp',rs[_0xb996('0x29')](0x4)+_0xb996('0x4e'));var _0x599888;return aws[_0xb996('0x79')](_0x4ba7f8,_0x44112d,_0x44adfb,_0x1a75dc,_0x140358,_0x1a57a6,_0x1eb081)['then'](function(){_0x599888=path[_0xb996('0x27')](__dirname,'tmp',rs['generate'](0x4)+_0xb996('0x3e'));return convertFile(_0x1eb081,_0x599888);})['then'](function(){try{fs['unlink'](_0x1eb081);fs[_0xb996('0x2d')](_0x599888,_0xb996('0x2e'));}catch(_0x13e670){logger[_0xb996('0x1d')](_0x13e670);}return _0x599888['split']('.')[0x0];});};exports[_0xb996('0x7a')]=function(_0x1f8b6b,_0x3a10af,_0x10e729,_0x20e29f,_0x184419,_0x21dedd){return aws[_0xb996('0x7b')](_0x1f8b6b,_0x3a10af,_0x10e729,_0x20e29f,_0x184419,_0x21dedd)['then'](function(_0x3901b8){logger['info'](JSON['stringify'](_0x3901b8));return _0x3901b8;});};exports['ispeechTTS']=function(_0x4411c0,_0x507d13,_0x483bbe,_0x37f763){var _0xdd235c=util[_0xb996('0x7c')]('%s?apikey=%s&action=convert&text=%s&voice=%s&speed=%s&format=mp3',ISPEECH_API,_0x4411c0,encodeURIComponent(_0x507d13),_0x483bbe,_0x37f763);var _0x20c697=path['resolve'](__dirname,_0xb996('0x28'),rs[_0xb996('0x29')](0x4)+_0xb996('0x4e'));var _0x57c369;return downloadFile(_0xdd235c,_0x20c697)[_0xb996('0x2c')](function(){_0x57c369=path[_0xb996('0x27')](__dirname,_0xb996('0x28'),rs[_0xb996('0x29')](0x4)+_0xb996('0x3e'));return convertFile(_0x20c697,_0x57c369);})['then'](function(){try{fs[_0xb996('0x1c')](_0x20c697);fs[_0xb996('0x2d')](_0x57c369,_0xb996('0x2e'));}catch(_0xa4907c){logger[_0xb996('0x1d')](_0xa4907c);}return _0x57c369[_0xb996('0x2f')]('.')[0x0];});};exports['ispeechASR']=function(_0x4609cc,_0x4b430e,_0x22aaf8,_0x11e022){var _0x15a2da=util['format']('%s?apikey=%s&action=recognize&locale=%s&content-type=audio/x-wav&audio=%s&%s',ISPEECH_API,_0x4b430e,_0x22aaf8,base64Encode(_0x4609cc),_0x11e022?util[_0xb996('0x7c')](_0xb996('0x7d'),encodeURIComponent(_0x11e022)):_0xb996('0x7e'));return uploadFile(_0x15a2da)['then'](function(_0x287274){return querystring[_0xb996('0x9')](_0x287274);});};exports[_0xb996('0x7f')]=function(_0x10b1e3,_0x559196){return sestek[_0xb996('0x80')](_0x10b1e3,_0x559196)[_0xb996('0x2c')](function(_0x4508ba){logger[_0xb996('0x19')](JSON['stringify'](_0x4508ba));var _0x54b8b3={'speech':_0x4508ba[_0xb996('0x81')],'action':_0x4508ba['channelData']?_0x4508ba[_0xb996('0x82')]['CustomAction']:undefined,'actiondata':_0x4508ba[_0xb996('0x82')]?_0x4508ba[_0xb996('0x82')][_0xb996('0x83')]:undefined};if(_0x4508ba[_0xb996('0x82')]&&_0x4508ba[_0xb996('0x82')][_0xb996('0x84')]){return base64Decode(_0x4508ba['channelData']['AudioFromTts'][_0xb996('0x85')],path[_0xb996('0x27')](__dirname,_0xb996('0x28'),rs['generate'](0x4)+_0xb996('0x3e')))[_0xb996('0x2c')](function(_0x144305){_0x54b8b3[_0xb996('0x86')]=_0x144305;return _0x54b8b3;});}return _0x54b8b3;});};exports[_0xb996('0x87')]=function(){return __dirname;};
\ No newline at end of file
index 8f34e03..9dfd406 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var nda=require('./nda');module['exports']={'nda':nda};
\ No newline at end of file
+var _0xe699=['./nda','exports'];(function(_0x285c85,_0x132c21){var _0x2f81cd=function(_0x9b9962){while(--_0x9b9962){_0x285c85['push'](_0x285c85['shift']());}};_0x2f81cd(++_0x132c21);}(_0xe699,0x172));var _0x9e69=function(_0x28d7d0,_0x69f886){_0x28d7d0=_0x28d7d0-0x0;var _0xc910c3=_0xe699[_0x28d7d0];return _0xc910c3;};var nda=require(_0x9e69('0x0'));module[_0x9e69('0x1')]={'nda':nda};
\ No newline at end of file
index 0863682..0f42d4d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0x10b8=['AudioOutputSettings','CustomAction','custom_action','custom_action_data','CustomActionData','info','request-promise','url','../../../../../config/logger','agi','exports','POST','resolve','/token','password','username','then','/api/NaturalDialogAssistant/v1/Run','ndaactivity_type','message','Nda','uniqueid','calleridname','dnid','extension','text','access_token','project','body','channelData','ProjectName','ndagenerate_audio'];(function(_0x618414,_0x1a7a60){var _0x21c19a=function(_0x507b17){while(--_0x507b17){_0x618414['push'](_0x618414['shift']());}};_0x21c19a(++_0x1a7a60);}(_0x10b8,0x166));var _0x810b=function(_0x11005e,_0x20c3d2){_0x11005e=_0x11005e-0x0;var _0x29338f=_0x10b8[_0x11005e];return _0x29338f;};'use strict';var rp=require(_0x810b('0x0'));var url=require(_0x810b('0x1'));var logger=require(_0x810b('0x2'))(_0x810b('0x3'));module[_0x810b('0x4')]=function(_0x3ddf1f,_0x4c370c){var _0x42cf4e={'method':_0x810b('0x5'),'uri':url[_0x810b('0x6')](_0x4c370c['ndauth_url'],_0x810b('0x7')),'form':{'grant_type':_0x810b('0x8'),'username':_0x4c370c[_0x810b('0x9')],'password':_0x4c370c[_0x810b('0x8')]},'json':!![]};return rp(_0x42cf4e)[_0x810b('0xa')](function(_0x3c5f12){var _0x43e6ed={'method':'POST','uri':url[_0x810b('0x6')](_0x4c370c['ndassistant_url'],_0x810b('0xb')),'body':{'type':_0x4c370c[_0x810b('0xc')]||_0x810b('0xd'),'channelId':_0x810b('0xe'),'conversation':{'id':_0x3ddf1f[_0x810b('0xf')]},'from':{'id':_0x3ddf1f['callerid'],'name':_0x3ddf1f[_0x810b('0x10')]},'recipient':{'id':_0x3ddf1f[_0x810b('0x11')],'name':_0x3ddf1f[_0x810b('0x12')]},'text':_0x4c370c[_0x810b('0x13')],'channelData':{}},'headers':{'Authorization':'Bearer\x20'+_0x3c5f12[_0x810b('0x14')]},'json':!![]};if(_0x4c370c[_0x810b('0x15')]){_0x43e6ed[_0x810b('0x16')][_0x810b('0x17')][_0x810b('0x18')]=_0x4c370c[_0x810b('0x15')];}if(_0x4c370c[_0x810b('0x19')]=='1'){_0x43e6ed[_0x810b('0x16')][_0x810b('0x17')][_0x810b('0x1a')]={'Generate':!![],'PutInStructuredPart':![],'ExpectedFormat':'audio/wav'};}if(_0x4c370c['custom_action']){_0x43e6ed[_0x810b('0x16')][_0x810b('0x17')][_0x810b('0x1b')]=_0x4c370c[_0x810b('0x1c')];if(_0x4c370c[_0x810b('0x1d')]){_0x43e6ed[_0x810b('0x16')][_0x810b('0x17')][_0x810b('0x1e')]=_0x4c370c[_0x810b('0x1d')];}}logger[_0x810b('0x1f')](JSON['stringify'](_0x43e6ed));return rp(_0x43e6ed);});};
\ No newline at end of file
index 7222781..2566c08 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0xbc2c=['exports','./lib/api'];(function(_0x501510,_0x61caa9){var _0x1e6ee5=function(_0x32845b){while(--_0x32845b){_0x501510['push'](_0x501510['shift']());}};_0x1e6ee5(++_0x61caa9);}(_0xbc2c,0x123));var _0xcbc2=function(_0x12932c,_0x2f64ef){_0x12932c=_0x12932c-0x0;var _0x2959cd=_0xbc2c[_0x12932c];return _0x2959cd;};'use strict';var asr=require(_0xcbc2('0x0'));module[_0xcbc2('0x1')]=function(_0x21bb42,_0x2dee74,_0x4cb76a,_0x5e3f7f){return asr(_0x21bb42,_0x2dee74,_0x4cb76a,_0x5e3f7f);};
\ No newline at end of file
index 0e9c3e9..d21a770 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0xbc4c=['parse','result','final','Tilde\x20ASR\x20hypoteses','hypotheses','transcript','likelihood','Aborted.\x20Recognition\x20was\x20aborted\x20for\x20some\x20reason.','Not\x20available.\x20Max\x20load\x20limit\x20reached.','Authentication\x20failed.','Tilde\x20ASR\x20parse\x20error','Close\x20Tilde\x20ASR\x20socket','isNil','isObject','open','message','lodash','crypto','../../../../../../config/logger','info','Tilde\x20URI','wss://runa.tilde.lv/client/ws/speech/LVASR-ONLINE','No\x20speech.\x20Sent\x20when\x20the\x20incoming\x20audio\x20contains\x20a\x20large\x20portion\x20of\x20silence\x20or\x20non-speech','createHash','update','digest','hex','unix','send','stringify','data','close','EOS','error','terminate'];(function(_0x1d5d1c,_0x588593){var _0xa1c17c=function(_0x263f2b){while(--_0x263f2b){_0x1d5d1c['push'](_0x1d5d1c['shift']());}};_0xa1c17c(++_0x588593);}(_0xbc4c,0x191));var _0xcbc4=function(_0x25d386,_0x108d0d){_0x25d386=_0x25d386-0x0;var _0x857f4a=_0xbc4c[_0x25d386];return _0x857f4a;};'use strict';var BPromise=require('bluebird');var _=require(_0xcbc4('0x0'));var fs=require('fs');var WebSocket=require('ws');var moment=require('moment');var crypto=require(_0xcbc4('0x1'));var logger=require(_0xcbc4('0x2'))('agi');module['exports']=function(_0x2daadb,_0x49162b,_0x2e32cd,_0x4abde3){return new BPromise(function(_0xf6f7b4,_0x3fbb12){logger[_0xcbc4('0x3')](_0xcbc4('0x4'),_0x4abde3||'wss://runa.tilde.lv/client/ws/speech/LVASR-ONLINE');var _0x123e69=new WebSocket(_0x4abde3||_0xcbc4('0x5'),{'perMessageDeflate':![]});var _0x43d592='';var _0x3a2c80='0';var _0x57ecc9='1';var _0x359ba6=_0xcbc4('0x6');function _0x2bd685(_0x2856d8){var _0x2b01d4=crypto[_0xcbc4('0x7')]('sha1');_0x2b01d4[_0xcbc4('0x8')](_0x2856d8);return _0x2b01d4[_0xcbc4('0x9')](_0xcbc4('0xa'));}function _0x57d13f(){try{logger[_0xcbc4('0x3')]('Open\x20Tilde\x20ASR\x20socket');var _0x47b068=moment()[_0xcbc4('0xb')]();var _0x119387=_0x2bd685(_0x47b068+_0x49162b+_0x2e32cd);_0x123e69[_0xcbc4('0xc')](JSON[_0xcbc4('0xd')]({'appID':_0x49162b,'timestamp':_0x47b068,'appKey':_0x119387}));var _0x3e9df0=fs['createReadStream'](_0x2daadb);_0x3e9df0['on'](_0xcbc4('0xe'),function(_0x53ad0c){_0x123e69[_0xcbc4('0xc')](_0x53ad0c);});_0x3e9df0['on'](_0xcbc4('0xf'),function(){_0x123e69['send'](_0xcbc4('0x10'));});}catch(_0x380278){logger[_0xcbc4('0x11')]('Tilde\x20ASR\x20send\x20error',JSON[_0xcbc4('0xd')](_0x380278));_0x123e69[_0xcbc4('0x12')]();}}function _0x345e77(_0x2da197){try{if(_0x2da197){var _0x11d22f=JSON[_0xcbc4('0x13')](_0x2da197);switch(_0x11d22f['status']){case 0x0:if(_0x11d22f['result']){if(_0x11d22f[_0xcbc4('0x14')][_0xcbc4('0x15')]){logger['info'](_0xcbc4('0x16'),JSON[_0xcbc4('0xd')](_0x11d22f[_0xcbc4('0x14')][_0xcbc4('0x17')]));_0x43d592=_0x11d22f['result'][_0xcbc4('0x17')][0x0][_0xcbc4('0x18')];_0x3a2c80=_0x11d22f[_0xcbc4('0x14')][_0xcbc4('0x17')][0x0][_0xcbc4('0x19')];_0x57ecc9='0';_0x359ba6='Success.';_0x123e69[_0xcbc4('0x12')]();}}break;case 0x1:logger['info'](_0xcbc4('0x6'));_0x57ecc9='1';_0x359ba6=_0xcbc4('0x6');break;case 0x2:logger[_0xcbc4('0x3')](_0xcbc4('0x1a'));_0x57ecc9='2';_0x359ba6=_0xcbc4('0x1a');break;case 0x9:logger['info'](_0xcbc4('0x1b'));_0x57ecc9='9';_0x359ba6=_0xcbc4('0x1b');break;case 0xa:logger[_0xcbc4('0x3')](_0xcbc4('0x1c'));_0x57ecc9='10';_0x359ba6=_0xcbc4('0x1c');break;case 0xb:logger[_0xcbc4('0x3')]('All\x20recognition\x20workers\x20are\x20currently\x20in\x20use\x20and\x20real-time\x20recognition\x20is\x20not\x20possible.');_0x57ecc9='11';_0x359ba6='All\x20recognition\x20workers\x20are\x20currently\x20in\x20use\x20and\x20real-time\x20recognition\x20is\x20not\x20possible.';}}}catch(_0x837523){logger[_0xcbc4('0x11')](_0xcbc4('0x1d'),JSON[_0xcbc4('0xd')](_0x837523));_0x123e69[_0xcbc4('0x12')]();}}function _0x4bcecd(){logger[_0xcbc4('0x3')](_0xcbc4('0x1e'));_0xf6f7b4({'transcript':_0x43d592,'confidence':_0x3a2c80,'status':_0x57ecc9,'status_message':_0x359ba6});}function _0x54dade(_0x7803b1){logger['error']('Error\x20Tilde\x20ASR\x20socket');if(!_[_0xcbc4('0x1f')](_0x7803b1)){logger[_0xcbc4('0x11')](_[_0xcbc4('0x20')](_0x7803b1)?JSON[_0xcbc4('0xd')](_0x7803b1):_0x7803b1);}}_0x123e69['on'](_0xcbc4('0x21'),_0x57d13f);_0x123e69['on'](_0xcbc4('0x22'),_0x345e77);_0x123e69['on'](_0xcbc4('0xf'),_0x4bcecd);_0x123e69['on'](_0xcbc4('0x11'),_0x54dade);});};
\ No newline at end of file
index cbc4978..49da2f4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0xffa4=['exports','./asr'];(function(_0x29632e,_0x5ecba4){var _0x426e04=function(_0x4eb357){while(--_0x4eb357){_0x29632e['push'](_0x29632e['shift']());}};_0x426e04(++_0x5ecba4);}(_0xffa4,0xb7));var _0x4ffa=function(_0x47f395,_0x18a997){_0x47f395=_0x47f395-0x0;var _0x577a61=_0xffa4[_0x47f395];return _0x577a61;};var asr=require(_0x4ffa('0x0'));module[_0x4ffa('0x1')]={'asr':asr};
\ No newline at end of file
index c705806..2eb616a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+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(_0x5c0a22,_0x3e0eb3){var _0x292d8e=function(_0x28c9e6){while(--_0x28c9e6){_0x5c0a22['push'](_0x5c0a22['shift']());}};_0x292d8e(++_0x3e0eb3);}(_0xe706,0xa3));var _0x6e70=function(_0x4a9520,_0x4e67b2){_0x4a9520=_0x4a9520-0x0;var _0x27d098=_0xe706[_0x4a9520];return _0x27d098;};'use strict';var util=require(_0x6e70('0x0'));var net=require(_0x6e70('0x1'));var EventEmitter=require(_0x6e70('0x2'))['EventEmitter'];var AGIError=require(_0x6e70('0x3'));var AGIChannel=require(_0x6e70('0x4'));var AGIServer=function(_0x2ca810,_0x7dfbc3,_0x142c27){var _0x2164a4=this;var _0x376a8d=null;var _0x506db9=0x0;if(!_0x2ca810)_0x2ca810=0x11dd;if(!_0x7dfbc3)_0x7dfbc3=_0x6e70('0x5');EventEmitter[_0x6e70('0x6')](_0x2164a4);function _0x36357b(){if(!_0x2ca810){_0x2164a4[_0x6e70('0x7')](_0x6e70('0x8'),new AGIError(_0x6e70('0x9')));return![];}_0x376a8d=net[_0x6e70('0xa')]();_0x376a8d[_0x6e70('0xb')](_0x2ca810,_0x7dfbc3);_0x376a8d['on'](_0x6e70('0xc'),function(){_0x2164a4[_0x6e70('0x7')](_0x6e70('0xc'));});_0x376a8d['on'](_0x6e70('0xd'),function(_0x743eb5){_0x376a8d[_0x6e70('0xe')](function(_0x37b3e0,_0x4600f9){if(_0x37b3e0){_0x2164a4['emit']('error',new AGIError(_0x6e70('0xf'),_0x37b3e0));}else if(_0x142c27&&_0x142c27<0x0){_0x2164a4[_0x6e70('0x7')](_0x6e70('0x8'),new AGIError(_0x6e70('0x10')));_0x743eb5[_0x6e70('0x11')]();}else if(_0x142c27&&_0x142c27>0x0&&_0x142c27<_0x4600f9){_0x506db9+=0x1;_0x2164a4[_0x6e70('0x7')](_0x6e70('0x8'),new AGIError(_0x6e70('0x12'),_0x506db9));_0x743eb5['destroy']();}else{var _0x52737e=new AGIChannel(_0x743eb5);_0x52737e['on']('ready',function(){_0x2164a4[_0x6e70('0x7')]('connection',_0x52737e);});}});});_0x376a8d['on']('error',function(_0x304716){_0x2164a4[_0x6e70('0x7')]('error',new AGIError(_0x6e70('0xf'),_0x304716['code']));});_0x376a8d['on'](_0x6e70('0x13'),function(){_0x2164a4[_0x6e70('0x7')]('close',new AGIError('E_AGI_SERVER_CLOSE'));});}process[_0x6e70('0x14')](function(){_0x36357b();});};util['inherits'](AGIServer,EventEmitter);module[_0x6e70('0x15')]=function(_0x173afe,_0x53acdc,_0x497d61){return new AGIServer(_0x173afe,_0x53acdc,_0x497d61);};
\ No newline at end of file
index 7ca0903..5bca0ee 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0x6f7a=['request-promise','../../config/logger','agi','../../config/environment','../../config/environment/shared','./scripts','/var/opt/motion2/server/files','rawHeaders','rawBody','getsecretdigits','channel','prototype','getVariable','getVariableById','then','name','getVoiceQueue','getVoiceQueueById','catch','rpc','getSquareProjectById','getSquareOdbcById','getTrunkById','getSoundById','getSoundPath','save_name','getMailAccount','mailRpc','sendMailMessage','getIntervalById','interval','map','Intervals','%s/sounds/converted/%s','getQueryOdbc','error','Error\x20getting\x20ODBC\x20connection\x20%s','info','ODBC\x20connection\x20successfully','query','Error\x20executing\x20query\x20%s','Query\x20executed\x20correctly\x20%s','getSmsAccount','createSmsMessage','createSquareDetailsReport','uniqueid','agicommand','arg_1','createSquareRecording','callerid','extension','accountcode','dnid','file','createCmContact','isEmpty','isNil','callback_','lastName','list_id','scheduledAt','Callback\x20scheduled\x20at\x20','toString','callback_priority','getPause','getPauseById','agentPause','agent','agentUnpause','agentLogout','agentLogin','internal','format','%s/%s@from-sip/n','shellCommand','exec','trim','googleCloudTTS','apiKey','text','languageCode','en-US','ssmlGender','MALE','audioEncoding','MP3','googleTTS','google_tts_language','restAPI','url','method','number','timeout','POST','toUpperCase','parse','An\x20incorrect\x20formatted\x20json\x20body\x20has\x20been\x20passed\x20to\x20the\x20function','headers','An\x20incorrect\x20formatted\x20json\x20headers\x20has\x20been\x20passed\x20to\x20the\x20function','computedVariables','uri','render','stringify','body','An\x20incorrect\x20formatted\x20json\x20has\x20been\x20passed\x20to\x20the\x20function','statusCode','500\x20-\x20Internal\x20Server\x20Error','options','googleDialogflow','key','googleDialogflowV2','client_email','dialogflowV2_language','sestekNDA','ispeechTTS','ispeech_tts_language','ispeechASR','isConfigured','model','awsPolly','aws_access_key_id','aws_secret_access_key','aws_polly_voice','aws_text_type','awsLex','aws_lex_region','aws_bot_name','googleASR','google_asr_language','appid','appsecret','clear','includes','hasOwnProperty','replaceObjectAllVariables','replaceAllVariables','isPlainObject','recursiveNodeIndex','isArray','length','isString','saveRestApiResult','%s.%s','setVariable','split','getAndSetVariable','result','The\x20\x22%s\x22\x20variable\x20value\x20is:\x20%s','extra','maxRetry','mrcpsynth','Enter\x20in\x20MRCPSynth\x20(%s)\x20block','noop','no\x20text\x20configured','MRCPSynth','Executed\x20command\x20MRCPSynth\x20%s','mrcprecog','label','grammar','no\x20grammar\x20configured','MRCP_RECOG_TRANSCRIPT','RECOG_INSTANCE()','Executed\x20command\x20MRCPRecog\x20%s','Enter\x20in\x20AGI\x20(%s)\x20block','command','answer','Wait\x20%s\x20seconds\x20before\x20answer','wait','callback','Enter\x20in\x20CALLBACK\x20(%s)\x20block','no\x20list\x20selected','delay','minutes','CALLBACK\x20added\x20phone:\x20%s\x20on\x20list:\x20%s\x20at\x20%s','phone','Enter\x20in\x20CUSTOM\x20APP\x20(%s)\x20block','application','Executed\x20command\x20%s\x20%s','Enter\x20in\x20LUMENVOXTTS\x20(%s)\x20block','sestektts','lumenvoxasr','MRCPRecog','RECOG_CONFIDENCE()','RECOG_INPUT()','LUMENVOX_ASR_INSTANCE','sestekasr','SESTEK_ASR_TRANSCRIPT','database','no\x20database\x20selected','getSquareOdbc','sync','odbc_id','no\x20odbc\x20database\x20found','no\x20query\x20configured','replace','query:\x20%s','variable_id','no\x20variable\x20selected\x20for\x20the\x20result','no\x20variable\x20found','forEach','keys','%s_ROWS_COUNT','variable\x20%s\x20set','dial','debug','sip_id','no\x20user\x20selected','getUser','no\x20user\x20found','DIAL','SIP/%s','dialogflow','Enter\x20in\x20DIALOGFLOW\x20(%s)\x20block','no\x20key\x20configured','createSquareMessage','Trying\x20Dialogflow:\x20%s','DIALOGFLOW_%s','speech','out','Enter\x20in\x20DIALOGFLOW\x20V2\x20(%s)\x20block','dialogflowV2_project_id','no\x20project_id\x20configured','no\x20client_email\x20configured','bot','Trying\x20DialogflowV2:\x20%s','providerResponse','DialogflowV2\x20Result\x20%s','DialogflowV2\x20is\x20unreachable','Enter\x20in\x20SESTEKNDA\x20(%s)\x20block','ndauth_url','no\x20ndauth\x20url\x20configured','username','no\x20username\x20configured','ndassistant_url','sesteknda','audiofile','Sestek\x20NDA\x20%s\x20file\x20created','streamFile','unlink','SestekNDA\x20Result\x20%s','end','Enter\x20in\x20END\x20(%s)\x20block','ext_dial','Enter\x20in\x20EXTERNAL\x20DIAL\x20(%s)\x20block','trunk_id','no\x20trunk\x20selected','getTrunk','no\x20trunk\x20found','trunk_name','SIP/%s/%s','opts','Executed\x20command\x20%s','finally','getdigits','Enter\x20in\x20GETDIGITS\x20(%s)\x20block','retry','no\x20file\x20audio\x20selected','getSound','file_id','no\x20file\x20audio\x20found','getData','response','maxdigit','test','mindigit','hiddendigitsnum','first','substr','Enter\x20in\x20GETSECRETDIGITS\x20(%s)\x20block','goal','Enter\x20in\x20GOAL\x20(%s)\x20block','GOAL\x20%s','goalname','awspolly','no\x20valid\x20credentials\x20configured','.wav','aws\x20Polly\x20is\x20unreachable','awslex','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','message','Amazon\x20Lex\x20is\x20unreachable','Enter\x20in\x20GOOGLEASR\x20(%s)\x20block\x20%s','%s/recordings/%s','generate','beep','NOBEEP','recordFile','intKey','google\x20%s\x20file\x20created','GoogleASR\x20Result\x20%s','Enter\x20in\x20TILDEASR\x20(%s)\x20block','no\x20appsecret\x20configured','wav','tilde\x20%s\x20file\x20created','TildeASR\x20Result\x20%s','gotoc','Enter\x20in\x20GOTO\x20(%s)\x20block','context','priority','gotoif','Enter\x20in\x20GOTOIF\x20(%s)\x20block','true','EVAL\x20CONDITION\x20%s\x20%s','false','gotoiftime','Enter\x20in\x20GOTOIFTIME\x20(%s)\x20block','interval_id','no\x20interval\x20configured','getIntervals','no\x20intervals\x20found','IFTIME(%s?true:false)','IFTIME\x20%s\x20%s','Enter\x20in\x20HANGUP\x20(%s)\x20block','ispeechasr','Enter\x20in\x20ISPEECHASR\x20(%s)\x20block','ispeech\x20%s\x20file\x20created','IspeechASR\x20Result\x20%s','ispeechtts','Trying\x20ispeech\x20TTS\x20%s','ispeech\x20TTS\x20is\x20unreachable','login','Enter\x20in\x20LOGIN\x20(%s)\x20block','findBy','FIND\x20AGENT\x20%s\x20BY\x20%s','AGENT\x20%s\x20FOUND\x20BY','success','AGENT\x20%s\x20NOT\x20FOUND\x20BY','logout','Enter\x20in\x20LOGOUT\x20(%s)\x20block','no\x20find\x20by\x20configured','failure','Enter\x20in\x20MATH\x20(%s)\x20block','operation','no\x20operation\x20configured','%s[%s]','variable\x20%s[key]\x20set','menu','Enter\x20in\x20NOOP\x20(%s)\x20block','pause','Enter\x20in\x20PAUSE\x20(%s)\x20block','pause_id','Enter\x20in\x20PLAYBACK\x20(%s)\x20block','PLAYBACK','queue','Enter\x20in\x20QUEUE\x20(%s)\x20block','queue_id','no\x20queue\x20selected','no\x20queue\x20found','indexOf','XMCS-QUEUE','QUEUE','macro','gosub','position','Enter\x20in\x20RECORD\x20(%s)\x20block','recordingFormat','%s_%s','%s/recordings/%s.%s','RECORDING_SAVENAME','Recording\x20%s\x20%s\x20%s\x20%s','escape_digits','restapi','Enter\x20in\x20RESTAPI\x20(%s)\x20block','inspect','no\x20variable\x20selected\x20for\x20the\x20response','%s_STATUS_CODE','%s_STATUS_MESSAGE','Unable\x20to\x20set\x20result\x20in\x20variable\x20%s','Enter\x20in\x20SAYDIGITS\x20(%s)\x20block','sayDigits','digits','sayNumber','sayphonetic','Enter\x20in\x20SAYPHONETIC\x20(%s)\x20block','sendMail','account_id','no\x20mail\x20account\x20configured','Smtp','no\x20mail\x20account\x20found','\x22%s\x22\x20<%s>','email','subject','sendMail\x20message','smtpOptions','Mail\x20message\x20added\x20to\x20outgoing\x20process','sendFax','Enter\x20in\x20SENDSMS\x20(%s)\x20block','sms_account_id','no\x20sms\x20account\x20found','sms_text','sendSMS\x20message','Sms\x20message\x20added\x20to\x20outgoing\x20process','Enter\x20in\x20SET\x20(%s)\x20block','variable_value','start','START\x20CALLY\x20SQUARE','yes','Answer','Skipped\x20Answer','subproject','Enter\x20in\x20SUBPROJECT\x20(%s)\x20block','project_id','no\x20subproject\x20selected','no\x20subproject\x20found\x20with\x20id\x20%d','project\x20in\x20subproject\x20must\x20be\x20different\x20from\x20the\x20called\x20project','AGI','127.0.0.1','Enter\x20in\x20SYSTEM\x20(%s)\x20block','no\x20apiKey\x20configured','Trying\x20Google\x20Cloud\x20TTS\x20%s','Google\x20Cloud\x20TTS\x20is\x20unreachable','tts','Enter\x20in\x20GOOGLETTS\x20(%s)\x20block','Trying\x20Google\x20TTS\x20%s','Google\x20TTS\x20%s\x20file\x20created','Google\x20TTS\x20is\x20unreachable','unpause','Enter\x20in\x20UNPAUSE\x20(%s)\x20block','VOICEMAIL','mailbox','vswitch','Enter\x20in\x20SWITCH\x20(%s)\x20block','no\x20variable\x20selected','join','exports','util','lodash','shelljs','odbc','moment','mustache'];(function(_0x457bec,_0x30f1e9){var _0x4d1f2e=function(_0x217498){while(--_0x217498){_0x457bec['push'](_0x457bec['shift']());}};_0x4d1f2e(++_0x30f1e9);}(_0x6f7a,0x1ae));var _0xa6f7=function(_0x501cb8,_0x5f2f13){_0x501cb8=_0x501cb8-0x0;var _0x232785=_0x6f7a[_0x501cb8];return _0x232785;};'use strict';var fs=require('fs');var util=require(_0xa6f7('0x0'));var _=require(_0xa6f7('0x1'));var sh=require(_0xa6f7('0x2'));var odbc=require(_0xa6f7('0x3'))();var rs=require('randomstring');var moment=require(_0xa6f7('0x4'));var Mustache=require(_0xa6f7('0x5'));var rp=require(_0xa6f7('0x6'));var logger=require(_0xa6f7('0x7'))(_0xa6f7('0x8'));var config=require(_0xa6f7('0x9'));var shared=require(_0xa6f7('0xa'));var scripts=require(_0xa6f7('0xb'));var FILES_PATH=_0xa6f7('0xc');var recursiveMapAttributes=[_0xa6f7('0xd'),_0xa6f7('0xe')];var verticesWithRetry=['menu','getdigits',_0xa6f7('0xf')];var AGIVertices=function(_0x2674c9,_0x397020,_0x362404){this[_0xa6f7('0x10')]=_0x2674c9;this['rpc']=_0x397020;this['mailRpc']=_0x362404;};AGIVertices[_0xa6f7('0x11')][_0xa6f7('0x12')]=function(_0x4e30bc,_0x178f20){this['rpc'][_0xa6f7('0x13')](_0x4e30bc)[_0xa6f7('0x14')](function(_0x13425e){_0x178f20(null,_0x13425e?_0x13425e[_0xa6f7('0x15')]:![]);})['catch'](function(_0x3fc7f1){_0x178f20(_0x3fc7f1);});};AGIVertices['prototype'][_0xa6f7('0x16')]=function(_0x68fd8a,_0x25c123){this['rpc'][_0xa6f7('0x17')](_0x68fd8a)['then'](function(_0x41bc4d){_0x25c123(null,_0x41bc4d?_0x41bc4d['name']:![]);})[_0xa6f7('0x18')](function(_0x17f9c5){_0x25c123(_0x17f9c5);});};AGIVertices[_0xa6f7('0x11')]['getSquareProject']=function(_0xdb37e2,_0x22635e){this[_0xa6f7('0x19')][_0xa6f7('0x1a')](_0xdb37e2)['then'](function(_0x4a8827){_0x22635e(null,_0x4a8827?_0x4a8827[_0xa6f7('0x15')]:![]);})['catch'](function(_0x378967){_0x22635e(_0x378967);});};AGIVertices[_0xa6f7('0x11')]['getSquareOdbc']=function(_0x18fc4a,_0xb2cfaa){this[_0xa6f7('0x19')][_0xa6f7('0x1b')](_0x18fc4a)[_0xa6f7('0x14')](function(_0x1aa8dc){_0xb2cfaa(null,_0x1aa8dc?_0x1aa8dc['dsn']:![]);})[_0xa6f7('0x18')](function(_0x45d79e){_0xb2cfaa(_0x45d79e);});};AGIVertices['prototype']['getUser']=function(_0x5ddc8d,_0x1de6c9){this[_0xa6f7('0x19')]['getUserById'](_0x5ddc8d)['then'](function(_0x50e2be){_0x1de6c9(null,_0x50e2be?_0x50e2be[_0xa6f7('0x15')]:![]);})[_0xa6f7('0x18')](function(_0x28263e){_0x1de6c9(_0x28263e);});};AGIVertices['prototype']['getTrunk']=function(_0x2f4907,_0x53b3c2){this['rpc'][_0xa6f7('0x1c')](_0x2f4907)['then'](function(_0x35847e){_0x53b3c2(null,_0x35847e?_0x35847e[_0xa6f7('0x15')]:![]);})[_0xa6f7('0x18')](function(_0x2b4c6c){_0x53b3c2(_0x2b4c6c);});};AGIVertices[_0xa6f7('0x11')]['getSound']=function(_0x51db47,_0x1c419b){var _0x2ad0d9=this;this['rpc'][_0xa6f7('0x1d')](_0x51db47)[_0xa6f7('0x14')](function(_0x87bccc){_0x1c419b(null,_0x87bccc?_0x2ad0d9[_0xa6f7('0x1e')](_0x87bccc[_0xa6f7('0x1f')]):![]);})[_0xa6f7('0x18')](function(_0x353de8){_0x1c419b(_0x353de8);});};AGIVertices[_0xa6f7('0x11')][_0xa6f7('0x20')]=function(_0x3dee2e,_0x40b0f8){this[_0xa6f7('0x19')]['getMailAccountById'](_0x3dee2e)[_0xa6f7('0x14')](function(_0x42dc49){_0x40b0f8(null,_0x42dc49?_0x42dc49:![]);})['catch'](function(_0xd6304f){_0x40b0f8(_0xd6304f);});};AGIVertices[_0xa6f7('0x11')]['sendMailMessage']=function(_0x55179e,_0x176378,_0x25dcad){this[_0xa6f7('0x21')][_0xa6f7('0x22')](_0x55179e,_0x176378)[_0xa6f7('0x14')](function(){_0x25dcad(null);})['catch'](function(_0x4dfd81){_0x25dcad(_0x4dfd81);});};AGIVertices[_0xa6f7('0x11')]['getIntervals']=function(_0x1883f6,_0x1caadf){this[_0xa6f7('0x19')][_0xa6f7('0x23')](_0x1883f6)[_0xa6f7('0x14')](function(_0xbdfc5a){if(_0xbdfc5a){if(_0xbdfc5a['IntervalId']){_0x1caadf(null,[_0xbdfc5a[_0xa6f7('0x24')]]);}else{_0x1caadf(null,_[_0xa6f7('0x25')](_0xbdfc5a[_0xa6f7('0x26')],'interval'));}}else{_0x1caadf(null,![]);}})[_0xa6f7('0x18')](function(_0x5ab03d){_0x1caadf(_0x5ab03d);});};AGIVertices[_0xa6f7('0x11')][_0xa6f7('0x1e')]=function(_0x45837c){return util['format'](_0xa6f7('0x27'),FILES_PATH,_0x45837c);};AGIVertices[_0xa6f7('0x11')][_0xa6f7('0x28')]=function(_0x37b833,_0x14444c,_0x28490e){odbc['open'](_0x37b833,function(_0xc33ec8){if(_0xc33ec8){logger[_0xa6f7('0x29')](_0xa6f7('0x2a'),_0xc33ec8);_0x28490e(_0xc33ec8);}else{logger[_0xa6f7('0x2b')](_0xa6f7('0x2c'));odbc[_0xa6f7('0x2d')](_0x14444c,function(_0x45acdd,_0x12d966){if(_0x45acdd){logger['info'](_0xa6f7('0x2e'),_0x14444c);_0x28490e(_0x45acdd);}else{logger[_0xa6f7('0x2b')](_0xa6f7('0x2f'),_0x14444c);odbc['close'](function(_0x2550f8){if(_0x2550f8){logger[_0xa6f7('0x29')]('Error\x20closing\x20connection\x20to\x20odbc\x20%s',_0x2550f8);}_0x28490e(null,_0x12d966);});}});}});};AGIVertices[_0xa6f7('0x11')][_0xa6f7('0x30')]=function(_0x3ecb88,_0x14d532){this[_0xa6f7('0x19')]['getSmsAccountById'](_0x3ecb88)[_0xa6f7('0x14')](function(_0x1ce691){_0x14d532(null,_0x1ce691?_0x1ce691:![]);})[_0xa6f7('0x18')](function(_0x1b8bf3){_0x14d532(_0x1b8bf3);});};AGIVertices[_0xa6f7('0x11')][_0xa6f7('0x31')]=function(_0x393eed,_0x3bd87c){this['rpc']['createSmsMessage'](_0x393eed)[_0xa6f7('0x14')](function(_0x3e1535){_0x3bd87c(null,_0x3e1535);})[_0xa6f7('0x18')](function(_0x2546a3){_0x3bd87c(_0x2546a3);});};AGIVertices[_0xa6f7('0x11')][_0xa6f7('0x32')]=function(_0x21fdd7,_0x404552,_0x40bd08){this[_0xa6f7('0x19')]['createSquareDetailsReport']({'uniqueid':this[_0xa6f7('0x10')][_0xa6f7('0x33')],'node':_0x21fdd7['label'],'application':_0x21fdd7[_0xa6f7('0x34')],'data':_0x404552||null,'project_name':this[_0xa6f7('0x10')][_0xa6f7('0x35')],'callerid':this[_0xa6f7('0x10')]['callerid']})[_0xa6f7('0x14')](function(_0x4aaffc){if(_0x40bd08){_0x40bd08(null,_0x4aaffc);}})['catch'](function(_0xd0ca79){if(_0x40bd08){_0x40bd08(_0xd0ca79);}});};AGIVertices[_0xa6f7('0x11')][_0xa6f7('0x36')]=function(_0x148bdf,_0x386200,_0x1313dc,_0x979a33){this['rpc'][_0xa6f7('0x36')]({'uniqueid':this[_0xa6f7('0x10')]['uniqueid'],'callerid':this[_0xa6f7('0x10')][_0xa6f7('0x37')],'calleridname':this[_0xa6f7('0x10')]['calleridname'],'context':this[_0xa6f7('0x10')]['context'],'extension':this[_0xa6f7('0x10')][_0xa6f7('0x38')],'priority':this[_0xa6f7('0x10')]['priority'],'accountcode':this['channel'][_0xa6f7('0x39')],'dnid':this['channel'][_0xa6f7('0x3a')],'projectName':this['channel']['arg_1'],'saveName':_0x386200,'filename':_0x148bdf[_0xa6f7('0x3b')]||_0x386200,'savePath':_0x1313dc})[_0xa6f7('0x14')](function(_0x350071){_0x979a33(null,_0x350071);})[_0xa6f7('0x18')](function(_0x151de5){_0x979a33(_0x151de5);});};AGIVertices[_0xa6f7('0x11')]['createSquareMessage']=function(_0x4032fc,_0x328b47,_0x58080f,_0x190b1d,_0x4d7f2d){this[_0xa6f7('0x19')]['createSquareMessage']({'uniqueid':this['channel'][_0xa6f7('0x33')],'body':_0x4032fc,'direction':_0x328b47,'providerName':_0x58080f,'providerResponse':_0x190b1d})[_0xa6f7('0x14')](function(_0x1c9f38){if(_0x4d7f2d){_0x4d7f2d(null,_0x1c9f38);}})[_0xa6f7('0x18')](function(_0x16d6b1){if(_0x4d7f2d){_0x4d7f2d(_0x16d6b1);}});};AGIVertices['prototype'][_0xa6f7('0x3c')]=function(_0x34de29,_0x5cddc9){this[_0xa6f7('0x19')]['createCmContact']({'firstName':_[_0xa6f7('0x3d')](_0x34de29[_0xa6f7('0x15')])||_[_0xa6f7('0x3e')](_0x34de29['name'])?_0xa6f7('0x3f')+Math['random']():_0x34de29[_0xa6f7('0x15')],'lastName':_[_0xa6f7('0x3d')](_0x34de29[_0xa6f7('0x40')])||_[_0xa6f7('0x3e')](_0x34de29[_0xa6f7('0x40')])?null:_0x34de29['lastName'],'phone':_0x34de29['phone'],'ListId':_0x34de29[_0xa6f7('0x41')],'scheduledat':_0x34de29[_0xa6f7('0x42')],'callbackUniqueid':this[_0xa6f7('0x10')][_0xa6f7('0x33')],'tags':'callback','description':_0xa6f7('0x43')+_0x34de29[_0xa6f7('0x42')][_0xa6f7('0x44')](),'priority':_0x34de29[_0xa6f7('0x45')]})[_0xa6f7('0x14')](function(_0x39538e){_0x5cddc9(null,_0x39538e);})['catch'](function(_0x3cc2ae){_0x5cddc9(_0x3cc2ae);});};AGIVertices[_0xa6f7('0x11')][_0xa6f7('0x46')]=function(_0x5eac88,_0xb049d7){this[_0xa6f7('0x19')][_0xa6f7('0x47')](_0x5eac88)[_0xa6f7('0x14')](function(_0x5908e3){_0xb049d7(null,_0x5908e3?_0x5908e3['name']:![]);})[_0xa6f7('0x18')](function(_0x134e23){_0xb049d7(_0x134e23);});};AGIVertices[_0xa6f7('0x11')][_0xa6f7('0x48')]=function(_0x301327,_0x269249,_0x1fcb72){var _0x5efd49={'role':_0xa6f7('0x49')};_0x5efd49[_0x301327]=this[_0xa6f7('0x10')][_0xa6f7('0x37')];this[_0xa6f7('0x19')][_0xa6f7('0x48')](_0x5efd49,_0x269249,this[_0xa6f7('0x10')][_0xa6f7('0x33')])[_0xa6f7('0x14')](function(_0x444177){_0x1fcb72(null,_[_0xa6f7('0x3e')](_0x444177)?![]:!![]);})[_0xa6f7('0x18')](function(_0x5719fb){logger[_0xa6f7('0x29')](_0x5719fb);_0x1fcb72(null,![]);});};AGIVertices['prototype'][_0xa6f7('0x4a')]=function(_0x47a2b1,_0x3a5522){var _0x2a3ba7={'role':'agent'};_0x2a3ba7[_0x47a2b1]=this[_0xa6f7('0x10')][_0xa6f7('0x37')];this[_0xa6f7('0x19')]['agentUnpause'](_0x2a3ba7)[_0xa6f7('0x14')](function(_0x59f12b){_0x3a5522(null,_[_0xa6f7('0x3e')](_0x59f12b)?![]:!![]);})[_0xa6f7('0x18')](function(_0x548bed){logger[_0xa6f7('0x29')](_0x548bed);_0x3a5522(null,![]);});};AGIVertices['prototype'][_0xa6f7('0x4b')]=function(_0x5b5c75,_0x14f28e){var _0x341dd6={'role':_0xa6f7('0x49')};_0x341dd6[_0x5b5c75]=this[_0xa6f7('0x10')][_0xa6f7('0x37')];this[_0xa6f7('0x19')][_0xa6f7('0x4b')](_0x341dd6)[_0xa6f7('0x14')](function(_0x153635){_0x14f28e(null,_[_0xa6f7('0x3e')](_0x153635)?![]:!![]);})[_0xa6f7('0x18')](function(_0x41545e){logger['error'](_0x41545e);_0x14f28e(null,![]);});};AGIVertices[_0xa6f7('0x11')][_0xa6f7('0x4c')]=function(_0xc8cdff,_0x466bb6){var _0x154c78={'role':_0xa6f7('0x49')};_0x154c78[_0xc8cdff]=this[_0xa6f7('0x10')][_0xa6f7('0x37')];var _0x5c4da5=_0xc8cdff!=_0xa6f7('0x4d')?util[_0xa6f7('0x4e')](_0xa6f7('0x4f'),'LOCAL',this[_0xa6f7('0x10')][_0xa6f7('0x37')]):undefined;this[_0xa6f7('0x19')][_0xa6f7('0x4c')](_0x154c78,_0x5c4da5)[_0xa6f7('0x14')](function(_0x342d87){_0x466bb6(null,_[_0xa6f7('0x3e')](_0x342d87)?![]:!![]);})[_0xa6f7('0x18')](function(_0x4c1af7){logger['error'](_0x4c1af7);_0x466bb6(null,![]);});};AGIVertices[_0xa6f7('0x11')][_0xa6f7('0x50')]=function(_0x5e6d94,_0x3aa759){sh[_0xa6f7('0x51')](_[_0xa6f7('0x52')](_0x5e6d94),function(_0x5a5d18,_0xbc3af0){var _0x48d5ad=_0xbc3af0['replace'](/(\r\n|\n|\r)/gm,'');_0x3aa759(null,_0x48d5ad);});};AGIVertices['prototype']['googleCloudTTS']=function(_0x522e5d,_0x39ba3d){scripts[_0xa6f7('0x53')](_0x522e5d[_0xa6f7('0x54')],_0x522e5d['google_cloud_tts_text_type']||_0xa6f7('0x55'),_0x522e5d[_0xa6f7('0x55')],_0x522e5d[_0xa6f7('0x56')]||_0xa6f7('0x57'),_0x522e5d[_0xa6f7('0x58')]||_0xa6f7('0x59'),_0x522e5d[_0xa6f7('0x5a')]||_0xa6f7('0x5b'))[_0xa6f7('0x14')](function(_0x2a73ae){_0x39ba3d(null,_0x2a73ae);})['catch'](function(_0x1103ff){_0x39ba3d(_0x1103ff);});};AGIVertices[_0xa6f7('0x11')][_0xa6f7('0x5c')]=function(_0x380b79,_0x1637d3){scripts[_0xa6f7('0x5c')](_0x380b79[_0xa6f7('0x55')],_0x380b79[_0xa6f7('0x5d')]||'en',0x1)[_0xa6f7('0x14')](function(_0x26435d){_0x1637d3(null,_0x26435d);})[_0xa6f7('0x18')](function(_0x5327ca){_0x1637d3(_0x5327ca);});};AGIVertices['prototype'][_0xa6f7('0x5e')]=function(_0x2b3042,_0x3ba166){var _0x53c199={'uri':_0x2b3042[_0xa6f7('0x5f')],'method':_0x2b3042[_0xa6f7('0x60')],'json':!![],'resolveWithFullResponse':!![],'strictSSL':![],'timeout':typeof parseInt(_0x2b3042['timeout'])===_0xa6f7('0x61')&&parseInt(_0x2b3042[_0xa6f7('0x62')])>=0x1?parseInt(_0x2b3042['timeout'])*0x3e8:0x5*0x3e8};if(_['includes']([_0xa6f7('0x63'),'PUT'],_0x53c199[_0xa6f7('0x60')][_0xa6f7('0x64')]())){try{_0x53c199['body']=_0x2b3042['rawBody']?JSON[_0xa6f7('0x65')](_0x2b3042[_0xa6f7('0xe')]):{};}catch(_0x122608){logger['error'](_0xa6f7('0x66'),_0x122608);}}try{_0x53c199[_0xa6f7('0x67')]=_0x2b3042[_0xa6f7('0xd')]?JSON[_0xa6f7('0x65')](_0x2b3042[_0xa6f7('0xd')]):{};}catch(_0x282e79){logger[_0xa6f7('0x29')](_0xa6f7('0x68'),_0x282e79);}if(_0x2b3042[_0xa6f7('0x69')]){try{var _0x1f4f19=require(_0x2b3042[_0xa6f7('0x69')])['sync'](this,_0x53c199);_0x53c199[_0xa6f7('0x6a')]=Mustache[_0xa6f7('0x6b')](_0x2b3042[_0xa6f7('0x5f')],_0x1f4f19,{},['$$','$$']);if(_0x53c199[_0xa6f7('0x67')]){_0x53c199[_0xa6f7('0x67')]=JSON[_0xa6f7('0x65')](Mustache['render'](JSON[_0xa6f7('0x6c')](_0x53c199[_0xa6f7('0x67')]),_0x1f4f19,{},['$$','$$']));}if(_0x53c199[_0xa6f7('0x6d')]){_0x53c199[_0xa6f7('0x6d')]=JSON[_0xa6f7('0x65')](Mustache[_0xa6f7('0x6b')](JSON['stringify'](_0x53c199['body']),_0x1f4f19,{},['$$','$$']));}}catch(_0x7ff027){logger[_0xa6f7('0x29')](_0xa6f7('0x6e'),_0x7ff027);}}rp(_0x53c199)[_0xa6f7('0x14')](function(_0x12d120){var _0x4b4009={'statusCode':_0x12d120[_0xa6f7('0x6f')]||0xc8,'statusMessage':_0x12d120['statusMessage']||'OK','headers':_0x12d120[_0xa6f7('0x67')]||{},'body':_0x12d120[_0xa6f7('0x6d')]||{}};_0x3ba166(null,_0x4b4009);})['catch'](function(_0x47951a){var _0x24c1f7={'statusCode':_0x47951a['statusCode']||0x1f4,'statusMessage':_0x47951a['message']||_0xa6f7('0x70'),'headers':_0x47951a[_0xa6f7('0x71')][_0xa6f7('0x67')]||{},'body':_0x47951a[_0xa6f7('0x71')]['body']||{}};_0x3ba166(null,_0x24c1f7);});};AGIVertices[_0xa6f7('0x11')][_0xa6f7('0x72')]=function(_0x74eb68,_0x143a3a){scripts[_0xa6f7('0x72')](this[_0xa6f7('0x10')]['uniqueid'],_0x74eb68[_0xa6f7('0x73')],_0x74eb68['text'],_0x74eb68['dialogflow_language']||'en')[_0xa6f7('0x14')](function(_0x30b0b1){_0x143a3a(null,_0x30b0b1);})['catch'](function(_0x46a8bd){_0x143a3a(_0x46a8bd);});};AGIVertices[_0xa6f7('0x11')][_0xa6f7('0x74')]=function(_0x55b65f,_0x27618d){scripts['googleDialogflowV2'](this[_0xa6f7('0x10')][_0xa6f7('0x33')],_0x55b65f['dialogflowV2_project_id'],_0x55b65f[_0xa6f7('0x75')],_0x55b65f['private_key'],_0x55b65f[_0xa6f7('0x55')],_0x55b65f[_0xa6f7('0x76')]||'en')['then'](function(_0xf43bd1){_0x27618d(null,_0xf43bd1);})[_0xa6f7('0x18')](function(_0x1afd68){_0x27618d(_0x1afd68);});};AGIVertices[_0xa6f7('0x11')][_0xa6f7('0x77')]=function(_0x486eee,_0x6590a0){scripts[_0xa6f7('0x77')](this[_0xa6f7('0x10')],_0x486eee)[_0xa6f7('0x14')](function(_0x5c66e6){_0x6590a0(null,_0x5c66e6);})[_0xa6f7('0x18')](function(_0x3576eb){_0x6590a0(_0x3576eb);});};AGIVertices[_0xa6f7('0x11')][_0xa6f7('0x78')]=function(_0x4362d8,_0x3cef0f){scripts[_0xa6f7('0x78')](_0x4362d8[_0xa6f7('0x73')],_0x4362d8['text'],_0x4362d8[_0xa6f7('0x79')]||_0xa6f7('0x57'),_0x4362d8['speed'])[_0xa6f7('0x14')](function(_0x5485ac){_0x3cef0f(null,_0x5485ac);})[_0xa6f7('0x18')](function(_0xc7b634){_0x3cef0f(_0xc7b634);});};AGIVertices[_0xa6f7('0x11')][_0xa6f7('0x7a')]=function(_0x1c1884,_0x32c7e4,_0x278ac6){scripts[_0xa6f7('0x7a')](_0x32c7e4,_0x1c1884['key'],_0x1c1884['ispeech_asr_language']||_0xa6f7('0x57'),this[_0xa6f7('0x7b')](_0x1c1884[_0xa6f7('0x7c')])?_0x1c1884[_0xa6f7('0x7c')]:undefined)['then'](function(_0x27a82e){_0x278ac6(null,_0x27a82e);})[_0xa6f7('0x18')](function(_0x5b87be){_0x278ac6(_0x5b87be);});};AGIVertices['prototype'][_0xa6f7('0x7d')]=function(_0x3b8deb,_0x51b0bb){scripts['awsPolly'](_0x3b8deb[_0xa6f7('0x7e')],_0x3b8deb[_0xa6f7('0x7f')],_0x3b8deb['aws_polly_region'],_0x3b8deb[_0xa6f7('0x80')]||'Amy',_0x3b8deb[_0xa6f7('0x55')],_0x3b8deb[_0xa6f7('0x81')]||'text')[_0xa6f7('0x14')](function(_0x262c5c){_0x51b0bb(null,_0x262c5c);})['catch'](function(_0x1fb9db){_0x51b0bb(_0x1fb9db);});};AGIVertices[_0xa6f7('0x11')][_0xa6f7('0x82')]=function(_0x558960,_0x43946a){scripts[_0xa6f7('0x82')](this[_0xa6f7('0x10')][_0xa6f7('0x33')],_0x558960['aws_access_key_id'],_0x558960[_0xa6f7('0x7f')],_0x558960[_0xa6f7('0x83')],_0x558960[_0xa6f7('0x55')],_0x558960[_0xa6f7('0x84')])[_0xa6f7('0x14')](function(_0x3c7fc2){_0x43946a(null,_0x3c7fc2);})[_0xa6f7('0x18')](function(_0x826172){_0x43946a(_0x826172);});};AGIVertices[_0xa6f7('0x11')][_0xa6f7('0x85')]=function(_0x40f336,_0x1fad51,_0x1aa692){scripts[_0xa6f7('0x85')](_0x1fad51,_0x40f336[_0xa6f7('0x73')],_0x40f336[_0xa6f7('0x86')]||_0xa6f7('0x57'))[_0xa6f7('0x14')](function(_0x2cefa1){_0x1aa692(null,_0x2cefa1);})[_0xa6f7('0x18')](function(_0x3958fa){_0x1aa692(_0x3958fa);});};AGIVertices[_0xa6f7('0x11')]['tildeASR']=function(_0x13e2e6,_0x1f5145,_0x24cb86){scripts['tildeASR'](_0x1f5145,_0x13e2e6[_0xa6f7('0x87')],_0x13e2e6[_0xa6f7('0x88')],_0x13e2e6[_0xa6f7('0x6a')])[_0xa6f7('0x14')](function(_0x2a5bc4){_0x24cb86(null,_0x2a5bc4);})['catch'](function(_0x40473f){_0x24cb86(_0x40473f);});};AGIVertices[_0xa6f7('0x11')][_0xa6f7('0x89')]=function(_0x3282ea){var _0x4a15e2=_[_0xa6f7('0x8a')](verticesWithRetry,_0x3282ea['agicommand'])?_0x3282ea:_['clone'](_0x3282ea);for(var _0x2c70ee in _0x4a15e2){if(_0x4a15e2[_0xa6f7('0x8b')](_0x2c70ee)){if(_0x4a15e2[_0x2c70ee]&&_['isString'](_0x4a15e2[_0x2c70ee])){if(_[_0xa6f7('0x8a')](recursiveMapAttributes,_0x2c70ee)){_0x4a15e2[_0x2c70ee]=this[_0xa6f7('0x8c')](_0x4a15e2[_0x2c70ee]);}else{_0x4a15e2[_0x2c70ee]=this[_0xa6f7('0x8d')](_0x4a15e2[_0x2c70ee]);}}}}return _0x4a15e2;};AGIVertices['prototype']['recursiveNodeIndex']=function(_0x3caa8f){for(var _0x48f152 in _0x3caa8f){if(_0x3caa8f[_0xa6f7('0x8b')](_0x48f152)){if(_[_0xa6f7('0x8e')](_0x3caa8f[_0x48f152])){this[_0xa6f7('0x8f')](_0x3caa8f[_0x48f152]);}else if(_[_0xa6f7('0x90')](_0x3caa8f[_0x48f152])){for(var _0xeca418=0x0;_0xeca418<_0x3caa8f[_0x48f152][_0xa6f7('0x91')];_0xeca418++){this[_0xa6f7('0x8f')](_0x3caa8f[_0x48f152][_0xeca418]);}}else if(_[_0xa6f7('0x92')](_0x3caa8f[_0x48f152])){_0x3caa8f[_0x48f152]=this[_0xa6f7('0x8d')](_0x3caa8f[_0x48f152]);}}}};AGIVertices[_0xa6f7('0x11')]['saveRestApiResult']=function(_0x23e338,_0x18d5c4){for(var _0x421158 in _0x23e338){if(_0x23e338[_0xa6f7('0x8b')](_0x421158)){if(_[_0xa6f7('0x8e')](_0x23e338[_0x421158])){if(!_[_0xa6f7('0x3d')](_0x23e338[_0x421158])){this[_0xa6f7('0x93')](_0x23e338[_0x421158],util[_0xa6f7('0x4e')](_0xa6f7('0x94'),_0x18d5c4,_0x421158));}}else if(_[_0xa6f7('0x90')](_0x23e338[_0x421158])){for(var _0x540a1f=0x0;_0x540a1f<_0x23e338[_0x421158][_0xa6f7('0x91')];_0x540a1f++){this[_0xa6f7('0x93')](_0x23e338[_0x421158][_0x540a1f],util[_0xa6f7('0x4e')](_0xa6f7('0x94'),_0x18d5c4,_0x421158+'['+_0x540a1f+']'));}}else{if(!_['isNil'](_0x23e338[_0x421158])){this[_0xa6f7('0x10')][_0xa6f7('0x95')](util[_0xa6f7('0x4e')](_0xa6f7('0x94'),_0x18d5c4,_0x421158),_0x23e338[_0x421158]);}}}}};AGIVertices[_0xa6f7('0x11')][_0xa6f7('0x8c')]=function(_0x4568c4){try{var _0x164230=JSON[_0xa6f7('0x65')](_0x4568c4);this[_0xa6f7('0x8f')](_0x164230);return JSON[_0xa6f7('0x6c')](_0x164230);}catch(_0x2e14d4){return this[_0xa6f7('0x8d')](_0x4568c4);}};AGIVertices['prototype'][_0xa6f7('0x8d')]=function(_0x2e8f36){var _0x2684b0=_0x2e8f36[_0xa6f7('0x96')]('{');for(var _0x5a3e46=0x1;_0x5a3e46<_0x2684b0[_0xa6f7('0x91')];_0x5a3e46+=0x1){var _0x2d5000=_0x2684b0[_0x5a3e46][_0xa6f7('0x96')]('}');if(_0x2d5000[_0xa6f7('0x91')]>0x1){_0x2e8f36=_0x2e8f36['replaceAll']('{'+_0x2d5000[0x0]+'}',this[_0xa6f7('0x10')][_0xa6f7('0x12')](_0x2d5000[0x0])['extra']||_0x2d5000[0x0]);}}if(_0x2684b0[_0xa6f7('0x91')]===0x1){return _0x2e8f36[_0xa6f7('0x44')]();}return this[_0xa6f7('0x8d')](_0x2e8f36);};AGIVertices[_0xa6f7('0x11')][_0xa6f7('0x97')]=function(_0x354652,_0x5506cb){var _0x1cf014=this['channel'][_0xa6f7('0x12')](_0x354652);if(_0x1cf014[_0xa6f7('0x98')]===-0x1){return _0x1cf014;}logger[_0xa6f7('0x2b')](util['format'](_0xa6f7('0x99'),_0x5506cb,_0x1cf014[_0xa6f7('0x9a')]));return this[_0xa6f7('0x10')][_0xa6f7('0x95')](_0x5506cb,_0x1cf014['extra']);};AGIVertices['prototype'][_0xa6f7('0x7b')]=function(_0x89ed7a){return _0x89ed7a&&_0x89ed7a!=='0'&&_0x89ed7a!=='-1'&&_0x89ed7a!=='';};AGIVertices[_0xa6f7('0x11')]['maxRetry']=function(_0x3b3881){this['createSquareDetailsReport']['sync'](this,_0x3b3881,'-');_0x3b3881['retry']=_0x3b3881[_0xa6f7('0x9b')];return{'code':0xc8,'result':'-'};};AGIVertices[_0xa6f7('0x11')][_0xa6f7('0x9c')]=function(_0x332f8f){logger['info'](util[_0xa6f7('0x4e')](_0xa6f7('0x9d'),_0x332f8f['label']));if(!this[_0xa6f7('0x7b')](_0x332f8f[_0xa6f7('0x55')])){return this[_0xa6f7('0x10')][_0xa6f7('0x9e')](_0xa6f7('0x9f'));}var _0xc2ac63='\x22'+_0x332f8f[_0xa6f7('0x55')]+'\x22';if(this[_0xa6f7('0x7b')](_0x332f8f['options'])){_0xc2ac63+=','+_0x332f8f['options'];}var _0x3966c5=this[_0xa6f7('0x10')][_0xa6f7('0x51')](_0xa6f7('0xa0'),_0xc2ac63);if(_0x3966c5[_0xa6f7('0x98')]===-0x1){return _0x3966c5;}return this[_0xa6f7('0x10')][_0xa6f7('0x9e')](util[_0xa6f7('0x4e')](_0xa6f7('0xa1'),_0xc2ac63));};AGIVertices[_0xa6f7('0x11')][_0xa6f7('0xa2')]=function(_0x413671){logger[_0xa6f7('0x2b')](util[_0xa6f7('0x4e')]('Enter\x20in\x20MRCPRecog\x20(%s)\x20block',_0x413671[_0xa6f7('0xa3')]));if(!this['isConfigured'](_0x413671[_0xa6f7('0xa4')])){return this[_0xa6f7('0x10')][_0xa6f7('0x9e')](_0xa6f7('0xa5'));}var _0x235b12=_0x413671[_0xa6f7('0xa4')];if(this['isConfigured'](_0x413671[_0xa6f7('0x71')])){_0x235b12+=','+_0x413671[_0xa6f7('0x71')];}var _0x3b6bc0=this['channel'][_0xa6f7('0x51')]('MRCPRecog',_0x235b12);if(_0x3b6bc0[_0xa6f7('0x98')]===-0x1){return _0x3b6bc0;}var _0x12b2f4=this['getAndSetVariable']('RECOG_CONFIDENCE()','MRCP_RECOG_CONFIDENCE');if(_0x12b2f4[_0xa6f7('0x98')]===-0x1){return _0x12b2f4;}var _0x289edd=this['getAndSetVariable']('RECOG_INPUT()',_0xa6f7('0xa6'));if(_0x289edd[_0xa6f7('0x98')]===-0x1){return _0x289edd;}var _0x491429=this[_0xa6f7('0x97')](_0xa6f7('0xa7'),'MRCP_RECOG_INSTANCE');if(_0x491429[_0xa6f7('0x98')]===-0x1){return _0x491429;}return this[_0xa6f7('0x10')][_0xa6f7('0x9e')](util[_0xa6f7('0x4e')](_0xa6f7('0xa8'),_0x235b12));};AGIVertices['prototype'][_0xa6f7('0x8')]=function(_0x572b06){logger[_0xa6f7('0x2b')](util[_0xa6f7('0x4e')](_0xa6f7('0xa9'),_0x572b06['label']));return this[_0xa6f7('0x10')][_0xa6f7('0x8')]([_0x572b06[_0xa6f7('0xaa')],_0x572b06['args']]);};AGIVertices[_0xa6f7('0x11')][_0xa6f7('0xab')]=function(_0x42d852){logger[_0xa6f7('0x2b')](util['format']('Enter\x20in\x20ANSWER\x20(%s)\x20block',_0x42d852['label']));if(this[_0xa6f7('0x7b')](_0x42d852[_0xa6f7('0x62')])){logger[_0xa6f7('0x2b')](util['format'](_0xa6f7('0xac'),_0x42d852[_0xa6f7('0x62')]));var _0x4c8cbc=this['channel'][_0xa6f7('0xad')](_0x42d852['timeout']);if(_0x4c8cbc['result']===-0x1){return _0x4c8cbc;}}return this[_0xa6f7('0x10')][_0xa6f7('0xab')]();};AGIVertices[_0xa6f7('0x11')][_0xa6f7('0xae')]=function(_0x591bd8){logger[_0xa6f7('0x2b')](util[_0xa6f7('0x4e')](_0xa6f7('0xaf'),_0x591bd8[_0xa6f7('0xa3')]));if(!this['isConfigured'](_0x591bd8['list_id'])){return this[_0xa6f7('0x10')]['error'](_0x591bd8,_0xa6f7('0xb0'));}_0x591bd8[_0xa6f7('0x42')]=moment();if(this[_0xa6f7('0x7b')](_0x591bd8['delay'])){_0x591bd8['scheduledAt']=moment()['add'](_0x591bd8[_0xa6f7('0xb1')],_0xa6f7('0xb2'));}if(!this['isConfigured'](_0x591bd8['callback_priority'])){_0x591bd8['callback_priority']=0x2;}this['createCmContact']['sync'](this,_0x591bd8);return this[_0xa6f7('0x10')][_0xa6f7('0x9e')](util[_0xa6f7('0x4e')](_0xa6f7('0xb3'),_0x591bd8[_0xa6f7('0xb4')],_0x591bd8[_0xa6f7('0x41')],_0x591bd8[_0xa6f7('0x42')]));};AGIVertices[_0xa6f7('0x11')]['custom_app']=function(_0x551d82){logger[_0xa6f7('0x2b')](util[_0xa6f7('0x4e')](_0xa6f7('0xb5'),_0x551d82[_0xa6f7('0xa3')]));var _0x23f51a=this[_0xa6f7('0x10')][_0xa6f7('0x51')](_0x551d82[_0xa6f7('0xb6')],_0x551d82[_0xa6f7('0x71')]);if(_0x23f51a[_0xa6f7('0x98')]===-0x1){return _0x23f51a;}return this[_0xa6f7('0x10')][_0xa6f7('0x9e')](util[_0xa6f7('0x4e')](_0xa6f7('0xb7'),_0x551d82['application'],_0x551d82['options']));};AGIVertices[_0xa6f7('0x11')]['lumenvoxtts']=function(_0x596382){logger[_0xa6f7('0x2b')](util[_0xa6f7('0x4e')](_0xa6f7('0xb8'),_0x596382[_0xa6f7('0xa3')]));if(!this['isConfigured'](_0x596382[_0xa6f7('0x55')])){return this[_0xa6f7('0x10')]['noop'](_0xa6f7('0x9f'));}var _0x2efae1='\x22'+_0x596382['text']+'\x22';if(this[_0xa6f7('0x7b')](_0x596382[_0xa6f7('0x71')])){_0x2efae1+=','+_0x596382[_0xa6f7('0x71')];}var _0x1f274b=this['channel'][_0xa6f7('0x51')](_0xa6f7('0xa0'),_0x2efae1);if(_0x1f274b[_0xa6f7('0x98')]===-0x1){return _0x1f274b;}return this[_0xa6f7('0x10')]['noop'](util[_0xa6f7('0x4e')](_0xa6f7('0xa1'),_0x2efae1));};AGIVertices[_0xa6f7('0x11')][_0xa6f7('0xb9')]=function(_0x2bab09){logger[_0xa6f7('0x2b')](util['format']('Enter\x20in\x20SESTEKTTS\x20(%s)\x20block',_0x2bab09[_0xa6f7('0xa3')]));if(!this['isConfigured'](_0x2bab09['text'])){return this[_0xa6f7('0x10')]['noop']('no\x20text\x20configured');}var _0xa0b9a4='\x22'+_0x2bab09[_0xa6f7('0x55')]+'\x22';if(this[_0xa6f7('0x7b')](_0x2bab09[_0xa6f7('0x71')])){_0xa0b9a4+=','+_0x2bab09[_0xa6f7('0x71')];}var _0x435cdc=this[_0xa6f7('0x10')][_0xa6f7('0x51')](_0xa6f7('0xa0'),_0xa0b9a4);if(_0x435cdc[_0xa6f7('0x98')]===-0x1){return _0x435cdc;}return this[_0xa6f7('0x10')]['noop'](util[_0xa6f7('0x4e')](_0xa6f7('0xa1'),_0xa0b9a4));};AGIVertices[_0xa6f7('0x11')][_0xa6f7('0xba')]=function(_0x4aa35b){logger[_0xa6f7('0x2b')](util['format']('Enter\x20in\x20LUMENVOXASR\x20(%s)\x20block',_0x4aa35b['label']));if(!this[_0xa6f7('0x7b')](_0x4aa35b['grammar'])){return this[_0xa6f7('0x10')]['noop']('no\x20grammar\x20configured');}var _0x564cdf=_0x4aa35b[_0xa6f7('0xa4')];if(this[_0xa6f7('0x7b')](_0x4aa35b[_0xa6f7('0x71')])){_0x564cdf+=','+_0x4aa35b['options'];}var _0x3d22fb=this[_0xa6f7('0x10')][_0xa6f7('0x51')](_0xa6f7('0xbb'),_0x564cdf);if(_0x3d22fb['result']===-0x1){return _0x3d22fb;}var _0x48b925=this[_0xa6f7('0x97')](_0xa6f7('0xbc'),'LUMENVOX_ASR_CONFIDENCE');if(_0x48b925[_0xa6f7('0x98')]===-0x1){return _0x48b925;}var _0x1541bc=this['getAndSetVariable'](_0xa6f7('0xbd'),'LUMENVOX_ASR_TRANSCRIPT');if(_0x1541bc[_0xa6f7('0x98')]===-0x1){return _0x1541bc;}var _0xf6c4b4=this[_0xa6f7('0x97')]('RECOG_INSTANCE()',_0xa6f7('0xbe'));if(_0xf6c4b4[_0xa6f7('0x98')]===-0x1){return _0xf6c4b4;}return this[_0xa6f7('0x10')][_0xa6f7('0x9e')](util[_0xa6f7('0x4e')](_0xa6f7('0xa8'),_0x564cdf));};AGIVertices[_0xa6f7('0x11')][_0xa6f7('0xbf')]=function(_0x5787ba){logger[_0xa6f7('0x2b')](util[_0xa6f7('0x4e')]('Enter\x20in\x20SESTEKASR\x20(%s)\x20block',_0x5787ba[_0xa6f7('0xa3')]));if(!this[_0xa6f7('0x7b')](_0x5787ba[_0xa6f7('0xa4')])){return this['channel']['noop'](_0xa6f7('0xa5'));}var _0x3fa3bf=_0x5787ba[_0xa6f7('0xa4')];if(this[_0xa6f7('0x7b')](_0x5787ba[_0xa6f7('0x71')])){_0x3fa3bf+=','+_0x5787ba[_0xa6f7('0x71')];}var _0x2c5bb7=this[_0xa6f7('0x10')][_0xa6f7('0x51')]('MRCPRecog',_0x3fa3bf);if(_0x2c5bb7[_0xa6f7('0x98')]===-0x1){return _0x2c5bb7;}var _0x3b1d53=this[_0xa6f7('0x97')](_0xa6f7('0xbc'),'SESTEK_ASR_CONFIDENCE');if(_0x3b1d53[_0xa6f7('0x98')]===-0x1){return _0x3b1d53;}var _0x2ebe7a=this[_0xa6f7('0x97')]('RECOG_INPUT()',_0xa6f7('0xc0'));if(_0x2ebe7a['result']===-0x1){return _0x2ebe7a;}var _0x124d74=this[_0xa6f7('0x97')]('RECOG_INSTANCE()','SESTEK_ASR_INSTANCE');if(_0x124d74[_0xa6f7('0x98')]===-0x1){return _0x124d74;}return this[_0xa6f7('0x10')][_0xa6f7('0x9e')](util[_0xa6f7('0x4e')]('Executed\x20command\x20MRCPRecog\x20%s',_0x3fa3bf));};AGIVertices[_0xa6f7('0x11')][_0xa6f7('0xc1')]=function(_0x20557b){logger[_0xa6f7('0x2b')](util['format']('Enter\x20in\x20DATABASE\x20(%s)\x20block',_0x20557b[_0xa6f7('0xa3')]));if(!this[_0xa6f7('0x7b')](_0x20557b['odbc_id'])){return this[_0xa6f7('0x10')][_0xa6f7('0x29')](_0x20557b,_0xa6f7('0xc2'));}var _0x32372e=this[_0xa6f7('0xc3')][_0xa6f7('0xc4')](this,_0x20557b[_0xa6f7('0xc5')]);if(!_0x32372e){return this[_0xa6f7('0x10')][_0xa6f7('0x29')](_0x20557b,_0xa6f7('0xc6'));}if(!this[_0xa6f7('0x7b')](_0x20557b['query'])){return this[_0xa6f7('0x10')][_0xa6f7('0x29')](_0x20557b,_0xa6f7('0xc7'));}var _0x195997=_0x20557b[_0xa6f7('0x2d')][_0xa6f7('0xc8')](/(\r\n|\n|\r)/gm,'\x20');this[_0xa6f7('0x10')][_0xa6f7('0x9e')](util[_0xa6f7('0x4e')](_0xa6f7('0xc9'),_0x195997));var _0x3800ca=this['getQueryOdbc'][_0xa6f7('0xc4')](this,_0x32372e,_0x195997);this[_0xa6f7('0x32')][_0xa6f7('0xc4')](this,_0x20557b,_0x195997);if(!this[_0xa6f7('0x7b')](_0x20557b[_0xa6f7('0xca')])){return this['channel']['noop'](_0xa6f7('0xcb'));}var _0x29fbba=this[_0xa6f7('0x12')]['sync'](this,_0x20557b[_0xa6f7('0xca')]);if(!_0x29fbba){return this[_0xa6f7('0x10')]['error'](_0x20557b,_0xa6f7('0xcc'));}var _0x709f73=this;_0x3800ca[_0xa6f7('0xcd')](function(_0xaecd42,_0x4ed272){Object[_0xa6f7('0xce')](_0xaecd42)[_0xa6f7('0xcd')](function(_0x5800da){_0x709f73['channel'][_0xa6f7('0x95')](util[_0xa6f7('0x4e')]('%s[%s][%s]',_0x29fbba,_0x4ed272,_0x5800da),_0xaecd42[_0x5800da]);});});this['channel'][_0xa6f7('0x95')](util[_0xa6f7('0x4e')](_0xa6f7('0xcf'),_0x29fbba),_0x3800ca[_0xa6f7('0x91')]);return this[_0xa6f7('0x10')][_0xa6f7('0x9e')](util[_0xa6f7('0x4e')](_0xa6f7('0xd0'),_0x29fbba));};AGIVertices[_0xa6f7('0x11')][_0xa6f7('0xd1')]=function(_0x15e134){logger[_0xa6f7('0xd2')](util['format']('Enter\x20in\x20DIAL\x20(%s)\x20block',_0x15e134[_0xa6f7('0xa3')]));if(!this['isConfigured'](_0x15e134[_0xa6f7('0xd3')])){return this[_0xa6f7('0x10')][_0xa6f7('0x29')](_0x15e134,_0xa6f7('0xd4'));}var _0x2e524f=this[_0xa6f7('0xd5')][_0xa6f7('0xc4')](this,_0x15e134[_0xa6f7('0xd3')]);if(!_0x2e524f){return this[_0xa6f7('0x10')]['error'](_0x15e134,_0xa6f7('0xd6'));}var _0x41e16c=this[_0xa6f7('0x10')][_0xa6f7('0x51')](_0xa6f7('0xd7'),[util[_0xa6f7('0x4e')](_0xa6f7('0xd8'),_0x2e524f),_0x15e134[_0xa6f7('0x62')],_0x15e134['opts'],_0x15e134[_0xa6f7('0x5f')]]);if(_0x41e16c[_0xa6f7('0x98')]===-0x1){return _0x41e16c;}return this[_0xa6f7('0x10')][_0xa6f7('0x9e')](util[_0xa6f7('0x4e')]('Executed\x20command\x20%s',_0xa6f7('0xd7')));};AGIVertices[_0xa6f7('0x11')][_0xa6f7('0xd9')]=function(_0x43b6b0){logger[_0xa6f7('0x2b')](util[_0xa6f7('0x4e')](_0xa6f7('0xda'),_0x43b6b0[_0xa6f7('0xa3')]));if(!this['isConfigured'](_0x43b6b0['key'])){return this[_0xa6f7('0x10')][_0xa6f7('0x9e')](_0xa6f7('0xdb'));}if(!this[_0xa6f7('0x7b')](_0x43b6b0[_0xa6f7('0x55')])){return this[_0xa6f7('0x10')][_0xa6f7('0x9e')]('no\x20text\x20configured');}this['channel']['bot']=!![];this['createSquareDetailsReport'](_0x43b6b0);this[_0xa6f7('0xdc')](_0x43b6b0['text'],'in','','');this[_0xa6f7('0x10')]['noop'](util[_0xa6f7('0x4e')](_0xa6f7('0xdd'),_0x43b6b0[_0xa6f7('0x55')]));var _0x1b0cfc=this[_0xa6f7('0x72')][_0xa6f7('0xc4')](this,_0x43b6b0);if(_0x1b0cfc){for(var _0x89ba11 in _0x1b0cfc){if(_0x1b0cfc['hasOwnProperty'](_0x89ba11)){this[_0xa6f7('0x10')][_0xa6f7('0x95')](util[_0xa6f7('0x4e')](_0xa6f7('0xde'),_0x89ba11[_0xa6f7('0x64')]()),_0x1b0cfc[_0x89ba11]);}}this[_0xa6f7('0xdc')](_0x1b0cfc[_0xa6f7('0xdf')],_0xa6f7('0xe0'),_0xa6f7('0xd9'),'');return this[_0xa6f7('0x10')][_0xa6f7('0x9e')](util[_0xa6f7('0x4e')]('Dialogflow\x20Result\x20%s',_0x1b0cfc[_0xa6f7('0xdf')]));}return this[_0xa6f7('0x10')][_0xa6f7('0x29')](_0x43b6b0,'Dialogflow\x20is\x20unreachable');};AGIVertices['prototype']['dialogflowV2']=function(_0x5eb0cd){logger[_0xa6f7('0x2b')](util[_0xa6f7('0x4e')](_0xa6f7('0xe1'),_0x5eb0cd[_0xa6f7('0xa3')]));if(!this[_0xa6f7('0x7b')](_0x5eb0cd[_0xa6f7('0xe2')])){return this[_0xa6f7('0x10')]['noop'](_0xa6f7('0xe3'));}if(!this[_0xa6f7('0x7b')](_0x5eb0cd[_0xa6f7('0x75')])){return this[_0xa6f7('0x10')][_0xa6f7('0x9e')](_0xa6f7('0xe4'));}if(!this['isConfigured'](_0x5eb0cd['private_key'])){return this[_0xa6f7('0x10')][_0xa6f7('0x9e')]('no\x20private_key\x20configured');}if(!this[_0xa6f7('0x7b')](_0x5eb0cd[_0xa6f7('0x76')])){return this[_0xa6f7('0x10')]['noop']('no\x20anguage\x20configured');}if(!this[_0xa6f7('0x7b')](_0x5eb0cd[_0xa6f7('0x55')])){return this[_0xa6f7('0x10')][_0xa6f7('0x9e')](_0xa6f7('0x9f'));}this['channel'][_0xa6f7('0xe5')]=!![];this[_0xa6f7('0x32')](_0x5eb0cd);this[_0xa6f7('0xdc')](_0x5eb0cd[_0xa6f7('0x55')],'in','','');this[_0xa6f7('0x10')][_0xa6f7('0x9e')](util['format'](_0xa6f7('0xe6'),_0x5eb0cd['text']));var _0x59e2c0=this[_0xa6f7('0x74')][_0xa6f7('0xc4')](this,_0x5eb0cd);if(_0x59e2c0){for(var _0x535b4a in _0x59e2c0){if(_0x59e2c0['hasOwnProperty'](_0x535b4a)){if(_0x535b4a!==_0xa6f7('0xe7')){this[_0xa6f7('0x10')]['setVariable'](util[_0xa6f7('0x4e')](_0xa6f7('0xde'),_0x535b4a['toUpperCase']()),_0x59e2c0[_0x535b4a]);}}}this['createSquareMessage'](_0x59e2c0[_0xa6f7('0xdf')],_0xa6f7('0xe0'),'dialogflowV2',_0x59e2c0[_0xa6f7('0xe7')]);return this[_0xa6f7('0x10')][_0xa6f7('0x9e')](util[_0xa6f7('0x4e')](_0xa6f7('0xe8'),_0x59e2c0[_0xa6f7('0xdf')]));}return this[_0xa6f7('0x10')][_0xa6f7('0x29')](_0x5eb0cd,_0xa6f7('0xe9'));};AGIVertices[_0xa6f7('0x11')]['sesteknda']=function(_0x5ccbe7){logger['info'](util[_0xa6f7('0x4e')](_0xa6f7('0xea'),_0x5ccbe7[_0xa6f7('0xa3')]));if(!this[_0xa6f7('0x7b')](_0x5ccbe7[_0xa6f7('0xeb')])){return this[_0xa6f7('0x10')][_0xa6f7('0x9e')](_0xa6f7('0xec'));}if(!this['isConfigured'](_0x5ccbe7[_0xa6f7('0xed')])){return this['channel']['noop'](_0xa6f7('0xee'));}if(!this[_0xa6f7('0x7b')](_0x5ccbe7['password'])){return this[_0xa6f7('0x10')][_0xa6f7('0x9e')]('no\x20password\x20configured');}if(!this[_0xa6f7('0x7b')](_0x5ccbe7[_0xa6f7('0xef')])){return this[_0xa6f7('0x10')][_0xa6f7('0x9e')](_0xa6f7('0x9f'));}this[_0xa6f7('0x10')][_0xa6f7('0xe5')]=!![];this[_0xa6f7('0x32')](_0x5ccbe7);this[_0xa6f7('0xdc')](_0x5ccbe7['text'],'in','','');this['channel'][_0xa6f7('0x9e')](util['format']('Trying\x20SestekNDA:\x20%s',_0x5ccbe7[_0xa6f7('0x55')]));var _0x203c37=this['sestekNDA'][_0xa6f7('0xc4')](this,_0x5ccbe7);if(_0x203c37){for(var _0x55ef0f in _0x203c37){if(_0x203c37[_0xa6f7('0x8b')](_0x55ef0f)){this[_0xa6f7('0x10')]['setVariable'](util['format']('SESTEK_NDA_%s',_0x55ef0f[_0xa6f7('0x64')]()),_0x203c37[_0x55ef0f]);}}this[_0xa6f7('0xdc')](_0x203c37[_0xa6f7('0xdf')],_0xa6f7('0xe0'),_0xa6f7('0xf0'),'');if(_0x203c37[_0xa6f7('0xf1')]){this[_0xa6f7('0x10')][_0xa6f7('0x9e')](util[_0xa6f7('0x4e')](_0xa6f7('0xf2'),_0x203c37[_0xa6f7('0xf1')]));var _0x5e3a06=this['channel'][_0xa6f7('0xf3')](_0x203c37[_0xa6f7('0xf1')]);try{fs[_0xa6f7('0xf4')](_0x203c37['audiofile']+'.wav');}catch(_0x2b324b){logger[_0xa6f7('0x29')](_0x2b324b);}return _0x5e3a06;}else{return this[_0xa6f7('0x10')][_0xa6f7('0x9e')](util[_0xa6f7('0x4e')](_0xa6f7('0xf5'),_0x203c37[_0xa6f7('0xdf')]));}}return this[_0xa6f7('0x10')][_0xa6f7('0x29')](_0x5ccbe7,'SestekNDA\x20is\x20unreachable');};AGIVertices[_0xa6f7('0x11')][_0xa6f7('0xf6')]=function(_0x2557b2){logger[_0xa6f7('0x2b')](util[_0xa6f7('0x4e')](_0xa6f7('0xf7'),_0x2557b2[_0xa6f7('0xa3')]));return this[_0xa6f7('0x10')][_0xa6f7('0x9e')](_0xa6f7('0xf6'));};AGIVertices['prototype'][_0xa6f7('0xf8')]=function(_0x48539c){logger[_0xa6f7('0x2b')](util['format'](_0xa6f7('0xf9'),_0x48539c[_0xa6f7('0xa3')]));var _0x5a8111='';if(_0x48539c[_0xa6f7('0xfa')]){if(!this[_0xa6f7('0x7b')](_0x48539c[_0xa6f7('0xfa')])){return this[_0xa6f7('0x10')][_0xa6f7('0x29')](_0x48539c,_0xa6f7('0xfb'));}else{var _0x56ccd6=parseInt(_0x48539c['trunk_id'],0xa);if(isNaN(_0x56ccd6)){_0x5a8111=_0x48539c[_0xa6f7('0xfa')];}else{_0x5a8111=this[_0xa6f7('0xfc')][_0xa6f7('0xc4')](this,_0x48539c[_0xa6f7('0xfa')]);if(!_0x5a8111){return this[_0xa6f7('0x10')][_0xa6f7('0x29')](_0x48539c,_0xa6f7('0xfd'));}}}}else if(_0x48539c[_0xa6f7('0xfe')]){_0x5a8111=_0x48539c['trunk_name'];}else{return this[_0xa6f7('0x10')]['error'](_0x48539c,_0xa6f7('0xfb'));}var _0x5c627c=this[_0xa6f7('0x10')][_0xa6f7('0x51')](_0xa6f7('0xd7'),[util['format'](_0xa6f7('0xff'),_0x5a8111,_0x48539c['phone']),_0x48539c[_0xa6f7('0x62')],_0x48539c[_0xa6f7('0x100')],_0x48539c[_0xa6f7('0x5f')]]);if(_0x5c627c['result']===-0x1){return _0x5c627c;}return this[_0xa6f7('0x10')]['noop'](util[_0xa6f7('0x4e')](_0xa6f7('0x101'),_0xa6f7('0xd7')));};AGIVertices[_0xa6f7('0x11')]['finally']=function(_0x4b5ff7){logger[_0xa6f7('0x2b')](util[_0xa6f7('0x4e')]('Enter\x20in\x20FINALLY\x20(%s)\x20block',_0x4b5ff7[_0xa6f7('0xa3')]));return this[_0xa6f7('0x10')]['noop'](_0xa6f7('0x102'));};AGIVertices[_0xa6f7('0x11')][_0xa6f7('0x103')]=function(_0xe3c856){logger['info'](util[_0xa6f7('0x4e')](_0xa6f7('0x104'),_0xe3c856[_0xa6f7('0xa3')]));if(_0xe3c856['retry']===0x0){return this[_0xa6f7('0x9b')](_0xe3c856);}_0xe3c856[_0xa6f7('0x105')]-=0x1;if(!this[_0xa6f7('0x7b')](_0xe3c856['file_id'])){return this['channel'][_0xa6f7('0x29')](_0xe3c856,_0xa6f7('0x106'));}var _0x386211=this[_0xa6f7('0x107')]['sync'](this,_0xe3c856[_0xa6f7('0x108')]);if(!_0x386211){return this[_0xa6f7('0x10')][_0xa6f7('0x29')](_0xe3c856,_0xa6f7('0x109'));}if(!this['isConfigured'](_0xe3c856[_0xa6f7('0xca')])){return this[_0xa6f7('0x10')]['error'](_0xa6f7('0xcb'));}var _0x53d0c1=this[_0xa6f7('0x10')][_0xa6f7('0x10a')](_0x386211,_0xe3c856[_0xa6f7('0x10b')],_0xe3c856[_0xa6f7('0x10c')]);var _0x230ba3=_0x53d0c1[_0xa6f7('0x98')]?_0x53d0c1['result'][_0xa6f7('0x44')]():'';logger['info'](_0xa6f7('0x10d'),JSON['stringify'](_0x53d0c1));if(_0x53d0c1[_0xa6f7('0x98')]===-0x1){this[_0xa6f7('0x32')]['sync'](this,_0xe3c856,_0x230ba3);return _0x53d0c1;}else if(_0x53d0c1['extra']===_0xa6f7('0x62')){_0x53d0c1[_0xa6f7('0x98')]=_0x230ba3[_0xa6f7('0x91')]>=parseInt(_0xe3c856[_0xa6f7('0x10e')])?'x':'i';}else{_0x53d0c1[_0xa6f7('0x98')]=_0x230ba3[_0xa6f7('0x91')]>=parseInt(_0xe3c856[_0xa6f7('0x10e')])&&_0x230ba3[_0xa6f7('0x91')]<=parseInt(_0xe3c856[_0xa6f7('0x10c')])?'x':'i';}var _0x159d15=this[_0xa6f7('0x12')][_0xa6f7('0xc4')](this,_0xe3c856['variable_id']);if(!_0x159d15){return this['channel'][_0xa6f7('0x29')](_0xe3c856,'no\x20variable\x20found');}this[_0xa6f7('0x10')][_0xa6f7('0x95')](_0x159d15,_0x230ba3);if(this[_0xa6f7('0x7b')](_0xe3c856[_0xa6f7('0x10f')])){var _0xf2e935=parseInt(_0xe3c856['hiddendigitsnum'],0xa);var _0x32c9c0=rs['generate']({'charset':'*','length':_0xf2e935});var _0x5c152a=_0x230ba3['length'];if(_0x5c152a>0x0){if(_0x5c152a>_0xf2e935){this[_0xa6f7('0x32')][_0xa6f7('0xc4')](this,_0xe3c856,_0xe3c856['hiddendigitspos']===_0xa6f7('0x110')?_0x32c9c0+_0x230ba3[_0xa6f7('0x111')](_0xf2e935):_0x230ba3['substr'](0x0,_0x5c152a-_0xf2e935)+_0x32c9c0);}else{this['createSquareDetailsReport'][_0xa6f7('0xc4')](this,_0xe3c856,rs['generate']({'charset':'*','length':_0x5c152a}));}}else{this[_0xa6f7('0x32')][_0xa6f7('0xc4')](this,_0xe3c856,'');}}else{this[_0xa6f7('0x32')][_0xa6f7('0xc4')](this,_0xe3c856,_0x230ba3);}return _0x53d0c1;};AGIVertices[_0xa6f7('0x11')]['getsecretdigits']=function(_0x3abb35){logger['info'](util[_0xa6f7('0x4e')](_0xa6f7('0x112'),_0x3abb35[_0xa6f7('0xa3')]));return this[_0xa6f7('0x103')](_0x3abb35);};AGIVertices['prototype'][_0xa6f7('0x113')]=function(_0x4cf058){logger['info'](util['format'](_0xa6f7('0x114'),_0x4cf058['label']));this[_0xa6f7('0x32')][_0xa6f7('0xc4')](this,_0x4cf058,_0x4cf058['goalname']);return this[_0xa6f7('0x10')]['noop'](util[_0xa6f7('0x4e')](_0xa6f7('0x115'),_0x4cf058[_0xa6f7('0x116')]));};AGIVertices['prototype'][_0xa6f7('0x117')]=function(_0x1254a9){logger[_0xa6f7('0x2b')](util[_0xa6f7('0x4e')]('[AGI]\x20Enter\x20in\x20AWSPOLLY\x20(%s)\x20block',_0x1254a9[_0xa6f7('0xa3')]));if(!this[_0xa6f7('0x7b')](_0x1254a9[_0xa6f7('0x7e')])||!this[_0xa6f7('0x7b')](_0x1254a9['aws_secret_access_key'])){return this[_0xa6f7('0x10')][_0xa6f7('0x9e')](_0xa6f7('0x118'));}if(!this[_0xa6f7('0x7b')](_0x1254a9[_0xa6f7('0x55')])){return this['channel'][_0xa6f7('0x9e')]('no\x20text\x20configured');}this['channel']['noop'](util['format']('Trying\x20aws\x20Polly\x20%s',_0x1254a9['text']));var _0x2a251b=this[_0xa6f7('0x7d')][_0xa6f7('0xc4')](this,_0x1254a9);if(_0x2a251b){this[_0xa6f7('0x10')][_0xa6f7('0x9e')](util['format']('aws\x20Polly\x20%s\x20file\x20created',_0x2a251b));var _0x4d4b32=this['channel'][_0xa6f7('0xf3')](_0x2a251b);try{fs[_0xa6f7('0xf4')](_0x2a251b+_0xa6f7('0x119'));}catch(_0x21df22){logger[_0xa6f7('0x29')](_0x21df22);}return _0x4d4b32;}return this['channel']['error'](_0x1254a9,_0xa6f7('0x11a'));};AGIVertices[_0xa6f7('0x11')][_0xa6f7('0x11b')]=function(_0x217d6a){logger['info'](util[_0xa6f7('0x4e')](_0xa6f7('0x11c'),_0x217d6a[_0xa6f7('0xa3')]));if(!this['isConfigured'](_0x217d6a[_0xa6f7('0x7e')])||!this[_0xa6f7('0x7b')](_0x217d6a[_0xa6f7('0x7f')])){return this[_0xa6f7('0x10')][_0xa6f7('0x9e')]('no\x20valid\x20credentials\x20configured');}if(!this[_0xa6f7('0x7b')](_0x217d6a[_0xa6f7('0x84')])){return this['channel']['noop'](_0xa6f7('0x11d'));}if(!this[_0xa6f7('0x7b')](_0x217d6a[_0xa6f7('0x55')])){return this[_0xa6f7('0x10')][_0xa6f7('0x9e')](_0xa6f7('0x9f'));}this['channel'][_0xa6f7('0xe5')]=!![];this['createSquareDetailsReport'](_0x217d6a);this[_0xa6f7('0xdc')](_0x217d6a[_0xa6f7('0x55')],'in','','');this[_0xa6f7('0x10')][_0xa6f7('0x9e')](util[_0xa6f7('0x4e')](_0xa6f7('0x11e'),_0x217d6a[_0xa6f7('0x55')]));var _0x45c51e=this[_0xa6f7('0x82')][_0xa6f7('0xc4')](this,_0x217d6a);if(_0x45c51e){for(var _0x3ec220 in _0x45c51e){if(_0x45c51e[_0xa6f7('0x8b')](_0x3ec220)&&_[_0xa6f7('0x92')](_0x45c51e[_0x3ec220])){this[_0xa6f7('0x10')]['setVariable'](util[_0xa6f7('0x4e')]('AWS_LEX_%s',_0x3ec220['toUpperCase']()),_0x45c51e[_0x3ec220]);}}if(_[_0xa6f7('0x3e')](_0x45c51e['message'])){return this[_0xa6f7('0x10')][_0xa6f7('0x9e')](_0xa6f7('0x11f'));}else{this[_0xa6f7('0xdc')](_0x45c51e['message'],'out',_0xa6f7('0x120'),'');return this['channel'][_0xa6f7('0x9e')](util[_0xa6f7('0x4e')](_0xa6f7('0x121'),_0x45c51e[_0xa6f7('0x122')]));}}return this[_0xa6f7('0x10')][_0xa6f7('0x29')](_0x217d6a,_0xa6f7('0x123'));};AGIVertices[_0xa6f7('0x11')]['googleasr']=function(_0x12be1b){logger[_0xa6f7('0x2b')](util[_0xa6f7('0x4e')](_0xa6f7('0x124'),_0x12be1b['label'],_0x12be1b[_0xa6f7('0x62')]));if(!this['isConfigured'](_0x12be1b[_0xa6f7('0x73')])){return this[_0xa6f7('0x10')][_0xa6f7('0x9e')](_0xa6f7('0xdb'));}var _0x1df9d5='wav';var _0xb762a5=util[_0xa6f7('0x4e')](_0xa6f7('0x125'),FILES_PATH,rs[_0xa6f7('0x126')](0x4));var _0x31ae48=util[_0xa6f7('0x4e')](_0xa6f7('0x94'),_0xb762a5,_0x1df9d5);var _0x2c0d56=!![];if(_0x12be1b[_0xa6f7('0x127')]===_0xa6f7('0x128')){_0x2c0d56=![];}var _0x287d51=this['channel'][_0xa6f7('0x129')](_0xb762a5,_0x1df9d5,_0x12be1b[_0xa6f7('0x12a')],_0x12be1b['timeout'],undefined,_0x2c0d56);if(_0x287d51['result']!==-0x1){this['channel'][_0xa6f7('0x9e')](util[_0xa6f7('0x4e')](_0xa6f7('0x12b'),_0x31ae48));var _0x44055d=this[_0xa6f7('0x85')][_0xa6f7('0xc4')](this,_0x12be1b,_0x31ae48);if(_0x44055d){for(var _0x4d1262 in _0x44055d){if(_0x44055d[_0xa6f7('0x8b')](_0x4d1262)){this[_0xa6f7('0x10')][_0xa6f7('0x95')](util[_0xa6f7('0x4e')]('GOOGLE_ASR_%s',_0x4d1262[_0xa6f7('0x64')]()),_0x44055d[_0x4d1262]);}}return this[_0xa6f7('0x10')]['noop'](util['format'](_0xa6f7('0x12c'),JSON[_0xa6f7('0x6c')](_0x44055d)));}}return _0x287d51;};AGIVertices[_0xa6f7('0x11')]['tildeasr']=function(_0x5f0bf5){logger[_0xa6f7('0x2b')](util[_0xa6f7('0x4e')](_0xa6f7('0x12d'),_0x5f0bf5[_0xa6f7('0xa3')]));if(!this['isConfigured'](_0x5f0bf5[_0xa6f7('0x87')])){return this[_0xa6f7('0x10')]['noop']('no\x20appid\x20configured');}if(!this['isConfigured'](_0x5f0bf5[_0xa6f7('0x88')])){return this[_0xa6f7('0x10')]['noop'](_0xa6f7('0x12e'));}var _0x740aff=_0xa6f7('0x12f');var _0x4e9d86=util[_0xa6f7('0x4e')](_0xa6f7('0x125'),FILES_PATH,rs[_0xa6f7('0x126')](0x4));var _0x3c079b=util[_0xa6f7('0x4e')](_0xa6f7('0x94'),_0x4e9d86,_0x740aff);var _0x25adff=!![];if(_0x5f0bf5[_0xa6f7('0x127')]===_0xa6f7('0x128')){_0x25adff=![];}var _0x7812a9=this['channel'][_0xa6f7('0x129')](_0x4e9d86,_0x740aff,_0x5f0bf5['intKey'],_0x5f0bf5[_0xa6f7('0x62')],undefined,_0x25adff);if(_0x7812a9[_0xa6f7('0x98')]!==-0x1){this[_0xa6f7('0x10')][_0xa6f7('0x9e')](util[_0xa6f7('0x4e')](_0xa6f7('0x130'),_0x3c079b));var _0x297e42=this['tildeASR']['sync'](this,_0x5f0bf5,_0x3c079b);if(_0x297e42){for(var _0xee8140 in _0x297e42){if(_0x297e42[_0xa6f7('0x8b')](_0xee8140)){this[_0xa6f7('0x10')][_0xa6f7('0x95')](util[_0xa6f7('0x4e')]('TILDE_ASR_%s',_0xee8140[_0xa6f7('0x64')]()),_0x297e42[_0xee8140]);}}return this[_0xa6f7('0x10')][_0xa6f7('0x9e')](util[_0xa6f7('0x4e')](_0xa6f7('0x131'),JSON['stringify'](_0x297e42)));}}return _0x7812a9;};AGIVertices['prototype'][_0xa6f7('0x132')]=function(_0x36d7e3){logger[_0xa6f7('0x2b')](util[_0xa6f7('0x4e')](_0xa6f7('0x133'),_0x36d7e3[_0xa6f7('0xa3')]));return this[_0xa6f7('0x10')]['continueAt'](_0x36d7e3[_0xa6f7('0x134')],_0x36d7e3[_0xa6f7('0x38')],_0x36d7e3[_0xa6f7('0x135')]);};AGIVertices[_0xa6f7('0x11')][_0xa6f7('0x136')]=function(_0xf329e0){logger[_0xa6f7('0x2b')](util[_0xa6f7('0x4e')](_0xa6f7('0x137'),_0xf329e0[_0xa6f7('0xa3')]));if(!this[_0xa6f7('0x7b')](_0xf329e0['condition'])){return this[_0xa6f7('0x10')]['error'](_0xf329e0,'no\x20condition\x20configured');}try{var _0x483526=eval(_0xf329e0['condition'])?_0xa6f7('0x138'):'false';this[_0xa6f7('0x10')]['noop'](util[_0xa6f7('0x4e')](_0xa6f7('0x139'),_0xf329e0['condition'],_0x483526));return{'code':0xc8,'result':_0x483526};}catch(_0x204dfe){return{'code':0xc8,'result':_0xa6f7('0x13a')};}};AGIVertices[_0xa6f7('0x11')][_0xa6f7('0x13b')]=function(_0x4b985d){logger[_0xa6f7('0x2b')](util[_0xa6f7('0x4e')](_0xa6f7('0x13c'),_0x4b985d['label']));if(!this[_0xa6f7('0x7b')](_0x4b985d[_0xa6f7('0x13d')])){return this['channel'][_0xa6f7('0x29')](_0x4b985d,_0xa6f7('0x13e'));}var _0x5db7e7=this[_0xa6f7('0x13f')][_0xa6f7('0xc4')](this,_0x4b985d[_0xa6f7('0x13d')]);if(!_0x5db7e7){return this[_0xa6f7('0x10')][_0xa6f7('0x29')](_0x4b985d,_0xa6f7('0x140'));}for(var _0x3b3ee1=0x0;_0x3b3ee1<_0x5db7e7[_0xa6f7('0x91')];_0x3b3ee1+=0x1){var _0x513f43=this[_0xa6f7('0x10')][_0xa6f7('0x12')](util[_0xa6f7('0x4e')](_0xa6f7('0x141'),_0x5db7e7[_0x3b3ee1]));if(_0x513f43[_0xa6f7('0x98')]===-0x1){return _0x513f43;}logger[_0xa6f7('0x2b')](util['format'](_0xa6f7('0x142'),_0x5db7e7[_0x3b3ee1],_0x513f43[_0xa6f7('0x9a')]));if(_0x513f43['extra']==='true'){logger[_0xa6f7('0x2b')](util['format']('IFTIME\x20%s\x20%s',_0x5db7e7[_0x3b3ee1],_0xa6f7('0x138')));this['channel'][_0xa6f7('0x9e')](util[_0xa6f7('0x4e')](_0xa6f7('0x142'),_0x5db7e7[_0x3b3ee1],'true'));return{'code':0xc8,'result':'true'};}else{logger[_0xa6f7('0x2b')](util[_0xa6f7('0x4e')](_0xa6f7('0x142'),_0x5db7e7[_0x3b3ee1],'false'));this['channel']['noop'](util[_0xa6f7('0x4e')](_0xa6f7('0x142'),_0x5db7e7[_0x3b3ee1],_0xa6f7('0x13a')));}}return{'code':0xc8,'result':_0xa6f7('0x13a')};};AGIVertices[_0xa6f7('0x11')]['hangup']=function(_0x1318bd){logger['info'](util[_0xa6f7('0x4e')](_0xa6f7('0x143'),_0x1318bd[_0xa6f7('0xa3')]));return this['channel']['hangup']();};AGIVertices[_0xa6f7('0x11')][_0xa6f7('0x144')]=function(_0x4fc8e5){logger['info'](util[_0xa6f7('0x4e')](_0xa6f7('0x145'),_0x4fc8e5['label']));if(!this[_0xa6f7('0x7b')](_0x4fc8e5[_0xa6f7('0x73')])){return this[_0xa6f7('0x10')][_0xa6f7('0x9e')](_0xa6f7('0xdb'));}var _0x20aa35=_0xa6f7('0x12f');var _0x5e0b03=util[_0xa6f7('0x4e')]('%s/recordings/%s',FILES_PATH,rs[_0xa6f7('0x126')](0x4));var _0x3fa139=util['format']('%s.%s',_0x5e0b03,_0x20aa35);var _0x4e5a8b=!![];if(_0x4fc8e5[_0xa6f7('0x127')]===_0xa6f7('0x128')){_0x4e5a8b=![];}var _0x5ef958=this[_0xa6f7('0x10')][_0xa6f7('0x129')](_0x5e0b03,_0x20aa35,_0x4fc8e5[_0xa6f7('0x12a')],_0x4fc8e5[_0xa6f7('0x62')],undefined,_0x4e5a8b);if(_0x5ef958[_0xa6f7('0x98')]!==-0x1){this[_0xa6f7('0x10')][_0xa6f7('0x9e')](util[_0xa6f7('0x4e')](_0xa6f7('0x146'),_0x3fa139));var _0x16ba2c=this[_0xa6f7('0x7a')][_0xa6f7('0xc4')](this,_0x4fc8e5,_0x3fa139);if(_0x16ba2c){for(var _0x3bd039 in _0x16ba2c){if(_0x16ba2c['hasOwnProperty'](_0x3bd039)){this['channel'][_0xa6f7('0x95')](util[_0xa6f7('0x4e')]('ISPEECH_ASR_%s',_0x3bd039[_0xa6f7('0x64')]()),_0x16ba2c[_0x3bd039]);}}return this[_0xa6f7('0x10')]['noop'](util[_0xa6f7('0x4e')](_0xa6f7('0x147'),JSON[_0xa6f7('0x6c')](_0x16ba2c)));}}return _0x5ef958;};AGIVertices[_0xa6f7('0x11')][_0xa6f7('0x148')]=function(_0x30a417){logger[_0xa6f7('0x2b')](util[_0xa6f7('0x4e')]('Enter\x20in\x20ISPEECHTTS\x20(%s)\x20block',_0x30a417[_0xa6f7('0xa3')]));if(!this['isConfigured'](_0x30a417[_0xa6f7('0x73')])){return this['channel']['noop'](_0xa6f7('0xdb'));}if(!this['isConfigured'](_0x30a417[_0xa6f7('0x55')])){return this['channel']['noop'](_0xa6f7('0x9f'));}this[_0xa6f7('0x10')][_0xa6f7('0x9e')](util['format'](_0xa6f7('0x149'),_0x30a417[_0xa6f7('0x55')]));var _0x4a3f68=this[_0xa6f7('0x78')][_0xa6f7('0xc4')](this,_0x30a417);if(_0x4a3f68){this[_0xa6f7('0x10')]['noop'](util[_0xa6f7('0x4e')](_0xa6f7('0x146'),_0x4a3f68));var _0x22b630=this[_0xa6f7('0x10')][_0xa6f7('0xf3')](_0x4a3f68,_0x30a417['intKey']);try{fs[_0xa6f7('0xf4')](_0x4a3f68+_0xa6f7('0x119'));}catch(_0x1d9a92){logger[_0xa6f7('0x29')](_0x1d9a92);}return _0x22b630;}return this[_0xa6f7('0x10')][_0xa6f7('0x29')](_0x30a417,_0xa6f7('0x14a'));};AGIVertices[_0xa6f7('0x11')][_0xa6f7('0x14b')]=function(_0x278353){logger['info'](util[_0xa6f7('0x4e')](_0xa6f7('0x14c'),_0x278353['label']));if(!this[_0xa6f7('0x7b')](_0x278353[_0xa6f7('0x14d')])){return this[_0xa6f7('0x10')][_0xa6f7('0x29')](_0x278353,'no\x20find\x20by\x20configured');}logger[_0xa6f7('0x2b')](util[_0xa6f7('0x4e')](_0xa6f7('0x14e'),this[_0xa6f7('0x10')][_0xa6f7('0x37')],_0x278353[_0xa6f7('0x14d')]));var _0x5a7be1=this[_0xa6f7('0x4c')]['sync'](this,_0x278353[_0xa6f7('0x14d')]);if(_0x5a7be1){logger[_0xa6f7('0x2b')](util[_0xa6f7('0x4e')](_0xa6f7('0x14f'),this[_0xa6f7('0x10')][_0xa6f7('0x37')],_0x278353[_0xa6f7('0x14d')]));this[_0xa6f7('0x10')][_0xa6f7('0x9e')](util['format']('AGENT\x20%s\x20FOUND\x20BY',this[_0xa6f7('0x10')][_0xa6f7('0x37')],_0x278353[_0xa6f7('0x14d')]));return{'code':0xc8,'result':_0xa6f7('0x150')};}else{logger[_0xa6f7('0x2b')](util[_0xa6f7('0x4e')]('AGENT\x20%s\x20NOT\x20FOUND\x20BY',this[_0xa6f7('0x10')][_0xa6f7('0x37')],_0x278353['findBy']));this['channel'][_0xa6f7('0x9e')](util[_0xa6f7('0x4e')](_0xa6f7('0x151'),this[_0xa6f7('0x10')][_0xa6f7('0x37')],_0x278353[_0xa6f7('0x14d')]));return{'code':0xc8,'result':'failure'};}};AGIVertices[_0xa6f7('0x11')][_0xa6f7('0x152')]=function(_0x16e671){logger[_0xa6f7('0x2b')](util[_0xa6f7('0x4e')](_0xa6f7('0x153'),_0x16e671[_0xa6f7('0xa3')]));if(!this['isConfigured'](_0x16e671['findBy'])){return this[_0xa6f7('0x10')][_0xa6f7('0x29')](_0x16e671,_0xa6f7('0x154'));}logger[_0xa6f7('0x2b')](util['format'](_0xa6f7('0x14e'),this[_0xa6f7('0x10')][_0xa6f7('0x37')],_0x16e671[_0xa6f7('0x14d')]));var _0x17f035=this['agentLogout'][_0xa6f7('0xc4')](this,_0x16e671['findBy']);if(_0x17f035){logger[_0xa6f7('0x2b')](util[_0xa6f7('0x4e')]('AGENT\x20%s\x20FOUND\x20BY',this[_0xa6f7('0x10')][_0xa6f7('0x37')],_0x16e671['findBy']));this[_0xa6f7('0x10')][_0xa6f7('0x9e')](util[_0xa6f7('0x4e')](_0xa6f7('0x14f'),this[_0xa6f7('0x10')]['callerid'],_0x16e671['findBy']));return{'code':0xc8,'result':_0xa6f7('0x150')};}else{logger[_0xa6f7('0x2b')](util[_0xa6f7('0x4e')](_0xa6f7('0x151'),this[_0xa6f7('0x10')][_0xa6f7('0x37')],_0x16e671[_0xa6f7('0x14d')]));this['channel'][_0xa6f7('0x9e')](util['format'](_0xa6f7('0x151'),this['channel']['callerid'],_0x16e671[_0xa6f7('0x14d')]));return{'code':0xc8,'result':_0xa6f7('0x155')};}};AGIVertices[_0xa6f7('0x11')]['math']=function(_0x551c24){logger[_0xa6f7('0x2b')](util[_0xa6f7('0x4e')](_0xa6f7('0x156'),_0x551c24[_0xa6f7('0xa3')]));if(!this[_0xa6f7('0x7b')](_0x551c24[_0xa6f7('0x157')])){return this[_0xa6f7('0x10')]['error'](_0x551c24,_0xa6f7('0x158'));}this['channel'][_0xa6f7('0x9e')](util[_0xa6f7('0x4e')]('math\x20%s',_0x551c24['operation']));var _0x1e07af=eval(_0x551c24[_0xa6f7('0x157')]);if(!this[_0xa6f7('0x7b')](_0x551c24['variable_id'])){return this[_0xa6f7('0x10')][_0xa6f7('0x9e')](_0xa6f7('0xcb'));}var _0x1fdecc=this['getVariable'][_0xa6f7('0xc4')](this,_0x551c24[_0xa6f7('0xca')]);if(!_0x1fdecc){return this[_0xa6f7('0x10')][_0xa6f7('0x29')](_0x551c24,'no\x20variable\x20found');}if(_['isArray'](_0x1e07af)){var _0x27c950=this;_0x1e07af['forEach'](function(_0x31f1ff,_0x5d5241){_0x27c950['channel'][_0xa6f7('0x95')](util[_0xa6f7('0x4e')](_0xa6f7('0x159'),_0x1fdecc,_0x5d5241),_0x31f1ff);});return this[_0xa6f7('0x10')][_0xa6f7('0x9e')](util[_0xa6f7('0x4e')](_0xa6f7('0x15a'),_0x1fdecc));}else{return this[_0xa6f7('0x10')][_0xa6f7('0x95')](_0x1fdecc,_0x1e07af);}};AGIVertices['prototype'][_0xa6f7('0x15b')]=function(_0x3686b8){logger[_0xa6f7('0x2b')](util[_0xa6f7('0x4e')]('Enter\x20in\x20MENU\x20(%s)\x20block',_0x3686b8['label']));if(_0x3686b8[_0xa6f7('0x105')]===0x0){return this[_0xa6f7('0x9b')](_0x3686b8);}_0x3686b8[_0xa6f7('0x105')]-=0x1;if(!this['isConfigured'](_0x3686b8[_0xa6f7('0x108')])){return this['channel']['error'](_0x3686b8,_0xa6f7('0x106'));}var _0x3f29d0=this[_0xa6f7('0x107')][_0xa6f7('0xc4')](this,_0x3686b8[_0xa6f7('0x108')]);if(!_0x3f29d0){return this[_0xa6f7('0x10')]['error'](_0x3686b8,_0xa6f7('0x109'));}var _0xc558ed=this[_0xa6f7('0x10')][_0xa6f7('0x10a')](_0x3f29d0,_0x3686b8['response'],_0x3686b8['digit']);var _0x4dd3ea=_0xc558ed[_0xa6f7('0x98')];if(_0xc558ed[_0xa6f7('0x98')]===-0x1){this['createSquareDetailsReport']['sync'](this,_0x3686b8,'-1');return _0xc558ed;}else if(_0xc558ed[_0xa6f7('0x9a')]===_0xa6f7('0x62')){_0xc558ed[_0xa6f7('0x98')]=_0xc558ed[_0xa6f7('0x98')]['length']>0x0?_0xc558ed[_0xa6f7('0x98')]:'t';}else if(_['isEmpty'](_0xc558ed[_0xa6f7('0x98')])){_0xc558ed['result']='#';_0x4dd3ea='#';}if(!this[_0xa6f7('0x7b')](_0x3686b8[_0xa6f7('0xca')])){this['channel'][_0xa6f7('0x9e')](_0xa6f7('0xcb'));}else{var _0x3d1cfc=this[_0xa6f7('0x12')][_0xa6f7('0xc4')](this,_0x3686b8['variable_id']);if(!_0x3d1cfc){return this[_0xa6f7('0x10')][_0xa6f7('0x29')](_0x3686b8,_0xa6f7('0xcc'));}this[_0xa6f7('0x10')][_0xa6f7('0x95')](_0x3d1cfc,_0x4dd3ea);}this[_0xa6f7('0x32')][_0xa6f7('0xc4')](this,_0x3686b8,_0x4dd3ea);return _0xc558ed;};AGIVertices['prototype'][_0xa6f7('0x9e')]=function(_0x35c524){logger[_0xa6f7('0x2b')](util[_0xa6f7('0x4e')](_0xa6f7('0x15c'),_0x35c524[_0xa6f7('0xa3')]));return this[_0xa6f7('0x10')][_0xa6f7('0x9e')](_0x35c524['output']||_0x35c524[_0xa6f7('0xa3')]);};AGIVertices['prototype'][_0xa6f7('0x15d')]=function(_0x153572){logger['info'](util[_0xa6f7('0x4e')](_0xa6f7('0x15e'),_0x153572[_0xa6f7('0xa3')]));if(!this['isConfigured'](_0x153572[_0xa6f7('0x14d')])){return this[_0xa6f7('0x10')][_0xa6f7('0x29')](_0x153572,_0xa6f7('0x154'));}logger[_0xa6f7('0x2b')](util[_0xa6f7('0x4e')]('FIND\x20AGENT\x20%s\x20BY\x20%s',this['channel'][_0xa6f7('0x37')],_0x153572[_0xa6f7('0x14d')]));var _0x3cd8b9=this[_0xa6f7('0x46')][_0xa6f7('0xc4')](this,_0x153572[_0xa6f7('0x15f')]);var _0x446b17=this['agentPause'][_0xa6f7('0xc4')](this,_0x153572[_0xa6f7('0x14d')],_0x3cd8b9);if(_0x446b17){logger[_0xa6f7('0x2b')](util[_0xa6f7('0x4e')](_0xa6f7('0x14f'),this['channel'][_0xa6f7('0x37')],_0x153572['findBy']));this[_0xa6f7('0x10')][_0xa6f7('0x9e')](util[_0xa6f7('0x4e')](_0xa6f7('0x14f'),this[_0xa6f7('0x10')][_0xa6f7('0x37')],_0x153572[_0xa6f7('0x14d')]));return{'code':0xc8,'result':_0xa6f7('0x150')};}else{logger['info'](util[_0xa6f7('0x4e')](_0xa6f7('0x151'),this[_0xa6f7('0x10')][_0xa6f7('0x37')],_0x153572['findBy']));this['channel'][_0xa6f7('0x9e')](util[_0xa6f7('0x4e')](_0xa6f7('0x14f'),this['channel']['callerid'],_0x153572[_0xa6f7('0x14d')]));return{'code':0xc8,'result':_0xa6f7('0x155')};}};AGIVertices[_0xa6f7('0x11')]['playback']=function(_0xbeb2ce){logger[_0xa6f7('0x2b')](util[_0xa6f7('0x4e')](_0xa6f7('0x160'),_0xbeb2ce[_0xa6f7('0xa3')]));if(!this[_0xa6f7('0x7b')](_0xbeb2ce[_0xa6f7('0x108')])){return this[_0xa6f7('0x10')][_0xa6f7('0x29')](_0xbeb2ce,_0xa6f7('0x106'));}var _0x169851=this[_0xa6f7('0x107')][_0xa6f7('0xc4')](this,_0xbeb2ce[_0xa6f7('0x108')]);if(!_0x169851){return this[_0xa6f7('0x10')][_0xa6f7('0x29')](_0xbeb2ce,'no\x20file\x20audio\x20found');}var _0x441221=this[_0xa6f7('0x10')][_0xa6f7('0x51')]('PLAYBACK',[_0x169851,_0xbeb2ce['opts']]);if(_0x441221[_0xa6f7('0x98')]===-0x1){return _0x441221;}return this[_0xa6f7('0x10')]['noop'](util[_0xa6f7('0x4e')](_0xa6f7('0xb7'),_0xa6f7('0x161'),_0x169851));};AGIVertices[_0xa6f7('0x11')][_0xa6f7('0x162')]=function(_0x2ede52){logger[_0xa6f7('0x2b')](util[_0xa6f7('0x4e')](_0xa6f7('0x163'),_0x2ede52[_0xa6f7('0xa3')]));if(!this[_0xa6f7('0x7b')](_0x2ede52[_0xa6f7('0x164')])){return this[_0xa6f7('0x10')][_0xa6f7('0x29')](_0x2ede52,_0xa6f7('0x165'));}var _0x2a9469='';var _0x53b70d=parseInt(_0x2ede52['queue_id'],0xa);if(isNaN(_0x53b70d)){_0x2a9469=_0x2ede52[_0xa6f7('0x164')];}else{_0x2a9469=this['getVoiceQueue'][_0xa6f7('0xc4')](this,_0x2ede52['queue_id']);if(!_0x2a9469){return this[_0xa6f7('0x10')][_0xa6f7('0x29')](_0x2ede52,_0xa6f7('0x166'));}}var _0x588c8b='';if(this[_0xa6f7('0x7b')](_0x2ede52['file_id'])){var _0x1f6489=this[_0xa6f7('0x107')]['sync'](this,_0x2ede52[_0xa6f7('0x108')]);if(_0x1f6489){_0x588c8b=_0x1f6489;}}this[_0xa6f7('0x32')][_0xa6f7('0xc4')](this,_0x2ede52,_0x2a9469);if(_0x2ede52[_0xa6f7('0x100')][_0xa6f7('0x167')]('x')<0x0){_0x2ede52[_0xa6f7('0x100')]+='x';}if(_0x2ede52[_0xa6f7('0x100')]['indexOf']('X')<0x0){_0x2ede52[_0xa6f7('0x100')]+='X';}this['channel'][_0xa6f7('0x95')](_0xa6f7('0x168'),_0x2a9469?_0x2a9469['toLowerCase']():'');var _0x549589=this[_0xa6f7('0x10')][_0xa6f7('0x51')](_0xa6f7('0x169'),[_0x2a9469,_0x2ede52[_0xa6f7('0x100')],_0x2ede52[_0xa6f7('0x5f')],_0x588c8b,_0x2ede52['timeout'],_0x2ede52[_0xa6f7('0x8')],_0x2ede52[_0xa6f7('0x16a')],_0x2ede52[_0xa6f7('0x16b')],'',_0x2ede52[_0xa6f7('0x16c')]]);if(_0x549589[_0xa6f7('0x98')]===-0x1){return _0x549589;}return this[_0xa6f7('0x10')]['noop'](util[_0xa6f7('0x4e')](_0xa6f7('0xb7'),_0xa6f7('0x169'),_0x2a9469));};AGIVertices['prototype']['record']=function(_0x33e7a9){logger[_0xa6f7('0x2b')](util[_0xa6f7('0x4e')](_0xa6f7('0x16d'),_0x33e7a9[_0xa6f7('0xa3')]));var _0x319866=_0x33e7a9[_0xa6f7('0x16e')]||_0xa6f7('0x12f');var _0x5f14fd=util['format'](_0xa6f7('0x16f'),this[_0xa6f7('0x10')]['uniqueid'],rs[_0xa6f7('0x126')](0x5));var _0x1fc967=util[_0xa6f7('0x4e')](_0xa6f7('0x170'),FILES_PATH,_0x5f14fd,_0x319866);var _0xa82c0f=util[_0xa6f7('0x4e')](_0xa6f7('0x125'),FILES_PATH,_0x5f14fd);this[_0xa6f7('0x36')][_0xa6f7('0xc4')](this,_0x33e7a9,_0x5f14fd,_0x1fc967);this[_0xa6f7('0x10')][_0xa6f7('0x95')](_0xa6f7('0x171'),_0x5f14fd);logger[_0xa6f7('0x2b')](_0xa6f7('0x172'),_0xa82c0f,_0x319866,_0x33e7a9[_0xa6f7('0x173')],_0x33e7a9[_0xa6f7('0x62')]);return this[_0xa6f7('0x10')][_0xa6f7('0x129')](_0xa82c0f,_0x319866,_0x33e7a9[_0xa6f7('0x173')],_0x33e7a9[_0xa6f7('0x62')],undefined,!![]);};AGIVertices[_0xa6f7('0x11')][_0xa6f7('0x174')]=function(_0x4fdb5f){logger[_0xa6f7('0x2b')](util['format'](_0xa6f7('0x175'),_0x4fdb5f[_0xa6f7('0xa3')]));if(!this['isConfigured'](_0x4fdb5f['url'])){return this['channel']['noop']('no\x20url\x20configured');}var _0x76403f=this[_0xa6f7('0x5e')][_0xa6f7('0xc4')](this,_0x4fdb5f);logger[_0xa6f7('0x2b')](util['format']('Response:',util[_0xa6f7('0x176')](_0x76403f,{'showHidden':![],'depth':null})));if(!this['isConfigured'](_0x4fdb5f['variable_id'])){return this['channel'][_0xa6f7('0x9e')](_0xa6f7('0x177'));}var _0x481b4e=this[_0xa6f7('0x12')]['sync'](this,_0x4fdb5f['variable_id']);if(!_0x481b4e){return this[_0xa6f7('0x10')][_0xa6f7('0x29')](_0x4fdb5f,_0xa6f7('0xcc'));}this['channel'][_0xa6f7('0x95')](util[_0xa6f7('0x4e')](_0xa6f7('0x178'),_0x481b4e),_0x76403f[_0xa6f7('0x6f')]?_0x76403f[_0xa6f7('0x6f')]:'200');this[_0xa6f7('0x10')][_0xa6f7('0x95')](util[_0xa6f7('0x4e')](_0xa6f7('0x179'),_0x481b4e),_0x76403f['statusMessage']?_0x76403f['statusMessage']:'OK');if(_0x76403f[_0xa6f7('0x6d')]){try{this[_0xa6f7('0x93')](_0x76403f[_0xa6f7('0x6d')],_0x481b4e);}catch(_0xd29a03){logger[_0xa6f7('0x29')](util['format'](_0xa6f7('0x17a'),_0x481b4e));}}return this[_0xa6f7('0x10')]['noop'](util['format'](_0xa6f7('0xd0'),_0x481b4e));};AGIVertices[_0xa6f7('0x11')]['saydigits']=function(_0xdbcb29){logger[_0xa6f7('0x2b')](util[_0xa6f7('0x4e')](_0xa6f7('0x17b'),_0xdbcb29['label']));return this[_0xa6f7('0x10')][_0xa6f7('0x17c')](_0xdbcb29[_0xa6f7('0x17d')][_0xa6f7('0xc8')](/\s+/g,''),_0xdbcb29[_0xa6f7('0x173')]);};AGIVertices[_0xa6f7('0x11')]['saynumber']=function(_0x59654f){logger['info'](util[_0xa6f7('0x4e')]('Enter\x20in\x20SAYNUMBER\x20(%s)\x20block',_0x59654f[_0xa6f7('0xa3')]));return this['channel'][_0xa6f7('0x17e')](_0x59654f[_0xa6f7('0x61')][_0xa6f7('0xc8')](/\s+/g,''),_0x59654f['escape_digits']);};AGIVertices['prototype'][_0xa6f7('0x17f')]=function(_0x44291f){logger[_0xa6f7('0x2b')](util[_0xa6f7('0x4e')](_0xa6f7('0x180'),_0x44291f[_0xa6f7('0xa3')]));return this[_0xa6f7('0x10')]['sayPhonetic'](_0x44291f['text'],_0x44291f['escape_digits']);};AGIVertices[_0xa6f7('0x11')][_0xa6f7('0x181')]=function(_0x18cf6f){logger[_0xa6f7('0x2b')](util['format']('Enter\x20in\x20SENDMAIL\x20(%s)\x20block',_0x18cf6f[_0xa6f7('0xa3')]));if(!this[_0xa6f7('0x7b')](_0x18cf6f[_0xa6f7('0x182')])){return this['channel'][_0xa6f7('0x9e')](_0xa6f7('0x183'));}var _0x1e6375=this['getMailAccount'][_0xa6f7('0xc4')](this,_0x18cf6f[_0xa6f7('0x182')]);if(!_0x1e6375||!_0x1e6375[_0xa6f7('0x184')]){return this['channel'][_0xa6f7('0x29')](_0x18cf6f,_0xa6f7('0x185'));}var _0x532a45={'from':util[_0xa6f7('0x4e')](_0xa6f7('0x186'),_0x1e6375[_0xa6f7('0x15')],_0x1e6375[_0xa6f7('0x187')]||_0x1e6375['Smtp']['user']),'to':_0x18cf6f['to']||'','cc':_0x18cf6f['cc']||'','bcc':_0x18cf6f['bcc']||'','subject':_0x18cf6f[_0xa6f7('0x188')],'html':_0x18cf6f[_0xa6f7('0x55')],'text':_0x18cf6f[_0xa6f7('0x55')]};if(this[_0xa6f7('0x7b')](_0x18cf6f['template_id'])){}logger[_0xa6f7('0xd2')](_0xa6f7('0x189'),JSON[_0xa6f7('0x6c')](_0x532a45));this[_0xa6f7('0x32')]['sync'](this,_0x18cf6f,_0x18cf6f[_0xa6f7('0x182')]);this['channel'][_0xa6f7('0x9e')](util['format']('Trying\x20SendMail\x20with\x20account\x20%s',_0x1e6375[_0xa6f7('0x15')]));this[_0xa6f7('0x22')][_0xa6f7('0xc4')](this,_0x1e6375[_0xa6f7('0x18a')],_0x532a45);return this[_0xa6f7('0x10')][_0xa6f7('0x9e')](_0xa6f7('0x18b'));};AGIVertices[_0xa6f7('0x11')][_0xa6f7('0x18c')]=function(_0x39c11e){logger[_0xa6f7('0x2b')](util[_0xa6f7('0x4e')]('Enter\x20in\x20SENDFAX\x20(%s)\x20block',_0x39c11e[_0xa6f7('0xa3')]));return this[_0xa6f7('0x10')][_0xa6f7('0x9e')]('SENDFAX\x20block\x20not\x20implemented');};AGIVertices[_0xa6f7('0x11')]['sendSMS']=function(_0x3f4be5){logger['info'](util[_0xa6f7('0x4e')](_0xa6f7('0x18d'),_0x3f4be5[_0xa6f7('0xa3')]));if(!this[_0xa6f7('0x7b')](_0x3f4be5[_0xa6f7('0x18e')])){return this[_0xa6f7('0x10')][_0xa6f7('0x9e')]('no\x20sms\x20account\x20configured');}var _0x52666a=this[_0xa6f7('0x30')][_0xa6f7('0xc4')](this,_0x3f4be5[_0xa6f7('0x18e')]);if(!_0x52666a){return this[_0xa6f7('0x10')][_0xa6f7('0x29')](_0x3f4be5,_0xa6f7('0x18f'));}var _0x272495={'body':_0x3f4be5[_0xa6f7('0x190')],'phone':_0x3f4be5['to']||'','SmsAccountId':_0x52666a['id']};logger['debug'](_0xa6f7('0x191'),JSON[_0xa6f7('0x6c')](_0x272495));this[_0xa6f7('0x32')][_0xa6f7('0xc4')](this,_0x3f4be5,_0x3f4be5['sms_account_id']);this[_0xa6f7('0x10')]['noop'](util[_0xa6f7('0x4e')]('Trying\x20SendSMS\x20with\x20account\x20%s',_0x52666a[_0xa6f7('0x15')]));this['createSmsMessage']['sync'](this,_0x272495);return this[_0xa6f7('0x10')][_0xa6f7('0x9e')](_0xa6f7('0x192'));};AGIVertices[_0xa6f7('0x11')]['set']=function(_0x13f7dd){logger[_0xa6f7('0x2b')](util[_0xa6f7('0x4e')](_0xa6f7('0x193'),_0x13f7dd[_0xa6f7('0xa3')]));if(!this['isConfigured'](_0x13f7dd['variable_id'])){return this['channel'][_0xa6f7('0x29')](_0x13f7dd,'no\x20variable\x20selected');}var _0x2a588e=this['getVariable'][_0xa6f7('0xc4')](this,_0x13f7dd['variable_id']);if(!_0x2a588e){return this[_0xa6f7('0x10')][_0xa6f7('0x29')](_0x13f7dd,_0xa6f7('0xcc'));}return this[_0xa6f7('0x10')]['setVariable'](_0x2a588e,_0x13f7dd[_0xa6f7('0x194')]);};AGIVertices[_0xa6f7('0x11')][_0xa6f7('0x195')]=function(_0x24f8a8){logger['info'](util[_0xa6f7('0x4e')]('Enter\x20in\x20START\x20(%s)\x20block',_0x24f8a8[_0xa6f7('0xa3')]));this[_0xa6f7('0x10')][_0xa6f7('0x9e')](_0xa6f7('0x196'));if(_0x24f8a8[_0xa6f7('0xab')]===_0xa6f7('0x197')){this['channel'][_0xa6f7('0x9e')](_0xa6f7('0x198'));return this[_0xa6f7('0x10')][_0xa6f7('0xab')]();}return this[_0xa6f7('0x10')]['noop'](_0xa6f7('0x199'));};AGIVertices[_0xa6f7('0x11')][_0xa6f7('0x19a')]=function(_0x26a24d){logger[_0xa6f7('0x2b')](util[_0xa6f7('0x4e')](_0xa6f7('0x19b'),_0x26a24d[_0xa6f7('0xa3')]));if(!this[_0xa6f7('0x7b')](_0x26a24d[_0xa6f7('0x19c')])){return this['channel']['error'](_0x26a24d,_0xa6f7('0x19d'));}var _0x2d81ce=this['getSquareProject']['sync'](this,_0x26a24d[_0xa6f7('0x19c')]);if(!this['isConfigured'](_0x2d81ce)){return this[_0xa6f7('0x10')][_0xa6f7('0x29')](_0x26a24d,util[_0xa6f7('0x4e')](_0xa6f7('0x19e'),_0x26a24d[_0xa6f7('0x19c')]));}if(_0x2d81ce===this[_0xa6f7('0x10')]['arg_1']){return this[_0xa6f7('0x10')][_0xa6f7('0x29')](_0x26a24d,_0xa6f7('0x19f'));}this[_0xa6f7('0x32')][_0xa6f7('0xc4')](this,_0x26a24d,_0x2d81ce);var _0x537175=this[_0xa6f7('0x10')][_0xa6f7('0x51')](_0xa6f7('0x1a0'),util['format']('agi://%s/square,\x22%s\x22,\x22%s\x22',config['agi']['host']||_0xa6f7('0x1a1'),_0x2d81ce,this['channel']['arg_1']));if(_0x537175[_0xa6f7('0x98')]===-0x1){return _0x537175;}return this[_0xa6f7('0x10')][_0xa6f7('0x9e')](util[_0xa6f7('0x4e')](_0xa6f7('0xb7'),_0xa6f7('0x1a0'),_0x2d81ce));};AGIVertices[_0xa6f7('0x11')]['system']=function(_0x57d0a5){logger[_0xa6f7('0x2b')](util['format'](_0xa6f7('0x1a2'),_0x57d0a5[_0xa6f7('0xa3')]));var _0x134740=this[_0xa6f7('0x50')][_0xa6f7('0xc4')](this,_0x57d0a5['command']);this[_0xa6f7('0x32')][_0xa6f7('0xc4')](this,_0x57d0a5,_0x57d0a5[_0xa6f7('0xaa')]);if(this[_0xa6f7('0x7b')](_0x57d0a5['variable_id'])){var _0xa33396=this[_0xa6f7('0x12')]['sync'](this,_0x57d0a5[_0xa6f7('0xca')]);if(_0xa33396){this[_0xa6f7('0x10')][_0xa6f7('0x95')](_0xa33396,_0x134740);return this[_0xa6f7('0x10')]['noop'](util[_0xa6f7('0x4e')]('sh\x20command:\x20%s\x20result\x20on\x20variable:\x20%s',_0x57d0a5['command'],_0xa33396));}}return this['channel'][_0xa6f7('0x9e')](util[_0xa6f7('0x4e')]('sh\x20command:\x20%s\x20result\x20no\x20stored',_0x57d0a5[_0xa6f7('0xaa')]));};AGIVertices['prototype']['google_cloud_tts']=function(_0x586593){logger[_0xa6f7('0x2b')](util['format']('Enter\x20in\x20Google\x20Cloud\x20TTS\x20(%s)\x20block',_0x586593[_0xa6f7('0xa3')]));_0x586593[_0xa6f7('0x55')]=_0x586593[_0xa6f7('0x55')][_0xa6f7('0xc8')](/(\r\n|\n|\r)/gm,'\x20');if(!this['isConfigured'](_0x586593[_0xa6f7('0x54')])){return this[_0xa6f7('0x10')][_0xa6f7('0x9e')](_0xa6f7('0x1a3'));}if(!this[_0xa6f7('0x7b')](_0x586593[_0xa6f7('0x55')])){return this[_0xa6f7('0x10')]['noop']('no\x20text\x20configured');}this[_0xa6f7('0x10')][_0xa6f7('0x9e')](util[_0xa6f7('0x4e')](_0xa6f7('0x1a4'),_0x586593['text']));var _0x2f29db=this[_0xa6f7('0x53')][_0xa6f7('0xc4')](this,_0x586593);if(_0x2f29db){this['channel'][_0xa6f7('0x9e')](util['format']('Google\x20Cloud\x20TTS\x20%s\x20file\x20created',_0x2f29db));var _0x2163d0=this['channel'][_0xa6f7('0xf3')](_0x2f29db);try{fs['unlink'](_0x2f29db+_0xa6f7('0x119'));}catch(_0xc5da9f){logger[_0xa6f7('0x29')](_0xc5da9f);}return _0x2163d0;}return this[_0xa6f7('0x10')]['error'](_0x586593,_0xa6f7('0x1a5'));};AGIVertices['prototype'][_0xa6f7('0x1a6')]=function(_0x38781c){logger[_0xa6f7('0x2b')](util[_0xa6f7('0x4e')](_0xa6f7('0x1a7'),_0x38781c[_0xa6f7('0xa3')]));_0x38781c[_0xa6f7('0x55')]=_0x38781c[_0xa6f7('0x55')][_0xa6f7('0xc8')](/(\r\n|\n|\r)/gm,'\x20');if(!this[_0xa6f7('0x7b')](_0x38781c['text'])){return this[_0xa6f7('0x10')]['noop']('no\x20text\x20configured');}this[_0xa6f7('0x10')][_0xa6f7('0x9e')](util[_0xa6f7('0x4e')](_0xa6f7('0x1a8'),_0x38781c[_0xa6f7('0x55')]));var _0x387a1b=this[_0xa6f7('0x5c')][_0xa6f7('0xc4')](this,_0x38781c);if(_0x387a1b){this['channel'][_0xa6f7('0x9e')](util['format'](_0xa6f7('0x1a9'),_0x387a1b));var _0x38abcd=this['channel'][_0xa6f7('0xf3')](_0x387a1b);try{fs['unlink'](_0x387a1b+_0xa6f7('0x119'));}catch(_0x305a86){logger[_0xa6f7('0x29')](_0x305a86);}return _0x38abcd;}return this[_0xa6f7('0x10')][_0xa6f7('0x29')](_0x38781c,_0xa6f7('0x1aa'));};AGIVertices[_0xa6f7('0x11')][_0xa6f7('0x1ab')]=function(_0x1c89b9){logger[_0xa6f7('0x2b')](util[_0xa6f7('0x4e')](_0xa6f7('0x1ac'),_0x1c89b9[_0xa6f7('0xa3')]));if(!this['isConfigured'](_0x1c89b9['findBy'])){return this[_0xa6f7('0x10')]['error'](_0x1c89b9,_0xa6f7('0x154'));}logger[_0xa6f7('0x2b')](util[_0xa6f7('0x4e')](_0xa6f7('0x14e'),this[_0xa6f7('0x10')][_0xa6f7('0x37')],_0x1c89b9[_0xa6f7('0x14d')]));var _0x498549=this[_0xa6f7('0x4a')][_0xa6f7('0xc4')](this,_0x1c89b9[_0xa6f7('0x14d')]);if(_0x498549){logger[_0xa6f7('0x2b')](util[_0xa6f7('0x4e')]('AGENT\x20%s\x20FOUND\x20BY',this['channel'][_0xa6f7('0x37')],_0x1c89b9[_0xa6f7('0x14d')]));this[_0xa6f7('0x10')][_0xa6f7('0x9e')](util[_0xa6f7('0x4e')](_0xa6f7('0x14f'),this[_0xa6f7('0x10')][_0xa6f7('0x37')],_0x1c89b9[_0xa6f7('0x14d')]));return{'code':0xc8,'result':_0xa6f7('0x150')};}else{logger[_0xa6f7('0x2b')](util[_0xa6f7('0x4e')]('AGENT\x20%s\x20NOT\x20FOUND\x20BY',this[_0xa6f7('0x10')][_0xa6f7('0x37')],_0x1c89b9[_0xa6f7('0x14d')]));this['channel']['noop'](util[_0xa6f7('0x4e')](_0xa6f7('0x151'),this['channel']['callerid'],_0x1c89b9['findBy']));return{'code':0xc8,'result':_0xa6f7('0x155')};}};AGIVertices[_0xa6f7('0x11')]['voicemail']=function(_0x481aff){logger['info'](util[_0xa6f7('0x4e')]('Enter\x20in\x20VOICEMAIL\x20(%s)\x20block',_0x481aff[_0xa6f7('0xa3')]));var _0x595f6a=this[_0xa6f7('0x10')][_0xa6f7('0x51')](_0xa6f7('0x1ad'),[_0x481aff[_0xa6f7('0x1ae')],_0x481aff['options']]);if(_0x595f6a['result']===-0x1){return _0x595f6a;}return this[_0xa6f7('0x10')][_0xa6f7('0x9e')](util[_0xa6f7('0x4e')]('Executed\x20command\x20%s\x20%s',_0xa6f7('0x1ad'),_0x481aff[_0xa6f7('0x1ae')]));};AGIVertices[_0xa6f7('0x11')][_0xa6f7('0x1af')]=function(_0x5e8e2e){logger['info'](util[_0xa6f7('0x4e')](_0xa6f7('0x1b0'),_0x5e8e2e[_0xa6f7('0xa3')]));if(!this[_0xa6f7('0x7b')](_0x5e8e2e[_0xa6f7('0xca')])){return this[_0xa6f7('0x10')][_0xa6f7('0x29')](_0x5e8e2e,_0xa6f7('0x1b1'));}var _0x48c93f=this['getVariable'][_0xa6f7('0xc4')](this,_0x5e8e2e[_0xa6f7('0xca')]);if(!_0x48c93f){return this['channel'][_0xa6f7('0x29')](_0x5e8e2e,'no\x20variable\x20found');}var _0xcf0363=this[_0xa6f7('0x10')][_0xa6f7('0x12')](_0x48c93f);return{'code':0xc8,'result':_0xcf0363[_0xa6f7('0x9a')]?_0xcf0363[_0xa6f7('0x9a')]:'-'};};String[_0xa6f7('0x11')]['replaceAll']=function(_0x3f41bf,_0x287ed5){return this[_0xa6f7('0x96')](_0x3f41bf)[_0xa6f7('0x1b2')](_0x287ed5);};module[_0xa6f7('0x1b3')]=AGIVertices;
\ No newline at end of file
index cbefc12..dedfb9e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0x28b8=['mandatoryDispositionPause','name','Action','QueuePause','getAgent','voicePause','[%s][START][AGENT:%s][QUEUE:%s]','destlinkedid','then','info','[%s][TIMER:%s][AGENT:%s][QUEUE:%s]','acwTimeout','timer','lastPauseAt','format','YYYY-MM-DD\x20HH:mm:ss','uniqueid','updateAcw','[%s][UPDATE][ACWTIME:%s]','error','[%s][UPDATE][ERRORS:%s]','[%s][INPAUSE][AGENT:%s][QUEUE:%s]','finally','[ACW][START]\x20%s','stopAcw','catch','[ACW][STOP]\x20Interface\x20%s\x20doesn\x27t\x20have\x20timer','[ACW][TIMERS]','stringify','[ACW][STOP]\x20%s','message','[ACW][syncAgentConnect]\x20%s','acw','isUndefined','attended','startAcw','linkedid','[ACW][syncHangupRequest]\x20%s','[%s][HANGUPATTENDEDTRANSFER:UNIQUEID]','[%s][HANGUPATTENDEDTRANSFER:LINKEDID]','[ACW][syncHangup]\x20%s','isNil','transfereeuniqueid','secondtransfereruniqueid','transfertargetuniqueid','origtransfereruniqueid','[ACW][syncAttendedTransfer]\x20%s','syncBlindTransfer','transfereruniqueid','[%s][BLINDTRANSFER:UNIQUEID]','transfererlinkedid','[ACW][syncBlindTransfer]\x20%s','[%s][AUTOPAUSE][AGENT:%s][QUEUE:%]','savePause','Auto-Pause','[ACW][syncAgentRingNoAnswer]\x20%s','lodash','moment','../ami','../../../config/logger','../rpc/user','../rpc/voiceAgentReport','voiceQueues','agents','timers','channels','agentconnect','syncAgentConnect','hanguprequest','syncHangupRequest','bind','hangup','syncHangup','agentringnoanswer','syncAgentRingNoAnswer','attendedtransfer','syncAttendedTransfer','blindtransfer','custom:agentConnectPreview','syncAgentConnectPreview','milliseconds','diff','seconds','prototype','interface','queue','mandatoryDisposition'];(function(_0x31e197,_0x42a149){var _0x44770b=function(_0x3c05b0){while(--_0x3c05b0){_0x31e197['push'](_0x31e197['shift']());}};_0x44770b(++_0x42a149);}(_0x28b8,0x8f));var _0x828b=function(_0x398c0f,_0x15159e){_0x398c0f=_0x398c0f-0x0;var _0x211292=_0x28b8[_0x398c0f];return _0x211292;};'use strict';var util=require('util');var _=require(_0x828b('0x0'));var moment=require(_0x828b('0x1'));var ami=require(_0x828b('0x2'));var logger=require(_0x828b('0x3'))('acw');var RpcUser=require(_0x828b('0x4'));var RpcVoiceAgentReport=require(_0x828b('0x5'));function Acw(_0x25b4de){this['voiceQueues']=_0x25b4de[_0x828b('0x6')];this[_0x828b('0x7')]=_0x25b4de['agents'];this[_0x828b('0x8')]=_0x25b4de[_0x828b('0x8')];this[_0x828b('0x9')]={};ami['on'](_0x828b('0xa'),this[_0x828b('0xb')]['bind'](this));ami['on'](_0x828b('0xc'),this[_0x828b('0xd')][_0x828b('0xe')](this));ami['on'](_0x828b('0xf'),this[_0x828b('0x10')][_0x828b('0xe')](this));ami['on'](_0x828b('0x11'),this[_0x828b('0x12')][_0x828b('0xe')](this));ami['on'](_0x828b('0x13'),this[_0x828b('0x14')][_0x828b('0xe')](this));ami['on'](_0x828b('0x15'),this['syncBlindTransfer'][_0x828b('0xe')](this));ami['on'](_0x828b('0x16'),this[_0x828b('0x17')][_0x828b('0xe')](this));}function getDiff(_0x2a1a73){var _0x14125c=moment()[_0x828b('0x18')](0x0);var _0xfa7d20=moment(_0x2a1a73)[_0x828b('0x18')](0x0);return _0x14125c[_0x828b('0x19')](_0xfa7d20,_0x828b('0x1a'));}Acw[_0x828b('0x1b')]['startAcw']=function(_0x37f1dd){try{var _0x1612cd=this;var _0xb4a265=this[_0x828b('0x9')][_0x37f1dd][_0x828b('0x1c')];var _0x17bc84=this[_0x828b('0x9')][_0x37f1dd][_0x828b('0x1d')];var _0x747355=this[_0x828b('0x6')][_0x17bc84];var _0x2cbba5=![];var _0x37dc69='ACW';if(_0x747355[_0x828b('0x1e')]){if(_0x747355[_0x828b('0x1f')][_0x828b('0x20')]){_0x2cbba5=!![];_0x37dc69=_0x747355[_0x828b('0x1f')][_0x828b('0x20')];}}ami[_0x828b('0x21')]({'action':_0x828b('0x22'),'interface':_0xb4a265,'paused':!![],'reason':_0x37dc69})['then'](function(_0x4beebd){if(_0x1612cd[_0x828b('0x7')][_0xb4a265]){return RpcUser[_0x828b('0x23')](_0x1612cd[_0x828b('0x7')][_0xb4a265]['id'])['then'](function(_0xb8910f){if(_0xb8910f&&!_0xb8910f[_0x828b('0x24')]){logger['info'](_0x828b('0x25'),_0x37f1dd,_0xb4a265,_0x17bc84);var _0x4f1986=_0x1612cd[_0x828b('0x9')][_0x37f1dd]['attended']&&_0x1612cd[_0x828b('0x9')][_0x37f1dd]['destlinkedid']?_0x1612cd[_0x828b('0x9')][_0x37f1dd][_0x828b('0x26')]:_0x37f1dd;return RpcUser['savePause'](_0x1612cd[_0x828b('0x7')][_0xb4a265],_0x37dc69,_0x4f1986)[_0x828b('0x27')](function(_0x5a5e14){if(!_0x2cbba5){_0x1612cd[_0x828b('0x8')][_0xb4a265]={};logger[_0x828b('0x28')](_0x828b('0x29'),_0x37f1dd,_0x1612cd[_0x828b('0x6')][_0x17bc84][_0x828b('0x2a')],_0xb4a265,_0x17bc84);_0x1612cd[_0x828b('0x8')][_0xb4a265][_0x828b('0x2b')]=setTimeout(_0x1612cd['stopAcw'][_0x828b('0xe')](_0x1612cd,_0xb4a265),_0x1612cd['voiceQueues'][_0x17bc84][_0x828b('0x2a')]*0x3e8);_0x1612cd[_0x828b('0x8')][_0xb4a265][_0x828b('0x2c')]=moment()[_0x828b('0x2d')](_0x828b('0x2e'));_0x1612cd[_0x828b('0x8')][_0xb4a265][_0x828b('0x2f')]=_0x37f1dd;_0x1612cd['timers'][_0xb4a265][_0x828b('0x1d')]=_0x17bc84;_0x1612cd[_0x828b('0x8')][_0xb4a265][_0x828b('0x30')]=function(){var _0x2999c5=getDiff(_0x1612cd[_0x828b('0x8')][_0xb4a265][_0x828b('0x2c')]);clearTimeout(_0x1612cd[_0x828b('0x8')][_0xb4a265][_0x828b('0x2b')]);_0x1612cd[_0x828b('0x8')][_0xb4a265][_0x828b('0x2b')]=![];RpcVoiceAgentReport['update']({'acwtime':_0x2999c5},_0x1612cd[_0x828b('0x8')][_0xb4a265][_0x828b('0x2f')],_0xb4a265)[_0x828b('0x27')](function(_0x45ce){logger[_0x828b('0x28')](_0x828b('0x31'),_0x37f1dd,_0x2999c5,_0x45ce);})['catch'](function(_0x2ce6c9){logger[_0x828b('0x32')](_0x828b('0x33'),_0x37f1dd,_0x2ce6c9);});delete _0x1612cd[_0x828b('0x8')][_0xb4a265];};}});}else{logger[_0x828b('0x28')](_0x828b('0x34'),_0x37f1dd,_0xb4a265,_0x17bc84);}});}})['catch'](function(_0x4c26eb){logger[_0x828b('0x32')](_0x828b('0x29'),_0x37f1dd,_0x1612cd[_0x828b('0x6')][_0x17bc84][_0x828b('0x2a')],_0xb4a265,_0x17bc84);})[_0x828b('0x35')](function(){delete _0x1612cd[_0x828b('0x9')][_0x37f1dd];});}catch(_0x2eade5){logger[_0x828b('0x32')](_0x828b('0x36'),_0x2eade5['message']);}};Acw[_0x828b('0x1b')][_0x828b('0x37')]=function(_0x36b70f){try{var _0x3d3120=this;if(_0x3d3120[_0x828b('0x8')][_0x36b70f]){_0x3d3120[_0x828b('0x8')][_0x36b70f][_0x828b('0x2b')]=![];var _0x1c5bb7=_0x3d3120[_0x828b('0x8')][_0x36b70f][_0x828b('0x2f')];var _0x255976=_0x3d3120[_0x828b('0x8')][_0x36b70f][_0x828b('0x1d')];var _0x7b5e52=_0x3d3120[_0x828b('0x6')][_0x255976][_0x828b('0x2a')];logger['info']('[%s][TIMER][STOP][AGENT:%s]',_0x1c5bb7,_0x36b70f);RpcUser['saveUnpause'](this[_0x828b('0x7')][_0x36b70f]);RpcVoiceAgentReport['update']({'acwtime':_0x7b5e52,'agentacw':!![]},_0x1c5bb7,_0x36b70f)[_0x828b('0x27')](function(_0x430236){logger[_0x828b('0x28')]('[%s][UPDATE][ACWTIME:%s]',_0x1c5bb7,_0x7b5e52,_0x430236);})[_0x828b('0x38')](function(_0xff0549){logger['error'](_0x828b('0x33'),_0x1c5bb7,_0xff0549);});}else{logger[_0x828b('0x32')](_0x828b('0x39'),_0x36b70f);if(_0x3d3120['timers']){logger[_0x828b('0x28')](_0x828b('0x3a'),JSON[_0x828b('0x3b')](_0x3d3120[_0x828b('0x8')]));}}}catch(_0x6cc514){logger[_0x828b('0x32')](_0x828b('0x3c'),_0x6cc514[_0x828b('0x3d')]);}};Acw['prototype'][_0x828b('0xb')]=function(_0x4c6cdd){try{if(this[_0x828b('0x6')][_0x4c6cdd[_0x828b('0x1d')]]&&(this[_0x828b('0x6')][_0x4c6cdd[_0x828b('0x1d')]]['acw']||this['voiceQueues'][_0x4c6cdd[_0x828b('0x1d')]][_0x828b('0x1e')])){if(this[_0x828b('0x7')][_0x4c6cdd[_0x828b('0x1c')]]){this[_0x828b('0x9')][_0x4c6cdd[_0x828b('0x2f')]]={'queue':_0x4c6cdd[_0x828b('0x1d')],'interface':_0x4c6cdd[_0x828b('0x1c')],'destlinkedid':_0x4c6cdd['destlinkedid']};}}}catch(_0x5d6ff7){logger[_0x828b('0x32')](_0x828b('0x3e'),_0x5d6ff7['message']);}};Acw[_0x828b('0x1b')][_0x828b('0x17')]=function(_0x3cb5b4){try{if(this['voiceQueues'][_0x3cb5b4[_0x828b('0x1d')]]&&(this[_0x828b('0x6')][_0x3cb5b4[_0x828b('0x1d')]][_0x828b('0x3f')]||this[_0x828b('0x6')][_0x3cb5b4[_0x828b('0x1d')]][_0x828b('0x1e')])){if(this[_0x828b('0x7')][_0x3cb5b4[_0x828b('0x1c')]]){this[_0x828b('0x9')][_0x3cb5b4['uniqueid']]={'queue':_0x3cb5b4[_0x828b('0x1d')],'interface':_0x3cb5b4['interface']};}}}catch(_0x31d85b){logger[_0x828b('0x32')]('[ACW][syncAgentConnectPreview]\x20%s',_0x31d85b[_0x828b('0x3d')]);}};Acw[_0x828b('0x1b')][_0x828b('0xd')]=function(_0x26383b){try{if(this[_0x828b('0x9')][_0x26383b[_0x828b('0x2f')]]&&_[_0x828b('0x40')](this[_0x828b('0x9')][_0x26383b[_0x828b('0x2f')]][_0x828b('0x41')])){logger[_0x828b('0x28')]('[%s][HANGUP:UNIQUEID]',_0x26383b[_0x828b('0x2f')]);this[_0x828b('0x42')](_0x26383b['uniqueid']);}else if(this[_0x828b('0x9')][_0x26383b[_0x828b('0x43')]]&&_[_0x828b('0x40')](this[_0x828b('0x9')][_0x26383b['linkedid']][_0x828b('0x41')])){logger[_0x828b('0x28')]('[%s][HANGUP:LINKEDID]',_0x26383b['linkedid']);this[_0x828b('0x42')](_0x26383b[_0x828b('0x43')]);}}catch(_0x21940b){logger[_0x828b('0x32')](_0x828b('0x44'),_0x21940b[_0x828b('0x3d')]);}};Acw[_0x828b('0x1b')][_0x828b('0x10')]=function(_0x14f776){try{if(this[_0x828b('0x9')][_0x14f776[_0x828b('0x2f')]]&&this[_0x828b('0x9')][_0x14f776[_0x828b('0x2f')]]['attended']){logger[_0x828b('0x28')](_0x828b('0x45'),_0x14f776[_0x828b('0x2f')]);this[_0x828b('0x42')](_0x14f776[_0x828b('0x2f')]);}else if(this['channels'][_0x14f776[_0x828b('0x43')]]&&this[_0x828b('0x9')][_0x14f776[_0x828b('0x43')]][_0x828b('0x41')]){logger['info'](_0x828b('0x46'),_0x14f776['linkedid']);this[_0x828b('0x42')](_0x14f776[_0x828b('0x43')]);}}catch(_0x56b0d6){logger[_0x828b('0x32')](_0x828b('0x47'),_0x56b0d6[_0x828b('0x3d')]);}};Acw[_0x828b('0x1b')][_0x828b('0x14')]=function(_0x19d086){try{if(!_[_0x828b('0x48')](this[_0x828b('0x9')][_0x19d086[_0x828b('0x49')]])){this[_0x828b('0x42')](_0x19d086['transfereeuniqueid']);if(this[_0x828b('0x9')][_0x19d086['secondtransfereruniqueid']]){this['channels'][_0x19d086[_0x828b('0x4a')]][_0x828b('0x41')]=!![];this[_0x828b('0x9')][_0x19d086[_0x828b('0x4b')]]=this[_0x828b('0x9')][_0x19d086['secondtransfereruniqueid']];delete this[_0x828b('0x9')][_0x19d086[_0x828b('0x4a')]];}}else if(!_[_0x828b('0x48')](this[_0x828b('0x9')][_0x19d086[_0x828b('0x4b')]])){this[_0x828b('0x42')](_0x19d086['transfertargetuniqueid']);if(this[_0x828b('0x9')][_0x19d086[_0x828b('0x4c')]]){this[_0x828b('0x9')][_0x19d086[_0x828b('0x4c')]][_0x828b('0x41')]=!![];this[_0x828b('0x9')][_0x19d086[_0x828b('0x49')]]=this[_0x828b('0x9')][_0x19d086['origtransfereruniqueid']];delete this[_0x828b('0x9')][_0x19d086[_0x828b('0x4c')]];}}}catch(_0x594a2a){logger[_0x828b('0x32')](_0x828b('0x4d'),_0x594a2a[_0x828b('0x3d')]);}};Acw[_0x828b('0x1b')][_0x828b('0x4e')]=function(_0xd089b2){try{if(this['channels'][_0xd089b2[_0x828b('0x4f')]]){logger[_0x828b('0x28')](_0x828b('0x50'),JSON[_0x828b('0x3b')](_0xd089b2[_0x828b('0x4f')]));this[_0x828b('0x42')](_0xd089b2['transfereruniqueid']);}else if(this[_0x828b('0x9')][_0xd089b2[_0x828b('0x51')]]){logger[_0x828b('0x28')]('[%s][BLINDTRANSFER:LINKEDID]',JSON[_0x828b('0x3b')](_0xd089b2[_0x828b('0x51')]));this[_0x828b('0x42')](_0xd089b2[_0x828b('0x51')]);}}catch(_0x423133){logger[_0x828b('0x32')](_0x828b('0x52'),_0x423133[_0x828b('0x3d')]);}};Acw['prototype']['syncAgentRingNoAnswer']=function(_0x4df262){try{if(this[_0x828b('0x6')][_0x4df262['queue']]&&this[_0x828b('0x6')][_0x4df262['queue']]['autopause']==='all'){if(this[_0x828b('0x7')][_0x4df262[_0x828b('0x1c')]]){logger[_0x828b('0x28')](_0x828b('0x53'),_0x4df262['uniqueid'],_0x4df262[_0x828b('0x1c')],_0x4df262['queue']);return RpcUser[_0x828b('0x54')](this[_0x828b('0x7')][_0x4df262[_0x828b('0x1c')]],_0x828b('0x55'),_0x4df262[_0x828b('0x2f')]);}}}catch(_0x4653ba){logger['error'](_0x828b('0x56'),_0x4653ba[_0x828b('0x3d')]);}};module['exports']=Acw;
\ No newline at end of file
index c10ddd1..0f3471e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0x2032=['exports','bluebird','moment','util','../../config/logger','ami','asterisk','port','username','password','keepConnected','Action','promisify','action','format','error','Manager\x20\x22%s\x22\x20closed\x20to\x20%s:%s','devicestatelist','actionSipPeerStatus','sippeerstatus','actionQueueSummary','queuesummary','actionCoreShowChannels','info','Manager\x20\x22%s\x22\x20logged\x20on\x20to\x20%s:%s','once','close','connect','Shutdown\x20\x22%s\x22\x20to\x20%s:%s\x20with:\x0a%s','Fullybooted\x20\x22%s\x22\x20to\x20%s:%s','resolve','then','actionSipShowRegistry','actionDeviceStateList','catch','inspect'];(function(_0xa464c9,_0x7c86d8){var _0x3d73c4=function(_0x5c2056){while(--_0x5c2056){_0xa464c9['push'](_0xa464c9['shift']());}};_0x3d73c4(++_0x7c86d8);}(_0x2032,0xd9));var _0x2203=function(_0x2b0933,_0x1912d1){_0x2b0933=_0x2b0933-0x0;var _0x3b39ba=_0x2032[_0x2b0933];return _0x3b39ba;};'use strict';var Manager=require('asterisk-manager');var BPromise=require(_0x2203('0x0'));var moment=require(_0x2203('0x1'));var util=require(_0x2203('0x2'));var _=require('lodash');var logger=require(_0x2203('0x3'))(_0x2203('0x4'));var config=require('../../config/environment');var ami=new Manager(config[_0x2203('0x5')][_0x2203('0x6')],config[_0x2203('0x5')]['ip'],config[_0x2203('0x5')][_0x2203('0x7')],config[_0x2203('0x5')][_0x2203('0x8')],!![]);ami[_0x2203('0x9')]();ami[_0x2203('0xa')]=BPromise[_0x2203('0xb')](ami[_0x2203('0xc')]);function error(_0x5ecf9e){logger['error'](util[_0x2203('0xd')]('Manager\x20\x22%s\x22\x20error\x20to\x20%s:%s\x20with:\x0a%s',config[_0x2203('0x5')][_0x2203('0x7')],config[_0x2203('0x5')]['ip'],config['asterisk'][_0x2203('0x6')],util['inspect'](_0x5ecf9e,![],null)));}function close(){logger[_0x2203('0xe')](util['format'](_0x2203('0xf'),config[_0x2203('0x5')]['username'],config['asterisk']['ip'],config['asterisk']['port']));}ami['actionSipShowRegistry']=function(){return function(){return ami[_0x2203('0xa')]({'action':'sipshowregistry'});};};ami['actionDeviceStateList']=function(){return function(){return ami[_0x2203('0xa')]({'action':_0x2203('0x10')});};};ami[_0x2203('0x11')]=function(){return function(){return ami[_0x2203('0xa')]({'action':_0x2203('0x12')});};};ami[_0x2203('0x13')]=function(){return function(){return ami[_0x2203('0xa')]({'action':_0x2203('0x14')});};};ami[_0x2203('0x15')]=function(){return function(){return ami[_0x2203('0xa')]({'action':'coreshowchannels'});};};function connect(_0x280eda){logger[_0x2203('0x16')](util['format'](_0x2203('0x17'),config[_0x2203('0x5')]['username'],config[_0x2203('0x5')]['ip'],config['asterisk'][_0x2203('0x6')]));ami[_0x2203('0x18')](_0x2203('0xe'),error);ami[_0x2203('0x18')](_0x2203('0x19'),close);}ami['on'](_0x2203('0x1a'),connect);ami['on']('shutdown',function(_0x13d3f7){logger['info'](util['format'](_0x2203('0x1b'),config['asterisk'][_0x2203('0x7')],config[_0x2203('0x5')]['ip'],config['asterisk'][_0x2203('0x6')],util['inspect'](_0x13d3f7,![],null)));});ami['on']('fullybooted',function(_0x226374){logger[_0x2203('0x16')](util[_0x2203('0xd')](_0x2203('0x1c'),config[_0x2203('0x5')][_0x2203('0x7')],config[_0x2203('0x5')]['ip'],config[_0x2203('0x5')]['port']));return BPromise[_0x2203('0x1d')]()[_0x2203('0x1e')](ami[_0x2203('0x1f')]())['then'](ami[_0x2203('0x20')]())[_0x2203('0x1e')](ami['actionSipPeerStatus']())[_0x2203('0x1e')](ami[_0x2203('0x13')]())[_0x2203('0x1e')](ami[_0x2203('0x15')]())[_0x2203('0x21')](function(_0x1df508){logger[_0x2203('0xe')]('[ami.js][fullybooted]',util[_0x2203('0x22')](_0x1df508,{'showHidden':![],'depth':null}));});});ami[_0x2203('0x18')](_0x2203('0xe'),error);ami[_0x2203('0x18')]('close',close);module[_0x2203('0x23')]=ami;
\ No newline at end of file
index 4c8bc5f..003e344 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0xda3f=['then','rpc','memberReport','error','message','result','catch','exports','bluebird','../../config/logger','Request','request'];(function(_0x321bb2,_0x202794){var _0x9c12ed=function(_0x263dd3){while(--_0x263dd3){_0x321bb2['push'](_0x321bb2['shift']());}};_0x9c12ed(++_0x202794);}(_0xda3f,0xec));var _0xfda3=function(_0x67df4f,_0x5a93f7){_0x67df4f=_0x67df4f-0x0;var _0x32cf0e=_0xda3f[_0x67df4f];return _0x32cf0e;};'use strict';var jayson=require('jayson/promise');var BPromise=require(_0xfda3('0x0'));var logger=require(_0xfda3('0x1'))('ami');var client=jayson['client']['http']({'port':0x2329});client[_0xfda3('0x2')]=function(_0x581693,_0x36dc71){return new BPromise(function(_0x22187d,_0x516500){return client[_0xfda3('0x3')](_0x581693,_0x36dc71)[_0xfda3('0x4')](function(_0x47e7e2){logger['debug'](_0xfda3('0x5'),_0xfda3('0x6'),_0x581693,_0x36dc71,_0x47e7e2);if(_0x47e7e2[_0xfda3('0x7')]){logger[_0xfda3('0x7')](_0xfda3('0x5'),_0xfda3('0x6'),_0x581693,_0x47e7e2[_0xfda3('0x7')][_0xfda3('0x8')],_0x36dc71);return _0x516500(_0x47e7e2[_0xfda3('0x7')][_0xfda3('0x8')]);}else{return _0x22187d(_0x47e7e2[_0xfda3('0x9')]);}})[_0xfda3('0xa')](function(_0x4d7841){logger[_0xfda3('0x7')](_0xfda3('0x5'),_0xfda3('0x6'),_0x581693,_0x4d7841,_0x36dc71);return _0x516500(_0x4d7841);});});};module[_0xfda3('0xb')]=client;
\ No newline at end of file
index 8a7beec..aa1ebc7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0xf6d5=['ContactId','ListId','UserId','VoiceQueueId','CampaignId','ContactFirstName','starttime','format','YYYY-MM-DD\x20HH:mm:ss','callback','callbackuniqueid','callbackat','recallme','prototype','getCaller','\x22%s\x22\x20<%s>','dialCutDigit','number','exports','util','lodash','moment','isNil','voiceQueue','Contact','phone','firstName','lastName','queue','name','active','type','dialQueueTimeout','scheduledat','countbusyretry','countcongestionretry','countnoanswerretry','countnosuchnumberretry','countdropretry','countabandonedretry','countmachineretry'];(function(_0x5cb1af,_0x4bdc8c){var _0x8d7940=function(_0x3db70a){while(--_0x3db70a){_0x5cb1af['push'](_0x5cb1af['shift']());}};_0x8d7940(++_0x4bdc8c);}(_0xf6d5,0x132));var _0x5f6d=function(_0x3f3131,_0x326527){_0x3f3131=_0x3f3131-0x0;var _0x350016=_0xf6d5[_0x3f3131];return _0x350016;};'use strict';var util=require(_0x5f6d('0x0'));var _=require(_0x5f6d('0x1'));var moment=require(_0x5f6d('0x2'));function checkNameSurname(_0x25ed54,_0x548f06,_0x3718da){var _0x1934a1='';if(!_[_0x5f6d('0x3')](_0x548f06)&&'string'===typeof _0x548f06){_0x1934a1+=_0x548f06;}if(!_[_0x5f6d('0x3')](_0x3718da)&&'string'===typeof _0x3718da){_0x1934a1+='\x20'+_0x3718da;}if(_0x1934a1!==''){return _0x1934a1;}return _0x25ed54;}function Action(_0x27746f,_0x5d901e,_0x4ea49a){this[_0x5f6d('0x4')]=_0x27746f;this['uniqueid']=_0x4ea49a||undefined;this['name']=checkNameSurname(_0x5d901e[_0x5f6d('0x5')][_0x5f6d('0x6')],_0x5d901e['Contact'][_0x5f6d('0x7')],_0x5d901e['Contact'][_0x5f6d('0x8')]);this['number']=_0x5d901e[_0x5f6d('0x6')];this[_0x5f6d('0x9')]=_0x27746f[_0x5f6d('0xa')];this[_0x5f6d('0xb')]=_0x5d901e['active']||![];this['type']=_0x27746f[_0x5f6d('0xc')];this[_0x5f6d('0xd')]=_0x27746f[_0x5f6d('0xd')]||0x3;this['scheduledat']=_0x5d901e[_0x5f6d('0xe')];this[_0x5f6d('0xf')]=_0x5d901e[_0x5f6d('0xf')];this[_0x5f6d('0x10')]=_0x5d901e[_0x5f6d('0x10')];this[_0x5f6d('0x11')]=_0x5d901e[_0x5f6d('0x11')];this[_0x5f6d('0x12')]=_0x5d901e['countnosuchnumberretry'];this[_0x5f6d('0x13')]=_0x5d901e[_0x5f6d('0x13')];this[_0x5f6d('0x14')]=_0x5d901e[_0x5f6d('0x14')];this[_0x5f6d('0x15')]=_0x5d901e[_0x5f6d('0x15')];this['countagentrejectretry']=_0x5d901e['countagentrejectretry'];this[_0x5f6d('0x16')]=_0x5d901e[_0x5f6d('0x16')];this[_0x5f6d('0x17')]=_0x5d901e[_0x5f6d('0x17')];this['UserId']=_0x5d901e[_0x5f6d('0x18')];this[_0x5f6d('0x19')]=_0x5d901e['VoiceQueueId'];this[_0x5f6d('0x1a')]=_0x5d901e['CampaignId'];this['idHopper']=_0x5d901e['id'];this[_0x5f6d('0x1b')]=_0x5d901e['Contact']['firstName']||'';this[_0x5f6d('0x1c')]=moment()[_0x5f6d('0x1d')](_0x5f6d('0x1e'));this[_0x5f6d('0x1f')]=_0x5d901e[_0x5f6d('0x1f')];this[_0x5f6d('0x20')]=_0x5d901e['callbackuniqueid'];this[_0x5f6d('0x21')]=_0x5d901e[_0x5f6d('0x21')];this[_0x5f6d('0x22')]=_0x5d901e[_0x5f6d('0x22')];this['originatecalleridnum']='';this['originatecalleridname']='';}Action[_0x5f6d('0x23')][_0x5f6d('0x24')]=function(){return util[_0x5f6d('0x1d')](_0x5f6d('0x25'),this['name'],this['voiceQueue'][_0x5f6d('0x26')]>0x0?this[_0x5f6d('0x27')]['substring'](this['voiceQueue'][_0x5f6d('0x26')]):this['number']);};Action[_0x5f6d('0x23')]['getQueue']=function(){return this[_0x5f6d('0x9')];};module[_0x5f6d('0x28')]=Action;
\ No newline at end of file
index 5eac503..f6dca31 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0x8347=['countbusyretry','countcongestionretry','countnoanswerretry','countnosuchnumberretry','countabandonedretry','countagentrejectretry','countdropretry','countmachineretry','uniqueid','calleridname','name','calleridnum','number','starttime','responsetime','endtime','format','YYYY-MM-DD\x20HH:mm:ss','ringtime','holdtime','answertime','talktime','membername','reason','callback','callbackuniqueid','callbackat','recallme','ContactId','ListId','UserId','VoiceQueueId','CampaignId','originatecalleridnum','originatecalleridname','util','moment','milliseconds','diff','seconds','state','statedesc','Answer','scheduledat','type','campaigntype','outbound','queue'];(function(_0x11005e,_0x20c3d2){var _0x29338f=function(_0x3384e9){while(--_0x3384e9){_0x11005e['push'](_0x11005e['shift']());}};_0x29338f(++_0x20c3d2);}(_0x8347,0x83));var _0x7834=function(_0xf58904,_0x2a47b5){_0xf58904=_0xf58904-0x0;var _0x1b4a5e=_0x8347[_0xf58904];return _0x1b4a5e;};'use strict';var util=require(_0x7834('0x0'));var _=require('lodash');var moment=require(_0x7834('0x1'));function getSeconds(_0x3c43ee,_0x515963){var _0x27e97c=moment(_0x3c43ee)[_0x7834('0x2')](0x0);var _0x19e8b1=moment(_0x515963)[_0x7834('0x2')](0x0);return _0x27e97c[_0x7834('0x3')](_0x19e8b1,_0x7834('0x4'));}function AgentComplete(_0x23acb2,_0x4c9ac8){this[_0x7834('0x5')]=0x4;this[_0x7834('0x6')]=_0x7834('0x7');this[_0x7834('0x8')]=_0x23acb2[_0x7834('0x8')];this['type']=_0x23acb2[_0x7834('0x9')];this[_0x7834('0xa')]=_0x23acb2[_0x7834('0x9')]===_0x7834('0xb')?_0x7834('0xc'):_0x23acb2['type'];this['countbusyretry']=_0x23acb2[_0x7834('0xd')];this[_0x7834('0xe')]=_0x23acb2['countcongestionretry'];this[_0x7834('0xf')]=_0x23acb2[_0x7834('0xf')];this['countglobal']=_0x23acb2[_0x7834('0xd')]+_0x23acb2['countcongestionretry']+_0x23acb2[_0x7834('0xf')]+_0x23acb2[_0x7834('0x10')]+_0x23acb2['countdropretry']+_0x23acb2[_0x7834('0x11')]+_0x23acb2['countmachineretry']+_0x23acb2[_0x7834('0x12')];this['countnosuchnumberretry']=_0x23acb2[_0x7834('0x10')];this[_0x7834('0x13')]=_0x23acb2[_0x7834('0x13')];this['countabandonedretry']=_0x23acb2['countabandonedretry'];this[_0x7834('0x14')]=_0x23acb2[_0x7834('0x14')];this[_0x7834('0x12')]=_0x23acb2['countagentrejectretry'];this[_0x7834('0x15')]=_0x4c9ac8[_0x7834('0x15')];this[_0x7834('0x16')]=_0x23acb2[_0x7834('0x17')];this[_0x7834('0x18')]=_0x23acb2[_0x7834('0x19')];this[_0x7834('0x1a')]=_0x23acb2['starttime'];this[_0x7834('0x1b')]=_0x23acb2['responsetime'];this['answertime']=_0x23acb2['answertime'];this[_0x7834('0x1c')]=moment()[_0x7834('0x1d')](_0x7834('0x1e'));this[_0x7834('0x1f')]=getSeconds(_0x23acb2[_0x7834('0x1b')],_0x23acb2[_0x7834('0x1a')]);this[_0x7834('0x20')]=getSeconds(_0x23acb2[_0x7834('0x21')],_0x23acb2[_0x7834('0x1b')]);this[_0x7834('0x22')]=getSeconds(this[_0x7834('0x1c')],_0x23acb2[_0x7834('0x21')]);this[_0x7834('0xc')]=_0x4c9ac8['queue'];this[_0x7834('0x23')]=_0x4c9ac8[_0x7834('0x23')];this[_0x7834('0x24')]=_0x4c9ac8['reason'];this[_0x7834('0x25')]=_0x23acb2[_0x7834('0x25')];this[_0x7834('0x26')]=_0x23acb2['callbackuniqueid'];this[_0x7834('0x27')]=_0x23acb2[_0x7834('0x27')];this[_0x7834('0x28')]=_0x23acb2[_0x7834('0x28')];this[_0x7834('0x29')]=_0x23acb2[_0x7834('0x29')];this[_0x7834('0x2a')]=_0x23acb2['ListId'];this[_0x7834('0x2b')]=_0x23acb2[_0x7834('0x2b')];this[_0x7834('0x2c')]=_0x23acb2[_0x7834('0x2c')];this[_0x7834('0x2d')]=_0x23acb2[_0x7834('0x2d')];this[_0x7834('0x2e')]=_0x23acb2[_0x7834('0x2e')]||'';this[_0x7834('0x2f')]=_0x23acb2['originatecalleridname']||'';}module['exports']=AgentComplete;
\ No newline at end of file
index b74324b..3f18ecc 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0x6c7b=['recallme','ContactId','ListId','UserId','VoiceQueueId','CampaignId','originatecalleridnum','originatecalleridname','util','milliseconds','seconds','uniqueid','scheduledat','type','campaigntype','outbound','queue','countbusyretry','countcongestionretry','countnoanswerretry','countglobal','countdropretry','countabandonedretry','countmachineretry','countagentrejectretry','countnosuchnumberretry','calleridname','calleridnum','starttime','responsetime','endtime','ringtime','holdtime','talktime','callback','callbackuniqueid','callbackat'];(function(_0x598419,_0x521a50){var _0x19c03c=function(_0x55b8ad){while(--_0x55b8ad){_0x598419['push'](_0x598419['shift']());}};_0x19c03c(++_0x521a50);}(_0x6c7b,0x10b));var _0xb6c7=function(_0xaae5cc,_0x46d786){_0xaae5cc=_0xaae5cc-0x0;var _0x236171=_0x6c7b[_0xaae5cc];return _0x236171;};'use strict';var util=require(_0xb6c7('0x0'));var _=require('lodash');var moment=require('moment');function getSeconds(_0x4fd587,_0x3f3910){var _0x5528b3=moment(_0x4fd587)[_0xb6c7('0x1')](0x0);var _0x438aa8=moment(_0x3f3910)[_0xb6c7('0x1')](0x0);return _0x5528b3['diff'](_0x438aa8,_0xb6c7('0x2'));}function Final(_0x290c39){this[_0xb6c7('0x3')]=_0x290c39[_0xb6c7('0x3')];this[_0xb6c7('0x4')]=_0x290c39['scheduledat'];this[_0xb6c7('0x5')]=_0x290c39[_0xb6c7('0x5')];this[_0xb6c7('0x6')]=_0x290c39[_0xb6c7('0x5')]===_0xb6c7('0x7')?_0xb6c7('0x8'):_0x290c39[_0xb6c7('0x5')];this[_0xb6c7('0x9')]=_0x290c39['countbusyretry'];this['countcongestionretry']=_0x290c39[_0xb6c7('0xa')];this[_0xb6c7('0xb')]=_0x290c39[_0xb6c7('0xb')];this[_0xb6c7('0xc')]=_0x290c39[_0xb6c7('0x9')]+_0x290c39[_0xb6c7('0xa')]+_0x290c39[_0xb6c7('0xb')]+_0x290c39['countnosuchnumberretry']+_0x290c39[_0xb6c7('0xd')]+_0x290c39[_0xb6c7('0xe')]+_0x290c39[_0xb6c7('0xf')]+_0x290c39[_0xb6c7('0x10')];this[_0xb6c7('0x11')]=_0x290c39[_0xb6c7('0x11')];this[_0xb6c7('0xd')]=_0x290c39['countdropretry'];this[_0xb6c7('0xe')]=_0x290c39['countabandonedretry'];this['countmachineretry']=_0x290c39['countmachineretry'];this[_0xb6c7('0x10')]=_0x290c39['countagentrejectretry'];this[_0xb6c7('0x8')]=_0x290c39[_0xb6c7('0x8')];this[_0xb6c7('0x12')]=_0x290c39[_0xb6c7('0x12')];this[_0xb6c7('0x13')]=_0x290c39[_0xb6c7('0x13')];this[_0xb6c7('0x14')]=_0x290c39[_0xb6c7('0x14')];this[_0xb6c7('0x15')]=_0x290c39[_0xb6c7('0x15')];this[_0xb6c7('0x16')]=_0x290c39[_0xb6c7('0x15')];this[_0xb6c7('0x17')]=_0x290c39['ringtime']||0x0;this[_0xb6c7('0x18')]=_0x290c39[_0xb6c7('0x18')]||0x0;this['talktime']=_0x290c39[_0xb6c7('0x19')]||0x0;this['callback']=_0x290c39[_0xb6c7('0x1a')];this['callbackuniqueid']=_0x290c39[_0xb6c7('0x1b')];this['callbackat']=_0x290c39[_0xb6c7('0x1c')];this[_0xb6c7('0x1d')]=_0x290c39['recallme'];this[_0xb6c7('0x1e')]=_0x290c39[_0xb6c7('0x1e')];this[_0xb6c7('0x1f')]=_0x290c39[_0xb6c7('0x1f')];this[_0xb6c7('0x20')]=_0x290c39[_0xb6c7('0x20')];this['VoiceQueueId']=_0x290c39[_0xb6c7('0x21')];this[_0xb6c7('0x22')]=_0x290c39[_0xb6c7('0x22')];this[_0xb6c7('0x23')]=_0x290c39['originatecalleridnum']||'';this[_0xb6c7('0x24')]=_0x290c39[_0xb6c7('0x24')]||'';}module['exports']=Final;
\ No newline at end of file
index f5aacc8..d82295c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0xc490=['countnosuchnumberretry','uniqueid','name','calleridnum','number','starttime','responsetime','endtime','format','YYYY-MM-DD\x20HH:mm:ss','ringtime','holdtime','IVR','reason','cause-txt','callback','callbackuniqueid','callbackat','recallme','ContactId','ListId','UserId','VoiceQueueId','CampaignId','exports','util','lodash','moment','diff','seconds','state','statedesc','Answer','scheduledat','type','queue','countbusyretry','countcongestionretry','countnoanswerretry','countglobal','countdropretry','countabandonedretry','countmachineretry','countagentrejectretry'];(function(_0x110c3d,_0x12ee06){var _0x226d67=function(_0x1fb6e1){while(--_0x1fb6e1){_0x110c3d['push'](_0x110c3d['shift']());}};_0x226d67(++_0x12ee06);}(_0xc490,0x121));var _0x0c49=function(_0x4abf00,_0x4ba3ad){_0x4abf00=_0x4abf00-0x0;var _0x402206=_0xc490[_0x4abf00];return _0x402206;};'use strict';var util=require(_0x0c49('0x0'));var _=require(_0x0c49('0x1'));var moment=require(_0x0c49('0x2'));function getSeconds(_0x26968e,_0x39bd25){var _0x59c885=moment(_0x26968e)['milliseconds'](0x0);var _0x19b828=moment(_0x39bd25)['milliseconds'](0x0);return _0x59c885[_0x0c49('0x3')](_0x19b828,_0x0c49('0x4'));}function Hangup(_0x441988,_0x22b30b){this[_0x0c49('0x5')]=0x4;this[_0x0c49('0x6')]=_0x0c49('0x7');this[_0x0c49('0x8')]=_0x441988[_0x0c49('0x8')];this[_0x0c49('0x9')]=_0x441988[_0x0c49('0x9')];this['campaigntype']=_0x441988[_0x0c49('0x9')]==='outbound'?_0x0c49('0xa'):_0x441988['type'];this[_0x0c49('0xb')]=_0x441988[_0x0c49('0xb')];this[_0x0c49('0xc')]=_0x441988[_0x0c49('0xc')];this[_0x0c49('0xd')]=_0x441988[_0x0c49('0xd')];this[_0x0c49('0xe')]=_0x441988['countbusyretry']+_0x441988['countcongestionretry']+_0x441988[_0x0c49('0xd')]+_0x441988['countnosuchnumberretry']+_0x441988[_0x0c49('0xf')]+_0x441988[_0x0c49('0x10')]+_0x441988[_0x0c49('0x11')]+_0x441988[_0x0c49('0x12')];this[_0x0c49('0x13')]=_0x441988[_0x0c49('0x13')];this[_0x0c49('0xf')]=_0x441988[_0x0c49('0xf')];this[_0x0c49('0x10')]=_0x441988[_0x0c49('0x10')];this[_0x0c49('0x11')]=_0x441988[_0x0c49('0x11')];this[_0x0c49('0x12')]=_0x441988[_0x0c49('0x12')];this['uniqueid']=_0x22b30b[_0x0c49('0x14')];this['calleridname']=_0x441988[_0x0c49('0x15')];this[_0x0c49('0x16')]=_0x441988[_0x0c49('0x17')];this[_0x0c49('0x18')]=_0x441988[_0x0c49('0x18')];this[_0x0c49('0x19')]=_0x441988[_0x0c49('0x19')];this[_0x0c49('0x1a')]=moment()[_0x0c49('0x1b')](_0x0c49('0x1c'));this[_0x0c49('0x1d')]=getSeconds(_0x441988[_0x0c49('0x19')],_0x441988['starttime']);this[_0x0c49('0x1e')]=0x0;this['talktime']=getSeconds(this[_0x0c49('0x1a')],_0x441988['responsetime']);this[_0x0c49('0xa')]=_0x441988[_0x0c49('0xa')];this['membername']=_0x0c49('0x1f');this[_0x0c49('0x20')]=_0x22b30b[_0x0c49('0x21')];this[_0x0c49('0x22')]=_0x441988[_0x0c49('0x22')];this[_0x0c49('0x23')]=_0x441988[_0x0c49('0x23')];this[_0x0c49('0x24')]=_0x441988['callbackat'];this[_0x0c49('0x25')]=_0x441988[_0x0c49('0x25')];this[_0x0c49('0x26')]=_0x441988['ContactId'];this['ListId']=_0x441988[_0x0c49('0x27')];this[_0x0c49('0x28')]=_0x441988['UserId'];this[_0x0c49('0x29')]=_0x441988[_0x0c49('0x29')];this[_0x0c49('0x2a')]=_0x441988[_0x0c49('0x2a')];}module[_0x0c49('0x2b')]=Hangup;
\ No newline at end of file
index 0891a6d..0ea7752 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0xad3b=['UserId','VoiceQueueId','CampaignId','originatecalleridnum','originatecalleridname','lodash','moment','milliseconds','diff','seconds','uniqueid','scheduledat','type','outbound','countbusyretry','countcongestionretry','countnoanswerretry','countnosuchnumberretry','countdropretry','countabandonedretry','countagentrejectretry','queue','calleridnum','starttime','responsetime','ringtime','holdtime','talktime','callback','callbackuniqueid','callbackat','recallme','ContactId'];(function(_0x5b7e2d,_0x2ffe71){var _0x48ed69=function(_0x836607){while(--_0x836607){_0x5b7e2d['push'](_0x5b7e2d['shift']());}};_0x48ed69(++_0x2ffe71);}(_0xad3b,0xec));var _0xbad3=function(_0x3fe6df,_0x5a04d4){_0x3fe6df=_0x3fe6df-0x0;var _0x372a0e=_0xad3b[_0x3fe6df];return _0x372a0e;};'use strict';var util=require('util');var _=require(_0xbad3('0x0'));var moment=require(_0xbad3('0x1'));function getSeconds(_0x223607,_0x27e16a){var _0x5ddc14=moment(_0x223607)[_0xbad3('0x2')](0x0);var _0x42acd7=moment(_0x27e16a)[_0xbad3('0x2')](0x0);return _0x5ddc14[_0xbad3('0x3')](_0x42acd7,_0xbad3('0x4'));}function History(_0x59df68){this['uniqueid']=_0x59df68[_0xbad3('0x5')];this['scheduledat']=_0x59df68[_0xbad3('0x6')]||undefined;this[_0xbad3('0x7')]=_0x59df68[_0xbad3('0x7')];this['campaigntype']=_0x59df68[_0xbad3('0x7')]===_0xbad3('0x8')?'queue':_0x59df68[_0xbad3('0x7')];this['countbusyretry']=_0x59df68[_0xbad3('0x9')];this[_0xbad3('0xa')]=_0x59df68[_0xbad3('0xa')];this[_0xbad3('0xb')]=_0x59df68[_0xbad3('0xb')];this['countglobal']=_0x59df68[_0xbad3('0x9')]+_0x59df68[_0xbad3('0xa')]+_0x59df68[_0xbad3('0xb')]+_0x59df68[_0xbad3('0xc')]+_0x59df68[_0xbad3('0xd')]+_0x59df68[_0xbad3('0xe')]+_0x59df68['countmachineretry']+_0x59df68[_0xbad3('0xf')];this[_0xbad3('0xc')]=_0x59df68[_0xbad3('0xc')];this[_0xbad3('0xd')]=_0x59df68[_0xbad3('0xd')];this[_0xbad3('0xe')]=_0x59df68[_0xbad3('0xe')];this['countmachineretry']=_0x59df68['countmachineretry'];this[_0xbad3('0xf')]=_0x59df68[_0xbad3('0xf')];this['queue']=_0x59df68[_0xbad3('0x10')];this['calleridname']=_0x59df68['name'];this[_0xbad3('0x11')]=_0x59df68['number'];this[_0xbad3('0x12')]=_0x59df68['starttime'];this[_0xbad3('0x13')]=_0x59df68[_0xbad3('0x13')];this['endtime']=_0x59df68[_0xbad3('0x13')];this[_0xbad3('0x14')]=getSeconds(_0x59df68[_0xbad3('0x13')],_0x59df68[_0xbad3('0x12')]);this[_0xbad3('0x15')]=0x0;this[_0xbad3('0x16')]=0x0;this[_0xbad3('0x17')]=_0x59df68[_0xbad3('0x17')];this['callbackuniqueid']=_0x59df68[_0xbad3('0x18')];this[_0xbad3('0x19')]=_0x59df68[_0xbad3('0x19')];this[_0xbad3('0x1a')]=_0x59df68[_0xbad3('0x1a')];this[_0xbad3('0x1b')]=_0x59df68[_0xbad3('0x1b')];this['ListId']=_0x59df68['ListId'];this['UserId']=_0x59df68[_0xbad3('0x1c')];this[_0xbad3('0x1d')]=_0x59df68['VoiceQueueId'];this[_0xbad3('0x1e')]=_0x59df68[_0xbad3('0x1e')];this[_0xbad3('0x1f')]=_0x59df68['originatecalleridnum']||'';this[_0xbad3('0x20')]=_0x59df68[_0xbad3('0x20')]||'';}module['exports']=History;
\ No newline at end of file
index 0e56032..9f2c34e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0x6cc3=['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','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','erlangCalls','One\x20call\x20every:\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20','Agent\x20Busy\x20Factor:\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','merge','startPredictive','handlePredictive','preview','string','\x22%s\x22\x20<%s>','debug','inspect','error','undefined','[decremetOriginate]\x20object\x20originated\x20is\x20negative','[decremetOriginate]\x20is\x20null\x20or\x20undefined','contactsRescheduled','RESCHEDULED_CONTACTS','[getContactDialer2][ReScheduled]','AVAILABLE_CONTACTS_FINISHED','[getContactDialer2][Empty]','sendMessageOneNotActive','waiting','[syncQueueSummary]\x20Campaign\x20Queue:\x20','IS_DISACTIVED','is\x20disactive','[syncQueueSummary]\x20Campaign\x20Ivr:\x20','is\x20not\x20active','statedesc','endtime','starttime','loopClearZombieChannels','clearZombieChannels','uniqueId','[uniqueid]','[actions]','sequence','enqueue','status','channel','No\x20such\x20channel','updateOriginated','queue','[Dialer][checkChannel]','resolve','countReScheduled','catch','[countReScheduled]\x20','checkIsBlackList','[checkIsBlackList]\x20','verifyAdditionalPhones','[swapAdditionalPhone]\x20','checkIsBlackListIvr','avgHandleTime','[averageHandleTime]\x20','rescheduleContact','[rescheduleContact]\x20','unlockContact','[unlockContact]\x20','getContactDialer','temp','[getContactDialer]\x20','getContactDialerIvr','[getContactDialerIvr]\x20','getVoiceQueueRtPauses','[getVoiceQueueRtPauses]\x20','moveContactManagedDialer','[moveContactManagedDialer]\x20','createHistory','[updateOriginated]\x20is\x20null\x20or\x20undefined','loggerHandler','emptyContact','notFound','saveInDb','pick','ContactId','ListId','UserId','VoiceQueueId','CampaignId','[emptyContact]','Success','isTrunkReachable','SIP/%s','unmonitored','uniqueid','isNil','variable','amdstatus','exten','xcally-motion-dialer','outboundAnswerAgiCallsDay','state','HangupInAMD','membername','custom:amd','buildObj','amd','[syncHangupInAMD][createHistory]','dialAMDActive','value','MACHINE','Machine','AMD','countglobal','[syncAgentComplete][createHistory][0]','countbusyretry','countcongestionretry','countnoanswerretry','countnosuchnumberretry','countdropretry','countabandonedretry','countmachineretry','countagentrejectretry','dialGlobalMaxRetry','stateGlobal','reason19\x20machine....','dialMachineMaxRetry','createStateFinal','add','minutes','YYYY-MM-DD\x20HH:mm:ss','[rescheduleContact][Machine]','[syncHangupInAMDIvr][createHistory]','reason\x2019\x20machine....','dialMachineRetryFrequency','ivrAnswerCallsDay','[syncHangupIvr][createHistory]','dialQueueProject','AGI','cause-txt','Unknow','[syncHangupIvr]','agiafterat','dialQueueProject2','dialAgiAfterHangupAgent','[syncAgentComplete]','answertime','queueCallerAbandonCreateState','[syncAgentComplete][createHistory]','syncQueueCallerAbandon','droptime','responsetime','dialQueueTimeout','Drop','dropreason','dialDropRetryFrequency','callAdditionalPhoneAfterMin','voiceQueue','additional','dialDropMaxRetry','[rescheduleContact][Drop]','calleridname','calleridnum','[syncAgentComplete][createHistory][10]','Abandoned','CALLEREXIT','dialAbandonedRetryFrequency','dialAbandonedMaxRetry','[syncAgentComplete][createHistory][11]','swapAdditionalPhones','roundrobin','actionid','locked','paused','stateinterface','push','idHopper','queueStatusComplete','[unlockQueueStatus][undefined]','[booked][unlockQueueStatus]','stringify','run','[Catch][Preview][syncQueueStatusComplete]','[unlock][syncQueueStatusComplete]','queueBookedRR','_rr','length','unlockRR','Agent:\x20','contactAgent-idHopper:\x20','[booked][RR][finaly]','[booked][unlock]','[booked][unlock2]','[unlock2][syncQueueStatusComplete]','[booked][unlock3]','syncCampaigns','checkIsTrunkReachable','TrunkBackup','TRUNK_IS_NOT_REACHABLE','\x20trunk\x20is\x20not\x20reachable','checkIfTime','ifTime','Failure','\x20Intervals\x20is\x20null\x20','INTERVAL_IS_EMPTY','TIMEZONE_UNKNOW','\x20Timezone\x20unknow\x20','isArray','Action','iftime\x20%s,%s','interval','timezones','command','content','indexOf','true','some','GLOBAL_INTERVAL_IS_OVERTIME','INTERVAL_IS_OVERTIME','[ifTime][promiseAll]','\x20Interval\x20is\x20overtime:\x20','Timezone:\x20','checkDialMethod','progressive','power','dialPowerLevel','handlePower','method\x20not\x20recognized','checkPreviewRecallReminder','Agent','user:dialPreviewRecallReminder','launchHandleIvr','handleIvr','loggedIn','dialGlobalInterval','dialTimezone','checkIfTimeIntervals','[syncQueueSummary]','throttle','filter','dialPreviewRecallmeReminder','online','reachable','handlePreviewRecallNotifications','map','user:%s','[syncCampaigns]','\x5cw{0,','pow','replace','random','match','actionOriginate','object','voiceQueue\x20is\x20undefine','phone','originate','contact\x20is\x20undefine','getCaller','\x22agi://%s/square,%s\x22','NONE','\x22%s,%s%s,,,%s\x22','dialQueueOptions','dialer','ACTIVE','XMD-AMDGREETING','dialAMDGreeting','XMD-AMDAFTERGREETINGSILENCE','dialAMDAfterGreetingSilence','XMD-AMDTOTALANALYSISTIME','dialAMDTotalAnalysisTime','XMD-AMDMINWORDLENGTH','XMD-AMDBETWEENWORDSSILENCE','dialAMDBetweenWordsSilence','dialAMDMaximumNumberOfWords','XMD-AMDSILENCETHRESHOLD','dialAMDSilenceThreshold','dialAMDMaximumWordLength','XMD-VOICEQUEUEID','XMD-CAMPAIGNID','Contact','tags','createdAt','%s%s','XMD-','toUpper','dialOriginateCallerIdName','dialRandomLastDigitCallerIdNumber','XMD-ORIGINATECALLERIDNUM','dialPrefix','trim','dialCutDigit','substring','dialOriginateTimeout','outboundOriginateFailureCallsDay','[originateError]:\x20%s','[originate][error]','originate\x20action\x20Error','syncOriginateResponse','getQueue','isSuccess','response','callProgressDetecting','[callProgressDetecting]\x20','dialNoAnswerMaxRetry','dialBusyRetryFrequency','[rescheduleContact]\x20[Busy]','dialCongestionMaxRetry','[rescheduleContact]\x20[Congestion]','dialNoSuchNumberMaxRetry','dialNoSuchNumberRetryFrequency','[rescheduleContact][NoSuchNumber]','[rescheduleContact][Abandoned]','dialAgentRejectMaxRetry','dialAgentRejectRetryFrequency','entity\x20is\x20undefine','[callProgressDetecting]','evt\x20is\x20undefine','reason','NoSuchNumber','custom:agentnosuchnumber','nosuchnumber','checkRetriveMax','reason\x200\x20no\x20such\x20number....','NoAnswer','buildNoAnswerEventPayload','custom:agentnoanswer','reason\x203\x20ringing\x20no\x20answer','Busy','custom:agentbusy','dialBusyMaxRetry','reason\x205\x20busy','outboundCongestionCallsDay','dialCongestionRetryFrequency','custom:agentcongestion','congestion','[syncAgentComplete][createHistory][8]','reason\x208\x20congestion','outboundAbandonedCallsDay','reason\x2011\x20abandoned','outboundRejectCallsDay','AgentReject','custom:agentreject','agentreject','[syncAgentComplete][createHistory][20]','reason\x2020\x20agentreject','[syncAgentComplete][createHistory][?]','[moveContactManagedDialer][0]','contact\x20not\x20moved','dialPredictiveOptimizationPercentage','round','predictiveIntervalMinThreshold','floor','predictiveIntervalHitRate','predictiveIntervalMultiplicativeFactor','[startMethodPredictive][StartProgressive]','check\x20predictive\x20is\x20not\x20undefine','check\x20handlePredictive\x20is\x20not\x20undefine','dialPredictiveInterval','[startMethodPredictive][StartProgressive][Loop]','dialPredictiveOptimization','dropRate','Dropped\x20calls\x20day','[stopMethodPredictive][ReStartProgressive][ExceededDropInterval]','Drop\x20in\x20this\x20interval','averageHandleTime','startMethodPredictive','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(','available','abandonmentRate','agentBusyFactor','busyFactor','[getDataPredictive]','Unknown\x20Predictive','check\x20failure','outboundQueuePauses','[CatchErlangB]','[handlePredictive]','fail\x20to\x20scheduled\x20calls','recallme','[booked][checkContactBlack]','queuestatus','Queue:\x20','[unlockOriginate][syncQueueStatusComplete]','scheduledat','voicePause','dialRecallInQueue','[rescheduleContact][dialRecallInQueue]','RECALLINQUEUE','[Originate][HistoryDialRecallInQueue][historyCatch]','RECALLFAILEDTIMEOUT','RecallFailedTimeout','[Originate][HistoryRecallClose]','BLACKLIST','[Originate][historyBlacklist]','[Originate][MoveBlacklist]','dialOrderByScheduledAt','[getContactCampaign2][Empty]','RUNNING','checkContactBlack','[actionOriginateIvr]\x20','[getContactCampaign2]','dialLimitQueue','not_inuse','[actionOriginate]\x20','tryOriginatePredictive','[actionOriginatePredictive]\x20','--------\x20Drop\x20Rate\x20--------','M:\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20','Interval:\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20','Ts:\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20','P:\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20','Amax:\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20','[abandonmentRate]','Ts\x20=\x20','p\x20=\x20','interval\x20=\x20','----\x20Agent\x20Busy\x20Factor\x20----','Umin:\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20','[busyFactor]','m\x20=\x20','Umin\x20=\x20','exports','util','uuid','moment','md5','../preview/util/util','../../../config/environment/','../../../config/logger','booked','predictive','predictiveCalls','syncQueueSummary','../ami','redis','defaults','localhost','socket.io-emitter','../rpc/cmHopper','../rpc/cmHopperHistory','../rpc/cmHopperAdditionalPhone','../rpc/cmHopperBlack','../rpc/voiceQueueRt','../rpc/setting','./action','./agentComplete','./queueCallerAbandon','env','XCALLY_IP_AGI','127.0.0.1','rrmemory','prototype','tail','finally','voiceQueues','campaigns','agents','trunks','maxNumberOriginate','channels','actions','contactsId','optionPredictive','startProgressive','ivrOriginated','queueBooked','agentconnect','syncAgentConnect','queuecallerabandon','bind','agentcomplete','syncAgentComplete','custom:queuesummary','custom:queuesummarycomplete','syncQueueSummaryComplete','hangup','syncHangup','syncNewExten','varset','syncVarSet','queuemember','syncQueueMember','syncQueueStatusComplete','loopCampaigns','then','previewRecallmeReminderInterval','isUndefined','message','AGENTS_NOT_LOGGED','name','\x20AGENTS\x20NOT\x20LOGGED','NOT_ACTIVE','\x20NOT\x20Active','Interval','Intervals','INTERVAL_IS_NULL','\x20INTERVAL_IS_NULL','[ifTime][Action]','Error','milliseconds','seconds','emit','type','outbound','strategy','answered','pTalking','sumBillable','sumHoldTime','talking','unmanaged','loggedInDb','dialActive','dialMethod','dialOriginateCallerIdNumber','outboundAnswerCallsDay','outboundBlacklistCallsDay','outboundBusyCallsDay','outboundDropCallsDayACS','outboundDropCallsDayCallersExit','outboundDropCallsDayTimeout','outboundNoAnswerCallsDay','outboundNoSuchCallsDay','outboundReCallsDay','outboundUnknownCallsDay','predictiveIntervalAnsweredCalls','predictiveIntervalAvgHoldtime','predictiveIntervalAvgTalktime','predictiveIntervalDroppedCallsCallersExit','predictiveIntervalDroppedCallsTimeout','predictiveIntervalErlangCallsDroppedCalls','predictiveIntervalPauses','predictiveIntervalAvailable','predictiveIntervalTotalCalls','originated','erlangCallToSecond','erlangAbandonmentRate','erlangBusyFactor','Trunk','active','callerid','format','voice:queue:%s','voice_queue:save','ivr','campaign:ivr:%s','isEmpty'];(function(_0x34b360,_0x4906ea){var _0x356583=function(_0x9c7144){while(--_0x9c7144){_0x34b360['push'](_0x34b360['shift']());}};_0x356583(++_0x4906ea);}(_0x6cc3,0x1b2));var _0x36cc=function(_0x307086,_0x3bfe4e){_0x307086=_0x307086-0x0;var _0x699043=_0x6cc3[_0x307086];return _0x699043;};'use strict';var util=require(_0x36cc('0x0'));var _=require('lodash');var uuid=require(_0x36cc('0x1'));var moment=require(_0x36cc('0x2'));var rr=require('rr');var md5=require(_0x36cc('0x3'));var Redis=require('ioredis');var ut=require(_0x36cc('0x4'));var config=require(_0x36cc('0x5'));var logger=require(_0x36cc('0x6'))('dialer');var loggerBooked=require(_0x36cc('0x6'))(_0x36cc('0x7'));var loggerPredictive=require('../../../config/logger')(_0x36cc('0x8'));var loggerPredictiveCalls=require(_0x36cc('0x6'))(_0x36cc('0x9'));var loggerSyncQueueSummary=require(_0x36cc('0x6'))(_0x36cc('0xa'));var ami=require(_0x36cc('0xb'));config[_0x36cc('0xc')]=_[_0x36cc('0xd')](config[_0x36cc('0xc')],{'host':_0x36cc('0xe'),'port':0x18eb});var io=require(_0x36cc('0xf'))(new Redis(config['redis']));var cmHopper=require(_0x36cc('0x10'));var cmHopperHistory=require(_0x36cc('0x11'));var cmHopperAdditionalPhone=require(_0x36cc('0x12'));var cmHopperBlack=require(_0x36cc('0x13'));var voiceQueueRt=require(_0x36cc('0x14'));var RpcSetting=require(_0x36cc('0x15'));var Action=require(_0x36cc('0x16'));var History=require('./history');var Final=require('./final');var AgentComplete=require(_0x36cc('0x17'));var QueueCallerAbandon=require(_0x36cc('0x18'));var Hangup=require('./hangup');var ipAgi=process[_0x36cc('0x19')][_0x36cc('0x1a')]||_0x36cc('0x1b');var strategy={'rrmemory':_0x36cc('0x1c'),'roundrobin':'roundrobin'};var previewRecallmeReminderInterval=0x1;var Sequence=function(){};Sequence[_0x36cc('0x1d')]['enqueue']=function(_0x5d91e4){this[_0x36cc('0x1e')]=this[_0x36cc('0x1e')]?this[_0x36cc('0x1e')][_0x36cc('0x1f')](_0x5d91e4):_0x5d91e4();};function Dialer(_0x189931,_0x180d9e){this['sequence']=new Sequence();this['preview']=_0x180d9e;this[_0x36cc('0x20')]=_0x189931[_0x36cc('0x20')];this[_0x36cc('0x21')]=_0x189931['campaigns'];this[_0x36cc('0x22')]=_0x189931[_0x36cc('0x22')];this[_0x36cc('0x23')]=_0x189931['trunks'];this[_0x36cc('0x24')]=config[_0x36cc('0x24')]||0x2;this[_0x36cc('0x25')]={};this[_0x36cc('0x26')]={};this[_0x36cc('0x27')]={};this['uniqueId']={};this[_0x36cc('0x28')]={};this['startPredictive']={};this[_0x36cc('0x29')]={};this[_0x36cc('0x2a')]={};this[_0x36cc('0x2b')]={};this['queueBookedRR']={};ami['on'](_0x36cc('0x2c'),this[_0x36cc('0x2d')]['bind'](this));ami['on'](_0x36cc('0x2e'),this['syncQueueCallerAbandon']['bind'](this));ami['on']('originateresponse',this['syncOriginateResponse'][_0x36cc('0x2f')](this));ami['on'](_0x36cc('0x30'),this[_0x36cc('0x31')][_0x36cc('0x2f')](this));ami['on'](_0x36cc('0x32'),this[_0x36cc('0xa')]['bind'](this));ami['on'](_0x36cc('0x33'),this[_0x36cc('0x34')][_0x36cc('0x2f')](this));ami['on'](_0x36cc('0x35'),this[_0x36cc('0x36')][_0x36cc('0x2f')](this));ami['on']('newexten',this[_0x36cc('0x37')][_0x36cc('0x2f')](this));ami['on'](_0x36cc('0x38'),this[_0x36cc('0x39')][_0x36cc('0x2f')](this));ami['on'](_0x36cc('0x3a'),this[_0x36cc('0x3b')]['bind'](this));ami['on']('queuestatuscomplete',this[_0x36cc('0x3c')][_0x36cc('0x2f')](this));this[_0x36cc('0x3d')]();this['loopClearZombieChannels']();RpcSetting['getSettings']()[_0x36cc('0x3e')](function(_0x11d819){previewRecallmeReminderInterval=_0x11d819[_0x36cc('0x3f')];});}function isNotNull(_0x549c6e){return _0x549c6e!==null&&!_[_0x36cc('0x40')](_0x549c6e);}function checkIsLoggedIn(_0x2528a8,_0x1772c2){return function(){if(_0x1772c2<=0x0){_0x2528a8[_0x36cc('0x41')]=_0x36cc('0x42');throw _0x2528a8[_0x36cc('0x43')]+_0x36cc('0x44');}};}function isActive(_0x3893d3){return _0x3893d3;}function checkIsActive(_0xb15486,_0x84f201){return function(){if(!isActive(_0x84f201)){_0xb15486[_0x36cc('0x41')]=_0x36cc('0x45');throw _0xb15486['name']+_0x36cc('0x46');}};}function checkInterval(_0x1d0a67){return function(){if(!isNotNull(_0x1d0a67['Interval'])){_0x1d0a67[_0x36cc('0x41')]='INTERVAL_IS_NULL';throw _0x1d0a67[_0x36cc('0x43')]+'\x20INTERVAL_IS_NULL';}if(!isNotNull(_0x1d0a67[_0x36cc('0x47')][_0x36cc('0x48')])){_0x1d0a67[_0x36cc('0x41')]=_0x36cc('0x49');throw _0x1d0a67[_0x36cc('0x43')]+_0x36cc('0x4a');}if(!isNotNull(_['isEmpty'](_0x1d0a67[_0x36cc('0x47')][_0x36cc('0x48')]))){_0x1d0a67[_0x36cc('0x41')]=_0x36cc('0x49');throw _0x1d0a67[_0x36cc('0x43')]+_0x36cc('0x4a');}};}function msgResponse(_0x52c46e,_0x58d960,_0x780f86){return{'action':_0x52c46e,'response':_0x58d960,'message':_0x780f86,'stack':_0x780f86};}function myreject(_0x18a24b){return function(_0x36b390){return _0x18a24b(msgResponse(_0x36cc('0x4b'),_0x36cc('0x4c'),JSON['stringify'](_0x36b390)));};}function getSeconds(_0x3ae715,_0x5affda){var _0x40be30=moment(_0x3ae715)[_0x36cc('0x4d')](0x0);var _0x4fdca2=moment(_0x5affda)[_0x36cc('0x4d')](0x0);return _0x40be30['diff'](_0x4fdca2,_0x36cc('0x4e'));}function emit(_0x5749af,_0x1d9e39,_0x152284){io['to'](_0x5749af)[_0x36cc('0x4f')](_0x1d9e39,_0x152284);}function emitVoiceQueueSummary(_0x7a46a2){if(_0x7a46a2[_0x36cc('0x50')]===_0x36cc('0x51')){var _0x41be22={'id':_0x7a46a2['id'],'name':_0x7a46a2[_0x36cc('0x43')],'strategy':_0x7a46a2[_0x36cc('0x52')],'answered':_0x7a46a2[_0x36cc('0x53')],'available':_0x7a46a2['available'],'loggedIn':_0x7a46a2['loggedIn'],'pTalking':_0x7a46a2[_0x36cc('0x54')],'sumBillable':_0x7a46a2[_0x36cc('0x55')],'sumDuration':_0x7a46a2['sumDuration'],'sumHoldTime':_0x7a46a2[_0x36cc('0x56')]||0x0,'talking':_0x7a46a2[_0x36cc('0x57')],'total':_0x7a46a2['total'],'type':_0x7a46a2[_0x36cc('0x50')],'unmanaged':_0x7a46a2[_0x36cc('0x58')],'abandoned':_0x7a46a2['abandoned'],'waiting':_0x7a46a2['waiting'],'loggedInDb':_0x7a46a2[_0x36cc('0x59')],'dialActive':_0x7a46a2[_0x36cc('0x5a')],'dialMethod':_0x7a46a2[_0x36cc('0x5b')],'dialOriginateCallerIdName':_0x7a46a2['dialOriginateCallerIdName'],'dialOriginateCallerIdNumber':_0x7a46a2[_0x36cc('0x5c')],'dialOriginateTimeout':_0x7a46a2['dialOriginateTimeout'],'dialPrefix':_0x7a46a2['dialPrefix'],'outboundAnswerAgiCallsDay':_0x7a46a2['outboundAnswerAgiCallsDay'],'outboundAnswerCallsDay':_0x7a46a2[_0x36cc('0x5d')],'outboundBlacklistCallsDay':_0x7a46a2[_0x36cc('0x5e')],'outboundBusyCallsDay':_0x7a46a2[_0x36cc('0x5f')],'outboundCongestionCallsDay':_0x7a46a2['outboundCongestionCallsDay'],'outboundDropCallsDayACS':_0x7a46a2[_0x36cc('0x60')],'outboundDropCallsDayCallersExit':_0x7a46a2[_0x36cc('0x61')],'outboundDropCallsDayTimeout':_0x7a46a2[_0x36cc('0x62')],'outboundNoAnswerCallsDay':_0x7a46a2[_0x36cc('0x63')],'outboundNoSuchCallsDay':_0x7a46a2[_0x36cc('0x64')],'outboundOriginateFailureCallsDay':_0x7a46a2['outboundOriginateFailureCallsDay'],'outboundReCallsDay':_0x7a46a2[_0x36cc('0x65')],'outboundRejectCallsDay':_0x7a46a2['outboundRejectCallsDay'],'outboundUnknownCallsDay':_0x7a46a2[_0x36cc('0x66')],'predictiveIntervalAnsweredCalls':_0x7a46a2[_0x36cc('0x67')],'predictiveIntervalAvgHoldtime':_0x7a46a2[_0x36cc('0x68')],'predictiveIntervalAvgTalktime':_0x7a46a2[_0x36cc('0x69')],'predictiveIntervalDroppedCallsCallersExit':_0x7a46a2[_0x36cc('0x6a')],'predictiveIntervalDroppedCallsTimeout':_0x7a46a2[_0x36cc('0x6b')],'predictiveIntervalErlangCalls':_0x7a46a2['predictiveIntervalErlangCalls'],'predictiveIntervalErlangCallsDroppedCalls':_0x7a46a2[_0x36cc('0x6c')],'predictiveIntervalHitRate':_0x7a46a2['predictiveIntervalHitRate'],'predictiveIntervalMultiplicativeFactor':_0x7a46a2['predictiveIntervalMultiplicativeFactor'],'predictiveIntervalPauses':_0x7a46a2[_0x36cc('0x6d')],'predictiveIntervalAvailable':_0x7a46a2[_0x36cc('0x6e')],'predictiveIntervalTotalCalls':_0x7a46a2[_0x36cc('0x6f')],'message':_0x7a46a2[_0x36cc('0x41')],'originated':_0x7a46a2[_0x36cc('0x70')],'erlangCalls':_0x7a46a2['erlangCalls'],'erlangCallToSecond':_0x7a46a2[_0x36cc('0x71')],'erlangAbandonmentRate':_0x7a46a2[_0x36cc('0x72')],'erlangBusyFactor':_0x7a46a2[_0x36cc('0x73')],'startPredictive':_0x7a46a2['startPredictive'],'startProgressive':_0x7a46a2['startProgressive']};if(_0x7a46a2['Trunk']){_0x41be22['Trunk']={'id':_0x7a46a2[_0x36cc('0x74')]['id'],'name':_0x7a46a2['Trunk'][_0x36cc('0x43')],'active':_0x7a46a2[_0x36cc('0x74')][_0x36cc('0x75')],'callerid':_0x7a46a2[_0x36cc('0x74')][_0x36cc('0x76')]};}if(_0x7a46a2[_0x36cc('0x47')]){_0x41be22[_0x36cc('0x47')]={'id':_0x7a46a2[_0x36cc('0x47')]['id'],'name':_0x7a46a2[_0x36cc('0x47')]['name']};}var _0x1cc8c1=md5(JSON['stringify'](_0x41be22));if(_0x7a46a2[_0x36cc('0x3')]!==_0x1cc8c1){_0x7a46a2[_0x36cc('0x3')]=_0x1cc8c1;emit(util[_0x36cc('0x77')](_0x36cc('0x78'),_0x41be22[_0x36cc('0x43')]),_0x36cc('0x79'),_0x41be22);}}}function emitCampaignSummary(_0x34065d){if(_0x34065d[_0x36cc('0x50')]===_0x36cc('0x7a')){emit(util['format'](_0x36cc('0x7b'),_0x34065d[_0x36cc('0x43')]),'campaign:save',_0x34065d);}}function checkGetDataPredictive(_0x2122d8){if(isNotNull(_0x2122d8)&&!_[_0x36cc('0x7c')](_0x2122d8)){loggerPredictive[_0x36cc('0x7d')](_0x36cc('0x7e'));loggerPredictive[_0x36cc('0x7d')](_0x36cc('0x7f'),_0x2122d8['predictiveIntervalTotalCalls']);loggerPredictive[_0x36cc('0x7d')](_0x36cc('0x80'),_0x2122d8[_0x36cc('0x67')]);loggerPredictive[_0x36cc('0x7d')](_0x36cc('0x81'),_0x2122d8['predictiveIntervalDroppedCallsTimeout']);loggerPredictive[_0x36cc('0x7d')](_0x36cc('0x82'),_0x2122d8[_0x36cc('0x6a')]);loggerPredictive[_0x36cc('0x7d')](_0x36cc('0x83'),_0x2122d8[_0x36cc('0x68')]);loggerPredictive['info'](_0x36cc('0x84'),_0x2122d8[_0x36cc('0x69')]);loggerPredictive[_0x36cc('0x7d')](_0x36cc('0x85'));if(_0x2122d8[_0x36cc('0x6f')]>0x0){if(!_[_0x36cc('0x40')](_0x2122d8[_0x36cc('0x69')])&&_0x2122d8[_0x36cc('0x69')]>0x0){return!![];}loggerPredictive[_0x36cc('0x7d')](_0x36cc('0x86'));if(!_[_0x36cc('0x40')](_0x2122d8[_0x36cc('0x68')])&&_0x2122d8['predictiveIntervalAvgHoldtime']>0x0){return!![];}loggerPredictive[_0x36cc('0x7d')](_0x36cc('0x87'));}else{loggerPredictive[_0x36cc('0x7d')](_0x36cc('0x88'));}}else{loggerPredictive[_0x36cc('0x7d')](_0x36cc('0x89'));}return![];}function mergeDataErlangB(_0x544f11){return function(_0x34e307){loggerPredictive[_0x36cc('0x7d')](_0x36cc('0x8a'));loggerPredictive['info'](_0x36cc('0x8b'),_0x34e307[_0x36cc('0x8c')]);loggerPredictive['info'](_0x36cc('0x8d'),_0x34e307[_0x36cc('0x71')]);loggerPredictive[_0x36cc('0x7d')]('Drop\x20Rate:\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20',_0x34e307[_0x36cc('0x72')]);loggerPredictive[_0x36cc('0x7d')](_0x36cc('0x8e'),_0x34e307['erlangBusyFactor']);loggerPredictive[_0x36cc('0x7d')](_0x36cc('0x8f'),_0x34e307['erlangAbandonmentRate']);loggerPredictive[_0x36cc('0x7d')](_0x36cc('0x85'));_[_0x36cc('0x90')](_0x544f11,_0x34e307);};}function getDiff(_0x340b7e){var _0x10f4ef=moment()['milliseconds'](0x0);var _0x71e0b0=moment(_0x340b7e)['milliseconds'](0x0);return _0x10f4ef['diff'](_0x71e0b0,_0x36cc('0x4e'));}function ifInterval(_0x2d8ee1,_0x366095){if(_[_0x36cc('0x40')](_0x366095)){return![];}return getDiff(_0x366095)<_0x2d8ee1*0x3c;}function freeVariablesPredictive(_0x51274c){if(isNotNull(_0x51274c)){if(!_[_0x36cc('0x40')](_0x51274c[_0x36cc('0x29')])){_0x51274c[_0x36cc('0x29')]=undefined;loggerPredictive[_0x36cc('0x7d')](_0x51274c[_0x36cc('0x43')],'clearing\x20variable\x20start\x20progressive');}if(!_[_0x36cc('0x40')](_0x51274c[_0x36cc('0x91')])){_0x51274c[_0x36cc('0x91')]=undefined;loggerPredictive[_0x36cc('0x7d')](_0x51274c[_0x36cc('0x43')],'clearing\x20variable\x20start\x20predictive');}if(!_[_0x36cc('0x40')](_0x51274c[_0x36cc('0x92')])){clearInterval(_0x51274c[_0x36cc('0x92')]);_0x51274c[_0x36cc('0x92')]=undefined;loggerPredictive['info'](_0x51274c[_0x36cc('0x43')],'clearing\x20variable\x20handle\x20predictive');}}}function erlangb(_0x43a7f6,_0x3350e0){if(_0x3350e0===0x0){return 0x0;}var _0x593c38=0x1;for(var _0x2d0bcf=0x1;_0x2d0bcf<=_0x3350e0;_0x2d0bcf+=0x1){_0x593c38=0x1+_0x593c38*_0x2d0bcf/_0x43a7f6;}return 0x1/_0x593c38;}function isVoiceQueueOutbound(_0x20d876){return _0x20d876==='outbound';}function isNotPreview(_0x3315e4){return _0x3315e4!==_0x36cc('0x93');}function isCampaignIvr(_0x4385e0){return _0x4385e0==='ivr';}function getCallerId(_0x3cdc39,_0x47713f,_0x4d7969){if(!_['isUndefined'](_0x4d7969)&&typeof _0x4d7969===_0x36cc('0x94')&&!_[_0x36cc('0x7c')](_0x4d7969)){if(!_[_0x36cc('0x40')](_0x47713f)&&typeof _0x47713f===_0x36cc('0x94')&&!_[_0x36cc('0x7c')](_0x47713f)){return util[_0x36cc('0x77')](_0x36cc('0x95'),_0x47713f,_0x4d7969);}return util['format'](_0x36cc('0x95'),_0x4d7969,_0x4d7969);}if(!_['isUndefined'](_0x3cdc39)&&typeof _0x3cdc39===_0x36cc('0x94')&&!_[_0x36cc('0x7c')](_0x3cdc39)){return _0x3cdc39;}return'\x22\x22\x20<>';}function loggerCatchQueueSummary(_0x13bdde,_0x4851eb){return function(_0x491990){freeVariablesPredictive(_0x4851eb);emitVoiceQueueSummary(_0x4851eb);emitCampaignSummary(_0x4851eb);loggerSyncQueueSummary[_0x36cc('0x96')](_0x13bdde,util[_0x36cc('0x97')](_0x491990,{'showHidden':![],'depth':null}));};}function loggerCatchPredictive(_0x4a80d7,_0x42f361){return function(_0x573a5a){loggerPredictive[_0x36cc('0x98')](_0x42f361[_0x36cc('0x43')],_0x4a80d7);loggerPredictive[_0x36cc('0x98')](_0x573a5a['stack']);freeVariablesPredictive(_0x42f361);};}function loggerCatch(_0x5058ae){return function(_0x46f1e2){logger[_0x36cc('0x98')](_0x5058ae,util[_0x36cc('0x97')](_0x46f1e2,{'showHidden':![],'depth':null}));};}function checkContactEmpty(_0xf8b034){return _0xf8b034&&!_[_0x36cc('0x40')](_0xf8b034)&&_0xf8b034['length']>0x0;}function decremetOriginate(_0x4a12b1){if(!_['isUndefined'](_0x4a12b1)&&_0x4a12b1!==null){if(typeof _0x4a12b1[_0x36cc('0x70')]!==_0x36cc('0x99')){if(_0x4a12b1[_0x36cc('0x70')]>0x0){_0x4a12b1['originated']-=0x1;}else{logger[_0x36cc('0x98')](_0x36cc('0x9a'));}}}else{logger[_0x36cc('0x98')](_0x36cc('0x9b'));}}function checkContactLowerLimitOriginate(_0x2c47b8,_0x3393f5,_0x1a9ccf){if(_0x3393f5>_0x1a9ccf){for(var _0x507467=0x0;_0x507467<_0x3393f5-_0x1a9ccf;_0x507467+=0x1){decremetOriginate(_0x2c47b8);}}}function loggerGetContactDialer(_0x32d4ed,_0x448c12,_0x2f5c47){return function(_0x5ccec1){checkContactLowerLimitOriginate(_0x448c12,_0x2f5c47,0x0);logger[_0x36cc('0x98')](_0x32d4ed,util[_0x36cc('0x97')](_0x5ccec1,{'showHidden':![],'depth':null}));};}function sendMessageReschedule(_0x4a1c70){return function(_0x3442c6){if(isNotNull(_0x3442c6)&&isNotNull(_0x3442c6[0x0])){if(_0x3442c6[0x0][_0x36cc('0x9c')]>0x0){_0x4a1c70['message']=_0x36cc('0x9d');logger[_0x36cc('0x7d')](_0x36cc('0x9e')+_0x4a1c70['name'],_0x3442c6[0x0][_0x36cc('0x9c')],'contacts');}else{_0x4a1c70[_0x36cc('0x41')]=_0x36cc('0x9f');logger[_0x36cc('0x7d')](_0x36cc('0xa0')+_0x4a1c70['name']);}}};}function notSendMessagesQueue(_0x5ef43a){if(_0x5ef43a[_0x36cc('0xa1')]){freeVariablesPredictive(_0x5ef43a);if(_0x5ef43a[_0x36cc('0x70')]===0x0&&_0x5ef43a[_0x36cc('0x57')]===0x0&&_0x5ef43a[_0x36cc('0xa2')]===0x0&&(_0x5ef43a[_0x36cc('0x54')]||0x0)===0x0){_0x5ef43a[_0x36cc('0xa1')]=![];_0x5ef43a['available']=0x0;_0x5ef43a[_0x36cc('0x41')]=_0x36cc('0x45');loggerSyncQueueSummary[_0x36cc('0x96')](_0x36cc('0xa3'),_0x5ef43a[_0x36cc('0x43')],'is\x20not\x20active');}else{_0x5ef43a[_0x36cc('0x41')]=_0x36cc('0xa4');loggerSyncQueueSummary[_0x36cc('0x96')]('[syncQueueSummary]\x20Campaign\x20Queue:\x20',_0x5ef43a[_0x36cc('0x43')],_0x36cc('0xa5'));}emitVoiceQueueSummary(_0x5ef43a);}}function notSendMessagesCampaign(_0x2271af){if(_0x2271af[_0x36cc('0xa1')]){if(_0x2271af[_0x36cc('0x70')]===0x0){_0x2271af[_0x36cc('0xa1')]=![];_0x2271af[_0x36cc('0x41')]='NOT_ACTIVE';loggerSyncQueueSummary[_0x36cc('0x96')](_0x36cc('0xa6'),_0x2271af[_0x36cc('0x43')],_0x36cc('0xa7'));}else{_0x2271af[_0x36cc('0x41')]=_0x36cc('0xa4');loggerSyncQueueSummary[_0x36cc('0x96')]('[syncQueueSummary]\x20Campaign\x20Ivr:\x20',_0x2271af[_0x36cc('0x43')],_0x36cc('0xa5'));}emitCampaignSummary(_0x2271af);}}function createObjHistory(_0x588aa0,_0x2b8bb5,_0x5102b6,_0x412456,_0x4c1051){_0x588aa0[_0x36cc('0x41')]=_0x5102b6;var _0x2276fe=new Action(_0x588aa0,_0x2b8bb5);var _0x115c33=new History(_0x2276fe);_0x115c33['state']=_0x412456;_0x115c33[_0x36cc('0xa8')]=_0x4c1051;_0x115c33[_0x36cc('0xa9')]=_0x2276fe[_0x36cc('0xaa')];return _0x115c33;}Dialer[_0x36cc('0x1d')][_0x36cc('0xab')]=function(){var _0x3220f7=this;setInterval(function(){_0x3220f7[_0x36cc('0xac')](_0x3220f7[_0x36cc('0xad')],_0x36cc('0xae'));_0x3220f7[_0x36cc('0xac')](_0x3220f7[_0x36cc('0x26')],_0x36cc('0xaf'));},0x32c8);};Dialer[_0x36cc('0x1d')][_0x36cc('0xac')]=function(_0x3a6f8e,_0x1a00a1){var _0x46f629=this;for(var _0xf07112 in _0x3a6f8e){if(typeof _0x3a6f8e[_0xf07112]!==_0x36cc('0x99')){this[_0x36cc('0xb0')][_0x36cc('0xb1')](function(){if(!_['isNil'](_0x3a6f8e[_0xf07112])){return ami['Action']({'action':_0x36cc('0xb2'),'channel':_0x3a6f8e[_0xf07112][_0x36cc('0xb3')]})['catch'](function(_0x184327){if(_0x184327['message']===_0x36cc('0xb4')){setTimeout(function(){if(_0x3a6f8e[_0xf07112]&&_0x3a6f8e[_0xf07112][_0x36cc('0x50')]!=='ivr'){_0x46f629[_0x36cc('0xb5')](_0x46f629[_0x36cc('0x20')][_0x3a6f8e[_0xf07112][_0x36cc('0xb6')]]);logger['error'](_0x36cc('0xb7'),_0x1a00a1,_0xf07112,_0x3a6f8e[_0xf07112][_0x36cc('0xb6')]);delete _0x3a6f8e[_0xf07112];}if(_0x3a6f8e[_0xf07112]&&_0x3a6f8e[_0xf07112][_0x36cc('0x50')]===_0x36cc('0x7a')){_0x46f629[_0x36cc('0xb5')](_0x46f629[_0x36cc('0x21')][_0x3a6f8e[_0xf07112][_0x36cc('0xb6')]]);logger[_0x36cc('0x98')]('[Dialer][checkChannel][ivr]',_0x1a00a1,_0xf07112,_0x3a6f8e[_0xf07112][_0x36cc('0xb6')]);delete _0x3a6f8e[_0xf07112];}},0x2328);}});}});}}};Dialer[_0x36cc('0x1d')]['countReScheduled']=function(_0x49bde7){return Promise[_0x36cc('0xb8')]()[_0x36cc('0x3e')](cmHopper[_0x36cc('0xb9')](_0x49bde7))[_0x36cc('0xba')](loggerCatch(_0x36cc('0xbb')));};Dialer['prototype'][_0x36cc('0xbc')]=function(_0x573c65){return Promise[_0x36cc('0xb8')]()[_0x36cc('0x3e')](cmHopperBlack[_0x36cc('0xbc')](_0x573c65))['catch'](loggerCatch(_0x36cc('0xbd')));};Dialer[_0x36cc('0x1d')][_0x36cc('0xbe')]=function(_0x4d4fed,_0x339295,_0x2889c2){return Promise['resolve']()[_0x36cc('0x3e')](cmHopperAdditionalPhone[_0x36cc('0xbe')](_0x4d4fed,_0x339295,_0x2889c2))[_0x36cc('0xba')](loggerCatch('[verifyAdditionalPhone]\x20'));};Dialer['prototype']['swapAdditionalPhones']=function(_0x594d8c,_0x11a159,_0x259c78){return Promise[_0x36cc('0xb8')]()[_0x36cc('0x3e')](cmHopperAdditionalPhone['swapAdditionalPhones'](_0x594d8c,_0x11a159,_0x259c78))['catch'](loggerCatch(_0x36cc('0xbf')));};Dialer[_0x36cc('0x1d')][_0x36cc('0xc0')]=function(_0x503ab6){return Promise[_0x36cc('0xb8')]()[_0x36cc('0x3e')](cmHopperBlack[_0x36cc('0xc0')](_0x503ab6))[_0x36cc('0xba')](loggerCatch('[checkIsBlackListIvr]\x20'));};Dialer[_0x36cc('0x1d')]['averageHandleTime']=function(_0x4b62c6){return Promise[_0x36cc('0xb8')]()[_0x36cc('0x3e')](cmHopperHistory[_0x36cc('0xc1')](_0x4b62c6))['catch'](loggerCatch(_0x36cc('0xc2')));};Dialer[_0x36cc('0x1d')][_0x36cc('0xc3')]=function(_0x562d23){return Promise[_0x36cc('0xb8')]()[_0x36cc('0x3e')](cmHopper[_0x36cc('0xc3')](_0x562d23))['catch'](loggerCatch(_0x36cc('0xc4')));};Dialer['prototype'][_0x36cc('0xc5')]=function(_0x4d4498,_0x3d7306,_0x562803){return Promise[_0x36cc('0xb8')]()[_0x36cc('0x3e')](cmHopper[_0x36cc('0xc5')](_0x4d4498,_0x3d7306,_0x562803))[_0x36cc('0xba')](loggerCatch(_0x36cc('0xc6')));};Dialer[_0x36cc('0x1d')][_0x36cc('0xc7')]=function(_0x2d1416,_0x439542,_0x23a82d,_0x1fbe66,_0x46b790){return Promise[_0x36cc('0xb8')]()[_0x36cc('0x3e')](cmHopper[_0x36cc('0xc7')](_0x2d1416,_0x439542,_0x23a82d,_0x1fbe66))['catch'](function(_0x3512c5){_0x46b790[_0x36cc('0xc8')]-=_0x23a82d;_0x46b790[_0x36cc('0xc8')]=_0x46b790['temp']>0x0?_0x46b790[_0x36cc('0xc8')]:0x0;loggerCatch(_0x36cc('0xc9'))(_0x3512c5);});};Dialer['prototype'][_0x36cc('0xca')]=function(_0x11ac53,_0x194c3f,_0x1fdd1b,_0x19bd33){return Promise['resolve']()[_0x36cc('0x3e')](cmHopper['getContactDialerIvr'](_0x11ac53,_0x194c3f,_0x1fdd1b))[_0x36cc('0xba')](function(_0x49b529){_0x19bd33[_0x36cc('0xc8')]-=_0x194c3f;_0x19bd33[_0x36cc('0xc8')]=_0x19bd33[_0x36cc('0xc8')]>0x0?_0x19bd33[_0x36cc('0xc8')]:0x0;loggerCatch(_0x36cc('0xcb'))(_0x49b529);});};Dialer[_0x36cc('0x1d')][_0x36cc('0xcc')]=function(_0x57a67c){return Promise[_0x36cc('0xb8')]()[_0x36cc('0x3e')](voiceQueueRt[_0x36cc('0xcc')](_0x57a67c))[_0x36cc('0xba')](loggerCatch(_0x36cc('0xcd')));};Dialer[_0x36cc('0x1d')][_0x36cc('0xce')]=function(_0xaf64b1){return Promise[_0x36cc('0xb8')]()[_0x36cc('0x3e')](cmHopper[_0x36cc('0xce')](_0xaf64b1))[_0x36cc('0xba')](loggerCatch(_0x36cc('0xcf')));};Dialer[_0x36cc('0x1d')]['createHistory']=function(_0x4b354a){return Promise[_0x36cc('0xb8')]()[_0x36cc('0x3e')](cmHopperHistory[_0x36cc('0xd0')](_0x4b354a))[_0x36cc('0xba')](loggerCatch('[createHistory]\x20'));};Dialer[_0x36cc('0x1d')][_0x36cc('0xb5')]=function(_0x4f7432){if(!_[_0x36cc('0x40')](_0x4f7432)&&_0x4f7432!==null){if(typeof _0x4f7432[_0x36cc('0x70')]!==_0x36cc('0x99')){if(_0x4f7432['originated']>0x0){_0x4f7432[_0x36cc('0x70')]-=0x1;}else{logger[_0x36cc('0x98')]('[updateOriginated]\x20object\x20originated\x20is\x20negative');}}}else{logger[_0x36cc('0x98')](_0x36cc('0xd1'));}};Dialer[_0x36cc('0x1d')][_0x36cc('0xd2')]=function(_0x7ae1de,_0x1eecea){var _0x4245d2=this;return function(_0x5dc9c1){_0x4245d2[_0x36cc('0xb5')](_0x1eecea);logger[_0x36cc('0x98')](_0x7ae1de,util[_0x36cc('0x97')](_0x5dc9c1,{'showHidden':![],'depth':null}));};};Dialer['prototype'][_0x36cc('0xd3')]=function(_0x13d0b4,_0x95bcbe,_0x2ba789){var _0x4d14c2={'state':0x19,'statedesc':_0x36cc('0xd4')};this[_0x36cc('0xb5')](_0x95bcbe);this[_0x36cc('0xd5')](_[_0x36cc('0x90')](_0x4d14c2,_[_0x36cc('0xd6')](_0x2ba789,[_0x36cc('0xd7'),_0x36cc('0xd8'),_0x36cc('0xd9'),_0x36cc('0xda'),_0x36cc('0xdb')])),'[emptyContact][createHistory]',_0x36cc('0xdc'));logger[_0x36cc('0x98')](_0x13d0b4);};Dialer['prototype']['isSuccess']=function(_0x212b21){return _0x212b21===_0x36cc('0xdd');};Dialer[_0x36cc('0x1d')][_0x36cc('0xde')]=function(_0x166184){return!_[_0x36cc('0x40')](_0x166184)&&_0x166184&&!_[_0x36cc('0x40')](_0x166184[_0x36cc('0x43')])&&!_[_0x36cc('0x40')](_0x166184[_0x36cc('0x75')])&&_0x166184[_0x36cc('0x75')]&&(this[_0x36cc('0x23')][util[_0x36cc('0x77')](_0x36cc('0xdf'),_0x166184[_0x36cc('0x43')])]['status']==='reachable'||this[_0x36cc('0x23')][util[_0x36cc('0x77')](_0x36cc('0xdf'),_0x166184[_0x36cc('0x43')])][_0x36cc('0xb2')]===_0x36cc('0xe0'));};Dialer[_0x36cc('0x1d')]['saveInDb']=function(_0x57aa68,_0x902af6,_0x3d8e12){this[_0x36cc('0xd0')](_0x57aa68)[_0x36cc('0xba')](loggerCatch(_0x902af6));this['moveContactManagedDialer'](_0x57aa68)[_0x36cc('0xba')](loggerCatch(_0x3d8e12));};Dialer[_0x36cc('0x1d')][_0x36cc('0x39')]=function(_0xbe8e6c){var _0x438b83=this;var _0x3a2dda=this[_0x36cc('0xad')][_0xbe8e6c[_0x36cc('0xe1')]];var _0x1126aa;if(!_[_0x36cc('0xe2')](_0xbe8e6c)&&!_[_0x36cc('0xe2')](_0xbe8e6c[_0x36cc('0xe3')])&&!_[_0x36cc('0xe2')](_0xbe8e6c[_0x36cc('0xe3')][_0x36cc('0xe4')])&&_0xbe8e6c[_0x36cc('0xe5')]===_0x36cc('0xe6')&&_0x3a2dda){if(_0x3a2dda[_0x36cc('0x50')]!==_0x36cc('0x7a')&&this[_0x36cc('0x20')][_0x3a2dda['queue']]['dialAMDActive']&&_0xbe8e6c['value']==='HANGUP'){delete this[_0x36cc('0xad')][_0xbe8e6c[_0x36cc('0xe1')]];this['updateOriginated'](this[_0x36cc('0x20')][_0x3a2dda['queue']]);this['voiceQueues'][_0x3a2dda[_0x36cc('0xb6')]][_0x36cc('0x5d')]+=0x1;this['voiceQueues'][_0x3a2dda[_0x36cc('0xb6')]][_0x36cc('0xe7')]+=0x1;_0x1126aa=new Hangup(_0x3a2dda,_0xbe8e6c);_0x1126aa[_0x36cc('0xe8')]=0x12;_0x1126aa[_0x36cc('0xa8')]=_0x36cc('0xe9');_0x1126aa[_0x36cc('0xea')]='AMD';ami[_0x36cc('0x4f')](_0x36cc('0xeb'),ut[_0x36cc('0xec')](_0x1126aa,_0x36cc('0xed')));this[_0x36cc('0xd5')](_0x1126aa,_0x36cc('0xee'),'[syncHangupInAMD]');}if(_0x3a2dda[_0x36cc('0x50')]!==_0x36cc('0x7a')&&this['voiceQueues'][_0x3a2dda[_0x36cc('0xb6')]][_0x36cc('0xef')]&&_0xbe8e6c[_0x36cc('0xf0')]===_0x36cc('0xf1')){return new Promise(function(_0x3a3262,_0x495a48){delete _0x438b83[_0x36cc('0xad')][_0xbe8e6c[_0x36cc('0xe1')]];_0x438b83['updateOriginated'](_0x438b83[_0x36cc('0x20')][_0x3a2dda[_0x36cc('0xb6')]]);_0x438b83['voiceQueues'][_0x3a2dda['queue']]['outboundAnswerCallsDay']+=0x1;_0x438b83['voiceQueues'][_0x3a2dda[_0x36cc('0xb6')]]['outboundAnswerAgiCallsDay']+=0x1;var _0x53a65d=_0x438b83[_0x36cc('0x20')][_0x3a2dda[_0x36cc('0xb6')]];var _0x4c7152=new Hangup(_0x3a2dda,_0xbe8e6c);_0x4c7152[_0x36cc('0xe8')]=0x13;_0x4c7152[_0x36cc('0xa8')]=_0x36cc('0xf2');_0x4c7152[_0x36cc('0xea')]=_0x36cc('0xf3');_0x4c7152['countmachineretry']+=0x1;_0x4c7152[_0x36cc('0xf4')]+=0x1;_0x4c7152[_0x36cc('0xed')]=!![];ami[_0x36cc('0x4f')](_0x36cc('0xeb'),ut['buildObj'](_0x4c7152,_0x36cc('0xed')));_0x438b83[_0x36cc('0xd0')](_0x4c7152)['catch'](loggerCatch(_0x36cc('0xf5')));if(_0x4c7152[_0x36cc('0xf6')]+_0x4c7152[_0x36cc('0xf7')]+_0x4c7152[_0x36cc('0xf8')]+_0x4c7152[_0x36cc('0xf9')]+_0x4c7152[_0x36cc('0xfa')]+_0x4c7152[_0x36cc('0xfb')]+_0x4c7152[_0x36cc('0xfc')]+_0x4c7152[_0x36cc('0xfd')]>=_0x53a65d[_0x36cc('0xfe')]){_0x438b83[_0x36cc('0xff')](_0x4c7152,_0x3a3262,_0x495a48,_0x36cc('0x100'));}else{if(_0x4c7152[_0x36cc('0xfc')]>=_0x53a65d[_0x36cc('0x101')]){_0x438b83[_0x36cc('0x102')](_0x4c7152,_0x3a3262,_0x495a48,'reason\x2019\x20machine....');}else{_0x438b83['rescheduleContact']({'active':![],'countmachineretry':_0x4c7152[_0x36cc('0xfc')],'scheduledat':moment()[_0x36cc('0x103')](_0x53a65d['dialMachineRetryFrequency'],_0x36cc('0x104'))[_0x36cc('0x77')](_0x36cc('0x105')),'ContactId':_0x4c7152[_0x36cc('0xd7')],'ListId':_0x4c7152[_0x36cc('0xd8')],'VoiceQueueId':_0x4c7152['VoiceQueueId']||undefined,'CampaignId':_0x4c7152['CampaignId']||undefined})[_0x36cc('0xba')](loggerCatch(_0x36cc('0x106')));_0x3a3262({'reschedule':0x1});}}});}if(_0x3a2dda['type']==='ivr'&&this[_0x36cc('0x21')][_0x3a2dda['queue']][_0x36cc('0xef')]&&_0xbe8e6c[_0x36cc('0xf0')]==='HANGUP'){delete this[_0x36cc('0xad')][_0xbe8e6c['uniqueid']];this[_0x36cc('0xb5')](this['campaigns'][_0x3a2dda[_0x36cc('0xb6')]]);_0x1126aa=new Hangup(_0x3a2dda,_0xbe8e6c);_0x1126aa[_0x36cc('0xe8')]=0x12;_0x1126aa[_0x36cc('0xa8')]=_0x36cc('0xe9');_0x1126aa[_0x36cc('0xea')]='AMD';ami[_0x36cc('0x4f')](_0x36cc('0xeb'),ut[_0x36cc('0xec')](_0x1126aa,'amd'));this[_0x36cc('0xd5')](_0x1126aa,_0x36cc('0x107'),'[syncHangupInAMDIvr]');}if(_0x3a2dda[_0x36cc('0x50')]===_0x36cc('0x7a')&&this[_0x36cc('0x21')][_0x3a2dda['queue']][_0x36cc('0xef')]&&_0xbe8e6c[_0x36cc('0xf0')]===_0x36cc('0xf1')){return new Promise(function(_0x391ced,_0x522dca){delete _0x438b83['uniqueId'][_0xbe8e6c[_0x36cc('0xe1')]];_0x438b83[_0x36cc('0xb5')](_0x438b83[_0x36cc('0x21')][_0x3a2dda['queue']]);_0x438b83[_0x36cc('0x21')][_0x3a2dda[_0x36cc('0xb6')]]['outboundAnswerCallsDay']+=0x1;_0x438b83[_0x36cc('0x21')][_0x3a2dda['queue']][_0x36cc('0xe7')]+=0x1;var _0x3b7b92=_0x438b83['campaigns'][_0x3a2dda[_0x36cc('0xb6')]];var _0x5d8a62=new Hangup(_0x3a2dda,_0xbe8e6c);_0x5d8a62[_0x36cc('0xe8')]=0x13;_0x5d8a62[_0x36cc('0xa8')]=_0x36cc('0xf2');_0x5d8a62[_0x36cc('0xea')]=_0x36cc('0xf3');_0x5d8a62['countmachineretry']+=0x1;_0x5d8a62[_0x36cc('0xf4')]+=0x1;_0x5d8a62[_0x36cc('0xed')]=!![];ami[_0x36cc('0x4f')](_0x36cc('0xeb'),ut[_0x36cc('0xec')](_0x5d8a62,'amd'));_0x438b83['createHistory'](_0x5d8a62)[_0x36cc('0xba')](loggerCatch(_0x36cc('0xf5')));if(_0x5d8a62[_0x36cc('0xf6')]+_0x5d8a62['countcongestionretry']+_0x5d8a62[_0x36cc('0xf8')]+_0x5d8a62[_0x36cc('0xf9')]+_0x5d8a62['countdropretry']+_0x5d8a62[_0x36cc('0xfb')]+_0x5d8a62[_0x36cc('0xfc')]+_0x5d8a62['countagentrejectretry']>=_0x3b7b92[_0x36cc('0xfe')]){_0x438b83['stateGlobal'](_0x5d8a62,_0x391ced,_0x522dca,_0x36cc('0x100'));}else{if(_0x5d8a62['countmachineretry']>=_0x3b7b92[_0x36cc('0x101')]){_0x438b83[_0x36cc('0x102')](_0x5d8a62,_0x391ced,_0x522dca,_0x36cc('0x108'));}else{_0x438b83[_0x36cc('0xc3')]({'active':![],'countmachineretry':_0x5d8a62[_0x36cc('0xfc')],'scheduledat':moment()[_0x36cc('0x103')](_0x3b7b92[_0x36cc('0x109')],'minutes')[_0x36cc('0x77')](_0x36cc('0x105')),'ContactId':_0x5d8a62[_0x36cc('0xd7')],'ListId':_0x5d8a62['ListId'],'VoiceQueueId':_0x5d8a62[_0x36cc('0xda')]||undefined,'CampaignId':_0x5d8a62[_0x36cc('0xdb')]||undefined})[_0x36cc('0xba')](loggerCatch('[rescheduleContact][Machine]'));_0x391ced({'reschedule':0x1});}}});}}};Dialer[_0x36cc('0x1d')][_0x36cc('0x36')]=function(_0x1c4c6c){var _0x2e5991=this[_0x36cc('0xad')][_0x1c4c6c[_0x36cc('0xe1')]];var _0x4dba67;if(_0x2e5991&&_0x2e5991[_0x36cc('0x50')]===_0x36cc('0x7a')){delete this[_0x36cc('0xad')][_0x1c4c6c['uniqueid']];this[_0x36cc('0xb5')](this[_0x36cc('0x21')][_0x2e5991['queue']]);this[_0x36cc('0x21')][_0x2e5991[_0x36cc('0xb6')]][_0x36cc('0x10a')]+=0x1;_0x4dba67=new Hangup(_0x2e5991,_0x1c4c6c);this[_0x36cc('0xd0')](_0x4dba67)[_0x36cc('0xba')](loggerCatch(_0x36cc('0x10b')));this[_0x36cc('0xce')](_0x4dba67)[_0x36cc('0xba')](loggerCatch('[syncHangupIvr]'));}if(_0x2e5991&&_0x2e5991[_0x36cc('0x50')]!=='ivr'&&isNotNull(this[_0x36cc('0x20')][_0x2e5991['queue']][_0x36cc('0x10c')])){delete this[_0x36cc('0xad')][_0x1c4c6c[_0x36cc('0xe1')]];this[_0x36cc('0xb5')](this[_0x36cc('0x20')][_0x2e5991[_0x36cc('0xb6')]]);this[_0x36cc('0x20')][_0x2e5991['queue']]['outboundAnswerCallsDay']+=0x1;this[_0x36cc('0x20')][_0x2e5991[_0x36cc('0xb6')]][_0x36cc('0xe7')]+=0x1;_0x4dba67=new Hangup(_0x2e5991,_0x1c4c6c);_0x4dba67[_0x36cc('0xe8')]=0x10;_0x4dba67['statedesc']='AnswerAGI';_0x4dba67[_0x36cc('0xea')]=_0x36cc('0x10d');this[_0x36cc('0xd0')](_0x4dba67)[_0x36cc('0xba')](loggerCatch('[syncHangupIvr][createHistory]'));this[_0x36cc('0xce')](_0x4dba67)[_0x36cc('0xba')](loggerCatch('[syncHangupIvr]'));}if(_0x2e5991&&_0x2e5991[_0x36cc('0x50')]!=='ivr'&&!isNotNull(this[_0x36cc('0x20')][_0x2e5991[_0x36cc('0xb6')]][_0x36cc('0x10c')])){delete this['uniqueId'][_0x1c4c6c['uniqueid']];this['updateOriginated'](this[_0x36cc('0x20')][_0x2e5991[_0x36cc('0xb6')]]);this[_0x36cc('0x20')][_0x2e5991[_0x36cc('0xb6')]][_0x36cc('0x66')]+=0x1;_0x4dba67=new Hangup(_0x2e5991,_0x1c4c6c);_0x4dba67[_0x36cc('0xe8')]=0xc;_0x4dba67[_0x36cc('0xa8')]=_0x1c4c6c[_0x36cc('0x10e')];_0x4dba67[_0x36cc('0xea')]=_0x36cc('0x10f');this[_0x36cc('0xd0')](_0x4dba67)[_0x36cc('0xba')](loggerCatch('[syncHangupIvr][createHistory]'));this[_0x36cc('0xce')](_0x4dba67)[_0x36cc('0xba')](loggerCatch(_0x36cc('0x110')));}};Dialer[_0x36cc('0x1d')][_0x36cc('0x31')]=function(_0x88fae8){var _0x2ee8dd=this['uniqueId'][_0x88fae8[_0x36cc('0xe1')]];if(this[_0x36cc('0x20')][_0x88fae8[_0x36cc('0xb6')]]){if(_0x2ee8dd&&_0x2ee8dd['type']!==_0x36cc('0x7a')){delete this['uniqueId'][_0x88fae8[_0x36cc('0xe1')]];this[_0x36cc('0x20')][_0x88fae8[_0x36cc('0xb6')]][_0x36cc('0x5d')]+=0x1;var _0x5da4f1=new AgentComplete(_0x2ee8dd,_0x88fae8);if(_0x88fae8['reason']==='agent'){_0x5da4f1[_0x36cc('0x111')]=this[_0x36cc('0x20')][_0x88fae8[_0x36cc('0xb6')]][_0x36cc('0x112')]&&this['voiceQueues'][_0x88fae8[_0x36cc('0xb6')]][_0x36cc('0x113')]?moment()[_0x36cc('0x77')](_0x36cc('0x105')):undefined;}this[_0x36cc('0xd0')](_0x5da4f1)[_0x36cc('0xba')](loggerCatch('[syncAgentComplete][createHistory]'));this[_0x36cc('0xce')](_0x5da4f1)['catch'](loggerCatch(_0x36cc('0x114')));}}};Dialer[_0x36cc('0x1d')][_0x36cc('0x2d')]=function(_0xbbbe2c){if(this[_0x36cc('0x20')][_0xbbbe2c[_0x36cc('0xb6')]]){if(this[_0x36cc('0xad')][_0xbbbe2c[_0x36cc('0xe1')]]&&this[_0x36cc('0xad')][_0xbbbe2c[_0x36cc('0xe1')]][_0x36cc('0x50')]!==_0x36cc('0x7a')){this[_0x36cc('0xb5')](this[_0x36cc('0x20')][_0xbbbe2c[_0x36cc('0xb6')]]);this[_0x36cc('0xad')][_0xbbbe2c['uniqueid']][_0x36cc('0x115')]=moment()['format']('YYYY-MM-DD\x20HH:mm:ss');}}};Dialer[_0x36cc('0x1d')][_0x36cc('0x116')]=function(_0x39b84d,_0x49034e){this[_0x36cc('0xd0')](_0x39b84d)[_0x36cc('0xba')](loggerCatch(_0x36cc('0x117')));if(_0x49034e==0x0){this[_0x36cc('0xce')](_0x39b84d)[_0x36cc('0xba')](loggerCatch('[syncQueueCallerAbandon]\x20[Drop]'));}};Dialer[_0x36cc('0x1d')][_0x36cc('0x118')]=function(_0x51fd2f){var _0x3477ed=this[_0x36cc('0xad')][_0x51fd2f[_0x36cc('0xe1')]];var _0xd0efb=this;var _0x5d0cad=![];var _0x459e6e;var _0x1786b9;if(this[_0x36cc('0x20')][_0x51fd2f[_0x36cc('0xb6')]]){if(_0x3477ed&&_0x3477ed['type']!==_0x36cc('0x7a')){delete this['uniqueId'][_0x51fd2f[_0x36cc('0xe1')]];this['updateOriginated'](this['voiceQueues'][_0x51fd2f['queue']]);_0x3477ed[_0x36cc('0x119')]=moment()['format']('YYYY-MM-DD\x20HH:mm:ss');var _0xa1577e=new QueueCallerAbandon(_0x3477ed,_0x51fd2f);if(getSeconds(_0x3477ed[_0x36cc('0x119')],_0x3477ed[_0x36cc('0x11a')])>=_0x3477ed[_0x36cc('0x11b')]){this[_0x36cc('0x20')][_0x51fd2f[_0x36cc('0xb6')]]['predictiveIntervalDroppedCallsTimeout']+=0x1;this[_0x36cc('0x20')][_0x51fd2f['queue']][_0x36cc('0x62')]+=0x1;this[_0x36cc('0x20')][_0x51fd2f[_0x36cc('0xb6')]]['predictiveIntervalErlangCallsDroppedCalls']+=0x1;_0xa1577e[_0x36cc('0xe8')]=0xa;_0xa1577e['statedesc']=_0x36cc('0x11c');_0xa1577e[_0x36cc('0x11d')]='TIMEOUT';_0xa1577e[_0x36cc('0x111')]=this[_0x36cc('0x20')][_0x51fd2f['queue']][_0x36cc('0x112')]?moment()['format'](_0x36cc('0x105')):undefined;_0xa1577e['countdropretry']+=0x1;_0xa1577e[_0x36cc('0xf4')]+=0x1;_0x459e6e=this[_0x36cc('0x20')][_0x51fd2f[_0x36cc('0xb6')]][_0x36cc('0x11e')];_0x1786b9=this[_0x36cc('0x20')][_0x51fd2f[_0x36cc('0xb6')]][_0x36cc('0x11f')];_0xd0efb[_0x36cc('0xbe')](_0xa1577e,_0xa1577e[_0x36cc('0xe8')],_0x3477ed[_0x36cc('0x120')])['then'](function(_0x767c40){_0x5d0cad=_0x767c40[_0x36cc('0x121')]==0x1;if(_0xa1577e[_0x36cc('0xfa')]>=_0xd0efb['voiceQueues'][_0x51fd2f[_0x36cc('0xb6')]][_0x36cc('0x122')]){_0xd0efb[_0x36cc('0x116')](_0xa1577e,_0x767c40[_0x36cc('0x121')]);}else{_0xd0efb[_0x36cc('0xc3')]({'active':![],'countdropretry':_0xa1577e[_0x36cc('0xfa')],'scheduledat':moment()[_0x36cc('0x103')](_0xd0efb[_0x36cc('0x20')][_0x51fd2f[_0x36cc('0xb6')]][_0x36cc('0x11e')],_0x36cc('0x104'))['format'](_0x36cc('0x105')),'ContactId':_0x3477ed['ContactId'],'ListId':_0x3477ed[_0x36cc('0xd8')],'VoiceQueueId':_0x3477ed[_0x36cc('0xda')]||undefined,'CampaignId':_0x3477ed[_0x36cc('0xdb')]||undefined})[_0x36cc('0xba')](loggerCatch(_0x36cc('0x123')));var _0x2fdde1=new History(_0xa1577e);_0x2fdde1['state']=0xa;_0x2fdde1[_0x36cc('0xa8')]=_0x36cc('0x11c');_0x2fdde1[_0x36cc('0xaa')]=moment()[_0x36cc('0x77')](_0x36cc('0x105'));_0x2fdde1['endtime']=_0x2fdde1[_0x36cc('0xaa')];_0x2fdde1['calleridname']=_0xa1577e[_0x36cc('0x124')];_0x2fdde1[_0x36cc('0x125')]=_0xa1577e[_0x36cc('0x125')];_0xd0efb[_0x36cc('0xd0')](_0x2fdde1)[_0x36cc('0xba')](loggerCatch(_0x36cc('0x126')));}})[_0x36cc('0x3e')](function(){if(_0x5d0cad)_0xd0efb['swapAdditionalPhones'](_0xa1577e,_0x459e6e,_0x1786b9)[_0x36cc('0x3e')](function(){return 0x1;});});}else{this['voiceQueues'][_0x51fd2f[_0x36cc('0xb6')]][_0x36cc('0x6a')]+=0x1;this[_0x36cc('0x20')][_0x51fd2f[_0x36cc('0xb6')]]['outboundDropCallsDayCallersExit']+=0x1;_0xa1577e[_0x36cc('0xe8')]=0xb;_0xa1577e[_0x36cc('0xa8')]=_0x36cc('0x127');_0xa1577e[_0x36cc('0x11d')]=_0x36cc('0x128');_0xa1577e[_0x36cc('0xfb')]+=0x1;_0xa1577e[_0x36cc('0xf4')]+=0x1;_0x459e6e=this[_0x36cc('0x20')][_0x51fd2f[_0x36cc('0xb6')]][_0x36cc('0x129')];_0x1786b9=this[_0x36cc('0x20')][_0x51fd2f[_0x36cc('0xb6')]][_0x36cc('0x11f')];_0xd0efb[_0x36cc('0xbe')](_0xa1577e,_0xa1577e[_0x36cc('0xe8')],_0x3477ed[_0x36cc('0x120')])[_0x36cc('0x3e')](function(_0x2e7790){if(_0xa1577e[_0x36cc('0xfb')]>=_0xd0efb[_0x36cc('0x20')][_0x51fd2f['queue']][_0x36cc('0x12a')]){_0xd0efb[_0x36cc('0x116')](_0xa1577e,_0x2e7790[_0x36cc('0x121')]);}else{_0xd0efb[_0x36cc('0xc3')]({'active':![],'countabandonedretry':_0xa1577e['countabandonedretry'],'scheduledat':moment()[_0x36cc('0x103')](_0xd0efb[_0x36cc('0x20')][_0x51fd2f[_0x36cc('0xb6')]][_0x36cc('0x129')],'minutes')[_0x36cc('0x77')](_0x36cc('0x105')),'ContactId':_0x3477ed[_0x36cc('0xd7')],'ListId':_0x3477ed[_0x36cc('0xd8')],'VoiceQueueId':_0x3477ed[_0x36cc('0xda')]||undefined,'CampaignId':_0x3477ed[_0x36cc('0xdb')]||undefined})[_0x36cc('0xba')](loggerCatch('[rescheduleContact][Abandoned]'));var _0x59fa9d=new History(_0xa1577e);_0x59fa9d['state']=0xb;_0x59fa9d[_0x36cc('0xa8')]=_0x36cc('0x127');_0x59fa9d['starttime']=moment()['format'](_0x36cc('0x105'));_0x59fa9d[_0x36cc('0xa9')]=_0x59fa9d[_0x36cc('0xaa')];_0x59fa9d[_0x36cc('0x124')]=_0xa1577e[_0x36cc('0x124')];_0x59fa9d[_0x36cc('0x125')]=_0xa1577e[_0x36cc('0x125')];_0xd0efb['createHistory'](_0x59fa9d)[_0x36cc('0xba')](loggerCatch(_0x36cc('0x12b')));}})[_0x36cc('0x3e')](function(){if(_0x5d0cad)_0xd0efb[_0x36cc('0x12c')](_0xa1577e,_0x459e6e,_0x1786b9)['then'](function(){return 0x1;});});}}}};Dialer[_0x36cc('0x1d')][_0x36cc('0x37')]=function(_0x4091a0){if(this[_0x36cc('0x26')][_0x4091a0['uniqueid']]){this[_0x36cc('0x26')][_0x4091a0[_0x36cc('0xe1')]][_0x36cc('0xb3')]=_0x4091a0[_0x36cc('0xb3')];}if(this['uniqueId'][_0x4091a0[_0x36cc('0xe1')]]){this[_0x36cc('0xad')][_0x4091a0[_0x36cc('0xe1')]][_0x36cc('0xb3')]=_0x4091a0[_0x36cc('0xb3')];}};Dialer[_0x36cc('0x1d')]['syncQueueMember']=function(_0x1beb8a){if(strategy[this[_0x36cc('0x20')][this[_0x36cc('0x26')][_0x1beb8a['actionid']][_0x36cc('0xb6')]][_0x36cc('0x52')]]===_0x36cc('0x12d')){if(this[_0x36cc('0x26')][_0x1beb8a[_0x36cc('0x12e')]]&&_['isNil'](this[_0x36cc('0x26')][_0x1beb8a[_0x36cc('0x12e')]][_0x36cc('0x12f')])&&_0x1beb8a[_0x36cc('0xb2')]==='1'&&_0x1beb8a[_0x36cc('0x130')]==='0'){if(this[_0x36cc('0x22')][_0x1beb8a[_0x36cc('0x131')]]){if(!this[_0x36cc('0x22')][_0x1beb8a['stateinterface']][_0x36cc('0x12f')]){this[_0x36cc('0x22')][_0x1beb8a['stateinterface']][_0x36cc('0x12f')]=!![];this['actions'][_0x1beb8a[_0x36cc('0x12e')]][_0x36cc('0x12f')]=!![];this['actions'][_0x1beb8a[_0x36cc('0x12e')]][_0x36cc('0x131')]=_0x1beb8a[_0x36cc('0x131')];}}}}else if((strategy[this[_0x36cc('0x20')][this[_0x36cc('0x26')][_0x1beb8a[_0x36cc('0x12e')]][_0x36cc('0xb6')]]['strategy']]||_0x36cc('0x1c'))===_0x36cc('0x1c')){if(this[_0x36cc('0x26')][_0x1beb8a[_0x36cc('0x12e')]]){if(this[_0x36cc('0x22')][_0x1beb8a['stateinterface']]){this['actions'][_0x1beb8a[_0x36cc('0x12e')]][_0x36cc('0x131')]=_0x1beb8a['stateinterface'];if(_[_0x36cc('0xe2')](this[_0x36cc('0x2b')][this['actions'][_0x1beb8a[_0x36cc('0x12e')]][_0x36cc('0xb6')]])){this[_0x36cc('0x2b')][this[_0x36cc('0x26')][_0x1beb8a[_0x36cc('0x12e')]][_0x36cc('0xb6')]]=[];}this[_0x36cc('0x2b')][this['actions'][_0x1beb8a[_0x36cc('0x12e')]][_0x36cc('0xb6')]][_0x36cc('0x132')](_[_0x36cc('0x90')](_[_0x36cc('0xd6')](this[_0x36cc('0x26')][_0x1beb8a['actionid']],[_0x36cc('0x133'),_0x36cc('0x131')]),{'status':_0x1beb8a['status'],'paused':_0x1beb8a[_0x36cc('0x130')]}));}}}};function unlockQueueStatus(_0x5b7e8e,_0xf2dc87){setTimeout(function(){if(_[_0x36cc('0x40')](_0x5b7e8e[_0x36cc('0x134')])){loggerBooked['error'](_0x36cc('0x135'),_0xf2dc87);}_0x5b7e8e[_0x36cc('0x134')]=!![];loggerBooked['info'](_0x36cc('0x136'),_0xf2dc87,JSON[_0x36cc('0x137')](_['pick'](_0x5b7e8e,[_0x36cc('0x43'),_0x36cc('0x134')])));},0x1f3);}Dialer['prototype'][_0x36cc('0x3c')]=function(_0x52c1ad){var _0x5c29c9=this;var _0xc60402=_0x5c29c9[_0x36cc('0x20')][_0x5c29c9[_0x36cc('0x26')][_0x52c1ad['actionid']]['queue']];if(strategy[this[_0x36cc('0x20')][this[_0x36cc('0x26')][_0x52c1ad[_0x36cc('0x12e')]]['queue']]['strategy']]===_0x36cc('0x12d')){if(this[_0x36cc('0x26')][_0x52c1ad[_0x36cc('0x12e')]]&&this[_0x36cc('0x26')][_0x52c1ad['actionid']][_0x36cc('0x131')]){this[_0x36cc('0x93')][_0x36cc('0x138')](this[_0x36cc('0x26')][_0x52c1ad[_0x36cc('0x12e')]]['idHopper'],this['actions'][_0x52c1ad[_0x36cc('0x12e')]][_0x36cc('0x131')])[_0x36cc('0xba')](function(_0x307d84){logger['error'](_0x36cc('0x139'),util[_0x36cc('0x97')](_0x307d84,{'showHidden':![],'depth':null}));})['finally'](function(){_0x5c29c9[_0x36cc('0xb5')](_0x5c29c9[_0x36cc('0x20')][_0x5c29c9[_0x36cc('0x26')][_0x52c1ad['actionid']][_0x36cc('0xb6')]]);_0x5c29c9['agents'][_0x5c29c9[_0x36cc('0x26')][_0x52c1ad[_0x36cc('0x12e')]][_0x36cc('0x131')]][_0x36cc('0x12f')]=![];delete _0x5c29c9[_0x36cc('0x26')][_0x52c1ad[_0x36cc('0x12e')]];unlockQueueStatus(_0xc60402);});}else{this[_0x36cc('0xb5')](this[_0x36cc('0x20')][this[_0x36cc('0x26')][_0x52c1ad[_0x36cc('0x12e')]][_0x36cc('0xb6')]]);this[_0x36cc('0xc3')]({'active':![],'ContactId':this[_0x36cc('0x26')][_0x52c1ad[_0x36cc('0x12e')]][_0x36cc('0xd7')],'ListId':this[_0x36cc('0x26')][_0x52c1ad[_0x36cc('0x12e')]][_0x36cc('0xd8')],'VoiceQueueId':this['actions'][_0x52c1ad[_0x36cc('0x12e')]][_0x36cc('0xda')]||undefined,'CampaignId':this[_0x36cc('0x26')][_0x52c1ad[_0x36cc('0x12e')]][_0x36cc('0xdb')]||undefined})[_0x36cc('0xba')](loggerCatch(_0x36cc('0x13a')));delete this['actions'][_0x52c1ad[_0x36cc('0x12e')]];unlockQueueStatus(_0xc60402);}}else if((strategy[this[_0x36cc('0x20')][this[_0x36cc('0x26')][_0x52c1ad['actionid']]['queue']][_0x36cc('0x52')]]||_0x36cc('0x1c'))===_0x36cc('0x1c')){var _0x40753b;if(this[_0x36cc('0x26')][_0x52c1ad[_0x36cc('0x12e')]]&&!_[_0x36cc('0x7c')](this[_0x36cc('0x2b')][this['actions'][_0x52c1ad[_0x36cc('0x12e')]][_0x36cc('0xb6')]])){if(this[_0x36cc('0x13b')][_0x5c29c9[_0x36cc('0x26')][_0x52c1ad['actionid']][_0x36cc('0xb6')]]){this[_0x36cc('0x13b')][_0x5c29c9['actions'][_0x52c1ad[_0x36cc('0x12e')]][_0x36cc('0xb6')]]=this['queueBookedRR'][this[_0x36cc('0x26')][_0x52c1ad[_0x36cc('0x12e')]][_0x36cc('0xb6')]]?this[_0x36cc('0x13b')][this['actions'][_0x52c1ad[_0x36cc('0x12e')]][_0x36cc('0xb6')]]:this[_0x36cc('0x2b')][this[_0x36cc('0x26')][_0x52c1ad['actionid']]['queue']]?this[_0x36cc('0x2b')][this[_0x36cc('0x26')][_0x52c1ad[_0x36cc('0x12e')]]['queue']][_0x36cc('0x13c')]||0x0:0x0;}this['queueBooked'][this[_0x36cc('0x26')][_0x52c1ad[_0x36cc('0x12e')]][_0x36cc('0xb6')]][_0x36cc('0x13c')]=this[_0x36cc('0x13b')][this['actions'][_0x52c1ad[_0x36cc('0x12e')]]['queue']];for(var _0x354b10=0x0;_0x354b10<this['queueBooked'][this[_0x36cc('0x26')][_0x52c1ad[_0x36cc('0x12e')]][_0x36cc('0xb6')]][_0x36cc('0x13d')];_0x354b10+=0x1){_0x40753b=rr(this[_0x36cc('0x2b')][this['actions'][_0x52c1ad[_0x36cc('0x12e')]][_0x36cc('0xb6')]]);this['queueBookedRR'][_0x5c29c9['actions'][_0x52c1ad[_0x36cc('0x12e')]][_0x36cc('0xb6')]]=this[_0x36cc('0x2b')][this[_0x36cc('0x26')][_0x52c1ad[_0x36cc('0x12e')]]['queue']][_0x36cc('0x13c')];if(_0x40753b[_0x36cc('0xb2')]==='1'&&_0x40753b['paused']==='0'){break;}}if(!_[_0x36cc('0xe2')](_0x40753b)){this[_0x36cc('0x22')][_0x40753b['stateinterface']][_0x36cc('0x13e')]=_[_0x36cc('0x40')](this[_0x36cc('0x22')][_0x40753b[_0x36cc('0x131')]][_0x36cc('0x13e')])?!![]:this[_0x36cc('0x22')][_0x40753b[_0x36cc('0x131')]][_0x36cc('0x13e')];}loggerBooked[_0x36cc('0x7d')]('[booked][RR]',_0x52c1ad[_0x36cc('0x12e')],_0x36cc('0x13f'),JSON[_0x36cc('0x137')](_[_0x36cc('0xd6')](this[_0x36cc('0x22')][_0x40753b['stateinterface']],[_0x36cc('0x43'),_0x36cc('0x13e')])),_0x36cc('0x140'),JSON[_0x36cc('0x137')](_0x40753b['idHopper']));if(!_[_0x36cc('0xe2')](_0x40753b)&&_0x40753b['status']==='1'&&_0x40753b[_0x36cc('0x130')]==='0'&&this[_0x36cc('0x22')][_0x40753b[_0x36cc('0x131')]][_0x36cc('0x13e')]){this[_0x36cc('0x22')][_0x40753b['stateinterface']][_0x36cc('0x13e')]=![];this['queueBooked'][_0x5c29c9[_0x36cc('0x26')][_0x52c1ad[_0x36cc('0x12e')]][_0x36cc('0xb6')]]=[];this[_0x36cc('0x93')][_0x36cc('0x138')](_0x40753b['idHopper'],_0x40753b['stateinterface'])[_0x36cc('0xba')](function(_0x9ce83){logger[_0x36cc('0x98')](_0x36cc('0x139'),util[_0x36cc('0x97')](_0x9ce83,{'showHidden':![],'depth':null}));})[_0x36cc('0x1f')](function(){_0x5c29c9['updateOriginated'](_0x5c29c9[_0x36cc('0x20')][_0x5c29c9[_0x36cc('0x26')][_0x52c1ad['actionid']][_0x36cc('0xb6')]]);setTimeout(function(){_0x5c29c9[_0x36cc('0x22')][_0x40753b['stateinterface']][_0x36cc('0x13e')]=!![];loggerBooked[_0x36cc('0x7d')](_0x36cc('0x141'),_0x52c1ad['actionid'],_0x36cc('0x13f'),JSON[_0x36cc('0x137')](_['pick'](_0x5c29c9[_0x36cc('0x22')][_0x40753b[_0x36cc('0x131')]],['name',_0x36cc('0x13e')])),_0x36cc('0x140'),JSON[_0x36cc('0x137')](_0x40753b[_0x36cc('0x133')]));},0xc7);delete _0x5c29c9[_0x36cc('0x26')][_0x52c1ad[_0x36cc('0x12e')]];unlockQueueStatus(_0xc60402,_0x52c1ad[_0x36cc('0x12e')]);});}else{loggerBooked[_0x36cc('0x7d')](_0x36cc('0x142'));this[_0x36cc('0xb5')](this[_0x36cc('0x20')][this['actions'][_0x52c1ad['actionid']]['queue']]);this[_0x36cc('0xc3')]({'active':![],'ContactId':this[_0x36cc('0x26')][_0x52c1ad[_0x36cc('0x12e')]][_0x36cc('0xd7')],'ListId':this[_0x36cc('0x26')][_0x52c1ad[_0x36cc('0x12e')]][_0x36cc('0xd8')],'VoiceQueueId':this['actions'][_0x52c1ad[_0x36cc('0x12e')]][_0x36cc('0xda')]||undefined,'CampaignId':this[_0x36cc('0x26')][_0x52c1ad['actionid']][_0x36cc('0xdb')]||undefined})[_0x36cc('0xba')](loggerCatch(_0x36cc('0x13a')));delete this[_0x36cc('0x26')][_0x52c1ad[_0x36cc('0x12e')]];unlockQueueStatus(_0xc60402);}}else{loggerBooked['info'](_0x36cc('0x143'));this[_0x36cc('0xb5')](this[_0x36cc('0x20')][this[_0x36cc('0x26')][_0x52c1ad['actionid']]['queue']]);this[_0x36cc('0xc3')]({'active':![],'ContactId':this[_0x36cc('0x26')][_0x52c1ad[_0x36cc('0x12e')]][_0x36cc('0xd7')],'ListId':this[_0x36cc('0x26')][_0x52c1ad[_0x36cc('0x12e')]][_0x36cc('0xd8')],'VoiceQueueId':this[_0x36cc('0x26')][_0x52c1ad[_0x36cc('0x12e')]][_0x36cc('0xda')]||undefined,'CampaignId':this[_0x36cc('0x26')][_0x52c1ad[_0x36cc('0x12e')]][_0x36cc('0xdb')]||undefined})[_0x36cc('0xba')](loggerCatch(_0x36cc('0x144')));delete this[_0x36cc('0x26')][_0x52c1ad[_0x36cc('0x12e')]];unlockQueueStatus(_0xc60402);}}else{loggerBooked[_0x36cc('0x7d')](_0x36cc('0x145'));this[_0x36cc('0xb5')](this[_0x36cc('0x20')][this['actions'][_0x52c1ad[_0x36cc('0x12e')]][_0x36cc('0xb6')]]);this['rescheduleContact']({'active':![],'ContactId':this[_0x36cc('0x26')][_0x52c1ad['actionid']][_0x36cc('0xd7')],'ListId':this['actions'][_0x52c1ad['actionid']][_0x36cc('0xd8')],'VoiceQueueId':this[_0x36cc('0x26')][_0x52c1ad[_0x36cc('0x12e')]]['VoiceQueueId']||undefined,'CampaignId':this[_0x36cc('0x26')][_0x52c1ad[_0x36cc('0x12e')]]['CampaignId']||undefined})['catch'](loggerCatch('[unlock3][syncQueueStatusComplete]'));delete this[_0x36cc('0x26')][_0x52c1ad['actionid']];unlockQueueStatus(_0xc60402);}};Dialer[_0x36cc('0x1d')][_0x36cc('0x3d')]=function(){var _0x567098=this;return cmHopper['resetActiveCalls']({'active':![]},{'where':{'active':!![]}})['then'](function(){setInterval(function(){_0x567098[_0x36cc('0x146')]();},0x3e8);});};Dialer[_0x36cc('0x1d')][_0x36cc('0x147')]=function(_0x206df6){var _0x38432e=this;return function(){if(!_0x38432e['isTrunkReachable'](_0x206df6['Trunk'])){if(!_0x38432e['isTrunkReachable'](_0x206df6[_0x36cc('0x148')])){_0x206df6[_0x36cc('0x41')]=_0x36cc('0x149');throw _0x206df6[_0x36cc('0x43')]+_0x36cc('0x14a');}}};};Dialer[_0x36cc('0x1d')][_0x36cc('0x14b')]=function(_0x3b8b6c,_0x4253bf,_0x3f58f0,_0x39263d){var _0x5c3c8b=this;return function(){var _0x3f25ac=!![];return _0x5c3c8b[_0x36cc('0x14c')](_0x3b8b6c,_0x4253bf,_0x3f58f0,_0x39263d,_0x3f25ac);};};Dialer['prototype']['checkIfTimeIntervals']=function(_0x104e68,_0x452410,_0x53b6b0,_0x5df3f6){var _0x34a481=this;return function(){var _0x5a8ed3=![];return _0x34a481['ifTime'](_0x104e68[_0x36cc('0x48')],_0x452410,_0x53b6b0,_0x5df3f6,_0x5a8ed3);};};Dialer[_0x36cc('0x1d')]['ifTime']=function(_0xb7f17,_0x371717,_0x297293,_0x159022,_0x2efc2d){var _0xb311d=[];return new Promise(function(_0x58b613,_0x7e0074){if(!isNotNull(_0xb7f17)){_0x159022[_0x36cc('0x41')]=_0x36cc('0x49');return _0x7e0074(msgResponse(_0x36cc('0x14c'),_0x36cc('0x14d'),_0x297293+_0x36cc('0x14e')));}if(_[_0x36cc('0x7c')](_0xb7f17)){_0x159022[_0x36cc('0x41')]=_0x36cc('0x14f');return _0x7e0074(msgResponse('ifTime','Failure',_0x297293+'\x20Intervals\x20is\x20empty\x20'));}if(_0x371717&&_[_0x36cc('0x40')](config['timezones'][_0x371717])){_0x159022['message']=_0x36cc('0x150');return _0x7e0074(msgResponse(_0x36cc('0x14c'),_0x36cc('0x14d'),_0x297293+_0x36cc('0x151')+_0x371717));}if(_[_0x36cc('0x152')](_0xb7f17)){for(var _0x1ff6be=0x0;_0x1ff6be<_0xb7f17[_0x36cc('0x13d')];_0x1ff6be+=0x1){_0xb311d['push'](ami[_0x36cc('0x153')]({'action':'command','command':util['format'](_0x36cc('0x154'),_0xb7f17[_0x1ff6be][_0x36cc('0x155')],!_[_0x36cc('0x40')](config[_0x36cc('0x156')][_0x371717])?_0x371717:'')})['then'](function(_0x162874){return _0x162874['content']['indexOf']('true')>=0x0;})[_0x36cc('0xba')](myreject(_0x7e0074)));}}else{_0xb311d['push'](ami[_0x36cc('0x153')]({'action':_0x36cc('0x157'),'command':util[_0x36cc('0x77')](_0x36cc('0x154'),_0xb7f17,!_[_0x36cc('0x40')](config[_0x36cc('0x156')][_0x371717])?_0x371717:'')})[_0x36cc('0x3e')](function(_0x279a88){return _0x279a88[_0x36cc('0x158')][_0x36cc('0x159')](_0x36cc('0x15a'))>=0x0;})[_0x36cc('0xba')](myreject(_0x7e0074)));}Promise['all'](_0xb311d)['then'](function(_0x1e06e5){var _0x267f22=_[_0x36cc('0x15b')](_0x1e06e5);if(_0x267f22){return _0x58b613(_0x267f22);}else{_0x159022[_0x36cc('0x41')]=_0x2efc2d?_0x36cc('0x15c'):_0x36cc('0x15d');return _0x7e0074(msgResponse(_0x36cc('0x15e'),_0x36cc('0x14d'),'Global:\x20'+_0x2efc2d+'\x20'+_0x297293+_0x36cc('0x15f')+util[_0x36cc('0x97')](_0xb7f17,{'showHidden':![],'depth':null})+_0x36cc('0x160')+_0x371717));}})[_0x36cc('0xba')](function(_0x5c148a){return _0x7e0074(msgResponse(_0x36cc('0x14c'),_0x36cc('0x14d'),JSON['stringify'](_0x5c148a)));});});};Dialer[_0x36cc('0x1d')][_0x36cc('0x161')]=function(_0x330d43){var _0xde9fec=this;return function(){switch(_0x330d43[_0x36cc('0x5b')]){case _0x36cc('0x162'):freeVariablesPredictive(_0x330d43);_0xde9fec['handlePower'](_0x330d43,0x1);break;case _0x36cc('0x163'):freeVariablesPredictive(_0x330d43);_0xde9fec['handlePower'](_0x330d43,_0x330d43[_0x36cc('0x164')]);break;case _0x36cc('0x8'):_0xde9fec['predictive'](_0x330d43);break;case _0x36cc('0x7'):freeVariablesPredictive(_0x330d43);_0xde9fec[_0x36cc('0x165')](_0x330d43,0x1);break;default:freeVariablesPredictive(_0x330d43);logger['error']('Queue',_0x330d43[_0x36cc('0x43')],_0x36cc('0x166'));}};};Dialer['prototype'][_0x36cc('0x167')]=function(_0x9739ef){return Promise['resolve']()[_0x36cc('0x3e')](cmHopper['handlePreviewRecallNotifications'](_0x9739ef['id'],previewRecallmeReminderInterval))[_0x36cc('0x3e')](function(_0x2432c2){for(var _0x4b6a1c=0x0;_0x4b6a1c<_0x2432c2[_0x36cc('0x13d')];_0x4b6a1c++){var _0x2dad8d=_0x2432c2[_0x4b6a1c][_0x36cc('0x168')][_0x36cc('0x43')];if(_0x2dad8d)io['to'](util[_0x36cc('0x77')]('user:%s',_0x2dad8d))[_0x36cc('0x4f')](_0x36cc('0x169'),{'hopper':_0x2432c2[_0x4b6a1c]});}})[_0x36cc('0xba')](function(){});};Dialer[_0x36cc('0x1d')][_0x36cc('0x16a')]=function(_0x4fe22f){var _0x3bc740=this;return function(){_0x3bc740[_0x36cc('0x16b')](_0x4fe22f);};};Dialer[_0x36cc('0x1d')][_0x36cc('0xa')]=function(_0x2f1946){var _0x44f74f=this;if(isNotPreview(_0x2f1946[_0x36cc('0x5b')])){if(isVoiceQueueOutbound(_0x2f1946[_0x36cc('0x50')])&&isActive(_0x2f1946[_0x36cc('0x5a')])){_0x2f1946['sendMessageOneNotActive']=!![];Promise[_0x36cc('0xb8')]()['then'](checkIsLoggedIn(_0x2f1946,_0x2f1946[_0x36cc('0x16c')]))[_0x36cc('0x3e')](checkIsActive(_0x2f1946,_0x2f1946[_0x36cc('0x5a')]))['then'](checkInterval(_0x2f1946))[_0x36cc('0x3e')](_0x44f74f[_0x36cc('0x147')](_0x2f1946))[_0x36cc('0x3e')](_0x44f74f['checkIfTime'](_0x2f1946[_0x36cc('0x16d')],_0x2f1946[_0x36cc('0x16e')],_0x2f1946[_0x36cc('0x43')],_0x2f1946))['then'](_0x44f74f[_0x36cc('0x16f')](_0x2f1946[_0x36cc('0x47')],_0x2f1946[_0x36cc('0x16e')],_0x2f1946[_0x36cc('0x43')],_0x2f1946))[_0x36cc('0x3e')](_0x44f74f['checkDialMethod'](_0x2f1946))[_0x36cc('0xba')](loggerCatchQueueSummary(_0x36cc('0x170'),_0x2f1946));}else{notSendMessagesQueue(_0x2f1946);}}else{freeVariablesPredictive(_0x2f1946);}};Dialer['prototype'][_0x36cc('0x34')]=_[_0x36cc('0x171')](function(){var _0x1bb457=_[_0x36cc('0x172')](this[_0x36cc('0x20')],function(_0x2f84c6){return _0x2f84c6[_0x36cc('0x173')];});var _0x247df6=_[_0x36cc('0x172')](this[_0x36cc('0x22')],function(_0x308a6a){return _0x308a6a[_0x36cc('0x174')]&&_0x308a6a[_0x36cc('0xb2')]===_0x36cc('0x175');});if(_0x1bb457['length']>0x0&&_0x247df6[_0x36cc('0x13d')]>0x0){return Promise[_0x36cc('0xb8')]()['then'](cmHopper[_0x36cc('0x176')](_[_0x36cc('0x177')](_0x1bb457,'id'),previewRecallmeReminderInterval,_[_0x36cc('0x177')](_0x247df6,'id')))[_0x36cc('0x3e')](function(_0x28ca7c){for(var _0x104909=0x0;_0x104909<_0x28ca7c['length'];_0x104909++){var _0x5cf88d=_0x28ca7c[_0x104909][_0x36cc('0x168')][_0x36cc('0x43')];if(_0x5cf88d)io['to'](util[_0x36cc('0x77')](_0x36cc('0x178'),_0x5cf88d))[_0x36cc('0x4f')](_0x36cc('0x169'),{'hopper':_0x28ca7c[_0x104909]});}})['catch'](function(_0x1de88f){logger[_0x36cc('0x98')]('checkPreviewRecallReminder',_0x1de88f);});}},0x3c*0x3e8,{'leading':!![]});Dialer[_0x36cc('0x1d')][_0x36cc('0x146')]=function(){var _0x3c4ae9=this;var _0x5ccc45;for(var _0x49107d in this[_0x36cc('0x21')]){if(typeof this['campaigns'][_0x49107d]!==_0x36cc('0x99')){_0x5ccc45=this[_0x36cc('0x21')][_0x49107d];if(isCampaignIvr(_0x5ccc45[_0x36cc('0x50')])&&isActive(_0x5ccc45['active'])){_0x5ccc45[_0x36cc('0xa1')]=!![];Promise[_0x36cc('0xb8')]()[_0x36cc('0x3e')](checkIsActive(_0x5ccc45,_0x5ccc45[_0x36cc('0x75')]))[_0x36cc('0x3e')](checkInterval(_0x5ccc45))[_0x36cc('0x3e')](_0x3c4ae9[_0x36cc('0x147')](_0x5ccc45))['then'](_0x3c4ae9[_0x36cc('0x14b')](_0x5ccc45[_0x36cc('0x16d')],_0x5ccc45[_0x36cc('0x16e')],_0x5ccc45[_0x36cc('0x43')],_0x5ccc45))[_0x36cc('0x3e')](_0x3c4ae9[_0x36cc('0x16f')](_0x5ccc45[_0x36cc('0x47')],_0x5ccc45['dialTimezone'],_0x5ccc45[_0x36cc('0x43')],_0x5ccc45))[_0x36cc('0x3e')](_0x3c4ae9['launchHandleIvr'](_0x5ccc45))['catch'](loggerCatchQueueSummary(_0x36cc('0x179'),_0x5ccc45));}else{notSendMessagesCampaign(_0x5ccc45);}}}};function getCallerIdRandom(_0x3e664d,_0x413f67){var _0x1ff893;var _0x352a16;var _0x10ab32;if(_0x413f67<=0x0){_0x413f67=0x1;}_0x1ff893=new RegExp(_0x36cc('0x17a')+_0x413f67+'}$');_0x352a16=Math[_0x36cc('0x17b')](0xa,_0x413f67-0x1);_0x10ab32=Math[_0x36cc('0x17b')](0xa,_0x413f67)-0x1;return util[_0x36cc('0x77')]('%s',_[_0x36cc('0x17c')](_0x3e664d,_0x1ff893,_[_0x36cc('0x17d')](_0x352a16,_0x10ab32)));}function extractCalleridName(_0x5ebd9d){var _0x50604a=_0x5ebd9d[_0x36cc('0x17e')](/"(.*?)"/);return _0x50604a?_0x50604a[0x1]:_0x5ebd9d;}Dialer[_0x36cc('0x1d')][_0x36cc('0x17f')]=function(_0x5add14,_0x10f250){var _0xaf0152=this;var _0x38a894=uuid['v4']();this[_0x36cc('0x26')][_0x38a894]=new Action(_0x5add14,_0x10f250,_0x38a894);return new Promise(function(_0x46e997,_0x303a0d){if(_[_0x36cc('0x40')](_0x5add14)&&typeof _0x5add14!==_0x36cc('0x180')){return _0x303a0d(msgResponse('originate',_0x36cc('0x14d'),_0x36cc('0x181')));}if(_[_0x36cc('0x40')](_0x10f250[_0x36cc('0x182')])||_0x10f250[_0x36cc('0x182')]===null){return _0x303a0d(msgResponse(_0x36cc('0x183'),_0x36cc('0x14d'),_0x36cc('0x184')));}var _0xaf1fcd={'XMD-CALLERID':_0xaf0152['actions'][_0x38a894][_0x36cc('0x185')](),'XMD-AGI':_0x5add14[_0x36cc('0x10c')]?util[_0x36cc('0x77')](_0x36cc('0x186'),ipAgi,_0x5add14[_0x36cc('0x10c')]):_0x36cc('0x187'),'XMD-AGIAFTER':_0x5add14[_0x36cc('0x112')]?util[_0x36cc('0x77')](_0x36cc('0x186'),ipAgi,_0x5add14[_0x36cc('0x112')]):_0x36cc('0x187'),'XMD-QUEUE':_0x5add14[_0x36cc('0x50')]===_0x36cc('0x51')?util[_0x36cc('0x77')](_0x36cc('0x188'),_0x5add14[_0x36cc('0x43')],_0x5add14[_0x36cc('0x189')]||'',_0x5add14[_0x36cc('0x113')]?'c':'',_0x5add14[_0x36cc('0x11b')]||0x3):'NONE','XMD-CONTACTID':_0x10f250[_0x36cc('0xd7')],'XMD-CDRTYPE':_0x36cc('0x18a'),'CALLERID(all)':_0xaf0152['actions'][_0x38a894][_0x36cc('0x185')](),'XMD-AMD':_0x5add14[_0x36cc('0xef')]?_0x36cc('0x18b'):_0x36cc('0x187'),'XMD-DESTINATION':_0x36cc('0xe6')};if(_0x5add14['dialAMDActive']){_0xaf1fcd['XMD-AMDINITIALSILENCE']=_0x5add14['dialAMDInitialSilence']||0x9c4;_0xaf1fcd[_0x36cc('0x18c')]=_0x5add14[_0x36cc('0x18d')]||0x5dc;_0xaf1fcd[_0x36cc('0x18e')]=_0x5add14[_0x36cc('0x18f')]||0x320;_0xaf1fcd[_0x36cc('0x190')]=_0x5add14[_0x36cc('0x191')]||0x1388;_0xaf1fcd[_0x36cc('0x192')]=_0x5add14['dialAMDMinWordLength']||0x64;_0xaf1fcd[_0x36cc('0x193')]=_0x5add14[_0x36cc('0x194')]||0x32;_0xaf1fcd['XMD-AMDMAXIMUMNUMBEROFWORDS']=_0x5add14[_0x36cc('0x195')]||0x3;_0xaf1fcd[_0x36cc('0x196')]=_0x5add14[_0x36cc('0x197')]||0x100;_0xaf1fcd['XMD-AMDMAXIMUMWORDLENGTH']=_0x5add14[_0x36cc('0x198')]||0x1388;}if(_0x5add14[_0x36cc('0x50')]===_0x36cc('0x51')){_0xaf1fcd[_0x36cc('0x199')]=_0x10f250['VoiceQueueId'];}else{_0xaf1fcd[_0x36cc('0x19a')]=_0x10f250[_0x36cc('0xdb')];}for(var _0x1af255 in _0x10f250['Contact']){if(typeof _0x10f250[_0x36cc('0x19b')][_0x1af255]!==_0x36cc('0x99')){if(isNotNull(_0x10f250['Contact'][_0x1af255])&&_0x1af255!=='id'&&_0x1af255!==_0x36cc('0x19c')&&_0x1af255!==_0x36cc('0x19d')&&_0x1af255!=='updatedAt'){_0xaf1fcd[util['format'](_0x36cc('0x19e'),_0x36cc('0x19f'),_[_0x36cc('0x1a0')](_0x1af255))]=_0x10f250[_0x36cc('0x19b')][_0x1af255];}}}var _0xffc2ce=_0xaf0152['isTrunkReachable'](_0x5add14[_0x36cc('0x74')])?getCallerId(_0x5add14[_0x36cc('0x74')][_0x36cc('0x76')],_0x5add14[_0x36cc('0x1a1')],_0x5add14[_0x36cc('0x1a2')]>0x0?getCallerIdRandom(_0x5add14['dialOriginateCallerIdNumber'],_0x5add14[_0x36cc('0x1a2')]):_0x5add14[_0x36cc('0x5c')]):getCallerId(_['isNil'](_0x5add14['TrunkBackup'])?_0x5add14[_0x36cc('0x74')][_0x36cc('0x76')]:_0x5add14[_0x36cc('0x148')][_0x36cc('0x76')],_0x5add14[_0x36cc('0x1a1')],_0x5add14['dialRandomLastDigitCallerIdNumber']>0x0?getCallerIdRandom(_0x5add14['dialOriginateCallerIdNumber'],_0x5add14[_0x36cc('0x1a2')]):_0x5add14['dialOriginateCallerIdNumber']);if(_0xffc2ce){_0xaf1fcd['XMD-ORIGINATECALLERIDNAME']=_0xaf0152[_0x36cc('0x26')][_0x38a894]['originatecalleridname']=extractCalleridName(_0xffc2ce);_0xaf1fcd[_0x36cc('0x1a3')]=_0x10f250[_0x36cc('0x182')];}_0x5add14['variables']=_0xaf1fcd;return ami['Action']({'actionid':_0x38a894,'action':_0x36cc('0x183'),'channel':_0xaf0152[_0x36cc('0xde')](_0x5add14[_0x36cc('0x74')])?util[_0x36cc('0x77')]('SIP/%s/%s%s',_0x5add14[_0x36cc('0x74')][_0x36cc('0x43')],isNotNull(_0x5add14[_0x36cc('0x1a4')])?_0x5add14[_0x36cc('0x1a4')][_0x36cc('0x1a5')]()||'':'',_0x5add14[_0x36cc('0x1a6')]>0x0?_0x10f250['phone'][_0x36cc('0x1a7')](_0x5add14['dialCutDigit']):_0x10f250[_0x36cc('0x182')]):util[_0x36cc('0x77')]('SIP/%s/%s%s',_[_0x36cc('0xe2')](_0x5add14['TrunkBackup'])?_0x5add14['Trunk']['name']:_0x5add14['TrunkBackup'][_0x36cc('0x43')],isNotNull(_0x5add14['dialPrefix'])?_0x5add14[_0x36cc('0x1a4')][_0x36cc('0x1a5')]()||'':'',_0x5add14['dialCutDigit']>0x0?_0x10f250[_0x36cc('0x182')][_0x36cc('0x1a7')](_0x5add14['dialCutDigit']):_0x10f250[_0x36cc('0x182')]),'callerid':_0xffc2ce,'Exten':_0x36cc('0xe6'),'Context':'from-sip','Priority':'1','variable':_0xaf1fcd,'timeout':(_0x5add14[_0x36cc('0x1a8')]||0x1e)*0x3e8,'async':!![],'channelid':_0x38a894})[_0x36cc('0x3e')](function(_0xe645e1){return _0x46e997(_0xe645e1);})[_0x36cc('0xba')](function(_0x5e2b12){_0x5add14[_0x36cc('0x1a9')]+=0x1;var _0x4b1d73=new History(_0xaf0152['actions'][_0x38a894]);logger['error'](util[_0x36cc('0x77')](_0x36cc('0x1aa'),JSON[_0x36cc('0x137')](_0x5e2b12)));_0x4b1d73['state']=0xe;_0x4b1d73[_0x36cc('0xa8')]='OriginateError';_0x4b1d73['starttime']=moment()['format'](_0x36cc('0x105'));_0x4b1d73[_0x36cc('0xa9')]=_0x4b1d73[_0x36cc('0xaa')];_0xaf0152[_0x36cc('0xd0')](_0x4b1d73)['catch'](loggerCatch(_0x36cc('0x1ab')));_0xaf0152[_0x36cc('0xce')](_0x4b1d73)[_0x36cc('0xba')](loggerCatch(_0x36cc('0x1ab')))[_0x36cc('0x1f')](function(){delete _0xaf0152[_0x36cc('0x26')][_0x38a894];return _0x303a0d(msgResponse(_0x36cc('0x183'),_0x36cc('0x4c'),_0x36cc('0x1ac')));});});});};Dialer[_0x36cc('0x1d')][_0x36cc('0x1ad')]=function(_0x545a2c){var _0x11dfed=this[_0x36cc('0x26')][_0x545a2c[_0x36cc('0x12e')]];if(_0x11dfed){delete this['actions'][_0x545a2c[_0x36cc('0x12e')]];_0x11dfed[_0x36cc('0x11a')]=moment()[_0x36cc('0x77')](_0x36cc('0x105'));var _0x1d9094=_0x11dfed['type']===_0x36cc('0x7a')?this[_0x36cc('0x21')][_0x11dfed[_0x36cc('0xb6')]]:this['voiceQueues'][_0x11dfed[_0x36cc('0x1ae')]()];if(!this[_0x36cc('0x1af')](_0x545a2c[_0x36cc('0x1b0')])){this[_0x36cc('0xb5')](_0x1d9094);return this[_0x36cc('0x1b1')](_0x11dfed,_0x1d9094,_0x545a2c)[_0x36cc('0xba')](loggerCatch(_0x36cc('0x1b2')));}this[_0x36cc('0xad')][_0x545a2c[_0x36cc('0xe1')]]=_0x11dfed;}};Dialer[_0x36cc('0x1d')]['checkRetriveMax']=function(_0x3f0a35,_0x38d739,_0x503128){var _0x3b7af2=new History(_0x38d739);if(_0x3b7af2[_0x36cc('0xf6')]+_0x3b7af2['countcongestionretry']+_0x3b7af2[_0x36cc('0xf8')]+_0x3b7af2[_0x36cc('0xf9')]+_0x3b7af2[_0x36cc('0xfa')]+_0x3b7af2[_0x36cc('0xfb')]+_0x3b7af2[_0x36cc('0xfc')]+_0x3b7af2[_0x36cc('0xfd')]>=_0x503128[_0x36cc('0xfe')]-0x1){return!![];}switch(_0x3f0a35){case 0x3:if(_0x3b7af2[_0x36cc('0xf8')]>=_0x503128[_0x36cc('0x1b3')]-0x1){return!![];}this[_0x36cc('0xc3')]({'active':![],'countnoanswerretry':_0x3b7af2['countnoanswerretry']+=0x1,'scheduledat':moment()[_0x36cc('0x103')](_0x503128['dialNoAnswerRetryFrequency'],_0x36cc('0x104'))[_0x36cc('0x77')](_0x36cc('0x105')),'ContactId':_0x3b7af2[_0x36cc('0xd7')],'ListId':_0x3b7af2[_0x36cc('0xd8')],'VoiceQueueId':_0x3b7af2[_0x36cc('0xda')]||undefined,'CampaignId':_0x3b7af2[_0x36cc('0xdb')]||undefined})['catch'](loggerCatch('[rescheduleContact][NoAnswer]'));break;case 0x5:if(_0x3b7af2[_0x36cc('0xf6')]>=_0x503128['dialBusyMaxRetry']-0x1){return!![];}this[_0x36cc('0xc3')]({'active':![],'countbusyretry':_0x3b7af2['countbusyretry']+=0x1,'scheduledat':moment()[_0x36cc('0x103')](_0x503128[_0x36cc('0x1b4')],'minutes')[_0x36cc('0x77')](_0x36cc('0x105')),'ContactId':_0x3b7af2['ContactId'],'ListId':_0x3b7af2[_0x36cc('0xd8')],'VoiceQueueId':_0x3b7af2[_0x36cc('0xda')]||undefined,'CampaignId':_0x3b7af2[_0x36cc('0xdb')]||undefined})[_0x36cc('0xba')](loggerCatch(_0x36cc('0x1b5')));break;case 0x8:if(_0x3b7af2[_0x36cc('0xf7')]>=_0x503128[_0x36cc('0x1b6')]-0x1){return!![];}this['rescheduleContact']({'active':![],'countcongestionretry':_0x3b7af2['countcongestionretry']+=0x1,'scheduledat':moment()[_0x36cc('0x103')](_0x503128['dialCongestionRetryFrequency'],_0x36cc('0x104'))[_0x36cc('0x77')](_0x36cc('0x105')),'ContactId':_0x3b7af2[_0x36cc('0xd7')],'ListId':_0x3b7af2['ListId'],'VoiceQueueId':_0x3b7af2[_0x36cc('0xda')]||undefined,'CampaignId':_0x3b7af2[_0x36cc('0xdb')]||undefined})[_0x36cc('0xba')](loggerCatch(_0x36cc('0x1b7')));break;case 0x0:if(_0x3b7af2['countnosuchnumberretry']>=_0x503128[_0x36cc('0x1b8')]-0x1){return!![];}else{this[_0x36cc('0xc3')]({'active':![],'countnosuchnumberretry':_0x3b7af2[_0x36cc('0xf9')]+=0x1,'scheduledat':moment()[_0x36cc('0x103')](_0x503128[_0x36cc('0x1b9')],_0x36cc('0x104'))[_0x36cc('0x77')](_0x36cc('0x105')),'ContactId':_0x3b7af2['ContactId'],'ListId':_0x3b7af2[_0x36cc('0xd8')],'VoiceQueueId':_0x3b7af2[_0x36cc('0xda')]||undefined,'CampaignId':_0x3b7af2['CampaignId']||undefined})[_0x36cc('0xba')](loggerCatch(_0x36cc('0x1ba')));}break;case 0xa:if(_0x3b7af2['countdropretry']>=_0x503128['dialDropMaxRetry']-0x1){return!![];}this[_0x36cc('0xc3')]({'active':![],'countdropretry':_0x3b7af2['countdropretry']+=0x1,'scheduledat':moment()[_0x36cc('0x103')](_0x503128[_0x36cc('0x11e')],_0x36cc('0x104'))[_0x36cc('0x77')](_0x36cc('0x105')),'ContactId':_0x3b7af2[_0x36cc('0xd7')],'ListId':_0x3b7af2[_0x36cc('0xd8')],'VoiceQueueId':_0x3b7af2['VoiceQueueId']||undefined,'CampaignId':_0x3b7af2[_0x36cc('0xdb')]||undefined})[_0x36cc('0xba')](loggerCatch('[rescheduleContact][Drop]'));break;case 0xb:if(_0x3b7af2[_0x36cc('0xfb')]>=_0x503128[_0x36cc('0x12a')]-0x1){return!![];}this[_0x36cc('0xc3')]({'active':![],'countabandonedretry':_0x3b7af2[_0x36cc('0xfb')]+=0x1,'scheduledat':moment()['add'](_0x503128['dialAbandonedRetryFrequency'],_0x36cc('0x104'))[_0x36cc('0x77')](_0x36cc('0x105')),'ContactId':_0x3b7af2['ContactId'],'ListId':_0x3b7af2[_0x36cc('0xd8')],'VoiceQueueId':_0x3b7af2['VoiceQueueId']||undefined,'CampaignId':_0x3b7af2[_0x36cc('0xdb')]||undefined})[_0x36cc('0xba')](loggerCatch(_0x36cc('0x1bb')));break;case 0x13:if(_0x3b7af2['countmachineretry']>=_0x503128[_0x36cc('0x101')]-0x1){return!![];}this[_0x36cc('0xc3')]({'active':![],'countmachineretry':_0x3b7af2[_0x36cc('0xfc')]+=0x1,'scheduledat':moment()[_0x36cc('0x103')](_0x503128[_0x36cc('0x109')],'minutes')[_0x36cc('0x77')](_0x36cc('0x105')),'ContactId':_0x3b7af2[_0x36cc('0xd7')],'ListId':_0x3b7af2['ListId'],'VoiceQueueId':_0x3b7af2[_0x36cc('0xda')]||undefined,'CampaignId':_0x3b7af2[_0x36cc('0xdb')]||undefined})[_0x36cc('0xba')](loggerCatch(_0x36cc('0x106')));break;case 0x14:if(_0x3b7af2[_0x36cc('0xfd')]>=_0x503128[_0x36cc('0x1bc')]-0x1){return!![];}this[_0x36cc('0xc3')]({'active':![],'countagentrejectretry':_0x3b7af2[_0x36cc('0xfd')]+=0x1,'scheduledat':moment()[_0x36cc('0x103')](_0x503128[_0x36cc('0x1bd')],'minutes')['format'](_0x36cc('0x105')),'ContactId':_0x3b7af2['ContactId'],'ListId':_0x3b7af2[_0x36cc('0xd8')],'VoiceQueueId':_0x3b7af2['VoiceQueueId']||undefined,'CampaignId':_0x3b7af2[_0x36cc('0xdb')]||undefined})[_0x36cc('0xba')](loggerCatch('[rescheduleContact][AgentReject]'));break;default:return!![];}};Dialer['prototype']['callProgressDetecting']=function(_0x1c90ac,_0x5b5705,_0x7f90fe){var _0x412601=this;var _0x1c7bfd=new History(_0x1c90ac);var _0x3a5086=![];var _0x4f2f40;var _0x3ea1a8;return new Promise(function(_0x3b4611,_0x5ddf5c){if(_['isUndefined'](_0x5b5705)&&typeof _0x5b5705!==_0x36cc('0x180')){return _0x5ddf5c(msgResponse('[callProgressDetecting]',_0x36cc('0x14d'),_0x36cc('0x1be')));}if(_[_0x36cc('0x40')](_0x7f90fe)&&typeof _0x7f90fe!==_0x36cc('0x180')){return _0x5ddf5c(msgResponse(_0x36cc('0x1bf'),_0x36cc('0x14d'),_0x36cc('0x1c0')));}_0x412601[_0x36cc('0xbe')](_0x1c7bfd,_0x7f90fe[_0x36cc('0x1c1')],_0x5b5705)[_0x36cc('0x3e')](function(_0x3b7923){if(_0x3b7923[_0x36cc('0x121')]==0x1)_0x3a5086=!![];switch(_0x7f90fe[_0x36cc('0x1c1')]){case'0':_0x5b5705['outboundNoSuchCallsDay']+=0x1;_0x1c7bfd['state']=0x0;_0x1c7bfd[_0x36cc('0xa8')]=_0x36cc('0x1c2');_0x1c7bfd['countnosuchnumberretry']+=0x1;_0x1c7bfd[_0x36cc('0xf4')]+=0x1;ami[_0x36cc('0x4f')](_0x36cc('0x1c3'),ut[_0x36cc('0xec')](_0x1c90ac,_0x36cc('0x1c4')));_0x4f2f40=_0x5b5705[_0x36cc('0x1b9')];_0x3ea1a8=_0x5b5705[_0x36cc('0x11f')];_0x412601[_0x36cc('0xd0')](_0x1c7bfd)[_0x36cc('0xba')](loggerCatch(_0x36cc('0xf5')));if(_0x412601[_0x36cc('0x1c5')](0x0,_0x1c90ac,_0x5b5705)&&!_0x3a5086){if(_0x1c7bfd[_0x36cc('0xf9')]>=_0x5b5705['dialNoSuchNumberMaxRetry']){_0x412601['createStateFinal'](_0x1c7bfd,_0x3b4611,_0x5ddf5c,_0x36cc('0x1c6'));}else{_0x412601['stateGlobal'](_0x1c7bfd,_0x3b4611,_0x5ddf5c,_0x36cc('0x1c6'));}}break;case'3':_0x5b5705[_0x36cc('0x63')]+=0x1;_0x1c7bfd[_0x36cc('0xe8')]=0x3;_0x1c7bfd[_0x36cc('0xa8')]=_0x36cc('0x1c7');_0x1c7bfd[_0x36cc('0xf8')]+=0x1;_0x1c7bfd[_0x36cc('0xf4')]+=0x1;var _0x1b321a=ut[_0x36cc('0x1c8')](_0x1c90ac,_0x5b5705);ami[_0x36cc('0x4f')](_0x36cc('0x1c9'),_0x1b321a);_0x4f2f40=_0x5b5705['dialNoAnswerRetryFrequency'];_0x3ea1a8=_0x5b5705[_0x36cc('0x11f')];_0x412601[_0x36cc('0xd0')](_0x1c7bfd)[_0x36cc('0xba')](loggerCatch('[syncAgentComplete][createHistory][3]'));if(_0x412601[_0x36cc('0x1c5')](0x3,_0x1c90ac,_0x5b5705)&&!_0x3a5086){if(_0x1c7bfd[_0x36cc('0xf8')]>=_0x5b5705[_0x36cc('0x1b3')]){_0x412601['createStateFinal'](_0x1c7bfd,_0x3b4611,_0x5ddf5c,_0x36cc('0x1ca'));}else{_0x412601['stateGlobal'](_0x1c7bfd,_0x3b4611,_0x5ddf5c,_0x36cc('0x1ca'));}}break;case'5':_0x5b5705[_0x36cc('0x5f')]+=0x1;_0x1c7bfd[_0x36cc('0xe8')]=0x5;_0x1c7bfd[_0x36cc('0xa8')]=_0x36cc('0x1cb');_0x1c7bfd[_0x36cc('0xf6')]+=0x1;_0x1c7bfd[_0x36cc('0xf4')]+=0x1;ami[_0x36cc('0x4f')](_0x36cc('0x1cc'),ut[_0x36cc('0xec')](_0x1c90ac,'busy'));_0x4f2f40=_0x5b5705[_0x36cc('0x1b4')];_0x3ea1a8=_0x5b5705['callAdditionalPhoneAfterMin'];_0x412601[_0x36cc('0xd0')](_0x1c7bfd)[_0x36cc('0xba')](loggerCatch('[syncAgentComplete][createHistory][5]'));if(_0x412601[_0x36cc('0x1c5')](0x5,_0x1c90ac,_0x5b5705)&&!_0x3a5086){if(_0x1c7bfd[_0x36cc('0xf6')]>=_0x5b5705[_0x36cc('0x1cd')]){_0x412601[_0x36cc('0x102')](_0x1c7bfd,_0x3b4611,_0x5ddf5c,'reason\x205\x20busy');}else{_0x412601[_0x36cc('0xff')](_0x1c7bfd,_0x3b4611,_0x5ddf5c,_0x36cc('0x1ce'));}}break;case'8':_0x5b5705[_0x36cc('0x1cf')]+=0x1;_0x1c7bfd['state']=0x8;_0x1c7bfd[_0x36cc('0xa8')]='Congestion';_0x1c7bfd[_0x36cc('0xf7')]+=0x1;_0x1c7bfd[_0x36cc('0xf4')]+=0x1;_0x4f2f40=_0x5b5705[_0x36cc('0x1d0')];_0x3ea1a8=_0x5b5705['callAdditionalPhoneAfterMin'];ami[_0x36cc('0x4f')](_0x36cc('0x1d1'),ut[_0x36cc('0xec')](_0x1c90ac,_0x36cc('0x1d2')));_0x412601['createHistory'](_0x1c7bfd)[_0x36cc('0xba')](loggerCatch(_0x36cc('0x1d3')));if(_0x412601['checkRetriveMax'](0x8,_0x1c90ac,_0x5b5705)&&!_0x3a5086){if(_0x1c7bfd[_0x36cc('0xf7')]>=_0x5b5705[_0x36cc('0x1b6')]){_0x412601['createStateFinal'](_0x1c7bfd,_0x3b4611,_0x5ddf5c,_0x36cc('0x1d4'));}else{_0x412601[_0x36cc('0xff')](_0x1c7bfd,_0x3b4611,_0x5ddf5c,'reason\x208\x20congestion');}}break;case'11':_0x5b5705[_0x36cc('0x1d5')]+=0x1;_0x1c7bfd['state']=0xb;_0x1c7bfd[_0x36cc('0xa8')]=_0x36cc('0x127');_0x1c7bfd[_0x36cc('0xfb')]+=0x1;_0x1c7bfd[_0x36cc('0xf4')]+=0x1;_0x4f2f40=_0x5b5705[_0x36cc('0x129')];_0x3ea1a8=_0x5b5705[_0x36cc('0x11f')];_0x412601['createHistory'](_0x1c7bfd)[_0x36cc('0xba')](loggerCatch(_0x36cc('0x12b')));if(_0x412601['checkRetriveMax'](0xb,_0x1c90ac,_0x5b5705)&&!_0x3a5086){if(_0x1c7bfd[_0x36cc('0xfb')]>=_0x5b5705['dialAbandonedMaxRetry']){_0x412601[_0x36cc('0x102')](_0x1c7bfd,_0x3b4611,_0x5ddf5c,_0x36cc('0x1d6'));}else{_0x412601['stateGlobal'](_0x1c7bfd,_0x3b4611,_0x5ddf5c,_0x36cc('0x1d6'));}}break;case'20':_0x5b5705[_0x36cc('0x1d7')]+=0x1;_0x1c7bfd[_0x36cc('0xe8')]=0x14;_0x1c7bfd['statedesc']=_0x36cc('0x1d8');_0x1c7bfd[_0x36cc('0xfd')]+=0x1;_0x1c7bfd[_0x36cc('0xf4')]+=0x1;_0x4f2f40=_0x5b5705[_0x36cc('0x1bd')];_0x3ea1a8=_0x5b5705[_0x36cc('0x11f')];ami[_0x36cc('0x4f')](_0x36cc('0x1d9'),ut['buildObj'](_0x1c90ac,_0x36cc('0x1da')));_0x412601[_0x36cc('0xd0')](_0x1c7bfd)['catch'](loggerCatch(_0x36cc('0x1db')));if(_0x412601[_0x36cc('0x1c5')](0x14,_0x1c90ac,_0x5b5705)&&!_0x3a5086){if(_0x1c7bfd[_0x36cc('0xfd')]>=_0x5b5705[_0x36cc('0x1bc')]){_0x412601[_0x36cc('0x102')](_0x1c7bfd,_0x3b4611,_0x5ddf5c,_0x36cc('0x1dc'));}else{_0x412601['stateGlobal'](_0x1c7bfd,_0x3b4611,_0x5ddf5c,_0x36cc('0x1dc'));}}break;default:_0x5b5705[_0x36cc('0x66')]+=0x1;_0x1c7bfd['state']=0xc;_0x1c7bfd[_0x36cc('0xa8')]=_0x7f90fe[_0x36cc('0x1c1')];_0x4f2f40=_0x5b5705['dialAgentRejectRetryFrequency'];_0x3ea1a8=_0x5b5705['callAdditionalPhoneAfterMin'];_0x412601['createHistory'](_0x1c7bfd)[_0x36cc('0xba')](loggerCatch(_0x36cc('0x1dd')));if(_0x412601[_0x36cc('0x1c5')](_0x7f90fe[_0x36cc('0x1c1')],_0x1c90ac,_0x5b5705)&&!_0x3a5086){if(_0x1c7bfd[_0x36cc('0xf6')]+_0x1c7bfd['countcongestionretry']+_0x1c7bfd[_0x36cc('0xf8')]+_0x1c7bfd['countnosuchnumberretry']+_0x1c7bfd['countdropretry']+_0x1c7bfd[_0x36cc('0xfb')]+_0x1c7bfd[_0x36cc('0xfc')]+_0x1c7bfd[_0x36cc('0xfd')]>=_0x5b5705['dialGlobalMaxRetry']){_0x412601[_0x36cc('0xff')](_0x1c7bfd,_0x3b4611,_0x5ddf5c,_0x7f90fe[_0x36cc('0x1c1')]);}else{_0x412601['createStateFinal'](_0x1c7bfd,_0x3b4611,_0x5ddf5c,_0x7f90fe[_0x36cc('0x1c1')]);}}}})[_0x36cc('0x3e')](function(){if(_0x3a5086){_0x412601[_0x36cc('0x12c')](_0x1c7bfd,_0x4f2f40,_0x3ea1a8)[_0x36cc('0x3e')](function(){return _0x3b4611(0x1);});}});});};Dialer[_0x36cc('0x1d')]['stateGlobal']=function(_0x29a4ac,_0x44e4b3,_0x6871cc,_0x9e7493){var _0x34c1fc=new Final(_0x29a4ac);_0x34c1fc[_0x36cc('0xe8')]=0xf;_0x34c1fc['statedesc']='Global';this['createStateFinal'](_0x34c1fc,_0x44e4b3,_0x6871cc,_0x9e7493);};Dialer[_0x36cc('0x1d')]['createStateFinal']=function(_0x57e50d,_0x1a818c,_0x5911ea,_0x14b5c1){this[_0x36cc('0xce')](_0x57e50d)[_0x36cc('0x3e')](function(){return _0x1a818c(msgResponse('[callProgressDetecting]',_0x36cc('0xdd'),_0x14b5c1));})[_0x36cc('0xba')](function(){return _0x5911ea(msgResponse(_0x36cc('0x1de'),_0x36cc('0x14d'),_0x36cc('0x1df')));});};Dialer[_0x36cc('0x1d')][_0x36cc('0x8')]=function(_0x76ce56){var _0x4e11f1=_0x76ce56[_0x36cc('0x1e0')]/0x64;var _0x394851=_0x76ce56[_0x36cc('0x62')]/(_0x76ce56[_0x36cc('0x62')]+_0x76ce56[_0x36cc('0x5d')]);var _0x4d0fe6=Math[_0x36cc('0x1e1')](_0x76ce56[_0x36cc('0x6e')]*(_0x76ce56['predictiveIntervalMaxThreshold']/0x64));var _0x1f7ab4=Math[_0x36cc('0x1e1')](_0x76ce56[_0x36cc('0x6e')]*(_0x76ce56[_0x36cc('0x1e2')]/0x64));var _0x188a7d=_0x76ce56['available']+_0x76ce56[_0x36cc('0x57')];var _0x3f7227=Math[_0x36cc('0x1e3')](_0x76ce56[_0x36cc('0x8c')]*_0x76ce56['erlangAbandonmentRate']*_0x76ce56[_0x36cc('0x1e4')]*_0x76ce56[_0x36cc('0x1e5')]);if(_['isUndefined'](_0x76ce56[_0x36cc('0x29')])){if(!_[_0x36cc('0x40')](_0x76ce56[_0x36cc('0x91')])){_0x76ce56[_0x36cc('0x91')]=undefined;loggerPredictive['error'](_0x36cc('0x1e6'),_0x36cc('0x1e7'));}if(!_[_0x36cc('0x40')](_0x76ce56[_0x36cc('0x92')])){loggerPredictive[_0x36cc('0x98')](_0x36cc('0x1e6'),_0x36cc('0x1e8'));clearInterval(_0x76ce56[_0x36cc('0x92')]);_0x76ce56[_0x36cc('0x92')]=undefined;}_0x76ce56[_0x36cc('0x29')]=moment()[_0x36cc('0x77')](_0x36cc('0x105'));loggerPredictive[_0x36cc('0x7d')](_0x76ce56[_0x36cc('0x43')],'collection\x20data\x20in\x20progressive\x20at',_0x76ce56['startProgressive']);this[_0x36cc('0x165')](_0x76ce56,0x1);}else if(ifInterval(_0x76ce56[_0x36cc('0x1e9')],_0x76ce56[_0x36cc('0x29')])){this['handlePower'](_0x76ce56,0x1);loggerPredictiveCalls['info'](_0x36cc('0x1ea'),_0x76ce56[_0x36cc('0x29')],_0x76ce56[_0x36cc('0x43')]);_0x76ce56[_0x36cc('0x8c')]=0x0;_0x76ce56['predictiveIntervalErlangCallsDroppedCalls']=0x0;}else if(_0x4e11f1<_0x394851&&_0x76ce56[_0x36cc('0x1eb')]===_0x36cc('0x1ec')){freeVariablesPredictive(_0x76ce56);loggerPredictive['info']('[stopMethodPredictive][ReStartProgressive][ExceededDropDay]',_0x36cc('0x1ed'),_0x394851,'startProgressive',_0x76ce56['name']);}else if(_0x3f7227<_0x76ce56[_0x36cc('0x6c')]&&_0x76ce56[_0x36cc('0x1eb')]==='dropRate'){freeVariablesPredictive(_0x76ce56);loggerPredictive[_0x36cc('0x7d')](_0x36cc('0x1ee'),'Max\x20Drop\x20',_0x3f7227,_0x36cc('0x1ef'),_0x76ce56[_0x36cc('0x6c')],_0x36cc('0x29'),_0x76ce56['name']);}else if(!ifInterval(_0x76ce56[_0x36cc('0x1e9')],_0x76ce56[_0x36cc('0x29')])&&_['isUndefined'](_0x76ce56['startPredictive'])&&!_[_0x36cc('0x40')](_0x76ce56[_0x36cc('0x29')])){_0x76ce56[_0x36cc('0x91')]=moment()['format']('YYYY-MM-DD\x20HH:mm:ss');loggerPredictive['info'](_0x76ce56[_0x36cc('0x43')],'started\x20in\x20predictive\x20at',_0x76ce56['startPredictive']);this[_0x36cc('0x1f0')](_0x76ce56[_0x36cc('0x1e9')])[_0x36cc('0x3e')](this['getDataPredictive'](_0x76ce56))[_0x36cc('0x3e')](mergeDataErlangB(_0x76ce56))['then'](this[_0x36cc('0x1f1')](_0x76ce56))[_0x36cc('0xba')](loggerCatchPredictive('Predictive\x20after\x20first\x20interval',_0x76ce56));}else if(!ifInterval(_0x76ce56[_0x36cc('0x1e9')],_0x76ce56[_0x36cc('0x91')])){_0x76ce56[_0x36cc('0x6c')]=0x0;_0x76ce56[_0x36cc('0x91')]=moment()['format'](_0x36cc('0x105'));loggerPredictive[_0x36cc('0x7d')](_0x76ce56[_0x36cc('0x43')],_0x36cc('0x1f2'),_0x76ce56[_0x36cc('0x91')]);clearInterval(_0x76ce56[_0x36cc('0x92')]);_0x76ce56[_0x36cc('0x92')]=undefined;this[_0x36cc('0x1f0')](_0x76ce56[_0x36cc('0x1e9')])[_0x36cc('0x3e')](this[_0x36cc('0x1f3')](_0x76ce56))[_0x36cc('0x3e')](mergeDataErlangB(_0x76ce56))['then'](this[_0x36cc('0x1f1')](_0x76ce56))[_0x36cc('0xba')](loggerCatchPredictive(_0x36cc('0x1f4'),_0x76ce56));}else if(_0x76ce56[_0x36cc('0x6e')]&&_0x188a7d<_0x76ce56['predictiveIntervalAvailable']-_0x1f7ab4){freeVariablesPredictive(_0x76ce56);loggerPredictive[_0x36cc('0x7d')](_0x76ce56[_0x36cc('0x43')],_0x36cc('0x1f5'),_0x188a7d,_0x36cc('0x1f6'),_0x76ce56[_0x36cc('0x6e')],'-',_0x1f7ab4,'=',_0x76ce56['predictiveIntervalAvailable']-_0x1f7ab4,')');}else if(_0x76ce56[_0x36cc('0x6e')]&&_0x188a7d>_0x76ce56['predictiveIntervalAvailable']+_0x4d0fe6){freeVariablesPredictive(_0x76ce56);loggerPredictive[_0x36cc('0x7d')](_0x76ce56[_0x36cc('0x43')],'switch\x20in\x20progressive\x20because\x20available\x20agents\x20(',_0x188a7d,_0x36cc('0x1f7'),_0x76ce56[_0x36cc('0x6e')],'+',_0x4d0fe6,'=',_0x76ce56[_0x36cc('0x6e')]+_0x4d0fe6,')');}};Dialer[_0x36cc('0x1d')][_0x36cc('0x1f3')]=function(_0x1e395b){var _0x5ad748=this;return function(_0x45415b){return new Promise(function(_0x65054e,_0x534c4d){_[_0x36cc('0x90')](_0x1e395b,_0x45415b[0x0]);if(checkGetDataPredictive(_0x45415b[0x0])){var _0x2b38f0=_0x1e395b[_0x36cc('0x6e')]=_0x1e395b[_0x36cc('0x57')]+_0x1e395b[_0x36cc('0x1f8')];var _0x3fb85d=_0x1e395b[_0x36cc('0x1e9')]*0x3c;var _0x36bffd=_0x45415b[0x0][_0x36cc('0x69')]+_0x45415b[0x0][_0x36cc('0x68')];var _0x19908=(_0x45415b[0x0]['predictiveIntervalAnsweredCalls']+_0x45415b[0x0][_0x36cc('0x6b')]+_0x45415b[0x0][_0x36cc('0x6a')])/_0x45415b[0x0]['predictiveIntervalTotalCalls'];_0x1e395b[_0x36cc('0x1e4')]=_0x19908>0x0?_0x19908:0x1;switch(_0x1e395b[_0x36cc('0x1eb')]){case _0x36cc('0x1ec'):var _0x51e913=_0x1e395b[_0x36cc('0x1e0')]/0x64;return _0x5ad748[_0x36cc('0x1f9')](_0x2b38f0,_0x3fb85d,_0x36bffd,_0x19908,_0x51e913)['then'](function(_0x3d50f4){return _0x65054e(_0x3d50f4);});case _0x36cc('0x1fa'):var _0xa8b811=_0x1e395b[_0x36cc('0x1e0')]/0x64;return _0x5ad748[_0x36cc('0x1fb')](_0x2b38f0,_0x3fb85d,_0x36bffd,_0x19908,_0xa8b811)[_0x36cc('0x3e')](function(_0x4a7f0d){return _0x65054e(_0x4a7f0d);});default:return _0x534c4d(msgResponse(_0x36cc('0x1fc'),_0x36cc('0x14d'),_0x36cc('0x1fd')));}}else{return _0x534c4d(msgResponse(_0x36cc('0x1fc'),_0x36cc('0x14d'),_0x36cc('0x1fe')));}});};};Dialer['prototype']['getDataPredictiveOld']=function(_0x46178e){var _0x527a76=this;return function(_0x572323){return new Promise(function(_0x469691,_0x221b76){_[_0x36cc('0x90')](_0x46178e,_0x572323[0x0]);if(checkGetDataPredictive(_0x572323[0x0])){loggerPredictive['info'](JSON['stringify'](_0x572323[0x0]));if(_0x46178e[_0x36cc('0x1eb')]===_0x36cc('0x1ec')){return _0x527a76[_0x36cc('0xcc')](_0x46178e['id'])[_0x36cc('0x3e')](function(_0x301ed1){var _0x1f7d09=_0x46178e[_0x36cc('0x16c')]-_0x301ed1[0x0][_0x36cc('0x1ff')];var _0xa1b0f5=_0x46178e['dialPredictiveInterval']*0x3c;var _0x125743=_0x572323[0x0]['predictiveIntervalAvgTalktime']+_0x572323[0x0][_0x36cc('0x68')];var _0x2d61c0=(_0x572323[0x0]['predictiveIntervalAnsweredCalls']+_0x572323[0x0][_0x36cc('0x6b')]+_0x572323[0x0]['predictiveIntervalDroppedCallsCallersExit'])/_0x572323[0x0][_0x36cc('0x6f')];var _0x510bc8=_0x46178e[_0x36cc('0x1e0')]/0x64;_0x46178e[_0x36cc('0x6d')]=_0x301ed1[0x0]['outboundQueuePauses']||0x0;_0x46178e[_0x36cc('0x1e4')]=_0x2d61c0>0x0?_0x2d61c0:0x1;return _0x527a76[_0x36cc('0x1f9')](_0x1f7d09,_0xa1b0f5,_0x125743,_0x2d61c0,_0x510bc8);})[_0x36cc('0x3e')](function(_0x25ddcc){return _0x469691(_0x25ddcc);})[_0x36cc('0xba')](function(_0x30d072){return _0x221b76(msgResponse(_0x36cc('0x200'),_0x36cc('0x14d'),JSON['stringify'](_0x30d072)));});}if(_0x46178e[_0x36cc('0x1eb')]===_0x36cc('0x1fa')){return _0x527a76[_0x36cc('0xcc')](_0x46178e['id'])[_0x36cc('0x3e')](function(_0x34b1a6){var _0x3f4363=_0x46178e['loggedIn']-_0x34b1a6[0x0][_0x36cc('0x1ff')];var _0x73221e=_0x46178e[_0x36cc('0x1e9')]*0x3c;var _0x3d2469=_0x572323[0x0][_0x36cc('0x69')]+_0x572323[0x0][_0x36cc('0x68')];var _0x2cb8ce=(_0x572323[0x0]['predictiveIntervalAnsweredCalls']+_0x572323[0x0]['predictiveIntervalDroppedCallsTimeout']+_0x572323[0x0]['predictiveIntervalDroppedCallsCallersExit'])/_0x572323[0x0][_0x36cc('0x6f')];var _0x25550e=_0x46178e[_0x36cc('0x1e0')]/0x64;_0x46178e['predictiveIntervalPauses']=_0x34b1a6[0x0][_0x36cc('0x1ff')]||0x0;_0x46178e['predictiveIntervalHitRate']=_0x2cb8ce>0x0?_0x2cb8ce:0x1;return _0x527a76[_0x36cc('0x1fb')](_0x3f4363,_0x73221e,_0x3d2469,_0x2cb8ce,_0x25550e);})[_0x36cc('0x3e')](function(_0x504393){return _0x469691(_0x504393);})[_0x36cc('0xba')](function(_0x14f275){return _0x221b76(msgResponse(_0x36cc('0x200'),_0x36cc('0x14d'),JSON[_0x36cc('0x137')](_0x14f275)));});}}else{return _0x221b76(msgResponse(_0x36cc('0x1fc'),_0x36cc('0x14d'),_0x36cc('0x1fe')));}});};};Dialer[_0x36cc('0x1d')][_0x36cc('0x1f1')]=function(_0x2b3dbb){var _0x5a03c6=this;return function(){var _0x5d5865=0x0;var _0x2c1ee4=Math['floor'](_0x2b3dbb[_0x36cc('0x71')]*0x3e8);if(_0x2c1ee4>0x0){_0x2c1ee4=_0x2c1ee4<0x64?0x64:_0x2c1ee4;loggerPredictive[_0x36cc('0x7d')](_0x2b3dbb[_0x36cc('0x43')],'one\x20call\x20every:',_0x2c1ee4,_0x36cc('0x4d'));_0x2b3dbb['handlePredictive']=setInterval(function(){_0x5a03c6[_0x36cc('0x92')](_0x2b3dbb);loggerPredictiveCalls[_0x36cc('0x7d')](_0x36cc('0x201'),_0x5d5865+=0x1);},_0x2c1ee4);}else{loggerPredictive[_0x36cc('0x7d')](_0x2b3dbb[_0x36cc('0x43')],_0x36cc('0x202'));}};};Dialer[_0x36cc('0x1d')]['checkContactBlack']=function(_0x47f5ff,_0x46caf1){var _0x18cc82=this;return function(_0x56719b){if(_[_0x36cc('0x7c')](_0x56719b)){if(_[_0x36cc('0xe2')](_0x46caf1['UserId'])||!_0x46caf1[_0x36cc('0x203')]){if(_0x47f5ff[_0x36cc('0x5b')]===_0x36cc('0x7')){_0x47f5ff[_0x36cc('0x134')]=_['isUndefined'](_0x47f5ff[_0x36cc('0x134')])?!![]:_0x47f5ff[_0x36cc('0x134')];var _0x88b3a4=uuid['v4']();_0x18cc82[_0x36cc('0x26')][_0x88b3a4]=new Action(_0x47f5ff,_0x46caf1,_0x88b3a4);loggerBooked[_0x36cc('0x7d')](_0x36cc('0x204'),_0x88b3a4,'queueStatusComplete:\x20',JSON['stringify'](_0x47f5ff[_0x36cc('0x134')]),'Queue:\x20',_0x47f5ff[_0x36cc('0x43')]);if(_0x47f5ff[_0x36cc('0x134')]){_0x47f5ff[_0x36cc('0x134')]=![];_0x18cc82[_0x36cc('0x2b')][_0x18cc82[_0x36cc('0x26')][_0x88b3a4][_0x36cc('0xb6')]]=[];ami[_0x36cc('0x153')]({'actionid':_0x88b3a4,'action':_0x36cc('0x205'),'queue':_0x47f5ff[_0x36cc('0x43')]})[_0x36cc('0xba')](function(){_0x18cc82['updateOriginated'](_0x47f5ff);_0x18cc82[_0x36cc('0xc3')]({'active':![],'ContactId':_0x18cc82['actions'][_0x88b3a4][_0x36cc('0xd7')],'ListId':_0x18cc82[_0x36cc('0x26')][_0x88b3a4][_0x36cc('0xd8')],'VoiceQueueId':_0x18cc82[_0x36cc('0x26')][_0x88b3a4]['VoiceQueueId']||undefined,'CampaignId':_0x18cc82['actions'][_0x88b3a4][_0x36cc('0xdb')]||undefined})['catch'](loggerCatch('[unlockOriginate][syncQueueStatusComplete]'));delete _0x18cc82['actions'][_0x88b3a4];});}else{loggerBooked[_0x36cc('0x7d')]('[booked][checkContactBlack][else]',JSON[_0x36cc('0x137')](_0x47f5ff['queueStatusComplete']),_0x36cc('0x206'),_0x47f5ff[_0x36cc('0x43')]);_0x18cc82[_0x36cc('0xb5')](_0x47f5ff);_0x18cc82['rescheduleContact']({'active':![],'ContactId':_0x18cc82['actions'][_0x88b3a4]['ContactId'],'ListId':_0x18cc82[_0x36cc('0x26')][_0x88b3a4][_0x36cc('0xd8')],'VoiceQueueId':_0x18cc82['actions'][_0x88b3a4][_0x36cc('0xda')]||undefined,'CampaignId':_0x18cc82[_0x36cc('0x26')][_0x88b3a4][_0x36cc('0xdb')]||undefined})[_0x36cc('0xba')](loggerCatch(_0x36cc('0x207')));delete _0x18cc82[_0x36cc('0x26')][_0x88b3a4];}}else{return _0x18cc82['actionOriginate'](_0x47f5ff,_0x46caf1);}}else{if(getDiff(_0x46caf1[_0x36cc('0x208')])<_0x47f5ff['dialRecallMeTimeout']*0x3c){if(_0x46caf1['Agent']&&!_0x46caf1['Agent'][_0x36cc('0x209')]){_0x18cc82[_0x36cc('0x93')][_0x36cc('0x138')](_0x46caf1['id'])[_0x36cc('0x1f')](function(){_0x18cc82['updateOriginated'](_0x47f5ff);});}else{_0x18cc82['unlockContact']({'active':![]},_0x46caf1['id'],0x1)['finally'](function(){_0x18cc82[_0x36cc('0xb5')](_0x47f5ff);});}}else{_0x47f5ff[_0x36cc('0x65')]+=0x1;_0x18cc82['updateOriginated'](_0x47f5ff);if(_0x47f5ff[_0x36cc('0x20a')]){_0x18cc82[_0x36cc('0xc3')]({'active':![],'recallme':![],'UserId':null,'ContactId':_0x46caf1[_0x36cc('0xd7')],'ListId':_0x46caf1[_0x36cc('0xd8')],'VoiceQueueId':_0x46caf1[_0x36cc('0xda')]||undefined,'CampaignId':_0x46caf1[_0x36cc('0xdb')]||undefined})[_0x36cc('0xba')](loggerCatch(_0x36cc('0x20b')));_0x18cc82[_0x36cc('0xd0')](createObjHistory(_0x47f5ff,_0x46caf1,_0x36cc('0x20c'),0x17,'RecallInQueue'))[_0x36cc('0xba')](loggerCatch(_0x36cc('0x20d')));}else{_0x18cc82[_0x36cc('0xd5')](createObjHistory(_0x47f5ff,_0x46caf1,_0x36cc('0x20e'),0x16,_0x36cc('0x20f')),'[Originate][HistoryRecallClose][historyCatch]',_0x36cc('0x210'));}}}}else{_0x47f5ff[_0x36cc('0x5e')]+=0x1;_0x18cc82[_0x36cc('0xd5')](createObjHistory(_0x47f5ff,_0x46caf1,_0x36cc('0x211'),0xd,'Blacklist'),_0x36cc('0x212'),_0x36cc('0x213'));throw'inBlackList';}};};Dialer[_0x36cc('0x1d')][_0x36cc('0x16b')]=function(_0x58eeb7){var _0x330c96=this;var _0x3ceb30=_0x58eeb7['limitCalls']-_0x58eeb7[_0x36cc('0x70')]-_0x58eeb7[_0x36cc('0xc8')];emitCampaignSummary(_0x58eeb7);if(_0x3ceb30>0x0){if(_0x3ceb30>this[_0x36cc('0x24')]){_0x3ceb30=this[_0x36cc('0x24')];}_0x58eeb7[_0x36cc('0xc8')]+=_0x3ceb30;this[_0x36cc('0xca')](_0x58eeb7['id'],_0x3ceb30,_0x58eeb7[_0x36cc('0x214')],_0x58eeb7)[_0x36cc('0x3e')](function(_0x1137dc){_0x58eeb7[_0x36cc('0xc8')]-=_0x3ceb30;_0x58eeb7[_0x36cc('0xc8')]=_0x58eeb7[_0x36cc('0xc8')]>0x0?_0x58eeb7[_0x36cc('0xc8')]:0x0;if(!checkContactEmpty(_0x1137dc)){_0x58eeb7[_0x36cc('0x41')]=_0x36cc('0x9f');logger['info'](_0x36cc('0x215')+_0x58eeb7['name']);}else{_0x58eeb7[_0x36cc('0x70')]+=_0x1137dc['length'];_0x58eeb7[_0x36cc('0x41')]=_0x36cc('0x216');for(var _0x4258ac=0x0;_0x4258ac<_0x1137dc[_0x36cc('0x13d')];_0x4258ac+=0x1){_0x58eeb7['ivrTotalCallsDays']+=0x1;if(_[_0x36cc('0xe2')](_0x1137dc[_0x4258ac])||_['isNil'](_0x1137dc[_0x4258ac]['Contact'])||_[_0x36cc('0xe2')](_0x1137dc[_0x4258ac][_0x36cc('0x182')])){_0x330c96[_0x36cc('0xd3')]('[actionOriginate]\x20',_0x58eeb7,_0x1137dc[_0x4258ac]);}else{_0x330c96['checkIsBlackListIvr'](_['pick'](_0x1137dc[_0x4258ac],[_0x36cc('0xdb'),_0x36cc('0x182')]))[_0x36cc('0x3e')](_0x330c96[_0x36cc('0x217')](_0x58eeb7,_0x1137dc[_0x4258ac]))[_0x36cc('0xba')](_0x330c96[_0x36cc('0xd2')](_0x36cc('0x218'),_0x58eeb7));}}}})[_0x36cc('0xba')](loggerGetContactDialer(_0x36cc('0x219'),_0x58eeb7,_0x3ceb30));}};Dialer[_0x36cc('0x1d')]['handlePower']=function(_0x1fee21,_0xb72b91){var _0x375419=this;var _0x3f27a3=[];var _0x5b3a1=_0xb72b91>=0x1?_0xb72b91:0x1;if(_0x1fee21['dialMethod']==='booked'){_0x5b3a1=0x1;}var _0x4e8070=Math[_0x36cc('0x1e3')](_0x1fee21[_0x36cc('0x1f8')]*_0x5b3a1)-_0x1fee21[_0x36cc('0x70')]-_0x1fee21[_0x36cc('0xc8')];emitVoiceQueueSummary(_0x1fee21);if(_0x1fee21[_0x36cc('0x21a')]>0x0){var _0x59a3e2=_0x1fee21[_0x36cc('0x21a')]-_0x1fee21[_0x36cc('0x70')]-_0x1fee21['talking']-_0x1fee21[_0x36cc('0xc8')]-_0x1fee21[_0x36cc('0x54')];if(_0x4e8070>_0x59a3e2){_0x4e8070=_0x59a3e2;}}if(_0x4e8070>0x0){if(_0x1fee21[_0x36cc('0x5b')]===_0x36cc('0x7')){_0x4e8070=0x1;}if(_0x4e8070>this[_0x36cc('0x24')]){_0x4e8070=this[_0x36cc('0x24')];}_0x1fee21[_0x36cc('0xc8')]+=_0x4e8070;for(var _0x227daa in this['agents']){if(typeof this['agents'][_0x227daa]!==_0x36cc('0x99')){if(this[_0x36cc('0x22')][_0x227daa][_0x36cc('0xe8')]===_0x36cc('0x21b')&&this[_0x36cc('0x22')][_0x227daa][_0x36cc('0xb2')]===_0x36cc('0x175')){_0x3f27a3[_0x36cc('0x132')](this['agents'][_0x227daa]['id']);}}}this[_0x36cc('0xc7')](_0x1fee21['id'],_0x3f27a3,_0x4e8070,_0x1fee21['dialOrderByScheduledAt'],_0x1fee21)['then'](function(_0xc2c2ee){_0x1fee21[_0x36cc('0xc8')]-=_0x4e8070;_0x1fee21[_0x36cc('0xc8')]=_0x1fee21[_0x36cc('0xc8')]>0x0?_0x1fee21['temp']:0x0;if(!checkContactEmpty(_0xc2c2ee)){_0x375419[_0x36cc('0xb9')](_0x1fee21)[_0x36cc('0x3e')](sendMessageReschedule(_0x1fee21))['catch'](loggerCatch('[countReScheduled]\x20'));}else{_0x1fee21[_0x36cc('0x70')]+=_0xc2c2ee['length'];_0x1fee21[_0x36cc('0x41')]=_0x1fee21[_0x36cc('0x5b')]===_0x36cc('0x7')?'ACTIVE':_0x36cc('0x216');for(var _0x503921=0x0;_0x503921<_0xc2c2ee['length'];_0x503921+=0x1){if(_['isNil'](_0xc2c2ee[_0x503921])||_[_0x36cc('0xe2')](_0xc2c2ee[_0x503921][_0x36cc('0x19b')])||_[_0x36cc('0xe2')](_0xc2c2ee[_0x503921][_0x36cc('0x182')])){_0x375419[_0x36cc('0xd3')](_0x36cc('0x21c'),_0x1fee21,_0xc2c2ee[_0x503921]);}else{_0x375419[_0x36cc('0xbc')](_['pick'](_0xc2c2ee[_0x503921],[_0x36cc('0xda'),_0x36cc('0x182')]))['then'](_0x375419[_0x36cc('0x217')](_0x1fee21,_0xc2c2ee[_0x503921]))['catch'](_0x375419[_0x36cc('0xd2')]('[actionOriginate]\x20',_0x1fee21));}}}})[_0x36cc('0xba')](loggerGetContactDialer('[getContactDialer2]',_0x1fee21,_0x4e8070));}};Dialer['prototype']['handlePredictive']=function(_0x5b73ba){if(_0x5b73ba[_0x36cc('0x21a')]>0x0){var _0x5eb19c=_0x5b73ba[_0x36cc('0x21a')]-_0x5b73ba[_0x36cc('0x70')]-_0x5b73ba[_0x36cc('0x57')];if(_0x5eb19c>0x0){this[_0x36cc('0x21d')](_0x5b73ba);}else{loggerPredictiveCalls[_0x36cc('0x7d')]('[handlePredictive][limitChannel]');}}else{this[_0x36cc('0x21d')](_0x5b73ba);}};Dialer[_0x36cc('0x1d')][_0x36cc('0x21d')]=function(_0x57e57c){var _0x18e9ee=this;var _0x4823c6=[];_0x57e57c['originated']+=0x1;for(var _0x5f252d in this['agents']){if(typeof this[_0x36cc('0x22')][_0x5f252d]!==_0x36cc('0x99')){if(this[_0x36cc('0x22')][_0x5f252d][_0x36cc('0xe8')]===_0x36cc('0x21b')&&this['agents'][_0x5f252d]['status']===_0x36cc('0x175')){_0x4823c6[_0x36cc('0x132')](this[_0x36cc('0x22')][_0x5f252d]['id']);}}}this['getContactDialer'](_0x57e57c['id'],_0x4823c6,0x1,_0x57e57c['dialOrderByScheduledAt'],_0x57e57c)[_0x36cc('0x3e')](function(_0xc2ed5b){if(!checkContactEmpty(_0xc2ed5b)){checkContactLowerLimitOriginate(_0x57e57c,0x1,0x0);_0x18e9ee['countReScheduled'](_0x57e57c)[_0x36cc('0x3e')](sendMessageReschedule(_0x57e57c))['catch'](loggerCatch(_0x36cc('0xbb')));}else{_0x57e57c['message']=_0x36cc('0x216');if(_[_0x36cc('0xe2')](_0xc2ed5b[0x0])||_[_0x36cc('0xe2')](_0xc2ed5b[0x0][_0x36cc('0x19b')])||_[_0x36cc('0xe2')](_0xc2ed5b[0x0][_0x36cc('0x182')])){_0x18e9ee['emptyContact']('[actionOriginate]\x20',_0x57e57c,_0xc2ed5b[0x0]);}else{_0x18e9ee['checkIsBlackList'](_[_0x36cc('0xd6')](_0xc2ed5b[0x0],[_0x36cc('0xda'),_0x36cc('0x182')]))[_0x36cc('0x3e')](_0x18e9ee[_0x36cc('0x217')](_0x57e57c,_0xc2ed5b[0x0]))['catch'](_0x18e9ee[_0x36cc('0xd2')](_0x36cc('0x21e'),_0x57e57c));}}})[_0x36cc('0xba')](loggerGetContactDialer('[getContactDialerPredictive]',_0x57e57c,0x1));emitVoiceQueueSummary(_0x57e57c);};Dialer[_0x36cc('0x1d')][_0x36cc('0x1f9')]=function(_0x8257de,_0x116ab5,_0x4e89d2,_0x4106eb,_0x9e9fdf,_0x270454){loggerPredictive['info'](_0x36cc('0x21f'));loggerPredictive[_0x36cc('0x7d')](_0x36cc('0x220'),_0x8257de);loggerPredictive[_0x36cc('0x7d')](_0x36cc('0x221'),_0x116ab5);loggerPredictive[_0x36cc('0x7d')](_0x36cc('0x222'),_0x4e89d2);loggerPredictive[_0x36cc('0x7d')](_0x36cc('0x223'),_0x4106eb);loggerPredictive['info'](_0x36cc('0x224'),_0x9e9fdf);loggerPredictive[_0x36cc('0x7d')](_0x36cc('0x85'));return new Promise(function(_0xbcd31e,_0x23515b){if(_0x8257de<=0x0||isNaN(_0x8257de)){return _0x23515b(msgResponse('[abandonmentRate]','Error','m\x20=\x20'+_0x8257de));}if(_0x4e89d2<=0x0||isNaN(_0x4e89d2)){return _0x23515b(msgResponse(_0x36cc('0x225'),_0x36cc('0x4c'),_0x36cc('0x226')+_0x4e89d2));}if(_0x4106eb<=0x0||isNaN(_0x4106eb)){return _0x23515b(msgResponse(_0x36cc('0x225'),_0x36cc('0x4c'),_0x36cc('0x227')+_0x4106eb));}if(_0x116ab5<=0x0||isNaN(_0x116ab5)){return _0x23515b(msgResponse(_0x36cc('0x225'),'Error',_0x36cc('0x228')+_0x116ab5));}if(_0x9e9fdf<=0x0||isNaN(_0x9e9fdf)){return _0x23515b(msgResponse('[abandonmentRate]','Error','Amax\x20=\x20'+_0x9e9fdf));}_0x270454=_0x270454||0x0;var _0x3c0ec6=0x1/_0x4e89d2;var _0x4d9538=0x0;var _0x352189=0x0;var _0x21d498=0x0;var _0x1887bd=0x0;for(var _0x1bc132=0x0;_0x21d498<_0x9e9fdf;_0x1bc132+=0x1){_0x352189=_0x1bc132/_0x116ab5;_0x4d9538=(_0x4106eb*_0x352189+_0x270454)/_0x3c0ec6;_0x21d498=erlangb(_0x4d9538,_0x8257de);_0x1887bd=_0x4d9538/_0x8257de*(0x1-erlangb(_0x4d9538,_0x8257de));}return _0xbcd31e({'erlangCalls':_0x1bc132,'erlangCallToSecond':_0x116ab5/_0x1bc132,'erlangAbandonmentRate':_0x21d498,'erlangBusyFactor':_0x1887bd});});};Dialer[_0x36cc('0x1d')][_0x36cc('0x1fb')]=function(_0x4bfa12,_0x172228,_0x5dd99f,_0x52e457,_0x4dffff,_0x3fa1a1){loggerPredictive[_0x36cc('0x7d')](_0x36cc('0x229'));loggerPredictive[_0x36cc('0x7d')](_0x36cc('0x220'),_0x4bfa12);loggerPredictive[_0x36cc('0x7d')](_0x36cc('0x221'),_0x172228);loggerPredictive[_0x36cc('0x7d')](_0x36cc('0x222'),_0x5dd99f);loggerPredictive[_0x36cc('0x7d')]('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',_0x52e457);loggerPredictive[_0x36cc('0x7d')](_0x36cc('0x22a'),_0x4dffff);loggerPredictive['info'](_0x36cc('0x85'));return new Promise(function(_0xafbe6f,_0x11e163){if(_0x4bfa12<=0x0||isNaN(_0x4bfa12)){return _0x11e163(msgResponse(_0x36cc('0x22b'),_0x36cc('0x4c'),_0x36cc('0x22c')+_0x4bfa12));}if(_0x5dd99f<=0x0||isNaN(_0x5dd99f)){return _0x11e163(msgResponse('[busyFactor]',_0x36cc('0x4c'),_0x36cc('0x226')+_0x5dd99f));}if(_0x52e457<=0x0||isNaN(_0x52e457)){return _0x11e163(msgResponse(_0x36cc('0x22b'),_0x36cc('0x4c'),_0x36cc('0x227')+_0x52e457));}if(_0x172228<=0x0||isNaN(_0x172228)){return _0x11e163(msgResponse(_0x36cc('0x22b'),_0x36cc('0x4c'),_0x36cc('0x228')+_0x172228));}if(_0x4dffff<=0x0||isNaN(_0x4dffff)){return _0x11e163(msgResponse(_0x36cc('0x22b'),'Error',_0x36cc('0x22d')+_0x4dffff));}_0x3fa1a1=_0x3fa1a1||0x0;var _0x4211a0=0x1/_0x5dd99f;var _0x2764c9=0x0;var _0x377d91=0x0;var _0x4ba297=0x0;var _0xf7fab5=0x0;for(var _0x339541=0x0;_0xf7fab5<_0x4dffff;_0x339541+=0x1){_0x377d91=_0x339541/_0x172228;_0x2764c9=(_0x52e457*_0x377d91+_0x3fa1a1)/_0x4211a0;_0x4ba297=erlangb(_0x2764c9,_0x4bfa12);_0xf7fab5=_0x2764c9/_0x4bfa12*(0x1-erlangb(_0x2764c9,_0x4bfa12));}return _0xafbe6f({'erlangCalls':_0x339541,'erlangCallToSecond':_0x172228/_0x339541,'erlangAbandonmentRate':_0x4ba297,'erlangBusyFactor':_0xf7fab5});});};module[_0x36cc('0x22e')]=Dialer;
\ No newline at end of file
index 54efc1e..5ad5553 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0x0e8a=['util','lodash','moment','milliseconds','diff','seconds','scheduledat','type','campaigntype','outbound','queue','countbusyretry','countcongestionretry','countnoanswerretry','countnosuchnumberretry','countdropretry','countabandonedretry','countmachineretry','countagentrejectretry','uniqueid','name','number','starttime','responsetime','droptime','ringtime','holdtime','talktime','membername','connectedlinename','reason','callback','callbackuniqueid','callbackat','ContactId','ListId','UserId','VoiceQueueId','CampaignId','originatecalleridnum','exports'];(function(_0x5ae40e,_0x593409){var _0x1b9153=function(_0x1ab105){while(--_0x1ab105){_0x5ae40e['push'](_0x5ae40e['shift']());}};_0x1b9153(++_0x593409);}(_0x0e8a,0x1c3));var _0xa0e8=function(_0x1d2f15,_0x1107c6){_0x1d2f15=_0x1d2f15-0x0;var _0x19efd2=_0x0e8a[_0x1d2f15];return _0x19efd2;};'use strict';var util=require(_0xa0e8('0x0'));var _=require(_0xa0e8('0x1'));var moment=require(_0xa0e8('0x2'));function getSeconds(_0x717b22,_0x596fd4){var _0x40dd85=moment(_0x717b22)[_0xa0e8('0x3')](0x0);var _0x1a7c64=moment(_0x596fd4)[_0xa0e8('0x3')](0x0);return _0x40dd85[_0xa0e8('0x4')](_0x1a7c64,_0xa0e8('0x5'));}function QueueCallerAbandon(_0x595e8d,_0xff9003){this['scheduledat']=_0x595e8d[_0xa0e8('0x6')];this[_0xa0e8('0x7')]=_0x595e8d['type'];this[_0xa0e8('0x8')]=_0x595e8d[_0xa0e8('0x7')]===_0xa0e8('0x9')?_0xa0e8('0xa'):_0x595e8d[_0xa0e8('0x7')];this['countbusyretry']=_0x595e8d[_0xa0e8('0xb')];this[_0xa0e8('0xc')]=_0x595e8d[_0xa0e8('0xc')];this['countnoanswerretry']=_0x595e8d[_0xa0e8('0xd')];this['countglobal']=_0x595e8d[_0xa0e8('0xb')]+_0x595e8d[_0xa0e8('0xc')]+_0x595e8d[_0xa0e8('0xd')]+_0x595e8d[_0xa0e8('0xe')]+_0x595e8d[_0xa0e8('0xf')]+_0x595e8d[_0xa0e8('0x10')]+_0x595e8d[_0xa0e8('0x11')]+_0x595e8d[_0xa0e8('0x12')];this[_0xa0e8('0xe')]=_0x595e8d['countnosuchnumberretry'];this[_0xa0e8('0xf')]=_0x595e8d[_0xa0e8('0xf')];this['countabandonedretry']=_0x595e8d[_0xa0e8('0x10')];this['countmachineretry']=_0x595e8d[_0xa0e8('0x11')];this['countagentrejectretry']=_0x595e8d[_0xa0e8('0x12')];this[_0xa0e8('0x13')]=_0xff9003[_0xa0e8('0x13')];this['calleridname']=_0x595e8d[_0xa0e8('0x14')];this['calleridnum']=_0x595e8d[_0xa0e8('0x15')];this[_0xa0e8('0x16')]=_0x595e8d[_0xa0e8('0x16')];this[_0xa0e8('0x17')]=_0x595e8d[_0xa0e8('0x17')];this[_0xa0e8('0x18')]=_0x595e8d[_0xa0e8('0x18')];this['endtime']=this[_0xa0e8('0x18')];this[_0xa0e8('0x19')]=getSeconds(_0x595e8d[_0xa0e8('0x17')],_0x595e8d[_0xa0e8('0x16')]);this[_0xa0e8('0x1a')]=getSeconds(this[_0xa0e8('0x18')],_0x595e8d['responsetime']);this[_0xa0e8('0x1b')]=0x0;this[_0xa0e8('0xa')]=_0xff9003[_0xa0e8('0xa')];this[_0xa0e8('0x1c')]=_0xff9003[_0xa0e8('0x1d')];this[_0xa0e8('0x1e')]=_0xff9003[_0xa0e8('0x1e')];this[_0xa0e8('0x1f')]=_0x595e8d[_0xa0e8('0x1f')];this[_0xa0e8('0x20')]=_0x595e8d[_0xa0e8('0x20')];this[_0xa0e8('0x21')]=_0x595e8d[_0xa0e8('0x21')];this['recallme']=_0x595e8d['recallme'];this[_0xa0e8('0x22')]=_0x595e8d[_0xa0e8('0x22')];this['ListId']=_0x595e8d[_0xa0e8('0x23')];this[_0xa0e8('0x24')]=_0x595e8d[_0xa0e8('0x24')];this[_0xa0e8('0x25')]=_0x595e8d[_0xa0e8('0x25')];this[_0xa0e8('0x26')]=_0x595e8d[_0xa0e8('0x26')];this[_0xa0e8('0x27')]=_0x595e8d[_0xa0e8('0x27')]||'';this['originatecalleridname']=_0x595e8d['originatecalleridname']||'';}module[_0xa0e8('0x28')]=QueueCallerAbandon;
\ No newline at end of file
index 0aa0344..ef19191 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(_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
+var _0xa9e0=['fax','localstationid','path','AttachmentId','exports','util','lodash','moment','channel','format','%s/%s/%s','tech','Trunk'];(function(_0x52cd65,_0x52010a){var _0x54ff0f=function(_0x306c82){while(--_0x306c82){_0x52cd65['push'](_0x52cd65['shift']());}};_0x54ff0f(++_0x52010a);}(_0xa9e0,0x123));var _0x0a9e=function(_0x3c4737,_0x2329ec){_0x3c4737=_0x3c4737-0x0;var _0x2bb926=_0xa9e0[_0x3c4737];return _0x2bb926;};'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 a707ae8..186d470 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0xd309=['transferrate','calleridnum','pagestransferred','message','create','parse','.pdf','application/pdf','then','catch','error','\x20notify\x20','stringify','\x20receiveFax\x20','merge','pick','response','reason','AttachmentId','logger','[Fax][Message][Error][Updated]','[Fax][Message][Error][NoUpdate1]','[Fax][Message][Error][NoUpdate2]','updateStatus','update','[Fax][Message][Updated]','[Fax][Message][NoUpdate1]','finally','[Fax][Message][NoUpdate2]','syncHangup','\x20hangup\x20sendFile\x20','\x20hangup\x20faxRiceive\x20','faxpages','SUCCESS','faxstatusstring','SENDING\x20FAILED','send','execOriginate','[Fax][execOriginate][success]','Fax\x20received','[Fax][execOriginate][failure]','Fax\x20failed','checkAfterSend','checkTrunk','FaxAccountId','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','execute','format','%s/%s.tif','XMF-PATH','Action','variablesAction','ext','isTrunkReachable','isNil','active','trunks','SIP/%s','unmonitored','Trunk\x20not\x20working\x20correctly','Empty\x20Fax','Empty\x20path','Is\x20Valid','util','lodash','uuid','path','./util/gs','../../../config/logger','fax','./channel','./util/util','./action','../rpc/faxAccount','../rpc/attachment','../rpc/faxMessage','channels','faxAccounts','newchannel','syncNewchannel','bind','syncVarSet','newstate','syncNewState','newexten','syncNewExten','faxstatus','syncFaxStatus','receivefax','syncReceiveFax','syncOriginateResponse','prototype','context','from-voip-provider','hasOwnProperty','exten','localstationid','uniqueid','channel','name','actions','info','\x20syncNewchannel\x20','variable','value','channelstate','channelstatedesc','operation','status','filename','\x20syncFaxStatus\x20','remotestationid','resolution'];(function(_0x389270,_0x466c5e){var _0x154add=function(_0x54069b){while(--_0x54069b){_0x389270['push'](_0x389270['shift']());}};_0x154add(++_0x466c5e);}(_0xd309,0x127));var _0x9d30=function(_0x49d7c5,_0x3a3f4c){_0x49d7c5=_0x49d7c5-0x0;var _0x32a9c7=_0xd309[_0x49d7c5];return _0x32a9c7;};'use strict';var util=require(_0x9d30('0x0'));var _=require(_0x9d30('0x1'));var BPromise=require('bluebird');var uuid=require(_0x9d30('0x2'));var moment=require('moment');var path=require(_0x9d30('0x3'));var tiff2pdf=require('tiff2pdf');var gs=require(_0x9d30('0x4'));var logger=require(_0x9d30('0x5'))(_0x9d30('0x6'));var ami=require('../ami');var rpcDb=require('./rpcDb');var Channel=require(_0x9d30('0x7'));var ut=require(_0x9d30('0x8'));var Action=require(_0x9d30('0x9'));var faxAccount=require(_0x9d30('0xa'));var attachment=require(_0x9d30('0xb'));var faxMessage=require(_0x9d30('0xc'));function Fax(_0x47d668){this[_0x9d30('0xd')]={};this[_0x9d30('0xe')]=_0x47d668[_0x9d30('0xe')];this['trunks']=_0x47d668['trunks'];this['actions']={};ami['on'](_0x9d30('0xf'),this[_0x9d30('0x10')][_0x9d30('0x11')](this));ami['on']('varset',this[_0x9d30('0x12')][_0x9d30('0x11')](this));ami['on'](_0x9d30('0x13'),this[_0x9d30('0x14')]['bind'](this));ami['on'](_0x9d30('0x15'),this[_0x9d30('0x16')][_0x9d30('0x11')](this));ami['on'](_0x9d30('0x17'),this[_0x9d30('0x18')][_0x9d30('0x11')](this));ami['on'](_0x9d30('0x19'),this[_0x9d30('0x1a')]['bind'](this));ami['on']('hangup',this['syncHangup'][_0x9d30('0x11')](this));ami['on']('originateresponse',this[_0x9d30('0x1b')][_0x9d30('0x11')](this));}Fax[_0x9d30('0x1c')][_0x9d30('0x10')]=function(_0x1ac2e2){if(_0x1ac2e2[_0x9d30('0x1d')]===_0x9d30('0x1e')){for(var _0x5bd8b3 in this[_0x9d30('0xe')]){if(this[_0x9d30('0xe')][_0x9d30('0x1f')](_0x5bd8b3)){if(_0x1ac2e2[_0x9d30('0x20')]===this[_0x9d30('0xe')][_0x5bd8b3][_0x9d30('0x21')]){this['channels'][_0x1ac2e2[_0x9d30('0x22')]]={};this[_0x9d30('0xd')][_0x1ac2e2[_0x9d30('0x22')]][_0x9d30('0x23')]=_0x1ac2e2[_0x9d30('0x23')];this[_0x9d30('0xd')][_0x1ac2e2['uniqueid']]['id']=this[_0x9d30('0xe')][_0x5bd8b3]['id'];this[_0x9d30('0xd')][_0x1ac2e2[_0x9d30('0x22')]][_0x9d30('0x24')]=this[_0x9d30('0xe')][_0x5bd8b3][_0x9d30('0x24')];logger['info'](_0x1ac2e2['uniqueid'],'\x20syncNewchannel\x20');}}}}if(this[_0x9d30('0x25')][_0x1ac2e2['uniqueid']]){this[_0x9d30('0xd')][_0x1ac2e2['uniqueid']]={};this[_0x9d30('0xd')][_0x1ac2e2['uniqueid']][_0x9d30('0x23')]=_0x1ac2e2['channel'];logger[_0x9d30('0x26')](_0x1ac2e2['uniqueid'],_0x9d30('0x27'));}};Fax['prototype'][_0x9d30('0x12')]=function(_0x29ad10){if(this[_0x9d30('0xd')][_0x29ad10[_0x9d30('0x22')]]){for(var _0x543a9d in _0x29ad10[_0x9d30('0x28')]){if(_0x29ad10[_0x9d30('0x28')][_0x9d30('0x1f')](_0x543a9d)){this['channels'][_0x29ad10['uniqueid']][_0x543a9d]=_0x29ad10[_0x9d30('0x29')];}}}};Fax['prototype'][_0x9d30('0x14')]=function(_0x13970c){if(this[_0x9d30('0xd')][_0x13970c[_0x9d30('0x22')]]){this[_0x9d30('0xd')][_0x13970c[_0x9d30('0x22')]]['channelstate']=_0x13970c[_0x9d30('0x2a')];this[_0x9d30('0xd')][_0x13970c[_0x9d30('0x22')]][_0x9d30('0x2b')]=_0x13970c[_0x9d30('0x2b')];}};Fax[_0x9d30('0x1c')][_0x9d30('0x16')]=function(_0x31658f){if(this[_0x9d30('0xd')][_0x31658f['uniqueid']]){for(var _0x10d2a3 in _0x31658f['variable']){if(_0x31658f[_0x9d30('0x28')][_0x9d30('0x1f')](_0x10d2a3)){this['channels'][_0x31658f[_0x9d30('0x22')]][_0x10d2a3]=_0x31658f[_0x9d30('0x29')];}}}};Fax[_0x9d30('0x1c')][_0x9d30('0x18')]=function(_0x3aa2b5){if(this[_0x9d30('0xd')][_0x3aa2b5['uniqueid']]){this['channels'][_0x3aa2b5['uniqueid']][_0x9d30('0x2c')]=_0x3aa2b5[_0x9d30('0x2c')];this[_0x9d30('0xd')][_0x3aa2b5[_0x9d30('0x22')]][_0x9d30('0x2d')]=_0x3aa2b5[_0x9d30('0x2d')];this[_0x9d30('0xd')][_0x3aa2b5[_0x9d30('0x22')]][_0x9d30('0x21')]=_0x3aa2b5[_0x9d30('0x21')];this[_0x9d30('0xd')][_0x3aa2b5['uniqueid']][_0x9d30('0x2e')]=_0x3aa2b5[_0x9d30('0x2e')];logger[_0x9d30('0x26')](_0x3aa2b5['uniqueid'],_0x9d30('0x2f'));}};Fax['prototype']['syncReceiveFax']=function(_0x3d621){var _0x32ab89=this;if(this[_0x9d30('0xd')][_0x3d621['uniqueid']]){var _0x4ff840=this[_0x9d30('0xd')][_0x3d621[_0x9d30('0x22')]]['id'];this[_0x9d30('0xd')][_0x3d621[_0x9d30('0x22')]][_0x9d30('0x30')]=_0x3d621[_0x9d30('0x30')];this[_0x9d30('0xd')][_0x3d621[_0x9d30('0x22')]]['pagestransferred']=_0x3d621['pagestransferred'];this['channels'][_0x3d621['uniqueid']][_0x9d30('0x21')]=_0x3d621[_0x9d30('0x21')];this['channels'][_0x3d621[_0x9d30('0x22')]][_0x9d30('0x31')]=_0x3d621[_0x9d30('0x31')];this[_0x9d30('0xd')][_0x3d621[_0x9d30('0x22')]][_0x9d30('0x32')]=_0x3d621[_0x9d30('0x32')];this[_0x9d30('0xd')][_0x3d621[_0x9d30('0x22')]]['filename']=_0x3d621['filename'];this[_0x9d30('0xd')][_0x3d621[_0x9d30('0x22')]][_0x9d30('0x33')]=_0x3d621[_0x9d30('0x33')];if(this['channels'][_0x3d621[_0x9d30('0x22')]][_0x9d30('0x34')]>0x0){tiff2pdf(_0x3d621[_0x9d30('0x2e')],'/var/opt/motion2/server/files/attachments/',function(_0x270f5a){logger['info'](_0x3d621[_0x9d30('0x22')],'\x20result\x20conversion\x20file\x20',_0x270f5a[_0x9d30('0x35')]);attachment[_0x9d30('0x36')]({'name':path[_0x9d30('0x37')](_0x3d621[_0x9d30('0x2e')])[_0x9d30('0x24')],'basename':path[_0x9d30('0x37')](_0x3d621[_0x9d30('0x2e')])['name']+_0x9d30('0x38'),'type':_0x9d30('0x39')})[_0x9d30('0x3a')](function(_0x2e4b92){faxAccount['notify'](_0x4ff840,{'from':_0x3d621[_0x9d30('0x33')],'mapKey':_0x9d30('0x6'),'body':path[_0x9d30('0x37')](_0x3d621[_0x9d30('0x2e')])['name']+'.pdf','AttachmentId':_0x2e4b92['id']})[_0x9d30('0x3b')](function(_0xd3735c){logger[_0x9d30('0x3c')](_0x3d621[_0x9d30('0x22')],_0x9d30('0x3d'),JSON[_0x9d30('0x3e')](_0xd3735c));});})[_0x9d30('0x3b')](function(_0x2ade8a){logger['error'](_0x3d621[_0x9d30('0x22')],_0x9d30('0x3f'),JSON['stringify'](_0x2ade8a));});});}logger[_0x9d30('0x26')](_0x3d621[_0x9d30('0x22')],_0x9d30('0x3f'));}};Fax[_0x9d30('0x1c')]['syncOriginateResponse']=function(_0x165427){if(this[_0x9d30('0x25')][_0x165427['uniqueid']]){_[_0x9d30('0x40')](this['channels'][_0x165427[_0x9d30('0x22')]],_[_0x9d30('0x41')](_0x165427,[_0x9d30('0x42'),_0x9d30('0x43')]));}};function updateStatus(_0x5177c4){if(_0x5177c4[_0x9d30('0x44')]){faxMessage['update'](_0x5177c4[_0x9d30('0x44')],{'failMessage':'SENDING\x20FAILED\x20'})[_0x9d30('0x3a')](function(_0x1069f3){ut[_0x9d30('0x45')](_0x9d30('0x46'),_0x1069f3);})[_0x9d30('0x3b')](function(_0x4d3d38){ut[_0x9d30('0x45')](_0x9d30('0x47'),_0x4d3d38);});}else{ut[_0x9d30('0x45')](_0x9d30('0x48'));}}Fax['prototype'][_0x9d30('0x49')]=function(_0x4afb98,_0x1057fc,_0x410703){var _0x4deda7=this;var _0x4d978b={};if(_0x1057fc){_0x4d978b={'read':_0x1057fc};}else{_0x4d978b={'failMessage':_0x410703};}if(this[_0x9d30('0x25')][_0x4afb98][_0x9d30('0x44')]){faxMessage[_0x9d30('0x4a')](this[_0x9d30('0x25')][_0x4afb98][_0x9d30('0x44')],_0x4d978b)[_0x9d30('0x3a')](function(_0x5a421a){ut[_0x9d30('0x45')](_0x9d30('0x4b'),_0x5a421a);})[_0x9d30('0x3b')](function(_0x50f9f8){ut[_0x9d30('0x45')](_0x9d30('0x4c'),_0x50f9f8);})[_0x9d30('0x4d')](function(){delete _0x4deda7['channels'][_0x4afb98];delete _0x4deda7[_0x9d30('0x25')][_0x4afb98];});}else{ut[_0x9d30('0x45')](_0x9d30('0x4e'));delete this['channels'][_0x4afb98];delete this['actions'][_0x4afb98];}};Fax['prototype'][_0x9d30('0x4f')]=function(_0x311120){var _0x6b09b8=this;if(this[_0x9d30('0xd')][_0x311120[_0x9d30('0x22')]]){if(this[_0x9d30('0x25')][_0x311120['uniqueid']]){this[_0x9d30('0xd')][_0x311120[_0x9d30('0x22')]]['id']=this[_0x9d30('0x25')][_0x311120[_0x9d30('0x22')]]['id'];this[_0x9d30('0xd')][_0x311120[_0x9d30('0x22')]][_0x9d30('0x24')]=this[_0x9d30('0x25')][_0x311120[_0x9d30('0x22')]]['name'];}logger[_0x9d30('0x26')](_0x311120[_0x9d30('0x22')],this[_0x9d30('0x25')][_0x311120[_0x9d30('0x22')]]?_0x9d30('0x50'):_0x9d30('0x51'),JSON[_0x9d30('0x3e')](this[_0x9d30('0xd')][_0x311120[_0x9d30('0x22')]]));if(this[_0x9d30('0x25')][_0x311120[_0x9d30('0x22')]]){if(this[_0x9d30('0xd')][_0x311120[_0x9d30('0x22')]][_0x9d30('0x52')]>0x0&&this['channels'][_0x311120[_0x9d30('0x22')]]['faxstatus']===_0x9d30('0x53')){this[_0x9d30('0x49')](_0x311120[_0x9d30('0x22')],!![]);}else{this[_0x9d30('0x49')](_0x311120[_0x9d30('0x22')],![],this[_0x9d30('0xd')][_0x311120[_0x9d30('0x22')]][_0x9d30('0x54')]?'SENDING\x20FAILED:\x20'+this[_0x9d30('0xd')][_0x311120[_0x9d30('0x22')]][_0x9d30('0x54')]:_0x9d30('0x55'));}}}};Fax[_0x9d30('0x1c')][_0x9d30('0x56')]=function(_0x54b378){var _0x3f661b=this;return new BPromise(function(_0x2a0195,_0x1ff056){_0x3f661b[_0x9d30('0x57')](_0x54b378,_0x3f661b['faxAccounts'][_0x54b378['FaxAccountId']])[_0x9d30('0x3a')](function(_0x3bd888){ut['logger'](_0x9d30('0x58'),_0x3bd888);_0x2a0195(ut[_0x9d30('0x35')](_0x9d30('0x59')));})[_0x9d30('0x3b')](function(_0x239037){ut[_0x9d30('0x45')](_0x9d30('0x5a'),_0x239037);updateStatus(_0x54b378);_0x1ff056(ut[_0x9d30('0x35')](_0x9d30('0x5b')));});});};Fax[_0x9d30('0x1c')][_0x9d30('0x5c')]=function(_0x119345){var _0x10b21c=this;return new BPromise(function(_0x2dd631,_0x23236e){var _0x50c7ab=_0x10b21c[_0x9d30('0x5d')](_0x10b21c['faxAccounts'][_0x119345[_0x9d30('0x5e')]][_0x9d30('0x5f')],_0x119345);if(_0x50c7ab['isValid']){_0x2dd631(ut[_0x9d30('0x35')](_0x9d30('0x60')));}else{_0x23236e(ut['message'](_0x50c7ab[_0x9d30('0x35')]));}});};function originate(_0x3b39b3,_0x14322d,_0x48f511){return new BPromise(function(_0x1999cd,_0x27d958){if(_0x48f511){var _0x387651=util['format'](_0x9d30('0x61'),path[_0x9d30('0x37')](_0x3b39b3[_0x9d30('0x3')])[_0x9d30('0x24')],_0x3b39b3[_0x9d30('0x3')]);gs[_0x9d30('0x62')](_0x387651)[_0x9d30('0x3a')](function(){_0x3b39b3['path']=util[_0x9d30('0x63')](_0x9d30('0x64'),path[_0x9d30('0x37')](_0x3b39b3['path'])['dir'],path['parse'](_0x3b39b3[_0x9d30('0x3')])[_0x9d30('0x24')]);_0x14322d[_0x9d30('0x65')]=_0x3b39b3[_0x9d30('0x3')];ut[_0x9d30('0x45')]('Convert\x20pdf\x20to\x20tif','');ami['Action'](ut['variablesAction'](_0x3b39b3,_0x14322d))[_0x9d30('0x3a')](function(_0x4d5243){_0x1999cd(_0x4d5243);})[_0x9d30('0x3b')](function(_0x29410c){_0x27d958(_0x29410c);});})[_0x9d30('0x3b')](function(_0x44ee68){_0x27d958(_0x44ee68);});}else{ami[_0x9d30('0x66')](ut[_0x9d30('0x67')](_0x3b39b3,_0x14322d))[_0x9d30('0x3a')](function(_0x192757){_0x1999cd(_0x192757);})[_0x9d30('0x3b')](function(_0x1ef6a7){_0x27d958(_0x1ef6a7);});}});}Fax[_0x9d30('0x1c')]['execOriginate']=function(_0x91cc7a,_0x2b2098){var _0x4d828e=this;return new BPromise(function(_0xd0ab42,_0x440f7){var _0x928213=uuid['v4']();var _0x2cb0bd=ut['addVariables'](_0x91cc7a,_0x2b2098);_0x4d828e[_0x9d30('0x25')][_0x928213]=new Action(_0x928213,_0x2b2098,_0x91cc7a);var _0x65c5b6=_0x4d828e[_0x9d30('0x25')][_0x928213];if(path[_0x9d30('0x37')](_0x91cc7a[_0x9d30('0x3')])[_0x9d30('0x68')]===_0x9d30('0x38')){originate(_0x65c5b6,_0x2cb0bd,!![])[_0x9d30('0x3a')](function(_0x1ae4e1){_0xd0ab42(_0x1ae4e1);})[_0x9d30('0x3b')](function(_0x30a926){_0x440f7(_0x30a926);});}else{originate(_0x65c5b6,_0x2cb0bd,![])['then'](function(_0x48cac0){_0xd0ab42(_0x48cac0);})[_0x9d30('0x3b')](function(_0x32a72d){_0x440f7(_0x32a72d);});}});};Fax[_0x9d30('0x1c')][_0x9d30('0x69')]=function(_0x2e0e01){return!_[_0x9d30('0x6a')](_0x2e0e01)&&!_[_0x9d30('0x6a')](_0x2e0e01[_0x9d30('0x24')])&&!_[_0x9d30('0x6a')](_0x2e0e01[_0x9d30('0x6b')])&&_0x2e0e01[_0x9d30('0x6b')]&&!_[_0x9d30('0x6a')](this[_0x9d30('0x6c')][util[_0x9d30('0x63')](_0x9d30('0x6d'),_0x2e0e01[_0x9d30('0x24')])])&&!_[_0x9d30('0x6a')](this[_0x9d30('0x6c')][util[_0x9d30('0x63')]('SIP/%s',_0x2e0e01[_0x9d30('0x24')])][_0x9d30('0x2d')])&&(this[_0x9d30('0x6c')][util[_0x9d30('0x63')](_0x9d30('0x6d'),_0x2e0e01[_0x9d30('0x24')])][_0x9d30('0x2d')]==='reachable'||this[_0x9d30('0x6c')][util['format'](_0x9d30('0x6d'),_0x2e0e01['name'])][_0x9d30('0x2d')]===_0x9d30('0x6e'));};Fax[_0x9d30('0x1c')]['checkTrunk']=function(_0x51375b,_0x412414){if(!this[_0x9d30('0x69')](_0x51375b)){ut[_0x9d30('0x45')]('[Fax][checkTrunk][Trunk\x20not\x20working\x20correctly]',_[_0x9d30('0x6a')](_0x51375b)?'':_0x51375b[_0x9d30('0x24')]+'\x20Trunk\x20is\x20not\x20active');return{'isValid':![],'message':_0x9d30('0x6f')};}if(_[_0x9d30('0x6a')](_0x412414[_0x9d30('0x6')])){ut['logger']('[Fax][checkTrunk][Empty\x20Fax]',JSON[_0x9d30('0x3e')](_0x412414));return{'isValid':![],'message':_0x9d30('0x70')};}if(_[_0x9d30('0x6a')](_0x412414['path'])){ut[_0x9d30('0x45')]('[Fax][checkTrunk][Empty\x20path]',JSON[_0x9d30('0x3e')](_0x412414));return{'isValid':![],'message':_0x9d30('0x71')};}return{'isValid':!![],'message':_0x9d30('0x72')};};module['exports']=Fax;
\ No newline at end of file
index 3054a46..fd2228b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0x7cfb=['catch','[Notify]\x20','util','bluebird','../../../config/logger','preview','lodash','../rpc/faxAccount','error','resolve','notify'];(function(_0x38613d,_0x3256d8){var _0x5c3d35=function(_0x19112e){while(--_0x19112e){_0x38613d['push'](_0x38613d['shift']());}};_0x5c3d35(++_0x3256d8);}(_0x7cfb,0x1f1));var _0xb7cf=function(_0x40c5f1,_0x2faa82){_0x40c5f1=_0x40c5f1-0x0;var _0x152f2=_0x7cfb[_0x40c5f1];return _0x152f2;};'use strict';var util=require(_0xb7cf('0x0'));var BPromise=require(_0xb7cf('0x1'));var logger=require(_0xb7cf('0x2'))(_0xb7cf('0x3'));var _=require(_0xb7cf('0x4'));var faxAccount=require(_0xb7cf('0x5'));function loggerCatch(_0x52142d){return function(_0x2daddc){logger[_0xb7cf('0x6')](_0x52142d,util['inspect'](_0x2daddc,{'showHidden':![],'depth':null}));};}exports['notify']=function(_0x51ea47,_0x46f38e){return BPromise[_0xb7cf('0x7')]()['then'](faxAccount[_0xb7cf('0x8')](_0x51ea47,_0x46f38e))[_0xb7cf('0x9')](loggerCatch(_0xb7cf('0xa')));};
\ No newline at end of file
index 3e2f06d..0e61e67 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0x258c=['util','fax','child_process','execute','info','Exec\x20gs','inspect'];(function(_0x4d613c,_0x55f220){var _0x301fe3=function(_0x5eec0b){while(--_0x5eec0b){_0x4d613c['push'](_0x4d613c['shift']());}};_0x301fe3(++_0x55f220);}(_0x258c,0x196));var _0xc258=function(_0x12fc8d,_0x19ee33){_0x12fc8d=_0x12fc8d-0x0;var _0x3f9d04=_0x258c[_0x12fc8d];return _0x3f9d04;};'use strict';var util=require(_0xc258('0x0'));var logger=require('../../../../config/logger')(_0xc258('0x1'));var BPromise=require('bluebird');var exec=require(_0xc258('0x2'))['exec'];exports[_0xc258('0x3')]=function(_0x463aeb){return new BPromise(function(_0x14ea0b,_0x292912){exec(_0x463aeb,function(_0x2fc2f1,_0x2b9602,_0x595458){logger[_0xc258('0x4')](_0xc258('0x5'),_0x2b9602);if(_0x2fc2f1){logger[_0xc258('0x4')](_0xc258('0x5'),'\x20Error\x20:',util[_0xc258('0x6')](_0x2fc2f1,{'showHidden':![],'depth':null}),_0x2b9602,_0x595458);_0x292912(_0x2fc2f1);}_0x14ea0b(_0x2b9602);});});};
\ No newline at end of file
index 00a4c73..ee7e2c6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0xb4ad=['format','\x22%s\x22','modem','gateway','faxdetect','t38timeout','path','variablesAction','originate','channel','xcally-motion-fax','\x22%s\x22\x20<%s>','uniqueid','lodash','moment','../../../../config/logger','fax','logger','info','inspect','ecm','headerinfo'];(function(_0x37614e,_0xa860d7){var _0x1acded=function(_0x34d70c){while(--_0x34d70c){_0x37614e['push'](_0x37614e['shift']());}};_0x1acded(++_0xa860d7);}(_0xb4ad,0x1af));var _0xdb4a=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0xb4ad[_0x3dd15e];return _0x231fd0;};'use strict';var util=require('util');var _=require(_0xdb4a('0x0'));var moment=require(_0xdb4a('0x1'));var logger=require(_0xdb4a('0x2'))(_0xdb4a('0x3'));exports['message']=function(_0x5a6d6){return{'message':_0x5a6d6};};exports[_0xdb4a('0x4')]=function(_0x5aa8ba,_0x1cb4ad){logger[_0xdb4a('0x5')](_0x5aa8ba,util[_0xdb4a('0x6')](_0x1cb4ad,{'showHidden':![],'depth':null}));};exports['addVariables']=function(_0x5ecee6,_0x409a08){var _0x24a6c3={'XMF-ECM':_0x409a08[_0xdb4a('0x7')],'XMF-HEADERINFO':_0x409a08[_0xdb4a('0x8')],'XMF-MINRATE':_0x409a08['minrate'],'XMF-MAXRATE':_0x409a08['maxrate'],'XMF-MODEM':util[_0xdb4a('0x9')](_0xdb4a('0xa'),_0x409a08[_0xdb4a('0xb')]),'XMF-GATEWAY':_0x409a08[_0xdb4a('0xc')],'XMF-FAXDETECT':_0x409a08[_0xdb4a('0xd')],'XMF-T38TIMEOUT':_0x409a08[_0xdb4a('0xe')],'XMF-LOCALSTATIONID':_0x409a08['localstationid'],'XMF-PATH':_0x5ecee6[_0xdb4a('0xf')]};return _0x24a6c3;};exports[_0xdb4a('0x10')]=function(_0xe9751d,_0x4b5113){return{'actionid':_0xe9751d['uniqueid'],'action':_0xdb4a('0x11'),'channel':_0xe9751d[_0xdb4a('0x12')],'Exten':_0xdb4a('0x13'),'Context':'from-sip','Priority':'1','callerid':util['format'](_0xdb4a('0x14'),_0xe9751d[_0xdb4a('0x8')]?_0xe9751d['headerinfo']:'',_0xe9751d['localstationid']),'variable':_0x4b5113,'timeout':0x1e*0x3e8,'async':!![],'channelid':_0xe9751d[_0xdb4a('0x15')]};};
\ No newline at end of file
index c87fb83..159f7cc 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0xa28f=['getVoiceQueueHopperHistory','initVoiceQueueHopperHistory','getCampaignHopperHistory','initCampaignHopperHistory','getVoiceCallReports','initVoiceCallReports','catch','error','inspect','sync','[index.js][main]','bluebird','util','moment','./server','./realtime','./report','./acw','./trigger','./preview','./fax','./rpc/user','./rpc/voiceQueue','./rpc/voiceQueueReport','./rpc/trunk','./rpc/template','./rpc/cmHopperHistory','./rpc/campaign','./rpc/voiceExtension','./rpc/faxAccount','./rpc/integrations/zendesk','./rpc/integrations/freshdesk','./rpc/integrations/zoho','./rpc/integrations/vtiger','./rpc/integrations/freshsales','./rpc/integrations/servicenow','./rpc/integrations/dynamics365','../../config/logger','ami','get','hour','resolve','getAgents','then','initAgents','initTelephones','getTrunks','initTrunks','initVoiceQueues','getTriggers','getTemplates','initTemplates','getZendeskAccounts','initZendeskAccounts','getSalesforceAccounts','initSalesforceAccounts','getSugarcrmAccounts','getFreshdeskAccounts','getDeskAccounts','getZohoAccounts','initZohoAccounts','getVtigerAccounts','initVtigerAccounts','initFreshsalesAccounts','getServicenowAccounts','initCampaigns','initVoiceExtensions','getFaxAccounts','initFaxAccounts','getVoiceQueueReports'];(function(_0x28f729,_0x5dbd61){var _0x264ce0=function(_0x4a7bb3){while(--_0x4a7bb3){_0x28f729['push'](_0x28f729['shift']());}};_0x264ce0(++_0x5dbd61);}(_0xa28f,0x1af));var _0xfa28=function(_0x3bf7c4,_0x2176ae){_0x3bf7c4=_0x3bf7c4-0x0;var _0x38587b=_0xa28f[_0x3bf7c4];return _0x38587b;};'use strict';var BPromise=require(_0xfa28('0x0'));var util=require(_0xfa28('0x1'));var moment=require(_0xfa28('0x2'));var server=require(_0xfa28('0x3'));var Realtime=require(_0xfa28('0x4'));var Report=require(_0xfa28('0x5'));var Acw=require(_0xfa28('0x6'));var Trigger=require(_0xfa28('0x7'));var Dialer=require('./dialer');var Preview=require(_0xfa28('0x8'));var Fax=require(_0xfa28('0x9'));var user=require(_0xfa28('0xa'));var voiceQueue=require(_0xfa28('0xb'));var voiceQueueReport=require(_0xfa28('0xc'));var voiceCallReport=require('./rpc/voiceCallReport');var trunk=require(_0xfa28('0xd'));var trigger=require('./rpc/trigger');var template=require(_0xfa28('0xe'));var cmHopperHistory=require(_0xfa28('0xf'));var campaign=require(_0xfa28('0x10'));var voiceExtension=require(_0xfa28('0x11'));var faxAccount=require(_0xfa28('0x12'));var zendesk=require(_0xfa28('0x13'));var salesforce=require('./rpc/integrations/salesforce');var sugarcrm=require('./rpc/integrations/sugarcrm');var freshdesk=require(_0xfa28('0x14'));var desk=require('./rpc/integrations/desk');var zoho=require(_0xfa28('0x15'));var vtiger=require(_0xfa28('0x16'));var freshsales=require(_0xfa28('0x17'));var servicenow=require(_0xfa28('0x18'));var dynamics365=require(_0xfa28('0x19'));var realtime=new Realtime();var report=new Report(realtime);var acw=new Acw(realtime);var channelTrigger=new Trigger(realtime);var preview=new Preview(realtime);var dialer=new Dialer(realtime,preview);var fax=new Fax(realtime);var logger=require(_0xfa28('0x1a'))(_0xfa28('0x1b'));var isTrue=!![];var initP=!![];function ifMidnight(){if(moment()[_0xfa28('0x1c')](_0xfa28('0x1d'))===0x0&&initP){initP=![];isTrue=!![];initParams();}if(moment()[_0xfa28('0x1c')]('hour')===0x1&&isTrue){isTrue=![];initP=!![];}}function initRealtime(){ifMidnight();return BPromise[_0xfa28('0x1e')]()['then'](user[_0xfa28('0x1f')]())[_0xfa28('0x20')](realtime[_0xfa28('0x21')]())[_0xfa28('0x20')](user['getTelephones']())[_0xfa28('0x20')](realtime[_0xfa28('0x22')]())[_0xfa28('0x20')](trunk[_0xfa28('0x23')]())[_0xfa28('0x20')](realtime[_0xfa28('0x24')]())[_0xfa28('0x20')](voiceQueue['getVoiceQueues']())[_0xfa28('0x20')](realtime[_0xfa28('0x25')]())[_0xfa28('0x20')](trigger[_0xfa28('0x26')]())[_0xfa28('0x20')](realtime['initTriggers']())[_0xfa28('0x20')](template[_0xfa28('0x27')]())[_0xfa28('0x20')](realtime[_0xfa28('0x28')]())[_0xfa28('0x20')](zendesk[_0xfa28('0x29')]())[_0xfa28('0x20')](realtime[_0xfa28('0x2a')]())['then'](salesforce[_0xfa28('0x2b')]())[_0xfa28('0x20')](realtime[_0xfa28('0x2c')]())['then'](sugarcrm[_0xfa28('0x2d')]())[_0xfa28('0x20')](realtime['initSugarcrmAccounts']())[_0xfa28('0x20')](freshdesk[_0xfa28('0x2e')]())[_0xfa28('0x20')](realtime['initFreshdeskAccounts']())[_0xfa28('0x20')](desk[_0xfa28('0x2f')]())[_0xfa28('0x20')](realtime['initDeskAccounts']())['then'](zoho[_0xfa28('0x30')]())[_0xfa28('0x20')](realtime[_0xfa28('0x31')]())[_0xfa28('0x20')](vtiger[_0xfa28('0x32')]())[_0xfa28('0x20')](realtime[_0xfa28('0x33')]())[_0xfa28('0x20')](freshsales['getFreshsalesAccounts']())[_0xfa28('0x20')](realtime[_0xfa28('0x34')]())[_0xfa28('0x20')](servicenow[_0xfa28('0x35')]())[_0xfa28('0x20')](realtime['initServicenowAccounts']())[_0xfa28('0x20')](dynamics365['getDynamics365Accounts']())[_0xfa28('0x20')](realtime['initDynamics365Accounts']())[_0xfa28('0x20')](campaign['getCampaigns']())[_0xfa28('0x20')](realtime[_0xfa28('0x36')]())[_0xfa28('0x20')](voiceExtension['getVoiceExtensions']())['then'](realtime[_0xfa28('0x37')]())[_0xfa28('0x20')](faxAccount[_0xfa28('0x38')]())[_0xfa28('0x20')](realtime[_0xfa28('0x39')]())[_0xfa28('0x20')](function(){return realtime;});}function initParams(){return BPromise[_0xfa28('0x1e')]()[_0xfa28('0x20')](voiceQueueReport[_0xfa28('0x3a')]())['then'](realtime['initVoiceQueueReports']())[_0xfa28('0x20')](cmHopperHistory[_0xfa28('0x3b')]())[_0xfa28('0x20')](realtime[_0xfa28('0x3c')]())[_0xfa28('0x20')](cmHopperHistory[_0xfa28('0x3d')]())[_0xfa28('0x20')](realtime[_0xfa28('0x3e')]())['then'](voiceCallReport[_0xfa28('0x3f')]())[_0xfa28('0x20')](realtime[_0xfa28('0x40')]())[_0xfa28('0x41')](function(_0x5eccd2){logger[_0xfa28('0x42')]('[index.js][initParams]',util[_0xfa28('0x43')](_0x5eccd2,{'showHidden':![],'depth':null}));});}function main(){return server['listen'](realtime,preview,fax)[_0xfa28('0x20')](function(_0x372d44){return initRealtime();})['then'](function(){return initParams();})['then'](function(){report[_0xfa28('0x44')]();setInterval(initRealtime,0x1388);})[_0xfa28('0x41')](function(_0x2eb139){logger['error'](_0xfa28('0x45'),util[_0xfa28('0x43')](_0x2eb139,{'showHidden':![],'depth':null}));});}main();
\ No newline at end of file
index f36c142..3a256f6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9c44=['phone','mobile','online','voiceStatus','voiceStatusTime','voiceStatusCallerIdNumber','onhold','local','prototype','updateStatusRealtime','toLowerCase','not_inuse','idle','inuse','talking','statePause','stateTime','address','voiceStatusQueue','stringify','format','user:%s','emit','user:presence','exports','moment','md5','ioredis','../../../config/environment','redis','defaults','socket.io-emitter','name','email','accountcode','fullname','state','status','unknown'];(function(_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
+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(_0x34dd3c,_0x12616c){var _0x19beab=function(_0x327c96){while(--_0x327c96){_0x34dd3c['push'](_0x34dd3c['shift']());}};_0x19beab(++_0x12616c);}(_0x9c44,0x178));var _0x49c4=function(_0x24061a,_0x1c9f4d){_0x24061a=_0x24061a-0x0;var _0x82054e=_0x9c44[_0x24061a];return _0x82054e;};'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 4cf5293..9767a85 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0x3bf9=['dialOrderByScheduledAt','DESC','dialPrefix','dialCutDigit','TrunkBackup','Trunk','Interval','SquareProject','dialAMDActive','dialAMDGreeting','dialAMDAfterGreetingSilence','dialAMDTotalAnalysisTime','dialAMDMinWordLength','dialAMDBetweenWordsSilence','dialAMDMaximumNumberOfWords','dialAMDSilenceThreshold','dialAMDMaximumWordLength','exports','name','type','originated','ivrAnswerCallsDay','ivrTotalCallsDays','message','sendMessageOneNotActive','active','limitCalls','dialTimezone','dialGlobalInterval','dialOriginateCallerIdName','dialOriginateCallerIdNumber','dialOriginateTimeout','dialCongestionMaxRetry','dialCongestionRetryFrequency','dialBusyMaxRetry','dialBusyRetryFrequency','dialNoAnswerMaxRetry','dialNoAnswerRetryFrequency','dialGlobalMaxRetry','dialNoSuchNumberMaxRetry','dialDropMaxRetry','dialDropRetryFrequency','dialAbandonedMaxRetry','dialAbandonedRetryFrequency','dialMachineMaxRetry','dialMachineRetryFrequency','dialAgentRejectMaxRetry','dialAgentRejectRetryFrequency'];(function(_0x1691ae,_0x190f00){var _0x2859a7=function(_0x274596){while(--_0x274596){_0x1691ae['push'](_0x1691ae['shift']());}};_0x2859a7(++_0x190f00);}(_0x3bf9,0xa2));var _0x93bf=function(_0x5c2e3e,_0x26ecd3){_0x5c2e3e=_0x5c2e3e-0x0;var _0x53f64a=_0x3bf9[_0x5c2e3e];return _0x53f64a;};'use strict';function Campaign(_0x4b6a29){this['id']=_0x4b6a29['id']||0x0;this[_0x93bf('0x0')]=_0x4b6a29['name']||'';this['type']=_0x4b6a29[_0x93bf('0x1')]||'campaign';this[_0x93bf('0x2')]=0x0;this['temp']=0x0;this[_0x93bf('0x3')]=0x0;this[_0x93bf('0x4')]=0x0;this[_0x93bf('0x5')]='';this[_0x93bf('0x6')]=!![];this[_0x93bf('0x7')]=_0x4b6a29[_0x93bf('0x7')];this['limitCalls']=_0x4b6a29[_0x93bf('0x8')];this[_0x93bf('0x9')]=_0x4b6a29[_0x93bf('0x9')]||null;this[_0x93bf('0xa')]=_0x4b6a29[_0x93bf('0xa')]?_0x4b6a29[_0x93bf('0xa')]:null;this['dialOriginateCallerIdName']=_0x4b6a29[_0x93bf('0xb')];this[_0x93bf('0xc')]=_0x4b6a29[_0x93bf('0xc')];this[_0x93bf('0xd')]=_0x4b6a29[_0x93bf('0xd')]||0x1e;this[_0x93bf('0xe')]=_0x4b6a29['dialCongestionMaxRetry'];this[_0x93bf('0xf')]=_0x4b6a29['dialCongestionRetryFrequency'];this[_0x93bf('0x10')]=_0x4b6a29[_0x93bf('0x10')];this[_0x93bf('0x11')]=_0x4b6a29[_0x93bf('0x11')];this[_0x93bf('0x12')]=_0x4b6a29['dialNoAnswerMaxRetry'];this[_0x93bf('0x13')]=_0x4b6a29['dialNoAnswerRetryFrequency'];this[_0x93bf('0x14')]=_0x4b6a29['dialGlobalMaxRetry'];this[_0x93bf('0x15')]=_0x4b6a29[_0x93bf('0x15')]||0x3;this['dialNoSuchNumberRetryFrequency']=_0x4b6a29['dialNoSuchNumberRetryFrequency']||0x96;this['dialDropMaxRetry']=_0x4b6a29[_0x93bf('0x16')]||0x3;this[_0x93bf('0x17')]=_0x4b6a29[_0x93bf('0x17')]||0x96;this[_0x93bf('0x18')]=_0x4b6a29[_0x93bf('0x18')]||0x3;this[_0x93bf('0x19')]=_0x4b6a29[_0x93bf('0x19')]||0x96;this[_0x93bf('0x1a')]=_0x4b6a29[_0x93bf('0x1a')]||0x3;this[_0x93bf('0x1b')]=_0x4b6a29['dialMachineRetryFrequency']||0x96;this[_0x93bf('0x1c')]=_0x4b6a29[_0x93bf('0x1c')]||0x3;this['dialAgentRejectRetryFrequency']=_0x4b6a29[_0x93bf('0x1d')]||0x96;this[_0x93bf('0x1e')]=_0x4b6a29[_0x93bf('0x1e')]||_0x93bf('0x1f');this['dialPrefix']=_0x4b6a29[_0x93bf('0x20')]||undefined;this['dialRandomLastDigitCallerIdNumber']=_0x4b6a29['dialRandomLastDigitCallerIdNumber']||undefined;this['dialCutDigit']=_0x4b6a29[_0x93bf('0x21')]||undefined;this['TrunkBackup']=_0x4b6a29[_0x93bf('0x22')]?_0x4b6a29[_0x93bf('0x22')]:undefined;this[_0x93bf('0x23')]=_0x4b6a29[_0x93bf('0x23')]?_0x4b6a29[_0x93bf('0x23')]:undefined;this[_0x93bf('0x24')]=_0x4b6a29[_0x93bf('0x24')]?_0x4b6a29['Interval']:undefined;this['SquareProject']=_0x4b6a29[_0x93bf('0x25')]?_0x4b6a29[_0x93bf('0x25')]:undefined;this['dialQueueProject']=_0x4b6a29[_0x93bf('0x25')]?_0x4b6a29[_0x93bf('0x25')][_0x93bf('0x0')]:undefined;this[_0x93bf('0x26')]=_0x4b6a29[_0x93bf('0x26')]||![];this['dialAMDInitialSilence']=_0x4b6a29['dialAMDInitialSilence'];this[_0x93bf('0x27')]=_0x4b6a29['dialAMDGreeting'];this[_0x93bf('0x28')]=_0x4b6a29[_0x93bf('0x28')];this[_0x93bf('0x29')]=_0x4b6a29['dialAMDTotalAnalysisTime'];this[_0x93bf('0x2a')]=_0x4b6a29[_0x93bf('0x2a')];this[_0x93bf('0x2b')]=_0x4b6a29[_0x93bf('0x2b')];this[_0x93bf('0x2c')]=_0x4b6a29['dialAMDMaximumNumberOfWords'];this[_0x93bf('0x2d')]=_0x4b6a29[_0x93bf('0x2d')];this['dialAMDMaximumWordLength']=_0x4b6a29[_0x93bf('0x2e')];}module[_0x93bf('0x2f')]=Campaign;
\ No newline at end of file
index 02aa2a0..f1be1f0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0x5523=['calleridnum','calleridname','connectedlinenum','connectedlinename','accountcode','context','uniqueid','linkedid','exten','answered','abandoned','lastdata','duration','billableseconds','tag','disposition','monitor','monitorFilename','queue','monitors','transfercalleridnum','transferconnectedlinenum','transferType','mohtime','exports','destinationchannel'];(function(_0x18a3c9,_0x14b0d4){var _0x185aae=function(_0x4e1c52){while(--_0x4e1c52){_0x18a3c9['push'](_0x18a3c9['shift']());}};_0x185aae(++_0x14b0d4);}(_0x5523,0x137));var _0x3552=function(_0xafe903,_0x52addf){_0xafe903=_0xafe903-0x0;var _0x3fa987=_0x5523[_0xafe903];return _0x3fa987;};'use strict';function Channel(){this['starttime']=null;this['channel']='';this[_0x3552('0x0')]='';this[_0x3552('0x1')]=0x0;this[_0x3552('0x2')]='';this[_0x3552('0x3')]=undefined;this[_0x3552('0x4')]=undefined;this[_0x3552('0x5')]=0x0;this[_0x3552('0x6')]='';this[_0x3552('0x7')]=0x0;this[_0x3552('0x8')]=0x0;this[_0x3552('0x9')]=0x0;this[_0x3552('0xa')]=![];this['answertime']=null;this['endtime']=null;this['unmanaged']=![];this[_0x3552('0xb')]=![];this['lastapplication']='';this[_0x3552('0xc')]='';this[_0x3552('0xd')]=0x0;this[_0x3552('0xe')]=0x0;this['holdtime']=0x0;this['type']=null;this[_0x3552('0xf')]=null;this[_0x3552('0x10')]=null;this[_0x3552('0x11')]=![];this[_0x3552('0x12')]=null;this[_0x3552('0x13')]=null;this[_0x3552('0x14')]=[];this[_0x3552('0x15')]=undefined;this[_0x3552('0x16')]=undefined;this[_0x3552('0x17')]=undefined;this[_0x3552('0x18')]=0x0;}module[_0x3552('0x19')]=Channel;
\ No newline at end of file
index 5a6b4f7..7ab21ed 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0x8228=['authType','password','consumerKey','consumerSecret','token','tokenSecret','type','serverUrl','Configurations','exports','name','username','remoteUri'];(function(_0x4584fe,_0x545b00){var _0xf39cf5=function(_0xef9a8c){while(--_0xef9a8c){_0x4584fe['push'](_0x4584fe['shift']());}};_0xf39cf5(++_0x545b00);}(_0x8228,0x11b));var _0x8822=function(_0x25484b,_0x151cee){_0x25484b=_0x25484b-0x0;var _0x5e92cc=_0x8228[_0x25484b];return _0x5e92cc;};'use strict';function DeskAccount(_0xc25b81){this['id']=_0xc25b81['id']||0x0;this[_0x8822('0x0')]=_0xc25b81['name']||'';this[_0x8822('0x1')]=_0xc25b81['username']||'';this[_0x8822('0x2')]=_0xc25b81['remoteUri']||'';this[_0x8822('0x3')]=_0xc25b81['authType']||'';this[_0x8822('0x4')]=_0xc25b81[_0x8822('0x4')]||'';this['consumerKey']=_0xc25b81[_0x8822('0x5')]||'';this['consumerSecret']=_0xc25b81[_0x8822('0x6')]||'';this[_0x8822('0x7')]=_0xc25b81[_0x8822('0x7')]||'';this[_0x8822('0x8')]=_0xc25b81['tokenSecret']||'';this['type']=_0xc25b81[_0x8822('0x9')]||'';this['serverUrl']=_0xc25b81[_0x8822('0xa')]||'';this[_0x8822('0xb')]=_0xc25b81[_0x8822('0xb')]||{};}module[_0x8822('0xc')]=DeskAccount;
\ No newline at end of file
index 5e00be2..556e185 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0x79a7=['tenantId','clientId','clientSecret','serverUrl','modernAuthentication','Configurations','CloudProvider','name','username','password','remoteUri'];(function(_0xab1cb9,_0x342baf){var _0x21ac70=function(_0x408a95){while(--_0x408a95){_0xab1cb9['push'](_0xab1cb9['shift']());}};_0x21ac70(++_0x342baf);}(_0x79a7,0x151));var _0x779a=function(_0x3e5c10,_0x5e7592){_0x3e5c10=_0x3e5c10-0x0;var _0x17ad9a=_0x79a7[_0x3e5c10];return _0x17ad9a;};'use strict';function Dynamics365Account(_0x374fce){this['id']=_0x374fce['id']||0x0;this[_0x779a('0x0')]=_0x374fce[_0x779a('0x0')]||'';this[_0x779a('0x1')]=_0x374fce[_0x779a('0x1')]||'';this['password']=_0x374fce[_0x779a('0x2')]||'';this[_0x779a('0x3')]=_0x374fce['remoteUri']||'';this[_0x779a('0x4')]=_0x374fce[_0x779a('0x4')]||'';this[_0x779a('0x5')]=_0x374fce['clientId']||'';this[_0x779a('0x6')]=_0x374fce[_0x779a('0x6')]||{};this[_0x779a('0x7')]=_0x374fce[_0x779a('0x7')]||'';this[_0x779a('0x8')]=_0x374fce[_0x779a('0x8')]||![];this[_0x779a('0x9')]=_0x374fce['Configurations']||{};this[_0x779a('0xa')]=_0x374fce[_0x779a('0xa')]||{};}module['exports']=Dynamics365Account;
\ No newline at end of file
index afb2e2a..2115fb7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0xbfae=['key','name','description','ecm','headerinfo','localstationid','minrate','maxrate','modem','gateway','faxdetect','t38timeout','tech','SIP','Trunk','ListId'];(function(_0x123a14,_0xdbf517){var _0x385777=function(_0x515228){while(--_0x515228){_0x123a14['push'](_0x123a14['shift']());}};_0x385777(++_0xdbf517);}(_0xbfae,0xc1));var _0xebfa=function(_0x2d96af,_0x427054){_0x2d96af=_0x2d96af-0x0;var _0x3a4346=_0xbfae[_0x2d96af];return _0x3a4346;};'use strict';function FaxAccount(_0xd2555c){this['id']=_0xd2555c['id']||0x0;this[_0xebfa('0x0')]=_0xd2555c['name']||'';this[_0xebfa('0x1')]=_0xd2555c['description'];this[_0xebfa('0x2')]=_0xd2555c[_0xebfa('0x2')];this[_0xebfa('0x3')]=_0xd2555c['headerinfo'];this[_0xebfa('0x4')]=_0xd2555c[_0xebfa('0x4')];this['minrate']=_0xd2555c[_0xebfa('0x5')]||0x960;this['maxrate']=_0xd2555c[_0xebfa('0x6')]||0x3840;this[_0xebfa('0x7')]=_0xd2555c['modem']||'v17,v27,v29';this['gateway']=_0xd2555c[_0xebfa('0x8')]||'no';this[_0xebfa('0x9')]=_0xd2555c[_0xebfa('0x9')]||'no';this[_0xebfa('0xa')]=_0xd2555c[_0xebfa('0xa')]||0x1388;this[_0xebfa('0xb')]=_0xd2555c[_0xebfa('0xb')]||_0xebfa('0xc');this[_0xebfa('0xd')]=_0xd2555c[_0xebfa('0xd')]?_0xd2555c[_0xebfa('0xd')]:undefined;this[_0xebfa('0xe')]=_0xd2555c['ListId'];this[_0xebfa('0xf')]=_0xd2555c[_0xebfa('0xf')];}module['exports']=FaxAccount;
\ No newline at end of file
index 82ac340..226bf01 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0x83d0=['serverUrl','Configurations','username','remoteUri'];(function(_0x5a91d9,_0x47cedb){var _0x5275e2=function(_0x15de79){while(--_0x15de79){_0x5a91d9['push'](_0x5a91d9['shift']());}};_0x5275e2(++_0x47cedb);}(_0x83d0,0x96));var _0x083d=function(_0x1494d4,_0x70461){_0x1494d4=_0x1494d4-0x0;var _0x3ed9f2=_0x83d0[_0x1494d4];return _0x3ed9f2;};'use strict';function FreshdeskAccount(_0x139108){this['id']=_0x139108['id']||0x0;this['name']=_0x139108['name']||'';this['username']=_0x139108[_0x083d('0x0')]||'';this['apiKey']=_0x139108['token']||'';this['remoteUri']=_0x139108[_0x083d('0x1')]||'';this[_0x083d('0x2')]=_0x139108[_0x083d('0x2')]||'';this['Configurations']=_0x139108[_0x083d('0x3')]||{};}module['exports']=FreshdeskAccount;
\ No newline at end of file
index 2a40deb..35005de 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0x302c=['remoteUri','serverUrl','Configurations','name','username'];(function(_0x12a554,_0x3d7ef8){var _0x244ba0=function(_0x5eb5ff){while(--_0x5eb5ff){_0x12a554['push'](_0x12a554['shift']());}};_0x244ba0(++_0x3d7ef8);}(_0x302c,0x15c));var _0xc302=function(_0x278acc,_0x12f4ca){_0x278acc=_0x278acc-0x0;var _0xe66387=_0x302c[_0x278acc];return _0xe66387;};'use strict';function FreshsalesAccount(_0x24ba4c){this['id']=_0x24ba4c['id']||0x0;this[_0xc302('0x0')]=_0x24ba4c[_0xc302('0x0')]||'';this[_0xc302('0x1')]=_0x24ba4c[_0xc302('0x1')]||'';this['apiKey']=_0x24ba4c['token']||'';this[_0xc302('0x2')]=_0x24ba4c[_0xc302('0x2')]||'';this[_0xc302('0x3')]=_0x24ba4c['serverUrl']||'';this['Configurations']=_0x24ba4c[_0xc302('0x4')]||{};}module['exports']=FreshsalesAccount;
\ No newline at end of file
index dd4aa33..64fef04 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0x52bb=['queuecallercomplete','queuecallerexit','queuecallerexitAt','connectedlinenum','connectedlinename','accountcode','context','exten','priority','holdtime','motionChannel','voice','mohtime','inbound','uniqueid','calleridnum','calleridname','queue','queuecallerjoinAt','queuecallerleaveAt','count','queuecallerabandon'];(function(_0x576d8a,_0x2d7bde){var _0x3dc3ef=function(_0xc76758){while(--_0xc76758){_0x576d8a['push'](_0x576d8a['shift']());}};_0x3dc3ef(++_0x2d7bde);}(_0x52bb,0xd3));var _0xb52b=function(_0x45534e,_0x17cce4){_0x45534e=_0x45534e-0x0;var _0x28e751=_0x52bb[_0x45534e];return _0x28e751;};'use strict';function QueueReport(){this['type']=_0xb52b('0x0');this[_0xb52b('0x1')]='';this[_0xb52b('0x2')]='';this[_0xb52b('0x3')]='';this[_0xb52b('0x4')]='';this[_0xb52b('0x5')]=null;this[_0xb52b('0x6')]=null;this['position']=0x1;this[_0xb52b('0x7')]=0x1;this[_0xb52b('0x8')]=![];this['queuecallerabandonAt']=null;this[_0xb52b('0x9')]=![];this['queuecallercompleteAt']=null;this[_0xb52b('0xa')]=![];this[_0xb52b('0xb')]=null;this['originalposition']=0x1;this['channel']='';this[_0xb52b('0xc')]='';this[_0xb52b('0xd')]='';this[_0xb52b('0xe')]='';this[_0xb52b('0xf')]='';this[_0xb52b('0x10')]='';this[_0xb52b('0x11')]='';this[_0xb52b('0x12')]=0x0;this['assigned']=![];this['lastAssignedTo']='';this[_0xb52b('0x13')]=_0xb52b('0x14');this[_0xb52b('0x15')]=0x0;this['variables']={};}module['exports']=QueueReport;
\ No newline at end of file
index 515595a..f139aa6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0x1658=['type','integrationTab','serverUrl','Configurations','exports','username','remoteUri','password','clientSecret','securityToken'];(function(_0x54a2e4,_0x1ff92c){var _0x4742d0=function(_0x147a6f){while(--_0x147a6f){_0x54a2e4['push'](_0x54a2e4['shift']());}};_0x4742d0(++_0x1ff92c);}(_0x1658,0x163));var _0x8165=function(_0x3ca40b,_0x22984b){_0x3ca40b=_0x3ca40b-0x0;var _0x1409dc=_0x1658[_0x3ca40b];return _0x1409dc;};'use strict';function SalesforceAccount(_0x4bfef8){this['id']=_0x4bfef8['id']||0x0;this['name']=_0x4bfef8['name']||'';this[_0x8165('0x0')]=_0x4bfef8['username']||'';this[_0x8165('0x1')]=_0x4bfef8[_0x8165('0x1')]||'';this[_0x8165('0x2')]=_0x4bfef8[_0x8165('0x2')]||'';this['clientId']=_0x4bfef8['clientId']||'';this[_0x8165('0x3')]=_0x4bfef8[_0x8165('0x3')]||'';this[_0x8165('0x4')]=_0x4bfef8[_0x8165('0x4')]||'';this[_0x8165('0x5')]=_0x4bfef8[_0x8165('0x5')]||_0x8165('0x6');this['serverUrl']=_0x4bfef8[_0x8165('0x7')]||'';this[_0x8165('0x8')]=_0x4bfef8[_0x8165('0x8')]||{};}module[_0x8165('0x9')]=SalesforceAccount;
\ No newline at end of file
index 4453576..7534f22 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0x7583=['name','password','remoteUri','serverUrl','Configurations','exports'];(function(_0x39df4a,_0x28f8c7){var _0x3c29ed=function(_0x8b506a){while(--_0x8b506a){_0x39df4a['push'](_0x39df4a['shift']());}};_0x3c29ed(++_0x28f8c7);}(_0x7583,0x1c8));var _0x3758=function(_0x21a2b2,_0x22ba1e){_0x21a2b2=_0x21a2b2-0x0;var _0x2060b4=_0x7583[_0x21a2b2];return _0x2060b4;};'use strict';function ServicenowAccount(_0x1d5f42){this['id']=_0x1d5f42['id']||0x0;this[_0x3758('0x0')]=_0x1d5f42['name']||'';this['username']=_0x1d5f42['username']||'';this[_0x3758('0x1')]=_0x1d5f42['password']||'';this['remoteUri']=_0x1d5f42[_0x3758('0x2')]||'';this[_0x3758('0x3')]=_0x1d5f42['serverUrl']||'';this[_0x3758('0x4')]=_0x1d5f42[_0x3758('0x4')]||{};}module[_0x3758('0x5')]=ServicenowAccount;
\ No newline at end of file
index fac76d9..2359369 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0x6c21=['name','username','password','remoteUri','serverUrl','Configurations','exports'];(function(_0x56716d,_0x306cf1){var _0x554fbf=function(_0x44c439){while(--_0x44c439){_0x56716d['push'](_0x56716d['shift']());}};_0x554fbf(++_0x306cf1);}(_0x6c21,0x1b2));var _0x16c2=function(_0x58b250,_0x210a75){_0x58b250=_0x58b250-0x0;var _0x2ad6d6=_0x6c21[_0x58b250];return _0x2ad6d6;};'use strict';function SugarcrmAccount(_0x1c44db){this['id']=_0x1c44db['id']||0x0;this[_0x16c2('0x0')]=_0x1c44db[_0x16c2('0x0')]||'';this[_0x16c2('0x1')]=_0x1c44db['username']||'';this[_0x16c2('0x2')]=_0x1c44db[_0x16c2('0x2')]||'';this[_0x16c2('0x3')]=_0x1c44db[_0x16c2('0x3')]||'';this[_0x16c2('0x4')]=_0x1c44db['serverUrl']||'';this[_0x16c2('0x5')]=_0x1c44db[_0x16c2('0x5')]||{};}module[_0x16c2('0x6')]=SugarcrmAccount;
\ No newline at end of file
index 3cc295e..e01e2d4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0x7c80=['status','address','name','accountcode','state','unknown'];(function(_0x865d11,_0x1d31f2){var _0x2260c3=function(_0x15f3dc){while(--_0x15f3dc){_0x865d11['push'](_0x865d11['shift']());}};_0x2260c3(++_0x1d31f2);}(_0x7c80,0xa4));var _0x07c8=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x7c80[_0x3dd15e];return _0x231fd0;};'use strict';function Telephone(_0x15e545){this['id']=_0x15e545['id']||0x0;this[_0x07c8('0x0')]=_0x15e545['name']||'';this['accountcode']=_0x15e545[_0x07c8('0x1')]||'';this[_0x07c8('0x2')]=_0x07c8('0x3');this['stateTime']=0x0;this[_0x07c8('0x4')]=_0x07c8('0x3');this[_0x07c8('0x5')]='';}module['exports']=Telephone;
\ No newline at end of file
index 289c447..d76fcb8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0xa9e0=['exports','name'];(function(_0x536ecc,_0x15e39b){var _0x31cbec=function(_0x1ca07a){while(--_0x1ca07a){_0x536ecc['push'](_0x536ecc['shift']());}};_0x31cbec(++_0x15e39b);}(_0xa9e0,0x123));var _0x0a9e=function(_0x173d7e,_0x3242fd){_0x173d7e=_0x173d7e-0x0;var _0x2220d6=_0xa9e0[_0x173d7e];return _0x2220d6;};'use strict';function template(_0x1f0015){this['id']=_0x1f0015['id']||0x0;this[_0x0a9e('0x0')]=_0x1f0015[_0x0a9e('0x0')]||'';this['html']=_0x1f0015['html']||'';}module[_0x0a9e('0x1')]=template;
\ No newline at end of file
index 118e5fb..37ef869 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0x0b0e=['channel','voice','status','AllConditions','AnyConditions','Actions','exports','name'];(function(_0x14add3,_0x13ce8d){var _0x4a174f=function(_0x2b3ed7){while(--_0x2b3ed7){_0x14add3['push'](_0x14add3['shift']());}};_0x4a174f(++_0x13ce8d);}(_0x0b0e,0x187));var _0xe0b0=function(_0x29733c,_0x2da30b){_0x29733c=_0x29733c-0x0;var _0x49e72f=_0x0b0e[_0x29733c];return _0x49e72f;};'use strict';function Trigger(_0x29cd1e){this['id']=_0x29cd1e['id']||0x0;this['name']=_0x29cd1e[_0xe0b0('0x0')]||'';this['channel']=_0x29cd1e[_0xe0b0('0x1')]||_0xe0b0('0x2');this[_0xe0b0('0x3')]=_0x29cd1e[_0xe0b0('0x3')]||![];this[_0xe0b0('0x4')]=_0x29cd1e[_0xe0b0('0x4')]||[];this[_0xe0b0('0x5')]=_0x29cd1e[_0xe0b0('0x5')]||[];this[_0xe0b0('0x6')]=_0x29cd1e[_0xe0b0('0x6')]||[];}module[_0xe0b0('0x7')]=Trigger;
\ No newline at end of file
index e3399c6..84f644a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0xa661=['registrationtime','defaultuser','exports','active','state','unknown','stateTime','status','registry','indexOf','host','port','domainport','refresh','stateRegistry'];(function(_0x2c8879,_0x180fbd){var _0x4c1b8d=function(_0x21f55d){while(--_0x21f55d){_0x2c8879['push'](_0x2c8879['shift']());}};_0x4c1b8d(++_0x180fbd);}(_0xa661,0xd5));var _0x1a66=function(_0xfdaeae,_0x5ceddb){_0xfdaeae=_0xfdaeae-0x0;var _0x418607=_0xa661[_0xfdaeae];return _0x418607;};'use strict';function Trunk(_0x3c5643){this['id']=_0x3c5643['id']||0x0;this['active']=_0x3c5643[_0x1a66('0x0')]||![];this['name']=_0x3c5643['name']||'';this[_0x1a66('0x1')]=_0x1a66('0x2');this[_0x1a66('0x3')]=0x0;this[_0x1a66('0x4')]=_0x1a66('0x2');this[_0x1a66('0x5')]=_0x3c5643[_0x1a66('0x5')]&&_0x3c5643[_0x1a66('0x5')][_0x1a66('0x6')](':')?_0x3c5643['registry']['split'](':')[0x0]:'';this[_0x1a66('0x7')]='';this[_0x1a66('0x8')]='';this['domain']='';this[_0x1a66('0x9')]='';this[_0x1a66('0xa')]='';this[_0x1a66('0xb')]=_0x1a66('0x2');this[_0x1a66('0xc')]='';this['address']='';this['defaultuser']=_0x3c5643[_0x1a66('0xd')]||'';}module[_0x1a66('0xe')]=Trunk;
\ No newline at end of file
index 4d3255c..b9ddbf5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0xefb9=['recordingFormat','none','mandatoryDisposition','exports','exten'];(function(_0x548627,_0x4ec392){var _0x844a84=function(_0x2ffdd2){while(--_0x2ffdd2){_0x548627['push'](_0x548627['shift']());}};_0x844a84(++_0x4ec392);}(_0xefb9,0xa9));var _0x9efb=function(_0x6620b8,_0x8b3d5e){_0x6620b8=_0x6620b8-0x0;var _0x33de50=_0xefb9[_0x6620b8];return _0x33de50;};'use strict';function voiceExtension(_0x347967){this['id']=_0x347967['id']||0x0;this[_0x9efb('0x0')]=_0x347967[_0x9efb('0x0')]||'';this['recordingFormat']=_0x347967[_0x9efb('0x1')]||_0x9efb('0x2');this[_0x9efb('0x3')]=_0x347967[_0x9efb('0x3')]||![];}module[_0x9efb('0x4')]=voiceExtension;
\ No newline at end of file
index 3a1c878..8e89f23 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0x5e5b=['dialQueueProject2','dialAgiAfterHangupClient','dialAgiAfterHangupAgent','mandatoryDisposition','mandatoryDispositionPause','exports','unknown','not_inuse','inuse','invalid','ringinuse','wav49','gsm','roundrobin','monitor_format','waiting','talking','total','answered','sumDuration','sumHoldTime','sumBillable','unmanaged','abandoned','loggedIn','available','acw','acwTimeout','autopause','message','originated','temp','dialGlobalInterval','dialActive','dialMethod','dialLimitChannel','dialLimitQueue','dialPowerLevel','dialPredictiveOptimization','dropRate','dialPredictiveOptimizationPercentage','dialPredictiveInterval','dialOriginateCallerIdName','dialOriginateCallerIdNumber','anonymous','dialOriginateTimeout','dialQueueOptions','tTxX','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','rrmemory','queueStatusComplete','dialAMDActive','dialAMDInitialSilence','dialAMDGreeting','dialAMDAfterGreetingSilence','dialAMDTotalAnalysisTime','dialAMDMinWordLength','dialAMDMaximumNumberOfWords','dialAMDSilenceThreshold','dialAMDMaximumWordLength','outboundRejectCallsDay','timeout','outboundAnswerCallsDay','outboundAnswerAgiCallsDay','outboundNoAnswerCallsDay','outboundBusyCallsDay','outboundCongestionCallsDay','outboundNoSuchCallsDay','outboundBlacklistCallsDay','outboundOriginateFailureCallsDay','outboundDropCallsDayCallersExit','outboundDropCallsDayTimeout','outboundDropCallsDayACS','outboundAbandonedDay','startProgressive','handlePredictive','predictiveIntervalMultiplicativeFactor','predictiveIntervalTotalCalls','predictiveIntervalAnsweredCalls','predictiveIntervalDroppedCallsCallersExit','predictiveIntervalDroppedCallsTimeout','predictiveIntervalAvgHoldtime','predictiveIntervalAvgTalktime','predictiveIntervalPauses','predictiveIntervalAvailable','predictiveIntervalMaxThreshold','dialPredictiveIntervalMaxThreshold','predictiveIntervalMinThreshold','predictiveIntervalErlangCalls','predictiveIntervalErlangCallsDroppedCalls','predictiveIntervalHitRate','erlangCalls','erlangCallToSecond','erlangAbandonmentRate','erlangBusyFactor','dialRecallMeTimeout','dialRecallInQueue','dialPreviewAutoRecallMe','dialPreviewRecallmeReminder'];(function(_0x4a9fb1,_0x273043){var _0x348672=function(_0x142b69){while(--_0x142b69){_0x4a9fb1['push'](_0x4a9fb1['shift']());}};_0x348672(++_0x273043);}(_0x5e5b,0x84));var _0xb5e5=function(_0x4553d8,_0x3adec1){_0x4553d8=_0x4553d8-0x0;var _0x4e3277=_0x5e5b[_0x4553d8];return _0x4e3277;};'use strict';var statusDesc=[_0xb5e5('0x0'),_0xb5e5('0x1'),_0xb5e5('0x2'),'busy',_0xb5e5('0x3'),'unavailable','ringing',_0xb5e5('0x4'),'onhold'];var monitorFormat={'wav':'wav','wav49':_0xb5e5('0x5'),'gsm':_0xb5e5('0x6')};var strategy={'rrmemory':'rrmemory','roundrobin':_0xb5e5('0x7')};function VoiceQueue(_0x317c7a){this['id']=_0x317c7a['id']||0x0;this['name']=_0x317c7a['name']||'';this[_0xb5e5('0x8')]=_0x317c7a[_0xb5e5('0x8')]||'';this['type']=_0x317c7a['type']||'inbound';this[_0xb5e5('0x9')]=0x0;this[_0xb5e5('0xa')]=0x0;this[_0xb5e5('0xb')]=0x0;this[_0xb5e5('0xc')]=0x0;this[_0xb5e5('0xd')]=0x0;this[_0xb5e5('0xe')]=0x0;this[_0xb5e5('0xf')]=0x0;this[_0xb5e5('0x10')]=0x0;this[_0xb5e5('0x11')]=0x0;this[_0xb5e5('0x12')]=0x0;this[_0xb5e5('0x13')]=0x0;this[_0xb5e5('0x14')]=_0x317c7a[_0xb5e5('0x14')]||![];this[_0xb5e5('0x15')]=_0x317c7a['acwTimeout']||0xa;this[_0xb5e5('0x16')]=_0x317c7a['autopause']||'no';this['sendMessageOneNotActive']=!![];this[_0xb5e5('0x17')]='';this[_0xb5e5('0x18')]=0x0;this[_0xb5e5('0x19')]=0x0;this['dialTimezone']=_0x317c7a['dialTimezone']||null;this[_0xb5e5('0x1a')]=_0x317c7a['dialGlobalInterval']?_0x317c7a[_0xb5e5('0x1a')]:null;this[_0xb5e5('0x1b')]=_0x317c7a[_0xb5e5('0x1b')];this[_0xb5e5('0x1c')]=_0x317c7a[_0xb5e5('0x1c')]||'progressive';this['dialLimitChannel']=_0x317c7a[_0xb5e5('0x1d')]||0x0;this['dialLimitQueue']=_0x317c7a[_0xb5e5('0x1e')]||0x0;this[_0xb5e5('0x1f')]=_0x317c7a['dialPowerLevel']||0x1;this[_0xb5e5('0x20')]=_0x317c7a[_0xb5e5('0x20')]||_0xb5e5('0x21');this[_0xb5e5('0x22')]=_0x317c7a['dialPredictiveOptimizationPercentage']||0.03;this[_0xb5e5('0x23')]=_0x317c7a[_0xb5e5('0x23')]||0x258;this[_0xb5e5('0x24')]=_0x317c7a[_0xb5e5('0x24')]||'anonymous';this[_0xb5e5('0x25')]=_0x317c7a[_0xb5e5('0x25')]||_0xb5e5('0x26');this['dialOriginateTimeout']=_0x317c7a[_0xb5e5('0x27')]||0x1e;this[_0xb5e5('0x28')]=_0x317c7a[_0xb5e5('0x28')]||_0xb5e5('0x29');this['dialQueueTimeout']=_0x317c7a['dialQueueTimeout']||0x3;this['dialQueueProject']=_0x317c7a[_0xb5e5('0x2a')]||undefined;this[_0xb5e5('0x2b')]=_0x317c7a[_0xb5e5('0x2b')]||0x3;this['dialCongestionRetryFrequency']=_0x317c7a[_0xb5e5('0x2c')]||0x96;this[_0xb5e5('0x2d')]=_0x317c7a[_0xb5e5('0x2d')]||0x3;this[_0xb5e5('0x2e')]=_0x317c7a[_0xb5e5('0x2e')]||0x96;this[_0xb5e5('0x2f')]=_0x317c7a[_0xb5e5('0x2f')]||0x3;this[_0xb5e5('0x30')]=_0x317c7a[_0xb5e5('0x30')]||0x96;this[_0xb5e5('0x31')]=_0x317c7a[_0xb5e5('0x31')]||0x3;this[_0xb5e5('0x32')]=_0x317c7a[_0xb5e5('0x32')]||0x96;this[_0xb5e5('0x33')]=_0x317c7a['dialDropMaxRetry']||0x3;this['dialDropRetryFrequency']=_0x317c7a[_0xb5e5('0x34')]||0x96;this[_0xb5e5('0x35')]=_0x317c7a[_0xb5e5('0x35')]||0x3;this['dialAbandonedRetryFrequency']=_0x317c7a[_0xb5e5('0x36')]||0x96;this[_0xb5e5('0x37')]=_0x317c7a[_0xb5e5('0x37')]||0x3;this['dialMachineRetryFrequency']=_0x317c7a[_0xb5e5('0x38')]||0x96;this[_0xb5e5('0x39')]=_0x317c7a['dialAgentRejectMaxRetry']||0x3;this[_0xb5e5('0x3a')]=_0x317c7a[_0xb5e5('0x3a')]||0x96;this[_0xb5e5('0x3b')]=_0x317c7a['callAdditionalPhoneAfterMin']||0x3;this['dialGlobalMaxRetry']=_0x317c7a[_0xb5e5('0x3c')]||0x4;this['Trunk']=_0x317c7a[_0xb5e5('0x3d')]?_0x317c7a[_0xb5e5('0x3d')]:undefined;this[_0xb5e5('0x3e')]=_0x317c7a[_0xb5e5('0x3e')]?_0x317c7a['TrunkBackup']:undefined;this[_0xb5e5('0x3f')]=_0x317c7a['dialPrefix']||undefined;this[_0xb5e5('0x40')]=_0x317c7a[_0xb5e5('0x40')]?_0x317c7a['Interval']:undefined;this[_0xb5e5('0x41')]=_0x317c7a[_0xb5e5('0x41')]||_0xb5e5('0x42');this['dialRandomLastDigitCallerIdNumber']=_0x317c7a[_0xb5e5('0x43')]||undefined;this[_0xb5e5('0x44')]=_0x317c7a[_0xb5e5('0x44')]||undefined;this[_0xb5e5('0x45')]=strategy[_0x317c7a[_0xb5e5('0x45')]]||_0xb5e5('0x46');this[_0xb5e5('0x47')]=!![];this['dialAMDActive']=_0x317c7a[_0xb5e5('0x48')]||![];this[_0xb5e5('0x49')]=_0x317c7a['dialAMDInitialSilence'];this[_0xb5e5('0x4a')]=_0x317c7a[_0xb5e5('0x4a')];this[_0xb5e5('0x4b')]=_0x317c7a[_0xb5e5('0x4b')];this[_0xb5e5('0x4c')]=_0x317c7a['dialAMDTotalAnalysisTime'];this[_0xb5e5('0x4d')]=_0x317c7a[_0xb5e5('0x4d')];this['dialAMDBetweenWordsSilence']=_0x317c7a['dialAMDBetweenWordsSilence'];this[_0xb5e5('0x4e')]=_0x317c7a[_0xb5e5('0x4e')];this['dialAMDSilenceThreshold']=_0x317c7a[_0xb5e5('0x4f')];this[_0xb5e5('0x50')]=_0x317c7a['dialAMDMaximumWordLength'];this[_0xb5e5('0x51')]=0x0;this['pTalking']=0x0;this[_0xb5e5('0x52')]=_0x317c7a[_0xb5e5('0x52')];this[_0xb5e5('0x53')]=0x0;this[_0xb5e5('0x54')]=0x0;this[_0xb5e5('0x55')]=0x0;this[_0xb5e5('0x56')]=0x0;this[_0xb5e5('0x57')]=0x0;this[_0xb5e5('0x58')]=0x0;this['outboundUnknownCallsDay']=0x0;this[_0xb5e5('0x59')]=0x0;this[_0xb5e5('0x5a')]=0x0;this[_0xb5e5('0x5b')]=0x0;this[_0xb5e5('0x5c')]=0x0;this[_0xb5e5('0x5d')]=0x0;this['outboundReCallsDay']=0x0;this[_0xb5e5('0x5e')]=0x0;this[_0xb5e5('0x5f')]=undefined;this['startPredictive']=undefined;this[_0xb5e5('0x60')]=undefined;this[_0xb5e5('0x61')]=1.05;this[_0xb5e5('0x62')]=0x0;this[_0xb5e5('0x63')]=0x0;this[_0xb5e5('0x64')]=0x0;this[_0xb5e5('0x65')]=0x0;this[_0xb5e5('0x66')]=0x0;this[_0xb5e5('0x67')]=0x0;this[_0xb5e5('0x68')]=0x0;this[_0xb5e5('0x69')]=0x0;this[_0xb5e5('0x6a')]=_0x317c7a[_0xb5e5('0x6b')]||0x14;this[_0xb5e5('0x6c')]=_0x317c7a[_0xb5e5('0x6b')]||0xa;this[_0xb5e5('0x6d')]=0x0;this[_0xb5e5('0x6e')]=0x0;this[_0xb5e5('0x6f')]=0x1;this[_0xb5e5('0x70')]=0x0;this[_0xb5e5('0x71')]=0x0;this[_0xb5e5('0x72')]=0x0;this[_0xb5e5('0x73')]=0x0;this[_0xb5e5('0x74')]=_0x317c7a[_0xb5e5('0x74')]||0x1e;this[_0xb5e5('0x75')]=_0x317c7a[_0xb5e5('0x75')]||![];this[_0xb5e5('0x76')]=!!_0x317c7a[_0xb5e5('0x76')]||![];this['dialPreviewRecallmeReminder']=!!_0x317c7a[_0xb5e5('0x77')]||![];this[_0xb5e5('0x78')]=_0x317c7a[_0xb5e5('0x78')]||undefined;this['dialAgiAfterHangupClient']=_0x317c7a[_0xb5e5('0x79')]||![];this[_0xb5e5('0x7a')]=_0x317c7a[_0xb5e5('0x7a')]||![];this['monitor_format']=monitorFormat[_0x317c7a[_0xb5e5('0x8')]]?monitorFormat[_0x317c7a[_0xb5e5('0x8')]]:undefined;this['mandatoryDisposition']=_0x317c7a[_0xb5e5('0x7b')]||![];this[_0xb5e5('0x7c')]=_0x317c7a[_0xb5e5('0x7c')]?_0x317c7a[_0xb5e5('0x7c')]:undefined;}module[_0xb5e5('0x7d')]=VoiceQueue;
\ No newline at end of file
index 53fe545..38bb9fc 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0x1894=['remoteUri','serverUrl','Configurations','exports','name','username','accessKey'];(function(_0x14caf6,_0x23de34){var _0x3b0248=function(_0x13aa8d){while(--_0x13aa8d){_0x14caf6['push'](_0x14caf6['shift']());}};_0x3b0248(++_0x23de34);}(_0x1894,0x1af));var _0x4189=function(_0x514260,_0x1891e1){_0x514260=_0x514260-0x0;var _0x4ac81b=_0x1894[_0x514260];return _0x4ac81b;};'use strict';function VtigerAccount(_0x51d002){this['id']=_0x51d002['id']||0x0;this['name']=_0x51d002[_0x4189('0x0')]||'';this[_0x4189('0x1')]=_0x51d002[_0x4189('0x1')]||'';this[_0x4189('0x2')]=_0x51d002[_0x4189('0x2')]||'';this[_0x4189('0x3')]=_0x51d002[_0x4189('0x3')]||'';this[_0x4189('0x4')]=_0x51d002[_0x4189('0x4')]||'';this[_0x4189('0x5')]=_0x51d002[_0x4189('0x5')]||{};}module[_0x4189('0x6')]=VtigerAccount;
\ No newline at end of file
index 1118858..2840907 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0x4fee=['remoteUri','authType','type','Configurations','exports','name','username','password','token'];(function(_0x4f5fc3,_0x235b14){var _0x13c3d4=function(_0x21c459){while(--_0x21c459){_0x4f5fc3['push'](_0x4f5fc3['shift']());}};_0x13c3d4(++_0x235b14);}(_0x4fee,0xb0));var _0xe4fe=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x4fee[_0x3dd15e];return _0x231fd0;};'use strict';function ZendeskAccount(_0x210db4){this['id']=_0x210db4['id']||0x0;this[_0xe4fe('0x0')]=_0x210db4[_0xe4fe('0x0')]||'';this[_0xe4fe('0x1')]=_0x210db4[_0xe4fe('0x1')]||'';this[_0xe4fe('0x2')]=_0x210db4['password']||'';this[_0xe4fe('0x3')]=_0x210db4['token']||'';this[_0xe4fe('0x4')]=_0x210db4[_0xe4fe('0x4')]||'';this[_0xe4fe('0x5')]=_0x210db4[_0xe4fe('0x5')]||'';this[_0xe4fe('0x6')]=_0x210db4[_0xe4fe('0x6')]||'integrationTab';this['serverUrl']=_0x210db4['serverUrl']||'';this[_0xe4fe('0x7')]=_0x210db4[_0xe4fe('0x7')]||{};}module[_0xe4fe('0x8')]=ZendeskAccount;
\ No newline at end of file
index d92da43..2baf0ed 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0xc4e6=['description','host','zone','clientId','clientSecret','serverUrl','code','Configurations','exports','name'];(function(_0x1a5946,_0x426991){var _0x25e9d5=function(_0x44e1ce){while(--_0x44e1ce){_0x1a5946['push'](_0x1a5946['shift']());}};_0x25e9d5(++_0x426991);}(_0xc4e6,0x18f));var _0x6c4e=function(_0x2ef44b,_0x553359){_0x2ef44b=_0x2ef44b-0x0;var _0x2405b9=_0xc4e6[_0x2ef44b];return _0x2405b9;};'use strict';function ZohoAccount(_0x1cd153){this['id']=_0x1cd153['id']||0x0;this[_0x6c4e('0x0')]=_0x1cd153[_0x6c4e('0x0')]||'';this[_0x6c4e('0x1')]=_0x1cd153['description']||'';this['host']=_0x1cd153[_0x6c4e('0x2')]||'';this[_0x6c4e('0x3')]=_0x1cd153[_0x6c4e('0x3')]||'';this[_0x6c4e('0x4')]=_0x1cd153[_0x6c4e('0x4')]||'';this[_0x6c4e('0x5')]=_0x1cd153[_0x6c4e('0x5')]||'';this[_0x6c4e('0x6')]=_0x1cd153[_0x6c4e('0x6')]||'';this['code']=_0x1cd153[_0x6c4e('0x7')]||'';this['refreshToken']=_0x1cd153['refreshToken']||'';this['Configurations']=_0x1cd153[_0x6c4e('0x8')]||{};}module[_0x6c4e('0x9')]=ZohoAccount;
\ No newline at end of file
index d6f5285..553dae5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0x4e2e=['countmachineretry','countagentrejectretry','callback','callbackuniqueid','callbackat','recallme','ContactId','ListId','UserId','VoiceQueueId','originatecalleridnum','originatecalleridname','prototype','number','lodash','moment','string','isNil','uniqueid','idContact','queue','name','type','campaigntype','dialAnswer','Agent','channelAgent','format','SIP/%s','membername','calleridname','phone','Contact','firstName','lastName','calleridnum','scheduledat','countbusyretry','countcongestionretry','countnoanswerretry','countglobal','countnosuchnumberretry','countdropretry','countabandonedretry'];(function(_0x5c7a85,_0x41dd19){var _0x35290f=function(_0x26215b){while(--_0x26215b){_0x5c7a85['push'](_0x5c7a85['shift']());}};_0x35290f(++_0x41dd19);}(_0x4e2e,0x1f2));var _0xe4e2=function(_0x3d3cef,_0x4c0677){_0x3d3cef=_0x3d3cef-0x0;var _0x4f2337=_0x4e2e[_0x3d3cef];return _0x4f2337;};'use strict';var util=require('util');var _=require(_0xe4e2('0x0'));var moment=require(_0xe4e2('0x1'));function checkNameSurname(_0x2ae450,_0x1b178f,_0x2041b9){var _0x4284bf='';if(!_['isNil'](_0x1b178f)&&_0xe4e2('0x2')===typeof _0x1b178f){_0x4284bf+=_0x1b178f;}if(!_[_0xe4e2('0x3')](_0x2041b9)&&_0xe4e2('0x2')===typeof _0x2041b9){_0x4284bf+='\x20'+_0x2041b9;}if(_0x4284bf!==''){return _0x4284bf;}return _0x2ae450;}function Action(_0x38c84c,_0x48e83d,_0x322295,_0x36b1c6,_0x1c4e64){this[_0xe4e2('0x4')]=_0x322295||undefined;this[_0xe4e2('0x5')]=_0x38c84c['id'];this[_0xe4e2('0x6')]=_0x48e83d[_0xe4e2('0x7')];this[_0xe4e2('0x8')]=_0x48e83d['type'];this[_0xe4e2('0x9')]=_0xe4e2('0x6');this[_0xe4e2('0xa')]=![];this['membername']=_[_0xe4e2('0x3')](_0x38c84c[_0xe4e2('0xb')])?undefined:_0x38c84c[_0xe4e2('0xb')][_0xe4e2('0x7')];this[_0xe4e2('0xc')]=this['membername']?util[_0xe4e2('0xd')](_0xe4e2('0xe'),this[_0xe4e2('0xf')]):_0x36b1c6||undefined;this[_0xe4e2('0x10')]=checkNameSurname(_0x38c84c['Contact'][_0xe4e2('0x11')],_0x38c84c[_0xe4e2('0x12')][_0xe4e2('0x13')],_0x38c84c[_0xe4e2('0x12')][_0xe4e2('0x14')]);this['active']=_0x38c84c['active']||![];this[_0xe4e2('0x15')]=_0x38c84c[_0xe4e2('0x11')];this[_0xe4e2('0x16')]=_0x38c84c[_0xe4e2('0x16')];this[_0xe4e2('0x17')]=_0x38c84c['countbusyretry']||0x0;this[_0xe4e2('0x18')]=_0x38c84c[_0xe4e2('0x18')]||0x0;this[_0xe4e2('0x19')]=_0x38c84c['countnoanswerretry']||0x0;this[_0xe4e2('0x1a')]=(_0x38c84c['countbusyretry']||0x0)+(_0x38c84c[_0xe4e2('0x18')]||0x0)+(_0x38c84c[_0xe4e2('0x19')]||0x0)+(_0x38c84c[_0xe4e2('0x1b')]||0x0)+(_0x38c84c[_0xe4e2('0x1c')]||0x0)+(_0x38c84c[_0xe4e2('0x1d')]||0x0)+(_0x38c84c[_0xe4e2('0x1e')]||0x0)+(_0x38c84c[_0xe4e2('0x1f')]||0x0);this[_0xe4e2('0x1b')]=_0x38c84c[_0xe4e2('0x1b')]||0x0;this[_0xe4e2('0x1c')]=_0x38c84c['countdropretry']||0x0;this[_0xe4e2('0x1d')]=_0x38c84c[_0xe4e2('0x1d')]||0x0;this[_0xe4e2('0x1e')]=_0x38c84c[_0xe4e2('0x1e')]||0x0;this[_0xe4e2('0x1f')]=_0x38c84c[_0xe4e2('0x1f')]||0x0;this[_0xe4e2('0x20')]=_0x38c84c['callback'];this[_0xe4e2('0x21')]=_0x38c84c[_0xe4e2('0x21')];this[_0xe4e2('0x22')]=_0x38c84c['callbackat'];this[_0xe4e2('0x23')]=_0x38c84c[_0xe4e2('0x23')];this['ContactId']=_0x38c84c[_0xe4e2('0x24')];this[_0xe4e2('0x25')]=_0x38c84c[_0xe4e2('0x25')];this[_0xe4e2('0x26')]=_[_0xe4e2('0x3')](_0x38c84c['Agent'])?_0x38c84c[_0xe4e2('0x26')]:_0x38c84c[_0xe4e2('0xb')]['id'];this[_0xe4e2('0x27')]=_0x38c84c['VoiceQueueId'];this[_0xe4e2('0x28')]='';this[_0xe4e2('0x29')]='';}Action[_0xe4e2('0x2a')]['getCaller']=function(){return util[_0xe4e2('0xd')]('\x22%s\x22\x20<%s>',this[_0xe4e2('0x10')],this[_0xe4e2('0x2b')]);};module['exports']=Action;
\ No newline at end of file
index 76703ce..4cafd11 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0x1e82=['[callProgressDetectingCustomer][logBusyGlobal]','countbusyretry','unlockAgent','swapAdditionalPhones','NOANSWER','countnoanswerretry','NoAnswer','dialNoAnswerRetryFrequency','custom:agentnoanswer','[callProgressDetectingCustomer][logNoAnswerGlobal]','[callProgressDetectingCustomer][logNoAnswer]','CONGESTION','countcongestionretry','Congestion','dialCongestionRetryFrequency','custom:agentcongestion','congestion','[callProgressDetectingCustomer][logCongestion]','dialCongestionMaxRetry','countagentrejectretry','AgentReject','dialAgentRejectRetryFrequency','agentreject','[syncHangupRequest][logAgentReject]','[callProgressDetectingCustomer][logAgentReject]','ABANDONED','countabandonedretry','Abandoned','[callProgressDetectingCustomer][logAbandoned]','countabandonedetry','dialAbandonedMaxRety','dialAbandonedRetryFrequency','countmachineretry','cause-txt','dialstatus','custom:amd','amd','[callProgressDetectingCustomer][hangupInAMD]','[callProgressDetectingCustomer][machine]','[callProgressDetectingCustomer][logUnknown]','[callProgressDetectingCustomer][logUnknownGlobal]','[callProgressDetectingCustomer]','callProgressDetectingAgent','object','reason','logAgent','[callProgressDetectingAgent][logNoSuch]','createAgentHistory','[callProgressDetectingAgent][logNoAnswer]','AnswerAGI','[callProgressDetectingAgent][logAnswerAGI]','[callProgressDetectingAgent][logCongestion]','[originated][decrement][callProgressDetectingAgent]','resolve','[incrementPreviewCounters]\x20','checkInBlack','Contact','phone','VoiceQueueId','Contact\x20is\x20undefined','lookAgent','isEmpty','\x20IdHopper:\x20','custom:agentcalled','called','Calling','[Preview][execCall][failure]','logBlacklist','createHistory','[Blacklist][error]','Contact\x20in\x20black\x20List','SIP/%s','status','reachable','execRun','unlock','unlockContact','getContactPreview','recallme','isValid','checkIsBlackList','[Preview][checkIsBlackList]','Call\x20unsuccessful','[Preview][getContactPreview]','validateContact','Empty\x20Contact','Empty\x20Campaign','[Preview][validateContact][Trunk\x20not\x20working\x20correctly]','\x20Trunk\x20is\x20not\x20active','\x20Trunk\x20Backup\x20is\x20not\x20active','Trunk\x20not\x20working\x20correctly','[Preview][validateContact][Campaign\x20Active]','campaign\x20Name:\x20','\x20Not\x20Active','Is\x20Valid','execCall','SIP/%s/%s%s','trim','dialCutDigit','substring','getCallerId','callerid','dialRandomLastDigitCallerIdNumber','getCallerIdRandom','dialOriginateCallerIdName','extractCalleridName','originatecalleridnum','extractCalleridNumber','toLowerVariables','variablesAction','[originated][increment]','actionid','logLookAgent','clone','responsetime','isFailure','response','rejected','starttime','syncHangup','cause','[syncHangup][talking][cause]','statedesc','dialQueueProject','channelstate','isUndefined','transfer','[syncHangup][talking][transfer]','destlinkedid','destuniqueid','variables','addVariable','keys','variable','[syncVarSet][Preview]','inspect','transfertargetlinkedid','transfererlinkedid','exports','util','lodash','uuid','moment','md5','ioredis','../../../config/logger','preview','actionPreview','./rpcDb','../rpc/cmHopperAdditionalPhone','./action','./util/util','defaults','redis','localhost','prototype','enqueue','tail','sequence','voiceQueues','trunks','actions','agents','clockClearZombieChannels','syncOriginateResponse','bind','hangup','hanguprequest','syncHangupRequest','dialend','syncDialEnd','newexten','syncNewExten','syncVarSet','syncAttendedTransfer','blindtransfer','syncBlindTransfer','loopCampaigns','campaignsPreview','emit','type','name','answered','available','loggedIn','pTalking','sumBillable','sumDuration','sumHoldTime','talking','abandoned','waiting','loggedInDb','dialMethod','dialOriginateCallerIdNumber','dialOriginateTimeout','dialPrefix','outboundAnswerCallsDay','outboundBlacklistCallsDay','outboundBusyCallsDay','outboundDropCallsDayACS','outboundDropCallsDayCallersExit','outboundDropCallsDayTimeout','outboundNoAnswerCallsDay','outboundNoSuchCallsDay','outboundOriginateFailureCallsDay','outboundReCallsDay','outboundRejectCallsDay','outboundUnknownCallsDay','outboundAbandonedCallsDay','predictiveIntervalAnsweredCalls','predictiveIntervalAvgHoldtime','predictiveIntervalDroppedCallsCallersExit','predictiveIntervalDroppedCallsTimeout','predictiveIntervalMultiplicativeFactor','predictiveIntervalAvailable','predictiveIntervalTotalCalls','message','originated','erlangAbandonmentRate','startPredictive','startProgressive','Trunk','active','Interval','stringify','format','voice:queue:%s','voice_queue:save','info','voice_queue_channel:remove','voice_queue_presence:remove','sendMessageOneNotActive','paused','logger','[CampaignPreview]\x20Campaign\x20Queue:\x20','\x20is\x20not\x20active','\x20is\x20deactivated','syncCampaigns','hasOwnProperty','booked','outbound','clearZombieChannels','dialPreviewAutoRecallMe','isNil','[clearZombieChannels][talking]','Queue','queue','originated:\x20','pTalking:\x20','dialAnswer','pick','ListId','Action','channel','catch','No\x20such\x20channel','updateOriginated','[clearZombieChannel]','loggerError','[Dialer][checkChannel][pTalking][Preview]','[action]','size','clearZombieChannel','recallMe','getContactRecallMe','agentReadyId','length','dialRecallMeTimeout','Agent','voicePause','run','then','logger2','[RecallMe]','disableContact','YYYY-MM-DD\x20HH:mm:ss','logCustomer','RecallInQueue','dialRecallInQueue','rescheduleContactInQueue','createBody','createCustomerHistory','RecallFailedTimeout','[HistoryRecallClose]','createCustomerFinal','[getContactRecallMe]','setMessage','AGENTS_NOT_LOGGED','isActive','dialActive','NOT_ACTIVE','isTrunkReachable','TrunkBackup','TRUNK_IS_NOT_REACHABLE','ACTIVE','callProgressDetectingCustomer','countnosuchnumberretry','countglobal','NoSuchNumber','buildObj','nosuchnumber','[callProgressDetectingCustomer][logNoSuch]','additional','callAdditionalPhoneAfterMin','totalGlobal','dialGlobalMaxRetry','cloneAction','Global','[callProgressDetectingCustomer][logNoSuchGlobal]','rescheduleContact','scheduledAt','dialNoSuchNumberRetryFrequency','activeContact','actioncountonusuch','idContact','incrementPreviewCounters','ANSWER','[syncHangup][talking][increment]','uniqueid','\x20Queue','custom:agentconnect','connect','custom:agentConnectPreview','buildAcw','custom:agentcomplete','complete','total','decrementTalkink','[16]','Answer','[callProgressDetectingCustomer][logAnswerGlobal]','crateCustomerReportQueue','talktime','[syncHangup][talking][decrement]','linkedid','BUSY','Busy','dialBusyRetryFrequency','busy','[callProgressDetectingCustomer][logBusy]','verifyAdditionalPhones'];(function(_0x1ca599,_0x2dc752){var _0x4682a4=function(_0x55249b){while(--_0x55249b){_0x1ca599['push'](_0x1ca599['shift']());}};_0x4682a4(++_0x2dc752);}(_0x1e82,0x8b));var _0x21e8=function(_0x24a0e8,_0x32ab15){_0x24a0e8=_0x24a0e8-0x0;var _0x466f7a=_0x1e82[_0x24a0e8];return _0x466f7a;};'use strict';var util=require(_0x21e8('0x0'));var _=require(_0x21e8('0x1'));var uuid=require(_0x21e8('0x2'));var moment=require(_0x21e8('0x3'));var md5=require(_0x21e8('0x4'));var Redis=require(_0x21e8('0x5'));var config=require('../../../config/environment');var logger=require(_0x21e8('0x6'))(_0x21e8('0x7'));var loggerAction=require('../../../config/logger')(_0x21e8('0x8'));var ami=require('../ami');var rpcDb=require(_0x21e8('0x9'));var cmHopperAdditionalPhone=require(_0x21e8('0xa'));var Action=require(_0x21e8('0xb'));var ut=require(_0x21e8('0xc'));config['redis']=_[_0x21e8('0xd')](config[_0x21e8('0xe')],{'host':_0x21e8('0xf'),'port':0x18eb});var io=require('socket.io-emitter')(new Redis(config[_0x21e8('0xe')]));var Sequence=function(){};Sequence[_0x21e8('0x10')][_0x21e8('0x11')]=function(_0x3fa1da){this['tail']=this['tail']?this[_0x21e8('0x12')]['finally'](_0x3fa1da):_0x3fa1da();};function Preview(_0x131349){this[_0x21e8('0x13')]=new Sequence();this['campaignsPreview']=_0x131349[_0x21e8('0x14')];this['trunks']=_0x131349[_0x21e8('0x15')];this[_0x21e8('0x16')]={};this[_0x21e8('0x17')]=_0x131349['agents'];this[_0x21e8('0x18')]=0x0;ami['on']('originateresponse',this[_0x21e8('0x19')][_0x21e8('0x1a')](this));ami['on'](_0x21e8('0x1b'),this['syncHangup']['bind'](this));ami['on'](_0x21e8('0x1c'),this[_0x21e8('0x1d')][_0x21e8('0x1a')](this));ami['on'](_0x21e8('0x1e'),this[_0x21e8('0x1f')][_0x21e8('0x1a')](this));ami['on'](_0x21e8('0x20'),this[_0x21e8('0x21')][_0x21e8('0x1a')](this));ami['on']('varset',this[_0x21e8('0x22')]['bind'](this));ami['on']('attendedtransfer',this[_0x21e8('0x23')][_0x21e8('0x1a')](this));ami['on'](_0x21e8('0x24'),this[_0x21e8('0x25')]['bind'](this));this[_0x21e8('0x26')](this[_0x21e8('0x27')]);}function emit(_0x25b678,_0x2e5d89,_0xa969eb){io['to'](_0x25b678)[_0x21e8('0x28')](_0x2e5d89,_0xa969eb);}function emitCampaignPreview(_0x3426d1){if(_0x3426d1[_0x21e8('0x29')]==='outbound'){var _0xc9673c={'id':_0x3426d1['id'],'name':_0x3426d1[_0x21e8('0x2a')],'strategy':_0x3426d1['strategy'],'answered':_0x3426d1[_0x21e8('0x2b')],'available':_0x3426d1[_0x21e8('0x2c')],'loggedIn':_0x3426d1[_0x21e8('0x2d')],'pTalking':_0x3426d1[_0x21e8('0x2e')],'sumBillable':_0x3426d1[_0x21e8('0x2f')],'sumDuration':_0x3426d1[_0x21e8('0x30')],'sumHoldTime':_0x3426d1[_0x21e8('0x31')]||0x0,'talking':_0x3426d1[_0x21e8('0x32')],'total':_0x3426d1['total'],'type':_0x3426d1[_0x21e8('0x29')],'unmanaged':_0x3426d1['unmanaged'],'abandoned':_0x3426d1[_0x21e8('0x33')],'waiting':_0x3426d1[_0x21e8('0x34')],'loggedInDb':_0x3426d1[_0x21e8('0x35')],'dialActive':_0x3426d1['dialActive'],'dialMethod':_0x3426d1[_0x21e8('0x36')],'dialOriginateCallerIdName':_0x3426d1['dialOriginateCallerIdName'],'dialOriginateCallerIdNumber':_0x3426d1[_0x21e8('0x37')],'dialOriginateTimeout':_0x3426d1[_0x21e8('0x38')],'dialPrefix':_0x3426d1[_0x21e8('0x39')],'outboundAnswerAgiCallsDay':_0x3426d1['outboundAnswerAgiCallsDay'],'outboundAnswerCallsDay':_0x3426d1[_0x21e8('0x3a')],'outboundBlacklistCallsDay':_0x3426d1[_0x21e8('0x3b')],'outboundBusyCallsDay':_0x3426d1[_0x21e8('0x3c')],'outboundCongestionCallsDay':_0x3426d1['outboundCongestionCallsDay'],'outboundDropCallsDayACS':_0x3426d1[_0x21e8('0x3d')],'outboundDropCallsDayCallersExit':_0x3426d1[_0x21e8('0x3e')],'outboundDropCallsDayTimeout':_0x3426d1[_0x21e8('0x3f')],'outboundNoAnswerCallsDay':_0x3426d1[_0x21e8('0x40')],'outboundNoSuchCallsDay':_0x3426d1[_0x21e8('0x41')],'outboundOriginateFailureCallsDay':_0x3426d1[_0x21e8('0x42')],'outboundReCallsDay':_0x3426d1[_0x21e8('0x43')],'outboundRejectCallsDay':_0x3426d1[_0x21e8('0x44')],'outboundUnknownCallsDay':_0x3426d1[_0x21e8('0x45')],'outboundAbandonedCallsDay':_0x3426d1[_0x21e8('0x46')],'predictiveIntervalAnsweredCalls':_0x3426d1[_0x21e8('0x47')],'predictiveIntervalAvgHoldtime':_0x3426d1[_0x21e8('0x48')],'predictiveIntervalAvgTalktime':_0x3426d1['predictiveIntervalAvgTalktime'],'predictiveIntervalDroppedCallsCallersExit':_0x3426d1[_0x21e8('0x49')],'predictiveIntervalDroppedCallsTimeout':_0x3426d1[_0x21e8('0x4a')],'predictiveIntervalErlangCalls':_0x3426d1['predictiveIntervalErlangCalls'],'predictiveIntervalErlangCallsDroppedCalls':_0x3426d1['predictiveIntervalErlangCallsDroppedCalls'],'predictiveIntervalHitRate':_0x3426d1['predictiveIntervalHitRate'],'predictiveIntervalMultiplicativeFactor':_0x3426d1[_0x21e8('0x4b')],'predictiveIntervalPauses':_0x3426d1['predictiveIntervalPauses'],'predictiveIntervalAvailable':_0x3426d1[_0x21e8('0x4c')],'predictiveIntervalTotalCalls':_0x3426d1[_0x21e8('0x4d')],'message':_0x3426d1[_0x21e8('0x4e')],'originated':_0x3426d1[_0x21e8('0x4f')],'erlangCalls':_0x3426d1['erlangCalls'],'erlangCallToSecond':_0x3426d1['erlangCallToSecond'],'erlangAbandonmentRate':_0x3426d1[_0x21e8('0x50')],'erlangBusyFactor':_0x3426d1['erlangBusyFactor'],'startPredictive':_0x3426d1[_0x21e8('0x51')],'startProgressive':_0x3426d1[_0x21e8('0x52')]};if(_0x3426d1[_0x21e8('0x53')]){_0xc9673c[_0x21e8('0x53')]={'id':_0x3426d1['Trunk']['id'],'name':_0x3426d1[_0x21e8('0x53')][_0x21e8('0x2a')],'active':_0x3426d1[_0x21e8('0x53')][_0x21e8('0x54')],'callerid':_0x3426d1[_0x21e8('0x53')]['callerid']};}if(_0x3426d1[_0x21e8('0x55')]){_0xc9673c[_0x21e8('0x55')]={'id':_0x3426d1[_0x21e8('0x55')]['id'],'name':_0x3426d1[_0x21e8('0x55')][_0x21e8('0x2a')]};}var _0x6d322=md5(JSON[_0x21e8('0x56')](_0xc9673c));if(_0x3426d1[_0x21e8('0x4')]!==_0x6d322){_0x3426d1[_0x21e8('0x4')]=_0x6d322;emit(util[_0x21e8('0x57')](_0x21e8('0x58'),_0xc9673c[_0x21e8('0x2a')]),_0x21e8('0x59'),_0xc9673c);}}}function emitVoiceQueueChannelRemove(_0x3c83bb){logger[_0x21e8('0x5a')]('[DEBUG]\x20Emit\x20voice_queue_channel:remove\x20event',JSON[_0x21e8('0x56')](_0x3c83bb));emit(util[_0x21e8('0x57')](_0x21e8('0x58'),_0x3c83bb[_0x21e8('0x2a')]),_0x21e8('0x5b'),_0x3c83bb);io[_0x21e8('0x28')](_0x21e8('0x5c'),_0x3c83bb);}function notSendMessagesQueue(_0x3ebf0b){if(_0x3ebf0b[_0x21e8('0x5d')]){if(_0x3ebf0b[_0x21e8('0x4f')]===0x0&&_0x3ebf0b['pTalking']===0x0){_0x3ebf0b[_0x21e8('0x5d')]=![];_0x3ebf0b['available']=0x0;_0x3ebf0b[_0x21e8('0x5e')]=0x0;_0x3ebf0b[_0x21e8('0x4e')]='NOT_ACTIVE';ut[_0x21e8('0x5f')](_0x21e8('0x60'),_0x3ebf0b[_0x21e8('0x2a')]+_0x21e8('0x61'));}else{_0x3ebf0b[_0x21e8('0x4e')]='DEACTIVATED';ut['logger'](_0x21e8('0x60'),_0x3ebf0b[_0x21e8('0x2a')]+_0x21e8('0x62'));}emitCampaignPreview(_0x3ebf0b);}}Preview[_0x21e8('0x10')][_0x21e8('0x26')]=function(){var _0x2a5b32=this;setInterval(function(){_0x2a5b32[_0x21e8('0x63')]();},0x7cf);};Preview['prototype'][_0x21e8('0x63')]=function(){var _0x5af28d=this[_0x21e8('0x27')];this[_0x21e8('0x18')]+=0x1;for(var _0x1aee55 in _0x5af28d){if(_0x5af28d[_0x21e8('0x64')](_0x1aee55)&&(_0x5af28d[_0x1aee55][_0x21e8('0x36')]===_0x21e8('0x7')||_0x5af28d[_0x1aee55][_0x21e8('0x36')]===_0x21e8('0x65'))&&_0x5af28d[_0x1aee55][_0x21e8('0x29')]===_0x21e8('0x66')){if(this['clockClearZombieChannels']>0x7){this[_0x21e8('0x18')]=0x0;this[_0x21e8('0x67')]();}}if(_0x5af28d[_0x21e8('0x64')](_0x1aee55)&&_0x5af28d[_0x1aee55]['dialMethod']===_0x21e8('0x7')&&_0x5af28d[_0x1aee55][_0x21e8('0x29')]===_0x21e8('0x66')){if(_0x5af28d[_0x1aee55]['dialActive']){this['setMessage'](_0x5af28d[_0x1aee55]);if(_0x5af28d[_0x1aee55][_0x21e8('0x68')])this['recallMe'](_0x5af28d[_0x1aee55]);}else{notSendMessagesQueue(_0x5af28d[_0x1aee55]);}}}};Preview['prototype']['clearZombieChannel']=function(_0x1ea974){var _0x380a6a=this;this[_0x21e8('0x13')][_0x21e8('0x11')](function(){if(!_[_0x21e8('0x69')](_0x380a6a[_0x21e8('0x16')][_0x1ea974])){loggerAction[_0x21e8('0x5a')](_0x21e8('0x6a'),_0x1ea974,_0x21e8('0x6b'),_0x380a6a['actions'][_0x1ea974][_0x21e8('0x6c')],_0x21e8('0x6d'),JSON[_0x21e8('0x56')](_0x380a6a[_0x21e8('0x27')][_0x380a6a['actions'][_0x1ea974][_0x21e8('0x6c')]]['originated']),_0x21e8('0x6e'),JSON[_0x21e8('0x56')](_0x380a6a['campaignsPreview'][_0x380a6a[_0x21e8('0x16')][_0x1ea974][_0x21e8('0x6c')]][_0x21e8('0x2e')]),JSON['stringify'](_0x380a6a['actions'][_0x1ea974][_0x21e8('0x6f')]),JSON[_0x21e8('0x56')](_[_0x21e8('0x70')](_0x380a6a[_0x21e8('0x16')][_0x1ea974],['contactId','UserId','VoiceQueueId',_0x21e8('0x71')])));return ami[_0x21e8('0x72')]({'action':'status','channel':_0x380a6a[_0x21e8('0x16')][_0x1ea974][_0x21e8('0x73')]})[_0x21e8('0x74')](function(_0x33958e){if(_0x33958e[_0x21e8('0x4e')]===_0x21e8('0x75')){setTimeout(function(){if(_0x380a6a['actions'][_0x1ea974]){ut[_0x21e8('0x76')](_0x380a6a[_0x21e8('0x27')][_0x380a6a[_0x21e8('0x16')][_0x1ea974][_0x21e8('0x6c')]],'[clearZombieChannel]');if(_0x380a6a['actions'][_0x1ea974][_0x21e8('0x6f')]===!![]){ut['decrementTalkink'](_0x380a6a[_0x21e8('0x27')][_0x380a6a[_0x21e8('0x16')][_0x1ea974][_0x21e8('0x6c')]],_0x21e8('0x77'));ut[_0x21e8('0x78')](_0x21e8('0x79')+_0x1ea974,_0x380a6a['actions'][_0x1ea974]['queue']);}ut['loggerError']('[Dialer][checkChannel][Preview]'+_0x1ea974,_0x380a6a[_0x21e8('0x16')][_0x1ea974][_0x21e8('0x6c')]);delete _0x380a6a[_0x21e8('0x16')][_0x1ea974];}},0x2328);}});}});};Preview[_0x21e8('0x10')][_0x21e8('0x67')]=function(){var _0x56d2e3=this;loggerAction['info'](_0x21e8('0x7a'),_[_0x21e8('0x7b')](this[_0x21e8('0x16')]));for(var _0x27ac9f in this['actions']){if(_0x56d2e3[_0x21e8('0x16')][_0x21e8('0x64')](_0x27ac9f)){_0x56d2e3[_0x21e8('0x7c')](_0x27ac9f);}}};Preview[_0x21e8('0x10')][_0x21e8('0x7d')]=function(_0x10dbe0){var _0x5c4f55=this;rpcDb[_0x21e8('0x7e')](_0x10dbe0['id'],ut[_0x21e8('0x7f')](this[_0x21e8('0x17')]))['then'](function(_0x17c532){if(!_[_0x21e8('0x69')](_0x17c532)){for(var _0x47979c=0x0;_0x47979c<_0x17c532[_0x21e8('0x80')];_0x47979c+=0x1){if(ut['getDiff'](_0x17c532[_0x47979c]['scheduledat'])<_0x10dbe0[_0x21e8('0x81')]*0x3c){if(_0x17c532[_0x47979c][_0x21e8('0x82')]&&!_0x17c532[_0x47979c][_0x21e8('0x82')][_0x21e8('0x83')]){_0x5c4f55[_0x21e8('0x84')](_0x17c532[_0x47979c]['id'])[_0x21e8('0x85')](ut[_0x21e8('0x86')](_0x21e8('0x87')))[_0x21e8('0x74')](ut[_0x21e8('0x86')]('[RecallMe]'));}else{rpcDb[_0x21e8('0x88')](_0x17c532[_0x47979c]['id']);}}else{var _0x308eeb=new Action(_0x17c532[_0x47979c],_0x10dbe0);_0x308eeb['starttime']=moment()['format'](_0x21e8('0x89'));_0x10dbe0[_0x21e8('0x43')]+=0x1;ut[_0x21e8('0x8a')](_0x308eeb,0x17,_0x21e8('0x8b'));if(_0x10dbe0[_0x21e8('0x8c')]){rpcDb[_0x21e8('0x8d')](ut[_0x21e8('0x8e')](_0x17c532[_0x47979c]));rpcDb[_0x21e8('0x8f')](_0x308eeb,'[HistoryDialRecallInQueue][historyCatch]');}else{ut[_0x21e8('0x8a')](_0x308eeb,0x16,_0x21e8('0x90'));rpcDb[_0x21e8('0x8f')](_0x308eeb,_0x21e8('0x91'));rpcDb[_0x21e8('0x92')](_0x308eeb,_0x21e8('0x91'));}}}}})[_0x21e8('0x74')](ut['logger2'](_0x21e8('0x93')));};Preview[_0x21e8('0x10')][_0x21e8('0x94')]=function(_0x337a75){_0x337a75['sendMessageOneNotActive']=!![];if(ut['IsNotLoggedIn'](_0x337a75[_0x21e8('0x2d')])){_0x337a75[_0x21e8('0x4e')]=_0x21e8('0x95');}else if(!ut[_0x21e8('0x96')](_0x337a75[_0x21e8('0x97')])){_0x337a75[_0x21e8('0x4e')]=_0x21e8('0x98');}else if(!this[_0x21e8('0x99')](_0x337a75['Trunk'])){if(!this[_0x21e8('0x99')](_0x337a75[_0x21e8('0x9a')])){_0x337a75['message']=_0x21e8('0x9b');}else{_0x337a75[_0x21e8('0x4e')]='ACTIVE';}}else{_0x337a75[_0x21e8('0x4e')]=_0x21e8('0x9c');}emitCampaignPreview(_0x337a75);};Preview[_0x21e8('0x10')][_0x21e8('0x9d')]=function(_0x21e861,_0xcba86a,_0x394a79){var _0x1a8e20=this;var _0x2c6733=this[_0x21e8('0x16')][_0xcba86a];var _0x438893=this[_0x21e8('0x27')][_0x2c6733[_0x21e8('0x6c')]];var _0x30730a;var _0x590a9f=![];var _0x12b1af=0x2;var _0x2ca022=0x3;if(_0x438893){switch(_0x394a79){case'1':_0x438893['outboundNoSuchCallsDay']+=0x1;_0x2c6733[_0x21e8('0x9e')]+=0x1;_0x2c6733[_0x21e8('0x9f')]=ut['totalGlobal'](_0x2c6733);ut[_0x21e8('0x8a')](_0x2c6733,0x0,_0x21e8('0xa0'));ami[_0x21e8('0x28')]('custom:agentnosuchnumber',ut[_0x21e8('0xa1')](_0x2c6733,_0x21e8('0xa2')));rpcDb[_0x21e8('0x8f')](_0x2c6733,_0x21e8('0xa3'));_0x1a8e20['verifyAdditionalPhones'](_0x2c6733,'0',_0x438893)[_0x21e8('0x85')](function(_0x1974fc){_0x590a9f=_0x1974fc[_0x21e8('0xa4')]==0x1;_0x12b1af=_0x438893['dialNoSuchNumberRetryFrequency'];_0x2ca022=_0x438893[_0x21e8('0xa5')];if(!_0x590a9f){if(ut[_0x21e8('0xa6')](_0x2c6733)>=_0x438893[_0x21e8('0xa7')]){_0x30730a=ut[_0x21e8('0xa8')](_0x2c6733,0xf,_0x21e8('0xa9'));rpcDb['createCustomerFinal'](_0x30730a,_0x21e8('0xaa'));}else{if(_0x2c6733[_0x21e8('0x9e')]>=_0x438893['dialNoSuchNumberMaxRetry']){rpcDb['createCustomerFinal'](_0x2c6733,_0x21e8('0xaa'));}else{rpcDb[_0x21e8('0xab')](ut[_0x21e8('0xac')](_0x2c6733,_0x21e8('0x9e'),_0x438893[_0x21e8('0xad')]),_0x2c6733['unlockAgent'],_0x2c6733[_0x21e8('0xae')]);}}delete this[_0x21e8('0x16')][_0x21e861['linkedid']];}else{_0x2c6733[_0x21e8('0x9e')]++;logger[_0x21e8('0x5a')](_0x21e8('0xaf'),_0x2c6733[_0x21e8('0x9e')]);logger['info']('id',_0x2c6733[_0x21e8('0xb0')]);_0x1a8e20[_0x21e8('0xb1')]({'id':_0x2c6733[_0x21e8('0xb0')],'field':{'countnosuchnumberretry':_0x2c6733[_0x21e8('0x9e')]}})[_0x21e8('0x85')](function(){_0x1a8e20['swapAdditionalPhones'](_0x2c6733,_0x12b1af,_0x2ca022)['then'](function(){});});}});break;case _0x21e8('0xb2'):var _0x2559ea=moment()[_0x21e8('0x57')](_0x21e8('0x89'));_0x2c6733['responsetime']=_0x2559ea;_0x2c6733['answertime']=_0x2559ea;_0x2c6733[_0x21e8('0x6f')]=!![];_0x438893[_0x21e8('0x2e')]+=0x1;logger[_0x21e8('0x5a')](_0x21e8('0xb3'),_0x2c6733[_0x21e8('0xb4')],_0x21e8('0xb5'),_0x438893['name'],'pTalking:\x20',_0x438893[_0x21e8('0x2e')]);ami[_0x21e8('0x28')](_0x21e8('0xb6'),ut[_0x21e8('0xa1')](_0x2c6733,_0x21e8('0xb7'),this[_0x21e8('0x27')][_0x2c6733['queue']]));if(_0x438893['acw']){ami[_0x21e8('0x28')](_0x21e8('0xb8'),ut[_0x21e8('0xb9')](_0x2c6733));}break;case'16':ami[_0x21e8('0x28')](_0x21e8('0xba'),ut[_0x21e8('0xa1')](_0x2c6733,_0x21e8('0xbb'),this[_0x21e8('0x27')][_0x2c6733['queue']]));emitVoiceQueueChannelRemove(ut[_0x21e8('0xa1')](_0x2c6733,'complete'));_0x438893[_0x21e8('0x3a')]+=0x1;_0x438893[_0x21e8('0xbc')]+=0x1;_0x438893[_0x21e8('0x2b')]+=0x1;ut[_0x21e8('0xbd')](_0x438893,_0x21e8('0xbe'));_0x2c6733[_0x21e8('0x9f')]=ut[_0x21e8('0xa6')](_0x2c6733);ut['logCustomer'](_0x2c6733,0x4,_0x21e8('0xbf'));rpcDb[_0x21e8('0x8f')](_0x2c6733,'[callProgressDetectingCustomer][logAnswer]');rpcDb['createCustomerFinal'](_0x2c6733,_0x21e8('0xc0'));rpcDb[_0x21e8('0xc1')](_0x2c6733);_0x438893[_0x21e8('0x30')]+=_0x2c6733['talktime'];_0x438893[_0x21e8('0x2f')]+=_0x2c6733[_0x21e8('0xc2')];logger['info'](_0x21e8('0xc3'),_0x2c6733[_0x21e8('0xb4')],_0x21e8('0xb5'),_0x438893['name'],_0x21e8('0x6e'),_0x438893[_0x21e8('0x2e')]);delete this['actions'][_0x21e861[_0x21e8('0xc4')]];break;case _0x21e8('0xc5'):_0x438893[_0x21e8('0x3c')]+=0x1;_0x2c6733['countbusyretry']+=0x1;_0x2c6733[_0x21e8('0x9f')]=ut['totalGlobal'](_0x2c6733);ut['logCustomer'](_0x2c6733,0x5,_0x21e8('0xc6'));_0x12b1af=_0x438893[_0x21e8('0xc7')];_0x2ca022=_0x438893['callAdditionalPhoneAfterMin'];ami[_0x21e8('0x28')]('custom:agentbusy',ut['buildObj'](_0x2c6733,_0x21e8('0xc8')));rpcDb['createCustomerHistory'](_0x2c6733,_0x21e8('0xc9'));_0x1a8e20[_0x21e8('0xca')](_0x2c6733,'5',_0x438893)['then'](function(_0x742181){_0x590a9f=_0x742181[_0x21e8('0xa4')]==0x1;if(!_0x590a9f){if(ut['totalGlobal'](_0x2c6733)>=_0x438893[_0x21e8('0xa7')]){_0x30730a=ut['cloneAction'](_0x2c6733,0xf,_0x21e8('0xa9'));rpcDb[_0x21e8('0x92')](_0x30730a,_0x21e8('0xcb'));}else{if(_0x2c6733[_0x21e8('0xcc')]>=_0x438893['dialBusyMaxRetry']){rpcDb[_0x21e8('0x92')](_0x2c6733,_0x21e8('0xc9'));}else{rpcDb['rescheduleContact'](ut['scheduledAt'](_0x2c6733,_0x21e8('0xcc'),_0x438893['dialBusyRetryFrequency']),_0x2c6733[_0x21e8('0xcd')],_0x2c6733[_0x21e8('0xae')]);}}}else{_0x2c6733[_0x21e8('0xcc')]++;_0x1a8e20[_0x21e8('0xb1')]({'id':_0x2c6733[_0x21e8('0xb0')],'field':{'countbusyretry':_0x2c6733[_0x21e8('0xcc')]}})[_0x21e8('0x85')](function(){_0x1a8e20[_0x21e8('0xce')](_0x2c6733,_0x12b1af,_0x2ca022)['then'](function(){});});}});break;case _0x21e8('0xcf'):_0x438893[_0x21e8('0x40')]+=0x1;_0x2c6733[_0x21e8('0xd0')]+=0x1;_0x2c6733[_0x21e8('0x9f')]=ut[_0x21e8('0xa6')](_0x2c6733);ut['logCustomer'](_0x2c6733,0x3,_0x21e8('0xd1'));_0x12b1af=_0x438893[_0x21e8('0xd2')];_0x2ca022=_0x438893[_0x21e8('0xa5')];var _0x5c5542=ut['buildNoAnswerEventPayload'](_0x2c6733,_0x438893);ami['emit'](_0x21e8('0xd3'),_0x5c5542);rpcDb[_0x21e8('0x8f')](_0x2c6733,'[callProgressDetectingCustomer][logNoAnswer]');_0x1a8e20[_0x21e8('0xca')](_0x2c6733,'3',_0x438893)[_0x21e8('0x85')](function(_0x42e966){_0x590a9f=_0x42e966[_0x21e8('0xa4')]==0x1;if(!_0x590a9f){if(ut['totalGlobal'](_0x2c6733)>=_0x438893['dialGlobalMaxRetry']){_0x30730a=ut[_0x21e8('0xa8')](_0x2c6733,0xf,_0x21e8('0xa9'));rpcDb[_0x21e8('0x92')](_0x30730a,_0x21e8('0xd4'));}else{if(_0x2c6733['countnoanswerretry']>=_0x438893['dialNoAnswerMaxRetry']){rpcDb[_0x21e8('0x92')](_0x2c6733,_0x21e8('0xd5'));}else{rpcDb[_0x21e8('0xab')](ut['scheduledAt'](_0x2c6733,'countnoanswerretry',_0x438893['dialNoAnswerRetryFrequency']),_0x2c6733[_0x21e8('0xcd')],_0x2c6733[_0x21e8('0xae')]);}}}else{_0x2c6733[_0x21e8('0xd0')]++;_0x1a8e20[_0x21e8('0xb1')]({'id':_0x2c6733[_0x21e8('0xb0')],'field':{'countnoanswerretry':_0x2c6733[_0x21e8('0xd0')]}})[_0x21e8('0x85')](function(){_0x1a8e20[_0x21e8('0xce')](_0x2c6733,_0x12b1af,_0x2ca022)[_0x21e8('0x85')](function(){});});}});break;case _0x21e8('0xd6'):_0x438893['outboundCongestionCallsDay']+=0x1;_0x2c6733[_0x21e8('0xd7')]+=0x1;_0x2c6733[_0x21e8('0x9f')]=ut[_0x21e8('0xa6')](_0x2c6733);ut[_0x21e8('0x8a')](_0x2c6733,0x8,_0x21e8('0xd8'));_0x12b1af=_0x438893[_0x21e8('0xd9')];_0x2ca022=_0x438893['callAdditionalPhoneAfterMin'];ami[_0x21e8('0x28')](_0x21e8('0xda'),ut[_0x21e8('0xa1')](_0x2c6733,_0x21e8('0xdb')));rpcDb['createCustomerHistory'](_0x2c6733,_0x21e8('0xdc'));_0x1a8e20[_0x21e8('0xca')](_0x2c6733,'8',_0x438893)[_0x21e8('0x85')](function(_0x1b092f){_0x590a9f=_0x1b092f['additional']==0x1;if(!_0x590a9f){if(ut[_0x21e8('0xa6')](_0x2c6733)>=_0x438893[_0x21e8('0xa7')]){_0x30730a=ut['cloneAction'](_0x2c6733,0xf,'Global');rpcDb[_0x21e8('0x92')](_0x30730a,'[callProgressDetectingCustomer][logCongestionGlobal]');}else{if(_0x2c6733[_0x21e8('0xd7')]>=_0x438893[_0x21e8('0xdd')]){rpcDb['createCustomerFinal'](_0x2c6733,_0x21e8('0xdc'));}else{rpcDb[_0x21e8('0xab')](ut['scheduledAt'](_0x2c6733,_0x21e8('0xd7'),_0x438893['dialBusyRetryFrequency']),_0x2c6733[_0x21e8('0xcd')],_0x2c6733[_0x21e8('0xae')]);}}}else{_0x2c6733[_0x21e8('0xd7')]++;_0x1a8e20['incrementPreviewCounters']({'id':_0x2c6733[_0x21e8('0xb0')],'field':{'countcongestionretry':_0x2c6733[_0x21e8('0xd7')]}})[_0x21e8('0x85')](function(){_0x1a8e20['swapAdditionalPhones'](_0x2c6733,_0x12b1af,_0x2ca022)[_0x21e8('0x85')](function(){});});}});break;case'CANCEL':_0x438893[_0x21e8('0x44')]+=0x1;_0x2c6733[_0x21e8('0xde')]+=0x1;_0x2c6733[_0x21e8('0x9f')]=ut['totalGlobal'](_0x2c6733);ut[_0x21e8('0x8a')](_0x2c6733,0x14,_0x21e8('0xdf'));_0x12b1af=_0x438893[_0x21e8('0xe0')];_0x2ca022=_0x438893['callAdditionalPhoneAfterMin'];ami[_0x21e8('0x28')]('custom:agentreject',ut[_0x21e8('0xa1')](_0x2c6733,_0x21e8('0xe1')));rpcDb['createCustomerHistory'](_0x2c6733,_0x21e8('0xe2'));_0x1a8e20['verifyAdditionalPhones'](_0x2c6733,'20',_0x438893)['then'](function(_0xf7621a){_0x590a9f=_0xf7621a[_0x21e8('0xa4')]==0x1;if(!_0x590a9f){if(ut[_0x21e8('0xa6')](_0x2c6733)>=_0x438893[_0x21e8('0xa7')]){_0x30730a=ut[_0x21e8('0xa8')](_0x2c6733,0x14,_0x21e8('0xdf'));rpcDb[_0x21e8('0x92')](_0x30730a,'[callProgressDetectingCustomer][logAgentReject]');}else{if(_0x2c6733['countagentrejectretry']>=_0x438893['dialAgentRejectMaxRetry']){rpcDb[_0x21e8('0x92')](_0x2c6733,_0x21e8('0xe3'));}else{rpcDb['rescheduleContact'](ut[_0x21e8('0xac')](_0x2c6733,'countagentrejectretry',_0x438893[_0x21e8('0xe0')]),_0x2c6733[_0x21e8('0xcd')],_0x2c6733[_0x21e8('0xae')]);}}}else{_0x2c6733[_0x21e8('0xd0')]++;_0x1a8e20[_0x21e8('0xb1')]({'id':_0x2c6733[_0x21e8('0xb0')],'field':{'countnoanswerretry':_0x2c6733[_0x21e8('0xd0')]}})[_0x21e8('0x85')](function(){_0x1a8e20['swapAdditionalPhones'](_0x2c6733,_0x12b1af,_0x2ca022)[_0x21e8('0x85')](function(){});});}});break;case _0x21e8('0xe4'):_0x438893['outboundAbandonedCallsDay']+=0x1;_0x2c6733[_0x21e8('0xe5')]+=0x1;_0x2c6733[_0x21e8('0x9f')]=ut['totalGlobal'](_0x2c6733);ut[_0x21e8('0x8a')](_0x2c6733,0xb,_0x21e8('0xe6'));rpcDb['createCustomerHistory'](_0x2c6733,_0x21e8('0xe7'));_0x1a8e20[_0x21e8('0xca')](_0x2c6733,'11',_0x438893)[_0x21e8('0x85')](function(_0x37b76e){_0x590a9f=_0x37b76e[_0x21e8('0xa4')]==0x1;if(!_0x590a9f){if(ut[_0x21e8('0xa6')](_0x2c6733)>=_0x438893[_0x21e8('0xa7')]){_0x30730a=ut[_0x21e8('0xa8')](_0x2c6733,0xf,'Global');rpcDb[_0x21e8('0x92')](_0x30730a,_0x21e8('0xe7'));}else{if(_0x2c6733[_0x21e8('0xe8')]>=_0x438893[_0x21e8('0xe9')]){rpcDb['createCustomerFinal'](_0x2c6733,_0x21e8('0xe7'));}else{rpcDb[_0x21e8('0xab')](ut[_0x21e8('0xac')](_0x2c6733,'countabandonedretry',_0x438893[_0x21e8('0xea')]),_0x2c6733['unlockAgent'],_0x2c6733[_0x21e8('0xae')]);}}}else{_0x2c6733['countnoanswerretry']++;_0x1a8e20[_0x21e8('0xb1')]({'id':_0x2c6733[_0x21e8('0xb0')],'field':{'countnoanswerretry':_0x2c6733[_0x21e8('0xd0')]}})['then'](function(){_0x1a8e20[_0x21e8('0xce')](_0x2c6733,_0x12b1af,_0x2ca022)['then'](function(){});});}});break;case'18':_0x438893[_0x21e8('0x45')]+=0x1;_0x2c6733[_0x21e8('0xeb')]+=0x1;_0x2c6733[_0x21e8('0x9f')]=ut[_0x21e8('0xa6')](_0x2c6733);ut[_0x21e8('0x8a')](_0x2c6733,0x12,_0x21e861[_0x21e8('0xec')]||_0x21e861[_0x21e8('0xed')]);ami['emit'](_0x21e8('0xee'),ut[_0x21e8('0xa1')](_0x2c6733,_0x21e8('0xef')));rpcDb[_0x21e8('0x8f')](_0x2c6733,'[callProgressDetectingCustomer][hangupInAMD]');_0x1a8e20['verifyAdditionalPhones'](_0x2c6733,'18',_0x438893)[_0x21e8('0x85')](function(_0x26df12){_0x590a9f=_0x26df12[_0x21e8('0xa4')]==0x1;if(!_0x590a9f){if(ut['totalGlobal'](_0x2c6733)>=_0x438893[_0x21e8('0xa7')]){_0x30730a=ut[_0x21e8('0xa8')](_0x2c6733,0x12,'Global');rpcDb[_0x21e8('0x92')](_0x30730a,_0x21e8('0xf0'));}else{rpcDb[_0x21e8('0x92')](_0x2c6733,'[callProgressDetectingCustomer][hangupInAMD]');}}else{_0x2c6733['countnoanswerretry']++;_0x1a8e20['incrementPreviewCounters']({'id':_0x2c6733[_0x21e8('0xb0')],'field':{'countnoanswerretry':_0x2c6733[_0x21e8('0xd0')]}})['then'](function(){_0x1a8e20['swapAdditionalPhones'](_0x2c6733,_0x12b1af,_0x2ca022)['then'](function(){});});}});delete this[_0x21e8('0x16')][_0x21e861[_0x21e8('0xc4')]];break;case'19':_0x438893[_0x21e8('0x45')]+=0x1;_0x2c6733['countglobal']=ut['totalGlobal'](_0x2c6733);ut[_0x21e8('0x8a')](_0x2c6733,0x13,_0x21e861[_0x21e8('0xec')]||_0x21e861['dialstatus']);ami['emit'](_0x21e8('0xee'),ut[_0x21e8('0xa1')](_0x2c6733,'amd'));rpcDb[_0x21e8('0x8f')](_0x2c6733,_0x21e8('0xf1'));_0x1a8e20[_0x21e8('0xca')](_0x2c6733,'18',_0x438893)[_0x21e8('0x85')](function(_0x43c61b){_0x590a9f=_0x43c61b[_0x21e8('0xa4')]==0x1;if(!_0x590a9f){if(ut['totalGlobal'](_0x2c6733)>=_0x438893[_0x21e8('0xa7')]){_0x30730a=ut[_0x21e8('0xa8')](_0x2c6733,0xf,_0x21e8('0xa9'));rpcDb[_0x21e8('0x92')](_0x30730a,_0x21e8('0xf1'));}else{rpcDb[_0x21e8('0x92')](_0x2c6733,_0x21e8('0xf1'));}}else{_0x2c6733[_0x21e8('0xd0')]++;_0x1a8e20[_0x21e8('0xb1')]({'id':_0x2c6733[_0x21e8('0xb0')],'field':{'countnoanswerretry':_0x2c6733[_0x21e8('0xd0')]}})[_0x21e8('0x85')](function(){_0x1a8e20[_0x21e8('0xce')](_0x2c6733,_0x12b1af,_0x2ca022)[_0x21e8('0x85')](function(){});});}});delete this[_0x21e8('0x16')][_0x21e861[_0x21e8('0xc4')]];break;default:if(_0x2c6733['dialAnswer']){ut['decrementTalkink'](_0x438893,'[default]');ut[_0x21e8('0x78')]('[Dialer][decrementTalkink][no\x20Hangup][Preview]'+_0x438893[_0x21e8('0x2a')],_0x21e861);}_0x438893['outboundUnknownCallsDay']+=0x1;_0x2c6733['countglobal']=ut[_0x21e8('0xa6')](_0x2c6733);ut['logCustomer'](_0x2c6733,0xc,_0x21e861[_0x21e8('0xec')]||_0x21e861['dialstatus']);_0x12b1af=_0x438893[_0x21e8('0xe0')];_0x2ca022=_0x438893[_0x21e8('0xa5')];rpcDb[_0x21e8('0x8f')](_0x2c6733,_0x21e8('0xf2'));_0x1a8e20[_0x21e8('0xca')](_0x2c6733,'20',_0x438893)[_0x21e8('0x85')](function(_0x1b5028){_0x590a9f=_0x1b5028[_0x21e8('0xa4')]==0x1;if(!_0x590a9f){if(ut[_0x21e8('0xa6')](_0x2c6733)>=_0x438893[_0x21e8('0xa7')]){_0x30730a=ut[_0x21e8('0xa8')](_0x2c6733,0xf,_0x21e8('0xa9'));rpcDb['createCustomerFinal'](_0x30730a,_0x21e8('0xf3'));}else{rpcDb[_0x21e8('0x92')](_0x2c6733,_0x21e8('0xf3'));}delete this[_0x21e8('0x16')][_0x21e861[_0x21e8('0xc4')]];}else{_0x1a8e20[_0x21e8('0xce')](_0x2c6733,_0x12b1af,_0x2ca022)[_0x21e8('0x85')](function(){});}});}if(!(_0x2c6733[_0x21e8('0x6f')]&&_0x394a79==='16')){ut[_0x21e8('0x76')](_0x438893,_0x21e8('0xf4'));logger[_0x21e8('0x5a')]('[originated][decrement][callProgressDetectingCustomer]',_0x2c6733[_0x21e8('0xb4')],_0x21e8('0xb5'),_0x438893[_0x21e8('0x2a')],_0x21e8('0x6d'),_0x438893['originated']);}if(_0x394a79!==_0x21e8('0xb2')){delete this[_0x21e8('0x16')][_0x21e861['linkedid']];delete this[_0x21e8('0x16')][_0x21e861['destlinkedid']];}}};Preview['prototype'][_0x21e8('0xf5')]=function(_0x1aeaf3,_0x2adc54,_0x56b002){if(_['isUndefined'](_0x2adc54)&&_0x21e8('0xf6')!==typeof _0x2adc54){return;}if(_['isUndefined'](_0x56b002)&&_0x21e8('0xf6')!==typeof _0x56b002){return;}switch(_0x56b002[_0x21e8('0xf7')]){case'0':ut[_0x21e8('0xf8')](_0x1aeaf3,0x0,_0x21e8('0xa0'));rpcDb['createAgentHistory'](_0x1aeaf3,_0x21e8('0xf9'));break;case'3':ut[_0x21e8('0xf8')](_0x1aeaf3,0x3,'NoAnswer');rpcDb[_0x21e8('0xfa')](_0x1aeaf3,_0x21e8('0xfb'));break;case'5':ut[_0x21e8('0xf8')](_0x1aeaf3,0x5,'Busy');rpcDb[_0x21e8('0xfa')](_0x1aeaf3,'[callProgressDetectingAgent][logBusy]');break;case'8':ut[_0x21e8('0xf8')](_0x1aeaf3,0x8,_0x21e8('0xd8'));rpcDb[_0x21e8('0xfa')](_0x1aeaf3,'[callProgressDetectingAgent][logCongestion]');break;case'22':ut[_0x21e8('0xf8')](_0x1aeaf3,0x16,_0x21e8('0xfc'));rpcDb['createAgentHistory'](_0x1aeaf3,_0x21e8('0xfd'));break;default:ut[_0x21e8('0xf8')](_0x1aeaf3,0xc,_0x56b002[_0x21e8('0xf7')]);rpcDb[_0x21e8('0xfa')](_0x1aeaf3,_0x21e8('0xfe'));}ut[_0x21e8('0x76')](_0x2adc54,'[callProgressDetectingAgent]');logger[_0x21e8('0x5a')](_0x21e8('0xff'),_0x1aeaf3[_0x21e8('0xb4')],_0x21e8('0xb5'),_0x2adc54[_0x21e8('0x2a')],_0x21e8('0x6d'),_0x2adc54[_0x21e8('0x4f')]);delete this[_0x21e8('0x16')][_0x1aeaf3['uniqueid']];};Preview['prototype'][_0x21e8('0xca')]=function(_0x3bcbde,_0x1ea3e8,_0x3ea12c){return Promise[_0x21e8('0x100')]()['then'](cmHopperAdditionalPhone[_0x21e8('0xca')](_0x3bcbde,_0x1ea3e8,_0x3ea12c))[_0x21e8('0x74')](logger[_0x21e8('0x5a')]('[verifyAdditionalPhone]\x20'));};Preview['prototype']['swapAdditionalPhones']=function(_0x2e9721,_0x7b4761,_0x11b565){return Promise[_0x21e8('0x100')]()[_0x21e8('0x85')](cmHopperAdditionalPhone['swapAdditionalPhones'](_0x2e9721,_0x7b4761,_0x11b565))['catch'](logger[_0x21e8('0x5a')]('[swapAdditionalPhone]\x20'));};Preview[_0x21e8('0x10')][_0x21e8('0xb1')]=function(_0x2b3c02){return Promise['resolve']()[_0x21e8('0x85')](cmHopperAdditionalPhone[_0x21e8('0xb1')](_0x2b3c02))['catch'](logger['info'](_0x21e8('0x101')));};Preview[_0x21e8('0x10')][_0x21e8('0x102')]=function(_0x2cd5fe,_0x4298ca,_0x555717,_0x1f583a,_0x41a829){var _0x166088=this;return new Promise(function(_0x21e480,_0x21524b){if(_[_0x21e8('0x69')](_0x4298ca)||_[_0x21e8('0x69')](_0x4298ca[_0x21e8('0x103')])||_[_0x21e8('0x69')](_0x4298ca[_0x21e8('0x104')])||_['isNil'](_0x4298ca[_0x21e8('0x105')])){_0x21524b(ut[_0x21e8('0x4e')](_0x21e8('0x106'),_0x1f583a,_0x41a829));return;}var _0x34018c=uuid['v4']();var _0x398236=_0x166088[_0x21e8('0x27')][_0x4298ca[_0x21e8('0x6b')]['name']];var _0x40fa95=_0x555717?_0x166088['agents'][_0x555717]['id']:undefined;_0x166088['actions'][_0x34018c]=new Action(_0x4298ca,_0x398236,_0x34018c,_0x555717,_0x40fa95);var _0x44163c=_0x166088[_0x21e8('0x16')][_0x34018c];_0x44163c[_0x21e8('0xcd')]=_0x1f583a;_0x44163c[_0x21e8('0xae')]=_0x41a829;_0x44163c[_0x21e8('0x107')]=_0x555717;if(_[_0x21e8('0x108')](_0x2cd5fe)){_0x166088['execCall'](_0x44163c,_0x398236,_0x4298ca,_0x555717)[_0x21e8('0x85')](function(_0x155ee5){logger['info']('[Preview][execCall][success]','Queue:\x20'+_0x44163c[_0x21e8('0x6c')]+_0x21e8('0x109')+_0x44163c['idContact'],JSON['stringify'](_0x155ee5));ami['emit'](_0x21e8('0x10a'),ut['buildObj'](_0x44163c,_0x21e8('0x10b'),_0x166088['campaignsPreview'][_0x44163c['queue']]));_0x21e480(ut[_0x21e8('0x4e')](_0x21e8('0x10c')));})[_0x21e8('0x74')](function(_0x5963dc){ut[_0x21e8('0x5f')](_0x21e8('0x10d'),_0x5963dc);_0x21524b(ut[_0x21e8('0x4e')]('Call\x20failed',_0x1f583a,_0x41a829));});}else{_0x398236['outboundBlacklistCallsDay']+=0x1;ut[_0x21e8('0x10e')](_0x44163c);rpcDb[_0x21e8('0x10f')](_0x44163c,_0x21e8('0x110'));delete _0x166088[_0x21e8('0x16')][_0x34018c];_0x21524b(ut[_0x21e8('0x4e')](_0x21e8('0x111'),_0x1f583a,_0x41a829));}});};Preview['prototype'][_0x21e8('0x99')]=function(_0x2849a2){return!_['isNil'](_0x2849a2)&&!_[_0x21e8('0x69')](_0x2849a2[_0x21e8('0x2a')])&&!_['isNil'](_0x2849a2[_0x21e8('0x54')])&&_0x2849a2[_0x21e8('0x54')]&&!_[_0x21e8('0x69')](this['trunks'][util['format'](_0x21e8('0x112'),_0x2849a2[_0x21e8('0x2a')])])&&!_['isNil'](this[_0x21e8('0x15')][util[_0x21e8('0x57')](_0x21e8('0x112'),_0x2849a2[_0x21e8('0x2a')])][_0x21e8('0x113')])&&(this[_0x21e8('0x15')][util['format'](_0x21e8('0x112'),_0x2849a2['name'])][_0x21e8('0x113')]===_0x21e8('0x114')||this['trunks'][util['format'](_0x21e8('0x112'),_0x2849a2['name'])][_0x21e8('0x113')]==='unmonitored');};Preview['prototype'][_0x21e8('0x84')]=function(_0x323124,_0x2361ef){return this[_0x21e8('0x115')](_0x323124,_0x2361ef)[_0x21e8('0x85')](function(_0x38fb0c){return _['pick'](_0x38fb0c,[_0x21e8('0x4e')]);})['catch'](function(_0x31b824){if(_0x31b824[_0x21e8('0x116')]){rpcDb[_0x21e8('0x117')](_0x323124);}if(_0x31b824[_0x21e8('0x54')]){rpcDb[_0x21e8('0x88')](_0x323124);}throw _[_0x21e8('0x70')](_0x31b824,[_0x21e8('0x4e')]);});};Preview['prototype'][_0x21e8('0x115')]=function(_0x3616e2,_0xaf353d){var _0x50b85b=this;var _0x1fc642,_0x3734d8;return rpcDb[_0x21e8('0x118')](_0x3616e2)['then'](function(_0x522f06){if(!_[_0x21e8('0x69')](_0x522f06[0x0])){_0x3734d8=_0x522f06[0x0][_0x21e8('0x119')]?![]:!![];_0x1fc642=_0x522f06[0x0][_0x21e8('0x119')]?!![]:![];_0x1fc642=_0xaf353d?!![]:_0x1fc642;}var _0x3004b5=_0x50b85b['validateContact'](_0x522f06);if(_0x3004b5[_0x21e8('0x11a')]){rpcDb[_0x21e8('0x11b')](_[_0x21e8('0x70')](_0x522f06[0x0],[_0x21e8('0x105'),_0x21e8('0x104')]))['then'](function(_0x17c86f){_0x50b85b[_0x21e8('0x102')](_0x17c86f,_0x522f06[0x0],_0xaf353d,_0x3734d8,_0x1fc642)[_0x21e8('0x85')](function(_0x13587b){return _0x13587b;})[_0x21e8('0x74')](function(_0x307472){throw _0x307472;});})[_0x21e8('0x74')](function(_0x586b0e){ut[_0x21e8('0x5f')](_0x21e8('0x11c'),_0x586b0e);throw ut['message'](_0x21e8('0x11d'),_0x3734d8,_0x1fc642);});}else{throw ut[_0x21e8('0x4e')](_0x3004b5[_0x21e8('0x4e')],_0x3734d8,_0x1fc642);}})['catch'](function(_0x25cc9b){ut[_0x21e8('0x5f')](_0x21e8('0x11e'),_0x25cc9b);throw ut['message'](_0x21e8('0x11d'),![],!![]);});};Preview[_0x21e8('0x10')][_0x21e8('0x11f')]=function(_0x3c6e7d){if(_[_0x21e8('0x69')](_0x3c6e7d)||_[_0x21e8('0x108')](_0x3c6e7d)||!_[_0x21e8('0x69')](_0x3c6e7d[0x0][_0x21e8('0x82')])&&_[_0x21e8('0x69')](_0x3c6e7d[0x0][_0x21e8('0x82')][_0x21e8('0x2a')])){ut[_0x21e8('0x5f')]('[Preview][validateContact][Empty\x20Contact]',_0x3c6e7d);return{'isValid':![],'message':_0x21e8('0x120')};}var _0x37470d=this[_0x21e8('0x27')][_0x3c6e7d[0x0][_0x21e8('0x6b')]['name']];_0x37470d[_0x21e8('0x4e')]=_0x21e8('0x9c');if(_['isNil'](_0x37470d)){ut['logger']('[Preview][validateContact][Empty\x20Campaign]',_0x37470d);return{'isValid':![],'message':_0x21e8('0x121')};}if(!this[_0x21e8('0x99')](_0x37470d[_0x21e8('0x53')])){ut[_0x21e8('0x5f')](_0x21e8('0x122'),'campaign\x20Name:\x20'+_0x37470d[_0x21e8('0x2a')]+_0x21e8('0x123'));if(!this['isTrunkReachable'](_0x37470d[_0x21e8('0x9a')])){ut[_0x21e8('0x5f')]('[Preview][validateContact][Trunk\x20not\x20working\x20correctly]',_0x37470d[_0x21e8('0x2a')]+_0x21e8('0x124'));return{'isValid':![],'message':_0x21e8('0x125')};}}if(!ut[_0x21e8('0x96')](_0x37470d[_0x21e8('0x97')])){ut[_0x21e8('0x5f')](_0x21e8('0x126'),_0x37470d['name']+'\x20Not\x20Active');return{'isValid':![],'message':_0x21e8('0x127')+_0x37470d['name']+_0x21e8('0x128')};}return{'isValid':!![],'message':_0x21e8('0x129')};};Preview[_0x21e8('0x10')][_0x21e8('0x12a')]=function(_0x36b1c6,_0x42a1ee,_0x2853b1,_0x4b0f72){var _0xc0222a=this;return new Promise(function(_0x5a4f37,_0x2bfdb6){var _0x40411=_0x36b1c6[_0x21e8('0xb4')];var _0x1eb53c=_0xc0222a[_0x21e8('0x99')](_0x42a1ee['Trunk'])?util['format'](_0x21e8('0x12b'),_0x42a1ee[_0x21e8('0x53')][_0x21e8('0x2a')],_[_0x21e8('0x69')](_0x42a1ee['dialPrefix'])?'':_0x42a1ee[_0x21e8('0x39')][_0x21e8('0x12c')]()||'',_0x42a1ee[_0x21e8('0x12d')]>0x0?_0x2853b1[_0x21e8('0x104')][_0x21e8('0x12e')](_0x42a1ee[_0x21e8('0x12d')]):_0x2853b1[_0x21e8('0x104')]):util[_0x21e8('0x57')](_0x21e8('0x12b'),_['isNil'](_0x42a1ee[_0x21e8('0x9a')])?_0x42a1ee['Trunk']['name']:_0x42a1ee[_0x21e8('0x9a')]['name'],_[_0x21e8('0x69')](_0x42a1ee['dialPrefix'])?'':_0x42a1ee[_0x21e8('0x39')]['trim']()||'',_0x42a1ee['dialCutDigit']>0x0?_0x2853b1[_0x21e8('0x104')]['substring'](_0x42a1ee[_0x21e8('0x12d')]):_0x2853b1[_0x21e8('0x104')]);var _0x236081=_0xc0222a[_0x21e8('0x99')](_0x42a1ee[_0x21e8('0x53')])?ut[_0x21e8('0x12f')](_0x42a1ee['Trunk'][_0x21e8('0x130')],_0x42a1ee['dialOriginateCallerIdName'],_0x42a1ee[_0x21e8('0x131')]>0x0?ut[_0x21e8('0x132')](_0x42a1ee[_0x21e8('0x37')],_0x42a1ee[_0x21e8('0x131')]):_0x42a1ee[_0x21e8('0x37')]):ut['getCallerId'](_[_0x21e8('0x69')](_0x42a1ee[_0x21e8('0x9a')])?_0x42a1ee[_0x21e8('0x53')][_0x21e8('0x130')]:_0x42a1ee[_0x21e8('0x9a')][_0x21e8('0x130')],_0x42a1ee[_0x21e8('0x133')],_0x42a1ee[_0x21e8('0x131')]>0x0?ut[_0x21e8('0x132')](_0x42a1ee[_0x21e8('0x37')],_0x42a1ee['dialRandomLastDigitCallerIdNumber']):_0x42a1ee[_0x21e8('0x37')]);if(_0x236081){_0x36b1c6['originatecalleridname']=ut[_0x21e8('0x134')](_0x236081);_0x36b1c6[_0x21e8('0x135')]=ut[_0x21e8('0x136')](_0x236081);}var _0x4eaec1=ut['addVariables'](_0x42a1ee,_0x2853b1,_0x1eb53c,_0x236081,_0x40411,_0x36b1c6);_['merge'](_0x36b1c6,ut[_0x21e8('0x137')](_0x4eaec1));_0x36b1c6['starttime']=moment()['format'](_0x21e8('0x89'));_0x42a1ee['variables']=_0x4eaec1;ami[_0x21e8('0x72')](ut[_0x21e8('0x138')](_0x36b1c6,_0x42a1ee,_0x4eaec1,_0x36b1c6[_0x21e8('0xae')],_0x4b0f72))[_0x21e8('0x85')](function(_0x487026){_0x42a1ee[_0x21e8('0x4f')]+=0x1;logger['info'](_0x21e8('0x139'),_0x40411,_0x21e8('0xb5'),_0x42a1ee[_0x21e8('0x2a')],_0x21e8('0x6d'),_0x42a1ee[_0x21e8('0x4f')]);_0x5a4f37(_0x487026);})[_0x21e8('0x74')](function(_0x351781){ut[_0x21e8('0xf8')](_0x36b1c6,0xe,'OriginateError');rpcDb[_0x21e8('0xfa')](_0x36b1c6,'[originateFailure][logOriginateFailure]');_0x2bfdb6(_0x351781);});});};Preview[_0x21e8('0x10')][_0x21e8('0x21')]=function(_0x53cd21){if(this[_0x21e8('0x16')][_0x53cd21['linkedid']]){this[_0x21e8('0x16')][_0x53cd21[_0x21e8('0xc4')]][_0x21e8('0x73')]=_0x53cd21[_0x21e8('0x73')];}};Preview['prototype'][_0x21e8('0x19')]=function(_0x39f015){var _0x4b807b=this;var _0x59ceae=this[_0x21e8('0x16')][_0x39f015[_0x21e8('0x13a')]];if(_0x59ceae){if(_0x59ceae[_0x21e8('0x107')]&&this[_0x21e8('0x17')][_0x59ceae[_0x21e8('0x107')]]){ut[_0x21e8('0x13b')](_0x59ceae,this[_0x21e8('0x17')][_0x59ceae[_0x21e8('0x107')]][_0x21e8('0x2a')],this[_0x21e8('0x17')][_0x59ceae['lookAgent']]['id']);}var _0x25c938=_[_0x21e8('0x13c')](_0x59ceae);_0x25c938[_0x21e8('0x13d')]=moment()['format'](_0x21e8('0x89'));var _0x17be4e=_0x4b807b[_0x21e8('0x27')][_0x59ceae[_0x21e8('0x6c')]];if(ut[_0x21e8('0x13e')](_0x39f015[_0x21e8('0x13f')])){if(_0x59ceae[_0x21e8('0xcd')]){rpcDb['unlockContact'](_0x59ceae[_0x21e8('0xb0')]);}if(_0x59ceae[_0x21e8('0xae')]){rpcDb[_0x21e8('0x88')](_0x59ceae['idContact']);}ami[_0x21e8('0x28')]('custom:agentringnoanswer',ut[_0x21e8('0xa1')](_0x59ceae,_0x21e8('0x140'),this['campaignsPreview'][_0x59ceae[_0x21e8('0x6c')]]));this['callProgressDetectingAgent'](_0x25c938,_0x17be4e,_0x39f015);}else{_0x59ceae[_0x21e8('0x141')]=moment()[_0x21e8('0x57')]('YYYY-MM-DD\x20HH:mm:ss');ut[_0x21e8('0xf8')](_0x25c938,0x4,'Answer');rpcDb['createAgentHistory'](_0x25c938,'[callProgressDetectingAgent][logAnswer]');}}};Preview[_0x21e8('0x10')][_0x21e8('0x142')]=function(_0x3067ab){var _0x1e36cb=this[_0x21e8('0x16')][_0x3067ab[_0x21e8('0xc4')]];var _0x12f348;if(_0x1e36cb){_0x12f348=this[_0x21e8('0x27')][_0x1e36cb[_0x21e8('0x6c')]];logger['info']('[syncHangup][talking]',_0x3067ab[_0x21e8('0xc4')],_0x21e8('0xb5'),_0x12f348['name'],_0x21e8('0x6e'),_0x12f348[_0x21e8('0x2e')]);}if(this[_0x21e8('0x16')][_0x3067ab['linkedid']]&&_0x3067ab[_0x21e8('0xc4')]!==_0x3067ab[_0x21e8('0xb4')]){if(_0x3067ab[_0x21e8('0x143')]==='16'&&this[_0x21e8('0x16')][_0x3067ab[_0x21e8('0xc4')]][_0x21e8('0x6f')]){this[_0x21e8('0x9d')](_0x3067ab,_0x3067ab[_0x21e8('0xc4')],_0x3067ab[_0x21e8('0x143')]);}else if(this[_0x21e8('0x16')][_0x3067ab['linkedid']]['dialAnswer']){logger[_0x21e8('0x5a')](_0x21e8('0x144'),_0x3067ab[_0x21e8('0xc4')],_0x3067ab['cause'],_0x21e8('0xb5'),_0x12f348[_0x21e8('0x2a')],_0x21e8('0x6e'),_0x12f348[_0x21e8('0x2e')]);this[_0x21e8('0x9d')](_0x3067ab,_0x3067ab['linkedid'],_0x3067ab[_0x21e8('0x143')]);}}else if(_0x1e36cb&&_[_0x21e8('0x69')](_0x1e36cb[_0x21e8('0x145')])&&_0x12f348[_0x21e8('0x146')]&&_0x3067ab[_0x21e8('0xc4')]===_0x3067ab[_0x21e8('0xb4')]&&_[_0x21e8('0x69')](_0x3067ab[_0x21e8('0xf7')])&&_0x3067ab['cause']==='16'&&_0x3067ab[_0x21e8('0x147')]==='6'&&_[_0x21e8('0x148')](_0x1e36cb[_0x21e8('0x149')])){if(_0x1e36cb[_0x21e8('0xcd')]){rpcDb['unlockContact'](_0x1e36cb[_0x21e8('0xb0')]);}if(_0x1e36cb[_0x21e8('0xae')]){rpcDb['disableContact'](_0x1e36cb[_0x21e8('0xb0')]);}_0x3067ab[_0x21e8('0xf7')]='22';this[_0x21e8('0xf5')](_0x1e36cb,_0x12f348,_0x3067ab);}else if(_0x1e36cb&&_0x1e36cb[_0x21e8('0x149')]){if(_0x3067ab['cause']==='16'&&this['actions'][_0x3067ab['linkedid']][_0x21e8('0x6f')]){logger[_0x21e8('0x5a')](_0x21e8('0x14a'),_0x3067ab[_0x21e8('0xc4')],_0x3067ab[_0x21e8('0x143')],_0x21e8('0xb5'),_0x12f348['name'],'pTalking:\x20',_0x12f348['pTalking']);this[_0x21e8('0x9d')](_0x3067ab,_0x3067ab['linkedid'],_0x3067ab['cause']);}else if(this['actions'][_0x3067ab['linkedid']][_0x21e8('0x6f')]){logger['info']('[syncHangup][talking][cause]',_0x3067ab[_0x21e8('0xc4')],_0x3067ab[_0x21e8('0x143')],_0x21e8('0xb5'),_0x12f348[_0x21e8('0x2a')],_0x21e8('0x6e'),_0x12f348['pTalking']);this['callProgressDetectingCustomer'](_0x3067ab,_0x3067ab[_0x21e8('0xc4')],_0x3067ab[_0x21e8('0x143')]);}}};Preview[_0x21e8('0x10')][_0x21e8('0x1f')]=function(_0x3f5fc7){if(this['actions'][_0x3f5fc7[_0x21e8('0x14b')]]&&_0x3f5fc7['destlinkedid']!==_0x3f5fc7[_0x21e8('0x14c')]){this[_0x21e8('0x9d')](_0x3f5fc7,_0x3f5fc7[_0x21e8('0x14b')],_0x3f5fc7[_0x21e8('0xed')]);}};Preview[_0x21e8('0x10')][_0x21e8('0x1d')]=function(_0x3d96c0){if(this[_0x21e8('0x16')][_0x3d96c0[_0x21e8('0xc4')]]&&_0x3d96c0[_0x21e8('0xc4')]!==_0x3d96c0[_0x21e8('0xb4')]&&!this[_0x21e8('0x16')][_0x3d96c0[_0x21e8('0xc4')]][_0x21e8('0x6f')]){if(_0x3d96c0['cause']==='1'){this[_0x21e8('0x9d')](_0x3d96c0,_0x3d96c0[_0x21e8('0xc4')],_0x3d96c0[_0x21e8('0x143')]);}}};Preview[_0x21e8('0x10')]['addVariable']=function(_0x42b521,_0xbea2cf,_0x418202){if(this[_0x21e8('0x16')][_0x42b521]){if(_['isNil'](this['actions'][_0x42b521][_0x21e8('0x14d')])){this[_0x21e8('0x16')][_0x42b521][_0x21e8('0x14d')]={};}this[_0x21e8('0x16')][_0x42b521][_0x21e8('0x14d')][_0xbea2cf]=_0x418202;}};Preview[_0x21e8('0x10')][_0x21e8('0x22')]=function(_0x3c049f){try{if(!_[_0x21e8('0x69')](_0x3c049f)){if(ut['filterKey'](_['keys'](_0x3c049f['variable'])[0x0])){this[_0x21e8('0x14e')](_0x3c049f['uniqueid'],_[_0x21e8('0x14f')](_0x3c049f[_0x21e8('0x150')])[0x0],_0x3c049f['value']);}}}catch(_0x1eb700){logger['error'](_0x21e8('0x151'),util[_0x21e8('0x152')](_0x1eb700,{'showHidden':![],'depth':null}));}};Preview['prototype'][_0x21e8('0x23')]=function(_0x33277f){if(_0x33277f){if(this['actions'][_0x33277f[_0x21e8('0x153')]]){this[_0x21e8('0x16')][_0x33277f[_0x21e8('0x153')]][_0x21e8('0x149')]=!![];}}};Preview['prototype'][_0x21e8('0x25')]=function(_0xfe5138){if(_0xfe5138){if(this[_0x21e8('0x16')][_0xfe5138[_0x21e8('0x154')]]){this[_0x21e8('0x16')][_0xfe5138[_0x21e8('0x154')]][_0x21e8('0x149')]=!![];}}};module[_0x21e8('0x155')]=Preview;
\ No newline at end of file
index c8d307e..e9b78fc 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0x5219=['create','[voiceQueueReport]\x20','getContactRecallMe','[rescheduleContactInQueue]\x20','util','../../../config/logger','lodash','../rpc/cmHopper','../rpc/cmHopperFinal','../rpc/cmHopperBlack','../rpc/voiceQueueRt','../rpc/agentReportPreview','error','resolve','then','createHistory','catch','[createHistory]\x20','moveContactManagedDialer','[moveContactManagedDialer]\x20','checkIsBlackList','getContactPreview','[getContactPreview]\x20','createAgentHistory','createCustomerFinal','rescheduleContact','UserId','active','[rescheduleContact]\x20','countReScheduled','unlockContact','[unlockContact]\x20','disableContact','[activeContact]\x20','type','uniqueid','calleridnum','calleridname','queue','queuecallerjoinAt','queuecallerleaveAt','answertime','queuecallercomplete','queuecallercompleteAt','connectedlinename','membername','context','from-sip','exten','xcally-motion-preview','holdtime','lastAssignedTo','queuecallerexitreason','COMPLETED'];(function(_0x2641f9,_0x26715f){var _0x585741=function(_0x2d1462){while(--_0x2d1462){_0x2641f9['push'](_0x2641f9['shift']());}};_0x585741(++_0x26715f);}(_0x5219,0x112));var _0x9521=function(_0x2d0ea7,_0x27659d){_0x2d0ea7=_0x2d0ea7-0x0;var _0x1796ae=_0x5219[_0x2d0ea7];return _0x1796ae;};'use strict';var util=require(_0x9521('0x0'));var BPromise=require('bluebird');var logger=require(_0x9521('0x1'))('preview');var _=require(_0x9521('0x2'));var cmHopper=require(_0x9521('0x3'));var cmHopperFinal=require(_0x9521('0x4'));var cmHopperHistory=require('../rpc/cmHopperHistory');var cmHopperBlack=require(_0x9521('0x5'));var voiceQueueRt=require(_0x9521('0x6'));var agentReportPreview=require(_0x9521('0x7'));var voiceQueueReport=require('../rpc/voiceQueueReport');function loggerCatch(_0x429b15){return function(_0x7bce0f){logger[_0x9521('0x8')](_0x429b15,util['inspect'](_0x7bce0f,{'showHidden':![],'depth':null}));};}function create(_0x18a02b){return BPromise[_0x9521('0x9')]()[_0x9521('0xa')](cmHopperHistory[_0x9521('0xb')](_0x18a02b))[_0x9521('0xc')](loggerCatch('[createHistory]\x20'));}function createAgent(_0x2936cf){return BPromise['resolve']()[_0x9521('0xa')](agentReportPreview['createHistory'](_0x2936cf))[_0x9521('0xc')](loggerCatch(_0x9521('0xd')));}function moveContact(_0x331a3d){return BPromise['resolve']()['then'](cmHopper[_0x9521('0xe')](_0x331a3d,!![]))['catch'](loggerCatch(_0x9521('0xf')));}exports[_0x9521('0x10')]=function(_0x9ad762){return BPromise['resolve']()[_0x9521('0xa')](cmHopperBlack[_0x9521('0x10')](_0x9ad762))[_0x9521('0xc')](loggerCatch('[checkIsBlackList]\x20'));};exports['getContactPreview']=function(_0x4afa5d){return BPromise['resolve']()[_0x9521('0xa')](cmHopper[_0x9521('0x11')](_0x4afa5d))[_0x9521('0xc')](loggerCatch(_0x9521('0x12')));};exports[_0x9521('0xb')]=function(_0x2c6540,_0x1206a7){create(_0x2c6540)[_0x9521('0xc')](loggerCatch(_0x1206a7));moveContact(_0x2c6540)[_0x9521('0xc')](loggerCatch(_0x1206a7));};exports[_0x9521('0x13')]=function(_0x51cec3,_0x6c4273){createAgent(_0x51cec3)[_0x9521('0xc')](loggerCatch(_0x6c4273));};exports['createCustomerHistory']=function(_0x36826c,_0x3c5ffd){create(_0x36826c)[_0x9521('0xc')](loggerCatch(_0x3c5ffd));};exports[_0x9521('0x14')]=function(_0x318959,_0x3c6114){moveContact(_0x318959)['catch'](loggerCatch(_0x3c6114));};exports[_0x9521('0x15')]=function(_0x57a7ad,_0x301c1f,_0x3d4c59){if(_0x301c1f){_0x57a7ad[_0x9521('0x16')]=null;}if(_0x3d4c59){_0x57a7ad[_0x9521('0x17')]=![];}return BPromise[_0x9521('0x9')]()[_0x9521('0xa')](cmHopper[_0x9521('0x15')](_0x57a7ad))[_0x9521('0xc')](loggerCatch(_0x9521('0x18')));};exports[_0x9521('0x19')]=function(_0x253048){return BPromise['resolve']()[_0x9521('0xa')](cmHopper[_0x9521('0x19')](_0x253048))[_0x9521('0xc')](loggerCatch('[countReScheduled]\x20'));};exports[_0x9521('0x1a')]=function(_0x3e3dec){return BPromise[_0x9521('0x9')]()['then'](cmHopper[_0x9521('0x1a')]({'UserId':null},_0x3e3dec,0x1))[_0x9521('0xc')](loggerCatch(_0x9521('0x1b')));};exports[_0x9521('0x1c')]=function(_0x628f5e){return BPromise[_0x9521('0x9')]()[_0x9521('0xa')](cmHopper[_0x9521('0x1a')]({'active':![]},_0x628f5e,0x1))[_0x9521('0xc')](loggerCatch(_0x9521('0x1d')));};exports['crateCustomerReportQueue']=function(_0x15f845){var _0x307b0f={};_0x307b0f[_0x9521('0x1e')]=_0x15f845['type'];_0x307b0f[_0x9521('0x1f')]=_0x15f845[_0x9521('0x1f')];_0x307b0f[_0x9521('0x20')]=_0x15f845[_0x9521('0x20')];_0x307b0f[_0x9521('0x21')]=_0x15f845[_0x9521('0x21')];_0x307b0f[_0x9521('0x22')]=_0x15f845[_0x9521('0x22')];_0x307b0f[_0x9521('0x23')]=_0x15f845['answertime'];_0x307b0f[_0x9521('0x24')]=_0x15f845[_0x9521('0x25')];_0x307b0f[_0x9521('0x26')]=0x1;_0x307b0f[_0x9521('0x27')]=_0x15f845['endtime'];_0x307b0f[_0x9521('0x28')]=_0x15f845[_0x9521('0x29')];_0x307b0f[_0x9521('0x2a')]=_0x9521('0x2b');_0x307b0f[_0x9521('0x2c')]=_0x9521('0x2d');_0x307b0f[_0x9521('0x2e')]=0x0;_0x307b0f['assigned']=0x1;_0x307b0f[_0x9521('0x2f')]=_0x15f845[_0x9521('0x29')];_0x307b0f[_0x9521('0x30')]=_0x9521('0x31');return BPromise[_0x9521('0x9')]()['then'](voiceQueueReport[_0x9521('0x32')](_0x307b0f))[_0x9521('0xc')](loggerCatch(_0x9521('0x33')));};exports[_0x9521('0x34')]=function(_0x217097,_0x153cb2){return BPromise[_0x9521('0x9')]()[_0x9521('0xa')](cmHopper[_0x9521('0x34')](_0x217097,_0x153cb2))[_0x9521('0xc')](loggerCatch('[GetContactRecallMe]\x20'));};exports['rescheduleContactInQueue']=function(_0x3062d3){return BPromise[_0x9521('0x9')]()[_0x9521('0xa')](cmHopper[_0x9521('0x15')](_0x3062d3,!![],!![]))[_0x9521('0xc')](loggerCatch(_0x9521('0x35')));};
\ No newline at end of file
index 31e2d8f..7b6d77a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0x5303=['xmd-cdrtype','xmd-callerid','rtpaudioqosjitterbridged','rtpaudioqosloss','rtpaudioqosrtt','rtpaudioqosrttbridged','rtpaudioqos','rtpaudioqosbridged','rtpaudioqosjitter','rtpaudioqoslossbridged','bridgepeer','bridgepvtcallid','getCallerIdRandom','\x5cw{0,','pow','replace','random','match','extractCalleridNumber','variables','keys','toLowerCase','buildNoAnswerEventPayload','util','moment','../../../../config/logger','preview','env','127.0.0.1','milliseconds','diff','seconds','loggerCatch','error','inspect','logger','logger2','info','message','getCallerId','string','isEmpty','isUndefined','format','\x22%s\x22\x20<%s>','\x22\x22\x20<>','isActive','isNil','addVariables','Queue','calleridname','ContactId','VoiceQueueId','dialOriginateTimeout','\x22rtTxX%s%s\x22','dialQueueProject2','monitor_format','U(xcally-mixmonitor-context)','dialQueueProject','\x22agi://%s/square,%s\x22','NONE','originatecalleridnum','originatecalleridname','xcally-motion-preview','Call-Type:\x20PREVIEW','_XCALLY_MIXMONITOR_FORMAT','_XCALLY_MIXMONITOR_UNIQUEID','Contact','hasOwnProperty','createdAt','updatedAt','XMD-','toUpper','toLowerVariables','toLower','updateOriginated','originated','[updateOriginated]\x20object\x20originated\x20is\x20negative','state','statedesc','starttime','responsetime','endtime','logAgent','YYYY-MM-DD\x20HH:mm:ss','logLookAgent','logCustomer','ringtime','talktime','isFailure','variablesAction','RECALL','originate','calleridnum','from-sip','timeout','uniqueid','totalGlobal','countcongestionretry','countnoanswerretry','countnosuchnumberretry','cloneAction','scheduledAt','active','add','minutes','ListId','pTalking','[decrementTalkink]\x20object\x20talking\x20is\x20negative','[decrementTalkink]\x20is\x20null\x20or\x20undefined','lastevent','name','queue','interface','channelAgent','motionChannel','mandatoryDisposition','buildObj','agentReadyId','not_inuse','reachable','push','createBody','CampaignId','filterKey','idContact','type','campaigntype','dialAnswer','membername','countbusyretry','countglobal','callback','callbackuniqueid','recallme','UserId','sipcallid','xmd-voicequeueid','xmd-queue','xmd-phone','xmd-listid','xmd-dialurl','xmd-dialoptions','xmd-dialid','xmd-dialchannel'];(function(_0x4a09f4,_0x42323d){var _0x225c9c=function(_0x3b663c){while(--_0x3b663c){_0x4a09f4['push'](_0x4a09f4['shift']());}};_0x225c9c(++_0x42323d);}(_0x5303,0xa8));var _0x3530=function(_0x5798bf,_0x4baae9){_0x5798bf=_0x5798bf-0x0;var _0x5d43ef=_0x5303[_0x5798bf];return _0x5d43ef;};'use strict';var util=require(_0x3530('0x0'));var _=require('lodash');var moment=require(_0x3530('0x1'));var logger=require(_0x3530('0x2'))(_0x3530('0x3'));var ipAgi=process[_0x3530('0x4')]['XCALLY_IP_AGI']||_0x3530('0x5');function getSeconds(_0x17ea30,_0x4dad9e){var _0x1e35a5=moment(_0x17ea30)[_0x3530('0x6')](0x0);var _0x510a9a=moment(_0x4dad9e)[_0x3530('0x6')](0x0);return _0x1e35a5[_0x3530('0x7')](_0x510a9a,_0x3530('0x8'));}exports[_0x3530('0x9')]=function(_0x1c8f2c){return function(_0x5870f3){logger[_0x3530('0xa')](_0x1c8f2c,util[_0x3530('0xb')](_0x5870f3,{'showHidden':![],'depth':null}));};};exports[_0x3530('0xc')]=function(_0x4298a5,_0x9037df){logger['info'](_0x4298a5,util[_0x3530('0xb')](_0x9037df,{'showHidden':![],'depth':null}));};exports['loggerError']=function(_0x1a94f1,_0x1c2c13){logger['error'](_0x1a94f1,util[_0x3530('0xb')](_0x1c2c13,{'showHidden':![],'depth':null}));};exports[_0x3530('0xd')]=function(_0x374ff){return function(_0x3476d5){logger[_0x3530('0xe')](_0x374ff,util[_0x3530('0xb')](_0x3476d5,{'showHidden':![],'depth':null}));};};exports[_0x3530('0xf')]=function(_0x53d172,_0x2776d9,_0x2e2bda){return{'message':_0x53d172,'unlock':_0x2776d9,'active':_0x2e2bda};};exports[_0x3530('0x10')]=function(_0x53ae06,_0x52a028,_0x3b07aa){if(!_['isUndefined'](_0x3b07aa)&&_0x3530('0x11')===typeof _0x3b07aa&&!_[_0x3530('0x12')](_0x3b07aa)){if(!_[_0x3530('0x13')](_0x52a028)&&'string'===typeof _0x52a028&&!_['isEmpty'](_0x52a028)){return util[_0x3530('0x14')]('\x22%s\x22\x20<%s>',_0x52a028,_0x3b07aa);}return util[_0x3530('0x14')](_0x3530('0x15'),_0x3b07aa,_0x3b07aa);}if(!_[_0x3530('0x13')](_0x53ae06)&&'string'===typeof _0x53ae06&&!_[_0x3530('0x12')](_0x53ae06)){return _0x53ae06;}return _0x3530('0x16');};exports[_0x3530('0x17')]=function(_0x411fd1){if(_[_0x3530('0x18')](_0x411fd1)){return![];}return _0x411fd1;};exports[_0x3530('0x19')]=function(_0x5d4b1b,_0x154d0d,_0x216977,_0x166732,_0x3fe04c,_0x37515f){var _0x5dffab={'XMD-QUEUE':_0x154d0d[_0x3530('0x1a')]?_0x154d0d[_0x3530('0x1a')]['name']:'','XMD-CALLERID':_0x166732,'XMD-CALLERID-PREVIEW':_0x37515f?util[_0x3530('0x14')]('\x22%s\x22\x20<%s>',_0x37515f[_0x3530('0x1b')],_0x37515f['calleridnum']):_0x166732,'XMD-DIALID':_0x3fe04c,'XMD-CONTACTID':_0x154d0d[_0x3530('0x1c')],'XMD-CDRTYPE':'dialer','CALLERID(all)':_0x166732,'XMD-VOICEQUEUEID':_0x154d0d[_0x3530('0x1d')],'XMD-DIALCHANNEL':_0x216977,'XMD-DIALTIMEOUT':_0x5d4b1b[_0x3530('0x1e')]||0x1e,'XMD-DIALOPTIONS':util[_0x3530('0x14')](_0x3530('0x1f'),_0x5d4b1b[_0x3530('0x20')]?'g':'',_[_0x3530('0x12')](_0x5d4b1b[_0x3530('0x21')])?'':_0x3530('0x22')),'XMD-DIALURL':_0x5d4b1b['dialPreviewUrl']||'','XMD-AGI':_0x5d4b1b[_0x3530('0x23')]?util['format'](_0x3530('0x24'),ipAgi,_0x5d4b1b[_0x3530('0x23')]):_0x3530('0x25'),'XMD-AGIAFTER':_0x5d4b1b[_0x3530('0x20')]?util[_0x3530('0x14')]('\x22agi://%s/square,%s\x22',ipAgi,_0x5d4b1b[_0x3530('0x20')]):_0x3530('0x25'),'XMD-ORIGINATECALLERIDNUM':_0x37515f?_0x37515f[_0x3530('0x26')]:'','XMD-ORIGINATECALLERIDNAME':_0x37515f?_0x37515f[_0x3530('0x27')]:'','XMD-DESTINATION':_0x3530('0x28'),'SIPADDHEADER':_0x3530('0x29')};if(!_['isEmpty'](_0x5d4b1b[_0x3530('0x21')])){_0x5dffab[util[_0x3530('0x14')]('%s',_0x3530('0x2a'))]=_0x5d4b1b[_0x3530('0x21')];_0x5dffab[util[_0x3530('0x14')]('%s',_0x3530('0x2b'))]=_0x3fe04c;}if(_0x154d0d&&_0x154d0d[_0x3530('0x2c')]){for(var _0x27188c in _0x154d0d[_0x3530('0x2c')]){if(_0x154d0d[_0x3530('0x2c')][_0x3530('0x2d')](_0x27188c)){if(!_[_0x3530('0x18')](_0x154d0d[_0x3530('0x2c')][_0x27188c])&&_0x27188c!=='id'&&_0x27188c!=='tags'&&_0x27188c!==_0x3530('0x2e')&&_0x27188c!==_0x3530('0x2f')){_0x5dffab[util[_0x3530('0x14')]('%s%s',_0x3530('0x30'),_[_0x3530('0x31')](_0x27188c))]=_0x154d0d[_0x3530('0x2c')][_0x27188c];}}}}return _0x5dffab;};exports[_0x3530('0x32')]=function(_0x54003d){var _0x5b1f7c={};for(var _0x145964 in _0x54003d){if(_0x54003d[_0x3530('0x2d')](_0x145964)){_0x5b1f7c[util[_0x3530('0x14')]('%s',_[_0x3530('0x33')](_0x145964))]=_0x54003d[_0x145964];}}return{'variables':_0x5b1f7c};};exports[_0x3530('0x34')]=function(_0x376b80,_0x1ab017){if(!_[_0x3530('0x18')](_0x376b80)){if(_0x376b80['hasOwnProperty'](_0x3530('0x35'))){if(_0x376b80[_0x3530('0x35')]>0x0){_0x376b80[_0x3530('0x35')]-=0x1;}else{logger[_0x3530('0xa')](_0x3530('0x36'),_0x1ab017);}}}else{logger[_0x3530('0xa')]('[updateOriginated]\x20is\x20null\x20or\x20undefined',_0x1ab017);}};exports['logBlacklist']=function(_0xb0e8ee){var _0xd6965e=moment()[_0x3530('0x14')]('YYYY-MM-DD\x20HH:mm:ss');_0xb0e8ee[_0x3530('0x37')]=0xd;_0xb0e8ee[_0x3530('0x38')]='Blacklist';_0xb0e8ee[_0x3530('0x39')]=_0xd6965e;_0xb0e8ee[_0x3530('0x3a')]=_0xd6965e;_0xb0e8ee[_0x3530('0x3b')]=_0xd6965e;};exports[_0x3530('0x3c')]=function(_0x2776c3,_0x3e7e66,_0x176aab){var _0x41c2d2=moment()[_0x3530('0x14')](_0x3530('0x3d'));_0x2776c3['state']=_0x3e7e66;_0x2776c3[_0x3530('0x38')]=_0x176aab;_0x2776c3[_0x3530('0x3a')]=_0x41c2d2;_0x2776c3['ringtime']=getSeconds(_0x2776c3['responsetime'],_0x2776c3[_0x3530('0x39')]);};exports[_0x3530('0x3e')]=function(_0x5d9905,_0x171924,_0x186f36){_0x5d9905['membername']=_0x171924;_0x5d9905['UserId']=_0x186f36;};exports[_0x3530('0x3f')]=function(_0x5f1d64,_0x6a1791,_0x47d172){var _0x48e558=moment()[_0x3530('0x14')]('YYYY-MM-DD\x20HH:mm:ss');_0x5f1d64[_0x3530('0x37')]=_0x6a1791;_0x5f1d64[_0x3530('0x38')]=_0x47d172;_0x5f1d64[_0x3530('0x3a')]=_0x5f1d64['responsetime']?_0x5f1d64[_0x3530('0x3a')]:_0x48e558;_0x5f1d64[_0x3530('0x3b')]=_0x5f1d64[_0x3530('0x3b')]?_0x5f1d64['endtime']:_0x48e558;_0x5f1d64[_0x3530('0x40')]=getSeconds(_0x5f1d64[_0x3530('0x3a')]||0x0,_0x5f1d64[_0x3530('0x39')]||0x0);_0x5f1d64[_0x3530('0x41')]=_0x5f1d64['answertime']?getSeconds(_0x5f1d64['endtime'],_0x5f1d64['answertime']):0x0;};exports[_0x3530('0x42')]=function(_0x2f36e7){return _0x2f36e7==='Failure';};exports[_0x3530('0x43')]=function(_0x47827b,_0x3ccaca,_0xa2320,_0x1ef06b,_0x3a6afa){var _0x2764ef=_0x1ef06b?_0x3530('0x44'):_0x47827b['calleridname'];_0x2764ef=_0x3a6afa?'BOOKED':_0x2764ef;return{'actionid':_0x47827b['uniqueid'],'action':_0x3530('0x45'),'channel':_0x47827b['channelAgent'],'callerid':util[_0x3530('0x14')](_0x3530('0x15'),_0x2764ef,_0x47827b[_0x3530('0x46')]),'Exten':'xcally-motion-preview','Context':_0x3530('0x47'),'Priority':'1','variable':_0xa2320,'timeout':(_0x3ccaca[_0x3530('0x48')]||0x1e)*0x3e8,'async':!![],'channelid':_0x47827b[_0x3530('0x49')]};};exports[_0x3530('0x4a')]=function(_0x50c1e8){return _0x50c1e8['countbusyretry']+_0x50c1e8[_0x3530('0x4b')]+_0x50c1e8[_0x3530('0x4c')]+_0x50c1e8['countagentrejectretry']+_0x50c1e8[_0x3530('0x4d')];};exports[_0x3530('0x4e')]=function(_0x163c4b){var _0x1017e6=_['clone'](_0x163c4b);_0x1017e6['state']=0xf;_0x1017e6[_0x3530('0x38')]='Global';return _0x1017e6;};exports[_0x3530('0x4f')]=function(_0x538159,_0xc51649,_0x2c6261){var _0x1ac5b6={};_0x1ac5b6[_0xc51649]=_0x538159[_0xc51649];_0x1ac5b6[_0x3530('0x50')]=![];_0x1ac5b6['scheduledat']=moment()[_0x3530('0x51')](_0x2c6261,_0x3530('0x52'))['format']('YYYY-MM-DD\x20HH:mm:ss');_0x1ac5b6[_0x3530('0x1c')]=_0x538159[_0x3530('0x1c')];_0x1ac5b6[_0x3530('0x53')]=_0x538159[_0x3530('0x53')];_0x1ac5b6['VoiceQueueId']=_0x538159['VoiceQueueId']||undefined;return _0x1ac5b6;};exports['decrementTalkink']=function(_0x16abc0,_0x510825){if(!_[_0x3530('0x18')](_0x16abc0)){if(_0x16abc0[_0x3530('0x54')]>0x0){_0x16abc0[_0x3530('0x54')]-=0x1;}else{logger[_0x3530('0xa')](_0x510825,_0x3530('0x55'));}}else{logger[_0x3530('0xa')](_0x510825,_0x3530('0x56'));}};exports['IsNotLoggedIn']=function(_0x5da472){if(_0x5da472<=0x0){return!![];}return![];};function buildObj(_0x369dbb,_0x27f0a1,_0x34f922){_0x369dbb[_0x3530('0x57')]=_0x27f0a1;_0x369dbb[_0x3530('0x58')]=_0x369dbb[_0x3530('0x59')];_0x369dbb[_0x3530('0x5a')]=_0x369dbb[_0x3530('0x5b')];_0x369dbb[_0x3530('0x5c')]='voice';if(_0x34f922){_0x369dbb[_0x3530('0x5d')]=_0x34f922[_0x3530('0x5d')];}return _0x369dbb;}exports[_0x3530('0x5e')]=buildObj;exports['buildAcw']=function(_0x5c8344){var _0x169a89={};_0x169a89[_0x3530('0x59')]=_0x5c8344['queue'];_0x169a89['interface']=_0x5c8344[_0x3530('0x5b')];_0x169a89[_0x3530('0x49')]=_0x5c8344[_0x3530('0x49')];return _0x169a89;};exports[_0x3530('0x5f')]=function(_0x550479){var _0x19014f=[];for(var _0x117f06 in _0x550479){if(_0x550479[_0x3530('0x2d')](_0x117f06)){if(!_[_0x3530('0x18')](_0x550479[_0x117f06])&&_0x550479[_0x117f06][_0x3530('0x37')]===_0x3530('0x60')&&_0x550479[_0x117f06]['status']===_0x3530('0x61')){_0x19014f[_0x3530('0x62')](_0x550479[_0x117f06]['id']);}}}return _0x19014f;};exports['getDiff']=function(_0xdc483f){var _0x50571b=moment()['milliseconds'](0x0);var _0x86499b=moment(_0xdc483f)[_0x3530('0x6')](0x0);return _0x50571b[_0x3530('0x7')](_0x86499b,_0x3530('0x8'));};exports[_0x3530('0x63')]=function(_0x3bda9c){return{'active':![],'recallme':![],'UserId':null,'ContactId':_0x3bda9c[_0x3530('0x1c')],'ListId':_0x3bda9c['ListId'],'VoiceQueueId':_0x3bda9c[_0x3530('0x1d')]||undefined,'CampaignId':_0x3bda9c[_0x3530('0x64')]||undefined};};exports[_0x3530('0x65')]=function(_0x4130e3){if(_0x4130e3===_0x3530('0x49')||_0x4130e3===_0x3530('0x66')||_0x4130e3===_0x3530('0x59')||_0x4130e3===_0x3530('0x67')||_0x4130e3===_0x3530('0x68')||_0x4130e3===_0x3530('0x69')||_0x4130e3===_0x3530('0x6a')||_0x4130e3===_0x3530('0x5b')||_0x4130e3===_0x3530('0x1b')||_0x4130e3===_0x3530('0x50')||_0x4130e3===_0x3530('0x46')||_0x4130e3==='scheduledat'||_0x4130e3===_0x3530('0x6b')||_0x4130e3===_0x3530('0x4b')||_0x4130e3===_0x3530('0x4c')||_0x4130e3===_0x3530('0x6c')||_0x4130e3===_0x3530('0x6d')||_0x4130e3===_0x3530('0x6e')||_0x4130e3==='callbackat'||_0x4130e3===_0x3530('0x6f')||_0x4130e3===_0x3530('0x1c')||_0x4130e3===_0x3530('0x53')||_0x4130e3===_0x3530('0x70')||_0x4130e3===_0x3530('0x1d')||_0x4130e3===_0x3530('0x71')||_0x4130e3===_0x3530('0x72')||_0x4130e3===_0x3530('0x73')||_0x4130e3===_0x3530('0x74')||_0x4130e3===_0x3530('0x75')||_0x4130e3===_0x3530('0x76')||_0x4130e3==='xmd-dialtimeout'||_0x4130e3===_0x3530('0x77')||_0x4130e3===_0x3530('0x78')||_0x4130e3===_0x3530('0x79')||_0x4130e3==='xmd-contactid'||_0x4130e3===_0x3530('0x7a')||_0x4130e3===_0x3530('0x7b')||_0x4130e3==='xmd-agiafter'||_0x4130e3==='xmd-agi'||_0x4130e3==='rtpaudioqos'||_0x4130e3==='rtpaudioqosbridged'||_0x4130e3==='rtpaudioqosjitter'||_0x4130e3===_0x3530('0x7c')||_0x4130e3===_0x3530('0x7d')||_0x4130e3==='rtpaudioqoslossbridged'||_0x4130e3===_0x3530('0x7e')||_0x4130e3===_0x3530('0x7f')||_0x4130e3===_0x3530('0x80')||_0x4130e3===_0x3530('0x81')||_0x4130e3===_0x3530('0x82')||_0x4130e3===_0x3530('0x7c')||_0x4130e3==='rtpaudioqosloss'||_0x4130e3===_0x3530('0x83')||_0x4130e3==='rtpaudioqosrtt'||_0x4130e3===_0x3530('0x7f')||_0x4130e3===_0x3530('0x84')||_0x4130e3===_0x3530('0x85')||_0x4130e3===_0x3530('0x37')||_0x4130e3===_0x3530('0x38')){return![];}return!![];};exports[_0x3530('0x86')]=function(_0x3dc445,_0x24b053){var _0x950339,_0x98ed09,_0x270320;if(_0x24b053<=0x0){_0x24b053=0x1;}_0x950339=new RegExp(_0x3530('0x87')+_0x24b053+'}$');_0x98ed09=Math[_0x3530('0x88')](0xa,_0x24b053-0x1);_0x270320=Math[_0x3530('0x88')](0xa,_0x24b053)-0x1;return util['format']('%s',_[_0x3530('0x89')](_0x3dc445,_0x950339,_[_0x3530('0x8a')](_0x98ed09,_0x270320)));};exports['extractCalleridName']=function(_0x37fe1c){var _0x3dea21=_0x37fe1c[_0x3530('0x8b')](/"(.*?)"/);return _0x3dea21?_0x3dea21[0x1]:_0x37fe1c;};exports[_0x3530('0x8c')]=function(_0x2972d1){var _0x37db31=_0x2972d1[_0x3530('0x8b')](/<(.*?)>/);return _0x37db31?_0x37db31[0x1]:_0x2972d1;};function buildNoAnswerEventPayload(_0x43c593,_0x28648d){var _0xa3e5f5=buildObj(_0x43c593,'noanswer');if(!_[_0x3530('0x12')](_0x28648d[_0x3530('0x8d')])){Object[_0x3530('0x8e')](_0x28648d['variables'])['forEach'](function(_0x5d4d56){_0xa3e5f5[_0x5d4d56[_0x3530('0x8f')]()]=_0x28648d['variables'][_0x5d4d56];});}return _0xa3e5f5;}exports[_0x3530('0x90')]=buildNoAnswerEventPayload;
\ No newline at end of file
index abcfde0..27103e2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0x4686=['string','number','queueremove','queuepause','boolean','reload','voicequeuechannelredirect'];(function(_0x2070e6,_0x5401d2){var _0x490c4a=function(_0x2e6ad5){while(--_0x2e6ad5){_0x2070e6['push'](_0x2070e6['shift']());}};_0x490c4a(++_0x5401d2);}(_0x4686,0x7e));var _0x6468=function(_0x31a09a,_0x2d405b){_0x31a09a=_0x31a09a-0x0;var _0xdb330e=_0x4686[_0x31a09a];return _0xdb330e;};'use strict';exports['queueadd']={'queue':{'type':_0x6468('0x0'),'required':!![]},'interface':{'type':_0x6468('0x0'),'required':!![]},'membername':{'type':_0x6468('0x0'),'required':!![]},'penalty':{'type':_0x6468('0x1'),'required':![]},'paused':{'type':'boolean','required':![]}};exports[_0x6468('0x2')]={'queue':{'type':_0x6468('0x0'),'required':!![]},'interface':{'type':_0x6468('0x0'),'required':!![]}};exports[_0x6468('0x3')]={'interface':{'type':_0x6468('0x0'),'required':!![]},'paused':{'type':_0x6468('0x4')},'reason':{'type':'string','required':![]}};exports[_0x6468('0x5')]={'module':{'type':'string','required':![]}};exports['voicequeuechannel']={'uniqueid':{'type':_0x6468('0x0'),'required':!![]}};exports['voicechannel']={'uniqueid':{'type':_0x6468('0x0'),'required':!![]},'filename':{'type':_0x6468('0x0')},'format':{'type':_0x6468('0x0')},'mixmonitorid':{'type':_0x6468('0x0')}};exports['voicequeuechannelhangup']={'uniqueid':{'type':_0x6468('0x0'),'required':!![]}};exports[_0x6468('0x6')]={'uniqueid':{'type':_0x6468('0x0'),'required':!![]},'exten':{'type':_0x6468('0x0'),'required':!![]},'context':{'type':_0x6468('0x0')}};
\ No newline at end of file
index e131408..698b40d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0xc838=['../model/vtigerAccount','../model/dynamics365Account','../model/freshsalesAccount','../model/faxAccount','agents','telephones','trunks','voiceQueues','triggers','campaigns','templates','outbound','channels','timers','zendeskAccounts','salesforceAccounts','sugarcrmAccounts','freshdeskAccounts','zohoAccounts','deskAccounts','vtigerAccounts','servicenowAccounts','dynamics365Accounts','freshsalesAccounts','mapKeys','format','SIP/%s','hasOwnProperty','isNil','name','total','sumHoldTime','sumBillable','isEmpty','answered','unmanaged','sumDuration','outboundAnswerAgiCallsDay','outboundNoAnswerCallsDay','outboundBusyCallsDay','outboundCongestionCallsDay','outboundNoSuchCallsDay','outboundUnknownCallsDay','outboundDropCallsDayCallersExit','outboundBlacklistCallsDay','outboundOriginateFailureCallsDay','outboundRejectCallsDay','outboundReCallsDay','outboundAnswerCallsDay','queueStatusComplete','prototype','mergeFromDatabase','initAgents','length','interface','isUndefined','initTriggers','initZendeskAccounts','initZohoAccounts','initDeskAccounts','initVtigerAccounts','initServicenowAccounts','initFreshsalesAccounts','initVoiceQueueHopperHistory','merge','initVoiceQueueReports','groupBy','uniqueid','queue','queuecallerabandon','abandoned','queuecallerleaveAt','diff','queuecallerjoinAt','queuecallercompleteAt','queuecallerabandonAt','seconds','queuecallercomplete','duration','disposition','dialQueueProject','SquareProject','voiceExtensions','initCampaignHopperHistory','initFaxAccounts','faxAccounts','exports','util','lodash','moment','../model/agent','../model/telephone','../model/trunk','../model/voiceQueue','../model/trigger','../model/template','../model/campaign','../model/voiceExtension','../model/zendeskAccount','../model/salesforceAccount','../model/freshdeskAccount','../model/sugarcrmAccount'];(function(_0x5834bc,_0x3d4801){var _0x3e183a=function(_0x18b023){while(--_0x18b023){_0x5834bc['push'](_0x5834bc['shift']());}};_0x3e183a(++_0x3d4801);}(_0xc838,0xbd));var _0x8c83=function(_0x4ea142,_0x78d234){_0x4ea142=_0x4ea142-0x0;var _0x1de501=_0xc838[_0x4ea142];return _0x1de501;};'use strict';var util=require(_0x8c83('0x0'));var _=require(_0x8c83('0x1'));var moment=require(_0x8c83('0x2'));var Agent=require(_0x8c83('0x3'));var Telephone=require(_0x8c83('0x4'));var Trunk=require(_0x8c83('0x5'));var VoiceQueue=require(_0x8c83('0x6'));var Trigger=require(_0x8c83('0x7'));var Template=require(_0x8c83('0x8'));var Campaign=require(_0x8c83('0x9'));var VoiceExtension=require(_0x8c83('0xa'));var ZendeskAccount=require(_0x8c83('0xb'));var SalesforceAccount=require(_0x8c83('0xc'));var FreshdeskAccount=require(_0x8c83('0xd'));var SugarcrmAccount=require(_0x8c83('0xe'));var ZohoAccount=require('../model/zohoAccount');var DeskAccount=require('../model/deskAccount');var VtigerAccount=require(_0x8c83('0xf'));var ServicenowAccount=require('../model/servicenowAccount');var Dynamics365Account=require(_0x8c83('0x10'));var FreshsalesAccount=require(_0x8c83('0x11'));var FaxAccount=require(_0x8c83('0x12'));var Realtime=function(){this[_0x8c83('0x13')]={};this[_0x8c83('0x14')]={};this[_0x8c83('0x15')]={};this[_0x8c83('0x16')]={};this[_0x8c83('0x17')]={};this[_0x8c83('0x18')]={};this[_0x8c83('0x19')]={};this[_0x8c83('0x1a')]={'total':0x0,'answered':0x0,'sumHoldTime':0x0,'sumDuration':0x0,'sumBillable':0x0};this['voiceExtensions']={};this[_0x8c83('0x1b')]={};this['queueChannels']={};this['outboundChannels']={};this[_0x8c83('0x1c')]={};this['settings']={};this[_0x8c83('0x1d')]={};this[_0x8c83('0x1e')]={};this[_0x8c83('0x1f')]={};this[_0x8c83('0x20')]={};this[_0x8c83('0x21')]={};this[_0x8c83('0x22')]={};this[_0x8c83('0x23')]={};this[_0x8c83('0x24')]={};this[_0x8c83('0x25')]={};this[_0x8c83('0x26')]={};this['faxAccounts']={};};function freeIsNotKey(_0x2b4027,_0x3d82ca,_0x52d916){var _0x593c97=_[_0x8c83('0x27')](_0x2b4027,function(_0x4e3da8,_0x3eada5){return _0x4e3da8[_0x52d916];});for(var _0x535962 in _0x3d82ca){if(_0x3d82ca['hasOwnProperty'](_0x535962)){if(!_0x593c97[_0x535962]){delete _0x3d82ca[_0x535962];}}}}function freeIsNotKeySip(_0x3f4b38,_0x505476){var _0x3b0106=_[_0x8c83('0x27')](_0x3f4b38,function(_0x505c0c,_0x5a2a69){return util[_0x8c83('0x28')](_0x8c83('0x29'),_0x505c0c['name']);});for(var _0x41e629 in _0x505476){if(_0x505476[_0x8c83('0x2a')](_0x41e629)){if(!_0x3b0106[_0x41e629]){delete _0x505476[_0x41e629];}}}}function freeIsNotKeyAgent(_0x4e0b83,_0x34825d){var _0x4cde38=_[_0x8c83('0x27')](_0x4e0b83,function(_0x39b02f,_0x17937e){var _0xf7b089=_[_0x8c83('0x2b')](_0x39b02f['interface'])?util['format'](_0x8c83('0x29'),_0x39b02f[_0x8c83('0x2c')]):_0x39b02f['interface'];return _0xf7b089;});for(var _0x583a89 in _0x34825d){if(_0x34825d[_0x8c83('0x2a')](_0x583a89)){if(!_0x4cde38[_0x583a89]){delete _0x34825d[_0x583a89];}}}}function clearVoiceCallReports(_0xce3514){_0xce3514[_0x8c83('0x2d')]=0x0;_0xce3514['answered']=0x0;_0xce3514[_0x8c83('0x2e')]=0x0;_0xce3514['sumDuration']=0x0;_0xce3514[_0x8c83('0x2f')]=0x0;}function clearCampaigns(_0xc5d97d){if(!_[_0x8c83('0x30')](_0xc5d97d)){for(var _0x1180e1 in _0xc5d97d){if(_0xc5d97d[_0x8c83('0x2a')](_0x1180e1)){_0xc5d97d[_0x1180e1]['ivrTotalCallsDays']=0x0;_0xc5d97d[_0x1180e1]['ivrAnswerCallsDay']=0x0;}}}}function clearVoiceQueues(_0x4d728e){if(!_[_0x8c83('0x30')](_0x4d728e)){for(var _0x14c964 in _0x4d728e){if(_0x4d728e['hasOwnProperty'](_0x14c964)){_0x4d728e[_0x14c964][_0x8c83('0x2d')]=0x0;_0x4d728e[_0x14c964][_0x8c83('0x31')]=0x0;_0x4d728e[_0x14c964][_0x8c83('0x32')]=0x0;_0x4d728e[_0x14c964]['abandoned']=0x0;_0x4d728e[_0x14c964]['sumHoldTime']=0x0;_0x4d728e[_0x14c964][_0x8c83('0x33')]=0x0;_0x4d728e[_0x14c964]['sumBillable']=0x0;_0x4d728e[_0x14c964][_0x8c83('0x34')]=0x0;_0x4d728e[_0x14c964][_0x8c83('0x35')]=0x0;_0x4d728e[_0x14c964][_0x8c83('0x36')]=0x0;_0x4d728e[_0x14c964][_0x8c83('0x37')]=0x0;_0x4d728e[_0x14c964][_0x8c83('0x38')]=0x0;_0x4d728e[_0x14c964][_0x8c83('0x39')]=0x0;_0x4d728e[_0x14c964]['outboundDropCallsDayTimeout']=0x0;_0x4d728e[_0x14c964][_0x8c83('0x3a')]=0x0;_0x4d728e[_0x14c964][_0x8c83('0x3b')]=0x0;_0x4d728e[_0x14c964][_0x8c83('0x3c')]=0x0;_0x4d728e[_0x14c964][_0x8c83('0x3d')]=0x0;_0x4d728e[_0x14c964][_0x8c83('0x3e')]=0x0;_0x4d728e[_0x14c964][_0x8c83('0x34')]=0x0;_0x4d728e[_0x14c964][_0x8c83('0x3f')]=0x0;_0x4d728e[_0x14c964][_0x8c83('0x40')]=!![];}}}}Realtime[_0x8c83('0x41')][_0x8c83('0x42')]=function(_0x5aec21,_0x2524dc){for(var _0x7326cd in _0x2524dc){if(_0x5aec21[_0x8c83('0x2a')](_0x7326cd)){_0x5aec21[_0x7326cd]=_0x2524dc[_0x7326cd];}}};Realtime['prototype'][_0x8c83('0x43')]=function(){var _0x1b5dd7=this;return function(_0x4b45c7){if(_0x4b45c7){freeIsNotKeyAgent(_0x4b45c7,_0x1b5dd7[_0x8c83('0x13')]);for(var _0x2a5223=0x0,_0xfd797d={},_0x30cb61={};_0x2a5223<_0x4b45c7[_0x8c83('0x44')];_0x2a5223+=0x1){_0xfd797d=_0x4b45c7[_0x2a5223];var _0x67fc14=_[_0x8c83('0x2b')](_0xfd797d[_0x8c83('0x45')])?util[_0x8c83('0x28')](_0x8c83('0x29'),_0xfd797d[_0x8c83('0x2c')]):_0xfd797d[_0x8c83('0x45')];if(_['isUndefined'](_0x1b5dd7['agents'][_0x67fc14])){_0x1b5dd7[_0x8c83('0x13')][_0x67fc14]=new Agent(_0xfd797d);}else{_0x1b5dd7[_0x8c83('0x42')](_0x1b5dd7[_0x8c83('0x13')][_0x67fc14],_0xfd797d);}}}return _0x1b5dd7[_0x8c83('0x13')];};};Realtime[_0x8c83('0x41')]['initTelephones']=function(){var _0x571d5f=this;return function(_0x3a200c){if(_0x3a200c){freeIsNotKeySip(_0x3a200c,_0x571d5f[_0x8c83('0x14')]);for(var _0x36ab87=0x0,_0x5e441b={},_0x4d07cc={};_0x36ab87<_0x3a200c['length'];_0x36ab87+=0x1){_0x5e441b=_0x3a200c[_0x36ab87];if(_['isUndefined'](_0x571d5f[_0x8c83('0x14')][util[_0x8c83('0x28')](_0x8c83('0x29'),_0x5e441b[_0x8c83('0x2c')])])){_0x571d5f[_0x8c83('0x14')][util[_0x8c83('0x28')](_0x8c83('0x29'),_0x5e441b[_0x8c83('0x2c')])]=new Telephone(_0x5e441b);}else{_0x571d5f['mergeFromDatabase'](_0x571d5f['telephones'][util[_0x8c83('0x28')](_0x8c83('0x29'),_0x5e441b[_0x8c83('0x2c')])],_0x5e441b);}}}return _0x571d5f['telephones'];};};Realtime[_0x8c83('0x41')]['initTrunks']=function(){var _0x22be68=this;return function(_0x353d21){if(_0x353d21){freeIsNotKeySip(_0x353d21,_0x22be68['trunks']);for(var _0x43e9ca=0x0,_0x5def04={},_0x55de29={};_0x43e9ca<_0x353d21['length'];_0x43e9ca+=0x1){_0x5def04=_0x353d21[_0x43e9ca];if(_[_0x8c83('0x46')](_0x22be68[_0x8c83('0x15')][util[_0x8c83('0x28')](_0x8c83('0x29'),_0x5def04[_0x8c83('0x2c')])])){_0x22be68[_0x8c83('0x15')][util[_0x8c83('0x28')]('SIP/%s',_0x5def04['name'])]=new Trunk(_0x5def04);}else{_0x22be68[_0x8c83('0x42')](_0x22be68[_0x8c83('0x15')][util[_0x8c83('0x28')](_0x8c83('0x29'),_0x5def04[_0x8c83('0x2c')])],_0x5def04);}}}return _0x22be68[_0x8c83('0x15')];};};Realtime[_0x8c83('0x41')]['initVoiceQueues']=function(){var _0x5dcdba=this;return function(_0x2a4c6c){if(_0x2a4c6c){freeIsNotKey(_0x2a4c6c,_0x5dcdba[_0x8c83('0x16')],_0x8c83('0x2c'));for(var _0x432076=0x0,_0x2c11d4={},_0x239651={};_0x432076<_0x2a4c6c[_0x8c83('0x44')];_0x432076+=0x1){_0x2c11d4=_0x2a4c6c[_0x432076];if(_[_0x8c83('0x46')](_0x5dcdba[_0x8c83('0x16')][_0x2c11d4[_0x8c83('0x2c')]])){_0x5dcdba['voiceQueues'][_0x2c11d4['name']]=new VoiceQueue(_0x2c11d4);}else{_0x5dcdba[_0x8c83('0x42')](_0x5dcdba[_0x8c83('0x16')][_0x2c11d4[_0x8c83('0x2c')]],_0x2c11d4);}}}return _0x5dcdba['voiceQueues'];};};Realtime[_0x8c83('0x41')][_0x8c83('0x47')]=function(){var _0x28d8b0=this;return function(_0x53c8f3){if(_0x53c8f3){freeIsNotKey(_0x53c8f3,_0x28d8b0['triggers'],'id');for(var _0x579479=0x0,_0x1e40f8={},_0x501eee={};_0x579479<_0x53c8f3['length'];_0x579479+=0x1){_0x1e40f8=_0x53c8f3[_0x579479];if(_[_0x8c83('0x46')](_0x28d8b0['triggers'][_0x1e40f8['id']])){_0x28d8b0[_0x8c83('0x17')][_0x1e40f8['id']]=new Trigger(_0x1e40f8);}else{_0x28d8b0[_0x8c83('0x42')](_0x28d8b0[_0x8c83('0x17')][_0x1e40f8['id']],_0x1e40f8);}}}return _0x28d8b0[_0x8c83('0x17')];};};Realtime['prototype']['initTemplates']=function(){var _0x2c8853=this;return function(_0x5c2004){if(_0x5c2004){freeIsNotKey(_0x5c2004,_0x2c8853[_0x8c83('0x19')],'id');for(var _0x4aff4a=0x0,_0x2900c1={},_0x5e8cbd={};_0x4aff4a<_0x5c2004[_0x8c83('0x44')];_0x4aff4a+=0x1){_0x2900c1=_0x5c2004[_0x4aff4a];if(_[_0x8c83('0x46')](_0x2c8853[_0x8c83('0x19')][_0x2900c1['id']])){_0x2c8853[_0x8c83('0x19')][_0x2900c1['id']]=new Template(_0x2900c1);}else{_0x2c8853['mergeFromDatabase'](_0x2c8853[_0x8c83('0x19')][_0x2900c1['id']],_0x2900c1);}}}return _0x2c8853['templates'];};};Realtime['prototype'][_0x8c83('0x48')]=function(){var _0x453523=this;return function(_0xb71c33){if(_0xb71c33){freeIsNotKey(_0xb71c33,_0x453523[_0x8c83('0x1d')],'id');for(var _0x5548a2=0x0,_0x1a9019={},_0x3cb313={};_0x5548a2<_0xb71c33[_0x8c83('0x44')];_0x5548a2+=0x1){_0x1a9019=_0xb71c33[_0x5548a2];if(_[_0x8c83('0x46')](_0x453523[_0x8c83('0x1d')][_0x1a9019['id']])){_0x453523[_0x8c83('0x1d')][_0x1a9019['id']]=new ZendeskAccount(_0x1a9019);}else{_0x453523[_0x8c83('0x42')](_0x453523[_0x8c83('0x1d')][_0x1a9019['id']],_0x1a9019);}}}return _0x453523['zendeskAccounts'];};};Realtime[_0x8c83('0x41')]['initSalesforceAccounts']=function(){var _0xbb34f4=this;return function(_0x3193d7){if(_0x3193d7){freeIsNotKey(_0x3193d7,_0xbb34f4['salesforceAccounts'],'id');for(var _0x51b1c8=0x0,_0x184261={},_0x2e6eb5={};_0x51b1c8<_0x3193d7['length'];_0x51b1c8+=0x1){_0x184261=_0x3193d7[_0x51b1c8];if(_['isUndefined'](_0xbb34f4[_0x8c83('0x1e')][_0x184261['id']])){_0xbb34f4[_0x8c83('0x1e')][_0x184261['id']]=new SalesforceAccount(_0x184261);}else{_0xbb34f4['mergeFromDatabase'](_0xbb34f4[_0x8c83('0x1e')][_0x184261['id']],_0x184261);}}}return _0xbb34f4[_0x8c83('0x1e')];};};Realtime[_0x8c83('0x41')]['initFreshdeskAccounts']=function(){var _0x1ef078=this;return function(_0x1f7d36){if(_0x1f7d36){freeIsNotKey(_0x1f7d36,_0x1ef078[_0x8c83('0x20')],'id');for(var _0x5ae9bf=0x0,_0x2453cc={},_0x4382e9={};_0x5ae9bf<_0x1f7d36[_0x8c83('0x44')];_0x5ae9bf+=0x1){_0x2453cc=_0x1f7d36[_0x5ae9bf];if(_[_0x8c83('0x46')](_0x1ef078[_0x8c83('0x20')][_0x2453cc['id']])){_0x1ef078[_0x8c83('0x20')][_0x2453cc['id']]=new FreshdeskAccount(_0x2453cc);}else{_0x1ef078['mergeFromDatabase'](_0x1ef078['freshdeskAccounts'][_0x2453cc['id']],_0x2453cc);}}}return _0x1ef078[_0x8c83('0x20')];};};Realtime[_0x8c83('0x41')][_0x8c83('0x49')]=function(){var _0x3c68c3=this;return function(_0x283de0){if(_0x283de0){freeIsNotKey(_0x283de0,_0x3c68c3[_0x8c83('0x21')],'id');for(var _0x1cda02=0x0,_0x403967={},_0x107112={};_0x1cda02<_0x283de0['length'];_0x1cda02+=0x1){_0x403967=_0x283de0[_0x1cda02];if(_['isUndefined'](_0x3c68c3[_0x8c83('0x21')][_0x403967['id']])){_0x3c68c3[_0x8c83('0x21')][_0x403967['id']]=new ZohoAccount(_0x403967);}else{_0x3c68c3[_0x8c83('0x42')](_0x3c68c3[_0x8c83('0x21')][_0x403967['id']],_0x403967);}}}return _0x3c68c3[_0x8c83('0x21')];};};Realtime[_0x8c83('0x41')][_0x8c83('0x4a')]=function(){var _0x32cc99=this;return function(_0x418c80){if(_0x418c80){freeIsNotKey(_0x418c80,_0x32cc99[_0x8c83('0x22')],'id');for(var _0x5ab5c1=0x0,_0x2f5f5c={},_0x16567e={};_0x5ab5c1<_0x418c80[_0x8c83('0x44')];_0x5ab5c1+=0x1){_0x2f5f5c=_0x418c80[_0x5ab5c1];if(_[_0x8c83('0x46')](_0x32cc99[_0x8c83('0x22')][_0x2f5f5c['id']])){_0x32cc99[_0x8c83('0x22')][_0x2f5f5c['id']]=new DeskAccount(_0x2f5f5c);}else{_0x32cc99[_0x8c83('0x42')](_0x32cc99[_0x8c83('0x22')][_0x2f5f5c['id']],_0x2f5f5c);}}}return _0x32cc99[_0x8c83('0x22')];};};Realtime[_0x8c83('0x41')]['initSugarcrmAccounts']=function(){var _0xc322bd=this;return function(_0x4ad542){if(_0x4ad542){freeIsNotKey(_0x4ad542,_0xc322bd[_0x8c83('0x1f')],'id');for(var _0x11aa71=0x0,_0x3cc45c={},_0x5e2678={};_0x11aa71<_0x4ad542[_0x8c83('0x44')];_0x11aa71+=0x1){_0x3cc45c=_0x4ad542[_0x11aa71];if(_[_0x8c83('0x46')](_0xc322bd['sugarcrmAccounts'][_0x3cc45c['id']])){_0xc322bd['sugarcrmAccounts'][_0x3cc45c['id']]=new SugarcrmAccount(_0x3cc45c);}else{_0xc322bd['mergeFromDatabase'](_0xc322bd[_0x8c83('0x1f')][_0x3cc45c['id']],_0x3cc45c);}}}return _0xc322bd['sugarcrmAccounts'];};};Realtime[_0x8c83('0x41')][_0x8c83('0x4b')]=function(){var _0x48c54d=this;return function(_0x557c31){if(_0x557c31){freeIsNotKey(_0x557c31,_0x48c54d['vtigerAccounts'],'id');for(var _0x4b15d9=0x0,_0x1d3ada={},_0x50bbc0={};_0x4b15d9<_0x557c31['length'];_0x4b15d9+=0x1){_0x1d3ada=_0x557c31[_0x4b15d9];if(_[_0x8c83('0x46')](_0x48c54d[_0x8c83('0x23')][_0x1d3ada['id']])){_0x48c54d['vtigerAccounts'][_0x1d3ada['id']]=new VtigerAccount(_0x1d3ada);}else{_0x48c54d[_0x8c83('0x42')](_0x48c54d[_0x8c83('0x23')][_0x1d3ada['id']],_0x1d3ada);}}}return _0x48c54d[_0x8c83('0x23')];};};Realtime['prototype'][_0x8c83('0x4c')]=function(){var _0x458c4a=this;return function(_0x178887){if(_0x178887){freeIsNotKey(_0x178887,_0x458c4a['servicenowAccounts'],'id');for(var _0x20f67e=0x0,_0x4d6905={},_0x39af25={};_0x20f67e<_0x178887[_0x8c83('0x44')];_0x20f67e+=0x1){_0x4d6905=_0x178887[_0x20f67e];if(_[_0x8c83('0x46')](_0x458c4a[_0x8c83('0x24')][_0x4d6905['id']])){_0x458c4a['servicenowAccounts'][_0x4d6905['id']]=new ServicenowAccount(_0x4d6905);}else{_0x458c4a['mergeFromDatabase'](_0x458c4a[_0x8c83('0x24')][_0x4d6905['id']],_0x4d6905);}}}return _0x458c4a[_0x8c83('0x24')];};};Realtime[_0x8c83('0x41')]['initDynamics365Accounts']=function(){var _0x13eb1c=this;return function(_0x5b3fe4){if(_0x5b3fe4){freeIsNotKey(_0x5b3fe4,_0x13eb1c[_0x8c83('0x25')],'id');for(var _0x3b8ed1=0x0,_0xb9fddc={},_0x9d44f7={};_0x3b8ed1<_0x5b3fe4[_0x8c83('0x44')];_0x3b8ed1+=0x1){_0xb9fddc=_0x5b3fe4[_0x3b8ed1];if(_['isUndefined'](_0x13eb1c[_0x8c83('0x25')][_0xb9fddc['id']])){_0x13eb1c[_0x8c83('0x25')][_0xb9fddc['id']]=new Dynamics365Account(_0xb9fddc);}else{_0x13eb1c[_0x8c83('0x42')](_0x13eb1c['dynamics365Accounts'][_0xb9fddc['id']],_0xb9fddc);}}}return _0x13eb1c['dynamics365Accounts'];};};Realtime[_0x8c83('0x41')][_0x8c83('0x4d')]=function(){var _0x59b5fb=this;return function(_0x2e3623){if(_0x2e3623){freeIsNotKey(_0x2e3623,_0x59b5fb['freshsalesAccounts'],'id');for(var _0x36953b=0x0,_0x27a7bb={},_0x85b88f={};_0x36953b<_0x2e3623[_0x8c83('0x44')];_0x36953b+=0x1){_0x27a7bb=_0x2e3623[_0x36953b];if(_['isUndefined'](_0x59b5fb['freshsalesAccounts'][_0x27a7bb['id']])){_0x59b5fb[_0x8c83('0x26')][_0x27a7bb['id']]=new FreshsalesAccount(_0x27a7bb);}else{_0x59b5fb['mergeFromDatabase'](_0x59b5fb[_0x8c83('0x26')][_0x27a7bb['id']],_0x27a7bb);}}}return _0x59b5fb['freshsalesAccounts'];};};Realtime['prototype'][_0x8c83('0x4e')]=function(){var _0xcef82c=this;return function(_0x5a0f6b){for(var _0x496918=0x0;_0x496918<_0x5a0f6b[_0x8c83('0x44')];_0x496918+=0x1){_[_0x8c83('0x4f')](_0xcef82c['voiceQueues'][_0x5a0f6b[_0x496918][_0x8c83('0x2c')]],_0x5a0f6b[_0x496918]);}return _0xcef82c[_0x8c83('0x16')];};};Realtime[_0x8c83('0x41')][_0x8c83('0x50')]=function(){var _0x1e6417=this;return function(_0x308b73){clearVoiceQueues(_0x1e6417[_0x8c83('0x16')]);if(_0x308b73){_0x308b73=_[_0x8c83('0x51')](_0x308b73,_0x8c83('0x52'));for(var _0x30a7b8 in _0x308b73){if(_0x308b73[_0x8c83('0x2a')](_0x30a7b8)){var _0x4078c6={};for(var _0x134920=0x0;_0x134920<_0x308b73[_0x30a7b8][_0x8c83('0x44')];_0x134920+=0x1){var _0x28c917=_0x308b73[_0x30a7b8][_0x134920][_0x8c83('0x53')];if(_0x1e6417[_0x8c83('0x16')][_0x28c917]){if(_0x308b73[_0x30a7b8][_0x134920]['queuecallerexit']){_0x1e6417[_0x8c83('0x16')][_0x28c917]['unmanaged']+=0x1;}if(_0x308b73[_0x30a7b8][_0x134920][_0x8c83('0x54')]){_0x1e6417['voiceQueues'][_0x28c917][_0x8c83('0x55')]+=0x1;}_0x1e6417[_0x8c83('0x16')][_0x28c917][_0x8c83('0x2e')]+=moment(_0x308b73[_0x30a7b8][_0x134920][_0x8c83('0x56')])[_0x8c83('0x57')](moment(_0x308b73[_0x30a7b8][_0x134920][_0x8c83('0x58')]),'seconds')||0x0;if(_0x134920===_0x308b73[_0x30a7b8][_0x8c83('0x44')]-0x1){_0x1e6417[_0x8c83('0x16')][_0x28c917]['sumDuration']+=moment(_0x308b73[_0x30a7b8][_0x134920][_0x8c83('0x59')]||_0x308b73[_0x30a7b8][_0x134920][_0x8c83('0x5a')]||_0x308b73[_0x30a7b8][_0x134920]['queuecallerexitAt'])[_0x8c83('0x57')](moment(_0x308b73[_0x30a7b8][_0x134920][_0x8c83('0x58')]),_0x8c83('0x5b'))||0x0;_0x1e6417[_0x8c83('0x16')][_0x28c917][_0x8c83('0x2d')]+=0x1;if(_0x308b73[_0x30a7b8][_0x134920][_0x8c83('0x5c')]){_0x1e6417[_0x8c83('0x16')][_0x28c917]['answered']+=0x1;_0x1e6417[_0x8c83('0x16')][_0x28c917][_0x8c83('0x2f')]+=moment(_0x308b73[_0x30a7b8][_0x134920][_0x8c83('0x59')])[_0x8c83('0x57')](moment(_0x308b73[_0x30a7b8][_0x134920][_0x8c83('0x56')]),_0x8c83('0x5b'))||0x0;}}else{_0x1e6417['voiceQueues'][_0x28c917]['sumDuration']+=_0x1e6417[_0x8c83('0x16')][_0x28c917][_0x8c83('0x2e')]||0x0;}}}}}}return _0x1e6417[_0x8c83('0x16')];};};Realtime[_0x8c83('0x41')]['initVoiceCallReports']=function(){var _0x43925e=this;return function(_0x581205){clearVoiceCallReports(_0x43925e['outbound']);if(_0x581205){for(var _0x90929=0x0;_0x90929<_0x581205[_0x8c83('0x44')];_0x90929+=0x1){_0x43925e[_0x8c83('0x1a')][_0x8c83('0x2d')]+=0x1;_0x43925e[_0x8c83('0x1a')]['sumDuration']+=_0x581205[_0x90929][_0x8c83('0x5d')];if(_0x581205[_0x90929][_0x8c83('0x5e')]==='ANSWERED'){_0x43925e['outbound'][_0x8c83('0x31')]+=0x1;_0x43925e[_0x8c83('0x1a')]['sumHoldTime']+=_0x581205[_0x90929][_0x8c83('0x5d')]-_0x581205[_0x90929]['billableseconds']||0x0;_0x43925e[_0x8c83('0x1a')][_0x8c83('0x2f')]+=_0x581205[_0x90929]['billableseconds'];}}}return _0x43925e[_0x8c83('0x1a')];};};Realtime[_0x8c83('0x41')]['initCampaigns']=function(){var _0x303100=this;return function(_0x2eb849){if(_0x2eb849){freeIsNotKey(_0x2eb849,_0x303100[_0x8c83('0x18')],_0x8c83('0x2c'));for(var _0x7c9fe6=0x0,_0x54bdd1={};_0x7c9fe6<_0x2eb849['length'];_0x7c9fe6+=0x1){_0x54bdd1=_0x2eb849[_0x7c9fe6];if(_[_0x8c83('0x46')](_0x303100[_0x8c83('0x18')][_0x54bdd1[_0x8c83('0x2c')]])){_0x303100['campaigns'][_0x54bdd1['name']]=new Campaign(_0x54bdd1);}else{_0x303100[_0x8c83('0x42')](_0x303100[_0x8c83('0x18')][_0x54bdd1[_0x8c83('0x2c')]],_0x54bdd1);_0x303100[_0x8c83('0x18')][_0x54bdd1['name']][_0x8c83('0x5f')]=_0x54bdd1[_0x8c83('0x60')]?_0x54bdd1[_0x8c83('0x60')][_0x8c83('0x2c')]:undefined;}}}return _0x303100[_0x8c83('0x18')];};};Realtime['prototype']['initVoiceExtensions']=function(){var _0x267718=this;return function(_0x3abb35){if(_0x3abb35){freeIsNotKey(_0x3abb35,_0x267718[_0x8c83('0x61')],'id');for(var _0x1c68a3=0x0,_0x2cfe01={};_0x1c68a3<_0x3abb35[_0x8c83('0x44')];_0x1c68a3+=0x1){_0x2cfe01=_0x3abb35[_0x1c68a3];if(_[_0x8c83('0x46')](_0x267718[_0x8c83('0x61')][_0x2cfe01['id']])){_0x267718['voiceExtensions'][_0x2cfe01['id']]=new VoiceExtension(_0x2cfe01);}else{_0x267718[_0x8c83('0x42')](_0x267718['voiceExtensions'][_0x2cfe01['id']],_0x2cfe01);}}}return _0x267718[_0x8c83('0x61')];};};Realtime[_0x8c83('0x41')][_0x8c83('0x62')]=function(){var _0x273842=this;return function(_0x1029ba){clearCampaigns(_0x273842[_0x8c83('0x18')]);for(var _0x405bab=0x0;_0x405bab<_0x1029ba[_0x8c83('0x44')];_0x405bab+=0x1){_['merge'](_0x273842[_0x8c83('0x18')][_0x1029ba[_0x405bab][_0x8c83('0x2c')]],_0x1029ba[_0x405bab]);}return _0x273842[_0x8c83('0x18')];};};Realtime[_0x8c83('0x41')][_0x8c83('0x63')]=function(){var _0x3414ad=this;return function(_0x3410de){if(_0x3410de){freeIsNotKey(_0x3410de,_0x3414ad[_0x8c83('0x64')],'id');for(var _0x1c095a=0x0,_0x39d141={},_0x1c0ac3={};_0x1c095a<_0x3410de[_0x8c83('0x44')];_0x1c095a+=0x1){_0x39d141=_0x3410de[_0x1c095a];if(_[_0x8c83('0x46')](_0x3414ad['faxAccounts'][_0x39d141['id']])){_0x3414ad[_0x8c83('0x64')][_0x39d141['id']]=new FaxAccount(_0x39d141);}else{_0x3414ad[_0x8c83('0x42')](_0x3414ad[_0x8c83('0x64')][_0x39d141['id']],_0x39d141);}}}return _0x3414ad[_0x8c83('0x64')];};};module[_0x8c83('0x65')]=Realtime;
\ No newline at end of file
index e37a764..a82096a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0x7c7b=['monitors','monitorFilename','filename','createdAt','xcally-motion-preview','connectedlinename','xcally-motion-dialer','forEach','startsWith','Local','substring','indexOf','phone','lastIndexOf','transfererlinkedid','exports','lodash','moment','util','../rpc/voiceAgentReport','../rpc/voiceCallReport','../rpc/voiceDialReport','../rpc/memberReport','../rpc/voiceRecording','../rpc/voiceTransferReport','./voiceCallReport','./voiceAgentReport','./voiceDialReport','./userReport','agents','telephones','prototype','sync','realtime','disabled','custom:voiceQueueReport','voiceQueueReport','bind','custom:voiceCallReport','voiceCallReport','custom:voiceAgentReport','voiceAgentReport','custom:voiceDialReport','voiceDialReport','blindtransfer','blindTransfer','attendedtransfer','attendedTransfer','findAgent','find','name','isNil','accountcode','interface','format','SIP/%s','length','assigned','lastAssignedTo','queuecallercomplete','queuecallercompleteAt','YYYY-MM-DD\x20HH:mm:ss','queuecallerexit','queuecallerexitAt','create','match','getAgentByInternal','getCallType','channel','split','calleridnum','outbound','internal','destination','exten','type','dialer','lastapplication','queue','lastdata','context','from-voip-provider','callerid','from-sip','calleridpreview','originatecalleridnum','destinationchannel','disposition','ANSWERED','connectedlinenum','\x22%s\x22\x20<%s>','calleridname','transfers','linkedid','transfereelinkedid','UserId','membername'];(function(_0x4143d0,_0x1fd702){var _0x5636e8=function(_0x34cbd7){while(--_0x34cbd7){_0x4143d0['push'](_0x4143d0['shift']());}};_0x5636e8(++_0x1fd702);}(_0x7c7b,0xd2));var _0xb7c7=function(_0x1e9642,_0xf7353c){_0x1e9642=_0x1e9642-0x0;var _0x48b189=_0x7c7b[_0x1e9642];return _0x48b189;};'use strict';var _=require(_0xb7c7('0x0'));var moment=require(_0xb7c7('0x1'));var util=require(_0xb7c7('0x2'));var config=require('../../../config/environment');var ami=require('../ami');var RpcVoiceAgentReport=require(_0xb7c7('0x3'));var RpcVoiceCallReport=require(_0xb7c7('0x4'));var RpcVoiceDialReport=require(_0xb7c7('0x5'));var RpcMemberReport=require(_0xb7c7('0x6'));var RpcVoiceQueueReport=require('../rpc/voiceQueueReport');var RpcVoiceRecording=require(_0xb7c7('0x7'));var RpcVoiceTransferReport=require(_0xb7c7('0x8'));var VoiceQueueReport=require('./voiceQueueReport');var VoiceCallReport=require(_0xb7c7('0x9'));var VoiceAgentReport=require(_0xb7c7('0xa'));var VoiceDialReport=require(_0xb7c7('0xb'));var UserReport=require(_0xb7c7('0xc'));function Report(_0x2141e4){this['realtime']=_0x2141e4;this[_0xb7c7('0xd')]=_0x2141e4['agents'];this[_0xb7c7('0xe')]=_0x2141e4[_0xb7c7('0xe')];}Report[_0xb7c7('0xf')][_0xb7c7('0x10')]=function(_0xc58757){var _0x2c8b74=new VoiceQueueReport(this[_0xb7c7('0x11')]);var _0x2f4c98=new VoiceAgentReport(this[_0xb7c7('0x11')]);var _0x53db68=new VoiceDialReport(this[_0xb7c7('0x11')]);var _0x1e2438=new VoiceCallReport(this[_0xb7c7('0x11')]);var _0x188504=new UserReport(this[_0xb7c7('0x11')]);if(config['xdr']&&config['xdr'][_0xb7c7('0x12')]){ami['on'](_0xb7c7('0x13'),this[_0xb7c7('0x14')][_0xb7c7('0x15')](this));ami['on'](_0xb7c7('0x16'),this[_0xb7c7('0x17')][_0xb7c7('0x15')](this));ami['on'](_0xb7c7('0x18'),this[_0xb7c7('0x19')]['bind'](this));ami['on'](_0xb7c7('0x1a'),this[_0xb7c7('0x1b')][_0xb7c7('0x15')](this));ami['on'](_0xb7c7('0x1c'),this[_0xb7c7('0x1d')][_0xb7c7('0x15')](this));ami['on'](_0xb7c7('0x1e'),this[_0xb7c7('0x1f')][_0xb7c7('0x15')](this));}};Report['prototype'][_0xb7c7('0x20')]=function(_0x39d366){var _0x6a50c3;_0x6a50c3=_[_0xb7c7('0x21')](this[_0xb7c7('0xd')],function(_0x1cf50d){return _0x1cf50d['accountcode']==_0x39d366||_0x1cf50d[_0xb7c7('0x22')]==_0x39d366;});if(_[_0xb7c7('0x23')](_0x6a50c3)){var _0x5cf4b4=_[_0xb7c7('0x21')](this[_0xb7c7('0xe')],function(_0x217cc0){return _0x217cc0[_0xb7c7('0x24')]==_0x39d366||_0x217cc0[_0xb7c7('0x22')]==_0x39d366;});if(_0x5cf4b4){_0x6a50c3=_[_0xb7c7('0x21')](this[_0xb7c7('0xd')],function(_0x460a05){return _0x460a05[_0xb7c7('0x25')]==util[_0xb7c7('0x26')](_0xb7c7('0x27'),_0x5cf4b4[_0xb7c7('0x22')]);});}}return _0x6a50c3;};Report['prototype'][_0xb7c7('0x14')]=function(_0x39815e){for(var _0x276548=0x0;_0x276548<_0x39815e[_0xb7c7('0x28')];_0x276548+=0x1){var _0x2798dd=this[_0xb7c7('0x20')](_0x39815e[_0x276548]['connectedlinenum']);if(_0x2798dd){_0x39815e[_0x276548][_0xb7c7('0x24')]=_0x2798dd[_0xb7c7('0x24')];_0x39815e[_0x276548][_0xb7c7('0x29')]=!![];_0x39815e[_0x276548][_0xb7c7('0x2a')]=_0x2798dd[_0xb7c7('0x22')];_0x39815e[_0x276548][_0xb7c7('0x25')]=_[_0xb7c7('0x23')](_0x2798dd[_0xb7c7('0x25')])?util[_0xb7c7('0x26')](_0xb7c7('0x27'),_0x2798dd[_0xb7c7('0x22')]):_0x2798dd[_0xb7c7('0x25')];if(_0x39815e[_0x276548][_0xb7c7('0x2b')]){_0x39815e[_0x276548][_0xb7c7('0x2c')]=moment()[_0xb7c7('0x26')](_0xb7c7('0x2d'));}if(_0x39815e[_0x276548][_0xb7c7('0x2e')]){_0x39815e[_0x276548][_0xb7c7('0x2f')]=moment()[_0xb7c7('0x26')](_0xb7c7('0x2d'));}RpcMemberReport[_0xb7c7('0x14')](_0x39815e[_0x276548]);}RpcVoiceQueueReport[_0xb7c7('0x30')](_0x39815e[_0x276548]);}};function extractCalleridNumber(_0x4f86d3){var _0x37368f=_0x4f86d3[_0xb7c7('0x31')](/<(.*?)>/);return _0x37368f?_0x37368f[0x1]:_0x4f86d3;}Report['prototype'][_0xb7c7('0x32')]=function(_0x3813ed){for(var _0x4134c5=0x0;_0x4134c5<Object['keys'](this[_0xb7c7('0xd')])['length'];_0x4134c5++){var _0x3d0845=Object['keys'](this['agents'])[_0x4134c5];var _0x59a026=this[_0xb7c7('0xd')][_0x3d0845];if(_0x59a026['accountcode']===Number(_0x3813ed))return _0x59a026;}return null;};Report[_0xb7c7('0xf')][_0xb7c7('0x33')]=function(_0x396952){var _0x6d0662=_0x396952[_0xb7c7('0x34')][_0xb7c7('0x35')]('-')[0x0];var _0x1ecdfe=this['agents'][_0x6d0662];if(!_0x1ecdfe)_0x1ecdfe=this[_0xb7c7('0x32')](_0x396952[_0xb7c7('0x36')]);return!_0x1ecdfe?_0xb7c7('0x37'):_0xb7c7('0x38');};Report[_0xb7c7('0xf')]['voiceCallReport']=function(_0x1a8f8f){_0x1a8f8f[_0xb7c7('0x39')]=_0x1a8f8f['destination']||_0x1a8f8f[_0xb7c7('0x3a')];if(_0x1a8f8f[_0xb7c7('0x3b')]==_0xb7c7('0x3c')){_0x1a8f8f[_0xb7c7('0x3d')]=_0xb7c7('0x3e');_0x1a8f8f[_0xb7c7('0x3f')]=_0x1a8f8f['queue'];if(_0x1a8f8f[_0xb7c7('0x40')]==_0xb7c7('0x41')){_0x1a8f8f['accountcode']='';_0x1a8f8f[_0xb7c7('0x39')]=extractCalleridNumber(_0x1a8f8f[_0xb7c7('0x42')]);}else if(_0x1a8f8f['context']==_0xb7c7('0x43')){if(_0x1a8f8f[_0xb7c7('0x39')]=='xcally-motion-preview'){_0x1a8f8f[_0xb7c7('0x39')]=extractCalleridNumber(_0x1a8f8f[_0xb7c7('0x44')]);_0x1a8f8f[_0xb7c7('0x36')]=_0x1a8f8f[_0xb7c7('0x45')];_0x1a8f8f[_0xb7c7('0x46')]=[_0x1a8f8f['channel'],_0x1a8f8f[_0xb7c7('0x34')]=_0x1a8f8f[_0xb7c7('0x46')]][0x0];_0x1a8f8f['callerid']=_0x1a8f8f[_0xb7c7('0x44')];}else{_0x1a8f8f[_0xb7c7('0x39')]=_0x1a8f8f[_0xb7c7('0x36')];_0x1a8f8f[_0xb7c7('0x36')]=_0x1a8f8f[_0xb7c7('0x45')];if(_0x1a8f8f[_0xb7c7('0x47')]==_0xb7c7('0x48')){_0x1a8f8f['accountcode']=_0x1a8f8f[_0xb7c7('0x49')];}else{_0x1a8f8f[_0xb7c7('0x24')]='';}}}}else{_0x1a8f8f['callerid']=util[_0xb7c7('0x26')](_0xb7c7('0x4a'),_0x1a8f8f[_0xb7c7('0x4b')],_0x1a8f8f['calleridnum']);}if(RpcVoiceTransferReport[_0xb7c7('0x4c')][_0x1a8f8f['linkedid']]){var _0x14dc40=RpcVoiceTransferReport[_0xb7c7('0x4c')][_0x1a8f8f[_0xb7c7('0x4d')]];_0x14dc40[_0xb7c7('0x4e')]=_0x1a8f8f['uniqueid'];RpcVoiceTransferReport[_0xb7c7('0x1d')](_0x14dc40);delete RpcVoiceTransferReport[_0xb7c7('0x4c')][_0x1a8f8f[_0xb7c7('0x4d')]];}if(_[_0xb7c7('0x23')](_0x1a8f8f[_0xb7c7('0x3b')])){_0x1a8f8f[_0xb7c7('0x3b')]=this[_0xb7c7('0x33')](_0x1a8f8f);}if(_[_0xb7c7('0x23')](_0x1a8f8f[_0xb7c7('0x4f')])){var _0x36a538=_0x1a8f8f[_0xb7c7('0x34')][_0xb7c7('0x35')]('-')[0x0];var _0x11006a=this['agents'][_0x36a538];if(!_0x11006a)_0x11006a=this[_0xb7c7('0x32')](_0x1a8f8f['accountcode']);if(_0x11006a){_0x1a8f8f[_0xb7c7('0x4f')]=_0x11006a['id'];_0x1a8f8f[_0xb7c7('0x50')]=_0x11006a[_0xb7c7('0x22')];}}RpcVoiceCallReport[_0xb7c7('0x30')](_0x1a8f8f);if(_0x1a8f8f['monitor']){for(var _0x59cb73=0x0;_0x59cb73<_0x1a8f8f[_0xb7c7('0x51')][_0xb7c7('0x28')];_0x59cb73+=0x1){_0x1a8f8f[_0xb7c7('0x52')]=_0x1a8f8f[_0xb7c7('0x51')][_0x59cb73][_0xb7c7('0x53')];_0x1a8f8f[_0xb7c7('0x54')]=_0x1a8f8f[_0xb7c7('0x51')][_0x59cb73]['createdAt'];if(_0x1a8f8f[_0xb7c7('0x3a')]==_0xb7c7('0x55')){_0x1a8f8f[_0xb7c7('0x36')]=_0x1a8f8f[_0xb7c7('0x49')];_0x1a8f8f[_0xb7c7('0x4b')]=_0x1a8f8f[_0xb7c7('0x56')];_0x1a8f8f[_0xb7c7('0x49')]=_0x1a8f8f[_0xb7c7('0x24')];_0x1a8f8f['connectedlinename']=_0x1a8f8f[_0xb7c7('0x50')];_0x1a8f8f[_0xb7c7('0x3a')]=_0x1a8f8f['originatecalleridnum'];}else if(_0x1a8f8f['exten']==_0xb7c7('0x57')){_0x1a8f8f['calleridnum']=_0x1a8f8f[_0xb7c7('0x39')];_0x1a8f8f[_0xb7c7('0x3a')]=_0x1a8f8f[_0xb7c7('0x45')];}RpcVoiceRecording[_0xb7c7('0x30')](_0x1a8f8f);}}};Report[_0xb7c7('0xf')][_0xb7c7('0x19')]=function(_0x18035f){if(_['isArray'](_0x18035f)){_0x18035f[_0xb7c7('0x58')](function(_0x3fbe3a){RpcVoiceAgentReport[_0xb7c7('0x30')](_0x3fbe3a);});}else{RpcVoiceAgentReport[_0xb7c7('0x30')](_0x18035f);}};Report[_0xb7c7('0xf')][_0xb7c7('0x1b')]=function(_0x3fc601){RpcVoiceDialReport[_0xb7c7('0x30')](_0x3fc601);var _0x339e6e;var _0x55e0e0;var _0x482450=_0x3fc601[_0xb7c7('0x34')];if(_[_0xb7c7('0x59')](_0x482450,_0xb7c7('0x5a'))){_0x55e0e0=_0x482450[_0xb7c7('0x5b')](_0x482450[_0xb7c7('0x5c')]('/')+0x1,_0x482450[_0xb7c7('0x5c')]('@'));_0x339e6e=_[_0xb7c7('0x21')](this[_0xb7c7('0xd')],function(_0x2af5ec){return _0x2af5ec['mobile']==_0x55e0e0||_0x2af5ec[_0xb7c7('0x5d')]==_0x55e0e0||_0x2af5ec[_0xb7c7('0x24')]==_0x55e0e0;});}else{_0x55e0e0=_0x482450[_0xb7c7('0x5b')](_0x482450[_0xb7c7('0x5c')]('/')+0x1,_0x482450[_0xb7c7('0x5e')]('-'));_0x339e6e=this[_0xb7c7('0x20')](_0x55e0e0);}if(_0x339e6e){_0x3fc601[_0xb7c7('0x25')]=_['isNil'](_0x339e6e['interface'])?util['format'](_0xb7c7('0x27'),_0x339e6e[_0xb7c7('0x22')]):_0x339e6e[_0xb7c7('0x25')];_0x3fc601[_0xb7c7('0x50')]=_0x339e6e[_0xb7c7('0x22')];_0x3fc601[_0xb7c7('0x24')]=_0x339e6e[_0xb7c7('0x24')];RpcMemberReport[_0xb7c7('0x1b')](_0x3fc601);}};Report['prototype'][_0xb7c7('0x1d')]=function(_0x1012c4){RpcVoiceTransferReport[_0xb7c7('0x4c')][_0x1012c4[_0xb7c7('0x5f')]]=_0x1012c4;};Report['prototype']['attendedTransfer']=function(_0x336a54){RpcVoiceTransferReport[_0xb7c7('0x1f')](_0x336a54);};module[_0xb7c7('0x60')]=Report;
\ No newline at end of file
index 408cedc..1805f03 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0x2b00=['substring','indexOf','phone','accountcode','[userReport][peerstatus]\x20peer:%s\x20address:%s\x20status:%s','peer','address','status','[userReport][peerstatus]\x20sending\x20telephone:save\x20event:','telephone:%s','[userReport][peerstatus]','exports','lodash','moment','ioredis','../../../config/environment','../../../config/logger','ami','../ami','redis','defaults','trunks','agents','telephones','syncRegistry','bind','devicestatechange','syncDeviceState','peerstatus','syncPeerStatus','syncRealtimeShow','then','actionSipShowRegistry','catch','error','inspect','actionDeviceStateList','[userReport][devicestatelist]','resolve','[userReport][sippeerstatus]','prototype','isNotNull','isUndefined','emit','info','username','state','debug','[userReport][registry]','find','stateRegistry','omit','[userReport][registry]\x20sending\x20trunk:save\x20event:','format','trunk:%s','name','trunk:save','[userReport][devicestatechange]\x20device:%s\x20state:%s','device','[userReport][devicestatechange]','toLowerCase','inuse','local','toNumber','updateStatusRealtime','stateTime','[userReport][devicestatechange]\x20sending\x20telephone:save\x20event:','telephone:save','startsWith'];(function(_0x26dac0,_0xae0aaa){var _0x1329bd=function(_0xa84a31){while(--_0xa84a31){_0x26dac0['push'](_0x26dac0['shift']());}};_0x1329bd(++_0xae0aaa);}(_0x2b00,0x1ef));var _0x02b0=function(_0x2dbac1,_0x44db3b){_0x2dbac1=_0x2dbac1-0x0;var _0x8c4e86=_0x2b00[_0x2dbac1];return _0x8c4e86;};'use strict';var _=require(_0x02b0('0x0'));var moment=require(_0x02b0('0x1'));var util=require('util');var Redis=require(_0x02b0('0x2'));var BPromise=require('bluebird');var config=require(_0x02b0('0x3'));var logger=require(_0x02b0('0x4'))(_0x02b0('0x5'));var ami=require(_0x02b0('0x6'));config[_0x02b0('0x7')]=_[_0x02b0('0x8')](config[_0x02b0('0x7')],{'host':'localhost','port':0x18eb});var io=require('socket.io-emitter')(new Redis(config[_0x02b0('0x7')]));function UserReport(_0x2c5cf3){this[_0x02b0('0x9')]=_0x2c5cf3[_0x02b0('0x9')];this['agents']=_0x2c5cf3[_0x02b0('0xa')];this[_0x02b0('0xb')]=_0x2c5cf3[_0x02b0('0xb')];ami['on']('registryentry',this[_0x02b0('0xc')]['bind'](this));ami['on']('registry',this[_0x02b0('0xc')][_0x02b0('0xd')](this));ami['on'](_0x02b0('0xe'),this[_0x02b0('0xf')][_0x02b0('0xd')](this));ami['on'](_0x02b0('0x10'),this[_0x02b0('0x11')][_0x02b0('0xd')](this));return this[_0x02b0('0x12')]();}function showSipRegistrations(){Promise['resolve']()[_0x02b0('0x13')](ami[_0x02b0('0x14')]())[_0x02b0('0x15')](function(_0x54f0de){logger[_0x02b0('0x16')]('[userReport][sipshowregistry]',util[_0x02b0('0x17')](_0x54f0de,{'showHidden':![],'depth':null}));});}function listDeviceStates(){Promise['resolve']()[_0x02b0('0x13')](ami[_0x02b0('0x18')]())[_0x02b0('0x15')](function(_0x4f8c51){logger[_0x02b0('0x16')](_0x02b0('0x19'),util[_0x02b0('0x17')](_0x4f8c51,{'showHidden':![],'depth':null}));});}function showPeersStatus(){Promise[_0x02b0('0x1a')]()['then'](ami['actionSipPeerStatus']())[_0x02b0('0x15')](function(_0x3cf2b5){logger[_0x02b0('0x16')](_0x02b0('0x1b'),util[_0x02b0('0x17')](_0x3cf2b5,{'showHidden':![],'depth':null}));});}UserReport[_0x02b0('0x1c')][_0x02b0('0x12')]=function(){setInterval(function(){BPromise[_0x02b0('0x1a')]()['then'](showSipRegistrations())[_0x02b0('0x13')](listDeviceStates())[_0x02b0('0x13')](showPeersStatus());},0x32c8);};UserReport[_0x02b0('0x1c')][_0x02b0('0x1d')]=function(_0x373bd6){return _0x373bd6!==null&&!_[_0x02b0('0x1e')](_0x373bd6);};UserReport[_0x02b0('0x1c')][_0x02b0('0x1f')]=function(_0x59ea22,_0x3c6cad,_0xc5b8a8){io['to'](_0x59ea22)['emit'](_0x3c6cad,_0xc5b8a8);};UserReport['prototype']['syncRegistry']=function(_0x16887f){try{if(this[_0x02b0('0x1d')](_0x16887f)){logger[_0x02b0('0x20')]('[userReport][registry]\x20registry:%s\x20state:%s',_0x16887f[_0x02b0('0x21')],_0x16887f[_0x02b0('0x22')]);logger[_0x02b0('0x23')](_0x02b0('0x24'),util[_0x02b0('0x17')](_0x16887f,{'showHidden':![],'depth':null}));var _0x2cb9a6=_[_0x02b0('0x25')](this[_0x02b0('0x9')],{'defaultuser':_0x16887f['username']});if(_0x2cb9a6){_0x16887f[_0x02b0('0x26')]=_0x16887f[_0x02b0('0x22')];_['merge'](_0x2cb9a6,_[_0x02b0('0x27')](_0x16887f,['event','actionid','username',_0x02b0('0x22')]));logger[_0x02b0('0x23')](_0x02b0('0x28'),util[_0x02b0('0x17')](_0x2cb9a6,{'showHidden':![],'depth':null}));this[_0x02b0('0x1f')](util[_0x02b0('0x29')](_0x02b0('0x2a'),_0x2cb9a6[_0x02b0('0x2b')]),_0x02b0('0x2c'),_0x2cb9a6);}}}catch(_0x112ca3){logger[_0x02b0('0x16')](_0x02b0('0x24'),util[_0x02b0('0x17')](_0x112ca3,{'showHidden':![],'depth':null}));}};UserReport[_0x02b0('0x1c')][_0x02b0('0xf')]=function(_0x9184d8){try{if(this['isNotNull'](_0x9184d8)){logger[_0x02b0('0x20')](_0x02b0('0x2d'),_0x9184d8[_0x02b0('0x2e')],_0x9184d8[_0x02b0('0x22')]);logger[_0x02b0('0x23')](_0x02b0('0x2f'),util[_0x02b0('0x17')](_0x9184d8,{'showHidden':![],'depth':null}));if(this[_0x02b0('0xa')][_0x9184d8[_0x02b0('0x2e')]]){if(!this[_0x02b0('0xa')][_0x9184d8[_0x02b0('0x2e')]]['local']||_0x9184d8[_0x02b0('0x22')][_0x02b0('0x30')]()==_0x02b0('0x31')){this['agents'][_0x9184d8[_0x02b0('0x2e')]][_0x02b0('0x32')]=![];if(this[_0x02b0('0xa')][_0x9184d8['device']][_0x02b0('0x22')]!==_0x9184d8[_0x02b0('0x22')][_0x02b0('0x30')]()){this['agents'][_0x9184d8[_0x02b0('0x2e')]]['stateTime']=_[_0x02b0('0x33')](moment()[_0x02b0('0x29')]('x'));}this['agents'][_0x9184d8['device']][_0x02b0('0x22')]=_0x9184d8[_0x02b0('0x22')][_0x02b0('0x30')]();this[_0x02b0('0xa')][_0x9184d8[_0x02b0('0x2e')]][_0x02b0('0x34')](_0x9184d8);}}else if(this[_0x02b0('0xb')][_0x9184d8['device']]){if(this[_0x02b0('0xb')][_0x9184d8[_0x02b0('0x2e')]]['state']!==_0x9184d8['state'][_0x02b0('0x30')]()){this[_0x02b0('0xb')][_0x9184d8[_0x02b0('0x2e')]][_0x02b0('0x35')]=_[_0x02b0('0x33')](moment()[_0x02b0('0x29')]('x'));}this[_0x02b0('0xb')][_0x9184d8['device']]['state']=_0x9184d8[_0x02b0('0x22')][_0x02b0('0x30')]();logger['debug'](_0x02b0('0x36'),util[_0x02b0('0x17')](this[_0x02b0('0xb')][_0x9184d8['device']],{'showHidden':![],'depth':null}));this[_0x02b0('0x1f')](util[_0x02b0('0x29')]('telephone:%s',this['telephones'][_0x9184d8[_0x02b0('0x2e')]][_0x02b0('0x2b')]),_0x02b0('0x37'),this[_0x02b0('0xb')][_0x9184d8[_0x02b0('0x2e')]]);}else if(this[_0x02b0('0x9')][_0x9184d8[_0x02b0('0x2e')]]){if(this['trunks'][_0x9184d8['device']][_0x02b0('0x22')]!==_0x9184d8[_0x02b0('0x22')][_0x02b0('0x30')]()){this['trunks'][_0x9184d8['device']][_0x02b0('0x35')]=_[_0x02b0('0x33')](moment()[_0x02b0('0x29')]('x'));}this['trunks'][_0x9184d8['device']]['state']=_0x9184d8[_0x02b0('0x22')][_0x02b0('0x30')]();logger[_0x02b0('0x23')]('[userReport][devicestatechange]\x20sending\x20trunk:save\x20event:',util['inspect'](this[_0x02b0('0x9')][_0x9184d8['device']],{'showHidden':![],'depth':null}));this['emit'](util[_0x02b0('0x29')](_0x02b0('0x2a'),this[_0x02b0('0x9')][_0x9184d8[_0x02b0('0x2e')]]['name']),_0x02b0('0x2c'),this[_0x02b0('0x9')][_0x9184d8['device']]);}else if(_[_0x02b0('0x38')](_0x9184d8[_0x02b0('0x2e')],'Local')){var _0x327446=_0x9184d8['device'];var _0x56e65c=_0x327446[_0x02b0('0x39')](_0x327446[_0x02b0('0x3a')]('/')+0x1,_0x327446[_0x02b0('0x3a')]('@'));var _0x485c2a=_[_0x02b0('0x25')](this[_0x02b0('0xa')],function(_0x5100d4){return _0x5100d4['mobile']==_0x56e65c||_0x5100d4[_0x02b0('0x3b')]==_0x56e65c||_0x5100d4[_0x02b0('0x3c')]==_0x56e65c;});if(_0x485c2a){if(_0x485c2a[_0x02b0('0x22')]!==_0x9184d8[_0x02b0('0x22')][_0x02b0('0x30')]()){_0x485c2a['stateTime']=_[_0x02b0('0x33')](moment()[_0x02b0('0x29')]('x'));}_0x485c2a['state']=_0x9184d8[_0x02b0('0x22')]['toLowerCase']();_0x485c2a[_0x02b0('0x32')]=!![];_0x485c2a['updateStatusRealtime'](_0x9184d8);}}}}catch(_0x34e65a){logger[_0x02b0('0x16')](_0x02b0('0x2f'),util[_0x02b0('0x17')](_0x34e65a,{'showHidden':![],'depth':null}));}};UserReport[_0x02b0('0x1c')][_0x02b0('0x11')]=function(_0xe32b9b){try{if(this[_0x02b0('0x1d')](_0xe32b9b)&&this['isNotNull'](_0xe32b9b['peerstatus'])){logger[_0x02b0('0x20')](_0x02b0('0x3d'),_0xe32b9b[_0x02b0('0x3e')],_0xe32b9b[_0x02b0('0x3f')],_0xe32b9b[_0x02b0('0x10')]);logger['debug']('[userReport][peerstatus]',util[_0x02b0('0x17')](_0xe32b9b,{'showHidden':![],'depth':null}));if(this[_0x02b0('0xa')][_0xe32b9b['peer']]){if(!this[_0x02b0('0xa')][_0xe32b9b['peer']][_0x02b0('0x32')]||_0xe32b9b[_0x02b0('0x10')][_0x02b0('0x30')]()=='registered'){this['agents'][_0xe32b9b[_0x02b0('0x3e')]][_0x02b0('0x32')]=![];this[_0x02b0('0xa')][_0xe32b9b[_0x02b0('0x3e')]][_0x02b0('0x40')]=_0xe32b9b[_0x02b0('0x10')][_0x02b0('0x30')]();this[_0x02b0('0xa')][_0xe32b9b[_0x02b0('0x3e')]][_0x02b0('0x3f')]=_0xe32b9b[_0x02b0('0x3f')];this[_0x02b0('0xa')][_0xe32b9b[_0x02b0('0x3e')]][_0x02b0('0x34')](_0xe32b9b);}}else if(this[_0x02b0('0xb')][_0xe32b9b[_0x02b0('0x3e')]]){this[_0x02b0('0xb')][_0xe32b9b[_0x02b0('0x3e')]][_0x02b0('0x40')]=_0xe32b9b[_0x02b0('0x10')]['toLowerCase']();this[_0x02b0('0xb')][_0xe32b9b[_0x02b0('0x3e')]]['address']=_0xe32b9b[_0x02b0('0x3f')];logger[_0x02b0('0x23')](_0x02b0('0x41'),util[_0x02b0('0x17')](this[_0x02b0('0xb')][_0xe32b9b[_0x02b0('0x3e')]],{'showHidden':![],'depth':null}));this['emit'](util[_0x02b0('0x29')](_0x02b0('0x42'),this[_0x02b0('0xb')][_0xe32b9b[_0x02b0('0x3e')]][_0x02b0('0x2b')]),'telephone:save',this[_0x02b0('0xb')][_0xe32b9b['peer']]);}else if(this[_0x02b0('0x9')][_0xe32b9b['peer']]){this[_0x02b0('0x9')][_0xe32b9b[_0x02b0('0x3e')]][_0x02b0('0x40')]=_0xe32b9b[_0x02b0('0x10')][_0x02b0('0x30')]();this[_0x02b0('0x9')][_0xe32b9b['peer']][_0x02b0('0x3f')]=_0xe32b9b[_0x02b0('0x3f')];logger['debug']('[userReport][peerstatus]\x20sending\x20trunk:save\x20event:',util[_0x02b0('0x17')](this[_0x02b0('0x9')][_0xe32b9b[_0x02b0('0x3e')]],{'showHidden':![],'depth':null}));this[_0x02b0('0x1f')](util[_0x02b0('0x29')](_0x02b0('0x2a'),this[_0x02b0('0x9')][_0xe32b9b[_0x02b0('0x3e')]]['name']),_0x02b0('0x2c'),this['trunks'][_0xe32b9b[_0x02b0('0x3e')]]);}}}catch(_0x414285){logger['error'](_0x02b0('0x43'),util[_0x02b0('0x17')](_0x414285,{'showHidden':![],'depth':null}));}};module[_0x02b0('0x44')]=UserReport;
\ No newline at end of file
index 359ae19..7973d98 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0xd02e=['agents','variables','syncAgentCalled','bind','agentconnect','syncAgentConnect','agentringnoanswer','syncAgentRingNoAnswer','queuecallerabandon','syncQueueCallerAbandon','agentcomplete','syncAgentComplete','varset','hangup','musiconholdstart','musiconholdstop','syncMusicOnHoldStop','syncAttendedTransfer','blindtransfer','emit','prototype','isNotNull','info','[%s][voiceAgentReport][agentcalled]\x20agent:%s\x20destuniqueid:%s\x20lastevent:called','membername','destuniqueid','debug','uniqueid','isUndefined','format','queue','mandatoryDisposition','type','inbound','voice','merge','[%s][voiceAgentReport][agentcalled]\x20sending\x20agentcalled\x20event:','inspect','custom:agentcalled','calleridnum','user:called','error','[%s][voiceAgentReport][agentconnect]\x20event:','hasOwnProperty','[%s][voiceAgentReport][agentconnect]\x20agent:%s\x20destuniqueid:%s\x20lastevent:connect','agentconnectAt','YYYY-MM-DD\x20HH:mm:ss','connectedlinename','connectedlinenum','destchannelstate','destchannelstatedesc','holdtime','lastevent','connect','voiceChannels','routealias','interface','[%s][voiceAgentReport][agentconnect]\x20sending\x20agentconnect\x20event:','custom:agentconnect','[%s][voiceAgentReport][agentcalled]\x20sending\x20user:agentconnect\x20event:','user:%s','[%s][voiceAgentReport][agentconnect]\x20agent:%s\x20destuniqueid:%s\x20lastevent:answered_elsewhere','answeredelsewheredestinationuniqueid','answeredelsewheremembername','answered_elsewhere','reason','[%s][voiceAgentReport][agentconnect]\x20sending\x20agentansweredelsewhere\x20event:','[%s][voiceAgentReport][agentringnoanswer]\x20event:','agentringnoanswerAt','rejected','[%s][voiceAgentReport][agentringnoanswer]\x20sending\x20agentringnoanswer\x20event:','custom:agentringnoanswer','[%s][voiceAgentReport][agentringnoanswer]','[%s][voiceAgentReport][queuecallerabandon]\x20event:','[%s][voiceAgentReport][queuecallerabandon]\x20agent:%s\x20destuniqueid:%s\x20lastevent:abandoned','abandoned','[%s][voiceAgentReport][queuecallerabandon]\x20sending\x20agentqueuecallerabandon\x20event:','custom:agentqueuecallerabandon','[%s][voiceAgentReport][queuecallerabandon]','[%s][voiceAgentReport][agentcomplete]\x20event:','agentcompleteAt','transfer','agent','talktime','acw','acwtime','acwTimeout','destconnectedlinenum','custom:agentcomplete','[%s][voiceAgentReport][agentcomplete]\x20sending\x20user:agentcomplete\x20event:','destaccountcode','user:agentcomplete','[%s][voiceAgentReport][agentcomplete]','syncVarSet','addVariable','keys','variable','[%s][voiceAgentReport][varset]\x20destuniqueid:%s\x20variable:%s\x20value:%s','value','[%s][voiceAgentReport][varset]','rtpaudioqos','rtpaudioqosbridged','rtpaudioqosjitter','rtpaudioqosjitterbridged','rtpaudioqoslossbridged','rtpaudioqosrtt','sipcallid','sipuri','bridgepeer','bridgepvtcallid','memberinterface','memberrealtime','isNil','syncHangup','[%s][voiceAgentReport][hangup]\x20event:','[%s][voiceAgentReport][hangup]\x20destuniqueid:%s','[%s][voiceAgentReport][hangup]\x20sending\x20voiceAgentReport\x20event:','values','custom:voiceAgentReport','[%s][voiceAgentReport][hangup]','[%s][voiceAgentReport][attendedtransfer]\x20event:','transfereeuniqueid','origtransfereruniqueid','diff','seconds','secondtransfereruniqueid','syncBlindTransfer','transfereruniqueid','[%s][voiceAgentReport][blindtransfer]\x20agent:%s\x20destuniqueid:%s\x20lastevent:complete','complete','[%s][voiceAgentReport][blindtransfer]','syncMusicOnHoldStart','channel','substring','lastIndexOf','[%s][voiceAgentReport][musiconholdstart]\x20interface:%s','onhold','[%s][voiceAgentReport][musiconholdstart]','[%s][voiceAgentReport][musiconholdstop]\x20interface:%s','[%s][voiceAgentReport][musiconholdstop]','lodash','util','../../../config/environment','../../../config/logger','ami','../ami','redis','defaults','localhost','socket.io-emitter','channels','voiceQueues'];(function(_0x32e88c,_0x4e412a){var _0x5a0980=function(_0xf3eb78){while(--_0xf3eb78){_0x32e88c['push'](_0x32e88c['shift']());}};_0x5a0980(++_0x4e412a);}(_0xd02e,0x1bc));var _0xed02=function(_0x20f111,_0x48197f){_0x20f111=_0x20f111-0x0;var _0x482c09=_0xd02e[_0x20f111];return _0x482c09;};'use strict';var _=require(_0xed02('0x0'));var moment=require('moment');var util=require(_0xed02('0x1'));var Redis=require('ioredis');var config=require(_0xed02('0x2'));var logger=require(_0xed02('0x3'))(_0xed02('0x4'));var ami=require(_0xed02('0x5'));config[_0xed02('0x6')]=_[_0xed02('0x7')](config['redis'],{'host':_0xed02('0x8'),'port':0x18eb});var io=require(_0xed02('0x9'))(new Redis(config['redis']));function VoiceAgentReport(_0x1b1422){this[_0xed02('0xa')]={};this['voiceChannels']=_0x1b1422[_0xed02('0xa')];this[_0xed02('0xb')]=_0x1b1422[_0xed02('0xb')];this[_0xed02('0xc')]=_0x1b1422['agents'];this[_0xed02('0xd')]={};ami['on']('agentcalled',this[_0xed02('0xe')][_0xed02('0xf')](this));ami['on'](_0xed02('0x10'),this[_0xed02('0x11')][_0xed02('0xf')](this));ami['on'](_0xed02('0x12'),this[_0xed02('0x13')][_0xed02('0xf')](this));ami['on'](_0xed02('0x14'),this[_0xed02('0x15')]['bind'](this));ami['on'](_0xed02('0x16'),this[_0xed02('0x17')]['bind'](this));ami['on'](_0xed02('0x18'),this['syncVarSet']['bind'](this));ami['on'](_0xed02('0x19'),this['syncHangup'][_0xed02('0xf')](this));ami['on'](_0xed02('0x1a'),this['syncMusicOnHoldStart'][_0xed02('0xf')](this));ami['on'](_0xed02('0x1b'),this[_0xed02('0x1c')][_0xed02('0xf')](this));ami['on']('attendedtransfer',this[_0xed02('0x1d')][_0xed02('0xf')](this));ami['on'](_0xed02('0x1e'),this['syncBlindTransfer'][_0xed02('0xf')](this));}VoiceAgentReport['prototype'][_0xed02('0x1f')]=function(_0x42448b,_0x441e81,_0x3e5541){io['to'](_0x42448b)[_0xed02('0x1f')](_0x441e81,_0x3e5541);};VoiceAgentReport[_0xed02('0x20')][_0xed02('0x21')]=function(_0x3af7c5){return _0x3af7c5!==null&&!_['isUndefined'](_0x3af7c5);};VoiceAgentReport[_0xed02('0x20')]['syncAgentCalled']=function(_0x5b330c){try{if(this[_0xed02('0x21')](_0x5b330c)){logger[_0xed02('0x22')](_0xed02('0x23'),_0x5b330c['uniqueid'],_0x5b330c[_0xed02('0x24')],_0x5b330c[_0xed02('0x25')]);logger[_0xed02('0x26')]('[%s][voiceAgentReport][agentcalled]\x20event:',_0x5b330c[_0xed02('0x27')],util['inspect'](_0x5b330c,{'showHidden':![],'depth':null}));if(_['isUndefined'](this[_0xed02('0xa')][_0x5b330c[_0xed02('0x27')]])){this[_0xed02('0xa')][_0x5b330c['uniqueid']]={};}if(_[_0xed02('0x28')](this[_0xed02('0xa')][_0x5b330c[_0xed02('0x27')]][_0x5b330c[_0xed02('0x25')]])){this[_0xed02('0xa')][_0x5b330c[_0xed02('0x27')]][_0x5b330c[_0xed02('0x25')]]={'agentcalledAt':moment()[_0xed02('0x29')]('YYYY-MM-DD\x20HH:mm:ss'),'lastevent':'called','mandatoryDisposition':this[_0xed02('0xb')][_0x5b330c[_0xed02('0x2a')]]?this['voiceQueues'][_0x5b330c[_0xed02('0x2a')]][_0xed02('0x2b')]||![]:![],'type':this['voiceQueues'][_0x5b330c[_0xed02('0x2a')]]?this[_0xed02('0xb')][_0x5b330c[_0xed02('0x2a')]][_0xed02('0x2c')]||'inbound':_0xed02('0x2d'),'variables':this[_0xed02('0xd')][_0x5b330c[_0xed02('0x27')]],'motionChannel':_0xed02('0x2e')};}_[_0xed02('0x2f')](this['channels'][_0x5b330c[_0xed02('0x27')]][_0x5b330c[_0xed02('0x25')]],_['omit'](_0x5b330c,['event','privilege']));logger[_0xed02('0x26')](_0xed02('0x30'),_0x5b330c[_0xed02('0x27')],util[_0xed02('0x31')](this[_0xed02('0xa')][_0x5b330c['uniqueid']][_0x5b330c[_0xed02('0x25')]],{'showHidden':![],'depth':null}));ami[_0xed02('0x1f')](_0xed02('0x32'),this['channels'][_0x5b330c[_0xed02('0x27')]][_0x5b330c[_0xed02('0x25')]]);var _0x37fd59={'id':this[_0xed02('0xc')][_0x5b330c['interface']]['id'],'calleridnum':this[_0xed02('0xa')][_0x5b330c['uniqueid']][_0x5b330c[_0xed02('0x25')]][_0xed02('0x33')],'queue':this['channels'][_0x5b330c[_0xed02('0x27')]][_0x5b330c[_0xed02('0x25')]]['queue'],'variables':this['channels'][_0x5b330c[_0xed02('0x27')]][_0x5b330c[_0xed02('0x25')]][_0xed02('0xd')]};logger[_0xed02('0x26')]('[%s][voiceAgentReport][agentcalled]\x20sending\x20user:called\x20event:',_0x5b330c[_0xed02('0x27')],util[_0xed02('0x31')](_0x37fd59,{'showHidden':![],'depth':null}));this[_0xed02('0x1f')](util[_0xed02('0x29')]('user:%s',_0x5b330c['membername']),_0xed02('0x34'),_0x37fd59);}}catch(_0x4f0c53){logger[_0xed02('0x35')]('[%s][voiceAgentReport][agentcalled]',_0x5b330c[_0xed02('0x27')],util[_0xed02('0x31')](_0x4f0c53,{'showHidden':![],'depth':null}));}};VoiceAgentReport['prototype'][_0xed02('0x11')]=function(_0x51ef73){try{if(this['isNotNull'](_0x51ef73)){if(this[_0xed02('0xa')][_0x51ef73[_0xed02('0x27')]]){logger[_0xed02('0x26')](_0xed02('0x36'),_0x51ef73['uniqueid'],util[_0xed02('0x31')](_0x51ef73,{'showHidden':![],'depth':null}));for(var _0x2568fc in this[_0xed02('0xa')][_0x51ef73[_0xed02('0x27')]]){if(this[_0xed02('0xa')][_0x51ef73['uniqueid']][_0xed02('0x37')](_0x2568fc)){if(_0x51ef73['destuniqueid']===_0x2568fc){logger[_0xed02('0x22')](_0xed02('0x38'),_0x51ef73[_0xed02('0x27')],_0x51ef73['membername'],_0x51ef73[_0xed02('0x25')]);this['channels'][_0x51ef73[_0xed02('0x27')]][_0x2568fc][_0xed02('0x39')]=moment()[_0xed02('0x29')](_0xed02('0x3a'));this['channels'][_0x51ef73[_0xed02('0x27')]][_0x2568fc][_0xed02('0x3b')]=_0x51ef73[_0xed02('0x3b')];this[_0xed02('0xa')][_0x51ef73['uniqueid']][_0x2568fc][_0xed02('0x3c')]=_0x51ef73[_0xed02('0x3c')];this[_0xed02('0xa')][_0x51ef73['uniqueid']][_0x2568fc][_0xed02('0x3d')]=_0x51ef73[_0xed02('0x3d')];this[_0xed02('0xa')][_0x51ef73[_0xed02('0x27')]][_0x2568fc]['destchannelstatedesc']=_0x51ef73[_0xed02('0x3e')];this[_0xed02('0xa')][_0x51ef73['uniqueid']][_0x2568fc][_0xed02('0x3f')]=_0x51ef73[_0xed02('0x3f')];this[_0xed02('0xa')][_0x51ef73[_0xed02('0x27')]][_0x2568fc][_0xed02('0x40')]=_0xed02('0x41');if(this[_0xed02('0x42')][this[_0xed02('0xa')][_0x51ef73[_0xed02('0x27')]][_0x2568fc][_0xed02('0x27')]]){var _0x1b083a=this['voiceChannels'][this[_0xed02('0xa')][_0x51ef73[_0xed02('0x27')]][_0x2568fc][_0xed02('0x27')]][_0xed02('0x43')];this[_0xed02('0xa')][_0x51ef73[_0xed02('0x27')]][_0x2568fc]['routealias']=_0x1b083a;_0x51ef73['routealias']=_0x1b083a;}_[_0xed02('0x2f')](this[_0xed02('0xc')][_0x51ef73[_0xed02('0x44')]],_['pick'](_0x51ef73,['queue','destconnectedlinenum',_0xed02('0x43')]));logger[_0xed02('0x26')](_0xed02('0x45'),_0x51ef73[_0xed02('0x27')],util['inspect'](this[_0xed02('0xa')][_0x51ef73[_0xed02('0x27')]][_0x51ef73[_0xed02('0x25')]],{'showHidden':![],'depth':null}));ami[_0xed02('0x1f')](_0xed02('0x46'),this[_0xed02('0xa')][_0x51ef73[_0xed02('0x27')]][_0x51ef73['destuniqueid']]);logger[_0xed02('0x26')](_0xed02('0x47'),_0x51ef73['uniqueid'],util[_0xed02('0x31')](this['channels'][_0x51ef73[_0xed02('0x27')]][_0x51ef73[_0xed02('0x25')]],{'showHidden':![],'depth':null}));this[_0xed02('0x1f')](util['format'](_0xed02('0x48'),_0x51ef73['membername']),'user:agentconnect',this[_0xed02('0xa')][_0x51ef73[_0xed02('0x27')]][_0x51ef73[_0xed02('0x25')]]);}else if(!this[_0xed02('0xa')][_0x51ef73['uniqueid']][_0x2568fc][_0xed02('0x12')]&&!this[_0xed02('0xa')][_0x51ef73[_0xed02('0x27')]][_0x2568fc][_0xed02('0x16')]){logger['info'](_0xed02('0x49'),_0x51ef73[_0xed02('0x27')],this[_0xed02('0xa')][_0x51ef73[_0xed02('0x27')]][_0x2568fc][_0xed02('0x24')],_0x2568fc);this[_0xed02('0xa')][_0x51ef73[_0xed02('0x27')]][_0x2568fc][_0xed02('0x12')]=!![];this[_0xed02('0xa')][_0x51ef73['uniqueid']][_0x2568fc]['agentringnoanswerAt']=moment()[_0xed02('0x29')](_0xed02('0x3a'));this[_0xed02('0xa')][_0x51ef73[_0xed02('0x27')]][_0x2568fc][_0xed02('0x4a')]=_0x51ef73[_0xed02('0x25')];this[_0xed02('0xa')][_0x51ef73[_0xed02('0x27')]][_0x2568fc][_0xed02('0x4b')]=_0x51ef73[_0xed02('0x24')];this['channels'][_0x51ef73[_0xed02('0x27')]][_0x2568fc][_0xed02('0x40')]=_0xed02('0x4c');this[_0xed02('0xa')][_0x51ef73[_0xed02('0x27')]][_0x2568fc][_0xed02('0x4d')]=_0xed02('0x4c');logger[_0xed02('0x26')](_0xed02('0x4e'),_0x51ef73[_0xed02('0x27')],util[_0xed02('0x31')](this[_0xed02('0xa')][_0x51ef73[_0xed02('0x27')]][_0x2568fc],{'showHidden':![],'depth':null}));ami['emit']('custom:agentansweredelsewhere',this[_0xed02('0xa')][_0x51ef73[_0xed02('0x27')]][_0x2568fc]);}}}}}}catch(_0x1964b3){logger[_0xed02('0x35')]('[%s][voiceAgentReport][agentconnect]',_0x51ef73[_0xed02('0x27')],util[_0xed02('0x31')](_0x1964b3,{'showHidden':![],'depth':null}));}};VoiceAgentReport[_0xed02('0x20')][_0xed02('0x13')]=function(_0x34e1ef){try{if(this[_0xed02('0x21')](_0x34e1ef)){logger[_0xed02('0x26')](_0xed02('0x4f'),_0x34e1ef[_0xed02('0x27')],util[_0xed02('0x31')](_0x34e1ef,{'showHidden':![],'depth':null}));if(this['channels'][_0x34e1ef[_0xed02('0x27')]]&&this[_0xed02('0xa')][_0x34e1ef[_0xed02('0x27')]][_0x34e1ef[_0xed02('0x25')]]){logger[_0xed02('0x22')]('[%s][voiceAgentReport][agentringnoanswer]\x20agent:%s\x20destuniqueid:%s\x20lastevent:rejected',_0x34e1ef[_0xed02('0x27')],_0x34e1ef[_0xed02('0x24')],_0x34e1ef[_0xed02('0x25')]);this['channels'][_0x34e1ef['uniqueid']][_0x34e1ef['destuniqueid']][_0xed02('0x12')]=!![];this[_0xed02('0xa')][_0x34e1ef[_0xed02('0x27')]][_0x34e1ef[_0xed02('0x25')]][_0xed02('0x50')]=moment()[_0xed02('0x29')](_0xed02('0x3a'));this['channels'][_0x34e1ef[_0xed02('0x27')]][_0x34e1ef[_0xed02('0x25')]][_0xed02('0x40')]=_0xed02('0x51');this['channels'][_0x34e1ef[_0xed02('0x27')]][_0x34e1ef[_0xed02('0x25')]][_0xed02('0x4d')]=_0xed02('0x51');logger[_0xed02('0x26')](_0xed02('0x52'),_0x34e1ef[_0xed02('0x27')],util[_0xed02('0x31')](this[_0xed02('0xa')][_0x34e1ef[_0xed02('0x27')]][_0x34e1ef[_0xed02('0x25')]],{'showHidden':![],'depth':null}));ami[_0xed02('0x1f')](_0xed02('0x53'),this[_0xed02('0xa')][_0x34e1ef[_0xed02('0x27')]][_0x34e1ef[_0xed02('0x25')]]);}}}catch(_0x1abe33){logger[_0xed02('0x35')](_0xed02('0x54'),_0x34e1ef['uniqueid'],util[_0xed02('0x31')](_0x1abe33,{'showHidden':![],'depth':null}));}};VoiceAgentReport[_0xed02('0x20')][_0xed02('0x15')]=function(_0x45285d){try{if(this[_0xed02('0x21')](_0x45285d)){logger[_0xed02('0x26')](_0xed02('0x55'),_0x45285d[_0xed02('0x27')],util['inspect'](_0x45285d,{'showHidden':![],'depth':null}));if(this[_0xed02('0xa')][_0x45285d[_0xed02('0x27')]]){for(var _0x37da5b in this['channels'][_0x45285d[_0xed02('0x27')]]){if(this[_0xed02('0xa')][_0x45285d[_0xed02('0x27')]][_0xed02('0x37')](_0x37da5b)&&!this[_0xed02('0xa')][_0x45285d[_0xed02('0x27')]][_0x37da5b][_0xed02('0x12')]&&!this[_0xed02('0xa')][_0x45285d[_0xed02('0x27')]][_0x37da5b][_0xed02('0x16')]){logger[_0xed02('0x22')](_0xed02('0x56'),_0x45285d[_0xed02('0x27')],this[_0xed02('0xa')][_0x45285d[_0xed02('0x27')]][_0x37da5b][_0xed02('0x24')],_0x37da5b);this[_0xed02('0xa')][_0x45285d[_0xed02('0x27')]][_0x37da5b][_0xed02('0x12')]=!![];this['channels'][_0x45285d[_0xed02('0x27')]][_0x37da5b][_0xed02('0x50')]=moment()[_0xed02('0x29')](_0xed02('0x3a'));this[_0xed02('0xa')][_0x45285d[_0xed02('0x27')]][_0x37da5b]['lastevent']=_0xed02('0x57');this['channels'][_0x45285d[_0xed02('0x27')]][_0x37da5b][_0xed02('0x4d')]='abandoned';logger[_0xed02('0x26')](_0xed02('0x58'),_0x45285d[_0xed02('0x27')],util['inspect'](this[_0xed02('0xa')][_0x45285d[_0xed02('0x27')]][_0x37da5b],{'showHidden':![],'depth':null}));ami[_0xed02('0x1f')](_0xed02('0x59'),this[_0xed02('0xa')][_0x45285d[_0xed02('0x27')]][_0x37da5b]);}}}}}catch(_0x50bf1e){logger[_0xed02('0x35')](_0xed02('0x5a'),_0x45285d['uniqueid'],util[_0xed02('0x31')](_0x50bf1e,{'showHidden':![],'depth':null}));}};VoiceAgentReport[_0xed02('0x20')][_0xed02('0x17')]=function(_0xc920b7){try{if(this[_0xed02('0x21')](_0xc920b7)){logger[_0xed02('0x26')](_0xed02('0x5b'),_0xc920b7[_0xed02('0x27')],util[_0xed02('0x31')](_0xc920b7,{'showHidden':![],'depth':null}));if(this[_0xed02('0xa')][_0xc920b7[_0xed02('0x27')]]){for(var _0x5f1d48 in this['channels'][_0xc920b7[_0xed02('0x27')]]){if(this[_0xed02('0xa')][_0xc920b7[_0xed02('0x27')]][_0xed02('0x37')](_0x5f1d48)){if(this[_0xed02('0xa')][_0xc920b7['uniqueid']][_0x5f1d48]['agentconnectAt']&&!this[_0xed02('0xa')][_0xc920b7[_0xed02('0x27')]][_0x5f1d48]['agentcomplete']){logger['info']('[%s][voiceAgentReport][agentcomplete]\x20agent:%s\x20destuniqueid:%s\x20lastevent:complete',_0xc920b7[_0xed02('0x27')],this[_0xed02('0xa')][_0xc920b7[_0xed02('0x27')]][_0x5f1d48][_0xed02('0x24')],_0x5f1d48);this[_0xed02('0xa')][_0xc920b7[_0xed02('0x27')]][_0x5f1d48][_0xed02('0x16')]=!![];this[_0xed02('0xa')][_0xc920b7[_0xed02('0x27')]][_0x5f1d48][_0xed02('0x5c')]=moment()[_0xed02('0x29')](_0xed02('0x3a'));this['channels'][_0xc920b7[_0xed02('0x27')]][_0x5f1d48]['lastevent']='complete';this[_0xed02('0xa')][_0xc920b7['uniqueid']][_0x5f1d48]['reason']=_0xc920b7[_0xed02('0x4d')]==_0xed02('0x5d')?_0xed02('0x5e'):_0xc920b7['reason'];this['channels'][_0xc920b7['uniqueid']][_0x5f1d48][_0xed02('0x5f')]=_0xc920b7[_0xed02('0x5f')];if(this[_0xed02('0xb')][_0xc920b7[_0xed02('0x2a')]]&&this[_0xed02('0xb')][_0xc920b7[_0xed02('0x2a')]][_0xed02('0x60')]){this[_0xed02('0xa')][_0xc920b7[_0xed02('0x27')]][_0x5f1d48][_0xed02('0x61')]=this[_0xed02('0xb')][_0xc920b7[_0xed02('0x2a')]][_0xed02('0x62')];this[_0xed02('0xa')][_0xc920b7[_0xed02('0x27')]][_0x5f1d48]['agentacw']=!![];}this['agents'][_0xc920b7[_0xed02('0x44')]]=_['omit'](this[_0xed02('0xc')][_0xc920b7[_0xed02('0x44')]],[_0xed02('0x2a'),_0xed02('0x63')]);logger[_0xed02('0x26')]('[%s][voiceAgentReport][agentcomplete]\x20sending\x20agentcomplete\x20event:',_0xc920b7[_0xed02('0x27')],util[_0xed02('0x31')](this['channels'][_0xc920b7[_0xed02('0x27')]][_0x5f1d48],{'showHidden':![],'depth':null}));ami['emit'](_0xed02('0x64'),this['channels'][_0xc920b7['uniqueid']][_0x5f1d48]);logger[_0xed02('0x26')](_0xed02('0x65'),_0xc920b7[_0xed02('0x27')],util[_0xed02('0x31')]({'id':this[_0xed02('0xc')][_0xc920b7[_0xed02('0x44')]]['id'],'destaccountcode':_0xc920b7[_0xed02('0x66')]},{'showHidden':![],'depth':null}));this[_0xed02('0x1f')](util[_0xed02('0x29')]('user:%s',_0xc920b7[_0xed02('0x24')]),_0xed02('0x67'),{'id':this[_0xed02('0xc')][_0xc920b7[_0xed02('0x44')]]['id'],'destaccountcode':_0xc920b7[_0xed02('0x66')]});}}}}}}catch(_0x240b0f){logger[_0xed02('0x35')](_0xed02('0x68'),_0xc920b7[_0xed02('0x27')],util[_0xed02('0x31')](_0x240b0f,{'showHidden':![],'depth':null}));}};VoiceAgentReport['prototype'][_0xed02('0x69')]=function(_0x437e85){try{if(this[_0xed02('0x21')](_0x437e85)){logger[_0xed02('0x26')]('[%s][voiceAgentReport][varset]\x20event:',_0x437e85[_0xed02('0x27')],util[_0xed02('0x31')](_0x437e85,{'showHidden':![],'depth':null}));this[_0xed02('0x6a')](_0x437e85[_0xed02('0x27')],_[_0xed02('0x6b')](_0x437e85[_0xed02('0x6c')])[0x0],_0x437e85['value']);if(this[_0xed02('0xa')][_0x437e85['uniqueid']]){for(var _0xb80bbf in this[_0xed02('0xa')][_0x437e85[_0xed02('0x27')]]){if(this[_0xed02('0xa')][_0x437e85[_0xed02('0x27')]][_0xed02('0x37')](_0xb80bbf)){logger[_0xed02('0x22')](_0xed02('0x6d'),_0x437e85[_0xed02('0x27')],_0xb80bbf,_[_0xed02('0x6b')](_0x437e85[_0xed02('0x6c')])[0x0],_0x437e85[_0xed02('0x6e')]);if(_[_0xed02('0x28')](this[_0xed02('0xa')][_0x437e85['uniqueid']][_0xb80bbf][_0xed02('0xd')])){this[_0xed02('0xa')][_0x437e85[_0xed02('0x27')]][_0xb80bbf][_0xed02('0xd')]={};}this[_0xed02('0xa')][_0x437e85[_0xed02('0x27')]][_0xb80bbf][_0xed02('0xd')]=this['variables'][_0x437e85['uniqueid']];}}}}}catch(_0x32597e){logger[_0xed02('0x35')](_0xed02('0x6f'),_0x437e85[_0xed02('0x27')],util['inspect'](_0x32597e,{'showHidden':![],'depth':null}));}};VoiceAgentReport['prototype'][_0xed02('0x6a')]=function(_0x5ce1b5,_0x5a0568,_0x5b1003){var _0x57e897=[_0xed02('0x70'),_0xed02('0x71'),_0xed02('0x72'),_0xed02('0x73'),'rtpaudioqosloss',_0xed02('0x74'),_0xed02('0x75'),'rtpaudioqosrttbridged',_0xed02('0x76'),_0xed02('0x77'),_0xed02('0x78'),_0xed02('0x79'),'membercalls','memberdynamic',_0xed02('0x7a'),'memberlastcall','membername','memberpenalty',_0xed02('0x7b')];if(!_[_0xed02('0x7c')](_0x5a0568)&&!_['includes'](_0x57e897,_0x5a0568)){if(_[_0xed02('0x28')](this[_0xed02('0xd')][_0x5ce1b5])){this[_0xed02('0xd')][_0x5ce1b5]={};}this[_0xed02('0xd')][_0x5ce1b5][_0x5a0568]=_0x5b1003;}};VoiceAgentReport[_0xed02('0x20')][_0xed02('0x7d')]=function(_0x1d0b66){try{if(this['isNotNull'](_0x1d0b66)){logger[_0xed02('0x26')](_0xed02('0x7e'),_0x1d0b66['uniqueid'],util[_0xed02('0x31')](_0x1d0b66,{'showHidden':![],'depth':null}));if(this[_0xed02('0xa')][_0x1d0b66['uniqueid']]){for(var _0x77c045 in this[_0xed02('0xa')][_0x1d0b66[_0xed02('0x27')]]){if(this[_0xed02('0xa')][_0x1d0b66[_0xed02('0x27')]][_0xed02('0x37')](_0x77c045)){if(this[_0xed02('0xa')][_0x1d0b66[_0xed02('0x27')]][_0x77c045][_0xed02('0x4d')]==_0xed02('0x5d')&&this[_0xed02('0xa')][_0x1d0b66[_0xed02('0x27')]][_0x77c045][_0xed02('0x16')]){logger['info'](_0xed02('0x7f'),_0x1d0b66[_0xed02('0x27')],_0x77c045);this['channels'][_0x1d0b66[_0xed02('0x27')]][_0x77c045][_0xed02('0x5c')]=moment()[_0xed02('0x29')](_0xed02('0x3a'));}}}logger[_0xed02('0x26')](_0xed02('0x80'),_0x1d0b66[_0xed02('0x27')],util[_0xed02('0x31')](_[_0xed02('0x81')](this[_0xed02('0xa')][_0x1d0b66[_0xed02('0x27')]]),{'showHidden':![],'depth':null}));ami['emit'](_0xed02('0x82'),_[_0xed02('0x81')](this['channels'][_0x1d0b66[_0xed02('0x27')]]));delete this[_0xed02('0xa')][_0x1d0b66[_0xed02('0x27')]];}if(this[_0xed02('0xd')][_0x1d0b66['uniqueid']]){delete this['variables'][_0x1d0b66[_0xed02('0x27')]];}}}catch(_0x5573fe){logger[_0xed02('0x35')](_0xed02('0x83'),_0x1d0b66['uniqueid'],util['inspect'](_0x5573fe,{'showHidden':![],'depth':null}));}};VoiceAgentReport[_0xed02('0x20')][_0xed02('0x1d')]=function(_0x554c64){try{if(this[_0xed02('0x21')](_0x554c64)){logger[_0xed02('0x26')](_0xed02('0x84'),_0x554c64[_0xed02('0x27')],util[_0xed02('0x31')](_0x554c64,{'showHidden':![],'depth':null}));if(this[_0xed02('0xa')][_0x554c64[_0xed02('0x85')]]){for(var _0x362f15 in this['channels'][_0x554c64[_0xed02('0x85')]]){if(this['channels'][_0x554c64[_0xed02('0x85')]][_0xed02('0x37')](_0x362f15)){if(_0x554c64[_0xed02('0x86')]===_0x362f15){logger[_0xed02('0x22')]('[%s][voiceAgentReport][attendedtransfer]\x20agent:%s\x20destuniqueid:%s\x20lastevent:complete',_0x554c64[_0xed02('0x27')],this[_0xed02('0xa')][_0x554c64[_0xed02('0x85')]][_0x362f15]['membername'],_0x362f15);var _0x5ef30b=moment();this['channels'][_0x554c64[_0xed02('0x85')]][_0x362f15][_0xed02('0x16')]=!![];this['channels'][_0x554c64[_0xed02('0x85')]][_0x362f15][_0xed02('0x5c')]=moment()[_0xed02('0x29')](_0xed02('0x3a'));this['channels'][_0x554c64['transfereeuniqueid']][_0x362f15][_0xed02('0x40')]='complete';this[_0xed02('0xa')][_0x554c64[_0xed02('0x85')]][_0x362f15]['reason']=_0xed02('0x5d');this[_0xed02('0xa')][_0x554c64[_0xed02('0x85')]][_0x362f15][_0xed02('0x5f')]=_0x5ef30b[_0xed02('0x87')](this[_0xed02('0xa')][_0x554c64[_0xed02('0x85')]][_0x362f15]['agentconnectAt'],_0xed02('0x88'));}}}}if(this['channels'][_0x554c64[_0xed02('0x89')]]){var _0x3e9c04=this[_0xed02('0xa')][_0x554c64[_0xed02('0x89')]];this[_0xed02('0xa')][_0x554c64[_0xed02('0x89')]]=this[_0xed02('0xa')][_0x554c64[_0xed02('0x85')]];this[_0xed02('0xa')][_0x554c64['transfereeuniqueid']]=_0x3e9c04;}}}catch(_0x4da1cf){logger[_0xed02('0x35')]('[%s][voiceAgentReport][attendedtransfer]',_0x554c64[_0xed02('0x27')],util[_0xed02('0x31')](_0x4da1cf,{'showHidden':![],'depth':null}));}};VoiceAgentReport[_0xed02('0x20')][_0xed02('0x8a')]=function(_0x330fc0){try{if(this[_0xed02('0x21')](_0x330fc0)){logger['debug']('[%s][voiceAgentReport][blindtransfer]\x20event:',_0x330fc0[_0xed02('0x27')],util[_0xed02('0x31')](_0x330fc0,{'showHidden':![],'depth':null}));if(this['channels'][_0x330fc0[_0xed02('0x85')]]){for(var _0x56efac in this[_0xed02('0xa')][_0x330fc0[_0xed02('0x85')]]){if(this['channels'][_0x330fc0[_0xed02('0x85')]][_0xed02('0x37')](_0x56efac)){if(_0x330fc0[_0xed02('0x8b')]===_0x56efac){logger[_0xed02('0x22')](_0xed02('0x8c'),_0x330fc0['uniqueid'],this['channels'][_0x330fc0[_0xed02('0x85')]][_0x56efac][_0xed02('0x24')],_0x56efac);var _0x2cd665=moment();this[_0xed02('0xa')][_0x330fc0[_0xed02('0x85')]][_0x56efac][_0xed02('0x16')]=!![];this[_0xed02('0xa')][_0x330fc0[_0xed02('0x85')]][_0x56efac][_0xed02('0x5c')]=_0x2cd665;this[_0xed02('0xa')][_0x330fc0[_0xed02('0x85')]][_0x56efac]['lastevent']=_0xed02('0x8d');this['channels'][_0x330fc0[_0xed02('0x85')]][_0x56efac][_0xed02('0x4d')]='transfer';this[_0xed02('0xa')][_0x330fc0['transfereeuniqueid']][_0x56efac]['talktime']=_0x2cd665[_0xed02('0x87')](this[_0xed02('0xa')][_0x330fc0[_0xed02('0x85')]][_0x56efac][_0xed02('0x39')],_0xed02('0x88'));}}}}}}catch(_0x3c15d6){logger[_0xed02('0x35')](_0xed02('0x8e'),_0x330fc0['uniqueid'],util[_0xed02('0x31')](_0x3c15d6,{'showHidden':![],'depth':null}));}};VoiceAgentReport['prototype'][_0xed02('0x8f')]=function(_0x1884f0){var _0x44e6f3='';try{if(this[_0xed02('0x21')](_0x1884f0)){logger['debug']('[%s][voiceAgentReport][musiconholdstart]\x20event:',_0x1884f0[_0xed02('0x27')],util[_0xed02('0x31')](_0x1884f0,{'showHidden':![],'depth':null}));if(_0x1884f0[_0xed02('0x90')]){_0x44e6f3=_0x1884f0[_0xed02('0x90')][_0xed02('0x91')](0x0,_0x1884f0['channel'][_0xed02('0x92')]('-'));if(this[_0xed02('0xc')][_0x44e6f3]){logger[_0xed02('0x22')](_0xed02('0x93'),_0x1884f0['uniqueid'],_0x44e6f3);this[_0xed02('0xc')][_0x44e6f3][_0xed02('0x94')]=!![];}}}}catch(_0x113ecd){logger[_0xed02('0x35')](_0xed02('0x95'),_0x1884f0[_0xed02('0x27')],util['inspect'](_0x113ecd,{'showHidden':![],'depth':null}));}};VoiceAgentReport[_0xed02('0x20')][_0xed02('0x1c')]=function(_0x4021c2){var _0x14e851='';try{if(this[_0xed02('0x21')](_0x4021c2)){logger['debug']('[%s][voiceAgentReport][musiconholdstop]\x20event:',_0x4021c2[_0xed02('0x27')],util[_0xed02('0x31')](_0x4021c2,{'showHidden':![],'depth':null}));if(_0x4021c2[_0xed02('0x90')]){_0x14e851=_0x4021c2[_0xed02('0x90')][_0xed02('0x91')](0x0,_0x4021c2[_0xed02('0x90')]['lastIndexOf']('-'));if(this[_0xed02('0xc')][_0x14e851]){logger[_0xed02('0x22')](_0xed02('0x96'),_0x4021c2[_0xed02('0x27')],_0x14e851);this['agents'][_0x14e851][_0xed02('0x94')]=![];}}}}catch(_0x480ec4){logger['error'](_0xed02('0x97'),_0x4021c2[_0xed02('0x27')],util[_0xed02('0x31')](_0x480ec4,{'showHidden':![],'depth':null}));}};module['exports']=VoiceAgentReport;
\ No newline at end of file
index e852b7f..c13aecd 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0x424b=['startsWith','cdr(','match','type','isNil','[%s][voiceCallReport][newexten]','[%s][voiceCallReport][newstate]\x20event:','answered','diff','xcally-motion-preview','connectedlinename','destinationchannel','UserId','membername','answertime','holdtime','calleridname','routealias','[%s][voiceCallReport][newstate]\x20sending\x20user:agentconnect\x20event:','[%s][voiceCallReport][newstate]','syncMixMonitorFilename','[%s][voiceCallReport][mixMonitorFilename]\x20monitorFilename:%s','monitor','endsWith','.wav49','.WAV','monitorFilename','find','monitors','push','rec','[%s][voiceCallReport][mixMonitorFilename]','[%s][voiceCallReport][varset]\x20event:','variable','mixmonitor_filename','[%s][voiceCallReport][varset]\x20variable:mixmonitor_filename\x20value:%s','value','xmd-phone','xmd-callerid','[%s][voiceCallReport][varset]\x20variable:xmd-callerid\x20value:%s','callerid','xmd-cdrtype','xmd-queue','[%s][voiceCallReport][varset]\x20variable:xmd-queue\x20value:%s','xmd-originatecalleridnum','[%s][voiceCallReport][varset]\x20variable:xmd-originatecalleridnum\x20value:%s','originatecalleridnum','[%s][voiceCallReport][varset]\x20variable:xmd-destination\x20value:%s','[%s][voiceCallReport][varset]\x20variable:xmd-callerid-preview\x20value:%s','calleridpreview','sipcallid','[%s][voiceCallReport][varset]\x20variable:sipcallid\x20value:%s','sipcalluniqueid','parse','sipcalllinkedid','[%s][voiceCallReport][varset]','[%s][voiceCallReport][hangup]\x20event:','[%s][voiceCallReport][hangup]\x20reason:%s','cause-txt','endtime','omit','[%s][voiceCallReport][hangup]\x20sending\x20user:agentcomplete\x20event:','user:agentcomplete','length','resolve','then','undefined','isEmpty','getSettings','stopRecordingOnTransfer','Action','StopMixMonitor','catch','webbar:stopmonitors','[%s][voiceCallReport][hangup]\x20sending\x20hangup\x20event:','custom:voiceCallReport','[%s][voiceCallReport][hangup]','[%s][voiceCallReport][attendedtransfer]\x20transfercalleridnum:%s\x20transferconnectedlinenum:%s','origtransferercalleridnum','transfertargetcalleridnum','transfereeuniqueid','transferconnectedlinenum','secondtransfereruniqueid','transferType','ATTENDED','transfertargetuniqueid','transfercalleridnum','origtransfereruniqueid','origtransfererlinkedid','some','[%s][voiceCallReport][attendedtransfer]','[%s][voiceCallReport][blindtransfer]\x20transfercalleridnum:%s\x20transferconnectedlinenum:%s','transfereecalleridnum','extension','[%s][voiceCallReport][blindtransfer]\x20event:','BLIND','BlindTransfer','transfereruniqueid','transfererchannel','[%s][voiceCallReport][musiconholdstart]\x20mohstarttime:%s','mohstarttime','[%s][voiceCallReport][musiconholdstart]','mohtime','milliseconds','exports','lodash','moment','util','ioredis','../../../config/environment','../../../config/logger','ami','../ami','../rpc/setting','queue','playback','NO\x20ANSWER','FAILED','ANSWERED','defaults','redis','channels','agents','blindTransfers','syncNewExten','bind','newexten','syncNewState','varset','syncVarSet','hangup','syncHangup','newcallerid','syncNewCallerId','attendedtransfer','syncAttendedTransfer','blindtransfer','syncBlindTransfer','musiconholdstart','syncMusicOnHoldStart','musiconholdstop','syncMusicOnHoldStop','[voiceCallReport][coreshowchannels]\x20started','actionCoreShowChannels','error','inspect','prototype','isNotNull','isUndefined','info','calleridnum','[%s][voiceCallReport][newcallerid]\x20event:','uniqueid','linkedid','merge','pick','keys','context','from-sip','channel','exten','destconnectedlinenum','connectedlinenum','emit','format','user:%s','split','accountcode','[%s][voiceCallReport][newcallerid]','syncNewChannel','debug','[%s][voiceCallReport][newchannel]\x20event:','YYYY-MM-DD\x20HH:mm:ss','toNumber','channelstate','name','user:agentconnect','[%s][voiceCallReport][newchannel]','OutgoingSpoolFailed','application','applicationdata','appdata','CDR(routeAlias)','toLowerCase','[%s][voiceCallReport][newexten]\x20application:%s\x20appdata:%s','starttime','duration','seconds','disposition','includes','lastapplication','set'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x424b,0x129));var _0xb424=function(_0x3a022e,_0x31fb08){_0x3a022e=_0x3a022e-0x0;var _0x40331d=_0x424b[_0x3a022e];return _0x40331d;};'use strict';var _=require(_0xb424('0x0'));var moment=require(_0xb424('0x1'));var util=require(_0xb424('0x2'));var path=require('path');var Redis=require(_0xb424('0x3'));var config=require(_0xb424('0x4'));var logger=require(_0xb424('0x5'))(_0xb424('0x6'));var ami=require(_0xb424('0x7'));var Channel=require('../model/channel');var RpcSetting=require(_0xb424('0x8'));var applications=['set',_0xb424('0x9'),'agi','dial',_0xb424('0xa'),'voicemail'];var dispositions=[_0xb424('0xb'),_0xb424('0xc'),'FAILED',_0xb424('0xb'),_0xb424('0xb'),'NO\x20ANSWER',_0xb424('0xd'),'BUSY',_0xb424('0xc'),_0xb424('0xc'),_0xb424('0xc')];config['redis']=_[_0xb424('0xe')](config[_0xb424('0xf')],{'host':'localhost','port':0x18eb});var io=require('socket.io-emitter')(new Redis(config[_0xb424('0xf')]));function VoiceCallReport(_0x28339c){this[_0xb424('0x10')]=_0x28339c[_0xb424('0x10')];this['agents']=_0x28339c[_0xb424('0x11')];this[_0xb424('0x12')]={};ami['on']('coreshowchannel',this[_0xb424('0x13')][_0xb424('0x14')](this));ami['on'](_0xb424('0x15'),this[_0xb424('0x13')][_0xb424('0x14')](this));ami['on']('newchannel',this['syncNewChannel']['bind'](this));ami['on']('newstate',this[_0xb424('0x16')][_0xb424('0x14')](this));ami['on'](_0xb424('0x17'),this[_0xb424('0x18')][_0xb424('0x14')](this));ami['on'](_0xb424('0x19'),this[_0xb424('0x1a')][_0xb424('0x14')](this));ami['on'](_0xb424('0x1b'),this[_0xb424('0x1c')]['bind'](this));ami['on'](_0xb424('0x1d'),this[_0xb424('0x1e')][_0xb424('0x14')](this));ami['on'](_0xb424('0x1f'),this[_0xb424('0x20')][_0xb424('0x14')](this));ami['on'](_0xb424('0x21'),this[_0xb424('0x22')][_0xb424('0x14')](this));ami['on'](_0xb424('0x23'),this[_0xb424('0x24')][_0xb424('0x14')](this));try{logger['info'](_0xb424('0x25'));ami[_0xb424('0x26')]();}catch(_0x435be0){logger[_0xb424('0x27')]('[voiceCallReport][coreshowchannels]',util[_0xb424('0x28')](_0x435be0,{'showHidden':![],'depth':null}));}}VoiceCallReport[_0xb424('0x29')][_0xb424('0x2a')]=function(_0x51b372){return _0x51b372!==null&&!_[_0xb424('0x2b')](_0x51b372);};VoiceCallReport[_0xb424('0x29')]['emit']=function(_0x21deb9,_0x1df864,_0x5897c0){io['to'](_0x21deb9)['emit'](_0x1df864,_0x5897c0);};VoiceCallReport[_0xb424('0x29')]['syncNewCallerId']=function(_0x2248cf){try{if(this['isNotNull'](_0x2248cf)){logger[_0xb424('0x2c')]('[%s][voiceCallReport][newcallerid]\x20calleridname:%s\x20calleridnum:%s',_0x2248cf['uniqueid'],_0x2248cf['calleridname'],_0x2248cf[_0xb424('0x2d')]);logger['debug'](_0xb424('0x2e'),_0x2248cf[_0xb424('0x2f')],util[_0xb424('0x28')](_0x2248cf,{'showHidden':![],'depth':null}));if(_0x2248cf['uniqueid']===_0x2248cf[_0xb424('0x30')]){if(!_[_0xb424('0x2b')](this[_0xb424('0x10')][_0x2248cf[_0xb424('0x2f')]])){_[_0xb424('0x31')](this[_0xb424('0x10')][_0x2248cf[_0xb424('0x2f')]],_[_0xb424('0x32')](_0x2248cf,_[_0xb424('0x33')](this['channels'][_0x2248cf[_0xb424('0x2f')]])));}}if(_0x2248cf[_0xb424('0x34')]===_0xb424('0x35')){if(this['agents'][_0x2248cf[_0xb424('0x36')]['split']('-')[0x0]]){if(_0x2248cf[_0xb424('0x37')]=='xcally-motion-preview'){this[_0xb424('0x11')][_0x2248cf[_0xb424('0x36')]['split']('-')[0x0]][_0xb424('0x38')]=_0x2248cf[_0xb424('0x39')];this[_0xb424('0x3a')](util[_0xb424('0x3b')](_0xb424('0x3c'),this['agents'][_0x2248cf['channel']['split']('-')[0x0]]['name']),'user:agentconnect',{'destaccountcode':this[_0xb424('0x11')][_0x2248cf[_0xb424('0x36')][_0xb424('0x3d')]('-')[0x0]][_0xb424('0x3e')],'destconnectedlinenum':_0x2248cf[_0xb424('0x39')]});}}}}}catch(_0x23fd51){logger[_0xb424('0x27')](_0xb424('0x3f'),_0x2248cf['uniqueid'],util[_0xb424('0x28')](_0x23fd51,{'showHidden':![],'depth':null}));}};VoiceCallReport[_0xb424('0x29')][_0xb424('0x40')]=function(_0x43c285){try{if(this['isNotNull'](_0x43c285)){logger[_0xb424('0x41')](_0xb424('0x42'),_0x43c285[_0xb424('0x2f')],util[_0xb424('0x28')](_0x43c285,{'showHidden':![],'depth':null}));if(this[_0xb424('0x10')][_0x43c285['uniqueid']])return;if(_0x43c285['channel']==='OutgoingSpoolFailed')return;if(_0x43c285[_0xb424('0x2f')]!==_0x43c285[_0xb424('0x30')]&&!this['blindTransfers'][_0x43c285[_0xb424('0x30')]])return;logger[_0xb424('0x2c')]('[%s][voiceCallReport][newchannel]\x20context:%s\x20exten:%s',_0x43c285[_0xb424('0x2f')],_0x43c285[_0xb424('0x34')],_0x43c285[_0xb424('0x37')]);this['channels'][_0x43c285[_0xb424('0x2f')]]=new Channel();this[_0xb424('0x10')][_0x43c285[_0xb424('0x2f')]]['starttime']=moment()['format'](_0xb424('0x43'));this[_0xb424('0x10')][_0x43c285[_0xb424('0x2f')]]['disposition']=dispositions[_[_0xb424('0x44')](_0x43c285[_0xb424('0x45')])];_[_0xb424('0x31')](this[_0xb424('0x10')][_0x43c285[_0xb424('0x2f')]],_['pick'](_0x43c285,_[_0xb424('0x33')](this['channels'][_0x43c285[_0xb424('0x2f')]])));if(_0x43c285[_0xb424('0x34')]==='from-sip'){if(this[_0xb424('0x11')][_0x43c285['channel'][_0xb424('0x3d')]('-')[0x0]]){if(_[_0xb424('0x2b')](this['agents'][_0x43c285['channel'][_0xb424('0x3d')]('-')[0x0]]['destconnectedlinenum'])){this[_0xb424('0x11')][_0x43c285[_0xb424('0x36')][_0xb424('0x3d')]('-')[0x0]][_0xb424('0x38')]=_0x43c285['exten'];logger[_0xb424('0x41')]('[%s][voiceCallReport][newchannel]\x20sending\x20user:agentconnect\x20event:',_0x43c285[_0xb424('0x2f')],util['inspect']({'id':this[_0xb424('0x11')][_0x43c285[_0xb424('0x36')][_0xb424('0x3d')]('-')[0x0]]['id'],'destaccountcode':this['agents'][_0x43c285[_0xb424('0x36')][_0xb424('0x3d')]('-')[0x0]]['accountcode'],'destconnectedlinenum':_0x43c285[_0xb424('0x37')]},{'showHidden':![],'depth':null}));this['emit'](util[_0xb424('0x3b')](_0xb424('0x3c'),this['agents'][_0x43c285[_0xb424('0x36')]['split']('-')[0x0]][_0xb424('0x46')]),_0xb424('0x47'),{'id':this[_0xb424('0x11')][_0x43c285[_0xb424('0x36')][_0xb424('0x3d')]('-')[0x0]]['id'],'destaccountcode':this[_0xb424('0x11')][_0x43c285[_0xb424('0x36')][_0xb424('0x3d')]('-')[0x0]]['accountcode'],'destconnectedlinenum':_0x43c285[_0xb424('0x37')]});}}}}}catch(_0xd6915b){logger['error'](_0xb424('0x48'),_0x43c285[_0xb424('0x2f')],util[_0xb424('0x28')](_0xd6915b,{'showHidden':![],'depth':null}));}};VoiceCallReport[_0xb424('0x29')][_0xb424('0x13')]=function(_0x327132){try{if(this[_0xb424('0x2a')](_0x327132)){logger[_0xb424('0x41')]('[%s][voiceCallReport][newexten]\x20event:',_0x327132[_0xb424('0x2f')],util[_0xb424('0x28')](_0x327132,{'showHidden':![],'depth':null}));if(_0x327132['channel']===_0xb424('0x49')||_0x327132[_0xb424('0x37')]==='h')return;if(_0x327132[_0xb424('0x2f')]===_0x327132['linkedid']||this[_0xb424('0x12')][_0x327132['linkedid']]){_0x327132[_0xb424('0x4a')]=_0x327132[_0xb424('0x4a')]['toLowerCase']();_0x327132[_0xb424('0x4b')]=_0x327132[_0xb424('0x4c')]||_0x327132[_0xb424('0x4b')];if(_0x327132[_0xb424('0x4c')]&&!_0x327132['appdata']['startsWith'](_0xb424('0x4d'))&&_0x327132[_0xb424('0x4a')]!==_0xb424('0x9')){_0x327132[_0xb424('0x4b')]=_0x327132[_0xb424('0x4b')][_0xb424('0x4e')]();}logger[_0xb424('0x2c')](_0xb424('0x4f'),_0x327132[_0xb424('0x2f')],_0x327132['application'],_0x327132[_0xb424('0x4b')]);if(_[_0xb424('0x2b')](this[_0xb424('0x10')][_0x327132[_0xb424('0x2f')]])){this['channels'][_0x327132['uniqueid']]=new Channel();this[_0xb424('0x10')][_0x327132[_0xb424('0x2f')]][_0xb424('0x50')]=_0x327132[_0xb424('0x51')]?moment()['subtract'](moment[_0xb424('0x51')](_0x327132[_0xb424('0x51')])[_0xb424('0x52')](),'seconds')[_0xb424('0x3b')](_0xb424('0x43')):moment()[_0xb424('0x3b')](_0xb424('0x43'));this['channels'][_0x327132['uniqueid']][_0xb424('0x53')]=_0xb424('0xb');}_[_0xb424('0x31')](this[_0xb424('0x10')][_0x327132[_0xb424('0x2f')]],_[_0xb424('0x32')](_0x327132,_[_0xb424('0x33')](this[_0xb424('0x10')][_0x327132[_0xb424('0x2f')]])));if(_[_0xb424('0x54')](applications,_0x327132[_0xb424('0x4a')])){this[_0xb424('0x10')][_0x327132[_0xb424('0x2f')]][_0xb424('0x55')]=_0x327132[_0xb424('0x4a')];this['channels'][_0x327132['uniqueid']]['lastdata']=_0x327132[_0xb424('0x4b')];if(_0x327132['application']===_0xb424('0x56')&&_[_0xb424('0x57')](_0x327132[_0xb424('0x4b')]['toLowerCase'](),_0xb424('0x58'))){var _0x2b0b7e=_0x327132['applicationdata']['split']('=');var _0x2bf70f=_0x2b0b7e[0x0][_0xb424('0x4e')]()[_0xb424('0x59')](/cdr\((.*)\)/);if(_0x2bf70f){if(_0x2bf70f[0x1]===_0xb424('0x5a')&&!_[_0xb424('0x5b')](this[_0xb424('0x10')][_0x327132[_0xb424('0x2f')]][_0x2bf70f[0x1]]))return;this[_0xb424('0x10')][_0x327132[_0xb424('0x2f')]][_0x2bf70f[0x1]]=_0x2b0b7e[0x1];}}else if(_0x327132['application']==='queue'){this[_0xb424('0x10')][_0x327132[_0xb424('0x2f')]][_0xb424('0x9')]=_0x327132[_0xb424('0x4b')][_0xb424('0x3d')](',')[0x0];}}}}}catch(_0x215316){logger[_0xb424('0x27')](_0xb424('0x5c'),_0x327132[_0xb424('0x2f')],util[_0xb424('0x28')](_0x215316,{'showHidden':![],'depth':null}));}};VoiceCallReport[_0xb424('0x29')]['syncNewState']=function(_0x55f2fd){try{if(this['isNotNull'](_0x55f2fd)){logger['info']('[%s][voiceCallReport][newstate]\x20linkedid:%s\x20calleridname:%s\x20calleridnum:%s',_0x55f2fd[_0xb424('0x2f')],_0x55f2fd[_0xb424('0x30')],_0x55f2fd['calleridname'],_0x55f2fd[_0xb424('0x2d')]);logger[_0xb424('0x41')](_0xb424('0x5d'),_0x55f2fd[_0xb424('0x2f')],util['inspect'](_0x55f2fd,{'showHidden':![],'depth':null}));if(_0x55f2fd[_0xb424('0x45')]!=='6')return;if(_0x55f2fd['uniqueid']!==_0x55f2fd[_0xb424('0x30')]){var _0x55f627=moment();if(this[_0xb424('0x10')][_0x55f2fd[_0xb424('0x30')]]){if(!this[_0xb424('0x10')][_0x55f2fd[_0xb424('0x30')]][_0xb424('0x5e')]){this[_0xb424('0x10')][_0x55f2fd[_0xb424('0x30')]][_0xb424('0x5e')]=!![];this['channels'][_0x55f2fd['linkedid']]['answertime']=_0x55f627[_0xb424('0x3b')](_0xb424('0x43'));if(this[_0xb424('0x10')][_0x55f2fd[_0xb424('0x30')]]['starttime']){this[_0xb424('0x10')][_0x55f2fd['linkedid']]['holdtime']=_0x55f627[_0xb424('0x5f')](this[_0xb424('0x10')][_0x55f2fd[_0xb424('0x30')]][_0xb424('0x50')],_0xb424('0x52'));}}this[_0xb424('0x10')][_0x55f2fd['linkedid']][_0xb424('0x30')]=_0x55f2fd[_0xb424('0x2f')];if(_0x55f2fd[_0xb424('0x2d')]!==_0xb424('0x60')){this[_0xb424('0x10')][_0x55f2fd[_0xb424('0x30')]][_0xb424('0x39')]=_0x55f2fd[_0xb424('0x2d')];}this['channels'][_0x55f2fd['linkedid']][_0xb424('0x61')]=_0x55f2fd['calleridname'];this['channels'][_0x55f2fd['linkedid']][_0xb424('0x62')]=_0x55f2fd['channel'];this[_0xb424('0x10')][_0x55f2fd[_0xb424('0x30')]]['disposition']=dispositions[_[_0xb424('0x44')](_0x55f2fd[_0xb424('0x45')])];if(this[_0xb424('0x11')][_0x55f2fd[_0xb424('0x36')]['split']('-')[0x0]]){this[_0xb424('0x10')][_0x55f2fd[_0xb424('0x30')]][_0xb424('0x63')]=this[_0xb424('0x11')][_0x55f2fd[_0xb424('0x36')]['split']('-')[0x0]]['id'];this[_0xb424('0x10')][_0x55f2fd[_0xb424('0x30')]][_0xb424('0x64')]=this[_0xb424('0x11')][_0x55f2fd[_0xb424('0x36')][_0xb424('0x3d')]('-')[0x0]][_0xb424('0x46')];}}if(this[_0xb424('0x10')][_0x55f2fd[_0xb424('0x2f')]]){if(!this[_0xb424('0x10')][_0x55f2fd[_0xb424('0x2f')]]['answered']){this[_0xb424('0x10')][_0x55f2fd['uniqueid']][_0xb424('0x5e')]=!![];this[_0xb424('0x10')][_0x55f2fd[_0xb424('0x2f')]][_0xb424('0x65')]=_0x55f627[_0xb424('0x3b')](_0xb424('0x43'));if(this[_0xb424('0x10')][_0x55f2fd['uniqueid']][_0xb424('0x50')]){this['channels'][_0x55f2fd[_0xb424('0x2f')]][_0xb424('0x66')]=_0x55f627[_0xb424('0x5f')](this[_0xb424('0x10')][_0x55f2fd[_0xb424('0x2f')]]['starttime'],_0xb424('0x52'));}}if(_0x55f2fd[_0xb424('0x2d')]!==_0xb424('0x60')){this['channels'][_0x55f2fd[_0xb424('0x2f')]][_0xb424('0x39')]=_0x55f2fd[_0xb424('0x2d')];}this[_0xb424('0x10')][_0x55f2fd[_0xb424('0x2f')]][_0xb424('0x61')]=_0x55f2fd[_0xb424('0x67')];this[_0xb424('0x10')][_0x55f2fd[_0xb424('0x2f')]][_0xb424('0x62')]=_0x55f2fd[_0xb424('0x36')];this['channels'][_0x55f2fd['uniqueid']][_0xb424('0x53')]=dispositions[_['toNumber'](_0x55f2fd[_0xb424('0x45')])];}}else{if(this['channels'][_0x55f2fd[_0xb424('0x2f')]]){if(this['agents'][_0x55f2fd[_0xb424('0x36')][_0xb424('0x3d')]('-')[0x0]]){this[_0xb424('0x10')][_0x55f2fd['uniqueid']][_0xb424('0x63')]=this[_0xb424('0x11')][_0x55f2fd[_0xb424('0x36')][_0xb424('0x3d')]('-')[0x0]]['id'];this[_0xb424('0x10')][_0x55f2fd[_0xb424('0x2f')]]['membername']=this[_0xb424('0x11')][_0x55f2fd[_0xb424('0x36')][_0xb424('0x3d')]('-')[0x0]][_0xb424('0x46')];}}}if(_0x55f2fd[_0xb424('0x34')]===_0xb424('0x35')){if(this[_0xb424('0x11')][_0x55f2fd['channel']['split']('-')[0x0]]){this['agents'][_0x55f2fd[_0xb424('0x36')][_0xb424('0x3d')]('-')[0x0]][_0xb424('0x38')]=_0x55f2fd['exten'];var _0x4c91ba,_0x1c8847;if(this['channels'][_0x55f2fd[_0xb424('0x2f')]]){_0x4c91ba=this[_0xb424('0x10')][_0x55f2fd['uniqueid']][_0xb424('0x68')];_0x1c8847=this['channels'][_0x55f2fd[_0xb424('0x2f')]][_0xb424('0x9')];}else if(this[_0xb424('0x10')][_0x55f2fd[_0xb424('0x30')]]){_0x4c91ba=this[_0xb424('0x10')][_0x55f2fd[_0xb424('0x30')]]['routealias'];_0x1c8847=this[_0xb424('0x10')][_0x55f2fd['linkedid']][_0xb424('0x9')];}this['agents'][_0x55f2fd[_0xb424('0x36')][_0xb424('0x3d')]('-')[0x0]][_0xb424('0x9')]=_0x1c8847;this[_0xb424('0x11')][_0x55f2fd[_0xb424('0x36')][_0xb424('0x3d')]('-')[0x0]][_0xb424('0x68')]=_0x4c91ba;logger[_0xb424('0x41')](_0xb424('0x69'),_0x55f2fd[_0xb424('0x2f')],util['inspect']({'id':this[_0xb424('0x11')][_0x55f2fd[_0xb424('0x36')][_0xb424('0x3d')]('-')[0x0]]['id'],'destaccountcode':this['agents'][_0x55f2fd[_0xb424('0x36')]['split']('-')[0x0]][_0xb424('0x3e')],'destconnectedlinenum':_0x55f2fd[_0xb424('0x37')],'routealias':_0x4c91ba,'queue':_0x1c8847||undefined},{'showHidden':![],'depth':null}));this[_0xb424('0x3a')](util[_0xb424('0x3b')](_0xb424('0x3c'),this[_0xb424('0x11')][_0x55f2fd[_0xb424('0x36')][_0xb424('0x3d')]('-')[0x0]][_0xb424('0x46')]),'user:agentconnect',{'id':this[_0xb424('0x11')][_0x55f2fd[_0xb424('0x36')]['split']('-')[0x0]]['id'],'agentconnected':!![],'destaccountcode':this[_0xb424('0x11')][_0x55f2fd[_0xb424('0x36')][_0xb424('0x3d')]('-')[0x0]][_0xb424('0x3e')],'destconnectedlinenum':_0x55f2fd[_0xb424('0x37')],'routealias':_0x4c91ba,'queue':_0x1c8847||undefined});}}}}catch(_0x4d0229){logger[_0xb424('0x27')](_0xb424('0x6a'),_0x55f2fd[_0xb424('0x2f')],util['inspect'](_0x4d0229,{'showHidden':![],'depth':null}));}};VoiceCallReport[_0xb424('0x29')][_0xb424('0x6b')]=function(_0x4c0a6b,_0x555c1d){try{if(this[_0xb424('0x10')][_0x4c0a6b]){logger['info'](_0xb424('0x6c'),_0x4c0a6b,_0x555c1d);this[_0xb424('0x10')][_0x4c0a6b][_0xb424('0x6d')]=!![];if(_[_0xb424('0x6e')](_0x555c1d,_0xb424('0x6f'))){_0x555c1d=_0x555c1d['replace'](_0xb424('0x6f'),_0xb424('0x70'));}this[_0xb424('0x10')][_0x4c0a6b][_0xb424('0x71')]=_0x555c1d;var _0x39f4ae=_[_0xb424('0x72')](this[_0xb424('0x10')][_0x4c0a6b][_0xb424('0x73')],{'filename':_0x555c1d});if(_[_0xb424('0x5b')](_0x39f4ae)){this['channels'][_0x4c0a6b]['monitors'][_0xb424('0x74')]({'filename':_0x555c1d,'createdAt':moment()[_0xb424('0x3b')](_0xb424('0x43')),'mixmonitorid':'','status':_0xb424('0x75')});}}}catch(_0xf98b76){logger[_0xb424('0x27')](_0xb424('0x76'),_0x4c0a6b,util[_0xb424('0x28')](_0xf98b76,{'showHidden':![],'depth':null}));}};VoiceCallReport[_0xb424('0x29')][_0xb424('0x18')]=function(_0x19ba64){try{if(this[_0xb424('0x2a')](_0x19ba64)){logger['debug'](_0xb424('0x77'),_0x19ba64[_0xb424('0x2f')],util['inspect'](_0x19ba64,{'showHidden':![],'depth':null}));if(this[_0xb424('0x10')][_0x19ba64['uniqueid']]&&_0x19ba64[_0xb424('0x36')]!='OutgoingSpoolFailed'){if(this[_0xb424('0x2a')](_0x19ba64[_0xb424('0x78')])){if(this[_0xb424('0x2a')](_0x19ba64[_0xb424('0x78')][_0xb424('0x79')])){logger[_0xb424('0x2c')](_0xb424('0x7a'),_0x19ba64[_0xb424('0x2f')],_0x19ba64[_0xb424('0x7b')]);this['syncMixMonitorFilename'](_0x19ba64[_0xb424('0x2f')],_0x19ba64['value']);}else if(this[_0xb424('0x2a')](_0x19ba64['variable'][_0xb424('0x7c')])){logger[_0xb424('0x2c')]('[%s][voiceCallReport][varset]\x20variable:xmd-phone\x20value:%s',_0x19ba64['uniqueid'],_0x19ba64['value']);this['channels'][_0x19ba64['uniqueid']]['calleridnum']=_0x19ba64[_0xb424('0x7b')];}else if(this['isNotNull'](_0x19ba64[_0xb424('0x78')][_0xb424('0x7d')])){logger[_0xb424('0x2c')](_0xb424('0x7e'),_0x19ba64[_0xb424('0x2f')],_0x19ba64[_0xb424('0x7b')]);this[_0xb424('0x10')][_0x19ba64[_0xb424('0x2f')]][_0xb424('0x7f')]=_0x19ba64[_0xb424('0x7b')];}else if(this[_0xb424('0x2a')](_0x19ba64['variable'][_0xb424('0x80')])){logger[_0xb424('0x2c')]('[%s][voiceCallReport][varset]\x20variable:xmd-cdrtype\x20value:%s',_0x19ba64['uniqueid'],_0x19ba64[_0xb424('0x7b')]);this[_0xb424('0x10')][_0x19ba64[_0xb424('0x2f')]][_0xb424('0x5a')]=_0x19ba64[_0xb424('0x7b')];}else if(this[_0xb424('0x2a')](_0x19ba64['variable'][_0xb424('0x81')])){logger[_0xb424('0x2c')](_0xb424('0x82'),_0x19ba64['uniqueid'],_0x19ba64['value'][_0xb424('0x3d')](',')[0x0]);this[_0xb424('0x10')][_0x19ba64['uniqueid']][_0xb424('0x9')]=_0x19ba64[_0xb424('0x7b')][_0xb424('0x3d')](',')[0x0];}else if(this[_0xb424('0x2a')](_0x19ba64[_0xb424('0x78')][_0xb424('0x83')])){logger[_0xb424('0x2c')](_0xb424('0x84'),_0x19ba64['uniqueid'],_0x19ba64[_0xb424('0x7b')]);this[_0xb424('0x10')][_0x19ba64['uniqueid']][_0xb424('0x85')]=_0x19ba64['value'];}else if(this[_0xb424('0x2a')](_0x19ba64[_0xb424('0x78')]['xmd-destination'])){logger['info'](_0xb424('0x86'),_0x19ba64[_0xb424('0x2f')],_0x19ba64[_0xb424('0x7b')]);this[_0xb424('0x10')][_0x19ba64[_0xb424('0x2f')]]['destination']=_0x19ba64[_0xb424('0x7b')];}else if(this[_0xb424('0x2a')](_0x19ba64[_0xb424('0x78')]['xmd-callerid-preview'])){logger[_0xb424('0x2c')](_0xb424('0x87'),_0x19ba64[_0xb424('0x2f')],_0x19ba64[_0xb424('0x7b')]);this[_0xb424('0x10')][_0x19ba64['uniqueid']][_0xb424('0x88')]=_0x19ba64[_0xb424('0x7b')];}else if(this['isNotNull'](_0x19ba64[_0xb424('0x78')]['xmcs-queue'])){logger[_0xb424('0x2c')]('[%s][voiceCallReport][varset]\x20variable:xmcs-queue\x20value:%s',_0x19ba64[_0xb424('0x2f')],_0x19ba64['value']);this[_0xb424('0x10')][_0x19ba64['uniqueid']][_0xb424('0x9')]=_0x19ba64[_0xb424('0x7b')];}else if(this[_0xb424('0x2a')](_0x19ba64[_0xb424('0x78')][_0xb424('0x89')])){logger['info'](_0xb424('0x8a'),_0x19ba64[_0xb424('0x2f')],_0x19ba64['value']);this[_0xb424('0x10')][_0x19ba64[_0xb424('0x2f')]][_0xb424('0x8b')]=_0x19ba64['value'];}}}else if(this[_0xb424('0x2a')](_0x19ba64[_0xb424('0x78')][_0xb424('0x79')])){if(_0x19ba64[_0xb424('0x7b')]){var _0x26e418=path[_0xb424('0x8c')](_0x19ba64[_0xb424('0x7b')])[_0xb424('0x46')];logger[_0xb424('0x2c')](_0xb424('0x7a'),_0x26e418,_0x19ba64[_0xb424('0x7b')]);this[_0xb424('0x6b')](_0x26e418,_0x19ba64[_0xb424('0x7b')]);}}else if(this[_0xb424('0x10')][_0x19ba64[_0xb424('0x30')]]){if(this[_0xb424('0x2a')](_0x19ba64['variable'])){if(this[_0xb424('0x2a')](_0x19ba64[_0xb424('0x78')][_0xb424('0x89')])){logger[_0xb424('0x2c')](_0xb424('0x8a'),_0x19ba64[_0xb424('0x30')],_0x19ba64[_0xb424('0x7b')]);this[_0xb424('0x10')][_0x19ba64['linkedid']][_0xb424('0x8d')]=_0x19ba64[_0xb424('0x7b')];}}}}}catch(_0x4794ec){logger[_0xb424('0x27')](_0xb424('0x8e'),_0x19ba64[_0xb424('0x2f')],util[_0xb424('0x28')](_0x4794ec,{'showHidden':![],'depth':null}));}};VoiceCallReport['prototype'][_0xb424('0x1a')]=function(_0x411bb4){try{if(this[_0xb424('0x2a')](_0x411bb4)){logger[_0xb424('0x41')](_0xb424('0x8f'),_0x411bb4['uniqueid'],util['inspect'](_0x411bb4,{'showHidden':![],'depth':null}));if(this[_0xb424('0x12')][_0x411bb4[_0xb424('0x30')]]){if(this[_0xb424('0x10')][this[_0xb424('0x12')][_0x411bb4[_0xb424('0x30')]][_0xb424('0x30')]]){this[_0xb424('0x10')][this[_0xb424('0x12')][_0x411bb4[_0xb424('0x30')]][_0xb424('0x30')]][_0xb424('0x2f')]=_0x411bb4[_0xb424('0x2f')];this[_0xb424('0x10')][this[_0xb424('0x12')][_0x411bb4['linkedid']][_0xb424('0x30')]][_0xb424('0x5e')]=this[_0xb424('0x10')][_0x411bb4[_0xb424('0x2f')]][_0xb424('0x5e')];this[_0xb424('0x10')][this[_0xb424('0x12')][_0x411bb4['linkedid']][_0xb424('0x30')]]['answertime']=this[_0xb424('0x10')][_0x411bb4[_0xb424('0x2f')]]['answertime'];this[_0xb424('0x10')][this['blindTransfers'][_0x411bb4['linkedid']][_0xb424('0x30')]][_0xb424('0x62')]=this[_0xb424('0x10')][this[_0xb424('0x12')][_0x411bb4[_0xb424('0x30')]][_0xb424('0x30')]][_0xb424('0x36')];this['channels'][this[_0xb424('0x12')][_0x411bb4['linkedid']]['linkedid']][_0xb424('0x53')]=this[_0xb424('0x10')][_0x411bb4[_0xb424('0x2f')]]['disposition'];this[_0xb424('0x10')][_0x411bb4['uniqueid']]=this[_0xb424('0x10')][this[_0xb424('0x12')][_0x411bb4[_0xb424('0x30')]]['linkedid']];delete this[_0xb424('0x10')][this[_0xb424('0x12')][_0x411bb4['linkedid']]['linkedid']];}else if(this[_0xb424('0x10')][this[_0xb424('0x12')][_0x411bb4['linkedid']][_0xb424('0x2f')]]){this[_0xb424('0x10')][this[_0xb424('0x12')][_0x411bb4[_0xb424('0x30')]][_0xb424('0x2f')]][_0xb424('0x2f')]=[this['channels'][this[_0xb424('0x12')][_0x411bb4[_0xb424('0x30')]][_0xb424('0x2f')]][_0xb424('0x30')],this['channels'][this[_0xb424('0x12')][_0x411bb4[_0xb424('0x30')]][_0xb424('0x2f')]][_0xb424('0x30')]=this[_0xb424('0x10')][this[_0xb424('0x12')][_0x411bb4[_0xb424('0x30')]][_0xb424('0x2f')]][_0xb424('0x2f')]][0x0];this[_0xb424('0x10')][this[_0xb424('0x12')][_0x411bb4[_0xb424('0x30')]][_0xb424('0x2f')]]['answered']=this['channels'][_0x411bb4[_0xb424('0x2f')]][_0xb424('0x5e')];this[_0xb424('0x10')][this['blindTransfers'][_0x411bb4[_0xb424('0x30')]][_0xb424('0x2f')]][_0xb424('0x65')]=this['channels'][_0x411bb4[_0xb424('0x2f')]][_0xb424('0x65')];this[_0xb424('0x10')][this[_0xb424('0x12')][_0x411bb4[_0xb424('0x30')]]['uniqueid']]['destinationchannel']=this[_0xb424('0x10')][this[_0xb424('0x12')][_0x411bb4[_0xb424('0x30')]][_0xb424('0x2f')]][_0xb424('0x36')];this['channels'][this[_0xb424('0x12')][_0x411bb4[_0xb424('0x30')]][_0xb424('0x2f')]]['disposition']=this[_0xb424('0x10')][_0x411bb4[_0xb424('0x2f')]]['disposition'];this[_0xb424('0x10')][_0x411bb4[_0xb424('0x2f')]]=this[_0xb424('0x10')][this['blindTransfers'][_0x411bb4[_0xb424('0x30')]][_0xb424('0x2f')]];delete this[_0xb424('0x10')][this['blindTransfers'][_0x411bb4[_0xb424('0x30')]][_0xb424('0x2f')]];}}if(this[_0xb424('0x10')][_0x411bb4[_0xb424('0x2f')]]){logger[_0xb424('0x2c')](_0xb424('0x90'),_0x411bb4[_0xb424('0x2f')],_0x411bb4[_0xb424('0x91')]);var _0x5f891e=moment();this[_0xb424('0x10')][_0x411bb4[_0xb424('0x2f')]][_0xb424('0x92')]=_0x5f891e['format'](_0xb424('0x43'));this['channels'][_0x411bb4['uniqueid']][_0xb424('0x51')]=_0x5f891e[_0xb424('0x5f')](this[_0xb424('0x10')][_0x411bb4[_0xb424('0x2f')]][_0xb424('0x50')],'seconds');if(this[_0xb424('0x10')][_0x411bb4[_0xb424('0x2f')]]['answered']){this[_0xb424('0x10')][_0x411bb4['uniqueid']]['billableseconds']=_0x5f891e['diff'](this[_0xb424('0x10')][_0x411bb4[_0xb424('0x2f')]]['answertime'],_0xb424('0x52'));this[_0xb424('0x10')][_0x411bb4[_0xb424('0x2f')]][_0xb424('0x66')]=this[_0xb424('0x10')][_0x411bb4['uniqueid']]['duration']-this[_0xb424('0x10')][_0x411bb4[_0xb424('0x2f')]]['billableseconds'];}if(_0x411bb4[_0xb424('0x34')]===_0xb424('0x35')){if(this[_0xb424('0x11')][_0x411bb4[_0xb424('0x36')]['split']('-')[0x0]]){this[_0xb424('0x11')][_0x411bb4[_0xb424('0x36')][_0xb424('0x3d')]('-')[0x0]]=_[_0xb424('0x93')](this[_0xb424('0x11')][_0x411bb4[_0xb424('0x36')][_0xb424('0x3d')]('-')[0x0]],[_0xb424('0x38')]);logger[_0xb424('0x41')](_0xb424('0x94'),_0x411bb4[_0xb424('0x2f')],util[_0xb424('0x28')]({'id':this[_0xb424('0x11')][_0x411bb4[_0xb424('0x36')][_0xb424('0x3d')]('-')[0x0]]['id'],'destaccountcode':this[_0xb424('0x11')][_0x411bb4[_0xb424('0x36')][_0xb424('0x3d')]('-')[0x0]][_0xb424('0x3e')]},{'showHidden':![],'depth':null}));this[_0xb424('0x3a')](util[_0xb424('0x3b')](_0xb424('0x3c'),this[_0xb424('0x11')][_0x411bb4[_0xb424('0x36')][_0xb424('0x3d')]('-')[0x0]][_0xb424('0x46')]),_0xb424('0x95'),{'id':this[_0xb424('0x11')][_0x411bb4['channel']['split']('-')[0x0]]['id'],'destaccountcode':this['agents'][_0x411bb4[_0xb424('0x36')][_0xb424('0x3d')]('-')[0x0]]['accountcode']});for(var _0x4a7de7=0x0;_0x4a7de7<Object[_0xb424('0x33')](this[_0xb424('0x11')])[_0xb424('0x96')];_0x4a7de7++){var _0xdef77e=Object[_0xb424('0x33')](this[_0xb424('0x11')])[_0x4a7de7];var _0x4fde11=this['agents'][_0xdef77e];if(_0x4fde11[_0xb424('0x3e')]===Number(_0x411bb4['connectedlinenum'])){this[_0xb424('0x3a')](util[_0xb424('0x3b')](_0xb424('0x3c'),_0x4fde11[_0xb424('0x46')]),_0xb424('0x95'),{'id':_0x4fde11['id'],'destaccountcode':_0x4fde11[_0xb424('0x3e')],'transfer':this[_0xb424('0x10')][_0x411bb4[_0xb424('0x2f')]]['transferType']});break;}}}}var _0x5ebdb8=this;Promise[_0xb424('0x97')]()[_0xb424('0x98')](function(){var _0x504133=_0x5ebdb8[_0xb424('0x10')][_0x411bb4['uniqueid']];if(typeof _0x504133['transferType']===_0xb424('0x99'))return;if(_[_0xb424('0x9a')](_0x504133[_0xb424('0x73')]))return;return RpcSetting[_0xb424('0x9b')]()['then'](function(_0x46fd18){if(!_0x46fd18[_0xb424('0x9c')])return;return Promise[_0xb424('0x97')]()[_0xb424('0x98')](function(){return ami[_0xb424('0x9d')]({'action':_0xb424('0x9e'),'channel':_0x504133[_0xb424('0x36')]})['catch'](function(){});})['then'](function(){return ami['Action']({'action':'StopMixMonitor','channel':_0x504133['destinationchannel']})[_0xb424('0x9f')](function(){})['finally'](function(){var _0x5dcf97=_0x5ebdb8[_0xb424('0x11')][_0x504133[_0xb424('0x62')][_0xb424('0x3d')]('-')[0x0]];if(!_0x5dcf97)return;io['emit'](_0xb424('0xa0'),{'agentId':_0x5dcf97['id'],'uniqueid':_0x504133[_0xb424('0x2f')]});});});});})[_0xb424('0x98')](function(){if(_0x411bb4['event']==='BlindTransfer'){_0x5ebdb8[_0xb424('0x12')][_0x411bb4[_0xb424('0x2f')]]=_0x411bb4;}else{if(_0x5ebdb8[_0xb424('0x10')][_0x411bb4[_0xb424('0x2f')]][_0xb424('0x5a')]==='outbound'&&_0x5ebdb8['blindTransfers'][_0x411bb4[_0xb424('0x2f')]]){_0x5ebdb8['channels'][_0x411bb4[_0xb424('0x2f')]]['uniqueid']=[_0x5ebdb8[_0xb424('0x10')][_0x411bb4[_0xb424('0x2f')]][_0xb424('0x30')],_0x5ebdb8[_0xb424('0x10')][_0x411bb4[_0xb424('0x2f')]][_0xb424('0x30')]=_0x5ebdb8[_0xb424('0x10')][_0x411bb4[_0xb424('0x2f')]][_0xb424('0x2f')]][0x0];delete _0x5ebdb8['blindTransfers'][_0x411bb4[_0xb424('0x2f')]];}}logger[_0xb424('0x41')](_0xb424('0xa1'),_0x411bb4[_0xb424('0x2f')],util[_0xb424('0x28')](_0x5ebdb8['channels'][_0x411bb4[_0xb424('0x2f')]],{'showHidden':![],'depth':null}));ami['emit'](_0xb424('0xa2'),_0x5ebdb8[_0xb424('0x10')][_0x411bb4['uniqueid']]);delete _0x5ebdb8[_0xb424('0x10')][_0x411bb4[_0xb424('0x2f')]];});}}}catch(_0x23f476){logger['error'](_0xb424('0xa3'),_0x411bb4[_0xb424('0x2f')],util[_0xb424('0x28')](_0x23f476,{'showHidden':![],'depth':null}));}};VoiceCallReport[_0xb424('0x29')]['syncAttendedTransfer']=function(_0x4a54ca){try{if(this[_0xb424('0x2a')](_0x4a54ca)){logger[_0xb424('0x2c')](_0xb424('0xa4'),_0x4a54ca[_0xb424('0x2f')],_0x4a54ca[_0xb424('0xa5')],_0x4a54ca[_0xb424('0xa6')]);logger['debug']('[%s][voiceCallReport][attendedtransfer]\x20event:',_0x4a54ca[_0xb424('0x2f')],util[_0xb424('0x28')](_0x4a54ca,{'showHidden':![],'depth':null}));var _0x4883de;if(this[_0xb424('0x10')][_0x4a54ca[_0xb424('0xa7')]]){this[_0xb424('0x10')][_0x4a54ca['transfereeuniqueid']]['transfercalleridnum']=_0x4a54ca[_0xb424('0xa5')];this['channels'][_0x4a54ca[_0xb424('0xa7')]][_0xb424('0xa8')]=_0x4a54ca[_0xb424('0xa6')];if(this[_0xb424('0x10')][_0x4a54ca[_0xb424('0xa9')]]){_0x4883de=this[_0xb424('0x10')][_0x4a54ca['secondtransfereruniqueid']];this[_0xb424('0x10')][_0x4a54ca['secondtransfereruniqueid']]=this['channels'][_0x4a54ca[_0xb424('0xa7')]];this[_0xb424('0x10')][_0x4a54ca[_0xb424('0xa7')]]=_0x4883de;}this[_0xb424('0x10')][_0x4a54ca['secondtransfereruniqueid']][_0xb424('0xaa')]=_0xb424('0xab');}else if(this[_0xb424('0x10')][_0x4a54ca[_0xb424('0xac')]]){this[_0xb424('0x10')][_0x4a54ca[_0xb424('0xac')]][_0xb424('0xad')]=_0x4a54ca[_0xb424('0xa5')];this['channels'][_0x4a54ca[_0xb424('0xac')]][_0xb424('0xa8')]=_0x4a54ca[_0xb424('0xa6')];if(this[_0xb424('0x10')][_0x4a54ca[_0xb424('0xae')]]){_0x4883de=this[_0xb424('0x10')][_0x4a54ca[_0xb424('0xae')]];this[_0xb424('0x10')][_0x4a54ca[_0xb424('0xae')]]=this[_0xb424('0x10')][_0x4a54ca[_0xb424('0xac')]];this['channels'][_0x4a54ca['transfertargetuniqueid']]=_0x4883de;}this['channels'][_0x4a54ca[_0xb424('0xac')]][_0xb424('0xaa')]='ATTENDED';}if((this[_0xb424('0x10')][_0x4a54ca[_0xb424('0xae')]]||this['channels'][_0x4a54ca[_0xb424('0xaf')]])&&this['channels'][_0x4a54ca[_0xb424('0xa9')]]){var _0x3e7a4c=_[_0xb424('0xb0')]([this['channels'][_0x4a54ca[_0xb424('0xae')]],this['channels'][_0x4a54ca[_0xb424('0xaf')]],this[_0xb424('0x10')][_0x4a54ca[_0xb424('0xa9')]]],function(_0x156da0){return _0x156da0&&_0x156da0[_0xb424('0x5a')]==='outbound'&&_0x156da0['routeid'];});if(_0x3e7a4c){if(this[_0xb424('0x10')][_0x4a54ca[_0xb424('0xae')]])this[_0xb424('0x10')][_0x4a54ca[_0xb424('0xae')]][_0xb424('0xaa')]=_0xb424('0xab');if(this[_0xb424('0x10')][_0x4a54ca[_0xb424('0xaf')]])this[_0xb424('0x10')][_0x4a54ca[_0xb424('0xaf')]][_0xb424('0xaa')]=_0xb424('0xab');this['channels'][_0x4a54ca[_0xb424('0xa9')]][_0xb424('0xaa')]=_0xb424('0xab');}}}}catch(_0xfc6085){logger[_0xb424('0x27')](_0xb424('0xb1'),_0x4a54ca[_0xb424('0x2f')],util[_0xb424('0x28')](_0xfc6085,{'showHidden':![],'depth':null}));}};VoiceCallReport['prototype'][_0xb424('0x20')]=function(_0x5ee602){try{if(this[_0xb424('0x2a')](_0x5ee602)){logger['info'](_0xb424('0xb2'),_0x5ee602[_0xb424('0x2f')],_0x5ee602[_0xb424('0xb3')],_0x5ee602[_0xb424('0xb4')]);logger['debug'](_0xb424('0xb5'),_0x5ee602[_0xb424('0x2f')],util[_0xb424('0x28')](_0x5ee602,{'showHidden':![],'depth':null}));if(this['channels'][_0x5ee602['transfereeuniqueid']]){this['channels'][_0x5ee602[_0xb424('0xa7')]]['transfercalleridnum']=_0x5ee602[_0xb424('0xb3')];this[_0xb424('0x10')][_0x5ee602[_0xb424('0xa7')]][_0xb424('0xa8')]=_0x5ee602[_0xb424('0xb4')];this[_0xb424('0x10')][_0x5ee602[_0xb424('0xa7')]][_0xb424('0xaa')]=_0xb424('0xb6');this[_0xb424('0x1a')]({'event':_0xb424('0xb7'),'uniqueid':_0x5ee602['transfereeuniqueid'],'linkedid':_0x5ee602[_0xb424('0xb8')],'context':_0x5ee602['context'],'channel':_0x5ee602[_0xb424('0xb9')]});}else{this['channels'][_0x5ee602[_0xb424('0xb8')]][_0xb424('0xaa')]=_0xb424('0xb6');this[_0xb424('0x1a')]({'event':_0xb424('0xb7'),'uniqueid':_0x5ee602['transfereruniqueid'],'linkedid':_0x5ee602[_0xb424('0xa7')],'context':_0x5ee602[_0xb424('0x34')],'channel':_0x5ee602['transfererchannel']});}}}catch(_0x179479){logger['error']('[%s][voiceCallReport][blindtransfer]',_0x5ee602[_0xb424('0x2f')],util[_0xb424('0x28')](_0x179479,{'showHidden':![],'depth':null}));}};VoiceCallReport[_0xb424('0x29')][_0xb424('0x22')]=function(_0x31806f){try{if(this[_0xb424('0x2a')](_0x31806f)){logger[_0xb424('0x41')]('[%s][voiceCallReport][musiconholdstart]\x20event:',_0x31806f['uniqueid'],util['inspect'](_0x31806f,{'showHidden':![],'depth':null}));if(this[_0xb424('0x10')][_0x31806f['uniqueid']]){if(!_[_0xb424('0x5b')](this[_0xb424('0x10')][_0x31806f[_0xb424('0x2f')]]['answertime'])){this['channels'][_0x31806f[_0xb424('0x2f')]]['mohstarttime']=moment()[_0xb424('0x3b')](_0xb424('0x43'));logger[_0xb424('0x2c')](_0xb424('0xba'),_0x31806f[_0xb424('0x2f')],this[_0xb424('0x10')][_0x31806f[_0xb424('0x2f')]][_0xb424('0xbb')]);}}}}catch(_0x2cb7a7){logger[_0xb424('0x27')](_0xb424('0xbc'),_0x31806f[_0xb424('0x2f')],util[_0xb424('0x28')](_0x2cb7a7,{'showHidden':![],'depth':null}));}};VoiceCallReport[_0xb424('0x29')]['syncMusicOnHoldStop']=function(_0x121df3){try{if(this[_0xb424('0x2a')](_0x121df3)){logger[_0xb424('0x41')]('[%s][voiceCallReport][musiconholdstop]\x20event:',_0x121df3['uniqueid'],util[_0xb424('0x28')](_0x121df3,{'showHidden':![],'depth':null}));if(this[_0xb424('0x10')][_0x121df3[_0xb424('0x2f')]]){if(!_[_0xb424('0x5b')](this[_0xb424('0x10')][_0x121df3[_0xb424('0x2f')]][_0xb424('0xbb')])){this[_0xb424('0x10')][_0x121df3[_0xb424('0x2f')]][_0xb424('0xbd')]+=moment()[_0xb424('0xbe')](0x0)[_0xb424('0x5f')](this[_0xb424('0x10')][_0x121df3['uniqueid']][_0xb424('0xbb')],_0xb424('0x52'));logger[_0xb424('0x2c')]('[%s][voiceCallReport][musiconholdstop]\x20mohtime:%s',_0x121df3[_0xb424('0x2f')],this[_0xb424('0x10')][_0x121df3[_0xb424('0x2f')]][_0xb424('0xbd')]);delete this[_0xb424('0x10')][_0x121df3['uniqueid']][_0xb424('0xbb')];}}}}catch(_0x23e92c){logger[_0xb424('0x27')]('[%s][voiceCallReport][musiconholdstop]',_0x121df3[_0xb424('0x2f')],util[_0xb424('0x28')](_0x23e92c,{'showHidden':![],'depth':null}));}};module[_0xb424('0xbf')]=VoiceCallReport;
\ No newline at end of file
index 3c33640..1946029 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0x6f47=['debug','[%s][voiceDialReport][dialbegin]\x20event:','uniqueid','inspect','merge','format','YYYY-MM-DD\x20HH:mm:ss','called','channel','substring','lastIndexOf','omit','event','membername','interface','voice_outbound_channel:save','[%s][voiceDialReport][dialbegin]\x20sending\x20dialbegin\x20event:','error','[%s][voiceDialReport][dialbegin]','[%s][voiceDialReport][dialend]\x20event:','connectedlinenum','connectedlinename','answertime','lastevent','connect','info','[%s][voiceDialReport][dialend]\x20agent:%s\x20lastevent:connect','[%s][voiceDialReport][dialend]\x20sending\x20dialconnect\x20event:','[%s][voiceDialReport][dialend]\x20sending\x20voice_outbound_channel:save\x20event:','voice:outbound','[%s][voiceDialReport][dialend]','[%s][voiceDialReport][varset]\x20event:','addVariable','keys','variable','value','outboundrouteid','voice','[%s][voiceDialReport][varset]\x20outboundrouteid:%s\x20variable:%s\x20value:%s','[%s][voiceDialReport][varset]\x20sending\x20voice_outbound_channel:save\x20event:','[%s][voiceDialReport][varset]','rtpaudioqosbridged','rtpaudioqosjitterbridged','rtpaudioqosloss','rtpaudioqoslossbridged','rtpaudioqosrttbridged','sipcallid','bridgepeer','bridgepvtcallid','membercalls','memberdynamic','memberinterface','memberrealtime','isNil','includes','[%s][voiceDialReport][hangup]\x20event:','cause-txt','starttime','seconds','complete','answered','billableseconds','endtime','diff','sumHoldTime','holdtime','duration','custom:voiceDialReport','custom:dialend','[%s][voiceDialReport][hangup]\x20sending\x20voice_outbound:save\x20event:','voice_outbound:save','stringify','[%s][voiceDialReport][hangup]\x20sending\x20voice_outbound_channel:remove\x20event:','voice_outbound_channel:remove','linkedid','destuniqueid','[%s][voiceDialReport][newexten]\x20event:','application','set','applicationdata','appdata','toLowerCase','startsWith','cdr(','[%s][voiceDialReport][newexten]\x20application:%s\x20appdata:%s','split','[%s][voiceDialReport][newexten]','exports','moment','util','../../../config/environment','ami','redis','defaults','localhost','channels','outbound','applications','variables','dialbegin','dialend','syncDialEnd','syncVarSet','bind','hangup','syncHangup','prototype','isNotNull','isUndefined','emit','syncDialBegin'];(function(_0x16e516,_0x17d143){var _0xab096a=function(_0x4aedbf){while(--_0x4aedbf){_0x16e516['push'](_0x16e516['shift']());}};_0xab096a(++_0x17d143);}(_0x6f47,0xc7));var _0x76f4=function(_0x19e35c,_0x29cd1e){_0x19e35c=_0x19e35c-0x0;var _0x3e1fe8=_0x6f47[_0x19e35c];return _0x3e1fe8;};'use strict';var _=require('lodash');var moment=require(_0x76f4('0x0'));var util=require(_0x76f4('0x1'));var Redis=require('ioredis');var config=require(_0x76f4('0x2'));var logger=require('../../../config/logger')(_0x76f4('0x3'));var ami=require('../ami');config[_0x76f4('0x4')]=_[_0x76f4('0x5')](config[_0x76f4('0x4')],{'host':_0x76f4('0x6'),'port':0x18eb});var io=require('socket.io-emitter')(new Redis(config[_0x76f4('0x4')]));function VoiceDialReport(_0xfc2405){this[_0x76f4('0x7')]=_0xfc2405['outboundChannels'];this[_0x76f4('0x8')]=_0xfc2405[_0x76f4('0x8')];this[_0x76f4('0x9')]={};this[_0x76f4('0xa')]={};ami['on'](_0x76f4('0xb'),this['syncDialBegin']['bind'](this));ami['on'](_0x76f4('0xc'),this[_0x76f4('0xd')]['bind'](this));ami['on']('varset',this[_0x76f4('0xe')][_0x76f4('0xf')](this));ami['on'](_0x76f4('0x10'),this[_0x76f4('0x11')][_0x76f4('0xf')](this));}VoiceDialReport[_0x76f4('0x12')][_0x76f4('0x13')]=function(_0x3ec740){return _0x3ec740!==null&&!_[_0x76f4('0x14')](_0x3ec740);};VoiceDialReport['prototype'][_0x76f4('0x15')]=function(_0x30dabf,_0x5da1ff,_0x4b6021){io['to'](_0x30dabf)['emit'](_0x5da1ff,_0x4b6021);};VoiceDialReport[_0x76f4('0x12')][_0x76f4('0x16')]=function(_0x979946){try{if(this[_0x76f4('0x13')](_0x979946)){logger[_0x76f4('0x17')](_0x76f4('0x18'),_0x979946[_0x76f4('0x19')],util[_0x76f4('0x1a')](_0x979946,{'showHidden':![],'depth':null}));if(this[_0x76f4('0x7')][_0x979946[_0x76f4('0x19')]]){_[_0x76f4('0x1b')](this[_0x76f4('0x7')][_0x979946[_0x76f4('0x19')]],{'starttime':moment()[_0x76f4('0x1c')](_0x76f4('0x1d')),'lastevent':_0x76f4('0x1e'),'interface':_0x979946[_0x76f4('0x1f')][_0x76f4('0x20')](0x0,_0x979946[_0x76f4('0x1f')][_0x76f4('0x21')]('-')),'membername':_0x979946[_0x76f4('0x1f')][_0x76f4('0x20')](_0x979946['channel'][_0x76f4('0x21')]('/')+0x1,_0x979946['channel'][_0x76f4('0x21')]('-'))},_[_0x76f4('0x22')](_0x979946,[_0x76f4('0x23'),'privilege']));logger['info']('[%s][voiceDialReport][dialbegin]\x20agent:%s\x20interface:%s\x20lastevent:called',_0x979946[_0x76f4('0x19')],this[_0x76f4('0x7')][_0x979946[_0x76f4('0x19')]][_0x76f4('0x24')],this[_0x76f4('0x7')][_0x979946[_0x76f4('0x19')]][_0x76f4('0x25')]);logger['debug']('[%s][voiceDialReport][dialbegin]\x20sending\x20voice_outbound_channel:save\x20event:',_0x979946[_0x76f4('0x19')],util['inspect'](this[_0x76f4('0x7')][_0x979946['uniqueid']],{'showHidden':![],'depth':null}));if(this['applications'][_0x979946['uniqueid']])_[_0x76f4('0x1b')](this[_0x76f4('0x7')][_0x979946[_0x76f4('0x19')]],this[_0x76f4('0x9')][_0x979946[_0x76f4('0x19')]]);this[_0x76f4('0x15')]('voice:outbound',_0x76f4('0x26'),this['channels'][_0x979946['uniqueid']]);logger['debug'](_0x76f4('0x27'),_0x979946[_0x76f4('0x19')],util[_0x76f4('0x1a')](this[_0x76f4('0x7')][_0x979946['uniqueid']],{'showHidden':![],'depth':null}));ami[_0x76f4('0x15')]('custom:dialbegin',this[_0x76f4('0x7')][_0x979946[_0x76f4('0x19')]]);}}}catch(_0x43ac4a){logger[_0x76f4('0x28')](_0x76f4('0x29'),_0x979946['uniqueid'],util['inspect'](_0x43ac4a,{'showHidden':![],'depth':null}));}};VoiceDialReport[_0x76f4('0x12')][_0x76f4('0xd')]=function(_0x36c360){try{if(this[_0x76f4('0x13')](_0x36c360)){logger[_0x76f4('0x17')](_0x76f4('0x2a'),_0x36c360[_0x76f4('0x19')],util[_0x76f4('0x1a')](_0x36c360,{'showHidden':![],'depth':null}));if(this[_0x76f4('0x7')][_0x36c360[_0x76f4('0x19')]]){this[_0x76f4('0x7')][_0x36c360[_0x76f4('0x19')]]['dialstatus']=_0x36c360['dialstatus'];if(_0x36c360['dialstatus']==='ANSWER'){this[_0x76f4('0x7')][_0x36c360[_0x76f4('0x19')]][_0x76f4('0x2b')]=_0x36c360[_0x76f4('0x2b')];this[_0x76f4('0x7')][_0x36c360['uniqueid']][_0x76f4('0x2c')]=_0x36c360[_0x76f4('0x2c')];this[_0x76f4('0x7')][_0x36c360[_0x76f4('0x19')]][_0x76f4('0x2d')]=moment()[_0x76f4('0x1c')](_0x76f4('0x1d'));this[_0x76f4('0x7')][_0x36c360[_0x76f4('0x19')]][_0x76f4('0x2e')]=_0x76f4('0x2f');logger[_0x76f4('0x30')](_0x76f4('0x31'),_0x36c360[_0x76f4('0x19')],_0x36c360[_0x76f4('0x1f')][_0x76f4('0x20')](_0x36c360[_0x76f4('0x1f')][_0x76f4('0x21')]('/')+0x1,_0x36c360['channel'][_0x76f4('0x21')]('-')));logger[_0x76f4('0x17')](_0x76f4('0x32'),_0x36c360['uniqueid'],util['inspect'](this[_0x76f4('0x7')][_0x36c360['uniqueid']],{'showHidden':![],'depth':null}));ami[_0x76f4('0x15')]('custom:dialconnect',this[_0x76f4('0x7')][_0x36c360[_0x76f4('0x19')]]);}logger[_0x76f4('0x17')](_0x76f4('0x33'),_0x36c360[_0x76f4('0x19')],util[_0x76f4('0x1a')](this[_0x76f4('0x7')][_0x36c360[_0x76f4('0x19')]],{'showHidden':![],'depth':null}));this[_0x76f4('0x15')](_0x76f4('0x34'),'voice_outbound_channel:save',this['channels'][_0x36c360[_0x76f4('0x19')]]);}}}catch(_0x13a5a7){logger[_0x76f4('0x28')](_0x76f4('0x35'),_0x36c360[_0x76f4('0x19')],util[_0x76f4('0x1a')](_0x13a5a7,{'showHidden':![],'depth':null}));}};VoiceDialReport[_0x76f4('0x12')][_0x76f4('0xe')]=function(_0x308bab){try{if(this['isNotNull'](_0x308bab)){logger[_0x76f4('0x17')](_0x76f4('0x36'),_0x308bab['uniqueid'],util['inspect'](_0x308bab,{'showHidden':![],'depth':null}));this[_0x76f4('0x37')](_0x308bab[_0x76f4('0x19')],_[_0x76f4('0x38')](_0x308bab[_0x76f4('0x39')])[0x0],_0x308bab[_0x76f4('0x3a')]);if(this['isNotNull'](_0x308bab[_0x76f4('0x39')])&&this[_0x76f4('0x13')](_0x308bab[_0x76f4('0x39')][_0x76f4('0x3b')])){if(_[_0x76f4('0x14')](this[_0x76f4('0x7')][_0x308bab['uniqueid']])){this[_0x76f4('0x7')][_0x308bab[_0x76f4('0x19')]]={'routeId':_0x308bab[_0x76f4('0x3a')],'variables':this['variables'][_0x308bab['uniqueid']],'motionChannel':_0x76f4('0x3c')};logger[_0x76f4('0x30')](_0x76f4('0x3d'),_0x308bab[_0x76f4('0x19')],_0x308bab[_0x76f4('0x39')]['outboundrouteid'],_['keys'](_0x308bab[_0x76f4('0x39')])[0x0],_0x308bab['value']);logger[_0x76f4('0x17')](_0x76f4('0x3e'),_0x308bab['uniqueid'],util['inspect'](this[_0x76f4('0x7')][_0x308bab[_0x76f4('0x19')]],{'showHidden':![],'depth':null}));this[_0x76f4('0x15')](_0x76f4('0x34'),'voice_outbound_channel:save',this[_0x76f4('0x7')][_0x308bab[_0x76f4('0x19')]]);}}}}catch(_0x28922a){logger['error'](_0x76f4('0x3f'),_0x308bab[_0x76f4('0x19')],util['inspect'](_0x28922a,{'showHidden':![],'depth':null}));}};VoiceDialReport['prototype'][_0x76f4('0x37')]=function(_0x1d2240,_0x3cc726,_0x1edc96){var _0x2a61d3=['rtpaudioqos',_0x76f4('0x40'),'rtpaudioqosjitter',_0x76f4('0x41'),_0x76f4('0x42'),_0x76f4('0x43'),'rtpaudioqosrtt',_0x76f4('0x44'),_0x76f4('0x45'),'sipuri',_0x76f4('0x46'),_0x76f4('0x47'),_0x76f4('0x48'),_0x76f4('0x49'),_0x76f4('0x4a'),'memberlastcall',_0x76f4('0x24'),'memberpenalty',_0x76f4('0x4b')];if(!_[_0x76f4('0x4c')](_0x3cc726)&&!_[_0x76f4('0x4d')](_0x2a61d3,_0x3cc726)){if(_['isUndefined'](this[_0x76f4('0xa')][_0x1d2240])){this[_0x76f4('0xa')][_0x1d2240]={};}this[_0x76f4('0xa')][_0x1d2240][_0x3cc726]=_0x1edc96;}};VoiceDialReport[_0x76f4('0x12')]['syncHangup']=function(_0x2028e9){try{if(this[_0x76f4('0x13')](_0x2028e9)){logger[_0x76f4('0x17')](_0x76f4('0x4e'),_0x2028e9['uniqueid'],util[_0x76f4('0x1a')](_0x2028e9,{'showHidden':![],'depth':null}));if(this['channels'][_0x2028e9[_0x76f4('0x19')]]){logger[_0x76f4('0x30')]('[%s][voiceDialReport][hangup]\x20reason:%s\x20lasteevent:complete',_0x2028e9['uniqueid'],_0x2028e9[_0x76f4('0x4f')]);this[_0x76f4('0x7')][_0x2028e9[_0x76f4('0x19')]]['endtime']=moment()[_0x76f4('0x1c')](_0x76f4('0x1d'));this[_0x76f4('0x7')][_0x2028e9['uniqueid']]['duration']=moment(this[_0x76f4('0x7')][_0x2028e9[_0x76f4('0x19')]]['endtime'])['diff'](this[_0x76f4('0x7')][_0x2028e9[_0x76f4('0x19')]][_0x76f4('0x50')],_0x76f4('0x51'));this[_0x76f4('0x7')][_0x2028e9[_0x76f4('0x19')]][_0x76f4('0x2e')]=_0x76f4('0x52');this[_0x76f4('0x8')]['total']+=0x1;if(this['channels'][_0x2028e9['uniqueid']][_0x76f4('0x2d')]){this[_0x76f4('0x8')][_0x76f4('0x53')]+=0x1;this[_0x76f4('0x7')][_0x2028e9['uniqueid']]['holdtime']=moment(this[_0x76f4('0x7')][_0x2028e9['uniqueid']][_0x76f4('0x2d')])['diff'](this[_0x76f4('0x7')][_0x2028e9[_0x76f4('0x19')]][_0x76f4('0x50')],_0x76f4('0x51'));this['channels'][_0x2028e9[_0x76f4('0x19')]][_0x76f4('0x54')]=moment(this[_0x76f4('0x7')][_0x2028e9[_0x76f4('0x19')]][_0x76f4('0x55')])[_0x76f4('0x56')](this[_0x76f4('0x7')][_0x2028e9['uniqueid']][_0x76f4('0x2d')],_0x76f4('0x51'));this[_0x76f4('0x8')][_0x76f4('0x57')]+=this[_0x76f4('0x7')][_0x2028e9[_0x76f4('0x19')]][_0x76f4('0x58')]||0x0;this[_0x76f4('0x8')]['sumBillable']+=this['channels'][_0x2028e9[_0x76f4('0x19')]][_0x76f4('0x54')];}this[_0x76f4('0x8')]['sumDuration']+=this[_0x76f4('0x7')][_0x2028e9['uniqueid']][_0x76f4('0x59')];logger[_0x76f4('0x17')]('[%s][voiceDialReport][hangup]\x20sending\x20voiceDialReport\x20event:',_0x2028e9[_0x76f4('0x19')],util[_0x76f4('0x1a')](this[_0x76f4('0x7')][_0x2028e9[_0x76f4('0x19')]],{'showHidden':![],'depth':null}));ami[_0x76f4('0x15')](_0x76f4('0x5a'),this[_0x76f4('0x7')][_0x2028e9[_0x76f4('0x19')]]);logger[_0x76f4('0x17')]('[%s][voiceDialReport][hangup]\x20sending\x20dialend\x20event:',_0x2028e9[_0x76f4('0x19')],util['inspect'](this[_0x76f4('0x7')][_0x2028e9[_0x76f4('0x19')]],{'showHidden':![],'depth':null}));ami[_0x76f4('0x15')](_0x76f4('0x5b'),this[_0x76f4('0x7')][_0x2028e9[_0x76f4('0x19')]]);logger[_0x76f4('0x17')](_0x76f4('0x5c'),_0x2028e9[_0x76f4('0x19')],util[_0x76f4('0x1a')](this['channels'][_0x2028e9[_0x76f4('0x19')]],{'showHidden':![],'depth':null}));this[_0x76f4('0x15')]('voice:outbound',_0x76f4('0x5d'),this[_0x76f4('0x8')]);logger[_0x76f4('0x30')]('[DEBUG]\x20Emit\x20voice_outbound_channel:remove\x20event',JSON[_0x76f4('0x5e')](this[_0x76f4('0x7')][_0x2028e9[_0x76f4('0x19')]]));logger['debug'](_0x76f4('0x5f'),_0x2028e9[_0x76f4('0x19')],util[_0x76f4('0x1a')](this[_0x76f4('0x7')][_0x2028e9[_0x76f4('0x19')]],{'showHidden':![],'depth':null}));this[_0x76f4('0x15')](_0x76f4('0x34'),_0x76f4('0x60'),this[_0x76f4('0x7')][_0x2028e9['uniqueid']]);delete this[_0x76f4('0x7')][_0x2028e9[_0x76f4('0x19')]];}else if(this[_0x76f4('0x7')][_0x2028e9[_0x76f4('0x61')]]){this['channels'][_0x2028e9[_0x76f4('0x61')]][_0x76f4('0x19')]=this[_0x76f4('0x7')][_0x2028e9['linkedid']][_0x76f4('0x62')];}if(this[_0x76f4('0xa')][_0x2028e9[_0x76f4('0x19')]]){delete this[_0x76f4('0xa')][_0x2028e9[_0x76f4('0x19')]];}}}catch(_0x505a6e){logger[_0x76f4('0x28')]('[%s][voiceDialReport][hangup]',_0x2028e9[_0x76f4('0x19')],util[_0x76f4('0x1a')](_0x505a6e,{'showHidden':![],'depth':null}));}};VoiceDialReport['prototype']['syncNewExten']=function(_0x58251e){try{if(this[_0x76f4('0x13')](_0x58251e)){logger[_0x76f4('0x17')](_0x76f4('0x63'),_0x58251e[_0x76f4('0x19')],util[_0x76f4('0x1a')](_0x58251e,{'showHidden':![],'depth':null}));if(_0x58251e[_0x76f4('0x64')]['toLowerCase']()===_0x76f4('0x65')){_0x58251e[_0x76f4('0x66')]=(_0x58251e[_0x76f4('0x67')]||_0x58251e[_0x76f4('0x66')])[_0x76f4('0x68')]();if(_[_0x76f4('0x69')](_0x58251e[_0x76f4('0x66')],_0x76f4('0x6a'))){if(_['isUndefined'](this[_0x76f4('0x9')][_0x58251e['uniqueid']]))this[_0x76f4('0x9')][_0x58251e[_0x76f4('0x19')]]={};logger[_0x76f4('0x30')](_0x76f4('0x6b'),_0x58251e[_0x76f4('0x19')],_0x58251e[_0x76f4('0x64')],_0x58251e[_0x76f4('0x66')]);var _0x2a0491=_0x58251e['applicationdata'][_0x76f4('0x6c')]('=');var _0x521f00=_0x2a0491[0x0]['match'](/cdr\((.*)\)/);if(_0x521f00)this['applications'][_0x58251e[_0x76f4('0x19')]][_0x521f00[0x1]]=_0x2a0491[0x1];}}}}catch(_0x402209){logger[_0x76f4('0x28')](_0x76f4('0x6d'),_0x58251e['uniqueid'],util[_0x76f4('0x1a')](_0x402209,{'showHidden':![],'depth':null}));}};module[_0x76f4('0x6e')]=VoiceDialReport;
\ No newline at end of file
index c3286fa..4b7b79b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0x8bd3=['uniqueid','voice:queue:%s','name','voice_queue_channel:save','voice_queue_presence:save',']\x20sending\x20voice_queue_channel:remove\x20event:','queuecallerexitreason','ATTENDEDTRANSFER','format','voice_queue_channel:remove','voice_queue_presence:remove','emitVoiceQueueSummary','type','inbound','strategy','answered','available','sumBillable','sumDuration','sumHoldTime','total','unmanaged','abandoned','Trunk','active','callerid','Interval','stringify','[voiceQueueReport][',']\x20sending\x20voice_queue:save\x20event:','voice_queue:save','isUndefined','loopQueueShow','Action','[voiceQueueReport][queues]','then','[voiceQueueReport][queuesummary]','isNotNull','queue','[voiceQueueReport][queuesummary]\x20event:','info','[voiceQueueReport][queuesummary]\x20name:%s','countBy','callers','toNumber','loggedIn','loggedin','custom:queuesummary','[voiceQueueReport][queuesummarycomplete]\x20event:','custom:queuesummarycomplete','queuecallerjoinAt','YYYY-MM-DD\x20HH:mm:ss','position','count','routealias','[voiceQueueReport][queuecallerjoin]\x20name:%s\x20type:%s','merge','pick','keys','emitVoiceQueueChannelSave','[%s][voiceQueueReport][queuecallerjoin]','[%s][voiceQueueReport][queuecallerabandon]','last','queuecallercomplete','queuecallercompleteAt','holdtime','originalposition','queuecallerabandonAt','lastAssignedTo','[%s][voiceQueueReport][queuecallerleave]','queuecallerleaveAt','connectedlinenum','connectedlinename','[voiceQueueReport][queuecallerleave]\x20name:%s\x20type:%s\x20connectedlinenum:%s\x20connectedlinename:%s','[%s][voiceQueueReport][agentconnect]','[voiceQueueReport][agentconnect]\x20name:%s\x20type:%s\x20queuecallerexitreason:COMPLETEDBYAGENT','syncAgentComplete','membername','queuecallerexit','queuecallerexitAt','transfer','COMPLETED','toLowerCase','local/','linkedid','seconds','FORWARDTRANSFER','transfertype','destexten','transferuniqueid','[voiceQueueReport][agentcomplete]\x20name:%s\x20type:%s\x20queuecallerexitreason:FORWARDTRANSFER','reason','toUpperCase','[%s][voiceQueueReport][varset]','addVariable','variable','value','queuestatus','CONTINUE','timeout','[%s][voiceQueueReport][varset]\x20sending\x20timeout\x20event:','custom:timeout','EXITWITHKEY','rtpaudioqos','rtpaudioqosjitter','rtpaudioqosjitterbridged','rtpaudioqosloss','rtpaudioqoslossbridged','rtpaudioqosrtt','rtpaudioqosrttbridged','sipcallid','sipuri','bridgepeer','membercalls','memberdynamic','memberinterface','memberlastcall','memberpenalty','memberrealtime','length','diff','milliseconds','custom:queuecallerunmanaged','[%s][voiceQueueReport][hangup]\x20sending\x20queuecallerabandon\x20event:','custom:queuecallerabandon','[%s][voiceQueueReport][hangup]\x20name:%s\x20type:%s\x20reason:%s','COMPLETEDBYAGENT','custom:voiceQueueReport','[%s][voiceQueueReport][hangup]','handleHangup','cause-txt','cause','transferid','transfereeuniqueid','secondtransfererexten','secondtransfereruniqueid','ATTENDED','[%s][voiceQueueReport][attendedTransfer]\x20name:%s\x20type:%s\x20transferexten:%s\x20transferuniqueid:%s','transferexten','transfertargetuniqueid','origtransfererexten','origtransfereruniqueid','syncBlindTransfer','[%s][voiceQueueReport][blindtransfer]','BLINDTRANSFER','BLIND','extension','[%s][voiceQueueReport][blindTransfer]\x20name:%s\x20type:%s\x20transferexten:%s\x20transferuniqueid:%s','BlindTransfer','context','[%s][voiceQueueReport][musiconholdstart]','mohstarttime','[%s][voiceQueueReport][musiconholdstart]\x20mohstarttime:%s','[%s][voiceQueueReport][musiconholdstop]','mohtime','syncNewExten','application','set','appdata','CDR(routeAlias)','applicationdata','startsWith','cdr(','[%s][voiceQueueReport][newexten]\x20application:%s\x20appdata:%s','split','match','[%s][voiceQueueReport][newexten]','lodash','moment','util','md5','../../../config/environment','../../../config/logger','ami','../ami','../model/queueReport','defaults','redis','localhost','socket.io-emitter','prototype','tail','finally','sequence','queueReports','agents','channels','voiceQueues','flagQueueSummary','campaigns','queuesummary','syncQueueSummary','queuesummarycomplete','syncQueueSummaryComplete','queuecallerjoin','syncQueueCallerJoin','queuecallerabandon','syncQueueCallerAbandon','bind','queuecallerleave','syncQueueCallerLeave','agentcomplete','agentconnect','syncAgentConnect','varset','syncVarSet','hangup','syncHangup','fullybooted','syncFullyBooted','syncMusicOnHoldStart','musiconholdstop','attendedtransfer','syncAttendedTransfer','blindtransfer','loopQueueSummary','hasOwnProperty','isEmpty','talking','waiting','queueStatusComplete','unlockRR','clearZombieChannels','switch','enqueue','isNil','channel','catch','message','inspect','[%s][voiceQueueReport][checkQueueReport]','variables','error','[FullyBooted]\x20clear\x20realtime','emitVoiceQueueChannelRemove','clearqueuereport','emit','debug','[%s][voiceQueueReport][',']\x20sending\x20voice_queue_channel:save\x20event:'];(function(_0x566879,_0x432a60){var _0x4bf8e9=function(_0x47c021){while(--_0x47c021){_0x566879['push'](_0x566879['shift']());}};_0x4bf8e9(++_0x432a60);}(_0x8bd3,0xa7));var _0x38bd=function(_0x432169,_0x7ffbe9){_0x432169=_0x432169-0x0;var _0x28e745=_0x8bd3[_0x432169];return _0x28e745;};'use strict';var _=require(_0x38bd('0x0'));var moment=require(_0x38bd('0x1'));var util=require(_0x38bd('0x2'));var md5=require(_0x38bd('0x3'));var Redis=require('ioredis');var config=require(_0x38bd('0x4'));var logger=require(_0x38bd('0x5'))(_0x38bd('0x6'));var ami=require(_0x38bd('0x7'));var QueueReport=require(_0x38bd('0x8'));config['redis']=_[_0x38bd('0x9')](config[_0x38bd('0xa')],{'host':_0x38bd('0xb'),'port':0x18eb});var io=require(_0x38bd('0xc'))(new Redis(config['redis']));var Sequence=function(){};Sequence[_0x38bd('0xd')]['enqueue']=function(_0x310b7f){this['tail']=this[_0x38bd('0xe')]?this[_0x38bd('0xe')][_0x38bd('0xf')](_0x310b7f):_0x310b7f();};function VoiceQueueReport(_0x119311){this[_0x38bd('0x10')]=new Sequence();this[_0x38bd('0x11')]={};this['agents']=_0x119311[_0x38bd('0x12')];this[_0x38bd('0x13')]=_0x119311['queueChannels'];this['voiceQueues']=_0x119311[_0x38bd('0x14')];this[_0x38bd('0x15')]=!![];this['campaigns']=_0x119311[_0x38bd('0x16')];this['variables']={};ami['on'](_0x38bd('0x17'),this[_0x38bd('0x18')]['bind'](this));ami['on'](_0x38bd('0x19'),this[_0x38bd('0x1a')]['bind'](this));ami['on'](_0x38bd('0x1b'),this[_0x38bd('0x1c')]['bind'](this));ami['on'](_0x38bd('0x1d'),this[_0x38bd('0x1e')][_0x38bd('0x1f')](this));ami['on'](_0x38bd('0x20'),this[_0x38bd('0x21')][_0x38bd('0x1f')](this));ami['on'](_0x38bd('0x22'),this['syncAgentComplete'][_0x38bd('0x1f')](this));ami['on'](_0x38bd('0x23'),this[_0x38bd('0x24')][_0x38bd('0x1f')](this));ami['on'](_0x38bd('0x25'),this[_0x38bd('0x26')]['bind'](this));ami['on'](_0x38bd('0x27'),this[_0x38bd('0x28')][_0x38bd('0x1f')](this));ami['on'](_0x38bd('0x29'),this[_0x38bd('0x2a')][_0x38bd('0x1f')](this));ami['on']('musiconholdstart',this[_0x38bd('0x2b')][_0x38bd('0x1f')](this));ami['on'](_0x38bd('0x2c'),this['syncMusicOnHoldStop'][_0x38bd('0x1f')](this));ami['on'](_0x38bd('0x2d'),this[_0x38bd('0x2e')][_0x38bd('0x1f')](this));ami['on'](_0x38bd('0x2f'),this['syncBlindTransfer'][_0x38bd('0x1f')](this));this[_0x38bd('0x30')]();this['loopQueueShow']();}function clearChannels(_0x38e2b6){if(!_['isEmpty'](_0x38e2b6)){for(var _0x14c769 in _0x38e2b6){if(_0x38e2b6[_0x38bd('0x31')](_0x14c769)){delete _0x38e2b6[_0x14c769];}}}}function clearCampaigns(_0x1ea372){if(!_[_0x38bd('0x32')](_0x1ea372)){for(var _0x32638b in _0x1ea372){if(_0x1ea372[_0x38bd('0x31')](_0x32638b)){_0x1ea372[_0x32638b]['originated']=0x0;}}}}function clearVoiceQueues(_0x2f08d2){if(!_[_0x38bd('0x32')](_0x2f08d2)){for(var _0x229a56 in _0x2f08d2){if(_0x2f08d2[_0x38bd('0x31')](_0x229a56)){_0x2f08d2[_0x229a56]['originated']=0x0;_0x2f08d2[_0x229a56][_0x38bd('0x33')]=0x0;_0x2f08d2[_0x229a56]['pTalking']=0x0;_0x2f08d2[_0x229a56][_0x38bd('0x34')]=0x0;_0x2f08d2[_0x229a56][_0x38bd('0x35')]=!![];}}}}function clearAgentBooked(_0x2308f4){if(!_[_0x38bd('0x32')](_0x2308f4)){for(var _0xae46c0 in _0x2308f4){if(_0x2308f4[_0x38bd('0x31')](_0xae46c0)){_0x2308f4[_0xae46c0][_0x38bd('0x36')]=!![];}}}}VoiceQueueReport[_0x38bd('0xd')][_0x38bd('0x37')]=function(){var _0x5830e0=this;for(var _0x34c559 in this['channels']){if(this['channels'][_0x38bd('0x31')](_0x34c559)&&!this[_0x38bd('0x13')][_0x34c559][_0x38bd('0x38')]){this['sequence'][_0x38bd('0x39')](function(){if(!_[_0x38bd('0x3a')](_0x5830e0['channels'][_0x34c559])){return ami['Action']({'action':'status','channel':_0x5830e0[_0x38bd('0x13')][_0x34c559][_0x38bd('0x3b')]})[_0x38bd('0x3c')](function(_0x2b9a4e){if(_0x2b9a4e[_0x38bd('0x3d')]==='No\x20such\x20channel'){setTimeout(function(){if(_0x5830e0[_0x38bd('0x13')][_0x34c559]){delete _0x5830e0['channels'][_0x34c559];logger['error']('[%s][voiceQueueReport][checkChannel]',_0x34c559,util[_0x38bd('0x3e')](_0x2b9a4e,{'showHidden':![],'depth':null}));}if(_0x5830e0[_0x38bd('0x11')][_0x34c559]){delete _0x5830e0[_0x38bd('0x11')][_0x34c559];logger['error'](_0x38bd('0x3f'),_0x34c559,util[_0x38bd('0x3e')](_0x2b9a4e,{'showHidden':![],'depth':null}));}if(_0x5830e0[_0x38bd('0x40')][_0x34c559]){delete _0x5830e0['variables'][_0x34c559];logger[_0x38bd('0x41')]('[%s][voiceQueueReport][checkVariables]',_0x34c559,util[_0x38bd('0x3e')](_0x2b9a4e,{'showHidden':![],'depth':null}));}},0x1f40);}});}});}}};VoiceQueueReport[_0x38bd('0xd')][_0x38bd('0x2a')]=function(){logger['error'](_0x38bd('0x42'));clearChannels(this[_0x38bd('0x13')]);this['clearQueueReport'](this['queueReports']);clearAgentBooked(this[_0x38bd('0x12')]);clearVoiceQueues(this['voiceQueues']);clearCampaigns(this[_0x38bd('0x16')]);};VoiceQueueReport[_0x38bd('0xd')]['clearQueueReport']=function(_0x14bdb8){var _0x2b02a6=this;if(!_[_0x38bd('0x32')](_0x14bdb8)){for(var _0x3f6196 in _0x14bdb8){if(_0x14bdb8[_0x38bd('0x31')](_0x3f6196)){_0x2b02a6[_0x38bd('0x43')](_0x14bdb8[_0x3f6196],_0x38bd('0x44'));delete _0x14bdb8[_0x3f6196];}}}};VoiceQueueReport[_0x38bd('0xd')]['emit']=function(_0xa401b0,_0xd73d15,_0x15b61d){io['to'](_0xa401b0)[_0x38bd('0x45')](_0xd73d15,_0x15b61d);};VoiceQueueReport[_0x38bd('0xd')]['emitVoiceQueueChannelSave']=function(_0x75aaeb,_0x1e5a34){logger[_0x38bd('0x46')](_0x38bd('0x47')+_0x1e5a34+_0x38bd('0x48'),_0x75aaeb[_0x38bd('0x49')],util[_0x38bd('0x3e')](_0x75aaeb,{'showHidden':![],'depth':null}));this['emit'](util['format'](_0x38bd('0x4a'),_0x75aaeb[_0x38bd('0x4b')]),_0x38bd('0x4c'),_0x75aaeb);io[_0x38bd('0x45')](_0x38bd('0x4d'),_0x75aaeb);};VoiceQueueReport['prototype'][_0x38bd('0x43')]=function(_0xfbafaa,_0x40170c){logger[_0x38bd('0x46')](_0x38bd('0x47')+_0x40170c+_0x38bd('0x4e'),_0xfbafaa[_0x38bd('0x49')],util['inspect'](_0xfbafaa,{'showHidden':![],'depth':null}));if(_0xfbafaa[_0x38bd('0x4f')]===_0x38bd('0x50'))return;this[_0x38bd('0x45')](util[_0x38bd('0x51')](_0x38bd('0x4a'),_0xfbafaa['name']),_0x38bd('0x52'),_0xfbafaa);io[_0x38bd('0x45')](_0x38bd('0x53'),_0xfbafaa);};VoiceQueueReport[_0x38bd('0xd')][_0x38bd('0x54')]=function(_0xd2fbd7,_0x2d7716){if(_0xd2fbd7[_0x38bd('0x55')]===_0x38bd('0x56')){var _0x356c1f={'id':_0xd2fbd7['id'],'name':_0xd2fbd7['name'],'strategy':_0xd2fbd7[_0x38bd('0x57')],'answered':_0xd2fbd7[_0x38bd('0x58')],'available':_0xd2fbd7[_0x38bd('0x59')],'loggedIn':_0xd2fbd7['loggedIn'],'pTalking':_0xd2fbd7['pTalking'],'sumBillable':_0xd2fbd7[_0x38bd('0x5a')],'sumDuration':_0xd2fbd7[_0x38bd('0x5b')],'sumHoldTime':_0xd2fbd7[_0x38bd('0x5c')]||0x0,'talking':_0xd2fbd7['talking'],'total':_0xd2fbd7[_0x38bd('0x5d')],'type':_0xd2fbd7['type'],'unmanaged':_0xd2fbd7[_0x38bd('0x5e')],'abandoned':_0xd2fbd7[_0x38bd('0x5f')],'waiting':_0xd2fbd7[_0x38bd('0x34')]};if(_0xd2fbd7[_0x38bd('0x60')]){_0x356c1f['Trunk']={'id':_0xd2fbd7[_0x38bd('0x60')]['id'],'name':_0xd2fbd7[_0x38bd('0x60')]['name'],'active':_0xd2fbd7[_0x38bd('0x60')][_0x38bd('0x61')],'callerid':_0xd2fbd7[_0x38bd('0x60')][_0x38bd('0x62')]};}if(_0xd2fbd7[_0x38bd('0x63')]){_0x356c1f[_0x38bd('0x63')]={'id':_0xd2fbd7[_0x38bd('0x63')]['id'],'name':_0xd2fbd7[_0x38bd('0x63')][_0x38bd('0x4b')]};}var _0xadac47=md5(JSON[_0x38bd('0x64')](_0x356c1f));if(_0xd2fbd7[_0x38bd('0x3')]!==_0xadac47){_0xd2fbd7[_0x38bd('0x3')]=_0xadac47;logger['debug'](_0x38bd('0x65')+_0x2d7716+_0x38bd('0x66'),util[_0x38bd('0x3e')](_0x356c1f,{'showHidden':![],'depth':null}));this[_0x38bd('0x45')](util['format']('voice:queue:%s',_0x356c1f[_0x38bd('0x4b')]),_0x38bd('0x67'),_0x356c1f);}}};VoiceQueueReport[_0x38bd('0xd')]['isNotNull']=function(_0x183250){return _0x183250!==null&&!_[_0x38bd('0x68')](_0x183250);};VoiceQueueReport[_0x38bd('0xd')][_0x38bd('0x69')]=function(){var _0x4e307a=this;setInterval(function(){_0x4e307a[_0x38bd('0x37')]();ami[_0x38bd('0x6a')]({'action':'queues'})[_0x38bd('0x3c')](function(_0x82bb7e){logger[_0x38bd('0x41')](_0x38bd('0x6b'),util['inspect'](_0x82bb7e,{'showHidden':![],'depth':null}));});},0x2710);};VoiceQueueReport[_0x38bd('0xd')][_0x38bd('0x30')]=function(){var _0xfb65f5=this;setInterval(function(){if(_0xfb65f5[_0x38bd('0x15')]){return ami[_0x38bd('0x6a')]({'action':_0x38bd('0x17')})[_0x38bd('0x6c')](function(){_0xfb65f5[_0x38bd('0x15')]=![];})['catch'](function(_0x9e1f95){logger[_0x38bd('0x41')](_0x38bd('0x6d'),util[_0x38bd('0x3e')](_0x9e1f95,{'showHidden':![],'depth':null}));});}},0x3e8);};VoiceQueueReport[_0x38bd('0xd')][_0x38bd('0x18')]=function(_0x549001){try{if(this[_0x38bd('0x6e')](_0x549001)&&this[_0x38bd('0x6e')](_0x549001[_0x38bd('0x6f')])){logger[_0x38bd('0x46')](_0x38bd('0x70'),util[_0x38bd('0x3e')](_0x549001,{'showHidden':![],'depth':null}));if(this[_0x38bd('0x14')][_0x549001['queue']]){logger[_0x38bd('0x71')](_0x38bd('0x72'),_0x549001[_0x38bd('0x6f')]);var _0x338df8=_[_0x38bd('0x73')](this[_0x38bd('0x13')],_0x38bd('0x6f'))[_0x549001[_0x38bd('0x6f')]]||0x0;var _0x57ee75=_0x338df8-_0x549001[_0x38bd('0x74')];if(this[_0x38bd('0x14')][_0x549001[_0x38bd('0x6f')]][_0x38bd('0x34')]!==_[_0x38bd('0x75')](_0x549001['callers'])||this[_0x38bd('0x14')][_0x549001[_0x38bd('0x6f')]]['loggedIn']!==_['toNumber'](_0x549001['loggedin'])||this[_0x38bd('0x14')][_0x549001['queue']]['available']!==_[_0x38bd('0x75')](_0x549001[_0x38bd('0x59')])||this[_0x38bd('0x14')][_0x549001[_0x38bd('0x6f')]][_0x38bd('0x33')]!==_0x57ee75){this[_0x38bd('0x14')][_0x549001[_0x38bd('0x6f')]][_0x38bd('0x34')]=_[_0x38bd('0x75')](_0x549001[_0x38bd('0x74')]);this[_0x38bd('0x14')][_0x549001['queue']][_0x38bd('0x76')]=_[_0x38bd('0x75')](_0x549001[_0x38bd('0x77')]);this[_0x38bd('0x14')][_0x549001[_0x38bd('0x6f')]]['available']=_[_0x38bd('0x75')](_0x549001[_0x38bd('0x59')]);this['voiceQueues'][_0x549001[_0x38bd('0x6f')]]['talking']=_0x57ee75>0x0?_0x57ee75:0x0;this[_0x38bd('0x14')][_0x549001[_0x38bd('0x6f')]]['talking']=this[_0x38bd('0x14')][_0x549001[_0x38bd('0x6f')]]['talking']>_[_0x38bd('0x75')](_0x549001[_0x38bd('0x77')])?_[_0x38bd('0x75')](_0x549001[_0x38bd('0x77')]):this[_0x38bd('0x14')][_0x549001[_0x38bd('0x6f')]]['talking'];this['emitVoiceQueueSummary'](this[_0x38bd('0x14')][_0x549001[_0x38bd('0x6f')]],'queuesummary');}logger[_0x38bd('0x46')]('[voiceQueueReport][queuesummary]\x20sending\x20queuesummary\x20event:',util[_0x38bd('0x3e')](this[_0x38bd('0x14')][_0x549001['queue']],{'showHidden':![],'depth':null}));ami['emit'](_0x38bd('0x78'),this[_0x38bd('0x14')][_0x549001[_0x38bd('0x6f')]]);}}}catch(_0x5349d9){logger['error']('[voiceQueueReport][queuesummary]',util['inspect'](_0x5349d9,{'showHidden':![],'depth':null}));}};VoiceQueueReport['prototype']['syncQueueSummaryComplete']=function(_0x316e47){logger['debug'](_0x38bd('0x79'),util[_0x38bd('0x3e')](_0x316e47,{'showHidden':![],'depth':null}));ami[_0x38bd('0x45')](_0x38bd('0x7a'),{});this[_0x38bd('0x15')]=!![];};VoiceQueueReport[_0x38bd('0xd')][_0x38bd('0x1c')]=function(_0x3801e7){try{if(this[_0x38bd('0x6e')](_0x3801e7)){logger[_0x38bd('0x46')]('[%s][voiceQueueReport][queuecallerjoin]',_0x3801e7[_0x38bd('0x49')],util[_0x38bd('0x3e')](_0x3801e7,{'showHidden':![],'depth':null}));if(_[_0x38bd('0x68')](this[_0x38bd('0x11')][_0x3801e7[_0x38bd('0x49')]]))this[_0x38bd('0x11')][_0x3801e7['uniqueid']]=[];if(_[_0x38bd('0x68')](this['channels'][_0x3801e7[_0x38bd('0x49')]]))this[_0x38bd('0x13')][_0x3801e7[_0x38bd('0x49')]]={};var _0x455420=new QueueReport();_0x455420[_0x38bd('0x4b')]=_0x3801e7[_0x38bd('0x6f')];_0x455420[_0x38bd('0x55')]=this[_0x38bd('0x14')][_0x455420[_0x38bd('0x4b')]]&&this[_0x38bd('0x14')][_0x455420[_0x38bd('0x4b')]]['type']?this[_0x38bd('0x14')][_0x455420['name']]['type']||_0x38bd('0x56'):_0x38bd('0x56');_0x455420['queue']=_0x3801e7[_0x38bd('0x6f')];_0x455420[_0x38bd('0x7b')]=moment()[_0x38bd('0x51')](_0x38bd('0x7c'));_0x455420[_0x38bd('0x7d')]=_0x3801e7[_0x38bd('0x7d')];_0x455420[_0x38bd('0x7e')]=_0x3801e7[_0x38bd('0x7e')];_0x455420['uniqueid']=_0x3801e7[_0x38bd('0x49')];_0x455420[_0x38bd('0x7f')]=this[_0x38bd('0x13')][_0x3801e7[_0x38bd('0x49')]][_0x38bd('0x7f')];logger['info'](_0x38bd('0x80'),_0x455420[_0x38bd('0x4b')],_0x455420[_0x38bd('0x55')]);_[_0x38bd('0x81')](_0x455420,_[_0x38bd('0x82')](_0x3801e7,_[_0x38bd('0x83')](_0x455420)));this[_0x38bd('0x11')][_0x3801e7['uniqueid']]['push'](_0x455420);this[_0x38bd('0x13')][_0x3801e7[_0x38bd('0x49')]]=_0x455420;this[_0x38bd('0x84')](_0x455420,'queuecallerjoin');}}catch(_0x232424){logger[_0x38bd('0x41')](_0x38bd('0x85'),_0x3801e7[_0x38bd('0x49')],util['inspect'](_0x232424,{'showHidden':![],'depth':null}));}};VoiceQueueReport[_0x38bd('0xd')][_0x38bd('0x1e')]=function(_0x2560cf){try{if(this['isNotNull'](_0x2560cf)){logger[_0x38bd('0x46')](_0x38bd('0x86'),_0x2560cf[_0x38bd('0x49')],util[_0x38bd('0x3e')](_0x2560cf,{'showHidden':![],'depth':null}));if(this['queueReports'][_0x2560cf[_0x38bd('0x49')]]){var _0x452d46=_[_0x38bd('0x87')](this[_0x38bd('0x11')][_0x2560cf['uniqueid']]);_0x452d46[_0x38bd('0x88')]=![];_0x452d46[_0x38bd('0x89')]=null;_0x452d46[_0x38bd('0x8a')]=_0x2560cf[_0x38bd('0x8a')];_0x452d46['originalposition']=_0x2560cf[_0x38bd('0x8b')];_0x452d46['queuecallerabandon']=!![];_0x452d46[_0x38bd('0x8c')]=moment()[_0x38bd('0x51')]('YYYY-MM-DD\x20HH:mm:ss');_0x452d46[_0x38bd('0x4f')]='ABANDONED';_0x452d46[_0x38bd('0x8d')]=null;logger[_0x38bd('0x71')]('[voiceQueueReport][queuecallerabandon]\x20name:%s\x20type:%s',_0x452d46['name'],_0x452d46[_0x38bd('0x55')]);this['channels'][_0x2560cf['uniqueid']]=_0x452d46;this[_0x38bd('0x43')](_0x452d46,'queuecallerabandon');}}}catch(_0x31425b){logger[_0x38bd('0x41')](_0x38bd('0x86'),_0x2560cf['uniqueid'],util[_0x38bd('0x3e')](_0x31425b,{'showHidden':![],'depth':null}));}};VoiceQueueReport['prototype'][_0x38bd('0x21')]=function(_0x18c388){try{if(this[_0x38bd('0x6e')](_0x18c388)){logger[_0x38bd('0x46')](_0x38bd('0x8e'),_0x18c388[_0x38bd('0x49')],util['inspect'](_0x18c388,{'showHidden':![],'depth':null}));if(this[_0x38bd('0x11')][_0x18c388[_0x38bd('0x49')]]){var _0x5f0f2b=_[_0x38bd('0x87')](this[_0x38bd('0x11')][_0x18c388['uniqueid']]);_0x5f0f2b[_0x38bd('0x8f')]=moment()[_0x38bd('0x51')]('YYYY-MM-DD\x20HH:mm:ss');_0x5f0f2b[_0x38bd('0x90')]=_0x18c388['connectedlinenum'];_0x5f0f2b[_0x38bd('0x91')]=_0x18c388[_0x38bd('0x91')];logger['info'](_0x38bd('0x92'),_0x5f0f2b[_0x38bd('0x4b')],_0x5f0f2b[_0x38bd('0x55')],_0x18c388[_0x38bd('0x90')],_0x18c388['connectedlinename']);this['channels'][_0x18c388[_0x38bd('0x49')]]=_0x5f0f2b;this[_0x38bd('0x84')](_0x5f0f2b,_0x38bd('0x20'));}}}catch(_0x4bd746){logger[_0x38bd('0x41')]('[%s][voiceQueueReport][queuecallerleave]',_0x18c388[_0x38bd('0x49')],util[_0x38bd('0x3e')](_0x4bd746,{'showHidden':![],'depth':null}));}};VoiceQueueReport[_0x38bd('0xd')][_0x38bd('0x24')]=function(_0x364052){try{if(this[_0x38bd('0x6e')](_0x364052)){logger[_0x38bd('0x46')](_0x38bd('0x93'),_0x364052['uniqueid'],util['inspect'](_0x364052,{'showHidden':![],'depth':null}));if(this['queueReports'][_0x364052[_0x38bd('0x49')]]){var _0x2fb6d3=_[_0x38bd('0x87')](this['queueReports'][_0x364052[_0x38bd('0x49')]]);_0x2fb6d3['queuecallercomplete']=!![];_0x2fb6d3[_0x38bd('0x4f')]='COMPLETEDBYAGENT';logger['info'](_0x38bd('0x94'),_0x2fb6d3['name'],_0x2fb6d3['type']);}}}catch(_0x3da109){logger[_0x38bd('0x41')](_0x38bd('0x93'),_0x364052[_0x38bd('0x49')],util[_0x38bd('0x3e')](_0x3da109,{'showHidden':![],'depth':null}));}};VoiceQueueReport[_0x38bd('0xd')][_0x38bd('0x95')]=function(_0x41b3c9){try{if(this[_0x38bd('0x6e')](_0x41b3c9)){logger['debug']('[%s][voiceQueueReport][agentcomplete]',_0x41b3c9[_0x38bd('0x49')],util[_0x38bd('0x3e')](_0x41b3c9,{'showHidden':![],'depth':null}));if(this[_0x38bd('0x11')][_0x41b3c9[_0x38bd('0x49')]]){var _0xde3b22=_[_0x38bd('0x87')](this[_0x38bd('0x11')][_0x41b3c9[_0x38bd('0x49')]]);_0xde3b22[_0x38bd('0x1d')]=![];_0xde3b22[_0x38bd('0x8c')]=null;_0xde3b22['assigned']=!![];_0xde3b22[_0x38bd('0x8d')]=_0x41b3c9[_0x38bd('0x96')];_0xde3b22[_0x38bd('0x8a')]=_0x41b3c9[_0x38bd('0x8a')];_0xde3b22['queuecallercomplete']=!![];_0xde3b22[_0x38bd('0x97')]=![];_0xde3b22[_0x38bd('0x98')]=null;if(!_0xde3b22[_0x38bd('0x99')]){if(_0x41b3c9['reason']==_0x38bd('0x99')){_0xde3b22['queuecallerexitreason']=_0x38bd('0x9a');logger[_0x38bd('0x71')]('[voiceQueueReport][agentcomplete]\x20name:%s\x20type:%s\x20queuecallerexitreason:COMPLETED',_0xde3b22['name'],_0xde3b22['type']);}else{if(_['startsWith'](_0x41b3c9[_0x38bd('0x3b')][_0x38bd('0x9b')](),_0x38bd('0x9c'))){if(this['queueReports'][_0x41b3c9[_0x38bd('0x9d')]]){var _0x268103=_[_0x38bd('0x87')](this[_0x38bd('0x11')][_0x41b3c9[_0x38bd('0x9d')]]);_0x268103[_0x38bd('0x88')]=![];_0x268103['queuecallerexit']=!![];_0x268103[_0x38bd('0x98')]=moment(_0xde3b22[_0x38bd('0x7b')])['add'](_0x41b3c9[_0x38bd('0x8a')],_0x38bd('0x9e'))['format'](_0x38bd('0x7c'));_0x268103[_0x38bd('0x4f')]=_0x38bd('0x9f');_0x268103[_0x38bd('0x99')]=!![];_0x268103[_0x38bd('0xa0')]='FORWARD';_0x268103['transferexten']=_0x41b3c9[_0x38bd('0xa1')];_0x268103[_0x38bd('0xa2')]=_0x41b3c9[_0x38bd('0x49')];logger[_0x38bd('0x71')](_0x38bd('0xa3'),_0x268103[_0x38bd('0x4b')],_0x268103[_0x38bd('0x55')]);var _0x4ba9ac=this[_0x38bd('0x11')][_0x41b3c9[_0x38bd('0x9d')]];this[_0x38bd('0x11')][_0x41b3c9['linkedid']]=this[_0x38bd('0x11')][_0x41b3c9[_0x38bd('0x49')]];this[_0x38bd('0x11')][_0x41b3c9[_0x38bd('0x49')]]=_0x4ba9ac;}}else{_0xde3b22[_0x38bd('0x4f')]='COMPLETEDBY'+_0x41b3c9[_0x38bd('0xa4')][_0x38bd('0xa5')]();logger[_0x38bd('0x71')]('[voiceQueueReport][agentcomplete]\x20name:%s\x20type:%s\x20queuecallerexitreason:%s',_0xde3b22[_0x38bd('0x4b')],_0xde3b22[_0x38bd('0x55')],_0xde3b22[_0x38bd('0x4f')]);}}}this['channels'][_0x41b3c9[_0x38bd('0x49')]]=_0xde3b22;}}}catch(_0x4a4197){logger[_0x38bd('0x41')]('[%s][voiceQueueReport][agentcomplete]',_0x41b3c9[_0x38bd('0x49')],util[_0x38bd('0x3e')](_0x4a4197,{'showHidden':![],'depth':null}));}};VoiceQueueReport[_0x38bd('0xd')][_0x38bd('0x26')]=function(_0x458e1b){try{if(this['isNotNull'](_0x458e1b)){logger[_0x38bd('0x46')](_0x38bd('0xa6'),_0x458e1b[_0x38bd('0x49')],util[_0x38bd('0x3e')](_0x458e1b,{'showHidden':![],'depth':null}));this[_0x38bd('0xa7')](_0x458e1b[_0x38bd('0x49')],_[_0x38bd('0x83')](_0x458e1b[_0x38bd('0xa8')])[0x0],_0x458e1b[_0x38bd('0xa9')]);if(this[_0x38bd('0x11')][_0x458e1b[_0x38bd('0x49')]]){var _0x36dd19=_[_0x38bd('0x87')](this['queueReports'][_0x458e1b['uniqueid']]);if(_0x36dd19){if(this[_0x38bd('0x6e')](_0x458e1b['variable'])&&this[_0x38bd('0x6e')](_0x458e1b[_0x38bd('0xa8')][_0x38bd('0xaa')])){switch(_0x458e1b[_0x38bd('0xa9')]){case _0x38bd('0xab'):_0x36dd19[_0x38bd('0x97')]=![];_0x36dd19[_0x38bd('0x98')]=null;break;case'TIMEOUT':_0x36dd19['lastevent']=_0x38bd('0xac');_0x36dd19[_0x38bd('0x97')]=!![];_0x36dd19[_0x38bd('0x98')]=moment()['format']('YYYY-MM-DD\x20HH:mm:ss');_0x36dd19[_0x38bd('0x8f')]=moment()[_0x38bd('0x51')]('YYYY-MM-DD\x20HH:mm:ss');logger[_0x38bd('0x46')](_0x38bd('0xad'),_0x458e1b[_0x38bd('0x49')],util[_0x38bd('0x3e')](_0x36dd19,{'showHidden':![],'depth':null}));ami[_0x38bd('0x45')](_0x38bd('0xae'),_0x36dd19);break;default:_0x36dd19[_0x38bd('0x97')]=!![];_0x36dd19[_0x38bd('0x98')]=moment()[_0x38bd('0x51')]('YYYY-MM-DD\x20HH:mm:ss');_0x36dd19[_0x38bd('0x8f')]=moment()[_0x38bd('0x51')](_0x38bd('0x7c'));}_0x36dd19[_0x38bd('0x1d')]=![];_0x36dd19['queuecallerabandonAt']=null;_0x36dd19[_0x38bd('0x4f')]=_0x458e1b[_0x38bd('0xa9')];this[_0x38bd('0x13')][_0x458e1b[_0x38bd('0x49')]]=_0x36dd19;this['emitVoiceQueueChannelRemove'](_0x36dd19,_0x38bd('0x25'));}else if(this['isNotNull'](_0x458e1b[_0x38bd('0xa8')])&&this[_0x38bd('0x6e')](_0x458e1b[_0x38bd('0xa8')]['queueposition'])){if(!_0x36dd19[_0x38bd('0x1d')]){_0x36dd19['queuecallerexit']=!![];_0x36dd19[_0x38bd('0x98')]=moment()[_0x38bd('0x51')](_0x38bd('0x7c'));_0x36dd19[_0x38bd('0x4f')]=_0x38bd('0xaf');_0x36dd19['queuecallerleaveAt']=moment()[_0x38bd('0x51')](_0x38bd('0x7c'));this['channels'][_0x458e1b[_0x38bd('0x49')]]=_0x36dd19;}}logger[_0x38bd('0x71')]('[%s][voiceQueueReport][varset]\x20name:%s\x20type:%s\x20variable:%s\x20value:%s',_0x458e1b[_0x38bd('0x49')],_0x36dd19[_0x38bd('0x4b')],_0x36dd19['type'],_[_0x38bd('0x83')](_0x458e1b[_0x38bd('0xa8')])[0x0],_0x458e1b[_0x38bd('0xa9')]);_0x36dd19[_0x38bd('0x40')]=this[_0x38bd('0x40')][_0x458e1b[_0x38bd('0x49')]];}}}}catch(_0x495fea){logger[_0x38bd('0x41')](_0x38bd('0xa6'),_0x458e1b[_0x38bd('0x49')],util['inspect'](_0x495fea,{'showHidden':![],'depth':null}));}};VoiceQueueReport[_0x38bd('0xd')][_0x38bd('0xa7')]=function(_0x333daf,_0x30d7d4,_0x43ced7){var _0x2b8fdf=[_0x38bd('0xb0'),'rtpaudioqosbridged',_0x38bd('0xb1'),_0x38bd('0xb2'),_0x38bd('0xb3'),_0x38bd('0xb4'),_0x38bd('0xb5'),_0x38bd('0xb6'),_0x38bd('0xb7'),_0x38bd('0xb8'),_0x38bd('0xb9'),'bridgepvtcallid',_0x38bd('0xba'),_0x38bd('0xbb'),_0x38bd('0xbc'),_0x38bd('0xbd'),'membername',_0x38bd('0xbe'),_0x38bd('0xbf')];if(!_[_0x38bd('0x3a')](_0x30d7d4)&&!_['includes'](_0x2b8fdf,_0x30d7d4)){if(_[_0x38bd('0x68')](this[_0x38bd('0x40')][_0x333daf])){this[_0x38bd('0x40')][_0x333daf]={};}this[_0x38bd('0x40')][_0x333daf][_0x30d7d4]=_0x43ced7;}};VoiceQueueReport[_0x38bd('0xd')]['handleHangup']=function(_0xc7de8d,_0x58b7c9,_0x2391f4){var _0x467f7c={};for(var _0x4e43a3=0x0;_0x4e43a3<this[_0x38bd('0x11')][_0xc7de8d][_0x38bd('0xc0')];_0x4e43a3+=0x1){_0x467f7c=this[_0x38bd('0x11')][_0xc7de8d][_0x4e43a3];if(this[_0x38bd('0x14')][_0x467f7c['queue']]){if(_0x467f7c[_0x38bd('0x97')]&&_0x467f7c[_0x38bd('0x99')]!=!![]){this[_0x38bd('0x14')][_0x467f7c[_0x38bd('0x6f')]][_0x38bd('0x5e')]+=0x1;}if(_0x467f7c[_0x38bd('0x1d')]){this[_0x38bd('0x14')][_0x467f7c[_0x38bd('0x6f')]][_0x38bd('0x5f')]+=0x1;}this['voiceQueues'][_0x467f7c[_0x38bd('0x6f')]][_0x38bd('0x5c')]+=moment(_0x467f7c[_0x38bd('0x8f')])[_0x38bd('0xc1')](_0x467f7c[_0x38bd('0x7b')],_0x38bd('0x9e'))||0x0;if(_0x4e43a3===this[_0x38bd('0x11')][_0xc7de8d][_0x38bd('0xc0')]-0x1){this[_0x38bd('0x14')][_0x467f7c[_0x38bd('0x6f')]][_0x38bd('0x5b')]+=moment()[_0x38bd('0xc2')](0x0)['diff'](_0x467f7c[_0x38bd('0x7b')],'seconds');this[_0x38bd('0x14')][_0x467f7c['queue']][_0x38bd('0x5d')]+=0x1;if(_0x467f7c['queuecallercomplete']){this[_0x38bd('0x14')][_0x467f7c[_0x38bd('0x6f')]][_0x38bd('0x58')]+=0x1;this['voiceQueues'][_0x467f7c[_0x38bd('0x6f')]][_0x38bd('0x5a')]+=moment()['milliseconds'](0x0)[_0x38bd('0xc1')](_0x467f7c[_0x38bd('0x8f')],_0x38bd('0x9e'));_0x467f7c[_0x38bd('0x89')]=moment()['format'](_0x38bd('0x7c'));_0x467f7c[_0x38bd('0x97')]=![];_0x467f7c[_0x38bd('0x98')]=null;}if(_0x467f7c[_0x38bd('0x97')]&&_0x467f7c['transfer']!=!![]){_0x467f7c['lastevent']='unmanaged';logger['debug']('[%s][voiceQueueReport][hangup]\x20sending\x20queuecallerunmanaged\x20event:',_0xc7de8d,util[_0x38bd('0x3e')](_0x467f7c,{'showHidden':![],'depth':null}));ami[_0x38bd('0x45')](_0x38bd('0xc3'),_0x467f7c);}if(_0x467f7c[_0x38bd('0x1d')]){_0x467f7c['lastevent']='abandoned';logger['debug'](_0x38bd('0xc4'),_0xc7de8d,util['inspect'](_0x467f7c,{'showHidden':![],'depth':null}));ami['emit'](_0x38bd('0xc5'),_0x467f7c);}}else{this[_0x38bd('0x14')][_0x467f7c[_0x38bd('0x6f')]][_0x38bd('0x5b')]+=this[_0x38bd('0x14')][_0x467f7c[_0x38bd('0x6f')]]['sumHoldTime'];}logger[_0x38bd('0x71')](_0x38bd('0xc6'),_0xc7de8d,_0x467f7c['name'],_0x467f7c[_0x38bd('0x55')],_0x58b7c9);if(_0x2391f4&&_0x467f7c['queuecallerexitreason']===_0x38bd('0x50')){_0x467f7c[_0x38bd('0x4f')]=_0x38bd('0xc7');}this[_0x38bd('0x13')][_0xc7de8d]=_0x467f7c;if(_0x467f7c[_0x38bd('0x8f')]){this[_0x38bd('0x43')](_0x467f7c,_0x38bd('0x27'));}this[_0x38bd('0x54')](this['voiceQueues'][_0x467f7c[_0x38bd('0x6f')]],'hangup');}}logger[_0x38bd('0x46')]('[%s][voiceQueueReport][hangup]\x20sending\x20voiceQueueReport\x20event:',_0xc7de8d,util[_0x38bd('0x3e')](this[_0x38bd('0x11')][_0xc7de8d],{'showHidden':![],'depth':null}));ami[_0x38bd('0x45')](_0x38bd('0xc8'),this[_0x38bd('0x11')][_0xc7de8d]);if(_0x467f7c[_0x38bd('0x4f')]==='ATTENDEDTRANSFER'||_0x467f7c[_0x38bd('0x8f')]===null){return;}delete this[_0x38bd('0x11')][_0xc7de8d];delete this[_0x38bd('0x13')][_0xc7de8d];if(this['variables'][_0xc7de8d]){delete this['variables'][_0xc7de8d];}};VoiceQueueReport[_0x38bd('0xd')]['syncHangup']=function(_0x286d43){try{if(this['isNotNull'](_0x286d43)){logger[_0x38bd('0x46')](_0x38bd('0xc9'),_0x286d43['uniqueid'],util[_0x38bd('0x3e')](_0x286d43,{'showHidden':![],'depth':null}));if(this['queueReports'][_0x286d43[_0x38bd('0x49')]]){return this[_0x38bd('0xca')](_0x286d43[_0x38bd('0x49')],_0x286d43[_0x38bd('0xcb')]);}if(this[_0x38bd('0x11')][_0x286d43[_0x38bd('0x9d')]]){if(_0x286d43[_0x38bd('0xcc')]==='21'){return;}return this[_0x38bd('0xca')](_0x286d43[_0x38bd('0x9d')],_0x286d43[_0x38bd('0xcb')],!![]);}var _0x421213=Object['keys'](this[_0x38bd('0x11')]);for(var _0x33bd36=0x0;_0x33bd36<_0x421213[_0x38bd('0xc0')];_0x33bd36++){var _0x46b107=_[_0x38bd('0x87')](this['queueReports'][_0x421213[_0x33bd36]]);if(_0x46b107&&_0x46b107[_0x38bd('0xcd')]===_0x286d43[_0x38bd('0x49')]){return this[_0x38bd('0xca')](_0x46b107[_0x38bd('0x49')],_0x286d43['cause-txt'],!![]);}}}}catch(_0x4f985b){logger[_0x38bd('0x41')](_0x38bd('0xc9'),_0x286d43['uniqueid'],util[_0x38bd('0x3e')](_0x4f985b,{'showHidden':![],'depth':null}));}};VoiceQueueReport[_0x38bd('0xd')][_0x38bd('0x2e')]=function(_0x1594e6){try{if(this[_0x38bd('0x6e')](_0x1594e6)){logger[_0x38bd('0x46')]('[%s][voiceQueueReport][attendedtransfer]',_0x1594e6[_0x38bd('0x49')],util[_0x38bd('0x3e')](_0x1594e6,{'showHidden':![],'depth':null}));var _0x1bebe3;var _0x33f17a;var _0x436b3c;if(this['queueReports'][_0x1594e6['transfereeuniqueid']]){_0x1bebe3=_[_0x38bd('0x87')](this['queueReports'][_0x1594e6[_0x38bd('0xce')]]);_0x1bebe3['transferexten']=_0x1594e6[_0x38bd('0xcf')];_0x1bebe3[_0x38bd('0xa2')]=_0x1594e6[_0x38bd('0xd0')];_0x1bebe3[_0x38bd('0x4f')]=_0x38bd('0x50');_0x1bebe3[_0x38bd('0x99')]=!![];_0x1bebe3[_0x38bd('0xa0')]=_0x38bd('0xd1');if(this[_0x38bd('0x11')][_0x1594e6[_0x38bd('0xd0')]]){_0x436b3c=this['queueReports'][_0x1594e6['secondtransfereruniqueid']];this[_0x38bd('0x11')][_0x1594e6[_0x38bd('0xd0')]]=this[_0x38bd('0x11')][_0x1594e6[_0x38bd('0xce')]];this[_0x38bd('0x11')][_0x1594e6[_0x38bd('0xce')]]=_0x436b3c;_0x33f17a=_[_0x38bd('0x87')](this[_0x38bd('0x11')][_0x1594e6[_0x38bd('0xce')]]);_0x33f17a['switch']=!![];}logger[_0x38bd('0x71')](_0x38bd('0xd2'),_0x1594e6[_0x38bd('0x49')],_0x1bebe3[_0x38bd('0x4b')],_0x1bebe3[_0x38bd('0x55')],_0x1bebe3[_0x38bd('0xd3')],_0x1bebe3[_0x38bd('0xa2')]);}else if(this[_0x38bd('0x11')][_0x1594e6[_0x38bd('0xd4')]]){_0x1bebe3=_[_0x38bd('0x87')](this['queueReports'][_0x1594e6[_0x38bd('0xd4')]]);_0x1bebe3[_0x38bd('0xd3')]=_0x1594e6[_0x38bd('0xd5')];_0x1bebe3[_0x38bd('0xa2')]=_0x1594e6['origtransfereruniqueid'];_0x1bebe3[_0x38bd('0x4f')]=_0x38bd('0x50');_0x1bebe3[_0x38bd('0x99')]=!![];_0x1bebe3[_0x38bd('0xa0')]=_0x38bd('0xd1');if(this[_0x38bd('0x11')][_0x1594e6['origtransfereruniqueid']]){_0x436b3c=this[_0x38bd('0x11')][_0x1594e6[_0x38bd('0xd6')]];this[_0x38bd('0x11')][_0x1594e6[_0x38bd('0xd6')]]=this['queueReports'][_0x1594e6[_0x38bd('0xd4')]];this[_0x38bd('0x11')][_0x1594e6[_0x38bd('0xd4')]]=_0x436b3c;_0x33f17a=_['last'](this[_0x38bd('0x11')][_0x1594e6[_0x38bd('0xd4')]]);_0x33f17a[_0x38bd('0x38')]=!![];}logger['info']('[%s][voiceQueueReport][attendedTransfer]\x20name:%s\x20type:%s\x20transferexten:%s\x20transferuniqueid:%s',_0x1594e6[_0x38bd('0x49')],_0x1bebe3[_0x38bd('0x4b')],_0x1bebe3[_0x38bd('0x55')],_0x1bebe3[_0x38bd('0xd3')],_0x1bebe3[_0x38bd('0xa2')]);}else if(this[_0x38bd('0x11')][_0x1594e6[_0x38bd('0xd6')]]){_0x1bebe3=_['last'](this[_0x38bd('0x11')][_0x1594e6[_0x38bd('0xd6')]]);_0x1bebe3[_0x38bd('0xd3')]=_0x1594e6[_0x38bd('0xd5')];_0x1bebe3[_0x38bd('0xa2')]=_0x1594e6[_0x38bd('0xd6')];_0x1bebe3[_0x38bd('0x4f')]=_0x38bd('0x50');_0x1bebe3['transfer']=!![];_0x1bebe3[_0x38bd('0xa0')]='ATTENDED';_0x1bebe3[_0x38bd('0x38')]=!![];_0x1bebe3[_0x38bd('0xcd')]=_0x1594e6[_0x38bd('0xce')];}else if(this['queueReports'][_0x1594e6[_0x38bd('0xd0')]]){_0x1bebe3=_[_0x38bd('0x87')](this[_0x38bd('0x11')][_0x1594e6[_0x38bd('0xd0')]]);_0x1bebe3[_0x38bd('0xd3')]=_0x1594e6['secondtransfererexten'];_0x1bebe3[_0x38bd('0xa2')]=_0x1594e6[_0x38bd('0xd0')];_0x1bebe3[_0x38bd('0x4f')]=_0x38bd('0x50');_0x1bebe3['transfer']=!![];_0x1bebe3['transfertype']=_0x38bd('0xd1');_0x1bebe3[_0x38bd('0x38')]=!![];_0x1bebe3[_0x38bd('0xcd')]=_0x1594e6['transfertargetuniqueid'];}}}catch(_0x197b60){logger[_0x38bd('0x41')]('[%s][voiceQueueReport][attendedtransfer]',_0x1594e6['uniqueid'],util[_0x38bd('0x3e')](_0x197b60,{'showHidden':![],'depth':null}));}};VoiceQueueReport['prototype'][_0x38bd('0xd7')]=function(_0x5b6615){try{if(this['isNotNull'](_0x5b6615)){logger[_0x38bd('0x46')](_0x38bd('0xd8'),_0x5b6615[_0x38bd('0x49')],util[_0x38bd('0x3e')](_0x5b6615,{'showHidden':![],'depth':null}));if(this[_0x38bd('0x11')][_0x5b6615[_0x38bd('0xce')]]){var _0x14e1fc=_['last'](this['queueReports'][_0x5b6615['transfereeuniqueid']]);_0x14e1fc[_0x38bd('0x4f')]=_0x38bd('0xd9');_0x14e1fc[_0x38bd('0x99')]=!![];_0x14e1fc[_0x38bd('0xa0')]=_0x38bd('0xda');_0x14e1fc['transferexten']=_0x5b6615[_0x38bd('0xdb')];_0x14e1fc[_0x38bd('0xa2')]=_0x5b6615[_0x38bd('0xce')];logger[_0x38bd('0x71')](_0x38bd('0xdc'),_0x5b6615['uniqueid'],_0x14e1fc[_0x38bd('0x4b')],_0x14e1fc['type'],_0x14e1fc[_0x38bd('0xd3')],_0x14e1fc['transferuniqueid']);this[_0x38bd('0x28')]({'event':_0x38bd('0xdd'),'uniqueid':_0x5b6615[_0x38bd('0xce')],'context':_0x5b6615[_0x38bd('0xde')],'channel':_0x5b6615['transfererchannel']});}}}catch(_0xd1c11){logger[_0x38bd('0x41')](_0x38bd('0xd8'),_0x5b6615[_0x38bd('0x49')],util['inspect'](_0xd1c11,{'showHidden':![],'depth':null}));}};VoiceQueueReport[_0x38bd('0xd')][_0x38bd('0x2b')]=function(_0x42bd78){try{if(this[_0x38bd('0x6e')](_0x42bd78)){logger[_0x38bd('0x46')](_0x38bd('0xdf'),_0x42bd78[_0x38bd('0x49')],util[_0x38bd('0x3e')](_0x42bd78,{'showHidden':![],'depth':null}));if(this[_0x38bd('0x11')][_0x42bd78[_0x38bd('0x49')]]){var _0xae82d6=_[_0x38bd('0x87')](this[_0x38bd('0x11')][_0x42bd78[_0x38bd('0x49')]]);if(!_['isNil'](_0xae82d6[_0x38bd('0x8f')])){_0xae82d6[_0x38bd('0xe0')]=moment()['format'](_0x38bd('0x7c'));logger[_0x38bd('0x71')](_0x38bd('0xe1'),_0x42bd78[_0x38bd('0x49')],_0xae82d6[_0x38bd('0xe0')]);}}}}catch(_0x1e84f2){logger[_0x38bd('0x41')](_0x38bd('0xdf'),_0x42bd78[_0x38bd('0x49')],util['inspect'](_0x1e84f2,{'showHidden':![],'depth':null}));}};VoiceQueueReport[_0x38bd('0xd')]['syncMusicOnHoldStop']=function(_0x45b46c){try{if(this[_0x38bd('0x6e')](_0x45b46c)){logger[_0x38bd('0x46')](_0x38bd('0xe2'),_0x45b46c[_0x38bd('0x49')],util['inspect'](_0x45b46c,{'showHidden':![],'depth':null}));if(this[_0x38bd('0x11')][_0x45b46c[_0x38bd('0x49')]]){var _0x4f90ab=_['last'](this[_0x38bd('0x11')][_0x45b46c[_0x38bd('0x49')]]);if(!_['isNil'](_0x4f90ab['mohstarttime'])){_0x4f90ab[_0x38bd('0xe3')]+=moment()['milliseconds'](0x0)[_0x38bd('0xc1')](_0x4f90ab['mohstarttime'],_0x38bd('0x9e'));logger[_0x38bd('0x71')]('[%s][voiceQueueReport][musiconholdstop]\x20mohtime:%s',_0x45b46c[_0x38bd('0x49')],_0x4f90ab['mohtime']);delete _0x4f90ab[_0x38bd('0xe0')];}}}}catch(_0x561ae2){logger[_0x38bd('0x41')]('[%s][voiceQueueReport][musiconholdstop]',_0x45b46c[_0x38bd('0x49')],util['inspect'](_0x561ae2,{'showHidden':![],'depth':null}));}};VoiceQueueReport[_0x38bd('0xd')][_0x38bd('0xe4')]=function(_0x2842eb){try{if(this[_0x38bd('0x6e')](_0x2842eb)){logger[_0x38bd('0x46')]('[%s][voiceQueueReport][newexten]\x20event:',_0x2842eb[_0x38bd('0x49')],util[_0x38bd('0x3e')](_0x2842eb,{'showHidden':![],'depth':null}));if(_0x2842eb[_0x38bd('0xe5')][_0x38bd('0x9b')]()===_0x38bd('0xe6')){_0x2842eb['applicationdata']=_0x2842eb['appdata']&&_0x2842eb[_0x38bd('0xe7')]['startsWith'](_0x38bd('0xe8'))?_0x2842eb[_0x38bd('0xe7')]:(_0x2842eb[_0x38bd('0xe7')]||_0x2842eb[_0x38bd('0xe9')])[_0x38bd('0x9b')]();if(_[_0x38bd('0xea')](_0x2842eb[_0x38bd('0xe9')]['toLowerCase'](),_0x38bd('0xeb'))){logger[_0x38bd('0x71')](_0x38bd('0xec'),_0x2842eb[_0x38bd('0x49')],_0x2842eb['application'],_0x2842eb['applicationdata']);if(_['isUndefined'](this[_0x38bd('0x13')][_0x2842eb[_0x38bd('0x49')]]))this['channels'][_0x2842eb['uniqueid']]={};var _0x547095=_0x2842eb['applicationdata'][_0x38bd('0xed')]('=');var _0x581b6c=_0x547095[0x0][_0x38bd('0x9b')]()[_0x38bd('0xee')](/cdr\((.*)\)/);if(_0x581b6c)this[_0x38bd('0x13')][_0x2842eb[_0x38bd('0x49')]][_0x581b6c[0x1]]=_0x547095[0x1];}}}}catch(_0x141fc3){logger['error'](_0x38bd('0xef'),_0x2842eb[_0x38bd('0x49')],util[_0x38bd('0x3e')](_0x141fc3,{'showHidden':![],'depth':null}));}};module['exports']=VoiceQueueReport;
\ No newline at end of file
index c94dfc1..06ef108 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0x7f7a=['CreateReportAgentPreview','../client','campaign','queue'];(function(_0x53905d,_0x3ba98f){var _0x500336=function(_0x49de33){while(--_0x49de33){_0x53905d['push'](_0x53905d['shift']());}};_0x500336(++_0x3ba98f);}(_0x7f7a,0xf1));var _0xa7f7=function(_0x4994cf,_0x5d8b87){_0x4994cf=_0x4994cf-0x0;var _0x1bb517=_0x7f7a[_0x4994cf];return _0x1bb517;};'use strict';var client=require(_0xa7f7('0x0'));exports['createHistory']=function(_0x163381){return function(){_0x163381[_0xa7f7('0x1')]=_0x163381[_0xa7f7('0x2')];return client['Request'](_0xa7f7('0x3'),{'body':_0x163381,'log':_0xa7f7('0x3')});};};
\ No newline at end of file
index 94b9c3d..f956f67 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0x07c1=['create','Request','CreateAttachment'];(function(_0x10037,_0x55a278){var _0x32f9dc=function(_0x4354c1){while(--_0x4354c1){_0x10037['push'](_0x10037['shift']());}};_0x32f9dc(++_0x55a278);}(_0x07c1,0xff));var _0x107c=function(_0x291d93,_0x46c726){_0x291d93=_0x291d93-0x0;var _0x3ca514=_0x07c1[_0x291d93];return _0x3ca514;};'use strict';var client=require('../client');exports[_0x107c('0x0')]=function(_0x4c022f){return client[_0x107c('0x1')]('CreateAttachment',{'body':_0x4c022f,'log':_0x107c('0x2')});};
\ No newline at end of file
index ce587bc..1cfb943 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc4aa=['Trunk','active','TrunkBackup','callerid','Interval','Intervals','interval','SquareProject','getCampaign','../client','getCampaigns','Request','GetCampaign','name','type','dialOriginateCallerIdNumber','dialOriginateTimeout','dialCongestionMaxRetry','dialCongestionRetryFrequency','dialBusyMaxRetry','dialBusyRetryFrequency','dialNoAnswerMaxRetry','dialNoAnswerRetryFrequency','dialNoSuchNumberRetryFrequency','dialDropMaxRetry','dialDropRetryFrequency','dialAbandonedRetryFrequency','dialMachineMaxRetry','dialMachineRetryFrequency','dialAgentRejectRetryFrequency','dialGlobalInterval','dialAMDInitialSilence','dialAMDGreeting','dialAMDAfterGreetingSilence','dialAMDMinWordLength','dialAMDBetweenWordsSilence','dialAMDMaximumNumberOfWords','dialAMDSilenceThreshold','dialAMDMaximumWordLength','dialOrderByScheduledAt','dialPrefix','dialRandomLastDigitCallerIdNumber','dialCutDigit'];(function(_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
+var _0x7a54=['dialNoAnswerMaxRetry','dialNoAnswerRetryFrequency','dialNoSuchNumberMaxRetry','dialAbandonedMaxRetry','dialAbandonedRetryFrequency','dialMachineRetryFrequency','dialTimezone','dialGlobalInterval','dialAMDActive','dialAMDInitialSilence','dialAMDGreeting','dialAMDAfterGreetingSilence','dialAMDTotalAnalysisTime','dialAMDBetweenWordsSilence','dialAMDMaximumNumberOfWords','dialAMDSilenceThreshold','dialAMDMaximumWordLength','dialOrderByScheduledAt','dialPrefix','dialRandomLastDigitCallerIdNumber','dialCutDigit','Trunk','callerid','active','Interval','Intervals','interval','SquareProject','../client','getCampaigns','Request','name','type','limitCalls','dialOriginateCallerIdName','dialOriginateCallerIdNumber','dialOriginateTimeout','dialCongestionMaxRetry','dialBusyMaxRetry'];(function(_0x4ea8ce,_0x51de76){var _0x5e1d12=function(_0x4f62fe){while(--_0x4f62fe){_0x4ea8ce['push'](_0x4ea8ce['shift']());}};_0x5e1d12(++_0x51de76);}(_0x7a54,0x106));var _0x47a5=function(_0x384fd5,_0x4a7416){_0x384fd5=_0x384fd5-0x0;var _0x3507b1=_0x7a54[_0x384fd5];return _0x3507b1;};'use strict';var client=require(_0x47a5('0x0'));exports[_0x47a5('0x1')]=function(){return function(){return client[_0x47a5('0x2')]('GetCampaign',{'options':{'raw':![],'attributes':['id',_0x47a5('0x3'),_0x47a5('0x4'),'active',_0x47a5('0x5'),_0x47a5('0x6'),_0x47a5('0x7'),_0x47a5('0x8'),_0x47a5('0x9'),'dialCongestionRetryFrequency',_0x47a5('0xa'),'dialBusyRetryFrequency',_0x47a5('0xb'),_0x47a5('0xc'),'dialGlobalMaxRetry',_0x47a5('0xd'),'dialNoSuchNumberRetryFrequency','dialDropMaxRetry','dialDropRetryFrequency',_0x47a5('0xe'),_0x47a5('0xf'),'dialMachineMaxRetry',_0x47a5('0x10'),'dialAgentRejectMaxRetry','dialAgentRejectRetryFrequency',_0x47a5('0x11'),_0x47a5('0x12'),_0x47a5('0x13'),_0x47a5('0x14'),_0x47a5('0x15'),_0x47a5('0x16'),_0x47a5('0x17'),'dialAMDMinWordLength',_0x47a5('0x18'),_0x47a5('0x19'),_0x47a5('0x1a'),_0x47a5('0x1b'),_0x47a5('0x1c'),_0x47a5('0x1d'),_0x47a5('0x1e'),_0x47a5('0x1f')],'include':[{'model':'Trunk','as':_0x47a5('0x20'),'attributes':['id',_0x47a5('0x3'),_0x47a5('0x21'),_0x47a5('0x22')]},{'model':_0x47a5('0x20'),'as':'TrunkBackup','attributes':['id','name',_0x47a5('0x21'),'active']},{'model':'Interval','as':_0x47a5('0x23'),'attributes':['id',_0x47a5('0x3')],'include':[{'model':_0x47a5('0x23'),'as':_0x47a5('0x24'),'attributes':['id',_0x47a5('0x3'),_0x47a5('0x25')]}]},{'model':_0x47a5('0x26'),'as':_0x47a5('0x26'),'attributes':['id',_0x47a5('0x3')]}]},'log':'getCampaign'});};};
\ No newline at end of file
index e4c5900..3f1f107 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0xfc48=['Request','GetCmContact','../client','CreateCmContact','getContacts'];(function(_0x176e1d,_0x1e1da8){var _0x533f9b=function(_0x174894){while(--_0x174894){_0x176e1d['push'](_0x176e1d['shift']());}};_0x533f9b(++_0x1e1da8);}(_0xfc48,0x84));var _0x8fc4=function(_0x224488,_0x1023f6){_0x224488=_0x224488-0x0;var _0xd5970d=_0xfc48[_0x224488];return _0xd5970d;};'use strict';var client=require(_0x8fc4('0x0'));exports['createContact']=function(_0x432254){return function(){return client['Request'](_0x8fc4('0x1'),{'body':_0x432254,'log':_0x8fc4('0x1')});};};exports[_0x8fc4('0x2')]=function(_0x2d4a07){return function(){return client[_0x8fc4('0x3')](_0x8fc4('0x4'),{'options':_0x2d4a07,'log':_0x8fc4('0x4')});};};
\ No newline at end of file
index 5bf3c6a..f78161e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0xf73e=['moveContactManagedDialer','campaign','queue','getContactPreview','GetCmHopperPreview','Agent','name','getContactRecallMe','GetContactRecallMe','User','voicePause','db.CmHopper.UserId','resetActiveCalls','ResetActiveCalls','handlePreviewRecallNotifications','CmHopperHandlePreviewRecallNotifications','../client','moment','getContacts','Request','CmContact','Contact','getCmHopper','updateContacts','UpdateCmHopper','YYYY-MM-DD\x20HH:mm:ss','ContactId','ListId','CampaignId','rescheduleContact','destroyContact','DestroyCmHopper','GetContactDialer','format','priority','DESC','scheduledat','ASC','getContactDialerIvr','GetContactDialerIvr'];(function(_0x4486ee,_0x85b039){var _0x2713cb=function(_0x2b67f0){while(--_0x2b67f0){_0x4486ee['push'](_0x4486ee['shift']());}};_0x2713cb(++_0x85b039);}(_0xf73e,0x178));var _0xef73=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0xf73e[_0x3dd15e];return _0x231fd0;};'use strict';var client=require(_0xef73('0x0'));var moment=require(_0xef73('0x1'));exports[_0xef73('0x2')]=function(_0x1d4888,_0x143dd7){return function(){return client[_0xef73('0x3')]('GetCmHopper',{'options':{'where':{'VoiceQueueId':_0x1d4888},'include':[{'model':_0xef73('0x4'),'as':_0xef73('0x5')}],'limit':_0x143dd7,'raw':![]},'log':_0xef73('0x6')});};};exports[_0xef73('0x7')]=function(_0xb0e810,_0x44bc41,_0x4d844b){return function(){return client[_0xef73('0x3')](_0xef73('0x8'),{'body':_0xb0e810,'options':{'where':{'VoiceQueueId':_0x44bc41,'scheduledat':{'$lte':moment()['format'](_0xef73('0x9'))}},'limit':_0x4d844b},'log':_0xef73('0x8')});};};exports['rescheduleContact']=function(_0x27494){return function(){return client[_0xef73('0x3')](_0xef73('0x8'),{'body':_0x27494,'options':{'where':{'ContactId':_0x27494[_0xef73('0xa')],'ListId':_0x27494[_0xef73('0xb')],'VoiceQueueId':_0x27494['VoiceQueueId'],'CampaignId':_0x27494[_0xef73('0xc')]}},'log':_0xef73('0xd')});};};exports[_0xef73('0xe')]=function(_0x5a81ec,_0x9d70c7,_0x21c625){return function(){return client[_0xef73('0x3')](_0xef73('0xf'),{'options':{'where':{'VoiceQueueId':_0x5a81ec,'ListId':_0x9d70c7,'ContactId':_0x21c625}},'log':_0xef73('0xf')});};};exports['getContactDialer']=function(_0xaa3a03,_0x5a943e,_0x23975e,_0x2983ab){return function(){return client[_0xef73('0x3')](_0xef73('0x10'),{'body':{'active':!![]},'options':{'where':{'VoiceQueueId':_0xaa3a03,'active':![],'scheduledat':{'$lte':moment()[_0xef73('0x11')]('YYYY-MM-DD\x20HH:mm:ss')},'$or':[{'UserId':null},{'UserId':{'$in':_0x5a943e}}]},'order':[[_0xef73('0x12'),_0xef73('0x13')],[_0xef73('0x14'),_0x2983ab],['id',_0xef73('0x15')]],'raw':!![],'limit':_0x23975e},'log':_0xef73('0x10')});};};exports[_0xef73('0x16')]=function(_0x28f77a,_0x92ad43,_0x9e1b31){return function(){return client['Request'](_0xef73('0x10'),{'body':{'active':!![]},'options':{'where':{'CampaignId':_0x28f77a,'active':![],'scheduledat':{'$lte':moment()[_0xef73('0x11')](_0xef73('0x9'))}},'include':[{'model':'CmContact','as':_0xef73('0x5')}],'order':[[_0xef73('0x12'),'DESC'],[_0xef73('0x14'),_0x9e1b31],['id',_0xef73('0x15')]],'raw':!![],'limit':_0x92ad43},'log':_0xef73('0x17')});};};exports[_0xef73('0x18')]=function(_0x27b02c,_0x2b8788){return function(){_0x27b02c[_0xef73('0x19')]=_0x27b02c[_0xef73('0x1a')];return client[_0xef73('0x3')]('MoveContactManagedDialer',{'body':_0x27b02c,'options':{'where':{'ContactId':_0x27b02c[_0xef73('0xa')],'ListId':_0x27b02c[_0xef73('0xb')],'VoiceQueueId':_0x27b02c['VoiceQueueId'],'CampaignId':_0x27b02c['CampaignId'],'active':_0x2b8788?undefined:!![]}},'log':'MoveContactManagedDialer'});};};exports['countReScheduled']=function(_0x33bcac){return function(){return client[_0xef73('0x3')]('CountReScheduled',{'options':{'where':{'VoiceQueueId':_0x33bcac['id']?_0x33bcac['id']||null:null}},'log':'countReScheduled'});};};exports[_0xef73('0x1b')]=function(_0x16349a){return function(){return client['Request'](_0xef73('0x1c'),{'options':{'where':{'id':_0x16349a},'include':[{'model':_0xef73('0x4'),'as':_0xef73('0x5')},{'model':'User','as':_0xef73('0x1d'),'attributes':['id',_0xef73('0x1e')]},{'model':'VoiceQueue','as':'Queue','attributes':['id',_0xef73('0x1e')]}],'raw':!![]},'log':'getCmHopper'});};};exports['unlockContact']=function(_0x4cd7b9,_0x1c9d78,_0x5f2f3c){return function(){return client[_0xef73('0x3')](_0xef73('0x8'),{'body':_0x4cd7b9,'options':{'where':{'id':_0x1c9d78},'limit':_0x5f2f3c},'log':'UpdateCmHopper'});};};exports[_0xef73('0x1f')]=function(_0x5d64b5,_0x1fbd8e){return function(){return client[_0xef73('0x3')](_0xef73('0x20'),{'body':{'active':!![]},'options':{'where':{'VoiceQueueId':_0x5d64b5,'active':![],'recallme':!![],'scheduledat':{'$lte':moment()['format'](_0xef73('0x9'))},'UserId':{'$in':_0x1fbd8e}},'order':[['priority',_0xef73('0x13')],[_0xef73('0x14'),_0xef73('0x13')],['id',_0xef73('0x15')]],'include':[{'model':_0xef73('0x4'),'as':_0xef73('0x5')},{'model':_0xef73('0x21'),'as':'Agent','attributes':['id','name',_0xef73('0x22')]}],'group':_0xef73('0x23'),'raw':!![]},'log':_0xef73('0x10')});};};exports[_0xef73('0x24')]=function(_0x47371d,_0x56c861){return client[_0xef73('0x3')](_0xef73('0x25'),{'body':_0x47371d,'options':_0x56c861||{},'log':'ResetActiveCalls'});};exports[_0xef73('0x26')]=function(_0x5d9a83,_0x180303,_0x1cd686){return function(){return client[_0xef73('0x3')](_0xef73('0x27'),{'body':{'where':{'voiceQueueIds':_0x5d9a83,'interval':_0x180303,'availableAgentsIds':_0x1cd686}},'log':_0xef73('0x26')});};};
\ No newline at end of file
index baa984e..a3f83e0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0x51c8=['VerifyAdditionalPhones','swapAdditionalPhones','Request','IncrementPreviewCounters','../client','moment','verifyAdditionalPhones'];(function(_0x277832,_0xec5064){var _0x4103d1=function(_0x307ad7){while(--_0x307ad7){_0x277832['push'](_0x277832['shift']());}};_0x4103d1(++_0xec5064);}(_0x51c8,0x1cb));var _0x851c=function(_0x939891,_0x5d6438){_0x939891=_0x939891-0x0;var _0x5a69d7=_0x51c8[_0x939891];return _0x5a69d7;};'use strict';var client=require(_0x851c('0x0'));var moment=require(_0x851c('0x1'));exports[_0x851c('0x2')]=function(_0x4aea17,_0x37dc4c,_0x4462a2){return function(){return client['Request'](_0x851c('0x3'),{'body':_0x4aea17,'reason':_0x37dc4c,'entity':_0x4462a2,'log':'VerifyAdditionalPhones'});};};exports[_0x851c('0x4')]=function(_0x7c4c61,_0x1855b6,_0x269ccd){return function(){return client['Request']('SwapAdditionalPhones',{'body':_0x7c4c61,'duration':_0x1855b6,'waitTime':_0x269ccd,'log':'SwapAdditionalPhones'});};};exports['incrementPreviewCounters']=function(_0x4d7623){return function(){return client[_0x851c('0x5')](_0x851c('0x6'),{'body':_0x4d7623,'log':_0x851c('0x6')});};};
\ No newline at end of file
index 6671b49..0fd274a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0x423c=['CampaignId','phone','GetCmHopperBlackIvr','checkIsBlackList','Request','GetCmHopperBlack','VoiceQueueId'];(function(_0x20a584,_0xe384a5){var _0x4b41a8=function(_0x2127c6){while(--_0x2127c6){_0x20a584['push'](_0x20a584['shift']());}};_0x4b41a8(++_0xe384a5);}(_0x423c,0x1ca));var _0xc423=function(_0x5f1391,_0x19c132){_0x5f1391=_0x5f1391-0x0;var _0x50ebe3=_0x423c[_0x5f1391];return _0x50ebe3;};'use strict';var client=require('../client');exports[_0xc423('0x0')]=function(_0x6ed167){return function(){return client[_0xc423('0x1')](_0xc423('0x2'),{'options':{'where':{'VoiceQueueId':_0x6ed167[_0xc423('0x3')],'phone':_0x6ed167['phone']},'raw':![]},'log':_0xc423('0x2')});};};exports['checkIsBlackListIvr']=function(_0x1313b9){return function(){return client[_0xc423('0x1')](_0xc423('0x2'),{'options':{'where':{'CampaignId':_0x1313b9[_0xc423('0x4')],'phone':_0x1313b9[_0xc423('0x5')]},'raw':![]},'log':_0xc423('0x6')});};};
\ No newline at end of file
index f3e067e..bc1712c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0x9f32=['campaign','queue','Request','CreateCmHopperFinal','../client','createContact'];(function(_0x5ce940,_0x22a018){var _0x49a7db=function(_0x272541){while(--_0x272541){_0x5ce940['push'](_0x5ce940['shift']());}};_0x49a7db(++_0x22a018);}(_0x9f32,0x184));var _0x29f3=function(_0x2679f1,_0x44f35f){_0x2679f1=_0x2679f1-0x0;var _0x2eb14a=_0x9f32[_0x2679f1];return _0x2eb14a;};'use strict';var client=require(_0x29f3('0x0'));exports[_0x29f3('0x1')]=function(_0x33e6fb){return function(){_0x33e6fb[_0x29f3('0x2')]=_0x33e6fb[_0x29f3('0x3')];return client[_0x29f3('0x4')](_0x29f3('0x5'),{'body':_0x33e6fb,'log':_0x29f3('0x5')});};};
\ No newline at end of file
index 04a839f..da2c958 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0xb051=['getVoiceQueueHopperHistory','GetVoiceQueueHopperHistory','day','getCampaignHopperHistory','startOf','GetCampaignHopperHistory','moment','createHistory','campaign','queue','CreateCmHopperHistory','Request','AvgHandleTime','format','YYYY-MM-DD\x20HH:mm:ss','GetCmHopperHistory'];(function(_0x32f7d7,_0x54231b){var _0x133d09=function(_0x41a7ab){while(--_0x41a7ab){_0x32f7d7['push'](_0x32f7d7['shift']());}};_0x133d09(++_0x54231b);}(_0xb051,0x156));var _0x1b05=function(_0x500c0,_0xdb6a03){_0x500c0=_0x500c0-0x0;var _0xdd146f=_0xb051[_0x500c0];return _0xdd146f;};'use strict';var client=require('../client');var moment=require(_0x1b05('0x0'));exports[_0x1b05('0x1')]=function(_0x150f44){return function(){_0x150f44[_0x1b05('0x2')]=_0x150f44[_0x1b05('0x3')];return client['Request']('CreateCmHopperHistory',{'body':_0x150f44,'log':_0x1b05('0x4')});};};exports['avgHandleTime']=function(_0x114f33){return function(){return client[_0x1b05('0x5')](_0x1b05('0x6'),{'options':{'where':{'endtime':{'$between':[moment()['subtract'](_0x114f33,'minutes')[_0x1b05('0x7')](_0x1b05('0x8')),moment()[_0x1b05('0x7')](_0x1b05('0x8'))]}},'raw':![]},'log':_0x1b05('0x9')});};};exports[_0x1b05('0xa')]=function(_0x47f19a){return function(){return client['Request'](_0x1b05('0xb'),{'options':{'where':{'createdAt':{'$between':[moment()['startOf'](_0x1b05('0xc'))[_0x1b05('0x7')]('YYYY-MM-DD\x20HH:mm:ss'),moment()['endOf'](_0x1b05('0xc'))[_0x1b05('0x7')](_0x1b05('0x8'))]},'campaigntype':'queue'},'raw':![]},'log':'GetVoiceQueueHopperHistory'});};};exports[_0x1b05('0xd')]=function(_0x4fca58){return function(){return client['Request']('GetCampaignHopperHistory',{'options':{'where':{'createdAt':{'$between':[moment()[_0x1b05('0xe')](_0x1b05('0xc'))[_0x1b05('0x7')](_0x1b05('0x8')),moment()['endOf'](_0x1b05('0xc'))['format'](_0x1b05('0x8'))]},'campaigntype':'ivr'},'raw':![]},'log':_0x1b05('0xf')});};};
\ No newline at end of file
index 7715ca0..d03dcb4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0x1c01=['modem','gateway','t38timeout','TrunkId','key','Trunk','active','notify','NotifyFaxAccount','../client','getFaxAccounts','Request','GetFaxAccount','description','localstationid','minrate','maxrate'];(function(_0x4b2928,_0x4edeb1){var _0x3afccf=function(_0xefc91f){while(--_0xefc91f){_0x4b2928['push'](_0x4b2928['shift']());}};_0x3afccf(++_0x4edeb1);}(_0x1c01,0x190));var _0x11c0=function(_0x3ad524,_0x1f1b5d){_0x3ad524=_0x3ad524-0x0;var _0x3df841=_0x1c01[_0x3ad524];return _0x3df841;};'use strict';var client=require(_0x11c0('0x0'));exports[_0x11c0('0x1')]=function(){return function(){return client[_0x11c0('0x2')](_0x11c0('0x3'),{'options':{'raw':![],'attributes':['id','name',_0x11c0('0x4'),'ecm','headerinfo',_0x11c0('0x5'),_0x11c0('0x6'),_0x11c0('0x7'),_0x11c0('0x8'),_0x11c0('0x9'),'faxdetect',_0x11c0('0xa'),'tech',_0x11c0('0xb'),'ListId',_0x11c0('0xc')],'include':[{'model':'Trunk','as':_0x11c0('0xd'),'attributes':['id','name','callerid',_0x11c0('0xe')]}]},'log':'getFaxAccount'});};};exports[_0x11c0('0xf')]=function(_0x39b2ac,_0xc36416){return client[_0x11c0('0x2')](_0x11c0('0x10'),{'account':{'id':_0x39b2ac},'body':_0xc36416,'log':'NotifyFaxAccount'});};
\ No newline at end of file
index abf673e..3b3ebc8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0x71db=['UpdateFaxMessage','update','Request'];(function(_0x426711,_0x12264c){var _0x592991=function(_0x564614){while(--_0x564614){_0x426711['push'](_0x426711['shift']());}};_0x592991(++_0x12264c);}(_0x71db,0x166));var _0xb71d=function(_0x16539a,_0x31409a){_0x16539a=_0x16539a-0x0;var _0x200796=_0x71db[_0x16539a];return _0x200796;};'use strict';var client=require('../client');exports[_0xb71d('0x0')]=function(_0x1225dc,_0x5afd27){return client[_0xb71d('0x1')]('UpdateFaxMessage',{'body':_0x5afd27,'options':{'where':{'AttachmentId':_0x1225dc}},'log':_0xb71d('0x2')});};
\ No newline at end of file
index 11d9696..98e76e4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0xd2df=['password','remoteUri','authType','type','DeskConfiguration','Configurations','DeskField','Subjects','content','variableName','Variable','Descriptions','keyType','keyContent','Fields','idField','customField','Tag','getDeskAccounts','Request','GetDeskAccount','name','description','username'];(function(_0xbc90d8,_0x565ad2){var _0x1c6f4e=function(_0x5b66ac){while(--_0x5b66ac){_0xbc90d8['push'](_0xbc90d8['shift']());}};_0x1c6f4e(++_0x565ad2);}(_0xd2df,0x132));var _0xfd2d=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0xd2df[_0x3dd15e];return _0x231fd0;};'use strict';var client=require('../../client');exports[_0xfd2d('0x0')]=function(){return function(_0x3e4b16){return client[_0xfd2d('0x1')](_0xfd2d('0x2'),{'options':{'raw':![],'attributes':['id',_0xfd2d('0x3'),_0xfd2d('0x4'),_0xfd2d('0x5'),_0xfd2d('0x6'),_0xfd2d('0x7'),_0xfd2d('0x8'),_0xfd2d('0x9'),'serverUrl'],'include':[{'model':_0xfd2d('0xa'),'as':_0xfd2d('0xb'),'attributes':['id',_0xfd2d('0x3')],'include':[{'model':_0xfd2d('0xc'),'as':_0xfd2d('0xd'),'attributes':['id','type',_0xfd2d('0xe'),_0xfd2d('0xf')],'include':[{'model':_0xfd2d('0x10'),'as':_0xfd2d('0x10'),'attributes':['id',_0xfd2d('0x3')]}]},{'model':_0xfd2d('0xc'),'as':_0xfd2d('0x11'),'attributes':['id','type',_0xfd2d('0xe'),'key',_0xfd2d('0x12'),_0xfd2d('0x13'),_0xfd2d('0xf')],'include':[{'model':_0xfd2d('0x10'),'as':_0xfd2d('0x10'),'attributes':['id',_0xfd2d('0x3')]}]},{'model':_0xfd2d('0xc'),'as':_0xfd2d('0x14'),'attributes':['id',_0xfd2d('0x9'),'content',_0xfd2d('0x15'),'nameField',_0xfd2d('0x16'),_0xfd2d('0xf')],'include':[{'model':'Variable','as':_0xfd2d('0x10'),'attributes':['id','name']}]},{'model':_0xfd2d('0x17'),'as':'Tags','attributes':['id',_0xfd2d('0x3')]}]}]},'log':'GetDeskAccount'});};};
\ No newline at end of file
index 22be97f..5cf2d8e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0xf65d=['key','keyType','Fields','idField','nameField','customField','CloudProvider','data5','data7','../../client','Request','GetDynamics365Account','name','username','password','clientSecret','description','modernAuthentication','Configurations','ticketType','moduleCreate','additionalSearchContact','openNewTab','Subjects','content','variableName','Variable','Dynamics365Field','Descriptions','type'];(function(_0x395cac,_0x336c89){var _0x1eda01=function(_0x286c20){while(--_0x286c20){_0x395cac['push'](_0x395cac['shift']());}};_0x1eda01(++_0x336c89);}(_0xf65d,0x9f));var _0xdf65=function(_0x5e3ac2,_0x225614){_0x5e3ac2=_0x5e3ac2-0x0;var _0x29a007=_0xf65d[_0x5e3ac2];return _0x29a007;};'use strict';var client=require(_0xdf65('0x0'));exports['getDynamics365Accounts']=function(){return function(_0x42bfd2){return client[_0xdf65('0x1')](_0xdf65('0x2'),{'options':{'raw':![],'attributes':['id',_0xdf65('0x3'),_0xdf65('0x4'),_0xdf65('0x5'),'remoteUri','tenantId','clientId',_0xdf65('0x6'),'serverUrl',_0xdf65('0x7'),_0xdf65('0x8')],'include':[{'model':'Dynamics365Configuration','as':_0xdf65('0x9'),'attributes':['id',_0xdf65('0x3'),_0xdf65('0xa'),_0xdf65('0xb'),_0xdf65('0xc'),_0xdf65('0xd')],'include':[{'model':'Dynamics365Field','as':_0xdf65('0xe'),'attributes':['id','type',_0xdf65('0xf'),_0xdf65('0x10')],'include':[{'model':_0xdf65('0x11'),'as':'Variable','attributes':['id','name']}]},{'model':_0xdf65('0x12'),'as':_0xdf65('0x13'),'attributes':['id',_0xdf65('0x14'),_0xdf65('0xf'),_0xdf65('0x15'),_0xdf65('0x16'),'keyContent',_0xdf65('0x10')],'include':[{'model':_0xdf65('0x11'),'as':'Variable','attributes':['id','name']}]},{'model':'Dynamics365Field','as':_0xdf65('0x17'),'attributes':['id',_0xdf65('0x14'),_0xdf65('0xf'),_0xdf65('0x18'),_0xdf65('0x19'),_0xdf65('0x1a'),_0xdf65('0x10')],'include':[{'model':_0xdf65('0x11'),'as':_0xdf65('0x11'),'attributes':['id',_0xdf65('0x3')]}]}]},{'model':'CloudProvider','as':_0xdf65('0x1b'),'attributes':['id','data2',_0xdf65('0x1c'),_0xdf65('0x1d')]}]},'log':_0xdf65('0x2')});};};
\ No newline at end of file
index 9a6b7a4..c0086cc 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0x0565=['../../client','getFreshdeskAccounts','Request','GetFreshdeskAccount','name','username','apiKey','remoteUri','serverUrl','Configurations','Tag','type','content','variableName','Variable','FreshdeskField','Descriptions','key','keyType','Fields','idField','nameField'];(function(_0x584291,_0x24b5b3){var _0x4e7d08=function(_0x59e0b1){while(--_0x59e0b1){_0x584291['push'](_0x584291['shift']());}};_0x4e7d08(++_0x24b5b3);}(_0x0565,0xf2));var _0x5056=function(_0x3e44fa,_0x75ed2a){_0x3e44fa=_0x3e44fa-0x0;var _0x2a0aba=_0x0565[_0x3e44fa];return _0x2a0aba;};'use strict';var client=require(_0x5056('0x0'));exports[_0x5056('0x1')]=function(){return function(_0x2790a7){return client[_0x5056('0x2')](_0x5056('0x3'),{'options':{'raw':![],'attributes':['id',_0x5056('0x4'),_0x5056('0x5'),_0x5056('0x6'),_0x5056('0x7'),_0x5056('0x8')],'include':[{'model':'FreshdeskConfiguration','as':_0x5056('0x9'),'attributes':['id',_0x5056('0x4')],'include':[{'model':_0x5056('0xa'),'attributes':['id',_0x5056('0x4')]},{'model':'FreshdeskField','as':'Subjects','attributes':['id',_0x5056('0xb'),_0x5056('0xc'),_0x5056('0xd')],'include':[{'model':_0x5056('0xe'),'as':_0x5056('0xe'),'attributes':['id',_0x5056('0x4')]}]},{'model':_0x5056('0xf'),'as':_0x5056('0x10'),'attributes':['id','type',_0x5056('0xc'),_0x5056('0x11'),_0x5056('0x12'),'keyContent','variableName'],'include':[{'model':_0x5056('0xe'),'as':'Variable','attributes':['id','name']}]},{'model':'FreshdeskField','as':_0x5056('0x13'),'attributes':['id','type',_0x5056('0xc'),_0x5056('0x14'),_0x5056('0x15'),'customField',_0x5056('0xd')],'include':[{'model':_0x5056('0xe'),'as':_0x5056('0xe'),'attributes':['id',_0x5056('0x4')]}]}]}]},'log':_0x5056('0x3')});};};
\ No newline at end of file
index cca3d8e..89348e4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0xeff8=['getFreshsalesAccounts','Request','GetFreshsalesAccount','name','apiKey','remoteUri','serverUrl','FreshsalesConfiguration','FreshsalesField','Subjects','type','variableName','Variable','content','key','keyContent','../../client'];(function(_0x18ab2a,_0x4debcd){var _0x16dcee=function(_0x10107a){while(--_0x10107a){_0x18ab2a['push'](_0x18ab2a['shift']());}};_0x16dcee(++_0x4debcd);}(_0xeff8,0x186));var _0x8eff=function(_0x173441,_0x26b0d9){_0x173441=_0x173441-0x0;var _0x2423a8=_0xeff8[_0x173441];return _0x2423a8;};'use strict';var client=require(_0x8eff('0x0'));exports[_0x8eff('0x1')]=function(){return function(_0x50e01f){return client[_0x8eff('0x2')](_0x8eff('0x3'),{'options':{'raw':![],'attributes':['id',_0x8eff('0x4'),'username',_0x8eff('0x5'),_0x8eff('0x6'),_0x8eff('0x7')],'include':[{'model':_0x8eff('0x8'),'as':'Configurations','attributes':['id',_0x8eff('0x4')],'include':[{'model':_0x8eff('0x9'),'as':_0x8eff('0xa'),'attributes':['id',_0x8eff('0xb'),'content',_0x8eff('0xc')],'include':[{'model':_0x8eff('0xd'),'as':_0x8eff('0xd'),'attributes':['id',_0x8eff('0x4')]}]},{'model':'FreshsalesField','as':'Descriptions','attributes':['id',_0x8eff('0xb'),_0x8eff('0xe'),_0x8eff('0xf'),'keyType',_0x8eff('0x10'),_0x8eff('0xc')],'include':[{'model':'Variable','as':_0x8eff('0xd'),'attributes':['id',_0x8eff('0x4')]}]}]}]},'log':'GetFreshsalesccount'});};};
\ No newline at end of file
index d0f2c45..7e98502 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0x3445=['GetSalesforceAccount','name','username','clientId','clientSecret','securityToken','serverUrl','moduleSearch','leadId','additionalSearchAccount','additionalSearchContact','SalesforceField','Subjects','Variable','../../client','getSalesforceAccounts','Request'];(function(_0x59ee6f,_0x450239){var _0x4c0979=function(_0x565e92){while(--_0x565e92){_0x59ee6f['push'](_0x59ee6f['shift']());}};_0x4c0979(++_0x450239);}(_0x3445,0x1b7));var _0x5344=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x3445[_0x3dd15e];return _0x231fd0;};'use strict';var client=require(_0x5344('0x0'));exports[_0x5344('0x1')]=function(){return function(_0x20f9cf){return client[_0x5344('0x2')](_0x5344('0x3'),{'options':{'raw':![],'attributes':['id',_0x5344('0x4'),_0x5344('0x5'),'password','remoteUri',_0x5344('0x6'),_0x5344('0x7'),_0x5344('0x8'),_0x5344('0x9'),'type'],'include':[{'model':'SalesforceConfiguration','as':'Configurations','attributes':['id','name',_0x5344('0xa'),'moduleCreate','ticketType',_0x5344('0xb'),_0x5344('0xc'),_0x5344('0xd'),'additionalSearchLead'],'include':[{'model':_0x5344('0xe'),'as':_0x5344('0xf'),'include':[{'model':_0x5344('0x10'),'as':_0x5344('0x10'),'attributes':['id',_0x5344('0x4')]}]},{'model':_0x5344('0xe'),'as':'Descriptions','include':[{'model':_0x5344('0x10'),'as':_0x5344('0x10'),'attributes':['id','name']}]},{'model':_0x5344('0xe'),'as':'Fields','include':[{'model':_0x5344('0x10'),'as':'Variable','attributes':['id','name']}]}]}]},'log':'GetSalesforceAccount'});};};
\ No newline at end of file
index 2ae79a8..249d990 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe2fe=['type','variableName','Variable','keyType','Fields','content','nameField','GetServicenowkAccount','../../client','Request','name','description','username','password','email','serverUrl','ServicenowConfiguration','ServicenowField'];(function(_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
+var _0xabce=['password','email','ServicenowConfiguration','name','Subjects','type','content','Variable','ServicenowField','Descriptions','key','keyType','keyContent','variableName','Fields','idField','nameField','../../client','getServicenowAccounts','Request','GetServicenowAccount','username'];(function(_0x4ebb70,_0x386dee){var _0xfa7ab7=function(_0x57479a){while(--_0x57479a){_0x4ebb70['push'](_0x4ebb70['shift']());}};_0xfa7ab7(++_0x386dee);}(_0xabce,0x103));var _0xeabc=function(_0x2160a9,_0x3cbd9e){_0x2160a9=_0x2160a9-0x0;var _0xa88cf7=_0xabce[_0x2160a9];return _0xa88cf7;};'use strict';var client=require(_0xeabc('0x0'));exports[_0xeabc('0x1')]=function(){return function(_0x357cda){return client[_0xeabc('0x2')](_0xeabc('0x3'),{'options':{'raw':![],'attributes':['id','name','description',_0xeabc('0x4'),_0xeabc('0x5'),_0xeabc('0x6'),'remoteUri','serverUrl'],'include':[{'model':_0xeabc('0x7'),'as':'Configurations','attributes':['id',_0xeabc('0x8')],'include':[{'model':'ServicenowField','as':_0xeabc('0x9'),'attributes':['id',_0xeabc('0xa'),_0xeabc('0xb'),'variableName'],'include':[{'model':_0xeabc('0xc'),'as':_0xeabc('0xc'),'attributes':['id',_0xeabc('0x8')]}]},{'model':_0xeabc('0xd'),'as':_0xeabc('0xe'),'attributes':['id',_0xeabc('0xa'),_0xeabc('0xb'),_0xeabc('0xf'),_0xeabc('0x10'),_0xeabc('0x11'),_0xeabc('0x12')],'include':[{'model':_0xeabc('0xc'),'as':_0xeabc('0xc'),'attributes':['id',_0xeabc('0x8')]}]},{'model':_0xeabc('0xd'),'as':_0xeabc('0x13'),'attributes':['id','type',_0xeabc('0xb'),_0xeabc('0x14'),_0xeabc('0x15'),'customField','variableName'],'include':[{'model':_0xeabc('0xc'),'as':_0xeabc('0xc'),'attributes':['id',_0xeabc('0x8')]}]}]}]},'log':'GetServicenowkAccount'});};};
\ No newline at end of file
index 291b218..83faee9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0x0b0e=['Configurations','SugarcrmField','Subjects','variableName','Variable','Descriptions','type','key','keyType','Fields','content','idField','customField','../../client','GetSugarcrmAccount','name','username','password','remoteUri','serverUrl','SugarcrmConfiguration'];(function(_0x28eb0d,_0x555789){var _0x2cf8b2=function(_0xb830e3){while(--_0xb830e3){_0x28eb0d['push'](_0x28eb0d['shift']());}};_0x2cf8b2(++_0x555789);}(_0x0b0e,0x187));var _0xe0b0=function(_0x1ab180,_0x382b2c){_0x1ab180=_0x1ab180-0x0;var _0xfb2c2d=_0x0b0e[_0x1ab180];return _0xfb2c2d;};'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
index 9a995c6..3d90210 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0xacc5=['../../client','getVtigerAccounts','Request','GetVtigerAccount','name','description','username','serverUrl','VtigerConfiguration','Configurations','VtigerField','variableName','Variable','Descriptions','content','keyType','Fields','idField','customField'];(function(_0x11bc4f,_0x429ceb){var _0x35ab3b=function(_0x4215a0){while(--_0x4215a0){_0x11bc4f['push'](_0x11bc4f['shift']());}};_0x35ab3b(++_0x429ceb);}(_0xacc5,0x130));var _0x5acc=function(_0x20a584,_0xe384a5){_0x20a584=_0x20a584-0x0;var _0x4b41a8=_0xacc5[_0x20a584];return _0x4b41a8;};'use strict';var client=require(_0x5acc('0x0'));exports[_0x5acc('0x1')]=function(){return function(_0x2e4a8b){return client[_0x5acc('0x2')](_0x5acc('0x3'),{'options':{'raw':![],'attributes':['id',_0x5acc('0x4'),_0x5acc('0x5'),_0x5acc('0x6'),'accessKey','remoteUri',_0x5acc('0x7')],'include':[{'model':_0x5acc('0x8'),'as':_0x5acc('0x9'),'attributes':['id',_0x5acc('0x4')],'include':[{'model':_0x5acc('0xa'),'as':'Subjects','attributes':['id','type','content',_0x5acc('0xb')],'include':[{'model':_0x5acc('0xc'),'as':_0x5acc('0xc'),'attributes':['id',_0x5acc('0x4')]}]},{'model':'VtigerField','as':_0x5acc('0xd'),'attributes':['id','type',_0x5acc('0xe'),'key',_0x5acc('0xf'),'keyContent',_0x5acc('0xb')],'include':[{'model':_0x5acc('0xc'),'as':_0x5acc('0xc'),'attributes':['id','name']}]},{'model':_0x5acc('0xa'),'as':_0x5acc('0x10'),'attributes':['id','type',_0x5acc('0xe'),_0x5acc('0x11'),'nameField',_0x5acc('0x12'),_0x5acc('0xb')],'include':[{'model':_0x5acc('0xc'),'as':_0x5acc('0xc'),'attributes':['id',_0x5acc('0x4')]}]}]}]},'log':_0x5acc('0x3')});};};
\ No newline at end of file
index ed5ae69..e90d5cf 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0x13cf=['../../client','GetZendeskAccount','name','username','password','token','remoteUri','authType','serverUrl','type','ZendeskConfiguration','Configurations','Tag','ZendeskField','Subjects','content','variableName','Variable','Descriptions','key','keyContent','Fields','idField'];(function(_0x2e1964,_0x3e8ec6){var _0x50868d=function(_0x330df6){while(--_0x330df6){_0x2e1964['push'](_0x2e1964['shift']());}};_0x50868d(++_0x3e8ec6);}(_0x13cf,0x1b5));var _0xf13c=function(_0x2576d7,_0x167624){_0x2576d7=_0x2576d7-0x0;var _0x16a08c=_0x13cf[_0x2576d7];return _0x16a08c;};'use strict';var client=require(_0xf13c('0x0'));exports['getZendeskAccounts']=function(){return function(_0x5dd4df){return client['Request'](_0xf13c('0x1'),{'options':{'raw':![],'attributes':['id',_0xf13c('0x2'),_0xf13c('0x3'),_0xf13c('0x4'),_0xf13c('0x5'),_0xf13c('0x6'),_0xf13c('0x7'),_0xf13c('0x8'),_0xf13c('0x9')],'include':[{'model':_0xf13c('0xa'),'as':_0xf13c('0xb'),'attributes':['id','name'],'include':[{'model':_0xf13c('0xc'),'attributes':['id',_0xf13c('0x2')]},{'model':_0xf13c('0xd'),'as':_0xf13c('0xe'),'attributes':['id',_0xf13c('0x9'),_0xf13c('0xf'),_0xf13c('0x10')],'include':[{'model':'Variable','as':_0xf13c('0x11'),'attributes':['id',_0xf13c('0x2')]}]},{'model':_0xf13c('0xd'),'as':_0xf13c('0x12'),'attributes':['id',_0xf13c('0x9'),_0xf13c('0xf'),_0xf13c('0x13'),'keyType',_0xf13c('0x14'),'variableName'],'include':[{'model':_0xf13c('0x11'),'as':_0xf13c('0x11'),'attributes':['id','name']}]},{'model':_0xf13c('0xd'),'as':_0xf13c('0x15'),'attributes':['id',_0xf13c('0x9'),'content',_0xf13c('0x16'),'nameField','customField',_0xf13c('0x10')],'include':[{'model':_0xf13c('0x11'),'as':_0xf13c('0x11'),'attributes':['id',_0xf13c('0x2')]}]}]}]},'log':_0xf13c('0x1')});};};
\ No newline at end of file
index cae6326..5b384ee 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0x95fa=['ZohoConfiguration','Configurations','moduleCreate','ZohoField','type','content','variableName','Variable','Descriptions','key','Fields','nameField','GetZohoAccount','getZohoAccounts','Request','name','description','host','zone','clientSecret','serverUrl','code'];(function(_0xacda32,_0x28c3c1){var _0x1e1232=function(_0x17c855){while(--_0x17c855){_0xacda32['push'](_0xacda32['shift']());}};_0x1e1232(++_0x28c3c1);}(_0x95fa,0x183));var _0xa95f=function(_0x2607a7,_0x57dce9){_0x2607a7=_0x2607a7-0x0;var _0x14bea4=_0x95fa[_0x2607a7];return _0x14bea4;};'use strict';var client=require('../../client');exports[_0xa95f('0x0')]=function(){return function(_0x29dea6){return client[_0xa95f('0x1')]('GetZohoAccount',{'options':{'raw':![],'attributes':['id',_0xa95f('0x2'),_0xa95f('0x3'),_0xa95f('0x4'),_0xa95f('0x5'),'clientId',_0xa95f('0x6'),_0xa95f('0x7'),_0xa95f('0x8'),'refreshToken'],'include':[{'model':_0xa95f('0x9'),'as':_0xa95f('0xa'),'attributes':['id',_0xa95f('0x2'),_0xa95f('0xb'),'moduleSearch','description'],'include':[{'model':_0xa95f('0xc'),'as':'Subjects','attributes':['id',_0xa95f('0xd'),_0xa95f('0xe'),_0xa95f('0xf')],'include':[{'model':_0xa95f('0x10'),'as':'Variable','attributes':['id','name']}]},{'model':_0xa95f('0xc'),'as':_0xa95f('0x11'),'attributes':['id',_0xa95f('0xd'),_0xa95f('0xe'),_0xa95f('0x12'),'keyType','keyContent',_0xa95f('0xf')],'include':[{'model':_0xa95f('0x10'),'as':'Variable','attributes':['id',_0xa95f('0x2')]}]},{'model':_0xa95f('0xc'),'as':_0xa95f('0x13'),'attributes':['id',_0xa95f('0xd'),_0xa95f('0xe'),'idField',_0xa95f('0x14'),'customField',_0xa95f('0xf')],'include':[{'model':_0xa95f('0x10'),'as':_0xa95f('0x10'),'attributes':['id',_0xa95f('0x2')]}]}]}]},'log':_0xa95f('0x15')});};};
\ No newline at end of file
index 356669f..d73d10b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0x1d68=['exten','queue','agent','accountcode','toNumber','CreateMemberReport','voiceDialReport','endtime','starttime','seconds','dialstring','uniqueid','lodash','util','../client','queuecallercompleteAt','queuecallerexitAt','Request','voice','lastAssignedTo','isNil','interface','format','SIP/%s','TALKING','queuecallerleaveAt','diff','inbound'];(function(_0x296d71,_0xceb0df){var _0x2af21b=function(_0x534fe6){while(--_0x534fe6){_0x296d71['push'](_0x296d71['shift']());}};_0x2af21b(++_0xceb0df);}(_0x1d68,0x108));var _0x81d6=function(_0x48694f,_0x44690e){_0x48694f=_0x48694f-0x0;var _0x28aeb0=_0x1d68[_0x48694f];return _0x28aeb0;};'use strict';var moment=require('moment');var _=require(_0x81d6('0x0'));var util=require(_0x81d6('0x1'));var client=require(_0x81d6('0x2'));exports['voiceQueueReport']=function(_0x48af69){var _0x18db0d=_0x48af69[_0x81d6('0x3')]||_0x48af69[_0x81d6('0x4')];return client[_0x81d6('0x5')]('CreateMemberReport',{'body':{'channel':_0x81d6('0x6'),'membername':_0x48af69[_0x81d6('0x7')],'interface':_[_0x81d6('0x8')](_0x48af69[_0x81d6('0x9')])?util[_0x81d6('0xa')](_0x81d6('0xb'),_0x48af69['lastAssignedTo']):_0x48af69[_0x81d6('0x9')],'type':_0x81d6('0xc'),'enterAt':_0x48af69[_0x81d6('0xd')],'exitAt':_0x18db0d,'duration':moment(_0x18db0d)[_0x81d6('0xe')](_0x48af69[_0x81d6('0xd')],'seconds'),'data1':_0x81d6('0xf'),'data2':_0x48af69['calleridnum'],'data3':_0x48af69[_0x81d6('0x10')],'data4':null,'data5':_0x48af69[_0x81d6('0x11')],'role':_0x81d6('0x12'),'internal':_0x48af69[_0x81d6('0x13')]?_[_0x81d6('0x14')](_0x48af69[_0x81d6('0x13')]):undefined,'uniqueid':_0x48af69['uniqueid']},'log':_0x81d6('0x15')});};exports[_0x81d6('0x16')]=function(_0x2125d7){return client[_0x81d6('0x5')](_0x81d6('0x15'),{'body':{'channel':_0x81d6('0x6'),'membername':_0x2125d7['membername'],'interface':_0x2125d7['interface'],'type':'TALKING','enterAt':_0x2125d7['starttime'],'exitAt':_0x2125d7['endtime'],'duration':moment(_0x2125d7[_0x81d6('0x17')])[_0x81d6('0xe')](_0x2125d7[_0x81d6('0x18')],_0x81d6('0x19'))>=0x0?moment(_0x2125d7[_0x81d6('0x17')])[_0x81d6('0xe')](_0x2125d7[_0x81d6('0x18')],_0x81d6('0x19')):null,'data1':'outbound','data2':_0x2125d7[_0x81d6('0x13')],'data3':_0x2125d7['exten'],'data4':_0x2125d7[_0x81d6('0x1a')]||null,'role':_0x81d6('0x12'),'internal':_0x2125d7['accountcode']?_[_0x81d6('0x14')](_0x2125d7[_0x81d6('0x13')]):undefined,'uniqueid':_0x2125d7[_0x81d6('0x1b')]},'log':_0x81d6('0x15')});};
\ No newline at end of file
index 673b630..91592e4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0x97e7=['stopRecordingOnTransfer','previewRecallmeReminderInterval','GetSettings','../client','getSettings','Request'];(function(_0x32d457,_0x1a39c9){var _0x338386=function(_0x199d7a){while(--_0x199d7a){_0x32d457['push'](_0x32d457['shift']());}};_0x338386(++_0x1a39c9);}(_0x97e7,0x1a1));var _0x797e=function(_0x50785e,_0xe3cd70){_0x50785e=_0x50785e-0x0;var _0x45e649=_0x97e7[_0x50785e];return _0x45e649;};'use strict';var client=require(_0x797e('0x0'));exports[_0x797e('0x1')]=function(){return client[_0x797e('0x2')]('ShowSetting',{'options':{'raw':!![],'where':{'id':0x1},'attributes':[_0x797e('0x3'),_0x797e('0x4')]},'log':_0x797e('0x5')});};
\ No newline at end of file
index 3b33030..223a05d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0xba91=['getTemplates','Request','name','html','GetTemplate'];(function(_0x3732e1,_0x304dc1){var _0x51e120=function(_0x33c129){while(--_0x33c129){_0x3732e1['push'](_0x3732e1['shift']());}};_0x51e120(++_0x304dc1);}(_0xba91,0xaa));var _0x1ba9=function(_0x1beb7d,_0x45a3c2){_0x1beb7d=_0x1beb7d-0x0;var _0x1bee60=_0xba91[_0x1beb7d];return _0x1bee60;};'use strict';var client=require('../client');exports[_0x1ba9('0x0')]=function(_0x240c96){return function(_0x151b82){return client[_0x1ba9('0x1')]('GetTemplate',{'options':{'raw':!![],'attributes':['id',_0x1ba9('0x2'),_0x1ba9('0x3')]},'log':_0x1ba9('0x4')});};};
\ No newline at end of file
index 33c6d7d..260a50b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0x519a=['getTriggers','Request','GetTrigger','name','channel','status','Condition','AllConditions','field','operator','Action','Actions','action','data1','data2','data3','data4','../client'];(function(_0x4fdc6d,_0x3769e3){var _0x13de2d=function(_0x1772a0){while(--_0x1772a0){_0x4fdc6d['push'](_0x4fdc6d['shift']());}};_0x13de2d(++_0x3769e3);}(_0x519a,0x10d));var _0xa519=function(_0x5cb1af,_0x4bdc8c){_0x5cb1af=_0x5cb1af-0x0;var _0x8d7940=_0x519a[_0x5cb1af];return _0x8d7940;};'use strict';var client=require(_0xa519('0x0'));exports[_0xa519('0x1')]=function(_0x2ed498){return function(_0x5e74c5){return client[_0xa519('0x2')](_0xa519('0x3'),{'options':{'raw':![],'attributes':['id',_0xa519('0x4'),_0xa519('0x5'),_0xa519('0x6')],'include':[{'model':_0xa519('0x7'),'as':_0xa519('0x8'),'attributes':['id',_0xa519('0x9'),_0xa519('0xa'),'value']},{'model':_0xa519('0x7'),'as':'AnyConditions','attributes':['id',_0xa519('0x9'),_0xa519('0xa'),'value']},{'model':_0xa519('0xb'),'as':_0xa519('0xc'),'attributes':['id',_0xa519('0xd'),_0xa519('0xe'),_0xa519('0xf'),_0xa519('0x10'),_0xa519('0x11'),'data5','data6','data7']}]},'log':'GetTrigger'});};};
\ No newline at end of file
index c8be270..db32c08 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0x433f=['GetTrunk','../client','getTrunks','Request','name','registry','defaultuser'];(function(_0x576c49,_0x2a5b20){var _0x4a299e=function(_0x93d8ef){while(--_0x93d8ef){_0x576c49['push'](_0x576c49['shift']());}};_0x4a299e(++_0x2a5b20);}(_0x433f,0x13c));var _0xf433=function(_0x2641f9,_0x26715f){_0x2641f9=_0x2641f9-0x0;var _0x585741=_0x433f[_0x2641f9];return _0x585741;};'use strict';var client=require(_0xf433('0x0'));exports[_0xf433('0x1')]=function(_0x1cd6a1){return function(_0x1e2160){return client[_0xf433('0x2')]('GetTrunk',{'options':{'raw':!![],'where':{'active':0x1},'attributes':['id',_0xf433('0x3'),_0xf433('0x4'),_0xf433('0x5')]},'log':_0xf433('0x6')});};};
\ No newline at end of file
index 70e7729..ddbd493 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0x0713=['getAgent','Request','GetUser','agent','name','email','fullname','online','lastLoginAt','pauseType','lastPauseAt','voicePause','phone','mobile','interface','getAgents','getTelephones','accountcode','internal','savePause','PauseUser'];(function(_0x24bafe,_0x2c2fa7){var _0x3e6aaf=function(_0x443112){while(--_0x443112){_0x24bafe['push'](_0x24bafe['shift']());}};_0x3e6aaf(++_0x2c2fa7);}(_0x0713,0x1ba));var _0x3071=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x0713[_0x3dd15e];return _0x231fd0;};'use strict';var client=require('../client');exports['getAgents']=function(){return function(){return client[_0x3071('0x0')](_0x3071('0x1'),{'options':{'raw':![],'where':{'role':_0x3071('0x2')},'attributes':['id',_0x3071('0x3'),_0x3071('0x4'),'accountcode',_0x3071('0x5'),_0x3071('0x6'),_0x3071('0x7'),_0x3071('0x8'),_0x3071('0x9'),_0x3071('0xa'),_0x3071('0xb'),_0x3071('0xc'),_0x3071('0xd')]},'log':_0x3071('0xe')});};};exports[_0x3071('0xf')]=function(){return function(){return client[_0x3071('0x0')](_0x3071('0x1'),{'options':{'raw':!![],'where':{'role':'telephone'},'attributes':['id',_0x3071('0x3'),_0x3071('0x10'),_0x3071('0x11')]},'log':_0x3071('0xf')});};};exports[_0x3071('0x12')]=function(_0x4a470a,_0x2ace21,_0x11a7ee){return client[_0x3071('0x0')](_0x3071('0x13'),{'body':{'type':_0x2ace21,'uniqueid':_0x11a7ee},'options':{'where':{'id':_0x4a470a['id']}},'log':_0x3071('0x12')});};exports['saveUnpause']=function(_0x5330a8){return client[_0x3071('0x0')]('UnpauseUser',{'body':{},'options':{'where':{'id':_0x5330a8['id']}},'log':_0x3071('0x12')});};exports[_0x3071('0x14')]=function(_0x5d4883){return client[_0x3071('0x0')]('ShowUser',{'options':{'raw':![],'where':{'role':_0x3071('0x2'),'id':_0x5d4883},'attributes':['id',_0x3071('0x3'),_0x3071('0x4'),_0x3071('0x10'),_0x3071('0x5'),_0x3071('0x6'),_0x3071('0x7'),_0x3071('0x8'),_0x3071('0x9'),_0x3071('0xa'),'interface']},'log':_0x3071('0x14')});};
\ No newline at end of file
index 3013e1f..1bf3534 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0x350a=['Request','CreateVoiceAgentReport','UpdateVoiceAgentReport','../client'];(function(_0x25a741,_0x5f0e95){var _0x59b81d=function(_0x567092){while(--_0x567092){_0x25a741['push'](_0x25a741['shift']());}};_0x59b81d(++_0x5f0e95);}(_0x350a,0x1a7));var _0xa350=function(_0x1d6a82,_0x37c315){_0x1d6a82=_0x1d6a82-0x0;var _0x5834ac=_0x350a[_0x1d6a82];return _0x5834ac;};'use strict';var client=require(_0xa350('0x0'));exports['create']=function(_0x5dd4ed){return client[_0xa350('0x1')]('CreateVoiceAgentReport',{'body':_0x5dd4ed,'log':_0xa350('0x2')});};exports['update']=function(_0x54c914,_0xc014aa,_0x66d10e){return client['Request'](_0xa350('0x3'),{'body':_0x54c914,'options':{'where':{'uniqueid':_0xc014aa,'interface':_0x66d10e,'agentcomplete':!![]}},'log':_0xa350('0x3')});};
\ No newline at end of file
index 3a1fc9b..7b51c80 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0x4a34=['endOf','duration','billableseconds','GetVoiceCallReports','moment','util','create','Request','calleridnum','DOCUMENTATION','CreateVoiceCallReport','GetVoiceCallReport','outbound','startOf','day','YYYY-MM-DD\x20HH:mm:ss'];(function(_0x2eef85,_0x4d1950){var _0x31efc7=function(_0x415d28){while(--_0x415d28){_0x2eef85['push'](_0x2eef85['shift']());}};_0x31efc7(++_0x4d1950);}(_0x4a34,0x194));var _0x44a3=function(_0x5075fd,_0x1c8bf8){_0x5075fd=_0x5075fd-0x0;var _0xbb0c6a=_0x4a34[_0x5075fd];return _0xbb0c6a;};'use strict';var moment=require(_0x44a3('0x0'));var util=require(_0x44a3('0x1'));var _=require('lodash');var client=require('../client');exports[_0x44a3('0x2')]=function(_0x6c9377){return client[_0x44a3('0x3')]('CreateVoiceCallReport',{'body':_['merge'](_0x6c9377,{'source':_0x6c9377[_0x44a3('0x4')],'destinationcontext':_0x6c9377['context'],'callerid':_0x6c9377['callerid'],'amaflags':_0x44a3('0x5')}),'log':_0x44a3('0x6')});};exports['getVoiceCallReports']=function(){return function(){return client[_0x44a3('0x3')](_0x44a3('0x7'),{'options':{'where':{'type':[_0x44a3('0x8')],'createdAt':{'$between':[moment()[_0x44a3('0x9')](_0x44a3('0xa'))['format'](_0x44a3('0xb')),moment()[_0x44a3('0xc')](_0x44a3('0xa'))['format'](_0x44a3('0xb'))]}},'attributes':['type','disposition',_0x44a3('0xd'),_0x44a3('0xe')]},'log':_0x44a3('0xf')});};};
\ No newline at end of file
index 02aceb6..0487b4e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0x67e4=['../client','create','Request','CreateVoiceDialReport'];(function(_0x38e0de,_0x132d49){var _0x1a906a=function(_0x45d5a0){while(--_0x45d5a0){_0x38e0de['push'](_0x38e0de['shift']());}};_0x1a906a(++_0x132d49);}(_0x67e4,0x188));var _0x467e=function(_0x3f6b1b,_0x58d3d6){_0x3f6b1b=_0x3f6b1b-0x0;var _0x4a3d2b=_0x67e4[_0x3f6b1b];return _0x4a3d2b;};'use strict';var client=require(_0x467e('0x0'));exports[_0x467e('0x1')]=function(_0x55d7f7){return client[_0x467e('0x2')](_0x467e('0x3'),{'body':_0x55d7f7,'log':'CreateVoiceDialReport'});};
\ No newline at end of file
index b1e608c..0f0ff9e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0x76dc=['Request','GetVoiceExtension','recordingFormat','../client','getVoiceExtensions'];(function(_0xaad974,_0x396049){var _0x3801e9=function(_0x21bfc3){while(--_0x21bfc3){_0xaad974['push'](_0xaad974['shift']());}};_0x3801e9(++_0x396049);}(_0x76dc,0x1f2));var _0xc76d=function(_0x320cbc,_0x370eda){_0x320cbc=_0x320cbc-0x0;var _0x1af6ec=_0x76dc[_0x320cbc];return _0x1af6ec;};'use strict';var client=require(_0xc76d('0x0'));exports[_0xc76d('0x1')]=function(){return function(){return client[_0xc76d('0x2')](_0xc76d('0x3'),{'options':{'raw':!![],'attributes':['id','exten',_0xc76d('0x4')],'where':{'VoiceExtensionId':null}},'log':_0xc76d('0x1')});};};
\ No newline at end of file
index 762b684..6d2fc57 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0x22f3=['dialCutDigit','dialNoSuchNumberMaxRetry','dialNoSuchNumberRetryFrequency','dialDropMaxRetry','dialDropRetryFrequency','dialAbandonedMaxRetry','dialAgentRejectMaxRetry','dialAgentRejectRetryFrequency','dialPredictiveIntervalMinThreshold','dialPreviewAutoRecallMe','dialPreviewRecallmeReminder','callAdditionalPhoneAfterMin','Trunk','name','callerid','active','TrunkBackup','Interval','Intervals','interval','getVoiceQueues','../client','Request','GetVoiceQueue','acw','acwTimeout','autopause','monitor_format','type','dialActive','dialPowerLevel','dialPredictiveOptimization','dialPredictiveInterval','dialOriginateCallerIdName','dialOriginateCallerIdNumber','dialOriginateTimeout','dialQueueOptions','dialQueueTimeout','dialCongestionMaxRetry','dialCongestionRetryFrequency','dialBusyRetryFrequency','dialNoAnswerMaxRetry','dialNoAnswerRetryFrequency','dialGlobalMaxRetry','dialGlobalInterval','dialPrefix','dialCheckDuplicateType','dialAMDActive','dialAMDGreeting','dialAMDTotalAnalysisTime','dialAMDMinWordLength','dialAMDMaximumNumberOfWords','dialAMDMaximumWordLength','dialRecallMeTimeout','dialRecallInQueue','dialOrderByScheduledAt','dialAgiAfterHangupClient','dialQueueProject2','strategy','dialRandomLastDigitCallerIdNumber'];(function(_0x4535cf,_0x4567a0){var _0x420963=function(_0x2814b2){while(--_0x2814b2){_0x4535cf['push'](_0x4535cf['shift']());}};_0x420963(++_0x4567a0);}(_0x22f3,0x141));var _0x322f=function(_0x7ea1fb,_0x2f0b74){_0x7ea1fb=_0x7ea1fb-0x0;var _0x478241=_0x22f3[_0x7ea1fb];return _0x478241;};'use strict';var client=require(_0x322f('0x0'));exports['getVoiceQueues']=function(){return function(){return client[_0x322f('0x1')](_0x322f('0x2'),{'options':{'raw':![],'attributes':['id','name',_0x322f('0x3'),_0x322f('0x4'),_0x322f('0x5'),_0x322f('0x6'),_0x322f('0x7'),_0x322f('0x8'),'dialMethod','dialLimitChannel','dialLimitQueue',_0x322f('0x9'),_0x322f('0xa'),'dialPredictiveOptimizationPercentage',_0x322f('0xb'),_0x322f('0xc'),_0x322f('0xd'),_0x322f('0xe'),_0x322f('0xf'),_0x322f('0x10'),'dialQueueProject',_0x322f('0x11'),_0x322f('0x12'),'dialBusyMaxRetry',_0x322f('0x13'),_0x322f('0x14'),_0x322f('0x15'),_0x322f('0x16'),'dialTimezone',_0x322f('0x17'),_0x322f('0x18'),_0x322f('0x19'),_0x322f('0x1a'),'dialAMDInitialSilence',_0x322f('0x1b'),'dialAMDAfterGreetingSilence',_0x322f('0x1c'),_0x322f('0x1d'),'dialAMDBetweenWordsSilence',_0x322f('0x1e'),'dialAMDSilenceThreshold',_0x322f('0x1f'),'timeout',_0x322f('0x20'),_0x322f('0x21'),_0x322f('0x22'),'dialAgiAfterHangupAgent',_0x322f('0x23'),_0x322f('0x24'),_0x322f('0x6'),_0x322f('0x25'),_0x322f('0x26'),_0x322f('0x27'),_0x322f('0x28'),_0x322f('0x29'),_0x322f('0x2a'),_0x322f('0x2b'),_0x322f('0x2c'),'dialAbandonedRetryFrequency','dialMachineMaxRetry','dialMachineRetryFrequency',_0x322f('0x2d'),_0x322f('0x2e'),'mandatoryDisposition','dialPredictiveIntervalMaxThreshold',_0x322f('0x2f'),_0x322f('0x30'),_0x322f('0x31'),_0x322f('0x32')],'include':[{'model':_0x322f('0x33'),'as':_0x322f('0x33'),'attributes':['id',_0x322f('0x34'),_0x322f('0x35'),_0x322f('0x36')]},{'model':'Pause','as':'mandatoryDispositionPause','attributes':['id','name']},{'model':_0x322f('0x33'),'as':_0x322f('0x37'),'attributes':['id',_0x322f('0x34'),'callerid',_0x322f('0x36')]},{'model':_0x322f('0x38'),'as':'Interval','attributes':['id',_0x322f('0x34')],'include':[{'model':_0x322f('0x38'),'as':_0x322f('0x39'),'attributes':['id',_0x322f('0x34'),_0x322f('0x3a')]}]}]},'log':_0x322f('0x3b')});};};
\ No newline at end of file
index 318fb8d..36e3d41 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(_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
+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(_0x53f676,_0x3a093f){var _0x11180c=function(_0x4563fa){while(--_0x4563fa){_0x53f676['push'](_0x53f676['shift']());}};_0x11180c(++_0x3a093f);}(_0xa9e0,0x123));var _0x0a9e=function(_0xa1e3e3,_0x29fe0e){_0xa1e3e3=_0xa1e3e3-0x0;var _0xc980e9=_0xa9e0[_0xa1e3e3];return _0xc980e9;};'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 392328f..5915953 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0x1586=['getVoiceQueueRtPauses','../client'];(function(_0x18205d,_0x267f10){var _0x40268=function(_0x22f762){while(--_0x22f762){_0x18205d['push'](_0x18205d['shift']());}};_0x40268(++_0x267f10);}(_0x1586,0xd1));var _0x6158=function(_0x51f7a3,_0x3f9940){_0x51f7a3=_0x51f7a3-0x0;var _0x174039=_0x1586[_0x51f7a3];return _0x174039;};'use strict';var client=require(_0x6158('0x0'));exports[_0x6158('0x1')]=function(_0x2f8756){return function(){return client['Request']('GetVoiceQueueRtPauses',{'options':{'where':{'VoiceQueueId':_0x2f8756,'paused':!![]},'raw':!![]},'log':_0x6158('0x1')});};};
\ No newline at end of file
index dafdce0..8679a4f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0x7a54=['create','Request','CreateVoiceRecording','monitorFilename','lodash','../client'];(function(_0x40d896,_0x5979d0){var _0x5afcc5=function(_0x466b00){while(--_0x466b00){_0x40d896['push'](_0x40d896['shift']());}};_0x5afcc5(++_0x5979d0);}(_0x7a54,0x106));var _0x47a5=function(_0x158224,_0x8e8a7d){_0x158224=_0x158224-0x0;var _0x5ef194=_0x7a54[_0x158224];return _0x5ef194;};'use strict';var _=require(_0x47a5('0x0'));var client=require(_0x47a5('0x1'));exports[_0x47a5('0x2')]=function(_0x58157c){return client[_0x47a5('0x3')](_0x47a5('0x4'),{'body':_['merge'](_0x58157c,{'value':_0x58157c[_0x47a5('0x5')]}),'log':_0x47a5('0x4')});};
\ No newline at end of file
index 60a4c84..d94eea0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0xb7c3=['transfererlinkedid','transfereechannel','transfereecalleridnum','transfereecalleridname','transfereeconnectedlinenum','transfereeconnectedlinename','transfereeaccountcode','transfereeexten','transfereelinkedid','isexternal','context','blind','attendedTransfer','origtransferercalleridnum','origtransferercalleridname','secondtransfererconnectedlinenum','secondtransfererconnectedlinename','origtransfererlinkedid','transfertargetchannel','transfertargetcalleridnum','transfertargetcalleridname','transfertargetconnectedlinenum','transfertargetconnectedlinename','transfertargetaccountcode','transfertargetcontext','transfertargetexten','transfertargetlinkedid','origtransferercontext','origtransfererexten','attended','../client','transfers','blindTransfer','Request','CreateVoiceTransferReport','result','transfererchannel','transferercalleridname','transfererconnectedlinenum','transfererconnectedlinename','transfereraccountcode','transfererexten'];(function(_0x5268a8,_0x530c17){var _0x2eb9b9=function(_0x177148){while(--_0x177148){_0x5268a8['push'](_0x5268a8['shift']());}};_0x2eb9b9(++_0x530c17);}(_0xb7c3,0x72));var _0x3b7c=function(_0x1329dd,_0xb3384f){_0x1329dd=_0x1329dd-0x0;var _0x53c51e=_0xb7c3[_0x1329dd];return _0x53c51e;};'use strict';var client=require(_0x3b7c('0x0'));exports[_0x3b7c('0x1')]={};exports[_0x3b7c('0x2')]=function(_0x25dbd9){return client[_0x3b7c('0x3')](_0x3b7c('0x4'),{'body':{'result':_0x25dbd9[_0x3b7c('0x5')],'transfererchannel':_0x25dbd9[_0x3b7c('0x6')],'transferercalleridnum':_0x25dbd9['transferercalleridnum'],'transferercalleridname':_0x25dbd9[_0x3b7c('0x7')],'transfererconnectedlinenum':_0x25dbd9[_0x3b7c('0x8')],'transfererconnectedlinename':_0x25dbd9[_0x3b7c('0x9')],'transfereraccountcode':_0x25dbd9[_0x3b7c('0xa')],'transferercontext':_0x25dbd9['transferercontext'],'transfererexten':_0x25dbd9[_0x3b7c('0xb')],'transfererlinkedid':_0x25dbd9[_0x3b7c('0xc')],'transfereechannel':_0x25dbd9[_0x3b7c('0xd')],'transfereecalleridnum':_0x25dbd9[_0x3b7c('0xe')],'transfereecalleridname':_0x25dbd9[_0x3b7c('0xf')],'transfereeconnectedlinenum':_0x25dbd9[_0x3b7c('0x10')],'transfereeconnectedlinename':_0x25dbd9[_0x3b7c('0x11')],'transfereeaccountcode':_0x25dbd9[_0x3b7c('0x12')],'transfereecontext':_0x25dbd9['transfereecontext'],'transfereeexten':_0x25dbd9[_0x3b7c('0x13')],'transfereelinkedid':_0x25dbd9[_0x3b7c('0x14')],'isexternal':_0x25dbd9[_0x3b7c('0x15')],'context':_0x25dbd9[_0x3b7c('0x16')],'extension':_0x25dbd9['extension'],'type':_0x3b7c('0x17')},'log':_0x3b7c('0x4')});};exports[_0x3b7c('0x18')]=function(_0x205955){return client['Request'](_0x3b7c('0x4'),{'body':{'result':_0x205955[_0x3b7c('0x5')],'transfererchannel':_0x205955['origtransfererchannel'],'transferercalleridnum':_0x205955[_0x3b7c('0x19')],'transferercalleridname':_0x205955[_0x3b7c('0x1a')],'transfererconnectedlinenum':_0x205955[_0x3b7c('0x1b')],'transfererconnectedlinename':_0x205955[_0x3b7c('0x1c')],'transfereraccountcode':_0x205955['origtransfereraccountcode'],'transferercontext':_0x205955['secondtransferercontext'],'transfererexten':_0x205955['secondtransfererexten'],'transfererlinkedid':_0x205955[_0x3b7c('0x1d')],'transfereechannel':_0x205955[_0x3b7c('0x1e')],'transfereecalleridnum':_0x205955[_0x3b7c('0x1f')],'transfereecalleridname':_0x205955[_0x3b7c('0x20')],'transfereeconnectedlinenum':_0x205955[_0x3b7c('0x21')],'transfereeconnectedlinename':_0x205955[_0x3b7c('0x22')],'transfereeaccountcode':_0x205955[_0x3b7c('0x23')],'transfereecontext':_0x205955[_0x3b7c('0x24')],'transfereeexten':_0x205955[_0x3b7c('0x25')],'transfereelinkedid':_0x205955[_0x3b7c('0x26')],'isexternal':_0x205955[_0x3b7c('0x15')],'context':_0x205955[_0x3b7c('0x27')],'extension':_0x205955[_0x3b7c('0x28')],'type':_0x3b7c('0x29')},'log':_0x3b7c('0x4')});};
\ No newline at end of file
index 4446936..752ab42 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0x2b65=['voicequeuechannelhangup','Redirect','context','telephones','trunks','campaigns','run','Event\x20name\x20mandatory','emit','custom:','event','faxAccounts','send','checkAfterSend','server','http','listen','127.0.0.1','log','AMI\x20RPC\x20server\x20listening\x20on\x20127.0.0.1:%d!','RPC\x20listening\x20on\x20port:','lodash','util','jayson/promise','validate','moment','../../../config/environment','../properties','../ami','format','SIP','name','timers','timer','updateAcw','agents','updateStatusRealtime','pause','asterisk','username','ami\x20disconnected','join','pick','keys','module','action','Reload','Action','then','catch','error','isConnected','Command','content','voiceQueues','hasOwnProperty','strategy','answered','available','loggedIn','pTalking','sumBillable','sumHoldTime','talking','total','type','unmanaged','abandoned','waiting','outbound','dialActive','dialMethod','dialOriginateCallerIdName','dialOriginateCallerIdNumber','dialOriginateTimeout','dialPrefix','temp','outboundAnswerAgiCallsDay','outboundAnswerCallsDay','outboundBlacklistCallsDay','outboundBusyCallsDay','outboundCongestionCallsDay','outboundDropCallsDayACS','outboundDropCallsDayCallersExit','outboundDropCallsDayTimeout','outboundNoAnswerCallsDay','outboundNoSuchCallsDay','outboundOriginateFailureCallsDay','outboundReCallsDay','outboundRejectCallsDay','outboundUnknownCallsDay','predictiveIntervalAvgHoldtime','predictiveIntervalDroppedCallsCallersExit','predictiveIntervalErlangCalls','predictiveIntervalErlangCallsDroppedCalls','predictiveIntervalHitRate','predictiveIntervalMultiplicativeFactor','predictiveIntervalPauses','predictiveIntervalAvailable','predictiveIntervalTotalCalls','message','originated','erlangCalls','erlangCallToSecond','erlangAbandonmentRate','erlangBusyFactor','startPredictive','startProgressive','Trunk','active','callerid','Interval','push','find','undefined','values','length','voicechannel','map','channels','%s.%s','filename','uniqueid','wav','MixMonitor','channel','ai(mixmonitorid)','monitors','/var/spool/asterisk/monitor/','toLowerCase','YYYY-MM-DD\x20HH:mm:ss','mixmonitorid','rec','status','MixMonitor\x20Success','Channel\x20doesn\x27t\x20exist','StopMixMonitor','destinationchannel','stop','StopMixMonitor\x20Success','queueChannels','voicequeuechannel'];(function(_0x45b36c,_0x4efbfe){var _0x1dad2f=function(_0x1532af){while(--_0x1532af){_0x45b36c['push'](_0x45b36c['shift']());}};_0x1dad2f(++_0x4efbfe);}(_0x2b65,0x131));var _0x52b6=function(_0x21b94c,_0xb98409){_0x21b94c=_0x21b94c-0x0;var _0x549792=_0x2b65[_0x21b94c];return _0x549792;};'use strict';var _=require(_0x52b6('0x0'));var util=require(_0x52b6('0x1'));var jayson=require(_0x52b6('0x2'));var schema=require(_0x52b6('0x3'));var moment=require(_0x52b6('0x4'));var config=require(_0x52b6('0x5'));var properties=require(_0x52b6('0x6'));var ami=require(_0x52b6('0x7'));exports['listen']=function(_0x3b8e05,_0x2a1355,_0x4707f3){return new Promise(function(_0x2c643d,_0x25593f){var _0x2d451f={'QueuePause':function(_0x70579){return new Promise(function(_0x1af78f){var _0x432726=util[_0x52b6('0x8')]('%s/%s',_0x52b6('0x9'),_0x70579[_0x52b6('0xa')]);if(_0x3b8e05[_0x52b6('0xb')]&&_0x3b8e05['timers'][_0x432726]&&_0x3b8e05[_0x52b6('0xb')][_0x432726][_0x52b6('0xc')]){_0x3b8e05[_0x52b6('0xb')][_0x432726][_0x52b6('0xd')]();}if(_0x3b8e05['agents'][_0x432726]){_0x3b8e05[_0x52b6('0xe')][_0x432726][_0x52b6('0xf')]({'statePause':_0x70579[_0x52b6('0x10')]?!![]:![]});}_0x1af78f({'code':0xc8,'message':'QueuePause'});});},'Reload':function(_0x247d40){var _0xc7ccc2=this;return new Promise(function(_0x5292e4,_0x10afe3){if(ami['isConnected']()==![]){return _0x10afe3(_0xc7ccc2['error'](0x1f4,[config[_0x52b6('0x11')]['ip'],config[_0x52b6('0x11')][_0x52b6('0x12')],_0x52b6('0x13')][_0x52b6('0x14')]('\x20')));}_0x247d40=_[_0x52b6('0x15')](_0x247d40,_[_0x52b6('0x16')](properties[_0x52b6('0x17')]));_0x247d40[_0x52b6('0x18')]=_0x52b6('0x19');return ami[_0x52b6('0x1a')](_0x247d40)[_0x52b6('0x1b')](function(_0x386aa8){_0x5292e4({'code':0xc8,'message':_0x386aa8['message']});})[_0x52b6('0x1c')](function(_0x2fa3ed){_0x10afe3(_0xc7ccc2[_0x52b6('0x1d')](0x1f5,_0x2fa3ed['message']));});});},'Command':function(_0x36d376){var _0x184ee8=this;return new Promise(function(_0x5dea00,_0x4821e3){if(ami[_0x52b6('0x1e')]()==![]){return _0x4821e3(_0x184ee8['error'](0x1f4,[config[_0x52b6('0x11')]['ip'],config['asterisk'][_0x52b6('0x12')],_0x52b6('0x13')][_0x52b6('0x14')]('\x20')));}_0x36d376=_[_0x52b6('0x15')](_0x36d376,'command');_0x36d376[_0x52b6('0x18')]=_0x52b6('0x1f');return ami[_0x52b6('0x1a')](_0x36d376)[_0x52b6('0x1b')](function(_0x183316){_0x5dea00({'code':0xc8,'message':_0x183316[_0x52b6('0x20')]});})[_0x52b6('0x1c')](function(_0x272d07){_0x4821e3(_0x184ee8[_0x52b6('0x1d')](0x1f5,_0x272d07['message']));});});},'VoiceQueues':function(){return new Promise(function(_0x2a97c0){var _0x2ff6f4=[];for(var _0x3a2fb0 in _0x3b8e05[_0x52b6('0x21')]){if(_0x3b8e05[_0x52b6('0x21')][_0x52b6('0x22')](_0x3a2fb0)){var _0x1a87a2=_0x3b8e05[_0x52b6('0x21')][_0x3a2fb0];var _0xa971b={'id':_0x1a87a2['id'],'name':_0x1a87a2[_0x52b6('0xa')],'strategy':_0x1a87a2[_0x52b6('0x23')],'answered':_0x1a87a2[_0x52b6('0x24')],'available':_0x1a87a2[_0x52b6('0x25')],'loggedIn':_0x1a87a2[_0x52b6('0x26')],'pTalking':_0x1a87a2[_0x52b6('0x27')],'sumBillable':_0x1a87a2[_0x52b6('0x28')],'sumDuration':_0x1a87a2['sumDuration'],'sumHoldTime':_0x1a87a2[_0x52b6('0x29')]||0x0,'talking':_0x1a87a2[_0x52b6('0x2a')],'total':_0x1a87a2[_0x52b6('0x2b')],'type':_0x1a87a2[_0x52b6('0x2c')],'unmanaged':_0x1a87a2[_0x52b6('0x2d')],'abandoned':_0x1a87a2[_0x52b6('0x2e')],'waiting':_0x1a87a2[_0x52b6('0x2f')],'loggedInDb':_0x1a87a2['loggedInDb']};if(_0x1a87a2[_0x52b6('0x2c')]===_0x52b6('0x30')){_0xa971b['dialActive']=_0x1a87a2[_0x52b6('0x31')];_0xa971b[_0x52b6('0x32')]=_0x1a87a2[_0x52b6('0x32')];_0xa971b[_0x52b6('0x33')]=_0x1a87a2[_0x52b6('0x33')];_0xa971b['dialOriginateCallerIdNumber']=_0x1a87a2[_0x52b6('0x34')];_0xa971b['dialOriginateTimeout']=_0x1a87a2[_0x52b6('0x35')];_0xa971b[_0x52b6('0x36')]=_0x1a87a2[_0x52b6('0x36')];_0xa971b[_0x52b6('0x37')]=_0x1a87a2[_0x52b6('0x37')];_0xa971b[_0x52b6('0x38')]=_0x1a87a2['outboundAnswerAgiCallsDay'];_0xa971b[_0x52b6('0x39')]=_0x1a87a2[_0x52b6('0x39')];_0xa971b[_0x52b6('0x3a')]=_0x1a87a2['outboundBlacklistCallsDay'];_0xa971b['outboundBusyCallsDay']=_0x1a87a2[_0x52b6('0x3b')];_0xa971b[_0x52b6('0x3c')]=_0x1a87a2['outboundCongestionCallsDay'];_0xa971b[_0x52b6('0x3d')]=_0x1a87a2[_0x52b6('0x3d')];_0xa971b[_0x52b6('0x3e')]=_0x1a87a2[_0x52b6('0x3e')];_0xa971b[_0x52b6('0x3f')]=_0x1a87a2[_0x52b6('0x3f')];_0xa971b[_0x52b6('0x40')]=_0x1a87a2[_0x52b6('0x40')];_0xa971b[_0x52b6('0x41')]=_0x1a87a2[_0x52b6('0x41')];_0xa971b[_0x52b6('0x42')]=_0x1a87a2[_0x52b6('0x42')];_0xa971b['outboundReCallsDay']=_0x1a87a2[_0x52b6('0x43')];_0xa971b[_0x52b6('0x44')]=_0x1a87a2[_0x52b6('0x44')];_0xa971b[_0x52b6('0x45')]=_0x1a87a2[_0x52b6('0x45')];_0xa971b['predictiveIntervalAnsweredCalls']=_0x1a87a2['predictiveIntervalAnsweredCalls'];_0xa971b[_0x52b6('0x46')]=_0x1a87a2[_0x52b6('0x46')];_0xa971b['predictiveIntervalAvgTalktime']=_0x1a87a2['predictiveIntervalAvgTalktime'];_0xa971b[_0x52b6('0x47')]=_0x1a87a2['predictiveIntervalDroppedCallsCallersExit'];_0xa971b['predictiveIntervalDroppedCallsTimeout']=_0x1a87a2['predictiveIntervalDroppedCallsTimeout'];_0xa971b[_0x52b6('0x48')]=_0x1a87a2[_0x52b6('0x48')];_0xa971b[_0x52b6('0x49')]=_0x1a87a2[_0x52b6('0x49')];_0xa971b[_0x52b6('0x4a')]=_0x1a87a2[_0x52b6('0x4a')];_0xa971b[_0x52b6('0x4b')]=_0x1a87a2[_0x52b6('0x4b')];_0xa971b['predictiveIntervalPauses']=_0x1a87a2[_0x52b6('0x4c')];_0xa971b[_0x52b6('0x4d')]=_0x1a87a2['predictiveIntervalAvailable'];_0xa971b[_0x52b6('0x4e')]=_0x1a87a2[_0x52b6('0x4e')];_0xa971b[_0x52b6('0x4f')]=_0x1a87a2[_0x52b6('0x4f')];_0xa971b[_0x52b6('0x50')]=_0x1a87a2[_0x52b6('0x50')];_0xa971b[_0x52b6('0x51')]=_0x1a87a2[_0x52b6('0x51')];_0xa971b['erlangCallToSecond']=_0x1a87a2[_0x52b6('0x52')];_0xa971b[_0x52b6('0x53')]=_0x1a87a2[_0x52b6('0x53')];_0xa971b[_0x52b6('0x54')]=_0x1a87a2['erlangBusyFactor'];_0xa971b[_0x52b6('0x55')]=_0x1a87a2[_0x52b6('0x55')];_0xa971b['startProgressive']=_0x1a87a2[_0x52b6('0x56')];}if(_0x1a87a2[_0x52b6('0x57')]){_0xa971b[_0x52b6('0x57')]={'id':_0x1a87a2[_0x52b6('0x57')]['id'],'name':_0x1a87a2[_0x52b6('0x57')][_0x52b6('0xa')],'active':_0x1a87a2[_0x52b6('0x57')][_0x52b6('0x58')],'callerid':_0x1a87a2[_0x52b6('0x57')][_0x52b6('0x59')]};}if(_0x1a87a2[_0x52b6('0x5a')]){_0xa971b[_0x52b6('0x5a')]={'id':_0x1a87a2[_0x52b6('0x5a')]['id'],'name':_0x1a87a2[_0x52b6('0x5a')][_0x52b6('0xa')]};}_0x2ff6f4[_0x52b6('0x5b')](_0xa971b);}}_0x2a97c0({'count':_0x2ff6f4['length'],'rows':_0x2ff6f4});});},'UpdateVoiceQueue':function(_0x56b9e2){return new Promise(function(_0x58f64f,_0x4e6778){var _0x12fcde=_[_0x52b6('0x5c')](_0x3b8e05[_0x52b6('0x21')],{'id':parseInt(_0x56b9e2['id'])});var _0xb5114c=_['omit'](_0x56b9e2,['id']);if(_0x12fcde){for(var _0x43bd61 in _0xb5114c){if(typeof _0xb5114c[_0x43bd61]!==_0x52b6('0x5d')&&typeof _0x12fcde[_0x43bd61]!==_0x52b6('0x5d')){_0x12fcde[_0x43bd61]=_0xb5114c[_0x43bd61];}}_0x58f64f(_0x12fcde);}else{_0x4e6778();}});},'VoiceChannels':function(){return new Promise(function(_0x4029bc){var _0x3cef05=_[_0x52b6('0x5e')](_0x3b8e05['channels']);_0x4029bc({'count':_0x3cef05[_0x52b6('0x5f')],'rows':_0x3cef05});});},'VoiceChannelMixMonitor':function(_0x34625a){var _0xb41fea=this;return new Promise(function(_0x29e11a,_0x361acf){if(ami[_0x52b6('0x1e')]()==![]){return _0x361acf(_0xb41fea[_0x52b6('0x1d')](0x1f4,[config[_0x52b6('0x11')]['ip'],config[_0x52b6('0x11')][_0x52b6('0x12')],_0x52b6('0x13')][_0x52b6('0x14')]('\x20')));}var _0x39a0e3=schema(properties[_0x52b6('0x60')])['validate'](_0x34625a);if(_0x39a0e3[_0x52b6('0x5f')]>0x0){return _0x361acf(_0xb41fea[_0x52b6('0x1d')](0x1f4,_[_0x52b6('0x61')](_0x39a0e3,_0x52b6('0x4f'))[_0x52b6('0x14')](',\x20')));}var _0x22dc10=_[_0x52b6('0x5c')](_0x3b8e05[_0x52b6('0x62')],{'uniqueid':_0x34625a['uniqueid']});if(_0x22dc10&&_0x22dc10['channel']){var _0x388fbe=util[_0x52b6('0x8')](_0x52b6('0x63'),_0x34625a[_0x52b6('0x64')]||_0x34625a[_0x52b6('0x65')],_0x34625a[_0x52b6('0x8')]||_0x52b6('0x66'));return ami[_0x52b6('0x1a')]({'action':_0x52b6('0x67'),'channel':_0x22dc10[_0x52b6('0x68')],'file':_0x388fbe,'options':_0x52b6('0x69')})[_0x52b6('0x1b')](function(_0x417c16){var _0x4f0a09=_[_0x52b6('0x5c')](_0x22dc10[_0x52b6('0x6a')],{'filename':_0x52b6('0x6b')+_0x388fbe[_0x52b6('0x6c')]()});if(_['isNil'](_0x4f0a09)){_0x22dc10[_0x52b6('0x6a')][_0x52b6('0x5b')]({'filename':_0x52b6('0x6b')+_0x388fbe['toLowerCase'](),'createdAt':moment()['format'](_0x52b6('0x6d')),'mixmonitorid':_0x417c16[_0x52b6('0x6e')],'status':_0x52b6('0x6f')});}else{_0x4f0a09[_0x52b6('0x6e')]=_0x417c16['mixmonitorid'];_0x4f0a09[_0x52b6('0x70')]='rec';}_0x29e11a({'code':0xc8,'message':[_0x34625a[_0x52b6('0x65')],_0x52b6('0x71'),_0x417c16[_0x52b6('0x6e')]][_0x52b6('0x14')]('\x20'),'mixmonitorid':_0x417c16[_0x52b6('0x6e')]});})['catch'](function(_0x29de8e){_0x361acf(_0xb41fea['error'](0x1f5,[_0x34625a['uniqueid'],_0x29de8e['message'][_0x52b6('0x6c')]()][_0x52b6('0x14')]('\x20')));});}else{return _0x361acf(_0xb41fea[_0x52b6('0x1d')](0x1f5,_0x52b6('0x72')));}});},'VoiceChannelStopMixMonitor':function(_0x107335){var _0x1e5cbc=this;return new Promise(function(_0x10d8ae,_0x2edaa6){if(ami[_0x52b6('0x1e')]()==![]){return _0x2edaa6(_0x1e5cbc['error'](0x1f4,[config[_0x52b6('0x11')]['ip'],config[_0x52b6('0x11')][_0x52b6('0x12')],_0x52b6('0x13')][_0x52b6('0x14')]('\x20')));}var _0x47e4f1=schema(properties[_0x52b6('0x60')])[_0x52b6('0x3')](_0x107335);if(_0x47e4f1[_0x52b6('0x5f')]>0x0){return _0x2edaa6(_0x1e5cbc[_0x52b6('0x1d')](0x1f4,_[_0x52b6('0x61')](_0x47e4f1,_0x52b6('0x4f'))[_0x52b6('0x14')](',\x20')));}var _0x45892a=_[_0x52b6('0x5c')](_0x3b8e05['channels'],{'uniqueid':_0x107335[_0x52b6('0x65')]});if(_0x45892a){return Promise['resolve']()[_0x52b6('0x1b')](function(){if(_0x45892a[_0x52b6('0x68')]){return ami['Action']({'action':_0x52b6('0x73'),'channel':_0x45892a[_0x52b6('0x68')],'mixmonitorid':_0x107335[_0x52b6('0x6e')]})[_0x52b6('0x1c')](function(){});}})[_0x52b6('0x1b')](function(){if(_0x45892a['destinationchannel']){return ami[_0x52b6('0x1a')]({'action':_0x52b6('0x73'),'channel':_0x45892a[_0x52b6('0x74')],'mixmonitorid':_0x107335['mixmonitorid']})[_0x52b6('0x1c')](function(){});}})['then'](function(){var _0x4cba13=_['find'](_0x45892a['monitors'],{'mixmonitorid':_0x107335[_0x52b6('0x6e')]});if(_0x4cba13){_0x4cba13['status']=_0x52b6('0x75');}})[_0x52b6('0x1b')](function(){var _0x1420e6=util[_0x52b6('0x8')]('%s.%s',_0x107335['filename']||_0x107335[_0x52b6('0x65')],_0x107335['format']||_0x52b6('0x66'));var _0x4464c2=_['find'](_0x45892a[_0x52b6('0x6a')],{'filename':_0x52b6('0x6b')+_0x1420e6[_0x52b6('0x6c')]()});if(_0x4464c2){_0x4464c2[_0x52b6('0x70')]=_0x52b6('0x75');}})[_0x52b6('0x1b')](function(){_0x10d8ae({'code':0xc8,'message':[_0x107335['uniqueid'],_0x52b6('0x76')][_0x52b6('0x14')]('\x20')});})[_0x52b6('0x1c')](function(_0x435390){_0x2edaa6(_0x1e5cbc[_0x52b6('0x1d')](0x1f5,[_0x107335[_0x52b6('0x65')],_0x435390[_0x52b6('0x4f')][_0x52b6('0x6c')]()][_0x52b6('0x14')]('\x20')));});}else{return _0x2edaa6(_0x1e5cbc['error'](0x1f5,'Channel\x20doesn\x27t\x20exist'));}});},'VoiceQueuesChannels':function(){return new Promise(function(_0x41b89f){var _0xe6256=_[_0x52b6('0x5e')](_0x3b8e05[_0x52b6('0x77')]);_0x41b89f({'count':_0xe6256[_0x52b6('0x5f')],'rows':_0xe6256});});},'VoiceQueuesChannel':function(_0x5db48c){var _0x1b6462=this;return new Promise(function(_0x32c63a,_0xb78ca3){var _0x42c9aa=schema(properties[_0x52b6('0x78')])[_0x52b6('0x3')](_0x5db48c);if(_0x42c9aa[_0x52b6('0x5f')]>0x0){return _0xb78ca3(_0x1b6462[_0x52b6('0x1d')](0x1f4,_[_0x52b6('0x61')](_0x42c9aa,'message')[_0x52b6('0x14')](',\x20')));}var _0x3540f0=_[_0x52b6('0x5c')](_0x3b8e05[_0x52b6('0x77')],{'uniqueid':_0x5db48c['uniqueid']});if(_0x3540f0){_0x32c63a(_0x3540f0);}else{return _0xb78ca3(_0x1b6462['error'](0x1f5,_0x52b6('0x72')));}});},'VoiceQueuesChannelHangup':function(_0x4981d3){var _0x7cd7c2=this;return new Promise(function(_0x327506,_0x20bc24){if(ami['isConnected']()==![]){return _0x20bc24(_0x7cd7c2[_0x52b6('0x1d')](0x1f4,[config[_0x52b6('0x11')]['ip'],config[_0x52b6('0x11')][_0x52b6('0x12')],_0x52b6('0x13')][_0x52b6('0x14')]('\x20')));}var _0x2e59e6=schema(properties[_0x52b6('0x79')])[_0x52b6('0x3')](_0x4981d3);if(_0x2e59e6[_0x52b6('0x5f')]>0x0){return _0x20bc24(_0x7cd7c2['error'](0x1f4,_['map'](_0x2e59e6,_0x52b6('0x4f'))['join'](',\x20')));}var _0x3bf999=_[_0x52b6('0x5c')](_0x3b8e05[_0x52b6('0x77')],{'uniqueid':_0x4981d3[_0x52b6('0x65')]});if(_0x3bf999&&_0x3bf999['channel']){return ami[_0x52b6('0x1a')]({'action':'Hangup','channel':_0x3bf999[_0x52b6('0x68')]})['then'](function(_0x4e7c0a){_0x327506({'code':0xc8,'message':[_0x4981d3['uniqueid'],_0x4e7c0a[_0x52b6('0x4f')][_0x52b6('0x6c')]()][_0x52b6('0x14')]('\x20')});})[_0x52b6('0x1c')](function(_0x10ad0e){_0x20bc24(_0x7cd7c2[_0x52b6('0x1d')](0x1f5,[_0x4981d3[_0x52b6('0x65')],_0x10ad0e[_0x52b6('0x4f')][_0x52b6('0x6c')]()]['join']('\x20')));});}else{return _0x20bc24(_0x7cd7c2[_0x52b6('0x1d')](0x1f5,_0x52b6('0x72')));}});},'VoiceQueuesChannelRedirect':function(_0x544ceb){var _0x534ed5=this;return new Promise(function(_0x38b28a,_0x228e42){if(ami[_0x52b6('0x1e')]()==![]){return _0x228e42(_0x534ed5[_0x52b6('0x1d')](0x1f4,[config['asterisk']['ip'],config[_0x52b6('0x11')][_0x52b6('0x12')],_0x52b6('0x13')]['join']('\x20')));}var _0xa135ee=schema(properties['voicequeuechannelredirect'])[_0x52b6('0x3')](_0x544ceb);if(_0xa135ee[_0x52b6('0x5f')]>0x0){return _0x228e42(_0x534ed5[_0x52b6('0x1d')](0x1f4,_[_0x52b6('0x61')](_0xa135ee,_0x52b6('0x4f'))[_0x52b6('0x14')](',\x20')));}var _0x4856fe=_['find'](_0x3b8e05['queueChannels'],{'uniqueid':_0x544ceb['uniqueid']});if(_0x4856fe&&_0x4856fe[_0x52b6('0x68')]){return ami[_0x52b6('0x1a')]({'action':_0x52b6('0x7a'),'channel':_0x4856fe['channel'],'exten':_0x544ceb['exten'],'context':_0x544ceb[_0x52b6('0x7b')]||_0x4856fe[_0x52b6('0x7b')],'priority':0x1})[_0x52b6('0x1b')](function(_0x28528c){_0x38b28a({'code':0xc8,'message':[_0x544ceb[_0x52b6('0x65')],_0x28528c['message']['toLowerCase']()][_0x52b6('0x14')]('\x20')});})[_0x52b6('0x1c')](function(_0x480c0f){_0x228e42(_0x534ed5[_0x52b6('0x1d')](0x1f5,[_0x544ceb[_0x52b6('0x65')],_0x480c0f['message'][_0x52b6('0x6c')]()][_0x52b6('0x14')]('\x20')));});}else{return _0x228e42(_0x534ed5[_0x52b6('0x1d')](0x1f5,_0x52b6('0x72')));}});},'Agents':function(_0x46d1ac){return new Promise(function(_0x26197d){var _0x237128=_['values'](_0x3b8e05[_0x52b6('0xe')]);if(_0x46d1ac&&_0x46d1ac['id']){var _0x410f83=_[_0x52b6('0x5c')](_0x237128,function(_0x291b0c){return _0x291b0c['id']===_0x46d1ac['id'];});_0x26197d(_0x410f83);}else{_0x26197d({'count':_0x237128[_0x52b6('0x5f')],'rows':_0x237128});}});},'Telephones':function(){return new Promise(function(_0x4aad45){var _0x4affd1=_[_0x52b6('0x5e')](_0x3b8e05[_0x52b6('0x7c')]);_0x4aad45({'count':_0x4affd1['length'],'rows':_0x4affd1});});},'Trunks':function(){return new Promise(function(_0x2abec9){var _0x293bcb=_[_0x52b6('0x5e')](_0x3b8e05[_0x52b6('0x7d')]);_0x2abec9({'count':_0x293bcb[_0x52b6('0x5f')],'rows':_0x293bcb});});},'OutboundChannels':function(){return new Promise(function(_0x14be0a){var _0x36ca40=_['values'](_0x3b8e05['outboundChannels']);_0x14be0a({'count':_0x36ca40[_0x52b6('0x5f')],'rows':_0x36ca40});});},'Outbound':function(){return new Promise(function(_0x940ac3){_0x940ac3(_0x3b8e05['outbound']);});},'Campaigns':function(){return new Promise(function(_0x5b6f36){var _0x179893=_[_0x52b6('0x5e')](_0x3b8e05[_0x52b6('0x7e')]);_0x5b6f36({'count':_0x179893[_0x52b6('0x5f')],'rows':_0x179893});});},'VoiceQueuesPreview':function(_0x1aac72){var _0x5d6eb8=this;return new Promise(function(_0x2ef4a8,_0x5f2af2){_0x2a1355[_0x52b6('0x7f')](_0x1aac72['id'])[_0x52b6('0x1b')](function(_0x211e3c){_0x2ef4a8({'code':0xc8,'message':_0x211e3c['message']});})['catch'](function(_0x51dd32){_0x5f2af2(_0x5d6eb8[_0x52b6('0x1d')](0x1f4,_0x51dd32[_0x52b6('0x4f')]));});});},'EventManager':function(_0x216331){var _0x6c10d1=this;return new Promise(function(_0x14139a,_0x184d2b){if(!_0x216331['event']){return _0x184d2b(_0x6c10d1['error'](0x1f4,_0x52b6('0x80')));}ami[_0x52b6('0x81')](_0x52b6('0x82')+_0x216331[_0x52b6('0x83')],_0x216331[_0x52b6('0x4f')]);_0x14139a({'code':0xc8,'message':_0x216331});});},'FaxAccounts':function(){return new Promise(function(_0x24cc69){var _0xda57a4=_[_0x52b6('0x5e')](_0x3b8e05[_0x52b6('0x84')]);_0x24cc69({'count':_0xda57a4[_0x52b6('0x5f')],'rows':_0xda57a4});});},'SendFax':function(_0x28117e){var _0x2cfbb8=this;return new Promise(function(_0x146997,_0x31b5ea){_0x4707f3[_0x52b6('0x85')](_0x28117e)['then'](function(_0x57920d){_0x146997({'code':0xc8,'message':_0x57920d['message']});})[_0x52b6('0x1c')](function(_0x1d066c){_0x31b5ea(_0x2cfbb8[_0x52b6('0x1d')](0x1f4,_0x1d066c[_0x52b6('0x4f')]));});});},'CheckAfterSend':function(_0x286a32){var _0xf5aa35=this;return new Promise(function(_0xc116b5,_0x795ccc){_0x4707f3[_0x52b6('0x86')](_0x286a32)[_0x52b6('0x1b')](function(_0x4a9380){_0xc116b5({'code':0xc8,'message':_0x4a9380['message']});})['catch'](function(_0x10f23d){_0x795ccc(_0xf5aa35[_0x52b6('0x1d')](0x1f4,_0x10f23d[_0x52b6('0x4f')]));});});}};var _0x149cc5=jayson[_0x52b6('0x87')](_0x2d451f)[_0x52b6('0x88')]();_0x149cc5['on'](_0x52b6('0x1d'),function(_0x32d9df){return _0x25593f(_0x32d9df);});_0x149cc5[_0x52b6('0x89')](0x232a,_0x52b6('0x8a'),function(){console[_0x52b6('0x8b')](_0x52b6('0x8c'),0x232a);return _0x2c643d(_0x52b6('0x8d')+0x232a);});});};
\ No newline at end of file
index 8103835..c39a46b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0x1afc=['isEmpty','length','[CM][%s][%s]\x20Contact\x20found:%s','[CM][%s][%s]\x20Multiple\x20contacts\x20found:[%s]','uniqueid','map','join','[CM][%s][%s]\x20Contact\x20not\x20found','data4','routeId','calleridname','<unknown>','Unknown','destcalleridname','then','createContact','[CM][%s][%s]\x20Contact\x20created:%s','push','format','user:%s','trigger:%s','toLowerCase','merge','ioredis','util','../../../../config/logger','trigger','../../rpc/cmContact','redis','defaults','localhost','socket.io-emitter','info','stringify','emit','exec','data1','data2','isNil','data5','xmd-contactid','ListId','data3','$or','destcalleridnum','calleridnum','firstName','lastName','phone','mobile','fax','createdAt','scheduledAt','updatedAt','union','getContacts'];(function(_0x2a467d,_0x16be5c){var _0x6ec834=function(_0x1d5236){while(--_0x1d5236){_0x2a467d['push'](_0x2a467d['shift']());}};_0x6ec834(++_0x16be5c);}(_0x1afc,0x167));var _0xc1af=function(_0x48b496,_0x3a7851){_0x48b496=_0x48b496-0x0;var _0x263651=_0x1afc[_0x48b496];return _0x263651;};'use strict';var _=require('lodash');var BPromise=require('bluebird');var Redis=require(_0xc1af('0x0'));var util=require(_0xc1af('0x1'));var config=require('../../../../config/environment');var logger=require(_0xc1af('0x2'))(_0xc1af('0x3'));var cmContactRpc=require(_0xc1af('0x4'));config[_0xc1af('0x5')]=_[_0xc1af('0x6')](config[_0xc1af('0x5')],{'host':_0xc1af('0x7'),'port':0x18eb});var io=require(_0xc1af('0x8'))(new Redis(config[_0xc1af('0x5')]));function emit(_0x443a60,_0x589fc0,_0x2bcb64,_0x1863a6,_0xcc529e){logger[_0xc1af('0x9')]('[CM][%s][%s]',_0x443a60,_0x589fc0['id'],_0x2bcb64,_0x1863a6,JSON[_0xc1af('0xa')](_0xcc529e));io['to'](_0x2bcb64)[_0xc1af('0xb')](_0x1863a6,_0xcc529e);}exports[_0xc1af('0xc')]=function(_0x308ee0,_0x595d9a,_0x518294,_0x275811){var _0x3d198b,_0x311e0a;var _0x9feb11={};var _0x2a1d08;var _0x3416c7=Number(_0x518294[_0xc1af('0xd')]);var _0x250f93=_0x518294['data2']?Boolean(Number(_0x518294[_0xc1af('0xe')])):![];var _0x35c839;var _0x4dec13=![];if(!_[_0xc1af('0xf')](_0x518294[_0xc1af('0x10')])){if(_0x518294['data5']=='1')_0x4dec13=!![];}if(!_0x4dec13){if(_0x275811[_0xc1af('0x11')]){_0x9feb11['id']=_0x275811[_0xc1af('0x11')];}}if(!_0x9feb11['id']){_0x9feb11[_0xc1af('0x12')]=_0x3416c7;_0x35c839=_0x518294[_0xc1af('0x13')]&&_0x518294['data3']!=='0'?_0x518294[_0xc1af('0x13')]['split'](','):['phone'];_0x9feb11[_0xc1af('0x14')]=_['map'](_0x35c839,function(_0x245622){var _0x164c68={};_0x164c68[_0x245622]=_0x275811['routeId']?_0x275811[_0xc1af('0x15')]:_0x275811[_0xc1af('0x16')];return _0x164c68;});_0x2a1d08=_0x275811['routeId']?_0x275811[_0xc1af('0x15')]:_0x275811[_0xc1af('0x16')];}var _0x4a20ac=['id',_0xc1af('0x17'),_0xc1af('0x18'),_0xc1af('0x19'),_0xc1af('0x1a'),_0xc1af('0x1b'),_0xc1af('0x12'),_0xc1af('0x1c'),_0xc1af('0x1d'),_0xc1af('0x1e')];var _0x5a913a=_[_0xc1af('0x1f')](_0x4a20ac,_0x35c839);BPromise['resolve']()['then'](cmContactRpc[_0xc1af('0x20')]({'attributes':_0x5a913a,'where':_0x9feb11,'phone':_0x2a1d08}))['then'](function(_0x1caf8c){_0x311e0a=_0x1caf8c;if(!_[_0xc1af('0x21')](_0x311e0a)){if(_0x311e0a[_0xc1af('0x22')]===0x1){_0x3d198b=_0x311e0a[0x0];logger[_0xc1af('0x9')](_0xc1af('0x23'),_0x275811['uniqueid'],_0x595d9a['id'],_0x3d198b['id']);}else{logger[_0xc1af('0x9')](_0xc1af('0x24'),_0x275811[_0xc1af('0x25')],_0x595d9a['id'],_[_0xc1af('0x26')](_0x311e0a,'id')[_0xc1af('0x27')](','));}return;}else{logger[_0xc1af('0x9')](_0xc1af('0x28'),_0x275811[_0xc1af('0x25')],_0x595d9a['id']);var _0x542982={'ListId':_0x3416c7};var _0x574baf=_0x518294[_0xc1af('0x29')]&&_0x518294[_0xc1af('0x29')]!=='0'?_0x518294[_0xc1af('0x29')]:'phone';if(_0x250f93){logger[_0xc1af('0x9')]('[CM][%s][%s]\x20Autocreate\x20enabled',_0x275811[_0xc1af('0x25')],_0x595d9a['id']);_0x542982[_0x574baf]=_[_0xc1af('0xf')](_0x275811[_0xc1af('0x2a')])?_0x275811[_0xc1af('0x16')]:_0x275811['destcalleridnum'];if(_[_0xc1af('0xf')](_0x275811[_0xc1af('0x2a')])){_0x542982[_0xc1af('0x17')]=_0x275811[_0xc1af('0x2b')]&&_0x275811[_0xc1af('0x2b')]!==_0xc1af('0x2c')?_0x275811[_0xc1af('0x2b')]:_0xc1af('0x2d');}else{_0x542982['firstName']=_0x275811[_0xc1af('0x2e')]&&_0x275811[_0xc1af('0x2e')]!==_0xc1af('0x2c')?_0x275811[_0xc1af('0x2e')]:'Unknown';}return BPromise['resolve']()[_0xc1af('0x2f')](cmContactRpc[_0xc1af('0x30')](_0x542982))[_0xc1af('0x2f')](function(_0x2fc652){_0x3d198b=_0x2fc652;_0x311e0a['push'](_0x2fc652);if(_0x3d198b){logger[_0xc1af('0x9')](_0xc1af('0x31'),_0x275811[_0xc1af('0x25')],_0x595d9a['id'],_0x3d198b['id']);}return;});}else{logger[_0xc1af('0x9')]('[CM][%s][%s]\x20Autocreate\x20disabled',_0x275811['uniqueid'],_0x595d9a['id']);_0x542982[_0x574baf]=_['isNil'](_0x275811['routeId'])?_0x275811[_0xc1af('0x16')]:_0x275811['destcalleridnum'];if(_[_0xc1af('0xf')](_0x275811['routeId'])){_0x542982[_0xc1af('0x17')]=_0x275811['calleridname']&&_0x275811['calleridname']!=='<unknown>'?_0x275811[_0xc1af('0x2b')]:_0xc1af('0x2d');}else{_0x542982['firstName']=_0x275811[_0xc1af('0x2e')]&&_0x275811[_0xc1af('0x2e')]!==_0xc1af('0x2c')?_0x275811[_0xc1af('0x2e')]:_0xc1af('0x2d');}_0x3d198b=_0x542982;_0x311e0a[_0xc1af('0x32')](_0x542982);return;}}})['then'](function(){if(_0x308ee0){emit(_0x275811[_0xc1af('0x25')],_0x595d9a,util[_0xc1af('0x33')](_0xc1af('0x34'),_0x308ee0['name']),util['format'](_0xc1af('0x35'),_0x518294['action'][_0xc1af('0x36')]()),{'evt':_[_0xc1af('0x37')](_0x275811,{'autoCreate':_0x250f93}),'contact':_0x3d198b===undefined?{}:_0x3d198b,'contacts':_0x311e0a[_0xc1af('0x22')]===0x0?undefined:_0x311e0a});}});};
\ No newline at end of file
index 77623a2..09b1f14 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0xc0a4=['emit','info','clone','motionChannel','undefined','voice','checkTriggers','merge','Actions','length','interface','action','toLowerCase','contactmanager','motionbar','browser','data1','popup','data2','html','render','template\x20not\x20found','buildUri','data3','isNil','data4','location','windowWidth','800','data6','600','winApplication','winArguments','format','trigger:%s:%s','jscripty','user:%s','name','trigger:%s','exec','integration','queue','routeId','urlforward','script','parse','query','search','replace','checkTrigger','channel','every','AllConditions','checkConditions','AnyConditions','some','account','chat','operator','value','upperFirst','AccountId','interaction','message','event','agent','membername','lastevent','mailSubstatus','substatus','created','equals','exports','util','lodash','mustache','./urlforward','./integration','./cmContact','./script','../../../config/environment','../../../config/logger','trigger','../ami','redis','defaults','localhost','socket.io-emitter','url','winapp','triggers','agents','voiceQueues','templates','voiceExtensions','freshdeskAccounts','salesforceAccounts','sugarcrmAccounts','zohoAccounts','deskAccounts','vtigerAccounts','servicenowAccounts','dynamics365Accounts','freshsalesAccounts','accounts','custom:agentcalled','bind','syncCustomEvent','custom:agentringnoanswer','custom:agentcomplete','custom:agentnosuchnumber','custom:agentnoanswer','custom:agentbusy','custom:agentreject','custom:amd','custom:queuecallerabandon','custom:timeout','syncAgentDial','custom:dialend','custom:newinteraction','custom:closedinteraction','custom:substatus','custom:outgoingmessage','custom:acceptmessage','prototype'];(function(_0x4db46b,_0xadcb1a){var _0x565be8=function(_0x5d2e50){while(--_0x5d2e50){_0x4db46b['push'](_0x4db46b['shift']());}};_0x565be8(++_0xadcb1a);}(_0xc0a4,0xc6));var _0x4c0a=function(_0x5e6bf9,_0x24aabc){_0x5e6bf9=_0x5e6bf9-0x0;var _0x420cea=_0xc0a4[_0x5e6bf9];return _0x420cea;};'use strict';var util=require(_0x4c0a('0x0'));var _=require(_0x4c0a('0x1'));var url=require('url');var Mustache=require(_0x4c0a('0x2'));var Redis=require('ioredis');var urlforward=require(_0x4c0a('0x3'));var integration=require(_0x4c0a('0x4'));var cmContact=require(_0x4c0a('0x5'));var script=require(_0x4c0a('0x6'));var config=require(_0x4c0a('0x7'));var logger=require(_0x4c0a('0x8'))(_0x4c0a('0x9'));var ami=require(_0x4c0a('0xa'));config[_0x4c0a('0xb')]=_[_0x4c0a('0xc')](config['redis'],{'host':_0x4c0a('0xd'),'port':0x18eb});var io=require(_0x4c0a('0xe'))(new Redis(config['redis']));var operators={'equals':function(_0x551074,_0x103f41){return _0x551074==_0x103f41;},'not_equals':function(_0x493120,_0x46a65a){return _0x493120!=_0x46a65a;}};var barAndWebActions=['popup',_0x4c0a('0xf'),_0x4c0a('0x10')];function Trigger(_0x102e7f){this[_0x4c0a('0x11')]=_0x102e7f[_0x4c0a('0x11')];this[_0x4c0a('0x12')]=_0x102e7f[_0x4c0a('0x12')];this['voiceQueues']=_0x102e7f[_0x4c0a('0x13')];this[_0x4c0a('0x14')]=_0x102e7f['templates'];this[_0x4c0a('0x15')]=_0x102e7f['voiceExtensions'];this['zendeskAccounts']=_0x102e7f['zendeskAccounts'];this[_0x4c0a('0x16')]=_0x102e7f[_0x4c0a('0x16')];this[_0x4c0a('0x17')]=_0x102e7f[_0x4c0a('0x17')];this['sugarcrmAccounts']=_0x102e7f[_0x4c0a('0x18')];this[_0x4c0a('0x19')]=_0x102e7f['zohoAccounts'];this[_0x4c0a('0x1a')]=_0x102e7f['deskAccounts'];this[_0x4c0a('0x1b')]=_0x102e7f[_0x4c0a('0x1b')];this['servicenowAccounts']=_0x102e7f[_0x4c0a('0x1c')];this[_0x4c0a('0x1d')]=_0x102e7f['dynamics365Accounts'];this[_0x4c0a('0x1e')]=_0x102e7f[_0x4c0a('0x1e')];this[_0x4c0a('0x1f')]={'zendesk':this['zendeskAccounts'],'salesforce':this[_0x4c0a('0x17')],'freshdesk':this[_0x4c0a('0x16')],'sugarcrm':this[_0x4c0a('0x18')],'zoho':this[_0x4c0a('0x19')],'desk':this[_0x4c0a('0x1a')],'vtiger':this['vtigerAccounts'],'dynamics365':this[_0x4c0a('0x1d')],'freshsales':this[_0x4c0a('0x1e')],'servicenow':this['servicenowAccounts']};ami['on'](_0x4c0a('0x20'),this['syncCustomEvent'][_0x4c0a('0x21')](this));ami['on']('custom:agentconnect',this[_0x4c0a('0x22')][_0x4c0a('0x21')](this));ami['on'](_0x4c0a('0x23'),this['syncCustomEvent'][_0x4c0a('0x21')](this));ami['on'](_0x4c0a('0x24'),this[_0x4c0a('0x22')][_0x4c0a('0x21')](this));ami['on'](_0x4c0a('0x25'),this[_0x4c0a('0x22')][_0x4c0a('0x21')](this));ami['on'](_0x4c0a('0x26'),this[_0x4c0a('0x22')][_0x4c0a('0x21')](this));ami['on'](_0x4c0a('0x27'),this[_0x4c0a('0x22')][_0x4c0a('0x21')](this));ami['on']('custom:agentcongestion',this['syncCustomEvent'][_0x4c0a('0x21')](this));ami['on'](_0x4c0a('0x28'),this[_0x4c0a('0x22')][_0x4c0a('0x21')](this));ami['on'](_0x4c0a('0x29'),this[_0x4c0a('0x22')][_0x4c0a('0x21')](this));ami['on'](_0x4c0a('0x2a'),this['syncCustomEvent'][_0x4c0a('0x21')](this));ami['on'](_0x4c0a('0x2b'),this[_0x4c0a('0x22')]['bind'](this));ami['on']('custom:dialbegin',this['syncAgentDial'][_0x4c0a('0x21')](this));ami['on']('custom:dialconnect',this[_0x4c0a('0x2c')][_0x4c0a('0x21')](this));ami['on'](_0x4c0a('0x2d'),this[_0x4c0a('0x2c')][_0x4c0a('0x21')](this));ami['on'](_0x4c0a('0x2e'),this['syncCustomEvent'][_0x4c0a('0x21')](this));ami['on'](_0x4c0a('0x2f'),this[_0x4c0a('0x22')]['bind'](this));ami['on'](_0x4c0a('0x30'),this['syncCustomEvent'][_0x4c0a('0x21')](this));ami['on']('custom:incomingmessage',this[_0x4c0a('0x22')][_0x4c0a('0x21')](this));ami['on'](_0x4c0a('0x31'),this['syncCustomEvent'][_0x4c0a('0x21')](this));ami['on'](_0x4c0a('0x32'),this['syncCustomEvent'][_0x4c0a('0x21')](this));ami['on']('custom:rejectmessage',this['syncCustomEvent'][_0x4c0a('0x21')](this));ami['on']('custom:offlineMessage',this[_0x4c0a('0x22')][_0x4c0a('0x21')](this));}Trigger[_0x4c0a('0x33')][_0x4c0a('0x34')]=function(_0x1a83ff,_0x41e76c,_0x4dc053){logger[_0x4c0a('0x35')](_0x1a83ff,_0x41e76c,JSON['stringify'](_0x4dc053));io['to'](_0x1a83ff)[_0x4c0a('0x34')](_0x41e76c,_0x4dc053);};Trigger['prototype']['syncCustomEvent']=function(_0x313776){var _0x3d24c0=_[_0x4c0a('0x36')](_0x313776);if(typeof _0x3d24c0[_0x4c0a('0x37')]===_0x4c0a('0x38')){_0x3d24c0[_0x4c0a('0x37')]=_0x4c0a('0x39');}this[_0x4c0a('0x3a')](_0x3d24c0);};Trigger[_0x4c0a('0x33')][_0x4c0a('0x2c')]=function(_0xfdcb84){if(this[_0x4c0a('0x12')][_0xfdcb84['interface']]){this[_0x4c0a('0x22')](_0xfdcb84);}};Trigger['prototype'][_0x4c0a('0x3a')]=function(_0x514343){var _0x45ead2;for(var _0x2ae5df in this[_0x4c0a('0x11')]){if(this[_0x4c0a('0x11')]['hasOwnProperty'](_0x2ae5df)){if(this[_0x4c0a('0x11')][_0x2ae5df]['status']){_0x45ead2=this['checkTrigger'](this[_0x4c0a('0x11')][_0x2ae5df],_0x514343);if(_0x45ead2){_[_0x4c0a('0x3b')](_0x514343,_0x514343['variables']);for(var _0x16d064=0x0,_0x17a8f7,_0x5e4338,_0x4cbd76;_0x16d064<this['triggers'][_0x2ae5df][_0x4c0a('0x3c')][_0x4c0a('0x3d')];_0x16d064+=0x1){_0x17a8f7=this[_0x4c0a('0x11')][_0x2ae5df][_0x4c0a('0x3c')][_0x16d064];if(this[_0x4c0a('0x12')][_0x514343[_0x4c0a('0x3e')]]){switch(_0x17a8f7[_0x4c0a('0x3f')][_0x4c0a('0x40')]()){case _0x4c0a('0x41'):break;case _0x4c0a('0x42'):case _0x4c0a('0x43'):var _0x44ccc3={};switch(barAndWebActions[_0x17a8f7[_0x4c0a('0x44')]]){case _0x4c0a('0x45'):_0x44ccc3['TemplateId']=_0x17a8f7[_0x4c0a('0x46')];_0x44ccc3[_0x4c0a('0x47')]=this[_0x4c0a('0x14')][_0x17a8f7['data2']]?Mustache[_0x4c0a('0x48')](this[_0x4c0a('0x14')][_0x17a8f7[_0x4c0a('0x46')]][_0x4c0a('0x47')],_0x514343):_0x4c0a('0x49');break;case'url':_0x44ccc3['uri']=this[_0x4c0a('0x4a')](_0x17a8f7[_0x4c0a('0x46')],_0x514343,_['isNil'](_0x17a8f7['data3'])?!![]:parseInt(_0x17a8f7[_0x4c0a('0x4b')],0xa));if(_[_0x4c0a('0x4c')](_0x17a8f7[_0x4c0a('0x4d')])){_0x44ccc3[_0x4c0a('0x4e')]='0';}else{_0x44ccc3['uriLocation']=_0x17a8f7[_0x4c0a('0x4d')];_0x44ccc3[_0x4c0a('0x4f')]=_[_0x4c0a('0x4c')](_0x17a8f7['data5'])?_0x4c0a('0x50'):_0x17a8f7['data5'];_0x44ccc3['windowHeight']=_['isNil'](_0x17a8f7[_0x4c0a('0x51')])?_0x4c0a('0x52'):_0x17a8f7[_0x4c0a('0x51')];}break;case'winapp':_0x44ccc3[_0x4c0a('0x53')]=_0x17a8f7[_0x4c0a('0x46')]?Mustache[_0x4c0a('0x48')](_0x17a8f7[_0x4c0a('0x46')],_0x514343):'';_0x44ccc3[_0x4c0a('0x54')]=_0x17a8f7[_0x4c0a('0x4b')]?Mustache['render'](_0x17a8f7[_0x4c0a('0x4b')],_0x514343):'';break;}this[_0x4c0a('0x34')](util[_0x4c0a('0x55')]('user:%s',this[_0x4c0a('0x12')][_0x514343[_0x4c0a('0x3e')]]['name']),util[_0x4c0a('0x55')](_0x4c0a('0x56'),_0x17a8f7[_0x4c0a('0x3f')][_0x4c0a('0x40')](),barAndWebActions[_0x17a8f7['data1']]),_[_0x4c0a('0x3b')](_0x44ccc3,_0x514343));break;case _0x4c0a('0x57'):this[_0x4c0a('0x34')](util[_0x4c0a('0x55')](_0x4c0a('0x58'),this[_0x4c0a('0x12')][_0x514343[_0x4c0a('0x3e')]][_0x4c0a('0x59')]),util[_0x4c0a('0x55')](_0x4c0a('0x5a'),_0x17a8f7['action'][_0x4c0a('0x40')]()),_[_0x4c0a('0x3b')]({'ProjectId':parseInt(_0x17a8f7[_0x4c0a('0x44')],0xa)},_0x514343));break;default:this[_0x4c0a('0x34')](util[_0x4c0a('0x55')]('user:%s',this['agents'][_0x514343[_0x4c0a('0x3e')]][_0x4c0a('0x59')]),util[_0x4c0a('0x55')](_0x4c0a('0x5a'),_0x17a8f7[_0x4c0a('0x3f')][_0x4c0a('0x40')]()),_[_0x4c0a('0x3b')]({},_0x17a8f7,_0x514343));}}switch(_0x17a8f7[_0x4c0a('0x3f')]['toLowerCase']()){case _0x4c0a('0x41'):cmContact[_0x4c0a('0x5b')](this['agents'][_0x514343['interface']],this[_0x4c0a('0x11')][_0x2ae5df],_0x17a8f7,_0x514343);break;case _0x4c0a('0x5c'):integration[_0x4c0a('0x5b')](_0x17a8f7,_0x514343,this[_0x4c0a('0x1f')],this[_0x4c0a('0x12')][_0x514343[_0x4c0a('0x3e')]],this[_0x4c0a('0x13')][_0x514343[_0x4c0a('0x5d')]],this[_0x4c0a('0x15')][_0x514343[_0x4c0a('0x5e')]]);break;case _0x4c0a('0x5f'):urlforward[_0x4c0a('0x5b')](_0x17a8f7,_0x514343);break;case _0x4c0a('0x60'):script[_0x4c0a('0x5b')](_0x17a8f7,_0x514343);break;}}}}}}};Trigger['prototype'][_0x4c0a('0x4a')]=function(_0x47b4a0,_0x59017a,_0x482c5d){var _0x102519=url[_0x4c0a('0x61')](Mustache['render'](_0x47b4a0,_0x59017a),!![]);if(_0x482c5d){_['merge'](_0x102519[_0x4c0a('0x62')],_0x59017a);}delete _0x102519[_0x4c0a('0x63')];var _0xafe5e0=url['format'](_0x102519);_0xafe5e0=_0xafe5e0[_0x4c0a('0x64')](/\/\?/g,'?');return _0xafe5e0;};Trigger[_0x4c0a('0x33')][_0x4c0a('0x65')]=function(_0x213b1e,_0x15e87e){var _0x12b9ab=!![];var _0x384ed4=!![];var _0xe9d19f=![];if(_0x213b1e[_0x4c0a('0x66')]===_0x15e87e[_0x4c0a('0x37')]){_0xe9d19f=!![];}if(_0x213b1e['AllConditions'][_0x4c0a('0x3d')]){_0x12b9ab=_[_0x4c0a('0x67')](_0x213b1e[_0x4c0a('0x68')],this[_0x4c0a('0x69')](_0x15e87e,_0x213b1e[_0x4c0a('0x66')]));}if(_0x213b1e[_0x4c0a('0x6a')]['length']){_0x384ed4=_[_0x4c0a('0x6b')](_0x213b1e[_0x4c0a('0x6a')],this[_0x4c0a('0x69')](_0x15e87e,_0x213b1e['channel']));}return _0xe9d19f&&_0x12b9ab&&_0x384ed4;};Trigger[_0x4c0a('0x33')]['checkConditions']=function(_0x5344bd,_0x566229){return function(_0x54b81c){switch(_0x54b81c['field']){case _0x4c0a('0x6c'):if(_0x5344bd['channel']===_0x566229){if(_0x566229===_0x4c0a('0x6d')){return _0x5344bd['ChatWebsiteId']?operators[_0x54b81c[_0x4c0a('0x6e')]](Number(_0x54b81c[_0x4c0a('0x6f')]),_0x5344bd['ChatWebsiteId']):![];}else{return _0x5344bd[_[_0x4c0a('0x70')](_0x566229)+_0x4c0a('0x71')]?operators[_0x54b81c[_0x4c0a('0x6e')]](Number(_0x54b81c[_0x4c0a('0x6f')]),_0x5344bd[_[_0x4c0a('0x70')](_0x566229)+'AccountId']):![];}}break;case _0x4c0a('0x72'):case _0x4c0a('0x73'):if(_0x5344bd[_0x4c0a('0x66')]===_0x566229){return _0x5344bd[_0x4c0a('0x74')]?operators[_0x54b81c[_0x4c0a('0x6e')]](_0x54b81c[_0x4c0a('0x6f')],_0x5344bd['event']):![];}break;case _0x4c0a('0x5d'):return _0x5344bd[_0x4c0a('0x5d')]?operators[_0x54b81c['operator']](_0x54b81c[_0x4c0a('0x6f')],_0x5344bd[_0x4c0a('0x5d')]):![];case _0x4c0a('0x75'):return _0x5344bd[_0x4c0a('0x76')]?operators[_0x54b81c[_0x4c0a('0x6e')]](_0x54b81c[_0x4c0a('0x6f')],_0x5344bd['membername']):![];case _0x4c0a('0x77'):return _0x5344bd[_0x4c0a('0x77')]?operators[_0x54b81c[_0x4c0a('0x6e')]](_0x54b81c['value'],_0x5344bd[_0x4c0a('0x77')]):![];case _0x4c0a('0x5e'):return _0x5344bd[_0x4c0a('0x5e')]?operators[_0x54b81c[_0x4c0a('0x6e')]](_0x54b81c['value'],_0x5344bd['routeId']):![];case _0x4c0a('0x78'):if(_0x54b81c[_0x4c0a('0x6f')]==='null')_0x54b81c[_0x4c0a('0x6f')]=null;return typeof _0x5344bd[_0x4c0a('0x79')]!==_0x4c0a('0x38')?operators[_0x54b81c[_0x4c0a('0x6e')]](_0x54b81c[_0x4c0a('0x6f')],_0x5344bd[_0x4c0a('0x79')]):![];case'offlineMessage':if(_0x5344bd[_0x4c0a('0x66')]===_0x566229){return _0x54b81c['value']===_0x4c0a('0x7a')&&_0x54b81c[_0x4c0a('0x6e')]===_0x4c0a('0x7b')?!![]:![];}break;}return![];};};module[_0x4c0a('0x7c')]=Trigger;
\ No newline at end of file
index 67e1b5c..f8d10be 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+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(_0x46001f,_0x36d110){var _0x32c412=function(_0x254623){while(--_0x254623){_0x46001f['push'](_0x46001f['shift']());}};_0x32c412(++_0x36d110);}(_0x814b,0x1a2));var _0xb814=function(_0x324e86,_0x81b1cb){_0x324e86=_0x324e86-0x0;var _0x592846=_0x814b[_0x324e86];return _0x592846;};'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
index f712429..3b5c9ca 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0x0d08=['clientSecret','catch','error','toUpperCase',']\x20Wrong\x20credentials!','message','then','GET','Bearer\x20','4.0','value','isNil','validateEmail','email','userEmail','length','isdisabled','info','systemuserid','userId',']\x20Agent\x20not\x20found,\x20using\x20the\x20admin\x20account!','username','internalemailaddress','toLowerCase','outbound','destcalleridnum','calleridnum','/systemusers(','body','headers','odata-entityid','substring','lastIndexOf','enduserId','telephone1','contacts?$select=','&$filter=','\x20eq\x20\x27','replace','%2b','contactid','nothing',']\x20Enduser\x20created!','forEach','includes','string','picklist','type','nameField','idField','indexOf','content','ticketType','incident','incidents','getString','Descriptions','/contacts(','Fields','phonecall','queue','callDirection','phonecalls','assign','Subjects','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/','%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s','uniqueid','monitor_format','[QUEUE]','Recording\x20is\x20enabled!','recordingFormat','none','[OUTBOUND]','recordingURL',']\x20The\x20User\x20ID\x20is:','moduleCreate','additionalSearchContact',']\x20The\x20Enduser\x20ID\x20is:',']\x20The\x20Enduser\x20phone\x20is:','openNewTab','Displaying\x20call\x20in\x20a\x20new\x20tab...','name',']\x20Error\x20running\x20Dynamics365\x20integration','Error\x20running\x20Dynamics365\x20integration','lodash','request-promise','./util','md5','ioredis','../../../../config/environment','redis','localhost','socket.io-emitter','modernAuthentication','CloudProvider','data7','data2','resolve','data5','POST','clientId','password'];(function(_0x455150,_0x274121){var _0x12ca9c=function(_0x47eb22){while(--_0x47eb22){_0x455150['push'](_0x455150['shift']());}};_0x12ca9c(++_0x274121);}(_0x0d08,0x1b2));var _0x80d0=function(_0x4a9fb1,_0x273043){_0x4a9fb1=_0x4a9fb1-0x0;var _0x348672=_0x0d08[_0x4a9fb1];return _0x348672;};'use strict';var _=require(_0x80d0('0x0'));var rp=require(_0x80d0('0x1'));var util=require('util');var intUtil=require(_0x80d0('0x2'));var md5=require(_0x80d0('0x3'));var Redis=require(_0x80d0('0x4'));var logger=require('../../../../config/logger')('dynamics365');var config=require(_0x80d0('0x5'));config[_0x80d0('0x6')]=_['defaults'](config['redis'],{'host':_0x80d0('0x7'),'port':0x18eb});var io=require(_0x80d0('0x8'))(new Redis(config[_0x80d0('0x6')]));function getAuthToken(_0x257174,_0x4a4e08,_0x1f9c30){if(_0x257174[_0x80d0('0x9')]){_0x257174['remoteUri']=_0x257174[_0x80d0('0xa')][_0x80d0('0xb')];_0x257174['tenantId']=_0x257174[_0x80d0('0xa')][_0x80d0('0xc')];return Promise[_0x80d0('0xd')](_0x257174['CloudProvider'][_0x80d0('0xe')]);}var _0x4b556a={'method':_0x80d0('0xf'),'uri':_0x4a4e08,'form':{'client_id':_0x257174[_0x80d0('0x10')],'resource':_0x257174['remoteUri'],'username':_0x257174['username'],'password':_0x257174[_0x80d0('0x11')],'grant_type':_0x80d0('0x11'),'client_secret':_0x257174[_0x80d0('0x12')]},'json':!![]};return rp(_0x4b556a)['then'](function(_0x211262){return _0x211262['access_token'];})[_0x80d0('0x13')](function(_0x3ad8d9){logger[_0x80d0('0x14')]('['+[_0x1f9c30[_0x80d0('0x15')]()]+_0x80d0('0x16'));return _0x3ad8d9[_0x80d0('0x17')];});}function getUser(_0x23b1e6,_0x33e2e1,_0x52a08d,_0x354f59,_0x2a72e6,_0x14b90b){return new Promise(function(_0x229782,_0x3fffc9){return getAuthToken(_0x33e2e1,_0x354f59,_0x14b90b)[_0x80d0('0x18')](function(_0x834c98){var _0x438a8e={'method':_0x80d0('0x19'),'uri':_0x2a72e6+'systemusers?$select=internalemailaddress,isdisabled,systemuserid','headers':{'Authorization':_0x80d0('0x1a')+_0x834c98,'OData-Version':_0x80d0('0x1b')},'json':!![]};return rp(_0x438a8e);})['then'](function(_0x5c70c2){var _0x416e1f=_0x5c70c2[_0x80d0('0x1c')];var _0x3ed222=![];var _0x3ea2d4=null;if(!_[_0x80d0('0x1d')](_0x52a08d)){if(intUtil[_0x80d0('0x1e')](_0x52a08d[_0x80d0('0x1f')])){_0x23b1e6[_0x80d0('0x20')]=_0x52a08d[_0x80d0('0x1f')];for(_0x3ea2d4=0x0;_0x3ea2d4<_0x416e1f[_0x80d0('0x21')];_0x3ea2d4++){if(_0x416e1f[_0x3ea2d4]['internalemailaddress']===_0x52a08d['email']&&!_0x416e1f[_0x3ea2d4][_0x80d0('0x22')]){_0x3ed222=!![];logger[_0x80d0('0x23')]('['+[_0x14b90b[_0x80d0('0x15')]()]+']\x20Agent\x20found\x20'+_0x416e1f[_0x3ea2d4][_0x80d0('0x24')]+'!');_0x23b1e6[_0x80d0('0x25')]=_0x416e1f[_0x3ea2d4][_0x80d0('0x24')];}}}}if(!_0x3ed222){logger[_0x80d0('0x23')]('['+[_0x14b90b[_0x80d0('0x15')]()]+_0x80d0('0x26'));_0x23b1e6[_0x80d0('0x20')]=_0x33e2e1[_0x80d0('0x27')];for(_0x3ea2d4=0x0;_0x3ea2d4<_0x416e1f[_0x80d0('0x21')];_0x3ea2d4++){if(_0x416e1f[_0x3ea2d4][_0x80d0('0x28')]===_0x33e2e1[_0x80d0('0x27')]){_0x23b1e6[_0x80d0('0x25')]=_0x416e1f[_0x3ea2d4][_0x80d0('0x24')];}}}_0x229782(_0x23b1e6);})[_0x80d0('0x13')](function(_0x35a578){_0x3fffc9(_0x35a578[_0x80d0('0x17')]);});});}function createEndUser(_0x72dd1e,_0x4353c4,_0x4fa431,_0x537d21,_0x1201af,_0x39c4fe,_0x138f91){return new Promise(function(_0xea5201,_0x1ea70c){return getAuthToken(_0x4353c4,_0x4fa431,_0x39c4fe)[_0x80d0('0x18')](function(_0x30cebe){var _0x4749f0=_0x39c4fe[_0x80d0('0x29')]()===_0x80d0('0x2a')?_0x1201af[_0x80d0('0x2b')]:_0x1201af[_0x80d0('0x2c')];var _0xe9352c={'method':_0x80d0('0xf'),'uri':_0x537d21+'contacts','body':{'fullname':_0x4749f0,'firstname':_0x4749f0,'lastname':'_','mobilephone':null,'address1_telephone1':null,'ownerid@odata.bind':_0x80d0('0x2d')+_0x72dd1e['userId']+')'},'headers':{'Authorization':_0x80d0('0x1a')+_0x30cebe,'OData-Version':'4.0'},'json':!![],'resolveWithFullResponse':!![]};_0xe9352c[_0x80d0('0x2e')][_0x138f91]=_0x4749f0;return rp(_0xe9352c);})[_0x80d0('0x18')](function(_0x2249a6){var _0x33b1dc=_0x2249a6[_0x80d0('0x2f')][_0x80d0('0x30')];var _0xd636f4=_0x33b1dc[_0x80d0('0x31')](_0x33b1dc[_0x80d0('0x32')]('(')+0x1,_0x33b1dc['lastIndexOf'](')'));_0x72dd1e[_0x80d0('0x33')]=_0xd636f4;_0xea5201(_0x72dd1e);})[_0x80d0('0x13')](function(_0x104e3f){_0x1ea70c(_0x104e3f[_0x80d0('0x17')]);});});}function getEndUser(_0x372af7,_0x2b7f1f,_0x2ecbb9,_0x522cc0,_0x211086,_0x439403,_0x538af6,_0x5df54f){var _0x350b11=_0x439403['toLowerCase']()==='outbound'?_0x211086[_0x80d0('0x2b')]:_0x211086[_0x80d0('0x2c')];return getAuthToken(_0x2b7f1f,_0x2ecbb9,_0x439403)[_0x80d0('0x18')](function(_0x487363){_0x5df54f=_0x5df54f?_0x5df54f:_0x80d0('0x34');var _0x3750ff={'method':_0x80d0('0x19'),'uri':_0x522cc0+_0x80d0('0x35')+_0x5df54f+_0x80d0('0x36')+_0x5df54f+_0x80d0('0x37')+_0x350b11[_0x80d0('0x38')]('+',_0x80d0('0x39'))+'\x27','headers':{'Authorization':_0x80d0('0x1a')+_0x487363,'If-None-Match':null,'OData-Version':_0x80d0('0x1b')},'json':!![]};return rp(_0x3750ff);})[_0x80d0('0x18')](function(_0x28ed89){var _0x3e4737=![];if(!_0x28ed89)return _0x3e4737;var _0x538253=_0x28ed89[_0x80d0('0x1c')];for(var _0x19dd2b=0x0;_0x19dd2b<_0x538253[_0x80d0('0x21')];_0x19dd2b++){if(_0x538253[_0x19dd2b][_0x5df54f]===_0x350b11){_0x3e4737=!![];_0x372af7['enduserId']=_0x538253[_0x19dd2b][_0x80d0('0x3a')];}}return _0x3e4737;})['then'](function(_0x4b821a){if(_0x4b821a)return _0x372af7;if(_0x538af6===_0x80d0('0x3b')){logger[_0x80d0('0x23')]('['+[_0x439403[_0x80d0('0x15')]()]+']\x20Enduser\x20NOT\x20Created\x20-\x20ModuleCreate\x20=\x20Nothing');return _0x372af7;}return createEndUser(_0x372af7,_0x2b7f1f,_0x2ecbb9,_0x522cc0,_0x211086,_0x439403,_0x5df54f)[_0x80d0('0x18')](function(_0x28ec27){logger[_0x80d0('0x23')]('['+[_0x439403[_0x80d0('0x15')]()]+_0x80d0('0x3c'),_0x28ec27['enduserId']);return _0x28ec27;});});}function getCustomFields(_0x538a31,_0x3b8385,_0x27a0ac){var _0x3cb9ed={};if(_0x538a31[_0x80d0('0x21')]>0x0){_[_0x80d0('0x3d')](_0x538a31,function(_0x3ec761){if(_[_0x80d0('0x3e')]([_0x80d0('0x3f'),_0x80d0('0x40')],_0x3ec761[_0x80d0('0x41')])&&_0x3ec761[_0x80d0('0x42')]&&!_0x3ec761['customField']){var _0x43a0fa=_0x3ec761[_0x80d0('0x43')]['toLowerCase']();var _0x3105b7=_0x43a0fa[_0x80d0('0x31')](0x0,_0x43a0fa['indexOf']('_'));var _0x32f059=_0x43a0fa[_0x80d0('0x31')](_0x43a0fa[_0x80d0('0x44')]('_')+0x1);if(_0x3105b7===_0x27a0ac){_0x3cb9ed[_0x32f059]=_0x3ec761[_0x80d0('0x45')];}}});}return _0x3cb9ed;}function getTicket(_0xbc40cf,_0xdf9960,_0x5b28e6,_0x5a37a9,_0x391f4e,_0x400516,_0x4c312c){return new Promise(function(_0x5f4ad6,_0x42f80c){var _0x431fd2;return getAuthToken(_0xdf9960,_0x5b28e6,_0x4c312c)[_0x80d0('0x18')](function(_0x32a502){if(_0x400516[_0x80d0('0x46')]===_0x80d0('0x47')){_0x431fd2={'method':_0x80d0('0xf'),'uri':_0x5a37a9+_0x80d0('0x48'),'body':Object['assign']({},{'title':intUtil[_0x80d0('0x49')](_0x400516['Subjects'],_0x391f4e,'\x20'),'description':intUtil['getString'](_0x400516[_0x80d0('0x4a')],_0x391f4e,'\x0a'),'customerid_contact@odata.bind':_0xbc40cf[_0x80d0('0x33')]?_0x80d0('0x4b')+_0xbc40cf['enduserId']+')':undefined,'ownerid@odata.bind':'/systemusers('+_0xbc40cf['userId']+')','caseorigincode':'1'},getCustomFields(_0x400516[_0x80d0('0x4c')],_0x391f4e,_0x400516[_0x80d0('0x46')])),'headers':{'Authorization':'Bearer\x20'+_0x32a502,'OData-Version':_0x80d0('0x1b')},'json':!![],'resolveWithFullResponse':!![]};}if(_0x400516[_0x80d0('0x46')]===_0x80d0('0x4d')){var _0x4b43a8=_0xbc40cf[_0x80d0('0x33')]?[{'partyid_systemuser@odata.bind':'/systemusers('+_0xbc40cf['userId']+')','participationtypemask':_0xbc40cf['callDirection']===_0x80d0('0x4e')?0x2:0x1},{'partyid_contact@odata.bind':_0x80d0('0x4b')+_0xbc40cf[_0x80d0('0x33')]+')','participationtypemask':_0xbc40cf[_0x80d0('0x4f')]===_0x80d0('0x4e')?0x1:0x2}]:[{'partyid_systemuser@odata.bind':_0x80d0('0x2d')+_0xbc40cf['userId']+')','participationtypemask':_0xbc40cf[_0x80d0('0x4f')]==='queue'?0x2:0x1}];_0x431fd2={'method':_0x80d0('0xf'),'uri':_0x5a37a9+_0x80d0('0x50'),'body':Object[_0x80d0('0x51')]({},{'subject':intUtil[_0x80d0('0x49')](_0x400516[_0x80d0('0x52')],_0x391f4e,'\x20'),'phonenumber':String(_0x391f4e[_0x80d0('0x2c')]),'description':intUtil[_0x80d0('0x49')](_0x400516[_0x80d0('0x4a')],_0x391f4e,'\x0a'),'regardingobjectid_contact@odata.bind':_0xbc40cf['enduserId']?_0x80d0('0x4b')+_0xbc40cf[_0x80d0('0x33')]+')':undefined,'ownerid@odata.bind':_0x80d0('0x2d')+_0xbc40cf[_0x80d0('0x25')]+')','directioncode':_0xbc40cf[_0x80d0('0x4f')]===_0x80d0('0x4e')?![]:!![],'phonecall_activity_parties':_0x4b43a8},getCustomFields(_0x400516[_0x80d0('0x4c')],_0x391f4e,_0x400516[_0x80d0('0x46')])),'headers':{'Authorization':_0x80d0('0x1a')+_0x32a502,'OData-Version':'4.0'},'json':!![],'resolveWithFullResponse':!![]};}return rp(_0x431fd2);})['then'](function(_0x36d0bf){var _0x155131=_0x36d0bf[_0x80d0('0x2f')][_0x80d0('0x30')];var _0x59df53=_0x155131[_0x80d0('0x31')](_0x155131[_0x80d0('0x32')]('(')+0x1,_0x155131[_0x80d0('0x32')](')'));_0xbc40cf[_0x80d0('0x53')]=_0x59df53;_0x5f4ad6(_0xbc40cf);})['catch'](function(_0x36b92e){_0x42f80c(_0x36b92e[_0x80d0('0x17')]);});});}function emit(_0x2cc124,_0x2664b1,_0xc0717a,_0x5c02f8){var _0x2c8eeb={'uri':util[_0x80d0('0x54')](_0x80d0('0x55'),_0x2cc124,_0xc0717a,_0x5c02f8)};io['to'](util[_0x80d0('0x54')](_0x80d0('0x56'),_0x2664b1))[_0x80d0('0x57')](_0x80d0('0x58'),_0x2c8eeb);}exports['cs']=function(_0x491908,_0x355156,_0x1ad02a,_0x443438,_0x28ecd9,_0x53f99b,_0x1fd8e4,_0x314675){var _0x42ce1f={};_0x53f99b[_0x80d0('0x59')]=_0x53f99b[_0x80d0('0x9')]?intUtil[_0x80d0('0x5a')](_0x53f99b[_0x80d0('0xa')][_0x80d0('0xb')]):intUtil[_0x80d0('0x5a')](_0x53f99b[_0x80d0('0x59')]);_0x53f99b[_0x80d0('0x5b')]=intUtil[_0x80d0('0x5a')](_0x53f99b[_0x80d0('0x5b')]);_0x42ce1f[_0x80d0('0x4f')]=_0x314675===_0x80d0('0x4e')||_0x314675===_0x80d0('0x5c')?'queue':_0x80d0('0x2a');var _0x2ea23d=_0x53f99b[_0x80d0('0x9')]?util[_0x80d0('0x54')](_0x80d0('0x5d'),_0x53f99b[_0x80d0('0xa')][_0x80d0('0xb')]):util[_0x80d0('0x54')](_0x80d0('0x5d'),_0x53f99b[_0x80d0('0x59')]);var _0x3492fc=util[_0x80d0('0x54')]('https://login.microsoftonline.com/%s/oauth2/token',_0x53f99b['tenantId']);var _0x276849=util[_0x80d0('0x54')](_0x80d0('0x5e'),_0x53f99b[_0x80d0('0x5b')],_0x355156['uniqueid'],md5(_0x355156[_0x80d0('0x5f')]));if(_0x28ecd9&&_0x28ecd9[_0x80d0('0x60')]){logger['info'](_0x80d0('0x61'),_0x80d0('0x62'));_0x355156['recordingURL']=_0x276849;}else if(_0x1fd8e4&&_0x1fd8e4[_0x80d0('0x63')]&&_0x1fd8e4[_0x80d0('0x63')]!==_0x80d0('0x64')){logger[_0x80d0('0x23')](_0x80d0('0x65'),_0x80d0('0x62'));_0x355156[_0x80d0('0x66')]=_0x276849;}else{_0x355156[_0x80d0('0x66')]='';}return getUser(_0x42ce1f,_0x53f99b,_0x443438,_0x3492fc,_0x2ea23d,_0x314675)[_0x80d0('0x18')](function(_0x3ba1b0){logger['info']('['+_0x314675[_0x80d0('0x15')]()+_0x80d0('0x67'),_0x3ba1b0[_0x80d0('0x25')]);logger[_0x80d0('0x23')]('['+_0x314675[_0x80d0('0x15')]()+']\x20The\x20User\x20email\x20is:',_0x3ba1b0[_0x80d0('0x20')]);return getEndUser(_0x3ba1b0,_0x53f99b,_0x3492fc,_0x2ea23d,_0x355156,_0x314675,_0x1ad02a[_0x80d0('0x68')],_0x1ad02a[_0x80d0('0x69')]);})[_0x80d0('0x18')](function(_0x42a123){logger[_0x80d0('0x23')]('['+_0x314675[_0x80d0('0x15')]()+_0x80d0('0x6a'),_0x42a123[_0x80d0('0x33')]);logger['info']('['+_0x314675['toUpperCase']()+_0x80d0('0x6b'),_0x355156['calleridnum']);return getTicket(_0x42a123,_0x53f99b,_0x3492fc,_0x2ea23d,_0x355156,_0x1ad02a,_0x314675);})[_0x80d0('0x18')](function(_0xbaf826){logger['info'](util[_0x80d0('0x54')]('['+_0x314675[_0x80d0('0x15')]()+']\x20The\x20%s\x20ID\x20is:\x20%s',_0x1ad02a[_0x80d0('0x46')],_0xbaf826[_0x80d0('0x53')]));logger[_0x80d0('0x23')](util['format']('['+_0x314675[_0x80d0('0x15')]()+']\x20Call\x20direction:\x20%s',_0x314675));if(_0x314675!==_0x80d0('0x5c')&&_0x1ad02a[_0x80d0('0x6c')]){logger[_0x80d0('0x23')]('['+_0x314675[_0x80d0('0x15')]()+']',_0x80d0('0x6d'));emit(_0x53f99b[_0x80d0('0x59')],_0x443438[_0x80d0('0x6e')],_0x1ad02a[_0x80d0('0x46')],_0xbaf826[_0x80d0('0x53')]);}})[_0x80d0('0x13')](function(_0x5e887c){logger['error']('['+_0x314675[_0x80d0('0x15')]()+_0x80d0('0x6f'),_0x5e887c[_0x80d0('0x17')]);console[_0x80d0('0x14')](_0x80d0('0x70'),_0x5e887c);});};
\ No newline at end of file
index 916ae31..d4e514a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0xe590=['defaults','localhost','socket.io-emitter','application/json','emit','info','merge','Caller\x20-\x20%s','calleridname','calleridnum','getString','Subjects','<br>','Tags','Fields','mapValues','keyBy','value','format','%s/api/v2/tickets','POST','then','Ticket\x20created!','validateEmail','%s/api/v2/agents','length','Agent\x20found!','find','contact','email','Agent\x20not\x20found,\x20using\x20the\x20admin\x20account!','%s/api/v2/agents/me','remoteUri','Invalid\x20email\x20format,\x20using\x20the\x20admin\x20account!','Enduser\x20found!','%s/api/v2/contacts','Enduser\x20created.','Basic\x20%s','apiKey','toString','debug','stringify','GET','map','forEach','includes','string','picklist','type','customField','nameField','toLowerCase','content','idField','custom_fields','variable','variableName','push','Variable','name','queue','stripTrailingSlash','serverUrl','monitor_format','[QUEUE]','%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s','uniqueid','recordingURL','The\x20User\x20ID\x20is:','The\x20Enduser\x20ID\x20is:','Displaying\x20ticket\x20to\x20agent\x20in\x20a\x20new\x20tab...','user:%s','%s/helpdesk/tickets/%d','error','recordingFormat','none','[OUTBOUND]','Recording\x20is\x20enabled!','Authorization','destcalleridnum','trigger:browser:url','catch','toUpperCase','The\x20Ticket\x20ID\x20is:','lastevent','lodash','request-promise','md5','ioredis','../../../../config/environment','redis'];(function(_0x10abe2,_0x16994d){var _0x4e228a=function(_0x2cfaaf){while(--_0x2cfaaf){_0x10abe2['push'](_0x10abe2['shift']());}};_0x4e228a(++_0x16994d);}(_0xe590,0x10b));var _0x0e59=function(_0x211f87,_0x2ab46a){_0x211f87=_0x211f87-0x0;var _0x4d4206=_0xe590[_0x211f87];return _0x4d4206;};'use strict';var _=require(_0x0e59('0x0'));var rp=require(_0x0e59('0x1'));var md5=require(_0x0e59('0x2'));var util=require('util');var Redis=require(_0x0e59('0x3'));var intUtil=require('./util');var config=require(_0x0e59('0x4'));var logger=require('../../../../config/logger')('freshdesk');config[_0x0e59('0x5')]=_[_0x0e59('0x6')](config[_0x0e59('0x5')],{'host':_0x0e59('0x7'),'port':0x18eb});var io=require(_0x0e59('0x8'))(new Redis(config[_0x0e59('0x5')]));var headers={'Content-Type':_0x0e59('0x9'),'Accept':_0x0e59('0x9')};function emit(_0x14273e,_0x1d4958,_0x5aa75e){io['to'](_0x14273e)[_0x0e59('0xa')](_0x1d4958,_0x5aa75e);}function getTicket(_0x75f83e,_0x581637,_0x4dae1f,_0x54ec97,_0x8531a){logger[_0x0e59('0xb')]('Creating\x20new\x20ticket...');var _0x58df23=_[_0x0e59('0xc')]({'responder_id':_0x581637['id'],'requester_id':_0x4dae1f['id'],'name':util['format'](_0x0e59('0xd'),_0x8531a[_0x0e59('0xe')]),'phone':_0x8531a[_0x0e59('0xf')],'source':0x3,'priority':0x1,'status':0x2,'subject':intUtil[_0x0e59('0x10')](_0x54ec97[_0x0e59('0x11')],_0x8531a,'\x20'),'description':intUtil[_0x0e59('0x10')](_0x54ec97['Descriptions'],_0x8531a,_0x0e59('0x12')),'tags':getTags(_0x54ec97[_0x0e59('0x13')],'name')},getCustomFields(_0x54ec97[_0x0e59('0x14')],_0x8531a));_0x58df23['custom_fields']=_[_0x0e59('0x15')](_[_0x0e59('0x16')](_0x58df23['custom_fields'],'id'),_0x0e59('0x17'));return request({'uri':util[_0x0e59('0x18')](_0x0e59('0x19'),_0x75f83e['remoteUri']),'method':_0x0e59('0x1a'),'body':_0x58df23})[_0x0e59('0x1b')](function(_0x36a054){logger[_0x0e59('0xb')](_0x0e59('0x1c'));return _0x36a054;});}function getUser(_0x3ba0a1,_0x228249){if(intUtil[_0x0e59('0x1d')](_0x228249)){return request({'uri':util['format'](_0x0e59('0x1e'),_0x3ba0a1['remoteUri']),'qs':{'email':_0x228249}})[_0x0e59('0x1b')](function(_0x35ab3d){if(_0x35ab3d[_0x0e59('0x1f')]){logger[_0x0e59('0xb')](_0x0e59('0x20'));return _[_0x0e59('0x21')](_0x35ab3d,function(_0x2cf2a4){return _0x2cf2a4[_0x0e59('0x22')][_0x0e59('0x23')]===_0x228249;});}else{logger[_0x0e59('0xb')](_0x0e59('0x24'));return request({'uri':util[_0x0e59('0x18')](_0x0e59('0x25'),_0x3ba0a1[_0x0e59('0x26')])})[_0x0e59('0x1b')](function(_0x1913d6){logger[_0x0e59('0xb')]('Admin\x20account\x20selected.');return _0x1913d6;});}});}else{logger['info'](_0x0e59('0x27'));return request({'uri':util['format'](_0x0e59('0x25'),_0x3ba0a1[_0x0e59('0x26')])})[_0x0e59('0x1b')](function(_0x42678c){logger['info']('Admin\x20account\x20selected.');return _0x42678c;});}}function getEndUser(_0x4a84df,_0x52643a,_0x515305){logger['info']('Searching\x20enduser\x20with\x20phone',_0x515305);return request({'uri':util[_0x0e59('0x18')]('%s/api/v2/contacts',_0x4a84df[_0x0e59('0x26')]),'qs':{'phone':_0x515305}})[_0x0e59('0x1b')](function(_0xa44d8a){if(_0xa44d8a[_0x0e59('0x1f')]){logger[_0x0e59('0xb')](_0x0e59('0x28'));return _[_0x0e59('0x21')](_0xa44d8a,{'phone':_0x515305});}else{logger['info']('Enduser\x20not\x20found,\x20creating\x20a\x20new\x20enduser!');return request({'uri':util[_0x0e59('0x18')](_0x0e59('0x29'),_0x4a84df[_0x0e59('0x26')]),'method':_0x0e59('0x1a'),'body':{'name':_0x52643a,'phone':_0x515305}})['then'](function(_0x5f2594){logger[_0x0e59('0xb')](_0x0e59('0x2a'));return _0x5f2594;});}});}function getAuth(_0x2678dd){return util[_0x0e59('0x18')](_0x0e59('0x2b'),new Buffer(_0x2678dd[_0x0e59('0x2c')]+':X')[_0x0e59('0x2d')]('base64'));}function request(_0x4f202a){logger[_0x0e59('0x2e')]('[HTTP]',JSON[_0x0e59('0x2f')](_0x4f202a));return rp(_[_0x0e59('0x6')](_0x4f202a,{'method':_0x0e59('0x30'),'headers':headers,'json':!![]}));}function getTags(_0x4c03e0,_0x32fc85){var _0x1a9ea9=[];if(_0x4c03e0&&_0x4c03e0['length']>0x0){_0x1a9ea9=_[_0x0e59('0x31')](_0x4c03e0,_0x32fc85);}return _0x1a9ea9;}function getCustomFields(_0x1673bb,_0x4d8960){var _0x3c5cc5=[];var _0x1b947a={'custom_fields':[]};if(_0x1673bb[_0x0e59('0x1f')]>0x0){_[_0x0e59('0x32')](_0x1673bb,function(_0x3775d7){if(_[_0x0e59('0x33')]([_0x0e59('0x34'),_0x0e59('0x35')],_0x3775d7[_0x0e59('0x36')])&&_0x3775d7['nameField']&&!_0x3775d7[_0x0e59('0x37')]){_0x1b947a[_0x3775d7[_0x0e59('0x38')][_0x0e59('0x39')]()]=_0x3775d7[_0x0e59('0x3a')][_0x0e59('0x2d')]();}else if(_[_0x0e59('0x33')]([_0x0e59('0x34'),_0x0e59('0x35')],_0x3775d7['type'])&&_0x3775d7[_0x0e59('0x3b')]&&_0x3775d7[_0x0e59('0x37')]){_0x1b947a[_0x0e59('0x3c')]['push']({'id':_0x3775d7[_0x0e59('0x3b')],'value':_0x3775d7[_0x0e59('0x3a')][_0x0e59('0x2d')]()});}else if(_0x3775d7[_0x0e59('0x36')]===_0x0e59('0x3d')&&_0x3775d7[_0x0e59('0x3e')]&&_0x3775d7[_0x0e59('0x3b')]&&_0x3775d7[_0x0e59('0x37')]){_0x4d8960[_0x3775d7['variableName']]&&_0x1b947a[_0x0e59('0x3c')][_0x0e59('0x3f')]({'id':_0x3775d7[_0x0e59('0x3b')],'value':_0x4d8960[_0x3775d7[_0x0e59('0x3e')]]['toString']()});}else if(_0x3775d7[_0x0e59('0x36')]==='customVariable'&&_0x3775d7[_0x0e59('0x40')]&&_0x3775d7[_0x0e59('0x40')][_0x0e59('0x41')]&&_0x3775d7['idField']&&_0x3775d7['customField']){_0x4d8960[_0x3775d7['Variable'][_0x0e59('0x41')]['toLowerCase']()]&&_0x1b947a[_0x0e59('0x3c')][_0x0e59('0x3f')]({'id':_0x3775d7[_0x0e59('0x3b')],'value':_0x4d8960[_0x3775d7[_0x0e59('0x40')]['name']['toLowerCase']()]['toString']()});}});}return _0x1b947a;}exports[_0x0e59('0x42')]=function(_0x46d4e7,_0x18d42d,_0x5f7a39,_0xaf97ce,_0x293c36,_0x51df1c){var _0x2904a9,_0x9dc26b;_0x51df1c[_0x0e59('0x26')]=intUtil[_0x0e59('0x43')](_0x51df1c[_0x0e59('0x26')]);_0x51df1c[_0x0e59('0x44')]=intUtil[_0x0e59('0x43')](_0x51df1c[_0x0e59('0x44')]);if(_0x293c36&&_0x293c36[_0x0e59('0x45')]){logger[_0x0e59('0xb')](_0x0e59('0x46'),'Recording\x20is\x20enabled!');_0x18d42d['recordingURL']=util[_0x0e59('0x18')](_0x0e59('0x47'),_0x51df1c['serverUrl'],_0x18d42d[_0x0e59('0x48')],md5(_0x18d42d[_0x0e59('0x48')]));}else{_0x18d42d[_0x0e59('0x49')]='';}headers['Authorization']=getAuth(_0x51df1c);return getUser(_0x51df1c,_0xaf97ce['email'])['then'](function(_0x429aad){_0x2904a9=_0x429aad;logger[_0x0e59('0xb')](_0x0e59('0x4a'),_0x2904a9['id']);return getEndUser(_0x51df1c,_0x18d42d[_0x0e59('0xe')],_0x18d42d[_0x0e59('0xf')]);})[_0x0e59('0x1b')](function(_0x4cf2d8){_0x9dc26b=_0x4cf2d8;logger[_0x0e59('0xb')](_0x0e59('0x4b'),_0x9dc26b['id']);return getTicket(_0x51df1c,_0x2904a9,_0x9dc26b,_0x5f7a39,_0x18d42d);})[_0x0e59('0x1b')](function(_0xf3be73){if(_0xf3be73&&_0xf3be73['id']){logger[_0x0e59('0xb')](_0x0e59('0x1c'));logger[_0x0e59('0xb')]('The\x20Ticket\x20ID\x20is:',_0xf3be73['id']);logger['info'](_0x0e59('0x46'),_0x0e59('0x4c'));emit(util[_0x0e59('0x18')](_0x0e59('0x4d'),_0xaf97ce[_0x0e59('0x41')]),'trigger:browser:url',{'uri':util[_0x0e59('0x18')](_0x0e59('0x4e'),_0x51df1c[_0x0e59('0x26')],_0xf3be73['id'])});}})['catch'](function(_0x5e32b5){logger[_0x0e59('0x4f')](_0x0e59('0x46'),JSON['stringify'](_0x5e32b5));});};exports['outbound']=function(_0x1b494f,_0xf57e96,_0x42bb73,_0x2a3caa,_0x52d4b9,_0x8862cb,_0x14be05){var _0x15541d,_0x4574e3;_0x8862cb[_0x0e59('0x26')]=intUtil[_0x0e59('0x43')](_0x8862cb[_0x0e59('0x26')]);_0x8862cb['serverUrl']=intUtil[_0x0e59('0x43')](_0x8862cb[_0x0e59('0x44')]);if(_0x14be05&&_0x14be05[_0x0e59('0x50')]&&_0x14be05[_0x0e59('0x50')]!==_0x0e59('0x51')){logger[_0x0e59('0xb')](_0x0e59('0x52'),_0x0e59('0x53'));_0xf57e96[_0x0e59('0x49')]=util[_0x0e59('0x18')]('%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s',_0x8862cb[_0x0e59('0x44')],_0xf57e96[_0x0e59('0x48')],md5(_0xf57e96['uniqueid']));}headers[_0x0e59('0x54')]=getAuth(_0x8862cb);return getUser(_0x8862cb,_0x2a3caa[_0x0e59('0x23')])[_0x0e59('0x1b')](function(_0x395c9d){_0x15541d=_0x395c9d;logger[_0x0e59('0xb')](_0x0e59('0x4a'),_0x15541d['id']);return getEndUser(_0x8862cb,_0xf57e96['destcalleridname'],_0xf57e96[_0x0e59('0x55')]);})[_0x0e59('0x1b')](function(_0x11bc13){_0x4574e3=_0x11bc13;logger['info'](_0x0e59('0x4b'),_0x4574e3['id']);return getTicket(_0x8862cb,_0x15541d,_0x4574e3,_0x42bb73,_0xf57e96);})['then'](function(_0x149ed8){if(_0x149ed8&&_0x149ed8['id']){logger[_0x0e59('0xb')]('Ticket\x20created!');logger[_0x0e59('0xb')]('The\x20Ticket\x20ID\x20is:',_0x149ed8['id']);logger[_0x0e59('0xb')]('[OUTBOUND]',_0x0e59('0x4c'));emit(util[_0x0e59('0x18')]('user:%s',_0x2a3caa[_0x0e59('0x41')]),_0x0e59('0x56'),{'uri':util[_0x0e59('0x18')](_0x0e59('0x4e'),_0x8862cb[_0x0e59('0x26')],_0x149ed8['id'])});}})[_0x0e59('0x57')](function(_0xcb8c04){logger['error'](_0x0e59('0x52'),JSON[_0x0e59('0x2f')](_0xcb8c04));});};exports['unmanaged']=function(_0x2c8197,_0x2c2043,_0x342ebb,_0x10f388,_0x628c03,_0x56e9dc){var _0x406cfb,_0x20ff84;_0x56e9dc[_0x0e59('0x26')]=intUtil[_0x0e59('0x43')](_0x56e9dc[_0x0e59('0x26')]);_0x56e9dc[_0x0e59('0x44')]=intUtil['stripTrailingSlash'](_0x56e9dc[_0x0e59('0x44')]);if(_0x628c03&&_0x628c03[_0x0e59('0x45')]){logger['info']('['+_0x2c2043['lastevent'][_0x0e59('0x58')]()+']',_0x0e59('0x53'));_0x2c2043[_0x0e59('0x49')]=util[_0x0e59('0x18')](_0x0e59('0x47'),_0x56e9dc[_0x0e59('0x44')],_0x2c2043['uniqueid'],md5(_0x2c2043['uniqueid']));}else{_0x2c2043[_0x0e59('0x49')]='';}headers[_0x0e59('0x54')]=getAuth(_0x56e9dc);return getUser(_0x56e9dc,'')[_0x0e59('0x1b')](function(_0xd9ebf6){_0x406cfb=_0xd9ebf6;logger[_0x0e59('0xb')](_0x0e59('0x4a'),_0x406cfb['id']);return getEndUser(_0x56e9dc,_0x2c2043['calleridname'],_0x2c2043[_0x0e59('0xf')]);})[_0x0e59('0x1b')](function(_0x1dee91){_0x20ff84=_0x1dee91;logger[_0x0e59('0xb')](_0x0e59('0x4b'),_0x20ff84['id']);return getTicket(_0x56e9dc,_0x406cfb,_0x20ff84,_0x342ebb,_0x2c2043);})[_0x0e59('0x1b')](function(_0x14ea37){if(_0x14ea37){logger['info']('Ticket\x20created!');logger[_0x0e59('0xb')](_0x0e59('0x59'),_0x14ea37['id']);}})[_0x0e59('0x57')](function(_0x6295a9){logger['error']('['+_0x2c2043[_0x0e59('0x5a')][_0x0e59('0x58')]()+']',JSON[_0x0e59('0x2f')](_0x6295a9));});};
\ No newline at end of file
index dbbeab9..8364018 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0x6356=['/api/lookup?q=','&f=','&entities=contact','find','contacts','format','Searching\x20contact\x20with\x20phone\x20%s','contactNumber','mobile_number','endUserId','Contact\x20found\x20mobile_number:','work_number','Contact\x20created:','POST','/api/contacts','YYYY-MM-DDTHH:mm:ss','Contact\x20not\x20found,\x20creating\x20a\x20new\x20contact','Creating\x20new\x20task','/api/tasks','Subjects','Descriptions','Contact','add','ticketId','task','Task\x20created:','/contacts/','user:%s','trigger:browser:url','Token\x20token=','apiKey','stripTrailingSlash','remoteUri','serverUrl','username','toLowerCase','destcalleridnum','calleridnum','callDirection','queue','uniqueid','monitor_format','[QUEUE]','Recording\x20is\x20enabled!','recordingURL','recordingFormat','none','The\x20ticket\x20ID\x20is:\x20%s','name',']\x20Error\x20running\x20Freshsales\x20integration','inspect','lodash','request-promise','md5','util','moment','bluebird','ioredis','./util','../../../../config/logger','freshsales','redis','localhost','socket.io-emitter','GET','/api/selector/owners','headers','info','Getting\x20admin\x20information','then','users','length','email','adminEmail','Admin\x20found:','adminId','Requested\x20Resource\x20not\x20Found','catch','error','toUpperCase','agentEmail','Getting\x20user\x20with\x20email','userEmail','userId','User\x20found:','message'];(function(_0x2d7f0e,_0x3e6fbd){var _0x110b07=function(_0x557b00){while(--_0x557b00){_0x2d7f0e['push'](_0x2d7f0e['shift']());}};_0x110b07(++_0x3e6fbd);}(_0x6356,0x89));var _0x6635=function(_0x57f8c0,_0x136cf6){_0x57f8c0=_0x57f8c0-0x0;var _0x117f08=_0x6356[_0x57f8c0];return _0x117f08;};'use strict';var _=require(_0x6635('0x0'));var rp=require(_0x6635('0x1'));var md5=require(_0x6635('0x2'));var util=require(_0x6635('0x3'));var moment=require(_0x6635('0x4'));var Promise=require(_0x6635('0x5'));var Redis=require(_0x6635('0x6'));var intUtil=require(_0x6635('0x7'));var config=require('../../../../config/environment');var logger=require(_0x6635('0x8'))(_0x6635('0x9'));config[_0x6635('0xa')]=_['defaults'](config['redis'],{'host':_0x6635('0xb'),'port':0x18eb});var io=require(_0x6635('0xc'))(new Redis(config[_0x6635('0xa')]));function getAdminId(_0x3d5285,_0x4d8c65,_0x663f6e,_0x28015a){return new Promise(function(_0xb4f1df,_0x238ed3){var _0x3818aa=![];var _0x46de8d={'method':_0x6635('0xd'),'uri':_0x28015a+_0x6635('0xe'),'json':!![]};_0x46de8d[_0x6635('0xf')]=_0x663f6e;logger[_0x6635('0x10')](_0x6635('0x11'));return rp(_0x46de8d)[_0x6635('0x12')](function(_0x489e3f){if(_0x489e3f){var _0x501103=_0x489e3f[_0x6635('0x13')];var _0x5b661b=null;for(_0x5b661b=0x0;_0x5b661b<_0x501103[_0x6635('0x14')];_0x5b661b++){if(_0x501103[_0x5b661b][_0x6635('0x15')]===_0x3d5285[_0x6635('0x16')]){_0x3d5285['adminId']=_0x501103[_0x5b661b]['id'];_0x3818aa=!![];}}if(_0x3818aa){logger[_0x6635('0x10')](_0x6635('0x17'),_0x3d5285[_0x6635('0x18')]);_0xb4f1df(_0x3d5285);}else{_0x238ed3({'statusCode':0x194,'message':'Requested\x20Resource\x20not\x20Found'});}}else{_0x238ed3({'statusCode':0x194,'message':_0x6635('0x19')});}})[_0x6635('0x1a')](function(_0x2009a7){logger[_0x6635('0x1b')]('['+[_0x4d8c65[_0x6635('0x1c')]()]+']',_0x2009a7['message']);_0x238ed3(_0x2009a7);});});}function getUser(_0x419932,_0x1c83fd,_0x93d064){return function(_0x3db090){return new Promise(function(_0x4d6829,_0x4e885d){var _0x275432={'method':_0x6635('0xd'),'uri':_0x93d064+_0x6635('0xe'),'json':!![]};_0x275432[_0x6635('0xf')]=_0x1c83fd;logger[_0x6635('0x10')]('Getting\x20user\x20list');return rp(_0x275432)['then'](function(_0x212bf7){if(_0x212bf7){var _0x1c68be=_0x212bf7[_0x6635('0x13')];var _0x4a9cc8=![];var _0x5bb5ad=null;if(_0x3db090[_0x6635('0x1d')]!==null){logger[_0x6635('0x10')](_0x6635('0x1e'),_0x3db090[_0x6635('0x1d')]);_0x3db090[_0x6635('0x1f')]=_0x3db090['agentEmail'];for(_0x5bb5ad=0x0;_0x5bb5ad<_0x1c68be['length'];_0x5bb5ad++){if(_0x1c68be[_0x5bb5ad][_0x6635('0x15')]===_0x3db090[_0x6635('0x1d')]){_0x4a9cc8=!![];_0x3db090[_0x6635('0x20')]=_0x1c68be[_0x5bb5ad]['id'];logger[_0x6635('0x10')](_0x6635('0x21'),_0x3db090[_0x6635('0x20')]);}}}if(!_0x4a9cc8){logger[_0x6635('0x10')]('Admin\x20selected');_0x3db090[_0x6635('0x1f')]=_0x3db090[_0x6635('0x16')];_0x3db090[_0x6635('0x20')]=_0x3db090['adminId'];_0x4a9cc8=!![];}if(_0x4a9cc8){_0x4d6829(_0x3db090);}else{_0x4e885d({'statusCode':0x194,'message':'Requested\x20Resource\x20not\x20Found'});}}else{_0x4e885d({'statusCode':0x194,'message':_0x6635('0x19')});}})[_0x6635('0x1a')](function(_0x50079c){logger[_0x6635('0x1b')]('['+[_0x419932[_0x6635('0x1c')]()]+']',_0x50079c[_0x6635('0x22')]);_0x4e885d(_0x50079c);});});};}function searchContact(_0x1f24bc,_0x1646c4,_0x43612d,_0x1d056e){return new Promise(function(_0x879c93,_0x1b11cd){var _0x5a26a2={'method':'GET','headers':_0x1646c4,'uri':_0x1f24bc+_0x6635('0x23')+_0x1d056e+_0x6635('0x24')+_0x43612d+_0x6635('0x25'),'json':!![]};rp(_0x5a26a2)[_0x6635('0x12')](function(_0x1431c1){var _0x38f0d9=_[_0x6635('0x26')](_0x1431c1[_0x6635('0x27')]['contacts'],[_0x43612d,_0x1d056e]);_0x879c93(_0x38f0d9);})[_0x6635('0x1a')](function(_0x46909c){_0x1b11cd(_0x46909c);});});}function getEndUser(_0x2d12b6,_0x4da5b2,_0x3c759b){return function(_0x3968f3){return new Promise(function(_0x332214,_0x283dcb){logger['info'](util[_0x6635('0x28')](_0x6635('0x29'),_0x3968f3[_0x6635('0x2a')]));searchContact(_0x3c759b,_0x4da5b2,_0x6635('0x2b'),_0x3968f3[_0x6635('0x2a')])['then'](function(_0x4cc573){if(_0x4cc573){_0x3968f3[_0x6635('0x2c')]=_0x4cc573['id'];logger[_0x6635('0x10')](_0x6635('0x2d'),_0x3968f3[_0x6635('0x2c')]);return _0x332214(_0x3968f3);}searchContact(_0x3c759b,_0x4da5b2,_0x6635('0x2e'),_0x3968f3['contactNumber'])[_0x6635('0x12')](function(_0x159179){if(_0x159179){_0x3968f3[_0x6635('0x2c')]=_0x159179['id'];logger[_0x6635('0x10')]('Contact\x20found\x20work_number:',_0x3968f3[_0x6635('0x2c')]);return _0x332214(_0x3968f3);}createEndUser(_0x3968f3,_0x2d12b6,_0x4da5b2,_0x3c759b)[_0x6635('0x12')](function(_0x51c3d0){logger['info'](_0x6635('0x2f'),_0x51c3d0[_0x6635('0x2c')]);return _0x332214(_0x51c3d0);});});})['catch'](function(_0x449dc1){_0x283dcb(_0x449dc1);});});};}function createEndUser(_0x2bfdbd,_0x361e19,_0x38a9ea,_0x6a31e1){return new Promise(function(_0x3a74ab,_0x503e1e){var _0x339f82=moment();var _0xfe1de={'method':_0x6635('0x30'),'uri':_0x6a31e1+_0x6635('0x31'),'body':{'contact':{'last_name':_0x2bfdbd[_0x6635('0x2a')],'work_number':_0x2bfdbd['contactNumber'],'mobile_number':_0x2bfdbd[_0x6635('0x2a')],'owner_id':_0x2bfdbd[_0x6635('0x20')],'created_at':_0x339f82[_0x6635('0x28')](_0x6635('0x32'))}},'json':!![]};_0xfe1de[_0x6635('0xf')]=_0x38a9ea;logger['info'](_0x6635('0x33'));return rp(_0xfe1de)[_0x6635('0x12')](function(_0x206061){_0x2bfdbd[_0x6635('0x2c')]=_0x206061['contact']['id'];_0x3a74ab(_0x2bfdbd);})[_0x6635('0x1a')](function(_0x207439){logger['error']('['+[_0x361e19[_0x6635('0x1c')]()]+']',_0x207439['message']);_0x503e1e(_0x207439[_0x6635('0x22')]);});});}function getTicket(_0x2d82b7,_0x500940,_0x4f01f0,_0x4b24b3,_0x150fba){return function(_0xeb8146){logger['info'](_0x6635('0x34'));return new Promise(function(_0x39becb,_0x551abb){var _0x4541c5=moment();var _0x29d8fc={'method':'POST','uri':_0x4f01f0+_0x6635('0x35'),'body':{'title':intUtil['getString'](_0x4b24b3[_0x6635('0x36')],_0x150fba,'\x20'),'description':intUtil['getString'](_0x4b24b3[_0x6635('0x37')],_0x150fba,'\x0a'),'owner_id':_0xeb8146[_0x6635('0x20')],'creater_id':_0xeb8146[_0x6635('0x18')],'targetable_id':_0xeb8146[_0x6635('0x2c')],'targetable_type':_0x6635('0x38'),'created_at':_0x4541c5['format'](_0x6635('0x32')),'due_date':_0x4541c5[_0x6635('0x39')](0x1e,'m')[_0x6635('0x28')](_0x6635('0x32'))},'json':!![]};_0x29d8fc[_0x6635('0xf')]=_0x500940;return rp(_0x29d8fc)[_0x6635('0x12')](function(_0x2e0259){_0xeb8146[_0x6635('0x3a')]=_0x2e0259[_0x6635('0x3b')]['id'];logger[_0x6635('0x10')](_0x6635('0x3c'),_0xeb8146[_0x6635('0x3a')]);_0x39becb(_0xeb8146);})['catch'](function(_0x5e460b){logger[_0x6635('0x1b')]('['+[_0x2d82b7[_0x6635('0x1c')]()]+']',_0x5e460b[_0x6635('0x22')]);_0x551abb(_0x5e460b['message']);});});};}function emit(_0x2d3d74,_0x467f7c,_0x590f86){var _0x3bca15={'uri':_0x2d3d74+_0x6635('0x3d')+_0x590f86};io['to'](util[_0x6635('0x28')](_0x6635('0x3e'),_0x467f7c))['emit'](_0x6635('0x3f'),_0x3bca15);}exports['cs']=function(_0x3d91d7,_0x66a258,_0x195ba6,_0x275abe,_0x47b13d,_0x470583,_0x2b0d2b,_0x94b475){var _0x4fd469={};var _0x9da3b7={'Authorization':_0x6635('0x40')+_0x470583[_0x6635('0x41')]};_0x470583['remoteUri']=intUtil[_0x6635('0x42')](_0x470583[_0x6635('0x43')]);_0x470583['serverUrl']=intUtil['stripTrailingSlash'](_0x470583[_0x6635('0x44')]);var _0x11bfc7=_0x470583[_0x6635('0x43')];_0x4fd469['adminEmail']=_0x470583[_0x6635('0x45')];_0x4fd469[_0x6635('0x2a')]=_0x94b475[_0x6635('0x46')]()==='outbound'?_0x66a258[_0x6635('0x47')]:_0x66a258[_0x6635('0x48')];_0x4fd469[_0x6635('0x49')]=_0x94b475==='queue'||_0x94b475==='unmanaged'?_0x6635('0x4a'):'outbound';if(_0x275abe){_0x4fd469[_0x6635('0x1d')]=_0x275abe['email'];}var _0x4eff46=util['format']('%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s',_0x470583[_0x6635('0x44')],_0x66a258[_0x6635('0x4b')],md5(_0x66a258[_0x6635('0x4b')]));if(_0x47b13d&&_0x47b13d[_0x6635('0x4c')]){logger[_0x6635('0x10')](_0x6635('0x4d'),_0x6635('0x4e'));_0x66a258[_0x6635('0x4f')]=_0x4eff46;}else if(_0x2b0d2b&&_0x2b0d2b[_0x6635('0x50')]&&_0x2b0d2b['recordingFormat']!==_0x6635('0x51')){logger[_0x6635('0x10')]('[OUTBOUND]',_0x6635('0x4e'));_0x66a258[_0x6635('0x4f')]=_0x4eff46;}else{_0x66a258[_0x6635('0x4f')]='';}return getAdminId(_0x4fd469,_0x94b475,_0x9da3b7,_0x11bfc7)['then'](getUser(_0x94b475,_0x9da3b7,_0x11bfc7))['then'](getEndUser(_0x94b475,_0x9da3b7,_0x11bfc7))['then'](getTicket(_0x94b475,_0x9da3b7,_0x11bfc7,_0x195ba6,_0x66a258))['then'](function(_0x4c4136){logger[_0x6635('0x10')](util[_0x6635('0x28')](_0x6635('0x52'),_0x4c4136[_0x6635('0x3a')]));if(_0x94b475!=='unmanaged'){logger[_0x6635('0x10')]('['+[_0x94b475[_0x6635('0x1c')]()]+']','Displaying\x20task\x20in\x20a\x20new\x20tab...');emit(_0x11bfc7,_0x275abe[_0x6635('0x53')],_0x4c4136[_0x6635('0x2c')]);}})[_0x6635('0x1a')](function(_0x859ec6){logger[_0x6635('0x1b')]('['+[_0x94b475[_0x6635('0x1c')]()]+_0x6635('0x54'),util[_0x6635('0x55')](_0x859ec6,{'showHidden':!![],'depth':null}));});};
\ No newline at end of file
index 238fd5f..dc49b02 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0x8e60=['data3','queue','routeId','outbound','log','EVENT\x20UNKNOWN','zendesk','freshdesk','../../../../config/logger','error','[EXEC]','format','%s\x20configuration\x20#%s\x20not\x20found','%s\x20account\x20#%s\x20not\x20found','data2','lodash','util','./zendesk','./salesforce','./sugarcrm','./freshdesk','./zoho','./desk','./vtiger','./servicenow','./dynamics365','./freshsales','salesforce','sugarcrm','zoho','desk','vtiger','freshsales','servicenow','exec','data1','toLowerCase','find','Configurations'];(function(_0x57b236,_0x30614e){var _0x4feb29=function(_0x26d3e6){while(--_0x26d3e6){_0x57b236['push'](_0x57b236['shift']());}};_0x4feb29(++_0x30614e);}(_0x8e60,0xd2));var _0x08e6=function(_0x117f18,_0x43cb2b){_0x117f18=_0x117f18-0x0;var _0x2d04e6=_0x8e60[_0x117f18];return _0x2d04e6;};'use strict';var _=require(_0x08e6('0x0'));var util=require(_0x08e6('0x1'));var zendesk=require(_0x08e6('0x2'));var salesforce=require(_0x08e6('0x3'));var sugarcrm=require(_0x08e6('0x4'));var freshdesk=require(_0x08e6('0x5'));var zoho=require(_0x08e6('0x6'));var desk=require(_0x08e6('0x7'));var vtiger=require(_0x08e6('0x8'));var servicenow=require(_0x08e6('0x9'));var dynamics365=require(_0x08e6('0xa'));var freshsales=require(_0x08e6('0xb'));var integrations=['zendesk',_0x08e6('0xc'),_0x08e6('0xd'),'freshdesk',_0x08e6('0xe'),_0x08e6('0xf'),_0x08e6('0x10'),'dynamics365',_0x08e6('0x11'),_0x08e6('0x12')];exports[_0x08e6('0x13')]=function(_0xee3c48,_0x477f06,_0xc93cbf,_0x367fd1,_0x2c7444,_0x3e4c86){if(_0xc93cbf){if(_['includes'](integrations,_0xee3c48[_0x08e6('0x14')][_0x08e6('0x15')]())){try{var _0x5e25ed=null;var _0x3ca0c='';var _0x3f47b8=_0xc93cbf[_0xee3c48[_0x08e6('0x14')][_0x08e6('0x15')]()];if(_0x3f47b8){var _0x2798b3=_0x3f47b8[_0xee3c48['data2']];if(_0x2798b3){var _0x2ad3a4=_[_0x08e6('0x16')](_0x2798b3[_0x08e6('0x17')],{'id':parseInt(_0xee3c48[_0x08e6('0x18')],0xa)});if(_0x2ad3a4){if(_0x367fd1){if(_0x2c7444&&_0x477f06[_0x08e6('0x19')]){_0x3ca0c='queue';}else if(_0x477f06[_0x08e6('0x1a')]){_0x3ca0c=_0x08e6('0x1b');}else{console[_0x08e6('0x1c')](_0x08e6('0x1d'),_0x477f06);}}else{_0x3ca0c='unmanaged';}switch(_0xee3c48[_0x08e6('0x14')][_0x08e6('0x15')]()){case _0x08e6('0x1e'):zendesk[_0x3ca0c](_0xee3c48,_0x477f06,_0x2ad3a4,_0x367fd1,_0x2c7444,_0x2798b3,_0x3e4c86);break;case _0x08e6('0xc'):salesforce[_0x3ca0c](_0xee3c48,_0x477f06,_0x2ad3a4,_0x367fd1,_0x2c7444,_0x2798b3,_0x3e4c86);break;case _0x08e6('0xd'):sugarcrm[_0x3ca0c](_0xee3c48,_0x477f06,_0x2ad3a4,_0x367fd1,_0x2c7444,_0x2798b3,_0x3e4c86);break;case _0x08e6('0x1f'):freshdesk[_0x3ca0c](_0xee3c48,_0x477f06,_0x2ad3a4,_0x367fd1,_0x2c7444,_0x2798b3,_0x3e4c86);break;case _0x08e6('0xe'):zoho[_0x3ca0c](_0xee3c48,_0x477f06,_0x2ad3a4,_0x367fd1,_0x2c7444,_0x2798b3,_0x3e4c86);break;case'desk':desk[_0x3ca0c](_0xee3c48,_0x477f06,_0x2ad3a4,_0x367fd1,_0x2c7444,_0x2798b3,_0x3e4c86);break;case _0x08e6('0x10'):vtiger[_0x3ca0c](_0xee3c48,_0x477f06,_0x2ad3a4,_0x367fd1,_0x2c7444,_0x2798b3,_0x3e4c86);break;case _0x08e6('0x11'):freshsales['cs'](_0xee3c48,_0x477f06,_0x2ad3a4,_0x367fd1,_0x2c7444,_0x2798b3,_0x3e4c86,_0x3ca0c);break;case _0x08e6('0x12'):servicenow['cs'](_0xee3c48,_0x477f06,_0x2ad3a4,_0x367fd1,_0x2c7444,_0x2798b3,_0x3e4c86,_0x3ca0c);break;case'dynamics365':dynamics365['cs'](_0xee3c48,_0x477f06,_0x2ad3a4,_0x367fd1,_0x2c7444,_0x2798b3,_0x3e4c86,_0x3ca0c);break;default:console[_0x08e6('0x1c')]('unknown\x20integration');}}else{_0x5e25ed=require(_0x08e6('0x20'))(_0xee3c48[_0x08e6('0x14')]['toLowerCase']());_0x5e25ed[_0x08e6('0x21')](_0x08e6('0x22'),util[_0x08e6('0x23')](_0x08e6('0x24'),_0xee3c48[_0x08e6('0x14')][_0x08e6('0x15')](),_0xee3c48[_0x08e6('0x18')]));}}else{_0x5e25ed=require(_0x08e6('0x20'))(_0xee3c48['data1'][_0x08e6('0x15')]());_0x5e25ed['error'](_0x08e6('0x22'),util['format'](_0x08e6('0x25'),_0xee3c48[_0x08e6('0x14')][_0x08e6('0x15')](),_0xee3c48[_0x08e6('0x26')]));}}else{}}catch(_0x52b2d5){console['error'](_0x52b2d5);}}}};
\ No newline at end of file
index a6e3818..31d309e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0x1bcd=['serverUrl','stripTrailingSlash','remoteUri','monitor_format','[QUEUE]','Recording\x20is\x20enabled!','recordingURL','%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s','uniqueid','email','calleridnum','Fields','[QUEUE]\x20Ticket\x20%s\x20created','user:%s','newTab','trigger:browser:url','%s/%s/e','instanceUrl','error','[QUEUE]\x20Salesforce\x20account\x20type\x20not\x20recognized.','catch','recordingFormat','none','[OUTBOUND]','destcalleridname','destcalleridnum','outbound','[OUTBOUND]\x20Ticket\x20%s\x20created.','[OUTBOUND]\x20Displaying\x20ticket\x20%s\x20to\x20agent\x20%s.\x20Integration\x20account\x20type\x20%s.','integrationTab','trigger:salesforce:display','lastevent','calleridname','toUpperCase',']\x20Integration\x20account\x20type\x20%s.','lodash','request-promise','moment','bluebird','md5','jsforce','util','./util','../../../../config/environment','../../../../config/logger','salesforce','redis','localhost','socket.io-emitter','emit','assign','Subjects','getString','Descriptions','utc','IsReminderSet','IsRecurrence','endUserType','contact','lead','WhoId','account','ContactId','AccountId','leadId','Association\x20between\x20Case\x20and\x20Lead\x20skipped','sobject','create','isNil','User','find','execute','then','length','Email','info','Agent\x20%s\x20found.','resolve','Name','Agent\x20%s\x20not\x20found.\x20Switch\x20to\x20the\x20admin\x20account.','identity','user_id','display_name','moduleSearch','contact_lead','additionalSearchContact','merge','$or','Contact','Lead','account_contact_lead','additionalSearchAccount','Account','cloneDeep','additionalSearchLead','first','Phone','attributes','type','toLowerCase','Enduser\x20(%s)\x20with\x20phone\x20%s\x20found','Enduser\x20with\x20phone\x20%s\x20not\x20found','moduleCreate','LastName','<unknown>','Enduser\x20with\x20phone\x20%s.\x20Creating\x20method\x20used\x20%s.','Company','No\x20Company','format','upperFirst','forEach','string','idField','content','variable','variableName','toString','customVariable','Variable','name','concat','securityToken','Connection','clientId','clientSecret','login','username','Connection\x20established.','queue'];(function(_0x1e2a23,_0x5a6785){var _0x4997e9=function(_0xaa99ca){while(--_0xaa99ca){_0x1e2a23['push'](_0x1e2a23['shift']());}};_0x4997e9(++_0x5a6785);}(_0x1bcd,0x125));var _0xd1bc=function(_0x590764,_0x55acb8){_0x590764=_0x590764-0x0;var _0x474678=_0x1bcd[_0x590764];return _0x474678;};'use strict';var _=require(_0xd1bc('0x0'));var rp=require(_0xd1bc('0x1'));var moment=require(_0xd1bc('0x2'));var BPromise=require(_0xd1bc('0x3'));var md5=require(_0xd1bc('0x4'));var jsforce=require(_0xd1bc('0x5'));var util=require(_0xd1bc('0x6'));var Redis=require('ioredis');var intUtil=require(_0xd1bc('0x7'));var config=require(_0xd1bc('0x8'));var logger=require(_0xd1bc('0x9'))(_0xd1bc('0xa'));config[_0xd1bc('0xb')]=_['defaults'](config['redis'],{'host':_0xd1bc('0xc'),'port':0x18eb});var io=require(_0xd1bc('0xd'))(new Redis(config['redis']));function emit(_0x3b444e,_0xa70d14,_0x9d52ba){io['to'](_0x3b444e)[_0xd1bc('0xe')](_0xa70d14,_0x9d52ba);}function getTicket(_0x3bb614,_0x1865df,_0x4b94b4,_0x22fc39,_0x2a74f9,_0x5f579d,_0x3ccef1,_0x4ac869){var _0x13f589=Object[_0xd1bc('0xf')]({},{'OwnerId':_0x1865df['id'],'Subject':intUtil['getString'](_0x22fc39[_0xd1bc('0x10')],_0x2a74f9,'\x20'),'Description':intUtil[_0xd1bc('0x11')](_0x22fc39[_0xd1bc('0x12')],_0x2a74f9,'\x0a')},getCustomFields(_0x5f579d,_0x2a74f9));if(_0x4b94b4){if(_0x22fc39['ticketType']==='Task'){_0x13f589['ActivityDate']=moment[_0xd1bc('0x13')]();_0x13f589[_0xd1bc('0x14')]=![];_0x13f589[_0xd1bc('0x15')]=![];if(_0x4b94b4[_0xd1bc('0x16')]===_0xd1bc('0x17')||_0x4b94b4['endUserType']===_0xd1bc('0x18')){_0x13f589[_0xd1bc('0x19')]=_0x4b94b4['id'];}else if(_0x4b94b4[_0xd1bc('0x16')]===_0xd1bc('0x1a')){_0x13f589['WhatId']=_0x4b94b4['id'];}}else if(_0x22fc39['ticketType']==='Case'){if(_0x4b94b4[_0xd1bc('0x16')]===_0xd1bc('0x17')){_0x13f589[_0xd1bc('0x1b')]=_0x4b94b4['id'];}else if(_0x4b94b4['endUserType']===_0xd1bc('0x1a')){_0x13f589[_0xd1bc('0x1c')]=_0x4b94b4['id'];}else if(_0x4b94b4[_0xd1bc('0x16')]===_0xd1bc('0x18')&&_0x22fc39['leadId']){_0x13f589[_0x22fc39[_0xd1bc('0x1d')]]=_0x4b94b4['id'];}else{logger['info'](_0xd1bc('0x1e'));}}}return _0x3ccef1[_0xd1bc('0x1f')](_0x22fc39['ticketType'])[_0xd1bc('0x20')](_0x13f589);}function getUser(_0x4d0226,_0x515818,_0x58fa9d){if(!_[_0xd1bc('0x21')](_0x515818)&&intUtil['validateEmail'](_0x515818)){var _0x2afa03={'Email':_0x515818};var _0x2f7a14={'Id':!![],'Username':!![],'Name':!![],'Email':!![]};return _0x58fa9d['sobject'](_0xd1bc('0x22'))[_0xd1bc('0x23')](_0x2afa03,_0x2f7a14)[_0xd1bc('0x24')]()[_0xd1bc('0x25')](function(_0x4591f2){if(_0x4591f2[_0xd1bc('0x26')]){var _0x429f16=_['find'](_0x4591f2,function(_0x4b4aec){return _0x4b4aec[_0xd1bc('0x27')]===_0x515818;});if(_0x429f16){logger[_0xd1bc('0x28')](_0xd1bc('0x29'),_0x515818);return BPromise[_0xd1bc('0x2a')]({'id':_0x429f16['Id'],'name':_0x429f16[_0xd1bc('0x2b')]});}}else{logger[_0xd1bc('0x28')](_0xd1bc('0x2c'),_0x515818);return _0x58fa9d[_0xd1bc('0x2d')]()[_0xd1bc('0x25')](function(_0x21a19a){return BPromise[_0xd1bc('0x2a')]({'id':_0x21a19a[_0xd1bc('0x2e')],'name':_0x21a19a[_0xd1bc('0x2f')]});});}});}else{logger[_0xd1bc('0x28')](_0xd1bc('0x2c'),_0x515818);return _0x58fa9d[_0xd1bc('0x2d')]()[_0xd1bc('0x25')](function(_0x5959ac){return BPromise[_0xd1bc('0x2a')]({'id':_0x5959ac[_0xd1bc('0x2e')],'name':_0x5959ac[_0xd1bc('0x2f')]});});}}function getEndUser(_0x4ec9c4,_0x1c01f1,_0x21cf17,_0x452f30,_0x5ea855){var _0x4fd450={'$or':{'Phone':_0x452f30}};var _0x599477={'Id':!![],'Name':!![],'Phone':!![]};return BPromise[_0xd1bc('0x2a')]()[_0xd1bc('0x25')](function(){logger[_0xd1bc('0x28')]('Searching\x20enduser\x20with\x20phone\x20%s.\x20Serching\x20method\x20used\x20%s.',_0x452f30,_0x1c01f1[_0xd1bc('0x30')]);switch(_0x1c01f1['moduleSearch']){case _0xd1bc('0x31'):var _0x4f8d0c=_['cloneDeep'](_0x4fd450);if(_0x1c01f1[_0xd1bc('0x32')]){var _0x36ca2d={};_0x36ca2d[_0x1c01f1[_0xd1bc('0x32')]]=_0x452f30;_[_0xd1bc('0x33')](_0x4f8d0c[_0xd1bc('0x34')],_0x36ca2d);}return _0x5ea855[_0xd1bc('0x1f')](_0xd1bc('0x35'))[_0xd1bc('0x23')](_0x4f8d0c,_0x599477)[_0xd1bc('0x24')]()['then'](function(_0x358e36){if(_0x358e36&&_0x358e36[_0xd1bc('0x26')]){return _0x358e36;}else{var _0x412017=_['cloneDeep'](_0x4fd450);if(_0x1c01f1['additionalSearchLead']){var _0x4531a7={};_0x4531a7[_0x1c01f1['additionalSearchLead']]=_0x452f30;_[_0xd1bc('0x33')](_0x412017[_0xd1bc('0x34')],_0x4531a7);}return _0x5ea855[_0xd1bc('0x1f')](_0xd1bc('0x36'))[_0xd1bc('0x23')](_0x412017,_0x599477);}});case _0xd1bc('0x37'):var _0x26af0e=_['cloneDeep'](_0x4fd450);if(_0x1c01f1[_0xd1bc('0x38')]){var _0x36ca2d={};_0x36ca2d[_0x1c01f1['additionalSearchAccount']]=_0x452f30;_['merge'](_0x26af0e['$or'],_0x36ca2d);}return _0x5ea855[_0xd1bc('0x1f')](_0xd1bc('0x39'))[_0xd1bc('0x23')](_0x26af0e,_0x599477)[_0xd1bc('0x24')]()[_0xd1bc('0x25')](function(_0x16580b){if(_0x16580b&&_0x16580b[_0xd1bc('0x26')]){return _0x16580b;}else{var _0x43636f=_[_0xd1bc('0x3a')](_0x4fd450);if(_0x1c01f1[_0xd1bc('0x32')]){var _0x27b7d8={};_0x27b7d8[_0x1c01f1[_0xd1bc('0x32')]]=_0x452f30;_[_0xd1bc('0x33')](_0x43636f[_0xd1bc('0x34')],_0x27b7d8);}return _0x5ea855['sobject'](_0xd1bc('0x35'))['find'](_0x43636f,_0x599477)['then'](function(_0x53c73a){if(_0x53c73a&&_0x53c73a['length']){return _0x53c73a;}else{var _0x5f08e0=_[_0xd1bc('0x3a')](_0x4fd450);if(_0x1c01f1[_0xd1bc('0x3b')]){var _0x43675c={};_0x43675c[_0x1c01f1['additionalSearchLead']]=_0x452f30;_[_0xd1bc('0x33')](_0x5f08e0['$or'],_0x43675c);}return _0x5ea855[_0xd1bc('0x1f')](_0xd1bc('0x36'))['find'](_0x5f08e0,_0x599477);}});}});case'contact':var _0x4f8d0c=_[_0xd1bc('0x3a')](_0x4fd450);if(_0x1c01f1[_0xd1bc('0x32')]){var _0x36ca2d={};_0x36ca2d[_0x1c01f1[_0xd1bc('0x32')]]=_0x452f30;_[_0xd1bc('0x33')](_0x4f8d0c[_0xd1bc('0x34')],_0x36ca2d);}return _0x5ea855[_0xd1bc('0x1f')](_0xd1bc('0x35'))[_0xd1bc('0x23')](_0x4f8d0c,_0x599477)[_0xd1bc('0x24')]();case'lead':var _0x4caea7=_[_0xd1bc('0x3a')](_0x4fd450);if(_0x1c01f1[_0xd1bc('0x3b')]){var _0x36ca2d={};_0x36ca2d[_0x1c01f1[_0xd1bc('0x3b')]]=_0x452f30;_[_0xd1bc('0x33')](_0x4caea7[_0xd1bc('0x34')],_0x36ca2d);}return _0x5ea855[_0xd1bc('0x1f')](_0xd1bc('0x36'))[_0xd1bc('0x23')](_0x4caea7,_0x599477);case _0xd1bc('0x1a'):var _0x26af0e=_[_0xd1bc('0x3a')](_0x4fd450);if(_0x1c01f1[_0xd1bc('0x38')]){var _0x36ca2d={};_0x36ca2d[_0x1c01f1['additionalSearchAccount']]=_0x452f30;_[_0xd1bc('0x33')](_0x26af0e['$or'],_0x36ca2d);}return _0x5ea855['sobject']('Account')['find'](_0x26af0e,_0x599477);default:return null;}})[_0xd1bc('0x25')](function(_0x3b4e2b){if(_0x3b4e2b&&_0x3b4e2b[_0xd1bc('0x26')]){var _0x3105e1=_[_0xd1bc('0x3c')](_0x3b4e2b);if(_0x3105e1){return BPromise[_0xd1bc('0x2a')]({'id':_0x3105e1['Id'],'name':_0x3105e1[_0xd1bc('0x2b')],'phone':_0x3105e1[_0xd1bc('0x3d')],'endUserType':_0x3105e1[_0xd1bc('0x3e')][_0xd1bc('0x3f')][_0xd1bc('0x40')]()});}}})[_0xd1bc('0x25')](function(_0x28152d){if(_0x28152d){logger[_0xd1bc('0x28')](_0xd1bc('0x41'),_0x28152d[_0xd1bc('0x16')],_0x452f30);return BPromise[_0xd1bc('0x2a')](_0x28152d);}else{logger[_0xd1bc('0x28')](_0xd1bc('0x42'),_0x452f30);var _0x3bca78={'Phone':_0x452f30};if(_0x1c01f1[_0xd1bc('0x43')]){if(_0x1c01f1[_0xd1bc('0x43')]===_0xd1bc('0x17')){logger[_0xd1bc('0x28')]('Enduser\x20with\x20phone\x20%s.\x20Creating\x20method\x20used\x20%s.',_0x452f30,_0x1c01f1[_0xd1bc('0x43')]);_0x3bca78[_0xd1bc('0x44')]=_0x21cf17!==_0xd1bc('0x45')?_0x21cf17:util['format']('Caller\x20-\x20%s',_0x452f30);}else if(_0x1c01f1[_0xd1bc('0x43')]===_0xd1bc('0x18')){logger[_0xd1bc('0x28')](_0xd1bc('0x46'),_0x452f30,_0x1c01f1[_0xd1bc('0x43')]);_0x3bca78['LastName']=_0x21cf17!==_0xd1bc('0x45')?_0x21cf17:util['format']('Caller\x20-\x20%s',_0x452f30);_0x3bca78[_0xd1bc('0x47')]=_0xd1bc('0x48');}else if(_0x1c01f1['moduleCreate']===_0xd1bc('0x1a')){logger[_0xd1bc('0x28')](_0xd1bc('0x46'),_0x452f30,_0x1c01f1['moduleCreate']);_0x3bca78['Name']=_0x21cf17!==_0xd1bc('0x45')?_0x21cf17:util[_0xd1bc('0x49')]('Caller\x20-\x20%s',_0x452f30);}else{return null;}}return _0x5ea855[_0xd1bc('0x1f')](_[_0xd1bc('0x4a')](_0x1c01f1[_0xd1bc('0x43')]))['create'](_0x3bca78)[_0xd1bc('0x25')](function(_0x2a6d42){return BPromise[_0xd1bc('0x2a')]({'id':_0x2a6d42['id'],'endUserType':_0x1c01f1['moduleCreate']});});}});}function getCustomFields(_0x1a9690,_0xcdd548){var _0x383057={};if(_0x1a9690[_0xd1bc('0x26')]>0x0){_[_0xd1bc('0x4b')](_0x1a9690,function(_0xb9917f){if(_['includes']([_0xd1bc('0x4c'),'picklist'],_0xb9917f[_0xd1bc('0x3f')])&&_0xb9917f[_0xd1bc('0x4d')]){_0x383057[_0xb9917f[_0xd1bc('0x4d')]]=_0xb9917f[_0xd1bc('0x4e')]['toString']();}else if(_0xb9917f[_0xd1bc('0x3f')]===_0xd1bc('0x4f')&&_0xb9917f[_0xd1bc('0x50')]&&_0xb9917f['idField']){_0xcdd548[_0xb9917f[_0xd1bc('0x50')]]&&(_0x383057[_0xb9917f['idField']]=_0xcdd548[_0xb9917f[_0xd1bc('0x50')]][_0xd1bc('0x51')]());}else if(_0xb9917f[_0xd1bc('0x3f')]===_0xd1bc('0x52')&&_0xb9917f[_0xd1bc('0x53')]&&_0xb9917f[_0xd1bc('0x53')][_0xd1bc('0x54')]&&_0xb9917f[_0xd1bc('0x4d')]){_0xcdd548[_0xb9917f[_0xd1bc('0x53')]['name'][_0xd1bc('0x40')]()]&&(_0x383057[_0xb9917f[_0xd1bc('0x4d')]]=_0xcdd548[_0xb9917f['Variable'][_0xd1bc('0x54')][_0xd1bc('0x40')]()]['toString']());}});}return _0x383057;}function getConnection(_0x2b9267){var _0x3f70b3=_0x2b9267['password'][_0xd1bc('0x55')](_0x2b9267[_0xd1bc('0x56')]);var _0x46ab06=new jsforce[(_0xd1bc('0x57'))]({'oauth2':{'loginUrl':_0x2b9267['remoteUri']||'https://login.salesforce.com','clientId':_0x2b9267[_0xd1bc('0x58')],'clientSecret':_0x2b9267[_0xd1bc('0x59')]}});return _0x46ab06[_0xd1bc('0x5a')](_0x2b9267[_0xd1bc('0x5b')],_0x3f70b3)[_0xd1bc('0x25')](function(){logger[_0xd1bc('0x28')](_0xd1bc('0x5c'));return _0x46ab06;});}exports[_0xd1bc('0x5d')]=function(_0x3b6388,_0xc59939,_0x3ff690,_0x129fbb,_0x23f2ef,_0x399713){var _0x245df3,_0x285e54,_0x4bb6ec,_0x39fc41;_0x399713[_0xd1bc('0x5e')]=intUtil[_0xd1bc('0x5f')](_0x399713['serverUrl']);_0x399713[_0xd1bc('0x60')]=intUtil[_0xd1bc('0x5f')](_0x399713['remoteUri']);if(_0x23f2ef&&_0x23f2ef[_0xd1bc('0x61')]){logger[_0xd1bc('0x28')](_0xd1bc('0x62'),_0xd1bc('0x63'));_0xc59939[_0xd1bc('0x64')]=util[_0xd1bc('0x49')](_0xd1bc('0x65'),_0x399713[_0xd1bc('0x5e')],_0xc59939[_0xd1bc('0x66')],md5(_0xc59939[_0xd1bc('0x66')]));}else{_0xc59939[_0xd1bc('0x64')]='';}return getConnection(_0x399713)[_0xd1bc('0x25')](function(_0x531c29){_0x39fc41=_0x531c29;return getUser(_0x399713,_0x129fbb[_0xd1bc('0x67')],_0x39fc41);})[_0xd1bc('0x25')](function(_0x317efe){_0x245df3=_0x317efe;return getEndUser(_0x399713,_0x3ff690,_0xc59939['calleridname'],_0xc59939[_0xd1bc('0x68')],_0x39fc41);})[_0xd1bc('0x25')](function(_0x3751d1){_0x285e54=_0x3751d1;return getTicket(_0x399713,_0x245df3,_0x285e54,_0x3ff690,_0xc59939,_0x3ff690[_0xd1bc('0x69')],_0x39fc41,_0xd1bc('0x5d'));})[_0xd1bc('0x25')](function(_0x38110c){_0x4bb6ec=_0x38110c;logger['info'](_0xd1bc('0x6a'),_0x4bb6ec['id']);logger[_0xd1bc('0x28')]('[QUEUE]\x20Displaying\x20ticket\x20%s\x20to\x20agent\x20%s.\x20Integration\x20account\x20type\x20%s.',_0x4bb6ec['id'],_0x129fbb[_0xd1bc('0x54')],_0x399713[_0xd1bc('0x3f')]);switch(_0x399713[_0xd1bc('0x3f')]){case'integrationTab':emit(util[_0xd1bc('0x49')](_0xd1bc('0x6b'),_0x129fbb[_0xd1bc('0x54')]),'trigger:salesforce:display',{'recordId':_0x4bb6ec['id']});break;case _0xd1bc('0x6c'):emit(util[_0xd1bc('0x49')](_0xd1bc('0x6b'),_0x129fbb['name']),_0xd1bc('0x6d'),{'uri':util['format'](_0xd1bc('0x6e'),_0x39fc41[_0xd1bc('0x6f')],_0x4bb6ec['id'])});break;default:logger[_0xd1bc('0x70')](_0xd1bc('0x71'));}})[_0xd1bc('0x72')](function(_0x8de1a){logger['error'](_0xd1bc('0x62'),_0x8de1a);});};exports['outbound']=function(_0x3f0387,_0x4c10d9,_0x44bfa1,_0x19e594,_0x21099d,_0x4aca67,_0x20c920){var _0x2a33a3,_0x7c5009,_0x1e1215,_0x2215e4;_0x4aca67[_0xd1bc('0x5e')]=intUtil['stripTrailingSlash'](_0x4aca67['serverUrl']);_0x4aca67[_0xd1bc('0x60')]=intUtil['stripTrailingSlash'](_0x4aca67[_0xd1bc('0x60')]);if(_0x20c920&&_0x20c920[_0xd1bc('0x73')]&&_0x20c920['recordingFormat']!==_0xd1bc('0x74')){logger[_0xd1bc('0x28')](_0xd1bc('0x75'),_0xd1bc('0x63'));_0x4c10d9[_0xd1bc('0x64')]=util['format'](_0xd1bc('0x65'),_0x4aca67[_0xd1bc('0x5e')],_0x4c10d9[_0xd1bc('0x66')],md5(_0x4c10d9['uniqueid']));}return getConnection(_0x4aca67)[_0xd1bc('0x25')](function(_0x22823a){_0x2215e4=_0x22823a;return getUser(_0x4aca67,_0x19e594[_0xd1bc('0x67')],_0x2215e4);})[_0xd1bc('0x25')](function(_0x3508c3){_0x2a33a3=_0x3508c3;return getEndUser(_0x4aca67,_0x44bfa1,_0x4c10d9[_0xd1bc('0x76')],_0x4c10d9[_0xd1bc('0x77')],_0x2215e4);})[_0xd1bc('0x25')](function(_0x25c39e){_0x7c5009=_0x25c39e;return getTicket(_0x4aca67,_0x2a33a3,_0x7c5009,_0x44bfa1,_0x4c10d9,_0x44bfa1['Fields'],_0x2215e4,_0xd1bc('0x78'));})[_0xd1bc('0x25')](function(_0x23a412){_0x1e1215=_0x23a412;logger[_0xd1bc('0x28')](_0xd1bc('0x79'),_0x1e1215['id']);logger[_0xd1bc('0x28')](_0xd1bc('0x7a'),_0x1e1215['id'],_0x19e594[_0xd1bc('0x54')],_0x4aca67[_0xd1bc('0x3f')]);switch(_0x4aca67[_0xd1bc('0x3f')]){case _0xd1bc('0x7b'):emit(util[_0xd1bc('0x49')](_0xd1bc('0x6b'),_0x19e594[_0xd1bc('0x54')]),_0xd1bc('0x7c'),{'recordId':_0x1e1215['id']});break;case _0xd1bc('0x6c'):emit(util[_0xd1bc('0x49')](_0xd1bc('0x6b'),_0x19e594[_0xd1bc('0x54')]),_0xd1bc('0x6d'),{'uri':util[_0xd1bc('0x49')](_0xd1bc('0x6e'),_0x2215e4['instanceUrl'],_0x1e1215['id'])});break;default:logger[_0xd1bc('0x70')](_0xd1bc('0x75'),'Salesforce\x20account\x20type\x20not\x20recognized');}})[_0xd1bc('0x72')](function(_0x170d6e){logger['error'](_0xd1bc('0x75'),_0x170d6e);});};exports['unmanaged']=function(_0x23b79c,_0x469eaf,_0x308611,_0xa914e2,_0x561770,_0xa9b746){var _0x56dc49,_0x574dfe,_0x270c0c,_0x59d806;_0xa9b746[_0xd1bc('0x5e')]=intUtil['stripTrailingSlash'](_0xa9b746[_0xd1bc('0x5e')]);_0xa9b746[_0xd1bc('0x60')]=intUtil[_0xd1bc('0x5f')](_0xa9b746[_0xd1bc('0x60')]);if(_0x561770&&_0x561770['monitor_format']){logger[_0xd1bc('0x28')]('['+_0x469eaf[_0xd1bc('0x7d')]['toUpperCase']()+']','Recording\x20is\x20enabled!');_0x469eaf[_0xd1bc('0x64')]=util['format'](_0xd1bc('0x65'),_0xa9b746[_0xd1bc('0x5e')],_0x469eaf[_0xd1bc('0x66')],md5(_0x469eaf[_0xd1bc('0x66')]));}else{_0x469eaf[_0xd1bc('0x64')]='';}return getConnection(_0xa9b746)[_0xd1bc('0x25')](function(_0x36494b){_0x59d806=_0x36494b;if(!_[_0xd1bc('0x21')](_0xa914e2)){return getUser(_0xa9b746,_0xa914e2[_0xd1bc('0x54')],_0x59d806);}else{return getUser(_0xa9b746,null,_0x59d806);}})[_0xd1bc('0x25')](function(_0x107b4f){_0x56dc49=_0x107b4f;return getEndUser(_0xa9b746,_0x308611,_0x469eaf[_0xd1bc('0x7e')],_0x469eaf['calleridnum'],_0x59d806);})[_0xd1bc('0x25')](function(_0x2829e7){_0x574dfe=_0x2829e7;return getTicket(_0xa9b746,_0x56dc49,_0x574dfe,_0x308611,_0x469eaf,_0x308611[_0xd1bc('0x69')],_0x59d806);})[_0xd1bc('0x25')](function(_0x1da037){_0x270c0c=_0x1da037;logger['info']('['+_0x469eaf[_0xd1bc('0x7d')]['toUpperCase']()+']\x20Ticket\x20%s\x20created.',_0x270c0c['id']);logger[_0xd1bc('0x28')]('['+_0x469eaf['lastevent'][_0xd1bc('0x7f')]()+_0xd1bc('0x80'),_0xa9b746[_0xd1bc('0x3f')]);})[_0xd1bc('0x72')](function(_0xc8ea1f){logger['error']('['+_0x469eaf['lastevent'][_0xd1bc('0x7f')]()+']',_0xc8ea1f);});};
\ No newline at end of file
index 7ec5b49..93c8f20 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0xe747=['result','adminId','info','toUpperCase','],\x20getAdminUser\x20crm','catch','error','message','],\x20getUser\x20input\x20crm','validateEmail','userEmail','sys_user?sysparm_query=email%3D','],\x20getUser\x20rp\x20obj','],\x20getUser\x20entity','active','true','userId','sys_id','adminEmail','],\x20getUser\x20crm','],\x20createEndUser\x20input\x20crm','POST','sys_user?','endUserNumber','user','System','],\x20getEndUser\x20input\x20crm','sys_user?sysparm_query=phone%3D','endUserId','],\x20createEndUser\x20crm','length','forEach','includes','string','picklist','nameField','toLowerCase','content','toString','type','idField','variable','variableName','customField','customVariable','Variable','name','outbound','incident','assign','getString','Subjects','Fields',']\x20POST\x20incident\x20entity\x20schema','ticketId','ticketNumber','number','label','?sysparm_query=name%3D','Incident','push','all',']\x20arrayPromises:\x20IDs\x20in\x20table\x20label','Tags','map','%26sysparm_record_target%3Dincident','%26sysparm_record_list%3Dactive%253Dtrue','/nav_to.do?uri=incident.do?sys_id%3D','format','emit','username','password','sysparm_limit=1','sysparm_display_value=true','remoteUri','stripTrailingSlash','serverUrl','%s/api/now/table/','isNil','email','destcalleridnum','calleridnum','callDirection','queue','%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s','uniqueid','monitor_format','[QUEUE]','Recording\x20is\x20enabled!','recordingURL','recordingFormat','[OUTBOUND]','The\x20ticket\x20ID\x20is:\x20%s','call\x20direction:\x20%s','unmanaged',']\x20Error\x20running\x20ServiceNow\x20integration','inspect','lodash','bluebird','util','./util','../../../../config/environment','../../../../config/logger','servicenow','redis','localhost','socket.io-emitter','GET','sys_user?sysparm_query=user_name%3Dadmin','then'];(function(_0x20dd9b,_0x3c0fb8){var _0x2de3b0=function(_0x5673d2){while(--_0x5673d2){_0x20dd9b['push'](_0x20dd9b['shift']());}};_0x2de3b0(++_0x3c0fb8);}(_0xe747,0x13d));var _0x7e74=function(_0x459dbe,_0x421b0f){_0x459dbe=_0x459dbe-0x0;var _0x14f79b=_0xe747[_0x459dbe];return _0x14f79b;};'use strict';var _=require(_0x7e74('0x0'));var Promise=require(_0x7e74('0x1'));var rp=require('request-promise');var util=require(_0x7e74('0x2'));var md5=require('md5');var Redis=require('ioredis');var intUtil=require(_0x7e74('0x3'));var config=require(_0x7e74('0x4'));var logger=require(_0x7e74('0x5'))(_0x7e74('0x6'));config[_0x7e74('0x7')]=_['defaults'](config[_0x7e74('0x7')],{'host':_0x7e74('0x8'),'port':0x18eb});var io=require(_0x7e74('0x9'))(new Redis(config[_0x7e74('0x7')]));function getAdminUser(_0x5a62cb,_0x1b6141,_0x36504c,_0x17a2c7,_0x268678,_0x7386c6){return new Promise(function(_0x71b475,_0x522833){var _0x17e9d3={'method':_0x7e74('0xa'),'uri':_0x17a2c7+_0x7e74('0xb')+'&'+_0x268678+'&'+_0x7386c6,'auth':_0x1b6141,'json':!![]};return rp(_0x17e9d3)[_0x7e74('0xc')](function(_0x246bb6){if(_0x246bb6[_0x7e74('0xd')]['length']>0x0){_0x36504c[_0x7e74('0xe')]=_0x246bb6[_0x7e74('0xd')][0x0]['sys_id'];}logger[_0x7e74('0xf')]('['+[_0x5a62cb[_0x7e74('0x10')]()]+_0x7e74('0x11'),_0x36504c);_0x71b475(_0x36504c);})[_0x7e74('0x12')](function(_0x5c1abb){logger[_0x7e74('0x13')]('['+[_0x5a62cb['toUpperCase']()]+']',_0x5c1abb[_0x7e74('0x14')]);_0x522833(_0x5c1abb[_0x7e74('0x14')]);});});}function getUser(_0x382de5,_0x15dee9,_0x33c3e7,_0x475f0a,_0xc6453e){return function(_0x1e5bc7){logger[_0x7e74('0xf')]('['+[_0x382de5[_0x7e74('0x10')]()]+_0x7e74('0x15'),_0x1e5bc7);return new Promise(function(_0x2c5c90,_0x131abf){if(intUtil[_0x7e74('0x16')](_0x1e5bc7[_0x7e74('0x17')])){var _0x1551c9={'method':_0x7e74('0xa'),'uri':_0x33c3e7+_0x7e74('0x18')+_0x1e5bc7[_0x7e74('0x17')]+'&'+_0x475f0a+'&'+_0xc6453e,'auth':_0x15dee9,'json':!![]};logger[_0x7e74('0xf')]('['+[_0x382de5[_0x7e74('0x10')]()]+_0x7e74('0x19'),_0x1551c9);return rp(_0x1551c9)[_0x7e74('0xc')](function(_0x234741){logger[_0x7e74('0xf')]('['+[_0x382de5[_0x7e74('0x10')]()]+_0x7e74('0x1a'),_0x234741);if(_0x234741[_0x7e74('0xd')]['length']>0x0&&String(_0x234741[_0x7e74('0xd')][0x0][_0x7e74('0x1b')])===_0x7e74('0x1c')){_0x1e5bc7[_0x7e74('0x1d')]=_0x234741[_0x7e74('0xd')][0x0][_0x7e74('0x1e')];}else{_0x1e5bc7['userId']=_0x1e5bc7[_0x7e74('0xe')];_0x1e5bc7[_0x7e74('0x17')]=_0x1e5bc7[_0x7e74('0x1f')];}logger[_0x7e74('0xf')]('['+[_0x382de5[_0x7e74('0x10')]()]+_0x7e74('0x20'),_0x1e5bc7);_0x2c5c90(_0x1e5bc7);})[_0x7e74('0x12')](function(_0x174282){logger[_0x7e74('0x13')]('['+[_0x382de5[_0x7e74('0x10')]()]+']',_0x174282[_0x7e74('0x14')]);_0x131abf(_0x174282[_0x7e74('0x14')]);});}else{logger[_0x7e74('0xf')]('['+[_0x382de5[_0x7e74('0x10')]()]+']\x20using\x20admin\x20profile');_0x1e5bc7[_0x7e74('0x1d')]=_0x1e5bc7[_0x7e74('0xe')];_0x1e5bc7[_0x7e74('0x17')]=_0x1e5bc7[_0x7e74('0x1f')];_0x2c5c90(_0x1e5bc7);}});};}function createEndUser(_0x444935,_0x3e01d2,_0x2d6a54,_0x45a728,_0x56aacc){logger[_0x7e74('0xf')]('['+[_0x444935[_0x7e74('0x10')]()]+_0x7e74('0x21'),_0x2d6a54);return new Promise(function(_0x4086ff,_0x47c2b6){var _0x236d39={'method':_0x7e74('0x22'),'uri':_0x45a728+_0x7e74('0x23')+_0x56aacc,'body':{'user_name':_0x2d6a54[_0x7e74('0x24')],'roles':_0x7e74('0x25'),'first_name':_0x2d6a54[_0x7e74('0x24')],'active':_0x7e74('0x1c'),'date_format':_0x7e74('0x26'),'phone':_0x2d6a54[_0x7e74('0x24')]},'auth':_0x3e01d2,'json':!![]};return rp(_0x236d39)[_0x7e74('0xc')](function(_0x2b8379){logger[_0x7e74('0xf')]('['+[_0x444935[_0x7e74('0x10')]()]+'],\x20EndUser\x20schema',_0x2b8379['result']);_0x2d6a54['endUserId']=_0x2b8379['result'][_0x7e74('0x1e')];_0x4086ff(_0x2d6a54);})['catch'](function(_0x4bf1e9){logger[_0x7e74('0x13')]('['+[_0x444935[_0x7e74('0x10')]()]+']',_0x4bf1e9['message']);_0x47c2b6(_0x4bf1e9[_0x7e74('0x14')]);});});}function getEndUser(_0x163b7c,_0x1aca0b,_0x2f083e,_0x23c717,_0x5237fe){return function(_0x41e653){logger['info']('['+[_0x163b7c[_0x7e74('0x10')]()]+_0x7e74('0x27'),_0x41e653);return new Promise(function(_0x246309,_0x44784c){var _0x2bca0a={'method':'GET','uri':_0x2f083e+_0x7e74('0x28')+_0x41e653[_0x7e74('0x24')]+'&'+_0x23c717+'&'+_0x5237fe,'auth':_0x1aca0b,'json':!![]};return rp(_0x2bca0a)[_0x7e74('0xc')](function(_0x2f7f79){if(_0x2f7f79[_0x7e74('0xd')]['length']>0x0){_0x41e653[_0x7e74('0x29')]=_0x2f7f79['result'][0x0][_0x7e74('0x1e')];logger[_0x7e74('0xf')]('['+[_0x163b7c[_0x7e74('0x10')]()]+'],\x20getEndUser\x20crm',_0x41e653);_0x246309(_0x41e653);}else{return createEndUser(_0x163b7c,_0x1aca0b,_0x41e653,_0x2f083e,_0x23c717)['then'](function(_0x136a50){logger[_0x7e74('0xf')]('['+[_0x163b7c['toUpperCase']()]+_0x7e74('0x2a'),_0x136a50);_0x246309(_0x136a50);});}})[_0x7e74('0x12')](function(_0x20e764){logger['error']('['+[_0x163b7c[_0x7e74('0x10')]()]+']',_0x20e764[_0x7e74('0x14')]);_0x44784c(_0x20e764[_0x7e74('0x14')]);});});};}function getCustomFields(_0x4425d8,_0x47f402){var _0x4fb0ee={};if(_0x4425d8[_0x7e74('0x2b')]>0x0){_[_0x7e74('0x2c')](_0x4425d8,function(_0x38e153){if(_[_0x7e74('0x2d')]([_0x7e74('0x2e'),_0x7e74('0x2f')],_0x38e153['type'])&&_0x38e153['nameField']&&!_0x38e153['customField']){_0x4fb0ee[_0x38e153[_0x7e74('0x30')][_0x7e74('0x31')]()]=_0x38e153[_0x7e74('0x32')][_0x7e74('0x33')]();}else if(_['includes']([_0x7e74('0x2e'),'picklist'],_0x38e153[_0x7e74('0x34')])&&_0x38e153[_0x7e74('0x35')]&&_0x38e153['customField']){_0x4fb0ee[_0x38e153[_0x7e74('0x35')][_0x7e74('0x31')]()]=_0x38e153[_0x7e74('0x32')][_0x7e74('0x33')]();}else if(_0x38e153[_0x7e74('0x34')]===_0x7e74('0x36')&&_0x38e153[_0x7e74('0x37')]&&_0x38e153['idField']&&_0x38e153[_0x7e74('0x38')]){_0x4fb0ee[_0x38e153[_0x7e74('0x35')][_0x7e74('0x31')]()]=_0x47f402[_0x38e153['variableName']][_0x7e74('0x33')]();}else if(_0x38e153['type']===_0x7e74('0x39')&&_0x38e153[_0x7e74('0x3a')]&&_0x38e153[_0x7e74('0x3a')][_0x7e74('0x3b')]&&_0x38e153[_0x7e74('0x35')]&&_0x38e153[_0x7e74('0x38')]){_0x4fb0ee[_0x38e153[_0x7e74('0x35')][_0x7e74('0x31')]()]=_0x47f402[_0x38e153[_0x7e74('0x3a')][_0x7e74('0x3b')][_0x7e74('0x31')]()][_0x7e74('0x33')]();}});}return _0x4fb0ee;}function getTicket(_0x286467,_0x1dde78,_0x1d3136,_0x44a9dd,_0x169b2a,_0x2861df){return function(_0x4eb8f7){logger['info']('['+[_0x286467[_0x7e74('0x10')]()]+']\x20getTicket\x20input\x20crm',_0x4eb8f7);return new Promise(function(_0x4a5a5e,_0x2f7049){var _0x11588b=_0x286467[_0x7e74('0x31')]()===_0x7e74('0x3c')?_0x4eb8f7[_0x7e74('0x1d')]:_0x4eb8f7[_0x7e74('0x29')];var _0xa89f98={'method':_0x7e74('0x22'),'uri':_0x1d3136+_0x7e74('0x3d')+'?'+_0x2861df,'body':Object[_0x7e74('0x3e')]({},{'active':'true','caller_id':_0x11588b,'assigned_to':_0x4eb8f7['userId'],'short_description':intUtil[_0x7e74('0x3f')](_0x44a9dd[_0x7e74('0x40')],_0x169b2a,'\x20'),'description':intUtil['getString'](_0x44a9dd['Descriptions'],_0x169b2a,'\x0a')},getCustomFields(_0x44a9dd[_0x7e74('0x41')],_0x169b2a)),'auth':_0x1dde78,'json':!![]};return rp(_0xa89f98)[_0x7e74('0xc')](function(_0x255f60){logger['info']('['+[_0x286467['toUpperCase']()]+_0x7e74('0x42'),_0x255f60[_0x7e74('0xd')]);_0x4eb8f7[_0x7e74('0x43')]=_0x255f60['result'][_0x7e74('0x1e')];_0x4eb8f7[_0x7e74('0x44')]=_0x255f60['result'][_0x7e74('0x45')];logger[_0x7e74('0xf')]('['+[_0x286467[_0x7e74('0x10')]()]+']\x20getTicket\x20crm',_0x4eb8f7);_0x4a5a5e(_0x4eb8f7);})[_0x7e74('0x12')](function(_0x2159f5){logger[_0x7e74('0x13')]('['+[_0x286467['toUpperCase']()]+']',_0x2159f5['message']);_0x2f7049(_0x2159f5[_0x7e74('0x14')]);});});};}function createRemoteTag(_0x10a41b,_0x251b97,_0x314da2,_0x171c35){return new Promise(function(_0x2f0609,_0xc586c5){var _0x4b3980={'method':'POST','uri':_0x314da2+'label'+'?'+_0x171c35,'body':{'short_description':_0x10a41b,'global':!![],'active':!![],'name':_0x10a41b},'auth':_0x251b97,'json':!![]};return rp(_0x4b3980)['then'](function(_0x272623){var _0x39be8e=_0x272623['result'][_0x7e74('0x1e')];_0x2f0609(_0x39be8e);});});}function getRemoteTag(_0x3fe105,_0x307522,_0x1c5e20,_0x43b840,_0x4cfc4a){return new Promise(function(_0x3fbd05,_0x31cd9b){var _0x25dd1e={'method':_0x7e74('0xa'),'uri':_0x1c5e20+_0x7e74('0x46')+_0x7e74('0x47')+_0x3fe105+'&'+_0x43b840,'auth':_0x307522,'json':!![]};return rp(_0x25dd1e)[_0x7e74('0xc')](function(_0x3ec15e){if(_0x3ec15e[_0x7e74('0xd')]['length']>0x0){var _0x56eb0e=_0x3ec15e[_0x7e74('0xd')][0x0][_0x7e74('0x1e')];_0x3fbd05(_0x56eb0e);}else{return createRemoteTag(_0x3fe105,_0x307522,_0x1c5e20,_0x43b840)['then'](function(_0x2129e2){_0x3fbd05(_0x2129e2);});}});});}function assignTagToIncident(_0x19ef7d,_0x20ebd4,_0x174201,_0x2d2603,_0x447ff6){return new Promise(function(_0x55f7e6,_0x533598){var _0x36495a={'method':_0x7e74('0x22'),'uri':_0x174201+'label_entry'+'?'+_0x447ff6,'body':{'label':_0x19ef7d,'table':_0x7e74('0x3d'),'id_type':_0x7e74('0x48'),'table_key':_0x2d2603['ticketId'],'title':'Incident\x20-\x20'+_0x2d2603[_0x7e74('0x44')],'id_display':_0x2d2603['ticketNumber']},'auth':_0x20ebd4,'json':!![]};return rp(_0x36495a)[_0x7e74('0xc')](function(_0x115d63){_0x55f7e6();})[_0x7e74('0x12')](function(){_0x55f7e6();});});}function manageTags(_0x390452,_0x1925f6,_0x139ccb,_0x1bd8eb,_0x2071b7,_0x539561,_0x4b04f4){return new Promise(function(_0x4d7daa,_0x23335f){var _0x55ae3f=[];_0x1925f6['forEach'](function(_0x5c44af){_0x55ae3f[_0x7e74('0x49')](getRemoteTag(_0x5c44af,_0x139ccb,_0x1bd8eb,_0x539561,_0x4b04f4));});return Promise[_0x7e74('0x4a')](_0x55ae3f)[_0x7e74('0xc')](function(_0x2af78f){if(_0x2af78f[_0x7e74('0x2b')]){logger[_0x7e74('0xf')]('['+[_0x390452[_0x7e74('0x10')]()]+_0x7e74('0x4b'),_0x2af78f);var _0x35b9aa=[];_0x2af78f[_0x7e74('0x2c')](function(_0xad94a6){_0x35b9aa[_0x7e74('0x49')](assignTagToIncident(_0xad94a6,_0x139ccb,_0x1bd8eb,_0x2071b7,_0x539561));});return Promise[_0x7e74('0x4a')](_0x35b9aa)['then'](function(){_0x4d7daa();})[_0x7e74('0x12')](function(){_0x4d7daa();});}else{_0x4d7daa();}});});}function getTags(_0x13dd87,_0x47a78c,_0x29df07,_0x52d9bb,_0x5785c8,_0x5f23e1){return function(_0x5857d6){return new Promise(function(_0x11cf23,_0x1e4eb2){var _0x265932=[];var _0x2aafc7=_0x52d9bb[_0x7e74('0x4c')];if(_0x2aafc7&&_0x2aafc7['length']>0x0){_0x265932=_[_0x7e74('0x4d')](_0x2aafc7,_0x7e74('0x3b'));}if(_0x265932[_0x7e74('0x2b')]>0x0){return manageTags(_0x13dd87,_0x265932,_0x47a78c,_0x29df07,_0x5857d6,_0x5785c8,_0x5f23e1)['then'](function(){_0x11cf23(_0x5857d6);});}else{_0x11cf23(_0x5857d6);}});};}function emit(_0x51527d,_0x885958,_0x340b74){var _0x2f9ed3=_0x7e74('0x4e')+'%26sysparm_record_row%3D1%26sysparm_record_rows%3D39'+_0x7e74('0x4f')+'%255EORDERBYDESCnumber';var _0x484f38={'uri':_0x51527d+_0x7e74('0x50')+_0x340b74+_0x2f9ed3};io['to'](util[_0x7e74('0x51')]('user:%s',_0x885958))[_0x7e74('0x52')]('trigger:browser:url',_0x484f38);}exports['cs']=function(_0x5da659,_0x36dc1c,_0x5cfb77,_0xc73e82,_0x262257,_0x24920e,_0x59641f,_0x108dcb){var _0x20304f={};var _0x124d09={'user':_0x24920e[_0x7e74('0x53')],'pass':_0x24920e[_0x7e74('0x54')]};var _0xd50a8d=_0x7e74('0x55');var _0x3b6a12=_0x7e74('0x56');_0x24920e[_0x7e74('0x57')]=intUtil[_0x7e74('0x58')](_0x24920e['remoteUri']);_0x24920e[_0x7e74('0x59')]=intUtil[_0x7e74('0x58')](_0x24920e['serverUrl']);var _0x37dda6=util['format'](_0x7e74('0x5a'),_0x24920e[_0x7e74('0x57')]);_0x20304f[_0x7e74('0x17')]=!_[_0x7e74('0x5b')](_0xc73e82)?_0xc73e82[_0x7e74('0x5c')]:null;_0x20304f['adminEmail']=_0x24920e[_0x7e74('0x5c')];_0x20304f['endUserNumber']=_0x108dcb[_0x7e74('0x31')]()===_0x7e74('0x3c')?_0x36dc1c[_0x7e74('0x5d')]:_0x36dc1c[_0x7e74('0x5e')];_0x20304f[_0x7e74('0x5f')]=_0x108dcb===_0x7e74('0x60')||_0x108dcb==='unmanaged'?_0x7e74('0x60'):_0x7e74('0x3c');var _0x457704=util[_0x7e74('0x51')](_0x7e74('0x61'),_0x24920e[_0x7e74('0x59')],_0x36dc1c[_0x7e74('0x62')],md5(_0x36dc1c[_0x7e74('0x62')]));if(_0x262257&&_0x262257[_0x7e74('0x63')]){logger['info'](_0x7e74('0x64'),_0x7e74('0x65'));_0x36dc1c[_0x7e74('0x66')]=_0x457704;}else if(_0x59641f&&_0x59641f[_0x7e74('0x67')]&&_0x59641f[_0x7e74('0x67')]!=='none'){logger[_0x7e74('0xf')](_0x7e74('0x68'),_0x7e74('0x65'));_0x36dc1c[_0x7e74('0x66')]=_0x457704;}else{_0x36dc1c[_0x7e74('0x66')]='';}return getAdminUser(_0x108dcb,_0x124d09,_0x20304f,_0x37dda6,_0x3b6a12,_0xd50a8d)[_0x7e74('0xc')](getUser(_0x108dcb,_0x124d09,_0x37dda6,_0x3b6a12,_0xd50a8d))[_0x7e74('0xc')](getEndUser(_0x108dcb,_0x124d09,_0x37dda6,_0x3b6a12,_0xd50a8d))['then'](getTicket(_0x108dcb,_0x124d09,_0x37dda6,_0x5cfb77,_0x36dc1c,_0x3b6a12))[_0x7e74('0xc')](function(_0xc1e719){logger[_0x7e74('0xf')](util[_0x7e74('0x51')](_0x7e74('0x69'),_0xc1e719['ticketId']));logger[_0x7e74('0xf')](util[_0x7e74('0x51')](_0x7e74('0x6a'),_0x108dcb));if(_0x108dcb!==_0x7e74('0x6b')){logger[_0x7e74('0xf')]('['+[_0x108dcb[_0x7e74('0x10')]()]+']','Displaying\x20call\x20in\x20a\x20new\x20tab...');emit(_0x24920e[_0x7e74('0x57')],_0xc73e82[_0x7e74('0x3b')],_0xc1e719[_0x7e74('0x43')]);}})[_0x7e74('0x12')](function(_0x5e92a9){logger[_0x7e74('0x13')]('['+[_0x108dcb[_0x7e74('0x10')]()]+_0x7e74('0x6c'),util[_0x7e74('0x6d')](_0x5e92a9,{'showHidden':!![],'depth':null}));});};
\ No newline at end of file
index 20afbbf..9b8dfc9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0x563e=['user_id','Searching\x20enduser\x20with\x20phone','contacts.phone_home\x20=\x20\x22%s\x22','phone_home','Enduser\x20found!','Enduser\x20not\x20found,\x20creating\x20a\x20new\x20enduser!','<unknown>','Caller\x20-\x20%s','first_name','debug','merge','map','forEach','type','string','nameField','customField','content','custom_fields','push','variable','customVariable','Variable','POST','login','username','PLAIN','set_relationship','remoteUri','serverUrl','uri','%s/service/v4_1/rest.php','monitor_format','Recording\x20is\x20enabled!','recordingURL','%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s','uniqueid','The\x20User\x20ID\x20is:','calleridname','The\x20Enduser\x20ID\x20is:','Fields','Ticket\x20created!','The\x20Ticket\x20ID\x20is:','users','contacts','version','charAt','[QUEUE]','Displaying\x20ticket\x20to\x20agent\x20in\x20a\x20new\x20tab...','user:%s','trigger:browser:url','catch','error','outbound','stripTrailingSlash','recordingFormat','none','[OUTBOUND]','destcalleridname','destcalleridnum','%s/#bwc/index.php?module=Calls&action=EditView&record=%s','lastevent','toUpperCase','isNil','calleridnum','Inbound','lodash','util','ioredis','./util','../../../../config/environment','../../../../config/logger','sugarcrm','redis','defaults','socket.io-emitter','emit','info','Creating\x20new\x20ticket...','name','getString','Subjects','assigned_user_id','created_by','description','Descriptions','date_start','toISOString','slice','duration_hours','duration_minutes','parent_id','Contacts','parent_name','direction','variableName','idField','set_entry','JSON','stringify','Calls','format','Basic\x20%s','apiKey','toString','get_server_info','Getting\x20agent\x20with\x20name','get_entry_list','Employees','INSTR\x20(\x20users.user_name,\x20\x22%s\x22)\x20>\x200','user_name','then','entry_list','length','find','value','Agent\x20found!','resolve','name_value_list','Agent\x20not\x20found,\x20using\x20the\x20admin\x20account!'];(function(_0xe8d631,_0x3d89f4){var _0x4e9099=function(_0x5e9a2e){while(--_0x5e9a2e){_0xe8d631['push'](_0xe8d631['shift']());}};_0x4e9099(++_0x3d89f4);}(_0x563e,0x132));var _0xe563=function(_0x5180c3,_0x4b35f7){_0x5180c3=_0x5180c3-0x0;var _0x55c975=_0x563e[_0x5180c3];return _0x55c975;};'use strict';var _=require(_0xe563('0x0'));var rp=require('request-promise');var BPromise=require('bluebird');var md5=require('md5');var util=require(_0xe563('0x1'));var Redis=require(_0xe563('0x2'));var intUtil=require(_0xe563('0x3'));var config=require(_0xe563('0x4'));var logger=require(_0xe563('0x5'))(_0xe563('0x6'));config[_0xe563('0x7')]=_[_0xe563('0x8')](config[_0xe563('0x7')],{'host':'localhost','port':0x18eb});var io=require(_0xe563('0x9'))(new Redis(config[_0xe563('0x7')]));var def={'method':'POST','json':!![]};function emit(_0x4f87ae,_0x498c62,_0x12a5a1){io['to'](_0x4f87ae)[_0xe563('0xa')](_0x498c62,_0x12a5a1);}function getTicket(_0x4f418a,_0x1db3c3,_0x331e6d,_0x31e811,_0x3bb5dd,_0x24aa7b,_0x21c73c,_0x4a11d1){logger[_0xe563('0xb')](_0xe563('0xc'));var _0x394175=new Date();var _0x5dff6e=[{'name':_0xe563('0xd'),'value':intUtil[_0xe563('0xe')](_0x31e811[_0xe563('0xf')],_0x3bb5dd,'\x20')},{'name':_0xe563('0x10'),'value':_0x1db3c3['id']},{'name':_0xe563('0x11'),'value':_0x1db3c3['id']},{'name':_0xe563('0x12'),'value':intUtil[_0xe563('0xe')](_0x31e811[_0xe563('0x13')],_0x3bb5dd,'\x0a')},{'name':_0xe563('0x14'),'value':_0x394175[_0xe563('0x15')]()[_0xe563('0x16')](0x0,0x13)['replace']('T','\x20')},{'name':_0xe563('0x17'),'value':'0'},{'name':_0xe563('0x18'),'value':'15'},{'name':_0xe563('0x19'),'value':_0x331e6d['id']},{'name':'parent_type','value':_0xe563('0x1a')},{'name':_0xe563('0x1b'),'value':_0x331e6d[_0xe563('0xd')]},{'name':_0xe563('0x1c'),'value':_0x4a11d1}];if(_0x24aa7b['length']){_['forEach'](_0x24aa7b,function(_0x540eed){if(_0x3bb5dd[_0x540eed[_0xe563('0x1d')]]){_0x5dff6e['push']({'name':_0x540eed[_0xe563('0x1e')],'value':_0x3bb5dd[_0x540eed[_0xe563('0x1d')]]});}});}return request({'form':{'method':_0xe563('0x1f'),'input_type':_0xe563('0x20'),'response_type':_0xe563('0x20'),'rest_data':JSON[_0xe563('0x21')]({'session':_0x21c73c['id'],'module_name':_0xe563('0x22'),'name_value_list':_0x5dff6e})}});}function getAuth(_0x3d0bd3){return util[_0xe563('0x23')](_0xe563('0x24'),new Buffer(_0x3d0bd3[_0xe563('0x25')]+':X')[_0xe563('0x26')]('base64'));}function getServerInfo(_0x4dfd53){return request({'form':{'method':_0xe563('0x27'),'input_type':_0xe563('0x20'),'response_type':_0xe563('0x20'),'rest_data':JSON[_0xe563('0x21')]({'session':_0x4dfd53['id']})}});}function getUser(_0x1170cb,_0x3c6bfa,_0xa14697){if(!_['isNil'](_0x3c6bfa)){logger[_0xe563('0xb')](_0xe563('0x28'),_0x3c6bfa);return request({'form':{'method':_0xe563('0x29'),'input_type':_0xe563('0x20'),'response_type':_0xe563('0x20'),'rest_data':JSON[_0xe563('0x21')]({'session':_0xa14697['id'],'module_name':_0xe563('0x2a'),'query':util[_0xe563('0x23')](_0xe563('0x2b'),_0x3c6bfa),'order_by':'','offset':'0','select_fields':['id',_0xe563('0xd'),_0xe563('0x2c')],'link_name_to_fields_array':[],'max_results':-0x1,'deleted':'0'})}})[_0xe563('0x2d')](function(_0x240a3e){if(_0x240a3e[_0xe563('0x2e')][_0xe563('0x2f')]){var _0xeb6ec1=_[_0xe563('0x30')](_0x240a3e['entry_list'],function(_0x3f9da4){return _0x3f9da4['name_value_list'][_0xe563('0x2c')][_0xe563('0x31')]===_0x3c6bfa;});if(_0xeb6ec1){logger['info'](_0xe563('0x32'));return BPromise[_0xe563('0x33')]({'id':_0xeb6ec1[_0xe563('0x34')]['id'][_0xe563('0x31')],'name':_0xeb6ec1[_0xe563('0x34')][_0xe563('0xd')][_0xe563('0x31')]});}}logger[_0xe563('0xb')](_0xe563('0x35'));return BPromise[_0xe563('0x33')]({'id':_0xa14697['name_value_list']['user_id']['value'],'name':_0xa14697[_0xe563('0x34')][_0xe563('0x2c')]['value']});});}else{logger['info']('Agent\x20not\x20available,\x20using\x20the\x20admin\x20account!');return BPromise[_0xe563('0x33')]({'id':_0xa14697[_0xe563('0x34')][_0xe563('0x36')][_0xe563('0x31')],'name':_0xa14697[_0xe563('0x34')][_0xe563('0x2c')][_0xe563('0x31')]});}}function getEndUser(_0x1c8d2,_0x3f8e1a,_0xd30cf8,_0x1b16d6){logger[_0xe563('0xb')](_0xe563('0x37'),_0xd30cf8);return request({'form':{'method':'get_entry_list','input_type':_0xe563('0x20'),'response_type':_0xe563('0x20'),'rest_data':JSON[_0xe563('0x21')]({'session':_0x1b16d6['id'],'module_name':_0xe563('0x1a'),'query':util[_0xe563('0x23')](_0xe563('0x38'),_0xd30cf8),'order_by':'','offset':'0','select_fields':['id',_0xe563('0xd'),_0xe563('0x39')],'link_name_to_fields_array':[],'max_results':-0x1,'deleted':'0'})}})[_0xe563('0x2d')](function(_0xe3f7cf){if(_0xe3f7cf['entry_list'][_0xe563('0x2f')]){var _0x23b85f=_[_0xe563('0x30')](_0xe3f7cf['entry_list'],function(_0x286324){return _0x286324[_0xe563('0x34')][_0xe563('0x39')][_0xe563('0x31')]===_0xd30cf8;});if(_0x23b85f){logger[_0xe563('0xb')](_0xe563('0x3a'));return BPromise[_0xe563('0x33')]({'id':_0x23b85f[_0xe563('0x34')]['id']['value'],'name':_0x23b85f[_0xe563('0x34')][_0xe563('0xd')][_0xe563('0x31')],'phone':_0x23b85f['name_value_list']['phone_home']['value']});}}else{logger[_0xe563('0xb')](_0xe563('0x3b'));return request({'form':{'method':'set_entry','input_type':_0xe563('0x20'),'response_type':_0xe563('0x20'),'rest_data':JSON[_0xe563('0x21')]({'session':_0x1b16d6['id'],'module_name':'Contacts','name_value_list':[{'name':'first_name','value':_0x3f8e1a!==_0xe563('0x3c')?_0x3f8e1a:util[_0xe563('0x23')](_0xe563('0x3d'),_0xd30cf8)},{'name':_0xe563('0x39'),'value':_0xd30cf8}]})}})[_0xe563('0x2d')](function(_0x97669c){logger[_0xe563('0xb')]('Enduser\x20created.');return BPromise[_0xe563('0x33')]({'id':_0x97669c['id'],'name':_0x97669c[_0xe563('0x2e')][_0xe563('0x3e')][_0xe563('0x31')],'phone':_0x97669c[_0xe563('0x2e')]['phone_home']['value']});});}});}function request(_0xa16109){logger[_0xe563('0x3f')]('[HTTP]',JSON[_0xe563('0x21')](_0xa16109));return rp(_[_0xe563('0x40')](def,_0xa16109));}function getTags(_0x40464b,_0x21f788){var _0x8e2928=[];if(_0x40464b&&_0x40464b[_0xe563('0x2f')]>0x0){_0x8e2928=_[_0xe563('0x41')](_0x40464b,_0x21f788);}return _0x8e2928;}function getCustomFields(_0x121591,_0x4e01ce){var _0x290942=[];var _0x3ce9ed={'custom_fields':[]};if(_0x121591[_0xe563('0x2f')]>0x0){_[_0xe563('0x42')](_0x121591,function(_0x489477){if(_0x489477[_0xe563('0x43')]===_0xe563('0x44')&&_0x489477[_0xe563('0x45')]&&!_0x489477[_0xe563('0x46')]){_0x3ce9ed[_0x489477['nameField']['toLowerCase']()]=_0x489477[_0xe563('0x47')][_0xe563('0x26')]();}else if(_0x489477[_0xe563('0x43')]==='string'&&_0x489477[_0xe563('0x1e')]&&_0x489477[_0xe563('0x46')]){_0x3ce9ed[_0xe563('0x48')][_0xe563('0x49')]({'id':_0x489477[_0xe563('0x1e')],'value':_0x489477['content'][_0xe563('0x26')]()});}else if(_0x489477[_0xe563('0x43')]===_0xe563('0x4a')&&_0x489477['variableName']&&_0x489477[_0xe563('0x1e')]&&_0x489477[_0xe563('0x46')]){_0x4e01ce[_0x489477[_0xe563('0x1d')]]&&_0x3ce9ed[_0xe563('0x48')][_0xe563('0x49')]({'id':_0x489477[_0xe563('0x1e')],'value':_0x4e01ce[_0x489477[_0xe563('0x1d')]]['toString']()});}else if(_0x489477[_0xe563('0x43')]===_0xe563('0x4b')&&_0x489477[_0xe563('0x4c')]&&_0x489477[_0xe563('0x4c')]['name']&&_0x489477[_0xe563('0x1e')]&&_0x489477[_0xe563('0x46')]){_0x4e01ce[_0x489477[_0xe563('0x4c')][_0xe563('0xd')]['toLowerCase']()]&&_0x3ce9ed[_0xe563('0x48')][_0xe563('0x49')]({'id':_0x489477[_0xe563('0x1e')],'value':_0x4e01ce[_0x489477[_0xe563('0x4c')][_0xe563('0xd')]['toLowerCase']()][_0xe563('0x26')]()});}});}return _0x3ce9ed;}function getConnection(_0x4ff35d){return request({'method':_0xe563('0x4d'),'form':{'method':_0xe563('0x4e'),'input_type':_0xe563('0x20'),'response_type':_0xe563('0x20'),'rest_data':JSON[_0xe563('0x21')]({'user_auth':{'user_name':_0x4ff35d[_0xe563('0x4f')],'password':_0x4ff35d['password'],'encryption':_0xe563('0x50')},'application':'xCALLY\x20Motion\x20integration'})}})[_0xe563('0x2d')](function(_0x358b7e){var _0x2625ca=_0x358b7e;if(_0x2625ca['id']){def['sessionID']=_0x2625ca['id'];return BPromise['resolve'](_0x2625ca);}else{throw new Error(util[_0xe563('0x23')]('Account\x20%d\x20is\x20not\x20valid',_0x4ff35d['id']));}});}function setRelationship(_0x17a80a,_0x45e0c9,_0x57d0d8,_0x117356){return request({'form':{'method':_0xe563('0x51'),'input_type':'JSON','response_type':'JSON','rest_data':JSON[_0xe563('0x21')]({'session':_0x17a80a['id'],'module_name':_0xe563('0x22'),'module_id':_0x57d0d8['id'],'link_field_name':_0x117356,'related_ids':[_0x45e0c9['id']],'name_value_list':[],'delete':0x0})}});}exports['queue']=function(_0xdfca56,_0x5f3075,_0x19c12e,_0x3af17f,_0x1c5447,_0x167b10){var _0x44262d,_0x10b319,_0xb8d7c0,_0x33a5e8;_0x167b10[_0xe563('0x52')]=intUtil['stripTrailingSlash'](_0x167b10[_0xe563('0x52')]);_0x167b10['serverUrl']=intUtil['stripTrailingSlash'](_0x167b10[_0xe563('0x53')]);def[_0xe563('0x54')]=util[_0xe563('0x23')](_0xe563('0x55'),_0x167b10[_0xe563('0x52')]);if(_0x1c5447&&_0x1c5447[_0xe563('0x56')]){logger[_0xe563('0xb')]('[QUEUE]',_0xe563('0x57'));_0x5f3075[_0xe563('0x58')]=util[_0xe563('0x23')](_0xe563('0x59'),_0x167b10[_0xe563('0x53')],_0x5f3075[_0xe563('0x5a')],md5(_0x5f3075[_0xe563('0x5a')]));}else{_0x5f3075['recordingURL']='';}return getConnection(_0x167b10)[_0xe563('0x2d')](function(_0x4ef95d){_0x33a5e8=_0x4ef95d;return getUser(_0x167b10,_0x3af17f[_0xe563('0xd')],_0x33a5e8);})[_0xe563('0x2d')](function(_0x5365c5){_0x44262d=_0x5365c5;logger[_0xe563('0xb')](_0xe563('0x5b'),_0x44262d['id']);return getEndUser(_0x167b10,_0x5f3075[_0xe563('0x5c')],_0x5f3075['calleridnum'],_0x33a5e8);})['then'](function(_0x20f330){_0x10b319=_0x20f330;logger[_0xe563('0xb')](_0xe563('0x5d'),_0x10b319['id']);return getTicket(_0x167b10,_0x44262d,_0x10b319,_0x19c12e,_0x5f3075,_0x19c12e[_0xe563('0x5e')],_0x33a5e8,'Inbound');})[_0xe563('0x2d')](function(_0x11ac66){_0xb8d7c0=_0x11ac66;logger[_0xe563('0xb')](_0xe563('0x5f'));logger[_0xe563('0xb')](_0xe563('0x60'),_0xb8d7c0['id']);return setRelationship(_0x33a5e8,_0x44262d,_0xb8d7c0,_0xe563('0x61'));})['then'](function(){return setRelationship(_0x33a5e8,_0x10b319,_0xb8d7c0,_0xe563('0x62'));})[_0xe563('0x2d')](function(){return getServerInfo(_0x33a5e8);})['then'](function(_0x3ad53f){var _0x4cfd52=parseInt(_0x3ad53f[_0xe563('0x63')][_0xe563('0x64')](0x0));var _0x3f11c6=util[_0xe563('0x23')]('%s/index.php?action=ajaxui#ajaxUILoc=index.php%3Fmodule%3DCalls%26action%3DEditView%26record%3D%s',_0x167b10[_0xe563('0x52')],_0xb8d7c0['id']);if(_0x4cfd52>0x6){_0x3f11c6=util[_0xe563('0x23')]('%s/#bwc/index.php?module=Calls&action=EditView&record=%s',_0x167b10[_0xe563('0x52')],_0xb8d7c0['id']);}logger[_0xe563('0xb')](_0xe563('0x65'),_0xe563('0x66'));emit(util[_0xe563('0x23')](_0xe563('0x67'),_0x3af17f[_0xe563('0xd')]),_0xe563('0x68'),{'uri':_0x3f11c6});})[_0xe563('0x69')](function(_0x5a4b05){logger[_0xe563('0x6a')](_0xe563('0x65'),JSON[_0xe563('0x21')](_0x5a4b05));});};exports[_0xe563('0x6b')]=function(_0x50026f,_0x58e3f8,_0x47d4d9,_0x27da32,_0x2135ab,_0x395e28,_0x30168d){var _0x3992ac,_0x2eceae,_0x320c18,_0x39dcae;_0x395e28[_0xe563('0x52')]=intUtil['stripTrailingSlash'](_0x395e28['remoteUri']);_0x395e28[_0xe563('0x53')]=intUtil[_0xe563('0x6c')](_0x395e28[_0xe563('0x53')]);def[_0xe563('0x54')]=util[_0xe563('0x23')](_0xe563('0x55'),_0x395e28['remoteUri']);if(_0x30168d&&_0x30168d[_0xe563('0x6d')]&&_0x30168d[_0xe563('0x6d')]!==_0xe563('0x6e')){logger[_0xe563('0xb')](_0xe563('0x6f'),_0xe563('0x57'));_0x58e3f8[_0xe563('0x58')]=util[_0xe563('0x23')](_0xe563('0x59'),_0x395e28[_0xe563('0x53')],_0x58e3f8[_0xe563('0x5a')],md5(_0x58e3f8['uniqueid']));}return getConnection(_0x395e28)[_0xe563('0x2d')](function(_0x534f07){_0x39dcae=_0x534f07;return getUser(_0x395e28,_0x27da32[_0xe563('0xd')],_0x39dcae);})[_0xe563('0x2d')](function(_0x2d9abd){_0x3992ac=_0x2d9abd;logger['info'](_0xe563('0x5b'),_0x3992ac['id']);return getEndUser(_0x395e28,_0x58e3f8[_0xe563('0x70')],_0x58e3f8[_0xe563('0x71')],_0x39dcae);})[_0xe563('0x2d')](function(_0x2bb0df){_0x2eceae=_0x2bb0df;logger[_0xe563('0xb')](_0xe563('0x5d'),_0x2eceae['id']);return getTicket(_0x395e28,_0x3992ac,_0x2eceae,_0x47d4d9,_0x58e3f8,_0x47d4d9[_0xe563('0x5e')],_0x39dcae,'Outbound');})[_0xe563('0x2d')](function(_0x32d775){_0x320c18=_0x32d775;logger[_0xe563('0xb')](_0xe563('0x5f'));logger[_0xe563('0xb')]('The\x20Ticket\x20ID\x20is:',_0x320c18['id']);return setRelationship(_0x39dcae,_0x3992ac,_0x320c18,_0xe563('0x61'));})[_0xe563('0x2d')](function(){return setRelationship(_0x39dcae,_0x2eceae,_0x320c18,_0xe563('0x62'));})[_0xe563('0x2d')](function(){return getServerInfo(_0x39dcae);})[_0xe563('0x2d')](function(_0x51c074){var _0x1999fc=parseInt(_0x51c074['version'][_0xe563('0x64')](0x0));var _0x5dc84a=util['format']('%s/index.php?action=ajaxui#ajaxUILoc=index.php%3Fmodule%3DCalls%26action%3DEditView%26record%3D%s',_0x395e28[_0xe563('0x52')],_0x320c18['id']);if(_0x1999fc>0x6){_0x5dc84a=util[_0xe563('0x23')](_0xe563('0x72'),_0x395e28['remoteUri'],_0x320c18['id']);}logger[_0xe563('0xb')]('[OUTBOUND]',_0xe563('0x66'));emit(util['format'](_0xe563('0x67'),_0x27da32['name']),'trigger:browser:url',{'uri':_0x5dc84a});})[_0xe563('0x69')](function(_0x17c7a3){logger[_0xe563('0x6a')]('[OUTBOUND]',JSON['stringify'](_0x17c7a3));});};exports['unmanaged']=function(_0x37a26c,_0x5caae7,_0x4c3c00,_0x2a6fa4,_0x577977,_0x3f1098){var _0x19f674,_0x204d17,_0x3ecd84,_0x5409da;_0x3f1098[_0xe563('0x52')]=intUtil[_0xe563('0x6c')](_0x3f1098[_0xe563('0x52')]);_0x3f1098[_0xe563('0x53')]=intUtil[_0xe563('0x6c')](_0x3f1098[_0xe563('0x53')]);def[_0xe563('0x54')]=util[_0xe563('0x23')]('%s/service/v4_1/rest.php',_0x3f1098[_0xe563('0x52')]);if(_0x577977&&_0x577977[_0xe563('0x56')]){logger['info']('['+_0x5caae7[_0xe563('0x73')][_0xe563('0x74')]()+']',_0xe563('0x57'));_0x5caae7[_0xe563('0x58')]=util[_0xe563('0x23')](_0xe563('0x59'),_0x3f1098['serverUrl'],_0x5caae7[_0xe563('0x5a')],md5(_0x5caae7[_0xe563('0x5a')]));}else{_0x5caae7[_0xe563('0x58')]='';}return getConnection(_0x3f1098)[_0xe563('0x2d')](function(_0x4fdfe7){_0x5409da=_0x4fdfe7;if(!_[_0xe563('0x75')](_0x2a6fa4)){return getUser(_0x3f1098,_0x2a6fa4[_0xe563('0xd')],_0x5409da);}else{return getUser(_0x3f1098,null,_0x5409da);}})['then'](function(_0x6ed4ec){_0x19f674=_0x6ed4ec;logger['info'](_0xe563('0x5b'),_0x19f674['id']);return getEndUser(_0x3f1098,_0x5caae7[_0xe563('0x5c')],_0x5caae7[_0xe563('0x76')],_0x5409da);})[_0xe563('0x2d')](function(_0x25f279){_0x204d17=_0x25f279;logger['info'](_0xe563('0x5d'),_0x204d17['id']);return getTicket(_0x3f1098,_0x19f674,_0x204d17,_0x4c3c00,_0x5caae7,_0x4c3c00[_0xe563('0x5e')],_0x5409da,_0xe563('0x77'));})[_0xe563('0x2d')](function(_0x344280){_0x3ecd84=_0x344280;logger[_0xe563('0xb')](_0xe563('0x5f'));logger[_0xe563('0xb')](_0xe563('0x60'),_0x3ecd84['id']);return setRelationship(_0x5409da,_0x19f674,_0x3ecd84,_0xe563('0x61'));})[_0xe563('0x2d')](function(){return setRelationship(_0x5409da,_0x204d17,_0x3ecd84,_0xe563('0x62'));})['then'](function(){return getServerInfo(_0x5409da);})[_0xe563('0x69')](function(_0x5f2425){logger[_0xe563('0x6a')]('['+_0x5caae7['lastevent'][_0xe563('0x74')]()+']',JSON['stringify'](_0x5f2425));});};
\ No newline at end of file
index aa6d3a9..33424a5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0x7a1a=['push','variable','variableName','customVariable','Variable','name','toLowerCase','toString','keyValue','format','%s:\x20%s','keyContent','keyType','key','join','slice','validateEmail','isNil','test','lodash','util','getString','sortBy','length','type','string'];(function(_0x39670c,_0x508635){var _0x36f777=function(_0x79268b){while(--_0x79268b){_0x39670c['push'](_0x39670c['shift']());}};_0x36f777(++_0x508635);}(_0x7a1a,0x95));var _0xa7a1=function(_0x4393c4,_0x57481e){_0x4393c4=_0x4393c4-0x0;var _0x46b401=_0x7a1a[_0x4393c4];return _0x46b401;};'use strict';var _=require(_0xa7a1('0x0'));var util=require(_0xa7a1('0x1'));exports[_0xa7a1('0x2')]=function(_0x4420a0,_0x57a438,_0x2d9591){var _0x26dc92=[];if(_0x4420a0['length']>0x0){var _0x2f601a=_[_0xa7a1('0x3')](_0x4420a0,['id']);for(var _0x14b2a2=0x0;_0x14b2a2<_0x2f601a[_0xa7a1('0x4')];_0x14b2a2++){var _0x38847f=_0x2f601a[_0x14b2a2];if(_0x38847f[_0xa7a1('0x5')]===_0xa7a1('0x6')){_0x26dc92[_0xa7a1('0x7')](_0x38847f['content']);}else if(_0x38847f[_0xa7a1('0x5')]===_0xa7a1('0x8')&&_0x38847f[_0xa7a1('0x9')]){_0x57a438[_0x38847f['variableName']]&&_0x26dc92[_0xa7a1('0x7')](_0x57a438[_0x38847f[_0xa7a1('0x9')]]['toString']());}else if(_0x38847f[_0xa7a1('0x5')]===_0xa7a1('0xa')&&_0x38847f[_0xa7a1('0xb')]&&_0x38847f[_0xa7a1('0xb')][_0xa7a1('0xc')]){_0x57a438[_0x38847f['Variable'][_0xa7a1('0xc')][_0xa7a1('0xd')]()]&&_0x26dc92[_0xa7a1('0x7')](_0x57a438[_0x38847f[_0xa7a1('0xb')]['name']['toLowerCase']()][_0xa7a1('0xe')]());}else if(_0x38847f[_0xa7a1('0x5')]===_0xa7a1('0xf')){if(_0x38847f['keyType']===_0xa7a1('0x6')&&_0x38847f['key']){_0x26dc92[_0xa7a1('0x7')](util[_0xa7a1('0x10')](_0xa7a1('0x11'),_0x38847f['key'],_0x38847f[_0xa7a1('0x12')]));}else if(_0x38847f[_0xa7a1('0x13')]==='variable'&&_0x38847f[_0xa7a1('0x9')]&&_0x38847f[_0xa7a1('0x14')]){_0x57a438[_0x38847f[_0xa7a1('0x9')]]&&_0x26dc92[_0xa7a1('0x7')](util['format'](_0xa7a1('0x11'),_0x38847f[_0xa7a1('0x14')],_0x57a438[_0x38847f[_0xa7a1('0x9')]]));}else if(_0x38847f[_0xa7a1('0x13')]===_0xa7a1('0xa')&&_0x38847f[_0xa7a1('0xb')]&&_0x38847f[_0xa7a1('0xb')]['name']&&_0x38847f['key']){_0x57a438[_0x38847f[_0xa7a1('0xb')][_0xa7a1('0xc')][_0xa7a1('0xd')]()]&&_0x26dc92[_0xa7a1('0x7')](util[_0xa7a1('0x10')]('%s:\x20%s',_0x38847f[_0xa7a1('0x14')],_0x57a438[_0x38847f['Variable'][_0xa7a1('0xc')][_0xa7a1('0xd')]()]));}}}}return _0x26dc92[_0xa7a1('0x15')](_0x2d9591);};exports['stripTrailingSlash']=function(_0x156e18){var _0x145847=_0x156e18[_0xa7a1('0x16')](-0x1);if(_0x145847==='/'){_0x156e18=_0x156e18['substring'](0x0,_0x156e18['lastIndexOf'](_0x145847));}return _0x156e18;};exports[_0xa7a1('0x17')]=function(_0x5589a5){if(!_[_0xa7a1('0x18')](_0x5589a5)&&_0x5589a5!==''){var _0x4048ba=/^(([^<>()\[\]\\.,;:\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 _0x4048ba[_0xa7a1('0x19')](String(_0x5589a5)[_0xa7a1('0xd')]());}else{return![];}};
\ No newline at end of file
index 25d751f..6110f0e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9c44=['stringify','validateEmail','Getting\x20agent\x20with\x20email','GET','%s/webservice.php','SELECT\x20first_name,\x20last_name,\x20email1\x20FROM\x20Users\x20WHERE\x20email1=\x27%s\x27;','success','length','Agent\x20found!','email1','first_name','last_name','Agent\x20not\x20found,\x20using\x20the\x20admin\x20account!','userId','getUser','admin','Searching\x20end\x20user\x20with\x20phone','SELECT\x20id,\x20firstname,\x20lastname,\x20email,\x20phone,\x20mobile,\x20homephone,\x20otherphone,\x20assistantphone\x20FROM\x20Contacts\x20WHERE\x20phone\x20=\x20\x27%s\x27\x20OR\x20mobile\x20=\x27%s\x27\x20OR\x20homephone\x20=\x27%s\x27\x20OR\x20otherphone\x20=\x27%s\x27\x20OR\x20assistantphone\x20=\x27%s\x27;','Enduser\x20found!','firstname','lastname','Enduser\x20not\x20found,\x20creating\x20a\x20new\x20enduser!','Contacts','Enduser\x20created.','phone','getEndUser','accessKey','login','Account\x20%d\x20is\x20not\x20valid','getConnection','[HTTP]','queue','stripTrailingSlash','[QUEUE]','%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s','serverUrl','uniqueid','recordingURL','email','The\x20User\x20ID\x20is:','calleridname','The\x20Enduser\x20ID\x20is:','Fields','The\x20Ticket\x20ID\x20is:','split','Displaying\x20ticket\x20to\x20agent\x20in\x20a\x20new\x20tab...','user:%s','recordingFormat','none','[OUTBOUND]','Recording\x20is\x20enabled!','destcalleridname','destcalleridnum','Ticket\x20created!','%s/index.php?module=HelpDesk&view=Detail&record=%s&app=SUPPORT','trigger:browser:url','unmanaged','monitor_format','toUpperCase','calleridnum','lastevent','bluebird','md5','util','ioredis','./util','../../../../config/environment','redis','localhost','socket.io-emitter','emit','forEach','string','picklist','idField','content','type','variable','variableName','toString','customVariable','Variable','name','toLowerCase','info','Creating\x20new\x20ticket...','merge','Normal','Open','getString','Subjects','POST','remoteUri','create','username','sessionName','then','resolve','result','format','Ticket\x20could\x20not\x20be\x20created\x20due\x20to:\x20%s','catch','statusCode','error','[vTiger],\x20%s,\x20%s,\x20%s'];(function(_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
+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(_0x1e06e9,_0x4ff96c){var _0xf21f64=function(_0x90e328){while(--_0x90e328){_0x1e06e9['push'](_0x1e06e9['shift']());}};_0xf21f64(++_0x4ff96c);}(_0x9c44,0x178));var _0x49c4=function(_0x167cc1,_0x56ef5a){_0x167cc1=_0x167cc1-0x0;var _0x10bc4b=_0x9c44[_0x167cc1];return _0x10bc4b;};'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 d135019..d51bb5a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0x586e=['trigger:browser:url','%s/agent/tickets/%s','replace','/api/v2','error','Zendesk\x20account\x20type\x20not\x20recognized','catch','[QUEUE]\x20Error\x20running\x20Zendesk\x20integration','inspect','recordingFormat','none','[OUTBOUND]','destcalleridnum','POST','[OUTBOUND]\x20Error\x20running\x20Zendesk\x20integration','unmanaged','toUpperCase','calleridname','lastevent','\x20Error\x20running\x20Zendesk\x20integration','md5','util','./util','zendesk','redis','defaults','socket.io-emitter','emit','application/json','Creating\x20new\x20ticket...','format','%s/tickets.json','remoteUri','merge','Tags','name','getString','Subjects','Descriptions','Ticket\x20created!','validateEmail','info','Getting\x20agent\x20with\x20email','%s/search.json','type:user\x20role:agent\x20email:%s','then','count','Agent\x20found!','find','results','agent','Agent\x20not\x20found,\x20using\x20the\x20admin\x20account!','%s/users/me.json','user','Admin\x20account\x20selected.','Searching\x20enduser\x20with\x20phone','type:user\x20role:end-user\x20phone:%s','filter','end-user','length','first','Enduser\x20not\x20found,\x20creating\x20a\x20new\x20enduser!','%s/users.json','Caller\x20-\x20%s','Enduser\x20created.','password','username','authType','%s/token:%s','token','Basic\x20%s','toString','debug','stringify','GET','map','forEach','includes','string','picklist','type','customField','nameField','toLowerCase','content','idField','custom_fields','variable','push','customVariable','Variable','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','The\x20Enduser\x20ID\x20is:','The\x20Ticket\x20ID\x20is:','integrationTab','Displaying\x20ticket\x20to\x20agent...','newTab','Displaying\x20ticket\x20to\x20agent\x20in\x20a\x20new\x20tab...','user:%s'];(function(_0x1ca890,_0x21d0d3){var _0x3f8e01=function(_0x4ff2e2){while(--_0x4ff2e2){_0x1ca890['push'](_0x1ca890['shift']());}};_0x3f8e01(++_0x21d0d3);}(_0x586e,0xf0));var _0xe586=function(_0x1de4b8,_0x529b41){_0x1de4b8=_0x1de4b8-0x0;var _0x557699=_0x586e[_0x1de4b8];return _0x557699;};'use strict';var _=require('lodash');var rp=require('request-promise');var md5=require(_0xe586('0x0'));var util=require(_0xe586('0x1'));var Redis=require('ioredis');var intUtil=require(_0xe586('0x2'));var config=require('../../../../config/environment');var logger=require('../../../../config/logger')(_0xe586('0x3'));config[_0xe586('0x4')]=_[_0xe586('0x5')](config[_0xe586('0x4')],{'host':'localhost','port':0x18eb});var io=require(_0xe586('0x6'))(new Redis(config[_0xe586('0x4')]));function emit(_0x17607a,_0x29d462,_0x4b86c2){io['to'](_0x17607a)[_0xe586('0x7')](_0x29d462,_0x4b86c2);}var headers={'Content-Type':_0xe586('0x8'),'Accept':'application/json'};function getTicket(_0x45472b,_0x49511f,_0x3a2d12,_0x461802,_0x14beef){logger['info'](_0xe586('0x9'));return request({'uri':util[_0xe586('0xa')](_0xe586('0xb'),_0x45472b[_0xe586('0xc')]),'method':'POST','body':{'ticket':_[_0xe586('0xd')]({'requester_id':_0x3a2d12['id'],'submitter_id':_0x49511f?_0x49511f['id']:undefined,'assignee_id':_0x49511f?_0x49511f['id']:undefined,'tags':getTags(_0x461802[_0xe586('0xe')],_0xe586('0xf')),'subject':intUtil[_0xe586('0x10')](_0x461802[_0xe586('0x11')],_0x14beef,'\x20'),'description':intUtil['getString'](_0x461802[_0xe586('0x12')],_0x14beef,'\x0a'),'comment':{'public':![],'body':intUtil['getString'](_0x461802['Descriptions'],_0x14beef,'\x0a')}},getCustomFields(_0x461802['Fields'],_0x14beef))}})['then'](function(_0x1f4784){logger['info'](_0xe586('0x13'));return _0x1f4784['ticket'];});}function getUser(_0xf5a065,_0xdafcd1){if(intUtil[_0xe586('0x14')](_0xdafcd1)){logger[_0xe586('0x15')](_0xe586('0x16'),_0xdafcd1);return request({'uri':util[_0xe586('0xa')](_0xe586('0x17'),_0xf5a065[_0xe586('0xc')]),'qs':{'query':util[_0xe586('0xa')](_0xe586('0x18'),_0xdafcd1)}})[_0xe586('0x19')](function(_0x4a5c51){if(_0x4a5c51[_0xe586('0x1a')]){logger[_0xe586('0x15')](_0xe586('0x1b'));return _[_0xe586('0x1c')](_0x4a5c51[_0xe586('0x1d')],{'email':_0xdafcd1,'role':_0xe586('0x1e')});}else{logger[_0xe586('0x15')](_0xe586('0x1f'));return request({'uri':util[_0xe586('0xa')](_0xe586('0x20'),_0xf5a065['remoteUri'])})[_0xe586('0x19')](function(_0x41916d){logger[_0xe586('0x15')]('Admin\x20account\x20selected.');return _0x41916d[_0xe586('0x21')];});}});}else{logger[_0xe586('0x15')](_0xe586('0x1f'));return request({'uri':util[_0xe586('0xa')]('%s/users/me.json',_0xf5a065['remoteUri'])})['then'](function(_0x11bfac){logger[_0xe586('0x15')](_0xe586('0x22'));return _0x11bfac[_0xe586('0x21')];});}}function getEndUser(_0x1507b5,_0x576d62,_0x2f90c7){logger[_0xe586('0x15')](_0xe586('0x23'),_0x2f90c7);return request({'uri':util[_0xe586('0xa')]('%s/search.json',_0x1507b5['remoteUri']),'qs':{'query':util[_0xe586('0xa')](_0xe586('0x24'),_0x2f90c7)}})['then'](function(_0x4e2c69){var _0x1a2505;if(_0x4e2c69[_0xe586('0x1d')]['length']){_0x4e2c69['results']=_[_0xe586('0x25')](_0x4e2c69[_0xe586('0x1d')],{'suspended':![],'role':_0xe586('0x26')});if(_0x4e2c69[_0xe586('0x1d')][_0xe586('0x27')]){_0x1a2505=_[_0xe586('0x28')](_0x4e2c69['results']);}}if(_0x1a2505){logger['info']('Enduser\x20found!');return _0x1a2505;}else{logger[_0xe586('0x15')](_0xe586('0x29'));return request({'uri':util[_0xe586('0xa')](_0xe586('0x2a'),_0x1507b5[_0xe586('0xc')]),'method':'POST','body':{'user':{'role':_0xe586('0x26'),'name':util[_0xe586('0xa')](_0xe586('0x2b'),_0x576d62||_0x2f90c7),'phone':_0x2f90c7}}})[_0xe586('0x19')](function(_0x53c01c){logger[_0xe586('0x15')](_0xe586('0x2c'));return _0x53c01c[_0xe586('0x21')];});}});}function getAuth(_0x5c60f5){var _0x33d078;if(_0x5c60f5['authType']===_0xe586('0x2d')){_0x33d078=util[_0xe586('0xa')]('%s:%s',_0x5c60f5[_0xe586('0x2e')],_0x5c60f5['password']);}else if(_0x5c60f5[_0xe586('0x2f')]==='token'){_0x33d078=util[_0xe586('0xa')](_0xe586('0x30'),_0x5c60f5[_0xe586('0x2e')],_0x5c60f5[_0xe586('0x31')]);}return util[_0xe586('0xa')](_0xe586('0x32'),new Buffer(_0x33d078)[_0xe586('0x33')]('base64'));}function request(_0x5b411d){logger[_0xe586('0x34')]('[HTTP]',JSON[_0xe586('0x35')](_0x5b411d));return rp(_[_0xe586('0x5')](_0x5b411d,{'method':_0xe586('0x36'),'headers':headers,'json':!![]}));}function getTags(_0x2a5527,_0x1d855a){var _0x4edb5b=[];if(_0x2a5527&&_0x2a5527[_0xe586('0x27')]>0x0){_0x4edb5b=_[_0xe586('0x37')](_0x2a5527,_0x1d855a);}return _0x4edb5b;}function getCustomFields(_0x2cbdfa,_0x221f55){var _0x14dedf=[];var _0x573f0b={'custom_fields':[]};if(_0x2cbdfa[_0xe586('0x27')]>0x0){_[_0xe586('0x38')](_0x2cbdfa,function(_0x1b5d2b){if(_[_0xe586('0x39')]([_0xe586('0x3a'),_0xe586('0x3b')],_0x1b5d2b[_0xe586('0x3c')])&&_0x1b5d2b['nameField']&&!_0x1b5d2b[_0xe586('0x3d')]){_0x573f0b[_0x1b5d2b[_0xe586('0x3e')][_0xe586('0x3f')]()]=_0x1b5d2b[_0xe586('0x40')]['toString']();}else if(_[_0xe586('0x39')]([_0xe586('0x3a'),_0xe586('0x3b')],_0x1b5d2b[_0xe586('0x3c')])&&_0x1b5d2b[_0xe586('0x41')]&&_0x1b5d2b['customField']){_0x573f0b[_0xe586('0x42')]['push']({'id':_0x1b5d2b[_0xe586('0x41')],'value':_0x1b5d2b['content'][_0xe586('0x33')]()});}else if(_0x1b5d2b[_0xe586('0x3c')]===_0xe586('0x43')&&_0x1b5d2b['variableName']&&_0x1b5d2b[_0xe586('0x41')]&&_0x1b5d2b[_0xe586('0x3d')]){_0x221f55[_0x1b5d2b['variableName']]&&_0x573f0b[_0xe586('0x42')][_0xe586('0x44')]({'id':_0x1b5d2b[_0xe586('0x41')],'value':_0x221f55[_0x1b5d2b['variableName']][_0xe586('0x33')]()});}else if(_0x1b5d2b[_0xe586('0x3c')]===_0xe586('0x45')&&_0x1b5d2b[_0xe586('0x46')]&&_0x1b5d2b['Variable'][_0xe586('0xf')]&&_0x1b5d2b['idField']&&_0x1b5d2b[_0xe586('0x3d')]){_0x221f55[_0x1b5d2b[_0xe586('0x46')][_0xe586('0xf')][_0xe586('0x3f')]()]&&_0x573f0b[_0xe586('0x42')][_0xe586('0x44')]({'id':_0x1b5d2b['idField'],'value':_0x221f55[_0x1b5d2b['Variable']['name'][_0xe586('0x3f')]()][_0xe586('0x33')]()});}});}return _0x573f0b;}exports['queue']=function(_0x589a21,_0x27539f,_0x4ac0de,_0x1823b5,_0x4aab46,_0x4bd33f){var _0x3cba35,_0x3b26e;_0x4bd33f[_0xe586('0xc')]=intUtil[_0xe586('0x47')](_0x4bd33f[_0xe586('0xc')]);_0x4bd33f[_0xe586('0x48')]=intUtil[_0xe586('0x47')](_0x4bd33f[_0xe586('0x48')]);if(_0x4aab46&&_0x4aab46[_0xe586('0x49')]){logger[_0xe586('0x15')](_0xe586('0x4a'),_0xe586('0x4b'));_0x27539f['recordingURL']=util[_0xe586('0xa')](_0xe586('0x4c'),_0x4bd33f[_0xe586('0x48')],_0x27539f[_0xe586('0x4d')],md5(_0x27539f['uniqueid']));}else{_0x27539f[_0xe586('0x4e')]='';}headers[_0xe586('0x4f')]=getAuth(_0x4bd33f);return getUser(_0x4bd33f,_0x1823b5[_0xe586('0x50')])[_0xe586('0x19')](function(_0x4a6b83){_0x3cba35=_0x4a6b83;logger['info'](_0xe586('0x51'),_0x3cba35['id']);return getEndUser(_0x4bd33f,_0x27539f['calleridname'],_0x27539f[_0xe586('0x52')]);})[_0xe586('0x19')](function(_0x3e0383){_0x3b26e=_0x3e0383;logger['info'](_0xe586('0x53'),_0x3b26e['id']);return getTicket(_0x4bd33f,_0x3cba35,_0x3b26e,_0x4ac0de,_0x27539f);})[_0xe586('0x19')](function(_0x2040cb){if(_0x2040cb){logger[_0xe586('0x15')](_0xe586('0x54'),_0x2040cb['id']);switch(_0x4bd33f[_0xe586('0x3c')]){case _0xe586('0x55'):logger[_0xe586('0x15')](_0xe586('0x4a'),_0xe586('0x56'));return request({'uri':util['format']('%s/channels/voice/agents/%d/tickets/%d/display.json',_0x4bd33f['remoteUri'],_0x3cba35['id'],_0x2040cb['id']),'method':'POST'});case _0xe586('0x57'):logger[_0xe586('0x15')](_0xe586('0x4a'),_0xe586('0x58'));emit(util['format'](_0xe586('0x59'),_0x1823b5['name']),_0xe586('0x5a'),{'uri':util[_0xe586('0xa')](_0xe586('0x5b'),_0x4bd33f[_0xe586('0xc')][_0xe586('0x5c')](_0xe586('0x5d'),''),_0x2040cb['id'])});break;default:logger[_0xe586('0x5e')](_0xe586('0x4a'),_0xe586('0x5f'));}}})[_0xe586('0x60')](function(_0x2581fa){logger[_0xe586('0x5e')](_0xe586('0x61'),util[_0xe586('0x62')](_0x2581fa,{'showHidden':!![],'depth':null}));});};exports['outbound']=function(_0x2fc350,_0x4346c2,_0x328477,_0x259de8,_0x4a8bce,_0xaa53d0,_0x442946){var _0x1c36a1,_0x156d14;_0xaa53d0[_0xe586('0xc')]=intUtil['stripTrailingSlash'](_0xaa53d0[_0xe586('0xc')]);_0xaa53d0[_0xe586('0x48')]=intUtil[_0xe586('0x47')](_0xaa53d0[_0xe586('0x48')]);if(_0x442946&&_0x442946[_0xe586('0x63')]&&_0x442946[_0xe586('0x63')]!==_0xe586('0x64')){logger['info'](_0xe586('0x65'),_0xe586('0x4b'));_0x4346c2['recordingURL']=util[_0xe586('0xa')](_0xe586('0x4c'),_0xaa53d0['serverUrl'],_0x4346c2[_0xe586('0x4d')],md5(_0x4346c2[_0xe586('0x4d')]));}headers['Authorization']=getAuth(_0xaa53d0);return getUser(_0xaa53d0,_0x259de8[_0xe586('0x50')])[_0xe586('0x19')](function(_0xe6bf1f){_0x1c36a1=_0xe6bf1f;logger['info'](_0xe586('0x51'),_0x1c36a1['id']);return getEndUser(_0xaa53d0,_0x4346c2['destcalleridname'],_0x4346c2[_0xe586('0x66')]);})[_0xe586('0x19')](function(_0x771308){_0x156d14=_0x771308;logger[_0xe586('0x15')](_0xe586('0x53'),_0x156d14['id']);return getTicket(_0xaa53d0,_0x1c36a1,_0x156d14,_0x328477,_0x4346c2);})['then'](function(_0x297783){if(_0x297783){logger['info'](_0xe586('0x54'),_0x297783['id']);switch(_0xaa53d0['type']){case _0xe586('0x55'):logger[_0xe586('0x15')](_0xe586('0x65'),_0xe586('0x56'));return request({'uri':util[_0xe586('0xa')]('%s/channels/voice/agents/%d/tickets/%d/display.json',_0xaa53d0['remoteUri'],_0x1c36a1['id'],_0x297783['id']),'method':_0xe586('0x67')});case _0xe586('0x57'):logger[_0xe586('0x15')](_0xe586('0x65'),_0xe586('0x58'));emit(util[_0xe586('0xa')](_0xe586('0x59'),_0x259de8[_0xe586('0xf')]),'trigger:browser:url',{'uri':util['format'](_0xe586('0x5b'),_0xaa53d0[_0xe586('0xc')][_0xe586('0x5c')](_0xe586('0x5d'),''),_0x297783['id'])});break;default:logger[_0xe586('0x5e')](_0xe586('0x65'),'Zendesk\x20account\x20type\x20not\x20recognized');}}})[_0xe586('0x60')](function(_0x5246bd){logger[_0xe586('0x5e')](_0xe586('0x68'),util[_0xe586('0x62')](_0x5246bd,{'showHidden':!![],'depth':null}));});};exports[_0xe586('0x69')]=function(_0x180a95,_0x586ab5,_0x35c931,_0x3722f8,_0x53aa23,_0x2b41fd){var _0x54a0c1,_0x462e59;_0x2b41fd[_0xe586('0xc')]=intUtil[_0xe586('0x47')](_0x2b41fd[_0xe586('0xc')]);_0x2b41fd['serverUrl']=intUtil[_0xe586('0x47')](_0x2b41fd['serverUrl']);if(_0x53aa23&&_0x53aa23['monitor_format']){logger['info']('['+_0x586ab5['lastevent'][_0xe586('0x6a')]()+']',_0xe586('0x4b'));_0x586ab5[_0xe586('0x4e')]=util[_0xe586('0xa')](_0xe586('0x4c'),_0x2b41fd['serverUrl'],_0x586ab5[_0xe586('0x4d')],md5(_0x586ab5[_0xe586('0x4d')]));}else{_0x586ab5[_0xe586('0x4e')]='';}headers[_0xe586('0x4f')]=getAuth(_0x2b41fd);return getUser(_0x2b41fd)[_0xe586('0x19')](function(_0x2499d6){_0x54a0c1=_0x2499d6;logger[_0xe586('0x15')](_0xe586('0x51'),_0x54a0c1['id']);return getEndUser(_0x2b41fd,_0x586ab5[_0xe586('0x6b')],_0x586ab5[_0xe586('0x52')]);})[_0xe586('0x19')](function(_0x5de00e){_0x462e59=_0x5de00e;logger[_0xe586('0x15')](_0xe586('0x53'),_0x462e59['id']);return getTicket(_0x2b41fd,_0x54a0c1,_0x462e59,_0x35c931,_0x586ab5);})[_0xe586('0x19')](function(_0x408ed6){if(_0x408ed6){logger[_0xe586('0x15')]('The\x20Ticket\x20ID\x20is:',_0x408ed6['id']);}})[_0xe586('0x60')](function(_0x39ad18){logger[_0xe586('0x5e')]('['+_0x586ab5[_0xe586('0x6c')][_0xe586('0x6a')]()+']'+_0xe586('0x6d'),util[_0xe586('0x62')](_0x39ad18,{'showHidden':!![],'depth':null}));});};
\ No newline at end of file
index dafcc9d..814f1ae 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0x6a2b=['uniqueid','/downloads?type=uniqueid&token=','zoho.eu','com','calleridname','calleridnum','Inbound','The\x20Call\x20ID\x20is:','user:%s','trigger:browser:url','https://crm.','/crm/EntityInfo.do?module=Calls&id=','outbound','recordingFormat','none','[OUTBOUND]','Recording\x20is\x20enabled!','The\x20User\x20ID\x20is:','destcalleridname','destcalleridnum','Displaying\x20call\x20to\x20agent\x20in\x20a\x20new\x20tab...','unmanaged','toUpperCase','request-promise','md5','./util','ioredis','bluebird','../../../../config/environment','../../../../config/logger','redis','defaults','localhost','emit','debug','[HTTP]','stringify','includes','string','type','idField','content','toString','variable','variableName','customVariable','Variable','toLowerCase','indexOf','isNil','access_token','isBefore','expires_in','zone','https://accounts.zoho.com','https://accounts.zoho.com.au','https://accounts.zoho.eu','https://accounts.zoho.in','POST','/oauth/v2/token','refreshToken','clientId','refresh_token','then','add','catch','Failing\x20creating\x20the\x20access_token','Search\x20user','GET','format','https://www.zohoapis.%s/crm/v2/users','Zoho-oauthtoken\x20','users','isArrayLikeObject','findIndex','email','info','Agent\x20found!','Using\x20the\x20admin\x20account!','name','user','profile','Administrator','error','The\x20failing\x20result\x20is','Unable\x20to\x20retrieve\x20zoho\x20account\x20users:\x20','data','enduserType','startCase','moduleCreate','first_name','last_name','code','SUCCESS','Error:\x20','log','CREATE\x20ERROR','moduleSearch','contact_lead','uri','https://www.zohoapis.','Contacts','/crm/v2/Leads/search?criteria=((Phone:equals:','nothing','lead','Leads','Creating\x20new\x20call...','Owner','role','Subject','getString','Subjects','Description','Full_Name','First_Name','Last_Name','What_Id','$se_module','Call_Duration','utc','talktime','mm:ss','answertime','YYYY-MM-DDTHH:mm:ss','diff','lastevent','called','Call_Result','Called','complete','connect','Answered','rejected','Rejected','abandoned','Timeout','Call_Start_Time','starttime','agentcalledAt','Call_Type','merge','Fields','/crm/v2/Calls','details','err','queue','stripTrailingSlash','host','serverUrl','monitor_format','[QUEUE]','recordingURL','/api/voice/recordings/'];(function(_0x1554e2,_0x4efeec){var _0x51aa70=function(_0x33cad5){while(--_0x33cad5){_0x1554e2['push'](_0x1554e2['shift']());}};_0x51aa70(++_0x4efeec);}(_0x6a2b,0x1e2));var _0xb6a2=function(_0x2fcaa3,_0x2ba904){_0x2fcaa3=_0x2fcaa3-0x0;var _0x8f4089=_0x6a2b[_0x2fcaa3];return _0x8f4089;};'use strict';var _=require('lodash');var rp=require(_0xb6a2('0x0'));var md5=require(_0xb6a2('0x1'));var util=require('util');var intUtil=require(_0xb6a2('0x2'));var moment=require('moment');var Redis=require(_0xb6a2('0x3'));var BPromise=require(_0xb6a2('0x4'));var config=require(_0xb6a2('0x5'));var logger=require(_0xb6a2('0x6'))('zoho');config[_0xb6a2('0x7')]=_[_0xb6a2('0x8')](config[_0xb6a2('0x7')],{'host':_0xb6a2('0x9'),'port':0x18eb});var io=require('socket.io-emitter')(new Redis(config[_0xb6a2('0x7')]));function emit(_0x4dee8f,_0x24821a,_0x46b5bb){io['to'](_0x4dee8f)[_0xb6a2('0xa')](_0x24821a,_0x46b5bb);}function request(_0x5357cc){logger[_0xb6a2('0xb')](_0xb6a2('0xc'),JSON[_0xb6a2('0xd')](_0x5357cc));return rp(_0x5357cc);}function getCustomFields(_0x188479,_0x4751d1){var _0x49c46b={};if(_0x188479['length']>0x0){_['forEach'](_0x188479,function(_0x39414d){if(_[_0xb6a2('0xe')]([_0xb6a2('0xf'),'picklist'],_0x39414d[_0xb6a2('0x10')])&&_0x39414d['idField']){_0x49c46b[_0x39414d[_0xb6a2('0x11')]]=_0x39414d[_0xb6a2('0x12')][_0xb6a2('0x13')]();}else if(_0x39414d[_0xb6a2('0x10')]===_0xb6a2('0x14')&&_0x39414d['variableName']&&_0x39414d['idField']&&_0x4751d1[_0x39414d[_0xb6a2('0x15')]]){_0x49c46b[_0x39414d[_0xb6a2('0x11')]]=_0x4751d1[_0x39414d[_0xb6a2('0x15')]][_0xb6a2('0x13')]();}else if(_0x39414d['type']===_0xb6a2('0x16')&&_0x39414d[_0xb6a2('0x17')]&&_0x39414d[_0xb6a2('0x17')]['name']&&_0x39414d[_0xb6a2('0x11')]&&_0x4751d1[_0x39414d[_0xb6a2('0x17')]['name']['toLowerCase']()]){_0x49c46b[_0x39414d['idField']]=_0x4751d1[_0x39414d[_0xb6a2('0x17')]['name'][_0xb6a2('0x18')]()][_0xb6a2('0x13')]();}});}return _0x49c46b;}function getName(_0x506edf){if(_0x506edf[_0xb6a2('0x19')]('\x20')>0x0){var _0x29bc34=_0x506edf['split'](/ (.+)/);if(_0x29bc34[0x1]){return _0x29bc34;}}return[_0x506edf,_0x506edf];}var accountsTokens={};function getAccessToken(_0x495316){return new Promise(function(_0x15a52e,_0x1057e3){if(!_[_0xb6a2('0x1a')](accountsTokens[_0x495316['id']])&&!_['isNil'](accountsTokens[_0x495316['id']][_0xb6a2('0x1b')])){if(moment()[_0xb6a2('0x1c')](accountsTokens[_0x495316['id']][_0xb6a2('0x1d')])){_0x15a52e(accountsTokens[_0x495316['id']][_0xb6a2('0x1b')]);}}var _0x2baf97;switch(_0x495316[_0xb6a2('0x1e')]){case'US':_0x2baf97=_0xb6a2('0x1f');break;case'AU':_0x2baf97=_0xb6a2('0x20');break;case'EU':_0x2baf97=_0xb6a2('0x21');break;case'IN':_0x2baf97=_0xb6a2('0x22');break;case'CN':_0x2baf97='https://accounts.zoho.com.cn';break;default:_0x2baf97=_0xb6a2('0x21');break;}var _0x2654ac={'method':_0xb6a2('0x23'),'uri':_0x2baf97+_0xb6a2('0x24'),'qs':{'refresh_token':_0x495316[_0xb6a2('0x25')],'client_id':_0x495316[_0xb6a2('0x26')],'client_secret':_0x495316['clientSecret'],'grant_type':_0xb6a2('0x27')},'json':!![]};return rp(_0x2654ac)[_0xb6a2('0x28')](function(_0x6adfe3){accountsTokens[_0x495316['id']]={'access_token':_0x6adfe3['access_token'],'expires_in':moment()[_0xb6a2('0x29')](_0x6adfe3['expires_in'],'seconds')};_0x15a52e(_0x6adfe3[_0xb6a2('0x1b')]);})[_0xb6a2('0x2a')](function(_0x4c5736){logger['error'](_0xb6a2('0x2b'),_0x4c5736['stack']);_0x1057e3(_0x4c5736);});});}function getUser(_0x16f3f0,_0x17b97a,_0x115968,_0x132bbc){logger['info'](_0xb6a2('0x2c'));return request({'method':_0xb6a2('0x2d'),'uri':util[_0xb6a2('0x2e')](_0xb6a2('0x2f'),_0x17b97a),'qs':{'type':'ActiveUsers'},'headers':{'Authorization':_0xb6a2('0x30')+_0x16f3f0},'json':!![]})[_0xb6a2('0x28')](function(_0x4e3418){if(_0x4e3418[_0xb6a2('0x31')]){var _0x308900=-0x1;if(_[_0xb6a2('0x32')](_0x4e3418[_0xb6a2('0x31')])){if(!_[_0xb6a2('0x1a')](_0x132bbc)){_0x308900=_[_0xb6a2('0x33')](_0x4e3418[_0xb6a2('0x31')],function(_0x2b8aa2){return _0x2b8aa2[_0xb6a2('0x34')]===_0x132bbc;});}if(_0x308900>=0x0){logger[_0xb6a2('0x35')](_0xb6a2('0x36'));}else{logger['info'](_0xb6a2('0x37'));_0x308900=_[_0xb6a2('0x33')](_0x4e3418['users'],function(_0xe91753){return _0xe91753['profile'][_0xb6a2('0x38')]==='Administrator';});}return _0x4e3418['users'][_0x308900];}else{if(_0x4e3418[_0xb6a2('0x39')][_0xb6a2('0x3a')][_0xb6a2('0x38')]===_0xb6a2('0x3b')){logger[_0xb6a2('0x35')](_0xb6a2('0x37'));user=_0x4e3418['user'];return user;}else{logger[_0xb6a2('0x3c')](_0xb6a2('0x3d'),JSON[_0xb6a2('0xd')](_0x4e3418));throw new Error(_0xb6a2('0x3e')+JSON[_0xb6a2('0xd')](_0x4e3418));}}}else{logger['error'](_0xb6a2('0x3d'),JSON[_0xb6a2('0xd')](_0x4e3418));throw new Error(_0xb6a2('0x3e')+JSON['stringify'](_0x4e3418));}})[_0xb6a2('0x2a')](function(_0x31f469){console[_0xb6a2('0x3c')](_0x31f469);});}function getZohoUser(_0x58db14,_0x1c5b48){return new BPromise(function(_0x2b8910,_0x2ed68a){request(_0x58db14)[_0xb6a2('0x28')](function(_0x177b69){var _0x3da607=null;if(_0x177b69){_0x3da607=_0x177b69[_0xb6a2('0x3f')][0x0];_0x3da607[_0xb6a2('0x40')]=_0x1c5b48;}_0x2b8910(_0x3da607);})['catch'](function(_0x4308c4){_0x2ed68a(_0x4308c4);});});}function createEndUser(_0x34595e,_0x152383,_0x5d763c,_0x248d6d,_0x4e5e52,_0x2c38c6){var _0x5d763c=getName(_0x5d763c);return request({'method':_0xb6a2('0x23'),'uri':'https://www.zohoapis.'+_0x152383+'/crm/v2/'+_[_0xb6a2('0x41')](_0x2c38c6[_0xb6a2('0x42')])+'s','body':{'data':[{'Last_Name':_0x5d763c[0x1],'First_Name':_0x5d763c[0x0],'Phone':_0x248d6d,'Owner':{'name':!_['isNil'](_0x4e5e52['role'][_0xb6a2('0x38')])?_0x4e5e52['role'][_0xb6a2('0x38')]:!_[_0xb6a2('0x1a')](_0x4e5e52[_0xb6a2('0x43')])?_0x4e5e52['first_name']+'\x20'+_0x4e5e52[_0xb6a2('0x44')]:_0x4e5e52['last_name'],'id':_0x4e5e52['id']}}]},'headers':{'Authorization':_0xb6a2('0x30')+_0x34595e},'json':!![]})[_0xb6a2('0x28')](function(_0x2d203d){if(_0x2d203d&&_0x2d203d[_0xb6a2('0x3f')][0x0][_0xb6a2('0x45')]===_0xb6a2('0x46')){var _0x258e2f=_0x2d203d['data'][0x0]['details'];_0x258e2f[_0xb6a2('0x40')]=_['startCase'](_0x2c38c6['moduleCreate'])+'s';return _0x258e2f;}logger[_0xb6a2('0x3c')](_0xb6a2('0x3d'),JSON[_0xb6a2('0xd')](data));throw new Error(_0xb6a2('0x47')+JSON[_0xb6a2('0xd')](data));})[_0xb6a2('0x2a')](function(_0x2d8951){console[_0xb6a2('0x48')](_0xb6a2('0x49'),_0x2d8951);});}function getEndUser(_0x39169,_0x47aa7b,_0x22ea58,_0x3a5b2d,_0x2442df,_0x2be5d2,_0x437c78){var _0x13367e={'method':_0xb6a2('0x2d'),'uri':'','headers':{'Authorization':'Zoho-oauthtoken\x20'+_0x39169},'json':!![]};switch(_0x437c78[_0xb6a2('0x4a')]){case _0xb6a2('0x4b'):_0x13367e[_0xb6a2('0x4c')]=_0xb6a2('0x4d')+_0x47aa7b+'/crm/v2/Contacts/search?criteria=((Phone:equals:'+_0x2442df+'))';return getZohoUser(_0x13367e,_0xb6a2('0x4e'))['then'](function(_0x2120ea){if(_0x2120ea)return _0x2120ea;_0x13367e[_0xb6a2('0x4c')]=_0xb6a2('0x4d')+_0x47aa7b+_0xb6a2('0x4f')+_0x2442df+'))';return getZohoUser(_0x13367e,'Leads')[_0xb6a2('0x28')](function(_0x1027a6){if(_0x1027a6)return _0x1027a6;if(_0x437c78[_0xb6a2('0x42')]!='nothing'){return createEndUser(_0x39169,_0x47aa7b,_0x3a5b2d,_0x2442df,_0x2be5d2,_0x437c78);}else{return{};}});});break;case'contact':_0x13367e[_0xb6a2('0x4c')]=_0xb6a2('0x4d')+_0x47aa7b+'/crm/v2/Contacts/search?criteria=((Phone:equals:'+_0x2442df+'))';return getZohoUser(_0x13367e,_0xb6a2('0x4e'))[_0xb6a2('0x28')](function(_0x539853){if(_0x539853)return _0x539853;if(_0x437c78[_0xb6a2('0x42')]!=_0xb6a2('0x50')){return createEndUser(_0x39169,_0x47aa7b,_0x3a5b2d,_0x2442df,_0x2be5d2,_0x437c78);}else{return{};}});break;case _0xb6a2('0x51'):_0x13367e['uri']=_0xb6a2('0x4d')+_0x47aa7b+_0xb6a2('0x4f')+_0x2442df+'))';return getZohoUser(_0x13367e,_0xb6a2('0x52'))[_0xb6a2('0x28')](function(_0x13aff1){if(_0x13aff1)return _0x13aff1;if(_0x437c78['moduleCreate']!='nothing'){return createEndUser(_0x39169,_0x47aa7b,_0x3a5b2d,_0x2442df,_0x2be5d2,_0x437c78);}else{return{};}});break;}}function getCall(_0x26c989,_0x46867c,_0x55cdac,_0x263009,_0x1b4412,_0x5a8634,_0x29a0b2,_0x5f5c1d){logger['info'](_0xb6a2('0x53'));var _0x3973d8={};_0x3973d8[_0xb6a2('0x54')]={'name':!_[_0xb6a2('0x1a')](_0x263009[_0xb6a2('0x55')][_0xb6a2('0x38')])&&!_[_0xb6a2('0x1a')](_0x263009[_0xb6a2('0x3a')][_0xb6a2('0x38')])&&_0x263009['profile'][_0xb6a2('0x38')]==='administrator'?_0x263009[_0xb6a2('0x55')]['name']:!_[_0xb6a2('0x1a')](_0x263009['first_name'])?_0x263009[_0xb6a2('0x43')]+'\x20'+_0x263009[_0xb6a2('0x44')]:_0x263009['last_name'],'id':_0x263009['id']};_0x3973d8[_0xb6a2('0x56')]=intUtil[_0xb6a2('0x57')](_0x5a8634[_0xb6a2('0x58')],_0x29a0b2,'\x20');_0x3973d8[_0xb6a2('0x59')]=intUtil[_0xb6a2('0x57')](_0x5a8634['Descriptions'],_0x29a0b2,'\x0a');if(_0x1b4412[_0xb6a2('0x40')]===_0xb6a2('0x4e')){_0x3973d8['Who_Id']={'name':!_['isNil'](_0x1b4412[_0xb6a2('0x5a')])?_0x1b4412[_0xb6a2('0x5a')]:!_['isNil'](_0x1b4412[_0xb6a2('0x5b')])?_0x1b4412[_0xb6a2('0x5b')]+'\x20'+_0x1b4412[_0xb6a2('0x5c')]:_0x1b4412[_0xb6a2('0x5c')],'id':_0x1b4412['id']};}if(_0x1b4412[_0xb6a2('0x40')]===_0xb6a2('0x52')){_0x3973d8[_0xb6a2('0x5d')]={'name':!_['isNil'](_0x1b4412[_0xb6a2('0x5a')])?_0x1b4412[_0xb6a2('0x5a')]:!_['isNil'](_0x1b4412['First_Name'])?_0x1b4412['First_Name']+'\x20'+_0x1b4412[_0xb6a2('0x5c')]:_0x1b4412[_0xb6a2('0x5c')],'id':_0x1b4412['id']};_0x3973d8[_0xb6a2('0x5e')]=_[_0xb6a2('0x41')](_0x1b4412['enduserType']);}if(_0x29a0b2['talktime']){_0x3973d8[_0xb6a2('0x5f')]=moment[_0xb6a2('0x60')](parseInt(_0x29a0b2[_0xb6a2('0x61')])*0x3e8)[_0xb6a2('0x2e')](_0xb6a2('0x62'));}else if(_0x29a0b2[_0xb6a2('0x63')]&&_0x29a0b2['endtime']){_0x3973d8[_0xb6a2('0x5f')]=moment[_0xb6a2('0x60')](moment(_0x29a0b2['endtime'],_0xb6a2('0x64'))[_0xb6a2('0x65')](moment(_0x29a0b2['starttime'],_0xb6a2('0x64'))))['format'](_0xb6a2('0x62'));}switch(_0x29a0b2[_0xb6a2('0x66')]){case _0xb6a2('0x67'):_0x3973d8[_0xb6a2('0x68')]=_0xb6a2('0x69');break;case _0xb6a2('0x6a'):case _0xb6a2('0x6b'):_0x3973d8['Call_Result']=_0xb6a2('0x6c');break;case _0xb6a2('0x6d'):_0x3973d8[_0xb6a2('0x68')]=_0xb6a2('0x6e');break;case _0xb6a2('0x6f'):_0x3973d8[_0xb6a2('0x68')]='Abandoned';break;case'timeout':_0x3973d8['Call_Result']=_0xb6a2('0x70');default:}_0x3973d8[_0xb6a2('0x71')]=(_0x5f5c1d==='outbound'?moment(_0x29a0b2[_0xb6a2('0x72')])[_0xb6a2('0x2e')](_0xb6a2('0x64')):moment(_0x29a0b2[_0xb6a2('0x73')])[_0xb6a2('0x2e')](_0xb6a2('0x64')))||moment()[_0xb6a2('0x2e')](_0xb6a2('0x64'));_0x3973d8[_0xb6a2('0x74')]=_0x5f5c1d||'Inbound';_0x3973d8=_[_0xb6a2('0x75')](_0x3973d8,getCustomFields(_0x5a8634[_0xb6a2('0x76')],_0x29a0b2));return request({'method':'POST','uri':'https://www.zohoapis.'+_0x46867c+_0xb6a2('0x77'),'headers':{'Authorization':_0xb6a2('0x30')+_0x26c989},'body':{'data':[_0x3973d8]},'json':!![]})['then'](function(_0x26248a){if(_0x26248a&&_0x26248a[_0xb6a2('0x3f')][0x0][_0xb6a2('0x45')]===_0xb6a2('0x46')){logger[_0xb6a2('0x35')]('Call\x20created!');return{'id':_0x26248a['data'][0x0][_0xb6a2('0x78')]['id']};}})['catch'](function(_0x250753){logger[_0xb6a2('0x35')](_0xb6a2('0x79'),_0x250753['stack']);console['log'](_0xb6a2('0x79'),_0x250753);});}exports[_0xb6a2('0x7a')]=function(_0x24822b,_0x17ab6a,_0x1e4aae,_0x427c1e,_0x28db6d,_0x3f394f){var _0x193aa5,_0xa574ae,_0x3306d6;_0x3f394f['host']=intUtil[_0xb6a2('0x7b')](_0x3f394f[_0xb6a2('0x7c')]);_0x3f394f[_0xb6a2('0x7d')]=intUtil[_0xb6a2('0x7b')](_0x3f394f['serverUrl']);if(_0x28db6d&&_0x28db6d[_0xb6a2('0x7e')]){logger[_0xb6a2('0x35')](_0xb6a2('0x7f'),'Recording\x20is\x20enabled!');_0x17ab6a[_0xb6a2('0x80')]=_0x3f394f[_0xb6a2('0x7d')]+_0xb6a2('0x81')+_0x17ab6a[_0xb6a2('0x82')]+_0xb6a2('0x83')+md5(_0x17ab6a['uniqueid']);}else{_0x17ab6a[_0xb6a2('0x80')]='';}var _0x569799=_0x3f394f[_0xb6a2('0x7c')]===_0xb6a2('0x84')?'eu':_0xb6a2('0x85');return getAccessToken(_0x3f394f)['then'](function(_0x199f49){_0x3306d6=_0x199f49;return getUser(_0x3306d6,_0x569799,_0x3f394f,_0x427c1e['email']);})[_0xb6a2('0x28')](function(_0x5ced18){_0x193aa5=_0x5ced18;logger[_0xb6a2('0x35')]('The\x20User\x20ID\x20is:',_0x193aa5['id']);return getEndUser(_0x3306d6,_0x569799,_0x3f394f,_0x17ab6a[_0xb6a2('0x86')],_0x17ab6a[_0xb6a2('0x87')],_0x193aa5,_0x1e4aae);})[_0xb6a2('0x28')](function(_0x556e22){_0xa574ae=_0x556e22;return getCall(_0x3306d6,_0x569799,_0x3f394f,_0x193aa5,_0xa574ae,_0x1e4aae,_0x17ab6a,_0xb6a2('0x88'));})[_0xb6a2('0x28')](function(_0x448b71){if(_0x448b71){logger[_0xb6a2('0x35')](_0xb6a2('0x89'),_0x448b71['id']);logger['info'](_0xb6a2('0x7f'),'Displaying\x20call\x20to\x20agent\x20in\x20a\x20new\x20tab...');emit(util[_0xb6a2('0x2e')](_0xb6a2('0x8a'),_0x427c1e[_0xb6a2('0x38')]),_0xb6a2('0x8b'),{'uri':_0xb6a2('0x8c')+_0x3f394f[_0xb6a2('0x7c')]+_0xb6a2('0x8d')+_0x448b71['id']});}})[_0xb6a2('0x2a')](function(_0x5ef01b){logger[_0xb6a2('0x3c')](_0xb6a2('0x7f'),JSON['stringify'](_0x5ef01b));});};exports[_0xb6a2('0x8e')]=function(_0x1ee8ab,_0x136d60,_0x65ada5,_0x1f4c5a,_0x2a1018,_0x4c3a0e,_0x32d494){var _0x57c055,_0x348ddc,_0xab34c8;_0x4c3a0e['host']=intUtil[_0xb6a2('0x7b')](_0x4c3a0e[_0xb6a2('0x7c')]);_0x4c3a0e['serverUrl']=intUtil[_0xb6a2('0x7b')](_0x4c3a0e[_0xb6a2('0x7d')]);if(_0x32d494&&_0x32d494[_0xb6a2('0x8f')]&&_0x32d494[_0xb6a2('0x8f')]!==_0xb6a2('0x90')){logger[_0xb6a2('0x35')](_0xb6a2('0x91'),_0xb6a2('0x92'));_0x136d60['recordingURL']=_0x4c3a0e['serverUrl']+_0xb6a2('0x81')+_0x136d60['uniqueid']+_0xb6a2('0x83')+md5(_0x136d60[_0xb6a2('0x82')]);}var _0x4e9fc9=_0x4c3a0e[_0xb6a2('0x7c')]===_0xb6a2('0x84')?'eu':_0xb6a2('0x85');return getAccessToken(_0x4c3a0e)[_0xb6a2('0x28')](function(_0x4b1850){_0xab34c8=_0x4b1850;return getUser(_0xab34c8,_0x4e9fc9,_0x4c3a0e,_0x1f4c5a[_0xb6a2('0x34')]);})[_0xb6a2('0x28')](function(_0x2cac10){_0x57c055=_0x2cac10;logger[_0xb6a2('0x35')](_0xb6a2('0x93'),_0x57c055['id']);return getEndUser(_0xab34c8,_0x4e9fc9,_0x4c3a0e,_0x136d60[_0xb6a2('0x94')],_0x136d60[_0xb6a2('0x95')],_0x57c055,_0x65ada5);})[_0xb6a2('0x28')](function(_0x1d7545){_0x348ddc=_0x1d7545;return getCall(_0xab34c8,_0x4e9fc9,_0x4c3a0e,_0x57c055,_0x348ddc,_0x65ada5,_0x136d60,'Outbound');})[_0xb6a2('0x28')](function(_0x5c4e94){if(_0x5c4e94){logger[_0xb6a2('0x35')]('The\x20Call\x20ID\x20is:',_0x5c4e94['id']);logger['info'](_0xb6a2('0x91'),_0xb6a2('0x96'));emit(util['format'](_0xb6a2('0x8a'),_0x1f4c5a[_0xb6a2('0x38')]),_0xb6a2('0x8b'),{'uri':_0xb6a2('0x8c')+_0x4c3a0e[_0xb6a2('0x7c')]+_0xb6a2('0x8d')+_0x5c4e94['id']});}})['catch'](function(_0x284778){logger[_0xb6a2('0x3c')](_0xb6a2('0x91'),JSON['stringify'](_0x284778));});};exports[_0xb6a2('0x97')]=function(_0x2a0429,_0x5682f5,_0x1393e6,_0x1fcdda,_0xe66354,_0xb11179){var _0x28c253,_0x4785f6,_0x21bfae;_0xb11179[_0xb6a2('0x7c')]=intUtil[_0xb6a2('0x7b')](_0xb11179[_0xb6a2('0x7c')]);_0xb11179[_0xb6a2('0x7d')]=intUtil['stripTrailingSlash'](_0xb11179[_0xb6a2('0x7d')]);if(_0xe66354&&_0xe66354[_0xb6a2('0x7e')]){logger['info']('['+_0x5682f5[_0xb6a2('0x66')][_0xb6a2('0x98')]()+']','Recording\x20is\x20enabled!');_0x5682f5[_0xb6a2('0x80')]=_0xb11179[_0xb6a2('0x7d')]+_0xb6a2('0x81')+_0x5682f5[_0xb6a2('0x82')]+'/downloads?type=uniqueid&token='+md5(_0x5682f5[_0xb6a2('0x82')]);}else{_0x5682f5[_0xb6a2('0x80')]='';}var _0x31825d=_0xb11179[_0xb6a2('0x7c')]===_0xb6a2('0x84')?'eu':'com';return getAccessToken(_0xb11179)[_0xb6a2('0x28')](function(_0x2bd617){_0x21bfae=_0x2bd617;return getUser(_0x21bfae,_0x31825d,_0xb11179);})[_0xb6a2('0x28')](function(_0x358ac0){_0x28c253=_0x358ac0;logger[_0xb6a2('0x35')](_0xb6a2('0x93'),_0x28c253['id']);return getEndUser(_0x21bfae,_0x31825d,_0xb11179,_0x5682f5[_0xb6a2('0x86')],_0x5682f5[_0xb6a2('0x87')],_0x28c253,_0x1393e6);})[_0xb6a2('0x28')](function(_0xdb8f37){_0x4785f6=_0xdb8f37;return getCall(_0x21bfae,_0x31825d,_0xb11179,_0x28c253,_0x4785f6,_0x1393e6,_0x5682f5,'Inbound');})[_0xb6a2('0x28')](function(_0x56f9d3){if(_0x56f9d3){logger[_0xb6a2('0x35')](_0xb6a2('0x89'),_0x56f9d3['id']);}})[_0xb6a2('0x2a')](function(_0x40b2d3){logger[_0xb6a2('0x3c')]('['+_0x5682f5[_0xb6a2('0x66')]['toUpperCase']()+']',JSON[_0xb6a2('0xd')](_0x40b2d3));});};
\ No newline at end of file
index 9d1b06e..5dfbac7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0xfa29=['trigger','exec','data2','Script','data3','render','error','%s\x20\x27%s\x27\x20failed\x20with\x20code\x20%d\x20and\x20error:\x20%s','info','util','shelljs','mustache','../../../../config/logger'];(function(_0x593190,_0x4c846c){var _0x1a62ed=function(_0x506d3c){while(--_0x506d3c){_0x593190['push'](_0x593190['shift']());}};_0x1a62ed(++_0x4c846c);}(_0xfa29,0x141));var _0x9fa2=function(_0xd6db66,_0x207feb){_0xd6db66=_0xd6db66-0x0;var _0x3f2e9d=_0xfa29[_0xd6db66];return _0x3f2e9d;};'use strict';var util=require(_0x9fa2('0x0'));var sh=require(_0x9fa2('0x1'));var Mustache=require(_0x9fa2('0x2'));var logger=require(_0x9fa2('0x3'))(_0x9fa2('0x4'));exports[_0x9fa2('0x5')]=function(_0x297ad2,_0x5c83bf){var _0x418ffa=_0x297ad2[_0x9fa2('0x6')]?_0x297ad2['data2']:_0x9fa2('0x7');var _0xd1255a=_0x297ad2[_0x9fa2('0x8')]?Mustache[_0x9fa2('0x9')](_0x297ad2[_0x9fa2('0x8')],_0x5c83bf):_0x5c83bf;sh[_0x9fa2('0x5')](_0xd1255a,function(_0x19d7c8,_0x3c030f,_0x4eaf21){if(_0x19d7c8!==0x0){logger[_0x9fa2('0xa')](util['format'](_0x9fa2('0xb'),_0x418ffa,_0xd1255a,_0x19d7c8,_0x4eaf21));}else{logger[_0x9fa2('0xc')](util['format']('%s\x20\x27%s\x27\x20succeeded\x20with\x20output:\x20%s',_0x418ffa,_0xd1255a,_0x3c030f));}});};
\ No newline at end of file
index d8936db..35adb27 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0x6233=['data6','parse','render','error','stack','toUpperCase','GET','DELETE','POST','PUT','body','body\x20has\x20been\x20passed\x20to\x20URLforward\x20in\x20a\x20wrong\x20format','info','format','%s\x20%s\x20sending\x20request\x20with\x20following\x20options:\x20%s','stringify','then',',\x20request\x20body:\x20','object','catch','%s\x20%s\x20failed\x20with\x20status:\x20%d\x20and\x20error:\x20%s\x20%s','statusCode','name','message','request-promise','util','lodash','mustache','../../../../config/logger','exec','data1','data2','data5','number','headers'];(function(_0x368562,_0xbddea5){var _0x30bf41=function(_0x4132c5){while(--_0x4132c5){_0x368562['push'](_0x368562['shift']());}};_0x30bf41(++_0xbddea5);}(_0x6233,0x1df));var _0x3623=function(_0x5ae95b,_0x192db3){_0x5ae95b=_0x5ae95b-0x0;var _0x23c269=_0x6233[_0x5ae95b];return _0x23c269;};'use strict';var rp=require(_0x3623('0x0'));var util=require(_0x3623('0x1'));var _=require(_0x3623('0x2'));var Mustache=require(_0x3623('0x3'));var logger=require(_0x3623('0x4'))('trigger');exports[_0x3623('0x5')]=function(_0x1960fc,_0x177755){var _0x11b7fc,_0x119a02;var _0x42fa42={'method':_0x1960fc[_0x3623('0x6')]['toUpperCase'](),'uri':Mustache['render'](_0x1960fc[_0x3623('0x7')],_0x177755),'json':!![],'resolveWithFullResponse':!![],'timeout':typeof parseInt(_0x1960fc[_0x3623('0x8')])===_0x3623('0x9')&&parseInt(_0x1960fc[_0x3623('0x8')])>=0x1&&parseInt(_0x1960fc['data5'])<=0xa?parseInt(_0x1960fc['data5'])*0x3e8:0x5*0x3e8};try{_0x42fa42[_0x3623('0xa')]=_0x1960fc[_0x3623('0xb')]?JSON[_0x3623('0xc')](Mustache[_0x3623('0xd')](_0x1960fc['data6'],_0x177755)):{};}catch(_0x2827f3){logger[_0x3623('0xe')](_0x2827f3[_0x3623('0xf')]);}switch(_0x1960fc[_0x3623('0x6')][_0x3623('0x10')]()){case _0x3623('0x11'):case _0x3623('0x12'):_0x11b7fc=null;_0x42fa42['qs']=_0x177755;break;case _0x3623('0x13'):case _0x3623('0x14'):if(_0x1960fc['data7']){try{_0x11b7fc=JSON[_0x3623('0xc')](Mustache[_0x3623('0xd')](_0x1960fc['data7'],_0x177755));_0x42fa42[_0x3623('0x15')]=_0x11b7fc;}catch(_0x37c9ff){logger[_0x3623('0xe')](_0x37c9ff[_0x3623('0xf')]);logger[_0x3623('0xe')](_0x3623('0x16'));}}else{_0x11b7fc=_0x177755;_0x42fa42[_0x3623('0x15')]=_0x11b7fc;}break;}logger[_0x3623('0x17')](util[_0x3623('0x18')](_0x3623('0x19'),_0x1960fc[_0x3623('0x6')],_0x1960fc[_0x3623('0x7')],JSON[_0x3623('0x1a')](_0x42fa42)));rp(_0x42fa42)[_0x3623('0x1b')](function(_0x1c3d6d){_0x11b7fc=!_['isNil'](_0x11b7fc)?_0x3623('0x1c')+_0x11b7fc:'';_0x119a02=typeof _0x1c3d6d[_0x3623('0x15')]===_0x3623('0x1d')?JSON[_0x3623('0x1a')](_0x1c3d6d[_0x3623('0x15')]):_0x1c3d6d[_0x3623('0x15')];logger[_0x3623('0x17')](util[_0x3623('0x18')]('%s\x20%s\x20succeeded\x20with\x20status:\x20%d\x20and\x20response:\x20%s',_0x1960fc[_0x3623('0x6')],_0x1960fc[_0x3623('0x7')],_0x1c3d6d['statusCode'],_0x119a02));})[_0x3623('0x1e')](function(_0x181f6d){logger['error'](util[_0x3623('0x18')](_0x3623('0x1f'),_0x1960fc[_0x3623('0x6')],_0x1960fc[_0x3623('0x7')],_0x181f6d[_0x3623('0x20')],_0x181f6d[_0x3623('0x21')],_0x181f6d[_0x3623('0x22')]));});};
\ No newline at end of file
index 1282868..b7df10d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0x5e0b=['routing','client','request','then','rpc','error','message','catch','exports','bluebird'];(function(_0x52161c,_0x9e8032){var _0x32ee88=function(_0x1086fa){while(--_0x1086fa){_0x52161c['push'](_0x52161c['shift']());}};_0x32ee88(++_0x9e8032);}(_0x5e0b,0x18f));var _0xb5e0=function(_0x2e4e19,_0x493b50){_0x2e4e19=_0x2e4e19-0x0;var _0x9ba20b=_0x5e0b[_0x2e4e19];return _0x9ba20b;};'use strict';var jayson=require('jayson/promise');var BPromise=require(_0xb5e0('0x0'));var logger=require('../../config/logger')(_0xb5e0('0x1'));var client=jayson[_0xb5e0('0x2')]['http']({'port':0x2329});client['Request']=function(_0x2b91ce,_0x5029a4){return new BPromise(function(_0x48d7b1,_0x479a4c){return client[_0xb5e0('0x3')](_0x2b91ce,_0x5029a4)[_0xb5e0('0x4')](function(_0x585db1){logger['debug'](_0xb5e0('0x5'),'routing',_0x2b91ce,_0x5029a4,_0x585db1);if(_0x585db1[_0xb5e0('0x6')]){logger[_0xb5e0('0x6')](_0xb5e0('0x5'),_0xb5e0('0x1'),_0x2b91ce,_0x585db1[_0xb5e0('0x6')][_0xb5e0('0x7')],_0x5029a4);return _0x479a4c(_0x585db1[_0xb5e0('0x6')][_0xb5e0('0x7')]);}else{return _0x48d7b1(_0x585db1['result']);}})[_0xb5e0('0x8')](function(_0x4874e6){logger['error']('rpc',_0xb5e0('0x1'),_0x2b91ce,_0x4874e6,_0x5029a4);return _0x479a4c(_0x4874e6);});});};module[_0xb5e0('0x9')]=client;
\ No newline at end of file
index 62837be..a1a9a5e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0x1508=['resolve','getMailAccounts','then','refresh','mailAccounts','getSettings','loginMailFrequency','catch','Email\x20service\x20initialization','./lib/email','../../config/logger'];(function(_0xfb0cfd,_0x500179){var _0x2fd8aa=function(_0xccb501){while(--_0xccb501){_0xfb0cfd['push'](_0xfb0cfd['shift']());}};_0x2fd8aa(++_0x500179);}(_0x1508,0x8d));var _0x8150=function(_0x501510,_0x61caa9){_0x501510=_0x501510-0x0;var _0x1e6ee5=_0x1508[_0x501510];return _0x1e6ee5;};'use strict';var server=require('./server');var Realtime=require('./realtime');var EmailChannel=require(_0x8150('0x0'));var mailAccount=require('./rpc/mailAccount');var setting=require('./rpc/setting');var logger=require(_0x8150('0x1'))('email');var realtime=new Realtime();var email=new EmailChannel(realtime);function initRealtime(){return Promise[_0x8150('0x2')]()['then'](mailAccount[_0x8150('0x3')]())[_0x8150('0x4')](realtime['initMailAccounts']())[_0x8150('0x4')](function(){email[_0x8150('0x5')](realtime[_0x8150('0x6')]);return realtime;});}function main(){return server['listen'](realtime,email)[_0x8150('0x4')](function(){return initRealtime();})[_0x8150('0x4')](function(){return setting[_0x8150('0x7')]();})['then'](function(_0x248c24){return setInterval(initRealtime,_0x248c24[_0x8150('0x8')]*0x3e8);})[_0x8150('0x9')](function(_0x47830c){logger['error'](_0x8150('0xa'),_0x47830c);});}main();
\ No newline at end of file
index 7fddccb..0421f55 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0xbebd=['then','Mail\x20accepted\x20from\x20routing','catch','Mail\x20not\x20accepted\x20from\x20routing\x20%s','lastSync','send','verifySmtp','Smtp','verify','verified','exports','moment','bluebird','ioredis','../../../config/logger','email','redis','defaults','localhost','socket.io-emitter','./imap','./smtp','../rpc/mailAccount','info','mailAccounts','imapAccounts','smtp','prototype','name','key','active','status','Imap','messageStatus','total','isNil','stringify','md5','mailAccount:update','refresh','hasOwnProperty','service','custom','provider','box','handleImapBox','handleImapEmail','bind','error','handleImapError','connected','messages','emit','New\x20email\x20from\x20%s\x20%s\x20%s\x20to\x20%s','lastName'];(function(_0x101fd3,_0x43414f){var _0x5914ab=function(_0x44a1d7){while(--_0x44a1d7){_0x101fd3['push'](_0x101fd3['shift']());}};_0x5914ab(++_0x43414f);}(_0xbebd,0x155));var _0xdbeb=function(_0x38dcfc,_0x4a3b8e){_0x38dcfc=_0x38dcfc-0x0;var _0x157ec1=_0xbebd[_0x38dcfc];return _0x157ec1;};'use strict';var _=require('lodash');var moment=require(_0xdbeb('0x0'));var BPromise=require(_0xdbeb('0x1'));var md5=require('md5');var Redis=require(_0xdbeb('0x2'));var config=require('../../../config/environment');var logger=require(_0xdbeb('0x3'))(_0xdbeb('0x4'));config[_0xdbeb('0x5')]=_[_0xdbeb('0x6')](config[_0xdbeb('0x5')],{'host':_0xdbeb('0x7'),'port':0x18eb});var io=require(_0xdbeb('0x8'))(new Redis(config['redis']));var EmailImap=require(_0xdbeb('0x9'));var EmailSmtp=require(_0xdbeb('0xa'));var mailAccount=require(_0xdbeb('0xb'));var md5Accounts={};function EmailChannel(_0x2e882b){logger[_0xdbeb('0xc')]('start\x20email\x20channel');this['mailAccounts']=_0x2e882b[_0xdbeb('0xd')];this[_0xdbeb('0xe')]={};this[_0xdbeb('0xf')]=new EmailSmtp();}EmailChannel[_0xdbeb('0x10')]['emit']=function(_0x5486c7){var _0x28145d=this[_0xdbeb('0xd')][_0x5486c7];var _0x574258={'id':_0x28145d['id'],'name':_0x28145d[_0xdbeb('0x11')],'key':_0x28145d[_0xdbeb('0x12')],'active':_0x28145d[_0xdbeb('0x13')],'Imap':{'status':_0x28145d['Imap'][_0xdbeb('0x14')],'messageStatus':_0x28145d[_0xdbeb('0x15')][_0xdbeb('0x16')],'total':_0x28145d[_0xdbeb('0x15')][_0xdbeb('0x17')]}};if(_[_0xdbeb('0x18')](md5Accounts[_0x5486c7])){md5Accounts[_0x5486c7]={};}var _0x59b358=md5(JSON[_0xdbeb('0x19')](_0x574258));if(md5Accounts[_0x5486c7][_0xdbeb('0x1a')]!==_0x59b358){md5Accounts[_0x5486c7][_0xdbeb('0x1a')]=_0x59b358;io['emit'](_0xdbeb('0x1b'),_0x574258);}};EmailChannel[_0xdbeb('0x10')][_0xdbeb('0x1c')]=function(_0x2e278b){for(var _0xde7ed4 in _0x2e278b){if(_0x2e278b[_0xdbeb('0x1d')](_0xde7ed4)){if(_0x2e278b[_0xde7ed4][_0xdbeb('0x15')]&&_0x2e278b[_0xde7ed4][_0xdbeb('0x13')]){var _0x19c7c0=_0x2e278b[_0xde7ed4]['Imap'];if(!_0x19c7c0[_0xdbeb('0x1e')]&&_0x2e278b[_0xde7ed4]['provider']!==_0xdbeb('0x1f'))_0x19c7c0[_0xdbeb('0x1e')]=_0x2e278b[_0xde7ed4][_0xdbeb('0x20')];if(!this[_0xdbeb('0xe')][_0xdbeb('0x1d')](_0x19c7c0['id'])){this[_0xdbeb('0xe')][_0x19c7c0['id']]=new EmailImap(_0x19c7c0,_0x2e278b[_0xde7ed4][_0xdbeb('0x4')]);this['imapAccounts'][_0x19c7c0['id']]['on'](_0xdbeb('0x21'),this[_0xdbeb('0x22')]['bind'](this,_0xde7ed4));this[_0xdbeb('0xe')][_0x19c7c0['id']]['on'](_0xdbeb('0x4'),this[_0xdbeb('0x23')][_0xdbeb('0x24')](this,_0xde7ed4));this[_0xdbeb('0xe')][_0x19c7c0['id']]['on']('end',this['handleImapEnd'][_0xdbeb('0x24')](this,_0xde7ed4));this[_0xdbeb('0xe')][_0x19c7c0['id']]['on'](_0xdbeb('0x25'),this[_0xdbeb('0x26')][_0xdbeb('0x24')](this,_0xde7ed4));}}else{if(_['isNil'](this[_0xdbeb('0xd')][_0xde7ed4][_0xdbeb('0x15')])){this[_0xdbeb('0xd')][_0xde7ed4][_0xdbeb('0x15')]={};}this[_0xdbeb('0xd')][_0xde7ed4]['Imap']['status']='disabled';this['mailAccounts'][_0xde7ed4]['Imap'][_0xdbeb('0x16')]='';this['emit'](_0xde7ed4);}}}};EmailChannel[_0xdbeb('0x10')][_0xdbeb('0x22')]=function(_0x3b7cf3,_0x4e4313){if(this[_0xdbeb('0xd')][_0x3b7cf3]){this[_0xdbeb('0xd')][_0x3b7cf3][_0xdbeb('0x15')][_0xdbeb('0x14')]=_0xdbeb('0x27');this[_0xdbeb('0xd')][_0x3b7cf3][_0xdbeb('0x15')]['messageStatus']=_0x4e4313[_0xdbeb('0x11')];if(_0x4e4313[_0xdbeb('0x28')]){this[_0xdbeb('0xd')][_0x3b7cf3][_0xdbeb('0x15')]['total']=_0x4e4313[_0xdbeb('0x28')]['total'];}return this[_0xdbeb('0x29')](_0x3b7cf3);}};EmailChannel['prototype'][_0xdbeb('0x23')]=function(_0x2db3cc,_0x1b6e44){logger[_0xdbeb('0xc')](_0xdbeb('0x2a'),_0x1b6e44['firstName'],_0x1b6e44[_0xdbeb('0x2b')],_0x1b6e44['from'],_0x2db3cc);if(this[_0xdbeb('0xd')][_0x2db3cc]){return mailAccount['notify'](_0x2db3cc,_0x1b6e44)[_0xdbeb('0x2c')](function(_0x42835c){if(_0x42835c){logger[_0xdbeb('0xc')](_0xdbeb('0x2d'));}})[_0xdbeb('0x2e')](function(_0x41750e){logger['error'](_0xdbeb('0x2f'),JSON[_0xdbeb('0x19')](_0x41750e));});}};EmailChannel['prototype']['handleImapEnd']=function(_0x4a36b5){if(this[_0xdbeb('0xd')][_0x4a36b5]&&this[_0xdbeb('0xd')][_0x4a36b5]['Imap']){if(this[_0xdbeb('0xe')][this['mailAccounts'][_0x4a36b5]['Imap']['id']]){delete this[_0xdbeb('0xe')][this[_0xdbeb('0xd')][_0x4a36b5][_0xdbeb('0x15')]['id']];}this[_0xdbeb('0xd')][_0x4a36b5]['Imap'][_0xdbeb('0x30')]=moment();this[_0xdbeb('0x29')](_0x4a36b5);}};EmailChannel[_0xdbeb('0x10')][_0xdbeb('0x26')]=function(_0x190a8f,_0x2fb8ef){if(this['mailAccounts'][_0x190a8f]){this[_0xdbeb('0xd')][_0x190a8f]['Imap'][_0xdbeb('0x14')]=_0xdbeb('0x25');this[_0xdbeb('0xd')][_0x190a8f][_0xdbeb('0x15')][_0xdbeb('0x16')]=_0x2fb8ef;return this[_0xdbeb('0x29')](_0x190a8f);}};EmailChannel[_0xdbeb('0x10')]['sendMail']=function(_0x4b7c9f,_0x517dfc){return this[_0xdbeb('0xf')][_0xdbeb('0x31')](_0x4b7c9f,_0x517dfc);};EmailChannel['prototype'][_0xdbeb('0x32')]=function(_0x4dffc7){var _0x406a41=this;if(this[_0xdbeb('0xd')][_0x4dffc7['id']]){if(_['isNil'](this[_0xdbeb('0xd')][_0x4dffc7['id']][_0xdbeb('0x33')])){this[_0xdbeb('0xd')][_0x4dffc7['id']][_0xdbeb('0x33')]={};}this['mailAccounts'][_0x4dffc7['id']][_0xdbeb('0x33')][_0xdbeb('0x30')]=moment();return new BPromise(function(_0x4d6aa2,_0x15d453){return _0x406a41['smtp'][_0xdbeb('0x34')](_0x4dffc7)[_0xdbeb('0x2c')](function(_0x1a4cec){_0x406a41[_0xdbeb('0xd')][_0x4dffc7['id']][_0xdbeb('0x33')][_0xdbeb('0x14')]=_0xdbeb('0x35');_0x406a41[_0xdbeb('0xd')][_0x4dffc7['id']][_0xdbeb('0x33')][_0xdbeb('0x16')]='';_0x406a41[_0xdbeb('0x29')](_0x4dffc7['id']);_0x4d6aa2(_0x1a4cec);})[_0xdbeb('0x2e')](function(_0x60d0c6){_0x406a41['mailAccounts'][_0x4dffc7['id']][_0xdbeb('0x33')][_0xdbeb('0x14')]=_0xdbeb('0x25');_0x406a41[_0xdbeb('0xd')][_0x4dffc7['id']][_0xdbeb('0x33')][_0xdbeb('0x16')]=_0x60d0c6;_0x406a41['emit'](_0x4dffc7['id']);_0x15d453(_0x60d0c6);});});}return this['smtp']['verify'](_0x4dffc7);};module[_0xdbeb('0x36')]=EmailChannel;
\ No newline at end of file
index a269641..41c570e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0x4258=['required','handleOpenBox','box','readUnseen','handleCloseBox','search','UNSEEN','handleReadUnseen','length','handleFetchMessage','handleFetchError','closeBox','handleMessageBody','attributes','handleMessageAttributes','handleSimpleParser','parser','emit','handleFetchEnd','stringify','hasOwnProperty','upperFirst','exports','imap','simpleParser','events','./utils','../../../config/logger','mailbox','account','getAccount','once','ready','handleReady','end','handleEnd','bind','error','handleError','inherits','prototype','authTimeout','service','user','modernAuthentication','xoauth2','generateXOAuth2Token','data5','password','email','host','port','tls'];(function(_0x4b5f1f,_0x1fee93){var _0x3bb747=function(_0x235c2b){while(--_0x235c2b){_0x4b5f1f['push'](_0x4b5f1f['shift']());}};_0x3bb747(++_0x1fee93);}(_0x4258,0x18a));var _0x8425=function(_0x23c54f,_0x461148){_0x23c54f=_0x23c54f-0x0;var _0x42dbae=_0x4258[_0x23c54f];return _0x42dbae;};'use strict';var _=require('lodash');var util=require('util');var Imap=require(_0x8425('0x0'));var simpleParser=require('mailparser')[_0x8425('0x1')];var Iconv=require('iconv')['Iconv'];var EventEmitter=require(_0x8425('0x2'))['EventEmitter'];var utils=require(_0x8425('0x3'));var logger=require(_0x8425('0x4'))('email');function EmailImap(_0x31f999,_0x10ac6c){this[_0x8425('0x5')]=_0x31f999[_0x8425('0x5')];this[_0x8425('0x6')]=this[_0x8425('0x7')](_0x31f999,_0x10ac6c);this['imap']=new Imap(this[_0x8425('0x6')]);this[_0x8425('0x0')][_0x8425('0x8')](_0x8425('0x9'),this[_0x8425('0xa')]['bind'](this));this[_0x8425('0x0')][_0x8425('0x8')](_0x8425('0xb'),this[_0x8425('0xc')][_0x8425('0xd')](this));this[_0x8425('0x0')]['on'](_0x8425('0xe'),this[_0x8425('0xf')][_0x8425('0xd')](this));this[_0x8425('0x0')]['connect']();}util[_0x8425('0x10')](EmailImap,EventEmitter);EmailImap[_0x8425('0x11')]['getAccount']=function(_0x394ab0,_0x3b0633){var _0x30ea7b={'connTimeout':_0x394ab0['connTimeout']?_0x394ab0['connTimeout']*0x3e8:0x2710,'authTimeout':_0x394ab0[_0x8425('0x12')]?_0x394ab0[_0x8425('0x12')]*0x3e8:0x1388};if(_0x394ab0[_0x8425('0x13')]){_0x30ea7b['user']=_0x394ab0[_0x8425('0x14')];if(_0x394ab0[_0x8425('0x15')]){_0x30ea7b[_0x8425('0x16')]=utils[_0x8425('0x17')](_0x394ab0['CloudProvider'][_0x8425('0x18')],_0x394ab0[_0x8425('0x14')]);}else{_0x30ea7b[_0x8425('0x19')]=_0x394ab0['password'];}}else{if(_0x394ab0['authentication']){_0x30ea7b['user']=_0x394ab0['user'];_0x30ea7b[_0x8425('0x19')]=_0x394ab0['password'];}}_0x30ea7b[_0x8425('0x1a')]=_0x3b0633||_0x394ab0[_0x8425('0x14')]||'anonymous@xcally.com';_0x30ea7b[_0x8425('0x1b')]=_0x394ab0[_0x8425('0x1b')];_0x30ea7b['port']=_0x394ab0[_0x8425('0x1c')]||0x3e1;if(_0x394ab0[_0x8425('0x1d')]){_0x30ea7b[_0x8425('0x1d')]=!![];}else{_0x30ea7b[_0x8425('0x1d')]=![];_0x30ea7b['autotls']=_0x8425('0x1e');}return _0x30ea7b;};EmailImap[_0x8425('0x11')][_0x8425('0xa')]=function(){this[_0x8425('0x0')]['openBox'](this['mailbox'],![],this[_0x8425('0x1f')][_0x8425('0xd')](this));};EmailImap['prototype']['handleOpenBox']=function(_0x4fe385,_0x54f150){if(_0x4fe385){this[_0x8425('0xf')](_0x4fe385,!![]);}else{this['emit'](_0x8425('0x20'),_0x54f150);this[_0x8425('0x21')]();}};EmailImap['prototype'][_0x8425('0x22')]=function(_0x28abe0){if(_0x28abe0){this[_0x8425('0xf')](_0x28abe0,!![]);}else{this['imap'][_0x8425('0xb')]();}};EmailImap[_0x8425('0x11')]['readUnseen']=function(){this[_0x8425('0x0')][_0x8425('0x23')]([_0x8425('0x24')],this['handleReadUnseen'][_0x8425('0xd')](this));};EmailImap[_0x8425('0x11')][_0x8425('0x25')]=function(_0x1c1909,_0x1adbd3){if(_0x1c1909){this[_0x8425('0xf')](_0x1c1909,!![]);}else{if(_0x1adbd3[_0x8425('0x26')]){try{var _0x7459c9=this[_0x8425('0x0')]['fetch'](_0x1adbd3,{'bodies':'','markSeen':!![]});_0x7459c9['on']('message',this[_0x8425('0x27')]['bind'](this));_0x7459c9['once'](_0x8425('0xe'),this[_0x8425('0x28')][_0x8425('0xd')](this));_0x7459c9[_0x8425('0x8')](_0x8425('0xb'),this['handleFetchEnd'][_0x8425('0xd')](this));}catch(_0x343863){logger[_0x8425('0xe')](_0x343863);}}else{this['imap'][_0x8425('0x29')](!![],this[_0x8425('0x22')][_0x8425('0xd')](this));}}};EmailImap[_0x8425('0x11')][_0x8425('0x27')]=function(_0x5cd1d9){_0x5cd1d9['on']('body',this[_0x8425('0x2a')][_0x8425('0xd')](this));_0x5cd1d9[_0x8425('0x8')](_0x8425('0x2b'),this[_0x8425('0x2c')][_0x8425('0xd')](this));_0x5cd1d9['once'](_0x8425('0xb'),this['handleMessageEnd'][_0x8425('0xd')](this));};EmailImap[_0x8425('0x11')][_0x8425('0x2a')]=function(_0x59bf68){simpleParser(_0x59bf68,{'Iconv':Iconv},this[_0x8425('0x2d')]['bind'](this));};EmailImap['prototype']['handleMessageAttributes']=function(){};EmailImap[_0x8425('0x11')]['handleMessageEnd']=function(){};EmailImap[_0x8425('0x11')][_0x8425('0x2d')]=function(_0xd7af9b,_0x4baf32){if(_0xd7af9b){logger[_0x8425('0xe')](_0xd7af9b);}else{var _0x430549=this;utils[_0x8425('0x2e')](this[_0x8425('0x6')],_0x4baf32,function(_0x4176a4){_0x430549[_0x8425('0x2f')](_0x8425('0x1a'),_0x4176a4);});}};EmailImap[_0x8425('0x11')][_0x8425('0x30')]=function(){this[_0x8425('0x0')]['closeBox'](!![],this[_0x8425('0x22')][_0x8425('0xd')](this));};EmailImap[_0x8425('0x11')]['handleFetchError']=function(_0x31c628){this[_0x8425('0xf')](_0x31c628);this['imap'][_0x8425('0x29')](!![],this['handleCloseBox']['bind'](this));};EmailImap[_0x8425('0x11')][_0x8425('0xc')]=function(){this[_0x8425('0x2f')](_0x8425('0xb'));};EmailImap[_0x8425('0x11')][_0x8425('0xf')]=function(_0x5f5a1d,_0x508e02){logger[_0x8425('0xe')](_0x8425('0xf'),this['account'][_0x8425('0x1a')],JSON[_0x8425('0x31')](_0x5f5a1d));var _0x3bae4d='';if(_0x5f5a1d){if(_0x5f5a1d['textCode']){_0x3bae4d=_0x5f5a1d['textCode'];}else{for(var _0x439c19 in _0x5f5a1d){if(_0x5f5a1d[_0x8425('0x32')](_0x439c19)){_0x3bae4d+=_[_0x8425('0x33')](_0x439c19)+':\x20'+_0x5f5a1d[_0x439c19]+'\x0a';}}}}if(_0x508e02){this[_0x8425('0x0')][_0x8425('0xb')]();}else{this[_0x8425('0x2f')](_0x8425('0xe'),_0x3bae4d);this[_0x8425('0x2f')]('end');}};module[_0x8425('0x34')]=EmailImap;
\ No newline at end of file
index d284135..70f1ff9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0xc219=['verify','Not\x20verifired','nodemailer','prototype','send','createTransport','toString'];(function(_0x2b152a,_0x3dd988){var _0x2ad4c7=function(_0x2fa97c){while(--_0x2fa97c){_0x2b152a['push'](_0x2b152a['shift']());}};_0x2ad4c7(++_0x3dd988);}(_0xc219,0x12f));var _0x9c21=function(_0x4de1b1,_0x18c64c){_0x4de1b1=_0x4de1b1-0x0;var _0x639f27=_0xc219[_0x4de1b1];return _0x639f27;};'use strict';var nodemailer=require(_0x9c21('0x0'));var inlineBase64=require('nodemailer-plugin-inline-base64');function EmailSmtp(){}EmailSmtp[_0x9c21('0x1')][_0x9c21('0x2')]=function(_0x22df08,_0x4acead){return new Promise(function(_0x29db27,_0x47f815){var _0x5affdd=nodemailer[_0x9c21('0x3')](_0x22df08);_0x5affdd['use']('compile',inlineBase64());_0x5affdd['sendMail'](_0x4acead,function(_0x392241,_0x4c7fb5){if(_0x392241){_0x47f815(_0x392241[_0x9c21('0x4')]());}else{_0x29db27(_0x4c7fb5);}});});};EmailSmtp[_0x9c21('0x1')][_0x9c21('0x5')]=function(_0x11e558){return new Promise(function(_0xfbc309,_0x40926a){var _0x368a7d=nodemailer['createTransport'](_0x11e558);_0x368a7d[_0x9c21('0x5')](function(_0x2b5a58,_0x13ac37){if(_0x2b5a58){_0x40926a(_0x2b5a58[_0x9c21('0x4')]());}else{if(_0x13ac37){_0xfbc309(_0x13ac37);}else{_0x40926a(_0x9c21('0x6'));}}});});};module['exports']=EmailSmtp;
\ No newline at end of file
index c4484c9..3ece81f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0x332e=['Anonymous','pop','isEmpty','anonymous','html','test','replace','<img','attachments','forEach','filename','_SRC','_IMG','<span\x20style=font-weight:bold>\x20[Attachment:\x20','\x20]</span>','body','textAsHtml','message','includes','originTo','originCc','bcc','attach','type','attachment','format','now','server/files/attachments/','writeFileSync','content','contentType','headerLines','Auto-Submitted:\x20auto-replied','Precedence:\x20auto_reply','parser','from','subject','messageId','inReplyTo','date','YYYY-MM-DD\x20HH:mm:ss','filter','info','Email\x20message\x20%s\x20is\x20in\x20TNEF\x20format:\x20message\x20content\x20will\x20be\x20converted\x20by\x20the\x20system','BodyHTML','<p>Empty\x20message</p>','Attachments','Title','Data','generateXOAuth2Token','auth=Bearer\x20','utf-8','base64','lodash','path','util','node-tnef','email','head','address','generate','@xcally.com','value','name','substring','indexOf','split','length','slice','join'];(function(_0x32d5a8,_0x50ceb3){var _0x4aa8dc=function(_0x5d5657){while(--_0x5d5657){_0x32d5a8['push'](_0x32d5a8['shift']());}};_0x4aa8dc(++_0x50ceb3);}(_0x332e,0x107));var _0xe332=function(_0x4c8890,_0x34c779){_0x4c8890=_0x4c8890-0x0;var _0x2e7ed5=_0x332e[_0x4c8890];return _0x2e7ed5;};'use strict';var _=require(_0xe332('0x0'));var moment=require('moment');var random=require('randomstring');var fs=require('fs');var path=require(_0xe332('0x1'));var util=require(_0xe332('0x2'));var tnef=require(_0xe332('0x3'));var logger=require('../../../config/logger')(_0xe332('0x4'));var config=require('../../../config/environment');function getAddress(_0xf6201d){var _0x3146e1=_[_0xe332('0x5')](_0xf6201d['value']);return _0x3146e1&&_0x3146e1[_0xe332('0x6')]?_0x3146e1[_0xe332('0x6')]:'anonymous'+random[_0xe332('0x7')](0x6)+_0xe332('0x8');}function getFirstName(_0x3eaa3b){var _0x5f1fe3=_[_0xe332('0x5')](_0x3eaa3b[_0xe332('0x9')]);if(_0x5f1fe3&&_0x5f1fe3[_0xe332('0xa')]){if(_0x5f1fe3[_0xe332('0xa')]==_0x5f1fe3[_0xe332('0x6')]){return _0x5f1fe3[_0xe332('0xa')][_0xe332('0xb')](0x0,_0x5f1fe3[_0xe332('0xa')][_0xe332('0xc')]('@'));}var _0x3fc96d=_0x5f1fe3[_0xe332('0xa')][_0xe332('0xd')](/\s+/);return _0x3fc96d[_0xe332('0xe')]>0x1?_0x3fc96d[_0xe332('0xf')](0x0,-0x1)[_0xe332('0x10')]('\x20'):_0x5f1fe3[_0xe332('0xa')];}return _0xe332('0x11');}function getLastName(_0x292ba8){var _0x1e0a27=_['head'](_0x292ba8['value']);if(_0x1e0a27&&_0x1e0a27[_0xe332('0xa')]){var _0xc4b661=_0x1e0a27['name'][_0xe332('0xd')](/\s+/);return _0xc4b661[_0xe332('0xe')]>0x1?_0xc4b661[_0xe332('0x12')]():'';}return'';}function getMails(_0x2bfba4,_0x363730){var _0x1153a4='';for(var _0x1af038=0x0;_0x1af038<_0x363730[_0xe332('0x9')]['length'];_0x1af038+=0x1){if(_0x363730['value'][_0x1af038][_0xe332('0x6')]!==_0x2bfba4){if(!_[_0xe332('0x13')](_0x1153a4)){_0x1153a4+=',';}_0x1153a4+=_0x363730[_0xe332('0x9')][_0x1af038][_0xe332('0xa')]||_0x363730[_0xe332('0x9')][_0x1af038][_0xe332('0x6')]||'';_0x1153a4+='\x20<';_0x1153a4+=_0x363730[_0xe332('0x9')][_0x1af038]['address']?_0x363730[_0xe332('0x9')][_0x1af038][_0xe332('0x6')]:_0xe332('0x14')+random['generate'](0x6)+_0xe332('0x8');_0x1153a4+='>';}}return _0x1153a4;}function parseEmail(_0x3fcd4c,_0x10680d,_0x3a67f3){if(_0x10680d[_0xe332('0x15')]){var _0x4e4854=/<script\b[^<]*(?:(?!<\/script>)<[^<]*)*<\/script>/gi;while(_0x4e4854[_0xe332('0x16')](_0x10680d[_0xe332('0x15')])){_0x10680d['html']=_0x10680d['html'][_0xe332('0x17')](_0x4e4854,'');}if(_0x10680d[_0xe332('0x15')]['includes'](_0xe332('0x18'))){var _0x1e077e=[];_0x10680d[_0xe332('0x19')][_0xe332('0x1a')](_0x309ee5=>{_0x1e077e['push'](_0x309ee5[_0xe332('0x1b')]);});var _0x20ed16=/<img.*? _SRC(.*?)[^>]+>/g;var _0xe5696=/src="data:image\/([a-zA-Z]*);base64,([^"]*)"/g;var _0x219297=_0x10680d[_0xe332('0x15')][_0xe332('0x17')](_0xe5696,_0xe332('0x1c'));var _0xee326e=_0x219297[_0xe332('0x17')](_0x20ed16,_0xe332('0x1d'));for(let _0x317767=0x0;_0x317767<_0x1e077e[_0xe332('0xe')];_0x317767++){var _0x1540c4=_0xee326e[_0xe332('0x17')]('_IMG',_0xe332('0x1e')+_0x1e077e[_0x317767]+_0xe332('0x1f'));_0xee326e=_0x1540c4;}_0x10680d[_0xe332('0x15')]=_0xee326e;}_0x3a67f3[_0xe332('0x20')]=_0x10680d[_0xe332('0x15')];}else{_0x3a67f3[_0xe332('0x20')]=_0x10680d[_0xe332('0x21')];}if(_0x3a67f3['body']){_0x3a67f3[_0xe332('0x20')]=_0x3a67f3[_0xe332('0x20')][_0xe332('0x17')](/<a\s+/gi,'<a\x20target=\x22_blank\x22\x20');}if(_0x10680d['to']){_0x3a67f3[_0xe332('0x22')]['originTo']=getMails(null,_0x10680d['to']);var _0x52a659=getMails(_0x3fcd4c['email'],_0x10680d['to']);if(!_[_0xe332('0x13')](_0x52a659)){_0x3a67f3['message']['cc']+=_0x52a659;}}if(_0x10680d['cc']){_0x3a67f3['message']['originCc']=getMails(null,_0x10680d['cc']);var _0x3a45a1=getMails(_0x3fcd4c[_0xe332('0x4')],_0x10680d['cc']);if(!_[_0xe332('0x13')](_0x3a45a1)){if(!_[_0xe332('0x13')](_0x3a67f3[_0xe332('0x22')]['cc'])){_0x3a67f3[_0xe332('0x22')]['cc']+=',';}_0x3a67f3[_0xe332('0x22')]['cc']+=_0x3a45a1;}}if(!_[_0xe332('0x23')](_0x3a67f3[_0xe332('0x22')][_0xe332('0x24')],_0x3fcd4c[_0xe332('0x4')])&&!_[_0xe332('0x23')](_0x3a67f3[_0xe332('0x22')][_0xe332('0x25')],_0x3fcd4c['email'])){_0x3a67f3[_0xe332('0x22')][_0xe332('0x26')]=_0x3fcd4c['email'];}if(_0x10680d[_0xe332('0x19')]&&_0x10680d['attachments'][_0xe332('0xe')]){_0x3a67f3[_0xe332('0x22')][_0xe332('0x27')]=_0x10680d['attachments'][_0xe332('0xe')];for(var _0x3d26ce=0x0,_0x261753,_0x310031,_0x5091a8;_0x3d26ce<_0x10680d[_0xe332('0x19')][_0xe332('0xe')];_0x3d26ce+=0x1){if(_0x10680d[_0xe332('0x19')][_0x3d26ce][_0xe332('0x28')]===_0xe332('0x29')){_0x5091a8=_0x10680d[_0xe332('0x19')][_0x3d26ce][_0xe332('0x1b')]||'attachment-'+_0x3d26ce;_0x261753=util[_0xe332('0x2a')]('%s-%s',Date[_0xe332('0x2b')](),_0x5091a8);_0x310031=path[_0xe332('0x10')](config['root'],_0xe332('0x2c'),_0x261753);fs[_0xe332('0x2d')](_0x310031,_0x10680d['attachments'][_0x3d26ce][_0xe332('0x2e')]);_0x3a67f3[_0xe332('0x22')][_0xe332('0x19')]['push']({'name':_0x5091a8,'basename':_0x261753,'type':_0x10680d[_0xe332('0x19')][_0x3d26ce][_0xe332('0x2f')],'filepath':_0x310031});}}}if(_0x10680d[_0xe332('0x30')]&&_0x10680d[_0xe332('0x30')]['length']>0x0){var _0x323998=[_0xe332('0x31'),'X-Auto-Response-Suppress:\x20All',_0xe332('0x32')];for(var _0x1dcbb2=0x0;_0x1dcbb2<_0x10680d[_0xe332('0x30')][_0xe332('0xe')];_0x1dcbb2++){var _0x4f5860=_['indexOf'](_0x323998,_0x10680d[_0xe332('0x30')][_0x1dcbb2]['line']);if(_0x4f5860>=0x0){_0x3a67f3['isAutoreply']=!![];}}}return _0x3a67f3;}exports[_0xe332('0x33')]=function(_0x3906ae,_0x1b8928,_0x571891){var _0x5099c3={'from':getAddress(_0x1b8928['from']),'firstName':getFirstName(_0x1b8928['from']),'lastName':getLastName(_0x1b8928['from']),'mapKey':_0xe332('0x4'),'message':{'from':getMails(_0x3906ae[_0xe332('0x4')],_0x1b8928[_0xe332('0x34')]),'to':_0x3906ae['email'],'cc':'','subject':_0x1b8928[_0xe332('0x35')]||'','messageId':_0x1b8928[_0xe332('0x36')],'inReplyTo':_0x1b8928[_0xe332('0x37')],'sentAt':moment(_0x1b8928[_0xe332('0x38')])[_0xe332('0x2a')](_0xe332('0x39')),'attach':![],'attachments':[]}};if(!_0x1b8928[_0xe332('0x15')]&&!_0x1b8928['textAsHtml']){var _0x2de43f=_[_0xe332('0x3a')](_0x1b8928[_0xe332('0x19')],{'contentType':'application/ms-tnef'});if(_0x2de43f[_0xe332('0xe')]){logger[_0xe332('0x3b')](util[_0xe332('0x2a')](_0xe332('0x3c'),_0x1b8928[_0xe332('0x36')]));tnef['parseBuffer'](_['first'](_0x2de43f)[_0xe332('0x2e')],function(_0x387d70,_0x256e9f){if(_0x256e9f){_0x1b8928[_0xe332('0x15')]=_0x256e9f[_0xe332('0x3d')]||_0xe332('0x3e');if(_0x256e9f[_0xe332('0x3f')]){for(var _0x436e43=0x0;_0x436e43<_0x256e9f[_0xe332('0x3f')][_0xe332('0xe')];_0x436e43++){var _0x4073b2=_0x256e9f['Attachments'][_0x436e43];_0x5099c3[_0xe332('0x22')]['attachments']['push']({'filename':_0x4073b2[_0xe332('0x40')],'content':Buffer['from'](_0x4073b2[_0xe332('0x41')])});}}}_0x571891(parseEmail(_0x3906ae,_0x1b8928,_0x5099c3));});}else{_0x1b8928[_0xe332('0x15')]='<p>Empty\x20message</p>';_0x571891(parseEmail(_0x3906ae,_0x1b8928,_0x5099c3));}}else{_0x571891(parseEmail(_0x3906ae,_0x1b8928,_0x5099c3));}};exports[_0xe332('0x42')]=function(_0xc54fd6,_0x1fdf96){var _0x21c83b=['user='+(_0x1fdf96||''),_0xe332('0x43')+_0xc54fd6,'',''];return Buffer['from'](_0x21c83b[_0xe332('0x10')]('\ 1'),_0xe332('0x44'))['toString'](_0xe332('0x45'));};
\ No newline at end of file
index c4e2fff..ac79a7b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0xacd7=['active','Imap','Smtp','lodash','name','Service','key','SERV'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0xacd7,0x6b));var _0x7acd=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0xacd7[_0x3dd15e];return _0x231fd0;};'use strict';var _=require(_0x7acd('0x0'));function MailAccount(_0x37b7cd){this['id']=_0x37b7cd['id']||0x0;this[_0x7acd('0x1')]=_0x37b7cd[_0x7acd('0x1')]||_0x7acd('0x2');this[_0x7acd('0x3')]=_0x37b7cd['key']||_0x7acd('0x4');this[_0x7acd('0x5')]=_0x37b7cd['active']||![];this[_0x7acd('0x6')]=_0x37b7cd[_0x7acd('0x6')]||[];this[_0x7acd('0x7')]=_0x37b7cd[_0x7acd('0x7')]||[];}module['exports']=MailAccount;
\ No newline at end of file
index 067fa1c..2e13961 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0xdf0e=['isUndefined','merge','exports','lodash','../model/mailAccount','mailAccounts','prototype','mergeFromDatabase','hasOwnProperty','length'];(function(_0x27e0d1,_0x400438){var _0xa9888b=function(_0x51cff1){while(--_0x51cff1){_0x27e0d1['push'](_0x27e0d1['shift']());}};_0xa9888b(++_0x400438);}(_0xdf0e,0xd5));var _0xedf0=function(_0x175756,_0x4450bc){_0x175756=_0x175756-0x0;var _0x3be0a6=_0xdf0e[_0x175756];return _0x3be0a6;};'use strict';var _=require(_0xedf0('0x0'));var MailAccount=require(_0xedf0('0x1'));var Realtime=function(){this[_0xedf0('0x2')]={};};function freeIsNotKey(_0xa232dc,_0xc9c4e,_0x1bd19d){var _0x133d06=_['mapKeys'](_0xa232dc,function(_0x596ffb,_0x2e482a){return _0x596ffb[_0x1bd19d];});for(var _0x1e773e in _0xc9c4e){if(_0xc9c4e['hasOwnProperty'](_0x1e773e)){if(!_0x133d06[_0x1e773e]){delete _0xc9c4e[_0x1e773e];}}}}Realtime[_0xedf0('0x3')][_0xedf0('0x4')]=function(_0x1a15e2,_0x4eb5ae){for(var _0x28b90e in _0x4eb5ae){if(_0x1a15e2[_0xedf0('0x5')](_0x28b90e)){_0x1a15e2[_0x28b90e]=_0x4eb5ae[_0x28b90e];}}};Realtime['prototype']['initMailAccounts']=function(){var _0x1f4871=this;return function(_0x2bda57){if(_0x2bda57){freeIsNotKey(_0x2bda57,_0x1f4871[_0xedf0('0x2')],'id');for(var _0x47ead3=0x0,_0x4533ff={},_0x594841={};_0x47ead3<_0x2bda57[_0xedf0('0x6')];_0x47ead3+=0x1){_0x4533ff=_0x2bda57[_0x47ead3];if(_[_0xedf0('0x7')](_0x1f4871[_0xedf0('0x2')][_0x4533ff['id']])){_0x1f4871[_0xedf0('0x2')][_0x4533ff['id']]=new MailAccount(_0x4533ff);}else{_[_0xedf0('0x8')](_0x1f4871[_0xedf0('0x2')][_0x4533ff['id']],_0x4533ff);}}}return _0x1f4871[_0xedf0('0x2')];};};module[_0xedf0('0x9')]=Realtime;
\ No newline at end of file
index f7c8e7d..136609c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0xd65f=['notify','Request','NotifyMailAccount','getMailAccounts','GetMailAccount','name','provider','service','active','key','MailServerIn','CloudProvider','type','MailServerOut','getMailAccount'];(function(_0x16a223,_0x31b6e8){var _0x5ded66=function(_0x25eb5f){while(--_0x25eb5f){_0x16a223['push'](_0x16a223['shift']());}};_0x5ded66(++_0x31b6e8);}(_0xd65f,0x198));var _0xfd65=function(_0x560b33,_0x54a69c){_0x560b33=_0x560b33-0x0;var _0x15c35e=_0xd65f[_0x560b33];return _0x15c35e;};'use strict';var client=require('../client');exports[_0xfd65('0x0')]=function(){return function(){return client['Request'](_0xfd65('0x1'),{'options':{'attributes':['id',_0xfd65('0x2'),_0xfd65('0x3'),_0xfd65('0x4'),'email',_0xfd65('0x5'),_0xfd65('0x6'),'ListId','TemplateId'],'raw':![],'include':[{'model':_0xfd65('0x7'),'as':'Imap','include':[{'model':_0xfd65('0x8'),'attributes':['id',_0xfd65('0x2'),_0xfd65('0x4'),_0xfd65('0x9'),'data5'],'as':_0xfd65('0x8')}]},{'model':_0xfd65('0xa'),'as':'Smtp','include':[{'model':_0xfd65('0x8'),'attributes':['id',_0xfd65('0x2'),_0xfd65('0x4'),'type','data5'],'as':_0xfd65('0x8')}]}]},'log':_0xfd65('0xb')});};};exports[_0xfd65('0xc')]=function(_0x1d01d0,_0x5cf289){return client[_0xfd65('0xd')](_0xfd65('0xe'),{'account':{'id':_0x1d01d0},'body':_0x5cf289,'log':'NotifyMailAccount'});};
\ No newline at end of file
index e088073..d7e3ad4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0x383f=['GetSettings','../client','Request','ShowSetting','loginMailFrequency'];(function(_0x567534,_0x19334c){var _0x538292=function(_0x1d69a3){while(--_0x1d69a3){_0x567534['push'](_0x567534['shift']());}};_0x538292(++_0x19334c);}(_0x383f,0x100));var _0xf383=function(_0x7ba2d8,_0x54c444){_0x7ba2d8=_0x7ba2d8-0x0;var _0x58dda4=_0x383f[_0x7ba2d8];return _0x58dda4;};'use strict';var client=require(_0xf383('0x0'));exports['getSettings']=function(){return client[_0xf383('0x1')](_0xf383('0x2'),{'options':{'raw':!![],'where':{'id':0x1},'attributes':[_0xf383('0x3')]},'log':_0xf383('0x4')});};
\ No newline at end of file
index 09d8cce..9d530ff 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(_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
+var _0xa9e0=['catch','values','mailAccounts','length','Imap','password','Smtp','pass','server','http','stringify','127.0.0.1','log','Email\x20RPC\x20server\x20listening\x20on\x20127.0.0.1:%d!','RPC\x20listening\x20on\x20port:','jayson/promise','bluebird','lodash','listen','sendMail','then','error','Verified'];(function(_0x4a9fb1,_0x273043){var _0x348672=function(_0x142b69){while(--_0x142b69){_0x4a9fb1['push'](_0x4a9fb1['shift']());}};_0x348672(++_0x273043);}(_0xa9e0,0x123));var _0x0a9e=function(_0x5ddb1c,_0x5ea4df){_0x5ddb1c=_0x5ddb1c-0x0;var _0x354adc=_0xa9e0[_0x5ddb1c];return _0x354adc;};'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 00eccb7..16ed024 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0x4afb=['websocket','polling','redis','defaults','adapter','../../config/triggers','default','../../config/socketio','../../config/express','../../routes','listening','exports','http','sticky-session','ioredis','../../config/environment','timeout','listen','port'];(function(_0x128450,_0x5869ba){var _0x4d80ed=function(_0x4a2da3){while(--_0x4a2da3){_0x128450['push'](_0x128450['shift']());}};_0x4d80ed(++_0x5869ba);}(_0x4afb,0x7e));var _0xb4af=function(_0xb7a9fa,_0xed6c4d){_0xb7a9fa=_0xb7a9fa-0x0;var _0xb3d00e=_0x4afb[_0xb7a9fa];return _0xb3d00e;};'use strict';var _=require('lodash');var http=require(_0xb4af('0x0'));var express=require('express');var sticky=require(_0xb4af('0x1'));var Redis=require(_0xb4af('0x2'));var config=require(_0xb4af('0x3'));var app=express();var server=http['createServer'](app);server[_0xb4af('0x4')]=0xdbba0;if(sticky[_0xb4af('0x5')](server,config[_0xb4af('0x6')])){var socketio=require('socket.io')(server,{'transports':[_0xb4af('0x7'),_0xb4af('0x8')]});config[_0xb4af('0x9')]=_[_0xb4af('0xa')](config[_0xb4af('0x9')],{'host':'localhost','port':0x18eb});socketio[_0xb4af('0xb')](require('socket.io-redis')({'pubClient':new Redis(config[_0xb4af('0x9')]),'subClient':new Redis(config[_0xb4af('0x9')])}));require(_0xb4af('0xc'))[_0xb4af('0xd')]();require(_0xb4af('0xe'))[_0xb4af('0xd')](socketio);require(_0xb4af('0xf'))[_0xb4af('0xd')](app);require(_0xb4af('0x10'))[_0xb4af('0xd')](app);}else{server['once'](_0xb4af('0x11'),function(){console['log']('Express\x20server\x20listening\x20on\x20port\x20%d!',config[_0xb4af('0x6')]);});}exports=module[_0xb4af('0x12')]=app;
\ No newline at end of file
index 8139ddc..898a337 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0xe65f=['error','rpc','message','result','catch','jayson/promise','../../config/logger','client','Request','request','debug','routing'];(function(_0x3d3c6c,_0x14a056){var _0x56e147=function(_0x23de60){while(--_0x23de60){_0x3d3c6c['push'](_0x3d3c6c['shift']());}};_0x56e147(++_0x14a056);}(_0xe65f,0x161));var _0xfe65=function(_0x56482c,_0x16118d){_0x56482c=_0x56482c-0x0;var _0x5aae7a=_0xe65f[_0x56482c];return _0x5aae7a;};'use strict';var jayson=require(_0xfe65('0x0'));var BPromise=require('bluebird');var logger=require(_0xfe65('0x1'))('routing');var client=jayson[_0xfe65('0x2')]['http']({'port':0x2329});client[_0xfe65('0x3')]=function(_0x11a425,_0x3c4c22){return new BPromise(function(_0xe35406,_0x54cf3d){return client[_0xfe65('0x4')](_0x11a425,_0x3c4c22)['then'](function(_0x5c8ded){logger[_0xfe65('0x5')]('rpc',_0xfe65('0x6'),_0x11a425,_0x3c4c22,_0x5c8ded);if(_0x5c8ded[_0xfe65('0x7')]){logger[_0xfe65('0x7')](_0xfe65('0x8'),_0xfe65('0x6'),_0x11a425,_0x5c8ded[_0xfe65('0x7')][_0xfe65('0x9')],_0x3c4c22);return _0x54cf3d(_0x5c8ded[_0xfe65('0x7')][_0xfe65('0x9')]);}else{return _0xe35406(_0x5c8ded[_0xfe65('0xa')]);}})[_0xfe65('0xb')](function(_0x5d6e2b){logger[_0xfe65('0x7')]('rpc',_0xfe65('0x6'),_0x11a425,_0x5d6e2b,_0x3c4c22);return _0x54cf3d(_0x5d6e2b);});});};module['exports']=client;
\ No newline at end of file
index 73c0832..38dff4c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0xe790=['./rpc/whatsappQueue','then','initAgents','initIntervals','initOpenchannelQueues','initChatQueues','initSmsQueues','initMailQueues','getWhatsappQueues','listen','catch','log','./server','./realtime','./rpc/user','./rpc/interval','./rpc/openchannelQueue','./rpc/chatQueue','./rpc/smsQueue','./rpc/faxQueue'];(function(_0xdbc0da,_0x376234){var _0x54157f=function(_0x533506){while(--_0x533506){_0xdbc0da['push'](_0xdbc0da['shift']());}};_0x54157f(++_0x376234);}(_0xe790,0x1c4));var _0x0e79=function(_0x5207a9,_0x33f3c0){_0x5207a9=_0x5207a9-0x0;var _0x944cb3=_0xe790[_0x5207a9];return _0x944cb3;};'use strict';var BPromise=require('bluebird');var server=require(_0x0e79('0x0'));var Realtime=require(_0x0e79('0x1'));var user=require(_0x0e79('0x2'));var interval=require(_0x0e79('0x3'));var openchannelQueue=require(_0x0e79('0x4'));var chatQueue=require(_0x0e79('0x5'));var smsQueue=require(_0x0e79('0x6'));var mailQueue=require('./rpc/mailQueue');var faxQueue=require(_0x0e79('0x7'));var whatsappQueue=require(_0x0e79('0x8'));var realtime=new Realtime();function initRealtime(){return BPromise['resolve']()[_0x0e79('0x9')](user['getAgents']())['then'](realtime[_0x0e79('0xa')]())[_0x0e79('0x9')](interval['getIntervals']())[_0x0e79('0x9')](realtime[_0x0e79('0xb')]())[_0x0e79('0x9')](openchannelQueue['getOpenchannelQueues']())[_0x0e79('0x9')](realtime[_0x0e79('0xc')]())[_0x0e79('0x9')](chatQueue['getChatQueues']())[_0x0e79('0x9')](realtime[_0x0e79('0xd')]())['then'](smsQueue['getSmsQueues']())['then'](realtime[_0x0e79('0xe')]())[_0x0e79('0x9')](mailQueue['getMailQueues']())[_0x0e79('0x9')](realtime[_0x0e79('0xf')]())['then'](faxQueue['getFaxQueues']())[_0x0e79('0x9')](realtime['initFaxQueues']())[_0x0e79('0x9')](whatsappQueue[_0x0e79('0x10')]())['then'](realtime['initWhatsappQueues']())[_0x0e79('0x9')](function(){return realtime;});}function main(){return server[_0x0e79('0x11')](realtime)['then'](function(_0x50b29a){return initRealtime();})[_0x0e79('0x9')](function(_0x229d88){return setInterval(initRealtime,0x1388);})[_0x0e79('0x12')](function(_0x4c3752){console[_0x0e79('0x13')](_0x4c3752);});}main();
\ No newline at end of file
index b36a53e..6f64e30 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1261=['isNil','register','ignoreFactChanges','activeRules','prototype','isArray','rules','concat','isObject','push','sync','filter','orderBy','asc','result','clone','name','nextTick','ruleRef','isEqual','restart','length','condition','noop','findRules','matches','turn','prioritize','priority','toString','consequence','fromJSON','isString','parse','map','object','exports','util','events','EventEmitter','init'];(function(_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
+var _0xe14b=['next','restart','condition','noop','findRules','matches','turn','length','prioritize','priority','toJSON','map','toString','fromJSON','isString','object','register','exports','lodash','util','isNil','ignoreFactChanges','inherits','prototype','init','rules','activeRules','isArray','concat','push','sync','filter','orderBy','asc','execute','result','clone','consequence','ruleRef','name','index_','nextTick','call'];(function(_0x3c2bb0,_0x434656){var _0x16332a=function(_0x2c36de){while(--_0x2c36de){_0x3c2bb0['push'](_0x3c2bb0['shift']());}};_0x16332a(++_0x434656);}(_0xe14b,0x93));var _0xbe14=function(_0x23ce5c,_0x2edcac){_0x23ce5c=_0x23ce5c-0x0;var _0x3e6b16=_0xe14b[_0x23ce5c];return _0x3e6b16;};'use strict';var _=require(_0xbe14('0x0'));var util=require(_0xbe14('0x1'));var EventEmitter=require('events')['EventEmitter'];function RuleEngine(_0x11c3a0,_0x36393a){this['init']();if(!_[_0xbe14('0x2')](_0x11c3a0)){this['register'](_0x11c3a0);}if(_0x36393a){this['ignoreFactChanges']=_0x36393a[_0xbe14('0x3')];}return this;}util[_0xbe14('0x4')](RuleEngine,EventEmitter);RuleEngine[_0xbe14('0x5')][_0xbe14('0x6')]=function(_0x1d9ade){this[_0xbe14('0x7')]=[];this[_0xbe14('0x8')]=[];};RuleEngine['prototype']['register']=function(_0x496063){if(Array[_0xbe14('0x9')](_0x496063)){this[_0xbe14('0x7')]=this[_0xbe14('0x7')][_0xbe14('0xa')](_0x496063);}else if(_0x496063!==null&&_['isObject'](_0x496063)){this['rules'][_0xbe14('0xb')](_0x496063);}this[_0xbe14('0xc')]();};RuleEngine['prototype'][_0xbe14('0xc')]=function(){this[_0xbe14('0x8')]=this[_0xbe14('0x7')][_0xbe14('0xd')](function(_0x27792f){if(_[_0xbe14('0x2')](_0x27792f['on'])){_0x27792f['on']=!![];}if(_0x27792f['on']===!![]){return _0x27792f;}});this[_0xbe14('0x8')]=_[_0xbe14('0xe')](this[_0xbe14('0x8')],['p'],[_0xbe14('0xf')]);};RuleEngine[_0xbe14('0x5')][_0xbe14('0x10')]=function(_0x813399,_0x530538){var _0x55b3a7=![];_0x813399[_0xbe14('0x11')]=!![];var _0x3dc4a9=_[_0xbe14('0x12')](_0x813399);var _0x37ce4e=_['clone'](_0x813399);var _0x21c789=this[_0xbe14('0x8')];var _0xfd7b8f=[];var _0x123ede=this[_0xbe14('0x3')];(function FnRuleLoop(_0x29ab73){var _0x17ae86={'rules':function(){return _0x21c789;},'rule':function(){return _0x21c789[_0x29ab73];},'when':function(_0x5ea1f8){if(_0x5ea1f8){var _0x137ee5=_0x21c789[_0x29ab73][_0xbe14('0x13')];_0x137ee5[_0xbe14('0x14')]=_0x21c789[_0x29ab73]['id']||_0x21c789[_0x29ab73][_0xbe14('0x15')]||_0xbe14('0x16')+_0x29ab73;process[_0xbe14('0x17')](function(){_0xfd7b8f['push'](_0x137ee5[_0xbe14('0x14')]);_0x137ee5[_0xbe14('0x18')](_0x3dc4a9,_0x17ae86);});}else{process[_0xbe14('0x17')](function(){_0x17ae86[_0xbe14('0x19')]();});}},'restart':function(){return FnRuleLoop(0x0);},'stop':function(){_0x55b3a7=!![];return FnRuleLoop(0x0);},'next':function(_0x188ec4){if(!_0x123ede&&!_['isEqual'](_0x37ce4e,_0x3dc4a9)){_0x37ce4e=_[_0xbe14('0x12')](_0x3dc4a9);process['nextTick'](function(){_0x17ae86[_0xbe14('0x1a')]();});}else{process['nextTick'](function(){if(_[_0xbe14('0x2')](_0x188ec4)){return FnRuleLoop(_0x29ab73+0x1);}else{return FnRuleLoop(_0x188ec4);}});}}};if(_0x29ab73<_0x21c789['length']&&_0x55b3a7===![]){var _0x274018=_0x21c789[_0x29ab73][_0xbe14('0x1b')];_0x274018['call'](_0x3dc4a9,_0x17ae86);}else{process[_0xbe14('0x17')](function(){_0x3dc4a9['matchPath']=_0xfd7b8f;return _0x530538?_0x530538(_0x3dc4a9):_[_0xbe14('0x1c')]();});}}(0x0));};RuleEngine['prototype'][_0xbe14('0x1d')]=function(_0x5fa043){if(_[_0xbe14('0x2')](_0x5fa043)){return this[_0xbe14('0x7')];}else{var _0x15ef02=_[_0xbe14('0x1e')](_0x5fa043);return _['filter'](this[_0xbe14('0x7')],_0x15ef02);}};RuleEngine[_0xbe14('0x5')][_0xbe14('0x1f')]=function(_0x169369,_0x5dd475){var _0x16f884=_0x169369==='on'||_0x169369==='ON'?!![]:![];var _0x29fc64=this['findRules'](_0x5dd475);for(var _0x3c3613=0x0,_0x3b3e84=_0x29fc64[_0xbe14('0x20')];_0x3c3613<_0x3b3e84;_0x3c3613+=0x1){_0x29fc64[_0x3c3613]['on']=_0x16f884;}this[_0xbe14('0xc')]();};RuleEngine[_0xbe14('0x5')][_0xbe14('0x21')]=function(_0x31a664,_0x2b05cb){_0x31a664=parseInt(_0x31a664,0xa);var _0x4168c8=this[_0xbe14('0x1d')](_0x2b05cb);for(var _0x40538f=0x0,_0x3bf43c=_0x4168c8[_0xbe14('0x20')];_0x40538f<_0x3bf43c;_0x40538f+=0x1){_0x4168c8[_0x40538f][_0xbe14('0x22')]=_0x31a664;}this[_0xbe14('0xc')]();};RuleEngine[_0xbe14('0x5')][_0xbe14('0x23')]=function(){var _0x2ff48e=this[_0xbe14('0x7')];if(_0x2ff48e instanceof Array){_0x2ff48e=_0x2ff48e[_0xbe14('0x24')](function(_0x581e86){_0x581e86[_0xbe14('0x1b')]=_0x581e86['condition']['toString']();_0x581e86[_0xbe14('0x13')]=_0x581e86['consequence'][_0xbe14('0x25')]();return _0x581e86;});}else if(!_[_0xbe14('0x2')](_0x2ff48e)){_0x2ff48e['condition']=_0x2ff48e['condition']['toString']();_0x2ff48e[_0xbe14('0x13')]=_0x2ff48e[_0xbe14('0x13')]['toString']();}return _0x2ff48e;};RuleEngine[_0xbe14('0x5')][_0xbe14('0x26')]=function(_0x452635){this[_0xbe14('0x6')]();if(_[_0xbe14('0x27')](_0x452635)){_0x452635=JSON['parse'](_0x452635);}if(_0x452635 instanceof Array){_0x452635=_0x452635['map'](function(_0x15a997){_0x15a997['condition']=eval('('+_0x15a997['condition']+')');_0x15a997['consequence']=eval('('+_0x15a997[_0xbe14('0x13')]+')');return _0x15a997;});}else if(_0x452635!==null&&typeof _0x452635==_0xbe14('0x28')){_0x452635[_0xbe14('0x1b')]=eval('('+_0x452635[_0xbe14('0x1b')]+')');_0x452635[_0xbe14('0x13')]=eval('('+_0x452635[_0xbe14('0x13')]+')');}this[_0xbe14('0x29')](_0x452635);};module[_0xbe14('0x2a')]=RuleEngine;
\ No newline at end of file
index 2bfa29e..90accf1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0x8737=['http','request','then','error','message','catch','sendMailMessage','SendMail','bluebird','client'];(function(_0x3f2a90,_0x50baf1){var _0xb46279=function(_0x5e47b5){while(--_0x5e47b5){_0x3f2a90['push'](_0x3f2a90['shift']());}};_0xb46279(++_0x50baf1);}(_0x8737,0x15c));var _0x7873=function(_0x1b2621,_0x5a13f2){_0x1b2621=_0x1b2621-0x0;var _0x97f373=_0x8737[_0x1b2621];return _0x97f373;};'use strict';var BPromise=require(_0x7873('0x0'));var jayson=require('jayson/promise');var client=jayson[_0x7873('0x1')][_0x7873('0x2')]({'port':0x232b});function request(_0x5e35ac,_0x3d2635){return new BPromise(function(_0x920bd0,_0x3c3818){return client[_0x7873('0x3')](_0x5e35ac,_0x3d2635)[_0x7873('0x4')](function(_0x11d31d){if(_0x11d31d['error']){return _0x3c3818(_0x11d31d[_0x7873('0x5')][_0x7873('0x6')]);}else{return _0x920bd0(_0x11d31d['result']);}})[_0x7873('0x7')](function(_0x408a2d){return _0x3c3818(_0x408a2d);});});}exports[_0x7873('0x8')]=function(_0x539113,_0x5d1fd2){return request(_0x7873('0x9'),{'account':_0x539113,'message':_0x5d1fd2});};
\ No newline at end of file
index 35a04be..1ab15a6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0x397c=['whatsappWaitingInteractions','updateRealtime','prototype','getChannelStatus','Capacity','maxcapacity','working','mail','chat','openchannel','fax','whatsapp','Status','toNumber','format','mailStatus','mailStatusTime','whatsappStatusTime','busyQueue','stringify','emit','exports','lodash','moment','md5','ioredis','../../../config/environment','defaults','redis','localhost','name','online','voicePause','chatPause','mailPause','faxPause','smsPause','openchannelPause','chatStatus','unknown','chatStatusTime','chatCapacity','chatCurrentCapacity','mailCurrentCapacity','faxStatus','faxStatusTime','faxCapacity','faxCurrentCapacity','smsStatus','smsStatusTime','smsCapacity','smsCurrentCapacity','whatsappStatus','whatsappCapacity','whatsappCurrentCapacity','openchannelStatus','openchannelStatusTime','openchannelCapacity','openchannelCurrentCapacity','busy','chatWaitingInteractions','faxWaitingInteractions','mailWaitingInteractions','openchannelWaitingInteractions','smsWaitingInteractions'];(function(_0x142fe9,_0xd62236){var _0x26f320=function(_0x2e8d58){while(--_0x2e8d58){_0x142fe9['push'](_0x142fe9['shift']());}};_0x26f320(++_0xd62236);}(_0x397c,0xd9));var _0xc397=function(_0x28aea5,_0x3bb12e){_0x28aea5=_0x28aea5-0x0;var _0x6a55f9=_0x397c[_0x28aea5];return _0x6a55f9;};'use strict';var _=require(_0xc397('0x0'));var moment=require(_0xc397('0x1'));var md5=require(_0xc397('0x2'));var Redis=require(_0xc397('0x3'));var config=require(_0xc397('0x4'));config['redis']=_[_0xc397('0x5')](config[_0xc397('0x6')],{'host':_0xc397('0x7'),'port':0x18eb});var io=require('socket.io-emitter')(new Redis(config[_0xc397('0x6')]));function Agent(_0x839ba){this['id']=_0x839ba['id']||0x0;this[_0xc397('0x8')]=_0x839ba[_0xc397('0x8')]||'';this[_0xc397('0x9')]=_0x839ba[_0xc397('0x9')]||!![];this['voicePause']=_0x839ba[_0xc397('0xa')]||![];this[_0xc397('0xb')]=_0x839ba[_0xc397('0xb')]||![];this['mailPause']=_0x839ba[_0xc397('0xc')]||![];this[_0xc397('0xd')]=_0x839ba[_0xc397('0xd')]||![];this[_0xc397('0xe')]=_0x839ba[_0xc397('0xe')]||![];this[_0xc397('0xf')]=_0x839ba[_0xc397('0xf')]||![];this[_0xc397('0x10')]=_0xc397('0x11');this[_0xc397('0x12')]=0x0;this[_0xc397('0x13')]=_0x839ba['chatCapacity']||0x0;this[_0xc397('0x14')]=0x0;this['mailStatus']='unknown';this['mailStatusTime']=0x0;this['mailCapacity']=_0x839ba['mailCapacity']||0x0;this[_0xc397('0x15')]=0x0;this[_0xc397('0x16')]=_0xc397('0x11');this[_0xc397('0x17')]=0x0;this['faxCapacity']=_0x839ba[_0xc397('0x18')]||0x0;this[_0xc397('0x19')]=0x0;this[_0xc397('0x1a')]=_0xc397('0x11');this[_0xc397('0x1b')]=0x0;this[_0xc397('0x1c')]=_0x839ba['smsCapacity']||0x0;this[_0xc397('0x1d')]=0x0;this[_0xc397('0x1e')]='unknown';this['whatsappStatusTime']=0x0;this[_0xc397('0x1f')]=_0x839ba[_0xc397('0x1f')]||0x0;this[_0xc397('0x20')]=0x0;this[_0xc397('0x21')]=_0xc397('0x11');this[_0xc397('0x22')]=0x0;this[_0xc397('0x23')]=_0x839ba[_0xc397('0x23')]||0x0;this[_0xc397('0x24')]=0x0;this[_0xc397('0x25')]=![];this['busyQueue']=undefined;this[_0xc397('0x2')]='';this[_0xc397('0x26')]={};this[_0xc397('0x27')]={};this[_0xc397('0x28')]={};this[_0xc397('0x29')]={};this[_0xc397('0x2a')]={};this[_0xc397('0x2b')]={};this[_0xc397('0x2c')]();}Agent[_0xc397('0x2d')][_0xc397('0x2e')]=function(_0x461c7c){if(this[_0x461c7c+'CurrentCapacity']>0x0){if(this[_0x461c7c+_0xc397('0x2f')]>0x0&&this[_0x461c7c+'CurrentCapacity']>=this[_0x461c7c+_0xc397('0x2f')]){return _0xc397('0x30');}else{return _0xc397('0x31');}}else{return'idle';}};Agent[_0xc397('0x2d')]['updateRealtime']=function(){var _0x59d64b=[_0xc397('0x32'),_0xc397('0x33'),_0xc397('0x34'),_0xc397('0x35'),'sms',_0xc397('0x36')];for(var _0x474047=0x0;_0x474047<_0x59d64b['length'];_0x474047+=0x1){var _0x3b89b=this['getChannelStatus'](_0x59d64b[_0x474047]);if(this[_0x59d64b[_0x474047]+_0xc397('0x37')]!==_0x3b89b){this[_0x59d64b[_0x474047]+'StatusTime']=_[_0xc397('0x38')](moment()[_0xc397('0x39')]('x'));}this[_0x59d64b[_0x474047]+_0xc397('0x37')]=_0x3b89b;}var _0x312b74={'id':this['id'],'name':this[_0xc397('0x8')],'online':this[_0xc397('0x9')],'voicePause':this['voicePause'],'chatPause':this[_0xc397('0xb')],'mailPause':this[_0xc397('0xc')],'smsPause':this[_0xc397('0xe')],'faxPause':this[_0xc397('0xd')],'openchannelPause':this[_0xc397('0xf')],'chatStatus':this[_0xc397('0x10')],'chatStatusTime':this[_0xc397('0x12')],'chatCapacity':this[_0xc397('0x13')],'chatCurrentCapacity':this[_0xc397('0x14')],'mailStatus':this[_0xc397('0x3a')],'mailStatusTime':this[_0xc397('0x3b')],'mailCapacity':this['mailCapacity'],'mailCurrentCapacity':this[_0xc397('0x15')],'faxStatus':this[_0xc397('0x16')],'faxStatusTime':this[_0xc397('0x17')],'faxCapacity':this[_0xc397('0x18')],'faxCurrentCapacity':this[_0xc397('0x19')],'smsStatus':this[_0xc397('0x1a')],'smsStatusTime':this[_0xc397('0x1b')],'smsCapacity':this[_0xc397('0x1c')],'smsCurrentCapacity':this['smsCurrentCapacity'],'whatsappStatus':this[_0xc397('0x1e')],'whatsappStatusTime':this[_0xc397('0x3c')],'whatsappCapacity':this[_0xc397('0x1f')],'whatsappCurrentCapacity':this['whatsappCurrentCapacity'],'openchannelStatus':this[_0xc397('0x21')],'openchannelStatusTime':this['openchannelStatusTime'],'openchannelCapacity':this[_0xc397('0x23')],'openchannelCurrentCapacity':this[_0xc397('0x24')],'busy':this[_0xc397('0x25')],'busyQueue':this[_0xc397('0x3d')],'chatWaitingInteractions':this[_0xc397('0x26')],'faxWaitingInteractions':this[_0xc397('0x27')],'mailWaitingInteractions':this[_0xc397('0x28')],'openchannelWaitingInteractions':this['openchannelWaitingInteractions'],'smsWaitingInteractions':this[_0xc397('0x2a')],'whatsappWaitingInteractions':this[_0xc397('0x2b')]};var _0x18f474=md5(JSON[_0xc397('0x3e')](_0x312b74));if(this[_0xc397('0x2')]!==_0x18f474){this[_0xc397('0x2')]=_0x18f474;io[_0xc397('0x3f')]('user:save',_0x312b74);}};module[_0xc397('0x40')]=Agent;
\ No newline at end of file
index 9da47cc..a243068 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0xa7be=['util','ioredis','../../../config/environment','redis','defaults','localhost','name','timeout','strategy','Agents','mapAgentsId','updateRouting','updateRealtime','prototype','_rr','map','loggedIn','paused','length','available','waiting','stringify','format','chat:queue:%s','emit','chat_queue:save','exports','md5'];(function(_0xf5a960,_0x397bc4){var _0x2fe815=function(_0x529427){while(--_0x529427){_0xf5a960['push'](_0xf5a960['shift']());}};_0x2fe815(++_0x397bc4);}(_0xa7be,0x117));var _0xea7b=function(_0x2ce41f,_0x42bce1){_0x2ce41f=_0x2ce41f-0x0;var _0x4be96d=_0xa7be[_0x2ce41f];return _0x4be96d;};'use strict';var _=require('lodash');var md5=require(_0xea7b('0x0'));var util=require(_0xea7b('0x1'));var Redis=require(_0xea7b('0x2'));var config=require(_0xea7b('0x3'));config[_0xea7b('0x4')]=_[_0xea7b('0x5')](config[_0xea7b('0x4')],{'host':_0xea7b('0x6'),'port':0x18eb});var io=require('socket.io-emitter')(new Redis(config['redis']));function ChatQueue(_0x19fa4e){this['id']=_0x19fa4e['id']||0x0;this[_0xea7b('0x7')]=_0x19fa4e[_0xea7b('0x7')]||'';this[_0xea7b('0x8')]=_0x19fa4e[_0xea7b('0x8')]||0xa;this['strategy']=_0x19fa4e[_0xea7b('0x9')]||'beepall';this[_0xea7b('0xa')]=_0x19fa4e['Agents'];this[_0xea7b('0xb')]={};this['waiting']=0x0;this[_0xea7b('0x0')]='';this[_0xea7b('0xc')]();this[_0xea7b('0xd')]();}ChatQueue[_0xea7b('0xe')][_0xea7b('0xc')]=function(){var _0x2aba7a=this[_0xea7b('0xb')][_0xea7b('0xf')];this[_0xea7b('0xb')]=_[_0xea7b('0x10')](this['Agents'],'id');this[_0xea7b('0xb')]['_rr']=_0x2aba7a;};ChatQueue[_0xea7b('0xe')][_0xea7b('0xd')]=function(){this[_0xea7b('0x11')]=0x0;this[_0xea7b('0x12')]=0x0;for(var _0x812324=0x0;_0x812324<this[_0xea7b('0xa')][_0xea7b('0x13')];_0x812324+=0x1){if(this['Agents'][_0x812324]['online']){this[_0xea7b('0x11')]+=0x1;}if(this[_0xea7b('0xa')][_0x812324]['chatPause']){this[_0xea7b('0x12')]+=0x1;}}this[_0xea7b('0x14')]=this[_0xea7b('0x11')]-this[_0xea7b('0x12')];this[_0xea7b('0x14')]=this[_0xea7b('0x14')]>=0x0?this[_0xea7b('0x14')]:0x0;var _0x5c9cff={'id':this['id'],'available':this[_0xea7b('0x14')],'loggedIn':this[_0xea7b('0x11')],'name':this[_0xea7b('0x7')],'paused':this[_0xea7b('0x12')],'waiting':this[_0xea7b('0x15')]};var _0x40469c=md5(JSON[_0xea7b('0x16')](_0x5c9cff));if(this[_0xea7b('0x0')]!==_0x40469c){this['md5']=_0x40469c;io['to'](util[_0xea7b('0x17')](_0xea7b('0x18'),_0x5c9cff[_0xea7b('0x7')]))[_0xea7b('0x19')](_0xea7b('0x1a'),_0x5c9cff);}};module[_0xea7b('0x1b')]=ChatQueue;
\ No newline at end of file
index cce6e89..79d9dd2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0x9e91=['Agents','waiting','updateRouting','prototype','mapAgentsId','_rr','updateRealtime','loggedIn','paused','length','online','faxPause','available','stringify','fax:queue:%s','fax_queue:save','exports','md5','util','../../../config/environment','redis','localhost','socket.io-emitter','name','timeout','strategy','beepall'];(function(_0x286799,_0x2cf746){var _0xc6d088=function(_0x5032fe){while(--_0x5032fe){_0x286799['push'](_0x286799['shift']());}};_0xc6d088(++_0x2cf746);}(_0x9e91,0x11f));var _0x19e9=function(_0xf5009b,_0xcca0a8){_0xf5009b=_0xf5009b-0x0;var _0xd84847=_0x9e91[_0xf5009b];return _0xd84847;};'use strict';var _=require('lodash');var md5=require(_0x19e9('0x0'));var util=require(_0x19e9('0x1'));var Redis=require('ioredis');var config=require(_0x19e9('0x2'));config[_0x19e9('0x3')]=_['defaults'](config['redis'],{'host':_0x19e9('0x4'),'port':0x18eb});var io=require(_0x19e9('0x5'))(new Redis(config[_0x19e9('0x3')]));function FaxQueue(_0x4ecca5){this['id']=_0x4ecca5['id']||0x0;this[_0x19e9('0x6')]=_0x4ecca5['name']||'';this['timeout']=_0x4ecca5[_0x19e9('0x7')]||0xa;this[_0x19e9('0x8')]=_0x4ecca5[_0x19e9('0x8')]||_0x19e9('0x9');this[_0x19e9('0xa')]=_0x4ecca5['Agents'];this['mapAgentsId']={};this[_0x19e9('0xb')]=0x0;this['md5']='';this[_0x19e9('0xc')]();this['updateRealtime']();}FaxQueue[_0x19e9('0xd')]['updateRouting']=function(){var _0x18aa33=this[_0x19e9('0xe')][_0x19e9('0xf')];this[_0x19e9('0xe')]=_['map'](this[_0x19e9('0xa')],'id');this[_0x19e9('0xe')][_0x19e9('0xf')]=_0x18aa33;};FaxQueue['prototype'][_0x19e9('0x10')]=function(){this[_0x19e9('0x11')]=0x0;this[_0x19e9('0x12')]=0x0;for(var _0x17f401=0x0;_0x17f401<this[_0x19e9('0xa')][_0x19e9('0x13')];_0x17f401+=0x1){if(this[_0x19e9('0xa')][_0x17f401][_0x19e9('0x14')]){this[_0x19e9('0x11')]+=0x1;}if(this['Agents'][_0x17f401][_0x19e9('0x15')]){this[_0x19e9('0x12')]+=0x1;}}this[_0x19e9('0x16')]=this[_0x19e9('0x11')]-this[_0x19e9('0x12')];this[_0x19e9('0x16')]=this['available']>=0x0?this['available']:0x0;var _0x3edcdb={'id':this['id'],'available':this[_0x19e9('0x16')],'loggedIn':this['loggedIn'],'name':this[_0x19e9('0x6')],'paused':this['paused'],'waiting':this[_0x19e9('0xb')]};var _0x223aed=md5(JSON[_0x19e9('0x17')](_0x3edcdb));if(this[_0x19e9('0x0')]!==_0x223aed){this['md5']=_0x223aed;io['to'](util['format'](_0x19e9('0x18'),_0x3edcdb[_0x19e9('0x6')]))['emit'](_0x19e9('0x19'),_0x3edcdb);}};module[_0x19e9('0x1a')]=FaxQueue;
\ No newline at end of file
index 527f71f..547f661 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0xb82f=['Intervals','name'];(function(_0xbba421,_0x81d172){var _0x420880=function(_0x264b93){while(--_0x264b93){_0xbba421['push'](_0xbba421['shift']());}};_0x420880(++_0x81d172);}(_0xb82f,0x6b));var _0xfb82=function(_0x52d70b,_0x4f59f6){_0x52d70b=_0x52d70b-0x0;var _0x5cf06b=_0xb82f[_0x52d70b];return _0x5cf06b;};'use strict';function Interval(_0x2adb23){this['id']=_0x2adb23['id']||0x0;this[_0xfb82('0x0')]=_0x2adb23['name']||'';this[_0xfb82('0x1')]=_0x2adb23[_0xfb82('0x1')]||{};}module['exports']=Interval;
\ No newline at end of file
index 657e62d..bf560b8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0x5785=['localhost','socket.io-emitter','name','timeout','strategy','beepall','Agents','mapAgentsId','updateRouting','updateRealtime','_rr','map','prototype','paused','length','online','mailPause','available','waiting','stringify','mail:queue:%s','emit','mail_queue:save','exports','lodash','md5','util','ioredis','../../../config/environment','redis'];(function(_0x1a6269,_0x5deea5){var _0x536f68=function(_0x5911ce){while(--_0x5911ce){_0x1a6269['push'](_0x1a6269['shift']());}};_0x536f68(++_0x5deea5);}(_0x5785,0x90));var _0x5578=function(_0x413feb,_0x10477f){_0x413feb=_0x413feb-0x0;var _0x40ee88=_0x5785[_0x413feb];return _0x40ee88;};'use strict';var _=require(_0x5578('0x0'));var md5=require(_0x5578('0x1'));var util=require(_0x5578('0x2'));var Redis=require(_0x5578('0x3'));var config=require(_0x5578('0x4'));config[_0x5578('0x5')]=_['defaults'](config[_0x5578('0x5')],{'host':_0x5578('0x6'),'port':0x18eb});var io=require(_0x5578('0x7'))(new Redis(config[_0x5578('0x5')]));function MailQueue(_0x3ffdaf){this['id']=_0x3ffdaf['id']||0x0;this[_0x5578('0x8')]=_0x3ffdaf[_0x5578('0x8')]||'';this[_0x5578('0x9')]=_0x3ffdaf[_0x5578('0x9')]||0xa;this[_0x5578('0xa')]=_0x3ffdaf[_0x5578('0xa')]||_0x5578('0xb');this[_0x5578('0xc')]=_0x3ffdaf[_0x5578('0xc')];this[_0x5578('0xd')]={};this['waiting']=0x0;this[_0x5578('0x1')]='';this[_0x5578('0xe')]();this[_0x5578('0xf')]();}MailQueue['prototype'][_0x5578('0xe')]=function(){var _0x2b4e8a=this[_0x5578('0xd')][_0x5578('0x10')];this[_0x5578('0xd')]=_[_0x5578('0x11')](this[_0x5578('0xc')],'id');this[_0x5578('0xd')][_0x5578('0x10')]=_0x2b4e8a;};MailQueue[_0x5578('0x12')][_0x5578('0xf')]=function(){this['loggedIn']=0x0;this[_0x5578('0x13')]=0x0;for(var _0x4ffb48=0x0;_0x4ffb48<this[_0x5578('0xc')][_0x5578('0x14')];_0x4ffb48+=0x1){if(this[_0x5578('0xc')][_0x4ffb48][_0x5578('0x15')]){this['loggedIn']+=0x1;}if(this['Agents'][_0x4ffb48][_0x5578('0x16')]){this['paused']+=0x1;}}this[_0x5578('0x17')]=this['loggedIn']-this[_0x5578('0x13')];this['available']=this[_0x5578('0x17')]>=0x0?this[_0x5578('0x17')]:0x0;var _0xfb0119={'id':this['id'],'available':this[_0x5578('0x17')],'loggedIn':this['loggedIn'],'name':this[_0x5578('0x8')],'paused':this[_0x5578('0x13')],'waiting':this[_0x5578('0x18')]};var _0x339b1c=md5(JSON[_0x5578('0x19')](_0xfb0119));if(this[_0x5578('0x1')]!==_0x339b1c){this[_0x5578('0x1')]=_0x339b1c;io['to'](util['format'](_0x5578('0x1a'),_0xfb0119[_0x5578('0x8')]))[_0x5578('0x1b')](_0x5578('0x1c'),_0xfb0119);}};module[_0x5578('0x1d')]=MailQueue;
\ No newline at end of file
index b8e0a80..2b226cd 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+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(_0xa148b7,_0x2f3eb2){var _0x51efd3=function(_0x34bcec){while(--_0x34bcec){_0xa148b7['push'](_0xa148b7['shift']());}};_0x51efd3(++_0x2f3eb2);}(_0x1261,0x144));var _0x1126=function(_0x37a79c,_0x2b19f0){_0x37a79c=_0x37a79c-0x0;var _0x561d89=_0x1261[_0x37a79c];return _0x561d89;};'use strict';var _=require('lodash');var md5=require(_0x1126('0x0'));var util=require(_0x1126('0x1'));var Redis=require(_0x1126('0x2'));var config=require(_0x1126('0x3'));config[_0x1126('0x4')]=_[_0x1126('0x5')](config[_0x1126('0x4')],{'host':_0x1126('0x6'),'port':0x18eb});var io=require(_0x1126('0x7'))(new Redis(config[_0x1126('0x4')]));function OpenchannelQueue(_0x5a2189){this['id']=_0x5a2189['id']||0x0;this['name']=_0x5a2189[_0x1126('0x8')]||'';this[_0x1126('0x9')]=_0x5a2189['timeout']||0xa;this[_0x1126('0xa')]=_0x5a2189[_0x1126('0xa')]||_0x1126('0xb');this[_0x1126('0xc')]=_0x5a2189[_0x1126('0xc')];this['mapAgentsId']={};this[_0x1126('0xd')]=0x0;this[_0x1126('0x0')]='';this[_0x1126('0xe')]();this['updateRealtime']();}OpenchannelQueue[_0x1126('0xf')]['updateRouting']=function(){var _0x52ef15=this[_0x1126('0x10')]['_rr'];this[_0x1126('0x10')]=_[_0x1126('0x11')](this[_0x1126('0xc')],'id');this[_0x1126('0x10')][_0x1126('0x12')]=_0x52ef15;};OpenchannelQueue[_0x1126('0xf')][_0x1126('0x13')]=function(){this[_0x1126('0x14')]=0x0;this[_0x1126('0x15')]=0x0;for(var _0x53a8f0=0x0;_0x53a8f0<this['Agents'][_0x1126('0x16')];_0x53a8f0+=0x1){if(this[_0x1126('0xc')][_0x53a8f0][_0x1126('0x17')]){this['loggedIn']+=0x1;}if(this[_0x1126('0xc')][_0x53a8f0]['openchannelPause']){this[_0x1126('0x15')]+=0x1;}}this[_0x1126('0x18')]=this[_0x1126('0x14')]-this['paused'];this[_0x1126('0x18')]=this[_0x1126('0x18')]>=0x0?this['available']:0x0;var _0x4d2b38={'id':this['id'],'available':this[_0x1126('0x18')],'loggedIn':this[_0x1126('0x14')],'name':this['name'],'paused':this['paused'],'waiting':this[_0x1126('0xd')]};var _0x58b109=md5(JSON[_0x1126('0x19')](_0x4d2b38));if(this[_0x1126('0x0')]!==_0x58b109){this[_0x1126('0x0')]=_0x58b109;io['to'](util['format'](_0x1126('0x1a'),_0x4d2b38['name']))['emit'](_0x1126('0x1b'),_0x4d2b38);}};module[_0x1126('0x1c')]=OpenchannelQueue;
\ No newline at end of file
index 3f2a022..4cf4727 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0x4522=['loggedIn','length','smsPause','paused','available','waiting','stringify','md5','format','sms:queue:%s','exports','util','ioredis','../../../config/environment','defaults','redis','localhost','socket.io-emitter','name','timeout','strategy','beepall','Agents','mapAgentsId','updateRouting','_rr','map'];(function(_0x52ae1f,_0x4925ef){var _0x1ef4bd=function(_0x24dc83){while(--_0x24dc83){_0x52ae1f['push'](_0x52ae1f['shift']());}};_0x1ef4bd(++_0x4925ef);}(_0x4522,0x1a0));var _0x2452=function(_0x387f6d,_0x2f2d93){_0x387f6d=_0x387f6d-0x0;var _0x29d8d5=_0x4522[_0x387f6d];return _0x29d8d5;};'use strict';var _=require('lodash');var md5=require('md5');var util=require(_0x2452('0x0'));var Redis=require(_0x2452('0x1'));var config=require(_0x2452('0x2'));config['redis']=_[_0x2452('0x3')](config[_0x2452('0x4')],{'host':_0x2452('0x5'),'port':0x18eb});var io=require(_0x2452('0x6'))(new Redis(config[_0x2452('0x4')]));function SmsQueue(_0x243893){this['id']=_0x243893['id']||0x0;this[_0x2452('0x7')]=_0x243893[_0x2452('0x7')]||'';this[_0x2452('0x8')]=_0x243893[_0x2452('0x8')]||0xa;this[_0x2452('0x9')]=_0x243893[_0x2452('0x9')]||_0x2452('0xa');this[_0x2452('0xb')]=_0x243893[_0x2452('0xb')];this[_0x2452('0xc')]={};this['waiting']=0x0;this['md5']='';this[_0x2452('0xd')]();this['updateRealtime']();}SmsQueue['prototype'][_0x2452('0xd')]=function(){var _0x29bf3f=this[_0x2452('0xc')][_0x2452('0xe')];this[_0x2452('0xc')]=_[_0x2452('0xf')](this[_0x2452('0xb')],'id');this[_0x2452('0xc')]['_rr']=_0x29bf3f;};SmsQueue['prototype']['updateRealtime']=function(){this[_0x2452('0x10')]=0x0;this['paused']=0x0;for(var _0x33e592=0x0;_0x33e592<this['Agents'][_0x2452('0x11')];_0x33e592+=0x1){if(this[_0x2452('0xb')][_0x33e592]['online']){this[_0x2452('0x10')]+=0x1;}if(this['Agents'][_0x33e592][_0x2452('0x12')]){this[_0x2452('0x13')]+=0x1;}}this[_0x2452('0x14')]=this[_0x2452('0x10')]-this['paused'];this[_0x2452('0x14')]=this[_0x2452('0x14')]>=0x0?this['available']:0x0;var _0x4802ad={'id':this['id'],'available':this[_0x2452('0x14')],'loggedIn':this[_0x2452('0x10')],'name':this[_0x2452('0x7')],'paused':this['paused'],'waiting':this[_0x2452('0x15')]};var _0x467963=md5(JSON[_0x2452('0x16')](_0x4802ad));if(this[_0x2452('0x17')]!==_0x467963){this[_0x2452('0x17')]=_0x467963;io['to'](util[_0x2452('0x18')](_0x2452('0x19'),_0x4802ad[_0x2452('0x7')]))['emit']('sms_queue:save',_0x4802ad);}};module[_0x2452('0x1a')]=SmsQueue;
\ No newline at end of file
index 8e3af83..5ee9142 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0x281e=['redis','defaults','socket.io-emitter','name','timeout','strategy','Agents','mapAgentsId','waiting','updateRouting','updateRealtime','prototype','map','_rr','paused','length','online','loggedIn','whatsappPause','available','whatsapp:queue:%s','emit','whatsapp_queue:save','exports','lodash','md5','util','../../../config/environment'];(function(_0x87f273,_0x321f97){var _0x1f6e0e=function(_0x4ab0c9){while(--_0x4ab0c9){_0x87f273['push'](_0x87f273['shift']());}};_0x1f6e0e(++_0x321f97);}(_0x281e,0x88));var _0xe281=function(_0x1694f5,_0x49b7c3){_0x1694f5=_0x1694f5-0x0;var _0x5b4321=_0x281e[_0x1694f5];return _0x5b4321;};'use strict';var _=require(_0xe281('0x0'));var md5=require(_0xe281('0x1'));var util=require(_0xe281('0x2'));var Redis=require('ioredis');var config=require(_0xe281('0x3'));config[_0xe281('0x4')]=_[_0xe281('0x5')](config['redis'],{'host':'localhost','port':0x18eb});var io=require(_0xe281('0x6'))(new Redis(config[_0xe281('0x4')]));function WhatsappQueue(_0x199467){this['id']=_0x199467['id']||0x0;this[_0xe281('0x7')]=_0x199467[_0xe281('0x7')]||'';this[_0xe281('0x8')]=_0x199467[_0xe281('0x8')]||0xa;this['strategy']=_0x199467[_0xe281('0x9')]||'beepall';this[_0xe281('0xa')]=_0x199467[_0xe281('0xa')];this[_0xe281('0xb')]={};this[_0xe281('0xc')]=0x0;this[_0xe281('0x1')]='';this[_0xe281('0xd')]();this[_0xe281('0xe')]();}WhatsappQueue[_0xe281('0xf')]['updateRouting']=function(){var _0x59d827=this[_0xe281('0xb')]['_rr'];this[_0xe281('0xb')]=_[_0xe281('0x10')](this[_0xe281('0xa')],'id');this[_0xe281('0xb')][_0xe281('0x11')]=_0x59d827;};WhatsappQueue[_0xe281('0xf')][_0xe281('0xe')]=function(){this['loggedIn']=0x0;this[_0xe281('0x12')]=0x0;for(var _0x4292ff=0x0;_0x4292ff<this[_0xe281('0xa')][_0xe281('0x13')];_0x4292ff+=0x1){if(this[_0xe281('0xa')][_0x4292ff][_0xe281('0x14')]){this[_0xe281('0x15')]+=0x1;}if(this[_0xe281('0xa')][_0x4292ff][_0xe281('0x16')]){this[_0xe281('0x12')]+=0x1;}}this[_0xe281('0x17')]=this[_0xe281('0x15')]-this['paused'];this['available']=this[_0xe281('0x17')]>=0x0?this[_0xe281('0x17')]:0x0;var _0x59101e={'id':this['id'],'available':this['available'],'loggedIn':this[_0xe281('0x15')],'name':this[_0xe281('0x7')],'paused':this[_0xe281('0x12')],'waiting':this[_0xe281('0xc')]};var _0x5e8e3a=md5(JSON['stringify'](_0x59101e));if(this[_0xe281('0x1')]!==_0x5e8e3a){this[_0xe281('0x1')]=_0x5e8e3a;io['to'](util['format'](_0xe281('0x18'),_0x59101e['name']))[_0xe281('0x19')](_0xe281('0x1a'),_0x59101e);}};module[_0xe281('0x1b')]=WhatsappQueue;
\ No newline at end of file
index 79e558d..a217247 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb10b=['faxQueues','whatsappQueues','chatQueuesWaitingInteractions','mailQueuesWaitingInteractions','openchannelQueuesWaitingInteractions','smsQueuesWaitingInteractions','mapKeys','hasOwnProperty','prototype','mergeFromDatabase','initAgents','agents','isUndefined','initIntervals','length','initOpenchannelQueues','updateRealtime','initChatQueues','chatQueues','initSmsQueues','updateRouting','initMailQueues','initFaxQueues','initWhatsappQueues','exports','bluebird','lodash','moment','../model/agent','../model/openchannelQueue','../model/chatQueue','../model/smsQueue','../model/mailQueue','../model/faxQueue','../model/whatsappQueue','intervals','openchannelQueues','smsQueues','mailQueues'];(function(_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
+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(_0x321bb2,_0x202794){var _0x9c12ed=function(_0x263dd3){while(--_0x263dd3){_0x321bb2['push'](_0x321bb2['shift']());}};_0x9c12ed(++_0x202794);}(_0xa9e0,0x123));var _0x0a9e=function(_0x110c3d,_0x12ee06){_0x110c3d=_0x110c3d-0x0;var _0x226d67=_0xa9e0[_0x110c3d];return _0x226d67;};'use strict';var BPromise=require(_0x0a9e('0x0'));var util=require(_0x0a9e('0x1'));var _=require(_0x0a9e('0x2'));var moment=require('moment');var Agent=require('../model/agent');var Interval=require(_0x0a9e('0x3'));var OpenchannelQueue=require('../model/openchannelQueue');var ChatQueue=require(_0x0a9e('0x4'));var SmsQueue=require(_0x0a9e('0x5'));var MailQueue=require(_0x0a9e('0x6'));var FaxQueue=require(_0x0a9e('0x7'));var WhatsappQueue=require(_0x0a9e('0x8'));var Realtime=function(){this['agents']={};this[_0x0a9e('0x9')]={};this[_0x0a9e('0xa')]={};this[_0x0a9e('0xb')]={};this['smsQueues']={};this['mailQueues']={};this[_0x0a9e('0xc')]={};this['whatsappQueues']={};this['chatQueuesWaitingInteractions']={};this[_0x0a9e('0xd')]={};this[_0x0a9e('0xe')]={};this[_0x0a9e('0xf')]={};this[_0x0a9e('0x10')]={};this[_0x0a9e('0x11')]={};};function freeIsNotKey(_0xbd1168,_0x4a4c56,_0x50dfb2){var _0x527cdd=_['mapKeys'](_0xbd1168,function(_0x273d4d,_0x36471c){return _0x273d4d[_0x50dfb2];});for(var _0xd5b662 in _0x4a4c56){if(_0x4a4c56[_0x0a9e('0x12')](_0xd5b662)){if(!_0x527cdd[_0xd5b662]){delete _0x4a4c56[_0xd5b662];}}}}Realtime[_0x0a9e('0x13')][_0x0a9e('0x14')]=function(_0x5db4b0,_0x4283ce){for(var _0x239b12 in _0x4283ce){if(_0x5db4b0[_0x0a9e('0x12')](_0x239b12)){_0x5db4b0[_0x239b12]=_0x4283ce[_0x239b12];}}};Realtime[_0x0a9e('0x13')][_0x0a9e('0x15')]=function(){var _0x4d5611=this;return function(_0x52a03d){if(_0x52a03d){freeIsNotKey(_0x52a03d,_0x4d5611[_0x0a9e('0x16')],'id');for(var _0x5d0880=0x0,_0x1985b6={},_0x519dfd={};_0x5d0880<_0x52a03d[_0x0a9e('0x17')];_0x5d0880+=0x1){_0x1985b6=_0x52a03d[_0x5d0880];if(_[_0x0a9e('0x18')](_0x4d5611['agents'][_0x1985b6['id']])){_0x4d5611[_0x0a9e('0x16')][_0x1985b6['id']]=new Agent(_0x1985b6);}else{_0x4d5611['mergeFromDatabase'](_0x4d5611[_0x0a9e('0x16')][_0x1985b6['id']],_0x1985b6);}}}return _0x4d5611[_0x0a9e('0x16')];};};Realtime[_0x0a9e('0x13')][_0x0a9e('0x19')]=function(){var _0x31b1ca=this;return function(_0x2eb11f){if(_0x2eb11f){freeIsNotKey(_0x2eb11f,_0x31b1ca[_0x0a9e('0x9')],'id');for(var _0x20559e=0x0,_0x1314ae={},_0x112016={};_0x20559e<_0x2eb11f[_0x0a9e('0x17')];_0x20559e+=0x1){_0x1314ae=_0x2eb11f[_0x20559e];if(_[_0x0a9e('0x18')](_0x31b1ca['intervals'][_0x1314ae['id']])){_0x31b1ca[_0x0a9e('0x9')][_0x1314ae['id']]=new Interval(_0x1314ae);}else{_0x31b1ca[_0x0a9e('0x14')](_0x31b1ca['intervals'][_0x1314ae['id']],_0x1314ae);}}}return _0x31b1ca[_0x0a9e('0x9')];};};Realtime['prototype']['initOpenchannelQueues']=function(){var _0x3a02e1=this;return function(_0x432e56){if(_0x432e56){freeIsNotKey(_0x432e56,_0x3a02e1[_0x0a9e('0xa')],'id');for(var _0x30bae6=0x0,_0x4abc77={},_0xfb6e48={};_0x30bae6<_0x432e56[_0x0a9e('0x17')];_0x30bae6+=0x1){_0x4abc77=_0x432e56[_0x30bae6];if(_[_0x0a9e('0x18')](_0x3a02e1[_0x0a9e('0xa')][_0x4abc77['id']])){_0x3a02e1[_0x0a9e('0xa')][_0x4abc77['id']]=new OpenchannelQueue(_0x4abc77);}else{_0x3a02e1[_0x0a9e('0x14')](_0x3a02e1[_0x0a9e('0xa')][_0x4abc77['id']],_0x4abc77);}_0x3a02e1['openchannelQueues'][_0x4abc77['id']]['updateRouting']();_0x3a02e1[_0x0a9e('0xa')][_0x4abc77['id']][_0x0a9e('0x1a')]();}}return _0x3a02e1[_0x0a9e('0xa')];};};Realtime[_0x0a9e('0x13')]['initChatQueues']=function(){var _0x384319=this;return function(_0x479bc4){if(_0x479bc4){freeIsNotKey(_0x479bc4,_0x384319[_0x0a9e('0xb')],'id');for(var _0x5bfb33=0x0,_0x1dc186={},_0x34dc65={};_0x5bfb33<_0x479bc4[_0x0a9e('0x17')];_0x5bfb33+=0x1){_0x1dc186=_0x479bc4[_0x5bfb33];if(_[_0x0a9e('0x18')](_0x384319[_0x0a9e('0xb')][_0x1dc186['id']])){_0x384319[_0x0a9e('0xb')][_0x1dc186['id']]=new ChatQueue(_0x1dc186);}else{_0x384319[_0x0a9e('0x14')](_0x384319[_0x0a9e('0xb')][_0x1dc186['id']],_0x1dc186);}_0x384319['chatQueues'][_0x1dc186['id']][_0x0a9e('0x1b')]();_0x384319[_0x0a9e('0xb')][_0x1dc186['id']][_0x0a9e('0x1a')]();}}return _0x384319[_0x0a9e('0xb')];};};Realtime['prototype'][_0x0a9e('0x1c')]=function(){var _0x40e7a3=this;return function(_0x1843b2){if(_0x1843b2){freeIsNotKey(_0x1843b2,_0x40e7a3[_0x0a9e('0x1d')],'id');for(var _0x58b06f=0x0,_0x563b45={},_0x296f41={};_0x58b06f<_0x1843b2[_0x0a9e('0x17')];_0x58b06f+=0x1){_0x563b45=_0x1843b2[_0x58b06f];if(_[_0x0a9e('0x18')](_0x40e7a3['smsQueues'][_0x563b45['id']])){_0x40e7a3[_0x0a9e('0x1d')][_0x563b45['id']]=new SmsQueue(_0x563b45);}else{_0x40e7a3['mergeFromDatabase'](_0x40e7a3[_0x0a9e('0x1d')][_0x563b45['id']],_0x563b45);}_0x40e7a3[_0x0a9e('0x1d')][_0x563b45['id']][_0x0a9e('0x1b')]();_0x40e7a3[_0x0a9e('0x1d')][_0x563b45['id']][_0x0a9e('0x1a')]();}}return _0x40e7a3['smsQueues'];};};Realtime[_0x0a9e('0x13')][_0x0a9e('0x1e')]=function(){var _0x40cb85=this;return function(_0x2da5c0){if(_0x2da5c0){freeIsNotKey(_0x2da5c0,_0x40cb85[_0x0a9e('0x1f')],'id');for(var _0x409319=0x0,_0x332d35={},_0x39e565={};_0x409319<_0x2da5c0['length'];_0x409319+=0x1){_0x332d35=_0x2da5c0[_0x409319];if(_[_0x0a9e('0x18')](_0x40cb85['mailQueues'][_0x332d35['id']])){_0x40cb85[_0x0a9e('0x1f')][_0x332d35['id']]=new MailQueue(_0x332d35);}else{_0x40cb85[_0x0a9e('0x14')](_0x40cb85[_0x0a9e('0x1f')][_0x332d35['id']],_0x332d35);}_0x40cb85[_0x0a9e('0x1f')][_0x332d35['id']]['updateRouting']();_0x40cb85[_0x0a9e('0x1f')][_0x332d35['id']][_0x0a9e('0x1a')]();}}return _0x40cb85[_0x0a9e('0x1f')];};};Realtime[_0x0a9e('0x13')]['initFaxQueues']=function(){var _0x54135e=this;return function(_0x1e8694){if(_0x1e8694){freeIsNotKey(_0x1e8694,_0x54135e['faxQueues'],'id');for(var _0x24936a=0x0,_0x3d9717={},_0x381c37={};_0x24936a<_0x1e8694[_0x0a9e('0x17')];_0x24936a+=0x1){_0x3d9717=_0x1e8694[_0x24936a];if(_['isUndefined'](_0x54135e[_0x0a9e('0xc')][_0x3d9717['id']])){_0x54135e[_0x0a9e('0xc')][_0x3d9717['id']]=new FaxQueue(_0x3d9717);}else{_0x54135e[_0x0a9e('0x14')](_0x54135e['faxQueues'][_0x3d9717['id']],_0x3d9717);}_0x54135e[_0x0a9e('0xc')][_0x3d9717['id']][_0x0a9e('0x1b')]();_0x54135e[_0x0a9e('0xc')][_0x3d9717['id']]['updateRealtime']();}}return _0x54135e['faxQueues'];};};Realtime[_0x0a9e('0x13')][_0x0a9e('0x20')]=function(){var _0x5adda1=this;return function(_0x2b814e){if(_0x2b814e){freeIsNotKey(_0x2b814e,_0x5adda1[_0x0a9e('0x21')],'id');for(var _0x2e1b3a=0x0,_0x148f55={},_0x4b38d9={};_0x2e1b3a<_0x2b814e['length'];_0x2e1b3a+=0x1){_0x148f55=_0x2b814e[_0x2e1b3a];if(_[_0x0a9e('0x18')](_0x5adda1[_0x0a9e('0x21')][_0x148f55['id']])){_0x5adda1['whatsappQueues'][_0x148f55['id']]=new WhatsappQueue(_0x148f55);}else{_0x5adda1[_0x0a9e('0x14')](_0x5adda1[_0x0a9e('0x21')][_0x148f55['id']],_0x148f55);}_0x5adda1[_0x0a9e('0x21')][_0x148f55['id']]['updateRouting']();_0x5adda1[_0x0a9e('0x21')][_0x148f55['id']][_0x0a9e('0x1a')]();}}return _0x5adda1[_0x0a9e('0x21')];};};module[_0x0a9e('0x22')]=Realtime;
\ No newline at end of file
index 49e0243..47580e3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0x536f=['addTagsToChatInteraction','Request','updateChatInteraction','addTags'];(function(_0x42cae2,_0x284ef8){var _0x5f256f=function(_0x41abc8){while(--_0x41abc8){_0x42cae2['push'](_0x42cae2['shift']());}};_0x5f256f(++_0x284ef8);}(_0x536f,0xb1));var _0xf536=function(_0x321bb2,_0x202794){_0x321bb2=_0x321bb2-0x0;var _0x9c12ed=_0x536f[_0x321bb2];return _0x9c12ed;};'use strict';var client=require('../client');exports['update']=function(_0x4562b6,_0x49c46d){return client[_0xf536('0x0')]('UpdateChatInteraction',{'body':_0x49c46d,'options':{'where':{'id':_0x4562b6}},'log':_0xf536('0x1')});};exports[_0xf536('0x2')]=function(_0x3a323b,_0x54ba2d){return client[_0xf536('0x0')]('AddTagsToChatInteraction',{'body':_0x54ba2d,'options':{'where':{'id':_0x3a323b}},'log':_0xf536('0x3')});};
\ No newline at end of file
index fd82819..4b359a8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0xa8dc=['Request','CreateChatMessage','../client'];(function(_0xfb4dcf,_0x255afb){var _0x3d322a=function(_0x244bec){while(--_0x244bec){_0xfb4dcf['push'](_0xfb4dcf['shift']());}};_0x3d322a(++_0x255afb);}(_0xa8dc,0x137));var _0xca8d=function(_0x149222,_0xcad111){_0x149222=_0x149222-0x0;var _0x2fa1e6=_0xa8dc[_0x149222];return _0x2fa1e6;};'use strict';var client=require(_0xca8d('0x0'));exports['create']=function(_0x9eb404){return client[_0xca8d('0x1')](_0xca8d('0x2'),{'body':_0x9eb404,'log':'createChatMessage'});};
\ No newline at end of file
index 326f391..9b9065e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0xf675=['User','Agents','online','chatPause','../client','getChatQueues','Request','name','strategy'];(function(_0x5f2668,_0x29630f){var _0x42df13=function(_0x4ea449){while(--_0x4ea449){_0x5f2668['push'](_0x5f2668['shift']());}};_0x42df13(++_0x29630f);}(_0xf675,0x199));var _0x5f67=function(_0x5ad07c,_0x324dcd){_0x5ad07c=_0x5ad07c-0x0;var _0x204bae=_0xf675[_0x5ad07c];return _0x204bae;};'use strict';var client=require(_0x5f67('0x0'));exports[_0x5f67('0x1')]=function(){return function(){return client[_0x5f67('0x2')]('GetChatQueue',{'options':{'raw':![],'attributes':['id',_0x5f67('0x3'),'timeout',_0x5f67('0x4')],'include':[{'model':_0x5f67('0x5'),'as':_0x5f67('0x6'),'attributes':['id','name',_0x5f67('0x7'),_0x5f67('0x8')]}]},'log':_0x5f67('0x1')});};};
\ No newline at end of file
index e2cd1f1..7fe4c90 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0x1c4f=['DESC','UpdateChatQueueReport','../client','create','CreateChatQueueReport','Request'];(function(_0x56f38c,_0x57ae0b){var _0x230c06=function(_0x37fb6e){while(--_0x37fb6e){_0x56f38c['push'](_0x56f38c['shift']());}};_0x230c06(++_0x57ae0b);}(_0x1c4f,0x1f4));var _0xf1c4=function(_0x483568,_0x39eff1){_0x483568=_0x483568-0x0;var _0x53ff1a=_0x1c4f[_0x483568];return _0x53ff1a;};'use strict';var client=require(_0xf1c4('0x0'));exports[_0xf1c4('0x1')]=function(_0x3932f7){return client['Request'](_0xf1c4('0x2'),{'body':_0x3932f7,'log':_0xf1c4('0x2')});};exports['update']=function(_0x397582,_0xf26573){return client[_0xf1c4('0x3')]('UpdateChatQueueReport',{'body':_0xf26573,'options':{'where':{'uniqueid':_0x397582},'order':[['id',_0xf1c4('0x4')]],'limit':0x1},'log':_0xf1c4('0x5')});};
\ No newline at end of file
index 2ae05af..52d6125 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0x7a54=['Request','UpdateFaxInteraction','addTags','AddTagsToFaxInteraction','../client','update'];(function(_0x493a51,_0x45128c){var _0xc85756=function(_0x2c39a8){while(--_0x2c39a8){_0x493a51['push'](_0x493a51['shift']());}};_0xc85756(++_0x45128c);}(_0x7a54,0x106));var _0x47a5=function(_0x3a2810,_0x9473e1){_0x3a2810=_0x3a2810-0x0;var _0xd39ee3=_0x7a54[_0x3a2810];return _0xd39ee3;};'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 81c3bfe..b27d7c5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0xb020=['CreateFaxMessage','createFaxMessage','../client','Request'];(function(_0x15dbca,_0x1d7c3c){var _0x326533=function(_0x507ee2){while(--_0x507ee2){_0x15dbca['push'](_0x15dbca['shift']());}};_0x326533(++_0x1d7c3c);}(_0xb020,0x19e));var _0x0b02=function(_0x269ee8,_0x477226){_0x269ee8=_0x269ee8-0x0;var _0x4d98bd=_0xb020[_0x269ee8];return _0x4d98bd;};'use strict';var client=require(_0x0b02('0x0'));exports['create']=function(_0x380cc3){return client[_0x0b02('0x1')](_0x0b02('0x2'),{'body':_0x380cc3,'log':_0x0b02('0x3')});};
\ No newline at end of file
index c78c638..e510e17 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0x75a1=['Request','name','timeout','strategy','User','online','faxPause','../client','getFaxQueues'];(function(_0x139a25,_0x1707d7){var _0x330a62=function(_0x3092b4){while(--_0x3092b4){_0x139a25['push'](_0x139a25['shift']());}};_0x330a62(++_0x1707d7);}(_0x75a1,0x1a5));var _0x175a=function(_0x104945,_0x54a306){_0x104945=_0x104945-0x0;var _0x4d32bf=_0x75a1[_0x104945];return _0x4d32bf;};'use strict';var client=require(_0x175a('0x0'));exports[_0x175a('0x1')]=function(){return function(){return client[_0x175a('0x2')]('GetFaxQueue',{'options':{'raw':![],'attributes':['id',_0x175a('0x3'),_0x175a('0x4'),_0x175a('0x5')],'include':[{'model':_0x175a('0x6'),'as':'Agents','attributes':['id','name',_0x175a('0x7'),_0x175a('0x8')]}]},'log':_0x175a('0x1')});};};
\ No newline at end of file
index 5950a0a..7463e86 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0x81a8=['DESC','../client','Request','CreateFaxQueueReport','update','UpdateFaxQueueReport'];(function(_0x1a66c3,_0x498915){var _0x5cf87f=function(_0x774333){while(--_0x774333){_0x1a66c3['push'](_0x1a66c3['shift']());}};_0x5cf87f(++_0x498915);}(_0x81a8,0x151));var _0x881a=function(_0xe15270,_0x227d06){_0xe15270=_0xe15270-0x0;var _0x1e813b=_0x81a8[_0xe15270];return _0x1e813b;};'use strict';var client=require(_0x881a('0x0'));exports['create']=function(_0x20706e){return client[_0x881a('0x1')](_0x881a('0x2'),{'body':_0x20706e,'log':_0x881a('0x2')});};exports[_0x881a('0x3')]=function(_0x1089f3,_0x3abda2){return client[_0x881a('0x1')](_0x881a('0x4'),{'body':_0x3abda2,'options':{'where':{'uniqueid':_0x1089f3},'order':[['id',_0x881a('0x5')]],'limit':0x1},'log':_0x881a('0x4')});};
\ No newline at end of file
index e762478..451e5db 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0x4e0a=['interval','../client','getIntervals','Interval','name'];(function(_0x35b629,_0x127357){var _0x8ff983=function(_0x102481){while(--_0x102481){_0x35b629['push'](_0x35b629['shift']());}};_0x8ff983(++_0x127357);}(_0x4e0a,0x15f));var _0xa4e0=function(_0x40220a,_0x22feb1){_0x40220a=_0x40220a-0x0;var _0x3903cc=_0x4e0a[_0x40220a];return _0x3903cc;};'use strict';var client=require(_0xa4e0('0x0'));exports[_0xa4e0('0x1')]=function(){return function(){return client['Request']('GetInterval',{'options':{'raw':![],'where':{'IntervalId':null},'attributes':['id','name'],'include':[{'model':_0xa4e0('0x2'),'as':'Intervals','attributes':['id',_0xa4e0('0x3'),_0xa4e0('0x4')]}]},'log':'getIntervals'});};};
\ No newline at end of file
index 8f9c33c..87fce28 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0x5204=['update','Request','UpdateMailInteraction','updateMailInteraction','addTags','AddTagsToMailInteraction','addTagsToChatInteraction','../client'];(function(_0x237546,_0xa81b26){var _0x233e29=function(_0x728aa4){while(--_0x728aa4){_0x237546['push'](_0x237546['shift']());}};_0x233e29(++_0xa81b26);}(_0x5204,0xdf));var _0x4520=function(_0x278e3c,_0x1c9cfd){_0x278e3c=_0x278e3c-0x0;var _0x3e2d9b=_0x5204[_0x278e3c];return _0x3e2d9b;};'use strict';var client=require(_0x4520('0x0'));exports[_0x4520('0x1')]=function(_0x53b1ab,_0x12a3a1){return client[_0x4520('0x2')](_0x4520('0x3'),{'body':_0x12a3a1,'options':{'where':{'id':_0x53b1ab}},'log':_0x4520('0x4')});};exports[_0x4520('0x5')]=function(_0x592fe0,_0x41d89c){return client['Request'](_0x4520('0x6'),{'body':_0x41d89c,'options':{'where':{'id':_0x592fe0}},'log':_0x4520('0x7')});};
\ No newline at end of file
index 9b9d0bd..efdb525 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0xf8d5=['CreateMailMessage','createMailMessage','../client','create'];(function(_0x11b8ae,_0x485fa8){var _0x35a448=function(_0x188a5b){while(--_0x188a5b){_0x11b8ae['push'](_0x11b8ae['shift']());}};_0x35a448(++_0x485fa8);}(_0xf8d5,0x19a));var _0x5f8d=function(_0x3bc5b9,_0x162617){_0x3bc5b9=_0x3bc5b9-0x0;var _0x50291d=_0xf8d5[_0x3bc5b9];return _0x50291d;};'use strict';var client=require(_0x5f8d('0x0'));exports[_0x5f8d('0x1')]=function(_0x5d9c59){return client['Request'](_0x5f8d('0x2'),{'body':_0x5d9c59,'log':_0x5f8d('0x3')});};
\ No newline at end of file
index fb5cc03..3d7aad8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0xd716=['Agents','online','getMailQueues','Request','GetMailQueue','name','timeout','strategy','User'];(function(_0x2e1b69,_0x154303){var _0x102c68=function(_0xf448f2){while(--_0xf448f2){_0x2e1b69['push'](_0x2e1b69['shift']());}};_0x102c68(++_0x154303);}(_0xd716,0x1a1));var _0x6d71=function(_0x5b04a3,_0xfda4fd){_0x5b04a3=_0x5b04a3-0x0;var _0x1adf11=_0xd716[_0x5b04a3];return _0x1adf11;};'use strict';var client=require('../client');exports['getMailQueues']=function(){return function(){return client[_0x6d71('0x0')](_0x6d71('0x1'),{'options':{'raw':![],'attributes':['id',_0x6d71('0x2'),_0x6d71('0x3'),_0x6d71('0x4')],'include':[{'model':_0x6d71('0x5'),'as':_0x6d71('0x6'),'attributes':['id',_0x6d71('0x2'),_0x6d71('0x7'),'mailPause']}]},'log':_0x6d71('0x8')});};};
\ No newline at end of file
index 37719f8..2419dc0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0x5d09=['UpdateMailQueueReport','../client','create','Request','CreateMailQueueReport','update'];(function(_0x306133,_0x477e93){var _0x653010=function(_0x1f43ba){while(--_0x1f43ba){_0x306133['push'](_0x306133['shift']());}};_0x653010(++_0x477e93);}(_0x5d09,0x17b));var _0x95d0=function(_0x5a57a3,_0x2a7018){_0x5a57a3=_0x5a57a3-0x0;var _0x2ef960=_0x5d09[_0x5a57a3];return _0x2ef960;};'use strict';var client=require(_0x95d0('0x0'));exports[_0x95d0('0x1')]=function(_0x428550){return client[_0x95d0('0x2')](_0x95d0('0x3'),{'body':_0x428550,'log':_0x95d0('0x3')});};exports[_0x95d0('0x4')]=function(_0x4e38bc,_0x2fdce8){return client[_0x95d0('0x2')]('UpdateMailQueueReport',{'body':_0x2fdce8,'options':{'where':{'uniqueid':_0x4e38bc},'order':[['id','DESC']],'limit':0x1},'log':_0x95d0('0x5')});};
\ No newline at end of file
index e1702e2..7213a6f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0x32cf=['addTags','AddTagsToOpenchannelInteraction','../client','update','Request','UpdateOpenchannelInteraction','updateOpenchannelInteraction'];(function(_0x2ae444,_0x5e9881){var _0x4d8790=function(_0x568cbb){while(--_0x568cbb){_0x2ae444['push'](_0x2ae444['shift']());}};_0x4d8790(++_0x5e9881);}(_0x32cf,0x167));var _0xf32c=function(_0x525af9,_0x4edd23){_0x525af9=_0x525af9-0x0;var _0x129fbf=_0x32cf[_0x525af9];return _0x129fbf;};'use strict';var client=require(_0xf32c('0x0'));exports[_0xf32c('0x1')]=function(_0x2cafa7,_0x20fbad){return client[_0xf32c('0x2')](_0xf32c('0x3'),{'body':_0x20fbad,'options':{'where':{'id':_0x2cafa7}},'log':_0xf32c('0x4')});};exports[_0xf32c('0x5')]=function(_0x1b4095,_0x20a903){return client['Request'](_0xf32c('0x6'),{'body':_0x20a903,'options':{'where':{'id':_0x1b4095}},'log':'addTagsToChatInteraction'});};
\ No newline at end of file
index 3b90f5b..3a48ef3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0x3f9e=['Request','createOpenchannelMessage','../client','create'];(function(_0x563dc8,_0x390ba2){var _0x7a373=function(_0x560ae7){while(--_0x560ae7){_0x563dc8['push'](_0x563dc8['shift']());}};_0x7a373(++_0x390ba2);}(_0x3f9e,0xd6));var _0xe3f9=function(_0x10b4f4,_0x4f1ca0){_0x10b4f4=_0x10b4f4-0x0;var _0x187294=_0x3f9e[_0x10b4f4];return _0x187294;};'use strict';var client=require(_0xe3f9('0x0'));exports[_0xe3f9('0x1')]=function(_0x342be4){return client[_0xe3f9('0x2')]('CreateOpenchannelMessage',{'body':_0x342be4,'log':_0xe3f9('0x3')});};
\ No newline at end of file
index 4dcb5ce..b322f41 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0xb259=['Request','GetOpenchannelQueue','name','timeout','strategy','User','online','openchannelPause','../client','getOpenchannelQueues'];(function(_0x171c65,_0x11c593){var _0x1abd43=function(_0x3c393d){while(--_0x3c393d){_0x171c65['push'](_0x171c65['shift']());}};_0x1abd43(++_0x11c593);}(_0xb259,0x152));var _0x9b25=function(_0xc2fc17,_0x2b78be){_0xc2fc17=_0xc2fc17-0x0;var _0x5b4fe0=_0xb259[_0xc2fc17];return _0x5b4fe0;};'use strict';var client=require(_0x9b25('0x0'));exports[_0x9b25('0x1')]=function(){return function(){return client[_0x9b25('0x2')](_0x9b25('0x3'),{'options':{'raw':![],'attributes':['id',_0x9b25('0x4'),_0x9b25('0x5'),_0x9b25('0x6')],'include':[{'model':_0x9b25('0x7'),'as':'Agents','attributes':['id',_0x9b25('0x4'),_0x9b25('0x8'),_0x9b25('0x9')]}]},'log':'getOpenchannelQueues'});};};
\ No newline at end of file
index 44a08ca..c245475 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0xd4bb=['DESC','UpdateOpenchannelQueueReport','../client','create','Request','CreateOpenchannelQueueReport','update'];(function(_0x292f93,_0x2c6e8e){var _0x5a94b1=function(_0x25735e){while(--_0x25735e){_0x292f93['push'](_0x292f93['shift']());}};_0x5a94b1(++_0x2c6e8e);}(_0xd4bb,0x144));var _0xbd4b=function(_0x352ab4,_0x900fe0){_0x352ab4=_0x352ab4-0x0;var _0x28b576=_0xd4bb[_0x352ab4];return _0x28b576;};'use strict';var client=require(_0xbd4b('0x0'));exports[_0xbd4b('0x1')]=function(_0x17db2b){return client[_0xbd4b('0x2')]('CreateOpenchannelQueueReport',{'body':_0x17db2b,'log':_0xbd4b('0x3')});};exports[_0xbd4b('0x4')]=function(_0x34111c,_0x11f784){return client[_0xbd4b('0x2')]('UpdateOpenchannelQueueReport',{'body':_0x11f784,'options':{'where':{'uniqueid':_0x34111c},'order':[['id',_0xbd4b('0x5')]],'limit':0x1},'log':_0xbd4b('0x6')});};
\ No newline at end of file
index eb9b49c..c12ca52 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0x46cb=['updateSmsInteraction','addTags','AddTagsToSmsInteraction','addTagsToSmsInteraction','Request','UpdateSmsInteraction'];(function(_0x164951,_0x4c2c5d){var _0x448187=function(_0x45d583){while(--_0x45d583){_0x164951['push'](_0x164951['shift']());}};_0x448187(++_0x4c2c5d);}(_0x46cb,0xd6));var _0xb46c=function(_0x42c069,_0xdfa0f9){_0x42c069=_0x42c069-0x0;var _0x4f0740=_0x46cb[_0x42c069];return _0x4f0740;};'use strict';var client=require('../client');exports['update']=function(_0x58bb7b,_0x3d90fc){return client[_0xb46c('0x0')](_0xb46c('0x1'),{'body':_0x3d90fc,'options':{'where':{'id':_0x58bb7b}},'log':_0xb46c('0x2')});};exports[_0xb46c('0x3')]=function(_0x2aab0a,_0x2a6e97){return client[_0xb46c('0x0')](_0xb46c('0x4'),{'body':_0x2a6e97,'options':{'where':{'id':_0x2aab0a}},'log':_0xb46c('0x5')});};
\ No newline at end of file
index cd1b244..ea108f2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0x335e=['../client','create','Request','CreateSmsMessage','createSmsMessage'];(function(_0x3bc86f,_0xe5c5f2){var _0x5ce79b=function(_0x34c1c5){while(--_0x34c1c5){_0x3bc86f['push'](_0x3bc86f['shift']());}};_0x5ce79b(++_0xe5c5f2);}(_0x335e,0x159));var _0xe335=function(_0x3a7aa5,_0x327a62){_0x3a7aa5=_0x3a7aa5-0x0;var _0x371c24=_0x335e[_0x3a7aa5];return _0x371c24;};'use strict';var client=require(_0xe335('0x0'));exports[_0xe335('0x1')]=function(_0x49aeb8){return client[_0xe335('0x2')](_0xe335('0x3'),{'body':_0x49aeb8,'log':_0xe335('0x4')});};
\ No newline at end of file
index 249af97..92c644a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0x0713=['getSmsQueues','Request','GetSmsQueue','name','timeout','strategy','Agents','online','smsPause'];(function(_0x2f45ea,_0x15c656){var _0x485a84=function(_0x4a1fe3){while(--_0x4a1fe3){_0x2f45ea['push'](_0x2f45ea['shift']());}};_0x485a84(++_0x15c656);}(_0x0713,0x1ba));var _0x3071=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x0713[_0x3dd15e];return _0x231fd0;};'use strict';var client=require('../client');exports['getSmsQueues']=function(){return function(){return client[_0x3071('0x0')](_0x3071('0x1'),{'options':{'raw':![],'attributes':['id',_0x3071('0x2'),_0x3071('0x3'),_0x3071('0x4')],'include':[{'model':'User','as':_0x3071('0x5'),'attributes':['id',_0x3071('0x2'),_0x3071('0x6'),_0x3071('0x7')]}]},'log':_0x3071('0x8')});};};
\ No newline at end of file
index a9d239f..eca0a84 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0xedd9=['create','Request','CreateSmsQueueReport','update','UpdateSmsQueueReport','DESC'];(function(_0x41e8c4,_0x30d9ff){var _0x54ffbe=function(_0x4131af){while(--_0x4131af){_0x41e8c4['push'](_0x41e8c4['shift']());}};_0x54ffbe(++_0x30d9ff);}(_0xedd9,0xfc));var _0x9edd=function(_0x496fe9,_0xf0c7c1){_0x496fe9=_0x496fe9-0x0;var _0x5ef8d8=_0xedd9[_0x496fe9];return _0x5ef8d8;};'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 c346881..aecb403 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(_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
+var _0xa9e0=['name','pauseType','lastPauseAt','voicePause','chatPause','mailPause','smsPause','whatsappPause','openchannelPause','faxCapacity','openchannelCapacity','../client','getAgents','Request'];(function(_0x5b0e77,_0x233e4a){var _0x4ab639=function(_0x2dd8e9){while(--_0x2dd8e9){_0x5b0e77['push'](_0x5b0e77['shift']());}};_0x4ab639(++_0x233e4a);}(_0xa9e0,0x123));var _0x0a9e=function(_0x138f59,_0x1b53fb){_0x138f59=_0x138f59-0x0;var _0x3d114d=_0xa9e0[_0x138f59];return _0x3d114d;};'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 0267acc..24da63d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0xecb2=['AddTagsToWhatsappInteraction','../client','updateWhatsappInteraction','addTags','Request'];(function(_0x2eac4f,_0x5173f9){var _0x58f73b=function(_0x529f28){while(--_0x529f28){_0x2eac4f['push'](_0x2eac4f['shift']());}};_0x58f73b(++_0x5173f9);}(_0xecb2,0xf6));var _0x2ecb=function(_0x508562,_0x124097){_0x508562=_0x508562-0x0;var _0x5c3d13=_0xecb2[_0x508562];return _0x5c3d13;};'use strict';var client=require(_0x2ecb('0x0'));exports['update']=function(_0x524d76,_0x3ac728){return client['Request']('UpdateWhatsappInteraction',{'body':_0x3ac728,'options':{'where':{'id':_0x524d76}},'log':_0x2ecb('0x1')});};exports[_0x2ecb('0x2')]=function(_0x393e7c,_0x2a4fe5){return client[_0x2ecb('0x3')](_0x2ecb('0x4'),{'body':_0x2a4fe5,'options':{'where':{'id':_0x393e7c}},'log':'addTagsToWhatsappInteraction'});};
\ No newline at end of file
index 27ab1b6..496fb8a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0xc768=['CreateWhatsappMessage','createWhatsappMessage','../client','create','Request'];(function(_0x1359e0,_0x3155b4){var _0x4b71ca=function(_0x172aec){while(--_0x172aec){_0x1359e0['push'](_0x1359e0['shift']());}};_0x4b71ca(++_0x3155b4);}(_0xc768,0x133));var _0x8c76=function(_0x3af49b,_0x6b371f){_0x3af49b=_0x3af49b-0x0;var _0x1f6102=_0xc768[_0x3af49b];return _0x1f6102;};'use strict';var client=require(_0x8c76('0x0'));exports[_0x8c76('0x1')]=function(_0x3e9a4){return client[_0x8c76('0x2')](_0x8c76('0x3'),{'body':_0x3e9a4,'log':_0x8c76('0x4')});};
\ No newline at end of file
index 74adbb9..a827a5b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0xe9cd=['strategy','User','Agents','online','getWhatsappQueues','GetWhatsappQueue','name'];(function(_0x5066ce,_0x21d632){var _0x506ac4=function(_0x1a0242){while(--_0x1a0242){_0x5066ce['push'](_0x5066ce['shift']());}};_0x506ac4(++_0x21d632);}(_0xe9cd,0x169));var _0xde9c=function(_0x2064e5,_0x4f6fa2){_0x2064e5=_0x2064e5-0x0;var _0x21a233=_0xe9cd[_0x2064e5];return _0x21a233;};'use strict';var client=require('../client');exports[_0xde9c('0x0')]=function(){return function(){return client['Request'](_0xde9c('0x1'),{'options':{'raw':![],'attributes':['id',_0xde9c('0x2'),'timeout',_0xde9c('0x3')],'include':[{'model':_0xde9c('0x4'),'as':_0xde9c('0x5'),'attributes':['id',_0xde9c('0x2'),_0xde9c('0x6'),'whatsappPause']}]},'log':'getWhatsappQueues'});};};
\ No newline at end of file
index ef82e7c..4e1b9a1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0xef72=['Request','CreateWhatsappQueueReport','DESC','UpdateWhatsappQueueReport','../client'];(function(_0x1bbc69,_0x961d88){var _0x2b8026=function(_0x57bf2b){while(--_0x57bf2b){_0x1bbc69['push'](_0x1bbc69['shift']());}};_0x2b8026(++_0x961d88);}(_0xef72,0x11c));var _0x2ef7=function(_0x2ba0fb,_0x37db15){_0x2ba0fb=_0x2ba0fb-0x0;var _0x5064fe=_0xef72[_0x2ba0fb];return _0x5064fe;};'use strict';var client=require(_0x2ef7('0x0'));exports['create']=function(_0xeca586){return client[_0x2ef7('0x1')](_0x2ef7('0x2'),{'body':_0xeca586,'log':_0x2ef7('0x2')});};exports['update']=function(_0x274870,_0x2c8dfc){return client[_0x2ef7('0x1')]('UpdateWhatsappQueueReport',{'body':_0x2c8dfc,'options':{'where':{'uniqueid':_0x274870},'order':[['id',_0x2ef7('0x3')]],'limit':0x1},'log':_0x2ef7('0x4')});};
\ No newline at end of file
index 3d4408e..274fd45 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0xd490=['format','[%s][AGENT][NAME:%s][STATUS:%s]','name','toLowerCase','consequence','validate','length','error','[%s][AGENT]\x20%s','map','stop','find','timeout','createQueue','atimeout','channel','rules','complete','[%s][AGENT]\x20ROUTING\x20END','next','agent','[%s][QUEUE]\x20%s','seq-queue','../../../../config/logger','routing','./strategy','name\x20is\x20a\x20string\x20and\x20it\x20is\x20required','number','timeout\x20is\x20a\x20number','info'];(function(_0x312634,_0x165c8e){var _0x34a887=function(_0x319519){while(--_0x319519){_0x312634['push'](_0x312634['shift']());}};_0x34a887(++_0x165c8e);}(_0xd490,0xe8));var _0x0d49=function(_0x1b783d,_0xbab3db){_0x1b783d=_0x1b783d-0x0;var _0x22b4c0=_0xd490[_0x1b783d];return _0x22b4c0;};'use strict';var schema=require('validate');var _=require('lodash');var util=require('util');var seqqueue=require(_0x0d49('0x0'));var logger=require(_0x0d49('0x1'))(_0x0d49('0x2'));var strategy=require(_0x0d49('0x3'));var queue=schema({'name':{'type':'string','required':!![],'message':_0x0d49('0x4')},'timeout':{'type':_0x0d49('0x5'),'message':_0x0d49('0x6')}});function writeLog(_0x5bf87f,_0x205274,_0x48b3cc){return logger[_0x0d49('0x7')](util[_0x0d49('0x8')](_0x0d49('0x9'),_0x5bf87f,_0x205274[_0x0d49('0xa')],_0x48b3cc));}function handleFindAgent(_0x28906f){return function(_0x115ffa){return _0x115ffa[_0x0d49('0xa')][_0x0d49('0xb')]()===_0x28906f[_0x0d49('0xb')]();};}exports[_0x0d49('0xc')]=function(_0x53ad8e,_0x4fd67a,_0xf714bc,_0x4f05ef){return function(_0x40c9a9){try{var _0x4f50f7={'name':_0x4fd67a[0x0],'timeout':_0x4fd67a[0x1]};var _0x17c6bc=queue[_0x0d49('0xd')](_0x4f50f7,{'typecast':!![]});if(_0x17c6bc[_0x0d49('0xe')]){logger[_0x0d49('0xf')](_0x0d49('0x10'),_0x53ad8e,_[_0x0d49('0x11')](_0x17c6bc,'message')['join'](',\x20'));_0x40c9a9[_0x0d49('0x12')]();}else{var _0x4e88a4=_[_0x0d49('0x13')](_0xf714bc['agents'],handleFindAgent(_0x4f50f7[_0x0d49('0xa')]));if(_0x4e88a4){var _0x5eda44=(_0x4f50f7[_0x0d49('0x14')]||0xa)*0x3e8;var _0x7c4121,_0x286f69;var _0x1a2e8b=seqqueue[_0x0d49('0x15')](_0x5eda44);_0x1a2e8b['id']=_0x53ad8e;_0x1a2e8b[_0x0d49('0x16')]=_0x5eda44;_0x1a2e8b[_0x0d49('0x17')]=_0x4f05ef[_0x0d49('0x17')];writeLog(_0x53ad8e,_0x4e88a4,util[_0x0d49('0x8')]('START:%s',_0x5eda44));_0xf714bc['rules'][_0x53ad8e]['on']('end',function(){logger[_0x0d49('0x7')]('[%s][AGENT]\x20ROUTING\x20STOPPED',_0x53ad8e);clearTimeout(_0x286f69);_0x286f69=undefined;_0x1a2e8b['close']();if(_0xf714bc[_0x0d49('0x18')][_0x53ad8e]){delete _0xf714bc['rules'][_0x53ad8e];}_0x40c9a9[_0x0d49('0x12')]();});_0xf714bc[_0x0d49('0x18')][_0x53ad8e]['on'](_0x0d49('0x19'),function(){if(_0xf714bc[_0x0d49('0x18')][_0x53ad8e]){delete _0xf714bc[_0x0d49('0x18')][_0x53ad8e];}});_0x286f69=setTimeout(function(){logger[_0x0d49('0x7')](_0x0d49('0x1a'),_0x53ad8e);clearTimeout(_0x286f69);_0x1a2e8b['close']();_0x40c9a9[_0x0d49('0x1b')]();},_0x5eda44);strategy[_0x0d49('0x1c')](_0x1a2e8b,_0x4e88a4,_0xf714bc,_0x4f05ef);}else{logger[_0x0d49('0xf')]('[%s][AGENT]\x20agent\x20not\x20found\x20%s',_0x53ad8e,_0x4f50f7[_0x0d49('0xa')]);_0x40c9a9[_0x0d49('0x12')]();}}}catch(_0x542785){console['log'](_0x542785);logger[_0x0d49('0xf')](_0x0d49('0x1d'),_0x53ad8e,_0x542785['stack']);_0x40c9a9[_0x0d49('0x12')]();}};};
\ No newline at end of file
index e3f4ed3..51cc611 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0xb694=['finally','$LATEST','message','toString','postText','next','providerName','providerResponse','stop','catch','moment','aws-sdk','./utils','../../../../config/logger','routing','../../rpc/chatMessage','../../rpc/openchannelMessage','../../rpc/mailMessage','../../rpc/smsMessage','../../rpc/whatsappMessage','consequence','isNil','interaction','UserId','info','[%s][AMAZONLEX]\x20%s','contact','format','YYYY-MM-DD\x20HH:mm:ss','out','channel','phone','ChatWebsiteId','account','upperFirst','AccountId','created','isEmpty','getMustacheRender','Message','create','then','body','error','stringify'];(function(_0x3de29c,_0x1ff545){var _0x21064b=function(_0x36b6bd){while(--_0x36b6bd){_0x3de29c['push'](_0x3de29c['shift']());}};_0x21064b(++_0x1ff545);}(_0xb694,0x91));var _0x4b69=function(_0x3853a2,_0x9ef230){_0x3853a2=_0x3853a2-0x0;var _0x25f837=_0xb694[_0x3853a2];return _0x25f837;};'use strict';var _=require('lodash');var moment=require(_0x4b69('0x0'));var AWS=require(_0x4b69('0x1'));var utils=require(_0x4b69('0x2'));var logger=require(_0x4b69('0x3'))(_0x4b69('0x4'));var rpc={'chatMessage':require(_0x4b69('0x5')),'openchannelMessage':require(_0x4b69('0x6')),'mailMessage':require(_0x4b69('0x7')),'smsMessage':require(_0x4b69('0x8')),'faxMessage':require('../../rpc/faxMessage'),'whatsappMessage':require(_0x4b69('0x9'))};exports[_0x4b69('0xa')]=function(_0x438ea5,_0x40ee05){return function(_0x280627){try{if(!_[_0x4b69('0xb')](this[_0x4b69('0xc')][_0x4b69('0xd')])){logger[_0x4b69('0xe')](_0x4b69('0xf'),_0x438ea5,'Agent\x20is\x20managing\x20the\x20interaction.\x20Go\x20to\x20next\x20application.');return _0x280627['next']();}var _0x2b0160={'ContactId':this[_0x4b69('0x10')]['id'],'sentAt':moment()[_0x4b69('0x11')](_0x4b69('0x12')),'direction':_0x4b69('0x13')};if(this[_0x4b69('0x14')]==='sms'||this[_0x4b69('0x14')]==='whatsapp'){_0x2b0160[_0x4b69('0x15')]=this[_0x4b69('0xc')][_0x4b69('0x15')];}var _0x267d7a=this[_0x4b69('0x14')];if(_0x267d7a==='chat'){_0x2b0160[_0x4b69('0x16')]=this[_0x4b69('0x17')]['id'];}else{_0x2b0160[_[_0x4b69('0x18')](_0x267d7a)+_0x4b69('0x19')]=this[_0x4b69('0x17')]['id'];}_0x2b0160[_[_0x4b69('0x18')](_0x267d7a)+'InteractionId']=this[_0x4b69('0xc')]['id'];if(this['interaction'][_0x4b69('0x1a')]){var _0x151ce7=_0x40ee05[0x4];if(!_[_0x4b69('0x1b')](_0x151ce7)){_0x2b0160['body']=utils[_0x4b69('0x1c')](_0x151ce7,this);return rpc[_0x267d7a+_0x4b69('0x1d')][_0x4b69('0x1e')](_0x2b0160)[_0x4b69('0x1f')](function(_0x2c3eac){logger[_0x4b69('0xe')](_0x4b69('0xf'),_0x438ea5,_0x2b0160[_0x4b69('0x20')]);})['catch'](function(_0x195788){logger[_0x4b69('0x21')]('[%s][AMAZONLEX]\x20%s',_0x438ea5,JSON[_0x4b69('0x22')](_0x195788));})[_0x4b69('0x23')](function(){logger[_0x4b69('0xe')]('[%s][AMAZONLEX]\x20Welcome\x20Message\x20has\x20been\x20sent!',_0x438ea5);_0x280627['stop']();});}else{logger[_0x4b69('0xe')]('[%s][AMAZONLEX]\x20Welcome\x20Message\x20is\x20empty.\x20It\x20will\x20wait\x20for\x20a\x20message\x20from\x20customer!',_0x438ea5);_0x280627['stop']();}}else{var _0x3931aa=this;var _0x57dcd6=new AWS['LexRuntime']({'accessKeyId':_0x40ee05[0x0],'secretAccessKey':_0x40ee05[0x1],'region':_0x40ee05[0x2]});var _0x213a23={'botAlias':_0x4b69('0x24'),'botName':_0x40ee05[0x3],'inputText':this[_0x4b69('0x25')]['body'],'userId':this[_0x4b69('0x14')]+':'+this[_0x4b69('0xc')]['id'][_0x4b69('0x26')]()};_0x57dcd6[_0x4b69('0x27')](_0x213a23,function(_0x54d8c4,_0x564284){if(_0x54d8c4){logger['error'](_0x4b69('0xf'),_0x438ea5,_0x54d8c4[_0x4b69('0x25')]);_0x280627[_0x4b69('0x28')]();}else if(_0x564284&&_0x564284['message']){_0x3931aa[_0x4b69('0x20')]['amazonlex']=_0x564284;_0x2b0160[_0x4b69('0x20')]=_0x564284[_0x4b69('0x25')];_0x2b0160[_0x4b69('0x29')]='amazonlex';_0x2b0160[_0x4b69('0x2a')]=JSON['stringify'](_0x564284);return rpc[_0x267d7a+'Message'][_0x4b69('0x1e')](_0x2b0160)[_0x4b69('0x1f')](function(_0x432f10){logger[_0x4b69('0xe')](_0x4b69('0xf'),_0x438ea5,_0x2b0160[_0x4b69('0x20')]);if(_0x564284['dialogState']=='Failed'){_0x280627[_0x4b69('0x28')]();}else{_0x280627[_0x4b69('0x2b')]();}})[_0x4b69('0x2c')](function(_0x2657e0){logger[_0x4b69('0x21')]('[%s][AMAZONLEX]\x20%s',_0x438ea5,JSON['stringify'](_0x2657e0));_0x280627[_0x4b69('0x28')]();});}else{_0x280627[_0x4b69('0x28')]();}});}}catch(_0x59dc24){logger[_0x4b69('0x21')](_0x4b69('0xf'),_0x438ea5,JSON[_0x4b69('0x22')](_0x59dc24));_0x280627[_0x4b69('0x2b')]();}};};
\ No newline at end of file
index d3caffc..5aa0c5b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0x0fb0=['../../rpc/openchannelMessage','../../rpc/smsMessage','../../rpc/whatsappMessage','../../rpc/chatInteraction','../../rpc/mailInteraction','../../rpc/smsInteraction','../../rpc/faxInteraction','../../rpc/whatsappInteraction','../../mailRpc','consequence','channel','mail','info','Autoreply\x20not\x20executed\x20(message\x20is\x20autoreply)','isNil','interaction','created','[%s][AUTOREPLY]\x20%s','Autoreply\x20already\x20sent','next','autoreplyExecuted','[%s][AUTOREPLY][autoreplyExecuted]\x20%s','One\x20Time\x20already\x20sent','contact','format','YYYY-MM-DD\x20HH:mm:ss','out','body','getMustacheRender','message','from','phone','read','subject','startsWith','Re:','Re:\x20','account','upperFirst','Message','inReplyTo','html','<div\x20id=\x22xm-mail-content\x22','<div','</div>','auto-replied','All','auto_reply','sendMailMessage','[%s][AUTOREPLY]\x20SMTP\x20SENT','messageId','create','then','stringify','error','[RPC][%s][AUTOREPLY]\x20%s','finally','Interaction','update','catch','[RPC][%s][AUTOREPLY][autoreplyExecuted]\x20%s','resolve','moment','./utils','../../../../config/logger','routing','../../rpc/chatMessage'];(function(_0x1504e2,_0x1f3ee2){var _0x4cb71e=function(_0x252c6d){while(--_0x252c6d){_0x1504e2['push'](_0x1504e2['shift']());}};_0x4cb71e(++_0x1f3ee2);}(_0x0fb0,0x107));var _0x00fb=function(_0x74dfb8,_0xc263ba){_0x74dfb8=_0x74dfb8-0x0;var _0x22d154=_0x0fb0[_0x74dfb8];return _0x22d154;};'use strict';var _=require('lodash');var moment=require(_0x00fb('0x0'));var utils=require(_0x00fb('0x1'));var logger=require(_0x00fb('0x2'))(_0x00fb('0x3'));var rpc={'chatMessage':require(_0x00fb('0x4')),'openchannelMessage':require(_0x00fb('0x5')),'mailMessage':require('../../rpc/mailMessage'),'smsMessage':require(_0x00fb('0x6')),'faxMessage':require('../../rpc/faxMessage'),'whatsappMessage':require(_0x00fb('0x7')),'chatInteraction':require(_0x00fb('0x8')),'openchannelInteraction':require('../../rpc/openchannelInteraction'),'mailInteraction':require(_0x00fb('0x9')),'smsInteraction':require(_0x00fb('0xa')),'faxInteraction':require(_0x00fb('0xb')),'whatsappInteraction':require(_0x00fb('0xc'))};var mailRpc=require(_0x00fb('0xd'));exports[_0x00fb('0xe')]=function(_0x2b7d95,_0x20f4fc,_0x5be442,_0x64543d){return function(_0x4311be){try{var _0x4cc60e=this[_0x00fb('0xf')];if(_0x4cc60e===_0x00fb('0x10')&&_0x64543d['body']['isAutoreply']){logger[_0x00fb('0x11')]('[%s][AUTOREPLY]\x20%s',_0x2b7d95,_0x00fb('0x12'));return _0x4311be['next']();}if(_0x20f4fc[0x0]==='1'&&(_[_0x00fb('0x13')](this[_0x00fb('0x14')][_0x00fb('0x15')])||!this['interaction'][_0x00fb('0x15')])){logger[_0x00fb('0x11')](_0x00fb('0x16'),_0x2b7d95,_0x00fb('0x17'));return _0x4311be[_0x00fb('0x18')]();}if(_0x20f4fc[0x0]==='2'&&this[_0x00fb('0x14')][_0x00fb('0x19')]){logger[_0x00fb('0x11')](_0x00fb('0x1a'),_0x2b7d95,_0x00fb('0x1b'));return _0x4311be[_0x00fb('0x18')]();}var _0x17665e={'ContactId':this[_0x00fb('0x1c')]['id'],'sentAt':moment()[_0x00fb('0x1d')](_0x00fb('0x1e')),'direction':_0x00fb('0x1f')};if(this[_0x00fb('0xf')]===_0x00fb('0x10')){_0x17665e[_0x00fb('0x20')]=utils[_0x00fb('0x21')](_0x20f4fc[0x2],this);}else{_0x17665e[_0x00fb('0x20')]=utils['getMustacheRender'](_0x20f4fc[0x1],this);}if(this[_0x00fb('0x22')]){_0x17665e['to']=this[_0x00fb('0x22')]['from']||'';if(this['channel']===_0x00fb('0x10')&&_0x20f4fc[0x1]==='1'){_0x17665e['cc']=this[_0x00fb('0x22')]['cc']||'';}_0x17665e[_0x00fb('0x23')]=this['message']['to']||'';_0x17665e['phone']=this['message'][_0x00fb('0x24')]||'';_0x17665e[_0x00fb('0x25')]=!![];if(this[_0x00fb('0x22')][_0x00fb('0x26')]){_0x17665e['subject']='';_0x17665e[_0x00fb('0x26')]+=_[_0x00fb('0x27')](this[_0x00fb('0x22')][_0x00fb('0x26')],_0x00fb('0x28'))?'':_0x00fb('0x29');_0x17665e[_0x00fb('0x26')]+=this['message'][_0x00fb('0x26')];}}if(this[_0x00fb('0xf')]==='chat'){_0x17665e['ChatWebsiteId']=this[_0x00fb('0x2a')]['id'];}else{_0x17665e[_[_0x00fb('0x2b')](this[_0x00fb('0xf')])+'AccountId']=this[_0x00fb('0x2a')]['id'];}_0x17665e[_[_0x00fb('0x2b')](this['channel'])+'InteractionId']=this[_0x00fb('0x14')]['id'];var _0x3d5cc8=this[_0x00fb('0x14')];if(rpc[this[_0x00fb('0xf')]+_0x00fb('0x2c')]){if(this[_0x00fb('0xf')]===_0x00fb('0x10')){_0x17665e[_0x00fb('0x2d')]=this[_0x00fb('0x22')]['messageId'];_0x17665e[_0x00fb('0x2e')]='<div\x20id=\x22xm-mail-content\x22>'+_['replace'](_0x17665e[_0x00fb('0x20')],_0x00fb('0x2f'),_0x00fb('0x30'))+_0x00fb('0x31');_0x17665e['headers']={'Auto-Submitted':_0x00fb('0x32'),'X-Auto-Response-Suppress':_0x00fb('0x33'),'Precedence':_0x00fb('0x34')};return mailRpc[_0x00fb('0x35')](this[_0x00fb('0x2a')]['smtpOptions'],_0x17665e)['then'](function(_0x450fb8){logger[_0x00fb('0x11')](_0x00fb('0x36'),_0x2b7d95);_0x17665e[_0x00fb('0x37')]=_0x450fb8['message']['messageId'];return rpc[_0x4cc60e+_0x00fb('0x2c')][_0x00fb('0x38')](_0x17665e);})[_0x00fb('0x39')](function(_0x268bc5){logger[_0x00fb('0x11')]('[%s][AUTOREPLY]\x20%s',_0x2b7d95,JSON[_0x00fb('0x3a')](_0x268bc5));})['catch'](function(_0xbc49a2){logger[_0x00fb('0x3b')](_0x00fb('0x3c'),_0x2b7d95,JSON[_0x00fb('0x3a')](_0xbc49a2));})[_0x00fb('0x3d')](function(){Promise['resolve']()[_0x00fb('0x39')](function(){if(_0x20f4fc[0x0]!=='2'||_0x3d5cc8[_0x00fb('0x19')])return;return rpc[_0x4cc60e+_0x00fb('0x3e')][_0x00fb('0x3f')](_0x3d5cc8['id'],{'autoreplyExecuted':!![]})[_0x00fb('0x39')](function(_0x32ad36){logger[_0x00fb('0x11')](_0x00fb('0x1a'),_0x2b7d95,JSON[_0x00fb('0x3a')](_0x32ad36));})[_0x00fb('0x40')](function(_0x17a0f9){logger[_0x00fb('0x3b')](_0x00fb('0x41'),_0x2b7d95,JSON[_0x00fb('0x3a')](_0x17a0f9));});})['then'](function(){_0x4311be['next']();});});}else{return rpc[this[_0x00fb('0xf')]+_0x00fb('0x2c')]['create'](_0x17665e)[_0x00fb('0x39')](function(){logger['info'](_0x00fb('0x16'),_0x2b7d95,_0x17665e[_0x00fb('0x20')]);})[_0x00fb('0x40')](function(_0x37ceea){logger['error'](_0x00fb('0x16'),_0x2b7d95,JSON['stringify'](_0x37ceea));})[_0x00fb('0x3d')](function(){Promise[_0x00fb('0x42')]()[_0x00fb('0x39')](function(){if(_0x20f4fc[0x0]!=='2'||_0x3d5cc8['autoreplyExecuted'])return;return rpc[_0x4cc60e+_0x00fb('0x3e')][_0x00fb('0x3f')](_0x3d5cc8['id'],{'autoreplyExecuted':!![]})[_0x00fb('0x39')](function(_0x1a8476){logger[_0x00fb('0x11')](_0x00fb('0x1a'),_0x2b7d95,JSON[_0x00fb('0x3a')](_0x1a8476));})[_0x00fb('0x40')](function(_0x2034eb){logger[_0x00fb('0x3b')]('[RPC][%s][AUTOREPLY][autoreplyExecuted]\x20%s',_0x2b7d95,JSON[_0x00fb('0x3a')](_0x2034eb));});})['then'](function(){_0x4311be[_0x00fb('0x18')]();});});}}}catch(_0x1b8073){logger[_0x00fb('0x3b')](_0x00fb('0x16'),_0x2b7d95,JSON[_0x00fb('0x3a')](_0x1b8073));_0x4311be['stop']();}};};
\ No newline at end of file
index 0e7d189..1d12660 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0x57d3=['Interaction','update','interaction','info','[%s][CLOSE]\x20interaction\x20%s\x20has\x20been\x20closed!','error','[%s][CLOSE]\x20%s','stringify','finally','stop','../../../../config/logger','routing','../../rpc/chatInteraction','../../rpc/openchannelInteraction','../../rpc/smsInteraction','../../rpc/faxInteraction','consequence','[%s][CLOSE]\x20reason\x20%s','format','YYYY-MM-DD\x20HH:mm:ss','system','channel'];(function(_0x3b380d,_0x4bf247){var _0x54502b=function(_0x35d207){while(--_0x35d207){_0x3b380d['push'](_0x3b380d['shift']());}};_0x54502b(++_0x4bf247);}(_0x57d3,0x8e));var _0x357d=function(_0x4ab73a,_0x236135){_0x4ab73a=_0x4ab73a-0x0;var _0x417f49=_0x57d3[_0x4ab73a];return _0x417f49;};'use strict';var moment=require('moment');var logger=require(_0x357d('0x0'))(_0x357d('0x1'));var rpc={'chatInteraction':require(_0x357d('0x2')),'openchannelInteraction':require(_0x357d('0x3')),'smsInteraction':require(_0x357d('0x4')),'mailInteraction':require('../../rpc/mailInteraction'),'faxInteraction':require(_0x357d('0x5')),'whatsappInteraction':require('../../rpc/whatsappInteraction')};exports[_0x357d('0x6')]=function(_0x189e69,_0x391b30,_0x4ee3fe,_0x3e355d){return function(_0x250a45){try{logger['info'](_0x357d('0x7'),_0x189e69,_0x391b30[0x0]);var _0x1110e1={'closed':0x1,'closedAt':moment()[_0x357d('0x8')](_0x357d('0x9')),'closeReason':_0x357d('0xa'),'disposition':_0x391b30[0x0]};if(rpc[_0x3e355d[_0x357d('0xb')]+_0x357d('0xc')]){rpc[_0x3e355d[_0x357d('0xb')]+_0x357d('0xc')][_0x357d('0xd')](_0x3e355d[_0x357d('0xe')]['id'],_0x1110e1)['then'](function(_0x5dc6c2){logger[_0x357d('0xf')](_0x357d('0x10'),_0x189e69,_0x3e355d[_0x357d('0xe')]['id']);})['catch'](function(_0x4129eb){logger[_0x357d('0x11')](_0x357d('0x12'),_0x189e69,JSON[_0x357d('0x13')](_0x4129eb));})[_0x357d('0x14')](function(){_0x250a45[_0x357d('0x15')]();});}}catch(_0x30e847){logger['error'](_0x357d('0x12'),_0x189e69,JSON[_0x357d('0x13')](_0x30e847));_0x250a45[_0x357d('0x15')]();}};};
\ No newline at end of file
index edfd255..1dfe320 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0x4279=['providerName','providerResponse','endConversation','moment','apiai-promise','./utils','../../../../config/logger','routing','../../rpc/chatMessage','../../rpc/mailMessage','../../rpc/faxMessage','../../rpc/whatsappMessage','interaction','info','next','contact','format','YYYY-MM-DD\x20HH:mm:ss','out','channel','sms','whatsapp','phone','chat','ChatWebsiteId','account','upperFirst','AccountId','created','body','Message','create','[%s][DIALOGFLOW]\x20%s','catch','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!','message','then','dialogflow','result','fulfillment','speech'];(function(_0x1653bf,_0x43083b){var _0xe57166=function(_0x2cc1f0){while(--_0x2cc1f0){_0x1653bf['push'](_0x1653bf['shift']());}};_0xe57166(++_0x43083b);}(_0x4279,0x8d));var _0x9427=function(_0x7c9bfa,_0x453bbd){_0x7c9bfa=_0x7c9bfa-0x0;var _0x4a720e=_0x4279[_0x7c9bfa];return _0x4a720e;};'use strict';var _=require('lodash');var moment=require(_0x9427('0x0'));var apiai=require(_0x9427('0x1'));var md5=require('md5');var utils=require(_0x9427('0x2'));var logger=require(_0x9427('0x3'))(_0x9427('0x4'));var rpc={'chatMessage':require(_0x9427('0x5')),'openchannelMessage':require('../../rpc/openchannelMessage'),'mailMessage':require(_0x9427('0x6')),'smsMessage':require('../../rpc/smsMessage'),'faxMessage':require(_0x9427('0x7')),'whatsappMessage':require(_0x9427('0x8'))};exports['consequence']=function(_0x7fa417,_0x511208){return function(_0x25ba0b){try{if(!_['isNil'](this[_0x9427('0x9')]['UserId'])){logger[_0x9427('0xa')]('[%s][DIALOGFLOW]\x20%s',_0x7fa417,'Agent\x20is\x20managing\x20the\x20interaction.\x20Go\x20to\x20next\x20application.');return _0x25ba0b[_0x9427('0xb')]();}var _0x12b94e={'ContactId':this[_0x9427('0xc')]['id'],'sentAt':moment()[_0x9427('0xd')](_0x9427('0xe')),'direction':_0x9427('0xf')};if(this[_0x9427('0x10')]===_0x9427('0x11')||this['channel']===_0x9427('0x12')){_0x12b94e[_0x9427('0x13')]=this[_0x9427('0x9')][_0x9427('0x13')];}var _0x27c98e=this[_0x9427('0x10')];if(_0x27c98e===_0x9427('0x14')){_0x12b94e[_0x9427('0x15')]=this[_0x9427('0x16')]['id'];}else{_0x12b94e[_[_0x9427('0x17')](_0x27c98e)+_0x9427('0x18')]=this[_0x9427('0x16')]['id'];}_0x12b94e[_[_0x9427('0x17')](_0x27c98e)+'InteractionId']=this[_0x9427('0x9')]['id'];if(this[_0x9427('0x9')][_0x9427('0x19')]){var _0x536030=_0x511208[0x2];if(!_['isEmpty'](_0x536030)){_0x12b94e[_0x9427('0x1a')]=utils['getMustacheRender'](_0x536030,this);return rpc[_0x27c98e+_0x9427('0x1b')][_0x9427('0x1c')](_0x12b94e)['then'](function(_0x5177e2){logger[_0x9427('0xa')](_0x9427('0x1d'),_0x7fa417,_0x12b94e[_0x9427('0x1a')]);})[_0x9427('0x1e')](function(_0x1e014f){logger[_0x9427('0x1f')](_0x9427('0x1d'),_0x7fa417,JSON[_0x9427('0x20')](_0x1e014f));})[_0x9427('0x21')](function(){logger[_0x9427('0xa')](_0x9427('0x22'),_0x7fa417);_0x25ba0b[_0x9427('0x23')]();});}else{logger[_0x9427('0xa')](_0x9427('0x24'),_0x7fa417);_0x25ba0b[_0x9427('0x23')]();}}else{var _0x3e8743=this;var _0x4c6c09=apiai(_0x511208[0x0],{'language':_0x511208[0x1]||'en'});return _0x4c6c09['textRequest'](this[_0x9427('0x25')][_0x9427('0x1a')],{'sessionId':md5(this[_0x9427('0x9')]['id'])})[_0x9427('0x26')](function(_0x437dda){_0x3e8743[_0x9427('0x1a')][_0x9427('0x27')]=_0x437dda;_0x12b94e[_0x9427('0x1a')]=_0x437dda[_0x9427('0x28')][_0x9427('0x29')][_0x9427('0x2a')];_0x12b94e[_0x9427('0x2b')]='dialogflow';_0x12b94e[_0x9427('0x2c')]=JSON['stringify'](_0x437dda);return rpc[_0x27c98e+_0x9427('0x1b')][_0x9427('0x1c')](_0x12b94e)['then'](function(_0x251cab){logger[_0x9427('0xa')](_0x9427('0x1d'),_0x7fa417,_0x12b94e[_0x9427('0x1a')]);if(_0x437dda[_0x9427('0x28')]['metadata'][_0x9427('0x2d')]){_0x25ba0b[_0x9427('0xb')]();}else{_0x25ba0b['stop']();}})['catch'](function(_0x2362f0){logger[_0x9427('0x1f')]('[%s][DIALOGFLOW]\x20%s',_0x7fa417,JSON[_0x9427('0x20')](_0x2362f0));_0x25ba0b[_0x9427('0xb')]();});})[_0x9427('0x1e')](function(_0x151293){logger[_0x9427('0x1f')]('[%s][DIALOGFLOW]\x20%s',_0x7fa417,_0x151293['message']);_0x25ba0b[_0x9427('0xb')]();});}}catch(_0x3b96bd){logger[_0x9427('0x1f')]('[%s][DIALOGFLOW]\x20%s',_0x7fa417,JSON[_0x9427('0x20')](_0x3b96bd));_0x25ba0b[_0x9427('0x23')]();}};};
\ No newline at end of file
index 0cd89f9..eb1120a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0xe49a=['md5','moment','bluebird','../../../../config/logger','routing','./utils','../../rpc/openchannelMessage','../../rpc/mailMessage','../../rpc/smsMessage','../../rpc/whatsappMessage','clone','Message','then','info','[%s][DIALOGFLOWV2]\x20%s','catch','error','stringify','consequence','isNil','interaction','UserId','Agent\x20is\x20managing\x20the\x20interaction.\x20Go\x20to\x20next\x20application.','next','contact','format','out','channel','sms','whatsapp','phone','ChatWebsiteId','account','upperFirst','created','isEmpty','getMustacheRender','create','body','[%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','message','length','dialogflowV2','queryResult','diagnosticInfo','fields','boolValue','DIALOGFLOWV2_ACTION','action','DIALOGFLOWV2_ALLREQUIREDPARAMSPRESENT','allRequiredParamsPresent','DIALOGFLOWV2_ENDCONVERSATION','end_conversation','DIALOGFLOWV2_INTENTNAME','intent','DIALOGFLOWV2_ISFALLBACKINTENT','isFallback','languageCode','DIALOGFLOWV2_QUERYTEXT','queryText','DIALOGFLOWV2_SCORE','intentDetectionConfidence','providerResponse','fulfillmentText','push','all','dialogflow'];(function(_0x5cd51d,_0x20d4fa){var _0x444608=function(_0x32a9dc){while(--_0x32a9dc){_0x5cd51d['push'](_0x5cd51d['shift']());}};_0x444608(++_0x20d4fa);}(_0xe49a,0xd7));var _0xae49=function(_0x5060da,_0x1830e8){_0x5060da=_0x5060da-0x0;var _0xd040f8=_0xe49a[_0x5060da];return _0xd040f8;};'use strict';var _=require('lodash');var dialogflow=require(_0xae49('0x0'));var md5=require(_0xae49('0x1'));var moment=require(_0xae49('0x2'));var Promise=require(_0xae49('0x3'));var logger=require(_0xae49('0x4'))(_0xae49('0x5'));var utils=require(_0xae49('0x6'));var rpc={'chatMessage':require('../../rpc/chatMessage'),'openchannelMessage':require(_0xae49('0x7')),'mailMessage':require(_0xae49('0x8')),'smsMessage':require(_0xae49('0x9')),'faxMessage':require('../../rpc/faxMessage'),'whatsappMessage':require(_0xae49('0xa'))};function createMessage(_0x49eecf,_0x63a8be,_0x1e33f6,_0x4480bf){return new Promise(function(_0x476f2a,_0x2bd270){var _0x598c32=_[_0xae49('0xb')](_0x1e33f6);_0x598c32['body']=_0x4480bf;return rpc[_0x63a8be+_0xae49('0xc')]['create'](_0x598c32)[_0xae49('0xd')](function(){logger[_0xae49('0xe')](_0xae49('0xf'),_0x49eecf,_0x598c32['body']);_0x476f2a();})[_0xae49('0x10')](function(_0x32c80f){logger[_0xae49('0x11')](_0xae49('0xf'),_0x49eecf,JSON[_0xae49('0x12')](_0x32c80f));_0x2bd270(_0x32c80f);});});}exports[_0xae49('0x13')]=function(_0x56a96e,_0x5447d2){return function(_0x430eff){try{if(!_[_0xae49('0x14')](this[_0xae49('0x15')][_0xae49('0x16')])){logger[_0xae49('0xe')](_0xae49('0xf'),_0x56a96e,_0xae49('0x17'));return _0x430eff[_0xae49('0x18')]();}var _0x296e27={'ContactId':this[_0xae49('0x19')]['id'],'sentAt':moment()[_0xae49('0x1a')]('YYYY-MM-DD\x20HH:mm:ss'),'direction':_0xae49('0x1b')};if(this[_0xae49('0x1c')]===_0xae49('0x1d')||this['channel']===_0xae49('0x1e')){_0x296e27[_0xae49('0x1f')]=this['interaction'][_0xae49('0x1f')];}var _0xb55a03=this['channel'];if(_0xb55a03==='chat'){_0x296e27[_0xae49('0x20')]=this['account']['id'];}else{_0x296e27[_['upperFirst'](_0xb55a03)+'AccountId']=this[_0xae49('0x21')]['id'];}_0x296e27[_[_0xae49('0x22')](_0xb55a03)+'InteractionId']=this[_0xae49('0x15')]['id'];if(this[_0xae49('0x15')][_0xae49('0x23')]){var _0xc4a11d=_0x5447d2[0x4];if(!_[_0xae49('0x24')](_0xc4a11d)){_0x296e27['body']=utils[_0xae49('0x25')](_0xc4a11d,this);return rpc[_0xb55a03+_0xae49('0xc')][_0xae49('0x26')](_0x296e27)['then'](function(_0x3df402){logger['info'](_0xae49('0xf'),_0x56a96e,_0x296e27[_0xae49('0x27')]);})[_0xae49('0x10')](function(_0x5a30cd){logger[_0xae49('0x11')](_0xae49('0xf'),_0x56a96e,JSON['stringify'](_0x5a30cd));})['finally'](function(){logger['info'](_0xae49('0x28'),_0x56a96e);_0x430eff[_0xae49('0x29')]();});}else{logger[_0xae49('0xe')](_0xae49('0x2a'),_0x56a96e);_0x430eff[_0xae49('0x29')]();}}else{var _0x4bb955=this;var _0x3ec237=_0x5447d2[0x2][_0xae49('0x2b')](/\\n/g,'\x0a');var _0x2e7dc7={'credentials':{'private_key':_0x3ec237,'client_email':_0x5447d2[0x1]}};var _0x457203=new dialogflow[(_0xae49('0x2c'))](_0x2e7dc7);var _0x20015f=_0x457203[_0xae49('0x2d')](_0x5447d2[0x0],md5(_0x4bb955[_0xae49('0x15')]['id']));var _0x235ef6={'session':_0x20015f,'queryInput':{'text':{'text':_0x4bb955[_0xae49('0x2e')][_0xae49('0x27')],'languageCode':_0x5447d2[0x3]||'en'}}};return _0x457203['detectIntent'](_0x235ef6)[_0xae49('0xd')](function(_0x587d00){if(_0x587d00&&_0x587d00[_0xae49('0x2f')]){_0x4bb955['body'][_0xae49('0x30')]=_0x587d00;var _0x31da17=_0x587d00[0x0];var _0x339e3e=_0x31da17[_0xae49('0x31')][_0xae49('0x32')]&&_0x31da17[_0xae49('0x31')][_0xae49('0x32')]['fields']?_0x31da17[_0xae49('0x31')]['diagnosticInfo'][_0xae49('0x33')]['end_conversation'][_0xae49('0x34')]:![];_0x4bb955['body'][_0xae49('0x35')]=_0x31da17[_0xae49('0x31')][_0xae49('0x36')];_0x4bb955[_0xae49('0x27')][_0xae49('0x37')]=_0x31da17[_0xae49('0x31')][_0xae49('0x38')];_0x4bb955[_0xae49('0x27')][_0xae49('0x39')]=_0x31da17[_0xae49('0x31')][_0xae49('0x32')]&&_0x31da17[_0xae49('0x31')]['diagnosticInfo'][_0xae49('0x33')]?_0x31da17[_0xae49('0x31')][_0xae49('0x32')][_0xae49('0x33')][_0xae49('0x3a')][_0xae49('0x34')]:![];_0x4bb955[_0xae49('0x27')][_0xae49('0x3b')]=_0x31da17[_0xae49('0x31')][_0xae49('0x3c')]['name'];_0x4bb955[_0xae49('0x27')]['DIALOGFLOWV2_INTENTDISPLAYNAME']=_0x31da17['queryResult'][_0xae49('0x3c')]['displayName'];_0x4bb955['body'][_0xae49('0x3d')]=_0x31da17[_0xae49('0x31')]['intent'][_0xae49('0x3e')];_0x4bb955[_0xae49('0x27')]['DIALOGFLOWV2_LANGUAGECODE']=_0x31da17[_0xae49('0x31')][_0xae49('0x3f')];_0x4bb955[_0xae49('0x27')][_0xae49('0x40')]=_0x31da17[_0xae49('0x31')][_0xae49('0x41')];_0x4bb955[_0xae49('0x27')][_0xae49('0x42')]=_0x31da17['queryResult'][_0xae49('0x43')];_0x296e27['providerName']=_0xae49('0x30');_0x296e27[_0xae49('0x44')]=JSON['stringify'](_0x587d00);var _0x564d37=[];for(var _0x18ae71=0x0;_0x18ae71<_0x587d00[_0xae49('0x2f')];_0x18ae71++){var _0x59f0b2=_0x587d00[_0x18ae71];if(_0x59f0b2&&_0x59f0b2[_0xae49('0x31')]&&_0x59f0b2['queryResult'][_0xae49('0x45')]){_0x564d37[_0xae49('0x46')](createMessage(_0x56a96e,_0xb55a03,_0x296e27,_0x59f0b2[_0xae49('0x31')]['fulfillmentText']));}}return Promise[_0xae49('0x47')](_0x564d37)['then'](function(){if(_0x339e3e){_0x430eff[_0xae49('0x18')]();}else{_0x430eff[_0xae49('0x29')]();}})[_0xae49('0x10')](function(_0x239fab){logger[_0xae49('0x11')](_0xae49('0xf'),_0x56a96e,JSON[_0xae49('0x12')](_0x239fab));_0x430eff[_0xae49('0x18')]();});}})['catch'](function(_0x283c15){logger[_0xae49('0x11')](_0xae49('0xf'),_0x56a96e,_0x283c15[_0xae49('0x2e')]);_0x430eff[_0xae49('0x18')]();});}}catch(_0x5f3cdc){logger[_0xae49('0x11')]('[%s][DIALOGFLOWV2]\x20%s',_0x56a96e,JSON[_0xae49('0x12')](_0x5f3cdc));_0x430eff[_0xae49('0x29')]();}};};
\ No newline at end of file
index 972f12a..d2be154 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0x5781=['priorityTrue','priorityFalse','info','[%s][GOTOIF]\x20condition\x20%s\x20is\x20%s\x20try\x20goto\x20priority\x20%s','next','findIndex','rules','[%s][GOTOIF]\x20eval\x20error:\x20%s','stringify','validate','lodash','html-to-text','routing','string','condition\x20is\x20a\x20string\x20and\x20it\x20is\x20required','number','priority\x20true\x20is\x20a\x20number','priority\x20false\x20is\x20a\x20number','consequence','getMustacheRender','replace','length','error','[%s][GOTOIF]\x20%s','map','message','join','stop','condition'];(function(_0x1a595a,_0x263824){var _0x33f008=function(_0x1e2f9c){while(--_0x1e2f9c){_0x1a595a['push'](_0x1a595a['shift']());}};_0x33f008(++_0x263824);}(_0x5781,0x182));var _0x1578=function(_0x39dcfc,_0xd8434c){_0x39dcfc=_0x39dcfc-0x0;var _0x3f0f48=_0x5781[_0x39dcfc];return _0x3f0f48;};'use strict';var schema=require(_0x1578('0x0'));var _=require(_0x1578('0x1'));var htmlToText=require(_0x1578('0x2'));var utils=require('./utils');var logger=require('../../../../config/logger')(_0x1578('0x3'));var gotoif=schema({'condition':{'type':_0x1578('0x4'),'required':!![],'message':_0x1578('0x5')},'priorityTrue':{'type':_0x1578('0x6'),'message':_0x1578('0x7')},'priorityFalse':{'type':_0x1578('0x6'),'message':_0x1578('0x8')}});exports[_0x1578('0x9')]=function(_0x48fe89,_0x438ee2){return function(_0x31b32a){try{var _0x3b6128={'condition':htmlToText['fromString'](utils[_0x1578('0xa')](_0x438ee2[0x0],this),{'wordwrap':![]})[_0x1578('0xb')](/<\/?[^>]+(>|$)/g,''),'priorityTrue':_0x438ee2[0x1],'priorityFalse':_0x438ee2[0x2]};var _0x47e883=gotoif[_0x1578('0x0')](_0x3b6128,{'typecast':!![]});if(_0x47e883[_0x1578('0xc')]){logger[_0x1578('0xd')](_0x1578('0xe'),_0x48fe89,_[_0x1578('0xf')](_0x47e883,_0x1578('0x10'))[_0x1578('0x11')](',\x20'));_0x31b32a[_0x1578('0x12')]();}else{try{var _0x45c667=eval('('+_0x3b6128[_0x1578('0x13')]+')');var _0x24400a=_0x45c667?_0x3b6128[_0x1578('0x14')]:_0x3b6128[_0x1578('0x15')];logger[_0x1578('0x16')](_0x1578('0x17'),_0x48fe89,_0x3b6128[_0x1578('0x13')],_0x45c667,_0x24400a||_0x1578('0x18'));if(_0x24400a){var _0x862df9=_[_0x1578('0x19')](_0x31b32a[_0x1578('0x1a')](),{'p':_0x24400a});if(_0x862df9>=0x0){logger[_0x1578('0x16')]('[%s][GOTOIF]\x20priority\x20%s\x20found\x20at\x20index:\x20%s',_0x48fe89,_0x24400a||_0x1578('0x18'),_0x862df9);_0x31b32a['next'](_0x862df9);}else{logger[_0x1578('0x16')]('[%s][GOTOIF]\x20priority\x20%s\x20not\x20found',_0x48fe89,_0x24400a||_0x1578('0x18'));_0x31b32a[_0x1578('0x12')]();}}else{_0x31b32a[_0x1578('0x18')]();}}catch(_0x5beb11){logger[_0x1578('0xd')](_0x1578('0x1b'),_0x48fe89,_0x5beb11['message']);_0x31b32a[_0x1578('0x12')]();}}}catch(_0x206c7f){logger[_0x1578('0xd')](_0x1578('0xe'),_0x48fe89,JSON[_0x1578('0x1c')](_0x206c7f));_0x31b32a[_0x1578('0x12')]();}};};
\ No newline at end of file
index 1d81cf4..5e1dc1e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0xedfd=['stringify','validate','lodash','../../../../config/logger','routing','priority\x20is\x20a\x20number\x20and\x20it\x20is\x20required','consequence','length','error','[%s][GOTOP]\x20%s','map','message','join','stop','info','priority','findIndex','rules','[%s][GOTOP]\x20priority\x20%s\x20found\x20at\x20index:\x20%s','next'];(function(_0x93bd49,_0x5044fa){var _0xa45f44=function(_0x398ecd){while(--_0x398ecd){_0x93bd49['push'](_0x93bd49['shift']());}};_0xa45f44(++_0x5044fa);}(_0xedfd,0xdd));var _0xdedf=function(_0x1e7b16,_0x4607a1){_0x1e7b16=_0x1e7b16-0x0;var _0x37fadc=_0xedfd[_0x1e7b16];return _0x37fadc;};'use strict';var schema=require(_0xdedf('0x0'));var _=require(_0xdedf('0x1'));var logger=require(_0xdedf('0x2'))(_0xdedf('0x3'));var gotop=schema({'priority':{'type':'number','required':!![],'message':_0xdedf('0x4')}});exports[_0xdedf('0x5')]=function(_0x17e10c,_0x301960){return function(_0x92af8f){try{var _0x241100={'priority':_0x301960[0x0]};var _0xcc0739=gotop[_0xdedf('0x0')](_0x241100,{'typecast':!![]});if(_0xcc0739[_0xdedf('0x6')]){logger[_0xdedf('0x7')](_0xdedf('0x8'),_0x17e10c,_[_0xdedf('0x9')](_0xcc0739,_0xdedf('0xa'))[_0xdedf('0xb')](',\x20'));_0x92af8f[_0xdedf('0xc')]();}else{logger[_0xdedf('0xd')]('[%s][GOTOP]\x20priority\x20%s',_0x17e10c,_0x241100[_0xdedf('0xe')]);if(_0x241100['priority']){var _0x42af4a=_[_0xdedf('0xf')](_0x92af8f[_0xdedf('0x10')](),{'p':_0x241100[_0xdedf('0xe')]});if(_0x42af4a>=0x0){logger['info'](_0xdedf('0x11'),_0x17e10c,_0x241100[_0xdedf('0xe')]||_0xdedf('0x12'),_0x42af4a);_0x92af8f[_0xdedf('0x12')](_0x42af4a);}else{logger[_0xdedf('0xd')]('[%s][GOTOP]\x20priority\x20%s\x20not\x20found',_0x17e10c,_0x241100[_0xdedf('0xe')]||_0xdedf('0x12'));_0x92af8f[_0xdedf('0xc')]();}}else{_0x92af8f['next']();}}}catch(_0x5be462){logger[_0xdedf('0x7')](_0xdedf('0x8'),_0x17e10c,JSON[_0xdedf('0x13')](_0x5be462));_0x92af8f[_0xdedf('0xc')]();}};};
\ No newline at end of file
index 4a6ecf7..49ff600 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0x83e4=['Message','create','then','info','[%s][MESSAGE]\x20%s','body','next','catch','error','stringify','stop','lodash','./utils','routing','../../rpc/chatMessage','../../rpc/openchannelMessage','../../rpc/mailMessage','../../rpc/smsMessage','../../rpc/whatsappMessage','consequence','upperFirst','channel','account','InteractionId','interaction'];(function(_0x10aba2,_0x39bd94){var _0x5aa8e8=function(_0x1effad){while(--_0x1effad){_0x10aba2['push'](_0x10aba2['shift']());}};_0x5aa8e8(++_0x39bd94);}(_0x83e4,0x137));var _0x483e=function(_0x86291c,_0x280824){_0x86291c=_0x86291c-0x0;var _0x220253=_0x83e4[_0x86291c];return _0x220253;};'use strict';var _=require(_0x483e('0x0'));var utils=require(_0x483e('0x1'));var logger=require('../../../../config/logger')(_0x483e('0x2'));var rpc={'chatMessage':require(_0x483e('0x3')),'openchannelMessage':require(_0x483e('0x4')),'mailMessage':require(_0x483e('0x5')),'smsMessage':require(_0x483e('0x6')),'faxMessage':require('../../rpc/faxMessage'),'whatsappMessage':require(_0x483e('0x7'))};exports[_0x483e('0x8')]=function(_0x5ad5a2,_0x197e5b){return function(_0x68f59b){try{var _0x1e0026={'body':utils['getMustacheRender'](_0x197e5b[0x0],this),'ContactId':this['contact']['id']};if(this['channel']==='chat'){_0x1e0026['ChatWebsiteId']=this['account']['id'];}else{_0x1e0026[_[_0x483e('0x9')](this[_0x483e('0xa')])+'AccountId']=this[_0x483e('0xb')]['id'];}_0x1e0026[_['upperFirst'](this[_0x483e('0xa')])+_0x483e('0xc')]=this[_0x483e('0xd')]['id'];if(rpc[this[_0x483e('0xa')]+_0x483e('0xe')]){return rpc[this[_0x483e('0xa')]+_0x483e('0xe')][_0x483e('0xf')](_0x1e0026)[_0x483e('0x10')](function(_0x1b0b22){logger[_0x483e('0x11')](_0x483e('0x12'),_0x5ad5a2,_0x1e0026[_0x483e('0x13')]);_0x68f59b[_0x483e('0x14')]();})[_0x483e('0x15')](function(_0x34e6ee){logger[_0x483e('0x16')](_0x483e('0x12'),_0x5ad5a2,JSON['stringify'](_0x34e6ee));_0x68f59b['stop']();});}}catch(_0x90e275){logger['error'](_0x483e('0x12'),_0x5ad5a2,JSON[_0x483e('0x17')](_0x90e275));_0x68f59b[_0x483e('0x18')]();}};};
\ No newline at end of file
index a7e5715..5ef6c3d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0xee06=['../../../../config/logger','consequence','info','getMustacheRender','error','[%s][NOOP]\x20%s','stringify','./utils'];(function(_0x57d0dc,_0x387f3e){var _0x177765=function(_0x1bbc9e){while(--_0x1bbc9e){_0x57d0dc['push'](_0x57d0dc['shift']());}};_0x177765(++_0x387f3e);}(_0xee06,0x10f));var _0x6ee0=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0xee06[_0x3dd15e];return _0x231fd0;};'use strict';var utils=require(_0x6ee0('0x0'));var logger=require(_0x6ee0('0x1'))('routing');exports[_0x6ee0('0x2')]=function(_0x5a6629,_0x518517){return function(_0x3c78fc){try{logger[_0x6ee0('0x3')]('[%s][NOOP]\x20%s',_0x5a6629,utils[_0x6ee0('0x4')](_0x518517[0x0],this));_0x3c78fc['next']();}catch(_0x5790e6){logger[_0x6ee0('0x5')](_0x6ee0('0x6'),_0x5a6629,JSON[_0x6ee0('0x7')](_0x5790e6));_0x3c78fc['stop']();}};};
\ No newline at end of file
index dd0f504..eff9ec6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0xd725=['update','toLowerCase','length','join','stop','Queues','createQueue','qtimeout','rules','end','[%s][QUEUE]\x20ROUTING\x20STOPPED','close','complete','[%s][QUEUE]\x20APPLICATION\x20END','next','strategy','rrmemory','beepall','[%s][QUEUE]\x20queue\x20not\x20found\x20%s','log','[%s][QUEUE]\x20%s','stack','validate','lodash','util','seq-queue','ioredis','../../../../config/environment','routing','./strategy','redis','defaults','queue_id','account','from','joinAt','emit','clone','queue','push','capitalize','InteractionId','format','%sQueuesWaitingInteractions','pick','%s:queue:%s','%s_queue_waiting_interaction:%s','save','remove','../../rpc/mailQueueReport','../../rpc/smsQueueReport','../../rpc/faxQueueReport','../../rpc/whatsappQueueReport','string','number','timeout\x20is\x20a\x20number','waiting','YYYY-MM-DD\x20HH:mm:ss','contact','list','upperFirst','interaction','channel','MessageId','message','AccountId','WebsiteId','[%s][START:QUEUE][NAME:%s]','name','QueueReport','create','catch','error','create\x20queue\x20report','accepted','info','[%s][STOP:QUEUE][NAME:%s]','update\x20queue\x20report','timeout','[%s][END:QUEUE][NAME:%s]','body'];(function(_0x473eab,_0x4f6572){var _0x2045db=function(_0x430757){while(--_0x430757){_0x473eab['push'](_0x473eab['shift']());}};_0x2045db(++_0x4f6572);}(_0xd725,0x109));var _0x5d72=function(_0x39fd4d,_0x297179){_0x39fd4d=_0x39fd4d-0x0;var _0x47e95d=_0xd725[_0x39fd4d];return _0x47e95d;};'use strict';var schema=require(_0x5d72('0x0'));var _=require(_0x5d72('0x1'));var util=require(_0x5d72('0x2'));var seqqueue=require(_0x5d72('0x3'));var moment=require('moment');var Redis=require(_0x5d72('0x4'));var config=require(_0x5d72('0x5'));var logger=require('../../../../config/logger')(_0x5d72('0x6'));var strategy=require(_0x5d72('0x7'));config[_0x5d72('0x8')]=_[_0x5d72('0x9')](config[_0x5d72('0x8')],{'host':'localhost','port':0x18eb});var io=require('socket.io-emitter')(new Redis(config[_0x5d72('0x8')]));var attributes=['id',_0x5d72('0xa'),_0x5d72('0xb'),'queue',_0x5d72('0xc'),_0x5d72('0xd')];function emit(_0x29b598,_0x1fccbd,_0x37595b){io['to'](_0x29b598)[_0x5d72('0xe')](_0x1fccbd,_0x37595b);}function emitChannelQueueInteraction(_0x2628d4,_0x57a6eb,_0x24d8d3,_0x3d309e,_0x95db93,_0xf2956d,_0x1c7511,_0x20c24a){var _0x3873ad=_[_0x5d72('0xf')](_0x24d8d3);_0x3873ad['queue_id']=_0x20c24a;_0x3873ad[_0x5d72('0x10')]=_0x57a6eb;_0x3873ad[_0x5d72('0xb')]=_0x3d309e;_0x3873ad['id']=_0x95db93;if(_0xf2956d){attributes[_0x5d72('0x11')](_[_0x5d72('0x12')](_0x2628d4)+_0x5d72('0x13'));_0x1c7511[util[_0x5d72('0x14')](_0x5d72('0x15'),_0x2628d4)][_0x95db93]=_[_0x5d72('0x16')](_0x3873ad,attributes);}else{delete _0x1c7511[util[_0x5d72('0x14')](_0x5d72('0x15'),_0x2628d4)][_0x95db93];}emit(util[_0x5d72('0x14')](_0x5d72('0x17'),_0x2628d4,_0x57a6eb),util[_0x5d72('0x14')](_0x5d72('0x18'),_0x2628d4,_0xf2956d?_0x5d72('0x19'):_0x5d72('0x1a')),_[_0x5d72('0x16')](_0x3873ad,attributes));}var rpc={'openchannelQueueReport':require('../../rpc/openchannelQueueReport'),'mailQueueReport':require(_0x5d72('0x1b')),'chatQueueReport':require('../../rpc/chatQueueReport'),'smsQueueReport':require(_0x5d72('0x1c')),'faxQueueReport':require(_0x5d72('0x1d')),'whatsappQueueReport':require(_0x5d72('0x1e'))};var queue=schema({'name':{'type':_0x5d72('0x1f'),'required':!![],'message':'name\x20is\x20a\x20string\x20and\x20it\x20is\x20required'},'timeout':{'type':_0x5d72('0x20'),'message':_0x5d72('0x21')}});function startRouting(_0x765a00,_0x2f3b7a,_0x2cb7e1,_0x2945ba){if(_0x765a00&&_0x2f3b7a&&_0x2cb7e1){_0x2f3b7a[_0x5d72('0x22')]+=0x1;var _0x1de667={'uniqueid':_0x765a00,'from':_0x2cb7e1['body']?_0x2cb7e1['body'][_0x5d72('0xc')]:'','joinAt':moment()['format'](_0x5d72('0x23')),'ContactId':_0x2cb7e1[_0x5d72('0x24')]?_0x2cb7e1[_0x5d72('0x24')]['id']:null,'ListId':_0x2cb7e1[_0x5d72('0x25')]?_0x2cb7e1[_0x5d72('0x25')]['id']:null};_0x1de667[_[_0x5d72('0x26')](_0x2cb7e1['channel'])+'QueueId']=_0x2f3b7a['id']||null;_0x1de667[_[_0x5d72('0x26')](_0x2cb7e1['channel'])+_0x5d72('0x13')]=_0x2cb7e1['interaction']?_0x2cb7e1[_0x5d72('0x27')]['id']:null;_0x1de667[_[_0x5d72('0x26')](_0x2cb7e1[_0x5d72('0x28')])+_0x5d72('0x29')]=_0x2cb7e1['message']?_0x2cb7e1[_0x5d72('0x2a')]['id']:null;_0x1de667[_[_0x5d72('0x26')](_0x2cb7e1[_0x5d72('0x28')])+(_0x2cb7e1['channel']!=='chat'?_0x5d72('0x2b'):_0x5d72('0x2c'))]=_0x2cb7e1['account']?_0x2cb7e1['account']['id']:null;logger['info'](util['format'](_0x5d72('0x2d'),_0x765a00,_0x2f3b7a[_0x5d72('0x2e')]));emitChannelQueueInteraction(_0x2cb7e1['channel'],_0x2f3b7a[_0x5d72('0x2e')],_0x1de667,_0x2cb7e1[_0x5d72('0xb')][_0x5d72('0x2e')],_0x2cb7e1['message']['id'],!![],_0x2945ba,_0x2f3b7a['id']);if(rpc[_0x2cb7e1[_0x5d72('0x28')]+_0x5d72('0x2f')]){return rpc[_0x2cb7e1[_0x5d72('0x28')]+_0x5d72('0x2f')][_0x5d72('0x30')](_0x1de667)[_0x5d72('0x31')](function(_0x1bd271){logger[_0x5d72('0x32')](_0x5d72('0x33'));});}}}function stopRouting(_0x5b8b38,_0x293e29,_0x40283d,_0x1588f){if(_0x5b8b38&&_0x293e29){_0x293e29['waiting']-=0x1;var _0x97c2ae={'leaveAt':moment()[_0x5d72('0x14')]('YYYY-MM-DD\x20HH:mm:ss'),'acceptAt':moment()[_0x5d72('0x14')](_0x5d72('0x23')),'reason':_0x5d72('0x34')};logger[_0x5d72('0x35')](util['format'](_0x5d72('0x36'),_0x5b8b38,_0x293e29[_0x5d72('0x2e')]));emitChannelQueueInteraction(_0x40283d[_0x5d72('0x28')],_0x293e29[_0x5d72('0x2e')],_0x40283d['body'],_0x40283d[_0x5d72('0xb')][_0x5d72('0x2e')],_0x40283d['message']['id'],![],_0x1588f,_0x293e29['id']);if(rpc[_0x40283d[_0x5d72('0x28')]+'QueueReport']){return rpc[_0x40283d[_0x5d72('0x28')]+'QueueReport']['update'](_0x5b8b38,_0x97c2ae)[_0x5d72('0x31')](function(_0x354f81){logger['error'](_0x5d72('0x37'));});}}}function endRouting(_0x3f0cc8,_0x4d551f,_0x464a1f,_0x42b895){if(_0x3f0cc8&&_0x4d551f){_0x4d551f[_0x5d72('0x22')]-=0x1;var _0x366b9d={'leaveAt':moment()[_0x5d72('0x14')](_0x5d72('0x23')),'exitAt':moment()['format']('YYYY-MM-DD\x20HH:mm:ss'),'reason':_0x5d72('0x38')};logger[_0x5d72('0x35')](util['format'](_0x5d72('0x39'),_0x3f0cc8,_0x4d551f[_0x5d72('0x2e')]));emitChannelQueueInteraction(_0x464a1f[_0x5d72('0x28')],_0x4d551f[_0x5d72('0x2e')],_0x464a1f[_0x5d72('0x3a')],_0x464a1f[_0x5d72('0xb')]['name'],_0x464a1f[_0x5d72('0x2a')]['id'],![],_0x42b895);if(rpc[_0x464a1f['channel']+_0x5d72('0x2f')]){return rpc[_0x464a1f['channel']+_0x5d72('0x2f')][_0x5d72('0x3b')](_0x3f0cc8,_0x366b9d)[_0x5d72('0x31')](function(_0x4dfe8f){logger[_0x5d72('0x32')](_0x5d72('0x37'));});}}}function handleFindQueue(_0x3461c5){return function(_0x2b31bd){return _0x2b31bd[_0x5d72('0x2e')][_0x5d72('0x3c')]()===_0x3461c5[_0x5d72('0x3c')]();};}exports['consequence']=function(_0x2837d6,_0x21dc55,_0x1847cc,_0x4ebc66){return function(_0x1cc2c2){try{var _0x428f73={'name':_0x21dc55[0x0],'timeout':_0x21dc55[0x1]};var _0x5567da=queue[_0x5d72('0x0')](_0x428f73,{'typecast':!![]});if(_0x5567da[_0x5d72('0x3d')]){logger['error']('[%s][QUEUE]\x20%s',_0x2837d6,_['map'](_0x5567da,_0x5d72('0x2a'))[_0x5d72('0x3e')](',\x20'));_0x1cc2c2[_0x5d72('0x3f')]();}else{var _0x22a2a0=_['find'](_0x1847cc[_0x4ebc66[_0x5d72('0x28')]+_0x5d72('0x40')],handleFindQueue(_0x428f73[_0x5d72('0x2e')]));if(_0x22a2a0){startRouting(_0x2837d6,_0x22a2a0,_0x4ebc66,_0x1847cc);var _0x3aa873=(_0x22a2a0[_0x5d72('0x38')]||0xa)*0x3e8;var _0x401768=(_0x428f73[_0x5d72('0x38')]||0x14)*0x3e8;var _0x184767;if(_0x3aa873>_0x401768){_0x401768=_0x3aa873;}var _0x5a82cf=seqqueue[_0x5d72('0x41')](_0x3aa873);_0x5a82cf['id']=_0x2837d6;_0x5a82cf['atimeout']=_0x3aa873;_0x5a82cf[_0x5d72('0x42')]=_0x401768;_0x5a82cf[_0x5d72('0x28')]=_0x4ebc66[_0x5d72('0x28')];_0x1847cc[_0x5d72('0x43')][_0x2837d6]['on'](_0x5d72('0x44'),function(){logger['info'](_0x5d72('0x45'),_0x2837d6);stopRouting(_0x2837d6,_0x22a2a0,_0x4ebc66,_0x1847cc);clearTimeout(_0x184767);_0x184767=undefined;_0x5a82cf[_0x5d72('0x46')](!![]);if(_0x1847cc[_0x5d72('0x43')][_0x2837d6]){delete _0x1847cc[_0x5d72('0x43')][_0x2837d6];}_0x1cc2c2[_0x5d72('0x3f')]();});_0x1847cc[_0x5d72('0x43')][_0x2837d6]['on'](_0x5d72('0x47'),function(){if(_0x1847cc[_0x5d72('0x43')][_0x2837d6]){delete _0x1847cc[_0x5d72('0x43')][_0x2837d6];}});_0x184767=setTimeout(function(){logger['info'](_0x5d72('0x48'),_0x2837d6);endRouting(_0x2837d6,_0x22a2a0,_0x4ebc66,_0x1847cc);clearTimeout(_0x184767);_0x5a82cf[_0x5d72('0x46')](!![]);_0x1cc2c2[_0x5d72('0x49')]();},_0x401768);switch(_0x22a2a0[_0x5d72('0x4a')]){case'rrmemory':strategy[_0x5d72('0x4b')](_0x5a82cf,_0x22a2a0,_0x1847cc,_0x4ebc66);break;default:strategy[_0x5d72('0x4c')](_0x5a82cf,_0x22a2a0,_0x1847cc,_0x4ebc66);}}else{logger[_0x5d72('0x32')](_0x5d72('0x4d'),_0x2837d6,_0x428f73[_0x5d72('0x2e')]);_0x1cc2c2[_0x5d72('0x3f')]();}}}catch(_0x30d55d){console[_0x5d72('0x4e')](_0x30d55d);logger['error'](_0x5d72('0x4f'),_0x2837d6,_0x30d55d[_0x5d72('0x50')]);_0x1cc2c2[_0x5d72('0x3f')]();}};};
\ No newline at end of file
index f4dc994..e5ccdfb 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0xd2ea=['push','handleRun','handleTimeout','bind','timeout','drained','handleDrained','prototype','[%s][AGENT]\x20try\x20with\x20%s','isNil','agents','debug','[%s][AGENT]\x20agent\x20skipped,\x20unknown\x20id\x20%s','forcedOwnership','busy','busyQueue','saveWaitingNotification','channel','showNotification','writeLog',':FORCED','[%s][AGENT]\x20agent\x20%s\x20is\x20not\x20available','[%s][AGENT]\x20timeout\x20with\x20%s','removeWaitingNotification','STOP','TIMEOUT','exports','lodash','uuid','./util','../../../../../config/logger','routing','notificationId','squeue','agent','realtime'];(function(_0x255a0b,_0x5b95d7){var _0x37b073=function(_0xcb4abe){while(--_0xcb4abe){_0x255a0b['push'](_0x255a0b['shift']());}};_0x37b073(++_0x5b95d7);}(_0xd2ea,0x15f));var _0xad2e=function(_0x48a4b8,_0x1e6297){_0x48a4b8=_0x48a4b8-0x0;var _0x95fc78=_0xd2ea[_0x48a4b8];return _0x95fc78;};'use strict';var _=require(_0xad2e('0x0'));var uuid=require(_0xad2e('0x1'));var util=require(_0xad2e('0x2'));var logger=require(_0xad2e('0x3'))(_0xad2e('0x4'));var Agent=function(_0x5c9fa9,_0x3a9d11,_0x46a911,_0xcba7cb){this[_0xad2e('0x5')]=uuid['v4']();this[_0xad2e('0x6')]=_0x5c9fa9;this[_0xad2e('0x7')]=_0x3a9d11;this[_0xad2e('0x8')]=_0x46a911;this['routing']=_0xcba7cb;this[_0xad2e('0x6')][_0xad2e('0x9')](this[_0xad2e('0xa')]['bind'](this),this[_0xad2e('0xb')][_0xad2e('0xc')](this));this['squeue']['on'](_0xad2e('0xd'),this['handleTimeout'][_0xad2e('0xc')](this));this[_0xad2e('0x6')]['on'](_0xad2e('0xe'),this[_0xad2e('0xf')]['bind'](this));};Agent[_0xad2e('0x10')]['push']=function(){this[_0xad2e('0x6')][_0xad2e('0x9')](this[_0xad2e('0xa')][_0xad2e('0xc')](this),this['handleTimeout'][_0xad2e('0xc')](this));};Agent['prototype'][_0xad2e('0xf')]=function(){this['handleTimeout'](!![]);};Agent['prototype']['handleRun']=function(){logger['debug'](_0xad2e('0x11'),this[_0xad2e('0x6')]['id'],this[_0xad2e('0x7')]['id']);if(_[_0xad2e('0x12')](this[_0xad2e('0x8')][_0xad2e('0x13')][this[_0xad2e('0x7')]['id']])){logger[_0xad2e('0x14')](_0xad2e('0x15'),this[_0xad2e('0x6')]['id'],this[_0xad2e('0x7')]['id']);setTimeout(this[_0xad2e('0x9')][_0xad2e('0xc')](this),0x3e8);}else{if(this[_0xad2e('0x4')][_0xad2e('0x16')]||util['isAgentAvailable'](this[_0xad2e('0x6')]['id'],this[_0xad2e('0x8')]['agents'][this['agent']['id']],this['squeue']['channel'],![])){this[_0xad2e('0x8')][_0xad2e('0x13')][this[_0xad2e('0x7')]['id']][_0xad2e('0x17')]=!![];this[_0xad2e('0x8')][_0xad2e('0x13')][this[_0xad2e('0x7')]['id']][_0xad2e('0x18')]=undefined;util[_0xad2e('0x19')](this[_0xad2e('0x8')],this[_0xad2e('0x4')],this[_0xad2e('0x7')],this[_0xad2e('0x6')][_0xad2e('0x1a')]);util[_0xad2e('0x1b')](this[_0xad2e('0x5')],this['squeue']['id'],this[_0xad2e('0x8')][_0xad2e('0x13')][this[_0xad2e('0x7')]['id']],null,this[_0xad2e('0x4')]);util[_0xad2e('0x1c')](this[_0xad2e('0x6')]['id'],this[_0xad2e('0x8')][_0xad2e('0x13')][this[_0xad2e('0x7')]['id']],'RINGING'+(this[_0xad2e('0x4')]['forcedOwnership']?_0xad2e('0x1d'):''));}else{logger[_0xad2e('0x14')](_0xad2e('0x1e'),this[_0xad2e('0x6')]['id'],this[_0xad2e('0x7')]['id']);setTimeout(this[_0xad2e('0x9')][_0xad2e('0xc')](this),0x3e8);}}};Agent[_0xad2e('0x10')][_0xad2e('0xb')]=function(_0x31857f){if(_['isNil'](this[_0xad2e('0x8')][_0xad2e('0x13')][this[_0xad2e('0x7')]['id']])){return logger[_0xad2e('0x14')](_0xad2e('0x15'),this[_0xad2e('0x6')]['id'],this[_0xad2e('0x7')]['id']);}else{logger[_0xad2e('0x14')](_0xad2e('0x1f'),this[_0xad2e('0x6')]['id'],this[_0xad2e('0x7')]['id']);util['hideNotification'](this[_0xad2e('0x5')],this['squeue']['id'],this[_0xad2e('0x8')][_0xad2e('0x13')][this[_0xad2e('0x7')]['id']],null,this[_0xad2e('0x4')]);this[_0xad2e('0x8')]['agents'][this[_0xad2e('0x7')]['id']][_0xad2e('0x17')]=![];this['realtime'][_0xad2e('0x13')][this[_0xad2e('0x7')]['id']]['busyQueue']=undefined;util[_0xad2e('0x20')](this[_0xad2e('0x8')],this[_0xad2e('0x4')],this[_0xad2e('0x7')],this[_0xad2e('0x6')][_0xad2e('0x1a')]);util[_0xad2e('0x1c')](this['squeue']['id'],this[_0xad2e('0x8')][_0xad2e('0x13')][this['agent']['id']],_0x31857f?_0xad2e('0x21'):_0xad2e('0x22'));}if(!_0x31857f){setTimeout(this[_0xad2e('0x9')][_0xad2e('0xc')](this),0x3e8);}};function agent(_0x48c77b,_0xf4ae70,_0x4fe4f6,_0x5d6ac1){return new Agent(_0x48c77b,_0xf4ae70,_0x4fe4f6,_0x5d6ac1);}module[_0xad2e('0x23')]=agent;
\ No newline at end of file
index 6d2438c..3c9fa14 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0x450b=['handleDrained','prototype','isNil','Agents','length','agents','[%s][QUEUE]\x20agent\x20skipped,\x20unknown\x20id\x20%s','channel','RINGING','busy','busyQueue','saveWaitingNotification','showNotification','debug','[%s][QUEUE]\x20ALL\x20AGENTS\x20ARE\x20BUSY','[%s][QUEUE]\x20EMPTY','notificationId','writeLog','STOP','TIMEOUT','removeWaitingNotification','exports','lodash','../../../../../config/logger','routing','queue','realtime','squeue','push','handleRun','bind','handleTimeout','timeout','drained'];(function(_0x3899a2,_0x208d50){var _0x988a4c=function(_0xc62244){while(--_0xc62244){_0x3899a2['push'](_0x3899a2['shift']());}};_0x988a4c(++_0x208d50);}(_0x450b,0x1ae));var _0xb450=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x450b[_0x3dd15e];return _0x231fd0;};'use strict';var _=require(_0xb450('0x0'));var uuid=require('uuid');var util=require('./util');var logger=require(_0xb450('0x1'))(_0xb450('0x2'));var Beepall=function(_0x444274,_0x234472,_0x5aba04,_0x3dafb2){this['notificationId']=uuid['v4']();this['squeue']=_0x444274;this[_0xb450('0x3')]=_0x234472;this[_0xb450('0x4')]=_0x5aba04;this[_0xb450('0x2')]=_0x3dafb2;this[_0xb450('0x5')][_0xb450('0x6')](this[_0xb450('0x7')][_0xb450('0x8')](this),this[_0xb450('0x9')][_0xb450('0x8')](this));this[_0xb450('0x5')]['on'](_0xb450('0xa'),this[_0xb450('0x9')][_0xb450('0x8')](this));this[_0xb450('0x5')]['on'](_0xb450('0xb'),this[_0xb450('0xc')][_0xb450('0x8')](this));};Beepall[_0xb450('0xd')]['push']=function(){this[_0xb450('0x5')]['push'](this[_0xb450('0x7')]['bind'](this),this[_0xb450('0x9')][_0xb450('0x8')](this));};Beepall['prototype'][_0xb450('0xc')]=function(){this[_0xb450('0x9')](!![]);};Beepall[_0xb450('0xd')][_0xb450('0x7')]=function(){var _0x25b753=!![];if(!_[_0xb450('0xe')](this[_0xb450('0x3')])&&!_[_0xb450('0xe')](this[_0xb450('0x3')][_0xb450('0xf')])&&this['queue'][_0xb450('0xf')][_0xb450('0x10')]>0x0){for(var _0x24dc86=0x0,_0xa41377;_0x24dc86<this['queue'][_0xb450('0xf')]['length'];_0x24dc86+=0x1){_0xa41377=this['queue'][_0xb450('0xf')][_0x24dc86]['id'];if(_[_0xb450('0xe')](this[_0xb450('0x4')][_0xb450('0x11')][_0xa41377])){logger['debug'](_0xb450('0x12'),this[_0xb450('0x5')]['id'],_0xa41377);}else{if(util['isAgentAvailable'](this[_0xb450('0x5')]['id'],this[_0xb450('0x4')][_0xb450('0x11')][_0xa41377],this[_0xb450('0x5')][_0xb450('0x13')],!![])){_0x25b753=![];util['writeLog'](this[_0xb450('0x5')]['id'],this[_0xb450('0x4')][_0xb450('0x11')][_0xa41377],_0xb450('0x14'));this[_0xb450('0x4')][_0xb450('0x11')][_0xa41377][_0xb450('0x15')]=!![];this['realtime'][_0xb450('0x11')][_0xa41377][_0xb450('0x16')]=this[_0xb450('0x3')]['name'];util[_0xb450('0x17')](this[_0xb450('0x4')],this[_0xb450('0x2')],this[_0xb450('0x3')]['Agents'][_0x24dc86],this[_0xb450('0x5')]['channel']);util[_0xb450('0x18')](this['notificationId'],this[_0xb450('0x5')]['id'],this[_0xb450('0x4')]['agents'][_0xa41377],this[_0xb450('0x3')],this['routing']);}}}if(_0x25b753){logger[_0xb450('0x19')](_0xb450('0x1a'),this[_0xb450('0x5')]['id']);setTimeout(this['push'][_0xb450('0x8')](this),0x3e8);}}else{logger['debug'](_0xb450('0x1b'),this[_0xb450('0x5')]['id']);setTimeout(this[_0xb450('0x6')][_0xb450('0x8')](this),0x3e8);}};Beepall['prototype'][_0xb450('0x9')]=function(_0x306343){if(!_[_0xb450('0xe')](this[_0xb450('0x3')])&&!_[_0xb450('0xe')](this[_0xb450('0x3')]['Agents'])){for(var _0x4e4014=0x0,_0x526673;_0x4e4014<this[_0xb450('0x3')][_0xb450('0xf')][_0xb450('0x10')];_0x4e4014+=0x1){_0x526673=this['queue'][_0xb450('0xf')][_0x4e4014]['id'];if(_['isNil'](this['realtime'][_0xb450('0x11')][_0x526673])){logger[_0xb450('0x19')](_0xb450('0x12'),this[_0xb450('0x5')]['id'],_0x526673);}else{util['hideNotification'](this[_0xb450('0x1c')],this['squeue']['id'],this[_0xb450('0x4')][_0xb450('0x11')][_0x526673],this[_0xb450('0x3')],this[_0xb450('0x2')]);util[_0xb450('0x1d')](this[_0xb450('0x5')]['id'],this[_0xb450('0x4')][_0xb450('0x11')][_0x526673],_0x306343?_0xb450('0x1e'):_0xb450('0x1f'));this['realtime'][_0xb450('0x11')][_0x526673][_0xb450('0x15')]=![];this[_0xb450('0x4')][_0xb450('0x11')][_0x526673][_0xb450('0x16')]=undefined;util[_0xb450('0x20')](this[_0xb450('0x4')],this[_0xb450('0x2')],this[_0xb450('0x4')]['agents'][_0x526673],this[_0xb450('0x5')][_0xb450('0x13')]);}}}if(!_0x306343){setTimeout(this[_0xb450('0x6')][_0xb450('0x8')](this),0x3e8);}};function beepall(_0x6a2cee,_0x20a109,_0x365c32,_0x54983c){return new Beepall(_0x6a2cee,_0x20a109,_0x365c32,_0x54983c);}module[_0xb450('0x21')]=beepall;
\ No newline at end of file
index 834f0ea..e86fc2a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0x04d9=['exports','./rrmemory','./beepall','./agent'];(function(_0x33d0cf,_0xa506d){var _0x24c6ba=function(_0x376e9e){while(--_0x376e9e){_0x33d0cf['push'](_0x33d0cf['shift']());}};_0x24c6ba(++_0xa506d);}(_0x04d9,0xa0));var _0x904d=function(_0x109187,_0x119a37){_0x109187=_0x109187-0x0;var _0x3d2a4e=_0x04d9[_0x109187];return _0x3d2a4e;};'use strict';module[_0x904d('0x0')]={'rrmemory':require(_0x904d('0x1')),'beepall':require(_0x904d('0x2')),'agent':require(_0x904d('0x3'))};
\ No newline at end of file
index 41db2ef..dbaa95f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0x35ea=['removeWaitingNotification','exports','lodash','uuid','./util','../../../../../config/logger','queue','realtime','routing','intervals','squeue','bind','handleTimeout','module','timeout','drained','handleDrained','prototype','push','handleRun','isAgentAvailable','agentId','debug','[%s][QUEUE]\x20available\x20again\x20%s','[%s][QUEUE]\x20try\x20with\x20%s','agents','[%s][QUEUE]\x20agent\x20skipped,\x20unknown\x20id\x20%s','done','channel','busy','busyQueue','name','saveWaitingNotification','showNotification','notificationId','handleCheckReject','[%s][QUEUE]\x20agent\x20skipped,\x20not\x20available\x20id\x20%s','[%s][QUEUE]\x20timeout\x20with\x20%s','isNil','hideNotification','writeLog','TIMEOUT'];(function(_0x4dca20,_0x54277b){var _0x43124a=function(_0x354808){while(--_0x354808){_0x4dca20['push'](_0x4dca20['shift']());}};_0x43124a(++_0x54277b);}(_0x35ea,0x128));var _0xa35e=function(_0x4dc0bc,_0x490bf0){_0x4dc0bc=_0x4dc0bc-0x0;var _0x470317=_0x35ea[_0x4dc0bc];return _0x470317;};'use strict';var rr=require('rr');var _=require(_0xa35e('0x0'));var uuid=require(_0xa35e('0x1'));var util=require(_0xa35e('0x2'));var logger=require(_0xa35e('0x3'))('routing');var RRMemory=function(_0x4bffbd,_0x1ace62,_0x28a465,_0x311607){this['notificationId']=uuid['v4']();this['squeue']=_0x4bffbd;this[_0xa35e('0x4')]=_0x1ace62;this[_0xa35e('0x5')]=_0x28a465;this[_0xa35e('0x6')]=_0x311607;this[_0xa35e('0x7')]={};this[_0xa35e('0x8')]['push'](this['handleRun'][_0xa35e('0x9')](this),this[_0xa35e('0xa')][_0xa35e('0x9')](this),this[_0xa35e('0xb')]);this[_0xa35e('0x8')]['on'](_0xa35e('0xc'),this[_0xa35e('0xa')][_0xa35e('0x9')](this));this['squeue']['on'](_0xa35e('0xd'),this[_0xa35e('0xe')][_0xa35e('0x9')](this));};RRMemory[_0xa35e('0xf')][_0xa35e('0x10')]=function(){this['squeue'][_0xa35e('0x10')](this[_0xa35e('0x11')]['bind'](this),this[_0xa35e('0xa')][_0xa35e('0x9')](this));};RRMemory['prototype'][_0xa35e('0xe')]=function(){this[_0xa35e('0xa')](!![]);};RRMemory['prototype']['handleCheckReject']=function(_0x474a96){if(util[_0xa35e('0x12')](this[_0xa35e('0x8')]['id'],this[_0xa35e('0x5')]['agents'][this[_0xa35e('0x13')]],this['squeue']['channel'],!![])){logger[_0xa35e('0x14')](_0xa35e('0x15'),this[_0xa35e('0x8')]['id'],this[_0xa35e('0x13')]);clearInterval(this[_0xa35e('0x7')][this['agentId']]);_0x474a96['done']();setTimeout(this[_0xa35e('0x10')][_0xa35e('0x9')](this),0x3e8);}};RRMemory['prototype'][_0xa35e('0x11')]=function(_0x2f26d6){this[_0xa35e('0x13')]=rr(this[_0xa35e('0x4')]['mapAgentsId']);logger[_0xa35e('0x14')](_0xa35e('0x16'),this[_0xa35e('0x8')]['id'],this[_0xa35e('0x13')]);if(_['isNil'](this[_0xa35e('0x5')][_0xa35e('0x17')][this[_0xa35e('0x13')]])){logger[_0xa35e('0x14')](_0xa35e('0x18'),this[_0xa35e('0x8')]['id'],this['agentId']);_0x2f26d6[_0xa35e('0x19')]();setTimeout(this['push'][_0xa35e('0x9')](this),0x3e8);}else{if(util[_0xa35e('0x12')](this[_0xa35e('0x8')]['id'],this['realtime'][_0xa35e('0x17')][this[_0xa35e('0x13')]],this['squeue'][_0xa35e('0x1a')],!![])){this[_0xa35e('0x5')][_0xa35e('0x17')][this['agentId']][_0xa35e('0x1b')]=!![];this[_0xa35e('0x5')][_0xa35e('0x17')][this[_0xa35e('0x13')]][_0xa35e('0x1c')]=this['queue'][_0xa35e('0x1d')];util[_0xa35e('0x1e')](this['realtime'],this['routing'],this['realtime'][_0xa35e('0x17')][this['agentId']],this[_0xa35e('0x8')]['channel']);util[_0xa35e('0x1f')](this[_0xa35e('0x20')],this[_0xa35e('0x8')]['id'],this['realtime'][_0xa35e('0x17')][this['agentId']],this['queue'],this[_0xa35e('0x6')]);util['writeLog'](this[_0xa35e('0x8')]['id'],this['realtime']['agents'][this['agentId']],'RINGING');this[_0xa35e('0x7')][this[_0xa35e('0x13')]]=setInterval(this[_0xa35e('0x21')]['bind'](this,_0x2f26d6),0x3e8);}else{logger['debug'](_0xa35e('0x22'),this[_0xa35e('0x8')]['id'],this[_0xa35e('0x13')]);_0x2f26d6[_0xa35e('0x19')]();setTimeout(this[_0xa35e('0x10')][_0xa35e('0x9')](this),0x3e8);}}};RRMemory['prototype'][_0xa35e('0xa')]=function(_0x284450){logger[_0xa35e('0x14')](_0xa35e('0x23'),this[_0xa35e('0x8')]['id'],this[_0xa35e('0x13')]);if(_[_0xa35e('0x24')](this['realtime'][_0xa35e('0x17')][this[_0xa35e('0x13')]])){logger[_0xa35e('0x14')](_0xa35e('0x18'),this['squeue']['id'],this['agentId']);}else{clearInterval(this[_0xa35e('0x7')][this[_0xa35e('0x13')]]);util[_0xa35e('0x25')](this[_0xa35e('0x20')],this[_0xa35e('0x8')]['id'],this[_0xa35e('0x5')]['agents'][this[_0xa35e('0x13')]],this['queue'],this[_0xa35e('0x6')]);util[_0xa35e('0x26')](this[_0xa35e('0x8')]['id'],this[_0xa35e('0x5')][_0xa35e('0x17')][this['agentId']],_0xa35e('0x27'));this[_0xa35e('0x5')][_0xa35e('0x17')][this[_0xa35e('0x13')]]['busy']=![];this[_0xa35e('0x5')]['agents'][this[_0xa35e('0x13')]]['busyQueue']=undefined;util[_0xa35e('0x28')](this[_0xa35e('0x5')],this['routing'],this[_0xa35e('0x5')][_0xa35e('0x17')][this[_0xa35e('0x13')]],this[_0xa35e('0x8')][_0xa35e('0x1a')]);}if(!_0x284450){setTimeout(this[_0xa35e('0x10')][_0xa35e('0x9')](this),0x3e8);}};function rrmemory(_0x4662d7,_0x487f87,_0x4dde48,_0x101522){return new RRMemory(_0x4662d7,_0x487f87,_0x4dde48,_0x101522);}module[_0xa35e('0x29')]=rrmemory;
\ No newline at end of file
index 4cfbbf8..b5ab03e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0x861e=['online','OFFLINE','Pause','PAUSE','hasOwnProperty','Capacity','CurrentCapacity','toUpperCase','\x20MAXCAPACITY','showNotification','hideNotification','checkWaitingNotifications','interaction','some','channel','capitalize','InteractionId','agents','WaitingInteractions','saveWaitingNotification','removeWaitingNotification','writeLog','lodash','util','../utils','ioredis','routing','redis','localhost','socket.io-emitter','format','user:%s','emit','\x20interaction','name','account','notificationSound','body','queue','msg','notificationTemplate','error','[%s][QUEUE]\x20%s','message','save','remove','[%s][QUEUE][AGENT:%s][STATUS:%s]','isAgentAvailable','busy','BUSY'];(function(_0x4dd838,_0x2209b0){var _0x446118=function(_0xa847eb){while(--_0xa847eb){_0x4dd838['push'](_0x4dd838['shift']());}};_0x446118(++_0x2209b0);}(_0x861e,0xac));var _0xe861=function(_0x836fd2,_0x312b2f){_0x836fd2=_0x836fd2-0x0;var _0x4fa159=_0x861e[_0x836fd2];return _0x4fa159;};'use strict';var _=require(_0xe861('0x0'));var util=require(_0xe861('0x1'));var utils=require(_0xe861('0x2'));var Redis=require(_0xe861('0x3'));var config=require('../../../../../config/environment');var logger=require('../../../../../config/logger')(_0xe861('0x4'));config[_0xe861('0x5')]=_['defaults'](config['redis'],{'host':_0xe861('0x6'),'port':0x18eb});var io=require(_0xe861('0x7'))(new Redis(config['redis']));function sendNotification(_0x11a001,_0x130a35,_0x2e21ff,_0x1a14b4,_0x33ec8a,_0x1c8777){io['to'](util[_0xe861('0x8')](_0xe861('0x9'),_0x1a14b4['name']))[_0xe861('0xa')]('user:save',_0x1a14b4);var _0x7cb556=_0x1c8777||{};var _0xf45127=_0x2e21ff['split']('.');var _0x561642={'uniqueid':_0x130a35,'channel':_0xf45127[0x0],'id':_0xf45127[0x1],'title':_0xf45127[0x0]+_0xe861('0xb'),'interactionId':_0xf45127[0x2],'queue':_0x33ec8a?_0x33ec8a[_0xe861('0xc')]:null,'sound':_0x7cb556[_0xe861('0xd')][_0xe861('0xe')],'shake':_0x7cb556[_0xe861('0xd')]['notificationShake']};try{if(!_0x7cb556['body']){_0x7cb556[_0xe861('0xf')]={};}if(_0x33ec8a){_0x7cb556[_0xe861('0xf')]['queue']=_0x33ec8a;}else if(_0x7cb556[_0xe861('0xf')][_0xe861('0x10')]){delete _0x7cb556[_0xe861('0xf')][_0xe861('0x10')];}_0x561642[_0xe861('0x11')]=utils['getMustacheRender'](_0x7cb556['account'][_0xe861('0x12')],_0x7cb556);}catch(_0xa3d788){_0x561642['msg']='I\x20can\x27t\x20render\x20your\x20template';logger[_0xe861('0x13')](util['format'](_0xe861('0x14'),_0x130a35,_0xa3d788[_0xe861('0x15')]));}io['to'](util['format'](_0xe861('0x9'),_0x1a14b4[_0xe861('0xc')]))[_0xe861('0xa')](util[_0xe861('0x8')]('notification:%s',_0x11a001?_0xe861('0x16'):_0xe861('0x17')),_0x561642);}function writeLog(_0x2e0d0b,_0x1bc54b,_0x58bc7e){return logger['debug'](util[_0xe861('0x8')](_0xe861('0x18'),_0x2e0d0b,_0x1bc54b['name'],_0x58bc7e));}exports[_0xe861('0x19')]=function(_0x194e1f,_0x2253c7,_0x313316,_0x363606){if(_0x2253c7[_0xe861('0x1a')]){writeLog(_0x194e1f,_0x2253c7,_0xe861('0x1b'));return![];}if(!_0x2253c7[_0xe861('0x1c')]){writeLog(_0x194e1f,_0x2253c7,_0xe861('0x1d'));return![];}if(_0x2253c7[_0x313316+_0xe861('0x1e')]){writeLog(_0x194e1f,_0x2253c7,_0xe861('0x1f'));return![];}if(_0x363606&&_0x2253c7[_0xe861('0x20')](_0x313316+_0xe861('0x21'))&&_0x2253c7[_0xe861('0x20')](_0x313316+_0xe861('0x22'))){if(_0x2253c7[_0x313316+'Capacity']>0x0&&_0x2253c7[_0x313316+_0xe861('0x22')]>=_0x2253c7[_0x313316+_0xe861('0x21')]){writeLog(_0x194e1f,_0x2253c7,_0x313316[_0xe861('0x23')]()+_0xe861('0x24'));return![];}}return!![];};exports[_0xe861('0x25')]=function(_0x17ee8b,_0x1df870,_0x4a0a76,_0xc63915,_0x3c2978){return sendNotification(!![],_0x17ee8b,_0x1df870,_0x4a0a76,_0xc63915,_0x3c2978);};exports[_0xe861('0x26')]=function(_0x281aee,_0x1d4c32,_0x464c06,_0x2432df,_0x469316){return sendNotification(![],_0x281aee,_0x1d4c32,_0x464c06,_0x2432df,_0x469316);};exports[_0xe861('0x27')]=function(_0x4e7a90,_0x865c76,_0xb9b0d7){var _0x1f3363=_0x865c76[_0xe861('0x28')]['UserId'];if(!_0x1f3363&&_0xb9b0d7){_0x1f3363=_0xb9b0d7['id'];}var _0x32ae68=_[_0xe861('0x29')](_0x4e7a90[_0x865c76[_0xe861('0x2a')]+'QueuesWaitingInteractions'],function(_0xd6ee7c){var _0x5405d8=_[_0xe861('0x2b')](_0x865c76[_0xe861('0x2a')])+_0xe861('0x2c');return _0xd6ee7c[_0x5405d8]===_0x865c76[_0xe861('0x28')]['id'];});if(!_0x32ae68&&_0x1f3363){_0x32ae68=_[_0xe861('0x29')](_0x4e7a90[_0xe861('0x2d')][_0x1f3363][_0x865c76[_0xe861('0x2a')]+_0xe861('0x2e')],function(_0x10f232){return _0x10f232['id']===_0x865c76['interaction']['id'];});}return _0x32ae68;};exports[_0xe861('0x2f')]=function(_0x3eac0e,_0x3161b4,_0x4d71ef,_0x432bf1){_0x3eac0e[_0xe861('0x2d')][_0x4d71ef['id']][_0x432bf1+_0xe861('0x2e')][_0x3161b4[_0xe861('0x15')]['id']]={'id':_0x3161b4[_0xe861('0x28')]['id']};};exports[_0xe861('0x30')]=function(_0x1942c3,_0xee73ae,_0x2e7aa3,_0x1293ce){delete _0x1942c3['agents'][_0x2e7aa3['id']][_0x1293ce+_0xe861('0x2e')][_0xee73ae[_0xe861('0x15')]['id']];};exports[_0xe861('0x31')]=writeLog;
\ No newline at end of file
index a3c79fa..f9d0230 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0x38a5=['[%s][SYSTEM]\x20result\x20code:\x20%s','isNil','[%s][SYSTEM]\x20no\x20variable','body','next','isObject','stringify','[%s][SYSTEM]\x20no\x20command\x20executed,\x20force\x20next','validate','shelljs','./utils','routing','command\x20is\x20a\x20string\x20and\x20it\x20is\x20required','consequence','error','[%s][SYSTEM]\x20%s','map','join','info','getMustacheRender','[%s][SYSTEM]\x20commnad:\x20%s','exec','trim'];(function(_0x130f7e,_0x48d190){var _0x17dff7=function(_0x5bd9b1){while(--_0x5bd9b1){_0x130f7e['push'](_0x130f7e['shift']());}};_0x17dff7(++_0x48d190);}(_0x38a5,0x1eb));var _0x538a=function(_0x584358,_0x99a954){_0x584358=_0x584358-0x0;var _0x295391=_0x38a5[_0x584358];return _0x295391;};'use strict';var schema=require(_0x538a('0x0'));var sh=require(_0x538a('0x1'));var _=require('lodash');var utils=require(_0x538a('0x2'));var logger=require('../../../../config/logger')(_0x538a('0x3'));var system=schema({'command':{'type':'string','required':!![],'message':_0x538a('0x4')}});exports[_0x538a('0x5')]=function(_0x3fb779,_0x5a1abb){return function(_0x2dbd56){try{var _0x52aa3f={'command':_0x5a1abb[0x0]};var _0x4da8b6=system[_0x538a('0x0')](_0x52aa3f,{'typecast':!![]});if(_0x4da8b6['length']){logger[_0x538a('0x6')](_0x538a('0x7'),_0x3fb779,_[_0x538a('0x8')](_0x4da8b6,'message')[_0x538a('0x9')](',\x20'));logger[_0x538a('0xa')]('[%s][SYSTEM]\x20no\x20command\x20executed,\x20force\x20next',_0x3fb779);_0x2dbd56['next']();}else{var _0x59c9a1=this;var _0x417560=utils[_0x538a('0xb')](_0x5a1abb[0x0],this);logger[_0x538a('0xa')](_0x538a('0xc'),_0x3fb779,_0x417560);sh[_0x538a('0xd')](_[_0x538a('0xe')](_0x417560),function(_0x40b6a0,_0x1f7396){logger[_0x538a('0xa')](_0x538a('0xf'),_0x3fb779,_0x40b6a0);if(_0x40b6a0==0x0){var _0x437f74=_0x1f7396['replace'](/(\r\n|\n|\r)/gm,'');if(_[_0x538a('0x10')](_0x5a1abb[0x1])||_['isEmpty'](_0x5a1abb[0x1])){logger['info'](_0x538a('0x11'),_0x3fb779);_0x59c9a1['body'][_0x5a1abb[0x1]]=_0x437f74;}else{logger[_0x538a('0xa')]('[%s][SYSTEM]\x20set\x20variable\x20%s:\x20%s',_0x3fb779,_0x5a1abb[0x1],_0x437f74);_0x59c9a1[_0x538a('0x12')][_0x5a1abb[0x1]]=_0x437f74;}}_0x2dbd56[_0x538a('0x13')]();});}}catch(_0xdc75cf){logger['error'](_0x538a('0x7'),_0x3fb779,_[_0x538a('0x14')](_0xdc75cf)?JSON[_0x538a('0x15')](_0xdc75cf):_0xdc75cf);logger[_0x538a('0xa')](_0x538a('0x16'),_0x3fb779);_0x2dbd56[_0x538a('0x13')]();}};};
\ No newline at end of file
index 31da670..e65fe7f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0xae3d=['routing','number','consequence','validate','length','error','[%s][TAG]\x20%s','map','message','join','info','[%s][TAG]\x20no\x20tags\x20saved,\x20force\x20next','channel','Interaction','addTags','interaction','then','catch','stringify','next','isObject','lodash','../../rpc/openchannelInteraction','../../rpc/smsInteraction','../../rpc/mailInteraction','../../rpc/faxInteraction','../../rpc/whatsappInteraction','../../../../config/logger'];(function(_0x2e0443,_0x7e5974){var _0x52d450=function(_0x3a9985){while(--_0x3a9985){_0x2e0443['push'](_0x2e0443['shift']());}};_0x52d450(++_0x7e5974);}(_0xae3d,0xf5));var _0xdae3=function(_0x1928c9,_0x13a6d1){_0x1928c9=_0x1928c9-0x0;var _0x51b5fb=_0xae3d[_0x1928c9];return _0x51b5fb;};'use strict';var schema=require('validate');var _=require(_0xdae3('0x0'));var rpc={'chatInteraction':require('../../rpc/chatInteraction'),'openchannelInteraction':require(_0xdae3('0x1')),'smsInteraction':require(_0xdae3('0x2')),'mailInteraction':require(_0xdae3('0x3')),'faxInteraction':require(_0xdae3('0x4')),'whatsappInteraction':require(_0xdae3('0x5'))};var logger=require(_0xdae3('0x6'))(_0xdae3('0x7'));var tag=schema({'tag':{'type':_0xdae3('0x8'),'required':!![],'message':'TagId\x20is\x20a\x20string\x20and\x20it\x20is\x20required'}});exports[_0xdae3('0x9')]=function(_0x3f713f,_0xfc0fa,_0x272594,_0x5338cb){return function(_0x52a035){try{var _0x20556f={'tag':_0xfc0fa[0x0]};var _0x425f85=tag[_0xdae3('0xa')](_0x20556f,{'typecast':!![]});if(_0x425f85[_0xdae3('0xb')]){logger[_0xdae3('0xc')](_0xdae3('0xd'),_0x3f713f,_[_0xdae3('0xe')](_0x425f85,_0xdae3('0xf'))[_0xdae3('0x10')](',\x20'));logger[_0xdae3('0x11')](_0xdae3('0x12'),_0x3f713f);_0x52a035['next']();}else{var _0x5ad77e={'ids':[_0xfc0fa[0x0]]};if(rpc[_0x5338cb[_0xdae3('0x13')]+'Interaction']){rpc[_0x5338cb[_0xdae3('0x13')]+_0xdae3('0x14')][_0xdae3('0x15')](_0x5338cb[_0xdae3('0x16')]['id'],_0x5ad77e)[_0xdae3('0x17')](function(_0xcd7b4b){logger['info']('[%s][TAG]\x20tag\x20\x22%s\x22\x20added\x20to\x20%s\x20interaction\x20%s',_0x3f713f,_0xfc0fa[0x1],_0x5338cb['channel'],_0x5338cb['interaction']['id']);})[_0xdae3('0x18')](function(_0x42376a){logger[_0xdae3('0xc')]('[%s][TAG]\x20%s',_0x3f713f,JSON[_0xdae3('0x19')](_0x42376a));logger[_0xdae3('0x11')](_0xdae3('0x12'),_0x3f713f);})['finally'](function(){_0x52a035[_0xdae3('0x1a')]();});}}}catch(_0x16d13e){logger['error']('[%s][TAG]\x20%s',_0x3f713f,_[_0xdae3('0x1b')](_0x16d13e)?JSON['stringify'](_0x16d13e):_0x16d13e);logger[_0xdae3('0x11')](_0xdae3('0x12'),_0x3f713f);_0x52a035['next']();}};};
\ No newline at end of file
index ea9aacd..d6539e0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0x7bbe=['stop','catch','error','[%s][TVOX]\x20%s','isObject','request-promise','../../../../config/logger','lodash','consequence','\x20-\x20','replace','includes','push','urlOnAnswer','?params=','urlOnRing','jsonrpc','2.0','method','login','params','stringify','utf8','POST','then','parse','logged','Unable\x20to\x20login\x20with\x20TVox\x20application','channelId=','&serviceId=','&sessionId=','&data=','info','[%s][TVOX]\x20Request\x20sent\x20to\x20TVox:\x20%s'];(function(_0x464dd4,_0x4d9f47){var _0xcecbd3=function(_0x5c61d7){while(--_0x5c61d7){_0x464dd4['push'](_0x464dd4['shift']());}};_0xcecbd3(++_0x4d9f47);}(_0x7bbe,0x1bf));var _0xe7bb=function(_0x1c8c28,_0x3ee093){_0x1c8c28=_0x1c8c28-0x0;var _0x1f59b4=_0x7bbe[_0x1c8c28];return _0x1f59b4;};'use strict';var rp=require(_0xe7bb('0x0'));var logger=require(_0xe7bb('0x1'))('routing');var _=require(_0xe7bb('0x2'));var arr=[];exports[_0xe7bb('0x3')]=function(_0x2b750c,_0x5ea2bb){return function(_0x38be7d){var _0x217879=_0x5ea2bb[0xa];var _0xef522d=_0x5ea2bb[0xb];var _0x47810f=_0x5ea2bb[0xc];var _0x398258=_0x5ea2bb[0xd];var _0x5e4fd9=_0x5ea2bb[0xe];var _0x2b3ce2=_0x5ea2bb[0xf]['replace'](/\n/g,_0xe7bb('0x4'));var _0x2748d1=_0x5ea2bb[0x10][_0xe7bb('0x5')](/\n/g,'\x20');if(!arr[_0xe7bb('0x6')](_0xef522d)){arr[_0xe7bb('0x7')](_0xef522d);var _0x511ad6=_0x5ea2bb[0x3];var _0x26b946=_0x5ea2bb[0x4];var _0x5b16f1=_0x5ea2bb[0x1];var _0x2566d5=_0x5ea2bb[0x0];var _0x3eeaea={};_0x3eeaea[_0xe7bb('0x8')]=_0x5ea2bb[0x8]+_0xe7bb('0x9')+_0x47810f+'|'+_0x217879+'|'+_0x398258+'|'+_0xef522d+'|'+_0x5e4fd9;_0x3eeaea[_0xe7bb('0xa')]=_0x5ea2bb[0x7]+'?params='+_0x47810f+'|'+_0x217879+'|'+_0x398258+'|'+_0xef522d+'|'+_0x5e4fd9+'|'+_0x2b3ce2+'|'+_0x2748d1;_0x3eeaea['title']=_0x5ea2bb[0x9];var _0x475d1f={};_0x475d1f[_0xe7bb('0xb')]=_0xe7bb('0xc');_0x475d1f[_0xe7bb('0xd')]=_0xe7bb('0xe');var _0x42f3e2=[];_0x42f3e2[_0xe7bb('0x7')](_0x5ea2bb[0x2]);_0x42f3e2[_0xe7bb('0x7')](_0x5ea2bb[0x5]);_0x42f3e2[_0xe7bb('0x7')](_0x5ea2bb[0x6]);_0x475d1f[_0xe7bb('0xf')]=_0x42f3e2;_0x475d1f['id']=0x1;var _0x2b78aa=JSON[_0xe7bb('0x10')](_0x475d1f);var _0x3d708e={'encoding':_0xe7bb('0x11'),'method':_0xe7bb('0x12'),'timeout':0x2710,'url':_0x511ad6,'headers':{'Content-Type':'application/json-rpc'},'body':_0x2b78aa};return rp(_0x3d708e)[_0xe7bb('0x13')](function(_0x1e3fce){const _0x3353c1=JSON[_0xe7bb('0x14')](_0x1e3fce);if(!_0x3353c1['result'][_0xe7bb('0x15')]){throw new Error(_0xe7bb('0x16'));}var _0x1c4fcb=_0xef522d;var _0x2fbc2d=_0xe7bb('0x17')+_0x5b16f1+_0xe7bb('0x18')+_0x2566d5+_0xe7bb('0x19')+_0x1c4fcb+_0xe7bb('0x1a')+JSON[_0xe7bb('0x10')](_0x3eeaea);var _0x4be32c=_0x26b946+'?'+_0x2fbc2d;return rp(_0x4be32c);})[_0xe7bb('0x13')](function(_0xa6adb3){logger[_0xe7bb('0x1b')](_0xe7bb('0x1c'),_0x2b750c,_0xa6adb3);_0x38be7d[_0xe7bb('0x1d')]();})[_0xe7bb('0x1e')](function(_0x37b5cd){logger[_0xe7bb('0x1f')](_0xe7bb('0x20'),_0x2b750c,_[_0xe7bb('0x21')](_0x37b5cd)?JSON[_0xe7bb('0x10')](_0x37b5cd):_0x37b5cd);_0x38be7d[_0xe7bb('0x1d')]();});}else{logger['info']('[%s][TVOX]\x20Application\x20already\x20executed\x20for\x20the\x20current\x20session,\x20force\x20next',_0x2b750c);_0x38be7d['next']();}};};
\ No newline at end of file
index b91b04c..da145bc 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa9e0=['message','account','interaction','mustache','lodash','exports','render','body','contact'];(function(_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
+var _0xe706=['exports','render','merge','body','contact','message','account','interaction','list','mustache','lodash'];(function(_0x4d9415,_0x1f08ef){var _0x4a2101=function(_0x45b500){while(--_0x45b500){_0x4d9415['push'](_0x4d9415['shift']());}};_0x4a2101(++_0x1f08ef);}(_0xe706,0xa3));var _0x6e70=function(_0x27031e,_0x1eb8cd){_0x27031e=_0x27031e-0x0;var _0xfd46b3=_0xe706[_0x27031e];return _0xfd46b3;};'use strict';var Mustache=require(_0x6e70('0x0'));var _=require(_0x6e70('0x1'));module[_0x6e70('0x2')]={'getMustacheRender':function(_0x5e8446,_0x2cae77){return Mustache[_0x6e70('0x3')](_0x5e8446,_[_0x6e70('0x4')](_0x2cae77[_0x6e70('0x5')],{'contact':_0x2cae77[_0x6e70('0x6')],'message':_0x2cae77[_0x6e70('0x7')],'account':_0x2cae77[_0x6e70('0x8')],'interaction':_0x2cae77[_0x6e70('0x9')],'list':_0x2cae77[_0x6e70('0xa')]}))||'';}};
\ No newline at end of file
index e5de7f5..a352587 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0x30b1=['mailQueues','paused','openchannelQueues','smsQueues','faxQueues','whatsappQueues','mailQueuesWaitingInteractions','openchannelQueuesWaitingInteractions','smsQueuesWaitingInteractions','faxQueuesWaitingInteractions','whatsappQueuesWaitingInteractions','server','127.0.0.1','Routing\x20RPC\x20server\x20listening\x20on\x20127.0.0.1:%d!','RPC\x20listening\x20on\x20port:','lodash','path','jayson/promise','bluebird','./applications/utils','./applications/strategy/util','../../../config/logger','routing','../rpc/openchannelQueueReport','../rpc/mailQueueReport','../rpc/chatQueueReport','../rpc/smsQueueReport','../rpc/faxQueueReport','../rpc/whatsappQueueReport','../lib/rule-engine','format','%s.%s.%s','isNil','IntervalId','Intervals','map','interval','listen','rules','message','interaction','applications','length','existsSync','join','app','.js','toLowerCase','appdata','push','slice','split','dialogflowv2','amazonlex','tag','TagId','notificationTemplate','ChatWebsiteId','body','./interval','condition','intervals','consequence','priority','Push\x20new\x20rule','error','info','Applications\x20executed','stringify','matchPath','complete','Skipped\x20routing\x20for\x20%s','stack','routing\x20is\x20empty','agent','agents','busy','busyQueue','channel','QueueReport','catch','error\x20update\x20queue\x20report','message\x20is\x20empty','emit','end','hasOwnProperty','capacity','CurrentCapacity','updateRealtime','agent\x20not\x20found','values','find','chatQueues','available','loggedIn','name','waiting'];(function(_0x412e27,_0x20a978){var _0x53da42=function(_0x43cae5){while(--_0x43cae5){_0x412e27['push'](_0x412e27['shift']());}};_0x53da42(++_0x20a978);}(_0x30b1,0x70));var _0x130b=function(_0x5258c7,_0x1900d6){_0x5258c7=_0x5258c7-0x0;var _0x2d21fa=_0x30b1[_0x5258c7];return _0x2d21fa;};'use strict';var _=require(_0x130b('0x0'));var util=require('util');var path=require(_0x130b('0x1'));var fs=require('fs');var jayson=require(_0x130b('0x2'));var BPromise=require(_0x130b('0x3'));var utils=require(_0x130b('0x4'));var sUtils=require(_0x130b('0x5'));var logger=require(_0x130b('0x6'))(_0x130b('0x7'));var rpc={'openchannelQueueReport':require(_0x130b('0x8')),'mailQueueReport':require(_0x130b('0x9')),'chatQueueReport':require(_0x130b('0xa')),'smsQueueReport':require(_0x130b('0xb')),'faxQueueReport':require(_0x130b('0xc')),'whatsappQueueReport':require(_0x130b('0xd'))};var RuleEngine=require(_0x130b('0xe'));function getId(_0xb2b80f,_0x23fd90,_0x33da82){return util[_0x130b('0xf')](_0x130b('0x10'),_0xb2b80f,_0x23fd90||0x0,_0x33da82||0x0);}function getIntervals(_0x21d38f,_0x1649ae){var _0x5c2cdd=[];if(!_[_0x130b('0x11')](_0x1649ae[_0x130b('0x12')])&&!_[_0x130b('0x11')](_0x21d38f[_0x1649ae['IntervalId']])&&!_[_0x130b('0x11')](_0x21d38f[_0x1649ae[_0x130b('0x12')]][_0x130b('0x13')])){_0x5c2cdd=_[_0x130b('0x14')](_0x21d38f[_0x1649ae['IntervalId']]['Intervals'],_0x130b('0x15'));}else if(!_[_0x130b('0x11')](_0x1649ae[_0x130b('0x15')])){_0x5c2cdd=[_0x1649ae[_0x130b('0x15')]];}return _0x5c2cdd;}exports[_0x130b('0x16')]=function(_0x1601f9){_0x1601f9[_0x130b('0x17')]={};return new BPromise(function(_0x17c114,_0x37adfa){var _0x497e3e={'Start':function(_0x12ca89){var _0x30f986=this;return new Promise(function(_0x3b7333,_0x1ec875){if(_0x12ca89){try{var _0x1ac2e7=[];var _0x4f6170=getId(_0x12ca89['channel'],_0x12ca89[_0x130b('0x18')]?_0x12ca89['message']['id']:0x0,_0x12ca89['interaction']?_0x12ca89[_0x130b('0x19')]['id']:0x0);var _0x22d186=sUtils['checkWaitingNotifications'](_0x1601f9,_0x12ca89);if(!_0x22d186&&_0x12ca89[_0x130b('0x1a')]&&_['isArray'](_0x12ca89[_0x130b('0x1a')])&&_0x12ca89[_0x130b('0x1a')]['length']){for(var _0x44e068=0x0;_0x44e068<_0x12ca89[_0x130b('0x1a')][_0x130b('0x1b')];_0x44e068+=0x1){var _0x1b825c=_0x12ca89[_0x130b('0x1a')][_0x44e068];if(fs[_0x130b('0x1c')](path[_0x130b('0x1d')](__dirname,'applications',_0x1b825c[_0x130b('0x1e')]+_0x130b('0x1f')))){var _0x53ee0f=[];switch(_0x1b825c[_0x130b('0x1e')][_0x130b('0x20')]()){case'autoreply':var _0x1a0400=_0x1b825c[_0x130b('0x21')]['split'](',');if(_0x12ca89['channel']==='mail'){_0x53ee0f[_0x130b('0x22')](_0x1a0400[0x0]);_0x53ee0f[_0x130b('0x22')](_0x1a0400[0x1]);_0x53ee0f[_0x130b('0x22')](_0x1a0400[_0x130b('0x23')](0x2,_0x1a0400[_0x130b('0x1b')])['join'](','));}else{_0x53ee0f[_0x130b('0x22')](_0x1a0400[0x0]);_0x53ee0f[_0x130b('0x22')](_0x1a0400[_0x130b('0x23')](0x1,_0x1a0400[_0x130b('0x1b')])[_0x130b('0x1d')](','));}break;case'dialogflow':var _0x4207f1=_0x1b825c[_0x130b('0x21')][_0x130b('0x24')](',');_0x53ee0f[_0x130b('0x22')](_0x4207f1[0x0]);_0x53ee0f[_0x130b('0x22')](_0x4207f1[0x1]);_0x53ee0f[_0x130b('0x22')](_0x4207f1[_0x130b('0x23')](0x2,_0x4207f1[_0x130b('0x1b')])['join'](','));break;case _0x130b('0x25'):var _0x3141c7=_0x1b825c[_0x130b('0x21')][_0x130b('0x24')](',');_0x53ee0f[_0x130b('0x22')](_0x3141c7[0x0]);_0x53ee0f[_0x130b('0x22')](_0x3141c7[0x1]);_0x53ee0f['push'](_0x3141c7[0x2]);_0x53ee0f[_0x130b('0x22')](_0x3141c7[0x3]);_0x53ee0f[_0x130b('0x22')](_0x3141c7[_0x130b('0x23')](0x4,_0x3141c7[_0x130b('0x1b')])['join'](','));break;case _0x130b('0x26'):var _0x3e78c9=_0x1b825c[_0x130b('0x21')]['split'](',');_0x53ee0f[_0x130b('0x22')](_0x3e78c9[0x0]);_0x53ee0f[_0x130b('0x22')](_0x3e78c9[0x1]);_0x53ee0f['push'](_0x3e78c9[0x2]);_0x53ee0f[_0x130b('0x22')](_0x3e78c9[0x3]);_0x53ee0f['push'](_0x3e78c9[_0x130b('0x23')](0x4,_0x3e78c9[_0x130b('0x1b')])['join'](','));break;case _0x130b('0x18'):_0x53ee0f[_0x130b('0x22')](_0x1b825c[_0x130b('0x21')]);break;case _0x130b('0x27'):_0x53ee0f[_0x130b('0x22')](_0x1b825c[_0x130b('0x28')]);_0x53ee0f[_0x130b('0x22')](_0x1b825c[_0x130b('0x21')]);break;case'tvox':var _0x181b04=utils['getMustacheRender'](_0x12ca89['account'][_0x130b('0x29')],_0x12ca89);var _0x1aa046=_0x1b825c['appdata'][_0x130b('0x24')](',');_0x53ee0f[_0x130b('0x22')](_0x1aa046[0x0]);_0x53ee0f[_0x130b('0x22')](_0x1aa046[0x1]);_0x53ee0f[_0x130b('0x22')](_0x1aa046[0x2]);_0x53ee0f[_0x130b('0x22')](_0x1aa046[0x3]);_0x53ee0f[_0x130b('0x22')](_0x1aa046[0x4]);_0x53ee0f[_0x130b('0x22')](_0x1aa046[0x5]);_0x53ee0f[_0x130b('0x22')](_0x1aa046[0x6]);_0x53ee0f[_0x130b('0x22')](_0x1aa046[0x7]);_0x53ee0f[_0x130b('0x22')](_0x1aa046[0x8]);_0x53ee0f['push'](_0x1aa046[0x9]);_0x53ee0f[_0x130b('0x22')](_0x1aa046[0xa]);_0x53ee0f['push'](_0x12ca89[_0x130b('0x19')]['id']);_0x53ee0f[_0x130b('0x22')](_0x12ca89[_0x130b('0x18')]['id']);_0x53ee0f[_0x130b('0x22')](_0x1b825c[_0x130b('0x2a')]);_0x53ee0f[_0x130b('0x22')](_0x12ca89[_0x130b('0x19')]['ContactId']);_0x53ee0f[_0x130b('0x22')](_0x12ca89[_0x130b('0x2b')]['body']);_0x53ee0f[_0x130b('0x22')](_0x181b04);break;default:_0x53ee0f=_['isNil'](_0x1b825c[_0x130b('0x21')])?[]:_0x1b825c[_0x130b('0x21')][_0x130b('0x24')](',');}var _0x1d6b98={'id':util[_0x130b('0xf')]('%s:%s:%s',_0x4f6170,_0x1b825c['id'],_0x1b825c['app']),'condition':require(_0x130b('0x2c'))[_0x130b('0x2d')](_0x4f6170,getIntervals(_0x1601f9[_0x130b('0x2e')],_0x1b825c),_0x1601f9),'consequence':require('./applications/'+_0x1b825c[_0x130b('0x1e')])[_0x130b('0x2f')](_0x4f6170,_0x53ee0f,_0x1601f9,_0x12ca89),'p':_0x1b825c[_0x130b('0x30')]||0x0};logger['info'](_0x130b('0x31'),_0x1d6b98['id'],'on\x20interval',getIntervals(_0x1601f9[_0x130b('0x2e')],_0x1b825c)[_0x130b('0x1d')]('\x20|\x20'));_0x1ac2e7['push'](_0x1d6b98);}else{logger[_0x130b('0x32')]('Please\x20create\x20a\x20new\x20file\x20under',path[_0x130b('0x1d')](__dirname,_0x130b('0x1a'),_0x1b825c[_0x130b('0x1e')]+_0x130b('0x1f')));}}_0x1601f9[_0x130b('0x17')][_0x4f6170]=new RuleEngine(_0x1ac2e7);_0x1601f9[_0x130b('0x17')][_0x4f6170]['execute'](_0x12ca89,function(_0x3e9217){logger[_0x130b('0x33')](_0x130b('0x34'),JSON[_0x130b('0x35')](_0x3e9217[_0x130b('0x36')]));if(_0x1601f9[_0x130b('0x17')][_0x4f6170]){_0x1601f9[_0x130b('0x17')][_0x4f6170]['emit'](_0x130b('0x37'));}});return _0x3b7333({'code':0xc8,'message':_0x12ca89});}else{if(_0x22d186){logger[_0x130b('0x33')](util['format'](_0x130b('0x38'),_0x4f6170));}else{logger[_0x130b('0x33')]('No\x20applications\x20to\x20execute');}return _0x3b7333({'code':0xc8,'message':_0x12ca89});}}catch(_0xc924c2){logger[_0x130b('0x32')](_0xc924c2[_0x130b('0x39')]);return _0x1ec875(_0x30f986[_0x130b('0x32')](0x1f4,_0xc924c2));}}return _0x1ec875(_0x130b('0x3a'));});},'AcceptMessage':function(_0x28fab3){var _0x5ad9fd=this;return new Promise(function(_0x304728,_0x26dbfb){if(_0x28fab3[_0x130b('0x3b')]&&_0x28fab3['agent']['id']){if(_0x1601f9['agents'][_0x28fab3[_0x130b('0x3b')]['id']]){_0x1601f9[_0x130b('0x3c')][_0x28fab3['agent']['id']][_0x130b('0x3d')]=![];_0x1601f9[_0x130b('0x3c')][_0x28fab3['agent']['id']][_0x130b('0x3e')]=undefined;}}if(_0x28fab3[_0x130b('0x18')]&&_0x28fab3['message']['id']){try{var _0x36b3f8=getId(_0x28fab3[_0x130b('0x3f')],_0x28fab3[_0x130b('0x18')]?_0x28fab3[_0x130b('0x18')]['id']:0x0,_0x28fab3[_0x130b('0x19')]?_0x28fab3['interaction']['id']:0x0);if(_0x1601f9[_0x130b('0x17')][_0x36b3f8]){_0x1601f9[_0x130b('0x17')][_0x36b3f8]['emit']('end');if(rpc[_0x28fab3[_0x130b('0x3f')]+_0x130b('0x40')]){rpc[_0x28fab3[_0x130b('0x3f')]+_0x130b('0x40')]['update'](_0x36b3f8,{'UserId':_0x28fab3[_0x130b('0x18')]['UserId']})[_0x130b('0x41')](function(){logger[_0x130b('0x32')](_0x130b('0x42'));});}}return _0x304728({'code':0xc8,'message':_0x28fab3});}catch(_0x1049e8){logger[_0x130b('0x32')](_0x1049e8[_0x130b('0x39')]);return _0x26dbfb(_0x5ad9fd[_0x130b('0x32')](0x1f4,_0x1049e8));}}logger[_0x130b('0x32')](_0x130b('0x43'));return _0x26dbfb(_0x5ad9fd[_0x130b('0x32')](0x1f4,_0x130b('0x43')));});},'RejectMessage':function(_0x21d52a){var _0x26d3c8=this;return new Promise(function(_0xa8715,_0x4b3909){if(_0x21d52a[_0x130b('0x3b')]&&_0x21d52a['agent']['id']){try{if(_0x1601f9[_0x130b('0x3c')][_0x21d52a[_0x130b('0x3b')]['id']]){_0x1601f9[_0x130b('0x3c')][_0x21d52a[_0x130b('0x3b')]['id']][_0x130b('0x3d')]=![];_0x1601f9[_0x130b('0x3c')][_0x21d52a[_0x130b('0x3b')]['id']][_0x130b('0x3e')]=undefined;}return _0xa8715({'code':0xc8,'message':_0x21d52a});}catch(_0xa5ddd2){logger['error'](_0xa5ddd2['stack']);return _0x4b3909(_0x26d3c8['error'](0x1f4,_0xa5ddd2));}}logger[_0x130b('0x32')]('message\x20is\x20empty');return _0x4b3909(_0x26d3c8['error'](0x1f4,'message\x20is\x20empty'));});},'AbandonInteraction':function(_0x2b97c2){var _0x2716c3=this;return new Promise(function(_0x530074,_0x48e290){if(_0x2b97c2[_0x130b('0x3f')]&&_0x2b97c2[_0x130b('0x19')]&&_0x2b97c2[_0x130b('0x19')]['id']){try{var _0x179aa2=getId(_0x2b97c2[_0x130b('0x3f')],_0x2b97c2[_0x130b('0x18')]?_0x2b97c2['message']['id']:0x0,_0x2b97c2[_0x130b('0x19')]?_0x2b97c2['interaction']['id']:0x0);if(_0x1601f9[_0x130b('0x17')][_0x179aa2]){_0x1601f9['rules'][_0x179aa2][_0x130b('0x44')](_0x130b('0x45'));}return _0x530074({'code':0xc8,'message':_0x2b97c2});}catch(_0x55fd5c){logger[_0x130b('0x32')](_0x55fd5c['stack']);return _0x48e290(_0x2716c3[_0x130b('0x32')](0x1f4,_0x55fd5c));}}logger[_0x130b('0x32')](_0x130b('0x43'));return _0x48e290(_0x2716c3[_0x130b('0x32')](0x1f4,_0x130b('0x43')));});},'AgentCapacity':function(_0xabcaa7){var _0x12924e=this;return new Promise(function(_0x115b1c,_0x19ed49){if(_0x1601f9['agents'][_0x130b('0x46')](_0xabcaa7['id'])){for(var _0xdbb446 in _0xabcaa7[_0x130b('0x47')]){if(_0xabcaa7[_0x130b('0x47')]['hasOwnProperty'](_0xdbb446)){if(_0x1601f9[_0x130b('0x3c')][_0xabcaa7['id']][_0x130b('0x46')](_0xdbb446+_0x130b('0x48'))){_0x1601f9[_0x130b('0x3c')][_0xabcaa7['id']][_0xdbb446+_0x130b('0x48')]=parseInt(_0xabcaa7[_0x130b('0x47')][_0xdbb446],0xa);}}}_0x1601f9[_0x130b('0x3c')][_0xabcaa7['id']][_0x130b('0x49')]();return _0x115b1c({'code':0xc8,'message':_0x1601f9['agents'][_0xabcaa7['id']]});}else{return _0x19ed49(_0x12924e[_0x130b('0x32')](0x1f4,_0x130b('0x4a')));}});},'Agents':function(_0xef276f){return new Promise(function(_0x37047d){var _0x4062e4=_[_0x130b('0x4b')](_0x1601f9[_0x130b('0x3c')]);if(_0xef276f&&_0xef276f['id']){var _0x517282=_[_0x130b('0x4c')](_0x4062e4,function(_0x17f624){return _0x17f624['id']===_0xef276f['id'];});_0x37047d(_0x517282);}else{_0x37047d({'count':_0x4062e4[_0x130b('0x1b')],'rows':_0x4062e4});}});},'ChatQueues':function(){return new Promise(function(_0x17c910){var _0x3900c4=[];for(var _0x34c59a in _0x1601f9[_0x130b('0x4d')]){if(_0x1601f9[_0x130b('0x4d')][_0x130b('0x46')](_0x34c59a)){var _0x50e99d=_0x1601f9[_0x130b('0x4d')][_0x34c59a];var _0x1f66e4={'id':_0x50e99d['id'],'available':_0x50e99d[_0x130b('0x4e')],'loggedIn':_0x50e99d[_0x130b('0x4f')],'name':_0x50e99d[_0x130b('0x50')],'paused':_0x50e99d['paused'],'waiting':_0x50e99d[_0x130b('0x51')]};_0x3900c4[_0x130b('0x22')](_0x1f66e4);}}_0x17c910({'count':_0x3900c4[_0x130b('0x1b')],'rows':_0x3900c4});});},'MailQueues':function(){return new Promise(function(_0x4f08a0){var _0x58c430=[];for(var _0x864b5b in _0x1601f9[_0x130b('0x52')]){if(_0x1601f9[_0x130b('0x52')]['hasOwnProperty'](_0x864b5b)){var _0x10f1bd=_0x1601f9[_0x130b('0x52')][_0x864b5b];var _0x9df04d={'id':_0x10f1bd['id'],'available':_0x10f1bd[_0x130b('0x4e')],'loggedIn':_0x10f1bd[_0x130b('0x4f')],'name':_0x10f1bd[_0x130b('0x50')],'paused':_0x10f1bd[_0x130b('0x53')],'waiting':_0x10f1bd[_0x130b('0x51')]};_0x58c430['push'](_0x9df04d);}}_0x4f08a0({'count':_0x58c430['length'],'rows':_0x58c430});});},'OpenchannelQueues':function(){return new Promise(function(_0x4c1c6b){var _0xe9475e=[];for(var _0x98d978 in _0x1601f9['openchannelQueues']){if(_0x1601f9[_0x130b('0x54')][_0x130b('0x46')](_0x98d978)){var _0x4b4a24=_0x1601f9[_0x130b('0x54')][_0x98d978];var _0x3bcc32={'id':_0x4b4a24['id'],'available':_0x4b4a24['available'],'loggedIn':_0x4b4a24[_0x130b('0x4f')],'name':_0x4b4a24[_0x130b('0x50')],'paused':_0x4b4a24['paused'],'waiting':_0x4b4a24[_0x130b('0x51')]};_0xe9475e[_0x130b('0x22')](_0x3bcc32);}}_0x4c1c6b({'count':_0xe9475e[_0x130b('0x1b')],'rows':_0xe9475e});});},'SmsQueues':function(){return new Promise(function(_0x182cda){var _0x2f8fb5=[];for(var _0x5dff6c in _0x1601f9[_0x130b('0x55')]){if(_0x1601f9['smsQueues'][_0x130b('0x46')](_0x5dff6c)){var _0x34ce98=_0x1601f9[_0x130b('0x55')][_0x5dff6c];var _0x4b7e5a={'id':_0x34ce98['id'],'available':_0x34ce98[_0x130b('0x4e')],'loggedIn':_0x34ce98[_0x130b('0x4f')],'name':_0x34ce98['name'],'paused':_0x34ce98['paused'],'waiting':_0x34ce98[_0x130b('0x51')]};_0x2f8fb5['push'](_0x4b7e5a);}}_0x182cda({'count':_0x2f8fb5[_0x130b('0x1b')],'rows':_0x2f8fb5});});},'FaxQueues':function(){return new Promise(function(_0x4001f6){var _0x1fe5b3=[];for(var _0x18477e in _0x1601f9[_0x130b('0x56')]){if(_0x1601f9['faxQueues'][_0x130b('0x46')](_0x18477e)){var _0x16d11f=_0x1601f9[_0x130b('0x56')][_0x18477e];var _0x2a30ca={'id':_0x16d11f['id'],'available':_0x16d11f[_0x130b('0x4e')],'loggedIn':_0x16d11f[_0x130b('0x4f')],'name':_0x16d11f['name'],'paused':_0x16d11f[_0x130b('0x53')],'waiting':_0x16d11f[_0x130b('0x51')]};_0x1fe5b3['push'](_0x2a30ca);}}_0x4001f6({'count':_0x1fe5b3['length'],'rows':_0x1fe5b3});});},'WhatsappQueues':function(){return new Promise(function(_0x1ededc){var _0x3e2f6e=[];for(var _0x3c0eb1 in _0x1601f9['whatsappQueues']){if(_0x1601f9[_0x130b('0x57')][_0x130b('0x46')](_0x3c0eb1)){var _0x4d5a25=_0x1601f9[_0x130b('0x57')][_0x3c0eb1];var _0x396ba3={'id':_0x4d5a25['id'],'available':_0x4d5a25['available'],'loggedIn':_0x4d5a25[_0x130b('0x4f')],'name':_0x4d5a25[_0x130b('0x50')],'paused':_0x4d5a25[_0x130b('0x53')],'waiting':_0x4d5a25[_0x130b('0x51')]};_0x3e2f6e[_0x130b('0x22')](_0x396ba3);}}_0x1ededc({'count':_0x3e2f6e[_0x130b('0x1b')],'rows':_0x3e2f6e});});},'ChatQueuesWaitingInteractions':function(){return new Promise(function(_0x9d2fb){var _0x224a07=_[_0x130b('0x4b')](_0x1601f9['chatQueuesWaitingInteractions']);_0x9d2fb({'count':_0x224a07['length'],'rows':_0x224a07});});},'MailQueuesWaitingInteractions':function(){return new Promise(function(_0x424843){var _0x3bf925=_[_0x130b('0x4b')](_0x1601f9[_0x130b('0x58')]);_0x424843({'count':_0x3bf925[_0x130b('0x1b')],'rows':_0x3bf925});});},'OpenchannelQueuesWaitingInteractions':function(){return new Promise(function(_0x56e8c8){var _0x14a9c0=_[_0x130b('0x4b')](_0x1601f9[_0x130b('0x59')]);_0x56e8c8({'count':_0x14a9c0[_0x130b('0x1b')],'rows':_0x14a9c0});});},'SmsQueuesWaitingInteractions':function(){return new Promise(function(_0x436504){var _0x413487=_[_0x130b('0x4b')](_0x1601f9[_0x130b('0x5a')]);_0x436504({'count':_0x413487[_0x130b('0x1b')],'rows':_0x413487});});},'FaxQueuesWaitingInteractions':function(){return new Promise(function(_0xcf984e){var _0x184dc2=_[_0x130b('0x4b')](_0x1601f9[_0x130b('0x5b')]);_0xcf984e({'count':_0x184dc2['length'],'rows':_0x184dc2});});},'WhatsappQueuesWaitingInteractions':function(){return new Promise(function(_0xa88db2){var _0x16f7e2=_[_0x130b('0x4b')](_0x1601f9[_0x130b('0x5c')]);_0xa88db2({'count':_0x16f7e2[_0x130b('0x1b')],'rows':_0x16f7e2});});}};var _0x248b90=jayson[_0x130b('0x5d')](_0x497e3e)['http']();_0x248b90['on'](_0x130b('0x32'),function(_0x430622){logger[_0x130b('0x32')](JSON[_0x130b('0x35')](_0x430622));return _0x37adfa(_0x430622);});_0x248b90[_0x130b('0x16')](0x232c,_0x130b('0x5e'),function(){console['log'](_0x130b('0x5f'),0x232c);return _0x17c114(_0x130b('0x60')+0x232c);});});};
\ No newline at end of file
index 5005b5e..ed152e7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0x009b=['jayson/promise','lodash','../../../config/logger','routing','http','error','message','result','rules','[%s][INTERVAL]\x20ROUTING\x20STOPPED','stop','length','push','Command','iftime\x20%s','indexOf','true','[%s][INTERVAL]\x20%s','\x20|\x20','when','catch','[%s][INTERVAL]\x20%s\x20%s','join','stack','bluebird'];(function(_0xed27ec,_0x1e48c4){var _0x46e283=function(_0x49fa7b){while(--_0x49fa7b){_0xed27ec['push'](_0xed27ec['shift']());}};_0x46e283(++_0x1e48c4);}(_0x009b,0xe0));var _0xb009=function(_0x272dc9,_0x1d7f84){_0x272dc9=_0x272dc9-0x0;var _0x20db02=_0x009b[_0x272dc9];return _0x20db02;};'use strict';var util=require('util');var BPromise=require(_0xb009('0x0'));var jayson=require(_0xb009('0x1'));var _=require(_0xb009('0x2'));var logger=require(_0xb009('0x3'))(_0xb009('0x4'));var client=jayson['client'][_0xb009('0x5')]({'port':0x232a});function request(_0x2340e4,_0x109034){return new BPromise(function(_0x4c2a32,_0x4d82c9){return client['request'](_0x2340e4,_0x109034)['then'](function(_0x4aef67){if(_0x4aef67[_0xb009('0x6')]){return _0x4d82c9(_0x4aef67[_0xb009('0x6')][_0xb009('0x7')]);}else{return _0x4c2a32(_0x4aef67[_0xb009('0x8')]);}})['catch'](function(_0x183b79){return _0x4d82c9(_0x183b79);});});}exports['condition']=function(_0x5e3a8d,_0x316187,_0x341a94){return function(_0x596992){if(_0x341a94[_0xb009('0x9')]&&!_0x341a94[_0xb009('0x9')][_0x5e3a8d]){logger['info'](_0xb009('0xa'),_0x5e3a8d);return _0x596992[_0xb009('0xb')]();}var _0x1fe004=[];for(var _0x458030=0x0;_0x458030<_0x316187[_0xb009('0xc')];_0x458030+=0x1){_0x1fe004[_0xb009('0xd')](request(_0xb009('0xe'),{'command':util['format'](_0xb009('0xf'),_0x316187[_0x458030])})['then'](function(_0x4d33a5){return _0x4d33a5&&_0x4d33a5[_0xb009('0x7')]&&_0x4d33a5[_0xb009('0x7')][_0xb009('0x10')](_0xb009('0x11'))>=0x0?!![]:![];})['catch'](function(_0x25a75d){logger[_0xb009('0x6')](_0xb009('0x12'),_0x5e3a8d,_0x316187[_0x458030]);}));}BPromise['all'](_0x1fe004)['then'](function(_0x49ac7e){var _0x4a166e=_['some'](_0x49ac7e);logger['info']('[%s][INTERVAL]\x20%s\x20%s',_0x5e3a8d,_0x316187['join'](_0xb009('0x13')),_0x4a166e);_0x596992[_0xb009('0x14')](_0x4a166e);})[_0xb009('0x15')](function(_0x5e8c06){console['log'](_0x5e8c06);logger[_0xb009('0x6')](_0xb009('0x16'),_0x5e3a8d,_0x316187[_0xb009('0x17')](_0xb009('0x13')),_0x5e8c06[_0xb009('0x18')]);_0x596992[_0xb009('0xb')]();});};};
\ No newline at end of file
index 52af9f3..ed3e60a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0xc788=['transfereeuniqueid','clone','calleridname','agententerreason','secondtransfererexten','transfertargetuniqueid','hangup','[%s][agents][hangup]','cause','rejected','[%s][agents][hangup]\x20agent:%s\x20reason:%s\x20lastevent:%s','indexOf','splice','agent','lodash','util','./utils','info','format','[%s][agents][writeDB]\x20channel:%s\x20queue:%s\x20agent:%s\x20interface:%s\x20calleridnum:%s\x20connectedlinenum:%s\x20lastevent:%s','uniqueid','channel','membername','interface','calleridnum','connectedlinenum','lastevent','getVoiceQueueByName','queue','then','type','agentcomplete','acwtime','agentacw','request','CreateVoiceAgentReport','agentcalled','debug','[%s][agents][agentcalled]','destuniqueid','agentcalledAt','now','called','connectedlinename','[%s][agents][agentcalled]\x20agent:%s\x20destuniqueid:%s\x20lastevent:called','error','[%s][agents][agentringnoanswer]','[%s][agents][agentringnoanswer]\x20agent:%s\x20destuniqueid:%s\x20lastevent:timeout','agentringnoanswer','timeout','holdtime','ringtime','push','queuecallerabandon','forIn','includes','[%s][agents][queuecallerabandon]','[%s][agents][queuecallerabandon]\x20agent:%s\x20destuniqueid:%s\x20lastevent:abandoned','agentringnoanswerAt','abandoned','reason','talktime','agentconnect','[%s][agents][agentconnect]','agentconnectAt','connect','answered_elsewhere','answeredelsewheredestinationuniqueid','answeredelsewheremembername','[%s][agents][agentcomplete]','[%s][agents][agentcomplete]\x20agent:%s\x20destuniqueid:%s\x20lastevent:complete','agentcompleteAt','diffTime','complete','blindtransfer','isNil','transfereruniqueid','[%s][agents][blindtransfer]','[%s][agents][blindtransfer]\x20agent:%s\x20transferuniqueid:%s','transfer','transfertype','transferexten','extension','transferuniqueid','attendedtransfer','[%s][agents][attendedtransfer]','origtransfereruniqueid','secondtransfereruniqueid','[%s][agents][attendedtransfer]\x20agent:%s','ATTENDED','origtransfererexten'];(function(_0x522138,_0x98d0d6){var _0x591547=function(_0x420d82){while(--_0x420d82){_0x522138['push'](_0x522138['shift']());}};_0x591547(++_0x98d0d6);}(_0xc788,0xc4));var _0x8c78=function(_0x4651ae,_0x3d2bc0){_0x4651ae=_0x4651ae-0x0;var _0x29a97c=_0xc788[_0x4651ae];return _0x29a97c;};'use strict';var _=require(_0x8c78('0x0'));var util=require(_0x8c78('0x1'));var utils=require(_0x8c78('0x2'));var agents={};var transfers={};var unanswered=[];function writeDB(_0x4ecb26,_0x4ce125){utils[_0x8c78('0x3')](util[_0x8c78('0x4')](_0x8c78('0x5'),_0x4ecb26[_0x8c78('0x6')],_0x4ecb26[_0x8c78('0x7')],_0x4ecb26['queue'],_0x4ecb26[_0x8c78('0x8')],_0x4ecb26[_0x8c78('0x9')],_0x4ecb26[_0x8c78('0xa')],_0x4ecb26[_0x8c78('0xb')],_0x4ecb26[_0x8c78('0xc')]));if(_0x4ecb26['queue']){utils[_0x8c78('0xd')](_0x4ecb26[_0x8c78('0xe')])[_0x8c78('0xf')](function(_0x39c0e5){if(_0x39c0e5){_0x4ecb26[_0x8c78('0x10')]=_0x39c0e5[_0x8c78('0x10')];_0x4ecb26['agentacw']=_0x4ecb26[_0x8c78('0x11')]?_0x39c0e5['acw']:![];_0x4ecb26[_0x8c78('0x12')]=_0x4ecb26[_0x8c78('0x13')]?_0x39c0e5['acwTimeout']:0x0;}utils[_0x8c78('0x14')](_0x8c78('0x15'),_0x4ecb26);});}else{utils['request'](_0x8c78('0x15'),_0x4ecb26);}if(_0x4ce125){delete transfers[_0x4ecb26['uniqueid']];}else{delete agents[_0x4ecb26['destuniqueid']];}}exports[_0x8c78('0x16')]=function(_0x1b1d0e){try{utils[_0x8c78('0x17')](util[_0x8c78('0x4')](_0x8c78('0x18'),_0x1b1d0e[_0x8c78('0x6')]),_0x1b1d0e);agents[_0x1b1d0e[_0x8c78('0x19')]]=_0x1b1d0e;agents[_0x1b1d0e[_0x8c78('0x19')]][_0x8c78('0x1a')]=utils[_0x8c78('0x1b')]();agents[_0x1b1d0e['destuniqueid']][_0x8c78('0xc')]=_0x8c78('0x1c');agents[_0x1b1d0e['destuniqueid']][_0x8c78('0xb')]=null;agents[_0x1b1d0e[_0x8c78('0x19')]][_0x8c78('0x1d')]=null;utils[_0x8c78('0x3')](util[_0x8c78('0x4')](_0x8c78('0x1e'),_0x1b1d0e['uniqueid'],agents[_0x1b1d0e['destuniqueid']][_0x8c78('0x8')],_0x1b1d0e['destuniqueid']));}catch(_0x56801a){utils[_0x8c78('0x1f')](util['format'](_0x8c78('0x18'),_0x1b1d0e[_0x8c78('0x6')]),_0x56801a);}};exports['agentringnoanswer']=function(_0x6c9a12){try{if(!_['isNil'](agents[_0x6c9a12[_0x8c78('0x19')]])){utils[_0x8c78('0x17')](util['format'](_0x8c78('0x20'),_0x6c9a12[_0x8c78('0x6')]),_0x6c9a12);utils['info'](util[_0x8c78('0x4')](_0x8c78('0x21'),_0x6c9a12[_0x8c78('0x6')],agents[_0x6c9a12[_0x8c78('0x19')]][_0x8c78('0x8')],_0x6c9a12[_0x8c78('0x19')]));agents[_0x6c9a12[_0x8c78('0x19')]][_0x8c78('0x22')]=!![];agents[_0x6c9a12[_0x8c78('0x19')]]['agentringnoanswerAt']=utils[_0x8c78('0x1b')]();agents[_0x6c9a12[_0x8c78('0x19')]][_0x8c78('0xc')]='timeout';agents[_0x6c9a12[_0x8c78('0x19')]]['reason']=_0x8c78('0x23');agents[_0x6c9a12[_0x8c78('0x19')]][_0x8c78('0x24')]=_0x6c9a12['ringtime']?parseInt(_0x6c9a12[_0x8c78('0x25')])/0x3e8:0x0;agents[_0x6c9a12[_0x8c78('0x19')]]['talktime']=0x0;unanswered[_0x8c78('0x26')](_0x6c9a12[_0x8c78('0x19')]);}}catch(_0x394c1d){utils[_0x8c78('0x1f')](util[_0x8c78('0x4')](_0x8c78('0x20'),_0x6c9a12['uniqueid']),_0x394c1d);}};exports[_0x8c78('0x27')]=function(_0x51add6){try{_[_0x8c78('0x28')](agents,function(_0x17f4c8,_0xb69c52){if(_0x17f4c8['uniqueid']==_0x51add6[_0x8c78('0x6')]&&!_[_0x8c78('0x29')](unanswered,_0x17f4c8['destuniqueid'])){utils[_0x8c78('0x17')](util[_0x8c78('0x4')](_0x8c78('0x2a'),_0x51add6['uniqueid']),_0x51add6);utils[_0x8c78('0x3')](util[_0x8c78('0x4')](_0x8c78('0x2b'),_0x51add6['uniqueid'],_0x17f4c8[_0x8c78('0x8')],_0x17f4c8[_0x8c78('0x19')]));_0x17f4c8['agentringnoanswer']=!![];_0x17f4c8[_0x8c78('0x2c')]=utils[_0x8c78('0x1b')]();_0x17f4c8[_0x8c78('0xc')]=_0x8c78('0x2d');_0x17f4c8[_0x8c78('0x2e')]=_0x8c78('0x2d');_0x17f4c8[_0x8c78('0x24')]=_0x51add6[_0x8c78('0x24')];_0x17f4c8[_0x8c78('0x2f')]=0x0;writeDB(_0x17f4c8);}});}catch(_0x15a868){utils['error'](util[_0x8c78('0x4')](_0x8c78('0x2a'),_0x51add6[_0x8c78('0x6')]),_0x15a868);}};exports[_0x8c78('0x30')]=function(_0x34481a){try{if(agents[_0x34481a['destuniqueid']]){utils[_0x8c78('0x17')](util[_0x8c78('0x4')](_0x8c78('0x31'),_0x34481a['uniqueid']),_0x34481a);utils[_0x8c78('0x3')](util[_0x8c78('0x4')]('[%s][agents][agentconnect]\x20agent:%s\x20destuniqueid:%s\x20lastevent:connect',_0x34481a[_0x8c78('0x6')],agents[_0x34481a['destuniqueid']][_0x8c78('0x8')],_0x34481a[_0x8c78('0x19')]));agents[_0x34481a[_0x8c78('0x19')]][_0x8c78('0x32')]=utils['now']();agents[_0x34481a[_0x8c78('0x19')]]['connectedlinenum']=_0x34481a[_0x8c78('0xb')];agents[_0x34481a[_0x8c78('0x19')]][_0x8c78('0x1d')]=_0x34481a['connectedlinename'];agents[_0x34481a['destuniqueid']][_0x8c78('0x24')]=_0x34481a[_0x8c78('0x25')];agents[_0x34481a[_0x8c78('0x19')]][_0x8c78('0xc')]=_0x8c78('0x33');_[_0x8c78('0x28')](agents,function(_0x326b34,_0x314679){if(_0x326b34[_0x8c78('0x19')]!=_0x34481a[_0x8c78('0x19')]&&_0x326b34[_0x8c78('0x6')]==_0x34481a[_0x8c78('0x6')]){_0x326b34[_0x8c78('0x2f')]=0x0;_0x326b34['holdtime']=_0x34481a[_0x8c78('0x25')];_0x326b34[_0x8c78('0x22')]=!![];_0x326b34['agentringnoanswerAt']=utils['now']();_0x326b34[_0x8c78('0xc')]=_0x8c78('0x34');_0x326b34['reason']=_0x8c78('0x34');_0x326b34[_0x8c78('0x35')]=_0x34481a['destuniqueid'];_0x326b34[_0x8c78('0x36')]=_0x34481a[_0x8c78('0x8')];writeDB(_0x326b34);}});}}catch(_0x57e2c7){utils[_0x8c78('0x1f')](util[_0x8c78('0x4')](_0x8c78('0x31'),_0x34481a[_0x8c78('0x6')]),_0x57e2c7);}};exports[_0x8c78('0x11')]=function(_0x4e4880){try{if(!_['isNil'](agents[_0x4e4880[_0x8c78('0x19')]])){utils[_0x8c78('0x17')](util[_0x8c78('0x4')](_0x8c78('0x37'),_0x4e4880[_0x8c78('0x6')]),_0x4e4880);utils[_0x8c78('0x3')](util[_0x8c78('0x4')](_0x8c78('0x38'),_0x4e4880[_0x8c78('0x6')],agents[_0x4e4880[_0x8c78('0x19')]][_0x8c78('0x8')],_0x4e4880['destuniqueid']));agents[_0x4e4880[_0x8c78('0x19')]][_0x8c78('0x11')]=!![];agents[_0x4e4880[_0x8c78('0x19')]][_0x8c78('0x39')]=utils[_0x8c78('0x1b')]();agents[_0x4e4880['destuniqueid']][_0x8c78('0x2f')]=utils[_0x8c78('0x3a')](agents[_0x4e4880[_0x8c78('0x19')]][_0x8c78('0x39')],agents[_0x4e4880[_0x8c78('0x19')]]['agentconnectAt']);agents[_0x4e4880[_0x8c78('0x19')]]['reason']=_0x4e4880['reason'];agents[_0x4e4880[_0x8c78('0x19')]][_0x8c78('0xc')]=_0x8c78('0x3b');writeDB(agents[_0x4e4880['destuniqueid']]);}}catch(_0x1d78a0){utils[_0x8c78('0x1f')](util[_0x8c78('0x4')](_0x8c78('0x37'),_0x4e4880[_0x8c78('0x6')]),_0x1d78a0);}};exports[_0x8c78('0x3c')]=function(_0x26103c){try{if(!_[_0x8c78('0x3d')](agents[_0x26103c[_0x8c78('0x3e')]])){utils['debug'](util[_0x8c78('0x4')](_0x8c78('0x3f'),_0x26103c[_0x8c78('0x6')]),_0x26103c);utils[_0x8c78('0x3')](util['format'](_0x8c78('0x40'),_0x26103c[_0x8c78('0x6')],agents[_0x26103c[_0x8c78('0x3e')]][_0x8c78('0x8')],agents[_0x26103c['transfereruniqueid']][_0x8c78('0x6')]));agents[_0x26103c[_0x8c78('0x3e')]][_0x8c78('0x41')]=!![];agents[_0x26103c['transfereruniqueid']][_0x8c78('0x42')]='blind';agents[_0x26103c[_0x8c78('0x3e')]][_0x8c78('0x43')]=_0x26103c[_0x8c78('0x44')];agents[_0x26103c[_0x8c78('0x3e')]][_0x8c78('0x45')]=agents[_0x26103c[_0x8c78('0x3e')]][_0x8c78('0x6')];}}catch(_0x38fec1){utils[_0x8c78('0x1f')](util[_0x8c78('0x4')](_0x8c78('0x3f'),_0x26103c[_0x8c78('0x6')]),_0x38fec1);}};exports[_0x8c78('0x46')]=function(_0x18d896){try{utils['debug'](util[_0x8c78('0x4')](_0x8c78('0x47'),_0x18d896[_0x8c78('0x48')]),_0x18d896);if(_0x18d896[_0x8c78('0x48')]==_0x18d896['origtransfererlinkedid']){if(!_[_0x8c78('0x3d')](agents[_0x18d896[_0x8c78('0x49')]])){utils[_0x8c78('0x3')](util[_0x8c78('0x4')](_0x8c78('0x4a'),_0x18d896[_0x8c78('0x48')],agents[_0x18d896['secondtransfereruniqueid']][_0x8c78('0x8')]));agents[_0x18d896[_0x8c78('0x49')]]['transfer']=!![];agents[_0x18d896[_0x8c78('0x49')]]['transfertype']=_0x8c78('0x4b');agents[_0x18d896[_0x8c78('0x49')]][_0x8c78('0x43')]=_0x18d896[_0x8c78('0x4c')];agents[_0x18d896[_0x8c78('0x49')]][_0x8c78('0x45')]=_0x18d896[_0x8c78('0x48')];}if(_0x18d896['transfereeuniqueid']&&agents[_0x18d896[_0x8c78('0x4d')]]){agents[_0x18d896[_0x8c78('0x4d')]]['agententerreason']=0x1;transfers[_0x18d896[_0x8c78('0x4d')]]=_[_0x8c78('0x4e')](agents[_0x18d896['transfereeuniqueid']]);transfers[_0x18d896[_0x8c78('0x4d')]][_0x8c78('0xa')]=agents[_0x18d896[_0x8c78('0x49')]][_0x8c78('0xa')];transfers[_0x18d896[_0x8c78('0x4d')]][_0x8c78('0x4f')]=agents[_0x18d896[_0x8c78('0x49')]][_0x8c78('0x4f')];transfers[_0x18d896[_0x8c78('0x4d')]][_0x8c78('0x1a')]=utils[_0x8c78('0x1b')]();transfers[_0x18d896[_0x8c78('0x4d')]][_0x8c78('0x32')]=utils[_0x8c78('0x1b')]();transfers[_0x18d896['transfereeuniqueid']][_0x8c78('0x24')]=0x0;transfers[_0x18d896['transfereeuniqueid']][_0x8c78('0x50')]=0x2;}}else if(_0x18d896['secondtransfereruniqueid']==_0x18d896['secondtransfererlinkedid']){if(!_['isNil'](agents[_0x18d896[_0x8c78('0x48')]])){utils['info'](util['format']('[%s][agents][attendedtransfer]\x20agent:%s',_0x18d896[_0x8c78('0x48')],agents[_0x18d896[_0x8c78('0x48')]][_0x8c78('0x8')]));agents[_0x18d896[_0x8c78('0x48')]]['transfer']=!![];agents[_0x18d896[_0x8c78('0x48')]][_0x8c78('0x42')]=_0x8c78('0x4b');agents[_0x18d896[_0x8c78('0x48')]][_0x8c78('0x43')]=_0x18d896[_0x8c78('0x51')];agents[_0x18d896[_0x8c78('0x48')]][_0x8c78('0x45')]=_0x18d896[_0x8c78('0x49')];}if(_0x18d896[_0x8c78('0x52')]&&agents[_0x18d896[_0x8c78('0x52')]]){agents[_0x18d896[_0x8c78('0x52')]][_0x8c78('0x50')]=0x1;transfers[_0x18d896[_0x8c78('0x52')]]=_['clone'](agents[_0x18d896[_0x8c78('0x52')]]);transfers[_0x18d896['transfertargetuniqueid']][_0x8c78('0xa')]=agents[_0x18d896[_0x8c78('0x48')]][_0x8c78('0xa')];transfers[_0x18d896['transfertargetuniqueid']][_0x8c78('0x4f')]=agents[_0x18d896[_0x8c78('0x48')]][_0x8c78('0x4f')];transfers[_0x18d896['transfertargetuniqueid']][_0x8c78('0x1a')]=utils[_0x8c78('0x1b')]();transfers[_0x18d896['transfertargetuniqueid']][_0x8c78('0x32')]=utils[_0x8c78('0x1b')]();transfers[_0x18d896[_0x8c78('0x52')]]['holdtime']=0x0;transfers[_0x18d896[_0x8c78('0x52')]][_0x8c78('0x50')]=0x2;}}}catch(_0x1015e8){utils[_0x8c78('0x1f')](util[_0x8c78('0x4')](_0x8c78('0x47'),_0x18d896[_0x8c78('0x48')]),_0x1015e8);}};exports[_0x8c78('0x53')]=function(_0x240f1e){try{utils['debug'](util[_0x8c78('0x4')](_0x8c78('0x54'),_0x240f1e[_0x8c78('0x6')]),_0x240f1e);if(agents[_0x240f1e[_0x8c78('0x6')]]&&agents[_0x240f1e[_0x8c78('0x6')]][_0x8c78('0x2e')]===_0x8c78('0x23')){if(_0x240f1e[_0x8c78('0x55')]==='21'){agents[_0x240f1e[_0x8c78('0x6')]]['reason']=_0x8c78('0x56');agents[_0x240f1e[_0x8c78('0x6')]]['lastevent']='rejected';}utils[_0x8c78('0x3')](util['format'](_0x8c78('0x57'),_0x240f1e[_0x8c78('0x6')],agents[_0x240f1e[_0x8c78('0x6')]][_0x8c78('0x8')],agents[_0x240f1e[_0x8c78('0x6')]][_0x8c78('0x2e')],agents[_0x240f1e['uniqueid']]['lastevent']));writeDB(agents[_0x240f1e[_0x8c78('0x6')]]);var _0x2d385f=unanswered[_0x8c78('0x58')](_0x240f1e[_0x8c78('0x6')]);if(_0x2d385f>-0x1){unanswered[_0x8c78('0x59')](_0x2d385f,0x1);}}if(transfers[_0x240f1e['uniqueid']]){transfers[_0x240f1e[_0x8c78('0x6')]][_0x8c78('0x11')]=!![];transfers[_0x240f1e[_0x8c78('0x6')]][_0x8c78('0x39')]=utils[_0x8c78('0x1b')]();transfers[_0x240f1e[_0x8c78('0x6')]]['talktime']=utils[_0x8c78('0x3a')](transfers[_0x240f1e[_0x8c78('0x6')]]['agentcompleteAt'],transfers[_0x240f1e[_0x8c78('0x6')]][_0x8c78('0x32')]);transfers[_0x240f1e[_0x8c78('0x6')]][_0x8c78('0x2e')]=_0x8c78('0x5a');transfers[_0x240f1e[_0x8c78('0x6')]][_0x8c78('0xc')]=_0x8c78('0x3b');utils[_0x8c78('0x3')](util[_0x8c78('0x4')](_0x8c78('0x57'),_0x240f1e[_0x8c78('0x6')],transfers[_0x240f1e[_0x8c78('0x6')]][_0x8c78('0x8')],transfers[_0x240f1e[_0x8c78('0x6')]][_0x8c78('0x2e')],transfers[_0x240f1e[_0x8c78('0x6')]]['lastevent']));writeDB(transfers[_0x240f1e[_0x8c78('0x6')]],!![]);}if(agents[_0x240f1e['uniqueid']]&&agents[_0x240f1e['uniqueid']][_0x8c78('0x32')]){agents[_0x240f1e[_0x8c78('0x6')]][_0x8c78('0x11')]=!![];agents[_0x240f1e[_0x8c78('0x6')]]['agentcompleteAt']=utils[_0x8c78('0x1b')]();agents[_0x240f1e[_0x8c78('0x6')]][_0x8c78('0x2f')]=utils['diffTime'](agents[_0x240f1e[_0x8c78('0x6')]][_0x8c78('0x39')],agents[_0x240f1e[_0x8c78('0x6')]][_0x8c78('0x32')]);agents[_0x240f1e['uniqueid']][_0x8c78('0x2e')]=agents[_0x240f1e[_0x8c78('0x6')]]['transfer']?'transfer':'agent';agents[_0x240f1e[_0x8c78('0x6')]][_0x8c78('0xc')]=_0x8c78('0x3b');utils[_0x8c78('0x3')](util['format'](_0x8c78('0x57'),_0x240f1e['uniqueid'],agents[_0x240f1e[_0x8c78('0x6')]][_0x8c78('0x8')],agents[_0x240f1e[_0x8c78('0x6')]][_0x8c78('0x2e')],agents[_0x240f1e[_0x8c78('0x6')]][_0x8c78('0xc')]));writeDB(agents[_0x240f1e['uniqueid']]);}}catch(_0x5c67c9){utils['error'](util[_0x8c78('0x4')](_0x8c78('0x54'),_0x240f1e['uniqueid']),_0x5c67c9);}};
\ No newline at end of file
index 1abd329..a67eca4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0x2b10=['transfereechannel','[%s][calls][attendedtransfer]\x20localtwolinkedid:%s\x20destinationchannel:%s','secondtransfererchannel','userfield','_attended','transfertargetchannel','origtransfereruniqueid','origtransfererchannel','[%s][calls][attendedtransfer]','[%s][calls][musiconholdstart]','musiconholdstartAt','[%s][calls][musiconholdstart]\x20musiconholdstartAt:%s','musiconholdstop','[%s][calls][musiconholdstop]','mohtime','[%s][calls][musiconholdstop]\x20mohtime:%s','varset','variable','xmd-originatecalleridnum','value','xmd-phone','destination','xmd-callerid-preview','xmd-callerid','[%s][calls][varset]\x20variable:%s\x20value:%s','xmd-queue','xmcs-queue','Queue','ContactId','xmd-cdrtype','[%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][varset]','newexten','[%s][calls][newexten]','[%s][calls][newexten]\x20application:%s\x20appdata:%s','application','appdata','toLowerCase','set','cdr','split','substring','lastIndexOf','noop','execif','gotoif','lastapplication','lastdata','lodash','./utils','./transfers.controller','NO\x20ANSWER','FAILED','BUSY','blinds','uniqueid','format','[%s][calls][writeDB]\x20channel:%s\x20queue:%s\x20agent:%s\x20interface:%s\x20calleridnum:%s\x20connectedlinenum:%s\x20lastevent:%s','queue','membername','interface','calleridnum','connectedlinenum','accountcode','getUserByInternal','then','request','CreateVoiceCallReport','recording','newchannel','debug','[%s][calls][newchannel]','linkedid','OutgoingSpoolFailed','info','[%s][calls][newchannel]\x20context:%s\x20exten:%s','context','exten','channel','now','DOCUMENTATION','newstate','[%s][calls][newstate]','isNil','channelstate','[%s][calls][newstate]\x20context:%s\x20channel:%s','systemanswertime','transfer','[%s][calls][newstate]\x20linkedid:%s\x20context:%s\x20channel:%s','destinationchannel','answertime','disposition','toNumber','ANSWERED','error','hangup','[%s][calls][hangup]','callerid','[%s][calls][hangup]\x20callerid:%s\x20reason:%s','cause-txt','endtime','duration','diffTime','attendedtransfer','localtwolinkedid'];(function(_0x550d12,_0x5384bd){var _0x12103d=function(_0x2a9834){while(--_0x2a9834){_0x550d12['push'](_0x550d12['shift']());}};_0x12103d(++_0x5384bd);}(_0x2b10,0x114));var _0x02b1=function(_0xcb20f6,_0x2bb36d){_0xcb20f6=_0xcb20f6-0x0;var _0x5375d5=_0x2b10[_0xcb20f6];return _0x5375d5;};'use strict';var _=require(_0x02b1('0x0'));var util=require('util');var utils=require(_0x02b1('0x1'));var transfers=require(_0x02b1('0x2'));var dispositions=[_0x02b1('0x3'),_0x02b1('0x4'),_0x02b1('0x4'),'NO\x20ANSWER',_0x02b1('0x3'),'NO\x20ANSWER','ANSWERED',_0x02b1('0x5'),_0x02b1('0x4'),_0x02b1('0x4'),_0x02b1('0x4')];var channels={};function writeDB(_0x5151bc){var _0x150191;if(transfers[_0x02b1('0x6')][_0x5151bc[_0x02b1('0x7')]]){_0x150191=_0x5151bc[_0x02b1('0x7')];_0x5151bc[_0x02b1('0x7')]=transfers[_0x02b1('0x6')][_0x5151bc[_0x02b1('0x7')]]['transfereeuniqueid'];}utils['info'](util[_0x02b1('0x8')](_0x02b1('0x9'),_0x5151bc[_0x02b1('0x7')],_0x5151bc['channel'],_0x5151bc[_0x02b1('0xa')],_0x5151bc[_0x02b1('0xb')],_0x5151bc[_0x02b1('0xc')],_0x5151bc[_0x02b1('0xd')],_0x5151bc[_0x02b1('0xe')],_0x5151bc['lastevent']));if(_0x5151bc[_0x02b1('0xf')]){utils[_0x02b1('0x10')](_0x5151bc['accountcode'])[_0x02b1('0x11')](function(_0x36de26){if(_0x36de26){_0x5151bc['UserId']=_0x36de26['id'];}utils[_0x02b1('0x12')](_0x02b1('0x13'),_0x5151bc);});}else{utils[_0x02b1('0x12')](_0x02b1('0x13'),_0x5151bc);}if(channels[_0x5151bc[_0x02b1('0x7')]]){delete channels[_0x5151bc[_0x02b1('0x7')]];}else if(_0x150191&&channels[_0x150191]){if(!transfers[_0x02b1('0x6')][_0x150191][_0x02b1('0x14')])delete transfers['blinds'][_0x150191];delete channels[_0x150191];}}exports[_0x02b1('0x15')]=function(_0x3a6cf5){try{utils[_0x02b1('0x16')](util[_0x02b1('0x8')](_0x02b1('0x17'),_0x3a6cf5[_0x02b1('0x7')]),_0x3a6cf5);if(_0x3a6cf5[_0x02b1('0x7')]==_0x3a6cf5[_0x02b1('0x18')]&&_0x3a6cf5['channel']!=_0x02b1('0x19')){utils[_0x02b1('0x1a')](util[_0x02b1('0x8')](_0x02b1('0x1b'),_0x3a6cf5['uniqueid'],_0x3a6cf5[_0x02b1('0x1c')],_0x3a6cf5[_0x02b1('0x1d')]));channels[_0x3a6cf5['uniqueid']]={'uniqueid':_0x3a6cf5[_0x02b1('0x7')],'accountcode':_0x3a6cf5[_0x02b1('0xf')],'source':_0x3a6cf5[_0x02b1('0xd')],'destination':_0x3a6cf5[_0x02b1('0x1d')],'destinationcontext':_0x3a6cf5[_0x02b1('0x1c')],'channel':_0x3a6cf5[_0x02b1('0x1e')],'starttime':utils[_0x02b1('0x1f')](),'answertime':null,'systemanswertime':null,'mohtime':0x0,'disposition':_0x02b1('0x3'),'amaflags':_0x02b1('0x20')};}}catch(_0x29778a){utils['error'](util[_0x02b1('0x8')](_0x02b1('0x17'),_0x3a6cf5[_0x02b1('0x7')]),_0x29778a);}};exports[_0x02b1('0x21')]=function(_0x135c45){try{utils['debug'](util[_0x02b1('0x8')](_0x02b1('0x22'),_0x135c45[_0x02b1('0x7')]),_0x135c45);if(!_[_0x02b1('0x23')](channels[_0x135c45[_0x02b1('0x7')]])&&_0x135c45[_0x02b1('0x24')]==0x6){utils['info'](util[_0x02b1('0x8')](_0x02b1('0x25'),_0x135c45[_0x02b1('0x7')],_0x135c45[_0x02b1('0x1c')],_0x135c45[_0x02b1('0x1e')]));if(_[_0x02b1('0x23')](channels[_0x135c45[_0x02b1('0x7')]][_0x02b1('0x26')])){channels[_0x135c45[_0x02b1('0x7')]]['systemanswertime']=utils[_0x02b1('0x1f')]();}}else if(!_[_0x02b1('0x23')](channels[_0x135c45[_0x02b1('0x18')]])&&_0x135c45[_0x02b1('0x24')]==0x6&&_0x135c45['context']!=_0x02b1('0x27')){utils[_0x02b1('0x1a')](util[_0x02b1('0x8')](_0x02b1('0x28'),_0x135c45['uniqueid'],_0x135c45[_0x02b1('0x18')],_0x135c45[_0x02b1('0x1c')],_0x135c45['channel']));channels[_0x135c45[_0x02b1('0x18')]][_0x02b1('0xf')]=_0x135c45['accountcode'];channels[_0x135c45['linkedid']][_0x02b1('0x29')]=_0x135c45[_0x02b1('0x1e')];if(_['isNil'](channels[_0x135c45[_0x02b1('0x18')]][_0x02b1('0x2a')])){channels[_0x135c45[_0x02b1('0x18')]][_0x02b1('0x2a')]=utils[_0x02b1('0x1f')]();}channels[_0x135c45[_0x02b1('0x18')]][_0x02b1('0x2b')]=dispositions[_[_0x02b1('0x2c')](_0x135c45[_0x02b1('0x24')])]||_0x02b1('0x2d');}}catch(_0x45e802){utils[_0x02b1('0x2e')](util[_0x02b1('0x8')]('[%s][calls][newstate]',_0x135c45[_0x02b1('0x7')]),_0x45e802);}};exports[_0x02b1('0x2f')]=function(_0x22ddcd){try{if(!_[_0x02b1('0x23')](channels[_0x22ddcd['uniqueid']])){utils[_0x02b1('0x16')](util[_0x02b1('0x8')](_0x02b1('0x30'),_0x22ddcd[_0x02b1('0x7')]),_0x22ddcd);if(_['isNil'](channels[_0x22ddcd['uniqueid']][_0x02b1('0x31')])){channels[_0x22ddcd[_0x02b1('0x7')]][_0x02b1('0x31')]=_0x22ddcd['calleridname']+'\x20<'+_0x22ddcd[_0x02b1('0xd')]+'>';}utils[_0x02b1('0x1a')](util['format'](_0x02b1('0x32'),_0x22ddcd[_0x02b1('0x7')],channels[_0x22ddcd['uniqueid']][_0x02b1('0x31')],_0x22ddcd[_0x02b1('0x33')]));channels[_0x22ddcd[_0x02b1('0x7')]][_0x02b1('0x34')]=utils[_0x02b1('0x1f')]();channels[_0x22ddcd[_0x02b1('0x7')]][_0x02b1('0x35')]=utils[_0x02b1('0x36')](channels[_0x22ddcd[_0x02b1('0x7')]][_0x02b1('0x34')],channels[_0x22ddcd['uniqueid']]['starttime']);channels[_0x22ddcd[_0x02b1('0x7')]]['billableseconds']=channels[_0x22ddcd[_0x02b1('0x7')]]['answertime']?utils[_0x02b1('0x36')](channels[_0x22ddcd[_0x02b1('0x7')]]['endtime'],channels[_0x22ddcd[_0x02b1('0x7')]][_0x02b1('0x2a')]):0x0;writeDB(channels[_0x22ddcd[_0x02b1('0x7')]]);}}catch(_0x3580ce){utils[_0x02b1('0x2e')](util[_0x02b1('0x8')](_0x02b1('0x30'),_0x22ddcd['uniqueid']),_0x3580ce);}};exports[_0x02b1('0x37')]=function(_0x251aed){try{if(!_[_0x02b1('0x23')](channels[_0x251aed[_0x02b1('0x38')]])){utils[_0x02b1('0x16')](util['format']('[%s][calls][attendedtransfer]',_0x251aed['origtransfereruniqueid']),_0x251aed);if(channels[_0x251aed[_0x02b1('0x38')]][_0x02b1('0x1e')]==_0x251aed[_0x02b1('0x39')]){utils[_0x02b1('0x1a')](util['format'](_0x02b1('0x3a'),_0x251aed['origtransfereruniqueid'],_0x251aed[_0x02b1('0x38')],_0x251aed[_0x02b1('0x3b')]));channels[_0x251aed[_0x02b1('0x38')]][_0x02b1('0x29')]=_0x251aed[_0x02b1('0x3b')];channels[_0x251aed[_0x02b1('0x38')]][_0x02b1('0x3c')]=_0x02b1('0x3d');}else if(channels[_0x251aed[_0x02b1('0x38')]]['channel']=_0x251aed[_0x02b1('0x3e')]){utils[_0x02b1('0x1a')](util[_0x02b1('0x8')](_0x02b1('0x3a'),_0x251aed[_0x02b1('0x3f')],_0x251aed[_0x02b1('0x38')],_0x251aed[_0x02b1('0x40')]));channels[_0x251aed['localtwolinkedid']][_0x02b1('0x29')]=_0x251aed[_0x02b1('0x40')];channels[_0x251aed['localtwolinkedid']][_0x02b1('0x3c')]=_0x02b1('0x3d');}}}catch(_0x4c8c3f){utils['error'](util[_0x02b1('0x8')](_0x02b1('0x41'),_0x251aed['origtransfereruniqueid']),_0x4c8c3f);}};exports['musiconholdstart']=function(_0x2f3b76){try{if(!_[_0x02b1('0x23')](channels[_0x2f3b76[_0x02b1('0x7')]])){utils[_0x02b1('0x16')](util['format'](_0x02b1('0x42'),_0x2f3b76[_0x02b1('0x7')]),_0x2f3b76);channels[_0x2f3b76[_0x02b1('0x7')]][_0x02b1('0x43')]=utils[_0x02b1('0x1f')]();utils[_0x02b1('0x1a')](util[_0x02b1('0x8')](_0x02b1('0x44'),_0x2f3b76[_0x02b1('0x7')],channels[_0x2f3b76[_0x02b1('0x7')]][_0x02b1('0x43')]));}}catch(_0x55eff1){utils[_0x02b1('0x2e')](util[_0x02b1('0x8')](_0x02b1('0x42'),_0x2f3b76[_0x02b1('0x7')]),_0x55eff1);}};exports[_0x02b1('0x45')]=function(_0x49536f){try{if(!_[_0x02b1('0x23')](channels[_0x49536f[_0x02b1('0x7')]])){utils[_0x02b1('0x16')](util[_0x02b1('0x8')](_0x02b1('0x46'),_0x49536f['uniqueid']),_0x49536f);if(!_[_0x02b1('0x23')](channels[_0x49536f[_0x02b1('0x7')]][_0x02b1('0x43')])){channels[_0x49536f[_0x02b1('0x7')]][_0x02b1('0x47')]+=utils[_0x02b1('0x36')](utils[_0x02b1('0x1f')](),channels[_0x49536f[_0x02b1('0x7')]]['musiconholdstartAt']);utils[_0x02b1('0x1a')](util[_0x02b1('0x8')](_0x02b1('0x48'),_0x49536f['uniqueid'],channels[_0x49536f['uniqueid']][_0x02b1('0x47')]));delete channels[_0x49536f['uniqueid']][_0x02b1('0x43')];}}}catch(_0x50e825){utils['error'](util[_0x02b1('0x8')](_0x02b1('0x46'),_0x49536f[_0x02b1('0x7')]),_0x50e825);}};exports[_0x02b1('0x49')]=function(_0x418ab9){try{if(!_['isNil'](channels[_0x418ab9[_0x02b1('0x7')]])){utils[_0x02b1('0x16')](util[_0x02b1('0x8')]('[%s][calls][varset]',_0x418ab9['uniqueid']),_0x418ab9);if(!_[_0x02b1('0x23')](_0x418ab9[_0x02b1('0x4a')][_0x02b1('0x4b')])){utils[_0x02b1('0x1a')](util[_0x02b1('0x8')]('[%s][calls][varset]\x20variable:xmd-originatecalleridnum\x20value:%s',_0x418ab9['uniqueid'],_0x418ab9['value']));channels[_0x418ab9[_0x02b1('0x7')]]['source']=_0x418ab9[_0x02b1('0x4c')];}if(!_[_0x02b1('0x23')](_0x418ab9[_0x02b1('0x4a')][_0x02b1('0x4d')])){utils[_0x02b1('0x1a')](util[_0x02b1('0x8')]('[%s][calls][varset]\x20variable:xmd-phone\x20value:%s',_0x418ab9['uniqueid'],_0x418ab9[_0x02b1('0x4c')]));channels[_0x418ab9[_0x02b1('0x7')]][_0x02b1('0x4e')]=_0x418ab9[_0x02b1('0x4c')];channels[_0x418ab9['uniqueid']][_0x02b1('0x31')]='\x22'+_0x418ab9[_0x02b1('0x4c')]+'\x22\x20<'+_0x418ab9[_0x02b1('0x4c')]+'>';}if(!_[_0x02b1('0x23')](_0x418ab9[_0x02b1('0x4a')][_0x02b1('0x4f')])||!_[_0x02b1('0x23')](_0x418ab9['variable'][_0x02b1('0x50')])){utils[_0x02b1('0x1a')](util[_0x02b1('0x8')](_0x02b1('0x51'),_0x418ab9[_0x02b1('0x7')],!_[_0x02b1('0x23')](_0x418ab9[_0x02b1('0x4a')][_0x02b1('0x4f')])?_0x02b1('0x4f'):_0x02b1('0x50'),_0x418ab9[_0x02b1('0x4c')]));channels[_0x418ab9[_0x02b1('0x7')]][_0x02b1('0x31')]=_0x418ab9[_0x02b1('0x4c')];}if(!_[_0x02b1('0x23')](_0x418ab9[_0x02b1('0x4a')][_0x02b1('0x52')])||!_[_0x02b1('0x23')](_0x418ab9[_0x02b1('0x4a')]['xmcs-queue'])){utils[_0x02b1('0x1a')](util['format'](_0x02b1('0x51'),_0x418ab9[_0x02b1('0x7')],!_[_0x02b1('0x23')](_0x418ab9[_0x02b1('0x4a')][_0x02b1('0x52')])?_0x02b1('0x52'):_0x02b1('0x53'),_0x418ab9['value']));channels[_0x418ab9[_0x02b1('0x7')]]['lastapplication']=_0x02b1('0x54');channels[_0x418ab9['uniqueid']]['lastdata']=_0x418ab9[_0x02b1('0x4c')];channels[_0x418ab9[_0x02b1('0x7')]]['queue']=!![];}if(!_[_0x02b1('0x23')](_0x418ab9[_0x02b1('0x4a')]['xmd-contactid'])){utils[_0x02b1('0x1a')](util['format']('[%s][calls][varset]\x20variable:xmd-contactid\x20value:%s',_0x418ab9[_0x02b1('0x7')],_0x418ab9['value']));channels[_0x418ab9[_0x02b1('0x7')]][_0x02b1('0x55')]=_0x418ab9['value'];}if(!_[_0x02b1('0x23')](_0x418ab9[_0x02b1('0x4a')][_0x02b1('0x56')])){utils[_0x02b1('0x1a')](util[_0x02b1('0x8')](_0x02b1('0x57'),_0x418ab9[_0x02b1('0x7')],_0x418ab9[_0x02b1('0x4c')]));channels[_0x418ab9[_0x02b1('0x7')]][_0x02b1('0x58')]=_0x418ab9[_0x02b1('0x4c')];}if(!_[_0x02b1('0x23')](_0x418ab9['variable'][_0x02b1('0x59')])){utils['info'](util['format'](_0x02b1('0x5a'),_0x418ab9['uniqueid'],_0x418ab9[_0x02b1('0x4c')]));channels[_0x418ab9['uniqueid']][_0x02b1('0x5b')]=_0x418ab9[_0x02b1('0x4c')];}if(!_['isNil'](_0x418ab9[_0x02b1('0x4a')][_0x02b1('0x5c')])){utils[_0x02b1('0x1a')](util['format'](_0x02b1('0x5d'),_0x418ab9['uniqueid'],_0x418ab9[_0x02b1('0x4c')]));channels[_0x418ab9['uniqueid']]['sipcallid']=_0x418ab9[_0x02b1('0x4c')];}}}catch(_0x3d6678){utils[_0x02b1('0x2e')](util[_0x02b1('0x8')](_0x02b1('0x5e'),_0x418ab9[_0x02b1('0x7')]),_0x3d6678);}};exports[_0x02b1('0x5f')]=function(_0xbab82b){try{if(!_['isNil'](channels[_0xbab82b[_0x02b1('0x7')]])){utils['debug'](util['format'](_0x02b1('0x60'),_0xbab82b[_0x02b1('0x7')]),_0xbab82b);utils[_0x02b1('0x1a')](util[_0x02b1('0x8')](_0x02b1('0x61'),_0xbab82b[_0x02b1('0x7')],_0xbab82b[_0x02b1('0x62')],_0xbab82b[_0x02b1('0x63')]));if(_0xbab82b[_0x02b1('0x62')][_0x02b1('0x64')]()==_0x02b1('0x65')&&_['startsWith'](_0xbab82b['appdata'][_0x02b1('0x64')](),_0x02b1('0x66'))){var _0x255871=_0xbab82b[_0x02b1('0x63')][_0x02b1('0x67')]('=');var _0x18175f=_0x255871[0x0][_0x02b1('0x68')](_0x255871[0x0][_0x02b1('0x69')]('(')+0x1,_0x255871[0x0]['lastIndexOf'](')'));var _0x1ad9e5=_0x255871[0x1];channels[_0xbab82b[_0x02b1('0x7')]][_0x18175f]=_0x1ad9e5;}if(!_['includes']([_0x02b1('0x2f'),_0x02b1('0x6a'),_0x02b1('0x6b'),_0x02b1('0x65'),_0x02b1('0x6c')],_0xbab82b[_0x02b1('0x62')][_0x02b1('0x64')]())){channels[_0xbab82b['uniqueid']][_0x02b1('0x6d')]=_0xbab82b[_0x02b1('0x62')];channels[_0xbab82b['uniqueid']][_0x02b1('0x6e')]=_0xbab82b[_0x02b1('0x63')];}}}catch(_0x1e14ff){utils[_0x02b1('0x2e')](util[_0x02b1('0x8')](_0x02b1('0x60'),_0xbab82b[_0x02b1('0x7')]),_0x1e14ff);}};
\ No newline at end of file
index e3cb8ca..f552660 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0xdd0a=['./utils','info','shutdown','[core]\x20shutdown','fullybooted','[core]\x20fullybooted','error','[core]\x20error','close'];(function(_0x5292ee,_0x4f1bb3){var _0x548226=function(_0x364c47){while(--_0x364c47){_0x5292ee['push'](_0x5292ee['shift']());}};_0x548226(++_0x4f1bb3);}(_0xdd0a,0x144));var _0xadd0=function(_0xf8631c,_0x15eeef){_0xf8631c=_0xf8631c-0x0;var _0x446edf=_0xdd0a[_0xf8631c];return _0x446edf;};'use strict';var utils=require(_0xadd0('0x0'));exports['connect']=function(){utils[_0xadd0('0x1')]('[core]\x20connected');};exports[_0xadd0('0x2')]=function(){utils[_0xadd0('0x1')](_0xadd0('0x3'));};exports[_0xadd0('0x4')]=function(){utils[_0xadd0('0x1')](_0xadd0('0x5'));};exports[_0xadd0('0x6')]=function(_0x5894ef){utils[_0xadd0('0x6')](_0xadd0('0x7'),_0x5894ef);};exports[_0xadd0('0x8')]=function(){utils['info']('[core]\x20close');};exports['managerevent']=function(_0x416152){};
\ No newline at end of file
index d8b8c03..f10b858 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0xbe6b=['[%s][dials][newexten]\x20application:%s\x20appdata:%s','application','appdata','toLowerCase','set','startsWith','cdr(routeid)','split','varset','debug','[%s][dials][varset]','isNil','variable','outboundrouteid','[%s][dials][varset]\x20variable:outboundrouteid\x20value:%s','value','error','dialbegin','assign','now','lastevent','[%s][dials][hangup]\x20starttime:%s\x20lastevent:called','starttime','[%s][dials][dialbegin]','dialend','[%s][dials][dialend]','ANSWER','answertime','connect','[%s][dials][dialend]\x20dialstatus:%s\x20answertime:%s\x20lastevent:connect','[%s][dials][dialend]\x20dialstatus:%s','hangup','[%s][dials][hangup]\x20calleridnum:%s\x20calleridname:%s\x20lastevent:complete\x20reason:%s','calleridnum','calleridname','cause-txt','complete','duration','diffTime','endtime','holdtime','[%s][dials][hangup]','lodash','./utils','info','format','uniqueid','channel','dialstring','dialstatus','request','CreateVoiceDialReport','newexten','[%s][dials][newexten]'];(function(_0x5f0089,_0x227e2c){var _0x193892=function(_0x24051f){while(--_0x24051f){_0x5f0089['push'](_0x5f0089['shift']());}};_0x193892(++_0x227e2c);}(_0xbe6b,0x1da));var _0xbbe6=function(_0x87f196,_0x2e10fa){_0x87f196=_0x87f196-0x0;var _0x28eefc=_0xbe6b[_0x87f196];return _0x28eefc;};'use strict';var _=require(_0xbbe6('0x0'));var util=require('util');var utils=require(_0xbbe6('0x1'));var dials={};function writeDB(_0x462902){utils[_0xbbe6('0x2')](util[_0xbbe6('0x3')]('[%s][dials][writeDB]\x20channel:%s\x20dialstring:%s\x20calleridnum:%s\x20connectedlinenum:%s\x20dialstatus:%s',_0x462902[_0xbbe6('0x4')],_0x462902[_0xbbe6('0x5')],_0x462902[_0xbbe6('0x6')],_0x462902['calleridnum'],_0x462902['connectedlinenum'],_0x462902[_0xbbe6('0x7')]));utils[_0xbbe6('0x8')](_0xbbe6('0x9'),_0x462902);delete dials[_0x462902['uniqueid']];}exports[_0xbbe6('0xa')]=function(_0x1f1fa1){try{utils['debug'](util[_0xbbe6('0x3')](_0xbbe6('0xb'),_0x1f1fa1[_0xbbe6('0x4')]),_0x1f1fa1);utils[_0xbbe6('0x2')](util['format'](_0xbbe6('0xc'),_0x1f1fa1[_0xbbe6('0x4')],_0x1f1fa1[_0xbbe6('0xd')],_0x1f1fa1[_0xbbe6('0xe')]));if(_0x1f1fa1['application'][_0xbbe6('0xf')]()==_0xbbe6('0x10')&&_[_0xbbe6('0x11')](_0x1f1fa1[_0xbbe6('0xe')][_0xbbe6('0xf')](),_0xbbe6('0x12'))){var _0x2d452d=_0x1f1fa1[_0xbbe6('0xe')][_0xbbe6('0x13')]('=');dials[_0x1f1fa1[_0xbbe6('0x4')]]={'routeId':_0x2d452d[0x1]};}}catch(_0x5f8865){utils['error'](util['format']('[%s][dials][newexten]',_0x1f1fa1['uniqueid']),_0x5f8865);}};exports[_0xbbe6('0x14')]=function(_0x5a6668){try{utils[_0xbbe6('0x15')](util[_0xbbe6('0x3')](_0xbbe6('0x16'),_0x5a6668[_0xbbe6('0x4')]),_0x5a6668);if(!_[_0xbbe6('0x17')](_0x5a6668[_0xbbe6('0x18')][_0xbbe6('0x19')])){utils[_0xbbe6('0x2')](util[_0xbbe6('0x3')](_0xbbe6('0x1a'),_0x5a6668[_0xbbe6('0x4')],_0x5a6668[_0xbbe6('0x1b')]));dials[_0x5a6668[_0xbbe6('0x4')]]={'routeId':_0x5a6668['value']};}}catch(_0x35e5ad){utils[_0xbbe6('0x1c')](util[_0xbbe6('0x3')](_0xbbe6('0x16'),_0x5a6668[_0xbbe6('0x4')]),_0x35e5ad);}};exports[_0xbbe6('0x1d')]=function(_0x408648){try{if(!_[_0xbbe6('0x17')](dials[_0x408648['uniqueid']])){utils[_0xbbe6('0x15')](util[_0xbbe6('0x3')]('[%s][dials][dialbegin]',_0x408648['uniqueid']),_0x408648);dials[_0x408648[_0xbbe6('0x4')]]=_[_0xbbe6('0x1e')](dials[_0x408648[_0xbbe6('0x4')]],_0x408648);dials[_0x408648[_0xbbe6('0x4')]]['starttime']=utils[_0xbbe6('0x1f')]();dials[_0x408648['uniqueid']][_0xbbe6('0x20')]='called';utils['info'](util[_0xbbe6('0x3')](_0xbbe6('0x21'),_0x408648[_0xbbe6('0x4')],dials[_0x408648[_0xbbe6('0x4')]][_0xbbe6('0x22')]));}}catch(_0x344e87){utils[_0xbbe6('0x1c')](util['format'](_0xbbe6('0x23'),_0x408648[_0xbbe6('0x4')]),_0x344e87);}};exports[_0xbbe6('0x24')]=function(_0x18d6a7){try{if(!_[_0xbbe6('0x17')](dials[_0x18d6a7[_0xbbe6('0x4')]])){utils[_0xbbe6('0x15')](util[_0xbbe6('0x3')](_0xbbe6('0x25'),_0x18d6a7[_0xbbe6('0x4')]),_0x18d6a7);dials[_0x18d6a7[_0xbbe6('0x4')]]['dialstatus']=_0x18d6a7[_0xbbe6('0x7')];if(_0x18d6a7[_0xbbe6('0x7')]==_0xbbe6('0x26')){dials[_0x18d6a7[_0xbbe6('0x4')]]=_[_0xbbe6('0x1e')](dials[_0x18d6a7[_0xbbe6('0x4')]],_0x18d6a7);dials[_0x18d6a7[_0xbbe6('0x4')]][_0xbbe6('0x27')]=utils['now']();dials[_0x18d6a7['uniqueid']][_0xbbe6('0x20')]=_0xbbe6('0x28');utils[_0xbbe6('0x2')](util['format'](_0xbbe6('0x29'),_0x18d6a7['uniqueid'],_0x18d6a7[_0xbbe6('0x7')],dials[_0x18d6a7[_0xbbe6('0x4')]][_0xbbe6('0x27')]));}else{utils[_0xbbe6('0x2')](util[_0xbbe6('0x3')](_0xbbe6('0x2a'),_0x18d6a7[_0xbbe6('0x4')],_0x18d6a7[_0xbbe6('0x7')]));}}}catch(_0xc455bf){utils['error'](util[_0xbbe6('0x3')](_0xbbe6('0x25'),_0x18d6a7['uniqueid']),_0xc455bf);}};exports[_0xbbe6('0x2b')]=function(_0x197bb8){try{if(!_[_0xbbe6('0x17')](dials[_0x197bb8[_0xbbe6('0x4')]])){utils[_0xbbe6('0x15')](util[_0xbbe6('0x3')]('[%s][dials][hangup]',_0x197bb8[_0xbbe6('0x4')]),_0x197bb8);utils[_0xbbe6('0x2')](util[_0xbbe6('0x3')](_0xbbe6('0x2c'),_0x197bb8[_0xbbe6('0x4')],_0x197bb8[_0xbbe6('0x2d')],_0x197bb8[_0xbbe6('0x2e')],_0x197bb8[_0xbbe6('0x2f')]));dials[_0x197bb8[_0xbbe6('0x4')]]=_[_0xbbe6('0x1e')](dials[_0x197bb8[_0xbbe6('0x4')]],{'endtime':utils[_0xbbe6('0x1f')](),'lastevent':_0xbbe6('0x30')});dials[_0x197bb8[_0xbbe6('0x4')]][_0xbbe6('0x31')]=utils[_0xbbe6('0x32')](dials[_0x197bb8[_0xbbe6('0x4')]][_0xbbe6('0x33')],dials[_0x197bb8[_0xbbe6('0x4')]]['starttime']);dials[_0x197bb8['uniqueid']][_0xbbe6('0x34')]=utils[_0xbbe6('0x32')](dials[_0x197bb8['uniqueid']][_0xbbe6('0x27')]||dials[_0x197bb8[_0xbbe6('0x4')]][_0xbbe6('0x33')],dials[_0x197bb8[_0xbbe6('0x4')]][_0xbbe6('0x22')]);dials[_0x197bb8[_0xbbe6('0x4')]]['billableseconds']=dials[_0x197bb8[_0xbbe6('0x4')]][_0xbbe6('0x27')]?utils['diffTime'](dials[_0x197bb8['uniqueid']]['endtime'],dials[_0x197bb8[_0xbbe6('0x4')]]['answertime']):0x0;writeDB(dials[_0x197bb8[_0xbbe6('0x4')]]);}}catch(_0x23c8ac){utils[_0xbbe6('0x1c')](util[_0xbbe6('0x3')](_0xbbe6('0x35'),_0x197bb8[_0xbbe6('0x4')]),_0x23c8ac);}};
\ No newline at end of file
index f2ccd41..5ded354 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0xad83=['agentringnoanswer','[%s][index][agentringnoanswer]','agentconnect','[%s][index][agentconnect]','agentcomplete','[%s][index][agentcomplete]','[%s][index][queuecallerabandon]','queuecallerabandon','queuecallerjoin','[%s][index][queuecallerjoin]','[%s][index][queuecallerleave]','queuecallerleave','musiconholdstart','[%s][index][musiconholdstart]','musiconholdstop','[%s][index][musiconholdstop]','[%s][index][newstate]','newstate','hangup','[%s][index][hangup]','cdr','[%s][index][cdr]','[%s][index][blindtransfer]','blindtransfer','attendedtransfer','[%s][index][attendedtransfer]','origtransfereruniqueid','[%s][index][varset]','varset','newexten','[%s][index][newexten]','newchannel','[%s][index][newchannel]','dialbegin','[%s][index][dialbegin]','dialend','[%s][index][dialend]','asterisk-manager','../../config/environment','./utils','util','xdr','disabled','env','asterisk','port','username','keepConnected','XDR\x20DISABLED','info','./agents.controller','./calls.controller','./queues.controller','./recordings.controller','./members.controller','./dials.controller','./transfers.controller','connect','shutdown','fullybooted','error','close','managerevent','devicestatechange','debug','format','[%s][index][devicestatechange]','device','[%s][index][agentcalled]','uniqueid','agentcalled'];(function(_0x5a8400,_0x218b4c){var _0x28b15d=function(_0x4745f6){while(--_0x4745f6){_0x5a8400['push'](_0x5a8400['shift']());}};_0x28b15d(++_0x218b4c);}(_0xad83,0x6c));var _0x3ad8=function(_0x46a1e5,_0x4e12aa){_0x46a1e5=_0x46a1e5-0x0;var _0x189b6f=_0xad83[_0x46a1e5];return _0x189b6f;};var AsteriskManager=require(_0x3ad8('0x0'));var config=require(_0x3ad8('0x1'));var utils=require(_0x3ad8('0x2'));var util=require(_0x3ad8('0x3'));var isXDREnabled=config[_0x3ad8('0x4')]&&config[_0x3ad8('0x4')][_0x3ad8('0x5')]?!config[_0x3ad8('0x4')][_0x3ad8('0x5')]:!![];var isProduction=config[_0x3ad8('0x6')]==='production'||![];var isLocalAsterisk=config['xdr']&&config[_0x3ad8('0x4')]['local']===!![]||![];var ami=new AsteriskManager(config[_0x3ad8('0x7')][_0x3ad8('0x8')],config[_0x3ad8('0x7')]['ip'],config[_0x3ad8('0x7')][_0x3ad8('0x9')],config['asterisk']['password'],!![]);ami[_0x3ad8('0xa')]();if(!isXDREnabled){utils['info'](_0x3ad8('0xb'));}else if(!isProduction&&!isLocalAsterisk){utils[_0x3ad8('0xc')]('Asterisk\x20disabled\x20on\x20localhost');}else{var agents=require(_0x3ad8('0xd'));var calls=require(_0x3ad8('0xe'));var queues=require(_0x3ad8('0xf'));var recordings=require(_0x3ad8('0x10'));var members=require(_0x3ad8('0x11'));var dials=require(_0x3ad8('0x12'));var transfers=require(_0x3ad8('0x13'));var core=require('./core.controller');ami['on'](_0x3ad8('0x14'),core[_0x3ad8('0x14')]);ami['on'](_0x3ad8('0x15'),core[_0x3ad8('0x15')]);ami['on'](_0x3ad8('0x16'),core['fullybooted']);ami['on'](_0x3ad8('0x17'),core['error']);ami['on'](_0x3ad8('0x18'),core['close']);ami['on']('managerevent',core[_0x3ad8('0x19')]);ami['on'](_0x3ad8('0x1a'),function(_0x137c68){try{utils[_0x3ad8('0x1b')](util[_0x3ad8('0x1c')](_0x3ad8('0x1d'),_0x137c68[_0x3ad8('0x1e')]),_0x137c68);members[_0x3ad8('0x1a')](_0x137c68);}catch(_0x2feb94){utils['error'](util[_0x3ad8('0x1c')](_0x3ad8('0x1d'),_0x137c68[_0x3ad8('0x1e')]),_0x2feb94);}});ami['on']('agentcalled',function(_0xeb6657){try{utils['debug'](util['format'](_0x3ad8('0x1f'),_0xeb6657[_0x3ad8('0x20')]),_0xeb6657);agents[_0x3ad8('0x21')](_0xeb6657);}catch(_0x256cb8){utils[_0x3ad8('0x17')](util[_0x3ad8('0x1c')]('[%s][index][agentcalled]',_0xeb6657['uniqueid']),_0x256cb8);}});ami['on'](_0x3ad8('0x22'),function(_0x4c4f86){try{utils[_0x3ad8('0x1b')](util[_0x3ad8('0x1c')](_0x3ad8('0x23'),_0x4c4f86[_0x3ad8('0x20')]),_0x4c4f86);agents[_0x3ad8('0x22')](_0x4c4f86);}catch(_0xb6b1f8){utils[_0x3ad8('0x17')](util['format'](_0x3ad8('0x23'),_0x4c4f86[_0x3ad8('0x20')]),_0xb6b1f8);}});ami['on'](_0x3ad8('0x24'),function(_0xe06b0){try{utils[_0x3ad8('0x1b')](util[_0x3ad8('0x1c')](_0x3ad8('0x25'),_0xe06b0['uniqueid']),_0xe06b0);agents[_0x3ad8('0x24')](_0xe06b0);queues[_0x3ad8('0x24')](_0xe06b0);}catch(_0xd7842f){utils[_0x3ad8('0x17')](util[_0x3ad8('0x1c')]('[%s][index][agentconnect]',_0xe06b0[_0x3ad8('0x20')]),_0xd7842f);}});ami['on'](_0x3ad8('0x26'),function(_0x45090a){try{utils['debug'](util['format'](_0x3ad8('0x27'),_0x45090a[_0x3ad8('0x20')]),_0x45090a);agents[_0x3ad8('0x26')](_0x45090a);queues['agentcomplete'](_0x45090a);members['agentcomplete'](_0x45090a);}catch(_0x2f39e3){utils[_0x3ad8('0x17')](util[_0x3ad8('0x1c')](_0x3ad8('0x27'),_0x45090a[_0x3ad8('0x20')]),_0x2f39e3);}});ami['on']('queuecallerabandon',function(_0x1b5410){try{utils[_0x3ad8('0x1b')](util[_0x3ad8('0x1c')](_0x3ad8('0x28'),_0x1b5410[_0x3ad8('0x20')]),_0x1b5410);agents[_0x3ad8('0x29')](_0x1b5410);queues[_0x3ad8('0x29')](_0x1b5410);}catch(_0x51f6df){utils['error'](util[_0x3ad8('0x1c')](_0x3ad8('0x28'),_0x1b5410['uniqueid']),_0x51f6df);}});ami['on'](_0x3ad8('0x2a'),function(_0x495978){try{utils['debug'](util[_0x3ad8('0x1c')](_0x3ad8('0x2b'),_0x495978['uniqueid']),_0x495978);queues[_0x3ad8('0x2a')](_0x495978);recordings[_0x3ad8('0x2a')](_0x495978);}catch(_0x4252bf){utils['error'](util[_0x3ad8('0x1c')](_0x3ad8('0x2b'),_0x495978[_0x3ad8('0x20')]),_0x4252bf);}});ami['on']('queuecallerleave',function(_0x219b55){try{utils[_0x3ad8('0x1b')](util[_0x3ad8('0x1c')](_0x3ad8('0x2c'),_0x219b55['uniqueid']),_0x219b55);queues[_0x3ad8('0x2d')](_0x219b55);}catch(_0x223364){utils[_0x3ad8('0x17')](util[_0x3ad8('0x1c')]('[%s][index][queuecallerleave]',_0x219b55[_0x3ad8('0x20')]),_0x223364);}});ami['on'](_0x3ad8('0x2e'),function(_0x99fd64){try{utils[_0x3ad8('0x1b')](util[_0x3ad8('0x1c')](_0x3ad8('0x2f'),_0x99fd64[_0x3ad8('0x20')]),_0x99fd64);queues['musiconholdstart'](_0x99fd64);calls[_0x3ad8('0x2e')](_0x99fd64);}catch(_0x561663){utils[_0x3ad8('0x17')](util[_0x3ad8('0x1c')](_0x3ad8('0x2f'),_0x99fd64[_0x3ad8('0x20')]),_0x561663);}});ami['on'](_0x3ad8('0x30'),function(_0x281c81){try{utils[_0x3ad8('0x1b')](util[_0x3ad8('0x1c')](_0x3ad8('0x31'),_0x281c81['uniqueid']),_0x281c81);queues[_0x3ad8('0x30')](_0x281c81);calls['musiconholdstop'](_0x281c81);}catch(_0x38293d){utils[_0x3ad8('0x17')](util[_0x3ad8('0x1c')](_0x3ad8('0x31'),_0x281c81['uniqueid']),_0x38293d);}});ami['on']('newstate',function(_0x9ced32){try{utils[_0x3ad8('0x1b')](util[_0x3ad8('0x1c')](_0x3ad8('0x32'),_0x9ced32[_0x3ad8('0x20')]),_0x9ced32);calls[_0x3ad8('0x33')](_0x9ced32);recordings[_0x3ad8('0x33')](_0x9ced32);}catch(_0xc95824){utils[_0x3ad8('0x17')](util['format'](_0x3ad8('0x32'),_0x9ced32[_0x3ad8('0x20')]),_0xc95824);}});ami['on'](_0x3ad8('0x34'),function(_0xc1071a){try{utils[_0x3ad8('0x1b')](util[_0x3ad8('0x1c')](_0x3ad8('0x35'),_0xc1071a['uniqueid']),_0xc1071a);calls[_0x3ad8('0x34')](_0xc1071a);recordings[_0x3ad8('0x34')](_0xc1071a);dials['hangup'](_0xc1071a);agents[_0x3ad8('0x34')](_0xc1071a);queues['hangup'](_0xc1071a);}catch(_0x359eb4){utils[_0x3ad8('0x17')](util[_0x3ad8('0x1c')](_0x3ad8('0x35'),_0xc1071a[_0x3ad8('0x20')]),_0x359eb4);}});ami['on'](_0x3ad8('0x36'),function(_0x3930f6){try{utils[_0x3ad8('0x1b')](util[_0x3ad8('0x1c')](_0x3ad8('0x37'),_0x3930f6[_0x3ad8('0x20')]),_0x3930f6);members['cdr'](_0x3930f6);}catch(_0x3afb44){utils[_0x3ad8('0x17')](util[_0x3ad8('0x1c')](_0x3ad8('0x37'),_0x3930f6[_0x3ad8('0x20')]),_0x3afb44);}});ami['on']('blindtransfer',function(_0x481dd5){try{utils[_0x3ad8('0x1b')](util['format'](_0x3ad8('0x38'),_0x481dd5['uniqueid']),_0x481dd5);queues[_0x3ad8('0x39')](_0x481dd5);agents[_0x3ad8('0x39')](_0x481dd5);transfers[_0x3ad8('0x39')](_0x481dd5);recordings[_0x3ad8('0x39')](_0x481dd5);}catch(_0xcf6287){utils[_0x3ad8('0x17')](util['format']('[%s][index][blindtransfer]',_0x481dd5[_0x3ad8('0x20')]),_0xcf6287);}});ami['on'](_0x3ad8('0x3a'),function(_0x5758d6){try{utils[_0x3ad8('0x1b')](util[_0x3ad8('0x1c')](_0x3ad8('0x3b'),_0x5758d6[_0x3ad8('0x3c')]),_0x5758d6);queues['attendedtransfer'](_0x5758d6);transfers['attendedtransfer'](_0x5758d6);agents['attendedtransfer'](_0x5758d6);calls[_0x3ad8('0x3a')](_0x5758d6);}catch(_0x35cf8e){utils[_0x3ad8('0x17')](util['format'](_0x3ad8('0x3b'),_0x5758d6['origtransfereruniqueid']),_0x35cf8e);}});ami['on']('varset',function(_0x2fc679){try{utils[_0x3ad8('0x1b')](util[_0x3ad8('0x1c')](_0x3ad8('0x3d'),_0x2fc679[_0x3ad8('0x20')]),_0x2fc679);queues['varset'](_0x2fc679);recordings[_0x3ad8('0x3e')](_0x2fc679);calls[_0x3ad8('0x3e')](_0x2fc679);dials[_0x3ad8('0x3e')](_0x2fc679);}catch(_0x5d734b){utils[_0x3ad8('0x17')](util[_0x3ad8('0x1c')](_0x3ad8('0x3d'),_0x2fc679[_0x3ad8('0x20')]),_0x5d734b);}});ami['on'](_0x3ad8('0x3f'),function(_0x3eb9e2){try{utils['debug'](util[_0x3ad8('0x1c')](_0x3ad8('0x40'),_0x3eb9e2[_0x3ad8('0x20')]),_0x3eb9e2);calls['newexten'](_0x3eb9e2);recordings[_0x3ad8('0x3f')](_0x3eb9e2);dials[_0x3ad8('0x3f')](_0x3eb9e2);}catch(_0x278f6b){utils[_0x3ad8('0x17')](util['format'](_0x3ad8('0x40'),_0x3eb9e2[_0x3ad8('0x20')]),_0x278f6b);}});ami['on'](_0x3ad8('0x41'),function(_0x143b8c){try{utils['debug'](util[_0x3ad8('0x1c')](_0x3ad8('0x42'),_0x143b8c['uniqueid']),_0x143b8c);calls[_0x3ad8('0x41')](_0x143b8c);recordings[_0x3ad8('0x41')](_0x143b8c);}catch(_0x237660){utils[_0x3ad8('0x17')](util[_0x3ad8('0x1c')](_0x3ad8('0x42'),_0x143b8c[_0x3ad8('0x20')]),_0x237660);}});ami['on'](_0x3ad8('0x43'),function(_0x90f1ae){try{utils[_0x3ad8('0x1b')](util[_0x3ad8('0x1c')](_0x3ad8('0x44'),_0x90f1ae['uniqueid']),_0x90f1ae);dials[_0x3ad8('0x43')](_0x90f1ae);}catch(_0x8bc4c5){utils[_0x3ad8('0x17')](util[_0x3ad8('0x1c')]('[%s]dialbegin',_0x90f1ae[_0x3ad8('0x20')]),_0x8bc4c5);}});ami['on'](_0x3ad8('0x45'),function(_0x38c566){try{utils[_0x3ad8('0x1b')](util[_0x3ad8('0x1c')](_0x3ad8('0x46'),_0x38c566[_0x3ad8('0x20')]),_0x38c566);dials['dialend'](_0x38c566);}catch(_0x566efd){utils['error'](util[_0x3ad8('0x1c')](_0x3ad8('0x46'),_0x38c566[_0x3ad8('0x20')]),_0x566efd);}});}
\ No newline at end of file
index 6b29e48..0e43305 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0x3146=['uniqueid','interface','data2','membername','type','getUserByInterface','then','name','internal','request','CreateMemberReport','split','catch','format','[%s][members][writeDB]','some','devicestatechange','debug','[%s][members][devicestatechange]','device','[%s][members][devicestatechange]\x20state:%s\x20interface:%s','state','INUSE','BUSY','TALKING','now','agent','NOT_INUSE','isNil','duration','diffTime','enterAt','error','agentcomplete','[%s][members][agentcomplete]\x20interface:%s\x20queue:%s','queue','assign','[%s][members][agentcomplete]','[%s][members][cdr]','channel','source','destination','[%s][members][cdr]\x20type:%s\x20source:%s\x20destination:%s','data1','exitAt','destinationchannel','data3','lodash','./utils','Local/_attended@transfer','Queue:','info','[%s][members][writeDB]\x20interface:%s\x20channel:%s\x20data2:%s\x20agent:%s\x20type:%s'];(function(_0x2d9c6a,_0x59393d){var _0xf3c918=function(_0x4f3f26){while(--_0x4f3f26){_0x2d9c6a['push'](_0x2d9c6a['shift']());}};_0xf3c918(++_0x59393d);}(_0x3146,0x16d));var _0x6314=function(_0x575bbc,_0x1d6ddc){_0x575bbc=_0x575bbc-0x0;var _0x5920b8=_0x3146[_0x575bbc];return _0x5920b8;};'use strict';var _=require(_0x6314('0x0'));var util=require('util');var utils=require(_0x6314('0x1'));var members={};var exclude=[_0x6314('0x2'),_0x6314('0x3')];function writeDB(_0xe71606){utils[_0x6314('0x4')](util['format'](_0x6314('0x5'),_0xe71606[_0x6314('0x6')],_0xe71606[_0x6314('0x7')],_0xe71606['channel'],_0xe71606[_0x6314('0x8')],_0xe71606[_0x6314('0x9')],_0xe71606[_0x6314('0xa')]));if(_0xe71606['interface']){utils[_0x6314('0xb')](_0xe71606['interface'])[_0x6314('0xc')](function(_0x3e2b7b){if(_0x3e2b7b){_0xe71606[_0x6314('0x9')]=_0x3e2b7b[_0x6314('0xd')];_0xe71606['internal']=_0x3e2b7b[_0x6314('0xe')];utils[_0x6314('0xf')](_0x6314('0x10'),_0xe71606);}else{utils['getUserByName'](_0xe71606[_0x6314('0x7')][_0x6314('0x11')]('/')[0x1])[_0x6314('0xc')](function(_0xd5b99e){if(_0xd5b99e){_0xe71606['membername']=_0xd5b99e[_0x6314('0xd')];_0xe71606[_0x6314('0xe')]=_0xd5b99e[_0x6314('0xe')];utils[_0x6314('0xf')](_0x6314('0x10'),_0xe71606);}});}})[_0x6314('0x12')](function(_0x2210ca){utils['error'](util[_0x6314('0x13')](_0x6314('0x14'),_0xe71606[_0x6314('0x6')]),_0x2210ca);});}delete members[_0xe71606[_0x6314('0x7')]];}function startsWith(_0x4022f,_0x59cb32){return _[_0x6314('0x15')](_0x4022f,function(_0x46d46f){return _['startsWith'](_0x59cb32,_0x46d46f);});}exports[_0x6314('0x16')]=function(_0x261ded){try{utils[_0x6314('0x17')](util['format'](_0x6314('0x18'),members[_0x261ded['device']]?members[_0x261ded[_0x6314('0x19')]][_0x6314('0x6')]:_0x261ded[_0x6314('0x19')]),_0x261ded);utils[_0x6314('0x4')](util[_0x6314('0x13')](_0x6314('0x1a'),members[_0x261ded['device']]?members[_0x261ded[_0x6314('0x19')]][_0x6314('0x6')]:_0x261ded['device'],_0x261ded['state'],_0x261ded[_0x6314('0x19')]));switch(_0x261ded[_0x6314('0x1b')]){case _0x6314('0x1c'):case _0x6314('0x1d'):if(!startsWith(exclude,_0x261ded[_0x6314('0x19')])){members[_0x261ded[_0x6314('0x19')]]={'channel':'voice','interface':_0x261ded[_0x6314('0x19')],'type':_0x6314('0x1e'),'enterAt':utils[_0x6314('0x1f')](),'role':_0x6314('0x20')};}break;case _0x6314('0x21'):if(!_[_0x6314('0x22')](members[_0x261ded[_0x6314('0x19')]])){members[_0x261ded[_0x6314('0x19')]]['exitAt']=utils[_0x6314('0x1f')]();members[_0x261ded['device']][_0x6314('0x23')]=utils[_0x6314('0x24')](members[_0x261ded['device']]['exitAt'],members[_0x261ded[_0x6314('0x19')]][_0x6314('0x25')]);if(members[_0x261ded['device']][_0x6314('0x6')]){writeDB(members[_0x261ded['device']]);}}break;default:break;}}catch(_0x4863f5){utils[_0x6314('0x26')](util['format']('[%s][members][devicestatechange]',members[_0x261ded[_0x6314('0x19')]]?members[_0x261ded[_0x6314('0x19')]][_0x6314('0x6')]:_0x261ded[_0x6314('0x19')]),_0x4863f5);}};exports[_0x6314('0x27')]=function(_0x2a8b28){try{if(!_['isNil'](members[_0x2a8b28['interface']])){utils[_0x6314('0x17')](util[_0x6314('0x13')]('[%s][members][agentcomplete]',_0x2a8b28[_0x6314('0x6')]),_0x2a8b28);utils['info'](util[_0x6314('0x13')](_0x6314('0x28'),_0x2a8b28[_0x6314('0x6')],_0x2a8b28[_0x6314('0x7')],_0x2a8b28[_0x6314('0x29')]));members[_0x2a8b28[_0x6314('0x7')]]=_[_0x6314('0x2a')](members[_0x2a8b28[_0x6314('0x7')]],{'data4':_0x2a8b28['queue'],'uniqueid':_0x2a8b28[_0x6314('0x6')]});}}catch(_0xee9b5f){utils[_0x6314('0x26')](util['format'](_0x6314('0x2b'),_0x2a8b28[_0x6314('0x6')]),_0xee9b5f);}};exports['cdr']=function(_0x20dbf2){try{utils[_0x6314('0x17')](util[_0x6314('0x13')](_0x6314('0x2c'),_0x20dbf2['uniqueid']),_0x20dbf2);if(_0x20dbf2[_0x6314('0x2d')]){var _0x3937be=_0x20dbf2['channel'][_0x6314('0x11')]('-')[0x0];if(!_[_0x6314('0x22')](members[_0x3937be])){members[_0x3937be]=_[_0x6314('0x2a')](members[_0x3937be],{'data1':members[_0x3937be]['data1']||_0x20dbf2[_0x6314('0xa')],'data2':members[_0x3937be][_0x6314('0x8')]||_0x20dbf2[_0x6314('0x2e')],'data3':members[_0x3937be]['data3']||_0x20dbf2[_0x6314('0x2f')],'uniqueid':members[_0x3937be][_0x6314('0x6')]||_0x20dbf2[_0x6314('0x6')]});utils['info'](util[_0x6314('0x13')](_0x6314('0x30'),_0x20dbf2['uniqueid'],members[_0x3937be][_0x6314('0x31')],members[_0x3937be][_0x6314('0x8')],members[_0x3937be]['data3']));if(members[_0x3937be][_0x6314('0x32')]){writeDB(members[_0x3937be]);}}}if(_0x20dbf2[_0x6314('0x33')]){var _0x3d3573=_0x20dbf2[_0x6314('0x33')][_0x6314('0x11')]('-')[0x0];if(!_['isNil'](members[_0x3d3573])){members[_0x3d3573]=_[_0x6314('0x2a')](members[_0x3d3573],{'data1':members[_0x3d3573][_0x6314('0x31')]||_0x20dbf2[_0x6314('0xa')],'data2':members[_0x3d3573][_0x6314('0x8')]||_0x20dbf2['source'],'data3':members[_0x3d3573][_0x6314('0x34')]||_0x20dbf2[_0x6314('0x2f')],'uniqueid':members[_0x3d3573][_0x6314('0x6')]||_0x20dbf2['uniqueid']});utils[_0x6314('0x4')](util[_0x6314('0x13')](_0x6314('0x30'),_0x20dbf2[_0x6314('0x6')],members[_0x3d3573]['data1'],members[_0x3d3573][_0x6314('0x8')],members[_0x3d3573][_0x6314('0x34')]));if(members[_0x3d3573]['exitAt']){writeDB(members[_0x3d3573]);}}}}catch(_0x37753b){utils[_0x6314('0x26')](util[_0x6314('0x13')](_0x6314('0x2c'),_0x20dbf2[_0x6314('0x6')]),_0x37753b);}};
\ No newline at end of file
index 3fe3f05..b9e4372 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0x6d7c=['[%s][queues][varset]\x20name:%s\x20variable:queueposition\x20value:%s\x20queuecallerexitreason:%s','[%s][queues][varset]','ABANDONED','[%s][queues][queuecallerabandon]\x20name:%s\x20queuecallerexitreason:%s','[%s][queues][queuecallerabandon]','queuecallerleave','[%s][queues][queuecallerleave]','[%s][queues][queuecallerleave]\x20name:%s\x20connectedlinenum:%s\x20connectedlinename:%s','connectedlinenum','connectedlinename','holdtime','queuecallerjoinAt','count','[%s][queues][agentconnect]','[%s][queues][agentconnect]\x20name:%s\x20agent:%s\x20accountcode:%s','membername','assigned','destaccountcode','agentcomplete','[%s][queues][agentcomplete]','transfer','TRANSFER','COMPLETEDBY','[%s][queues][agentcomplete]\x20name:%s\x20agent:%s\x20queuecallerexitreason:%s','blindtransfer','transfereeuniqueid','[%s][queues][blindtransfer]','transfertype','BLIND','transferexten','extension','attendedtransfer','[%s][queues][attendedtransfer]','origtransfereruniqueid','origtransfererlinkedid','secondtransfererlinkedid','[%s][queues][attendedtransfer]\x20name:%s\x20transferexten:%s\x20queuecallerexitreason:ATTENDEDTRANSFER','origtransfererexten','ATTENDEDTRANSFER','transfereelinkedid','queuecallerenterreason','clone','transfertargetuniqueid','calleridname','[%s][queues][attendedtransfer]\x20name:%s\x20transfereduniqueid:%s','secondtransfereruniqueid','[%s][queues][attendedtransfer]\x20name:%s\x20transferuniqueid:%s\x20transferexten:%s\x20queuecallerexitreason:ATTENDEDTRANSFER','secondtransfererexten','ATTENDED','transfertargetlinkedid','mohtime','[%s][queues][attendedtransfer]\x20name:%s\x20transfereduniqueid:%s\x20calleridnum:%s\x20calleridname:%s','[%s][queues][musiconholdstart]','musiconholdstop','musiconholdstartAt','[%s][queues][musiconholdstop]','diffTime','[%s][queues][musiconholdstop]\x20name:%s\x20mohtime:%s','lodash','./utils','format','channel','lastAssignedTo','calleridnum','accountcode','queue','then','type','request','CreateVoiceQueueReport','transfereduniqueid','queuecallerjoin','debug','uniqueid','[%s][queues][queuecallerjoin]\x20name:%s\x20position:%s','position','assign','now','error','[%s][queues][queuecallerjoin]','hangup','isNil','[%s][queues][hangup]','queuecallerleaveAt','queuecallerabandon','queuecallerexit','queuecallercomplete','queuecallercompleteAt','queuecallerexitreason','COMPLETEDBYAGENT','info','[%s][queues][hangup]\x20name:%s\x20queuecallerexitreason:%s','name','[%s][queues][hangup]\x20name:%s\x20transfereduniqueid:%s','varset','variable','queuestatus','value','toUpperCase','CONTINUE','queuecallerabandonAt','queuecallerexitAt','[%s][queues][varset]\x20name:%s\x20variable:queuestatus\x20value:%s\x20queuecallerexitreason:%s','queueposition','EXITWITHKEY'];(function(_0x4d2d4c,_0x2045cb){var _0x5c1484=function(_0x4e56aa){while(--_0x4e56aa){_0x4d2d4c['push'](_0x4d2d4c['shift']());}};_0x5c1484(++_0x2045cb);}(_0x6d7c,0xa3));var _0xc6d7=function(_0x2f485e,_0x1ce4ff){_0x2f485e=_0x2f485e-0x0;var _0x1ca654=_0x6d7c[_0x2f485e];return _0x1ca654;};'use strict';var _=require(_0xc6d7('0x0'));var util=require('util');var utils=require(_0xc6d7('0x1'));var queues={};function writeDB(_0x2bccf4){utils['info'](util[_0xc6d7('0x2')]('[%s][queues][writeDB]\x20channel:%s\x20queue:%s\x20lastAssignedTo:%s\x20calleridnum:%s\x20accountcode:%s\x20queuecallerexitreason:%s',_0x2bccf4['uniqueid'],_0x2bccf4[_0xc6d7('0x3')],_0x2bccf4['queue'],_0x2bccf4[_0xc6d7('0x4')],_0x2bccf4[_0xc6d7('0x5')],_0x2bccf4[_0xc6d7('0x6')],_0x2bccf4['queuecallerexitreason']));if(_0x2bccf4[_0xc6d7('0x7')]){utils['getVoiceQueueByName'](_0x2bccf4[_0xc6d7('0x7')])[_0xc6d7('0x8')](function(_0x33183d){if(_0x33183d){_0x2bccf4[_0xc6d7('0x9')]=_0x33183d[_0xc6d7('0x9')];}utils[_0xc6d7('0xa')]('CreateVoiceQueueReport',_0x2bccf4);});}else{utils[_0xc6d7('0xa')](_0xc6d7('0xb'),_0x2bccf4);}if(_0x2bccf4[_0xc6d7('0xc')]){delete queues[_0x2bccf4[_0xc6d7('0xc')]];}else{delete queues[_0x2bccf4['uniqueid']];}}exports[_0xc6d7('0xd')]=function(_0x25979a){try{utils[_0xc6d7('0xe')](util['format']('[%s][queues][queuecallerjoin]',_0x25979a[_0xc6d7('0xf')]),_0x25979a);utils['info'](util[_0xc6d7('0x2')](_0xc6d7('0x10'),_0x25979a[_0xc6d7('0xf')],_0x25979a[_0xc6d7('0x7')],_0x25979a[_0xc6d7('0x11')]));queues[_0x25979a[_0xc6d7('0xf')]]=_[_0xc6d7('0x12')](_0x25979a,{'originalposition':_0x25979a[_0xc6d7('0x11')],'queuecallerjoinAt':utils[_0xc6d7('0x13')](),'mohtime':0x0});}catch(_0x26607a){utils[_0xc6d7('0x14')](util['format'](_0xc6d7('0x15'),_0x25979a['uniqueid']),_0x26607a);}};exports[_0xc6d7('0x16')]=function(_0x398fdd){try{if(!_[_0xc6d7('0x17')](queues[_0x398fdd[_0xc6d7('0xf')]])){utils[_0xc6d7('0xe')](util['format'](_0xc6d7('0x18'),_0x398fdd[_0xc6d7('0xf')]),_0x398fdd);if(queues[_0x398fdd[_0xc6d7('0xf')]][_0xc6d7('0x19')]){if(!queues[_0x398fdd['uniqueid']][_0xc6d7('0x1a')]&&!queues[_0x398fdd[_0xc6d7('0xf')]][_0xc6d7('0x1b')]){queues[_0x398fdd['uniqueid']][_0xc6d7('0x1c')]=!![];queues[_0x398fdd[_0xc6d7('0xf')]][_0xc6d7('0x1d')]=utils[_0xc6d7('0x13')]();queues[_0x398fdd['uniqueid']][_0xc6d7('0x1e')]=_0xc6d7('0x1f');}utils[_0xc6d7('0x20')](util[_0xc6d7('0x2')](_0xc6d7('0x21'),_0x398fdd[_0xc6d7('0xf')],queues[_0x398fdd[_0xc6d7('0xf')]][_0xc6d7('0x22')],queues[_0x398fdd[_0xc6d7('0xf')]][_0xc6d7('0x1e')]));writeDB(queues[_0x398fdd[_0xc6d7('0xf')]]);}else if(queues[_0x398fdd[_0xc6d7('0xf')]]['transfereduniqueid']){utils[_0xc6d7('0x20')](util[_0xc6d7('0x2')](_0xc6d7('0x23'),_0x398fdd[_0xc6d7('0xf')],queues[_0x398fdd['uniqueid']][_0xc6d7('0x22')],queues[_0x398fdd[_0xc6d7('0xf')]][_0xc6d7('0xc')]));queues[queues[_0x398fdd[_0xc6d7('0xf')]][_0xc6d7('0xc')]]=queues[_0x398fdd[_0xc6d7('0xf')]];queues[queues[_0x398fdd['uniqueid']][_0xc6d7('0xc')]]['queuecallerenterreason']=0x2;delete queues[_0x398fdd[_0xc6d7('0xf')]];}}}catch(_0x78e581){utils[_0xc6d7('0x14')](util[_0xc6d7('0x2')](_0xc6d7('0x18'),_0x398fdd[_0xc6d7('0xf')]),_0x78e581);}};exports[_0xc6d7('0x24')]=function(_0x4eafed){try{utils[_0xc6d7('0xe')](util[_0xc6d7('0x2')]('[%s][queues][varset]',_0x4eafed[_0xc6d7('0xf')]),_0x4eafed);if(!_[_0xc6d7('0x17')](_0x4eafed[_0xc6d7('0x25')][_0xc6d7('0x26')])&&_0x4eafed[_0xc6d7('0x27')][_0xc6d7('0x28')]()!==_0xc6d7('0x29')){if(!_[_0xc6d7('0x17')](queues[_0x4eafed['uniqueid']])){queues[_0x4eafed[_0xc6d7('0xf')]][_0xc6d7('0x1a')]=![];queues[_0x4eafed[_0xc6d7('0xf')]][_0xc6d7('0x2a')]=null;queues[_0x4eafed[_0xc6d7('0xf')]]['queuecallerexit']=!![];queues[_0x4eafed[_0xc6d7('0xf')]][_0xc6d7('0x2b')]=utils[_0xc6d7('0x13')]();queues[_0x4eafed[_0xc6d7('0xf')]]['queuecallerexitreason']=_0x4eafed[_0xc6d7('0x27')][_0xc6d7('0x28')]();utils[_0xc6d7('0x20')](util[_0xc6d7('0x2')](_0xc6d7('0x2c'),_0x4eafed['uniqueid'],queues[_0x4eafed[_0xc6d7('0xf')]]['name'],_0x4eafed[_0xc6d7('0x27')],queues[_0x4eafed[_0xc6d7('0xf')]][_0xc6d7('0x1e')]));writeDB(queues[_0x4eafed[_0xc6d7('0xf')]]);}}else if(!_[_0xc6d7('0x17')](_0x4eafed[_0xc6d7('0x25')][_0xc6d7('0x2d')])){if(!_[_0xc6d7('0x17')](queues[_0x4eafed[_0xc6d7('0xf')]])&&!queues[_0x4eafed['uniqueid']]['queuecallerabandon']){queues[_0x4eafed['uniqueid']][_0xc6d7('0x1a')]=![];queues[_0x4eafed[_0xc6d7('0xf')]]['queuecallerabandonAt']=null;queues[_0x4eafed[_0xc6d7('0xf')]]['queuecallerexit']=!![];queues[_0x4eafed['uniqueid']]['queuecallerexitAt']=utils[_0xc6d7('0x13')]();queues[_0x4eafed[_0xc6d7('0xf')]][_0xc6d7('0x1e')]=_0xc6d7('0x2e');utils['info'](util[_0xc6d7('0x2')](_0xc6d7('0x2f'),_0x4eafed[_0xc6d7('0xf')],queues[_0x4eafed['uniqueid']]['name'],_0x4eafed['value'],queues[_0x4eafed['uniqueid']][_0xc6d7('0x1e')]));}}}catch(_0x1e2b8b){utils[_0xc6d7('0x14')](util['format'](_0xc6d7('0x30'),_0x4eafed[_0xc6d7('0xf')]),_0x1e2b8b);}};exports['queuecallerabandon']=function(_0x2e7ac1){try{if(!_[_0xc6d7('0x17')](queues[_0x2e7ac1[_0xc6d7('0xf')]])){utils['debug'](util[_0xc6d7('0x2')]('[%s][queues][queuecallerabandon]',_0x2e7ac1[_0xc6d7('0xf')]),_0x2e7ac1);queues[_0x2e7ac1[_0xc6d7('0xf')]][_0xc6d7('0x1b')]=![];queues[_0x2e7ac1['uniqueid']]['queuecallerexitAt']=null;queues[_0x2e7ac1['uniqueid']][_0xc6d7('0x1a')]=!![];queues[_0x2e7ac1[_0xc6d7('0xf')]]['queuecallerabandonAt']=utils[_0xc6d7('0x13')]();queues[_0x2e7ac1[_0xc6d7('0xf')]]['queuecallerexitreason']=_0xc6d7('0x31');utils[_0xc6d7('0x20')](util[_0xc6d7('0x2')](_0xc6d7('0x32'),_0x2e7ac1[_0xc6d7('0xf')],queues[_0x2e7ac1[_0xc6d7('0xf')]]['name'],queues[_0x2e7ac1[_0xc6d7('0xf')]][_0xc6d7('0x1e')]));}}catch(_0x6d9d0a){utils['error'](util[_0xc6d7('0x2')](_0xc6d7('0x33'),_0x2e7ac1['uniqueid']),_0x6d9d0a);}};exports[_0xc6d7('0x34')]=function(_0x3cad8f){try{if(!_[_0xc6d7('0x17')](queues[_0x3cad8f[_0xc6d7('0xf')]])){utils[_0xc6d7('0xe')](util[_0xc6d7('0x2')](_0xc6d7('0x35'),_0x3cad8f[_0xc6d7('0xf')]),_0x3cad8f);utils[_0xc6d7('0x20')](util[_0xc6d7('0x2')](_0xc6d7('0x36'),_0x3cad8f['uniqueid'],queues[_0x3cad8f[_0xc6d7('0xf')]][_0xc6d7('0x22')],_0x3cad8f[_0xc6d7('0x37')],_0x3cad8f[_0xc6d7('0x38')]));queues[_0x3cad8f[_0xc6d7('0xf')]][_0xc6d7('0x34')]=!![];queues[_0x3cad8f[_0xc6d7('0xf')]][_0xc6d7('0x19')]=utils['now']();queues[_0x3cad8f['uniqueid']][_0xc6d7('0x39')]=utils['diffTime'](queues[_0x3cad8f['uniqueid']][_0xc6d7('0x19')],queues[_0x3cad8f[_0xc6d7('0xf')]][_0xc6d7('0x3a')]);queues[_0x3cad8f[_0xc6d7('0xf')]][_0xc6d7('0x11')]=_0x3cad8f[_0xc6d7('0x11')];queues[_0x3cad8f[_0xc6d7('0xf')]]['count']=_0x3cad8f[_0xc6d7('0x3b')];queues[_0x3cad8f[_0xc6d7('0xf')]]['connectedlinenum']=_0x3cad8f[_0xc6d7('0x37')];queues[_0x3cad8f['uniqueid']][_0xc6d7('0x38')]=_0x3cad8f[_0xc6d7('0x38')];}}catch(_0x38adb2){utils['error'](util['format'](_0xc6d7('0x35'),_0x3cad8f[_0xc6d7('0xf')]),_0x38adb2);}};exports['agentconnect']=function(_0x40a68b){try{if(!_['isNil'](queues[_0x40a68b['uniqueid']])){utils['debug'](util[_0xc6d7('0x2')](_0xc6d7('0x3c'),_0x40a68b['uniqueid']),_0x40a68b);utils[_0xc6d7('0x20')](util[_0xc6d7('0x2')](_0xc6d7('0x3d'),_0x40a68b[_0xc6d7('0xf')],queues[_0x40a68b['uniqueid']][_0xc6d7('0x22')],_0x40a68b[_0xc6d7('0x3e')],_0x40a68b['destaccountcode']));queues[_0x40a68b[_0xc6d7('0xf')]][_0xc6d7('0x1a')]=![];queues[_0x40a68b[_0xc6d7('0xf')]][_0xc6d7('0x1a')]=![];queues[_0x40a68b[_0xc6d7('0xf')]][_0xc6d7('0x2a')]=null;queues[_0x40a68b[_0xc6d7('0xf')]]['queuecallerexit']=![];queues[_0x40a68b[_0xc6d7('0xf')]][_0xc6d7('0x1e')]=null;queues[_0x40a68b[_0xc6d7('0xf')]]['queuecallerexitAt']=null;queues[_0x40a68b[_0xc6d7('0xf')]][_0xc6d7('0x3f')]=!![];queues[_0x40a68b[_0xc6d7('0xf')]][_0xc6d7('0x6')]=_0x40a68b[_0xc6d7('0x40')];queues[_0x40a68b[_0xc6d7('0xf')]][_0xc6d7('0x4')]=_0x40a68b[_0xc6d7('0x3e')];}}catch(_0x4d0290){utils[_0xc6d7('0x14')](util[_0xc6d7('0x2')](_0xc6d7('0x3c'),_0x40a68b[_0xc6d7('0xf')]),_0x4d0290);}};exports[_0xc6d7('0x41')]=function(_0x2d207b){try{if(!_['isNil'](queues[_0x2d207b[_0xc6d7('0xf')]])){if(queues[_0x2d207b[_0xc6d7('0xf')]][_0xc6d7('0x19')]){utils[_0xc6d7('0xe')](util['format'](_0xc6d7('0x42'),_0x2d207b[_0xc6d7('0xf')]),_0x2d207b);queues[_0x2d207b[_0xc6d7('0xf')]][_0xc6d7('0x1a')]=![];queues[_0x2d207b[_0xc6d7('0xf')]]['queuecallerabandon']=![];queues[_0x2d207b['uniqueid']]['queuecallerabandonAt']=null;queues[_0x2d207b[_0xc6d7('0xf')]][_0xc6d7('0x1b')]=![];queues[_0x2d207b['uniqueid']][_0xc6d7('0x2b')]=null;queues[_0x2d207b['uniqueid']][_0xc6d7('0x3f')]=!![];queues[_0x2d207b[_0xc6d7('0xf')]][_0xc6d7('0x4')]=_0x2d207b[_0xc6d7('0x3e')];queues[_0x2d207b[_0xc6d7('0xf')]]['queuecallercomplete']=!![];queues[_0x2d207b[_0xc6d7('0xf')]][_0xc6d7('0x1d')]=utils['now']();if(_0x2d207b['reason']==_0xc6d7('0x43')){if(!queues[_0x2d207b['uniqueid']][_0xc6d7('0x43')]){queues[_0x2d207b[_0xc6d7('0xf')]]['queuecallerexitreason']=_0xc6d7('0x44');}}else{queues[_0x2d207b['uniqueid']][_0xc6d7('0x1e')]=_0xc6d7('0x45')+_0x2d207b['reason'][_0xc6d7('0x28')]();}utils[_0xc6d7('0x20')](util[_0xc6d7('0x2')](_0xc6d7('0x46'),_0x2d207b[_0xc6d7('0xf')],queues[_0x2d207b[_0xc6d7('0xf')]]['name'],_0x2d207b[_0xc6d7('0x3e')],queues[_0x2d207b['uniqueid']]['queuecallerexitreason']));writeDB(queues[_0x2d207b[_0xc6d7('0xf')]]);}}}catch(_0x21acd8){utils['error'](util[_0xc6d7('0x2')]('[%s][queues][agentcomplete]',_0x2d207b['uniqueid']),_0x21acd8);}};exports[_0xc6d7('0x47')]=function(_0x4725b0){try{if(!_[_0xc6d7('0x17')](queues[_0x4725b0[_0xc6d7('0x48')]])){utils[_0xc6d7('0xe')](util['format'](_0xc6d7('0x49'),_0x4725b0[_0xc6d7('0xf')]),_0x4725b0);queues[_0x4725b0['transfereeuniqueid']][_0xc6d7('0x43')]=!![];queues[_0x4725b0[_0xc6d7('0x48')]][_0xc6d7('0x4a')]=_0xc6d7('0x4b');queues[_0x4725b0['transfereeuniqueid']][_0xc6d7('0x4c')]=_0x4725b0[_0xc6d7('0x4d')];queues[_0x4725b0[_0xc6d7('0x48')]]['transferuniqueid']=_0x4725b0[_0xc6d7('0x48')];queues[_0x4725b0[_0xc6d7('0x48')]][_0xc6d7('0x1e')]='BLINDTRANSFER';utils[_0xc6d7('0x20')](util[_0xc6d7('0x2')]('[%s][queues][blindtransfer]\x20name:%s\x20transferuniqueid:%s\x20transferexten:%s\x20queuecallerexitreason:BLINDTRANSFER',_0x4725b0[_0xc6d7('0xf')],queues[_0x4725b0[_0xc6d7('0x48')]][_0xc6d7('0x22')],_0x4725b0[_0xc6d7('0x48')],_0x4725b0['extension']));}}catch(_0x125fac){utils[_0xc6d7('0x14')](util[_0xc6d7('0x2')](_0xc6d7('0x49'),_0x4725b0[_0xc6d7('0xf')]),_0x125fac);}};exports[_0xc6d7('0x4e')]=function(_0x2081f4){try{utils[_0xc6d7('0xe')](util['format'](_0xc6d7('0x4f'),_0x2081f4[_0xc6d7('0x50')]),_0x2081f4);if(_0x2081f4['origtransfereruniqueid']==_0x2081f4[_0xc6d7('0x51')]){if(!_[_0xc6d7('0x17')](queues[_0x2081f4[_0xc6d7('0x52')]])){utils[_0xc6d7('0x20')](util[_0xc6d7('0x2')](_0xc6d7('0x53'),_0x2081f4[_0xc6d7('0x50')],queues[_0x2081f4[_0xc6d7('0x52')]]['name'],_0x2081f4[_0xc6d7('0x54')]));queues[_0x2081f4[_0xc6d7('0x52')]][_0xc6d7('0x43')]=!![];queues[_0x2081f4['secondtransfererlinkedid']]['transfertype']='ATTENDED';queues[_0x2081f4[_0xc6d7('0x52')]][_0xc6d7('0x4c')]=_0x2081f4[_0xc6d7('0x54')];queues[_0x2081f4['secondtransfererlinkedid']]['transferuniqueid']=_0x2081f4[_0xc6d7('0x50')];queues[_0x2081f4[_0xc6d7('0x52')]][_0xc6d7('0x1e')]=_0xc6d7('0x55');}if(!_[_0xc6d7('0x17')](queues[_0x2081f4[_0xc6d7('0x51')]])){if(_0x2081f4['transfereelinkedid']&&queues[_0x2081f4['transfereelinkedid']]){queues[_0x2081f4[_0xc6d7('0x56')]][_0xc6d7('0x57')]=0x1;queues[_0x2081f4['transfereeuniqueid']]=_[_0xc6d7('0x58')](queues[_0x2081f4['transfereelinkedid']]);queues[_0x2081f4[_0xc6d7('0x48')]][_0xc6d7('0xc')]=_0x2081f4[_0xc6d7('0x59')];queues[_0x2081f4['transfereeuniqueid']][_0xc6d7('0x57')]=0x2;queues[_0x2081f4[_0xc6d7('0x48')]][_0xc6d7('0x5')]=queues[_0x2081f4[_0xc6d7('0x52')]][_0xc6d7('0x5')];queues[_0x2081f4[_0xc6d7('0x48')]][_0xc6d7('0x5a')]=queues[_0x2081f4[_0xc6d7('0x52')]][_0xc6d7('0x5a')];queues[_0x2081f4['transfereeuniqueid']][_0xc6d7('0x3a')]=utils[_0xc6d7('0x13')]();queues[_0x2081f4[_0xc6d7('0x48')]]['queuecallerleaveAt']=utils['now']();queues[_0x2081f4[_0xc6d7('0x48')]][_0xc6d7('0x39')]=0x0;queues[_0x2081f4[_0xc6d7('0x48')]]['mohtime']=0x0;utils[_0xc6d7('0x20')](util[_0xc6d7('0x2')]('[%s][queues][attendedtransfer]\x20name:%s\x20calleridnum:%s\x20calleridname:%s',_0x2081f4[_0xc6d7('0x50')],queues[_0x2081f4['transfereeuniqueid']][_0xc6d7('0x22')],queues[_0x2081f4[_0xc6d7('0x48')]][_0xc6d7('0x5')],queues[_0x2081f4[_0xc6d7('0x48')]]['calleridname']));}else{utils[_0xc6d7('0x20')](util[_0xc6d7('0x2')](_0xc6d7('0x5b'),_0x2081f4[_0xc6d7('0x50')],queues[_0x2081f4[_0xc6d7('0x51')]][_0xc6d7('0x22')],_0x2081f4['secondtransfererlinkedid']));queues[_0x2081f4[_0xc6d7('0x51')]][_0xc6d7('0xc')]=_0x2081f4[_0xc6d7('0x52')];}}}else if(_0x2081f4[_0xc6d7('0x5c')]==_0x2081f4['secondtransfererlinkedid']){if(!_[_0xc6d7('0x17')](queues[_0x2081f4['origtransfererlinkedid']])){utils[_0xc6d7('0x20')](util['format'](_0xc6d7('0x5d'),_0x2081f4['origtransfereruniqueid'],queues[_0x2081f4['origtransfererlinkedid']][_0xc6d7('0x22')],_0x2081f4['secondtransfereruniqueid'],_0x2081f4[_0xc6d7('0x5e')]));queues[_0x2081f4[_0xc6d7('0x51')]][_0xc6d7('0x43')]=!![];queues[_0x2081f4[_0xc6d7('0x51')]][_0xc6d7('0x4a')]=_0xc6d7('0x5f');queues[_0x2081f4[_0xc6d7('0x51')]]['transferexten']=_0x2081f4[_0xc6d7('0x5e')];queues[_0x2081f4[_0xc6d7('0x51')]]['transferuniqueid']=_0x2081f4[_0xc6d7('0x5c')];queues[_0x2081f4[_0xc6d7('0x51')]][_0xc6d7('0x1e')]='ATTENDEDTRANSFER';}if(!_[_0xc6d7('0x17')](queues[_0x2081f4[_0xc6d7('0x52')]])){if(_0x2081f4[_0xc6d7('0x60')]&&queues[_0x2081f4[_0xc6d7('0x60')]]){queues[_0x2081f4[_0xc6d7('0x60')]][_0xc6d7('0x57')]=0x1;queues[_0x2081f4['transfertargetuniqueid']]=_[_0xc6d7('0x58')](queues[_0x2081f4[_0xc6d7('0x60')]]);queues[_0x2081f4[_0xc6d7('0x59')]][_0xc6d7('0xc')]=_0x2081f4[_0xc6d7('0x59')];queues[_0x2081f4[_0xc6d7('0x59')]][_0xc6d7('0x57')]=0x2;queues[_0x2081f4['transfertargetuniqueid']][_0xc6d7('0x5')]=queues[_0x2081f4[_0xc6d7('0x51')]][_0xc6d7('0x5')];queues[_0x2081f4['transfertargetuniqueid']][_0xc6d7('0x5a')]=queues[_0x2081f4[_0xc6d7('0x51')]][_0xc6d7('0x5a')];queues[_0x2081f4[_0xc6d7('0x59')]][_0xc6d7('0x3a')]=utils[_0xc6d7('0x13')]();queues[_0x2081f4[_0xc6d7('0x59')]][_0xc6d7('0x19')]=utils['now']();queues[_0x2081f4[_0xc6d7('0x59')]][_0xc6d7('0x39')]=0x0;queues[_0x2081f4[_0xc6d7('0x59')]][_0xc6d7('0x61')]=0x0;utils['info'](util[_0xc6d7('0x2')](_0xc6d7('0x62'),_0x2081f4[_0xc6d7('0x50')],queues[_0x2081f4[_0xc6d7('0x59')]][_0xc6d7('0x22')],queues[_0x2081f4[_0xc6d7('0x59')]][_0xc6d7('0xc')],queues[_0x2081f4[_0xc6d7('0x59')]][_0xc6d7('0x5')],queues[_0x2081f4['transfertargetuniqueid']]['calleridname']));}else{utils[_0xc6d7('0x20')](util['format'](_0xc6d7('0x5b'),_0x2081f4[_0xc6d7('0x50')],queues[_0x2081f4[_0xc6d7('0x52')]][_0xc6d7('0x22')],_0x2081f4[_0xc6d7('0x51')]));queues[_0x2081f4[_0xc6d7('0x52')]][_0xc6d7('0xc')]=_0x2081f4[_0xc6d7('0x51')];}}}}catch(_0xdacf13){utils[_0xc6d7('0x14')](util[_0xc6d7('0x2')](_0xc6d7('0x4f'),_0x2081f4[_0xc6d7('0x50')]),_0xdacf13);}};exports['musiconholdstart']=function(_0x5935eb){try{if(!_[_0xc6d7('0x17')](queues[_0x5935eb[_0xc6d7('0xf')]])){utils['debug'](util[_0xc6d7('0x2')](_0xc6d7('0x63'),_0x5935eb['uniqueid']),_0x5935eb);queues[_0x5935eb[_0xc6d7('0xf')]]['musiconholdstartAt']=utils[_0xc6d7('0x13')]();utils[_0xc6d7('0x20')](util[_0xc6d7('0x2')]('[%s][queues][musiconholdstop]\x20name:%s\x20musiconholdstartAt:%s',_0x5935eb['uniqueid'],queues[_0x5935eb[_0xc6d7('0xf')]][_0xc6d7('0x22')],queues[_0x5935eb[_0xc6d7('0xf')]]['musiconholdstartAt']));}}catch(_0x14c431){utils['error'](util[_0xc6d7('0x2')](_0xc6d7('0x63'),_0x5935eb['uniqueid']),_0x14c431);}};exports[_0xc6d7('0x64')]=function(_0x2a685a){try{if(!_[_0xc6d7('0x17')](queues[_0x2a685a['uniqueid']])){if(!_[_0xc6d7('0x17')](queues[_0x2a685a[_0xc6d7('0xf')]][_0xc6d7('0x65')])){utils[_0xc6d7('0xe')](util[_0xc6d7('0x2')](_0xc6d7('0x66'),_0x2a685a[_0xc6d7('0xf')]),_0x2a685a);queues[_0x2a685a[_0xc6d7('0xf')]]['mohtime']+=utils[_0xc6d7('0x67')](utils[_0xc6d7('0x13')](),queues[_0x2a685a[_0xc6d7('0xf')]][_0xc6d7('0x65')]);utils[_0xc6d7('0x20')](util[_0xc6d7('0x2')](_0xc6d7('0x68'),_0x2a685a['uniqueid'],queues[_0x2a685a['uniqueid']][_0xc6d7('0x22')],queues[_0x2a685a[_0xc6d7('0xf')]]['mohtime']));delete queues[_0x2a685a[_0xc6d7('0xf')]]['musiconholdstartAt'];}}}catch(_0x1fc486){utils[_0xc6d7('0x14')](util['format'](_0xc6d7('0x66'),_0x2a685a['uniqueid']),_0x1fc486);}};
\ No newline at end of file
index 18c8708..8b2a691 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0x7bcd=['error','newstate','[%s][recordings][newstate]','isNil','channelstate','[%s][recordings][newstate]\x20context:%s\x20channel:%s','transfer','[%s][recordings][newstate]\x20linkedid:%s\x20context:%s\x20channel:%s','[%s][recordings][varset]','[%s][recordings][varset]\x20variable:%s\x20value:%s','variable','value','endsWith','replace','.WAV','find','push','hangup','[%s][recordings][hangup]\x20calleridnum:%s\x20calleridname:%s\x20reason:%s','calleridname','cause-txt','calleridnum','connectedlinenum','connectedlinename','type','outbound','monitors','forEach','clone','[%s][recordings][hangup]','newexten','[%s][recordings][newexten]\x20application:%s\x20appdata:%s','appdata','application','set','startsWith','toLowerCase','cdr','split','lastIndexOf','[%s][recordings][newexten]','queuecallerjoin','[%s][recordings][queuecallerjoin]\x20queue:%s','queue','[%s][recordings][queuecallerjoin]','blindtransfer','[%s][recordings][blindtransfer]','[%s][recordings][blindtransfer]\x20transferercalleridnum:%s\x20transferercalleridname:%s\x20transfereecalleridnum:%s\x20transfereecalleridname:%s','transferercalleridnum','transfereecalleridnum','transfereecalleridname','transfereruniqueid','recording','util','./utils','./transfers.controller','format','[%s][recordings][writeDB]','uniqueid','blinds','transfereeuniqueid','getUserByInternal','accountcode','then','membername','UserId','request','CreateVoiceRecording','newchannel','debug','[%s][recordings][newchannel]','linkedid','info','[%s][recordings][newchannel]\x20context:%s\x20exten:%s','context','exten','channel'];(function(_0x50bf6d,_0x2c08e6){var _0x4a0c2e=function(_0x47748a){while(--_0x47748a){_0x50bf6d['push'](_0x50bf6d['shift']());}};_0x4a0c2e(++_0x2c08e6);}(_0x7bcd,0x1b6));var _0xd7bc=function(_0x5090d4,_0x1950a7){_0x5090d4=_0x5090d4-0x0;var _0x56c310=_0x7bcd[_0x5090d4];return _0x56c310;};'use strict';var _=require('lodash');var util=require(_0xd7bc('0x0'));var utils=require(_0xd7bc('0x1'));var transfers=require(_0xd7bc('0x2'));var recordings={};function writeDB(_0x783555){var _0x530d55;utils['info'](util[_0xd7bc('0x3')](_0xd7bc('0x4'),_0x783555[_0xd7bc('0x5')]));if(transfers[_0xd7bc('0x6')][_0x783555[_0xd7bc('0x5')]]){_0x530d55=_0x783555[_0xd7bc('0x5')];_0x783555['uniqueid']=transfers[_0xd7bc('0x6')][_0x783555[_0xd7bc('0x5')]][_0xd7bc('0x7')];}if(_0x783555['accountcode']){utils[_0xd7bc('0x8')](_0x783555[_0xd7bc('0x9')])[_0xd7bc('0xa')](function(_0x8682a7){if(_0x8682a7){_0x783555[_0xd7bc('0xb')]=_0x8682a7['name'];_0x783555[_0xd7bc('0xc')]=_0x8682a7['id'];}utils[_0xd7bc('0xd')]('CreateVoiceRecording',_0x783555);});}else{utils[_0xd7bc('0xd')](_0xd7bc('0xe'),_0x783555);}if(_0x530d55)delete transfers[_0xd7bc('0x6')][_0x530d55];}exports[_0xd7bc('0xf')]=function(_0x2a1aa9){try{utils[_0xd7bc('0x10')](util[_0xd7bc('0x3')](_0xd7bc('0x11'),_0x2a1aa9[_0xd7bc('0x5')]),_0x2a1aa9);if(_0x2a1aa9[_0xd7bc('0x5')]==_0x2a1aa9[_0xd7bc('0x12')]){utils[_0xd7bc('0x13')](util[_0xd7bc('0x3')](_0xd7bc('0x14'),_0x2a1aa9[_0xd7bc('0x5')],_0x2a1aa9[_0xd7bc('0x15')],_0x2a1aa9[_0xd7bc('0x16')]));recordings[_0x2a1aa9[_0xd7bc('0x5')]]={'uniqueid':_0x2a1aa9[_0xd7bc('0x5')],'accountcode':_0x2a1aa9[_0xd7bc('0x9')],'exten':_0x2a1aa9[_0xd7bc('0x16')],'context':_0x2a1aa9[_0xd7bc('0x15')],'channel':_0x2a1aa9[_0xd7bc('0x17')],'monitors':[]};}}catch(_0x50eb3b){utils[_0xd7bc('0x18')](util[_0xd7bc('0x3')](_0xd7bc('0x11'),_0x2a1aa9[_0xd7bc('0x5')]),_0x50eb3b);}};exports[_0xd7bc('0x19')]=function(_0x574731){try{utils[_0xd7bc('0x10')](util[_0xd7bc('0x3')](_0xd7bc('0x1a'),_0x574731[_0xd7bc('0x5')]),_0x574731);if(!_[_0xd7bc('0x1b')](recordings[_0x574731[_0xd7bc('0x5')]])&&_0x574731[_0xd7bc('0x1c')]==0x6){utils[_0xd7bc('0x13')](util['format'](_0xd7bc('0x1d'),_0x574731[_0xd7bc('0x5')],_0x574731[_0xd7bc('0x15')],_0x574731[_0xd7bc('0x17')]));}else if(!_[_0xd7bc('0x1b')](recordings[_0x574731[_0xd7bc('0x12')]])&&_0x574731[_0xd7bc('0x1c')]==0x6&&_0x574731[_0xd7bc('0x15')]!=_0xd7bc('0x1e')){utils[_0xd7bc('0x13')](util[_0xd7bc('0x3')](_0xd7bc('0x1f'),_0x574731[_0xd7bc('0x5')],_0x574731[_0xd7bc('0x12')],_0x574731[_0xd7bc('0x15')],_0x574731[_0xd7bc('0x17')]));recordings[_0x574731[_0xd7bc('0x12')]][_0xd7bc('0x9')]=_0x574731[_0xd7bc('0x9')];}}catch(_0x3a437b){utils[_0xd7bc('0x18')](util[_0xd7bc('0x3')](_0xd7bc('0x1a'),_0x574731[_0xd7bc('0x5')]),_0x3a437b);}};exports['varset']=function(_0x2728cf){try{if(!_['isNil'](_0x2728cf['variable'])&&!_['isNil'](_0x2728cf['variable']['mixmonitor_filename'])){utils[_0xd7bc('0x10')](util[_0xd7bc('0x3')](_0xd7bc('0x20'),_0x2728cf[_0xd7bc('0x5')]),_0x2728cf);utils[_0xd7bc('0x13')](util['format'](_0xd7bc('0x21'),_0x2728cf[_0xd7bc('0x5')],_0x2728cf[_0xd7bc('0x22')],_0x2728cf[_0xd7bc('0x23')]));if(_[_0xd7bc('0x24')](_0x2728cf[_0xd7bc('0x23')],'.wav49')){_0x2728cf[_0xd7bc('0x23')]=_0x2728cf[_0xd7bc('0x23')][_0xd7bc('0x25')]('.wav49',_0xd7bc('0x26'));}if(recordings[_0x2728cf[_0xd7bc('0x12')]]){var _0x5b3041=_[_0xd7bc('0x27')](recordings[_0x2728cf['linkedid']]['monitors'],{'value':_0x2728cf[_0xd7bc('0x23')]});if(_[_0xd7bc('0x1b')](_0x5b3041)){recordings[_0x2728cf[_0xd7bc('0x12')]]['monitors'][_0xd7bc('0x28')]({'value':_0x2728cf[_0xd7bc('0x23')]});}}}}catch(_0x449b21){utils[_0xd7bc('0x18')](util[_0xd7bc('0x3')]('[%s][recordings][varset]',_0x2728cf[_0xd7bc('0x5')]),_0x449b21);}};exports[_0xd7bc('0x29')]=function(_0x583518){try{if(!_[_0xd7bc('0x1b')](recordings[_0x583518['uniqueid']])){utils['debug'](util['format']('[%s][recordings][hangup]',_0x583518[_0xd7bc('0x5')]),_0x583518);utils[_0xd7bc('0x13')](util[_0xd7bc('0x3')](_0xd7bc('0x2a'),_0x583518['uniqueid'],_0x583518['calleridnum'],_0x583518[_0xd7bc('0x2b')],_0x583518[_0xd7bc('0x2c')]));recordings[_0x583518[_0xd7bc('0x5')]][_0xd7bc('0x2d')]=_0x583518[_0xd7bc('0x2d')];recordings[_0x583518[_0xd7bc('0x5')]]['calleridname']=_0x583518[_0xd7bc('0x2b')];recordings[_0x583518[_0xd7bc('0x5')]][_0xd7bc('0x2e')]=_0x583518['connectedlinenum'];recordings[_0x583518[_0xd7bc('0x5')]]['connectedlinename']=_0x583518[_0xd7bc('0x2f')];if(recordings[_0x583518[_0xd7bc('0x5')]][_0xd7bc('0x30')]==_0xd7bc('0x31')&&recordings[_0x583518[_0xd7bc('0x5')]][_0xd7bc('0x9')]){recordings[_0x583518[_0xd7bc('0x5')]][_0xd7bc('0x2e')]=recordings[_0x583518[_0xd7bc('0x5')]][_0xd7bc('0x9')];recordings[_0x583518['uniqueid']]['connectedlinename']='';}recordings[_0x583518[_0xd7bc('0x5')]][_0xd7bc('0x32')][_0xd7bc('0x33')](function(_0x17d0ac){var _0x5e607d=_[_0xd7bc('0x34')](recordings[_0x583518[_0xd7bc('0x5')]]);_0x5e607d[_0xd7bc('0x23')]=_0x17d0ac['value'];writeDB(_0x5e607d);});delete recordings[_0x583518['uniqueid']];}}catch(_0x4e04bf){utils['error'](util['format'](_0xd7bc('0x35'),_0x583518[_0xd7bc('0x5')]),_0x4e04bf);}};exports[_0xd7bc('0x36')]=function(_0x5b52fb){try{if(!_[_0xd7bc('0x1b')](recordings[_0x5b52fb['uniqueid']])){utils[_0xd7bc('0x10')](util[_0xd7bc('0x3')]('[%s][recordings][newexten]',_0x5b52fb[_0xd7bc('0x5')]),_0x5b52fb);utils[_0xd7bc('0x13')](util[_0xd7bc('0x3')](_0xd7bc('0x37'),_0x5b52fb['uniqueid'],_0x5b52fb['application'],_0x5b52fb[_0xd7bc('0x38')]));if(_0x5b52fb[_0xd7bc('0x39')]['toLowerCase']()==_0xd7bc('0x3a')&&_[_0xd7bc('0x3b')](_0x5b52fb[_0xd7bc('0x38')][_0xd7bc('0x3c')](),_0xd7bc('0x3d'))){var _0x5d839a=_0x5b52fb[_0xd7bc('0x38')][_0xd7bc('0x3e')]('=');var _0x379989=_0x5d839a[0x0]['substring'](_0x5d839a[0x0][_0xd7bc('0x3f')]('(')+0x1,_0x5d839a[0x0]['lastIndexOf'](')'));var _0x54037d=_0x5d839a[0x1];recordings[_0x5b52fb[_0xd7bc('0x5')]][_0x379989]=_0x54037d;}}}catch(_0x101307){utils['error'](util[_0xd7bc('0x3')](_0xd7bc('0x40'),_0x5b52fb[_0xd7bc('0x5')]),_0x101307);}};exports[_0xd7bc('0x41')]=function(_0x29b24d){try{if(!_[_0xd7bc('0x1b')](recordings[_0x29b24d[_0xd7bc('0x5')]])){utils[_0xd7bc('0x10')](util[_0xd7bc('0x3')]('[%s][recordings][queuecallerjoin]',_0x29b24d[_0xd7bc('0x5')]),_0x29b24d);utils[_0xd7bc('0x13')](util[_0xd7bc('0x3')](_0xd7bc('0x42'),_0x29b24d[_0xd7bc('0x5')],_0x29b24d[_0xd7bc('0x43')]));recordings[_0x29b24d[_0xd7bc('0x5')]][_0xd7bc('0x43')]=_0x29b24d[_0xd7bc('0x43')];}}catch(_0x1592fb){utils[_0xd7bc('0x18')](util['format'](_0xd7bc('0x44'),_0x29b24d[_0xd7bc('0x5')]),_0x1592fb);}};exports[_0xd7bc('0x45')]=function(_0x5694a6){try{utils[_0xd7bc('0x10')](util[_0xd7bc('0x3')](_0xd7bc('0x46'),_0x5694a6[_0xd7bc('0x5')]),_0x5694a6);utils[_0xd7bc('0x13')](util[_0xd7bc('0x3')](_0xd7bc('0x47'),_0x5694a6['uniqueid'],_0x5694a6[_0xd7bc('0x48')],_0x5694a6['transferercalleridname'],_0x5694a6[_0xd7bc('0x49')],_0x5694a6[_0xd7bc('0x4a')]));if(recordings[_0x5694a6['transfereruniqueid']]&&transfers[_0xd7bc('0x6')][_0x5694a6[_0xd7bc('0x4b')]]){transfers[_0xd7bc('0x6')][_0x5694a6[_0xd7bc('0x4b')]][_0xd7bc('0x4c')]=!![];}}catch(_0x152707){utils[_0xd7bc('0x18')](util[_0xd7bc('0x3')](_0xd7bc('0x46'),_0x5694a6[_0xd7bc('0x5')]),_0x152707);}};
\ No newline at end of file
index 7a1515d..ad3378a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0x0758=['[%s][transfers][writeDB]\x20type:%s','type','attended','request','blindtransfer','debug','[%s][transfers][blindtransfer]','uniqueid','[%s][transfers][blindtransfer]\x20transferercalleridnum:%s\x20transferercalleridname:%s\x20transfereecalleridnum:%s\x20transfereecalleridname:%s','transferercalleridnum','transfereecalleridnum','transfereecalleridname','blind','transfereruniqueid','error','attendedtransfer','[%s][transfers][attendedtransfer]','origtransfereruniqueid','origtransferercalleridnum','origtransferercalleridname','transfertargetcalleridname','origtransfererchannel','secondtransferercontext','secondtransfererexten','origtransfererlinkedid','origtransferercontext','origtransfererexten','isNil','transfereechannel','assign','transfertargetcalleridnum','transfertargetconnectedlinenum','transfertargetaccountcode','transfertargetcontext','transfertargetexten','transfertargetlinkedid','lodash','util','./utils','info','format'];(function(_0x3eceb2,_0x509ff8){var _0x818bc4=function(_0x2ba2a3){while(--_0x2ba2a3){_0x3eceb2['push'](_0x3eceb2['shift']());}};_0x818bc4(++_0x509ff8);}(_0x0758,0x16c));var _0x8075=function(_0x2150e6,_0x17ddc8){_0x2150e6=_0x2150e6-0x0;var _0x15e62b=_0x0758[_0x2150e6];return _0x15e62b;};'use strict';var _=require(_0x8075('0x0'));var util=require(_0x8075('0x1'));var utils=require(_0x8075('0x2'));function writeDB(_0x4e0e1c){utils[_0x8075('0x3')](util[_0x8075('0x4')](_0x8075('0x5'),_0x4e0e1c[_0x8075('0x6')]===_0x8075('0x7')?_0x4e0e1c['origtransfereruniqueid']:_0x4e0e1c['uniqueid'],_0x4e0e1c['type']));utils[_0x8075('0x8')]('CreateVoiceTransferReport',_0x4e0e1c);}exports['blinds']={};exports[_0x8075('0x9')]=function(_0x402763){try{utils[_0x8075('0xa')](util[_0x8075('0x4')](_0x8075('0xb'),_0x402763[_0x8075('0xc')]),_0x402763);utils['info'](util[_0x8075('0x4')](_0x8075('0xd'),_0x402763[_0x8075('0xc')],_0x402763[_0x8075('0xe')],_0x402763['transferercalleridname'],_0x402763[_0x8075('0xf')],_0x402763[_0x8075('0x10')]));_0x402763[_0x8075('0x6')]=_0x8075('0x11');exports['blinds'][_0x402763[_0x8075('0x12')]]=_0x402763;writeDB(_0x402763);}catch(_0x2c00e6){utils[_0x8075('0x13')](util[_0x8075('0x4')](_0x8075('0xb'),_0x402763[_0x8075('0xc')]),_0x2c00e6);}};exports[_0x8075('0x14')]=function(_0x2208a3){try{utils['debug'](util[_0x8075('0x4')](_0x8075('0x15'),_0x2208a3['origtransfereruniqueid']),_0x2208a3);utils['info'](util[_0x8075('0x4')]('[%s][transfers][attendedtransfer]\x20transferercalleridnum:%s\x20transferercalleridname:%s\x20transfereecalleridnum:%s\x20transfereecalleridname:%s',_0x2208a3[_0x8075('0x16')],_0x2208a3[_0x8075('0x17')],_0x2208a3[_0x8075('0x18')],_0x2208a3['transfertargetcalleridnum'],_0x2208a3[_0x8075('0x19')]));_0x2208a3=_['assign'](_0x2208a3,{'transfererchannel':_0x2208a3[_0x8075('0x1a')],'transferercalleridnum':_0x2208a3[_0x8075('0x17')],'transferercalleridname':_0x2208a3['origtransferercalleridname'],'transfererconnectedlinenum':_0x2208a3['secondtransfererconnectedlinenum'],'transfererconnectedlinename':_0x2208a3['secondtransfererconnectedlinename'],'transfereraccountcode':_0x2208a3['origtransfereraccountcode'],'transferercontext':_0x2208a3[_0x8075('0x1b')],'transfererexten':_0x2208a3[_0x8075('0x1c')],'transfererlinkedid':_0x2208a3[_0x8075('0x1d')],'context':_0x2208a3[_0x8075('0x1e')],'extension':_0x2208a3[_0x8075('0x1f')],'type':_0x8075('0x7')});if(_[_0x8075('0x20')](_0x2208a3[_0x8075('0x21')])){_0x2208a3=_[_0x8075('0x22')](_0x2208a3,{'transfereechannel':_0x2208a3['transfertargetchannel'],'transfereecalleridnum':_0x2208a3[_0x8075('0x23')],'transfereecalleridname':_0x2208a3[_0x8075('0x19')],'transfereeconnectedlinenum':_0x2208a3[_0x8075('0x24')],'transfereeconnectedlinename':_0x2208a3['transfertargetconnectedlinename'],'transfereeaccountcode':_0x2208a3[_0x8075('0x25')],'transfereecontext':_0x2208a3[_0x8075('0x26')],'transfereeexten':_0x2208a3[_0x8075('0x27')],'transfereelinkedid':_0x2208a3[_0x8075('0x28')]});}writeDB(_0x2208a3);}catch(_0x51db10){utils[_0x8075('0x13')](util[_0x8075('0x4')](_0x8075('0x15'),_0x2208a3['origtransfereruniqueid']),_0x51db10);}};
\ No newline at end of file
index f81f349..8abbdaf 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0xac73=['notfound','getUserByName','[utils][getUserByName]\x20name:%s\x20%s','[utils][getUserByName]','getVoiceQueueByName','GetVoiceQueue','type','acw','[utils][getVoiceQueueByName]\x20name:%s\x20%s','[utils][getVoiceQueueByName]','addTime','add','seconds','format','subtractTime','YYYY-MM-DD\x20HH:mm:ss','diffTime','diff','sumTime','now','isAfter','isBefore','bluebird','jayson/promise','moment','util','client','xdr','info','inspect','debug','error','request','then','catch','[utils][request]\x20name:%s','GetUser','internal','name','interface','[utils][getUser]\x20where:%s','result','length','[utils][getUserByInternal]\x20internal:%s\x20%s','found','getUserByInterface'];(function(_0x34c0ac,_0x1cc797){var _0x292649=function(_0x58cc3d){while(--_0x58cc3d){_0x34c0ac['push'](_0x34c0ac['shift']());}};_0x292649(++_0x1cc797);}(_0xac73,0x186));var _0x3ac7=function(_0x418ff4,_0x3c692d){_0x418ff4=_0x418ff4-0x0;var _0x19349f=_0xac73[_0x418ff4];return _0x19349f;};'use strict';var BPromise=require(_0x3ac7('0x0'));var jayson=require(_0x3ac7('0x1'));var moment=require(_0x3ac7('0x2'));var util=require(_0x3ac7('0x3'));var client=jayson[_0x3ac7('0x4')]['http']({'port':0x2329});var logger=require('../../config/logger')(_0x3ac7('0x5'));exports[_0x3ac7('0x6')]=function(_0x43df0b,_0x2864c3){logger['info'](_0x43df0b,_0x2864c3?util[_0x3ac7('0x7')](_0x2864c3,{'showHidden':![],'depth':null}):'');};exports[_0x3ac7('0x8')]=function(_0x3b5308,_0x245025){logger[_0x3ac7('0x8')](_0x3b5308,_0x245025?util['inspect'](_0x245025,{'showHidden':![],'depth':null}):'');};exports[_0x3ac7('0x9')]=function(_0x13a247,_0x455440){logger['error'](_0x13a247,_0x455440?util[_0x3ac7('0x7')](_0x455440,{'showHidden':![],'depth':null}):'');};exports['request']=function(_0x501fda,_0x4e874a){return client[_0x3ac7('0xa')](_0x501fda,{'body':_0x4e874a})[_0x3ac7('0xb')](function(_0x42b68d){logger[_0x3ac7('0x8')]('[utils][request]\x20name:%s',_0x501fda,_0x42b68d?util['inspect'](_0x42b68d,{'showHidden':![],'depth':null}):'');})[_0x3ac7('0xc')](function(_0xb8918){logger[_0x3ac7('0x9')](_0x3ac7('0xd'),_0x501fda,_0xb8918?util[_0x3ac7('0x7')](_0xb8918,{'showHidden':![],'depth':null}):'');});};function getUser(_0x5ee2f9){return client['request'](_0x3ac7('0xe'),{'options':{'raw':!![],'attributes':['id',_0x3ac7('0xf'),_0x3ac7('0x10'),_0x3ac7('0x11')],'where':_0x5ee2f9,'limit':0x1}})['then'](function(_0x4ba932){logger[_0x3ac7('0x8')](_0x3ac7('0x12'),JSON['stringify'](_0x5ee2f9),_0x4ba932?util['inspect'](_0x4ba932,{'showHidden':![],'depth':null}):'');return _0x4ba932[_0x3ac7('0x13')][_0x3ac7('0x14')]?_0x4ba932[_0x3ac7('0x13')][0x0]:null;});}exports['getUserByInternal']=function(_0x5058d1){return new BPromise(function(_0xe52a84,_0x5b1b06){if(_0x5058d1){return getUser({'internal':_0x5058d1})[_0x3ac7('0xb')](function(_0x1589b9){logger[_0x3ac7('0x6')](_0x3ac7('0x15'),_0x5058d1,_0x1589b9?_0x3ac7('0x16'):'notfound');return _0xe52a84(_0x1589b9);})[_0x3ac7('0xc')](function(_0x247a64){logger[_0x3ac7('0x9')]('[utils][getUserByInternal]',_0x247a64?util[_0x3ac7('0x7')](_0x247a64,{'showHidden':![],'depth':null}):'');return _0xe52a84(null);});}return _0xe52a84(null);});};exports[_0x3ac7('0x17')]=function(_0xd1c06f){return new BPromise(function(_0x5a415d,_0x157942){if(_0xd1c06f){return getUser({'interface':_0xd1c06f})['then'](function(_0x539e99){logger['info']('[utils][getUserByInterface]\x20interface:%s\x20%s',_0xd1c06f,_0x539e99?_0x3ac7('0x16'):_0x3ac7('0x18'));return _0x5a415d(_0x539e99);})[_0x3ac7('0xc')](function(_0x175c32){logger[_0x3ac7('0x9')]('[utils][getUserByInterface]',_0x175c32?util[_0x3ac7('0x7')](_0x175c32,{'showHidden':![],'depth':null}):'');return _0x5a415d(null);});}return _0x5a415d(null);});};exports[_0x3ac7('0x19')]=function(_0x4ca838){return new BPromise(function(_0x5afd81,_0x8f78fa){if(_0x4ca838){return getUser({'name':_0x4ca838})[_0x3ac7('0xb')](function(_0x2d5d5a){logger['info'](_0x3ac7('0x1a'),_0x4ca838,_0x2d5d5a?_0x3ac7('0x16'):_0x3ac7('0x18'));return _0x5afd81(_0x2d5d5a);})[_0x3ac7('0xc')](function(_0x543d49){logger[_0x3ac7('0x9')](_0x3ac7('0x1b'),_0x543d49?util[_0x3ac7('0x7')](_0x543d49,{'showHidden':![],'depth':null}):'');return _0x5afd81(null);});}return _0x5afd81(null);});};exports[_0x3ac7('0x1c')]=function(_0xb98169){return new BPromise(function(_0x5bcb33,_0x37ef3b){if(_0xb98169){return client[_0x3ac7('0xa')](_0x3ac7('0x1d'),{'options':{'raw':!![],'attributes':['id',_0x3ac7('0x10'),_0x3ac7('0x1e'),_0x3ac7('0x1f'),'acwTimeout'],'where':{'name':_0xb98169},'limit':0x1}})['then'](function(_0x20fb16){logger[_0x3ac7('0x8')]('[utils][getVoiceQueueByName]\x20name:%s',_0xb98169,_0x20fb16?util[_0x3ac7('0x7')](_0x20fb16,{'showHidden':![],'depth':null}):'');logger['info'](_0x3ac7('0x20'),_0xb98169,_0x20fb16?'found':_0x3ac7('0x18'));return _0x5bcb33(_0x20fb16[_0x3ac7('0x13')][_0x3ac7('0x14')]?_0x20fb16[_0x3ac7('0x13')][0x0]:null);})['catch'](function(_0x15f683){logger[_0x3ac7('0x9')](_0x3ac7('0x21'),_0x15f683?util[_0x3ac7('0x7')](_0x15f683,{'showHidden':![],'depth':null}):'');return _0x5bcb33(null);});}return _0x5bcb33(null);});};exports[_0x3ac7('0x22')]=function(_0x48086f,_0x3bcee3){return moment(_0x48086f)[_0x3ac7('0x23')](_0x3bcee3,_0x3ac7('0x24'))[_0x3ac7('0x25')]('YYYY-MM-DD\x20HH:mm:ss');};exports[_0x3ac7('0x26')]=function(_0x4b4497,_0x4044f1){return moment(_0x4b4497)['subtract'](_0x4044f1,_0x3ac7('0x24'))['format'](_0x3ac7('0x27'));};exports[_0x3ac7('0x28')]=function(_0x2d2a30,_0x49ecae){return moment(_0x2d2a30)[_0x3ac7('0x29')](moment(_0x49ecae),'seconds');};exports[_0x3ac7('0x2a')]=function(_0x1b9bac,_0x5f3c7e){return parseInt(_0x1b9bac,0xa)+parseInt(_0x5f3c7e,0xa);};exports[_0x3ac7('0x2b')]=function(){return moment()[_0x3ac7('0x25')](_0x3ac7('0x27'));};exports[_0x3ac7('0x2c')]=function(_0x4b628d,_0x4c0234){if(_0x4c0234){return moment(_0x4b628d)[_0x3ac7('0x2c')](_0x4c0234);}return!![];};exports[_0x3ac7('0x2d')]=function(_0x474524,_0x9530b3){if(_0x9530b3){return moment(_0x474524)[_0x3ac7('0x2d')](_0x9530b3);}else if(_0x474524){return!![];}return![];};
\ No newline at end of file
index c0647fc..b01a451 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0x5c52=['headers','connection','remoteAddress','url','statusCode','responseTime','role','inspect','%s\x20%s\x20%s\x20%s\x20%sms\x20id=%s\x20name=%s\x20role=%s\x20device=%s','device','agent_id','%s\x20%s\x20%s\x20%s\x20%sms\x20id=%s\x20name=%s\x20role=%s\x20device=%s\x20(id=%s\x20name=%s)','method','agent_name','lodash','express-winston','path','util','fileLogger','./safe-template','safeTemplate','./mask-sensitive-data','maskSensitiveData','join','/var','log','client','name','ensureDir','then','catch','user','no-user','data','error','api','auth','client-side-logger','use','logger','%s\x20%s\x20%s\x20%s\x20%sms\x20id=%s\x20name=%s\x20role=%s','isEmpty','body','\x20body=%s','format','x-forwarded-for'];(function(_0x3413e4,_0x5aee5f){var _0x20a85a=function(_0x2b0209){while(--_0x2b0209){_0x3413e4['push'](_0x3413e4['shift']());}};_0x20a85a(++_0x5aee5f);}(_0x5c52,0x98));var _0x25c5=function(_0x476b9e,_0x183637){_0x476b9e=_0x476b9e-0x0;var _0x4f8532=_0x5c52[_0x476b9e];return _0x4f8532;};var fs=require('fs-extra');var _=require(_0x25c5('0x0'));var ewinston=require(_0x25c5('0x1'));var path=require(_0x25c5('0x2'));var util=require(_0x25c5('0x3'));var fileLogger=require('./loggers')[_0x25c5('0x4')];var safeTemplate=require(_0x25c5('0x5'))[_0x25c5('0x6')];var maskSensitiveData=require(_0x25c5('0x7'))[_0x25c5('0x8')];function ClientSideLogger(){function _0x304973(_0xffed06){var _0x2637ba=path[_0x25c5('0x9')](_0x25c5('0xa'),_0x25c5('0xb'),'xcally');var _0x45876c=path[_0x25c5('0x9')](_0x25c5('0xc'),_0xffed06['role']+'-'+_0xffed06[_0x25c5('0xd')]);return fs[_0x25c5('0xe')](path['join'](_0x2637ba,_0x45876c))[_0x25c5('0xf')](function(){var _0x3b7db0=fileLogger('client',path[_0x25c5('0x9')](_0x2637ba,_0x45876c));return _0x3b7db0;})[_0x25c5('0x10')](function(_0x201b6b){throw _0x201b6b;});}this[_0x25c5('0xb')]=function(_0x2715d1,_0x327e5c,_0x503ccf,_0x3300f1){return _0x304973(_0x2715d1[_0x25c5('0x11')])[_0x25c5('0xf')](function(_0x2d111c){var _0x28ba3e=_0x2d111c[_0x327e5c];return _0x28ba3e;})[_0x25c5('0xf')](function(_0x3b213b){var _0x170002=_0x2715d1[_0x25c5('0x11')]?_0x2715d1[_0x25c5('0x11')]['id']:_0x25c5('0x12');var _0x5df17b=_0x3300f1[_0x25c5('0x13')];var _0x449c84=_0x3300f1['timestamp'];var _0x362895=new Date(Number(_0x449c84));return _0x3b213b(_0x170002,_0x362895,_0x503ccf,_0x5df17b);})[_0x25c5('0x10')](function(_0xe99384){fileLogger('client')[_0x25c5('0x14')](_0xe99384);});};}function setupLoggers(_0x5761c3){return new Promise(function(_0x186189){var _0x2fbe4a=new ClientSideLogger();var _0x4364bd=fileLogger(_0x25c5('0x15'));var _0x3a9f83=fileLogger(_0x25c5('0x16'));_0x5761c3['set'](_0x25c5('0x17'),_0x2fbe4a);_0x5761c3[_0x25c5('0x18')](ewinston[_0x25c5('0x19')]({'winstonInstance':_0x4364bd,'meta':![],'statusLevels':!![],'msg':function(_0x2da17e,_0x454b67){var _0x408df4=_0x25c5('0x1a');if(!_[_0x25c5('0x1b')](_0x2da17e[_0x25c5('0x1c')])){_0x408df4+=_0x25c5('0x1d');var _0x15ca79=_0x2da17e[_0x25c5('0x1c')];maskSensitiveData(_0x15ca79);}return safeTemplate(util[_0x25c5('0x1e')](_0x408df4,_0x2da17e['method'],_0x2da17e['headers'][_0x25c5('0x1f')]?_0x2da17e[_0x25c5('0x20')][_0x25c5('0x1f')]:_0x2da17e[_0x25c5('0x21')][_0x25c5('0x22')]||_0x2da17e['ip'],_0x2da17e[_0x25c5('0x23')],_0x454b67[_0x25c5('0x24')],_0x454b67[_0x25c5('0x25')],_0x2da17e[_0x25c5('0x11')]?_0x2da17e['user']['id']:null,_0x2da17e[_0x25c5('0x11')]?_0x2da17e[_0x25c5('0x11')][_0x25c5('0xd')]:null,_0x2da17e[_0x25c5('0x11')]?_0x2da17e[_0x25c5('0x11')][_0x25c5('0x26')]:null,_0x15ca79?util[_0x25c5('0x27')](_0x15ca79,![],null):''));}}));_0x5761c3[_0x25c5('0x18')](ewinston[_0x25c5('0x19')]({'winstonInstance':_0x3a9f83,'meta':![],'statusLevels':!![],'msg':function(_0x3c8f64,_0x48f3d5){var _0x26e38e=_0x25c5('0x28');if(_0x3c8f64[_0x25c5('0x1c')]&&_0x3c8f64[_0x25c5('0x1c')][_0x25c5('0x29')]&&_0x3c8f64[_0x25c5('0x1c')][_0x25c5('0x2a')]){_0x26e38e=_0x25c5('0x2b');}return util[_0x25c5('0x1e')](_0x26e38e,_0x3c8f64[_0x25c5('0x2c')],_0x3c8f64['headers'][_0x25c5('0x1f')]?_0x3c8f64[_0x25c5('0x20')]['x-forwarded-for']:_0x3c8f64[_0x25c5('0x21')][_0x25c5('0x22')]||_0x3c8f64['ip'],_0x3c8f64[_0x25c5('0x23')],_0x48f3d5[_0x25c5('0x24')],_0x48f3d5[_0x25c5('0x25')],_0x3c8f64[_0x25c5('0x11')]?_0x3c8f64[_0x25c5('0x11')]['id']:null,_0x3c8f64[_0x25c5('0x11')]?_0x3c8f64[_0x25c5('0x11')][_0x25c5('0xd')]:null,_0x3c8f64[_0x25c5('0x11')]?_0x3c8f64[_0x25c5('0x11')][_0x25c5('0x26')]:null,_0x3c8f64[_0x25c5('0x1c')]&&_0x3c8f64[_0x25c5('0x1c')][_0x25c5('0x29')]?_0x3c8f64[_0x25c5('0x1c')]['device']:'other',_0x3c8f64[_0x25c5('0x1c')]&&_0x3c8f64[_0x25c5('0x1c')][_0x25c5('0x2a')]?_0x3c8f64[_0x25c5('0x1c')][_0x25c5('0x2a')]:'',_0x3c8f64['body']&&_0x3c8f64[_0x25c5('0x1c')][_0x25c5('0x2d')]?_0x3c8f64[_0x25c5('0x1c')][_0x25c5('0x2d')]:'');},'ignoreRoute':function(_0x39b113){var _0x319aac=/\/api\/users\/[0-9]+\/(login|logout)/gi;return!_0x319aac['test'](_0x39b113['url']);}}));return _0x186189();});}exports['setupLoggers']=setupLoggers;
\ No newline at end of file
index 568872f..251b5ed 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0x336b=['moment','debugLevel','redBG\x20white','red','bold\x20yellow','white','bold\x20green','bold\x20magenta','bold\x20blue','bold\x20cyan','addColors','/var/log/xcally','join','%s-%s.log','message','replace','{{{','}}}','format','level','toUpperCase','meta','keys','length','stringify','[%s]\x20[%s]\x20%s\x20-\x20%s\x20%s','YYYY-MM-DD\x20HH:mm:ss','Logger','transports','Console','warn','File','%s-%s','error','consoleLogger','fileLogger','path'];(function(_0x1ad9fc,_0x1a2ab7){var _0x2b6085=function(_0x25d203){while(--_0x25d203){_0x1ad9fc['push'](_0x1ad9fc['shift']());}};_0x2b6085(++_0x1a2ab7);}(_0x336b,0x171));var _0xb336=function(_0x473658,_0x990467){_0x473658=_0x473658-0x0;var _0x561d26=_0x336b[_0x473658];return _0x561d26;};'use strict';var path=require(_0xb336('0x0'));var util=require('util');var moment=require(_0xb336('0x1'));var winston=require('winston');var config=require('../config/environment');var debugLevel=config[_0xb336('0x2')]?config['debugLevel']['toLowerCase']():'info';var XC_LOG_LEVELS={'fatal':0x0,'error':0x0,'warn':0x1,'info':0x2,'print':0x2,'success':0x2,'http':0x3,'verbose':0x4,'debug':0x5,'silly':0x6};var XC_LOG_COLORS={'fatal':_0xb336('0x3'),'error':_0xb336('0x4'),'warn':_0xb336('0x5'),'info':_0xb336('0x6'),'print':'bold\x20white','success':_0xb336('0x7'),'http':'gray','verbose':_0xb336('0x8'),'debug':_0xb336('0x9'),'silly':_0xb336('0xa')};winston[_0xb336('0xb')](XC_LOG_COLORS);function getLogFileName(_0x1c8e16,_0x1bf4df,_0xadabd7){var _0x2d81a5=_0x1c8e16||_0xb336('0xc');return path[_0xb336('0xd')](_0x2d81a5,util['format'](_0xb336('0xe'),_0x1bf4df,_0xadabd7));}function formatter(_0x2fc439,_0x58ce92){_0x58ce92['message']=_0x58ce92[_0xb336('0xf')][_0xb336('0x10')](/@@{/g,_0xb336('0x11'))[_0xb336('0x10')](/}@@/g,_0xb336('0x12'))[_0xb336('0x10')](/@{/g,'{{')['replace'](/}@/g,'}}');return util['format']('[%s]\x20[%s]\x20%s\x20-\x20%s',moment()[_0xb336('0x13')]('YYYY-MM-DD\x20HH:mm:ss'),_0x58ce92[_0xb336('0x14')][_0xb336('0x15')](),_0x2fc439,_0x58ce92[_0xb336('0xf')]);}function fileFormat(_0x475990,_0x6cfd21){_0x6cfd21[_0xb336('0xf')]=_0x6cfd21[_0xb336('0xf')]['replace'](/@@{/g,_0xb336('0x11'))[_0xb336('0x10')](/}@@/g,_0xb336('0x12'))[_0xb336('0x10')](/@{/g,'{{')[_0xb336('0x10')](/}@/g,'}}');var _0x53a715=_0x6cfd21[_0xb336('0x16')]&&Object[_0xb336('0x17')](_0x6cfd21[_0xb336('0x16')])[_0xb336('0x18')]?'\x0a\x09'+JSON[_0xb336('0x19')](_0x6cfd21[_0xb336('0x16')]):'';return util[_0xb336('0x13')](_0xb336('0x1a'),moment()[_0xb336('0x13')](_0xb336('0x1b')),_0x6cfd21['level'][_0xb336('0x15')](),_0x475990,_0x6cfd21['message'],_0x53a715);}function consoleLogger(){var _0xd8448=new winston[(_0xb336('0x1c'))]({'levels':XC_LOG_LEVELS,'transports':[new winston[(_0xb336('0x1d'))][(_0xb336('0x1e'))]({'level':_0xb336('0x1f'),'json':![],'formatter':function(_0x15d3cf){return formatter('',_0x15d3cf);}})]});return _0xd8448;}function fileLogger(_0x5e76dc,_0x5164f7){var _0x2de85d=new winston[(_0xb336('0x1c'))]({'levels':XC_LOG_LEVELS,'transports':[new winston['transports'][(_0xb336('0x20'))]({'name':util[_0xb336('0x13')](_0xb336('0x21'),_0x5e76dc,_0xb336('0x22')),'filename':getLogFileName(_0x5164f7,_0x5e76dc,_0xb336('0x22')),'level':_0xb336('0x22'),'json':![],'maxsize':0xa00000,'maxFiles':0xa,'tailable':!![],'formatter':function(_0x4636b7){return fileFormat(_0x5e76dc,_0x4636b7);}}),new winston['transports'][(_0xb336('0x20'))]({'name':util[_0xb336('0x13')]('%s-%s',_0x5e76dc,debugLevel),'filename':getLogFileName(_0x5164f7,_0x5e76dc,debugLevel),'level':debugLevel,'json':![],'maxsize':0xa00000,'maxFiles':0xa,'tailable':!![],'formatter':function(_0x2b5f5f){return fileFormat(_0x5e76dc,_0x2b5f5f);}}),new winston[(_0xb336('0x1d'))][(_0xb336('0x1e'))]({'level':_0xb336('0x1f'),'json':![],'formatter':function(_0x4a6a29){return fileFormat(_0x5e76dc,_0x4a6a29);}})]});return _0x2de85d;}exports[_0xb336('0x23')]=consoleLogger;exports[_0xb336('0x24')]=fileLogger;
\ No newline at end of file
index e496236..46603e9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0x1967=['secret','registry','isPlainObject','isArray','length','isString','replace','@@{','}@@','includes','exports','username','password','newPassword','apiKey','firstName','lastName','street','phone','mobile','fax','clientId','clientSecret','securityToken','code','accessKey','tenantId','channelSecret','accessToken','accessTokenSecret','authToken','consumerKey','calleridname','calleridnum','exten','vidaooApiKey','clientEmail','privateKey','accesskeyid','secretaccesskey','key','user','pass','localstationid','dsn'];(function(_0x4bb66f,_0x3cd682){var _0xf2772f=function(_0x2e3698){while(--_0x2e3698){_0x4bb66f['push'](_0x4bb66f['shift']());}};_0xf2772f(++_0x3cd682);}(_0x1967,0x173));var _0x7196=function(_0x331d93,_0x598ff7){_0x331d93=_0x331d93-0x0;var _0x2d396b=_0x1967[_0x331d93];return _0x2d396b;};var _=require('lodash');var sensitiveFields=[_0x7196('0x0'),_0x7196('0x1'),_0x7196('0x2'),_0x7196('0x3'),_0x7196('0x4'),_0x7196('0x5'),_0x7196('0x6'),_0x7196('0x7'),_0x7196('0x8'),_0x7196('0x9'),'email',_0x7196('0xa'),_0x7196('0xb'),_0x7196('0xc'),_0x7196('0xd'),_0x7196('0xe'),_0x7196('0xf'),'token',_0x7196('0x10'),_0x7196('0x11'),_0x7196('0x12'),_0x7196('0x13'),_0x7196('0x14'),'consumerSecret','membername',_0x7196('0x15'),_0x7196('0x16'),_0x7196('0x17'),_0x7196('0x18'),_0x7196('0x19'),_0x7196('0x1a'),_0x7196('0x1b'),_0x7196('0x1c'),_0x7196('0x1d'),_0x7196('0x1e'),_0x7196('0x1f'),'accountSid',_0x7196('0x20'),_0x7196('0x21'),_0x7196('0x22'),_0x7196('0x23'),'oldPassword'];function maskSensitiveData(_0x31c778){const _0x539414=/(?!^)[\s\S](?!$)/g;if(_[_0x7196('0x24')](_0x31c778)){for(const _0x2590a6 in _0x31c778){if(_[_0x7196('0x25')](_0x31c778[_0x2590a6])){for(let _0x3ed1ad=0x0;_0x3ed1ad<_0x31c778[_0x2590a6][_0x7196('0x26')];_0x3ed1ad++){maskSensitiveData(_0x31c778[_0x2590a6][_0x3ed1ad]);}}else if(_[_0x7196('0x24')](_0x31c778[_0x2590a6])){maskSensitiveData(_0x31c778[_0x2590a6]);}else if(_[_0x7196('0x27')](_0x31c778[_0x2590a6])){_0x31c778[_0x2590a6]=_0x31c778[_0x2590a6][_0x7196('0x28')](/{{{/g,_0x7196('0x29'))[_0x7196('0x28')](/}}}/g,_0x7196('0x2a'))['replace'](/{{/g,'@{')['replace'](/}}/g,'}@');if(_[_0x7196('0x2b')](sensitiveFields,_0x2590a6)){_0x31c778[_0x2590a6]=_0x31c778[_0x2590a6][_0x7196('0x28')](_0x539414,'*');}}}}}module[_0x7196('0x2c')]['maskSensitiveData']=maskSensitiveData;
\ No newline at end of file
index 15a069a..21aa67e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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
+var _0xbaf0=['exports','{\x20{\x20','\x20}\x20}','string','isArray','map','isPlainObject','keys','reduce'];(function(_0x41a740,_0x5569e1){var _0x9a7fb2=function(_0x2e6e35){while(--_0x2e6e35){_0x41a740['push'](_0x41a740['shift']());}};_0x9a7fb2(++_0x5569e1);}(_0xbaf0,0x12a));var _0x0baf=function(_0x19e35c,_0x29cd1e){_0x19e35c=_0x19e35c-0x0;var _0x3e1fe8=_0xbaf0[_0x19e35c];return _0x3e1fe8;};var _=require('lodash');var mustacheLikeBracketsRx=/(\{|\}){2}/gm;function bracketsReplacer(_0x286ac2){return _0x286ac2==='{{'?_0x0baf('0x0'):_0x0baf('0x1');}function safeTemplate(_0x263f79){var _0x1688bc=_0x263f79;if(typeof _0x263f79===_0x0baf('0x2')){_0x1688bc=_0x263f79['replace'](mustacheLikeBracketsRx,bracketsReplacer);}else if(Array[_0x0baf('0x3')](_0x263f79)){_0x1688bc=_0x263f79[_0x0baf('0x4')](function(_0x2d3fa5){return safeTemplate(_0x2d3fa5);});}else if(_[_0x0baf('0x5')](_0x263f79)){_0x1688bc=Object[_0x0baf('0x6')](_0x263f79)[_0x0baf('0x7')](function(_0x1a10b1,_0x2dcaac){_0x1a10b1[_0x2dcaac]=safeTemplate(_0x263f79[_0x2dcaac]);return _0x1a10b1;},{});}return _0x1688bc;}module[_0x0baf('0x8')]['safeTemplate']=safeTemplate;
\ No newline at end of file